diff --git a/sentry-javascript/19013/README.md b/sentry-javascript/19013/README.md new file mode 100644 index 0000000..b056f84 --- /dev/null +++ b/sentry-javascript/19013/README.md @@ -0,0 +1,87 @@ +# Reproduction for sentry-javascript#19013 + +**Issue:** https://github.com/getsentry/sentry-javascript/issues/19013 + +## Description + +When using `@sentry/bun` with Express, incoming HTTP requests don't get properly scoped isolation. Two distinct requests end up sharing the same trace ID instead of each having their own unique trace ID. + +## Prerequisites + +- [Bun](https://bun.sh/) installed (tested with v1.3.4) + +## Steps to Reproduce + +1. Install dependencies: + ```bash + bun install + ``` + +2. (Optional) Set your Sentry DSN: + ```bash + export SENTRY_DSN="your-dsn-here" + ``` + +3. Start the server: + ```bash + bun run start + ``` + +4. In another terminal, run the test script: + ```bash + bun run test + ``` + + Or manually make requests: + ```bash + curl http://localhost:3000/endpoint1 + curl http://localhost:3000/endpoint2 + curl http://localhost:3000/endpoint1 + ``` + +## Expected Behavior + +Each incoming HTTP request should have its own unique trace ID. The automatic instrumentation should capture inbound requests and create new root spans for each request. + +## Actual Behavior + +Multiple distinct web requests are bundled under the same trace ID. The scope isolation is not working correctly, causing requests to share the same trace context. + +Example output showing the bug (server logs): +``` +--- Request: GET /endpoint1 --- +Trace ID: NO TRACE ID +Span ID: NO SPAN ID + +--- Request: GET /endpoint2 --- +Trace ID: NO TRACE ID +Span ID: NO SPAN ID +``` + +Test script output: +``` +=== Results === + +Request 1: endpoint1 -> Trace ID: NO TRACE ID +Request 2: endpoint2 -> Trace ID: NO TRACE ID +Request 3: endpoint1 -> Trace ID: NO TRACE ID +... + +=== Summary === + +Total requests: 6 +Unique trace IDs: 0 + +❌ BUG: No trace IDs were generated at all +``` + +## Environment + +- Bun: 1.3.4 +- @sentry/bun: 10.37.0 +- express: ^4.21.0 +- OS: Any (tested on macOS) + +## Notes + +The issue report mentions that the only workaround is to manually start a new span for each incoming request, but this should be handled automatically by the SDK's instrumentation. diff --git a/sentry-javascript/19013/bun.lock b/sentry-javascript/19013/bun.lock new file mode 100644 index 0000000..1f6811e --- /dev/null +++ b/sentry-javascript/19013/bun.lock @@ -0,0 +1,297 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "sentry-bun-express-repro-19013", + "dependencies": { + "@sentry/bun": "10.37.0", + "express": "^5.2.1", + }, + "devDependencies": { + "@types/express": "^5.0.6", + }, + }, + }, + "packages": { + "@apm-js-collab/code-transformer": ["@apm-js-collab/code-transformer@0.8.2", "", {}, "sha512-YRjJjNq5KFSjDUoqu5pFUWrrsvGOxl6c3bu+uMFc9HNNptZ2rNU/TI2nLw4jnhQNtka972Ee2m3uqbvDQtPeCA=="], + + "@apm-js-collab/tracing-hooks": ["@apm-js-collab/tracing-hooks@0.3.1", "", { "dependencies": { "@apm-js-collab/code-transformer": "^0.8.0", "debug": "^4.4.1", "module-details-from-path": "^1.0.4" } }, "sha512-Vu1CbmPURlN5fTboVuKMoJjbO5qcq9fA5YXpskx3dXe/zTBvjODFoerw+69rVBlRLrJpwPqSDqEuJDEKIrTldw=="], + + "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], + + "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.211.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-swFdZq8MCdmdR22jTVGQDhwqDzcI4M10nhjXkLr1EsIzXgZBqm4ZlmmcWsg3TSNf+3mzgOiqveXmBLZuDi2Lgg=="], + + "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@2.5.0", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-uOXpVX0ZjO7heSVjhheW2XEPrhQAWr2BScDPoZ9UDycl5iuHG+Usyc3AIfG6kZeC1GyLpMInpQ6X5+9n69yOFw=="], + + "@opentelemetry/core": ["@opentelemetry/core@2.5.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ=="], + + "@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.211.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.211.0", "import-in-the-middle": "^2.0.0", "require-in-the-middle": "^8.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-h0nrZEC/zvI994nhg7EgQ8URIHt0uDTwN90r3qQUdZORS455bbx+YebnGeEuFghUT0HlJSrLF4iHw67f+odY+Q=="], + + "@opentelemetry/instrumentation-amqplib": ["@opentelemetry/instrumentation-amqplib@0.58.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.33.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-fjpQtH18J6GxzUZ+cwNhWUpb71u+DzT7rFkg5pLssDGaEber91Y2WNGdpVpwGivfEluMlNMZumzjEqfg8DeKXQ=="], + + "@opentelemetry/instrumentation-connect": ["@opentelemetry/instrumentation-connect@0.54.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.38" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-43RmbhUhqt3uuPnc16cX6NsxEASEtn8z/cYV8Zpt6EP4p2h9s4FNuJ4Q9BbEQ2C0YlCCB/2crO1ruVz/hWt8fA=="], + + "@opentelemetry/instrumentation-dataloader": ["@opentelemetry/instrumentation-dataloader@0.28.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-ExXGBp0sUj8yhm6Znhf9jmuOaGDsYfDES3gswZnKr4MCqoBWQdEFn6EoDdt5u+RdbxQER+t43FoUihEfTSqsjA=="], + + "@opentelemetry/instrumentation-express": ["@opentelemetry/instrumentation-express@0.59.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-pMKV/qnHiW/Q6pmbKkxt0eIhuNEtvJ7sUAyee192HErlr+a1Jx+FZ3WjfmzhQL1geewyGEiPGkmjjAgNY8TgDA=="], + + "@opentelemetry/instrumentation-fs": ["@opentelemetry/instrumentation-fs@0.30.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.211.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-n3Cf8YhG7reaj5dncGlRIU7iT40bxPOjsBEA5Bc1a1g6e9Qvb+JFJ7SEiMlPbUw4PBmxE3h40ltE8LZ3zVt6OA=="], + + "@opentelemetry/instrumentation-generic-pool": ["@opentelemetry/instrumentation-generic-pool@0.54.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-8dXMBzzmEdXfH/wjuRvcJnUFeWzZHUnExkmFJ2uPfa31wmpyBCMxO59yr8f/OXXgSogNgi/uPo9KW9H7LMIZ+g=="], + + "@opentelemetry/instrumentation-graphql": ["@opentelemetry/instrumentation-graphql@0.58.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-+yWVVY7fxOs3j2RixCbvue8vUuJ1inHxN2q1sduqDB0Wnkr4vOzVKRYl/Zy7B31/dcPS72D9lo/kltdOTBM3bQ=="], + + "@opentelemetry/instrumentation-hapi": ["@opentelemetry/instrumentation-hapi@0.57.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Os4THbvls8cTQTVA8ApLfZZztuuqGEeqog0XUnyRW7QVF0d/vOVBEcBCk1pazPFmllXGEdNbbat8e2fYIWdFbw=="], + + "@opentelemetry/instrumentation-http": ["@opentelemetry/instrumentation-http@0.211.0", "", { "dependencies": { "@opentelemetry/core": "2.5.0", "@opentelemetry/instrumentation": "0.211.0", "@opentelemetry/semantic-conventions": "^1.29.0", "forwarded-parse": "2.1.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-n0IaQ6oVll9PP84SjbOCwDjaJasWRHi6BLsbMLiT6tNj7QbVOkuA5sk/EfZczwI0j5uTKl1awQPivO/ldVtsqA=="], + + "@opentelemetry/instrumentation-ioredis": ["@opentelemetry/instrumentation-ioredis@0.59.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/redis-common": "^0.38.2", "@opentelemetry/semantic-conventions": "^1.33.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-875UxzBHWkW+P4Y45SoFM2AR8f8TzBMD8eO7QXGCyFSCUMP5s9vtt/BS8b/r2kqLyaRPK6mLbdnZznK3XzQWvw=="], + + "@opentelemetry/instrumentation-kafkajs": ["@opentelemetry/instrumentation-kafkajs@0.20.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-yJXOuWZROzj7WmYCUiyT27tIfqBrVtl1/TwVbQyWPz7rL0r1Lu7kWjD0PiVeTCIL6CrIZ7M2s8eBxsTAOxbNvw=="], + + "@opentelemetry/instrumentation-knex": ["@opentelemetry/instrumentation-knex@0.55.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.33.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-FtTL5DUx5Ka/8VK6P1VwnlUXPa3nrb7REvm5ddLUIeXXq4tb9pKd+/ThB1xM/IjefkRSN3z8a5t7epYw1JLBJQ=="], + + "@opentelemetry/instrumentation-koa": ["@opentelemetry/instrumentation-koa@0.59.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.36.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0" } }, "sha512-K9o2skADV20Skdu5tG2bogPKiSpXh4KxfLjz6FuqIVvDJNibwSdu5UvyyBzRVp1rQMV6UmoIk6d3PyPtJbaGSg=="], + + "@opentelemetry/instrumentation-lru-memoizer": ["@opentelemetry/instrumentation-lru-memoizer@0.55.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-FDBfT7yDGcspN0Cxbu/k8A0Pp1Jhv/m7BMTzXGpcb8ENl3tDj/51U65R5lWzUH15GaZA15HQ5A5wtafklxYj7g=="], + + "@opentelemetry/instrumentation-mongodb": ["@opentelemetry/instrumentation-mongodb@0.64.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.33.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-pFlCJjweTqVp7B220mCvCld1c1eYKZfQt1p3bxSbcReypKLJTwat+wbL2YZoX9jPi5X2O8tTKFEOahO5ehQGsA=="], + + "@opentelemetry/instrumentation-mongoose": ["@opentelemetry/instrumentation-mongoose@0.57.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.33.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-MthiekrU/BAJc5JZoZeJmo0OTX6ycJMiP6sMOSRTkvz5BrPMYDqaJos0OgsLPL/HpcgHP7eo5pduETuLguOqcg=="], + + "@opentelemetry/instrumentation-mysql": ["@opentelemetry/instrumentation-mysql@0.57.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.33.0", "@types/mysql": "2.15.27" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-HFS/+FcZ6Q7piM7Il7CzQ4VHhJvGMJWjx7EgCkP5AnTntSN5rb5Xi3TkYJHBKeR27A0QqPlGaCITi93fUDs++Q=="], + + "@opentelemetry/instrumentation-mysql2": ["@opentelemetry/instrumentation-mysql2@0.57.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.33.0", "@opentelemetry/sql-common": "^0.41.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-nHSrYAwF7+aV1E1V9yOOP9TchOodb6fjn4gFvdrdQXiRE7cMuffyLLbCZlZd4wsspBzVwOXX8mpURdRserAhNA=="], + + "@opentelemetry/instrumentation-pg": ["@opentelemetry/instrumentation-pg@0.63.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.211.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-dKm/ODNN3GgIQVlbD6ZPxwRc3kleLf95hrRWXM+l8wYo+vSeXtEpQPT53afEf6VFWDVzJK55VGn8KMLtSve/cg=="], + + "@opentelemetry/instrumentation-redis": ["@opentelemetry/instrumentation-redis@0.59.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/redis-common": "^0.38.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-JKv1KDDYA2chJ1PC3pLP+Q9ISMQk6h5ey+99mB57/ARk0vQPGZTTEb4h4/JlcEpy7AYT8HIGv7X6l+br03Neeg=="], + + "@opentelemetry/instrumentation-tedious": ["@opentelemetry/instrumentation-tedious@0.30.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.33.0", "@types/tedious": "^4.0.14" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-bZy9Q8jFdycKQ2pAsyuHYUHNmCxCOGdG6eg1Mn75RvQDccq832sU5OWOBnc12EFUELI6icJkhR7+EQKMBam2GA=="], + + "@opentelemetry/instrumentation-undici": ["@opentelemetry/instrumentation-undici@0.21.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/semantic-conventions": "^1.24.0" }, "peerDependencies": { "@opentelemetry/api": "^1.7.0" } }, "sha512-gok0LPUOTz2FQ1YJMZzaHcOzDFyT64XJ8M9rNkugk923/p6lDGms/cRW1cqgqp6N6qcd6K6YdVHwPEhnx9BWbw=="], + + "@opentelemetry/redis-common": ["@opentelemetry/redis-common@0.38.2", "", {}, "sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA=="], + + "@opentelemetry/resources": ["@opentelemetry/resources@2.5.0", "", { "dependencies": { "@opentelemetry/core": "2.5.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g=="], + + "@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.5.0", "", { "dependencies": { "@opentelemetry/core": "2.5.0", "@opentelemetry/resources": "2.5.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ=="], + + "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.39.0", "", {}, "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg=="], + + "@opentelemetry/sql-common": ["@opentelemetry/sql-common@0.41.2", "", { "dependencies": { "@opentelemetry/core": "^2.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0" } }, "sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ=="], + + "@prisma/instrumentation": ["@prisma/instrumentation@7.2.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.207.0" }, "peerDependencies": { "@opentelemetry/api": "^1.8" } }, "sha512-Rh9Z4x5kEj1OdARd7U18AtVrnL6rmLSI0qYShaB4W7Wx5BKbgzndWF+QnuzMb7GLfVdlT5aYCXoPQVYuYtVu0g=="], + + "@sentry/bun": ["@sentry/bun@10.37.0", "", { "dependencies": { "@sentry/core": "10.37.0", "@sentry/node": "10.37.0" } }, "sha512-BocfTUt4guYAfOJ3NI0kYynwBVd7vo14R4ZL1f2H6kkB23HEzBzpSUL/01lKmROSRPwIxUjgU3ndRKgfUsUaqQ=="], + + "@sentry/core": ["@sentry/core@10.37.0", "", {}, "sha512-hkRz7S4gkKLgPf+p3XgVjVm7tAfvcEPZxeACCC6jmoeKhGkzN44nXwLiqqshJ25RMcSrhfFvJa/FlBg6zupz7g=="], + + "@sentry/node": ["@sentry/node@10.37.0", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^2.5.0", "@opentelemetry/core": "^2.5.0", "@opentelemetry/instrumentation": "^0.211.0", "@opentelemetry/instrumentation-amqplib": "0.58.0", "@opentelemetry/instrumentation-connect": "0.54.0", "@opentelemetry/instrumentation-dataloader": "0.28.0", "@opentelemetry/instrumentation-express": "0.59.0", "@opentelemetry/instrumentation-fs": "0.30.0", "@opentelemetry/instrumentation-generic-pool": "0.54.0", "@opentelemetry/instrumentation-graphql": "0.58.0", "@opentelemetry/instrumentation-hapi": "0.57.0", "@opentelemetry/instrumentation-http": "0.211.0", "@opentelemetry/instrumentation-ioredis": "0.59.0", "@opentelemetry/instrumentation-kafkajs": "0.20.0", "@opentelemetry/instrumentation-knex": "0.55.0", "@opentelemetry/instrumentation-koa": "0.59.0", "@opentelemetry/instrumentation-lru-memoizer": "0.55.0", "@opentelemetry/instrumentation-mongodb": "0.64.0", "@opentelemetry/instrumentation-mongoose": "0.57.0", "@opentelemetry/instrumentation-mysql": "0.57.0", "@opentelemetry/instrumentation-mysql2": "0.57.0", "@opentelemetry/instrumentation-pg": "0.63.0", "@opentelemetry/instrumentation-redis": "0.59.0", "@opentelemetry/instrumentation-tedious": "0.30.0", "@opentelemetry/instrumentation-undici": "0.21.0", "@opentelemetry/resources": "^2.5.0", "@opentelemetry/sdk-trace-base": "^2.5.0", "@opentelemetry/semantic-conventions": "^1.39.0", "@prisma/instrumentation": "7.2.0", "@sentry/core": "10.37.0", "@sentry/node-core": "10.37.0", "@sentry/opentelemetry": "10.37.0", "import-in-the-middle": "^2.0.1", "minimatch": "^9.0.0" } }, "sha512-R0n0McfnPy9D1mGKQXNPG3pfw53QxHBHNbCXGAQJoB1LjUHENM+A645tYBheac4SQjMhbu8i9De9ZyHIQKce/Q=="], + + "@sentry/node-core": ["@sentry/node-core@10.37.0", "", { "dependencies": { "@apm-js-collab/tracing-hooks": "^0.3.1", "@sentry/core": "10.37.0", "@sentry/opentelemetry": "10.37.0", "import-in-the-middle": "^2.0.1" }, "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" } }, "sha512-gQXf9764ZlEZQqqIaysxOrpHu2H867WN/G8EsHgaUJxxZMJ4ZMixinuFef+iQUE3la3/2MPoGx0A8AR7vRH9hA=="], + + "@sentry/opentelemetry": ["@sentry/opentelemetry@10.37.0", "", { "dependencies": { "@sentry/core": "10.37.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-elRAsmgAcaprVFV1JoxxqU9eteBz3g9fpmecfDk5KTe/Txr2OOxdIiLF/4I0g4MMib3DKtr6iGgme2J+l8H8cA=="], + + "@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="], + + "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], + + "@types/express": ["@types/express@5.0.6", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^5.0.0", "@types/serve-static": "^2" } }, "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA=="], + + "@types/express-serve-static-core": ["@types/express-serve-static-core@5.1.1", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A=="], + + "@types/http-errors": ["@types/http-errors@2.0.5", "", {}, "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg=="], + + "@types/mysql": ["@types/mysql@2.15.27", "", { "dependencies": { "@types/node": "*" } }, "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA=="], + + "@types/node": ["@types/node@25.0.10", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg=="], + + "@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/qs": ["@types/qs@6.14.0", "", {}, "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ=="], + + "@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="], + + "@types/send": ["@types/send@1.2.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ=="], + + "@types/serve-static": ["@types/serve-static@2.2.0", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*" } }, "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ=="], + + "@types/tedious": ["@types/tedious@4.0.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw=="], + + "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], + + "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + + "acorn-import-attributes": ["acorn-import-attributes@1.9.5", "", { "peerDependencies": { "acorn": "^8" } }, "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ=="], + + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="], + + "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + + "cjs-module-lexer": ["cjs-module-lexer@2.2.0", "", {}, "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ=="], + + "content-disposition": ["content-disposition@1.0.1", "", {}, "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q=="], + + "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], + + "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + + "cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], + + "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + + "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + + "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], + + "express": ["express@5.2.1", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="], + + "finalhandler": ["finalhandler@2.1.1", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="], + + "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], + + "forwarded-parse": ["forwarded-parse@2.1.2", "", {}, "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw=="], + + "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], + + "iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="], + + "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=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], + + "is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + + "media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="], + + "merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="], + + "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + + "mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], + + "minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "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=="], + + "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], + + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], + + "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], + + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + + "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], + + "path-to-regexp": ["path-to-regexp@8.3.0", "", {}, "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA=="], + + "pg-int8": ["pg-int8@1.0.1", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="], + + "pg-protocol": ["pg-protocol@1.11.0", "", {}, "sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g=="], + + "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=="], + + "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=="], + + "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], + + "qs": ["qs@6.14.1", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ=="], + + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + + "raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="], + + "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=="], + + "router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "send": ["send@1.2.1", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="], + + "serve-static": ["serve-static@2.2.1", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="], + + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], + + "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], + + "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], + + "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], + + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], + + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + + "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + + "type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="], + + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + + "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], + + "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + + "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], + + "@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=="], + + "@prisma/instrumentation/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.207.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-lAb0jQRVyleQQGiuuvCOTDVspc14nx6XJjP4FspJ1sNARo3Regq4ZZbrc3rN4b1TYSuUCvgH+UXUPug4SLOqEQ=="], + } +} diff --git a/sentry-javascript/19013/index.ts b/sentry-javascript/19013/index.ts new file mode 100644 index 0000000..b0c4571 --- /dev/null +++ b/sentry-javascript/19013/index.ts @@ -0,0 +1,72 @@ +import express from "express"; +import * as SentryBun from "@sentry/bun"; + +import { subscribe } from "node:diagnostics_channel"; +import http from "node:http"; + +const app = express(); + +// Middleware to log trace information for each request +app.use((req, res, next) => { + const traceId = SentryBun.getActiveSpan()?.spanContext().traceId; + const spanId = SentryBun.getActiveSpan()?.spanContext().spanId; + + console.log(`\n--- Request: ${req.method} ${req.path} ---`); + console.log(`Trace ID: ${traceId || "NO TRACE ID"}`); + console.log(`Span ID: ${spanId || "NO SPAN ID"}`); + + // Store trace ID in response header for easy verification + if (traceId) { + res.setHeader("X-Trace-Id", traceId); + } + + next(); +}); + +// Simple endpoint 1 +app.get("/endpoint1", (req, res) => { + SentryBun.startSpan( + { + name: "endpoint1", + }, + () => { + const traceId = SentryBun.getActiveSpan()?.spanContext().traceId; + res.json({ + endpoint: "endpoint1", + traceId: traceId || "NO TRACE ID", + message: "This is endpoint 1", + }); + } + ); +}); + +// Simple endpoint 2 +app.get("/endpoint2", (req, res) => { + const traceId = SentryBun.getActiveSpan()?.spanContext().traceId; + res.json({ + endpoint: "endpoint2", + traceId: traceId || "NO TRACE ID", + message: "This is endpoint 2", + }); +}); + +subscribe("http.server.request.start", (message, name) => { + console.warn("http.server.request: ", message, name); +}); + +subscribe("http.client.request.start", (message, name) => { + console.warn("http.client.request: ", message, name); +}); + +const PORT = process.env.PORT || 3001; + +app.use(SentryBun.expressErrorHandler()); + +app.listen(PORT, () => { + console.log(`Server running on http://localhost:${PORT}`); + console.log("\nTest the issue by making multiple requests:"); + console.log(` curl http://localhost:${PORT}/endpoint1`); + console.log(` curl http://localhost:${PORT}/endpoint2`); + console.log("\nExpected: Each request should have a DIFFERENT trace ID"); + console.log("Actual (bug): All requests share the SAME trace ID"); +}); diff --git a/sentry-javascript/19013/instrument.js b/sentry-javascript/19013/instrument.js new file mode 100644 index 0000000..37eb5ee --- /dev/null +++ b/sentry-javascript/19013/instrument.js @@ -0,0 +1,17 @@ +import * as SentryBun from "@sentry/bun"; + +// Initialize Sentry - set SENTRY_DSN environment variable before running +SentryBun.init({ + dsn: process.env.SENTRY_DSN || "", + + tracesSampleRate: 1.0, + + debug: true, // Enable debug to see what's happening + + integrations: [ + SentryBun.httpIntegration({disableIncomingRequestSpans: false}) + ], + +}); + +console.log("✅ Sentry initialized"); \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/.bin/acorn b/sentry-javascript/19013/node_modules/.bin/acorn new file mode 120000 index 0000000..cf76760 --- /dev/null +++ b/sentry-javascript/19013/node_modules/.bin/acorn @@ -0,0 +1 @@ +../acorn/bin/acorn \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/.bin/mime b/sentry-javascript/19013/node_modules/.bin/mime new file mode 120000 index 0000000..fbb7ee0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/.bin/mime @@ -0,0 +1 @@ +../mime/cli.js \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/LICENSE b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/LICENSE new file mode 100644 index 0000000..eaa52b8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025-present Datadog, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/NOTICE b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/NOTICE new file mode 100644 index 0000000..285f69f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/NOTICE @@ -0,0 +1,3 @@ +Orchestrion-JS +Copyright 2025-Present Datadog, Inc. +This product includes software developed at Datadog (). diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/README.md b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/README.md new file mode 100644 index 0000000..e12b95d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/README.md @@ -0,0 +1,184 @@ +# `@apm-js-collab/code-transformer` + +This is a fork of +[`DataDog/orchestrion-js`](https://github.com/DataDog/orchestrion-js/). + +This is a library to aid in instrumenting Node.js libraries at build or load +time. + +It uses SWC's Rust AST walker to inject code that calls Node.js +[`TracingChannel`](https://nodejs.org/api/diagnostics_channel.html#class-tracingchannel). + +You likely don't want to use this library directly; instead, consider using: + +- [`@apm-js-collab/tracing-hooks/`](https://github.com/apm-js-collab/tracing-hooks/) + - ESM and `require` hooks to instrument modules as they are loaded. +- [`apm-js-collab/code-transformer-bundler-plugins`](https://github.com/apm-js-collab/code-transformer-bundler-plugins) + - Bundler plugins for webpack, Vite, Rollup and esbuild to instrument modules + at build time. + +## JavaScript + +`@apm-js-collab/code-transformer` exposes the Rust library as a WebAssembly +module. + +### Building + +To build the JavaScript module: + +- Ensure you have [Rust installed](https://www.rust-lang.org/tools/install) +- Install the wasm toolchain\ + `rustup target add wasm32-unknown-unknown --toolchain stable` +- Install dependencies and build the module\ + `npm install && npm run build` + +### Usage + +```javascript +import * as codeTransformer from "@apm-js-collab/code-transformer"; + +// The full instrumentation config +const instrumentation = { + // The name of the diagnostics channel + channelName: "my-channel", + // Define the module you'd like to inject tracing channels into + module: { + name: "my-module", + versionRange: ">=1.0.0", + filePath: "./dist/index.js", + }, + // Define the function you'd like to instrument + // (e.g., match a method named 'foo' that returns a Promise) + functionQuery: { + methodName: "fetch", + kind: "Async", + }, +}; + +// Create an InstrumentationMatcher with an array of instrumentation configs +const matcher = codeTransformer.create([instrumentation]); + +// Get a transformer for a specific module +const transformer = matcher.getTransformer( + "my-module", + "1.2.3", + "./dist/index.js", +); + +if (transformer === undefined) { + throw new Error("No transformer found for module"); +} + +// Transform code +const inputCode = "async function fetch() { return 42; }"; +const result = transformer.transform(inputCode, "unknown"); +console.log(result.code); + +// Both the matcher and transformer should be freed after use! +matcher.free(); +transformer.free(); +``` + +### API Reference + +```ts +type ModuleType = "esm" | "cjs" | "unknown"; +type FunctionKind = "Sync" | "Async"; +``` + +#### **`FunctionQuery` Variants** + +```ts +type FunctionQuery = + | // Match class constructor + { className: string; index?: number } + | // Match class method + { + className: string; + methodName: string; + kind: FunctionKind; + index?: number; + } + | // Match method on objects + { methodName: string; kind: FunctionKind; index?: number } + | // Match standalone function + { functionName: string; kind: FunctionKind; index?: number } + | // Match arrow function or function expression + { expressionName: string; kind: FunctionKind; index?: number }; +``` + +#### **`ModuleMatcher`** + +```ts +type ModuleMatcher = { + name: string; // Module name + versionRange: string; // Matching semver range + filePath: string; // Path to the file from the module root +}; +``` + +#### **`InstrumentationConfig`** + +```ts +type InstrumentationConfig = { + channelName: string; // Name of the diagnostics channel + module: ModuleMatcher; + functionQuery: FunctionQuery; +}; +``` + +### Functions + +```ts +create(configs: InstrumentationConfig[], dc_module?: string | null): InstrumentationMatcher; +``` + +Create a matcher for one or more instrumentation configurations. + +- `configs` - Array of instrumentation configurations. +- `dc_module` - Optional module to import `diagnostics_channel` API from. + +#### **`InstrumentationMatcher`** + +```ts +getTransformer(module_name: string, version: string, file_path: string): Transformer | undefined; +``` + +Gets a transformer for a specific module and file. + +Returns a `Transformer` for the given module, or `undefined` if there were no +matching instrumentation configurations. + +- `module_name` - Name of the module. +- `version` - Version of the module. +- `file_path` - Path to the file from the module root. + +```ts +free(): void; +``` + +Free the matcher memory when it's no longer needed. + +#### **`Transformer`** + +```ts +transform(code: string, module_type: ModuleType, sourcemap?: string | undefined): TransformOutput; +``` + +Transforms the code, injecting tracing as configured. + +Returns `{ code, map }`. `map` will be undefined if no sourcemap was supplied. + +- `code` - The JavaScript/TypeScript code to transform. +- `module_type` - The type of module being transformed. +- `sourcemap` - Optional existing source map for the code. + +```ts +free(): void; +``` + +Free the transformer memory when it's no longer needed. + +## License + +See LICENSE diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/index.d.ts b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/index.d.ts new file mode 100644 index 0000000..0e7c5bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/index.d.ts @@ -0,0 +1,6 @@ +import type { InstrumentationConfig, InstrumentationMatcher } from './pkg/orchestrion_js'; +/** + * Create a new instrumentation matcher from an array of instrumentation configs. + */ +export declare function create(configs: InstrumentationConfig[], dc_module?: string | null): InstrumentationMatcher; +export type { FunctionKind, FunctionQuery, InstrumentationConfig, InstrumentationMatcher, ModuleMatcher, ModuleType, TransformOutput, Transformer, } from './pkg/orchestrion_js'; diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/index.js b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/index.js new file mode 100644 index 0000000..78879d5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/index.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.create = create; +// ./pkg/orchestrion_js.js has a side effect of loading the wasm binary. +// We only want that if the library is actually used! +var cachedCreate; +/** + * Create a new instrumentation matcher from an array of instrumentation configs. + */ +function create(configs, dc_module) { + if (!cachedCreate) { + cachedCreate = require('./pkg/orchestrion_js.js').create; + } + if (cachedCreate === undefined) { + throw new Error("Failed to load '@apm-js-collab/code-transformer'"); + } + return cachedCreate(configs, dc_module); +} diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/package.json b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/package.json new file mode 100644 index 0000000..9c75cbf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/package.json @@ -0,0 +1,37 @@ +{ + "name": "@apm-js-collab/code-transformer", + "version": "0.8.2", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/apm-js-collab/orchestrion-js.git" + }, + "files": [ + "./pkg/orchestrion_js.js", + "./pkg/orchestrion_js.d.ts", + "./index.js", + "./index.d.ts", + "LICENSE", + "NOTICE" + ], + "main": "./index.js", + "types": "./index.d.ts", + "scripts": { + "build": "wasm-pack build --target nodejs --release -- --features wasm && yarn build:wrapper && yarn build:inline-binary", + "build:wrapper": "tsc index.ts --declaration --module commonjs", + "build:inline-binary": "node inline-binary.js", + "test": "vitest run", + "test:update-snapshots": "vitest -u run", + "test:watch": "vitest" + }, + "devDependencies": { + "@types/node": "^18.0.0", + "source-map": "^0.7.6", + "typescript": "^5.8.3", + "vitest": "^3.2.4", + "wasm-pack": "^0.13.1" + }, + "volta": { + "node": "22.15.0" + } +} diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/pkg/orchestrion_js.d.ts b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/pkg/orchestrion_js.d.ts new file mode 100644 index 0000000..596f498 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/pkg/orchestrion_js.d.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Create a new instrumentation matcher from an array of instrumentation configs. + */ +export function create(configs: InstrumentationConfig[], dc_module?: string | null): InstrumentationMatcher; +/** + * Output of a transformation operation + */ +export interface TransformOutput { + /** + * The transformed JavaScript code + */ + code: string; + /** + * The sourcemap for the transformation (if generated) + */ + map: string | undefined; +} + +/** + * Configuration for injecting instrumentation code + */ +export interface InstrumentationConfig { + /** + * The name of the diagnostics channel to publish to + */ + channelName: string; + /** + * The module matcher to identify the module and file to instrument + */ + module: ModuleMatcher; + /** + * The function query to identify the function to instrument + */ + functionQuery: FunctionQuery; +} + +/** + * Describes the module and file path you would like to match + */ +export interface ModuleMatcher { + /** + * The name of the module you want to match + */ + name: string; + /** + * The semver range that you want to match + */ + versionRange: string; + /** + * The path of the file you want to match from the module root + */ + filePath: string; +} + +/** + * Describes which function to instrument + */ +export type FunctionQuery = { className: string; methodName: string; kind: FunctionKind; index?: number } | { className: string; index?: number } | { methodName: string; kind: FunctionKind; index?: number } | { functionName: string; kind: FunctionKind; index?: number } | { expressionName: string; kind: FunctionKind; index?: number }; + +/** + * The kind of function - Sync or returns a promise + */ +export type FunctionKind = "Sync" | "Async"; + +/** + * The type of module being passed - ESM, CJS or unknown + */ +export type ModuleType = "esm" | "cjs" | "unknown"; + +/** + * The InstrumentationMatcher is responsible for matching specific modules + */ +export class InstrumentationMatcher { + private constructor(); + free(): void; + /** + * Get a transformer for the given module name, version and file path. + * Returns `undefined` if no matching instrumentations are found. + */ + getTransformer(module_name: string, version: string, file_path: string): Transformer | undefined; +} +/** + * The Transformer is responsible for transforming JavaScript code. + */ +export class Transformer { + private constructor(); + free(): void; + /** + * Transform JavaScript code and optionally sourcemap. + * + * # Errors + * Returns an error if the transformation fails to find injection points. + */ + transform(code: string, module_type: ModuleType, sourcemap?: string | null): TransformOutput; +} diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/pkg/orchestrion_js.js b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/pkg/orchestrion_js.js new file mode 100644 index 0000000..d99f42c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/code-transformer/pkg/orchestrion_js.js @@ -0,0 +1,563 @@ + +let imports = {}; +imports['__wbindgen_placeholder__'] = module.exports; +let wasm; +const { TextEncoder, TextDecoder } = require(`util`); + +let WASM_VECTOR_LEN = 0; + +let cachedUint8ArrayMemory0 = null; + +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +let cachedTextEncoder = new TextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +let cachedDataViewMemory0 = null; + +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} + +function addToExternrefTable0(obj) { + const idx = wasm.__externref_table_alloc(); + wasm.__wbindgen_export_4.set(idx, obj); + return idx; +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + const idx = addToExternrefTable0(e); + wasm.__wbindgen_exn_store(idx); + } +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches && builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +function takeFromExternrefTable0(idx) { + const value = wasm.__wbindgen_export_4.get(idx); + wasm.__externref_table_dealloc(idx); + return value; +} + +function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + for (let i = 0; i < array.length; i++) { + const add = addToExternrefTable0(array[i]); + getDataViewMemory0().setUint32(ptr + 4 * i, add, true); + } + WASM_VECTOR_LEN = array.length; + return ptr; +} +/** + * Create a new instrumentation matcher from an array of instrumentation configs. + * @param {InstrumentationConfig[]} configs + * @param {string | null} [dc_module] + * @returns {InstrumentationMatcher} + */ +module.exports.create = function(configs, dc_module) { + const ptr0 = passArrayJsValueToWasm0(configs, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(dc_module) ? 0 : passStringToWasm0(dc_module, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + const ret = wasm.create(ptr0, len0, ptr1, len1); + return InstrumentationMatcher.__wrap(ret); +}; + +const InstrumentationMatcherFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_instrumentationmatcher_free(ptr >>> 0, 1)); +/** + * The InstrumentationMatcher is responsible for matching specific modules + */ +class InstrumentationMatcher { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(InstrumentationMatcher.prototype); + obj.__wbg_ptr = ptr; + InstrumentationMatcherFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + InstrumentationMatcherFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_instrumentationmatcher_free(ptr, 0); + } + /** + * Get a transformer for the given module name, version and file path. + * Returns `undefined` if no matching instrumentations are found. + * @param {string} module_name + * @param {string} version + * @param {string} file_path + * @returns {Transformer | undefined} + */ + getTransformer(module_name, version, file_path) { + const ptr0 = passStringToWasm0(module_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(version, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + const ptr2 = passStringToWasm0(file_path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len2 = WASM_VECTOR_LEN; + const ret = wasm.instrumentationmatcher_getTransformer(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2); + return ret === 0 ? undefined : Transformer.__wrap(ret); + } +} +module.exports.InstrumentationMatcher = InstrumentationMatcher; + +const TransformerFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_transformer_free(ptr >>> 0, 1)); +/** + * The Transformer is responsible for transforming JavaScript code. + */ +class Transformer { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Transformer.prototype); + obj.__wbg_ptr = ptr; + TransformerFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + TransformerFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_transformer_free(ptr, 0); + } + /** + * Transform JavaScript code and optionally sourcemap. + * + * # Errors + * Returns an error if the transformation fails to find injection points. + * @param {string} code + * @param {ModuleType} module_type + * @param {string | null} [sourcemap] + * @returns {TransformOutput} + */ + transform(code, module_type, sourcemap) { + const ptr0 = passStringToWasm0(code, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(sourcemap) ? 0 : passStringToWasm0(sourcemap, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + const ret = wasm.transformer_transform(this.__wbg_ptr, ptr0, len0, module_type, ptr1, len1); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } +} +module.exports.Transformer = Transformer; + +module.exports.__wbg_String_8f0eb39a4a4c2f66 = function(arg0, arg1) { + const ret = String(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); +}; + +module.exports.__wbg_buffer_609cc3eee51ed158 = function(arg0) { + const ret = arg0.buffer; + return ret; +}; + +module.exports.__wbg_call_672a4d21634d4a24 = function() { return handleError(function (arg0, arg1) { + const ret = arg0.call(arg1); + return ret; +}, arguments) }; + +module.exports.__wbg_done_769e5ede4b31c67b = function(arg0) { + const ret = arg0.done; + return ret; +}; + +module.exports.__wbg_entries_3265d4158b33e5dc = function(arg0) { + const ret = Object.entries(arg0); + return ret; +}; + +module.exports.__wbg_get_67b2ba62fc30de12 = function() { return handleError(function (arg0, arg1) { + const ret = Reflect.get(arg0, arg1); + return ret; +}, arguments) }; + +module.exports.__wbg_get_b9b93047fe3cf45b = function(arg0, arg1) { + const ret = arg0[arg1 >>> 0]; + return ret; +}; + +module.exports.__wbg_getwithrefkey_1dc361bd10053bfe = function(arg0, arg1) { + const ret = arg0[arg1]; + return ret; +}; + +module.exports.__wbg_instanceof_ArrayBuffer_e14585432e3737fc = function(arg0) { + let result; + try { + result = arg0 instanceof ArrayBuffer; + } catch (_) { + result = false; + } + const ret = result; + return ret; +}; + +module.exports.__wbg_instanceof_Map_f3469ce2244d2430 = function(arg0) { + let result; + try { + result = arg0 instanceof Map; + } catch (_) { + result = false; + } + const ret = result; + return ret; +}; + +module.exports.__wbg_instanceof_Uint8Array_17156bcf118086a9 = function(arg0) { + let result; + try { + result = arg0 instanceof Uint8Array; + } catch (_) { + result = false; + } + const ret = result; + return ret; +}; + +module.exports.__wbg_isArray_a1eab7e0d067391b = function(arg0) { + const ret = Array.isArray(arg0); + return ret; +}; + +module.exports.__wbg_isSafeInteger_343e2beeeece1bb0 = function(arg0) { + const ret = Number.isSafeInteger(arg0); + return ret; +}; + +module.exports.__wbg_iterator_9a24c88df860dc65 = function() { + const ret = Symbol.iterator; + return ret; +}; + +module.exports.__wbg_length_a446193dc22c12f8 = function(arg0) { + const ret = arg0.length; + return ret; +}; + +module.exports.__wbg_length_e2d2a49132c1b256 = function(arg0) { + const ret = arg0.length; + return ret; +}; + +module.exports.__wbg_new_405e22f390576ce2 = function() { + const ret = new Object(); + return ret; +}; + +module.exports.__wbg_new_a12002a7f91c75be = function(arg0) { + const ret = new Uint8Array(arg0); + return ret; +}; + +module.exports.__wbg_next_25feadfc0913fea9 = function(arg0) { + const ret = arg0.next; + return ret; +}; + +module.exports.__wbg_next_6574e1a8a62d1055 = function() { return handleError(function (arg0) { + const ret = arg0.next(); + return ret; +}, arguments) }; + +module.exports.__wbg_set_3f1d0b984ed272ed = function(arg0, arg1, arg2) { + arg0[arg1] = arg2; +}; + +module.exports.__wbg_set_65595bdd868b3009 = function(arg0, arg1, arg2) { + arg0.set(arg1, arg2 >>> 0); +}; + +module.exports.__wbg_value_cd1ffa7b1ab794f1 = function(arg0) { + const ret = arg0.value; + return ret; +}; + +module.exports.__wbindgen_bigint_from_i64 = function(arg0) { + const ret = arg0; + return ret; +}; + +module.exports.__wbindgen_bigint_from_u64 = function(arg0) { + const ret = BigInt.asUintN(64, arg0); + return ret; +}; + +module.exports.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) { + const v = arg1; + const ret = typeof(v) === 'bigint' ? v : undefined; + getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); +}; + +module.exports.__wbindgen_boolean_get = function(arg0) { + const v = arg0; + const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2; + return ret; +}; + +module.exports.__wbindgen_debug_string = function(arg0, arg1) { + const ret = debugString(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); +}; + +module.exports.__wbindgen_error_new = function(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return ret; +}; + +module.exports.__wbindgen_in = function(arg0, arg1) { + const ret = arg0 in arg1; + return ret; +}; + +module.exports.__wbindgen_init_externref_table = function() { + const table = wasm.__wbindgen_export_4; + const offset = table.grow(4); + table.set(0, undefined); + table.set(offset + 0, undefined); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); + ; +}; + +module.exports.__wbindgen_is_bigint = function(arg0) { + const ret = typeof(arg0) === 'bigint'; + return ret; +}; + +module.exports.__wbindgen_is_function = function(arg0) { + const ret = typeof(arg0) === 'function'; + return ret; +}; + +module.exports.__wbindgen_is_object = function(arg0) { + const val = arg0; + const ret = typeof(val) === 'object' && val !== null; + return ret; +}; + +module.exports.__wbindgen_is_string = function(arg0) { + const ret = typeof(arg0) === 'string'; + return ret; +}; + +module.exports.__wbindgen_is_undefined = function(arg0) { + const ret = arg0 === undefined; + return ret; +}; + +module.exports.__wbindgen_jsval_eq = function(arg0, arg1) { + const ret = arg0 === arg1; + return ret; +}; + +module.exports.__wbindgen_jsval_loose_eq = function(arg0, arg1) { + const ret = arg0 == arg1; + return ret; +}; + +module.exports.__wbindgen_memory = function() { + const ret = wasm.memory; + return ret; +}; + +module.exports.__wbindgen_number_get = function(arg0, arg1) { + const obj = arg1; + const ret = typeof(obj) === 'number' ? obj : undefined; + getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); +}; + +module.exports.__wbindgen_string_get = function(arg0, arg1) { + const obj = arg1; + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); +}; + +module.exports.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return ret; +}; + +module.exports.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); +}; + +const bytes = Buffer.from('AGFzbQEAAAABuwRHYAJ/fwBgAn9/AX9gAX8AYAN/f38AYAV/f39/fwBgA39/fwF/YAF/AX9gBH9/f38AYAZ/f39/f38AYAABfmAAAX9gB39/f39/f38AYAR/f39/AX9gBX9/f39/AX9gAW8Bf2ADf39/AX5gAn9/AX5gAABgA39+fgBgA39+fgF/YAZ/f39/f38Bf2AHf39/f39/fwF/YAFvAW9gBX9/f35/AGACf28AYAJvbwF/YAJvbwFvYAABb2AEf39/fgBgAn9+AGABfgFvYAJ/fwFvYAR/fH9/AX9gA35/fwF/YAN/f34AYAJ+fwBgAn9+AX9gAn9/AXxgAAN/f39gA29vbwBgAm9/AW9gA29vfwBgAnx/AX9gDn9/f39/f39/f39/f39/AX9gDX9/f39/f39/f39/f38AYAh/f39/f39/fwF/YAh/f39/f39/fwBgCX9/f39/f35+fgBgAXwBfGAFf39/f34AYAZ+f39/f38BfmADf35/AX9gF39/f39/f39/f39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38Bf2APf39/f39/f39/f39/f39/AX9gC39/f39/f39/f39/AX9gCX9/f39/f39/fwBgBH9/f3wAYAR/fn5+AGAEf35+fwBgBn9/f29/fwN/f39gA39/fABgBX9/fn9/AGAEf35/fwBgBX9/fX9/AGAEf31/fwBgBX9/fH9/AGAEf3x/fwBgAX8BfmAEf39+fgBgA3x8fAF8AqASKxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18XX193YmluZGdlbl9pc191bmRlZmluZWQADhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18NX193YmluZGdlbl9pbgAZGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxZfX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0AA4YX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFF9fd2JpbmRnZW5faXNfYmlnaW50AA4YX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFV9fd2JpbmRnZW5fbnVtYmVyX2dldAAYGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diaW5kZ2VuX2JpZ2ludF9mcm9tX2k2NAAeGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxNfX3diaW5kZ2VuX2pzdmFsX2VxABkYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFV9fd2JpbmRnZW5fc3RyaW5nX2dldAAYGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX29iamVjdAAOGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diaW5kZ2VuX2JpZ2ludF9mcm9tX3U2NAAeGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX3N0cmluZwAOGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2Vycm9yX25ldwAfGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxlfX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxABkYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX1N0cmluZ184ZjBlYjM5YTRhNGMyZjY2ABgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFV9fd2JpbmRnZW5fc3RyaW5nX25ldwAfGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyRfX3diZ19nZXR3aXRocmVma2V5XzFkYzM2MWJkMTAwNTNiZmUAGhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193Ymdfc2V0XzNmMWQwYjk4NGVkMjcyZWQAJxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfZ2V0X2I5YjkzMDQ3ZmUzY2Y0NWIAKBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18dX193YmdfbGVuZ3RoX2UyZDJhNDkxMzJjMWIyNTYADhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18WX193YmluZGdlbl9pc19mdW5jdGlvbgAOGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diZ19uZXh0XzI1ZmVhZGZjMDkxM2ZlYTkAFhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfbmV4dF82NTc0ZTFhOGE2MmQxMDU1ABYYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX2RvbmVfNzY5ZTVlZGU0YjMxYzY3YgAOGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxxfX3diZ192YWx1ZV9jZDFmZmE3YjFhYjc5NGYxABYYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19fd2JnX2l0ZXJhdG9yXzlhMjRjODhkZjg2MGRjNjUAGxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfZ2V0XzY3YjJiYTYyZmMzMGRlMTIAGhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfY2FsbF82NzJhNGQyMTYzNGQ0YTI0ABoYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld180MDVlMjJmMzkwNTc2Y2UyABsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JnX2lzQXJyYXlfYTFlYWI3ZTBkMDY3MzkxYgAOGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2UxNDU4NTQzMmUzNzM3ZmMADhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18lX193YmdfaW5zdGFuY2VvZl9NYXBfZjM0NjljZTIyNDRkMjQzMAAOGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyRfX3diZ19pc1NhZmVJbnRlZ2VyXzM0M2UyYmVlZWVjZTFiYjAADhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193YmdfZW50cmllc18zMjY1ZDQxNThiMzNlNWRjABYYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2J1ZmZlcl82MDljYzNlZWU1MWVkMTU4ABYYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld19hMTIwMDJhN2Y5MWM3NWJlABYYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX3NldF82NTU5NWJkZDg2OGIzMDA5ACkYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2xlbmd0aF9hNDQ2MTkzZGMyMmMxMmY4AA4YX193YmluZGdlbl9wbGFjZWhvbGRlcl9fLF9fd2JnX2luc3RhbmNlb2ZfVWludDhBcnJheV8xNzE1NmJjZjExODA4NmE5AA4YX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHF9fd2JpbmRnZW5fYmlnaW50X2dldF9hc19pNjQAGBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18XX193YmluZGdlbl9kZWJ1Z19zdHJpbmcAGBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18QX193YmluZGdlbl90aHJvdwAAGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxFfX3diaW5kZ2VuX21lbW9yeQAbGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlABEDiiCIIAcIAAgDAAMIAAQDBAcADAQIAAYIAwAHAAgAAwEDAwcAAAMAAAMAABQDCAEAAwMDAAEAFAQDAQAHAAAHFAMCBwAqAwcEAQECAAAHAAcGAQAHBAADCwMEAwAIAAQLABUECAMCCAADBwIABwIHAAMHBgECAwACAAMDAwMDAwAAAAICAgcGDQMDAgcHAgEAAwQBBQADAAACAgYGAwILCwADAggICAgACwQCKwEHAwIDAAMHAwAABQUFBwAABwMDAgMAAAQCBAICAxUCAwQDAQADAwQFAwEABwEDBwMHAAADBwAAAwAABwcAAgIFBwMIAAUABgAHAyADAwcCAwQDAwMDAgYCLAUFBQAACAALCwADAwUFAwMDAwcMBQUFDAMBBgMCAAAAAwMCAgAAAAAGAwIBAQUFBwMHFAMHBwMHBhAAAwMHAAAFAgMACAMBDAMFACADAwACBwEDAwEAAQECAwIHAQAFAgYCAAIDAAAHAAELAAMACAAICAgICAgDBAgCAgcAAgAHAAgEAgICAgICAgICAgICBwMCBQMIAAIABwUBAAMDBAUABQMABQEDAwADBQAFAAAAAQgDAgcFAwIBAAMHAgMHCAMAAAIIAwEALQMDCAMAAAADAAAAAwMAAwYAARQACwAGCAMAABAHAxAAAAAFBQsLCwsLCAsHDwgABwMBAgACFwMuAgICAgICAgICAgIIBxcAAQMDAAAHAAAAAAAAAAAABwcHAAMGEgUGAAMDBwcDBgQAAAIGBgYAAAMXAy8ABwMDAAYAAQsAAAAAAAADAwsAAwADAwMAAAECAwIHAQsAAwMCBwADAAADBwMDBwEBBwcDAAAACwADARchAgMAAAAABAEBCwQFAAcNAgAcCAsBFQAACAMAAAIBBgYAFAYAAAMDBwMIAwAHAwYDAgACCwgLMAADAwgDBwADAw0DAQABAQAAAAMBAwMDAwUFFQADAAADAQIGAwMBAAAAAQcCBQUiAwYDCAADBAQCMQECAAABAAgDAwMCAgADCwcBAQwEAAcAAgcABgADAgEDAwcABwcHAgEADQwDAwACBAEDAwcCAAICAAAAFQgACAYHAwEBAQEABgEBAQEBAwABAQEBAAEBAQcDATIBBQEBAQEiAQQBAQENAwMABQcICAMFAAMDAwMBAAYHBwcBAQAIAQIAAwEAFwMBCAcMAAMDAAAABgICMwcBBwcAAAAAAAMAAQYXAQMAAAgAAAoIAQAGAgMHBgsMBAAAAQAAAQMAFQcHAQMAAwMHAAAIBwcIBw0AAQEFBAAIAwQEAQEBAQEBAwIGBwMNBwIDAAcHBwcAAgACAgEBBQMIAwMAAAAGAwQBAwYDAAADBAAIBAEFBQIBAgICDQ0DAwcCBwIAAwADHAAcAQMCBwIGAwEDAAADBQQHAwYCAAAAAAAAAAAABAAAAQEBAAAMBQgAAAMGAwcCBAIABgMBAQAHHQAICAAGAAQGAwIDAAcDAAMFAAMAAAAHBQAANAMDAwMFAQMDAAcHBwINDQYEAwMEAgIAAAADAAMEAwEBAQEIAwYjACM1AwACBQAGAgAIAAAABgEDAgIFAQMCAAAAAAEBAQEBAgIGAyQDAwIGAgcFAwIBAQIDAAwMNgEAAAIBAAQKAAwCAwIAAAEABAMBAgYBAwEKAAcCAwUAAAUHAgQDAAYGNwgGAAEBBwACAAAAAAcAAAAAAAAABgIABwIABwUCAQEAAwAAAgcCCAcAAAADAAAGAAEBAQYCBQEBAgACBQMBBgM4FQAAAwcBBgECAwMCAgICAgIAAgAAAAIAAQEBAggBAgMCAQECAAIFAAUCBwYGAgADAAAAAwMABwcAAwYHAAcRAQMHBgEDAQEBAgEAAAMCEgACBAAIAAADAgICBgIFAAACBAcBAwMDDQACAgINAwACBQYECQAGAAMBAAAAAAEMBAADAAAAAAAAAAADAgIEBQUCAAMDAAAAAwEAAAAABgICAAEADwIABgMHAQMABQgFIQAGAgACAAAAAAYCAgIDAAEDAwIBBwcIAgICAAEBAQEBAwEBAQYABgIAAgEFBQEBAAAHAgAAAAgABwIGAAACAAAABwc5AAAAAAABAQEBAAIGAQEAAAA6AgEBAwMDAwMDAwECAQEBAQIEAAUAAgoCAwQCAwICAAAMBAIEAAACAAYAAAMGAAIDAwEBDBICAgIDAAEAAAABAAIHBgQDAgUFAQICAgYBAQYGAQEBBwMDABISAgEBAAESAgAAAwIAAwABAAMBAQcAAwIAAAABAAEBBQADBhMAAgMCCAAAAAAAAgUAAAgBBQABAQUFAQIBAQEBAQEBBQEFAQEBAgAGAgECAR0ABQUAAQIDAwIDAwMGAwEBAAEABQUFBQEBAQEBAQEBAQEBAQEBAQEBAwEDAAEBAwIDBwAFBQACAgICAgMBCgYBAQAEAQACExMDAQIAAgEBAQEBAQEBAQEBAQICAgIFBQUHAAI7AAAGAAACAAAAABMDAAEDBg8PAgYHAgEAAQMTAQEBAQEEAAICAgIBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgUAAAgIAQUAAQEBAgABAQQEBAQEAAEBAgcCAgICAgADAwIBAQADBwADBwcHBwICAQEBAQEBAQABAQABAQAAAwADAAICAgICAgICAgICBgICAgICBQIBAQIMAAEAAwMDAAAAAAACAgICAgICAgECAgICAgICAgIBAgADAQEBAQEHAAICAQIAAQEBBgICAgICAQEAAQEEBAABBwIBAAMDBgACBQUFBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAQAAAQYAAQEDAQAAAg8AAwMDAwUCAgMDAgMAAgEBAQEBAQECAQABAQYBAQEBAQEIAQEBAgcBAQEBAAAAAgICAgEGAQEBAQEBAQEBAQACAQIBAgEBBgMBAQIDAwIDAAcCEAUCAgIFAAIBAQEAAQEBAQEBAQEBAQEBAQEAAwEBAQEBAQABAQEBBgECAQEBAQABAwoHAgADAQEBAQEBAQEBAQEBAQEBAQEBAgEBAgARBQAKAQcHAAEBAQEBAgICAgEFAAIBAAAAAAICAgMDAgECAQEAAAAHAAAAAAEBAAAAAAICAAEBAQEBAAAAAAAAAQEBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgACAQAAAAEBAQEAAQAAAAECAAECAQABAQUAAwYAAgQAAgIEBwcHAgICAgICBgICAgICAAYEAgQCAgIEAwMEAAIBAgECAQEBBgYBAQ8BAQEBAQEBAQEBAQIIAQEABwEBAQEBAQEBAQADAQEGAwMDAwMDAwMDAwMCAgICAgICAgICBgYDAAADAwMDBAICAgMCAgICAgICBQUCAgICAgIFBgICAgYIAgMBAQIHAQoFAAACAgICAAMAAAMGAgECAgICDAEBBgYBAgIAAgAADAICAAEDAAEGAwAAAAAAAAAAAAAAAgEQAgEGAQEBAAYAAQEBAgICAAIAAgEBAgEBAQECAQEBAQEBAgICAgICAQEBAQECAgMBBgEBAQICBgECDQEAAQICAgICAgUBAgICAgICAgICAgICAgICAgICAgICAgECAgIBAgEBAgEAAgICAgYCAgEBAQEHAQECAQEBAQcBAQcDAwEBBwMCAQwMARAABwEEAAECAQACAgICAgICAwICAgICAgICAgICAgICAgICAQICAQEBAQEBAQEBAQEBAQEBAgIBAgIGAgECERECBQUDAwwRAhECAjwBAgEDAgICAgMCAgICAgICAgICAgECAQICAgEBAgEGAQEBAQEBAgIBAQECAQEBAQEBAQEBAQEBAwEBAQEBAQEBAQEBAAEBAQIAAgACAgICAA8CAgICAgICAgICAgICAgIBAgADAAIAAgYGAgYCAgICAgICAgIAAgICBQUFAQoHAQECAwICBQUFAgICAgICBAIBAQEAAAIGAQEBBAIDAAUCAAICAgICAgICAgICAgICAgICAgICAgICAgIBAgMDAwUAAAAAAAwCBwAAAAACAgICAgICAgICAgICAgIGAgICAwEABgIAAwMHAwEDAgYBAwIAAAICAgICAgICAgICAAYCAgIFAgICAgICAQEGAwYCBggAAQIABwA9FAAAAQEBAQICAQECAQIBAQIAAQEGAQEAAAo+BEANQgYKDAoDAgIAAQICAQICBgIKAgoKAA8CAgICAQMKCgoKCgoKCgoKCgoBAQIGDw8BCgoBAQEKAQYKCgwCEhIARAIBAgcAAgAAAAICAgICAgICAgICAgICAgACAgICAgECAgABAAITEwABAQIFCgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgoCAwMCAgICAQ8CAgIEA0UHAQYAAgYCAgABAQIBBgYGAQIDAgICAgMDAgICAQICAgIBAgYGBhACAgIGAQEAAAICDAYAAgYC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KAKQAyEIIAYoAowDBSAFCyAIIAIgBCAMIAQQLCAGKAKMAyEFIAYoApADIgNFDQIgBSADQQJ0IgdqQQRrIghFDQIgCCgCAA0CIAVBBGshESADQf////8DcSEIAkADQCAHRQRAQQAhBwwCCyAIQQFrIQggByARaiAHQQRrIQcoAgBFDQALIAhBAWoiByADSw0DCyAGIAc2ApADIAchAwwCCyAEIAFB7O3lABClHQALIAMgAUH87eUAEKUdAAsCQAJAAkACQCAGKAKIA0ECdiADSwRAIAZBEGogBkGIA2ogA0EEQQQQ5QggBigCECIDQYGAgIB4Rw0BIAYoAowDIQUgBigCkAMhAwsgACABIAUgAxCvCCALIA0gBigCjAMgBigCkAMQrwggBkHYA2oiASAPIA4gAiAEENABIAYtANgDIQAgBkGgA2ogBkHkA2oiAigCADYCACAGIAYpAtwDNwOYAyABIBAgCiAMIAQQ0AEgBi0A2AMhASAGQdADaiACKAIANgIAIAYgBikC3AM3A8gDIABBAUYNAwJAAkACQCABQQFrDgIGAAELIAANAQwECyAADQMLQQAhByAGQQA2ApADIAkEQCAGQYgDaiAJENMLIAYoApADIQcLIAYoAowDIAcgBigCnAMgBigCoAMgBigCzAMgBigC0AMQLCAGKAKMAyEIIAYoApADIgJFDQEgCCACQQJ0IgdqQQRrIgBFDQEgACgCAA0BIAhBBGshACACQf////8DcSEEAkADQCAHRQRAQQAhBwwCCyAEQQFrIQQgACAHaiAHQQRrIQcoAgBFDQALIARBAWoiByACSw0CCyAGIAc2ApADIAchAgwBCyADIAYoAhRB7O/lABC0GgALAkAgBigCiANBAnYgAksEQCAGQQhqIAZBiANqIAJBBEEEEOUIIAYoAggiAEGBgICAeEcNASAGKAKMAyEIIAYoApADIQILIAsgDSAIIAIQ1gYMAgsgACAGKAIMQezv5QAQtBoACyALIA0gBigCnAMgBigCoAMgBigCzAMgBigC0AMQLAsgBkHIA2pBBEEEEPIMIAZBmANqQQRBBBDyDCAGQYgDakEEQQQQ8gwMBwsgAg0BDAILIAINAQtBAiEEQQAhBwwBC0EAIQdBACEECwJAAkAgBigCgAEiAgRAIAYoArABIgMNAQsgBkHQA2pB9O7lACgCADYC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IREQoRkhBiACQfADaiIHIAMoAggQQCAGIAdB+AD8CgAAIAQgBjYCCCAEIBE3AgALIAIgFDcD8AMgAiACKAKAAzYC+AMgAikChAMhEQwCCyABKQMgIRQgAkGAA2ogAUEoahCbAiABLQA0IQUgASgCOCIDBEAQoBkhBCADKQIAIREQoRkhBiACQfADaiIHIAMoAggQQCAGIAdB+AD8CgAAIAQgBjYCCCAEIBE3AgALIAIgFDcD8AMgAiACKAKAAzYC+AMgAikChAMhEQwBCyACIAEpAyAiFDcD8AMLIAIpAvQDIRIgFKchA0EBDCILAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIgQQFrDgoBAgMEBQYHCAkKAAsgAkHwA2ogAUEoahCNByACQe4DaiACQf8Dai0AADoAACACQeADaiACQYwEaikCADcDACACQegDaiACQZQEaigCADYCACACIAIvAP0DOwHsAyACIAIpAoQENwPYAyACNQLwA0IghiESIAItAPwDIQUgAikC9AMhESACKAKABCEEQQAMKwsgAkHwA2ogAUEoahDFBCACQe4DaiACQf8Dai0AADoAACACQeADaiACQYwEaikCADcDACACQegDaiACQZQEaigCADYCACACIAIvAP0DOwHsAyACIAIpAoQENwPYAyACNQLwA0IghiESIAItAPwDIQUgAikC9AMhESACKAKABCEEQQEhAwwpCyACQfADaiEGIwBBgAFrIgQkACABQShqIgMpAwghFCADKQMAIRUCQAJAAn4gAygCEEEBRgRAIAMpAhQhERCpGSEFIARBKGoiByADKAIcEC0gBSAHQdgA/AoAACARpyEDQQEhCSARQiCIDAELIAMpAxghEiADKQMgIhFCA4NQBEAgBCARpyIDNgIgIAQgAygCEDYCJCAEQRhqIARBIGoiBRChHiAEKAIYIgMgAygCACIDQQFqNgIAIANBAEgNAiAEQRBqIAUQoR4gBCAEKQMQNwIoIARBCGogBEEoahChHgsgEkIgiKchBSASQv////8PgwshEiAGIBE3AyAgBiADNgIUIAYgCTYCECAGIBQ3AwggBiAVNwMAIAYgBa1CIIYgEoQ3AxggBEGAAWokAAwBCwALQQIhAyACQe4DaiACQf8Dai0AADoAACACQeADaiACQYwEaikCADcDACACQegDaiAC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NgIsIABBCzYCACAAQShqIAJBlAJqKAIANgIADB4LIAEoAgwhBCABKQIEIREQqRkhAyACQfADaiIFIAEoAhAQLSADIAVB2AD8CgAAAkAgASgCFEGAgICAeEcEQCACQZgCaiABQRRqEJ4IDAELIAJBgICAgHg2ApgCCwJAIAEoAiAiBUUEQEEAIQEMAQsQhRkhASAFKQIAIRIgAkH4A2oiCCAFQQhqQay4yAAQ+QggASASNwIAIAFBCGogCCkDADcCACABQRBqIAJBgARqKAIANgIACyAAIAM2AhAgACAENgIMIAAgETcCBCAAIAIpApgCNwIUIAAgATYCICAAQQw2AgAgAEEcaiACQaACaigCADYCAAwdCyABKQIEIREgAkH4A2oiAyABQQxqEPoIIAAgETcCBCAAQQ02AgAgAEEMaiADKQMANwIAIABBFGogAkGABGooAgA2AgAMHAsgASgCECEDIAEpAwghEiABKQMYIhFCA4NQBEAgAiARpyIFNgKAAyACIAUoAhA2AoQDIAJBQGsgAkGAA2oiBRChHiACKAJAIgQgBCgCACIEQQFqNgIAIARBAEgNGCACQThqIAUQoR4gAiACKQM4NwLwAyACQTBqIAJB8ANqEKEeCyAAIBE3AxggACADNgIQIAAgEjcDCCAAIAIoAPADNgAhIABBDjYCACAAIAEtACA6ACAgAEEkaiACQfMDaigAADYAAAwbCwJAAkACQAJAAkACQAJAAkAgASgCCCIFQQFrDgYBAgMEBQYACyACQfgDaiABQRBqEKYHDAYLIAIgAS0AFDoA/AMgAiABKQIMNwL0AwwFCyACIAEpAgw3AvQDDAQLIAErAxghFiABKQMQIRIgASkDICIRUCARQgODQgBSckUEQCACIBGnIgE2AoADIAIgASgCEDYChAMgAkHYAGogAkGAA2oiARChHiACKAJYIgMgAygCACIDQQFqNgIAIANBAEgNGyACQdAAaiABEKEeIAIgAikDUDcC8AMgAkHIAGogAkHwA2oQoR4LIAIgETcDiAQgAiAWOQOABCACIBI3A/gDDAMLIAEpAxAhEhCmGSEDIAEoAhgiBC0ADCEIIAJB8ANqIgYgBBCJDCADIAIpAvADNwIAIAIgCDoA/AMgA0EIaiACQfgDaikCADcCACABKQMgIhFQIBFCA4NCAFJyRQRAIAIgEaci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IAcgB0H0AGo2AmQgByAHQdQAajYChAEgByAHQYwBajYCfCAHIAdB2ABqNgJ0IAdB3ABqQYSeyQAQ6BcAC0HclskAEKkdAAsgAyAGQaSeyQAQjA4ACyAIIAlByJjJABCMDgALIAggCUHomMkAEIwOAAsgDyAGQbSeyQAQjA4ACyADIAZB8JPJABCMDgALIAMgDUHslskAEKodAAsgAyAGQZSeyQAQjA4ACyADIA1BnJbJABCMDgALzEICEX8EfiMAQYADayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAIAQQFrDgsAGQECFgMEBQYHGxoLIANB0AJqIgQgASACKAIEEP4EIAMQvg42AugCIANBADYC0AIgASAEEMcLDB8LIANBiAFqIAIoAgQiAkEIaikCADcDACADQZABaiACQRBqKQIANwMAIAMgAikCADcDgAEgASgCACICLQAVIQUgAi0AFCEHIAItABIhBCACLAAWIQYgAi0AF0UNG0EBIQIgBkEASA0cIAdBAkYgB3JBAXENGwwcCyABKAIAIgUtABQiBEECRiAEciEGIAUtABUhByAFLQARIQVBASEEAkACQAJAAkACQAJAAkACQCACKAIELQAYQQFrDgsAHQECAwQFBAUGBxwLQSBBCCAHQQFxG0ECIAVBAXEbIQQMHAtBAiEEDBsLQYACQcAAIAZBAXEbIQQMGgtBgARBgAEgBkEBcRshBAwZC0GAIEGACCAGQQFxGyEEDBgLQYDAAEGAECAGQQFxGyEEDBcLQYCABEGAgAEgBkEBcRshBAwWC0GAgAhBgIACIAZBAXEbIQQMFQsgASgCAC0AFCIEQQJGIARBAXFyDRAgA0HQAmogASACKAIEEJcIIANBQGsiBCADQdwCaikCADcDACADIAMpAtQCNwM4IAMoAtACIgJBgICAgHhGDREgACADKQLkAjcCFCAAQSRqIANB9AJqKAIANgIAIABBHGogA0HsAmopAgA3AgAgAEEMaiAEKQMANwIAIAAgAykDODcCBCAAIAI2AgAMHQsgASgCAC0AFCIEQQJGIARBAXFyDQ4gA0HQAmoiBCABEPwLIAMoAtACQRBGDQogA0HQAGogA0HoAmooAgA2AgAgA0HIAGogA0HgAmopAgA3AwAgA0FAayADQdgCaikCADcDACADIAMpAtACNwM4IANBuAJqIgUgA0E4ahDcDSAEIAEgAigCBCICQdgAaiACLQBwIAUQmg0gAygC0AIiAkGAgICAeEYNCyAAQQRqIANB1AJqQST8CgAAIAAgAjYCACAFQQFBAhDyDAwcCyADQdACaiIIIAEQ/AsgAygC0AJBEEYNAiADQdAAaiIMIANB6AJqIg0oAgA2AgAgA0HIAGoiBiADQeACaikCADcDACADQUBrIgcgA0HYAmoiBSkCADcDACADIAMpAtACNwM4IANB2AFqIANBOGoiBBDLBiAIIAEQ/AsgAygC0AJBEEYNAyAMIA0oAgA2AgAgBiADQeACaikCADcDACAHIAUpAgA3AwAgAyADKQLQAiIUNwM4IBSnQQtHDQQgBBCaEEEBIQlBASEIAkACQAJAAkACQEEDIAIoAgQiBygCACIFQQNrIgIgAkEDTxsiBEEBaw4DAgEAGwsgBygCBCIEIQggBUEBaw4CAgMaC0EAIQlBASEEDBkLQQAhBAtBACEJDBcLIAcoAgghCAwWCyADQdACaiIIIAEQ/AsgAygC0AJBEEYNBCADQdAAaiIMIANB6AJqIg0oAgA2AgAgA0HIAGoiBiADQeACaikCADcDACADQUBrIgQgA0HYAmoiBSkCADcDACADIAMpAtACNwM4IANB9AFqIANBOGoiBxDLBiAIIAEQ/AsgAygC0AJBEEYNBSAMIA0oAgA2AgAgBiADQeACaikCADcDACAEIAUpAgA3AwAgAyADKQLQAiIUNwM4IBSnQQxHDQYgA0GUAmoiBSAELwEAOwEAIAMgAygCPDYCkAIgBxCaECABKAIAIgggAygCkAI2ABAgCEEUaiAFLwEAOwAAAn8CfwJAAkACQEEBIAIoAgQiBSgCAEGAgICAeHMiAiACQQNPG0EBaw4CAAECCyAFKAIkIQQgA0HQAmoiAiAFEL4NIANBCGogAkGsk84AEIgOIAMoAgwhCCADKAIIDAILIAQgA0GAAmopAgA3AwAgAyADKQL4ATcDOCADKAKMAiECIAMoAogCIQQgAygC9AEMAgsgBSgCBCEEQQALIQJBqcboAC0AABpBHEEEEO8bIgVFDQggBSADKQL0ATcCACADQdgCaiIQIAI2AgAgBUEYaiADQYwCaigCADYCACAFQRBqIANBhAJqKQIANwIAIAVBCGogA0H8AWopAgA3AgAgAyAINgLcAiADIAQ2AtQCIAMgBTYC0AIgA0HQAmooAgAoAhgiAigCFCERIAIoAhAhEiACKAIsIRMQshkiDiACKAIcIgk2AhwgDiACKAIYIgo2AhggDiACKQIQNwIQIA4gAigCDCIPNgIMIA4gAigCCCIINgIIIA4gAigCBCIMNgIEIA4gAigCACINNgIAIAItADAhBiACKAIoIQcgAigCJCEFIAIoAiAhAkGpxugALQAAGkE0QQQQ7xsiC0UEQEEEQTQQoh8ACyALQQA7ADEgCyAGOgAwIAsgBzYCKCALIAU2AiQgCyACNgIgIAsgCTYCHCALIAo2AhggCyASNgIQIAsgDzYCDCALIAg2AgggCyAMNgIEIAsgDTYCACALIBNBAWoiAkF/IAIbNgIsIAsgEUEBaiICQX8gAhs2AhQgDkE0QQQQ+BwgCyECIANBQGsgECkCADcDACADIAMpAtACNwM4QQULIQUgA0HcAmogA0FAaykDADcCACADIAU2AtACIAMgAykDODcC1AIgAyACNgLoAiADIAQ2AuQCIAEgA0HQAmoQxwsMGQsgA0EANgKIASADQoCAgIDAADcCgAEgA0HQAmogARD8CwJAIAMoAtACIgJBEEYNACADQcQAaiEGIANBPGohDCADQdQCaiENA0AgDCANKQIANwIAIAxBEGogDUEQaikCADcCACAMQQhqIgcgDUEIaikCADcCACADIAI2AjhBCCEEAkACQAJAAkACQAJAAkACQAJAIAJBB2siBUEAIAIgBU8bQQFrDggAAQIDBAUIBgcLIANBwAJqIAcoAgA2AgAgAyAMKQIANwO4AiADQRBqIANBuAJqQdSpzgAQiA4gAygCFCIJBEAgAygCECEIIAMgCTYC1AIgAyAINgLQAkEBIQQgA0HQAmoQjAshCgwIC0EAIQQQvg4hCgwHCyADQQE2AtQCIANBlKPOADYC0AIgA0IANwLcAiADIANB/AJqNgLYAiADQdACakGco84AEOgXAAsgA0EBNgLUAiADQfyjzgA2AtACIANCADcC3AIgAyADQfwCajYC2AIgA0HQAmpBhKTOABDoFwALIANBATYC1AIgA0HkpM4ANgLQAiADQgA3AtwCIAMgA0H8Amo2AtgCIANB0AJqQeykzgAQ6BcACyADQQE2AtQCIANByKXOADYC0AIgA0IANwLcAiADIANB/AJqNgLYAiADQdACakHQpc4AEOgXAAsgA0EBNgLUAiADQbSmzgA2AtACIANCADcC3AIgAyADQfwCajYC2AIgA0HQAmpBvKbOABDoFwALIANBATYC1AIgA0Gkp84ANgLQAiADQgA3AtwCIAMgA0H8Amo2AtgCIANB0AJqQaynzgAQ6BcACyADQaACaiAGQQhqKAIANgIAIAMgBikCADcDmAIgAygCUCEKIAMoAkAhCSADKAI8IQggAiEECyACQQlPBEAgA0E4ahCaEAsgBEEIRg0BIANB0AJqIAEQ/AsgAygC0AJBEEYNCyADQdAAaiADQegCaigCADYCACADQcgAaiADQeACaikCADcDACADQUBrIANB2AJqKQIANwMAIAMgAykC0AIiFDcDOCAUp0EPRw0MIANBOGoQmhAgAygCiAEiAiADKAKAAUYEQCADQYABakHsmc4AEMsSCyADKAKEASACQRxsaiIFIAk2AgggBSAINgIEIAUgBDYCACAFIAMpA5gCNwIMIAUgCjYCGCAFQRRqIANBoAJqKAIANgIAIAMgAkEBajYCiAEgA0HQAmogARD8CyADKALQAiICQRBHDQALCyADKAKIASICQQJPBEAgAkEBdiEHIAMoAoQBIgogAkEcbGpBHGshCEEAIQkDQEEAIQIDQCACIApqIgQoAgAhBSAEIAIgCGoiBCgCADYCACAEIAU2AgAgAkEEaiICQRxHDQALIApBHGohCiAIQRxrIQggCUEBaiIJIAdHDQALCyADQUBrIANBiAFqKAIANgIAIAMgAykCgAE3AzggA0HQAmoiAiADQThqEEogASACEMcLDBgLQZyZzgAQqR0AC0Gsmc4AEKkdAAsgA0EBNgLUAiADQaSXzgA2AtACIANCATcC3AIgA0GxDDYCvAIgAyADQbgCajYC2AIgAyADQThqNgK4AiADQdACakGsl84AEOgXAAtBvJnOABCpHQALQcyZzgAQqR0ACyADQQE2AtQCIANB6JfOADYC0AIgA0IBNwLcAiADQbEMNgK8AiADIANBuAJqNgLYAiADIANBOGo2ArgCIANB0AJqQfCXzgAQ6BcAC0EEQRwQoh8AC0H8mM4AEKkdAAsgA0HEAGogA0HAAmopAgA3AgAgAyADKQK4AjcCPCADQQE2AjggA0HQAmoiAiADQThqEIUGIAEgAhDHCwwPC0Hcmc4AEKkdAAsgA0EBNgLUAiADQbCYzgA2AtACIANCATcC3AIgA0GxDDYCvAIgAyADQbgCajYC2AIgAyADQThqNgK4AiADQdACakG4mM4AEOgXAAsgA0HQAmoiBCABEPwLIAMoAtACQRBHBEAgA0HQAGogA0HoAmooAgA2AgAgA0HIAGogA0HgAmopAgA3AwAgA0FAayADQdgCaikCADcDACADIAMpAtACNwM4IANBuAJqIgUgA0E4ahDbDSAEIAEgAigCBCICQdgAaiACLQBwIAUQ6AwgAygC0AIiAkGAgICAeEcEQCAAQQRqIANB1AJqQST8CgAAIAAgAjYCACAFQQRBCBDyDAwPCyADQcQAaiADQcACaikCADcCACADIAMpArgCNwI8IANBADYCOCADQdACaiICIANBOGoQhQYgASACEMcLDA0LQYyZzgAQqR0ACyADQdACaiABIAIoAgQQogUgA0FAayIEIANB3AJqKQIANwMAIAMgAykC1AI3AzggAygC0AIiAkGAgICAeEcEQCAAIAMpAuQCNwIUIABBJGogA0H0AmooAgA2AgAgAEEcaiADQewCaikCADcCACAAQQxqIAQpAwA3AgAgACADKQM4NwIEIAAgAjYCAAwNCyADQagBaiAEKQMANwIAIAMgAykDODcCoAEgA0EANgKcASADQdACaiICIANBnAFqEIUGIAEgAhDHCwwLCyADQbwBaiAEKQMANwIAIAMgAykDODcCtAEgA0EBNgKwASADQdACaiICIANBsAFqEIUGIAEgAhDHCwwKCyADQdACaiABIAIoAgQQjgYgA0FAayIEIANB3AJqKQIANwMAIAMgAykC1AI3AzggAygC0AIiAkGAgICAeEcEQCAAIAMpAuQCNwIUIABBJGogA0H0AmooAgA2AgAgAEEcaiADQewCaikCADcCACAAQQxqIAQpAwA3AgAgACADKQM4NwIEIAAgAjYCAAwLCyADQdABaiAEKQMANwIAIAMgAykDODcCyAEgA0EANgLEASADQdACaiICIANBxAFqEIUGIAEgAhDHCwwJC0EQQQQgB0EBcRtBASAFQQFxGyEECyADIAQQvw42AugCIAMgBDYC1AIgA0EDNgLQAiABIANB0AJqEMcLDAcLIANB0AJqIAEgAigCBCIEEP4JIAMpAtQCIRUCQCADKALQAiICQYCAgIB4RwRAIAAgAykC3AI3AgwgAEEkaiADQfQCaigCADYCACAAQRxqIANB7AJqKQIANwIAIABBFGogA0HkAmopAgA3AgAgACACNgIAQQQhAgwBCwJAAkACQAJAIBWnQQFxBEAgASgCACIGKAIADQEgFUIIiKchBSAGQX82AgACQAJAAkAgBigCDCIBRQ0AIAYoAgggAUEcbGoiB0EcayIBRQ0AIAEoAgBBCEYNAQtBqcboAC0AABpBAUEBEO8bIgRFDQQgBCAFOgAAIAYoAgwiAiAGKAIERgRAIAZBBGpBnJ3OABDLEgsgBigCCCACQRxsaiIBQQE2AgwgASAENgIIIAFCiICAgBA3AgAgBiACQQFqNgIMDAELIAdBEGsiAigCACIEIAdBGGsiASgCAEYEQCABQYydzgAQ+QoLIAdBFGsoAgAgBGogBToAACACIARBAWo2AgALIAYgBigCAEEBajYCAAwMCyAVQiCIpyECIANByAJqIARBFGopAgA3AwAgA0HAAmogBEEMaikCADcDACADIAQpAgQ3A7gCAkAgASgCACIELQAQQQFxRQRAIANBCDYCPAwBCwJAIAQtABQiBEECRiAEQQFxckUEQCAVQoCAgICAEFoEQCADQQg2AjwMAwsgAkHfAHFBwQBrQRlLDQFBqcboAC0AABpBAkEBEO8bIgRFDQUgBCACOgABIAQgAjoAACADQQE2AtgCIAMgBDYC1AIgA0EBNgLQAiADQYABaiIFIANB0AJqIgQQsAsgBRC0FiADQdwCaiADQYgBaikCADcCACADIAMpAoABNwLUAiADQQE2AtACIANBPGogBBCFBgwCCyADQvoWNwLYAiADQcyIzwA2AtQCIANBgIDEADYC0AIgA0HQAmogAiACEP0LRQRAIANBCDYCPAwCC0GpxugALQAAGkEIQQQQ7xsiBEUNBSAEIAI2AgQgBCACNgIAIANBATYC2AIgAyAENgLUAiADQQE2AtACIANBgAFqIgUgA0HQAmoiBBCvCwJAIAUQ/goEQCAEIAEgA0G4AmpBBhCNCyADKALQAiIEQYCAgIB4Rw0BCyADQdwCaiADQYgBaikCADcCACADIAMpAoABNwLUAiADQQA2AtACIANBPGogA0HQAmoQhQYMAgsgA0E8aiADQdQCakEk/AoAACADQYABakEEQQgQ8gwgA0EwaiADQdAAaikCACIWNwMAIANBKGogA0HIAGopAgAiFzcDACADIAMpAkAiFDcDICADKQJYIRUgAygCPCEBIABBGGogFjcCACAAQRBqIBc3AgAgACAUNwIIIAAgATYCBCAAIAQ2AgBBICECDAYLIANBCDYCPAsgA0EoaiIHIANByABqKQIANwMAIANBMGoiBSADQdAAaikCADcDACADIAMpAkA3AyAgAygCPCIEQQhHBEAgA0HkAmogBSkDADcCACADQdwCaiAHKQMANwIAIAMgAykDIDcC1AIgAyAENgLQAiABIANB0AJqEMcLDAwLIwBBEGsiBiQAIAZBADYCDAJ/IAJBgAFPBEAgAkGAEE8EQCACQYCABE8EQCAGQRBqIQQgBiACQT9xQYABcjoADyAGIAJBEnZB8AFyOgAMIAYgAkEGdkE/cUGAAXI6AA4gBiACQQx2QT9xQYABcjoADUEEDAMLIAZBDGpBA3IhBCAGIAJBP3FBgAFyOgAOIAYgAkEMdkHgAXI6AAwgBiACQQZ2QT9xQYABcjoADUEDDAILIAZBDGpBAnIhBCAGIAJBP3FBgAFyOgANIAYgAkEGdkHAAXI6AAxBAgwBCyAGQQxqQQFyIQQgBiACOgAMQQELIQUCQAJAIAEoAgAiBygCAEUEQCAHQX82AgACQAJAAkAgBygCDCIBRQ0AIAcoAgggAUEcbGoiAkEcayIBRQ0AIAEoAgBBCEYNAQtBqcboAC0AABogBUEBEO8bIgJFDQMgBQRAIAIgBkEMaiAF/AoAAAsgBygCDCIBIAcoAgRGBEAgB0EEakHsnM4AEMsSCyAHKAIIIAFBHGxqIgQgBTYCDCAEIAI2AgggBCAFNgIEIARBCDYCACAHIAFBAWo2AgwMAQsgAkEYayAGQQxqIAQQ+xALIAcgBygCAEEBajYCACAGQRBqJAAMAgtB3JzOABDWEQALQQEgBUGglM4AELQaAAsMCwtB/JzOABDWEQALQQFBARCiHwALQQFBAhCiHwALQQRBCBCiHwALIAAgAmogFTcCAAwHCyADEL4ONgLoAiADQQA2AtACIAEgA0HQAmoQxwsMBQsgA0EANgKsAiADQoCAgIDAADcCpAIgA0HQAmogARD8CwJAIAMoAtACIgJBEEYNACADQcQAaiEPIANBPGohCCADQdQCaiEMA0AgCCAMKQIANwIAIAhBEGogDEEQaikCADcCACAIQQhqIgcgDEEIaikCADcCACADIAI2AjhBCCEEAkACQAJAAkACQAJAAkACQAJAIAJBB2siBUEAIAIgBU8bQQFrDggAAQIDBAgFBgcLIANBwAJqIAcoAgA2AgAgAyAIKQIANwO4AiADQRhqIANBuAJqQdSpzgAQiA4gAygCHCIKBEAgAygCGCEJIAMgCjYC1AIgAyAJNgLQAkEBIQQgA0HQAmoQjAshDQwIC0EAIQQQvg4hDQwHCyADQQE2AtQCIANBkJ7OADYC0AIgA0IANwLcAiADIANB/AJqNgLYAiADQdACakGYns4AEOgXAAsgA0EBNgLUAiADQfyezgA2AtACIANCADcC3AIgAyADQfwCajYC2AIgA0HQAmpBhJ/OABDoFwALIANBATYC1AIgA0Hon84ANgLQAiADQgA3AtwCIAMgA0H8Amo2AtgCIANB0AJqQfCfzgAQ6BcACyADQQE2AtQCIANBzKDOADYC0AIgA0IANwLcAiADIANB/AJqNgLYAiADQdACakHUoM4AEOgXAAsgA0EBNgLUAiADQbihzgA2AtACIANCADcC3AIgAyADQfwCajYC2AIgA0HQAmpBwKHOABDoFwALIANBATYC1AIgA0Goos4ANgLQAiADQgA3AtwCIAMgA0H8Amo2AtgCIANB0AJqQbCizgAQ6BcACyADQYgBaiAPQQhqKAIANgIAIAMgDykCADcDgAEgAygCUCENIAMoAkAhCiADKAI8IQkgAiEECyACQQlPBEAgA0E4ahCaEAsgBEEIRg0BIA8gAykDgAE3AgAgD0EIaiADQYgBaigCADYCACADIAo2AkAgAyAJNgI8IAMgBDYCOCADIA02AlACQCAEBEAgA0HoAmoiBSADQdAAaigCADYCACADQeACaiIEIANByABqKQIANwMAIANB2AJqIgIgA0FAaykCADcDACADIAMpAjg3A9ACIAMoAqwCIgcgAygCpAJGBEAgA0GkAmpB/JnOABDLEgsgAygCqAIgB0EcbGoiBiADKQPQAjcCACAGQQhqIAIpAwA3AgAgBkEQaiAEKQMANwIAIAZBGGogBSgCADYCACADIAdBAWo2AqwCDAELIANBOGoQ9wcLIANB0AJqIAEQ/AsgAygC0AIiAkEQRw0ACwsgAygCrAIiAkECTwRAIAJBAXYhByADKAKoAiIKIAJBHGxqQRxrIQhBACEJA0BBACECA0AgAiAKaiIEKAIAIQUgBCACIAhqIgQoAgA2AgAgBCAFNgIAIAJBBGoiAkEcRw0ACyAKQRxqIQogCEEcayEIIAlBAWoiCSAHRw0ACwsgA0FAayADQawCaigCADYCACADIAMpAqQCNwM4IANB0AJqIgIgA0E4ahBNIAEgAhDHCwwEC0GpxugALQAAGiAHLQBAIQUgASgCAC0AEyECQRxBBBDvGyIGRQRAQQRBHBCiHwALIAYgAykC2AE3AgAgBkEYaiADQfABaigCACIHNgIAIAZBEGogA0HoAWopAgA3AgAgBkEIaiADQeABaikCADcCACADIAQ2AkQgAyAGNgJAIAMgBSACQQFxczoASCADIAg2AjwgAyAJNgI4An8CQCAHKAIIQQFHDQAgBygCDA0AIANBATYCOCADIARBAEciBDYCRCADIAlBAXMgCEEAR3IiCDYCPEEBDAELIAkLIQICQAJAAkACQAJAIAQOAgABAgsgAkUgCHINARC+DiEEIAYQ9wdBACEIDAILIAJFIAhBAUdyDQAgA0HAAmogA0HkAWopAgA3AwAgA0HIAmogA0HsAWooAgA2AgAgAyADKQLcATcDuAIgAygC8AEhBCADKALYASEIDAELIANBOGoQxAUhBCADQcgCaiADQcgAaigCADYCACADQcACaiADQUBrKQIANwMAIAMgAykCODcDuAJBBCEIDAELIAZBHEEEEPgcCyADQdwCaiADQcACaikDADcCACADQeQCaiADQcgCaigCADYCACADIAg2AtACIAMgAykDuAI3AtQCIAMgBDYC6AIgASADQdACahDHCwwDCyAHQQJGIAdyIQICQAJAAkACQAJAIARBAXFFBEAgAkEBcUUEQCAFQQFxDQQgA0GkAmoiAiAGQf8BcSAGQQh0chDpDCACEIUDIANBxAJqIANBrAJqKQIANwIAIAMgAykCpAI3ArwCIANBATYCuAIgA0E4aiADQbgCahCFBgwGCyAFQQFxDQIgBkEATg0BQQIhAgwGCyACQQFxDQMgA0G8AmpBgP4DEOkMIANBATYCuAIgA0E4aiADQbgCahCFBgwECyADIAY2ArwCIAMgBjYCuAIgA0GkAmoiBCADQbgCaiICELYMIAQQjAMgA0HEAmogA0GsAmopAgA3AgAgAyADKQKkAjcCvAIgA0EANgK4AiADQThqIAIQhQYMAwsgA0KOgICA8P+/CDcCyAIgA0KLgICAwAE3AsACIANCgICAgJABNwK4AiADQagCaiADQbgCahCOCyADQQA2AqQCIANBOGogA0GkAmoQhQYMAgsgA0GO/gM7AKgCIANBgJKs4AA2AKQCIANBvAJqIANBpAJqEOcLIANBATYCuAIgA0E4aiADQbgCahCFBgwBCyADQoCAgIDw/78INwKkAiADQbwCaiADQaQCahC2DCADQQA2ArgCIANBOGogA0G4AmoQhQYLIANB7AJqIANB0ABqKAIANgIAIANB5AJqIANByABqKQIANwIAIANB3AJqIANBQGspAgA3AgAgAyADKQI4NwLUAgwBCyADQdACaiABIANBgAFqIAIQjQsgAygC0AIiAkGAgICAeEYNACADQfgAaiADQewCaigCACIBNgIAIANB8ABqIANB5AJqKQIAIhU3AwAgA0HoAGogA0HcAmopAgAiFjcDACADIAMpAtQCIhc3A2AgAykC8AIhFCAAQRxqIAE2AgAgAEEUaiAVNwIAIABBDGogFjcCACAAIBc3AgQgACAUNwIgIAAgAjYCAAwCCyADQfgAaiADQewCaigCADYCACADQfAAaiADQeQCaikCADcDACADQegAaiADQdwCaikCADcDACADIAMpAtQCNwNgIAEgA0HgAGoQxwsLIABBgICAgHg2AgALIANBgANqJAALtEcCIX8LfiMAQdAIayICJAACQAJAIAEoAhQiCSABKAIQIghJBEAgAUEMaiETIAEoAgwhBANAIAQgCWotAAAiDEEJayIHQRdLQQEgB3RBk4CABHFFcg0CIAEgCUEBaiIJNgIUIAggCUcNAAsLIAJBBTYCgAQgAkEQaiABQQxqENARIAJBgARqIAIoAhAgAigCFBCsEyEBIABBAjYCACAAIAE2AgQMAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgDEHbAEcEQCAMQfsARg0BIAEgAkHPCGpBhJHjABC/AyEHDBgLAkAgAS0AHEUEQCABIAEtAB1BAWsiBzoAHSAHQf8BcUUNAQsgASAJ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E0IDg1AEQCACIBOnIgc2AsADIAIgBygCEDYCxAMgAkH4AWogAkHAA2oiBxChHiACKAL4ASIGIAYoAgAiBkEBajYCACAGQQBIDQYgAkHwAWogBxChHiACIAIpA/ABNwLIAiACQegBaiACQcgCahChHgsgASkDKCIQUCAQQgODQgBSckUEQCACIBCnIgc2AsADIAIgBygCEDYCxAMgAkHgAWogAkHAA2oiBxChHiACKALgASIGIAYoAgAiBkEBajYCACAGQQBIDQYgAkHYAWogBxChHiACIAIpA9gBNwLIAiACQdABaiACQcgCahChHgsgE0KAgICAcIMhFCATpyEHQQEMAQsgASgCICEHIAEpAxghEiABKQMoIhBCA4NQBEAgAiAQpyIGNgLAAyACIAYoAhA2AsQDIAJBkAJqIAJBwANqIgYQoR4gAigCkAIiCCAIKAIAIghBAWo2AgAgCEEASA0FIAJBiAJqIAYQoR4gAiACKQOIAjcCyAIgAkGAAmogAkHIAmoQoR4LIAEtADAhCEEACyEGAkAgASgCOEECRwRAIAJBwANqIAFBOGoQvQUMAQsgAkECNgLAAwsgAkHPAmogAkHAA2pBwAD8CgAAIAMgCDoAMCADIBA3AyggAyAUIAethDcDICADIBI3AxggAyAGNgIQIAMgBDoACiADIAU6AAkgAyAJOgAIIAMgETcDACADQTFqIAJByAJqQccA/AoAAAsgACAHOgAoIAAgEDcDICAAIAU2AhggACARNwMQIAAgAzYCDCAAIA82AgggACACKADIAjYAKSAAIAk6ADAgACACLwDAAzsAMSAAIAQ2AjQgAEERNgIAIABBLGogAkHLAmooAAA2AAAgAEEzaiACQcIDai0AADoAAAwBCyABKQIEIRAQqRkhAyACQcgCaiIEIAEoAgwQLSADIARB2AD8CgAAIAAgAzYCDCAAIBA3AgQgAEESNgIACyACQYAEaiQADwsAC949AhN/A34jAEHwAmsiBSQAIAEpAgwhGCABQoCAgICAATcCDCAAIAAoAlxBAWo2AlwgAUEUaiIHKAIAIQggB0EANgIAIAVBFGogCDYCACAFIBg3AgwgASkCACEYIAEoAgghByAFQZQCaiIMIgggAUEMaiIXELAJIAUgBzYCkAIgBSAYNwOIAiAFIAc2AgggBSAYNwMAIAgQqBcgCBCx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AEEIEO8bIgNFDQwgA0ICNwMoIAMgCzYCJCADIAw2AiAMCwtBCEHwABCiHwALIAIgBSgCkAJB5IjAABC0GgALIAIgBSgCkAJB9IjAABC0GgALQQhB4AEQoh8ACyADIAUoApACQZiJwAAQtBoACyADIAUoApACQaiJwAAQtBoACyALIAUoApACQbiJwAAQtBoAC0EIQTgQoh8ACyAPIAUoApACQciJwAAQtBoACyAQIAUoApACQciJwAAQtBoACyADIAUoApACQdiJwAAQtBoACyADIAQ2AhQgA0KAgICAIDcCDCADQgA3AgQgA0ELNgIAIANBMGogBkEo/AoAACACIAg2AkQgAkECNgJAIAJBETYCOCACIAc2AgwgAkECNgIIIAJBETYCACACQcgAaiAFQbABakEo/AoAACACQQA2AoQBIAIgDTYCgAEgAiAJNgJ8IAJCADcCdCACQQg2AnAgAiADNgK0ASACQgA3AqwBIAJBBDYCqAEgAiAFKQPoATcDiAEgAkGQAWogBUHwAWopAwA3AwAgAkGYAWogBUH4AWopAwA3AwAgAkGgAWogBUGAAmopAwA3AwAgAkG4AWogBUGIAmpBKPwKAAAgFxCoFyAXELEeIAFBBDYCFCABIAI2AhAgAUEENgIMIABBAToAYSAFQZABahDKHSAFQfACaiQADwtBCEHYABCiHwALQQRBIBCiHwALQQhBgAEQoh8ACwALgWkCH38DfiMAQdADayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAIAQQFrDgcBCAIDBAUGAAsgA0GQA2ogARD1ESAAQQhqIQEgAygClAMhAgJAIAMoApADIgRBKkcEQCABIANBmANqQTj8CgAADAELIAEgAjYCAAsgACAENgIAIAAgAjYCBAwOCyADIAIoAgQiBCACKAIIIgJqIgU2AtwCIAMgBDYC2AIgAyABNgLgAgJAAkACfyABLQALQQFxRQRAIANBEGogA0HYAmoQ3hQgAy0AEEUNAiADKALgAiEEIAMtABEMAQsgAkUNASADIAVBAWsiAjYC3AIgASEEIAItAAALIQIgA0HwAGogBCACIAIQqwogAygCcCICQStGDQAgAygCeCEEIAMoAnQhBSACQSpGDQEgAEEMaiADQfwAakE0/AoAACAAIAQ2AgggACAFNgIE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rUL/AYOFQrODgICAIH4gDK2CpyIMIgggCyIFKAIIIg1JBEBBACENIAUoAgQgCEEEdGoiCC8BDCAFLwEQRw0BIAooAgAgCCgCAEcNASAKLQAEIAgtAARHDQEgCi0ABSAILQAFRw0BIAgoAgghBUEBIQ0MAQsgCCANQYzWygAQjA4ACyAPIAU2AgQgDyANNgIAAn8gAygCSEEBcQRAIAMoAkwMAQsgA0GQA2ogASACLQAAIA4tAAAQqwogAygCmAMhCCADKAKUAyEFIAMoApADIgpBKkcEQCAAQQxqIANBnANqQTT8CgAAIAAgCDYCCCAAIAU2AgQgACAKNgIADAYLIANBkANqIgogASAIIAQQ6BUgAygCkAMiBEEqRwRAIABBBGogCkEEckE8/AoAACAAIAQ2AgAMBgsgASgC5AEiBCAMTQ0DIAMpA+gCISIgASgC4AEgDEEEdGoiBCABLwHsATsBDCAEIAU2AgggBCAiNwIAIAULIQQgAkECaiECIAdBAmsiBw0BDAMLC0H81coAEMkWAAsgDCAEQZzWygAQjA4ACyADQZADaiICIAEgBiAEEOgVIAMoApADIgRBKkYNASAAQQRqIAJBBHJBPPwKAAAgACAENgIACyADQbABakEEQQgQ8gwMBQsgA0GAA2ogA0GwAWoQqAEgAy0AgANBBEcNAAsLIANBsAFqQQRBCBDyDCADQfgCahDWGCICDQALCyAAIAk2AgggACAGNgIEIABBKjYCAAsgASABKALYAUEBajYC2AEMCQtByOrJABDWEQALQcjpyQAQ1hEAC0G46ckAENYRAAtB0OjJABDWEQALIANBkANqIAEQ9REgAygClAMhBSADKAKQAyICQSpHBEAgAEEIaiADQZgDakE4/AoAACAAIAU2AgQgACACNgIADAULIANBMGogBBDRHSADQZADaiIHIAMoAjRBBEEIEIIKIAMoApQDIQICQAJAIAMoApADQQFHBEAgA0EANgJ4IAMgAygCmAM2AnQgAyACNgJwIANBKGogBBDiGSADIAMpAyg3ApADIAcQ1hgiAgRAIAWtISIDQCACNQIAIiNCgAJaDQMgAjUCBCIkQoACWg0EIAMoAngiAiADKAJwRgRAIANB8ABqQbjqyQAQxBILIAMoAnQgAkEDdGogI0IghiAihCAkQiiGhDcCACADIAJBAWo2Angg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AiADKAKQA0EBRwRAIANBADYCeCADIAMoApgDNgJ0IAMgAjYCcCADQRhqIgIgBCgCBCIJNgIAIAIgCSAEKAIIQQF0ajYCBCADIAMpAxg3ApADIAcQ2BgiAgRAIAWtISIDQCACMQABISMgAjEAACEkIAMoAngiAiADKAJwRgRAIANB8ABqQajpyQAQxBILIAMoAnQgAkEDdGogJEIghiAihCAjQiiGhDcCACADIAJBAWo2AnggA0GQA2oQ2BgiAg0ACwsgA0G4AWogA0H4AGooAgA2AgAgAyADKQJwNwOwASADQZADaiABIANBsAFqELwOIAMoApQDIQEgAygCkAMiAkEqRwRAIABBCGogA0GYA2pBOPwKAAAgACABNgIEIAAgAjYCAAwDCyAAIAU2AgggACABNgIEIABBKjYCAAwCCyACIAMoApgDQZjpyQAQtBoACyABKAIgBEBBuOvJABDWEQALIAFBfzYCICADIAI2ArgBIANCAzcCsAEgA0GQA2ogAUEkaiADQbABahCMCSABIAEoAiBBAWo2AiAgAEEIaiEBIAMoApQDIQICQCADKAKQAyIEQSpHBEAgASADQZgDakE4/AoAAAwBCyABIAI2AgALIAAgBDYCACAAIAI2AgQLIANB0ANqJAALk2cCC38EfiMAQZADayIFJAACQAJAAkAgAS8BdEGAwABxIghFIAEtALABIgZB0QBHckUEQAJAIAEQyAUiBkUNACAGLQAAQf0ARw0AIAEQiAggARCICCAFQZgBaiABIAJBARDhAiAFKAKcASEBAn8gBSgCmAFBAXEEQEETIQZBBAwBCyAAQQY2AghBESEGQQwLIQIgACAGNgIAIAAgAmogATYCAAwCCyABLQCwASEGCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAZB/wFxIglBzABGBEAgAyABKAJsIgdBgICAgAJxIgpBHXZyDQELAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAlBzQBrDiQRDAcODBEADAwBDAwMDAgCDwMMDAwMDAwEDAUMBgwJDA0MCwoMCyABEIgIIAEQ5xQNDyAFIAEpA6gBNwOAAiAFQagBaiABENkZIAVBsAJqIgIQuQ4gBUHEAmogBUGwAWooAgA2AgAgBSAFKQKoATcCvAIgBUGAAmogAhCRECEC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BjYCBAwDCyABEIMNIQYgARCICCABIAYQxBAMAQsCQAJAAkACQAJAIAEtALABQQFHBEAgAiABKQOoATcDMCACQTxqIAEQ2RkgAkEBNgKsASACQfTuxAA2AqgBIAJCATcCtAEgAkGWAzYCWCACQQE6AMABIAIgAkHUAGo2ArABIAIgAkHIAGo2AlQgAiACQcABajYCSCACQZABaiIDIAJBqAFqEPcEIAJBpAFqIAJBxABqKAIANgIAIAIgAikCPDcCnAEgAkEwaiADEJEQIQMgAS0AsAFBogFGDQEMBAsgARCICCACQQA2AlAgAkKAgICAwAA3AkggAkEANgJUIAEtALABQQJHBEAgAiABKQOoATcDYCACQewAaiABENkZIAJBATYCrAEgAkH07sQANgKoASACQgE3ArQBIAJBlgM2AsQBIAJBAjoAzwEgAiACQcABajYCsAEgAiACQcgBajYCwAEgAiACQc8BajYCyAEgAkGQAWoiAyACQagBahD3BCACQaQBaiACQfQAaigCADYCACACIAIpAmw3ApwBIAJB4ABqIAMQkRAhAyABLQCwAUGiAUcNAwwCCyABEIgIAkAgASgCbCIDQYAQcUUEQCABIANBgBByNgJsIAJB1ABqIAJByABqIAEQmAIhAyABIAEoAmxB/29xNgJsDAELIAJB1ABqIAJByABqIAEQmAIhAwsgAw0CIAEtALABQQNHBEAgAiABKQOoATcDeCACQYQBaiABENkZIAJBATYCrAEgAkH07sQANgKoASACQgE3ArQBIAJBlgM2AsQBIAJBAzoAzwEgAiACQcABajYCsAEgAiACQcgBajYCwAEgAiACQc8BajYCyAEgAkGQAWoiAyACQagBahCfCiACQaQBaiACQYwBaigCADYCACACIAIpAoQBNwKcASACQfgAaiADEJEQIQMgAS0AsAFBogFGDQIMAwsgARCICCAAIAY2AgwgAEEJNgIAIAAgAikCSDcCECAAQRhqIAJB0ABqKAIANgIAIAAgATUCpAFCIIYgEIQ3AgQMBgsgARCDDSEIIAEQiAggASAIEMQQDAILIAEQgw0hCCABEIgIIAEgCBDEEAsgAEETNgIAIAAgAzYCBCACQcgAaiIAEKkXIAAQsh4MAQsgAEETNgIAIAAgAzYCBAsgBhCpASAGQdgAQQgQ+BwMAQsgAEETNgIA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CDYCgAIgAyBFNwP4ASADIAVBMGotAAA6AJACQQALIQ8gA0HQAGogCkEIaikAADcDACADQdcAaiAKQQ9qKQAANwAAIAMgCikAADcDSCADKAL0ASENDAILIAVBCGopAgAhRyAFQRBqKAIAIQ8gBUEYaikDACJFQgODUARAIAMgRaciCDYCmAIgAyAIKAIQNgKcAiADQShqIANBmAJqIggQoR4gAygCKCIcIBwoAgAiHEEBajYCACAcQQBIDQYgA0EgaiAIEKEeIAMgAykDIDcCkAEgA0EYaiADQZABahChHgsgBUEgai0AACEIDAELIAVBGGohCCAFQQhqKQIAIUcCQCAFQRBqKAIAQQFGBEAgQyAIEKYHIANBATYCmAIMAQsgBUEgaigCACENIAgpAgAhSCAFQShqKQMAIkVCA4NQBEAgAyBFpyIINgLAAiADIAgoAhA2AsQCIANBQGsgA0HAAmoiCBChHiADKAJAIg8gDygCACIPQQFqNgIAIA9BAEgNBiADQThqIAgQoR4gAyADKQM4NwLIAiADQTBqIANByAJqEKEeCyATIAMoAMgCNgAAIBNBA2ogA0HLAmooAAA2AAAgAyBFNwOwAiADIA02AqgCIAMgSDcDoAIgA0EANgKYAiADIAVBMGotAAA6ALgCCyBCIAVBOGoQgAcgAyBHNwOQASAFQeAAai0AACEFIEEgA0GYAmpBKPwKAAAgAyAFOgDoASADKAKYASEPIAMoApwBIQ0gAykDoAEhRSADLQCoASEIIANByABqIEBBxwD8CgAACyAGIBdqIgUgRDYCACAFQSBqIAg6AAAgBUEYaiBFNwMAIAVBFGogDTYCACAFQRBqIA82AgAgBUEIaiBHNwMAIAVBIWogA0HIAGpBxwD8CgAAIAZB6ABqIQYgB0EBayIHDQALCyAUIBU2AgggFCAXNgIEIBQgATYCACADQdACaiQADAILIAEgAygCmAFB/K7IABC0GgALAAtBACEHQQAhASAEQSBqKAIAIgMEQBCfGSEBIAJBsAJqIAMQpgcgAUEQaiACQcACaikDADcDACABQQhqIA4pAwA3AwAgASACKQOwAjcDAAsgBEEkai0AACEDIARBKGooAgAiBQRAEIUZIQcgBSkCACFFIA4gBUEIahBqIAcgRTcCACAHQQhqIA4pAwA3AgAgB0EQaiACQcACaigC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DA4LIAJFDQkgAigCAEECRw0JIAMgAkEIajYCMCADQQI2AjwgA0H4i8UANgI4IANCATcCRCADQbMDNgIcIAMgA0EYajYCQCADIANBMGo2AhggACADQThqEKIKDA4LIAJFDQkgAigCAEEERw0JIAMgAkEQajYCMCADQQI2AjwgA0GkjMUANgI4IANCATcCRCADQbMDNgIcIAMgA0EYajYCQCADIANBMGo2AhggACADQThqEKIKDA0LIAJFDQkgAigCAEECRw0JIANBCGogAkEIahCAFiADKAIMIQQgAygCCCEFDAsLIAJFDQkgAigCAEEIRw0JIAMgAkEEajYCMCADQQI2AjwgA0HEkMUANgI4IANCATcCRCADQbYDNgIcIAMgA0EYajYCQCADIANBMGo2AhggACADQThqEKIKDAsLIANBtwM2AjQgA0EBNgIsIANBATYCHCADQfyIxQA2AhggA0EBNgIkIAMgA0EQajYCMCADQoCAgICAhIDAYDcDSCADQgI3A0AgA0ICNwM4IAMgA0E4ajYCKCADIANBMGo2AiAgA0EYakHwicUAEOgXAAsgA0G3AzYCNCADQQE2AiwgA0EBNgIcIANB/IjFADYCGCADQQE2AiQgAyADQRBqNgIwIANCgICAgICEgMBgNwNIIANCAjcDQCADQgI3AzggAyADQThqNgIoIAMgA0EwajYCICADQRhqQayKxQAQ6BcACyADQbcDNgI0IANBATYCLCADQQE2AhwgA0H8iMUANgIYIANBATYCJCADIANBEGo2AjAgA0KAgICAgISAwGA3A0ggA0ICNwNAIANCAjcDOCADIANBOGo2AiggAyADQTBqNgIgIANBGGpB5IrFABDoFwALIANBtwM2AjQgA0EBNgIsIANBATYCHCADQfyIxQA2AhggA0EBNgIkIAMgA0EQajYCMCADQoCAgICAhIDAYDcDSCADQgI3A0AgA0ICNwM4IAMgA0E4ajYCKCADIANBMGo2AiAgA0EYakGci8UAEOgXAAsgA0G3AzYCNCADQQE2AiwgA0EBNgIcIANB/IjFADYCGCADQQE2AiQgAyADQRBqNgIwIANCgICAgICEgMBgNwNIIANCAjcDQCADQgI3AzggAyADQThqNgIoIAMgA0EwajYCICADQRhqQcyLxQAQ6BcACyADQbcDNgI0IANBATYCLCADQQE2AhwgA0H8iMUANgIYIANBATYCJCADIANBEGo2AjAgA0KAgICAgISAwGA3A0ggA0ICNwNAIANCAjcDOCADIANBOGo2AiggAyADQTBqNgIgIANBGGpB3IvFABDoFwALIANBtwM2AjQgA0EBNgIsIANBATYCHCADQfyIxQA2AhggA0EBNgIkIAMgA0EQajYCMCADQoCAgICAhIDAYDcDSCADQgI3A0AgA0ICNwM4IAMgA0E4ajYCKCADIANBMGo2AiAgA0EYakGIjMUAEOgXAAsgA0G3AzYCNCADQQE2AiwgA0EBNgIcIANB/IjFADYCGCADQQE2AiQgAyADQRBqNgIwIANCgICAgICEgMBgNwNIIANCAjcDQCADQgI3AzggAyADQThqNgIoIAMgA0EwajYCICADQRhqQbSMxQAQ6BcACyADQbcDNgI0IANBATYCLCADQQE2AhwgA0H8iMUANgIYIANBATYCJCADIANBEGo2AjAgA0KAgICAgISAwGA3A0ggA0ICNwNAIANCAjcDOCADIANBOGo2AiggAyADQTBqNgIgIANBGGpBxIzFABDoFwALIANBtwM2AjQgA0EBNgIsIANBATYCHCADQfyIxQA2AhggA0EBNgIkIAMgA0EQajYCMCADQoCAgICAhIDAYDcDSCADQgI3A0AgA0ICNwM4IAMgA0E4ajYCKCADIANBMGo2AiAgA0EYakHUkMUAEOgXAAsgA0E4aiAEQQFBARCCCiADKAI8IQEgAygCOEEBRg0BIAMoAkAhAiAEBEAgAiAFIAT8CgAACyAAIAQ2AgggACACNgIEIAAgATYCAAsgA0HQAGokAA8LIAEgAygCQEGkhsUAELQaAAvsHgMLfwR+AXwjAEHABGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCAEEBaw4TAQIDBAUGBwgJCgsMDQ4PEBESEwALIABBADYCACAAIAEoAgw2AgwgACABKQIENwIEDBMLIABBATYCACAAIAEpAgQ3AgQMEgsgAUEQaiEDAn8gASgCBEEBRgRAIAEpAwghDSACQbwDaiADEOkJAkAgASgCHCIERQRAQQAhAwwBCxCFGSEDIAQpAgAhDiACQdADaiIFIARBCGoQyAMgAyAONwIAIANBCGogBSkDADcCACAD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IA1CA4NCAFJyRQRAIAIgDaciATYCiAIgAiABKAIQNgKMAiACQTBqIAJBiAJqIgEQoR4gAigCMCIEIAQoAgAiBEEBajYCACAEQQBIDQYgAkEoaiABEKEeIAIgAikDKDcCyAMgAkEgaiAGEKEeCyACIA03A9gCIAIgAzYC0AIgAiAPNwPIAiACQQM2AsACDAELIAEpAhQhDSACQdADaiIDIAFBHGpBnLzIABD5CCACQdwDaiABQShqEMAEIAJBzAJqIAMpAwA3AgAgAkHUAmogAkHYA2opAwA3AgAgAkHcAmogAkHgA2opAwA3AgAgAiANNwLEAiACQQQ2AsACCyAAIA43AwggAEEQaiACQcACakEo/AoAACAAQRE2AgAMAgsgAS0AECEFIAEpAwghDgJ/IAEoAhhBAUYEQCABKAIoIQYgASkDICEPIAEpAzAiDUIDg1AEQCACIA2nIgM2AogCIAIgAygCEDYCjAIgAkHIAGogAkGIAmoiAxChHiACKAJIIgQgBCgCACIEQQFqNgIAIARBAEgNBSACQUBrIAMQoR4gAiACKQNANwLIAyACQThqIAJByANqEKEeCyACIA83AuwCIAEtADghB0EBDAELIAIgASkCHDcD6AJBAAshCAJAIAEoAkAiA0UEQEEAIQEMAQsQoBkhASADKQIAIQ8QoRkhBCACQcgDaiIJIAMoAggQQCAEIAlB+AD8CgAAIAEgBDYCCCABIA83AgALIAAgBToAECAAIA43AwggACACKADIAzYAESAAIAg2AhggACACKQPoAjcCHCAAIAE2AkAgACAHOgA4IAAgDTcDMCAAIAY2AiggAEESNgIAIABBFGogAkHLA2ooAAA2AAAgAEEkaiACQfACaigCADYCAAwBCyABKQMIIQ4gAkH4AmogAUEQahCmBwJAIAEoAihBAkcEQCACQZADaiABQShqEMYEDAELIAJBAjYCkAMLIAEoAlAiBQRAEIUZIQMgBSkCACENIAJB0ANqIgYgBUEIakGYu8gAEPkIIAMgDTcCACADQQhqIAYpAwA3AgAgA0EQaiACQdgDaigCADYCAAsgASgCXCIFBEAgASkCVCENEIUZIQQgBSkCACEPIAJB0ANqIgEgBUEIahBqIAQgDzcCACAEQQhqIAEpAwA3AgAgBEEQaiACQdgDaigCADYCAAsgACAONwMIIAAg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IAIgNDcDcCACKAJ8IRAgAikDgAEhNiACKQJ0ITggNKchIwsgAkHeAGogHUECai0AADoAACACQdgAaiAcQQRqLQAAOgAAIAIgHS8AADsBXCACIBwoAAA2AlQgA0HgAGotAAAhFiADQdwAaigCACEXIAItAJgCIQkgAigClAIhDCACKAKQAiELIAIpA4gCITMgAigCnAIhByACLQCgAiEEIAItAKECIQ4gAi0AogIhDyACQdAAaiAZKAIANgIAIAIgNTcCZCACIAIpA9gBNwNIQQAhCiA4ITQgIyEGQQAhDQwJCyADQQhqKQIAITMgJyADQRBqEJUDIAIgA0EwahCMBCIENgKwAiACIDM3A4gCIAIgA0E0aigCADYCtAIgAiADQcIAai0AADoAwgIgAiADQUBrLwEAOwHAAiACIANBPGooAgA2ArwCIAIgA0E4ai0AADoAuAIgAiAzNwJkIAIoApACIQggAikDmAIhMyACKAKgAiELIAIoAqQCIQwgAi0AqAIhCSACKAKUAiEFIAJB3gBqIB9BAmotAAA6AAAgAiAfLwAAOwFcIAIoAqwCIQcgAkHYAGogHkEEai0AADoAACACIB4oAAA2AlQgAkHQAGogIEEIaigCADYCACACICApAwA3A0ggBEEQdiEPIARBCHYhDiAFQRB2IQ0gBUEIdiEKIAIoAsQCIQYMCAsgA0EUaigCACEFIANBEGooAgAhCCADQQhqKQIAITUgA0EYaikDACIzQgODUARAIAIgM6ciBDYCcCACIAQoAhA2AnQgAkEQaiACQfAAaiIEEKEeIAIoAhAiByAHKAIAIgdBAWo2AgAgB0EASA0MIAJBCGogBBChHiACIAIpAwg3AogCIAIgAkGIAmoQoR4LIANBIGoQjAQhCyACQdgAaiACQYwCai0AADoAACACIDU3AmQgAiACKACIAjYCVCAFQRB2IQ0gBUEIdiEKIANBMmotAAAhDyADQTFqLQAAIQ4gA0Ewai0AACEEIANBLGooAgAhByADQShqLQAAIQkgA0EkaigCACEMDAcLIANBCGopAgAhNCACQdgBaiADQRBqEJUDQQAhBUEAIQQgA0EwaigCACIGBEAQqRkhBCACQYgCaiIIIAYQLSAEIAhB2AD8CgAACyADQTRqKAIAIgYEQBCgGSEFIAYpAgAhMxChGSEIIAJBiAJqIgcg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NgK0ASADQcABaiIEIANB4AFqEJsKIANB1AFqIANBlAFqKAIANgIAIAMgAykCjAE3AswBIAIgA0GYAWogBBDNFwwCCyADIAIpA6gBNwOgASADQagBaiACENkZIANBATYC5AEgA0Ho0cQANgLgASADQgE3AuwBIANBlgM2ArgBIANBAzoAvwEgAyADQbQBajYC6AEgAyADQZgBajYCtAEgAyADQb8BajYCmAEgA0HAAWoiBCADQeABahD3BCADQdQBaiADQbABaigCADYCACADIAMpAqgBNwLMASADQaABaiAEEJEQIQQgAi0AsAFBogFHDQQgAhCDDSEIIAIQiAggAiAIEMQQDAQLIAIQiAgLIAIpA6ABIQsgASgCEDUCACEMIANB2AFqIgQgA0FAaykDADcDACADQdABaiIIIANBOGopAwA3AwAgA0HIAWoiBiADQTBqKQMANwMAIAMgAykDKDcDwAEgA0HoAWpCADcDACADQYgCakEAOgAAIANCADcD4AEgA0EANgKUAiADQgA3AowCIANCgICAgIABNwP4ASADQgQ3A/ABIANCADcDgAIgA0IENwOYAkGpxugALQAAGkHAAEEEEO8bIgJFDQEgAkEANgIIIAIgAykCgAE3AhggAiAFNgIwIAIgCjYCLCACQQA6ACggAiAHNgIkIAIgAykCXDcCNCACIAEpAgA3AgwgAiALQoCAgIBwgyAMhDcCACACQRRqIAFBCGooAgA2AgAgAkEgaiADQYgBaigCADYCACACQTxqIANB5ABqKAIANgIAIABBGGogBCkDADcDACAAQRBqIAgpAwA3AwAgAEEIaiAGKQMANwMAIAAgAykDwAE3AwAgACACNgIgIANB4AFqENUNDAwLIAIQgw0hCCACEIgIIAIgCBDEEAwDC0EEQcAAEKIfAAsgAEEDOgAYIAAgBDYCACADQYABaiIAEPADIAAQrx4MAgsgAEEDOgAYIAAgBjYCAAwBCyAAQQM6ABggACAENgIACyADQdwAaiIAEK8SIAAQrR4LIAUEQCADQdgAahDKGQsgA0HUAGoQ8RkLIApFDQAgA0HQAGoQyxkLIAMtAEBBAkYNAiADQThqEPEMDAILIABBAzoAGCAAIAU2AgAMAQsgAEEDOgAYIAAgBTYCAAsgARCSFCABEMkdCyADQaACaiQAC6EWAhd/AX4jAEHg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BCkCGDcCCCAAQRBqIARBIGopAgA3AgAMBQsgBEEANgKwAiAEQcABakHA9soAIARBsAJqQcT2ygAQ8xUACyADQfsAa0EESSIGIANB2wBrIgJBBElyDQACf0EBIAJBA00gBnIgA0EjayICQRxNQQBBASACdEHrm4CAAXEbcgR/QQEFQQALDQAaQQAgA0Ewa0EKSSADQf8AS3IgA0HBAGtBGkkgA0HhAGtBGU1ycg0AGiADQf0AcUE8RwtFDQEgACAEKQOYAjcCDCAAQQI6ACQgACADNgIIIABCooCAgKCAgICAfzcCACAAQRxqIARBqAJqKQMANwIAIABBFGogBEGgAmopAwA3AgAMAwsgACAEKQOYAjcCDCAAQQE6ACQgACADNgIIIABCooCAgKCAgICAfzcCACAAQRxqIARBqAJqKQMANwIAIABBFGogBEGgAmopAwA3AgAMAgsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgA0HtAEwEQAJAIANBPGsOBw0CDgICCQwACyADQeEAaw4GAgoBAQEDAQsCQCADQfIAaw4JBgEEAQcBAQEJAAsgA0HuAEYNBAsgBEELNgLAASAEQbACaiIDIAEgBEGYAmogBEHAAWoQlQkgACADQcAA/AoAAAwPCyAAIAQpA5gCNwIMIABBBjsBJCAAQQc2AgggAEKigICAoICAgIB/NwIAIABBHGogBEGoAmopAwA3AgAgAEEUaiAEQaACaikDADcCAAwOCyAAIAQpA5gCNwIMIABBhgI7ASQgAEEMNgIIIABCooCAgKCAgICAfzcCACAAQRxqIARBqAJqKQMANwIAIABBFGogBEGgAmopAwA3AgAMDQsgACAEKQOYAjcCDCAAQYYEOwEkIABBCTYCCCAAQqKAgICggICAgH83AgAgAEEcaiAEQagCaikDADcCACAAQRRqIARBoAJqKQMANwIADAwLIAAgBCkDmAI3AgwgAEGGBjsBJCAAQQo2AgggAEKigICAoICAgIB/NwIAIABBHGogBEGoAmopAwA3AgAgAEEUaiAEQaACaikDADcCAAwLCyAAIAQpA5gCNwIMIABBhgg7ASQgAEENNgIIIABCooCAgKCAgICAfzcCACAAQRxqIARBqAJqKQMANwIAIABBFGogBEGgAmopAwA3AgAMCgsgACAEKQOYAjcCDCAA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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQTQgASgCACIDIANBu4GAgHhOG0H/AXFBAWsOugEBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AQALIABBgICAgHg2AgAMugELIABBgYCAgHg2AgAMuQELIABBgoCAgHg2AgAMuAELIABBg4CAgHg2AgAMtwELIABBhICAgHg2AgAMtgELIABBhYCAgHg2AgAMtQELIABBhoCAgHg2AgAMtAELIABBh4CAgHg2AgAMswELIABBiICAgHg2AgAMsgELIABBiYCAgHg2AgAMsQELIABBioCAgHg2AgAMsAELIABBi4CAgHg2AgAMrwELIABBjICAgHg2AgAMrgELIABBjYCAgHg2AgAMrQELIABBjoCAgHg2AgAMrAELIABBj4CAgHg2AgAMqwELIABBkICAgHg2AgAMqgELIABBkYCAgHg2AgAMqQEL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IAIgA0EoaiICIAIgA0HwAWoQrAUCQAJAIAMoAqACIgZBCEcEQCADKALMAiECIAZBAUcNASABKAIMIAUgAkEIaigCADYCACADQYQCaiACQRRqKAIANgIAIANBMGoiBCACQSxqKQIANwMAIANBOGoiByACQTRqKQIANwMAIAMgAikCADcD8AEgAyACKQIMNwL8ASADIAIpAiQ3AyggAjUCHCENNQIAIQ4gAigCICEIIAIoAkAhCSACKAJEIQogAi0APSELIAItADwhDEGpxugALQAAGkHIAEEEEO8bIgFFDQ0gASADKQPwATcCACABIAg2AiAgASADKQMoNwIkIAEgCjYCRCABIAk2AkAgASALOgA9IAEgDDoAPCABQRBqIANBgAJqKQMANwIAIAFBCGogBSkDADcCACABIA1CIIYgDoQ3AhggAUEsaiAEKQMANwIAIAFBNGogBykDADcCACADQfgAaiADQcACaikDADcDACADQfAAaiADQbgCaikDADcDACADQegAaiADQbACaikDADcDACADIAMpA6gCNwNgIAJByABBBBD4HEEBIQUMAgsgAygCpAIhASAAQQk2AgAgACABNgIEDBELIAMtAMgCIQUgA0HoAGogA0GwAmopAwA3AwAgA0HwAGogA0G4AmopAwA3AwAgA0H4AGogA0HAAmopAwA3AwAgA0HeAGogA0HLAmotAAA6AAAgAyADKQOoAjcDYCADIAMvAMkCOwFcIAMoAqQCIQQgAiEBCyAAIAQ2AgQgACAGNgIAIAAgAykDYDcDCCAAIAU6ACggACADLwFcOwApIAAgATYCLCAAQRBqIANB6ABqKQMANwMAIABBGGogA0HwAGopAwA3AwAgAEEgaiADQfgAaikDADcDACAAQStqIANB3gBqLQAAOgAADA8LIAEoAhAoAgAhBCADQfgBaiIFIAFBCGooAgA2AgAgAyABKQIANwPwASADQaACaiACIAQgBCADQfABakEAEK4DAkACQCADKAKgAiIGQQhHBEAgAygCzAIhAiAGDQEgASgCDCAFIAJBFGooAgA2AgAgA0EwaiIEIAJBIGooAgA2AgAgA0GwAWoiByACQTxqKAIANgIAIAMgAikCDDcD8AEgAyACKQIYNwMoIAMgAikCNDcDqAEgAigCCCEIIAI1AgQhDTUCACEOIAIoAiQhCSACLQAoIQogAigCLCELIAIoAjAhDEGpxugALQAAGkHAAEEEEO8bIgFFDQ0gASAINgIIIAEgAykD8AE3AgwgASADKQMoNwIYIAEgDDYCMCABIAs2AiwgASAKOgAoIAEgCTYCJCABIAMpA6gBNwI0IAEgDUIghiAOhDcCACABQRRqIAUoAgA2AgAgAUEgaiAEKAIANgIAIAFBPGogBygCADYCACADQaABaiADQcACaikDADcDACADQZgBaiADQbgCaikDADcDACADQZABaiADQbACaikDADcDACADIAMpA6gCNwOIASACQcAAQQQQ+BxBASEFDAILIAMoAqQCIQEgAEEJNgIAIAAgATYCBAwQCyADLQDIAiEFIANBkAFqIANBsAJqKQMANwMAIANBmAFqIANBuAJqKQMANwMAIANBoAFqIANBwAJqKQMANwMAIANBhgFqIANBywJqLQAAOgAAIAMgAykDqAI3A4gBIAMgAy8AyQI7AYQBIAMoAqQCIQQgAiEBCyAAIAQ2AgQgACAGNgIAIAAgAykDiAE3AwggACAFOgAoIAAgAy8BhAE7ACkgACABNgIsIABBEGogA0GQAWopAwA3AwAgAEEYaiADQZgBaikDADcDACAAQSBqIANBoAFqKQMANwMAIABBK2ogA0GGAWotAAA6AAAMDgsgAhDIBSIEBEAgBC0AAEH9AEYNAgsgAi0AsAEhBAsgBEHhAE0EQCAEQcsARg0MIARB0QBGDQIgBEHaAEcNBAwMCwJAIARB4gBrDgMCBAwACyAEQeoAaw4ECwMDAQILIAIQiAggAhCICCADQRhqIAIgASgCECgCAEEBEOECIAMoAhwhAgJAIAMoAhhBAXFFBEAgASgCDCACLQAJIQYgAigCBCEHIANByAFqIAJBGGopAQA3AQAgA0HQAWogAkEgaikBADcBACADQdgBaiACQShqKQEANwEAIAMgAikBEDcBwAEoAgAhBCACKQI0IQ0gAigCMCEFIAJBwABBCBD4HCAFQYCAgIB4Rw0BIAQhAgsgAEEJNgIAIAAgAjYCBAwGC0GpxugALQAAGkHAAEEIEO8bIgJFDQggAiAGOgAJIAJBAToACCACIAc2AgQgAiAENgIAIAJBCmogA0G6AWpBJvwKAAAgAiANNwI0IAIgBTYCMCAAIAI2AgQgAEEGNgIADAULIANBCGogAkEAENUBIAMoAgwhAiADKAIIQQFxDQMgASgCDCACKAIMIQUgAigCCCEGIAIoAgQhByADQewBaiACQRxqKAAANgAAIAMgAikAFDcA5AEoAgAhBCACQSBBBBD4HEGpxugALQAAGkEgQQQQ7xsiAkUNCCACQQE6ABAgAiAFNgIMIAIgBjYCCCACIAc2AgQgAiAENgIAIAIgAykA4QE3ABEgACACNgIEIABBAjYCACACQRhqIANB6AFqKQAANwAADAQLIARBgAFGDQELIARBzABrQf8BcUHVAEkNByAAQQg2AgAMAgsgA0EQaiACIAEoAhAoAgAQzgIgAygCFCECAkAgAygCEEEBcUUEQCADIAI2AqQCIANBBzYCoAIgA0HwAWogA0GgAmoQ4wogAygC8AFBCEcNASADKAL0ASECCyAAQQk2AgAgACACNgIEDAILIAAgA0HwAWpBMPwKAAAMAQsgAEEJNgIAIAAgAjYCBAsgARCSFCABEMkdDAULQQRByAAQoh8AC0EEQcAAEKIfAAtBCEHAABCiHwALQQRBIBCiHwALIANBoAJqIgUgBCACQQhqQQAgAigCCEEJRxsQwwEgAykDoAIiDVANASADIA03AyAgASgCECgCACEEIANBqAJqIAFBCGooAgA2AgAgAyABKQIANwOgAiADQShqIAIgBCAFIANBIGpBARCWAiADKAIoIgFBCUYEQCAAIAMoAiw2AgQgAEEJNgIADAELAkAgAUEIRwRAIAMgATYCoAIgA0GgAmoiAUEEciADQShqQQRyQSz8CgAAIANB8AFqIAEQ4woMAQsgA0EINgLwAQsgACADQfABakEw/AoAAAsgA0HQAmokAA8LQfyzxAAQqR0AC4kVAhl/An4jAEEgayILJAACQAJAAkACQAJAAkAgAygCECIKIAMoAhQiB00EQCACQSAgBSABKAK4AiISayIOQQAgBSAOTxsiFCAUQSBPGyIMNgIMIAwgAigCCCIGSw0EIAIoAgQhFSAFIBJNDQEgDEECdCICRQ0CIBVBACAC/AsADAILIABBADYCAAwFCyAFRQ0BCyAFQQJ0IgJFDQAgBEEAIAL8CwALIAtBCGogASgCJCIPKALcAhCmDyALKAIMIgYgCygCCCICTQ0BIApBAWohCCAGIAJrIQkgAkEBdEECayEGIAQgAkEDdGohAgNAIAZBAmoiBiAFTw0C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TCADIANBgAFqIgQ2AmAgAyADQeAAajYCSCADQTBqIANBQGsQ9wQgBBDKHQwBCyADQUBrEOEdQQAhBSADQfgAakGw7cAAKAIANgIAIANBqO3AACkCADcDcEKAgIT+pt7hESERA0AgAygCcCAFRgRAIANB8ABqQaDuwAAQrRMLIAMoAnQgBUECdGogET4CACARQiCIIREgAyAFQQFqIgQ2AnhBASEFIARBAkcNAAsgA0HIAGogA0H4AGooAgA2AgAgAyADKQNwNwNAIANBADoATAJAIActAAwNAAJAIAMoAkgiBCAHKAIIIgVGBEAgAygCRCIFIAUgBEECdCIEaiAHKAIEIgUgBCAFahD9D8BBAEwNAQwCCyAEIAVLDQELIANBQGsiBBDhHRCmGSEIIActAAwhCiAHKAIIIglBAnQhBQJAAkAgCUH/////A0sgBUH8////B0tyDQAgBygCBCELAn8gBUUEQEEEIQdBAAwBC0GpxugALQAAGkEEIQYgBUEEEO8bIgdFDQEgCQshBiAFBEAgByALIAX8CgAACyAEIAk2AgggBCAHNgIEIAQgBjYCAAwBCyAGIAVBjNbIABC0GgALIAggAykCQDcCACADIAo6AEwgCEEIaiIEIANByABqKQIANwIAIANB+ABqIAQoAgA2AgAgCC0ADCEFIAgpAgAhESADQf8AaiAIQQ9qLQAAOgAAIAMgETcDcCADIAgvAA07AH0gA0ECIAVrOgB8IANBgAFqIgcgA0HwAGpBEBCZCCADKAKIASEEQQQgBUEHcXZBAXEEQCADKAKAASAERgRAIAdBmO3AABD5CgsgAygChAEgBGpBLToAACADIARBAWoiBDYCiAELIARBAk8EQCAEQQF2IQcgBCADKAKEASIFakEBayEEA0AgBS0AACEJIAUgBC0AADoAACAEIAk6AAAgBEEBayEEIAVBAWohBSAHQQFrIgcNAAsLIANB6ABqIANBiAFqKAIANgIAIAMgAykCgAE3A2AgA0GYATYCXCADQQE2AkQgA0H48MAANgJAIANCATcCTCADIANB4ABqIgQ2AlggAyADQdgAajYCSCADQTBqIANBQGsQ9wQgBBDKHSADQfAAahDhHSAIQRBBBBD4HAwBCyADQUBrIgQQ4R0gA0EANgJ4IANCgICAgBA3AnAgA0Hc+MAANgJEIANCoICAgA43AkggAyADQfAAajYCQCAIIAQQkx4NBCADQThqIANB+ABqKAIANgIAIAMgAykCcDcDMAsgAyABKQMAIhI3A0AgA0HwAGogAigCBCADQUBrIAMoAjQgAygCOCACKAIIKAIwEQQAAkAgAy0AcEEERwRAIAMpA3AiEUL/AYNCBFINAQsgAyASNwNAIANB8ABqIAIoAgQgA0FAa0Hx8MAAQQEgAigCCCgCMBEEACADLQBwQQRHBEAgAykDcCIRQv8Bg0IEUg0BCyADQTBqEModDAILIAAgETcCACADQTBqEModDAILIAMgASkDADcDQCADQQhqIAcQ4g4gA0HwAGogAigCBCADQUBrIAMoAgggAygCDCACKAIIKAI4EQQAIAMtAHBBBEYNACADKQNwIhFC/wGDQgRRDQAgACARNwIADAELIABBBDoAAAsgA0GQAWokAA8LQYT5wABBNyADQdgAakH0+MAAQYj6wAAQ8AwAC8sXAgl/An4jAEGgA2siAyQAIANBIGogASgCIBDiDgJAAkACQAJAAkACQAJAIAMoAiAiBCADKAIkIgVB0MnEAEEDEIQZRQRAIAQgBUHTycQAQQMQhBkNASAEIAVB1snEAEEFEIQZDQJB28nEAEEoQYTKxAAQnBQACyABKAIkIgYoAgAhBCADIAEoAigiBzYC6AIgA0EANgLgAiADQoCAgIDAADcC2AIgA0EAOgA4IANBADoAoAIgAyAENgJoIAMgA0E4aiIENgL0AiADIANB6ABqNgLwAiADIANBoAJqNgLsAiADIAQ2AuQCIANBCGogAiADQdgCahCRAyADKAIMIQQCQAJAIAMoAghBAXEEQCADQfAAaiABQQhqKQMANwMAIANB+ABqIAFBEGopAwA3AwAgA0GAAWogAUEYaikDADcDACADIAY2ApABIAMgBzYCjAEgAyACNgKIASADIAEpAwA3A2gMAQsgBCgCBCEFIAQoAgAhCCADQZwBaiAEQQhqQTT8CgAAIANB+AFqIARBxABqKAIANgIAIAMgBCkCPDcD8AEgBEHIAEEEEPgcIANB8ABqIAFBCGopAwA3AwAgA0H4AGogAUEQaikDADcDACADQYABaiABQRhqKQMANwMAIAMgBjYCkAEgAyAHNgKMASADIAI2AogBIAMgASkDADcDaCAIQYCAgIB4Rw0BIAUhBAsgAEECNgIAIAAgBDYCBCADQegAahCLEQwGCyADIAU2AtwCIAMgCDYC2AIgA0HgAmogA0GcAWpBNPwKAAAgA0GcA2ogA0H4AWooAgAiBDYCACADIAMpA/ABNwKUAyACLQB1QSBxRQ0EIAItAHZFDQIMBAsgASgCJCIIKAIAIQQgAyABKAIoIgo2AugCIANBADYC4AIgA0KAgICAwAA3AtgCIANBADoAaCADQQA6APABIAMgBDYCnAEgAyADQegAaiIENgL0AiADIANBnAFqNgLwAiADIANB8AFqNgLsAiADIAQ2AuQCIANBEGohByADQdgCaiEFIwBB0ABrIgQkAAJAIAIoAmwiBkGAAXEiCQRAIAIgBiAJcyIGNgJsAkAgBSgCHC0AAEUEQCAEQcgAaiAFQRhqKAIANgIAIARBQGsgBUEQaikCADcDACAEQThqIAVBCGopAgA3AwAgBCAFKQIANwMwIARBKGogAiAEQTBqEOAMIAQoAiwhBSAEKAIoIQYMAQsgBEHIAGogBUEYaigCADYCACAEQUBrIAVBEGopAgA3AwAgBEE4aiAFQQhqKQIANwMAIAQgBSkCADcDMCAGQYACcUUEQCACIAZBgAJyNgJsIARBGGogBEEwaiACEKIBIAQoAhwhBSAEKAIYIQYgAiACKAJsQf99cTYCbAwBCyAEQSBqIARBMGogAhCiASAEKAIkIQUgBCgCICEGCyACIAIoAmwgCXI2AmwMAQsgBSgCHC0AAEUEQCAEQcgAaiAFQRhqKAIANgIAIARBQGsgBUEQaikCADcDACAEQThqIAVBCGopAgA3AwAgBCAFKQIANwMwIARBEGogAiAEQTBqEOAMIAQoAhQhBSAEKAIQIQYMAQsgBEHIAGogBUEYaigCADYCACAEQUBrIAVBEGopAgA3AwAgBEE4aiAFQQhqKQIANwMAIAQgBSkCADcDMCAGQYACcUUEQCACIAZBgAJyNgJsIAQgBEEwaiACEKIBIAQoAgQhBSAEKAIAIQYgAiACKAJsQf99cTYCbAwBCyAEQQhqIARBMGogAhCiASAEKAIMIQUgBCgCCCEGCyAHIAY2AgAgByAFNgIEIARB0ABqJAAgAygCFCEEAkACQCADKAIQQQFxBEAgA0HwAGogAUEIaikDADcDACADQfgAaiABQRBqKQMANwMAIANBgAFqIAFBGGopAwA3AwAgAyAINgKQASADIAo2AowBIAMgAjYCiAEgAyABKQMANwNoDAELIAQoAgghBiAEKAIEIQUgBCgCACEHIANBOGogBEEMakEw/AoAACADQTBqIARBxABqKAIANgIAIAMgBCkCPDcDKCAEQcgAQQQQ+BwgA0HwAGogAUEIaikDADcDACADQfgAaiABQRBqKQMANwMAIANBgAFqIAFBGGopAwA3AwAgAyAINgKQASADIAo2AowBIAMgAjYCiAEgAyABKQMANwNoIAdBgICAgHhHDQEgBSEECyAAQQI2AgAgACAENgIEIANB6ABqEIsRDAULIAMgBjYCpAEgAyAFNgKgASADIAc2ApwBIANBqAFqIgkgA0E4akEw/AoAACADQeABaiADQTBqKAIANgIAIAMgAykDKDcC2AEgAyAGNgLsASADIAU2AugBIAMgBzYC5AFBByELIAZBAk8EQCADQdgCaiEGAkAgA0HkAWoiBSgCCCIEBEAgBiAFKAIEIgZByAD8CgAAIARBAWtByABsIgcEQCAGIAZByABqIAf8CgAACyAFIARBAWs2AggMAQtBACAEQZTKxAAQiw4ACyADKALwAiELIANB8AFqIANB9AJqQSz8CgAAIANB4AJqIgQQkhQgBBDJHSADKALkASEHIAMoAuwBIQYgAygC6AEhBQsgAyAHNgLQAiADIAU2AsgCIAMgBTYCzAIgAyAFIAZByABsajYC1AICQAJAIAZFDQAgAyAFQcgAajYCzAIgBSgCGCIGQQdGDQAgBSkCHCEMIANB6AJqIAVBEGopAwA3AwAgA0HgAmoiBCAFQQhqKQMANwMAIAMgBSkDADcD2AIgAyAMNwL0AiADIAY2AvACIAVBJGohBSADQfwCaiAFQST8CgAAIANBoAJqIAVBJPwKAAAgBBCSFCAEEMkdDAELIAMgCikCADcDoAIgA0GSgICAeDYC2AIgAiADQaACaiADQdgCahDNF0EFIQYLQanG6AAtAAAaQTBBCBDvGyIERQ0CIAQgDDcCBCAEIAY2AgAgBEEMaiADQaACakEk/AoAACADQcgCahDiDCAINQIAIQxBqcboAC0AABogAikDoAEhDUGAAUEIEO8bIgJFDQUgAkEENgIAIAIgCzYCMCACIAEpAwA3AxAgAiANQoCAgIBwgyAMhDcDCCACQRhqIAFBCGopAwA3AwAgAkEg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NgIAIAAgAikD2AI3AhwgACAENgIoIAAgAikDwAI3AiwgACAOOgA4IABBJGogAkHgAmooAgA2AgAgAEE0aiACQcgCaigCADYCACAAQTlqIAJBpARqQSP8CgAAIABB3ABqIAJByAVqQTT8CgAAIABBoAFqIAJBkANqKAIANgIAIABBmAFqIAJBiANqKQMANwIAIAAgAikDgAM3ApABDAELIAAgBjYCDCAAICI3AgQgAEGCgICAeDYCAAsgAkHAB2okAAu/jQECMn8BfiMAQaACayINJAACQCAERQ0AIA1BCGogAiADKAJAEQAAIA0oAggiDEUNACANQRBqIQkgDSgCDCEGIwBBQGoiAiQAIAIgBjYCDCACIAw2AgggAkEcaiAMIAYoAgwRAAACQAJAAkAgAigCHEGBgICAeEcEQCACQTRqIgMgDCAGKAIQEQAAIANBBCACKAI0QQFqIgNBfyADGyIDIANBBE0bQQRBGBCCCiACKAI4IQsgAigCNEEBRg0CIAIoAjwiAyACKQIcNwIAIANBEGogAkEsaikCADcCACADQQhqIAJBJGopAgA3AgAgAkEYaiITQQE2AgAgAiADNgIUIAIgCzYCECMAQTBrIgMkACADIAY2AgggAyAMNgIEIANBDGogDCAGKAIMIg4RAAAgAygCDEGBgICAeEcEQCACQRBqIQsgBigCECEWA0ACQCALKAIIIgYgCygCAEcNACADQSRqIAwgFhEAACADKAIkQQFqIgdBfyAHGyIHIAsoAgAgCygCCCIKa00NACALIAogB0EEQRgQthMLIAsoAgQgBkEYbGoiByADKQIMNwIAIAdBEGogA0EcaikCADcCACAHQQhqIANBFGopAgA3AgAgCyAGQQFqNgIIIANBDGogDCAOEQAAIAMoAgxBgYCAgHhHDQALCyADQQRqEIUVIANBMGokACAJQQhqIBMoAgA2AgAgCSACKQIQNwIADAELIAlBADYCCCAJQoCAgIDAADcCACACQQhqEIUVCyACQUBrJAAMAQsgCyACKAI8QbiewQAQtBoACyANKAIYIQIgDSgCFCEDIA0gDUGIAmo2AoABAkAgAkECSSIMDQAgAkEVTwRAIAMhEyANQYABaiELAkAgDA0AAkACQAJAIAMoAiQiDCADKAIMSSIGRQRAQQIhFiACQQJGDQEgA0E8aiEXA0AgDCAX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DEGBgICAeEcEQCALQSxqIglBBEEDIAYoAgQgBigCAGtBGG4iCCAIQQNNG0EBaiAGKAIMIAYoAghGG0EEQSAQggogCygCMCEOIAsoAixBAUYNAiALKAI0IgggCykCDDcCACAIQRhqIAtBJGopAgA3AgAgCEEQaiALQRxqKQIANwIAIAhBCGogC0EUaikCADcCACALQQhqIhBBATYCACALIAg2AgQgCyAONgIAIAkgBkEk/AoAACMAQSBrIgYkACAGIAkQqAUgBigCAEGBgICAeEcEQANAIAsoAggiCCALKAIARgRAIAsgCEEBIAkoAgQgCSgCAGtBGG5BAWogCSgCDCAJKAIIRhtBBEEgELYTCyALKAIEIAhBBXRqIg4gBikCADcCACAOQRhqIAZBGGopAgA3AgAgDkEQaiAGQRBqKQIANwIAIA5BCGogBkEIaikCADcCACALIAhBAWo2AgggBiAJEKgFIAYoAgBBgYCAgHhHDQALCyAGQSBqJAAgB0EIaiAQKAIANgIAIAcgCykCADcCAAwBCyAHQQA2AgggB0KAgICAwAA3AgALIAtB0ABqJAAMAQsgDiALKAI0QbiewQAQtBoACyAKQRBqIAAoAtwBIAAoAuABIgsoAghBAWtBeHFqQQhqIBQgDyALKAIMEQcAIAogCigCFDYCPCAKIAooAhAiLjYCOCAKAn8CQAJAIAooAigiC0UEQEEAIQsMAQsgCigCJCIIIAtBGGxqIREgCigCNCIaQQV0IQlBACELIAooAjAhDgNAQQAhECAaBEAgCCgCECESIAkhByAOIQYDQAJAIBIgBkEMaigCACIVTQRAIAZBEGooAgAgFWogCCgCFCASak0NAQsgCCAGEMoOIBBqIRALIAZBIGohBiAHQSBrIgcNAAsLIBAgCyALIBBJGyELIAhBGGoiCCARRw0ACyARQRhHDQELQQAMAQsgEUEMaygCAAs2AmggCkEANgKQASAKQoCAgIAQNwKIASAKQfybwQA2ArABIApCoICAgA43ArQBIAogCkGIAWoiCTYCrAECQAJAAkACQCAKQegAaiAKQawBaiIHEKgdRQRAIApB2ABqIApBkAFqKAIAIho2AgAgCiAKKQKIATcDUCAKQdAAaiIGEModIAZBjKLBAEEBIBpBAmoiLxCrBiAKQcwCNgLAASAKIABBEGoiCDYCvAEg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EGooAgA2AgAgAkGgAWogC0EIaikCADcDACACIBIoAAA2AjggAiARKQIANwOIASACIAspAgA3A5gBIAIgEkEDaigAADYAOyACKQOgAiIeQoB+gyEiIAIpA5gCIh9CgICAgHCDISEgAikDkAIiJEKAgICAcIMhIyAepyEDIB+nIQcgJKchBiACKQLEAiEeIAIoAsACIQwgAigCsAIhBCACLQCoAiEFDAELIAJBmAFqIAQQlQMgAiADQShqEIwEIgU2ArgBIAIgEygAADYCOCACIBNBA2ooAAA2ADsgAikDsAEiHUKAfoMhIiACKQOoASIeQoCAgIBwgyEhIAIpA6ABIh9CgICAgHCDISMgAikDmAEhICAdpyEDIB6nIQcgH6chBgsgASAFOgAoIAEgISAHrYQ3AxggASAjIAathDcDECABICA3AwggASAbNgIAIAEgAigCODYAKSABQSxqIAIoADs2AAAgASAENgIwIAEgAikDiAE3AjQgAUE8aiACQZABaigCADYCACABIB43AkQgASAMNgJAIAEgIiADrUL/AYOENwMgIAEgFjYCYCABIB03AnQgASAINgJwIAEgAikDmAE3AkwgAUHUAGogAkGgAWopAwA3AgAgAUHcAGogFCgCADYCACABQewAaiACQcgAaigCADYCACABIAIpA0A3AmQgAkGwAmohBEEBDAELIANBCGooAgAhHCADQQRqKAIAIQYQqRkhASACQZgBaiIEIANBDGooAgAQLSABIARB2AD8CgAAIAIgBjYCsAJBAAshAyAEIAE2AgAgCiAOaiIBIAM2AgAgAUEMaiACKAKYATYCACABQQhqIBw2AgAgAUEEaiACKAKwAjYCACAKQRBqIQogFUEBayIVDQALCyAAIA02AgggACAONgIEIAAgCTYCACACQeACaiQADwsgCSACKAKgAUH8rsgAELQaAAsAC44NAgd/B34jAEEQayIGJAAgAL0iC0L/////////B4MhCSALQgBTBEAgAUEtOgAAQQEhBQsCQAJ/An8CQAJAAkAgC0I0iKdB/w9xIgJFIAlQcUUEQCACQQJJIAlCAFJyIQMgCUKAgICAgICACIQgCSACGyIJQgKGIQogCUIBgyEOIAJBtQhrQcx3IAIbIgJBAEgEQCAJQZiV5QAgAiACQYWiU2xBFHYgAkF/R2siAmoiBEEEdGsg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AugBIQsgAygC5AEhCgsgA0HMAGogA0GYAWooAgA2AgAgA0HoAGogA0GAAWopAwA3AwAgA0HwAGogA0GIAWopAwA3AwAgAyALNgJAIAMgCjYCPCADIAQ2AjggAyADKQOQATcCRCADIBI3A1ggAyAINgJUIAMgBTYCUCADIBM3AzAgAyADKQN4NwNgIANBATYCmAEgA0EANgKQASADQdgBaiIFIAIQ3QQCQAJAAkAgAygC2AEiBEEDRw0AIAUgAkG1vsAAQQEQ1gcgAygC2AEiBEEDRw0AIANBATYCmAEgA0EANgKQASAFIAIQ3QQgAygC2AEiBEEDRw0AIAUgAhC+ASADQagCaiILIANB9AFqKAIANgIAIAMgAykC7AE3A6ACIAMoAvwBIQogAygC+AEhCCADKALoASEFIAMoAuQBIQcgAygC4AEhBCADKQPYASITQgJRBEAgA0EoaiALKAIANgIAIAMgAykDoAI3AyAMAgsgA0HIAWogA0GQAmopAwA3AwAgA0HQAWogA0GYAmopAwA3AwAgA0GsAWogCygCADYCACADIAMpA4gCNwPAASADIAU2AqABIAMgBzYCnAEgAyAENgKYASADIAMpA6ACNwKkASADIAMpA4ACIhI3A7gBIAMgCjYCtAEgAyAINgKwASADIBM3A5ABIAMpA6ABIRQCQAJAAkACfwJAAkACQAJAAkACQCATpyIFQQFxBEAgAygCsAEhBCAUp0UNAyAEQQFxDQEgAykDqAFCAXwhEyADKQOYASEUDAULIAMoArABIQQgFFANASASQgAgBEEBcRshEgsgAykDmAFCACAFQQFxGyEUIAMpA6gBIRMMBAtCACETQgAhFCAEQQFxDQEMAgsgBEEBcQ0AIAMpA5gBQgF8IRRCACETDAELQgAhEyADKQOYAUIAIAVBAXEbIRQMAQtCACESQRAQghkiBEIANwMIQQAhByAEQQA2AgAgAykDMCIVQgJSBEBBASEMQQghCkEBIQtBACEFQQEMAgsgA0IANwOgAiADQgI3A6gCIANBATYClAIgAyAENgKQAiADQoCAgIAQNwOIAiADQoCAgICAATcDgAIgA0IANwP4ASADIBM3A/ABIAMgFDcD6AEgA0IANwPgASADQgE3A9gBIANBGGogA0GgAmogA0HYAWoQpQIgAygCHCEFIAMoAhghB0EAIQgM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A0cEQCADQaABaiADQcUBaikAADcDACADQagBaiADQc0BaikAADcDACADQa8BaiADQdQBaigAADYAACADIAMpAL0BNwOYASADKALYASEHIAMoAtwBIQkgCEEBRg0BIAMtALwBIQsLIAUgAykDmAE3AAUgBSAJNgIkIAUgBzYCICAFIAs6AAQgBSAINgIAIAVBHGogA0GvAWooAAA2AAAgBUEVaiADQagBaikDADcAACAFQQ1qIANBoAFqKQMANwAADAELIANBxAFqIANBowFqKQAANwIAIAVBATYCACAFIAk2AiQgBSAHNgIgIAUgAikCADcDGCADIAMpAJsBNwK8ASAFIAMpArgBNwIEIAVBDGogA0HAAWopAgA3AgAgBUEUaiADQcgBaigCADYCAAsgA0HgAWokACAELQDsASEDAkACfwJAAkACQCAEKALoASILQQNHBEAgBEGAAWogBEH8AWooAgA2AgAgBCAEKQL0ATcDeCAELwDtASAELQDvAUEQdHIhCCAEKALwASEHIAQoAoACIQUgBCgChAIhCQwBCyAEQQA2ArgCIARBADYCsAIgBEGIAWogAhD0BAJAAkAgBCgCiAEiC0EDRwRAIARBhAJqIARBnAFqKQIANwIAIARBjAJqIARBpAFqKQIANwIAIARBlAJqIARBrAFqKAIANgIAIAQgBCkClAE3AvwBIAQoAowBIgNBCHYhCCAEKAKQASEHDAELIARB6AFqIAIQvgEgBC8A9QEgBEH3AWotAABBEHRyIQggBCgC+AEhByAELQD0ASEFIAQoAvABIQsgBCkD6AEiEkICUg0BIAUhAwsgBEHgAWogBEGEAmooAgAiBTYCACAEQYABaiAFNgIAIAQgBCkC/AE3A3ggBCgCiAIhBSAEKAKMAiEJDAELIARB4AFqIARBhAJqKAIAIgk2AgAgBCAEKQL8ASIUNwPYASAEKQOIAiEVIAQpA5ACIRMgBEHQAWogBEGoAmopAwA3AwAgBEHIAWogBEGgAmopAwA3AwAgBEGAAWoiDCAJNgIAIAQgCDsAnQEgBEGfAWogCEEQdjoAACAEIAQpA5gCNwPAASAEIBQ3A3ggBCAHNgKgASAEQawBaiAMKAIANgIAIAQgBCkDeDcCpAEgBCATNwO4ASAEIBU3A7ABIAQgBToAnAEgBCALNgKYASAEIBI3A5ABIAQg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uAFqIAFBCGogAhDBBiACIBI3AgAgBiADNgKMASAGIAQ2AogBIAYoArgBIgVBA0YNACAGQTBqIAZBzAFqKQIANwMAIAZBOGogBkHUAWopAgA3AwAgBkFAayAGQdwBaigCADYCACAGIAYpAsQBNwMoIAYoAsABIQMgBigCvAEhBCAGQYgBahCmGgsgBUEBRwRAIAAgAzYCCCAAIAQ2AgQgACAFNgIAIAAgBikDKDcCDCAAQRRqIAZBMGopAwA3AgAgAEEcaiAGQThqKQMANwIAIABBJGogBkFAaygCADYCAAwBCyACIA42AgQgAiANNgIAIAZBuAFqIQQjAEHAAmsiAyQAIANBMGoiBSACEL4BAkACQAJAIAMpAzAiEkICUgRAIANB+ABqIAVByAD8CgAAAkACQCADKAJ4QQFGBEAgAygCiAFFDQEgAygCmAFFDQIgA0GsAmogA0HoAGooAgA2AgAgA0GgAmogA0H0AGooAgA2AgAgAyADKQNgNwKkAiADIAMpAmw3A5gCIAMgAykDWEIAIAMoAlAbNwOQAiADIAMpA0hCACADKAJAGzcDiAIgAyADKQM4QgAgEqdBAXEbNwOAAiADIANBgAJqEKQJIAMoAgQhByADKAIAIQUMBQsgA0HgAWpCADcDACADQdgBakIANwMAIANB6AFqQoCAgICAATcDACADQgA3A9ABIANCCDcD+AEgA0IANwPwASADQgE3A8gBIANCADcDwAEgA0IBNwOAAiADQgI3A4gCIANBGGogA0HAAWogA0GAAmoQpQIgAygCHCEHIAMoAhghBQwDCyADKQOAASESIANB4AFqQgA3AwAgA0HoAWpBADYCACADQgA3A9gBIAMgEjcD0AEgA0EANgL8ASADQoCAgICAATcC9AEgA0IINwLsASADQgE3A8gBIANCADcDwAFBqcboAC0AABpBEEEIEO8bIgVFDQYgBUIANwMIIAVBADYCACADQaACakIANwMAIANBqAJqQQA2AgAgA0IANwOYAiADQgA3A4gCIANBATYCvAIgAyAFNgK4AiADQQE2ArQCIANCCDcCrAIgA0IBNwOAAiADIBJCAXw3A5ACIANBEGogA0HAAWogA0GAAmoQpQIgAygCFCEHIAMoAhAhBQwCCyADKQOAASESIAMpA5ABIRMgA0IINwP4ASADQgA3A/ABIANCgICAgIABNwPoASADQgA3A+ABIAMgEzcD2AEgAyASNwPQASADQgE3A8gBIANCADcDwAFBqcboAC0AABpBEEEIEO8bIgVFDQUgBUIANwMIIAVBADYCACADQQE2ArwCIAMgBTYCuAIgA0KAgICAEDcDsAIgA0KAgICAgAE3A6gCIANCADcDoAIgAyASNwOQAiADQgA3A4gCIANCATcDgAIgAyATQgF8NwOYAiADQQhqIANBwAFqIANBgAJqEKUCIAMoAgwhByADKAIIIQUMAQsgA0EoaiIKIANBzABqKAIANgIAIAMgAykCRDcDICADKAJAIQcgAygCPCEFIAMoAjgiCEEDRg0BIAgEfyADKAJQIQUgAygCVCEJIAQgBzYCCCAEIAMpAyA3AgwgBEGsvcAANgIgIAQgCTYCHCAEIAU2AhggBEEUaiAKKAIANgIAQR0hBUEkBUEECyAEaiAFNgIADAILIANB+ABqEO0XCyAEIAc2AgggBCAFNgIEQQMhCAsgBCAINgIAIANBwAJqJAAgBigCvAEhBAJAIAYoArgBIgVBA0cEQCAGQdAAaiAGQcwBaikCADcDACAGQdgAaiAGQdQBaikCADcDACAGQeAAaiAGQdwBaigCADYCACAGIAYpAsQBNwNIIAYoAsABIQMMAQsgBigCwAEhAyACKQIAIRIgBkG4AWogAUEQaiACEMEGIAIgEjcCACAGIAM2AowBIAYgBDYCiAEgBigCuAEiBUEDRg0AIAZB0ABqIAZBzAFqKQIANwMAIAZB2ABqIAZB1AFqKQIANwMAIAZB4ABqIAZB3AFqKAIANgIAIAYgBikCxAE3A0ggBigCwAEhAyAGKAK8ASEEIAZBiAFqEKYaCyAFQQFHBEAgACADNgIIIAAgBDYCBCAAIAU2AgAgACAGKQNINwIMIABBFGogBkHQAGopAwA3AgAgAEEcaiAGQdgAaikDADcCACAAQSRqIAZB4ABqKAIANgIADAELIAIgDjYCBCACIA02AgAgBkG4AWohBUEAIQcjAEGgAmsiAyQAIANBKGoiBCACQc29wABBARDWBwJAAkACQCADKAIoIghBA0cNACADQQA2AoABIANBADYCeCAEIAIQ9AQgAygCKCIIQQNHDQAgAigCBCEKIAIoAgAhCSAEIAJBhL3AAEEBENYHAkACQAJAAn8CQAJ/AkACQCADKAIoIghBAWsOAwEDAAMLIAMoAjAhByADKAIsDAELIAIgCjYCBCACIAk2AgBBAAshECADQQA2AoABIANBADYCeCADQShqIAIQ9AQgAygCKCIIQQNHDQUgA0H4AGogAhC+ASADKAKcASEKIAMoApgBIQkgAygClAEhCyADKAKQASEMIAMoAowBIQ8gAygCiAEhBCADKAKAASEIIAMoAoQBIhEgAykDeCISQgJRDQEaIAMpA6ABIRMgA0HwAGogA0G4AWopAwA3AwAgA0HoAGogA0GwAWopAwA3AwAgAyADKQOoATcDYCADIBM3A1ggAyAKNgJUIAMgCTYCUCADIAs2AkwgAyAMNgJIIAMgDzYCRCADIAQ2AkAgAyARNgI8IAMgCDYCOCADIAc2AiwgAyAQNgIoIANB4ABqIQggAyASNwMwIBKnIQQCQCAQBEBBACEHIARBAXENAQwEC0EAIQcgBEEBcUUNAyADKAJQIQoCQCADKAJAQQFGBEAgAykDSCESIAMpAzghEyAKQQFxRQ0BIAMpA1ghFCADQfwBaiAIQQhqKAIANgIAIANBADYC8AEgA0KAgICAgAE3A+gBIAMgFDcD4AEgAyATNwPQASADQgE3A8gBIANCADcDwAEgAyAIKQIANwL0ASADIBI3A9gBIANBmAJqQgA3AwAgA0IANwOQAiADIBJCAXw3A4gCIAMgEzcDgAIgA0GIAWogA0GAAmoQwA0gA0IANwOAASADQgE3A3ggAyADQcABaiADQfgAahClAiADKAIEIQQgAygCACEHDAYLIApBAXENBCADKQM4IRIgA0HgAWpCADcDACADQegBakEANgIAIANCADcD2AEgAyASNwPQASADQQA2AvwBIANCgICAgIABNwL0ASADQgg3AuwBIANCATcDyAEgA0IANwPAASADQZACakIANwMAIANBmAJqQgA3AwAgA0IANwOIAiADIBJCAXw3A4ACIANBiAFqIANBgAJqEMANIANCADcDgAEgA0IBNwN4IANBEGogA0HAAWogA0H4AGoQpQIgAygCFCEEIAMoAhAhBwwECyADQgg3A/gBIANCADcD8AEgA0KAgICAgAE3A+gBIANCADcD4AEgAyATNwPQASADQgE3A8gBIANCADcDwAEgAyASNwPYASADQZgCakIANwMAIANCADcDkAIgAyASQgF8NwOIAiADIBM3A4ACIANBiAFqIANBgAJqEMANIANCADcDgAEgA0IBNwN4IANBCGogA0HAAWogA0H4AGoQpQIgAygCDCEEIAMoAgghBwwDCyADKAJAQQFGBEAgAykDOCESIAMpA0ghEyADKQNYIRQgAygCUCEEIANB/AFqIAhBCGooAgA2AgAgA0EANgLwASADQoCAgICAATcD6AEgAyAUQgAgBBs3A+ABIAMgEzcD2AEgAyASNwPQASADQgE3A8gBIANCADcDwAEgAyAIKQIANwL0ASADQZgCakIANwMAIANCADcDkAIgAyATQgF8NwOIAiADIBI3A4ACIANBiAFqIANBgAJqEMANIANCADcDgAEgA0IBNwN4IANBGGogA0HAAWogA0H4AGoQpQIgAygCHCEEIAMoAhghBwwECyADKAJQDQIgAykDOCESIANB4AFqQgA3AwAgA0HoAWpBADYCACADQgA3A9gBIAMgEjcD0AEgA0EANgL8ASADQoCAgICAATcC9AEgA0IINwLsASADQgE3A8gBIANCADcDwAEgA0GQAmpCADcDACADQZgCakIANwMAIANCADcDiAIgAyASQgF8NwOAAiADQYgBaiADQYACahDADSADQgA3A4ABIANCATcDeCADQSBqIANBwAFqIANB+ABqEKUCIAMoAiQhBCADKAIgIQcMAgsgAygCRCEKIAMoAkAhCSADKAI8IQsgAygCOCEMIAMoAjQhDyADKAIwIQQgAygCLAshByAIQQNGDQIMBAsgCBCxEyAIQQhBEBDyDAsgA0HsAGoiCBCxEyAIQQhBEBDyDAsgBSAENgIIIAUgBzYCBEEDIQgMAgsgAygCRCEKIAMoAkAhCSADKAI8IQsgAygCOCEMIAMoAjQhDyADKAIwIQQgAygCLCEHCyAIBH8gBUHOvcAANgIgIAUgCjYCHCAFIAk2AhggBSALNgIUIAUgDDYCECAFIA82AgwgBSAENgIIQSAhB0EkBUEECyAFaiAHNgIACyAFIAg2AgAgA0GgAmokACAGKAK8ASEEAkAgBigCuAEiBUEDRwRAIAZB8ABqIAZBzAFqKQIANwMAIAZB+ABqIAZB1AFqKQIANwMAIAZBgAFqIAZB3AFqKAIANgIAIAYgBikCxAE3A2ggBigCwAEhAwwBCyAGKALAASEDIAIpAgAhEiAGQbgBaiABQRhqIAIQwQYgAiASNwIAIAYgAzYCjAEgBiAENgKIASAGKAK4ASIFQQNGDQAgBkHwAGogBkHMAWopAgA3AwAgBkH4AGogBkHUAWopAgA3AwAgBkGAAWogBkHcAWooAgA2AgAgBiAGKQLEATcDaCAGKALAASEDIAYoArwBIQQgBkGIAWoQphoLIAVBAUcEQCAAIAM2AgggACAENgIEIAAgBTYCACAAIAYpA2g3AgwgAEEUaiAGQfAAaikDADcCACAAQRxqIAZB+ABqKQMANwIAIABBJGogBkGAAWooAgA2AgAMAQsgAiAONgIEIAIgDTYCACAGQbgBaiEEQQAhByMAQYADayIDJAAgA0GIAWoiBSACQe69wABBARDWBwJAAkACQAJAAn8CQCADKAKIASIIQQNGBEAgA0EANgKIAiADQQA2AoACIAUgAhD0BCADKAKIASIIQQNGDQELIANByAJqIgkgA0GkAWopAgA3AwAgA0HQAmogA0GsAWooAgA2AgAgAyADKQKcATcDwAIgAygCmAEhCiADKAKUASELIAMoApABIQcgAygCjAEhBSADQThqIAMpA8ACIhI+AgAgAyAKNgJYIAMgCzYCVCADIBI3AlwgAyADKQJUNwMwIAMoAmAhCiAJKAIADAELIANBQGsiBSACEL4BIAMpA0BCAlIEQCADQYgBaiAFQcgA/AoAAEEAIQUCQCADKAKIAUEBRw0AIAMoAqgBIQgCQAJAAkACQCADKAKYAUEBRgRAIAMpA6ABIRIgCEEBcUUNAiADKQOQASETIAMpA7ABIRQgA0G8AmogA0H4AGooAgA2AgAgAyADKQNwNwK0AiADQQA2ArACIANCgICAgIABNwOoAiADIBQ3A6ACIAMgEjcDmAIgAyATNwOQAiADQgE3A4gCIANCADcDgAIgE1BFDQEgElBFDQMgA0HIAmpCADcDACADQgA3A8ACIANCADcD2AIgAyAUQgF8NwPQAgwICyAIQQFxDQQgAykDkAEiEkIAUg0DIANCADcCiAIgA0IBNwKAAiADQdACaiEFQanG6AAtAAAaIANBgAJqIggiBzQCDCESIAc0AgghEyAHNAIEIRQgBzQCACEVQRBBCBDvGyIHRQRADA0LIAcgEjcDCCAHQQA2AgAgBUEBNgIsIAUgBzYCKCAFQoCAgIAQNwMgIAVCgICAgIABNwMYIAUgEzcDECAFIBQ3AwggBSAVNwMAIANCADcDyAIgA0IBNwPAAiADQgA3A4ACIANCAjcDiAIgA0EgaiAIIANBwAJqEKUCIAMoAiQhByADKAIgIQUMBAsgA0HQAmpCADcDACADQdgCakIANwMAIANCADcDyAIgAyATQgF8NwPAAgwGCyADKQOQASITUARAIANCCDcDuAIgA0IANwOwAiADQoCAgICAATcDqAIgA0IANwOgAiADQgA3A5ACIANCATcDiAIgA0IANwOAAiADIBI3A5gCIANB6AFqQgA3AwAgA0IANwPgASADIBJCAXw3A9gBIANCADcD0AEgA0HQAmogA0HQAWoQwA0gA0IANwPIAiADQgE3A8ACIANBEGogA0GAAmogA0HAAmoQpQIgAygCFCEHIAMoAhAhBQwDCyADQgg3A7gCIANCADcDsAIgA0KAgICAgAE3A6gCIANCADcDoAIgAyASNwOYAiADQgE3A4gCIANCADcDgAIgAyATNwOQAiADQeABakIANwMAIANB6AFqQgA3AwAgA0IANwPYASADIBNCAXw3A9ABIANB0AJqIANB0AFqEMANIANCADcDyAIgA0IBNwPAAiADQRhqIANBgAJqIANBwAJqEKUCIAMoAhwhByADKAIYIQUMAgsgA0HYAmpCADcDACADQgA3A9ACIANCADcDwAIgAyASQgF8NwPIAgwECyADQaACakIANwMAIANBqAJqQQA2AgAgA0IANwOYAiADQQA2ArwCIANCgICAgIABNwK0AiADQgg3AqwCIANCATcDiAIgA0IANwOAAiADIBI3A5ACIANB4AFqQgA3AwAgA0HoAWpCADcDACADQgA3A9gBIAMgEkIBfDcD0AEgA0HQAmogA0HQAWoQwA0gA0IANwPIAiADQgE3A8ACIANBKGogA0GAAmogA0HAAmoQpQIgAygCLCEHIAMoAighBQsgA0G4AWoiCBCxEyAIQQhBEBDyDAwDCyADQThqIANB3ABqKAIANgIAIAMgAykCVDcDMCADKAJQIQcgAygCTCEFIAMoAkgiCEEDRg0DIAMoAmAhCiADKAJkCyEJIAgEfyAEIAc2AgggBCADKQMwNwIMIARB773AADYCICAEIAk2AhwgBCAKNgIYIARBFGogA0E4aigCADYCAEEgIQVBJAVBBAsgBGogBTYCAAwDCyADQdABaiIF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IAIgDDYCoAMgAiANNgKQAyACIAA6AKUDIAIgBEEPRjoAqANBACEAIAJBADYCjAMgAiASKQIANwKUAyACIBEpAgA3A4ADIAJBAToApwMgAiAPOgCkAyACIAU6AKYDIAcgAyABEPMBDAkLIAICfyACQcgDaiABQQFxRQ0AGgJAAkACQAJAAkAgAigCyANBAWsOBAECAwQACyACQdADagwECyACQdADagwDCyACQdADagwCCyACQcwDagwBCyACQdADagspAgA3A6gBIAJB3oCAgHg2AtgCIAJBqAFqIAJB2AJqEJEQIQAgAy0AsAFBogFGDQEMAgsgAiAMNgKoASACIAM1AqQBPgKsASACQeOAgIB4NgLYAiACQagBaiACQdgCahCRECEAIAMtALABQaIBRw0BCyADEIMNIQEgAxCICCADIAEQxBALIAdBCTYCACAHIAA2AgQgAkHAA2oQ0hkLQQEhAAwECwJAAkAgAEUEQCACAn8gAkGAAWogAigCeEEBRw0AGgJAAkACQAJAAkAgAigCgAFBAWsOBAECAwQACyACQYgBagwECyACQYgBagwDCyACQYgBagwCCyACQYQBagwBCyACQYgBagspAgAiHDcDuAMgAkHYAmogAxDOBiACKALcAiEBIAIoAtgCIgRBAkYiAARAIAdBCTYCACAHIAE2AgQMBwsgAkGABGogAkH4AmopAwAiGzcDACACQfgDaiACQfACaikDACIdNwMAIAJB8ANqIAJB6AJqKQMAIh43AwAgAkHQA2ogHjcDACACQdgDaiAdNwMAIAJB4ANqIBs3AwAgAiACKQPgAiIbNwPoAyACIAE2AsQDIAIgBDYCwAMgAiAbNwPIAyALBEAgAkGPgICAeDYC2AIgAiAcNwOoASADIAJBqAFqIAJB2AJqEM0XCyACQcADahCjDQ0BDAULIAJB2AJqIgBBBHIgAxDZGSACQTE2AuwCIAJBwNTEADYC6AIgAkGwgICAeDYC2AIgAiADKQOoATcDwAMgAkHAA2ogABCRECEAIAMtALABQaIBRw0BIAMQgw0hASADEIgIIAMgARDEEAwBCyACQeKAgIB4NgLYAiACIBw3A6gBIAMgAkGoAWogAkHYAmoQzRcMAwsgB0EJNgIAIAcgADYCBAtBASEIC0EBIQAMAgsgAkEgaiAJQQhqEOIOAkAgAigCICIJ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7QEgBy0AEEEERwRAIAcpAxAiEkL/AYNCBFINAgtBACEICyAHQShqIAEgAiAIIAUQ+AkgBy0AKEEERg0BIAcpAygiEkL/AYNCBFENASAAIBI3AgAMAgsgACASNwIADAELIABBBDoAAAsgB0FAayQAC5UMAgZ/An4jAEGAAmsiAiQAAkACQCABKAIAIgNBCUcEQAJAAkACQAJAAkACQAJAAkBBASADQQJrIgUgBUEHTxtBAWsOBgECAwQFBgALQQIhBiABKQMIIghCA4NQRQ0GIAIgCKciATYC2AEgAiABKAIQNgLcASACQRBqIAJB2AFqIgEQoR4gAigCECIEIAQoAgAiBEEBajYCACAEQQBIDQkgAkEIaiABEKEeIAIgAikDCDcC4AEgAiACQeABahChHgwGCyABKAIUIQcgASgCECEFIAEpAxAiCEIDg1AEQCACIAinIgY2AtgBIAIgBigCEDYC3AEgAkFAayACQdgBaiIGEKEeIAIoAkAiBCAEKAIAIgRBAWo2AgAgBEEASA0JIAJBOGogBhChHiACIAIpAzg3AuABIAJBMGogAkHgAWoQoR4LQQEhBiADQQFxBEAQlRkhAyACIAEoAgQiASkDADcD4AEgAkHoAWoiBCABQQhqEFEgA0EYaiACQfgBaikDADcDACADQRBqIAJB8AFqKQMANwMAIANBCGogBCkDADcDACADIAIpA+ABNwMADAYLQQAhBiABKQMIIghCA4NCAFINBSACIAinIgE2AtgBIAIgASgCEDYC3AEgAkEoaiACQdgBaiIBEKEeIAIoAigiBCAEKAIAIgRBAWo2AgAgBEEASA0IIAJBIGogARChHiACIAIpAyA3AuABIAJBGGogAkHgAWoQoR4MBQsgASkDCCIIQgODUARAIAIgCKciAzYC2AEgAiADKAIQNgLcASACQfAAaiACQdgBaiIFEKEeIAIoAnAiAyADKAIAIgNBAWo2AgAgA0EASA0IIAJB6ABqIAUQoR4gAiACKQNoNwLgASACQeAAaiACQeABahChHgsgASgCFCEHIAEoAhAhBUEEIQYgASkDECIJQgODQgBSDQQgAiAJpyIBNgLYASACIAEoAhA2AtwBIAJB2ABqIAJB2AFqIgEQoR4gAigCWCIEIAQoAgAiBEEBajYCACAEQQBIDQcgAkHQAGogARChHiACIAIpA1A3AuABIAJByABqIAJB4AFqEKEeDAQLIAEpAwgiCEIDg1AEQCACIAinIgM2AtgBIAIgAygCEDYC3AEgAkGgAWogAkHYAWoiBRChHiACKAKgASIDIAMoAgAiA0EBajYCACADQQBIDQcgAkGYAWogBRChHiACIAIpA5gBNwLgASACQZABaiACQeABahChHgsgASgCFCEHIAEoAhAhBUEFIQYgASkDECIJQgODUEUNAyACIAmnIgE2AtgBIAIgASgCEDYC3AEgAkGIAWogAkHYAWoiARChHiACKAKIASIEIAQoAgAiBEEBajYCACAEQQBIDQYgAkGAAWogARChHiACIAIpA4ABNwLgASACQfgAaiACQeABahChHgwDCyABKQMQIQkgASkDCCIIQgODUARAIAIgCKciATYC2AEgAiABKAIQNgLcASACQbgBaiACQdgBaiIBEKEeIAIoArgBIgUgBSgCACIFQQFqNgIAIAVBAEgNBiACQbABaiABEKEeIAIgAikDsAE3AuABIAJBqAFqIAJB4AFqEKEeCyAJQiCIpyEHIAmnIQVBBiEGDAILEKYZIQUgASgCECIDLQAMIQYgAkHgAWoiBCADEIkMIAUgAikC4AE3AgAgAiAGOgDsASAFQQhqIAJB6AFqKQIANwIAIAEpAwgiCEIDg1AEQCACIAinIgE2AtgBIAIgASgCEDYC3AEgAkHQAWogAkHYAWoiARChHiACKALQASIGIAYoAgAiBkEBajYCACAGQQBIDQUgAkHIAWogARChHiACIAIpA8gBNwLgASACQcABaiAEEKEeC0EHIQYMAQsQlRkhAyACIAEoAgQiASkDADcD4AFBCCEGIAJB6AFqIgUgAUEIahBRIANBGGogAkH4AWopAwA3AwAgA0EQaiACQfABaikDADcDACADQQhqIAUpAwA3AwAgAyACKQPgATcDAAsgACAHNgIUIAAgBTYCECAAIAg3AwggACADNgIEIAAgBjYCAAwBCyAAQQk2AgALIAJBgAJqJAAPCwALtQsBCX8jAEGgAWsiByQAAkACQCACRQRAQQAhBAwBCyAHQQA2AgwgB0KAgICAEDcCBCAAQRRqIQwgAygCECIJIAMoAhRqIQ0gBCAFQQV0aiEOIAdB1ABqIQhBACEFAkADQCAEQRRrIQQDQCAEQRRqIgogDkYNAiAEQSBqIQQgAyAK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AjQgAyAPNwIIIANBEGogDTYCACADIAY2AjAgAyAINgIsIAMgEDcCJCADIAStIAmtQiCGhDcCHCADIAU2AhggA0HEAGogAkFAaygCADYCACADQTxqIAJBOGopAwA3AgAgAiAKQQFqNgIgIAEtALABIgNBAUYNAAJAIANBB0cEQCACIAEpA6gBNwOoASACQbQBaiABENkZIAJBATYCfCACQcj9xAA2AnggAkIBNwKEASACQZYDNgLEASACQQc6AM8BIAIgAkHAAWo2AoABIAIgAkHIAWo2AsABIAIgAkHPAWo2AsgBIAJByABqIgQgAkH4AGoQoQogAkHcAGogAkG8AWooAgA2AgAgAiACKQK0ATcCVCACQagBaiAEEJEQIQMgAS0AsAFBogFGDQEMAwsgARCICCAFQQJHDQEgAS0AsAFBAUcNASACIAEpA6ABNwNIIAJBuoCAgHg2AnggASACQcgAaiACQfgAahDNFwwBCwsgARCDDSEEIAEQiAggASAEEMQQCyAAQYCAgIB4NgIAIAAgAzYCBAsgAkEYaiIAEKQXIAAQrh4LIAJB0AFqJAALwIEBAg9/BX4jAEEgayIIJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQQFrDhIBAgMEBQYHCAkKCwwNDg8QERIACyAIQQhqIAIgAUEEakEAELwDIAgtAAhBBEYNEiAIKQMIIhJC/wGDQgRRDRIgACASNwIADBoLIAhBCGogAUEEaiACEJ4LIAgtAAhBBEYNGCAIKQMIIhJC/wGDQgRRDRggACASNwIADBkLIAhBCGohBCABQQRqIQYjAEEgayIDJAAgA0EQaiACKAIEIAIoAggoAlARAAACQAJAIAMtABBBBEYNACADKQMQIhJC/wGDQgRRDQAgBCASNwIADAELIANBEGogAiAGKQIAIhKnQQAQkwECQCADLQAQQQRGDQAgAykDECITQv8Bg0IEUQ0AIAQgEzcCAAwBCyADQQE2AhAgAyASNwIUIANBCGogAigCBCADQRBqQeLWwABBCCACKAIIKAIcEQQAAkAgAy0ACEEERg0AIAMpAwgiEkL/AYNCBFENACAEIBI3AgAMAQsgA0EANgIQIANBCGogAigCBCADQRBqIAIoAggoAhQRAwAC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ASAFKQMoIhJC/wGDQgRRDQEgDSASNwIADAILIA0gEzcCAAwBCyANQQQ6AAALIAVBQGskAAJAIActABhBBEYNACAHKQMYIhJC/wGDQgRRDQAgCiASNwIADAELAkACQCAVQoCAgIAQVA0AIAdBIGogAigCBCAVQiCIp0EBayACKAIIKAJMEQMAIActACBBBEYNACAHKQMgIhJC/wGDQgRSDQELIAdBIGogAigCBCAHQQxqQf/VwABBASACKAIIKAJEEQQAAkAgBy0AIEEERg0AIAcpAyAiEkL/AYNCBFENACAKIBI3AgAMAgsgCkEEOgAADAELIAogEjcCAAsgB0EwaiQAIAgtAAhBBEYNECAIKQMIIhJC/wGDQgRRDRAgACASNwIADBELIAhBCGohBCMAQTBrIgMkACADQSBqIAIgAUEEaiIFKAIAIgZBABCTAQJAAkAgAy0AIEEERg0AIAMpAyAiEkL/AYNCBFENACAEIBI3AgAMAQsCQAJAAkAgBkUNACADQSBqIAIoAgQgBiACKAIIKAJMEQMAIAMtACBBBEYNACADKQMgIhJC/wGDQgRSDQELIANBADYCDCADQShqIANBFGooAgA2AgAgAyADKQIMNwMgIANBGGogAigCBCADQSBqQbLWwABBBSACKAIIKAIcEQQAIAMtABhBBEYNASADKQMYIhJC/wGDQgRRDQEgBCASNwIADAILIAQgEjcCAAwBCwJAAkAgAiAFKAIIIgYQ8AQiBUUEQCAGELgJDQEgAi0AFQ0CIANBIGogAigCBCACKAIIKAIYEQAAIAMtACBBBEYNAiADKQMgIhJC/wGDQgRRDQIgBCASNwIADAMLIANBKGogA0EUaigCADYCACADIAMpAgw3AyAgA0EYaiACKAIEIANBIGpBjdbAAEEBIAIoAggoAkQRBAAgAy0AGEEERg0BIAMpAxgiEkL/AYNCBFENASAEIBI3AgAMAgsgA0EgaiACKAIEIAIoAggoAhgRAAAgAy0AIEEERg0AIAMpAyAiEkL/AYNCBFENACAEIBI3AgAMAQsgA0EgaiAGIAIQXwJAIAMtACBBBEYNACADKQMgIhJC/wGDQgRRDQAgBCASNwIADAELAkAgBUUNACADQShqIANBFGooAgA2AgAgAyADKQIMNwMgIANBGGogAigCBCADQSBqQY7WwABBASACKAII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NwJUIAJBKGogAxCRECEDIAEtALABQaIBRg0BDAkLIAEQiAggAkHYAWogAUGAgICgAhCFFCACKALYAUETRg0BQanG6AAtAAAaQThBCBDvGyIHDQIMDAsgARCDDSEFIAEQiAggASAFEMQQDAcLIAIoAtwBIQEgAEEANgIMIAAgATYCAAwHCyAHIAJB2AFqQTj8CgAAIAEtAG9BBHENBCACQQA2AogBIAEtALABQdcARw0EIAJBjAFqIQoDQCABEIgIAkACQAJAIAEtALABQd4ARwRAIAJB2AFqIAFBgICAoAIQhRQgAigC3AEhAyACKALYASIFQRNGDQEgAkGQAWoiCCACQeABakEw/AoAACACKAKIAUUNAiACQdABaiACQYwBaigCADYCACACQcgBaiACQYQBaikCADcDACACIAIpAnw3A8ABQThBCBCNGSIGIAM2AgQgBiAFNgIAIAZBCGogCEEw/AoAACABIAJBwAFqIAYQ1g0MBwsCQCABKAJsIgNBgICAIHFFBEAgASADQYCAgCByNgJsIAJB2AFqIAEQnwEgASABKAJsQf///19xNgJsDAELIAJB2AFqIAEQnwELIAIoAtgBIQMgAigC5AEiCA0CCyAAQQA2AgwgACADNgIAIAIoAogBIgAEQCACKAKEASIBEKkBIAFB2ABBCBD4HCAAEKkCIABBOEEIEPgcIAoQ9RkLIAcQqQIgB0E4QQgQ+BwMCQsgAkHIAGogAkGQAWpBMPwKAAAMBQsgAigC6AEhCSACKQLcASELAkAgAigCiAEEQEGpxugALQAAGkE4QQgQ7xsiBUUNDCAFIAk2AhQgBSAINgIQIAUgCzcDCCAFIAM2AgQgBUEINgIAIAEgAkH8AGogBRDWDQwBCyACIAk2AowBIAIgCDYCiAEgAiALNwKAASACIAM2AnwLIAEtALABQdcARg0ACwwBCyACQQhqIQUjAEEgayIBJAAgASAEKQMANwMAQanG6AAtAAAaQQRBBBDvGyIDRQRAQQRBBBCiHwALIAMgBDYCACABIAM2AgwgAUEwNgIUIAFB7e/EADYCECABQbiBgIB4NgIIIAEgBSkCADcDGCABIAFBCGoQkRAhBCABQSBqJAAgAEEANgIMIAAgBDYCAAwHCyACKAKIAUUNAiACQdABaiACQYwBaigCADYCACACQcgBaiACQYQBaikCADcDACACIAIpAnw3A8ABC0EIIQUgAkHQAGogAkHMAWopAgA3AwAgAiACKQLEATcDSCACKALAASEDC0GpxugALQAAGkE4QQgQ7xsiBkUNBSAGIAM2AgQgBiAFNgIAIAZBCGogAkHIAGpBMPwKAAALIAAgBjYCECAAIAc2AgwgACAENgIIIAAgATUCpAFCIIYgDIQ3AgAMAwsgAEEANgIMIAAgAzYCAAsgBBCpASAEQdgAQQgQ+BwMAQsgAEEANgIMIAAgBDYCAAsgAkGQAmokAA8LQQhBOBCiHwAL9ksCHH8IfiMAQfABayIHJAAgASkDqAEiH0L/////D4MhIyAfpyEPAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AsAEiA0HjAGsOBAMCAgABCyABEIgIIAdBADYCiAEgByABNQKkAUIghiAjhDcCjAEgB0EoaiABIAdBiAFqQQFBABCdCCAHKAIsIQMgBygCKCEFDAgLIANB3wBGDQILIAdBCGohHiMAQaABayIJJAAgASkDuAEiH6cgASkDqAEiIKciAiAfQiCIp0ZxIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtALABIgNB2QBNBEAgA0E/TQRAAkAgAw4FAw8EDwUACyADQRBHIANBIkdxDQ4jAEGwAWsiCyQAIAEgAq0iJEIghkIBhDcDACABEIgIIAEtALABQcMARgRAIAFCADcDACMAQSBrIgUkACABKQMIIR8gAUEJNgIIIAVBGGogAUEYaikDADcDACAFQRBqIAFBEGopAwA3AwAgBSAfNwMIIB+nQQVHBEAgBUEIahCUG0GopcUAQShBzKfFABCcFAALIAUpAxAhHyALQdgAaiIDIAUpAxg3AwggAyAfNwMAIAVBIGokACABEIgIIAsgCykDYDcDGCALKQNYISYgATUCpAEgC0EQaiALQRhqEOIOIAsoAhQhAyALKAIQIQUgC0HQAGoiHUHw7cQAKQIANwMAIAtB6O3EACkCADcDSAJAIANFDQAgAyAFaiEQA0ACfyAFLAAAIgZBAE4EQCAGQf8BcSENIAVBAWoMAQsgBS0AAUE/cSEDIAZBH3EhCCAGQV9NBEAgCEEGdCADciENIAVBAmoMAQsgBS0AAkE/cSADQQZ0ciEDIAZBcEkEQCADIAhBDHRyIQ0gBUEDagwBCyAIQRJ0QYCA8ABxIAUtAANBP3EgA0EGdHJyIg1BgIDEAEYNAiAFQQRqCyEFIAtB4ABqIhEgHSkDADcDACALIAspA0g3A1ggCyANNgJoIAtBMGohGiMAQRBrIhUkACALQdgAaiIDQRBqIRJBACEEIAMoAgAiCkEIayEGIAMoAgQiDiAEQQAgDSANQeQAayIIQRVLQQEgCHRBqYSaAXFFchsiFmpB3cvdnnlsQQ93IghxIQ0gCK0iIUIZiEKBgoSIkKDAgAF+ISACQAJAA0ACQCAKIA1qKQAAIiUgIIUiH0J/hSAfQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIh9QRQRAA0AgBiAfeqdBA3YgDWogDnEiCEEDdGsoAgAgFkYNAiAfQgF9IB+DIh9QRQ0ACwsgJSAlQgGGg0KAgYKEiJCgwIB/g1BFDQIgDSAEQQhqIgRqIA5xIQ0MAQsLIBogAzYCBCAaIApBACAIa0EDdGo2AgBBgIDEACEWDAELIAMoAghFBEAgFUEIaiEMQQAhHCMAQdAAayITJAAgEyASNgIcIAMoAgwhGyATIBNBHGo2AiACQAJAAkACQAJAIBsgG0EBaiIUTQRAIAMoAgQiCCAIQQFqQQN2QQdsIAhBCEkbIghBAXYgFEkEQCAIQQFqIgggFCAIIBRLGyIIQQhJDQIgCEH/////AUsNA0F/IAhBA3RBB25BAWtndkEBaiEUDAQLIAMgE0EgakGQpMcAQQgQ4gIMBAsQoBIgEygCDCEUIBMoAgghFwwEC0EEQQggCEEESRshFAwBCxCgEiATKAIUIRQgEygCECEXDAILIBNBQGsgA0EQaiIGQQhBCCAUEJUIIBMoAkQhFyATKAJAIhhFBEAgEygCSCEUDAILIBMpAkghHyAXQQlqIggEQCAYQf8BIAj8CwALIBMgH0IgiD4CPCATIB+nIg42AjggEyAXNgI0IBMgGDYCMCATQoiAgICAATcCKCATIAY2AiRBACEUIBsEQCAYQQhqIRIgAygCACIKKQMAQn+FQoCBgoSIkKDAgH+DISADQCAgUARAA0AgFEEIaiEUIApBCGoiCikDAEKAgYKEiJCgwIB/gyIfQoCBgoSIkKDAgH9RDQALIB9CgIGChIiQoMCAf4UhIAsgEygCHBogGCADKAIAICB6p0EDdiAUaiIEQQN0a0EIaygCAEHdy92eeWxBD3ciBiAXcSIZaikAAEKAgYKEiJCgwIB/gyIfUARAQQghDQNAIA0gGWohCCANQQhqIQ0gGCAIIBdxIhlqKQAAQoCBgoSIkKDAgH+DIh9QDQALCyAgQgF9ICCDISAgGCAfeqdBA3YgGWogF3EiGWosAABBAE4EQCAYKQMAQoCBgoSIkKDAgH+DeqdBA3YhGQsgGCAZaiAGQRl2Igg6AAAgEiAZQQhrIBdxaiAIOgAAIBggGUF/c0EDdGogAygCACAEQX9zQQN0aikAADcAACAbQQFrIhsNAAsgAygCDCEUCyATIBQ2AjwgEyAOIBRrNgI4A0AgAyAcaiIUKAIAIQYgFCATIBxqQTBqIggoAgA2AgAgCCAGNgIAIBxBBGoiHEEQRw0ACyATQSRqEJYRC0GBgICAeCEXCyAMIBQ2AgQgDCAXNgIAIBNB0ABqJAALIBogAzYCCCAaICE3AwALIBogFjYCDCAVQRBqJAACQCALKAI8IgZBgIDEAEcEQCALKAI4IhIoAgAiDiASKAIEIgQgCykDMKciCHEiDWopAABCgIGChIiQoMCAf4MiH1AEQEEIIRYDQCANIBZqIQMgFkEIaiEWIA4gAyAEcSINaikAAEKAgYKEiJCgwIB/gyIfUA0ACwsgDiAfeqdBA3YgDWogBHEiDWosAAAiFkEATgRAIA4gDikDAEKAgYKEiJCgwIB/g3qnQQN2Ig1qLQAAIRYLIA0gDmogCEEZdiIDOgAAIA4gDUEIayAEcWpBCGogAzoAACASIBIoAgggFkEBcWs2AgggEiASKAIMQQFqNgIMIA4gDUEDdGsiA0EEa0EBNgIAIANBCGsgBjYCAAwBCyALKAIwQQRrIgMgAygCAEEBajYCAAsgHSARKQMANwMAIAsgCykDWDcDSCAFIBBHDQALC0IghiEiIAtBKGogHSkDADcDACALIAspA0g3AyAjAEEQayIKJAAgCkEIaiERQeDpxAAoAgBB3cvdnnlsQQ93rSEfQQAhDkEAIRIjAEEQayIQJAAgC0EgaiIMKAIAIgRBCGshCCAfQhmIQv8Ag0KBgoSIkKDAgAF+ISAgDCgCBCIGIB+ncSEVQeDpxAAoAgAhBQJ/A0ACQCAEIBVqKQAAIiEgIIUiH0J/hSAfQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIh9QRQRAA0AgBSAIIB96p0EDdiAVaiAGcSIDQQN0aygCAEYNAiAfQgF9IB+DIh9QRQ0ACwtBgIDEACAhICFCAYaDQoCBgoSIkKDAgH+DUEUNAhogFSAOQQhqIg5qIAZxIRUMAQsLIBAgBEEAIANrQQN0aiIGNgIMQYABIRUgDCgCACIIIAggEEEMaigCAGtBA3UiA2oiBSkAACIfIB9CAYaDQoCBgoSIkKDAgH+DeqdBA3YgCCAMKAIEIANBCGtxaiIDKQAAIh8gH0IBhoNCgIGChIiQoMCAf4N5p0EDdmpBB00EQCAMIAwoAghBAWo2AghB/wEhFQsgBSAVOgAAIANBCGogFToAACAMIAwoAgxBAWs2AgwgBkEEaygCACESIAZBCGsoAgALIQMgESASNgIEIBEgAzYCACAQQRBqJAAgCigCDCEFIAtBCGoiAyAKKAIIQYCAxABHNgIAIAMgBTYCBCAKQRBqJAAgCygCCARAIAtB84CAgHg2AlggCyAiICSENwMwIAEgC0EwaiALQdgAahDNFwsgC0HYAGoiCCALQSBqIgMoAgw2AhggCCADKAIAIgU2AhAgCCAFQQhqNgIIIAggBSADKAIEakEBajYCDCAIIAUpAwBCf4VCgIGChIiQoMCAf4M3AwACQAJAA0BBACENIAtB2ABqIgMoAhgEfwJAIAMpAwAiH1BFBEAgAygCECEIDAELIAMoAhAhCCADKAIIIQUDQCAIQUBqIQggBSkDACAFQQhqIQVCgIGChIiQoMCAf4MiH0KAgYKEiJCgwIB/UQ0ACyADIAg2AhAgAyAFNgIIIB9CgIGChIiQoMCAf4UhHwsgAyAfQgF9IB+DNwMAIAggH3qnQfgAcWshBSADIAMoAhhBAWs2AhggBUEEayENIAVBCGsFQQALIQMgCyANNgIEIAsgAzYCACALKAIAIgNFDQEgCygCBCgCAEECSQ0ACyADKAIAIQMgC0HygICAeDYCMCALIAM2AjQgCyAiICSEIh83A0ggASALQcgAaiALQTBqEM0XDAELICIgJIQhHwsgCyALKQMYNwN4IAsgJjcDcCALIB83A2ggC0EFNgJgIAtBDzYCWCALQdgAahDhFSEFIAtBIGpBCEEIEIgSCyALQbABaiQAIAUiA0UNDgwLCyADQUBqDgcEBAQNDQgJDQsCQCADQeQAaw4HBA0NDQYNBAALAkAgA0HaAGsOBAQNDQUACyADQfgARg0GDAwLIAlBADYCSCAJQQhqIAEgDyAJQcgAahBJIAkoAgwhAyAJKAIIIQUMDAsgCUHIAGogASAJEMsUIAkoAkhBJkYEQEEBIQUgCSgCTCEDDAwLQanG6AAtAAAaQdgAQQgQ7xsiA0UNCCADIAlByABqQdgA/AoAAAwHCyAJQRBqIQ8jAEEQayIIJAACQCABKAJsIgJBgIAEcSIDBEAgASACIANzNgJsIAhBCGogARCZAiAIKAIMIQUgCCgCCCENIAEgASgCbCADcjYCbAwBCyAIIAEQmQIgCCgCBCEFIAgoAgAhDQsgDyANNgIAIA8gBTYCBCAIQRBqJAAgCSgCFCEDIAkoAhAhBQwKCyAJQShqIAEQ/gMgCSgCKEEHRgRAQQEhBSAJKAIsIQMMCgsgCUHoAGogCUFAaykDADcDACAJQeAAaiAJQThqKQMANwMAIAlB2ABqIAlBMGopAwA3AwAgCSAJKQMoNwNQIAlBDzYCSCAJQcgAahDhFSEDDAULIAlBADYCKCAJQQA2AlAgCUKAgICAwAA3AkggCUEYaiABIAlBKGoiAiACIAlByABqEJMGIAkoAhwhAyAJKAIYIQUMCAsgARCICCABNQKkASEfIAlBADYCSCAJICBC/////w+DIB9CIIaENwJMIAlByABqEOEVIQMMBwsgCUEgaiEEIA8hAyMAQcABayIMJAACQAJAAkACQAJAIAEQyAUiBUUNACAFLQAAQd0ARw0AIAEQyAUaIAEoAnhBCkYNACABLQCZAUEBcUUNAQtBAiENIANFDQMgAS0AdUEgcUUNAiABEMgFIgNFDQIgAy0AAEESRg0BDAILIAxBCGohCCMAQeAAayIGJAACQCABLQCwAUH4AEcEQCAGIAEpA6gBNwMIIAZBFGogARDZGUEBIQUgBkEBNgI8IAZB6NHEADYCOCAGQgE3AkQgBkGWAzYCXCAGQfgAOgBXIAYgBkHYAGo2AkAgBiAGQdAAajYCWCAGIAZB1wBqNgJQIAZBIGoiAyAGQThqEPcEIAZBNGogBkEcaigCADYCACAGIAYpAhQ3AiwgBkEIaiADEJEQIQ0gAS0AsAFBogFHDQEgARCDDSEDIAEQiAggASADEMQQDAELIAEpA6gBIR8gARCICCAGQQA2AlggBkEBNgIgIAYgHz4CJCAGQQA2AkAgBkKAgICAwAA3AjggBiABIAZB2ABqIAZBIGogBkE4ahCTBiAGKAIEIQ0gBigCACEFCyAIIAU2AgAgCCANNgIEIAZB4ABqJAAgDCgCDCEDIAwoAgghDQwCCyAMQRBqIQ4jAEHwA2siCiQAAkAgAS0AdUEgcUUEQCAOQYCAgIB4NgIMDAELIAEoAmwhEiAKQQhqIAEQsAICQCASQQJxRQ0AIAooAmwiBigCCCIDQf////8HTw0SIAYoAhRFDQAgAw0TIAZBfzYCCCAKKAJoIhEoAggNFCARQX82AgggBigCECEFIBFBDGogBigCFCIIEMgYIAhBAnQiAwRAIBEoAhAgESgCFEECdGogBSAD/AoAAAsgBkEANgIUIBEgESgCFCAIajYCFCARIBEoAghBAWo2AgggBiAGKAIIQQFqNgIICyAKIBJBAXI2AnQgCigCsAEhBSAKQQhqIgMQiAggCkHoAWogAyAFENwHAkACQAJAAkAgCigC9AFBgICAgHhrDgICAQALIApBkAJqIgMgCkEIakHgAfwKAAAgARC6CCABIANB4AH8CgAAAkAgASgCbCIIQQJxRQ0AIAEoAmQiESgCCCIDQf////8HTw0VIBEoAhRFDQAgAw0WIBFBfzYCCCABKAJgIhAoAggNFyAQQX82AgggESgCECEFIBBBDGogESgCFCIGEMgYIAZBAnQiAwRAIBAoAhAgECgCFEECdGogBSAD/AoAAAsgEUEANgIUIBAgECgCFCAGajYCFCAQIBAoAghBAWo2AgggESARKAIIQQFqNgIICyABIAhBfnEgEkEBcXI2AmwgDiAKQegBakEo/AoAAAwDCyAOQYCAgIB4NgIMIAooAugBIgMQsQQgA0EgQQgQ+BwMAQsgDkGAgICAeDYCDAsgCkEIahC6CAsgCkHwA2okACAMKAIcQYCAgIB4Rg0AIAxBQGsiA0EEciAOQSj8CgAAIAxBEjYCQCADEOEVIQNBACENDAELIAEQyAUiA0UNACADLQAADQAgARDIBRogASgCeEEKRg0AIAEtAJkBQQFxDQAgDEH4ADoAPyABLQCwASAMIAxBP2o2ApwBQfgARwRAIAwgASkDqAE3A6ABIAxBrAFqIAEQ2RlBASENIAxBATYCRCAMQaToxAA2AkAgDEIBNwJMIAxBlgM2ArwBIAwgDEG4AWo2AkggDCAMQZwBajYCuAEgDEEQaiIDIAxBQGsQngogDEEkaiAMQbQBaigCADYCACAMIAwpAqwBNwIcIAxBoAFqIAMQkRAhAyABLQCwAUGiAUcNASABEIMNIQUgARCICCABIAUQxBAMAQsgARCICCABKQOgASEfIAxBATYCQCAMIB83AkQgDCABQQEgDEFAaxBJIAwoAgQhAyAMKAIAIQ0LIAQgAzYCBCAEIA02AgAgDEHAAWokACAJKAIgIgVBAkYNBSAJKAIkIQMMBgsgCUEoaiABQQAQjwggCSgCKCEDIAkoAjAiD0GAgICAeEYNAyAJKAIsIQIgCUHoAGogCUHEAGooAgA2AgAgCUHgAGogCUE8aikCADcDACAJIAkpAjQ3A1ggCSAPNgJUIAkgAjYCUCAJIAM2AkwgCUEQNgJIIAlByABqEOEVIQMMBQsgCUEoaiEPAkAgASgCbCICQYCABHEiAwRAIAEgAiADczYCbCAPIAFBABChDCABIAEoAmwgA3I2AmwMAQsgDyABQQAQoQwLIAkoAighAyAJKAIwIg9BgICAgHhGDQIgCSgCLCECIAlB6ABqIAlBxABqKAIANgIAIAlB4ABqIAlBPGopAgA3AwAgCSAJKQI0NwNYIAkgDzYCVCAJIAI2AlAgCSADNgJMIAlBEDYCSCAJQcgAahDhFSEDC0EAIQUMAwtBCEHYABCiHwALQQEhBQwBC0EAIQ0jAEHQAWsiBCQAIAQgDzoAKyAEIAI2AiQgAUGwAWohAwJAAn8CQAJAAkACQAJAAkACQAJAIAEtALABIgVBGEYEQCAEQfgAaiABQQAQpgQgBCgCfCEFIAQoAngiDUGAgICAeEYNBiAEIAQoAoABNgI0IAQgBTYCMCAEIA02AiwgAy0AACIFQdAARw0BIAQgBCkCMDcCfAwDCyAEQYCAgIB4NgIsIAVB0ABGDQELIAQgBEEkajYCPCAEIARBK2o2AjggBUHiAEcEQCABKQOoASEfIAVBzABHDQMgAS8BdEGAwABxRQ0DCyAEQUBrIAEgASgCbCICQYACcUUgAkGAAXFFEOEBIAQoAkAhBSAELQBYIgJBAkYNAyAEQYwBaiAEQdQAaigCADYCACAEQYQBaiAEQcwAaikCADcCACAEQZQBaiAEQdwAaigAADYAACAEIAQpAkQ3AnwgBCAEKABZNgCRASAEIAE2ApgBIARBADoAnAEgBCACOgCQASAEIAU2AnggBEEIaiAEQThqIAEgBEH4AGpBABBuIAQoAgwhBSAEKAIIDAcLIARCBDcCfAsgBCANNgJ4IwBBgAFrIgYkACAGIAI2AgQgBiACNgIAIAZBOGogBEH4AGoiA0EIaigCADYCACAGIAMpAgA3AzAgASgCbCEDIAYgBkEEajYCQCAGIAY2AjwCQCADQYCACHFFBEAgASADQYCACHI2AmwgBkEIaiABIAIgBkEwakEAENALIAEgASgCbEH//3dxNgJsDAELIAZBCGogASACIAZBMGpBABDQCwsgBigCCCEDAkAgBi0AICICQQNGBEBBASEQDAELIAZB9ABqIAZBHGooAgA2AgAgBkHsAGogBkEUaikCADcCACAGQfwAaiAGQSRqKAAANgAAIAYgBikCDDcCZCAGIAYoACE2AHkgBiACOgB4IAYgAzYCYCAGKAIoIgUoAiAiAgRAIAUoAhwhAyACQegAbCEQA0ACQAJAAkACQCADKAIAQQFrDgMAAwEDCyADQUBrLQAADQEMAgsgA0HMAGotAABBAUcNAQsgBiADQQhqKQMANwMwIAZBoIGAgHg2AgggASAGQTBqIAZBCGoQzRcLIANB6ABqIQMgEEHoAGsiEA0ACwsgBiAGKAIANgIIIAYgATUCpAE+AgwgBkEIaiEPIwBB4ABrIggkACAIQShqIAZB4ABqIgJBGGopAwA3AwAgCEEgaiACQRBqKQMANwMAIAhBGGogAkEIaikDADcDACAIIAU2AjAgCEETNgIIIAggAikDADcDECAIQQhqEOEVIQMgBkHIAGoiAkG7gYCAeDYCACACIAM2AgQgCEHgAGokACAGKAJIQbuBgIB4RwRAIAYgASkDqAE3AwggDyACEJEQIQNBASEQIAEtALABQaIBRw0BIAEQgw0hAiABEIgIIAEgAhDEEAwBC0EAIRAgBigCTCEDCyAEIAM2AgQgBCAQNgIAIAZBgAFqJAAgBCgCBCEFIAQoAgAhAwwGCyAfpyEPAkACQAJAAkACQCAFQdkATARAIAVBGUYNBSAFQcsARw0BIARB4ABqIAEQpRAgAS0AbkEEcQ0EDAkLIAVB2gBGIAVB5ABGciAFQeoARnINAQsgBUHMAGtB/wFxQdQASw0BCyADIAEoAmwQ6gpFDQULIAQgHzcDQCAEQYuBgIB4NgJ4IARBQGsgBEH4AGoQkRAhBSADLQAAQaIBRw0CIAEQgw0hAiABEIgIIAEgAhDEEAwCCyAEAn4jAEEwayIFJAACQEH4wegAEMwaKQMAIh9CA4NQBEAgBSAfpyICNgIgIAUgAigCEDYCJCAFQRhqIAVBIGoiAxChHiAFKAIYIgIgAigCACICQQFqNgIAIAJBAEgNASAFQRBqIAMQoR4gBSAFKQMQNwIoIAVBCGogBUEoahChHgsgBUEwaiQAIB8MAQsACzcDeCAEQeAAaiAEQfgAaiIDEJUKIAMQ8QxFDQQgBCABKQOgATcDQCAEQaqAgIB4NgJ4IAEgBEFAayADEM0XDAQLIAEQiAggBEH4AGoiAiABEN8IIAQpA4ABIiFQRQRAIAE1AqQBISAgBDUCJCEfIAQgITcDiAEgBEEjNgJ4IAQgHyAgQiCGhDcDgAEgAhDhFSEFQQAMBQsgBCgCeCEFCyAEQSxqELwaC0EBIQMMAwsgBEHwAGoiAiABEKUQIAQgDzYCQCAEIAE1AqQBPgJEIARB+ABqIgMgAiAEQUBrEJ0ZIAQgBUH4AEYiAjoAnAEgBCABNgKYASAEQRBqIARBOGogASADIAIQbiAEKAIUIQUgBCgCEAwBCyAEIA82AmggBCABNQKkAT4CbCAEIAQpA2A3A0AgBEH4AGoiAiAEQUBrIARB6ABqEJ0ZIARBADoAnAEgBCABNgKYASAEQRhqIARBOGogASACQQAQbiAEKAIcIQUgBCgCGAshAyAEQSxqELwaCyAJIAU2AgQgCSADNgIAIARB0AFqJAAgCSgCBCEDIAkoAgAhBQsgHiAFNgIAIB4gAzYCBCAJQaABaiQAQQEhBSAHKAIMIQMgBygCCEEBcQ0GIAMoAgBBEkYNBQJAIAEtAHVBIHFFDQAgAS0AsAFBEkcNACABEOUCIgJFDQAgATUCpAEhHyAHIAI2AqgBIAcgAzYCpAEgB0EhNgKYASAHIB9CIIYgI4Q3ApwBIAdBmAFqEOEVIQMLIAdBAjYCmAEgByADNgKcASAHIAEgB0GYAWpBAUEAEJ0IIAcoAgQhAyAHKAIAIQUMBgsgARCICCABLQCwAUEIRwRAIAdBIGogASACEIINQQEhBSAHKAIkIQ8gBygCIEEBcQRAIA8hAwwHCyAPKAIAIgNBEkYEQCAPIQMMBgsgAkUNAyADQSRHBEAgA0EIRw0EIA8oAhAiAygCAEEkRw0EIAMtAAxBAUcNBCAHIAMpAgQ3A0ggB0HogICAeDYCmAEgB0HIAGogB0GYAWoQkRAhAyABLQCwAUGiAUcNBSABEIMNIQIgARCICCABIAIQxBAMBQsgDy0ADEUNAyAHIA8pAgQ3A0AgB0HogICAeDYCmAEgB0FAayAHQZgBahCRECEDIAEtALABQaIBRw0EIAEQgw0hAiABEIgIIAEgAhDEEAwECyABEIgIIAEtALABQaABRwRAIAdBmAFqIgJBBHIgARDZGSAHQQY2AqwBIAdBk+zEADYCqAEgB0GwgICAeDYCmAEgByABKQOoATcDaCAHQegAaiACEJEQIQMgAS0AsAFBogFHDQIgARCDDSECIAEQiAggASACEMQQDAILIAEQiAggByAPNgI4IAcgATUCpAE+AjwgBykDOCEfIAdBADYCpAEgByAfNwKcASAHQRU2ApgBIAdBmAFqIgMQ4RUhAiABLQBuQTJxRQRAIAdBi4CAgHg2ApgBIAEgB0E4aiADEM0XCyAHQQI2ApgBIAcgAjYCnAEgB0EQaiABIAdBmAFqQQFBABCdCCAHKAIUIQMgBygCECEFDAULIAEQiAggB0EwaiABIA9BARCUAyAHKAI0IQMgBygCMCEFDAQLQQEhBQwDCyABLQB1QSBxRSIIIAEtALABIgNBNUcgA0ESR3FyRQRAIwBB8ANrIgokAAJAIAgNACABKAJsIRIgCkEIaiABELACAkAgEkECcUUNACAKKAJsIgQoAggiA0H/////B08NBiAEKAIURQ0AIAMNByAEQX82AgggCigCaCIOKAIIDQggDkF/NgIIIAQoAhAhCCAOQQxqIAQoAhQiBhDIGCAGQQJ0IgMEQCAOKAIQIA4oAhRBAnRqIAggA/wKAAALIARBADYCFCAOIA4oAhQgBmo2AhQgDiAOKAIIQQFqNgIIIAQgBCgCCEEBajYCCAsgCiASQQFyNgJ0IAogCkEIaiIEEIENIAooAgQhECAKKAIAQQFxRQRAIAogEDYC1AMgBBCICAJAIAotALgBBEAgCiAKKQOwATcD2AMgCkHkA2ogBBDZGSMAQRBrIhIkACASQQRqQQFBAUEBEIIKIBIoAgghCCASKAIEQQFGBEAgCCASKAIMQdzAxAAQtBoACyASKAIMIQMgCkHwAWoiBkEBNgIIIAYgAzYCBCAGIAg2AgAgA0EoOgAAIBJBEGokACAKQYQCaiAKQewDaigCADYCACAKIAopAuQDNwL8ASAKQdgDaiAGEJEQIRAgCi0AuAFBogFHDQEgBBCDDSEDIAQQiAggBCADEMQQDAELIApB8AFqIgMgCkEIakHgAfwKAAAgARC6CCABIANB4AH8CgAAAkAgASgCbCIGQQJxRQ0AIAEoAmQiDigCCCIDQf////8HTw0IIA4oAhRFDQAgAw0JIA5BfzYCCCABKAJgIhEoAggNCiARQX82AgggDigCECEIIBFBDGogDigCFCIEEMgYIARBAnQiAwRAIBEoAhAgESgCFEECdGogCCAD/AoAAAsgDkEANgIUIBEgESgCFCAEajYCFCARIBEoAghBAWo2AgggDiAOKAIIQQFqNgIICyABIAZBfnEgEkEBcXI2AmwMAgsgCkHUA2oQyhkLIAogEDYC7AEgCkEBNgLoASAKQegBahC0FSAKQQhqELoIQQAhEAsgCkHwA2okACABLQCwASEDCyAHIBA2AlQCQCACQQAgA0H/AXEbRQRAIAdBADoAaCAHQZgBaiIEIAEgB0HoAGoiBhDIFCAHKAKcASEDIAcoApgBIghBgICAgHhGDQEgBygCoAEhAiABNQKkASEfEKkZIQUgBBCoHCAFIARB2AD8CgAAIAdBADYChAEgB0GAgICAeDYCeCAHIAU2AnQgB0EANgJwIAdCADcDaCAHIBA2ArgBIAcgAjYCtAEgByADNgKwASAHIAg2AqwBIAcgDzYCqAEgB0EANgKkASAHIB9CIIYgI4Q3ApwBIAdBDDYCmAEgByAEEOEVNgJcIAdBAjYCWCAGEJkXIAdBGGogASAHQdgAakEBQQAQnQggBygCHCEDIAcoAhghBQwECyABNQKkASEfEKkZIQIgB0GYAWoiARCoHCACIAFB2AD8CgAAQQAhBSAHQQA2AoQBIAdBgICAgHg2AnggByACNgJ0IAdBADYCcCAHQgA3A2ggByAQNgK4ASAHQYCAgIB4NgKsASAHIA82AqgBIAdBADYCpAEgByAfQiCGICOENwKcASAHQQw2ApgBIAEQ4RUhAyAHQegAahCZFwwDCyAQRQ0AIAdB1ABqEMoZCyAPEL8BIA9B2ABBCBD4HAwBC0EAIQULIAAgBTYCACAAIAM2AgQgB0HwAWokAA8LQdjBxAAQ1xEAC0HowcQAENYRAAtB+MHEABDWEQALxgsCCX8EfiMAQbABayIDJAACQAJAAkAgAi0AdUEgcUUNAAJAIAIoAmwiBEGAIHFFBEAgAiAEQYAgciIENgJsAn8gAi0AsAEiBUESRwRAQQAgBUE+Rw0BGkHbycQAQShBxMzEABCcFAALIANBGGogAkEAQQEQkwsgAigCbCEEIAMoAhghBiADKAIcCyEHIAIgBEH/X3E2AmwMAQsgAi0AsAEiBEESRwRAIARBPkcNAkHbycQAQShBxMzEABCcFAALIANBIGogAkEAQQEQkwsgAygCICEGIAMoAiQhBwsgBkEBcQ0BCyADIAc2AiwCQCACLQCwAQRAIAMgAikDqAE3AzAgA0E4aiACENkZIANBATYCnAEgA0H0w8QANgKYASADQgE3AqQBIANBlgM2AkggA0EAOgCIASADIANBxABqNgKgASADIANBgAFqNgJEIAMgA0GIAWo2AoABIANB6ABqIgQgA0GYAWoQ9wQgA0H8AGogA0FAaygCADYCACADIAMpAjg3AnQgA0EwaiAEEJEQIQQgAi0AsAFBogFHDQEgAhCDDSEFIAIQiAggAiAFEMQQDAELIAIQiAggASgCECEEIAEoAgwhCCABKAIUIQkCQCACKAJsIgVBgICAAXFFBEAgAiAFQYCAgAFyNgJsIAMgBDYCoAEgAyAINgKcASADIAk2ApgBIANB6ABqIAIgA0GYAWoQiAcgAiACKAJsQf///35xNgJsDAELIAMgBDYCoAEgAyAINgKcASADIAk2ApgBIANB6ABqIAIgA0GYAWoQiAcLIAMoAmwhBCADKAJoIgVBgICAgHhGDQAgAyADKAJwNgJMIAMgBDYCSCADIAU2AkQCQCACLQCwAUEBRwRAIAMgAikDqAE3A1AgA0HcAGogAhDZGSADQQE2ApwBIANB9MPEADYCmAEgA0IBNwKkASADQZYDNgKEASADQQE6AI8BIAMgA0GAAWo2AqABIAMgA0GIAWo2AoABIAMgA0GPAWo2AogBIANB6ABqIgQgA0GYAWoQ9wQgA0H8AGogA0HkAGooAgA2AgAgAyADKQJcNwJ0IANB0ABqIAQQkRAhBCACLQCwAUGiAUcNASACEIMNIQUgAhCICCACIAUQxBAMAQsgAhCICAJAAkAgAi0AdUEgcQRAIAItALABQQlGDQELQQAhBAwBCyADQQk6AJgBIANBEGogAiADQZgBahD7CyADKAIUIQQgAygCEEEBcQ0BCyADIAQ2AmggA0GYAWogAiAJLQAAIAgtAAAgA0HEAGoQ2xMQzAcgAygCmAEhBSADKAKkASIKQYGAgIB4RgRAIANB6ABqEO8XIAUhBAwBCyADKQKoASEMIAMpApwBIQ0CQCAKQYCAgIB4Rw0AIAIvAXRBgMAAcUUNACADQQhqIANBxABqEMgZIAMoAggiBiADKAIMIgtGDQADQCAGQRhqKAIAQQRGBEAgAyAGQRxqKQIANwOQASADQamBgIB4NgKYASACIANBkAFqIANBmAFqEM0XCyAGQcgAaiIGIAtHDQALCyADQawBaiABQQhqKAIANgIAIANBoAFqIgYgA0HMAGooAgA2AgAgAyADKQJENwOYASADIAEpAgA3AqQBIAktAAAhCSAILQAAIQggASgCGDUCACEOQQAhAUGpxugALQAAGiACKQOgASEPQcgAQQQQ7xsiAgRAIAIgAykDmAE3AgAgAiAENgJEIAIgBzYCQCACIAk6AD0gAiAIOgA8IAIgDDcCNCACIAo2AjAgAiANNwIoIAIgBTYCJCACQQA2AiAgAkEQaiADQagBaikDADcCACACQQhqIAYpAwA3AgAgAiAPQoCAgIBwgyAOhDcCGCACIQcMBAtBBEHIABCiHwALIANBxABqIgIQpBcgAhCuHgsgBwRAIANBLGoQyxkLIAQhBwsgARCSFCABEMkdQQEhAQsgACAHNgIEIAAgATYCACADQbABaiQAC8YLAgl/BH4jAEGwAWsiAyQAAkACQAJAIAItAHVBIHFFDQACQCACKAJsIgRBgCBxRQRAIAIgBEGAIHIiBDYCbAJ/IAItALABIgVBEkcEQEEAIAVBPkcNARpB28nEAEEoQcTMxAAQnBQACyADQRhqIAJBAEEBEJMLIAIoAmwhBCADKAIYIQYgAygCHAshByACIARB/19xNgJsDAELIAItALABIgRBEkcEQCAEQT5HDQJB28nEAEEoQcTMxAAQnBQACyADQSBqIAJBAEEBEJMLIAMoAiAhBiADKAIkIQcLIAZBAXENAQsgAyAHNgIsAkAgAi0AsAEEQCADIAIpA6gBNwMwIANBOGogAhDZGSADQQE2ApwBIANB9MPEADYCmAEgA0IBNwKkASADQZYDNgJIIANBADoAiAEgAyADQcQAajYCoAEgAyADQYABajYCRCADIANBiAFqNgKAASADQegAaiIEIANBmAFqEPcEIANB/ABqIANBQGsoAgA2AgAgAyADKQI4NwJ0IANBMGogBBCRECEEIAItALABQaIBRw0BIAIQgw0hBSACEIgIIAIgBRDEEAwBCyACEIgIIAEoAhAhBCABKAIMIQggASgCFCEJAkAgAigCbCIFQYCAgAFxRQRAIAIgBUGAgIABcjYCbCADIAQ2AqABIAMgCDYCnAEgAyAJNgKYASADQegAaiACIANBmAFqEIEUIAIgAigCbEH///9+cTYCbAwBCyADIAQ2AqABIAMgCDYCnAEgAyAJNgKYASADQegAaiACIANBmAFqEIEUCyADKAJsIQQgAygCaCIFQYCAgIB4Rg0AIAMgAygCcDYCTCADIAQ2AkggAyAFNgJEAkAgAi0AsAFBAUcEQCADIAIpA6gBNwNQIANB3ABqIAIQ2RkgA0EBNgKcASADQfTDxAA2ApgBIANCATcCpAEgA0GWAzYChAEgA0EBOgCPASADIANBgAFqNgKgASADIANBiAFqNgKAASADIANBjwFqNgKIASADQegAaiIEIANBmAFqEPcEIANB/ABqIANB5ABqKAIANgIAIAMgAykCXDcCdCADQdAAaiAEEJEQIQQgAi0AsAFBogFHDQEgAhCDDSEFIAIQiAggAiAFEMQQDAELIAIQiAgCQAJAIAItAHVBIHEEQCACLQCwAUEJRg0BC0EAIQQMAQsgA0EJOgCYASADQRBqIAIgA0GYAWoQ+wsgAygCFCEEIAMoAhBBAXENAQsgAyAENgJoIANBmAFqIAIgCS0AACAILQAAIANBxABqENsTEMwHIAMoApgBIQUgAygCpAEiCkGBgICAeEYEQCADQegAahDvFyAFIQQMAQsgAykCqAEhDCADKQKcASENAkAgCkGAgICAeEcNACACLwF0QYDAAHFFDQAgA0EIaiADQcQAahDIGSADKAIIIgYgAygCDCILRg0AA0AgBkEYaigCAEEERgRAIAMgBkEcaikCADcDkAEgA0GpgYCAeDYCmAEgAiADQZABaiADQZgBahDNFwsgBkHIAGoiBiALRw0ACwsgA0GsAWogAUEIaigCADYCACADQaABaiIGIANBzABqKAIANgIAIAMgAykCRDcDmAEgAyABKQIANwKkASAJLQAAIQkgCC0AACEIIAEoAhg1AgAhDkEAIQFBqcboAC0AABogAikDoAEhD0HIAEEEEO8bIgIEQCACIAMpA5gBNwIAIAIgBDYCRCACIAc2AkAgAiAJOgA9IAIgCDoAPCACIAw3AjQgAiAKNgIwIAIgDTcCKCACIAU2AiQgAkEANgIgIAJBEGogA0GoAWopAwA3AgAgAkEIaiAGKQMANwIAIAIgD0KAgICAcIMgDoQ3AhggAiEHDAQLQQRByAAQoh8ACyADQcQAaiICEKQXIAIQrh4LIAcEQCADQSxqEMsZCyAEIQcLIAEQkhQgARDJHUEBIQELIAAgBzYCBCAAIAE2AgAgA0GwAWokAAvGCwIJfwR+IwBBsAFrIgMkAAJAAkACQCACLQB1QSBxRQ0AAkAgAigCbCIEQYAgcUUEQCACIARBgCByIgQ2AmwCfyACLQCwASIFQRJHBEBBACAFQT5HDQEaQdvJxABBKEHEzMQAEJwUAAsgA0EYaiACQQBBARCTCyACKAJsIQQgAygCGCEGIAMoAhwLIQcgAiAEQf9fcTYCbAwBCyACLQCwASIEQRJHBEAgBEE+Rw0CQdvJxABBKEHEzMQAEJwUAAsgA0EgaiACQQBBARCTCyADKAIgIQYgAygCJCEHCyAGQQFxDQELIAMgBzYCLAJAIAItALABBEAgAyACKQOoATcDMCADQThqIAIQ2RkgA0EBNgKcASADQfTDxAA2ApgBIANCATcCpAEgA0GWAzYCSCADQQA6AIgBIAMgA0HEAGo2AqABIAMgA0GAAWo2AkQgAyADQYgBajYCgAEgA0HoAGoiBCADQZgBahD3BCADQfwAaiADQUBrKAIANgIAIAMgAykCODcCdCADQTBqIAQQkRAhBCACLQCwAUGiAUcNASACEIMNIQUgAhCICCACIAUQxBAMAQsgAhCICCABKAIQIQQgASgCDCEIIAEoAhQhCQJAIAIoAmwiBUGAgIABcUUEQCACIAVBgICAAXI2AmwgAyAENgKgASADIAg2ApwBIAMgCTYCmAEgA0HoAGogAiADQZgBahCCFCACIAIoAmxB////fnE2AmwMAQsgAyAENgKgASADIAg2ApwBIAMgCTYCmAEgA0HoAGogAiADQZgBahCCFAsgAygCbCEEIAMoAmgiBUGAgICAeEYNACADIAMoAnA2AkwgAyAENgJIIAMgBTYCRAJAIAItALABQQFHBEAgAyACKQOoATcDUCADQdwAaiACENkZIANBATYCnAEgA0H0w8QANgKYASADQgE3AqQBIANBlgM2AoQBIANBAToAjwEgAyADQYABajYCoAEgAyADQYgBajYCgAEgAyADQY8BajYCiAEgA0HoAGoiBCADQZgBahD3BCADQfwAaiADQeQAaigCADYCACADIAMpAlw3AnQgA0HQAGogBBCRECEEIAItALABQaIBRw0BIAIQgw0hBSACEIgIIAIgBRDEEAwBCyACEIgIAkACQCACLQB1QSBxBEAgAi0AsAFBCUYNAQtBACEEDAELIANBCToAmAEgA0EQaiACIANBmAFqEPsLIAMoAhQhBCADKAIQQQFxDQELIAMgBDYCaCADQZgBaiACIAktAAAgCC0AACADQcQAahDbExDMByADKAKYASEFIAMoAqQBIgpBgYCAgHhGBEAgA0HoAGoQ7xcgBSEEDAELIAMpAqgBIQwgAykCnAEhDQJAIApBgICAgHhHDQAgAi8BdEGAwABxRQ0AIANBCGogA0HEAGoQyBkgAygCCCIGIAMoAgwiC0YNAANAIAZBGGooAgBBBEYEQCADIAZBHGopAgA3A5ABIANBqYGAgHg2ApgBIAIgA0GQAWogA0GYAWoQzRcLIAZByABqIgYgC0cNAAsLIANBrAFqIAFBCGooAgA2AgAgA0GgAWoiBiADQcwAaigCADYCACADIAMpAkQ3A5gBIAMgASkCADcCpAEgCS0AACEJIAgtAAAhCCABKAIYNQIAIQ5BACEBQanG6AAtAAAaIAIpA6ABIQ9ByABBBBDvGyICBEAgAiADKQOYATcCACACIAQ2AkQgAiAHNgJAIAIgCToAPSACIAg6ADwgAiAMNwI0IAIgCjYCMCACIA03AiggAiAFNgIkIAJBADYCICACQRBqIANBqAFqKQMANwIAIAJBCGogBikDADcCACACIA9CgICAgHCDIA6ENwIYIAIhBwwEC0EEQcgAEKIfAAsgA0HEAGoiAhCkFyACEK4eCyAHBEAgA0EsahDLGQsgBCEHCyABEJIUIAEQyR1BASEBCyAAIAc2AgQgACABNgIAIANBsAFqJAALxgsCCX8EfiMAQbABayIDJAACQAJA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NgKAASADQegAaiIEIANBmAFqEPcEIANB/ABqIANBQGsoAgA2AgAgAyADKQI4NwJ0IANBMGogBBCRECEEIAItALABQaIBRw0BIAIQgw0hBSACEIgIIAIgBRDEEAwBCyACEIgIIAEoAhAhBCABKAIMIQggASgCFCEJAkAgAigCbCIFQYCAgAFxRQRAIAIgBUGAgIABcjYCbCADIAQ2AqABIAMgCDYCnAEgAyAJNgKYASADQegAaiACIANBmAFqEIIUIAIgAigCbEH///9+cTYCbAwBCyADIAQ2AqABIAMgCDYCnAEgAyAJNgKYASADQegAaiACIANBmAFqEIIUCyADKAJsIQQgAygCaCIFQYCAgIB4Rg0AIAMgAygCcDYCTCADIAQ2AkggAyAFNgJEAkAgAi0AsAFBAUcEQCADIAIpA6gBNwNQIANB3ABqIAIQ2RkgA0EBNgKcASADQejRxAA2ApgBIANCATcCpAEgA0GWAzYChAEgA0EBOgCPASADIANBgAFqNgKgASADIANBiAFqNgKAASADIANBjwFqNgKIASADQegAaiIEIANBmAFqEPcEIANB/ABqIANB5ABqKAIANgIAIAMgAykCXDcCdCADQdAAaiAEEJEQIQQgAi0AsAFBogFHDQEgAhCDDSEFIAIQiAggAiAFEMQQDAELIAIQiAgCQAJAIAItAHVBIHEEQCACLQCwAUEJRg0BC0EAIQQMAQsgA0EJOgCYASADQRBqIAIgA0GYAWoQ+wsgAygCFCEEIAMoAhBBAXENAQsgAyAENgJoIANBmAFqIAIgCS0AACAILQAAIANBxABqENsTEMwHIAMoApgBIQUgAygCpAEiCkGBgICAeEYEQCADQegAahDxFyAFIQQMAQsgAykCqAEhDCADKQKcASENAkAgCkGAgICAeEcNACACLwF0QYDAAHFFDQAgA0EIaiADQcQAahDIGSADKAIIIgYgAygCDCILRg0AA0AgBkEYaigCAEEERgRAIAMgBkEcaikCADcDkAEgA0GpgYCAeDYCmAEgAiADQZABaiADQZgBahDNFwsgBkHIAGoiBiALRw0ACwsgA0GsAWogAUEIaigCADYCACADQaABaiIGIANBzABqKAIANgIAIAMgAykCRDcDmAEgAyABKQIANwKkASAJLQAAIQkgCC0AACEIIAEoAhg1AgAhDkEAIQFB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GiACKQOgASEPQcgAQQQQ7xsiAgRAIAIgAykDmAE3AgAgAiAENgJEIAIgBzYCQCACIAk6AD0gAiAIOgA8IAIgDDcCNCACIAo2AjAgAiANNwIoIAIgBTYCJCACQQA2AiAgAkEQaiADQagBaikDADcCACACQQhqIAYpAwA3AgAgAiAPQoCAgIBwgyAOhDcCGCACIQcMBAtBBEHIABCiHwALIANBxABqIgIQpBcgAhCuHgsgBwRAIANBLGoQyxkLIAQhBwsgARCSFCABEMkdQQEhAQsgACAHNgIEIAAgATYCACADQbABaiQAC44LAgl/BH4jAEGwAWsiAyQAAkACQAJAIAItAHVBIHFFDQACQCACKAJsIgRBgCBxRQRAIAIgBEGAIHIiBDYCbAJ/IAItALABIgVBEkcEQEEAIAVBPkcNARpBiNTEAEEoQazXxAAQnBQACyADQRhqIAJBAEEBEJMLIAIoAmwhBCADKAIYIQYgAygCHAshByACIARB/19xNgJsDAELIAItALABIgRBEkcEQCAEQT5HDQJBiNTEAEEoQazXxAAQnBQACyADQSBqIAJBAEEBEJMLIAMoAiAhBiADKAIkIQcLIAZBAXENAQsgAyAHNgIsAkAgAi0AsAEEQCADIAIpA6gBNwMwIANBOGogAhDZGSADQQE2ApwBIANB6NHEADYCmAEgA0IBNwKkASADQZYDNgJIIANBADoAiAEgAyADQcQAajYCoAEgAyADQYABajYCRCADIANBiAFqNgKAASADQegAaiIEIANBmAFqEPcEIANB/ABqIANBQGsoAgA2AgAgAyADKQI4NwJ0IANBMGogBBCRECEEIAItALABQaIBRw0BIAIQgw0hBSACEIgIIAIgBRDEEAwBCyACEIgIIAEoAgwhCCABKAIQIQkCQCACKAJsIgRBgICAAXFFBEAgAiAEQYCAgAFyNgJsIANBmAFqIAIgCSAIELcTIAIgAigCbEH///9+cTYCbAwBCyADQZgBaiACIAkgCBC3EwsgAygCnAEhBCADKAKYASIFQYCAgIB4Rg0AIAMgAygCoAE2AkwgAyAENgJIIAMgBTYCRAJAIAItALABQQFHBEAgAyACKQOoATcDUCADQdwAaiACENkZIANBATYCnAEgA0Ho0cQANgKYASADQgE3AqQBIANBlgM2AoQBIANBAToAjwEgAyADQYABajYCoAEgAyADQYgBajYCgAEgAyADQY8BajYCiAEgA0HoAGoiBCADQZgBahD3BCADQfwAaiADQeQAaigCADYCACADIAMpAlw3AnQgA0HQAGogBBCRECEEIAItALABQaIBRw0BIAIQgw0hBSACEIgIIAIgBRDEEAwBCyACEIgIAkACQCACLQB1QSBxBEAgAi0AsAFBCUYNAQtBACEEDAELIANBCToAmAEgA0EQaiACIANBmAFqEPsLIAMoAhQhBCADKAIQQQFxDQELIAMgBDYCaCADQZgBaiACIAktAAAgCC0AACADQcQAahDbExDMByADKAKYASEFIAMoAqQBIgpBgYCAgHhGBEAgA0HoAGoQ8RcgBSEEDAELIAMpAqgBIQwgAykCnAEhDQJAIApBgICAgHhHDQAgAi8BdEGAwABxRQ0AIANBCGogA0HEAGoQyBkgAygCCCIGIAMoAgwiC0YNAANAIAZBGGooAgBBBEYEQCADIAZBHGopAgA3A5ABIANBqYGAgHg2ApgBIAIgA0GQAWogA0GYAWoQzRcLIAZByABqIgYgC0cNAAsLIANBrAFqIAFBCGooAgA2AgAgA0GgAWoiBiADQcwAaigCADYCACADIAMpAkQ3A5gBIAMgASkCADcCpAEgCS0AACEJIAgtAAAhCCABKAIUNQIAIQ5BACEBQanG6AAtAAAaIAIpA6ABIQ9ByABBBBDvGyICBEAgAiADKQOYATcCACACIAQ2AkQgAiAHNgJAIAIgCToAPSACIAg6ADwgAiAMNwI0IAIgCjYCMCACIA03AiggAiAFNgIkIAJBADYCICACQRBqIANBqAFqKQMANwIAIAJBCGogBikDADcCACACIA9CgICAgHCDIA6ENwIYIAIhBwwEC0EEQcgAEKIfAAsgA0HEAGoiAhCkFyACEK4eCyAHBEAgA0EsahDLGQsgBCEHCyABEJIUIAEQyR1BASEBCyAAIAc2AgQgACABNgIAIANBsAFqJAALhgoBAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOJAABAgMbGgQFBgcICQoLDA0ODxARGRwcEhMZFBUfHBwfFh8XGBkLIABBDGoiABClFyAAEK0eDwsgAEEMaiIAEKYX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IANBFGpBBEEEEMoPIAMoAhwiAUUNBCADKAIYIgIgAUECdCIFakEEayIERQ0EIAQoAgANBCAFIQQgAkEEayEGIAFB/////wNxIQICQANAIARFBEBBACEEDAILIAJBAWshAiAEIAZqIARBBGshBCgCAEUNAAsgAkEBaiIEIAFLDQULIAMgBDYCHCAEIQEMBAsCQAJAAkACfyABKAIIIgQgAigCCCIHRwRAIAQgB0sgBCAHSWsMAQsgBEECdCEEIAEoAgRBBGshCSACKAIEQQRrIQoCQANAIARFDQEgBCAKaiEIIAQgCWogBEEEayEEKAIAIgcgCCgCACIIRg0ACyAHIAhLIAcgCElrDAELQX9BACAEGwtB/wFxDgIBAgALIANByABqIgQgAkEIaigCADYCACADIAIpAgA3A0AgA0FAayABENIIIAQoAgAhAiADKQNAIQsgAUEEQQQQ8gwgACAFQQEgAhs6AAwgACACNgIIIAAgCzcCAAwHCyAAQQhqQfTp5QApAgA3AgAgAEHs6eUAKQIANwIAIAJBBEEEEPIMDAELIANByABqIgQgAUEIaigCADYCACADIAEpAgA3A0AgA0FAayACENIIIANBOGogBCgCADYCACADIAMpA0A3AzAgAkEEQQQQ8gwgBkEBRwRAIAZBASADKAI4GyEEDAMLIANBADYCOCADQTBqQQRBBBDKDyADKAI4IgFFDQEgAygCNCICIAFBAnQiBWpBBGsiBEUNASAEKAIADQEgBSEEIAJBBGshBiABQf////8DcSECAkADQCAERQRAQQAhBAwCCyACQQFrIQIgBCAGaiAEQQRrIQQoAgBFDQALIAJBAWoiBCABSw0CCyADIAQ2AjggBCEBDAELIAFBBEEEEPIMDAQLQQEhBCABIAMoAjBBAnZPDQAgA0EIaiADQTBqIAFBBEEEEOUIIAMoAggiAUGBgICAeEYNACABIAMoAgxB7O/lABC0GgALIAAgAykDMDcCACAAIAQ6AAwgAEEIaiADQThqKAIANgIADAILQQEhBCABIAMoAhRBAnZPDQAgAyADQRRqIAFBBEEEEOUIIAMoAgAiAUGBgICAeEYNACABIAMoAgRB7O/lABC0GgALIAAgAykCFDcCACAAIAQ6AAwgAEEIaiADQRxqKAIANgIACyADQdAAaiQAC84NAgh/An4jAEHgAWsi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MCIDQQNHBEAgACACKQI8NwIUIABBHGogAkHEAGopAgA3AgAgAEEkaiACQcwAaikCADcCACAAQSxqIAJB1ABqKAIANgIAIAAgAikCNDcCDCAAIAM2AgggAEICNwMADAQLIAJBMGogARC8BSACKAIwIgNBA0cEQCAAIAIpA0g3AyAgAEEoaiACQdAAaikDADcDACACKAI0IQEgAikDOCEJIAAgAikDQDcDGCAAIAk3AxAgACABNgIMIAAgAzYCCCAAQgI3AwAMBAsgAikDQCELIAIpAzghDCABKAIEIQQgASgCACEFIAJBMGogAUHKvcAAQQEQ1gcCQCACKAIwIgNBA0cEQCACQRxqIAJBxABqKQIANwIAIAJBJGogAkHMAGopAgA3AgAgAkEsaiACQdQAaigCADYCACACIAIpAjw3AhQgAiACKQI0NwIMDAELIAJBCGogARC8BSACKAIIIQMLAn4CQAJAIANBAWsOAwEEAAQLIAEoAgQhBCABKAIAIQUgAikDGCENIAIpAxAMAQsgASAENgIEIAEgBTYCAEICCyEJIAJBMGogAUHKvcAAQQEQ1gcCQCACKAIwIgNBA0cEQCACQRxqIAJBxABqKQIANwIAIAJBJGogAkHMAGopAgA3AgAgAkEsaiACQdQAaigCADYCACACIAIpAjw3AhQgAiACKQI0NwIMDAELIAJBCGogARC8BSACKAIIIQMLAkACQAJAIANBAWsOAwEAAgALIAAgAikDIDcDICAAQShqIAJBKGopAwA3AwAgAigCDCEBIAIpAxAhCSAAIAIpAxg3AxggACAJNwMQIAAgATYCDCAAIAM2AgggAEICNwMADAULIAEgBDYCBCABIAU2AgBBCCEBQQAhA0EAIQRBACEFQQghBgwDCyACKQMYIQ4gAikDECEKIAJBMGogARDKBSACKAJIIQcgAigCRCEGIAIoAkAhBSACKAI8IQQgAigCOCEBIAIoAjQhAyACKAIwIghBA0YNAiAAIAIpAkw3AiQgAEEsaiACQdQAaigCADYCACAAIAc2AiAgACAGNgIcIAAgBTYCGCAAIAQ2AhQgACABNgIQIAAgAzYCDCAAIAg2AgggAEICNwMADAMLIAAgAikCPDcCFCAAQRxqIAJBxABqKQIANwIAIABBJGogAkHMAGopAgA3AgAgAEEsaiACQdQAaigCADYC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BGshCCACKAIEQQRrIQkCQANAIARFDQEgBCAJaiEHIAQgCGogBEEEayEEKAIAIgUgBygCACIHRg0ACyAFIAdLIAUgB0lrDAELQX9BACAEGwtB/wFxDgICAwELIANBGGogAUEIaigCADYCACADIAEpAgA3AxAgA0EgaiADQRBqIAIQmQMgACADKQIgNwIAIABBCGogA0EoaigCACIBNgIAIAAgBkEBIAEbOgAMDAYLQQIhBAJAAkACQCAGQQFrDgICAAELQQAhBAsgA0EYaiABQQhqKAIANgIAIAMgASkCADcDECADQSBqIAIgA0EQahD3AyAEQQEgAygCKBshBAwECyADQRhqIAFBCGooAgA2AgAgAyABKQIANwMQIANBIGoiASACIANBEGoQ9wMgA0EANgIoIAFBBEEEEMoPIAMoAigiAkUNAiADKAIkIgEgAkECdCIFakEEayIERQ0CIAQoAgANAiAFIQQgAUEEayEGIAJB/////wNxIQECQANAIARFBEBBACEEDAILIAFBAWshASAEIAZqIARBBGshBCgCAEUNAAsgAUEBaiIEIAJLDQMLIAMgBDYCKCAEIQIMAgsgAEEIakH06eUAKQIANwIAIABB7OnlACkCADcCAAwDCyADQRhqIgQgAUEIaigCADYCACADIAEpAgA3AxAgA0EQaiACENIIIANBKGogBCgCADYCACADIAMpAxA3AyACQCAGQQFHBEAgBkEBIAMoAigbIQQMAQsgA0EANgIoIANBIGpBBEEEEMoPAkAgAygCKCICRQ0AIAMoAiQiASACQQJ0IgVqQQRrIgRFDQAgBCgCAA0AIAUhBCABQQRrIQYgAkH/////A3EhAQJAA0AgBEUEQEEAIQQMAgsgAUEBayEBIAQgBmogBEEEayEEKAIARQ0ACyABQQFqIgQgAksNAQsgAyAENgIoIAQhAgtBASEEIAIgAygCIEECdk8NACADQQhqIANBIGogAkEEQQQQ5QggAygCCCIBQYGAgIB4Rg0AIAEgAygCDEHs7+UAELQaAAsgACADKQMgNwIAIAAgBDoADCAAQQhqIANBKGooAgA2AgAMAwtBASEEIAIgAygCIEECdk8NACADIANBIGogAkEEQQQQ5QggAygCACIBQYGAgIB4Rg0AIAEgAygCBEHs7+UAELQaAAsgACADKQIgNwIAIAAgBDoA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AChBBEYNASAGKQMoIgxC/wGDQgRRDQEgACAMNwIADAILIAAgDDcCAAwBCyAAQQQ6AAALIAZBQGskAAuNCQEKfyMAQaACayICJAAgAkHwAGogARCOASACKAJ0IQMCQCACKAJwIgZBgICAgHhGBEAgAEGAgICAeDYCACAAIAM2AgQMAQsgAigCeCEEIAJB8ABqQQRBCEEwEIIKIAIoAnQhBQJAAkACQCACKAJwQQFHBEAgAkEANgIUIAIgAigCeDYCECACIAU2AgwgAiADIARByABsajYCJCACIAY2AiAgAiADNgIcIAIgAzYCGCAERQ0CIAJBLGohBiACQfgAaiEFIAJBvAFqIQggAkGMAWohCSACQYgBaiEKA0AgAkHgAGoiByADQQhqKQMANwMAIAJB6ABqIgsgA0EQaikDADcDACACIANByABqNgIcIAIgAykDADcDWCADKAIYIQQgAkEoaiADQRxqQSz8CgAAIARBB0YNAyACQYABaiALKQMANwMAIAUgBykDADcDACACIAIpA1g3A3AgAiAENgKIASAJIAJBKGpBLPwKAAACQAJAAkACQAJAAkAgBA4EAAECAwULIAggBkEo/AoAAAwDCyACQdABaiACQUBrKAIANgIAIAJByAFqIAJBOGopAgA3AwAgAkHAAWogAkEwaikCADcDACACIAIpAig3A7gBDAILIAJByAFqIAJBOGopAgA3AwAgAkHAAWogAkEwaikCADcDACACIAIpAig3A7gBDAELIAJB0AFqIAJBQGsoAgA2AgAgAkHIAWogAkE4aikCADcDACACQcABaiACQTBqKQIANwMAIAIgAikCKDcDuAELIAIoAhQiAyACKAIMRgRAIAJBDGpB4LfEABDdEgsgAigCECADQTBsaiIHIAQ2AgAgB0EEaiACQbgBakEs/AoAACACIANBAWo2AhQgBRCSFCAFEMkdIAIoAogBQQRPBEAgChDaCgsgAigCHCIDIAIoAiRHDQEMBAsLIAJB8AFqIgNBBHIgARDZGSACQdcANgKEAiACQfC3xAA2AoACIAJBsICAgHg2AvABIAIgASkDqAE3A+gBIAJB6AFqIAMQkRAhAyABLQCwAUGiAUcNASABEIMNIQQgARCICCABIAQQxBAMAQsgBSACKAJ4QdC3xAAQtBoACyAAQYCAgIB4NgIAIAAgAzYCBCAC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RQRAIAEgBEHAAHI2AmwgA0EoaiABIAIgChDqAiABIAEoAmxBv39xNgJsDAELIANBKGogASACIAoQ6gILIAMoAighBiADKAIwIgtBB0YEQCADQRxqIgEQ0BQgARCwHkEBIQEMBgsgAygCLCEMIANB7ABqIAlBNPwKAAAgAygCJCIFIAMoAhxGBEAgA0EcakH88MQAENwSCyADKAIgIAVBBnRqIgQgCzYCCCAEIAw2AgQgBCAGNgIAIARBDGogA0HsAGpBNPwKAAAgAyAFQQFqNgIkIAEtALABQQdHDQIgARCICAwBCwsgAyABKQOgASIOQiCIIhEgDkL/////D4MiEiAQIBFRGyASIA6nIAdGGyAOQoCAgIBwg4Q3A6ABIANB9oCAgHg2AiggASADQaABaiADQShqEM0XCyACDQEgARDnFA0BIAMgASkDqAE3A6ABIANB9YCAgHg2AiggASADQaABaiADQShqIgIQzRcgA0EIaiABEPoFIAMgAykDCDcCKAJAIAIoAgBFBEAgAigCBCICEKkBIAJB2ABBCBD4HAwBCyACKAIEIgIQswQgAkEgQQgQ+BwLA0AgARDnFA0CIAEQiAggAS0AsAFBogFHDQALDAELIAQgAygCMEHs8MQAELQaAAsgASkDoAEhDiADQTBqQgA3AwBBACEBIANBOGpBADoAACADQasBaiADQSRqKAIANgAAIAMgAykCHDcAowFBqcboAC0AABogA0IANwMoIANCgICAgIABNwI8IANBADYCREEgQQQQ7xsiBgRAIAZBADoAECAGIAo2AgwgBkEANgIIIAYgAykAoAE3ABEgBiAOQoCAgIBwgyAPhDcCACAGQRhqIANBpwFqKQAANwAAIANBPGoiAhDQFCACELAeDAELQQRBIBCiHwALIAAgBjYCBCAAIAE2AgAgA0GwAWokAAu+CwECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIAKAIAQQFrDiQAAQIDBAUGBwgJCgsMDQ4PEBESEyIUFRYXIhgZGhscHR4fICEiCyAAQQxqIgEQpRcgARCtHgwhCyAAQQxqIgEQphcgARCtHgwgCyAALQAgQQJHBEAgAEEYahDxDAsgACgCKCIBEKQX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ECECIAEtALABQaIBRg0BDAULIAEQiAggAS0AsAEiAkHAAEYNASACQaIBRw0CIAEQgw0hAiABEIgIIABBAzYCICAAIAI2AgAMBQsgARCDDSEFIAEQiAggASAFEMQQDAMLIANBIGogARDeEQwBCyABKQOoASEHIAEQiAggA0GRgYCAeDYCmAEgAyAHNwNwIAEgA0HwAGogA0GYAWoiAhDNFyADQgE3A5gBIAIQ8QwgA0KhxIgBNwOYASACEPEMIANCocSIATcDMCADQgE3AyggAyAHNwMgCwJAAkACQCABLQCwASIEQQdGBEAgARCICCABLQCwASIEQQJGDQELIANBADYCRAwBCyADQZgBaiEFIwBBkAJrIgIkACABNQKoASEHIAEQiAgCQAJAAkACQAJAAkACQAJAIAEtALABQfAARwRAIAIgASkDqAE3AwAgAkEMaiABENkZIAJBATYClAEgAkGcssQANgKQASACQgE3ApwBIAJBlgM2AjAgAkHwADoAiAIgAiACQSxqNgKYASACIAJBgAJqNgIsIAIgAkGIAmo2AoACIAJBQGsiBCACQZABahD3BCACQdQAaiACQRRqKAIANgIAIAIgAikCDDcCTCACIAQQkRAhBCABLQCwAUGiAUYNAQwHCyABEIgIIAEtALABQQlHBEAgAiABKQOoATcDGCACQSBqIAEQ2RkgAkEBNgKUASACQZyyxAA2ApABIAJCATcCnAEgAkGWAzYCMCACQQk6AIgCIAIgAkEsajYCmAEgAiACQYACajYCLCACIAJBiAJqNgKAAiACQUBrIgQgAkGQAWoQ9wQgAkHUAGogAkEoaigCADYCACACIAIpAiA3AkwgAkEYaiAEEJEQIQQgAS0AsAFBogFHDQYgARCDDSEGIAEQiAggASAGEMQQDAYLIAEQiAggAkGQAWogASACQYACahDLFCACKAKUASEEIAIoApABIgZBJkYNBCACQUBrIAJBmAFqQdAA/AoAACAGQQJHDQEgAkE4aiACQcgAaikDADcCACACIAIpA0A3AjAgAiAENgIsAkAgAS0AsAEiBEEHRgR/IAEQiAggAS0AsAEFIAQLQQNHBEAgAiABKQOoATcD6AEgAkH0AWogARDZGSACQQE2ApQBIAJBnLLEADYCkAEgAkIBNwKcASACQZYDNgKEAiACQQM6AI8CIAIgAkGAAmo2ApgBIAIgAkGIAmo2AoACIAIgAkGPAmo2AogCIAJBQGsiBCACQZABahD3BCACQdQAaiACQfwBaigCADYCACACIAIpAvQBNwJMIAJB6AFqIAQQkRAhBCABLQCwAUGiAUYNAQwFCyABEIgIQanG6AAtAAAaIAEpA6ABIQlBFEEEEO8bIgRFDQMgBCACKQIsNwIAIAUgBDYCCCAEQRBqIAJBPGooAgA2AgAgBEEIaiACQTRqKQIANwIAIAUgCUKAgICAcIMgB4Q3AgAMCAsgARCDDSEGIAEQiAggASAGEMQQDAMLIAEQgw0hBiABEIgIIAEgBhDEEAwFC0GMtMQAQShBtLTEABCcFAALQQRBFBCiHwALIAVBADYCCCAFIAQ2AgAgAkE0aiIFEKYXIAUQrR4MAwsgBUEANgIIIAUgBDYCAAwCCyAFQQA2AgggBSAENgIADAELIAVBADYCCCAFIAQ2AgALIAJBkAJqJAAgAygCmAEhAiADKAKgASIFBEAgAyAFNgJEIAMgAygCnAE2AkAgAyACNgI8IAEtALABIQQMAQsgAEEDNgIgIAAgAjYCAAwBCwJAAkAgBEH/AXFBAUcEQCADIAEpA6gBNwNIIANB1ABqIAEQ2RkgA0EBNgKcASADQZyyxAA2ApgBIANCATcCpAEgA0GWAzYCZCADQQE6AG8gAyADQeAAajYCoAEgAyADQegAajYCYCADIANB7wBqNgJoIANB8ABqIgIgA0GYAWoQ9wQgA0GEAWogA0HcAGooAgA2AgAgAyADKQJUNwJ8IANByABqIAIQkRAhAiABLQCwAUGiAUcNASABEIMNIQUgARCICCABIAUQxBAMAQsgARCICAJAIAEtALABIgJBCEcEQCADQQI2AnAgAiEFDAELIAEQiAggA0GYAWogAUEAEKYCIAMoApwBIQUgAygCmAEiBEECRwRAIANBkAFqIANBuAFqKQMANwMAIANBiAFqIANBsAFqKQMANwMAIANBgAFqIANBqAFqKQMANwMAIAMgAykDoAE3A3ggAyAFNgJ0IAMgBDYCcCABLQCwASEFDAELIABBAzYCICAAIAU2AgAMAgtBACEEIAVB/wFxQRJGBEAgAyABEIENIAMoAgQhBCADKAIAQQFxBEAgAEEDNgIgIAAgBDYCACACQQhHDQMgA0HwAGoQjRYMAwsgARCICAsgACADKQMgNwMIIABBEGogA0EoaikDADcDACAAQRhqIANBMGopAwA3AwAgATUCpAEhByAAQSBqIANB8ABqQSj8CgAAIAAgBDYCSCAAIAdCIIYgCIQ3AwAgAEHUAGogA0HEAGooAgA2AgAgACADKQI8NwJMDAQLIABBAzYCICAAIAI2AgALIANBPGoQmRgLIANBIGoQzxkMAQsgAEEDNgIgIAAgAjYCAAsgA0HAAWokAAukCQIWfwN+IwBBQGoiAyQAAkACfwJAAkACQAJAAkAgAi0AsAFBF0YEQCACEIgIIANBCGogAhDsDiADKAIMIQUgAygCCEEBcQ0BCyACEOcURQRAIAMgAikDqAE3AzggA0H1gICAeDYCICACIANBOGogA0EgahDNFwsCQCABKAI0KAIARQRAIAEoAgBFDQEgAjUCpAFCIIYhGSABKAIkIQkgASgCICEHIAEpAxghGyABKQMQIRogASgCDCESIAEoAgghCiABKAI4KAIAIQQgBUEAIAEoAkQtAAAiBkEBcRsNBCAZIASthCEZDAYLIAEoAjg1AgAhGiACNQKkASEZIABBEGogAUEo/AoAACAAIAU2AjggACAZQiCGIBqENwMIIABBCDYCACADQRxqIAFBMGooAAA2AAAgACABKAJcNgI8IAAgASgCPC0AADoAQCADIAEpACg3ABQgASgCRC0AACECIAEoAkgtAAAhBSABKAJMLQAAIQQgACABKAJAKAIANgJQIAAgBDoAViAAIAU6AFUgACACOgBUIABByABqIANBGGopAAA3AAAgACADKQARNwBBDAcLQQMhCCABKQMQIRsgASkDCCEaIAEoAkAoAgBBA0cNAQwDCyAAQQk2AgAgACAFNgIEAkAgASgCAEUEQCABQRBqEPEMDAELIAFBCGoQ6A8LIAFB3ABqEPEXIAFBKGoiABCSFCAAEMkdDAULIAMgASgCOCgCACIGIBpCIIinIgQgBCAGSRs2AjwgAyAGIAQgBCAGSxs2AjggA0G1gYCAeDYCICACIANBOGogA0EgahDNFyABKAJAKAIAIQgMAQsgA0GigYCAeDYCICADIBkgBK2EIhk3AzggAiADQThqIANBIGoQzRcgASgCRC0AACEGDAELIANBImogAUEvai0AADoAACADIAEvAC07ASAgAUEwaiELIAEoAjg1AgAgAjUCpAFC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BFENACAEIBI3AgAMAQsCQAJAAkACQAJAAkACQCABKAIIQQFrDgMBAgYACyADQShqIANBFGooAgA2AgAgAyADKQIMNwMgIANBGGogAigCBCADQSBqQcTQwABBCCACKAIIKAIcEQQAIAMtABhBBEYNAiADKQMYIhJC/wGDQgRRDQIgBCASNwIADAYLIANBKGogA0EUaigCADYCACADIAMpAgw3AyAgA0EYaiACKAIEIANBIGpB5tDAAEEBIAIoAggoAkQRBAAgAy0AGEEERg0CIAMpAxgiEkL/AYNCBFENAiAEIBI3AgAMBQsgA0EoaiADQRRqKAIANgIAIAMgAykCDDcDICADQRhqIAIoAgQgA0EgakHn0MAAQQEgAigCCCgCRBEEACADLQAYQQRGDQIgAykDGCISQv8Bg0IEUQ0CIAQgEjcCAAwECyADQSBqIAIoAgQgAigCCCgCGBEAACADLQAgQQRGDQIgAykDICISQv8Bg0IEUQ0CIAQgEjcCAAwDCyADQShqIANBFGooAgA2AgAgAyADKQIMNwMgIANBGGogAigCBCADQSBqQcTQwABBCCACKAIIKAIcEQQAAkAgAy0AGEEERg0AIAMpAxgiEkL/AYNCBFENACAEIBI3AgAMAwsgA0EgaiACKAIEIAIoAggoAhgRAAAgAy0AIEEERg0BIAMpAyAiEkL/AYNCBFENASAEIBI3AgAMAgsgA0EoaiADQRRqKAIANgIAIAMgAykCDDcDICADQRhqIAIoAgQgA0EgakHE0MAAQQggAigCCCgCHBEEAAJAIAMtABhBBEYNACADKQMYIhJC/wGDQgRRDQAgBCASNwIADAILIANBIGogAigCBCACKAIIKAIYEQAAIAMtACBBBEYNACADKQMgIhJC/wGDQgRRDQAgBCASNwIADAELIANBKGogA0EUaigCADYCACADIAMpAgw3AyAgA0EYaiACKAIEIANBIGpBn9DAAEEBIAIoAggoAkQRBAACQCADLQAYQQRGDQAgAykDGCISQv8Bg0IEUQ0AIAQgEjcCAAwBCyADQSBqIAFBGGogAhDNDwJAIAMtACBBBEYNACADKQMgIhJC/wGDQgRRDQAgBCASNwIADAELAkAgASgCPCIFRQ0AIANBIGogAigCBCACKAIIKAIYEQAAAkAgAy0AIEEERg0AIAMpAyAiEkL/AYNCBFENACAEIBI3AgAMAgsgA0EoaiADQRRqKAIANgIAIAMgAykCDDcDICADQRhqIAIoAgQgA0EgakHM0MAAQQIgAigCCCgCHBEEAAJAIAMtABhBBEYNACADKQMYIhJC/wGDQgRRDQAgBCASNwIADAILIANBIGogAigCBCACKAIIKAIYEQAAAkAgAy0AIEEERg0AIAMpAyAiEkL/AYNCBFENACAEIBI3AgAMAgsgA0EgaiAFIAIQ2wEgAy0AIEEERg0AIAMpAyAiEkL/AYNCBFENACAEIBI3AgAMAQsCQAJAAkACQAJAAkAgASgCQCIFRQ0AAkAgAi0AFQ0AIANBIGogAigCBCACKAIIKAIYEQAAIAMtACBBBEYNACADKQMgIhJC/wGDQgRSDQULIANBKGogA0EUaigCADYCACADIAMpAgw3AyAgA0EYaiACKAIEIANBIGpB+c/AAEEBIAIoAggoAkQRBAACQCADLQAYQQRGDQAgAykDGCISQv8Bg0IEUQ0AIAQgEjcCAAwHCwJAIAItABUNACADQSBqIAIoAgQgAigCCCgCGBEAACADLQAgQQRGDQAgAykDICISQv8Bg0IEUg0CCyADQSBqIAUgAhDbASADLQAgQQRGDQAgAykDICISQv8Bg0IEUg0CCyABKAJIIgVFDQQgA0EgaiACKAIEIAIoAggoAhgRAAAgAy0AIEEERg0CIAMpAyAiEkL/AYNCBFENAiAEIBI3AgAMBQsgBCASNwIADAQLIAQgEjcCAAwDCyADQShqIANBFGooAgA2AgAgAyADKQIMNwMgIANBGGogAigCBCADQSBqQYLQwABBAiACKAIIKAIcEQQAAkAgAy0AGEEERg0AIAMpAxgiEkL/AYNCBFENACAEIBI3AgAMAwsgA0EgaiACKAIEIAIoAggoAhgRAAACQCADLQAgQQRGDQAgAykDICISQv8Bg0IEUQ0AIAQgEjcCAAwDCyADQSBqIAUgAhDbASADLQAgQQRGDQEgAykDICISQv8Bg0IEUQ0BIAQgEjcCAAwCCyAEIBI3AgAMAQsgA0EoaiADQRRqKAIANgIAIAMgAykCDDcDICADQRhqIAIoAgQgA0EgakGg0MAAQQEgAigCCCgCRBEEAAJAIAMtABhBBEYNACADKQMYIhJC/wGDQgRRDQAgBCASNwIADAELAkACQAJAAkACQAJAIAEoAkxBAWsOAwECBQALIANBKGogA0EUaigCADYCACADIAMpAgw3AyAgA0EYaiACKAIEIANBIGpB6NDAAEEBIAIoAggoAkQRBAAgAy0AGEEERg0EIAMpAxgiEkL/AYNCBFENBCAEIBI3AgAMBQsgA0EoaiADQRRqKAIANgIAIAMgAykCDDcDICADQRhqIAIoAgQgA0EgakHm0MAAQQEgAigCCCgCRBEEACADLQAYQQRGDQEgAykDGCISQv8Bg0IEUQ0BIAQgEjcCAAwECyADQShqIANBFGooAgA2AgAgAyADKQIMNwMgIANBGGogAigCBCADQSBqQefQwABBASACKAIIKAJEEQQAIAMtABhBBEYNASADKQMYIhJC/wGDQgRRDQEgBCASNwIADAMLIANBKGogA0EUaigCADYCACADIAMpAgw3AyAgA0EYaiACKAIEIANBIGpB6NDAAEEBIAIoAggoAkQRBAAgAy0AGEEERg0BIAMpAxgiEkL/AYNCBFENASAEIBI3AgAMAgsgA0EoaiADQRRqKAIANgIAIAMgAykCDDcDICADQRhqIAIoAgQgA0EgakHo0MAAQQEgAigCCCgCRBEEACADLQAYQQRGDQAgAykDGCISQv8Bg0IEUQ0AIAQgEjcCAAwBCwJAIAEoAlAiAUUNACADQShqIANBFGooAgA2AgAgAyADKQIMNwMgIANBGGogAigCBCADQSBqQf/PwABBASACKAIIKAJEEQQAAkAgAy0AGEEERg0AIAMpAxgiEkL/AYNCBFENACAEIBI3AgAMAgsgA0EgaiACKAIEIAIoAggoAhgRAAACQCADLQAgQQRGDQAgAykDICISQv8Bg0IEUQ0AIAQgEjcCAAwCCyADQSBqIAEgAhDbASADLQAgQQRGDQAgAykDICISQv8Bg0IEUQ0AIAQgEjcCAAwBCyADQShqIANBFGooAgA2AgAgAyADKQIMNwMgIANBGGogAigCBCADQSBqIAIoAggoAhQRAwACQCADLQAYQQRGDQAgAykDGCISQv8Bg0IEUQ0AIAQgEjcCAAwBCyADQSBqIAIoAgQgAigCCCgCLBEAAAJAIAMtACBBBEYNACADKQMgIhJC/wGDQgRRDQAgBCASNwIADAELIANBIGogAigCBCACKAIIKAIQEQAAAkAgAy0AIEEERg0AIAMpAyAiEkL/AYNC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AgwgBCAFOgAQIAQgBjYCBCAEIAc2AgAgBCABNgIIIAEgAykCADcCACABQRhqIANBGGooAgA2AgAgAUEQaiADQRBqKQIANwIAIAFBCGogA0EIaikCADcCACACKAIkIQECQCACKAIgIgMoAhgiBCgCCEEBRw0AIAQoAgwNACACIAFBAEciATYCJCACKAIcIQQgAigCGCEFIAJBATYCGCACIAVBAXMgBEEAR3I2AhwLAkACQAJAIAEOAgABAgsgAigCGEEBRw0BIAIoAhwNASAAEL4ONgIYIABBADYCACADENgaDAYLIAIoAhhBAUcNACACKAIcQQFHDQAgACADKQIANwIAIABBGGogA0EYaigCADYCACAAQRBqIANBEGopAgA3AgAgAEEIaiADQQhqKQIANwIADAULIAAgAkEYahDEBTYCGCAAQQQ2AgAgACACKQIYNwIEIABBFGogAkEoaigCADYCACAAQQxqIAJBIGopAgA3AgAMBQsFIAEoAgQhAQwBCwsgAkEsaiIDIAEoAggiBCAEIAEoAgxBHGxqEOMLIAAgAxBNDAILIAJBLGoiAyABKAIIIgQgBCABKAIMQRxsahDjCyAAIAMQSgwBCyADQRxBBBD4HAsgAkHgAGokAAusCAEHfyMAQdAAayICJAAgAAJ/AkAgASgCFCIDIAEoAhAiBEkEQCABQQxqIQggASgCDCEHA0AgAyAHai0AACIFQQlrIgZBF0tBASAGdEGTgIAEcUVyDQIgASADQQFqIgM2AhQgAyAERw0ACwsgAkEFNgI0IAJBCGogAUEMahDQESAAIAJBNGogAigCCCACKAIMEKwTNgIEQQEMAQsCQAJAAkACQAJAAkACQCAAAn8CQCAFQdsARwRAIAVB+wBGDQEgASACQc8AakGUkeMAEL8DIQUMCQsCQCABLQAcRQRAIAEgAS0AHUEBayIGOgAdIAZB/wFxRQ0BC0EBIQQgASADQQFqNgIUIAJBAToASCACIAE2AkQgAkE0aiACQcQAahCpDCACKAI4IQMgAigCNCIGQQJGDQQgBkEBcUUEQEEAIQcMBAsgAkE0aiACQcQAahCpDCACKAI4IQYgAigCNCIFQQJGBEAgBiEDDAULQQEhByAFQQFxRQ0DQQAhBAwECyACQRg2AjQgAkEQaiAIENARIAJBNGogAigCECACKAIUEKwTDAELAkAgAS0AHEUEQCABIAEtAB1BAWsiBjoAHSAGQf8BcUUNAQsgASADQQFqNgIUIAJBAToASCACIAE2AkQgAkE0aiACQcQAahDJCQJAAkAgAi0ANEUEQEEAIQVBACEHA0ACQAJAAkACQAJAAkAgAi0ANUEBaw4DAgADAQsgAigCRCIEEPYIIgNFBEAgBBCZASIDRQ0FC0EBIQQMCAsgBQRAQQEhBEGEkuMAQQQQyA8hAwwICyACQRhqIAJBxABqEP4QQQEhBSACKAIcIgghA0EBIQQgAigCGEEBcQ0HDAMLIAdFDQFBASEEQYiS4wBBBhDIDyEDDAYLQQEhBCAFQQFxRQRAQYSS4wBBBBDHDyEDDAYLQQAhBCAIIQMgBw0FQYiS4wBBBhDHDyIDIQYMBAsgAkEgaiACQcQAahD+EEEBIQcgAigCJCIGIQNBASEEIAIoAiBBAXENBAsgAkE0aiACQcQAahDJCSACLQA0RQ0ACwsgAigCOCEDC0EBIQQLIAEtABxFBEAgASABLQAdQQFqOgAdCyACIAEQjgciBTYCQCACIAY2AjwgAiADNgI4IAIgBDYCNCAERQ0EIAVFDQYgAkFAaxDsDAwGCyACQRg2AjQgAkEoaiAIENARIAJBNGogAigCKCACKAIsEKwTCzYCBEEBDAcLIAdB7JHjABCpDSEDCyABLQAcRQRAIAEgAS0AHUEBajoAHQsgAiABEO4EIgU2AkAgAiAGNgI8IAIgAzYCOCACIAQ2AjQgBA0BCyAFRQ0CDAMLIAVFDQAgAkFAaxDsDAsgAyEFDAELIAAgBjYCCCAAIAM2AgRBAAwBCyAAIAUgARCqETYCBEEBCzYCACACQdAAaiQAC6wTARF/IwBB4ABrIgUkAAJAAkAgAS0A8QFFBEAgBUE0aiADQQF0QQFBARCCCiAFKAI4IQEgBSgCNEEBRwRAIAVBADYCMCAFIAUoAjw2AiwgBSABNgIoIAVBIGogBCgCGCITIAQoAhwiBxDhBSAFKAIkIAUoAiAhFCAFQQA2AlwgBUEAOwFYIAUgAzYCVCAFQQA2AlAgBUEBOgBMIAVBCjYCSCAFIAM2AkQgBUEANgJAIAUgAzYCPCAFIAI2AjggBUEKNgI0IAcgE2ohCSAUaiELIAQoAhAiFSAEKAIUIgxqIQ4gBUHHAGohDyAFQcgAaiEQA0ACfwJAIAUoAkQiASAFKAJAIgdJDQAgASAFKAI8IhFLDQAgBSgCOCESA0AgBSgCOCAHaiEGIA8gBS0ATCINai0AACEIAkACQAJAIAEgB2siCkEHTQRAIAEgB0YNAUEAIQQDQCAEIAZqLQAAIAhGDQQgCiAEQQFqIgRHDQALDAELIAVBGGogCCAGIAoQkQcgBSgCGEEBcQ0BIAUoAkQhAQsgBSABNgJADAMLIAUoAhwhBCAFLQBMIQ0gBSgCPCERIAUoAkAhBwsgBSAEIAdqQQFqIgc2AkACQCAHIA1JIAcgEUtyDQAgDUEFSQRAIAcgDWsiCiAFKAI4aiANIBAgDRCEGSAFKAJAIQdFBEAgBSgCPCERDAILIAUoAlAhASAFIAc2AlAgASASaiEEIAogAWsMBAsgDUEEQdyfwQAQph0ACyAFKAJEIgEgB0kNASABIBFNDQALCyAFLQBZDQQgBUEBOgBZAkAgBS0AWEEBRgRAIAUoAlQhByAFKAJQIQEMAQsgBSgCVCIHIAUoAlAiAUYNBQsgBSgCOCABaiEEIAcgAWsLIQcgBSAFKAJcIgFBAWo2AlwCQAJAIAEEQCAFKAIwIgEgBSgCKEYEQCAFQShqQbyfwQAQ+QoLIAUoAiwgAWpBCjoAACAFIAFBAWo2AjAgBUEQaiAEIAcQzQIgBSgCFEUNASAFQShqIBMgCRDCEAwCCyAFQQhqIAQgBxDNAiAFKAIMBEAgBUEoaiAVIA4QwhAMAgsgBSAVIAwQ4QUgBUEoaiAFKAIAIgEgASAFKAIEahDCEAwBCyAFQShqIBQgCxDCEAsgBUEoaiAEIAQgB2oQwhAgBS0AWUUNAAsMAgsgASAFKAI8QZyfwQAQtBoACyMAQSBrIgkkAAJAAkACQAJAAkAgAyAEKAIgTw0AIANBB00EQCADBEAgAiEBIAMhBwNAIAEtAABBCkYNAyABQQFqIQEgB0EBayIHDQALCyAEKAIUDQEMAgsgCUEIakEKIAIgAxCRByAJKAIIQQFGDQAgBCgCFEUNAQsjAEHQAGsiCCQAAkACQCADQQBIDQACQCADRQRAQQEhCgwBC0GpxugALQAAGkEBIQsgA0EBEO8bIgpFDQELIAhBADYCFCAIIAo2AhAgCCADNgIMIAQtACghECAIQSRqIgEgBEEs/AoAACAIQRhqIRIjAEHwAWsiBiQAIAZBCGogAUEs/AoAACAGLQAwIQQgBkEANgI8IAZCgICAgMAANwI0IAZBQGsiASACIANBhszBAEGEzMEAIAQbQQFBAiAEGxCAASAGQQE7AYgBIAYgAzYChAEgBkEANgKAASAGQZABaiABQdAA/AoAAAJAAkACQCAGLQDZAQ0AIAZBmAFqIQoDQCAGKALEASECIAYoAsABIQwCQAJAIAYoApABQQFGBEAgBigCzAEhAyAGKALIASEBIAYoArQBQX9GDQEgBkHkAWogCiAMIAIgASADQQAQnQQMAgtBACEHAkAgBi0AngENACAGLQCcASELIAYoApQBIQECQAJAA0ACQCABRQ0AIAEgAk8EQCABIAJGDQEMCgsgASAMaiwAAEFASA0JCyABIAJHBEACfyABIAxqIg8sAAAiDkEATgRAIA5B/wFxDAELIA8tAAFBP3EiAyAOQR9xIgRBBnRyIA5BX00NABogDy0AAkE/cSADQQZ0ciIDIARBDHRyIA5BcEkNABogBEESdEGAgPAAcSAPLQADQT9xIANBBnRycgshAyALQQFxDQJBASELAn9BASADQYABSQ0AGkECIANBgBBJDQAaQQNBBCADQYCABEkbCyABaiEBDAELCyAGIAI2ApQBIAYgC0F/c0EBcToAnAEgC0EBcQ0BIAZBAToAngEMAgsgBkEAOgCcASAGIAE2ApQBIAEhAgsgBiACNgLsASAGIAI2AugBQQEhBwsgBiAHNgLkAQwBCyAGQeQBaiAKIAwgAiABIANBARCdBAsgBigC5AFFBEAgBi0A2QENAgJAIAYtANgBQQFGBEAgBigC1AEhAiAGKALQASEBDAELIAYoAtQBIgIgBigC0AEiAUYNAwsgBigCwAEgAWogAiABayAGQQhqIAZBNGoQlQEMAgsgBigC0AEhAiAGIAYoAuwBNgLQASAGLQDZASACIAxqIAYoAugBIAJrIAZBCGogBkE0ahCVAUEBcUUNAAsLIBIgBikCNDcCACASQQhqIAZBPGooAgA2AgAgBkHwAWokAAwBCyAMIAIgASACQZjLwQAQ6RsACyAIKAIgIgEEQEGmwsEAQaTCwQAgEBsiBEEBQQIgEBtqIQMgAUEMbCEKIAgoAhxBBGohAkEAIQcDQCAHBEAgCEEMaiAEIAMQwhALIAhBDGogAigCACIBIAEgAkEEaigCAGoQwhAgAkEMaiECIAdBAWshByAKQQxrIgoNAAsLIAhBGGoiAyIBKAIIIgIEQCABKAIEIQEDQCABKAIAQYCAgIB4RwRAIAFBAUEBEPIMCyABQQxqIQEgAkEBayICDQALCyADQQRBDBDyDCAAQQhqIAhBFGooAgA2AgAgACAIKQIMNwIAIAhB0ABqJAAMAQsgCyADQdi/wQAQtBoACwwBCyAJIAIgAxCnCSAJKAIAIQEgCUEUaiAJKAIEIgRBAUEBEIIKIAkoAhghAyAJKAIUQQFGDQEgCSgCHCECIAQEQCACIAEgBPwKAAALIAAgBDYCCCAAIAI2AgQgACADNgIACyAJQSBqJAAMAQsgAyAJKAIcQci6wQAQtBoACwwBC0EAIQQjAEEQayIBJAAgAUEANgIMIAFBCjoADCADBEAgAUEMaiACIANBAWtqQQEQ2BFFIQQLIAFBEGokACAEBEAgBSgCMCIBIAUoAihGBEAgBUEoakG8n8EAEPkKCyAFKAIsIAFqQQo6AAAgBSABQQFqNgIwCyAAIAUpAig3AgAgAEEIaiAFQTBqKAIANgIACyAFQeAAaiQAC7MIAQl/IwBBIGsiAiQAIAIgACgCACIBQXxxNgIEAkACQAJAAkACQAJAAkACQCABQXtLBEAgAiABQQNxIgM2AgACQAJAAkACQAJAAkAgAw4EAAEBAgELIAJBADYCCEEBIAJB0JLiACACQQhqQfyS4gAQgxYACyAAIAAoAgAiA0EAIAEgA0cbNgIAIAEgA0YEQCACKAIAQQFrDgMCBAEDCyACIAM2AgQgA0F/Rw0FIAJBAzYCAAsgAEECNgIAIAJBATYCAAsgAEEBciIHQbnz3fF5bCEDA0BB8MboACgCACIBRQRAEIQSIQELIANBACABKAIIa3YiACABKAIEIgRPDQUgASgCACAAQQZ0aiIFIAUoAgAiAEEBIAAbNgIAIAAEQCAFELELCyABQfDG6AAoAgBHBEAgBSAFKAIAIgBBAWs2AgAgAEECcSAAQQRJcg0BIAUQzAYMAQsLIAUoAgQhASACQQA2AgggAkEANgIQIAFFDQkgBUEEaiEAIAJBEGohBiACQQxqIQhBACEDA0AgASgCBCEEAkAgByABKAIARwRAIAFBBGohACABIQMMAQsgACAENgIAIAEgBSgCCEYEQCAFIAM2AggLIAFBADYCCBC+FiACKAIQIgFBf0YEfwJAAkACQCACQQhqKAIIIgFBf0YNAEF/IAFndkEAIAEbIglBf0YNACAJQQFqIAFJDQEMAgtB+JDiAEERQYyR4gAQ4w8AC0GckeIAQSBBvJHiABCcFAALIAIoAgwhASAIBSAGCyABQQFqNgIACyAEIgENAAsMCQsgAkEANgIIQQAgAkHokuIAIAJBCGpB7JLiABCDFgALIABBufPd8XlsIQYDQEHwxugAKAIAIgFFBEAQhBIhAQsgBkEAIAEoAghrdiIDIAEoAgQiBE8NBCABKAIAIANBBnRqIgQgBCgCACIDQQEgAxs2AgAgAwRAIAQQsQsLIAFB8MboACgCAEcEQCAEIAQoAgAiAUEBazYCACABQQJxIAFBBElyDQEgBBDMBgwBCwsgBCgCBCIBRQ0GAn8gACABKAIARgRAQQAhAyAEQQRqDAELA0AgASIDKAIEIgFFDQggASgCACAARw0ACyADQQRqCyABKAIEIgY2AgAgBCgCCCABRg0EIAZFDQUDQCAGKAIAIABGDQYgBigCBCIGDQALDAULIAJBADYCCEEAIAJBBGpB4JHiACACQQhqQcCS4gAQgxYACyACQQA2AghBACACQQRqQdSS4gAgAkEIakHYkuIAEIMWAAsgACAEQYyQ4gAQjA4ACyADIARBjJDiABCMDgALIAQgAzYCCAsgAUEANgIIEL4WCyAEIAQoAgAiAEEBazYCACAAQQJxIABBBElyDQEgBBDMBgwBCyAFIAUoAgAiAEEBazYCACAAQQJxIABBBElyDQAgBRDMBgsgAkEgaiQAC4ARAgh/AX4jAEEwayIHJAACQAJAAkACQCADQYCAwABxRQRAIANBIHFFDQMgAikCACINpyIGQf7/e0sgBkUgDUKAgICAEFRxcg0DIAEoAgAgByANNwMgIAdBEGohCUEIaiEFIwBBMGsiBiQAAkACQAJAAkACQAJAAkACQAJAAkAgB0EgaikCACINpyIIIA1CIIinIgpNBEAgCEUgDUKAgICAEFRyDQIgBkEgaiILIAUgCBC9DSAGKQIkIQ0gBigCIEEBRw0BIAYgDTcDICALELkWIQUgCUGAgICAeDYCACAJIAU2AgQMBgtBqcboAC0AABpB0ABBBBDvGyIFRQ0CIAUgDTcCBCAFQQE2AgAgCSAFNgIEIAlBgICAgHg2AgAMBQsgBiANNwMQIAZBIGoiCCAFIAoQvQ0gBikCJCENAkACQCAGKAIgQQFGBEAgBiANNwMgIAgQuRYhBSAJQYCAgIB4NgIAIAkgBTYCBAwBCyAGKAIQIgooAkAhCyAGIA03AxgCQCANpygCQCALRgRAIA1CIIinIgggBigCFCIFSSAIIAooAkQgC2siC0tyDQEgBkEIaiAKQSBqENEdIAYoAgwhCiAGKAIIIQsgBUUNByAFIApJDQMgBSAKRw0KDAcLIAooAhAiCCAIKAIAIgVBAWo2AgAgBUEASA0FIAYoAhAoAkAhDCAGKAIYKAIQIgogCigCACIFQQFqNgIAIAVBAEgNBUGpxugALQAAGiAGKAIYIgs1AkAhDUHQAEEEEO8bIgVFDQogBSAMNgIIIAUgCDYCBCAFQQI2AgAgBSAKrSANQiCGhDcCDCAJIAU2AgQgCUGAgICAeDYCACALIAsoAgAiBUEBazYCACAFQQFGBEAgBkEYahDHCQsgBigCECIFIAUoAgAiBUEBazYCACAFQQFHDQcgBkEQahDHCQwHCyAKKAIQIgggCCgCACIFQQFqNgIAIAVBAEgNBEGpxugALQAAGiAGKAIcIQogBigCFCEMQdAAQQQQ7xsiBUUNCSAFIAo2AhAgBSAMNgIMIAUgCzYCCCAFIAg2AgQgBUEDNgIAIAkgBTYCBCAJQYCAgIB4NgIAIAYoAhgiBSAFKAIAIgVBAWs2AgAgBUEBRw0AIAZBGGoQxwkLIAYoAhAiBSAFKAIAIgVBAWs2AgAgBUEBRw0FIAZBEGoQxwkMBQsgBSALaiwAAEG/f0oNAwwGC0GpxugALQAAGkHQAEEEEO8bIgVFDQYgCSAFNgIEIAVBADYCACAJQYCAgIB4NgIADAMLQQRB0AAQoh8LAAsCQCANQoCAgIAQVA0AIAggCk8EQCAIIApHDQQMAQsgCCALaiwAAEG/f0wNAwsgBkEgaiAIIAVrIghBAUEBEIIKIAYoAiQhCiAGKAIgQQFGDQEgBigCKCEMIAgEQCAMIAUgC2ogCPwKAAALIAkgCDYCCCAJIAw2AgQgCSAKNgIAIAYoAhgiBSAFKAIAIgVBAWs2AgAgBUEBRgRAIAZBGGoQxwkLIAYoAhAiBSAFKAIAIgVBAWs2AgAgBUEBRw0AIAZBEGoQxwkLIAZBMGokAAwDCyAKIAYoAihB8JriABC0GgALIAsgCiAFIAhBzJ/iABDpGwALQQRB0AAQoh8ACyAHKAIQQYCAgIB4RgRAIAkQ5ggMBAsgB0EoaiAHQRhqKAIAIgk2AgAgByAHKQIQNwMgQQAhBiAJQQNPBEBBfyEGAkAgBygCJCIFIAlqIghBAWssAAAiCkEATg0AIApBP3ECfyAIQQJrLQAAIgrAIgtBv39KBEAgCkEfcQwBCyALQT9xAn8gCEEDay0AACIKwCILQb9/SgRAIApBD3EMAQsgC0E/cSAIQQRrLQAAQQdxQQZ0cgtBBnRyCyIIQQZ0ckGAgMQARg0DIAhBAkkNAEF+IQYgCEEgSQ0AQX1BfCAIQYAISRshBgsgBiAJaiIGBEAgBiAJTw0EIAUgBmosAABBv39MDQQLIAdBCGogBSAGEM0CIAcoAgghCCAHKAIMIQVBACEGIwBBEGsiCSQAIAlBADYCDCAJQSw6AAwgBQRAIAlBDGpBASAIIAVBAWtqQQEQhBkhBgsgCUEQaiQACyAHQSBqEModIAcoAhBBgICAgHhGBEAgB0EQahDmCAsgBkUNAwsgA0EQcUUNAiADQYCAgAFxQQAgAS0AFSIGQQFxGw0CIAdBADYCICAHQRBqIAEoAgQiCSAHQSBqQezHwABBASABKAIIIgUoAkQRBAACQCAHLQAQQQRGDQAgBykDECINQv8Bg0IEUQ0AIAAgDTcCAAwECyAGQQFxDQIgB0EgaiAJIAUoAhgRAAAgBy0AIEEERg0CIAcpAyAiDUL/AYNCBFENAiAAIA03AgAMAwtBsMjAABCpHQALIAUgCUEAIAZBwMjAABDpGwALAkAgBCgCAEUgA0EccUEcR3INACAEKQIEIg0gAikCAIVCgICAgBBUDQAgASgCDEUNACAHQSBqIAEgDUIgiKdBARCTASAHLQAgQQRGDQAgBykDICINQv8Bg0IEUQ0AIAAgDTcCAAwBCwJAIANBwABxRQ0AIAEtABVBAUYNACAHQSBqIAEoAgQgASgCCCgCEBEAACAHLQAgQQRGDQAgBykDICINQv8Bg0IEUQ0AIAAgDTcCAAwBCyABKAIAGgJAIANBgIAEcUUgA0ECcUEBdiADQQFxG0UEQCADQYABcUUNASABLQAVDQEgB0EgaiABKAIEIAEoAggoAhgRAAAgBy0AIEEERg0BIAcpAyAiDUL/AYNCBFENASAAIA03AgAMAgsgAS0AFQ0AIAdBIGogASgCBCABKAIIKAIsEQAAIActACBBBEYNACAHKQMgIg1C/wGDQgRRDQAgACANNwIADAELIABBBDoAAAsgB0EwaiQAC8wKAQJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgAoAgBBAWsOJAABAgMEBQYHCAkKCwwNDg8QERITIhQVFhciGBkaGxwdHh8gISILIABBDGoiARClFyABEK0eDCELIABBDGoiARCmFyABEK0eDCALIAAtACBBAkcEQCAAQRhqEPEMCyAAQShqEJAUDB8LIABBEGoQ7gEMHgsgAEEUahDuAQwdCyAAQRBqEO4BIABBFGoQ7gEMHAsCQCAAKAIYRQRAAkACQAJAAkACQAJAAkACQCAAQSBqIgEoAgAOCgABAgMEBwcFBwYJCyABQRhqEPEMIAFBKGoQ/hcMCAsgAUEQahDuASABQRhqEL0XDAcLIAFBGGoQ3BkMBgsgAUEMahDuAQwFCyABKAIQIgEQvRMgAUEwQQgQ+BwMBAsgAUEMahDuAQwDCyABQQxqEO4BIAFBEGoQyhkMAgsgAUEMahDuASABKAIQIgEQugMgAUH4AEEIEPgcDAELAkACQAJAAkAgAEEcaiIBKAIADgIAAQMLIAFBDGoiAhDRFCACEPMdDAELIAFBDGoiAhDhCyACELAeCyABQRxqEP4XCwsgAEHQAGoQ7gEMGwsgAEEQahDuASAAQRhqEL0XDBoLIABBGGoQ3BkMGQsgAEEMahDuASAAQRBqEO4BIABBFGoQ7gEMGAsgACgCEEECTwRAIABBFGoQ7gELIABBIGoiARCRFCABEK0eIAAoAixFDRcgAEEsahDKGQwXCyAAQRBqEO4BIAAoAhRBgICAgHhHBEAgAEEUaiIBEJEUIAEQrR4LIAAoAiBFDRYgAEEgahDKGQwWCyAAQQxqIgEQ0hQgARDhHQwVCyAAQRhqEPEMDBQLAkACQAJAAkACQCAAKAIIDgYBGBgCAwQACyAAQRhqEPEMIABBIGoQ8QwMFwsgAEEQahDPGQwWCyAAKQMgUA0VIABBIGoQ8QwMFQsgAEEQahDQGQwUCyAAQRhqEPEMIABBIGoQ8QwMEwsgAEEEahCOGQwSCyAAQRBqEO4BIAAoAhQEQCAAQRRqEMoZCyAAKAIYIgEQjhkgAUEgQQQQ+BwMEQsgAEEQaiIBEKAXIAEQ8x0CQCAAKAIcIgEoAgBFBEAgAUEQaiIBEKgXIAEQsR4MAQsgAUEEahDuAQsgACgCHEEcQQQQ+BwgAEEkahCcGCAAQShqEP4XDBALIAAtACBBAkcEQCAAQRhqEPEMCyAAKAIoEMAPIAAoAihBwABBBBD4HAwPCyAAKAIMRQ0OIABBDGoQ7gEMDgsgAEEMahDuAQwNCyAAQQxqEO4BDAwLIABBCGoQ3BYMCwsgAEEYahDxDCAAQShqEPEMDAoLIAAoAgQiAUEIahDUFSABQdgAaiICEKEXIAIQrx4gASgCaARAIAFB6ABqEMoZCyABQfAAaiICEJ8XIAIQqx4gASgCiAFBA0cEQCABQYgBahDUFQsgAUHQAUEIEPgcDAkLIABBFGoiARCfFyABEKseDAgLIABBDGoQ7gEgACgCECIBELoDIAFB+ABBCBD4HAwHCyAAQQxqEO4BDAYLIABBDGoQ7gEMBQsgAEEMahDuASAAKAIQIgEQugMgAUH4AEEIEPgcDAQLIABBDGoQ7gEgAEEQahDKGQwDCyAAQQxqEO4BIAAoAhAiARC6AyABQfgAQQgQ+BwMAgsgAEEQahDxDAwBCyAAKAIQEL0TIAAoAhBBMEEIEPgcCyAAQdgAQQgQ+BwLiggCB38BfiMAQYABayIBJAACQAJAAkACQAJAAkAgACgCAEEEaw4EAAECAwULIAFBCGogACgCDBCBEiABKAIMRQ0EDAMLIAFBEGogACgCBBCBEiABKAIURQ0DDAILIAAoAgwNAQwCCyAAKAIMRQ0BC0GpxugALQAAGgJAQRxBBBDvGyICBEAQvg4hAyACIAApAgA3AgAgAEEANgIAIAJBGGogAEEYaiIEKAIANgIAIAJBEGogAEEQaikCADcCACACQQhqIABBCGopAgA3AgAgBCADNgIAIAEgAjYCICABQQE2AhwgAUHIAGohAEEBIQIDQCABQTBqIgYgASgCICIDIAJBAWsiBUEcbGoiBEEMaikCADcDACABQThqIgcgBEEUaikCADcDACABIAU2AiQgASAEKQIENwMoAkACQAJAAkACQCAEKAIAIgRBCEcEQCAAIAEpAyg3AgAgAEEIaiAGKQMANwIAIABBEGogBykDADcCACABIAQ2AkQgBEEEaw4EAgMBBAULIAVFDQcgAkEBayEAA0AgAxCKCiADQRxqIQMgAEEBayIADQALDAcLIAEoAlAhAiABQQA2AlAgAUEANgJwIAEgAjYCbCABIAA2AmggASABKAJMIgM2AmAgASADIAJBHGxqNgJkIAFBHGogAUHgAGoQmAcMAwsgASgCUCECEL4OIQMgAikCACEIIAJBADYCACABQfgAaiIEIAJBGGoiBSgCADYCACABQfAAaiIGIAJBEGopAgA3AwAgAUHoAGoiByACQQhqKQIANwMAIAUgAzYCACABIAg3A2AgASgCJCIDIAEoAhxGBEAgAUEcakGsicsAEMsSCyABKAIgIANBHGxqIgIgASkDYDcCACACQQhqIAcpAwA3AgAgAkEQaiAGKQMANwIAIAJBGGogBCgCADYCACABIANBAWo2AiQMAgsgASgCSCECEL4OIQMgAikCACEIIAJBADYCACABQfgAaiIEIAJBGGoiBSgCADYCACABQfAAaiIGIAJBEGopAgA3AwAgAUHoAGoiByACQQhqKQIANwMAIAUgAzYCACABIAg3A2AgASgCJCIDIAEoAhxGBEAgAUEcakG8icsAEMsSCyABKAIgIANBHGxqIgIgASkDYDcCACACQQhqIAcpAwA3AgAgAkEQaiAGKQMANwIAIAJBGGogBCgCADYCACABIANBAWo2AiQMAQsgASgCUCECIAFBADYCUCABQQA2AnAgASACNgJsIAEgADYCaCABIAEoAkwiAzYCYCABIAMgAkEcbGo2AmQgAUEcaiABQeAAahCYBwsgAUHEAGoQ3hogASgCJCICDQALDAELQQRBHBCiHwALIAFBHGpBBEEcEPIMCyABQYABaiQAC4kMAgl/A34jAEHgAGsiAyQAAkACQAJAAkAgAigCCCIFBEAgASgCCCIERQ0BAkACQAJAAkAgBUEBRgRAIAIoAgQiBCgAAEEBRg0BIANB1ABqIgIgARCJDCADQTBqIQkgBCgCACEIIwBBIGsiBiQAAkAgCARAIAIoAgghByACKAIEIQECQCAIQYCABE8EQCAHDQEMAwsgB0UNAiABQQRrIQsgB0ECdCEFA0AgBSALaiIBIAEoAgAiBEEQdiIBIAEgCkEQdHIgCG4iByAIbGtBEHQgBEH//wNxciIEIAhuIgEgB0EQdHI2AgAgBCABIAhsayEKIAVBBGsiBQ0ACwwCCyABQQRrIQQgB0ECdCEFIAitIQ0DQCAEIAVqIgEgATUCACAMQiCGhCIOIA2AIgw+AgAgDiAMIA1+fSEMIAVBBGsiBQ0ACyAMpyEKDAELIAZBADYCGCAGQQE2AgwgBkGYneYANgIIIAZCBDcCECAGQQhqQaCd5gAQ6BcACyAGQRBqIAJBCGooAgAiBDYCACAGIAIpAgA3AwgCQCAERQ0AIAYoAgwiByAEQQJ0IgFqQQRrIgJFDQAgAigCAA0AIAdBBGshByAEQf////8DcSEFAkADQCABRQRAQQAhAQwCCyAFQQFrIQUgASAHaiABQQRrIQEoAgBFDQALIAVBAWoiASAESw0BCyAGIAE2AhAgASEECwJAIAQgBigCCEECdk8NACAGIAZBCGogBEEEQQQQ5QggBigCACIBQYGAgIB4Rg0AIAEgBigCBEHMoOYAELQaAAsgCSAGKQMINwIAIAlBCGogBkEQaigCADYCACAJIAo2AgwgBkEgaiQAIANBCGoiASADQThqIgQoAgA2AgAgAyADKQIwNwMAIAMoAjwhAiAEQbid5gAoAgA2AgAgA0GwneYAKQIANwMwIAIEQCAJQcif5gAQyRIgAygCNCACNgIAIANBATYCOAsgACADKQMwNwIMIABBFGogBCgCADYCACAAQQhqIAEoAgA2AgAgACADKQMANwIADAkLIAQgBUcEfyAEIAVLIAQgBUlrBSAFQQJ0IQggASgCBEEEayEJIAIoAgRBBGshCwNAIAhFDQQgCCALaiEHIAggCWogCEEEayEIKAIAIgogBygCACIERg0ACyAEIApJIAQgCktrC0H/AXEOAgIDAQsgACABEIkMIABBFGpBuJ3mACgCADYCACAAQbCd5gApAgA3AgwMBwsgAEEMaiABEIkMIABBCGpBuJ3mACgCADYCACAAQbCd5gApAgA3AgAMBgtBqcboAC0AABpBBEEEEO8bIgFFDQMgAEEBNgIIIAAgATYCBCAAQQE2AgAgAUEBNgIAIABBsJ3mACkCADcCDCAAQRRqQbid5gAoAgA2AgAMBQsgAigCBCIJIAVBAnRqQQRrIgRFDQMgBCgCACILZyIHRQRAIANBMGoiAiABEIkMIAAgAiAJIAUQmAEMBQsgAyABNgI0IANBgICAgHg2AjAgA0HIAGoiBCADQTBqIgogC0UiCSAHQR9xIgsQrAEgAyACNgI0IANBgICAgHg2AjAgA0HUAGoiASAKIAkgCxCsASAKIAQgAygCWCADKAJcEJgBIANBGGogA0E4aigCADYCACADQShqIANBxABqKAIANgIAIAMgAykCMDcDECADIAMpAjw3AyAgAUEEQQQQ8gwCQCADKAIkIgcgA0EgaiIEIAMoAiAiAkGAgICAeEYiARsoAggEQCAKIAQgCSALEN4CDAELIAFFBEAgAyADKAIoNgI4IAMgBzYCNCADIAI2AjAMAQsgA0EwaiAHEIkMCyAAIAMpAxA3AgAgACADKQIwNwIMIABBCGogA0EYaigCADYCACAAQRRqIANBOGooAgA2AgAMBAsgA0EANgJAIANBATYCNCADQZid5gA2AjAgA0IENwI4IANBMGpBzJ3mABDoFwALIABBCGpBuJ3mACgCACIBNgIAIABBsJ3mACkCACIMNwIAIAAgDDcCDCAAQRRqIAE2AgAMAgtBBEEEEKIfAAtBvJ3mABCpHQALIANB4ABqJAALpAwBB38jAEHwAGsiByQAIAAoAgQhDCAAKAIAIQkgB0EANgIMAkACQAJAIAktABBBAUcNACAJKAIAIQgCQCAMRQRAIAcgCUEMaq1CgICAgPAFhDcDECAHQoCAgICAhICAaDcCQCAHQoCAEDcCOCAHQQI7ATAgB0EBNgJsIAdBAjYCXCAHQdDZ5gA2AlggB0EBNgJkIAhBBGooAgAhCiAHIAdBMGoiCzYCaCAHIAdBEGoiDTYCYCAIKAIAIAogB0HYAGoQzgMNAyAJLQAQQQFHDQEgCSgCACEIIAdCgICAgKABNwMYIAcgB0EMaq1CgICAgND5AYQ3AxAgB0KAgICAgISAgGg3AkAgB0KBgICAEDcCOCAHQQI7ATAgB0EBNgJsIAdBAjYCXCAHQeTZ5gA2AlggB0ECNgJkIAhBBGooAgAhCiAHIAs2AmggByANNgJgIAgoAgAgCiAHQdgAahDOAw0DDAELIAgoAgBB9NnmAEEGIAhBBGooAgAoAgwRBQANAiAJLQAQQQFHDQAgCSgCACEIIAdCgICAgNABNwMYIAdBrMnmADYCWCAHQqzJ5oDg+QE3AxAgB0KAgICAgISAgGg3AkAgB0KBgICAEDcCOCAHQQI7ATAgB0EBNgJsIAdBATYCXCAHQQI2AmQgCEEEaigCACEKIAcgB0EwajYCaCAHIAdBEGo2AmAgCCgCACAKIAdB2ABqEM4DDQILAkACQCABKAIAQQNHBEAgCS0AEEUNASAHQdAAaiABQSBqKQIANwMAIAdByABqIAFBGGopAgA3AwAgB0FAayABQRBqKQIANwMAIAdBOGogAUEIaikCADcDACAHIAEpAgA3AzAgCSgCACEBIAcgB0Ewaq1CgICAgPD5AYQ3AxAgB0EBNgJcIAdBrMnmADYCWCAHQgE3AmQgAUEEaigCACEIIAcgB0EQajYCYCABKAIAIAggB0HYAGoQzgNFDQIMBAsgCSgCACIBKAIAQazX5gBBCSABQQRqKAIAKAIMEQUADQMMAQsgB0HQAGogAUEgaikCADcDACAHQcgAaiABQRhqKQIANwMAIAdBQGsgAUEQaikCADcDACAHQThqIAFBCGopAgA3AwAgByABKQIANwMwIAkoAgAhASAHIAdBMGqtQoCAgIDw+QGENwMoIAdCgICAgICEgMBgNwJoIAdBAjsBYCAHQQI7AVggB0EBNgIkIAdBATYCFCAHQazJ5gA2AhAgB0EBNgIcIAFBBGooAgAhCCAHIAdB2ABqNgIgIAcgB0EoajYCGCABKAIAIAggB0EQahDOAw0CCyAJKAIAQZTY5gBBARDQGw0BIAIoAgBBAkYNAEEBIQEgA0EBcUUNACMAQdAAayIDJAAgAyAENgIMAkAgCS0AEEEBRgRAIAkoAgAhCCADQoCAgICgATcDMCADQazJ5gA2AhAgA0KsyeaA4PkBNwMoIANCgICAgICEgIBoNwJIIANCgYCAgBA3AkAgA0ECOwE4QQEhBCADQQE2AiQgA0EBNgIUIANBAjYCHCAIQQRqKAIAIQogAyADQThqNgIgIAMgA0EoajYCGCAIKAIAIAogA0EQahDOAw0BCyAJKAIAIgQoAgBB+tnmAEEQIARBBGooAgAoAgwRBQAEQEEBIQQMAQsgCSgCBCAJKAIIIQogA0HEAGogAkEIaigCADYCACADIAkoAgAiCzYCOCADIAIpAgA3AjxBASEEIAsgA0E8aiAKKAIQEQUADQAgCSgCACECIAMgA0EMaq1CgICAgPAFhDcDECADQQE2AjwgA0GM2uYANgI4IANCATcCRCACQQRqKAIAIQggAyADQRBqIgo2AkAgAigCACAIIANBOGoiCBDOAw0AIAVBAXEEQCADIAY2AiggCSgCACECIAMgA0Eoaq1CgICAgPAFhDcDECADQQE2AjwgA0GM2uYANgI4IANCATcCRCACQQRqKAIAIQUgAyAKNgJAIAIoAgAgBSAIEM4DDQELIAkoAgAiAigCAEGU2OYAQQEgAkEEaigCACgCDBEFACEECyADQdAAaiQAIAQNAgsgACAMQQFqNgIEQQAhAQwBC0EBIQELIAdB8ABqJAAgAQuVCgECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIAKAIAQQFrDiQAAQIDBAUGBwgJCgsMDQ4PEBESEyIUFRYXIhgZGhscHR4fICEiCyAAQQxqIgEQpRcgARCtHgwhCyAAQQxqIgEQphcgARCtHgwgCyAALQAgQQJHBEAgAEEYahDxDAsgAEEoahC8DwwfCyAAQRBqEPIBDB4LIABBFGoQ8gEMHQsgAEEQahDyASAAQRRqEPIBDBwLAkAgACgCGEUEQAJAAkACQAJAAkACQAJAAkAgAEEgaiIBKAIADgoAAQIDBAcHBQcGCQsgAUEYahDxDCABQShqEO8XDAgLIAFBEGoQ8gEgAUEYahC4FwwHCyABQRhqENEZDAYLIAFBDGoQ8gEMBQsgASgCECIBELoTIAFBMEEIEPgcDAQLIAFBDGoQ8gEMAwsgAUEMahDyASABQRBqEMoZDAILIAFBDGoQ8gEgASgCECIBEKYDIAFB+ABBCBD4HAwBCwJAAkACQAJAIABBHGoiASgCAA4CAAEDCyABQQxqIgIQ0RQgAhDzHQwBCyABQQxqIgIQ4QsgAhCwHgsgAUEcahDvFwsLIABB0ABqEPIBDBsLIABBEGoQ8gEgAEEYahC4FwwaCyAAQRhqENEZDBkLIABBDGoQ8gEgAEEQahDyASAAQRRqEPIBDBgLIAAoAhBBAk8EQCAAQRRqEPIBCyAAQSBqIgEQkRQgARCtHiAAKAIsRQ0XIABBLGoQyhkMFwsgAEEQahDyASAAKAIUQYCAgIB4RwRAIABBFGoiARCRFCABEK0eCyAAKAIgRQ0WIABBIGoQyhkMFgsgAEEMaiIBENIUIAEQ4R0MFQsgAEEYahDxDAwUCwJAAkACQAJAAkAgACgCCA4GARgYAgMEAAsgAEEYahDxDCAAQSBqEPEMDBcLIABBEGoQzxkMFgsgACkDIFANFSAAQSBqEPEMDBULIABBEGoQzhcMFAsgAEEYahDxDCAAQSBqEPEMDBMLIABBBGoQjhkMEgsgAEEEahCXFwwRCyAAQQRqEIcPDBALIAAtACBBAkcEQCAAQRhqEPEMCyAAKAIoIgFBDGoiAhCSFCACEMkdIAFBGGoiAhDwAyACEK8eIAEoAiQEQCABQSRqEPIBCyABKAIsBEAgAUEsahDLGQsgASgCMARAIAFBMGoQyhkLIAFBNGoiARCvEiABEK0eIAAoAihBwABBBBD4HAwPCyAAKAIMRQ0OIABBDGoQ8gEMDgsgAEEMahDyAQwNCyAAQQxqEPIBDAwLIABBCGoQ0RYMCwsgAEEYahDxDCAAQShqEPEMDAoLIAAoAgQiAUEIahDwFyABQfAAaiICEJ8XIAIQqx4gASgCiAFBA0cEQCABQYgBahC3FQsgAUHQAUEIEPgcDAkLIABBFGoiARCfFyABEKseDAgLIABBDGoQ8gEgACgCECIBEKYDIAFB+ABBCBD4HAwHCyAAQQxqEPIBDAYLIABBDGoQ8gEMBQsgAEEMahDyASAAKAIQIgEQpgMgAUH4AEEIEPgcDAQLIABBDGoQ8gEgAEEQahDKGQwDCyAAQQxqEPIBIAAoAhAiARCmAyABQfgAQQgQ+BwMAgsgAEEQahDxDAwBCyAAKAIQELoTIAAoAhBBMEEIEPgcCyAAQdgAQQgQ+BwLvgcCDn8DfiMAQUBqIgMkACADIAIoAkg2AhggAigCOCEGIAItAEwhByACKAIoIQ4gAi0ATSEPIAItAE4hECACKAI0IQggAyACLQBPOgAeIAMgAi0AUDoAHyACQTxqIQQCQCABKAJsIgVBgICAEHFFBEAgASAFQYCAgBByNgJsIANBMGogBEEIaigCADYCACADIAQpAgA3AyggAyADQR9qNgI8IAMgA0EeajYCOCADIANBGGo2AjQgA0EIaiABIANBKGoQgQsgAygCDCEFIAMoAgghBCABIAEoAmxB////b3E2AmwMAQsgA0EwaiAEQQhqKAIANgIAIAMgBCkCADcDKCADIANBH2o2AjwgAyADQR5qNgI4IAMgA0EYajYCNCADQRBqIAEgA0EoahCBCyADKAIUIQUgAygCECEECwJAIARBAXEEQCAAQQk2AgAgACAFNgIEIAIQ0hkMAQsCQAJAIAhBAWsOAgAAAQsgAS0AdUEgcUUNACABLQB2DQAgAwJ/IAJBCGoiBCACKAIAQQFHDQAaAkACQAJAAkACQCAEKAIAQQFrDgQBAgMEAAsgAkEQagwECyACQRBqDAMLIAJBEGoMAgsgAkEMagwBCyACQRBqCykCADcDICADQYCBgIB4NgIoIAEgA0EgaiADQShqEM0XCwJ/AkACQCACKAIABEAgAkEIaiECIAE1AqQBQiCGIREgAygCGCEEIAdBAXENAQwCCyABNQKkAUIghiETIAIpAxAhESACKQMIIRIgAygCGCECIAZBA0cEQCADIAIgEkIgiKciBCACIARLGzYCJCADIAIgBCACIARJGzYCICADQbWBgIB4NgIoIAEgA0EgaiADQShqEM0XCyAAIBI3AxAgAEECNgIAIAAgEyACrYQ3AwhBMiECQTEhBEEwIQlBLCEKQSghC0EkIQxBICENQRgMAgsgBSgCMEGAgICAeEYNACADQaGBgIB4NgIoIAMgESAErYQ3AyAgASADQSBqIANBKGoQzRcLIABBATYCACAAIAIpAwA3AxAgAEEoaiACQRhqKQMANwMAIABBIGogAkEQaikDADcDACAAQRhqIAJBCGopAwA3AwAgESAErYQhEUHCACECQcEAIQRBwAAhCUE8IQpBOCELQTQhDEEwIQ1BCAshASAAIA1qIAU2AgAgACAMaiAINgIAIAAgC2ogDkEARzoAACAAIAFqIBE3AwAgACAKaiAGNgIAIAAgBGogDzoAACAAIAlqIAc6AAAgACACaiAQOgAACyADQUBrJAALwwgBDH8jAEFAaiIFJAACQCADKAIIRQRAIAAoAgAiCygC0AIiACABSwRAAkACQAJAAkAgCygCzAIgAUEUbGooAgBBA2tBBE8EQCAFIAE2AgQgASAEKAIUIgBPDQQCQCAEKAIQIAFBAnRqIgYoAgAiAyAEKAIYIgJPBEAgBCgCCCEADAELIAMgBCgCCCIATw0EIAQoAgQgA0ECdGooAgAgAUYNAgsgBSACNgIIIAAgAk0NAiAEKAIEIAJBAnRqIAE2AgAgBCACQQFqNgIYIAYgAjYCAAwBCyADKAIARQRAIANB8LbJABDJEgsgAygCBCABNgIAIAQoAhghACAEKAIEIQ0gBCgCCCEJIAQoAhAhDyAEKAIUIQpBASEBA0AgAyABQQFrIgE2AgggBSADKAIEIAFBAnRqKAIAIgE2AgQCfwJAAkACQAJAIAEgCkkEQCAAIAkgACAJSxshECANIABBAnRqIQwDQAJAAkAgDyABQQJ0aiIIKAIAIgcgACIGSQRAIAcgCU8NBSANIAdBAnRqKAIAIAFGDQELIAUgBjYCCCAGIBBGDQUgDCABNgIAIAEgCkkNASABIApB4LjJABCMDgALIAYMBwsgCCAGNgIAIAQgBkEBaiIANgIYIAEgCygC0AIiB08NBAJAAkACQAJAAkACQCALKALMAiABQRRsaiIBKAIAQQNrDgQBAAMCCwsgASgCCCIHDQMMCgsgASgCCCACcUUNCQsgASgCBCEBDAILIAEoAgghByABKAIEIQEgAygCCCIGIAMoAgBGBEAgA0GQt8kAEMkSCyADKAIEIAZBAnRqIAc2AgAgAyAGQQFqNgIIDAELIAEoAgQiBigCACEBIAYgB0ECdGoiByAGQQRqIg5rQQJ2IgggAygCACADKAIIIgZrSwRAIAMgBiAIQQRBBBDIEyADKAIIIQYLIAcgDkcEQCADKAIEIAZBAnRqIQgDQCAIIAdBBGsiBygCADYCACAIQQRqIQggBkEBaiEGIAcgDkcNAAsLIAMgBjYCCAsgDEEEaiEMIAUgATYCBCABIApJDQALCyABIApB8LjJABCMDgALIAcgCUGAuckAEIwOAAsgBUEDNgIQIAVBuLjJADYCDCAFQgM3AhggBUHfCTYCOCAFQZMKNgIwIAVBkwo2AiggBSAJNgI8DAoLIAEgB0HArskAEIwOAAsgBkEBagshACADKAIIIgENAAsLIAVBQGskAA8LIAVBAzYCECAFQbi4yQA2AgwgBUIDNwIYIAVB3wk2AjggBUGTCjYCMCAFQZMKNgIoIAUgADYCPAwECyADIABBgLnJABCMDgALIAEgAEHwuMkAEIwOAAsgASAAQcCuyQAQjA4AC0HMtckAQSJB4LbJABCcFAALIAUgBUEkajYCFCAFIAVBBGo2AjQgBSAFQTxqNgIsIAUgBUEIajYCJCAFQQxqQdC4yQAQ6BcAC40QAg1/A34jAEHgBWsiBCQAIAQgAjYCDCAEQeAAaiEHIARBDGohBSMAQUBqIgYkAAJAIAEoAgBBAXEEQCAGQThqIAFBKGopAwA3AwAgBkEwaiABQSBqKQMANwMAIAYgASkDEDcDICAGIAFBGGopAwA3AygMAQsgBkE4akIANwMAIAZBMGpCADcDACAGQgA3AyggBkIANwMgCwJAAkAgBSgCAC8AuQJBswZxRQ0AIAEtAFtBAXFFBEBBgAEhBQJAA0AgBUH/AXFBAWoiA0H/AXEgA0YEQCAGQRBqIAZBIGogBUGAAXFBA3ZqIggpAwAgCCkDCCAFQf8AcRDkDiADIQUgBikDEEIBg1BFDQEMAgsLIAYpAzhCAFMNAgsgB0GxATYCCCAHQbT5yQA2AgQgB0EsNgIADAILQYABIQUDQCAGIAVB/wBxEOUOIAZBIGogBUEDdkEQcWoiAyAGKQMAIAMpAwCENwMAIAMgBikDCCADKQMIhDcDCCAFQf8BcUEBaiIFQf8BcSAFRg0ACwsgByAGKQMgNwMQIAdBLTYCACAHQRhqIAYpAyg3AwAgB0EoaiAGQThqKQMANwMAIAdBIGogBkEwaikDADcDAAsgBkFAayQAAkACQAJAAkAgBCgCYCIFQS1HBEAgBEE0aiIBIAdBBHJBLPwKAAAgAEHIAGogBEGYAWopAwA3AwAgACAEKQOQATcDQCAAQRRqIAFBLPwKAAAgAEIANwMIIABCAjcDACAAIAU2AhAMAQsgBEGwAWogBEGAAWopAwAiEDcDACAEQbgBaiAEQYgBaikDACIRNwMAIARBKGogETcDACAEQSBqIBA3AwAgBCAEKQNwIhA3A6ABIAQgEDcDECAEIARB+ABqKQMAIhA3A6gBIAQgEDcDGCAEQcABaiEGIARBDGoiCSEDIARBEGohByMAQYACayIFJAACQCABLQBaIghBAkYgCEEBcXJFBEBBACEDIAVBAEGAAvwLAANAIAMgBWogAzoAACADQQFqIgNBgAJHDQALIAYgBUGAAvwKAAAMAQsgBUEQaiADKAIAIgNBoAJqKQMANwMAIAVBGGogA0GoAmopAwA3AwAgBSADKQOQAjcDACAFIANBmAJqKQMANwMIIAdB0P3JAEEgENgRBEAjAEEQayIDJAAgA0EANgIMIAMgBzYCCCADQQhqEI0GIgdBAXEEQCAHQf///wdxIghBCHYhByAIQRB2IQgDQCAFIAcgCBDVCiADQQhqEI0GIgpB////B3EiB0EQdiEIIAdBCHYhByAKQQFxDQALCyADQRBqJAALIAYgBRD0CQsgBUGAAmokACABLQBZQQFxIwBBEGsiBSQAIAkoAgAhA0EYIQcEQCADKALcAkEYbEEYaiEHCyAGLQD/ASEJIAMoAtACIQYgBRCpCiAFIAUoAgQiCjYCDCAFIAUoAgAiCDYCCCAIIAgoAgAiCEEBazYCACAIQQFGBEAgBUEIahDwFgsgAygC3AIhAyAFQRBqJAACQCABKAJEIghBgICAASABKAJAIgwbIgUgBkEFbCADQQJ0akEJaiIDIAZBDGxBFEEgIAlBAWpna3RqIAdqIApBA2xqaiADQQF0akHkAGoiA0kEQCABLQBdQQFxRQ0BIAMhBQsgBC0AvwMhByAEQcADaiMAQYACayIDJAAgA0EAQYAC/AsAIANBOGpBgQI7AAAgA0HJAGpCgYKEiJCgwIABNwAAIANB0QBqQoGChIiQoMCAATcAACADQdkAakGBAjsAACADQekAakKBgoSIkKDAgAE3AAAgA0HxAGpCgYKEiJCgwIABNwAAIANB+QBqQYECOwAAIANBAToAXyADQQQ6AA0gA0KBgoSIkKDAgAE3ADAgA0KBgoSIkKDAgAE3AEEgA0KBgoSIkKDAgAE3AGEgAkHgAmotAAAhBiADQQM6AAoCQAJAIAZBCmsOBAEAAAEACyADIAZqQQU6AAALIANBgAL8CgAAIANBgAJqJAAgAS0AWCEGIAEtADwiA0EDRiADQQJGcg0DIAEoAjAiCyALKAIAIglBAWo2AgAgCUEASA0CIAEoAjghDSABKAI0IQ4MAwsgAEIANwMIIABCAjcDACAAIAU2AhggACADNgIUIABBKjYCEAsgAiACKAIAIgBBAWs2AgAgAEEBRw0CIARBDGoQlw0MAgsACyABKAIAQQFxBH4gBEHYBWogAUEoaikDADcDACAEQdAFaiABQSBqKQMANwMAIAQgASkDEDcDwAUgBCABQRhqKQMANwPIBUIBBUIACyEQIAEtAFshCSABLQBaIQogAS0AWSEPIAEpA0ghESABKQNQIRIgAS8BXCEBIABB4ABqIARBwANqQYAC/AoAACAAQeACaiAEQcABakGAAvwKAAAgAEIANwMIIAAgEDcDACAAIAU2AogFIABBICAHQQFqZ2s2AoQFIAAgAjYCgAUgACABOwFcIAAgCToAWyAAIAo6AFogACAPOgBZIAAgBjoAWCAAIBI3A1AgACARNwNIIAAgCDYCRCAAIAw2AkAgACADOgA8IAAgDTYCOCAAIA42AjQgACALNgIwIABB+ARqIARBuAFqKQMANwMAIABB8ARqIARBsAFqKQMANwMAIABB6ARqIAQpA6gBNwMAIAAgBCkDoAE3A+AEIAAgBCkDwAU3AxAgAEEYaiAEKQPIBTcDACAAQSBqIARB0AVqKQMANwMAIABBKGogBEHYBWopAwA3AwALIARB4AVqJAALzwYBCH8CQAJAIAEgAEEDakF8cSIDIABrIghJDQAgASAIayIGQQRJDQAgBkEDcSEHQQAhAQJAIAAgA0YiCQ0AAkAgACADayIFQXxLBEBBACEDDAELQQAhAwNAIAEgACADaiICLAAAQb9/SmogAkEBaiwAAEG/f0pqIAJBAmosAABBv39KaiACQQNqLAAAQb9/SmohASADQQRqIgMNAAsLIAkNACAAIANqIQIDQCABIAIsAABBv39KaiEBIAJBAWohAiAFQQFqIgUNAAsLIAAgCGohAAJAIAdFDQAgACAGQXxxaiIDLAAAQb9/SiEEIAdBAUYNACAEIAMsAAFBv39KaiEEIAdBAkYNACAEIAMsAAJBv39KaiEECyAGQQJ2IQUgASAEaiEEA0AgACEDIAVFDQJBwAEgBSAFQcABTxsiBkEDcSEHIAZBAnQhCEEAIQIgBUEETwRAIAAgCEHwB3FqIQkgACEBA0AgASgCACIAQX9zQQd2IABBBnZyQYGChAhxIAJqIAFBBGooAgAiAEF/c0EHdiAAQQZ2ckGBgoQIcWogAUEIaigCACIAQX9zQQd2IABBBnZyQYGChAhxaiABQQxqKAIAIgBBf3NBB3YgAEEGdnJBgYKECHFqIQIgAUEQaiIBIAlHDQALCyAFIAZrIQUgAyAIaiEAIAJBCHZB/4H8B3EgAkH/gfwHcWpBgYAEbEEQdiAEaiEEIAdFDQALAn8gAyAGQfwBcUECdGoiACgCACIBQX9zQQd2IAFBBnZyQYGChAhxIgEgB0EBRg0AGiABIAAoAgQiAUF/c0EHdiABQQZ2ckGBgoQIcWoiASAHQQJGDQAaIAAoAggiAEF/c0EHdiAAQQZ2ckGBgoQIcSABagsiAUEIdkH/gRxxIAFB/4H8B3FqQYGABGxBEHYgBGoPCyABRQRAQQAPCyABQQNxIQMCQCABQQRJBEAMAQsgAUF8cSEFA0AgBCAAIAJqIgEsAABBv39KaiABQQFqLAAAQb9/SmogAUECaiwAAEG/f0pqIAFBA2osAABBv39KaiEEIAUgAkEEaiICRw0ACwsgA0UNACAAIAJqIQEDQCAEIAEsAABBv39KaiEEIAFBAWohASADQQFrIgMNAAsLIAQLsgcBCn8jAEFAaiIDJAACQAJAAkACQAJAAkAgAS0AHCIJQQNGDQAgAS0AHSIFIgRBA0YgBCAJSXIhAiABKAIEIQQgASgCACEKIAEtAAghCyADQSVqIQYgAS0AHkEBcQRAIAINAQNAAkAgBUEBaw4CBgAHCwJAIAEQxQUgBE8EQEEBIQUgAUEBOgAdDAELIANBIGogARDQByADQQhqIAZBCGopAAA3AwAgA0EQaiAGQRBqKQAANwMAIANBF2ogBkEXaigAADYAACADIAYpAAA3AwAgBCADKAIgIgJrIQcgAiAESwRAIAQhAgwGCyADLQAkIQggASAHNgIEQQIhBSAHIQQgCEEKRw0ECyAFIAlPDQALDAELIAINACAEIQIDQAJAAkACQAJAAkAgBUEBaw4CAAEKC0EAIQUgAUEAOgAdAkAgCw4HBAQEAgIEAAILIAJFBEBBACECDAQLAkAgAkEBRiAKLQAAIgdBLkdyRQRAIAotAAFBL0cNBQwBCyACQQFHIAdBLkdyDQQLIARBAWshAiAERQ0CIABBBzoAACABIAI2AgQMCgsgARDFBSACTwRAQQEhBSABQQE6AB0MAwsgA0EgaiABENAHIANBCGogBkEIaikAADcDACADQRBqIAZBEGopAAA3AwAgA0EXaiAGQRdqKAAANgAAIAMgBikAADcDACACIAMoAiAiB2shBCACIAdJBEAgBCEHDAcLIAMtACQhCCABIAQ2AgRBAiEFIAQhAiAIQQpGDQIMBQsgAEEGOgAADAgLIAJBAEHE1OYAEKYdAAsgBSAJTw0ACwsgAEEKOgAADAQLIAAgCDoAACAAIAMpAwA3AAEgAEEJaiADQQhqKQMANwAAIABBEWogA0EQaikDADcAACAAQRhqIANBF2ooAAA2AAAMAwsgByACQeTU5gAQph0ACyABQQA6AB0gBEEBayECIAQEQCAAQQY6AAAgASACNgIEDAILIAJBAEHU1OYAEKYdAAsCQAJAAn8CQAJAAkACQCALQQFrDgYBBgIDBgUACyABKAIQQQRqDAMLIAEoAhAgASgCGCICQQFqQQAgAhtqQQhqDAILIAEoAhBBBGoMAQsgASgCECABKAIYIgJBAWpBACACG2pBAmoLDQELIABBCjoAACABQQM6AB0MAQsgAUEDOgAdIAAgBDYCGCAAIAo2AhQgACALOgAAIAAgASkACTcAASAAQQlqIAFBEWopAAA3AAAgAEEQaiABQRhqKAAANgAACyADQUBrJAALlgcCCH8BfiMAQSBrIgYkAEEMIQMCQAJAAkAgACgCBEEMIAAtAAsiBEFAa0H/AXEiByAHQQxPGyAEQf4BRiIEGyIIIAJqIgcgCE8EQAJAIAQEfyAAEMkYBSADCyAHSw0AIAAtAAshAwJAAkACQCAHQQ1PBEAgA0H+AUcNASAGQQhqIABBfyAHIAcgCEkbIgNB/////wcgCK1CA34iC6dBAXYgC0IgiKcbIgQgAyAESxsQzgUgBigCCEUNBCAAKAIAIQkgBkH///8HQRBBfyAAKAIEQQwgAC0ACyIDQUBrQf8BcSIEIARBDE8bIANB/gFGIgobIgQgAmoiAyADIARJGyIDQf////8HIAStQgN+IgunQQF2IAtCIIinGyIFIAMgBUsbIgMgA0EQTRsiBSAFQf///wdPG0GAgIBwcjYCECAGQRBqQby9xwAQoB0NAiAFQQBIDQhBqcboAC0AABogBUEBEO8bIgMNA0EBIAUQoh8ACyAGQgA3AxAgBkEANgAXIAYgACgCBEEMIANBQGtB/wFxIgQgBEEMTxsgA0H+AUYiBRsiBEHAAXI6ABsgBARAIAZBEGogACgCACAAIAUbIAT8CgAACyADQf4BRgRAIAAQ1hcLIAAgBikDEDcCACAAQQhqIAZBGGooAgA2AgAMAwsgBkH///8HQRBBf0EMIANBQGtB/wFxIgMgA0EMTxsiBCACaiIDIAMgBEkbIgMgBEEBdiAEaiIFIAMgBUsbIgMgA0EQTRsiBSAFQf///wdPG0GAgIBwcjYCEAJAIAZBEGpBvL3HABCgHUUEQCAFQQBIDQhBqcboAC0AABogBUEBEO8bIgMNAUEBIAUQoh8ACyAFEKUMIQMLIAYoAhAhBSAEBEAgAyAAIAT8CgAACyAALQALQf4BRgRAIAAQ1hcLIAAgBTYCCCAAIAQ2AgQgACADNgIADAILIAUQpQwhAwsgBigCECEFIAQEQCADIAkgACAKGyAE/AoAAAsgAC0AC0H+AUYEQCAAENYXCyAAIAU2AgggACAENgIEIAAgAzYCAAsgBiAAEO0RIAcgCEkNASAHIAYoAgQiA0sNAiACBEAgBigCACAIaiABIAL8CgAACyAAIAcQwBcgBkEgaiQADwtB7LvHAEEsQZi8xwAQ4w8ACyAIIAdBqLzHABCnHQALIAcgA0GovMcAEKYdAAtBuLzHAEEOIAZBH2pBwL7HAEGsvccAEPAMAAuWBwIIfwF+IwBBIGsiBiQAQQwhAwJAAkACQCAAKAIEQQwgAC0ACyIEQUBrQf8BcSIHIAdBDE8bIARB/gFGIgQbIgggAmoiByAITwRAAkAgBAR/IAAQyRgFIAMLIAdLDQAgAC0ACyEDAkACQAJAIAdBDU8EQCADQf4BRw0BIAZBCGogAEF/IAcgByAISRsiA0H/////ByAIrUIDfiILp0EBdiALQiCIpxsiBCADIARLGxDOBSAGKAIIRQ0EIAAoAgAhCSAGQf///wdBEEF/IAAoAgRBDCAALQALIgNBQGtB/wFxIgQgBEEMTxsgA0H+AUYiChsiBCACaiIDIAMgBEkbIgNB/////wcgBK1CA34iC6dBAXYgC0IgiKcbIgUgAyAFSxsiAyADQRBNGyIFIAVB////B08bQYCAgHByNgIQIAZBEGpBnMfHABCgHQ0CIAVBAEgNCEGpxugALQAAGiAFQQEQ7xsiAw0DQQEgBRCiHwALIAZCADcDECAGQQA2ABcgBiAAKAIEQQwgA0FAa0H/AXEiBCAEQQxPGyADQf4BRiIFGyIEQcABcjoAGyAEBEAgBkEQaiAAKAIAIAAgBRsgBPwKAAALIANB/gFGBEAgABDWFwsgACAGKQMQNwIAIABBCGogBkEYaigCADYCAAwDCyAGQf///wdBEEF/QQwgA0FAa0H/AXEiAyADQQxPGyIEIAJqIgMgAyAESRsiAyAEQQF2IARqIgUgAyAFSxsiAyADQRBNGyIFIAVB////B08bQYCAgHByNgIQAkAgBkEQakGcx8cAEKAdRQRAIAVBAEgNCEGpxugALQAAGiAFQQEQ7xsiAw0BQQEgBRCiHwALIAUQpQwhAwsgBigCECEFIAQEQCADIAAgBPwKAAALIAAtAAtB/gFGBEAgABDWFwsgACAFNgIIIAAgBDYCBCAAIAM2AgAMAgsgBRClDCEDCyAGKAIQIQUgBARAIAMgCSAAIAobIAT8CgAACyAALQALQf4BRgRAIAAQ1hcLIAAgBTYCCCAAIAQ2AgQgACADNgIACyAGIAAQ7REgByAISQ0BIAcgBigCBCIDSw0CIAIEQCAGKAIAIAhqIAEgAvwKAAALIAAgBxDAFyAGQSBqJAAPC0HpxMcAQSxB+MXHABDjDwALIAggB0GIxscAEKcdAAsgByADQYjGxwAQph0AC0GYxscAQQ4gBkEfakHcyMcAQYzHxwAQ8AwAC+8HAgJ/AX4jAEHwAGsiBSQAIAVB2ABqIAEgAigCAEEAEJMBAkACQCAFLQBYQQRGDQAgBSkDWCIHQv8Bg0IEUQ0AIAAgBzcCAAwBCyAFQdgAaiABKAIEIAEoAggoAlARAAACQCAFLQBYQQRGDQAgBSkDWCIHQv8Bg0IEUQ0AIAAgBzcCAAwBCwJAAkACQAJAAkACQCACKAIAIgJFDQAgBUHYAGogASgCBCACIAEoAggoAkwRAwAgBS0AWEEERg0AIAUpA1giB0L/AYNCBFINAQsgAS0AFA0DIAEoAgQgASgCCCgCVBEGAA0BIAVBOGogAxDiDiAFQdgAaiIGIAUoAjggBSgCPBCjAiAFQTBqIAYQ0R0gBSgCNCECIAUoAjAhAyAFQgA3A0ggBUHoAGogASgCBCAFQcgAaiADIAIgASgCCCgCQBEEACAFLQBoQQRGDQIgBSkDaCIHQv8Bg0IEUQ0CIAAgBzcCACAGELUaDAULIAAgBzcCAAwECyAFQShqIAMQ4g4gBSgCLCECIAUoAighAyAFQgA3A1ggBUHIAGogASgCBCAFQdgAaiADIAIgASgCCCgCQBEEACAFLQBIQQRGDQIgBSkDSCIHQv8Bg0IEUQ0CIAAgBzcCAAwDCyAFQdgAahC1GgwBCwJAAkAgASgCBCABKAIIKAJUEQYARQRAIAVBIGogAxDiDiAFQdgAaiICIAUoAiAgBSgCJBCjAiAFQRhqIAIQ0R0gBUHIAGoiBiAFKAIYIAUoAhxBACABLQAaEDogBUEQaiAGEO0OIAUoAhQhAiAFKAIQIQMgBUIANwNoIAVBQGsgASgCBCAFQegAaiADIAIgASgCCCgCQBEEACAFLQBAQQRGDQEgBSkDQCIHQv8Bg0IEUQ0BIAAgBzcCACAFLQBTQf4BRgRAIAYQ1hcLIAVB2ABqELUaDAQLIAVBCGogAxDiDiAFQdgAaiIGIAUoAgggBSgCDEEAIAEtABoQOiAFIAYQ7Q4gBSgCBCECIAUoAgAhAyAFQgA3A0ggBUHoAGogASgCBCAFQcgAaiADIAIgASgCCCgCQBEEACAFLQBoQQRGDQEgBSkDaCIHQv8Bg0IEUQ0BIAAgBzcCACAFLQBjQf4BRw0DIAYQ1hcMAwsgBS0AU0H+AUYEQCAFQcgAahDWFwsgBUHYAGoQtRoMAQsgBS0AY0H+AUcNACAFQdgAahDWFwsCQCAERQ0AIAVBADYCWCAFQcgAaiABKAIEIAVB2ABqQajIwABBASABKAIIKAJEEQQAIAUtAEhBBEYNACAFKQNIIgdC/wGDQgRRDQAgACAHNwIADAELIABBBDoAAAsgBUHwAGokAAvTBgEOfyMAQRBrIgYkAEEBIQwCQCACKAIAIglBIiACKAIEIg0oAhAiDhEBAA0AAkAgAUUEQEEAIQIMAQtBACABayEPIAAhByABIQMCQAJ/AkADQCADIAdqIRBBACECAkADQCACIAdqIgotAAAiBUH/AGtB/wFxQaEBSSAFQSJGciAFQdwARnINASADIAJBAWoiAkcNAAsgAyAIagwDCyAKQQFqIQcCQCAKLAAAIgtBAE4EQCALQf8BcSEDDAELIActAABBP3EhAyALQR9xIQUgCkECaiEHIAtBX00EQCAFQQZ0IANyIQMMAQsgBy0AAEE/cSADQQZ0ciEDIApBA2ohByALQXBJBEAgAyAFQQx0ciEDDAELIAVBEnRBgIDwAHEgBy0AAEE/cSADQQZ0cnIhAyAKQQRqIQcLIAZBBGogA0GBgAQQ1gICQAJAIAYtAARBgAFGDQAgBi0ADyAGLQAOa0H/AXFBAUYNAAJAAkAgBCACIAhqIgVLDQACQCAERQ0AIAEgBE0EQCABIARHDQIMAQsgACAEaiwAAEG/f0wNAQsCQCAFRQ0AIAEgBU0EQCAFIA9qRQ0BDAILIAAgCGogAmosAABBQEgNAQsgCSAAIARqIAggBGsgAmogDSgCDCIFEQUARQ0BDAMLIAAgASAEIAVBoMPnABDpGwALAkAgBi0ABEGAAUYEQCAJIAYoAgggDhEBAA0DDAELIAkgBi0ADiIEIAZBBGpqIAYtAA8gBGsgBREFAA0CCwJ/QQEgA0GAAUkNABpBAiADQYAQSQ0AGkEDQQQgA0GAgARJGwsgCGogAmohBAsCf0EBIANBgAFJDQAaQQIgA0GAEEkNABpBA0EEIANBgIAESRsLIAhqIgUgAmohCCAQIAdrIgNFDQIMAQsLDAQLIAIgBWoLIgIgBEkNAEEAIQMCQCAERQ0AIAEgBE0EQCAEIgMgAUcNAgwBCyAEIgMgAGosAABBv39MDQELIAJFBEBBACECDAILIAEgAk0EQCABIAJGDQIgAyEEDAELIAAgAmosAABBv39KDQEgAyEECyAAIAEgBCACQbDD5wAQ6RsACyAJIAAgA2ogAiADayANKAIMEQUADQAgCUEiIA4RAQAhDAsgBkEQaiQAIAwL3QcCA38BfiMAQUBqIgMkACADQTBqIAIgAUEEQQggASgCACIFQQFrQQJJG2ooAgAiBEEAEJMBAkACQCADLQAwQQRGDQAgAykDMCIGQv8Bg0IEUQ0AIAAgBjcCAAwBCwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAERQ0AIANBMGogAigCBCAEIAIoAggoAkwRAwAgAy0AMEEERg0AIAMpAzAiBkL/AYNCBFINAQsgBUEBaw4GBwIDBAUGAQsgACAGNwIADAoLIANBMGogAUEIaiACEH0gAy0AMEEERg0IIAMpAzAiBkL/AYNCBFENCCAAIAY3AgAMCQsgA0EANgIwIANBGGogAigCBCADQTBqQcXwwABBBCACKAIIKAIcEQQAIAMtABhBBEYNByADKQMYIgZC/wGDQgRRDQcgACAGNwIADAgLIANBMGogAiABQQhqQQAQZSADLQAwQQRGDQYgAykDMCIGQv8Bg0IEUQ0GIAAgBjcCAAwHCyADQTBqIAFBCGogAhBXIAMtADBBBEYNBSADKQMwIgZC/wGDQgRRDQUgACAGNwIADAYLIANBADYCJCADQThqIANBLGooAgA2AgAgAyADKQIkNwMwIANBGGogAigCBCADQTBqQcnwwABBASACKAIIKAJEEQQAIAMtABhBBEYNAiADKQMYIgZC/wGDQgRRDQIgACAGNwIADAULIANBMGogAUEIaiACEP4OIAMtADBBBEYNAyADKQMwIgZC/wGDQgRSDQIMAwsgAS0ADEUEQCADQQA2AjAgA0EYaiACKAIEIANBMGpBvPDAAEEFIAIoAggoAhwRBAAgAy0AGEEERg0DIAMpAxgiBkL/AYNCBFENAyAAIAY3AgAMBAsgA0EANgIwIANBGGogAigCBCADQTBqQcHwwABBBCACKAIIKAIcEQQAIAMtABhBBEYNAiADKQMYIgZC/wGDQgRRDQIgACAGNwIADAMLIANBEGogAUEQahDiDiADQTBqIAIoAgQgAygCECADKAIUIAIoAggoAjwRBwACQCADLQAwQQRGDQAgAykDMCIGQv8Bg0IEUQ0AIAAgBjcCAAwDCyADQTBqIAIoAgQgA0EkakHJ8MAAQQEgAigCCCgCRBEEAAJAIAMtADBBBEYNACADKQMwIgZC/wGDQgRRDQAgACAGNwIADAMLIANBCGogAUEYahDiDiADQTBqIAIoAgQgAygCCCADKAIMIAIoAggoAjwRBwAgAy0AMEEERg0BIAMpAzAiBkL/AYNCBFENASAAIAY3AgAMAgsgACAGNwIADAELIABBBDoAAAsgA0FAayQAC74IAQJ/IwBBMGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBCyAAKAIAQYCAgIB4cyIDIANBEk8bQQFrDhEBAgMEBQYHCAkKCwwNDg8QEQALIAIgAEEEajYCCCACQQE2AhQgAkGYoOMANgIQIAJCATcCHCACQZ0ONgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQzgMMEQsgAiAAQQRqNgIIIAJBATYCFCACQZig4wA2AhAgAkIBNwIcIAJBng42AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIAIAEoAgQgAkEQahDOAwwQCyACIABBBGo2AgggAkEBNgIUIAJBrKDjADYCECACQgE3AhwgAkGfDjYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqEM4DDA8LIAEoAgBBtKDjAEEgIAEoAgQoAgwRBQAMDgsgASgCAEHUoOMAQSUgASgCBCgCDBEFAAwNCyABKAIAQfmg4wBBHSABKAIEKAIMEQUADAwLIAIgACgCBDYCCCACQQI2AhQgAkG0oeMANgIQIAJCATcCHCACQS82AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIAIAEoAgQgAkEQahDOAwwLCyACIAAoAgQ2AgggAkEBNgIUIAJB4KHjADYCECACQgE3AhwgAkEvNgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQzgMMCgsgAiAAKAIENgIIIAJBATYCFCACQYCi4wA2AhAgAkIBNwIcIAJBLzYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqEM4DDAkLIAEoAgBBiKLjAEEpIAEoAgQoAgwRBQAMCAsgASgCAEGxouMAQSAgASgCBCgCDBEFAAwHCyACIAA2AgggAkEBNgIUIAJB+KLjADYCECACQgE3AhwgAkETNgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQzgMMBgsgASgCAEGAo+MAQSMgASgCBCgCDBEFAAwFCyABKAIAQaOj4wBBIiABKAIEKAIMEQUADAQLIAEoAgBBxaPjAEEfIAEoAgQoAgwRBQAMAwsgASgCAEHko+MAQRAgASgCBCgCDBEFAAwCCyACIAAtAAg6AAwgAiAAKAIENgIIIAJBATYCFCACQZSk4wA2AhAgAkIBNwIcIAJBoA42AiwgAiACQShqNgIYIAIgAkEIajYCKCABKAIAIAEoAgQgAkEQahDOAwwBCyACIAAoAgQ2AgggAkEBNgIUIAJBuKTjADYCECACQgE3AhwgAkHMAjYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqEM4DCyACQTBqJAALmAcCEn8FfiMAQfACayICJAAgASkDACEWIAJByABqIAFBCGoQzQcgASkDUCEXIAJBkAFqIAFB2ABqEHwgAS0AZCEQIAEoAmgiBARAEIUZIQcgBCkCACEUIAJBqAFqIgYgBEEIaiAEEPkIIAcgFDcCACAHQQhqIAYpAwA3AgAgB0EQaiACQbABaigCADYCAAsgASgCdCERIAJBoAFqIAEoAngiDkEIQSgQggogAigCpAEhBCACKAKgAUEBRwRAIAIoAqgBIQ8CQCAERQ0AIA5BKGwhEiAEIQYDQCAIIBJGDQECQAJAAkACQAJAAkAgCCARaiIDKAIAIhNBAWsOBAECAwQACyACQaABaiADQQhqEL0HIAIpA7ABIRQgAigCrAEhDCACKAKoASEJIAIoAqQBIQUgAigCoAEhCwwECyADQQhqKAIAIQsgA0EEaigCACEKIANBDGooAgBBAUYEQBCpGSEJIAJBoAFqIgUgA0EQaigCABAtIAkgBUHYAPwKAABBASEFDAQLIANBEGooAgAhCSADQRRqKAIAIQxBACEFDAMLIANBCGooAgAhCyADQQRqKAIAIQoQqRkhBSACQaABaiINIANBDGooAgAQLSAFIA1B2AD8CgAADAILEJ4ZIQogAkGgAWoiDSADQQRqKAIAEP4BIAogDUHQAfwKAAAMAQsgA0EEaikCACEUIANBDGopAgAhFSACQaABaiADQRRqEMQDIANBIGopAgAhGCAVpyEFIBSnIQogFUIgiKchCSAUQiCIpyELIAIpAqQBIRQgAigCoAEhDAsgCCAPaiIDIBM2AgAgA0EgaiAYNwMAIANBGGogFDcDACADQRRqIAw2AgAgA0EQaiAJNgIAIANBDGogBTYCACADQQhqIAs2AgAgA0EEaiAKNgIAIAhBKGohCCAGQQFrIgYNAAsLQQMhBiABKAKIAUEDRwRAIAEpA4ABIRQgAkGoAWogAUGIAWoQzQcgAigCqAEhBiACQQRqIAJBrAFqQcQA/AoAAAsgACAWNwMAIABBCGogAkHIAGpByAD8CgAAIAAgFzcDUCAAIAY2AogBIAAgFDcDgAEgACAONgJ4IAAgDzYCdCAAIAQ2AnAgACAHNgJoIAAgEDoAZCAAIAIpA5ABNwNYIABB4ABqIAJBmAFqKAIANgIAIABBjAFqIAJBBGpBxAD8CgAAIAJB8AJqJAAPCyAEIAIoAqgBQfyuyAAQtBoAC8wHAQV/IwBBMGsiBCQAAkACQAJAAkACQCACKAIAIgZBgICAgHhGIgdFIAMoAgAiBUGAgICAeEdxRQRAIAEoAgwhCAwBCwJAIAEoAgwiCCADKAIIIgYgAigCCCIHak8NAAJAIAEtABAEQCAHBEAgAigCBCEFIAdBBHQhAQNAIAVBCGoiBigCACIHQQVPBEAgBUEMakEAOgAAIAZBADYCACAEIAU2AiAgBEEENgIoIAQgBUEEaigCACIGNgIYIAQgB0EEayIHNgIkIAQgBiAHajYCHCAEQRhqEK0KCyAFQRBqIQUgAUEQayIBDQALIAMoAgBBgICAgHhGDQIgAygCCCEGCyAGRQ0BIAMoAgQhBSAGQQR0IQEDQCAFQQhqIgYoAgAiB0EFTwRAIAVBDGpBADoAACAGQQA2AgAgBCAFNgIgIARBBDYCKCAEIAVBBGooAgAiBjYCGCAEIAdBBGsiBzYCJCAEIAYgB2o2AhwgBEEYahCtCgsgBUEQaiEFIAFBEGsiAQ0ACwwBCyAHBEAgB0EEdCEBIAIoAgRBDGohBQNAIAVBBGsiBigCAEEFTwRAIAZBBDYCACAFQQA6AAALIAVBEGohBSABQRBrIgENAAsgAygCAEGAgICAeEYNASADKAIIIQYLIAZFDQAgBkEEdCEBIAMoAgRBDGohBQNAIAVBBGsiBigCAEEFTwRAIAZBBDYCACAFQQA6AAALIAVBEGohBSABQRBrIgENAAsLIAIQtQVBgICAgHghBiADKAIAQYCAgIB4Rg0EIAMQtQUgAygCACEFQQEhByACKAIAQYCAgIB4Rg0BIAVBgICAgHhGDQQgAygCCCIGIAIoAghqIAhNDQAgAxCXGiADQYCAgIB4NgIADAQLIANBADYCCCAEQQA2AhQgBCADNgIMIAQgAygCBCIBNgIEIAQgBjYCECAEIAEgBkEEdGo2AggMAQsgBUGAgICAeEYNAiADKAIIIQEgA0EANgIIIARBADYCFCAEIAM2AgwgBCABNgIQIAQgAygCBCIDNgIEIAQgAyABQQR0ajYCCCAHRQ0AIARBBGoQqAgMAQsgBEEoaiAEQRRqKAIANgIAIARBIGogBEEMaikCADcDACAEIAQpAgQ3AxggAiAEQRhqELAHIAIoAgBBgICAgHhGDQIgAhC1BSACKAIAIQYLIAZBgICAgHhGDQEgAigCCCAITQ0BQduLzgBBxABBsIzOABCcFAALIAIQlxogAkGAgICAeDYCAAsgACACKQIANwIAIABBCGogAkEIaigCADYCACAEQTBqJAAL/wYBB38jAEEQayIEJAACQCAALQAAIgZBAXEgAC0ACSIDIAAtAAEiBUEER3IgAC0ABSIHQQRHcnJFDQBBASECIAFBqKzBAEECENAbDQAgA0EARyAGciEIIAPAIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBUEERwRAIAQgACgAATYCCCAEQQhqIAEQsg0NHyAHQQRHDQEMAwsgB0EERg0CIAQgACgABTYCDAwBCyAEIAAoAAU2AgwgAUGqrMEAQQEQ0BsNHQsgBEEMaiABELMNDRwgCEEBcUUNGyAGQQFxDQMMAQsgCEEBcUUNGiAGQQFxDQEgBUEERyECCyADQf8BcQ0DDBkLIAVBBEYNAQsgAUGqrMEAQQEQ0BsNGAsgAUGrrMEAQQEQ0BsNFyADQf8BcUUNFiADQQFxRQ0BDAILIANBAXFFBEAgA0ECcUUNBSACDQQMBgsgAg0BDAILIANBAnENAgwDC0EBIQIgAUGqrMEAQQEQ0BsNFAtBASECIAFBrKzBAEEBENAbDRMgA0ECcUUNAQtBASECIAFBqqzBAEEBENAbRQ0BDBILIANBBHFFBEAgA0EIcUUNBiACDQUMBwsgAg0BDAMLQQEhAiABQa2swQBBARDQGw0QIANBBHFFDQELQQEhAiABQaqswQBBARDQG0UNAQwPCyADQQhxDQEMAgtBASECIAFBrqzBAEEBENAbDQ0gA0EIcUUNAQtBASECIAFBqqzBAEEBENAbRQ0BDAwLIANBEHFFBEAgA0EgcUUNBiACDQUMBwsgAg0BDAMLQQEhAiABQa+swQBBARDQGw0KIANBEHFFDQELQQEhAiABQaqswQBBARDQG0UNAQwJCyADQSBxDQEMAgtBASECIAFBsKzBAEEBENAbDQcgA0EgcUUNAQtBASECIAFBqqzBAEEBENAbRQ0BDAYLIANBwABxRQ0DIAINAQwCC0EBIQIgAUGxrMEAQQEQ0BsNBCADQcAAcUUNAgtBASECIAFBqqzBAEEBENAbDQMLQQEhAiABQbKswQBBARDQGw0CCyADQQBODQAgAgRAQQEhAiABQaqswQBBARDQGw0CC0EBIQIgAUGzrMEAQQEQ0BsNAQsgAUG0rMEAQQEQ0BshAgsgBEEQaiQAIAILxQcCA38CfiMAQTBrIgMkACADQSBqIAIgASkCACIGp0EAEJMBAkACQCADLQAgQQRGDQAgAykDICIHQv8Bg0IEUQ0AIAAgBzcCAAwBCwJAAkACQAJAAkAgASgCDCIEKAIAQQFGBEAgA0EgaiAEKAIQIAIQXyADLQAgQQRGDQEgAykDICIHQv8Bg0IEUQ0BIAAgBzcCAAwGCwJAIAQoAhAiBSgCAEEMRgRAIANBIGogAiAFQQRqQQAQjwIgAy0AIEEERg0BIAMpAyAiBkL/AYNCBFENASAAIAY3AgAMBwsgA0EgaiAFIAIQXyADLQAgQQRGDQAgAykDICIGQv8Bg0IEUg0CCwJAIAEtAAhFBEAgBCgCGEECRw0BDAULIANBADYCICADQRhqIAIoAgQgA0EgakHd4MAAQQIgAigCCCgCRBEEACADLQAYQQRGDQQgAykDGCIGQv8Bg0IEUQ0EIAAgBjcCAAwGCyADQQA2AiAgA0EYaiACKAIEIANBIGpB7d/AAEEBIAIoAggoAkQRBAAgAy0AGEEERg0DIAMpAxgiBkL/AYNCBFENAyAAIAY3AgAMBQsgAS0ACEUNASADQQA2AiAgA0EYaiACKAIEIANBIGpB3eDAAEECIAIoAggoAkQRBAAgAy0AGEEERg0BIAMpAxgiB0L/AYNCBFENASAAIAc3AgAMBAsgACAGNwIADAMLIANBADYCDCADQShqIANBFGooAgA2AgAgAyADKQIMNwMgIANBGGogAigCBCADQSBqQY/gwABBASACKAIIKAJEEQQAAkAgAy0AGEEERg0AIAMpAxgiB0L/AYNCBFENACAAIAc3AgAMAwsgAyAGNwMgIANBGGogAiADQSBqIAQoAhggBCgCHCIBQZAKIAEQhgECQCADLQAYQQRGDQAgAykDGCIGQv8Bg0IEUQ0AIAAgBjcCAAwDCyADQSBqIAIoAgQgA0EMakGQ4MAAQQEgAigCCCgCRBEEACADLQAgQQRGDQEgAykDICIGQv8Bg0IEUQ0BIAAgBjcCAAwCCwJAAkACQCAEKAIYQQFrDgIBAgALIANBIGogBEEgaiACEOUPIAMtACBBBEYNAiADKQMgIgZC/wGDQgRRDQIgACAGNwIADAMLIANBIGogBEEgaiACEOcFIAMtACBBBEYNASADKQMgIgZC/wGDQgRRDQEgACAGNwIADAILIANBIGogBEEcaiACEPgEIAMtACBBBEYNACADKQMgIgZC/wGDQgRRDQAgACAGNwIADAELIABBBDoAAAsgA0EwaiQAC6VlAiR/Bn4jAEHwAGsiDiQAAkACQAJAAkACQAJAIANBAE4EQCABLQALQQFxBEAgAS0ADUECRw0ECyABKAIgDQEgAUF/NgIgIAFBJGoiCUEANgIAIAkoAhghBiAJQQA2AhggBgRAIAkoAhQhBANAQQghBwJAAkACQCAEKAIAQQJrDgYBAgICAAACC0EEIQcLIARBBGpBBCAHEPIMCyAEQRBqIQQgBkEBayIGDQALCyAJQQA2AiQgCSgCMCEGIAlBADYCMCAGBEAgCSgCLCEEA0AgBBDyECAEQQRBCBDyDCAEQQxqIQQgBkEBayIGDQALCyAJQQA2AjQgASABKAIgQQFqIgQ2AiAgBA0CIAEgASgCBCIGNgIwIAEgAS0ACyIHQQFxOgBdIAEgAS0ACUEKIAEtAAgbOgBeQQAhBCABIAEoAgAiBUEAIAVBAkcbIgU2AiwgASABLQAKIghBAkYgCHJBAXE6AFwCQCAFQQFxRQ0AIAEoAlggASgCPEEEdGogBk0NACAAQSc2AgAgACAGNgIEIAFBADYCIAwGCyABQQA2AiBBAkEBIAdBAXEiBhshB0EgQRwgBhshBiACIANBAnQiA2ohEwJAA0AgAyAERg0BIAIgBGogBEEEaiEEKAIAKAIYIAZqKAIAIAdxDQALIA5BAToAKCAOQQxqIQUjAEGgAWsiAyQAAkACQAJAAkACQAJAAkACQAJAIA5BKGoiBC0AAEEBaw4HAQIDBAUGBwALIANBCGpBAEH//8MAENcYIAMgAykDCDcCdCADQYwBaiADQfQAahD2HyADQQA2AogBIAUgA0GIAWoQsQYMBwsgA0EQakEAQf8BEIIXIANBjAFqIAMvARAQ9x8gA0EBNgKIASAFIANBiAFqELEGDAYLIANBGGogBCgCBCIEIAQQ1xggAyADKQMYNwKIASADQfQAaiIEIANBiAFqIgYQ9h8gBBCMAyADQZQBaiADQfwAaikCADcCACADIAMpAnQ3AowBIANBADYCiAEgBSAGELEGDAULIANBKGpBAEEJENcYIAMpAyghKCADQSBqQQtB///DABDXGCADICg3AnQgAyADKQMgNwJ8IwBBMGsiBCQAIARBIGoiDSADQfQAaiIGQQhqKQIANwMAIARCgICAgCA3AyggBCAGKQIANwMYIwBBEGsiCCQAIARBGGoiFCILKAIUIAsoAhBrIgpBA3QhBgJAIApB/////wFLIAZB/P///wdLckUEQCAGRQRAQQQhB0EAIQoMAgtBqcboAC0AABpBBCEPIAZBBBDvGyIHDQELIA8gBkGAotEAELQaAAsgCEEMaiIVQQA2AgAgCCAHNgIIIAggCjYCBCALKAIUIAsoAhBrIgcgCEEEaiIKKAIAIAooAggiBmtLBEAgCiAGIAdBBEEIEMgTIAooAgghBgsgBEEMaiEPIAogCygCFCIMIAsoAhAiB0cEfyAGIAxqIAdrIAsgB0EDdGohCyAKKAIEIAZBA3RqIQYDQCAGIAspAgA3AgAgC0EIaiELIAZBCGohBiAMIAdBAWoiB0cNAAsFIAYLNgIIIA9BCGogFSgCADYCACAPIAgpAgQ3AgAgCEEQaiQAIA0gBEEUaigCACIGNgIAIAQgBCkCDDcDGCAEIAZFOgAkIBQQ6QMgA0GMAWoiBkEIaiANKQMANwIAIAYgBCkDGDcCACAEQTBqJAAgA0EANgKIASAFIANBiAFqELEGDAQLIANBQGtBAEEJENcYIAMpA0AhKCADQThqQQtBDBDXGCADKQM4ISkgA0EwakEOQf//wwAQ1xggAyApNwKQASADICg3AogBIAMgAykDMDcCmAEgA0H4AGogA0GIAWoQjgsgA0EANgJ0IAUgA0H0AGoQsQYMAwsgA0HIAGogBC0AASIEIAQQghcgA0H0AGoiBCADLwFIEPcfIAQQhQMgA0GUAWogA0H8AGopAgA3AgAgAyADKQJ0NwKMASADQQE2AogBIAUgA0GIAWoQsQYMAgsgA0HYAGpBAEEJEIIXIAMtAFggAy0AWSEGIANB0ABqQQtB/wEQghcgAy0AUUEYdCADLQBQQRB0ciAGQQh0cnIhBiMAQSBrIgQkACAEIAY2AhggBEKAgICAIDcCECAEQQRqIARBEGoiBhDKCiAEQRhqIgcgBEEMaigCACIINgIAIAQgBCkCBDcDECAEIAhFOgAcIAYQqgQgA0GMAWoiBkEIaiAHKQMANwIAIAYgBCkDEDcCACAEQSBqJAAgA0EBNgKIASAFIANBiAFqELEGDAELIANB8ABqQQBBCRCCFyADLwFwIQQgA0HoAGpBC0EMEIIXIAMvAWghBiADQeAAakEOQf8BEIIXIAMgBjsAdiADIAQ7AHQgAyADLwFgOwB4IANBjAFqIANB9ABqEOcLIANBATYCiAEgBSADQYgBahCxBgsgA0GgAWokACAOQTBqIAEgBUEAQQAQeyAOKAI4IQQgDigCNCEDIA4oAjAiBkEqRwRAIABBDGogDkE8akE0/AoAACAAIAQ2AgggACADNgIEIAAgBjYCACAFEOQKDAcLIA5BDGoQ5AoMBQsgDkEwaiABEPURIA4oAjQhBCAOKAIwIgNBKkcEQCAOKAI4IQEgAEEMaiAOQTxqQTT8CgAAIAAgATYCCCAAIAQ2AgQgACADNgIADAYLIAQhAwwECyAAQf////8HNgIIIAAgAzYCBCAAQSU2AgAMBAtBoOjJABDWEQALQbDoyQAQ1hEACyAAQSk2AgAMAQsgDiABNgIUIA4gEzYCECAOIAI2AgwgDkEwaiEGIwBBkAFrIgIkACACQdAAaiAOQQxqIggQ1QQCQCACKAJQIgdBK0cEQCACKAJYIQsgAigCVCEKIAdBKkcEQCAGQQxqIAJB3ABqQTT8CgAAIAYgCzYCCCAGIAo2AgQgBiAHNgIADAILIAJB0ABqIAgQ1QQgAigCUCIHQStHBEAgAigCWCENIAIoAlQhDyAHQSpHBEAgBkEMaiACQdwAakE0/AoAACAGIA02AgggBiAPNgIEIAYgBzYCAAwDCyACQdAAaiABEPUQIAIoAlQhByACKAJQIgVBKkcEQCAGQQhqIAJB2ABqQTj8CgAAIAYgBzYCBCAGIAU2AgAMAwsgAkHQAGogARD1ESACKAJUIQUgAigCUCIMQSpHBEAgBkEIaiACQdgAakE4/AoAACAGIAU2AgQgBiAMNgIADAMLIAJB0ABqIgwgASAHIAoQ6BUgAigCUCIKQSpHBEAgBkEEaiAMQQRyQTz8CgAAIAYgCjYCAAwDCyACQdAAaiIKIAEgCyAFEOgVIAIoAlAiC0EqRwRAIAZBBGogCkEEckE8/AoAACAGIAs2AgAMAwsgAkHQAGoiCyABIAcgDxDoFSACKAJQIgpBKkcEQCAGQQRqIAtBBHJBPPwKAAAgBiAKNgIADAMLIAJB0ABqIgsgASANIAUQ6BUgAigCUCIKQSpHBEAgBkEEaiALQQRyQTz8CgAAIAYgCjYCAAwDCyACQQhqIAhBCGooAgA2AgAgAiAIKQIANwMAIAJBEGogAhDVBCACKAIQIghBK0cEQCACQRxqIQ0DQCACKAIYIQsgAigCFCEKIAhBKkcEQCAGQQxqIA1BNPwKAAAgBiALNgIIIAYgCjYCBCAGIAg2AgAMBQsgAkHQAGoiCCABIAcgChDoFSACKAJQIgpBKkcEQCAGQQRqIAhBBHJBPPwKAAAgBiAKNgIADAULIAJB0ABqIgggASALIAUQ6BUgAigCUCILQSpHBEAgBkEEaiAIQQRyQTz8CgAAIAYgCzYCAAwFCyACQRBqIAIQ1QQgAigCECIIQStHDQALCyAGIAU2AgggBiAHNgIEIAZBKjYCAAwCCyAGIAs2AgggBiAKNgIEIAZBKjYCAAwBCyAGIAEQxQsLIAJBkAFqJAAgDigCNCECIA4oAjAiBkEqRwRAIA4oAjghASAAQQxqIA5BPGpBNPwKAAAgACABNgIIIAAgAjYCBCAAIAY2AgAMAQsgDkEwaiIGIAEgBCACEOgVIA4oAjAiBEEqRwRAIABBBGogBkEEckE8/AoAACAAIAQ2AgAMAQsgASgCIA0BIAFBfzYCICAOQTBqIRsgAiEEQQAhAiMAQaAGayIFJAACQAJAAkACQCAJKAIARQRAQanG6AAtAAAaQTBBBBDvGyIGRQRAQQRBMBCiHwALIAZCADcCKCAGQoCAgIDAADcCICAGQgg3AhggBkIANwIQIAZCgICAgMAANwIIIAZCgYCAgBA3AgAgBUG4AmpCADcDACAFQcACakIANwMAIAVByAJqQgA3AwAgBUIANwOwAiAFQcADakEAQYAC/AsAA0AgBUHAA2oiByACaiACOgAAIAJBAWoiAkGAAkcNAAsgBUEwaiAHQYAC/AoAACAFQQA2AIEDIAVBADYC8AIgBUKAgICAwAA3A+gCIAVBADYC/AIgBUKAgICAwAA3AvQCIAVCADcD0AIgBSAGNgLkAiAFQQA2AuACIAVCADcD2AIgBSAJLwE4OwCDAyAFIAktADo6AIADIAVBADYCoAMgBUKAgICAwAA3ApgDIAVBADYCrAMgBUKAgICAwAA3AqQDIAkoAhgiFQRAIAVBpANqIBUQ0QsLIAkoAiAhByAJKAIkIQYjAEEQayICJAAgBUEwaiIaIAM2AqQCIBogBDYCoAIgAkEEaiAGQQRBBBCCCiACKAIIIQMCQCACKAIEQQFHBEAgAigCDCEEIAZBAnQiCARAIAQgByAI/AoAAAsgGkHEAmpBBEEEEPIMIBogBjYCzAIgGiAENgLIAiAaIAM2AsQCIAJBEGokAAwBCyADIAIoAgxBwK3JABC0GgALIAVBsANqIR4gCSgCLCEDIAkoAjAhBCMAQRBrIg0kAEEAIQIjAEHQAGsiCCQAIAhCADcCICAIQoCAgIDAADcCGCAIQgg3AhAgCEIANwIIIAhCgICAgMAANwIAAkACQAJAAkACQAJAIAMgBEEMbGoiIiADRg0AIAMoAgQiDyADKAIIIhNBA3RqIR9BASEHA0AgE0UNBCAPKAIABEAgDSACNgIEIA1Bg4CAgHg2AgAMBgsgCCACENwDIBNBAUcEQCAPQQhqIQ9BASETA0AgE0H/////B0YEQCANQv////8HNwMIIA0gAjYCBCANQYGAgIB4NgIADAgLIAhBKGohHCAPQQAgDygCABshBEEAIRZBACEdQQAhICMAQUBqIgskAAJAAkACQAJAAkACQAJAAkAgCCgCCCIGIAJLBEACQCAIKAIEIAJBA3RqIgooAgRBAmoiDEH/////B08EQCAcIAI2AgQgHEGBgICAeDYCACAcIBOtNwMIDAELIApBBGogDDYCAAJAAkACQCAEBEAgBCgCACEGIAtBEGogBCgCBCIEEMMPIAsoAhAiEkEIaiEMIAsoAhQhFCAEBEAgDCAGQQhqIAT8CgAACyALIBQ2AiAgCyASNgIcIAIgCCgCFCIETw0GIAgoAhAgAkEFdGoiCigCDEUNASMAQdAAayIEJAAgBEFAayIGQgA3AwAgBEIANwM4IAQgCkEQaiIQKQMIIig3AzAgBCAQKQMAIik3AyggBCAoQvPK0cunjNmy9ACFNwMgIAQgKELt3pHzlszct+QAhTcDGCAEIClC4eSV89bs2bzsAIU3AxAgBCApQvXKzYPXrNu38wCFNwMIIARBCGoiECAMIBQQ+QIgBEH/AToATyAQIARBzwBqQQEQ+QIgBCkDCCEpIAQpAxghKCAGNQIAISogBCkDOCErIAQpAyAhLCAEKQMQIS0gBEHQAGokACAKKAIAIhBBDGshESAKKAIEIgQgLCArICpCOIaEIiqFIitCEIkgKyAtfCIrhSIsQhWJICwgKCApfCIpQiCJfCIshSItQhCJIC0gKyAoQg2JICmFIih8IilCIIlC/wGFfCIrhSItQhWJIC0gKSAoQhGJhSIoICogLIV8IilCIIl8IiqFIixCEIkgLCApIChCDYmFIiggK3wiKUIgiXwiK4UiLEIViSAsICkgKEIRiYUiKCAqfCIpQiCJfCIqhSIsQhCJICwgKEINiSAphSIoICt8IilCIIl8IiuFQhWJIChCEYkgKYUiKEINiSAoICp8hSIoQhGJhSAoICt8IihCIImFICiFIiincSEGIChCGYhC/wCDQoGChIiQoMCAAX4hKgNAIAYgEGopAAAiKSAqhSIoQn+FIChCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiKFBFBEADQCAMIBQgESAoeqdBA3YgBmogBHFBdGxqIhcoAgBBCGogFygCBBCEGQ0GIChCAX0gKIMiKFBFDQALCyApIClCAYaDQoCBgoSIkKDAgH+DUEUNAiAGIBZBCGoiFmogBHEhBgwACwALIAIgCCgCICIETw0GIAgoAhwiEiACQQxsaiIKKAIIIgwgCigCAEYEQCAKQajiyQAQxBILIAooAgQgDEEDdGpBADYCACAIIAgoAiRBCGo2AiQgCiAMQQFqNgIIDAELIBIgEigCACIEQQFqNgIAIARBAEgNBkEAIRYjAEEQayIXJAAgFyAUNgIMIBcgEjYCCCAKQRBqIgYgF0EIahCUBCEpIAooAghFBEAjAEHQAGsiBCQAIAQgBjYCHCAKKAIMIRkgBCAEQRxqNgIgAkACQAJAAkACQCAZIBlBAWoiBk0EQCAKKAIEIgwgDEEBakEDdkEHbCAMQQhJGyIMQQF2IAZJBEAgDEEBaiIMIAYgBiAMSRsiBkEISQ0CIAZB/////wFLDQNBfyAGQQN0QQduQQFrZ3ZBAWohBgwECyAKIARBIGpB4KbJABDgAgwECxCgEiAEKAIMIQYgBCgCCCEMDAQLQQRBCCAGQQRJGyEGDAELEKASIAQoAhQhBiAEKAIQIQwMAgsgBEFAayAGQQxBCCAGEJUIIAQoAkQhDCAEKAJAIhBFBEAgBCgCSCEGDAILIAQpAkghKCAMQQlqIgYEQCAQQf8BIAb8CwALIAQgKEIgiD4CPCAEICinIiM2AjggBCAMNgI0IAQgEDYCMCAEQoyAgICAATcCKCAEIApBEGo2AiRBACEGIBkEQCAQQQxrISQgEEEIaiElIAooAgAiISkDAEJ/hUKAgYKEiJCgwIB/gyEoA0AgKFAEQANAIAZBCGohBiAhQQhqIiEpAwBCgIGChIiQoMCAf4MiKEKAgYKEiJCgwIB/UQ0ACyAoQoCBgoSIkKDAgH+FISgLIBAgDCAEKAIcIAooAgAgKHqnQQN2IAZqIiZBdGxqQQxrEJQEpyIncSIRaikAAEKAgYKEiJCgwIB/gyIqUARAQQghGANAIBEgGGohESAYQQhqIRggECAMIBFxIhFqKQAAQoCBgoSIkKDAgH+DIipQDQALCyAoQgF9ICiDISggECAqeqdBA3YgEWogDHEiEWosAABBAE4EQCAQKQMAQoCBgoSIkKDAgH+DeqdBA3YhEQsgECARaiAnQRl2Ihg6AAAgJSARQQhrIAxxaiAYOgAAICQgEUF0bGoiESAKKAIAICZBdGxqQQxrIhgpAAA3AAAgEUEIaiAYQQhqKAAANgAAIBlBAWsiGQ0ACyAKKAIMIQYLIAQgBjYCPCAEICMgBms2AjgDQCAKIB1qIgYoAgAhDCAGIAQgHWpBMGoiECgCADYCACAQIAw2AgAgHUEEaiIdQRBHDQALIARBJGoQlhELQYGAgIB4IQwLIBcgBjYCBCAXIAw2AgAgBEHQAGokAAsgC0EIaiEZIBJBCGohHSAKKAIEIhAgKadxIQwgKUIZiCIqQv8Ag0KBgoSIkKDAgAF+ISsgCigCACERQQAhBAJAAkADQCAMIBFqKQAAIikgK4UiKEJ/hSAoQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIihQRQRAA0AgHSAUIAooAgBBACAoeqdBA3YgDGogEHFrIgZBDGxqIhhBDGsoAgBBCGogGEEIaygCABCEGQ0DIChCAX0gKIMiKFBFDQALCyApQoCBgoSIkKDAgH+DIShBASEGIARBAUcEQCAoeqdBA3YgDGogEHEhFiAoQgBSIQYLICggKUIBhoNQBEAgDCAgQQhqIiBqIBBxIQwgBiEEDAELC0EAIQwgESAWaiwAAEEATgRAIBEpAwBCgIGChIiQoMCAf4N6p0EDdiEWCyAKKAIAIgQgFmoiBi0AACEQIAYgKqdB/wBxIgY6AAAgBCAKKAIEIBZBCGtxakEIaiAGOgAAIAogCigCDEEBajYCDCAKIAooAgggEEEBcWs2AgggBCAWQXRsaiIEQQRrIBM2AgAgBEEIayAUNgIAIARBDGsgEjYCAAwBCyAKKAIAIAZBDGxqQQRrIgYoAgAhBCAGIBM2AgAgEiASKAIAIgZBAWs2AgBBASEMIAZBAUcNACAXQQhqEPAWCyAZIAQ2AgQgGSAMNgIAIBdBEGokACACIAgoAiAiBE8NByALKAIgIQwgCygCHCEWIAgoAhwiEiACQQxsaiIGKAIIIgogBigCAEYEQCAGQYjiyQAQxBILIAYoAgQgCkEDdGoiECAMNgIEIBAgFjYCACAGIApBAWo2AgggCCAIKAIkIBRBAXRqQRRqNgIkIAgoAgghBgsgCyATQQFqIgo2AiRBACEMIAIgBkkEQCAIKAIEIAJBA3RqIgYoAgQgBigCAGtBAXZBAWohDAsgCyAMNgIcIAogDEcNByALIAo2AiQgAiAETw0IIAsgEiACQQxsaigCCCIENgIcIAQgCkcNCSAcQYSAgIB4NgIADAELIAtBKGohBiMAQRBrIgQkACAEQQRqIBRBAUEBEIIKIAQoAgghCgJAIAQoAgRBAUcEQCAEKAIMIRYgFARAIBYgDCAU/AoAAAsgBiACNgIMIAYgFDYCCCAGIBY2AgQgBiAKNgIAIARBEGokAAwBCyAKIAQoAgxB7N/JABC0GgALIBxBCGogC0EwaikDADcDACAcIAspAyg3AwAgEiASKAIAIgRBAWs2AgAgBEEBRw0AIAtBHGoQ8BYLIAtBQGskAAwICyACIAZB2OHJABCMDgALIAIgBEHo4ckAEIwOAAsgAiAEQZjiyQAQjA4LAAsgAiAEQfjhyQAQjA4ACyALQQA2AihBACALQSRqIAtBHGogC0EoakG44skAEIMWAAsgAiAEQcjiyQAQjA4ACyALQQA2AihBACALQSRqIAtBHGogC0EoakHY4skAEIMWAAsgCCgCKCIEQYSAgIB4Rw0EIBNBAWohEyAPQQhqIg8gH0cNAAsLIANBDGoiAiAiRg0BIAMoAhAiDyADKAIUIhNBA3RqIR8gAiEDIAciAkEBaiIHQYCAgIB4Rw0ACyANQv////8HNwMIIA1CgICAgOj/////ADcDAAwECyAIQShqIAgQlAcgCCgCKCICQYSAgIB4RwRAIA0gCCkCLDcCBCANQQxqIAhBNGooAgA2AgAgDSACNgIADAQLIAhBKGoiAyAIQSj8CgAAQanG6AAtAAAaQTBBBBDvGyICRQ0BIAJCgYCAgBA3AgAgAkEIaiADQSj8CgAAIA1BhICAgHg2AgAgDSACNgIEDAQLIA0gCCkCLDcCBCANQQxqIAhBNGooAgA2AgAgDSAENgIADAILQQRBMBCiHwALIA0gAjYCBCANQYKAgIB4NgIACyAIEPEWCyAIQdAAaiQAIA0oAgQhAgJAIA0oAgAiA0GEgICAeEcEQCAeIA0pAwg3AwggHiACNgIEIB4gAzYCAAwBCyAaKAK0AiIDIAMoAgAiBEEBazYCACAaQbQCaiEDIARBAUYEQCADEN0OCyAeQYSAgIB4NgIAIAMgAjYCAAsgDUEQaiQAIAUoArADQYSAgIB4RwRAIAVBzANqIAVBuANqKQMANwIAIAUgBSkDsAM3AsQDIBsgBSkCwAM3AgQgG0EMaiAFQcgDaikCADcCACAbQRRqIAVB0ANqKAIANgIAIBtBIzYCACAFQaQDakEEQQQQ8gwgBUGYA2pBBEEIEPIMIAVB6AJqIgIQ+wogAkEEQRQQ8gwgBUH0AmpBBEEEEPIMIAUoAuQCIgIgAigCACICQQFrNgIAIAJBAUcNAyAFQeQCahDdDgwDCyAJKAIUIQYgBUEoaiAVEKcPIBVFDQEgBiAVQQR0aiELIAUoAiwhCiAGIQRBACECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACIApHBEACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEKAIAQQFrDgkBAgMEBQYHCAkACyAEKAIEIQcgBSgCoAMiAyAFKAKYA0YEQCAFQZgDakG4z8kAEMQSCyAFKAKcAyADQQN0aiIJIAc2AgQgCSACNgIAIAUgA0EBajYCoAMMKwsgBCkCBCEoIAVBADYCwAMgBSAoNwLEAyAFQTBqIAVBwANqEJYGIQMgAiAFKAKsAyIHTw0VIAUoAqgDIAJBAnRqIAM2AgAMKgsgBCgCDCIDDgIICQcLIAUgBCkCBDcCxAMgBUEDNgLAAyAFQTBqIAVBwANqEJYGIQMgAiAFKAKsAyIHTw0UIAUoAqgDIAJBAnRqIAM2AgAMKAsgBCgCBCIDIAUoAuQCIgkoAhBPDRQgBCgCCCIHIAkoAgwgA0EDdGoiCSgCBCAJKAIAIglrQQF2Sw0UIAdBAXQgCWpBAmsgA0EBdCAHGyIJQf7///8HSw0VIAQoAgwhCCAFIAk2AtADIAUgBzYCzAMgBSADNgLIAyAFIAg2AsQDIAVBBjYCwAMgBUEwaiAFQcADahCWBiEDIAIgBSgCrAMiB08NFiAFKAKoAyACQQJ0aiADNgIADCcLAkACQAJAIAQoAgQiAyAFKALkAiIJKAIQTw0AIAQoAggiByAJKAIMIANBA3RqIgkoAgQgCSgCACIJa0EBdksNACAEKAIMIQggBw0BIANBAXQhDwwCC0GI0MkAQRVB5NDJABDjDwALIAdBAXQgCWpBAmsiD0F/Rg0XCyAPQQFqIQkgD0H+////B08NFyAFIAk2AtADIAUgBzYCzAMgBSADNgLIAyAFIAg2AsQDIAVBBjYCwAMgBUEwaiAFQcADahCWBiEDIAIgBSgCrAMiB08NGCAFKAKoAyACQQJ0aiADNgIADCYLIAQoAgwiAw4DBwgJCgsgBCgCDCIDDgMKCwwNCyAFQQc2AsADIAVBMGogBUHAA2oQlgYhAyACIAUoAqwDIgdPDRYgBSgCqAMgAkECdGogAzYCAAwjCyAEKAIEIQMgBUEINgLAAyAFIAM2AsQDIAVBMGogBUHAA2oQlgYhAyACIAUoAqwDIgdPDRYgBSgCqAMgAkECdGogAzYCAAwiCyAEKAIIIQggBUHAA2ogA0EEQQgQggogBSgCxAMhCSAFKALAA0EBRg0mIAUoAsgDIQcgA0EDdCINBEAgByAIIA38CgAACyAFIAM2AsgDIAUgBzYCxAMgBSAJNgLAAyMAQRBrIgckAAJAAkAgBUEQaiIIIAVBwANqIgMoAggiCSADKAIASQR/IAdBCGogAyAJQQRBCBDlCCAHKAIIIglBgYCAgHhHDQEgAygCCAUgCQs2AgQgCCADKAIENgIAIAdBEGokAAwBCyAJIAcoAgxB2M/JABC0GgALIAUgBSkDEDcCxAMgBUEBNgLAAyAFQTBqIAMQlgYMAgsgBUEHNgLAAyAFQTBqIAVBwANqEJYGDAELIAVBADYCwAMgBSAEKAIIKQIANwLEAyAFQTBqIAVBwANqEJYGCyEDIAIgBSgCrAMiB08NEyAFKAKoAyACQQJ0aiADNgIADB4LIAVBBzYCwAMgBUEwaiAFQcADahCWBiEDIAIgBSgCrAMiB08NEyAFKAKoAyACQQJ0aiADNgIADB0LIAQoAggoAgAhByAFKAKgAyIDIAUoApgDRgRAIAVBmANqQaTRyQAQxBILIAUoApwDIANBA3RqIgkgBzYCBCAJIAI2AgAgBSADQQFqNgKgAyAEKAIMRQ0TIAIgBSgCrAMiA08NFCAFKAKoAyACQQJ0aiAEKAIIKAIANgIADBwLIAVBBTYCwAMgBSAEKAIIKQIANwLEAyAFQTBqIAVBwANqEJYGIQMgAiAFKAKsAyIHTw0UIAUoAqgDIAJBAnRqIAM2AgAMGwsgBCgCCCEIIAVBwANqIANBBEEEEIIKIAUoAsQDIQkgBSgCwANBAUYNHyAFKALIAyEHIANBAnQiDQRAIAcgCCAN/AoAAAsgBSADNgLIAyAFIAc2AsQDIAUgCTYCwAMgBUEYaiAFQcADaiIDQeTRyQAQhw4gBSAFKQMYNwLEAyAFQQQ2AsADIAVBMGogAxCWBiEDIAIgBSgCrAMiB08NFCAFKAKoAyACQQJ0aiADNgIADBoLIAVBBzYCwAMgBUEwaiAFQcADahCWBiEDIAIgBSgCrAMiB08NFCAFKAKoAyACQQJ0aiADNgIADBkLIAQoAggoAgAhByAFKAKgAyIDIAUoApgDRgRAIAVBmANqQZTSyQAQxBILIAUoApwDIANBA3RqIgkgBzYCBCAJIAI2AgAgBSADQQFqNgKgAyAEKAIMRQ0UIAIgBSgCrAMiA08NFSAFKAKoAyACQQJ0aiAEKAIIKAIANgIADBgLIAVBBTYCwAMgBSAEKAIIKQIAQiCJNwLEAyAFQTBqIAVBwANqEJYGIQMgAiAFKAKsAyIHTw0VIAUoAqgDIAJBAnRqIAM2AgAMFwsgBCgCCCEIIAVBwANqIANBBEEEEIIKIAUoAsQDIQkgBSgCwANBAUYNGyAFKALIAyEHIANBAnQiDQRAIAcgCCAN/AoAAAsgBSADNgLIAyAFIAc2AsQDIAUgCTYCwAMgBUEgaiAFQcADakHU0skAEIcOIAUoAiAhByAFKAIkIghBAk8EQCAIQQF2IQ8gByAIQQJ0akEEayEJIAchAwNAIAMoAgAhDSADIAkoAgA2AgAgCSANNgIAIAlBBGshCSADQQRqIQMgD0EBayIPDQALCyAFIAg2AsgDIAUgBzYCxAMgBUEENgLAAyAFQTBqIAVBwANqEJYGIQMgAiAFKAKsAyIHTw0VIAUoAqgDIAJBAnRqIAM2AgAMFgtBvL7JABCpHQALIAIgB0HIz8kAEIwOAAsgAiAHQfjPyQAQjA4AC0GI0MkAQRVBoNDJABDjDwALIAUgCa03A8ADQbDQyQBBEyAFQcADakHUyskAQcTQyQAQ8AwACyACIAdB1NDJABCMDgALQfTQyQAQqR0ACyAFIAmtNwPAA0Gw0MkAQRMgBUHAA2pB1MrJAEGE0ckAEPAMAAsgAiAHQZTRyQAQjA4ACyACIAdBhNPJABCMDgALIAIgB0GU08kAEIwOAAsgAiAHQejPyQAQjA4ACyACIAdBhNLJABCMDgALQQBBAEG00ckAEIwOAAsgAiADQcTRyQAQjA4ACyACIAdB1NHJABCMDgALIAIgB0H00ckAEIwOAAsgAiAHQfTSyQAQjA4AC0EAQQBBpNLJABCMDgALIAIgA0G00skAEIwOAAsgAiAHQcTSyQAQjA4ACyACIAdB5NLJABCMDgALIAJBAWohAiAEQRBqIgQgC0cNAAsMAQsgBUEANgLQAyAFQQE2AsQDIAVBkM7JADYCwAMgBUIENwLIAyAFQcADakGYzskAEOgXAAsgBUGwA2ogFUGozskAEL4IIAUoAqADIgIEQCAFKAKcAyIJIAJBA3RqIQsgBSgCuAMhBwNAAkACQAJAAkACQAJAAkAgByAJKAIAIgNLBEAgBSgCtAMiCiADaiINLQAAQQFGDQcgCSgCBCICIQQgAiAVTw0GA0ACQCAFQQhqIAYgBEEEdGoQ2Q0gBSgCCEEBcUUNACAVIAUoAgwiBEsNAQwICwsgBCAFKAKsAyIITw0BIAMgCE8NAiAFKAKoAyIIIANBAnRqIAggBEECdCIPaigCADYCACANQQE6AAADQCAFIAYgAkEEdGoQ2Q0gBSgCAEEBcUUNCCAEIAUoAqwDIgNPDQQgAiADTw0FIAUoAgQgBSgCqAMiCCACQQJ0aiAIIA9qKAIANgIAIAIgB08NBiACIApqQQE6AAAiAiAVSQ0ACyACIBVB+M7JABCMDgALIAMgB0G4zskAEIwOAAsgBCAIQdjOyQAQjA4ACyADIAhB6M7JABCMDgALIAQgA0GIz8kAEIwOAAsgAiADQZjPyQAQjA4ACyACIAdBqM/JABCMDgALIAQgFUHIzskAEIwOAAsgCUEIaiIJIAtHDQALCyAFKAKoAyEGIAUoAqwDIQICQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBUEwaiIHKALAAiIEBEAgBygCvAIiAyAEQRRsaiELA0ACQAJAAkACQAJAAkACQAJAIAMoAgBBAWsOCAECAwQFBgcHAAsgAygCBCIEIAJPDQkgAyAGIARBAnRqKAIANgIEDAYLIAMoAggiCUUNBSADKAIEIQQgCUEDdCEJA0AgBCgCACIIIAJPDQ4gBCAGIAhBAnRqKAIANgIAIARBCGohBCAJQQhrIgkNAAsMBQsgAygCCCIJRQ0EIAMoAgQhBCAJQQJ0IQkDQCAEKAIAIgggAk8NDiAEIAYgCEECdGooAgA2AgAgBEEEaiEEIAlBBGsiCQ0ACwwECyADKAIEIgQgAk8NByADIAYgBEECdGooAgA2AgQMAwsgAygCCCIJRQ0CIAMoAgQhBCAJQQJ0IQkDQCAEKAIAIgggAk8NDSAEIAYgCEECdGooAgA2AgAgBEEEaiEEIAlBBGsiCQ0ACwwCCyADKAIEIgQgAk8NBiADIAYgBEECdGooAgA2AgQgAygCCCIEIAJPDQcgAyAGIARBAnRqKAIANgIIDAELIAMoAgQiBCACTw0HIAMgBiAEQQJ0aigCADYCBAsgA0EUaiIDIAtHDQALCyAHKAKgAiIDIAJPDQggByAGIANBAnRqKAIANgKgAiAHKAKkAiIDIAJPDQkgByAGIANBAnRqKAIANgKkAiAHKALMAiIDBEAgBygCyAIhBCADQQJ0IQMDQCAEKAIAIgkgAk8NDCAEIAYgCUECdGooAgA2AgAgBEEEaiEEIANBBGsiAw0ACwsMCwsgBCACQbCxyQAQjA4ACyAEIAJB4LHJABCMDgALIAQgAkGAsskAEIwOAAsgBCACQZCyyQAQjA4ACyAEIAJBoLLJABCMDgALIAggAkHAsckAEIwOAAsgCCACQdCxyQAQjA4ACyAIIAJB8LHJABCMDgALIAMgAkH4r8kAEIwOAAsgAyACQYiwyQAQjA4ACyAJIAJBmLDJABCMDgALIAVBwANqIgQgB0HgAvwKAAACfyMAQcADayICJAAgAkHYAGoiAyAEQYACahD0CSAEIANBgAL8CgAAIAJBADYCFCACQoCAgIDAADcCDCAEKALAAiEGIAJBADYCcCACQgQ3AmggAkIANwJgIAJCgICAgMAANwJYAkACQCAGBEAgAyAGENELIAYgAigCbCIDSw0BCyACIAY2AmwMAQsgAkHkAGogBiADaxDRCwsgAkEwaiACQfAAaigCADYCACACQShqIAJB6ABqKQIANwMAIAJBIGogAkHgAGoiFCkCADcDACACIAIpAlg3AxggBCgCzAIiAwRAIAQoAsgCIg8gA0ECdGohFSAEKAK8AiESIAQoAqwCIQoDQCAPKAIAIQMgAigCDEUEQCACQQxqQdCuyQAQyRILIA9BBGohDyACKAIQIAM2AgBBACEHIAJBADYCMEEBIQMgAigCLCENQQAhCQJAAkACQAJAA0ACQCACIANBAWsiAzYCFCACIAIoAhAgA0ECdGooAgAiAzYCNCADIA1PDQAgAigCICEIAkACQCAHIAIoAiggA0ECdGoiDCgCACILSwRAIAggC00NBSACKAIcIAtBAnRqKAIAIANGDQELIAIgBzYCOCAHIAhPDQYgAigCHCAHQQJ0aiADNgIAIAwgBzYCACACIAdBAWoiBzYCMCADIAZPDQUCQAJAAkACQAJAIBIgA0EUbGoiAygCAEEDaw4GAQACAwUEBQsgAygCBCIIIQsgCCADKAIIQQJ0aiALayIMQQJ2IhMgAkEMaiIDKAIAIAMoAggiCGtLBEAgAyAIIBNBBEEEEMgTIAMoAgghCAsgDARAIAMoAgQgCEECdGogCyAM/AoAAAsgAyADKAIIIBNqNgIIDAQLIAMoAgggAygCBCELIAIoAhQiAyACKAIMRgRAIAJBDGpB8K7JABDJEgsgCXIhCSACKAIQIANBAnRqIAs2AgAgAiADQQFqIgM2AhQMBAsgAygCCCEIIAMoAgQhCyACKAIUIgMgAigCDEYEQCACQQxqQYCvyQAQyRILIAIoAhAgA0ECdGogCDYCACACIANBAWoiCDYCFCACKAIMIAhGBEAgAkEMakGQr8kAEMkSCyACKAIQIAhBAnRqIAs2AgAgAiADQQJqIgM2AhQMAwsgAygCBCEIIAIoAhQiAyACKAIMRgRAIAJBDGpBoK/JABDJEgsgAigCECADQQJ0aiAINgIAIAIgA0EBaiIDNgIUDAILIARBAToA0gILIAIoAhQhAwsgAw0BDAULCyADIA1B8LjJABCMDgALIAsgCEGAuckAEIwOAAsgAyAGQeCuyQAQjA4ACyACQQM2AkAgAkG4uMkANgI8IAJCAzcCSCACQd8JNgJsIAJBkwo2AmQgAkGTCjYCXCACIAg2AlQgAiACQdgAajYCRCACIAJBNGo2AmggAiACQdQAajYCYCACIAJBOGo2AlggAkE8akHQuMkAEOgXAAsgBCAJIApyIgo2AqwCIA8gFUcNAAsLIBQgBEHgAvwKAABBqcboAC0AABpB8AJBEBDvGyIDBEAgA0KBgICAEDcDACADQQhqIAJB2ABqQegC/AoAACACQRhqQQRBBBDyDCACQSRqQQRBBBDyDCACQQxqQQRBBBDyDCACQcADaiQAIAMMAQtBEEHwAhCiHwALIQIgG0EqNgIAIBsgAjYCBCAFQbADahDKHSAFQaQDakEEQQQQ8gwgBUGYA2pBBEEIEPIMCyAFQaAGaiQADAELIAkgBSgCyANBsMvJABC0GgALIA4oAjQhAiAOKAIwIgNBKkcEQCAAQQhqIA5BOGpBOPwKAAAgACACNgIEIAAgAzYCACABIAEoAiBBAWo2AiAMAQsgACACNgIEIABBKjYCACABIAEoAiBBAWo2AiALIA5B8ABqJAAPC0HA6MkAENYRAAvRBwIGfwN+IwBBoAFrIgMkACACQbABaiEEAkAgAi0AsAEgASgCAC0AAEcEQEEBIQUgA0EBNgKEASADQZyyxAA2AoABIANCATcCjAEgA0GWAzYCLCADIAQ2AkAgAyADQShqIgQ2AogBIAMgA0FAayIGNgIoIANBFGogA0GAAWoiBxD3BCADIAIpA6gBNwMgIANBATYChAEgA0GcssQANgKAASADQgE3AowBIANBlgM2AkQgAyABNgJAIAMgBjYCiAEgBCAHEPcEIANBPGogA0EcaigCADYCACADIAMpAhQ3AjQgA0EgaiAEEJEQIQEgAi0AsAFBogFHDQEgAhCDDSEEIAIQiAggAiAEEMQQDAELIAIpA6gBIQsgAhCICCACNQKoASEJIAItALABIgFB9gBGBEAgAigCbCEFAkAgAhDIBSIBRQ0AIAEtAAAiB0HLAGsiCEEfTUEAQQEgCHRBgYCCkHhxG0UgB0HMAGtB/wFxQdQAS3ENACABIAUQ6goNACACEIgIQQEhBgsgBC0AACEBCwJAAkACQAJAIAFB/wFxQcsAayIFQR9NQQBBASAFdEGBgIKQeHEbRSABQcwAa0H/AXFB1ABLcQ0AIAQgAigCbBDqCg0AIAIQyAUiAUUNACABLQAAQYQBRw0AIAIQyAUaIAYgAi0AmQFBAXMgAigCeEEKR3EiBHINAQwCC0EAIQQgBkUNAQsgA0GAAWogAhDfCCADKAKAASEBIAMpA4gBIgpCAFINAUEBIQUMAgsgA0EIaiACQQAgC6cQhwYgAygCDCEBIAMoAgghBQwBCyADIAo3A1AgAyADKAKEATYCTCADIAE2AkhBACEBAkACQAJAIAQEQCACEIgIIAMgAkEAIAIoAqgBEIcGQQEhBSADKAIEIQEgAygCAEEBcQ0BCyACKQOgASEKIANBgAFqIANByABqEO4OIANB+ABqIANBmAFqKQMANwIAIANB8ABqIANBkAFqKQMANwIAIANB6ABqIANBiAFqKQMANwIAIAMgAykDgAE3AmBBqcboAC0AABpB+ABBCBDvGyIERQ0BIARBATYCGCAEIAY6ABAgBEESNgIAIAQgCkKAgICAcIMgCYQ3AwggBEEcaiADQdwAakEk/AoAACAEIAE2AkBBACEFQanG6AAtAAAaIAIpA6ABIQlBDEEEEO8bIgFFDQIgASAENgIIIAEgCUKAgICAcIMgC0L/////D4OENwIADAMLIANB0ABqEPEMDAILQQhB+AAQoh8AC0EEQQwQoh8ACyAAIAE2AgQgACAFNgIAIANBoAFqJAALtQcBBn8jAEHQAGsiBCQAAkACfwJAAkACQAJAAkACQAJ/AkAgAAJ/AkAgAygCAEEBa0ECTwRAIAQgAy0AGDoAJCAEIAMoAhQiCDYCICAEIAMoAhA2AhwgBCADKQIINwIUIARBATYCDCABLQCsDUEBRg0GIAEpAwggASkDAEIChYRQRQRAIAIoAsgEQQJGDQggAUGQBWohBiACQZgDaiEHAkACQAJAIAEoApAKIgUtAOICRQRAIARBKGogBiAHIARBDGoQNyAEKAIoIgVBAkYNASAFQQFxRQ0KIAQoAiwMCQsgBS0A4wIhCSAEQShqIAYgByAEQQxqEDcgBCgCKCIFQQJHDQELIAQgBCgCLCIFNgJEIARBAjYCQAwBCyAFQQFxRQ0HIAQoAiwiBSAJQQFxRQ0GGiAEQUBrIARBDGogBSAEKAIwIgUgBSAGIAcQ3RogBCgCQCIFQQJHDQUgBCgCRCEFCyAFEKcNGiAEQQxqIAEgAiADEOQCIAQoAgwNAkEADAMLIARBATYCLCAEQbiRygA2AiggBEIANwI0IAQgBEHMAGo2AjAgBEEoakHAkcoAEOgXAAsgAS0ArA1BAUYNBwJAAkAgASkDCCABKQMAQgKFhFBFBEAgAigCyARBAkYNCyACQdgBaiEIAkACQCABKAKABSIGLQDiAkUEQCAEQQxqIAEgCCADECsgBCgCDCIIQQJHDQEMDwsgBi0A4wIhCSAEQQxqIAEgCCADECsgBCgCDCIGQQJGDQ4gBCgCFCEFIAQoAhAhByAGQQFxRSAJQQFxRXINBCAEQShqIAMgByAFIAUgASAIENwaIAQoAigiBkECRw0BIAQoAiwMDwtBASEGIAhBAXENAkEAIQYMAwsgBCgCMCEFIAQoAiwhBwwCCyAEQQxqIAEgAiADEOQCIAAgBCgCDAR/IAAgBCkCFEIgiTcCBEEBBUEACzYCAAwNCyAEKAIUIQUgBCgCECEHCyAAIAU2AgggACAHNgIEIAAgBjYCAAwLCyAAIAQpAhRCIIk3AgRBAQs2AgAMCQsgBUEBcUUNASAEKAJECyEFIAAgCDYCCCAAIAU2AgQgAEEBNgIADAcLIABBADYCAAwGC0G8l8oAQShBlJjKABCcFAALQYyXygAQqR0AC0G8l8oAQShB9JfKABCcFAALQeyWygAQqR0ACyAEKAIQCxCnDRogBEEMaiABIAIgAxDkAiAAIAQoAgwEfyAAIAQpAhRCIIk3AgRBAQVBAAs2AgALIARB0ABqJAAL6A4CCn8BfiMAQdABayICJAAgAkEBOgAMIAIgATYCCCACQRBqIQQjAEEQayIBJAAgAUEEaiACQQhqIgMQ2gMCQCABLQAEQQFGBEAgBCABKAIINgIEIARBgoCAgHg2AgAMAQsgAS0ABUUEQCAEQYGAgIB4NgIADAELIAFBBGohBiADKAIAIQMjAEEQayIFJAAgA0EANgIIIAMgAygCFEEBajYCFCAFQQRqIANBDGogAxC+BCAFKAIIIQMCQCAFKAIEQQJGBEAgBkGBgICAeDYCACAGIAM2AgQMAQsgBiADIAUoAgwQ7wwLIAVBEGokACABKAIEQYGAgIB4RwRAIAQgASkCBDcCACAEQQhqIAFBDGooAgA2AgAMAQsgBCABKAIINgIEIARBgoCAgHg2AgALIAFBEGokAAJAAkACQAJAAkACQCACKAIQIgFBgICAgHhrDgMDAQACCyAAIAIoAhQ2AgQgAEEGOgAADAQLIABBADYCDCAAQQA2AgQgAEEFOgAADAMLIAIpAhQhDCACQQA2AiQgAkEANgIcIAIgDDcCkAEgAiABNgKMASACQbABaiACQQhqEIsYIAItALABQQZGBEAgACACKAK0ATYCBCAAQQY6AAAgAkGMAWoQyh0MAgsgAkE4aiACQcABaiIJKQMANwMAIAJBMGogAkG4AWoiCikDADcDACACIAIpA7ABNwMoIAJBmAFqIgEgAkEcaiACQYwBaiACQShqEPkHIAItAJgBQQZHBEAgARDgFAsgAkHEAGohBiACQbQBaiEHA0ACQCACQYABaiEEIwBBEGsiASQAIAFBBGogAkEIaiIDENoDAkAgAS0ABEEBRgRAIAQgASgCCDYCBCAEQYGAgIB4NgIADAELIAEtAAVFBEAgBEGAgICAeDYCAAwBCyABQQRqIQggAygCACEDIwBBEGsiBSQAIANBADYCCCADIAMoAhRBAWo2AhQgBUEEaiADQQxqIAMQvgQgBSgCCCEDAkAgBSgCBEECRgRAIAhBgICAgHg2AgAgCCADNgIEDAELIAggAyAFKAIMELEOCyAFQRBqJAAgASgCBEGAgICAeEcEQCAEIAEpAgQ3AgAgBEEIaiABQQxqKAIANgIADAELIAQgASgCCDYCBCAEQYGAgIB4NgIACyABQRBqJAACQAJAAkACQCACKAKAASIBQYCAgIB4aw4CBAABCyACKAKEASEBDAELIAIgAikChAEiDDcCkAEgAiABNgKMASACQZgBaiACQQhqEIsYIAItAJgBQQZHDQEgAigCnAEhASACQYwBahDKHQsgAEEGOgAAIAAgATYCBAwECyAHIAIpA5gBNwIAIAdBEGogAkGoAWopAwA3AgAgB0EIaiACQaABaikDADcCACACQcgAaiAKKQIANwMAIAJB0ABqIAkpAgA3AwAgAkHYAGogAkHIAWooAgA2AgAgAiACKQKwATcDQCACIAE2AlwgAiAMPgJgIAIgDEIgiD4CZCACQfgAaiAGQRBqKQIANwMAIAJB8ABqIAZBCGopAgA3AwAgAiAGKQIANwNoIAJBsAFqIgEgAkEcaiACQdwAaiACQegAahD5ByACLQCwAUEGRg0BIAEQ4BQMAQsLIAJBuwFqIAJBJGooAgA2AAAgAEEFOgAAIAIgAikCHDcAswEgACACKQCwATcAASAAQQhqIAJBtwFqKQAANwAADAILIAJBsAFqIgYhBAJAIAJBCGooAgAiARD2CCIDBEAgBEEANgIAIAQgAzYCBAwBCyMAQSBrIgMkAAJAAkAgASgCFCIFIAEoAhAiB0kEQCABQQxqIQggASgCDCEJA0AgBSAJai0AACIKQQlrIgtBF0tBASALdEGTgIAEcUVyDQIgASAFQQFqIgU2AhQgBSAHRw0ACwsgA0EFNgIQIAMgAUEMahDQESADQRBqIAMoAgAgAygCBBCsEyEBIARBADYCACAEIAE2AgQMAQsCQAJAAkAgCkEiRwRAIAMgASADQR9qQfSQ4wAQvwM2AgwMAQsgAUEANgIIIAEgBUEBajYCFCADQRBqIAggARC+BCADKAIUIQUgAygCECIHQQJGDQIgA0EIaiAFIAMoAhgQ2wsgAygCCCEFIAdBAXEEQCAFRQ0BDAILIAUNAQsgAygCDCABEKoRIQEgBEEANgIAIAQgATYCBAwCCyAEIAMoAgw2AgQgBCAFNgIADAELIARBADYCACAEIAU2AgQLIANBIGokAAsgAigCsAEiAwRAIAIoArQBIQQjAEEgayIBJAAgASAENgIcIAEgAzYCGCABQgA3AhAgASAENgIMIAEgAzYCCCAGIAFBCGoQsgcgAUEgaiQAAkAgAi0AsAFBBkYEQCACKAK0ARCTCCEBIABBBjoAACAAIAE2AgQMAQsgACACKQOwATcDACAAQRBqIAJBwAFqKQMANwMAIABBCGogAkG4AWopAwA3AwALIARFDQIgAyAEQQEQ+BwMAgsgACACKAK0ATYCBCAAQQY6AAAMAQsgAkEcahD9DAsgAkHQAWokAAuyCQETfyMAQSBrIgUkAAJAAkACQCAAKAIIIg1FDQAgASgCCCIMRQ0AIAEoAgQhEwNAAkACQAJAAkACQAJAAkAgACgCCCIDIApLBEAgEyAJQQF0aiIGLQABIgcgACgCBCILIApBAXRqIgQtAAAiAkkNAyAELQABIgQgBi0AACIISQ0CIAggAiACIAhJGyAHIAQgBCAHSxtLDQEgBSAEOgALIAUgAjoACiAJIAxPDQUDQCAGLQAAIgMgAkH/AXEiByADIAdLGyAGQQFqIhQtAAAiAyAEQf8BcSIQIAMgEEkbSw0FIAVBDGohCEEAIREgBUEKaiICLQAAIQQCQAJAAkACQCACLQABIgIgBi0AASILSyAEQf8BcSIDIAYtAAAiDkkgAiAOSXJyRSADIAtNcUUEQCAOIARB/wFxIhIiAyADIA5JIg8bIAsgAiACIAtLIgcbSw0BIAcgD3JFDQIgDkEBayEDIAdFBEAgA0EAIA4gEksbIQMMBAtBASEPIAtBAWohByAOIBJNBEAgByEEIAIhAwwECyAHQf8BcSACQQh0ciELQQEhEQwDCyAIQQA6AAMgCEEAOgAADAMLIAhBADoAAyAIIAI6AAIgCCAEOgABIAhBAToAAAwCC0G8gcsAQShBzILLABCcFAALIAggCzsABCAIIBE6AAMgCCAPOgAAIAggBEH/AXEgA0EIdHI7AAELIAUtAA8hAgJAAkAgBS0ADEEBRgRAIAUtAA4hAyAFLQANIQcgAkEBcQ0BIAMhBCAHIQIMAgsgAkEBcUUNCSAFLQARIQQgBS0AECECDAELIAUtABEhBCAFLQAQIQIgACgCCCIIIAAoAgBGBEAgAEGwpNEAEJcTCyAAKAIEIAhBAXRqIgsgAzoAASALIAc6AAAgACAIQQFqNgIICyAFIAQ6AAsgBSACOgAKIBQtAAAgEEsNBSAGQQJqIQYgDCAJQQFqIglHDQALIAwhCQwECyAKIANBoKTRABCMDgALQdCk0QBByQBBnKXRABCcFAALIAAoAgAgA0YEfyAAQayl0QAQlxMgACgCBAUgCwsgA0EBdGoiByAEOgABIAcgAjoAACAAIANBAWo2AggMAwsgCUEBaiEJDAMLIAAoAgghAwsgACgCACADRgRAIABBwKTRABCXEwsgACgCBCADQQF0aiIHIAQ6AAEgByACOgAAIAAgA0EBajYCCAsgCkEBaiEKCyAKIA1PIgJFIAkgDElxDQALIAAoAgghBiACRQRAIApBAXQhAiAGQQF0IQkDQCAGIApNDQQgACgCBCIEIAJqIgwtAAAhAyAMQQFqLQAAIQwgACgCACAGRgR/IABBkKTRABCXEyAAKAIEBSAECyAJaiIEIAM6AAAgBEEBaiAMOgAAIAAgBkEBaiIGNgIIIAJBAmohAiAJQQJqIQkgDSAKQQFqIgpHDQALCyAGIA1JDQEgAEEANgIIIAUgADYCFCAFIAAoAgQiAjYCDCAFIA02AhggBSAGIA1rNgIcIAUgAiANQQF0ajYCECAFQQxqEJ8JIAAgAC0ADCABLQAMcToADAsgBUEgaiQADwsgDSAGQayFzgAQph0ACyAKIAZBgKTRABCMDgAL4QcCBn8CfiMAQeAAayIDJAAgA0EwaiABEN8IIAMoAjAhBAJAIAMpAzgiCVBFBEAgAyAJNwMYIAMgAygCNDYCFCADIAQ2AhAgA0EIaiADQRhqIgcQ4g4CQAJAIAMoAggiBCADKAIMIgVB1LTEAEEGEIQZDQAgBCAFQdq0xABBBBCEGQ0AIAQgBUHetMQAQQYQhBkNACAEIAVB5LTEAEEGEIQZDQAgBCAFQeq0xABBAxCEGQ0AIAQgBUHttMQAQQcQhBkNACAEIAVB9LTEAEEHEIQZDQAgBCAFQfu0xABBBhCEGQ0AIAQgBUGBtcQAQQYQhBkNACAEIAVBzLPEAEEEEIQZDQAgBCAFQYe1xABBBRCEGQ0AIAQgBUGMtcQAQQkQhBlFDQELIAMgAykDEDcDUCADQa2BgIB4NgIwIAEgA0HQAGogA0EwahDNFwtBACEFAkAgAS0AsAEiBEESRgRAIAMgAUEBQQAQkwsgAygCBCEFIAMoAgBBAXEEQCAFIQQMAgsgAS0AsAEhBAsgAyAFNgIgAkACQAJAIARB/wFxQdkARwRAIANBADYCLCADQoCAgIDAADcCJAwBCyABEIgIIANBMGoiCCABEKsDIAMoAjQhBiADKAIwIgRBgICAgHhGDQEgAyADKAI4NgIsIAMgBjYCKCADIAQ2AiQgAS0AsAFB2QBHDQAgAyABKQOoATcDUCADQZWBgIB4NgIwIAEgA0HQAGogCBDNFwNAIAEtALABIgRBAkYgBEGjAUZyDQEgARCICAwACwALIAE1AqgBIQkCQCABKAJsIgRBgCBxRQRAIAEgBEGAIHI2AmwgA0EwaiABEO4DIAEgASgCbEH/X3E2AmwMAQsgA0EwaiABEO4DCyADKAI0IQYgAygCMCIIQYCAgIB4Rw0BIANBJGoiARCvEiABEK0eCyAFBEAgA0EgahDLGQsgBiEEDAELIAMoAjghByABKQOgASEKIANB2ABqIANBGGopAwA3AwAgAyADKQMQNwNQIANBMGogA0HQAGoQ7g5BACEBQanG6AAtAAAaQdAAQQgQ7xsiBARAIAQgAykDMDcDCCAEIAU2AiwgBEEAOgAoIAQgAykCJDcCMCAEIAc2AkwgBCAGNgJIIAQgCDYCRCAEIApCgICAgHCDIgogAq2ENwMAIARBEGogA0E4aikDADcDACAEQRhqIANBQGspAwA3AwAgBEEgaiADQcgAaikDADcDACAEQThqIANBLGooAgA2AgAgBCAJIAqENwI8DAMLQQhB0AAQoh8ACyAHEPEMC0EBIQELIAAgBDYCBCAAIAE2AgAgA0HgAGokAAvBBwIIfwF+IwBBsAFrIgQkACABEMgFGgJAIAEoAnhBCkYNACABLQCZAUEBcQ0AIAEoAmwhCCABEMgFIgdFBEAMAQsgBy0AACIJQcsAayIFQR9NQQBBASAFdEGBgIKQeHEbRQRAQQAhBSAJQcwAa0H/AXFB1ABLDQELQQAhBSAHIAgQ6goNACABEIgIIARBADYCFCAEQoCAgICAATcCDCAEQSxqIQgCQAJAAkADQCABLQCwASIFQQZGIAVBowFGckUEQCAEQSBqIAFBAEEAEOoCIAQoAiAhBSAEKAIoIglBB0YNAyAEKAIkIQpBAEUEQCAEQeQAaiAIQTT8CgAACyAEKAIUIgcgBCgCDEYEQCAEQQxqQcTxxAAQ3BILIAQoAhAgB0EGdGoiBiAJNgIIIAYgCjYCBCAGIAU2AgAgC0UEQCAGQQxqIARB5ABqQTT8CgAACyAEIAdBAWo2AhQgAS0AsAFBB0cNAiABEIgIDAELCyAEIAEpA6ABNwMYIARB9oCAgHg2AiAgASAEQRhqIARBIGoQzRcLIAEtAHVBAnFFBEAgBCACNgKkASAEIAE1AqQBPgKoASAEQYSAgIB4NgIgIAEgBEGkAWogBEEgahDNFwsgAS0Ab0EQcUUEQCAEIAI2AqQBIAQgATUCpAE+AqgBIARBgoCAgHg2AiAgASAEQaQBaiAEQSBqEM0XCyAEIARBDGoQxxkgBCgCACIGIAQoAgQiBUcEQANAIAZBCGooAgAEQCAEIAI2AqQBIAQgATUCpAE+AqgBIARBhYCAgHg2AiAgASAEQaQBaiAEQSBqEM0XCyAGQThqKAIARQRAIAQgAjYCpAEgBCABNQKkAT4CqAEgBEGGgICAeDYCICABIARBpAFqIARBIGoQzRcLIAZBQGsiBiAFRw0ACwsgARDnFA0BIAQgASkDqAE3A5gBIARBpAFqIAEQ2RkgBEEgaiICELkOIARBNGogBEGsAWooAgA2AgAgBCAEKQKkATcCLCAEQZgBaiACEJEQIQUgAS0AsAFBogFHDQAgARCDDSECIAEQiAggASACEMQQCyAEQQxqIgEQ0BQgARCwHkEBIQYMAQsgBEEraiAEQRRqKAIANgAAQQAhBkGpxugALQAAGiAEIAQpAgw3ACMgASkDoAEhDEEYQQQQ7xsiBQRAIAUgAzoACCAFIAQpACA3AAkgBSACrSAMQoCAgIBwg4Q3AgAgBUEQaiAEQSdqKQAANwAADAELQQRBGBCiHwALIAAgBTYCBCAAIAY2AgAgBEGwAWokAAuLBwIHfwN+IwBBsAFrIgIkAAJAAkACQAJAAkACQAJAAkACQCABKAIAIgdBAWsOBgECAwQFBgALIAEoAhAhBSABKQMIIQogASkDGCIJQgODUARAIAIgCaciAzYCGCACIAMoAhA2AhwgAkEQaiACQRhqIgMQoR4gAigCECIEIAQoAgAiBEEBajYCACAEQQBIDQggAkEIaiADEKEeIAIgAikDCDcCOCACIAJBOGoQoR4LIAEtACAhBgJAIAEoAigiA0UEQEEAIQEMAQsQoBkhASADKQIAIQsQoRkhBCACQThqIgggAygCCBBAIAQgCEH4APwKAAAgASAENgIIIAEgCzcCAAsgACABNgIoIAAgBjoAICAAIAk3AxggACAFNgIQIAAgCjcDCAwGCyABKQIEIQkgAkEgaiABQQxqEIQJIAEtABghBQJAIAEoAhwiA0UEQEEAIQEMAQsQoBkhASADKQIAIQoQoRkhBCACQThqIgYgAygCCBBAIAQgBkH4APwKAAAgASAENgIIIAEgCjcCAAsgACAJNwIEIAAgAikCIDcCDCAAIAE2AhwgACAFOgAYIABBFGogAkEoaigCADYCAAwFCyABKQIMIQkgASkCBCEKEJIZIQMgAkE4aiIEIAEoAhQQiQIgAyAEQTD8CgAAAkAgASgCGCIERQRAQQAhAQwBCxCgGSEBIAQpAgAhCxChGSEFIAJBOGoiBiAEKAIIEEAgBSAGQfgA/AoAACABIAU2AgggASALNwIACyAAIAE2AhggACADNgIUIAAgCTcCDCAAIAo3AgQMBAsgASkCBCEJIAJBLGogAUEMahCbAiABLQAYIQUCQCABKAIcIgNFBEBBACEBDAELEKAZIQEgAykCACEKEKEZIQQgAkE4aiIGIAMoAggQQCAEIAZB+AD8CgAAIAEgBDYCCCABIAo3AgALIAAgCTcCBCAAIAIpAiw3AgwgACABNgIcIAAgBToAGCAAQRRqIAJBNGooAgA2AgAMAwsgASkCBCEJEJIZIQQgAkE4aiIDIAEoAgwQiQIgBCADQTD8CgAAEKkZIQUgAyABKAIQEC0gBSADQdgA/AoAACAAIAU2AhAgACAENgIMIAAgCTcCBAwCCyAAIAEpAgQ3AgQMAQsQqRkhAyACQThqIgQgASgCBBAtIAMgBEHYAPwKAAAgACADNgIECyAAIAc2AgAgAkGwAWokAA8LAAvEGAIBfgN/IwBBEGsiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFB/wFxQfMAaw4uAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4LAn4jAEEwayIBJAACQEHwvOgAEMwaKQMAIgJCA4NQBEAgASACpyIENgIgIAEgBCgCEDYCJCABQRhqIAFBIGoiBBChHiABKAIYIgUgBSgCACIFQQFqNgIAIAVBAEgNASABQRBqIAQQoR4gASABKQMQNwIoIAFBCGogAUEoahChHgsgAUEwaiQAIAIMAQsMLwshAgwtC0KxwrnLByECIANCscK5ywc3AwggA0EIahDxDAwsC0Khws0DIQIgA0Khws0DNwMIIANBCGoQ8QwMKwtC8cLNm9fMnLrzACECIANC8cLNm9fMnLrzADcDCCADQQhqEPEMDCoLQuHCzZvXzJw6IQIgA0Lhws2b18ycOjcDCCADQQhqEPEMDCkLQtHCzcvn7RghAiADQtHCzcvn7Rg3AwggA0EIahDxDAwoC0LhxKW7ls2bOiECIANC4cSlu5bNmzo3AwggA0EIahDxDAwnC0LxxL37xq3ZsO4AIQIgA0LxxL37xq3ZsO4ANwMIIANBCGoQ8QwMJgsCfiMAQTBrIgEkAAJAQYi96AAQzBopAwAiAkIDg1AEQCABIAKnIgQ2AiAgASAEKAIQNgIkIAFBGGogAUEgaiIEEKEeIAEoAhgiBSAFKAIAIgVBAWo2AgAgBUEASA0BIAFBEGogBBChHiABIAEpAxA3AiggAUEIaiABQShqEKEeCyABQTBqJAAgAgwBCwwnCyECDCULQvHIlZvGrZi55QAhAiADQvHIlZvGrZi55QA3AwggA0EIahDxDAwkC0LByrmr1w0hAiADQsHKuavXDTcDCCADQQhqEPEMDCMLQsHMyfvWDSECIANCwczJ+9YNNwMIIANBCGoQ8QwMIgtCsc6VowchAiADQrHOlaMHNwMIIANBCGoQ8QwMIQtC4c6x+6asmDYhAiADQuHOsfumrJg2NwMIIANBCGoQ8QwMIAsCfiMAQTBrIgEkAAJAQaC96AAQzBopAwAiAkIDg1AEQCABIAKnIgQ2AiAgASAEKAIQNgIkIAFBGGogAUEgaiIEEKEeIAEoAhgiBSAFKAIAIgVBAWo2AgAgBUEASA0BIAFBEGogBBChHiABIAEpAxA3AiggAUEIaiABQShqEKEeCyABQTBqJAAgAgwBCwwhCyECDB8LAn4jAEEwayIBJAACQEG4vegAEMwaKQMAIgJCA4NQBEAgASACpyIENgIgIAEgBCgCEDYCJCABQRhqIAFBIGoiBBChHiABKAIYIgUgBSgCACIFQQFqNgIAIAVBAEgNASABQRBqIAQQoR4gASABKQMQNwIoIAFBCGogAUEoahChHgsgAUEwaiQAIAIMAQsMIAshAgweCwJ+IwBBMGsiASQAAkBB0L3oABDMGikDACICQgODUARAIAEgAqciBDYCICABIAQoAhA2AiQgAUEYaiABQSBqIgQQoR4gASgCGCIFIAUoAgAiBUEBajYCACAFQQBIDQEgAUEQaiAEEKEeIAEgASkDEDcCKCABQQhqIAFBKGoQoR4LIAFBMGokACACDAELDB8LIQIMHQtCodLNAyECIANCodLNAzcDCCADQQhqEPEMDBwLQtHWlcv3zRkhAiADQtHWlcv3zRk3AwggA0EIahDxDAwbCwJ+IwBBMGsiASQAAkBB6L3oABDMGikDACICQgODUARAIAEgAqciBDYCICABIAQoAhA2AiQgAUEYaiABQSBqIgQQoR4gASgCGCIFIAUoAgAiBUEBajYCACAFQQBIDQEgAUEQaiAEEKEeIAEgASkDEDcCKCABQQhqIAFBKGoQoR4LIAFBMGokACACDAELDBwLIQIMGgtC0dyVs9fMHCECIANC0dyVs9fMHDcDCCADQQhqEPEMDBkLQuHc1eumrJk5IQIgA0Lh3NXrpqyZOTcDCCADQQhqEPEMDBgLQuHeidPW7Jg6IQIgA0Lh3onT1uyYOjcDCCADQQhqEPEMDBcLQqHemQMhAiADQqHemQM3AwggA0EIahDxDAwWC0Kx3tWjByECIANCsd7Vowc3AwggA0EIahDxDAwVCwJ+IwBBMGsiASQAAkBBgL7oABDMGikDACICQgODUARAIAEgAqciBDYCICABIAQoAhA2AiQgAUEYaiABQSBqIgQQoR4gASgCGCIFIAUoAgAiBUEBajYCACAFQQBIDQEgAUEQaiAEEKEeIAEgASkDEDcCKCABQQhqIAFBKGoQoR4LIAFBMGokACACDAELDBYLIQIMFAtC8eCFm7at2LPlACECIANC8eCFm7at2LPlADcDCCADQQhqEPEMDBMLQvHgycvmrpi65QAhAiADQvHgycvmrpi65QA3AwggA0EIahDxDAwSCwJ+IwBBMGsiASQAAkBBmL7oABDMGikDACICQgODUARAIAEgAqciBDYCICABIAQoAhA2AiQgAUEYaiABQSBqIgQQoR4gASgCGCIFIAUoAgAiBUEBajYCACAFQQBIDQEgAUEQaiAEEKEeIAEgASkDEDcCKCABQQhqIAFBKGoQoR4LIAFBMGokACACDAELDBMLIQIMEQtC4eDVk8at2jEhAiADQuHg1ZPGrdoxNwMIIANBCGoQ8QwMEAsCfiMAQTBrIgEkAAJAQbC+6AAQzBopAwAiAkIDg1AEQCABIAKnIgQ2AiAgASAEKAIQNgIkIAFBGGogAUEgaiIEEKEeIAEoAhgiBSAFKAIAIgVBAWo2AgAgBUEASA0BIAFBEGogBBChHiABIAEpAxA3AiggAUEIaiABQShqEKEeCyABQTBqJAAgAgwBCwwRCyECDA8LQvHklYvXrpq55QAhAiADQvHklYvXrpq55QA3AwggA0EIahDxDAwOC0Kx5pWjByECIANCseaVowc3AwggA0EIahDxDAwNC0Lh5tGLxq7aMSECIANC4ebRi8au2jE3AwggA0EIahDxDAwMC0Lh5tGTl83bMyECIANC4ebRk5fN2zM3AwggA0EIahDxDAwLC0Lh5uXrpuybNiECIANC4ebl66bsmzY3AwggA0EIahDxDAwKC0LB6OWD1wwhAiADQsHo5YPXDDcDCCADQQhqEPEMDAkLAn4jAEEwayIBJAACQEHIvugAEMwaKQMAIgJCA4NQBEAgASACpyIENgIgIAEgBCgCEDYCJCABQRhqIAFBIGoiBBChHiABKAIYIgUgBSgCACIFQQFqNgIAIAVBAEgNASABQRBqIAQQoR4gASABKQMQNwIoIAFBCGogAUEoahChHgsgAUEwaiQAIAIMAQsMCgshAgwIC0Lh6rnLlq7dMiECIANC4eq5y5au3TI3AwggA0EIahDxDAwHC0Lx6rnb5u3bu+4AIQIgA0Lx6rnb5u3bu+4ANwMIIANBCGoQ8QwMBgtC0erNy+btGSECIANC0erNy+btGTcDCCADQQhqEPEMDAULAn4jAEEwayIBJAACQEHgvugAEMwaKQMAIgJCA4NQBEAgASACpyIENgIgIAEgBCgCEDYCJCABQRhqIAFBIGoiBBChHiABKAIYIgUgBSgCACIFQQFqNgIAIAVBAEgNASABQRBqIAQQoR4gASABKQMQNwIoIAFBCGogAUEoahChHgsgAUEwaiQAIAIMAQsMBgshAgwEC0LR0rmz1swcIQIgA0LR0rmz1swcNwMIIANBCGoQ8QwMAwsCfiMAQTBrIgEkAAJAQfi+6AAQzBopAwAiAkIDg1AEQCABIAKnIgQ2AiAgASAEKAIQNgIkIAFBGGogAUEgaiIEEKEeIAEoAhgiBSAFKAIAIgVBAWo2AgAgBUEASA0BIAFBEGogBBChHiABIAEpAxA3AiggAUEIaiABQShqEKEeCyABQTBqJAAgAgwBCwwECyECDAILQsHalaOXDCECIANCwdqVo5cMNwMIIANBCGoQ8QwMAQtC4eiFk/esmTohAiADQuHohZP3rJk6NwMIIANBCGoQ8QwLIAAgAjcDACADQRBqJAAPCwALsAcCA38BfiMAQeAAayIDJAACQAJAAkACQAJAAkACQAJAIAEoAgBBAWsOBAECAwQACyADQcgAaiACIAEoAggiBEEAEJMBIAMtAEhBBEYNBCADKQNIIgZC/wGDQgRRDQQgACAGNwIADAYLIANByABqIAFBCGogAhB9IAMtAEhBBEYNBCADKQNIIgZC/wGDQgRRDQQgACAGNwIADAULIANByABqIAIgAUEIakEAEGUgAy0ASEEERg0DIAMpA0giBkL/AYNCBFENAyAAIAY3AgAMBAsgA0HIAGogAUEEaiACEPgEIAMtAEhBBEYNAiADKQNIIgZC/wGDQgRRDQIgACAGNwIADAMLIANByABqIAFBCGogAhBXIAMtAEhBBEYNASADKQNIIgZC/wGDQgRRDQEgACAGNwIADAILIANByABqIAIoAgQgAigCCCgCUBEAAAJAIAMtAEhBBEYNACADKQNIIgZC/wGDQgRRDQAgACAGNwIADAILAkACQAJAAkACQAJAIARFDQAgA0HIAGogAigCBCAEIAIoAggoAkwRAwAgAy0ASEEERg0AIAMpA0giBkL/AYNCBFINAQsgAi0AFEUNASACKAIEIAIoAggoAlQRBgANAiADQShqIAFBEGoQ4g4gA0HIAGoiASADKAIoIAMoAiwQowIgA0EgaiABENEdIANBOGoiBSADKAIgIAMoAiRBASACLQAaEDogA0EYaiAFEO0OIAMoAhwhASADKAIYIQQgA0IANwNYIANBMGogAigCBCADQdgAaiAEIAEgAigCCCgCQBEEACADLQAwQQRGDQMgAykDMCIGQv8Bg0IEUQ0DIAAgBjcCACADLQBDQf4BRgRAIAUQ1hcLIANByABqELUaDAYLIAAgBjcCAAwFCyADQcgAaiABQQhqIAIQ5Q8gAy0ASEEERg0DIAMpA0giBkL/AYNCBFENAyAAIAY3AgAMBAsgA0EQaiABQRBqEOIOIANByABqIgUgAygCECADKAIUQQEgAi0AGhA6IANBCGogBRDtDiADKAIMIQEgAygCCCEEIANCADcDOCADQdgAaiACKAIEIANBOGogBCABIAIoAggoAkARBAAgAy0AWEEERg0BIAMpA1giBkL/AYNCBFENASAAIAY3AgAgAy0AU0H+AUcNAyAFENYXDAMLIAMtAENB/gFGBEAgA0E4ahDWFwsgA0HIAGoQtRoMAQsgAy0AU0H+AUcNACADQcgAahDWFwsgAEEEOgAACyADQeAAaiQAC+UHAgV/AX4jAEGQAWsiAiQAAkACQAJAAkAgAS0AsAEEQCACIAEpA6gBNwMAIAJBCGogARDZGSACQQE2AmwgAkH0w8QANgJoIAJCATcCdCACQZYDNgIYIAJBADoAiAEgAiACQRRqNgJwIAIgAkGAAWo2AhQgAiACQYgBajYCgAEgAkHQAGoiAyACQegAahD3BCACQeQAaiACQRBqKAIANgIAIAIgAikCCDcCXCACIAMQkRAhAyABLQCwAUGiAUYNAQwDCyABEIgIIAJB6ABqQQJBBEEQEIIKIAIoAmwhBCACKAJoQQFGDQEgAiACKAJwNgIYIAIgBDYCFEEBIQQDQAJAIAIgAzYCHAJAIAEtALABIgNBAUcEQAJAIANBowFHBEAgBA0DIANBB0YNASACIAEpA6gBNwMgIAJBLGogARDZGSACQQE2AmwgAkH0w8QANgJoIAJCATcCdCACQZYDNgKEASACQQc6AI8BIAIgAkGAAWo2AnAgAiACQYgBajYCgAEgAiACQY8BajYCiAEgAkHQAGoiAyACQegAahCaCiACQeQAaiACQTRqKAIANgIAIAIgAikCLDcCXCACQSBqIAMQkRAhAyABLQCwAUGiAUcNBCABEIMNIQQgARCICCABIAQQxBAMBAsgAiABKQOoATcDOCACQcQAaiABENkZIAJBATYCbCACQfTDxAA2AmggAkIBNwJ0IAJBlgM2AoQBIAJBAToAjwEgAiACQYABajYCcCACIAJBiAFqNgKAASACIAJBjwFqNgKIASACQdAAaiIDIAJB6ABqEPcEIAJB5ABqIAJBzABqKAIANgIAIAIgAikCRDcCXCACQThqIAMQkRAhAyABLQCwAUGiAUcNAyABEIMNIQQgARCICCABIAQQxBAMAwsgARCICCABLQCwAUEBRw0BCyABEIgIIABBCGogAkEcaigCADYCACAAIAIpAhQ3AgAMBgsCQCABKAJsIgNBwABxRQRAIAEgA0HAAHI2AmwgAkHoAGogARDrByABIAEoAmxBv39xNgJsDAELIAJB6ABqIAEQ6wcLIAIoAmwhAyACKAJoIgZBAkYNACACKQJwIQcgAigCHCIEIAIoAhRGBEAgAkEUakGAxcQAEM4SCyACKAIYIARBBHRqIgUgBzcCCCAFIAM2AgQgBSAGNgIAIARBAWohA0EAIQQMAQsLIABBgICAgHg2AgAgACADNgIEIAJBFGoiABCRFCAAEK0eDAMLIAEQgw0hBCABEIgIIAEgBBDEEAwBCyAEIAIoAnBB8MTEABC0GgALIABBgICAgHg2AgAgACADNgIECyACQZABaiQAC94GAQ9/IwBBQGoiAiQAIAEoAgQhAyABKAIAIQUgAS0ACCIHQQZHBEAgAkEvaiABQRhqKAAANgAAIAJBKGogAUERaikAADcDACACIAEpAAk3AyALIAJBEWogAkEoaikDADcAACACQRhqIAJBL2ooAAA2AAAgAiAHOgAIIAIgAzYCBCACIAU2AgAgAiACKQMgNwAJIAIgAS0AHiILOgAeIAIgAS0AHSIJOgAdIAIgAS0AHCIIOgAcAkAgCEECRw0AIANFBEBBACEDDAELAkACQCAHQQNPBEADQEEAIQECfwNAQQEgASAFai0AAEEvRg0BGiADIAFBAWoiAUcNAAsgAyEBQQALIQQCQAJAIAEOAgEABQsgBS0AAEEuRw0ECyABIARqIgEg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AEEMakIANwIAIABBFGpCADcCACABKAIIIgAgASgCAEYEQCABQbi60QAQoBMLIAEoAgQgAEHYAGxqIAFBuAFqIgJB2AD8CgAAIAEgAEEBajYCCCACIAEoAmgiAEHYAPwKAAAgAEGAgMQANgIAIABCADcCBCAAQQxqQgA3AgAgAEEUakIANwIAIAEoAggiACABKAIARgRAIAFByLrRABCgEwsgASgCBCAAQdgAbGogAUG4AWpB2AD8CgAAIAEgAEEBajYCCAwCCyADRQ0EIABBAWshAANAIAQQ2hQgBEHYAGohBCAAQQFrIgANAAsMBAtBAiACQYCAxABrIgAgAEEITxsiAEEGSQ0AIABBB0cEQCABQbgBaiABKAJkIgBB2AD8CgAAIABBgIDEADYCACAAQgA3AgQgAEEMakIANwIAIABBFGpCADcCACABKAIIIgAgASgCAEYEQCABQZi60QAQoBMLIAEoAgQgAEHYAGxqIAFBuAFqQdgA/AoAACABIABBAWo2AggMAQsgASgCbCEAIAFBADYCbCABQQA2AsgBIAEgADYCxAEgASAJNgLAASABIAEoAmgiAjYCuAEgASACIABB2ABsajYCvAEjAEEQayIHJAAgAUG4AWoiAigCBCACKAIAa0HYAG4iBCABKAIAIAEoAggiAGtLBEAgASAAIARBBEHYABDIEyABKAIIIQALIAcgASgCBDYCDCAHIAA2AgggByABQQhqNgIEIwBB8ABrIgQkACAEQRhqIAJBEGooAgA2AgAgBEEQaiACQQhqKQIANwMAIAQgAikCACIMNwMIIAdBBGoiAigCBCEDIAIoAgAgDKciACAEKAIMIghHBEAgAigCCCADQdgAbGohBQNAIAAiAigCACIKQYiAxABHBEAgBEEcaiILIABBBGpB1AD8CgAAIAUgCjYCACAFQQRqIAtB1AD8CgAAIAVB2ABqIQUgA0EBaiEDIABB2ABqIgAgCEcNAQsLIAQgAkHYAGo2AggLIAM2AgAgBEEIaiICKAIEIQUgAigCACEAIAJChICAgMAANwIAIAUgAGtB2ABuIQYgAigCCCEDAkACQCAAIAVGBEAgAigCECIARQ0CIAIoAgwiBSADKAIIIgJGDQEgAEHYAGwiBkUNASADKAIEIgggAkHYAGxqIAggBUHYAGxqIAb8CgAADAELA0AgABD5DCAA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A0EBajYCFAwBCwsgAiABKQOoATcDOCACQcQAaiABENkZIAJBATYCfCACQaToxAA2AnggAkIBNwKEASACQZYDNgJsIAJBBToAdyACIAJB6ABqNgKAASACIAJB8ABqNgJoIAIgAkH3AGo2AnAgAkHQAGoiAyACQfgAahCeCiACQeQAaiACQcwAaigCADYCACACIAIpAkQ3AlwgAkE4aiADEJEQIQMgAS0AsAFBogFHDQAgARCDDSEEIAEQiAggASAEEMQQCyACQQxqIgEQpRcgARCtHkEBDAILIAMgAigCgAFBtOjEABC0GgALIAEQiAggATUCpAEhCSACQYwBaiACQRRqKAIANgIAIAIgAikCDDcChAEgAkEBNgJ4IAIgCUIghiAKhDcCfCACQfgAahDhFSEDQQALIQEgACADNgIEIAAgATYCACACQdABaiQAC5MHAQl/IwBB8ANrIgEkAAJAIAAtAHVBIHFFDQAgACgCbCEIIAFBGGogABCwAgJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCbCIFQQJxRQ0AIAEoAnwiAigCCCIDQf////8HTw0BIAIoAhRFDQAgAw0CIAJBfzYCCCABKAJ4IgMoAggNAyADQX82AgggAigCECEGIANBDGogAigCFCIEEMgYIARBAnQiBwRAIAMoAhAgAygCFEECdGogBiAH/AoAAAsgAkEANgIUIAMgAygCFCAEajYCFCADIAMoAghBAWo2AgggAiACKAIIQQFqNgIICyABIAVBAXI2AoQBAkAgAS0AyAFBPkcEQCABQRBqIAFBGGpBAEEBEJMLIAEoAhQhAiABKAIQQQFxRQ0BIAIhAwwLC0GMtMQAQShBmMLEABCcFAALIAEgAjYC4AMgAUEIaiABQRhqEKkEIAEoAgwhAyABKAIIQQFxDQggASADNgLkAyADKAIAQRJGBEAgAyACNQIAIAM1AghCIIaENwIEIANBJGohBCADKAIkBEAgBBDLGQsgBCACNgIAQQAiAkUEQCABQYACaiABQRhqQeAB/AoAAAsgABC6CCACRQRAIAAgAUGAAmpB4AH8CgAACwJAIAAoAmwiBkECcUUNACAAKAJkIgQoAggiAkH/////B08NBiAEKAIURQ0AIAINByAEQX82AgggACgCYCICKAIIDQggAkF/NgIIIAQoAhAhByACQQxqIAQo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CgAACyAEIAM2AgggBCAGNgIEIAQgBzYCAAsgAUEQaiQADAELIAcgASgCDEG0weUAELQaAAsgCigCLCEEIAopAjAhGQwBCyAKQThqIAFBDGoQvg0gCikCPCEZIAooAjghBAtBqcboAC0AABogCigCJCEHIAooAhwhA0EsQQQQ7xsiAUUNASABIAg2AiggASAHNgIkIAEgCTYCGCABQQEgEiAYQiCIpyIHIAlGIgYbNgIUIAFByJHBACARIAYbNgIQIAEgAjYCDCABIBk3AgQgASAENgIAIAEgByAJazYCHCABIANBAWsiAkEAIAIgA00bNgIgIABBzJHBADYCCCAAIAE2AgQgAEEANgIAIAUgBSgCACIAQQFrNgIAIABBAUYEQCAKQRhqEMcJCyAKQdAAaiQADwtBlIvBAEE3IApBzwBqQYSLwQBBmIzBABDwDAALQQRBLBCiHwALQQRB0AAQoh8AC9YGAgV/AX4jAEHgAWsiAyQAQQBFBEAgAyABQcAA/AoAAAsgA0FAayEEIAVFBEAgBCACQcAA/AoAAAsCQAJAAkACQAJAAkACQAJAIAMoAgAEQCADIAQQpwTAQQBIDQFBASEBQQEhAiADKQMIQgJUDQUMBgsCfwJAIAMoAkBBAUcNAAJAAkACQAJAAkACQCADKQMIIginQQFrDgIBBgALIAMpA0hCAVENAQwFCyADKAJIQQFrDgICBAELIAMpAxAgAykDUFINAyADKQMYIAMpA1hSDQMgAykDICADKQNgUg0DIAMoAjggAygCPCADKAJ4IAMoAnwQzwtFDQMgA0HQAGohBCADQRBqIQFBASEHDAILIAMpAxAgAykDUFINAiADKQMYIAMpA1hSDQIgAykDICADKQNgUg0CIAMoAjggAygCPCADKAJ4IAMoAnwQzwtFDQIgA0HQAGohBCADQRBqIQFBASEFDAELIAMpAxAgAykDUFINASADKQMYIAMpA1hSDQEgAykDICADKQNgUg0BIAMoAjggAygCPCADKAJ4IAMoAnwQzwtFDQFBwAAQghkiBEIBNwMIIARCADcDAEEARQRAIARBEGogAUEQakEw/AoAAAtBwAAQghkiBkIBNwMIIAZCATcDACAFRQRAIAZBEGogAkEQakEw/AoAAAtBASEFQQAhAkEBDAILQQAiAkUEQCADQYABaiABQTD8CgAACyACRQRAIANBsAFqIARBMPwKAAALIANBsAFqEOwXIANBgAFqEOwXIAUhAiAHDAELIAMgBBCnBMBBAEgNAUEBIQUgAykDCCEIQQEhB0EBIQJBAQshASAIp0EBaw4CAQUDC0GpxugALQAAGkHAAEEIEO8bIgRFDQUgBCABQcAA/AoAAEGpxugALQAAGkHAAEEIEO8bIgYNAUEIQcAAEKIfAAsgBw0CDAMLIAYgAkHAAPwKAAAMBAsgBUUNAQsgA0EQahDsFwsgAykDSCEIIAMoAkBFBEAgCEIBVg0CIANB0ABqEOwXDAILAkACQCAIp0EBaw4CAQMACyABRQ0CIANB0ABqEOwXDAILIAJFDQEgA0HQAGoQ7BcMAQtBCEHAABCiHwALIAAgBDYCBCAAIAY2AgAgA0HgAWokAAvLBgIGfwN+IwBBoAFrIgMkACABNQKoASEKIANBgAFqIAEQ3wggAygCgAEhBQJAIAMpA4gBIglQBEAgAEECNgIAIAAgBTYCBAwBCyADQSBqIAk3AwAgA0EQaiIEIAk3AwAgAyADKAKEATYCHCADIAU2AhggAyADKQMYNwMIIAMgBBDiDiADKAIAIAMoAgRBzLPEAEEEEIQZBEAgAyABNQKkAT4CLCADIAEpA6gBPgIoIANB9YCAgHg2AoABIAEgA0EoaiADQYABahDNFwsgA0EwaiADQRhqEO4OAkAgAS0AsAFBCEcEQEEBIQQMAQsgA0HgAGohB0EBIQQCQANAIAEQiAgCQCABLQCwASIGQRlGDQAgASkDqAEhCSAGQcsAayIIQR9NQQBBASAIdEGBgIKQeHEbDQAgBkGjAUYgBkHMAGtB/wFxQdQAS3INAgsgByADKQMwNwMAIAdBCGogA0E4aikDADcDACAHQRBqIANBQGspAwA3AwAgB0EYaiADQcgAaikDADcDACADIAU2AlwgAyAENgJYAkACQCACRQRAIANBgAFqIAFBAEEAEOEBIAMoAoABIQQgAy0AmAFBAkYNASADKQOQASEJDAILIANBgAFqIAEQ3wggAygCgAEhBCADKQOIASIJUEUNAQsgAEECNgIAIAAgBDYCBCADQdgAahCNFgwECyADKAKEASEGQanG6AAtAAAaIAEpA6ABIQtBwABBCBDvGyIFBEAgBSALQoCAgIBwgyAKhDcDACAFQQhqIANB2ABqQSj8CgAAIAUgCTcDOCAFIAStIAatQiCGhDcDMEEAIQQgAS0AsAFBCEcNAwwBCwtBCEHAABCiHwALIAMgCaciAjYCVCADIAI2AlAgA0H0gICAeDYCgAEgASADQdAAaiADQYABahDNFyAAQSBqIANByABqKQMANwMAIABBGGogA0FAaykDADcDACAAQRBqIANBOGopAwA3AwAgACADKQMwNwMIIAAgBTYCBCAAIAQ2AgAMAQsgACADKQMwNwMIIAAgBTYCBCAAIAQ2AgAgAEEgaiADQcgAaikDADcDACAAQRhqIANBQGspAwA3AwAgAEEQaiADQThqKQMANwMACyADQaABaiQAC9wFAgx/A34jAEGgAWsiCSQAIAlBAEGgAfwLAAJAAkACQCACIAAoAqABIgVNBEAgBUEpTw0BIAEgAkECdGohDAJAAkAgBQRAIAVBAWohDSAFQQJ0IQoDQCAJIAZBAnRqIQMDQCAGIQIgAyEEIAEgDEYNCCADQQRqIQMgAkEBaiEGIAEoAgAhByABQQRqIgshASAHRQ0ACyAHrSERQgAhDyAKIQcgAiEBIAAhAwNAIAFBKE8NBCAEIA8gBDUCAHwgAzUCACARfnwiED4CACAQQiCIIQ8gBEEEaiEEIAFBAWohASADQQRqIQMgB0EEayIHDQALIAggEEKAgICAEFoEfyACIAVqIgFBKE8NAyAJIAFBAnRqIA8+AgAgDQUgBQsgAmoiASABIAhJGyEIIAshAQwACwALA0AgASAMRg0GIARBAWohBCABKAIAIAFBBGohAUUNACAIIARBAWsiAiACIAhJGyEIDAALAAsgAUEoQYDb5wAQjA4ACyABQShBgNvnABCMDgALIAVBKU8NASACQQJ0IQwgAkEBaiENIAAgBUECdGohDiAAIQMCQANAIAkgB0ECdGohBgNAIAchCyAGIQQgAyAORg0FIARBBGohBiAHQQFqIQcgAygCACEKIANBBGoiBSEDIApFDQALIAqtIRFCACEPIAwhCiALIQMgASEGA0AgA0EoTw0CIAQgDyAENQIAfCAGNQIAIBF+fCIQPgIAIBBCIIghDyAEQQRqIQQgA0EBaiEDIAZBBGohBiAKQQRrIgoNAAsCQCAIIBBCgICAgBBaBH8gAiALaiIDQShPDQEgCSADQQJ0aiAPPgIAIA0FIAILIAtqIgMgAyAISRshCCAFIQMMAQsLIANBKEGA2+cAEIwOAAsgA0EoQYDb5wAQjA4ACyAFQShBgNvnABCmHQALIAVBKEGA2+cAEKYdAAsgACAJQaAB/AoAACAAIAg2AqABIAlBoAFqJAALyAUCBn4EfyAAIAAoAjggAmo2AjgCQAJAIAAoAjwiC0UEQAwBC0EEIQkCfkEIIAtrIgogAiACIApLGyIMQQRJBEBBACEJQgAMAQsgATUAAAshAyAMIAlBAXJLBEAgASAJajMAACAJQQN0rYYgA4QhAyAJQQJyIQkLIAAgACkDMCAJIAxJBH4gASAJajEAACAJQQN0rYYgA4QFIAMLIAtBA3RBOHGthoQiAzcDMCACIApPBEAgACAAKQMYIAOFIgQgACkDCHwiBiAAKQMQIgVCDYkgBSAAKQMAfCIFhSIHfCIIIAdCEYmFIgdCDYkgBiAEQhCJhSIEIAVCIIl8IgYgB3wiBYUiB0IRiSAEQhWJIAaFIgQgCEIgiXwiBiAHfCIHhTcDECAAIAdCIIk3AwggACAEQhCJIAaFIgRCFYkgBCAFQiCJfCIEhTcDGCAAIAMgBIU3AwAMAQsgAiALaiEJDAELIAIgCmsiAkEHcSEJIAJBeHEiAiAKSwRAIAApAwghBCAAKQMQIQMgACkDGCEGIAApAwAhBQNAIAQgASAKaikAACIHIAaFIgR8IgYgAyAFfCIFIANCDYmFIgN8IgggA0IRiYUiA0INiSADIAYgBEIQiYUiAyAFQiCJfCIEfCIGhSIFQhGJIAUgA0IViSAEhSIEIAhCIIl8IgV8IgiFIQMgBEIQiSAFhSIEQhWJIAQgBkIgiXwiBYUhBiAIQiCJIQQgBSAHhSEFIApBCGoiCiACSQ0ACyAAIAM3AxAgACAGNwMYIAAgBDcDCCAAIAU3AwALQQQhAgJ+IAlBBEkEQEEAIQJCAAwBCyABIApqNQAACyEDIAkgAkEBcksEQCABIApqIAJqMwAAIAJBA3SthiADhCEDIAJBAnIhAgsgACACIAlJBH4gASACIApqajEAACACQQN0rYYgA4QFIAMLNwMwCyAAIAk2AjwLgQYBAX8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOEgAMDA4BAgMEBQYNBw4OCAkKCw0LIABBEGoiABCoFyAAELEeDAsLIABBDGoQ9hkPCyAAQSBqEPEMIAAoAjAiABCpAgwNCyAALQAoQQJGDQggAEEgahDxDA8LIAAtAChBAkYNByAAQSBqEPEMDwsgACgCDCIBEKkBIAFB2ABBCBD4HCAAKAIQIgEQqQIgAUE4QQgQ+BwgAEEUahD1GQ8LIAAoAgwiARCpASABQdgAQQgQ+BwgAEEQaiIAEKkXIAAQsh4PCyAAKAIEIgBBFGoiARCoFyABELEeIABBIGoQzxcgAEHwAGoQ0xkgAEGIAUEIEPgcDwsgAEEMahCJFSAAQRRqEPYZIABBGGoQ9hkMBgsgAEEMahC/FSAAKAIUIgEQqQEgAUHYAEEIEPgcIAAoAhgiABCpAgwGCyAAQRBqEL8VIAAoAhgiARCpASABQdgAQQgQ+BwMBAsCQAJAAkACQAJAAkACQAJAIAAoAghBAWsOBwIDBAUGBwABCwJAIAAoAgwiACgCEEUEQCAAQShqEPEMDAELIABBGGoQzxkLIAAoAjhBAkcEQCAAQThqEMIVCyAAQfgAQQgQ+BwPCyAAQSBqEPEMIABBNGoQiA8PCyAAQSBqEPEMIABBNGoQihQPCyAAQQxqENUZDwsgAEEMahDUGQ8LIAAoAgwiAEEYahDxDCAAQSxqEJwYIABBMGoiARCvEiABEK0eIABBxABqIgEQohcgARCuHiAAQdAAQQgQ+BwPCyAAKAIMIgBBIGoQ8QwgAEEwahCcGCAAKAI0IgEQsQMgAUH4AEEIEPgcDAULIAAoAgwiAEEgahDxDCAAQTBqIgEQphAgARCxHiAAQcAAQQgQ+BwLDwsgACgCDCIAEKkBIABB2ABBCBD4HA8LIAAoAgwiARCpASABQdgAQQgQ+BwgACgCECIAEKkCDAELIAAoAhwiABCpAgsgAEE4QQgQ+BwL5QUBCn8gACgCACICLQBkRQRAIAAQ1QYPC0GAgMQAIQgCQAJAAkAgAigCUCIDIAAoAggiBUYNAAJ/QQEgABCoByICQYABSQ0AGkECIAJBgBBJDQAaQQNBBCACQYCABEkbCyEBIAAoAgQhBwJAIAEgA2oiBEUNACAEIAVPBEAgBCAFRg0BDAQLIAQgB2osAABBv39MDQMLIAUgB2ohCSAEIAdqIQBBACECQQAhAwNAAkAgACAJRg0AIAMhBgNAIAIhCgJ/IAAiAiwAACIDQQBOBEAgA0H/AXEhASAAQQFqDAELIAItAAFBP3EhASADQR9xIQAgA0FfTQRAIABBBnQgAXIhASACQQJqDAELIAItAAJBP3EgAUEGdHIhASADQXBJBEAgASAAQQx0ciEBIAJBA2oMAQsgAEESdEGAgPAAcSACLQADQT9xIAFBBnRyciEBIAJBBGoLIgAgCiACa2ohAgJAIAFBIEYgAUEJa0EFSXINAAJAIAFBgAFJDQACQAJAIAFBCHYiA0EfTQRAIANFDQEgA0EWRw0DIAFBgC1GDQQMAwsgA0EgRg0BIANBMEcgAUGA4ABHcg0CDAMLIAFB/wFxQfuP5wBqLQAAQQFxDQIMAQsgAUH/AXFB+4/nAGotAABBAnENAQsgBkEBcyABQSNGcSEDIAFBCkEjIAZBAXEbRg0DIAQgCmohBAwCCyAAIAlHDQALCwsCQCAERQ0AIAQgBU8EQCAEIAVGDQEMAwsgBCAHaiwAAEG/f0wNAgsgBCAFRg0AIAQgB2oiAiwAACIAQQBOBEAgAEH/AXEPCyACLQABQT9xIQYgAEEfcSEDIABBX00EQCADQQZ0IAZyDwsgAi0AAkE/cSAGQQZ0ciEGIABBcEkEQCAGIANBDHRyDwsgA0ESdEGAgPAAcSACLQADQT9xIAZBBnRyciEICyAIDwsgByAFIAQgBUGw7soAEOkbAAsgByAFIAQgBUGg7soAEOkbAAu7BgEEfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4SAAwMDgECAwQFBg0HDg4ICQoLDQsgAEEQaiAAKAIYIgEEQCAAKAIUIQADQCAAEKsCIABBOGohACABQQFrIgENAAsLQQhBOBDyDAwLCyAAQQxqEI0aDwsgAEEgahDxDCAAKAIwIgAQqwIMDQsgAC0AKEECRg0IIABBIGoQ8QwPCyAALQAoQQJGDQcgAEEgahDxDA8LIAAoAgwiARCRASABQdgAQQgQ+BwgACgCECIBEKsCIAFBOEEIEPgcIAAoAhQiAUUNBiABEKsCIAAoAhRBOEEIEPgcDwsgACgCDCIBEJEBIAFB2ABBCBD4HCAAQRBqIAAoAhgiAQRAIAAoAhQhAANAIAAQyxggAEEYaiEAIAFBAWsiAQ0ACwtBBEEYEPIMDwsgACgCBCICQRRqIAIoAhwiAwRAIAIoAhghAQNAIAEQqwIgAUE4aiEBIANBAWsiAw0ACwtBCEE4EPIMAkACQAJAIAIoAihBB2sOAgECAAsgAkEoahC8CwsgAigCbCIDBEAgAigCaCEBA0AgARCrAiABQThqIQEgA0EBayIDDQALCyACQeQAakEIQTgQ8gwLIAIoAnxBgICAgHhHBEAgAkH8AGoQmhULIAAoAgRBiAFBCBD4HA8LAkAgACgCDCICQQJGDQAgAEEQaiEBIAJFBEAgASgCACICKAIcIgMEQCACKAIYQThqIQEDQCABQTBrELwLIAEoAgAiBARAIAQQkQEgBEHYAEEIEPgcCyABQUBrIQEgA0EBayIDDQALCyACQRRqQQhBwAAQ8gwgAkEgQQQQ+BwMAQsgARC1GwsgAEEUahCNGiAAQRhqEI0aDAYLIABBDGoQ3A4gACgCFCIBEJEBIAFB2ABBCBD4HCAAKAIYIgAQqwIMBgsgAEEQahDcDiAAKAIYIgEQkQEgAUHYAEEIEPgcDAQLIABBCGoQrQYLDwsgACgCDCIAEJEBIABB2ABBCBD4HA8LIAAoAgwiARCRASABQdgAQQgQ+BwgACgCECIAEKsCDAELIAAoAhwiABCrAgsgAEE4QQgQ+BwL7wcCAX8BfiMAQZABayINJAAgDSAENgIUIA0gAjYCECANIAY6ABogDSAIOgAbIA0gCToAHCANIAo6AB0gDSALOgAeIA0gDDoAHwJAAkACQAJAAkACQAJAAkAgBRCjDUUEQCAFKAIADQUgCg0BDAQLIA0CfyAFQQhqIgIgBSgCAEEBRw0AGgJAAkACQAJAAkAgAigCAEEBaw4EAQIDBAALIAVBEGoMBAsgBUEQagwDCyAFQRBqDAILIAVBDGoMAQsgBUEQagspAgA3AyggDUHfgICAeDYCMCANQShqIA1BMGoQkRAhAiABLQCwAUGiAUYNAQwCCyANIAUpAwg3AyAgDULxyJWbxq2YueUANwMoIA1BKGoQ8QwgDULxyJWbxq2YueUANwM4IA1B4YCAgHg2AjAgASANQSBqIA1BMGoQzRcMAgsgARCDDSEEIAEQiAggASAEEMQQCyAAQQk2AgAgACACNgIEDAILIAtFDQAgDQJ/IAVBCGoiAiAFKAIAQQFHDQAaAkACQAJAAkACQCACKAIAQQFrDgQBAgMEAAsgBUEQagwECyAFQRBqDAMLIAVBEGoMAgsgBUEMagwBCyAFQRBqCykCADcDKAJ+IwBBMGsiAiQAAkBBkL/oABDMGikDACIOQgODUARAIAIgDqciBDYCICACIAQoAhA2AiQgAkEYaiACQSBqIgQQoR4gAigCGCIGIAYoAgAiBkEBajYCACAGQQBIDQEgAkEQaiAEEKEeIAIgAikDEDcCKCACQQhqIAJBKGoQoR4LIAJBMGokACAODAELAAshDiANQeGAgIB4NgIwIA0gDjcDOCABIA1BKGogDUEwahDNFwtBACELIA0Cf0EAIAgNABpBACABLwF0QYDAAHFFDQAaIAEtALABIgJBC0YEQCABEIgICyACQQtGCzoAKCABLQCwAUEJRw0BIA1BCGogAUEBIAEoAqgBEIcGIA0oAgwhCyANKAIIQQFxRQ0BIABBCTYCACAAIAs2AgQLIAUQ0hkgAxCSFCADEMkdDAELIA0gBzYCZCANIA1BEGo2AmggDUEwaiIEIAVBKPwKAAAgDUHgAGogA0EIaigCADYCACANIAs2AowBIA0gAykCADcDWCABKAJsIQIgDSANQRpqNgJsIA0gDUEdajYCiAEgDSANQRxqNgKEASANIA1BG2o2AoABIA0gDUEoajYCfCANIA1BH2o2AnggDSANQR5qNgJ0IA0gDUEUajYCcCACQcCAEHFBwIAQRwRAIAEgAkHAgBByNgJsIAAgBCABENkBIAEgASgCbCACQb//b3JxNgJsDAELIAAgDUEwaiABENkBCyANQZABaiQAC/AFAQV/IwBBIGsiBCQAAkACQAJAIAEgAk8EQCACRQRADAQLIAJBBGsiA0EAIAIgA08bIgYgAkEBayIDIAMgBksbIQUCQAJAA0AgAyAGTQ0BIAIgA00NAiAAIANqIANBAWshAywAAEG/f0wNAAsgA0EBaiEFCyACIAVJDQJBACEGIAIgBUYNBCAAIAVqIgcsAAAiA0EATgRAIANB/wFxIQMMBAsgA0FASQ0EIAIgBWshBQJAAkAgBSADQWBJBH9BAgUgA0FwTw0BQQMLIgNJDQYMAQsgA0F3Sw0FQQQhAyAFQQRJDQULIARBDGogByADEOgCIAQoAgxBAUYNBCAEIAQoAhAiAyAEKAIUajYCHCAEIAM2AhggBEEYahDZCSIDQYCAxABHDQNBvKHJABCpHQALIAMgAkHMockAEIwOAAsgAiABQeCayQAQph0ACyAFIAJB3KHJABClHQALIAMQ5B5B/wFxIgZBAkcNAEHYmckAQfgAIARBDGpB+I/JAEHwmskAEPAMAAtBASEDAkACQAJAIAEgAkYNAAJAIAAgAmoiBSwAACIAQQBOBEAgAEH/AXEhAwwBCyAAQUBJDQEgASACayEBAkACQCAAQWBJBH9BAgUgAEFwTw0BQQMLIQIgASACTw0BDAMLIABBd0sNAkEEIQIgAUEESQ0CCyAEQQxqIAUgAhDoAiAEKAIMQQFGDQEgBCgCFEUNAiAEKAIQIgEsAAAiAEEATgRAIABB/wFxIQMMAQsgAS0AAUE/cSEDIABBH3EhAiAAQV9NBEAgAkEGdCADciEDDAELIAEtAAJBP3EgA0EGdHIhAyAAQXBJBEAgAyACQQx0ciEDDAELIAJBEnRBgIDwAHEgAS0AA0E/cSADQQZ0cnIiA0GAgMQARg0CCyADEOQeQf8BcSIAQQJGDQIgAEEBcyEDCyAEQSBqJAAgAyAGcUEBcQ8LQbyhyQAQqR0AC0HYmckAQfgAIARBDGpB+I/JAEHQmskAEPAMAAvPBgIQfwF+IwBB0ABrIgMkAAJ/AkACfwJAAkACQAJAAkACQAJAIAIoAgBBAWtBAk8EQCADIAAoArANIAAoArQNIgUoAghBAWtBeHFqQQhqIgwgAigCCCIIIAIoAgwiByACKAIQIgQgAigCFCIJIAUoAhAiDREIAAJAAkAgAygCAEEBRw0AIAFBmANqIQ4gAEGQBWohDyACLQAYIRAgAC0ArA1BAXEhESAAKQMIIAApAwBCAoWEIRMgBCEKA0AgAygCBCELIAMgAygCCCIFNgIgIAMgBDYCHCAFIAdLIAQgBUEBaktyDQQgAyASQYB+cSAQciISNgIYIAMgBTYCFCADIAQ2AhAgAyAHNgIMIAMgCDYCCCADQQE2AgAgEQ0FAkAgE1BFBEAgASgCyARBAkYNCCADQSRqIA8gDiADIAYQXiADKAIkIgZBAkcNAQwOCyADQQE2AiggA0GoksoANgIkIANCADcCMCADIANBPGo2AiwgA0EkakGwksoAEOgXAAsgBkEBcQ0CIAkgCk0NASALQX9GDQcgAyAMIAggByALQQFqIgogCSANEQgAIAUhBiADKAIADQALC0EADAsLQQEMCgsgAC0ArA1BAUYNBCAAKQMIIAApAwBCAoWEUA0IIAEoAsgEQQJGDQUgAUHYAWohBAJAAkACQAJAIAAoAoAFIgUtAOICRQRAIAMgACAEIAIQKyADKAIAIgRBAkcNAQwLCyAFLQDjAiADIAAgBCACECsgAygCACIGQQJGDQogBkEBcUUNAUEBcUUNAiADQSRqIAIgAygCBCADKAIIIgUgBSAAIAQQ3BogAygCJCIEQQJHDQMgAygCKAwLCyAEQQFxDQELQQAhBAwBC0EBIQQLIARBAEcMCQsgA0ECNgIoIANBzJzKADYCJCADQgI3AjAgA0EvNgJIIANBgQE2AkAgAyAHNgJMIAMgA0E8ajYCLCADIANBzABqNgJEIAMgA0EcajYCPCADQSRqQdycygAQ6BcAC0G8l8oAQShBpJjKABCcFAALQZyXygAQqR0AC0HQkcoAEKkdAAtBvJfKAEEoQfSXygAQnBQAC0HslsoAEKkdAAsgAygCBAsQpw0aCyAAIAEgAhDZAwsgA0HQAGokAAvwBQEFfyMAQSBrIgQkAAJAAkACQCABIAJPBEAgAkUEQAwECyACQQRrIgNBACACIANPGyIGIAJBAWsiAyADIAZLGyEFAkACQANAIAMgBk0NASACIANNDQIgACADaiADQQFrIQMsAABBv39MDQALIANBAWohBQsgAiAFSQ0CQQAhBiACIAVGDQQgACAFaiIHLAAAIgNBAE4EQCADQf8BcSEDDAQLIANBQEkNBCACIAVrIQUCQAJAIAUgA0FgSQR/QQIFIANBcE8NAUEDCyIDSQ0GDAELIANBd0sNBUEEIQMgBUEESQ0FCyAEQQxqIAcgAxDoAiAEKAIMQQFGDQQgBCAEKAIQIgMgBCgCFGo2AhwgBCADNgIYIARBGGoQ2QkiA0GAgMQARw0DQezeygAQqR0ACyADIAJB/N7KABCMDgALIAIgAUHk28oAEKYdAAsgBSACQYzfygAQpR0ACyADEOQeQf8BcSIGQQJHDQBB3NrKAEH4ACAEQQxqQaTQygBB9NvKABDwDAALQQEhAwJAAkACQCABIAJGDQACQCAAIAJqIgUsAAAiAEEATgRAIABB/wFxIQMMAQsgAEFASQ0BIAEgAmshAQJAAkAgAEFgSQR/QQIFIABBcE8NAUEDCyECIAEgAk8NAQwDCyAAQXdLDQJBBCECIAFBBEkNAgsgBEEMaiAFIAIQ6AIgBCgCDEEBRg0BIAQoAhRFDQIgBCgCECIBLAAAIgBBAE4EQCAAQf8BcSEDDAELIAEtAAFBP3EhAyAAQR9xIQIgAEFfTQRAIAJBBnQgA3IhAwwBCyABLQACQT9xIANBBnRyIQMgAEFwSQRAIAMgAkEMdHIhAwwBCyACQRJ0QYCA8ABxIAEtAANBP3EgA0EGdHJyIgNBgIDEAEYNAgsgAxDkHkH/AXEiAEECRg0CIABBAXMhAwsgBEEgaiQAIAMgBnFBAXEPC0Hs3soAEKkdAAtB3NrKAEH4ACAEQQxqQaTQygBB1NvKABDwDAAL0QoCF38CfiMAQbABayIFJAAgBUEIaiEHIwBBMGsiAiQAIAFBwAFqIgQoAgQhCyACQRxqIAQoAggiCUEIQQgQggogAigCICEEAkACQCACKAIcQQFHBEAgAigCJCEIAkAgBEUNACAJQQN0IQogCCEDIAQhBgNAIApFDQEgCykDACIZQgODUARAIAIgGaciDDYCKCACIAwoAhA2AiwgAkEQaiACQShqIgwQoR4gAigCECINIA0oAgAiDUEBajYCACANQQBIDQQgAkEIaiAMEKEeIAIgAikDCDcCHCACIAJBHGoQoR4LIAtBCGohCyADIBk3AwAgA0EIaiEDIApBCGshCiAGQQFrIgYNAAsLIAcgCTYCCCAHIAg2AgQgByAENgIAIAJBMGokAAwCCyAEIAIoAiRB3LbHABC0GgALAAsgASgCuAEhAiABNQK8ASEZIAVBFGohCCMAQRBrIgQkAAJAIAFBzAFqIgcoAgQiC0UEQCAIQQhqQbCYxwApAgA3AgAgCEGomMcAKQIANwIADAELIwBBIGsiAyQAIANBDGogA0EfakEMQQggC0EBahCVCCADKAIUIQYgAygCECEKIAMoAgwiCQRAIAQgAygCGDYCDAsgBCAGNgIIIAQgCjYCBCAEIAk2AgAgA0EgaiQAIAQoAgAhAyAHKAIAIQogBCgCBCIGQQlqIgkEQCADIAogCfwKAAALIAZBDGxBDGoiCQRAIAMgBkF/c0EMbGogCiALQX9zQQxsaiAJ/AoAAAsgCCAGNgIEIAggAzYCACAIIAcpAgg3AggLIARBEGokACAFIAKtIBlCIIZCACACG4Q3AwAgASgCNCELIAEoAjAhCgJAAkAgASgCOEEBRwRAQQAhBAwBCyABKAI8Ig8EQCAPIA8oAgBBAWoiBDYCACAERQ0CCyABKAJAIg5FBEBBASEEQQAhDgwBC0EBIQQgDiAOKAIAQQFqIgM2AgAgA0UNAQsgASgCcCEJIAEoAlwhDCABKAJYIQ0gASgCUCEQIAEoAkwhESABKAJIIRIgASgCRCETIAEoAlQhFCABKAJsIRUgASgCACEDIAE1AgQhGSABKQMgIRogAS8BKCEGIAEtACohAiAFQYgBaiABQQhqEIcBIAEoAmAiCCAIKAIAQQFqIgc2AgAgBSACOgCqASAFIAY7AagBIAUgGjcDoAEgBSABLQArOgCrASAFIAOtIBlCIIZCACADG4Q3A4ABIAdFDQAgAS0AdiEWIAEvAXQhFyABLQB3IRggASgCZCIDIAMoAgBBAWoiBjYCACAGRQ0AIAEoAmgiBiAGKAIAQQFqIgI2AgAgAkUNACAFQShqIAVBgAFqIgJBMPwKAABBCiEHIAEpA6ABIRkgASgCeEEKRwRAIAVBoAFqIAFBmAFqKAIANgIAIAUgASkDkAE3A5gBIAIgAUH4AGoQhwEgBSgCgAEhByAFQdwAaiACQQRyQST8CgAACyAAIAEpA6gBNwOoASAAQbABaiABQbABaigCADYCACABLQDcASEBIABBuAFqIAVBJPwKAAAgACAFQShqQTD8CgAAIAAgBzYCeCAAIBg6AHcgACAWOgB2IAAgFzsBdCAAIAk2AnAgACAVNgJsIAAgBjYCaCAAIAM2AmQgACAINgJgIAAgDDYCXCAAIA02AlggACAUNgJUIAAgEDYCUCAAIBE2AkwgACASNgJIIAAgEzYCRCAAIA42AkAgACAPNgI8IAAgBDYCOCAAIAs2AjQgACAKNgIwIABB/ABqIAVB3ABqQST8CgAAIAAgAToA3AEgACAZNwOgASAFQbABaiQADwsAC9sGAQV/IwBB0AFrIgIkAAJAAkACQAJAAkACQAJAAkACQCABLQCwAUH+AEcEQCACIAEpA6gBNwMAIAJBDGogARDZGSACQQE2AnQgAkGo98QANgJwIAJCATcCfCACQZYDNgLMASACQf4AOgAbIAIgAkHIAWo2AnggAiACQRxqNgLIASACIAJBG2o2AhwgAkEgaiIDIAJB8ABqEPcEIAJBNGogAkEUaigCADYCACACIAIpAgw3AiwgAiADEJEQIQMgAS0AsAFBogFGDQEMCAsgARCICCABLQCwAUHAAEcEQCACQfAAaiIDQQRyIAEQ2RkgAkEQNgKEASACQeD4xAA2AoABIAJBsICAgHg2AnAgAiABKQOoATcDICACQSBqIAMQkRAhAyABLQCwAUGiAUYNAwwHCyACQfAAaiIFIAEQ3hFBqcboAC0AABpBGEEIEO8bIgRFDQEgBCACKQNwNwMAIARBEGogAkGAAWopAwA3AwAgBEEIaiACQfgAaikDADcDACABLQCxAQ0DIAEtALABIgNB9wBHIANB8ABHcQ0DIAEQiAggBSABIAJByAFqIgMQyxQgAigCdCEFIAIoAnAiA0EmRgRAIABBADYCACAAIAU2AgQMBgsgAkEgaiACQfgAakHQAPwKAAACQCADQQJGBEBBqcboAC0AABpBFEEEEO8bIgMNAUEEQRQQoh8AC0H398QAQShBsPrEABCcFAALIAMgBTYCACADIAIpAyA3AgQgA0EMaiACQShqKQMANwIADAQLIAEQgw0hBCABEIgIIAEgBBDEEAwGC0EIQRgQoh8ACyABEIMNIQQgARCICCABIAQQxBAMAwtBACEDCyACIAM2AhwgARDnFEUEQCACIAEpA6gBNwPIASACQSBqIAEQ2RkgAkHwAGoiBRC6DiACQYQBaiACQShqKAIANgIAIAIgAikCIDcCfCACQcgBaiAFEJEQIQUgAS0AsAFBogFGBEAgARCDDSEGIAEQiAggASAGEMQQCyAAQQA2AgAgACAFNgIEIANFDQEgAkEcahDXGQwBCyAAIAM2AgQgACAENgIADAMLIAQQzxkgBEEYQQgQ+BwMAgsgAEEANgIAIAAgAzYCBAwBCyAAQQA2AgAgACADNgIECyACQdABaiQAC88GAgZ/AX4jAEHQAGsiBiQAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAKkDSgCxAIoAhBBAXQgBU8EQCABLQCsDUEBRg0BIAEpAwggASkDAEIChYRQDQMgAigCyARBAkYNAiAGQRhqIAEgAkHYAWogAxCcAiAGKAIYIgdBAkYEQCAGKAIcEKcNGiAGQTxqIAEgAiADEOQCDAkLIAYgBikCIDcCRCAGIAYoAhw2AkAgBiAHNgI8DAgLIAEoAuQKQQNHBEAgAygCAEEBa0ECSQ0HIAEoAogLIgcoArACIAcoArQCRg0HCyABLQCsDQRAQbyXygBBKEHkl8oAEJwUAAsCQCABKQMIIAEpAwBCAoWEUEUEQCACKALIBEECRg0FIAZBGGogASACQdgBaiADEJwCIAYoAhgiB0ECRw0BIAYoAhwQpw0aCyAGIAEgAiADIAQgBRCfBCAGKAIEIQIgBigCACEBDAsLIAdBAXFFDQggBigCJCEJIAYoAhwhByADLQAYIQogAygCDCEIIAMoAgghCyAGIAYoAiAiAzYCOCAGIAc2AjQgByADQQFqSyADIAhLcg0EIAYgCjoAMCAGIAM2AiwgBiAHNgIoIAYgCDYCJCAGIAs2AiAgBiAJNgIcIAZBAjYCGCAGQQhqIAEgAiAGQRhqIAQgBRCfBEEBIQEgBigCCEEBcUUNBSAGKAIMIQIMCgtBvJfKAEEoQeSXygAQnBQAC0HclsoAEKkdAAsgBkE8aiABIAIgAxDkAgwEC0HclsoAEKkdAAsgBkECNgIcIAZBzJzKADYCGCAGQgI3AiQgBkEvNgJIIAZBgQE2AkAgBiAINgJMIAYgBkE8ajYCICAGIAZBzABqNgJEIAYgBkE0ajYCPCAGQRhqQdycygAQ6BcAC0HIkMoAQRNB3JDKABDjDwALIAZBEGogASACIAMgBCAFEJ8EIAYoAhQhAiAGKAIQIQEMAwsgBigCPA0BC0EAIQEMAQtBASEBIAYoAkgiAkEBdCIDQQFyIQcgBikCQCEMIAMgBUkEQCAEIANBAnRqIAynQQFqNgIACyAFIAdNDQAgBCAHQQJ0aiAMQiCIp0EBajYCAAsgACABNgIAIAAgAjYCBCAGQdAAaiQAC8oFAgh/AX4CQCABKAIIIgIgASgCBCIETw0AIAEoAgAgAmotAABB9QBHDQBBASEHIAEgAkEBaiICNgIICwJAAkAgAiAESQRAIAEoAgAiBSACai0AAEEwayIDQf8BcSIGQQpJDQELDAELIAEgAkEBaiICNgIIAkAgBkUEQEEAIQMMAQsgAiAEIAIgBEsbIQYgA0H/AXEhAwNAIAIgBkYNASACIAVqLQAAQTBrQf8BcSIIQQlLDQEgASACQQFqIgI2AgggA61CCn4iCkIgiFAEQCAIIAqnIghqIgMgCE8NAQsLDAELAkAgAiAETw0AIAIgBWotAABB3wBHDQAgASACQQFqIgI2AggLIAIgAiADaiIGSwRADAELIAEgBjYCCAJAAkACQCAEIAZPBEAgAkUNASACIARPBEAgAiAERw0DDAILIAIgBWosAABBv39KDQEMAgsMAwsgBkUgBCAGTXJFBEAgBSAGaiwAAEG/f0wNAQsgAiAFaiEEIAcNASAAQgE3AgggACADNgIEIAAgBDYCAA8LIAUgBCACIAZB9O/mABDpGwALQQAhB0EAIANrIQEgBSAGaiIGQQFrIQhBACECAn8DQCABIAJGBEAgBCEBQQEMAgsgAiAIaiACQQFrIgUhAi0AAEHfAEcNAAsgAyAFaiEHAkACQEEAIANrIAVGDQACQCADIAdNBEAgBQ0BQQAhAiADQX9zIAVGDQMMAgsgBSAGaiwAAEG/f0oNAQsgBCADQQAgB0GE8OYAEOkbAAsCQCADIAdBAWoiAU0EQCADIQIgBUF/Rw0BDAILIAUgBmpBAWosAABBv39MDQAgASECDAELIAQgAyABIANBlPDmABDpGwALIAIgBGohASADIAJrIQMgBAshAiADRQRADAELIAAgAzYCDCAAIAE2AgggACAHNgIEIAAgAjYCAA8LIABBADYCACAAQQA6AAQL4gUBAX8jAEGAAWsiByQAIAdByABqIAJBCGooAgA2AgAgByAFOgA+IAcgAzYCOCAHIAY6AD8gByAENgJQIAcgAikCADcDQCAHIAdBP2oiAjYCXCAHIAdBOGo2AlggByAHQT5qNgJUIAcgAjYCTAJAIAVFBEAgB0EwaiABIAdBQGsQkQMgBygCNCECIAcoAjAhBQwBCyABKAJsIgJBgAFxRQRAIAEgAkGAAXI2AmwCQCAGRQRAIAdB+ABqIAdB2ABqKAIANgIAIAdB8ABqIAdB0ABqKQMANwMAIAdB6ABqIAdByABqKQMANwMAIAcgBykDQDcDYCAHQRBqIAEgB0HgAGoQ3QwgBygCFCECIAcoAhAhBQwBCyAHQfgAaiAHQdgAaigCADYCACAHQfAAaiAHQdAAaikDADcDACAHQegAaiAHQcgAaikDADcDACAHIAcpA0A3A2AgAkGAAnFFBEAgASACQYADcjYCbCAHIAdB4ABqIAEQpAEgBygCBCECIAcoAgAhBSABIAEoAmxB/31xNgJsDAELIAdBCGogB0HgAGogARCkASAHKAIMIQIgBygCCCEFCyABIAEoAmxB/35xNgJsDAELIAZFBEAgB0H4AGogB0HYAGooAgA2AgAgB0HwAGogB0HQAGopAwA3AwAgB0HoAGogB0HIAGopAwA3AwAgByAHKQNANwNgIAdBKGogASAHQeAAahDdDCAHKAIsIQIgBygCKCEFDAELIAdB+ABqIAdB2ABqKAIANgIAIAdB8ABqIAdB0ABqKQMANwMAIAdB6ABqIAdByABqKQMANwMAIAcgBykDQDcDYCACQYACcUUEQCABIAJBgAJyNgJsIAdBGGogB0HgAGogARCkASAHKAIcIQIgBygCGCEFIAEgASgCbEH/fXE2AmwMAQsgB0EgaiAHQeAAaiABEKQBIAcoAiQhAiAHKAIgIQULIAAgBTYCACAAIAI2AgQgB0GAAWokAAuvCgEBfyMAQYABayIHJAAgB0HIAGogAkEIaigCADYCACAHIAU6AD4gByADNgI4IAcgBjoAPyAHIAQ2AlAgByACKQIANwNAIAcgB0E/aiICNgJcIAcgB0E4ajYCWCAHIAdBPmo2AlQgByACNgJMAkAgBUUEQCAHQTBqIQUgB0FAayEDIwBB0ABrIgIkAAJAIAEoAmwiBEGAAXEiBgRAIAEgBCAGcyIENgJsAkAgAygCHC0AAEUEQCACQcgAaiADQRhqKAIANgIAIAJBQGsgA0EQaikCADcDACACQThqIANBCGopAgA3AwAgAiADKQIANwMwIAJBKGogASACQTBqEN8MIAIoAiwhAyACKAIoIQQMAQsgAkHIAGogA0EYaigCADYCACACQUBrIANBEGopAgA3AwAgAkE4aiADQQhqKQIANwMAIAIgAykCADcDMCAEQYACcUUEQCABIARBgAJyNgJsIAJBGGogAkEwaiABEKMBIAIoAhwhAyACKAIYIQQgASABKAJsQf99cTYCbAwBCyACQSBqIAJBMGogARCjASACKAIkIQMgAigCICEECyABIAEoAmwgBnI2AmwMAQsgAygCHC0AAEUEQCACQcgAaiADQRhqKAIANgIAIAJBQGsgA0EQaikCADcDACACQThqIANBCGopAgA3AwAgAiADKQIANwMwIAJBEGogASACQTBqEN8MIAIoAhQhAyACKAIQIQQMAQsgAkHIAGogA0EYaigCADYCACACQUBrIANBEGopAgA3AwAgAkE4aiADQQhqKQIANwMAIAIgAykCADcDMCAEQYACcUUEQCABIARBgAJyNgJsIAIgAkEwaiABEKMBIAIoAgQhAyACKAIAIQQgASABKAJs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QQFBCEHAABCCCiACKAIUIQkCQAJAAkAgAigCEEEBRwRAIAIoAhghAyACAn4jAEEwayIBJAACQEG4t+gAEMwaKQMAIgpCA4NQBEAgASAKpyIHNgIgIAEgBygCEDYCJCABQRhqIAFBIGoiBxChHiABKAIYIgggCCgCACIIQQFqNgIAIAhBAEgNASABQRBqIAcQoR4gASABKQMQNwIoIAFBCGogAUEoahChHgsgAUEwaiQAIAoMAQsACzcDWCACQgA3AwAgBSAGIAIQnRkgAkEcaiACQUBrKQMANwIAIAJBJGogAkHIAGopAwA3AgAgAkEsaiACQdAAaikDADcCACACIAIpAzg3AhRBqcboAC0AABpB2ABBCBDvGyIFRQ0DIAVBDjYCACAFQQRqIARBJPwKAAAgBEEBQQRBEBCCCiACKAIUIQYgAigCEEEBRg0BQanG6AAtAAAaIAIoAhghBEHYAEEIEO8bIgFFDQMgAUIANwMgIAEgDDcDGCABQgA3AxAgAUEANgIIIAFBDzYCACAEQQA2AgAgBCABNgIMQanG6AAtAAAaQdgAQQgQ7xsiAUUNAyABQgE3AyggASAENgIkIAEgBjYCICABIAU2AhQgAUKAgICAIDcCDCABQgA3AgQgAUELNgIAIANCADcDACADQQA6ADwgAyABNgI4IANBADYCMCADQQA6ACggAyALNwIgIANBADYCGCADQgA3AhAgA0EANgIIQanG6AAtAAAaQSBBBBDvGyIBRQ0CIAFBATYCHCABIAM2AhggASAJNgIUIAFBADoAECABQoCAgIAgNwIIIAFCADcCACAAIAE2AgwgAEECNgIIIABBETYCACACQeAAaiQADwsgCSACKAIYQdSIwAAQtBoACyAGIAIoAhhB1IjAABC0GgALQQRBIBCiHwALQQhB2AAQoh8AC+YcBAx/AX4BfAFvIwBB4ABrIgMkACADIAE2AiwCQAJAAkACQCADQSxqKAIAEK4dRQRAQQFBAiADKAIsEIQgIgFBAUYbQQAgARsiAUECRwRAIAAgAToABCAAQYCAgIB4NgIADAILAkACQCADKAIsJQEQA0EBRwRAIANBGGogAygCLBCmHyADQcgAaiADKAIYIAMrAyAQ4hggAygCSEUNASADKwNQIQ8gAEGIgICAeEGKgICAeCADQSxqKAIAJQEQH0EARyIBGzYCACAAIA/8Br8gDyABGzkDCAwECyADIAMoAiwiATYCPCADQcgAaiADQTxqEPoTIAMoAkhBAUcNASABIAMpA1AiDhAFIRAQgAoiASAQJgEgARCtHSABQYQBTwRAIAEQrxULIAMoAjwhAUUNASABQYQBTwRAIAEQrxULIAAgDjcDCCAAQYiAgIB4NgIADAYLIANBEGogAygCLBCnHwJAIAMoAhAiAUUNACADQQhqIAEgAygCFBD7EyADQTBqIAMoAgggAygCDBDhGiADKAIwQYCAgIB4Rg0AIAAgAykCMDcCBCAAQYyAgIB4NgIAIABBDGogA0E4aigCADYCAAwDCyADQSxqIgEQ+hwNAyADQTxqIAEQnQsgAygCPEGAgICAeEcEQCAAIAMpAjw3AgQgAEGOgICAeDYCACAAQQxqIANBxABqKAIANgIADAMLIAMoAiwQhSBBAUYEQBDqGyIBIAMoAiwQrB1BAUcEQCABQYQBSQ0GIAEQrxUMBgsgAUGEAU8EQCABEK8VCyADQSxqKAIAJQEQHg0FCyADQSxqIANB3wBqQYyQwAAQzAMhASAAQZWAgIB4NgIAIAAgATYCBAwCCyADIAE2AjwgA0HIAGogA0E8ahD6EwJAIAMoAkhBAUcNACABIAMpA1AiDhAJIRAQgAoiASAQJgEgARCtHSABQYQBTwRAIAEQrxULIAMoAjwhAUUNACABQYQBTwRAIAEQrxULIAAgDjcDCCAAQYSAgIB4NgIADAULQayQwABBzwAQ+gshBSAAQZWAgIB4NgIAIAAgBTYCBCABQYQBSQ0EIAEQrxUMBAsgAEGSgICAeDYCAAsgAygCLCIAQYQBSQ0CIAAQrxUMAgsgAygCLCEBIwBBIGsiBCQAIAQgATYCDAJAIARBDGoiBRD6HARAIARBEGoiASAFEKUaIARBADYCHCMAQSBrIgIkACACQRBqIgpBASABKAIABH8gASgCCCILIAEoAgRrIgVBACAFIAtNGwVBAAsQrBpBCEEQEIIKIAIoAhQhBQJAIAIoAhBBAUcEQCACQQA2AgwgAiACKAIYNgIIIAIgBTYCBCAKQQRyIgpBCGohCwJAA0ACQCACQRBqIQgjAEEgayIHJAACQAJAIAEoAgBFDQAgB0EIaiABELATIAcoAghBAXFFDQAgBygCDCEFIAEgASgCDEEBajYCDCAHQRBqIAUQzAIgBygCEEGVgICAeEYEQCAIIAcoAhQ2AgQgCEGWgICAeDYCAAwCCyAIIAcpAxA3AwAgCEEIaiAHQRhqKQMANwMADAELIAhBlYCAgHg2AgALIAdBIGokAAJAAkAgAigCECIFQev///8Hag4CAgABCyAAIAIoAhQ2AgQgAEGVgICAeDYCACACQQRqIgAQlhcgABDIHQwDCyACKAIMIgcgAigCBEYEQCACQQRqQfSOwAAQxRILIAIoAgggB0EEdGoiCCAKKQIANwIEIAggBTYCACAIQQxqIAsoAgA2AgAgAiAHQQFqNgIMDAELCyAAIAIpAgQ3AgQgAEGUgICAeDYCACAAQQxqIAJBDGooAgA2AgALIAJBIGokAAwBCyAFIAIoAhhB5I7AABC0GgALDAELIARBEGogBEEMahDRByAEKAIQIQUCQAJAAkAgBC0AFCIBQQJrDgIBAAILIABBlYCAgHg2AgAgACAFNgIEDAILIARBDGogBEEQakGMkMAAEMwDIQEgAEGVgICAeDYCACAAIAE2AgQMAQsjAEEwayICJAAgAiABQQFxOgAQIAIgBTYCDCACQSBqIgFBACACEKwaQQhBEBCCCiACKAIkIQUCQCACKAIgQQFHBEAgAkEANgIcIAIgAigCKDYCGCACIAU2AhQgAUEEciILQQhqIQUCQAJAA0ACQCACQSBqIQcjAEEgayIIJAAgCEEIaiACQQxqEMIUAkACQCAIKAIIIgFBAkcEQCAIKAIMIQogAUEBcUUNASAHQZaAgIB4NgIAIAcgCjYCBAwCCyAHQZWAgIB4NgIADAELIAhBEGogChDMAiAIKAIUIQogCCgCECIBQZWAgIB4RwRAIAcgCCkDGDcDCCAHIAo2AgQgByABNgIADAELIAdBloCAgHg2AgAgByAKNgIECyAIQSBqJAACQAJAIAIoAiAiAUHr////B2oOAgIAAQsgACACKAIkNgIEIABBlYCAgHg2AgAgAkEUaiIAEJYXIAAQyB0gAigCDCIAQYMBSw0DDAQLIAIoAhwiCCACKAIURgRAIAJBFGpB9I7AABDFEgsgAigCGCAIQQR0aiIKIAspAgA3AgQgCiABNgIAIApBDGogBSgCADYCACACIAhBAWo2AhwMAQsLIAAgAikCFDcCBCAAQZSAgIB4NgIAIABBDGogAkEcaigCADYCACACKAIMIgBBhAFJDQELIAAQrxULIAJBMGokAAwBCyAFIAIoAihB5I7AABC0GgALCyAEKAIMIgBBgwFLBEAgABCvFQsgBEEgaiQADAELIAMoAiwhCyMAQTBrIgkkACAJIAs2AhAgCUEYaiAJQRBqENEHIAkoAhghBQJAAkACQAJAAkACQCAJLQAcIgFBAmsOAgIAAQsgAEGVgICAeDYCACAAIAU2AgQgC0GDAUsNAwwECyAJIAE6ACQgCSAFNgIgIAlBADYCGCAJQRhqIQwjAEHgAGsiBiQAIAZBEGpBACAGEKsaQQhBIBCCCiAGKAIUIQECQCAGKAIQQQFHBEAgBkEANgIMIAYgBigCGDYCCCAGIAE2AgQgBkEgaiEEIAZBQGtBBHIhCCAGQTBqQQRyIQoCQANAAkAgBkEwaiECIwBBIGsiDSQAIA1BCGogDEEIahDCFAJAAkAgDSgCCCIBQQJHBEAgDSgCDCEFIAFBAXEEQCACQZaAgIB4NgIAIAIgBTYCBAwDCyANIAUQhBAgDSgCBCELIA0oAgAhBQJAIAwoAgBFDQAgDCgCBCIBQYQBSQ0AIAEQrxULIAwgCzYCBCAMQQE2AgAgDUEQaiAFEMwCIA0oAhQhBSANKAIQIgFBlYCAgHhHDQEgAkGWgICAeDYCACACIAU2AgQMAgsgAkGVgICAeDYCAAwBCyACIA0pAxg3AwggAiAFNgIEIAIgATYCAAsgDUEgaiQAAkACQAJAAkAgBigCMCIFQev///8Hag4CBAABCyAGKAI0IQEMAQsgCCAKKQIANwIAIAhBCGogCkEIaigCADYCACAGIAU2AkAgDCgCACAMQQA2AgBFBEBBuJLAAEExEJUfAAsgBkHQAGogDCgCBBDMAiAGKAJQQZWAgIB4Rw0BIAYoAlQhASAGQUBrEIsMCyAAQZWAgIB4NgIAIAAgATYCBCAGQQRqIgAQhxUgABDiHQwDCyAEIAYpA1A3AwAgBEEIaiAGQdgAaikDADcDACAGIAYpA0giDjcDGCAGIAYoAkQiBzYCFCAGIAU2AhAgBigCDCIBIAYoAgRGBEAgBkEEakHUjsAAEM8SCyAGKAIIIAFBBXRqIgUgBikDEDcDACAFQQhqIAZBGGopAwA3AwAgBUEQaiAEKQMANwMAIAVBGGogBkEoaikDADcDACAGIAFBAWo2AgwMAQsLIAYgDjcDGCAGIAc2AhQgBkGVgICAeDYCECAGQRBqEOsZIABBCGogBkEMaigCADYCACAAIAYpAgQ3AgALIAwoAggiAEGEAU8EQCAAEK8VCwJAIAwoAgBFDQAgDCgCBCIAQYQBSQ0AIAAQrxULIAZB4ABqJAAMAQsgASAGKAIYQcSOwAAQtBoACwwBCyAJQQhqIAlBEGoQhBYgCSgCCEEBcQRAIAkgCSgCDDYCFCAJQSBqIAlBFGoQpRogCUEANgIsIAlBADYCGCMAQdAAayIEJAAgBEEQakEBIAlBGGoiBygCCAR/IAcoAhAiBSAHKAIMayIBQQAgASAFTRsFQQALEKsaQQhBIBCCCiAEKAIUIQECQCAEKAIQQQFHBEAgBEEANgIMIAQgBCgCGDYCCCAEIAE2AgQgBEEwaiAHEOkGAkACQAJAIAQoAjBBloCAgHhHBEADQCAEQShqIARByABqIgspAwA3AwAgBEEgaiAEQUBrIgUpAwA3AwAgBEEYaiAEQThqIgEpAwA3AwAgBCAEKQMwIg43AxAgDqdBlYCAgHhGDQIgBCgCDCIKIAQoAgRGBEAgBEEEakHUjsAAEM8SCyAEKAIIIApBBXRqIgggBCkDMDcDACAIQQhqIAEpAwA3AwAgCEEQaiAFKQMANwMAIAhBGGogCykDADcDACAEIApBAWo2AgwgBEEwaiAHEOkGIAQoAjBBloCAgHhHDQALCyAAIAQoAjQ2AgQgAEGVgICAeDYCACAEQQRqIgAQhxUgABDiHSAHKAIARQ0CIAcoAgQiAEGDAUsNAQwCCyAEQRBqEOsZIAAgBCkCBDcCACAAQQhqIARBDGooAgA2AgAgBygCAEUNASAHKAIEIgBBhAFJDQELIAAQrxULIARB0ABqJAAMAQsgASAEKAIYQcSOwAAQtBoACyAJKAIUIgBBhAFJDQEgABCvFQwBCyAJQRBqIAlBGGpBjJDAABDMAyEBIABBlYCAgHg2AgAgACABNgIECyAJKAIQIgtBhAFJDQELIAsQrxULIAlBMGokAAsgA0HgAGokAAuTBQEGfyABIAJqIQYCQAJAIAJFBEAgASECDAELIAEhAgNAIAQiCAJ/IAIiBCwAACIFQQBOBEAgBUH/AXEhAyACQQFqDAELIAQtAAFBP3EhAyAFQR9xIQIgBUFfTQRAIAJBBnQgA3IhAyAEQQJqDAELIAQtAAJBP3EgA0EGdHIhAyAFQXBJBEAgAyACQQx0ciEDIARBA2oMAQsgAkESdEGAgPAAcSAELQADQT9xIANBBnRyciEDIARBBGoLIgIgBGtqIQQCQCADQSBGIANBCWtBBUlyDQAgA0GAAUkNAgJAIANBCHYiBUEfTQRAIAVFDQEgBUEWRyADQYAtR3INBAwCCyAFQSBHBEAgBUEwRyADQYDgAEdyDQQMAgsgA0H/AXFB+4/nAGotAABBAnFFDQMMAQsgA0H/AXFB+4/nAGotAABBAXFFDQILIAIgBkcNAAtBACEIQQAhBAwBCyACIAZGDQADQCAGIgVBAWsiBiwAACIDQQBIBEAgA0E/cQJ/IAVBAmsiBi0AACIHwCIDQUBOBEAgB0EfcQwBCyADQT9xAn8gBUEDayIGLQAAIgfAIgNBQE4EQCAHQQ9xDAELIANBP3EgBUEEayIGLQAAQQdxQQZ0cgtBBnRyC0EGdHIhAwsCQCADQSBGIANBCWtBBUlyDQACQCADQYABSQ0AAkACQCADQQh2IgdBH00EQCAHRQ0BIAdBFkcNAyADQYAtRg0EDAMLIAdBIEYNASAHQTBHDQIgA0GA4ABGDQMMAgsgA0H/AXFB+4/nAGotAABBAXFFDQEMAgsgA0H/AXFB+4/nAGotAABBAnENAQsgBCACayAFaiEEDAILIAIgBkcNAAsLIAAgBCAIazYCBCAAIAEgCGo2AgALtwYCBn8BfiMAQeABayIDJAACQAJAAn8CQAJAAn8gAS0AsAEiBkGAAUcEQCAGQcAARwRAIANBmAFqIgJBBHIgARDZGSADQRo2AqwBIANB2LjEADYCqAEgA0GwgICAeDYCmAEgAyABKQOoATcD0AEgA0HQAWogAhCRECEEQQEhBSABLQCwAUGiAUcNBiABEIMNIQIgARCICCABIAIQxBAMBgsgA0GYAWogARDeESADQdgAaiADQagBaikDADcCACADQdAAaiADQaABaikDADcCACADIAMpA5gBNwJIQQEMAQsgA0GYAWoiBSABEN8IIAMoApgBIQQgAykDoAEiCVANASADIAk3AzggAyADKAKcATYCNCADIAQ2AjAgBSADQTBqEO4OIANB2ABqIANBqAFqKQMANwIAIANB0ABqIANBoAFqKQMANwIAIAMgAykDmAE3AkggAykDsAEhCUEACyEEIANBFGogA0HMAGopAgA3AgAgA0EcaiADQdQAaikCADcCACADQSRqIANB3ABqKAIANgIAIAMgBDYCCCADIAMpAkQ3AgwgAyAJNwMoAkAgAS0AsAFBAkYEQCADQZgBaiABEJ8FIAMoApgBIQQgAygCoAFBgICAgHhGDQEgA0HoAGogA0GkAWopAgA3AwAgAyADKQKcATcDYCAEIQdBAAwECyABEOcUDQIgAyABKQOoATcDyAEgA0HQAWogARDZGSADQZgBaiICELcOIANBrAFqIANB2AFqKAIANgIAIAMgAykC0AE3AqQBIANByAFqIAIQkRAhBCABLQCwAUGiAUcNACABEIMNIQIgARCICCABIAIQxBALIANBCGoQzRkLQQEhBQwCC0ECCyEIIAEpA6ABIQkgA0GdAWogA0EIakEo/AoAAEEAIQVBqcboAC0AABpB+ABBCBDvGyIERQ0BIARBADoACiAEQQA6AAggBCAGQYABRjoACSAEIAKtIAlCgICAgHCDhDcDACAEQQtqIANBmAFqQS38CgAAIAQgBzYCPCAEIAg2AjggBEFAayADQeAAakE4/AoAAAsgACAENgIEIAAgBTYCACADQeABaiQADwtBCEH4ABCiHwALqQYBAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOEw4OAQIDBA8FDw8GBwgPCQoLDA0ACyAAQQhqEIUNDA0LIAAoAgRFBEAgAEEIaiIAKAIQIgIEQCAAKAIMIQEDQCABEMEPIAFBMGohASACQQFrIgINAAsLIABBCGpBCEEwEPIMIABBFGoQ1xcgACgCGCIAKAIIIgEQzwIgAUH4AEEIEPgcIABBDEEEEPgcDwsgACgCGCICBEAgACgCFCEBA0AgARDBDyABQTBqIQEgAkEBayICDQALCyAAQRBqQQhBMBDyDCAAQRxqENcXIAAoAiAiACgCCCIBEM8CIAFB+ABBCBD4HCAAQQxBBBD4HA8LIABBEGoQoRYgAEE4ahDYFw8LIABBGGohAQJAIAAoAhBFBEAgARChFgwBCyABEIUNCyAAQfAAahDYFw8LIABBDGogACgCFCIBBEAgACgCECEAA0AgABD4CCAAQcgAaiEAIAFBAWsiAQ0ACwtBCEHIABDyDA8LIABBDGogACgCFCIBBEAgACgCECEAA0AgABCBGCAAQUBrIQAgAUEBayIBDQALC0EIQcAAEPIMDwsgAEEQaiIAEM8UIABBBEEEEPIMDwsgACgCDCIBEM8CIAFB+ABBCBD4HCAAKAIQIgEQzwIgAUH4AEEIEPgcIAAoAhQiARDPAiABQfgAQQgQ+BwgACgCGCIAEM8CDAgLIABBEGoQtRQPCyAAKAIQIgAQzwIMBgsgACgCECIBEM8CIAFB+ABBCBD4HCAAKAIUIgAQzwIMBQsgAEEYahC1FCAAQdAAahCQGiAAQdgAahCQGg8LAkACQAJAAkAgACgCEA4EAQIFAwALIABBHGoiARDPFCABQQRBBBDyDCAAQShqIgAQkxMgAEEIQSAQ8gwPCyAAKQMoUA0DIABBKGoQ8QwPCyAAQRhqEM8ZDwsgACgCICIBEOEdIAFBEEEEEPgcIAApAyhQDQEgAEEoahDxDA8LIAAoAhgEQCAAQTBqEPEMCyAAQUBrEIQYCw8LIAAoAgwiABDPAgsgAEH4AEEIEPgcC6EGAQZ/IwBB0ABrIgEkAAJAIAAoAgAiBEEISQ0AAkACQAJAAkACQCAEQQlrDgMBAgMACyAAKAIEIgIoAiQoAgBBBk0NBAwDCyAAKAIEIgIoAiwoAgBBBk0NAwwCCyAAKAIEIgIoAggNAQwCCyAAKAIEIgIoAghFDQELQanG6AAtAAAaQQhBBBDvGyIDBEAgAUHIAGoiBUIANwMAIAFBQGsiBkIANwMAIAFCADcDOCABQRhqIAFBOGoQthAgACABKAIcNgIEIABBADYCACADIAI2AgQgAyAENgIAIAEgAzYCKCABQQE2AiRBASEAA0AgASAAQQFrIgA2AiwgASgCKCAAQQN0aiIAKAIAIQIgASAAKAIEIgA2AjQgASACNgIwAkAgAkEISQ0AAkACQAJAAkAgAkEJaw4DAgADAQsgACgCCCECIABBADYCCCABQQA2AkggASAANgJAIAEgAjYCRCABIAAoAgQiADYCOCABIAAgAkEDdGo2AjwgAUEkaiABQThqEOcIDAMLIAAoAiQhACAFQgA3AwAgBkIANwMAIAFCADcDOCABQQhqIAFBOGoQthAgASgCDCECIAAoAgAhAyAAQQA2AgAgACgCBCEEIAAgAjYCBCABKAIsIgAgASgCJEYEQCABQSRqQdi50QAQxBILIAEoAiggAEEDdGoiAiAENgIEIAIgAzYCACABIABBAWo2AiwMAgsgACgCLCEAIAVCADcDACAGQgA3AwAgAUIANwM4IAFBEGogAUE4ahC2ECABKAIUIQIgACgCACEDIABBADYCACAAKAIEIQQgACACNgIEIAEoAiwiACABKAIkRgRAIAFBJGpB6LnRABDEEgsgASgCKCAAQQN0aiICIAQ2AgQgAiADNgIAIAEgAEEBajYCLAwBCyAAKAIIIQIgAEEANgIIIAFBADYCSCABIAA2AkAgASACNgJEIAEgACgCBCIANgI4IAEgACACQQN0ajYCPCABQSRqIAFBOGoQ5wgLIAFBMGoQjQUgASgCLCIADQALIAFBJGpBBEEIEPIMDAELQQRBCBCiHwALIAFB0ABqJAALjzQCHH8FfiMAQeABayILJAAgASgCAEHkAGshFCABKAIYIRkgASgCFCEVIAEoAhAhFiABKAIMIRsgASgCCCEcIAEoAgQhHQJAAkACQANAIBRB5ABqIhEgHUYNASABIBRByAFqNgIAIBRB8ABqIRcgESEUIwBBgAJrIgQkACAEIBU2AgQgBCAWNgIAQQAhBkEAIQ1BACETIwBB8ABrIgkkACAJIBU2AiQgCSAWNgIgAkACQAJAIARBOGoiEAJ+AkACQAJAAkAgFUGAAk0EQCAJQShqIRJBACEOQgAhICMAQdAAayIFJAAgBUEHNgIUIAVB1LTAADYCECAFQQE2AgwgBUHTtMAANgIIIAVBATYCBCAFQdK0wAA2AgAgCUEgaiIIKAIAIQogCCgCBCEMIAVBKGohAyMAQfAAayICJAAgCCgCBCEHIAgoAgAhDyACQQhqIhggCCAFKAIAIAUoAgQQ1gcCQCACKAIIQQFHBEAgAyAYQSj8CgAADAELIAggBzYCBCAIIA82AgAgAkEwaiIHIAggBSgCCCAFKAIMENYHIAIoAjBBAUcEQCADIAdBKPwKAAAMAQsgAikDUCEeIAJB6ABqIAJBQGspAwA3AgAgA0EBNgIAIAMgHjcDICADIAgpAgA3AxggAiACKQM4NwJgIAMgAikCXDcCBCADQQxqIAJB5ABqKQIANwIAIANBFGogAkHsAGooAgA2AgALIAJB8ABqJAAgEgJ+AkACfwJAAkACfwJAAkAgBSgCKCIHQQFrDgMBAwADCyAFKAIwIQ4gBSgCLAwBCyAIIAw2AgQgCCAKNgIAQQALIQ8gBUEANgIkIAVBADYCHCAFQShqIAgQ9AQgBSgCMCEDIAUoAiwhAiAFKAIoIgdBA0cEQCAFKQNAIR4gBSkDOCEhIAUoAjQhCAwECyAFQShqIAgQkgMgBSgCKCIHQQNHBEAgBSkDMCIfQiCIpyEIIAUpA0AhHiAFKQM4ISEgH6chAyAFKAIsDAMLIAUoAjQhGCAFKAIwIRogBUEoaiIKIAhBz7TAAEEBENYHIAUoAigiB0EDRw0BIAogCBCSAyAFKAIoIgdBA0cEQCAFKQMwIh9CIIinIQggBSkDQCEeIAUpAzghISAfpyEDIAUoAiwMAwsgBSkDMCEeIAVBKGoiCiAIQc+0wABBARDWByAFKAIoIgdBA0cNASAKIAgQkgMgBSgCKCIHQQNHBEAgBSkDMCIfQiCIpyEIIAUpA0AhHiAFKQM4ISEgH6chAyAFKAIsDAMLIAUpAzAhICAFQShqIAgQygUgBSkDOCEhIAUoAjQhCCAFKAIwIQwgBSgCLCEKIAUoAigiB0EDRwRAIAUpA0AhHiAKIQIgDCEDDAQLIApBgICAgHhGBEAgGq0gGK1CIIaEISEgAiEHIAMhAiAPIQMgDiEIDAQLIAU1AkAhHyASICE3AyAgEiAgNwMYIBIgHj4CECASIBg2AgwgEiAaNgIIIBIgHkIgiD4CFCASIAytIAitQiCGhDcDMCASIB8gCq1CIIaENwMoQgAMBAsgBSkDQCEeIAUpAzghISAFKAI0IQggBSgCMCEDIAUoAiwhAgwCCyAFKQNAIR4gBSkDOCEhIAUoAjQhCCAFKAIwIQMgBSgCLAshCiAeQiCIISIgBUEcaiECQgAhHwJAAn8CQAJAIAdBAWsOAgABAwsgBUEYaiECQQwMAQsgBUEYaiECQQwLIQogHiEfICIhIAsgAiAKNgIAIB9C/////w+DICBCIIaEIR4gBSgCHCECCyASQQhqIQogBwR/IBJB1LTAADYCKCASIB4+AiAgEiAhNwMYIBIgCDYCFCASIAM2AhAgEiAeQiCIPgIkQQchAkEkBUEECyAKIAc2AgAgCmogAjYCAEIBCzcDACAFQdAAaiQAIAkoAihFDQEgCSgCMA0CIAkoAiAhAiAJQeQAaiAJKAIkIg5BAUEBEIIKIAkoAmghCCAJKAJkQQFGDQcgCSgCbCEPIA4EQCAPIAIgDvwKAAALIAlBEGogCSgCJEEBa0EAEPEbQQEhByAJKAIUIQogCSgCECEMDAQLIAlBKGogFUEBQQEQggogCSgCLCEGIAkoAihBAUYNAiAJKAIwIQIgFQRAIAIgFiAV/AoAAAsgCUEIaiAVQQFrQQAQ8RsgCSgCCCEDIBAgFTYCKCAJKAIMIQcgECACNgIkIBAgBjYCICAQIAc2AhwgECADNgIYIBBBADoACCAQQgE3AwAMBQsgEEEIaiAJQTBqQTD8CgAAQgAMAwsgCSgCVCAJKAJQIQIgCSgCSCEKIAkoAkQhEyAJKAJAIQYgCSgCPCENIAktADghByAJKAIgIQwgCUHkAGogCSgCJCIOQQFBARCCCiAJKAJoIQggCSgCZEEBRg0EIAkoAmwhDyAOBEAgDyAMIA78CgAACyAJQRhqIAogCSgCIGtBABDxGyAJKAIcIQogCSgCGCEMIAdB/wFxQQdHBEAgCUHiAGogCUE5aiICQQJqLQAAOgAAIAkgAi8AADsBYAwCC0EEQQYgAhshByACIQ0hBgwBCyAGIAkoAjBBqLTAABC0GgALIBAgBzoACCAQIAkvAWA7AAkgECAONgIoIBAgDzYCJCAQIAg2AiAgECAMNgIYIBAgEzYCFCAQIAY2AhAgECANNgIMIBAgCjYCHCAQQQtqIAlB4gBqLQAAOgAAQgELNwMACyAJQfAAaiQADAELIAggCSgCbEGotMAAELQaAAsgBEFAayEGAkAgBCgCOEEBRgRAIARBCGoiAiAGQSj8CgAAIARBAzYCtAEgBEGEk8AANgKwASAEQgI3ArwBIARBKTYCnAEgBEEUNgKUASAEIARBkAFqNgK4ASAEIAI2ApgBIAQgBDYCkAEjAEHQAGsiAiQAIAJBBjYCDCACQfzR5gA2AggCQAJAAn8gBEGwAWohBiMAQSBrIgckAAJAAn9BAEHBx+gALQAARQ0AGkHsy+gAKAIAIQhB7MvoAEEANgIAQQAgCEUNABogCC0ACCEDIAhBAToACCAHIAM6AAcgA0EBRg0BIAdBCGohDSMAQTBrIgMkACADQQQ6AAggAyAIQQxqNgIQAkACQCADQQhqQZDC5gAgBhDOAwRAIAMtAAhBBEcNAQwNCyANQQQ6AAAgAygCDCENIAMtAAgiCkEETSAKQQNHcQ0BIA0oAgAhCiANQQRqKAIAIg4oAgAiDARAIAogDBECAAsgDigCBCIMBEAgCiAMIA4oAggQ+BwLIA1BDEEEEPgcDAELIA0gAykDCDcCAAsgA0EwaiQAIAcoAgwhAyAHLQAIIg1BBE0gDUEDR3FFBEAgAygCACENIANBBGooAgAiCigCACIOBEAgDSAOEQIACyAKKAIEIg4EQCANIA4gCigCCBD4HAsgA0EMQQQQ+BwLIAhBADoACEHsy+gAKAIAIQNB7MvoACAINgIAIAcgAzYCCAJAIANFDQAgAyADKAIAIgNBAWs2AgAgA0EBRw0AIAdBCGooAgAiA0EMaigCACIIBEAgA0EQaigCACAIQQEQ+BwLAkAgA0F/Rg0AIAMgAygCBCIIQQFrNgIEIAhBAUcNACADQRhBBBD4HAsLQQELIAdBIGokAAwBCyAHQgA3AhQgB0KBgICAwAA3AgwgB0GU1eYANgIIIAdBB2pBuN/mACAHQQhqQcjV5gAQgRYAC0UEQEHwx+gALQAAQQNHBEAQkAsLIAJByMfoADYCHCACIAJBHGo2AiggAkEQaiENIwBBMGsiAyQAIAMCfyACQShqKAIAIwBBIGsiCCQAKAIAIQcCQEGQyOgAKQMAIh9QBEBBmMjoACkDACEeA0AgHkJ/UQ0CQZjI6AAgHkIBfCIfQZjI6AApAwAiICAeICBRIgobNwMAICAhHiAKRQ0AC0GQyOgAIB83AwALAkACQCAHKQMAIB9SBEAgBy0ADCEKIAdBAToADCAIIAo6AAcgCkUNASAIQgA3AhQgCEKBgICAwAA3AgwgCEGU1eYANgIIIAhBB2pBuN/mACAIQQhqQcjV5gAQgRYACyAHKAIIIgpBf0cEQCAHIApBAWo2AggMAgtB0NbmAEEmQZzX5gAQ4w8ACyAHQQE2AgggByAfNwMACyAIQSBqJAAgBwwBCxDFFgALNgIEIANBBDoACCADIANBBGo2AhACQAJAIANBCGpB+MHmACAGEM4DBEAgAy0ACEEERw0BDAsLIA1BBDoAACADKAIMIQYgAy0ACCIHQQRNIAdBA0dxDQEgBigCACEHIAZBBGooAgAiCCgCACINBEAgByANEQIACyAIKAIEIg0EQCAHIA0gCCgCCBD4HAsgBkEMQQQQ+BwMAQsgDSADKQMINwIACyADKAIEIgYgBigCCEEBayIHNgIIIAdFBEAgBkEAOgAMIAZCADcDAAsgA0EwaiQAIAItABBBBEcNAQsgAkHQAGokAAwBCyACIAIpAxA3AyAgAkECNgIsIAJB3NHmADYCKCACQgI3AjQgAiACQSBqrUKAgICAoB2ENwNIIAIgAkEIaq1CgICAgOD5AYQ3A0AgAiACQUBrNgIwIAJBKGpB7NHmABDoFwALIARBIGoQyh1BACEIDAELIARBCGoiDSAGQTD8CgAAQQAhCAJAIBcoAgQgFygCCCAcIBsQhBlFDQAjAEFAaiICJAACQCAXQQxqIgYoAggiAwRAIANBA3QhDCAGKAIEIgdBBGohEyANKAIsIQUgDSkDECEgIA0pAwghHyANKQMAISIDQAJAAkAgB0EEaigCACIOKAIAQQFHBEBBACEPAkACQAJAAkACQAJAAkACQCAOKQMIIiGnQQFrDgIAAgELQQEhDwsgDkEQaiANEJELIAcoAgAiAykDACIep0EBRw0BwCIJIA9IIQZBACEKIAMoAghBAWsOAgQCBQsgBygCACIDKQMAIh6nDQILIAJB7QA2AiQgAiATNgIgIAJBATYCHCACQQE2AgwgAkGYu8AANgIIIAJBATYCFCACQoCAgICAhIDAYDcDOCACQgI3AzAgAkICNwMoIAIgAkEoajYCGCACIAJBIGo2AhAgAkEIakGEvMAAEOgXAAsgCSAPTg0FDAQLQQEhBkEAIQogAygCCEEBaw4CAAMBC0EBIQoLIA0gA0EQahCRCyAGRQ0CwCAKSA0BDAILIAJB7QA2AiQgAiATNgIgIAJBATYCHCACQQE2AgwgAkHsvMAANgIIIAJBATYCFCACQoCAgICAhIDAYDcDOCACQgI3AzAgAkICNwMoIAIgAkEoajYCGCACIAJBIGo2AhAgAkEIakH0vMAAEOgXAAtBASEPIAVFDQMCQCAhQgFWDQAgDigCPEUNACAiIA4pAxBSDQAgHyAOKQMYUg0AICAgDikDIFENBAsgHlANACADKQMIQgFWDQAgAygCPEUNACAiIAMpAxBSDQAgHyADKQMYUg0AICAgAykDIFENAwsgB0EIaiEHIBNBCGohEyAMQQhrIgwNAAsLQQAhDwsgAkFAayQAIA9FDQAgBEHwAGogFygCHCAXKAIgEOQUIARBkAFqIBkoAgQgGSgCCBDkFAJAIAQoAnQiBiAEKAKUASICRw0AIAQtAIwBIAQtAKwBRw0AIAQtAI0BQQJHDQAgBC0ArQFBAkcNACAELQB4QQNJIAQtAJgBQQNJcw0AQQEhCCAEKAJwIAYgBCgCkAEgBhCEGQ0BCyAEKAJwIQMgBC0AeCIHQQZHBEAgBEHfAWogBEGIAWooAAA2AAAgBEHYAWogBEGBAWopAAA3AwAgBCAEKQB5NwPQAQsgBEHBAWogBEHYAWopAwA3AAAgBEHIAWogBEHfAWooAAA2AAAgBCAHOgC4ASAEIAY2ArQBIAQgAzYCsAEgBCAEKQPQATcAuQEgBCAELQCOAToAzgEgBCAELwGMATsBzAEgBCgCkAEhBiAELQCYASIDQQZHBEAgBEH3AWogBEGoAWooAAA2AAAgBEHwAWogBEGhAWopAAA3AwAgBCAEKQCZATcD6AELIARByQBqIARB8AFqKQMANwAAIARB0ABqIARB9wFqKAAANgAAIAQgAzoAQCAEIAI2AjwgBCAGNgI4IAQgBCkD6AE3AEEgBCAELQCuAToAViAEIAQvAawBOwFUIwBBQGoiAiQAIAJBGGogBEE4aiIGQRhqKQIANwMAIAJBEGogBkEQaikCADcDACACQQhqIAZBCGopAgA3AwAgAiAGKQIANwMAQQAhCCMAQUBqIgYkACAGQQhqIARBsAFqIhcQ9wECQCAGLQAIIgNBCkcEQANAIAYoAhghBSAGKAIUIQkgBigCECENIAYoAgwhCiAGLQAJIRAgBkEkaiACEPcBIAYtACQiD0EKRgRAQQEhBwwDC0ECIQcgA0EFa0EAIANBBmtB/wFxQQRJGyISIA9BBWtBACAPQQZPG0cNAiAGKAIsIQ4gBigCKCEMAkACQAJAAkACQCASDgUABAQEAQQLIA9BBUsNAyADIA9HDQYgBigCNCEPIAYoAjAhEiAGLQAlIRMCQAJAAkACQCADQQFrDgUABgECAwULIAogDSAMIA4QhBlFDQkgCSAFIBIgDxCEGQ0GDAkLIAogDSAMIA4QhBkNBQwICyAKIA0gDCAOEIQZRQ0HIAkgBSASIA8QhBkNBAwHCyAQIBNGDQMMBgsgCiANIAwgDhCEGQ0CDAULIAogDSAMIA4QhBkNAQwECyAQIBNHDQMLIAZBCGogFxD3ASAGLQAIIgNBCkcNAAsLQQMhBwsgBkFAayQAIAdBA0YEQCACQSRqIAIQ9wEgAi0AJEEKRiEICyACQUBrJAALIARBIGoiBhCxEyAGEMgdIARBLGoiBhCxEyAGEMgdCyAEQYACaiQAIAhFDQALIAtBtAFqIBEQvg0gC0EEaiARQQxqEL4NIAtBEGohECMAQZABayIMJAAgEUEYaiIBKAIEIQ8gDEHgAGogASgCCCISQQRBCBCCCiAMKAJkIRYCQCAMKAJgQQFHBEAgDCgCaCEOAkAgFkUNACASQQN0IRMgDEGEAWohAyAMQdQAaiEHIAxB+ABqIQggDEHIAGohDSAOIQogFiEUA0AgE0UNARCDGSEFIA8oAgAiAigCCCEJAkACQCACKAIAQQFGBEAgDEEwaiEEQgIhIEIBIR9CACEeIA0hBiAHIQECQCAJQQFrDgIAAwILQgEhHgwBCyAMQeAAaiEEQgIhIEIAIR8gCCEGIAMhAUIAIR4CQCAJQQFrDgIAAgELQgEhHgsgAikDECEgIAIpAxghIiACKQMgISEgBiACQShqEIQIIAEgAkE0ahCECCAEICE3AxAgBCAiNwMIIAQgIDcDACAeISALIAwgBEEw/AoAACAFICA3AwggBSAfNwMAIAVBEGogDEEw/AoAABCDGSEJIA8oAgQiBCgCCCEVAkACQCAEKAIAQQFGBEAgDEEwaiEGQgIhIEIBIR9CACEeIA0hASAHIQICQCAVQQFrDgIAAwILQgEhHgwBCyAMQeAAaiEGQgIhIEIAIR8gCCEBIAMhAkIAIR4CQCAVQQFrDgIAAgELQgEhHgsgBCkDECEgIAQpAxghIiAEKQMgISEgASAEQShqEIQIIAIgBEE0ahCECCAGICE3AxAgBiAiNwMIIAYgIDcDACAeISALIAwgBkEw/AoAACAJICA3AwggCSAfNwMAIAlBEGogDEEw/AoAACAPQQhqIQ8gCkEEaiAJNgIAIAogBTYCACAKQQhqIQogE0EIayETIBRBAWsiFA0ACwsgECASNgIIIBAgDjYCBCAQIBY2AgAgDEGQAWokAAwBCyAWIAwoAmhBwK3AABC0GgALIAtBHGohBkEAIQICQAJAIBFBJGoiAygCCCIBQQBIDQAgAygCBCEDAkAgAUUEQEEBIRQMAQtBqcboAC0AABpBASECIAFBARDvGyIURQ0BCyABBEAgFCADIAH8CgAACyAGIAE2AgggBiAUNgIEIAYgATYCAAwBCyACIAFByMXAABC0GgALAkACQAJAAkACQAJAIBFBMGoiASgCACIGQf////8Ha0EAIAZBhICAgHhIG0EBaw4EAQIDBAALIAtBwAFqIAEQvg0gC0HMAWogEUE8ahC+DSALIBFBzABqLQAAOgDcASALIBFByABqKAIANgLYAQwECyALQcQBaiARQTRqEL4NIAtBgICAgHg2AsABIAsgEUFAaygCADYC0AEMAwsgC0HEAWogEUE0ahC+DSALQYGAgIB4NgLAASALIBFBxABqLQAAOgDUASALIBFBQGsoAgA2AtABDAILIAtBxAFqIBFBNGoQvg0gC0GCgICAeDYCwAEgCyARQcQAai0AADoA1AEgCyARQUBrKAIANgLQAQwBCyALQcQBaiARQTRqEL4NIAtBg4CAgHg2AsABIAsgEUHEAGotAAA6ANQBIAsgEUFAaygCADYC0AELIAtB6ABqIAtBvAFqKAIANgIAIAsgCykCtAE3A2AgC0HsAGogC0EEakEk/AoAACALQagBaiALQdgBaikCADcDACALQaABaiALQdABaikCADcDACALQZgBaiALQcgBaikCADcDACALIAspAsABNwOQASARQeEAai0AACEBIBFB4ABqLQAAIQYgEUHcAGooAgAhAgJAIBFB0ABqIgMoAgBBgICAgHhHBEAgC0HAAWogAxC+DQwBCyALQYCAgIB4NgLAAQsgC0EEaiIDIAtB4ABqQdAA/AoAACALQdwAaiALQcgBaigCADYCACALIAspAsABNwJUIAAgA0HcAPwKAAAgACABOgBhIAAgBjoAYCAAIAI2AlwMAQsgAEGAgICAeDYCAAsgC0HgAWokAA8LIANBADYCKCADQQE2AhwgA0H00uYANgIYIANCBDcCICADQRhqQfzS5gAQ6BcAC7MoAhZ/An4jAEHwA2siCCQAAkAgAS0AsAFBF0cEQCAAQQQ2AgAMAQsgCEHIAGohECMAQSBrIg4kAAJAAkAgASgCRCICIAEoAkhGDQACQCACLAAAIgZBAE4EQCAGQf8BcSECDAELIAItAAFBP3EhBSAGQR9xIQkgBkFfTQRAIAlBBnQgBXIhAgwBCyACLQACQT9xIAVBBnRyIQUgBkFwSQRAIAUgCUEMdHIhAgwBCyAJQRJ0QYCA8ABxIAItAANBP3EgBUEGdHJyIgJBgIDEAEYNAQsgASgCVCESIAJBIkYgAkEnRnJFBEAgDkEIaiAB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CCAHIAhLIgRqIQIgBA0ACyAAKAIEIgEgAUEBakEDdkEHbCABQQhJGwsgACgCDGs2AggL0wUBDH8jAEHQAGsiAyQAIANByABqIABBHGogAigCACICKAIAEQAAIAMoAkwhCiADKAJIIQkgA0FAayAAIAIoAgARAAAgAygCRCEHIAMoAkAhBSADQThqIABB1ABqIAIoAgARAAAgAygCPCEEIAMoAjghBiADQTBqIABBOGogAigCABEAACADQShqIABB1ABBOCAEIAMoAjRJIAYgAygCMCIESSAEIAZGGyIIG2oiBiACKAIAEQAAIAMoAiwhCyADKAIoIQQgA0EgaiAAIAcgCksgBSAJSyAFIAlGGyIMQRxsaiIJIAIoAgARAAAgAygCJCENIAMoAiAhBSADQRhqIABBOEHUACAIG2oiCiACKAIAEQAAIAMoAhwhCCADKAIYIQcgA0EQaiAAIAxBAXNBHGxqIgAgAigCABEAACADQQhqIAogACAGIAsgDUkgBCAFSSAEIAVGGyIFGyAIIAMoAhRJIAcgAygCECIESSAEIAdGGyIEGyIHIAIoAgARAAAgAygCDCENIAMoAgghCCADIAkgBiAAIAQbIAUbIgsgAigCABEAACADKAIEIQ4gAygCACEMIAFBGGogBiAJIAUbIgJBGGooAgA2AgAgAUEQaiACQRBqKQIANwIAIAFBCGogAkEIaikCADcCACABIAIpAgA3AgAgASAHIAsgDSAOSSAIIAxJIAggDEYbIgYbIgIpAgA3AhwgAUE0aiACQRhqKAIANgIAIAFBLGogAkEQaikCADcCACABQSRqIAJBCGopAgA3AgAgAUHQAGogCyAHIAYbIgJBGGooAgA2AgAgAUHIAGogAkEQaikCADcCACABQUBrIAJBCGopAgA3AgAgASACKQIANwI4IAFB7ABqIAAgCiAEGyIAQRhqKAIANgIAIAFB5ABqIABBEGopAgA3AgAgAUHcAGogAEEIaikCADcCACABIAApAgA3AlQgA0HQAGokAAuDBgEFfyMAQTBrIgQkACACQQA2AgACfwJAAkACQAJAAkACQAJAIAEoAuQKQQNGDQAgAygCAEEBa0ECTwRAIAEoAogLIgUoArACIAUoArQCRw0BCyACKALYBEGAgICAeEYNASAEQRhqIAFB5ApqIAJB2ARqIAMgAigCDCAC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AEEQayEGQQAhAULE5sGb4MXijBMhAkLTkYytiNHanyQhAwNAIAIgASAFaiIHQQhqKQAAQtDj/MyihM6EpH+FIgJC/////w+DIAcpAAAgA4UiA0IgiH5CIIkgA0L/////D4MgAkIgiH6FIQIhAyABQRBqIgEgBkkNAAsgBSAGaiIBKQAIIAKFIQIgASkAACADhQwGCyAAQQdLDQECQCAAQQNNBEAgAA0BDAYLIAAgBWpBBGs1AABCxObBm+DF4owThSECIAU1AABC05GMrYjR2p8khQwGCyAFIABBAXZqMQAAIAAgBWpBAWsxAABCCIaEQsTmwZvgxeKME4UhAiAFMQAAQtORjK2I0dqfJIUMBQsgASgCCCEFIAEoAgwiAEERTwRAIABBEGshBkEAIQFCxObBm+DF4owTIQJC05GMrYjR2p8kIQMDQCACIAEgBWoiB0EIaikAAELQ4/zMooTOhKR/hSICQv////8PgyAHKQAAIAOFIgNCIIh+QiCJIANC/////w+DIAJCIIh+hSECIQMgAUEQaiIBIAZJDQALIAUgBmoiASkACCAChSECIAEpAAAgA4UMBQsgAEEHSw0BIABBA0sNAiAARQ0DIAUgAEEBdmoxAAAgACAFakEBazEAAEIIhoRCxObBm+DF4owThSECIAUxAABC05GMrYjR2p8khQwECyAAIAVqQQhrKQAAQsTmwZvgxeKME4UhAiAFKQAAQtORjK2I0dqfJIUMAwsgACAFakEIaykAAELE5sGb4MXijBOFIQIgBSkAAELTkYytiNHanySFDAILIAAgBWpBBGs1AABCxObBm+DF4owThSECIAU1AABC05GMrYjR2p8khQwBC0EAIQBCxObBm+DF4owTIQJC05GMrYjR2p8kCyEEIACtIARC/////w+DIAJCIIh+hSACQv////8PgyAEQiCIfkIgiYUiBKcgCCAJakHdy92eeWxqQd3L3Z55bCAEQiCIp2pBycH4/QBsQaPuuZwEakEPd60LtAYBBH8jAEEgayICJAACQAJAAkACQAJAAkACQAJAAkACQCABDigABwcHBwcHBwcBAwcHAgcHBwcHBwcHBwcHBwcHBwcHBwcHBAcHBwcFBgsgAEGABDsBCiAAQgA3AQIgAEHc4AA7AQAMCAsgAEGABDsBCiAAQgA3AQIgAEHc6AE7AQAMBwsgAEGA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AkEEaiABEMwPDAILIAJBBGogARCuEQwBCwJAAkACQAJAAkACQAJAAkACQCACQQhqIgIoAgBBAWsOCgECAwQHBwUHBggACyACKAIoIgJFDQcgAigCCCABEKsFDAcLIAIoAhAgARD3AiACKAIYQQJJDQYgAigCJCABEPcCDAYLIAIoAhhBAUcNBSACKAIkIAEQ9wIMBQsgAigCDCABEPcCDAQLIAIoAhAgARDlFAwDCyACKAIMIAEQ9wIMAgsgAkEEaiABEKISDAELIAIoAgwgARD3AiACKAIQIAEQqwULCyAAKAJIIAEQ9wILDBMLIAAoAhAgARD3AiAAKAIYQQJJDRIMEAsgACgCGEUNEQwPCyAAQQRqIgAoAgggARD3AiAAKAIMIAEQ9wIgACgCECABEPcCDwsgAEEEaiIDKAIMQQJPBEAgAygCECABEPcCCyADKAIkIgAEQCAAQQR0IQIgAygCIEEMaiEAA0AgACgCACABEPcCIABBEGohACACQRBrIgINAAsLAkAgAygCKCIARQ0AIAAoAhAiAkUNACAAKAIMIQAgAkECdCECA0AgACgCACABEKsFIABBBGohACACQQRrIgINAAsLDwsgAEEEaiIDKAIMIAEQ9wICQCADKAIQQYCAgIB4Rg0AIAMoAhgiAEUNACAAQQR0IQIgAygCFEEMaiEAA0AgACgCACABEPcCIABBEGohACACQRBrIgINAAsLAkAgAygCHCIARQ0AIAAoAhAiAkUNACAAKAIMIQAgAkECdCECA0AgACgCACABEKsFIABBBGohACACQQRrIgINAAsLDwsgACgCFCICRQ0NIAAoAhAhACACQQJ0IQIDQCAAKAIAIAEQ9wIgAEEEaiEAIAJBBGsiAg0ACwwNCyAAKAIUIgJFDQwgACgCECEAIAJBAnQhAgNAIAAoAgAgARD3AiAAQQRqIQAgAkEEayICDQALDAwLIABBBGoiAygCDCABEPcCAkAgAygCECIARQ0AIAAoAhAiAkUNACAAKAIMIQAgAkECdCECA0AgACgCACABEKsFIABBBGohACACQQRrIgINAAsLIAMoAhQiACgCECICBEAgACgCDCEAIAJBAnQhAgNAIAAoAgAgARD3AiAAQQRqIQAgAkEEayICDQALCw8LIABBBGoiAygCFCICBEAgAygCECEAIAJBMGwhAgNAIAAg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sMkAQQEgBxEFAA0AIAJBAjYCLCACQdiwyQA2AiggAkIBNwI0IAJBlwo2AnggAiAANgJ0IAIgAkH0AGo2AjBBASAEIAYgAkEoahDOAw0BGiAEQeiwyQBBAiAHEQUADAELQQELIAJBkAFqJAALpwUCDH8BfiMAQeABayICJAAgAkEYakEgQQhB6AAQggogAigCHCEDAkAgAigCGEEBRwRAIAJBADYCFCACIAIoAiA2AhAgAiADNgIMIAJB7ABqIQYgAkEoaiEJA0ACQCABLQCwASIDQQZHBEAgA0GjAUcgA0EDR3FFBEAgACACKQIMNwIAIABBCGogAkEUaigCADYCAAwFCwJAIAEoAmwiA0GAgIAQcUUEQCABIANBgICAEHI2AmwgAkEYaiABEHIgASABKAJsQf///29xNgJsDAELIAJBGGogARByCyACKAIcIQQgAigCGCIHQQlHDQEgAEGAgICAeDYCACAAIAQ2AgQgAkEMaiIAEPADIAAQrx4MBAsgARCICCABKQOgASEOIAIoAhQiAyACKAIMRgRAIAJBDGpBkNLEABDeEgsgAigCECADQegAbGoiBCAONwIEIARBBjYCACACIANBAWo2AhQMAQsgAikDICEOQQBFBEAgAkGYAWogCUHAAPwKAAALIAJBiAFqIgsgBkEIaikCADcDACACQZABaiIMIAZBEGooAgA2AgAgAiAGKQIANwOAASABLQBtQcAAcSAHciACKAJoIg1BgICAgHhGckUEQCACIA43A9gBIAUEQCACQeWAgIB4NgIYIAEgAkHYAWogAkEYahDNFwtBASEFCyACKAIUIgggAigCDEYEQCACQQxqQYDSxAAQ3hILIAIoAhAgCEHoAGxqIgMgDjcDCCADIAQ2AgQgAyAHNgIAIApFBEAgA0EQaiACQZgBakHAAPwKAAALIAMgDTYCUCADIAIpA4ABNwJUIANB3ABqIAspAwA3AgAgA0HkAGogDCgCADYCACACIAhBAWo2AhQMAAsACyADIAIoAiBB8NHEABC0GgALIAJB4AFqJAAL9gUBAX8jAEEQayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiACgCAEEBaw4SAQIDBAUGBwgJCgsMDQ4PEBESAAsgAiAAQQRqNgIMIAFB9LHGAEEFIAJB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CBD4HAsgAEEUahD/GSAAQRhqEP8ZDAYLIABBDGoQyxUgACgCFCIBELEBIAFB2ABBCBD4HCAAKAIYIgAQkAMMBgsgAEEQahDLFSAAKAIYIgEQsQEgAUHYAEEIEPgcDAQLIABBCGoQvAgLDwsgACgCDCIAELEBIABB2ABBCBD4HA8LIAAoAgwiARCxASABQdgAQQgQ+BwgACgCECIAEJADDAELIAAoAhwiABCQAwsgAEE4QQgQ+BwL0gQBA38jAEHQAGsiAyQAAkAgASgCbCIEQYABcSIFBEAgASAEIAVzIgQ2AmwCQCACKAIcLQAARQRAIANByABqIAJBGGooAgA2AgAgA0FAayACQRBqKQIANwMAIANBOGogAkEIaikCADcDACADIAIpAgA3AzAgA0EoaiABIANBMGoQ3QwgAygCLCECIAMoAighBAwBCyADQcgAaiACQRhqKAIANgIAIANBQGsgAkEQaikCADcDACADQThqIAJBCGopAgA3AwAgAyACKQIANwMwIARBgAJxRQRAIAEgBEGAAnI2AmwgA0EYaiADQTBqIAEQoQEgAygCHCECIAMoAhghBCABIAEoAmxB/31xNgJsDAELIANBIGogA0EwaiABEKEBIAMoAiQhAiADKAIgIQQLIAEgASgCbCAFcjYCbAwBCyACKAIcLQAARQRAIANByABqIAJBGGooAgA2AgAgA0FAayACQRBqKQIANwMAIANBOGogAkEIaikCADcDACADIAIpAgA3AzAgA0EQaiABIANBMGoQ3QwgAygCFCECIAMoAhAhBAwBCyADQcgAaiACQRhqKAIANgIAIANBQGsgAkEQaikCADcDACADQThqIAJBCGopAgA3AwAgAyACKQIANwMwIARBgAJxRQRAIAEgBEGAAnI2AmwgAyADQTBqIAEQoQEgAygCBCECIAMoAgAhBCABIAEoAmxB/31xNgJsDAELIANBCGogA0EwaiABEKEBIAMoAgwhAiADKAIIIQQLIAAgBDYCACAAIAI2AgQgA0HQAGokAAvuBwINfwR+IwBB0ABrIgUkACABKAIEIQcgASgCACEGIAVBATYCSCAFQQA2AkAgBUEYaiEIIwBBEGsiCyQAIAEoAgAiDCABKAIEIgpqIQ4gDCEEA0ACQCACIQMgDiAEIgJGBEAgCiEDDAELAn8gAiwAACIEQQBOBEAgBEH/AXEhCSACQQFqDAELIAItAAFBP3EhDSAEQR9xIQkgBEFfTQRAIAlBBnQgDXIhCSACQQJqDAELIAItAAJBP3EgDUEGdHIhDSAEQXBJBEAgDSAJQQx0ciEJIAJBA2oMAQsgCUESdEGAgPAAcSACLQADQT9xIA1BBnRyciEJIAJBBGoLIgQgAyACa2ohAiAJQTprQXVLDQELCwJAAkACQCADRQRAIAhBADYCICAIIAo2AhwgCCAMNgIYIAhBBzoACCAIQQE2AgAMAQsCQCADIApPBEAgAyAKRg0BDAMLIAMgDGosAABBQEgNAgsgCyAMIAogAxDgGCALKAIAIgRFDQEgCykCCCERIAggCygCBDYCCCAIIAQ2AgQgASARNwIAIAhBAzYCAAsgC0EQaiQADAELIAwgCkEAIANBoMDAABDpGwALAkACQAJ/An4CQAJAAkACQCAFKAIYIgJBA0YEQCABIAc2AgQgASgCACEEIAEgBjYCACAEIAZrIQMCQCAEIAZGDQAgAyAHTwRAIAMgB0YNAQwKCyADIAZqLAAAQUBIDQkLIAVBQGsgBiAHIAMQ4BggBSgCQCICRQ0IIAUoAkQhBCABIAUpAkg3AgBCAiERAkACQAJAIAQOAgcAAQtCgAIhEEEBIQMgAi0AAEEraw4DBgEGAQsgAi0AAEErRgRAIARBAWshAyACQQFqIQIgBEESSQ0BDAMLIAQiA0ERTw0CCwNAIAItAABBMGsiBEEJSw0EIAJBAWohAiAErSAPQgp+fCEPIANBAWsiAw0ACwwCCyACBEAgBSgCNCEHIAUoAjAhBiAFKQMoIQ8gBSkDIAwFC0EEIQMgBSgCHAwFCwNAIANFDQEgBSAPQgBCChDWDCACLQAAQTBrIgRBCUsNAkKABCEQIAUpAwhQBEAgAkEBaiECIANBAWshAyAFKQMAIhIgBK18Ig8gEloNAQsLDAILIA9CtObMmbPmzAFaBEBCAyERQgAhEAwCCyAAIA83AwhBAyECDAQLQoACIRALIAEgBzYCBCABIAY2AgBBASECIBAgEYQLIRAgAEGFtcAANgIgIAAgBzYCHCAAIAY2AhggACAPNwMQIAAgEDcDCEEkIQNBEAshASAAIANqIAE2AgALIAAgAjYCACAFQdAAaiQADwsgBiAHQQAgA0HMs8AAEOkbAAv6BgIGfwZ+IwBBoAFrIgIkACABNQKoASENIAJBCGohBCMAQTBrIgMkACABNQKoASEIIAEQog0gA0EQaiABEIYIIAMoAhAhBQJAIAMtAChBAkYEQCAEQQI2AgAgBCAFNgIEDAELIAMgAykDICILNwMIIAMgAygCFDYCBCADIAU2AgACQCABLQCwAUEJRwRAQQAhBSADKQMAIQwgCyEIDAELIAEQiAggARCiDSADQRBqIAEQhgggAygCECEFIAMtAChBAkcEQCADNQIUQiCGIgogBa2EIQkgCCAKhCEMIAMpAyAhCkEBIQUgAykDACEIDAELIARBAjYCACAEIAU2AgQgA0EIahDxDAwBCyAEIAo3AyggBCAJNwMgIAQgCzcDGCAEIAg3AxAgBCAMNwMIIAQgBTYCAAsgA0EwaiQAAkAgAigCCCIEQQJGBEAgAigCDCEBIABBAzYCACAAIAE2AgQMAQsgAkHQAGoiBSACQRBqIgNBKPwKAAACfyAEQQFxBEAgAyAFQSj8CgAAQQIMAQsgAyACQdAAahDuDkEACyEEAkAgAS0AsAFBCEcNACACQSBqIQUgAkEQaiEDA0AgARCICCABEKINIAJB+ABqIAEQhgggAi0AkAFBAkYEQCACIAQ2AgggAigCeCEBIABBAzYCACAAIAE2AgQgAkEIahC3FQwDCyACKQOIASELIAI1AnwhCCACKAJ4IQcgATUCpAEhCQJAAn8CQAJAAkAgBEEBaw4CAAECC0GpxugALQAAGkHAAEEIEO8bIgZFDQMgBiADQcAA/AoAAEEADAILIAJBATYCfCACQazOxAA2AnggAkIANwKEASACIAJBnAFqNgKAASACQfgAakG0zsQAEOgXAAsgAkGQAWogA0EYaikDADcDACACQYgBaiADQRBqKQMANwMAIAJBgAFqIANBCGopAwA3AwAgAiADKQMANwN4QQELIQQgBSACKQN4NwMAIAVBGGogAkGQAWopAwA3AwAgBUEQaiACQYgBaikDADcDACAFQQhqIAJBgAFqKQMANwMAIAIgCzcDSCACIAY2AhwgAiAENgIYIAIgCUIghiANhDcDECACIAetIAhCIIaENwNAQQEhBCABLQCwAUEIRg0BDAILC0EIQcAAEKIfAAsgAiAENgIIIAAgAkEIakHIAPwKAAALIAJBoAFqJAALpAUCBX8BfiMAQaABayIEJAACQCAB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6AAQzBopAwAiOEIDg1AEQCADIDinIgw2AiAgAyAMKAIQNgIkIANBGGogA0EgaiIMEKEeIAMoAhgiDSANKAIAIg1BAWo2AgAgDUEASA0BIANBEGogDBChHiADIAMpAxA3AiggA0EIaiADQShqEKEeCyADQTBqJAAgOAwBCwALITkgAgJ+IwBBMGsiAyQAAkBBoLfoABDMGikDACI4QgODUARAIAMgOKciDDYCICADIAwoAhA2AiQgA0EYaiADQSBqIgwQoR4gAygCGCINIA0oAgAiDUEBajYCACANQQBIDQEgA0EQaiAMEKEeIAMgAykDEDcCKCADQQhqIANBKGoQoR4LIANBMGokACA4DAELAAs3A4ABIAJCADcDiAEgByACQYABaiIMIAJBiAFqIg0QnRkgAkHEAGoiFSACQegAaikDADcCACACQcwAaiITIAJB8ABqKQMANwIAIAJB1ABqIhAgAkH4AGopAwA3AgAgAiACKQNgNwI8QanG6AAtAAAaQTBBCBDvGyIDRQ0CIANBADYCACADQQRqIAhBJPwKAAAgA0EANgIoIAUgAzYCKCAFIDk3AhggBUIANwIQIAVBADYCCCAFQQA2AgAgAkLx5JWL166aueUANwM4IAgQ8QwgAkLx5JWL166aueUANwOAASACQgA3A4gBIAcgDCANEJ0ZIBUgAkHoAGopAwA3AgAgEyACQfAAaikDADcCACAQIAJB+ABqKQMANwIAIAIgAikDYDcCPEGpxugALQAAGkHYAEEIEO8bIgdFDQcgB0EONgIAIAdBBGogCEEk/AoAACAIQQFBBEEQEIIKIAIoAjwhDCACKAI4QQFGDQNBqcboAC0AABogAigCQCEIQdgAQQgQ7xsiA0UNByADQQA2AgggA0EPNgIAIAMgAikClAE3AgwgA0EUaiACQZwBaikCADcCACADQRxqIAJBpAFqKQIANwIAIANBJGogAkGsAWooAgA2AgAgCEEANgIAIAggAzYCDEGpxugALQAAGkHYAEEIEO8bIgNFDQcgA0IBNwMoIAMgCDYCJCADIAw2AiAgAyAHNgIUIANCgICAgCA3AgwgA0IANwIEIANBCzYCACABQgA3AwAgAUEAOgA8IAEgAzYCOCABQQA2AiQgAUEAOgAgIAFBATYCHCABIAU2AhggASALNgIUIAFCADcCDCABQQM2AghB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AEGnjOMAQQMQjgkiBEUNAQwDCyADKAIYIQQMAgsgA0GAAjsBQCADQUBrIAEgAhCsDAsgABCqESEECyADQdAAaiQAIAQLgAUCA38CfiMAQYABayIDJAAgAikCACIGQiCIIAEpA6gBIAanQQFxGyIHpyECIAZC/////w+DIgZQBEAgARCICAsgAyACNgIQIAMgASgCpAEiBTYCFAJAAn8CQAJAAkACQCABLQCwASIEQQ9HBEAgAyAFNgIcIAMgAjYCGCABKAJsIgJBgAFxIgUNBCAEQQNrDgQDAgIDAQsgAyABKQOoATcDICADQbaAgIB4NgIoIANBIGogA0EoahCRECECQQEhBCABLQCwAUGiAUcNBSABEIMNIQUgARCICCABIAUQxBAMBQsgBEGjAUYNAQsgAS0AsQENAEEBIAR0QaIBcUUgBEEHS3INAQsgAkECcQRAIANBqICAgHg2AiggAyADKQMYNwMgIAEgA0EgaiADQShqEM0XCyADQtHC3YuWjR03AyggA0EoaiIBEPEMIANC0cLdi5aNHTcDICADQTBqIANBIGogA0EYahCdGSADQQ42AiggARDhFQwBCwJAIAJBgICAgAJxRSAGQgBScg0AIAFBAToA3AEgAkEEcQ0AIANBk4CAgHg2AiggAyADKQMQNwMgIAEgA0EgaiADQShqEM0XCwJAIAJBgIAgcQRAIAUNASADQdOAgIB4NgIoIAEgA0EQaiADQShqEM0XDAELIAJBgICAAXFFDQAgA0HRgICAeDYCKCABIANBGGogA0EoahDNFwsgA0EIaiABEKcBQQEhBCADKAIMIQIgAygCCEEBcQ0BIAE1AqQBIQYgAyACNgI0IANBFjYCKCADIAdC/////w+DIAZCIIaENwIsIANBKGoQ4RULIQJBACEECyAAIAI2AgQgACAENgIAIANBgAFqJAALqAoBCX8jAEHQAGsiBiQAAkACQAJAAkACQAJAAkAgAS0ADSIHQQAgB0EDRxtBAWsOAgACAQsgAg0BCwJAIANFDQAgBkEIaiAEEMMPIAYoAgghCiAGKAIMIQcgBEUNACAKQQhqIAMgBPwKAAALIAEoAiANAiABQX82AiAgBkEQaiEOIwBBIGsiCCQAIAggBzYCDCAIIAo2AggCQAJAAkACQAJAAkAgAUEkaiIDKAIABEAgAkH/////B08EQCAO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aiECIANqIQMgCEEMayIIDQALCwJAAkAgBUH//wNxIANLBEAgBSADayEDQQAhAkEAIQECQAJAAkAgB0EddkEDcUEBaw4DAAEAAgsgAyEBDAELIANB/v8DcUEBdiEBCyAHQf///wBxIQggACgCBCEHIAAoAgAhBANAIAJB//8DcSABQf//A3FPDQIgAkEBaiECIAQgCCAHKAIQEQEARQ0ACwwDCyAAKAIAIAAoAgQgBhDiAyECDAELIAQgByAGEOIDDQFBACEFIAMgAWtB//8DcSEBA0AgBUH//wNxIgMgAUkhAiABIANNDQEgBUEBaiEFIAQgCCAHKAIQEQEARQ0ACwsgACAJNwIIDAELQQEhAgsgBkEQaiQAIAILnAQBC38jAEEwayIDJAAgA0EUakEAQQFBARCCCiADKAIYIQQCQAJAIAMoAhRBAUcEQCADQQA2AhAgAyADKAIcNgIMIAMgBDYCCCADQQE6ACwgA0HfADYCKCADIAI2AiQgA0EANgIgIAMgAjYCHCADIAE2AhggA0HfADYCFCADQSdqIQwgA0EoaiENIAIhBiACIQUDQCAIIQQDQCADKAIYIARqIQogDCADLQAsIgdqLQAAIQgCQCAFIARrIgtBB00EQCAEIAVGDQVBACEFA0AgBSAKai0AACAIRg0CIAsgBUEBaiIFRw0ACwwFCyADIAggCiALEJEHIAMoAgBBAXFFDQQgAygCBCEFIAMtACwhByADKAIcIQYgAygCICEECyADIAQgBWpBAWoiBDYCIAJAIAQgB0kgBCAGS3INACAHQQVJBEAgBCAHayIFIAMoAhhqIAcgDSAHEIQZIAMoAiAhBEUEQCADKAIcIQYMAgsgA0EIaiIGIAEgCWogASAFahCFESAGQQFBARCFESADKAIkIgUgAygCICIISQ0GIAQhCSAFIAMoAhwiBk0NAwwGCyAHQQRB2MzAABCmHQALIAMoAiQiBSAESQ0DIAUgBk0NAAsLDAELIAQgAygCHEG4zMAAELQaAAsgCSEECyADQQhqIAEgBGogASACahCFESAAQQhqIANBEGooAgA2AgAgACADKQIINwIAIANBMGokAAvUBAICfwJ+IwBBMGsiAyQAIANBIGogAiABKQMAIganIgRBABCTAQJAAkAgAy0AIEEERg0AIAMpAyAiBUL/AYNCBFENACAAIAU3AgAM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CCIDIAZBDGxqIQggBEEMaiEJA0ACQAJAAkACQCADLwEAQQFrDgICAQALAkAgAygCBCICQcEATwRAIAFBDGooAgAhBgNAQQEgAEGWwucAQcAAIAYRBQANCBogAkFAaiICQcAASw0ACwwBCyACRQ0DCyAAQZbC5wAgAiABQQxqKAIAEQUARQ0CQQEMBQsgACADKAIEIAMoAgggAUEMaigCABEFAEUNAUEBDAQLIAMvAQIhAiAJQQA6AAAgBEEANgIIAn9BBEEFIAJBkM4ASRsgAkHoB08NABpBASACQQpJDQAaQQJBAyACQeQASRsLIgYgBEEIaiIKaiIHQQFrIgUgAiACQQpuIgtBCmxrQTByOgAAAkAgBSAKRg0AIAdBAmsiBSALQQpwQTByOgAAIARBCGogBUYNACAHQQNrIgUgAkHkAG5BCnBBMHI6AAAgBEEIaiAFRg0AIAdBBGsiBSACQegHbkEKcEEwcjoAACAEQQhqIAVGDQAgB0EFayACQZDOAG5BMHI6AAALIAAgBEEIaiAGIAFBDGooAgARBQBFDQBBAQwDCyADQQxqIgMgCEcNAAsLQQALIARBEGokAAuVBAEDfyMAQdAAayIDJAACQCABKAJsIgRBgAFxIgUEQCABIAQgBXMiBDYCbAJAIAIoAhgtAABFBEAgA0HIAGogAkEQaikCADcDACADQUBrIAJBCGopAgA3AwAgAyACKQIANwM4IANBMGogASADQThqENwMIAMoAjQhAiADKAIwIQQMAQsgA0HIAGogAkEQaikCADcDACADQUBrIAJBCGopAgA3AwAgAyACKQIANwM4IARBgAJxRQRAIAEgBEGAAnI2AmwgA0EgaiADQThqIAEQrwEgAygCJCECIAMoAiAhBCABIAEoAmxB/31xNgJsDAELIANBKGogA0E4aiABEK8BIAMoAiwhAiADKAIoIQQLIAEgASgCbCAFcjYCbAwBCyACKAIYLQAARQRAIANByABqIAJBEGopAgA3AwAgA0FAayACQQhqKQIANwMAIAMgAikCADcDOCADQRhqIAEgA0E4ahDcDCADKAIcIQIgAygCGCEEDAELIANByABqIAJBEGopAgA3AwAgA0FAayACQQhqKQIANwMAIAMgAikCADcDOCAEQYACcUUEQCABIARBgAJyNgJsIANBCGogA0E4aiABEK8BIAMo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IAMtABBBBEYNACADKQMQIgVC/wGDQgRSDQELIANBADYCECADQQhqIAIoAgQgA0EQakHB68AAQQEgAigCCCgCRBEEAAJAIAMtAAhBBEYNACADKQMIIgVC/wGDQgRRDQAgACAFNwIADAMLAkAgAi0AFQ0AIANBEGogAigCBCACKAIIKAIYEQAAIAMtABBBBEYNACADKQMQIgVC/wGDQgRSDQILIANBEGogASgCDCACEF8CQCADLQAQQQRGDQAgAykDECIFQv8Bg0IEUQ0AIAAgBTcCAAwDCwJAAkAgBkKAgICAEFQNACADQRBqIAIoAgQgBkIgiKcgAigCCCgCTBEDACADLQAQQQRGDQAgAykDECIGQv8Bg0IEUg0BCyAAQQQ6AAAMAwsgACAGNwIADAILIAAgBTcCAAwBCyAAIAU3AgALIANBIGokAAuWCAIIfwF8IwBBQGoiAyQAAkACQAJAAkACQAJAAkACQCAALQAAQQFrDgUAAQIDBAULIAEoAgAoAgBB9s3jAEHxzeMAIAAtAAEiABtBBEEFIAAbEOgbDAULIwBBQGoiAiQAAkACQAJAAkAgAEEIaiIAKAIAQQFrDgIBAgALIAJBCGogAkEYaiAAKQMIEPcGIAEoAgAoAgAgAigCCCACKAIMEOgbDAILIAJBEGogAkEYaiAAKQMIEIsGIAEoAgAoAgAgAigCECACKAIUEOgbDAELIAArAwgiCr1C////////////AINC//////////f/AFgEQCAKIAJBGGoiABBrIQQgASgCACgCACAAIAQQ6BsMAQsgASgCACgCAEH6zeMAQQQQ6BsLIAJBQGskAAwECyADQThqIAEgACgCCCAAKAIMEOEOQQAhACADLQA4QQRGDQQgAyADKQM4NwMIIANBCGoQ/hQhAAwECyABIABBBGoQlgchAAwDCyAAKAIMIQIgASgCACIJKAIAQf/N4wBBARDoG0GAAiEFIAJFBEAgCSgCAEHvzeMAQQEQ6BtBACEFCyAAKAIIIQQgAyACQQAgACgCBCIAGzYCKCADIAQ2AiQgAyAANgIgIANBADYCHCADIABBAEciAjYCGCADIAQ2AhQgAyAANgIQIANBADYCDCADIAI2AggCQANAAkBBACECIANBCGoiACgCICIEBH8gACAEQQFrNgIgAkACQCAAEPgOIgYEQCAGKAIEIQcC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HCACQZYDNgIsIAIgAkEoajYCGCACIAJBDGo2AiggAkEQakHw7MQAEOgXAAsgARDMFCEDCyAAQQc2AgAgACADNgIEDAILIAJBEGogARDIDCABEIgIIAVCIIYhBSACKQMYIQcgAisDECEIIAEpA6ABIgZCKIinIQEgBkIgiKchBEEACyEDIAAgATsADSAAIAc3AxggACAIOQMQIAAgBDoADCAAIAU3AgQgACADNgIAIABBD2ogAUEQdjoAAAsgAkEwaiQAC6UDAQh/IAEoAlQhBQJAAkACQCABKAJIIgIgASgCRCIDRg0AIAMsAAAiBEEASA0AIARBwNfEAGotAABFDQAgASAFQQFqIgQ2AlQgASADQQFqIgc2AkQCQCACIAdHBEAgAiAHayEGQQAhAwwBCwwCCwNAAkAgAyICIAYgAkEgaiIIIAYgCEkbIgNPDQADQCACIAdqLQAAIglBwIDHAGotAABFBEAgAkEBaiICIANHDQEMAgsLIAIEQCABIAIgBGoiBDYCVCABIAEoAkwiAiABKAJQajYCSCABIAQgAiABKAJYa2o2AkQLIAnAIgJB3ABGIAJBAEhyDQIMAwsgBiAISw0ACyAAQQA6AAwgAEGAgICAeDYCACABIAQgBmoiAzYCVCABIAEoAkwiAiABKAJQajYCSCABIAIgAyABKAJYIgFrIgNqNgJEDAILIAAgASAFEIEBDwsgAEEAOgAMIABBgICAgHg2AgAgASABKAJMIgIgASgCUGo2AkggASACIAQgASgCWCIBayIDajYCRAsgACADIAUgAWsiAWs2AgggACABIAJqNgIEC44EAgZ/A34jAEGQAWsiAiQAAkACQAJAAkACQCABKAIAIgdBAWsOAwECAwALIABBCGogAUEIahCNBwwDCyABKQIEIQggAiABQQxqEIQJIAEtABghBQJAIAEoAhwiBEUEQEEAIQEMAQsQoBkhASAEKQIAIQkQoRkhAyACQRhqIgYgBCgCCBBAIAMgBkH4APwKAAAgASADNgIIIAEgCTcCAAsgACAINwIEIAAgAikCADcCDCAAIAE2AhwgACAFOgAYIABBFGogAkEIaigCADYCAAwCCyABKQIMIQggASkCBCEJEJIZIQQgAkEYaiIDIAEoAhQQiQIgBCADQTD8CgAAAkAgASgCGCIDRQRAQQAhAQwBCxCgGSEBIAMp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ABCMDgALIAcgBUHAwuQAEIwOAAsgASAHNgIgIAchDAsgCiAFayIIIANJDQALCyABQQA2AhhBAAshByAAIAc2AgALpAEAAkACQAJAAkACQAJAAkAgASgCAEEBaw4lBQUABQUFBgYGBQUFBQYBBQUFAgUFBQUGBgUDBQUFBQUFBQYFBAULIAAgAUEoahD/HA8LIAAgAUEMQRAgASgCCEEBa0ECSRtqKQIANwIADwsgACABQShqEJcdDwsgACABQQRqEPwcDwsgACABKQIENwIADwsgACABKQIENwIADwsgACABKQMINwIAC+IDAgp/A34jAEGgAWsiASQAEKcZIQIgASAAKAIAIgAQkAggAUEMaiAAQQxqENQIQYCAgIB4IQYgACgCICEIIAApAhghDSAAKAIwQYCAgIB4RwRAIAApAiQhDCAAKAIsIQMgAUE0aiAAQTBqELAJIAFBIGogAzYCACABIAw3AxggASkDOCEMIAEoAjQhBgsgAC0APSEJIAAtADwhCkEAIQMgACgCQCIEBEAQhRkhAyAEKQIAIQsgAUEwaiIHIARBCGoQyAMgAyALNwIAIANBCGogBykDADcCACADQRBqIAFBOGooAgA2AgALIAAoAkQiAARAEKAZIQUgACkCACELEKEZIQQgAUEoaiIHIAAoAggQQCAEIAdB+AD8CgAAIAUgBDYCCCAFIAs3AgALIAFBMGoiACABQQhqKAIANgIAIAFBPGogAUEUaigCADYCACABIAEpAgAiCzcDKCABIAEpAgw3AjQgAkEQaiABQThqKQMANwIAIAJBCGogACkDADcCACACIAs3AgAgAiAINgIgIAIgDTcCGCACIAU2AkQgAiADNgJAIAIgCToAPSACIAo6ADwgAiAMNwI0IAIgBjYCMCACIAEpAxg3AiQgAkEsaiABQSBqKAIANgIAIAFBoAFqJAAgAguBBAEEfyMAQSBrIgYkAAJAAkAgASgCGCIHLQDiAkEBRgRAIActAOMCDQELIAZBFGogASACIAMgBCAFEJ8IIAYoAhghASAGKAIUIgJBAkYEQCAAQQI2AgAgACABNgIEDAILIAAgATYCBCAAIAI2AgAMAQsCQAJAAkACQCAHKALEAigCEEEBdCIIIAVNBEAgBkEUaiABIAIgAyAEIAUQnwggBigCGCEBIAYoAhQiAkECRw0BIABBAjYC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DLQBCyABQRc2AgggAUHctMUANgIEIAFBgICAgHg2AgAMswELIAFBLDYCCCABQfO0xQA2AgQgAUGAgICAeDYCAAyyAQsgAUHiADYCCCABQZ+1xQA2AgQgAUGAgICAeDYCAAyxAQsgAUEaNgIIIAFBgbbFADYCBCABQYCAgIB4NgIADLABCyABQSU2AgggAUGbtsUANgIEIAFBgICAgHg2AgAMrwELIAFBHDYCCCABQcC2xQA2AgQgAUGAgICAeDYCAAyuAQsgAUEnNgIIIAFB3LbFADYCBCABQYCAgIB4NgIADK0BCyABQSc2AgggAUGDt8UANgIEIAFBgICAgHg2AgAMrAELIAFBJzYCCCABQaq3xQA2AgQgAUGAgICAeDYCAAyrAQsgAUEwNgIIIAFB0bfFADYCBCABQYCAgIB4NgIADKoBCyABQSk2AgggAUGBuMUANgIEIAFBgICAgHg2AgAMqQELIAFBNTYCCCABQaq4xQA2AgQgAUGAgICAeDYCAAyoAQsgAUEzNgIIIAFB37jFADYCBCABQYCAgIB4NgIADKcBCyABQR82AgggAUGSucUANgIEIAFBgICAgHg2AgAMpgELIAFBKDYCCCABQYi6xQA2AgQgAUGAgICAeDYCAAylAQsgAUElNgIIIAFBsLrFADYCBCABQYCAgIB4NgIADKQBCyABQRo2AgggAUHVusUANgIEIAFBgICAgHg2AgAMowELIAFBHDYCCCABQe+6xQA2AgQgAUGAgICAeDYCAAyiAQsgAUEXNgIIIAFBi7vFADYCBCABQYCAgIB4NgIADKEBCyADIARBCGo2AiAgA0EBNgI8IANB0LvFADYCOCADQgE3AkQgA0GzAzYCMCADIANBLGo2AkAgAyADQSBqNgIsIANBEGogA0E4ahCkCiABQQhqIANBGGooAgA2AgAgASADKQIQNwIADKABCyABQRs2AgggAUHYu8UANgIEIAFBgICAgHg2AgAMnwELIAFBFTYCCCABQfO7xQA2AgQgAUGAgICAeDYCAAyeAQsgAUEfNgIIIAFBiLzFADYCBCABQYCAgIB4NgIADJ0BCyADIARBBGo2AiAgA0EBNgI8IANBvLzFADYCOCADQgE3AkQgA0G3BDYCMCADIANBLGo2AkAgAyADQSBqNgIsIANBEGogA0E4ahCkCiABQQhqIANBGGooAgA2AgAgASADKQIQNwIADJwBCyABQRU2AgggAUHEvMUANgIEIAFBgICAgHg2AgAMmwELIAFBFjYCCCABQdm8xQA2AgQgAUGAgICAeDYCAAyaAQsgAyAEQQRqNgIgIANBATYCPCADQZi9xQA2AjggA0IBNwJEIANB5QA2AjAgAyADQSxqNgJAIAMgA0EgajYCLCADQRBqIANBOGoQpAogAUEIaiADQRhqKAIANgIAIAEgAykCEDcCAAyZAQsgAUEmNgIIIAFBoL3FADYCBCABQYCAgIB4NgIADJgBCyABQS02AgggAUHGvcUANgIEIAFBgICAgHg2AgAMlwELIAMgBEEIajYCICADQQI2AjwgA0GkvsUANgI4IANCATcCRCADQbMDNgIwIAMgA0EsajYCQCADIANBIGo2AiwgA0EQaiADQThqEKQKIAFBCGogA0EYaigCADYCACABIAMpAhA3AgAMlgELIAFBOzYCCCABQbS+xQA2AgQgAUGAgICAeDYCAAyVAQsgAUHMADYCCCABQe++xQA2AgQgAUGAgICAeDYCAAyUAQsgAUE6NgIIIAFBu7/FADYCBCABQYCAgIB4NgIADJMBCyABQcoANgIIIAFB9b/FADYCBCABQYCAgIB4NgIADJIBCyABQTE2AgggAUG/wMUANgIEIAFBgICAgHg2AgAMkQELIAFBFDYCCCABQfDAxQA2AgQgAUGAgICAeDYCAAyQAQsgAUEfNgIIIAFBhMHFADYCBCABQYCAgIB4NgIADI8BCyABQTI2AgggAUGjwcUANgIEIAFBgICAgHg2AgAMjgELIAMgBEEEajYCDCADIARBEGo2AiAgA0ECNgI8IANB9MHFADYCOCADQgI3AkQgA0HlADYCHCADQRM2AhQgAyADQRBqNgJAIAMgA0EgajYCGCADIANBDGo2AhAgA0EsaiADQThqEKQKIAFBCGogA0E0aigCADYCACABIAMpAiw3AgAMjQELIAFBHjYCCCABQcjCxQA2AgQgAUGAgICAeDYCAAyMAQsgAUElNgIIIAFB5sLFADYCBCABQYCAgIB4NgIADIsBCyADIAQ2AgwgAyAEQQxqNgIgIANBAzYCPCADQaDDxQA2AjggA0ICNwJEIANBEzYCHCADQRM2AhQgAyADQRBqNgJAIAMgA0EgajYCGCADIANBDGo2AhAgA0EsaiADQThqEKQKIAFBCGogA0E0aigCADYCACABIAMpAiw3AgAMigELIAFBGjYCCCABQbjDxQA2AgQgAUGAgICAeDYCAAyJAQsgAUHVADYCCCABQdLDxQA2AgQgAUGAgICAeDYCAAyIAQsgAUEyNgIIIAFBp8TFADYCBCABQYCAgIB4NgIADIcBCyABQdIANgIIIAFB2cTFADYCBCABQYCAgIB4NgIADIYBCyABQSw2AgggAUGrxcUANgIEIAFBgICAgHg2AgAMhQELIAFBMzYCCCABQdfFxQA2AgQgAUGAgICAeDYCAAyEAQsgAUEiNgIIIAFBisbFADYCBCABQYCAgIB4NgIADIMBCyABQTc2AgggAUGsxsUANgIEIAFBgICAgHg2AgAMggELIAFBKDYCCCABQePGxQA2AgQgAUGAgICAeDYCAAyBAQsgAUENNgIIIAFBi8fFADYCBCABQYCAgIB4NgIADIABCyABQRE2AgggAUGYx8UANgIEIAFBgICAgHg2AgAMfwsgAUEVNgIIIAFBqcfFADYCBCABQYCAgIB4NgIADH4LIAFBGTYCCCABQb7HxQA2AgQgAUGAgICAeDYCAAx9CyABQQ42AgggAUHXx8UANgIEIAFBgICAgHg2AgAMfAsgAUEaNgIIIAFB5cfFADYCBCABQYCAgIB4NgIADHsLIAMgBEEIajYCICADQQI2AjwgA0GcyMUANgI4IANCATcCRCADQbMDNgIwIAMgA0EsajYCQCADIANBIGo2AiwgA0EQaiADQThqEKQKIAFBCGogA0EYaigCADYCACABIAMpAhA3AgAMegsgAUElNgIIIAFBrMjFADYCBCABQYCAgIB4NgIADHkLIAFBLTYCCCABQdHIxQA2AgQgAUGAgICAeDYCAAx4CyABQTw2AgggAUH+yMUANgIEIAFBgICAgHg2AgAMdwsgAUE0NgIIIAFBusnFADYCBCABQYCAgIB4NgIADHYLIAFBKzYCCCABQe7JxQA2AgQgAUGAgICAeDYCAAx1CyABQS02AgggAUGZysUANgIEIAFBgICAgHg2AgAMdAsgAUEkNgIIIAFBxsrFADYCBCABQYCAgIB4NgIADHMLIAFBHTYCCCABQerKxQA2AgQgAUGAgICAeDYCAAxyCyABQSg2AgggAUGHy8UANgIEIAFBgICAgHg2AgAMcQsgAUEuNgIIIAFBr8vFADYCBCABQYCAgIB4NgIADHALIAFBKjYCCCABQd3LxQA2AgQgAUGAgICAeDYCAAxvCyABQTY2AgggAUGHzMUANgIEIAFBgICAgHg2AgAMbgsgAUE+NgIIIAFBvczFADYCBCABQYCAgIB4NgIADG0LIAFBMzYCCCABQfvMxQA2AgQgAUGAgICAeDYCAAxsCyABQSk2AgggAUGuzcUANgIEIAFBgICAgHg2AgAMawsgAUEZNgIIIAFB183FADYCBCABQYCAgIB4NgIADGoLIAFBOzYCCCABQfDNxQA2AgQgAUGAgICAeDYCAAxpCyABQT02AgggAUGrzsUANgIEIAFBgICAgHg2AgAMaAsgAUEtNgIIIAFB6M7FADYCBCABQYCAgIB4NgIADGcLIAMgBEEIajYCICADQQI2AjwgA0HEz8UANgI4IANCATcCRCADQbMDNgIwIAMgA0EsajYCQCADIANBIGo2AiwgA0EQaiADQThqEKQKIAFBCGogA0EYaigCADYCACABIAMpAhA3AgAMZgsgAUE6NgIIIAFB1M/FADYCBCABQYCAgIB4NgIADGULIAFB8AA2AgggAUGO0MUANgIEIAFBgICAgHg2AgAMZAsgAUE1NgIIIAFB/tDFADYCBCABQYCAgIB4NgIADGMLIAFByQA2AgggAUGz0cUANgIEIAFBgICAgHg2AgAMYgsgAUEpNgIIIAFB/NHFADYCBCABQYCAgIB4NgIADGELIAFBJjYCCCABQaXSxQA2AgQgAUGAgICAeDYCAAxgCyABQTs2AgggAUHL0sUANgIEIAFBgICAgHg2AgAMXwsgAUE4NgIIIAFBhtPFADYCBCABQYCAgIB4NgIADF4LIAMgBEEIajYCICADQQI2AjwgA0H008UANgI4IANCATcCRCADQbMDNgIwIAMgA0EsajYCQCADIANBIGo2AiwgA0EQaiADQThqEKQKIAFBCGogA0EYaigCADYCACABIAMpAhA3AgAMXQsgAUEnNgIIIAFBhNTFADYCBCABQYCAgIB4NgIADFwLIAFBGzYCCCABQavUxQA2AgQgAUGAgICAeDYCAAxbCyABQSE2AgggAUHG1MUANgIEIAFBgICAgHg2AgAMWgsgAUElNgIIIAFB59TFADYCBCABQYCAgIB4NgIADFkLIAFBzgA2AgggAUGM1cUANgIEIAFBgICAgHg2AgAMWAsgAUEdNgIIIAFB2tXFADYCBCABQYCAgIB4NgIADFcLIAFBOTYCCCABQffVxQA2AgQgAUGAgICAeDYCAAxWCyABQTk2AgggAUGw1sUANgIEIAFBgICAgHg2AgAMVQsgAUE5NgIIIAFB6dbFADYCBCABQYCAgIB4NgIADFQLIAFBLjYCCCABQaLXxQA2AgQgAUGAgICAeDYCAAxTCyADIARBCGo2AiAgA0ECNgI8IANB+NfFADYCOCADQgE3AkQgA0GzAzYCMCADIANBLGo2AkAgAyADQSBqNgIsIANBEGogA0E4ahCkCiABQQhqIANBGGooAgA2AgAgASADKQIQNwIADFILIAFBPzYCCCABQYjYxQA2AgQgAUGAgICAeDYCAAxRCyABQTY2AgggAUHH2MUANgIEIAFBgICAgHg2AgAMUAsgAyAEQQhqNgIgIANBAjYCPCADQdzZxQA2AjggA0IBNwJEIANBswM2AjAgAyADQSxqNgJAIAMgA0EgajYCLCADQRBqIANBOGoQpAogAUEIaiADQRhqKAIANgIAIAEgAykCEDcCAAxPCyABQcYANgIIIAFB7NnFADYCBCABQYCAgIB4NgIADE4LIAFBKDYCCCABQbLaxQA2AgQgAUGAgICAeDYCAAxNCyADIARBBGo2AiAgA0ECNgI8IANBgNvFADYCOCADQgE3AkQgA0G4BDYCMCADIANBLGo2AkAgAyADQSBqNgIsIANBEGogA0E4ahCkCiABQQhqIANBGGooAgA2AgAgASADKQIQNwIADEwLIAFBITYCCCABQZDbxQA2AgQgAUGAgICAeDYCAAxLCyABQRY2AgggAUGx28UANgIEIAFBgICAgHg2AgAMSgsgAUEUNgIIIAFBx9vFADYCBCABQYCAgIB4NgIADEkLIAFBHTYCCCABQdvbxQA2AgQgAUGAgICAeDYCAAxICyABQTE2AgggAUH428UANgIEIAFBgICAgHg2AgAMRwsgAUEzNgIIIAFBqdzFADYCBCABQYCAgIB4NgIADEYLIAMgBEEIajYCDCADIARBEGo2AiAgA0EDNgI8IANBgN3FADYCOCADQgI3AkQgA0GzAzYCHCADQbMDNgIUIAMgA0EQajYCQCADIANBIGo2AhggAyADQQxqNgIQIANBLGogA0E4ahCkCiABQQhqIANBNGooAgA2AgAgASADKQIsNwIADEULIAMgBEEIajYCICADQQI2AjwgA0Gw3cUANgI4IANCATcCRCADQbMDNgIwIAMgA0EsajYCQCADIANBIGo2AiwgA0EQaiADQThqEKQKIAFBCGogA0EYaigCADYCACABIAMpAhA3AgAMRAsgAUE/NgIIIAFBwN3FADYCBCABQYCAgIB4NgIADEMLIAFBxQA2AgggAUH/3cUANgIEIAFBgICAgHg2AgAMQgsgAUEkNgIIIAFBxN7FADYCBCABQYCAgIB4NgIADEELIAFBIzYCCCABQejexQA2AgQgAUGAgICAeDYCAAxACyABQSs2AgggAUGL38UANgIEIAFBgICAgHg2AgAMPwsgAUE4NgIIIAFBtt/FADYCBCABQYCAgIB4NgIADD4LIAFBzgA2AgggAUHu38UANgIEIAFBgICAgHg2AgAMPQsgAyAEQQhqNgIgIANBAjYCPCADQfTgxQA2AjggA0IBNwJEIANBswM2AjAgAyADQSxqNgJAIAMgA0EgajYCLCADQRBqIANBOGoQpAogAUEIaiADQRhqKAIANgIAIAEgAykCEDcCAAw8CyABQTo2AgggAUGE4cUANgIEIAFBgICAgHg2AgAMOwsgAUEyNgIIIAFBvuHFADYCBCABQYCAgIB4NgIADDoLIAFBIzYCCCABQfDhxQA2AgQgAUGAgICAeDYCAAw5CyABQSk2AgggAUGT4sUANgIEIAFBgICAgHg2AgAMOAsgAUE5NgIIIAFBvOLFADYCBCABQYCAgIB4NgIADDcLIAFB1gA2AgggAUH14sUANgIEIAFBgICAgHg2AgAMNgsgAUE/NgIIIAFBy+PFADYCBCABQYCAgIB4NgIADDULIAFBKjYCCCABQYrkxQA2AgQgAUGAgICAeDYCAAw0CyABQRM2AgggAUG05MUANgIEIAFBgICAgHg2AgAMMwsgAUENNgIIIAFBx+TFADYCBCABQYCAgIB4NgIADDILIAFBDzYCCCABQdTkxQA2AgQgAUGAgICAeDYCAAwxCyABQdMANgIIIAFB4+TFADYCBCABQYCAgIB4NgIADDALIAFBxgA2AgggAUG25cUANgIEIAFBgICAgHg2AgAMLwsgAUEpNgIIIAFB/OXFADYCBCABQYCAgIB4NgIADC4LIAFBMjYCCCABQaXmxQA2AgQgAUGAgICAeDYCAAwtCyABQSw2AgggAUHX5sUANgIEIAFBgICAgHg2AgAMLAsgAUEwNgIIIAFBg+fFADYCBCABQYCAgIB4NgIADCsLIAFBPTYCCCABQbPnxQA2AgQgAUGAgICAeDYCAAwqCyABQR42AgggAUHw58UANgIEIAFBgICAgHg2AgAMKQsgAUEyNgIIIAFBjujFADYCBCABQYCAgIB4NgIADCgLIAFBJjYCCCABQcDoxQA2AgQgAUGAgICAeDYCAAwnCyABQSA2AgggAUHm6MUANgIEIAFBgICAgHg2AgAMJgsgAUE4NgIIIAFBhunFADYCBCABQYCAgIB4NgIADCULIAFBHDYCCCABQb7pxQA2AgQgAUGAgICAeDYCAAwkCyABQSI2AgggAUHa6cUANgIEIAFBgICAgHg2AgAMIwsgAUE6NgIIIAFB/OnFADYCBCABQYCAgIB4NgIADCILIAFBMzYCCCABQbbqxQA2AgQgAUGAgICAeDYCAAwhCyABQcQANgIIIAFB6erFADYCBCABQYCAgIB4NgIADCALIAMgBEEIajYCDCADIARBEGo2AiAgA0EDNgI8IANB0OvFADYCOCADQgI3AkQgA0GzAzYCHCADQbMDNgIUIAMgA0EQajYCQCADIANBIGo2AhggAyADQQxqNgIQIANBLGogA0E4ahCkCiABQQhqIANBNGooAgA2AgAgASADKQIsNwIADB8LIAFBOjYCCCABQejrxQA2AgQgAUGAgICAeDYCAAweCyABQS42AgggAUGi7MUANgIEIAFBgICAgHg2AgAMHQsgAUEtNgIIIAFB0OzFADYCBCABQYCAgIB4NgIADBwLIAMgBEEIajYCICADQQI2AjwgA0Gs7cUANgI4IANCATcCRCADQbMDNgIwIAMgA0EsajYCQCADIANBIGo2AiwgA0EQaiADQThqEKQKIAFBCGogA0EYaigCADYCACABIAMpAhA3AgAMGwsgAyAEQQhqNgIgIANBAjYCPCADQZDuxQA2AjggA0IBNwJEIANBswM2AjAgAyADQSxqNgJAIAMgA0EgajYCLCADQRBqIANBOGoQpAogAUEIaiADQRhqKAIANgIAIAEgAykCEDcCAAwaCyADIARBCGo2AiAgA0ECNgI8IANB8O7FADYCOCADQgE3AkQg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KAKoBCEHDAILIAJBkAJqIAJBqARqEO4OIAIoApACIQcgAi0AqAIiC0ECRg0BIAJBhARqIAJBpAJqKAIANgIAIAJB/ANqIAJBnAJqKQIANwIAIAJBjARqIAJBrAJqKAAANgAAIAIgAikClAI3AvQDIAIgAigAqQI2AIkEIAIgCzoAiAQgAiAHNgLwAyACLQC4ASILQQpGBH8gAkEIahCICCACQQE6AIgEIAIgByACKAKsASILIAcgC0sbrUIghiAHIAsgByALSRuthDcD8AMgAi0AuAEFIAsLQQlHBEAgAiACKQOwATcDkAQgAkGcBGogAkEIaiILENkZIAJBATYClAIgAkGcssQANgKQAiACQgE3ApwCIAJBlgM2AsQEIAJBCToAzwQgAiACQcAEajYCmAIgAiACQcgEajYCwAQgAiACQc8EajYCyAQgAkGoBGoiByACQZACahCZCiACQbwEaiACQaQEaigCADYCACACIAIpApwENwK0BCACQZAEaiAHEJEQIQcgAi0AuAFBogFHDQEgCxCDDSEQIAsQiAggCyAQEMQQDAELIAJBCGoQiAgCfyAQQRxHBEAgAkHYBGogAkHwA2oQpgwgAigC1AQhEEEADAELIAI1AqwBISAgAkGYAmogAkHwA2oQpgwgAkEANgKQAgJ/QanG6AAtAAAaQTBBCBDvGyIHBEAgByACQZACakEw/AoAACAHDAELQQhBMBCiHwALIQcgAkEANgLoBCACIAc2AuQEIAIgHjcC3AQgAiAgQiCGIB+ENwLUBCAfpyEQQQILIRMgAkHoAWogAkHYBGpBKPwKAAAgAkGQAmoiByACQQhqQeAB/AoAACABELoIIAEgB0HgAfwKAAACQCABKAJsIhRBAnFFDQAgASgCZCILKAIIIgdB/////wdPDSYgCygCFEUNACAHDScgC0F/NgIIIAEoAmAiBygCCA0oIAdBfzYCCCALKAIQIRogB0EMaiALKAIUIhIQyBggEkECdCIbBEAgBygCECAHKAIUQQJ0aiAaIBv8CgAACyALQQA2AhQgByAHKAIUIBJqNgIUIAcgBygCCEEBajYCCCALIAsoAghBAWo2AggLIA8gEDYCBCAPIBM2AgAgASAUQX5xIBlBAXFyNgJsIA9BCGogAkHoAWpBKPwKAAAMAgsgAkGABGoQ8QwLIA9BBzYCACAHELEE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IANB3ABqKAIANgIAIAMgAykCVDcC9AEgA0HIAGogAhCRECECIAEtALABQaIBRw0BIAEQgw0hBCABEIgIIAEgBBDEEAwBCyABEIgIIANBiAJqIQQjAEEwayICJAAgATUCqAEhHSACQSBqIAEQ3wggAigCICEIAkAgAikDKCIeUARAIARBAjoAKiAEIAg2AgAMAQsgAiAeNwMYIAIgAigCJDYCFCACIAg2AhAgAkHgADoAICACQQhqIAEgAkEgakH9ssQAQQIQwwsgAigCDCEIIAIoAghBAXEEQCAEQQI6ACogBCAINgIAIAJBGGoQ8QwMAQsgATUCpAEhHiAEQQhqIAJBEGoQ7g4gBEEANgIwIAQgCDYCLCAEQQA6ACogBEEAOwEoIAQgHkIghiAdhDcDAAsgAkEwaiQAIAMoAogCIQIgAy0AsgIiCEECRwRAIANB4ABqQQRyIARBBHJBJvwKAAAgA0GQAWogA0G4AmopAAA3AAAgAyADKQCzAjcAiwEgAyAIOgCKASADIAI2AmBBACEIAkACQAJAAkACQAJAAkACQAJAIAEtALABIgJB9QBGBEAgARCICCADIAEpA6gBPgKIAiADQRBqIAEgBBDaDCADKAIUIQggAygCEEEBcQ0BIAEtALABIQILIAMgCDYCnAEgAkH/AXFBBUYNASADIAEpA6gBNwOgASADQawBaiABENkZIANBATYCjAIgA0GcssQANgKIAiADQgE3ApQCIANBlgM2AswCIANBBToAzAEgAyADQcgCajYCkAIgAyADQYACajYCyAIgAyADQcwBajYCgAIgA0HoAWoiAiADQYgCahCZCiADQfwBaiADQbQBaigCADYCACADIAMpAqwBNwL0ASADQaABaiACEJEQIQIgAS0AsAFBogFGDQIMBgsgBkEENgIIIAYgCDYCAAwHCyABEIgIQQAhAkEDIQQgAS0AsAEiCkEKaw4FAgMDAQEDCyABEIMNIQQgARCICCABIAQQxBAMAwsgARCICCABLQCwAUEKRwRAIAMgASkDqAE3A7gBIANBwAFqIAEQ2RkgA0EBNgKMAiADQZyyxAA2AogCIANCATcClAIgA0GWAzYCzAIgA0EKOgDMASADIANByAJqNgKQAiADIANBgAJqNgLIAiADIANBzAFqNgKAAiADQegBaiICIANBiAJqEJkKIANB/AFqIANByAFqKAIANgIAIAMgAykCwAE3AvQBIANBuAFqIAIQkRAhAiABLQCwAUGiAUYEQCABEIMNIQQgARCICCABIAQQxBALIAZBBDYCCCAGIAI2AgAMBAtBAUECIApBDUYbIQILIAEQiAggAiEECyADQQk6AIgCIANBCGogASADQYgCahCRCSADKAIMIQIgAygCCEEBcQRAIAZBBDYCCCAGIAI2AgAMAgsgAyACNgLMAQJAAkAgARDnFEUEQCADIAEpA6gBNwPIAiADQegBaiABENkZIANBiAJqIgIQtw4gA0GcAmogA0HwAWooAgA2AgAgAyADKQLoATcClAIgA0HIAmogAhCRECEIIAEtALABQaIBRw0BIAEQgw0hAiABEIgIIAEgAhDEEAwBCyABLQCwAUEDRg0BIAMgASkDqAE3A9ABIANB3AFqIAEQ2RkgA0EBNgKMAiADQZyyxAA2AogCIANCATcClAIgA0GWAzYCzAIgA0EDOgCHAiADIANByAJqNgKQAiADIANBgAJqNgLIAiADIANBhwJqNgKAAiADQegBaiICIANBiAJqEJkKIANB/AFqIANB5AFqKAIANgIAIAMgAykC3AE3AvQBIANB0AFqIAIQkRAhCCABLQCwAUGiAUcNACABEIMNIQIgARCICCABIAIQxBALIAZBBDYCCCAGIAg2AgAgA0HMAWoQ7hkMAgsgARCICCABNQKkASEdIANBjAJqIANB4ABqQTj8CgAAIAYgBzYCCCAGIBxC/////w+DIB1CIIaENwMAIAZBDGogA0GIAmpBPPwKAAAgBiACNgJQIAYgBDYCTCAGIAg2AkgMBgsgBkEENgIIIAYgAjYCAAsgA0GcAWoQ7hkLIANB4ABqEJ4UDAMLIAZBBDYCCCAGIAI2AgAMAgsgBkEENgIIIAYgAjYCAAwBCyAGQQQ2AgggBiACNgIACyADQdACaiQAIAUCfyAFKALIAUEERgRAIAUgBSgCwAE2ApwCQRQMAQsgBUHUAGogBUHAAWpB2AD8CgAAIAVBmAJqQQRyIAVB0ABqQdwA/AoAAEEQCzYCmAIgBUEYaiAFQZgCahCGDyAFKAIcIQIgBSgCGCEEDBILIAVBmAJqIAEQwQggBSgCmAINCSAFIAUpApwCNwNIAkAgAS0AsQFFBEAgAS0AsAFBhAFGDQELIAUpA0ghHEH4AEEIEI0ZIgIgHDcCBCACQQE2AgAMEAsgBUHAAWogASAMQQAgBUHIAGoQ3gsgBQJ/IAUoAtABQQJGBEAgBSAFKALAATYCnAJBFAwBCyAFQdQAaiAFQcABakHAAPwKAAAgBUGYAmpBBHIgBUHQAGpBxAD8CgAAQRILNgKYAiAFQRBqIAVBmAJqEIYPIAUoAhQhAiAFKAIQIQQMEQsgARCICCABLQCwAUHBAGtB/wFxQQJPBEAgBUGYAmoiAkEEciABENkZIAVBITYCrAIgBUGatsQANgKoAiAFQbCAgIB4NgKYAiAFIAEpA6gBNwNQIAVB0ABqIAIQkRAhAiABLQCwAUGiAUcNECABEIMNIQQgARCICCABIAQQxBAMEAsgBUGYAmogARD+AyAFKAKYAiICQQdGDQggBSkDsAIhHCAFKQOgAiEeIAUrA6gCISECQAJAAkAgAkEDaw4CAQIAC0GMtMQAQShB3LbEABCcFAALIAUgITkDMCAFQdAAaiICELgOAkAgHFBFBEAgBSAcNwOYAiAFIAVBmAJqIgQQ4g4gAiAFKAIAIgIgAiAFKAIEahCFESAEEPEMDAELIAVBATYCnAIgBUGcssQANgKYAiAFQgE3AqQCIAVBmAM2AsQBIAUgBUHAAWo2AqACIAUgBUEwajYCwAEgBUHQAGogBUGYAmoQiB8NBSAFKwMwISELIAVBoAJqIAVB2ABqKAIANgIAIAUgBSkCUDcDmAIgBUHAAWogBUGYAmoQjx8gBSkDwAEhHCAhmiEhQQAhBAwICyAFICG9pyICNgI8IAVB0ABqIgQQuA4CQCAcUEUEQCAFIBw3A5gCIAVBCGogBUGYAmoiAxDiDiAEIAUoAggiBCAEIAUoAgxqEIURIAMQ8QwMAQsgBUEBNgKcAiAFQZyyxAA2ApgCIAVCATcCpAIgBUGZAzYCxAEgBSAFQcABajYCoAIgBSAFQTxqNgLAASAFQdAAaiAFQZgCahCIHw0FIAUoAjwhAgsgBUGgAmoiBCACQQhqKAIANgIAIAVBwgFqIgMgAkEPai0AADoAACAFIAIpAgA3A5gCIAUgAi8ADTsBwAEgAi0ADCEGQRBBBBCNGSICQQIgBms6AAwgAkEIaiAEKAIANgIAIAIgBSkDmAI3AgAgAiAFLwHAATsADSACQQ9qIAMtAAA6AAAgBCAFQdgAaigCADYCACAFIAUpAlA3A5gCIAVBwAFqIAVBmAJqEI8fIAUgAjYCQCAFKQPAASEcIAUrA0AhISAFKAI8QRBBBBD4HEEDIQQMBwsgAkH2AEcNACABEMgFIgIEQCACLQAAQegARg0CCyABLQCwASECCwJAAkACQAJAAkACQAJAAkACQAJAAkAgAkH/AXEiBEGGAU0EQAJAIARB9ABrDgcDEBAQEAUEAAsgBEHkAEYNAUEIIARB7gBGDRAaDA8LAkAgBEGVAWsOBggJDwsPCgALIARBhwFrDgMEBQYOC0EKDA4LQQAMDQtBBAwMC0EFDAsLQQsMCgtBAgwJC0EDDAgLQQYMBwtBBwwGC0EBDAULQQkMBAsgARCICCAFQZgCaiABEMEIIAUoApgCDQUgBSAFKQKcAjcCKEEBIQQgBUHQAGogASAMQQEgBUEoahDeCyAFKAJgQQJGBEAgBSgCUCECDA4LIAVBmAJqIgQgBUHQAGpBwAD8CgAAQanG6AAtAAAaQfgAQQgQ7xsiAkUNDyACQRI2AgAgAkEIaiAEQfAA/AoAAAwLC0GAvMQAQSsgBUGYAmpB3LrEAEG8tsQAEPAMAAtBgLzEAEErIAVBmAJqQdy6xABBzLbEABDwDAALQQ1BDCACQf8BcUGDAUciBxsLIQMgARDIBSICBH8gAi0AAEEIRgVBAAsgB3JBAUYEQCAFQdAAaiEEIwBB4ABrIgIkACABKQOoASEcIAJBMGogARDvCAJAIAItADBBAUYEQCACKAI0IQMgBEECNgIIIAQgAzYCAAwBCyACLQAxIAJBMGogAUEBEKYCIAIoAjQhAyACKAIwIghBAkYEQCAEQQI2AgggBCADNgIADAELIAJBKGogAkHQAGopAwA3AwAgAkEgaiACQcgAaikDADcDACACQRhqIAJBQGspAwA3AwAgAiACKQM4NwMQIAIgAzYCDCACIAg2AghBACEDAkAgAS0AsQENACABLQCwAUESRw0AIAIgARCBDSACKAIEIQMgAigCAEEBcQRAIARBAjYCCCAEIAM2AgAgAkEIahCNFgwCCyABEIgIC0EBcQRAIAIgHD4CWCACIAE1AqQBPgJcIAJBqIGAgHg2AjAgASACQdgAaiACQTBqEM0XCyABNQKkASEdIARBCGogAkEIakEo/AoAACAEIAM2AjAgBCAcQv////8PgyAdQiCGhDcDAAsgAkHgAGokACAFKAJYQQJGDQYgBUGYAmoiAyAEQTj8CgAAQanG6AAtAAAaQfgAQQgQ7xsiAkUNDCACQQM2AgAgAkEIaiADQfAA/AoAAAwICyABEIgIQQAhBEGpxugALQAAGiABKQOgASEcQfgAQQgQ7xsiAgRAIAIgAzYCDCACQQA2AgAgAiAcQoCAgIBwgyAdhDcCBAwKCwwLCyABNQKkASEfQfgAQQgQjRkiAiAcNwMoIAIgITkDICACIB43AxggAiAENgIQIAJBETYCACACIB9CIIYgHYQ3AwgMBgsgBSgCnAIhAgwGCyAFQZgCaiICQQRyIAEQ2RkgBUGFATYCrAIgBUGVtcQANgKoAiAFQbCAgIB4NgKYAiAFIAEpA6gBNwNQIAVB0ABqIAIQkRAhAiABLQCwAUGiAUcNBSABEIMNIQQgARCICCABIAQQxBAMBQsgBSgCmAIhAgwECyAFQdAAaiEKIwBB4ABrIgQkACABNQKoASEcAkACQAJAAkAgAS0AsAFBGkcEQCAEQUBrIAEQ/gMgBCgCRCEHIAQoAkAiA0EHRg0BIARBOGoiAiAEQdgAaikDADcDACAEQTBqIARB0ABqKQMANwMAIAQgBCkDSDcDKCAEIAc2AiQgBCADNgIgAkACQAJAAkACQCADDgUBBAACAwALQYy0xABBKEHEtMQAEJwUAAsgBEEQaiACKQMANwMAIAQgBCkDMDcDCEEBIQMMBQsgBEEQaiACKQMANwMAIAQgBCkDMDcDCEEAIQMMBAsgBEEQaiACKQMANwMAIAQgBCkDMDcDCEEDIQMMAwsgBCgCLCEIIAQoAighBiAEQSBqEM0OQQIhAwwDCyAEQUBrIQgjAEGAAWsiAyQAIAE1AqgBIR0gARCICCADQdgAaiEHIwBB0AFrIgIkACACQQA2AhQgAkKAgICAwAA3AgwgAkGYAWogARC2BwJAAkAgAi0AoAEiDEECRgRAIAIoApgBIQYgB0GAgICAeDYCACAHIAY2AgQMAQsgAkEgaiINIAJBqQFqKQAANwMAIAJBJ2oiCyACQbABaikAADcAACACIAIpAKEBNwMYQanG6AAtAAAaIAIoApwBIQ8gAigCmAEhEQJAQSBBCBDvGyIGBEAgBiAMOgAIIAYgDzYCBCAGIBE2AgAgBiACKQMYNwAJIAZBEWogDSkDADcAACAGQRhqIAspAAA3AAAgAkEBNgI8IAIgBjYCOCACQQE2AjQgDEEBcUUEQCACQaEBaiENA0AgAS0AsAFBPUcEQCACIAEpA6gBNwNAIAJBzABqIAEQ2RkgAkEBNgKcASACQZyyxAA2ApgBIAJCATcCpAEgAkGWAzYCjAEgAkE9OgCXASACIAJBiAFqNgKgASACIAJBkAFqNgKIASACIAJBlwFqNgKQASACQfAAaiIGIAJBmAFqEJkKIAJBhAFqIAJB1ABqKAIANgIAIAIgAikCTDcCfCACQUBrIAYQkRAhBiABLQCwAUGiAUcNBCABEIMNIQwgARCICCABIAwQxBAMBAsgARCICCACIAEpA6gBPgKYASACIAEgAkGYAWoQ2gwgAigCBCEGIAIoAgBBAXENAyACKAIUIgwgAigCDEYEQCACQQxqQZC3xAAQyRILIAIoAhAgDEECdGogBjYCACACIAxBAWo2AhQgAS0AsAFBA0cEQCACIAEpA6gBNwNYIAJB5ABqIAEQ2RkgAkEBNgKcASACQZyyxAA2ApgBIAJCATcCpAEgAkGWAzYCjAEgAkEDOgCXASACIAJBiAFqNgKgASACIAJBkAFqNgKIASACIAJBlwFqNgKQASACQfAAaiIGIAJBmAFqEJkKIAJBhAFqIAJB7ABqKAIANgIAIAIgAikCZDcCfCACQdgAaiAGEJEQIQYgAS0AsAFBogFHDQQgARCDDSEMIAEQiAggASAMEMQQDAQLIAEQiAggAkGYAWogARC2ByACKAKYASEGIAItAKABIgtBAkYNAyACQcABaiIRIA1BCGopAAA3AwAgAkHHAWoiECANQQ9qKQAANwAAIAIgDSkAADcDuAEgAigCnAEhEiACKAI8Ig8gAigCNEYEQCACQTRqQaC3xAAQzxILIAIoAjggD0EFdGoiDCALOgAIIAwgEjYCBCAMIAY2AgAgDCACKQO4ATcACSAMQRFqIBEpAwA3AAAgDEEYaiAQKQAANwAAIAIgD0EBajYCPCALQQFxRQ0ACwsgAkGgAWoiBiACQRRqKAIANgIAIAJBrAFqIAJBPGooAgA2AgAgByACKQIMNwIAIAIgAikCNDcCpAEgB0EIaiAGKQMANwIAIAdBEGogAkGoAWopAwA3AgAMAwsMDAsgB0GAgICAeDYCACAHIAY2AgQgAkE0aiIGEJMTIAYQ4h0LIAJBDGoiBhDPFCAGEOEdCyACQdABaiQAIAMoAlwhAgJAIAMoAlgiBkGAgICAeEYEQCAIQYCAgIB4NgIIIAggAjYCAAwBCyADKAJgIQcgA0EgaiIMIANB7ABqKAIANgIAIAMgAykCZDcDGCADIAc2AhQgAyACNgIQIAMgBjYCDAJAIAEtALABQRpHBEAgAyABKQOoATcDKCADQTRqIAEQ2RkgA0EBNgJcIANBnLLEADYCWCADQgE3AmQgA0GWAzYCdCADQRo6AH8gAyADQfAAajYCYCADIANB+ABqNgJwIAMgA0H/AGo2AnggA0FAayICIANB2ABqEPcEIANB1ABqIANBPGooAgA2AgAgAyADKQI0NwJMIANBKGogAhCRECECIAEtALABQaIBRw0BIAEQgw0hBiABEIgIIAEgBhDEEAwBCyABEIgIIAggAykCDDcCCCAIQRBqIANBFGooAgA2AgAgCCADKQMYNwIUIAhBHGogDCgCADYCACAIIAE1AqQBQiCGIB2ENwIADAELIAhBgICAgHg2AgggCCACNgIAIANBGGoiAhCTEyACEOIdIANBDGoiAhDPFCACEOEdCyADQYABaiQAIAQoAkAhByAEKAJIIghBgICAgHhHBEAgBEEQaiAEQdQAaikCADcDACAEQRhqIARB3ABqKAIANgIAIAQgBCkCTDcDCCAEKAJEIQZBBCEDDAMLCyAKQQU2AgggCiAHNgIADAILIAQoAiwhCCAEKAIoIQYLIAogCDYCFCAKIAY2AhAgCiAHNgIMIAogAzYCCCAKIAQpAwg3AxggCkEgaiAEQRBqKQMANwMAIApBKGogBEEYaigCADYCACAKIAE1AqQBQiCGIByENwMACyAEQeAAaiQAIAUoAlhBBUcNAQsgBSgCUCECDAILIAVBmAJqIgQgBUHQAGpBMPwKAABBqcboAC0AABpB+ABBCBDvGyICRQ0EIAJBETYCACACQQhqIARB8AD8CgAAC0EAIQQMAQtBASEECyAWIAQ2AgAgFiACNgIEIAVBkANqJAAMAgtBCEEgEKIfAAtBCEH4ABCiHwALQQEhAyAJKAIMIQICQCAJKAIIQQFxDQBBACEDIAEtALEBDQAgAS0AsAFBBEcNAAJAAkADQAJAIAEQiAgCfwJAIAEtALABQQVHBEAgCSABKQOoAT4CSCAJIAEgCUHIAGoiAxDaDCAJKAIEIQQgCSgCAEEBcQ0GIAkgBDYCFCABLQCwAUEFRg0BIAkgASkDqAE3AxggCUEkaiABENkZIAlBATYCTCAJQZyyxAA2AkggCUIBNwJUIAlBlgM2AmQgCUEFOgBvIAkgCUHgAGo2AlAgCSAJQegAajYCYCAJIAlB7wBqNgJoIAlBMGoiBCADEJkKIAlBxABqIAlBLGooAgA2AgAgCSAJKQIkNwI8IAlBGGogBBCRECEEIAEtALABQaIBRg0DDAULIAEQiAggAiACKAIAQQJ0QaTDxABqKAIAajUCACEcQanG6AAtAAAaIAEpA6ABIR1B+ABBCBDvGyIERQ0MIAQgAjYCDCAEQQY2AgAgBCAdQoCAgIBwgyAchDcCBCAEDAELIAEQiAggAiACKAIAQQJ0QaTDxABqKAIAajUCACEcQanG6AAtAAAaIAEpA6ABIR1B+ABBCBDvGyIDRQ0LIAMgBDYCFCADIAI2AhAgAyAXOgAMIANBDzYCACADIB1CgICAgHCDIByENwIEIAMLIQJBACEDIAEtALEBDQQgAS0AsAFBBEYNAQwECwsgARCDDSEDIAEQiAggASADEMQQCyAJQRRqKAIAIgEQwwMgAUH4AEEIEPgcCyACEMMDIAJB+ABBCBD4HEEBIQMgBCECCyAVIAI2AgQgFSADNgIAIAlB8ABqJAAgDigCDCECIA4oAggMBAtBASECDAELQQIhAgsgDkGAAWohAyMAQZABayIEJAAgAS0AsAEhBSABKQOoASEcAkACQAJAAkACQAJAAkAgAkEBaw4CAQIACyAFQYUBRw0EDAMLIAVBmQFGDQIgBCAcNwMIIARBFGogARDZGSAEQQE2AmwgBEGcssQANgJoIARCATcCdCAEQZYDNgKEASAEQZkBOgCPASAEIARBgAFqNgJwIAQgBEGIAWo2AoABIAQgBEGPAWo2AogBIARB0ABqIgIgBEHoAGoQmQogBEHkAGogBEEcaigCADYCACAEIAQpAhQ3AlwgBEEIaiACEJEQIQIgAS0AsAFBogFHDQEgARCDDSEFIAEQiAggASAFEMQQDAELIAVBkQFGDQEgBCAcNwM4IARBxABqIAEQ2RkgBEEBNgJsIARBnLLEADYCaCAEQgE3AnQgBEGWAzYChAEgBEGRAToAjwEgBCAEQYABajYCcCAEIARBiAFqNgKAASAEIARBjwFqNgKIASAEQdAAaiICIARB6ABqEJkKIARB5ABqIARBzABqKAIANgIAIAQgBCkCRDcCXCAEQThqIAIQkRAhAiABLQCwAUGiAUYEQCABEIMNIQUgARCICCABIAUQxBALIANBAzYCCCADIAI2AgAMAwsgA0EDNgIIIAMgAjYCAAwCCyABEIgIIAQgARD1BCAEKAIEIQUgBCgCAEEBcQRAIANBAzYCCCADIAU2AgAMAgsgAyAFNgIMIAMgAjYCCCADIBxC/////w+DIAE1AqQBQiCGhDcCAAwBCyAEIBw3AyAgBEEsaiABENkZIARBATYCbCAEQZyyxAA2AmggBEIBNwJ0IARBlgM2AoQBIARBhQE6AI8BIAQgBEGAAWo2AnAgBCAEQYgBajYCgAEgBCAEQY8BajYCiAEgBEHQAGoiAiAEQegAahCZCiAEQeQAaiAEQTRqKAIANgIAIAQgBCkCLDcCXCAEQSBqIAIQkRAhAiABLQCwAUGiAUYEQCABEIMNIQUgARCICCABIAUQxBALIANBAzYCCCADIAI2AgALIARBkAFqJAAgDigCgAEhASAOKAKIAUEDRgRAIAEhAkEBDAILIA5BGGogDkGMAWooAgA2AgAgDiAOKQKEATcDEEGpxugALQAAGkH4AEEIEO8bIgJFDQIgAiABNgIEIAJBDjYCACACQQhqIA5BEGpB8AD8CgAAC0EACzYCACAAIAI2AgQgDkHAAWokAA8LQQhB+AAQoh8AC0HYwcQAENcRAAtB6MHEABDWEQALQfjBxAAQ1hEAC9cDAgN+BX8jAEEQayIHJAAgB0EIaiAAENEdIAcoAgghBQJ+IAcoAgwiBkERTwRAIAZBEGshCEEAIQBCxObBm+DF4owTIQJC05GMrYjR2p8kIQMDQCACIAAgBWoiCUEIaikAAELQ4/zMooTOhKR/hSICQv////8PgyAJKQAAIAOFIgNCIIh+QiCJIANC/////w+DIAJCIIh+hSECIQMgAEEQaiIAIAhJDQALIAUgCGoiACkACCAChSECIAApAAAgA4UMAQsgBkEHTQRAAkAgBkEDTQRAIAYNAULE5sGb4MXijBMhAkLTkYytiNHanyQMAwsgBSAGakEEazUAAELE5sGb4MXijBOFIQIgBTUAAELTkYytiNHanySFDAILIAUgBkEBdmoxAAAgBSAGakEBazEAAEIIhoRCxObBm+DF4owThSECIAUxAABC05GMrYjR2p8khQwBCyAFIAZqQQhrKQAAQsTmwZvgxeKME4UhAiAFKQAAQtORjK2I0dqfJIULIQMgASABKAIAIAatIANC/////w+DIAJCIIh+hSACQv////8PgyADQiCIfkIgiYUiBKdqQd3L3Z55bCAEQiCIp2pBycH4/QBsQaPuuZwEajYCACAHQRBqJAALkQMBB38jAEEQayIEJAACQAJAAkACQCABKAIEIgIEQCABKAIAIQcgAkEDcSEFAkAgAkEESQRAQQAhAgwBCyAHQRxqIQMgAkF8cSEIQQAhAgNAIAMoAgAgA0EIaygCACADQRBrKAIAIANBGGsoAgAgAmpqamohAiADQSBqIQMgCCAGQQRqIgZHDQALCyAFBEAgBkEDdCAHakEEaiEDA0AgAygCACACaiECIANBCGohAyAFQQFrIgUNAAsLIAEoAgxFDQIgAkEPSw0BIAcoAgQNAQwDC0EAIQIgASgCDEUNAgsgAkEAIAJBAEobQQF0IQILQQAhBSACQQBOBEAgAkUNAUGpxugALQAAGkEBIQUgAkEBEO8bIgMNAgsgBSACQdD35gAQtBoAC0EBIQNBACECCyAEQQA2AgggBCADNgIEIAQgAjYCACAEQdD25gAgARDOA0UEQCAAIAQpAgA3AgAgAEEIaiAEQQhqKAIANgIAIARBEGokAA8LQaD45gBB1gAgBEEPakGQ+OYAQZD55gAQ8AwAC64DAgN/An4jAEEwayIDJAACQAJAAkACQCABKQIAIgenIgRFBEAgAigCCCEEIAIoAgQhBQwBCyADQSBqIAIoAgQiBSAEIAIoAggiBCgCTBEDACADLQAgQQRGDQAgAykDICIGQv8Bg0IEUg0BCyADQQA2AhQgA0EoaiADQRxqKAIANgIAIAMgAykCFDcDICADQQhqIAUgA0EgakGB08AAQQEgBCgCRBEEACADLQAIQQRGDQEgAykDCCIGQv8Bg0IEUQ0BIAAgBjcCAAwCCyAAIAY3AgAMAQsgA0EgaiABKAIIIAIQXwJAIAMtACBBBEYNACADKQMgIgZC/wGDQgRRDQAgACAGNwIADAELIANBIGogAigCBCADQRRqQYLTwABBASACKAIIKAJEEQQAAkAgAy0AIEEERg0AIAMpAyAiBkL/AYNCBFENACAAIAY3AgAMAQsCQAJAIAdCgICAgBBUDQAgA0EgaiACKAIEIAdCIIinIAIoAggoAkwRAwAgAy0AIEEERg0AIAMpAyAiB0L/AYNCBFINAQsgAEEEOgAADAELIAAgBzcCAAsgA0EwaiQAC7EDAgN/An4jAEEwayIDJAAgATUCqAEhBiACLQAAIgUgAS0AsAFGBEAgARCICAsgA0EIaiABEPUEQQEhBCADKAIMIQICQCADKAIIQQFxDQBBACEEIAEtALABIAVHDQBBqcboAC0AABpBBEEEEO8bIgQEQCAEIAI2AgAgA0EBNgIcIAMgBDYCGCADQQE2AhQCQCAFIAEtALABRgRAA0AgARCICCADIAEQ9QQgAygCBCECIAMoAgBBAXENAiADKAIcIgQgAygCFEYEQCADQRRqQci4xAAQyRILIAMoAhggBEECdGogAjYCACADIARBAWo2AhwgAS0AsAEgBUYNAAsLIANBKGoiBSADQRxqKAIANgIAIAMgAykCFDcDIEEAIQRBqcboAC0AABogASkDoAEhB0H4AEEIEO8bIgIEQCACQQE2AgQgAkEKNgIAIAIgAykDIDcDECACIAdCgICAgHCDIAaENwMIIAJBGGogBSgCADYCAAwDC0EIQfgAEKIfAAsgA0EUaiIBEM8UIAEQ4R1BASEEDAELQQRBBBCiHwALIAAgAjYCBCAAIAQ2AgAgA0EwaiQAC+YYARB/IwBBMGsiEyQAAkACQAJAIAFBIUkNAANAIARBAWshBAJAAkADQCAEQX9GBEAgACABIAIgA0EBIAYQmwMMBwsgE0EQaiAAAn8gAUEITwRAIAAgAUEDdiILQfAAbGohCSAAIAtBBnRqIQgCfyABQcAATwRAIAAgCCAJIAsgBhC0BQwBCyAAAn8gACgCBCIQIAgoAgQiDSAAKAIIIgsgCCgCCCIHIAcgC0sbENgRIgogCyAHayAKGyIKBEAgCkEASiAKQQBIawwBCyAALQAMIAgtAAxrCyIOAn8gECAJKAIEIhAgCyAJKAIIIgogCiALSxsQ2BEiDyALIAprIA8bIgsEQCALQQBKIAtBAEhrDAELIAAtAAwgCS0ADGsLc8BBAEgNABogCSAIAn8gDSAQIAcgCiAHIApJGxDYESILIAcgCmsgCxsiCwRAIAtBAEogC0EASGsMAQsgCC0ADCAJLQAMawsgDnPAQQBIGwsgAGtBBHYMAQsACyILQQR0aiIJQQhqKQIANwMAIBMgCSkCADcDCAJAIAVFDQAgBSgCBCAJKAIEIAUoAggiCCAJKAIIIgcgByAISxsQ2BEiCiAIIAdrIAobIghFBEAgBS0ADCAJLQAMSQ0BDAQLIAhBAE4NAwsCf0EAIQogASADSyALIgkgAU9yRQRAIAIgAUEEdGohECAAIAlBBHRqIQ0gACEIA0ACQCAAIAlBA2siB0EAIAcgCU0bQQR0aiIVIAhNBEAgCCEHDAELQQAhD0EAIQ4DQCAKQQR0IAIgDyAQaiIMQRBrAn8gCCAOaiIHQQRqKAIAIA0oAgQgB0EIaiIUKAIAIhEgDSgCCCISIBEgEkkbENgRIhYgESASayAWGyIRBEAgEUEASiARQQBIawwBCyAHQQxqLQAAIA0tAAxrCyISwEEASBtqIhEgBykCADcCACARQQhqIBQpAgA3AgAgB0EQaiERIAogEkGAAXFBB3ZqIhRBBHQgAiAMQSBrAn8gB0EUaigCACANKAIEIAdBGGooAgAiCiANKAIIIhIgCiASSRsQ2BEiFiAKIBJrIBYbIgoEQCAKQQBKIApBAEhrDAELIAdBHGotAAAgDS0ADGsLIhLAQQBIG2oiCiARKQIANwIAIApBCGogEUEIaikCADcCACAHQSBqIQogFCASQYABcUEHdmoiEkEEdCACIAxBMGsCfyAHQSRqKAIAIA0oAgQgB0EoaigCACIMIA0oAggiESAMIBFJGxDYESIUIAwgEWsgFBsiDARAIAxBAEogDEEASGsMAQsgB0Esai0AACANLQAMawsiDMBBAEgbaiIRIAopAgA3AgAgEUEIaiAKQQhqKQIANwIAIAdBMGohCiASIAxBgAFxQQd2aiISQQR0IAIgD0FAaiIPIBBqAn8gB0E0aigCACANKAIEIAdBOGooAgAiDCANKAIIIhEgDCARSRsQ2BEiFCAMIBFrIBQbIgwEQCAMQQBKIAxBAEhrDAELIAdBPGotAAAgDS0ADGsLIgfAQQBIG2oiDCAKKQIANwIAIAxBCGogCkEIaikCADcCACASIAdBgAFxQQd2aiEKIAggDkFAayIOaiIHIBVJDQALIBAgDmshEAsgACAJQQR0aiIPIAdLBEADQCAKQQR0IAIgEEEQayIQAn8gB0EEaigCACANKAIEIAdBCGoiDCgCACIIIA0oAggiDiAIIA5JGxDYESIRIAggDmsgERsiCARAIAhBAEogCEEASGsMAQsgB0EMai0AACANLQAMawsiCMBBAEgbaiIOIAcpAgA3AgAgDkEIaiAMKQIANwIAIAogCEGAAXFBB3ZqIQogB0EQaiIHIA9JDQALCyABIAlHBEAgEEEQayIQIApBBHRqIgkgBykCADcCACAJQQhqIAdBCGopAgA3AgAgB0EQaiEIIAEhCQwBCwsgCkEEdCIJBEAgACACIAn8CgAACyABIApHBEAgASAKayEQIAAgCkEEdGohByABQQR0IAJqQRBrIQkDQCAHIAkpAgA3AgAgB0EIaiAJQQhqKQIANwIAIAlBEGshCSAHQRBqIQcgEEEBayIQDQALCyAKDAELAAsiCUUNAiABIAlJDQEgACAJQQR0aiABIAlrIAIgAyAEIBNBCGogBhD6BCAEQQFrIQQgCSIBQSFPDQALDAMLIBNBADYCKCATQQE2AhwgE0HMyckANgIYIBNCBDcCICATQRhqQbTKyQAQ6BcACyABAn9BACEHIAEgA0sgCyIFIAFPckUEQCACIAFBBHRqIQ0gACALQQR0aiELIAAhCQNAAkAgACAFQQNrIghBACAFIAhPG0EEdGoiESAJTQRAIAkhCAwBC0EAIRBBACEKA0AgB0EEdCACIA0gEGoiDkEQawJ/IAsoAgQgCSAKaiIIQQRqKAIAIAsoAggiDyAIQQhqIhIoAgAiDCAMIA9LGxDYESIVIA8gDGsgFRsiDwRAIA9BAE4MAQsgCy0ADCAIQQxqLQAATwsiDBtqIg8gCCkCADcCACAPQQhqIBIpAgA3AgAgCEEQaiEPIAcgDGoiEkEEdCACIA5BIGsCfyALKAIEIAhBFGooAgAgCygCCCIHIAhBGGooAgAiDCAHIAxJGxDYESIVIAcgDGsgFRsiBwRAIAdBAE4MAQsgCy0ADCAIQRxqLQAATwsiDBtqIgcgDykCADcCACAHQQhqIA9BCGopAgA3AgAgCEEgaiEHIAwgEmoiDEEEdCACIA5BMGsCfyALKAIEIAhBJGooAgAgCygCCCIOIAhBKGooAgAiDyAOIA9JGxDYESISIA4gD2sgEhsiDgRAIA5BAE4MAQsgCy0ADCAIQSxqLQAATwsiDhtqIg8gBykCADcCACAPQQhqIAdBCGopAgA3AgAgCEEwaiEHIAwgDmoiDEEEdCACIBBBQGoiECANagJ/IAsoAgQgCEE0aigCACALKAIIIg4gCEE4aigCACIPIA4gD0kbENgRIhIgDiAPayASGyIOBEAgDkEATgwBCyALLQAMIAhBPGotAABPCyIIG2oiDiAHKQIANwIAIA5BCGogB0EIaikCADcCACAIIAxqIQcgCSAKQUBrIgpqIgggEUkNAAsgDSAKayENCyAAIAVBBHRqIhAgCEsEQANAIAdBBHQgAiANQRBrIg0CfyALKAIEIAhBBGooAgAgCygCCCIJIAhBCGoiDigCACIKIAkgCkkbENgRIg8gCSAKayAPGyIJBEAgCUEATgwBCyALLQAMIAhBDGotAABPCyIJG2oiCiAIKQIANwIAIApBCGogDikCADcCACAHIAlqIQcgCEEQaiIIIBBJDQALCyABIAVHBEAgB0EEdCACIA1BEGsiDUEBG2oiBSAIKQIANwIAIAVBCGogCEEIaikCADcCACAIQRBqIQkgB0EBaiEHIAEhBQwBCwsgB0EEdCIFBEAgACACIAX8CgAACyABIAdHBEAgASAHayENIAAgB0EEdGohCCABQQR0IAJqQRBrIQUDQCAIIAUpAgA3AgAgCEEIaiAFQQhqKQIANwIAIAVBEGshBSAIQRBqIQggDUEBayINDQALCyAHDAELAAsiCUkNAiAAIAlBBHRqIQBBACEFIAEgCWsiAUEhTw0ACwsjAEEgayIEJAAgAUECTwRAAkACQCABQRBqIANNBEAgAUEBdiEFIAFBD0sNAUEEIQYgAiAFQQR0IglqIQMgACAJaiEJIAFBB0sEQCAAIAIQnAMgCSADEJwDDAMLIAIgACkCADcCACACQQhqIABBCGopAgA3AgAgAyAJKQIANwIAIANBCGogCUEIaikCADcCAEEBIQYMAgsACyAAIAIgAiABQQR0aiIDEKoYIAAgBUEEdCIGaiACIAZqIANBgAFqEKoYQQghBgsgBEKAgICAIDcDGCAEIAWtQiCGNwMQIARBCGogBEEQahCeEyAEKAIIQQFxBEAgASAFayELIAQoAgwhA0EAIAZrIQcgACAGQQR0IglqIQogAiAJaiEQA0AgCyAFIAMbIgkgBksEQCACIANBBHQiA2ohDSAHIAlqIQggAyAKaiEJIAMgEGohAwNAIAMgCSkCADcCACADQQhqIAlBCGopAgA3AgAgDSADEMsEIAlBEGohCSADQRBqIQMgCEEBayIIDQALCyAEIARBEGoQnhMgBCgCBCEDIAQoAgBBAXENAAsLIAIgASAAEPkDCyAEQSBqJAAMAQsgCSABQcTKyQAQpR0ACyATQTBqJAALowMBCH8jAEFAaiICJAAgASgCkAYhBiACQSBqIAFBtANqIgcgASgCjAYiCEEAIAIQ+gwgAigCJCEFIAIoAiAhAyACQRhqIAcgBkEAIAIQ+gwgAigCGCEEAkACQCADQQFxRQ0AIAIoAhwhAwJAA0AgBEEBcUUNAyABKALIAyIEIAVLBEAgAyAETw0CIAEoAsQDIgQgA0EJbGogBCAFQQlsaigAATYAASACQRBqIAcgCEEBIAUQ+gwgAigCFCEFIAIoAhAgAkEIaiAHIAZBASADEPoMIAIoAgwhAyACKAIIIQRBAXENAQwDCwsgBSAEQeCo4QAQjA4ACyADIARB8KjhABCMDgALIARBAXENACACQShqIAcgCCAGEJcFAkACQCACKAIoIgVBA0cEQCAAIAIpAiw3AgQgAEEUaiACQTxqKAIANgIAIABBDGogAkE0aikCADcCAAwBCyAGIAEoArwDIgNPDQEgASgCuAMgBkEUbGpBADYCDAsgACAFNgIAIAJBQGskAA8LIAYgA0HQqOEAEIwOAAtBgKnhAEEoQaip4QAQnBQAC7YDAgF/AX4jAEEgayIDJAAgA0EQaiACIAEoAgBBABCTAQJAAkAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFENACAAIAQ3AgAMAQsgA0EBNgIQIAMgASkCCDcCFCADQQhqIAIoAgQgA0EQakG768AAQQMgAigCCCgCRBEEAAJAIAMtAAhBBEYNACADKQMIIgRC/wGDQgRRDQAgACAENwIADAELIANBEGogASgCECACEM8DAkAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFENACAAIAQ3AgAMAQsCQAJAAkAgASgCFCIBRQ0AIANBADYCECADQQhqIAIoAgQgA0EQakG+68AAQQEgAigCCCgCRBEEAAJAIAMtAAhBBEYNACADKQMIIgRC/wGDQgRRDQAgACAENwIADAQLAkAgAi0AFQ0AIANBEGogAigCBCACKAIIKAIYEQAAIAMtABBBBEYNACADKQMQIgRC/wGDQgRSDQILIANBEGogASACEI4MIAMtABBBBEYNACADKQMQIgRC/wGDQgRSDQILIABBBDoAAAwCCyAAIAQ3AgAMAQsgACAENwIACyADQSBqJAALuwMBA38jAEHwAGsiAiQAAkACQAJAAkACQCABLQCwAUEERwRAAkAgASgCbCIDQYCAgARxRQRAIAEgA0GAgIAEcjYCbCACQcgAaiABEKIHIAEgASgCbEH///97cTYCbAwBCyACQcgAaiABEKIHCyACKAJMIQMgAi0ASCIBQQJHDQEMAwsgARCICCACQQhqIAEQ7A4gAigCDCEDIAIoAghBAXENAiACIAM2AhQgAS0AsAFBBUcEQCACIAEpA6gBNwMYIAJBJGogARDZGSACQQE2AkwgAkGcssQANgJIIAJCATcCVCACQZYDNgJkIAJBBToAbyACIAJB4ABqNgJQIAIgAkHoAGo2AmAgAiACQe8AajYCaCACQTBqIgMgAkHIAGoQmQogAkHEAGogAkEsaigCADYCACACIAIpAiQ3AjwgAkEYaiADEJEQIQMgAS0AsAFBogFGDQIMBAsgARCICEEBIQELIAAgAzYCBCAAIAFBAXE6AAAMAwsgARCDDSEEIAEQiAggASAEEMQQDAELIABBAjoAACAAIAM2AgQMAQsgAEECOgAAIAAgAzYCBCACQRRqEIMbCyACQfAAaiQAC5UDAQ9/IAEoAgAiAy0AFCILIQEgAy0AEiIMIQQgAy0AECINIQUgAy0AESIOIQYgAy0AEyIPIQcgAy0AFSIQIREgAigCCCIIBEAgCEEcbCEBIAIoAgRBGGohAkECIQVBASEEQQIhBkECIQdBAiEIQQIhCUECIQoDQAJAAkACQAJAAkACQAJAAkAgAi0AAEEBaw4HAgMEBQYHAAELQQAhBAwGCyAEQQFxIQoMBQsgBEEBcSEJDAQLIARBAXEhCAwDCyAEQQFxIQcMAgsgBEEBcSEGDAELIARBAXEhBQsgAkEcaiECIAFBHGsiAQ0ACyAQIAUgBUH/AXFBAkYbIREgCyAGIAZB/wFxQQJGGyEBIA8gByAHQf8BcUECRhshByAOIAkgCUECRhshBiANIAogCkECRhshBSAMIAggCEECRhshBAsgAyAROgAVIAMgAToAFCADIAc6ABMgAyAEOgASIAMgBjoAESADIAU6ABAgACAQOgAFIAAgCzoABCAAIA86AAMgACAMOgACIAAgDjoAASAAIA06AAALrQMCAn8CfiMAQSBrIgMkACADQRBqIAIgASkCACIGpyIEQQAQkwECQAJAIAMtABBBBEYNACADKQMQIgVC/wGDQgRRDQAgACAFNwIADAELAkACQAJAIARFDQAgA0EQaiACKAIEIAQgAigCCCgCTBEDACADLQAQQQRGDQAgAykDECIFQv8Bg0IEUg0BCyADQQA2AhAgA0EIaiACKAIEIANBEGpBrNTAAEEBIAIoAggoAkQRBAAgAy0ACEEERg0BIAMpAwgiBUL/AYNCBFENASAAIAU3AgAMAgsgACAFNwIADAELIANBEGogASgCCCACEF8CQCADLQAQQQRGDQAgAykDECIFQv8Bg0IEUQ0AIAAgBTcCAAwBCyADQRBqIAIoAgQgAigCCCgCLBEAAAJAIAMtABBBBEYNACADKQMQIgVC/wGDQgRRDQAgACAFNwIADAELAkACQCAGQoCAgIAQVA0AIANBEGogAigCBCAGQiCIpyACKAIIKAJMEQMAIAMtABBBBEYNACADKQMQIgZC/wGDQgRSDQELIABBBDoAAAwBCyAAIAY3AgALIANBIGokAAuyAwEDfyMAQZABayIDJAAgA0EIaiACQbgBakEk/AoAACACQQA2AsgBIAJCgICAgIABNwPAASACQgA3A7gBIAJBiMvEACkCADcCzAEgAkHUAWpBkMvEACkCADcCACADIAI2AiwgAS0AACEBAkACQCACLQB1QSBxRQ0AIAItALABQQJGDQAgAhDnFEUNACAAQYCAgIB4NgIMDAELAkAgAigCbCIEQcAAcUUEQCACIARBwAByNgJsIANBMGogAkEBEIAGIAIgAigCbEG/f3E2AmwMAQsgA0EwaiACQQEQgAYLIAMoAjxBgICAgHhGBEAgAEGBgICAeDYCDCAAIAMoAjA2AgAMAQsgA0HYAGoiBCADQUBrKQIANwMAIANB0ABqIgUgA0E4aikCADcDACADIAMpAjA3A0gCQCABQQFxDQAgA0HkAGogA0HIAGoQ0wwgAygCZEEBRw0AIAMgAykCaDcDcCADQauAgIB4NgJ4IAIgA0HwAGogA0H4AGoQzRcLIAAgAykDSDcCACAAQRBqIAQpAwA3AgAgAEEIaiAFKQMANwIACyADQQhqENMPIANBkAFqJAALkAMC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ASgCBCEFIAJB2ABqIAFB0bTAAEEBENYHAkACQAJAAkAgAigCWCIDQQFrDgMBAAIACyACQcQAaiACQewAaikCADcCACACQcwAaiACQfQAaikCADcCACACQdQAaiACQfwAaigCADYCACACIAIpAmQ3AjwgAiACKQJcNwI0DAILIAEgBTYCBCABIAQ2AgALIAJBMGogAkEUaiABEIEEIAIoAjAhAwtBBCEBAkAgA0EDRwRAAn8gA0UEQCACKAI0DAELIAAgAikDODcDCCAAQei0wAA2AiAgACACKQNINwMYIABBEGogAkFAaykDADcDAEEkIQFBEwshBCAAIAFqIAQ2AgAMAQsgACACQTBqQQRyIgEpAgA3AgQgAEEMaiABQQhqKAIANgIAQQMhAwsgACADNgIAIAJBgAFqJAALtAMCBH8BfiMAQeAAayICJAAgASkDqAEhBgJAAkACQAJAIAEtALABQQJHBEAgAiAGNwMIIAJBFGogARDZGSACQQE2AjwgAkGcssQANgI4IAJCATcCRCACQZYDNgJUIAJBAjoAXyACIAJB0ABqNgJAIAIgAkHYAGo2AlAgAiACQd8AajYCWCACQSBqIgQgAkE4ahD3BEEIIQMgAkE0aiACQRxqKAIANgIAIAIgAikCFDcCLCACQQhqIAQQkRAhBCABLQCwAUGiAUYNAQwDCyABEIgIAkAgASgCbCIDQYCAgIAEcUUEQCABIANBgICAgARyNgJsIAJBOGogARDUDSABIAEoAmxB/////3txNgJsDAELIAJBOGogARDUDQtBgICAgHghBCACKAI8IQMgAigCOCIFQYCAgIB4Rw0BIAAgAzYCAEEIIQMMAwsgARCDDSEFIAEQiAggASAFEMQQDAELIAIoAkAhBCAAIAM2AgwgACAFNgIIIAAgBkL/////D4MgATUCpAFCIIaENwIAQRAhAwwBCyAAIAQ2AgBBgICAgHghBAsgACADaiAENgIAIAJB4ABqJAALyBEBCn8jAEEwayINJAACQAJAAkAgAUEhSQ0AA0AgBEEBayEEAkACQANAIARBf0YEQCAAIAEgAiADQQEgBhCfAwwHCyANQRBqIAACfyABQQhPBEAgACABQQN2IgdBqAFsaiEIIAAgB0HgAGxqIQoCfyABQcAATwRAIAAgCiAIIAcgBhC/BgwBCyAAAn8gACgCACIH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AyAIIAQgBQJ/IAQoAgAiByAFKAIAIglHBEAgByAJSyAHIAlJawwBCyAEKAIMIgcgBSgCDCIJSyAHIAlJawsiCUEAThsiBykCADcCACAIQRBqIAdBEGopAgA3AgAgCEEIaiAHQQhqKQIANwIAIAhBGGshCCAFIAlBB3UiB0EYbGohBSAEIAdBf3NBGGxqIQQgBkEBayIGDQALIAVBGGohBSABQQFxBH8gACACIAMgAiAFSSIGGyIBKQIANwIAIABBEGogAUEQaikCADcCACAAQQhqIAFBCGopAgA3AgAgAyACIAVPQRhsaiEDIAIgBkEYbGoFIAILIAVHIAMgBEEYakdyBEAQxxYACwsgCkEQaiQADAELAAsMAQsgCCABQay90QAQpR0ACyANQTBqJAALswMCCH8BfiMAQeABayICJAAgAS8BdCEGAkACQAJAAkAgASgCbCIHQQJxRQ0AIAEoAmQiBCgCCCIDQf////8HTw0BIAQoAhRFDQAgAw0CIARBfzYCCCABKAJgIgMoAggNAyADQX82AgggBCgCECEIIANBDGogBCgCFCIFEMgYIAVBAnQiCQRAIAMoAhAgAygCFEECdGogCCAJ/AoAAAsgBEEANgIUIAMgAygCFCAFajYCFCADIAMoAghBAWo2AgggBCAEKAIIQQFqNgIICyABIAdB///+/31xIAZBBHRBgIABcXJBgICAgAJyNgJsIAIgAUHwAPwKAAAgAkHUAWpBkMvEACkCADcCACACQaMBOwGwASACQQA2AsgBIAJCgICAgIABNwPAASACQgA3A7gBIAJBCjYCeCACQQA6ANwBIAIgASgCdDYCdCACIAEoAnAiATYCcCACQYjLxAApAgA3AswBIAIgAa0iCkIghiAKhCIKNwOoASACIAo3A6ABIAIQiAggACACQeAB/AoAACACQeABaiQADwtBhMzEABDXEQALQZTMxAAQ1hEAC0GkzMQAENYRAAuCAwECfyMAQeAAayIDJAACQAJAAkAgASgCAC0AFCIEQQJHIARBAXFFcUUEQAJAAkACQAJAIAItABhBAWsOAgECAAsgA0E4aiIEQdD30QBBiPzRABC8CgwCCyADQThqIgRBgPfRAEHQ99EAELwKDAELIANBOGoiBEGgxdEAQYD30QAQvAoLIANBCGogBBCvCyADQThqIAEgAiADQQhqEPAT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akEAIAFoEKwBDAELIAJBADYCECACIAM2AgwgAiAENgIICyAAQQRBBBDyDCAAQQhqIAJBEGooAgA2AgAgACACKQIINwIACyACQSBqJAAL6wYBAn8DQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEECaw4SAAECAwQFBAQGBwgECQoLDA0ODwsgAEEEaiIAQQRqIQICQCAAKAIAQQFGBEAgAiABELAMDAELIAIgARCwDAsPCyAAQQhqIgAoAghFBEAgACECA0AgAigCDCICKAIIQQFHDQALCwJAIAAoAjAiAkUNACACKAIQIgBFDQAgAigCDCECIABBAnQhAANAIAIoAgAgARCrBSACQQRqIQIgAEEEayIADQALCw8LIABBCGoiAkEQaiEAAkAgAigCCEEBRgRAIAAgARDvCQwBCyAAKAIADQAgAkEIaiEDA0AgAygCDCIDKAIIQQFHDQALCwJAIAIoAmgiAkUNACACKAIQIgBFDQAgAigCDCEDIABBAnQhAANAIAMoAgAgARCrBSADQQRqIQMgAEEEayIADQALCw8LIAAoAhQiAkUNCyAAKAIQIQAgAkHIAGwhAgNAIAAgARCQDSAAQcgAaiEAIAJByABrIgINAAsMCwsgAEEMaiEADAsLIAAoAhQiAkUNCSAAKAIQIQAgAkEGdCECA0AgACgCCEEHRwRAIABBCGogARDQDQsgACgCOCABEKsFIABBQGshACACQUBqIgINAAsMCQsCQCAAQQRqIgIoAgBBAUYEQCACKAIUIgBFDQEgAigCECECIABBAnQhAANAIAIoAgAgARCrBSACQQRqIQIgAEEEayIADQALDAELIAIoAhQiAEUNACACKAIQIQIgAEECdCEAA0AgAigCACABEKsFIAJBBGohAiAAQQRrIgANAAsLDwsgAEEEaiIAKAIIIAEQqwUgACgCDCABEKsFIAAoAhAgARCrBSAAKAIUIAEQqwUPCyAAQRBqIAEQ6xcPCyAAQRBqIQAMBgsgACgCECABEKsFIABBFGohAAwFCyAAQQhqIgJBEGogARDrFyACKAJIIgAEQCAAIAEQqwULIAIoAlAiAARAIAAgARCrBQsPCyAAKAIQQQRJDQIgACgCJCICRQ0CIAAoAiAhACACQQJ0IQIDQCAAKAIAIAEQqwUgAEEEaiEAIAJB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A4NQBEAgAiAGpyIBNgIwIAIgASgCEDYCNCACQShqIAJBMGoiARChHiACKAIoIgMgAygCACIDQQFqNgIAIANBAEgNAyACQSBqIAEQoR4gAiACKQMgNwI4IAJBGGogAkE4ahChHgsgACAGNwMQIAAgBzcDCAwBCyABKQIEIQYQqRkhAyACQThqIgUgASgCDBAtIAMgBUHYAPwKAAAgACADNgIMIAAgBjcCBAsgACAENgIAIAJBkAFqJAAPCwAL+wIBA38jAEEgayICJAACQCAAKAIEIgEoAiBBAUcNACABKAIoIgMgAygCACIDQQFrNgIAIANBAUcNACABQShqEPAWCyABQQA2AiAgASACKQIANwIkIAFBLGogAkEIaigCADYCACAAEKICIAAoAgAoAoAFKALQAiIAQQBOBEAgAUEANgJIAkAgASgCOCIDIABPBEAgASAANgI4DAELIAFBMGogACADaxDRCwsCQCABKAJEIgMgAE8EQCABIAA2AkQMAQsgAUE8aiAAIANrENELCyABQQA2AmQCQCABKAJUIgMgAE8EQCABIAA2AlQMAQsgAUHMAGogACADaxDRCwsCQCABKAJgIgMgAE8EQCABIAA2AmAMAQsgAUHYAGogACADaxDRCwsgAUEANgKwASABQQA2AmwgAkEgaiQADwsgAkEBNgIEIAJBmP7JADYCACACQgE3AgwgAkGpCjYCHCACQfD9yQA2AhggAiACQRhqNgIIIAJBkP/JABDoFwALgAMBBH8jAEHgAGsiAiQAAkACQAJ/IAAtAAAiAEEgRgRAIAEoAgBBvNfKAEEDIAEoAgQoAgwRBQAMAQsgAkEgakEAOwEAIAJCADcDGCACQSxqIgQgABCbDCACQQA2AiggAkEQaiAEEN0UIAItABAEQCACLQARIQADQCACIAIoAigiBUEBajYCKCADQQpGDQMgAkEYaiADaiAAQSBrIAAgBUEBSxsgACAAQeEAa0H/AXFBBkkbOgAAIAJBCGogBBDdFCADQQFqIQMgAi0ACSEAIAItAAgNAAsLIAJB1ABqIAJBGGogAxDoAiACKAJUQQFGDQIgAiACKQJYNwJMIAJBgAw2AkggAkEBNgIsIAJBuNjKADYCKCACQgE3AjQgAiACQcwAajYCRCACIAJBxABqNgIwIAEoAgAgASgCBCACQShqEM4DCyACQeAA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IANBEGogAUEQaikDADcDACADQQhqIAFBCGopAwA3AwAgAEGYAWpBACACQQpHGwsgAUHQAGokAAvPAgIHfwJ+IwBBEGsiBCQAIAEoAgAhBgJAAkAgASgCCCICIAEoAgQiB0kEQCACIAZqLQAAQd8ARg0BCyACIAcgAiAHSxshCAJAA0ACQCACIAdJBEAgAiAGai0AAEHfAEYNAwsCQAJAIAIgCEYNAiACIAZqLQAAIgVBMGsiA0H/AXFBCkkNASAFQeEAa0H/AXFBGkkNACAFQcEAa0H/AXFBGk8NAiAFQR1rIQMMAQsgBUHXAGshAwsgASACQQFqIgI2AgggBCAJQgBCPhDWDCAEKQMIUEUEQAwBCyAEKQMAIgogA61C/wGDfCIJIApaDQELCyAAQQA6AAFBASEDDAILQQEhAyABIAJBAWo2AgggCUJ/UgRAIAAgCUIBfDcDCEEAIQMMAgsgAEEAOgABDAELIABCADcDCCABIAJBAWo2AggLIAAgAzoAACAEQRBqJAAL5Q0CC38CfiMAQTBrIgMkACABKAIEIQogASgCACELIwBBkAJrIgIkACABKAIEIQggASgCACEFIAJB6AFqIAEQngUgAkEQaiIGIAJB9AFqIgkoAgA2AgAgAiACKQLsATcDCAJAAkACQAJAIAIoAugBIgdBA0cEQCACQewAaiACQYACaikDACIONwIAIAJB4ABqIgkgBigCADYCACACQZABaiACQYgCaikDACINNwMAIAJBiAFqIA43AwAgAkH0AGogDTcCACACIAIpA/gBIg03AmQgAkHgAWogAkHoAGopAwA3AwAgAkHYAWogCSkDADcDACACIA03A4ABIAIgAikDCCINNwNYIAIgDTcD0AEgAkFAayACQZQBaigCADYCACACIAIpAowBNwM4DAELIAJB0ABqIAYoAgA2AgAgAiACKQMINwNIIAJB6AFqIAEQ0QUgAkGgAWoiBCAJKAIANgIAIAIgAikC7AE3A5gBIAIoAugBIgdBA0YNASACQbwBaiACQYACaikDACIONwIAIAJBsAFqIgYgBCgCADYCACACQZABaiACQYgCaikDACINNwMAIAJBiAFqIA43AwAgAkHEAWogDTcCACACIAIpA/gBIg03ArQBIAJB4AFqIAJBuAFqKQMANwMAIAJB2AFqIAYpAwA3AwAgAiANNwOAASACIAIpA5gBIg03A6gBIAIgDTcD0AEgAkFAayACQZQBaigCADYCACACIAIpAowBNwM4IAJByABqIgQQsRMgBEEIQRAQ8gwLIAJBEGogAkHYAWopAwA3AwAgAkEYaiACQeABaikDADcDACACIAIpA9ABNwMIIAdBAUcNASABIAg2AgQgASAFNgIAIAJB6AFqIgQgARCeBQJAIAMCfyACKALoASIHQQNGBEAgAkHgAGogBEEEciIEQQhqKAIANgIAIAIgBCkCADcDWEGBgICAeAwBCyACQeAAaiACQfgBaigCADYCACACQbABaiACQYQCaikCADcDACACQbgBaiACQYwCaigCADYCACACIAIpA/ABNwNYIAIgAikC/AE3A6gBIAdBAUYNASACKALsAQs2AgQgAyAHNgIAIAMgAikDWDcDCCADIAIpA6gBNwIUIANBEGogAkHgAGooAgA2AgAgA0EcaiACQbABaikDADcCACADQSRqIAJBuAFqKAIANgIADAMLIAEgCDYCBCABIAU2AgAgAkHoAWoiBCABENEFAkAgAwJ/IAIoAugBIgVBA0YEQCACQShqIARBBHIiBEEIaigCADYCACACIAQpAgA3AyBBgICAgHgMAQsgAkEoaiIHIAJB+AFqIgQpAwA3AwAgAkEwaiACQYACaikDADcDACACIAIpA/ABNwMgIAIoAogCIQYgAigCjAIhCSAFQQFGDQEgAigC7AELNgIEIAMgBTYCACADIAIpAyA3AwggAyAJNgIkIAMgBjYCICADQRBqIAJBKGopAwA3AwAgA0EYaiACQTBqKQMANwMADAMLIAJB9AFqIAcpAwA3AgAgA0EBNgIAIAMgCTYCJCADIAY2AiAgAyABKQIANwMYIAIgAikDIDcC7AEgAyACKQLoATcCBCADQQxqIAJB8AFqKQIANwIAIANBFGogBCgCADYCAAwCCyACQdgBaiIEIAJB0ABqKAIANgIAIAJB5AFqIAJBoAFqKAIANgIAIAIgAikDmAE3AtwBIAJBEGogBCkDADcDACACQRhqIAJB4AFqKQMANwMAIAIgAikDSDcDCEEDIQcLIAMgBzYCACADIAIpAwg3AgQgAyACKQM4NwIcIANBDGogAkEQaikDADcCACADQRRqIAJBGGopAwA3AgAgA0EkaiACQUBrKAIANgIACyACQZACaiQA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ASADQoCAgICAATcCyAFBASETIARB/wFxQQ9HDQMLIAUQiAggBS0AsAFB9QBHBEAgAyAFKQOoATcD2AEgA0HkAWogBRDZGSADQQE2ArwCIANBqPfEADYCuAIgA0IBNwLEAiADQZYDNgKsBCADQfUAOgCnBCADIANBqARqNgLAAiADIANBoARqNgKoBCADIANBpwRqNgKgBCADQZgDaiIAIANBuAJqEKAKIANBrANqIANB7AFqKAIANgIAIAMgAykC5AE3AqQDIANB2AFqIAAQkRAhCSAFLQCwAUGiAUcNBCAFEIMNIQAgBRCICCAFIAAQxBAMBAsgBRCICCADQbgCaiAFEO0EIAMoArwCIQkgAygCuAIiB0ECRg0DIANBsANqIgogA0HYAmopAwA3AwAgA0GoA2oiCyADQdACaikDADcDACADQaADaiIOIANByAJqKQMANwMAIAMgAykDwAI3A5gDIAU1AqQBQiCGIBiEIRggAygC0AEiBCADKALIAUYEQCADQcgBakGw98QAEN4SCyADKALMASAEQegAbGoiACAJNgIUIAAgBzYCECAAIBg3AgggAEEANgIAIAAgAykDmAM3AhggAEEgaiAOKQMANwIAIABBKGogCykDADcCACAAQTBqIAopAwA3AgAgAyAEQQFqNgLQAQsgBS0AsAEhBAsCQCAEQf8BcUH+AEcEQCAFLQB0QRBxDQEgAyAFKQOoATcD8AEgA0H8AWogBRDZGSADQQE2ArwCIANBqPfEADYCuAIgA0IBNwLEAiADQZYDNgKsBCADQf4AOgCnBCADIANBqARqNgLAAiADIANBoARqNgKoBCADIANBpwRqNgKgBCADQZgDaiIAIANBuAJqEKAKIANBrANqIANBhAJqKAIANgIAIAMgAykC/AE3AqQDIANB8AFqIAAQkRAhCSAFLQCwAUGiAUcNAyAFEIMNIQAgBRCICCAFIAAQxBAMAwsgA0G4AmogBRCxAiADKAK8AiEJIAMoArgCIgBFDQIgCCADKQLIATcCDCAIIAk2AiAgCCAPOgAcIAggADYCGCAIQQI2AgAgCEEUaiADQdABaigCADYCACAIIAU1AqQBQiCGIBeENwIEDAMLIARB/wFxQQdHBEAgAyAFKQOoATcDiAIgA0GUAmogBRDZGSADQQE2ArwCIANBqPfEADYCuAIgA0IBNwLE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ASIIQcsAayILQR9NQQBBASALdEGBgIKQeHEbIAhBzABrQf8BcUHUAE1yRQRAIARBrAJqIQggBEGoAmohDiAEQegAaiETDAULIARBgARqIAVBABD1AiAEKAKABCEIIAQtAJgEIgtBAkYEQCADQQM2AgAgAyAINgIEIAkQ8QwMAgsgBEHkAWogBEGUBGooAgA2AgAgBEHcAWogBEGMBGopAgA3AgAgBEHwAWogBEGgBGopAAA3AAAgBCAEKQKEBDcC1AEgBCAEKQCZBDcA6QEgBCALOgDoASAEIAg2AtABIARBsAFqIARB0AFqEJQTIAAEQCAEIAQpAyg3A/gBIARBpoGAgHg2AoAEIAUgBEH4AWogBEGABGoQzRcLIANBADYCACADIAQpA7ABNwMQIARBkAJqIARB0ABqKQMANwIAIARBmAJqIARB2ABqKQMANwIAIARBoAJqIARB4ABqKQMANwIAIAMgBDUCLEIghiAXhDcDCCADQRhqIARBuAFqKQMANwMAIANBIGogBEHAAWopAwA3AwAgA0EoaiAEQcgBaikDADcDACAEIAQpA0g3AogCIANBADYCMCADQTRqIARBhAJqQST8CgAAIANBAToAWCAJEPEMDAgLIANBAzYCACADIAg2AgQLIBIQ8QwMBgsgBRCDDSEJIAUQiAggBSAJEMQQDAYLIAUQiAggBEGABGogBUEAEPUCIAQoAoAEIQggBC0AmAQiCUECRwRAIARBvARqIARBlARqKAIANgIAIARBtARqIARBjARqKQIANwIAIARByARqIARBoARqKQAANwAAIAQgBCkChAQ3AqwEIAQgBCkAmQQ3AMEEIAQgCToAwAQgBCAINgKoBCAEQeADaiAEQagEahCUEyAEQegEaiAEQRhqKQMANwIAIARB4ARqIARBEGopAwA3AgAgA0EANgIAIANBATYCMCADIAQpA+ADIhk3AxAgA0EYaiAEQegDaikDADcDACADQSBqIARB8ANqKQMANwMAIANBKGogBEH4A2opAwA3AwAgAyAZQoCAgIBwgyAXhDcDCCADQcwAaiAEQewEaigCADYCACADQcQAaiAEQeQEaikCADcCACAEIAQpAwg3AtgEIANBPGogBEHcBGopAgA3AgAgAyAEKQLUBDcCNCADQQA6AFgMCAsgA0EDNgIAIAMgCDYCBCAEQfAAahDxDAwGCyADIAQpA2g3AxAgCCAEKQMoNwIAIANBADYCMCADQQA2AgAgA0EYaiAEQfAAaikDADcDACADQSBqIAkpAwA3AwAgA0EoaiAEQYABaikDADcDACAIQQhqIARBMGopAwA3AgAgCEEQaiAEQThqKQMANwIAIAhBGGogBEFAaykDADcCACADIBM1AgRCIIYgF4Q3AwggA0E0aiAOQST8CgAAIANBADoAWCASEPEMDAYLIAMgBCkDSDcDECADQQE6AFggA0ECNgIwIANBADYCACADQRhqIARB0ABqKQMANwMAIANBIGogBEHYAGopAwA3AwAgA0EoaiAEQeAAaikDADcDACADIAU1AqQBQiCGIBeENwMIDAILIARBmARqIgggBEHgAGopAwA3AwAgBEGQBGoiCSAEQdgAaikDADcDACAEQYgEaiIOIARB0ABqKQMANwMAIAQgBCkDSDcDgAQgCxDxDCAEQUBrIAgpAwA3AwAgBEE4aiAJKQMANwMAIARBMGogDikDADcDACAEIAQpA4AENwMoQQEhCAsgBS0AsAFB9QBHBEAgAyAEKQMoNwMQIAMgCDoAWCADQQI2AjAgA0EANgIAIANBKGogBEFAaykDADcDACADQSBqIARBOGopAwA3AwAgA0EYaiAEQTBqKQMANwMAIAMgBTUCpAFCIIYgF4Q3AwgMBAsgBRCICCAEQYAEaiAFQQAQ9QIgBCgCgAQhCSAELQCYBCILQQJGBEAgA0EDNgIAIAMgCTYCBAwBCyAEQaQDaiAEQZQEaigCADYCACAEQZwDaiAEQYwEaikCADcCACAEQbADaiAEQaAEaikAADcAACAEIAQpAoQENwKUAyAEIAQpAJkENwCpAyAEIAs6AKgDIAQgCTYCkAMgBEHwAmogBEGQA2oQlBMgA0EANgIAIARByANqIARBMGopAwA3AgAgBEHQA2ogBEE4aikDADcCACAEQdgDaiAEQUBrKQMANwIAIAMgBCkD8AIiGTcDECADQRhqIARB+AJqKQMANwMAIANBIGogBEGAA2opAwA3AwAgA0EoaiAEQYgDaikDADcDACADIBlCgICAgHCDIBeENwMIIAQgBCkDKDcCwAMgA0EANgIwIANBNGogBEG8A2pBJPwKAAAgAyAIOgBYDAMLIARBOGoQ8QwMAgsgA0EDNgIAIAMgCDYCBAsgBCkD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kQEgAEHYAEEIEPgcC9ACAQd/AkACQAJAIAAoAgAiASgCUCIHIAAoAggiA0YNACABKAJYIQIgASgCVCEFAkAgABCoB0EKRgRAQQEhBiAFQQFqIgUNAUGk7coAEKkdAAsgAkEBaiIGRQ0CCwJ/QQEgABCoByICQYABSQ0AGkECIAJBgBBJDQAaQQNBBCACQYCABEkbCyECIAEgBjYCWCABIAU2AlQgASACIAdqIgE2AlAgACgCBCEAAkAgAUUNACABIANPBEAgASADRg0BDAQLIAAgAWosAABBv39MDQMLIAEgA0YNAEEBIQQgACABaiIALAAAIgFBAE4gAUFgSXIgAUFwSXINACABQf8BcUESdEGAgPAAcSAALQADQT9xIAAtAAJBP3FBBnQgAC0AAUE/cUEMdHJyckGAgMQARyEECyAEDwtBtO3KABCpHQALIAAgAyABIANBxO3KABDpGwAL9gMCBX8BfiMAQeAAayIDJAAgAyACOgAHIAEpA6gBIQgCfwJAAkACQAJAIAEtALABQQJHBEAgAyAINwMIIANBFGogARDZGSADQQE2AjwgA0H07sQANgI4IANCATcCRCADQZYDNgJUIANBAjoAXyADIANB0ABqNgJAIAMgA0HYAGo2AlAgAyADQd8AajYCWCADQSBqIgIgA0E4ahD3BCADQTRqIANBHGooAgA2AgAgAyADKQIUNwIsIANBCGogAhCRECECIAEtALABQaIBRg0BDAMLIAEQiAggA0E4aiEFIANBB2ohBCMAQRBrIgIkAAJAIAEoAmwiB0GAgICAAnEiBgRAIAEgBiAHczYCbCAELQAAIQQgAkEDOgAOIAUgASAEIAJBDmoQzgQgASABKAJsIAZyNgJsDAELIAQtAAAhBCACQQM6AA8gBSABIAQgAkEPahDOBAsgAkEQaiQAQYCAgIB4IQIgAygCPCEFIAMoAjgiBEGAgICAeEYNASADKAJAIQIgACAFNgIQIAAgBDYCDCAAQQA2AgggACAIQv////8PgyABNQKkAUIghoQ3AgBBFAwECyABEIMNIQUgARCICCABIAUQxBAMAQsgACAFNgIADAELIAAgAjYCAEGAgICAeCECC0EMCyAAaiACNgIAIANB4ABqJAAL6wIBAn8jAEEgayIDJAAgA0EIaiABIAIQhgMgAygCDCEBAkACQCADKAIQIgJBAkYEQCABLwAAQePMAUYNASABLwAAQfPGAUYNASABLwAAQezGAUYNAQsgA0EUaiABIAIQqwggAy0AFEEBRgRAIAMtABUhASAAQQQ2AgAgACABOgAEDAILIAMoAhgiBEUNACAAIAMoAhw2AgggACAENgIEIABBADYCAAwBCyADQRRqIAEgAhD+CCADLQAUBEAgAy0AFSEBIABBBDYCACAAIAE6AAQMAQsgAygCGCIEBEAgACADKAIcNgIIIAAgBDYCBCAAQQE2AgAMAQsgA0EUaiABIAIQhw0gAy0AFEEBRgRAIAMtABUhASAAQQQ2AgAgACABOgAEDAELIAMoAhgiAQRAIAAgAygCHDYCCCAAIAE2AgQgAEECNgIADAELIABBBDYCACAAQQA6AAQLIANBCGpBAUEBEPIMIANBIGokAAvMAgEDfyMAQRBrIgIkAAJAIAFBgAFPBEAgAkEANgIMAn8gAUGAEE8EQCABQYCABE8EQCACQQxqQQNyIQQgAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAwCCyACQQxqQQJyIQQgAiABQQx2QeABcjoADCACIAFBBnZBP3FBgAFyOgANQQMMAQsgAkEMakEBciEEIAIgAUEGdkHAAXI6AAxBAgshAyAEIAFBP3FBgAFyOgAAIAAoAgAgACgCCCIBayADSQRAIAAgASADEK0JIAAoAgghAQsgAwRAIAAoAgQgAWogAkEMaiAD/AoAAAsgACABIANqNgIIDAELIAAoAggiAyAAKAIARgRAIABBjPrmABD5CgsgACADQQFqNgIIIAAoAgQgA2ogAToAAAsgAkEQaiQAQQAL2wICB38DfiMAQeAAayICJAACQAJAIAEoAgBBAUYEQCABKAIgIQUgASkDGCEKIAEtABEhBiABLQAQIQcgASkDCCELIAEpAygiCUIDg1AEQCACIAmnIgM2AlggAiADKAIQNgJcIAJBEGogAkHYAGoiAxChHiACKAIQIgQgBCgCACIEQQFqNgIAIARBAEgNAyACQQhqIAMQoR4gAiACKQMINwIYIAIgAkEYahChHgsgAS0AMCEEEIMZIQMgAkEYaiIIIAEoAjgQgwYgAyAIQcAA/AoAACAAIAY6ABEgACAHOgAQIAAgCzcDCCAAIAIoARg2ARIgAEEWaiACQRxqLwEAOwEAIAAgAzYCOCAAIAQ6ADAgACAJNwMoIAAgBTYCICAAIAo3AxggAEEBNgIADAELIAEpAgQhCSAAQQxqIAFBDGoQOCAAQQA2AgAgACAJNwIECyACQeAAaiQADwsAC+QCAQR/IwBBQGoiAiQAAkACQCABKAIMBEAgAkEgaiABEK8YIAIoAiBBgICAgHhHBEAgAkEYaiACQShqKAIANgIAIAIgAikCIDcDECACQQhqIAJBEGpBlIbLABCIDgJ/IAIoAgwiAwRAIAIoAgghBCACIAM2AjggAiAENgI0IAJBNGoQjAshBSAAIAM2AgggACAENgIEQQEMAQsQvg4hBUEACyEDIAAgBTYCGCAAIAM2AgAMAgsgACABEL0INgIYIABBAjYCACAAQRRqIAFBEGooAgA2AgAgAEEMaiABQQhqKQIANwIAIAAgASkCADcCBAwCCyACQQA2AjwgAkKAgICAEDcCNCACQSRqIAJBNGoQsAsgAkEBNgIgIAAgAkEgahC9CDYCGCAAQQI2AgAgAEEUaiACQTBqKAIANgIAIABBDGogAkEoaikCADcCACAAIAIpAiA3AgQLIAEQrhgLIAJBQGskAAvkAgEEfyMAQUBqIgIkAAJAAkAgASgCDARAIAJBIGogARCvGCACKAIgQYCAgIB4RwRAIAJBGGogAkEoaigCADYCACACIAIpAiA3AxAgAkEIaiACQRBqQdSpzgAQiA4CfyACKAIMIgMEQCACKAIIIQQgAiADNgI4IAIgBDYCNCACQTRqEIwLIQUgACADNgIIIAAgBDYCBEEBDAELEL4OIQVBAAshAyAAIAU2AhggACADNgIADAILIAAgARC9CDYCGCAAQQI2AgAgAEEUaiABQRBqKAIANgIAIABBDGogAUEIaikCADcCACAAIAEpAgA3AgQMAgsgAkEANgI8IAJCgICAgBA3AjQgAkEkaiACQTRqELALIAJBATYCICAAIAJBIGoQvQg2AhggAEECNgIAIABBFGogAkEwaigCADYCACAAQQxqIAJBKGopAgA3AgAgACACKQIgNwIECyABEK4YCyACQUBrJAALyAIBAn8jAEEQayICJAACQCABQYABTwRAIAJBADYCDAJ/IAFBgBBPBEAgAUGAgARPBEAgAiABQT9xQYABcjoADyACIAFBEnZB8AFyOgAMIAIg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6AFqIgggBkEBajYCACACIAIpApgCNwPgAUGpxugALQAAGkHYAEEIEO8bIgNFDQsgAyAENgIUIANCgICAgCA3AgwgA0IANwIEIANBCzYCACADIAIpA9gBNwMYIANBADYCLCADQSBqIAJB4AFqKQMANwMAIANBKGogCCgCADYCACADQTBqIAJBqAJqQSj8CgAAIAIoAoQCIgYgAigC/AFGBEAgAkH8AWpBgIrAABDREgsgAigCgAIgBkE4bGoiBCADNgIMIARCADcCBCAEQRI2AgAgBEEQaiACQagCakEo/AoAACACQeABaiIEIAZBAWo2AgAgAiACKQL8ATcD2AFBqcboAC0AABpBOEEIEO8bIgNFDQwgA0IANwMAIAMgAikD2AE3AxAgAyACKQKoAjcCHCADQQhqQgA3AwAgA0EYaiAEKAIANgIAIANBJGogAkGwAmopAgA3AgAgA0EsaiACQbgCaiIIKQIANwIAIANBNGogAkHAAmoiDCgCADYCACACKALUASIGIAIoAswBRgRAIAJBzAFqQYCKwAAQ0RILIAIoAtABIAZBOGxqIgRBADYCFCAEIAM2AhAgBCAFNgIMIARCADcCBCAEQQg2AgAgBCACKQOoAjcDGCAEQSBqIAJBsAJqKQMANwMAIARBKGogCCkDADcDACAEQTBqIAwpAwA3AwAgAiAGQQFqNgLUASACAn4jAEEwayIDJAACQEHouugAEMwaKQMAIhVCA4NQBEAgAyAVpyIENgIgIAMgBCgCEDYCJCADQRhqIANBIGoiBBChHiADKAIYIgUgBSgCACIFQQFqNgIAIAVBAEgNASADQRBqIAQQoR4gAyADKQMQNwIoIANBCGogA0EoahChHgsgA0EwaiQAIBUMAQsMDws3A4gCIAJCADcDmAIgAkHYAWogAkGIAmogAkGYAmoQnRkgAkG0AmogAkHgAWopAwA3AgAgAkG8AmogAkHoAWopAwA3AgAgAkHEAmogAkHwAWopAwA3AgAgAiACKQPYATcCrAJBqcboAC0AABpB2ABBCBDvGyIDRQ0LIANBDjYCACADQQRqIAJBqAJqQST8CgAAIAIoAtQBIgQgAigCzAFGBEAgAkHMAWpBgIrAABDREgsgAigC0AEgBEE4bGoiBSADNgIMIAVCADcCBCAFQQo2AgAgAkGgAWogBEEBajYCACACIAIpAswBNwOYASACQdgBaiACQagBaiIIQST8CgAAIAJBqAJqIgRBAUEIQTgQggogAigCrAIhAyACKAKoAkEBRg0KIAJBADYChAIgAiACKAKwAjYCgAIgAiADNgL8ASAIIAJByABqEIEKIAJBxAJqIgwgAkHAAWopAwA3AgAgAkG8AmoiDyACQbgBaikDADcCACACQbQCaiINIAJBsAFqKQMANwIAIAIgAikDqAE3AqwCQanG6AAtAAAaQdgAQQgQ7xsiBkUNCyAGQQ42AgAgBkEEaiAEQST8CgAAAn4jAEEwayIDJAACQEGAu+gAEMwaKQMAIhVCA4NQBEAgAyAVpyIFNgIgIAMgBSgCEDYCJCADQRhqIANBIGoiBRChHiADKAIYIg4gDigCACIOQQFqNgIAIA5BAEgNASADQRBqIAUQoR4gAyADKQMQNwIoIANBCGogA0EoahChHgsgA0EwaiQAIBUMAQsMDwshFUGpxugALQAAGkHYAEEIEO8bIgVFDQsgBSAVNwMoIAVCADcDICAFQQA2AhggBSAGNgIQIAVCADcDCCAFQQg2AgAgBEECQQhBOBCCCiACKAKsAiEDIAIoAqgCQQFGDQogAkEANgKQAiACIAIoArACNgKMAiACIAM2AogCIAggAkHoAGoQgQogDCACQcABaikDADcCACAPIAJBuAFqKQMANwIAIA0gAkGwAWopAwA3AgAgAiACKQOoATcCrAJBqcboAC0AABpB2ABBCBDvGyIGRQ0LIAZBDjYCACAGQQRqIARBJPwKAAAgAkLB5pXj5gw3A6gCIAQQ8QxBqcboAC0AABpB2ABBCBDvGyIERQ0LIARCADcCBCAEQQA2AgBBqcboAC0AABpB2ABBCBDvGyIDRQ0LIAMgBDYCUCADQsHmlePmDDcDSCADQgA3A0AgA0EANgI4IAMgBjYCMCADQgA3AyggA0EBNgIgIANBADYCGCADQQA2AhAgA0IANwMIIANBBzYCACACKAKQAiIEIAIoAogCRgRAIAJBiAJqQYCKwAAQ0RILIAIoAowCIARBOGxqIgYgAzYCDCAGQgA3AgQgBkESNgIAIAIgBEEBajYCkAJBqcboAC0AABpB2ABBCBDvGyIERQ0LIARBADoAICAEIBY3AxggBEEANgIQIARCADcDCCAEQQ42AgAgAkKxyrmjBjcDqAIgAkGoAmoiBhDxDEGpxugALQAAGkHYAEEIEO8bIgNFDQsgA0KxyrmjBjcDKCADQgA3AyAgA0EANgIYIAMgBDYCECADQgA3AwggA0EINgIAIAJC8eDVk8at2rnoADcDqAIgBhDxDEGpxugALQAAGkHYAEEIEO8bIgRFDQsgBELx4NWTxq3auegANwMoIARCADcDICAEQQA2AhggBCADNgIQIARCADcDCCAEQQg2AgAgBkEBQQRBEBCCCiACKAKsAiEDIAIoAqgCQQFGDQogAkEANgKgAiACIAIoArACNgKcAiACIAM2ApgCIAJBxAJqIAJBgAFqKQMANwIAIAJBvAJqIAJB+ABqKQMANwIAIAJBtAJqIAJB8ABqKQMANwIAQanG6AAtAAAaIAIgAikDaDcCrAJB2ABBCBDvGyIDRQ0LIANBDjYCACADQQRqIAZBJPwKAAAgAigCoAIiBiACKAKYAkYEQCACQZgCakGAisAAEM4SCyACKAKcAiAGQQR0aiIIIAM2AgwgCEEANgIAIAJBuAFqIgggBkEBajYCACACIAIpApgCNwOwAUGpxugALQAAGkHYAEEIEO8bIgNFDQsgAyAENgIUIANCgICAgCA3AgwgA0IANwIEIANBCzYCACADIAIpA6gBNwMYIANBADYCLCADQSBqIAJBsAFqKQMANwMAIANBKGogCCgCADYCACADQTBqIAJBqAJqQSj8CgAAIAIoApACIgYgAigCiAJGBEAgAkGIAmpBgIrAABDREgsgAigCjAIgBkE4bGoiBCADNgIMIARCADcCBCAEQRI2AgAgBEEQaiACQagCakEo/AoAACACQbABaiIEIAZBAWo2AgAgAiACKQKIAjcDqAFBqcboAC0AABpBOEEIEO8bIgNFDQwgA0IANwMAIAMgAikDqAE3AxAgAyACKQKoAjcCHCADQQhqQgA3AwAgA0EYaiAEKAIANgIAIANBJGogAkGwAmopAgA3AgAgA0EsaiACQbgCaiIIKQIANwIAIANBNGogAkHAAmoiDCgCADYCACACKAKEAiIGIAIoAvwBRgRAIAJB/AFqQYCKwAAQ0RILIAIoAoACIAZBOGxqIgRBADYCFCAEIAM2AhAgBCAFNgIMIARCADcCBCAEQQg2AgAgBCACKQOoAjcDGCAEQSBqIAJBsAJqKQMANwMAIARBKGogCCkDADcDACAEQTBq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sAEgASABKQOoASIGp0EBaiICIAZCIIinIgQgAiAESxutQiCGIAIgBCACIARJG62ENwOoAQwCCyADIAEpA6gBNwMIIANBFGogARDZGSADQQE2AjwgA0GcssQANgI4IANCATcCRCADQZYDNgJUIANBEjoAXyADIANB0ABqNgJAIAMgA0HYAGo2AlAgAyADQd8AajYCWCADQSBqIgIgA0E4ahD3BCADQTRqIANBHGooAgA2AgAgAyADKQIUNwIsIANBCGogAhCRECECIAEtALABQaIBRw0CIAEQgw0hBCABEIgIIAEgBBDEEAwCCyABEIgICyMAQYABayICJAAgAkEANgIQIAJCgICAgMAANwIIAkACQCABQQQQuw8NAANAIAIgASkDqAE+AlwgAiABIAJB3ABqENoMIAIoAgQhBAJAAkAgAigCAEEBcQ0AIAIoAhAiBSACKAIIRgRAIAJBCGpBwLfEABDJEgsgAigCDCAFQQJ0aiAENgIAIAIgBUEBajYCECABLQCwAUEHRg0BIAFBBBC7Dw0DIAIgASkDqAE3AyggAkE0aiABENkZIAJBATYCYCACQZyyxAA2AlwgAkIBNwJoIAJBlgM2AnggAkEHOgB/IAIgAkH0AGo2AmQgAiACQSBqNgJ0IAIgAkH/AGo2AiAgAkFAayIEIAJB3ABqEPcEIAJB1ABqIAJBPGooAgA2AgAgAiACKQI0NwJMIAJBKGogBBCRECEEIAEtALABQaIBRw0AIAEQgw0hBSABEIgIIAEgBRDEEAsgAEGAgICAeDYCACAAIAQ2AgQgAkEIaiIAEM8UIAAQ4R0MAwsgARCICCABQQQQuw9FDQALCyAAIAIpAgg3AgAgAEEIaiACQRBqKAIANgIACyACQYABaiQADAELIABBgICAgHg2AgAgACACNgIECyADQeAAaiQAC8QCAQp/IwBBEGsiASQAIAAoAowGIgMgACgCvAMiAkkEQAJAIAAoArADLQAEQQFrQf8BcUEBSw0AIAAoArgDIANBFGxqIgIoAghFDQAgAigCBCECIAAoAtADIQcgACgC1AMhBSAAKALEAyEIIAAoAsgDIQYgAUEIaiAAQbQDaiIJIANBACAAEPoMIAEoAghBAXFFDQAgAEH8A2ohCiABKAIMIQADQAJAAkAgACAGSQRAIAggAEEJbGoiBCgAASADRw0CIARB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EPIMIAJBGGpBBEEEEPIMIAJBQGskAA8LIAMgBEHYjs4AEIwOAAvJAgEEfyMAQUBqIgIkAAJAAkACQAJAIAEoAgAiA0EHayIEQQAgAyAETxsOAgECAAsgAkEBNgIkIAJB3JTOADYCICACQgE3AiwgAkGxDDYCPCACIAE2AjggAiACQThqNgIoIAJBIGpB0JXOABDoFwALIAAgASkCADcCACAAQRhqIAFBGGooAgA2AgAgAEEQaiABQRBqKQIANwIAIABBCGogAUEIaikCADcCAAwBCyACQRhqIAFBDGooAgA2AgAgAiABKQIENwMQIAJBCGogAkEQakHUqc4AEIgOAn8gAigCDCIDBEAgAigCCCEEIAIgAzYCJCACIAQ2AiAgAkEgahCMCyEFIAAgAzYCCCAAIAQ2AgRBAQwBCxC+DiEFQQALIQMgACAFNgIYIAAgAzYCACABKAIAIQMLIANBCU8EQCABEJoQCyACQUBrJAALtQIBBX8jAEEgayIDJAAgACgCACEBAkACQANAIAFBAnEgASICQQRJcg0BIAAgAUECciAAKAIAIgEgASACRhs2AgAgASACRw0ACwNAIAJBfHEiBSgCACIERQRAIAUhAQNAIAEoAggiBCABNgIEIAQiASgCACIERQ0ACwsgBSAENgIAAkAgAkEBcUUEQCAEKAIEIgEEQCAFIAE2AgAgACAAKAIAQX1xNgIADAULA0AgACACQQFxIAAoAgAiASABIAJGIgIbNgIAIAINBSABIQIgAUEESQ0ACwwBCyAAIAJBfXEgACgCACIBIAEgAkYiAhs2AgAgAg0CCyABIQIMAAsACyADQSBqJAAPCyADQQA2AhggA0EBNgIMIANB2IrjADYCCCADQgQ3AhAgA0EIakGUjOMAEOgXAAv3AgEHfyMAQRBrIgEkACABQQRqIgJBAUEBQQEQggogASgCCCEDAkACQCABKAIEQQFHBEAgASgCDCIGQfgAOgAAIAJBAUEBQQEQggogASgCCCEEIAEoAgRBAUYNASABKAIMIgdBIToAACACQQFBAUEBEIIKIAEoAgghAiABKAIEQQFGDQIgASgCDCEFIABBATYCaCAAIAU2AmQgACACNgJgIABBATYCXCAAIAc2AlggACAENgJUIABBATYCUCAAIAY2AkwgACADNgJIIABC/ICAgOALNwJAIABC/ICA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IAYgBCABEOIFIAEgASgCbEH/fnE2AmwMAQsgACAGIAQgARDiBQsgBUEQaiQAC7UCAQN/IwBBQGoiAyQAAkAgASgCbCIEQYCAEHEiBQRAIAEgBCAFczYCbCACKAIAIQIgA0EANgIsIANCgICAgMAANwIkIANBADoAIyADQQA6ACIgAyACNgIcIAMgA0EjaiICNgI8IAMgA0EcajYCOCADIANBImo2AjQgAyACNgIwIANBEGogASADQSRqEOMDIAMoAhQhAiADKAIQIQQgASABKAJsIAVyNgJsDAELIAIoAgAhAiADQQA2AiwgA0KAgICAwAA3AiQgA0EAOgAjIANBADoAIiADIAI2AhwgAyADQSNqIgI2AjwgAyADQRxqNgI4IAMgA0EiajYCNCADIAI2AjAgA0EIaiABIANBJGoQ4wMgAygCDCECIAMoAgghBAsgACAENgIAIAAgAjYCBCADQUBrJAALpQIBBH8jAEEgayIDJAACQCABKAJsIgRBgJyAgAJxIgUEQCABIAQgBXMiBjYCbCACQQRqIQQCQCACKAIALQAARQRAIANBCGogASAEEIYUDAELIAZBgAFxRQRAIAEgBkGAAXI2AmwgA0EIaiAEIAEQowYgASABKAJsQf9+cTYCbAwBCyADQQhqIAQgARCjBgsgACADKQIINwIAIAEgASgCbCAFcjYCbCAAQQhqIANBEGopAgA3AgAgAEEQaiADQRhqKQIANwIADAELIAJBBGohBSACKAIALQAARQRAIAAgASAFEIYUDAELIARBgAFxRQRAIAEgBEGAAXI2AmwgACAFIAEQowYgASABKAJsQf9+cTYCbAwBCyAAIAUgARCjBgsgA0EgaiQAC7UCAQN/IwBBQGoiAyQAAkAgASgCbCIEQYCAEHEiBQRAIAEgBCAFczYCbCACKAIAIQIgA0EANgIsIANCgICAgMAANwIkIANBAToAIyADQQA6ACIgAyACNgIcIAMgA0EjaiICNgI8IAMgA0EcajYCOCADIANBImo2AjQgAyACNgIwIANBEGogASADQSRqEOMDIAMoAhQhAiADKAIQIQQgASABKAJsIAVyNgJsDAELIAIoAgAhAiADQQA2AiwgA0KAgICAwAA3AiQgA0EBOgAjIANBADoAIiADIAI2AhwgAyADQSNqIgI2AjwgAyADQRxqNgI4IAMgA0EiajYCNCADIAI2AjAgA0EIaiABIANBJGoQ4wMgAygCDCECIAMoAgghBAsgACAENgIAIAAgAjYCBCADQUBrJAAL1AIBAX8jAEEQayICJAACfwJAAkACQAJAAkACQAJAAkAgACgCACIAKAIAQQFrDgcBAgMEBQYHAAsgAiAAQQhqNgIMIAFBqJXGAEEFIAJBDGpBmJXGABD7BwwHCyACIABBCGo2AgwgAUHAlcYAQQIgAkEMakGwlcYAEPsHDAYLIAIgAEEEajYCDCABQdSVxgBBAyACQQxqQcSVxgAQ+wcMBQsgAiAAQQRqNgIMIAFB6JXGAEEFIAJBDGpB2JXGABD7BwwECyACIABBBGo2AgwgAUGAlsYAQQsgAkEMakHwlcYAEPsHDAMLIAIgAEEEajYCDCABQZyWxgBBCyACQQxqQYyWxgAQ+wcMAgsgAiAAQQRqNgIMIAFBuJbGAEEGIAJBDGpBqJbGABD7BwwBCyACIABBBGo2AgwgAUHQlsYAQQggAkEMakHAlsYAEPsHCyACQRBqJAALqAICBn8DfiMAQaABayICJAAgASgCCCEFIAEpAwAhCQJAIAEpAxAiCEIDg1AEQCACIAinIgM2AiAgAiADKAIQNgIkIAJBGGogAkEgaiIDEKEeIAIoAhgiBCAEKAIAIgRBAWo2AgAgBEEASA0BIAJBEGogAxChHiACIAIpAxA3AiggAkEIaiACQShqEKEeCyABLQAYIQYCQCABKAIgIgNFBEBBACEBDAELEKAZIQEgAykCACEKEKEZIQQgAkEoaiIHIAMoAggQQCAEIAdB+AD8CgAAIAEgBDYCCCABIAo3AgALIAAgBjoAGCAAIAg3AxAgACAFNgIIIAAgCTcDACAAIAIoACg2ABkgACABNgIgIABBHGogAkEraigAADYAACACQaABaiQADwsAC5oCAQZ/IwBBMGsiASQAAn8gACgCFCICIAAoAhAiBUkEQCAAQQxqIQQgACgCDCEGA0ACQAJAAkACQCACIAZqLQAAIgNBDE0EQCADQQlrQQJJDQQMAQsgA0EfTQRAIANBDUcNAQwECyADQSBGDQMgA0H9AEYNASADQSxGDQILIAFBFjYCJCABQQhqIAQQ0BEgAUEkaiABKAIIIAEoAgwQrBMMBQsgACACQQFqNgIUQQAMBAsgAUEVNgIkIAFBGGogBBDQESABQSRqIAEoAhggASgCHBCsEwwDCyAAIAJBAWoiAjYCFCACIAVHDQALCyABQQM2AiQgAUEQaiAAQQxqENARIAFBJGogASgCECABKAIUEKwTCyABQTBqJAALlAIBAX8jAEEQayIEJAAgBEEANgIMAkACfyADQYABTwRAIANBgBBPBEAgA0GAgARPBEAgBCADQT9xQYABcjoADyAEIANBEnZB8AFyOgAMIAQgA0EGdkE/cUGAAXI6AA4gBCADQQx2QT9xQYABcjoADUEEDAMLIAQgA0E/cUGAAXI6AA4gBCADQQx2QeABcjoADCAEIANBBnZBP3FBgAFyOgANQQMMAgsgBCADQT9xQYABcjoADSAEIANBBnZBwAFyOgAMQQIMAQsgBCADOgAMQQELIgMgAksEQEEAIQEMAQsgASADakEAIARBDGogAyABIAMQhBkbIQEgAiADayEDCyAAIAM2AgQgACABNgIAIARBEGokAAugAgEDfyMAQRBrIgQkAAJAAkAgASgCCEEBRgRAIAEoAgAhBSABKAIEIQYgAUEMQQQQ+BwgBEEIaiIBIAY2AgAgBCACIAVrIgIgA2o2AgQgBCAFNgIAIARBB0EgIAZBCnZnayIDIANBB08bQQJ0QQFyNgIMIAQgAhDVDCAAQQhqIAEpAgA3AgAgACAEKQIANwIADAELIANBAEgNAQJAIANFBEBBASEFDAELQanG6AAtAAAaQQEhBiADQQEQ7xsiBUUNAgsgAwRAIAUgAiAD/AoAAAsgARCRGCAAIAM2AgggACADNgIEIAAgBTYCACAAQQdBICADQQp2Z2siACAAQQdPG0ECdEEBcjYCDAsgBEEQaiQADwsgBiADQeyq5gAQtBoAC50CAQV/AkACQAJAAkAgAkEDakF8cSIEIAJGDQAgAyAEIAJrIgQgAyAESRsiBUUNAEEAIQQgAUH/AXEhBkEBIQcDQCACIARqLQAAIAZGDQQgBSAEQQFqIgRHDQALIAUgA0EIayIISw0CDAELIANBCGshCEEAIQULIAFB/wFxQYGChAhsIQQDQEGAgoQIIAIgBWoiBygCACAEcyIGayAGckGAgoQIIAdBBGooAgAgBHMiBmsgBnJxQYCBgoR4cUGAgYKEeEcNASAFQQhqIgUgCE0NAAsLIAMgBUcEQCABQf8BcSEEQQEhBwNAIAQgAiAFai0AAEYEQCAFIQQMAwsgAyAFQQFqIgVHDQALC0EAIQcLIAAgBDYCBCAAIAc2AgAL9wEBBH8CQAJAAkACQAJAIAAtAAAiA0EFa0EAIANBBmtB/wFxQQRJGyIFIAEtAAAiBEEFa0EAIARBBk8bRw0AQQEhAgJAIAUOBQACAgIDAgsgBEEFSw0BIAMgBEcNAAJAAkAgA0EBaw4FAAUEAQUEC0EAIQIgACgCBCAAKAIIIAEoAgQgASgCCBCEGUUNAgwFC0EAIQIgACgCBCAAKAIIIAEoAgQgASgCCBCEGUUNAQwEC0EAIQILIAIPCyAAKAIEIAAoAgggASgCBCABKAIIEIQZDwsgAC0AASABLQABRg8LIAAoAgwgACgCECABKAIMIAEoAhAQhBkLxwICAn8CfiMAQTBrIgIkAAJ/AkACQAJAIAApAwAiBEKAgICAgIB/UgRAIARCKogiBUL///8BUgRAIAJBATYCDCACQcyCyQA2AgggAkIBNwIUIAJBLzYCLCACIAU+AiAgAiACQShqNgIQIAIgAkEgajYCKEEBIAEoAgAiACABKAIEIgMgAkEIahDOAw0FGiAEQv///////wCDIgRQRQ0CDAQLIARC////////AIMiBFANAyABKAIEIQMgASgCACEADAILIAEoAgBBvYPJAEEDIAEoAgQoAgwRBQAMAwtBASAAQbyDyQBBASADKAIMEQUADQIaCyACQQE2AgwgAkHMgskANgIIIAJCATcCFCACQd4JNgIkIAIgBDcDKCACIAJBIGo2AhAgAiACQShqNgIgIAAgAyACQQhqEM4DDAELQQALIAJBMGokAAu7AgEJfyMAQRBrIgMkACABKAIEIQQgAyABKAIIIgEQpg8CQAJAIAFFDQAgAUEBdCEGIAMoAgQhCSABQQN0IQdBACEBAkADQCABIAlHBEAgBCgCACECAkAgBEEEaiIKKAIAIgUgBmoiCCAFTwRAIAhB/v///wdNDQEgACABNgIEIABBgYCAgHg2AgAgACAFIAJrQQF2QQFqrTcDCAwGCyAAIAE2AgQgAEGBgICAeDYCACAAIAUgAmtBAXZBAWo2AggMBQsgCiAINgIAIAIgBmoiAkH/////B08NAiAEIAI2AgAgAUEBaiEBIARBCGohBCAHQQhrIgcNAQwDCwtBvL3JABCpHQALIAMgAq03AwhB8N7JAEErIANBCGpB4N7JAEHo4skAEPAMAAsgAEGEgICAeDYCAAsgA0EQaiQAC5ACAQN/IwBBMGsiAiQAAkAgAygCECIHIAMoAhQiCEsNAAJAAkAgAygCAEEBa0ECTwRAIAJBDGogAUEEaiADKAIIIAMoAgwgByAIEN4DIAIoAgxBAUcNAiACKAIQIgcgAigCFCIDTQ0BIAJBADYCKCACQQE2AhwgAkGAncoANgIYIAJCBDcCICACQRhqQYidygAQ6BcACyAHIAMoAgxPDQICQCADKAIIIAdqLQAAIgMgAS0ABEYNACABLQAFIANGDQAgAS0ABiADRw0DCyAHQQFqIQMLQQEhBiAFRQ0BIAQgB0EBajYCACAFQQFGDQEgBCADQQFqNgIEDAELCyAAQQA2AgQgACAGNgIAIAJBMGokAAvkAgEFfyMAQSBrIgIkACACQRBqIgMgASgCBCIENgIAIAMgBCABKAIIQRhsajYCBCACIAIpAxA3AhggAkEIaiIBQQE2AgAgASACQRhqIgEoAgQgASgCAGtBGG42AgQgAigCDCEDIAIoAgggACgCACIEKAIAQf7N4wBBARDoG0GAAiEBQQFxRSADckUEQCAEKAIAQYLO4wBBARDoG0EAIQELAkACQAJAIAIoAhgiAyACKAIcIgZHBEADQCABQQFxDQMgAUGA/gNxQYACRwRAIAQoAgBBgM7jAEEBEOgbCyADIAAQ8wMiBQ0CIAFB/4F8cUGABHIhASADQRhqIgMgBkcNAAsLIAIgAzYCGCABQQFxDQJBACEFIAFBgP4DcUUNACAEKAIAQYLO4wBBARDoGwsgAkEgaiQAIAUPCyACIANBGGo2AhhB1M/jAEEoQZzQ4wAQnBQAC0HUz+MAQShBrNDjABCcFAALmQIBAn8jAEFAaiIBJAAgAUEEahDSGiABQQ5qENIaIAFBGGoQ0hogAUEiahDSGiABQSxqENIaIAFBNmoQ0hpBqcboAC0AABpBCkEBEO8bIgJFBEBBAUEKEKIfAAsgAhDSGiAAQRRqIAFBDGovAAA7AAAgACABKQAENwAMIAAgASkADjcAFiAAQR5qIAFBFmovAAA7AAAgACABKQAYNwAgIABBKGogAUEgai8AADsAACAAIAEpACI3ACogAEEyaiABQSpqLwAAOwAAIABBPGogAUE0ai8AADsAACAAIAEpACw3ADQgAEEBNgIIIAAgAjYCBCAAQQE2AgAgAEHGAGogAUE+ai8AADsAACAAIAEpADY3AD4gAUFAayQAC4QEAgV/A34jAEEwayIDJAAgASgCBCABKAIAa0EcbiICIAAoAgAgACgCCCIEa0sEQCAAIAQgAkEEQRwQyBMgACgCCCEECyAAKAIEIQIgA0EQaiABQRBqKAIANgIAIANBCGogAUEIaikCADcDACADIAEpAgAiBzcDACAHpyIFIAMoAgQiBkcEQCACIARBHGxqIQEDQCAFIgIoAgAiBUEIRwRAIAJBFGopAgAhByACQQxqKQIAIQggAkEEaikCACEJIAEgBTYCACABQQRqIAk3AgAgAUEMaiAINwIAIAFBFGogBzcCACABQRxqIQEgBEEBaiEEIAJBHGoiBSAGRw0BCwsgAyACQRxqNgIACyAAIAQ2AgggAygCBCECIAMoAgAhASADQoSAgIDAADcCACACIAFrQRxuIQUgAygCCCEAAkACQCABIAJGBEAgAygCECIBRQ0CIAMoAgwiBSAAKAIIIgJGDQEgAUEcbCIERQ0BIAAoAgQiBiACQRxsaiAGIAVBHGxqIAT8CgAADAELA0AgARCpByABQRxqIQEgBUEBayIFDQALIAMoAhAiAUUNAQJAIAMoAgwiBSAAKAIIIgJGDQAgAUEcbCIERQ0AIAAoAgQiBiACQRxsaiAGIAVBHGxqIAT8CgAACyAAIAEgAmo2AggMAQsgACABIAJqNgIICyADQTBqJAALngIBBX9BCiEDAkAgAkGQzgBJBEAgAiEEDAELA0AgASADaiIFQQRrIAIgAkGQzgBuIgRBkM4AbGsiBkH//wNxQeQAbiIHQQF0QZjM5ABqLwAAOwAAIAVBAmsgBiAHQeQAbGtB//8DcUEBdEGYzOQAai8AADsAACADQQRrIQMgAkH/wdcvSyAEIQINAAsLAkAgBEHjAE0EQCAEIQIMAQsgASADQQJrIgNqIAQgBEH//wNxQeQAbiICQeQAbGtB//8DcUEBdEGYzOQAai8AADsAAAsCQCACQQpPBEAgASADQQJrIgNqIAJBAXRBmMzkAGovAAA7AAAMAQsgASADQQFrIgNqIAJBMHI6AAALIABBCiADazYCBCAAIAEgA2o2AgALlgIBA38jAEEQayICJAAgAkEANgIMAn8gAUGAAU8EQCABQYAQTwRAIAFBgIAETwRAIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAwDCyACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAILIAIgAUE/cUGAAXI6AA0gAiABQQZ2QcABcjoADEECDAELIAIgAToADEEBCyEBIAAgACgCBCIDIAFrNgIEIAAgACgCACABIANLciIENgIAQQEhAyAERQRAIAAoAgggAkEMaiABENAbIQMLIAJBEGokACADC8MCAQN/IwBBIGsiAyQAAkACQAJAA0ACQEEMIQICQAJAIAEoAgBBAWsOBgQAAgEGBgULQRQhAgsgASACaigCACEBDAELCyABKAIUIgJFDQIgASgCECEBIAJBBnQhAgNAQSghBAJAAkACQAJAIAEoAgBBAWsOAgIAAQtBFCEECyAAIAEgBGooAgAQmwcMAQsgAUEQaiIEEKoeRQ0AIAMgBCkDADcDACADQamAgIB4NgIIIAAgAyADQQhqEOgUCyABQUBrIQEgAkFAaiICDQALDAILIAEoAhRBMGwhAiABKAIQIQEDQCACRQ0CIAEoAgBBB0cEQCAAIAEQmwcLIAFBMGohASACQTBrIQIMAAsACyABQQhqIgEQqh5FDQAgAyABKQMANwMAIANBqYCAgHg2AgggACADIANBCGoQ6BQLIANBIGokAAusAgICfwJ8IwBBIGsiBSQAIAO6IQcgAAJ/AkACQAJAAkAgBCAEQR91IgZzIAZrIgZBtQJPBEADQCAHRAAAAAAAAAAAYQ0FIARBAE4NAiAHRKDI64XzzOF/oyEHIARBtAJqIgQgBEEfdSIGcyAGayIGQbQCSw0ACwsgBkEDdEHoq+QAaisDACEIIARBAE4NASAHIAijIQcMAwsgBUEONgIUIAUgAUEMaiABKAIUEKwEIAAgBUEUaiAFKAIAIAUoAgQQrBM2AgQMAQsgByAIoiIHmUQAAAAAAADwf2INASAFQQ42AhQgBUEIaiABQQxqIAEoAhQQrAQgACAFQRRqIAUoAgggBSgCDBCsEzYCBAtBAQwBCyAAIAcgB5ogAhs5AwhBAAs2AgAgBUEgaiQAC38BBH8jAEEQayIFJAACQCABQf////8DSyABQQJ0IgNB/P///wdLcg0AAn8gA0UEQEEEIQRBAAwBC0GpxugALQAAGkEEIQYgA0EEEPAbIgRFDQEgAQshAiAAIAE2AgggACAENgIEIAAgAjYCACAFQRBqJAAPCyAGIAMgAhC0GgALjwIBA38jAEGAAWsiBCQAIAAoAgAhAAJ/AkAgASgCCCICQYCAgBBxRQRAIAJBgICAIHENASAAKAIAQQEgARCxBQwCCyAAKAIAIQBBACECA0AgAiAEakH/AGogAEEPcSIDQTByIANB1wBqIANBCkkbOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBzMDnAEECIAIgBGpBgAFqQQAgAmsQ3wIMAQsgACgCACEAQQAhAgNAIAIgBGpB/wBqIABBD3EiA0EwciADQTdqIANBCkkbOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBzMDnAEECIAIgBGpBgAFqQQAgAmsQ3wILIARBgAFqJAALgQICBH8BfiMAQSBrIgYkAAJAIAVFDQAgAiADaiIDIAJJDQAgBCAFakEBa0EAIARrca0gAyABKAIAIghBAXQiAiACIANJGyICQQhBBEEBIAVBgQhJGyAFQQFGGyIDIAIgA0sbIgOtfiIKQiCIpw0AIAqnIglBgICAgHggBGtLDQAgBiAIBH8gBiAFIAhsNgIcIAYgASgCBDYCFCAEBSAHCzYCGCAGQQhqIAQgCSAGQRRqEIkLIAYoAghBAUYEQCAGKAIQIQIgBigCDCEHDAELIAYoAgwhBCABIAM2AgAgASAENgIEQYGAgIB4IQcLIAAgAjYCBCAAIAc2AgAgBkEgaiQAC5kCAgN/An4jAEEQayIFJAACQAJAIAIEQANAIARBwABPBEAgACAFKQIINwIEIABBhYCAgHg2AgAMBAsgAS0AACAFQYWAgIB4NgIEQeTC4wBqMQAAIghCH4MgBK2GIAd8IQcgBUEEahDuDCAIQh9WBH8gBEEFagUgB0IBhyIIQgAgCH0gB0IBg1AbIQcgAygCCCIEIAMoAgBGBEAgA0HkxOMAEN8SCyADKAIEIARBA3RqIAc3AwAgAyAEQQFqNgIIQgAhB0EACyEEIAFBAWohASACQQFrIgINAAsgB0IAUiAEcg0BCyADKAIIBEAgAEGSgICAeDYCAAwCCyAAQYSAgIB4NgIADAELIABBg4CAgHg2AgALIAVBEGokAAvJngEENX8BfgF9AXwjAEHwAGsiESQAIwBBIGsiGiQAIBogATYCHCAaIAA2AhggGiABNgIUIBpBCGogGkEUaiIdQYSmwAAQhw4gGigCCCIhIBooAgwiKUECdGohASMAQSBrIhskACAbQRRqIAEgIWtBAnZBBEHQABCCCiAbKAIYIQAgGygCFEEBRgRAIAAgGygCHEHspsAAELQaAAsgG0EQaiI0QQA2AgAgGyAbKAIcNgIMIBsgADYCCCMAQRBrIiIkACABICFrQQJ2IgYgG0EIaiIAKAIAIAAoAggiBGtLBEAgACAEIAZBBEHQABCyEyAAKAIIIQQLICIgACgCBDYCDCAiIAQ2AgggIiAAQQhqNgIEIwBBsAFrIhwkACAiQQRqIgQoAgQhJSAEKAIAITUCQAJAIAEgISIARwRAIAQoAgggJUHQAGxqISogASAAa0ECdiErA0AgHEHcAGohFCAAKAIAEO0cIQEjAEHwAWsiCiQAIAogATYCCAJAAkACQAJAIAEQhSBBAUcEQCAKQQhqIApBwAFqQeyPwAAQzAMhBCAUQYCAgIB4NgIAIBQgBDYCBCABQYQBSQ0BIAEQrxUMAQsgCkEMaiIEIAFBqJTAABC5GCAKQYCAgIB4NgIgIApBgICAgHg2AiwgCkGEgICAeDYCUCAKQcABaiAEEM8GAkACQAJ/IAotAMABRQRAIApBNGohJiAKQcgBaiEeIApB2ABqIR8DQAJAAkACQAJAAkACQAJAAkACQCAKLQDBAUEBaw4EAgMABAELIAogCkEMahDBFAwHCyAKKAIgQYCAgIB4Rg0FQayRwABBCxCzDwwJCyAKKAIsQYCAgIB4Rg0DQbeRwABBBhCzDwwICyAKKAJQQYSAgIB4Rg0BQb2RwABBDRCzDwwHCyAKKAIgQYCAgIB4RyILRQRAQayRwABBCxCyDyEBIBRBgICAgHg2AgAgFCABNgIEQQAhAQwICyAKQfgAaiAKQShqKAIANgIAIAogCikCIDcDcAJAIAooAixBgICAgHhHIgFFBEBBt5HAAEEGELIPIQQgFEGAgICAeDYCACAUIAQ2AgQMAQsgCkGAAWogCkEsakEk/AoAAAJAIAooAlAiBUGEgICAeEcEQCAKQbABaiAfQQhqKQIANwMAIApBuAFqIB9BEGopAgA3AwAgCiAfKQIANwOoASAKKAJUIQQMAQtBvZHAAEENELIPIQQgCkHAAWoiBkGEgICAeDYCACAGIAQ2AgQgCigCxAEhBCAKKALAASIFQYSAgIB4RgRAIBRBgICAgHg2AgAgFCAENgIEIApBgAFqEOoXDAILIApBuAFqIApB2AFqKQIANwMAIApBsAFqIApB0AFqKQIANwMAIAogCikCyAE3A6gBCyAKQcgBaiAKQfgAaigCADYCACAKIAopA3A3A8ABIApBzAFqIApBgAFqQST8CgAAIBQgCkHAAWpBMPwKAAAgFCAENgI0IBQgBTYCMCAUIAopA6gBNwI4IBRBQGsgCkGwAWopAwA3AgAgFEHIAGogCkG4AWopAwA3AgAMCQsgCkHwAGoQyh0MBwsgCigCDCAKQQA2AgwEQCAKQcABaiEIIAooAhAhASMAQTBrIgckACAHQRBqIAEQzAIgBygCFCEBAkAgBygCECIEQZWAgIB4RgRAIAhBhICAgHg2AgAgCCABNgIEDAELIAcgBykDGDcDCCAHIAE2AgQgByAENgIAIAdBEGohBUEAIQsjAEEgayIJJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQRUgBygCAEGAgICAeHMiASABQRVPG0EBaw4VAQIDBAUGBwgJCgsMDQ4PEBESExQVAAsgBy0ABCEBIAlBADoACCAJIAE6AAkgCUEIaiAJQR9qQdyUwAAQtQ4hASAFQYSAgIB4NgIAIAUgATYCBAwVCyAHMQAEITkgCUEBOgAIIAkgOTcDECAJQQhqIAlBH2pB3JTAABC1DiEBIAVBhICAgHg2AgAgBSABNgIEDBQLIAczAQQhOSAJQQE6AAggCSA5NwMQIAlBCGogCUEfakHclMAAELUOIQEgBUGEgICAeDYCACAFIAE2AgQMEwsgBzUCBCE5IAlBAToACCAJIDk3AxAgCUEIaiAJQR9qQdyUwAAQtQ4hASAFQYSAgIB4NgIAIAUgATYCBAwSCyAHKQMIITkgCUEBOgAIIAkgOTcDECAJQQhqIAlBH2pB3JTAABC1DiEBIAVBhICAgHg2AgAgBSABNgIEDBELIAcwAAQhOSAJQQI6AAggCSA5NwMQIAlBCGogCUEfakHclMAAELUOIQEgBUGEgICAeDYCACAFIAE2AgQMEAsgBzIBBCE5IAlBAjoACCAJIDk3AxAgCUEIaiAJQR9qQdyUwAAQtQ4hASAFQYSAgIB4NgIAIAUgATYCBAwPCyAHNAIEITkgCUECOgAIIAkgOTcDECAJQQhqIAlBH2pB3JTAABC1DiEBIAVBhICAgHg2AgAgBSABNgIEDA4LIAcpAwghOSAJQQI6AAggCSA5NwMQIAlBCGogCUEfakHclMAAELUOIQEgBUGEgICAeDYCACAFIAE2AgQMDQsgByoCBCE6IAlBAzoACCAJIDq7OQMQIAlBCGogCUEfakHclMAAELUOIQEgBUGEgICAeDYCACAFIAE2AgQMDAsgBysDCCE7IAlBAzoACCAJIDs5AxAgCUEIaiAJQR9qQdyUwAAQtQ4hASAFQYSAgIB4NgIAIAUgATYCBAwLCyAHKAIEIQEgCUEANgIEIAkCfyABQYABTwRAIAFBgBBPBEAgAUGAgARPBEAgCSABQT9xQYABcjoAByAJIAFBEnZB8AFyOgAEIAkgAUEGdkE/cUGAAXI6AAYgCSABQQx2QT9xQYABcjoABUEEDAMLIAkgAUE/cUGAAXI6AAYgCSABQQx2QeABcjoABCAJIAFBBnZBP3FBgAFyOgAFQQMMAgsgCSABQT9xQYABcjoABSAJIAFBBnZBwAFyOgAEQQIMAQsgCSABOgAEQQELNgIQIAlBBToACCAJIAlBBGo2AgwgCUEIaiAJQR9qQdyUwAAQtQ4hASAFQYSAgIB4NgIAIAUgATYCBAwKCyAHKQMIITkgCUEFOgAIIAkgOTcCDCAJQQhqIAlBH2pB3JTAABC1DiEBIAVBhICAgHg2AgAgBSABNgIEDAkLIAcpAgQhOSAJQQU6AAggCSA5NwIMIAlBCGogCUEfakHclMAAELUOIQEgBUGEgICAeDYCACAFIAE2AgQMCAsgBykDCCE5IAlBBjoACCAJIDk3AgwgCUEIaiAJQR9qQdyUwAAQtQ4hASAFQYSAgIB4NgIAIAUgATYCBAwHCyAHKQIEITkgCUEGOgAIIAkgOTcCDCAJQQhqIAlBH2pB3JTAABC1DiEBIAVBhICAgHg2AgAgBSABNgIEDAYLIAlBCDoACCAJQQhqIAlBH2pB3JTAABC1DiEBIAVBhICAgHg2AgAgBSABNgIEDAULIAlBCDoACCAJQQhqIAlBH2pB3JTAABC1DiEBIAVBhICAgHg2AgAgBSABNgIEDAQLIAlBBzoACCAJQQhqIAlBH2pB3JTAABC1DiEBIAVBhICAgHg2AgAgBSABNgIEDAMLIAlBCToACCAJQQhqIAlBH2pB3JTAABC1DiEBIAVBhICAgHg2AgAgBSABNgIEDAILIAlBCjoACCAJQQhqIAlBH2pB3JTAABC1DiEBIAVBhICAgHg2AgAgBSABNgIEDAELIAcoAgQhASAHKAIIIQZBACEEIwBBgAFrIgwkACAMQgA3AiAgDCABNgIYIAwgASAGQQV0ajYCHCAMQYCAgIB4NgJYIAxBgICAgHg2AmQgDEEoaiAMQRhqENQLAkACQAJAAn8CQCAMLQAoDQBBAiEOA0ACQAJAAkACQAJAAkACQAJAIAwtAClBAWsOBQIDBAAFAQsgDCgCICAMQQA2AiANBgwaCyAMKAJYQYCAgIB4RwRAQQAhDUGEj8AAQQkQsw8hAUEAIQYMCgsgDEEoaiAMQRhqEJUYIAwoAiwiASAMKAIoIgZBgICAgHhGDQgaIAwoAjAhDSAMQdgAahC1GiAMIA02AmAgDCABNgJcIAwgBjYCWAwFCyAMKAJkQYCAgIB4RwRAQQAhDUGNj8AAQQoQsw8hAUEAIQYMCQsgDEEoaiAMQRhqEJUYIAwoAiwiASAMKAIoIgZBgICAgHhGDQcaIAwoAjAhDSAMQeQAahC1GiAMIA02AmwgDCABNgJoIAwgBjYCZAwECyAOQQJHBEBBACENQZePwABBBBCzDyEBQQAhBgwICyAMQShqIAxBGGoQkxcgDC0AKA0FIAwtACkhDgwDCyALRQ0BQQAhDUGbj8AAQQUQsw8hAUEAIQYMBgsgDCgCWEGAgICAeEciBkUEQEEAIQ1BhI/AAEEJELIPIQEMBgsgDEH4AGogDEHgAGooAgA2AgAgDCAMKQJYNwNwAkAgDCgCZEGAgICAeEciDUUEQEGNj8AAQQoQsg8hAQwBCyAMQTBqIAxB7ABqKAIANgIAIAwgDCkCZDcDKCAOQQJHBEAgDEHQAGoiBiAMQewAaigCADYCACAMIAwpAmQ3A0ggDCgCdCEBIAwoAnAiDUGEgICAeEYNCCAMKAJ4IQ8gDEE8aiAGKAIANgIAIAwgDCkDSDcCNCAMIA82AjAgDCABNgIsIAwgDTYCKCAMIA5BAXE6AEQgDCAEQQAgCxs2AkAgDEEIaiAMQRhqEOANIAwoAghBAXEEQCAMKAIMIQEgBUGEgICAeDYCACAFIAE2AgQgDEEoahCSFwwKCyAFIAwpAig3AgAgBUEYaiAMQUBrKQIANwIAIAVBEGogDEE4aikCADcCACAFQQhqIAxBMGopAgA3AgAMCQtBl4/AAEEEELIPIQEgDEEoahDKHQsgDEHwAGoQyh0MBQsgDEEQaiAMQRhqEMAQQQEhCyAMKAIUIQQgDCgCEEEBcUUNAEEAIQ0gBCEBQQAhBgwECyAMQShqIAxBGGoQ1AsgDC0AKEUNAAsLIAwoAiwLIQFBACENQQAhBgsCQCANDQAgDCgCZEGAgICAeEYNACAMQeQAahDKHQsgBiAMKAJYQYCAgIB4RnINACAMQdgAahDKHQsgBUGEgICAeDYCACAFIAE2AgQLIAxBgAFqJAALIAlBIGokAAJAAkACQAJAAkAgBygCEEGEgICAeEYEQCAFEIgRQQAhBiMAQSBrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBFSAHKAIAQYCAgIB4cyIEIARBFU8bQQFrDhUBAgMEBQYHCAkKCwwNDg8QERITFBUACyAHLQAEIQQgAUEAOgAIIAEgBDoACSABQQhqIAFBH2pB7JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDBULIAcxAAQhOSABQQE6AAggASA5NwMQIAFBCGogAUEfakHslMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMFAsgBzMBBCE5IAFBAToACCABIDk3AxAgAUEIaiABQR9qQeyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwTCyAHNQIEITkgAUEBOgAIIAEgOTcDECABQQhqIAFBH2pB7JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDBILIAcpAwghOSABQQE6AAggASA5NwMQIAFBCGogAUEfakHslMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMEQsgBzAABCE5IAFBAjoACCABIDk3AxAgAUEIaiABQR9qQeyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwQCyAHMgEEITkgAUECOgAIIAEgOTcDECABQQhqIAFBH2pB7JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDA8LIAc0AgQhOSABQQI6AAggASA5NwMQIAFBCGogAUEfakHslMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMDgsgBykDCCE5IAFBAjoACCABIDk3AxAgAUEIaiABQR9qQeyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwNCyAHKgIEITogAUEDOgAIIAEgOrs5AxAgAUEIaiABQR9qQeyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwMCyAHKwMIITsgAUEDOgAIIAEgOzkDECABQQhqIAFBH2pB7JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAsLIAcoAgQhBCABQQA2AgQgAQJ/IARBgAFPBEAgBEGAEE8EQCAEQYCABE8EQCABIARBP3FBgAFyOgAHIAEgBEESdkHwAXI6AAQgASAEQQZ2QT9xQYABcjoABiABIARBDHZBP3FBgAFyOgAFQQQMAwsgASAEQT9xQYABcjoABiABIARBDHZB4AFyOgAEIAEgBEEGdkE/cUGAAXI6AAVBAwwCCyABIARBP3FBgAFyOgAFIAEgBEEGdkHAAXI6AARBAgwBCyABIAQ6AARBAQs2AhAgAUEFOgAIIAEgAUEEajYCDCABQQhqIAFBH2pB7JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAoLIAcpAwghOSABQQU6AAggASA5NwIMIAFBCGogAUEfakHslMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMCQsgBykCBCE5IAFBBToACCABIDk3AgwgAUEIaiABQR9qQeyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwICyAHKQMIITkgAUEGOgAIIAEgOTcCDCABQQhqIAFBH2pB7JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAcLIAcpAgQhOSABQQY6AAggASA5NwIMIAFBCGogAUEfakHslMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMBgsgAUEIOgAIIAFBCGogAUEfakHslMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMBQsgAUEIOgAIIAFBCGogAUEfakHslMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMBAsgAUEHOgAIIAFBCGogAUEfakHslMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMAwsgAUEJOgAIIAFBCGogAUEfakHslMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMAgsgAUEKOgAIIAFBCGogAUEfakHslMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMAQsgBygCBCELIAcoAgghDSMAQdAAayIEJAAgBEIANwIcIAQgCzYCFCAEIAsgDUEFdGo2AhggBEGAgICAeDYCRCAEQSRqIARBFGoQ1QsCQAJ/AkAgBC0AJEUEQEEAIQ0DQAJAAkACQAJAAkACQCAELQAlQQFrDgMCAAMBCyAEKAIcIARBADYCHA0EDB0LIAQoAkRBgICAgHhHBEBBhI/AAEEJELMPDAgLIARBJGogBEEUahCVGCAEKAIoIQsgBCgCJCIOQYCAgIB4Rg0GIAQoAiwhCSAEQcQAahC1GiAEIAk2AkwgBCALNgJIIAQgDjYCRAwDCyANRQ0BQZuPwABBBRCzDwwGCyAEKAJEIgtBgICAgHhHBEAgBCAEKQJINwIsIAQgCzYCKCAEQYCAgIB4NgIkIAQgBkEAIA0bNgI0IAQgBEEUahDgDSAEKAIAQQFxBEAgBCgCBCEGIAVBhICAgHg2AgAgBSAGNgIEIARBJGoQkhcMCAsgBSAEKQIkNwIAIAVBGGogBEE8aikCADcCACAFQRBqIARBNGopAgA3AgAgBUEIaiAEQSxqKQIANwIADAcLQYSPwABBCRCyDwwFCyAEQQhqIARBFGoQwBBBASENIAQoAgwiBiAEKAIIQQFxDQQaCyAEQSRqIARBFGoQ1QsgBC0AJEUNAAsLIAQoAigMAQsgCwshBiAEKAJEQYCAgIB4RwRAIARBxABqEModCyAFQYSAgIB4NgIAIAUgBjYCBAsgBEHQAGokAAsgAUEgaiQAIAcoAhBBhICAgHhHDQEgBRCIEUEAIQYjAEEgayIBJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQRUgBygCAEGAgICAeHMiBCAEQRVPG0EBaw4VAQIDBAUGBwgJCgsMDQ4PEBESExQVAAsgBy0ABCEEIAFBADoACCABIAQ6AAkgAUEIaiABQR9qQfyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwVCyAHMQAEITkgAUEBOgAIIAEgOTcDECABQQhqIAFBH2pB/JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDBQLIAczAQQhOSABQQE6AAggASA5NwMQIAFBCGogAUEfakH8lMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMEwsgBzUCBCE5IAFBAToACCABIDk3AxAgAUEIaiABQR9qQfyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwSCyAHKQMIITkgAUEBOgAIIAEgOTcDECABQQhqIAFBH2pB/JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDBELIAcwAAQhOSABQQI6AAggASA5NwMQIAFBCGogAUEfakH8lMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMEAsgBzIBBCE5IAFBAjoACCABIDk3AxAgAUEIaiABQR9qQfyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwPCyAHNAIEITkgAUECOgAIIAEgOTcDECABQQhqIAFBH2pB/JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDA4LIAcpAwghOSABQQI6AAggASA5NwMQIAFBCGogAUEfakH8lMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMDQsgByoCBCE6IAFBAzoACCABIDq7OQMQIAFBCGogAUEfakH8lMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMDAsgBysDCCE7IAFBAzoACCABIDs5AxAgAUEIaiABQR9qQfyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwLCyAHKAIEIQQgAUEANgIEIAECfyAEQYABTwRAIARBgBBPBEAgBEGAgARPBEAgASAEQT9xQYABcjoAByABIARBEnZB8AFyOgAEIAEgBEEGdkE/cUGAAXI6AAYgASAEQQx2QT9xQYABcjoABUEEDAMLIAEgBEE/cUGAAXI6AAYgASAEQQx2QeABcjoABCABIARBBnZBP3FBgAFyOgAFQQMMAgsgASAEQT9xQYABcjoABSABIARBBnZBwAFyOgAEQQIMAQsgASAEOgAEQQELNgIQIAFBBToACCABIAFBBGo2AgwgAUEIaiABQR9qQfyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwKCyAHKQMIITkgAUEFOgAIIAEgOTcCDCABQQhqIAFBH2pB/JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAkLIAcpAgQhOSABQQU6AAggASA5NwIMIAFBCGogAUEfakH8lMAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMCAsgBykDCCE5IAFBBjoACCABIDk3AgwgAUEIaiABQR9qQfyUwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwHCyAHKQIEITkgAUEGOgAIIAEgOTcCDCABQQhqIAFBH2pB/JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAYLIAFBCDoACCABQQhqIAFBH2pB/JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAULIAFBCDoACCABQQhqIAFBH2pB/JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAQLIAFBBzoACCABQQhqIAFBH2pB/JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAMLIAFBCToACCABQQhqIAFBH2pB/JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAILIAFBCjoACCABQQhqIAFBH2pB/JTAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAELIAcoAgQhCyAHKAIIIQ1BACEOIwBB4ABrIgQkACAEQgA3AhwgBCALNgIUIAQgCyANQQV0ajYCGCAEQYCAgIB4NgJEIARBJGogBEEUahDXCwJAAkACfwJAIAQtACQNAEECIQ0DQAJAAkACQAJAAkACQAJAIAQtACVBAWsOBAIDAAQBCyAEKAIcIARBADYCHA0FDB4LIAQoAkRBgICAgHhHBEBBACELQY2PwABBChCzDyEODAkLIARBJGogBEEUahCVGCAEKAIoIgsgBCgCJCIJQYCAgIB4Rg0HGiAEKAIsIQwgBEHEAGoQtRogBCAMNgJMIAQgCzYCSCAEIAk2AkQMBAsgDUECRwRAQQAhC0GXj8AAQQQQsw8hDgwICyAEQSRqIARBFGoQkxcgBC0AJA0FIAQtACUhDQwDCyAGRQ0BQQAhC0Gbj8AAQQUQsw8hDgwGCyAEKAJEQYCAgIB4RyILRQRAQY2PwABBChCyDyEODAYLIARB2ABqIARBzABqKAIANgIAIAQgBCkCRDcDUCANQQJGBEBBl4/AAEEEELIPIQ4gBEHQAGoQyh0MBgsgBCAEKQJUNwIsIAQgBCgCUDYCKCAEQYGAgIB4NgIkIAQgDUEBcToAOCAEIA5BACAGGzYCNCAEIARBFGoQ4A0gBCgCAEEBcQRAIAQoAgQhBiAFQYSAgIB4NgIAIAUgBjYCBCAEQSRqEJIXDAcLIAUgBCkCJDcCACAFQRhqIARBPGopAgA3AgAgBUEQaiAEQTRqKQIANwIAIAVBCGogBEEsaikCADcCAAwGCyAEQQhqIARBFGoQwBBBASEGIAQoAgwhDiAEKAIIQQFxRQ0AQQAhCwwECyAEQSRqIARBFGoQ1wsgBC0AJEUNAAsLIAQoAigLIQ5BACELCwJAIAsNACAEKAJEQYCAgIB4Rg0AIARBxABqEModCyAFQYSAgIB4NgIAIAUgDjYCBAsgBEHgAGokAAsgAUEgaiQAIAcoAhBBhICAgHhHDQIgBRCIEUEAIQYjAEEgayIBJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQRUgBygCAEGAgICAeHMiBCAEQRVPG0EBaw4VAQIDBAUGBwgJCgsMDQ4PEBESExQVAAsgBy0ABCEEIAFBADoACCABIAQ6AAkgAUEIaiABQR9qQYyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwVCyAHMQAEITkgAUEBOgAIIAEgOTcDECABQQhqIAFBH2pBjJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDBQLIAczAQQhOSABQQE6AAggASA5NwMQIAFBCGogAUEfakGMlcAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMEwsgBzUCBCE5IAFBAToACCABIDk3AxAgAUEIaiABQR9qQYyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwSCyAHKQMIITkgAUEBOgAIIAEgOTcDECABQQhqIAFBH2pBjJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDBELIAcwAAQhOSABQQI6AAggASA5NwMQIAFBCGogAUEfakGMlcAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMEAsgBzIBBCE5IAFBAjoACCABIDk3AxAgAUEIaiABQR9qQYyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwPCyAHNAIEITkgAUECOgAIIAEgOTcDECABQQhqIAFBH2pBjJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDA4LIAcpAwghOSABQQI6AAggASA5NwMQIAFBCGogAUEfakGMlcAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMDQsgByoCBCE6IAFBAzoACCABIDq7OQMQIAFBCGogAUEfakGMlcAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMDAsgBysDCCE7IAFBAzoACCABIDs5AxAgAUEIaiABQR9qQYyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwLCyAHKAIEIQQgAUEANgIEIAECfyAEQYABTwRAIARBgBBPBEAgBEGAgARPBEAgASAEQT9xQYABcjoAByABIARBEnZB8AFyOgAEIAEgBEEGdkE/cUGAAXI6AAYgASAEQQx2QT9xQYABcjoABUEEDAMLIAEgBEE/cUGAAXI6AAYgASAEQQx2QeABcjoABCABIARBBnZBP3FBgAFyOgAFQQMMAgsgASAEQT9xQYABcjoABSABIARBBnZBwAFyOgAEQQIMAQsgASAEOgAEQQELNgIQIAFBBToACCABIAFBBGo2AgwgAUEIaiABQR9qQYyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwKCyAHKQMIITkgAUEFOgAIIAEgOTcCDCABQQhqIAFBH2pBjJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAkLIAcpAgQhOSABQQU6AAggASA5NwIMIAFBCGogAUEfakGMlcAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMCAsgBykDCCE5IAFBBjoACCABIDk3AgwgAUEIaiABQR9qQYyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwHCyAHKQIEITkgAUEGOgAIIAEgOTcCDCABQQhqIAFBH2pBjJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAYLIAFBCDoACCABQQhqIAFBH2pBjJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAULIAFBCDoACCABQQhqIAFBH2pBjJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAQLIAFBBzoACCABQQhqIAFBH2pBjJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAMLIAFBCToACCABQQhqIAFBH2pBjJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAILIAFBCjoACCABQQhqIAFBH2pBjJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAELIAcoAgQhCyAHKAIIIQ1BACEOIwBB4ABrIgQkACAEQgA3AhwgBCALNgIUIAQgCyANQQV0ajYCGCAEQYCAgIB4NgJEIARBJGogBEEUahDWCwJAAkACfwJAIAQtACQNAEECIQ0DQAJAAkACQAJAAkACQAJAIAQtACVBAWsOBAIDAAQBCyAEKAIcIARBADYCHA0FDB4LIAQoAkRBgICAgHhHBEBBACELQaCPwABBDBCzDyEODAkLIARBJGogBEEUahCVGCAEKAIoIgsgBCgCJCIJQYCAgIB4Rg0HGiAEKAIsIQwgBEHEAGoQtRogBCAMNgJMIAQgCzYCSCAEIAk2AkQMBAsgDUECRwRAQQAhC0GXj8AAQQQQsw8hDgwICyAEQSRqIARBFGoQkxcgBC0AJA0FIAQtACUhDQwDCyAGRQ0BQQAhC0Gbj8AAQQUQsw8hDgwGCyAEKAJEQYCAgIB4RyILRQRAQaCPwABBDBCyDyEODAYLIARB2ABqIARBzABqKAIANgIAIAQgBCkCRDcDUCANQQJGBEBBl4/AAEEEELIPIQ4gBEHQAGoQyh0MBgsgBCAEKQJUNwIsIAQgBCgCUDYCKCAEQYKAgIB4NgIkIAQgDUEBcToAOCAEIA5BACAGGzYCNCAEIARBFGoQ4A0gBCgCAEEBcQRAIAQoAgQhBiAFQYSAgIB4NgIAIAUgBjYCBCAEQSRqEJIXDAcLIAUgBCkCJDcCACAFQRhqIARBPGopAgA3AgAgBUEQaiAEQTRqKQIANwIAIAVBCGogBEEsaikCADcCAAwGCyAEQQhqIARBFGoQwBBBASEGIAQoAgwhDiAEKAIIQQFxRQ0AQQAhCwwECyAEQSRqIARBFGoQ1gsgBC0AJEUNAAsLIAQoAigLIQ5BACELCwJAIAsNACAEKAJEQYCAgIB4Rg0AIARBxABqEModCyAFQYSAgIB4NgIAIAUgDjYCBAsgBEHgAGokAAsgAUEgaiQAIAcoAhBBhICAgHhHDQMgBRCIEUEAIQYjAEEgayIBJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQRUgBygCAEGAgICAeHMiBCAEQRVPG0EBaw4VAQIDBAUGBwgJCgsMDQ4PEBESExQVAAsgBy0ABCEEIAFBADoACCABIAQ6AAkgAUEIaiABQR9qQZyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwVCyAHMQAEITkgAUEBOgAIIAEgOTcDECABQQhqIAFBH2pBnJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDBQLIAczAQQhOSABQQE6AAggASA5NwMQIAFBCGogAUEfakGclcAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMEwsgBzUCBCE5IAFBAToACCABIDk3AxAgAUEIaiABQR9qQZyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwSCyAHKQMIITkgAUEBOgAIIAEgOTcDECABQQhqIAFBH2pBnJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDBELIAcwAAQhOSABQQI6AAggASA5NwMQIAFBCGogAUEfakGclcAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMEAsgBzIBBCE5IAFBAjoACCABIDk3AxAgAUEIaiABQR9qQZyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwPCyAHNAIEITkgAUECOgAIIAEgOTcDECABQQhqIAFBH2pBnJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDA4LIAcpAwghOSABQQI6AAggASA5NwMQIAFBCGogAUEfakGclcAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMDQsgByoCBCE6IAFBAzoACCABIDq7OQMQIAFBCGogAUEfakGclcAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMDAsgBysDCCE7IAFBAzoACCABIDs5AxAgAUEIaiABQR9qQZyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwLCyAHKAIEIQQgAUEANgIEIAECfyAEQYABTwRAIARBgBBPBEAgBEGAgARPBEAgASAEQT9xQYABcjoAByABIARBEnZB8AFyOgAEIAEgBEEGdkE/cUGAAXI6AAYgASAEQQx2QT9xQYABcjoABUEEDAMLIAEgBEE/cUGAAXI6AAYgASAEQQx2QeABcjoABCABIARBBnZBP3FBgAFyOgAFQQMMAgsgASAEQT9xQYABcjoABSABIARBBnZBwAFyOgAEQQIMAQsgASAEOgAEQQELNgIQIAFBBToACCABIAFBBGo2AgwgAUEIaiABQR9qQZyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwKCyAHKQMIITkgAUEFOgAIIAEgOTcCDCABQQhqIAFBH2pBnJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAkLIAcpAgQhOSABQQU6AAggASA5NwIMIAFBCGogAUEfakGclcAAELUOIQQgBUGEgICAeDYCACAFIAQ2AgQMCAsgBykDCCE5IAFBBjoACCABIDk3AgwgAUEIaiABQR9qQZyVwAAQtQ4hBCAFQYSAgIB4NgIAIAUgBDYCBAwHCyAHKQIEITkgAUEGOgAIIAEgOTcCDCABQQhqIAFBH2pBnJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAYLIAFBCDoACCABQQhqIAFBH2pBnJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAULIAFBCDoACCABQQhqIAFBH2pBnJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAQLIAFBBzoACCABQQhqIAFBH2pBnJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAMLIAFBCToACCABQQhqIAFBH2pBnJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAILIAFBCjoACCABQQhqIAFBH2pBnJXAABC1DiEEIAVBhICAgHg2AgAgBSAENgIEDAELIAcoAgQhCyAHKAIIIQ1BACEOIwBB4ABrIgQkACAEQgA3AhwgBCALNgIUIAQgCyANQQV0ajYCGCAEQYCAgIB4NgJEIARBJGogBEEUahDYCwJAAkACfwJAIAQtACQNAEECIQ0DQAJAAkACQAJAAkACQAJAIAQtACVBAWsOBAIDAAQBCyAEKAIcIARBADYCHA0FDB4LIAQoAkRBgICAgHhHBEBBACELQayPwABBDhCzDyEODAkLIARBJGogBEEUahCVGCAEKAIoIgsgBCgCJCIJQYCAgIB4Rg0HGiAEKAIsIQwgBEHEAGoQtRogBCAMNgJMIAQgCzYCSCAEIAk2AkQMBAsgDUECRwRAQQAhC0GXj8AAQQQQsw8hDgwICyAEQSRqIARBFGoQkxcgBC0AJA0FIAQtACUhDQwDCyAGRQ0BQQAhC0Gbj8AAQQUQsw8hDgwGCyAEKAJEQYCAgIB4RyILRQRAQayPwABBDhCyDyEODAYLIARB2ABqIARBzABqKAIANgIAIAQgBCkCRDcDUCANQQJGBEBBl4/AAEEEELIPIQ4gBEHQAGoQyh0MBgsgBCAEKQJUNwIsIAQgBCgCUDYCKCAEQYOAgIB4NgIkIAQgDUEBcToAOCAEIA5BACAGGzYCNCAEIARBFGoQ4A0gBCgCAEEBcQRAIAQoAgQhBiAFQYSAgIB4NgIAIAUgBjYCBCAEQSRqEJIXDAcLIAUgBCkCJDcCACAFQRhqIARBPGopAgA3AgAgBUEQaiAEQTRqKQIANwIAIAVBCGogBEEsaikCADcCAAwGCyAEQQhqIARBFGoQwBBBASEGIAQoAgwhDiAEKAIIQQFxRQ0AQQAhCwwECyAEQSRqIARBFGoQ2AsgBC0AJEUNAAsLIAQoAigLIQ5BACELCwJAIAsNACAEKAJEQYCAgIB4Rg0AIARBxABqEModCyAFQYSAgIB4NgIAIAUgDjYCBAsgBEHgAGokAAsgAUEgaiQAIAcoAhBBhICAgHhHDQQgBRCIEUGglsAAQT0Q+gshASAIQYSAgIB4NgIAIAggATYCBAwFCyAIIAcpAhA3AgAgCEEYaiAHQShqKQIANwIAIAhBEGogB0EgaikCADcCACAIQQhqIAdBGGopAgA3AgAMBAsgCCAHKQIQNwIAIAhBGGogB0EoaikCADcCACAIQRBqIAdBIGopAgA3AgAgCEEIaiAHQRhqKQIANwIADAMLIAggBykCEDcCACAIQRhqIAdBKGopAgA3AgAgCEEQaiAHQSBqKQIANwIAIAhBCGogB0EYaikCADcCAAwCCyAIIAcpAhA3AgAgCEEYaiAHQShqKQIANwIAIAhBEGogB0EgaikCADcCACAIQQhqIAdBGGopAgA3AgAMAQsgCCAHKQIQNwIAIAhBGGogB0EoaikCADcCACAIQRBqIAdBIGopAgA3AgAgCEEIaiAHQRhqKQIANwIACyAHEIwMCyAHQTBqJAAgCigCxAEiASAKKALAASIEQYSAgIB4Rg0GGiAKQZABaiIGIB5BEGopAgA3AwAgCkGIAWoiBSAeQQhqKQIANwMAIAogHikCADcDgAEgCigCUEGEgICAeEcEQCAKQdAAahCSFwsgHyAKKQOAATcCACAfQQhqIAUpAwA3AgAgH0EQaiAGKQMANwIAIAogATYCVCAKIAQ2AlAMAwsMCQsgCigCDCAKQQA2AgwEQCAKQcABaiEVIAooAhAhASMAQYABayIIJAAgCCABNgIMAkACQAJAIAEQhSBBAUcEQCAIQQxqIAhB6ABqQfyPwAAQzAMhBCAVQYCAgIB4NgIAIBUgBDYCBCABQYQBSQ0BIAEQrxUMAQsgCEEQaiIEIAFByJPAABC5GCAIQYCAgIB4NgIkIAhBgICAgHg2AjAgCEGAgICAeDYCPCAIQegAaiAEENAGAkACQAJ/IAgtAGhFBEADQAJAAkACQAJAAkACQAJAAkACQCAILQBpQQFrDgQCAwAEAQsgCCAIQRBqEMEUDAcLIAgoAiRBgICAgHhGDQVBlJHAAEEEELMPDAkLIAgoAjBBgICAgHhGDQNBmJHAAEEMELMPDAgLIAgoAjxBgICAgHhGDQFBpJHAAEEIELMPDAcLIAgoAiRBgICAgHhHIgRFBEBBlJHAAEEEELIPIQEgFUGAgICAeDYCACAVIAE2AgRBACELDAgLIAhB0ABqIAhBLGooAgA2AgAgCCAIKQIkNwNIAkAgCCgCMEGAgICAeEciC0UEQEGYkcAAQQwQsg8hASAVQYCAgIB4NgIAIBUgATYCBAwBCyAIQeAAaiAIQThqKAIANgIAIAggCCkCMDcDWCAIKAI8IgFBgICAgHhHBEAgCCkCQCE5IAhB8ABqIgQgCEEsaigCADYCACAIQfwAaiAIQThqKAIANgIAIBUgCCkCJDcCACAVIDk3AhwgFSABNgIYIAggCCkCMDcCdCAVQQhqIAQpAwA3AgAgFUEQaiAIQfgAaikDADcCAAwKC0GkkcAAQQgQsg8hASAVQYCAgIB4NgIAIBUgATYCBCAIQdgAaiIBEIQVIAEQxx0LIAhByABqEModDAcLIAgoAhAgCEEANgIQBEAgCEHoAGohBCAIKAIUIQYjAEEwayIBJAAgASAGNgIcIAFBEGogBhCnHwJAAkAgASgCECIGRQ0AIAFBCGogBiABKAIUEPsTIAFBIGogASgCCCABKAIMEOEaIAEoAiBBgICAgHhGDQAgBCABKQIgNwIAIARBCGogAUEoaigCADYCAAwBCyABQRxqIAFBL2pB3I/AABDMAyEGIARBgICAgHg2AgAgBCAGNgIECyABKAIcIgRBhAFPBEAgBBCvFQsgAUEwaiQAIAgoAmwiASAIKAJoIgRBgICAgHhGDQYaIAgoAnAhBiAIKAI8QYCAgIB4RwRAIAhBPGoQyh0LIAggBjYCRCAIIAE2AkAgCCAENgI8DAMLDAkLIAgoAhAgCEEANgIQBEAgCEHoAGohICAIKAIUIQEjAEHgAGsiFiQAIBZBOGogARC9CiAWKAI8IQECQCAWKAI4IgRBgICAgHhGBEAgIEGAgICAeDYCACAgIAE2AgQMAQsgFiAWKAJAIgY2AgwgFiABNgIIIBYgBDYCBCAWQRBqIRdBACEJQQAhDEEAISwjAEHQAGsiDyQAIA8gBjYCFCAPIAE2AhAgD0EYaiEYIwBBoAFrIhAkACAPQRBqIhMoAgQhLSATKAIAIS4gEEEANgJEIBBBADYCPCAQQcgAaiEGIwBB4ABrIgUkACAFQQA2AgwgBUKAgICAwAA3AgQgEygCACEBIBMoAgQhBCAFQThqIBMQ2gcCQAJAAkACQAJAAkAgBSgCOEEBaw4DAgEAAQsgBUEEakGMw8AAEMYSIAUoAggiASAFKQI8NwIAIAFBCGogBUHEAGooAgA2AgAgBUEBNgIMIAVBOGpBBHIhBwJAA0ACQCATKAIEIQ0gEygCACESIwBB0ABrIgQkACAEQQA2AhAgBEEANgIIIARBKGoiASATEPQEAkACQCAFQRBqIgsCfyAEKAIoIg5BA0YEQCABIBNBi73AAEECENYHIAQoAigiDkEDRwRAIAQoAiwhASAEQRBqIARBPGopAgA3AwAgBEEYaiAEQcQAaikCADcDACAEQSBqIARBzABqKAIANgIAIAQgBCkCNDcDCCAEKAIwDAILIARBADYCECAEQQA2AgggBEEoaiATEPQEIAQoAigiDkEDRg0CCyAEQRBqIARBPGopAgA3AwAgBEEYaiAEQcQAaikCADcDACAEQSBqIARBzABqKAIANgIAIAQgBCkCNDcDCCAEKAIsIQEgBCgCMAs2AgggCyABNgIEIAsgDjYCACALIAQpAwg3AgwgC0EUaiAEQRBqKQMANwIAIAtBHGogBEEYaikDADcCACALQSRqIARBIGooAgA2AgAMAQsgC0EDNgIACyAEQdAAaiQAIAUoAhAiAUEDRwRAIAFBAUcNASATIA02AgQgEyASNgIAIAYgBSkCBDcCBCAGQQM2AgAgBkEMaiAFQQxqKAIANgIADAgLIBMoAgQgDUYNBSAFQThqIgEgExDaByAFKAI4IgRBA0cEQCAEQQFGDQMgBiABQSj8CgAADAcLIAUoAgwiASAFKAIERgRAIAVBBGpBjMPAABDGEgsgBSgCCCABQQxsaiIEIAcpAgA3AgAgBEEIaiAHQQhqKAIANgIAIAUgAUEBajYCDAwBCwsgBiAFQRBqQSj8CgAADAQLIBMgDTYCBCATIBI2AgAgBiAFKQIENwIEIAZBAzYCACAGQQxqIAVBDGooAgA2AgAMBAsgBiAFQThqQSj8CgAADAILIBMgBDYCBCATIAE2AgAgBiAFKQIENwIEIAZBAzYCACAGQQxqIAVBDGooAgA2AgAMAgsgBkEANgIgIAYgDTYCHCAGQQc6AAggBkECNgIAIAYgEygCADYCGAsgBUEEaiIEIgEoAggiBgRAIAEoAgQhAQNAIAEQhBUgAUEEQQgQ8gwgAUEMaiEBIAZBAWsiBg0ACwsgBEEEQQwQ8gwLIAVB4ABqJAACQAJAIBAoAkhBA0YEQCAQKAJUIQQgECgCUCEBIBAoAkwhBiAQQQA2ApABIBBBADYCgAEgECAGNgJ4IBAgATYCdCAQIAE2AnAgECABIARBDGxqNgJ8IBBBEGpBBHIhJyMAQUBqIhkkACAQQfAAaiIEQRBqIQsgBCgCDCENIAQoAgAhDiAEKAIEIQUgBCgCFCEGIAQoAhwhByAEKAIQIQECQAJAAkACfwJAA0AgAQRAIAYgB0cNAiALEKANIAtBADYCAAsgGUEANgIQIBlBEGoQphoCQCAORSAFIA1Gcg0AIAQgBUEMaiIBNgIEIAUoAgAiBkGAgICAeEYNACAEIAY2AhggBCAFQQRqKQIAIjmnIgY2AhQgBCAGNgIQIAQgBiA5QiCIp0EDdGoiBzYCHCABIQUgBiEBDAELCwJAIAQoAiAEQCAEKAIkIgUgBCgCLCIBRw0BIARBIGoiARCgDSABQQA2AgALICdBADYCCCAnQoCAgIDAADcCACAEEIMVDAMLIAQgBUEIaiIGNgIkIAEgBmtBA3YhBiAFKAIEIQEgBSgCACEFQQAMAQsgBCAGQQhqIgs2AhQgBigCACEFIAYoAgQhASAEKAIsIAQoAiRrQQN2QQAgBCgCIBshBiAHIAtrQQN2CyELIBlBEGoiEkEDIAYgC2oiBiAGQQNNG0EBakEEQQgQggogGSgCFCEGIBkoAhBBAUYNASAZKAIYIgsgATYCBCALIAU2AgAgGUEMaiI2QQE2AgAgGSALNgIIIBkgBjYCBCASIARBMPwKAAAgGUEEaiEjIwBBEGsiJCQAIBJBIGohLyASQRBqITAgEigCLCExIBIoAiAhMiASKAIkIQcgEigCBCEFIBIoAhQhBiASKAIcIQ0gEigCECEOIBIoAgwhNyASKAIAITgCQANAIAUhBCAGIQEgDSELAkACfwJAAkADQCAOBEAgASALRw0DIDAQoA0gMEEANgIACyAkQQA2AgggJEEIahCmGiA4RQRAIAYhASANIQsMAgsgBCA3RgRAIAQhBQwCCyASIARBDGoiDjYCBCAEKAIAIihBgICAgHhHBEAgEiAoNgIYIBIgBEEEaikCACI5pyIBNgIUIBIgATYCECASIAEgOUIgiKdBA3RqIgs2AhwgDiEEIAEhDgwBCwsgBEEMaiEFCyAyRQ0EIAcgMUYNAiASIAdBCGoiBDYCJCAHKAIEISggBygCACEzQQAhDiAEIQcgASEGIAsMAQsgEiABQQhqIgY2AhQgASgCACEzIAEoAgQhKCAEIQUgCwshDSAjKAIIIgEgIygCAEYEQCAjIAEgMSAHa0EDdkEAIDIbIA0gBmtBA3ZBACAOG2pBAWpBBEEIELYTCyAjKAIEIAFBA3RqIgQgKDYCBCAEIDM2AgAgIyABQQFqNgIIDAELCyAvEKANIC9BADYCAAsgJEEANgIAICQQphogEhCDFSAkQRBqJAAgJ0EIaiA2KAIANgIAICcgGSkCBDcCAAsgGUFAayQADAELIAYgGSgCGEHUucAAELQaAAsMAQsgEEEQaiAQQcgAakEo/AoAACAQKAIQIgFBA0YNACAYIBApAyA3AxAgEEEIaiAQQRxqKAIAIgQ2AgAgGEEYaiAQQShqKQMANwMAIBhBIGogEEEwaikDADcDACAQIBApAhQiOTcDACAYQQxqIAQ2AgAgGCA5NwIEIBggATYCAAwBCyAQQQhqIBBBHGooAgAiBDYCACAQIBApAhQiOTcDACAQQdAAaiIBIAQ2AgAgECA5NwNIAn8gBEUEQCAQQcgAaiIEEIQVIARBBEEIEPIMIBMgLTYCBCATIC42AgBBBSEGQQEMAQsgECAQKABNNgJwIBAgASgAADYAcyAQLQBMIQYgECgCSCEBQQMLIQQgGCAGOgAIIBggATYCBCAYIAQ2AgAgGCAQKQJwNwAJIBhBADYCICAYIC02AhwgGCAuNgIYIBhBEGogEEH3AGopAAA3AAALIBBBoAFqJAACQAJAAn8CQAJAIA8oAhgiAUEDRwRAIAENASAPKAIQIQEgD0HEAGogDygCFCIGQQFBARCCCiAPKAJIIQ0gDygCREEBRg0EIA8oAkwhCyAGBEAgCyABIAb8CgAACyAPIA8oAhRBAWtBABDxG0EBIQEgDygCBCEOIA8oAgAhBwwCCyAXIA8pAhw3AgAgF0EIaiAPQSRqKAIANgIAQYCAgIB4IQZBGAwCCyAPKAI8IA8oAjghBCAPKAIwIQ4gDygCLCEsIA8oAighCSAPKAIkIQwgDy0AICEBIA8oAhAhByAPQcQAaiAPKAIUIgZBAUEBEIIKIA8oAkghDSAPKAJEQQFGDQIgDygCTCELIAYEQCALIAcgBvwKAAALIA9BCGogDiAPKAIQa0EAEPEbIA8oAgwhDiAPKAIIIQcgAUH/AXFBB0cEQCAPQcIAaiAPQSFqIgRBAmotAAA6AAAgDyAELwAAOwFADAELQQRBBiAEGyEBIQkgBCEMCyAXIAE6AAAgFyAPLwFAOwABIBcgCzYCHCAXIA02AhggFyAHNgIQIBcgLDYCDCAXIAk2AgggFyAMNgIEIBcgDjYCFCAXQQNqIA9BwgBqLQAAOgAAQSALIBdqIAY2AgAgD0HQAGokAAwBCyANIA8oAkxBsLrAABC0GgALAkAgFigCKEGAgICAeEcEQCAWQThqIgQgF0Eo/AoAACMAQTBrIgEkACABQQA2AhwgAUKAgICAEDcCFCABQcydwAA2AiQgAUKggICADjcCKCABIAFBFGo2AiAgBCABQSBqEP0OBEBB9J3AAEE3IAFBCGpB5J3AAEH4nsAAEPAMAAsgAUEQaiABQRxqKAIAIgY2AgAgASABKQIUNwMIIAEoAgwgBhDjGiEGIAFBCGoQyh0gBEEYahDKHSABQTBqJAAgIEGAgICAeDYCACAgIAY2AgQMAQsgICAWKQMQNwIAICBBCGogFkEYaigCADYCAAsgFkEEahDKHQsgFkHgAGokACAIKAJsIgEgCCgCaCIEQYCAgIB4Rg0FGiAIKAJwIQYgCCgCMEGAgICAeEcEQCAIQTBqIgUQhBUgBRDHHQsgCCAGNgI4IAggATYCNCAIIAQ2AjAMAgsMCAsgCCgCECAIQQA2AhBFDQcgCEHoAGogCCgCFBC9CiAIKAJsIgEgCCgCaCIEQYCAgIB4Rg0DGiAIKAJwIQYgCEEkahC1GiAIIAY2AiwgCCABNgIoIAggBDYCJAsgCEHoAGogCEEQahDQBiAILQBoRQ0ACwsgCCgCbAshASAVQYCAgIB4NgIAIBUgATYCBEEAIQtBACEECyAIKAI8QYCAgIB4RwRAIAhBPGoQyh0LIAsgCCgCMEGAgICAeEZyRQRAIAhBMGoiARCEFSABEMcdCyAEIAgoAiRBgICAgHhGcg0AIAhBJGoQyh0LIAhBEGoQzBYLIAhBgAFqJAAMAQtBuJLAAEExEJUfAAsgCigCxAEiASAKKALAASIEQYCAgIB4Rg0FGiAKQZgBaiIGIB5BGGooAgA2AgAgCkGQAWoiBSAeQRBqKQIANwMAIApBiAFqIgsgHkEIaikCADcDACAKIB4pAgA3A4ABIAooAixBgICAgHhHBEAgCkEsahDqFwsgJiAKKQOAATcCACAmQQhqIAspAwA3AgAgJkEQaiAFKQMANwIAICZBGGogBigCADYCACAKIAE2AjAgCiAENgIsDAILDAgLIAooAgwgCkEANgIMRQ0HIApBwAFqIAooAhAQvQogCigCxAEiASAKKALAASIEQYCAgIB4Rg0DGiAKKALIASEGIApBIGoQtRogCiAGNgIoIAogATYCJCAKIAQ2AiALIApBwAFqIApBDGoQzwYgCi0AwAFFDQALCyAKKALEAQshASAUQYCAgIB4NgIAIBQgATYCBEEAIQFBACELCyAKKAJQQYSAgIB4RwRAIApB0ABqEJIXCyABIAooAixBgICAgHhGckUEQCAKQSxqEOoXCyALIAooAiBBgICAgHhGcg0AIApBIGoQyh0LIApBDGoQzBYLIApB8AFqJAAMAgtBuJLAAEExEJUfAAtB7KfAAEEsQfiowAAQ4w8ACyAcKAJcQYCAgIB4Rg0CIBxBDGoiASAUQdAA/AoAACAqIAFB0AD8CgAAIABBBGohACAqQdAAaiEqICVBAWohJSArQQFrIisNAAsLIDUgJTYCACAcQbABaiQADAELIBwgHCgCYDYCrAEjAEEgayIAJAAgAEEANgIIIABCgICAgBA3AgAgAEGko8AANgIQIABCoICAgA43AhQgACAANgIMIBxBrAFqIABBDGoQkQ0EQEHMo8AAQTcgAEEfakG8o8AAQdCkwAAQ8AwACyAcQQxqIgEgACkCADcCACABQQhqIABBCGooAgA2AgAgAEEgaiQAIBwoAhAgHCgCFBCVHwALICJBEGokACAdQQhqIDQoAgA2AgAgHSAbKQIINwIAIBtBIGokACMAQRBrIgAkAAJAAkAgGiAdKAIIIgEgHSgCAEkEfyAAQQhqIB0gAUEEQdAAEOUIIAAoAggiAUGBgICAeEcNASAdKAIIBSABCzYCBCAaIB0oAgQ2AgAgAEEQaiQADAELIAEgACgCDEHMp8AAELQaAAsgGigCBCEEIBooAgAhBiApBEAgISEBICkhAANAIAEoAgAiBUGEAU8EQCAFEK8VCyABQQRqIQEgAEEBayIADQALICEgKUECdEEEEPgcCyARQQhqIgAgBjYCACAAIAQ2AgQgGkEgaiQAIBEgESgCDCIANgIcIBEgESgCCDYCGCARIAA2AhQCQCACBEAgESACIAMQ+xMgEUEgaiARKAIAIBEoAgQQ4RoMAQsgEUGAgICAeDYCIAsgEUHEAGoiBSEEIBFBFGohBiMAQRBrIgEkAAJAAkACQCARQSBqIgIoAgAiA0GAgICAeEcEQCACKAIIIQAgAigCBCECDAELQRMhACABQQRqQRNBAUEBEIIKIAEoAgghAyABKAIEQQFGDQEgASgCDCICQQ9qQauTwAAoAAA2AAAgAkEIakGkk8AAKQAANwAAIAJBnJPAACkAADcAAAsgBCAANgIUIAQgAjYCECAEIAM2AgwgBCAGKQIANwIAIARBCGogBkEIaigCADYCACABQRBqJAAMAQsgAyABKAIMQaiSwAAQtBoACyARKAJMIQEgESgCSCEAIBEgESgCRDYCaCARIAA2AmQgESAANgJgIBEgACABQdAAbGo2AmwjAEEgayIEJAAgBEEUaiARQeAAaiIAKAIMIAAoAgRrQdAAbkEEQeQAEIIKIAQoAhghASAEKAIUQQFGBEAgASAEKAIcQZCrwAAQtBoACyAEQRBqIgtBADYCACAEIAQoAhw2AgwgBCABNgIIIwBBIGsiAiQAIAAoAgwgACgCBGtB0ABuIgYgBEEIaiIBKAIAIAEoAggiA2tLBEAgASADIAZBBEHkABCyEyABKAIIIQMLIAEoAgQhBiACQQhqIABBCGopAgA3AwAgAiAAKQIANwMAIAIgBjYCHCACIAM2AhggAiABQQhqNgIUIAJBFGohBgJAIAIoAgQiASACKAIMIg1GBEAgBigCBCEDDAELIAYoAgggBigCBCIDQeQAbGohAANAIAAgAUHQAPwKAAAgAEHgAGpBADsBACAAQdwAakEANgIAIABB0ABqQYCAgIB4NgIAIABB5ABqIQAgA0EBaiEDIAFB0ABqIgEgDUcNAAsgBiADNgIEIAIgATYCBAsgBigCACADNgIAIwBBEGsiASQAIAIoAgwiBiACKAIEIgBrQdAAbiEDIAAgBkcEQCAAQTBqIQADQCAAQTBrEModIABBJGsQyh0gAEEYayIGEIQVIAYQxx0gAEEMaxDKHSAAKAIAQYSAgIB4TgR/IAAQyh1BDAVBBAsgAGoQyh0gAEHQAGohACADQQFrIgMNAAsLIAEgAigCADYCDCABIAIoAgg2AgggAUEIakEEQdAAEPIMIAFBEGokACACQSBqJAAgEUEsaiIAQQhqIAsoAgA2AgAgACAEKQIINwIAIARBIGokACARQUBrIBFB2ABqIgAoAgA2AgAgESARKQJQNwI4IBFB0ABqIBFBNGopAgA3AgAgACARQTxqKQIANwIAIBFBADYCRCARIBEpAiw3AkggBRDnDkEIaiARQfAAaiQAC4wCAgJ/An4jAEGAAWsiAiQAIAACf0ECQQACfyABLQCwASIDQUBqQQJPBEAgA0GiAUcEQCACQQhqIAEQsgogAikDCCIEQgJRBEAgAigCECEDQQEMAwsCfyAEp0EBcQRAIAJBMGogAkEQahDuDiACQQ42AiggAkEoahDhFQwBCyACKQMYIQQgAiACKQMQIgU3AyAgAkGHgICAeDYCKCABIAJBIGogAkEoaiIBEM0XIAIgBDcDOCACIAU3AzAgAkEjNgIoIAEQ4RULIQNBAAwCCyABEIMNIQMgARCICEECDAILIAIgAUEBEIINIAIoAgQhAyACKAIAC0EBcRsLOgAAIAAgAzYCBCACQYABaiQAC5MEAQV/IwBBEGsiBCQAIAEoAgghAyABKAIEIQYCQCABKAIALQAARQRAIwBBEGsiASQAAkAgAigCbCIFQYABcSIHBEAgAiAFIAdzIgU2AmwCQCAGLQAARQRAIAFBBGogAiADEIMUDAELIAVBgAJxRQRAIAIgBUGAAnI2AmwgAUEEaiADIAIQnAggAiACKAJsQf99cTYCbAwBCyABQQRqIAMgAhCcCAsgACABKQIENwIAIAIgAigCbCAHcjYCbCAAQQhqIAFBDGooAgA2AgAMAQsgBi0AAEUEQCAAIAIgAxCDFAwBCyAFQYACcUUEQCACIAVBgAJyNgJsIAAgAyACEJwIIAIgAigCbEH/fXE2AmwMAQsgACADIAIQnAgLIAFBEGokAAwBCyACKAJsIgFBgAFxRQRAIAIgAUGAAXI2AmwCQCAGLQAARQRAIARBBGogAiADEIMUDAELIAFBgAJxRQRAIAIgAUGAA3I2AmwgBEEEaiADIAIQnAggAiACKAJsQf99cTYCbAwBCyAEQQRqIAMgAhCcCAsgACAEKQIENwIAIAIgAigCbEH/fnE2AmwgAEEIaiAEQQxqKAIANgIADAELIAYtAABFBEAgACACIAMQgxQMAQsgAUGAAnFFBEAgAiABQYACcjYCbCAAIAMgAhCcCCACIAIoAmxB/31xNgJsDAELIAAgAyACEJwICyAEQRBqJAALkwQBBX8jAEEQayIEJAAgASgCCCEDIAEoAgQhBgJAIAEoAgAtAABFBEAjAEEQayIBJAACQCACKAJsIgVBgAFxIgcEQCACIAUgB3MiBTYCbAJAIAYtAABFBEAgAUEEaiACIAMQhBQMAQsgBUGAAnFFBEAgAiAFQYACcjYCbCABQQRqIAMgAhD/BiACIAIoAmxB/31xNgJsDAELIAFBBGogAyACEP8GCyAAIAEpAgQ3AgAgAiACKAJsIAdyNgJsIABBCGogAUEMaigCADYCAAwBCyAGLQAARQRAIAAgAiADEIQUDAELIAVBgAJxRQRAIAIgBUGAAnI2AmwgACADIAIQ/wYgAiACKAJsQf99cTYCbAwBCyAAIAMgAhD/BgsgAUEQaiQADAELIAIoAmwiAUGAAXFFBEAgAiABQYABcjYCbAJAIAYtAABFBEAgBEEEaiACIAMQhBQMAQsgAUGAAnFFBEAgAiABQYADcjYCbCAEQQRqIAMgAhD/BiACIAIoAmxB/31xNgJsDAELIARBBGogAyACEP8GCyAAIAQpAgQ3AgAgAiACKAJsQf9+cTYCbCAAQQhqIARBDGooAgA2AgAMAQsgBi0AAEUEQCAAIAIgAxCEFAwBCyABQYACcUUEQCACIAFBgAJyNgJsIAAgAyACEP8GIAIgAigCbEH/fXE2AmwMAQsgACADIAIQ/wYLIARBEGokAAuPEAMLfwd+AXwjAEGgAWsiBCQAAkACQAJAIAErAwAiFEQAAAAAAAAAAGIEQCAEQZABagJ/IBS9Qv///////////wCDQv/////////3/wBYBEAgBEEMaiIBIQsjAEEQayIKJAACQAJAAkAgFL0iD0I0iKdB/w9xIgJFIA9C/////////weDIg1QcUUEQCAPQgBTDQEMAgsgAUEwOgAAQQEhAwwCCyABQS06AABBASEGCyMAQRBrIgUkACACQQJJIA1CAFJyIQggDUKAgICAgICACIQgDSACGyINQgKGIQ4gDUIBgyESAn8CfwJAAkAgAkG1CGtBzHcgAhsiAkEASARAQQEhCSACIAJBhaJTbEEUdkEAIAJrIgxBAUprIgNqIQcgDSAMIANrIgJBBHRB8P7HAGogAyACQc+mygBsQRN2a0H8AGogBSAFQQhqIAgQ8AYhECAFKQMIIQ0gBSkDACEPIANBAk8EQCAOQn8gA62GQn+Fg1BFIANBP09yDQIMAwsgDyASfSEPIAggElBxDAMLIA0gAkHB6ARsQRJ2IAJBA0trIgdBBHRBkNTHAGogByACayAHQc+mygBsQRN2akH9AGogBSAFQQhqIAgQ8AYhECAFKQMIIQ0gBSkDACEPIAdBFk8NAEEAIA6nayAOQgWAp0F7bEYEQEF/IQIDQCACQQFqIQIgDkLNmbPmzJmz5kx+Ig5Cs+bMmbPmzJkzWA0ACyACIAdPDQIMAQsgElBFBEAgDkIChCEOQX8hAgNAIAJBAWohAiAOQs2Zs+bMmbPmTH4iDkK05syZs+bMmTNUDQALIA8gAiAHT619IQ8MAQsgCK1Cf4UgDnwhDkF/IQIDQCACQQFqIQIgDkLNmbPmzJmz5kx+Ig5Cs+bMmbPmzJkzWA0ACyACIAdJDQBBAQwCC0EAIQMCfyAPQuQAgCIOIA1C5ACAIhFYBEAgDSERIA8hDiAQIQ1BAAwBCyAQpyAQQuQAgCINp0Gcf2xqQTFLIQNBAgshAiAOQgqAIg4gEUIKgCIPVgR/A0AgAkEBaiECIA0iEEIKgCENIA5CCoAiDiAPIhFCCoAiD1YNAAsgEKcgDadBdmxqQQRLBSADCyANIBFRcgwCC0EBIQlBAAshCEEAIQMCQCAPQgqAIhEgDUIKgCITWARAQQAhAiANIQ4gECEPDAELQQAhAgNAIAhBACANp2sgEyIOp0F2bEZxIQggAkEBaiECIAkgA0H/AXFFcSEJIBCnIBBCCoAiD6dBdmxqIQMgDyEQIBFCCoAiESAOIg1CCoAiE1YNAAsLAkACQCAIRQ0AQQAgDqdrIA5CCoAiEKdBdmxHDQADQCACQQFqIQIgCSADQf8BcUVxIQkgD6cgD0IKgCINp0F2bGohAyANIQ9BACAQp2sgECIOQgqAIhCnQXZsRg0ACwwBCyAPIQ0LIBKnIAhBf3NyIA0gDlFxQQRBBSANQgGDUBsgAyAJGyADIANB/wFxQQVGG0H/AXFBBEtyCyEDIAogAiAHajYCCCAKIA0gA61CAYN8NwMAIAVBEGokAAJAAkACQCAKKAIIIgVBAE4gBQJ/QREgCikDACINQv//g/6m3uERVg0AGkEQIA1C//+Zpuqv4wFWDQAaQQ8gDUL//+iDsd4WVg0AGkEOIA1C/7/K84SjAlYNABpBDSANQv+flKWNHVYNABpBDCANQv/P28P0AlYNABpBCyANQv/Hr6AlVg0AGkEKIA1C/5Pr3ANWDQAaQQkgDUL/wdcvVg0AGkEIIA1C/6ziBFYNABpBByANQr+EPVYNABpBBiANQp+NBlYNABpBBSANQo/OAFYNABpBBCANQucHVg0AGkEDIA1C4wBWDQAaQQJBASANQglWGwsiA2oiAkEWSHFFBEAgAkEBayIFQRVJDQEgAkEFakEGSQ0CIANBAUcNAyABIAZqIgJB5QA6AAEgAiANp0EwajoAACAFIAEgBkECciICahCQDCACaiEDDAQLIA0gASAGaiADahCvCSAFRSACIANMckUEQCABIANqIAZqQTAgBfwLAAsgAiAGaiEDDAMLIA0gASADIAZqQQFqIgNqEK8JIAEgBmohASACBEAgASABQQFqIAL8CgAACyABIAJqQS46AAAMAgsgASAGaiIHQbDcADsAAEECIAJrIQUCQCACQQBODQBBAyAFIAVBA00bQQJrIgJFDQAgB0ECakEwIAL8CwALIA0gASADIAZqIAVqIgNqEK8JDAELIA0gASADIAZqIgNqIgdBAWoQrwkgASAGaiICIAItAAE6AAAgAkEuOgABIAdB5QA6AAEgBSABIANBAmoiAmoQkAwgAmohAwsgCkEQaiQAIAMMAQsgBEEIQQkgFL0iDUIAWSIBG0EDIA1C/////////weDUCICGzYCBCAEQfnTxwBBgdTHACABG0GK1McAIAIbNgIAIAQoAgAhCyAEKAIECyIBQQFBARCCCiAEKAKUASECIAQoApABQQFGDQIgBCgCmAEhAyABBEAgAyALIAH8CgAACyAAIAE2AgggACADNgIEIAAgAjYCAAwBCyAEQQA2ApgBIARCgICAgBA3ApABIARBoMfHADYCECAEQqCAgIAONwIUIAQgBEGQAWo2AgwgASAEQQxqEP0TDQIgACAEKQKQATcCACAAQQhqIARBmAFqKAIANgIACyAEQaABaiQADwsgAiAEKAKYAUH0yscAELQaAAtByMfHAEE3IARBnwFqQbjHxwBBzMjHABDwDAALlQICA38DfiMAQUBqIgIkACABKQMAIQcCQCABKQMIIgZCA4NQBEAgAiAGpyIDNgIwIAIgAygCEDYCNCACQShqIAJBMGoiAxChHiACKAIoIgQgBCgCACIEQQFqNgIAIARBAEgNASACQSBqIAMQoR4gAiACKQMgNwI4IAJBGGogAkE4ahChHgsgASkDECIFUCAFQgODQgBSckUEQCACIAWnIgE2AjAgAiABKAIQNgI0IAJBEGogAkEwaiIBEKEeIAIoAhAiAyADKAIAIgNBAWo2AgAgA0EASA0BIAJBCGogARChHiACIAIpAwg3AjggAiACQThqEKEeCyAAIAU3AxAgACAGNwMIIAAgBzcDACACQUBrJAAPCwAL+wECAn4FfwJAIAEQ0wkiBEH/AXEiBUECRg0AA0ACQCAEQQh2IgatIQMgAQJ+IAEpAgwiAkL/AYNCAlIEQCAEQQFxIgcgAkIwiKcgAkIoiKdB/wFxIAJCIIinIghBAXEbQQFqIARBEHYgBkH/AXEgBxtHcg0CIAJC/////w+DIANCKIYgBa1CIIaEhAwBCyADQiiGIAWtIgJCIIaEIANCCIaEIAKECzcCDCABENMJIgRB/wFxIgVBAkcNAQwCCwsgACAINgEEIAAgAj4BACABIANCKIYgBa0iAkIghoQgA0IIhoQgAoQ3AgwPCyAAIAEpAgw3AQAgAUECOgAMC8wCAQR/IwBBEGsiBCQAIAQgACgCACgCUCIBNgIMIAAoAgghAiAAKAIEIQACQAJAIAFFDQAgASACTwRAIAEgAkYNAQwCCyAAIAFqLAAAQb9/TA0BCwJAIAEgAkYNAAJAIAAgAWoiASwAACIAQQBOBEAgAEH/AXEhAAwBCyABLQABQT9xIQMgAEEfcSECIABBX00EQCACQQZ0IANyIQAMAQsgAS0AAkE/cSADQQZ0ciEDIABBcEkEQCADIAJBDHRyIQAMAQsgAkESdEGAgPAAcSABLQADQT9xIANBBnRyciIAQYCAxABGDQELIARBEGokACAADwsjAEEgayIAJAAgAEEBNgIEIABBjO3KADYCACAAQgE3AgwgAEEvNgIcIAAgBEEMajYCGCAAIABBGGo2AgggAEGU7coAEOgXAAsgACACIAEgAkHk7MoAEOkbAAuyAgECfyAAEO8BAkACQAJAAkACQAJAAkAgACgCAEEBaw4HAQIGAwQFAAYLIAAoAgwiAgRAIAAoAgghAQNAIAEQigogAUEcaiEBIAJBAWsiAg0ACwsgAEEEakEEQRwQ8gwMBQsgACgCCCIBRQ0EIAAoAgQgAUEBEPgcDAQLIABBCGohASAAKAIERQRAIAFBBEEIEPIMDAQLIAFBAUECEPIMDAMLIAAoAgwQqQcgACgCDEEcQQQQ+BwMAgsCQCAAKAIMIgFFDQAgACgCECICRQ0AIAEgAkEBEPgcCyAAKAIEEKkHIAAoAgRBHEEEEPgcDAELIAAoAgwiAgRAIAAoAgghAQNAIAEQigogAUEcaiEBIAJBAWsiAg0ACwsgAEEEakEEQRwQ8gwLIAAoAhhBNEEEEPgcC7ICAQJ/IAAQ7wECQAJAAkACQAJAAkACQCAAKAIAQQFrDgcBAgYDBAUABgsgACgCDCICBEAgACgCCCEBA0AgARCKCiABQRxqIQEgAkEBayICDQALCyAAQQRqQQRBHBDyDAwFCyAAKAIIIgFFDQQgACgCBCABQQEQ+BwMBAsgAEEIaiEBIAAoAgRFBEAgAUEEQQgQ8gwMBAsgAUEBQQIQ8gwMAwsgACgCDBCqByAAKAIMQRxBBBD4HAwCCwJAIAAoAgwiAUUNACAAKAIQIgJFDQAgASACQQEQ+BwLIAAoAgQQqgcgACgCBEEcQQQQ+BwMAQsgACgCDCICBEAgACgCCCEBA0AgARCKCiABQRxqIQEgAkEBayICDQALCyAAQQRqQQRBHBDyDAsgACgCGEE0QQQQ+BwLmAIBBX8gACgCACIEIAAoAgQiBiABpyIHcSIDaikAAEKAgYKEiJCgwIB/gyIBUARAQQghBQNAIAMgBWohAyAFQQhqIQUgBCADIAZxIgNqKQAAQoCBgoSIkKDAgH+DIgFQDQALCyAEIAF6p0EDdiADaiAGcSIDaiwAACIFQQBOBEAgBCAEKQMAQoCBgoSIkKDAgH+DeqdBA3YiA2otAAAhBQsgAyAEaiAHQRl2Igc6AAAgBCADQQhrIAZxakEIaiAHOgAAIAAgACgCCCAFQQFxazYCCCAAIAAoAgxBAWo2AgwgBCADQWxsaiIDQRRrIgAgAikCADcCACAAQQhqIAJBCGopAgA3AgAgAEEQaiACQRBqKAIANgIAIAML6AEBBn8CQCACQQJJBEBBASEHDAELQQEhBUEBIQdBASEEA0AgBCEJAkACQAJAIAIgBiAIaiIESwRAIAEgBWotAAAhBSABIARqLQAAIQQCQCADBEAgBCAFSQ0DIAQgBUsNAQwECyAEIAVLDQIgBCAFTw0DCyAGIAlqQQFqIgQgCGshB0EAIQYMAwsgBCACQaTn5AAQjA4AC0EBIQcgCUEBaiEEQQAhBiAJIQgMAQtBACAGQQFqIgQgBCAHRiIEGyEGIAdBACAEGyAJaiEECyAEIAZqIgUgAkkNAAsLIAAgBzYCBCAAIAg2AgALigIBAX8jAEEQayICJAAgACgCACEAAn8gAS0AC0EYcUUEQCABKAIAIAAgASgCBCgCEBEBAAwBCyACQQA2AgwgASACQQxqAn8gAEGAAU8EQCAAQYAQTwRAIABBgIAETwRAIAIgAEE/cUGAAXI6AA8gAiAAQRJ2QfABcjoADCACIABBBnZBP3FBgAFyOgAOIAIgAEEMdkE/cUGAAXI6AA1BBAwDCyACIABBP3FBgAFyOgAOIAIgAEEMdkHgAXI6AAwgAiAAQQZ2QT9xQYABcjoADUEDDAILIAIgAEE/cUGAAXI6AA0gAiAAQQZ2QcABcjoADEECDAELIAIgADoADEEBCxCLAwsgAkEQaiQAC+ESAhN/A34jAEEgayIIJAAgAzUCqAEhGAJAAkAgAy0AsAEiBEESRyAEQT5HcUUEQCADEIgIQQEhDSAIQQhqIQkjAEGwAWsiBiQAIAYgAjYCdCAGIAE2AnAgBkGIAWohDCMAQdABayIFJAAgBUEANgIIIAVCgICAgIABNwIAIAZB8ABqIgEoAgQhECABKAIAIRECQAJAIANBBBC7Dw0AIAVBmAFqQQRyIRIgBUHDAWoiE0EFaiEUA0AgBUGYAWohByARLQAAIQ4gEC0AACEVQQAhC0EAIQFBACEPIwBB4ABrIgQkACADNQKoASEXIARBIGogA0GEs8QAQQlBABCkAyAEKAIkIQICQCAEKAIgRQRAIARBKGohFgNAAkACQAJAAkACQAJAAkACQCACBEAgAiAEKAIoIgpB8LLEAEEFEIQZDQEgAiAKQf2yxABBAhCEGQ0DIAIgCkH/ssQAQQMQhBkNAiAEIAMpA6ABNwNAIBYgAiAKEKIdIARBo4GAgHg2AiAgAyAEQUBrIARBIGoQzRcMCAsCQCADKAJsIgJBgCBxRQRAIAMgAkGAIHI2AmwgBEFAayADEN8IIAMgAygCbEH/X3E2AmwMAQsgBEFAayADEN8ICyAEKAJAIQIgBCkDSCIZUEUNBCAHQQI6ACogByACNgIADAoLQQEhDyAVRQ0CDAYLIA4NAyAEIAMpA6ABNwMYIARCsd7Vowc3A0AgBEFAaxDxDCAEQrHe1aMHNwMoIARBpIGAgHg2AiAgAyAEQRhqIARBIGoQzRcMBAsgDkUEQCAEIAMpA6ABNwMYIARCodK5AzcDQCAEQUBrEPEMIARCodK5AzcDKCAEQaSBgIB4NgIgIAMgBEEYaiAEQSBqEM0XQQEhCwwFCyALRQRAQQEhCyABQQAhAUUNBSAEIAMpA6ABNwMYIARCodK5AzcDICAEQSBqIgEQ8QwgBEKx3tWjBzcDQCAEQUBrEPEMIARCsd7Vowc3AzAgBEKh0rkDNwMoIARB+YCAgHg2AiAgAyAEQRhqIAEQzRdBASEBDAULIAQgAykDoAE3AxggBEKh0rkDNwNAIARBQGsQ8QwgBEKh0rkDNwMoIARB+oCAgHg2AiAgAyAEQRhqIARBIGoQzRdBASELDAQLIAQgAykDoAE3AxggBELRxr3zto4dNwNAIARBQGsQ8QwgBELRxr3zto4dNwMoIARBpYGAgHg2AiAgAyAEQRhqIARBIGoQzRcMAwsgBCAZNwNYIAQgBCgCRDYCVCAEIAI2AlAgBEEgaiAEQdAAahDuDiAEQdkAOgAYIARBEGogAyAEQRhqEJEJIAQoAhQhAgJAAkAgBCgCEEEBcQRAIAdBAjoAKiAHIAI2AgAMAQsgBCACNgJAIARBFzoAGCAEQQhqIAMgBEEYahCRCSAEKAIMIQogBCgCCEEBcUUNASAHQQI6ACogByAKNgIAIARBQGsQ7hkLIARBMGoQ8QwMBgsgByAEKQMgNwMIIAcgCjYCMCAHIAI2AiwgByAPOgAqIAcgAToAKSAHIAs6ACggB0EQaiAEQShqKQMANwMAIAdBGGogBEEwaikDADcDACAHQSBqIARBOGopAwA3AwAgByADNQKkAUIghiAXhDcDAAwFCyABRQ0AIAQgAykDoAE3AxggBEKx3tWjBzcDQCAEQUBrEPEMIARCsd7Vowc3AyggBEH6gICAeDYCICADIARBGGogBEEgahDNFwtBASEBCyAEQSBqIANBhLPEAEEJQQAQpAMgBCgCJCECIAQoAiBFDQALCyAHQQI6ACogByACNgIACyAEQeAAaiQAIAUoApgBIQICQAJAIAUtAMIBIgdBAkYNACAFQfAAaiASQSb8CgAAIAUgFCkAADcAZSAFIBMpAAA3A2AgBSgCCCIEIAUoAgBGBEAgBUHAt8QAENESCyAFKAIEIARBOGxqIgEgAjYCACABQQRqIAVB8ABqQSb8CgAAIAEgBzoAKiABIAUpA2A3ACsgAUEwaiAFKQBlNwAAIAUgBEEBajYCCCADLQCwAUEHRg0BIANBBBC7Dw0DIAUgAykDqAE3AyAgBUEsaiADENkZIAVBATYCnAEgBUGcssQANgKYASAFQgE3AqQBIAVBlgM2AlggBUEHOgBfIAUgBUHUAGo2AqABIAUgBUEYajYCVCAFIAVB3wBqNgIYIAVBOGoiASAFQZgBahD3BCAFQcwAaiAFQTRqKAIANgIAIAUgBSkCLDcCRCAFQSBqIAEQkRAhAiADLQCwAUGiAUcNACADEIMNIQEgAxCICCADIAEQxBALIAxBgICAgHg2AgAgDCACNgIEIAUQwhMgBRCxHgwDCyADEIgIIANBBBC7D0UNAAsLIAwgBSkCADcCACAMQQhqIAVBCGooAgA2AgALIAVB0AFqJAAgBigCjAEhAQJAIAYoAogBIgJBgICAgHhGBEAgCUGAgICAeDYCACAJIAE2AgQMAQsgBiAGKAKQATYCPCAGIAE2AjggBiACNgI0AkAgAy0AsAFBE0cEQCAGIAMpA6gBNwNYIAZB5ABqIAMQ2RkgBkEBNgKMASAGQZyyxAA2AogBIAZCATcClAEgBkGWAzYCpAEgBkETOgCvASAGIAZBoAFqNgKQASAGIAZBqAFqNgKgASAGIAZBrwFqNgKoASAGQfAAaiIBIAZBiAFqEJkKIAZBhAFqIAZB7ABqKAIANgIAIAYgBikCZDcCfCAGQdgAaiABEJEQIQEMAQsgAxCICCAJQQhqIAZBPGooAgA2AgAgCSAGKQI0NwIADAELIAMtALABQaIBRgRAIAMQgw0hAiADEIgIIAMgAhDEEAsgCUGAgICAeDYCACAJIAE2AgQgBkE0aiIBEMITIAEQsR4LIAZBsAFqJAAgCCgCDCECIAgoAggiBEGAgICAeEYNAUGpxugALQAAGiAIKAIQIQUgAykDoAEhF0EUQQQQ7xsiAUUNAiABIAU2AhAgASACNgIMIAEgBDYCCCABIBdCgICAgHCDIBiENwIAQQAhDSABIQIMAQsgCEEIaiIBQQRyIAMQ2RkgCEERNgIcIAhB6LPEADYCGCAIQbCAgIB4NgIIIAggAykDqAE3AwAgCCABEJEQIQJBASENIAMtALABQaIBRw0AIAMQgw0hASADEIgIIAMgARDEEAsgACACNgIEIAAgDTYCACAIQSBqJAAPC0EEQRQQoh8AC6ICAQJ/IwBBMGsiAiQAAkACQCADKAIQIgQgAygCFCIFTQRAIAMoAgBBAWtBAk8EQCACQQxqIAFBBGogAygCCCADKAIMIAQgBRC5BEEAIQMgACACKAIMQQFGBH8gAigCECIBIAIoAhQiA0sNAyAAQQA2AgwgACADNgIIIAAgATYCBEEBBSADCzYCAAwDC0EAIQUCQCAEIAMoAgxPDQAgAygCCCAEai0AACIDIAEtAARHBEAgAS0ABSADRw0BCyAAQQA2AgwgACAENgIEQQEhBSAAIARBAWo2AggLIAAgBTYCAAwCCyAAQQA2AgAMAQsgAkEANgIoIAJBATYCHCACQYCdygA2AhggAkIENwIgIAJBGGpBiJ3KABDoFwALIAJBMGokAAuQAgIGfwF+IwBBMGsiAyQAIAEoAgQgASgCAGtBBHYiAiAAKAIAIAAoAggiBGtLBEAgACAEIAJBBEEQEMgTIAAoAgghBAsgACgCBCECIANBGGogAUEQaigCADYCACADQRBqIAFBCGopAgA3AwAgAyABKQIAIgg3AwggCKciBSADKAIMIgZHBEAgAiAEQQR0aiEBA0AgBSICKAIAIgVBgICAgHhHBEAgAkEMaigCACEHIAJBBGopAgAhCCABIAU2AgAgAUEEaiAINwIAIAFBDGogBzYCACABQRBqIQEgBEEBaiEEIAJBEGoiBSAGRw0BCwsgAyACQRBqNgIICyAAIAQ2AgggA0EIahCoCCADQTBqJAALnAIBBH8jAEEgayICJAAgACgCCCEEAkAgAC0AEEEBRgRAIAEoAgBBgICAgHhGDQEgASgCCCIDRQ0BIAEoAgQhACADQQR0IQMDQCAEIABBCGoiASgCACIFSQRAIABBDGpBADoAACABQQA2AgAgAiAANgIUIAIgAEEEaigCACIBNgIMIAIgBDYCHCACIAUgBGsiBTYCGCACIAEgBWo2AhAgAkEMahCtCgsgAEEQaiEAIANBEGsiAw0ACwwBCyABKAIAQYCAgIB4Rg0AIAEoAggiAEUNACAAQQR0IQMgASgCBEEMaiEAA0AgAEEEayIBKAIAIARLBEAgASAENgIAIABBADoAAAsgAEEQaiEAIANBEGsiAw0ACwsgAkEgaiQAC6wDAQh/IwBB4ABrIgIkACACQSRqIAFBEGopAgA3AgAgAkEcaiABQQhqKQIANwIAIAJBADYCECACQoCAgIAQNwIIIAJBgIACOwEsIAIgASkCADcCFCACQcgAaiACQQhqEFYCQCACLQBIQQZGBEAgACACKAJMNgIEIABBBjoAAAwBCyACQUBrIAJB2ABqKQMANwMAIAJBOGogAkHQAGopAwA3AwAgAiACKQNINwMwIwBBIGsiASQAAkAgAkEIaiIEKAIUIgMgBCgCECIGTw0AIARBDGohByAEKAIMIQgDQCADIAhqLQAAQQlrIglBF0tBASAJdEGTgIAEcUVyRQRAIAQgA0EBaiIDNgIUIAMgBkcNAQwCCwsgAUEWNgIUIAFBCGogByADQQFqIgMgBiADIAZJGxCsBCABQRRqIAEoAgggASgCDBCsEyEFCyABQSBqJAAgBQRAIABBBjoAACAAIAU2AgQgAkEwahCwDgwBCyAAIAIpAzA3AwAgAEEQaiACQUBrKQMANwMAIABBCGogAkE4aikDADcDAAsgAkEIakEBQQEQ8gwgAkHgAGokAAurAgIDfwF+IwBBQGoiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBJGoiBEEANgIAIAJCgICAgBA3AhwgAkEwaiADKAIAIgNBCGopAgA3AwAgAkE4aiADQRBqKQIANwMAIAIgAykCADcDKCACQRxqQeDB5gAgAkEoahDOAxogAkEYaiAEKAIAIgM2AgAgAiACKQIcIgU3AxAgAUEIaiADNgIAIAEgBTcCAAsgASkCACEFIAFCgICAgBA3AgAgAkEIaiIDIAFBCGoiASgCADYCACABQQA2AgBBqcboAC0AABogAiAFNwMAQQxBBBDvGyIBRQRAQQRBDBCiHwALIAEgAikDADcCACABQQhqIAMoAgA2AgAgAEGY2OYANgIEIAAgATYCACACQUBrJAALgQYBA38DQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAQQFrDhIMDA0BAgwMAwQFBg0NBwgJCgsACyAAKAIYIgJFDQsgACgCFCEAIAJBOGwhAgNAIAAgARC0ByAAQThqIQAgAkE4ayICDQALDAsLIAAoAgwiAEUNCiAAIAEQ9wIPCyAAQTBqDAsLIABBBGoiACgCCCABEPcCIAAoAgwgARC0ByAAKAIQIgAEQCAAIAEQtAcLDwsgAEEEaiIAKAIIIAEQ9wIgACgCFCICBEAgACgCECEAIAJBGGwhAgNAIAAoAggiAwRAIAMgARD3AgsgACgCFCIEBEAgACgCECEDIARBOGwhBANAIAMgARC0ByADQThqIQMgBEE4ayIEDQALCyAAQRhqIQAgAkEYayICDQALCw8LIAAoAgwgARD3Ag8LIAAoAgQiAigCHCIDBEAgAigCGCEAIANBOGwhAwNAIAAgARC0ByAAQThqIQAgA0E4ayIDDQALCyACKAIoQQhHBEAgAkEgaiIAKAIIQQdHBEAgAEEIaiABENANCyAAKAJMIgMEQCAAKAJIIQAgA0E4bCEDA0AgACABELQHIABBOGohACADQThrIgMNAAsLCwJAIAIoAnxBgICAgHhGDQAgAigChAEiA0UNACACKAKAASEAIANBOGwhAwNAIAAgARC0ByAAQThqIQAgA0E4ayIDDQALCw8LIABBBGoiACgCCEECRwRAAkAgAEEIaiICKAIAQQFGBEAgAigCBCABEPcCDAELIAEgAigCBBC8DAsLIAAoAhAiAgRAIAIgARD3AgsgACgCFCICBEAgAiABEPcCCyAAKAIYIAEQtAcPCyAAQQRqIgBBCGogARD8DiAAKAIQIAEQ9wIgACgCFCABELQHDwsgAEEEaiIAQQxqIAEQ/A4gACgCFCABEPcCIAAoAhggARC0Bw8LIABBCGogARC5Cg8LIAAoAgwgARD3AgsPCyAAKAIMIAEQ9wIgAEEQagsoAgAhAAwACwALrgICBX8CfiMAQSBrIgQkACABKAIEIQMgASgCDCEGAkACQAJAIAJFBEAgAyEFDAELA0AgAyAGRg0CIAEgA0EYaiIFNgIEIAMoAgAiB0GBgICAeEYNAiADQQxqKQIAIQggA0EEaikCACEJIARBADoAHCAEIAk3AgwgBCAHNgIIIAQgCKciAzYCFCAEIAhCIIinIANrNgIYIARBCGoQtRogBSEDIAJBAWsiAg0ACwsCQCAFIAZGDQAgASAFQRhqNgIEIAUoAgAiAUGBgICAeEYNACAFKQIMIQggBSkCBCEJIABBADoAFCAAIAk3AgQgACABNgIAIAAgCKciATYCDCAAIAhCIIinIAFrNgIQDAILIABBgYCAgHg2AgAMAQsgAEGBgICAeDYCAAsgBEEgaiQAC5cCAgN/A34jAEEgayICJAACQAJAIAEtALABQcQARwRAIAJBCGoiA0EEciABENkZIAJBDjYCHCACQYzIxAA2AhggAkGwgICAeDYCCCACIAEpA6gBNwMAIAIgAxCRECEDIAEtALABQaIBRw0BIAEQgw0hBCABEIgIIAEgBBDEEAwBCyABNQKoASEFIAJBCGogARDUCiABEIgIIAIpAxAhBiACKAIMIQMgAigCCCACIAIpAxgiBzcDAEEBcQRAIABBAjoACCAAIAM2AgAgAhDxDAwCCyAAIAc3AxggACAGNwMQIAAgAS0AsAFBGkY6AAggACABNQKkAUIghiAFhDcDAAwBCyAAQQI6AAggACADNgIACyACQSBqJAALpwICAX8BfiMAQTBrIgIkAAJ/AkACQAJAIAApAwAiA0IKiKciAARAIAJBATYCECACQcyCyQA2AgwgAkIBNwIYIAJB4Ak2AiggAiAANgIsIAIgAkEkajYCFCACIAJBLGo2AiRBASABKAIAIgAgASgCBCIBIAJBDGoQzgMNBBogA0L/B4NQRQ0BQQAMBAsgASgCACEAIANC/weDUA0CIAEoAgQhAQwBC0EBIABBvIPJAEEBIAEoAgwRBQANAhoLIAJBATYCECACQcyCyQA2AgwgAkIBNwIYIAJB4Qk2AiggAiADp0H/B3E2AiwgAiACQSRqNgIUIAIgAkEsajYCJCAAIAEgAkEMahDOAwwBCyAAQb2DyQBBAyABKAIEKAIMEQUACyACQTBqJAALkwIBC38jAEEQayIDJAAgACgCBEGAAiAAKAIAIgcbIgIgACgCDCIBIAEgAkkbIQRBgAIgASABQYACTRshCCABQQh0QYACayECIAAoAgghBSAALQAQQQFxIQkgAC0AESEKAkACQANAIAEgBEYEQEECIQFBACECIAcgBEF/RnINAiAAQX82AgwgBS0A/wFBAWoQ+w0iAUGA/v8PcSECDAILIAEgCEYNAiAAIAFBAWoiCzYCDCACQYACaiECIAEgBWotAAAhBiAJBEAgCyEBIAYgCkYNAQsLIAAgBjoAESAAQQE6ABAgAiEBCyADQRBqJAAgAUH/AXEgAnIPC0HfscoAQSsgA0EPakGMssoAQay/ygAQ8AwAC6ICAgJ/AnwjAEEgayIFJAAgA7ohByAAAn8CQAJAAkACQCAEIARBH3UiBnMgBmsiBkG1Ak8EQANAIAdEAAAAAAAAAABhDQUgBEEATg0CIAdEoMjrhfPM4X+jIQcgBEG0AmoiBCAEQR91IgZzIAZrIgZBtAJLDQALCyAGQQN0Qeir5ABqKwMAIQggBEEATg0BIAcgCKMhBwwDCyAFQQ42AhQgBSABQQxqEP8UIAAgBUEUaiAFKAIAIAUoAgQQrBM2AgQMAQsgByAIoiIHmUQAAAAAAADwf2INASAFQQ42AhQgBUEIaiABQQxqEP8UIAAgBUEUaiAFKAIIIAUoAgwQrBM2AgQLQQEMAQsgACAHIAeaIAIbOQMIQQALNgIAIAVBIGokAAuFAgIBfgJ/IwBBgAFrIgQkACAAKAIAKQMAIQICfwJAIAEoAggiAEGAgIAQcUUEQCAAQYCAgCBxDQEgAkEBIAEQpQUMAgtBACEAA0AgACAEakH/AGogAqdBD3EiA0EwciADQdcAaiADQQpJGzoAACAAQQFrIQAgAkIPViACQgSIIQINAAsgAUEBQczA5wBBAiAAIARqQYABakEAIABrEN8CDAELQQAhAANAIAAgBGpB/wBqIAKnQQ9xIgNBMHIgA0E3aiADQQpJGzoAACAAQQFrIQAgAkIPViACQgSIIQINAAsgAUEBQczA5wBBAiAAIARqQYABakEAIABrEN8CCyAEQYABaiQAC6cCAAJ/AkACQAJAAkAgAkEEaw4CAQIACyACQQxHDQIgAS0AAEHmAEcNAiABLQABQfUARw0CIAEtAAJB7gBHDQIgAS0AA0HjAEcNAiABLQAEQfQARw0CIAEtAAVB6QBHDQIgAS0ABkHvAEcNAiABLQAHQe4ARw0CIAEtAAhBzgBHDQIgAS0ACUHhAEcNAiABLQAKQe0ARw0CIAEtAAtB5QBHDQJBAAwDCyABLQAAQesARw0BIAEtAAFB6QBHDQEgAS0AAkHuAEcNASABLQADQeQARw0BQQEMAgsgAS0AAEHpAEcNACABLQABQe4ARw0AIAEtAAJB5ABHDQAgAS0AA0HlAEcNACABLQAEQfgARw0AQQIMAQtBAwshASAAQQA6AAAgACABOgABC5YCAgJ/AX4jAEHgAGsiAiQAAkACQCABKAIAQQFGBEAgASkDGCIEQgODUARAIAIgBKciATYCSCACIAEoAhA2AkwgAkEYaiACQcgAaiIBEKEeIAIoAhgiAyADKAIAIgNBAWo2AgAgA0EASA0DIAJBEGogARChHiACIAIpAxA3AjAgAkEIaiACQTBqEKEeCyAAIAQ3AwAMAQsgAkHYAGoiAyABKAIEIgFBCGoQvAcgAkGkAzYCVCACIAFBOGo2AlAgAkGkAzYCTCACQQI2AjQgAkGEhccANgIwIAJCAjcCPCACIAM2AkggAiACQcgAajYCOCACQSRqIgEgAkEwahD3BCADEPEMIAAgARCPHwsgAkHgAGokAA8LAAuOAgIDfwN+IwBBQGoiAiQAIAEpAwAhBwJAIAEpAwgiBUIDg1AEQCACIAWnIgM2AjAgAiADKAIQNgI0IAJBKGogAkEwaiIDEKEeIAIoAigiBCAEKAIAIgRBAWo2AgAgBEEASA0BIAJBIGogAxChHiACIAIpAyA3AjggAkEYaiACQThqEKEeCyABKQMQIgZCA4NQBEAgAiAGpyIBNgIwIAIgASgCEDYCNCACQRBqIAJBMGoiARChHiACKAIQIgMgAygCACIDQQFqNgIAIANBAEgNASACQQhqIAEQoR4gAiACKQMINwI4IAIgAkE4ahChHgsgACAGNwMQIAAgBTcDCCAAIAc3AwAgAkFAayQADwsAC4QCAQN/IwBBMGsiAiQAAkAgAygCECIHIAMoAhQiCEsNAAJAAkAgAygCAEEBa0ECTwRAIAJBDGogAUEEaiADKAIIIAMoAgwgByAIELkEIAIoAgxBAUcNAiACKAIQIgcgAigCFCIDTQ0BIAJBADYCKCACQQE2AhwgAkGAncoANgIYIAJCBDcCICACQRhqQYidygAQ6BcACyAHIAMoAgxPDQIgAygCCCAHai0AACIDIAEtAARHBEAgAS0ABSADRw0DCyAHQQFqIQMLQQEhBiAFRQ0BIAQgB0EBajYCACAFQQFGDQEgBCADQQFqNgIEDAELCyAAQQA2AgQgACAGNgIAIAJBMGokAAvBBAEEfyMAQcAGayICJAAgAS0ABCEFIwBBIGsiBCQAIARBDGpBgAJBmLXhABC+CCAEQRxqIgNBADsBACACQQA6AIQDIAJBADYCwAIgAiAEKQIMNwLwAiAEQQA2AhggAkH4AmogBEEUaikCADcCACAEQQA6AB4gAkGAA2ogAygCADYCACACQQBBpwL8CwAgAkEBOgCFAyACQQA6AO0CIAJBgYSIEDYA6QIgAkGAgAQgBUEDdEH4AXF2OgDoAiACQQA6AOQCIAJBADYC4AIgAkKAgICAcDcD2AIgAkKAgICAwAA3A9ACIAJCBDcDyAIgAiAFQQJ0Qdi74QBqKAIANgLEAiACQQA2ArwCIAJBgICAgHg2ArACIAJBAToApwIgBEEgaiQAIAIgAS0ABiIDOgCEAyACIAM6AIIDIAIgAzoApgIgAkGwA2ogAkGQA/wKAABBACEDIAJBAEGAAvwLAANAIAIgA2ogAzoAACADQQFqIgNBgAJHDQALIABB/ANqIAJBgAL8CgAAIAJBoANqQgA3AwAgAkGoA2pCADcDACAAQYwGakIANwIAIABCADcChAYgAkIANwOQAyACQgA3A5gDIAAgAkGQA2pBsAP8CgAAIAAgBToAlAYgAEL/////DzcC/AUgAEIANwLsAyAAQoCAgIDAADcC5AMgAEIENwLcAyAAQgA3AtQDIABCgICAgMAANwLMAyAAQgE3AsQDIABCADcCvAMgAEKAgICAwAA3ArQDIAAgATYCsAMgAkHABmokAAuHJAIffwJ+IwBBMGsiFCQAAkACQAJAIAEoAhQiAiABKAIQIgVPDQAgASgCDCEEA0AgAiAEai0AACIJQQlrIhBBF0tBASAQdEGTgIAEcUVyRQRAIAEgAkEBaiICNgIUIAIgBUcNAQwCCwsgCUHuAEcNACABIAJBAWo2AhQgAUGQuuMAQQMQjgkiAQ0BIABBADsBAAwCCyAUQQxqIQ4jAEFAaiIKJAACQAJAIAEiECgCFCIBIBAoAhAiAkkEQCAQQQxqIQUgECgCDCEEA0AgASAEai0AACIJQQlrIgdBF0tBASAHdEGTgIAEcUVyDQIgECABQQFqIgE2AhQgASACRw0ACwsgCkEFNgIMIAogEEEMahDQESAKQQxqIAooAgAgCigCBBCsEyEBIA5BAToAACAOIAE2AgQMAQsCQAJAAkAgCUEiRwRAIAogECAKQT9qQeSQ4wAQvwM2AhAMAQsgEEEANgIIIBAgAUEBajYCFCAKQTBqIAUgEBC+BCAKKAI0IRwgCigCMCIeQQJGDQIgCkEMaiEaIAooAjghCSMAQUBqIhEkACMAQTBrIhckACAXQQ9qIQYgHCEFQQAhBCMAQTBrIgskAAJAAkACQAJAAn8CfwJAAkACQAJAAn8CQAJAAkAgCUEITQRAIAlBCEYNAyAJQQNNDQEgBUEDakF8cSIBIAVrDAQLIAUsAAhBQEgNAiAJQQlHBEAgBSwACUFASA0DCyAFQQhqQQFBnsLlAEEBEIQZDQEMAgsgBUEBayECIAkhAQNAIAFFDQQgASACaiABQQFrIQEsAABBAE4NAAsMBAtBASEECyAFQQNqQXxxIgEgBWsLIQIgBSgAAEGAgYKEeHENAUEEIAIgASAFRhsiASAJQQRrIgJJBEADQCABIAVqKAIAQYCBgoR4cQ0DIAFBBGoiASACSQ0ACwsgAiAFaigAAEGAgYKEeHENASAEDQMLIAlBCEsNAUEgDAQLIAZBADoAAAwHC0EQDAELQQEhGUEkIAlBCkkNARpBEQsgCU8NAkEkQSAgGRsLIhIgCUkiH0UEQCAJIBJHDQEMAwsgBSASaiwAAEG/f0oNAgsgBkEAOgAADAILIAUsAAhBQE4EQCAFQQhqIQFBB0EIIAUtAABBK0YiAhshByACIAVqIQJBACEEAkACQANAIAItAAAiCEHBAGtBX3FBCmogCEEwayAIQTlLGyIDQQ9LDQEgAkEBaiECIAMgBEEEdCIIciEEIAdBAWsiBw0ACwJ/IAlBCGsgGUUNABogCUEJTQRAIAlBCUcNAyAFQQlqIQFBAAwBCyAFLAAJQUBIDQIgBUEJaiEBIAlBCWsLIQIgC0EMaiIHAn8CQAJAAkACQAJAAkACQAJAIAIOAgABAgsgB0EAOgABQQEMBwtBASEFIAEtAABBK2sOAwQBBAELIAEtAABBK0YEQCACQQFrIQUgAUEBaiEBIAJBCkkNAQwCCyACIgVBCU8NAQtBACECA0AgAS0AACIDQcEAa0FfcUEKaiADQTBrIANBOUsbIgNBD0sNAyABQQFqIQEgAyACQQR0ciECIAVBAWsiBQ0ACwwBC0EAIQIDQCABLQAAIgNBwQBrQV9xQQpqIANBMGsgA0E5SxsiA0EPSw0CIAJBgICAgAFPDQMgAUEBaiEBIAMgAkEEdHIhAiAFQQFrIgUNAAsLIAcgAjYCBEEADAILIAdBAToAAUEBDAELIAdBAjoAAUEBCzoAACALLQAMBEAgBkEAOgAADAULIAsoAhAhASAGQgA3ABUgBkIANwAFIAZBAToAICAGIAE2ABEgBiAEOgAEIAZBAToAACAGQRxqQQA2AAAgBkENakEANgAAIAYgCEEIdjoAAyAGIAhBEHY6AAIgBiAIQRh2OgABDAQLIAZBADoAAAwDCyAGQQA6AAAMAgsgBkEAOgAADAELIAtBDGohGCAFIQFBACEEIwBBIGsiEyQAIBNBDGohAiMAQSBrIggkAAJAAkACQAJAAkACQAJAIBJBIGsOBwEFBQUEBQIACyASQS1GDQIMBAsgCEEYakIANwMAIAhCADcDECABIQcgAgJ/A0AgB0EBai0AAEHowuUAai0AACIDIActAABB6MLlAGotAAAiDHJB/wFGBEAgAkEgNgIIIAIgATYCBEEBDAILIAhBEGogBGogDEHDxeUAai0AACADcjoAACAHQQJqIQcgBEEBaiIEQRBHDQALIAIgCCkDEDcAASACQQlqIAhBGGopAwA3AABBAAs6AAAMBAsgAS0AAEH7AEcNAiABLQAlQf0ARw0CIAFBAWohAQwBCyABLQAAQfUARw0BIAEtAAFB8gBHDQEgAS0AAkHuAEcNASABLQADQTpHDQEgAS0ABEH1AEcNASABLQAFQfUARw0BIAEtAAZB6QBHDQEgAS0AB0HkAEcNASABLQAIQTpHDQEgAUEJaiEBCwJAAkAgAS0ACEEtRw0AIAEtAA1BLUcNACABLQASQS1HDQAgAS0AF0EtRg0BCyACQSQ2AgggAiABNgIEIAJBAToAAAwCCyAIQoCIpPCwgoaOIDcACCAIQRhqQgA3AwAgCEIANwMQIAhBEGohBAJAAkACQAJAA0AgCEEIaiADai0AACIHQSRPDQEgB0EBakH/AXEhDCAHQSNGDQIgB0ECakH/AXEhDSAHQSJPDQMgB0EDakH/AXEhDyAHQSFGDQQgASAPai0AAEHowuUAai0AACIPIAEgDWotAABB6MLlAGotAAAiDSABIAxqLQAAQejC5QBqLQAAIgwgASAHai0AAEHowuUAai0AACIHcnJyQf8BRgRAIAJBJDYCCCACIAE2AgQgAkEBOgAADAcLIARBAWogDUHDxeUAai0AACAPcjoAACAEIAdBw8XlAGotAAAgDHI6AAAgBEECaiEEIANBAWoiA0EIRw0ACyACIAgpAxA3AAEgAkEAOgAAIAJBCWogCEEYaikDADcAAAwFCyAHQSRBxMflABCMDgALIAxBJEHUx+UAEIwOAAsgDUEkQeTH5QAQjA4ACyAPQSRB9MflABCMDgALIAIgEjYCCCACIAE2AgQgAkEBOgAACyAIQSBqJABBASEHAkAgEy0ADEEBRgRAIBhBBGohDSATKAIQIQEgEygCFCECQQAhBCMAQRBrIgwkACAMIAEgAhDoAgJAIAwoAgBBAUYEQCANQQU2AgAMAQsgDCgCBCEDAn8CQAJAAkACfwJ/AkACQAJAAkAgDCgCCCIPQQJPBEAgAy0AACIBQfsARgRAIAMgD2pBAWstAABB/QBHDQNBfiEBQQEhFgwFCyAPQQlJDQIgAUH1AEYNAQwCCyAMQQhqQgA3AwAgDEIANwMAIA9FDQcMAgsgAy0AAUHyAEcNACADLQACQe4ARw0AIAMtAANBOkcNACADLQAEQfUARw0AIAMtAAVB9QBHDQAgAy0ABkHpAEcNACADLQAHQeQARw0AIAMtAAhBOkcNAEF3IQFBCSEWDAILIAxBCGpCADcDACAMQgA3AwALIAMgD2oMAQsgDEEIakIANwMAIAxCADcDACABIA9qIgFFDQJBASEdIAMgFmoiAyABagshIANAIAQhCAJAAkACQAJAAn8gAywAACIBQQBIBEAgAy0AAUE/cSEEIAFBH3EhAgJ/IAFBX00EQCADQQJqIRsgAkEGdCAEcgwBCyADLQACQT9xIARBBnRyIQQgAUFwSQRAIANBA2ohGyAEIAJBDHRyDAELIANBBGohGyACQRJ0QYCA8ABxIAMtAANBP3EgBEEGdHJyCyIBQYACTw0CIAggA2sgG2ohBCABIQIgGwwBCyABQf8BcSECIANBAWoiGyAIIANraiEEIBsLIQMgAUH/AXFBLUYEQCAVQQRJDQIMAwsgAUEwa0H/AXFBCkkgAUFfcUHBAGtB/wFxQQZJcg0DIA1BADYCACAIIBZqQQFqIQNBCCEEIAIhAUEEDAULIA1BADYCACAIIBZqQQFqIQNBCCEEQQQMBAsgDCAVQQJ0aiAINgIACyAVQQFqIRULIAMgIEcNAAsgFUUgHUF/c3ENAiAVQQRHDQFBACEDQX8hAQNAIAFBA0YEQCANQoSAgIDAADcCACANIA9BGGs2AgggFkEZaiEPQQwMBgsgAUEBaiEBIANBwMnlAGohAiADIAxqIANBBGohAygCACIEIAIoAgBBAWtGDQALIA0gATYCBCANQQQ2AgAgBCADQbjJ5QBqKAIAIgFrIQMgASAWakEBaiEBQQwhBEEICyANaiADNgIAIAQgDWogATYCAAwECyANQQM2AgAgFUEBaiEPDAELIA1BATYCAAtBBAsgDWogDzYCAAsgDEEQaiQADAELIBggEy8ADTsAASAYQQNqIBMtAA86AAAgEykCECEhIBM1AhghIiAYQRBqIBNBHGoxAAA8AAAgGCAiPgIMIBggITcCBEEAIQcLIBggBzoAACATQSBqJAAgCy0ADEEBRgRAIAZBADoAAAwBCyALQShqIAtBFWopAAA3AwAgCyALKQANNwMgAkACQAJAAkACQCAJIBJGIgFFBEACQCAfRQRAIAENAQwHCyAFIBJqLAAAQb9/TA0GCyALQS02AgwgCSASayICDQEgGQ0CDAQLIAZCADcAFSAGIAspAyA3AAEgBkEAOgAgIAZBADYAESAGQQE6AAAgBkEcakEANgAAIAZBCWogC0EoaikDADcAAAwFCyALQQxqQQEgBSASaiIBQQEQhBkgGUYNAQsgBkEAOgAADAMLIBkEQAJAIAJBAkkNACABLAABQb9/Sg0AIAEgAkEBIAJBuMLlABDpGwALIAsgAkEBazYCBCALIAFBAWo2AgAgCygCBCECIAsoAgAhAQsCQAJAAkACQAJAIAJBCE0EQAJAAkAgAg4CCAABC0EBIQUgAS0AAEEraw4DBwUHBQsgAS0AAEErRg0BIAIiBUEJSQ0EDAILIAEsAAhBv39KDQIgASACQQBBCEHIwuUAEOkbAAsgAkEBayEFIAFBAWohASACQQpJDQILQQAhAgNAIAEtAAAiBEHBAGtBX3FBCmogBEEwayAEQTlLGyIEQQ9LIAJB/////wBLcg0EIAFBAWohASAEIAJBBHRyIQIgBUEBayIFDQALDAILQQdBCCABLQAAQStGIgIbIQUgASACaiEBC0EAIQIDQCABLQAAIgRBwQBrQV9xQQpqIARBMGsgBEE5SxsiBEEPSw0CIAFBAWohASAEIAJBBHRyIQIgBUEBayIFDQALCyAGQgA3ABUgBiALKQMgNwABIAZBADoAICAGIAI2ABEgBkEBOgAAIAZBHGpBADYAACAGQQlqIAtBKGopAwA3AAAMAgsgBkEAOgAADAELIAUgCSASIAlBqMLlABDpGwALIAtBMGokACARQQdqIgEgFy0AD0EBRgR/IAEgFykAEDcAASABQRlqIBdBKGopAAA3AAAgAUERaiAXQSBqKQAANwAAIAFBCWogF0EYaikAADcAAEEABUEBCzoAACAXQTBqJABBASEBAkAgES0AB0EBRgRAIBEgCTYCMCARIBw2AiwgEUEFOgAoIBogEUEoaiARQT9qQay94wAQrQw2AgQMAQsgGiARKQAINwABIBpBGWogEUEgaikAADcAACAaQRFqIBFBGGopAAA3AAAgGkEJaiARQRBqKQAANwAAQQAhAQsgGiABOgAAIBFBQGskACAKLQAMIQEgHkEBcQRAIAFBAXENASAOIAopAA03AAEgDkEAOgAAIA5BGWogCkElaikAADcAACAOQRFqIApBHWopAAA3AAAgDkEJaiAKQRVqKQAANwAADAQLIAFBAXFFDQELIAooAhAgEBCqESEBIA5BAToAACAOIAE2AgQMAgsgDiAKKQANNwABIA5BADoAACAOQRlqIApBJWopAAA3AAAgDkERaiAKQR1qKQAANwAAIA5BCWogCkEVaikAADcAAAwBCyAOQQE6AAAgDiAcNgIECyAKQUBrJABBASECAkAgFC0ADEEBRgRAIAAgFCgCEDYCBAwBCyAAIBQpAA03AAIgAEEBOgABIABBGmogFEElaikAADcAACAAQRJqIBRBHWopAAA3AAAg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BikCADcCACACQQhqIAZBCGooAgA2AgAMAQsgCiABayISQQxsIhMEQCAOIAtBDGxqIAIgE/wKAAALIAJBCGogBkEIaigCADYCACACIAYpAgA3AgAgEkEYbCICRQ0AIAggC0EYbGogCCABQRhsaiAC/AoAAAsgCCABQRhsaiICQRBqIANBEGopAwA3AwAgByABNgJAIAcgDzYCPCAHIAg2AjggB0GAgICAeDYCACACIAMpAwA3AwAgAkEIaiADQQhqKQMANwMAIAggCkEBajsBkgMMAgsgBEHMAGohDiAEQcgAaiEPAkACQCACQQVrDgIAAgELIAQgCDYCDCAEIAsoAgQ2AhAgBEEFNgIUIARBGGogBEEMahCxFyAEKAJAIgFByAJqIQIgBCgCRCEKAkAgAS8BkgMiCEEFTQRAIAIgBikCADcCACACQQhqIAZBCGooAgA2AgAMAQsgCEEFayILQQxsIg4EQCABQdQCaiACIA78CgAACyACQQhqIAZBCGooAgA2AgAgAiAGKQIANwIAIAtBGGwiAkUNACABQZABaiABQfgAaiAC/AoAAAsgASADKQMANwN4IAEgCEEBajsBkgMgAUGIAWogA0EQaikDADcDACABQYABaiADQQhqKQMANwMAIAcgBEEYakE4/AoAACAHQQU2AkAgByAKNgI8IAcgATYCOAwCCyACQQdrIQFBBiEKCyAEIAo2AhQgBCAINgIMIAQgCygCBDYCECAEQRhqIARBDGoQsRcgDygCACIIQYwCaiABQQxsaiECIA4oAgAhCwJAIAEgCC8BkgMiCk8EQCACIAYpAgA3AgAgAkEIaiAGQQhqKAIANgIADAELIAogAWsiDkEMbCIPBEAgAkEMaiACIA/8CgAACyACQQhqIAZBCGooAgA2AgAgAiAGKQIANwIAIA5BGGwiAkUNACAIIAFBGGxqIgZBGGogBiAC/AoAAAsgCCABQRhsaiICQRBqIANBEGopAwA3AwAgAiADKQMANwMAIAJBCGogA0EIaikDADcDACAIIApBAWo7AZIDIAcgBEEYakE4/AoAACAHIAE2AkAgByALNgI8IAcgCDYCOAsgBEHQAGokAAJAIAUoAghBgICAgHhHBEAgBSgCNCEEIAUoAjAhAyAFQeAAaiAHQSj8CgAAIAUoAkghEyAFKAJAIRUgBSgCRCEWIAUoAjgh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IAIEf0GpxugALQAAGiACIAMQ7xsFIAMLIgENASADIAIQoh8ACxCgEiAAIAUpAwA3AgQgAEEANgIADAELIABBADYCDCAAIARBAWsiAjYCBCAAIAEgBmo2AgAgACACIARBA3ZBB2wgAkEISRs2AggLIAVBEGokAAvpAQEEfwJAIAEoAgQtAABBPEcNACABKAIAIgMgACgCACIBKAIAKAIAIgJqIgAgASgCCE8NAAJAIANBAWoiAyAATQRAIAJBCEcNAiABKAIEIgQgA2ohA0EAIQEDQCABQQdHBEAgASADaiABQfjLxwBqIQUgAUEBaiEBLQAAIgJBwQBrQf8BcUEaSUEFdCACciAFLQAAIgJBwQBrQf8BcUEaSUEFdCACckYNAQwDCwsgACAEai0AACIAQT5LDQFCgOyAgJCAgIDAACAArYinIQQMAgsgAyAAQejLxwAQpx0AC0EAIQQLIARBAXELiAIBA38jAEEwayIDJAACQAJAIAEoAgAiBC0AFCIFQQJGIAVBAXFyRQRAIANBCGogAi0AGEECdEHMntEAaigCABCtFyADQSRqIgUgAygCCCADKAIMQdCSzgAQ1gogA0EUaiAFELALIAItABkNAQwCC0H3p84AQSlBoKjOABCcFAALIANBFGoQhQMLAkACQAJAIAQtABdFDQAgAygCHCIERQ0AIAMoAhggBEEBdGoiBEECRg0AIARBAWssAABBAEgNAQsgACADKQIUNwIEIABBgICAgHg2AgAgAEEMaiADQRxqKQIANwIADAELIAAgASACQQEQjQsgA0EUakEBQQIQ8gwLIANBMGokAAv1DQINfwF+IwBB0ABrIgUkACAAKAIAIgEoAgAhAiABQQA2AgAjAEEQayIBJAAgAUEIaiACQRBqENEdIAEoAgwhBCAFIAEoAgg2AgAgBSAENgIEIAFBEGokACAFQSxqIQogBSgCACEMIAUoAgQhCSACKAIwIQYjAEEwayIBJABBqcboAC0AABoCQEEEQQQQ7xsiBARAIAQgBjYCAEEBIQIgAUEBNgIUIAEgBDYCECABQQE2AgwgAUEANgIgIAFCgICAgMAANwIYIAFBADYCLCABQoCAgIDAADcCJAJAAkACQAJAIAlFDQBBACEEA0ACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQgDGoiAy0AACICQSBP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JCADIAY2AiAgAyABNgIcIANBKGogAhCJDCADKAIwIgVBwABJDQQgA0HgAGoiCUHM9OUAKAIAIgY2AgAgA0HE9OUAKQIAIhE3A1ggA0HYAGpB0PTlABDJEiADKAJcQZDOADYCACADQUBrIgVBATYCACADIAMpA1g3AzggAygCMBDYCiEHAkAgByAFKAIAIgJNBEBBASEEDAELQQEhBANAIAMoAjwhAQJAAkACQAJAIAIOAgABAgsgA0H4AGogBjYCACADIBE3A3AMAgsgASgCACEBIANB2ABqIgIgA0E4ahCJDCACIAEQqgUgA0H4AGogCSgCADYCACADIAMpAlg3A3AMAQsgA0HwAGogASACIAEgAhDFBgsgA0E4akEEQQQQ8gwgBSADQfgAaigCACICNgIAIAMgAykDcDcDOCAEQQF0IQQgAiAHSQ0ACwsgA0HkAGohCgNAAkACQCACIAMoAjAiAUYEQCADKAIsQQRrIQEgAkECdCECIAMoAjxBBGshBQNAIAJFDQIgAiAFaiEHIAEgAmogAkEEayECKAIAIgYgBygCACIHRg0ACyAGIAdNDQEMAgsgASACSw0BCyADQThqQQRBBBDyDCADKAIwIQUMBgsgA0HYAGogA0EoaiIBIANBOGoQ8AEgA0HQAGoiAiAJKAIANgIAIAMgAykCWDcDSCADQfgAaiIPIApBCGooAgA2AgAgAyAKKQIANwNwIAFBBEEEEPIMIANBMGogAigCADYCACADIAMpA0g3AyggBARAQQAhCANAIAMoAnQhBSADKAJwIQ1BACECIAMoAngiBwRAIAVBBGshBiAHQQJ0IQEDQCABIAZqIg4gDigCACIOQRB2IhAgECACQRB0ckGQzgBuIgJBkM4AbGtBEHQgDkH//wNxciIOQZDOAG4iECACQRB0cjYCACAOIBBBkM4AbGshAiABQQRrIgENAAsLIAMgBzYCYCADIA02AlggAyAFNgJcAkAgB0UNACAFIAdBAnQiAWpBBGsiBkUNACAGKAIADQAgBUEEayEFIAdB/////wNxIQYCQANAIAFFBEBBACEBDAILIAZBAWshBiABIAVqIAFBBGshASgCAEUNAAsgBkEBaiIBIAdLDQELIAMgATYCYCABIQcLAkAgByANQQJ2Tw0AIANBCGogA0HYAGogB0EEQQQQ5QggAygCCCIBQYGA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DAILIAAgAzcCAAwBCyAAQQQ6AAALIARBEGokAAuBAgEEfyMAQeAAayICJAACQAJAIAEtALABQegARwRAIAIgASkDqAE3AwggAkEUaiABENkZQQEhBCACQQE2AjwgAkGcssQANgI4IAJCATcCRCACQZYDNgJUIAJB6AA6AF8gAiACQdAAajYCQCACIAJB2ABqNgJQIAIgAkHfAGo2AlggAkEgaiIDIAJBOGoQ9wQgAkE0aiACQRxqKAIANgIAIAIgAikCFDcCLCACQQhqIAMQkRAhAyABLQCwAUGiAUcNASABEIMNIQUgARCICCABIAUQxBAMAQsgARCICCAAIAEpA6ABNwIEDAELIAAgAzYCBAsgACAENgIAIAJB4ABqJAAL+wEBA38gAEEIaiECAkAgACgCCCIDQQlGDQACQAJAAkACQAJAAkACQEEBIANBAmsiBCAEQQdPGw4GAQIDBAUGAAsgACgCDCIAELYEIABBIEEIEPgcDAYLIABBEGoQ8QwMBQsgAEEYahDxDCADRQRAIABBEGoQ8QwMBQsgACgCDCIAELYEIABBIEEIEPgcDAQLIABBEGoQ8QwgAEEYahDxDAwDCyAAQRBqEPEMIABBGGoQ8QwMAgsgAEEQahDxDAwBCyAAQRhqELgaIABBEGoQ8QwLIAIgASkDADcDACACQRBqIAFBEGopAwA3AwAgAkEIaiABQQhqKQMANwMAC/YBAgJ/An4jAEEQayIDJAACQAJ/IAEoAgBBBUcEQCABKQIAIgZCIIghBQJAAkACQEECIAanIgFBA2siBCAEQQJPG0EBaw4CAQIACyACKAIQIQIgA0EBOgAEIAMgAjYCCCADQQRqEPkUIQJBAQwDCyACKAIQIgFFDQMgAyAFPAAFIANBADoABCADIAFBAWs2AgggA0EEahD5FCECQQEMAgsgAyAFPgIMIAMgATYCCCADQQM6AAQgA0EEahD5FCECQQEMAQsgASgCBCECQQALIQEgACACNgIEIAAgATYCACADQRBqJAAPC0HUv8kAQSRB+L/JABDjDwALhQIBA38jAEEgayIDJAAgACgCACEFIAACf0EBIAAtAAgNABogACgCBCIELQAKQYABcUUEQEEBIAQoAgBBq77nAEG1vucAIAUbQQJBASAFGyAEKAIEKAIMEQUADQEaIAEgBCACKAIMEQEADAELIAVF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AgwiAUUEQCACNQIUIQVBACEBDAELIAIpAhQhBSADQQlqIgRFDQAgAUH/ASAE/AsACyAAIAU3AgggACADNgIEIAAgATYCACACQSBqJAALnAIBAX8jAEHgAGsiAiQAIAJB1IHKADYCWCACQcSBygA2AlAgAkGUgcoANgJIIAJBtIHKADYCQCACQZSBygA2AjggAkGkgcoANgIwIAJBlIHKADYCKCACQZSBygA2AiAgAkGUgcoANgIYIAJBhIHKADYCECACQfSAygA2AgggAiAANgIsIAIgAEHIAGo2AkwgAiAAQd0AajYCRCACIABBQGs2AjwgAiAAQdwAajYCNCACIABB2wBqNgIkIAIgAEHaAGo2AhwgAiAAQdkAajYCFCACIABBMGo2AgwgAiAAQdgAajYCBCACIABB0ABqNgJcIAIgAkHcAGo2AlQgAUHkg8oAQQZBjIPKAEELIAJBBGpBCxDVByACQeAAaiQAC/4BAQh/IwBBMGsiAiQAQQEhBQJAIAEoAgAiBEHcv8oAQQ0gASgCBCIIKAIMIgYRBQANAEEAIQEDQEH/ASEDAkAgAUH/AXEiB0H/AUYiCUUEQEEBIQMgB0UNASABQQFqIQMLIARB2LzKAEECIAYRBQANAgsgAiAAIAdqLQAAOgADIAJBAjYCCCACQey8ygA2AgQgAkICNwIQIAJB+As2AiggAkHdCTYCICACIAE6AC8gAiACQRxqNgIMIAIgAkEDajYCJCACIAJBL2o2AhwgBCAIIAJBBGoQzgMNASADIQEgCUUNAAsgBEHpv8oAQQEgBhEFACEFCyACQTBqJAAgBQucAgEBfyMAQeAAayICJAAgAkHA4coANgJYIAJBsOHKADYCUCACQYDhygA2AkggAkGg4coANgJAIAJBgOHKADYCOCACQZDhygA2AjAgAkGA4coANgIoIAJBgOHKADYCICACQYDhygA2AhggAkHw4MoANgIQIAJB4ODKADYCCCACIAA2AiwgAiAAQcgAajYCTCACIABB3QBqNgJEIAIgAEFAazYCPCACIABB3ABqNgI0IAIgAEHbAGo2AiQgAiAAQdoAajYCHCACIABB2QBqNgIUIAIgAEEwajYCDCACIABB2ABqNgIEIAIgAEHQAGo2AlwgAiACQdwAajYCVCABQdDjygBBBkH44soAQQsgAkEEakELENUHIAJB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Qf8BcSIDIANBDE8bIARB/gFGGyEFIAAhBAJ/QQwgAC0AC0H+AUcNABogACgCACEEIAAoAggiA0H///93RwRAIANB////B3EMAQsgBEEEaygAAAshBgJAIAUgAiAFaiIDTQRAIAMgBksNASACBEAgBCAFaiABIAL8CgAACwJAIAAtAAtB/gFHBEAgA0ELSw0BIAAgA0HAAXI6AAsMAQsgACADNgIECw8LIAUgA0HEqsgAEKcdAAsgAyAGQcSqyAAQph0AC+cBAQV/IAAoAiAiAkUEQEEADwsgACACQQFrNgIgAkACQCAAEPQOIgMEQCADKAIEIQACQAJAIAMoAggiBCADKAIAIgEvATJJBEAgASECDAELA0AgASgCACICRQ0CIABBAWohACABLwEwIQQgBCACIgEvATJPDQALCyAEQQFqIQEgAA0CIAIhBQwDC0GUueMAEKkdAAtBpLnjABCpHQALIAIgAUECdGpBNGohAQNAIAEoAgAiBUE0aiEBIABBAWsiAA0AC0EAIQELIAMgATYCCCADQQA2AgQgAyAFNgIAIAIgBEECdGpBBGoL7wECAX4FfwJAIAEtADxFDQAgASgCLCIEBEAgASgCKCEGIAEoAgwhByABKAIIIQggBCEFA0AgBiAIIAcQ6BsgBUEBayIFDQALCyABKAI4BEAgASABKAI0IAEoAgwgBGxqNgI0CyABQQA6ADwgASkCACEDIAFBADYCACADp0EBcUUNACABIANCIIinEI8DCwJAIAIoAgAEQCABIAIpAgQiA6cQjwMgASgCKEGX8MAAQQEQ6BsgAUGX8MAAQQEQpwUgASADQiCIpxCPAwwBCyABKAIoQZfwwABBARDoGyABQZfwwABBARCnBQsgAEEEOgAAC+QBAQN/IwBBMGsiAiQAAkAgAygCECIEIAMoAhQiBksNAAJAIAMoAgBBAWtBAk8EQCACQQxqIAFBBGogAygCCCADKAIMIAQgBhC5BCACKAIMQQFHDQIgAigCFCIDIAIoAhBPDQEgAkEANgIoIAJBATYCHCACQYCdygA2AhggAkIENwIgIAJBGGpBiJ3KABDoFwALIAQgAygCDE8NASADKAIIIARqLQAAIgMgAS0ABEcEQCABLQAFIANHDQILIARBAWohAwsgACADNgIIIABBADYCBEEBIQULIAAgBTYCACACQTBqJAAL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AkEYaikCADcCACAAQQhqIAJBEGopAgA3AgAgAkEgaiQADwsQlh8AC0GpnMAAQT8QlR8AC9EBAgV/AX4jAEEgayICJAAgAkEQaiABEP8DIAIoAhQhAyAAAn8gAigCECIEQYGAgIB4RgRAIAAgAzYCBEEBDAELIAItABwgASgCaCACIAIoAhg2AhggAiADNgIUIAIgBDYCECACQQhqIAJBEGoiAxDRHUEIaiACKAIIIAIoAgwQ9AshByADELUaIAEoAghBCUcEQCABQQhqEPsJCyABIAc3AxAgAUECNgIIQQFxBEAgASABLQB3QQFyOgB3CyAAQcsAOgABQQALOgAAIAJBIGokAAvPAQEHfyMAQTBrIgIkACABKAIEIQMgAiABKAIIIgZBCEEwEIIKIAIoAgQhBCACKAIAQQFHBEAgAigCCCEHAkAgBEUNACAGQTBsIQEgByEFIAQhCANAIAFFDQECQCADKAIAQQdHBEAgAiADEIkCDAELIAJBBzYCAAsgBSACQTD8CgAAIANBMGohAyAFQTBqIQUgAUEwayEBIAhBAWsiCA0ACwsgACAGNgIIIAAgBzYCBCAAIAQ2AgAgAkEwaiQADwsgBCACKAIIQfyuyAAQtBoAC9sBAQN/IwBBMGsiAiQAAkAgAygCECIEIAMoAhQiBksNACABQQRqIQECQCADKAIAQQFrQQJPBEAgAkEMaiABIAMoAgggAygCDCAEIAYQowQgAigCDEEBRw0CIAIoAhQiAyACKAIQTw0BIAJBADYCKCACQQE2AhwgAkGAncoANgIYIAJCBDcCICACQRhqQYidygAQ6BcACyAEIAMoAgxPDQEgAS0AACADKAIIIARqLQAARw0BIARBAWohAwsgACADNgIIIABBADYCBEEBIQULIAAgBTYCACACQTBqJAALygEBA38jAEEwayIBJAACQCACKAIQIgQgAigCFCIFSw0AIAIoAgBBAWtBAk8EQCABQQxqIABBBGogAigCCCACKAIMIAQgBRDeAyABKAIMIgNBAUcNASABKAIQIAEoAhRNDQEgAUEANgIoIAFBATYCHCABQYCdygA2AhggAUIENwIgIAFBGGpBiJ3KABDoFwALIAQgAigCDE8NACACKAIIIARqLQAAIgIgAC0ABEYgAC0ABSACRnIgAC0ABiACRnIhAwsgAUEwaiQAIAML2wEB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AhggAiAAQRhqNgIUIAJBuKDGADYCECACIABBCGo2AgwgAkGkl8YANgIIIAIgADYCBCACIABBKmo2AkwgAiACQcwAajYCRCABQbSdxgBBDUGEn8YAQQkgAkEEakEJENUHIAJB0ABqJAAL8wEBAX8jAEHQAGsiAiQAIAAoAgAhACACQdSXxgA2AkggAkHolsYANgJAIAIgAEE5ajYCPCACQeiWxgA2AjggAiAAQThqNgI0IAJBiJrGADYCMCACIABBNGo2AiwgAkHolsYANgIoIAIgAEEwajYCJCACQfCexgA2AiAgAiAAQSxqNgIcIAJB4J7GADYCGCACIABBKGo2AhQgAkHImcYANgIQIAIgAEEIajYCDCACQaSXxgA2AgggAiAANgIEIAIgAEE6ajYCTCACIAJBzABqNgJEIAFBzJ/GAEELQYSfxgBBCSACQQRqQQkQ1QcgAkHQAGokAAv0AQEBfyMAQdAAayICJAAgACgCACEAIAJB7LfGADYCSCACQYi2xgA2AkAgAiAAQUBrNgI8IAJB+LXGADYCOCACIABBPWo2AjQgAkH4tcYANgIwIAIgAEE8ajYCLCACQay8xgA2AiggAiAAQSRqNgIkIAJBuLXGADYCICACIABBIGo2AhwgAkHEp8YANgIYIAIgAEEYajYCFCACQci1xgA2AhAgAiAAQQxqNgIMIAJBnLzGADYCCCACIAA2AgQgAiAAQcQAajYCTCACIAJBzABqNgJEIAFBrL3GAEEIQeS8xgBBCSACQQRqQQkQ1QcgAkHQAGokAAv7AQEBfyMAQdAAayICJAAgACgCACEAIAJBxJ/KADYCSCACQbSfygA2AkAgAiAANgI8IAJBpJ/KADYCOCACIABB5ApqNgI0IAJBlJ/KADYCMCACIABByApqNgIsIAJBhJ/KADYCKCACIABBsApqNgIkIAJB9J7KADYCICACIABBqA1qNgIcIAJB5J7KADYCGCACIABBpA1qNgIUIAJB1J7KADYCECACIABBoApqNgIMIAJBxJ7KADYCCCACIABBoA1qNgIEIAIgAEGsDWo2AkwgAiACQcwAajYCRCABQcigygBBBEGAoMoAQQkgAkEEakEJENUHIAJB0ABqJAALxwEBAX8jAEEQayIGJAACQAJAIAQgBU0EQCADIAVJDQEgBkEIaiABLQCAAiABLQCBAiAB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BAsgAyACNgIMIANBBGoQpBMLIABBADYCAAwBCyABIAJBAWs2AiAgARD0DiIBBEAjAEEwayICJAAgAkEIaiABEIcJIAIoAggEQCAAIAIpAhQ3AgAgAkEoaiACQRBqKAIAIgQ2AgAgAEEIaiACQRxqKAIANgIAIAIgAikCCCIFNwMgIAFBCGogBDYCACABIAU3AgAgAkEwaiQADAILQdS04wAQqR0AC0GEueMAEKkdAAsgA0EQaiQAC8wEAgp/AX4jAEEQayIEJAACQCABKAIgIgJFBEAgASgCACABQQA2AgBBAXEEQCABKAIMIQIgASgCCCEFAkAgASgCBCIBBEAgBCAFNgIIIAQgATYCBAwBCyACBEADQCAFKAKYAyEFIAJBAWsiAg0ACwtBACECIARBADYCCCAEIAU2AgQLIAQgAjYCDCMAQRBrIgEkACABQQRqIARBBGoiAigCACACKAIEEM8RA0AgASgCBCICBEAgAUEEaiACIAEoAggQzxEMAQsLIAFBEGokAAsgAEEANgIADAELIAEgAkEBazYCICABEPgOIggEQCMAQTBrIgMkACADQQhqIQYjAEEQayIJJAAgCCgCBCECAkACQCAIKAIIIgogCCgCACIBLwGSA08EQANAIAlBBGogASACEM8RIAkoAgQiAUUNAiAJKAIIIQIgCSgCDCIKIAEvAZIDTw0ACwsgCkEBaiEHAkAgAkUEQCABIQUMAQsgASAHQQJ0akGYA2ohByACIQsDQCAHKAIAIgVBmANqIQcgC0EBayILDQALQQAhBwsgBiAKNgIUIAYgAjYCECAGIAE2AgwgBiAHNgIIIAZBADYCBCAGIAU2AgAMAQsgBkEANgIACyAJQRBqJAAgAygCCARAIAAgAykCFDcCACADQShqIANBEGooAgAiATYCACAAQQhqIANBHGooAgA2AgAgAyADKQIIIgw3AyAgCEEIaiABNgIAIAggDDcCACADQTBqJAAMAgtB7KrkABCpHQALQcDO5AAQqR0ACyAEQRBqJAAL0QECA38CfiMAQSBrIgEkACAAKAIAIgIoAgAhAyACQQA2AgAgAygCECECIANBADYCECACBEAgAhEJACEFIAAoAgQiAygCACIAKQMAIgRQIARCA4NCAFJyBH8gAAUgBKciACAAKAIAIgJBAWs2AgAgASAANgIIIAEgACgCEDYC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AQN/IwBBIGsiAiQAIAJBFGogARDaAwJAIAItABRBAUYEQCAAIAIoAhg2AgQgAEEBOgAADAELIAItABVFBEAgAEGACDsBAAwBCyABKAIAIgFBADYCCCABIAEoAhRBAWo2AhQgAkEUaiABQQxqIAEQvgQgAigCGCEBAkAgAigCFEECRwRAIAJBDGohAwJAAkAgASACKAIcIgRBptHjAEEGEIQZRQRAIAEgBEGs0eMAQQMQhBkNASABIARBr9HjAEEDEIQZRQRAIANBAzoAAQwDCyADQQI6AAEMAgsgA0EAOgABDAELIANBAToAAQsgA0EAOgAAIAItAAxBAXFFDQEgAigCECEBCyAAQQE6AAAgACABNgIEDAELIAAgAi0ADToAASAAQQA6AAALIAJBIGokAAuVAgEDfyMAQSBrIgIkACACQRRqIAEQ2gMCQCACLQAUQQFGBEAgACACKAIYNgIEIABBAToAAAwBCyACLQAVRQRAIABBgAY7AQAMAQsgASgCACIBQQA2AgggASABKAIUQQFqNgIUIAJBFGogAUEMaiABEL4EIAIoAhghAQJAIAIoAhRBAkcEQCACQQxqIQMCQCABIAIoAhwiBEHX0eMAQQUQhBlFBEAgASAEQdzR4wBBCBCEGUUEQCADQQI6AAEMAgsgA0EBOgABDAELIANBADoAAQsgA0EAOgAAIAItAAxBAXFFDQEgAigCECEBCyAAQQE6AAAgACABNgIEDAELIAAgAi0ADToAASAAQQA6AAALIAJBIGokAAvtAQECfyMAQTBrIgIkAAJAIAApAwBC////////////AINCgICAgICAgPj/AFoEQCACQQE2AhQgAkGgvuYANgIQIAJCATcCHCACQZgDNgIsIAIgADYCKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQzgMhAwwBCyACQQA6AAwgAiABNgIIQQEhAyACQQE2AhQgAkGgvuYANgIQIAJCATcCHCACQZgDNgIsIAIgADYCKCACIAJBKGo2AhggAkEIaiACQRBqEJcfDQAgAi0ADEUEQCABQai+5gBBAhDQGw0BC0EAIQMLIAJBMGokACADC8YBAgN/AX4jAEGAAWsiBCQAAkAgASkCCCIFpyICQYCAgARxRQ0AIAJBgICAwABxBEAgAkGAgIAIciECDAELIAFBCjsBDCACQYCAgMgA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DxCSGCAAQaCz4QBBAyACQQxqIgFBkLPhABD9BhCNDiABQQRBBBDyDCACQSBqJAALqAEBA38jAEEQayIDJABBAyECIAAtAAAiACEEIABBCk8EQCADIAAgAEHkAG4iBEHkAGxrQf8BcUEBdCICQc/A5wBqLQAAOgAPIAMgAkHOwOcAai0AADoADkEBIQILQQAgACAEG0UEQCACQQFrIgIgA0ENamogBEEBdEH+AXFBz8DnAGotAAA6AAALIAFBAUEBQQAgA0ENaiACakEDIAJrEN8CIANBEGokAAvCAQECfyMAQRBrIgMkAAJAAkACQAJAAkACQAJAIAEoAgAiASgCAEEBaw4FAQIDBAUACyAAIAEpAwg3AgAMBQsgAUEIakEEQQggASgCCEEDRhtqKAIAIQIgA0EIaiABQShqEIkEIAAgAiADKAIMIgEgASACSRs2AgQgACACIAEgASACSxs2AgAMBAsgACABKQMINwIADAMLIAAgASkDCDcCAAwCCyAAIAEpAwg3AgAMAQsgACABQShqEP8cCyADQRBqJAALwAECA38DfiMAQSBrIgMkACABKQOoASEHIANBCGogARDUCiADKQMQIQYgAygCDCEEIAMoAgghBSADIAMpAxgiCDcDAAJAIAVBAXEEQCACRQRAIABBAjoACCAAIAQ2AgAgAxDxDAwCCyAEQQhqEK4EIARBIEEIEPgcQgAhBgsgARCICCAAIAg3AxggACAGNwMQIABBADoACCAAIAdCAXxC/////w+DIAE1AqQBQiCGhEKAgICAIH03AwALIANBIGokAAutAQIBfwF+IwBBEGsiAiQAAkAgAS0AsAFBGUcEQCACIAEQ3wggAAJ+IAIpAwhQBEAgACACKAIANgIIQgIMAQsgACACKQMANwMIIABBEGogAkEIaikDADcDAEIBCzcDAAwBCyACIAEQhgoCQCACKQMIUARAIAAgAigCADYCCEICIQMMAQsgACACKQMANwMIIABBEGogAkEIaikDADcDAAsgACADNwMACyACQRBqJAALxQEBAn8jAEEQayIDJAACQAJAAkACQAJAAkACQCABKAIAIgEoAgBBAWsOBQECAwQFAAsgACABKQMINwIADAULIAFBCGpBBEEIIAEoAghBA0YbaigCACECIANBCGogAUEoahCJBCAAIAIgAygCDCIBIAEgAkkb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eDYCAAwBCyAGQQRqIANBDGpBJPwKAAAgBiABNgIAIANB0ABqQQRBCBDyDCADQUBrQQRBCBDyDCADQTBqQQRBCBDyDAsgA0GAAWokACAPKAIIIgFBgICAgHhGDQEgAEEEaiAPQQxqQST8CgAADAILIA9BCGohBiMAQZABayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEECIAQiASgCACIEQYCAxABrIgUgBUEITxtBAWsOBgABAgwDBCALIAFBBGohASACKAIALQAUIgRBAkYgBEEBcXINBCADQegAaiIEIAIQ/AsgAygCaEEQRg0RIANBOGogA0GAAWooAgA2AgAgA0EwaiADQfgAaikCADcDACADQShqIANB8ABqKQIANwMAIAMgAykCaDcDICADQdgAaiIFIANBIGoQ3A0gBCACIAEQ/AggAy0AbCEBIAMoAmgiBEGAgICAeEYNBSAGQQVqIANB7QBqQSP8CgAAIAYgAToABCAGIAQ2AgAgBUEBQQIQ8gwMIAsgAigCAC0AFCIFQQJGIAVBAXFyDQUgA0HoAGoiBCACEPwLIAMoAmhBEEYNEiADQThqIANBgAFqKAIANgIAIANBMGogA0H4AGopAgA3AwAgA0EoaiADQfAAaikCADcDACADIAMpAmg3AyAgA0HYAGogA0EgahDcDSAEIAIgARD8CCADLQBsIQQgAygCaCIFQYCAgIB4Rg0GIAZBBWogA0HtAGpBI/wKAAAMBwsgAUEcaiEEIAFBBGohDCACKAIALQAUIgVBAkYgBUEBcXINCCADQQhqIAQQrRcgAygCCCEFIAMoAgwhByMAQSBrIgQkACAEQQRqIAUgB0GAotEAENYKIARBGGoiByAEQQxqKAIAIgU2AgAgBCAEKQIENwMQIAQgBUU6ABwgBEEQahCqBCADQdgAaiIFQQhqIAcpAwA3AgAgBSAEKQMQNwIAIARBIGokACADQegAaiACIAwgAS0AHSAFEJoNIAMoAmgiAUGAgICAeEYNByADQSBqIANB7ABqQST8CgAAIAVBAUECEPIMIANB0ABqIANBKGopAgAiETcDACAGIAMpAjA3AhQgBkEcaiADQThqKQIANwIAIAZBJGogA0FAaygCADYCACADIAMpAiAiEjcDSCAGQQxqIBE3AgAgBiASNwIEIAYgATYCAAweCyABQQRqIQEgAigCAC0AFCIEQQJGIARBAXFyDQogA0HoAGogAiABEJcIIANBKGoiASADQfQAaikCADcDACADIAMpAmw3AyAgAygCaCIEQYCAgIB4Rg0JIAYgAykCfDcCFCAGQSRqIANBjAFqKAIANgIAIAZBHGogA0GEAWopAgA3AgAgBkEMaiABKQMANwIAIAYgAykDIDcCBCAGIAQ2AgAMHQsgAigCAC0AFCIEQQJGIARBAXFyDQogA0HoAGoiBSACEPwLIAMoAmhBEEYNFyADQThqIANBgAFqKAIANgIAIANBMGogA0H4AGopAgA3AwAgA0EoaiADQfAAaikCADcDACADIAMpAmg3AyAgA0HIAGoiBCADQSBqENwNIAUgAiABKAIEIgFB2ABqIAEtAHAgBBCaDSADKAJoIgFBgICAgHhGDQsgBkEEaiADQewAakEk/AoAACAGIAE2AgAgBEEBQQIQ8gwMHAsgA0HoAGoiBCACEPwLIAMoAmhBEEYNDSADQThqIANBgAFqKAIANgIAIANBMGogA0H4AGopAgA3AwAgA0EoaiADQfAAaikCADcDACADIAMpAmg3AyAgA0HYAGoiBSADQSBqENsNIAUgASgCACIBIAEQvhIgA0H0AGogA0HgAGopAgA3AgAgAyADKQJYNwJsIANBCTYCaCACIAQQxwsMGgsgA0HYAGogASABEL0SIANB9ABqIANB4ABqKQIANwIAIAMgAykCWDcCbCADQQo2AmggAiADQegAahDHCwwZCyADQegAaiIFIAIQ/AsgAygCaEEQRg0NIANBOGogA0GAAWooAgA2AgAgA0EwaiADQfgAaikCADcDACADQShqIANB8ABqKQIANwMAIAMgAykCaDcDICADQdgAaiIHIANBIGoQ2w0gByAEIAEoAiAiASABIARLGyAEIAEgASAESRsQvhIgA0H0AGogA0HgAGopAgA3AgAgAyADKQJYNwJsIANBCTYCaCACIAUQxwsMGAsgA0HoAGogAiABQSBqEPwIIAMtAGwhASADKAJoIgVBgICAgHhGDQ0gBkEFaiADQe0AakEj/AoAACABIQQLIAYgBDoABCAGIAU2AgAgA0HYAGpBAUECEPIMDBcLIANBGGogA0HgAGoiASkCADcDACADIAMpAlg3AxAgA0HoAGoiBCACEPwLIAMoAmhBEEYNDCADQThqIANBgAFqKAIANgIAIANBMGogA0H4AGopAgA3AwAgA0EoaiADQfAAaikCADcDACADIAMpAmg3AyAgA0HYAGoiBSADQSBqENwNIAUgA0EQaiIFEOUKIANB9ABqIAEpAgA3AgAgAyADKQJYNwJsIANBCjYCaCACIAQQxwsgBUEBQQIQ8gwMFQsgAyAEEK0XIAMoAgAhBCADKAIEIQojAEEgayIHJAAgB0EEaiEOIwBBEGsiCyQAIAogBGsiDUECdCEFAkACQCANQf7///8DSyAFQfz///8HS3INAAJ/IAVFBEBBBCEJQQAMAQtBqcboAC0AABpBBCEIIAVBBBDvGyIJRQ0BIA1BAXYLIQUgC0EMaiINQQA2AgAgCyAJNgIIIAsgBTYCBCAKIARrQQF2IgkgC0EEaiIIKAIAIAgoAggiBWtLBEAgCCAFIAlBBEEIEMgTIAgoAgghBQsgCCAEIApHBH8gBSAJaiAIKAIEIAVBA3RqIQUDQCAFQQRqIAQtAAAiCCAEQQFqLQAAIgogCCAKSxs2AgAgBSAIIAogCCAKSRs2AgAgBEECaiEEIAVBCGohBSAJQQFrIgkNAAsFIAULNgIIIA5BCGogDSgCADYCACAOIAspAgQ3AgAgC0EQaiQADAELIAggBUGAotEAELQaAAsgB0EYaiIFIAdBDGooAgAiBDYCACAHIAcpAgQ3AxAgByAERToAHCAHQRBqEOkDIANB2ABqIgRBCGogBSkDADcCACAEIAcpAxA3AgAgB0EgaiQAIANB6ABqIAIgDCABLQAdIAQQ6AwgAygCaCIBQYCAgIB4RwRAIANBIGogA0HsAGpBJPwKAAAgBEEEQQgQ8gwgA0HQAGogA0EoaikCACIRNwMAIAYgAykCMDcCFCAGQRxqIANBOGopAgA3AgAgBkEkaiADQUBrKAIANgIAIAMgAykCICISNwNIIAZBDGogETcCACAGIBI3AgQgBiABNgIADBYLIANBGGogA0HgAGoiASkCADcDACADIAMpAlg3AxAgA0HoAGoiBCACEPwLIAMoAmhBEEYNDCADQThqIANBgAFqKAIANgIAIANBMGogA0H4AGopAgA3AwAgA0EoaiADQfAAaikCADcDACADIAMpAmg3AyAgA0HYAGoiBSADQSBqENsNIAUgA0EQaiIFEIQLIANB9ABqIAEpAgA3AgAgAyADKQJYNwJsIANBCTYCaCACIAQQxwsgBUEEQQgQ8gwMFAsgA0HoAGogAiABQQRqEI4GIANBKGoiASADQfQAaikCADcDACADIAMpAmw3AyAgAygCaCIEQYCAgIB4RwRAIAYgAykCfDcCFCAGQSRqIANBjAFqKAIANgIAIAZBHGogA0GEAWopAgA3AgAgBkEMaiABKQMANwIAIAYgAykDIDcCBCAGIAQ2AgAMFQsgA0HQAGogA0EoaiIBKQMANwMAIAMgAykDIDcDSCADQegAaiIEIAIQ/AsgAygCaEEQRg0MIANBOGogA0GAAWooAgA2AgAgA0EwaiADQfgAaikCADcDACABIANB8ABqKQIANwMAIAMgAykCaDcDICADQdgAaiIBIANBIGoQ2w0gASADQcgAaiIBEIQLIANB9ABqIANB4ABqKQIANwIAIAMgAykCWDcCbCADQQk2AmggAiAEEMcLIAFBBEEIEPIMDBMLIANB0ABqIAEpAwA3AwAgAyADKQMgNwNIIANB6ABqIgEgAhD8CyADKAJoQRBGDQwgA0E4aiADQYABaigCADYCACADQTBqIANB+ABqKQIANwMAIANBKGogA0HwAGopAgA3AwAgAyADKQJoNwMgIANB2ABqIgQgA0EgahDcDSAEIANByABqIgQQ5QogA0H0AGogA0HgAGopAgA3AgAgAyADKQJYNwJsIANBCjYCaCACIAEQxwsgBEEBQQIQ8gwMEgsgA0HoAGogAiABEKIFIANBKGoiASADQfQAaikCADcDACADIAMpAmw3AyAgAygCaCIEQYCAgIB4RwRAIAYgAykCfDcCFCAGQSRqIANBjAFqKAIANgIAIAZBHGogA0GEAWopAgA3AgAgBkEMaiABKQMANwIAIAYgAykDIDcCBCAGIAQ2AgAMEwsgA0HQAGogASkDADcDACADIAMpAyA3A0ggA0HoAGoiASACEPwLIAMoAmhBEEYNDCADQThqIANBgAFqKAIANgIAIANBMGogA0H4AGopAgA3AwAgA0EoaiADQfAAaikCADcDACADIAMpAmg3AyAgA0HYAGoiBCADQSBqENsNIAQgA0HIAGoiBBCECyADQfQAaiADQeAAaikCADcCACADIAMpAlg3AmwgA0EJNgJoIAIgARDHCyAEQQRBCBDyDAwRCyADQegAaiIFIAIQ/AsgAygCaEEQRg0NIANBOGogA0GAAWooAgA2AgAgA0EwaiADQfgAaikCADcDACADQShqIANB8ABqKQIANwMAIAMgAykCaDcDICADQcgAaiIEIANBIGoQ2w0gBSACIAEoAgQiAUHYAGogAS0AcCAEEOgMIAMoAmgiAUGAgICAeEYNASAGQQRqIANB7ABqQST8CgAAIAYgATYCACAEQQRBCBDyDAwRCyADQegAaiIBIAIQ/AsgAygCaEEQRg0NIANBOGogA0GAAWooAgA2AgAgA0EwaiADQfgAaikCADcDACADQShqIANB8ABqKQIANwMAIAMgAykCaDcDICADQdgAaiIEIANBIGoQ3A0gBCADQcgAaiIEEOUKIANB9ABqIANB4ABqKQIANwIAIAMgAykCWDcCbCADQQo2AmggAiABEMcLIARBAUECEPIMDA8LIANB6ABqIgEgAhD8CyADKAJoQRBGDQ0gA0E4aiADQYABaigCADYCACADQTBqIANB+ABqKQIANwMAIANBKGogA0HwAGopAgA3AwAgAyADKQJoNwMgIANB2ABqIgQgA0EgahDbDSAEIANByABqIgQQhAsgA0H0AGogA0HgAGopAgA3AgAgAyADKQJYNwJsIANBCTYCaCACIAEQxwsgBEEEQQgQ8gwMDgtBjJrOABCpHQALQZyazgAQqR0AC0Gsms4AEKkdAAtBvJrOABCpHQALIANB2ABqIARB/wFxIgQgASABIARLGyAEIAEgASAESRsQvRIgA0H0AGogA0HgAGopAgA3AgAgAyADKQJYNwJsIANBCjYCaCACIANB6ABqEMcLDAkLQcyazgAQqR0AC0Hcms4AEKkdAAtB7JrOABCpHQALQfyazgAQqR0AC0GMm84AEKkdAAtBnJvOABCpHQALQbybzgAQqR0AC0Gsm84AEKkdAAtBzJvOABCpHQALIAZBgICAgHg2AgALIANBkAFqJAAgDygCCCIBQYCAgIB4Rg0AIABBBGogD0EMakEk/AoAAAwBC0GAgICAeCEBCyAAIAE2AgAgD0EwaiQAC8QBAwF+AX8BfCMAQSBrIgMkAAJAAkACQAJAIAEoAgBBAWsOAgECAAsCfyABKwMIIgS9Qv///////////wCDQv/////////3/wBW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BEAgAUEBayEEA0AgA0EANgIAIANBBGohAyAEQQFrIgQNAAsgASACakEBayECDAELIAFFDQELIANBADYCACACQQFqIQILIAAgAjYCCAucAQEBfyMAQUBqIgMkACADIAE2AgQgAyAANgIAIAMgAjYCCCACQQFrQQhPBEAgA0EENgIQIANB8KvjADYCDCADQgM3AhggA0EvNgI4IANBLzYCMCADQbkENgIoIANBCDYCPCADIANBJGo2AhQgAyADQQhqNgI0IAMgA0E8ajYCLCADIAM2AiQgA0EMakHsrOMAEOgXAAsgA0FAayQAC4kBAQN/IAAoAgAgACgCCCICayABSQRAIAAgAiABENATIAAoAgghAgsgACgCBCACQQJ0aiEDAkACQCABQQJPBEAgAUEBayEEA0AgA0EANgIAIANBBGohAyAEQQFrIgQNAAsgASACakEBayECDAELIAFFDQELIANBADYCACACQQFqIQILIAAgAjYCCAuFAwIFfwF+IwBBEGsiBCQAAkACQCABKAIAIgJFDQAgAiABKAIERg0AIAEgAkEgajYCACABIAJBEGo2AghBASEFIAEgASgCDEEBajYCDCAEQQhqIQMjAEEQayIGJAACQAJAAkACQAJAAkACQAJAQRUgAigCAEGAgICAeHMiASABQRVPG0EBaw4PAQAAAgAAAAAAAAADBAUGAAsgAiAGQQ9qQcCNwAAQ6RchASADQQE6AAAgAyABNgIEDAYLIANBADoAACADQQQgAi0ABCIBIAFBBE8bOgABDAULIANBADoAACADQgQgAikDCCIHIAdCBFobPAABDAQLIAMgAigCCCACKAIMENENDAMLIAMgAigCBCACKAIIENENDAILIAMgAigCCCACKAIMEPIFDAELIAMgAigCBCACKAIIEPIFCyAGQRBqJAACQCAELQAIQQFGBEAgACAEKAIMNgIEDAELIAAgBC0ACToAAUEAIQULIAAgBToAAAwBCyAAQYAKOwEACyAEQRBqJAALkAMCBX8BfiMAQRBrIgQkAAJAAkAgASgCACICRQ0AIAIgASgCBEYNACABIAJBIGo2AgAgASACQRBqNgIIQQEhBSABIAEoAgxBAWo2AgwgBEEIaiEDIwBBEGsiBiQAAkACQAJAAkACQAJAAkACQEEVIAIoAgBBgICAgHhzIgEgAUEVTxtBAWsODwEAAAIAAAAAAAAAAwQFBgALIAIgBkEPakGgjcAAEOkXIQEgA0EBOgAAIAMgATYCBAwGCyADQQA6AAAgA0EBQQIgAi0ABCIBQQFGG0EAIAEbOgABDAULIANBADoAACADQQBBAUECIAIpAwgiB0IBURsgB1AbOgABDAQLIAMgAigCCCACKAIMEP8TDAMLIAMgAigCBCACKAIIEP8TDAILIAMgAigCCCACKAIMENYJDAELIAMgAigCBCACKAIIENYJCyAGQRBqJAACQCAELQAIQQFGBEAgACAEKAIMNgIEDAELIAAgBC0ACToAAUEAIQULIAAgBToAAAwBCyAAQYAGOwEACyAEQRBqJAALhQMCBX8BfiMAQRBrIgQkAAJAAkAgASgCACICRQ0AIAIgASgCBEYNACABIAJBIGo2AgAgASACQRBqNgIIQQEhBSABIAEoAgxBAWo2AgwgBEEIaiEDIwBBEGsiBiQAAkACQAJAAkACQAJAAkACQEEVIAIoAgBBgICAgHhzIgEgAUEVTxtBAWsODwEAAAIAAAAAAAAAAwQFBgALIAIgBkEPakGQjcAAEOkXIQEgA0EBOgAAIAMgATYCBAwGCyADQQA6AAAgA0EDIAItAAQiASABQQNPGzoAAQwFCyADQQA6AAAgA0IDIAIpAwgiByAHQgNaGzwAAQwECyADIAIoAgggAigCDBCCEAwDCyADIAIoAgQgAigCCBCCEAwCCyADIAIoAgggAigCDBC7BwwBCyADIAIoAgQgAigCCBC7BwsgBkEQaiQAAkAgBC0ACEEBRgRAIAAgBCgCDDYCBAwBCyAAIAQtAAk6AAFBACEFCyAAIAU6AAAMAQsgAEGACDsBAAsgBEEQaiQAC4UDAgV/AX4jAEEQayIEJAACQAJAIAEoAgAiAkUNACACIAEoAgRGDQAgASACQSBqNgIAIAEgAkEQajYCCEEBIQUgASABKAIMQQFqNgIMIARBCGohAyMAQRBrIgYkAAJAAkACQAJAAkACQAJAAkBBFSACKAIAQYCAgIB4cyIBIAFBFU8bQQFrDg8BAAACAAAAAAAAAAMEBQYACyACIAZBD2pB8IzAABDpFyEBIANBAToAACADIAE2AgQMBgsgA0EAOgAAIANBAyACLQAEIgEgAUEDTxs6AAEMBQsgA0EAOgAAIANCAyACKQMIIgcgB0IDWhs8AAEMBAsgAyACKAIIIAIoAgwQgRAMAwsgAyACKAIEIAIoAggQgRAMAgsgAyACKAIIIAIoAgwQlAgMAQsgAyACKAIEIAIoAggQlAgLIAZBEGokAAJAIAQtAAhBAUYEQCAAIAQoAgw2AgQMAQsgACAELQAJOgABQQAhBQsgACAFOgAADAELIABBgAg7AQALIARBEGokAAuFAwIFfwF+IwBBEGsiBCQAAkACQCABKAIAIgJFDQAgAiABKAIERg0AIAEgAkEgajYCACABIAJBEGo2AghBASEFIAEgASgCDEEBajYCDCAEQQhqIQMjAEEQayIGJAACQAJAAkACQAJAAkACQAJAQRUgAigCAEGAgICAeHMiASABQRVPG0EBaw4PAQAAAgAAAAAAAAADBAUGAAsgAiAGQQ9qQbCNwAAQ6RchASADQQE6AAAgAyABNgIEDAYLIANBADoAACADQQMgAi0ABCIBIAFBA08bOgABDAULIANBADoAACADQgMgAikDCCIHIAdCA1obPAABDAQLIAMgAigCCCACKAIMEIMQDAMLIAMgAigCBCACKAIIEIMQDAILIAMgAigCCCACKAIMENcGDAELIAMgAigCBCACKAIIENcGCyAGQRBqJAACQCAELQAIQQFGBEAgACAEKAIMNgIEDAELIAAgBC0ACToAAUEAIQULIAAgBToAAAwBCyAAQYAIOwEACyAEQRBqJAALoQECA38BfiMAQRBrIgIkAAJAAkAgASgCBCIDRQRAIAIgASgCACIDQQBBABDgGCACKAIAIgRFDQIgAikCCCEFIAAgAigCBDYCCCAAIAQ2AgQgASAFNwIAIABBAzYCAAwBCyAAQQA2AiAgACADNgIcIABBBzoACCAAQQE2AgAgACABKAIANgIYCyACQRBqJAAPCyADQQBBAEEAQdTEwAAQ6RsAC+AFAQ5/IwBBIGsiAyQAIANBFGogASgCBCABKAIAa0EEdkEEQRAQggogAygCGCECIAMoAhRBAUYEQCACIAMoAhxBpJrjABC0GgALIANBEGoiDEEANgIAIAMgAygCHDYCDCADIAI2AggjAEEQayIIJAAgASgCBCABKAIAa0EEdiIHIANBCGoiAigCACACKAIIIgRrSwRAIAIgBCAHQQRBEBDREyACKAIIIQQLIAggAigCBDYCDCAIIAQ2AgggCCACQQhqNgIE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IAJBgICAIHFFBEAgACABEKgdRQ0CDAMLIAAgARCvDA0CDAELIAAgARCuDA0BCyABKAIAQY2m4wBBAiABKAIEKAIMEQUADQAgAEEEaiEAIAEoAggiAkGAgIAQcUUEQCACQYCAgCBxRQRAIAAgARCoHQ8LIAAgARCvDA8LIAAgARCuDA8LQQELkgEBA38jAEEQayICJAAgAkEIaiIEIAFBJGooAgA2AgBBqcboAC0AABogAiABKQIcNwMAQQxBBBDvGyIDBEAgAyACKQMANwIAIANBCGogBCgCADYCACABKAIEQQJGBEAgAUEIahD8DwsgAUEoQQQQ+BwgAEG41+UANgIEIAAgAzYCACACQRBqJAAPC0EEQQwQoh8AC5MVAhN/BX4jAEEQayINJAACfiACQQhPBEAgACEFIAKtAn4gAkERTwRAIAJBEGshBEEAIQBCxObBm+DF4owTIRhC05GMrYjR2p8kIRkDQCAYIRYgACABaiIIQQhqKQAAQtDj/MyihM6EpH+FIhhC/////w+DIAgpAAAgGYUiGUIgiH5CIIkgGUL/////D4MgGEIgiH6FIRggFiEZIABBEGoiACAESQ0ACyABIARqIgApAAggGIUhGCAAKQAAIBaFDAELIAJBB00EQAJAIAJBA00EQCACDQFCxObBm+DF4owTIRhC05GMrYjR2p8kDAMLIAEgAmpBBGs1AABCxObBm+DF4owThSEYIAE1AABC05GMrYjR2p8khQwCCyABIAJBAXZqMQAAIAEgAmpBAWsxAABCCIaEQsTmwZvgxeKME4UhGCABMQAAQtORjK2I0dqfJIUMAQsgASACakEIaykAAELE5sGb4MXijBOFIRggASkAAELTkYytiNHanySFCyIWQv////8PgyAYQiCIfoUgGEL/////D4MgFkIgiH5CIImFIhanQd3L3Z55bCAWQiCIp2pBycH4/QBsQaPuuZwEakEPd60hGiMAQRBrIhQkAAJAIAJBgARNBEAgBSgCACIEQQRrIQggBSgCBCIJIBqncSEDIBpCGYhC/wCDQoGChIiQoMCAAX4hGQJAAkADQCADIARqKQAAIhggGYUiFkJ/hSAWQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIhdQRQRAA0AgGiAIIBd6p0EDdiADaiAJcSIAQQJ0aygCACIHKQMIUQRAIAdBGGog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NgJUIAAgBDYCUCADQRBqJAAPCyAEIAMoAgxB/IfAABC0GgALlwEBAX9BqcboAC0AABpBHEEEEO8bIgRFBEBBBEEcEKIfAAsgBEEANgIAIABBADYCCCAAQgA3AgAgAEIANwIgIABBADoAHSAAIAM6ABwgACAENgIYIAQgASkCADcCBCAAIAIpAgA3AgwgBEEMaiABQQhqKQIANwIAIARBFGogAUEQaikCADcCACAAQRRqIAJBCGooAgA2AgALfwEDfyMAQRBrIgIkACACQQRqIAFBAUEBEIIKIAIoAgghBCACKAIEQQFHBEAgAigCDCEDIAEEQCADIAAgAfwKAAALIAIgATYCDCACIAM2AgggAiAENgIEIAMgARDjGiACQQRqEModIAJBEGokAA8LIAQgAigCDEH0ocAAELQaAAuQAQECfyMAQSBrIgMkACADIAI2AhwCQCABKAJsIgJBgCBxRQRAIAEgAkGAIHI2AmwgA0EIaiADQRxqIAEQgwIgAygCDCECIAMoAgghBCABIAEoAmxB/19xNgJsDAELIANBEGogA0EcaiABEIMCIAMoAhQhAiADKAIQIQQLIAAgBDYCACAAIAI2AgQgA0EgaiQAC5IBAQF/IAEoAgAiASgCAEUEQCABQX82AgACQCABKAIMIgJFBEAgAEEQNgIADAELIAEgAkEBayICNgIMIAAgASgCCCACQRxsaiICKQIANwIAIABBCGogAkEIaikCADcCACAAQRBqIAJBEGopAgA3AgAgAEEYaiACQRhqKAIANgIACyABQQA2AgAPC0Gsnc4AENYRAAuBAQEDfyABIAJNBEAgACgCBCEEAkACQAJAIAAoAggiAA4CAgEACwNAIAMgAEEBdiIFIANqIgMgBCADQQxsaigCACACSxshAyAAIAVrIgBBAUsNAAsLIAQgA0EMbGooAgAiACACTSAAIAFPcSEDCyADDwtBkMTRAEEeQbDE0QAQnBQAC4gBAQF/IwBBEGsiBiQAAkAgBCAFTQRAIAMgBUkNASAGQQhqIAEtAAAgAS0AASABLQACIAIgBGogBSAEaxDxA0EAIQUgACAGKAIIQQFxBH8gACAGKAIMIARqNgIEQQIFIAULNgIAIAZBEGokAA8LIAQgBUHEtuEAEKcdAAsgBSADQcS24QAQph0AC30BAX8CQCACQQRPBEADQCAAKAAA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JAAgB70hCQJ/QQMgB5lEAAAAAAAA8H9hDQAaQQIgCUKAgICAgICA+P8AgyIKQoCAgICAgID4/wBRDQAaIAlC/////////weDIg1CgICAgICAgAiEIAlCAYZC/v///////w+DIAlCNIinQf8PcSICGyILQgGDIQwgClAEQEEEIA1QDQEaIAJBswhrIQJCASEKIAxQDAELQoCAgICAgIAgIAtCAYYgC0KAgICAgICACFEiAxshC0ICQgEgAxshCkHLd0HMdyADGyACaiECIAxQCyEDIAAgAjsBiAEgACAKNwOAASAAQgE3A3ggACALNwNwIAAgAzoAigECQAJAAkACQAJAAkAgA0ECayIDBEBBASECQdK45wBB07jnACAJQgBTIgUbQdK45wBBASAFGyAEGyEFIAlCP4inIARyIQZBAyADIANBA08bQQJrDgICAwELIABBAzYCICAAQdS45wA2AhwgAEECOwEYQQEhBUEBIQIMAwsgAEEDNgIgIABB17jnADYCHCAAQQI7ARgMAgsgAEEDNgIgIABBAjsBGCAAQdu45wA2AhwMAQsgAEHgAGogAEHwAGogAEEHahBZAkAgACgCYARAIABBmAFqIABB6ABqKAIANgIAIAAgACkCYDcDkAEMAQsgAEGQAWogAEHwAGogAEEHahAxCyAAKAKUASICRQ0BIAAoApABIgQtAABBME0NAiAALgGYASEDIAAgBDYCHCAAQQI7ARggAEEBNgIgAn8gAkEBRgRAQQMhAiAAQSRqDAELIABBAjsBMCAAQai45wA2AiggAEECOwEkIAAgAkEBazYCOCAAQQE2AiwgACAEQQFqNgI0QQUhAiAAQTxqCyIEQQE7AQwgBEECOwEAIARBASADayADQQFrIANBAEwiAxs7AQ4gBEECQQEgAxs2AgggBEHOuOcAQcy45wAgAxs2AgQLIAAgAjYCbCAAIAY2AmQgACAFNgJgIAAgAEEYajYCaCABIABB4ABqENIDIABBoAFqJAAMAgtBkLXnAEEhQay45wAQnBQAC0HEt+cAQR9BvLjnABCcFAALDwsgASAHIAJBAEcgAS8BDhCeAguGAQEEfkGpxugALQAAGiABKQMYIQIgASkDECEDIAEpAwghBCABKQMAIQVBEEEIEO8bIgFFBEBBCEEQEKIfAAsgASACNwMIIAFBADYCACAAQQE2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ASBPNgKYDiABIDc2ApQOIAEgLzYCkA4LIAEgLToAnA4gAUHgAGohCCABQZAOaiEcIAFB/BNqIQYgAUHUAGohH0EAIQRBACEyIwBB4B5rIhIkAAJAAkACQCABQfgTaigCACIHLQBFIgJBAkcgAkEBcUVxDQAgEkHdC2pBAjoAACASQgA3A4gLIBJCADcDgAsgEkGChIgQNgDZCyASQQI2AtALIBJBAjYCyAsgEkEANgLACyASQQM6ALwLIBIgBy0AQiICQQJGIAJyQQFxOgDYCwJAIBwtAAwiEEECRwRAIBwoAgAiAyADKAIAIgJBAWo2AgAgAkEASA0BIBIgAzYCYCASIBwpAgQ3AmRCgICAgBAhxAULIBIgEDoAbCASQfAFaiICIBJBgAtqIBJB4ABqEMQPIBJBAToAyQYgEiACQcAA/AoAACASKQPIBiHCBSAHLQBJIQIgBygCDCEPIAcoAgghAyASQoGAgICgATcDUCASQoGAgIAwNwNIIBJBATYCQCASIA9BgICAASADGyILNgJEIBJCgIAEQoCABEIAIAJBAXEbIAJBAkYbIsEFIMQFIMIFQv//g4CAgECDhIRCgICACIQ3A1ggEkHgC2oiCRD1CiASQdwLakGCBDsBACASQgA3A4gLIBJCADcDgAsgEkGChIgQNgLYCyASQQI2AtALIBJBAjYCyAsgEkEANgLACyASQQM6ALwLIBItADwiE0EDRiATQQJGckUEQCASKAIwIgIgAigCACIDQQFqNgIAIANBAEgNASASKAI0ITIgEigCOCEECyDBBUIQiKchDCDEBUIgiKchByDCBUIIiKchDyDCBachAyASKAIAQQFxBH4gEkGIHGogEkEoaikDADcDACASQYAcaiASQSBqKQMANwMAIBIgEikDEDcD8BsgEiASQRhqKQMANwP4G0IBBUIACyHBBSASQYgGaiASKQP4GzcDACASQZAGaiASQYAcaikDADcDACASQZgGaiASQYgcaikDADcDACASIMEFNwPwBSASQQE6AMsGIBIgDDoAygYgEiAPOgDJBiASIBM6AKwGIBIgBDYCqAYgEiAyNgKkBiASIAI2AqAGIBIgAzoAyAYgEiASKQPwGzcDgAYgEiAHOgDMBiASQgA3A/gFIBJBADoAzQYgEiALNgK0BiASQQE2ArAGIBJCgYCAgDA3A7gGIBJCgYCAgKABNwPABiASQYALaiIHIBJB8AVqEJYDIQIgBigCACIPIA8oAgAiA0EBajYCACADQQBIDQAgEkEwaiELIBJB4ABqIAIgDxD1ASASQbALahD3FCAJEPMJAkACQCASKQNoIsQFIBIpA2AiwwVCAoWEUARAIAcgEkHwAGpBwAD8CgAAIBIoAoALQSlLDQEgBxCYEAwBCyASQfAFaiASQeAAakGQBfwKAAAgEkHQHGoiDBD1CiASQcwcakGCBDsBACASQgA3A/gbIBJCADcD8BsgEkGChIgQNgLIHCASQQI2AsAcIBJBAjYCuBwgEkEANgKwHCASQQM6AKwcIBItADwiCUEDRiAJQQJGckUEQCASKAIwIgYgBigCACICQQFqNgIAIAJBAEgNAyASKAI0IQQgEigCOCECCyASLQBbIQcgEi0AWiEPIBItAFkhAyASKAIAQQFxBH4gEkHYHmogEkEoaikDADcDACASQdAeaiASQSBqKQMANwMAIBIgEikDEDcDwB4gEiASQRhqKQMANwPIHkIBBUIACyHBBSASQYgRaiASKQPIHjcDACASQZARaiASQdAeaikDADcDACASQZgRaiASQdgeaikDADcDACASIMEFNwPwECASIBIpA8AeNwOAESASIAY2AqARIBIgBDYCpBEgEiACNgKoESASIAk6AKwRIBIgEikDQDcDsBEgEiASKQNINwO4ESASIBIpA1A3A8ARIBJBADoAyBEgEiADOgDJESASIA86AMoRIBIgBzoAyxEgEiASLwFcOwHMESASQgA3A/gQIBJBAjoA3BEgEkGQEGoiAiASQfAQaiASQdARahDEDyASQQA6AOwQIBJB8BtqIg8gAhCWAyEDIB8oAgAiBiAGKAIAIgJBAWo2AgAgAkEASA0CIBJBgAtqIAMgBhD1ASASQaAcahD3FCAMEPMJIBIpA4gLIBIpA4ALQgKFhEIAUg0BIA8gEkGQC2pBwAD8CgAAIBIoAvAbQSlNBEAgDxCYEAsgEkGgBmoQ9xQgEigC8AoiAiACKAIAIgJBAWs2AgAgAkEBRw0AIBJB8ApqEJcNCyALEPcUDAILIBJB4BZqIBJBgAtqQZAF/AoAACASQdAcaiICEPUKIBJBzBxqQYIEOwEAIBJCADcD+BsgEkIANwPwGyASQYKEiBA2AsgcIBJBAjYCwBwgEkECNgK4HCASQQA2ArAcIBJBAzoArBwgEkHgEWogEkHwAGpBgAX8CgAAIBJBoBxqEPcUIAIQ8wkgCxD3FCAQQQJGDQMgHCgCACICIAIoAgAiAkEBazYCAAwCCwALIBwtAAxBAkYEQEIAIcQFQgIhwwUMAgsgHCgCACICIAIoAgAiAkEBazYCAEIAIcQFQgIhwwULIAJBAUcNACAcEMsOCyAIIMQFNwMIIAggwwU3AwAgCEEQaiASQeARakGQCvwKAAAgEkHgHmokACABKQNoIcQFIAEpA2AhxQUgASgCcCEjDAELAAsgAS8A/QogAUH/CmotAABBEHRyIVEgAS8A7QogAUHvCmotAABBEHRyIVIgAS8A3QogAUHfCmotAABBEHRyITogAS8AzQogAUHPCmotAABBEHRyIVMgAS8AvQogAUG/CmotAABBEHRyITwgAS8ArQogAUGvCmotAABBEHRyIT0gAS8AnQogAUGfCmotAABBEHRyIVQgAS8AjQogAUGPCmotAABBEHRyIVUgAS8A/QkgAUH/CWotAABBEHRyIVYgAS8A7QkgAUHvCWotAABBEHRyIT8gAS8A3QkgAUHfCWotAABBEHRyIUAgAS8AzQkgAUHPCWotAABBEHRyIUEgAS8AvQkgAUG/CWotAABBEHRyIUIgAS8ArQkgAUGvCWotAABBEHRyIVcgAS8AnQkgAUGfCWotAABBEHRyIVggAS8AjQkgAUGPCWotAABBEHRyIVkgAS8A/QggAUH/CGotAABBEHRyIU0gAS8A7QggAUHvCGotAABBEHRyIUggAS8A3QggAUHfCGotAABBEHRyIUkgAS8AzQggAUHPCGotAABBEHRyIUogAS8AvQggAUG/CGotAABBEHRyIUsgAS8ArQggAUGvCGotAABBEHRyIUwgAS8AnQggAUGfCGotAABBEHRyIVogAS8AjQggAUGPCGotAABBEHRyIVsgAS8A/QcgAUH/B2otAABBEHRyIQ4gAS8A7QcgAUHvB2otAABBEHRyIScgAS8A3QcgAUHfB2otAABBEHRyIRggAS8AzQcgAUHPB2otAABBEHRyIR4gAS8AvQcgAUG/B2otAABBEHRyIQogAS8ArQcgAUGvB2otAABBEHRyIREgAS8AnQcgAUGfB2otAABBEHRyIV4gAS8AjQcgAUGPB2otAABBEHRyIWggAS8A/QYgAUH/BmotAABBEHRyIWkgAS8A7QYgAUHvBmotAABBEHRyIWogAS8A3QYgAUHfBmotAABBEHRyIWsgAS8AzQYgAUHPBmotAABBEHRyIWwgAS8AvQYgAUG/BmotAABBEHRyIW0gAS8ArQYgAUGvBmotAABBEHRyIW4gAS8AnQYgAUGfBmotAABBEHRyIW8gAS8AjQYgAUGPBmotAABBEHRyIXAgAS8A/QUgAUH/BWotAABBEHRyIXEgAS8A7QUgAUHvBWotAABBEHRyIXIgAS8A3QUgAUHfBWotAABBEHRyIXMgAS8AzQUgAUHPBWotAABBEHRyIXQgAS8AvQUgAUG/BWotAABBEHRyIXUgAS8ArQUgAUGvBWotAABBEHRyIXYgAS8AnQUgAUGfBWotAABBEHRyIXcgAS8AjQUgAUGPBWotAABBEHRyIXggAS8A/QQgAUH/BGotAABBEHRyIXkgAS8A7QQgAUHvBGotAABBEHRyIXogAS8A3QQgAUHfBGotAABBEHRyIXsgAS8AzQQgAUHPBGotAABBEHRyIXwgAS8AvQQgAUG/BGotAABBEHRyIX0gAS8ArQQgAUGvBGotAABBEHRyIX4gAS8AnQQgAUGfBGotAABBEHRyIX8gAS8AjQQgAUGPBGotAABBEHRyIYABIAEvAP0DIAFB/wNqLQAAQRB0ciGBASABLwDtAyABQe8Dai0AAEEQdHIhggEgAS8A3QMgAUHfA2otAABBEHRyIYMBIAEvAM0DIAFBzwNqLQAAQRB0ciGEASABLwC9AyABQb8Dai0AAEEQdHIhhQEgAS8ArQMgAUGvA2otAABBEHRyIYYBIAEvAJ0DIAFBnwNqLQAAQRB0ciGHASABLwCNAyABQY8Dai0AAEEQdHIhiAEgAS8A/QIgAUH/AmotAABBEHRyIYkBIAEvAO0CIAFB7wJqLQAAQRB0ciGKASABLwDdAiABQd8Cai0AAEEQdHIhiwEgAS8AzQIgAUHPAmotAABBEHRyIYwBIAEvAL0CIAFBvwJqLQAAQRB0ciGNASABLwCtAiABQa8Cai0AAEEQdHIhjgEgAS8AnQIgAUGfAmotAABBEHRyIY8BIAEvAI0CIAFBjwJqLQAAQRB0ciGQASABLwD9ASABQf8Bai0AAEEQdHIhkQEgAS8A7QEgAUHvAWotAABBEHRyIZIBIAEvAN0BIAFB3wFqLQAAQRB0ciGTASABLwDNASABQc8Bai0AAEEQdHIhlAEgAS8AvQEgAUG/AWotAABBEHRyIZUBIAEvAK0BIAFBrwFqLQAAQRB0ciEtIAEvAJ0BIAFBnwFqLQAAQRB0ciEvIAFBjAFqNQIAIckFIAFB/ABqNQIAIcgFIAEpAoQBIccFIAEpAnQhwwUgAS0A/AohpAEgASgC+AohpQEgASgC9AohpgEgASgC8AohpwEgAS0A7AohqAEgASgC6AohqQEgASgC5AohqgEgASgC4AohqwEgAS0A3AohrAEgASgC2AohrQEgASgC1AohrgEgASgC0AohrwEgAS0AzAohsAEgASgCyAohsQEgASgCxAohsgEgASgCwAohswEgAS0AvAohtAEgASgCuAohtQEgASgCtAohtgEgASgCsAohtwEgAS0ArAohuAEgASgCqAohuQEgASgCpAohugEgASgCoAohuwEgAS0AnAohvAEgASgCmAohvQEgASgClAohvgEgASgCkAohvwEgAS0AjAohwAEgASgCiAohwQEgASgChAohwgEgASgCgAohwwEgAS0A/AkhxAEgASgC+AkhxQEgASgC9AkhxgEgASgC8AkhxwEgAS0A7AkhyAEgASgC6AkhyQEgASgC5AkhygEgASgC4AkhywEgAS0A3AkhzAEgASgC2AkhzQEgASgC1AkhzgEgASgC0AkhzwEgAS0AzAkh0AEgASgCyAkh0QEgASgCxAkh0gEgASgCwAkh0wEgAS0AvAkh1AEgASgCuAkh1QEgASgCtAkh1gEgASgCsAkh1wEgAS0ArAkh2AEgASgCqAkh2QEgASgCpAkh2gEgASgCoAkh2wEgAS0AnAkh3AEgASgCmAkh3QEgASgClAkh3gEgASgCkAkh3wEgAS0AjAkh4AEgASgCiAkh4QEgASgChAkh4gEgASgCgAkh4wEgAS0A/Agh5AEgASgC+Agh5QEgASgC9Agh5gEgASgC8Agh5wEgAS0A7Agh6AEgASgC6Agh6QEgASgC5Agh6gEgASgC4Agh6wEgAS0A3Agh7AEgASgC2Agh7QEgASgC1Agh7gEgASgC0Agh7wEgAS0AzAgh8AEgASgCyAgh8QEgASgCxAgh8gEgASgCwAgh8wEgAS0AvAgh9AEgASgCuAgh9QEgASgCtAgh9gEgASgCsAgh9wEgAS0ArAgh+AEgASgCqAgh+QEgASgCpAgh+gEgASgCoAgh+wEgAS0AnAgh/AEgASgCmAgh/QEgASgClAgh/gEgASgCkAgh/wEgAS0AjAghgAIgASgCiAghgQIgASgChAghggIgASgCgAghgwIgAS0A/AchhAIgASgC+AchhQIgASgC9AchhgIgASgC8AchhwIgAS0A7AchiAIgASgC6AchiQIgASgC5AchigIgASgC4AchiwIgAS0A3AchjAIgASgC2AchjQIgASgC1AchjgIgASgC0AchjwIgAS0AzAchkAIgASgCyAchkQIgASgCxAchkgIgASgCwAchkwIgAS0AvAchlAIgASgCuAchlQIgASgCtAchlgIgASgCsAchlwIgAS0ArAchmAIgASgCqAchmQIgASgCpAchmgIgASgCoAchmwIgAS0AnAchnAIgASgCmAchnQIgASgClAchngIgASgCkAchnwIgAS0AjAchoAIgASgCiAchoQIgASgChAchogIgASgCgAchowIgAS0A/AYhpAIgASgC+AYhpQIgASgC9AYhpgIgASgC8AYhpwIgAS0A7AYhqAIgASgC6AYhqQIgASgC5AYhqgIgASgC4AYhqwIgAS0A3AYhrAIgASgC2AYhrQIgASgC1AYhrgIgASgC0AYhrwIgAS0AzAYhsAIgASgCyAYhsQIgASgCxAYhsgIgASgCwAYhswIgAS0AvAYhtAIgASgCuAYhtQIgASgCtAYhtgIgASgCsAYhtwIgAS0ArAYhuAIgASgCqAYhuQIgASgCpAYhugIgASgCoAYhuwIgAS0AnAYhvAIgASgCmAYhvQIgASgClAYhvgIgASgCkAYhvwIgAS0AjAYhwAIgASgCiAYhwQIgASgChAYhwgIgASgCgAYhwwIgAS0A/AUhxAIgASgC+AUhxQIgASgC9AUhxgIgASgC8AUhxwIgAS0A7AUhyAIgASgC6AUhyQIgASgC5AUhygIgASgC4AUhywIgAS0A3AUhzAIgASgC2AUhzQIgASgC1AUhzgIgASgC0AUhzwIgAS0AzAUh0AIgASgCyAUh0QIgASgCxAUh0gIgASgCwAUh0wIgAS0AvAUh1AIgASgCuAUh1QIgASgCtAUh1gIgASgCsAUh1wIgAS0ArAUh2AIgASgCqAUh2QIgASgCpAUh2gIgASgCoAUh2wIgAS0AnAUh3AIgASgCmAUh3QIgASgClAUh3gIgASgCkAUh3wIgAS0AjAUh4AIgASgCiAUh4QIgASgChAUh4gIgASgCgAUh4wIgAS0A/AQh5AIgASgC+AQh5QIgASgC9AQh5gIgASgC8AQh5wIgAS0A7AQh6AIgASgC6AQh6QIgASgC5AQh6gIgASgC4AQh6wIgAS0A3AQh7AIgASgC2AQh7QIgASgC1AQh7gIgASgC0AQh7wIgAS0AzAQh8AIgASgCyAQh8QIgASgCxAQh8gIgASgCwAQh8wIgAS0AvAQh9AIgASgCuAQh9QIgASgCtAQh9gIgASgCsAQh9wIgAS0ArAQh+AIgASgCqAQh+QIgASgCpAQh+gIgASgCoAQh+wIgAS0AnAQh/AIgASgCmAQh/QIgASgClAQh/gIgASgCkAQh/wIgAS0AjAQhgAMgASgCiAQhgQMgASgChAQhggMgASgCgAQhgwMgAS0A/AMhhAMgASgC+AMhhQMgASgC9AMhhgMgASgC8AMhhwMgAS0A7AMhiAMgASgC6AMhiQMgASgC5AMhigMgASgC4AMhiwMgAS0A3AMhjAMgASgC2AMhjQMgASgC1AMhjgMgASgC0AMhjwMgAS0AzAMhkAMgASgCyAMhkQMgASgCxAMhkgMgASgCwAMhkwMgAS0AvAMhlAMgASgCuAMhlQMgASgCtAMhlgMgASgCsAMhlwMgAS0ArAMhmAMgASgCqAMhmQMgASgCpAMhmgMgASgCoAMhmwMgAS0AnAMhnAMgASgCmAMhnQMgASgClAMhngMgASgCkAMhnwMgAS0AjAMhoAMgASgCiAMhoQMgASgChAMhogMgASgCgAMhowMgAS0A/AIhpAMgASgC+AIhpQMgASgC9AIhpgMgASgC8AIhpwMgAS0A7AIhqAMgASgC6AIhqQMgASgC5AIhqgMgASgC4AIhqwMgAS0A3AIhrAMgASgC2AIhrQMgASgC1AIhrgMgASgC0AIhrwMgAS0AzAIhsAMgASgCyAIhsQMgASgCxAIhsgMgASgCwAIhswMgAS0AvAIhtAMgASgCuAIhtQMgASgCtAIhtgMgASgCsAIhtwMgAS0ArAIhuAMgASgCqAIhuQMgASgCpAIhugMgASgCoAIhuwMgAS0AnAIhvAMgASgCmAIhvQMgASgClAIhvgMgASgCkAIhvwMgAS0AjAIhwAMgASgCiAIhwQMgASgChAIhwgMgASgCgAIhwwMgAS0A/AEhxAMgASgC+AEhxQMgASgC9AEhxgMgASgC8AEhxwMgAS0A7AEhyAMgASgC6AEhyQMgASgC5AEhngEgASgC4AEhnwEgAS0A3AEhoAEgASgC2AEhYiABKALUASFjIAEoAtABIWQgAS0AzAEhZSABKALIASFmIAEoAsQBIWcgASgCwAEhmAEgAS0AvAEhmQEgASgCuAEhmgEgASgCtAEhXCABKAKwASEHIAEtAKwBITkgASgCqAEhRCABKAKkASFPIAEoAqABITcgAS0AnAEhXyABKAKYASFgIAEoApQBIT4gASgCkAEhUCABKAKAASEPCyDFBUIDhSDEBYRQBEAgByECDAQLIAEvAPURIAEtAPcRQRB0ciFGIAEvAN0QIAEtAN8QQRB0ciFHIAEvALkWIAFBuxZqLQAAQRB0ciEwIAEvAKkWIAFBqxZqLQAAQRB0ciFdIAEvAJkWIAFBmxZqLQAAQRB0ciE1IAEvAIkWIAFBixZqLQAAQRB0ciFhIAEvAPkVIAFB+xVqLQAAQRB0ciEiIAEvAOkVIAFB6xVqLQAAQRB0ciEdIAEvANkVIAFB2xVqLQAAQRB0ciEXIAEvAMkVIAFByxVqLQAAQRB0ciENIAEvALkVIAFBuxVqLQAAQRB0ciEUIAEvAKkVIAFBqxVqLQAAQRB0ciEZIAEvAJkVIAFBmxVqLQAAQRB0ciEhIAEvAIkVIAFBixVqLQAAQRB0ciEgIAEvAPkUIAFB+xRqLQAAQRB0ciElIAEvAOkUIAFB6xRqLQAAQRB0ciEVIAEvANkUIAFB2xRqLQAAQRB0ciEbIAEvAMkUIAFByxRqLQAAQRB0ciE2IAEvALkUIAFBuxRqLQAAQRB0ciEuIAEvAKkUIAFBqxRqLQAAQRB0ciEoIAEvAJkUIAFBmxRqLQAAQRB0ciEpIAEvAIkUIAFBixRqLQAAQRB0ciE0IAEvAIUSIAFBhxJqLQAAQRB0ciESIAEvALURIAFBtxFqLQAAQRB0ciEcIAEtALgWIc8DIAEoArQWIdADIAEoArAWIdEDIAEoAqwWIdIDIAEtAKgWIdMDIAEoAqQWIdQDIAEoAqAWIdUDIAEoApwWIdYDIAEtAJgWIdcDIAEoApQWIdgDIAEoApAWIdkDIAEoAowWIdoDIAEtAIgWIdsDIAEoAoQWIdwDIAEoAoAWId0DIAEoAvwVId4DIAEtAPgVId8DIAEoAvQVIeADIAEoAvAVIeEDIAEoAuwVIeIDIAEtAOgVIeMDIAEoAuQVIeQDIAEoAuAVIeUDIAEoAtwVIeYDIAEtANgVIecDIAEoAtQVIegDIAEoAtAVIekDIAEoAswVIeoDIAEtAMgVIesDIAEoAsQVIewDIAEoAsAVIe0DIAEoArwVIe4DIAEtALgVIe8DIAEoArQVIfADIAEoArAVIfEDIAEoAqwVIfIDIAEtAKgVIfMDIAEoAqQVIfQDIAEoAqAVIfUDIAEoApwVIfYDIAEtAJgVIfcDIAEoApQVIfgDIAEoApAVIfkDIAEoAowVIfoDIAEtAIgVIfsDIAEoAoQVIfwDIAEoAoAVIf0DIAEoAvwUIf4DIAEtAPgUIf8DIAEoAvQUIYAEIAEoAvAUIYEEIAEoAuwUIYIEIAEtAOgUIYMEIAEoAuQUIYQEIAEoAuAUIYUEIAEoAtwUIYYEIAEtANgUIYcEIAEoAtQUIYgEIAEoAtAUIYkEIAEoAswUIYoEIAEtAMgUIYsEIAEoAsQUIYwEIAEoAsAUIY0EIAEoArwUIY4EIAEtALgUIY8EIAEoArQUIZAEIAEoArAUIZEEIAEoAqwUIZIEIAEtAKgUIZMEIAEoAqQUIZQEIAEoAqAUIZUEIAEoApwUIZYEIAEtAJgUIZcEIAEoApQUIZgEIAEoApAUIZkEIAEoAowUIZoEIAEtAIgUIZsEIAEoAoQUIZwEIAEoAoAUIZ0EIAEoAogSIZ4EIAEtAIQSIZ8EIAEoAoASIaAEIAEoAvwRIaEEIAEoAvgRIaIEIAEtAPQRIaMEIAEoAvARIaQEIAEoAuQQIaUEIAEoAuAQIaYEIAEtANwQIacEIAEoAtgQIagEIAEoAtQQIakEIAEoAtAQIaoEIAEoAvwTIasEIAEtALQRIc4DIAEoArARIawEIAEoAqwRIa0EIAEoAqgRIa4EAkACfgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAvgTIp0BKAJYIgMtACBBAnFFDQAgAy0AHEEBcQ0AIMUFQgKFIMQFhEIAUg0BCyCdAS0ARCICQQJHIAJBAXFFcQ0FIM4DQQFxIM4DQQJHcSDFBUIChSDEBYRQIAMtABxBAXFycg0FIJ0BLQBCIgJBAkYgAnJBAXEhBiAFIQIjAEHgAGsiCSQAIAlBAToAGCAJQuSAgICgHzcCECAJQoqAgICgATcCCCAJQQA2AiQgCUKAgICAwAA3AhwgnAEEQCCcAUECdCEMA0AgCUEoaiIDIAlBCGogAigCABBIAkAgCSgCKEGAgICAeEcEQCAJQTRqIAMQ2xQgCSgCHEGAgICAeEcEQCAJQdgAaiAJQcQAaigCADYCACAJQdAAaiAJQTxqKQIANwMAIAkgCSkCNDcDSCAJQRxqIgMgCUHIAGoQ2h4gCSgCHEGAgICAeEYNAiADELUFDAILIAlBNGoQqAgMAQsgCUEcahDCGiAJQYCAgIB4NgIcCyACQQRqIQIgCUEoahDCGiAMQQRrIgwNAAsLIAFBkA5qIQQCQCAGBEAgCUEcakEAEGQMAQsgCSgCHEGAgICAeEYNAAJAIAkoAiQiAkECSQ0AIAkoAiAhBiACQRVPBEAgBiACIAlByABqEOQLDAELIAJBBHQhA0EQIQIDQCAGIAIgBmoQywQgAyACQRBqIgJHDQALCyAJKAIcQYCAgIB4Rg0AIAlBHGoQtQULIAQgCSkCHDcCACAEQQhqIAlBJGooAgA2AgAgCUHgAGokACABKAKQDkGAgICAeEYNBCABKAKYDiICRQ0EIAEoApQOIgMgAkEEdGohEyADKAIIIgsgAygCBCIfakEBayEMQQAhBkEBISQgCyECA0ACQCAGQQFxBEAgEyADIgZHDQEMBgsgJCATIANrQQR2Tw0FIAMgJEEEdGohBgsgAiALSw0CIAYoAggiCUUNBSAGQRBqIQMgBigCBEEBayEkQQAhBiAMIQQCQANAIAIgBkYNASAJICRqLQAAIAQtAABHBEAgBiECDAILICRBAWshJCAEQQFrIQQgCSAGQQFqIgZHDQALIAkhAgtBACEkQQEhBiACDQALDAQLQanG6AAtAAAaQcANQRAQ7xsiAkUNASACIDA7AK0NIAIgXTsAnQ0gAiA1OwCNDSACIGE7AP0MIAIgIjsA7QwgAiAdOwDdDCACIBc7AM0MIAIgDTsAvQwgAiAUOwCtDCACIBk7AJ0MIAIgITsAjQwgAiAgOwD9CyACICU7AO0LIAIgFTsA3QsgAiAbOwDNCyACIDY7AL0LIAIgLjsArQsgAiAoOwCdCyACICk7AI0LIAIgNDsA/QogAiASOwDtCiACIEY7AN0KIAIgRzsAzQogAiAcOwC9CiACIFE7AK0KIAIgUjsAnQogAiA6OwCNCiACIFM7AP0JIAIgPDsA7QkgAiA9OwDdCSACIFQ7AM0JIAIgVTsAvQkgAiBWOwCtCSACID87AJ0JIAIgQDsAjQkgAiBBOwD9CCACIEI7AO0IIAIgVzsA3QggAiBYOwDNCCACIFk7AL0IIAIgTTsArQggAiBIOwCdCCACIEk7AI0IIAIgSjsA/QcgAiBLOwDtByACIEw7AN0HIAIgWjsAzQcgAiBbOwC9ByACIA47AK0HIAIgJzsAnQcgAiAYOwCNByACIB47AP0GIAIgCjsA7QYgAiAROwDdBiACIF47AM0GIAIgaDsAvQYgAiBpOwCtBiACIGo7AJ0GIAIgazsAjQYgAiBsOwD9BSACIG07AO0FIAIgbjsA3QUgAiBvOwDNBSACIHA7AL0FIAIgcTsArQUgAiByOwCdBSACIHM7AI0FIAIgdDsA/QQgAiB1OwDtBCACIHY7AN0EIAIgdzsAzQQgAiB4OwC9BCACIHk7AK0EIAIgejsAnQQgAiB7OwCNBCACIHw7AP0DIAIgfTsA7QMgAiB+OwDdAyACIH87AM0DIAIggAE7AL0DIAIggQE7AK0DIAIgggE7AJ0DIAIggwE7AI0DIAIghAE7AP0CIAIghQE7AO0CIAIghgE7AN0CIAIghwE7AM0CIAIgiAE7AL0CIAIgiQE7AK0CIAIgigE7AJ0CIAIgiwE7AI0CIAIgjAE7AP0BIAIgjQE7AO0BIAIgjgE7AN0BIAIgjwE7AM0BIAIgkAE7AL0BIAIgkQE7AK0BIAIgkgE7AJ0BIAIgkwE7AI0BIAIglAE7AH0gAiCVATsAbSACIC07AF0gAiDHBTcCNCACIMMFNwIkIAIgxQU3AxAgAkEAOgC8DSACIJcBNgK4DSACIKsENgK0DSACIJ0BNgKwDSACIM8DOgCsDSACINADNgKoDSACINEDNgKkDSACINIDNgKgDSACINMDOgCcDSACINQDNgKYDSACINUDNgKUDSACINYDNgKQDSACINcDOgCMDSACINgDNgKIDSACINkDNgKEDSACINoDNgKADSACINsDOgD8DCACINwDNgL4DCACIN0DNgL0DCACIN4DNgLwDCACIN8DOgDsDCACIOADNgLoDCACIOEDNgLkDCACIOIDNgLgDCACIOMDOgDcDCACIOQDNgLYDCACIOUDNgLUDCACIOYDNgLQDCACIOcDOgDMDCACIOgDNgLIDCACIOkDNgLEDCACIOoDNgLADCACIOsDOgC8DCACIOwDNgK4DCACIO0DNgK0DCACIO4DNgKwDCACIO8DOgCsDCACIPADNgKoDCACIPEDNgKkDCACIPIDNgKgDCACIPMDOgCcDCACIPQDNgKYDCACIPUDNgKUDCACIPYDNgKQDCACIPcDOgCMDCACIPgDNgKIDCACIPkDNgKEDCACIPoDNgKADCACIPsDOgD8CyACIPwDNgL4CyACIP0DNgL0CyACIP4DNgLwCyACIP8DOgDsCyACIIAENgLoCyACIIEENgLkCyACIIIENgLgCyACIIMEOgDcCyACIIQENgLYCyACIIUENgLUCyACIIYENgLQCyACIIcEOgDMCyACIIgENgLICyACIIkENgLECyACIIoENgLACyACIIsEOgC8CyACIIwENgK4CyACII0ENgK0CyACII4ENgKwCyACII8EOgCsCyACIJAENgKoCyACIJEENgKkCyACIJIENgKgCyACIJMEOgCcCyACIJQENgKYCyACIJUENgKUCyACIJYENgKQCyACIJcEOgCMCyACIJgENgKICyACIJkENgKECyACIJoENgKACyACIJsEOgD8CiACIJwENgL4CiACIJ0ENgL0CiACIJ4ENgLwCiACIJ8EOgDsCiACIKAENgLoCiACIKEENgLkCiACIKIENgLgCiACIKMEOgDcCiACIKQENgLYCiACIKUENgLUCiACIKYENgLQCiACIKcEOgDMCiACIKgENgLICiACIKkENgLECiACIKoENgLACiACIM4DOgC8CiACIKwENgK4CiACIK0ENgK0CiACIK4ENgKwCiACIKQBOgCsCiACIKUBNgKoCiACIKYBNgKkCiACIKcBNgKgCiACIKgBOgCcCiACIKkBNgKYCiACIKoBNgKUCiACIKsBNgKQCiACIKwBOgCMCiACIK0BNgKICiACIK4BNgKECiACIK8BNgKACiACILABOgD8CSACILEBNgL4CSACILIBNgL0CSACILMBNgLwCSACILQBOgDsCSACILUBNgLoCSACILYBNgLkCSACILcBNgLgCSACILgBOgDcCSACILkBNgLYCSACILoBNgLUCSACILsBNgLQCSACILwBOgDMCSACIL0BNgLICSACIL4BNgLECSACIL8BNgLACSACIMABOgC8CSACIMEBNgK4CSACIMIBNgK0CSACIMMBNgKwCSACIMQBOgCsCSACIMUBNgKoCSACIMYBNgKkCSACIMcBNgKgCSACIMgBOgCcCSACIMkBNgKYCSACIMoBNgKUCSACIMsBNgKQCSACIMwBOgCMCSACIM0BNgKICSACIM4BNgKECSACIM8BNgKACSACINABOgD8CCACINEBNgL4CCACINIBNgL0CCACINMBNgLwCCACINQBOgDsCCACINUBNgLoCCACINYBNgLkCCACINcBNgLgCCACINgBOgDcCCACINkBNgLYCCACINoBNgLUCCACINsBNgLQCCACINwBOgDMCCACIN0BNgLICCACIN4BNgLECCACIN8BNgLACCACIOABOgC8CCACIOEBNgK4CCACIOIBNgK0CCACIOMBNgKwCCACIOQBOgCsCCACIOUBNgKoCCACIOYBNgKkCCACIOcBNgKgCCACIOgBOgCcCCACIOkBNgKYCCACIOoBNgKUCCACIOsBNgKQCCACIOwBOgCMCCACIO0BNgKICCACIO4BNgKECCACIO8BNgKACCACIPABOgD8ByACIPEBNgL4ByACIPIBNgL0ByACIPMBNgLwByACIPQBOgDsByACIPUBNgLoByACIPYBNgLkByACIPcBNgLgByACIPgBOgDcByACIPkBNgLYByACIPoBNgLUByACIPsBNgLQByACIPwBOgDMByACIP0BNgLIByACIP4BNgLEByACIP8BNgLAByACIIACOgC8ByACIIECNgK4ByACIIICNgK0ByACIIMCNgKwByACIIQCOgCsByACIIUCNgKoByACIIYCNgKkByACIIcCNgKgByACIIgCOgCcByACIIkCNgKYByACIIoCNgKUByACIIsCNgKQByACIIwCOgCMByACII0CNgKIByACII4CNgKEByACII8CNgKAByACIJACOgD8BiACIJECNgL4BiACIJICNgL0BiACIJMCNgLwBiACIJQCOgDsBiACIJUCNgLoBiACIJYCNgLkBiACIJcCNgLgBiACIJgCOgDcBiACIJkCNgLYBiACIJoCNgLUBiACIJsCNgLQBiACIJwCOgDMBiACIJ0CNgLIBiACIJ4CNgLEBiACIJ8CNgLABiACIKACOgC8BiACIKECNgK4BiACIKICNgK0BiACIKMCNgKwBiACIKQCOgCsBiACIKUCNgKoBiACIKYCNgKkBiACIKcCNgKgBiACIKgCOgCcBiACIKkCNgKYBiACIKoCNgKUBiACIKsCNgKQBiACIKwCOgCMBiACIK0CNgKIBiACIK4CNgKEBiACIK8CNgKABiACILACOgD8BSACILECNgL4BSACILICNgL0BSACILMCNgLwBSACILQCOgDsBSACILUCNgLoBSACILYCNgLkBSACILcCNgLgBSACILgCOgDcBSACILkCNgLYBSACILoCNgLUBSACILsCNgLQBSACILwCOgDMBSACIL0CNgLIBSACIL4CNgLEBSACIL8CNgLABSACIMACOgC8BSACIMECNgK4BSACIMICNgK0BSACIMMCNgKwBSACIMQCOgCsBSACIMUCNgKoBSACIMYCNgKkBSACIMcCNgKgBSACIMgCOgCcBSACIMkCNgKYBSACIMoCNgKUBSACIMsCNgKQBSACIMwCOgCMBSACIM0CNgKIBSACIM4CNgKEBSACIM8CNgKABSACINACOgD8BCACINECNgL4BCACINICNgL0BCACINMCNgLwBCACINQCOgDsBCACINUCNgLoBCACINYCNgLkBCACINcCNgLgBCACINgCOgDcBCACINkCNgLYBCACINoCNgLUBCACINsCNgLQBCACINwCOgDMBCACIN0CNgLIBCACIN4CNgLEBCACIN8CNgLABCACIOACOgC8BCACIOECNgK4BCACIOICNgK0BCACIOMCNgKwBCACIOQCOgCsBCACIOUCNgKoBCACIOYCNgKkBCACIOcCNgKgBCACIOgCOgCcBCACIOkCNgKYBCACIOoCNgKUBCACIOsCNgKQBCACIOwCOgCMBCACIO0CNgKIBCACIO4CNgKEBCACIO8CNgKABCACIPACOgD8AyACIPECNgL4AyACIPICNgL0AyACIPMCNgLwAyACIPQCOgDsAyACIPUCNgLoAyACIPYCNgLkAyACIPcCNgLgAyACIPgCOgDcAyACIPkCNgLYAyACIPoCNgLUAyACIPsCNgLQAyACIPwCOgDMAyACIP0CNgLIAyACIP4CNgLEAyACIP8CNgLAAyACIIADOgC8AyACIIEDNgK4AyACIIIDNgK0AyACIIMDNgKwAyACIIQDOgCsAyACIIUDNgKoAyACIIYDNgKkAyACIIcDNgKgAyACIIgDOgCcAyACIIkDNgKYAyACIIoDNgKUAyACIIsDNgKQAyACIIwDOgCMAyACII0DNgKIAyACII4DNgKEAyACII8DNgKAAyACIJADOgD8AiACIJEDNgL4AiACIJIDNgL0AiACIJMDNgLwAiACIJQDOgDsAiACIJUDNgLoAiACIJYDNgLkAiACIJcDNgLgAiACIJgDOgDcAiACIJkDNgLYAiACIJoDNgLUAiACIJsDNgLQAiACIJwDOgDMAiACIJ0DNgLIAiACIJ4DNgLEAiACIJ8DNgLAAiACIKADOgC8AiACIKEDNgK4AiACIKIDNgK0AiACIKMDNgKwAiACIKQDOgCsAiACIKUDNgKoAiACIKYDNgKkAiACIKcDNgKgAiACIKgDOgCcAiACIKkDNgKYAiACIKoDNgKUAiACIKsDNgKQAiACIKwDOgCMAiACIK0DNgKIAiACIK4DNgKEAiACIK8DNgKAAiACILADOgD8ASACILEDNgL4ASACILIDNgL0ASACILMDNgLwASACILQDOgDsASACILUDNgLoASACILYDNgLkASACILcDNgLgASACILgDOgDcASACILkDNgLYASACILoDNgLUASACILsDNgLQASACILwDOgDMASACIL0DNgLIASACIL4DNgLEASACIL8DNgLAASACIMADOgC8ASACIMEDNgK4ASACIMIDNgK0ASACIMMDNgKwASACIMQDOgCsASACIMUDNgKoASACIMYDNgKkASACIMcDNgKgASACIMgDOgCcASACIMkDNgKYASACIJ4BNgKUASACIJ8BNgKQASACIKABOgCMASACIGI2AogBIAIgYzYChAEgAiBkNgKAASACIGU6AHwgAiBmNgJ4IAIgZzYCdCACIJgBNgJwIAIgmQE6AGwgAiCaATYCaCACIFw2AmQgAiAHNgJgIAIgOToAXCACIEQ2AlggAiBPNgJUIAIgNzYCUCACIFA2AkAgAiAPNgIwIAIgIzYCICACQQE2AgQgAkEBNgIAIAJBrw1qIDBBEHY6AAAgAkGfDWogXUEQdjoAACACQY8NaiA1QRB2OgAAIAJB/wxqIGFBEHY6AAAgAkHvDGogIkEQ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IOkDNgKUDSABIOoDNgKQDSABIOsDOgCMDSABIOwDNgKIDSABIO0DNgKEDSABIO4DNgKADSABIO8DOgD8DCABIPADNgL4DCABIPEDNgL0DCABIPIDNgLwDCABIPMDOgDsDCABIPQDNgLoDCABIPUDNgLkDCABIPYDNgLgDCABIPcDOgDcDCABIPgDNgLYDCABIPkDNgLUDCABIPoDNgLQDCABIPsDOgDMDCABIPwDNgLIDCABIP0DNgLEDCABIP4DNgLADCABIP8DOgC8DCABIIAENgK4DCABIIEENgK0DCABIIIENgKwDCABIIMEOgCsDCABIIQENgKoDCABIIUENgKkDCABIIYENgKgDCABIIcEOgCcDCABIIgENgKYDCABIIkENgKUDCABIIoENgKQDCABIIsEOgCMDCABIIwENgKIDCABII0ENgKEDCABII4ENgKADCABII8EOgD8CyABIJAENgL4CyABIJEENgL0CyABIJIENgLwCyABIJMEOgDsCyABIJQENgLoCyABIJUENgLkCyABIJYENgLgCyABIJcEOgDcCyABIJgENgLYCyABIJkENgLUCyABIJoENgLQCyABIJsEOgDMCyABIJwENgLICyABIJ0ENgLECyABIJ4ENgLACyABIJ8EOgC8CyABIKAENgK4CyABIKEENgK0CyABIKIENgKwCyABIKMEOgCsCyABIKQENgKoCyABIKUENgKkCyABIKYENgKgCyABIKcEOgCcCyABIKgENgKYCyABIKkENgKUCyABIKoENgKQCyABIM4DOgCMCyABIKwENgKICyABIK0ENgKECyABIK4ENgKACyABIKQBOgD8CiABIKUBNgL4CiABIKYBNgL0CiABIKcBNgLwCiABIKgBOgDsCiABIKkBNgLoCiABIKoBNgLkCiABIKsBNgLgCiABIKwBOgDcCiABIK0BNgLYCiABIK4BNgLUCiABIK8BNgLQCiABILABOgDMCiABILEBNgLICiABILIBNgLECiABILMBNgLACiABILQBOgC8CiABILUBNgK4CiABILYBNgK0CiABILcBNgKwCiABILgBOgCsCiABILkBNgKoCiABILoBNgKkCiABILsBNgKgCiABILwBOgCcCiABIL0BNgKYCiABIL4BNgKUCiABIL8BNgKQCiABIMABOgCMCiABIMEBNgKICiABIMIBNgKECiABIMMBNgKACiABIMQBOgD8CSABIMUBNgL4CSABIMYBNgL0CSABIMcBNgLwCSABIMgBOgDsCSABIMkBNgLoCSABIMoBNgLkCSABIMsBNgLgCSABIMwBOgDcCSABIM0BNgLYCSABIM4BNgLUCSABIM8BNgLQCSABINABOgDMCSABINEBNgLICSABINIBNgLECSABINMBNgLACSABINQBOgC8CSABINUBNgK4CSABINYBNgK0CSABINcBNgKwCSABINgBOgCsCSABINkBNgKoCSABINoBNgKkCSABINsBNgKgCSABINwBOgCcCSABIN0BNgKYCSABIN4BNgKUCSABIN8BNgKQCSABIOABOgCMCSABIOEBNgKICSABIOIBNgKECSABIOMBNgKACSABIOQBOgD8CCABIOUBNgL4CCABIOYBNgL0CCABIOcBNgLwCCABIOgBOgDsCCABIOkBNgLoCCABIOoBNgLkCCABIOsBNgLgCCABIOwBOgDcCCABIO0BNgLYCCABIO4BNgLUCCABIO8BNgLQCCABIPABOgDMCCABIPEBNgLICCABIPIBNgLECCABIPMBNgLACCABIPQBOgC8CCABIPUBNgK4CCABIPYBNgK0CCABIPcBNgKwCCABIPgBOgCsCCABIPkBNgKoCCABIPoBNgKkCCABIPsBNgKgCCABIPwBOgCcCCABIP0BNgKYCCABIP4BNgKUCCABIP8BNgKQCCABIIACOgCMCCABIIECNgKICCABIIICNgKECCABIIMCNgKACCABIIQCOgD8ByABIIUCNgL4ByABIIYCNgL0ByABIIcCNgLwByABIIgCOgDsByABIIkCNgLoByABIIoCNgLkByABIIsCNgLgByABIIwCOgDcByABII0CNgLYByABII4CNgLUByABII8CNgLQByABIJACOgDMByABIJECNgLIByABIJICNgLEByABIJMCNgLAByABIJQCOgC8ByABIJUCNgK4ByABIJYCNgK0ByABIJcCNgKwByABIJgCOgCsByABIJkCNgKoByABIJoCNgKkByABIJsCNgKgByABIJwCOgCcByABIJ0CNgKYByABIJ4CNgKUByABIJ8CNgKQByABIKACOgCMByABIKECNgKIByABIKICNgKEByABIKMCNgKAByABIKQCOgD8BiABIKUCNgL4BiABIKYCNgL0BiABIKcCNgLwBiABIKgCOgDsBiABIKkCNgLoBiABIKoCNgLkBiABIKsCNgLgBiABIKwCOgDcBiABIK0CNgLYBiABIK4CNgLUBiABIK8CNgLQBiABILACOgDMBiABILECNgLIBiABILICNgLEBiABILMCNgLABiABILQCOgC8BiABILUCNgK4BiABILYCNgK0BiABILcCNgKwBiABILgCOgCsBiABILkCNgKoBiABILoCNgKkBiABILsCNgKgBiABILwCOgCcBiABIL0CNgKYBiABIL4CNgKUBiABIL8CNgKQBiABIMACOgCMBiABIMECNgKIBiABIMICNgKEBiABIMMCNgKABiABIMQCOgD8BSABIMUCNgL4BSABIMYCNgL0BSABIMcCNgLwBSABIMgCOgDsBSABIMkCNgLoBSABIMoCNgLkBSABIMsCNgLgBSABIMwCOgDcBSABIM0CNgLYBSABIM4CNgLUBSABIM8CNgLQBSABINACOgDMBSABINECNgLIBSABINICNgLEBSABINMCNgLABSABINQCOgC8BSABINUCNgK4BSABINYCNgK0BSABINcCNgKwBSABINgCOgCsBSABINkCNgKoBSABINoCNgKkBSABINsCNgKgBSABINwCOgCcBSABIN0CNgKYBSABIN4CNgKUBSABIN8CNgKQBSABIOACOgCMBSABIOECNgKIBSABIOICNgKEBSABIOMCNgKABSABIOQCOgD8BCABIOUCNgL4BCABIOYCNgL0BCABIOcCNgLwBCABIOgCOgDsBCABIOkCNgLoBCABIOoCNgLkBCABIOsCNgLgBCABIOwCOgDcBCABIO0CNgLYBCABIO4CNgLUBCABIO8CNgLQBCABIPACOgDMBCABIPECNgLIBCABIPICNgLEBCABIPMCNgLABCABIPQCOgC8BCABIPUCNgK4BCABIPYCNgK0BCABIPcCNgKwBCABIPgCOgCsBCABIPkCNgKoBCABIPoCNgKkBCABIPsCNgKgBCABIPwCOgCcBCABIP0CNgKYBCABIP4CNgKUBCABIP8CNgKQBCABIIADOgCMBCABIIEDNgKIBCABIIIDNgKEBCABIIMDNgKABCABIIQDOgD8AyABIIUDNgL4AyABIIYDNgL0AyABIIcDNgLwAyABIIgDOgDsAyABIIkDNgLoAyABIIoDNgLkAyABIIsDNgLgAyABIIwDOgDcAyABII0DNgLYAyABII4DNgLUAyABII8DNgLQAyABIJADOgDMAyABIJEDNgLIAyABIJIDNgLEAyABIJMDNgLAAyABIJQDOgC8AyABIJUDNgK4AyABIJYDNgK0AyABIJcDNgKwAyABIJgDOgCsAyABIJkDNgKoAyABIJoDNgKkAyABIJsDNgKgAyABIJwDOgCcAyABIJ0DNgKYAyABIJ4DNgKUAyABIJ8DNgKQAyABIKADOgCMAyABIKEDNgKIAyABIKIDNgKEAyABIKMDNgKAAyABIKQDOgD8AiABIKUDNgL4AiABIKYDNgL0AiABIKcDNgLwAiABIKgDOgDsAiABIKkDNgLoAiABIKoDNgLkAiABIKsDNgLgAiABIKwDOgDcAiABIK0DNgLYAiABIK4DNgLUAiABIK8DNgLQAiABILADOgDMAiABILEDNgLIAiABILIDNgLEAiABILMDNgLAAiABILQDOgC8AiABILUDNgK4AiABILYDNgK0AiABILcDNgKwAiABILgDOgCsAiABILkDNgKoAiABILoDNgKkAiABILsDNgKgAiABILwDOgCcAiABIL0DNgKYAiABIL4DNgKUAiABIL8DNgKQAiABIMADOgCMAiABIMEDNgKIAiABIMIDNgKEAiABIMMDNgKAAiABIMQDOgD8ASABIMUDNgL4ASABIMYDNgL0ASABIMcDNgLwASABIMgDOgDsASABIMkDNgLoASABIJ4BNgLkASABIJ8BNgLgASABIKABOgDcASABIGI2AtgBIAEgYzYC1AEgASBkNgLQASABIGU6AMwBIAEgZjYCyAEgASBnNgLEASABIJgBNgLAASABIJkBOgC8ASABIJoBNgK4ASABIFw2ArQBIAEgBzYCsAEgASA5OgCsASABIEQ2AqgBIAEgTzYCpAEgASA3NgKgASABIF86AJwBIAEgYDYCmAEgASA+NgKUASABIFA2ApABIAEgDzYCgAEgASAjNgJwIAEgyQU+AowBIAEgyAU+AnwgASDEBTcDaCABIJ0BNgKADiCdAS0ARCICQQJGIAJBAXFyRQRAIAEvAI0OIAFBjw5qLQAAQRB0ciEtIAEvAP0NIK8ELQAAQRB0ciEvIAEvAO0NILAELQAAQRB0ciEPIAEvAN0NILEELQAAQRB0ciEj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ai0AAEEQdHIhfiABLwD9CCABQf8Iai0AAEEQdHIhfSABLwDtCCABQe8Iai0AAEEQdHIhfCABLwDdCCABQd8Iai0AAEEQdHIheyABLwDNCCABQc8Iai0AAEEQdHIheiABLwC9CCABQb8Iai0AAEEQdHIheSABLwCtCCABQa8Iai0AAEEQdHIheCABLwCdCCABQZ8Iai0AAEEQdHIhdyABLwCNCCABQY8Iai0AAEEQdHIhdiABLwD9ByABQf8Hai0AAEEQdHIhdSABLwDtByABQe8Hai0AAEEQdHIhdCABLwDdByABQd8Hai0AAEEQdHIhcyABLwDNByABQc8Hai0AAEEQdHIhciABLwC9ByABQb8Hai0AAEEQdHIhcSABLwCtByABQa8Hai0AAEEQdHIhcCABLwCdByABQZ8Hai0AAEEQdHIhbyABLwCNByABQY8Hai0AAEEQdHIhbiABLwD9BiABQf8Gai0AAEEQdHIhbSABLwDtBiABQe8Gai0AAEEQdHIhbCABLwDdBiABQd8Gai0AAEEQdHIhayABLwDNBiABQc8Gai0AAEEQdHIhaiABLwC9BiABQb8Gai0AAEEQdHIhaSABLwCtBiABQa8Gai0AAEEQdHIhaCABLwCdBiABQZ8Gai0AAEEQdHIhXiABLwCNBiABQY8Gai0AAEEQdHIhESABLwD9BSABQf8Fai0AAEEQdHIhCiABLwDtBSABQe8Fai0AAEEQdHIhHiABLwDdBSABQd8Fai0AAEEQdHIhGCABLwDNBSABQc8Fai0AAEEQdHIhJyABLwC9BSABQb8Fai0AAEEQdHIhDiABLwCtBSABQa8Fai0AAEEQdHIhWyABLwCdBSABQZ8Fai0AAEEQdHIhWiABLwCNBSABQY8Fai0AAEEQdHIhTCABLwD9BCABQf8Eai0AAEEQdHIhSyABLwDtBCABQe8Eai0AAEEQdHIhSiABLwDdBCABQd8Eai0AAEEQdHIhSSABLwDNBCABQc8Eai0AAEEQdHIhSCABLwC9BCABQb8Eai0AAEEQdHIhTSABLwCtBCABQa8Eai0AAEEQdHIhWSABLwCdBCABQZ8Eai0AAEEQdHIhWCABLwCNBCABQY8Eai0AAEEQdHIhVyABLwD9AyABQf8Dai0AAEEQdHIhQiABLwDtAyABQe8Dai0AAEEQdHIhQSABLwDdAyABQd8Dai0AAEEQdHIhQCABLwDNAyABQc8Dai0AAEEQdHIhPyABLwC9AyABQb8Dai0AAEEQdHIhViABLwCtAyABQa8Dai0AAEEQdHIhVSABLwCdAyABQZ8Dai0AAEEQdHIhVCABLwCNAyABQY8Dai0AAEEQdHIhPSABLwD9AiABQf8Cai0AAEEQdHIhPCABLwDtAiABQe8Cai0AAEEQdHIhUyABLwDdAiABQd8Cai0AAEEQdHIhOiABLwDNAiABQc8Cai0AAEEQdHIhUiABLwC9AiABQb8Cai0AAEEQdHIhUSABLwCtAiABQa8Cai0AAEEQdHIhlwEgAS8AnQIgAUGfAmotAABBEHRyIZoBIAEvAI0CIAFBjwJqLQAAQRB0ciGZASABLwD9ASABQf8Bai0AAEEQdHIhmAEgAS8A7QEgAUHvAWotAABBEHRyIWcgAS8A3QEgAUHfAWotAABBEHRyIWYgAS8AzQEgAUHPAWotAABBEHRyIWUgAS8AvQEgAUG/AWotAABBEHRyIWQgAS8ArQEgAUGvAWotAABBEHRyIWMgAS8AnQEgAUGfAWotAABBEHRyIWIgAUGMAWo1AgAhxAUgAUH8AGo1AgAhxQVCACHDBSABKQKEASHHBSABKQJ0IckFQQAhoAEgASgCiA4hnwEgASgChA4hngEgASgCgA4hyQMgAS0A/A0hyAMgASgC+A0hxwMgASgC9A0hxgMgASgC8A0hxQMgAS0A7A0hxAMgASgC6A0hwwMgASgC5A0hwgMgASgC4A0hwQMgAS0A3A0hwAMgASgC2A0hvwMgASgC1A0hvgMgASgC0A0hvQMgAS0AzA0hvAMgASgCyA0huwMgASgCxA0hugMgASgCwA0huQMgAS0AvA0huAMgASgCuA0htwMgASgCtA0htgMgASgCsA0htQMgAS0ArA0htAMgASgCqA0hswMgASgCpA0hsgMgASgCoA0hsQMgAS0AnA0hsAMgASgCmA0hrwMgASgClA0hrgMgASgCkA0hrQMgAS0AjA0hrAMgASgCiA0hqwMgASgChA0hqgMgASgCgA0hqQMgAS0A/AwhqAMgASgC+AwhpwMgASgC9AwhpgMgASgC8AwhpQMgAS0A7AwhpAMgASgC6AwhowMgASgC5AwhogMgASgC4AwhoQMgAS0A3AwhoAMgASgC2AwhnwMgASgC1AwhngMgASgC0AwhnQMgAS0AzAwhnAMgASgCyAwhmwMgASgCxAwhmgMgASgCwAwhmQMgAS0AvAwhmAMgASgCuAwhlwMgASgCtAwhlgMgASgCsAwhlQMgAS0ArAwhlAMgASgCqAwhkwMgASgCpAwhkgMgASgCoAwhkQMgAS0AnAwhkAMgASgCmAwhjwMgASgClAwhjgMgASgCkAwhjQMgAS0AjAwhjAMgASgCiAwhiwMgASgChAwhigMgASgCgAwhiQMgAS0A/AshiAMgASgC+AshhwMgASgC9AshhgMgASgC8AshhQMgAS0A7AshhAMgASgC6AshgwMgASgC5AshggMgASgC4AshgQMgAS0A3AshgAMgASgC2Ash/wIgASgC1Ash/gIgASgC0Ash/QIgAS0AzAsh/AIgASgCyAsh+wIgASgCxAsh+gIgASgCwAsh+QIgAS0AvAsh+AIgASgCuAsh9wIgASgCtAsh9gIgASgCsAsh9QIgAS0ArAsh9AIgASgCqAsh8wIgASgCpAsh8gIgASgCoAsh8QIgAS0AnAsh8AIgASgCmAsh7wIgASgClAsh7gIgASgCkAsh7QIgAS0AjAsh7AIgASgCiAsh6wIgASgChAsh6gIgASgCgAsh6QIgAS0A/Aoh6AIgASgC+Aoh5wIgASgC9Aoh5gIgASgC8Aoh5QIgAS0A7Aoh5AIgASgC6Aoh4wIgASgC5Aoh4gIgASgC4Aoh4QIgAS0A3Aoh4AIgASgC2Aoh3wIgASgC1Aoh3gIgASgC0Aoh3QIgAS0AzAoh3AIgASgCyAoh2wIgASgCxAoh2gIgASgCwAoh2QIgAS0AvAoh2AIgASgCuAoh1wIgASgCtAoh1gIgASgCsAoh1QIgAS0ArAoh1AIgASgCqAoh0wIgASgCpAoh0gIgASgCoAoh0QIgAS0AnAoh0AIgASgCmAohzwIgASgClAohzgIgASgCkAohzQIgAS0AjAohzAIgASgCiAohywIgASgChAohygIgASgCgAohyQIgAS0A/AkhyAIgASgC+AkhxwIgASgC9AkhxgIgASgC8AkhxQIgAS0A7AkhxAIgASgC6AkhwwIgASgC5AkhwgIgASgC4AkhwQIgAS0A3AkhwAIgASgC2AkhvwIgASgC1AkhvgIgASgC0AkhvQIgAS0AzAkhvAIgASgCyAkhuwIgASgCxAkhugIgASgCwAkhuQIgAS0AvAkhuAIgASgCuAkhtwIgASgCtAkhtgIgASgCsAkhtQIgAS0ArAkhtAIgASgCqAkhswIgASgCpAkhsgIgASgCoAkhsQIgAS0AnAkhsAIgASgCmAkhrwIgASgClAkhrgIgASgCkAkhrQIgAS0AjAkhrAIgASgCiAkhqwIgASgChAkhqgIgASgCgAkhqQIgAS0A/AghqAIgASgC+AghpwIgASgC9AghpgIgASgC8AghpQIgAS0A7AghpAIgASgC6AghowIgASgC5AghogIgASgC4AghoQIgAS0A3AghoAIgASgC2AghnwIgASgC1AghngIgASgC0AghnQIgAS0AzAghnAIgASgCyAghmwIgASgCxAghmgIgASgCwAghmQIgAS0AvAghmAIgASgCuAghlwIgASgCtAghlgIgASgCsAghlQIgAS0ArAghlAIgASgCqAghkwIgASgCpAghkgIgASgCoAghkQIgAS0AnAghkAIgASgCmAghjwIgASgClAghjgIgASgCkAghjQIgAS0AjAghjAIgASgCiAghiwIgASgChAghigIgASgCgAghiQIgAS0A/AchiAIgASgC+AchhwIgASgC9AchhgIgASgC8AchhQIgAS0A7AchhAIgASgC6AchgwIgASgC5AchggIgASgC4AchgQIgAS0A3AchgAIgASgC2Ach/wEgASgC1Ach/gEgASgC0Ach/QEgAS0AzAch/AEgASgCyAch+wEgASgCxAch+gEgASgCwAch+QEgAS0AvAch+AEgASgCuAch9wEgASgCtAch9gEgASgCsAch9QEgAS0ArAch9AEgASgCqAch8wEgASgCpAch8gEgASgCoAch8QEgAS0AnAch8AEgASgCmAch7wEgASgClAch7gEgASgCkAch7QEgAS0AjAch7AEgASgCiAch6wEgASgChAch6gEgASgCgAch6QEgAS0A/AYh6AEgASgC+AYh5wEgASgC9AYh5gEgASgC8AYh5QEgAS0A7AYh5AEgASgC6AYh4wEgASgC5AYh4gEgASgC4AYh4QEgAS0A3AYh4AEgASgC2AYh3wEgASgC1AYh3gEgASgC0AYh3QEgAS0AzAYh3AEgASgCyAYh2wEgASgCxAYh2gEgASgCwAYh2QEgAS0AvAYh2AEgASgCuAYh1wEgASgCtAYh1gEgASgCsAYh1QEgAS0ArAYh1AEgASgCqAYh0wEgASgCpAYh0gEgASgCoAYh0QEgAS0AnAYh0AEgASgCmAYhzwEgASgClAYhzgEgASgCkAYhzQEgAS0AjAYhzAEgASgCiAYhywEgASgChAYhygEgASgCgAYhyQEgAS0A/AUhyAEgASgC+AUhxwEgASgC9AUhxgEgASgC8AUhxQEgAS0A7AUhxAEgASgC6AUhwwEgASgC5AUhwgEgASgC4AUhwQEgAS0A3AUhwAEgASgC2AUhvwEgASgC1AUhvgEgASgC0AUhvQEgAS0AzAUhvAEgASgCyAUhuwEgASgCxAUhugEgASgCwAUhuQEgAS0AvAUhuAEgASgCuAUhtwEgASgCtAUhtgEgASgCsAUhtQEgAS0ArAUhtAEgASgCqAUhswEgASgCpAUhsgEgASgCoAUhsQEgAS0AnAUhsAEgASgCmAUhrwEgASgClAUhrgEgASgCkAUhrQEgAS0AjAUhrAEgASgCiAUhqwEgASgChAUhqgEgASgCgAUhqQEgAS0A/AQhqAEgASgC+AQhpwEgASgC9AQhpgEgASgC8AQhpQEgAS0A7AQhpAEgASgC6AQhGiABKALkBCEDIAEoAuAEIQwgAS0A3AQhBCABKALYBCEyIAEoAtQEIUMgASgC0AQhJCABLQDMBCHKAyABKALIBCGiASABKALEBCHRBCABKALABCHNAyABLQC8BCGhASABKAK4BCGjASABKAK0BCHLAyABKAKwBCHMAyABLQCsBCHSBCABKAKoBCHTBCABKAKkBCHUBCABKAKgBCHVBCABLQCcBCHWBCABKAKYBCHXBCABKAKUBCHYBCABKAKQBCHZBCABLQCMBCHaBCABKAKIBCHbBCABKAKEBCHcBCABKAKABCHdBCABLQD8AyHeBCABKAL4AyHfBCABKAL0AyHgBCABKALwAyHhBCABLQDsAyHiBCABKALoAyHjBCABKALkAyHkBCABKALgAyHlBCABLQDcAyHmBCABKALYAyHnBCABKALUAyHoBCABKALQAyHpBCABLQDMAyHqBCABKALIAyHrBCABKALEAyHsBCABKALAAyHtBCABLQC8AyHuBCABKAK4AyHvBCABKAK0AyHwBCABKAKwAyHxBCABLQCsAyHyBCABKAKoAyHzBCABKAKkAyH0BCABKAKgAyH1BCABLQCcAyH2BCABKAKYAyH3BCABKAKUAyH4BCABKAKQAyH5BCABLQCMAyH6BCABKAKIAyH7BCABKAKEAyH8BCABKAKAAyH9BCABLQD8AiH+BCABKAL4AiH/BCABKAL0AiGABSABKALwAiGBBSABLQDsAiGCBSABKALoAiGDBSABKALkAiGEBSABKALgAiGFBSABLQDcAiGGBSABKALYAiGHBSABKALUAiGIBSABKALQAiGJBSABLQDMAiGKBSABKALIAiGLBSABKALEAiGMBSABKALAAiGNBSABLQC8AiGOBSABKAK4AiGPBSABKAK0AiGQBSABKAKwAiGRBSABLQCsAiGSBSABKAKoAiGTBSABKAKkAiGUBSABKAKgAiGVBSABLQCcAiGWBSABKAKYAiGXBSABKAKUAiGYBSABKAKQAiGZBSABLQCMAiGaBSABKAKIAiGbBSABKAKEAiGcBSABKAKAAiGdBSABLQD8ASGeBSABKAL4ASGfBSABKAL0ASGgBSABKALwASGhBSABLQDsASGiBSABKALoASGjBSABKALkASGkBSABKALgASGlBSABLQDcASGmBSABKALYASGnBSABKALUASGoBSABKALQASGpBSABLQDMASGqBSABKALIASGrBSABKALEASGsBSABKALAASGtBSABLQC8ASGuBSABKAK4ASGvBSABKAK0ASGwBSABKAKwASGxBSABLQCsASGyBSABKAKoASGzBSABKAKkASG0BSABKAKgASG1BSABLQCcASG2BSABKAKYASG3BSABKAKUASG4BSABKAKQASG5BSABKAKAASG6BSABKAJwIbsFQgIhyAUMDAsMBwsgAS0AjAsiAkECRyACQQFxcQ0GIAFBkA5qIZsBIwBBsAFrIgckAAJAAkACQCCcAUEBRgRAIAUoAgAhGgNAIBooAgAiAkEFRwRAAkACQCACQQVrDgIAAQYLAAsFIBooAgQhGgwBCwsgB0EoaiIDIBooAggiAiACIBooAgxBHGxqEOMLIAdBgAFqIgIgAxBNIAMgAikCADcCACACQQA2AgAgA0EQaiACQRBqKQIANwIAIANBCGogAkEIaikCADcCACACEN4aIAcoAihBBkYNASADEJoLDAILIJsBQQg2AgAMAgsgBygCLCICQYCAgIB4Rg0AIAcpAjAhwQUgByACNgIMIAcgwQU3AhACQAJAAkAgwQVCgICAgCBaBEAgwQVCIIinIQNBHCEGQQEhGgNAIAcoAhQiAiAaTQ0DIAdBgAFqIAcoAhAgBmoiBRC6CgJAIActAIwBQQJGDQAgB0EgaiAHQYgBaikCADcDACAHIAcpAoABNwMYIActACQNAyAHKAIYIgIgAigCACICQQFrNgIAIAJBAUcNACAHQRhqEMsOCyAGQRxqIQYgAyAaQQFqIhpHDQALCyCbAUEINgIAIAdBDGoiAhCsFyACEN4eDAQLIAdBgAFqIAIgGmsiBEEEQRwQggogBygChAEhDyAHKAKAAUEBRg0BIAdBFGoiAyAaNgIAIAcoAogBIQYgBEEcbCICBEAgBiAFIAL8CgAACyAHIAQ2AogBIAcgBjYChAEgByAPNgKAASAHQShqIgIgB0GAAWoiBRBNIAdBiAFqIgYgAygCADYCACAHIAcpAgw3A4ABIAdBxABqIAUQTSAHQfAAaiACELoKAkAgBy0AfEECRwRAIAYgB0H4AGoiAikCADcDACAHIAcpAnA3A4ABIActAIwBDQEgB0HoAGogB0EgaikDADcDACAHKQMYIcEFIAcoAoABIgIgAigCACICQQFrNgIAIAcgwQU3A2AgAkEBRgRAIAUQyw4LIAdBmAFqIAdB3ABqKAIANgIAIAdBkAFqIAdB1ABqKQIANwMAIAdBiAFqIAdBzABqKQIANwMAIAdBpAFqIAdB6ABqKQMANwIAIAcgBykCRDcDgAEgByAHKQNgNwKcASCbASAHQYABakEs/AoAACAHQShqENgaDAULIAdBmAFqIAdB3ABqKAIANgIAIAdBkAFqIAdB1ABqKQIANwMAIAdBiAFqIAdBzABqKQIANwMAIAdBpAFqIAdBIGopAwA3AgAgByAHKQJENwOAASAHIAcpAxg3ApwBIJsBIAdBgAFqQSz8CgAAIAdBKGoQ2BoMBAsgB0HoAGogAikCACLCBTcDACAHIAcpAnAiwQU3A2AgB0GYAWogB0HcAGooAgA2AgAgB0GQAWogB0HUAGopAgA3AwAgBiAHQcwAaikCADcDACAHQaQBaiDCBTcCACAHIAcpAkQ3A4ABIAcgwQU3ApwBIJsBIAdBgAFqQSz8CgAAIAdBKGoQ2BogBygCGCICIAIoAgAiAkEBazYCACACQQFHDQMgB0EYahDLDgwDCyAaIAJBzPXIABCMDgALIA8gBygCiAFB3PXIABC0GgALIJsBQQg2AgALIAdBsAFqJAAgASgCkA5BCEYNAyABQegQaiABQagOaigCADYCACABQeAQaiABQaAOaikCADcDACABQdgQaiABQZgOaikCADcDACABIAEpApAONwPQECABQbARaiABQbQOaikCADcDACABIAEpAqwONwOoESABKAKADiICLQBDIQ8gAigCFCEGIAIoAhAhBSACLQBBIQMgAi0AQCECIJsBEPUKIAFBATsAmw4gASADQQogAhs6AJkOIAFBAToAmA4gAUECOgCdDiABQYCAgAUgBiAFQQJGIgIbNgKUDiABQQEgBSACGzYCkA4gASAPIA9BAkZyQQFxOgCaDiABIAFB0BBqNgJUIAFB8BFqIgIgmwEgAUHUAGpBARCCAiCbARDzCSABKALwEUEqRwRAIJsBIAJBwAD8CgAAIAFBjAFqNQIAIcQFIAFB/ABqNQIAIcUFIAFBnwFqLQAAIAFBrwFqLQAAIWMgAUG/AWotAAAhZCABQc8Bai0AACFlIAFB3wFqLQAAIWYgAUHvAWotAAAhZyABQf8Bai0AACGcASABQY8Cai0AACGdASABQZ8Cai0AACHOAyABQa8Cai0AACHPAyABQb8Cai0AACHQAyABQc8Cai0AACHRAyABQd8Cai0AACHSAyABQe8Cai0AACHTAyABQf8Cai0AACHUAyABQY8Dai0AACHVAyABQZ8Dai0AACHWAyABQa8Dai0AACHXAyABQb8Dai0AACHYAyABQc8Dai0AACHZAyABQd8Dai0AACHaAyABQe8Dai0AACHbAyABQf8Dai0AACHcAyABQY8Eai0AACHdAyABQZ8Eai0AACHeAyABQa8Eai0AACHfAyABQb8Eai0AACHgAyABQc8Eai0AACHhAyABQd8Eai0AACHiAyABQe8Eai0AACHjAyABQf8Eai0AACHkAyABQY8Fai0AACHlAyABQZ8Fai0AACHmAyABQa8Fai0AACHnAyABQb8Fai0AACHoAyABQc8Fai0AACHpAyABQd8Fai0AACHqAyABQe8Fai0AACHrAyABQf8Fai0AACHsAyABQY8Gai0AACHtAyABQZ8Gai0AACHuAyABQa8Gai0AACHvAyABQb8Gai0AACHwAyABQc8Gai0AACHxAyABQd8Gai0AACHyAyABQe8Gai0AACHzAyABQf8Gai0AACH0AyABQY8Hai0AACH1AyABQZ8Hai0AACH2AyABQa8Hai0AACH3AyABQb8Hai0AACH4AyABQc8Hai0AACH5AyABQd8Hai0AACABQe8Hai0AACABQf8Hai0AACABQY8Iai0AACABQZ8Iai0AACABQa8Iai0AACABQb8Iai0AACABQc8Iai0AACABQd8Iai0AACABQe8Iai0AACABQf8Iai0AACABQY8Jai0AACABQZ8Jai0AACABQa8Jai0AACABQb8Jai0AACABQc8Jai0AACABQd8Jai0AACABQe8Jai0AACABQf8Jai0AACABQY8Kai0AACABQZ8Kai0AACABQa8Kai0AACABQb8Kai0AACABQc8Kai0AACABQd8Kai0AACABQe8Kai0AACABQf8Kai0AACABQY8Lai0AACABQZ8Lai0AACABQa8Lai0AACABQb8Lai0AACABQc8Lai0AACABQd8Lai0AACABQe8Lai0AACABQf8Lai0AACABQY8Mai0AACABQZ8Mai0AACABQa8Mai0AACABQb8Mai0AACABQc8Mai0AACABQd8Mai0AACABQe8Mai0AACABQf8Mai0AACABQY8Nai0AACABQZ8Nai0AACABQa8Nai0AACABQb8Nai0AACABQc8Nai0AACABQd8Nai0AACABQe8Nai0AACABQf8Nai0AACABQY8Oai0AACABKQKEASHHBSABKQJ0IckFIAEpA2ghwwUgASkDYCHIBSABLQCMDiGgASABKAKIDiGfASABKAKEDiGeASABKAKADiHJAyABLQD8DSHIAyABKAL4DSHHAyABKAL0DSHGAyABKALwDSHFAyABLQDsDSHEAyABKALoDSHDAyABKALkDSHCAyABKALgDSHBAyABLQDcDSHAAyABKALYDSG/AyABKALUDSG+AyABKALQDSG9AyABLQDMDSG8AyABKALIDSG7AyABKALEDSG6AyABKALADSG5AyABLQC8DSG4AyABKAK4DSG3AyABKAK0DSG2AyABKAKwDSG1AyABLQCsDSG0AyABKAKoDSGzAyABKAKkDSGyAyABKAKgDSGxAyABLQCcDSGwAyABKAKYDSGvAyABKAKUDSGuAyABKAKQDSGtAyABLQCMDSGsAyABKAKIDSGrAyABKAKEDSGqAyABKAKADSGpAyABLQD8DCGoAyABKAL4DCGnAyABKAL0DCGmAyABKALwDCGlAyABLQDsDCGkAyABKALoDCGjAyABKALkDCGiAyABKALgDCGhAyABLQDcDCGgAyABKALYDCGfAyABKALUDCGeAyABKALQDCGdAyABLQDMDCGcAyABKALIDCGbAyABKALEDCGaAyABKALADCGZAyABLQC8DCGYAyABKAK4DCGXAyABKAK0DCGWAyABKAKwDCGVAyABLQCsDCGUAyABKAKoDCGTAyABKAKkDCGSAyABKAKgDCGRAyABLQCcDCGQAyABKAKYDCGPAyABKAKUDCGOAyABKAKQDCGNAyABLQCMDCGMAyABKAKIDCGLAyABKAKEDCGKAyABKAKADCGJAyABLQD8CyGIAyABKAL4CyGHAyABKAL0CyGGAyABKALwCyGFAyABLQDsCyGEAyABKALoCyGDAyABKALkCyGCAyABKALgCyGBAyABLQDcCyGAAyABKALYCyH/AiABKALUCyH+AiABKALQCyH9AiABLQDMCyH8AiABKALICyH7AiABKALECyH6AiABKALACyH5AiABLQC8CyH4AiABKAK4CyH3AiABKAK0CyH2AiABKAKwCyH1AiABLQCsCyH0AiABKAKoCyHzAiABKAKkCyHyAiABKAKgCyHxAiABLQCcCyHwAiABKAKYCyHvAiABKAKUCyHuAiABKAKQCyHtAiABLQCMCyHsAiABKAKICyHrAiABKAKECyHqAiABKAKACyHpAiABLQD8CiHoAiABKAL4CiHnAiABKAL0CiHmAiABKALwCiHlAiABLQDsCiHkAiABKALoCiHjAiABKALkCiHiAiABKALgCiHhAiABLQDcCiHgAiABKALYCiHfAiABKALUCiHeAiABKALQCiHdAiABLQDMCiHcAiABKALICiHbAiABKALECiHaAiABKALACiHZAiABLQC8CiHYAiABKAK4CiHXAiABKAK0CiHWAiABKAKwCiHVAiABLQCsCiHUAiABKAKoCiHTAiABKAKkCiHSAiABKAKgCiHRAiABLQCcCiHQAiABKAKYCiHPAiABKAKUCiHOAiABKAKQCiHNAiABLQCMCiHMAiABKAKICiHLAiABKAKECiHKAiABKAKACiHJAiABLQD8CSHIAiABKAL4CSHHAiABKAL0CSHGAiABKALwCSHFAiABLQDsCSHEAiABKALoCSHDAiABKALkCSHCAiABKALgCSHBAiABLQDcCSHAAiABKALYCSG/AiABKALUCSG+AiABKALQCSG9AiABLQDMCSG8AiABKALICSG7AiABKALECSG6AiABKALACSG5AiABLQC8CSG4AiABKAK4CSG3AiABKAK0CSG2AiABKAKwCSG1AiABLQCsCSG0AiABKAKoCSGzAiABKAKkCSGyAiABKAKgCSGxAiABLQCcCSGwAiABKAKYCSGvAiABKAKUCSGuAiABKAKQCSGtAiABLQCMCSGsAiABKAKICSGrAiABKAKECSGqAiABKAKACSGpAiABLQD8CCGoAiABKAL4CCGnAiABKAL0CCGmAiABKALwCCGlAiABLQDsCCGkAiABKALoCCGjAiABKALkCCGiAiABKALgCCGhAiABLQDcCCGgAiABKALYCCGfAiABKALUCCGeAiABKALQCCGdAiABLQDMCCGcAiABKALICCGbAiABKALECCGaAiABKALACCGZAiABLQC8CCGYAiABKAK4CCGXAiABKAK0CCGWAiABKAKwCCGVAiABLQCsCCGUAiABKAKoCCGTAiABKAKkCCGSAiABKAKgCCGRAiABLQCcCCGQAiABKAKYCCGPAiABKAKUCCGOAiABKAKQCCGNAiABLQCMCCGMAiABKAKICCGLAiABKAKECCGKAiABKAKACCGJAiABLQD8ByGIAiABKAL4ByGHAiABKAL0ByGGAiABKALwByGFAiABLQDsByGEAiABKALoByGDAiABKALkByGCAiABKALgByGBAiABLQDcByGAAiABKALYByH/ASABKALUByH+ASABKALQByH9ASABLQDMByH8ASABKALIByH7ASABKALEByH6ASABKALAByH5ASABLQC8ByH4ASABKAK4ByH3ASABKAK0ByH2ASABKAKwByH1ASABLQCsByH0ASABKAKoByHzASABKAKkByHyASABKAKgByHxASABLQCcByHwASABKAKYByHvASABKAKUByHuASABKAKQByHtASABLQCMByHsASABKAKIByHrASABKAKEByHqASABKAKAByHpASABLQD8BiHoASABKAL4BiHnASABKAL0BiHmASABKALwBiHlASABLQDsBiHkASABKALoBiHjASABKALkBiHiASABKALgBiHhASABLQDcBiHgASABKALYBiHfASABKALUBiHeASABKALQBiHdASABLQDMBiHcASABKALIBiHbASABKALEBiHaASABKALABiHZASABLQC8BiHYASABKAK4BiHXASABKAK0BiHWASABKAKwBiHVASABLQCsBiHUASABKAKoBiHTASABKAKkBiHSASABKAKgBiHRASABLQCcBiHQASABKAKYBiHPASABKAKUBiHOASABKAKQBiHNASABLQCMBiHMASABKAKIBiHLASABKAKEBiHKASABKAKABiHJASABLQD8BSHIASABKAL4BSHHASABKAL0BSHGASABKALwBSHFASABLQDsBSHEASABKALoBSHDASABKALkBSHCASABKALgBSHBASABLQDcBSHAASABKALYBSG/ASABKALUBSG+ASABKALQBSG9ASABLQDMBSG8ASABKALIBSG7ASABKALEBSG6ASABKALABSG5ASABLQC8BSG4ASABKAK4BSG3ASABKAK0BSG2ASABKAKwBSG1ASABLQCsBSG0ASABKAKoBSGzASABKAKkBSGyASABKAKgBSGxASABLQCcBSGwASABKAKYBSGvASABKAKUBSGuASABKAKQBSGtASABLQCMBSGsASABKAKIBSGrASABKAKEBSGqASABKAKABSGpASABLQD8BCGoASABKAL4BCGnASABKAL0BCGmASABKALwBCGlASABLQDsBCGkASABKALoBCEaIAEoAuQEIQMgASgC4AQhDCABLQDcBCEEIAEoAtgEITIgASgC1AQhQyABKALQBCEkIAEtAMwEIcoDIAEoAsgEIaIBIAEoAsQEIdEEIAEoAsAEIc0DIAEtALwEIaEBIAEoArgEIaMBIAEoArQEIcsDIAEoArAEIcwDIAEtAKwEIdIEIAEoAqgEIdMEIAEoAqQEIdQEIAEoAqAEIdUEIAEtAJwEIdYEIAEoApgEIdcEIAEoApQEIdgEIAEoApAEIdkEIAEtAIwEIdoEIAEoAogEIdsEIAEoAoQEIdwEIAEoAoAEId0EIAEtAPwDId4EIAEoAvgDId8EIAEoAvQDIeAEIAEoAvADIeEEIAEtAOwDIeIEIAEoAugDIeMEIAEoAuQDIeQEIAEoAuADIeUEIAEtANwDIeYEIAEoAtgDIecEIAEoAtQDIegEIAEoAtADIekEIAEtAMwDIeoEIAEoAsgDIesEIAEoAsQDIewEIAEoAsADIe0EIAEtALwDIe4EIAEoArgDIe8EIAEoArQDIfAEIAEoArADIfEEIAEtAKwDIfIEIAEoAqgDIfMEIAEoAqQDIfQEIAEoAqADIfUEIAEtAJwDIfYEIAEoApgDIfcEIAEoApQDIfgEIAEoApADIfkEIAEtAIwDIfoEIAEoAogDIfsEIAEoAoQDIfwEIAEoAoADIf0EIAEtAPwCIf4EIAEoAvgCIf8EIAEoAvQCIYAFIAEoAvACIYEFIAEtAOwCIYIFIAEoAugCIYMFIAEoAuQCIYQFIAEoAuACIYUFIAEtANwCIYYFIAEoAtgCIYcFIAEoAtQCIYgFIAEoAtACIYkFIAEtAMwCIYoFIAEoAsgCIYsFIAEoAsQCIYwFIAEoAsACIY0FIAEtALwCIY4FIAEoArgCIY8FIAEoArQCIZAFIAEoArACIZEFIAEtAKwCIZIFIAEoAqgCIZMFIAEoAqQCIZQFIAEoAqACIZUFIAEtAJwCIZYFIAEoApgCIZcFIAEoApQCIZgFIAEoApACIZkFIAEtAIwCIZoFIAEoAogCIZsFIAEoAoQCIZwFIAEoAoACIZ0FIAEtAPwBIZ4FIAEoAvgBIZ8FIAEoAvQBIaAFIAEoAvABIaEFIAEtAOwBIaIFIAEoAugBIaMFIAEoAuQBIaQFIAEoAuABIaUFIAEtANwBIaYFIAEoAtgBIacFIAEoAtQBIagFIAEoAtABIakFIAEtAMwBIaoFIAEoAsgBIasFIAEoAsQBIawFIAEoAsABIa0FIAEtALwBIa4FIAEoArgBIa8FIAEoArQBIbAFIAEoArABIbEFIAEtAKwBIbIFIAEoAqgBIbMFIAEoAqQBIbQFIAEoAqABIbUFIAEtAJwBIbYFIAEoApgBIbcFIAEoApQBIbgFIAEoApABIbkFIAEoAoABIboFIAEoAnAhuwUgAS8AnQEhrQQgAS8ArQEhrgQgAS8AvQEhrwQgAS8AzQEhsAQgAS8A3QEhsQQgAS8A7QEhsgQgAS8A/QEhswQgAS8AjQIhtAQgAS8AnQIhtQQgAS8ArQIhtgQgAS8AvQIhtwQgAS8AzQIhuAQgAS8A3QIhuQQgAS8A7QIhugQgAS8A/QIhuwQgAS8AjQMhvAQgAS8AnQMhvQQgAS8ArQMhvgQgAS8AvQMhvwQgAS8AzQMhwAQgAS8A3QMhwQQgAS8A7QMhwgQgAS8A/QMhwwQgAS8AjQQhxAQgAS8AnQQhxQQgAS8ArQQhxgQgAS8AvQQhxwQgAS8AzQQhyAQgAS8A3QQhyQQgAS8A7QQhygQgAS8A/QQhywQgAS8AjQUhzAQgAS8AnQUhzQQgAS8ArQUhzgQgAS8AvQUhzwQgAS8AzQUh0AQgAS8A3QUhKyABLwDtBSE4IAEvAP0FITogAS8AjQYhPCABLwCdBiE9IAEvAK0GIT8gAS8AvQYhQCABLwDNBiFBIAEvAN0GIUIgAS8A7QYhSCABLwD9BiFJIAEvAI0HIUogAS8AnQchSyABLwCtByFMIAEvAL0HIU0gAS8AzQchUSABLwDdByFSIAEvAO0HIVMgAS8A/QchVCABLwCNCCFVIAEvAJ0IIVYgAS8ArQghVyABLwC9CCFYIAEvAM0IIVkgAS8A3QghWiABLwDtCCFbIAEvAP0IIQ4gAS8AjQkhESABLwCdCSEKIAEvAK0JIR4gAS8AvQkhGCABLwDNCSEnIAEvAN0JIRYgAS8A7QkhMSABLwD9CSEqIAEvAI0KIUYgAS8AnQohRyABLwCtCiEwIAEvAL0KIV0gAS8AzQohNSABLwDdCiFhIAEvAO0KISIgAS8A/QohHSABLwCNCyEXIAEvAJ0LIQ0gAS8ArQshFCABLwC9CyEZIAEvAM0LISEgAS8A3QshICABLwDtCyElIAEvAP0LIRUgAS8AjQwhGyABLwCdDCE2IAEvAK0MIS4gAS8AvQwhKCABLwDNDCEpIAEvAN0MITQgAS8A7QwhEiABLwD9DCEcIAEvAI0NIQggAS8AnQ0hECABLwCtDSETIAEvAL0NIQsgAS8AzQ0hCSABLwDdDSEHIAEvAO0NIQ8gAS8A/Q0hBSABLwCNDiEGAkACQAJAIJsBKAIAIgJBImtBACACQSNrQQdJGw4CAAECCyCbAUEEQRwgAkEiRhtqEModDAELIJsBQQhqEMQaCyABKAKoESICIAIoAgAiAkEBazYCACACQQFGBEAgAUGoEWoQyw4LQRB0IAZyIS1BEHQgBXIhL0EQdCAPciEPQRB0IAdyISNBEHQgCXIhBUEQdCALciEfQRB0IBNyIVxBEHQgEHIhOUEQdCAIciFEQRB0IBxyIU9BEHQgEnIhN0EQdCA0ciFfQRB0IClyIWBBEHQgKHIhPkEQdCAuciFQQRB0IDZyIQZBEHQgG3IhB0EQdCAVciGVAUEQdCAlciGUAUEQdCAgciGTAUEQdCAhciGSAUEQdCAZciGRAUEQdCAUciGQAUEQdCANciGPAUEQdCAXciGOAUEQdCAdciGNAUEQdCAiciGMAUEQdCBhciGLAUEQdCA1ciGKAUEQdCBdciGJAUEQdCAwciGIAUEQdCBHciGHAUEQdCBGciGGAUEQdCAqciGFAUEQdCAxciGEAUEQdCAWciGDAUEQdCAnciGCAUEQdCAYciGBAUEQdCAeciGAAUEQdCAKciF/QRB0IBFyIX5BEHQgDnIhfUEQdCBbciF8QRB0IFpyIXtBEHQgWXIhekEQdCBYciF5QRB0IFdyIXhBEHQgVnIhd0EQdCBVciF2QRB0IFRyIXVBEHQgU3IhdEEQdCBSciFzIFEg+QNBEHRyIXIgTSD4A0EQdHIhcSBMIPcDQRB0ciFwIEsg9gNBEHRyIW8gSiD1A0EQdHIhbiBJIPQDQRB0ciFtIEgg8wNBEHRyIWwgQiDyA0EQdHIhayBBIPEDQRB0ciFqIEAg8ANBEHRyIWkgPyDvA0EQdHIhaCA9IO4DQRB0ciFeIDwg7QNBEHRyIREgOiDsA0EQdHIhCiA4IOsDQRB0ciEeICsg6gNBEHRyIRgg0AQg6QNBEHRyIScgzwQg6ANBEHRyIQ4gzgQg5wNBEHRyIVsgzQQg5gNBEHRyIVogzAQg5QNBEHRyIUwgywQg5ANBEHRyIUsgygQg4wNBEHRyIUogyQQg4gNBEHRyIUkgyAQg4QNBEHRyIUggxwQg4ANBEHRyIU0gxgQg3wNBEHRyIVkgxQQg3gNBEHRyIVggxAQg3QNBEHRyIVcgwwQg3ANBEHRyIUIgwgQg2wNBEHRyIUEgwQQg2gNBEHRyIUAgwAQg2QNBEHRyIT8gvwQg2ANBEHRyIVYgvgQg1wNBEHRyIVUgvQQg1gNBEHRyIVQgvAQg1QNBEHRyIT0guwQg1ANBEHRyITwgugQg0wNBEHRyIVMguQQg0gNBEHRyIToguAQg0QNBEHRyIVIgtwQg0ANBEHRyIVEgtgQgzwNBEHRyIZcBILUEIM4DQRB0ciGaASC0BCCdAUEQdHIhmQEgswQgnAFBEHRyIZgBILIEIGdBEHRyIWcgsQQgZkEQdHIhZiCwBCBlQRB0ciFlIK8EIGRBEHRyIWQgrgQgY0EQdHIhY0EQdCCtBHIhYiABQdAQahDaCQwLCyABIAEoAvQRIpsBNgJUAn8gASgCgA4tAEUiAkECRiACQQFxckUEQCABQgA3A4gUIAFCAjcDgBRBACGgAUEAIZ8BQQAhngFBAgwBCyABQYAUaiEEIAFB1ABqIQVCACHDBSMAQdALayIHJAACQAJAAkAgAUGADmooAgAiBi0ARSICQQJGIAJBAXFyRQRAQgIhxAUMAQsgB0IANwPoBSAHQgA3A+AFIAdBAzoAnAYgB0GCBDsBvAYgB0EANgKgBiAHQYCEiBA2ArgGIAdBAjYCsAYgB0ECNgKoBiAHQQI6AAwgB0HABmoiDyAHQeAFaiAHEMQPIAdBADoAmQcgB0GABWoiAyAPQcAA/AoAACAHQoGAgICgATcD0AUgB0KBgICAMDcDyAUgBykDmAchwQUgByAGKAIMQYCAgAEgBigCCBs2AsQFIAdBATYCwAUgByDBBUL//4OAgIBAg0KAgARCgIAEQgAgBi0ASSICQQFxGyACQQJGG4RCgICACIQ3A9gFIAdB4ABqIgYQ9QogB0HcAGpBggQ7AQAgB0IANwMIIAdCADcDACAHQYKEiBA2AlggB0ECNgJQIAdBAjYCSCAHQQA2AkAgB0EDOgA8IAcgAxCWAyEDIAUoAgAiBSAFKAIAIgJBAWo2AgAgAkEASA0BIA8gAyAFEPUBIAdBMGoQ9xQgBhDzCSAHKQPIBiLDBSAHKQPABiLEBUIChYRQBEAgByAHQdAGakHAAPwKAAAgBygCAEEpSw0BIAcQmBAMAQsgByAHQdAGakGABfwKAAALIAQgwwU3AwggBCDEBTcDACAEQRBqIAdBgAX8CgAAIAdB0AtqJAAMAQsACyABLQCMFCGgASABKAKIFCGfASABKAKEFCGeASABKAKAFAshyQMgAUGYHmogAUGwEWopAwA3AwAgASABKQOoETcDkB4gAUGMAWo1AgAhxQUgAUGcAWo1AgAhxAUgAUGvAWotAAAhYiABQb8Bai0AACFjIAFBzwFqLQAAIWQgAUHfAWotAAAhZSABQe8Bai0AACFmIAFB/wFqLQAAIWcgAUGPAmotAAAhnAEgAUGfAmotAAAhnQEgAUGvAmotAAAhzgMgAUG/AmotAAAhzwMgAUHPAmotAAAh0AMgAUHfAmotAAAh0QMgAUHvAmotAAAh0gMgAUH/AmotAAAh0wMgAUGPA2otAAAh1AMgAUGfA2otAAAh1QMgAUGvA2otAAAh1gMgAUG/A2otAAAh1wMgAUHPA2otAAAh2AMgAUHfA2otAAAh2QMgAUHvA2otAAAh2gMgAUH/A2otAAAh2wMgAUGPBGotAAAh3AMgAUGfBGotAAAh3QMgAUGvBGotAAAh3gMgAUG/BGotAAAh3wMgAUHPBGotAAAh4AMgAUHfBGotAAAh4QMgAUHvBGotAAAh4gMgAUH/BGotAAAh4wMgAUGPBWotAAAh5AMgAUGfBWotAAAh5QMgAUGvBWotAAAh5gMgAUG/BWotAAAh5wMgAUHPBWotAAAh6AMgAUHfBWotAAAh6QMgAUHvBWotAAAh6gMgAUH/BWotAAAh6wMgAUGPBmotAAAh7AMgAUGfBmotAAAh7QMgAUGvBmotAAAh7gMgAUG/BmotAAAh7wMgAUHPBmotAAAh8AMgAUHfBmotAAAh8QMgAUHvBmotAAAh8gMgAUH/BmotAAAh8wMgAUGPB2otAAAh9AMgAUGfB2otAAAh9QMgAUGvB2otAAAh9gMgAUG/B2otAAAh9wMgAUHPB2otAAAh+AMgAUHfB2otAAAh+QMgAUHvB2otAAAh+gMgAUH/B2otAAAh+wMgAUGPCGotAAAh/AMgAUGfCGotAAAh/QMgAUGvCGotAAAh/gMgAUG/CGotAAAh/wMgAUHPCGotAAAhgAQgAUHfCGotAAAhgQQgAUHvCGotAAAhggQgAUH/CGotAAAhgwQgAUGPCWotAAAhhAQgAUGfCWotAAAhhQQgAUGvCWotAAAhhgQgAUG/CWotAAAhhwQgAUHPCWotAAAhiAQgAUHfCWotAAAhiQQgAUHvCWotAAAhigQgAUH/CWotAAAhiwQgAUGPCmotAAAhjAQgAUGfCmotAAAhjQQgAUGvCmotAAAhjgQgAUG/CmotAAAhjwQgAUHPCmotAAAhkAQgAUHfCmotAAAhkQQgAUHvCmotAAAhkgQgAUH/CmotAAAhkwQgAUGPC2otAAAhlAQgAUGfC2otAAAhlQQgAUGvC2otAAAhlgQgAUG/C2otAAAhlwQgAUHPC2otAAAhmAQgAUHfC2otAAAhmQQg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1gEgASgCyAYh1wEgAS0AzAYh2AEgASgC0AYh2QEgASgC1AYh2gEgASgC2AYh2wEgAS0A3AYh3AEgASgC4AYh3QEgASgC5AYh3gEgASgC6AYh3wEgAS0A7AYh4AEgASgC8AYh4QEgASgC9AYh4gEgASgC+AYh4wEgAS0A/AYh5AEgASgCgAch5QEgASgChAch5gEgASgCiAch5wEgAS0AjAch6AEgASgCkAch6QEgASgClAch6gEgASgCmAch6wEgAS0AnAch7AEgASgCoAch7QEgASgCpAch7gEgASgCqAch7wEgAS0ArAch8AEgASgCsAch8QEgASgCtAch8gEgASgCuAch8wEgAS0AvAch9AEgASgCwAch9QEgASgCxAch9gEgASgCyAch9wEgAS0AzAch+AEgASgC0Ach+QEgASgC1Ach+gEgASgC2Ach+wEgAS0A3Ach/AEgASgC4Ach/QEgASgC5Ach/gEgASgC6Ach/wEgAS0A7AchgAIgASgC8AchgQIgASgC9AchggIgASgC+AchgwIgAS0A/AchhAIgASgCgAghhQIgASgChAghhgIgASgCiAghhwIgAS0AjAghiAIgASgCkAghiQIgASgClAghigIgASgCmAghiwIgAS0AnAghjAIgASgCoAghjQIgASgCpAghjgIgASgCqAghjwIgAS0ArAghkAIgASgCsAghkQIgASgCtAghkgIgASgCuAghkwIgAS0AvAghlAIgASgCwAghlQIgASgCxAghlgIgASgCyAghlwIgAS0AzAghmAIgASgC0AghmQIgASgC1AghmgIgASgC2AghmwIgAS0A3AghnAIgASgC4AghnQIgASgC5AghngIgASgC6AghnwIgAS0A7AghoAIgASgC8AghoQIgASgC9AghogIgASgC+AghowIgAS0A/AghpAIgASgCgAkhpQIgASgChAkhpgIgASgCiAkhpwIgAS0AjAkhqAIgASgCkAkhqQIgASgClAkhqgIgASgCmAkhqwIgAS0AnAkhrAIgASgCoAkhrQIgASgCpAkhrgIgASgCqAkhrwIgAS0ArAkhsAIgASgCsAkhsQIgASgCtAkhsgIgASgCuAkhswIgAS0AvAkhtAIgASgCwAkhtQIgASgCxAkhtgIgASgCyAkhtwIgAS0AzAkhuAIgASgC0AkhuQIgASgC1AkhugIgASgC2AkhuwIgAS0A3AkhvAIgASgC4AkhvQIgASgC5AkhvgIgASgC6AkhvwIgAS0A7AkhwAIgASgC8AkhwQIgASgC9AkhwgIgASgC+AkhwwIgAS0A/AkhxAIgASgCgAohxQIgASgChAohxgIgASgCiAohxwIgAS0AjAohyAIgASgCkAohyQIgASgClAohygIgASgCmAohywIgAS0AnAohzAIgASgCoAohzQIgASgCpAohzgIgASgCqAohzwIgAS0ArAoh0AIgASgCsAoh0QIgASgCtAoh0gIgASgCuAoh0wIgAS0AvAoh1AIgASgCwAoh1QIgASgCxAoh1gIgASgCyAoh1wIgAS0AzAoh2AIgASgC0Aoh2QIgASgC1Aoh2gIgASgC2Aoh2wIgAS0A3Aoh3AIgASgC4Aoh3QIgASgC5Aoh3gIgASgC6Aoh3wIgAS0A7Aoh4AIgASgC8Aoh4QIgASgC9Aoh4gIgASgC+Aoh4wIgAS0A/Aoh5AIgASgCgAsh5QIgASgChAsh5gIgASgCiAsh5wIgAS0AjAsh6AIgASgCkAsh6QIgASgClAsh6gIgASgCmAsh6wIgAS0AnAsh7AIgASgCoAsh7QIgASgCpAsh7gIgASgCqAsh7wIgAS0ArAsh8AIgASgCsAsh8QIgASgCtAsh8gIgASgCuAsh8wIgAS0AvAsh9AIgASgCwAsh9QIgASgCxAsh9gIgASgCyAsh9wIgAS0AzAsh+AIgASgC0Ash+QIgASgC1Ash+gIgASgC2Ash+wIgAS0A3Ash/AIgASgC4Ash/QIgASgC5Ash/gIgASgC6Ash/wIgAS0A7AshgAMgASgC8AshgQMgASgC9AshggMgASgC+AshgwMgAS0A/AshhAMgASgCgAwhhQMgASgChAwhhgMgASgCiAwhhwMgAS0AjAwhiAMgASgCkAwhiQMgASgClAwhigMgASgCmAwhiwMgAS0AnAwhjAMgASgCoAwhjQMgASgCpAwhjgMgASgCqAwhjwMgAS0ArAwhkAMgASgCsAwhkQMgASgCtAwhkgMgASgCuAwhkwMgAS0AvAwhlAMgASgCwAwhlQMgASgCxAwhlgMgASgCyAwhlwMgAS0AzAwhmAMgASgC0AwhmQMgASgC1AwhmgMgASgC2AwhmwMgAS0A3AwhnAMgASgC4AwhnQMgASgC5Awh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ggM2AqQLIAIggQM2AqALIAIggAM6AJwLIAIg/wI2ApgLIAIg/gI2ApQLIAIg/QI2ApALIAIg/AI6AIwLIAIg+wI2AogLIAIg+gI2AoQLIAIg+QI2AoALIAIg+AI6APwKIAIg9wI2AvgKIAIg9gI2AvQKIAIg9QI2AvAKIAIg9AI6AOwKIAIg8wI2AugKIAIg8gI2AuQKIAIg8QI2AuAKIAIg8AI6ANwKIAIg7wI2AtgKIAIg7gI2AtQKIAIg7QI2AtAKIAIg7AI6AMwKIAIg6wI2AsgKIAIg6gI2AsQKIAIg6QI2AsAKIAIg6AI6ALwKIAIg5wI2ArgKIAIg5gI2ArQKIAIg5QI2ArAKIAIg5AI6AKwKIAIg4wI2AqgKIAIg4gI2AqQKIAIg4QI2AqAKIAIg4AI6AJwKIAIg3wI2ApgKIAIg3gI2ApQKIAIg3QI2ApAKIAIg3AI6AIwKIAIg2wI2AogKIAIg2gI2AoQKIAIg2QI2AoAKIAIg2AI6APwJIAIg1wI2AvgJIAIg1gI2AvQJIAIg1QI2AvAJIAIg1AI6AOwJIAIg0wI2AugJIAIg0gI2AuQJIAIg0QI2AuAJIAIg0AI6ANwJIAIgzwI2AtgJIAIgzgI2AtQJIAIgzQI2AtAJIAIgzAI6AMwJIAIgywI2AsgJIAIgygI2AsQJIAIgyQI2AsAJIAIgyAI6ALwJIAIgxwI2ArgJIAIgxgI2ArQJIAIgxQI2ArAJIAIgxAI6AKwJIAIgwwI2AqgJIAIgwgI2AqQJIAIgwQI2AqAJIAIgwAI6AJwJIAIgvwI2ApgJIAIgvgI2ApQJIAIgvQI2ApAJIAIgvAI6AIwJIAIguwI2AogJIAIgugI2AoQJIAIguQI2AoAJIAIguAI6APwIIAIgtwI2AvgIIAIgtgI2AvQIIAIgtQI2AvAIIAIgtAI6AOwIIAIgswI2AugIIAIgsgI2AuQIIAIgsQI2AuAIIAIgsAI6ANwIIAIgrwI2AtgIIAIgrgI2AtQIIAIgrQI2AtAIIAIgrAI6AMwIIAIgqwI2AsgIIAIgqgI2AsQIIAIgqQI2AsAIIAIgqAI6ALwIIAIgpwI2ArgIIAIgpgI2ArQIIAIgpQI2ArAIIAIgpAI6AKwIIAIgowI2AqgIIAIgogI2AqQIIAIgoQI2AqAIIAIgoAI6AJwIIAIgnwI2ApgIIAIg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lgQ2ApALIAIglwQ6AIwLIAIgmAQ2AogLIAIgmQQ2AoQLIAIgmgQ2AoALIAIgmwQ6APwKIAIgnAQ2AvgKIAIgnQQ2AvQKIAIgngQ2AvAKIAIgnwQ6AOwKIAIgoAQ2AugKIAIgoQQ2AuQKIAIgogQ2AuAKIAIgowQ6ANwKIAIgpAQ2AtgKIAIgpQQ2AtQKIAIgpgQ2AtAKIAIgpwQ6AMwKIAIgqAQ2AsgKIAIgqQQ2AsQKIAIgqgQ2AsAKIAIgzgM6ALwKIAIgrAQ2ArgKIAIgrQQ2ArQKIAIgrgQ2ArAKIAIgpAE6AKwKIAIgpQE2AqgKIAIgpgE2AqQKIAIgpwE2AqAKIAIgqAE6AJwKIAIgqQE2ApgKIAIgqgE2ApQKIAIgqwE2ApAKIAIgrAE6AIwKIAIgrQE2AogKIAIgrgE2AoQKIAIgrwE2AoAKIAIgsAE6APwJIAIgsQE2AvgJIAIgsgE2AvQJIAIgswE2AvAJIAIgtAE6AOwJIAIgtQE2AugJIAIgtgE2AuQJIAIgtwE2AuAJIAIguAE6ANwJIAIguQE2AtgJIAIgugE2AtQJIAIguwE2AtAJIAIgvAE6AMwJIAIgvQE2AsgJIAIgvgE2AsQJIAIgvwE2AsAJIAIgwAE6ALwJIAIgwQE2ArgJIAIgwgE2ArQJIAIgwwE2ArAJIAIgxAE6AKwJIAIgxQE2AqgJIAIgxgE2AqQJIAIgxwE2AqAJIAIgyAE6AJwJIAIgyQE2ApgJIAIgygE2ApQJIAIgywE2ApAJIAIgzAE6AIwJIAIgzQE2AogJIAIgzgE2AoQJIAIgzwE2AoAJIAIg0AE6APwIIAIg0QE2AvgIIAIg0gE2AvQIIAIg0wE2AvAIIAIg1AE6AOwIIAIg1QE2AugIIAIg1gE2AuQIIAIg1wE2AuAIIAIg2AE6ANwIIAIg2QE2AtgIIAIg2gE2AtQIIAIg2wE2AtAIIAIg3AE6AMwIIAIg3QE2AsgIIAIg3gE2AsQIIAIg3wE2AsAIIAIg4AE6ALwIIAIg4QE2ArgIIAIg4gE2ArQIIAIg4wE2ArAIIAIg5AE6AKwIIAIg5QE2AqgIIAIg5gE2AqQIIAIg5wE2AqAIIAIg6AE6AJwIIAIg6QE2ApgIIAIg6gE2ApQIIAIg6wE2ApAIIAIg7AE6AIwIIAIg7QE2AogIIAIg7gE2AoQIIAIg7wE2AoAIIAIg8AE6APwHIAIg8QE2AvgHIAIg8gE2AvQHIAIg8wE2AvAHIAIg9AE6AOwHIAIg9QE2AugHIAIg9gE2AuQHIAIg9wE2AuAHIAIg+AE6ANwHIAIg+QE2AtgHIAIg+gE2AtQHIAIg+wE2AtAHIAIg/AE6AMwHIAIg/QE2AsgHIAIg/gE2AsQHIAIg/wE2AsAHIAIggAI6ALwHIAIggQI2ArgHIAIgggI2ArQHIAIggwI2ArAHIAIghAI6AKwHIAIghQI2AqgHIAIghgI2AqQHIAIghwI2AqAHIAIgiAI6AJwHIAIgiQI2ApgHIAIgigI2ApQHIAIgiwI2ApAHIAIgjAI6AIwHIAIgjQI2AogHIAIgjgI2AoQHIAIgjwI2AoAHIAIgkAI6APwGIAIgkQI2AvgGIAIgkgI2AvQGIAIgkwI2AvAGIAIglAI6AOwGIAIglQI2AugGIAIglgI2AuQGIAIglwI2AuAGIAIgmAI6ANwGIAIgmQI2AtgGIAIgmgI2AtQGIAIgmwI2AtAGIAIgnAI6AMwGIAIgnQI2AsgGIAIgngI2AsQGIAIgnwI2AsAGIAIgoAI6ALwGIAIgoQI2ArgGIAIgogI2ArQGIAIgowI2ArAGIAIgpAI6AKwGIAIgpQI2AqgGIAIgpgI2AqQGIAIgpwI2AqAGIAIgqAI6AJwGIAIgqQI2ApgGIAIgqgI2ApQGIAIgqwI2ApAGIAIgrAI6AIwGIAIgrQI2AogGIAIgrgI2AoQGIAIgrwI2AoAGIAIgsAI6APwFIAIgsQI2AvgFIAIgsgI2AvQFIAIgswI2AvAFIAIgtAI6AOwFIAIgtQI2AugFIAIgtgI2AuQFIAIgtwI2AuAFIAIguAI6ANwFIAIguQI2AtgFIAIgugI2AtQFIAIguwI2AtAFIAIgvAI6AMwFIAIgvQI2AsgFIAIgvgI2AsQFIAIgvwI2AsAFIAIgwAI6ALwFIAIgwQI2ArgFIAIgwgI2ArQFIAIgwwI2ArAFIAIgxAI6AKwFIAIgxQI2AqgFIAIgxgI2AqQFIAIgxwI2AqAFIAIgyAI6AJwFIAIgyQI2ApgFIAIgygI2ApQFIAIgywI2ApAFIAIgzAI6AIwFIAIgzQI2AogFIAIgzgI2AoQFIAIgzwI2AoAFIAIg0AI6APwEIAIg0QI2AvgEIAIg0gI2AvQEIAIg0wI2AvAEIAIg1AI6AOwEIAIg1QI2AugEIAIg1gI2AuQEIAIg1wI2AuAEIAIg2AI6ANwEIAIg2QI2AtgEIAIg2gI2AtQEIAIg2wI2AtAEIAIg3AI6AMwEIAIg3QI2AsgEIAIg3gI2AsQEIAIg3wI2AsAEIAIg4AI6ALwEIAIg4QI2ArgEIAIg4gI2ArQEIAIg4wI2ArAEIAIg5AI6AKwEIAIg5QI2AqgEIAIg5gI2AqQEIAIg5wI2AqAEIAIg6AI6AJwEIAIg6QI2ApgEIAIg6gI2ApQEIAIg6wI2ApAEIAIg7AI6AIwEIAIg7QI2AogEIAIg7gI2AoQEIAIg7wI2AoAEIAIg8AI6APwDIAIg8QI2AvgDIAIg8gI2AvQDIAIg8wI2AvADIAIg9AI6AOwDIAIg9QI2AugDIAIg9gI2AuQDIAIg9wI2AuADIAIg+AI6ANwDIAIg+QI2AtgDIAIg+gI2AtQDIAIg+wI2AtADIAIg/AI6AMwDIAIg/QI2AsgDIAIg/gI2AsQDIAIg/wI2AsADIAIggAM6ALwDIAIggQM2ArgDIAIgggM2ArQDIAIggwM2ArADIAIghAM6AKwDIAIghQM2AqgDIAIghgM2AqQDIAIghwM2AqADIAIgiAM6AJwDIAIgiQM2ApgDIAIgigM2ApQDIAIgiwM2ApADIAIgjAM6AIwDIAIgjQM2AogDIAIgjgM2AoQDIAIgjwM2AoADIAIgkAM6APwCIAIgkQM2AvgCIAIgkgM2AvQCIAIgkwM2AvACIAIglAM6AOwCIAIglQM2AugCIAIglgM2AuQCIAIglwM2AuACIAIgmAM6ANwCIAIgmQM2AtgCIAIgmgM2AtQCIAIgmwM2AtACIAIgnAM6AMwCIAIgnQM2AsgCIAIgngM2AsQCIAIgnwM2AsACIAIgoAM6ALwCIAIgoQM2ArgCIAIgogM2ArQCIAIgowM2ArACIAIgpAM6AKwCIAIgpQM2AqgCIAIgpgM2AqQCIAIgpwM2AqACIAIgqAM6AJwCIAIgqQM2ApgCIAIgqgM2ApQCIAIgqwM2ApACIAIgrAM6AIwCIAIgrQM2AogCIAIgrgM2AoQCIAIgrwM2AoACIAIgsAM6APwBIAIgsQM2AvgBIAIgsgM2AvQBIAIgswM2AvABIAIgtAM6AOwBIAIgtQM2AugBIAIgtgM2AuQBIAIgtwM2AuABIAIguAM6ANwBIAIguQM2AtgBIAIgugM2AtQBIAIguwM2AtABIAIgvAM6AMwBIAIgvQM2AsgBIAIgvgM2AsQBIAIgvwM2AsABIAIgwAM6ALwBIAIgwQM2ArgBIAIgwgM2ArQBIAIgwwM2ArABIAIgxAM6AKwBIAIgxQM2AqgBIAIgxgM2AqQBIAIgxwM2AqABIAIgyAM6AJwBIAIgyQM2ApgBIAIgngE2ApQBIAIgnwE2ApABIAIgoAE6AIwBIAIgYjYCiAEgAiBjNgKEASACIGQ2AoABIAIgZToAfCACIGY2AnggAiBnNgJ0IAIgmAE2AnAgAiCZAToAbCACIJoBNgJoIAIgXDYCZCACIAc2AmAgAiA5OgBcIAIgRDYCWCACIE82AlQgAiA3NgJQIAIgUDYCQCACIA82AjAgAkEBNgIEIAJBATYCACACQc8NaiADQRB2OgAAIAJBrw1qIDBBEHY6AAAgAkGfDWogXUEQdjoAACACQY8NaiA1QRB2OgAAIAJB/wxqIGFBEHY6AAAgAkHvDGogIkEQdjoAACACQd8MaiAdQRB2OgAAIAJBzwxqIBdBEHY6AAAgAkG/DGogDUEQdjoAACACQa8MaiAUQRB2OgAAIAJBnwxqIBlBEHY6AAAgAkGPDGogIUEQdjoAACACQf8LaiAgQRB2OgAAIAJB7wtqICVBEHY6AAAgAkHfC2ogFUEQdjoAACACQc8LaiAbQRB2OgAAIAJBvwtqIDZBEHY6AAAgAkGvC2ogLkEQdjoAACACQZ8LaiAoQRB2OgAAIAJBjwtqIClBEHY6AAAgAkH/CmogNEEQdjoAACACQe8KaiASQRB2OgAAIAJB3wpqIEZBEHY6AAAgAkHPCmogR0EQdjoAACACQb8KaiAcQRB2OgAAIAJBrwpqIFFBEHY6AAAgAkGfCmogUkEQdjoAACACQY8KaiA6QRB2OgAAIAJB/wlqIFNBEHY6AAAgAkHvCWogPEEQdjoAACACQd8JaiA9QRB2OgAAIAJBzwlqIFRBEHY6AAAgAkG/CWogVUEQdjoAACACQa8JaiBWQRB2OgAAIAJBnwlqID9BEHY6AAAgAkGPCWogQEEQdjoAACACQf8IaiBBQRB2OgAAIAJB7whqIEJBEHY6AAAgAkHfCGogV0EQdjoAACACQc8IaiBYQRB2OgAAIAJBvwhqIFlBEHY6AAAgAkGvCGogTUEQdjoAACACQZ8IaiBIQRB2OgAAIAJBjwhqIElBEHY6AAAgAkH/B2ogSkEQdjoAACACQe8HaiBLQRB2OgAAIAJB3wdqIExBEHY6AAAgAkHPB2ogWkEQdjoAACACQb8HaiBbQRB2OgAAIAJBrwdqIA5BEHY6AAAgAkGfB2ogJ0EQdjoAACACQY8HaiAYQRB2OgAAIAJB/wZqIB5BEHY6AAAgAkHvBmogCkEQdjoAACACQd8GaiARQRB2OgAAIAJBzwZqIF5BEHY6AAAgAkG/BmogaEEQdjoAACACQa8GaiBpQRB2OgAAIAJBnwZqIGpBEHY6AAAgAkGPBmoga0EQdjoAACACQf8FaiBsQRB2OgAAIAJB7wVqIG1BEHY6AAAgAkHfBWogbkEQdjoAACACQc8FaiBvQRB2OgAAIAJBvwVqIHBBEHY6AAAgAkGvBWogcUEQdjoAACACQZ8FaiByQRB2OgAAIAJBjwVqIHNBEHY6AAAgAkH/BGogdEEQdjoAACACQe8EaiB1QRB2OgAAIAJB3wRqIHZBEHY6AAAgAkHPBGogd0EQdjoAACACQb8EaiB4QRB2OgAAIAJBrwRqIHlBEHY6AAAgAkGfBGogekEQdjoAACACQY8EaiB7QRB2OgAAIAJB/wNqIHxBEHY6AAAgAkHvA2ogfUEQdjoAACACQd8DaiB+QRB2OgAAIAJBzwNqIH9BEHY6AAAgAkG/A2oggAFBEHY6AAAgAkGvA2oggQFBEHY6AAAgAkGfA2ogggFBEHY6AAAgAkGPA2oggwFBEHY6AAAgAkH/AmoghAFBEHY6AAAgAkHvAmoghQFBEHY6AAAgAkHfAmoghgFBEHY6AAAgAkHPAmoghwFBEHY6AAAgAkG/AmogiAFBEHY6AAAgAkGvAmogiQFBEHY6AAAgAkGfAmogigFBEHY6AAAgAkGPAmogiwFBEHY6AAAgAkH/AWogjAFBEHY6AAAgAkHvAWogjQFBEHY6AAAgAkHfAWogjgFBEHY6AAAgAkHPAWogjwFBEHY6AAAgAkG/AWogkAFBEHY6AAAgAkGvAWogkQFBEHY6AAAgAkGfAWogkgFBEHY6AAAgAkGPAWogkwFBEHY6AAAgAkH/AGoglAFBEHY6AAAgAkHvAGoglQFBEHY6AAAgAkHfAGogLUEQdjoAACACIMkFPgI8IAIgxAU3AxggAiAjrSDDBUIghoQ3AyBBCCEtIAIgL0EIdK0gX61C/wGDhD4CTCACID6tIGCtQiCGhDcCRCACIMgFQiCGIMMFQiCIhDcDKEECISNBnIvKACFcDAYLIAMgC0HAhcoAEKUdAAsgAS8AjQ4gAUGPDmotAABBEHRyIS0gAS8A/Q0gAUH/DWotAABBEHRyIS8gAS8A7Q0gAUHvDWotAABBEHRyIQ8gAS8A3Q0gAUHfDWotAABBEHRyISMgAS8AzQ0gAUHPDWotAABBEHRyIQUgAS8AvQ0gAUG/DWotAABBEHRyIR8gAS8ArQ0gAUGvDWotAABBEHRyIVwgAS8AnQ0gAUGfDWotAABBEHRyITkgAS8AjQ0gAUGPDWotAABBEHRyIUQgAS8A/QwgAUH/DGotAABBEHRyIU8gAS8A7QwgAUHvDGotAABBEHRyITcgAS8A3QwgAUHfDGotAABBEHRyIV8gAS8AzQwgAUHPDGotAABBEHRyIWAgAS8AvQwgAUG/DGotAABBEHRyIT4gAS8ArQwgAUGvDGotAABBEHRyIVAgAS8AnQwgAUGfDGotAABBEHRyIQYgAS8AjQwgAUGPDGotAABBEHRyIQcgAS8A/QsgAUH/C2otAABBEHRyIZUBIAEvAO0LIAFB7wtqLQAAQRB0ciGUASABLwDdCyABQd8Lai0AAEEQdHIhkwEgAS8AzQsgAUHPC2otAABBEHRyIZIBIAEvAL0LIAFBvwtqLQAAQRB0ciGRASABLwCtCyABQa8Lai0AAEEQdHIhkAEgAS8AnQsgAUGfC2otAABBEHRyIY8BIAEvAI0LIAFBjwtqLQAAQRB0ciGOASABLwD9CiABQf8Kai0AAEEQdHIhjQEgAS8A7QogAUHvCmotAABBEHRyIYwBIAEvAN0KIAFB3wpqLQAAQRB0ciGLASABLwDNCiABQc8Kai0AAEEQdHIhigEgAS8AvQogAUG/CmotAABBEHRyIYkBIAEvAK0KIAFBrwpqLQAAQRB0ciGIASABLwCdCiABQZ8Kai0AAEEQdHIhhwEgAS8AjQogAUGPCmotAABBEHRyIYYBIAEvAP0JIAFB/wlqLQAAQRB0ciGFASABLwDtCSABQe8Jai0AAEEQdHIhhAEgAS8A3QkgAUHfCWotAABBEHRyIYMBIAEvAM0JIAFBzwlqLQAAQRB0ciGCASABLwC9CSABQb8Jai0AAEEQdHIhgQEgAS8ArQkgAUGvCWotAABBEHRyIYABIAEvAJ0JIAFBnwlqLQAAQRB0ciF/IAEvAI0JIAFBjwlqLQAAQRB0ciF+IAEvAP0IIAFB/whqLQAAQRB0ciF9IAEvAO0IIAFB7whqLQAAQRB0ciF8IAEvAN0IIAFB3whqLQAAQRB0ciF7IAEvAM0IIAFBzwhqLQAAQRB0ciF6IAEvAL0IIAFBvwhqLQAAQRB0ciF5IAEvAK0IIAFBrwhqLQAAQRB0ciF4IAEvAJ0IIAFBnwhqLQAAQRB0ciF3IAEvAI0IIAFBjwhqLQAAQRB0ciF2IAEvAP0HIAFB/wdqLQAAQRB0ciF1IAEvAO0HIAFB7wdqLQAAQRB0ciF0IAEvAN0HIAFB3wdqLQAAQRB0ciFzIAEvAM0HIAFBzwdqLQAAQRB0ciFyIAEvAL0HIAFBvwdqLQAAQRB0ciFxIAEvAK0HIAFBrwdqLQAAQRB0ciFwIAEvAJ0HIAFBnwdqLQAAQRB0ciFvIAEvAI0HIAFBjwdqLQAAQRB0ciFuIAEvAP0GIAFB/wZqLQAAQRB0ciFtIAEvAO0GIAFB7wZqLQAAQRB0ciFsIAEvAN0GIAFB3wZqLQAAQRB0ciFrIAEvAM0GIAFBzwZqLQAAQRB0ciFqIAEvAL0GIAFBvwZqLQAAQRB0ciFpIAEvAK0GIAFBrwZqLQAAQRB0ciFoIAEvAJ0GIAFBnwZqLQAAQRB0ciFeIAEvAI0GIAFBjwZqLQAAQRB0ciERIAEvAP0FIAFB/wVqLQAAQRB0ciEKIAEvAO0FIAFB7wVqLQAAQRB0ciEeIAEvAN0FIAFB3wVqLQAAQRB0ciEYIAEvAM0FIAFBzwVqLQAAQRB0ciEnIAEvAL0FIAFBvwVqLQAAQRB0ciEOIAEvAK0FIAFBrwVqLQAAQRB0ciFbIAEvAJ0FIAFBnwVqLQAAQRB0ciFaIAEvAI0FIAFBjwVqLQAAQRB0ciFMIAEvAP0EIAFB/wRqLQAAQRB0ciFLIAEvAO0EIAFB7wRqLQAAQRB0ciFKIAEvAN0EIAFB3wRqLQAAQRB0ciFJIAEvAM0EIAFBzwRqLQAAQRB0ciFIIAEvAL0EIAFBvwRqLQAAQRB0ciFNIAEvAK0EIAFBrwRqLQAAQRB0ciFZIAEvAJ0EIAFBnwRqLQAAQRB0ciFYIAEvAI0EIAFBjwRqLQAAQRB0ciFXIAEvAP0DIAFB/wNqLQAAQRB0ciFCIAEvAO0DIAFB7wNqLQAAQRB0ciFBIAEvAN0DIAFB3wNqLQAAQRB0ciFAIAEvAM0DIAFBzwNqLQAAQRB0ciE/IAEvAL0DIAFBvwNqLQAAQRB0ciFWIAEvAK0DIAFBrwNqLQAAQRB0ciFVIAEvAJ0DIAFBnwNqLQAAQRB0ciFUIAEvAI0DIAFBjwNqLQAAQRB0ciE9IAEvAP0CIAFB/wJqLQAAQRB0ciE8IAEvAO0CIAFB7wJqLQAAQRB0ciFTIAEvAN0CIAFB3wJqLQAAQRB0ciE6IAEvAM0CIAFBzwJqLQAAQRB0ciFSIAEvAL0CIAFBvwJqLQAAQRB0ciFRIAEvAK0CIAFBrwJqLQAAQRB0ciGXASABLwCdAiABQZ8Cai0AAEEQdHIhmgEgAS8AjQIgAUGPAmotAABBEHRyIZkBIAEvAP0BIAFB/wFqLQAAQRB0ciGYASABLwDtASABQe8Bai0AAEEQdHIhZyABLwDdASABQd8Bai0AAEEQdHIhZiABLwDNASABQc8Bai0AAEEQdHIhZSABLwC9ASABQb8Bai0AAEEQdHIhZCABLwCtASABQa8Bai0AAEEQdHIhYyABLwCdASABQZ8Bai0AAEEQdHIhYgwFCyABLwCNDiABQY8Oai0AAEEQdHIhLSABLwD9DSABQf8Nai0AAEEQdHIhLyABLwDtDSABQe8Nai0AAEEQdHIhDyABLwDdDSABQd8Nai0AAEEQdHIhIyABLwDNDSABQc8Nai0AAEEQdHIhBSABLwC9DSABQb8Nai0AAEEQdHIhHyABLwCtDSABQa8Nai0AAEEQdHIhXCABLwCdDSABQZ8Nai0AAEEQdHIhOSABLwCNDSABQY8Nai0AAEEQdHIhRCABLwD9DCABQf8Mai0AAEEQdHIhTyABLwDtDCABQe8Mai0AAEEQdHIhNyABLwDdDCABQd8Mai0AAEEQdHIhXyABLwDNDCABQc8Mai0AAEEQdHIhYCABLwC9DCABQb8Mai0AAEEQdHIhPiABLwCtDCABQa8Mai0AAEEQdHIhUCABLwCdDCABQZ8Mai0AAEEQdHIhBiABLwCNDCABQY8Mai0AAEEQdHIhByABLwD9CyABQf8Lai0AAEEQdHIhlQEgAS8A7QsgAUHvC2otAABBEHRyIZQBIAEvAN0LIAFB3wtqLQAAQRB0ciGTASABLwDNCyABQc8Lai0AAEEQdHIhkgEgAS8AvQsgAUG/C2otAABBEHRyIZEBIAEvAK0LIAFBrwtqLQAAQRB0ciGQASABLwCdCyABQZ8Lai0AAEEQdHIhjwEgAS8AjQsgAUGPC2otAABBEHRyIY4BIAEvAP0KIAFB/wpqLQAAQRB0ciGNASABLwDtCiABQe8Kai0AAEEQdHIhjAEgAS8A3QogAUHfCmotAABBEHRyIYsBIAEvAM0KIAFBzwpqLQAAQRB0ciGKASABLwC9CiABQb8Kai0AAEEQdHIhiQEgAS8ArQogAUGvCmotAABBEHRyIYgBIAEvAJ0KIAFBnwpqLQAAQRB0ciGHASABLwCNCiABQY8Kai0AAEEQdHIhhgEgAS8A/QkgAUH/CWotAABBEHRyIYUBIAEvAO0JIAFB7wlqLQAAQRB0ciGEASABLwDdCSABQd8Jai0AAEEQdHIhgwEgAS8AzQkgAUHPCWotAABBEHRyIYIBIAEvAL0JIAFBvwlqLQAAQRB0ciGBASABLwCtCSABQa8Jai0AAEEQdHIhgAEgAS8AnQkgAUGfCWotAABBEHRyIX8gAS8AjQkgAUGPCWotAABBEHRyIX4gAS8A/QggAUH/CGotAABBEHRyIX0gAS8A7QggAUHvCGotAABBEHRyIXwgAS8A3QggAUHfCGotAABBEHRyIXsgAS8AzQggAUHPCGotAABBEHRyIXogAS8AvQggAUG/CGotAABBEHRyIXkgAS8ArQggAUGvCGotAABBEHRyIXggAS8AnQggAUGfCGotAABBEHRyIXcgAS8AjQggAUGPCGotAABBEHRyIXYgAS8A/QcgAUH/B2otAABBEHRyIXUgAS8A7QcgAUHvB2otAABBEHRyIXQgAS8A3QcgAUHfB2otAABBEHRyIXMgAS8AzQcgAUHPB2otAABBEHRyIXIgAS8AvQcgAUG/B2otAABBEHRyIXEgAS8ArQcgAUGvB2otAABBEHRyIXAgAS8AnQcgAUGfB2otAABBEHRyIW8gAS8AjQcgAUGPB2otAABBEHRyIW4gAS8A/QYgAUH/BmotAABBEHRyIW0gAS8A7QYgAUHvBmotAABBEHRyIWwgAS8A3QYgAUHfBmotAABBEHRyIWsgAS8AzQYgAUHPBmotAABBEHRyIWogAS8AvQYgAUG/BmotAABBEHRyIWkgAS8ArQYgAUGvBmotAABBEHRyIWggAS8AnQYgAUGfBmotAABBEHRyIV4gAS8AjQYgAUGPBmotAABBEHRyIREgAS8A/QUgAUH/BWotAABBEHRyIQogAS8A7QUgAUHvBWotAABBEHRyIR4gAS8A3QUgAUHfBWotAABBEHRyIRggAS8AzQUgAUHPBWotAABBEHRyIScgAS8AvQUgAUG/BWotAABBEHRyIQ4gAS8ArQUgAUGvBWotAABBEHRyIVsgAS8AnQUgAUGfBWotAABBEHRyIVogAS8AjQUgAUGPBWotAABBEHRyIUwgAS8A/QQgAUH/BGotAABBEHRyIUsgAS8A7QQgAUHvBGotAABBEHRyIUogAS8A3QQgAUHfBGotAABBEHRyIUkgAS8AzQQgAUHPBGotAABBEHRyIUggAS8AvQQgAUG/BGotAABBEHRyIU0gAS8ArQQgAUGvBGotAABBEHRyIVkgAS8AnQQgAUGfBGotAABBEHRyIVggAS8AjQQgAUGPBGotAABBEHRyIVcgAS8A/QMgAUH/A2otAABBEHRyIUIgAS8A7QMgAUHvA2otAABBEHRyIUEgAS8A3QMgAUHfA2otAABBEHRyIUAgAS8AzQMgAUHPA2otAABBEHRyIT8gAS8AvQMgAUG/A2otAABBEHRyIVYgAS8ArQMgAUGvA2otAABBEHRyIVUgAS8AnQMgAUGfA2otAABBEHRyIVQgAS8AjQMgAUGPA2otAABBEHRyIT0gAS8A/QIgAUH/AmotAABBEHRyITwgAS8A7QIgAUHvAmotAABBEHRyIVMgAS8A3QIgAUHfAmotAABBEHRyITogAS8AzQIgAUHPAmotAABBEHRyIVIgAS8AvQIgAUG/AmotAABBEHRyIVEgAS8ArQIgAUGvAmotAABBEHRyIZcBIAEvAJ0CIAFBnwJqLQAAQRB0ciGaASABLwCNAiABQY8Cai0AAEEQdHIhmQEgAS8A/QEgAUH/AWotAABBEHRyIZgBIAEvAO0BIAFB7wFqLQAAQRB0ciFnIAEvAN0BIAFB3wFqLQAAQRB0ciFmIAEvAM0BIAFBzwFqLQAAQRB0ciFlIAEvAL0BIAFBvwFqLQAAQRB0ciFkIAEvAK0BIAFBrwFqLQAAQRB0ciFjIAEvAJ0BIAFBnwFqLQAAQRB0ciFiDAQLQRBB0A0Qoh8AC0EQQfASEKIfAAsgAS8AjQ4gAUGPDmotAABBEHRyIS0gAS8A/Q0gAUH/DWotAABBEHRyIS8gAS8A7Q0gAUHvDWotAABBEHRyIQ8gAS8A3Q0gAUHfDWotAABBEHRyISMgAS8AzQ0gAUHPDWotAABBEHRyIQUgAS8AvQ0gAUG/DWotAABBEHRyIR8gAS8ArQ0gAUGvDWotAABBEHRyIVwgAS8AnQ0gAUGfDWotAABBEHRyITkgAS8AjQ0gAUGPDWotAABBEHRyIUQgAS8A/QwgAUH/DGotAABBEHRyIU8gAS8A7QwgAUHvDGotAABBEHRyITcgAS8A3QwgAUHfDGotAABBEHRyIV8gAS8AzQwgAUHPDGotAABBEHRyIWAgAS8AvQwgAUG/DGotAABBEHRyIT4gAS8ArQwgAUGvDGotAABBEHRyIVAgAS8AnQwgAUGfDGotAABBEHRyIQYgAS8AjQwgAUGPDGotAABBEHRyIQcgAS8A/QsgAUH/C2otAABBEHRyIZUBIAEvAO0LIAFB7wtqLQAAQRB0ciGUASABLwDdCyABQd8Lai0AAEEQdHIhkwEgAS8AzQsgAUHPC2otAABBEHRyIZIBIAEvAL0LIAFBvwtqLQAAQRB0ciGRASABLwCtCyABQa8Lai0AAEEQdHIhkAEgAS8AnQsgAUGfC2otAABBEHRyIY8BIAEvAI0LIAFBjwtqLQAAQRB0ciGOASABLwD9CiABQf8Kai0AAEEQdHIhjQEgAS8A7QogAUHvCmotAABBEHRyIYwBIAEvAN0KIAFB3wpqLQAAQRB0ciGLASABLwDNCiABQc8Kai0AAEEQdHIhigEgAS8AvQogAUG/CmotAABBEHRyIYkBIAEvAK0KIAFBrwpqLQAAQRB0ciGIASABLwCdCiABQZ8Kai0AAEEQdHIhhwEgAS8AjQogAUGPCmotAABBEHRyIYYBIAEvAP0JIAFB/wlqLQAAQRB0ciGFASABLwDtCSABQe8Jai0AAEEQdHIhhAEgAS8A3QkgAUHfCWotAABBEHRyIYMBIAEvAM0JIAFBzwlqLQAAQRB0ciGCASABLwC9CSABQb8Jai0AAEEQdHIhgQEgAS8ArQkgAUGvCWotAABBEHRyIYABIAEvAJ0JIAFBnwlqLQAAQRB0ciF/IAEvAI0JIAFBjwlqLQAAQRB0ciF+IAEvAP0IIAFB/whqLQAAQRB0ciF9IAEvAO0IIAFB7whqLQAAQRB0ciF8IAEvAN0IIAFB3whqLQAAQRB0ciF7IAEvAM0IIAFBzwhqLQAAQRB0ciF6IAEvAL0IIAFBvwhqLQAAQRB0ciF5IAEvAK0IIAFBrwhqLQAAQRB0ciF4IAEvAJ0IIAFBnwhqLQAAQRB0ciF3IAEvAI0IIAFBjwhqLQAAQRB0ciF2IAEvAP0HIAFB/wdqLQAAQRB0ciF1IAEvAO0HIAFB7wdqLQAAQRB0ciF0IAEvAN0HIAFB3wdqLQAAQRB0ciFzIAEvAM0HIAFBzwdqLQAAQRB0ciFyIAEvAL0HIAFBvwdqLQAAQRB0ciFxIAEvAK0HIAFBrwdqLQAAQRB0ciFwIAEvAJ0HIAFBnwdqLQAAQRB0ciFvIAEvAI0HIAFBjwdqLQAAQRB0ciFuIAEvAP0GIAFB/wZqLQAAQRB0ciFtIAEvAO0GIAFB7wZqLQAAQRB0ciFsIAEvAN0GIAFB3wZqLQAAQRB0ciFrIAEvAM0GIAFBzwZqLQAAQRB0ciFqIAEvAL0GIAFBvwZqLQAAQRB0ciFpIAEvAK0GIAFBrwZqLQAAQRB0ciFoIAEvAJ0GIAFBnwZqLQAAQRB0ciFeIAEvAI0GIAFBjwZqLQAAQRB0ciERIAEvAP0FIAFB/wVqLQAAQRB0ciEKIAEvAO0FIAFB7wVqLQAAQRB0ciEeIAEvAN0FIAFB3wVqLQAAQRB0ciEYIAEvAM0FIAFBzwVqLQAAQRB0ciEnIAEvAL0FIAFBvwVqLQAAQRB0ciEOIAEvAK0FIAFBrwVqLQAAQRB0ciFbIAEvAJ0FIAFBnwVqLQAAQRB0ciFaIAEvAI0FIAFBjwVqLQAAQRB0ciFMIAEvAP0EIAFB/wRqLQAAQRB0ciFLIAEvAO0EIAFB7wRqLQAAQRB0ciFKIAEvAN0EIAFB3wRqLQAAQRB0ciFJIAEvAM0EIAFBzwRqLQAAQRB0ciFIIAEvAL0EIAFBvwRqLQAAQRB0ciFNIAEvAK0EIAFBrwRqLQAAQRB0ciFZIAEvAJ0EIAFBnwRqLQAAQRB0ciFYIAEvAI0EIAFBjwRqLQAAQRB0ciFXIAEvAP0DIAFB/wNqLQAAQRB0ciFCIAEvAO0DIAFB7wNqLQAAQRB0ciFBIAEvAN0DIAFB3wNqLQAAQRB0ciFAIAEvAM0DIAFBzwNqLQAAQRB0ciE/IAEvAL0DIAFBvwNqLQAAQRB0ciFWIAEvAK0DIAFBrwNqLQAAQRB0ciFVIAEvAJ0DIAFBnwNqLQAAQRB0ciFUIAEvAI0DIAFBjwNqLQAAQRB0ciE9IAEvAP0CIAFB/wJqLQAAQRB0ciE8IAEvAO0CIAFB7wJqLQAAQRB0ciFTIAEvAN0CIAFB3wJqLQAAQRB0ciE6IAEvAM0CIAFBzwJqLQAAQRB0ciFSIAEvAL0CIAFBvwJqLQAAQRB0ciFRIAEvAK0CIAFBrwJqLQAAQRB0ciGXASABLwCdAiABQZ8Cai0AAEEQdHIhmgEgAS8AjQIgAUGPAmotAABBEHRyIZkBIAEvAP0BIAFB/wFqLQAAQRB0ciGYASABLwDtASABQe8Bai0AAEEQdHIhZyABLwDdASABQd8Bai0AAEEQdHIhZiABLwDNASABQc8Bai0AAEEQdHIhZSABLwC9ASABQb8Bai0AAEEQdHIhZCABLwCtASABQa8Bai0AAEEQdHIhYyABLwCdASABQZ8Bai0AAEEQdHIhYiABQYwBajUCACHEBSABQfwAajUCACHFBSABKQJ0IckFIAEpAoQBDAILQQQMBwsgAUGMAWo1AgAhxAUgAUH8AGo1AgAhxQUgASkCdCHJBSABKQNoIcMFIAEpA2AhyAUgASkChAELIccFIAEtAIwOIaABIAEoAogOIZ8BIAEoAoQOIZ4BIAEoAoAOIckDIAEtAPwNIcgDIAEoAvgNIccDIAEoAvQNIcYDIAEoAvANIcUDIAEtAOwNIcQDIAEoAugNIcMDIAEoAuQNIcIDIAEoAuANIcEDIAEtANwNIcADIAEoAtgNIb8DIAEoAtQNIb4DIAEoAtANIb0DIAEtAMwNIbwDIAEoAsgNIbsDIAEoAsQNIboDIAEoAsANIbkDIAEtALwNIbgDIAEoArgNIbcDIAEoArQNIbYDIAEoArANIbUDIAEtAKwNIbQDIAEoAqgNIbMDIAEoAqQNIbIDIAEoAqANIbEDIAEtAJwNIbADIAEoApgNIa8DIAEoApQNIa4DIAEoApANIa0DIAEtAIwNIawDIAEoAogNIasDIAEoAoQNIaoDIAEoAoANIakDIAEtAPwMIagDIAEoAvgMIacDIAEoAvQMIaYDIAEoAvAMIaUDIAEtAOwMIaQDIAEoAugMIaMDIAEoAuQMIaIDIAEoAuAMIaEDIAEtANwMIaADIAEoAtgMIZ8DIAEoAtQMIZ4DIAEoAtAMIZ0DIAEtAMwMIZwDIAEoAsgMIZsDIAEoAsQMIZoDIAEoAsAMIZkDIAEtALwMIZgDIAEoArgMIZcDIAEoArQMIZYDIAEoArAMIZUDIAEtAKwMIZQDIAEoAqgMIZMDIAEoAqQMIZIDIAEoAqAMIZEDIAEtAJwMIZADIAEoApgMIY8DIAEoApQMIY4DIAEoApAMIY0DIAEtAIwMIYwDIAEoAogMIYsDIAEoAoQMIYoDIAEoAoAMIYkDIAEtAPwLIYgDIAEoAvgLIYcDIAEoAvQLIYYDIAEoAvALIYUDIAEtAOwLIYQDIAEoAugLIYMDIAEoAuQLIYIDIAEoAuALIYEDIAEtANwLIYADIAEoAtgLIf8CIAEoAtQLIf4CIAEoAtALIf0CIAEtAMwLIfwCIAEoAsgLIfsCIAEoAsQLIfoCIAEoAsALIfkCIAEtALwLIfgCIAEoArgLIfcCIAEoArQLIfYCIAEoArALIfUCIAEtAKwLIfQCIAEoAqgLIfMCIAEoAqQLIfICIAEoAqALIfECIAEtAJwLIfACIAEoApgLIe8CIAEoApQLIe4CIAEoApALIe0CIAEtAIwLIewCIAEoAogLIesCIAEoAoQLIeoCIAEoAoALIekCIAEtAPwKIegCIAEoAvgKIecCIAEoAvQKIeYCIAEoAvAKIeUCIAEtAOwKIeQCIAEoAugKIeMCIAEoAuQKIeICIAEoAuAKIeECIAEtANwKIeACIAEoAtgKId8CIAEoAtQKId4CIAEoAtAKId0CIAEtAMwKIdwCIAEoAsgKIdsCIAEoAsQKIdoCIAEoAsAKIdkCIAEtALwKIdgCIAEoArgKIdcCIAEoArQKIdYCIAEoArAKIdUCIAEtAKwKIdQCIAEoAqgKIdMCIAEoAqQKIdICIAEoAqAKIdECIAEtAJwKIdACIAEoApgKIc8CIAEoApQKIc4CIAEoApAKIc0CIAEtAIwKIcwCIAEoAogKIcsCIAEoAoQKIcoCIAEoAoAKIckCIAEtAPwJIcgCIAEoAvgJIccCIAEoAvQJIcYCIAEoAvAJIcUCIAEtAOwJIcQCIAEoAugJIcMCIAEoAuQJIcICIAEoAuAJIcECIAEtANwJIcACIAEoAtgJIb8CIAEoAtQJIb4CIAEoAtAJIb0CIAEtAMwJIbwCIAEoAsgJIbsCIAEoAsQJIboCIAEoAsAJIbkCIAEtALwJIbgCIAEoArgJIbcCIAEoArQJIbYCIAEoArAJIbUCIAEtAKwJIbQCIAEoAqgJIbMCIAEoAqQJIbICIAEoAqAJIbECIAEtAJwJIbACIAEoApgJIa8CIAEoApQJIa4CIAEoApAJIa0CIAEtAIwJIawCIAEoAogJIasCIAEoAoQJIaoCIAEoAoAJIakCIAEtAPwIIagCIAEoAvgIIacCIAEoAvQIIaYCIAEoAvAIIaUCIAEtAOwIIaQCIAEoAugIIaMCIAEoAuQIIaICIAEoAuAIIaECIAEtANwIIaACIAEoAtgIIZ8CIAEoAtQIIZ4CIAEoAtAIIZ0CIAEtAMwIIZwCIAEoAsgIIZsCIAEoAsQIIZoCIAEoAsAIIZkCIAEtALwIIZgCIAEoArgIIZcCIAEoArQIIZYCIAEoArAIIZUCIAEtAKwIIZQCIAEoAqgIIZMCIAEoAqQIIZICIAEoAqAIIZECIAEtAJwIIZACIAEoApgIIY8CIAEoApQIIY4CIAEoApAIIY0CIAEtAIwIIYwCIAEoAogIIYsCIAEoAoQIIYoCIAEoAoAIIYkCIAEtAPwHIYgCIAEoAvgHIYcCIAEoAvQHIYYCIAEoAvAHIYUCIAEtAOwHIYQCIAEoAugHIYMCIAEoAuQHIYICIAEoAuAHIYECIAEtANwHIYACIAEoAtgHIf8BIAEoAtQHIf4BIAEoAtAHIf0BIAEtAMwHIfwBIAEoAsgHIfsBIAEoAsQHIfoBIAEoAsAHIfkBIAEtALwHIfgBIAEoArgHIfcBIAEoArQHIfYBIAEoArAHIfUBIAEtAKwHIfQBIAEoAqgHIfMBIAEoAqQHIfIBIAEoAqAHIfEBIAEtAJwHIfABIAEoApgHIe8BIAEoApQHIe4BIAEoApAHIe0BIAEtAIwHIewBIAEoAogHIesBIAEoAoQHIeoBIAEoAoAHIekBIAEtAPwGIegBIAEoAvgGIecBIAEoAvQGIeYBIAEoAvAGIeUBIAEtAOwGIeQBIAEoAugGIeMBIAEoAuQGIeIBIAEoAuAGIeEBIAEt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ILkDNgLwDCACILgDOgDsDCACILcDNgLoDCACILYDNgLkDCACILUDNgLgDCACILQDOgDcDCACILMDNgLYDCACILIDNgLUDCACILEDNgLQDCACILADOgDMDCACIK8DNgLIDCACIK4DNgLEDCACIK0DNgLADCACIKwDOgC8DCACIKsDNgK4DCACIKoDNgK0DCACIKkDNgKwDCACIKgDOgCsDCACIKcDNgKoDCACIKYDNgKkDCACIKUDNgKgDCACIKQDOgCcDCACIKMDNgKYDCACIKIDNgKUDCACIKEDNgKQDCACIKADOgCMDCACIJ8DNgKIDCACIJ4DNgKEDCACIJ0DNgKADCACIJwDOgD8CyACIJsDNgL4CyACIJoDNgL0CyACIJkDNgLwCyACIJgDOgDsCyACIJcDNgLoCyACIJYDNgLkCyACIJUDNgLgCyACIJQDOgDcCyACIJMDNgLYCyACIJIDNgLUCyACIJEDNgLQCyACIJADOgDMCyACII8DNgLICyACII4DNgLECyACII0DNgLACyACIIwDOgC8CyACIIsDNgK4CyACIIoDNgK0CyACIIkDNgKwCyACIIgDOgCsCyACIIcDNgKoCyACIIYDNgKkCyACIIUDNgKgCyACIIQDOgCcCyACIIMDNgKYCyACIIIDNgKUCyACIIEDNgKQCyACIIADOgCMCyACIP8CNgKICyACIP4CNgKECyACIP0CNgKACyACIPwCOgD8CiACIPsCNgL4CiACIPoCNgL0CiACIPkCNgLwCiACIPgCOgDsCiACIPcCNgLoCiACIPYCNgLkCiACIPUCNgLgCiACIPQCOgDcCiACIPMCNgLYCiACIPICNgLUCiACIPECNgLQCiACIPACOgDMCiACIO8CNgLICiACIO4CNgLECiACIO0CNgLACiACIOwCOgC8CiACIOsCNgK4CiACIOoCNgK0CiACIOkCNgKwCiACIOgCOgCsCiACIOcCNgKoCiACIOYCNgKkCiACIOUCNgKgCiACIOQCOgCcCiACIOMCNgKYCiACIOICNgKUCiACIOECNgKQCiACIOACOgCMCiACIN8CNgKICiACIN4CNgKECiACIN0CNgKACiACINwCOgD8CSACINsCNgL4CSACINoCNgL0CSACINkCNgLwCSACINgCOgDsCSACINcCNgLoCSACINYCNgLkCSACINUCNgLgCSACINQCOgDcCSACINMCNgLYCSACINICNgLUCSACINECNgLQCSACINACOgDMCSACIM8CNgLICSACIM4CNgLECSACIM0CNgLACSACIMwCOgC8CSACIMsCNgK4CSACIMoCNgK0CSACIMkCNgKwCSACIMgCOgCsCSACIMcCNgKoCSACIMYCNgKkCSACIMUCNgKgCSACIMQCOgCcCSACIMMCNgKYCSACIMICNgKUCSACIMECNgKQCSACIMACOgCMCSACIL8CNgKICSACIL4CNgKECSACIL0CNgKACSACILwCOgD8CCACILsCNgL4CCACILoCNgL0CCACILkCNgLwCCACILgCOgDsCCACILcCNgLoCCACILYCNgLkCCACILUCNgLgCCACILQCOgDcCCACILMCNgLYCCACILICNgLUCCACILECNgLQCCACILACOgDMCCACIK8CNgLICCACIK4CNgLECCACIK0CNgLACCACIKwCOgC8CCACIKsCNgK4CCACIKoCNgK0CCACIKkCNgKwCCACIKgCOgCsCCACIKcCNgKoCCACIKYCNgKkCCACIKUCNgKgCCACIKQCOgCcCCACIKMCNgKYCCACIKICNgKUCCACIKECNgKQCCACIKACOgCMCCACIJ8CNgKICCACIJ4CNgKECCACIJ0CNgKACCACIJwCOgD8ByACIJsCNgL4ByACIJoCNgL0ByACIJkCNgLwByACIJgCOgDsByACIJcCNgLoByACIJYCNgLkByACIJUCNgLgByACIJQCOgDcByACIJMCNgLYByACIJICNgLUByACIJECNgLQByACIJACOgDMByACII8CNgLIByACII4CNgLEByACII0CNgLAByACIIwCOgC8ByACIIsCNgK4ByACIIoCNgK0ByACIIkCNgKwByACIIgCOgCsByACIIcCNgKoByACIIYCNgKkByACIIUCNgKgByACIIQCOgCcByACIIMCNgKYByACIIICNgKUByACIIECNgKQByACIIACOgCMByACIP8BNgKIByACIP4BNgKEByACIP0BNgKAByACIPwBOgD8BiACIPsBNgL4BiACIPoBNgL0BiACIPkBNgLwBiACIPgBOgDsBiACIPcBNgLoBiACIPYBNgLkBiACIPUBNgLgBiACIPQBOgDcBiACIPMBNgLYBiACIPIBNgLUBiACIPEBNgLQBiACIPABOgDMBiACIO8BNgLIBiACIO4BNgLEBiACIO0BNgLABiACIOwBOgC8BiACIOsBNgK4BiACIOoBNgK0BiACIOkBNgKwBiACIOgBOgCsBiACIOcBNgKoBiACIOYBNgKkBiACIOUBNgKgBiACIOQBOgCcBiACIOMBNgKYBiACIOIBNgKUBiACIOEBNgKQBiACIOABOgCMBiACIN8BNgKIBiACIN4BNgKEBiACIN0BNgKABiACINwBOgD8BSACINsBNgL4BSACINoBNgL0BSACINkBNgLwBSACINgBOgDsBSACINcBNgLoBSACINYBNgLkBSACINUBNgLgBSACINQBOgDcBSACINMBNgLYBSACINIBNgLUBSACINEBNgLQBSACINABOgDMBSACIM8BNgLIBSACIM4BNgLEBSACIM0BNgLABSACIMwBOgC8BSACIMsBNgK4BSACIMoBNgK0BSACIMkBNgKwBSACIMgBOgCsBSACIMcBNgKoBSACIMYBNgKkBSACIMUBNgKgBSACIMQBOgCcBSACIMMBNgKYBSACIMIBNgKUBSACIMEBNgKQBSACIMABOgCMBSACIL8BNgKIBSACIL4BNgKEBSACIL0BNgKABSACILwBOgD8BCACILsBNgL4BCACILoBNgL0BCACILkBNgLwBCACILgBOgDsBCACILcBNgLoBCACILYBNgLkBCACILUBNgLgBCACILQBOgDcBCACILMBNgLYBCACILIBNgLUBCACILEBNgLQBCACILABOgDMBCACIK8BNgLIBCACIK4BNgLEBCACIK0BNgLABCACIKwBOgC8BCACIKsBNgK4BCACIKoBNgK0BCACIKkBNgKwBCACIKgBOgCsBCACIKcBNgKoBCACIKYBNgKkBCACIKUBNgKgBCACIKQBOgCcBCACIBo2ApgEIAIgAzYClAQgAiAMNgKQBCACIAQ6AIwEIAIgMjYCiAQgAiBDNgKEBCACICQ2AoAEIAIgygM6APwDIAIgogE2AvgDIAIg0QQ2AvQDIAIgzQM2AvADIAIgoQE6AOwDIAIgowE2AugDIAIgywM2AuQDIAIgzAM2AuADIAIg0gQ6ANwDIAIg0wQ2AtgDIAIg1AQ2AtQDIAIg1QQ2AtADIAIg1gQ6AMwDIAIg1wQ2AsgDIAIg2AQ2AsQDIAIg2QQ2AsAD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IAAoAgQiAmtBDG4hAyACIARHBEADQCACELUaIAJBDGohAiADQQFrIgMNAAsLIAEgACgCADYCDCABIAAoAgg2AgggAUEIakEEQQwQ8gwgAUEQaiQAC28BAX8jAEEgayICJAACfyAAKAIAQQFGBEAgAUGsuuYAQRAQ0BsMAQsgAkECNgIEIAJBzLrmADYCACACQgE3AgwgAkEvNgIcIAIgADYCGCACIAJBGGo2AgggASgCACABKAIEIAIQzgMLIAJBIGokAAtuAQF/IwBBEGsiAiQAIAACfwJAAkAgAUIBWARAIAGnQQFrDQEMAgsgAkEBOgAAIAIgATcDCCAAIAJBiJbAAEGQlsAAELQONgIEQQEMAgsgAEEAOgABQQAMAQsgAEEBOgABQQALOgAAIAJBEGokAAtkAQF/IwBBIGsiAiQAAkACQCABRQRAIAJBCGoiASAAEIIJIAEQwxkMAQsgAEUNASACIABBCGsiADYCCCAAIAAoAgBBAWsiADYCACAADQAgAkEIahCvEQsgAkEgaiQADwsQlh8AC28BAX9BqcboAC0AABpBLEEEEO8bIgNFBEBBBEEsEKIfAAsgAyABNgIAIAMgAikCADcCBCADIAApAgA3AhwgA0EMaiACQQhqKQIANwIAIANBFGogAkEQaikCADcCACADQSRqIABBCGopAgA3AgAgAwtvAQF/QanG6AAtAAAaQShBBBDvGyIDRQRAQQRBKBCiHwALIAMgATYCACADIAIpAgA3AgQgAyAAKQIANwIcIANBDGogAkEIaikCADcCACADQRRqIAJBEGopAgA3AgAgA0EkaiAAQQhqKAIANgIAIAMLdAECfyMAQSBrIgIkACABLQAAIQMgAUEBOgAAIAIgAzoAByADQQFGBEAgAkIANwIUIAJCgYCAgMAANwIMIAJB7IjBADYCCCACQQdqQZaLwAAgAkEIakHQicEAEIEWAAsgACABNgIEIABBADYCACACQSBqJAALagECf0EBIQICQCAAQQRqIAEQgAINACAAKAIAIgMoAgAgASADKAIEKAIMEQEADQACQCAALQAFQQRHDQAgAC0ACUEERw0AIAAtAAQNAEEAIQIgAC0ADUUNAQsgAUG1rMEAQQQQ0BshAgsgAgv9AQIFfwF+IwBBIGsiASQAIAFBAhDVCCABQsHK2YvGDTcDGCABQRhqIgUQ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gBA3AhQgEUGwvuMANgIkIBFCoICAgA43AiggESARQRRqNgIgIAEgEUEgahDsGw0CIBFBEGogEUEcaigCACIJNgIAIBEgESkCFCIdNwMIIA9BCGogCTYCACAPIB03AgAgAUEQaiEBIA9BDGohDyAFQQFqIQUgAkEBayICDQALCyAGIAU2AgAgEUEwaiQADAELQdi+4wBBNyARQQhqQci+4wBB3L/jABDwDAALIBNBEGokACAIQQhqIAsoAgA2AgAgCCAKKQIINwIAIApBIGokACAMKAJMBH8gBEEANgJYIARCgICAgBA3AlAgBEGQmOMANgJgIARCoICAgA43AmQgBCAEQdAAajYCXCAMQcwAaiAEQdwAahDsGw0BIAQpAlQhHyAEKAJQBUGAgICAeAshCiAEKQIIIR4gBCgCBCETIAQtAAMhESAEQRxqIRQjAEEwayIBJAACQAJAAkAgDCgCFCIGBEAgDCgCECABQQA2AhggAUKAgICAEDcCECABQbSV4wA2AiAgAUKggICADjcCJCABIAFBEGo2AhwgAUEcaiIHEOwbDQUgAUEMaiABQRhqKAIANgAAIAEgASkCEDcABCAHQQRBCEEYEIIKIAEoAiAhAiABKAIcQQFGDQIgASgCJCIFIAEpAAE3AAEgBUEDOgAAIAVBCGogAUEIaikAADcAACABQSRqIglBATYCACABIAU2AiAgASACNgIcIwBB0ABrIgMkAAJAAkAgBkEARyIFIAwoAhRJBEAgA0EIakEBciEIIANBJGohCyAFQQR0IRIDQCAMKAIQIANBADYCOCADQoCAgIAQNwIwIANBtJXjADYCQCADQqCAgIAONwJEIAMgA0EwajYCPCASaiADQTxqEOwbDQIgCyADKQIwNwAAIAtBCGogA0E4aigCADYAACAIIAMpACE3AAAgCEEHaiADQShqKQAANwAAIANBAzoACCAHKAIIIgYgBygCAEYEQCAHKAIIIgIgBygCAEYEQCAHIAJBAUEIQRgQzhMLCyAHKAIEIAZBGGxqIgIgAykDCDcDACACQRBqIANBGGopAwA3AwAgAkEIaiADQRBqKQMANwMAIAcgBkEBajYCCCASQRBqIRIgBUEBaiIFIAwoAhRJDQALCyADQQY6AAggA0EIahDhFCADQdAAaiQADAELQdyV4wBBNyADQc8AakHMleMAQeCW4wAQ8AwACyAUQQhqIAkoAgA2AgAgFCABKQIcNwIADAELIBRBADYCCCAUQoCAgICAATcCAAsgAUEwaiQADAELIAIgASgCJEGkmuMAELQaAAsgBEEoaiEUQQAhAkEAIQZBACEBQQAhCSMAQTBrIgMkACADQQA2AgwgA0KAgICAEDcCBCADQQA2AhggA0KAgICAEDcCEAJAAkACfwJAAkACQCAMKAIIRQ0AIAwoAgQhFUEBIQVBASEYA0AgFS0AGARAAkAgAygCGEECaiILIANBEGoiBygCCCICTQRAIAcgCzYCCAwBCyALIAJrIgggBygCACAHKAIIIhJrSwRAIwBBEGsiCyQAIAtBCGogByASIAhBAUEBENIGIAsoAggiAkGBgICAeEcEQCACIAsoAgxBiKbkABC0GgALIAtBEGokACAHKAIIIRILIAcoAgQiAiASaiEWAkACQCAIQQJPBEAgCEEBayILBEAgFkEAIAv8CwALIAIgCyASaiISaiEWDAELIAhFDQELIBZBADoAACASQQFqIRILIAcgEjYCCAsgAygCGCICQYGAgCBPDQNBACEYIAMoAhQjAEFAaiIHJAAgByABIAlrIgg2AgQgByACQQZ0QQN2IgI2AgwgB0EANgIIIAIgCE0EQCAHQQI2AhQgB0GonuMANgIQIAdCAjcCHCAHQZwONgI0IAdBLzYCLCAHIAdBDGo2AjwgB0EBNgI4IAcgB0EoajYCGCAHIAdBOGo2AjAgByAHQQRqNgIoIAdBEGpBlJ/jABDoFwALIAdBQGskACAIQQN1aiICIAItAABBASAIQQdxdHI6AABBASECCyAGIBUoAgBHBEADQCACQQFxBEAgA0EEaiADKAIUIAMoAhgQxQIgA0EANgIYCyADKAIMIgIgAygCBEYEQCADQQRqQYDN4wAQ+QoLIAMoAgggAmpBOzoAACADIAJBAWo2AgxBACECIAZBAWoiBiAVKAIARw0ACyABIQkLIAFBAWohASAMKAIEIAUiC0EcbGohFSAFIAUgDCgCCCIISWohBSAIIAtLDQALIBgNACACQQFxRQ0CIANBBGogAygCFCADKAIYEMUCDAILIBRBgICAgHg2AgAgA0EQahDKHSADQQRqDAILIANBAjYCHCADQX8gAkEDdCACQf////8BSxs2AiBBrMjjAEErIANBHGpBnMjjAEGw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QYz4yAAQ9QMgAkEQaiQAC0AAIAAgAkH/AXFqLQAsIAEgACgCsAJ0aiIBIAAoAhQiAk8EQCABIAJBoIDJABCMDgALIAAoAhAgAUEDdGopAwALSQEBfyMAQRBrIgIkACACIAA2AgwgAUH4o8kAQQZB/qPJAEEKIABBEGpB2KPJAEGIpMkAQQMgAkEMakHoo8kAEJAKIAJBEGokAAtJAQF/IwBBEGsiAiQAIAIgADYCDCABQdSdygBBA0HXncoAQQMgAEEEakG0ncoAQdqdygBBCiACQQxqQcSdygAQkAogAkEQaiQAC0oBAX8jAEEQayICJAAgAiAAQYACajYCDCABQdSdygBBA0HXncoAQQMgAEHkncoAQdqdygBBCiACQQxqQcSdygAQkAogAkEQaiQAC0oBAX8jAEEQayICJAAgAiAAQZADajYCDCABQdSdygBBA0HXncoAQQMgAEH0ncoAQdqdygBBCiACQQxqQcSdygAQkAogAkEQaiQAC0kBAX8jAEEQayICJAAgAiAANgIMIAFB1J3KAEEDQdedygBBAyAAQQRqQYSeygBB2p3KAEEKIAJBDGpBxJ3KABCQCiACQRBqJAALSQEBfyMAQRBrIgIkACACIAA2AgwgAUHUncoAQQNB153KAEEDIABBBGpBlJ7KAEHancoAQQogAkEMakHEncoAEJAKIAJBEGokAAtJAQF/IwBBEGsiAiQAIAIgADYCDCABQdSdygBBA0HXncoAQQMgAEEEakGknsoAQdqdygBBCiACQQxqQcSdygAQkAogAkEQaiQAC0oBAX8jAEEQayICJAAgAiAAQcgAajYCDCABQdSdygBBA0HXncoAQQMgAEG0nsoAQdqdygBBCiACQQxqQcSdygAQkAogAkEQaiQAC0oBAX8jAEEQayICJAAgAiAAQbANajYCDCABQYChygBBDUHroMoAQQQgAEHwoMoAQdedygBBAyACQQxqQbCGygAQkAogAkEQaiQAC0MBAX8jAEEQayICJAAgAiAAQQJqNgIMIAFB66PKACAAQdSjygAgAEEBakHUo8oAIAJBDGpBvKPKABD1AyACQRBqJAALSQEBfyMAQRBrIgIkACACIABBBGo2AgwgAUGMscoAQRVBobHKAEEJIABB7LDKAEGqscoAQQggAkEMakH8sMoAEJAKIAJBEGokAAs9ACAAQfAC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6w4PCyACEK4ECz0BAX8gAEGAAjsBACABIAEoAlRBAWoiADYCVCABIAEoAkwiAiABKAJQajYCSCABIAIgACABKAJYa2o2AkQLPQEBfyAAQYAIOwEAIAEgASgCVEEBaiIANgJUIAEgASgCTCICIAEoAlBqNgJIIAEgAiAAIAEoAlhrajYCRAs9AQF/IABBgAo7AQAgASABKAJUQQFqIgA2AlQgASABKAJMIgIgASgCUGo2AkggASACIAAgASgCWGtqNgJECz0BAX8gAEGADjsBACABIAEoAlRBAWoiADYCVCABIAEoAkwiAiABKAJQajYCSCABIAIgACABKAJYa2o2AkQLPQEBfyAAQYAMOwEAIAEgASgCVEEBaiIANgJUIAEgASgCTCICIAEoAlBqNgJIIAEgAiAAIAEoAlhrajYCRAs9AQF/IABBgBg7AQAgASABKAJUQQFqIgA2AlQgASABKAJMIgIgASgCUGo2AkggASACIAAgASgCWGtqNgJECzwBAX8gAEEAOwEAIAEgASgCVEEBaiIANgJUIAEgASgCTCICIAEoAlBqNgJIIAEgAiAAIAEoAlhrajYCRAs9AQF/IABBgAY7AQAgASABKAJUQQFqIgA2AlQgASABKAJMIgIgASgCUGo2AkggASACIAAgASgCWGtqNgJECz4BAX8gAEGAxgI7AQAgASABKAJUQQFqIgA2AlQgASABKAJMIgIgASgCUGo2AkggASACIAAgASgCWGtqNgJECz0BAX8gAEGABDsBACABIAEoAlRBAWoiADYCVCABIAEoAkwiAiABKAJQajYCSCABIAIgACABKAJYa2o2AkQLPQEBfyAAQYAwOwEAIAEgASgCVEEBaiIANgJUIAEgASgCTCICIAEoAlBqNgJIIAEgAiAAIAEoAlhrajYCRAs+AQF/IAAoAhAiARC8CyABQTBBCBD4HCAAKAIUIgAEQCAAKAIIIgEQ/AIgAUH4AEEIEPgcIABBDEEEEPgcCws7AQF/IwBBEGsiAiQAIAIgAEEBajYCDCABQbT4yABBByAAQaT4yAAgAkEMakGM+MgAELsFIAJBEGokAAs8AQF/IAAoArQCIAEgACgCsAJ0aiIBIAAoAhQiAk8EQCABIAJB0IDJABCMDgALIAAoAhAgAUEDdGopAwALOQEBfwJAIAAtAAwiAUEDRiABQQJGcg0A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AkwgAEEBNgIkIABBATYCFCAAQcSs0QA2AhAgAEEBNgIcIAAgAEEsajYCSCAAQoCAgICAhICAaTcDQCAAQoCACDcDOCAAQgI3AzAgACAAQTBqNgIgIAAgAEHIAGo2AhggAyAHIABBEGoQzgMNCCACRQ0BIARBAWohBCACQQFrIQIMBQsCf0EBIAAoAgwiAUGAAUkNABpBAiABQYAQSQ0AGkEDQQQgAUGAgARJGwsiBSACTQRAIAQgBWohBCACIAVrIQIgAUENSw0CQQEgAXQiBUGAzABxDQQgBUGAMHENAyABDQIgA0HArNEAQQIgCBEFAEUNBQwICyAFIAJBsKzRABClHQALQQFBAEHMrNEAEKUdAAsgAUH/AEYgAUEBa0EISXINACABQQ5rQQxPDQELIABB8gY2AkwgACABNgIsIABBATYCJCAAQQE2AhQgAEHErNEANgIQIABBATYCHCAAIABBLGo2AkggAEKAgICAgISAgGk3A0AgAEKAgAg3AzggAEICNwMwIAAgAEEwajYCICAAIABByABqNgIYIAMgByAAQRBqEM4DDQQMAQsCQAJAAkACQAJAAkACQAJAAkAgAUEhTARAIAFBCWsOBQEDBwcCBgsgAUEiRg0DIAFBJ0YNBCABQdwARw0GIABBgAQ7ARogAEIANwESIABB3LgBOwEQDAgLIABBgAQ7ARogAEIANwESIABB3OgBOwEQDAcLIABBgAQ7ARogAEIANwESIABB3OQBOwEQDAYLIABBgAQ7ARogAEIANwESIABB3NwBOwEQDAULIABBgAQ7ARogAEIANwESIABB3MQAOwEQDAQLIABBgAQ7ARogAEIANwESIABB3M4AOwEQDAMLIAFFDQELAkAgAUH/BU0NACABEOAERQ0AIABBMGogARCRCCAAQRhqIABBOGooAAA2AgAgACAAKQAwNwMQDAILIAEQrglFBEAgAEEwaiABEJEIIABBGGogAEE4aigAADYCACAAIAApADA3AxAMAgsgACABNgIUIABBgAE6ABAMAQsgAEGABDsBGiAAQgA3ARIgAEHc4AA7ARALIABBvQw2AkwgAEEBNgI0IABBoKvRADYCMCAAQgE3AjwgACAAQRBqNgJIIAAgAEHIAGo2AjggAyAHIABBMGoQzgMNAwsgAEEIaiAEIAIQjAUgAC0ACCIBQQJHDQALCyAD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ayIBIAMoAhQiAk8NDCADKAIQIAFBDGxqIgEoAghFDQogASgCBCgCACIBIAMoAiAiAk8NDSAAIAMoAhwgAUECdGooAgAiAkkNCyAEIAE2AgwgBCAANgIIIARBATYCACAEIAAgAms2AgQMCQsgBEEANgIADAgLIAUgAygCPHZBAmsiASADKAIUIgJPDQogAygCECABQQxsaiIBKAIIRQ0IIAEoAgQoAgAiASADKAIgIgJPDQsgAygCHCABQQJ0aigCACICIABBAWoiB0sNAiAEIAE2AgwgBCAHNgIIIARBATYCACAEIAAgAmtBAWo2AgQMBwsgASANQYTa4QAQjA4ACyAHIAJB9NjhABCMDgALDAYLIAQgBjYCDCAEIAI2AgggBCAKNgIEIAQgBzYCAAwDCyADKALQAiIFRQRAQQEgAxDHFyEAIARBAjYCACAEIAA2AgQMAwsgAygCzAIgBU8EQCAFIAMoAjx2QQJrIgEgAygCFCICTw0GIAMoAhAgAUEMbGoiASgCCEUNBCABKAIEKAIAIgEgAygCICICTw0HIAAgAygCHCABQQJ0aigCACICSQ0FIAQgATYCDCAEIAA2AgggBEEBNgIAIAQgACACazYCBAwDCyAIQQhqIAkgAygCLCICKAIIQQFrQXhxakEIaiABKAIIIgcgASgCDCIBIAAgCyACKAIQEQgAAkACQAJAIAgoAggiAEEBaw4CAQACCyALIAgoAgwiAksEQCADQUBrIQoDQAJAAkACQAJAIAEgAksEQCAFIAogAiAHai0AAGotAABqIgAgAygCCCIGSQRAIAMoAgQgAEECdGooAgAiBSADKALIAksNBAJAAkAgBQRAIAUgAygCzAJLDQEgBSADKAI8dkECayIAIAMoAhQiAU8NBSADKAIQIABBDGxqIgAoAghFDRAgACgCBCgCACIAIAMoAiAiAU8NBiACQQFqIgEgAygCHCAAQQJ0aigCACICTw0CDBELIARBADYCAAwOCyAIQQhqIAMoAiggAygCLCIAKAIIQQFrQXhxakEIaiAHIAEgAiALIAAoAhARCAAgCCgCCARAIAgoAgwiACACTQ0GDAcLIARBADYCAAwNCyAEIAA2AgwgBCABNgIIIARBATYCACAEIAEgAms2AgQMDAsgACAGQYTa4QAQjA4ACyACIAFB9NjhABCMDgALIAAgAUG0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A0EQaikCADcCACACQRhqIANBGGooAgA2AgALIAhCgICAgCA3AxggCCAHrUIghjcDECAIQQhqIAhBEGoQnhMgCCgCCEEBcQRAIAEgB2shCyAIKAIMIQJBACAFayEJIAQgBUEcbCIDaiEKIAAgA2ohDQNAIAsgByACGyIDIAVLBEAgACACQRxsIgJqIQ4gAyAJaiEGIAIgCmohAyACIA1qIQIDQCACIAMpAgA3AgAgAkEYaiADQRhqKAIANgIAIAJBEGogA0EQaikCADcCACACQQhqIANBCGopAgA3AgAgDiACEIcHIANBHGohAyACQRxqIQIgBkEBayIGDQALCyAIIAhBEGoQnhMgCCgCBCECIAgoAgBBAXENAAsLIAAgAUEcbEEcayICaiEDIAIgBGohBSAAIAFBAXYiC0EcbGoiAkEcayEHA0AgBCACIAAgAigCBCAAKAIESSACKAIAIgYgACgCACIJSSAGIAlGGyIJGyIGKQIANwIAIARBCGogBkEIaikCADcCACAEQRBqIAZBEGopAgA3AgAgBEEYaiAGQRhqKAIANgIAIAUgByADIAMoAgQgBygCBEkgAygCACIGIAcoAgAiCkkgBiAKRhsiChsiBikCADcCACAFQQhqIAZBCGopAgA3AgAgBUEQaiAGQRBqKQIANwIAIAVBGGogBkEYaigCADYCACACIAlBHGxqIQIgByAKQWRsaiEHIApBHGwgA2pBHGshAyAAIAlBAXNBHGxqIQAgBUEcayEFIARBHGohBCALQQFrIgsNAAsgB0EcaiEFIAFBAXEEfyAEIAAgAiAAIAVJIgcbIgEpAgA3AgAgBEEYaiABQRhqKAIANgIAIARBEGogAUEQaikCADcCACAEQQhqIAFBCGopAgA3AgAgAiAAIAVPQRxsaiECIAAgB0EcbGoFIAALIAVHIAIgA0EcakdyBEAQxxYACwsgCEEgaiQADAELAAsgDEHACmokAAsoACABIAAoAgAtAABBAnQiAEGIpeQAaigCACAAQfik5ABqKAIAENAbCygAIAEgACgCAC0AAEECdCIAQdS/5QBqKAIAIABBwL/lAGooAgAQ0BsLIAEBf0EBIQEgACgCACIAQQFxBH8gAQUgACgCCEEBRgsLKAAgASAAKAIALQAAQQJ0IgBB0PPmAGooAgAgAEG88+YAaigCABDQGwsgAQJ+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QCAAIAI2AgwgAEEEaiAAQQxqQcylxgAQuQggAkEgaiECIAFBIGsiAQ0ACwsgAEEEahC0FyAAQRBqJAALdAECfyAAKAIAIgAoAgQhAiAAKAIIIQMjAEEQayIAJAAgAEEEaiABEJMYIAMEQCADQcgAbCEBA0AgACACNgIMIABBBGogAEEMakH8osYAELkIIAJByABqIQIgAUHIAGsiAQ0ACwsgAEEEahC0FyAAQRBqJAALFgAgACgCACIAKAIEIAAoAgggARDoDQsWACAAKAIAIgAoAgQgACgCCCABEPMNC3EBAn8gACgCACIAKAIEIQIgACgCCCEDIwBBEGsiACQAIABBBGogARCTGCADBEAgA0E4bCEBA0AgACACNgIMIABBBGogAEEMakHcpcYAELkIIAJBOGohAiABQThrIgENAAsLIABBBGoQtBcgAEEQaiQAC3QBAn8gACgCACIAKAIEIQIgACgCCCEDIwBBEGsiACQAIABBBGogARCTGCADBEAgA0HIAGwhAQNAIAAgAjYCDCAAQQRqIABBDGpBnKPGABC5CCACQcgAaiECIAFByABrIgENAAsLIABBBGoQtBcgAEEQaiQAC3EBAn8gACgCACIAKAIEIQIgACgCCCEDIwBBEGsiACQAIABBBGogARCTGCADBEAgA0EDdCEBA0AgACACNgIMIABBBGogAEEMakGk2+UAELkIIAJBCGohAiABQQhrIgENAAsLIABBBGoQtBcgAEEQaiQAC3EBAn8gACgCACIAKAIEIQIgACgCCCEDIwBBEGsiACQAIABBBGogARCTGCADBEAgA0EEdCEBA0AgACACNgIMIABBBGogAEEMakGspMYAELkIIAJBEGohAiABQRBrIgENAAsLIABBBGoQtBcgAEEQaiQAC3EBAn8gACgCACIAKAIEIQIgACgCCCEDIwBBEGsiACQAIABBBGogARCTGCADBEAgA0EGdCEBA0AgACACNgIMIABBBGogAEEMakHMo8YAELkIIAJBQGshAiABQUBqIgENAAsLIABBBGoQtBcgAEEQaiQACxEAIAApAwBQRQRAIAAQ8QwLCxUAIAAoAgAiABDHGCAAQRxBBBD4HAsWACAAIAEoAgg2AgQgACABKAIANgIACxYAIAAoAggiABCRASAAQdgAQQgQ+BwLFgAgACgCACIAEJEBIABB2ABBCBD4HAsVACAAKAIIIgAQaCAAQdgAQQgQ+BwLGQBBn8bIAEGdxsgAIAAoAgAbQQIgARD7AQsWACAAQYzUyAA2AgQgACABQQhqNgIACxYAIABB0NPIADYCBCAAIAFBHGo2AgALEAAgACABIAEgAmoQ+xBBAAtxAQJ/IAAoAgAiACgCBCECIAAoAgghAyMAQRBrIgAkACAAQQRqIAEQkxggAwRAIANBA3QhAQNAIAAgAjYCDCAAQQRqIABBDGpBkN7JABC5CCACQQhqIQIgAUEIayIBDQALCyAAQQRqELQXIABBEGokAAsWACAAKAIAIgAoAgQgACgCCCABEN8OC3EBAn8gACgCACIAKAIEIQIgACgCCCEDIwBBEGsiACQAIABBBGogARCTGCADBEAgA0EcbCEBA0AgACACNgIMIABBBGogAEEMakHQqNEAELkIIAJBHGohAiABQRxrIgENAAsLIABBBGoQtBcgAEEQaiQACxYAIAAoAgAiACgCBCAAKAIIIAEQpB8LFgAgACgCACIAKAIAIAAoAgQgARD7AQtxAQJ/IAAoAgAiACgCBCECIAAoAgghAyMAQRBrIgAkACAAQQRqIAEQkxggAwRAIANBA3QhAQNAIAAgAjYCDCAAQQRqIABBDGpBqILiABC5CCACQQhqIQIgAUEIayIBDQALCyAAQQRqELQXIABBEGokAAsWACAAKAIAIgAoAgQgACgCCCABEOAOCxYAIAAoAgAiACgCACAAKAIEIAEQ4A4LFgAgACgCACIAKAIUIAAoAhggARCkHwtxAQJ/IAAoAgAiACgCBCECIAAoAgghAyMAQRBrIgAkACAAQQRqIAEQkxggAwRAIANBFGwhAQNAIAAgAjYCDCAAQQRqIABBDGpB1LLiABC5CCACQRRqIQIgAUEUayIBDQALCyAAQQRqELQXIABBEGokAAtxAQJ/IAAoAgAiACgCBCECIAAoAgghAyMAQRBrIgAkACAAQQRqIAEQkxggAwRAIANBFGwhAQNAIAAgAjYCDCAAQQRqIABBDGpBlLLiABC5CCACQRRqIQIgAUEUayIBDQALCyAAQQRqELQXIABBEGokAAtxAQJ/IAAoAgAiACgCBCECIAAoAgghAyMAQRBrIgAkACAAQQRqIAEQkxggAwRAIANBBXQhAQNAIAAgAjYCDCAAQQRqIABBDGpBxLLiABC5CCACQSBqIQIgAUEgayIBDQALCyAAQQRqELQXIABBEGokAAsQACAAIAEgASACahCCEUEACxAAIAAgASABIAJqEIMRQQALEAAgACABIAEgAmoQhBFBAAsWACAAQfzW5QA2AgQgACABQRxqNgIACxYAIABBuNflADYCBCAAIAFBHGo2AgALEwBBuMfoACAArUIghkIBhDcDAAsWACAAKAIAIgAoAgAgACgCBCABEKQfCxkAIAEoAgBB6LrnAEELIAEoAgQoAgwRBQALGQAgASgCAEHzuucAQQ4gASgCBCgCDBEFAAsWACAAKAIAIAEgAiAAKAIEKAIMEQUACwoAIABBCGoQyh0LFAAgACgCACABIAAoAgQoAgwRAQALFAAgACgCACABIAAoAgQoAhQRAQALFAAgACgCACABIAAoAgQoAiwRAQALFAAgACgCACABIAAoAgQoAjwRAAALDwAgACgCAARAIAAQyhkLCxEAIABBDGoiABCoFyAAELEeCw8AIAAoAgAEQCAAENYBCwsPACAAKAIABEAgABDXGQsLDwAgACgCAARAIAAQ7gELCw8AIAAoAgAEQCAAEKoDCwsPACAAKAIABEAgABDnAQsLEAAgACgCACABIAIQ4AhBAAsPACAAQShqQQAgACgCKBsLDwAgAEEcakEAIAAoAhwbCw8AIABBPGpBACAAKAI8GwsSACAAKAIAKAIAQRBqIAEQgQMLDgAgACABIAEgAmoQ+xALEgAgAEEAOgAlIABBADoAGCAACxYAIABBADYCACAAQfCu4gApAgA3AgQLFAAgACgCACIAIAAoAgAoAgARAgALFAAgACgCACABIAAoAgQoAhARAQALFQAgAiABIABBkOLlACADKAIwEQcACw4AIAAgASABIAJqEIURC4sIAQR/IwBB8ABrIgUkACAFIAM2AgwgBSACNgIIAn8gAUGBAk8EQAJ/QYACIAAsAIACQb9/Sg0AGkH/ASAALAD/AUG/f0oNABpB/gFB/QEgACwA/gFBv39KGwsiBiAAaiwAAEG/f0oEQEG0yucAIQdBBQwCCyAAIAFBACAGIAQQ6RsAC0EBIQcgASEGQQALIQggBSAGNgIUIAUgADYCECAFIAg2AhwgBSAHNgIYAkACQAJAAkAgASACSSIGIAEgA0lyRQRAIAIgA0sNASACRSABIAJNckUEQCAF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NwMIIABC5NusuOXVlLGQfzcDAAshACAAQvej/rXTgqev+QA3AwggAEK50JSL0fKn9C43AwALEwAgAEENNgIEIABBy/3AADYCAAsQACAAEIcZIABBLEEEEPgcCxAAIAAQiBkgAEEoQQQQ+BwLEAAgABCYGCAAQThBBBD4HAsTACAAQej/wAA2AgQgACABNgIACxMAIABBpIDBADYCBCAAIAE2AgALEwAgAEHggMEANgIEIAAgATYCAAsTACAAQSg2AgQgAEGQjcEANgIACyEAIABCxePSiKKS26hKNwMIIABCwPOAi4b0j5nGADcDAAsiACAAQo+d2pGnrtPtwAA3AwggAELjhd26yO6v/N4ANwMACxMAIAAoAhQoAgBBoJLBAGotAAALEwAgACgCACgCAEGgksEAai0AAAsTACAAQSg2AgQgAEGIlcEANgIACyEAIABClZmZjbHvtcgFNwMIIABCwtjw7L7+i9S5fzcDAAsgACAAQp3Gseq7i7uNajcDCCAAQo6w5Ovc3rnoYDcDAAsQACAAEJQXIABBLEEEEPgcCxMAIABB0JbBADYCBCAAIAE2AgALEwAgAEHMrcEANgIEIABBATYCAAsTACAAQSg2AgQgAEHIncQANgIACxMAIABB3J7EADYCBCAAIAE2AgALDwAgACABIAEoAlRBARBBCxEAIAAoAgQgACgCCCABEPsBCxAAIAAgATYCBCAAIAE2AgALbwECfyAAKAIEIQIgACgCCCEDIwBBEGsiACQAIABBBGogARCTGCADBEAgA0HoAGwhAQNAIAAgAjYCDCAAQQRqIABBDGpB/KPGABC5CCACQegAaiECIAFB6ABrIgENAAsLIABBBGoQtBcgAEEQaiQAC2wBAn8gACgCBCECIAAoAgghAyMAQRBrIgAkACAAQQRqIAEQkxggAwRAIANBMGwhAQNAIAAgAjYCDCAAQQRqIABBDGpBvKXGABC5CCACQTBqIQIgAUEwayIBDQALCyAAQQRqELQXIABBEGokAAsRACAAKAIEIAAoAgggARDoDQtvAQJ/IAAoAgQhAiAAKAIIIQMjAEEQayIAJAAgAEEEaiABEJMYIAMEQCADQegAbCEBA0AgACACNgIMIABBBGogAEEMakGso8YAELkIIAJB6ABqIQIgAUHoAGsiAQ0ACwsgAEEEahC0FyAAQRBqJAALbAECfyAAKAIEIQIgACgCCCEDIwBBEGsiACQAIABBBGogARCTGCADBEAgA0EwbCEBA0AgACACNgIMIABBBGogAEEMakGspcYAELkIIAJBMGohAiABQTBrIgENAAsLIABBBGoQtBcgAEEQaiQAC2wBAn8gACgCBCECIAAoAgghAyMAQRBrIgAkACAAQQRqIAEQkxggAwRAIANBMGwhAQNAIAAgAjYCDCAAQQRqIABBDGpBvKTGABC5CCACQTBqIQIgAUEwayIBDQALCyAAQQRqELQXIABBEGokAAsRACAAKAIEIAAoAgggARDzDQtvAQJ/IAAoAgQhAiAAKAIIIQMjAEEQayIAJAAgAEEEaiABEJMYIAMEQCADQcgAbCEBA0AgACACNgIMIABBBGogAEEMakHspcYAELkIIAJByABqIQIgAUHIAGsiAQ0ACwsgAEEEahC0FyAAQRBqJAALbwECfyAAKAIEIQIgACgCCCEDIwBBEGsiACQAIABBBGogARCTGCADBEAgA0HoAGwhAQNAIAAgAjYCDCAAQQRqIABBDGpBnKTGABC5CCACQegAaiECIAFB6ABrIgENAAsLIABBBGoQtBcgAEEQaiQACxEAIAAoAgQgACgCCCABEPUNC28BAn8gACgCBCECIAAoAgghAyMAQRBrIgAkACAAQQRqIAEQkxggAwRAIANB2ABsIQEDQCAAIAI2AgwgAEEEaiAAQQxqQYykxgAQuQggAkHYAGohAiABQdgAayIBDQALCyAAQQRqELQXIABBEGokAAtsAQJ/IAAoAgQhAiAAKAIIIQMjAEEQayIAJAAgAEEEaiABEJMYIAMEQCADQShsIQEDQCAAIAI2AgwgAEEEaiAAQQxqQYyjxgAQuQggAkEoaiECIAFBKGsiAQ0ACwsgAEEEahC0FyAAQRBqJAALbAECfyAAKAIEIQIgACgCCCEDIwBBEGsiACQAIABBBGogARCTGCADBEAgA0EGdCEBA0AgACACNgIMIABBBGogAEEMakHco8YAELkIIAJBQGshAiABQUBqIgENAAsLIABBBGoQtBcgAEEQaiQAC2wBAn8gACgCBCECIAAoAgghAyMAQRBrIgAkACAAQQRqIAEQkxggAwRAIANBDGwhAQNAIAAgAjYCDCAAQQRqIABBDGpB7KTGABC5CCACQQxqIQIgAUEMayIBDQAL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CyAAIABC8vaMm87eibUMNwMIIABCy6iK8fL1ob1ENwMACyEAIABC+uWE66nLwfYhNwMIIABC8NeM3a3Vw8ipfzcDAAsRACAAKAIAIAAoAgQgARD7AQsRACABQf8BcUHc4uQAai0AAAsiACAAQu26rbbNhdT14wA3AwggAEL4gpm9le7Gxbl/NwMACyEAIABCgLzfhaul+JsnNwMIIABCn/WWlNbu7cOhfzcDAAsiACAAQuyEifn7mJzHpX83AwggAELe/cHaleWbi9sANwMACyEAIABC+JeN/p335sA9NwMIIABC/8jd3YCQi7OBfzcDAAsTACAAQSg2AgQgAEHM1eUANgIACyAAIABC/oqli8HmpNcNNwMIIABC74bIkayasshINwMACyIAIABCsM/RqvfDwrf8ADcDCCAAQq+wxKPgsMLO0gA3AwALEAAgABDeGCAAQShBBBD4HAsTACAAQfTX5QA2AgQgACABNgIACxMAIABBsNjlADYCBCAAIAE2AgALIQAgAEKwgbSY4/D7h+cANwMIIABCzue7gbO19IACNwMACxAAIABCBDcCCCAAQgA3AgALEAAgACABKAIAIAIgAxC4CgsQACAAIAEoAgAgAiADEJAHCxEAIAEgACgCACAAKAIEENAbCyIAIABC7bqtts2F1PXjADcDCCAAQviCmb2V7sbFuX83AwALIQAgAEKAvN+Fq6X4myc3AwggAEKf9ZaU1u7tw6F/NwMACxMAIABBqNjmADYCBCAAIAE2AgALEQAgASAAKAIAIAAoAgQQiwMLEQAgASgCACABKAIEIAAQzgMLEQEBfxCACiIBIAAlASYBIAELvQEBAn8gACgCACEDIwBBIGsiACQAIABBEGoiBCADKAIAQQhqIAEQ0wUgAEEEaiAEEOYPIAAoAgwiASgCCCIDIAEoAgBGBEAgAUGwhMEAEKkTCyABKAIEIANBGGxqIgQgAikDADcDACAEQRBqIAJBEGopAwA3AwAgBEEIaiACQQhqKQMANwMAIAEgA0EBajYCCCAAKAIEIgFBACABKAIAIgIgAkF8RiICGzYCACACRQRAIAEQ7AELIABBIGokAAuUAQEBfyABKAIAIQMjAEEgayIBJAAgASACNgIEIAFBCGogAygCAEEIaiABQQRqEIsFAkAgASgCCCICBEAgAUEUaiABKAIQEPAeIAIg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ABoAAABfABAASwAAAH0FAAAbAAAAXwAQAEsAAABYBAAAEgAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAACMARAASgAAAL4BAAAdAAAABwAAAAwAAAAEAAAACAAAAAcAAAAMAAAABAAAAAkAAAAIAAAA6AEQAAoAAAALAAAADAAAAA0AAAAOAAAAc3JjL2xpYi5ycwAAJAIQAAoAAAAaAQAAGAAAACQCEAAKAAAAIAEAABsAAAAkAhAACgAAACoBAAAWAAAAJAIQAAoAAAAuAQAAEwAAAAAAAAAEAAAABAAAAA8AAABJbmplY3Rpb25NYXRjaEZhaWx1cmVUcmFuc2Zvcm1PdXRwdXRjb2RlbWFwdHJfY2hfYXBtX3RyYWNpbmdDaGFubmVsdHJhY2luZ0NoYW5uZWwvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzAAAA0QIQAFgAAADBBwAACQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2FzdC0xNC4wLjAvc3JjL3N0bXQucnMAAAA8AxAAYQAAAAwAAAABAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAALADEABKAAAAvgEAAB0AAAB0cl9jaF9hcG0kAAAMBBAACgAAAHNyYy9pbnN0cnVtZW50YXRpb24ucnNvcmNoZXN0cmlvbjo6ADYEEAAMAAAAQgQQAAEAAAAgBBAAFgAAAFAAAAAeAAAAIAQQABYAAABsAAAAEQAAACAEEAAWAAAAbQAAABEAAAAuAAAADAQQAAoAAACEBBAAAQAAACAEEAAWAAAAfAAAAA0AAAAgBBAAFgAAAH0AAAANAAAAIAQQABYAAAB+AAAADQAAACAEEAAWAAAAiQAAABkAAAAgBBAAFgAAAIMAAAAiAAAAdHJfY2hfYXBtX2N0eCQAAOgEEAAOAAAAIAQQABYAAACbAAAAHQAAACAEEAAWAAAAtwAAACwAAAAgBBAAFgAAAMMAAAAZAAAAIAQQABYAAAC+AAAAFQAAACAEEAAWAAAA6gAAAA4AAAAgBBAAFgAAAPEAAAAOAAAAY29uc3RydWN0b3J1c2Ugc3RyaWN0AAAAawUQAAoAAAB0cmFjZVN5bmN0cmFjZVByb21pc2VcAHRyX2NoX2FwbV90cmFjaW5nQ2hhbm5lbF9fYXBtJHdyYXBwZWRfX2FwbSRvcmlnaW5hbF9hcmdzYXJndW1lbnRzX19hcG0kdHJhY2VkaGFzU3Vic2NyaWJlcnNtb2R1bGVWZXJzaW9udHJfY2hfZXJyAAAAAAAAAAABAAAAHQAAAG1hcCB3aXRoIGEgc2luZ2xlIGtleQAAABgGEAAVAAAAAAAAAAgAAAAEAAAAHgAAAHN0cmluZyBvciBtYXAAAABIBhAADQBB6IzAAAsFAQAAAB8AQfiMwAALBQEAAAAgAEGIjcAACwUBAAAAIQBBmI3AAAsFAQAAACAAQaiNwAALBQEAAAAgAEG4jcAACwUBAAAAIABByI3AAAsFAQAAACAAQdiNwAAL4gEBAAAAIgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlLTEuMC4yMTkvc3JjL3ByaXZhdGUvZGUucnMAAADgBhAAYQAAAAcCAAARAAAA4AYQAGEAAAALAgAAFQAAAOAGEABhAAAA+wEAABEAAADgBhAAYQAAAP0BAAAVAAAAY2xhc3NOYW1lbWV0aG9kTmFtZWtpbmRpbmRleGZ1bmN0aW9uTmFtZWV4cHJlc3Npb25OYW1lAEHEj8AACwUBAAAAIwBB1I/AAAsFAQAAACQAQeSPwAALBQEAAAAlAEH0j8AACwUBAAAAJgBBhJDAAAsFAQAAACcAQZSQwAALBQEAAAAoAEGkkMAAC6YBAQAAAB0AAABDb3VsZG4ndCBkZXNlcmlhbGl6ZSBpNjQgb3IgdTY0IGZyb20gYSBCaWdJbnQgb3V0c2lkZSBpNjQ6Ok1JTi4udTY0OjpNQVggYm91bmRzMXsIEAABAAAAAAAAAAgAAAAEAAAAHgAAAG5hbWV2ZXJzaW9uUmFuZ2VmaWxlUGF0aGNoYW5uZWxOYW1lbW9kdWxlZnVuY3Rpb25RdWVyeQBB1JHAAAuVAwEAAAAdAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAANwIEABKAAAAvgEAAB0AAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwX3Rocm93KClgIG9uIGEgYE5vbmVgIHZhbHVlRmFpbGVkIHRvIHBhcnNlIHZlcnNpb24gOiAKaQkQABgAAACBCRAAAgAAAIMJEAABAAAAZGlhZ25vc3RpY3NfY2hhbm5lbG5hbWV2ZXJzaW9uUmFuZ2VmaWxlUGF0aACvCRAABAAAALMJEAAMAAAAvwkQAAgAAABzdHJ1Y3QgTW9kdWxlTWF0Y2hlckluc3RydW1lbnRhdGlvbkNvbmZpZ2NoYW5uZWxOYW1lbW9kdWxlZnVuY3Rpb25RdWVyeQAJChAACwAAABQKEAAGAAAAGgoQAA0AAABzdHJ1Y3QgSW5zdHJ1bWVudGF0aW9uQ29uZmlnAAAAAAAAAAABAAAAKgBB9JTAAAsFAQAAACsAQYSVwAALBQEAAAAsAEGUlcAACwUBAAAALQBBpJXAAAv5AwEAAAAuAAAAY29uc3RydWN0b3JGdW5jdGlvbktpbmRTeW5jQXN5bmPDChAABAAAAMcKEAAFAAAAdmFyaWFudCBpZGVudGlmaWVydmFyaWFudCBpbmRleCAwIDw9IGkgPCAyAADuChAAGAAAAAAAAAAIAAAABAAAAB4AAABkYXRhIGRpZCBub3QgbWF0Y2ggYW55IHZhcmlhbnQgb2YgdW50YWdnZWQgZW51bSBGdW5jdGlvblF1ZXJ5ZmllbGQgaWRlbnRpZmllcmNsYXNzTmFtZW1ldGhvZE5hbWVraW5kaW5kZXhzdHJ1Y3QgdmFyaWFudCBGdW5jdGlvblF1ZXJ5OjpDbGFzc01ldGhvZHN0cnVjdCB2YXJpYW50IEZ1bmN0aW9uUXVlcnk6OkNsYXNzQ29uc3RydWN0b3JzdHJ1Y3QgdmFyaWFudCBGdW5jdGlvblF1ZXJ5OjpPYmplY3RNZXRob2RmdW5jdGlvbk5hbWVzdHJ1Y3QgdmFyaWFudCBGdW5jdGlvblF1ZXJ5OjpGdW5jdGlvbkRlY2xhcmF0aW9uZXhwcmVzc2lvbk5hbWVzdHJ1Y3QgdmFyaWFudCBGdW5jdGlvblF1ZXJ5OjpGdW5jdGlvbkV4cHJlc3Npb24AAAAxAAAADAAAAAQAAAAyAAAAMwAAAAUAQaiZwAALuQQBAAAANAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAOcMEABLAAAA0QoAAA4AAABFcnJvcgAAAOcMEABLAAAAfwUAABoAAADnDBAASwAAAH0FAAAbAAAA5wwQAEsAAABYBAAAEgAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAAB8DRAASgAAAL4BAAAdAAAATW9kdWxlVHlwZWVzbWNqc3Vua25vd24A4g0QAAMAAADlDRAAAwAAAOgNEAAHAAAAdmFyaWFudCBpZGVudGlmaWVyZW51bSBNb2R1bGVUeXBlYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2Vkc3JjL2xpYi5ycwAAaA4QAAoAAABAAAAADAAAAChDb252ZXJ0aW5nIHR5cGUgZmFpbGVkKSAgKDopAAAAhA4QABkAAACdDhAAAgAAAJ8OEAABAAAAnw4QAAEAAACgDhAAAQAAADgAAAAMAAAABAAAADkAAAA6AAAABQBB7J3AAAvNBQEAAAA7AAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAKw8QAEsAAADRCgAADgAAAEVycm9yAAAAKw8QAEsAAAB/BQAAGgAAACsPEABLAAAAfQUAABsAAAArDxAASwAAAFgEAAASAAAAaW52YWxpZCB2YWx1ZTogLCBleHBlY3RlZCAAAMAPEAAPAAAAzw8QAAsAAABtaXNzaW5nIGZpZWxkIGBg7A8QAA8AAAD7DxAAAQAAAGludmFsaWQgbGVuZ3RoIAAMEBAADwAAAM8PEAALAAAAZHVwbGljYXRlIGZpZWxkIGAAAAAsEBAAEQAAAPsPEAABAAAAdW5rbm93biB2YXJpYW50IGBgLCBleHBlY3RlZCAAAABQEBAAEQAAAGEQEAAMAAAAYCwgdGhlcmUgYXJlIG5vIHZhcmlhbnRzUBAQABEAAACAEBAAGAAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAACoEBAASgAAAL4BAAAdAAAAAAAAAAQAAAAEAAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMASBEQAEsAAAC7BAAAEgAAAEoAAAAMAAAABAAAAEsAAABMAAAABQBBxKPAAAv/CwEAAABNAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAAxIQAEsAAADRCgAADgAAAEVycm9yAAAAAxIQAEsAAAB/BQAAGgAAAAMSEABLAAAAfQUAABsAAAADEhAASwAAAFgEAAASAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NvbnZlcnQvc2xpY2VzLnJzmBIQAGwAAADIAQAALAAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMUExAAWAAAAMEHAAAJAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvaXRlci5ycwB8ExAATwAAAJAAAAAuAAAAAAAAAAQAAAAEAAAATgAAAE1hcEFjY2Vzczo6bmV4dF92YWx1ZSBjYWxsZWQgYmVmb3JlIG5leHRfa2V5L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtMS4wLjIxOS9zcmMvZGUvdmFsdWUucnMAGBQQAF8AAABmBQAAGwAAAE8AAAAMAAAABAAAAFAAAABRAAAAUgAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAoBQQAE8AAAAVAQAAGQAAAEZhaWxlZCB0byBmaW5kIGluamVjdGlvbiBwb2ludHMgZm9yOiAAAAAAFRAAJQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAADAVEABeAAAANAAAAAUAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L3N0ZC9zcmMvc3lzL29zX3N0ci9ieXRlcy5ycwCgFRAAUwAAAFwAAAAhAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvbm9kZWpzLXNlbXZlci00LjEuMC9zcmMvbGliLnJzBBYQAGAAAAArAQAACgAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAAB0FhAASgAAAKgBAAAfAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwDQFhAATwAAABUBAAAZAAAAaW52YWxpZCB0eXBlOiAsIGV4cGVjdGVkIAAAADAXEAAOAAAAPhcQAAsAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAXBcQAEoAAAC+AQAAHQAAAP//////////uBcQAEHQr8AACwEBAEHgr8AAC6UjAQAAAFUAAABWAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnMAAADsFxAAZQAAADUAAAAOAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvanMtc3lzLTAuMy43Ny9zcmMvbGliLnJzAABkGBAAWgAAAPsYAAABAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NvbnZlcnQvc2xpY2VzLnJz0BgQAGwAAAAkAQAADgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9zdHIvbW9kLnJzAAAAfhkQAEsAAAAwAwAAFQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAADcGRAASgAAAL4BAAAdAAAAAQAAAAAAAABtYWpvcm1pbm9ycGF0Y2guKy12VnZlcnNpb25idWlsZCB2ZXJzaW9ucHJlX3JlbGVhc2UgdmVyc2lvbmlkZW50aWZpZXJudW1iZXIgY29tcG9uZW50AAAAAAEAAFNlbXZlciBzdHJpbmcgY2FuJ3QgYmUgbG9uZ2VyIHRoYW4gIGNoYXJhY3RlcnMuAJwaEAAjAAAAvxoQAAwAAABJbmNvbXBsZXRlIGlucHV0IHRvIHNlbXZlciBwYXJzZXIuRmFpbGVkIHRvIHBhcnNlIGFuIGludGVnZXIgY29tcG9uZW50IG9mIGEgc2VtdmVyIHN0cmluZzogAP4aEAA5AAAASW50ZWdlciBjb21wb25lbnQgb2Ygc2VtdmVyIHN0cmluZyBpcyBsYXJnZXIgdGhhbiBKYXZhU2NyaXB0J3MgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6IEAbEABYAAAARmFpbGVkIHRvIHBhcnNlIKAbEAAQAAAATxoQAAEAAABObyB2YWxpZCByYW5nZXMgY291bGQgYmUgcGFyc2VkQW4gdW5zcGVjaWZpZWQgZXJyb3Igb2NjdXJyZWQuAAAAAAAAAAQAAAAEAAAAZwAAAE51bWVyaWMAAAAAAAQAAAAEAAAAaAAAAEFscGhhTnVtZXJpYwAAAAAIAAAACAAAAGkAAABqAAAADAAAAAQAAABrAAAAAAAAAAQAAAAEAAAAbAAAAFZlcnNpb25idWlsZHByZV9yZWxlYXNlL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5ycwB7HBAAWAAAAMEHAAAJAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAOQcEABKAAAAvgEAAB0AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBUaGVyZSBzaG91bGQgbm90IGhhdmUgYmVlbiBhbiBsb3dlciBib3VuZDogAAAAQB0QAFUAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ub2RlanMtc2VtdmVyLTQuMS4wL3NyYy9yYW5nZS5ycwAAoB0QAGIAAABTAAAAEgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IFRoZXJlIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuIHVwcGVyIGJvdW5kOiAAAAAUHhAAVQAAAKAdEABiAAAASQAAABIAAAA+Pj08PD0qfHxvcGVyYXRpb24gcmFuZ2UgKGV4OiA+PSAxLjIuMyk9cGxhaW4gdmVyc2lvbiByYW5nZSAoZXg6IDEuMil2LnhYfnRpbGRlIHZlcnNpb24gcmFuZ2UgKGV4OiB+MS4yLjMpXmNhcmV0IHZlcnNpb24gcmFuZ2UgKGV4OiBeMS4yLjMpaHlwaGVuYXRlZCB2ZXJzaW9uIHJhbmdlIChleDogMS4yIC0gMiktAAAAAAAABAAAAAQAAABuAAAARXhjbHVkaW5nSW5jbHVkaW5nVW5ib3VuZGVkL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvbm9kZWpzLXNlbXZlci00LjEuMC9zcmMvbGliLnJzAGMfEABgAAAAKwEAAAoAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9tb2QucnMA1B8QAEsAAAAwAwAAFQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dpbm5vdy0wLjYuMjYvc3JjL3N0cmVhbS9tb2QucnMAAAAwIBAAYQAAAD4DAAAWAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvbm9kZWpzLXNlbXZlci00LjEuMC9zcmMvcmFuZ2UucnMAAKQgEABiAAAAgAIAACEAAACkIBAAYgAAAIMCAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2lubm93LTAuNi4yNi9zcmMvc3RyZWFtL21vZC5ycwAAACghEABhAAAA5AsAAA4AAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAnCEQAEoAAACoAQAAHwAAAAAAAAAEAAAABAAAAG8AAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9tb2QucnMACCIQAEsAAAAwAwAAFQAAAAAAAAAEAAAABAAAAHAAAABMb3dlclVwcGVyL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnN+IhAASgAAAL4BAAAdAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnPYIhAAUAAAAC4CAAARAAAAIHZhcmxldGNvbnN0PT0hPT09PSE9PTw8PT4+PTw8Pj4+Pj4rLSovJXxeJnx8JiZpbmluc3RhbmNlb2YqKj8/L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfY29kZWdlbi0xNi4wLjAvc3JjL2xpYi5ycwB3IxAAZAAAAJgCAAAeAAAALGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUAAAB3IxAAZAAAAIMDAAASAAAAPygpOnt9AAB3IxAAZAAAAAECAABIAAAAdyMQAGQAAAACAgAAKAAAAGAAAAB3IxAAZAAAAMoAAABMAAAAJHsAAHcjEABkAAAAzQAAACcAAAB3IxAAZAAAAPYCAABBAAAAAAAAAAgAAAAEAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB3IxAAZAAAAAEDAABEAAAAbmV3L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfY29kZWdlbi0xNi4wLjAvc3JjL2xpdC5ycwDfJBAAZAAAAPgAAAA0AAAAMGIwbzBCME9kZWNsYXJlYWJzdHJhY3RjbGFzc3B1YmxpY3Byb3RlY3RlZHByaXZhdGVleHRlbmRzaW1wbGVtZW50cy8vLyoqLy9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMA7CUQAEsAAADoAQAAFwAAAOwlEABLAAAAWAQAABIAAACdJRAATwAAAM4BAAA3AAAAAgAAAAIAAAADAAAAAwAAAAEAAAACAAAAAQAAAAIAAAACAAAAAgAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAoAAAACAAAAAgAAAEQjEABGIxAASCMQAEsjEABOIxAATyMQAFEjEABSIxAAVCMQAFYjEABYIxAAWyMQAFwjEABdIxAAXiMQAF8jEABgIxAAYSMQAGIjEABjIxAAZSMQAGcjEABpIxAAcyMQAHUjEAAIAAAACAAAAAgAAAAIAAAACAAAABgAAAAEAAAABAAAAAgAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAYAAAAAwAAAAMAAAAFAAAAOSMQADwjEAA/IxAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfY29kZWdlbi0xNi4wLjAvc3JjL3R5cGVzY3JpcHQucnNleHBvcnQ9bmV3KCk6PD5hcz0+e31kZWNsYXJlY29uc3RlbnVtLi4udGhpc1tdaW5mZXJwdWJsaWNwcm90ZWN0ZWRwcml2YXRlb3ZlcnJpZGVyZWFkb25seWlub3V0ZXh0ZW5kc3R5cGVvZmltcG9ydCwuKy0/bmFtZXNwYWNlbW9kdWxlZ2xvYmFsYACIJxAAawAAAAQCAAAiAAAAJHsAAIgnEABrAAAABwIAACEAAABhbnl1bmtub3dubnVtYmVyb2JqZWN0Ym9vbGVhbmJpZ2ludHN0cmluZ3N5bWJvbHZvaWR1bmRlZmluZWRudWxsbmV2ZXJpbnRyaW5zaWMha2V5b2Z1bmlxdWVpbnRlcmZhY2VzYXRpc2ZpZXN0eXBlYXNzZXJ0c2lzYWJzdHJhY3RnZXRzZXRyZXF1aXJld2l0aGRlY2xhcmVzdGF0aWNhYnN0cmFjdG92ZXJyaWRlcmVhZG9ubHk/ITo9KClhc3luYypnZXRzZXRjb25zdHJ1Y3RvcmFjY2Vzc29yLFtdKCkAQZDTwAAL4SUBAAAAfwAAAFdyaXRpbmcgdG8gYSBTdHJpbmcgc2hvdWxkbid0IGZhaWwvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvbW9kLnJzALopEABhAAAApAAAABIAAABAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5ycwAAAC0qEABYAAAAwQcAAAkAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9ib3hlZC9pdGVyLnJzAJgqEABPAAAAkAAAAC4AAAA7PS57Li4ufTwvPjo8LzwvPjw+aWYoKWVsc2Vmb3J0cnlmaW5hbGx5d2l0aGJyZWFraW5hd2FpdG9mdGhyb3d3aGlsZXJldHVybmNhc2VkZWZhdWx0c3dpdGNoY2F0Y2hkb2NvbnRpbnVlZGVidWdnZXIjLSshfnR5cGVvZnZvaWRkZWxldGU9Kz0tPSo9Lz0lPTw8PT4+PT4+Pj18PV49Jj0qKj0mJj18fD0/Pz0rKy0tL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvaXRlci5yc3VuZXhwZWN0ZWQgcmVnZXggZmluZCBlcnJvcjogCnRvIGhhbmRsZSBmaW5kIGVycm9ycywgdXNlICd0cnknIG9yICdzZWFyY2gnIG1ldGhvZHMAESwQAB0AAAAuLBAANQAAAKorEABnAAAAfgEAABkAAACCAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcG9vbC5ycwCILBAAZwAAAF4CAAAcAAAAiCwQAGcAAABrAgAAMgAAAIgsEABnAAAAbwIAABcAAACILBAAZwAAAAEDAAAVAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvc2VhcmNoLnJzaW52YWxpZCBzcGFuICBmb3IgaGF5c3RhY2sgb2YgbGVuZ3RoIAAAmS0QAA0AAACmLRAAGAAAADAtEABpAAAAqgEAAAkAAAAuLi5hYnN0cmFjdGNsYXNze30vcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAAAA8i0QAE8AAADiBQAAFAAAAPItEABPAAAA4gUAACEAAADyLRAATwAAANYFAAAhAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5yc3QuEABYAAAAwQcAAAkAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMA3C4QAEsAAADoAQAAFwAAANwuEABLAAAAWAQAABIAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9jb2RlZ2VuLTE2LjAuMC9zcmMvbGliLnJzYAAAAEgvEABkAAAA8wcAACIAAAAkewAASC8QAGQAAAD2BwAAIQAAAHN1cGVyZnVuY3Rpb25hc3luYyppbXBvcnQuc291cmNlZGVmZXIAAABILxAAZAAAAGcHAAAXAAAALFtdKCk/OnRoaXM9PmF3YWl0eWllbGQNCgoAAEgvEABkAAAAJggAADIAAABILxAAZAAAAB8IAAAwAAAAbmV3LnRhcmdldGltcG9ydC5tZXRhPy4A8i0QAE8AAABmBAAAJAAAAPItEABPAAAAzgEAADcAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAQAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAfysQAIArEACCKxAAhCsQAIYrEACIKxAAiisQAI0rEACQKxAAlCsQAJYrEACYKxAAmisQAJ0rEACgKxAAoysQAGsrEABsKxAAbSsQAG4rEAAGAAAABAAAAAYAAABvKxAAdSsQAHkrEAB9eyw6L3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9zdGQvc3JjL2lvL2ltcGxzLnJzACwxEABLAAAA+AEAAA4AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9iYXNlNjQtMC4yMi4xL3NyYy9jaHVua2VkX2VuY29kZXIucnMAAIgxEABmAAAAKAAAADEAAACIMRAAZgAAACoAAAAqAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2hhcmRfYW1vdW50ID4gMS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Rhc2htYXAtNS41LjMvc3JjL2xpYi5yczIyEABaAAAAEQEAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzaGFyZF9hbW91bnQuaXNfcG93ZXJfb2ZfdHdvKCkyMhAAWgAAABIBAAAJAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0MS9zcmMvc2VyLnJzAAQzEABfAAAAgQIAACoAAAAEMxAAXwAAAKYCAAAqAAAAgwAAAIQAAACFAAAAhgAAAIcAAACIAAAAiQAAAIoAAACLAAAAjAAAAI0AAACOAAAAjwAAAIkAAACQAAAAkQAAAJIAAACTAAAAlAAAAJUAAACJAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2NvbW1vbi0xNC4wLjIvc3JjL3NvdXJjZV9tYXAucnMAAADYMxAAZQAAADUFAABKAAAA2DMQAGUAAABiBQAAJgAAACInWyEveyh+LSsjYCovaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9jb2RlZ2VuLTE2LjAuMC9zcmMvbW9kdWxlX2RlY2xzLnJzdHlwZWFzZXhwb3J0ZnJvbXdpdGhhc3NlcnRpbXBvcnRzb3VyY2VkZWZlcix9AG00EABtAAAAmQAAACAAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLnNwZWNpZmllcnMubGVuKCkgPD0gMm00EABtAAAApwAAABUAAABtNBAAbQAAAFkBAAAoAAAAbm90IGltcGxlbWVudGVkOiBjb2RlZ2VuIG9mIGBleHBvcnQgZGVmYXVsdCBmcm9tICdmb28nO2BkNRAAOAAAAG00EABtAAAA/QAAABEAAABkZWZhdWx0Li4uOl0/PWRlY2xhcmVhc3luY2Z1bmN0aW9uYXdhaXR1c2luZwAAAAAIAAAABAAAAJYAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAAAAAAAEAAAABAAAAJcAAABOb0ZpbGVGb3IvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWdpbnQucnMAAAA1NhAAYAAAAGwDAAAPAAAAAAAAAAQAAAAAAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9jb252ZXJ0LnJzAAAAtDYQAGkAAADwAQAAFgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0MS9zcmMvc2VyLnJzADA3EABfAAAAqQgAABYAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9jb2RlZ2VuLTE2LjAuMC9zcmMvdGV4dF93cml0ZXIvYmFzaWNfaW1wbC5yczsgAAAAoDcQAHcAAAByAAAAGgAAAKA3EAB3AAAAiwAAABgAAABmYWxzZXRydWVudWxsL3VzZSBzdHJpY3RzY3JpcHRcdXs8IS0tXHgzYyEtLS0tPi0tXHgzZW4tMHgAAAByOBAAAwAAADB4AACAOBAAAgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19jb21waWxlcl9iYXNlLTMwLjAuMC9zcmMvbGliLnJzCgAAmQAAAEAAAAAEAAAAmgAAAJsAAACcAAAAnQAAAJ4AAACeAAAAnwAAAJ8AAACgAAAAoQAAAJ8AAAChAAAAnwAAAKIAAACeAAAAowAAAKQAAAClAAAApgAAAKcAAAAUAAAABAAAAKgAAACpAAAAqgAAAKsAAACsAAAArQAAAK4AAACvAAAAsAAAALEAAACyAAAAswAAALQAAAC1AAAAtgAAALcAAAC4AAAAuQAAALoAAABmYWlsZWQgdG8gZW1pdCBtb2R1bGVpbnZhbGlkIHV0ZjggY2hhcmFjdGVyIGRldGVjdGVkjDgQAGUAAADgAAAAIAAAAIw4EABlAAAACAEAABUAAABmYWlsZWQgdG8gd3JpdGUgc291cmNlIG1hcHNvdXJjZSBtYXAgaXMgbm90IHV0Zi04Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPQCMOBAAZQAAABoBAAARAAAAZmFpbGVkIHRvIHdyaXRlIHNvdXJjZSBtYXAgZmlsZQovLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LAEAAUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky//////////////////////////////////////////////////////////Pv///z80NTY3ODk6Ozw9/////////wABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZ////////GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ZmFpbGVkIHRvIHNlcmlsYWl6ZSBvdXRwdXQvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L3N0ZC9zcmMvaW8vaW1wbHMucnMAAP87EABLAAAA+AEAAA4AAAC7AAAADAAAAAQAAAC8AAAAvQAAAAUAQfz4wAALhRIBAAAAvgAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAALs8EABLAAAA0QoAAA4AAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzABg9EABPAAAA4gUAABQAAAAYPRAATwAAAOIFAAAhAAAAGD0QAE8AAADWBQAAIQAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXm/AAAAFAAAAAQAAADAAAAAwQAAAAgAAAAEAAAAwgAAAEVycm9yAAAAuzwQAEsAAADoAQAAFwAAALs8EABLAAAAWAQAABIAAAC7PBAASwAAAH8FAAAaAAAAuzwQAEsAAAB9BQAAGwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQucnM8aW52YWxpZD4AAMMAAAAMAAAABAAAAMQAAAAAAAAABAAAAAQAAADFAAAARnJvbVV0ZjhFcnJvcmJ5dGVzZXJyb3JpbnZhbGlkIHV0Zi04KD4QAGEAAAAsAAAAHQAAAMYAAAAQAAAABAAAAMcAAADGAAAAEAAAAAQAAADIAAAAxwAAAOg+EADJAAAAygAAAMsAAADJAAAAzAAAAM0AAAAMAAAABAAAAM4AAADNAAAADAAAAAQAAADPAAAAzgAAACQ/EADQAAAA0QAAAMsAAADQAAAAzAAAANIAAAAcAAAABAAAANMAAADSAAAAHAAAAAQAAADUAAAA0wAAAGA/EADVAAAA1gAAAMsAAADVAAAAzAAAANcAAAAEAAAABAAAANgAAADXAAAABAAAAAQAAADZAAAA2AAAAJw/EADaAAAA2wAAAMsAAADcAAAAzAAAAN0AAAAsAAAABAAAAN4AAADdAAAALAAAAAQAAADfAAAA3gAAANg/EADgAAAA4QAAAOIAAADjAAAA5AAAAOUAAAA4AAAABAAAAN4AAADlAAAAOAAAAAQAAADfAAAA3gAAABRAEADgAAAA5gAAAOIAAADjAAAA5AAAAOcAAAAoAAAABAAAAN4AAADnAAAAKAAAAAQAAADfAAAA3gAAAFBAEADgAAAA6AAAAOIAAADjAAAA5AAAAAAAAAAEAAAABAAAAOkAAABjb250ZXh0ANcAAAAEAAAABAAAANkAAABzb3VyY2UAAMEAAAAIAAAABAAAAOoAAADBAAAACAAAAAQAAADCAAAA6gAAALxAEADrAAAA7AAAAO0AAADuAAAAzAAAAL8AAAAUAAAABAAAAO8AAAC/AAAAFAAAAAQAAADAAAAA7wAAAPhAEADwAAAA8QAAAPIAAADzAAAAzAAAACMhAAAYPRAATwAAAGYEAAAkAAAAGD0QAE8AAADOAQAANwAAAAAAAAAEAAAABAAAAPQAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAGhBEABPAAAAzgEAADcAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2Nfbm9kZV9jb21tZW50cy0xNC4wLjAvc3JjL2xpYi5ycwAAAMhBEABlAAAAGAAAAC4AAADIQRAAZQAAABwAAAAuAAAAyEEQAGUAAAAsAAAAMgAAAMhBEABlAAAALAAAABUAAADIQRAAZQAAADwAAAAvAAAAyEEQAGUAAABAAAAALwAAAMhBEABlAAAAUAAAADMAAADIQRAAZQAAAFAAAAAVAAAAyEEQAGUAAABoAAAAFQAAACNfX0BfX19fyEEQAGUAAACVAAAALQAAACNfX1BVUkVfX0hhc2ggdGFibGUgY2FwYWNpdHkgb3ZlcmZsb3cAAADhQhAAHAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2hhc2hicm93bi0wLjE0LjUvc3JjL3Jhdy9tb2QucnMAAAAIQxAAYQAAAFYAAAAoAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZGFzaG1hcC01LjUuMy9zcmMvbWFwcmVmL2VudHJ5LnJzAHxDEABjAAAAiAAAADcAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMA8EMQAEsAAABYBAAAEgAAAGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4TEQQACAAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5yc3REEABcAAAAEwAAAAkAAAD2AAAA9wAAAPgAAAD5AAAA+gAAAPsAAAD8AAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwD8RBAATwAAAM4BAAA3AAAA/EQQAE8AAAAKAgAANwAAAP0AAAAMAAAABAAAAP4AAAD/AAAABQBBjIvBAAuGEQEAAAAAAQAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAy0UQAEsAAADRCgAADgAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMoRhAAWAAAAMEHAAAJAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWVFcnJvcstFEABLAAAAfwUAABoAAADLRRAASwAAAH0FAAAbAAAAy0UQAEsAAABYBAAAEgAAAAAAAAAEAAAABAAAABMAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZXJyb3JfcmVwb3J0ZXJzLTE2LjAuMS9zcmMvZGlhZ25vc3RpYy5ycwAAKEcQAG4AAAA3AAAAKQAAAAAAAAAIAAAABAAAAAEBAAACAQAAEAAAAAQAAAADAQAABAEAAAUBAAAGAQAAAAAAAAgAAAAEAAAABwEAAAgBAAAJAQAACgEAAAAAAAAMAAAABAAAAAsBAAAAAAAADAAAAAQAAAAMAQAACwEAAPBHEAANAQAADgEAAA8BAAANAQAAEAEAAA0BAAARAQAADQEAAA0BAAASAQAAEwEAAA0BAAANAQAAFAEAABgAAAAEAAAAFQEAABQBAAAYAAAABAAAABYBAAAVAQAATEgQAA0BAAAXAQAADwEAAA0BAAAQAQAAGAEAABkBAAAaAQAADQEAABsBAAAcAQAAHQEAAA0BAAAoRxAAbgAAAF0AAAAuAAAAKEcQAG4AAABtAAAAFwAAACAAAAAeAQAALAAAAAQAAAAfAQAAIAEAACEBAAAiAQAAIwEAACQBAAANAQAAKEcQAG4AAADlAAAAKgAAAAIBAAAQAAAABAAAAAMBAAAEAQAABQEAAAYBAAACAgICAQAAAwIvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfY29tbW9uLTE0LjAuMi9zcmMvc291cmNlX21hcC5ycwAAKUkQAGUAAAB6AgAAFAAAAClJEABlAAAAogIAADwAAAApSRAAZQAAAJECAAA+AAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwDASRAATwAAAM4BAAA3AAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5ycyBKEABYAAAAwQcAAAkAAABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5RXJyb3JCdWdGYXRhbFBoYXNlRmF0YWxXYXJuaW5nTm90ZUhlbHBDYW5jZWxsZWRGYWlsdXJlTm90ZU5vbmUAAAAAAAAEAAAABAAAACUBAABTb21lJgEAABAAAAAEAAAAJwEAACYBAAAQAAAABAAAACgBAAAnAQAABEsQACkBAAAqAQAAKwEAACwBAAAtAQAALgEAACwAAAAEAAAALwEAAC4BAAAsAAAABAAAADABAAAvAQAAQEsQADEBAAAyAQAAMwEAADQBAAA1AQAAAAAAAAQAAAAEAAAANgEAAGNvbnRleHQANwEAAAQAAAAEAAAAOAEAAHNvdXJjZQAAOQEAAAwAAAAEAAAAOgEAAAAAAAAEAAAABAAAADsBAABNdWx0aVNwYW5wcmltYXJ5X3NwYW5zc3Bhbl9sYWJlbHMAAAAAAAAABAAAAAQAAAA8AQAAPQEAAAwAAAAEAAAAPgEAAD8BAAAQAAAABAAAAEABAABBAQAAGAAAAAQAAABCAQAAQwEAAAwAAAAEAAAARAEAAAAAAAAEAAAABAAAAEUBAABsZXZlbG1lc3NhZ2Vjb2Rlc3BhbmNoaWxkcmVuc3VnZ2VzdGlvbnMAUEwQAAUAAABVTBAABwAAAFxMEAAEAAAAYEwQAAQAAABkTBAACAAAAGxMEAALAAAARGlhZ25vc3RpYy9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lcnJvcl9yZXBvcnRlcnMtMTYuMC4xL3NyYy9oYW5kbGVyLnJzAAAAskwQAGsAAAAcAAAADgAAAAMAAAAFAAAACgAAAAUAAAAHAAAABAAAAAQAAAAJAAAACwAAALVKEAC4ShAAvUoQALBKEADHShAAzkoQANJKEADWShAA30oQAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3VuaWNvZGUtd2lkdGgtMC4xLjE0L3NyYy90YWJsZXMucnN4TRAAZAAAAJEAAAAVAAAAeE0QAGQAAACXAAAAGQAAAFEBAAAMAAAABAAAAFIBAABTAQAAVAEAQZycwQALqREBAAAAVQEAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAFtOEABLAAAA0QoAAA4AAABGb3JtYXR0aW5nIGFyZ3VtZW50IG91dCBvZiByYW5nZbhOEAAgAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIz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cwAAzFUQAEoAAAC+AQAAHQAAABtbOzEyMzQ1Njc4OW0bWzBtAAAAAQAAAAAAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9vd28tY29sb3JzLTQuMi4yL3NyYy9zdHlsZWRfbGlzdC5ycwAAAERWEABlAAAAbQAAACAAAAABAAAAAAAAAAEAQdStwQALxgEBAAAAWAEAAAAAAAAEAAAABAAAAFkBAABJb0Vycm9yT3V0T2ZCb3VuZHMvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi91bmljb2RlLXdpZHRoLTAuMS4xNC9zcmMvdGFibGVzLnJzAAD+VhAAZAAAAJEAAAAVAAAA/lYQAGQAAACXAAAAGQAAAFsBAAAMAAAABAAAAFwBAABdAQAAVAEAQaSvwQAL2QUBAAAAXgEAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAONXEABLAAAA0QoAAA4AAABGb3JtYXR0aW5nIGFyZ3VtZW50IG91dCBvZiByYW5nZUBYEAAgAAAARXJyb3IAAADjVxAASwAAAH8FAAAaAAAA41cQAEsAAAB9BQAAGwAAAONXEABLAAAAWAQAABIAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAoFgQAEoAAAC+AQAAHQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21pZXR0ZS03LjYuMC9zcmMvaGFuZGxlcnMvZ3JhcGhpY2FsLnJz/FgQAGgAAAAkBAAALgAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAD8WBAAaAAAAIcEAAAWAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5yc6xZEABYAAAAgwgAABsAAACsWRAAWAAAAIEIAAAaAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAACRaEABKAAAAvgEAAB0AQYi1wQAL4MABAQAAAF8BAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvdW5zdGFibGUvcXVpY2tzb3J0LnJzAAAAkFoQAGEAAAA5AAAAGwAAAGF0dGVtcHQgdG8gam9pbiBpbnRvIGNvbGxlY3Rpb24gd2l0aCBsZW4gPiB1c2l6ZTo6TUFYL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAAAAOVsQAEgAAACaAAAACgAAADlbEABIAAAAnQAAABYAAAA5WxAASAAAAKAAAAAMAAAAbWlkID4gbGVuAAAAtFsQAAkAAAA5WxAASAAAALEAAAAWAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAANhbEABKAAAACwIAABcAAADYWxAASgAAAA4CAAANAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAADYWxAASgAAAAoCAAAyAAAAYAEAAAwAAAAEAAAAYQEAAGIBAABUAQAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAIBcEABLAAAAfwUAABoAAACAXBAASwAAAH0FAAAbAAAAgFwQAEsAAABYBAAAEgAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAAD8XBAASgAAAL4BAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdW5pY29kZS13aWR0aC0wLjIuMS9zcmMvdGFibGVzLnJzAFhdEABjAAAAtwAAABUAAABYXRAAYwAAAL0AAAAZAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdGV4dHdyYXAtMC4xNi4yL3NyYy9jb3JlLnJzAAAA3F0QAF0AAAArAQAAKQAAANxdEABdAAAAOgEAACUAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi90ZXh0d3JhcC0wLjE2LjIvc3JjL3dvcmRfc3BsaXR0ZXJzLnJzAFxeEABnAAAAtQAAACgAAABcXhAAZwAAALcAAAAlAAAAXF4QAGcAAAC4AAAALwAAAC0AAABcXhAAZwAAAMIAAAAlAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdW5pY29kZS13aWR0aC0wLjIuMS9zcmMvdGFibGVzLnJzAAhfEABjAAAAtwAAABUAAAAIXxAAYwAAAL0AAAAZAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAIxfEABLAAAA6AEAABcAAACMXxAASwAAAFgEAAASAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdGV4dHdyYXAtMC4xNi4yL3NyYy9jb3JlLnJzAAAA+F8QAF0AAAAMAQAAHgAAAPhfEABdAAAAawEAAB0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi90ZXh0d3JhcC0wLjE2LjIvc3JjL3dvcmRfc3BsaXR0ZXJzLnJzAHhgEABnAAAAtQAAACgAAAB4YBAAZwAAALcAAAAlAAAAeGAQAGcAAAC4AAAALwAAAC0AAAB4YBAAZwAAAMIAAAAlAAAADQoKL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycy9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAAB2YRAAUAAAAC4CAAARAAAAJ2EQAE8AAADOAQAANwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3RleHR3cmFwLTAuMTYuMi9zcmMvd29yZF9zcGxpdHRlcnMucnMA6GEQAGcAAACNAAAAJAAAAOhhEABnAAAAjgAAACQAAADoYRAAZwAAAJMAAAAgAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5yc4BiEABYAAAAwQcAAAkAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMA6GIQAEsAAADoAQAAFwAAAOhiEABLAAAAfwUAABoAAADoYhAASwAAAH0FAAAbAAAAAAAAABwAAAAEAAAAYwEAAGQBAABlAQAAZgEAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3RleHR3cmFwLTAuMTYuMi9zcmMvd29yZF9zZXBhcmF0b3JzLnJzgGMQAGgAAADRAAAAKAAAAIBjEABoAAAAxwAAACwAAABnAQAALAAAAAQAAABoAQAAZAEAAGkBAABqAQAAgGMQAGgAAAALAQAAHAAAAIBjEABoAAAAKgEAACgAAACAYxAAaAAAACMBAAAsAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwBUZBAATwAAAOIFAAAUAAAAVGQQAE8AAADiBQAAIQAAAFRkEABPAAAA1gUAACEAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJz1GQQAFgAAADBBwAACQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwA8ZRAASwAAAFgEAAASAAAAVGQQAE8AAABmBAAAJAAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAACoZRAASgAAAL4BAAAdAAAADQoKL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdGV4dHdyYXAtMC4xNi4yL3NyYy93cmFwLnJzB2YQAF0AAADOAAAADwAAAAdmEABdAAAA7gAAABoAAAAHZhAAXQAAAPsAAAAXAAAAB2YQAF0AAAAXAQAAGAAAAAdmEABdAAAAHQEAAA8AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi91bmljb2RlLWxpbmVicmVhay0wLjEuNS9zcmMvbGliLnJztGYQAGQAAABhAAAAFwAAALRmEABkAAAANQAAABgAAAC0ZhAAZAAAADkAAAAaAAAAtGYQAGQAAAA+AAAABQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3VuaWNvZGUtbGluZWJyZWFrLTAuMS41L3NyYy9saWIucnNYZxAAZAAAAGEAAAAXAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAMxnEABKAAAAvgEAAB0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi90ZXh0d3JhcC0wLjE2LjIvc3JjL3dyYXBfYWxnb3JpdGhtcy5ycyhoEABoAAAAYwEAABoAAAAoaBAAaAAAAGMBAAALAAAAKGgQAGgAAABdAQAAIgAAAChoEABoAAAAXQEAABMAAAADAwMDAwMDAwMMAgAAAQMDAwMDAwMDAwMDAwMDAwMDAwkSFh0aGR0WFREdGhcOFxsYGBgYGBgYGBgYFxcdHR0SHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dFRoRHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0VDBAdAwMDAwMEAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMIFRkaGhodHBwdHBYdDB0dGRocHA0dHBwcHBwWHBwcFR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHB0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0cHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRwNHBwcDRwdHRwdHR0dHR0dHBwcHB0cHQ0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMIAwMDAwMDAwMDAwMDCAgICAgICAMDAwMDAwMDAwMDAwMdHR0dHR0dHSoqHR0dHRcdKioqKh0dHR0dHR0qHSodHR0dHR0dHR0dHR0dHR0dHR0dHSodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMDAwMdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRcMKiodHRoqAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDDAMdAwMdAwMSAyoqKioqKioqIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjKioqKiMjIyMdHSoqKioqKioqKioqHR0dHR0dHR0dGRkZFxcdHQMDAwMDAwMDAwMDEgMSEhIdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMDAwMDAwMDAwMDAwMDAwMDAxgYGBgYGBgYGBgZGBgdHR0DHR0dHR0dHR0dHR0dHR0dHR0dHR0SHQMDAwMDAwMdHQMDAwMDAx0dAwMdAwMDAx0dGBgYGBgYGBgYGB0dHR0dHR0dHR0dHR0dKh0dAx0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMDAwMDAwMDAwMDAwMqKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMDAwMDAwMDHSoqKioqKioqKioqKioqGBgYGBgYGBgYGB0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMDAwMDAx0dHR0XEh0qKgMaGh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0DAwMDHQMDAwMDAwMDAx0DAwMdAwMDAwMqKh0dHR0dHR0dHR0dHR0dHSodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAwMDKiodKh0dHR0dHR0dHR0dKioqKiodHR0dHR0dHR0dHR0dHR0dKh0dKioqKioqAwMDAwMDAwMdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAx0DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAx0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAx0DAwMDAwMDAwMDAwMDAwMDHQMDAwMDAwMdHR0dHR0dHR0dAwMMDBgYGBgYGBgYGBgdHR0dHR0dHR0dHR0dHR0dAwMDKh0dHR0dHR0dKiodHSoqHR0dHR0dHR0dHR0dHR0dHR0dHR0dHSodHR0dHR0dKh0qKiodHR0dKioDHQMDAwMDKioDAyoqAwMDHSoqKioqKioqAyoqKiodHSodHR0DAyoqGBgYGBgYGBgYGB0dGRkdHR0dHRkdGh0dAyoDAwMqHR0dHR0dKioqKh0dKiodHR0dHR0dHR0dHR0dHR0dHR0dHR0dKh0dHR0dHR0qHR0qHR0qHR0qKgMqAwMDKioqKgMDKioDAwMqKioDKioqKioqKh0dHR0qHSoqKioqKioYGBgYGBgYGBgYAwMdHR0DHSoqKioqKioqKgMDAyodHR0dHR0dHR0qHR0dKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qHR0dHR0dHSodHSodHR0dHSoqAx0DAwMDAwMqAwMDKgMDAyoqHSoqKioqKioqKioqKioqKh0dAwMqKhgYGBgYGBgYGBgdGioqKioqKiodAwMDAwMDKgMDAyodHR0dHR0dHSoqHR0qKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qHR0dHR0dHSodHSodHR0dHSoqAx0DAwMDAyoqAwMqKgMDAyoqKioqKioDAwMqKioqHR0qHR0dAwMqKhgYGBgYGBgYGBgdHR0dHR0dHSoqKioqKioqAx0qHR0dHR0dKioqHR0dKh0dHR0qKiodHSodKh0dKioqHR0qKiodHR0qKiodHR0dHR0dHR0dHR0qKioqAwMDKioqAwMDKgMDAwMqKh0qKioqKioDKioqKioqKioqKioqKioYGBgYGBgYGBgYHR0dHR0dHR0dGh0qKioqKgMDAwMDHR0dHR0dHR0qHR0dKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKh0dHR0dHR0dHR0dHR0dHR0qKgMdAwMDAwMqAwMDKgMDAwMqKioqKioqAwMqHR0dKiodKiodHQMDKioYGBgYGBgYGBgYKioqKioqKg0dHR0dHR0dHQMDAw0dHR0dHR0dHSodHR0qHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qHR0dHR0dHR0dHSodHR0dHSoqAx0DAwMDAyoDAwMqAwMDAyoqKioqKioDAyoqKioqKh0dKh0dAwMqKhgYGBgYGBgYGBgqHR0DKioqKioqKioqKioqAwMDAx0dHR0dHR0dHSodHR0qHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0DAx0DAwMDAyoDAwMqAwMDAx0dKioqKh0dHQMdHR0dHR0dHR0dAwMqKhgYGBgYGBgYGBgdHR0dHR0dHR0ZHR0dHR0dKgMDAyodHR0dHR0dHR0dHR0dHR0dHR0qKiodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qHR0dHR0dHR0dKh0qKh0dHR0dHR0qKioDKioqKgMDAwMDAyoDKgMDAwMDAwMDKioqKioqGBgYGBgYGBgYGCoqAwMdKioqKioqKioqKiopKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKioqKhopKSkpKSkpKSkpKSkpKSkdGBgYGBgYGBgYGAwMKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKSkqKSopKSkpKSopKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkqKSopKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSoqKSkpKSkqKSopKSkpKSkpKhgYGBgYGBgYGBgqKikpKSkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKh0NDQ0NHQ0NCA0NDAgSEhISEggdEh0dHQMDHR0dHR0dGBgYGBgYGBgYGB0dHR0dHR0dHR0MAx0DHQMVEBUQAwMdHR0dHR0dHSodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qKioqAwMDAwMDAwMDAwMDAwMMAwMdHR0dHQMDAwMDAwMDAwMDKgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyoMDB0dHR0dHQMdHR0dHR0qHR0NDQwNHR0dHR0ICCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpGBgYGBgYGBgYGAwMHR0dHSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKRgYGBgYGBgYGBgpKSkpKSkdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHSodKioqKiodKiodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0lJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJicnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycdHR0dHR0dHR0qHR0dHSoqHR0dHR0dHSodKh0dHR0qKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKh0dHR0qKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHSodHR0dKiodHR0dHR0dKh0dHR0qKh0dHR0dHR0dHR0dHR0dHSodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKh0dHR0qKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qKgMDAx0MHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKioqKioqHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKiodHR0dHR0qKgwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0MHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0VECoqKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0MDAwdHR0dHR0dHR0dHSoqKioqKiodHR0dHR0dHR0dHR0dHR0dHR0DAwMDKioqKioqKioqHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwwMKioqKioqKioqHR0dHR0dHR0dHR0dHR0dHR0dAwMqKioqKioqKioqKiodHR0dHR0dHR0dHR0dKh0dHSoDAyoqKioqKioqKioqKikpKSkpKSkpKSkpKSkpKSkpKSkpDAwUKQwdDBopKSoqGBgYGBgYGBgYGCoqKioqKh0dHR0dHR0dHR0qKioqKiodHRISDAwNHRISHQMDAwgDGBgYGBgYGBgYGCoqKioqKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHSoqKioqKiodHR0dHQMDHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMdKioqKiodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qKioqKioqKioqHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHSoDAwMDAwMDAwMDAwMqKioqAwMDAwMDAwMDAwMDKioqKh0qKioSEhgYGBgYGBgYGBgpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkqKikpKSkpKioqKioqKioqKiopKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSoqKiopKSkpKSkpKSkpKSkpKSkpKioqKioqGBgYGBgYGBgYGCkqKiopKR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAwMDAwMqKh0dKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkqKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkqKgMYGBgYGBgYGBgYKioqKioqGBgYGBgYGBgYGCoqKioqKikpKSkpKSkpKSkpKSkpKioDAwMDAwMDAwMDAwMDAwMDKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgMDAwMDHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0DAwMDAwMDAwMDAwMdHR0dHR0dHSoqKhgYGBgYGBgYGBgMDB0MDAwMHR0dHR0dHR0dHQMDAwMDAwMDAx0dHR0dHR0dHQwMKgMDAx0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMDAwMDAwMDAwMdHRgYGBgYGBgYGBgdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMDAwMDAwMDAwMDKioqKioqKiodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0DAwMDAwMDAwMDAwMDAwMDAwMDAyoqKgwMDAwMGBgYGBgYGBgYGCoqKh0dHRgYGBgYGBgYGBgdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0MDB0dHR0dHR0dHSoqKioqKiodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKiodHR0dHR0dHSoqKioqKioqAwMDHQMDAwMDAwMDAwMDAwMDAwMDAwMDAx0dHR0DHR0dHR0dAx0dAwMDHSoqKioqAwMDAwMDAwMDAwMDAwgDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDCAMDAx0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qKh0dHR0dHSoqHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qKh0dHR0dHSoqHR0dHR0dHR0qHSodKh0qHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHSoqHR0dHR0qHR0dHR0dHR0dHR0dHR0qKh0dHR0dHSodHR0dHR0dHR0dHR0dHR0dHR0dKiodHR0qHR0dHR0dHQ0dKgwMDAwMDAwIDAwMBwMKAwMMCAwMCxwcHRYWFRYWFhUWHBwdHRMTEwwAAAMDAwMDCBkZGRkZGRkZHRYWHBQUHR0dHRcVEBQUFB0dHR0dHR0dHR0dHQwZDAwMDB0MDAwGHR0dHSoDAwMDAwMDAwMDHR0qKhwdHR0dHR0dHRUQHB0cHBwcHR0dHR0dHR0VECodHR0dHR0dHR0dHR0dKioqGhoaGhoaGhkaGhoaGhoaGhoaGhoaGhkaGhoaGRoaGRoaGhoaGhoaGhoaGhoaGgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyoqKioqKioqKioqKioqKh0dHRkdHB0dHRkdHR0dHR0dHR0cHR0aHR0dHR0dHR0dHRwcHR0dHR0dHR0cHR0dHR0dHR0dHR0dHR0dHR0dHR0cHB0dHR0dHB0dHB0cHBwcHBwcHBwcHBwdHR0dHBwcHBwcHBwcHB0dHR0dHR0dHRwdHSoqKiocHBwcHBwcHBwcHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0cHRwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHB0cHB0dHRwcHR0cHR0dHB0cGhodHB0dHR0cHR0cHBwcHR0cHRwdHBwcHBwcHRwdHR0dHRwcHBwdHR0dHBwdHR0dHR0dHRwdHR0cHR0dHR0cHR0dHR0dHR0dHR0dHRwcHR0cHBwcHR0cHB0dHBwdHR0dHR0dHR0dHR0dHR0dHBwdHRwcHR0dHR0dHR0dHR0dHRwdHR0cHR0dHR0dHR0dHR0cHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRMdHR0dHR0dHR0dHR0dHR0dFRAVEB0dHR0dHRwdHR0dHR0dJCQdHR0dHR0dHR0dHR0dFRAdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0kJCQkHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKioqKioqKioqKioqKioqKioqKioqKioqKh0dHR0dHR0dHR0dKioqKioqKioqKioqKioqKioqKioqHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0dHR0cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHR0dHR0dHR0dHR0cHBwcHBwcHBwcHBwcHBwcHR0cHBwcHR0dHR0dHR0dHRwcHRwcHBwcHBwdHR0dHR0dHRwcHR0cHB0dHR0cHB0dHR0cHBwdHRwdHRwcHBwdHR0dHR0dHR0dHR0dHR0dHBwcHB0dHR0dHR0dHRwdHR0dHR0dHR0dHR0dHR0dJCQkJB0cHB0dHB0dHR0cHB0dHR0kJBwcJB0kJCQfJCQdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dJCQkHR0dHRwdHB0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHBwdHBwcHRwkHBwdHBwdHB0dHR0dHR0dHR0dHR0dHSQdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0cHB0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dJCQkJCQkJCQkHBwcHCQdJCQkHCQkHBwcJCQcHCQcHCQkJB0cHR0dHRwcJBwcHBwcHCQkJCQkHCQkHyQcHCQkJCQkHR0dJCQfHx8fHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0cHR0dFhYWFhYWHRISJB0dHRUQFRAVEBUQFRAVEBUQHBwcHBwcHBwcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRUQHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRUQFRAVEBUQFRAdHR0dHR0dHR0dHR0dHR0dFRAVEBUQFRAVEBUQFRAVEBUQFRAVEB0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRUQFRAdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRUQHR0dHR0dHR0dHR0dHR0dHR0dHR0dHBwcHBwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHSoqHR0dHR0dHR0dHR0dHR0dHR0dHR0dHSodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAx0dKioqKioSDAwMHRIMHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0qHSoqKioqHSoqHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHSoqKioqKiodDCoqKioqKioqKioqKioqAx0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKioqKioqKioqHR0dHR0dHSodHR0dHR0dKh0dHR0dHR0qHR0dHR0dHSoDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxYWFhYWFhYWFhYWFhYWDAwMDAwMDAwdDBUMHR0WFh0dFhYVEBUQFRAVEAwMDAwSHQwMHQwMHR0dHR0LCwwMDB0MDBUMDAwMDAwMDB0MHQwMHR0dEhIVEBUQFRAVEAwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQqJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCoqKioqKioqKioqKiQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQqKioqKioqKioqKioqKioqKioqKioqKioqKiQkJCQkJCQkJCQkJCoqKioMEBAkJBQkJBUQFRAVEBUQFRAkJBUQFRAVEBUQFBUQECQkJCQkJCQkJCQDAwMDAwMkJCQkJAMkJCQkJBQUJCQkKh4kHiQeJB4kHiQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQeJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJB4kHiQeJCQkJCQkHiQkJCQkJB4eKioDAxQUFBQkFB4kHiQeJB4kHiQkJCQkJCQkJCQkJCQkJCQkJCQkJCQeJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJB4kHiQeJCQkJCQkHiQkJCQkJB4eJCQkJBQeFBQkKioqKiokJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKiQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCoqKioqKioqKioqKh4eHh4eHh4eHh4eHh4eHh4kJCQkJCQkJBwcHBwcHBwcJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkFCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCoqKiQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCoqKioqKioqKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0MDB0dHR0dHR0dHR0dHR0MEgwdHR0dHR0dHR0dHR0dHR0dGBgYGBgYGBgYGB0dKioqKioqKioqKioqKioqKioqKiodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMdAwMDAwMDAwMDAx0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAwMdDAwMDAwqKioqKioqKh0dHR0dHR0dHR0dKioqKiodHSodKh0dHR0dKioqKioqKioqKioqKioqKioqKioqKioqHR0dHR0dHR0dHR0dHR0DHR0dAx0dHR0DHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0DAwMDAx0dHR0DKioqHR0dHR0dHR0ZHSoqKioqKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0NDRISKioqKioqKioDAx0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAwMDAwMDAwMDAwMDKioqKioqKioMDBgYGBgYGBgYGBgqKioqKioDAwMDAwMDAwMDAwMDAwMDAwMdHR0dHR0dHR0dDR0dAxgYGBgYGBgYGBgdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAwMDAwMDAwMMDB0dHR0dHR0dHR0dHR0dHR0DAwMDAwMDAwMDAwMDKioqKioqKioqKiodJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUqKioDAwMDHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0DAwMDAwMDAwMDAwMDHR0dHR0dDAwMHR0dHSodGBgYGBgYGBgYGCoqKiodHSkpKSkpKSkpKSkpKSkpKSkYGBgYGBgYGBgYKSkpKSkqHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0DAwMDAwMDAwMDAwMDAyoqKioqKioqKh0dHQMdHR0dHR0dHQMDKioYGBgYGBgYGBgYKiodDAwMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkqKioqKioqKioqKioqKioqKioqKioqKiopKSkpKR0dHR0dHR0dHR0dAwMDAwMMDB0dHQMDKioqKioqKioqHR0dHR0dKiodHR0dHR0qKh0dHR0dHSoqKioqKioqKh0dHR0dHR0qHR0dHR0dHSodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHSoqKiodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQMDAwMDAwMDDAMDKioYGBgYGBgYGBgYKioqKioqISIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiEiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIhIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiISIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIioqKioqKioqKioqKiYmJiYmJiYmJiYmJiYmJiYqKioqJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyoqKioFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKh0dHR0dHR0qKioqKioqKioqKiodHR0dHSoqKioqIwMjIyMjIyMjIyMjHSMjIyMjIyMjIyMjIyMqIyMjIyMqIyojIyojIyojIyMjIyMjIyMjHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKioqKioqKioqKioqKioqKh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dEBUdHR0dHR0dHR0dHR0dHR0dKiodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKioqKioqKh0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKh0dHR0dHR0dHR0dHRkdHR0DAwMDAwMDAwMDAwMDAwMDFxAQFxcSEhUQEyoqKioqKgMDAwMDAwMDAwMDAwMDAwMkJCQkJBUQFRAVEBUQFRAVECQkFRAkJCQkJCQkECQQKhQUEhIkFRAVEBUQJCQkJCQkJCQqJBoZJCoqKiodHR0dHSodHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dKioGKhIkJBoZJCQVECQkECQQJCQkJCQkJCQkJCQUFCQkJBIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQVJBAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQVJBAkFRAQFRAQFCQeHh4eHh4eHh4eJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkFBQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKiokJCQkJCQqKiQkJCQkJCoqJCQkJCQkKiokJCQqKioZGiQkJBoaKh0dHR0dHR0qKioqKioqKioqAwMDDxwqKh0dHR0dHR0dHR0dKh0dKh0MDAwqKioqHR0dHR0dHR0dHR0dHQMqKh0dHR0dHQMDAwMDKioqKiodHR0dHR0dHR0dHR0dHSoMHR0dHR0qKioqKioqKioqKh0dHSodHSodHR0dHR0dHR0qHR0dHR0dHSodHSoqKh0qHR0dHR0dHR0dKioqKiodHR0dHR0qKh0qHR0dHR0dKh0dKioqHSoqHR0dHR0dKgwdHR0dHR0dHSodHSoqKioqHR0dHR0dHR0dHR0dKioqDB0DAwMqAwMqKioqKgMDAwMdHR0dHR0qKgMDAyoqKioDDAwMDAwMDAwdKioqKioqKh0dHR0dAwMqKioqHR0dHR0MDAwMDAwTKioqKioqKioqHR0dHR0dKioqDAwMDAwMDB0dKioqKioqKh0dHR0qKiodHR0dHR0dHR0dKgMDDCoqAx0dHR0dHR0dHSoqKioqKh0dAwMDAx0dHR0qKioqKioDAwMDAwMDDAwdHR0dHSoqAx0dAwMdKioqKioqKioqAwMDAwMDAwMDAwMdHR0MDAMqKioqKioqKioqHSoqAwMDAwMqGBgYGBgYGBgYGAwMDAwdAwMdKioqKioqKiodHR0DHQ0dKioqKioqKioqAx0dHR0MDB0MAwMDAx0DAxgYGBgYGBgYGBgdDR0MDAwDAwMDAwMDAwwMHQwMHQMdAyoqKioqKioqKioqKioqHR0dHR0dHSodKh0dHR0qHR0dHR0dHR0dDCoqKioqKgMDAwMqHR0dHR0dHR0qKh0qHR0qHR0dHR0qAwMdAwMdKioqKioqAyoqKioqHR0dAwMqKgMDAwMDAwMqKioDAwMDAwMDHR0dHQwMDAwdGBgYGBgYGBgYGAwMKh0DHQMDAwMdHR0dKioqKioqKioDAwMDAwMqKgMDAwMDAwMDDQwMEhIdHR0MDAwMDAwMDB0dHR0DAyoqAwwMHR0qKioqKioqKioqKg0NDQ0NDQ0NDQ0NDQ0qKioDAwMDAwMDAx0dKioqKioqGBgYGBgYGBgYGCkpDAwMKR0dHR0dHR0qKh0qKh0dHR0qHR0qHR0dHR0dHR0DAwMDAwMqAwMqKgMDAwMdAwMMDAwqKioqKioqKiodAwMDAwMDAyoqAwMDAwMDHQ0dAyoqKioqKioqKioqHR0dAwMDAwMDAx0DAwMDDR0MDAwMDR0DKioqKioqKiodAwMDAwMDAwMDAwMdHR0dAwMDAwMDAwMDAwwMDB0NDQwMKioqKioqKioqKioqKg0NDQ0NDQ0NDQ0qKioqKiodDAwMDAwqKioqKioqKioqDRIdHR0dHR0dHR0dHR0dHQMDAwMDAyoqKgMqAwMqAwMDAwMDHQMqKioqKioqKh0dHR0dHSodHSodHR0dHR0DAyoDAwMDAx0qKioqKioqHR0dAwMDAx0dKioqKioqKgMDHQMdHR0dHR0dHR0dHR0DAwMDAwMDKioqAwMDDAwkJCQkJCQkJCQkJB0dHR0dHR0dHR0dHR0ZGRkdHR0dHR0dHR0dHR0dHR0qKioqKioqKioqKioqDAwMDAwqKioqKioqKioqKh0dHR0dHR0dFRUVEBAQHR0QHR0dFRAVEB0dHR0dHR0dHRUQEB0dHR0ICAgICAgIFRAICAgVEBUQAx0dHR0dHQMDAwMDAwMDAxgYGBgYGBgYGBgqKioqDAwDAwMDAwwqKioqKioqKioqAwMDAwMDAwwMDB0dHR0dHQwdKioqKioqKioqKhgYGBgYGBgYGBgqHR0dHR0dHQwMHR0qKioqKgMDAwMDAwMDKioqKioqKgMUFBQUCCoqKioqKioqKioqHioqKioqKioqKioqKioeHh4qKh4qKioqKioqKioqHh4eHioqKioqKioqHR0dHR0dHR0dHSoqHQMDDB0dHR0dAwMDAwMdHR0DAwMdHQMDAwMDAwMdHR0dHR0dHR0dAwMDAx0dAwMDHSoqKioqKioqKiodKiodHSoqHR0dHSodHR0dHR0dHR0dKh0qHR0dHR0qHSoqKh0dHR0dHR0dHR0dHSoqGBgYGBgYGBgYGBgYGBgYGB0dHR0dAx0dHR0dHR0dHR0DHR0MDAwMHSoqKioqHR0dHR0dKioqKioDAwMDAwMDAwMqKgMDAwMDKgMDKgMDAwMDKioqKioDAwMDAwMDHR0dHR0dHSoqHR0dHR0dHR0dHR0dHR0DKhgYGBgYGBgYGBgqKioqKhodHR0dHR0dKh0dHR0qHR0qHR0dHQMDAwMDAwMdKioqKhgYGBgYGBgYGBgqKioqFRUZHR0dHSoqKioqKioqKioqHR0qHSoqHSodHR0dHR0dKh0dHR0qHSodKioqKh0qKioqHSodKh0qHR0dKh0dKh0qKh0qHSodKh0qHR0qHSoqHR0dHSodHR0dKh0dHR0qHSodHR0qHR0dHR0qHR0dHR0cHBwcHBwcHBwcHBwcJCQkHBwcHBwcHBwcHB0dHSQkJCQkJCgoKCgoKCgoKCgoKCgoKCgkJCQkJB8kJCQkJCQkJCQkJCQdHSQkJCQkHSQkJB8fHyQkHyQkHx8fJCQkJCQkJCQkJCQgICAgICQkHx8kJB8fHx8fHx8fHx8kJCQkJCQkJCQkJCQkJCQfHx8fHx8fHx8fJCQkHyQkJB8fHyQfHx8kJCQkJCQkHyQkJCQkJCQkJCQkJCQkHSQdJB0kJCQkJB8kJCQkHR0kJCQkJCQkJCQkJCQkHR0dHR0kJCQkJCQkJCQkJB8fJCQkJB8kJCQkJB8kJCQkHx8kJCQkJCQkJCQdHR0dHR0dHSQkJCQdHR0dHR0kJCQkJCQfHx8kJCQfHx8fHx0dHR0dHRYWFhQUFB0dHR0kJCQkHx8fJCQkJCQkJCQkJCQfJCQkHR0dHSQkJCQkJCQkJCQkJB0dHR0dHR0dHR0dHR8kJB8fHx8fHx8fHx8kJB8fHyQkJCQkHx8kHx8kHyQkJCQfHx8fHx8fHx8fHx8fJCQAAEAAfwC/APcA9wD3APcA9wD3APcAMAFwAaEB4QH3APcA9wAeAvcALgJfApYC1gIWA0sD9wB8A7YD6wMFBEUEhQTFBPYELAVoBaYF5QUjBmIGoAbfBh0HXQebB9kHFwhXCJUI1AgSCVIJkAnQCRAKTwqPCs4KDgtOC44LyAsIDEgMiAy4DPIMMg1SDXINmg33ANoNEQ5PDn4Oow7GDuYOJg/3APcA9wD3APcA9wD3APcA9wBmD4YPxg8GEEgMRhCGEKYQ5hAWEVYRlhHWEQwSNRJWEpYSxxIHE0ITghO8E/gTOBR4FLUU9wD3APcA9RT3APcA9wD3ADUVbxUpAq8V7xUtFm0WqxbrFhcXURd/F78X/Rc7GHsYsxj3APcA3hgSGVIZchlzGXIZphnmGSIaYhqiGuIaHxtcG4Ubuxv2G/cA9wD3APcA9wD3ADMcWxz3APcA9wD3APcAmRzPHPcA9wD3APcA5hwmHVYdlh22HfYdNh52HpEe0R7RHtEe+x47H3sfuB/1HzUg0R6BHmYgRiCmINEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe9wDRHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEg0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHgQhPSH3APcA9wD3AH0hvSH7IRsi9wD3APcAWyKZItkiGSNTI5MjzCMMJEskiyTLJEgMCCVHJXcl9wCnJecl7yX3Jf8l6yXzJfsl5yXvJfcl/yXrJfMl+yXnJe8l9yX/Jesl8yX7Jecl7yX3Jf8l6yXzJfsl5yXvJfcl/yXrJfMl+yXnJe8l9yX/Jesl8yX7Jecl7yX3Jf8l6yXzJfsl5yXvJfcl/yXrJfMl+yXnJe8l9yX/Jesl8yX7Jecl7yX3Jf8l6yXzJfsl5yXvJfcl/yXrJfMl+yXnJe8l9yX/Jesl8yX7Jecl7yX3Jf8l6yXzJfsl5yXvJfcl/yXrJfMl+yXnJe8l9yX/Jesl8yX7Jecl7yX3Jf8l6yXzJfsl5yXvJfcl/yXrJfMl+yXnJe8l9yX/Jesl8yX7Jecl7yX3Jf8l6yXzJfsl5yXvJfcl/yXrJfMl+yXnJe8l9yX/Jesl8yX7Jecl7yX3Jf8l6yXzJfsl5yXvJfcl/yXrJfMl+yXnJe8l9yX/Jesl8yX7Jecl7yX3Jf8l6yXzJTMmbCasJqwmrCasJqwmrCasJqwmrCasJqwmrCasJqwmrCasJqwmrCasJqwmrCasJqwmrCasJqwmrCasJqwmrCasJqwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbRHtEe0R7RHtEe0R7RHtEeLCdsJ/cAqSf3APcA9wD3ALwn9wD8JzQodCiwKPcA5igmKWQplSnUKWAKfgqbCroK2graCtoK2wraCtoK2grbCvsK+wr7CvsK+wr7CvsK+wr7CvsK+wr7CvsK+wr7CvsK+wr7CvsK+wr7CvsK+wr7CvsK+wr7CvsK+wr7CvsK+wr7CvsK+wr7CvsK+wr7CvsKGwv3AfcA/AEUKmgCaALsJuwm9wD3APcA9wD3APcA9wDlBCQq9wD3AOMJ9wD3APcA9wD0AdoJLQfsJuwm9wD3ACsq7CbsJuwm7CbsJuwm7CbsJvcA2gn3APcA9wAtBycCBwj3APcAqR33AOUE9wD3ADsq9wBLKvcA9wCfJVoq7CbsJvcA9wD3APcA9wD3APcA9wD3AGgCuwj3APcAnyX3AAcI9wD3AMsH9wD3APcAXCr4AfgBayoBAnkq7CbsJuwm7Cb3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3AEUR9wBGEcsH7Cb9AfcA9wCJKuwm7CbsJuwmmSr3APcAoyr3ALIq9wD3APcA9AEPA+wm7CbsJvcAvyr3AMoq9wDmBOwm7CbsJuwm9wD3APcAmyX3AHYC9wD3ANoq6Qb3AOoqtg/6KvcA9wD3APcA7CbsJvcA9wAKKxor9wD3APcAKiv3AHAC9wDtBPcAOisNA+wm7CbsJuwm7Cb3APcA9wD3ALYP7CbsJuwm9wD3APcANhn3APcA9wC8D/cA9wDUD7sI7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm9wD0AfcA9wBKKzcZ7CbsJuwm+hL3APcAywf3AGoBWivsJvcAaivsJuwm9wAHCOwm9wBFESUC9wD3AGgBeit2AmgLiislAvcA9wCZK6cr9wC2D7sIJQL3AGkBtyvHK/cA9wDXKyUC9wD3AG0B5yv3K+4BNBn3AAECZAEHLBYs7CbsJuwmJiz1ATUs9wD3AGEByxK7CEUsdQL6AVQsmwdkLHIs0RLsJuwm7CbsJuwm7CbsJuwm9wD3APcAawGCLJIsNxnsJvcA9wD3AHABoiy7COwm7CbsJuwm7CbsJuwm7CbsJuwm9wD3AGEBsizBLMos7CbsJvcA9wD3AHAB2iy7COos7Cb3APcAZQH6LLsI7CbsJuwmSAwBC34KCi0EJewm7CbsJuwm7CbsJuwm7CbsJuwm7Cb3APcAZAErBOwm7CbsJuwm7CbsJvcA9wD3APcArAMwJxotJi33ADYtRC27COwm7CbsJuwmbgL3APcAVC1jLewm8CH3APcAcy2DLZMt9wD3AGYBoy2yLfcA9wD3APcAtg/CLewm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJvoB9wBhAdkL0i2sA9oJ4i33AL0L2AvPEuwm7CbsJuwmCQf3APcA8S0ALrsIEC73AEISIC67COwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7Cb3ADAuQC7tAfcATC5aLrsI7CbsJuwm7CbsJi0H9wBqLnkuhy73APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA1g7sJuwm7CbsJuwm7Cb3APcA9wD3APcA9wD0AZYu9wD3APcA9wD3APcA9wD3APcA9wD3APcANRnsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJvcA9wD3APcA9wD3ADYZ9wD3APcA9wD3AKYu9wD3ALQu9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3AL4u9wD3APcA9wD3APcA9wD3AM4u3i7QEuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7Cb3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3AHMP9wD3APcA9wBFEewm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJvcA9wD3ALYP9wD0Ae4u9wD3APcA9wD0AbsI9wBoAv4u9wD3APcADi8aLyovAQLoBPcA7CbsJuwm7CbsJuwm7Cb3APcA9wD3APcANS/sJuwm7CbsJuwm7Cb3APcA9wD3AAgIbwFwAXABRS8lAuwm7CbsJuwmVS/UEtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEevR7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHvcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcARhHsJuwmvB7sJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJocG0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEeDh9jL+wmcy9/L9Ee0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHrke7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7Cb3APcA9wD3APcA9wDlBNoJtg+PL9IS7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwmcAFwAegDcAHPEvcA9wD3APcA9wD3APcANRnsJuwm7Cb3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wBGEfcA9wBvAvcA9wD3AJ8vcAGsL/cAuC/3APcA9wDlBOwm9wD3APcA9wDGL+wm7CbsJuwm7CbsJuwm9wA1GfcANRn3APcA9wD3APcARRH3ALYP7CbsJuwm7CbsJuwm7CbsJvcA9wD3APcA9wD+AfcA9wD3APYB1C/iL/8B9wD3APcA3Q2GBvcAEA7vL+0B9wD3APcA9wD3APcA9wD3APcA9wBwAvcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD5LwcwBzAHMHABcAFwAZgtcAFwAcQBFzAjMPwSpgLsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7Cb3APQBLzDsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJtkLPzBNMPcA9wD3AGgC7Cb4Euwm7CbsJuwm7CbsJuwm9wD3ANoJXTBbJOwm7CbsJuwm7CbsJuwm7CbsJuwm7Cb3AG0w7Cb3APcAZAF9MOwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm9wBkAbsI7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwmjTD0AfcA9wD3APcA9wD3APcA9wD3APcA9wD3AHECzxLsJuwm9wD3APcA9wCdMK0w7CbsJuwm7CbsJuwm7CbsJuwm7CbuAfcA9wBkKL0w7CbsJuwm7CbuAfcA9wBoAuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJv8B9wDMMNkw5zD3MAUxDTH5AQcIHDEHCOwm7CbsJjcZ7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbsJuwm7CbRHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHiwxchmkGXIZchlyGTwxchlyGXIZLDHRHtEe0R5JMU8x0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEeXzFlMdEebDF6MdEe0R6HMdEe0R7RHtEelzGmMbAxtzHGMdQx5DHyMdEe0R7RHtEeGBtjLgIyEBkVG9Ee0R4OMtEeHjLRHtEe0R4qMtEeNjLRHtEe0R7RHkEy9wD3AFEy0R7RHmExYTJnMtEe0R7RHvcA9wD3APcA9wD3APcAdzL3APcA9wD3APcAAjLRHtEeAhn3APcA9wAXGxUb9wD3ABcb9wAAGdEe0R7RHtEe0R6HMq4xzzGWMtEe0R7RHs4x0R7RHtEepTKpMbQy0R7RHvcA9wD3APcA9wB3MtEe0R7RHtEe0R7RHmIy0R7RHp4x9wD3APcA9wD3APcA9wD3APcAAAL3APcA5QTsJuwmuwjRHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHtEe0R7RHrceLQjsJnABcAFwAXABcAFwAewm7CbsJuwm7CbsJuwm7CZwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAHsJjUEVQR1BJUEtQTVBPUEDwUvBU8FbwWPBa8FzwXvBQoGKgYxBlEGgAOAA4ADgANmBioGhgajBoADgAOAA4ADgAPDBuAGgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAMqBgAHgAMcB8oAygDKAMoAygDKAMoAygA8B8oAXAdvB4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAegB7cHgAOAA4ADgAPXB4ADgAOAA4ADgAOAA4AD5wcHCCcIRwhdCCoGfQiAA40IrQjECNcI5wgHCYADIAlACWAJgAmgCcAJ4AkACsoAIArKAMoAygDKAMoAygDKAMoAygDKAMoAygDKAMoAygDKAMoAygDKAMoAygDKAMoAygDKAMoAygDKAMoAygDKAMoAIAqAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADQArAwcLdxN3Gx8jJ3cvMzc7P0NHS09TV1tfY2drb3d3U3+Dh4uPk5ebn6N3d68DBAt3E3cbHyMndy8zNzs/Q0dLT1NXW19jZ2tvd3dTf4OHi4+Tl5ufo3d3rwMHC3cTdxsfIyd3LzM3Oz9DR0tPU1dbX2Nna293d1N/g4eLj5OXm5+jd3esAAQIDBB0GBwgJA4sMjQ6PEBESExQVFhcYGRobHR0Un6ChoiOkpaanqB0d68DBwt3E3cbHyMndy8zNzs/Q0dLT1NXW19jZ2tvd3dTf4OHi4+Tl5ufo3d3rAAECHQQdBgcICR2LDI0OjxAREhMUFRYXGBkaGx0dFJ+goaIjpKWmp6gdHesAAQIGBB0GBwgJBgsMDQ4PEBESExQVFhcYGRobHR0UHyAhIiMkJSYnKB0d6wABAp0EnYYHiC2di4yNjo+QkZKTlJWWl5iZmpudnZSfoKGio6SlpqeonZ3rAAECCAQdBgcICQgLDA0ODxAREhMUFRYXGBkaGx0dFB8gISIjJCUmJygdHesAAQKdBJ0GB4gJnYuMjY6PEBESk5SVlheYmZobnZ2Un6ChoqOkpaanqJ2d6wABAgoEHQYHCAkKiwyNDo8QERITFBUWFxgZGhsdHRSfoKGiI6SlpqeoHR3rAAECCwSdBgcIMgsLDI0OjxAREhMUlRYXmJmaG52dFJ+goaKjpKWmp6idnesAAQIMBJ0GB4gJDIsMjQ6PEBESExSVFheYmZobnZ0Un6ChoqOkpaanqJ2d6wABAg0EHQYHCAkNCwwNDo8QERITFBUWFxgZGhsdHRQfICEiIyQlJicoHR3rAAECDgSdBgeICQ6LDI0OjxAREhMUlRYXGJmaG52dFJ+goaKjpKWmp6idnesAAQIPBJ0GBwgJD4uMjY6PEBESk5SVFheYmZobnZ2Un6ChoqOkpaanqJ2d6wABAhAEnQYHCDAQiwyNDo8QERITFJUWF5gZGhudnRSfoKGio6SlpqeonZ3rAAECEQQdBgcIMRGLDI0OjxAREhMUlRYXGBkaGx0dFJ+goaIjpKWmp6gdHesAAQISBJ0GBwgJEosMjQ6PEBESExSVFheYmZobnZ0Un6ChoqOkpaanqJ2d6wABAhMEnQYHCAkTiwyNDo8QERITFJUWF5iZmhudnRSfoKGio6SlpqeonZ3rAAECFASdBgcICRSLDI0OjxAREhMUlRYXmJmaG52dFJ+goaKjpKWmp6idnesAAQIVBB0GBwguFQsMDQ4PEBESExQVFhcYGRobHR0UHyAhIiMkJSYnKB0d6wABAhYEHQYHCC8WCwwNDg8QERITFBUWFxgZGhsdHRQfICEiIyQlJicoHR3rAAECFwQdBgcICReLDI0OjxAREhMUlRYXGJmaGx0dFJ+goaIjpKWmp6gdHesAAQIYBB0GBwgJGIsMjQ6PEBESExQVFhcYGRobHR0Un6ChoiOkpaanqB0d6wABAhkEHQYHCAkZiwyNDo8QERITFBUWFxiZmhsdHRSfoKGiI6SlpqeoHR3rAAECGgQdBgcICRqLDI0OjxAREhMUFRYXGJmaGx0dFB8gISIjJCUmJ6gdHesAAQIbBJ0GBwgJG4sMjQ6PEBESExSVFhcYmZobnZ0Un6ChoiOkpaanqJ2d6wABAh0EHQYHCAkdiwyNDo8QERITFBUWFxgZGhsdHRSfoKGiI6SlpqeoHR3rAAECHQQdBgcICR2LDI0OjxAREhMUFRYXGBkaGx0dFJ+goaIjpKWmp6gdHesAAQIUBJ0GBwgJFIsMjQ6PEBESExSVFheYmZobnZ0Un6ChoqOkpaanqJ2d6wABAh8EnQYHCAkfiwyNDo8QERITFJUWF5gZmhudnRSfIKGio6SlpqeonZ3rAAECIASdBgcICSCLDI0OjxAREhMUlRYXmBmaG52dFJ+goaKjpKWmp6idnesAAQIhBJ0GBwgJIYsMjQ6PEBESExSVFheYGZobnZ0Un6ChoqOkpSYnqJ2d6wABAiIEnQYHCAkiiwyNDo8QERITFJUWF5gZmhudnRSfoKGio6SlpieonZ3rAAECIwQdBgcICSOLM40zjxAREhMUFRYXGBkaGx0dFJ+goaIjpKWmp6gdHesAAQIkBJ0GBwgJJIsMjQ6PEBESExSVFheYGZobnZ0Un6ChoqOkpaanqJ2d6wABAiUEnQYHCAkliwyNDo8QERITFJUWF5gZmhudnRSfoCEio6QlJqeonZ3rAAECJgSdBgcICSaLDI0OjxAREhMUlRYXmBmaG52dFJ+goaKjpKUmJ6idnesAAQInBJ0GBwgJJ4sMjQ6PEBESExSVFheYGZobnZ0Un6ChoqOkpaYnqJ2d6wABAigEnQYHCAkoiwyNDo8QERITFJUWF5iZmhudnRSfoKGio6Slpqc0nZ3rAAECHQQdBgcICR2LDI0OjxAREhMUFRYXGBkaGx0dFJ+goaIjpKWmp6gdHesAAQIdBB0GBwgJHYsMjQ6PEBESExQVFhcYGRobHR0Un6ChoiOkpaanqB0d6wABAp0EnQYHiAmdiwyNDo8QERITFJUWF5iZmhudnRSfoKGio6SlpqeonZ3rAAECHQQdBgcICR0LDA0ODxAREhMUFRYXGBkaGx0dFB8gISIjJCUmJygdHSsAAQKdBJ2GB4gtnYuMjY6PkJGSk5SVlpeYmZqbnZ2Un6ChoqOkpaanqJ2d6wABAh0EHQYHCC4dCwwNDg8QERITFBUWFxgZGhsdHRQfICEiIyQlJicoHR3rAAECnQSdBgeIL52LjI2OjxAREpOUFZYXmJmaG52dlJ+goaKjpKWmp6idnesAAQKdBJ0GB4gwnYuMjY6PEBESkxSVlheYmZobnZ0Un6ChoqOkpaanqJ2d6wABAp0EnQYHiDGdi4yNjo8QERKTFJWWF5iZmhudnRSfoKGio6SlpqeonZ3rAAECnQSdBgeIMp0LjI2OjxAREpOUlZYXmJmaG52dlJ+goaKjpKWmp6idnesAAQIzBB0GBwgJMwsMDQ6PEBESExQVFhcYGRobHR0UHyAhIiMkJSYnKB0d6wABAjQEnQYHCAk0iwyNDo8QERITFJUWF5iZmhudnRSfoKGio6SlpqeonZ3rAEGB9sIAC4cBAQICAgMEBQYHCAkKCwwNAgICAgICAg4CAgICAgICDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwgICAgICAgICAgICAgICAgICAgICAgIAEGB+MIAC98KAQICAgIDAgIEAgUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0CAh4CAgICAgICHyAhIiMCJCUmJygpAioCAgICKywCAgICLS4CAgIvMDEyMwICAgICAjQCAjU2NwI4OTo7PD0+Pzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlAAgJBQgICQ0RFRkdIAkk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlKAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICOTk5OUsCAgICAkxNTk8CAgJQAlFSAgICAgICAgICAgICAlNUAgJVAlYCAldYWVpbXF1eX2BhYmMCZGVmZwJoAmlqa2wCAm1ub3ACcXICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQCAgICAgICAgICAgICAgICAgJ1dgICAncCAgJ4eTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5ejk5OTk5OTk5OXt8AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ9OTl+OTl/AgICAgICAgICAgICAgICAgICAoACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKBAgICgoOEAoUCAgICAgICAgICAgIChocCAgICAgICAgICiIl2AgKKAgICiwKMAgICAgKNjgICAgICAgICAgICAgKPkAKRkgKTlJWWl5iZmgKbAgKcnZ6fAgICAgICAgICAjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OaAdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKECAgICoqMCBAIFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdAgIeAgICAgICAh8gISIjAiQlJicoKQIqAgICAqSlpqeoqaouqzmsra6vsLECAgICAgKyAgI1NjcCODk6Ozw9PrM5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlLAgICAgK0TU61iIl2AgKKAgICiwKMAgICAgKNjgICAgICAgICAgICAgKPkLa3kgKTlJWWl5iZmgKbAgKcnZ6fAgICAgICAgICAlVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBB/ILDAAspVVVVVRUAUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQEAQa+DwwALxAEQQRBVVVVVVVdVVVVVVVVVVVVRVVUAAEBU9d1VVVVVVVVVVRUAAAAAAFVVVVX8XVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBQAUABQEUFVVVVVVVVUVUVVVVVVVVVUAAAAAAABAVVVVVVVVVVVV1VdVVVVVVVVVVVVVVQUAAFRVVVVVVVVVVVVVVVVVFQAAVVVRVVVVVVUFEAAAAQFQVVVVVVVVVVVVVQFVVVVVVf////9/VVVVUBUAAFVVVVVVVVVVVVUFAEGAhcMAC5gEQFVVVVVVVVVVVVVVVVVFVAEAVFEBAFVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVEAVRVUVUVVVUFVVVVVVVVRUFVVVVVVVVVVVVVVVVVVVRBFRRQUVVVVVVVVVVQUVVVQVVVVVVVVVVVVVVVVVVVVAEQVFFVVVVVBVVVVVVVBQBRVVVVVVVVVVVVVVVVVVUEAVRVUVUBVVUFVVVVVVVVVUVVVVVVVVVVVVVVVVVVVUVUVVVRVRVVVVVVVVVVVVVVVFRVVVVVVVVVVVVVVVVVBFQFBFBVQVVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVUURAUEUFVBVVUFVVVVVVVVVVBVVVVVVVVVVVVVVVVVFUQBVFVBVRVVVQVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVRRUFRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVRAEBVVRUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAAFRVVQBAVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVRFRVVVVVVVVVVVVVVVVVQEAAEAABFUBAAABAAAAAAAAAABUVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAQQAQUFVVVVVVVVQBVRVVVUBVFVVRUFVUVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoAQcCJwwALkANVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQFVVVVVVVVVVVVVVVUFUFVVVVVVVQVUVVVVVVVVBVVVVVVVVVUFVVVVf//99//911931tXXVRAAUFVFAQAAVVdRVVVVVVVVVVVVVRUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFVRVRVUBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVxUUVVVVVVVVVVVVVVVVVVVFAEBEAQBUFQAAFFVVVVVVVVVVVVVVVQAAAAAAAABAVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVQAAUAVUVVVVVVVVVVUVAABVVVVQVVVVVVVVVQVQAFBVVVVVVVVVVVVVVVVVRVARAFVVVVVVVVVVVVVVVVVVAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAABABUUVVUUFVVVVVVVVVVVVVVVVVVVVVVAEHgjMMAC/MHVVUVAFVVVVVVVQVAVVVVVVVVVVVVVVVVAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAVFVVVVVVVVVVVfVVVVVpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX9V9dVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVfVVVVVVVX1VVVVVVVaqqVVVVVf///1VVVVVVVVVVVVXVVVWlqtVVVVVdVfVVVVVVfVVfVXVVV1VVVVV1VfVddV1VXfVVVVVVVVVVV1VVVVVVVVVVd9XfVVVVVVVVVVVVVVVVVVVV/VVVVVVVVVdVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1VdVVVVVVVVVVVVVVVVXXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVUFVVVVVVVVVVVVVVVVVVVf3///////////////9fVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAACqqqqqqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVaqqqqqqqqqqqqqqqqqqCgCqqqpqqaqqqqqqqqqqqqqqqqqqqqqqqqqqaoGqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVamqqqqqqqqqqqqqqaqqqqqqqqqqqqqqqqiqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlWVqqqqqqqqqqqqqqpqqqqqqqqqqqqqqlVVqqqqqqqqqqqqqqqqqqqqVqqqqqqqqqqqqqqqqqpqVVVVVVVVVVVVVVVVVV9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVQAAAUFVVVVVVVVUFVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVRUUVVVVVVVVVQVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVUAAAAAUFVFFVVVVVVVVVVVVQUAUFVVVVVVFQAAEFVVVaqqqqqqqqpWQFVVVVVVVVVVVVVVFQVQUFRVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVAUBBQVVVFVVVVFVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVQQUVAVRVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUUVVVVVWqqqqqqqqqqqpVVVUAAAAAAEAVAEHflMMAC8ENVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVDAAA8KqqWlUAAAAAqqqqqqqqqqpqqqqqqmqqVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFamqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlZVVVVVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVVVqmpVVQAAVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFQFUBQVUAVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVQFQVVVVVVVVVVVVVVVVVVUVVFVVVVVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVUFAABUVVVVVVVVVVVVVVUFUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVAAAAQFVVVVVVVVVVVVUUVFUVUFVVVVVVVVVVVVVVFUBBVUVVVVVVVVVVVVVVVVVVVVVAVVVVVVVVVVUVAAEAVFVVVVVVVVVVVVVVVVVVFVVVVVBVVVVVVVVVVVVVVVUFAEAEVQEUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVUABVRVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUVAEBVVVVVVVBVVVVVVVVVVVVVVVVVFURUVVVRVRVVVVUFAFQAVFVVVVVVVVVVVVVVVVVVVVUUAEQRUAVAVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAABURVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVRQARBEEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVBVBVEFRVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVUVAEARVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVUQAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVREFEABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUAAEFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVFQARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAVVVFVVVVVVVVUBAEBVVVVVVVVVVVUVAARAVRVVVQFAAVVVVVVVVVVVVVUAAAAAQFBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAEAAEFVVVVVVVVVVVVVVVVVVVVVVVVVVBQAAAAAABQAEQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQFARRAAAFVVVVVVVVVVVVVVVVVVVVVVVVARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVRVVUBVVVVVVVVVVVVVVVUFQFVAVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVAAAAUFVVVVVVVVVVVVVVVVVVVVVVBQAAUAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVFVVVVVVVVVVVVVVVVVVAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1VdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVFUBVVVVVVVVVVVVVVVVVVVVVVVVVqlRVVVBVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVVVVVWVqqpWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqmqaaqqqqqqqqqqalVVVWVVVVVVVVVVallVVVWqVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVVVVVVVVVQQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBBq6LDAAuVAVAAAAAAAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBUAEAAAAAQAEAVVVVVVVVVQVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqmpVVaqqqqqqalVVAEHNo8MACwJAFQBB26PDAAvlBlRVUVVVVVRVVVVVFQABAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVUAQAAAAAAUABAEQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBAVVVVVVVVVVVVVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVVVVVVVVVVVVVVVVVVVVV1/f9/VVVVVVVVVVVVVVVVVVVVVVVV9f///////25VVVWqqrqqqqqq6vq/v1WqqlZVX1VVVapaVVVVVVVV//////////9XVVX9/9////////////////////////f//////1VVVf////////////9/1f9VVVX/////V1f//////////////////////3/3/////////////////////////////////////////////////////////////9f///////////////////9fVVXVf////////1VVVVV1VVVVVVVVfVVVVVdVVVVVVVVVVVVVVVVVVVVVVVVVVdX///////////////////////////9VVVVVVVVVVVVVVVX//////////////////////19VV3/9Vf9VVdVXVf//V1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf///1VXVVVVVVVV//////////////9////f/////////////////////////////////////////////////////////////1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX///9X//9f1f////////////////9/VfX////X//9fVf//V1WqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVVVVWZZVYaqlWapVVVVVVZVVVVVVVVVVlVVVAEHOqsMACwEDAEHcqsMAC9thVVVVVVWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUV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ODs1OzExNDM4OzU7MTE1Mzg7NTsxMTYzODs1OzExNzM4OzU7MTE4Mzg7NTsxMTkzODs1OzEyMDM4OzU7MTIxMzg7NTsxMjIzODs1OzEyMzM4OzU7MTI0Mzg7NTsxMjUzODs1OzEyNjM4OzU7MTI3Mzg7NTsxMjgzODs1OzEyOTM4OzU7MTMwMzg7NTsxMzEzODs1OzEzMjM4OzU7MTMzMzg7NTsxMzQzODs1OzEzNTM4OzU7MTM2Mzg7NTsxMzczODs1OzEzODM4OzU7MTM5Mzg7NTsxNDAzODs1OzE0MTM4OzU7MTQyMzg7NTsxNDMzODs1OzE0NDM4OzU7MTQ1Mzg7NTsxNDYzODs1OzE0NzM4OzU7MTQ4Mzg7NTsxNDkzODs1OzE1MDM4OzU7MTUxMzg7NTsxNTIzODs1OzE1MzM4OzU7MTU0Mzg7NTsxNTUzODs1OzE1NjM4OzU7MTU3Mzg7NTsxNTgzODs1OzE1OTM4OzU7MTYwMzg7NTsxNjEzODs1OzE2MjM4OzU7MTYzMzg7NTsxNjQzODs1OzE2NTM4OzU7MTY2Mzg7NTsxNjczODs1OzE2ODM4OzU7MTY5Mzg7NTsxNzAzODs1OzE3MTM4OzU7MTcyMzg7NTsxNzMzODs1OzE3NDM4OzU7MTc1Mzg7NTsxNzYzODs1OzE3NzM4OzU7MTc4Mzg7NTsxNzkzODs1OzE4MDM4OzU7MTgxMzg7NTsxODIzODs1OzE4MzM4OzU7MTg0Mzg7NTsxODUzODs1OzE4NjM4OzU7MTg3Mzg7NTsxODgzODs1OzE4OTM4OzU7MTkwMzg7NTsxOTEzODs1OzE5MjM4OzU7MTkzMzg7NTsxOTQzODs1OzE5NTM4OzU7MTk2Mzg7NTsxOTczODs1OzE5ODM4OzU7MTk5Mzg7NTsyMDAzODs1OzIwMTM4OzU7MjAyMzg7NTsyMDMzODs1OzIwNDM4OzU7MjA1Mzg7NTsyMDYzODs1OzIwNzM4OzU7MjA4Mzg7NTsyMDkzODs1OzIxMDM4OzU7MjExMzg7NTsyMTIzODs1OzIxMzM4OzU7MjE0Mzg7NTsyMTUzODs1OzIxNjM4OzU7MjE3Mzg7NTsyMTgzODs1OzIxOTM4OzU7MjIwMzg7NTsyMjEzODs1OzIyMjM4OzU7MjIzMzg7NTsyMjQzODs1OzIyNTM4OzU7MjI2Mzg7NTsyMjczODs1OzIyODM4OzU7MjI5Mzg7NTsyMzAzODs1OzIzMTM4OzU7MjMyMzg7NTsyMzMzODs1OzIzNDM4OzU7MjM1Mzg7NTsyMzYzODs1OzIzNzM4OzU7MjM4Mzg7NTsyMzkzODs1OzI0MDM4OzU7MjQxMzg7NTsyNDIzODs1OzI0MzM4OzU7MjQ0Mzg7NTsyNDUzODs1OzI0NjM4OzU7MjQ3Mzg7NTsyNDgzODs1OzI0OTM4OzU7MjUwMzg7NTsyNTEzODs1OzI1MjM4OzU7MjUzMzg7NTsyNTQzODs1OzI1NTQ4OzU7MDQ4OzU7MTQ4OzU7MjQ4OzU7MzQ4OzU7NDQ4OzU7NTQ4OzU7NjQ4OzU7NzQ4OzU7ODQ4OzU7OTQ4OzU7MTA0ODs1OzExNDg7NTsxMjQ4OzU7MTM0ODs1OzE0NDg7NTsxNTQ4OzU7MTY0ODs1OzE3NDg7NTsxODQ4OzU7MTk0ODs1OzIwNDg7NTsyMTQ4OzU7MjI0ODs1OzIzNDg7NTsyNDQ4OzU7MjU0ODs1OzI2NDg7NTsyNzQ4OzU7Mjg0ODs1OzI5NDg7NTszMDQ4OzU7MzE0ODs1OzMyNDg7NTszMzQ4OzU7MzQ0ODs1OzM1NDg7NTszNjQ4OzU7Mzc0ODs1OzM4NDg7NTszOTQ4OzU7NDA0ODs1OzQxNDg7NTs0MjQ4OzU7NDM0ODs1OzQ0NDg7NTs0NTQ4OzU7NDY0ODs1OzQ3NDg7NTs0ODQ4OzU7NDk0ODs1OzUwNDg7NTs1MTQ4OzU7NTI0ODs1OzUzNDg7NTs1NDQ4OzU7NTU0ODs1OzU2NDg7NTs1NzQ4OzU7NTg0ODs1OzU5NDg7NTs2MDQ4OzU7NjE0ODs1OzYyNDg7NTs2MzQ4OzU7NjQ0ODs1OzY1NDg7NTs2NjQ4OzU7Njc0ODs1OzY4NDg7NTs2OTQ4OzU7NzA0ODs1OzcxNDg7NTs3MjQ4OzU7NzM0ODs1Ozc0NDg7NTs3NTQ4OzU7NzY0ODs1Ozc3NDg7NTs3ODQ4OzU7Nzk0ODs1OzgwNDg7NTs4MTQ4OzU7ODI0ODs1OzgzNDg7NTs4NDQ4OzU7ODU0ODs1Ozg2NDg7NTs4NzQ4OzU7ODg0ODs1Ozg5NDg7NTs5MDQ4OzU7OTE0ODs1OzkyNDg7NTs5MzQ4OzU7OTQ0ODs1Ozk1NDg7NTs5NjQ4OzU7OTc0ODs1Ozk4NDg7NTs5OTQ4OzU7MTAwNDg7NTsxMDE0ODs1OzEwMjQ4OzU7MTAzNDg7NTsxMDQ0ODs1OzEwNTQ4OzU7MTA2NDg7NTsxMDc0ODs1OzEwODQ4OzU7MTA5NDg7NTsxMTA0ODs1OzExMTQ4OzU7MTEyNDg7NTsxMTM0ODs1OzExNDQ4OzU7MTE1NDg7NTsxMTY0ODs1OzExNzQ4OzU7MTE4NDg7NTsxMTk0ODs1OzEyMDQ4OzU7MTIxNDg7NTsxMjI0ODs1OzEyMzQ4OzU7MTI0NDg7NTsxMjU0ODs1OzEyNjQ4OzU7MTI3NDg7NTsxMjg0ODs1OzEyOTQ4OzU7MTMwNDg7NTsxMzE0ODs1OzEzMjQ4OzU7MTMzNDg7NTsxMzQ0ODs1OzEzNTQ4OzU7MTM2NDg7NTsxMzc0ODs1OzEzODQ4OzU7MTM5NDg7NTsxNDA0ODs1OzE0MTQ4OzU7MTQyNDg7NTsxNDM0ODs1OzE0NDQ4OzU7MTQ1NDg7NTsxNDY0ODs1OzE0NzQ4OzU7MTQ4NDg7NTsxNDk0ODs1OzE1MDQ4OzU7MTUxNDg7NTsxNTI0ODs1OzE1MzQ4OzU7MTU0NDg7NTsxNTU0ODs1OzE1NjQ4OzU7MTU3NDg7NTsxNTg0ODs1OzE1OTQ4OzU7MTYwNDg7NTsxNjE0ODs1OzE2MjQ4OzU7MTYzNDg7NTsxNjQ0ODs1OzE2NTQ4OzU7MTY2NDg7NTsxNjc0ODs1OzE2ODQ4OzU7MTY5NDg7NTsxNzA0ODs1OzE3MTQ4OzU7MTcyNDg7NTsxNzM0ODs1OzE3NDQ4OzU7MTc1NDg7NTsxNzY0ODs1OzE3NzQ4OzU7MTc4NDg7NTsxNzk0ODs1OzE4MDQ4OzU7MTgxNDg7NTsxODI0ODs1OzE4MzQ4OzU7MTg0NDg7NTsxODU0ODs1OzE4NjQ4OzU7MTg3NDg7NTsxODg0ODs1OzE4OTQ4OzU7MTkwNDg7NTsxOTE0ODs1OzE5MjQ4OzU7MTkzNDg7NTsxOTQ0ODs1OzE5NTQ4OzU7MTk2NDg7NTsxOTc0ODs1OzE5ODQ4OzU7MTk5NDg7NTsyMDA0ODs1OzIwMTQ4OzU7MjAyNDg7NTsyMDM0ODs1OzIwNDQ4OzU7MjA1NDg7NTsyMDY0ODs1OzIwNzQ4OzU7MjA4NDg7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ALzmEADE5hAAzOYQANTmEADc5hAA5OYQAOzmEAD05hAA/OYQAATnEAAM5xAAFOcQABznEAAk5xAALOcQADTnEAA85xAAROcQAEznEABU5xAAXOcQAGTnEABs5xAAdOcQAHznEACE5xAAjOcQAJTnEACc5xAApOcQAKznEAC05xAAvOcQAMTnEADM5xAA1OcQANznEADk5xAA7OcQAPTnEAD85xAABOgQAAzoEAAU6BAAHOgQACToEAAs6BAANOgQADzoEABE6BAATOgQAFToEABc6BAAZOgQAGzoEAB06BAAfOgQAIToEAD64BAAAOEQAAbhEAAM4RAAEuEQABjhEAAe4RAAJOEQACrhEAAw4RAANuEQAD3hEABE4RAAS+EQAFLhEABZ4RAAYOEQAGfhEABu4RAAdeEQAHzhEACD4RAAiuEQAJHhEACY4RAAn+EQAKbhEACt4RAAtOEQALvhEADC4RAAyeEQANDhEADX4RAA3uEQAOXhEADs4RAA8+EQAPrhEAAB4hAACOIQAA/iEAAW4hAAHeIQACTiEAAr4hAAMuIQADniEABA4hAAR+IQAE7iEABV4hAAXOIQAGPiEABq4hAAceIQAHjiEAB/4hAAhuIQAI3iEACU4hAAm+IQAKLiEACp4hAAsOIQALfiEAC+4hAAxeIQAMziEADT4hAA2uIQAOHiEADo4hAA7+IQAPbiEAD94hAABOMQAAvjEAAS4xAAGeMQACDjEAAn4xAALuMQADXjEAA84xAAQ+MQAErjEABR4xAAWOMQAF/jEABm4xAAbeMQAHTjEAB74xAAguMQAInjEACQ4xAAl+MQAJ7jEACl4xAArOMQALTjEAC84xAAxOMQAMzjEADU4xAA3OMQAOTjEADs4xAA9OMQAPzjEAAE5BAADOQQABTkEAAc5BAAJOQQACzkEAA05BAAPOQQAETkEABM5BAAVOQQAFzkEABk5BAAbOQQAHTkEAB85BAAhOQQADM4OzI7MjQwOzI0ODsyNTUzODsyOzI1MDsyMzU7MjE1Mzg7MjswMDA7MjU1OzI1NTM4OzI7MTI3OzI1NTsyMTIzODsyOzI0MDsyNTU7MjU1Mzg7MjsyNDU7MjQ1OzIyMDM4OzI7MjU1OzIyODsxOTYzODsyOzAwMDswMDA7MDAwMzg7MjsyNTU7MjM1OzIwNTM4OzI7MDAwOzAwMDsyNTUzODsyOzEzODswNDM7MjI2Mzg7MjsxNjU7MDQyOzA0MjM4OzI7MjIyOzE4NDsxMzUzODsyOzA5NTsxNTg7MTYwMzg7MjsxMjc7MjU1OzAwMDM4OzI7MjEwOzEwNTswMzAzODsyOzI1NTsxMjc7MDgwMzg7MjsxMDA7MTQ5OzIzNzM4OzI7MjU1OzI0ODsyMjAzODsyOzIyMDswMjA7MDYwMzg7MjswMDA7MDAwOzEzOTM4OzI7MDAwOzEzOTsxMzkzODsyOzE4NDsxMzQ7MDExMzg7MjsxNjk7MTY5OzE2OTM4OzI7MDAwOzEwMDswMDAzODsyOzE4OTsxODM7MTA3Mzg7MjsxMzk7MDAwOzEzOTM4OzI7MDg1OzEwNzswNDczODsyOzI1NTsxNDA7MDAwMzg7MjsxNTM7MDUwOzIwNDM4OzI7MTM5OzAwMDswMDAzODsyOzIzMzsxNTA7MTIyMzg7MjsxNDM7MTg4OzE0MzM4OzI7MDcyOzA2MTsxMzkzODsyOzA0NzswNzk7MDc5Mzg7MjswMDA7MjA2OzIwOTM4OzI7MTQ4OzAwMDsyMTEzODsyOzI1NTswMjA7MTQ3Mzg7MjswMDA7MTkxOzI1NTM4OzI7MTA1OzEwNTsxMDUzODsyOzAzMDsxNDQ7MjU1Mzg7MjsxNzg7MDM0OzAzNDM4OzI7MjU1OzI1MDsyNDAzODsyOzAzNDsxMzk7MDM0Mzg7MjsyNTU7MDAwOzI1NTM4OzI7MjIwOzIyMDsyMjAzODsyOzI0ODsyNDg7MjU1Mzg7MjsyNTU7MjE1OzAwMDM4OzI7MjE4OzE2NTswMzIzODsyOzEyODsxMjg7MTI4Mzg7MjswMDA7MTI4OzAwMDM4OzI7MTczOzI1NTswNDczODsyOzI0MDsyNTU7MjQwMzg7MjsyNTU7MTA1OzE4MDM4OzI7MjA1OzA5MjswOTIzODsyOzA3NTswMDA7MTMwMzg7MjsyNTU7MjU1OzI0MDM4OzI7MjQwOzIzMDsxNDAzODsyOzIzMDsyMzA7MjUwMzg7MjsyNTU7MjQwOzI0NTM4OzI7MTI0OzI1MjswMDAzODsyOzI1NTsyNTA7MjA1Mzg7MjsxNzM7MjE2OzIzMDM4OzI7MjQwOzEyODsxMjgzODsyOzIyNDsyNTU7MjU1Mzg7MjsyNTA7MjUwOzIxMDM4OzI7MjExOzIxMTsyMTEzODsyOzE0NDsyMzg7MTQ0Mzg7MjsyNTU7MTgyOzE5MzM4OzI7MjU1OzE2MDsxMjIzODsyOzAzMjsxNzg7MTcwMzg7MjsxMzU7MjA2OzI1MDM4OzI7MTE5OzEzNjsxNTMzODsyOzE3NjsxOTY7MjIyMzg7MjsyNTU7MjU1OzIyNDM4OzI7MDAwOzI1NTswMDAzODsyOzA1MDsyMDU7MDUwMzg7MjsyNTA7MjQwOzIzMDM4OzI7MTI4OzAwMDswMDAzODsyOzEwMjsyMDU7MTcwMzg7MjswMDA7MDAwOzIwNTM4OzI7MTg2OzA4NTsyMTEzODsyOzE0NzsxMTI7MjE5Mzg7MjswNjA7MTc5OzExMzM4OzI7MTIzOzEwNDsyMzgzODsyOzAwMDsyNTA7MTU0Mzg7MjswNzI7MjA5OzIwNDM4OzI7MTk5OzAyMTsxMzMzODsyOzAyNTswMjU7MTEyMzg7MjsyNDU7MjU1OzI1MDM4OzI7MjU1OzIyODsyMjUzODsyOzI1NTsyMjg7MTgxMzg7MjsyNTU7MjIyOzE3MzM4OzI7MDAwOzAwMDsxMjgzODsyOzI1MzsyNDU7MjMwMzg7MjsxMjg7MTI4OzAwMDM4OzI7MTA3OzE0MjswMzUzODsyOzI1NTsxNjU7MDAwMzg7MjsyNTU7MDY5OzAwMDM4OzI7MjE4OzExMjsyMTQzODsyOzIzODsyMzI7MTcwMzg7MjsxNTI7MjUxOzE1MjM4OzI7MTc1OzIzODsyMzgzODsyOzIxOTsxMTI7MTQ3Mzg7MjsyNTU7MjM5OzIxMzM4OzI7MjU1OzIxODsxODUzODsyOzIwNTsxMzM7MDYzMzg7MjsyNTU7MTkyOzIwMzM4OzI7MjIxOzE2MDsyMjEzODsyOzE3NjsyMjQ7MjMwMzg7MjsxMjg7MDAwOzEyODM4OzI7MTAyOzA1MTsxNTMzODsyOzI1NTswMDA7MDAwMzg7MjsxODg7MTQzOzE0MzM4OzI7MDY1OzEwNTsyMjUzODsyOzEzOTswNjk7MDE5Mzg7MjsyNTA7MTI4OzExNDM4OzI7MjQ0OzE2NDswOTYzODsyOzA0NjsxMzk7MDg3Mzg7MjsyNTU7MjQ1OzIzODM4OzI7MTYwOzA4MjswNDUzODsyOzE5MjsxOTI7MTkyMzg7MjsxMzU7MjA2OzIzNTM4OzI7MTA2OzA5MDsyMDUzODsyOzExMjsxMjg7MTQ0Mzg7MjsyNTU7MjUwOzI1MDM4OzI7MDAwOzI1NTsxMjczODsyOzA3MDsxMzA7MTgwMzg7MjsyMTA7MTgwOzE0MDM4OzI7MDAwOzEyODsxMjgzODsyOzIxNjsxOTE7MjE2Mzg7MjsyNTU7MDk5OzA3MTM4OzI7MDY0OzIyNDsyMDgzODsyOzIzODsxMzA7MjM4Mzg7MjsyNDU7MjIyOzE3OTM4OzI7MjU1OzI1NTsyNTUzODsyOzI0NTsyNDU7MjQ1Mzg7MjsyNTU7MjU1OzAwMDM4OzI7MTU0OzIwNTswNTA0ODsyOzI0MDsyNDg7MjU1NDg7MjsyNTA7MjM1OzIxNTQ4OzI7MDAwOzI1NTsyNTU0ODsyOzEyNzsyNTU7MjEyNDg7MjsyNDA7MjU1OzI1NTQ4OzI7MjQ1OzI0NTsyMjA0ODsyOzI1NTsyMjg7MTk2NDg7MjswMDA7MDAwOzAwMDQ4OzI7MjU1OzIzNTsyMDU0ODsyOzAwMDswMDA7MjU1NDg7MjsxMzg7MDQzOzIyNjQ4OzI7MTY1OzA0MjswNDI0ODsyOzIyMjsxODQ7MTM1NDg7MjswOTU7MTU4OzE2MDQ4OzI7MTI3OzI1NTswMDA0ODsyOzIxMDsxMDU7MDMwNDg7MjsyNTU7MTI3OzA4MDQ4OzI7MTAwOzE0OTsyMzc0ODsyOzI1NTsyNDg7MjIwNDg7MjsyMjA7MDIwOzA2MDQ4OzI7MDAwOzAwMDsxMzk0ODsyOzAwMDsxMzk7MTM5NDg7MjsxODQ7MTM0OzAxMTQ4OzI7MTY5OzE2OTsxNjk0ODsyOzAwMDsxMDA7MDAwNDg7MjsxODk7MTgzOzEwNzQ4OzI7MTM5OzAwMDsxMzk0ODsyOzA4NTsxMDc7MDQ3NDg7MjsyNTU7MTQwOzAwMDQ4OzI7MTUzOzA1MDsyMDQ0ODsyOzEzOTswMDA7MDAwNDg7MjsyMzM7MTUwOzEyMjQ4OzI7MTQzOzE4ODsxNDM0ODsyOzA3MjswNjE7MTM5NDg7MjswNDc7MDc5OzA3OTQ4OzI7MDAwOzIwNjsyMDk0ODsyOzE0ODswMDA7MjExNDg7MjsyNTU7MDIwOzE0NzQ4OzI7MDAwOzE5MTsyNTU0ODsyOzEwNTsxMDU7MTA1NDg7MjswMzA7MTQ0OzI1NTQ4OzI7MTc4OzAzNDswMzQ0ODsyOzI1NTsyNTA7MjQwNDg7MjswMzQ7MTM5OzAzNDQ4OzI7MjU1OzAwMDsyNTU0ODsyOzIyMDsyMjA7MjIwNDg7MjsyNDg7MjQ4OzI1NTQ4OzI7MjU1OzIxNTswMDA0ODsyOzIxODsxNjU7MDMyNDg7MjsxMjg7MTI4OzEyODQ4OzI7MDAwOzEyODswMDA0ODsyOzE3MzsyNTU7MDQ3NDg7MjsyNDA7MjU1OzI0MDQ4OzI7MjU1OzEwNTsxODA0ODsyOzIwNTswOTI7MDkyNDg7MjswNzU7MDAwOzEzMDQ4OzI7MjU1OzI1NTsyNDA0ODsyOzI0MDsyMzA7MTQwNDg7MjsyMzA7MjMwOzI1MDQ4OzI7MjU1OzI0MDsyNDU0ODsyOzEyNDsyNTI7MDAwNDg7MjsyNTU7MjUwOzIwNTQ4OzI7MTczOzIxNjsyMzA0ODsyOzI0MDsxMjg7MTI4NDg7MjsyMjQ7MjU1OzI1NTQ4OzI7MjUwOzI1MDsyMTA0ODsyOzIxMTsyMTE7MjExNDg7MjsxNDQ7MjM4OzE0NDQ4OzI7MjU1OzE4MjsxOTM0ODsyOzI1NTsxNjA7MTIyNDg7MjswMzI7MTc4OzE3MDQ4OzI7MTM1OzIwNjsyNTA0ODsyOzExOTsxMzY7MTUzNDg7MjsxNzY7MTk2OzIyMjQ4OzI7MjU1OzI1NTsyMjQ0ODsyOzAwMDsyNTU7MDAwNDg7MjswNTA7MjA1OzA1MDQ4OzI7MjUwOzI0MDsyMzA0ODsyOzEyODswMDA7MDAwNDg7MjsxMDI7MjA1OzE3MDQ4OzI7MDAwOzAwMDsyMDU0ODsyOzE4NjswODU7MjExNDg7MjsxNDc7MTEyOzIxOTQ4OzI7MDYwOzE3OTsxMTM0ODsyOzEyMzsxMDQ7MjM4NDg7MjswMDA7MjUwOzE1NDQ4OzI7MDcyOzIwOTsyMDQ0ODsyOzE5OTswMjE7MTMzNDg7MjswMjU7MDI1OzExMjQ4OzI7MjQ1OzI1NTsyNTA0ODsyOzI1NTsyMjg7MjI1NDg7MjsyNTU7MjI4OzE4MTQ4OzI7MjU1OzIyMjsxNzM0ODsyOzAwMDswMDA7MTI4NDg7MjsyNTM7MjQ1OzIzMDQ4OzI7MTI4OzEy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AB0AAACzEBEADgAAAMEQEQAcAAAARXNTeW50YXhUc1N5bnRheHRzeGR0c25vX2Vhcmx5X2Vycm9yc2Rpc2FsbG93X2FtYmlndW91c19qc3hfbGlrZS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAABwEREASgAAAL4BAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGF0aGRpZmYtMC4yLjMvc3JjL2xpYi5ycwDMEREAWwAAAEUAAAAkAAAAzBERAFsAAABBAAAAGwAAAAcAQeSkxAALAQgAQYClxAALpQLMEREAWwAAAEoAAAAbAAAAzBERAFsAAABOAAAAGwAAAMwREQBbAAAATAAAAB8AAADMEREAWwAAAEcAAABHAAAAAAAAAAwAAAAEAAAAjAEAAI0BAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAANQSEQAqAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvbGliLnJzAAAACBMRAF0AAAAfBQAAGQAAAFBhcnNlciBjb25maWc6IAB4ExEADwAAAI4BAAAMAAAABAAAAI8BAACQAQAABQBBsKfEAAu7AgEAAACRAQAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAA7xMRAEsAAADRCgAADgAAAEVycm9yAAAA7xMRAEsAAAB/BQAAGgAAAO8TEQBLAAAAfQUAABsAAADvExEASwAAAFgEAAASAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAIQUEQBKAAAAvgEAAB0AAAD//////////+AUEQBB+KnEAAv7ATFTeW50YXggRXJyb3IAAAD5FBEADAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19jb21waWxlcl9iYXNlLTMwLjAuMC9zcmMvbGliLnJzaW5saW5lAHUVEQAGAAAAU291cmNlIG1hcCBtdXN0IGJlIHRydWUsIGZhbHNlIG9yIGlubGluZYQVEQAoAAAAEBURAGUAAADAAQAAEQAAAAQAAAAEAAAABAAAAAQAAAAIAAAABAAAABgAAAAgICAgAAAAAP//////////6BURAEGArMQAC9kOSGFzaCB0YWJsZSBjYXBhY2l0eSBvdmVyZmxvdwAWEQAcAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaGFzaGJyb3duLTAuMTQuNS9zcmMvcmF3L21vZC5ycwAAACQWEQBhAAAAVgAAACgAAAAIAAAACAAAAAgAAAAIAAAACAAAABgAAAAEAAAABAAAAAgAAAAAAAAADAAAAAQAAACTAQAAlAEAAExhenkgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAA0BYRACoAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9vbmNlX2NlbGwtMS4yMS4zL3NyYy9saWIucnMAAAAEFxEAXQAAAB8FAAAZAAAAIi9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5yc3UXEQBLAAAA+AEAAA4AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9hc3QtMTQuMC4wL3NyYy9leHByLnJzY2FsbGVkIGV4cGVjdCBvbiAAADEYEQARAAAA0BcRAGEAAADkBAAAFAAAAGFic3RyYWN0ZW51bWludGVyZmFjZW1vZHVsZW5hbWVzcGFjZXR5cGUvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMi4wLjIvc3JjL2NvbW1vbi9wYXJzZXIvdHlwZXNjcmlwdC5ycwCEGBEAdwAAAEEAAAATAAAAhBgRAHcAAABFAAAADQAAAAEAAAAAAAAAZGVjbGFyZWdsb2JhbHB1YmxpY3Byb3RlY3RlZHByaXZhdGVyZWFkb25seQAxGREABgAAADcZEQAJAAAAQBkRAAcAAABHGREACAAAAGNvbnN0b3ZlcnJpZGVpbm91dAAAMRkRAAYAAABAGREABwAAADcZEQAJAAAARxkRAAgAAABcGBEACAAAAHAZEQAFAAAAdRkRAAgAAAB9GREAAgAAAH8ZEQADAAAAdm9pZEcZEQAIAAAAhBgRAHcAAAAKCAAAMwAAADwgKGpzeCB0YWcgc3RhcnQpAAAAhBgRAHcAAACTCgAAEgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGWEGBEAdwAAAMcIAAAOAAAAhBgRAHcAAABQBAAAEgAAAHN0cmluZ251bGxudW1iZXJvYmplY3Rhbnl1bmtub3duYm9vbGVhbmJpZ2ludHN5bWJvbG5ldmVyaW50cmluc2ljYW4gaWRlbnRpZmllciwgdm9pZCwgeWllbGQsIG51bGwsIGF3YWl0LCBicmVhaywgYSBzdHJpbmcgbGl0ZXJhbCwgYSBudW1lcmljIGxpdGVyYWwsIHRydWUsIGZhbHNlLCBgLCAtLCBpbXBvcnQsIHRoaXMsIHR5cGVvZiwgeywgWywgKG51bWVyaWMgbGl0ZXJhbCBvciBiaWdpbnQgbGl0ZXJhbACEGBEAdwAAAK8JAAA0AAAAhBgRAHcAAADBCQAANAAAAIQYEQB3AAAAywkAABIAAAA9AAAAhBgRAHcAAAAWCQAAJwAAAIQYEQB3AAAAFAkAABYAAACEGBEAdwAAADcEAAAPAAAAhBgRAHcAAAA7BAAAEAAAAGEgc3RyaW5nIGxpdGVyYWyEGBEAdwAAAHYAAAANAAAAhBgRAHcAAABPBQAAFAAAAIQYEQB3AAAAXQUAAA4AAABhbiBpZGVudGlmaWVyLCBbIGZvciBhbiBhcnJheSBwYXR0ZXJuLCB7IGZvciBhbiBvYmplY3QgcGF0dGVyIG9yIC4uLiBmb3IgYSByZXN0IHBhdHRlcm4AhBgRAHcAAAAnAQAAEwAAAGdsb2JhbCBvciBhIHN0cmluZyBsaXRlcmFsL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfbGV4ZXItMjIuMC4yL3NyYy9jb21tb24vcGFyc2VyL2V4cHIucnMAchwRAHEAAABqAgAAJgAAAHIcEQBxAAAAfwIAADYAAAAoIG9yIGBgAHIcEQBxAAAAswIAACoAAAByHBEAcQAAAKcCAAAmAAAAKAAAAHIcEQBxAAAAJAgAADoAAABmYWlsmgEAAAwAAAAEAAAAmwEAAJwBAAAFAEHkusQAC6cQAQAAAJ0BAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAACjHREASwAAANEKAAAOAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZUVycm9yox0RAEsAAAB/BQAAGgAAAKMdEQBLAAAAfQUAABsAAACjHREASwAAAFgEAAASAAAAAAAAAAQAAAAEAAAAngEAAFN1cGVyAAAAAAAAAAQAAAAEAAAAnwEAAEltcG9ydAAAAAAAAAQAAAAEAAAAoAEAAEV4cHIvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50LnJzAAAApB4RAGEAAAAsAAAAHQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIyLjAuMi9zcmMvZXJyb3IucnMYHxEAZAAAACgAAAARAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfbGV4ZXItMjIuMC4yL3NyYy9jb21tb24vcGFyc2VyL3N0YXRlLnJzAACMHxEAcgAAAAcAAAAKAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAABAgEQBKAAAAvgEAAB0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9wYXJzZXItMjIuMC4yL3NyYy9sZXhlci9zdGF0ZS5ycwBsIBEAawAAADAAAABBAAAAbCARAGsAAAAxAAAAOAAAAGwgEQBrAAAAMgAAABkAAABsIBEAawAAADIAAAAmAAAAbCARAGsAAABaAAAACQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3BhcnNlci0yMi4wLjIvc3JjL2xleGVyL3Rva2VuLnJzACghEQBrAAAAGQMAACQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAIAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAEAAAAAAAAAey9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIyLjAuMi9zcmMvY29tbW9uL3BhcnNlci9leHByLnJzAAD9IREAcQAAACIBAAAjAAAA/SERAHEAAAAzAQAAHQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIyLjAuMi9zcmMvY29tbW9uL3BhcnNlci9zdG10LnJzAAAAkCIRAHEAAABEAwAAIgAAAJAiEQBxAAAAXQMAACoAAACQIhEAcQAAAD4DAAAcAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfbGV4ZXItMjIuMC4yL3NyYy9jb21tb24vcGFyc2VyL21vZC5yczQjEQBwAAAAugEAABcAAABpZGVudGlmaWVyLCBzdHJpbmcgbGl0ZXJhbCwgbnVtZXJpYyBsaXRlcmFsIG9yIFsgZm9yIHRoZSBjb21wdXRlZCBrZXkAAAA0IxEAcAAAAH0BAAAfAAAAdGVtcGxhdGUgdG9rZW5BbiBleHByZXNzaW9uIHNob3VsZCBmb2xsb3cgJy4uLicvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMi4wLjIvc3JjL2NvbW1vbi9wYXJzZXIvb2JqZWN0LnJzAAA7JBEAcwAAACQAAAAZAAAAOyQRAHMAAAAnAAAAEwAAAGdldHNldGFzeW5jaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZQA7JBEAcwAAAKcBAAAeAAAAOyQRAHMAAACDAQAAPAAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAAAkJREASgAAAL4BAAAdAAAA//////////+AJREAQZjLxAALoQwvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9wYXJzZXItMjIuMC4yL3NyYy9sZXhlci9zdGF0ZS5ycwCYJREAawAAADAAAABBAAAAmCURAGsAAAAxAAAAOAAAAJglEQBrAAAAMgAAABkAAACYJREAawAAADIAAAAmAAAAmCURAGsAAABfAAAACQAAAJglEQBrAAAAdQAAAB8AAAASE2pzeCBpZGVudGlmaWVyL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfcGFyc2VyLTIyLjAuMi9zcmMvcGFyc2VyL2pzeC9tb2QucnNpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBKU1hOYW1lc3BhY2VkTmFtZSAtPiBKU1hPYmplY3QAAOImEQBIAAAAdCYRAG4AAABeAAAAGgAAADwAAAB0JhEAbgAAAKEAAAAYAAAAdCYRAG4AAACnAAAAEgAAADwgKGpzeCB0YWcgc3RhcnQpLCBqc3ggdGV4dCBvciB7dCYRAG4AAADeAAAAEgAAABwDAAB0JhEAbgAAADEBAAAZAAAAdCYRAG4AAAA7AQAAEwAAABAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9wYXJzZXItMjIuMC4yL3NyYy9wYXJzZXIvdHBsLnJzAL0nEQBqAAAAeAAAABMAAAC9JxEAagAAAHsAAAAUAAAAYH1gAL0nEQBqAAAA6AAAABEAAAC9JxEAagAAAOsAAAAUAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfbGV4ZXItMjIuMC4yL3NyYy9jb21tb24vcGFyc2VyL2NsYXNzX2FuZF9mbi5ycwAAAAEAAAAAAAAAbCgRAHkAAADcBQAAFQAAAGwoEQB5AAAA9AUAAA8AAABsKBEAeQAAAOIFAAATAAAAbCgRAHkAAABlAAAAFAAAAGwoEQB5AAAAVAYAABEAAABwdWJsaWNwcm90ZWN0ZWRwcml2YXRlaW5vdXQAQCkRAAYAAABGKREACQAAAE8pEQAHAAAAVikRAAIAAABYKREAAwAAAGNvbnN0cnVjdG9yAIQpEQALAAAAYWJzdHJhY3RyZWFkb25seW92ZXJyaWRlc3RhdGljAACYKREACAAAAKApEQAIAAAAqCkRAAgAAACwKREABgAAAGdldADYKREAAwAAAHNldADkKREAAwAAAGFzeW5jAAAA8CkRAAUAAACoKREACAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGVsKBEAeQAAAPgEAAASAAAAKiBmb3IgZ2VuZXJhdG9yLCBwcml2YXRlIGtleSwgaWRlbnRpZmllciBvciBhc3luY2ludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGlzX2NvbnN0cnVjdG9yKCkgcmV0dXJucyBmYWxzZSBmb3IgUHJpdmF0ZU5hbWUAAABxKhEAWAAAAGwoEQB5AAAASAQAABoAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAA5CoRAEoAAAC+AQAAHQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3BhcnNlci0yMi4wLjIvc3JjL2xleGVyL3N0YXRlLnJzAEArEQBrAAAAXwAAAAkAQeTXxAALAQEAQYHYxAALOgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQeTYxAALAQEAQfDYxAAL+xQBAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIyLjAuMi9zcmMvY29tbW9uL2xleGVyL21vZC5yc2ZhaWxlZCB0byBwYXJzZSBmbG9hdCBsaXRlcmFswCwRAG8AAAAQAwAAGQAAAMAsEQBvAAAArgIAAFYAAADALBEAbwAAALIHAAAgAAAAwCwRAG8AAAAFCAAAKgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHJlYWRfbnVtYmVyIHNob3VsZCBub3QgcmV0dXJuIGJpZ2ludCBmb3IgbGVhZGluZyBkb3QAAIwtEQBeAAAAwCwRAG8AAADkBgAAHQAAAEZpZWxkU2V0IGNvcnJ1cHRlZCAodGhpcyBpcyBhIGJ1ZykAAMAsEQBvAAAAvwAAAAkAAABMZXhlciBlcnJvciBhdCAAOC4RAA8AAAAAAAAAGAAAAAQAAACmAQAAJjsAAGAuEQABAAAAYS4RAAEAAADALBEAbwAAANkDAAAlAAAAwCwRAG8AAADaAwAANQAAADIgaGV4IGNoYXJhY3RlcnPALBEAbwAAAPcDAAAlAAAADQoKAMAsEQBvAAAAXgMAAFoAAADALBEAbwAAABYBAAA0AAAAwCwRAG8AAAATAQAANAAAAMAsEQBvAAAA+AAAACYAAACAqICpwCwRAG8AAAA3AQAALAAAAMAsEQBvAAAAMwEAABYAAAB8fHx8fCAAAMAsEQBvAAAAYAEAACoAAADALBEAbwAAAJcBAAApAAAAwCwRAG8AAACkAQAAPAAAAMAsEQBvAAAAoAEAACYAAADALBEAbwAAAG4EAAAZAAAANCBoZXggY2hhcmFjdGVyczEtNiBoZXggY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgMCB0byAxMEZGRkYuMS02IGhleCBjaGFyYWN0ZXJzAADALBEAbwAAAJ0EAAAXAAAAwCwRAG8AAAClBAAAFwAAAMAsEQBvAAAApgQAABcAAADALBEAbwAAAL8EAAAjAAAAwCwRAG8AAACpBAAAGwAAAMAsEQBvAAAAswQAACMAAADALBEAbwAAALkEAAAbAAAAwCwRAG8AAAB4AwAAPgAAAAAAAAABAAAAAQAAAKcBAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAVDARAEsAAADoAQAAFwAAAFQwEQBLAAAAfwUAABoAAABUMBEASwAAAH0FAAAbAAAAVDARAEsAAABYBAAAEgAAAE5vbmUAAAAABAAAAAQAAACoAQAAU29tZQAAAAAEAAAABAAAAKkBAABQYXJzZUZsb2F0RXJyb3JraW5kL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAAAbMREASgAAAL4BAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfcGFyc2VyLTIyLjAuMi9zcmMvbGV4ZXIvc3RhdGUucnMAeDERAGsAAABoAAAAFQAAAHgxEQBrAAAAaAAAACIAAAB4MREAawAAAHAAAAAcAAAAeDERAGsAAABwAAAAKQAAAHgxEQBrAAAA+AAAACsAAAABAAAAAAAAAAEAAAAAAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogYHRva2VuX3ZhbHVlYCBzaG91bGQgYmUgYSB3b3JkLCBidXQgZ290OiAARDIRAFMAAAB4MREAawAAABUBAAANAAAAYHsnPid9YGAmZ3Q7YGB7J30nfWBgJnJicmFjZTtgL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfcGFyc2VyLTIyLjAuMi9zcmMvbGV4ZXIvbW9kLnJzAM4yEQBpAAAATQAAABUAAADOMhEAaQAAAE0AAAAiAAAAPT09PWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGXOMhEAaQAAACwBAAAWAAAAPDw8PDwgPj4+PiAAzjIRAGkAAACgAQAAHgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIyLjAuMi9zcmMvY29tbW9uL3BhcnNlci9leHByLnJzAAAAAQAAAAAAAABpbXBvcnQAALAzEQBxAAAASgAAABUAAACwMxEAcQAAAFMAAAAPAAAAsDMRAHEAAABPAAAAEwAAALAzEQBxAAAAxQIAABsAAABgLmAgb3IgYChgaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZQAAsDMRAHEAAAD5AgAAJwAAAG1ldGFUcmllZCB0byBwYXJzZSBhbiBhcmd1bWVudCBvZiB5aWVsZAAAAAAAYXN5bmNhcwDpNBEAAgAAALAzEQBxAAAAxQcAABMAAACwMxEAcQAAAL8HAAATAAAAsDMRAHEAAADLBwAAGAAAALAzEQBxAAAA1AcAAEkAAACwMxEAcQAAAN8HAAATAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBwYXR0ZXJuOiBFeHByKCkAAABENREAQAAAAIQ1EQABAAAAsDMRAHEAAACmBwAAKAAAALAzEQBxAAAAfwcAABoAAACwMxEAcQAAALgIAAA9AAAAsDMRAHEAAADHCAAAGQAAALAzEQBxAAAA1ggAAB8AAACwMxEAcQAAANcIAAAeAAAAsDMRAHEAAADOCAAANAAAAGRlZmVyc291cmNldGFyZ2V0aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogcGFyc2VfbGl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciAAABk2EQBNAAAAsDMRAHEAAAAQAQAACQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAACANhEASgAAAL4BAAAdAAAAAAAAAP//////////4DYRAEH47cQAC6ckL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfcGFyc2VyLTIyLjAuMi9zcmMvbGV4ZXIvc3RhdGUucnMA+DYRAGsAAABaAAAACQAAAAEAAAAAAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfbGV4ZXItMjIuMC4yL3NyYy9jb21tb24vcGFyc2VyL3N0bXQucnNUcmllZCB0byBwYXJzZSB0aGUgY29uZGl0aW9uIGZvciBhbiBpZiBzdGF0ZW1lbnR1c2luZwAAfDcRAHEAAACRAQAANAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGV8NxEAcQAAANEAAAAJAAAAfDcRAHEAAAD8AAAAFQAAAHw3EQBxAAAAFQEAAA8AAAB8NxEAcQAAAFYFAAAVAAAAInVzZSBzdHJpY3QiJ3VzZSBzdHJpY3QnfDcRAHEAAAB2BQAAEwAAAHw3EQBxAAAAUgEAAA8AAAB8NxEAcQAAANYDAAAWAAAAfDcRAHEAAADZAwAAEwAAAGludGVyZmFjZXB1YmxpY3N0YXRpY2Fic3RyYWN0aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBzeW50YXg6IFBhdDogETkRAD8AAAB8NxEAcQAAAJYAAAASAAAAAAAAAAQAAAAEAAAArAEAAElkZW50AAAAAAAAAAQAAAAEAAAArQEAAEFycmF5AAAAAAAAAAQAAAAEAAAArgEAAFJlc3QAAAAABAAAAAQAAACvAQAAT2JqZWN0AAAAAAAABAAAAAQAAACwAQAAQXNzaWduAAAAAAAABAAAAAQAAACxAQAASW52YWxpZAAAAAAABAAAAAQAAACgAQAARXhwci9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAAAIOhEASgAAAL4BAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfcGFyc2VyLTIyLjAuMi9zcmMvbGV4ZXIvdG9rZW4ucnMAZDoRAGsAAADcAgAAEQAAADAAAAAkAAAAIAAAACQAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMi4wLjIvc3JjL2NvbW1vbi9wYXJzZXIvbW9kdWxlX2l0ZW0ucnPwOhEAeAAAAGoBAABUAAAA8DoRAHgAAAB2AQAAOAAAAPA6EQB4AAAAeAEAAEgAAADwOhEAeAAAAGMCAAAYAAAAAQAAAAAAAADwOhEAeAAAAHwCAAAYAAAA8DoRAHgAAACZAgAAGAAAAPA6EQB4AAAAGwMAABoAAAB0eXBl4DsRAAQAAABzb3VyY2VkZWZlcmludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUA8DoRAHgAAAA9AwAAGgAAAPA6EQB4AAAAVwMAABgAAADwOhEAeAAAAGsDAAAcAAAA8DoRAHgAAABkAwAAGAAAAGEgc3RyaW5nIGxpdGVyYWzwOhEAeAAAAIYDAAASAAAA8DoRAHgAAAAIAwAAFgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGhhbmRsZV9pbXBvcnRfZXhwb3J0IHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIGN1cnJlbnQgdG9rZW4gaXNuJ3QgaW1wb3J0IG5vciBleHBvcnSQPBEAfAAAAPA6EQB4AAAAMAAAAAkAAABhcwAAJD0RAAIAAADwOhEAeAAAAFIAAAASAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAEA9EQBKAAAAvgEAAB0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9wYXJzZXItMjIuMC4yL3NyYy9sZXhlci9zdGF0ZS5ycwCcPREAawAAADAAAABBAAAAnD0RAGsAAAAxAAAAOAAAAJw9EQBrAAAAMgAAABkAAACcPREAawAAADIAAAAmAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfbGV4ZXItMjIuMC4yL3NyYy9jb21tb24vcGFyc2VyL3BhdC5yc0g+EQBwAAAA3AIAABAAAAABAAAAAAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGludmFsaWQgc3ludGF4OiBQYXQ6IADQPhEAPwAAAEg+EQBwAAAAJQIAABIAAABIPhEAcAAAAL8BAAATAAAASD4RAHAAAAC9AQAAEwAAAEg+EQBwAAAApQEAABMAAABvdmVycmlkZVg/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c3Njb25zdGNvbnRpbnVlZGVidWdnZXJkZWZhdWx0ZGVsZXRlZG9lbHNlZXhwb3J0ZXh0ZW5kc2ZhbHNlZmluYWxseWZvcmZ1bmN0aW9uaWZpbXBvcnRpbmluc3RhbmNlT2ZsZXRuZXdudWxscmV0dXJuc3VwZXJzd2l0Y2h0aGlzdGhyb3d0cnVldHJ5dHlwZU9mdmFydm9pZHdoaWxld2l0aHlpZWxkbW9kdWxlYWJzdHJhY3Rhbnlhc2Fzc2VydHNhc3NlcnRhc3luY2JpZ2ludGJvb2xlYW5jb25zdHJ1Y3RvcmRlY2xhcmVlbnVtZnJvbWdldGdsb2JhbGltcGxlbWVudHNpbnRlcmZhY2VpbnRyaW5zaWNpc2tleW9mbmFtZXNwYWNlbmV2ZXJudW1iZXJvYmplY3RvZm91dG92ZXJyaWRlcGFja2FnZXByaXZhdGVwcm90ZWN0ZWRwdWJsaWNyZWFkb25seXJlcXVpcmVzZXRzdGF0aWNzdHJpbmdzeW1ib2x0eXBldW5kZWZpbmVkdW5pcXVldW5rbm93bnVzaW5nYWNjZXNzb3JpbmZlcnNhdGlzZmllc21ldGF0YXJnZXQjITxsZXhpbmcgZXJyb3I6IAAAM0gRAA8AAAC5QxEAAQAAAIREEQBrAAAAQwQAABUAAAA8ZW9mPgAAAIREEQBrAAAALAUAABUAAAAAAAAABAAAAAQAAAC5AQAAV29yZLoBAAAIAAAACAAAALsBAAAAAAAABAAAAAQAAAC8AQAAVGVtcGxhdGVyYXdjb29rZWRTdHJ2YWx1ZVJlZ2V4ZmxhZ3MAAAAAAAgAAAAIAAAAvQEAAE51bQC+AQAABAAAAAQAAAC/AQAAQmlnSW50AAAAAAAABAAAAAQAAAC2AQAARXJyb3JpbnN0YW5jZW9mAEHkksUACwEBAEGBk8UACzoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEHIk8UAC2YBAAAA0AEAANEBAADRAQAAYWJzdHJhY3Rhc2F3YWl0YXN5bmNhc3NlcnRhc3NlcnRzYW55YWNjZXNzb3IAAAAAAAAAAAEAAADSAQAA0wEAANMBAABicmVha2Jvb2xlYW5iaWdpbnQAQbiUxQALKwEAAADUAQAA1QEAANUBAABjYXNlY2F0Y2hjbGFzc2NvbnN0Y29udGludWUAQeyUxQALLgEAAADWAQAA1wEAANcBAABkZWJ1Z2dlcmRlZmF1bHRkZWxldGVkb2RlY2xhcmUAQaSVxQALJQEAAADYAQAA2QEAANkBAABlbHNlZW51bWV4cG9ydGV4dGVuZHMAQdSVxQALKwEAAADaAQAA2wEAANsBAABmYWxzZWZpbmFsbHlmb3JmdW5jdGlvbmZyb20AQYiWxQALGQEAAADcAQAA3QEAAN0BAABnbG9iYWxnZXQAQayWxQALRwEAAADeAQAA3wEAAN8BAABpZmltcG9ydGluaW5zdGFuY2VvZmlzaW5mZXJpbnRlcmZhY2VpbXBsZW1lbnRzaW50cmluc2ljAEH8lsUACxUBAAAA4AEAAOEBAADhAQAAa2V5b2YAQZyXxQALEwEAAADiAQAA4wEAAOMBAABsZXQAQbiXxQALRwEAAADkAQAA5QEAAOUBAABtZXRhAAAAAAAAAAABAAAA5gEAAOcBAADnAQAAbmV3bnVsbG51bWJlcm5ldmVybmFtZXNwYWNlAEGImMUACyMBAAAA6AEAAOkBAADpAQAAb2ZvYmplY3RvdXRvdmVycmlkZQBBtJjFAAstAQAAAOoBAADrAQAA6wEAAHB1YmxpY3BhY2thZ2Vwcm90ZWN0ZWRwcml2YXRlAEHsmMUACyUBAAAA7AEAAO0BAADtAQAAcmV0dXJucmVhZG9ubHlyZXF1aXJlAEGcmcUACzkBAAAA7gEAAO8BAADvAQAAc3VwZXJzdGF0aWNzd2l0Y2hzeW1ib2xzZXRzdHJpbmdzYXRpc2ZpZXMAQeCZxQALYwEAAADwAQAA8QEAAPEBAAB0aGlzdGhyb3d0cnVldHlwZW9mdHJ5dHlwZXRhcmdldAAAAAAAAAAAAQAAAPIBAADzAQAA8wEAAHVzaW5ndW5pcXVldW5kZWZpbmVkdW5rbm93bgBBzJrFAAsXAQAAAPQBAAD1AQAA9QEAAHZhcnZvaWQAQeyaxQALGQEAAAD2AQAA9wEAAPcBAAB3aGlsZXdpdGgAQZCbxQAL+3cBAAAA+AEAAPkBAAD5AQAAeWllbGQAAAD6AQAA+wEAAPsBAAD7AQAA+wEAAPsBAAD7AQAA+wEAAPsBAAD7AQAA+wEAAPsBAAD7AQAA+wEAAPsBAAD7AQAA+wEAAPsBAAD7AQAA+wEAAPsBAAD7AQAA+wEAAPsBAAD7AQAA+wEAAPsBAAD7AQAA+wEAAPsBAAD7AQAA+wEAAPsBAAD8AQAA/QEAAP4BAAD/AQAAAAIAAAECAAD9AQAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAsCAAALAgAACwIAAAsCAAALAgAACwIAAAsCAAALAgAADAIAAA0CAAAOAgAADwIAABACAAARAgAAEgIAAP8BAAD/AQAA/wEAAP8BAAD/AQAA/wEAAP8BAAD/AQAA/wEAAP8BAAD/AQAA/wEAAP8BAAD/AQAA/wEAAP8BAAD/AQAA/wEAAP8BAAD/AQAA/wEAAP8BAAD/AQAA/wEAAP8BAAD/AQAAEwIAAP8BAAAUAgAAFQIAAP8BAAAWAgAAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAHQIAAP8BAAAeAgAA/wEAAB8CAAAgAgAAIQIAACICAAAjAgAAJAIAAP8BAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAD/AQAAKwIAAP8BAAAsAgAALQIAAC4CAAAvAgAA+wEAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAMAIAADACAAAwAgAAAQAAAAAAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAsFERAEoAAAC+AQAAHQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2xleGVyLTIyLjAuMi9zcmMvY29tbW9uL3BhcnNlci9idWZmZXIucnMADFIRAHMAAABrAAAAIAAAAE5vbmUAAAAABAAAAAQAAAC4AQAAU29tZWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9wYXJzZXItMjIuMC4yL3NyYy9wYXJzZXIvaW5wdXQucnPQUhEAbAAAACoAAAANAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogdG9rZW5fdmFsdWU6IABMUxEANwAAANBSEQBsAAAAMQAAAA0AAADQUhEAbAAAADkAAAANAAAA0FIRAGwAAABBAAAADQAAANBSEQBsAAAASQAAAA0AAADQUhEAbAAAAFEAAAANAAAA0FIRAGwAAABZAAAADQAAANBSEQBsAAAAYAAAAA0AAADQUhEAbAAAABABAAAoAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfcGFyc2VyLTIyLjAuMi9zcmMvbGliLnJzAAxUEQBjAAAAwgAAABYAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMi4wLjIvc3JjL2NvbW1vbi9wYXJzZXIvaWRlbnQucnNpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlAACAVBEAcgAAANQAAAAJAAAAYXdhaXQAAAAsVREABQAAAHlpZWxkAAAAPFURAAUAAABsZXQgaXMgcmVzZXJ2ZWQgaW4gY29uc3QsIGxldCwgY2xhc3MgZGVjbGFyYXRpb25pZGVudGlmaWVyIG9yIHN0cmluZy9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX3BhcnNlci0yMi4wLjIvc3JjL2xleGVyL3Rva2VuLnJzAJBVEQBrAAAAGQMAACQAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvc3BlY19mcm9tX2l0ZXJfbmVzdGVkLnJzAAAMVhEAXgAAABMAAAAFAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvdmVjL2luX3BsYWNlX2NvbGxlY3QucnMAAAB8VhEAWQAAAPsAAAABAAAAAAAAAAQAAAAEAAAAuQEAAE9rAAAAAAAABAAAAAQAAAC2AQAARXJyYWJzdHJhY3RyZWFkb25seW92ZXJyaWRlYWNjZXNzb3Jhcmd1bWVudHMvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAOFcRAEsAAABYBAAAEgAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAACUVxEASgAAAL4BAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfbGV4ZXItMjIuMC4yL3NyYy9jb21tb24vbGV4ZXIvY29tbWVudHNfYnVmZmVyLnJzAPBXEQB7AAAATAAAABMAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlVW5leHBlY3RlZCBlb2YvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMi4wLjIvc3JjL2Vycm9yLnJzRGVjbGFyYXRpb24gaXMgbm90IGFsbG93ZWRVc2luZyBkZWNsYXJhdGlvbiBpcyBub3QgYWxsb3dlZFVzaW5nIGRlY2xhcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIGZvci1pbiBsb29wVXNpbmcgZGVjbGFyYXRpb24gaXMgbm90IGVuYWJsZWQuIFNldCBqc2MucGFyc2VyLmV4cGxpY2l0UmVzb3VyY2VNYW5hZ2VtZW50IHRvIHRydWVVc2luZyBkZWNsYXJhdGlvbiBvbmx5IGFsbG93cyBpZGVudGlmaWVyc1VzaW5nIGRlY2xhcmF0aW9uIHJlcXVpcmVzIGluaXRpYWxpemVycHJpdmF0ZSBuYW1lcyBhcmUgbm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlSW52YWxpZCBgc3VwZXIoKWBJbnZhbGlkIGFjY2VzcyB0byBzdXBlckluZGV4IHN1cGVyIHdpdGggcHJpdmF0ZSBuYW1lIGlzIG5vdCBhbGxvd2VkJ25ldy50YXJnZXQnIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCBmdW5jdGlvbiBleHByZXNzaW9uLCBvciBjbGFzcy5JbXBvcnQgaXMgbm90IGFsbG93ZWQgaGVyZUFuIGFycm93IGZ1bmN0aW9uIGlzIG5vdCBhbGxvd2VkIGhlcmVgZXhwb3J0YCBpcyBub3QgYWxsb3dlZCBoZXJlQSBnZXR0ZXIgb3IgYSBzZXR0ZXIgY2Fubm90IGJlIHJlYWRvbmx5QSBnZXR0ZXIgb3IgYSBzZXR0ZXIgY2Fubm90IGJlIG9wdGlvbmFsQSBgZ2V0YCBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzQSBgc2V0YCBhY2Nlc3NvciBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVydG9wIGxldmVsIGF3YWl0IGlzIG9ubHkgYWxsb3dlZCBpbiBtb2R1bGVMZWdhY3kgZGVjaW1hbCBlc2NhcGUgaXMgbm90IHBlcm1pdHRlZCBpbiBzdHJpY3QgbW9kZUxlZ2FjeSBvY3RhbCBlc2NhcGUgaXMgbm90IHBlcm1pdHRlZCBpbiBzdHJpY3QgbW9kZUludmFsaWQgY2hhcmFjdGVyIGluIGlkZW50aWZpZXJhIGJpbmFyeWFuIG9jdGFsYSBkZWNpbWFsYSBoZXhhZGVjaW1hbEV4cGVjdGVkICBkaWdpdAAA11wRAAkAAADgXBEABgAAALJYEQBkAAAAQAEAABoAAABTZXR0ZXIgc2hvdWxkIGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVyUmVzdCBwYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIGluIHNldHRlclVudGVybWluYXRlZCBibG9jayBjb21tZW50VW50ZXJtaW5hdGVkIHN0cmluZyBjb25zdGFudEV4cGVjdGVkIHVuaWNvZGUgZXNjYXBlVW5leHBlY3RlZCBlc2NhcGUgc2VxdWVuY2UgaW4gcmVzZXJ2ZWQgd29yZDogAKJdEQAtAAAAVW50ZXJtaW5hdGVkIHJlZ2V4cCBsaXRlcmFsVW50ZXJtaW5hdGVkIHRlbXBsYXRlSWRlbnRpZmllciBjYW5ub3QgZm9sbG93IG51bWJlclVuZXhwZWN0ZWQgY2hhcmFjdGVyICdeEQAVAAAASW52YWxpZCBzdHJpbmcgZXNjYXBlSW52YWxpZCB1bmljb2RlIGVzY2FwZUJhZCBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlLCBleHBlY3RlZCAAb14RACgAAABFeHBlY3RlZCArLCAtIG9yIGRlY2ltYWwgZGlnaXQgYWZ0ZXIgZUxlZ2FjeSBjb21tZW50cyBjYW5ub3QgYmUgdXNlZCBpbiBtb2R1bGUgY29kZWBgIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGXzXhEAAQAAAPReEQAwAAAAYGF3YWl0YCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpZGVudGlmaWVyIGluIGFuIGFzeW5jIGNvbnRleHQnZXZhbCcgYW5kICdhcmd1bWVudHMnIGNhbm5vdCBiZSB1c2VkIGFzIGEgYmluZGluZyBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlJ2FyZ3VtZW50cycgaXMgb25seSBhbGxvd2VkIGluIGZ1bmN0aW9ucyBhbmQgY2xhc3MgbWV0aG9kc0lsbGVnYWwgJ3VzZSBzdHJpY3QnIGRpcmVjdGl2ZSBpbiBmdW5jdGlvbiB3aXRoIG5vbi1zaW1wbGUgcGFyYW1ldGVyIGxpc3QuJyoqJyBjYW5ub3QgYmUgYXBwbGllZCB0byB1bmFyeS9hd2FpdCBleHByZXNzaW9uLlVuZXhwZWN0ZWQgdG9rZW4gJyMnTGluZUJyZWFrIGNhbm5vdCBmb2xsb3cgJ3Rocm93J1VuZXhwZWN0ZWQgbGluZSBicmVhayBiZXR3ZWVuIGFycm93IGhlYWQgYW5kIGFycm93VW5leHBlY3RlZCB0b2tlbiBgYC4gRXhwZWN0ZWQgANVgEQASAAAA52ARAAwAAAAgLCBvciAAAAdhEQADAAAAIG9yIFVuZXhwZWN0ZWQgdG9rZW4uIERpZCB5b3UgbWVhbiA/GGERAB8AAAA3YREAAQAAAGNhbm5vdCBpbXBvcnQgYXMgcmVzZXJ2ZWQgd29yZGFzc2lnbm1lbnQgcHJvcGVydHkgaXMgaW52YWxpZCBzeW50YXhFeHBlY3RlZCAnJywgZ290ICcnAACLYREACgAAAJVhEQAIAAAAnWERAAEAAABFeHBlY3RlZCAnOycsICd9JyBvciA8ZW9mPmF3YWl0KiBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGFzeW5jIGZ1bmN0aW9ucyBwcm9wb3NhbC4gVXNlIFByb21pc2UuYWxsKCkgaW5zdGVhZC5DYW5ub3QgdXNlIGEgcmVzZXJ2ZWQgd29yZCBhcyBhIHNob3J0aGFuZCBwcm9wZXJ0eU51bGxpc2ggY29hbGVzY2luZyBvcGVyYXRvcig/PykgcmVxdWlyZXMgcGFyZW5zIHdoZW4gbWl4aW5nIHdpdGggbG9naWNhbCBvcGVyYXRvcnNBIHN3aXRjaCBibG9jayBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBkZWZhdWx0c1RyYWlsaW5nIGNvbW1hIGlzbid0IHBlcm1pdHRlZCBhZnRlciBhIHJlc3QgZWxlbWVudFJlc3QgZWxlbWVudCBtdXN0IGJlIGZpbmFsIGVsZW1lbnRQYXJlbnRoZXNpemVkIGV4cHJlc3Npb24gY2Fubm90IGNvbnRhaW4gc3ByZWFkIG9wZXJhdG9yUGFyZW50aGVzaXplZCBleHByZXNzaW9uIGNhbm5vdCBiZSBlbXB0eU5vdCBhIHBhdHRlcm5Ob3QgYW4gZXhwcmVzc2lvbkNhbm5vdCBhc3NpZ24gdG8gdGhpc0ludmFsaWQgYXNzaWdubWVudCB0YXJnZXRFeHBlY3RlZCBpZGVudEV4cGVjdGVkICc7JyBvciBsaW5lIGJyZWFrTGFiZWwgIGlzIGFscmVhZHkgZGVjbGFyZWQAAAD/YxEABgAAAAVkEQAUAAAAQW4gYXN5bmMgZnVuY3Rpb24gY2Fubm90IGJlIGdlbmVyYXRvcidpbXBvcnQnLCBhbmQgJ2V4cG9ydCcgYXJlIG5vdCBwZXJtaXR0ZWQgaGVyZSdpbXBvcnQnLCBhbmQgJ2V4cG9ydCcgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBtb2R1bGUgY29kZSdpbXBvcnQubWV0YScgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBtb2R1bGUgY29kZS5EZXN0cnVjdHVyaW5nIGJpbmRpbmdzIHJlcXVpcmUgaW5pdGlhbGl6ZXJzV2l0aCBzdGF0ZW1lbnQgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlUmV0dXJuIHN0YXRlbWVudCBpcyBub3QgYWxsb3dlZCBoZXJlRXhwZWN0ZWQgb25lIHZhcmlhYmxlIGJpbmRpbmdVbmV4cGVjdGVkIGluaXRpYWxpemVyIGluIGZvciBpbi9vZiBsb29wR2VuZXJhdG9yIG9yIGFzeW5jIGZ1bmN0aW9uIGNhbm5vdCBiZSBsYWJlbGxlZEZ1bmN0aW9uIGNhbm5vdCBiZSBsYWJlbGxlZCBpbiBzdHJpY3QgbW9kZSd5aWVsZCcgY2Fubm90IGJlIHVzZWQgYXMgYSBwYXJhbWV0ZXIgd2l0aGluIGdlbmVyYXRvcmBhd2FpdGAgZXhwcmVzc2lvbnMgY2Fubm90IGJlIHVzZWQgaW4gYSBwYXJhbWV0ZXIgaW5pdGlhbGl6ZXIuZm9yIGF3YWl0IHN5bnRheCBpcyB2YWxpZCBvbmx5IGZvciBmb3Itb2Ygc3RhdGVtZW50YXdhaXQgaXNuJ3QgYWxsb3dlZCBpbiBub24tYXN5bmMgZnVuY3Rpb25VbnRlcm1pbmF0ZWQgSlNYIGNvbnRlbnRzSlNYIGF0dHJpYnV0ZXMgbXVzdCBvbmx5IGJlIGFzc2lnbmVkIGEgbm9uLWVtcHR5IGV4cHJlc3Npb25KU1ggdmFsdWUgc2hvdWxkIGJlIGVpdGhlciBhbiBleHByZXNzaW9uIG9yIGEgcXVvdGVkIEpTWCB0ZXh0RXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yIDw+RXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yIDw+AACVZxEALAAAAMFnEQABAAAATGVhZGluZyBkZWNvcmF0b3JzIG11c3QgYmUgYXR0YWNoZWQgdG8gYSBjbGFzcyBkZWNsYXJhdGlvblVzaW5nIHRoZSBleHBvcnQga2V5d29yZCBiZXR3ZWVuIGEgZGVjb3JhdG9yIGFuZCBhIGNsYXNzIGlzIG5vdCBhbGxvd2VkLiBQbGVhc2UgdXNlIGBleHBvcnQgQGRlYyBjbGFzc2AgaW5zdGVhZC5BIHJlcXVpcmVkIGVsZW1lbnQgY2Fubm90IGZvbGxvdyBhbiBvcHRpb25hbCBlbGVtZW50LlR5cGVzY3JpcHQgcGFyYW1ldGVyIHByb3BlcnR5IG11c3QgYmUgYW4gaWRlbnRpZmllciBvciBhc3NpZ25tZW50IHBhdHRlcm5VbmV4cGVjdGVkIHNwYWNlIGJldHdlZW4gIyBhbmQgaWRlbnRpZmllckNvbnN0cnVjdG9yIGNhbid0IGJlIGFuIGFzeW5jIGZ1bmN0aW9uQ2xhc3NlcyBtYXkgbm90IGhhdmUgYSBub24tc3RhdGljIGZpZWxkIG5hbWVkICdjb25zdHJ1Y3RvcidDbGFzc2VzIGNhbid0IGhhdmUgYSBwcml2YXRlIGZpZWxkIG5hbWVkICcjY29uc3RydWN0b3InLicgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgd2l0aCBhIHByaXZhdGUgaWRlbnRpZmllcgAAAJ1hEQABAAAAvmkRADMAAABDbGFzcyBjb25zdHJ1Y3RvciBjYW4ndCBiZSBhbiBhY2Nlc3Nvci5BIG1ldGhvZCBjYW5ub3QgYmUgcmVhZG9ubHlBIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBnZW5lcmF0b3JBIGNsYXNzIGNhbiBvbmx5IGhhdmUgb25lIGNvbnN0cnVjdG9yQSBiaW5kaW5nIHBhdHRlcm4gcGFyYW1ldGVyIGNhbm5vdCBiZSBvcHRpb25hbCBpbiBhbiBpbXBsZW1lbnRhdGlvbiBzaWduYXR1cmUuU3VwZXIgY2FsbCBjYW5ub3QgYmUgb3B0aW9uYWxDb25zdHJ1Y3RvciBpbi9hZnRlciBhbiBvcHRpb25hbCBjaGFpbmluZyBpcyBub3QgYWxsb3dlZC5UYWdnZWQgdGVtcGxhdGUgbGl0ZXJhbCBpcyBub3QgYWxsb3dlZCBpbiBvcHRpb25hbCBjaGFpbi5UcmFpbGluZyBjb21tYSBpcyBkaXNhbGxvd2VkIGluc2lkZSBpbXBvcnQoLi4uKSBhcmd1bWVudHNleHBvcnQgZGVmYXVsdCBzdGF0ZW1lbnRzIHJlcXVpcmVkIGZyb20gJy4uLic7YCBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IGBmcm9tYCBjbGF1c2UAAPNeEQABAAAA0GsRACYAAABgLi4uYCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFuIGlkZW50aWZpZXIgaW4gZGVjbGFyYXRpb24gY29udGV4dHNBIG51bWVyaWMgc2VwYXJhdG9yIGlzIG9ubHkgYWxsb3dlZCBiZXR3ZWVuIHR3byBkaWdpdHNBIHN0cmluZyBsaXRlcmFsIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcuCi0gRGlkIHlvdSBtZWFuIGBpbXBvcnQgeyAiIiBhcyBmb28gfWA/AH1sEQBSAAAAz2wRAAwAAABBIHN0cmluZyBsaXRlcmFsIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGV4cG9ydGVkIGJpbmRpbmcgd2l0aG91dCBgZnJvbWAuJ2NvbnN0JyBkZWNsYXJhdGlvbnMgbXVzdCBiZSBpbml0aWFsaXplZER1cGxpY2F0ZWQgcmVndWxhciBleHByZXNzaW9uIGZsYWcgJycuWm0RACQAAAB+bREAAgAAAFVua25vd24gcmVndWxhciBleHByZXNzaW9uIGZsYWdzLkV4cGVjdGVkIGFuIGlkZW50aWZpZXJFeHBlY3RlZCBhIHNlbWljb2xvblRyYWlsaW5nIGNvbW1hIGlzIG5vdCBhbGxvd2VkQSByZXN0IHBhcmFtZXRlciBtdXN0IGJlIGxhc3QgaW4gYSBwYXJhbWV0ZXIgbGlzdFBhcmFtZXRlciBjYW5ub3QgaGF2ZSBxdWVzdGlvbiBtYXJrIGFuZCBpbml0aWFsaXplcicgbW9kaWZpZXIgbXVzdCBwcmVjZWRlICcnIG1vZGlmaWVyLp1hEQABAAAAXG4RABkAAAB1bhEACwAAACcgbW9kaWZpZXIgYWxyZWFkeSBzZWVuLp1hEQABAAAAmG4RABgAAABgZGVjbGFyZWAgbW9kaWZpZXIgY2Fubm90IGFwcGVhciBvbiBjbGFzcyBlbGVtZW50cyBvZiB0aGlzIGtpbmRgZGVjbGFyZWAgbW9kaWZpZXIgbm90IGFsbG93ZWQgZm9yIGNvZGUgYWxyZWFkeSBpbiBhbiBhbWJpZW50IGNvbnRleHRgYXN5bmNgIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIGhlcmVBIHJlc3QgcGFyYW1ldGVyIGNhbm5vdCBiZSBvcHRpb25hbEEgcmVzdCBwYXJhbWV0ZXIgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXJqc2MudGFyZ2V0IHNob3VsZCBiZSBlczUgb3IgdXBwZXIgdG8gdXNlIGdldHRlciAvIHNldHRlckxlZ2FjeSBvY3RhbCBsaXRlcmFscyBhcmUgbm90IGF2YWlsYWJsZSB3aGVuIHRhcmdldGluZyBFQ01BU2NyaXB0IDUgYW5kIGhpZ2hlcicgbW9kaWZpZXIgY2Fubm90IGFwcGVhciBvbiBhIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uAAAAnWERAAEAAAA8cBEANQAAAFR5cGUgcGFyYW1ldGVycyBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb25BbiBpbmRleCBzaWduYXR1cmUgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlclR5cGUgcGFyYW1ldGVyIGxpc3QgY2Fubm90IGJlIGVtcHR5SW52YWxpZCB1c2Ugb2YgJ2FyZ3VtZW50cycgaW4gc3RyaWN0IG1vZGUnZGVsZXRlJyBjYW5ub3QgYmUgY2FsbGVkIG9uIGFuIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGVBICdicmVhaycgc3RhdGVtZW50IGNhbiBvbmx5IGJlIHVzZWQgd2l0aGluIGFuIGVuY2xvc2luZyBpdGVyYXRpb24gb3Igc3dpdGNoIHN0YXRlbWVudFRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhIGBmb3IuLi5vZmAgc3RhdGVtZW50IG1heSBub3QgYmUgYGFzeW5jYEp1bXAgdGFyZ2V0IGNhbm5vdCBjcm9zcyBmdW5jdGlvbiBib3VuZGFyeUV4cHJlc3Npb24gZXhwZWN0ZWR0eXBlIGV4cGVjdGVkRHVwbGljYXRlIGxhYmVsQSAnY29udGludWUnIHN0YXRlbWVudCBjYW4gb25seSBqdW1wIHRvIGEgbGFiZWwgb2YgYW4gZW5jbG9zaW5nIGl0ZXJhdGlvbiBzdGF0ZW1lbnRBICdicmVhaycgc3RhdGVtZW50IGNhbiBvbmx5IGp1bXAgdG8gYSBsYWJlbCBvZiBhbiBlbmNsb3Npbmcgc3RhdGVtZW50VmFyaWFibGUgZGVjbGFyYXRpb24gbGlzdCBjYW5ub3QgYmUgZW1wdHlsaXRlcmFsIGluIGFuIGltcG9ydCB0eXBlIHNob3VsZCBiZSBzdHJpbmcgbGl0ZXJhbEFuIG9iamVjdCBtZW1iZXIgY2Fubm90IGJlIGRlY2xhcmVkIG9wdGlvbmFsQ29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgYXJlIG5vdCBhbGxvd2VkIGluIGVudW1zQSBjb21tYSBleHByZXNzaW9uIGlzIG5vdCBhbGxvd2VkIGluIGEgY29tcHV0ZWQgcHJvcGVydHkgbmFtZWBleHRlbmRzYCBjbGF1c2UgYWxyZWFkeSBzZWVuLidleHRlbmRzJyBjbGF1c2UgbXVzdCBwcmVjZWRlICdpbXBsZW1lbnRzJyBjbGF1c2UuQ2xhc3NlcyBjYW4gb25seSBleHRlbmQgYSBzaW5nbGUgY2xhc3NgaW1wbGVtZW50c2AgY2xhdXNlIGFscmVhZHkgc2VlbkFuIGltcGxlbWVudGF0aW9uIGNhbm5vdCBiZSBkZWNsYXJlZCBpbiBhbWJpZW50IGNvbnRleHRzTW9kaWZpZXJzIGNhbm5vdCBhcHBlYXIgaGVyZU1lcmdlIGNvbmZsaWN0IG1hcmtlciBlbmNvdW50ZXJlZC5UeXBlIGFubm90YXRpb24gY2Fubm90IGFwcGVhciBvbiBhIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uQ2F0Y2ggY2xhdXNlIHZhcmlhYmxlIGNhbm5vdCBoYXZlIGEgdHlwZSBhbm5vdGF0aW9uYGFic3RyYWN0YCBtb2RpZmllciBjYW4gb25seSBhcHBlYXIgb24gYSBjbGFzcyBvciBtZXRob2QgZGVjbGFyYXRpb24nIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIHdpdGggJwAAAJ1hEQABAAAArXURACAAAAB1bhEACwAAAEFic3RyYWN0IG1ldGhvZHMgY2FuIG9ubHkgYXBwZWFyIHdpdGhpbiBhbiBhYnN0cmFjdCBjbGFzcy5BYnN0cmFjdCBtZXRob2QgY2Fubm90IGhhdmUgYW4gaW1wbGVtZW50YXRpb24uQWJzdHJhY3QgcHJvcGVydHkgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXIuJyBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGEgdHlwZSBwYXJhbWV0ZXIAAACdYREAAQAAAH12EQAsAAAAJyBtb2RpZmllciBjYW4gb25seSBhcHBlYXIgb24gYSB0eXBlIHBhcmFtZXRlciBvZiBhIGNsYXNzLCBpbnRlcmZhY2Ugb3IgdHlwZSBhbGlhcwAAnWERAAEAAAC8dhEAUgAAACcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgdHlwZSBwYXJhbWV0ZXIgb2YgYSBmdW5jdGlvbiwgbWV0aG9kIG9yIGNsYXNzAAAAnWERAAEAAAAgdxEATQAAAFRoZSAndHlwZScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgb24gYSBuYW1lZCBpbXBvcnQgd2hlbiAnaW1wb3J0IHR5cGUnIGlzIHVzZWQgb24gaXRzIGltcG9ydCBzdGF0ZW1lbnQuVGhlICd0eXBlJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCBvbiBhIG5hbWVkIGV4cG9ydCB3aGVuICdleHBvcnQgdHlwZScgaXMgdXNlZCBvbiBpdHMgZXhwb3J0IHN0YXRlbWVudC5BIHBhcmFtZXRlciBwcm9wZXJ0eSBpcyBvbmx5IGFsbG93ZWQgaW4gYSBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvbkEgcGFyYW1ldGVyIGluaXRpYWxpemVyIGlzIG9ubHkgYWxsb3dlZCBpbiBhIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGFuIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBtdXN0IGJlIGEgdmFyaWFibGUgb3IgYSBwcm9wZXJ0eSBhY2Nlc3MuVGhlICd3aXRoJyBzdGF0ZW1lbnQgaXMgbm90IHN1cHBvcnRlZC4gQWxsIHN5bWJvbHMgaW4gYSAnd2l0aCcgYmxvY2sgd2lsbCBoYXZlIHR5cGUgJ2FueScuSW52YWxpZCBjbGFzcyBuYW1laW50ZXJmYWNlIG5hbWUgaXMgaW52YWxpZEFuIGVudW0gbWVtYmVyIGNhbm5vdCBoYXZlIGEgbnVtZXJpYyBuYW1lVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgJ2Zvci4uLm9mJyBzdGF0ZW1lbnQgY2Fubm90IHVzZSBhIHR5cGUgYW5ub3RhdGlvblRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhICdmb3IuLi5pbicgc3RhdGVtZW50IGNhbm5vdCBiZSBhIGRlc3RydWN0dXJpbmcgcGF0dGVybkFuIGludGVyZmFjZSBjYW4gb25seSBleHRlbmQgYW4gaWRlbnRpZmllci9xdWFsaWZpZWQtbmFtZSB3aXRoIG9wdGlvbmFsIHR5cGUgYXJndW1lbnRzLlRoZSBvcGVyYW5kIG9mIGEgZGVsZXRlIG9wZXJhdG9yIG11c3QgYmUgYSBwcm9wZXJ0eSByZWZlcmVuY2UuVGhpcyBtZW1iZXIgY2Fubm90IGhhdmUgYW4gJ292ZXJyaWRlJyBtb2RpZmllciBiZWNhdXNlIGl0cyBjb250YWluaW5nIGNsYXNzIGRvZXMgbm90IGV4dGVuZCBhbm90aGVyIGNsYXNzLkRlY29yYXRvcnMgbWF5IG5vdCBhcHBlYXIgYWZ0ZXIgYGV4cG9ydGAgb3IgYGV4cG9ydCBkZWZhdWx0YCBpZiB0aGV5IGFsc28gYXBwZWFyIGJlZm9yZSBgZXhwb3J0YC5BbiBhY2Nlc3NpYmlsaXR5IG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIHdpdGggYSBwcml2YXRlIGlkZW50aWZpZXIuVHlwZSBhbm5vdGF0aW9ucyBtdXN0IGNvbWUgYmVmb3JlIGRlZmF1bHQgYXNzaWdubWVudHNUeXBlc2NyaXB0IG5vbi1udWxsIGFzc2VydGlvbiBvcGVyYXRvciBpcyBub3QgYWxsb3dlZCB3aXRoICcAW3wRADwAAACdYREAAQAAAFRoaXMgc3ludGF4IGlzIHJlc2VydmVkIGluIGZpbGVzIHdpdGggdGhlIC5tdHMgb3IgLmN0cyBleHRlbnNpb24uIFVzZSBhbiBgYXNgIGV4cHJlc3Npb24gaW5zdGVhZC5UaGlzIHN5bnRheCBpcyByZXNlcnZlZCBpbiBmaWxlcyB3aXRoIHRoZSAubXRzIG9yIC5jdHMgZXh0ZW5zaW9uLiBBZGQgYSB0cmFpbGluZyBjb21tYSwgYXMgaW4gYDxULD4oKSA9PiAuLi5gLlRoaXMgaXMgdGhlIGV4cHJlc3Npb24gcGFydCBvZiBhbiBleHByZXNzaW9uIHN0YXRlbWVudHByZXZpb3VzIGRlZmF1bHQgY2FzZSBpcyBkZWNsYXJlZCBhdCBoZXJlAAAAAAAABAAAAAQAAAA7AgAARXJyb3JlcnJvckVvZkRlY2xOb3RBbGxvd2VkVXNpbmdEZWNsTm90QWxsb3dlZFVzaW5nRGVjbE5vdEFsbG93ZWRGb3JGb3JJbkxvb3BVc2luZ0RlY2xOb3RFbmFibGVkSW52YWxpZE5hbWVJblVzaW5nRGVjbEluaXRSZXF1aXJlZEZvclVzaW5nRGVjbFByaXZhdGVOYW1lSW5JbnRlcmZhY2VJbnZhbGlkU3VwZXJDYWxsSW52YWxpZFN1cGVySW52YWxpZFN1cGVyUHJpdmF0ZU5hbWVJbnZhbGlkTmV3VGFyZ2V0SW52YWxpZEltcG9ydEFycm93Tm90QWxsb3dlZEV4cG9ydE5vdEFsbG93ZWRHZXR0ZXJTZXR0ZXJDYW5ub3RCZVJlYWRvbmx5R2V0dGVyU2V0dGVyQ2Fubm90QmVPcHRpb25hbEdldHRlclBhcmFtU2V0dGVyUGFyYW1Ub3BMZXZlbEF3YWl0SW5TY3JpcHRMZWdhY3lEZWNpbWFsTGVnYWN5T2N0YWxJbnZhbGlkSWRlbnRDaGFyAAAAAAAABAAAAAQAAAA8AgAARXhwZWN0ZWREaWdpdHJhZGl4U2V0dGVyUGFyYW1SZXF1aXJlZFJlc3RQYXRJblNldHRlclVudGVybWluYXRlZEJsb2NrQ29tbWVudFVudGVybWluYXRlZFN0ckxpdEV4cGVjdGVkVW5pY29kZUVzY2FwZQAAAAAABAAAAAQAAAC5AQAARXNjYXBlSW5SZXNlcnZlZFdvcmR3b3JkVW50ZXJtaW5hdGVkUmVnRXhwVW50ZXJtaW5hdGVkVHBsSWRlbnRBZnRlck51bQAAAAAAAAQAAAAEAAAANwIAAFVuZXhwZWN0ZWRDaGFyY0ludmFsaWRTdHJFc2NhcGVJbnZhbGlkVW5pY29kZUVzY2FwZQAAAAAABAAAAAQAAABuAQAAQmFkQ2hhcmFjdGVyRXNjYXBlU2VxdWVuY2VleHBlY3RlZE51bUxpdFRlcm1pbmF0ZWRXaXRoRXhwTGVnYWN5Q29tbWVudEluTW9kdWxlSW52YWxpZElkZW50SW5TdHJpY3RJbnZhbGlkSWRlbnRJbkFzeW5jRXZhbEFuZEFyZ3VtZW50c0luU3RyaWN0QXJndW1lbnRzSW5DbGFzc0ZpZWxkSWxsZWdhbExhbmd1YWdlTW9kZURpcmVjdGl2ZQAAPQIAAAwAAAAEAAAAPgIAAAAAAAAEAAAABAAAAD8CAABVbmFyeUluRXhwbGVmdGxlZnRfc3Bhbkhhc2hMaW5lQnJlYWtJblRocm93TGluZUJyZWFrQmVmb3JlQXJyb3dVbmV4cGVjdGVkZ290AAAAAAQAAAAEAAAAQAIAAFVuZXhwZWN0ZWRUb2tlbldpdGhTdWdnZXN0aW9uc2NhbmRpZGF0ZV9saXN0UmVzZXJ2ZWRXb3JkSW5JbXBvcnRBc3NpZ25Qcm9wZXJ0eQAAAAAAAAQAAAAEAAAAQQIAAEV4cGVjdGVkRXhwZWN0ZWRTZW1pRm9yRXhwclN0bXRleHByQXdhaXRTdGFyUmVzZXJ2ZWRXb3JkSW5PYmpTaG9ydGhhbmRPclBhdE51bGxpc2hDb2FsZXNjaW5nV2l0aExvZ2ljYWxPcE11bHRpcGxlRGVmYXVsdHByZXZpb3VzQ29tbWFBZnRlclJlc3RFbGVtZW50Tm9uTGFzdFJlc3RQYXJhbVNwcmVhZEluUGFyZW5FeHByRW1wdHlQYXJlbkV4cHJJbnZhbGlkUGF0SW52YWxpZEV4cHJOb3RTaW1wbGVBc3NpZ25JbnZhbGlkQXNzaWduVGFyZ2V0RXhwZWN0ZWRJZGVudEV4cGVjdGVkU2VtaUR1cGxpY2F0ZUxhYmVsQXN5bmNHZW5lcmF0b3JOb25Ub3BMZXZlbEltcG9ydEV4cG9ydEltcG9ydEV4cG9ydEluU2NyaXB0SW1wb3J0TWV0YUluU2NyaXB0UGF0VmFyV2l0aG91dEluaXRXaXRoSW5TdHJpY3RSZXR1cm5Ob3RBbGxvd2VkVG9vTWFueVZhckluRm9ySW5IZWFkVmFySW5pdGlhbGl6ZXJJbkZvckluSGVhZExhYmVsbGVkR2VuZXJhdG9yT3JBc3luY0xhYmVsbGVkRnVuY3Rpb25JblN0cmljdFlpZWxkUGFyYW1JbkdlbkF3YWl0UGFyYW1JbkFzeW5jQXdhaXRGb3JTdG10QXdhaXRJbkZ1bmN0aW9uVW50ZXJtaW5hdGVkSlNYQ29udGVudHNFbXB0eUpTWEF0dHJJbnZhbGlkSlNYVmFsdWVKU1hFeHBlY3RlZENsb3NpbmdUYWdGb3JMdEd0SlNYRXhwZWN0ZWRDbG9zaW5nVGFndGFnSW52YWxpZExlYWRpbmdEZWNvcmF0b3JEZWNvcmF0b3JPbkV4cG9ydFRzUmVxdWlyZWRBZnRlck9wdGlvbmFsVHNJbnZhbGlkUGFyYW1Qcm9wUGF0U3BhY2VCZXR3ZWVuSGFzaEFuZElkZW50QXN5bmNDb25zdHJ1Y3RvclByb3BlcnR5TmFtZWRDb25zdHJ1Y3RvclByaXZhdGVDb25zdHJ1Y3RvclByaXZhdGVOYW1lTW9kaWZpZXJDb25zdHJ1Y3RvckFjY2Vzc29yUmVhZE9ubHlNZXRob2RHZW5lcmF0b3JDb25zdHJ1Y3RvckR1cGxpY2F0ZUNvbnN0cnVjdG9yVHNCaW5kaW5nUGF0Q2Fubm90QmVPcHRpb25hbFN1cGVyQ2FsbE9wdGlvbmFsT3B0Q2hhaW5DYW5ub3RGb2xsb3dDb25zdHJ1Y3RvckNhbGxUYWdnZWRUcGxJbk9wdENoYWluVHJhaWxpbmdDb21tYUluc2lkZUltcG9ydEV4cG9ydERlZmF1bHRXaXRoT3V0RnJvbUV4cG9ydEV4cGVjdEZyb21Eb3RzV2l0aG91dElkZW50aWZpZXJOdW1lcmljU2VwYXJhdG9ySXNBbGxvd2VkT25seUJldHdlZW5Ud29EaWdpdHNJbXBvcnRCaW5kaW5nSXNTdHJpbmdFeHBvcnRCaW5kaW5nSXNTdHJpbmdDb25zdERlY2xhcmF0aW9uc1JlcXVpcmVJbml0aWFsaXphdGlvbkR1cGxpY2F0ZWRSZWdFeHBGbGFnc1Vua25vd25SZWdFeHBGbGFnc1RTMTAwM1RTMTAwNVRTMTAwOVRTMTAxNFRTMTAxNQAAQgIAAAgAAAAIAAAAuwEAAFRTMTAyOVRTMTAzMFRTMTAzMVRTMTAzOFRTMTA0MlRTMTA0N1RTMTA0OFRTMTA1NlRTMTA4NVRTMTA4OVRTMTA5MlRTMTA5NlRTMTA5OFRTMTEwMFRTMTEwMlRTMTEwNVRTMTEwNlRTMTEwN1RTMTEwOVRTMTExMFRTMTExNFRTMTExNVRTMTExNlRTMTEyM1RTMTE0MVRTMTE2MlRTMTE2NFRTMTE3MVRTMTE3MlRTMTE3M1RTMTE3NFRTMTE3NVRTMTE4M1RTMTE4NFRTMTE4NVRTMTA5M1RTMTE5NlRTMTI0MlRTMTI0M1RTMTI0NFRTMTI0NVRTMTI2N1RTMTI3M1RTMTI3NFRTMTI3N1RTMjIwNlRTMjIwN1RTMjM2OVRTMjM3MVRTMjQwNlRTMjQxMFRTMjQxNFRTMjQyN1RTMjQ1MlRTMjQ4M1RTMjQ5MVRTMjQ5OVRTMjcwM1RTNDExMlRTODAzOFRTMTgwMTBUU1R5cGVBbm5vdGF0aW9uQWZ0ZXJBc3NpZ25Uc05vbk51bGxBc3NlcnRpb25Ob3RBbGxvd2VkAABDAgAABAAAAAQAAABEAgAAAAAAAAgAAAAEAAAAoQEAAFdpdGhMYWJlbGlubmVyc3Bhbm5vdGVSZXNlcnZlZFR5cGVBc3NlcnRpb25SZXNlcnZlZEFycm93VHlwZVBhcmFtAAAAsVwRAEGUk8YACwe5XBEAwVwRAEGkk8YACwXKXBEACABBtJPG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AAAAAAAEAAAABAAAAFsDAAAAAAAABAAAAAQAAABcAwAARXhwb3J0TmFtZWQAAAAAAAQAAAAEAAAAXQMAAEV4cG9ydERlZmF1bHREZWNsAAAAAAAAAAQAAAAEAAAAXgMAAEV4cG9ydERlZmF1bHRFeHByAAAAAAAAAAQAAAAEAAAAXwMAAAAAAAAEAAAABAAAAGADAABUc0ltcG9ydEVxdWFscwAAAAAAAAQAAAAEAAAAYQMAAFRzRXhwb3J0QXNzaWdubWVudAAAAAAAAAQAAAAEAAAAYgMAAFRzTmFtZXNwYWNlRXhwb3J0AAAAAAAAAAQAAAAEAAAAuQIAAENsYXNzAAAAAAAAAAQAAAAEAAAAqQIAAEZuAAAAAAAABAAAAAQAAABLAgAAVHNJbnRlcmZhY2VEZWNsRXZhbHVhdGlvblNvdXJjZURlZmVyYwMAAAwAAAAEAAAAZAMAAGUDAAAEAAAABAAAAGYDAABOYW1lZEV4cG9ydAAAAAAABAAAAAQAAABnAwAATmFtZXNwYWNlAAAAAAAAAAQAAAAEAAAAaAMAAERlZmF1bHQAAAAAAAQAAAAEAAAAaQMAAE5hbWVkAAAAAAAAAAQAAAAEAAAAagMAAAAAAAAEAAAABAAAAGsDAAAAAAAABAAAAAQAAABsAwAAAAAAAAQAAAAEAAAAVwIAAFN0cgAAAAAABAAAAAQAAABtAwAAbgMAACgAAAAIAAAAbwMAAHADAAAoAAAACAAAAHEDAABFeHBvcnROYW1lZFNwZWNpZmllcm9yaWdleHBvcnRlZGlzX3R5cGVfb25seUltcG9ydE5hbWVkU3BlY2lmaWVybG9jYWxpbXBvcnRlZEltcG9ydFN0YXJBc1NwZWNpZmllckV4cG9ydERlZmF1bHRTcGVjaWZpZXJJbXBvcnREZWZhdWx0U3BlY2lmaWVyRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyc3RyaW5nbnVsbG51bWJlcm9iamVjdGFueXVua25vd25ib29sZWFuYmlnaW50c3ltYm9sdm9pZG5ldmVyaW50cmluc2ljcXVvdGFtcGFwb3NsdGd0bmJzcGlleGNsY2VudHBvdW5kY3VycmVueWVuYnJ2YmFyc2VjdHVtbGNvcHlvcmRmbGFxdW9ub3RzaHlyZWdtYWNyZGVncGx1c21uc3VwMnN1cDNhY3V0ZW1pY3JvcGFyYW1pZGRvdGNlZGlsc3VwMW9yZG1yYXF1b2ZyYWMxNGZyYWMxMmZyYWMzNGlxdWVzdEFncmF2ZUFhY3V0ZUFjaXJjQXRpbGRlQXVtbEFyaW5nQUVsaWdDY2VkaWxFZ3JhdmVFYWN1dGVFY2lyY0V1bWxJZ3JhdmVJYWN1dGVJY2lyY0l1bWxFVEhOdGlsZGVPZ3JhdmVPYWN1dGVPY2lyY090aWxkZU91bWx0aW1lc09zbGFzaFVncmF2ZVVhY3V0ZVVjaXJjVXVtbFlhY3V0ZVRIT1JOc3psaWdhZ3JhdmVhYWN1dGVhY2lyY2F0aWxkZWF1bWxhcmluZ2FlbGlnY2NlZGlsZWdyYXZlZWFjdXRlZWNpcmNldW1saWdyYXZlaWFjdXRlaWNpcmNpdW1sZXRobnRpbGRlb2dyYXZlb2FjdXRlb2NpcmNvdGlsZGVvdW1sZGl2aWRlb3NsYXNodWdyYXZldWFjdXRldWNpcmN1dW1seWFjdXRldGhvcm55dW1sT0VsaWdvZWxpZ1NjYXJvbnNjYXJvbll1bWxmbm9mY2lyY3RpbGRlQWxwaGFCZXRhR2FtbWFEZWx0YUVwc2lsb25aZXRhRXRhVGhldGFJb3RhS2FwcGFMYW1iZGFNdU51WGlPbWljcm9uUGlSaG9TaWdtYVRhdVVwc2lsb25QaGlDaGlQc2lPbWVnYWFscGhhYmV0YWdhbW1hZGVsdGFlcHNpbG9uemV0YWV0YXRoZXRhaW90YWthcHBhbGFtYmRhbXVudXhpb21pY3JvbnBpcmhvc2lnbWFmc2lnbWF0YXV1cHNpbG9ucGhpY2hpcHNpb21lZ2F0aGV0YXN5bXVwc2locGl2ZW5zcGVtc3B0aGluc3B6d25qendqbHJtcmxtbmRhc2htZGFzaGxzcXVvcnNxdW9zYnF1b2xkcXVvcmRxdW9iZHF1b2RhZ2dlckRhZ2dlcmJ1bGxoZWxsaXBwZXJtaWxwcmltZVByaW1lbHNhcXVvcnNhcXVvb2xpbmVmcmFzbGV1cm9pbWFnZXdlaWVycHJlYWx0cmFkZWFsZWZzeW1sYXJydWFycnJhcnJkYXJyaGFycmNyYXJybEFycnVBcnJyQXJyZEFycmhBcnJmb3JhbGxwYXJ0ZXhpc3RlbXB0eW5hYmxhaXNpbm5vdGlubmlwcm9kc3VtbWludXNsb3dhc3RyYWRpY2luZmluYW5nYW5kb3JjYXBjdXBpbnR0aGVyZTRzaW1jb25nYXN5bXBuZWVxdWl2bGVnZXN1YnN1cG5zdWJzdWJlc3VwZW9wbHVzb3RpbWVzcGVycHNkb3RsY2VpbHJjZWlsbGZsb29ycmZsb29ybGFuZ3Jhbmdsb3pzcGFkZXNjbHVic2hlYXJ0c2RpYW1zAAoAAAAGAAAABQAAAI+qEQCZqhEAn6oRAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYXJ0c3RyaW5nLTEuMC4xL3NyYy9vcHMucnMAACCxEQBeAAAAegAAADsAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL251bS9tb2QucnMAkLERAEsAAABEBgAAAQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvY2hhci9tZXRob2RzLnJz7LERAFAAAAAlBwAADQAAAAAAAAABAAAAAQAAAHMDAAAAAAAABAAAAAQAAABcAgAAQmxvY2sAAAAAAAAABAAAAAQAAABzAgAARW1wdHkAAAAAAAAABAAAAAQAAADPAgAARGVidWdnZXIAAAAABAAAAAQAAADQAgAAV2l0aAAAAAAEAAAABAAAANECAABSZXR1cm4AAAAAAAAEAAAABAAAANICAABMYWJlbGVkAAAAAAAEAAAABAAAANMCAABCcmVhawAAAAAAAAAEAAAABAAAANQCAABDb250aW51ZQAAAAAEAAAABAAAANUCAABJZgAAAAAAAAQAAAAEAAAA1gIAAFN3aXRjaAAAAAAAAAQAAAAEAAAA1wIAAFRocm93AAAAAAAAAAQAAAAEAAAA2AIAAFRyeQAAAAAABAAAAAQAAADZAgAAV2hpbGUAAAAAAAAABAAAAAQAAADaAgAARG9XaGlsZQAAAAAABAAAAAQAAADbAgAARm9yAAAAAAAEAAAABAAAANwCAABGb3JJbgAAAAAAAAAEAAAABAAAAN0CAABGb3JPZgAA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xwALBwEBAQEBAQEAQZuBxwALBgEBAQEAAQBBu4HHAAvwFgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMi4wLjIvc3JjL2NvbW1vbi9sZXhlci9tb2QucnNmYWlsZWQgdG8gcGFyc2Ugc3RyaW5nIGFzIG51bWJlcgBAwREAbwAAALkDAAAvAAAAZmFpbGVkIHRvIHBhcnNlIG51bWJlciBhcyBjaGFyAABAwREAbwAAALsDAAAOAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfbGV4ZXItMjIuMC4yL3NyYy9jb21tb24vcGFyc2VyL3V0aWwucnMuAAABAAAAAAAAAIHCEQABAAAAOgAAAAEAAAAAAAAAlMIRAAEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBVc2luZyBpcyBub3QgYSB2YWxpZCBkZWNsYXJhdGlvbiBmb3IgYGRlY2xhcmVgIGtleXdvcmSowhEAYAAAABDCEQBxAAAAVQAAABwAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9sZXhlci0yMi4wLjIvc3JjL2NvbW1vbi9sZXhlci9tb2QucnM6MTkxc3djX2VjbWFfbGV4ZXI6OmNvbW1vbjo6bGV4ZXJtZXNzYWdlAAAAtsMRAAcAAAAAAAAADAAAAAQAAACNAwAAjgMAAI8DAAABAAAAvwAAAAMAAAAgwxEAeQAAAJnDEQAdAAAAwMMRAAEAAABAIRoAyMMRAJnDEQAdAAAAQMERAG8AAAAB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c1R5cGVQcmVkaWNhdGVhc3NlcnRzcGFyYW1fbmFtZQAAAAAEAAAABAAAACIDAABJbXBvcnRUc0NvbnN0QXNzZXJ0aW9uAADOAwAABAAAAAQAAADPAwAAaXNfc3RhdGljAAAAAAAAAAQAAAAEAAAAsAEAAEFzc2lnbgAA0AMAAAQAAAAEAAAA0QMAAFRzQ29uZGl0aW9uYWxUeXBlY2hlY2tfdHlwZWV4dGVuZHNfdHlwZXRydWVfdHlwZWZhbHNlX3R5cGUAANIDAAAEAAAABAAAANMDAABUc0NvbnN0cnVjdG9yVHlwZWlzX2Fic3RyYWN0a2V5Y29tcHV0ZWRUc0FueUtleXdvcmRUc1Vua25vd25LZXl3b3JkVHNOdW1iZXJLZXl3b3JkVHNPYmplY3RLZXl3b3JkVHNCb29sZWFuS2V5d29yZFRzQmlnSW50S2V5d29yZFRzU3RyaW5nS2V5d29yZFRzU3ltYm9sS2V5d29yZFRzVm9pZEtleXdvcmRUc1VuZGVmaW5lZEtleXdvcmRUc051bGxLZXl3b3JkVHNOZXZlcktleXdvcmRUc0ludHJpbnNpY0tleXdvcmQAAAAAAAAEAAAABAAAANQDAACfxBEABAAAAKDPEQADAAAAo88RAAgAAAB4xREACAAAAJDHEQAGAAAAYMcRAAgAAACWxxEACwAAAAAAAAAEAAAABAAAAJYCAAAAAAAABAAAAAQAAAAQAwAAVHNFeHBvcnRBc3NpZ25tZW50VHNFeHByV2l0aFR5cGVBcmdzVHNJbnRlcnNlY3Rpb25UeXBlVHNJbXBvcnRDYWxsT3B0aW9uc3dpdGhUc0luZGV4ZWRBY2Nlc3NUeXBlb2JqX3R5cGVpbmRleF90eXBlVHNQYXJlbnRoZXNpemVkVHlwZQAAAJ/EEQAEAAAAaskRAAgAAACgzxEAAwAAAKPPEQAIAAAAeMURAAgAAABgxxEACAAAAAAAAAAEAAAABAAAANUDAAAAAAAABAAAAAQAAADWAwAAVHNOYW1lc3BhY2VFeHBvcnREZWNsAAAAAAAAAAQAAAAEAAAA1wMAAAAAAAAEAAAABAAAANgDAADfxBEASwAAALsEAAASAAAAAAAAAAQAAAAEAAAA2QMAANoDAADaAwAAAAAAAAQAAAAEAAAA2wMAANwDAADcAwAAL2hvbWUvcnVu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BAAAT3B0Q2hhaW5FeHByb3B0aW9uYWxiYXNlAAAAAAQAAAAEAAAATAMAAFNwcmVhZAAAAAAAAAQAAAAEAAAABAQAAFByb3BTcHJlYWRFbGVtZW50ZG90M190b2tlbgAAAAAACAAAAAQAAAAFBAAAAAAAAAQAAAAEAAAABgQAAFN1cGVyUHJvcEV4cHIAAAAAAAAABAAAAAQAAACtAQAAQXJyYXkAAAAAAAAABAAAAAQAAACvAQAAT2JqZWN0AAAAAAAABAAAAAQAAACxAQAASW52YWxpZAAAAAAABAAAAAQAAACsAQAAAAAAAAQAAAAEAAAArgIAAE1lbWJlcgAAAAAAAAQAAAAEAAAArwIAAFN1cGVyUHJvcAAAAAAAAAAEAAAABAAAAL0CAABQYXJlbgAAAAAAAAAEAAAABAAAAMkCAABPcHRDaGFpbgAAAAAEAAAABAAAAMYCAABUc0FzAAAAAAQAAAAEAAAAyAIAAFRzU2F0aXNmaWVzAAAAAAAEAAAABAAAAMUCAABUc05vbk51bGwAAAAAAAAABAAAAAQAAADDAgAAVHNUeXBlQXNzZXJ0aW9uAAAAAAAEAAAABAAAAMcCAABUc0luc3RhbnRpYXRpb24vcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAAA/bEQBKAAAAqAEAAB8AAAAP2xEASgAAAL4BAAAdAEGEt8cAC9sEAQAAAAcEAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlTGF5b3V0RXJyb3IvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zbWFydHN0cmluZy0xLjAuMS9zcmMvaW5saW5lLnJzAMLbEQBhAAAAKwAAACsAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zbWFydHN0cmluZy0xLjAuMS9zcmMvYm94ZWQucnM03BEAYAAAAEEAAAAOAAAANNwRAGAAAAB2AAAAJAAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvY29tcGFjdF9zdHItMC43LjEvc3JjL3JlcHIvbW9kLnJzAEHru8cAC9ICwEF0dGVtcHRlZCB0byByZXNlcnZlIG1vcmUgdGhhbiAndXNpemUnIGJ5dGVzfN0RAGMAAADzAAAADgAAAHzdEQBjAAAAQgEAACUAAAB2YWxpZCBjYXBhY2l0eS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbXBhY3Rfc3RyLTAuNy4xL3NyYy9yZXByL2hlYXAucnMAAEbeEQBkAAAAqQEAAEIAAAD////+L3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwDA3hEATwAAAOIFAAAUAAAAwN4RAE8AAADiBQAAIQAAAMDeEQBPAAAA1gUAACEAQci+xwALBgEAAAANBABB2L7HAAvdCAEAAAAOBAAADwQAAAwAAAAEAAAAEAQAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWVFcnJvcgEAAAAAAAAAZm10OjpEaXNwbGF5IGluY29ycmVjdGx5IGltcGxlbWVudGVkIS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbXBhY3Rfc3RyLTAuNy4xL3NyYy90cmFpdHMucnMAAM3fEQBhAAAAaAAAACkAAAAvcnVzdGMvMTcw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AABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAACD5xEASwAAAH0FAAAbAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy41L3NyYy9hcmNoL2FsbC9wYWNrZWRwYWlyL21vZC5ycwAAAODnEQBtAAAAwwAAAAkAAADg5xEAbQAAALwAAAAqAAAA4OcRAG0AAAC5AAAAKgAAAODnEQBtAAAAOgAAABUAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9tZW1jaHItMi43LjUvc3JjL21lbW1lbS9zZWFyY2hlci5ycwAAAJDoEQBlAAAAdAIAABsAAAAAAAAABAAAAAQAAAAfBAAAVHJ5RnJvbUludEVycm9yAIPnEQBLAAAAuwQAABIAAAAAAAAADAAAAAQAAAAgBAAAIQQAAExhenkgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAATOkRACoAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9vbmNlX2NlbGwtMS4yMS4zL3NyYy9saWIucnMAAACA6REAXQAAAB8FAAAZAAAAI19fUFVSRV9fSW5maW5pdHktSW5maW5pdHlOYU4AAAABAEGf1McAC9EqIJqZmZmZmZmZmZmZmZmZmRkVrkfhehSuR+F6FK5H4XoU3iQGgZVDi2zn+6nx0k1iEJbUCWgibHh6pSxDHOviNhqrQ26GG/D5YYTwaOOItfgUIjZYOEnzx7Q2je21oPfGEGojjcAOUqaHV0ivvJry1xqIT9dmpUG4n985jDDijnkVB6YSH1EBLeaylNYm6AsuEaQJUcuBaK7Wt7q919nffBvqOqeiNO3x3l+VZHnhf/0Vu8iF6PbwJ38ZEeotgZmX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aXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbXBhY3Rfc3RyLTAuNy4xL3NyYy9saWIucnNpZHggbXVzdCBsaWUgb24gY2hhciBib3VuZGFyeQCyFRIAHQAAAFQVEgBeAAAAiQMAAAkAAAAAAAAABAAAAAQAAAAjBAAAJAQAACUEAEGIrMgAC/8YAQAAACYEAABMYXlvdXRFcnJvcnZhbGlkIGNhcGFjaXR5L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvY29tcGFjdF9zdHItMC43LjEvc3JjL3JlcHIvaGVhcC5ycwAAACkWEgBkAAAAdgEAAEIAAAB2YWxpZCBsYXlvdXQpFhIAZAAAAHkBAAAOAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC5ycwAAALwWEgBhAAAALAAAAB0AAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAMBcSAEoAAACoAQAAHwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQucnMAAACMFxIAYQAAACwAAAAdAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9vcHRpb24ucnMAAAAYEgBKAAAA9wcAAB8AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9hc3QtMTQuMC4wL3NyYy9leHByLnJzL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfYXN0LTE0LjAuMC9zcmMvY2xhc3MucnMAvRgSAGIAAAARAAAAAQAAAFwYEgBhAAAA/AEAAAEAAABcGBIAYQAAABECAAABAAAAXBgSAGEAAADNAwAAAQAAAFwYEgBhAAAA/gMAAAEAAABcGBIAYQAAABIEAAABAAAAbmV3LnRhcmdldGltcG9ydC5tZXRhAAAAXBgSAGEAAABxBAAAAQAAAFwYEgBhAAAAjAYAAAEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9hc3QtMTQuMC4wL3NyYy9mdW5jdGlvbi5ycwAAALgZEgBlAAAADAAAAAEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9hc3QtMTQuMC4wL3NyYy9qc3gucnMwGhIAYAAAAG8AAAABAAAAMBoSAGAAAADnAAAAAQAAADAaEgBgAAAAEgEAAAEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9hc3QtMTQuMC4wL3NyYy9wYXQucnPAGhIAYAAAAFYAAAABAAAAwBoSAGAAAABoAAAAAQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2FzdC0xNC4wLjAvc3JjL3N0bXQucnMAAABAGxIAYQAAAAwAAAABAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfYXN0LTE0LjAuMC9zcmMvdHlwZXNjcmlwdC5ycwC0GxIAZwAAACUAAAABAAAAtBsSAGcAAABHAAAAAQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQucnMAAAA8HBIAYQAAACwAAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfYXN0LTE0LjAuMC9zcmMvdHlwZXNjcmlwdC5ycy9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2FzdC0xNC4wLjAvc3JjL2V4cHIucnMXHRIAYQAAABECAAABAAAAsBwSAGcAAAAlAAAAAQAAALAcEgBnAAAARwAAAAEAAACwHBIAZwAAAOABAAABAAAAsBwSAGcAAADuAQAAAQAAALAcEgBnAAAAUQIAAAEAAACwHBIAZwAAAGMCAAABAAAAsBwSAGcAAACXAgAAAQAAALAcEgBnAAAAoAIAAAEAAABrZXlvZnVuaXF1ZXJlYWRvbmx5ALAcEgBnAAAAaQMAAAEAAAAFAAAABgAAAAgAAAAIHhIADR4SABMeEgBkZWJ1Z2dlcmNvbnRpbnVlZnVuY3Rpb25pbnN0YW5jZW9mYXJndW1lbnRzInVzZSBzdHJpY3QiJ3VzZSBzdHJpY3QnL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfYXN0LTE0LjAuMC9zcmMvY2xhc3MucnMAAACHHhIAYgAAABEAAAABAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfYXN0LTE0LjAuMC9zcmMvZGVjbC5ycwAAAPweEgBhAAAAlQAAAAEAAAD8HhIAYQAAAN0AAAABAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfYXN0LTE0LjAuMC9zcmMvZnVuY3Rpb24ucnMAAACAHxIAZQAAAAwAAAABAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfYXN0LTE0LjAuMC9zcmMvc3RtdC5ycwAAAPgfEgBhAAAADAAAAAEAAAD4HxIAYQAAADMBAAABAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2VjbWFfYXN0LTE0LjAuMC9zcmMvdHlwZXNjcmlwdC5ycwB8IBIAZwAAACUAAAABAAAAfCASAGcAAABHAAAAAQAAAHwgEgBnAAAAeQMAAAEAAAB8IBIAZwAAAIcDAAABAAAAfCASAGcAAACqAwAAAQAAAHwgEgBnAAAA9gMAAAEAAAB7KDxbaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19lY21hX2FzdC0xNC4wLjAvc3JjL2xpc3QucnMAAABwIRIAYQAAAMYAAAASAAAAfSk+XXAhEgBhAAAA0AAAABIAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfZWNtYV9hc3QtMTQuMC4wL3NyYy9wYXQucnP4IRIAYAAAAFYAAAABAAAA+CESAGAAAABoAAAAAQAAAEQhEgBFIRIAAAAAAEYhEgBBlMXIAAsTRyESAOQhEgDlIRIAAAAAAOYhEgBBtMXIAAv/BuchEgB2YXJsZXRjb25zdD09IT09PT0hPT08PD0+Pj08PD4+Pj4+Ky0qLyV8XiZ8fCYmaW5pbnN0YW5jZW9mKio/Pz0rPS09Kj0vPSU9PDw9Pj49Pj4+PXw9Xj0mPSoqPSYmPXx8PT8/PSsrLS0hfnR5cGVvZnZvaWRkZWxldGUAAwAAAAMAAAAFAAAAuCISALsiEgC+IhIAAgAAAAIAAAADAAAAAwAAAAEAAAACAAAAAQAAAAIAAAACAAAAAgAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAoAAAACAAAAAgAAAMMiEgDFIhIAxyISAMoiEgDNIhIAziISANAiEgDRIhIA0yISANUiEgDXIhIA2iISANsiEgDcIhIA3SISAN4iEgDfIhIA4CISAOEiEgDiIhIA5CISAOYiEgDoIhIA8iISAPQiEgABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAQAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAA9iISAPciEgD5IhIA+yISAP0iEgD/IhIAASMSAAQjEgAHIxIACyMSAA0jEgAPIxIAESMSABQjEgAXIxIAGiMSAAEAAAABAAAAAQAAAAEAAAAGAAAABAAAAAYAAADbIhIA2iISACEjEgAiIxIAIyMSACkjEgAtIxIAAAAAAP//////////AAAAAAwAAAAEAAAALgQAAC8EAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAOwkEgAqAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvbGliLnJzAAAAICUSAF0AAAAfBQAAGQAAAEhhc2ggdGFibGUgY2FwYWNpdHkgb3ZlcmZsb3eQJRIAHAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2hhc2hicm93bi0wLjE0LjUvc3JjL3Jhdy9tb2QucnMAAAC0JRIAYQAAAFYAAAAoAAAA//////////8oJhIAQcDMyAALAQEAQczMyAALwgoEAAAABAAAADAEAAAxBAAAMgQAADMEAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9wb29sLnJzAGQmEgBnAAAAXgIAABwAAABkJhIAZwAAAGsCAAAyAAAAZCYSAGcAAABvAgAAFwAAAGQmEgBnAAAAAQMAABUAAABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5RXJyb3IAAAAAAAAABAAAAAQAAABBAgAAAAAAAAQAAAAEAAAANAQAAAAAAAAEAAAABAAAADUEAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlbgAAAAAAAAAEAAAABAAAADYEAABJbwAAAAAAAAQAAAAEAAAAxQAAAFV0ZjgAAAAABAAAAAQAAAA3BAAAQmFkSnNvblZscUxlZnRvdmVyVmxxTm9WYWx1ZXNWbHFPdmVyZmxvdwAAAAAEAAAABAAAADgEAABCYWRTZWdtZW50U2l6ZUJhZFNvdXJjZVJlZmVyZW5jZUJhZE5hbWVSZWZlcmVuY2VJbmNvbXBhdGlibGVTb3VyY2VNYXBJbnZhbGlkRGF0YVVybENhbm5vdEZsYXR0ZW5JbnZhbGlkUmFtQnVuZGxlTWFnaWNJbnZhbGlkUmFtQnVuZGxlSW5kZXhJbnZhbGlkUmFtQnVuZGxlRW50cnlOb3RBUmFtQnVuZGxlAAAAAAQAAAAEAAAAOQQAAEludmFsaWRSYW5nZU1hcHBpbmdJbmRleAAAAAAEAAAABAAAADoEAABJbnZhbGlkQmFzZTY0aW52YWxpZCB1dGYtODogY29ycnVwdCBjb250ZW50czsEAAAIAAAABAAAAOoAAAA7BAAACAAAAAQAAADCAAAA6gAAAAwpEgDrAAAA7AAAAO0AAADuAAAAPAQAAAAAAAAIAAAABAAAAD0EAAAAAAAACAAAAAQAAAA+BAAAPQQAAEgpEgA/BAAAQAQAAEEEAABCBAAAPAQAAEMEAAAEAAAABAAAANgAAABDBAAABAAAAAQAAADZAAAA2AAAAIQpEgDaAAAA2wAAAEQEAADcAAAAPAQAAEUEAAAUAAAABAAAAEYEAABFBAAAFAAAAAQAAABHBAAARgQAAMApEgBIBAAASQQAAEQEAABIBAAAPAQAAEoEAAAMAAAABAAAAEsEAABKBAAADAAAAAQAAABMBAAASwQAAPwpEgA/BAAATQQAAEQEAABOBAAAPAQAAE8EAAAwAAAABAAAAFAEAABPBAAAMAAAAAQAAABRBAAAUAQAADgqEgBSBAAAUwQAAFQEAABVBAAAVgQAAAAAAAAEAAAABAAAAOkAAABjb250ZXh0AEoEAAAMAAAABAAAAEwEAABzb3VyY2UAAFcEAABYBAAAWQQAAFoEAABbBAAAXAQAAF0EAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAwCoSAEoAAAC+AQAAHQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAAAcKxIASgAAAL4BAAAdAAAAYAQAAAwAAAAEAAAAYQQAAGIEAABjBABBmNfIAAvVHgEAAABkBAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAA1ysSAEsAAADRCgAADgAAAEVycm9yAAAA1ysSAEsAAAB/BQAAGgAAANcrEgBLAAAAfQUAABsAAADXKxIASwAAAFgEAAASAAAAU3ludGF4KAoKAAAAAQAAAAAAAAB0LBIAAQAAAClDb21waWxlZFRvb0JpZwAAAAAABAAAAAQAAABlBAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtMS4xMS4xL3NyYy9idWlsZGVycy5ycwAAqCwSAF4AAABCAAAAEAAAAAEAAACoLBIAXgAAAEcAAAAJAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcG9vbC5ycwAsLRIAZwAAAF4CAAAcAAAALC0SAGcAAABrAgAAMgAAACwtEgBnAAAAbwIAABcAAAAsLRIAZwAAAAEDAAAVAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcG9vbC5ycwDULRIAZwAAAD0CAAAcAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwBMLhIATwAAABUBAAAZAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZ2xvYnNldC0wLjQuMTYvc3JjL3BhdGh1dGlsLnJzrC4SAGAAAAAPAAAAMwAAAKwuEgBgAAAAEQAAACEAAACsLhIAYAAAADMAAAAzAAAArC4SAGAAAAA1AAAAIQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9tb2QucnNMLxIATAAAAFYKAAAkAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAKgvEgBKAAAAYgMAAAkAAACoLxIASgAAAL4BAAAdAAAAQWhvQ29yYXNpY2s6OnRyeV9maW5kIGlzIG5vdCBleHBlY3RlZCB0byBmYWlsL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9haG9jb3Jhc2ljay5yc0EwEgBnAAAAlgEAAA4AAABoBAAAZAEAAAQAAABpBAAAaAQAAGQBAAAEAAAAagQAAGsEAABsBAAAbQQAAG4EAABvBAAAcAQAAHEEAAByBAAAcwQAAHQEAAB1BAAAdgQAAHcEAAB4BAAAeQQAAHoEAABpBAAAuDASAHsEAABIAQAABAAAAHwEAAB7BAAASAEAAAQAAAB9BAAAfgQAAH8EAABtBAAAgAQAAIEEAACCBAAAgwQAAIQEAACFBAAAhgQAAIcEAACIBAAAiQQAAIoEAACLBAAAjAQAAHwEAAAgMRIAjQQAAFwBAAAEAAAAjgQAAI0EAABcAQAABAAAAI8EAACQBAAAkQQAAG0EAACSBAAAkwQAAJQEAACVBAAAlgQAAJcEAACYBAAAmQQAAJoEAACbBAAAnAQAAJ0EAACeBAAAjgQAAIgxEgAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL25mYS9jb250aWd1b3VzLnJzAADwMRIAagAAAHECAAAWAAAA8DESAGoAAABzAgAADQAAAAAAAADwMRIAagAAAHUCAAANAAAA8DESAGoAAAApAgAACQAAAPAxEgBqAAAATwIAAA0AAADwMRIAagAAAEoCAAANAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9uZmEvbm9uY29udGlndW91cy5ycwAAAMAyEgBtAAAAIgEAACAAAADAMhIAbQAAADIBAAAhAAAAwDISAG0AAABUAQAAHQAAAMAyEgBtAAAAZgEAABcAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1zeW50YXgtMC44LjUvc3JjL2hpci9tb2QucnMAcDMSAGMAAABXAQAAGQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvaGlyL2xpdGVyYWwucnMA5DMSAGcAAADRBAAADwAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnNcNBIAWAAAAMEHAAAJAAAAnwQAAAQAAAAEAAAAoAQAAE5vbmUAAAAABAAAAAQAAAChBAAAU29tZQAAAAAIAAAABAAAAKIEAAAAAAAABAAAAAQAAACjBAAAAAAAAAEAAAABAAAApAQAAAAAAAAEAAAABAAAAGcEAAAAAAAABAAAAAQAAACLAQAAbWluaW11bV9sZW5tYXhpbXVtX2xlbmxvb2tfc2V0bG9va19zZXRfcHJlZml4bG9va19zZXRfc3VmZml4bG9va19zZXRfcHJlZml4X2FueWxvb2tfc2V0X3N1ZmZpeF9hbnl1dGY4ZXhwbGljaXRfY2FwdHVyZXNfbGVuc3RhdGljX2V4cGxpY2l0X2NhcHR1cmVzX2xlbmxpdGVyYWxhbHRlcm5hdGlvbl9saXRlcmFsAAAAPDUSAAsAAABHNRIACwAAAFI1EgAIAAAAWjUSAA8AAABpNRIADwAAAHg1EgATAAAAizUSABMAAACeNRIABAAAAKI1EgAVAAAAtzUSABwAAADTNRIABwAAANo1EgATAAAAUHJvcGVydGllc0kApQQAAAQAAAAEAAAApgQAAKcEAAAYAAAABAAAAKgEAACpBAAAEAAAAAQAAACqBAAAU2VhcmNoZXJwYXR0ZXJuc3JhYmlua2FycHNlYXJjaF9raW5kAAAAAAQAAAAEAAAAqwQAAFRlZGR5UmFiaW5LYXJwAAAAAAAABAAAAAQAAACsBAAATWF0Y2hFcnJvci9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvZGZhLnJzAAAA6jYSAF8AAADhAAAAEwAAAOo2EgBfAAAABQEAABoAAADqNhIAXwAAAB0BAAAVAAAA6jYSAF8AAAAdAQAAHQAAAOo2EgBfAAAAFgEAABUAAABJbnZhbGlkSW5wdXRBbmNob3JlZEludmFsaWRJbnB1dFVuYW5jaG9yZWQAAAAAAAAEAAAABAAAAK0EAABVbnN1cHBvcnRlZFN0cmVhbWdvdFVuc3VwcG9ydGVkT3ZlcmxhcHBpbmdVbnN1cHBvcnRlZEVtcHR5AACuBAAADAAAAAQAAACvBAAAYnVja2V0c2hhc2hfbGVuaGFzaF8ycG93L3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQucnMAADw4EgBKAAAA6QYAAB8AAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAmDgSAEoAAAC+AQAAHQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvaGlyL2ludGVydmFsLnJz9DgSAGgAAAAhAAAACgAAAPAxEgBqAAAAxQAAABwAAADwMRIAagAAAN0AAAAZAAAA8DESAGoAAADdAAAAIgAAAPAxEgBqAAAA6gAAAC0AAADwMRIAagAAAOcAAAAtAAAA8DESAGoAAADkAAAALQAAAPAxEgBqAAAA4QAAAC0AAADwMRIAagAAANQAAAApAAAA8DESAGoAAADOAAAAKQAAAPAxEgBqAAAA9QAAACAAAADwMRIAagAAABoBAAAaAAAA8DESAGoAAAAwAQAAFwAAAPAxEgBqAAAAKQEAADcAAADAMhIAbQAAAJkCAAAaAAAAwDISAG0AAACtAgAAKwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9tZXRhL3JldmVyc2VfaW5uZXIucnNcOhIAcAAAAEsAAAAaAAAAXDoSAHAAAABcAAAAMAAAAAEAQfj1yAALiwQBAAAAAQAAALAEAACxBAAAsgQAALMEAAC0BAAAAAAAAAIAAAABAAAAtQQAALYEAAC3BAAAswQAALQEAAAAAAAAAwAAAAEAAAC4BAAAuQQAALoEAACzBAAAtAQAALsEAABIAAAACAAAALwEAAC9BAAAvgQAAL8EAADABAAAwQQAAJABAAAEAAAAwgQAAMMEAADEBAAAxQQAAMYEAAAAAAAAAAEAAAEAAADHBAAAyAQAAMkEAACzBAAAygQAAMsEAAAMAAAABAAAAMwEAADNBAAAzgQAAM8EAADQBAAAAAAAAAQAAAAEAAAA0QQAAEFob0NvcmFzaWNrYWMAAAAAAAAABAAAAAQAAADSBAAAQnl0ZVNldAAAAAAABAAAAAQAAADTBAAATWVtY2hyAAAAAAAAAQAAAAEAAADUBAAATWVtY2hyMk1lbWNocjMAAAAAAAAEAAAABAAAANUEAABNZW1tZW1maW5kZXLWBAAAMAAAAAQAAADXBAAAc2VhcmNoZXJhbmNob3JlZF9hYwDYBAAACAAAAAQAAADZBAAAUHJlZmlsdGVycHJlaXNfZmFzdG1heF9uZWVkbGVfbGVuUXVpdGJ5dGVvZmZzZXRHYXZlVXBIYXlzdGFja1Rvb0xvbmdsZW4AAAAAAAQAAAAEAAAA2gQAAFVuc3VwcG9ydGVkQW5jaG9yZWRtb2RlAEGM+sgAC70QAQAAAOIEAAAAAAAACAAAAAgAAADjBAAAAAAAAAQAAAAEAAAA5AQAAFVuaWNvZGVXb3JkRXJyb3IvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvZGZhL29uZXBhc3MucnMAAABEPRIAaQAAADYCAAAcAAAAAAAAAEQ9EgBpAAAAXAIAAAkAAABEPRIAaQAAAHICAAAsAAAAbXVsdGlwbGUgZXBzaWxvbiB0cmFuc2l0aW9ucyB0byBtYXRjaCBzdGF0ZQBEPRIAaQAAAGcCAAAxAAAAdG9vIG1hbnkgZXhwbGljaXQgY2FwdHVyaW5nIGdyb3VwcyAobWF4IGlzIDE2KW1hdGNoIHN0YXRlcyBzaG91bGQgYmUgYSBwcm9wZXIgc3Vic2V0IG9mIGFsbCBzdGF0ZXMAAEQ9EgBpAAAA7QIAADsAAABjb25mbGljdGluZyB0cmFuc2l0aW9uYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5kZmEuc3RhcnRzLmlzX2VtcHR5KCkAAEQ9EgBpAAAAMQMAABUAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmRmYS5zdGFydHMubGVuKCkgPT0gcGlkLm9uZV9tb3JlKCkAAABEPRIAaQAAADMDAAAaAAAARD0SAGkAAAA2AwAAGQAAAEQ9EgBpAAAATQMAADEAAABEPRIAaQAAAFQDAAAbAAAARD0SAGkAAABVAwAAIQAAAG11bHRpcGxlIGVwc2lsb24gdHJhbnNpdGlvbnMgdG8gc2FtZSBzdGF0ZQAARD0SAGkAAACXAwAAFAAAAEQ9EgBpAAAA6AcAAB0AAABEPRIAaQAAAOgHAAAvAAAARD0SAGkAAADpBwAAGwAAAEQ9EgBpAAAA6QcAACsAAABEPRIAaQAAAFcIAAAuAAAARD0SAGkAAACsCAAAEgAAAEQ9EgBpAAAAtwgAABQAAABEPRIAaQAAANQIAAATAAAARD0SAGkAAADcCAAAEwAAAEQ9EgBpAAAA7AgAABsAAABEPRIAaQAAAPcIAAAjAAAARD0SAGkAAAD9CAAAEwAAAEQ9EgBpAAAAFQkAAEEAAABEPRIAaQAAACIJAAAYAAAARD0SAGkAAAAsCQAAJgAAAG9uZXBhc3M6OkRGQSgKCnN0YXRlIGxlbmd0aDogAAAAr0ASAA4AAACuQBIAAQAAAHBhdHRlcm4gbGVuZ3RoOiDQQBIAEAAAAK5AEgABAAAAKQoAAPBAEgACAAAAU1RBUlQoQUxMKTog/EASAAwAAACuQBIAAQAAAFNUQVJUKHBhdHRlcm46ICk6IAAAGEESAA8AAAAnQRIAAwAAAK5AEgABAAAAICAqIEQgAAABAAAAAAAAACAoKQBUQRIAAgAAAFZBEgABAAAAOiAsIC0gPT4gAAAAAQAAAAAAAABsQRIAAQAAAG1BEgAEAAAAAQAAAAAAAABtQRIABAAAACAoTVcpAAAARD0SAGkAAAAOCgAAIQAAAGxBEgABAAAAL04vQVMvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvZGZhL3JlbWFwcGVyLnJzAMFBEgBqAAAAlQAAACAAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvbmZhL3Rob21wc29uL25mYS5ycwAAPEISAG4AAAB5AgAAFwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL2xvb2sucnMAvEISAGcAAACkAwAAKAAAALxCEgBnAAAAsAMAACYAAAC8QhIAZwAAAL0DAAAQAAAAvEISAGcAAADMAwAAEAAAALxCEgBnAAAA2gMAADgAAAC8QhIAZwAAADcEAAAxAAAAc2luY2UgdW5pY29kZS13b3JkLWJvdW5kYXJ5LCBzeW50YXggYW5kIHVuaWNvZGUtcGVybCBhcmUgYWxsIGVuYWJsZWQsIGl0IGlzIGV4cGVjdGVkIHRoYXQgdHJ5X2lzX3dvcmRfY2hhcmFjdGVyIHN1Y2NlZWRzvEISAGcAAAA0BgAANwAAALxCEgBnAAAAQQYAAC0AAAC8QhIAZwAAAEMGAAA3AAAA////f3NwYXJzZSBzZXQgY2FwYWNpdHkgY2Fubm90IGV4Y2NlZCAAADBEEgAiAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvc3BhcnNlX3NldC5ycwAAAFxEEgBtAAAAggAAAAkAAAAgZXhjZWVkcyBjYXBhY2l0eSBvZiAgd2hlbiBpbnNlcnRpbmcgAAAAAQAAAAAAAADcRBIAFQAAAPFEEgAQAAAAXEQSAG0AAACyAAAACQAAAFxEEgBtAAAAxQAAACAAAABcRBIAbQAAAMYAAAA0AEH8iskAC0sBAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQcyMyQALqQMvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC91dGY4LnJzAExGEgBnAAAAQwAAACsAAABMRhIAZwAAAFUAAAA4AAAATEYSAGcAAABYAAAAGAAAAGludmFsaWQgU3RhdGVJRCB2YWx1ZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL3ByaW1pdGl2ZXMucnMAAPlGEgBtAAAA8gIAAAEAAAAAAAAABAAAAAQAAADlBAAAU3RhdGVJREVycm9yL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwAAlEcSAFIAAABSAAAAEwBBgJDJAAuNBAEAAADnBAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDoBAAABAAAAAQAAADpBAAATm9uZQAAAAAEAAAABAAAAOoEAABTb21lAAAAAAQAAAAEAAAA5AQAAFVuaWNvZGVXb3JkRXJyb3IvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvbWV0YS93cmFwcGVycy5ycwB8SBIAawAAAIkAAAAZAAAAfEgSAGsAAABFAQAAHQAAAHxIEgBrAAAA+wEAAB0AAAB8SBIAawAAAB8DAAAdAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZXxIEgBrAAAALAQAAA0AAAB8SBIAawAAALQEAAAdAAAAfEgSAGsAAABEBQAADQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9uZmEvdGhvbXBzb24vbmZhLnJzAACASRIAbgAAAHkCAAAXAAAAgEkSAG4AAACDBwAAFABBnJTJAAu1CgIAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvbmZhL3Rob21wc29uL3Bpa2V2bS5ycwAAACBKEgBxAAAAhQQAAAoAAABieXRlIHNsaWNlIGxlbmd0aHMgbXVzdCBiZSBsZXNzIHRoYW4gdXNpemUgTUFYAACkShIALgAAACBKEgBxAAAA2AQAAAkA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SW5kZXhFcnJvcmF0dGVtcHRlZFBhdHRlcm5JRAAAAAAAAAAEAAAABAAAABoFAABjYW5ub3QgY3JlYXRlIGl0ZXJhdG9yIGZvciBQYXR0ZXJuSUQgd2hlbiBudW1iZXIgb2YgZWxlbWVudHMgZXhjZWVkIABeEgBEAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcHJpbWl0aXZlcy5ycwAAAExeEgBtAAAA8QIAAAEAAAAAAAAABAAAAAQAAADlBAAAUGF0dGVybklERXJyb3JTdGF0ZUlEY2Fubm90IGNyZWF0ZSBpdGVyYXRvciBmb3IgU3RhdGVJRCB3aGVuIG51bWJlciBvZiBlbGVtZW50cyBleGNlZWQgAPFeEgBCAAAATF4SAG0AAADyAgAAAQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9oeWJyaWQvZGZhLnJzTF8SAGgAAADHBAAAHgAAAExfEgBoAAAA6QUAAB4AAABubyBxdWl0IGluIHN0YXJ0IHdpdGhvdXQgbG9vay1iZWhpbmRMXxIAaAAAAEUGAAAWAAAAYXNzZXJ0aW9uIGZhaWxlZDogaWQuaXNfbWF0Y2goKQBMXxIAaAAAALUGAAAJAAAAbm8gaW4tcHJvZ3Jlc3Mgc2VhcmNoIHRvIHVwZGF0ZQBMXxIAaAAAALcHAAAkAAAAbm8gaW4tcHJvZ3Jlc3Mgc2VhcmNoIHRvIGZpbmlzaABMXxIAaAAAAMMHAAAiAAAATF8SAGgAAACOCgAAHQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9oeWJyaWQvc2VhcmNoLnJzAKhgEgBrAAAAWQAAACkAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBzaWQgYmVpbmcgdW5rbm93biBpcyBhIGJ1ZyRhEgBEAAAAqGASAGsAAAAdAQAAEQAAAKhgEgBrAAAAGgEAAC0AAACoYBIAawAAAFcBAAApAAAAqGASAGsAAACtAQAAEQAAAKhgEgBrAAAAqgEAAC0AAACoYBIAawAAAPsBAAAlAAAAqGASAGsAAAAiAgAAEQAAAKhgEgBrAAAAHQIAABUAAACoYBIAawAAAOICAAAUAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL21ldGEvbGltaXRlZC5ycwAAAGISAGoAAACOAAAAJQAAAABiEgBqAAAA6AAAABQAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvbWV0YS9zdG9wYXQucnMAAACMYhIAaQAAAG4AAAAlAEGwxskAC+UQL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvZW1wdHkucnMwYxIAaAAAAPkAAAA6AAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvc2VhcmNoLnJzaW52YWxpZCBzcGFuICBmb3IgaGF5c3RhY2sgb2YgbGVuZ3RoIAAAEWQSAA0AAAAeZBIAGAAAAKhjEgBpAAAAqgEAAAkAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzWGQSAFgAAADBBwAACQAAAG1pZCA+IGxlbgAAAMBkEgAJAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9xdWlja3NvcnQucnMA1GQSAF8AAABOAAAAHwAAANRkEgBfAAAASAAAABcAAAAAAAAACAAAAAgAAAAcBQAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAGRlEgBKAAAAvgEAAB0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvZGZhL3JlbWFwcGVyLnJzAADAZRIAagAAAG4AAAASAAAAwGUSAGoAAACFAAAAHwAAAMBlEgBqAAAAiAAAACQAAADAZRIAagAAAI0AAAAgAAAAwGUSAGoAAACPAAAAHQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9uZmEvdGhvbXBzb24vYnVpbGRlci5yc211c3QgY2FsbCAnZmluaXNoX3BhdHRlcm4nIGZpcnN0AADuZhIAIAAAAHxmEgByAAAAnwEAAAkAAAB8ZhIAcgAAADACAAAcAAAAfGYSAHIAAAAyAgAAGAAAAHxmEgByAAAAOwIAAC8AAAB8ZhIAcgAAAD4CAAAkAAAAfGYSAHIAAAA+AgAAEgAAAHxmEgByAAAASAIAAC8AAAB8ZhIAcgAAAEkCAAAlAAAAfGYSAHIAAABJAgAAFgAAAHxmEgByAAAASgIAABkAAAB8ZhIAcgAAAMMBAAAdAAAAfGYSAHIAAADGAQAAGgAAAHxmEgByAAAA0AEAADYAAAB8ZhIAcgAAAMkBAAAaAAAAfGYSAHIAAADXAQAAGgAAAGludmFsaWQgY2FwdHVyZSBpbmRleAAAAHxmEgByAAAA3wEAABoAAABhIHNtYWxsIGVub3VnaCBzbG90AHxmEgByAAAA4QEAAC8AAAB8ZhIAcgAAAOIBAAAaAAAAfGYSAHIAAADyAQAAGgAAAHxmEgByAAAA9AEAABoAAAB8ZhIAcgAAAPYBAAAvAAAAfGYSAHIAAAD3AQAAGgAAAHxmEgByAAAAAgIAACEAAAB8ZhIAcgAAAAMCAAAwAAAAfGYSAHIAAAADAgAAHgAAAHxmEgByAAAABQIAAB4AAAB8ZhIAcgAAAAsCAAAxAAAAfGYSAHIAAAAMAgAAHgAAAHxmEgByAAAAAAIAAB4AAAB8ZhIAcgAAABMCAAAhAAAAfGYSAHIAAAAUAgAAMAAAAHxmEgByAAAAFAIAAB4AAAB8ZhIAcgAAABYCAAAeAAAAfGYSAHIAAAAcAgAAMQAAAHxmEgByAAAAHgIAAB4AAAB8ZhIAcgAAABECAAAeAAAAfGYSAHIAAAAiAgAAGgAAAHxmEgByAAAAJQIAABoAAAB8ZhIAcgAAAG8CAAAJAAAAfGYSAHIAAAB2AgAAHAAAAHxmEgByAAAAkgIAABsAAABtdXN0IGNhbGwgJ3N0YXJ0X3BhdHRlcm4nIGZpcnN0AHxmEgByAAAAngIAABkAAAB8ZhIAcgAAAPkDAAAzAAAAfGYSAHIAAAD/AwAAGgAAAHxmEgByAAAA/wMAACAAAAB8ZhIAcgAAAP0DAAAeAAAAfGYSAHIAAAD9AwAAJAAAAHxmEgByAAAA7wMAAB8AAAB8ZhIAcgAAAF4EAAAVAAAAfGYSAHIAAAB9BAAAGgAAAGNhbm5vdCBwYXRjaCBmcm9tIGEgc3BhcnNlIE5GQSBzdGF0ZYRqEgAkAAAAfGYSAHIAAACFBAAAEQAAAHxmEgByAAAAiwQAABwAAAB8ZhIAcgAAAI8EAAAcAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvbG9vay5ycwDgahIAZwAAAMsBAAAsAAAA4GoSAGcAAADYAQAACQAAAOBqEgBnAAAA2QEAAAkAAADgahIAZwAAANoBAAAJAAAA4GoSAGcAAADbAQAACQBBodfJAAuiBi9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL2RldGVybWluaXplL3N0YXRlLnJzAAAAoWsSAHQAAADIAAAAEAAAAKFrEgB0AAAA8gAAACMAAAChaxIAdAAAAI0BAAAJAAAAoWsSAHQAAACYAQAACQAAAKFrEgB0AAAArwEAAAkAAAChaxIAdAAAAL0BAAAjAAAAoWsSAHQAAADIAQAAIwAAAKFrEgB0AAAA4wEAADQAAAChaxIAdAAAAAwCAAAfAAAAoWsSAHQAAAAQAgAAGQAAAKFrEgB0AAAAIwIAACAAAAChaxIAdAAAACMCAAA5AAAAoWsSAHQAAAAxAgAALwAAAKFrEgB0AAAAXgIAAA8AAAChaxIAdAAAAGcCAAAPAAAAoWsSAHQAAABvAgAADwAAAKFrEgB0AAAAgQIAADUAAAChaxIAdAAAAIcCAAA1AAAAAAAAAKFrEgB0AAAAowIAABQAAAChaxIAdAAAAMYCAAAJAAAAoWsSAHQAAADKAgAAMQAAAKFrEgB0AAAAAAMAAAoAAAChaxIAdAAAAP0CAAAOAAAAoWsSAHQAAAAbAwAACQAAAKFrEgB0AAAAHAMAAB4AAAAgZXhjZWVkcyBjYXBhY2l0eSBvZiAgd2hlbiBpbnNlcnRpbmcgAAAAAQAAAAAAAACsbRIAFQAAAMFtEgAQAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvc3BhcnNlX3NldC5ycwAAAOxtEgBtAAAAsgAAAAkAAADsbRIAbQAAAMUAAAAgAAAA7G0SAG0AAADGAAAANAAAAAAAAAAEAAAABAAAABkFAABTbWFsbEluZGV4RXJyb3JhdHRlbXB0ZWQAAAAA//////////+4bhIAQdTdyQAL+QgEAAAABAAAAB0FAAAAAAAABAAAAAQAAAAYBQAAAAAAAAQAAAAEAAAABAUAAAAAAAAEAAAABAAAAB4FAAAAAAAABAAAAAQAAAAfBQAAAAAAAAQAAAAEAAAAiwEAAAAAAAAEAAAABAAAACAFAAAAAAAABAAAAAQAAAAhBQAAAAAAAAQAAAAEAAAAIgUAAAAAAAAIAAAACAAAACMFAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlcGF0dGVybi9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzom8SAEoAAAC+AQAAHQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL2NhcHR1cmVzLnJzAPxvEgBrAAAA2QAAADIAAAD8bxIAawAAAJEIAAAJAAAA/G8SAGsAAACSCAAACQAAAPxvEgBrAAAAkwgAAAkAAAD8bxIAawAAAJoIAAAaAAAA/G8SAGsAAACbCAAAHAAAAPxvEgBrAAAAnAgAABwAAAD8bxIAawAAALUIAAAoAAAA/G8SAGsAAAC7CAAAIgAAAPxvEgBrAAAAwAgAAB8AAAD8bxIAawAAAMAIAAAlAAAA/G8SAGsAAADKCAAAHwAAAPxvEgBrAAAAyggAACUAAAD8bxIAawAAANAIAAAJAAAA/G8SAGsAAADSCAAAOAAAAPxvEgBrAAAA0ggAAAkAAAD8bxIAawAAAPAIAABBAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvd2lyZS5ycwB4cRIAZwAAAFcCAAAOAAAAeHESAGcAAAB4AwAADAAAAAAAAAAEAAAABAAAAKEEAABUb29NYW55UGF0dGVybnMAAAAAAAQAAAAEAAAAJAUAAEdyb3VwSW5mbwAAAAAAAAAEAAAABAAAACUFAABlcnIAAAAAAAQAAAAEAAAAJgUAAFRvb01hbnlHcm91cHNtaW5pbXVtTWlzc2luZ0dyb3Vwc0ZpcnN0TXVzdEJlVW5uYW1lZAAAAAAABAAAAAQAAAAnBQAARHVwbGljYXRlbmFtZQAAAAAAAAAEAAAABAAAABkFAABTbWFsbEluZGV4RXJyb3JhdHRlbXB0ZWQvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2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a21pbmltdW1fY2FjaGVfY2xlYXJfY291bnRtaW5pbXVtX2J5dGVzX3Blcl9zdGF0ZQAAAOSAEgAKAAAA7oASAAMAAADxgBIAFwAAAAiBEgAMAAAAFIESABUAAAAggBIABwAAACmBEgAXAAAAJ4ASAA4AAABAgRIAGQAAAFmBEgAZAAAAcoESABcAAABDb25maWdDYWNoZUVycm9yAAAAAAQAAAAEAAAAOAQAAExhenlTdGF0ZUlEAAAAAAAEAAAABAAAABkFAABMYXp5U3RhdGVJREVycm9yYXR0ZW1wdGVkAAAAAAAAAAQAAAAEAAAARAUAAEJ5dGVTZXRiaXRzL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC41L3NyYy9oaXIvbGl0ZXJhbC5ycwAAV4ISAGcAAACqBgAAEwAAAFeCEgBnAAAAowYAABoAAABFBQAAEAAAAAgAAABGBQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQBHBQAABAAAAAQAAABIBQAATm9uZQAAAAAEAAAABAAAADMFAABTb21lAAAAAAQAAAAEAAAA9gQAAEkFAAAEAAAABAAAAKYEAABKBQAAGAAAAAQAAABLBQAATAUAABAAAAAEAAAATQUAAAAAAAAEAAAABAAAAKEEAABTZWFyY2hlcnBhdHRlcm5zcmFiaW5rYXJwc2VhcmNoX2tpbmRtaW5pbXVtX2xlbgAAAAAABAAAAAQAAACrBAAAVGVkZHlSYWJpbkthcnAAAE4FAAAMAAAABAAAAK8EAAAAAAAABAAAAAQAAABPBQAAYnVja2V0c2hhc2hfbGVuaGFzaF8ycG93L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL2RmYS9vbmVwYXNzLnJzAAAAHIQSAGkAAADHBwAAKgAAAByEEgBpAAAAygcAABoAAAAchBIAaQAAAM4HAAAmAAAAcmV2ZXJzZSBzZWFyY2ggbXVzdCBtYXRjaCBpZiBmb3J3YXJk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LjQuOS9zcmMvdXRpbC9zZWFyY2gucnNpbnZhbGlkIHNwYW4gIGZvciBoYXlzdGFjayBvZiBsZW5ndGggAACNlhIADQAAAJqWEgAYAAAAJJYSAGkAAACqAQAACQAAAC4uAAABAAAAAAAAANSWEgACAAAAUGF0dGVyblNldCBzaG91bGQgaGF2ZSBzdWZmaWNpZW50IGNhcGFjaXR5AAAklhIAaQAAAMsEAAAOAAAAcXVpdCBzZWFyY2ggYWZ0ZXIgb2JzZXJ2aW5nIGJ5dGUgIGF0IG9mZnNldCAklxIAIQAAAEWXEgALAAAAZ2F2ZSB1cCBzZWFyY2hpbmcgYXQgb2Zmc2V0IGCXEgAcAAAAaGF5c3RhY2sgb2YgbGVuZ3RoICBpcyB0b28gbG9uZwCElxIAEwAAAJeXEgAMAAAAdW5hbmNob3JlZCBzZWFyY2hlcyBhcmUgbm90IHN1cHBvcnRlZCBvciBlbmFibGVkYW5jaG9yZWQgc2VhcmNoZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb3IgZW5hYmxlZGFuY2hvcmVkIHNlYXJjaGVzIGZvciBhIHNwZWNpZmljIHBhdHRlcm4gKCkgYXJlIG5vdCBzdXBwb3J0ZWQgb3IgZW5hYmxlZAAAEpgSACoAAAA8mBIAHgAAAAAAAAAEAAAABAAAACYFAAAAAAAABAAAAAQAAAChBAAAUGF0dGVyblNldEluc2VydEVycm9yYXR0ZW1wdGVkY2FwYWNpdHlOb1llcwAAAAAABAAAAAQAAAAiBQAAUGF0dGVybkFsbExlZnRtb3N0Rmlyc3RjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAEGUssoAC9YNAQAAAPkFAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9tZW1jaHItMi43LjUvc3JjL2FyY2gvYWxsL3BhY2tlZHBhaXIvbW9kLnJzAAAAHJkSAG0AAADDAAAACQAAAByZEgBtAAAAvAAAACoAAAAcmRIAbQAAALkAAAAqAAAAHJkSAG0AAAA6AAAAFQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p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dC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL3ByZWZpbHRlci9ieXRlc2V0LnJzAAAypRIAdAAAACMAAAARAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcHJlZmlsdGVyL21lbWNoci5ycwC4pRIAcwAAABoAAAAZAAAAuKUSAHMAAAAnAAAALQAAALilEgBzAAAAVQAAABYAAAC4pRIAcwAAAFYAAAAWAAAAuKUSAHMAAABkAAAANgAAALilEgBzAAAAkgAAABYAAAC4pRIAcwAAAJMAAAAWAAAAuKUSAHMAAACUAAAAFgAAALilEgBzAAAAogAAAD4AAABhaG8tY29yYXNpY2sgREZBIHNob3VsZCBuZXZlciBmYWlsL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL3V0aWwvcHJlZmlsdGVyL3RlZGR5LnJz3qYSAHIAAABxAAAAEgAAAHJlZ2V4OiB0aHJlYWQgSUQgYWxsb2NhdGlvbiBzcGFjZSBleGhhdXN0ZWQAYKcSACsAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9wb29sLnJzAJSnEgBnAAAAXgEAABEAAAAIAAAADQAAAA8AAAAOpRIAFqUSACOlEgBBrNDKAAuMAgEAAAABBgAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAAAAACAAAAAQAAAACBgAAAAAAAAQAAAAEAAAAAwYAAAAAAAAEAAAABAAAADUEAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlbk5vbmUAAAAAAAAABAAAAAQAAAChBAAAU29tZQAAAAAEAAAABAAAAIsBAAAAAAAABAAAAAQAAADqBAAAAAAAAAQAAAAEAAAA+QQAAAAAAAAEAAAABAAAAPoEAAAAAAAABAAAAAQAAAA0BQAAAAAAAAQAAAAEAAAA5AQAAFVuaWNvZGVXb3JkRXJyb3IAQcTSygALvQkCAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljkvc3JjL25mYS90aG9tcHNvbi9iYWNrdHJhY2sucnNIqRIAdAAAAJkFAAAVAAAASKkSAHQAAACiBQAAGgAAAEipEgB0AAAA9wUAACEAAABIqRIAdAAAAAEGAAAhAAAASKkSAHQAAAAFBgAAJQAAAEipEgB0AAAAIQcAABcAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvbmZhL3Rob21wc29uL21hcC5ycwAAHKoSAG4AAACJAAAAHAAAAByqEgBuAAAAggAAABgAAAAcqhIAbgAAAJYAAAAJAAAAHKoSAG4AAACfAAAAHgAAAByqEgBuAAAAtgAAABEAAAAcqhIAbgAAAPgAAAAcAAAAHKoSAG4AAAD0AAAAGAAAAByqEgBuAAAACAEAAAkAAAAcqhIAbgAAABQBAAAeAAAAHKoSAG4AAAAlAQAAEQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy9uZmEvdGhvbXBzb24vbmZhLnJzAAAsqxIAbgAAAHkCAAAXAAAALKsSAG4AAACDBwAAFAAAACcgJy9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC45L3NyYy91dGlsL2VzY2FwZS5yc7+rEgBpAAAAKAAAAD0AAAABAAAAAAAAAL+rEgBpAAAAJQAAAA0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC9sb29rLnJz4oiFAABQrBIAZwAAAKQDAAAoAAAAUKwSAGcAAACwAwAAJgAAAFCsEgBnAAAAvQMAABAAAABQrBIAZwAAAMwDAAAQAAAAUKwSAGcAAADaAwAAOAAAAFCsEgBnAAAANwQAADEAAABQrBIAZwAAAEwEAAA4AAAAUKwSAGcAAABbBAAAOAAAAFCsEgBnAAAAngQAADgAAABQrBIAZwAAAMgEAAAxAAAAc2luY2UgdW5pY29kZS13b3JkLWJvdW5kYXJ5LCBzeW50YXggYW5kIHVuaWNvZGUtcGVybCBhcmUgYWxsIGVuYWJsZWQsIGl0IGlzIGV4cGVjdGVkIHRoYXQgdHJ5X2lzX3dvcmRfY2hhcmFjdGVyIHN1Y2NlZWRzUKwSAGcAAAA0BgAANwAAAFCsEgBnAAAAQQYAAC0AAABQrBIAZwAAAEMGAAA3AEG03MoAC0sBAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYTeygALtiAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuOS9zcmMvdXRpbC91dGY4LnJzAASvEgBnAAAAQwAAACsAAAAErxIAZwAAAFUAAAA4AAAABK8SAGcAAABYAAAAGAAAAAQGAABgAAAAEAAAAAUGAAAGBgAABAAAAAQAAAA5BQAAAAAAAAABAAABAAAAOgUAAAAAAAAAAQAAAQAAABcFAAAAAAAAIAAAABAAAAAHBgAAY29uZmlnbmZhc3RyaWRlMnN0YXJ0X21hcGNsYXNzZXNxdWl0c2V0Y2FjaGVfY2FwYWNpdHkAAADsrxIABgAAAPKvEgADAAAA9a8SAAcAAAD8rxIACQAAAAWwEgAHAAAADLASAAcAAAATsBIADgAAAERGQQAAAAAAAQAAAAEAAAAIBgAACQYAABAAAAAEAAAACgYAAAAAAAABAAAAAQAAAAsGAAAAAAAAMAAAABAAAAAMBgAAAAAAAAgAAAAEAAAADQYAAAAAAAAIAAAABAAAAA4GAAAAAAAABAAAAAQAAABDBQAAbWF0Y2hfa2luZHByZXN0YXJ0c19mb3JfZWFjaF9wYXR0ZXJuYnl0ZV9jbGFzc2VzdW5pY29kZV93b3JkX2JvdW5kYXJ5c3BlY2lhbGl6ZV9zdGFydF9zdGF0ZXNza2lwX2NhY2hlX2NhcGFjaXR5X2NoZWNrbWluaW11bV9jYWNoZV9jbGVhcl9jb3VudG1pbmltdW1fYnl0ZXNfcGVyX3N0YXRlAAAA0LASAAoAAADasBIAAwAAAN2wEgAXAAAA9LASAAwAAAAAsRIAFQAAAAywEgAHAAAAFbESABcAAAATsBIADgAAACyxEgAZAAAARbESABkAAABesRIAFwAAAENvbmZpZwAADwYAAJACAAAQAAAAEAYAAAAAAAAEAAAABAAAAPAEAABSZWdleGZvcndhcmRyZXZlcnNldmlzaXRlZF9jYXBhY2l0eQARBgAAGAAAAAQAAAASBgAAAAAAAAQAAAAEAAAA9gQAAEJvdW5kZWRCYWNrdHJhY2tlcgAAAAAAAAQAAAAEAAAARAUAAEJ5dGVTZXRiaXRzU3RhcnRFbmRTdGFydExGRW5kTEZTdGFydENSTEZFbmRDUkxGV29yZEFzY2lpV29yZEFzY2lpTmVnYXRlV29yZFVuaWNvZGVXb3JkVW5pY29kZU5lZ2F0ZVdvcmRTdGFydEFzY2lpV29yZEVuZEFzY2lpV29yZFN0YXJ0VW5pY29kZVdvcmRFbmRVbmljb2RlV29yZFN0YXJ0SGFsZkFzY2lpV29yZEVuZEhhbGZBc2NpaVdvcmRTdGFydEhhbGZVbmljb2RlV29yZEVuZEhhbGZVbmljb2RlAAUAAAADAAAABwAAAAUAAAAJAAAABwAAAAkAAAAPAAAACwAAABEAAAAOAAAADAAAABAAAAAOAAAAEgAAABAAAAAUAAAAEgAAAGuyEgBwshIAc7ISAHqyEgB/shIAiLISAI+yEgCYshIAp7ISALKyEgDDshIA0bISAN2yEgDtshIA+7ISAA2zEgAdsxIAMbMSAEEAAAB6AAAAXgAAACQAAAByAAAAUgAA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AGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuY2hhcigpID09ICdwJyB8fCBzZWxmLmNoYXIoKSA9PSAnUCcAAKy1EgBlAAAAeAgAAAkAAABleHBlY3RlZCB2YWxpZCBQZXJsIGNsYXNzIGJ1dCBnb3QgJyfEvhIAIwAAAOe+EgABAAAArLUSAGUAAADRCAAAEgAAAKy1EgBlAAAAAAkAADAAAAACAAAABAAAAAgAAAAVBgAADAAAAAQAAAAWBgAAFwYAAGMEAEHE/soAC5kBAQAAABgGAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAACDvxIASwAAANEKAAAOAEHo/8oAC+6HAwEAAAAZBgAARXJyb3IAAACDvxIASwAAAH8FAAAaAAAAg78SAEsAAAB9BQAAGwAAAIO/EgBLAAAAWAQAABIAAABOb25lAAAAAAQAAAAEAAAAOAQAAFNvbWUAAAAABAAAAAQAAAAaBgAAAAAAAAQAAAAEAAAA5AQAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAABgwBIASgAAAL4BAAAdAAAAYXNzZXJ0aW9uIGZhaWxlZDogYWRkX2xvd2VyIHx8IGFkZF91cHBlci9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvaGlyL2ludGVydmFsLnJz5MASAGgAAADQAQAACQAAAFVuaWNvZGUgbm90IGFsbG93ZWQgaGVyZXBhdHRlcm4gY2FuIG1hdGNoIGludmFsaWQgVVRGLThpbnZhbGlkIGxpbmUgdGVybWluYXRvciwgbXVzdCBiZSBBU0NJSVVuaWNvZGUgcHJvcGVydHkgbm90IGZvdW5kVW5pY29kZSBwcm9wZXJ0eSB2YWx1ZSBub3QgZm91bmRVbmljb2RlLWF3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AQAAaQEAAGgBAABrAQAAagEAAG0BAABsAQAAbwEAAG4BAABxAQAAcAEAAHMBAAByAQAAdQEAAHQBAAB3AQAAdgEAAP8AAAB6AQAAeQEAAHwBAAB7AQAAfgEAAH0BAABTAAAAcwAAAEMCAABTAgAAgwEAAIIBAACFAQAAhAEAAFQCAACIAQAAhwEAAFYCAABXAgAAjAEAAIsBAADdAQAAWQIAAFsCAACSAQAAkQEAAGACAABjAgAA9gEAAGkCAABoAgAAmQEAAJgBAAA9AgAA3KcAAG8CAAByAgAAIAIAAHUCAAChAQAAoAEAAKMBAACiAQAApQEAAKQBAACAAgAAqAEAAKcBAACDAgAArQEAAKwBAACIAgAAsAEAAK8BAACKAgAAiwIAALQBAACzAQAAtgEAALUBAACSAgAAuQEAALgBAAC9AQAAvAEAAPcBAADFAQAAxgEAAMQBAADGAQAAxAEAAMUBAADIAQAAyQEAAMcBAADJAQAAxwEAAMgBAADLAQAAzAEAAMoBAADMAQAAygEAAMsBAADOAQAAzQEAANABAADPAQAA0gEAANEBAADUAQAA0wEAANYBAADVAQAA2AEAANcBAADaAQAA2QEAANwBAADbAQAAjgEAAN8BAADeAQAA4QEAAOABAADjAQAA4gEAAOUBAADkAQAA5wEAAOYBAADpAQAA6AEAAOsBAADqAQAA7QEAAOwBAADvAQAA7gEAAPIBAADzAQAA8QEAAPMBAADxAQAA8gEAAPUBAAD0AQAAlQEAAL8BAAD5AQAA+AEAAPsBAAD6AQAA/QEAAPwBAAD/AQAA/gEAAAECAAAAAgAAAwIAAAICAAAFAgAABAIAAAcCAAAGAgAACQIAAAgCAAALAgAACgIAAA0CAAAMAgAADwIAAA4CAAARAgAAEAIAABMCAAASAgAAFQIAABQCAAAXAgAAFgIAABkCAAAYAgAAGwIAABoCAAAdAgAAHAIAAB8CAAAeAgAAngEAACMCAAAiAgAAJQIAACQCAAAnAgAAJgIAACkCAAAoAgAAKwIAACoCAAAtAgAALAIAAC8CAAAuAgAAMQIAADACAAAzAgAAMgIAAGUsAAA8AgAAOwIAAJoBAABmLAAAfiwAAH8sAABCAgAAQQIAAIABAACJAgAAjAIAAEcCAABGAgAASQIAAEgCAABLAgAASgIAAE0CAABMAgAATwIAAE4CAABvLAAAbSwAAHAsAACBAQAAhgEAAIkBAACKAQAAjwEAAJABAACrpwAAkwEAAKynAACUAQAAy6cAAI2nAACqpwAAlwEAAJYBAACupwAAYiwAAK2nAACcAQAAbiwAAJ0BAACfAQAAZCwAAKYBAADFpwAAqQEAALGnAACuAQAARAIAALEBAACyAQAARQIAALcBAACypwAAsKcAAJkDAAC5AwAAvh8AAHEDAABwAwAAcwMAAHIDAAB3AwAAdgMAAP0DAAD+AwAA/wMAAPMDAACsAwAArQMAAK4DAACvAwAAzAMAAM0DAADOAwAA0x8AALEDAACyAwAA0AMAALMDAAC0AwAAtQMAAPUDAAC2AwAAtwMAALgDAADRAwAA9AMAAEUDAAC5AwAAvh8AALoDAADwAwAAuwMAALUAAAC8AwAAvQMAAL4DAAC/AwAAwAMAANYDAADBAwAA8QMAAMIDAADDAwAAxAMAAMUDAADGAwAA1QMAAMcDAADIAwAAyQMAACYhAADKAwAAywMAAIYDAACIAwAAiQMAAIoDAADjHwAAkQMAAJIDAADQAwAAkwMAAJQDAACVAwAA9QMAAJYDAACXAwAAmAMAANEDAAD0AwAARQMAAJkDAAC+HwAAmgMAAPADAACbAwAAtQAAAJwDAACdAwAAngMAAJ8DAACgAwAA1gMAAKEDAADxAwAAowMAAMMDAACjAwAAwgMAAKQDAAClAwAApgMAANUDAACnAwAAqAMAAKkDAAAmIQAAqgMAAKsDAACMAwAAjgMAAI8DAADXAwAAkgMAALIDAACYAwAAuAMAAPQDAACmAwAAxgMAAKADAADAAwAAzwMAANkDAADYAwAA2wMAANoDAADdAwAA3AMAAN8DAADeAwAA4QMAAOADAADjAwAA4gMAAOUDAADkAwAA5wMAAOYDAADpAwAA6AMAAOsDAADqAwAA7QMAAOwDAADvAwAA7gMAAJoDAAC6AwAAoQMAAMEDAAD5AwAAfwMAAJgDAAC4AwAA0QMAAJUDAAC1AwAA+AMAAPcDAADyAwAA+wMAAPoDAAB7AwAAfAMAAH0DAABQBAAAUQQAAFIEAABTBAAAVAQAAFUEAABWBAAAVwQAAFgEAABZBAAAWgQAAFsEAABcBAAAXQQAAF4EAABfBAAAMAQAADEEAAAyBAAAgBwAADMEAAA0BAAAgRwAADUEAAA2BAAANwQAADgEAAA5BAAAOgQAADsEAAA8BAAAPQQAAD4EAACCHAAAPwQAAEAEAABBBAAAgxwAAEIEAACEHAAAhRwAAEMEAABEBAAARQQAAEYEAABHBAAASAQAAEkEAABKBAAAhhwAAEsEAABMBAAATQQAAE4EAABPBAAAEAQAABEEAAASBAAAgBwAABMEAAAUBAAAgRwAABUEAAAWBAAAFwQAABgEAAAZBAAAGgQAABsEAAAcBAAAHQQAAB4EAACCHAAAHwQAACAEAAAhBAAAgxwAACIEAACEHAAAhRwAACMEAAAkBAAAJQQAACYEAAAnBAAAKAQAACkEAAAqBAAAhhwAACsEAAAsBAAALQQAAC4EAAAvBAAAAAQAAAEEAAACBAAAAwQAAAQEAAAFBAAABgQAAAcEAAAIBAAACQQAAAoEAAALBAAADAQAAA0EAAAOBAAADwQAAGEEAABgBAAAYwQAAIccAABiBAAAhxwAAGUEAABkBAAAZwQAAGYEAABpBAAAaAQAAGsEAABqBAAAbQQAAGwEAABvBAAAbgQAAHEEAABwBAAAcwQAAHIEAAB1BAAAdAQAAHcEAAB2BAAAeQQAAHgEAAB7BAAAegQAAH0EAAB8BAAAfwQAAH4EAACBBAAAgAQAAIsEAACKBAAAjQQAAIwEAACPBAAAjgQAAJEEAACQBAAAkwQAAJIEAACVBAAAlAQAAJcEAACWBAAAmQQAAJgEAACbBAAAmgQAAJ0EAACcBAAAnwQAAJ4EAAChBAAAoAQAAKMEAACiBAAApQQAAKQEAACnBAAApgQAAKkEAACoBAAAqwQAAKoEAACtBAAArAQAAK8EAACuBAAAsQQAALAEAACzBAAAsgQAALUEAAC0BAAAtwQAALYEAAC5BAAAuAQAALsEAAC6BAAAvQQAALwEAAC/BAAAvgQAAM8EAADCBAAAwQQAAMQEAADDBAAAxgQAAMUEAADIBAAAxwQAAMoEAADJBAAAzAQAAMsEAADOBAAAzQQAAMAEAADRBAAA0AQAANMEAADSBAAA1QQAANQEAADXBAAA1gQAANkEAADYBAAA2wQAANoEAADdBAAA3AQAAN8EAADeBAAA4QQAAOAEAADjBAAA4gQAAOUEAADkBAAA5wQAAOYEAADpBAAA6AQAAOsEAADqBAAA7QQAAOwEAADv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HgAAPR4AADweAAA/HgAAPh4AAEEeAABAHgAAQx4AAEIeAABFHgAARB4AAEceAABGHgAASR4AAEgeAABLHgAASh4AAE0eAABMHgAATx4AAE4eAABRHgAAUB4AAFMeAABSHgAAVR4AAFQeAABXHgAAVh4AAFkeAABYHgAAWx4AAFoeAABdHgAAXB4AAF8eAABeHgAAYR4AAJseAABgHgAAmx4AAGMeAABiHgAAZR4AAGQeAABnHgAAZh4AAGkeAABoHgAAax4AAGoeAABtHgAAbB4AAG8eAABuHgAAcR4AAHAeAABzHgAAch4AAHUeAAB0HgAAdx4AAHYeAAB5HgAAeB4AAHseAAB6HgAAfR4AAHweAAB/HgAAfh4AAIEeAACAHgAAgx4AAIIeAACFHgAAhB4AAIceAACGHgAAiR4AAIgeAACLHgAAih4AAI0eAACMHgAAjx4AAI4eAACRHgAAkB4AAJMeAACSHgAAlR4AAJQeAABgHgAAYR4AAN8AAAChHgAAoB4AAKMeAACiHgAApR4AAKQeAACnHgAAph4AAKkeAACoHgAAqx4AAKoeAACtHgAArB4AAK8eAACuHgAAsR4AALAeAACzHgAAsh4AALUeAAC0HgAAtx4AALYeAAC5HgAAuB4AALseAAC6HgAAvR4AALweAAC/HgAAvh4AAMEeAADAHgAAwx4AAMIeAADFHgAAxB4AAMceAADGHgAAyR4AAMgeAADLHgAAyh4AAM0eAADMHgAAzx4AAM4eAADRHgAA0B4AANMeAADSHgAA1R4AANQeAADXHgAA1h4AANkeAADYHgAA2x4AANoeAADdHgAA3B4AAN8eAADeHgAA4R4AAOAeAADjHgAA4h4AAOUeAADkHgAA5x4AAOYeAADpHgAA6B4AAOseAADqHgAA7R4AAOweAADvHgAA7h4AAPEeAADwHgAA8x4AAPIeAAD1HgAA9B4AAPceAAD2HgAA+R4AAPgeAAD7HgAA+h4AAP0eAAD8HgAA/x4AAP4eAAAIHwAACR8AAAofAAALHwAADB8AAA0fAAAOHwAADx8AAAAfAAABHwAAAh8AAAMfAAAEHwAABR8AAAYfAAAHHwAAGB8AABkfAAAaHwAAGx8AABwfAAAdHwAAEB8AABEfAAASHwAAEx8AABQfAAAVHwAAKB8AACkfAAAqHwAAKx8AACwfAAAtHwAALh8AAC8fAAAgHwAAIR8AACIfAAAjHwAAJB8AACUfAAAmHwAAJx8AADgfAAA5HwAAOh8AADsfAAA8HwAAPR8AAD4fAAA/HwAAMB8AADEfAAAyHwAAMx8AADQfAAA1HwAANh8AADcfAABIHwAASR8AAEofAABLHwAATB8AAE0fAABAHwAAQR8AAEIfAABDHwAARB8AAEUfAABZHwAAWx8AAF0fAABfHwAAUR8AAFMfAABVHwAAVx8AAGgfAABpHwAAah8AAGsfAABsHwAAbR8AAG4fAABvHwAAYB8AAGEfAABiHwAAYx8AAGQfAABlHwAAZh8AAGcfAAC6HwAAux8AAMgfAADJHwAAyh8AAMsfAADaHwAA2x8AAPgfAAD5HwAA6h8AAOsfAAD6HwAA+x8AAIgfAACJHwAAih8AAIsfAACMHwAAjR8AAI4fAACPHwAAgB8AAIEfAACCHwAAgx8AAIQfAACFHwAAhh8AAIcfAACYHwAAmR8AAJofAACbHwAAnB8AAJ0fAACeHwAAnx8AAJAfAACRHwAAkh8AAJMfAACUHwAAlR8AAJYfAACXHwAAqB8AAKkfAACqHwAAqx8AAKwfAACtHwAArh8AAK8fAACgHwAAoR8AAKIfAACjHwAApB8AAKUfAACmHwAApx8AALgfAAC5HwAAvB8AALAfAACxHwAAcB8AAHEfAACzHwAARQMAAJkDAAC5AwAAzB8AAHIfAABzHwAAdB8AAHUfAADDHwAA2B8AANkfAACQAwAA0B8AANEfAAB2HwAAdx8AAOgfAADpHwAAsAMAAOwfAADgHwAA4R8AAHofAAB7HwAA5R8AAPwfAAB4HwAAeR8AAHwfAAB9HwAA8x8AAKkDAADJAwAASwAAAGsAAADFAAAA5QAAAE4hAAAyIQAAcCEAAHEhAAByIQAAcyEAAHQhAAB1IQAAdiEAAHchAAB4IQAAeSEAAHohAAB7IQAAfCEAAH0hAAB+IQAAfyEAAGAhAABhIQAAYiEAAGMhAABkIQAAZSEAAGYhAABnIQAAaCEAAGkhAABqIQAAayEAAGwhAABtIQAAbiEAAG8hAACEIQAAgyEAANAkAADRJAAA0iQAANMkAADUJAAA1SQAANYkAADXJAAA2CQAANkkAADaJAAA2yQAANwkAADdJAAA3iQAAN8kAADgJAAA4SQAAOIkAADjJAAA5CQAAOUkAADmJAAA5yQAAOgkAADpJAAAtiQAALckAAC4JAAAuSQAALokAAC7JAAAvCQAAL0kAAC+JAAAvyQAAMAkAADBJAAAwiQAAMMkAADEJAAAxSQAAMYkAADHJAAAyCQAAMkkAADKJAAAyyQAAMwkAADNJAAAziQAAM8kAAAwLAAAMSwAADIsAAAzLAAANCwAADUsAAA2LAAANywAADgsAAA5LAAAOiwAADssAAA8LAAAPSwAAD4sAAA/LAAAQCwAAEEsAABCLAAAQywAAEQsAABFLAAARiwAAEcsAABILAAASSwAAEosAABLLAAATCwAAE0sAABOLAAATywAAFAsAABRLAAAUiwAAFMsAABULAAAVSwAAFYsAABXLAAAWCwAAFksAABaLAAAWywAAFwsAABdLAAAXiwAAF8sAAAALAAAASwAAAIsAAADLAAABCwAAAUsAAAGLAAABywAAAgsAAAJLAAACiwAAAssAAAMLAAADSwAAA4sAAAPLAAAECwAABEsAAASLAAAEywAABQsAAAVLAAAFiwAABcsAAAYLAAAGSwAABosAAAbLAAAHCwAAB0sAAAeLAAAHywAACAsAAAhLAAAIiwAACMsAAAkLAAAJSwAACYsAAAnLAAAKCwAACksAAAqLAAAKywAACwsAAAtLAAALiwAAC8sAABhLAAAYCwAAGsCAAB9HQAAfQIAADoCAAA+AgAAaCwAAGcsAABqLAAAaSwAAGwsAABrLAAAUQIAAHECAABQAgAAUgIAAHMsAAByLAAAdiwAAHUsAAA/AgAAQAIAAIEsAACALAAAgywAAIIsAACFLAAAhCwAAIcsAACGLAAAiSwAAIgsAACLLAAAiiwAAI0sAACMLAAAjywAAI4sAACRLAAAkCwAAJMsAACSLAAAlSwAAJQsAACXLAAAliwAAJksAACYLAAAmywAAJosAACdLAAAnCwAAJ8sAACeLAAAoSwAAKAsAACjLAAAoiwAAKUsAACkLAAApywAAKYsAACpLAAAqCwAAKssAACqLAAArSwAAKwsAACvLAAAriwAALEsAACwLAAAsywAALIsAAC1LAAAtCwAALcsAAC2LAAAuSwAALgsAAC7LAAAuiwAAL0sAAC8LAAAvywAAL4sAADBLAAAwCwAAMMsAADCLAAAxSwAAMQsAADHLAAAxiwAAMksAADILAAAyywAAMosAADNLAAAzCwAAM8sAADOLAAA0SwAANAsAADTLAAA0iwAANUsAADULAAA1ywAANYsAADZLAAA2CwAANssAADaLAAA3SwAANwsAADfLAAA3iwAAOEsAADgLAAA4ywAAOIsAADsLAAA6ywAAO4sAADtLAAA8ywAAPIsAACgEAAAoRAAAKIQAACjEAAApBAAAKUQAACmEAAApxAAAKgQAACpEAAAqhAAAKsQAACsEAAArRAAAK4QAACvEAAAsBAAALEQAACyEAAAsxAAALQQAAC1EAAAthAAALcQAAC4EAAAuRAAALoQAAC7EAAAvBAAAL0QAAC+EAAAvxAAAMAQAADBEAAAwhAAAMMQAADEEAAAxRAAAMcQAADNEAAAQaYAAECmAABDpgAAQqYAAEWmAABEpgAAR6YAAEamAABJpgAASKYAAIgcAABLpgAAiBwAAEqmAABNpgAATKYAAE+mAABOpgAAUaYAAFCmAABTpgAAUqYAAFWmAABUpgAAV6YAAFamAABZpgAAWKYAAFumAABapgAAXaYAAFymAABfpgAAXqYAAGGmAABgpgAAY6YAAGKmAABlpgAAZKYAAGemAABmpgAAaaYAAGimAABrpgAAaqYAAG2mAABspgAAgaYAAICmAACDpgAAgqYAAIWmAACEpgAAh6YAAIamAACJpgAAiKYAAIumAACKpgAAjaYAAIymAACPpgAAjqYAAJGmAACQpgAAk6YAAJKmAACVpgAAlKYAAJemAACWpgAAmaYAAJimAACbpgAAmqYAACOnAAAipwAAJacAACSnAAAnpwAAJqcAACmnAAAopwAAK6cAACqnAAAtpwAALKcAAC+nAAAupwAAM6cAADKnAAA1pwAANKcAADenAAA2pwAAOacAADinAAA7pwAAOqcAAD2nAAA8pwAAP6cAAD6nAABBpwAAQKcAAEOnAABCpwAARacAAESnAABHpwAARqcAAEmnAABIpwAAS6cAAEqnAABNpwAATKcAAE+nAABOpwAAUacAAFCnAABTpwAAUqcAAFWnAABUpwAAV6cAAFanAABZpwAAWKcAAFunAABapwAAXacAAFynAABfpwAAXqcAAGGnAABgpwAAY6cAAGKnAABlpwAAZKcAAGenAABmpwAAaacAAGinAABrpwAAaqcAAG2nAABspwAAb6cAAG6nAAB6pwAAeacAAHynAAB7pwAAeR0AAH+nAAB+pwAAgacAAICnAACDpwAAgqcAAIWnAACEpwAAh6cAAIanAACMpwAAi6cAAGUCAACRpwAAkKcAAJOnAACSpwAAxKcAAJenAACWpwAAmacAAJinAACbpwAAmqcAAJ2nAACcpwAAn6cAAJ6nAAChpwAAoKcAAKOnAACipwAApacAAKSnAACnpwAApqcAAKmnAACopwAAZgIAAFwCAABhAgAAbAIAAGoCAACeAgAAhwIAAJ0CAABTqwAAtacAALSnAAC3pwAAtqcAALmnAAC4pwAAu6cAALqnAAC9pwAAvKcAAL+nAAC+pwAAwacAAMCnAADDpwAAwqcAAJSnAACCAgAAjh0AAMinAADHpwAAyqcAAMmnAABkAgAAzacAAMynAADRpwAA0KcAANenAADWpwAA2acAANinAADbpwAA2qcAAJsBAAD2pwAA9acAALOnAACgEwAAoRMAAKITAACjEwAApBMAAKUTAACmEwAApxMAAKgTAACpEwAAqhMAAKsTAACsEwAArRMAAK4TAACvEwAAsBMAALETAACyEwAAsxMAALQTAAC1EwAAthMAALcTAAC4EwAAuRMAALoTAAC7EwAAvBMAAL0TAAC+EwAAvxMAAMATAADBEwAAwhMAAMMTAADEEwAAxRMAAMYTAADHEwAAyBMAAMkTAADKEwAAyxMAAMwTAADNEwAAzhMAAM8TAADQEwAA0RMAANITAADTEwAA1BMAANUTAADWEwAA1xMAANgTAADZEwAA2hMAANsTAADcEwAA3RMAAN4TAADfEwAA4BMAAOETAADiEwAA4xMAAOQTAADlEwAA5hMAAOcTAADoEwAA6RMAAOoTAADrEwAA7BMAAO0TAADuEwAA7xMAAAb7AAAF+wAAQf8AAEL/AABD/wAARP8AAEX/AABG/wAAR/8AAEj/AABJ/wAASv8AAEv/AABM/wAATf8AAE7/AABP/wAAUP8AAFH/AABS/wAAU/8AAFT/AABV/wAAVv8AAFf/AABY/wAAWf8AAFr/AAAh/wAAIv8AACP/AAAk/wAAJf8AACb/AAAn/wAAKP8AACn/AAAq/wAAK/8AACz/AAAt/wAALv8AAC//AAAw/wAAMf8AADL/AAAz/wAANP8AADX/AAA2/wAAN/8AADj/AAA5/wAAOv8AACgEAQApBAEAKgQBACsEAQAsBAEALQQBAC4EAQAvBAEAMAQBADEEAQAyBAEAMwQBADQEAQA1BAEANgQBADcEAQA4BAEAOQQBADoEAQA7BAEAPAQBAD0EAQA+BAEAPwQBAEAEAQBBBAEAQgQBAEMEAQBEBAEARQQBAEYEAQBHBAEASAQBAEkEAQBKBAEASwQBAEwEAQBNBAEATgQBAE8EAQAABAEAAQQBAAIEAQADBAEABAQBAAUEAQAGBAEABwQBAAgEAQAJBAEACgQBAAsEAQAMBAEADQQBAA4EAQAPBAEAEAQBABEEAQASBAEAEwQBABQEAQAVBAEAFgQBABcEAQAYBAEAGQQBABoEAQAbBAEAHAQBAB0EAQAeBAEAHwQBACAEAQAhBAEAIgQBACMEAQAkBAEAJQQBACYEAQAnBAEA2AQBANkEAQDaBAEA2wQBANwEAQDdBAEA3gQBAN8EAQDgBAEA4QQBAOIEAQDjBAEA5AQBAOUEAQDmBAEA5wQBAOgEAQDpBAEA6gQBAOsEAQDsBAEA7QQBAO4EAQDvBAEA8AQBAPEEAQDyBAEA8wQBAPQEAQD1BAEA9gQBAPcEAQD4BAEA+QQBAPoEAQD7BAEAsAQBALEEAQCyBAEAswQBALQEAQC1BAEAtgQBALcEAQC4BAEAuQQBALoEAQC7BAEAvAQBAL0EAQC+BAEAvwQBAMAEAQDBBAEAwgQBAMMEAQDEBAEAxQQBAMYEAQDHBAEAyAQBAMkEAQDKBAEAywQBAMwEAQDNBAEAzgQBAM8EAQDQBAEA0QQBANIEAQDTBAEAlwUBAJgFAQCZBQEAmgUBAJsFAQCcBQEAnQUBAJ4FAQCfBQEAoAUBAKEFAQCjBQEApAUBAKUFAQCmBQEApwUBAKgFAQCpBQEAqgUBAKsFAQCsBQEArQUBAK4FAQCvBQEAsAUBALEFAQCzBQEAtAUBALUFAQC2BQEAtwUBALgFAQC5BQEAuwUBALwFAQBwBQEAcQUBAHIFAQBzBQEAdAUBAHUFAQB2BQEAdwUBAHgFAQB5BQEAegUBAHwFAQB9BQEAfgUBAH8FAQCABQEAgQUBAIIFAQCDBQEAhAUBAIUFAQCGBQEAhwUBAIgFAQCJBQEAigUBAIwFAQCNBQEAjgUBAI8FAQCQBQEAkQUBAJIFAQCUBQEAlQUBAMAMAQDBDAEAwgwBAMMMAQDEDAEAxQwBAMYMAQDHDAEAyAwBAMkMAQDKDAEAywwBAMwMAQDNDAEAzgwBAM8MAQDQDAEA0QwBANIMAQDTDAEA1AwBANUMAQDWDAEA1wwBANgMAQDZDAEA2gwBANsMAQDcDAEA3QwBAN4MAQDfDAEA4AwBAOEMAQDiDAEA4wwBAOQMAQDlDAEA5gwBAOcMAQDoDAEA6QwBAOoMAQDrDAEA7AwBAO0MAQDuDAEA7wwBAPAMAQDxDAEA8gwBAIAMAQCBDAEAggwBAIMMAQCEDAEAhQwBAIYMAQCHDAEAiAwBAIkMAQCKDAEAiwwBAIwMAQCNDAEAjgwBAI8MAQCQDAEAkQwBAJIMAQCTDAEAlAwBAJUMAQCWDAEAlwwBAJgMAQCZDAEAmgwBAJsMAQCcDAEAnQwBAJ4MAQCfDAEAoAwBAKEMAQCiDAEAowwBAKQMAQClDAEApgwBAKcMAQCoDAEAqQwBAKoMAQCrDAEArAwBAK0MAQCuDAEArwwBALAMAQCxDAEAsgwBAHANAQBxDQEAcg0BAHMNAQB0DQEAdQ0BAHYNAQB3DQEAeA0BAHkNAQB6DQEAew0BAHwNAQB9DQEAfg0BAH8NAQCADQEAgQ0BAIINAQCDDQEAhA0BAIUNAQBQDQEAUQ0BAFINAQBTDQEAVA0BAFUNAQBWDQEAVw0BAFgNAQBZDQEAWg0BAFsNAQBcDQEAXQ0BAF4NAQBfDQEAYA0BAGENAQBiDQEAYw0BAGQNAQBlDQEAwBgBAMEYAQDCGAEAwxgBAMQYAQDFGAEAxhgBAMcYAQDIGAEAyRgBAMoYAQDLGAEAzBgBAM0YAQDOGAEAzxgBANAYAQDRGAEA0hgBANMYAQDUGAEA1RgBANYYAQDXGAEA2BgBANkYAQDaGAEA2xgBANwYAQDdGAEA3hgBAN8YAQCgGAEAoRgBAKIYAQCjGAEApBgBAKUYAQCmGAEApxgBAKgYAQCpGAEAqhgBAKsYAQCsGAEArRgBAK4YAQCvGAEAsBgBALEYAQCyGAEAsxgBALQYAQC1GAEAthgBALcYAQC4GAEAuRgBALoYAQC7GAEAvBgBAL0YAQC+GAEAvxgBAGBuAQBhbgEAYm4BAGNuAQBkbgEAZW4BAGZuAQBnbgEAaG4BAGluAQBqbgEAa24BAGxuAQBtbgEAbm4BAG9uAQBwbgEAcW4BAHJuAQBzbgEAdG4BAHVuAQB2bgEAd24BAHhuAQB5bgEAem4BAHtuAQB8bgEAfW4BAH5uAQB/bgEAQG4BAEFuAQBCbgEAQ24BAERuAQBFbgEARm4BAEduAQBIbgEASW4BAEpuAQBLbgEATG4BAE1uAQBObgEAT24BAFBuAQBRbgEAUm4BAFNuAQBUbgEAVW4BAFZuAQBXbgEAWG4BAFluAQBabgEAW24BAFxuAQBdbgEAXm4BAF9uAQAi6QEAI+kBACTpAQAl6QEAJukBACfpAQAo6QEAKekBACrpAQAr6QEALOkBAC3pAQAu6QEAL+kBADDpAQAx6QEAMukBADPpAQA06QEANekBADbpAQA36QEAOOkBADnpAQA66QEAO+kBADzpAQA96QEAPukBAD/pAQBA6QEAQekBAELpAQBD6QEAAOkBAAHpAQAC6QEAA+kBAATpAQAF6QEABukBAAfpAQAI6QEACekBAArpAQAL6QEADOkBAA3pAQAO6QEAD+kBABDpAQAR6QEAEukBABPpAQAU6QEAFekBABbpAQAX6QEAGOkBABnpAQAa6QEAG+kBABzpAQAd6QEAHukBAB/pAQAg6QEAIekBAEEAAACQxRIAAQAAAEIAAACUxRIAAQAAAEMAAACYxRIAAQAAAEQAAACcxRIAAQAAAEUAAACgxRIAAQAAAEYAAACkxRIAAQAAAEcAAACoxRIAAQAAAEgAAACsxRIAAQAAAEkAAACwxRIAAQAAAEoAAAC0xRIAAQAAAEsAAAC4xRIAAgAAAEwAAADAxRIAAQAAAE0AAADExRIAAQAAAE4AAADIxRIAAQAAAE8AAADMxRIAAQAAAFAAAADQxRIAAQAAAFEAAADUxRIAAQAAAFIAAADYxRIAAQAAAFMAAADcxRIAAgAAAFQAAADkxRIAAQAAAFUAAADoxRIAAQAAAFYAAADsxRIAAQAAAFcAAADwxRIAAQAAAFgAAAD0xRIAAQAAAFkAAAD4xRIAAQAAAFoAAAD8xRIAAQAAAGEAAAAAxhIAAQAAAGIAAAAExhIAAQAAAGMAAAAIxhIAAQAAAGQAAAAMxhIAAQAAAGUAAAAQxhIAAQAAAGYAAAAUxhIAAQAAAGcAAAAYxhIAAQAAAGgAAAAcxhIAAQAAAGkAAAAgxhIAAQAAAGoAAAAkxhIAAQAAAGsAAAAoxhIAAgAAAGwAAAAwxhIAAQAAAG0AAAA0xhIAAQAAAG4AAAA4xhIAAQAAAG8AAAA8xhIAAQAAAHAAAABAxhIAAQAAAHEAAABExhIAAQAAAHIAAABIxhIAAQAAAHMAAABMxhIAAgAAAHQAAABUxhIAAQAAAHUAAABYxhIAAQAAAHYAAABcxhIAAQAAAHcAAABgxhIAAQAAAHgAAABkxhIAAQAAAHkAAABoxhIAAQAAAHoAAABsxhIAAQAAALUAAABwxhIAAgAAAMAAAAB4xhIAAQAAAMEAAAB8xhIAAQAAAMIAAACAxhIAAQAAAMMAAACExhIAAQAAAMQAAACIxhIAAQAAAMUAAACMxhIAAgAAAMYAAACUxhIAAQAAAMcAAACYxhIAAQAAAMgAAACcxhIAAQAAAMkAAACgxhIAAQAAAMoAAACkxhIAAQAAAMsAAACoxhIAAQAAAMwAAACsxhIAAQAAAM0AAACwxhIAAQAAAM4AAAC0xhIAAQAAAM8AAAC4xhIAAQAAANAAAAC8xhIAAQAAANEAAADAxhIAAQAAANIAAADExhIAAQAAANMAAADIxhIAAQAAANQAAADMxhIAAQAAANUAAADQxhIAAQAAANYAAADUxhIAAQAAANgAAADYxhIAAQAAANkAAADcxhIAAQAAANoAAADgxhIAAQAAANsAAADkxhIAAQAAANwAAADoxhIAAQAAAN0AAADsxhIAAQAAAN4AAADwxhIAAQAAAN8AAAD0xhIAAQAAAOAAAAD4xhIAAQAAAOEAAAD8xhIAAQAAAOIAAAAAxxIAAQAAAOMAAAAExxIAAQAAAOQAAAAIxxIAAQAAAOUAAAAMxxIAAgAAAOYAAAAUxxIAAQAAAOcAAAAYxxIAAQAAAOgAAAAcxxIAAQAAAOkAAAAgxxIAAQAAAOoAAAAkxxIAAQAAAOsAAAAoxxIAAQAAAOwAAAAsxxIAAQAAAO0AAAAwxxIAAQAAAO4AAAA0xxIAAQAAAO8AAAA4xxIAAQAAAPAAAAA8xxIAAQAAAPEAAABAxxIAAQAAAPIAAABExxIAAQAAAPMAAABIxxIAAQAAAPQAAABMxxIAAQAAAPUAAABQxxIAAQAAAPYAAABUxxIAAQAAAPgAAABYxxIAAQAAAPkAAABcxxIAAQAAAPoAAABgxxIAAQAAAPsAAABkxxIAAQAAAPwAAABoxxIAAQAAAP0AAABsxxIAAQAAAP4AAABwxxIAAQAAAP8AAAB0xxIAAQAAAAABAAB4xxIAAQAAAAEBAAB8xxIAAQAAAAIBAACAxxIAAQAAAAMBAACExxIAAQAAAAQBAACIxxIAAQAAAAUBAACMxxIAAQAAAAYBAACQxxIAAQAAAAcBAACUxxIAAQAAAAgBAACYxxIAAQAAAAkBAACcxxIAAQAAAAoBAACgxxIAAQAAAAsBAACkxxIAAQAAAAwBAACoxxIAAQAAAA0BAACsxxIAAQAAAA4BAACwxxIAAQAAAA8BAAC0xxIAAQAAABABAAC4xxIAAQAAABEBAAC8xxIAAQAAABIBAADAxxIAAQAAABMBAADExxIAAQAAABQBAADIxxIAAQAAABUBAADMxxIAAQAAABYBAADQxxIAAQAAABcBAADUxxIAAQAAABgBAADYxxIAAQAAABkBAADcxxIAAQAAABoBAADgxxIAAQAAABsBAADkxxIAAQAAABwBAADoxxIAAQAAAB0BAADsxxIAAQAAAB4BAADwxxIAAQAAAB8BAAD0xxIAAQAAACABAAD4xxIAAQAAACEBAAD8xxIAAQAAACIBAAAAyBIAAQAAACMBAAAEyBIAAQAAACQBAAAIyBIAAQAAACUBAAAMyBIAAQAAACYBAAAQyBIAAQAAACcBAAAUyBIAAQAAACgBAAAYyBIAAQAAACkBAAAcyBIAAQAAACoBAAAgyBIAAQAAACsBAAAkyBIAAQAAACwBAAAoyBIAAQAAAC0BAAAsyBIAAQAAAC4BAAAwyBIAAQAAAC8BAAA0yBIAAQAAADIBAAA4yBIAAQAAADMBAAA8yBIAAQAAADQBAABAyBIAAQAAADUBAABEyBIAAQAAADYBAABIyBIAAQAAADcBAABMyBIAAQAAADkBAABQyBIAAQAAADoBAABUyBIAAQAAADsBAABYyBIAAQAAADwBAABcyBIAAQAAAD0BAABgyBIAAQAAAD4BAABkyBIAAQAAAD8BAABoyBIAAQAAAEABAABsyBIAAQAAAEEBAABwyBIAAQAAAEIBAAB0yBIAAQAAAEMBAAB4yBIAAQAAAEQBAAB8yBIAAQAAAEUBAACAyBIAAQAAAEYBAACEyBIAAQAAAEcBAACIyBIAAQAAAEgBAACMyBIAAQAAAEoBAACQyBIAAQAAAEsBAACUyBIAAQAAAEwBAACYyBIAAQAAAE0BAACcyBIAAQAAAE4BAACgyBIAAQAAAE8BAACkyBIAAQAAAFABAACoyBIAAQAAAFEBAACsyBIAAQAAAFIBAACwyBIAAQAAAFMBAAC0yBIAAQAAAFQBAAC4yBIAAQAAAFUBAAC8yBIAAQAAAFYBAADAyBIAAQAAAFcBAADEyBIAAQAAAFgBAADIyBIAAQAAAFkBAADMyBIAAQAAAFoBAADQyBIAAQAAAFsBAADUyBIAAQAAAFwBAADYyBIAAQAAAF0BAADcyBIAAQAAAF4BAADgyBIAAQAAAF8BAADkyBIAAQAAAGABAADoyBIAAQAAAGEBAADsyBIAAQAAAGIBAADwyBIAAQAAAGMBAAD0yBIAAQAAAGQBAAD4yBIAAQAAAGUBAAD8yBIAAQAAAGYBAAAAyRIAAQAAAGcBAAAEyRIAAQAAAGgBAAAIyRIAAQAAAGkBAAAMyRIAAQAAAGoBAAAQyRIAAQAAAGsBAAAUyRIAAQAAAGwBAAAYyRIAAQAAAG0BAAAcyRIAAQAAAG4BAAAgyRIAAQAAAG8BAAAkyRIAAQAAAHABAAAoyRIAAQAAAHEBAAAsyRIAAQAAAHIBAAAwyRIAAQAAAHMBAAA0yRIAAQAAAHQBAAA4yRIAAQAAAHUBAAA8yRIAAQAAAHYBAABAyRIAAQAAAHcBAABEyRIAAQAAAHgBAABIyRIAAQAAAHkBAABMyRIAAQAAAHoBAABQyRIAAQAAAHsBAABUyRIAAQAAAHwBAABYyRIAAQAAAH0BAABcyRIAAQAAAH4BAABgyRIAAQAAAH8BAABkyRIAAgAAAIABAABsyRIAAQAAAIEBAABwyRIAAQAAAIIBAAB0yRIAAQAAAIMBAAB4yRIAAQAAAIQBAAB8yRIAAQAAAIUBAACAyRIAAQAAAIYBAACEyRIAAQAAAIcBAACIyRIAAQAAAIgBAACMyRIAAQAAAIkBAACQyRIAAQAAAIoBAACUyRIAAQAAAIsBAACYyRIAAQAAAIwBAACcyRIAAQAAAI4BAACgyRIAAQAAAI8BAACkyRIAAQAAAJABAACoyRIAAQAAAJEBAACsyRIAAQAAAJIBAACwyRIAAQAAAJMBAAC0yRIAAQAAAJQBAAC4yRIAAQAAAJUBAAC8yRIAAQAAAJYBAADAyRIAAQAAAJcBAADEyRIAAQAAAJgBAADIyRIAAQAAAJkBAADMyRIAAQAAAJoBAADQyRIAAQAAAJsBAADUyRIAAQAAAJwBAADYyRIAAQAAAJ0BAADcyRIAAQAAAJ4BAADgyRIAAQAAAJ8BAADkyRIAAQAAAKABAADoyRIAAQAAAKEBAADsyRIAAQAAAKIBAADwyRIAAQAAAKMBAAD0yRIAAQAAAKQBAAD4yRIAAQAAAKUBAAD8yRIAAQAAAKYBAAAAyhIAAQAAAKcBAAAEyhIAAQAAAKgBAAAIyhIAAQAAAKkBAAAMyhIAAQAAAKwBAAAQyhIAAQAAAK0BAAAUyhIAAQAAAK4BAAAYyhIAAQAAAK8BAAAcyhIAAQAAALABAAAgyhIAAQAAALEBAAAkyhIAAQAAALIBAAAoyhIAAQAAALMBAAAsyhIAAQAAALQBAAAwyhIAAQAAALUBAAA0yhIAAQAAALYBAAA4yhIAAQAAALcBAAA8yhIAAQAAALgBAABAyhIAAQAAALkBAABEyhIAAQAAALwBAABIyhIAAQAAAL0BAABMyhIAAQAAAL8BAABQyhIAAQAAAMQBAABUyhIAAgAAAMUBAABcyhIAAgAAAMYBAABkyhIAAgAAAMcBAABsyhIAAgAAAMgBAAB0yhIAAgAAAMkBAAB8yhIAAgAAAMoBAACEyhIAAgAAAMsBAACMyhIAAgAAAMwBAACUyhIAAgAAAM0BAACcyhIAAQAAAM4BAACgyhIAAQAAAM8BAACkyhIAAQAAANABAACoyhIAAQAAANEBAACsyhIAAQAAANIBAACwyhIAAQAAANMBAAC0yhIAAQAAANQBAAC4yhIAAQAAANUBAAC8yhIAAQAAANYBAADAyhIAAQAAANcBAADEyhIAAQAAANgBAADIyhIAAQAAANkBAADMyhIAAQAAANoBAADQyhIAAQAAANsBAADUyhIAAQAAANwBAADYyhIAAQAAAN0BAADcyhIAAQAAAN4BAADgyhIAAQAAAN8BAADkyhIAAQAAAOABAADoyhIAAQAAAOEBAADsyhIAAQAAAOIBAADwyhIAAQAAAOMBAAD0yhIAAQAAAOQBAAD4yhIAAQAAAOUBAAD8yhIAAQAAAOYBAAAAyxIAAQAAAOcBAAAEyxIAAQAAAOgBAAAIyxIAAQAAAOkBAAAMyxIAAQAAAOoBAAAQyxIAAQAAAOsBAAAUyxIAAQAAAOwBAAAYyxIAAQAAAO0BAAAcyxIAAQAAAO4BAAAgyxIAAQAAAO8BAAAkyxIAAQAAAPEBAAAoyxIAAgAAAPIBAAAwyxIAAgAAAPMBAAA4yxIAAgAAAPQBAABAyxIAAQAAAPUBAABEyxIAAQAAAPYBAABIyxIAAQAAAPcBAABMyxIAAQAAAPgBAABQyxIAAQAAAPkBAABUyxIAAQAAAPoBAABYyxIAAQAAAPsBAABcyxIAAQAAAPwBAABgyxIAAQAAAP0BAABkyxIAAQAAAP4BAABoyxIAAQAAAP8BAABsyxIAAQAAAAACAABwyxIAAQAAAAECAAB0yxIAAQAAAAICAAB4yxIAAQAAAAMCAAB8yxIAAQAAAAQCAACAyxIAAQAAAAUCAACEyxIAAQAAAAYCAACIyxIAAQAAAAcCAACMyxIAAQAAAAgCAACQyxIAAQAAAAkCAACUyxIAAQAAAAoCAACYyxIAAQAAAAsCAACcyxIAAQAAAAwCAACgyxIAAQAAAA0CAACkyxIAAQAAAA4CAACoyxIAAQAAAA8CAACsyxIAAQAAABACAACwyxIAAQAAABECAAC0yxIAAQAAABICAAC4yxIAAQAAABMCAAC8yxIAAQAAABQCAADAyxIAAQAAABUCAADEyxIAAQAAABYCAADIyxIAAQAAABcCAADMyxIAAQAAABgCAADQyxIAAQAAABkCAADUyxIAAQAAABoCAADYyxIAAQAAABsCAADcyxIAAQAAABwCAADgyxIAAQAAAB0CAADkyxIAAQAAAB4CAADoyxIAAQAAAB8CAADsyxIAAQAAACACAADwyxIAAQAAACICAAD0yxIAAQAAACMCAAD4yxIAAQAAACQCAAD8yxIAAQAAACUCAAAAzBIAAQAAACYCAAAEzBIAAQAAACcCAAAIzBIAAQAAACgCAAAMzBIAAQAAACkCAAAQzBIAAQAAACoCAAAUzBIAAQAAACsCAAAYzBIAAQAAACwCAAAczBIAAQAAAC0CAAAgzBIAAQAAAC4CAAAkzBIAAQAAAC8CAAAozBIAAQAAADACAAAszBIAAQAAADECAAAwzBIAAQAAADICAAA0zBIAAQAAADMCAAA4zBIAAQAAADoCAAA8zBIAAQAAADsCAABAzBIAAQAAADwCAABEzBIAAQAAAD0CAABIzBIAAQAAAD4CAABMzBIAAQAAAD8CAABQzBIAAQAAAEACAABUzBIAAQAAAEECAABYzBIAAQAAAEICAABczBIAAQAAAEMCAABgzBIAAQAAAEQCAABkzBIAAQAAAEUCAABozBIAAQAAAEYCAABszBIAAQAAAEcCAABwzBIAAQAAAEgCAAB0zBIAAQAAAEkCAAB4zBIAAQAAAEoCAAB8zBIAAQAAAEsCAACAzBIAAQAAAEwCAACEzBIAAQAAAE0CAACIzBIAAQAAAE4CAACMzBIAAQAAAE8CAACQzBIAAQAAAFACAACUzBIAAQAAAFECAACYzBIAAQAAAFICAACczBIAAQAAAFMCAACgzBIAAQAAAFQCAACkzBIAAQAAAFYCAACozBIAAQAAAFcCAACszBIAAQAAAFkCAACwzBIAAQAAAFsCAAC0zBIAAQAAAFwCAAC4zBIAAQAAAGACAAC8zBIAAQAAAGECAADAzBIAAQAAAGMCAADEzBIAAQAAAGQCAADIzBIAAQAAAGUCAADMzBIAAQAAAGYCAADQzBIAAQAAAGgCAADUzBIAAQAAAGkCAADYzBIAAQAAAGoCAADczBIAAQAAAGsCAADgzBIAAQAAAGwCAADkzBIAAQAAAG8CAADozBIAAQAAAHECAADszBIAAQAAAHICAADwzBIAAQAAAHUCAAD0zBIAAQAAAH0CAAD4zBIAAQAAAIACAAD8zBIAAQAAAIICAAAAzRIAAQAAAIMCAAAEzRIAAQAAAIcCAAAIzRIAAQAAAIgCAAAMzRIAAQAAAIkCAAAQzRIAAQAAAIoCAAAUzRIAAQAAAIsCAAAYzRIAAQAAAIwCAAAczRIAAQAAAJICAAAgzRIAAQAAAJ0CAAAkzRIAAQAAAJ4CAAAozRIAAQAAAEUDAAAszRIAAwAAAHADAAA4zRIAAQAAAHEDAAA8zRIAAQAAAHIDAABAzRIAAQAAAHMDAABEzRIAAQAAAHYDAABIzRIAAQAAAHcDAABMzRIAAQAAAHsDAABQzRIAAQAAAHwDAABUzRIAAQAAAH0DAABYzRIAAQAAAH8DAABczRIAAQAAAIYDAABgzRIAAQAAAIgDAABkzRIAAQAAAIkDAABozRIAAQAAAIoDAABszRIAAQAAAIwDAABwzRIAAQAAAI4DAAB0zRIAAQAAAI8DAAB4zRIAAQAAAJADAAB8zRIAAQAAAJEDAACAzRIAAQAAAJIDAACEzRIAAgAAAJMDAACMzRIAAQAAAJQDAACQzRIAAQAAAJUDAACUzRIAAgAAAJYDAACczRIAAQAAAJcDAACgzRIAAQAAAJgDAACkzRIAAwAAAJkDAACwzRIAAwAAAJoDAAC8zRIAAgAAAJsDAADEzRIAAQAAAJwDAADIzRIAAgAAAJ0DAADQzRIAAQAAAJ4DAADUzRIAAQAAAJ8DAADYzRIAAQAAAKADAADczRIAAgAAAKEDAADkzRIAAgAAAKMDAADszRIAAgAAAKQDAAD0zRIAAQAAAKUDAAD4zRIAAQAAAKYDAAD8zRIAAgAAAKcDAAAEzhIAAQAAAKgDAAAIzhIAAQAAAKkDAAAMzhIAAgAAAKoDAAAUzhIAAQAAAKsDAAAYzhIAAQAAAKwDAAAczhIAAQAAAK0DAAAgzhIAAQAAAK4DAAAkzhIAAQAAAK8DAAAozhIAAQAAALADAAAszhIAAQAAALEDAAAwzhIAAQAAALIDAAA0zhIAAgAAALMDAAA8zhIAAQAAALQDAABAzhIAAQAAALUDAABEzhIAAgAAALYDAABMzhIAAQAAALcDAABQzhIAAQAAALgDAABUzhIAAwAAALkDAABgzhIAAwAAALoDAABszhIAAgAAALsDAAB0zhIAAQAAALwDAAB4zhIAAgAAAL0DAACAzhIAAQAAAL4DAACEzhIAAQAAAL8DAACIzhIAAQAAAMADAACMzhIAAgAAAMEDAACUzhIAAgAAAMIDAACczhIAAgAAAMMDAACkzhIAAgAAAMQDAACszhIAAQAAAMUDAACwzhIAAQAAAMYDAAC0zhIAAgAAAMcDAAC8zhIAAQAAAMgDAADAzhIAAQAAAMkDAADEzhIAAgAAAMoDAADMzhIAAQAAAMsDAADQzhIAAQAAAMwDAADUzhIAAQAAAM0DAADYzhIAAQAAAM4DAADczhIAAQAAAM8DAADgzhIAAQAAANADAADkzhIAAgAAANEDAADszhIAAwAAANUDAAD4zhIAAgAAANYDAAAAzxIAAgAAANcDAAAIzxIAAQAAANgDAAAMzxIAAQAAANkDAAAQzxIAAQAAANoDAAAUzxIAAQAAANsDAAAYzxIAAQAAANwDAAAczxIAAQAAAN0DAAAgzxIAAQAAAN4DAAAkzxIAAQAAAN8DAAAozxIAAQAAAOADAAAszxIAAQAAAOEDAAAwzxIAAQAAAOIDAAA0zxIAAQAAAOMDAAA4zxIAAQAAAOQDAAA8zxIAAQAAAOUDAABAzxIAAQAAAOYDAABEzxIAAQAAAOcDAABIzxIAAQAAAOgDAABMzxIAAQAAAOkDAABQzxIAAQAAAOoDAABUzxIAAQAAAOsDAABYzxIAAQAAAOwDAABczxIAAQAAAO0DAABgzxIAAQAAAO4DAABkzxIAAQAAAO8DAABozxIAAQAAAPADAABszxIAAgAAAPEDAAB0zxIAAgAAAPIDAAB8zxIAAQAAAPMDAACAzxIAAQAAAPQDAACEzxIAAwAAAPUDAACQzxIAAgAAAPcDAACYzxIAAQAAAPgDAACczxIAAQAAAPkDAACgzxIAAQAAAPoDAACkzxIAAQAAAPsDAACozxIAAQAAAP0DAACszxIAAQAAAP4DAACwzxIAAQAAAP8DAAC0zxIAAQAAAAAEAAC4zxIAAQAAAAEEAAC8zxIAAQAAAAIEAADAzxIAAQAAAAMEAADEzxIAAQAAAAQEAADIzxIAAQAAAAUEAADMzxIAAQAAAAYEAADQzxIAAQAAAAcEAADUzxIAAQAAAAgEAADYzxIAAQAAAAkEAADczxIAAQAAAAoEAADgzxIAAQAAAAsEAADkzxIAAQAAAAwEAADozxIAAQAAAA0EAADszxIAAQAAAA4EAADwzxIAAQAAAA8EAAD0zxIAAQAAABAEAAD4zxIAAQAAABEEAAD8zxIAAQAAABIEAAAA0BIAAgAAABMEAAAI0BIAAQAAABQEAAAM0BIAAgAAABUEAAAU0BIAAQAAABYEAAAY0BIAAQAAABcEAAAc0BIAAQAAABgEAAAg0BIAAQAAABkEAAAk0BIAAQAAABoEAAAo0BIAAQAAABsEAAAs0BIAAQAAABwEAAAw0BIAAQAAAB0EAAA00BIAAQAAAB4EAAA40BIAAgAAAB8EAABA0BIAAQAAACAEAABE0BIAAQAAACEEAABI0BIAAgAAACIEAABQ0BIAAwAAACMEAABc0BIAAQAAACQEAABg0BIAAQAAACUEAABk0BIAAQAAACYEAABo0BIAAQAAACcEAABs0BIAAQAAACgEAABw0BIAAQAAACkEAAB00BIAAQAAACoEAAB40BIAAgAAACsEAACA0BIAAQAAACwEAACE0BIAAQAAAC0EAACI0BIAAQAAAC4EAACM0BIAAQAAAC8EAACQ0BIAAQAAADAEAACU0BIAAQAAADEEAACY0BIAAQAAADIEAACc0BIAAgAAADMEAACk0BIAAQAAADQEAACo0BIAAgAAADUEAACw0BIAAQAAADYEAAC00BIAAQAAADcEAAC40BIAAQAAADgEAAC80BIAAQAAADkEAADA0BIAAQAAADoEAADE0BIAAQAAADsEAADI0BIAAQAAADwEAADM0BIAAQAAAD0EAADQ0BIAAQAAAD4EAADU0BIAAgAAAD8EAADc0BIAAQAAAEAEAADg0BIAAQAAAEEEAADk0BIAAgAAAEIEAADs0BIAAwAAAEMEAAD40BIAAQAAAEQEAAD80BIAAQAAAEUEAAAA0RIAAQAAAEYEAAAE0RIAAQAAAEcEAAAI0RIAAQAAAEgEAAAM0RIAAQAAAEkEAAAQ0RIAAQAAAEoEAAAU0RIAAgAAAEsEAAAc0RIAAQAAAEwEAAAg0RIAAQAAAE0EAAAk0RIAAQAAAE4EAAAo0RIAAQAAAE8EAAAs0RIAAQAAAFAEAAAw0RIAAQAAAFEEAAA00RIAAQAAAFIEAAA40RIAAQAAAFMEAAA80RIAAQAAAFQEAABA0RIAAQAAAFUEAABE0RIAAQAAAFYEAABI0RIAAQAAAFcEAABM0RIAAQAAAFgEAABQ0RIAAQAAAFkEAABU0RIAAQAAAFoEAABY0RIAAQAAAFsEAABc0RIAAQAAAFwEAABg0RIAAQAAAF0EAABk0RIAAQAAAF4EAABo0RIAAQAAAF8EAABs0RIAAQAAAGAEAABw0RIAAQAAAGEEAAB00RIAAQAAAGIEAAB40RIAAgAAAGMEAACA0RIAAgAAAGQEAACI0RIAAQAAAGUEAACM0RIAAQAAAGYEAACQ0RIAAQAAAGcEAACU0RIAAQAAAGgEAACY0RIAAQAAAGkEAACc0RIAAQAAAGoEAACg0RIAAQAAAGsEAACk0RIAAQAAAGwEAACo0RIAAQAAAG0EAACs0RIAAQAAAG4EAACw0RIAAQAAAG8EAAC00RIAAQAAAHAEAAC40RIAAQAAAHEEAAC80RIAAQAAAHIEAADA0RIAAQAAAHMEAADE0RIAAQAAAHQEAADI0RIAAQAAAHUEAADM0RIAAQAAAHYEAADQ0RIAAQAAAHcEAADU0RIAAQAAAHgEAADY0RIAAQAAAHkEAADc0RIAAQAAAHoEAADg0RIAAQAAAHsEAADk0RIAAQAAAHwEAADo0RIAAQAAAH0EAADs0RIAAQAAAH4EAADw0RIAAQAAAH8EAAD00RIAAQAAAIAEAAD40RIAAQAAAIEEAAD80RIAAQAAAIoEAAAA0hIAAQAAAIsEAAAE0hIAAQAAAIwEAAAI0hIAAQAAAI0EAAAM0hIAAQAAAI4EAAAQ0hIAAQAAAI8EAAAU0hIAAQAAAJAEAAAY0hIAAQAAAJEEAAAc0hIAAQAAAJIEAAAg0hIAAQAAAJMEAAAk0hIAAQAAAJQEAAAo0hIAAQAAAJUEAAAs0hIAAQAAAJYEAAAw0hIAAQAAAJcEAAA00hIAAQAAAJgEAAA40hIAAQAAAJkEAAA80hIAAQAAAJoEAABA0hIAAQAAAJsEAABE0hIAAQAAAJwEAABI0hIAAQAAAJ0EAABM0hIAAQAAAJ4EAABQ0hIAAQAAAJ8EAABU0hIAAQAAAKAEAABY0hIAAQAAAKEEAABc0hIAAQAAAKIEAABg0hIAAQAAAKMEAABk0hIAAQAAAKQEAABo0hIAAQAAAKUEAABs0hIAAQAAAKYEAABw0hIAAQAAAKcEAAB00hIAAQAAAKgEAAB40hIAAQAAAKkEAAB80hIAAQAAAKoEAACA0hIAAQAAAKsEAACE0hIAAQAAAKwEAACI0hIAAQAAAK0EAACM0hIAAQAAAK4EAACQ0hIAAQAAAK8EAACU0hIAAQAAALAEAACY0hIAAQAAALEEAACc0hIAAQAAALIEAACg0hIAAQAAALMEAACk0hIAAQAAALQEAACo0hIAAQAAALUEAACs0hIAAQAAALYEAACw0hIAAQAAALcEAAC00hIAAQAAALgEAAC40hIAAQAAALkEAAC80hIAAQAAALoEAADA0hIAAQAAALsEAADE0hIAAQAAALwEAADI0hIAAQAAAL0EAADM0hIAAQAAAL4EAADQ0hIAAQAAAL8EAADU0hIAAQAAAMAEAADY0hIAAQAAAMEEAADc0hIAAQAAAMIEAADg0hIAAQAAAMMEAADk0hIAAQAAAMQEAADo0hIAAQAAAMUEAADs0hIAAQAAAMYEAADw0hIAAQAAAMcEAAD00hIAAQAAAMgEAAD40hIAAQAAAMkEAAD80hIAAQAAAMoEAAAA0xIAAQAAAMsEAAAE0xIAAQAAAMwEAAAI0xIAAQAAAM0EAAAM0xIAAQAAAM4EAAAQ0xIAAQAAAM8EAAAU0xIAAQAAANAEAAAY0xIAAQAAANEEAAAc0xIAAQAAANIEAAAg0xIAAQAAANMEAAAk0xIAAQAAANQEAAAo0xIAAQAAANUEAAAs0xIAAQAAANYEAAAw0xIAAQAAANcEAAA00xIAAQAAANgEAAA40xIAAQAAANkEAAA80xIAAQAAANoEAABA0xIAAQAAANsEAABE0xIAAQAAANwEAABI0xIAAQAAAN0EAABM0xIAAQAAAN4EAABQ0xIAAQAAAN8EAABU0xIAAQAAAOAEAABY0xIAAQAAAOEEAABc0xIAAQAAAOIEAABg0xIAAQAAAOMEAABk0xIAAQAAAOQEAABo0xIAAQAAAOUEAABs0xIAAQAAAOYEAABw0xIAAQAAAOcEAAB00xIAAQAAAOgEAAB40xIAAQAAAOkEAAB80xIAAQAAAOoEAACA0xIAAQAAAOsEAACE0xIAAQAAAOwEAACI0xIAAQAAAO0EAACM0xIAAQAAAO4EAACQ0xIAAQAAAO8EAACU0xIAAQAAAPAEAACY0xIAAQAAAPEEAACc0xIAAQAAAPIEAACg0xIAAQAAAPMEAACk0xIAAQAAAPQEAACo0xIAAQAAAPUEAACs0xIAAQAAAPYEAACw0xIAAQAAAPcEAAC00xIAAQAAAPgEAAC40xIAAQAAAPkEAAC80xIAAQAAAPoEAADA0xIAAQAAAPsEAADE0xIAAQAAAPwEAADI0xIAAQAAAP0EAADM0xIAAQAAAP4EAADQ0xIAAQAAAP8EAADU0xIAAQAAAAAFAADY0xIAAQAAAAEFAADc0xIAAQAAAAIFAADg0xIAAQAAAAMFAADk0xIAAQAAAAQFAADo0xIAAQAAAAUFAADs0xIAAQAAAAYFAADw0xIAAQAAAAcFAAD00xIAAQAAAAgFAAD40xIAAQAAAAkFAAD80xIAAQAAAAoFAAAA1BIAAQAAAAsFAAAE1BIAAQAAAAwFAAAI1BIAAQAAAA0FAAAM1BIAAQAAAA4FAAAQ1BIAAQAAAA8FAAAU1BIAAQAAABAFAAAY1BIAAQAAABEFAAAc1BIAAQAAABIFAAAg1BIAAQAAABMFAAAk1BIAAQAAABQFAAAo1BIAAQAAABUFAAAs1BIAAQAAABYFAAAw1BIAAQAAABcFAAA01BIAAQAAABgFAAA41BIAAQAAABkFAAA81BIAAQAAABoFAABA1BIAAQAAABsFAABE1BIAAQAAABwFAABI1BIAAQAAAB0FAABM1BIAAQAAAB4FAABQ1BIAAQAAAB8FAABU1BIAAQAAACAFAABY1BIAAQAAACEFAABc1BIAAQAAACIFAABg1BIAAQAAACMFAABk1BIAAQAAACQFAABo1BIAAQAAACUFAABs1BIAAQAAACYFAABw1BIAAQAAACcFAAB01BIAAQAAACgFAAB41BIAAQAAACkFAAB81BIAAQAAACoFAACA1BIAAQAAACsFAACE1BIAAQAAACwFAACI1BIAAQAAAC0FAACM1BIAAQAAAC4FAACQ1BIAAQAAAC8FAACU1BIAAQAAADEFAACY1BIAAQAAADIFAACc1BIAAQAAADMFAACg1BIAAQAAADQFAACk1BIAAQAAADUFAACo1BIAAQAAADYFAACs1BIAAQAAADcFAACw1BIAAQAAADgFAAC01BIAAQAAADkFAAC41BIAAQAAADoFAAC81BIAAQAAADsFAADA1BIAAQAAADwFAADE1BIAAQAAAD0FAADI1BIAAQAAAD4FAADM1BIAAQAAAD8FAADQ1BIAAQAAAEAFAADU1BIAAQAAAEEFAADY1BIAAQAAAEIFAADc1BIAAQAAAEMFAADg1BIAAQAAAEQFAADk1BIAAQAAAEUFAADo1BIAAQAAAEYFAADs1BIAAQAAAEcFAADw1BIAAQAAAEgFAAD01BIAAQAAAEkFAAD41BIAAQAAAEoFAAD81BIAAQAAAEsFAAAA1RIAAQAAAEwFAAAE1RIAAQAAAE0FAAAI1RIAAQAAAE4FAAAM1RIAAQAAAE8FAAAQ1RIAAQAAAFAFAAAU1RIAAQAAAFEFAAAY1RIAAQAAAFIFAAAc1RIAAQAAAFMFAAAg1RIAAQAAAFQFAAAk1RIAAQAAAFUFAAAo1RIAAQAAAFYFAAAs1RIAAQAAAGEFAAAw1RIAAQAAAGIFAAA01RIAAQAAAGMFAAA41RIAAQAAAGQFAAA81RIAAQAAAGUFAABA1RIAAQAAAGYFAABE1RIAAQAAAGcFAABI1RIAAQAAAGgFAABM1RIAAQAAAGkFAABQ1RIAAQAAAGoFAABU1RIAAQAAAGsFAABY1RIAAQAAAGwFAABc1RIAAQAAAG0FAABg1RIAAQAAAG4FAABk1RIAAQAAAG8FAABo1RIAAQAAAHAFAABs1RIAAQAAAHEFAABw1RIAAQAAAHIFAAB01RIAAQAAAHMFAAB41RIAAQAAAHQFAAB81RIAAQAAAHUFAACA1RIAAQAAAHYFAACE1RIAAQAAAHcFAACI1RIAAQAAAHgFAACM1RIAAQAAAHkFAACQ1RIAAQAAAHoFAACU1RIAAQAAAHsFAACY1RIAAQAAAHwFAACc1RIAAQAAAH0FAACg1RIAAQAAAH4FAACk1RIAAQAAAH8FAACo1RIAAQAAAIAFAACs1RIAAQAAAIEFAACw1RIAAQAAAIIFAAC01RIAAQAAAIMFAAC41RIAAQAAAIQFAAC81RIAAQAAAIUFAADA1RIAAQAAAIYFAADE1RIAAQAAAKAQAADI1RIAAQAAAKEQAADM1RIAAQAAAKIQAADQ1RIAAQAAAKMQAADU1RIAAQAAAKQQAADY1RIAAQAAAKUQAADc1RIAAQAAAKYQAADg1RIAAQAAAKcQAADk1RIAAQAAAKgQAADo1RIAAQAAAKkQAADs1RIAAQAAAKoQAADw1RIAAQAAAKsQAAD01RIAAQAAAKwQAAD41RIAAQAAAK0QAAD81RIAAQAAAK4QAAAA1hIAAQAAAK8QAAAE1hIAAQAAALAQAAAI1hIAAQAAALEQAAAM1hIAAQAAALIQAAAQ1hIAAQAAALMQAAAU1hIAAQAAALQQAAAY1hIAAQAAALUQAAAc1hIAAQAAALYQAAAg1hIAAQAAALcQAAAk1hIAAQAAALgQAAAo1hIAAQAAALkQAAAs1hIAAQAAALoQAAAw1hIAAQAAALsQAAA01hIAAQAAALwQAAA41hIAAQAAAL0QAAA81hIAAQAAAL4QAABA1hIAAQAAAL8QAABE1hIAAQAAAMAQAABI1hIAAQAAAMEQAABM1hIAAQAAAMIQAABQ1hIAAQAAAMMQAABU1hIAAQAAAMQQAABY1hIAAQAAAMUQAABc1hIAAQAAAMcQAABg1hIAAQAAAM0QAABk1hIAAQAAANAQAABo1hIAAQAAANEQAABs1hIAAQAAANIQAABw1hIAAQAAANMQAAB01hIAAQAAANQQAAB41hIAAQAAANUQAAB81hIAAQAAANYQAACA1hIAAQAAANcQAACE1hIAAQAAANgQAACI1hIAAQAAANkQAACM1hIAAQAAANoQAACQ1hIAAQAAANsQAACU1hIAAQAAANwQAACY1hIAAQAAAN0QAACc1hIAAQAAAN4QAACg1hIAAQAAAN8QAACk1hIAAQAAAOAQAACo1hIAAQAAAOEQAACs1hIAAQAAAOIQAACw1hIAAQAAAOMQAAC01hIAAQAAAOQQAAC41hIAAQAAAOUQAAC81hIAAQAAAOYQAADA1hIAAQAAAOcQAADE1hIAAQAAAOgQAADI1hIAAQAAAOkQAADM1hIAAQAAAOoQAADQ1hIAAQAAAOsQAADU1hIAAQAAAOwQAADY1hIAAQAAAO0QAADc1hIAAQAAAO4QAADg1hIAAQAAAO8QAADk1hIAAQAAAPAQAADo1hIAAQAAAPEQAADs1hIAAQAAAPIQAADw1hIAAQAAAPMQAAD01hIAAQAAAPQQAAD41hIAAQAAAPUQAAD81hIAAQAAAPYQAAAA1xIAAQAAAPcQAAAE1xIAAQAAAPgQAAAI1xIAAQAAAPkQAAAM1xIAAQAAAPoQAAAQ1xIAAQAAAP0QAAAU1xIAAQAAAP4QAAAY1xIAAQAAAP8QAAAc1xIAAQAAAKATAAAg1xIAAQAAAKETAAAk1xIAAQAAAKITAAAo1xIAAQAAAKMTAAAs1xIAAQAAAKQTAAAw1xIAAQAAAKUTAAA01xIAAQAAAKYTAAA41xIAAQAAAKcTAAA81xIAAQAAAKgTAABA1xIAAQAAAKkTAABE1xIAAQAAAKoTAABI1xIAAQAAAKsTAABM1xIAAQAAAKwTAABQ1xIAAQAAAK0TAABU1xIAAQAAAK4TAABY1xIAAQAAAK8TAABc1xIAAQAAALATAABg1xIAAQAAALETAABk1xIAAQAAALITAABo1xIAAQAAALMTAABs1xIAAQAAALQTAABw1xIAAQAAALUTAAB01xIAAQAAALYTAAB41xIAAQAAALcTAAB81xIAAQAAALgTAACA1xIAAQAAALkTAACE1xIAAQAAALoTAACI1xIAAQAAALsTAACM1xIAAQAAALwTAACQ1xIAAQAAAL0TAACU1xIAAQAAAL4TAACY1xIAAQAAAL8TAACc1xIAAQAAAMATAACg1xIAAQAAAMETAACk1xIAAQAAAMITAACo1xIAAQAAAMMTAACs1xIAAQAAAMQTAACw1xIAAQAAAMUTAAC01xIAAQAAAMYTAAC41xIAAQAAAMcTAAC81xIAAQAAAMgTAADA1xIAAQAAAMkTAADE1xIAAQAAAMoTAADI1xIAAQAAAMsTAADM1xIAAQAAAMwTAADQ1xIAAQAAAM0TAADU1xIAAQAAAM4TAADY1xIAAQAAAM8TAADc1xIAAQAAANATAADg1xIAAQAAANETAADk1xIAAQAAANITAADo1xIAAQAAANMTAADs1xIAAQAAANQTAADw1xIAAQAAANUTAAD01xIAAQAAANYTAAD41xIAAQAAANcTAAD81xIAAQAAANgTAAAA2BIAAQAAANkTAAAE2BIAAQAAANoTAAAI2BIAAQAAANsTAAAM2BIAAQAAANwTAAAQ2BIAAQAAAN0TAAAU2BIAAQAAAN4TAAAY2BIAAQAAAN8TAAAc2BIAAQAAAOATAAAg2BIAAQAAAOETAAAk2BIAAQAAAOITAAAo2BIAAQAAAOMTAAAs2BIAAQAAAOQTAAAw2BIAAQAAAOUTAAA02BIAAQAAAOYTAAA42BIAAQAAAOcTAAA82BIAAQAAAOgTAABA2BIAAQAAAOkTAABE2BIAAQAAAOoTAABI2BIAAQAAAOsTAABM2BIAAQAAAOwTAABQ2BIAAQAAAO0TAABU2BIAAQAAAO4TAABY2BIAAQAAAO8TAABc2BIAAQAAAPATAABg2BIAAQAAAPETAABk2BIAAQAAAPITAABo2BIAAQAAAPMTAABs2BIAAQAAAPQTAABw2BIAAQAAAPUTAAB02BIAAQAAAPgTAAB42BIAAQAAAPkTAAB82BIAAQAAAPoTAACA2BIAAQAAAPsTAACE2BIAAQAAAPwTAACI2BIAAQAAAP0TAACM2BIAAQAAAIAcAACQ2BIAAgAAAIEcAACY2BIAAgAAAIIcAACg2BIAAgAAAIMcAACo2BIAAgAAAIQcAACw2BIAAwAAAIUcAAC82BIAAwAAAIYcAADI2BIAAgAAAIccAADQ2BIAAgAAAIgcAADY2BIAAgAAAIkcAADg2BIAAQAAAIocAADk2BIAAQAAAJAcAADo2BIAAQAAAJEcAADs2BIAAQAAAJIcAADw2BIAAQAAAJMcAAD02BIAAQAAAJQcAAD42BIAAQAAAJUcAAD82BIAAQAAAJYcAAAA2RIAAQAAAJccAAAE2RIAAQAAAJgcAAAI2RIAAQAAAJkcAAAM2RIAAQAAAJocAAAQ2RIAAQAAAJscAAAU2RIAAQAAAJwcAAAY2RIAAQAAAJ0cAAAc2RIAAQAAAJ4cAAAg2RIAAQAAAJ8cAAAk2RIAAQAAAKAcAAAo2RIAAQAAAKEcAAAs2RIAAQAAAKIcAAAw2RIAAQAAAKMcAAA02RIAAQAAAKQcAAA42RIAAQAAAKUcAAA82RIAAQAAAKYcAABA2RIAAQAAAKccAABE2RIAAQAAAKgcAABI2RIAAQAAAKkcAABM2RIAAQAAAKocAABQ2RIAAQAAAKscAABU2RIAAQAAAKwcAABY2RIAAQAAAK0cAABc2RIAAQAAAK4cAABg2RIAAQAAAK8cAABk2RIAAQAAALAcAABo2RIAAQAAALEcAABs2RIAAQAAALIcAABw2RIAAQAAALMcAAB02RIAAQAAALQcAAB42RIAAQAAALUcAAB82RIAAQAAALYcAACA2RIAAQAAALccAACE2RIAAQAAALgcAACI2RIAAQAAALkcAACM2RIAAQAAALocAACQ2RIAAQAAAL0cAACU2RIAAQAAAL4cAACY2RIAAQAAAL8cAACc2RIAAQAAAHkdAACg2RIAAQAAAH0dAACk2RIAAQAAAI4dAACo2RIAAQAAAAAeAACs2RIAAQAAAAEeAACw2RIAAQAAAAIeAAC02RIAAQAAAAMeAAC42RIAAQAAAAQeAAC82RIAAQAAAAUeAADA2RIAAQAAAAYeAADE2RIAAQAAAAceAADI2RIAAQAAAAgeAADM2RIAAQAAAAkeAADQ2RIAAQAAAAoeAADU2RIAAQAAAAseAADY2RIAAQAAAAweAADc2RIAAQAAAA0eAADg2RIAAQAAAA4eAADk2RIAAQAAAA8eAADo2RIAAQAAABAeAADs2RIAAQAAABEeAADw2RIAAQAAABIeAAD02RIAAQAAABMeAAD42RIAAQAAABQeAAD82RIAAQAAABUeAAAA2hIAAQAAABYeAAAE2hIAAQAAABceAAAI2hIAAQAAABgeAAAM2hIAAQAAABkeAAAQ2hIAAQAAABoeAAAU2hIAAQAAABseAAAY2hIAAQAAABweAAAc2hIAAQAAAB0eAAAg2hIAAQAAAB4eAAAk2hIAAQAAAB8eAAAo2hIAAQAAACAeAAAs2hIAAQAAACEeAAAw2hIAAQAAACIeAAA02hIAAQAAACMeAAA42hIAAQAAACQeAAA82hIAAQAAACUeAABA2hIAAQAAACYeAABE2hIAAQAAACceAABI2hIAAQAAACgeAABM2hIAAQAAACkeAABQ2hIAAQAAACoeAABU2hIAAQAAACseAABY2hIAAQAAACweAABc2hIAAQAAAC0eAABg2hIAAQAAAC4eAABk2hIAAQAAAC8eAABo2hIAAQAAADAeAABs2hIAAQAAADEeAABw2hIAAQAAADIeAAB02hIAAQAAADMeAAB42hIAAQAAADQeAAB82hIAAQAAADUeAACA2hIAAQAAADYeAACE2hIAAQAAADceAACI2hIAAQAAADgeAACM2hIAAQAAADkeAACQ2hIAAQAAADoeAACU2hIAAQAAADseAACY2hIAAQAAADweAACc2hIAAQAAAD0eAACg2hIAAQAAAD4eAACk2hIAAQAAAD8eAACo2hIAAQAAAEAeAACs2hIAAQAAAEEeAACw2hIAAQAAAEIeAAC02hIAAQAAAEMeAAC42hIAAQAAAEQeAAC82hIAAQAAAEUeAADA2hIAAQAAAEYeAADE2hIAAQAAAEceAADI2hIAAQAAAEgeAADM2hIAAQAAAEkeAADQ2hIAAQAAAEoeAADU2hIAAQAAAEseAADY2hIAAQAAAEweAADc2hIAAQAAAE0eAADg2hIAAQAAAE4eAADk2hIAAQAAAE8eAADo2hIAAQAAAFAeAADs2hIAAQAAAFEeAADw2hIAAQAAAFIeAAD02hIAAQAAAFMeAAD42hIAAQAAAFQeAAD82hIAAQAAAFUeAAAA2xIAAQAAAFYeAAAE2xIAAQAAAFceAAAI2xIAAQAAAFgeAAAM2xIAAQAAAFkeAAAQ2xIAAQAAAFoeAAAU2xIAAQAAAFseAAAY2xIAAQAAAFweAAAc2xIAAQAAAF0eAAAg2xIAAQAAAF4eAAAk2xIAAQAAAF8eAAAo2xIAAQAAAGAeAAAs2xIAAgAAAGEeAAA02xIAAgAAAGIeAAA82xIAAQAAAGMeAABA2xIAAQAAAGQeAABE2xIAAQAAAGUeAABI2xIAAQAAAGYeAABM2xIAAQAAAGceAABQ2xIAAQAAAGgeAABU2xIAAQAAAGkeAABY2xIAAQAAAGoeAABc2xIAAQAAAGseAABg2xIAAQAAAGweAABk2xIAAQAAAG0eAABo2xIAAQAAAG4eAABs2xIAAQAAAG8eAABw2xIAAQAAAHAeAAB02xIAAQAAAHEeAAB42xIAAQAAAHIeAAB82xIAAQAAAHMeAACA2xIAAQAAAHQeAACE2xIAAQAAAHUeAACI2xIAAQAAAHYeAACM2xIAAQAAAHceAACQ2xIAAQAAAHgeAACU2xIAAQAAAHkeAACY2xIAAQAAAHoeAACc2xIAAQAAAHseAACg2xIAAQAAAHweAACk2xIAAQAAAH0eAACo2xIAAQAAAH4eAACs2xIAAQAAAH8eAACw2xIAAQAAAIAeAAC02xIAAQAAAIEeAAC42xIAAQAAAIIeAAC82xIAAQAAAIMeAADA2xIAAQAAAIQeAADE2xIAAQAAAIUeAADI2xIAAQAAAIYeAADM2xIAAQAAAIceAADQ2xIAAQAAAIgeAADU2xIAAQAAAIkeAADY2xIAAQAAAIoeAADc2xIAAQAAAIseAADg2xIAAQAAAIweAADk2xIAAQAAAI0eAADo2xIAAQAAAI4eAADs2xIAAQAAAI8eAADw2xIAAQAAAJAeAAD02xIAAQAAAJEeAAD42xIAAQAAAJIeAAD82xIAAQAAAJMeAAAA3BIAAQAAAJQeAAAE3BIAAQAAAJUeAAAI3BIAAQAAAJseAAAM3BIAAgAAAJ4eAAAU3BIAAQAAAKAeAAAY3BIAAQAAAKEeAAAc3BIAAQAAAKIeAAAg3BIAAQAAAKMeAAAk3BIAAQAAAKQeAAAo3BIAAQAAAKUeAAAs3BIAAQAAAKYeAAAw3BIAAQAAAKceAAA03BIAAQAAAKgeAAA43BIAAQAAAKkeAAA83BIAAQAAAKoeAABA3BIAAQAAAKseAABE3BIAAQAAAKweAABI3BIAAQAAAK0eAABM3BIAAQAAAK4eAABQ3BIAAQAAAK8eAABU3BIAAQAAALAeAABY3BIAAQAAALEeAABc3BIAAQAAALIeAABg3BIAAQAAALMeAABk3BIAAQAAALQeAABo3BIAAQAAALUeAABs3BIAAQAAALYeAABw3BIAAQAAALceAAB03BIAAQAAALgeAAB43BIAAQAAALkeAAB83BIAAQAAALoeAACA3BIAAQAAALseAACE3BIAAQAAALweAACI3BIAAQAAAL0eAACM3BIAAQAAAL4eAACQ3BIAAQAAAL8eAACU3BIAAQAAAMAeAACY3BIAAQAAAMEeAACc3BIAAQAAAMIeAACg3BIAAQAAAMMeAACk3BIAAQAAAMQeAACo3BIAAQAAAMUeAACs3BIAAQAAAMYeAACw3BIAAQAAAMceAAC03BIAAQAAAMgeAAC43BIAAQAAAMkeAAC83BIAAQAAAMoeAADA3BIAAQAAAMseAADE3BIAAQAAAMweAADI3BIAAQAAAM0eAADM3BIAAQAAAM4eAADQ3BIAAQAAAM8eAADU3BIAAQAAANAeAADY3BIAAQAAANEeAADc3BIAAQAAANIeAADg3BIAAQAAANMeAADk3BIAAQAAANQeAADo3BIAAQAAANUeAADs3BIAAQAAANYeAADw3BIAAQAAANceAAD03BIAAQAAANgeAAD43BIAAQAAANkeAAD83BIAAQAAANoeAAAA3RIAAQAAANseAAAE3RIAAQAAANweAAAI3RIAAQAAAN0eAAAM3RIAAQAAAN4eAAAQ3RIAAQAAAN8eAAAU3RIAAQAAAOAeAAAY3RIAAQAAAOEeAAAc3RIAAQAAAOIeAAAg3RIAAQAAAOMeAAAk3RIAAQAAAOQeAAAo3RIAAQAAAOUeAAAs3RIAAQAAAOYeAAAw3RIAAQAAAOceAAA03RIAAQAAAOgeAAA43RIAAQAAAOkeAAA83RIAAQAAAOoeAABA3RIAAQAAAOseAABE3RIAAQAAAOweAABI3RIAAQAAAO0eAABM3RIAAQAAAO4eAABQ3RIAAQAAAO8eAABU3RIAAQAAAPAeAABY3RIAAQAAAPEeAABc3RIAAQAAAPIeAABg3RIAAQAAAPMeAABk3RIAAQAAAPQeAABo3RIAAQAAAPUeAABs3RIAAQAAAPYeAABw3RIAAQAAAPceAAB03RIAAQAAAPgeAAB43RIAAQAAAPkeAAB83RIAAQAAAPoeAACA3RIAAQAAAPseAACE3RIAAQAAAPweAACI3RIAAQAAAP0eAACM3RIAAQAAAP4eAACQ3RIAAQAAAP8eAACU3RIAAQAAAAAfAACY3RIAAQAAAAEfAACc3RIAAQAAAAIfAACg3RIAAQAAAAMfAACk3RIAAQAAAAQfAACo3RIAAQAAAAUfAACs3RIAAQAAAAYfAACw3RIAAQAAAAcfAAC03RIAAQAAAAgfAAC43RIAAQAAAAkfAAC83RIAAQAAAAofAADA3RIAAQAAAAsfAADE3RIAAQAAAAwfAADI3RIAAQAAAA0fAADM3RIAAQAAAA4fAADQ3RIAAQAAAA8fAADU3RIAAQAAABAfAADY3RIAAQAAABEfAADc3RIAAQAAABIfAADg3RIAAQAAABMfAADk3RIAAQAAABQfAADo3RIAAQAAABUfAADs3RIAAQAAABgfAADw3RIAAQAAABkfAAD03RIAAQAAABofAAD43RIAAQAAABsfAAD83RIAAQAAABwfAAAA3hIAAQAAAB0fAAAE3hIAAQAAACAfAAAI3hIAAQAAACEfAAAM3hIAAQAAACIfAAAQ3hIAAQAAACMfAAAU3hIAAQAAACQfAAAY3hIAAQAAACUfAAAc3hIAAQAAACYfAAAg3hIAAQAAACcfAAAk3hIAAQAAACgfAAAo3hIAAQAAACkfAAAs3hIAAQAAACofAAAw3hIAAQAAACsfAAA03hIAAQAAACwfAAA43hIAAQAAAC0fAAA83hIAAQAAAC4fAABA3hIAAQAAAC8fAABE3hIAAQAAADAfAABI3hIAAQAAADEfAABM3hIAAQAAADIfAABQ3hIAAQAAADMfAABU3hIAAQAAADQfAABY3hIAAQAAADUfAABc3hIAAQAAADYfAABg3hIAAQAAADcfAABk3hIAAQAAADgfAABo3hIAAQAAADkfAABs3hIAAQAAADofAABw3hIAAQAAADsfAAB03hIAAQAAADwfAAB43hIAAQAAAD0fAAB83hIAAQAAAD4fAACA3hIAAQAAAD8fAACE3hIAAQAAAEAfAACI3hIAAQAAAEEfAACM3hIAAQAAAEIfAACQ3hIAAQAAAEMfAACU3hIAAQAAAEQfAACY3hIAAQAAAEUfAACc3hIAAQAAAEgfAACg3hIAAQAAAEkfAACk3hIAAQAAAEofAACo3hIAAQAAAEsfAACs3hIAAQAAAEwfAACw3hIAAQAAAE0fAAC03hIAAQAAAFEfAAC43hIAAQAAAFMfAAC83hIAAQAAAFUfAADA3hIAAQAAAFcfAADE3hIAAQAAAFkfAADI3hIAAQAAAFsfAADM3hIAAQAAAF0fAADQ3hIAAQAAAF8fAADU3hIAAQAAAGAfAADY3hIAAQAAAGEfAADc3hIAAQAAAGIfAADg3hIAAQAAAGMfAADk3hIAAQAAAGQfAADo3hIAAQAAAGUfAADs3hIAAQAAAGYfAADw3hIAAQAAAGcfAAD03hIAAQAAAGgfAAD43hIAAQAAAGkfAAD83hIAAQAAAGofAAAA3xIAAQAAAGsfAAAE3xIAAQAAAGwfAAAI3xIAAQAAAG0fAAAM3xIAAQAAAG4fAAAQ3xIAAQAAAG8fAAAU3xIAAQAAAHAfAAAY3xIAAQAAAHEfAAAc3xIAAQAAAHIfAAAg3xIAAQAAAHMfAAAk3xIAAQAAAHQfAAAo3xIAAQAAAHUfAAAs3xIAAQAAAHYfAAAw3xIAAQAAAHcfAAA03xIAAQAAAHgfAAA43xIAAQAAAHkfAAA83xIAAQAAAHofAABA3xIAAQAAAHsfAABE3xIAAQAAAHwfAABI3xIAAQAAAH0fAABM3xIAAQAAAIAfAABQ3xIAAQAAAIEfAABU3xIAAQAAAIIfAABY3xIAAQAAAIMfAABc3xIAAQAAAIQfAABg3xIAAQAAAIUfAABk3xIAAQAAAIYfAABo3xIAAQAAAIcfAABs3xIAAQAAAIgfAABw3xIAAQAAAIkfAAB03xIAAQAAAIofAAB43xIAAQAAAIsfAAB83xIAAQAAAIwfAACA3xIAAQAAAI0fAACE3xIAAQAAAI4fAACI3xIAAQAAAI8fAACM3xIAAQAAAJAfAACQ3xIAAQAAAJEfAACU3xIAAQAAAJIfAACY3xIAAQAAAJMfAACc3xIAAQAAAJQfAACg3xIAAQAAAJUfAACk3xIAAQAAAJYfAACo3xIAAQAAAJcfAACs3xIAAQAAAJgfAACw3xIAAQAAAJkfAAC03xIAAQAAAJofAAC43xIAAQAAAJsfAAC83xIAAQAAAJwfAADA3xIAAQAAAJ0fAADE3xIAAQAAAJ4fAADI3xIAAQAAAJ8fAADM3xIAAQAAAKAfAADQ3xIAAQAAAKEfAADU3xIAAQAAAKIfAADY3xIAAQAAAKMfAADc3xIAAQAAAKQfAADg3xIAAQAAAKUfAADk3xIAAQAAAKYfAADo3xIAAQAAAKcfAADs3xIAAQAAAKgfAADw3xIAAQAAAKkfAAD03xIAAQAAAKofAAD43xIAAQAAAKsfAAD83xIAAQAAAKwfAAAA4BIAAQAAAK0fAAAE4BIAAQAAAK4fAAAI4BIAAQAAAK8fAAAM4BIAAQAAALAfAAAQ4BIAAQAAALEfAAAU4BIAAQAAALMfAAAY4BIAAQAAALgfAAAc4BIAAQAAALkfAAAg4BIAAQAAALofAAAk4BIAAQAAALsfAAAo4BIAAQAAALwfAAAs4BIAAQAAAL4fAAAw4BIAAwAAAMMfAAA84BIAAQAAAMgfAABA4BIAAQAAAMkfAABE4BIAAQAAAMofAABI4BIAAQAAAMsfAABM4BIAAQAAAMwfAABQ4BIAAQAAANAfAABU4BIAAQAAANEfAABY4BIAAQAAANMfAABc4BIAAQAAANgfAABg4BIAAQAAANkfAABk4BIAAQAAANofAABo4BIAAQAAANsfAABs4BIAAQAAAOAfAABw4BIAAQAAAOEfAAB04BIAAQAAAOMfAAB44BIAAQAAAOUfAAB84BIAAQAAAOgfAACA4BIAAQAAAOkfAACE4BIAAQAAAOofAACI4BIAAQAAAOsfAACM4BIAAQAAAOwfAACQ4BIAAQAAAPMfAACU4BIAAQAAAPgfAACY4BIAAQAAAPkfAACc4BIAAQAAAPofAACg4BIAAQAAAPsfAACk4BIAAQAAAPwfAACo4BIAAQAAACYhAACs4BIAAgAAACohAAC04BIAAgAAACshAAC84BIAAgAAADIhAADE4BIAAQAAAE4hAADI4BIAAQAAAGAhAADM4BIAAQAAAGEhAADQ4BIAAQAAAGIhAADU4BIAAQAAAGMhAADY4BIAAQAAAGQhAADc4BIAAQAAAGUhAADg4BIAAQAAAGYhAADk4BIAAQAAAGchAADo4BIAAQAAAGghAADs4BIAAQAAAGkhAADw4BIAAQAAAGohAAD04BIAAQAAAGshAAD44BIAAQAAAGwhAAD84BIAAQAAAG0hAAAA4RIAAQAAAG4hAAAE4RIAAQAAAG8hAAAI4RIAAQAAAHAhAAAM4RIAAQAAAHEhAAAQ4RIAAQAAAHIhAAAU4RIAAQAAAHMhAAAY4RIAAQAAAHQhAAAc4RIAAQAAAHUhAAAg4RIAAQAAAHYhAAAk4RIAAQAAAHchAAAo4RIAAQAAAHghAAAs4RIAAQAAAHkhAAAw4RIAAQAAAHohAAA04RIAAQAAAHshAAA44RIAAQAAAHwhAAA84RIAAQAAAH0hAABA4RIAAQAAAH4hAABE4RIAAQAAAH8hAABI4RIAAQAAAIMhAABM4RIAAQAAAIQhAABQ4RIAAQAAALYkAABU4RIAAQAAALckAABY4RIAAQAAALgkAABc4RIAAQAAALkkAABg4RIAAQAAALokAABk4RIAAQAAALskAABo4RIAAQAAALwkAABs4RIAAQAAAL0kAABw4RIAAQAAAL4kAAB04RIAAQAAAL8kAAB44RIAAQAAAMAkAAB84RIAAQAAAMEkAACA4RIAAQAAAMIkAACE4RIAAQAAAMMkAACI4RIAAQAAAMQkAACM4RIAAQAAAMUkAACQ4RIAAQAAAMYkAACU4RIAAQAAAMckAACY4RIAAQAAAMgkAACc4RIAAQAAAMkkAACg4RIAAQAAAMokAACk4RIAAQAAAMskAACo4RIAAQAAAMwkAACs4RIAAQAAAM0kAACw4RIAAQAAAM4kAAC04RIAAQAAAM8kAAC44RIAAQAAANAkAAC84RIAAQAAANEkAADA4RIAAQAAANIkAADE4RIAAQAAANMkAADI4RIAAQAAANQkAADM4RIAAQAAANUkAADQ4RIAAQAAANYkAADU4RIAAQAAANckAADY4RIAAQAAANgkAADc4RIAAQAAANkkAADg4RIAAQAAANokAADk4RIAAQAAANskAADo4RIAAQAAANwkAADs4RIAAQAAAN0kAADw4RIAAQAAAN4kAAD04RIAAQAAAN8kAAD44RIAAQAAAOAkAAD84RIAAQAAAOEkAAAA4hIAAQAAAOIkAAAE4hIAAQAAAOMkAAAI4hIAAQAAAOQkAAAM4hIAAQAAAOUkAAAQ4hIAAQAAAOYkAAAU4hIAAQAAAOckAAAY4hIAAQAAAOgkAAAc4hIAAQAAAOkkAAAg4hIAAQAAAAAsAAAk4hIAAQAAAAEsAAAo4hIAAQAAAAIsAAAs4hIAAQAAAAMsAAAw4hIAAQAAAAQsAAA04hIAAQAAAAUsAAA44hIAAQAAAAYsAAA84hIAAQAAAAcsAABA4hIAAQAAAAgsAABE4hIAAQAAAAksAABI4hIAAQAAAAosAABM4hIAAQAAAAssAABQ4hIAAQAAAAwsAABU4hIAAQAAAA0sAABY4hIAAQAAAA4sAABc4hIAAQAAAA8sAABg4hIAAQAAABAsAABk4hIAAQAAABEsAABo4hIAAQAAABIsAABs4hIAAQAAABMsAABw4hIAAQAAABQsAAB04hIAAQAAABUsAAB44hIAAQAAABYsAAB84hIAAQAAABcsAACA4hIAAQAAABgsAACE4hIAAQAAABksAACI4hIAAQAAABosAACM4hIAAQAAABssAACQ4hIAAQAAABwsAACU4hIAAQAAAB0sAACY4hIAAQAAAB4sAACc4hIAAQAAAB8sAACg4hIAAQAAACAsAACk4hIAAQAAACEsAACo4hIAAQAAACIsAACs4hIAAQAAACMsAACw4hIAAQAAACQsAAC04hIAAQAAACUsAAC44hIAAQAAACYsAAC84hIAAQAAACcsAADA4hIAAQAAACgsAADE4hIAAQAAACksAADI4hIAAQAAACosAADM4hIAAQAAACssAADQ4hIAAQAAACwsAADU4hIAAQAAAC0sAADY4hIAAQAAAC4sAADc4hIAAQAAAC8sAADg4hIAAQAAADAsAADk4hIAAQAAADEsAADo4hIAAQAAADIsAADs4hIAAQAAADMsAADw4hIAAQAAADQsAAD04hIAAQAAADUsAAD44hIAAQAAADYsAAD84hIAAQAAADcsAAAA4xIAAQAAADgsAAAE4xIAAQAAADksAAAI4xIAAQAAADosAAAM4xIAAQAAADssAAAQ4xIAAQAAADwsAAAU4xIAAQAAAD0sAAAY4xIAAQAAAD4sAAAc4xIAAQAAAD8sAAAg4xIAAQAAAEAsAAAk4xIAAQAAAEEsAAAo4xIAAQAAAEIsAAAs4xIAAQAAAEMsAAAw4xIAAQAAAEQsAAA04xIAAQAAAEUsAAA44xIAAQAAAEYsAAA84xIAAQAAAEcsAABA4xIAAQAAAEgsAABE4xIAAQAAAEksAABI4xIAAQAAAEosAABM4xIAAQAAAEssAABQ4xIAAQAAAEwsAABU4xIAAQAAAE0sAABY4xIAAQAAAE4sAABc4xIAAQAAAE8sAABg4xIAAQAAAFAsAABk4xIAAQAAAFEsAABo4xIAAQAAAFIsAABs4xIAAQAAAFMsAABw4xIAAQAAAFQsAAB04xIAAQAAAFUsAAB44xIAAQAAAFYsAAB84xIAAQAAAFcsAACA4xIAAQAAAFgsAACE4xIAAQAAAFksAACI4xIAAQAAAFosAACM4xIAAQAAAFssAACQ4xIAAQAAAFwsAACU4xIAAQAAAF0sAACY4xIAAQAAAF4sAACc4xIAAQAAAF8sAACg4xIAAQAAAGAsAACk4xIAAQAAAGEsAACo4xIAAQAAAGIsAACs4xIAAQAAAGMsAACw4xIAAQAAAGQsAAC04xIAAQAAAGUsAAC44xIAAQAAAGYsAAC84xIAAQAAAGcsAADA4xIAAQAAAGgsAADE4xIAAQAAAGksAADI4xIAAQAAAGosAADM4xIAAQAAAGssAADQ4xIAAQAAAGwsAADU4xIAAQAAAG0sAADY4xIAAQAAAG4sAADc4xIAAQAAAG8sAADg4xIAAQAAAHAsAADk4xIAAQAAAHIsAADo4xIAAQAAAHMsAADs4xIAAQAAAHUsAADw4xIAAQAAAHYsAAD04xIAAQAAAH4sAAD44xIAAQAAAH8sAAD84xIAAQAAAIAsAAAA5BIAAQAAAIEsAAAE5BIAAQAAAIIsAAAI5BIAAQAAAIMsAAAM5BIAAQAAAIQsAAAQ5BIAAQAAAIUsAAAU5BIAAQAAAIYsAAAY5BIAAQAAAIcsAAAc5BIAAQAAAIgsAAAg5BIAAQAAAIksAAAk5BIAAQAAAIosAAAo5BIAAQAAAIssAAAs5BIAAQAAAIwsAAAw5BIAAQAAAI0sAAA05BIAAQAAAI4sAAA45BIAAQAAAI8sAAA85BIAAQAAAJAsAABA5BIAAQAAAJEsAABE5BIAAQAAAJIsAABI5BIAAQAAAJMsAABM5BIAAQAAAJQsAABQ5BIAAQAAAJUsAABU5BIAAQAAAJYsAABY5BIAAQAAAJcsAABc5BIAAQAAAJgsAABg5BIAAQAAAJksAABk5BIAAQAAAJosAABo5BIAAQAAAJssAABs5BIAAQAAAJwsAABw5BIAAQAAAJ0sAAB05BIAAQAAAJ4sAAB45BIAAQAAAJ8sAAB85BIAAQAAAKAsAACA5BIAAQAAAKEsAACE5BIAAQAAAKIsAACI5BIAAQAAAKMsAACM5BIAAQAAAKQsAACQ5BIAAQAAAKUsAACU5BIAAQAAAKYsAACY5BIAAQAAAKcsAACc5BIAAQAAAKgsAACg5BIAAQAAAKksAACk5BIAAQAAAKosAACo5BIAAQAAAKssAACs5BIAAQAAAKwsAACw5BIAAQAAAK0sAAC05BIAAQAAAK4sAAC45BIAAQAAAK8sAAC85BIAAQAAALAsAADA5BIAAQAAALEsAADE5BIAAQAAALIsAADI5BIAAQAAALMsAADM5BIAAQAAALQsAADQ5BIAAQAAALUsAADU5BIAAQAAALYsAADY5BIAAQAAALcsAADc5BIAAQAAALgsAADg5BIAAQAAALksAADk5BIAAQAAALosAADo5BIAAQAAALssAADs5BIAAQAAALwsAADw5BIAAQAAAL0sAAD05BIAAQAAAL4sAAD45BIAAQAAAL8sAAD85BIAAQAAAMAsAAAA5RIAAQAAAMEsAAAE5RIAAQAAAMIsAAAI5RIAAQAAAMMsAAAM5RIAAQAAAMQsAAAQ5RIAAQAAAMUsAAAU5RIAAQAAAMYsAAAY5RIAAQAAAMcsAAAc5RIAAQAAAMgsAAAg5RIAAQAAAMksAAAk5RIAAQAAAMosAAAo5RIAAQAAAMssAAAs5RIAAQAAAMwsAAAw5RIAAQAAAM0sAAA05RIAAQAAAM4sAAA45RIAAQAAAM8sAAA85RIAAQAAANAsAABA5RIAAQAAANEsAABE5RIAAQAAANIsAABI5RIAAQAAANMsAABM5RIAAQAAANQsAABQ5RIAAQAAANUsAABU5RIAAQAAANYsAABY5RIAAQAAANcsAABc5RIAAQAAANgsAABg5RIAAQAAANksAABk5RIAAQAAANosAABo5RIAAQAAANssAABs5RIAAQAAANwsAABw5RIAAQAAAN0sAAB05RIAAQAAAN4sAAB45RIAAQAAAN8sAAB85RIAAQAAAOAsAACA5RIAAQAAAOEsAACE5RIAAQAAAOIsAACI5RIAAQAAAOMsAACM5RIAAQAAAOssAACQ5RIAAQAAAOwsAACU5RIAAQAAAO0sAACY5RIAAQAAAO4sAACc5RIAAQAAAPIsAACg5RIAAQAAAPMsAACk5RIAAQAAAAAtAACo5RIAAQAAAAEtAACs5RIAAQAAAAItAACw5RIAAQAAAAMtAAC05RIAAQAAAAQtAAC45RIAAQAAAAUtAAC85RIAAQAAAAYtAADA5RIAAQAAAActAADE5RIAAQAAAAgtAADI5RIAAQAAAAktAADM5RIAAQAAAAotAADQ5RIAAQAAAAstAADU5RIAAQAAAAwtAADY5RIAAQAAAA0tAADc5RIAAQAAAA4tAADg5RIAAQAAAA8tAADk5RIAAQAAABAtAADo5RIAAQAAABEtAADs5RIAAQAAABItAADw5RIAAQAAABMtAAD05RIAAQAAABQtAAD45RIAAQAAABUtAAD85RIAAQAAABYtAAAA5hIAAQAAABctAAAE5hIAAQAAABgtAAAI5hIAAQAAABktAAAM5hIAAQAAABotAAAQ5hIAAQAAABstAAAU5hIAAQAAABwtAAAY5hIAAQAAAB0tAAAc5hIAAQAAAB4tAAAg5hIAAQAAAB8tAAAk5hIAAQAAACAtAAAo5hIAAQAAACEtAAAs5hIAAQAAACItAAAw5hIAAQAAACMtAAA05hIAAQAAACQtAAA45hIAAQAAACUtAAA85hIAAQAAACctAABA5hIAAQAAAC0tAABE5hIAAQAAAECmAABI5hIAAQAAAEGmAABM5hIAAQAAAEKmAABQ5hIAAQAAAEOmAABU5hIAAQAAAESmAABY5hIAAQAAAEWmAABc5hIAAQAAAEamAABg5hIAAQAAAEemAABk5hIAAQAAAEimAABo5hIAAQAAAEmmAABs5hIAAQAAAEqmAABw5hIAAgAAAEumAAB45hIAAgAAAEymAACA5hIAAQAAAE2mAACE5hIAAQAAAE6mAACI5hIAAQAAAE+mAACM5hIAAQAAAFCmAACQ5hIAAQAAAFGmAACU5hIAAQAAAFKmAACY5hIAAQAAAFOmAACc5hIAAQAAAFSmAACg5hIAAQAAAFWmAACk5hIAAQAAAFamAACo5hIAAQAAAFemAACs5hIAAQAAAFimAACw5hIAAQAAAFmmAAC05hIAAQAAAFqmAAC45hIAAQAAAFumAAC85hIAAQAAAFymAADA5hIAAQAAAF2mAADE5hIAAQAAAF6mAADI5hIAAQAAAF+mAADM5hIAAQAAAGCmAADQ5hIAAQAAAGGmAADU5hIAAQAAAGKmAADY5hIAAQAAAGOmAADc5hIAAQAAAGSmAADg5hIAAQAAAGWmAADk5hIAAQAAAGamAADo5hIAAQAAAGemAADs5hIAAQAAAGimAADw5hIAAQAAAGmmAAD05hIAAQAAAGqmAAD45hIAAQAAAGumAAD85hIAAQAAAGymAAAA5xIAAQAAAG2mAAAE5xIAAQAAAICmAAAI5xIAAQAAAIGmAAAM5xIAAQAAAIKmAAAQ5xIAAQAAAIOmAAAU5xIAAQAAAISmAAAY5xIAAQAAAIWmAAAc5xIAAQAAAIamAAAg5xIAAQAAAIemAAAk5xIAAQAAAIimAAAo5xIAAQAAAImmAAAs5xIAAQAAAIqmAAAw5xIAAQAAAIumAAA05xIAAQAAAIymAAA45xIAAQAAAI2mAAA85xIAAQAAAI6mAABA5xIAAQAAAI+mAABE5xIAAQAAAJCmAABI5xIAAQAAAJGmAABM5xIAAQAAAJKmAABQ5xIAAQAAAJOmAABU5xIAAQAAAJSmAABY5xIAAQAAAJWmAABc5xIAAQAAAJamAABg5xIAAQAAAJemAABk5xIAAQAAAJimAABo5xIAAQAAAJmmAABs5xIAAQAAAJqmAABw5xIAAQAAAJumAAB05xIAAQAAACKnAAB45xIAAQAAACOnAAB85xIAAQAAACSnAACA5xIAAQAAACWnAACE5xIAAQAAACanAACI5xIAAQAAACenAACM5xIAAQAAACinAACQ5xIAAQAAACmnAACU5xIAAQAAACqnAACY5xIAAQAAACunAACc5xIAAQAAACynAACg5xIAAQAAAC2nAACk5xIAAQAAAC6nAACo5xIAAQAAAC+nAACs5xIAAQAAADKnAACw5xIAAQAAADOnAAC05xIAAQAAADSnAAC45xIAAQAAADWnAAC85xIAAQAAADanAADA5xIAAQAAADenAADE5xIAAQAAADinAADI5xIAAQAAADmnAADM5xIAAQAAADqnAADQ5xIAAQAAADunAADU5xIAAQAAADynAADY5xIAAQAAAD2nAADc5xIAAQAAAD6nAADg5xIAAQAAAD+nAADk5xIAAQAAAECnAADo5xIAAQAAAEGnAADs5xIAAQAAAEKnAADw5xIAAQAAAEOnAAD05xIAAQAAAESnAAD45xIAAQAAAEWnAAD85xIAAQAAAEanAAAA6BIAAQAAAEenAAAE6BIAAQAAAEinAAAI6BIAAQAAAEmnAAAM6BIAAQAAAEqnAAAQ6BIAAQAAAEunAAAU6BIAAQAAAEynAAAY6BIAAQAAAE2nAAAc6BIAAQAAAE6nAAAg6BIAAQAAAE+nAAAk6BIAAQAAAFCnAAAo6BIAAQAAAFGnAAAs6BIAAQAAAFKnAAAw6BIAAQAAAFOnAAA06BIAAQAAAFSnAAA46BIAAQAAAFWnAAA86BIAAQAAAFanAABA6BIAAQAAAFenAABE6BIAAQAAAFinAABI6BIAAQAAAFmnAABM6BIAAQAAAFqnAABQ6BIAAQAAAFunAABU6BIAAQAAAFynAABY6BIAAQAAAF2nAABc6BIAAQAAAF6nAABg6BIAAQAAAF+nAABk6BIAAQAAAGCnAABo6BIAAQAAAGGnAABs6BIAAQAAAGKnAABw6BIAAQAAAGOnAAB06BIAAQAAAGSnAAB46BIAAQAAAGWnAAB86BIAAQAAAGanAACA6BIAAQAAAGenAACE6BIAAQAAAGinAACI6BIAAQAAAGmnAACM6BIAAQAAAGqnAACQ6BIAAQAAAGunAACU6BIAAQAAAGynAACY6BIAAQAAAG2nAACc6BIAAQAAAG6nAACg6BIAAQAAAG+nAACk6BIAAQAAAHmnAACo6BIAAQAAAHqnAACs6BIAAQAAAHunAACw6BIAAQAAAHynAAC06BIAAQAAAH2nAAC46BIAAQAAAH6nAAC86BIAAQAAAH+nAADA6BIAAQAAAICnAADE6BIAAQAAAIGnAADI6BIAAQAAAIKnAADM6BIAAQAAAIOnAADQ6BIAAQAAAISnAADU6BIAAQAAAIWnAADY6BIAAQAAAIanAADc6BIAAQAAAIenAADg6BIAAQAAAIunAADk6BIAAQAAAIynAADo6BIAAQAAAI2nAADs6BIAAQAAAJCnAADw6BIAAQAAAJGnAAD06BIAAQAAAJKnAAD46BIAAQAAAJOnAAD86BIAAQAAAJSnAAAA6RIAAQAAAJanAAAE6RIAAQAAAJenAAAI6RIAAQAAAJinAAAM6RIAAQAAAJmnAAAQ6RIAAQAAAJqnAAAU6RIAAQAAAJunAAAY6RIAAQAAAJynAAAc6RIAAQAAAJ2nAAAg6RIAAQAAAJ6nAAAk6RIAAQAAAJ+nAAAo6RIAAQAAAKCnAAAs6RIAAQAAAKGnAAAw6RIAAQAAAKKnAAA06RIAAQAAAKOnAAA46RIAAQAAAKSnAAA86RIAAQAAAKWnAABA6RIAAQAAAKanAABE6RIAAQAAAKenAABI6RIAAQAAAKinAABM6RIAAQAAAKmnAABQ6RIAAQAAAKqnAABU6RIAAQAAAKunAABY6RIAAQAAAKynAABc6RIAAQAAAK2nAABg6RIAAQAAAK6nAABk6RIAAQAAALCnAABo6RIAAQAAALGnAABs6RIAAQAAALKnAABw6RIAAQAAALOnAAB06RIAAQAAALSnAAB46RIAAQAAALWnAAB86RIAAQAAALanAACA6RIAAQAAALenAACE6RIAAQAAALinAACI6RIAAQAAALmnAACM6RIAAQAAALqnAACQ6RIAAQAAALunAACU6RIAAQAAALynAACY6RIAAQAAAL2nAACc6RIAAQAAAL6nAACg6RIAAQAAAL+nAACk6RIAAQAAAMCnAACo6RIAAQAAAMGnAACs6RIAAQAAAMKnAACw6RIAAQAAAMOnAAC06RIAAQAAAMSnAAC46RIAAQAAAMWnAAC86RIAAQAAAManAADA6RIAAQAAAMenAADE6RIAAQAAAMinAADI6RIAAQAAAMmnAADM6RIAAQAAAMqnAADQ6RIAAQAAAMunAADU6RIAAQAAAMynAADY6RIAAQAAAM2nAADc6RIAAQAAANCnAADg6RIAAQAAANGnAADk6RIAAQAAANanAADo6RIAAQAAANenAADs6RIAAQAAANinAADw6RIAAQAAANmnAAD06RIAAQAAANqnAAD46RIAAQAAANunAAD86RIAAQAAANynAAAA6hIAAQAAAPWnAAAE6hIAAQAAAPanAAAI6hIAAQAAAFOrAAAM6hIAAQAAAHCrAAAQ6hIAAQAAAHGrAAAU6hIAAQAAAHKrAAAY6hIAAQAAAHOrAAAc6hIAAQAAAHSrAAAg6hIAAQAAAHWrAAAk6hIAAQAAAHarAAAo6hIAAQAAAHerAAAs6hIAAQAAAHirAAAw6hIAAQAAAHmrAAA06hIAAQAAAHqrAAA46hIAAQAAAHurAAA86hIAAQAAAHyrAABA6hIAAQAAAH2rAABE6hIAAQAAAH6rAABI6hIAAQAAAH+rAABM6hIAAQAAAICrAABQ6hIAAQAAAIGrAABU6hIAAQAAAIKrAABY6hIAAQAAAIOrAABc6hIAAQAAAISrAABg6hIAAQAAAIWrAABk6hIAAQAAAIarAABo6hIAAQAAAIerAABs6hIAAQAAAIirAABw6hIAAQAAAImrAAB06hIAAQAAAIqrAAB46hIAAQAAAIurAAB86hIAAQAAAIyrAACA6hIAAQAAAI2rAACE6hIAAQAAAI6rAACI6hIAAQAAAI+rAACM6hIAAQAAAJCrAACQ6hIAAQAAAJGrAACU6hIAAQAAAJKrAACY6hIAAQAAAJOrAACc6hIAAQAAAJSrAACg6hIAAQAAAJWrAACk6hIAAQAAAJarAACo6hIAAQAAAJerAACs6hIAAQAAAJirAACw6hIAAQAAAJmrAAC06hIAAQAAAJqrAAC46hIAAQAAAJurAAC86hIAAQAAAJyrAADA6hIAAQAAAJ2rAADE6hIAAQAAAJ6rAADI6hIAAQAAAJ+rAADM6hIAAQAAAKCrAADQ6hIAAQAAAKGrAADU6hIAAQAAAKKrAADY6hIAAQAAAKOrAADc6hIAAQAAAKSrAADg6hIAAQAAAKWrAADk6hIAAQAAAKarAADo6hIAAQAAAKerAADs6hIAAQAAAKirAADw6hIAAQAAAKmrAAD06hIAAQAAAKqrAAD46hIAAQAAAKurAAD86hIAAQAAAKyrAAAA6xIAAQAAAK2rAAAE6xIAAQAAAK6rAAAI6xIAAQAAAK+rAAAM6xIAAQAAALCrAAAQ6xIAAQAAALGrAAAU6xIAAQAAALKrAAAY6xIAAQAAALOrAAAc6xIAAQAAALSrAAAg6xIAAQAAALWrAAAk6xIAAQAAALarAAAo6xIAAQAAALerAAAs6xIAAQAAALirAAAw6xIAAQAAALmrAAA06xIAAQAAALqrAAA46xIAAQAAALurAAA86xIAAQAAALyrAABA6xIAAQAAAL2rAABE6xIAAQAAAL6rAABI6xIAAQAAAL+rAABM6xIAAQAAAAX7AABQ6xIAAQAAAAb7AABU6xIAAQAAACH/AABY6xIAAQAAACL/AABc6xIAAQAAACP/AABg6xIAAQAAACT/AABk6xIAAQAAACX/AABo6xIAAQAAACb/AABs6xIAAQAAACf/AABw6xIAAQAAACj/AAB06xIAAQAAACn/AAB46xIAAQAAACr/AAB86xIAAQAAACv/AACA6xIAAQAAACz/AACE6xIAAQAAAC3/AACI6xIAAQAAAC7/AACM6xIAAQAAAC//AACQ6xIAAQAAADD/AACU6xIAAQAAADH/AACY6xIAAQAAADL/AACc6xIAAQAAADP/AACg6xIAAQAAADT/AACk6xIAAQAAADX/AACo6xIAAQAAADb/AACs6xIAAQAAADf/AACw6xIAAQAAADj/AAC06xIAAQAAADn/AAC46xIAAQAAADr/AAC86xIAAQAAAEH/AADA6xIAAQAAAEL/AADE6xIAAQAAAEP/AADI6xIAAQAAAET/AADM6xIAAQAAAEX/AADQ6xIAAQAAAEb/AADU6xIAAQAAAEf/AADY6xIAAQAAAEj/AADc6xIAAQAAAEn/AADg6xIAAQAAAEr/AADk6xIAAQAAAEv/AADo6xIAAQAAAEz/AADs6xIAAQAAAE3/AADw6xIAAQAAAE7/AAD06xIAAQAAAE//AAD46xIAAQAAAFD/AAD86xIAAQAAAFH/AAAA7BIAAQAAAFL/AAAE7BIAAQAAAFP/AAAI7BIAAQAAAFT/AAAM7BIAAQAAAFX/AAAQ7BIAAQAAAFb/AAAU7BIAAQAAAFf/AAAY7BIAAQAAAFj/AAAc7BIAAQAAAFn/AAAg7BIAAQAAAFr/AAAk7BIAAQAAAAAEAQAo7BIAAQAAAAEEAQAs7BIAAQAAAAIEAQAw7BIAAQAAAAMEAQA07BIAAQAAAAQEAQA47BIAAQAAAAUEAQA87BIAAQAAAAYEAQBA7BIAAQAAAAcEAQBE7BIAAQAAAAgEAQBI7BIAAQAAAAkEAQBM7BIAAQAAAAoEAQBQ7BIAAQAAAAsEAQBU7BIAAQAAAAwEAQBY7BIAAQAAAA0EAQBc7BIAAQAAAA4EAQBg7BIAAQAAAA8EAQBk7BIAAQAAABAEAQBo7BIAAQAAABEEAQBs7BIAAQAAABIEAQBw7BIAAQAAABMEAQB07BIAAQAAABQEAQB47BIAAQAAABUEAQB87BIAAQAAABYEAQCA7BIAAQAAABcEAQCE7BIAAQAAABgEAQCI7BIAAQAAABkEAQCM7BIAAQAAABoEAQCQ7BIAAQAAABsEAQCU7BIAAQAAABwEAQCY7BIAAQAAAB0EAQCc7BIAAQAAAB4EAQCg7BIAAQAAAB8EAQCk7BIAAQAAACAEAQCo7BIAAQAAACEEAQCs7BIAAQAAACIEAQCw7BIAAQAAACMEAQC07BIAAQAAACQEAQC47BIAAQAAACUEAQC87BIAAQAAACYEAQDA7BIAAQAAACcEAQDE7BIAAQAAACgEAQDI7BIAAQAAACkEAQDM7BIAAQAAACoEAQDQ7BIAAQAAACsEAQDU7BIAAQAAACwEAQDY7BIAAQAAAC0EAQDc7BIAAQAAAC4EAQDg7BIAAQAAAC8EAQDk7BIAAQAAADAEAQDo7BIAAQAAADEEAQDs7BIAAQAAADIEAQDw7BIAAQAAADMEAQD07BIAAQAAADQEAQD47BIAAQAAADUEAQD87BIAAQAAADYEAQAA7RIAAQAAADcEAQAE7RIAAQAAADgEAQAI7RIAAQAAADkEAQAM7RIAAQAAADoEAQAQ7RIAAQAAADsEAQAU7RIAAQAAADwEAQAY7RIAAQAAAD0EAQAc7RIAAQAAAD4EAQAg7RIAAQAAAD8EAQAk7RIAAQAAAEAEAQAo7RIAAQAAAEEEAQAs7RIAAQAAAEIEAQAw7RIAAQAAAEMEAQA07RIAAQAAAEQEAQA47RIAAQAAAEUEAQA87RIAAQAAAEYEAQBA7RIAAQAAAEcEAQBE7RIAAQAAAEgEAQBI7RIAAQAAAEkEAQBM7RIAAQAAAEoEAQBQ7RIAAQAAAEsEAQBU7RIAAQAAAEwEAQBY7RIAAQAAAE0EAQBc7RIAAQAAAE4EAQBg7RIAAQAAAE8EAQBk7RIAAQAAALAEAQBo7RIAAQAAALEEAQBs7RIAAQAAALIEAQBw7RIAAQAAALMEAQB07RIAAQAAALQEAQB47RIAAQAAALUEAQB87RIAAQAAALYEAQCA7RIAAQAAALcEAQCE7RIAAQAAALgEAQCI7RIAAQAAALkEAQCM7RIAAQAAALoEAQCQ7RIAAQAAALsEAQCU7RIAAQAAALwEAQCY7RIAAQAAAL0EAQCc7RIAAQAAAL4EAQCg7RIAAQAAAL8EAQCk7RIAAQAAAMAEAQCo7RIAAQAAAMEEAQCs7RIAAQAAAMIEAQCw7RIAAQAAAMMEAQC07RIAAQAAAMQEAQC47RIAAQAAAMUEAQC87RIAAQAAAMYEAQDA7RIAAQAAAMcEAQDE7RIAAQAAAMgEAQDI7RIAAQAAAMkEAQDM7RIAAQAAAMoEAQDQ7RIAAQAAAMsEAQDU7RIAAQAAAMwEAQDY7RIAAQAAAM0EAQDc7RIAAQAAAM4EAQDg7RIAAQAAAM8EAQDk7RIAAQAAANAEAQDo7RIAAQAAANEEAQDs7RIAAQAAANIEAQDw7RIAAQAAANMEAQD07RIAAQAAANgEAQD47RIAAQAAANkEAQD87RIAAQAAANoEAQAA7hIAAQAAANsEAQAE7hIAAQAAANwEAQAI7hIAAQAAAN0EAQAM7hIAAQAAAN4EAQAQ7hIAAQAAAN8EAQAU7hIAAQAAAOAEAQAY7hIAAQAAAOEEAQAc7hIAAQAAAOIEAQAg7hIAAQAAAOMEAQAk7hIAAQAAAOQEAQAo7hIAAQAAAOUEAQAs7hIAAQAAAOYEAQAw7hIAAQAAAOcEAQA07hIAAQAAAOgEAQA47hIAAQAAAOkEAQA87hIAAQAAAOoEAQBA7hIAAQAAAOsEAQBE7hIAAQAAAOwEAQBI7hIAAQAAAO0EAQBM7hIAAQAAAO4EAQBQ7hIAAQAAAO8EAQBU7hIAAQAAAPAEAQBY7hIAAQAAAPEEAQBc7hIAAQAAAPIEAQBg7hIAAQAAAPMEAQBk7hIAAQAAAPQEAQBo7hIAAQAAAPUEAQBs7hIAAQAAAPYEAQBw7hIAAQAAAPcEAQB07hIAAQAAAPgEAQB47hIAAQAAAPkEAQB87hIAAQAAAPoEAQCA7hIAAQAAAPsEAQCE7hIAAQAAAHAFAQCI7hIAAQAAAHEFAQCM7hIAAQAAAHIFAQCQ7hIAAQAAAHMFAQCU7hIAAQAAAHQFAQCY7hIAAQAAAHUFAQCc7hIAAQAAAHYFAQCg7hIAAQAAAHcFAQCk7hIAAQAAAHgFAQCo7hIAAQAAAHkFAQCs7hIAAQAAAHoFAQCw7hIAAQAAAHwFAQC07hIAAQAAAH0FAQC47hIAAQAAAH4FAQC87hIAAQAAAH8FAQDA7hIAAQAAAIAFAQDE7hIAAQAAAIEFAQDI7hIAAQAAAIIFAQDM7hIAAQAAAIMFAQDQ7hIAAQAAAIQFAQDU7hIAAQAAAIUFAQDY7hIAAQAAAIYFAQDc7hIAAQAAAIcFAQDg7hIAAQAAAIgFAQDk7hIAAQAAAIkFAQDo7hIAAQAAAIoFAQDs7hIAAQAAAIwFAQDw7hIAAQAAAI0FAQD07hIAAQAAAI4FAQD47hIAAQAAAI8FAQD87hIAAQAAAJAFAQAA7xIAAQAAAJEFAQAE7xIAAQAAAJIFAQAI7xIAAQAAAJQFAQAM7xIAAQAAAJUFAQAQ7xIAAQAAAJcFAQAU7xIAAQAAAJgFAQAY7xIAAQAAAJkFAQAc7xIAAQAAAJoFAQAg7xIAAQAAAJsFAQAk7xIAAQAAAJwFAQAo7xIAAQAAAJ0FAQAs7xIAAQAAAJ4FAQAw7xIAAQAAAJ8FAQA07xIAAQAAAKAFAQA47xIAAQAAAKEFAQA87xIAAQAAAKMFAQBA7xIAAQAAAKQFAQBE7xIAAQAAAKUFAQBI7xIAAQAAAKYFAQBM7xIAAQAAAKcFAQBQ7xIAAQAAAKgFAQBU7xIAAQAAAKkFAQBY7xIAAQAAAKoFAQBc7xIAAQAAAKsFAQBg7xIAAQAAAKwFAQBk7xIAAQAAAK0FAQBo7xIAAQAAAK4FAQBs7xIAAQAAAK8FAQBw7xIAAQAAALAFAQB07xIAAQAAALEFAQB47xIAAQAAALMFAQB87xIAAQAAALQFAQCA7xIAAQAAALUFAQCE7xIAAQAAALYFAQCI7xIAAQAAALcFAQCM7xIAAQAAALgFAQCQ7xIAAQAAALkFAQCU7xIAAQAAALsFAQCY7xIAAQAAALwFAQCc7xIAAQAAAIAMAQCg7xIAAQAAAIEMAQCk7xIAAQAAAIIMAQCo7xIAAQAAAIMMAQCs7xIAAQAAAIQMAQCw7xIAAQAAAIUMAQC07xIAAQAAAIYMAQC47xIAAQAAAIcMAQC87xIAAQAAAIgMAQDA7xIAAQAAAIkMAQDE7xIAAQAAAIoMAQDI7xIAAQAAAIsMAQDM7xIAAQAAAIwMAQDQ7xIAAQAAAI0MAQDU7xIAAQAAAI4MAQDY7xIAAQAAAI8MAQDc7xIAAQAAAJAMAQDg7xIAAQAAAJEMAQDk7xIAAQAAAJIMAQDo7xIAAQAAAJMMAQDs7xIAAQAAAJQMAQDw7xIAAQAAAJUMAQD07xIAAQAAAJYMAQD47xIAAQAAAJcMAQD87xIAAQAAAJgMAQAA8BIAAQAAAJkMAQAE8BIAAQAAAJoMAQAI8BIAAQAAAJsMAQAM8BIAAQAAAJwMAQAQ8BIAAQAAAJ0MAQAU8BIAAQAAAJ4MAQAY8BIAAQAAAJ8MAQAc8BIAAQAAAKAMAQAg8BIAAQAAAKEMAQAk8BIAAQAAAKIMAQAo8BIAAQAAAKMMAQAs8BIAAQAAAKQMAQAw8BIAAQAAAKUMAQA08BIAAQAAAKYMAQA48BIAAQAAAKcMAQA88BIAAQAAAKgMAQBA8BIAAQAAAKkMAQBE8BIAAQAAAKoMAQBI8BIAAQAAAKsMAQBM8BIAAQAAAKwMAQBQ8BIAAQAAAK0MAQBU8BIAAQAAAK4MAQBY8BIAAQAAAK8MAQBc8BIAAQAAALAMAQBg8BIAAQAAALEMAQBk8BIAAQAAALIMAQBo8BIAAQAAAMAMAQBs8BIAAQAAAMEMAQBw8BIAAQAAAMIMAQB08BIAAQAAAMMMAQB48BIAAQAAAMQMAQB88BIAAQAAAMUMAQCA8BIAAQAAAMYMAQCE8BIAAQAAAMcMAQCI8BIAAQAAAMgMAQCM8BIAAQAAAMkMAQCQ8BIAAQAAAMoMAQCU8BIAAQAAAMsMAQCY8BIAAQAAAMwMAQCc8BIAAQAAAM0MAQCg8BIAAQAAAM4MAQCk8BIAAQAAAM8MAQCo8BIAAQAAANAMAQCs8BIAAQAAANEMAQCw8BIAAQAAANIMAQC08BIAAQAAANMMAQC48BIAAQAAANQMAQC88BIAAQAAANUMAQDA8BIAAQAAANYMAQDE8BIAAQAAANcMAQDI8BIAAQAAANgMAQDM8BIAAQAAANkMAQDQ8BIAAQAAANoMAQDU8BIAAQAAANsMAQDY8BIAAQAAANwMAQDc8BIAAQAAAN0MAQDg8BIAAQAAAN4MAQDk8BIAAQAAAN8MAQDo8BIAAQAAAOAMAQDs8BIAAQAAAOEMAQDw8BIAAQAAAOIMAQD08BIAAQAAAOMMAQD48BIAAQAAAOQMAQD88BIAAQAAAOUMAQAA8RIAAQAAAOYMAQAE8RIAAQAAAOcMAQAI8RIAAQAAAOgMAQAM8RIAAQAAAOkMAQAQ8RIAAQAAAOoMAQAU8RIAAQAAAOsMAQAY8RIAAQAAAOwMAQAc8RIAAQAAAO0MAQAg8RIAAQAAAO4MAQAk8RIAAQAAAO8MAQAo8RIAAQAAAPAMAQAs8RIAAQAAAPEMAQAw8RIAAQAAAPIMAQA08RIAAQAAAFANAQA48RIAAQAAAFENAQA88RIAAQAAAFINAQBA8RIAAQAAAFMNAQBE8RIAAQAAAFQNAQBI8RIAAQAAAFUNAQBM8RIAAQAAAFYNAQBQ8RIAAQAAAFcNAQBU8RIAAQAAAFgNAQBY8RIAAQAAAFkNAQBc8RIAAQAAAFoNAQBg8RIAAQAAAFsNAQBk8RIAAQAAAFwNAQBo8RIAAQAAAF0NAQBs8RIAAQAAAF4NAQBw8RIAAQAAAF8NAQB08RIAAQAAAGANAQB48RIAAQAAAGENAQB88RIAAQAAAGINAQCA8RIAAQAAAGMNAQCE8RIAAQAAAGQNAQCI8RIAAQAAAGUNAQCM8RIAAQAAAHANAQCQ8RIAAQAAAHENAQCU8RIAAQAAAHINAQCY8RIAAQAAAHMNAQCc8RIAAQAAAHQNAQCg8RIAAQAAAHUNAQCk8RIAAQAAAHYNAQCo8RIAAQAAAHcNAQCs8RIAAQAAAHgNAQCw8RIAAQAAAHkNAQC08RIAAQAAAHoNAQC48RIAAQAAAHsNAQC88RIAAQAAAHwNAQDA8RIAAQAAAH0NAQDE8RIAAQAAAH4NAQDI8RIAAQAAAH8NAQDM8RIAAQAAAIANAQDQ8RIAAQAAAIENAQDU8RIAAQAAAIINAQDY8RIAAQAAAIMNAQDc8RIAAQAAAIQNAQDg8RIAAQAAAIUNAQDk8RIAAQAAAKAYAQDo8RIAAQAAAKEYAQDs8RIAAQAAAKIYAQDw8RIAAQAAAKMYAQD08RIAAQAAAKQYAQD48RIAAQAAAKUYAQD88RIAAQAAAKYYAQAA8hIAAQAAAKcYAQAE8hIAAQAAAKgYAQAI8hIAAQAAAKkYAQAM8hIAAQAAAKoYAQAQ8hIAAQAAAKsYAQAU8hIAAQAAAKwYAQAY8hIAAQAAAK0YAQAc8hIAAQAAAK4YAQAg8hIAAQAAAK8YAQAk8hIAAQAAALAYAQAo8hIAAQAAALEYAQAs8hIAAQAAALIYAQAw8hIAAQAAALMYAQA08hIAAQAAALQYAQA48hIAAQAAALUYAQA88hIAAQAAALYYAQBA8hIAAQAAALcYAQBE8hIAAQAAALgYAQBI8hIAAQAAALkYAQBM8hIAAQAAALoYAQBQ8hIAAQAAALsYAQBU8hIAAQAAALwYAQBY8hIAAQAAAL0YAQBc8hIAAQAAAL4YAQBg8hIAAQAAAL8YAQBk8hIAAQAAAMAYAQBo8hIAAQAAAMEYAQBs8hIAAQAAAMIYAQBw8hIAAQAAAMMYAQB08hIAAQAAAMQYAQB48hIAAQAAAMUYAQB88hIAAQAAAMYYAQCA8hIAAQAAAMcYAQCE8hIAAQAAAMgYAQCI8hIAAQAAAMkYAQCM8hIAAQAAAMoYAQCQ8hIAAQAAAMsYAQCU8hIAAQAAAMwYAQCY8hIAAQAAAM0YAQCc8hIAAQAAAM4YAQCg8hIAAQAAAM8YAQCk8hIAAQAAANAYAQCo8hIAAQAAANEYAQCs8hIAAQAAANIYAQCw8hIAAQAAANMYAQC08hIAAQAAANQYAQC48hIAAQAAANUYAQC88hIAAQAAANYYAQDA8hIAAQAAANcYAQDE8hIAAQAAANgYAQDI8hIAAQAAANkYAQDM8hIAAQAAANoYAQDQ8hIAAQAAANsYAQDU8hIAAQAAANwYAQDY8hIAAQAAAN0YAQDc8hIAAQAAAN4YAQDg8hIAAQAAAN8YAQDk8hIAAQAAAEBuAQDo8hIAAQAAAEFuAQDs8hIAAQAAAEJuAQDw8hIAAQAAAENuAQD08hIAAQAAAERuAQD48hIAAQAAAEVuAQD88hIAAQAAAEZuAQAA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V29yZFVuaWNvZGVOZWdhdGVXb3JkU3RhcnRBc2NpaVdvcmRFbmRBc2NpaVdvcmRTdGFydFVuaWNvZGVXb3JkRW5kVW5pY29kZVdvcmRTdGFydEhhbGZBc2NpaVdvcmRFbmRIYWxmQXNjaWlXb3JkU3RhcnRIYWxmVW5pY29kZVdvcmRFbmRIYWxmVW5pY29kZQAAAAAAAAQAAAAEAAAAJwYAACgGAAAIAAAABAAAACkGAAAAAAAABAAAAAQAAAAqBgAAaW5kZXhuYW1lc3ViAAAAAAgAAAAEAAAAKwYAAAAAAAABAAAAAQAAACwGAABtaW5tYXhncmVlZHlDYXNlRm9sZEVycm9yAAAABQAAAAMAAAAHAAAABQAAAAkAAAAHAAAACQAAAA8AAAALAAAAEQAAAA4AAAAMAAAAEAAAAA4AAAASAAAAEAAAABQAAAASAAAAjn8TAJN/EwCWfxMAnX8TAKJ/EwCrfxMAsn8TALt/EwDKfxMA1X8TAOZ/EwD0fxMAAIATABCAEwAegBMAMIATAECAEwBUgBMAGAAAAB8AAAAmAAAAGgAAACAAAABSAAAAagAAAFzBEgB0wRIAk8ESALnBEgDTwRIA88ESAEXCEgBBAAAAegAAAF4AAAAkAAAAcgAAAFIAAABiAAAAQgAAAMPWAQCp1gEAPAAAAD4AAAAIMAAACTAAAMElAAC3JQAAwCUAALYlAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvc3BlY19mcm9tX2l0ZXJfbmVzdGVkLnJzAADwgRMAXgAAADQAAAAFAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5yc2CCEwBMAAAAVgoAACQAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAvIITAEoAAABiAwAACQAAALyCEwBKAAAAvgEAAB0AAAC8ghMASgAAAKgBAAAfAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC41L3NyYy9oaXIvbGl0ZXJhbC5ycwA4gxMAZwAAAMgIAAA4AAAAOIMTAGcAAADICAAAIgAAAC0GAAAMAAAABAAAAC4GAAAvBgAAYwQAQeCHzgAL55cDAQAAADAGAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAAAfhBMASwAAANEKAAAOAAAARXJyb3IAAAAfhBMASwAAAH8FAAAaAAAAH4QTAEsAAAB9BQAAGwAAAB+EEwBLAAAAWAQAABIAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL29wdGlvbi5ycwAAtIQTAEoAAAD3BwAAHwAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAAAQhRMASgAAAL4BAAAdAAAAAQAAAAEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1zeW50YXgtMC44LjUvc3JjL2hpci9saXRlcmFsLnJzYXNzZXJ0aW9uIGZhaWxlZDogc2VxMS5sZW4oKS5tYXBfb3IodHJ1ZSwgfHh8IHggPD0gc2VsZi5saW1pdF90b3RhbCkAdIUTAGcAAAA5AgAACQAAAHSFEwBnAAAAZgIAAAkAAAB0hRMAZwAAADkDAAAOAAAAdIUTAGcAAADFAwAALAAAAHSFEwBnAAAAxwMAABcAAAB0hRMAZwAAAMsDAAAxAAAAdIUTAGcAAADTAwAAFwAAAHSFEwBnAAAAVAQAACwAAAB0hRMAZwAAAF4EAAAfAAAAdIUTAGcAAABiBAAAMQAAAHSFEwBnAAAAagQAABcAAAB0hRMAZwAAANEEAAAPAAAAdIUTAGcAAAB0BgAAEwAAAHSFEwBnAAAAbQYAABoAAAB0hRMAZwAAAKoGAAATAAAAdIUTAGcAAACjBgAAGgAAAHSFEwBnAAAAeAcAABEAAAAFAAAACgAAAAQAAAAKAAAAAwAAAEAAAAACAAAAQAAAAAEAAAAKAAAAdIUTAGcAAADOCAAAFQAAAHSFEwBnAAAA3ggAACgAAAB0hRMAZwAAAPIIAAAVAAAAdIUTAGcAAADiCAAAHgAAAHSFEwBnAAAA5QgAADQAAAB0hRMAZwAAAOsIAAAgAAAAdIUTAGcAAADrCAAALQAAAHSFEwBnAAAAAgkAABUAAAB0hRMAZwAAAAMJAAAWAAAANzQzMjEwLy4tZ/JCQ+UsKyopKCcmJSQjIiE4IB8eHRz/lKSViKCbrd3ehnroytfg0NzMu7ezsaiyyOLDmriufni/ncKqvaKhlsGOiauwuae6cK/AvJyMj3uFgJOKknLfl/nY7uz949rm94e08en29OeL9fP768nE8NaYts21fxvU09LV5MWpn4OsaVBiYGFRz5F0c5CCmXlrhG1ufG9SbHaNcYF3faV1XGpTSGNdQU+m7aPHvuHRy8bZ287q+J7v/////////////////////////////////////////////////////////////////////////////////////3SFEwBnAAAAAAgAAAoAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJz+IgTAFgAAADBBwAACQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBgiRMASwAAABMIAAAeAAAATm9uZQAAAAAEAAAABAAAAIsBAABTb21lL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAANSJEwBKAAAAvgEAAB0AAAB0cmllZCB0byB1bndyYXAgZXhwciBmcm9tIEhpckZyYW1lLCBnb3Q6IAAAADCKEwApAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC41L3NyYy9oaXIvdHJhbnNsYXRlLnJzAAAAZIoTAGkAAAABAQAAEgAAAHRyaWVkIHRvIHVud3JhcCBVbmljb2RlIGNsYXNzIGZyb20gSGlyRnJhbWUsIGdvdDogAADgihMAMgAAAGSKEwBpAAAACgEAABIAAAB0cmllZCB0byB1bndyYXAgYnl0ZSBjbGFzcyBmcm9tIEhpckZyYW1lLCBnb3Q6IAAsixMALwAAAGSKEwBpAAAAFwEAABIAAAB0cmllZCB0byB1bndyYXAgcmVwZXRpdGlvbiBmcm9tIEhpckZyYW1lLCBnb3Q6IAB0ixMALwAAAGSKEwBpAAAAJQEAABEAAAB0cmllZCB0byB1bndyYXAgZ3JvdXAgZnJvbSBIaXJGcmFtZSwgZ290OiAAALyLEwAqAAAAZIoTAGkAAAA0AQAAEQAAAHRyaWVkIHRvIHVud3JhcCBhbHQgcGlwZSBmcm9tIEhpckZyYW1lLCBnb3Q6IAAAAACMEwAtAAAAZIoTAGkAAAA/AQAAEQAAAGSKEwBpAAAATgEAACcAAAABAAAAZIoTAGkAAABOAQAACQAAAGSKEwBpAAAATwEAABcAAABkihMAaQAAAKwBAAAuAAAAZIoTAGkAAACjAQAALgAAAGSKEwBpAAAAtwEAACcAAABkihMAaQAAALgBAAAcAAAAZIoTAGkAAAC8AQAAJwAAAGSKEwBpAAAAvQEAACwAAABkihMAaQAAAM4BAAAgAAAAZIoTAGkAAADPAQAAGwAAAGSKEwBpAAAAxQEAAB8AAABkihMAaQAAAP4BAAAuAAAAZIoTAGkAAAD6AQAALgAAAGSKEwBpAAAACgIAAC4AAABkihMAaQAAAAYCAAAuAAAAZIoTAGkAAAAZAgAALgAAAGSKEwBpAAAAFAIAAC4AAABkihMAaQAAACACAAAqAAAAZIoTAGkAAAAsAgAALgAAAGSKEwBpAAAAJwIAAC4AAABkihMAaQAAAD4CAAAvAAAAZIoTAGkAAABFAgAALwAAAGSKEwBpAAAAMwIAAC8AAABkihMAaQAAADoCAAAvAAAAZIoTAGkAAACMAgAAJgAAAGSKEwBpAAAAjQIAACYAAABkihMAaQAAAI4CAAAmAAAAZIoTAGkAAABzAgAAJgAAAGSKEwBpAAAAdAIAACYAAABkihMAaQAAAHUCAAAmAAAAZIoTAGkAAAC4AgAAHAAAAGSKEwBpAAAAuAIAACkAAABkihMAaQAAAMMCAAAsAAAAZIoTAGkAAADHAgAAEwAAAGSKEwBpAAAA0QIAACwAAABkihMAaQAAANMCAAAVAAAAZIoTAGkAAADVAgAAEwAAAGSKEwBpAAAA2wIAABwAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IFVuaWNvZGUgY2xhc3O8jhMAVAAAAGSKEwBpAAAA6QIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGJ5dGUgY2xhc3MAAAAojxMAUQAAAGSKEwBpAAAA7AIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IHJlcGV0aXRpb24AAACUjxMAUQAAAGSKEwBpAAAA7wIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGdyb3VwAJATAEwAAABkihMAaQAAAPICAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCBhbHQgbWFya2VyAAAAZJATAFEAAABkihMAaQAAAPUCAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCBhbHQgYnJhbmNoIG1hcmtlctCQEwBYAAAAZIoTAGkAAAD4AgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgVW5pY29kZSBjbGFzcwAAAECREwBRAAAAZIoTAGkAAAAIAwAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgYnl0ZSBjbGFzcwAArJETAE4AAABkihMAaQAAAAsDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCByZXBldGl0aW9uAAAUkhMATgAAAGSKEwBpAAAADgMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IGdyb3VwAAAAfJITAEkAAABkihMAaQAAABEDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBjb25jYXQgbWFya2VyAAAA4JITAFEAAABkihMAaQAAABQDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBhbHQgYnJhbmNoIG1hcmtlcgAAAEyTEwBVAAAAZIoTAGkAAAAXAwAAEQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuZmxhZ3MoKS51bmljb2RlKClkihMAaQAAAEMEAAAJAAAABQoMYXNzZXJ0aW9uIGZhaWxlZDogIXNlbGYuZmxhZ3MoKS51bmljb2RlKClkihMAaQAAAFkEAAAJAAAAMDlBWmF6QVphegB/CQkgIAAff38wOSF+YXogfiEvOkBbYHt+CQkKCgsLDAwNDSAgQVowOUFaX19hejA5QUZhZi9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNS9zcmMvaGlyL21vZC5ycwBwlBMAYwAAAFcBAAAZAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAAAqIQAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB/AQAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAAKiEAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAfwEAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAACcAwAAvAMAAOAAAADhAAAA4gAAAOMAAADkAAAA5QAAACshAADmAAAA5wAAAOgAAADpAAAA6gAAAOsAAADsAAAA7QAAAO4AAADvAAAA8AAAAPEAAADyAAAA8wAAAPQAAAD1AAAA9gAAAPgAAAD5AAAA+gAAAPsAAAD8AAAA/QAAAP4AAACeHgAAwAAAAMEAAADCAAAAwwAAAMQAAADFAAAAKyEAAMYAAADHAAAAyAAAAMkAAADKAAAAywAAAMwAAADNAAAAzgAAAM8AAADQAAAA0QAAANIAAADTAAAA1AAAANUAAADWAAAA2AAAANkAAADaAAAA2wAAANwAAADdAAAA3gAAAHgBAAABAQAAAAEAAAMBAAACAQAABQEAAAQBAAAHAQAABgEAAAkBAAAIAQAACwEAAAoBAAANAQAADAEAAA8BAAAOAQAAEQEAABABAAATAQAAEgEAABUBAAAUAQAAFwEAABYBAAAZAQAAGAEAABsBAAAaAQAAHQEAABwBAAAfAQAAHgEAACEBAAAgAQAAIwEAACIBAAAlAQAAJAEAACcBAAAmAQAAKQEAACgBAAArAQAAKgEAAC0BAAAsAQAALwEAAC4BAAAzAQAAMgEAADUBAAA0AQAANwEAADYBAAA6AQAAOQEAADwBAAA7AQAAPgEAAD0BAABAAQAAPwEAAEIBAABBAQAARAEAAEMBAABGAQAARQEAAEgBAABHAQAASwEAAEoBAABNAQAATAEAAE8BAABOAQAAUQEAAFABAABTAQAAUgEAAFUBAABUAQAAVwEAAFYBAABZAQAAWAEAAFsBAABaAQAAXQEAAFwBAABfAQAAXgEAAGEBAABgAQAAYwEAAGIBAABlAQAAZAEAAGcBAABmAQAAaQEAAGgBAABrAQAAagEAAG0BAABsAQAAbwEAAG4BAABxAQAAcAEAAHMBAAByAQAAdQEAAHQBAAB3AQAAdgEAAP8AAAB6AQAAeQEAAHwBAAB7AQAAfgEAAH0BAABTAAAAcwAAAEMCAABTAgAAgwEAAIIBAACFAQAAhAEAAFQCAACIAQAAhwEAAFYCAABXAgAAjAEAAIsBAADdAQAAWQIAAFsCAACSAQAAkQEAAGACAABjAgAA9gEAAGkCAABoAgAAmQEAAJgBAAA9AgAA3KcAAG8CAAByAgAAIAIAAHUCAAChAQAAoAEAAKMBAACiAQAApQEAAKQBAACAAgAAqAEAAKcBAACDAgAArQEAAKwBAACIAgAAsAEAAK8BAACKAgAAiwIAALQBAACzAQAAtgEAALUBAACSAgAAuQEAALgBAAC9AQAAvAEAAPcBAADFAQAAxgEAAMQBAADGAQAAxAEAAMUBAADIAQAAyQEAAMcBAADJAQAAxwEAAMgBAADLAQAAzAEAAMoBAADMAQAAygEAAMsBAADOAQAAzQEAANABAADPAQAA0gEAANEBAADUAQAA0wEAANYBAADVAQAA2AEAANcBAADaAQAA2QEAANwBAADbAQAAjgEAAN8BAADeAQAA4QEAAOABAADjAQAA4gEAAOUBAADkAQAA5wEAAOYBAADpAQAA6AEAAOsBAADqAQAA7QEAAOwBAADvAQAA7gEAAPIBAADzAQAA8QEAAPMBAADxAQAA8gEAAPUBAAD0AQAAlQEAAL8BAAD5AQAA+AEAAPsBAAD6AQAA/QEAAPwBAAD/AQAA/gEAAAECAAAAAgAAAwIAAAICAAAFAgAABAIAAAcCAAAGAgAACQIAAAgCAAALAgAACgIAAA0CAAAMAgAADwIAAA4CAAARAgAAEAIAABMCAAASAgAAFQIAABQCAAAXAgAAFgIAABkCAAAYAgAAGwIAABoCAAAdAgAAHAIAAB8CAAAeAgAAngEAACMCAAAiAgAAJQIAACQCAAAnAgAAJgIAACkCAAAoAgAAKwIAACoCAAAtAgAALAIAAC8CAAAuAgAAMQIAADACAAAzAgAAMgIAAGUsAAA8AgAAOwIAAJoBAABmLAAAfiwAAH8sAABCAgAAQQIAAIABAACJAgAAjAIAAEcCAABGAgAASQIAAEgCAABLAgAASgIAAE0CAABMAgAATwIAAE4CAABvLAAAbSwAAHAsAACBAQAAhgEAAIkBAACKAQAAjwEAAJABAACrpwAAkwEAAKynAACUAQAAy6cAAI2nAACqpwAAlwEAAJYBAACupwAAYiwAAK2nAACcAQAAbiwAAJ0BAACfAQAAZCwAAKYBAADFpwAAqQEAALGnAACuAQAARAIAALEBAACyAQAARQIAALcBAACypwAAsKcAAJkDAAC5AwAAvh8AAHEDAABwAwAAcwMAAHIDAAB3AwAAdgMAAP0DAAD+AwAA/wMAAPMDAACsAwAArQMAAK4DAACvAwAAzAMAAM0DAADOAwAA0x8AALEDAACyAwAA0AMAALMDAAC0AwAAtQMAAPUDAAC2AwAAtwMAALgDAADRAwAA9AMAAEUDAAC5AwAAvh8AALoDAADwAwAAuwMAALUAAAC8AwAAvQMAAL4DAAC/AwAAwAMAANYDAADBAwAA8QMAAMIDAADDAwAAxAMAAMUDAADGAwAA1QMAAMcDAADIAwAAyQMAACYhAADKAwAAywMAAIYDAACIAwAAiQMAAIoDAADjHwAAkQMAAJIDAADQAwAAkwMAAJQDAACVAwAA9QMAAJYDAACXAwAAmAMAANEDAAD0AwAARQMAAJkDAAC+HwAAmgMAAPADAACbAwAAtQAAAJwDAACdAwAAngMAAJ8DAACgAwAA1gMAAKEDAADxAwAAowMAAMMDAACjAwAAwgMAAKQDAAClAwAApgMAANUDAACnAwAAqAMAAKkDAAAmIQAAqgMAAKsDAACMAwAAjgMAAI8DAADXAwAAkgMAALIDAACYAwAAuAMAAPQDAACmAwAAxgMAAKADAADAAwAAzwMAANkDAADYAwAA2wMAANoDAADdAwAA3AMAAN8DAADeAwAA4QMAAOADAADjAwAA4gMAAOUDAADkAwAA5wMAAOYDAADpAwAA6AMAAOsDAADqAwAA7QMAAOwDAADvAwAA7gMAAJoDAAC6AwAAoQMAAMEDAAD5AwAAfwMAAJgDAAC4AwAA0QMAAJUDAAC1AwAA+AMAAPcDAADyAwAA+wMAAPoDAAB7AwAAfAMAAH0DAABQBAAAUQQAAFIEAABTBAAAVAQAAFUEAABWBAAAVwQAAFgEAABZBAAAWgQAAFsEAABcBAAAXQQAAF4EAABfBAAAMAQAADEEAAAyBAAAgBwAADMEAAA0BAAAgRwAADUEAAA2BAAANwQAADgEAAA5BAAAOgQAADsEAAA8BAAAPQQAAD4EAACCHAAAPwQAAEAEAABBBAAAgxwAAEIEAACEHAAAhRwAAEMEAABEBAAARQQAAEYEAABHBAAASAQAAEkEAABKBAAAhhwAAEsEAABMBAAATQQAAE4EAABPBAAAEAQAABEEAAASBAAAgBwAABMEAAAUBAAAgRwAABUEAAAWBAAAFwQAABgEAAAZBAAAGgQAABsEAAAcBAAAHQQAAB4EAACCHAAAHwQAACAEAAAhBAAAgxwAACIEAACEHAAAhRwAACMEAAAkBAAAJQQAACYEAAAnBAAAKAQAACkEAAAqBAAAhhwAACsEAAAsBAAALQQAAC4EAAAvBAAAAAQAAAEEAAACBAAAAwQAAAQEAAAFBAAABgQAAAcEAAAIBAAACQQAAAoEAAALBAAADAQAAA0EAAAOBAAADwQAAGEEAABgBAAAYwQAAIccAABiBAAAhxwAAGUEAABkBAAAZwQAAGYEAABpBAAAaAQAAGsEAABqBAAAbQQAAGwEAABvBAAAbgQAAHEEAABwBAAAcwQAAHIEAAB1BAAAdAQAAHcEAAB2BAAAeQQAAHgEAAB7BAAAegQAAH0EAAB8BAAAfwQAAH4EAACBBAAAgAQAAIsEAACKBAAAjQQAAIwEAACPBAAAjgQAAJEEAACQBAAAkwQAAJIEAACVBAAAlAQAAJcEAACWBAAAmQQAAJgEAACbBAAAmgQAAJ0EAACcBAAAnwQAAJ4EAAChBAAAoAQAAKMEAACiBAAApQQAAKQEAACnBAAApgQAAKkEAACoBAAAqwQAAKoEAACtBAAArAQAAK8EAACuBAAAsQQAALAEAACzBAAAsgQAALUEAAC0BAAAtwQAALYEAAC5BAAAuAQAALsEAAC6BAAAvQQAALwEAAC/BAAAvgQAAM8EAADCBAAAwQQAAMQEAADDBAAAxgQAAMUEAADIBAAAxwQAAMoEAADJBAAAzAQAAMsEAADOBAAAzQQAAMAEAADRBAAA0AQAANMEAADSBAAA1QQAANQEAADXBAAA1gQAANkEAADYBAAA2wQAANoEAADdBAAA3AQAAN8EAADeBAAA4QQAAOAEAADjBAAA4gQAAOUEAADkBAAA5wQAAOYEAADpBAAA6AQAAOsEAADqBAAA7QQAAOwEAADvBAAA7gQAAPEEAADwBAAA8wQAAPIEAAD1BAAA9AQAAPcEAAD2BAAA+QQAAPgEAAD7BAAA+gQAAP0EAAD8BAAA/wQAAP4EAAABBQAAAAUAAAMFAAACBQAABQUAAAQFAAAHBQAABgUAAAkFAAAIBQAACwUAAAoFAAANBQAADAUAAA8FAAAOBQAAEQUAABAFAAATBQAAEgUAABUFAAAUBQAAFwUAABYFAAAZBQAAGAUAABsFAAAaBQAAHQUAABwFAAAfBQAAHgUAACEFAAAgBQAAIwUAACIFAAAlBQAAJAUAACcFAAAmBQAAKQUAACgFAAArBQAAKgUAAC0FAAAsBQAALwUAAC4FAABhBQAAYgUAAGMFAABkBQAAZQUAAGYFAABnBQAAaAUAAGkFAABqBQAAawUAAGwFAABtBQAAbgUAAG8FAABwBQAAcQUAAHIFAABzBQAAdAUAAHUFAAB2BQAAdwUAAHgFAAB5BQAAegUAAHsFAAB8BQAAfQUAAH4FAAB/BQAAgAUAAIEFAACCBQAAgwUAAIQFAACFBQAAhgUAADEFAAAyBQAAMwUAADQFAAA1BQAANgUAADcFAAA4BQAAOQUAADoFAAA7BQAAPAUAAD0FAAA+BQAAPwUAAEAFAABBBQAAQgUAAEMFAABEBQAARQUAAEYFAABHBQAASAUAAEkFAABKBQAASwUAAEwFAABNBQAATgUAAE8FAABQBQAAUQUAAFIFAABTBQAAVAUAAFUFAABWBQAAAC0AAAEtAAACLQAAAy0AAAQtAAAFLQAABi0AAActAAAILQAACS0AAAotAAALLQAADC0AAA0tAAAOLQAADy0AABAtAAARLQAAEi0AABMtAAAULQAAFS0AABYtAAAXLQAAGC0AABktAAAaLQAAGy0AABwtAAAdLQAAHi0AAB8tAAAgLQAAIS0AACItAAAjLQAAJC0AACUtAAAnLQAALS0AAJAcAACRHAAAkhwAAJMcAACUHAAAlRwAAJYcAACXHAAAmBwAAJkcAACaHAAAmxwAAJwcAACdHAAAnhwAAJ8cAACgHAAAoRwAAKIcAACjHAAApBwAAKUcAACmHAAApxwAAKgcAACpHAAAqhwAAKscAACsHAAArRwAAK4cAACvHAAAsBwAALEcAACyHAAAsxwAALQcAAC1HAAAthwAALccAAC4HAAAuRwAALocAAC9HAAAvhwAAL8cAABwqwAAcasAAHKrAABzqwAAdKsAAHWrAAB2qwAAd6sAAHirAAB5qwAAeqsAAHurAAB8qwAAfasAAH6rAAB/qwAAgKsAAIGrAACCqwAAg6sAAISrAACFqwAAhqsAAIerAACIqwAAiasAAIqrAACLqwAAjKsAAI2rAACOqwAAj6sAAJCrAACRqwAAkqsAAJOrAACUqwAAlasAAJarAACXqwAAmKsAAJmrAACaqwAAm6sAAJyrAACdqwAAnqsAAJ+rAACgqwAAoasAAKKrAACjqwAApKsAAKWrAACmqwAAp6sAAKirAACpqwAAqqsAAKurAACsqwAArasAAK6rAACvqwAAsKsAALGrAACyqwAAs6sAALSrAAC1qwAAtqsAALerAAC4qwAAuasAALqrAAC7qwAAvKsAAL2rAAC+qwAAv6sAAPgTAAD5EwAA+hMAAPsTAAD8EwAA/RMAAPATAADxEwAA8hMAAPMTAAD0EwAA9RMAABIEAAAyBAAAFAQAADQEAAAeBAAAPgQAACEEAABBBAAAIgQAAEIEAACFHAAAIgQAAEIEAACEHAAAKgQAAEoEAABiBAAAYwQAAEqmAABLpgAAihwAAIkcAADQEAAA0RAAANIQAADTEAAA1BAAANUQAADWEAAA1xAAANgQAADZEAAA2hAAANsQAADcEAAA3RAAAN4QAADfEAAA4BAAAOEQAADiEAAA4xAAAOQQAADlEAAA5hAAAOcQAADoEAAA6RAAAOoQAADrEAAA7BAAAO0QAADuEAAA7xAAAPAQAADxEAAA8hAAAPMQAAD0EAAA9RAAAPYQAAD3EAAA+BAAAPkQAAD6EAAA/RAAAP4QAAD/EAAAfacAAGMsAADGpwAAAR4AAAAeAAADHgAAAh4AAAUeAAAEHgAABx4AAAYeAAAJHgAACB4AAAseAAAKHgAADR4AAAweAAAPHgAADh4AABEeAAAQHgAAEx4AABIeAAAVHgAAFB4AABceAAAWHgAAGR4AABgeAAAbHgAAGh4AAB0eAAAcHgAAHx4AAB4eAAAhHgAAIB4AACMeAAAiHgAAJR4AACQeAAAnHgAAJh4AACkeAAAoHgAAKx4AACoeAAAtHgAALB4AAC8eAAAuHgAAMR4AADAeAAAzHgAAMh4AADUeAAA0HgAANx4AADYeAAA5HgAAOB4AADseAAA6HgAAPR4AADweAAA/HgAAPh4AAEEeAABAHgAAQx4AAEIeAABFHgAARB4AAEceAABGHgAASR4AAEgeAABLHgAASh4AAE0eAABMHgAATx4AAE4eAABRHgAAUB4AAFMeAABSHgAAVR4AAFQeAABXHgAAVh4AAFkeAABYHgAAWx4AAFoeAABdHgAAXB4AAF8eAABeHgAAYR4AAJseAABgHgAAmx4AAGMeAABiHgAAZR4AAGQeAABnHgAAZh4AAGkeAABoHgAAax4AAGoeAABtHgAAbB4AAG8eAABuHgAAcR4AAHAeAABzHgAAch4AAHUeAAB0HgAAdx4AAHYeAAB5HgAAeB4AAHseAAB6HgAAfR4AAHweAAB/HgAAfh4AAIEeAACAHgAAgx4AAIIeAACFHgAAhB4AAIceAACGHgAAiR4AAIgeAACLHgAAih4AAI0eAACMHgAAjx4AAI4eAACRHgAAkB4AAJMeAACSHgAAlR4AAJQeAABgHgAAYR4AAN8AAAChHgAAoB4AAKMeAACiHgAApR4AAKQeAACnHgAAph4AAKkeAACoHgAAqx4AAKoeAACtHgAArB4AAK8eAACuHgAAsR4AALAeAACzHgAAsh4AALUeAAC0HgAAtx4AALYeAAC5HgAAuB4AALseAAC6HgAAvR4AALweAAC/HgAAvh4AAMEeAADAHgAAwx4AAMIeAADFHgAAxB4AAMceAADGHgAAyR4AAMgeAADLHgAAyh4AAM0eAADMHgAAzx4AAM4eAADRHgAA0B4AANMeAADSHgAA1R4AANQeAADXHgAA1h4AANkeAADYHgAA2x4AANoeAADdHgAA3B4AAN8eAADeHgAA4R4AAOAeAADjHgAA4h4AAOUeAADkHgAA5x4AAOYeAADpHgAA6B4AAOseAADqHgAA7R4AAOweAADvHgAA7h4AAPEeAADwHgAA8x4AAPIeAAD1HgAA9B4AAPceAAD2HgAA+R4AAPgeAAD7HgAA+h4AAP0eAAD8HgAA/x4AAP4eAAAIHwAACR8AAAofAAALHwAADB8AAA0fAAAOHwAADx8AAAAfAAABHwAAAh8AAAMfAAAEHwAABR8AAAYfAAAHHwAAGB8AABkfAAAaHwAAGx8AABwfAAAdHwAAEB8AABEfAAASHwAAEx8AABQfAAAVHwAAKB8AACkfAAAqHwAAKx8AACwfAAAtHwAALh8AAC8fAAAgHwAAIR8AACIfAAAjHwAAJB8AACUfAAAmHwAAJx8AADgfAAA5HwAAOh8AADsfAAA8HwAAPR8AAD4fAAA/HwAAMB8AADEfAAAyHwAAMx8AADQfAAA1HwAANh8AADcfAABIHwAASR8AAEofAABLHwAATB8AAE0fAABAHwAAQR8AAEIfAABDHwAARB8AAEUfAABZHwAAWx8AAF0fAABfHwAAUR8AAFMfAABVHwAAVx8AAGgfAABpHwAAah8AAGsfAABsHwAAbR8AAG4fAABvHwAAYB8AAGEfAABiHwAAYx8AAGQfAABlHwAAZh8AAGcfAAC6HwAAux8AAMgfAADJHwAAyh8AAMsfAADaHwAA2x8AAPgfAAD5HwAA6h8AAOsfAAD6HwAA+x8AAIgfAACJHwAAih8AAIsfAACMHwAAjR8AAI4fAACPHwAAgB8AAIEfAACCHwAAgx8AAIQfAACFHwAAhh8AAIcfAACYHwAAmR8AAJofAACbHwAAnB8AAJ0fAACeHwAAnx8AAJAfAACRHwAAkh8AAJMfAACUHwAAlR8AAJYfAACXHwAAqB8AAKkfAACqHwAAqx8AAKwfAACtHwAArh8AAK8fAACgHwAAoR8AAKIfAACjHwAApB8AAKUfAACmHwAApx8AALgfAAC5HwAAvB8AALAfAACxHwAAcB8AAHEfAACzHwAARQMAAJkDAAC5AwAAzB8AAHIfAABzHwAAdB8AAHUfAADDHwAA2B8AANkfAACQAwAA0B8AANEfAAB2HwAAdx8AAOgfAADpHwAAsAMAAOwfAADgHwAA4R8AAHofAAB7HwAA5R8AAPwfAAB4HwAAeR8AAHwfAAB9HwAA8x8AAKkDAADJAwAASwAAAGsAAADFAAAA5QAAAE4hAAAyIQAAcCEAAHEhAAByIQAAcyEAAHQhAAB1IQAAdiEAAHchAAB4IQAAeSEAAHohAAB7IQAAfCEAAH0hAAB+IQAAfyEAAGAhAABhIQAAYiEAAGMhAABkIQAAZSEAAGYhAABnIQAAaCEAAGkhAABqIQAAayEAAGwhAABtIQAAbiEAAG8hAACEIQAAgyEAANAkAADRJAAA0iQAANMkAADUJAAA1SQAANYkAADXJAAA2CQAANkkAADaJAAA2yQAANwkAADdJAAA3iQAAN8kAADgJAAA4SQAAOIkAADjJAAA5CQAAOUkAADmJAAA5yQAAOgkAADpJAAAtiQAALckAAC4JAAAuSQAALokAAC7JAAAvCQAAL0kAAC+JAAAvyQAAMAkAADBJAAAwiQAAMMkAADEJAAAxSQAAMYkAADHJAAAyCQAAMkkAADKJAAAyyQAAMwkAADNJAAAziQAAM8kAAAwLAAAMSwAADIsAAAzLAAANCwAADUsAAA2LAAANywAADgsAAA5LAAAOiwAADssAAA8LAAAPSwAAD4sAAA/LAAAQCwAAEEsAABCLAAAQywAAEQsAABFLAAARiwAAEcsAABILAAASSwAAEosAABLLAAATCwAAE0sAABOLAAATywAAFAsAABRLAAAUiwAAFMsAABULAAAVSwAAFYsAABXLAAAWCwAAFksAABaLAAAWywAAFwsAABdLAAAXiwAAF8sAAAALAAAASwAAAIsAAADLAAABCwAAAUsAAAGLAAABywAAAgsAAAJLAAACiwAAAssAAAMLAAADSwAAA4sAAAPLAAAECwAABEsAAASLAAAEywAABQsAAAVLAAAFiwAABcsAAAYLAAAGSwAABosAAAbLAAAHCwAAB0sAAAeLAAAHywAACAsAAAhLAAAIiwAACMsAAAkLAAAJSwAACYsAAAnLAAAKCwAACksAAAqLAAAKywAACwsAAAtLAAALiwAAC8sAABhLAAAYCwAAGsCAAB9HQAAfQIAADoCAAA+AgAAaCwAAGcsAABqLAAAaSwAAGwsAABrLAAAUQIAAHECAABQAgAAUgIAAHMsAAByLAAAdiwAAHUsAAA/AgAAQAIAAIEsAACALAAAgywAAIIsAACFLAAAhCwAAIcsAACGLAAAiSwAAIgsAACLLAAAiiwAAI0sAACMLAAAjywAAI4sAACRLAAAkCwAAJMsAACSLAAAlSwAAJQsAACXLAAAliwAAJksAACYLAAAmywAAJosAACdLAAAnCwAAJ8sAACeLAAAoSwAAKAsAACjLAAAoiwAAKUsAACkLAAApywAAKYsAACpLAAAqCwAAKssAACqLAAArSwAAKwsAACvLAAAriwAALEsAACwLAAAsywAALIsAAC1LAAAtCwAALcsAAC2LAAAuSwAALgsAAC7LAAAuiwAAL0sAAC8LAAAvywAAL4sAADBLAAAwCwAAMMsAADCLAAAxSwAAMQsAADHLAAAxiwAAMksAADILAAAyywAAMosAADNLAAAzCwAAM8sAADOLAAA0SwAANAsAADTLAAA0iwAANUsAADULAAA1ywAANYsAADZLAAA2CwAANssAADaLAAA3SwAANwsAADfLAAA3iwAAOEsAADgLAAA4ywAAOIsAADsLAAA6ywAAO4sAADtLAAA8ywAAPIsAACgEAAAoRAAAKIQAACjEAAApBAAAKUQAACmEAAApxAAAKgQAACpEAAAqhAAAKsQAACsEAAArRAAAK4QAACvEAAAsBAAALEQAACyEAAAsxAAALQQAAC1EAAAthAAALcQAAC4EAAAuRAAALoQAAC7EAAAvBAAAL0QAAC+EAAAvxAAAMAQAADBEAAAwhAAAMMQAADEEAAAxRAAAMcQAADNEAAAQaYAAECmAABDpgAAQqYAAEWmAABEpgAAR6YAAEamAABJpgAASKYAAIgcAABLpgAAiBwAAEqmAABNpgAATKYAAE+mAABOpgAAUaYAAFCmAABTpgAAUqYAAFWmAABUpgAAV6YAAFamAABZpgAAWKYAAFumAABapgAAXaYAAFymAABfpgAAXqYAAGGmAABgpgAAY6YAAGKmAABlpgAAZKYAAGemAABmpgAAaaYAAGimAABrpgAAaqYAAG2mAABspgAAgaYAAICmAACDpgAAgqYAAIWmAACEpgAAh6YAAIamAACJpgAAiKYAAIumAACKpgAAjaYAAIymAACPpgAAjqYAAJGmAACQpgAAk6YAAJKmAACVpgAAlKYAAJemAACWpgAAmaYAAJimAACbpgAAmqYAACOnAAAipwAAJacAACSnAAAnpwAAJqcAACmnAAAopwAAK6cAACqnAAAtpwAALKcAAC+nAAAupwAAM6cAADKnAAA1pwAANKcAADenAAA2pwAAOacAADinAAA7pwAAOqcAAD2nAAA8pwAAP6cAAD6nAABBpwAAQKcAAEOnAABCpwAARacAAESnAABHpwAARqcAAEmnAABIpwAAS6cAAEqnAABNpwAATKcAAE+nAABOpwAAUacAAFCnAABTpwAAUqcAAFWnAABUpwAAV6cAAFanAABZpwAAWKcAAFunAABapwAAXacAAFynAABfpwAAXqcAAGGnAABgpwAAY6cAAGKnAABlpwAAZKcAAGenAABmpwAAaacAAGinAABrpwAAaqcAAG2nAABspwAAb6cAAG6nAAB6pwAAeacAAHynAAB7pwAAeR0AAH+nAAB+pwAAgacAAICnAACDpwAAgqcAAIWnAACEpwAAh6cAAIanAACMpwAAi6cAAGUCAACRpwAAkKcAAJOnAACSpwAAxKcAAJenAACWpwAAmacAAJinAACbpwAAmqcAAJ2nAACcpwAAn6cAAJ6nAAChpwAAoKcAAKOnAACipwAApacAAKSnAACnpwAApqcAAKmnAACopwAAZgIAAFwCAABhAgAAbAIAAGoCAACeAgAAhwIAAJ0CAABTqwAAtacAALSnAAC3pwAAtqcAALmnAAC4pwAAu6cAALqnAAC9pwAAvKcAAL+nAAC+pwAAwacAAMCnAADDpwAAwqcAAJSnAACCAgAAjh0AAMinAADHpwAAyqcAAMmnAABkAgAAzacAAMynAADRpwAA0KcAANenAADWpwAA2acAANinAADbpwAA2qcAAJsBAAD2pwAA9acAALOnAACgEwAAoRMAAKITAACjEwAApBMAAKUTAACmEwAApxMAAKgTAACpEwAAqhMAAKsTAACsEwAArRMAAK4TAACvEwAAsBMAALETAACyEwAAsxMAALQTAAC1EwAAthMAALcTAAC4EwAAuRMAALoTAAC7EwAAvBMAAL0TAAC+EwAAvxMAAMATAADBEwAAwhMAAMMTAADEEwAAxRMAAMYTAADHEwAAyBMAAMkTAADKEwAAyxMAAMwTAADNEwAAzhMAAM8TAADQEwAA0RMAANITAADTEwAA1BMAANUTAADWEwAA1xMAANgTAADZEwAA2hMAANsTAADcEwAA3RMAAN4TAADfEwAA4BMAAOETAADiEwAA4xMAAOQTAADlEwAA5hMAAOcTAADoEwAA6RMAAOoTAADrEwAA7BMAAO0TAADuEwAA7xMAAAb7AAAF+wAAQf8AAEL/AABD/wAARP8AAEX/AABG/wAAR/8AAEj/AABJ/wAASv8AAEv/AABM/wAATf8AAE7/AABP/wAAUP8AAFH/AABS/wAAU/8AAFT/AABV/wAAVv8AAFf/AABY/wAAWf8AAFr/AAAh/wAAIv8AACP/AAAk/wAAJf8AACb/AAAn/wAAKP8AACn/AAAq/wAAK/8AACz/AAAt/wAALv8AAC//AAAw/wAAMf8AADL/AAAz/wAANP8AADX/AAA2/wAAN/8AADj/AAA5/wAAOv8AACgEAQApBAEAKgQBACsEAQAsBAEALQQBAC4EAQAvBAEAMAQBADEEAQAyBAEAMwQBADQEAQA1BAEANgQBADcEAQA4BAEAOQQBADoEAQA7BAEAPAQBAD0EAQA+BAEAPwQBAEAEAQBBBAEAQgQBAEMEAQBEBAEARQQBAEYEAQBHBAEASAQBAEkEAQBKBAEASwQBAEwEAQBNBAEATgQBAE8EAQAABAEAAQQBAAIEAQADBAEABAQBAAUEAQAGBAEABwQBAAgEAQAJBAEACgQBAAsEAQAMBAEADQQBAA4EAQAPBAEAEAQBABEEAQASBAEAEwQBABQEAQAVBAEAFgQBABcEAQAYBAEAGQQBABoEAQAbBAEAHAQBAB0EAQAeBAEAHwQBACAEAQAhBAEAIgQBACMEAQAkBAEAJQQBACYEAQAnBAEA2AQBANkEAQDaBAEA2wQBANwEAQDdBAEA3gQBAN8EAQDgBAEA4QQBAOIEAQDjBAEA5AQBAOUEAQDmBAEA5wQBAOgEAQDpBAEA6gQBAOsEAQDsBAEA7QQBAO4EAQDvBAEA8AQBAPEEAQDyBAEA8wQBAPQEAQD1BAEA9gQBAPcEAQD4BAEA+QQBAPoEAQD7BAEAsAQBALEEAQCyBAEAswQBALQEAQC1BAEAtgQBALcEAQC4BAEAuQQBALoEAQC7BAEAvAQBAL0EAQC+BAEAvwQBAMAEAQDBBAEAwgQBAMMEAQDEBAEAxQQBAMYEAQDHBAEAyAQBAMkEAQDKBAEAywQBAMwEAQDNBAEAzgQBAM8EAQDQBAEA0QQBANIEAQDTBAEAlwUBAJgFAQCZBQEAmgUBAJsFAQCcBQEAnQUBAJ4FAQCfBQEAoAUBAKEFAQCjBQEApAUBAKUFAQCmBQEApwUBAKgFAQCpBQEAqgUBAKsFAQCsBQEArQUBAK4FAQCvBQEAsAUBALEFAQCzBQEAtAUBALUFAQC2BQEAtwUBALgFAQC5BQEAuwUBALwFAQBwBQEAcQUBAHIFAQBzBQEAdAUBAHUFAQB2BQEAdwUBAHgFAQB5BQEAegUBAHwFAQB9BQEAfgUBAH8FAQCABQEAgQUBAIIFAQCDBQEAhAUBAIUFAQCGBQEAhwUBAIgFAQCJBQEAigUBAIwFAQCNBQEAjgUBAI8FAQCQBQEAkQUBAJIFAQCUBQEAlQUBAMAMAQDBDAEAwgwBAMMMAQDEDAEAxQwBAMYMAQDHDAEAyAwBAMkMAQDKDAEAywwBAMwMAQDNDAEAzgwBAM8MAQDQDAEA0QwBANIMAQDTDAEA1AwBANUMAQDWDAEA1wwBANgMAQDZDAEA2gwBANsMAQDcDAEA3QwBAN4MAQDfDAEA4AwBAOEMAQDiDAEA4wwBAOQMAQDlDAEA5gwBAOcMAQDoDAEA6QwBAOoMAQDrDAEA7AwBAO0MAQDuDAEA7wwBAPAMAQDxDAEA8gwBAIAMAQCBDAEAggwBAIMMAQCEDAEAhQwBAIYMAQCHDAEAiAwBAIkMAQCKDAEAiwwBAIwMAQCNDAEAjgwBAI8MAQCQDAEAkQwBAJIMAQCTDAEAlAwBAJUMAQCWDAEAlwwBAJgMAQCZDAEAmgwBAJsMAQCcDAEAnQwBAJ4MAQCfDAEAoAwBAKEMAQCiDAEAowwBAKQMAQClDAEApgwBAKcMAQCoDAEAqQwBAKoMAQCrDAEArAwBAK0MAQCuDAEArwwBALAMAQCxDAEAsgwBAHANAQBxDQEAcg0BAHMNAQB0DQEAdQ0BAHYNAQB3DQEAeA0BAHkNAQB6DQEAew0BAHwNAQB9DQEAfg0BAH8NAQCADQEAgQ0BAIINAQCDDQEAhA0BAIUNAQBQDQEAUQ0BAFINAQBTDQEAVA0BAFUNAQBWDQEAVw0BAFgNAQBZDQEAWg0BAFsNAQBcDQEAXQ0BAF4NAQBfDQEAYA0BAGENAQBiDQEAYw0BAGQNAQBlDQEAwBgBAMEYAQDCGAEAwxgBAMQYAQDFGAEAxhgBAMcYAQDIGAEAyRgBAMoYAQDLGAEAzBgBAM0YAQDOGAEAzxgBANAYAQDRGAEA0hgBANMYAQDUGAEA1RgBANYYAQDXGAEA2BgBANkYAQDaGAEA2xgBANwYAQDdGAEA3hgBAN8YAQCgGAEAoRgBAKIYAQCjGAEApBgBAKUYAQCmGAEApxgBAKgYAQCpGAEAqhgBAKsYAQCsGAEArRgBAK4YAQCvGAEAsBgBALEYAQCyGAEAsxgBALQYAQC1GAEAthgBALcYAQC4GAEAuRgBALoYAQC7GAEAvBgBAL0YAQC+GAEAvxgBAGBuAQBhbgEAYm4BAGNuAQBkbgEAZW4BAGZuAQBnbgEAaG4BAGluAQBqbgEAa24BAGxuAQBtbgEAbm4BAG9uAQBwbgEAcW4BAHJuAQBzbgEAdG4BAHVuAQB2bgEAd24BAHhuAQB5bgEAem4BAHtuAQB8bgEAfW4BAH5uAQB/bgEAQG4BAEFuAQBCbgEAQ24BAERuAQBFbgEARm4BAEduAQBIbgEASW4BAEpuAQBLbgEATG4BAE1uAQBObgEAT24BAFBuAQBRbgEAUm4BAFNuAQBUbgEAVW4BAFZuAQBXbgEAWG4BAFluAQBabgEAW24BAFxuAQBdbgEAXm4BAF9uAQAi6QEAI+kBACTpAQAl6QEAJukBACfpAQAo6QEAKekBACrpAQAr6QEALOkBAC3pAQAu6QEAL+kBADDpAQAx6QEAMukBADPpAQA06QEANekBADbpAQA36QEAOOkBADnpAQA66QEAO+kBADzpAQA96QEAPukBAD/pAQBA6QEAQekBAELpAQBD6QEAAOkBAAHpAQAC6QEAA+kBAATpAQAF6QEABukBAAfpAQAI6QEACekBAArpAQAL6QEADOkBAA3pAQAO6QEAD+kBABDpAQAR6QEAEukBABPpAQAU6QEAFekBABbpAQAX6QEAGOkBABnpAQAa6QEAG+kBABzpAQAd6QEAHukBAB/pAQAg6QEAIekBAEEAAADklBMAAQAAAEIAAADolBMAAQAAAEMAAADslBMAAQAAAEQAAADwlBMAAQAAAEUAAAD0lBMAAQAAAEYAAAD4lBMAAQAAAEcAAAD8lBMAAQAAAEgAAAAAlRMAAQAAAEkAAAAElRMAAQAAAEoAAAAIlRMAAQAAAEsAAAAMlRMAAgAAAEwAAAAUlRMAAQAAAE0AAAAYlRMAAQAAAE4AAAAclRMAAQAAAE8AAAAglRMAAQAAAFAAAAAklRMAAQAAAFEAAAAolRMAAQAAAFIAAAAslRMAAQAAAFMAAAAwlRMAAgAAAFQAAAA4lRMAAQAAAFUAAAA8lRMAAQAAAFYAAABAlRMAAQAAAFcAAABElRMAAQAAAFgAAABIlRMAAQAAAFkAAABMlRMAAQAAAFoAAABQlRMAAQAAAGEAAABUlRMAAQAAAGIAAABYlRMAAQAAAGMAAABclRMAAQAAAGQAAABglRMAAQAAAGUAAABklRMAAQAAAGYAAABolRMAAQAAAGcAAABslRMAAQAAAGgAAABwlRMAAQAAAGkAAAB0lRMAAQAAAGoAAAB4lRMAAQAAAGsAAAB8lRMAAgAAAGwAAACElRMAAQAAAG0AAACIlRMAAQAAAG4AAACMlRMAAQAAAG8AAACQlRMAAQAAAHAAAACUlRMAAQAAAHEAAACYlRMAAQAAAHIAAACclRMAAQAAAHMAAACglRMAAgAAAHQAAAColRMAAQAAAHUAAACslRMAAQAAAHYAAACwlRMAAQAAAHcAAAC0lRMAAQAAAHgAAAC4lRMAAQAAAHkAAAC8lRMAAQAAAHoAAADAlRMAAQAAALUAAADElRMAAgAAAMAAAADMlRMAAQAAAMEAAADQlRMAAQAAAMIAAADUlRMAAQAAAMMAAADYlRMAAQAAAMQAAADclRMAAQAAAMUAAADglRMAAgAAAMYAAADolRMAAQAAAMcAAADslRMAAQAAAMgAAADwlRMAAQAAAMkAAAD0lRMAAQAAAMoAAAD4lRMAAQAAAMsAAAD8lRMAAQAAAMwAAAAAlhMAAQAAAM0AAAAElhMAAQAAAM4AAAAIlhMAAQAAAM8AAAAMlhMAAQAAANAAAAAQlhMAAQAAANEAAAAUlhMAAQAAANIAAAAYlhMAAQAAANMAAAAclhMAAQAAANQAAAAglhMAAQAAANUAAAAklhMAAQAAANYAAAAolhMAAQAAANgAAAAslhMAAQAAANkAAAAwlhMAAQAAANoAAAA0lhMAAQAAANsAAAA4lhMAAQAAANwAAAA8lhMAAQAAAN0AAABAlhMAAQAAAN4AAABElhMAAQAAAN8AAABIlhMAAQAAAOAAAABMlhMAAQAAAOEAAABQlhMAAQAAAOIAAABUlhMAAQAAAOMAAABYlhMAAQAAAOQAAABclhMAAQAAAOUAAABglhMAAgAAAOYAAABolhMAAQAAAOcAAABslhMAAQAAAOgAAABwlhMAAQAAAOkAAAB0lhMAAQAAAOoAAAB4lhMAAQAAAOsAAAB8lhMAAQAAAOwAAACAlhMAAQAAAO0AAACElhMAAQAAAO4AAACIlhMAAQAAAO8AAACMlhMAAQAAAPAAAACQlhMAAQAAAPEAAACUlhMAAQAAAPIAAACYlhMAAQAAAPMAAACclhMAAQAAAPQAAACglhMAAQAAAPUAAACklhMAAQAAAPYAAAColhMAAQAAAPgAAACslhMAAQAAAPkAAACwlhMAAQAAAPoAAAC0lhMAAQAAAPsAAAC4lhMAAQAAAPwAAAC8lhMAAQAAAP0AAADAlhMAAQAAAP4AAADElhMAAQAAAP8AAADIlhMAAQAAAAABAADMlhMAAQAAAAEBAADQlhMAAQAAAAIBAADUlhMAAQAAAAMBAADYlhMAAQAAAAQBAADclhMAAQAAAAUBAADglhMAAQAAAAYBAADklhMAAQAAAAcBAADolhMAAQAAAAgBAADslhMAAQAAAAkBAADwlhMAAQAAAAoBAAD0lhMAAQAAAAsBAAD4lhMAAQAAAAwBAAD8lhMAAQAAAA0BAAAAlxMAAQAAAA4BAAAElxMAAQAAAA8BAAAIlxMAAQAAABABAAAMlxMAAQAAABEBAAAQlxMAAQAAABIBAAAUlxMAAQAAABMBAAAYlxMAAQAAABQBAAAclxMAAQAAABUBAAAglxMAAQAAABYBAAAklxMAAQAAABcBAAAolxMAAQAAABgBAAAslxMAAQAAABkBAAAwlxMAAQAAABoBAAA0lxMAAQAAABsBAAA4lxMAAQAAABwBAAA8lxMAAQAAAB0BAABAlxMAAQAAAB4BAABElxMAAQAAAB8BAABIlxMAAQAAACABAABMlxMAAQAAACEBAABQlxMAAQAAACIBAABUlxMAAQAAACMBAABYlxMAAQAAACQBAABclxMAAQAAACUBAABglxMAAQAAACYBAABklxMAAQAAACcBAABolxMAAQAAACgBAABslxMAAQAAACkBAABwlxMAAQAAACoBAAB0lxMAAQAAACsBAAB4lxMAAQAAACwBAAB8lxMAAQAAAC0BAACAlxMAAQAAAC4BAACElxMAAQAAAC8BAACIlxMAAQAAADIBAACMlxMAAQAAADMBAACQlxMAAQAAADQBAACUlxMAAQAAADUBAACYlxMAAQAAADYBAACclxMAAQAAADcBAACglxMAAQAAADkBAACklxMAAQAAADoBAAColxMAAQAAADsBAACslxMAAQAAADwBAACwlxMAAQAAAD0BAAC0lxMAAQAAAD4BAAC4lxMAAQAAAD8BAAC8lxMAAQAAAEABAADAlxMAAQAAAEEBAADElxMAAQAAAEIBAADIlxMAAQAAAEMBAADMlxMAAQAAAEQBAADQlxMAAQAAAEUBAADUlxMAAQAAAEYBAADYlxMAAQAAAEcBAADclxMAAQAAAEgBAADglxMAAQAAAEoBAADklxMAAQAAAEsBAADolxMAAQAAAEwBAADslxMAAQAAAE0BAADwlxMAAQAAAE4BAAD0lxMAAQAAAE8BAAD4lxMAAQAAAFABAAD8lxMAAQAAAFEBAAAAmBMAAQAAAFIBAAAEmBMAAQAAAFMBAAAImBMAAQAAAFQBAAAMmBMAAQAAAFUBAAAQmBMAAQAAAFYBAAAUmBMAAQAAAFcBAAAYmBMAAQAAAFgBAAAcmBMAAQAAAFkBAAAgmBMAAQAAAFoBAAAkmBMAAQAAAFsBAAAomBMAAQAAAFwBAAAsmBMAAQAAAF0BAAAwmBMAAQAAAF4BAAA0mBMAAQAAAF8BAAA4mBMAAQAAAGABAAA8mBMAAQAAAGEBAABAmBMAAQAAAGIBAABEmBMAAQAAAGMBAABImBMAAQAAAGQBAABMmBMAAQAAAGUBAABQmBMAAQAAAGYBAABUmBMAAQAAAGcBAABYmBMAAQAAAGgBAABcmBMAAQAAAGkBAABgmBMAAQAAAGoBAABkmBMAAQAAAGsBAABomBMAAQAAAGwBAABsmBMAAQAAAG0BAABwmBMAAQAAAG4BAAB0mBMAAQAAAG8BAAB4mBMAAQAAAHABAAB8mBMAAQAAAHEBAACAmBMAAQAAAHIBAACEmBMAAQAAAHMBAACImBMAAQAAAHQBAACMmBMAAQAAAHUBAACQmBMAAQAAAHYBAACUmBMAAQAAAHcBAACYmBMAAQAAAHgBAACcmBMAAQAAAHkBAACgmBMAAQAAAHoBAACkmBMAAQAAAHsBAAComBMAAQAAAHwBAACsmBMAAQAAAH0BAACwmBMAAQAAAH4BAAC0mBMAAQAAAH8BAAC4mBMAAgAAAIABAADAmBMAAQAAAIEBAADEmBMAAQAAAIIBAADImBMAAQAAAIMBAADMmBMAAQAAAIQBAADQmBMAAQAAAIUBAADUmBMAAQAAAIYBAADYmBMAAQAAAIcBAADcmBMAAQAAAIgBAADgmBMAAQAAAIkBAADkmBMAAQAAAIoBAADomBMAAQAAAIsBAADsmBMAAQAAAIwBAADwmBMAAQAAAI4BAAD0mBMAAQAAAI8BAAD4mBMAAQAAAJABAAD8mBMAAQAAAJEBAAAAmRMAAQAAAJIBAAAEmRMAAQAAAJMBAAAImRMAAQAAAJQBAAAMmRMAAQAAAJUBAAAQmRMAAQAAAJYBAAAUmRMAAQAAAJcBAAAYmRMAAQAAAJgBAAAcmRMAAQAAAJkBAAAgmRMAAQAAAJoBAAAkmRMAAQAAAJsBAAAomRMAAQAAAJwBAAAsmRMAAQAAAJ0BAAAwmRMAAQAAAJ4BAAA0mRMAAQAAAJ8BAAA4mRMAAQAAAKABAAA8mRMAAQAAAKEBAABAmRMAAQAAAKIBAABEmRMAAQAAAKMBAABImRMAAQAAAKQBAABMmRMAAQAAAKUBAABQmRMAAQAAAKYBAABUmRMAAQAAAKcBAABYmRMAAQAAAKgBAABcmRMAAQAAAKkBAABgmRMAAQAAAKwBAABkmRMAAQAAAK0BAABomRMAAQAAAK4BAABsmRMAAQAAAK8BAABwmRMAAQAAALABAAB0mRMAAQAAALEBAAB4mRMAAQAAALIBAAB8mRMAAQAAALMBAACAmRMAAQAAALQBAACEmRMAAQAAALUBAACImRMAAQAAALYBAACMmRMAAQAAALcBAACQmRMAAQAAALgBAACUmRMAAQAAALkBAACYmRMAAQAAALwBAACcmRMAAQAAAL0BAACgmRMAAQAAAL8BAACkmRMAAQAAAMQBAAComRMAAgAAAMUBAACwmRMAAgAAAMYBAAC4mRMAAgAAAMcBAADAmRMAAgAAAMgBAADImRMAAgAAAMkBAADQmRMAAgAAAMoBAADYmRMAAgAAAMsBAADgmRMAAgAAAMwBAADomRMAAgAAAM0BAADwmRMAAQAAAM4BAAD0mRMAAQAAAM8BAAD4mRMAAQAAANABAAD8mRMAAQAAANEBAAAAmhMAAQAAANIBAAAEmhMAAQAAANMBAAAImhMAAQAAANQBAAAMmhMAAQAAANUBAAAQmhMAAQAAANYBAAAUmhMAAQAAANcBAAAYmhMAAQAAANgBAAAcmhMAAQAAANkBAAAgmhMAAQAAANoBAAAkmhMAAQAAANsBAAAomhMAAQAAANwBAAAsmhMAAQAAAN0BAAAwmhMAAQAAAN4BAAA0mhMAAQAAAN8BAAA4mhMAAQAAAOABAAA8mhMAAQAAAOEBAABAmhMAAQAAAOIBAABEmhMAAQAAAOMBAABImhMAAQAAAOQBAABMmhMAAQAAAOUBAABQmhMAAQAAAOYBAABUmhMAAQAAAOcBAABYmhMAAQAAAOgBAABcmhMAAQAAAOkBAABgmhMAAQAAAOoBAABkmhMAAQAAAOsBAABomhMAAQAAAOwBAABsmhMAAQAAAO0BAABwmhMAAQAAAO4BAAB0mhMAAQAAAO8BAAB4mhMAAQAAAPEBAAB8mhMAAgAAAPIBAACEmhMAAgAAAPMBAACMmhMAAgAAAPQBAACUmhMAAQAAAPUBAACYmhMAAQAAAPYBAACcmhMAAQAAAPcBAACgmhMAAQAAAPgBAACkmhMAAQAAAPkBAAComhMAAQAAAPoBAACsmhMAAQAAAPsBAACwmhMAAQAAAPwBAAC0mhMAAQAAAP0BAAC4mhMAAQAAAP4BAAC8mhMAAQAAAP8BAADAmhMAAQAAAAACAADEmhMAAQAAAAECAADImhMAAQAAAAICAADMmhMAAQAAAAMCAADQmhMAAQAAAAQCAADUmhMAAQAAAAUCAADYmhMAAQAAAAYCAADcmhMAAQAAAAcCAADgmhMAAQAAAAgCAADkmhMAAQAAAAkCAADomhMAAQAAAAoCAADsmhMAAQAAAAsCAADwmhMAAQAAAAwCAAD0mhMAAQAAAA0CAAD4mhMAAQAAAA4CAAD8mhMAAQAAAA8CAAAAmxMAAQAAABACAAAEmxMAAQAAABECAAAImxMAAQAAABICAAAMmxMAAQAAABMCAAAQmxMAAQAAABQCAAAUmxMAAQAAABUCAAAYmxMAAQAAABYCAAAcmxMAAQAAABcCAAAgmxMAAQAAABgCAAAkmxMAAQAAABkCAAAomxMAAQAAABoCAAAsmxMAAQAAABsCAAAwmxMAAQAAABwCAAA0mxMAAQAAAB0CAAA4mxMAAQAAAB4CAAA8mxMAAQAAAB8CAABAmxMAAQAAACACAABEmxMAAQAAACICAABImxMAAQAAACMCAABMmxMAAQAAACQCAABQmxMAAQAAACUCAABUmxMAAQAAACYCAABYmxMAAQAAACcCAABcmxMAAQAAACgCAABgmxMAAQAAACkCAABkmxMAAQAAACoCAABomxMAAQAAACsCAABsmxMAAQAAACwCAABwmxMAAQAAAC0CAAB0mxMAAQAAAC4CAAB4mxMAAQAAAC8CAAB8mxMAAQAAADACAACAmxMAAQAAADECAACEmxMAAQAAADICAACImxMAAQAAADMCAACMmxMAAQAAADoCAACQmxMAAQAAADsCAACUmxMAAQAAADwCAACYmxMAAQAAAD0CAACcmxMAAQAAAD4CAACgmxMAAQAAAD8CAACkmxMAAQAAAEACAAComxMAAQAAAEECAACsmxMAAQAAAEICAACwmxMAAQAAAEMCAAC0mxMAAQAAAEQCAAC4mxMAAQAAAEUCAAC8mxMAAQAAAEYCAADAmxMAAQAAAEcCAADEmxMAAQAAAEgCAADImxMAAQAAAEkCAADMmxMAAQAAAEoCAADQmxMAAQAAAEsCAADUmxMAAQAAAEwCAADYmxMAAQAAAE0CAADcmxMAAQAAAE4CAADgmxMAAQAAAE8CAADkmxMAAQAAAFACAADomxMAAQAAAFECAADsmxMAAQAAAFICAADwmxMAAQAAAFMCAAD0mxMAAQAAAFQCAAD4mxMAAQAAAFYCAAD8mxMAAQAAAFcCAAAAnBMAAQAAAFkCAAAEnBMAAQAAAFsCAAAInBMAAQAAAFwCAAAMnBMAAQAAAGACAAAQnBMAAQAAAGECAAAUnBMAAQAAAGMCAAAYnBMAAQAAAGQCAAAcnBMAAQAAAGUCAAAgnBMAAQAAAGYCAAAknBMAAQAAAGgCAAAonBMAAQAAAGkCAAAsnBMAAQAAAGoCAAAwnBMAAQAAAGsCAAA0nBMAAQAAAGwCAAA4nBMAAQAAAG8CAAA8nBMAAQAAAHECAABAnBMAAQAAAHICAABEnBMAAQAAAHUCAABInBMAAQAAAH0CAABMnBMAAQAAAIACAABQnBMAAQAAAIICAABUnBMAAQAAAIMCAABYnBMAAQAAAIcCAABcnBMAAQAAAIgCAABgnBMAAQAAAIkCAABknBMAAQAAAIoCAABonBMAAQAAAIsCAABsnBMAAQAAAIwCAABwnBMAAQAAAJICAAB0nBMAAQAAAJ0CAAB4nBMAAQAAAJ4CAAB8nBMAAQAAAEUDAACAnBMAAwAAAHADAACMnBMAAQAAAHEDAACQnBMAAQAAAHIDAACUnBMAAQAAAHMDAACYnBMAAQAAAHYDAACcnBMAAQAAAHcDAACgnBMAAQAAAHsDAACknBMAAQAAAHwDAAConBMAAQAAAH0DAACsnBMAAQAAAH8DAACwnBMAAQAAAIYDAAC0nBMAAQAAAIgDAAC4nBMAAQAAAIkDAAC8nBMAAQAAAIoDAADAnBMAAQAAAIwDAADEnBMAAQAAAI4DAADInBMAAQAAAI8DAADMnBMAAQAAAJADAADQnBMAAQAAAJEDAADUnBMAAQAAAJIDAADYnBMAAgAAAJMDAADgnBMAAQAAAJQDAADknBMAAQAAAJUDAADonBMAAgAAAJYDAADwnBMAAQAAAJcDAAD0nBMAAQAAAJgDAAD4nBMAAwAAAJkDAAAEnRMAAwAAAJoDAAAQnRMAAgAAAJsDAAAYnRMAAQAAAJwDAAAcnRMAAgAAAJ0DAAAknRMAAQAAAJ4DAAAonRMAAQAAAJ8DAAAsnRMAAQAAAKADAAAwnRMAAgAAAKEDAAA4nRMAAgAAAKMDAABAnRMAAgAAAKQDAABInRMAAQAAAKUDAABMnRMAAQAAAKYDAABQnRMAAgAAAKcDAABYnRMAAQAAAKgDAABcnRMAAQAAAKkDAABgnRMAAgAAAKoDAABonRMAAQAAAKsDAABsnRMAAQAAAKwDAABwnRMAAQAAAK0DAAB0nRMAAQAAAK4DAAB4nRMAAQAAAK8DAAB8nRMAAQAAALADAACAnRMAAQAAALEDAACEnRMAAQAAALIDAACInRMAAgAAALMDAACQnRMAAQAAALQDAACUnRMAAQAAALUDAACYnRMAAgAAALYDAACgnRMAAQAAALcDAACknRMAAQAAALgDAAConRMAAwAAALkDAAC0nRMAAwAAALoDAADAnRMAAgAAALsDAADInRMAAQAAALwDAADMnRMAAgAAAL0DAADUnRMAAQAAAL4DAADYnRMAAQAAAL8DAADcnRMAAQAAAMADAADgnRMAAgAAAMEDAADonRMAAgAAAMIDAADwnRMAAgAAAMMDAAD4nRMAAgAAAMQDAAAAnhMAAQAAAMUDAAAEnhMAAQAAAMYDAAAInhMAAgAAAMcDAAAQnhMAAQAAAMgDAAAUnhMAAQAAAMkDAAAYnhMAAgAAAMoDAAAgnhMAAQAAAMsDAAAknhMAAQAAAMwDAAAonhMAAQAAAM0DAAAsnhMAAQAAAM4DAAAwnhMAAQAAAM8DAAA0nhMAAQAAANADAAA4nhMAAgAAANEDAABAnhMAAwAAANUDAABMnhMAAgAAANYDAABUnhMAAgAAANcDAABcnhMAAQAAANgDAABgnhMAAQAAANkDAABknhMAAQAAANoDAABonhMAAQAAANsDAABsnhMAAQAAANwDAABwnhMAAQAAAN0DAAB0nhMAAQAAAN4DAAB4nhMAAQAAAN8DAAB8nhMAAQAAAOADAACAnhMAAQAAAOEDAACEnhMAAQAAAOIDAACInhMAAQAAAOMDAACMnhMAAQAAAOQDAACQnhMAAQAAAOUDAACUnhMAAQAAAOYDAACYnhMAAQAAAOcDAACcnhMAAQAAAOgDAACgnhMAAQAAAOkDAACknhMAAQAAAOoDAAConhMAAQAAAOsDAACsnhMAAQAAAOwDAACwnhMAAQAAAO0DAAC0nhMAAQAAAO4DAAC4nhMAAQAAAO8DAAC8nhMAAQAAAPADAADAnhMAAgAAAPEDAADInhMAAgAAAPIDAADQnhMAAQAAAPMDAADUnhMAAQAAAPQDAADYnhMAAwAAAPUDAADknhMAAgAAAPcDAADsnhMAAQAAAPgDAADwnhMAAQAAAPkDAAD0nhMAAQAAAPoDAAD4nhMAAQAAAPsDAAD8nhMAAQAAAP0DAAAAnxMAAQAAAP4DAAAEnxMAAQAAAP8DAAAInxMAAQAAAAAEAAAMnxMAAQAAAAEEAAAQnxMAAQAAAAIEAAAUnxMAAQAAAAMEAAAYnxMAAQAAAAQEAAAcnxMAAQAAAAUEAAAgnxMAAQAAAAYEAAAknxMAAQAAAAcEAAAonxMAAQAAAAgEAAAsnxMAAQAAAAkEAAAwnxMAAQAAAAoEAAA0nxMAAQAAAAsEAAA4nxMAAQAAAAwEAAA8nxMAAQAAAA0EAABAnxMAAQAAAA4EAABEnxMAAQAAAA8EAABInxMAAQAAABAEAABMnxMAAQAAABEEAABQnxMAAQAAABIEAABUnxMAAgAAABMEAABcnxMAAQAAABQEAABgnxMAAgAAABUEAABonxMAAQAAABYEAABsnxMAAQAAABcEAABwnxMAAQAAABgEAAB0nxMAAQAAABkEAAB4nxMAAQAAABoEAAB8nxMAAQAAABsEAACAnxMAAQAAABwEAACEnxMAAQAAAB0EAACInxMAAQAAAB4EAACMnxMAAgAAAB8EAACUnxMAAQAAACAEAACYnxMAAQAAACEEAACcnxMAAgAAACIEAACknxMAAwAAACMEAACwnxMAAQAAACQEAAC0nxMAAQAAACUEAAC4nxMAAQAAACYEAAC8nxMAAQAAACcEAADAnxMAAQAAACgEAADEnxMAAQAAACkEAADInxMAAQAAACoEAADMnxMAAgAAACsEAADUnxMAAQAAACwEAADYnxMAAQAAAC0EAADcnxMAAQAAAC4EAADgnxMAAQAAAC8EAADknxMAAQAAADAEAADonxMAAQAAADEEAADsnxMAAQAAADIEAADwnxMAAgAAADMEAAD4nxMAAQAAADQEAAD8nxMAAgAAADUEAAAEoBMAAQAAADYEAAAIoBMAAQAAADcEAAAMoBMAAQAAADgEAAAQoBMAAQAAADkEAAAUoBMAAQAAADoEAAAYoBMAAQAAADsEAAAcoBMAAQAAADwEAAAgoBMAAQAAAD0EAAAkoBMAAQAAAD4EAAAooBMAAgAAAD8EAAAwoBMAAQAAAEAEAAA0oBMAAQAAAEEEAAA4oBMAAgAAAEIEAABAoBMAAwAAAEMEAABMoBMAAQAAAEQEAABQoBMAAQAAAEUEAABUoBMAAQAAAEYEAABYoBMAAQAAAEcEAABcoBMAAQAAAEgEAABgoBMAAQAAAEkEAABkoBMAAQAAAEoEAABooBMAAgAAAEsEAABwoBMAAQAAAEwEAAB0oBMAAQAAAE0EAAB4oBMAAQAAAE4EAAB8oBMAAQAAAE8EAACAoBMAAQAAAFAEAACEoBMAAQAAAFEEAACIoBMAAQAAAFIEAACMoBMAAQAAAFMEAACQoBMAAQAAAFQEAACUoBMAAQAAAFUEAACYoBMAAQAAAFYEAACcoBMAAQAAAFcEAACgoBMAAQAAAFgEAACkoBMAAQAAAFkEAACooBMAAQAAAFoEAACsoBMAAQAAAFsEAACwoBMAAQAAAFwEAAC0oBMAAQAAAF0EAAC4oBMAAQAAAF4EAAC8oBMAAQAAAF8EAADAoBMAAQAAAGAEAADEoBMAAQAAAGEEAADIoBMAAQAAAGIEAADMoBMAAgAAAGMEAADUoBMAAgAAAGQEAADcoBMAAQAAAGUEAADgoBMAAQAAAGYEAADkoBMAAQAAAGcEAADooBMAAQAAAGgEAADsoBMAAQAAAGkEAADwoBMAAQAAAGoEAAD0oBMAAQAAAGsEAAD4oBMAAQAAAGwEAAD8oBMAAQAAAG0EAAAAoRMAAQAAAG4EAAAEoRMAAQAAAG8EAAAIoRMAAQAAAHAEAAAMoRMAAQAAAHEEAAAQoRMAAQAAAHIEAAAUoRMAAQAAAHMEAAAYoRMAAQAAAHQEAAAcoRMAAQAAAHUEAAAgoRMAAQAAAHYEAAAkoRMAAQAAAHcEAAAooRMAAQAAAHgEAAAsoRMAAQAAAHkEAAAwoRMAAQAAAHoEAAA0oRMAAQAAAHsEAAA4oRMAAQAAAHwEAAA8oRMAAQAAAH0EAABAoRMAAQAAAH4EAABEoRMAAQAAAH8EAABIoRMAAQAAAIAEAABMoRMAAQAAAIEEAABQoRMAAQAAAIoEAABUoRMAAQAAAIsEAABYoRMAAQAAAIwEAABcoRMAAQAAAI0EAABgoRMAAQAAAI4EAABkoRMAAQAAAI8EAABooRMAAQAAAJAEAABsoRMAAQAAAJEEAABwoRMAAQAAAJIEAAB0oRMAAQAAAJMEAAB4oRMAAQAAAJQEAAB8oRMAAQAAAJUEAACAoRMAAQAAAJYEAACEoRMAAQAAAJcEAACIoRMAAQAAAJgEAACMoRMAAQAAAJkEAACQoRMAAQAAAJoEAACUoRMAAQAAAJsEAACYoRMAAQAAAJwEAACcoRMAAQAAAJ0EAACgoRMAAQAAAJ4EAACkoRMAAQAAAJ8EAACooRMAAQAAAKAEAACsoRMAAQAAAKEEAACwoRMAAQAAAKIEAAC0oRMAAQAAAKMEAAC4oRMAAQAAAKQEAAC8oRMAAQAAAKUEAADAoRMAAQAAAKYEAADEoRMAAQAAAKcEAADIoRMAAQAAAKgEAADMoRMAAQAAAKkEAADQoRMAAQAAAKoEAADUoRMAAQAAAKsEAADYoRMAAQAAAKwEAADcoRMAAQAAAK0EAADgoRMAAQAAAK4EAADkoRMAAQAAAK8EAADooRMAAQAAALAEAADsoRMAAQAAALEEAADwoRMAAQAAALIEAAD0oRMAAQAAALMEAAD4oRMAAQAAALQEAAD8oRMAAQAAALUEAAAAohMAAQAAALYEAAAEohMAAQAAALcEAAAIohMAAQAAALgEAAAMohMAAQAAALkEAAAQohMAAQAAALoEAAAUohMAAQAAALsEAAAYohMAAQAAALwEAAAcohMAAQAAAL0EAAAgohMAAQAAAL4EAAAkohMAAQAAAL8EAAAoohMAAQAAAMAEAAAsohMAAQAAAMEEAAAwohMAAQAAAMIEAAA0ohMAAQAAAMMEAAA4ohMAAQAAAMQEAAA8ohMAAQAAAMUEAABAohMAAQAAAMYEAABEohMAAQAAAMcEAABIohMAAQAAAMgEAABMohMAAQAAAMkEAABQohMAAQAAAMoEAABUohMAAQAAAMsEAABYohMAAQAAAMwEAABcohMAAQAAAM0EAABgohMAAQAAAM4EAABkohMAAQAAAM8EAABoohMAAQAAANAEAABsohMAAQAAANEEAABwohMAAQAAANIEAAB0ohMAAQAAANMEAAB4ohMAAQAAANQEAAB8ohMAAQAAANUEAACAohMAAQAAANYEAACEohMAAQAAANcEAACIohMAAQAAANgEAACMohMAAQAAANkEAACQohMAAQAAANoEAACUohMAAQAAANsEAACYohMAAQAAANwEAACcohMAAQAAAN0EAACgohMAAQAAAN4EAACkohMAAQAAAN8EAACoohMAAQAAAOAEAACsohMAAQAAAOEEAACwohMAAQAAAOIEAAC0ohMAAQAAAOMEAAC4ohMAAQAAAOQEAAC8ohMAAQAAAOUEAADAohMAAQAAAOYEAADEohMAAQAAAOcEAADIohMAAQAAAOgEAADMohMAAQAAAOkEAADQohMAAQAAAOoEAADUohMAAQAAAOsEAADYohMAAQAAAOwEAADcohMAAQAAAO0EAADgohMAAQAAAO4EAADkohMAAQAAAO8EAADoohMAAQAAAPAEAADsohMAAQAAAPEEAADwohMAAQAAAPIEAAD0ohMAAQAAAPMEAAD4ohMAAQAAAPQEAAD8ohMAAQAAAPUEAAAAoxMAAQAAAPYEAAAEoxMAAQAAAPcEAAAIoxMAAQAAAPgEAAAMoxMAAQAAAPkEAAAQoxMAAQAAAPoEAAAUoxMAAQAAAPsEAAAYoxMAAQAAAPwEAAAcoxMAAQAAAP0EAAAgoxMAAQAAAP4EAAAkoxMAAQAAAP8EAAAooxMAAQAAAAAFAAAsoxMAAQAAAAEFAAAwoxMAAQAAAAIFAAA0oxMAAQAAAAMFAAA4oxMAAQAAAAQFAAA8oxMAAQAAAAUFAABAoxMAAQAAAAYFAABEoxMAAQAAAAcFAABIoxMAAQAAAAgFAABMoxMAAQAAAAkFAABQoxMAAQAAAAoFAABUoxMAAQAAAAsFAABYoxMAAQAAAAwFAABcoxMAAQAAAA0FAABgoxMAAQAAAA4FAABkoxMAAQAAAA8FAABooxMAAQAAABAFAABsoxMAAQAAABEFAABwoxMAAQAAABIFAAB0oxMAAQAAABMFAAB4oxMAAQAAABQFAAB8oxMAAQAAABUFAACAoxMAAQAAABYFAACEoxMAAQAAABcFAACIoxMAAQAAABgFAACMoxMAAQAAABkFAACQoxMAAQAAABoFAACUoxMAAQAAABsFAACYoxMAAQAAABwFAACcoxMAAQAAAB0FAACgoxMAAQAAAB4FAACkoxMAAQAAAB8FAACooxMAAQAAACAFAACsoxMAAQAAACEFAACwoxMAAQAAACIFAAC0oxMAAQAAACMFAAC4oxMAAQAAACQFAAC8oxMAAQAAACUFAADAoxMAAQAAACYFAADEoxMAAQAAACcFAADIoxMAAQAAACgFAADMoxMAAQAAACkFAADQoxMAAQAAACoFAADUoxMAAQAAACsFAADYoxMAAQAAACwFAADcoxMAAQAAAC0FAADgoxMAAQAAAC4FAADkoxMAAQAAAC8FAADooxMAAQAAADEFAADsoxMAAQAAADIFAADwoxMAAQAAADMFAAD0oxMAAQAAADQFAAD4oxMAAQAAADUFAAD8oxMAAQAAADYFAAAApBMAAQAAADcFAAAEpBMAAQAAADgFAAAIpBMAAQAAADkFAAAMpBMAAQAAADoFAAAQpBMAAQAAADsFAAAUpBMAAQAAADwFAAAYpBMAAQAAAD0FAAAcpBMAAQAAAD4FAAAgpBMAAQAAAD8FAAAkpBMAAQAAAEAFAAAopBMAAQAAAEEFAAAspBMAAQAAAEIFAAAwpBMAAQAAAEMFAAA0pBMAAQAAAEQFAAA4pBMAAQAAAEUFAAA8pBMAAQAAAEYFAABApBMAAQAAAEcFAABEpBMAAQAAAEgFAABIpBMAAQAAAEkFAABMpBMAAQAAAEoFAABQpBMAAQAAAEsFAABUpBMAAQAAAEwFAABYpBMAAQAAAE0FAABcpBMAAQAAAE4FAABgpBMAAQAAAE8FAABkpBMAAQAAAFAFAABopBMAAQAAAFEFAABspBMAAQAAAFIFAABwpBMAAQAAAFMFAAB0pBMAAQAAAFQFAAB4pBMAAQAAAFUFAAB8pBMAAQAAAFYFAACApBMAAQAAAGEFAACEpBMAAQAAAGIFAACIpBMAAQAAAGMFAACMpBMAAQAAAGQFAACQpBMAAQAAAGUFAACUpBMAAQAAAGYFAACYpBMAAQAAAGcFAACcpBMAAQAAAGgFAACgpBMAAQAAAGkFAACkpBMAAQAAAGoFAACopBMAAQAAAGsFAACspBMAAQAAAGwFAACwpBMAAQAAAG0FAAC0pBMAAQAAAG4FAAC4pBMAAQAAAG8FAAC8pBMAAQAAAHAFAADApBMAAQAAAHEFAADEpBMAAQAAAHIFAADIpBMAAQAAAHMFAADMpBMAAQAAAHQFAADQpBMAAQAAAHUFAADUpBMAAQAAAHYFAADYpBMAAQAAAHcFAADcpBMAAQAAAHgFAADgpBMAAQAAAHkFAADkpBMAAQAAAHoFAADopBMAAQAAAHsFAADspBMAAQAAAHwFAADwpBMAAQAAAH0FAAD0pBMAAQAAAH4FAAD4pBMAAQAAAH8FAAD8pBMAAQAAAIAFAAAApRMAAQAAAIEFAAAEpRMAAQAAAIIFAAAIpRMAAQAAAIMFAAAMpRMAAQAAAIQFAAAQpRMAAQAAAIUFAAAUpRMAAQAAAIYFAAAYpRMAAQAAAKAQAAAcpRMAAQAAAKEQAAAgpRMAAQAAAKIQAAAkpRMAAQAAAKMQAAAopRMAAQAAAKQQAAAspRMAAQAAAKUQAAAwpRMAAQAAAKYQAAA0pRMAAQAAAKcQAAA4pRMAAQAAAKgQAAA8pRMAAQAAAKkQAABApRMAAQAAAKoQAABEpRMAAQAAAKsQAABIpRMAAQAAAKwQAABMpRMAAQAAAK0QAABQpRMAAQAAAK4QAABUpRMAAQAAAK8QAABYpRMAAQAAALAQAABcpRMAAQAAALEQAABgpRMAAQAAALIQAABkpRMAAQAAALMQAABopRMAAQAAALQQAABspRMAAQAAALUQAABwpRMAAQAAALYQAAB0pRMAAQAAALcQAAB4pRMAAQAAALgQAAB8pRMAAQAAALkQAACApRMAAQAAALoQAACEpRMAAQAAALsQAACIpRMAAQAAALwQAACMpRMAAQAAAL0QAACQpRMAAQAAAL4QAACUpRMAAQAAAL8QAACYpRMAAQAAAMAQAACcpRMAAQAAAMEQAACgpRMAAQAAAMIQAACkpRMAAQAAAMMQAACopRMAAQAAAMQQAACspRMAAQAAAMUQAACwpRMAAQAAAMcQAAC0pRMAAQAAAM0QAAC4pRMAAQAAANAQAAC8pRMAAQAAANEQAADApRMAAQAAANIQAADEpRMAAQAAANMQAADIpRMAAQAAANQQAADMpRMAAQAAANUQAADQpRMAAQAAANYQAADUpRMAAQAAANcQAADYpRMAAQAAANgQAADcpRMAAQAAANkQAADgpRMAAQAAANoQAADkpRMAAQAAANsQAADopRMAAQAAANwQAADspRMAAQAAAN0QAADwpRMAAQAAAN4QAAD0pRMAAQAAAN8QAAD4pRMAAQAAAOAQAAD8pRMAAQAAAOEQAAAAphMAAQAAAOIQAAAEphMAAQAAAOMQAAAIphMAAQAAAOQQAAAMphMAAQAAAOUQAAAQphMAAQAAAOYQAAAUphMAAQAAAOcQAAAYphMAAQAAAOgQAAAcphMAAQAAAOkQAAAgphMAAQAAAOoQAAAkphMAAQAAAOsQAAAophMAAQAAAOwQAAAsphMAAQAAAO0QAAAwphMAAQAAAO4QAAA0phMAAQAAAO8QAAA4phMAAQAAAPAQAAA8phMAAQAAAPEQAABAphMAAQAAAPIQAABEphMAAQAAAPMQAABIphMAAQAAAPQQAABMphMAAQAAAPUQAABQphMAAQAAAPYQAABUphMAAQAAAPcQAABYphMAAQAAAPgQAABcphMAAQAAAPkQAABgphMAAQAAAPoQAABkphMAAQAAAP0QAABophMAAQAAAP4QAABsphMAAQAAAP8QAABwphMAAQAAAKATAAB0phMAAQAAAKETAAB4phMAAQAAAKITAAB8phMAAQAAAKMTAACAphMAAQAAAKQTAACEphMAAQAAAKUTAACIphMAAQAAAKYTAACMphMAAQAAAKcTAACQphMAAQAAAKgTAACUphMAAQAAAKkTAACYphMAAQAAAKoTAACcphMAAQAAAKsTAACgphMAAQAAAKwTAACkphMAAQAAAK0TAACophMAAQAAAK4TAACsphMAAQAAAK8TAACwphMAAQAAALATAAC0phMAAQAAALETAAC4phMAAQAAALITAAC8phMAAQAAALMTAADAphMAAQAAALQTAADEphMAAQAAALUTAADIphMAAQAAALYTAADMphMAAQAAALcTAADQphMAAQAAALgTAADUphMAAQAAALkTAADYphMAAQAAALoTAADcphMAAQAAALsTAADgphMAAQAAALwTAADkphMAAQAAAL0TAADophMAAQAAAL4TAADsphMAAQAAAL8TAADwphMAAQAAAMATAAD0phMAAQAAAMETAAD4phMAAQAAAMITAAD8phMAAQAAAMMTAAAApxMAAQAAAMQTAAAEpxMAAQAAAMUTAAAIpxMAAQAAAMYTAAAMpxMAAQAAAMcTAAAQpxMAAQAAAMgTAAAUpxMAAQAAAMkTAAAYpxMAAQAAAMoTAAAcpxMAAQAAAMsTAAAgpxMAAQAAAMwTAAAkpxMAAQAAAM0TAAAopxMAAQAAAM4TAAAspxMAAQAAAM8TAAAwpxMAAQAAANATAAA0pxMAAQAAANETAAA4pxMAAQAAANITAAA8pxMAAQAAANMTAABApxMAAQAAANQTAABEpxMAAQAAANUTAABIpxMAAQAAANYTAABMpxMAAQAAANcTAABQpxMAAQAAANgTAABUpxMAAQAAANkTAABYpxMAAQAAANoTAABcpxMAAQAAANsTAABgpxMAAQAAANwTAABkpxMAAQAAAN0TAABopxMAAQAAAN4TAABspxMAAQAAAN8TAABwpxMAAQAAAOATAAB0pxMAAQAAAOETAAB4pxMAAQAAAOITAAB8pxMAAQAAAOMTAACApxMAAQAAAOQTAACEpxMAAQAAAOUTAACIpxMAAQAAAOYTAACMpxMAAQAAAOcTAACQpxMAAQAAAOgTAACUpxMAAQAAAOkTAACYpxMAAQAAAOoTAACcpxMAAQAAAOsTAACgpxMAAQAAAOwTAACkpxMAAQAAAO0TAACopxMAAQAAAO4TAACspxMAAQAAAO8TAACwpxMAAQAAAPATAAC0pxMAAQAAAPETAAC4pxMAAQAAAPITAAC8pxMAAQAAAPMTAADApxMAAQAAAPQTAADEpxMAAQAAAPUTAADIpxMAAQAAAPgTAADMpxMAAQAAAPkTAADQpxMAAQAAAPoTAADUpxMAAQAAAPsTAADYpxMAAQAAAPwTAADcpxMAAQAAAP0TAADgpxMAAQAAAIAcAADkpxMAAgAAAIEcAADspxMAAgAAAIIcAAD0pxMAAgAAAIMcAAD8pxMAAgAAAIQcAAAEqBMAAwAAAIUcAAAQqBMAAwAAAIYcAAAcqBMAAgAAAIccAAAkqBMAAgAAAIgcAAAsqBMAAgAAAIkcAAA0qBMAAQAAAIocAAA4qBMAAQAAAJAcAAA8qBMAAQAAAJEcAABAqBMAAQAAAJIcAABEqBMAAQAAAJMcAABIqBMAAQAAAJQcAABMqBMAAQAAAJUcAABQqBMAAQAAAJYcAABUqBMAAQAAAJccAABYqBMAAQAAAJgcAABcqBMAAQAAAJkcAABgqBMAAQAAAJocAABkqBMAAQAAAJscAABoqBMAAQAAAJwcAABsqBMAAQAAAJ0cAABwqBMAAQAAAJ4cAAB0qBMAAQAAAJ8cAAB4qBMAAQAAAKAcAAB8qBMAAQAAAKEcAACAqBMAAQAAAKIcAACEqBMAAQAAAKMcAACIqBMAAQAAAKQcAACMqBMAAQAAAKUcAACQqBMAAQAAAKYcAACUqBMAAQAAAKccAACYqBMAAQAAAKgcAACcqBMAAQAAAKkcAACgqBMAAQAAAKocAACkqBMAAQAAAKscAACoqBMAAQAAAKwcAACsqBMAAQAAAK0cAACwqBMAAQAAAK4cAAC0qBMAAQAAAK8cAAC4qBMAAQAAALAcAAC8qBMAAQAAALEcAADAqBMAAQAAALIcAADEqBMAAQAAALMcAADIqBMAAQAAALQcAADMqBMAAQAAALUcAADQqBMAAQAAALYcAADUqBMAAQAAALccAADYqBMAAQAAALgcAADcqBMAAQAAALkcAADgqBMAAQAAALocAADkqBMAAQAAAL0cAADoqBMAAQAAAL4cAADsqBMAAQAAAL8cAADwqBMAAQAAAHkdAAD0qBMAAQAAAH0dAAD4qBMAAQAAAI4dAAD8qBMAAQAAAAAeAAAAqRMAAQAAAAEeAAAEqRMAAQAAAAIeAAAIqRMAAQAAAAMeAAAMqRMAAQAAAAQeAAAQqRMAAQAAAAUeAAAUqRMAAQAAAAYeAAAYqRMAAQAAAAceAAAcqRMAAQAAAAgeAAAgqRMAAQAAAAkeAAAkqRMAAQAAAAoeAAAoqRMAAQAAAAseAAAsqRMAAQAAAAweAAAwqRMAAQAAAA0eAAA0qRMAAQAAAA4eAAA4qRMAAQAAAA8eAAA8qRMAAQAAABAeAABAqRMAAQAAABEeAABEqRMAAQAAABIeAABIqRMAAQAAABMeAABMqRMAAQAAABQeAABQqRMAAQAAABUeAABUqRMAAQAAABYeAABYqRMAAQAAABceAABcqRMAAQAAABgeAABgqRMAAQAAABkeAABkqRMAAQAAABoeAABoqRMAAQAAABseAABsqRMAAQAAABweAABwqRMAAQAAAB0eAAB0qRMAAQAAAB4eAAB4qRMAAQAAAB8eAAB8qRMAAQAAACAeAACAqRMAAQAAACEeAACEqRMAAQAAACIeAACIqRMAAQAAACMeAACMqRMAAQAAACQeAACQqRMAAQAAACUeAACUqRMAAQAAACYeAACYqRMAAQAAACceAACcqRMAAQAAACgeAACgqRMAAQAAACkeAACkqRMAAQAAACoeAACoqRMAAQAAACseAACsqRMAAQAAACweAACwqRMAAQAAAC0eAAC0qRMAAQAAAC4eAAC4qRMAAQAAAC8eAAC8qRMAAQAAADAeAADAqRMAAQAAADEeAADEqRMAAQAAADIeAADIqRMAAQAAADMeAADMqRMAAQAAADQeAADQqRMAAQAAADUeAADUqRMAAQAAADYeAADYqRMAAQAAADceAADcqRMAAQAAADgeAADgqRMAAQAAADkeAADkqRMAAQAAADoeAADoqRMAAQAAADseAADsqRMAAQAAADweAADwqRMAAQAAAD0eAAD0qRMAAQAAAD4eAAD4qRMAAQAAAD8eAAD8qRMAAQAAAEAeAAAAqhMAAQAAAEEeAAAEqhMAAQAAAEIeAAAIqhMAAQAAAEMeAAAMqhMAAQAAAEQeAAAQqhMAAQAAAEUeAAAUqhMAAQAAAEYeAAAYqhMAAQAAAEceAAAcqhMAAQAAAEgeAAAgqhMAAQAAAEkeAAAkqhMAAQAAAEoeAAAoqhMAAQAAAEseAAAsqhMAAQAAAEweAAAwqhMAAQAAAE0eAAA0qhMAAQAAAE4eAAA4qhMAAQAAAE8eAAA8qhMAAQAAAFAeAABAqhMAAQAAAFEeAABEqhMAAQAAAFIeAABIqhMAAQAAAFMeAABMqhMAAQAAAFQeAABQqhMAAQAAAFUeAABUqhMAAQAAAFYeAABYqhMAAQAAAFceAABcqhMAAQAAAFgeAABgqhMAAQAAAFkeAABkqhMAAQAAAFoeAABoqhMAAQAAAFseAABsqhMAAQAAAFweAABwqhMAAQAAAF0eAAB0qhMAAQAAAF4eAAB4qhMAAQAAAF8eAAB8qhMAAQAAAGAeAACAqhMAAgAAAGEeAACIqhMAAgAAAGIeAACQqhMAAQAAAGMeAACUqhMAAQAAAGQeAACYqhMAAQAAAGUeAACcqhMAAQAAAGYeAACgqhMAAQAAAGceAACkqhMAAQAAAGgeAACoqhMAAQAAAGkeAACsqhMAAQAAAGoeAACwqhMAAQAAAGseAAC0qhMAAQAAAGweAAC4qhMAAQAAAG0eAAC8qhMAAQAAAG4eAADAqhMAAQAAAG8eAADEqhMAAQAAAHAeAADIqhMAAQAAAHEeAADMqhMAAQAAAHIeAADQqhMAAQAAAHMeAADUqhMAAQAAAHQeAADYqhMAAQAAAHUeAADcqhMAAQAAAHYeAADgqhMAAQAAAHceAADkqhMAAQAAAHgeAADoqhMAAQAAAHkeAADsqhMAAQAAAHoeAADwqhMAAQAAAHseAAD0qhMAAQAAAHweAAD4qhMAAQAAAH0eAAD8qhMAAQAAAH4eAAAAqxMAAQAAAH8eAAAEqxMAAQAAAIAeAAAIqxMAAQAAAIEeAAAMqxMAAQAAAIIeAAAQqxMAAQAAAIMeAAAUqxMAAQAAAIQeAAAYqxMAAQAAAIUeAAAcqxMAAQAAAIYeAAAgqxMAAQAAAIceAAAkqxMAAQAAAIgeAAAoqxMAAQAAAIkeAAAsqxMAAQAAAIoeAAAwqxMAAQAAAIseAAA0qxMAAQAAAIweAAA4qxMAAQAAAI0eAAA8qxMAAQAAAI4eAABAqxMAAQAAAI8eAABEqxMAAQAAAJAeAABIqxMAAQAAAJEeAABMqxMAAQAAAJIeAABQqxMAAQAAAJMeAABUqxMAAQAAAJQeAABYqxMAAQAAAJUeAABcqxMAAQAAAJseAABgqxMAAgAAAJ4eAABoqxMAAQAAAKAeAABsqxMAAQAAAKEeAABwqxMAAQAAAKIeAAB0qxMAAQAAAKMeAAB4qxMAAQAAAKQeAAB8qxMAAQAAAKUeAACAqxMAAQAAAKYeAACEqxMAAQAAAKceAACIqxMAAQAAAKgeAACMqxMAAQAAAKkeAACQqxMAAQAAAKoeAACUqxMAAQAAAKseAACYqxMAAQAAAKweAACcqxMAAQAAAK0eAACgqxMAAQAAAK4eAACkqxMAAQAAAK8eAACoqxMAAQAAALAeAACsqxMAAQAAALEeAACwqxMAAQAAALIeAAC0qxMAAQAAALMeAAC4qxMAAQAAALQeAAC8qxMAAQAAALUeAADAqxMAAQAAALYeAADEqxMAAQAAALceAADIqxMAAQAAALgeAADMqxMAAQAAALkeAADQqxMAAQAAALoeAADUqxMAAQAAALseAADYqxMAAQAAALweAADcqxMAAQAAAL0eAADgqxMAAQAAAL4eAADkqxMAAQAAAL8eAADoqxMAAQAAAMAeAADsqxMAAQAAAMEeAADwqxMAAQAAAMIeAAD0qxMAAQAAAMMeAAD4qxMAAQAAAMQeAAD8qxMAAQAAAMUeAAAArBMAAQAAAMYeAAAErBMAAQAAAMceAAAIrBMAAQAAAMgeAAAMrBMAAQAAAMkeAAAQrBMAAQAAAMoeAAAUrBMAAQAAAMseAAAYrBMAAQAAAMweAAAcrBMAAQAAAM0eAAAgrBMAAQAAAM4eAAAkrBMAAQAAAM8eAAAorBMAAQAAANAeAAAsrBMAAQAAANEeAAAwrBMAAQAAANIeAAA0rBMAAQAAANMeAAA4rBMAAQAAANQeAAA8rBMAAQAAANUeAABArBMAAQAAANYeAABErBMAAQAAANceAABIrBMAAQAAANgeAABMrBMAAQAAANkeAABQrBMAAQAAANoeAABUrBMAAQAAANseAABYrBMAAQAAANweAABcrBMAAQAAAN0eAABgrBMAAQAAAN4eAABkrBMAAQAAAN8eAABorBMAAQAAAOAeAABsrBMAAQAAAOEeAABwrBMAAQAAAOIeAAB0rBMAAQAAAOMeAAB4rBMAAQAAAOQeAAB8rBMAAQAAAOUeAACArBMAAQAAAOYeAACErBMAAQAAAOceAACIrBMAAQAAAOgeAACMrBMAAQAAAOkeAACQrBMAAQAAAOoeAACUrBMAAQAAAOseAACYrBMAAQAAAOweAACcrBMAAQAAAO0eAACgrBMAAQAAAO4eAACkrBMAAQAAAO8eAACorBMAAQAAAPAeAACsrBMAAQAAAPEeAACwrBMAAQAAAPIeAAC0rBMAAQAAAPMeAAC4rBMAAQAAAPQeAAC8rBMAAQAAAPUeAADArBMAAQAAAPYeAADErBMAAQAAAPceAADIrBMAAQAAAPgeAADMrBMAAQAAAPkeAADQrBMAAQAAAPoeAADUrBMAAQAAAPseAADYrBMAAQAAAPweAADcrBMAAQAAAP0eAADgrBMAAQAAAP4eAADkrBMAAQAAAP8eAADorBMAAQAAAAAfAADsrBMAAQAAAAEfAADwrBMAAQAAAAIfAAD0rBMAAQAAAAMfAAD4rBMAAQAAAAQfAAD8rBMAAQAAAAUfAAAArRMAAQAAAAYfAAAErRMAAQAAAAcfAAAIrRMAAQAAAAgfAAAMrRMAAQAAAAkfAAAQrRMAAQAAAAofAAAUrRMAAQAAAAsfAAAYrRMAAQAAAAwfAAAcrRMAAQAAAA0fAAAgrRMAAQAAAA4fAAAkrRMAAQAAAA8fAAAorRMAAQAAABAfAAAsrRMAAQAAABEfAAAwrRMAAQAAABIfAAA0rRMAAQAAABMfAAA4rRMAAQAAABQfAAA8rRMAAQAAABUfAABArRMAAQAAABgfAABErRMAAQAAABkfAABIrRMAAQAAABofAABMrRMAAQAAABsfAABQrRMAAQAAABwfAABUrRMAAQAAAB0fAABYrRMAAQAAACAfAABcrRMAAQAAACEfAABgrRMAAQAAACIfAABkrRMAAQAAACMfAABorRMAAQAAACQfAABsrRMAAQAAACUfAABwrRMAAQAAACYfAAB0rRMAAQAAACcfAAB4rRMAAQAAACgfAAB8rRMAAQAAACkfAACArRMAAQAAACofAACErRMAAQAAACsfAACIrRMAAQAAACwfAACMrRMAAQAAAC0fAACQrRMAAQAAAC4fAACUrRMAAQAAAC8fAACYrRMAAQAAADAfAACcrRMAAQAAADEfAACgrRMAAQAAADIfAACkrRMAAQAAADMfAACorRMAAQAAADQfAACsrRMAAQAAADUfAACwrRMAAQAAADYfAAC0rRMAAQAAADcfAAC4rRMAAQAAADgfAAC8rRMAAQAAADkfAADArRMAAQAAADofAADErRMAAQAAADsfAADIrRMAAQAAADwfAADMrRMAAQAAAD0fAADQrRMAAQAAAD4fAADUrRMAAQAAAD8fAADYrRMAAQAAAEAfAADcrRMAAQAAAEEfAADgrRMAAQAAAEIfAADkrRMAAQAAAEMfAADorRMAAQAAAEQfAADsrRMAAQAAAEUfAADwrRMAAQAAAEgfAAD0rRMAAQAAAEkfAAD4rRMAAQAAAEofAAD8rRMAAQAAAEsfAAAArhMAAQAAAEwfAAAErhMAAQAAAE0fAAAIrhMAAQAAAFEfAAAMrhMAAQAAAFMfAAAQrhMAAQAAAFUfAAAUrhMAAQAAAFcfAAAYrhMAAQAAAFkfAAAcrhMAAQAAAFsfAAAgrhMAAQAAAF0fAAAkrhMAAQAAAF8fAAAorhMAAQAAAGAfAAAsrhMAAQAAAGEfAAAwrhMAAQAAAGIfAAA0rhMAAQAAAGMfAAA4rhMAAQAAAGQfAAA8rhMAAQAAAGUfAABArhMAAQAAAGYfAABErhMAAQAAAGcfAABIrhMAAQAAAGgfAABMrhMAAQAAAGkfAABQrhMAAQAAAGofAABUrhMAAQAAAGsfAABYrhMAAQAAAGwfAABcrhMAAQAAAG0fAABgrhMAAQAAAG4fAABkrhMAAQAAAG8fAABorhMAAQAAAHAfAABsrhMAAQAAAHEfAABwrhMAAQAAAHIfAAB0rhMAAQAAAHMfAAB4rhMAAQAAAHQfAAB8rhMAAQAAAHUfAACArhMAAQAAAHYfAACErhMAAQAAAHcfAACIrhMAAQAAAHgfAACMrhMAAQAAAHkfAACQrhMAAQAAAHofAACUrhMAAQAAAHsfAACYrhMAAQAAAHwfAACcrhMAAQAAAH0fAACgrhMAAQAAAIAfAACkrhMAAQAAAIEfAACorhMAAQAAAIIfAACsrhMAAQAAAIMfAACwrhMAAQAAAIQfAAC0rhMAAQAAAIUfAAC4rhMAAQAAAIYfAAC8rhMAAQAAAIcfAADArhMAAQAAAIgfAADErhMAAQAAAIkfAADIrhMAAQAAAIofAADMrhMAAQAAAIsfAADQrhMAAQAAAIwfAADUrhMAAQAAAI0fAADYrhMAAQAAAI4fAADcrhMAAQAAAI8fAADgrhMAAQAAAJAfAADkrhMAAQAAAJEfAADorhMAAQAAAJIfAADsrhMAAQAAAJMfAADwrhMAAQAAAJQfAAD0rhMAAQAAAJUfAAD4rhMAAQAAAJYfAAD8rhMAAQAAAJcfAAAArxMAAQAAAJgfAAAErxMAAQAAAJkfAAAIrxMAAQAAAJofAAAMrxMAAQAAAJsfAAAQrxMAAQAAAJwfAAAUrxMAAQAAAJ0fAAAYrxMAAQAAAJ4fAAAcrxMAAQAAAJ8fAAAgrxMAAQAAAKAfAAAkrxMAAQAAAKEfAAAorxMAAQAAAKIfAAAsrxMAAQAAAKMfAAAwrxMAAQAAAKQfAAA0rxMAAQAAAKUfAAA4rxMAAQAAAKYfAAA8rxMAAQAAAKcfAABArxMAAQAAAKgfAABErxMAAQAAAKkfAABIrxMAAQAAAKofAABMrxMAAQAAAKsfAABQrxMAAQAAAKwfAABUrxMAAQAAAK0fAABYrxMAAQAAAK4fAABcrxMAAQAAAK8fAABgrxMAAQAAALAfAABkrxMAAQAAALEfAABorxMAAQAAALMfAABsrxMAAQAAALgfAABwrxMAAQAAALkfAAB0rxMAAQAAALofAAB4rxMAAQAAALsfAAB8rxMAAQAAALwfAACArxMAAQAAAL4fAACErxMAAwAAAMMfAACQrxMAAQAAAMgfAACUrxMAAQAAAMkfAACYrxMAAQAAAMofAACcrxMAAQAAAMsfAACgrxMAAQAAAMwfAACkrxMAAQAAANAfAACorxMAAQAAANEfAACsrxMAAQAAANMfAACwrxMAAQAAANgfAAC0rxMAAQAAANkfAAC4rxMAAQAAANofAAC8rxMAAQAAANsfAADArxMAAQAAAOAfAADErxMAAQAAAOEfAADIrxMAAQAAAOMfAADMrxMAAQAAAOUfAADQrxMAAQAAAOgfAADUrxMAAQAAAOkfAADYrxMAAQAAAOofAADcrxMAAQAAAOsfAADgrxMAAQAAAOwfAADkrxMAAQAAAPMfAADorxMAAQAAAPgfAADsrxMAAQAAAPkfAADwrxMAAQAAAPofAAD0rxMAAQAAAPsfAAD4rxMAAQAAAPwfAAD8rxMAAQAAACYhAAAAsBMAAgAAACohAAAIsBMAAgAAACshAAAQsBMAAgAAADIhAAAYsBMAAQAAAE4hAAAcsBMAAQAAAGAhAAAgsBMAAQAAAGEhAAAksBMAAQAAAGIhAAAosBMAAQAAAGMhAAAssBMAAQAAAGQhAAAwsBMAAQAAAGUhAAA0sBMAAQAAAGYhAAA4sBMAAQAAAGchAAA8sBMAAQAAAGghAABAsBMAAQAAAGkhAABEsBMAAQAAAGohAABIsBMAAQAAAGshAABMsBMAAQAAAGwhAABQsBMAAQAAAG0hAABUsBMAAQAAAG4hAABYsBMAAQAAAG8hAABcsBMAAQAAAHAhAABgsBMAAQAAAHEhAABksBMAAQAAAHIhAABosBMAAQAAAHMhAABssBMAAQAAAHQhAABwsBMAAQAAAHUhAAB0sBMAAQAAAHYhAAB4sBMAAQAAAHchAAB8sBMAAQAAAHghAACAsBMAAQAAAHkhAACEsBMAAQAAAHohAACIsBMAAQAAAHshAACMsBMAAQAAAHwhAACQsBMAAQAAAH0hAACUsBMAAQAAAH4hAACYsBMAAQAAAH8hAACcsBMAAQAAAIMhAACgsBMAAQAAAIQhAACksBMAAQAAALYkAACosBMAAQAAALckAACssBMAAQAAALgkAACwsBMAAQAAALkkAAC0sBMAAQAAALokAAC4sBMAAQAAALskAAC8sBMAAQAAALwkAADAsBMAAQAAAL0kAADEsBMAAQAAAL4kAADIsBMAAQAAAL8kAADMsBMAAQAAAMAkAADQsBMAAQAAAMEkAADUsBMAAQAAAMIkAADYsBMAAQAAAMMkAADcsBMAAQAAAMQkAADgsBMAAQAAAMUkAADksBMAAQAAAMYkAADosBMAAQAAAMckAADssBMAAQAAAMgkAADwsBMAAQAAAMkkAAD0sBMAAQAAAMokAAD4sBMAAQAAAMskAAD8sBMAAQAAAMwkAAAAsRMAAQAAAM0kAAAEsRMAAQAAAM4kAAAIsRMAAQAAAM8kAAAMsRMAAQAAANAkAAAQsRMAAQAAANEkAAAUsRMAAQAAANIkAAAYsRMAAQAAANMkAAAcsRMAAQAAANQkAAAgsRMAAQAAANUkAAAksRMAAQAAANYkAAAosRMAAQAAANckAAAssRMAAQAAANgkAAAwsRMAAQAAANkkAAA0sRMAAQAAANokAAA4sRMAAQAAANskAAA8sRMAAQAAANwkAABAsRMAAQAAAN0kAABEsRMAAQAAAN4kAABIsRMAAQAAAN8kAABMsRMAAQAAAOAkAABQsRMAAQAAAOEkAABUsRMAAQAAAOIkAABYsRMAAQAAAOMkAABcsRMAAQAAAOQkAABgsRMAAQAAAOUkAABksRMAAQAAAOYkAABosRMAAQAAAOckAABssRMAAQAAAOgkAABwsRMAAQAAAOkkAAB0sRMAAQAAAAAsAAB4sRMAAQAAAAEsAAB8sRMAAQAAAAIsAACAsRMAAQAAAAMsAACEsRMAAQAAAAQsAACIsRMAAQAAAAUsAACMsRMAAQAAAAYsAACQsRMAAQAAAAcsAACUsRMAAQAAAAgsAACYsRMAAQAAAAksAACcsRMAAQAAAAosAACgsRMAAQAAAAssAACksRMAAQAAAAwsAACosRMAAQAAAA0sAACssRMAAQAAAA4sAACwsRMAAQAAAA8sAAC0sRMAAQAAABAsAAC4sRMAAQAAABEsAAC8sRMAAQAAABIsAADAsRMAAQAAABMsAADEsRMAAQAAABQsAADIsRMAAQAAABUsAADMsRMAAQAAABYsAADQsRMAAQAAABcsAADUsRMAAQAAABgsAADYsRMAAQAAABksAADcsRMAAQAAABosAADgsRMAAQAAABssAADksRMAAQAAABwsAADosRMAAQAAAB0sAADssRMAAQAAAB4sAADwsRMAAQAAAB8sAAD0sRMAAQAAACAsAAD4sRMAAQAAACEsAAD8sRMAAQAAACIsAAAAshMAAQAAACMsAAAEshMAAQAAACQsAAAIshMAAQAAACUsAAAMshMAAQAAACYsAAAQshMAAQAAACcsAAAUshMAAQAAACgsAAAYshMAAQAAACksAAAcshMAAQAAACosAAAgshMAAQAAACssAAAkshMAAQAAACwsAAAoshMAAQAAAC0sAAAsshMAAQAAAC4sAAAwshMAAQAAAC8sAAA0shMAAQAAADAsAAA4shMAAQAAADEsAAA8shMAAQAAADIsAABAshMAAQAAADMsAABEshMAAQAAADQsAABIshMAAQAAADUsAABMshMAAQAAADYsAABQshMAAQAAADcsAABUshMAAQAAADgsAABYshMAAQAAADksAABcshMAAQAAADosAABgshMAAQAAADssAABkshMAAQAAADwsAABoshMAAQAAAD0sAABsshMAAQAAAD4sAABwshMAAQAAAD8sAAB0shMAAQAAAEAsAAB4shMAAQAAAEEsAAB8shMAAQAAAEIsAACAshMAAQAAAEMsAACEshMAAQAAAEQsAACIshMAAQAAAEUsAACMshMAAQAAAEYsAACQshMAAQAAAEcsAACUshMAAQAAAEgsAACYshMAAQAAAEksAACcshMAAQAAAEosAACgshMAAQAAAEssAACkshMAAQAAAEwsAACoshMAAQAAAE0sAACsshMAAQAAAE4sAACwshMAAQAAAE8sAAC0shMAAQAAAFAsAAC4shMAAQAAAFEsAAC8shMAAQAAAFIsAADAshMAAQAAAFMsAADEshMAAQAAAFQsAADIshMAAQAAAFUsAADMshMAAQAAAFYsAADQshMAAQAAAFcsAADUshMAAQAAAFgsAADYshMAAQAAAFksAADcshMAAQAAAFosAADgshMAAQAAAFssAADkshMAAQAAAFwsAADoshMAAQAAAF0sAADsshMAAQAAAF4sAADwshMAAQAAAF8sAAD0shMAAQAAAGAsAAD4shMAAQAAAGEsAAD8shMAAQAAAGIsAAAAsxMAAQAAAGMsAAAEsxMAAQAAAGQsAAAIsxMAAQAAAGUsAAAMsxMAAQAAAGYsAAAQsxMAAQAAAGcsAAAUsxMAAQAAAGgsAAAYsxMAAQAAAGksAAAcsxMAAQAAAGosAAAgsxMAAQAAAGssAAAksxMAAQAAAGwsAAAosxMAAQAAAG0sAAAssxMAAQAAAG4sAAAwsxMAAQAAAG8sAAA0sxMAAQAAAHAsAAA4sxMAAQAAAHIsAAA8sxMAAQAAAHMsAABAsxMAAQAAAHUsAABEsxMAAQAAAHYsAABIsxMAAQAAAH4sAABMsxMAAQAAAH8sAABQsxMAAQAAAIAsAABUsxMAAQAAAIEsAABYsxMAAQAAAIIsAABcsxMAAQAAAIMsAABgsxMAAQAAAIQsAABksxMAAQAAAIUsAABosxMAAQAAAIYsAABssxMAAQAAAIcsAABwsxMAAQAAAIgsAAB0sxMAAQAAAIksAAB4sxMAAQAAAIosAAB8sxMAAQAAAIssAACAsxMAAQAAAIwsAACEsxMAAQAAAI0sAACIsxMAAQAAAI4sAACMsxMAAQAAAI8sAACQsxMAAQAAAJAsAACUsxMAAQAAAJEsAACYsxMAAQAAAJIsAACcsxMAAQAAAJMsAACgsxMAAQAAAJQsAACksxMAAQAAAJUsAACosxMAAQAAAJYsAACssxMAAQAAAJcsAACwsxMAAQAAAJgsAAC0sxMAAQAAAJksAAC4sxMAAQAAAJosAAC8sxMAAQAAAJssAADAsxMAAQAAAJwsAADEsxMAAQAAAJ0sAADIsxMAAQAAAJ4sAADMsxMAAQAAAJ8sAADQsxMAAQAAAKAsAADUsxMAAQAAAKEsAADYsxMAAQAAAKIsAADcsxMAAQAAAKMsAADgsxMAAQAAAKQsAADksxMAAQAAAKUsAADosxMAAQAAAKYsAADssxMAAQAAAKcsAADwsxMAAQAAAKgsAAD0sxMAAQAAAKksAAD4sxMAAQAAAKosAAD8sxMAAQAAAKssAAAAtBMAAQAAAKwsAAAEtBMAAQAAAK0sAAAItBMAAQAAAK4sAAAMtBMAAQAAAK8sAAAQtBMAAQAAALAsAAAUtBMAAQAAALEsAAAYtBMAAQAAALIsAAActBMAAQAAALMsAAAgtBMAAQAAALQsAAAktBMAAQAAALUsAAAotBMAAQAAALYsAAAstBMAAQAAALcsAAAwtBMAAQAAALgsAAA0tBMAAQAAALksAAA4tBMAAQAAALosAAA8tBMAAQAAALssAABAtBMAAQAAALwsAABEtBMAAQAAAL0sAABItBMAAQAAAL4sAABMtBMAAQAAAL8sAABQtBMAAQAAAMAsAABUtBMAAQAAAMEsAABYtBMAAQAAAMIsAABctBMAAQAAAMMsAABgtBMAAQAAAMQsAABktBMAAQAAAMUsAABotBMAAQAAAMYsAABstBMAAQAAAMcsAABwtBMAAQAAAMgsAAB0tBMAAQAAAMksAAB4tBMAAQAAAMosAAB8tBMAAQAAAMssAACAtBMAAQAAAMwsAACEtBMAAQAAAM0sAACItBMAAQAAAM4sAACMtBMAAQAAAM8sAACQtBMAAQAAANAsAACUtBMAAQAAANEsAACYtBMAAQAAANIsAACctBMAAQAAANMsAACgtBMAAQAAANQsAACktBMAAQAAANUsAACotBMAAQAAANYsAACstBMAAQAAANcsAACwtBMAAQAAANgsAAC0tBMAAQAAANksAAC4tBMAAQAAANosAAC8tBMAAQAAANssAADAtBMAAQAAANwsAADEtBMAAQAAAN0sAADItBMAAQAAAN4sAADMtBMAAQAAAN8sAADQtBMAAQAAAOAsAADUtBMAAQAAAOEsAADYtBMAAQAAAOIsAADctBMAAQAAAOMsAADgtBMAAQAAAOssAADktBMAAQAAAOwsAADotBMAAQAAAO0sAADstBMAAQAAAO4sAADwtBMAAQAAAPIsAAD0tBMAAQAAAPMsAAD4tBMAAQAAAAAtAAD8tBMAAQAAAAEtAAAAtRMAAQAAAAItAAAEtRMAAQAAAAMtAAAItRMAAQAAAAQtAAAMtRMAAQAAAAUtAAAQtRMAAQAAAAYtAAAUtRMAAQAAAActAAAYtRMAAQAAAAgtAAActRMAAQAAAAktAAAgtRMAAQAAAAotAAAktRMAAQAAAAstAAAotRMAAQAAAAwtAAAstRMAAQAAAA0tAAAwtRMAAQAAAA4tAAA0tRMAAQAAAA8tAAA4tRMAAQAAABAtAAA8tRMAAQAAABEtAABAtRMAAQAAABItAABEtRMAAQAAABMtAABItRMAAQAAABQtAABMtRMAAQAAABUtAABQtRMAAQAAABYtAABUtRMAAQAAABctAABYtRMAAQAAABgtAABctRMAAQAAABktAABgtRMAAQAAABotAABktRMAAQAAABstAABotRMAAQAAABwtAABstRMAAQAAAB0tAABwtRMAAQAAAB4tAAB0tRMAAQAAAB8tAAB4tRMAAQAAACAtAAB8tRMAAQAAACEtAACAtRMAAQAAACItAACEtRMAAQAAACMtAACItRMAAQAAACQtAACMtRMAAQAAACUtAACQtRMAAQAAACctAACUtRMAAQAAAC0tAACYtRMAAQAAAECmAACctRMAAQAAAEGmAACgtRMAAQAAAEKmAACktRMAAQAAAEOmAACotRMAAQAAAESmAACstRMAAQAAAEWmAACwtRMAAQAAAEamAAC0tRMAAQAAAEemAAC4tRMAAQAAAEimAAC8tRMAAQAAAEmmAADAtRMAAQAAAEqmAADEtRMAAgAAAEumAADMtRMAAgAAAEymAADUtRMAAQAAAE2mAADYtRMAAQAAAE6mAADctRMAAQAAAE+mAADgtRMAAQAAAFCmAADktRMAAQAAAFGmAADotRMAAQAAAFKmAADstRMAAQAAAFOmAADwtRMAAQAAAFSmAAD0tRMAAQAAAFWmAAD4tRMAAQAAAFamAAD8tRMAAQAAAFemAAAAthMAAQAAAFimAAAEthMAAQAAAFmmAAAIthMAAQAAAFqmAAAMthMAAQAAAFumAAAQthMAAQAAAFymAAAUthMAAQAAAF2mAAAYthMAAQAAAF6mAAActhMAAQAAAF+mAAAgthMAAQAAAGCmAAAkthMAAQAAAGGmAAAothMAAQAAAGKmAAAsthMAAQAAAGOmAAAwthMAAQAAAGSmAAA0thMAAQAAAGWmAAA4thMAAQAAAGamAAA8thMAAQAAAGemAABAthMAAQAAAGimAABEthMAAQAAAGmmAABIthMAAQAAAGqmAABMthMAAQAAAGumAABQthMAAQAAAGymAABUthMAAQAAAG2mAABYthMAAQAAAICmAABcthMAAQAAAIGmAABgthMAAQAAAIKmAABkthMAAQAAAIOmAABothMAAQAAAISmAABsthMAAQAAAIWmAABwthMAAQAAAIamAAB0thMAAQAAAIemAAB4thMAAQAAAIimAAB8thMAAQAAAImmAACAthMAAQAAAIqmAACEthMAAQAAAIumAACIthMAAQAAAIymAACMthMAAQAAAI2mAACQthMAAQAAAI6mAACUthMAAQAAAI+mAACYthMAAQAAAJCmAACcthMAAQAAAJGmAACgthMAAQAAAJKmAACkthMAAQAAAJOmAACothMAAQAAAJSmAACsthMAAQAAAJWmAACwthMAAQAAAJamAAC0thMAAQAAAJemAAC4thMAAQAAAJimAAC8thMAAQAAAJmmAADAthMAAQAAAJqmAADEthMAAQAAAJumAADIthMAAQAAACKnAADMthMAAQAAACOnAADQthMAAQAAACSnAADUthMAAQAAACWnAADYthMAAQAAACanAADcthMAAQAAACenAADgthMAAQAAACinAADkthMAAQAAACmnAADothMAAQAAACqnAADsthMAAQAAACunAADwthMAAQAAACynAAD0thMAAQAAAC2nAAD4thMAAQAAAC6nAAD8thMAAQAAAC+nAAAAtxMAAQAAADKnAAAEtxMAAQAAADOnAAAItxMAAQAAADSnAAAMtxMAAQAAADWnAAAQtxMAAQAAADanAAAUtxMAAQAAADenAAAYtxMAAQAAADinAAActxMAAQAAADmnAAAgtxMAAQAAADqnAAAktxMAAQAAADunAAAotxMAAQAAADynAAAstxMAAQAAAD2nAAAwtxMAAQAAAD6nAAA0txMAAQAAAD+nAAA4txMAAQAAAECnAAA8txMAAQAAAEGnAABAtxMAAQAAAEKnAABEtxMAAQAAAEOnAABItxMAAQAAAESnAABMtxMAAQAAAEWnAABQtxMAAQAAAEanAABUtxMAAQAAAEenAABYtxMAAQAAAEinAABctxMAAQAAAEmnAABgtxMAAQAAAEqnAABktxMAAQAAAEunAABotxMAAQAAAEynAABstxMAAQAAAE2nAABwtxMAAQAAAE6nAAB0txMAAQAAAE+nAAB4txMAAQAAAFCnAAB8txMAAQAAAFGnAACAtxMAAQAAAFKnAACEtxMAAQAAAFOnAACItxMAAQAAAFSnAACMtxMAAQAAAFWnAACQtxMAAQAAAFanAACUtxMAAQAAAFenAACYtxMAAQAAAFinAACctxMAAQAAAFmnAACgtxMAAQAAAFqnAACktxMAAQAAAFunAACotxMAAQAAAFynAACstxMAAQAAAF2nAACwtxMAAQAAAF6nAAC0txMAAQAAAF+nAAC4txMAAQAAAGCnAAC8txMAAQAAAGGnAADAtxMAAQAAAGKnAADEtxMAAQAAAGOnAADItxMAAQAAAGSnAADMtxMAAQAAAGWnAADQ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uxMAAQAAAFL/AABYuxMAAQAAAFP/AABcuxMAAQAAAFT/AABguxMAAQAAAFX/AABkuxMAAQAAAFb/AABouxMAAQAAAFf/AABsuxMAAQAAAFj/AABwuxMAAQAAAFn/AAB0uxMAAQAAAFr/AAB4uxMAAQAAAAAEAQB8uxMAAQAAAAEEAQCAuxMAAQAAAAIEAQCEuxMAAQAAAAMEAQCIuxMAAQAAAAQEAQCMuxMAAQAAAAUEAQCQuxMAAQAAAAYEAQCUuxMAAQAAAAcEAQCYuxMAAQAAAAgEAQCcuxMAAQAAAAkEAQCguxMAAQAAAAoEAQCkuxMAAQAAAAsEAQCouxMAAQAAAAwEAQCsuxMAAQAAAA0EAQCwuxMAAQAAAA4EAQC0uxMAAQAAAA8EAQC4uxMAAQAAABAEAQC8uxMAAQAAABEEAQDAuxMAAQAAABIEAQDEuxMAAQAAABMEAQDIuxMAAQAAABQEAQDMuxMAAQAAABUEAQDQuxMAAQAAABYEAQDUuxMAAQAAABcEAQDYuxMAAQAAABgEAQDcuxMAAQAAABkEAQDguxMAAQAAABoEAQDkuxMAAQAAABsEAQDouxMAAQAAABwEAQDsuxMAAQAAAB0EAQDwuxMAAQAAAB4EAQD0uxMAAQAAAB8EAQD4uxMAAQAAACAEAQD8uxMAAQAAACEEAQAAvBMAAQAAACIEAQAEvBMAAQAAACMEAQAIvBMAAQAAACQEAQAMvBMAAQAAACUEAQAQvBMAAQAAACYEAQAUvBMAAQAAACcEAQAYvBMAAQAAACgEAQAcvBMAAQAAACkEAQAgvBMAAQAAACoEAQAkvBMAAQAAACsEAQAovBMAAQAAACwEAQAsvBMAAQAAAC0EAQAwvBMAAQAAAC4EAQA0vBMAAQAAAC8EAQA4vBMAAQAAADAEAQA8vBMAAQAAADEEAQBAvBMAAQAAADIEAQBEvBMAAQAAADMEAQBIvBMAAQAAADQEAQBMvBMAAQAAADUEAQBQvBMAAQAAADYEAQBUvBMAAQAAADcEAQBYvBMAAQAAADgEAQBcvBMAAQAAADkEAQBgvBMAAQAAADoEAQBkvBMAAQAAADsEAQBovBMAAQAAADwEAQBsvBMAAQAAAD0EAQBwvBMAAQAAAD4EAQB0vBMAAQAAAD8EAQB4vBMAAQAAAEAEAQB8vBMAAQAAAEEEAQCAvBMAAQAAAEIEAQCEvBMAAQAAAEMEAQCIvBMAAQAAAEQEAQCMvBMAAQAAAEUEAQCQvBMAAQAAAEYEAQCUvBMAAQAAAEcEAQCYvBMAAQAAAEgEAQCcvBMAAQAAAEkEAQCgvBMAAQAAAEoEAQCkvBMAAQAAAEsEAQCovBMAAQAAAEwEAQCsvBMAAQAAAE0EAQCwvBMAAQAAAE4EAQC0vBMAAQAAAE8EAQC4vBMAAQAAALAEAQC8vBMAAQAAALEEAQDAvBMAAQAAALIEAQDEvBMAAQAAALMEAQDIvBMAAQAAALQEAQDMvBMAAQAAALUEAQDQvBMAAQAAALYEAQDUvBMAAQAAALcEAQDYvBMAAQAAALgEAQDcvBMAAQAAALkEAQDgvBMAAQAAALoEAQDkvBMAAQAAALsEAQDovBMAAQAAALwEAQDsvBMAAQAAAL0EAQDwvBMAAQAAAL4EAQD0vBMAAQAAAL8EAQD4vBMAAQAAAMAEAQD8vBMAAQAAAMEEAQAAvRMAAQAAAMIEAQAEvRMAAQAAAMMEAQAIvRMAAQAAAMQEAQAMvRMAAQAAAMUEAQAQvRMAAQAAAMYEAQAUvRMAAQAAAMcEAQAYvRMAAQAAAMgEAQAcvRMAAQAAAMkEAQAgvRMAAQAAAMoEAQAkvRMAAQAAAMsEAQAovRMAAQAAAMwEAQAsvRMAAQAAAM0EAQAwvRMAAQAAAM4EAQA0vRMAAQAAAM8EAQA4vRMAAQAAANAEAQA8vRMAAQAAANEEAQBAvRMAAQAAANIEAQBEvRMAAQAAANMEAQBIvRMAAQAAANgEAQBMvRMAAQAAANkEAQBQvRMAAQAAANoEAQBUvRMAAQAAANsEAQBYvRMAAQAAANwEAQBcvRMAAQAAAN0EAQBgvRMAAQAAAN4EAQBkvRMAAQAAAN8EAQBovRMAAQAAAOAEAQBsvRMAAQAAAOEEAQBwvRMAAQAAAOIEAQB0vRMAAQAAAOMEAQB4vRMAAQAAAOQEAQB8vRMAAQAAAOUEAQCAvRMAAQAAAOYEAQCEvRMAAQAAAOcEAQCIvRMAAQAAAOgEAQCMvRMAAQAAAOkEAQCQvRMAAQAAAOoEAQCUvRMAAQAAAOsEAQCYvRMAAQAAAOwEAQCcvRMAAQAAAO0EAQCgvRMAAQAAAO4EAQCkvRMAAQAAAO8EAQCovRMAAQAAAPAEAQCsvRMAAQAAAPEEAQCwvRMAAQAAAPIEAQC0vRMAAQAAAPMEAQC4vRMAAQAAAPQEAQC8vRMAAQAAAPUEAQDAvRMAAQAAAPYEAQDEvRMAAQAAAPcEAQDIvRMAAQAAAPgEAQDMvRMAAQAAAPkEAQDQvRMAAQAAAPoEAQDUvRMAAQAAAPsEAQDYvRMAAQAAAHAFAQDcvRMAAQAAAHEFAQDgvRMAAQAAAHIFAQDkvRMAAQAAAHMFAQDovRMAAQAAAHQFAQDsvRMAAQAAAHUFAQDwvRMAAQAAAHYFAQD0vRMAAQAAAHcFAQD4vRMAAQAAAHgFAQD8vRMAAQAAAHkFAQAAvhMAAQAAAHoFAQAEvhMAAQAAAHwFAQAIvhMAAQAAAH0FAQAMvhMAAQAAAH4FAQAQvhMAAQAAAH8FAQAUvhMAAQAAAIAFAQAYvhMAAQAAAIEFAQAcvhMAAQAAAIIFAQAgvhMAAQAAAIMFAQAkvhMAAQAAAIQFAQAovhMAAQAAAIUFAQAsvhMAAQAAAIYFAQAwvhMAAQAAAIcFAQA0vhMAAQAAAIgFAQA4vhMAAQAAAIkFAQA8vhMAAQAAAIoFAQBAvhMAAQAAAIwFAQBEvhMAAQAAAI0FAQBIvhMAAQAAAI4FAQBMvhMAAQAAAI8FAQBQvhMAAQAAAJAFAQBUvhMAAQAAAJEFAQBYvhMAAQAAAJIFAQBcvhMAAQAAAJQFAQBgvhMAAQAAAJUFAQBkvhMAAQAAAJcFAQBovhMAAQAAAJgFAQBsvhMAAQAAAJkFAQBwvhMAAQAAAJoFAQB0vhMAAQAAAJsFAQB4vhMAAQAAAJwFAQB8vhMAAQAAAJ0FAQCAvhMAAQAAAJ4FAQCEvhMAAQAAAJ8FAQCIvhMAAQAAAKAFAQCMvhMAAQAAAKEFAQCQvhMAAQAAAKMFAQCUvhMAAQAAAKQFAQCYvhMAAQAAAKUFAQCcvhMAAQAAAKYFAQCgvhMAAQAAAKcFAQCkvhMAAQAAAKgFAQCovhMAAQAAAKkFAQCsvhMAAQAAAKoFAQCwvhMAAQAAAKsFAQC0vhMAAQAAAKwFAQC4vhMAAQAAAK0FAQC8vhMAAQAAAK4FAQDAvhMAAQAAAK8FAQDEvhMAAQAAALAFAQDIvhMAAQAAALEFAQDMvhMAAQAAALMFAQDQvhMAAQAAALQFAQDUvhMAAQAAALUFAQDYvhMAAQAAALYFAQDcvhMAAQAAALcFAQDgvhMAAQAAALgFAQDkvhMAAQAAALkFAQDovhMAAQAAALsFAQDsvhMAAQAAALwFAQDwvhMAAQAAAIAMAQD0vhMAAQAAAIEMAQD4vhMAAQAAAIIMAQD8vhMAAQAAAIMMAQAAvxMAAQAAAIQMAQAEvxMAAQAAAIUMAQAIvxMAAQAAAIYMAQAMvxMAAQAAAIcMAQAQvxMAAQAAAIgMAQAUvxMAAQAAAIkMAQAYvxMAAQAAAIoMAQAcvxMAAQAAAIsMAQAgvxMAAQAAAIwMAQAkvxMAAQAAAI0MAQAovxMAAQAAAI4MAQAsvxMAAQAAAI8MAQAwvxMAAQAAAJAMAQA0vxMAAQAAAJEMAQA4vxMAAQAAAJIMAQA8vxMAAQAAAJMMAQBAvxMAAQAAAJQMAQBEvxMAAQAAAJUMAQBIvxMAAQAAAJYMAQBMvxMAAQAAAJcMAQBQvxMAAQAAAJgMAQBUvxMAAQAAAJkMAQBYvxMAAQAAAJoMAQBcvxMAAQAAAJsMAQBgvxMAAQAAAJwMAQBkvxMAAQAAAJ0MAQBovxMAAQAAAJ4MAQBsvxMAAQAAAJ8MAQBwvxMAAQAAAKAMAQB0vxMAAQAAAKEMAQB4vxMAAQAAAKIMAQB8vxMAAQAAAKMMAQCAvxMAAQAAAKQMAQCEvxMAAQAAAKUMAQCIvxMAAQAAAKYMAQCMvxMAAQAAAKcMAQCQvxMAAQAAAKgMAQCUvxMAAQAAAKkMAQCYvxMAAQAAAKoMAQCcvxMAAQAAAKsMAQCgvxMAAQAAAKwMAQCkvxMAAQAAAK0MAQCovxMAAQAAAK4MAQCsvxMAAQAAAK8MAQCwvxMAAQAAALAMAQC0vxMAAQAAALEMAQC4vxMAAQAAALIMAQC8vxMAAQAAAMAMAQDAvxMAAQAAAMEMAQDEvxMAAQAAAMIMAQDIvxMAAQAAAMMMAQDMvxMAAQAAAMQMAQDQvxMAAQAAAMUMAQDUvxMAAQAAAMYMAQDYvxMAAQAAAMcMAQDcvxMAAQAAAMgMAQDgvxMAAQAAAMkMAQDkvxMAAQAAAMoMAQDovxMAAQAAAMsMAQDsvxMAAQAAAMwMAQDwvxMAAQAAAM0MAQD0vxMAAQAAAM4MAQD4vxMAAQAAAM8MAQD8vxMAAQAAANAMAQAAwBMAAQAAANEMAQAEwBMAAQAAANIMAQAIwBMAAQAAANMMAQAMwBMAAQAAANQMAQAQwBMAAQAAANUMAQAUwBMAAQAAANYMAQAYwBMAAQAAANcMAQAcwBMAAQAAANgMAQAgwBMAAQAAANkMAQAkwBMAAQAAANoMAQAowBMAAQAAANsMAQAswBMAAQAAANwMAQAwwBMAAQAAAN0MAQA0wBMAAQAAAN4MAQA4wBMAAQAAAN8MAQA8wBMAAQAAAOAMAQBAwBMAAQAAAOEMAQBEwBMAAQAAAOIMAQBIwBMAAQAAAOMMAQBMwBMAAQAAAOQMAQBQwBMAAQAAAOUMAQBUwBMAAQAAAOYMAQBYwBMAAQAAAOcMAQBcwBMAAQAAAOgMAQBgwBMAAQAAAOkMAQBkwBMAAQAAAOoMAQBowBMAAQAAAOsMAQBswBMAAQAAAOwMAQBwwBMAAQAAAO0MAQB0wBMAAQAAAO4MAQB4wBMAAQAAAO8MAQB8wBMAAQAAAPAMAQCAwBMAAQAAAPEMAQCEwBMAAQAAAPIMAQCIwBMAAQAAAFANAQCMwBMAAQAAAFENAQCQwBMAAQAAAFINAQCUwBMAAQAAAFMNAQCYwBMAAQAAAFQNAQCcwBMAAQAAAFUNAQCgwBMAAQAAAFYNAQCkwBMAAQAAAFcNAQCowBMAAQAAAFgNAQCswBMAAQAAAFkNAQCwwBMAAQAAAFoNAQC0wBMAAQAAAFsNAQC4wBMAAQAAAFwNAQC8wBMAAQAAAF0NAQDAwBMAAQAAAF4NAQDEwBMAAQAAAF8NAQDIwBMAAQAAAGANAQDMwBMAAQAAAGENAQDQwBMAAQAAAGINAQDUwBMAAQAAAGMNAQDYwBMAAQAAAGQNAQDcwBMAAQAAAGUNAQDgwBMAAQAAAHANAQDkwBMAAQAAAHENAQDowBMAAQAAAHINAQDswBMAAQAAAHMNAQDwwBMAAQAAAHQNAQD0wBMAAQAAAHUNAQD4wBMAAQAAAHYNAQD8wBMAAQAAAHcNAQAAwRMAAQAAAHgNAQAEwRMAAQAAAHkNAQAIwRMAAQAAAHoNAQAMwRMAAQAAAHsNAQAQwRMAAQAAAHwNAQAUwRMAAQAAAH0NAQAYwRMAAQAAAH4NAQAcwRMAAQAAAH8NAQAgwRMAAQAAAIANAQAkwRMAAQAAAIENAQAowRMAAQAAAIINAQAswRMAAQAAAIMNAQAwwRMAAQAAAIQNAQA0wRMAAQAAAIUNAQA4wRMAAQAAAKAYAQA8wRMAAQAAAKEYAQBAwRMAAQAAAKIYAQBEwRMAAQAAAKMYAQBIwRMAAQAAAKQYAQBMwRMAAQAAAKUYAQBQwRMAAQAAAKYYAQBUwRMAAQAAAKcYAQBYwRMAAQAAAKgYAQBcwRMAAQAAAKkYAQBgwRMAAQAAAKoYAQBkwRMAAQAAAKsYAQBowRMAAQAAAKwYAQBswRMAAQAAAK0YAQBwwRMAAQAAAK4YAQB0wRMAAQAAAK8YAQB4wRMAAQAAALAYAQB8wRMAAQAAALEYAQCAwRMAAQAAALIYAQCEwRMAAQAAALMYAQCIwRMAAQAAALQYAQCMwRMAAQAAALUYAQCQwRMAAQAAALYYAQCUwRMAAQAAALcYAQCYwRMAAQAAALgYAQCcwRMAAQAAALkYAQCgwRMAAQAAALoYAQCkwRMAAQAAALsYAQCowRMAAQAAALwYAQCswRMAAQAAAL0YAQCwwRMAAQAAAL4YAQC0wRMAAQAAAL8YAQC4wRMAAQAAAMAYAQC8wRMAAQAAAMEYAQDAwRMAAQAAAMIYAQDEwRMAAQAAAMMYAQDIwRMAAQAAAMQYAQDMwRMAAQAAAMUYAQDQwRMAAQAAAMYYAQDUwRMAAQAAAMcYAQDYwRMAAQAAAMgYAQDcwRMAAQAAAMkYAQDgwRMAAQAAAMoYAQDkwRMAAQAAAMsYAQDowRMAAQAAAMwYAQDswRMAAQAAAM0YAQDwwRMAAQAAAM4YAQD0wRMAAQAAAM8YAQD4wRMAAQAAANAYAQD8wRMAAQAAANEYAQAAwhMAAQAAANIYAQAEwhMAAQAAANMYAQAIwhMAAQAAANQYAQAMwhMAAQAAANUYAQAQwhMAAQAAANYYAQAUwhMAAQAAANcYAQAYwhMAAQAAANgYAQAcwhMAAQAAANkYAQAgwhMAAQAAANoYAQAkwhMAAQAAANsYAQAowhMAAQAAANwYAQAswhMAAQAAAN0YAQAwwhMAAQAAAN4YAQA0whMAAQAAAN8YAQA4whMAAQAAAEBuAQA8whMAAQAAAEFuAQBAwhMAAQAAAEJuAQBEwhMAAQAAAENuAQBIwhMAAQAAAERuAQBMwhMAAQAAAEVuAQBQwhMAAQAAAEZuAQBUwhMAAQAAAEduAQBYwhMAAQAAAEhuAQBc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AgAAAKtVFABhAAAALgAAACMAAACrVRQAYQAAAGgAAAArAAAAKQAAAP////9leGNlZWRlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2FwdHVyaW5nIGdyb3VwcyAoAAAAdFYUADEAAABsVhQAAQAAAGludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGZvdW5kIGluIGNoYXJhY3RlciBjbGFzc2ludmFsaWQgY2hhcmFjdGVyIGNsYXNzIHJhbmdlLCB0aGUgc3RhcnQgbXVzdCBiZSA8PSB0aGUgZW5kaW52YWxpZCByYW5nZSBib3VuZGFyeSwgbXVzdCBiZSBhIGxpdGVyYWx1bmNsb3NlZCBjaGFyYWN0ZXIgY2xhc3NkZWNpbWFsIGxpdGVyYWwgZW1wdHlkZWNpbWFsIGxpdGVyYWwgaW52YWxpZGhleGFkZWNpbWFsIGxpdGVyYWwgZW1wdHloZXhhZGVjaW1hbCBsaXRlcmFsIGlzIG5vdCBhIFVuaWNvZGUgc2NhbGFyIHZhbHVlaW52YWxpZCBoZXhhZGVjaW1hbCBkaWdpdGluY29tcGxldGUgZXNjYXBlIHNlcXVlbmNlLCByZWFjaGVkIGVuZCBvZiBwYXR0ZXJuIHByZW1hdHVyZWx5dW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZWRhbmdsaW5nIGZsYWcgbmVnYXRpb24gb3BlcmF0b3JkdXBsaWNhdGUgZmxhZ2ZsYWcgbmVnYXRpb24gb3BlcmF0b3IgcmVwZWF0ZWRleHBlY3RlZCBmbGFnIGJ1dCBnb3QgZW5kIG9mIHJlZ2V4dW5yZWNvZ25pemVkIGZsYWdkdXBsaWNhdGUgY2FwdHVyZSBncm91cCBuYW1lZW1wdHkgY2FwdHVyZSBncm91cCBuYW1laW52YWxpZCBjYXB0dXJlIGdyb3VwIGNoYXJhY3RlcnVuY2xvc2VkIGNhcHR1cmUgZ3JvdXAgbmFtZXVuY2xvc2VkIGdyb3VwdW5vcGVuZWQgZ3JvdXBleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5lc3RlZCBwYXJlbnRoZXNlcy9icmFja2V0cyAoVlkUADoAAABsVhQAAQAAAGludmFsaWQgcmVwZXRpdGlvbiBjb3VudCByYW5nZSwgdGhlIHN0YXJ0IG11c3QgYmUgPD0gdGhlIGVuZHJlcGV0aXRpb24gcXVhbnRpZmllciBleHBlY3RzIGEgdmFsaWQgZGVjaW1hbHVuY2xvc2VkIGNvdW50ZWQgcmVwZXRpdGlvbnJlcGV0aXRpb24gb3BlcmF0b3IgbWlzc2luZyBleHByZXNzaW9uc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IGFzc2VydGlvbiBpcyBlaXRoZXIgdW5jbG9zZWQgb3IgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0ZXJ1bnJlY29nbml6ZWQgc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IGFzc2VydGlvbiwgdmFsaWQgY2hvaWNlcyBhcmU6IHN0YXJ0LCBlbmQsIHN0YXJ0LWhhbGYgb3IgZW5kLWhhbGZmb3VuZCBlaXRoZXIgdGhlIGJlZ2lubmluZyBvZiBhIHNwZWNpYWwgd29yZCBib3VuZGFyeSBvciBhIGJvdW5kZWQgcmVwZXRpdGlvbiBvbiBhIFxiIHdpdGggYW4gb3BlbmluZyBicmFjZSwgYnV0IG5vIGNsb3NpbmcgYnJhY2VpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzYmFja3JlZmVyZW5jZXMgYXJlIG5vdCBzdXBwb3J0ZWRsb29rLWFyb3VuZCwgaW5jbHVkaW5nIGxvb2stYWhlYWQgYW5kIGxvb2stYmVoaW5kLCBpcyBub3Qgc3VwcG9ydGVkL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC41L3NyYy9hc3QvbW9kLnJzYWxudW1hbHBoYWFzY2lpYmxhbmtjbnRybGRpZ2l0Z3JhcGhsb3dlcnByaW50cHVuY3RzcGFjZXVwcGVyeGRpZ2l0A1wUAGMAAADnBAAAFAAAAANcFABjAAAA8wQAACMAAAADXBQAYwAAAA8GAAAUAAAAA1wUAGMAAACHBgAAGwAAAANcFABjAAAAigYAABsAAAADXBQAYwAAAI0GAAAbAAAAA1wUAGMAAACQBgAAGwAAAANcFABjAAAAxAYAAB8AAAADXBQAYwAAAMcGAAAfAAAAA1wUAGMAAADLBgAAGwAAAANcFABjAAAAzAYAABsAAABtaWQgPiBsZW4AAABYXRQACQAAAGF0dGVtcHQgdG8gam9pbiBpbnRvIGNvbGxlY3Rpb24gd2l0aCBsZW4gPiB1c2l6ZTo6TUFYL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAAAAoV0UAEgAAACaAAAACgAAAKFdFABIAAAAnQAAABYAAAChXRQASAAAAKAAAAAMAAAAoV0UAEgAAACxAAAAFgAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzbWlkID4gbGVui14UAAkAAAAsXhQAXwAAAE4AAAAfAAAALF4UAF8AAABIAAAAFwAAADAxMjM0NTY3ODlhYmNkZWYvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5yc8xeFABQAAAALgIAABEAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzLF8UAFgAAADBBwAACQAAAEIGAAAUAAAABAAAAEMGAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAADPXxQASwAAAH8FAAAaAAAAz18UAEsAAAB9BQAAGwAAAM9fFABLAAAAWAQAABIAAABEBgAADAAAAAQAAADEAAAAAAAAAAQAAAAEAAAAxQAAAEZyb21VdGY4RXJyb3JieXRlc2Vycm9yRW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAARQYAAAwAAAAEAAAARgYAAEcGAABjBAAAL3J1c3RjLzE3MDY3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Gf8AAKAEAQCpBAEAMA0BADkNAQBADQEASQ0BAGYQAQBvEAEA8BABAPkQAQA2EQEAPxEBANARAQDZEQEA8BIBAPkSAQBQFAEAWRQBANAUAQDZFAEAUBYBAFkWAQDAFgEAyRYBANAWAQDjFgEAMBcBADkXAQDgGAEA6RgBAFAZAQBZGQEA8BsBAPkbAQBQHAEAWRwBAFAdAQBZHQEAoB0BAKkdAQBQHwEAWR8BADBhAQA5YQEAYGoBAGlqAQDAagEAyWoBAFBrAQBZawEAcG0BAHltAQDwzAEA+cwBAM7XAQD/1wEAQOEBAEnhAQDw4gEA+eIBAPDkAQD55AEA8eUBAPrlAQBQ6QEAWekBAPD7AQD5+wEAYW55YXNjaWlsYRQAYwAAAP0BAABAAAAAQVNDSUlBc3NpZ25lZEFueWxhFABjAAAABgIAAC4AAABhZ2VhaGV4QVNDSUlfSGV4X0RpZ2l0YWxwaGFBbHBoYWJldGljYWxwaGFiZXRpY2FzY2lpaGV4ZGlnaXRiY0JpZGlfQ2xhc3NiaWRpY0JpZGlfQ29udHJvbGJpZGljbGFzc2JpZGljb250cm9sYmlkaW1CaWRpX01pcnJvcmVkYmlkaW1pcnJvcmVkYmlkaW1pcnJvcmluZ2dseXBoQmlkaV9NaXJyb3JpbmdfR2x5cGhiaWRpcGFpcmVkYnJhY2tldEJpZGlfUGFpcmVkX0JyYWNrZXRiaWRpcGFpcmVkYnJhY2tldHR5cGVCaWRpX1BhaXJlZF9CcmFja2V0X1R5cGVibGtCbG9ja2Jsb2NrYm1nYnBiYnB0Y2Fub25pY2FsY29tYmluaW5nY2xhc3NDYW5vbmljYWxfQ29tYmluaW5nX0NsYXNzY2FzZWRDYXNlZGNhc2Vmb2xkaW5nQ2FzZV9Gb2xkaW5nY2FzZWlnbm9yYWJsZUNhc2VfSWdub3JhYmxlY2NjY2VDb21wb3NpdGlvbl9FeGNsdXNpb25jaGFuZ2Vzd2hlbmNhc2Vmb2xkZWRDaGFuZ2VzX1doZW5fQ2FzZWZvbGRlZGNoYW5nZXN3aGVuY2FzZW1hcHBlZENoYW5nZXNfV2hlbl9DYXNlbWFwcGVkY2hhbmdlc3doZW5sb3dlcmNhc2VkQ2hhbmdlc19XaGVuX0xvd2VyY2FzZWRjaGFuZ2Vzd2hlbm5ma2NjYXNlZm9sZGVkQ2hhbmdlc19XaGVuX05GS0NfQ2FzZWZvbGRlZGNoYW5nZXN3aGVudGl0bGVjYXNlZENoYW5nZXNfV2hlbl9UaXRsZWNhc2VkY2hhbmdlc3doZW51cHBlcmNhc2VkQ2hhbmdlc19XaGVuX1VwcGVyY2FzZWRjaWNqa2FjY291bnRpbmdudW1lcmlja0FjY291bnRpbmdOdW1lcmljY2prY29tcGF0aWJpbGl0eXZhcmlhbnRrQ29tcGF0aWJpbGl0eVZhcmlhbnRjamtpaWNvcmVrSUlDb3JlY2praXJnZ3NvdXJjZWtJUkdfR1NvdXJjZWNqa2lyZ2hzb3VyY2VrSVJHX0hTb3VyY2Vjamtpcmdqc291cmNla0lSR19KU291cmNlY2praXJna3Bzb3VyY2VrSVJHX0tQU291cmNlY2praXJna3NvdXJjZWtJUkdfS1NvdXJjZWNqa2lyZ21zb3VyY2VrSVJHX01Tb3VyY2Vjamtpcmdzc291cmNla0lSR19TU291cmNlY2praXJndHNvdXJjZWtJUkdfVFNvdXJjZWNqa2lyZ3Vrc291cmNla0lSR19VS1NvdXJjZWNqa2lyZ3Vzb3VyY2VrSVJHX1VTb3VyY2Vjamtpcmd2c291cmNla0lSR19WU291cmNlY2prb3RoZXJudW1lcmlja090aGVyTnVtZXJpY2Nqa3ByaW1hcnludW1lcmlja1ByaW1hcnlOdW1lcmljY2prcnN1bmljb2Rla1JTVW5pY29kZWNvbXBleEZ1bGxfQ29tcG9zaXRpb25fRXhjbHVzaW9uY29tcG9zaXRpb25leGNsdXNpb25jd2NmY3djbWN3a2NmY3dsY3d0Y3d1ZGFzaERhc2hkZWNvbXBvc2l0aW9ubWFwcGluZ0RlY29tcG9zaXRpb25fTWFwcGluZ2RlY29tcG9zaXRpb250eXBlRGVjb21wb3NpdGlvbl9UeXBlZGVmYXVsdGlnbm9yYWJsZWNvZGVwb2ludERlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnRkZXBEZXByZWNhdGVkZGVwcmVjYXRlZGRpZGlhRGlhY3JpdGljZGlhY3JpdGljZG1kdGVhRWFzdF9Bc2lhbl9XaWR0aGVhc3Rhc2lhbndpZHRoZWJhc2VFbW9qaV9Nb2RpZmllcl9CYXNlZWNvbXBFbW9qaV9Db21wb25lbnRlbW9kRW1vamlfTW9kaWZpZXJlbW9qaUVtb2ppZW1vamljb21wb25lbnRlbW9qaW1vZGlmaWVyZW1vamltb2RpZmllcmJhc2VlbW9qaXByZXNlbnRhdGlvbkVtb2ppX1ByZXNlbnRhdGlvbmVwcmVzZXF1aWRlb0VxdWl2YWxlbnRfVW5pZmllZF9JZGVvZ3JhcGhlcXVpdmFsZW50dW5pZmllZGlkZW9ncmFwaGV4cGFuZHNvbm5mY0V4cGFuZHNfT25fTkZDZXhwYW5kc29ubmZkRXhwYW5kc19Pbl9ORkRleHBhbmRzb25uZmtjRXhwYW5kc19Pbl9ORktDZXhwYW5kc29ubmZrZEV4cGFuZHNfT25fTkZLRGV4dEV4dGVuZGVyZXh0ZW5kZWRwaWN0b2dyYXBoaWNFeHRlbmRlZF9QaWN0b2dyYXBoaWNleHRlbmRlcmV4dHBpY3RmY25ma2NGQ19ORktDX0Nsb3N1cmVmY25ma2NjbG9zdXJlZnVsbGNvbXBvc2l0aW9uZXhjbHVzaW9uZ2NnY2JnZW5lcmFsY2F0ZWdvcnlncmFwaGVtZWJhc2VHcmFwaGVtZV9CYXNlZ3JhcGhlbWVjbHVzdGVyYnJlYWtncmFwaGVtZWV4dGVuZEdyYXBoZW1lX0V4dGVuZGdyYXBoZW1lbGlua0dyYXBoZW1lX0xpbmtncmJhc2VncmV4dGdybGlua2hhbmd1bHN5bGxhYmxldHlwZUhhbmd1bF9TeWxsYWJsZV9UeXBlaGV4SGV4X0RpZ2l0aGV4ZGlnaXRoc3RoeXBoZW5IeXBoZW5pZGNJRF9Db250aW51ZWlkY29tcGF0bWF0aGNvbnRpbnVlSURfQ29tcGF0X01hdGhfQ29udGludWVpZGNvbXBhdG1hdGhzdGFydElEX0NvbXBhdF9NYXRoX1N0YXJ0aWRjb250aW51ZWlkZW9JZGVvZ3JhcGhpY2lkZW9ncmFwaGljaWRzSURfU3RhcnRpZHNiSURTX0JpbmFyeV9PcGVyYXRvcmlkc2JpbmFyeW9wZXJhdG9yaWRzdElEU19UcmluYXJ5X09wZXJhdG9yaWRzdGFydGlkc3RyaW5hcnlvcGVyYXRvcmlkc3VJRFNfVW5hcnlfT3BlcmF0b3JpZHN1bmFyeW9wZXJhdG9yaW5jYkluZGljX0Nvbmp1bmN0X0JyZWFraW5kaWNjb25qdW5jdGJyZWFraW5kaWNwb3NpdGlvbmFsY2F0ZWdvcnlJbmRpY19Qb3NpdGlvbmFsX0NhdGVnb3J5aW5kaWNzeWxsYWJpY2NhdGVnb3J5SW5kaWNfU3lsbGFiaWNfQ2F0ZWdvcnlpbnBjaW5zY2lzY0lTT19Db21tZW50amFtb3Nob3J0bmFtZUphbW9fU2hvcnRfTmFtZWpnSm9pbmluZ19Hcm91cGpvaW5jSm9pbl9Db250cm9sam9pbmNvbnRyb2xqb2luaW5nZ3JvdXBqb2luaW5ndHlwZUpvaW5pbmdfVHlwZWpzbmp0a2FjY291bnRpbmdudW1lcmlja2NvbXBhdGliaWxpdHl2YXJpYW50a2VoY2F0a0VIX0NhdGtlaGRlc2NrRUhfRGVzY2tlaGhna0VIX0hHa2VoaWZhb2tFSF9JRkFPa2VoanNlc2hrRUhfSlNlc2hrZWhub21pcnJvcmtFSF9Ob01pcnJvcmtlaG5vcm90YXRla0VIX05vUm90YXRla2lpY29yZWtpcmdnc291cmNla2lyZ2hzb3VyY2VraXJnanNvdXJjZWtpcmdrcHNvdXJjZWtpcmdrc291cmNla2lyZ21zb3VyY2VraXJnc3NvdXJjZWtpcmd0c291cmNla2lyZ3Vrc291cmNla2lyZ3Vzb3VyY2VraXJndnNvdXJjZWtvdGhlcm51bWVyaWNrcHJpbWFyeW51bWVyaWNrcnN1bmljb2RlbGJMaW5lX0JyZWFrTG93ZXJjYXNlX01hcHBpbmdsaW5lYnJlYWtsb2VMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbmxvZ2ljYWxvcmRlcmV4Y2VwdGlvbmxvd2VyTG93ZXJjYXNlbG93ZXJjYXNlbG93ZXJjYXNlbWFwcGluZ21hdGhNYXRobWNtTW9kaWZpZXJfQ29tYmluaW5nX01hcmttb2RpZmllcmNvbWJpbmluZ21hcmtuYU5hbWVuYTFVbmljb2RlXzFfTmFtZW5hbWVuYW1lYWxpYXNOYW1lX0FsaWFzbmNoYXJOb25jaGFyYWN0ZXJfQ29kZV9Qb2ludG5mY3FjTkZDX1F1aWNrX0NoZWNrbmZjcXVpY2tjaGVja25mZHFjTkZEX1F1aWNrX0NoZWNrbmZkcXVpY2tjaGVja25ma2NjYXNlZm9sZE5GS0NfQ2FzZWZvbGRuZmtjY2ZuZmtjcWNORktDX1F1aWNrX0NoZWNrbmZrY3F1aWNrY2hlY2tuZmtjc2NmTkZLQ19TaW1wbGVfQ2FzZWZvbGRuZmtjc2ltcGxlY2FzZWZvbGRuZmtkcWNORktEX1F1aWNrX0NoZWNrbmZrZHF1aWNrY2hlY2tub25jaGFyYWN0ZXJjb2RlcG9pbnRudE51bWVyaWNfVHlwZW51bWVyaWN0eXBlbnVtZXJpY3ZhbHVlTnVtZXJpY19WYWx1ZW52b2FscGhhT3RoZXJfQWxwaGFiZXRpY29jb21tZW50b2RpT3RoZXJfRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludG9ncmV4dE90aGVyX0dyYXBoZW1lX0V4dGVuZG9pZGNPdGhlcl9JRF9Db250aW51ZW9pZHNPdGhlcl9JRF9TdGFydG9sb3dlck90aGVyX0xvd2VyY2FzZW9tYXRoT3RoZXJfTWF0aG90aGVyYWxwaGFiZXRpY290aGVyZGVmYXVsdGlnbm9yYWJsZWNvZGVwb2ludG90aGVyZ3JhcGhlbWVleHRlbmRvdGhlcmlkY29udGludWVvdGhlcmlkc3RhcnRvdGhlcmxvd2VyY2FzZW90aGVybWF0aG90aGVydXBwZXJjYXNlT3RoZXJfVXBwZXJjYXNlb3VwcGVycGF0c3luUGF0dGVybl9TeW50YXhwYXR0ZXJuc3ludGF4cGF0dGVybndoaXRlc3BhY2VQYXR0ZXJuX1doaXRlX1NwYWNlcGF0d3NwY21QcmVwZW5kZWRfQ29uY2F0ZW5hdGlvbl9NYXJrcHJlcGVuZGVkY29uY2F0ZW5hdGlvbm1hcmtxbWFya1F1b3RhdGlvbl9NYXJrcXVvdGF0aW9ubWFya3JhZGljYWxSYWRpY2FscmVnaW9uYWxpbmRpY2F0b3JSZWdpb25hbF9JbmRpY2F0b3JyaXNic2NmU2ltcGxlX0Nhc2VfRm9sZGluZ3NjcmlwdHNjcmlwdGV4dGVuc2lvbnNzY3hzZFNvZnRfRG90dGVkc2VudGVuY2VicmVha3NlbnRlbmNldGVybWluYWxTZW50ZW5jZV9UZXJtaW5hbHNmY3NpbXBsZWNhc2Vmb2xkaW5nc2ltcGxlbG93ZXJjYXNlbWFwcGluZ1NpbXBsZV9Mb3dlcmNhc2VfTWFwcGluZ3NpbXBsZXRpdGxlY2FzZW1hcHBpbmdTaW1wbGVfVGl0bGVjYXNlX01hcHBpbmdzaW1wbGV1cHBlcmNhc2VtYXBwaW5nU2ltcGxlX1VwcGVyY2FzZV9NYXBwaW5nc2xjc29mdGRvdHRlZHNwYWNlV2hpdGVfU3BhY2VzdGNzdGVybXN1Y3RjVGl0bGVjYXNlX01hcHBpbmd0ZXJtVGVybWluYWxfUHVuY3R1YXRpb250ZXJtaW5hbHB1bmN0dWF0aW9udGl0bGVjYXNlbWFwcGluZ3VjVXBwZXJjYXNlX01hcHBpbmd1aWRlb1VuaWZpZWRfSWRlb2dyYXBodW5pY29kZTFuYW1ldW5pY29kZXJhZGljYWxzdHJva2V1bmlmaWVkaWRlb2dyYXBodXBwZXJVcHBlcmNhc2V1cHBlcmNhc2V1cHBlcmNhc2VtYXBwaW5ndXJzdmFyaWF0aW9uc2VsZWN0b3JWYXJpYXRpb25fU2VsZWN0b3J2ZXJ0aWNhbG9yaWVudGF0aW9uVmVydGljYWxfT3JpZW50YXRpb252b3Zzd2J3aGl0ZXNwYWNld29yZGJyZWFrd3NwYWNleGlkY1hJRF9Db250aW51ZXhpZGNvbnRpbnVleGlkc1hJRF9TdGFydHhpZHN0YXJ0eG9uZmN4b25mZHhvbmZrY3hvbmZrZAAAAEB+FAADAAAAXGIUAAMAAABDfhQABAAAAEd+FAAPAAAAVn4UAAUAAABbfhQACgAAAGV+FAAKAAAAW34UAAoAAABvfhQADQAAAEd+FAAPAAAAfH4UAAIAAAB+fhQACgAAAIh+FAAFAAAAjX4UAAwAAACZfhQACQAAAH5+FAAKAAAAon4UAAsAAACNfhQADAAAAK1+FAAFAAAAsn4UAA0AAAC/fhQADAAAALJ+FAANAAAAy34UABIAAADdfhQAFAAAAPF+FAARAAAAAn8UABMAAAAVfxQAFQAAACp/FAAYAAAAQn8UAAMAAABFfxQABQAAAEp/FAAFAAAARX8UAAUAAABPfxQAAwAAAN1+FAAUAAAAUn8UAAMAAAACfxQAEwAAAFV/FAADAAAAKn8UABgAAABYfxQAFwAAAG9/FAAZAAAAiH8UAAUAAACNfxQABQAAAJJ/FAALAAAA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cmVuY3lzeW1ib2xDdXJyZW5jeV9TeW1ib2xkYXNocHVuY3R1YXRpb25EYXNoX1B1bmN0dWF0aW9uZGVjaW1hbG51bWJlckRlY2ltYWxfTnVtYmVyZGlnaXRlbmNsb3NpbmdtYXJrRW5jbG9zaW5nX01hcmtmaW5hbHB1bmN0dWF0aW9uRmluYWxfUHVuY3R1YXRpb25mb3JtYXRpbml0aWFscHVuY3R1YXRpb25Jbml0aWFsX1B1bmN0dWF0aW9ubExldHRlcmxldHRlcmxldHRlcm51bWJlckxldHRlcl9OdW1iZXJsaW5lc2VwYXJhdG9yTGluZV9TZXBhcmF0b3JsbExvd2VyY2FzZV9MZXR0ZXJsbU1vZGlmaWVyX0xldHRlcmxvT3RoZXJfTGV0dGVybG93ZXJjYXNlbGV0dGVybHRUaXRsZWNhc2VfTGV0dGVybHVVcHBlcmNhc2VfTGV0dGVybW1hcmttYXRoc3ltYm9sTWF0aF9TeW1ib2xtY1NwYWNpbmdfTWFya21lbW5Ob25zcGFjaW5nX01hcmttb2RpZmllcmxldHRlcm1vZGlmaWVyc3ltYm9sTW9kaWZpZXJfU3ltYm9sbk51bWJlcm5kbmxub090aGVyX051bWJlcm5vbnNwYWNpbmdtYXJrbnVtYmVyb3BlbnB1bmN0dWF0aW9uT3Blbl9QdW5jdHVhdGlvbm90aGVyb3RoZXJsZXR0ZXJvdGhlcm51bWJlcm90aGVycHVuY3R1YXRpb25PdGhlcl9QdW5jdHVhdGlvbm90aGVyc3ltYm9sT3RoZXJfU3ltYm9scFB1bmN0dWF0aW9ucGFyYWdyYXBoc2VwYXJhdG9yUGFyYWdyYXBoX1NlcGFyYXRvcnBjcGRwZXBmcGlwb3ByaXZhdGV1c2Vwc3B1bmN0cHVuY3R1YXRpb25zU3ltYm9sc2VwYXJhdG9yU2VwYXJhdG9yc2tzbXNvc3BhY2VzZXBhcmF0b3JTcGFjZV9TZXBhcmF0b3JzcGFjaW5nbWFya3N1cnJvZ2F0ZXN5bWJvbHRpdGxlY2FzZWxldHRlcnVwcGVyY2FzZWxldHRlcnp6bHpwenMAAHSmFAABAAAAdaYUAAUAAAB6phQACwAAAIWmFAAMAAAAkaYUAAIAAACTphQABwAAAFZiFAACAAAAmqYUAAYAAACgphQAEAAAALCmFAARAAAAwaYUAAIAAACDohQACgAAAMOmFAAFAAAAk6YUAAcAAADIphQAAgAAAMqmFAALAAAA1aYUAA0AAADiphQABAAAAOamFAAUAAAA+qYUABUAAAAPpxQABwAAAJOmFAAHAAAAFqcUAAIAAAAYpxQACQAAACGnFAAOAAAAL6cUAA8AAAA+pxQADwAAAE2nFAAQAAAAXacUAA0AAABqpxQADgAAAHinFAAFAAAAaqcUAA4AAAB9pxQADQAAAIqnFAAOAAAAmKcUABAAAACopxQAEQAAALmnFAAGAAAAmqYUAAYAAAC/pxQAEgAAANGnFAATAAAA5KcUAAEAAADlpxQABgAAAFpiFAACAAAAhaYUAAwAAADrpxQABgAAAOWnFAAGAAAA8acUAAwAAAD9pxQADQAAAAqoFAANAAAAF6gUAA4AAAAlqBQAAgAAACeoFAAQAAAAN6gUAAIAAAA5qBQADwAAAEioFAACAAAASqgUAAwAAABWqBQADwAAACeoFAAQAAAAZagUAAIAAABnqBQAEAAAAHeoFAACAAAAeagUABAAAACJqBQAAQAAAOKmFAAEAAAAiqgUAAQAAADiphQABAAAAI6oFAAKAAAAmKgUAAsAAACjqBQAAgAAAKWoFAAMAAAAsagUAAIAAACKpxQADgAAALOoFAACAAAAtagUAA8AAADEqBQADgAAADmoFAAPAAAA0qgUAA4AAADgqBQADwAAAO+oFAABAAAA8KgUAAYAAAD2qBQAAgAAAGqnFAAOAAAA+KgUAAIAAAD9pxQADQAAAPqoFAACAAAA/KgUAAwAAAAIqRQADgAAALWoFAAPAAAAFqkUAAYAAADwqBQABgAAABypFAAPAAAAK6kUABAAAAA7qRQABQAAAHWmFAAFAAAAQKkUAAsAAABKqBQADAAAAEupFAALAAAA/KgUAAwAAABWqRQAEAAAAGapFAARAAAAd6kUAAsAAACCqRQADAAAAI6pFAABAAAAj6kUAAsAAACaqRQAEgAAAKypFAATAAAAv6kUAAIAAAD6phQAFQAAAMGpFAACAAAATacUABAAAADDqRQAAgAAALCmFAARAAAAxakUAAIAAACopxQAEQAAAMepFAACAAAA0acUABMAAADJqRQAAgAAAGapFAARAAAAy6kUAAoAAADKphQACwAAANWpFAACAAAAK6kUABAAAADXqRQABQAAAI+pFAALAAAA3KkUAAsAAACPqRQACwAAAOepFAABAAAA6KkUAAYAAABYYhQAAgAAAC+nFAAPAAAA7qkUAAkAAAD3qRQACQAAAACqFAACAAAA4KgUAA8AAAACqhQAAgAAAJioFAALAAAABKoUAAIAAACCqRQADAAAAAaqFAAOAAAAFKoUAA8AAAAjqhQACwAAAKWoFAAMAAAALqoUAAkAAAAYpxQACQAAADeqFAAGAAAA6KkUAAYAAAA9qhQADwAAAGeoFAAQAAAAjaIUAAoAAACDohQACgAAAEyqFAAPAAAAeagUABAAAABbqhQAAQAAAPepFAAJAAAAXKoUAAIAAAAXqBQADgAAAF6qFAACAAAArKkUABMAAABgqhQAAgAAABSqFAAPAAAAY3JDUmViRV9CYXNlZWJhc2VnYXpFX0Jhc2VfR0FaZWJnZW1FX01vZGlmaWVyZW1vZGlmaWVyZXhFeHRlbmRleHRlbmRnYXpHbHVlX0FmdGVyX1p3amdsdWVhZnRlcnp3akxsZkxGbHZMVmx2dExWVHBwUHJlcGVuZHByZXBlbmRTcGFjaW5nTWFya3RUdlZ4eHp3alpXSgDBphQAAgAAAJOmFAAHAAAAD6cUAAcAAACTphQABwAAAGSvFAACAAAAZq8UAAIAAABorxQAAgAAAGqvFAAGAAAA4YMUAAUAAABqrxQABgAAAHCvFAAIAAAAeK8UAAoAAACCrxQAAwAAAHivFAAKAAAAha8UAAIAAACHrxQACgAAAJGvFAAJAAAAh68UAAoAAACarxQAAgAAAJyvFAAGAAAAoq8UAAYAAACcrxQABgAAAKivFAADAAAAq68UAA4AAAC5rxQADAAAAKuvFAAOAAAA5KcUAAEAAADFrxQAAQAAAMavFAACAAAAyK8UAAIAAADKrxQAAgAAAMyvFAACAAAAzq8UAAMAAADRrxQAAwAAADupFAAFAAAAdaYUAAUAAADUrxQAAgAAANavFAAHAAAA3a8UAAcAAADWrxQABwAAANqNFAARAAAA640UABIAAAD9jRQAAgAAAOuNFAASAAAAAqoUAAIAAADkrxQACwAAACOqFAALAAAA5K8UAAsAAADvrxQAAQAAAPCvFAABAAAA8a8UAAEAAADyrxQAAQAAAPOvFAACAAAAdaYUAAUAAAD1rxQAAwAAAPivFAADAAAAYWRsYW1BZGxhbWFkbG1hZ2hiQ2F1Y2FzaWFuX0FsYmFuaWFuYWhvbUFob21hbmF0b2xpYW5oaWVyb2dseXBoc0FuYXRvbGlhbl9IaWVyb2dseXBoc2FyYWJBcmFiaWNhcmFiaWNhcm1lbmlhbkFybWVuaWFuYXJtaUltcGVyaWFsX0FyYW1haWNhcm1uYXZlc3RhbkF2ZXN0YW5hdnN0YmFsaUJhbGluZXNlYmFsaW5lc2ViYW11QmFtdW1iYW11bWJhc3NCYXNzYV9WYWhiYXNzYXZhaGJhdGFrQmF0YWtiYXRrYmVuZ0JlbmdhbGliZW5nYWxpYmhhaWtzdWtpQmhhaWtzdWtpYmhrc2JvcG9Cb3BvbW9mb2JvcG9tb2ZvYnJhaEJyYWhtaWJyYWhtaWJyYWlCcmFpbGxlYnJhaWxsZWJ1Z2lCdWdpbmVzZWJ1Z2luZXNlYnVoZEJ1aGlkYnVoaWRjYWttQ2hha21hY2FuYWRpYW5hYm9yaWdpbmFsQ2FuYWRpYW5fQWJvcmlnaW5hbGNhbnNjYXJpQ2FyaWFuY2FyaWFuY2F1Y2FzaWFuYWxiYW5pYW5jaGFrbWFjaGFtQ2hhbWNoZXJDaGVyb2tlZWNoZXJva2VlY2hvcmFzbWlhbkNob3Jhc21pYW5jaHJzY29tbW9uQ29tbW9uY29wdENvcHRpY2NvcHRpY2NwbW5DeXByb19NaW5vYW5jcHJ0Q3lwcmlvdGN1bmVpZm9ybUN1bmVpZm9ybWN5cHJpb3RjeXByb21pbm9hbmN5cmlsbGljQ3lyaWxsaWNjeXJsZGVzZXJldERlc2VyZXRkZXZhRGV2YW5hZ2FyaWRldmFuYWdhcmlkaWFrRGl2ZXNfQWt1cnVkaXZlc2FrdXJ1ZG9nckRvZ3JhZG9ncmFkc3J0ZHVwbER1cGxveWFuZHVwbG95YW5lZ3lwRWd5cHRpYW5fSGllcm9nbHlwaHNlZ3lwdGlhbmhpZXJvZ2x5cGhzZWxiYUVsYmFzYW5lbGJhc2FuZWx5bUVseW1haWNlbHltYWljZXRoaUV0aGlvcGljZXRoaW9waWNnYXJhR2FyYXlnYXJheWdlb3JHZW9yZ2lhbmdlb3JnaWFuZ2xhZ0dsYWdvbGl0aWNnbGFnb2xpdGljZ29uZ0d1bmphbGFfR29uZGlnb25tTWFzYXJhbV9Hb25kaWdvdGhHb3RoaWNnb3RoaWNncmFuR3JhbnRoYWdyYW50aGFncmVla0dyZWVrZ3Jla2d1amFyYXRpR3VqYXJhdGlndWpyZ3VraEd1cnVuZ19LaGVtYWd1bmphbGFnb25kaWd1cm11a2hpR3VybXVraGlndXJ1Z3VydW5na2hlbWFoYW5IYW5oYW5nSGFuZ3VsaGFuZ3VsaGFuaWhhbmlmaXJvaGluZ3lhSGFuaWZpX1JvaGluZ3lhaGFub0hhbnVub29oYW51bm9vaGF0ckhhdHJhbmhhdHJhbmhlYnJIZWJyZXdoZWJyZXdoaXJhSGlyYWdhbmFoaXJhZ2FuYWhsdXdobW5nUGFoYXdoX0htb25naG1ucE55aWFrZW5nX1B1YWNodWVfSG1vbmdocmt0S2F0YWthbmFfT3JfSGlyYWdhbmFodW5nT2xkX0h1bmdhcmlhbmltcGVyaWFsYXJhbWFpY2luaGVyaXRlZEluaGVyaXRlZGluc2NyaXB0aW9uYWxwYWhsYXZpSW5zY3JpcHRpb25hbF9QYWhsYXZpaW5zY3JpcHRpb25hbHBhcnRoaWFuSW5zY3JpcHRpb25hbF9QYXJ0aGlhbml0YWxPbGRfSXRhbGljamF2YUphdmFuZXNlamF2YW5lc2VrYWl0aGlLYWl0aGlrYWxpS2F5YWhfTGlrYW5hS2F0YWthbmFrYW5uYWRhS2FubmFkYWthdGFrYW5ha2F0YWthbmFvcmhpcmFnYW5ha2F3aUthd2lrYXlhaGxpa2hhcktoYXJvc2h0aGlraGFyb3NodGhpa2hpdGFuc21hbGxzY3JpcHRLaGl0YW5fU21hbGxfU2NyaXB0a2htZXJLaG1lcmtobXJraG9qS2hvamtpa2hvamtpa2h1ZGF3YWRpS2h1ZGF3YWRpa2lyYXRyYWlLaXJhdF9SYWlraXRza25kYWtyYWlrdGhpbGFuYVRhaV9UaGFtbGFvTGFvbGFvb2xhdGluTGF0aW5sYXRubGVwY0xlcGNoYWxlcGNoYWxpbWJMaW1idWxpbWJ1bGluYUxpbmVhcl9BbGluYkxpbmVhcl9CbGluZWFyYWxpbmVhcmJsaXN1TGlzdWx5Y2lMeWNpYW5seWNpYW5seWRpTHlkaWFubHlkaWFubWFoYWphbmlNYWhhamFuaW1haGptYWthTWFrYXNhcm1ha2FzYXJtYWxheWFsYW1NYWxheWFsYW1tYW5kTWFuZGFpY21hbmRhaWNtYW5pTWFuaWNoYWVhbm1hbmljaGFlYW5tYXJjTWFyY2hlbm1hcmNoZW5tYXNhcmFtZ29uZGltZWRlZmFpZHJpbk1lZGVmYWlkcmlubWVkZm1lZXRlaW1heWVrTWVldGVpX01heWVrbWVuZE1lbmRlX0tpa2FrdWltZW5kZWtpa2FrdWltZXJjTWVyb2l0aWNfQ3Vyc2l2ZW1lcm9NZXJvaXRpY19IaWVyb2dseXBoc21lcm9pdGljY3Vyc2l2ZW1lcm9pdGljaGllcm9nbHlwaHNtaWFvTWlhb21seW1tb2RpTW9kaW1vbmdNb25nb2xpYW5tb25nb2xpYW5tcm9Ncm9tcm9vbXRlaW11bHRNdWx0YW5pbXVsdGFuaW15YW5tYXJNeWFubWFybXltcm5hYmF0YWVhbk5hYmF0YWVhbm5hZ21OYWdfTXVuZGFyaW5hZ211bmRhcmluYW5kTmFuZGluYWdhcmluYW5kaW5hZ2FyaW5hcmJPbGRfTm9ydGhfQXJhYmlhbm5iYXRuZXdhTmV3YW5ld3RhaWx1ZU5ld19UYWlfTHVlbmtvTmtvbmtvb25zaHVOdXNodW51c2h1bnlpYWtlbmdwdWFjaHVlaG1vbmdvZ2FtT2doYW1vZ2hhbW9sY2hpa2lPbF9DaGlraW9sY2tvbGRodW5nYXJpYW5vbGRpdGFsaWNvbGRub3J0aGFyYWJpYW5vbGRwZXJtaWNPbGRfUGVybWljb2xkcGVyc2lhbk9sZF9QZXJzaWFub2xkc29nZGlhbk9sZF9Tb2dkaWFub2xkc291dGhhcmFiaWFuT2xkX1NvdXRoX0FyYWJpYW5vbGR0dXJraWNPbGRfVHVya2ljb2xkdXlnaHVyT2xkX1V5Z2h1cm9sb25hbE9sX09uYWxvbmFvb3JpeWFPcml5YW9ya2hvcnlhb3NhZ2VPc2FnZW9zZ2Vvc21hT3NtYW55YW9zbWFueWFvdWdycGFoYXdoaG1vbmdwYWxtUGFsbXlyZW5lcGFsbXlyZW5lcGF1Y1BhdV9DaW5fSGF1cGF1Y2luaGF1cGVybXBoYWdQaGFnc19QYXBoYWdzcGFwaGxpcGhscFBzYWx0ZXJfUGFobGF2aXBobnhQaG9lbmljaWFucGhvZW5pY2lhbnBscmRwcnRpcHNhbHRlcnBhaGxhdmlxYWFjcWFhaXJlamFuZ1JlamFuZ3Jqbmdyb2hncnVuaWNSdW5pY3J1bnJzYW1hcml0YW5TYW1hcml0YW5zYW1yc2FyYnNhdXJTYXVyYXNodHJhc2F1cmFzaHRyYXNnbndTaWduV3JpdGluZ3NoYXJhZGFTaGFyYWRhc2hhdmlhblNoYXZpYW5zaGF3c2hyZHNpZGRTaWRkaGFtc2lkZGhhbXNpZ253cml0aW5nc2luZHNpbmhTaW5oYWxhc2luaGFsYXNvZ2RTb2dkaWFuc29nZGlhbnNvZ29zb3JhU29yYV9Tb21wZW5nc29yYXNvbXBlbmdzb3lvU295b21ib3NveW9tYm9zdW5kU3VuZGFuZXNlc3VuZGFuZXNlc3VudVN1bnV3YXJzdW51d2Fyc3lsb1N5bG90aV9OYWdyaXN5bG90aW5hZ3Jpc3lyY1N5cmlhY3N5cmlhY3RhZ2Fsb2dUYWdhbG9ndGFnYlRhZ2JhbndhdGFnYmFud2F0YWlsZVRhaV9MZXRhaXRoYW10YWl2aWV0VGFpX1ZpZXR0YWtyVGFrcml0YWtyaXRhbGV0YWx1dGFtaWxUYW1pbHRhbWx0YW5nVGFuZ3V0dGFuZ3NhVGFuZ3NhdGFuZ3V0dGF2dHRlbHVUZWx1Z3V0ZWx1Z3V0Zm5nVGlmaW5hZ2h0Z2xndGhhYVRoYWFuYXRoYWFuYXRoYWlUaGFpdGliZXRhblRpYmV0YW50aWJ0dGlmaW5hZ2h0aXJoVGlyaHV0YXRpcmh1dGF0bnNhdG9kaHJpVG9kaHJpdG9kcnRvdG9Ub3RvdHVsdXRpZ2FsYXJpVHVsdV9UaWdhbGFyaXR1dGd1Z2FyVWdhcml0aWN1Z2FyaXRpY3Vua25vd25Vbmtub3dudmFpVmFpdmFpaXZpdGhWaXRoa3VxaXZpdGhrdXFpd2FuY2hvV2FuY2hvd2FyYVdhcmFuZ19DaXRpd2FyYW5nY2l0aXdjaG94cGVveHN1eHllemlZZXppZGl5ZXppZGl5aVlpeWlpaXphbmFiYXphcnNxdWFyZVphbmFiYXphcl9TcXVhcmV6YW5iemluaHp5eXl6enp6AAAAvLEUAAUAAADBsRQABQAAAMaxFAAEAAAAwbEUAAUAAADKsRQA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4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAAAKIQAACiEAAA4hAAAPIQAAEyEAABMhAAAvIQAALyEAADQhAAA0IQAAOSEAADkhAAA8IQAAPSEAAEYhAABJIQAATiEAAE4hAACEIQAAhCEAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAeywAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAG+nAABxpwAAeKcAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACOpwAAjqcAAJGnAACRpwAAk6cAAJWnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAAK+nAACvpwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADNpwAAzacAANGnAADRpwAA06cAANOnAADVpwAA1acAANenAADXpwAA2acAANmnAADbpwAA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5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AALgfAAC7HwAAyB8AAMsfAADYHwAA2x8AAOgfAADsHwAA+B8AAPsfAAACIQAAAiEAAAchAAAHIQAACyEAAA0hAAAQIQAAEiEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAADAhAAAzIQAAPiEAAD8hAABFIQAARSEAAIMhAACDIQAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADLpwAAzKcAANCnAADQpwAA1qcAANanAADYpwAA2KcAANqnAADapwAA3KcAANynAAD1pwAA9acAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEA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EAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPAsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABcCwAAXQsAAF8LAABjCwAAZgsAAHcLAADaHAAA2hwAAPIcAADyHAAAAQMAAAEDAAAEAwAABAMAAAsDAAALAwAAWAMAAFgDAACwBAEA0wQBANgEAQD7BAEAAhgAAAMYAAAFGAAABRgAAC8gAAAvIAAAAjAAAAIwAABAqAAAd6gAAEAGAABABgAAgAsBAJELAQCZCwEAnAsBAKkLAQCvCwEAoBYAAPgWAAAACAAALQgAADAIAAA+CAAAMS4AADEuAABRCQAAUQkAANccAADXHAAA2RwAANkcAADcHAAA3RwAAOAcAADgHAAAMKgAADWoAAA4qAAAOKgAAIARAQDfEQEAtwAAALcAAABQBAEAfwQBAGQJAABlCQAAgQ0AAIMNAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAyg0AAMoNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADmDQAA7w0AAPINAAD0DQAA8hwAAPIcAADhEQEA9BEBAEAGAABABgAAMA8BAFkPAQAAAwAAAQMAAAMDAAADAwAADQMAAA0DAAAQAwAAEAMAAC0DAAAtAwAAMQMAADEDAADAGwEA4RsBAPAbAQD5GwEAZAkAAGUJAADmCQAA7wkAAACoAAAsqAAAAwMAAAQDAAAHAwAACAMAAAoDAAAKAwAAIAMAACADAAAjAwAAJQMAAC0DAAAuAwAAMAMAADADAAAMBgAADAYAABsGAAAcBgAAHwYAAB8GAABABgAAQAYAAEsGAABVBgAAcAYAAHAGAAAABwAADQcAAA8HAABKBwAATQcAAE8HAABgCAAAaggAAPgdAAD4HQAA+h0AAPodAAAAFwAAFRcAAB8XAAAfFwAANRcAADYXAAA1FwAANhcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAAADAAABAwAABwMAAAgDAAAMAwAADAMAAEAQAABJEAAAUBkAAG0ZAABwGQAAdBkAAGQJAABlCQAAMKgAADmoAACAFgEAuRYBAMAWAQDJFgEAUQkAAFIJAABkCQAAZQkAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAA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Kh4AACoeAAAsHgAALB4AAC4eAAAuHgAAMB4AADAeAAAyHgAAMh4AADQeAAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAmh4AAJseAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAgB8AAK8fAACyHwAAtB8AALcfAAC8HwAAwh8AAMQfAADHHwAAzB8AANgfAADbHwAA6B8AAOwfAADyHwAA9B8AAPcfAAD8HwAAJiEAACYhAAAqIQAAKyEAADIhAAAyIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADLpwAAzKcAANCnAADQpwAA1qcAANanAADYpwAA2KcAANqnAADapwAA3KcAANynAAD1pwAA9acAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQBQDQEAZQ0BAKAYAQC/GAEAQG4BAF9uAQAA6QEAIekBAEEAAABaAAAAYQAAAHoAAAC1AAAAtQAAAMAAAADWAAAA2AAAAPYAAAD4AAAANwEAADkBAACMAQAAjgEAAKkBAACsAQAAuQEAALwBAAC9AQAAvwEAAL8BAADEAQAAIAIAACICAAAzAgAAOgIAAFQCAABWAgAAVwIAAFkCAABZAgAAWwIAAFwCAABgAgAA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dB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AAIgfAACPHwAAmB8AAJ8fAACoHwAArx8AALgfAAC8HwAAyB8AAMwfAADYHwAA2x8AAOgfAADsHwAA+B8AAPwfAAAmIQAAJiEAACohAAArIQAAMiEAADIhAABgIQAAbyEAAIMhAACDIQAAtiQAAM8kAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAA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3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcywAAHMsAAB2LAAAdiwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOMsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAvpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAG+nAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAkacAAJGnAACTpwAAlKcAAJenAACXpwAAmacAAJmnAACbpwAAm6cAAJ2nAACdpwAAn6cAAJ+nAAChpwAAoacAAKOnAACjpwAApacAAKWnAACnpwAAp6cAAKmnAACppwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADNpwAAzacAANGnAADRpwAA16cAANenAADZpwAA2acAANunAADbpwAA9qcAAPanAABTqwAAU6sAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAAEH/AABa/wAAKAQBAE8EAQDYBAEA+wQBAJcFAQChBQEAowUBALEFAQCzBQEA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Tx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACbHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAtB8AALYfAAC3HwAAvB8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADMHwAAzB8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAAD8HwAA/B8AAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcywAAHMsAAB2LAAAdiwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOMsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAvpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAA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hgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAigQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAADQBQAA6gUAAO8FAADyBQAAIAYAAEoGAABuBgAAbwYAAHEGAADTBgAA1QYAANUGAADlBgAA5gYAAO4GAADvBgAA+gYAAPwGAAD/BgAA/wYAABAHAAAQBwAAEgcAAC8HAABNBwAApQcAALEHAACxBwAAygcAAOoHAAD0BwAA9QcAAPoHAAD6BwAAAAgAABUIAAAaCAAAGggAACQIAAAkCAAAKAgAACgIAABACAAAWAgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAKAIAADJCAAABAkAADkJAAA9CQAAPQkAAFAJAABQCQAAWAkAAGEJAABxCQAAgAkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAAL0JAAC9CQAAzgkAAM4JAADcCQAA3QkAAN8JAADhCQAA8AkAAPEJAAD8CQAA/AkAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAWQoAAFwKAABeCgAAXgoAAHIKAAB0CgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAL0KAADQCgAA0AoAAOAKAADhCgAA+QoAAPkKAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA9CwAAPQsAAFwLAABdCwAAXwsAAGELAABxCwAAcQsAAIMLAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAA0AsAANALAAAFDAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAAA9DAAAWAwAAFoMAABdDAAAXQwAAGAMAABhDAAAgAwAAIAMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL0MAADdDAAA3gwAAOAMAADhDAAA8QwAAPIMAAAEDQAA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wx4AAMMeAADFHgAAxR4AAMceAADHHgAAyR4AAMkeAADLHgAAyx4AAM0eAADNHgAAzx4AAM8eAADRHgAA0R4AANMeAADTHgAA1R4AANUeAADXHgAA1x4AANkeAADZHgAA2x4AANseAADdHgAA3R4AAN8eAADfHgAA4R4AAOEeAADjHgAA4x4AAOUeAADlHgAA5x4AAOceAADpHgAA6R4AAOseAADrHgAA7R4AAO0eAADvHgAA7x4AAPEeAADxHgAA8x4AAPMeAAD1HgAA9R4AAPceAAD3HgAA+R4AAPkeAAD7HgAA+x4AAP0eAAD9HgAA/x4AAAcfAAAQHwAAFR8AACAfAAAnHwAAMB8AADcfAABAHwAARR8AAFAfAABXHwAAYB8AAGcfAABwHwAAfR8AAIAfAACHHwAAkB8AAJcfAACgHwAApx8AALAfAAC0HwAAth8AALcfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAACiEAAAohAAAOIQAADyEAABMhAAATIQAALyEAAC8hAAA0IQAANCEAADkhAAA5IQAAPCEAAD0hAABGIQAASSEAAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcSwAAHEsAABzLAAAdCwAAHYsAAB9LAAAgSwAAIEsAACDLAAAgywAAIUsAACFLAAAhywAAIcsAACJLAAAiSwAAIssAACLLAAAjSwAAI0sAACPLAAAjywAAJEsAACRLAAAkywAAJMsAACVLAAAlSwAAJcsAACXLAAAmSwAAJksAACbLAAAmywAAJ0sAACdLAAAnywAAJ8sAAChLAAAoSwAAKMsAACjLAAApSwAAKUsAACnLAAApywAAKksAACpLAAAqywAAKssAACtLAAArSwAAK8sAACvLAAAsSwAALEsAACzLAAAsywAALUsAAC1LAAAtywAALcsAAC5LAAAuSwAALssAAC7LAAAvSwAAL0sAAC/LAAAvywAAMEsAADBLAAAwywAAMMsAADFLAAAxSwAAMcsAADHLAAAySwAAMksAADLLAAAyywAAM0sAADNLAAAzywAAM8sAADRLAAA0SwAANMsAADTLAAA1SwAANUsAADXLAAA1ywAANksAADZLAAA2ywAANssAADdLAAA3SwAAN8sAADfLAAA4SwAAOEsAADjLAAA5CwAAOwsAADsLAAA7iwAAO4sAADzLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAEGmAABBpgAAQ6YAAEOmAABFpgAARaYAAEemAABHpgAASaYAAEmmAABLpgAAS6YAAE2mAABNpgAAT6YAAE+mAABRpgAAUaYAAFOmAABTpgAAVaYAAFWmAABXpgAAV6YAAFmmAABZpgAAW6YAAFumAABdpgAAXaYAAF+mAABfpgAAYaYAAGGmAABjpgAAY6YAAGWmAABlpgAAZ6YAAGemAABppgAAaaYAAGumAABrpgAAbaYAAG2mAACBpgAAgaYAAIOmAACDpgAAhaYAAIWmAACHpgAAh6YAAImmAACJpgAAi6YAAIumAACNpgAAjaYAAI+mAACPpgAAkaYAAJGmAACTpgAAk6YAAJWmAACVpgAAl6YAAJemAACZpgAAmaYAAJumAACdpgAAI6cAACOnAAAlpwAAJacAACenAAAnpwAAKacAACmnAAArpwAAK6cAAC2nAAAtpwAAL6cAADGnAAAzpwAAM6cAADWnAAA1pwAAN6cAADenAAA5pwAAOacAADunAAA7pwAAPacAAD2nAAA/pwAAP6cAAEGnAABBpwAAQ6cAAEOnAABFpwAARacAAEenAABHpwAASacAAEmnAABLpwAAS6cAAE2nAABNpwAAT6cAAE+nAABRpwAAUacAAFOnAABTpwAAVacAAFWnAABXpwAAV6cAAFmnAABZpwAAW6cAAFunAABdpwAAXacAAF+nAABfpwAAYacAAGGnAABjpwAAY6cAAGWnAABlpwAAZ6cAAGenAABppwAAaacAAGunAABrpwAAbacAAG2nAABvpwAAeKcAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACOpwAAjqcAAJGnAACRpwAAk6cAAJWnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAA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Oh4AADoeAAA8HgAAPB4AAD4eAAA+HgAAQB4AAEAeAABCHgAAQh4AAEQeAABEHgAARh4AAEYeAABIHgAASB4AAEoeAABKHgAATB4AAEweAABOHgAATh4AAFAeAABQHgAAUh4AAFIeAABUHgAAVB4AAFYeAABWHgAAWB4AAFgeAABaHgAAWh4AAFweAABcHgAAXh4AAF4eAABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAuB8AALsfAADIHwAAyx8AANgfAADbHwAA6B8AAOwfAAD4HwAA+x8AAAIhAAACIQAAByEAAAchAAALIQAADSEAABAhAAASIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAAMCEAADMhAAA+IQAAPyEAAEUhAABFIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADLpwAAzKcAANCnAADQpwAA1qcAANanAADYpwAA2KcAANqnAADapwAA3KcAANynAAD1pwAA9acAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQBQDQEAZQ0BAKAYAQC/GAEAQG4BAF9uAQAA1AEAGdQBADTUAQBN1AEAaNQBAIHUAQCc1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALXUAQDQ1AEA6dQBAATVAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAONUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAGzVAQCF1QEAoNUBALnVAQDU1QEA7dUBAAjWAQAh1gEAPNYBAFXWAQBw1gEA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XxEAAGCpAAB8qQAACgAAAAoAAAAArAAAAKwAABysAAAcrAAAOKwAADisAABUrAAAVKwAAHCsAABwrAAAjKwAAIysAACorAAAqKwAAMSsAADErAAA4KwAAOCsAAD8rAAA/KwAABitAAAYrQAANK0AADStAABQrQAAUK0AAGytAABsrQAAiK0AAIitAACkrQAApK0AAMCtAADArQAA3K0AANytAAD4rQAA+K0AABSuAAAUrgAAMK4AADCuAABMrgAATK4AAGiuAABorgAAhK4AAISuAACgrgAAoK4AALyuAAC8rgAA2K4AANiuAAD0rgAA9K4AABCvAAAQrwAALK8AACyvAABIrwAASK8AAGSvAABkrwAAgK8AAICvAACcrwAAnK8AALivAAC4rwAA1K8AANSvAADwrwAA8K8AAAywAAAMsAAAKLAAACiwAABEsAAARLAAAGCwAABgsAAAfLAAAHywAACYsAAAmLAAALSwAAC0sAAA0LAAANCwAADssAAA7LAAAAixAAAIsQAAJLEAACSxAABAsQAAQLEAAFyxAABcsQAAeLEAAHixAACUsQAAlLEAALCxAACwsQAAzLEAAMyxAADosQAA6LEAAASyAAAEsgAAILIAACCyAAA8sgAAPLIAAFiyAABYsgAAdLIAAHSyAACQsgAAkLIAAKyyAACssgAAyLIAAMiyAADksgAA5LIAAACzAAAAswAAHLMAAByzAAA4swAAOLMAAFSzAABUswAAcLMAAHCzAACMswAAjLMAAKizAACoswAAxLMAAMSzAADgswAA4LMAAPyzAAD8swAAGLQAABi0AAA0tAAANLQAAFC0AABQtAAAbLQAAGy0AACItAAAiLQAAKS0AACktAAAwLQAAMC0AADctAAA3LQAAPi0AAD4tAAAFLUAABS1AAAwtQAAMLUAAEy1AABMtQAAaLUAAGi1AACEtQAAhLUAAKC1AACgtQAAvLUAALy1AADYtQAA2LUAAPS1AAD0tQAAELYAABC2AAAstgAALLYAAEi2AABItgAAZLYAAGS2AACAtgAAgLYAAJy2AACctgAAuLYAALi2AADUtgAA1LYAAPC2AADwtgAADLcAAAy3AAAotwAAKLcAAES3AABEtwAAYLcAAGC3AAB8twAAfLcAAJi3AACYtwAAtLcAALS3AADQtwAA0LcAAOy3AADstwAACLgAAAi4AAAkuAAAJLgAAEC4AABAuAAAXLgAAFy4AAB4uAAAeLgAAJS4AACUuAAAsLgAALC4AADMuAAAzLgAAOi4AADouAAABLkAAAS5AAAguQAAILkAADy5AAA8uQAAWLkAAFi5AAB0uQAAdLkAAJC5AACQuQAArLkAAKy5AADIuQAAyLkAAOS5AADkuQAAALoAAAC6AAAcugAAHLoAADi6AAA4ugAAVLoAAFS6AABwugAAcLoAAIy6AACMugAAqLoAAKi6AADEugAAxLoAAOC6AADgugAA/LoAAPy6AAAYuwAAGLsAADS7AAA0uwAAULsAAFC7AABsuwAAbLsAAIi7AACIuwAApLsAAKS7AADAuwAAwLsAANy7AADcuwAA+LsAAPi7AAAUvAAAFLwAADC8AAAwvAAATLwAAEy8AABovAAAaLwAAIS8AACEvAAAoLwAAKC8AAC8vAAAvLwAANi8AADYvAAA9LwAAPS8AAAQvQAAEL0AACy9AAAsvQAASL0AAEi9AABkvQAAZL0AAIC9AACAvQAAnL0AAJy9AAC4vQAAuL0AANS9AADUvQAA8L0AAPC9AAAMvgAADL4AACi+AAAovgAARL4AAES+AABgvgAAYL4AAHy+AAB8vgAAmL4AAJi+AAC0vgAAtL4AANC+AADQvgAA7L4AAOy+AAAIvwAACL8AACS/AAAkvwAAQL8AAEC/AABcvwAAXL8AAHi/AAB4vwAAlL8AAJS/AACwvwAAsL8AAMy/AADMvwAA6L8AAOi/AAAEwAAABMAAACDAAAAgwAAAPMAAADzAAABYwAAAWMAAAHTAAAB0wAAAkMAAAJDAAACswAAArMAAAMjAAADIwAAA5MAAAOTAAAAAwQAAAMEAABzBAAAcwQAAOMEAADjBAABUwQAAVMEAAHDBAABwwQAAjMEAAIzBAACowQAAqMEAAMTBAADEwQAA4MEAAODBAAD8wQAA/MEAABjCAAAYwgAANMIAADTCAABQwgAAUMIAAGzCAABswgAAiMIAAIjCAACkwgAApMIAAMDCAADAwgAA3MIAANzCAAD4wgAA+MIAABTDAAAUwwAAMMMAADDDAABMwwAATMMAAGjDAABowwAAhMMAAITDAACgwwAAoMMAALzDAAC8wwAA2MMAANjDAAD0wwAA9MMAABDEAAAQxAAALMQAACzEAABIxAAASMQAAGTEAABkxAAAgMQAAIDEAACcxAAAnMQAALjEAAC4xAAA1MQAANTEAADwxAAA8MQAAAzFAAAMxQAAKMUAACjFAABExQAARMUAAGDFAABgxQAAfMUAAHzFAACYxQAAmMUAALTFAAC0xQAA0MUAANDFAADsxQAA7MUAAAjGAAAIxgAAJMYAACTGAABAxgAAQMYAAFzGAABcxgAAeMYAAHjGAACUxgAAlMYAALDGAACwxgAAzMYAAMzGAADoxgAA6MYAAATHAAAExwAAIMcAACDHAAA8xwAAPMcAAFjHAABYxwAAdMcAAHTHAACQxwAAkMcAAKzHAACsxwAAyMcAAMjHAADkxwAA5McAAADIAAAAyAAAHMgAABzIAAA4yAAAOMgAAFTIAABUyAAAcMgAAHDIAACMyAAAjMgAAKjIAACoyAAAxMgAAMTIAADgyAAA4MgAAPzIAAD8yAAAGMkAABjJAAA0yQAANMkAAFDJAABQyQAAbMkAAGzJAACIyQAAiMkAAKTJAACkyQAAwMkAAMDJAADcyQAA3MkAAPjJAAD4yQAAFMoAABTKAAAwygAAMMoAAEzKAABMygAAaMoAAGjKAACEygAAhMoAAKDKAACgygAAvMoAALzKAADYygAA2MoAAPTKAAD0ygAAEMsAABDLAAAsywAALMsAAEjLAABIywAAZMsAAGTLAACAywAAgMsAAJzLAACcywAAuMsAALjLAADUywAA1MsAAPDLAADwywAADMwAAAzMAAAozAAAKMwAAETMAABEzAAAYMwAAGDMAAB8zAAAfMwAAJjMAACYzAAAtMwAALTMAADQzAAA0MwAAOzMAADszAAACM0AAAjNAAAkzQAAJM0AAEDNAABAzQAAXM0AAFzNAAB4zQAAeM0AAJTNAACUzQAAsM0AALDNAADMzQAAzM0AAOjNAADozQAABM4AAATOAAAgzgAAIM4AADzOAAA8zgAAWM4AAFjOAAB0zgAAdM4AAJDOAACQzgAArM4AAKzOAADIzgAAyM4AAOTOAADkzgAAAM8AAADPAAAczwAAHM8AADjPAAA4zwAAVM8AAFTPAABwzwAAcM8AAIzPAACMzwAAqM8AAKjPAADEzwAAxM8AAODPAADgzwAA/M8AAPzPAAAY0AAAGNAAADTQAAA00AAAUNAAAFDQAABs0AAAbNAAAIjQAACI0AAApNAAAKTQAADA0AAAwNAAANzQAADc0AAA+NAAAPjQAAAU0QAAFNEAADDRAAAw0QAATNEAAEzRAABo0QAAaNEAAITRAACE0QAAoNEAAKDRAAC80QAAvNEAANjRAADY0QAA9NEAAPTRAAAQ0gAAENIAACzSAAAs0gAASNIAAEjSAABk0gAAZNIAAIDSAACA0gAAnNIAAJzSAAC40gAAuNIAANTSAADU0gAA8NIAAPDSAAAM0wAADNMAACjTAAAo0wAARNMAAETTAABg0wAAYNMAAHzTAAB80wAAmNMAAJjTAAC00wAAtNMAANDTAADQ0wAA7NMAAOzTAAAI1AAACNQAACTUAAAk1AAAQNQAAEDUAABc1AAAXNQAAHjUAAB41AAAlNQAAJTUAACw1AAAsNQAAMzUAADM1AAA6NQAAOjUAAAE1QAABNUAACDVAAAg1QAAPNUAADzVAABY1QAAWNUAAHTVAAB01QAAkNUAAJDVAACs1QAArNUAAMjVAADI1QAA5NUAAOTVAAAA1gAAANYAABzWAAAc1gAAONYAADjWAABU1gAAVNYAAHDWAABw1gAAjNYAAIzWAACo1gAAqNYAAMTWAADE1gAA4NYAAODWAAD81gAA/NYAABjXAAAY1wAANNcAADTXAABQ1wAAUNcAAGzXAABs1wAAiNcAAIjXAAABrAAAG6wAAB2sAAA3rAAAOawAAFOsAABVrAAAb6wAAHGsAACLrAAAjawAAKesAACprAAAw6wAAMWsAADfrAAA4awAAPusAAD9rAAAF60AABmtAAAzrQAANa0AAE+tAABRrQAAa60AAG2tAACHrQAAia0AAKOtAAClrQAAv60AAMGtAADbrQAA3a0AAPetAAD5rQAAE64AABWuAAAvrgAAMa4AAEuuAABNrgAAZ64AAGmuAACDrgAAha4AAJ+uAAChrgAAu64AAL2uAADXrgAA2a4AAPOuAAD1rgAAD68AABGvAAArrwAALa8AAEevAABJrwAAY68AAGWvAAB/rwAAga8AAJuvAACdrwAAt68AALmvAADTrwAA1a8AAO+vAADxrwAAC7AAAA2wAAAnsAAAKbAAAEOwAABFsAAAX7AAAGGwAAB7sAAAfbAAAJewAACZsAAAs7AAALWwAADPsAAA0bAAAOuwAADtsAAAB7EAAAmxAAAjsQAAJbEAAD+xAABBsQAAW7EAAF2xAAB3sQAAebEAAJOxAACVsQAAr7EAALGxAADLsQAAzbEAAOexAADpsQAAA7IAAAWyAAAfsgAAIbIAADuyAAA9sgAAV7IAAFmyAABzsgAAdbIAAI+yAACRsgAAq7IAAK2yAADHsgAAybIAAOOyAADlsgAA/7IAAAGzAAAbswAAHbMAADezAAA5swAAU7MAAFWzAABvswAAcbMAAIuzAACNswAAp7MAAKmzAADDswAAxbMAAN+zAADhswAA+7MAAP2zAAAXtAAAGbQAADO0AAA1tAAAT7QAAFG0AABrtAAAbbQAAIe0AACJtAAAo7QAAKW0AAC/tAAAwbQAANu0AADdtAAA97QAAPm0AAATtQAAFbUAAC+1AAAxtQAAS7UAAE21AABntQAAabUAAIO1AACFtQAAn7UAAKG1AAC7tQAAvbUAANe1AADZtQAA87UAAPW1AAAPtgAAEbYAACu2AAAttgAAR7YAAEm2AABjtgAAZbYAAH+2AACBtgAAm7YAAJ22AAC3tgAAubYAANO2AADVtgAA77YAAPG2AAALtwAADbcAACe3AAAptwAAQ7cAAEW3AABftwAAYbcAAHu3AAB9twAAl7cAAJm3AACztwAAtbcAAM+3AADRtwAA67cAAO23AAAHuAAACbgAACO4AAAluAAAP7gAAEG4AABbuAAAXbgAAHe4AAB5uAAAk7gAAJW4AACvuAAAsbgAAMu4AADNuAAA57gAAOm4AAADuQAABbkAAB+5AAAhuQAAO7kAAD25AABXuQAAWbkAAHO5AAB1uQAAj7kAAJG5AACruQAArbkAAMe5AADJuQAA47kAAOW5AAD/uQAAAboAABu6AAAdugAAN7oAADm6AABTugAAVboAAG+6AABxugAAi7oAAI26AACnugAAqboAAMO6AADFugAA37oAAOG6AAD7ugAA/boAABe7AAAZuwAAM7sAADW7AABPuwAAUbsAAGu7AABtuwAAh7sAAIm7AACjuwAApbsAAL+7AADBuwAA27sAAN27AAD3uwAA+bsAABO8AAAVvAAAL7wAADG8AABLvAAATbwAAGe8AABpvAAAg7wAAIW8AACfvAAAobwAALu8AAC9vAAA17wAANm8AADzvAAA9bwAAA+9AAARvQAAK70AAC29AABHvQAASb0AAGO9AABlvQAAf70AAIG9AACbvQAAnb0AALe9AAC5vQAA070AANW9AADvvQAA8b0AAAu+AAANvgAAJ74AACm+AABDvgAARb4AAF++AABhvgAAe74AAH2+AACXvgAAmb4AALO+AAC1vgAAz74AANG+AADrvgAA7b4AAAe/AAAJvwAAI78AACW/AAA/vwAAQb8AAFu/AABdvwAAd78AAHm/AACTvwAAlb8AAK+/AACxvwAAy78AAM2/AADnvwAA6b8AAAPAAAAFwAAAH8AAACHAAAA7wAAAPcAAAFfAAABZwAAAc8AAAHXAAACPwAAAkcAAAKvAAACtwAAAx8AAAMnAAADjwAAA5cAAAP/AAAABwQAAG8EAAB3BAAA3wQAAOcEAAFPBAABVwQAAb8EAAHHBAACLwQAAjcEAAKfBAACpwQAAw8EAAMXBAADfwQAA4cEAAPvBAAD9wQAAF8IAABnCAAAzwgAANcIAAE/CAABRwgAAa8IAAG3CAACHwgAAicIAAKPCAAClwgAAv8IAAMHCAADbwgAA3cIAAPfCAAD5wgAAE8MAABXDAAAvwwAAMcMAAEvDAABNwwAAZ8MAAGnDAACDwwAAhcMAAJ/DAAChwwAAu8MAAL3DAADXwwAA2cMAAPPDAAD1wwAAD8QAABHEAAArxAAALcQAAEfEAABJxAAAY8QAAGXEAAB/xAAAgcQAAJvEAACdxAAAt8QAALnEAADTxAAA1cQAAO/EAADxxAAAC8UAAA3FAAAnxQAAKcUAAEPFAABFxQAAX8UAAGHFAAB7xQAAfcUAAJfFAACZxQAAs8UAALXFAADPxQAA0cUAAOvFAADtxQAAB8YAAAnGAAAjxgAAJcYAAD/GAABBxgAAW8YAAF3GAAB3xgAAecYAAJPGAACVxgAAr8YAALHGAADLxgAAzcYAAOfGAADpxgAAA8cAAAXHAAAfxwAAIccAADvHAAA9xwAAV8cAAFnHAABzxwAAdccAAI/HAACRxwAAq8cAAK3HAADHxwAAyccAAOPHAADlxwAA/8cAAAHIAAAbyAAAHcgAADfIAAA5yAAAU8gAAFXIAABvyAAAccgAAIvIAACNyAAAp8gAAKnIAADDyAAAxcgAAN/IAADhyAAA+8gAAP3IAAAXyQAAGckAADPJAAA1yQAAT8kAAFHJAABryQAAbckAAIfJAACJyQAAo8kAAKXJAAC/yQAAwckAANvJAADdyQAA98kAAPnJAAATygAAFcoAAC/KAAAxygAAS8oAAE3KAABnygAAacoAAIPKAACFygAAn8oAAKHKAAC7ygAAvcoAANfKAADZygAA88oAAPXKAAAPywAAEcsAACvLAAAtywAAR8sAAEnLAABjywAAZcsAAH/LAACBywAAm8sAAJ3LAAC3ywAAucsAANPLAADVywAA78sAAPHLAAALzAAADcwAACfMAAApzAAAQ8wAAEXMAABfzAAAYcwAAHvMAAB9zAAAl8wAAJnMAACzzAAAtcwAAM/MAADRzAAA68wAAO3MAAAHzQAACc0AACPNAAAlzQAAP80AAEHNAABbzQAAXc0AAHfNAAB5zQAAk80AAJXNAACvzQAAsc0AAMvNAADNzQAA580AAOnNAAADzgAABc4AAB/OAAAhzgAAO84AAD3OAABXzgAAWc4AAHPOAAB1zgAAj84AAJHOAACrzgAArc4AAMfOAADJzgAA484AAOXOAAD/zgAAAc8AABvPAAAdzwAAN88AADnPAABTzwAAVc8AAG/PAABxzwAAi88AAI3PAACnzwAAqc8AAMPPAADFzwAA388AAOHPAAD7zwAA/c8AABfQAAAZ0AAAM9AAADXQAABP0AAAUdAAAGvQAABt0AAAh9AAAInQAACj0AAApdAAAL/QAADB0AAA29AAAN3QAAD30AAA+dAAABPRAAAV0QAAL9EAADHRAABL0QAATdEAAGfRAABp0QAAg9EAAIXRAACf0QAAodEAALvRAAC90QAA19EAANnRAADz0QAA9dEAAA/SAAAR0gAAK9IAAC3SAABH0gAASdIAAGPSAABl0gAAf9IAAIHSAACb0gAAndIAALfSAAC50gAA09IAANXSAADv0gAA8dIAAAvTAAAN0wAAJ9MAACnTAABD0wAARdMAAF/TAABh0wAAe9MAAH3TAACX0wAAmdMAALPTAAC10wAAz9MAANHTAADr0wAA7dMAAAfUAAAJ1AAAI9QAACXUAAA/1AAAQdQAAFvUAABd1AAAd9QAAHnUAACT1AAAldQAAK/UAACx1AAAy9QAAM3UAADn1AAA6dQAAAPVAAAF1QAAH9UAACHVAAA71QAAPdUAAFfVAABZ1QAAc9UAAHXVAACP1QAAkdUAAKvVAACt1QAAx9UAAMnVAADj1QAA5dUAAP/VAAAB1gAAG9YAAB3WAAA31gAA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3gIAAP8CAABwAwAAdAMAAHYDAAB3AwAAegMAAH0DAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAAChAwAAowMAAPUDAAD3AwAAgQQAAIoEAAAvBQAAMQUAAFYFAABZBQAAXAUAAF4FAABeBQAAYAUAAIgFAACKBQAAigUAAPMFAADzBQAAIAYAAEoGAABuBgAAbwYAAHEGAADTBgAA1QYAANUGAADlBgAA5gYAAO4GAADvBgAA+gYAAPwGAAD/BgAA/wYAAA8HAAAQBwAAEgcAAC8HAABNBwAApQcAALEHAACxBwAAygcAAOoHAAD0BwAA9QcAAPoHAAD6BwAAAAgAABUIAAAaCAAAGggAACQIAAAkCAAAKAgAACgIAABACAAAWAgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAKAIAADJCAAABAkAADkJAAA9CQAAPQkAAFAJAABQCQAAWAkAAGEJAABxCQAAgAkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAAL0JAAC9CQAAzgkAAM4JAADcCQAA3QkAAN8JAADhCQAA8AkAAPEJAAD8CQAA/AkAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAWQoAAFwKAABeCgAAXgoAAHIKAAB0CgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAL0KAADQCgAA0AoAAOAKAADhCgAA+QoAAPkKAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA9CwAAPQsAAFwLAABdCwAAXwsAAGELAABxCwAAcQsAAIMLAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAA0AsAANALAAAFDAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAAA9DAAAWAwAAFoMAABdDAAAXQwAAGAMAABhDAAAgAwAAIAMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAA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MR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACdHgAAnx4AAJ8eAAChHgAAoR4AAKMeAACjHgAApR4AAKUeAACnHgAApx4AAKkeAACpHgAAqx4AAKseAACtHgAArR4AAK8eAACvHgAAsR4AALEeAACzHgAAsx4AALUeAAC1HgAAtx4AALceAAC5HgAAuR4AALseAAC7HgAAvR4AAL0eAAC/HgAAvx4AAMEeAADBHgAAwx4AAMMeAADFHgAAxR4AAMceAADHHgAAyR4AAMkeAADLHgAAyx4AAM0eAADNHgAAzx4AAM8eAADRHgAA0R4AANMeAADTHgAA1R4AANUeAADXHgAA1x4AANkeAADZHgAA2x4AANseAADdHgAA3R4AAN8eAADfHgAA4R4AAOEeAADjHgAA4x4AAOUeAADlHgAA5x4AAOceAADpHgAA6R4AAOseAADrHgAA7R4AAO0eAADvHgAA7x4AAPEeAADxHgAA8x4AAPMeAAD1HgAA9R4AAPceAAD3HgAA+R4AAPkeAAD7HgAA+x4AAP0eAAD9HgAA/x4AAAcfAAAQHwAAFR8AACAfAAAnHwAAMB8AADcfAABAHwAARR8AAFAfAABXHwAAYB8AAGcfAABwHwAAfR8AAIAfAACHHwAAkB8AAJcfAACgHwAApx8AALAfAAC0HwAAth8AALcfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAACiEAAAohAAAOIQAADyEAABMhAAATIQAALyEAAC8hAAA0IQAANCEAADkhAAA5IQAAPCEAAD0hAABGIQAASSEAAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcSwAAHEsAABzLAAAdCwAAHYsAAB9LAAAgSwAAIEsAACDLAAAgywAAIUsAACFLAAAhywAAIcsAACJLAAAiSwAAIssAACLLAAAjSwAAI0sAACPLAAAjywAAJEsAACRLAAAkywAAJMsAACVLAAAlSwAAJcsAACXLAAAmSwAAJksAACbLAAAmywAAJ0sAACdLAAAnywAAJ8sAAChLAAAoSwAAKMsAACjLAAApSwAAKUsAACnLAAApywAAKksAACpLAAAqywAAKssAACtLAAArSwAAK8sAACvLAAAsSwAALEsAACzLAAAsywAALUsAAC1LAAAtywAALcsAAC5LAAAuSwAALssAAC7LAAAvSwAAL0sAAC/LAAAvywAAMEsAADBLAAAwywAAMMsAADFLAAAxSwAAMcsAADHLAAAySwAAMksAADLLAAAyywAAM0sAADNLAAAzywAAM8sAADRLAAA0SwAANMsAADTLAAA1SwAANUsAADXLAAA1ywAANksAADZLAAA2ywAANssAADdLAAA3SwAAN8sAADfLAAA4SwAAOEsAADjLAAA5CwAAOwsAADsLAAA7iwAAO4sAADzLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAEGmAABBpgAAQ6YAAEOmAABFpgAARaYAAEemAABHpgAASaYAAEmmAABLpgAAS6YAAE2mAABNpgAAT6YAAE+mAABRpgAAUaYAAFOmAABTpgAAVaYAAFWmAABXpgAAV6YAAFmmAABZpgAAW6YAAFumAABdpgAAXaYAAF+mAABfpgAAYaYAAGGmAABjpgAAY6YAAGWmAABlpgAAZ6YAAGemAABppgAAaaYAAGumAABrpgAAbaYAAG2mAACBpgAAgaYAAIOmAACDpgAAhaYAAIWmAACHpgAAh6YAAImmAACJpgAAi6YAAIumAACNpgAAjaYAAI+mAACPpgAAkaYAAJGmAACTpgAAk6YAAJWmAACVpgAAl6YAAJemAACZpgAAmaYAAJumAACdpgAAI6cAACOnAAAlpwAAJacAACenAAAnpwAAKacAACmnAAArpwAAK6cAAC2nAAAtpwAAL6cAADGnAAAzpwAAM6cAADWnAAA1pwAAN6cAADenAAA5pwAAOacAADunAAA7pwAAPacAAD2nAAA/pwAAP6cAAEGnAABBpwAAQ6cAAEOnAABFpwAARacAAEenAABHpwAASacAAEmnAABLpwAAS6cAAE2nAABNpwAAT6cAAE+nAABRpwAAUacAAFOnAABTpwAAVacAAFWnAABXpwAAV6cAAFmnAABZpwAAW6cAAFunAABdpwAAXacAAF+nAABfpwAAYacAAGGnAABjpwAAY6cAAGWnAABlpwAAZ6cAAGenAABppwAAaacAAGunAABrpwAAbacAAG2nAABvpwAAeKcAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACOpwAAjqcAAJGnAACRpwAAk6cAAJWnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAAK+nAACvpwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADNpwAAzacAANGnAADRpwAA06cAANOnAADVpwAA1acAANenAADXpwAA2acAANmnAADbpwAA26cAAPKnAAD0pwAA9qcAAPanAAD4pwAA+qcAADCrAABaqwAAXKsAAGmrAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AABB/wAAWv8AACgEAQBPBAEA2AQBAPsEAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAIAHAQCABwEAgwcBAIUHAQCHBwEAsAcBALIHAQC6BwEAwAwBAPIMAQBwDQEAhQ0BAMAYAQDfGAEAYG4BAH9uAQAa1AEAM9QBAE7UAQBU1AEAVtQBAGfUAQCC1AEAm9QBALbUAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQDP1AEA6tQBAAPVAQAe1QEAN9UBAFLVAQBr1QEAhtUBAJ/VAQC61QEA09UBAO7VAQAH1gEAItYBADvWAQBW1gEAb9YBAIrWAQCl1gEAwtYBANrWAQDc1gEA4dYBAPzWAQAU1wEAFtcBABvXAQA21wEATtcBAFDXAQBV1wEAcNcBAIjXAQCK1wEAj9cBAKrXAQDC1wEAxNcBAMnXAQDL1wEAy9cBAADfAQAJ3wEAC98BAB7fAQAl3wEAKt8BADDgAQBt4AEAIukBAEPpAQAwAAAAOQAAAAAGAAAFBgAAYAYAAGkGAABrBgAAbAYAAN0GAADdBgAA8AYAAPkGAADABwAAyQcAAJAIAACRCAAA4ggAAOIIAABmCQAAbwkAAOYJAADvCQAAZgoAAG8KAADmCgAA7woAAGYLAABvCwAA5gsAAO8LAABmDAAAbwwAAOYMAADvDAAAZg0AAG8NAADmDQAA7w0AAFAOAABZDgAA0A4AANkOAAAgDwAAKQ8AAEAQAABJEAAAkBAAAJkQAADgFwAA6RcAABAYAAAZGAAARhkAAE8ZAADQGQAA2hkAAIAaAACJGgAAkBoAAJkaAABQGwAAWRsAALAbAAC5GwAAQBwAAEkcAABQHAAAWRwAACCmAAAppgAA0KgAANmoAAAAqQAACakAANCpAADZqQAA8KkAAPmpAABQqgAAWaoAAPCrAAD5qwAAEP8AABn/AACgBAEAqQQBADANAQA5DQEAQA0BAEkNAQBmEAEAbxABAL0QAQC9EAEAzRABAM0QAQDwEAEA+RABADYRAQA/EQEA0BEBANkRAQDwEgEA+RIBAFAUAQBZFAEA0BQBANkUAQBQFgEAWRYBAMAWAQDJFgEA0BYBAOMWAQAwFwEAORcBAOAYAQDpGAEAUBkBAFkZAQDwGwEA+RsBAFAcAQBZHAEAUB0BAFkdAQCgHQEAqR0BAFAfAQBZHwEAMGEBADlhAQBgagEAaWoBAMBqAQDJagEAUGsBAFlrAQBwbQEAeW0BAPDMAQD5zAEAztcBAP/XAQBA4QEASeEBAPDiAQD54gEA8OQBAPnkAQDx5QEA+uUBAFDpAQBZ6QEA8PsBAPn7AQC7AQAAuwEAAMABAADDAQAAlAIAAJQCAAC5AgAAvwIAAMYCAADRAgAA7AIAAOwCAADuAgAA7gIAAHQDAAB0AwAAWQUAAFkFAADQBQAA6gUAAO8FAADzBQAAIAYAAEoGAABuBgAAbwYAAHEGAADTBgAA1QYAANUGAADlBgAA5gYAAO4GAADvBgAA+gYAAPwGAAD/BgAA/wYAABAHAAAQBwAAEgcAAC8HAABNBwAApQcAALEHAACxBwAAygcAAOoHAAD0BwAA9QcAAPoHAAD6BwAAAAgAABUIAAAaCAAAGggAACQIAAAkCAAAKAgAACgIAABACAAAWAgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAKAIAADJCAAABAkAADkJAAA9CQAAPQkAAFAJAABQCQAAWAkAAGEJAABxCQAAgAkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAAL0JAAC9CQAAzgkAAM4JAADcCQAA3QkAAN8JAADhCQAA8AkAAPEJAAD8CQAA/AkAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAWQoAAFwKAABeCgAAXgoAAHIKAAB0CgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAL0KAADQCgAA0AoAAOAKAADhCgAA+QoAAPkKAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA9CwAAPQsAAFwLAABdCwAAXwsAAGELAABxCwAAcQsAAIMLAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAA0AsAANALAAAFDAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAAA9DAAAWAwAAFoMAABdDAAAXQwAAGAMAABhDAAAgAwAAIAMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL0MAADdDAAA3gwAAOAMAADhDAAA8QwAAPIMAAAEDQAADA0AAA4NAAAQDQAAEg0AADoNAAA9DQAAPQ0AAE4NAABODQAAVA0AAFYNAABfDQAAYQ0AAHoNAAB/DQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAAEOAAAwDgAAMg4AADMOAABADgAARg4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAsA4AALIOAACzDgAAvQ4AAL0OAADADgAAxA4AAMYOAADGDgAA3A4AAN8OAAAADwAAAA8AAEAPAABHDwAASQ8AAGwPAACIDwAAjA8AAAAQAAAqEAAAPxAAAD8QAABQEAAAVRAAAFoQAABdEAAAYRAAAGEQAABlEAAAZhAAAG4QAABwEAAAdRAAAIEQAACOEAAAjhAAANAQAAD6EAAA/RAAAEgSAABKEgAATRIAAFASAABWEgAAWBIAAFgSAABaEgAAXRIAAGASAACIEgAAihIAAI0SAACQEgAAsBIAALISAAC1EgAAuBIAAL4SAADAEgAAwBIAAMISAADFEgAAyBIAANYSAADYEgAAEBMAABITAAAVEwAAGBMAAFoTAACAEwAAjxMAAAEUAABsFgAAbxYAAH8WAACBFgAAmhYAAKAWAADqFgAA7hYAAPgWAAAAFwAAERcAAB8XAAAxFwAAQBcAAFEXAABgFwAAbBcAAG4XAABwFwAAgBcAALMXAADXFwAA1xcAANwXAADcFwAAIBgAAHgYAACAGAAAhBgAAIcYAACoGAAAqhgAAKoYAACwGAAA9RgAAAAZAAAeGQAAUBkAAG0ZAABwGQAAdBkAAIAZAACrGQAAsBkAAMkZAAAAGgAAFhoAACAaAABUGgAApxoAAKcaAAAFGwAAMxsAAEUbAABMGwAAgxsAAKAbAACuGwAArxsAALobAADlGwAAABwAACMcAABNHAAATxwAAFocAAB9HAAAkBwAALocAAC9HAAAvxwAAOkcAADsHAAA7hwAAPMcAAD1HAAA9hwAAPocAAD6HAAANSEAADghAACAIQAAgiEAAIUhAACIIQAAMC0AAGctAABvLQAAby0AAIAtAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADOLQAA0C0AANYtAADYLQAA3i0AAC8uAAAvLgAABTAAAAcwAAAhMAAAKTAAADEwAAA1MAAAODAAADwwAABBMAAAljAAAJ0wAACfMAAAoTAAAPowAAD8MAAA/zAAAAUxAAAvMQAAMTEAAI4xAACgMQAAvzEAAPAxAAD/MQAAADQAAL9NAAAATgAAjKQAANCkAAD9pAAAAKUAAAymAAAQpgAAH6YAACqmAAArpgAAbqYAAG6mAAB/pgAAf6YAAKCmAADvpgAAF6cAAB+nAACIpwAAiKcAAI+nAACPpwAA96cAAPenAAD7pwAAAagAAAOoAAAFqAAAB6gAAAqoAAAMqAAAIqgAAECoAABzqAAAgqgAALOoAADyqAAA96gAAPuoAAD7qAAA/agAAP6oAAAKqQAAJakAADCpAABGqQAAYKkAAHypAACEqQAAsqkAAM+pAADPqQAA4KkAAOSpAADmqQAA76kAAPqpAAD+qQAAAKoAACiqAABAqgAAQqoAAESqAABLqgAAYKoAAHaqAAB6qgAAeqoAAH6qAACvqgAAsaoAALGqAAC1qgAAtqoAALmqAAC9qgAAwKoAAMCqAADCqgAAwqoAANuqAADdqgAA4KoAAOqqAADyqgAA9KoAAAGrAAAGqwAACasAAA6rAAARqwAAFqsAACCrAAAmqwAAKKsAAC6rAADAqwAA4qsAAACsAACj1wAAsNcAAMbXAADL1wAA+9cAAAD5AABt+gAAcPoAANn6AAAd+wAAHfsAAB/7AAAo+wAAKvsAADb7AAA4+wAAPPsAAD77AAA++wAAQPsAAEH7AABD+wAARPsAAEb7AACx+wAA0/sAAD39AABQ/QAAj/0AAJL9AADH/QAA8P0AAPv9AABw/gAAdP4AAHb+AAD8/gAAZv8AAJ3/AACg/wAAvv8AAML/AADH/wAAyv8AAM//AADS/wAA1/8AANr/AADc/wAAAAABAAsAAQANAAEAJgABACgAAQA6AAEAPAABAD0AAQA/AAEATQABAFAAAQBdAAEAgAABAPoAAQBAAQEAdAEBAIACAQCcAgEAoAIBANACAQAAAwEAHwMBAC0DAQBKAwEAUAMBAHUDAQCAAwEAnQMBAKADAQDDAwEAyAMBAM8DAQDRAwEA1QMBAFAEAQCdBAEAAAUBACcFAQAwBQEAYwUBAMAFAQDzBQEAAAYBADYHAQBABwEAVQcBAGAHAQBnBwEAgQcBAIIHAQAACAEABQgBAAgIAQAICAEACggBADUIAQA3CAEAOAgBADwIAQA8CAEAPwgBAFUIAQBgCAEAdggBAIAIAQCeCAEA4AgBAPIIAQD0CAEA9QgBAAAJAQAVCQEAIAkBADkJAQCACQEAtwkBAL4JAQC/CQEAAAoBAAAKAQAQCgEAEwoBABUKAQAXCgEAGQoBADUKAQBgCgEAfAoBAIAKAQCcCgEAwAoBAMcKAQDJCgEA5AoBAAALAQA1CwEAQAsBAFULAQBgCwEAcgsBAIALAQCRCwEAAAwBAEgMAQAADQEAIw0BAEoNAQBPDQEAbw0BAG8NAQCADgEAqQ4BALAOAQCxDgEAwg4BAMQOAQAADwEAHA8BACcPAQAnDwEAMA8BAEUPAQBwDwEAgQ8BALAPAQDEDwEA4A8BAPYPAQADEAEANxABAHEQAQByEAEAdRABAHUQAQCDEAEArxABANAQAQDoEAEAAxEBACYRAQBEEQEARBEBAEcRAQBHEQEAUBEBAHIRAQB2EQEAdhEBAIMRAQCyEQEAwREBAMQRAQDaEQEA2hEBANwRAQDcEQEAABIBABESAQATEgEAKxIBAD8SAQBAEgEAgBIBAIYSAQCIEgEAiBIBAIoSAQCNEgEAjxIBAJ0SAQCfEgEAqBIBALASAQDeEgEABRMBAAwTAQAPEwEAEBMBABMTAQAoEwEAKhMBADATAQAyEwEAMxMBADUTAQA5EwEAPRMBAD0TAQBQEwEAUBMBAF0TAQBhEwEAgBMBAIkTAQCLEwEAixMBAI4TAQCOEwEAkBMBALUTAQC3EwEAtxMBANETAQDREwEA0xMBANMTAQAAFAEANBQBAEcUAQBKFAEAXxQBAGEUAQCAFAEArxQBAMQUAQDFFAEAxxQBAMcUAQCAFQEArhUBANgVAQDbFQEAABYBAC8WAQBEFgEARBYBAIAWAQCqFgEAuBYBALgWAQAAFwEAGhcBAEAXAQBGFwEAABgBACsYAQD/GAEABhkBAAkZAQAJGQEADBkBABMZAQAVGQEAFhkBABgZAQAvGQEAPxkBAD8ZAQBBGQEAQRkBAKAZAQCnGQEAqhkBANAZAQDhGQEA4RkBAOMZAQDjGQEAABoBAAAaAQALGgEAMhoBADoaAQA6GgEAUBoBAFAaAQBcGgEAiRoBAJ0aAQCdGgEAsBoBAPgaAQDAGwEA4BsBAAAcAQAIHAEAChwBAC4cAQBAHAEAQBwBAHIcAQCPHAEAAB0BAAYdAQAIHQEACR0BAAsdAQAwHQEARh0BAEYdAQBgHQEAZR0BAGcdAQBoHQEAah0BAIkdAQCYHQEAmB0BAOAeAQDyHgEAAh8BAAIfAQAEHwEAEB8BABIfAQAzHwEAsB8BALAfAQAAIAEAmSMBAAAkAQBuJAEAgCQBAEMlAQCQLwEA8C8BAAAwAQAvNAEAQTQBAEY0AQBgNAEA+kMBAABEAQBGRgEAAGEBAB1hAQAAaAEAOGoBAEBqAQBeagEAcGoBAL5qAQDQagEA7WoBAABrAQAvawEAQGsBAENrAQBjawEAd2sBAH1rAQCPawEAQG0BAGxtAQAAbwEASm8BAFBvAQBQbwEAk28BAJ9vAQDgbwEA4W8BAONvAQDjbwEAAHABAPeHAQAAiAEA1YwBAP+MAQAIjQEA8K8BAPOvAQD1rwEA+68BAP2vAQD+rwEAALABACKxAQAysQEAMrEBAFCxAQBSsQEAVbEBAFWxAQBksQEAZ7EBAHCxAQD7sgEAALwBAGq8AQBwvAEAfLwBAIC8AQCIvAEAkLwBAJm8AQAK3wEACt8BAADhAQAs4QEAN+EBAD3hAQBO4QEATuEBAJDiAQCt4gEAwOIBAOviAQDQ5AEA6+QBANDlAQDt5QEA8OUBAPDlAQDg5wEA5ucBAOjnAQDr5wEA7ecBAO7nAQDw5wEA/ucBAADoAQDE6AEAS+kBAEvpAQAA7gEAA+4BAAXuAQAf7gEAIe4BACLuAQAk7gEAJO4BACfuAQAn7gEAKe4BADLuAQA07gEAN+4BADnuAQA57gEAO+4BADvuAQBC7gEAQu4BAEfuAQBH7gEASe4BAEnuAQBL7gEAS+4BAE3uAQBP7gEAUe4BAFLuAQBU7gEAVO4BAFfuAQBX7gEAWe4BAFnuAQBb7gEAW+4BAF3uAQBd7gEAX+4BAF/uAQBh7gEAYu4BAGTuAQBk7gEAZ+4BAGruAQBs7gEAcu4BAHTuAQB37gEAee4BAHzuAQB+7gEAfu4BAIDuAQCJ7gEAi+4BAJvuAQCh7gEAo+4BAKXuAQCp7gEAq+4BALvuAQAAAAIA36YCAACnAgA5twIAQLcCAB24AgAguAIAoc4CALDOAgDg6wIA8OsCAF3uAgAA+AIAHfoCAAAAAwBKEwMAUBMDAK8jAwAsAAAALQAAADoAAAA7AAAAfgMAAH4DAABdBQAAXQUAAAwGAAANBgAA+AcAAPgHAAACGAAAAhgAAAgYAAAIGAAAEyAAABQgAAABMAAAATAAABD+AAAR/gAAE/4AABT+AAAx/gAAMv4AAFD+AABR/gAAVP4AAFX+AABY/gAAWP4AAGP+AABj/gAADP8AAA3/AAAa/wAAG/8AAGT/AABk/wAAIQAAACEAAAA/AAAAPwAAAIkFAACJBQAAHQYAAB8GAADUBgAA1AYAAAAHAAACBwAA+QcAAPkHAAA3CAAANwgAADkIAAA5CAAAPQgAAD4IAABkCQAAZQkAAEoQAABLEAAAYhMAAGITAABnEwAAaBMAAG4WAABuFgAANRcAADYXAADUFwAA1RcAAAMYAAADGAAACRgAAAkYAABEGQAARRkAAKgaAACrGgAAThsAAE8bAABaGwAAWxsAAF4bAABfGwAAfRsAAH8bAAA7HAAAPBwAAH4cAAB/HAAAPCAAAD0gAABHIAAASSAAAPksAAD7LAAALi4AAC4uAAA8LgAAPC4AAFMuAABULgAAAjAAAAIwAAD/pAAA/6QAAA6mAAAPpgAA86YAAPOmAAD3pgAA96YAAHaoAAB3qAAAzqgAAM+oAAAvqQAAL6kAAMipAADJqQAAXaoAAF+qAADwqgAA8aoAAOurAADrqwAAEv4AABL+AAAV/gAAFv4AAFb+AABX/gAAAf8AAAH/AAAf/wAAH/8AAGH/AABh/wAAVgoBAFcKAQBVDwEAWQ8BAIYPAQCJDwEARxABAEgQAQC+EAEAwRABAEERAQBDEQEAxREBAMYRAQDNEQEAzREBAN4RAQDfEQEAOBIBADkSAQA7EgEAPBIBAKkSAQCpEgEA1BMBANUTAQBLFAEATBQBAMIVAQDDFQEAyRUBANcVAQBBFgEAQhYBADwXAQA+FwEARBkBAEQZAQBGGQEARhkBAEIaAQBDGgEAmxoBAJwaAQBBHAEAQhwBAPceAQD4HgEAQx8BAEQfAQBuagEAb2oBAPVqAQD1agEAN2sBADhrAQBEawEARGsBAG5tAQBvbQEAmG4BAJhuAQCfvAEAn7wBAIjaAQCI2gEAhQAAAIUAAAAoIAAAKSAAAAkAAAAJAAAACwAAAAwAAAAgAAAAIAAAAKAAAACgAAAAgBYAAIAWAAAAIAAACiAAAC8gAAAvIAAAXyAAAF8gAAAAMAAAADAAAEEAAABaAAAAwAAAANYAAADYAAAA3gAAAAABAAAAAQAAAgEAAAIBAAAEAQAABAEAAAYBAAAGAQAACAEAAAgBAAAKAQAACgEAAAwBAAAMAQAADgEAAA4BAAAQAQAAEAEAABIBAAASAQAAFAEAABQBAAAWAQAAFgEAABgBAAAYAQAAGgEAABoBAAAcAQAAHAEAAB4BAAAeAQAAIAEAACABAAAiAQAAIgEAACQBAAAkAQAAJgEAACYBAAAoAQAAKAEAACoBAAAqAQAALAEAACwBAAAuAQAALgEAADABAAAwAQAAMgEAADIBAAA0AQAANAEAADYBAAA2AQAAOQEAADkBAAA7AQAAOwEAAD0BAAA9AQAAPwEAAD8BAABBAQAAQQEAAEMBAABDAQAARQEAAEUBAABHAQAARwEAAEoBAABKAQAATAEAAEwBAABOAQAATgEAAFABAABQAQAAUgEAAFIBAABUAQAAVAEAAFYBAABWAQAAWAEAAFgBAABaAQAAWgEAAFwBAABcAQAAXgEAAF4BAABgAQAAYAEAAGIBAABiAQAAZAEAAGQBAABmAQAAZgEAAGgBAABoAQAAagEAAGoBAABsAQAAbAEAAG4BAABuAQAAcAEAAHABAAByAQAAcgEAAHQBAAB0AQAAdgEAAHYBAAB4AQAAeQEAAHsBAAB7AQAAfQEAAH0BAACBAQAAggEAAIQBAACEAQAAhgEAAIcBAACJAQAAiwEAAI4BAACRAQAAkwEAAJQBAACWAQAAmAEAAJwBAACdAQAAnwEAAKABAACiAQAAogEAAKQBAACkAQAApgEAAKcBAACpAQAAqQEAAKwBAACsAQAArgEAAK8BAACxAQAAswEAALUBAAC1AQAAtwEAALgBAAC8AQAAvAEAAMQBAADFAQAAxwEAAMgBAADKAQAAywEAAM0BAADNAQAAzwEAAM8BAADRAQAA0QEAANMBAADTAQAA1QEAANUBAADXAQAA1wEAANkBAADZAQAA2wEAANsBAADeAQAA3gEAAOABAADgAQAA4gEAAOIBAADkAQAA5AEAAOYBAADmAQAA6AEAAOgBAADqAQAA6gEAAOwBAADsAQAA7gEAAO4BAADxAQAA8gEAAPQBAAD0AQAA9gEAAPgBAAD6AQAA+gEAAPwBAAD8AQAA/gEAAP4BAAAAAgAAAAIAAAICAAACAgAABAIAAAQCAAAGAgAABgIAAAgCAAAIAgAACgIAAAoCAAAMAgAADAIAAA4CAAAOAgAAEAIAABACAAASAgAAEgIAABQCAAAUAgAAFgIAABYCAAAYAgAAGAIAABoCAAAaAgAAHAIAABwCAAAeAgAAHgIAACACAAAgAgAAIgIAACICAAAkAgAAJAIAACYCAAAmAgAAKAIAACgCAAAqAgAAKgIAACwCAAAsAgAALgIAAC4CAAAwAgAAMAIAADICAAAyAgAAOgIAADsCAAA9AgAAPgIAAEECAABBAgAAQwIAAEYCAABIAgAASAIAAEoCAABKAgAATAIAAEwCAABOAgAATgIAAHADAABwAwAAcgMAAHIDAAB2AwAAdgMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAI8DAACRAwAAoQMAAKMDAACrAwAAzwMAAM8DAADSAwAA1AMAANgDAADYAwAA2gMAANoDAADcAwAA3AMAAN4DAADeAwAA4AMAAOADAADiAwAA4gMAAOQDAADkAwAA5gMAAOYDAADoAwAA6AMAAOoDAADqAwAA7AMAAOwDAADuAwAA7gMAAPQDAAD0AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAACgEwAA9RMAAIkcAACJHAAAAB4AAAAeAAACHgAAAh4AAAQeAAAEHgAABh4AAAYeAAAIHgAACB4AAAoeAAAKHgAADB4AAAweAAAOHgAADh4AABAeAAAQHgAAEh4AABIeAAAUHgAAFB4AABYeAAAWHgAAGB4AABgeAAAaHgAAGh4AABweAAAcHgAAHh4AAB4eAAAgHgAAIB4AACIeAAAiHgAAJB4AACQeAAAmHgAAJh4AACgeAAAoHgAAKh4AACoeAAAsHgAALB4AAC4eAAAuHgAAMB4AADAeAAAyHgAAMh4AADQeAAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AAIgfAACPHwAAmB8AAJ8fAACoHwAArx8AALgfAAC8HwAAyB8AAMwfAADYHwAA2x8AAOgfAADsHwAA+B8AAPwfAAACIQAAAiEAAAchAAAHIQAACyEAAA0hAAAQIQAAEiEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAADAhAAAzIQAAPiEAAD8hAABFIQAARSEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAA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IAAASFUYAA4AAAAYVRgAAQAAAHBhdHRlcm4gbGVuZ3RoOiBoVRgAEAAAABhVGAABAAAAc2hvcnRlc3QgcGF0dGVybiBsZW5ndGg6IAAAAIhVGAAZAAAAGFUYAAEAAABsb25nZXN0IHBhdHRlcm4gbGVuZ3RoOiC0VRgAGAAAABhVGAABAAAAbWVtb3J5IHVzYWdlOiAAANxVGAAOAAAAGFUYAAEAAAApCgAA/FUYAAIAAAAoKTogAQAAAAAAAAAIVhgAAQAAAAlWGAADAAAAICAgICAgICAgbWF0Y2hlczogLCABAAAAAAAAAC0gPT4gAAAAAQAAAAAAAABAVhgAAQAAAEFWGAAEAAAAAQAAAAAAAABBVhgABAAAAEYgOgpwVhgAAgAAAHJWGAACAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL3JlbWFwcGVyLnJzAAAAhFYYAGkAAACZAAAAHwAAAAAAAAAEAAAABAAAABkFAABTbWFsbEluZGV4RXJyb3JhdHRlbXB0ZWQAAAAABAAAAAQAAABVBgAAU3RhdGVJREVycm9yU3RhbmRhcmRMZWZ0bW9zdEZpcnN0TGVmdG1vc3RMb25nZXN0CAAAAA0AAAAPAAAARFcYAExXGABZVxgAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwAAgFcYAFIAAABSAAAAEwAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAADkVxgASgAAAL4BAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9wYWNrZWQvYXBpLnJzAABAWBgAZgAAABkCAAAcAAAAQFgYAGYAAAAfAgAAMQAAAFYGAAAwAAAABAAAAFcGAABYBgAAAQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvdXRpbC9wcmVmaWx0ZXIucnMAAOBYGABqAAAAYAEAAA0AAABZBgAASAAAAAgAAABaBgAAWwYAAOBYGABqAAAAkQEAAB4AAABSYXJlQnl0ZU9mZnNldHMAXAYAAAwAAAAEAAAAXQYAAHNldADgWBgAagAAANgBAAAZAAAAAAAAAAIAAAABAAAAXgYAAF8GAAAAAAAAAgEAAAEAAABgBgAAYQYAAAAAAAADAQAAAQAAAGIGAABjBgAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZeBYGABqAAAAPQIAABYAAADgWBgAagAAACgCAAAVAAAA4FgYAGoAAACCAgAALwAAAOBYGABqAAAApAIAAC0AAADgWBgAagAAALwCAAA6AAAA4FgYAGoAAAC/AgAAOwAAAOBYGABqAAAA0wIAAEYAAADgWBgAagAAANYCAAA7AAAA4FgYAGoAAAD8AgAAFgAAAAAAAAABAAAAAQAAAGQGAABlBgAAAAAAAAIAAAABAAAAZgYAAGcGAAAAAAAAAwAAAAEAAABoBgAAaQYAAOBYGABqAAAAMQMAABYAAADgWBgAagAAABYDAAAkAAAA4FgYAGoAAAAiAwAAEQAAAOBYGABqAAAATwMAABkAAADgWBgAagAAAGEDAAAtAAAA4FgYAGoAAAByAwAAOgAAAOBYGABqAAAAhAMAAEYAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL3NlYXJjaC5yc2ludmFsaWQgbWF0Y2ggc3BhbgAAALtcGAASAAAAVFwYAGcAAABbAwAACQAAAAAAAAAEAAAABAAAAGoGAABQYWNrZWQAAAAAAAAEAAAABAAAANUEAABNZW1tZW0AAAAAAAAEAAAABAAAAGsGAABSYXJlQnl0ZU9mZnNldG1heAAAAAAAAAABAAAAAQAAAGwGAAAAAAAABAAAAAQAAABtBgAAUmFyZUJ5dGVzT25lYnl0ZTFvZmZzZXQAAAAAAAABAAABAAAAbgYAAFJhcmVCeXRlc1R3b29mZnNldHNieXRlMlJhcmVCeXRlc1RocmVlYnl0ZTNTdGFydEJ5dGVzT25lU3RhcnRCeXRlc1R3b1N0YXJ0Qnl0ZXNUaHJlZQAAAIAAAAAAAAAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAADkXRgASgAAAL4BAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9kZmEucnMAQF4YAF8AAACwAAAARQAAAG1hdGNoIHN0YXRlIG11c3QgaGF2ZSBub24tZW1wdHkgcGlkc7BeGAAkAAAAQF4YAF8AAAC3AAAACQAAAEBeGABfAAAAswAAABkAAABAXhgAXwAAALMAAAAhAAAAQF4YAF8AAAAWAQAAFQAAAEBeGABfAAAAHQEAAB0AAABkZmE6OkRGQSgKbWF0Y2gga2luZDogCgA2XxgADAAAAEJfGAABAAAAcHJlZmlsdGVyOiAAVF8YAAsAAABCXxgAAQAAAHN0YXRlIGxlbmd0aDogAABwXxgADgAAAEJfGAABAAAAcGF0dGVybiBsZW5ndGg6IJBfGAAQAAAAQl8YAAEAAABzaG9ydGVzdCBwYXR0ZXJuIGxlbmd0aDogAAAAsF8YABkAAABCXxgAAQAAAGxvbmdl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ahgABAAAAAEAAAAAAAAAVWoYAAQAAABBZRgAagAAALMDAAAlAAAAQWUYAGoAAADgAwAAIwAAAEFlGABqAAAA4QMAACEAAABBZRgAagAAAOIDAAAoAAAAQWUYAGoAAADjAwAAJgAAAEFlGABqAAAA7gMAABIAAABBZRgAagAAAO8DAAAaAAAAQWUYAGoAAADYAwAAJgAAAEFlGABqAAAA0gMAAB4AAABBZRgAagAAAMYDAAAiAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9uZmEvbm9uY29udGlndW91cy5ycwAAACRrGABtAAAAIgEAACAAAAAkaxgAbQAAADIBAAAhAAAAAAAAAAQAAAAEAAAAVQYAAFN0YXRlSURFcnJvclN0YW5kYXJkTGVmdG1vc3RGaXJzdExlZnRtb3N0TG9uZ2VzdAgAAAANAAAADwAAANBrGADYaxgA5WsYAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvYXV0b21hdG9uLnJzAAAADGwYAGUAAAAmBQAALQAAAAxsGABlAAAA1wUAAA0AAAAgICA+KiAqPkQgAAAAAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9kZmEucnMApGwYAF8AAADhAAAAEwAAAKRsGABfAAAABQEAABoAAACkbBgAXwAAABYBAAAVAAAApGwYAF8AAAAdAQAAFQAAAKRsGABfAAAAHQEAAB0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL25mYS9jb250aWd1b3VzLnJzAABUbRgAagAAAMUAAAAcAAAAVG0YAGoAAADdAAAAGQAAAFRtGABqAAAA3QAAACIAAABUbRgAagAAAOoAAAAtAAAAVG0YAGoAAADnAAAALQAAAFRtGABqAAAA5AAAAC0AAABUbRgAagAAAOEAAAAtAAAAVG0YAGoAAADUAAAAKQAAAFRtGABqAAAAzgAAACkAAABUbRgAagAAAPUAAAAgAAAAVG0YAGoAAAAaAQAAGgAAAFRtGABqAAAAKQEAADcAAABUbRgAagAAADABAAAXAAAAVG0YAGoAAAApAgAACQAAAFRtGABqAAAATwIAAA0AAABUbRgAagAAAEoCAAANAAAAVG0YAGoAAABxAgAAFgAAAFRtGABqAAAAcwIAAA0AAABUbRgAagAAAHUCAAANAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9uZmEvbm9uY29udGlndW91cy5ycwAAAPBuGABtAAAAIgEAACAAAADwbhgAbQAAADIBAAAhAAAA8G4YAG0AAABUAQAAHQAAAPBuGABtAAAAZgEAABcAAADwbhgAbQAAAHACAAAeAAAA8G4YAG0AAACZAgAAGgAAAPBuGABtAAAArQIAACsAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvc2VhcmNoLnJzaW52YWxpZCBtYXRjaCBzcGFuAAAAN3AYABIAAADQbxgAZwAAAFsDAAAJAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAGRwGABKAAAAvgEAAB0AAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmJ5X2lkLmxlbigpIDw9IHUxNjo6TUFYIGFzIHVzaXplL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9wYWNrZWQvcGF0dGVybi5ycwAAAPdwGABqAAAASAAAAAkAAAD3cBgAagAAAEsAAAAUAAAA93AYAGoAAABMAAAAFAAAAGFzc2VydGlvbiBmYWlsZWQ6ICFieXRlcy5pc19lbXB0eSgpAPdwGABqAAAARwAAAAkAAAD3cBgAagAAAF0AAAAaAAAA93AYAGoAAABdAAAAMAAAAPdwGABqAAAAjwAAABwAAAD3cBgAagAAAMgAAAAlAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAAhyGABKAAAAYgMAAAkAAAAIchgASgAAAL4BAAAdAAAACHIYAEoAAACoAQAAHwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvbmZhL25vbmNvbnRpZ3VvdXMucnMAAACEchgAbQAAADIBAAAhAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9wYWNrZWQvcGF0dGVybi5ycwAABHMYAGoAAABdAAAAGgAAAARzGABqAAAAXQAAADAAQZjn4QAL8zMBAAAAeQYAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAAAAAAQAAAAEAAAAegYAAENvd0J5dGVzewYAAAwAAAAEAAAAfAYAAAAAAAAEAAAABAAAAH0GAABGaW5kZXJuZWVkbGVzZWFyY2hlci9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNS9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAAAAYdBgAbQAAAMMAAAAJAAAAGHQYAG0AAAC8AAAAKgAAABh0GABtAAAAuQAAACoAAAAYdBgAbQAAADoAAAAVAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5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ACQAAABhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLm5vZGUuaGVpZ2h0IC0gMQAAAAR7GABbAAAA+gMAAAkAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwBQfBgAXwAAAFgCAAAwAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAAAAACAAAAAQAAAC4BgAAAAAAAAQAAAAEAAAAawYAAAAAAAAEAAAABAAAALkGAAAAAAAABAAAAAQAAAC6BgAAAAAAAAQAAAAEAAAAoQQAAAAAAAAEAAAABAAAALsGAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwBMfRgAXwAAAMYAAAAnAAAAAAAAAAQAAAAEAAAAtwYAAAAAAAAEAAAABAAAALwGAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlbk5vbmVTb21lL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL2FscGhhYmV0LnJzQnl0ZUNsYXNzZXMoKQB2fhgAAQAAACwgID0+IFsAAQAAAAAAAACCfhgABQAAAF0tAAABAAAAAAAAAJl+GAABAAAAAQAAAAAAAABCeXRlQ2xhc3Nlcyg8b25lLWNsYXNzLXBlci1ieXRlPikAAAABfhgAaQAAAPUAAAAuAAAAJyAnL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL2RlYnVnLnJzAAAA634YAGYAAAAYAAAAPQAAAOt+GABmAAAAFQAAAA0AAAAAAAAABAAAAAQAAAAZBQAAU21hbGxJbmRleEVycm9yYXR0ZW1wdGVkUGF0dGVybklEAAAAAAAAAAQAAAAEAAAAvQYAAP///38vaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvcHJpbWl0aXZlcy5yc1N0YXRlSURjYW5ub3QgY3JlYXRlIGl0ZXJhdG9yIGZvciBTdGF0ZUlEIHdoZW4gbnVtYmVyIG9mIGVsZW1lbnRzIGV4Y2VlZCAugBgAQgAAALx/GABrAAAA4QIAAAEAAAAAAAAABAAAAAQAAAC+BgAAQm9ycm93ZWQAAAAABAAAAAQAAAC+BgAAT3duZWQvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAAALWAGABQAAAALgIAABEAAAAAAAAABAAAAAQAAABrBgAAAAAAAAQAAAAEAAAAvwYAAAAAAAAEAAAABAAAAMAGAAAAAAAABAAAAAQAAADBBgAAAAAAAAQAAAAEAAAAuwYAAAAAAAAEAAAABAAAAMIGAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzeIEYAFgAAADBBwAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBhdHRlcm5zLmxlbigpID49IDEvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3BhY2tlZC9yYWJpbmthcnAucnMAAAAFghgAbAAAAD0AAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogaGFzaF9sZW4gPj0gMQAFghgAbAAAAD8AAAAJAAAABYIYAGwAAABIAAAAFgAAAAWCGABsAAAATQAAACwAAAAFghgAbAAAAE8AAAAXAAAABYIYAGwAAABPAAAAIAAAAEAAAAAFghgAbAAAAFsAAAAJAAAABYIYAGwAAABgAAAAKwAAAAWCGABsAAAAbwAAABEAAAAFghgAbAAAAI4AAAAjAAAABYIYAGwAAACXAAAACQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvdXRpbC9yZW1hcHBlci5ycwAAAEiDGABpAAAAcgAAABIAAABIgxgAaQAAAIkAAAAfAAAASIMYAGkAAACMAAAAJAAAAEiDGABpAAAAkQAAACAAAABIgxgAaQAAAJMAAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL3NlYXJjaC5yc2ludmFsaWQgbWF0Y2ggc3BhbgAAAGuEGAASAAAABIQYAGcAAABbAwAACQAAACgpL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9wYWNrZWQvYXBpLnJzmoQYAGYAAACHAgAAKQAAAC4uAAABAAAAAAAAABCFGAACAAAAwwYAAAQAAAAEAAAApgQAAMQGAAAYAAAABAAAAMUGAADGBgAAEAAAAAQAAADHBgAAAAAAAAQAAAAEAAAAoQQAAFNlYXJjaGVycGF0dGVybnNyYWJpbmthcnBzZWFyY2hfa2luZG1pbmltdW1fbGVuAAAAAAAEAAAABAAAAKsEAABUZWRkeVJhYmluS2FycC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvcGFja2VkL3BhdHRlcm4ucnOyhRgAagAAABMAAAAKAAAAyAYAAAwAAAAEAAAArwQAAAAAAAAEAAAABAAAAMkGAABidWNrZXRzaGFzaF9sZW5oYXNoXzJwb3fKBgAACAAAAAQAAADLBgAAaW1wbWVtb3J5X3VzYWdlL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9xdWlja3NvcnQucnNtaWQgPiBsZW4A4oYYAAkAAACDhhgAXwAAAE4AAAAfAAAAg4YYAF8AAABIAAAAFwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvcGFja2VkL3BhdHRlcm4ucnMAABSHGABqAAAAXQAAABoAAAAUhxgAagAAAF0AAAAwAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFya2luZ19sb3RfY29yZS0wLjkuMTEvc3JjL3BhcmtpbmdfbG90LnJzoIcYAGwAAABrAQAAFwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzY2FwYWNpdHkgb3ZlcmZsb3cAAAAciBgAXAAAANIEAAAOAAAAYXNzZXJ0aW9uIGZhaWxlZDogbmV3X2NhcCA+PSBsZW4ciBgAXAAAAJ0EAAANAAAAAAAAAAwAAAAEAAAAzAYAAM0GAAD8////L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZGFzaG1hcC01LjUuMy9zcmMvbG9jay5ycwDkiBgAWwAAAJUAAAAJAAAAAAAAAP/////kiBgAWwAAAJ8AAAARAAAAAgAAAOSIGABbAAAArwAAAAkAAADkiBgAWwAAAJgAAAAJAAAAcmVhZGVyIGNvdW50IG92ZXJmbG93ZWQAjIkYABcAAADkiBgAWwAAAOUAAAAVAAAAAAAAAAgAAAAEAAAAzgYAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwD3iRgAUAAAAC4CAAARAAAAAAAAAAQAAAAEAAAAzwYAAAAAAAAEAAAABAAAANAGAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlbk5vbmUAAAAAAAAABAAAAAQAAADRBgAAU29tZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Jhc2U2NC0wLjIyLjEvc3JjL2NodW5rZWRfZW5jb2Rlci5ycwAAsIoYAGYAAABDAAAAMAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuY29kZS5ycwAAACiLGABdAAAAigAAAAkAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL21vZC5ycwAAAJiLGABxAAAAlgAAAA0AAACYixgAcQAAAJgAAABAAAAAmIsYAHEAAACXAAAADQAAAJiLGABxAAAAmgAAAA0AAACYixgAcQAAAJ4AAAANAAAAmIsYAHEAAACfAAAADQAAAJiLGABxAAAAhwAAACUAAACYixgAcQAAAIgAAAArAAAAmIsYAHEAAABAAAAAGwAAAJiLGABxAAAAQgAAACAAAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtrIwYACgAAAAkAAAAAgAAANSMGAAAAAAACAAAAAQAAADVBgAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAAAAI40YAEoAAAC+AQAAHQAAAP//////////gI0YAEGYm+IAC2UvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfY29tbW9uLTE0LjAuMi9zcmMvc291cmNlX21hcC5ycwBBiJziAAvNDAEAAADXBgAA2AYAANkGAACYjRgAZQAAAAQBAAAgAAAAmI0YAGUAAAAlAQAAJwAAAJiNGABlAAAAKgEAADQAAACYjRgAZQAAAEoBAAAxAAAAOiBicG9zID0gOyBsaW5lYnBvcyA9IDsAAQAAAAAAAABYjhgACQAAAGGOGAANAAAAbo4YAAEAAACYjRgAZQAAAEsBAAARAAAAmI0YAGUAAABhAQAAGQAAAEZpZWxkU2V0IGNvcnJ1cHRlZCAodGhpcyBpcyBhIGJ1ZykAAAAAAAAYAAAABAAAAKYBAACYjRgAZQAAAN4DAAA1AAAAmI0YAGUAAADlAwAANgAAAG1hcC5zdGFydF9wb3MgPSA7IHRvdGFsX2V4dHJhX2J5dGVzID0gOyBicG9zID0gAASPGAAQAAAAFI8YABYAAAAqjxgACQAAAJiNGABlAAAA7AMAAAkAAACYjRgAZQAAABkEAAAQAAAAmI0YAGUAAADKBAAAMAAAAJiNGABlAAAAywQAAA0AAAAtYnl0ZSBjaGFyIGF0IAAAAQAAAAAAAACMjxgADgAAAJiNGABlAAAAtgQAADAAAACYjRgAZQAAALcEAAANAAAAmI0YAGUAAACnBQAAEAAAAHN3Y19jb21tb246OnNvdXJjZV9tYXBtZXNzYWdlAAAA8o8YAAcAAAAAAAAADAAAAAQAAACNAwAA2gYAANsGAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfY29tbW9uLTE0LjAuMi9zcmMvc291cmNlX21hcC5yczoxMjA3AQAAALcEAAABAAAAHJAYAHAAAADcjxgAFgAAAPyPGAABAAAAsCIaAASQGADcjxgAFgAAAJiNGABlAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19jb21tb24tMTQuMC4yL3NyYy9zb3VyY2VfbWFwLnJzOjEyMjcBAAAAywQAAAEAAADMkBgAcAAAANyPGAAWAAAA/I8YAAEAAAC8IhoABJAYANyPGAAWAAAAmI0YAGUAAAABAAAAAAAAAAQAAAAEAAAA3AYAAEJ5dGVQb3MAAAAAAAQAAAAEAAAAlwAAAE5vRmlsZUZvci9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnOtkRgATwAAABUBAAAZAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2NvbW1vbi0xNC4wLjIvc3JjL2Vycm9ycy9tb2QucnMAAAAMkhgAZQAAAFoDAAAfAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdW5pY29kZS13aWR0aC0wLjEuMTQvc3JjL3RhYmxlcy5yc4SSGABkAAAAkQAAABUAAACEkhgAZAAAAJcAAAAZAAAAYXNzZXJ0aW9uIGZhaWxlZDogc291cmNlX2ZpbGVfZW5kID49IGxhc3RfbGluZV9zdGFydC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19jb21tb24tMTQuMC4yL3NyYy9zeW50YXhfcG9zL2FuYWx5emVfc291cmNlX2ZpbGUucnMAAAA8kxgAeQAAACoAAAAJAAAAPJMYAHkAAABqAAAAGAAAADyTGAB5AAAAagAAAC0AAAA8kxgAeQAAAHUAAAAiAAAAPJMYAHkAAAB9AAAAIgAAADyTGAB5AAAAVQAAAB8AAAA8kxgAeQAAAFkAAAAbAAAAPJMYAHkAAABdAAAAGwAAADyTGAB5AAAAYAAAACYAAAA8kxgAeQAAAGMAAAAmAEHgqOIAC50GAQAAAN0GAADeBgAA3wYAAHSUGADQlhgAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2NvbW1vbi0xNC4wLjIvc3JjL2Vycm9ycy9tb2QucnNubyBlcnJvcnMgZW5jb3VudGVyZWQgZXZlbiB0aG91Z2ggYGRlbGF5X3NwYW5fYnVnYCBpc3N1ZWQAAN2UGAA5AAAAeJQYAGUAAACaAQAAEQAAAGVuY291bnRlcmVkIGVycm9yIHdpdGggYC1aIHRyZWF0X2Vycl9hc19idWcAMJUYACsAAAB4lBgAZQAAAGcCAAANAAAA4AYAAE1hY2hpbmVBcHBsaWNhYmxlSGFzUGxhY2Vob2xkZXJzTWF5YmVJbmNvcnJlY3RVbnNwZWNpZmllZAAAAOEGAAAMAAAABAAAAOIGAADjBgAADAAAAAQAAADkBgAAAAAAAAEAAAABAAAA5QYAAAAAAAAEAAAABAAAAOYGAABDb2RlU3VnZ2VzdGlvbnN1YnN0aXR1dGlvbnNtc2dzaG93X2NvZGVfd2hlbl9pbmxpbmVhcHBsaWNhYmlsaXR5AAAAAAQAAAAEAAAA5wYAAFN1YnN0aXR1dGlvbnBhcnRzAAAAAAAAAAgAAAAEAAAAoQEAAAAAAAAEAAAABAAAAEECAABTdWJzdGl0dXRpb25QYXJ0c3BhbnNuaXBwZXRCdWdGYXRhbFBoYXNlRmF0YWxFcnJvcldhcm5pbmdOb3RlSGVscENhbmNlbGxlZEZhaWx1cmVOb3RlAAAA6AYAABEAAAAPAAAADgAAAAsAAAB4lRgAiZUYAJiVGACmlRgAAwAAAAUAAAAKAAAABQAAAAcAAAAEAAAABAAAAAkAAAALAAAAk5YYAJaWGACblhgApZYYAKqWGACxlhgAtZYYALmWGADClhgAb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybTyXGAAoAAAAJAAAAAIAAABklxgAIwAAAAEAQYiv4gALIwQAAAAEAAAAMAQAAOkGAADqBgAAAAAAAP//////////oJcYAEG4r+IAC7kTeJcYAAEAAABOb25lU29tZQAAAAAEAAAABAAAAOsGAABhc3NlcnRpb24gZmFpbGVkOiBzdGFydCA8PSBlbmQvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfY29tbW9uLTE0LjAuMi9zcmMvaW5wdXQucnMAAPaXGABgAAAAHwAAAAkAAABNYWluSGVhZGVyTXNnSGVhZGVyTXNnTGluZUFuZENvbHVtbkxpbmVOdW1iZXJRdW90YXRpb25VbmRlcmxpbmVQcmltYXJ5VW5kZXJsaW5lU2Vjb25kYXJ5TGFiZWxQcmltYXJ5TGFiZWxTZWNvbmRhcnlPbGRTY2hvb2xOb3RlVGV4dE5vU3R5bGUAAAAAAAAEAAAABAAAAOwGAABMZXZlbEhpZ2hsaWdodAAAAAAAAAQAAAAEAAAA7QYAAAAAAAAEAAAABAAAAO4GAAAAAAAABAAAAAQAAADvBgAAAAAAAAQAAAAEAAAA8AYAAAAAAAAEAAAABAAAAPEGAAAAAAAABAAAAAQAAADyBgAAAAAAAAQAAAAEAAAAPwIAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAACEmRgASgAAAL4BAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX2NvbW1vbi0xNC4wLjIvc3JjL2Vycm9ycy9kaWFnbm9zdGljX2J1aWxkZXIucnNFcnJvciBjb25zdHJ1Y3RlZCBidXQgbm90IGVtaXR0ZWQAAADgmRgAdAAAAF0BAAANAAAA8wYAAAwAAAAEAAAA9AYAAAAAAAAEAAAABAAAAPUGAABNZXNzYWdlAAAAAAAEAAAABAAAAPYGAAD3BgAADAAAAAQAAAA+AQAA+AYAABgAAAAEAAAA+QYAAGxldmVsbWVzc2FnZXNwYW4AAAAABAAAAAQAAABBAgAARXJyb3JMaW50AAAAAAAAAAQAAAAEAAAA+gYAAFN1YkRpYWdub3N0aWNyZW5kZXJfc3BhbkJ1Z0ZhdGFsUGhhc2VGYXRhbFdhcm5pbmdOb3RlSGVscENhbmNlbGxlZEZhaWx1cmVOb3RlAAAA+wYAAAwAAAAEAAAAOgEAAAAAAAAEAAAABAAAADsBAABNdWx0aVNwYW5wcmltYXJ5X3NwYW5zc3Bhbl9sYWJlbHMAAAADAAAABQAAAAoAAAAFAAAABwAAAAQAAAAEAAAACQAAAAsAAAA0mxgAN5sYADybGAAAmxgARpsYAE2bGABRmxgAVZsYAF6bGAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJz+JsYAEwAAABWCgAAJAAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAABUnBgASgAAAKgBAAAfAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5yc7CcGABYAAAAwQcAAAkAAAAuLgAAAQAAAAAAAAAYnRgAAgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19jb21tb24tMTQuMC4yL3NyYy9zeW50YXhfcG9zLnJzAAAAAQAAAAAAAAA8IG1hY3Jvcz4AAACcnRgAAQAAAJ2dGAAIAAAAPHF1b3RlIGV4cGFuc2lvbj48YW5vbj48bWFjcm8gZXhwYW5zaW9uPjxwcm9jLW1hY3JvIHNvdXJjZSBjb2RlPj4AAACcnRgAAQAAAPidGAABAAAALJ0YAGUAAABTAgAAGgAAACydGABlAAAAlAIAAB0AAABhc3NlcnRpb24gZmFpbGVkOiBsaW5lX2luZGV4IDwgYW5hbHlzaXMubGluZXMubGVuKCkgYXMgaXNpemUsnRgAZQAAAKkDAAAJAAAAAAAAAAgAAAAEAAAAoQEAAAAAAAAEAAAABAAAAEECAABQcmltYXJ5U3BhbkxhYmVs/gYAAAwAAAAEAAAAOgEAAAAAAAAEAAAABAAAADsBAABNdWx0aVNwYW5wcmltYXJ5X3NwYW5zc3Bhbl9sYWJlbHMAAAAAAAAABAAAAAQAAADcBgAAQnl0ZVBvcwAAAAAABAAAAAQAAAD/BgAAAAcAAAAHAAAAAAAABAAAAAQAAAABBwAAAgcAAAIHAAAAAAAABAAAAAQAAAADBwAABAcAAAQHAAAAAAAADAAAAAQAAAAFBwAABgcAAAAAAAAMAAAABAAAAAcHAAAIBwAATGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAB0nxgAKgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL29uY2VfY2VsbC0xLjIxLjMvc3JjL2xpYi5ycwAAAKifGABdAAAAHwUAABkAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2NfY29tbW9uLTE0LjAuMi9zcmMvc3ludGF4X3Bvcy5ycwAAABigGABlAAAAyAMAAEMAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAJCgGABPAAAAFQEAABkAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi91bmljb2RlLXdpZHRoLTAuMS4xNC9zcmMvdGFibGVzLnJz8KAYAGQAAACRAAAAFQAAAPCgGABkAAAAlwAAABkAQYHD4gALhwEBAgMDBAUGBwgJCgsMDQ4DAwMDAwMDDwMDAwMDAwMPCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkQCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAQYHF4gALnwsBAgICAgMCAgQCBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHQICHgICAgICAgIfICEiIwIkJSYnKCkCKgICAgIrLAICAgItLgICAi8wMTIzAgICAgICNAICNTY3Ajg5Ojs8PT4/OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5QDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlBAgJCQwICREVGR0hJAko5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlLAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICOTk5OUwCAgICAk1OT1ACAgJRAlJTAgICAgICAgICAgICAlRVAgJWAlcCAlhZWltcXV5fYGECYmMCZGVmZwJoAmlqa2wCAm1ub3ACcXICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dQICAgICAgJ2dzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5eDk5OTk5OTk5OXl6AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ7OTl8OTl9AgICAgICAgICAgICAgICAgICAn4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ/AgICgIGCAgICAgICAgICAgICAgICg4QCAgICAgICAgIChYZ1AgKHAgICiAICAgICAgKJigICAgICAgICAgICAgKLjAKNjgKPkJGSk5SVlgKXAgKYmZqbAgICAgICAgICAjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OZwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJ0CAgICnp8CBAIFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdAgIeAgICAgICAh8gISIjAiQlJicoKQIqAgICAqChoqOkpaYup6ipqqusrTMCAgICAgKuAgI1NjcCODk6Ozw9Pq85OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlMAgICAgKwTk+xhYZ1AgKHAgICiAICAgICAgKJigICAgICAgICAgICAgKLjLKzjgKPkJGSk5SVlgKXAgKYmZqbAgICAgICAgICAlVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBBvNDiAAspVVVVVRUAUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQEAQe/Q4gALxAEQQRBVVVVVVVdVVVVVVVVVVVVRVVUAAEBU9d1VVVVVVVVVVRUAAAAAAFVVVVX8XVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBQAUABQEUFVVVVVVVVUVUVVVVVVVVVUAAAAAAABAVVVVVVVVVVVV1VdVVVVVVVVVVVVVVQUAAFRVVVVVVVVVVVVVVVVVFQAAVVVRVVVVVVUFEAAAAQFQVVVVVVVVVVVVVQFVVVVVVf////9/VVVVUFUAAFVVVVVVVVVVVVUFAEHA0uIAC5gEQFVVVVVVVVVVVVVVVVVFVAEAVFEBAFVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVEAVRVUVUVVVUFVVVVVVVVRUFVVVVVVVVVVVVVVVVVVVRBFRRQUVVVVVVVVVVQUVVVQVVVVVVVVVVVVVVVVVVVVAEQVFFVVVVVBVVVVVVVBQBRVVVVVVVVVVVVVVVVVVUEAVRVUVUBVVUFVVVVVVVVVUVVVVVVVVVVVVVVVVVVVUVUVVVRVRVVVVVVVVVVVVVVVFRVVVVVVVVVVVVVVVVVBFQFBFBVQVVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVUURAUEUFVBVVUFVVVVVVVVVVBVVVVVVVVVVVVVVVVVFUQBVFVBVRVVVQVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVRRUFRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVRAEBVVRUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAAFRVVQBAVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVRFRVVVVVVVVVVVVVVVVVQEAAEAABFUBAAABAAAAAAAAAABUVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAQQAQUFVVVVVVVVQBVRVVVUBVFVVRUFVUVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoAQYDX4gALkANVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQFVVVVVVVVVVVVVVVUFVFVVVVVVVQVVVVVVVVVVBVVVVVVVVVUFVVVVf//99//911931tXXVRAAUFVFAQAAVVdRVVVVVVVVVVVVVRUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFVRVRVUBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVxUUVVVVVVVVVVVVVVVVVVVFAEBEAQBUFQAAFFVVVVVVVVVVVVVVVQAAAAAAAABAVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVQAAUAVVVVVVVVVVVVUVAABVVVVQVVVVVVVVVQVQEFBVVVVVVVVVVVVVVVVVRVARUFVVVVVVVVVVVVVVVVVVAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAABABUUVVUUFVVVVVVVVVVVVVVVVVVVVVVAEGg2uIAC5MIVVUVAFVVVVVVVQVAVVVVVVVVVVVVVVVVAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAVFVVVVVVVVVVVfVVVVVpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX9V9dVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVfVVVVVVVX1VVVVVVVVVVVVVVVf///1VVVVVVVVVVVVXVVVVVVdVVVVVdVfVVVVVVfVVfVXVVV1VVVVV1VfVddV1VXfVVVVVVVVVVV1VVVVVVVVVVd9XfVVVVVVVVVVVVVVVVVVVV/VVVVVVVVVdVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1VdVVVVVVVVVVVVVVVVXXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVUFVVVVVVVVVVVVVVVVVVVf3///////////////9fVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAACqqqqqqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVaqqqqqqqqqqqqqqqqqqCgCqqqpqqaqqqqqqqqqqqqqqqqqqqqqqqqqqaoGqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVamqqqqqqqqqqqqqqaqqqqqqqqqqqqqqqqiqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVWVqqqqqqqqqqqqqqpqqqqqqqqqqqqqqlVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVVVVVVVVVVVVVVVVVVVWqqqpWqqqqqqqqqqqqqqqqqmpVVVVVVVVVVVVVVVVVX1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVAAABQVVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVFRRVVVVVVVVVBVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVQAAAABQVUUVVVVVVVVVVVVVBQBQVVVVVVUVAABQVVVVqqqqqqqqqlZAVVVVVVVVVVVVVVUVBVBQVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVUBQEFBVVUVVVVUVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVBBRUBVFVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVRRVVVVVaqqqqqqqqqqqlVVVQAAAAAAQBUAQb/i4gAL4QxVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAADwqqpaVQAAAACqqqqqqqqqqmqqqqqqaqpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVlVVVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVWqalVVAABUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVAVQFBVQBVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVUVVVVVVVVVVVVVVVVVVVVVVVVVQFVVVVVVVVVVVVVVVVVVVVVVQUAAFRVVVVVVVVVVVVVVQVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVUAAABAVVVVVVVVVVVVVRRUVRVQVVVVVVVVVVVVVVUVQEFVRVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVRUAAQBUVVVVVVVVVVVVVVVVVVUVVVVVUFVVVVVVVVVVVVVVVQUAQAVVARRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVQBFVFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFRUAQFVVVVVVUFVVVVVVVVVVVVVVVVUVRFRVVVVVFVVVVQUAVABUVVVVVVVVVVVVVVVVVVVVVQAABURVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVRQARBEEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVBVBVEFRVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVUVAEARVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVUQAQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQEFEABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUAAEFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVFQQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAVVVFVVVVVVVVUBAEBVVVVVVVVVVVUVAARAVRVVVQFAAVVVVVVVVVVVVVUAAAAAQFBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAEAAEFVVVVVVVVVVVVVVVVVVVVVVVVVVBQAAAAAABQAEQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQFARRAAAFVVVVVVVVVVVVVVVVVVVVVVVVARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVRVVUBVVVVVVVVVVVVVVVUFQFVEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVAAAAUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFRVVVVVVVVVVVVVVVVVVQBAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVUVQFVVVVVVVVVVVVVVVVVVVVVVVVWqVFVVWlVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVVVVVVWqqlZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqappqqqqqqqqqqpqVVVVZVVVVVVVVVVqWVVVVapVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVVVVVVVVVVBAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAEGr7+IAC3VQAAAAAABAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEVAFAAAAAEABAFVVVVVVVVUFUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVUAQa3w4gALAkAVAEG78OIAC8UGVFVRVVVVVFVVVVUVAAEAAABVVVVVVVVVVVVVVVVVVVVVVVVVVQBAAAAAABQAEARAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBAVVVVVVVVVVVVVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVVVVVVVVVVVVVVVVVVVVV1/f9/VVVVVVVVVVVVVVVVVVVVVVVV9f///////25VVVWqqrqqqqqq6vq/v1WqqlZVX1VVVapaVVVVVVVV//////////9XVVX9/9////////////////////////f//////1VVVf////////////9/1f9VVVX/////V1f//////////////////////3/3/////////////////////////////////////////////////////////////9f///////////////////9fVVXVf////////1VVVVV1VVVVVVVVfVVVVVdVVVVVVVVVVVVVVVVVVVVVVVVVVdX///////////////////////////9VVVVVVVVVVVVVVVX//////////////////////19VV3/9Vf9VVdVXVf//V1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf///1VXVVVVVVVV//////////////9////f/////////////////////////////////////////////////////////////1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX///9X//9XVf//////////////3/9fVfX///9V//9XVf//V1WqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVVVVWZZVYaqlWapVVVVVVZVVVVVVVVVVlVVVAEGO9+IACwEDAEGc9+IAC+wHVVVVVVWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVAJZqWlpqqgVAplmVZVVVVVVVVVVVAAAAAFVWVVWpVlVVVVVVVVVVVVZVVVVVVVVVVQAAAAAAAAAAVFVVVZVZWVVVZVVVaVVVVVVVVVVVVVVVlVaVaqqqqlWqqlpVVVVZVaqqqlVV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a2luZyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0AADDFGAAmAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFya2luZ19sb3RfY29yZS0wLjkuMTEvc3JjL3RocmVhZF9wYXJrZXIvd2FzbS5ycwBgxRgAcwAAABoAAAAJAAAAYMUYAHMAAAAeAAAACQAAAGDFGABzAAAAIgAAAAkAAABgxRgAcwAAACYAAAAJAAAAYMUYAHMAAAAqAAAACQAAAHVsbHJ1ZWFsc2UvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDEvc3JjL2RlLnJzLsYYAF4AAAB3BAAAIgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUuxhgAXgAAAKAEAAAiAAAALsYYAF4AAACWBAAAJgBB7I3jAAvVAQEAAAAJBwAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQxL3NyYy92YWx1ZS9kZS5yc/TGGABkAAAAcgAAABkAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAaMcYAEoAAAC+AQAAHQBBzI/jAAsGAQAAAAoHAEHcj+MACwYBAAAACgcAQeyP4wALBgEAAAAKBwBB/I/jAAsGAQAAAAoHAEGMkOMACwYBAAAACgcAQZyQ4wALBgEAAAAKBwBBrJDjAAsGAQAAAAoHAEG8kOMACwYBAAAACgcAQcyQ4wALBgEAAAAKBwBB3JDjAAsFAQAAAB0AQeyQ4wALBgEAAAALBwBB/JDjAAsGAQAAAAwHAEGMkeMACwYBAAAADQcAQZyR4wALBgEAAAAOBwBBrJHjAAsGAQAAAA8HAEG8keMAC40EAQAAABAHAABzdHJ1Y3QgUmF3U2VjdGlvbk9mZnNldCB3aXRoIDIgZWxlbWVudHMAxMgYACcAAAAAAAAACAAAAAQAAAAeAAAAbGluZWNvbHVtbnN0cnVjdCBSYXdTZWN0aW9uIHdpdGggMyBlbGVtZW50cwAOyRgAIQAAAG9mZnNldHVybG1hcHN0cnVjdCBGYWNlYm9va1Njb3BlTWFwcGluZyB3aXRoIDIgZWxlbWVudHMARMkYACsAAABuYW1lc21hcHBpbmdzc3RydWN0IFJhd1NvdXJjZU1hcCB3aXRoIDE1IGVsZW1lbnRzAAAAhckYACQAAAB2ZXJzaW9uZmlsZXNvdXJjZXNzb3VyY2VSb290c291cmNlc0NvbnRlbnRzZWN0aW9uc3JhbmdlTWFwcGluZ3NpZ25vcmVMaXN0eF9mYWNlYm9va19vZmZzZXRzeF9tZXRyb19tb2R1bGVfcGF0aHN4X2ZhY2Vib29rX3NvdXJjZXNkZWJ1Z19pZGRlYnVnSWQvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvc3BlY19mcm9tX2l0ZXJfbmVzdGVkLnJzAABEyhgAXgAAADQAAAAFAAAAEQcAAAwAAAAEAAAAEgcAABMHAAAFAEHUleMAC9ECAQAAABQHAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAAATyxgASwAAANEKAAAOAAAARXJyb3IvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwB1yxgASgAAAGIDAAAJAAAAE8sYAEsAAAB/BQAAGgAAABPLGABLAAAAfQUAABsAAAATyxgASwAAAFgEAAASAAAAdcsYAEoAAACoAQAAHwAAABgHAAAMAAAABAAAABkHAAAaBwAABQBBsJjjAAv5EQEAAAAbBwAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAb8wYAEsAAADRCgAADgAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnPMzBgAWAAAAMEHAAAJAAAARXJyb3IAAABvzBgASwAAAH8FAAAaAAAAb8wYAEsAAAB9BQAAGwAAAG/MGABLAAAAWAQAABIAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAbM0YAEoAAAC+AQAAHQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19zb3VyY2VtYXAtOS4zLjMvc3JjL3R5cGVzLnJzaHR0cDpodHRwczovAAABAAAAAAAAADXOGAABAAAAyM0YAGIAAAD1AwAAGgAAAMjNGABiAAAAKAQAABgAAADIzRgAYgAAAOsDAAAUAAAAbWlzc2luZyBmaWVsZCBgYHjOGAAPAAAAh84YAAEAAABpbnZhbGlkIGxlbmd0aCAsIGV4cGVjdGVkIAAAmM4YAA8AAACnzhgACwAAAGR1cGxpY2F0ZSBmaWVsZCBgAAAAxM4YABEAAACHzhgAAQAAAAAAAAAEAAAABAAAACEHAABJbmNsdWRlZEV4Y2x1ZGVkVW5ib3VuZGVkaW5kZXggIG91dCBvZiByYW5nZTogAAARzxgABgAAABfPGAAPAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYml0dmVjLTEuMC4xL3NyYy9zbGljZS5ycwA4zxgAWwAAADEGAAADAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAKTPGABKAAAAvgEAAB0AAAAAAAAABAAAAAQAAAAiBwAAIwcAACMHAAABAAAAAAAAAGJhZCBqc29uOiAAACDQGAAKAAAAbGVmdG92ZXIgY3VyL3NoaWZ0IGluIHZscSBkZWNvZGV2bHEgZGVjb2RlIGRpZCBub3QgcHJvZHVjZSBhbnkgdmFsdWVzdmxxIGRlY29kZSBjYXVzZWQgYW4gb3ZlcmZsb3dnb3QgIHNlZ21lbnRzLCBleHBlY3RlZCA0IG9yIDWW0BgABAAAAJrQGAAaAAAAYmFkIHJlZmVyZW5jZSB0byBzb3VyY2UgIwAAAMTQGAAZAAAAYmFkIHJlZmVyZW5jZSB0byBuYW1lICMA6NAYABcAAABlbmNvdW50ZXJlZCBpbmNvbXBhdGlibGUgc291cmNlbWFwIGZvcm1hdHRoZSBwcm92aWRlZCBkYXRhIFVSTCBpcyBpbnZhbGlkY2Fubm90IGZsYXR0ZW4gdGhlIGluZGV4ZWQgc291cmNlbWFwOiAAUdEYACYAAABpbnZhbGlkIG1hZ2ljIG51bWJlciBmb3IgcmFtIGJ1bmRsZWludmFsaWQgbW9kdWxlIGluZGV4IGluIHJhbSBidW5kbGVpbnZhbGlkIHJhbSBidW5kbGUgbW9kdWxlIGVudHJ5bm90IGEgcmFtIGJ1bmRsZWludmFsaWQgcmFuZ2UgbWFwcGluZyBpbmRleDogAAAA9NEYAB0AAABpbnZhbGlkIGJhc2U2NCBjaGFyYWN0ZXI6IAAAHNIYABoAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5yc21pZCA+IGxlbp/SGAAJAAAAQNIYAF8AAABOAAAAHwAAAEDSGABfAAAASAAAABcAAAAAAAAABAAAAAQAAAAkBwAAAAAAAAQAAAAEAAAAJQcAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuLi5NaXNhbGlnbkVycm9yAAAAAAQAAAAEAAAAJgcAAAEAAAByYW5nZSAgb3V0IG9mIGJvdW5kczogAAAw0xgABgAAADbTGAAQAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYml0dmVjLTEuMC4xL3NyYy9zbGljZS9hcGkucnMAWNMYAF8AAAB5CgAAAQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvb3BzL2Z1bmN0aW9uLnJzyNMYAFAAAAD6AAAABQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9iaXR2ZWMtMS4wLjEvc3JjL3ZlYy5yc3fUGABZAAAAfgIAAAgAAAD///8fYml0LXZlY3RvciBjYXBhY2l0eSBleGNlZWRlZDogID4gAAAA5NQYAB4AAAAC1RgAAwAAAHfUGABZAAAAVAIAAAMAAAABAEG0quMAC4EML2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYml0dmVjLTEuMC4xL3NyYy92ZWMvYXBpLnJzAAAANNUYAF0AAAC/AQAAAwAAAGJpdC12ZWN0b3IgY2FwYWNpdHkgZXhjZWVkZWQ01RgAXQAAANMAAAAFAAAAY2Fubm90ICAgYml0cyBmcm9tIGEgLWJpdCByZWdpb27Q1RgABwAAANfVGAABAAAA2NUYAA0AAADl1RgACwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2JpdHZlYy0xLjAuMS9zcmMvZmllbGQucnMAENYYAFsAAAAOAgAAAgAAAHN0b3JlAAAAKNQYAE8AAADOAQAANwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19zb3VyY2VtYXAtOS4zLjMvc3JjL2RlY29kZXIucnOU1hgAZAAAAHgAAAAdAAAAZXhwZWN0ZWQgbmV3bGluZSwAAAA7AAAAlNYYAGQAAACkAAAAFgAAAJTWGABkAAAApgAAABQAAACU1hgAZAAAANMAAABHAAAAlNYYAGQAAADUAAAARQAAAJTWGABkAAAA5QAAABQAAAA8aW52YWxpZD4AAACU1hgAZAAAAB4BAAASAAAAYSBzZXF1ZW5jZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlLTEuMC4yMTkvc3JjL2RlL2ltcGxzLnJzAAAAltcYAF8AAACVBAAAIgAAAJbXGABfAAAAmAQAABwAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9tYXAvZW50cnkucnMY2BgAYAAAAKEBAAAuAAAAYXNzZXJ0aW9uIGZhaWxlZDogaWR4IDwgQ0FQQUNJVFkvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJzYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5oZWlnaHQgLSAxAKjYGABbAAAArQIAAAkAAACo2BgAWwAAALECAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogc3JjLmxlbigpID09IGRzdC5sZW4oKajYGABbAAAASgcAAAUAAACo2BgAWwAAAMcEAAAjAAAAqNgYAFsAAAAKBQAAJAAAAGFzc2VydGlvbiBmYWlsZWQ6IGVkZ2UuaGVpZ2h0ID09IHNlbGYubm9kZS5oZWlnaHQgLSAxAAAAqNgYAFsAAAD6AwAACQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzAPTZGABfAAAAWAIAADAAAABhdHRlbXB0IHRvIGpvaW4gaW50byBjb2xsZWN0aW9uIHdpdGggbGVuID4gdXNpemU6Ok1BWC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0ci5ycwAAAJnaGABIAAAAmgAAAAoAAACZ2hgASAAAAJ0AAAAWAAAAmdoYAEgAAACgAAAADAAAAG1pZCA+IGxlbgAAABTbGAAJAAAAmdoYAEgAAACxAAAAFgBBwLbjAAvrAwEAAAAJBwAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQxL3NyYy92YWx1ZS9kZS5yc0jbGABkAAAAcgAAABkAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzvNsYAFgAAADBBwAACQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzACTcGABfAAAAxgAAACcAAAAk3BgAXwAAABYCAAAvAAAAJNwYAF8AAAChAAAAJAAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAAC03BgASgAAAL4BAAAdAAAAdWxscnVlYWxzZQAAAAAAAP//////////IN0YAEG4uuMAC/ECL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX3NvdXJjZW1hcC05LjMuMy9zcmMvYnVpbGRlci5yczjdGABkAAAAaQAAABoAAAA43RgAZAAAAGoAAAAiAAAAQ2Fubm90IHNldCBzb3VyY2VzIGZvciB0b21ic3RvbmUgc291cmNlIGlkAAA43RgAZAAAAIAAAAAJAAAAON0YAGQAAACCAAAAIgAAADjdGABkAAAAhAAAAB0AAAA43RgAZAAAALkAAAAYAAAAON0YAGQAAAAHAQAAFQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19zb3VyY2VtYXAtOS4zLjMvc3JjL2hlcm1lcy5ycwA43hgAYwAAAKYAAAAUAEG0veMAC5EBAQAAAAsHAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvdW5zdGFibGUvcXVpY2tzb3J0LnJzAAAAvN4YAGEAAAA5AAAAGwAAAC4HAAAMAAAABAAAAC8HAAAwBwAABQBB0L7jAAuRCAEAAAAxBwAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAj98YAEsAAADRCgAADgAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnNFcnJvco/fGABLAAAAfwUAABoAAACP3xgASwAAAH0FAAAbAAAAj98YAEsAAABYBAAAEgAAAOzfGABPAAAAzgEAADcAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2Nfc291cmNlbWFwLTkuMy4zL3NyYy9oZXJtZXMucnMAgOAYAGMAAADPAAAAHgAAAIDgGABjAAAAxwAAAB4AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2Nfc291cmNlbWFwLTkuMy4zL3NyYy92bHEucnP/////////////////////////////////////////////////////////Pv///z80NTY3ODk6Ozw9/////////wABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZ////////GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjP//////v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////BOEYAGAAAAAjAQAAEAAAAEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9yYW5nZSAgb3V0IG9mIGJvdW5kczogAAC04hgABgAAALriGAAQAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYml0dmVjLTEuMC4xL3NyYy9zbGljZS9hcGkucnMA3OIYAF8AAACOCgAAAQAAADMHAAAMAAAABAAAADQHAAA1BwAABQBB7MbjAAuoDgEAAAA2BwAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAq+MYAEsAAADRCgAADgAAAHU4AAA3BwAAFAAAAAQAAAA4BwAAAAAAAAgAAAAEAAAAOQcAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWVFcnJvcqvjGABLAAAAfwUAABoAAACr4xgASwAAAH0FAAAbAAAAq+MYAEsAAABYBAAAEgAAADoHAAAMAAAABAAAADsHAAAAAAAABAAAAAQAAAA8BwAARnJvbVV0ZjhFcnJvcmJ5dGVzZXJyb3IvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9iaXR2ZWMtMS4wLjEvc3JjL3NsaWNlLnJzAADD5BgAWwAAAPcAAAAfAAAAw+QYAFsAAABPAQAAIwAAAGxvYWRCaXRTcGFuRXJyb3I8Pjo6ROUYAA0AAABR5RgAAwAAAE51bGwAAAAABAAAAAQAAAA9BwAATWlzYWxpZ25lZAAAAAAAAAQAAAAEAAAAPgcAAFRvb0xvbmcAAAAAAAQAAAAEAAAAPwcAAFRvb0hpZ2gAAAAAAAQAAAAEAAAAQAcAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3N3Y19zb3VyY2VtYXAtOS4zLjMvc3JjL2VuY29kZXIucnPE5RgAZAAAADcAAAANAAAAaW52YWxpZCBieXRlxOUYAGQAAAAjAAAAEgAAAGludmFsaWQgdXRmOMTlGABkAAAAZgAAACEAAADE5RgAZAAAAEwAAAAWAAAAxOUYAGQAAABYAAAAEQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0MS9zcmMvc2VyLnJzfSJmYWxzZXRydWVudWxsW3ssOl0vcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L3N0ZC9zcmMvaW8vaW1wbHMucnMAAAPnGABLAAAA+AEAAA4AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93eXotMC41LjEvc3JjL2NvbXUucnMAYOcYAFcAAAAnAQAAAgAAAE51bGxQdHJFcnJvcmludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGWQ5hgAXwAAAIECAAAqAAAAkOYYAF8AAACmAgAAKgAAAJDmGABfAAAA/gEAACoAAACQ5hgAXwAAAAwCAAAqAAAAJHNlcmRlX2pzb246OnByaXZhdGU6OlJhd1ZhbHVlZXhwZWN0ZWQgUmF3VmFsdWVSYXdTZWN0aW9uT2Zmc2V0bGluZWNvbHVtbnN0cnVjdCBSYXdTZWN0aW9uT2Zmc2V0UmF3U2VjdGlvbm9mZnNldHVybG1hcHN0cnVjdCBSYXdTZWN0aW9uRmFjZWJvb2tTY29wZU1hcHBpbmduYW1lc21hcHBpbmdzc3RydWN0IEZhY2Vib29rU2NvcGVNYXBwaW5nUmF3U291cmNlTWFwdmVyc2lvbmZpbGVzb3VyY2Vzc291cmNlUm9vdHNvdXJjZXNDb250ZW50c2VjdGlvbnNyYW5nZU1hcHBpbmdzaWdub3JlTGlzdHhfZmFjZWJvb2tfb2Zmc2V0c3hfbWV0cm9fbW9kdWxlX3BhdGhzeF9mYWNlYm9va19zb3VyY2VzZGVidWdfaWRkZWJ1Z0lkAAvpGAAHAAAAEukYAAQAAAAW6RgABwAAAB3pGAAKAAAAJ+kYAA4AAAA16RgACAAAANfoGAAFAAAAPekYAA0AAADc6BgACAAAAErpGAAKAAAAVOkYABIAAABm6RgAFAAAAHrpGAASAAAAjOkYAAgAAACU6RgABwAAAHN0cnVjdCBSYXdTb3VyY2VNYXAABAsPExcbHyMnLTE0ODxAAkUAAAAAAEkATQAFBQUFBQUFBQUFBQUGBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVFUWFwFBQUFBQUFBQUFBQUFBQUFBQUFBQUJAEGk1eMACygBYChkaGxwK3R2en6ChoqOkpaangUyogAAAACkBQWmBQUFBQUFQwWsAEHY1eMACxetAAAABbG1uQUFBQUFBQUFBQUFUgUFvQBB/9XjAAsIv6fBAAAAAMQAQZLW4wALmgLQ0gAAAMjZ3eHL5QAA6QAAAAAAAAAABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXrBQUFBQUFBaruBQUFBQUFBQUFBfEFBQUFBQUFBQUFBQUF7AX0AAAAAAWuAAAFBQUFBQUFBQXvBQUFBQUFBfIAAAAAAAAIDREVGR0hJSovMTY6PkICRwAAAAAASwBPAAUFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFUVZaXgUFBQUFBQUFBQUFBQUFBQUFBQUFBQkAQbzY4wALKAFiKGZqbnIrdHh8gISIjJCUmJygBTKiAAAAAKQFBakFBQUFBQVDBawAQfDY4wALF68AAAAFs7e7BQUFBQUFBQUFBQVSBQW9AEGX2eMAC7sBv6fBAAAAAMcAAAAAAAAAysLFzdDUANYAyNvf48vnAADpAAAAAADOAAAFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBesFBQUFBQUFqu4FBQUFBQUFBQUF8QUFBQUFBQUFBQUFBQXsBfQAAAAABa4AAAUFBQUFBQUFBe8FBQUFBQUF8gBBwOXjAAsB1wBBwObjAAtA/////////////////////////////////////////////z8//////z8//6r///8/////////31/cH88P/x/cHwBBlefjAAtjBCAE//9/////f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AEGV6OMAC2kEoAT//3////9///////////////////////////////////////////////////////////////////////8PAP//f/j//////w/////////////////////////////////D/wMAH1AAQY7p4wALhAbfvEDX///7////////////v//////////////////////////////////D/wMAH1AAAP//////////////////37zA1///+////////////7///////////////////////wP8///////////////////////////+////fwL//////wEAAAAAAAAAAP///4cHAP/////////////////////7/P///////////////////////////v///38C//////8B/v////+/tgD///+HBwAAAAAA//////8HAAAAwP7//////////////y8AYMAAnAAA/f///wAAAOD/////////////PwACAAD8////BzAEAAD/B////////////8P////////////////vn//9/58AAP/////////n////////////////AwD///////8/JP//PwQQAQAA////Af8H////fgAA//////8DAAAAAAAA8P///////yMAAAH/AwD+/+Gf+f///cUjAEAAsAMAAxD//////z8AAP///w//B////36A////////////+////////////////////8///v/vn/n///3F8595gLDP/wNQ4If5///9bQMAAABeAAAcAOC/+////e0jAAABAAMAAALgn/n///3tIwAAALADAAIA6Mc91hjH/wMAAAEAAAAAAO6H+f///W3ThzkCXsD/PwDuv/v///3t8787AQDP/wD+7p/5///97fOfOeCwz/8CAOzHPdYYx//Dxz2BAMD/AADg3/3///3/IwAAACcDAAAA4d/9///97yMAAABgAwAGAPDf/f////8nAEBwgAMAAPzg/3/8///7L38AAAAAAAAA/9/9///9//PfPWAnz/8AAO/f/f///e/z3z1gYM//DgD/3/3//////9998IDP/wD87v9//P//+y9/hF//wP8MAP7//////w0AfwAAAAAAAADW9///r/8NIF8AAPAAAAAAAQAAAAAAAAD//v///x8AAAAfAEGg7+MAC9QD/v///////wf/f/8DAAAAANb3//+v//8/X3//8wAAAAABAAAD/wOgwv/+////H/7/3////v///x9AAAAAAAAAAP//////BwCAAAA/PGLA4f8DQAAA/////78g///////3////////////////////////////////////////////////////PwAA///////////8////////AAAAAAD/D////////////wP///////////8//////78g///////3//////////////////////////////////////////////////9/AP//PwD/AAAAv////////QcAAAAAAAAAAP///////////z1/Pf//////Pf////89fz3/f/////////89//////////8HAAAAAP//AAD/////////////Pz////////////89fz3//////z3/////PX89/3//////////Pf//////////5wD+AwD//wAA/////////////z8//v////////////////////////////////////////////////////////////////////////////////////////////////////////////8DAEGA8+MAC4sC/////////////////5////7//wf////////////H/wH//wOA//8DAP//AwD/3wEA////////DwAAAIAQAAAAAP////////////////+f///+//8H////////////x/8B//8/gP//HwD//w8A/98NAP////////////+PMP8DAAAAAAAA//////////////8B//////8F//////////8/AP///38AAAAAAAD///8/HwD//////w////8DAAAAAAAAALj/A///////////////Af//////B///////////PwD///9//w//D8D/////Px8A//////8P////A/8HAAAAAP//fwD///////8fAEGU9eMACwGAAEGg9eMAC4AC4P//////DwDgHwAAAAAAAPj///8BwAD8/////z8AAAD///8P/////////3////+f/wP/A4AA/7//fwAAAAAAAP///////////x//AwD4DwD//////////////////w8A/////w8AAAAA4AD8////P/8H///////nAAAAAADebwT///////////////////////////////8AAAAAAAAAAP////////8A/+P//////z//B///////5wAA9/////8H////////////////////////////////////////////////////////////////////////////////////BwBBrvfjAAsGAoAAAP8fAEHA9+MACxKE/C8/UP3/8+BDAAD//////wEAQeH34wALMTAAAAAAAIABABAAAAACgAAA/x8AAAAAAAD/H+L/AQCE/C8/UP3/8+BDAAD//////wEAQaD44wAL4Ab/////////////////////////////////////H3gMAP////+/IP////////+AAAD//38Af39/f39/f38AAAAA/////////////////////////////////////x/4DwD/////vyD/////////gACA//9/AH9/f39/f39//////+AAAAD+Az4f/v///////////3/4/v/////////////34P///////v////////////9/AAD/////AAAAAAAA///gAAAA/v8+H/7///////////9//v7//////////////+D///////7/////////////fwAA/////wAAAAAAAP////////////////////////8fAAAAAAAAAAD//////z////////////////////////////////////////////////////////////////////////////////////8A/x///wAMAAD//////38AgP///z//////////////AAAAAID//P////////////////n/////////P+sfAAD8//8f////DwAA////////8L///////////////////wMAAACA//z////////////////5/////////z/rHwAA/P+79///BwAAAP///////w8A/P//////DwAAAAAAAAD8aAD8//8/AP//fwAAAP///x/w//////8HAACAAADf/wB8//////8QAAD///////8PAP//////////PwD/A////+j//////z//////DwD///8f//////////8BgP8D////f///////AQAA9w8AAP//f8T///////9iPgUAADj/BxwAfn5+AH9////////3/wP//////////////////wcAAAD///////9/AP8//wP//3/8//////////8HAAA4//98AH5+fgB/f///////9/8D////////////////////N/8D/////////////////z//////////////////AwAAAAB/APig//1/X9v/////////////////AwAAAPj///////////////////////8//////////////////wMAAAAAfwD44P/9f1/b/////////////////wMAAAD4//////8AQY7/4wALoQHf/////////////////////x8AAAAA/v//B/7//wfA/////////////3/8/PwcAAAAAP//AAD//xgAAOAAAAAA3/////////////////////8fAAD/A/7//4f+//8H4P////////////9//Pz8HAAAAAD/7///f///t/8//z8AAAAA////////////////////BwAAAAAAAAAA////////HwBBwIDkAAsv/+///3///7f/P/8/AAAAAP///////////////////wcAAAAAAAAAAP///////x8AQf+A5AALASAAQZCB5AALK////x////////8BAAAAAAD/////AOD///8H/////z8A////P/////8P/z4AQdCB5AALowL///8f////////AQABAAAA/////wDg////B///////B////z//////D/8+AAAAAAD/////////////////////////PwAA/////w//////D///////AP///////w8A//f/97f/+//7G////////w8A/////////////////////////z//A/////8P/////w///////wD///////8PAP/3//e3//v/+xv///////8PAD/9/////7+R//8/AP//fwD///9/AAAAAAAAAAD//zcA//8/AP///wMAAAAAAAAAAP/////////AAAAAAAAAAAABAO/+//8/AAAAAAD///8f////HwAAAAD//v//HwAAAP///////z8A//8/AP//BwD//wMAQYCE5AALM2/w7/7//z+HAAAAAP///x////8fAAAAAP/+//9/AAAA////////PwD//z8A//8HAP//AwBBwITkAAsx////////////AQAAAAAAAP///////wcA////////BwD/////DwAAAAD8//8/gP//PwBBgIXkAAsx////////////AQAAAAAAAP///////wcA////////BwD//////wD/A/////8/vv//PwBB0IXkAAsv//////8DAwAcAAAAAAAAAP///x+AAP//PwAAAAAA//8DAAAAAAD//x8AAAD//38AQZCG5AALyQL//////xsDABwAAAAAAADw////H4AA/////wEAAAD//z8AAAAAAP//HwAAAP//fwD4////////AAAAAAAAACYA+P//////AAAAAP///wEAAPj///9/AAAAkAD/////RwD4//////8HAB4AABQAAAAA//////////9/AAAAwP8/gP////////8HBAD///8B/wP////////f//AA/////08A//////////8f3v8XAAAAAP//+///DwCAAQAAAAAAAAB/vf+//wH//////38AAAAA4J/5///97SMAAAHgAwAAAP9L/////78AAAAKAAAAAAD///v/////wAMAAAAAAAAAf73/v/8B/////////wf/A++f+f///e37nzmB4M8fHwD/S/////+//6X3DwAGAAAA////////HwCABwCAAwAAAP///////wAAsABB8IjkAAss//////9/AAAAAAAPAAAAAP///////////wf/wwMAAAD//////////78A/wMAQbCJ5AALOf///////z//AQAAPwAAAAD///////8AABAAAAAAAAAA//////8HAAEAAAAAAAAAAP///wcAAAAAfwBBgIrkAAsp//////////8RAP8DAAAAAP////////8B/wP//w8AAAD////n/w//A38AQcCK5AALBv//////DwBB1IrkAAsV//////////8AAACAf/Jv////AIACAEH0iuQACxT//P////8BAAoAAAD/////////BwBBlIvkAAtM////////////AwCAf/Jv////v/kPAP8DAAAAAAAAAAD//P///////BsAAAAB+P////8HBAAAAfD//////wMAIAAA////////////AQBB+IvkAAso/////wEAAAD/////////f4AA////////////IwAA////////////AQBBuIzkAAsa/////wEA/wP//f///38AAAEAAAAAAPz///8AQeCM5AALFH/7/////wEAQAAAAL/9////AwABAEGAjeQACxf//f////9//wEA/wMAAPz////8///+fwBBoI3kAAsWf/v/////f7T/AP8Dv/3///9/+wH/AwBB3I3kAAsL//8HAPT//f///w8AQfaN5AALAQEAQZyO5AALEP//fwD///3/////xwcA/wcAQbaO5AALAQEAQcCO5AALKf////////////////9/AAD///////////////////////////////8PAEGyj+QAC9cB////////////////AQD///////8AAH4AAAD//////////////////////////////////////////////////////////////////////////wcABAAAACcA8AD///////////////////////////////8AAP//PwD//////////////////////////////////////////////////////////////////////////////wP//////////////////////////////////////////38AQcCR5AALBP///z8AQYCS5AALCP////////8DAEGgkuQACzL/////////Af///38AAP///////////38AAP///z8AAP///////wAADwAAAPj//+D//wBB4JLkAAsy/////////wH///9//wP///////////9//wP///8/HwD///////9/AA8A/wP4///g//8AQciT5AALBv//////HwBBiJTkAAsI//////8f/wMAQaiU5AALCP//////////AEHAlOQACx3///////////8HAQAAAAAAAAD4/wAAAAAAAAAACwBB6JTkAAsI//////////8AQYCV5AALQv///////////4f/////////gP//AAAAAAAAAAAbAAMA//////////////////////////////////8/AAAAAID/AQBBnpbkAAsi72//////////////////////////////////////////DwBB4JbkAAsJ//////8///9/AEGAl+QACxT/////////////////B/8f/wH/AwBBzJfkAAsK4OMH+OcPAAAAPABB4JfkAAsU/////////////////wf/H/8B/2MAQaCY5AALBv///3/gBwBB3pjkAAsC/wMAQZyZ5AALDX9v/38AAAAAAAAAABwAQf6Z5AAL2AH/A//////////////f///////////fZN7/6+//////////v+ff3////3tf/P3//////////////////////////////////////////////////////z/////9///3////9///3////9///3////9//////f////3///cPAAAAAAAA//////////////////////////8//////f//9/////f//9/////f//9/////f/////3////9///3z////////////////3/4//////8fIAAQAAD4/v8AQYCc5AALLv///////////////////////////////////////wAAAAAAAAAA/////////z8AQcCc5AALCv//////H4A/AEAAQeCc5AALEn////nbB/////////8/AAAAgABBgJ3kAAsK//////8f/z//QwBBsp3kAAsM////PwAA//////8PAEHyneQACw7///9/AAD/////////AwBBup7kAAsE////DwBB2p7kAAsF////PwEAQfqe5AALBv//////AwBBmp/kAAsw//////8H////////////////////////////////HwAAAAAAAAD//////////w8IAEHgn+QACyz///////////////////////////////8fAH8AAAAAAP///////////w//AwBBoKDkAAsY7////5b+9wqE6paqlvf3Xv/7/w/u+/8PAEHgoOQAC5YC/////////////////////////////////////wAAAAD///////////////////////////////////////////////////////////////////////////////8BAP//////P////////////////////////////////////////////////////////////////////////////////////////////wf///////////////////////////////////////////////////////8DAP////////////////////////////////////////////////////////////////////////////////////8AQYCj5AALDP//////////////PwBBxKPkAAueCAQAAAAEAAAAQwcAAGludmFsaWQgbGVuZ3RoaW52YWxpZCBzeW1ib2xub24temVybyB0cmFpbGluZyBiaXRzaW52YWxpZCBwYWRkaW5nIGxlbmd0aAEAAAAAAAAAIGF0IAEAAAAAAAAAIBIZAAQAAABMZW5ndGhTeW1ib2xUcmFpbGluZ1BhZGRpbmcAAAAAAAQAAAAEAAAARAcAAERlY29kZUVycm9ycG9zaXRpb25raW5kAAYAAAAGAAAACAAAAAcAAAA0EhkAOhIZAEASGQBIEhkA0BEZAN4RGQDsERkAAhIZAA4AAAAOAAAAFgAAABYAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5yc7gSGQBQAAAALgIAABEAAABOb25lAAAAAAQAAAAEAAAARQcAAFNvbWUvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9tYXAvZW50cnkucnMwExkAYAAAAKEBAAAuAAAAYXNzZXJ0aW9uIGZhaWxlZDog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X2JvdW5kYXJ5KG5ld19sZW4pcyAZAEsAAACyBQAADQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAADoIRkASgAAAL4BAAAdAAAA0CAZAE8AAAC6BAAAJAAAAEVPRiB3aGlsZSBwYXJzaW5nIGEgbGlzdEVPRiB3aGlsZSBwYXJzaW5nIGFuIG9iamVjdEVPRiB3aGlsZSBwYXJzaW5nIGEgc3RyaW5nRU9GIHdoaWxlIHBhcnNpbmcgYSB2YWx1ZWV4cGVjdGVkIGA6YGV4cGVjdGVkIGAsYCBvciBgXWBleHBlY3RlZCBgLGAgb3IgYH1gZXhwZWN0ZWQgaWRlbnRleHBlY3RlZCB2YWx1ZWV4cGVjdGVkIGAiYGludmFsaWQgZXNjYXBlaW52YWxpZCBudW1iZXJudW1iZXIgb3V0IG9mIHJhbmdlaW52YWxpZCB1bmljb2RlIGNvZGUgcG9pbnRjb250cm9sIGNoYXJhY3RlciAoXHUwMDAwLVx1MDAxRikgZm91bmQgd2hpbGUgcGFyc2luZyBhIHN0cmluZ2tleSBtdXN0IGJlIGEgc3RyaW5naW52YWxpZCB2YWx1ZTogZXhwZWN0ZWQga2V5IHRvIGJlIGEgbnVtYmVyIGluIHF1b3Rlc2Zsb2F0IGtleSBtdXN0IGJlIGZpbml0ZSAoZ290IE5hTiBvciArLy1pbmYpbG9uZSBsZWFkaW5nIHN1cnJvZ2F0ZSBpbiBoZXggZXNjYXBldHJhaWxpbmcgY29tbWF0cmFpbGluZyBjaGFyYWN0ZXJzdW5leHBlY3RlZCBlbmQgb2YgaGV4IGVzY2FwZXJlY3Vyc2lvbiBsaW1pdCBleGNlZWRlZCBhdCBsaW5lICBjb2x1bW4gAAAAAQAAAAAAAACIJBkACQAAAJEkGQAIAAAARXJyb3IoLCBsaW5lOiAsIGNvbHVtbjogKQAAALQkGQAGAAAAuiQZAAgAAADCJBkACgAAAMwkGQABAAAAaW52YWxpZCB0eXBlOiAsIGV4cGVjdGVkIAAAAPAkGQAOAAAA/iQZAAsAAABpbnZhbGlkIHZhbHVlOiAAHCUZAA8AAAD+JBkACwAAAGZsb2F0aW5nIHBvaW50IGBgAAAAPCUZABAAAABMJRkAAQAAAG51bGwvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDEvc3JjL2Vycm9yLnJzAAAAZCUZAGEAAAD3AQAAIQAAAGQlGQBhAAAA+wEAAAwAAABkJRkAYQAAAAICAAAhAAAAZCUZAGEAAAALAgAAKgAAAGQlGQBhAAAADwIAACwAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OS9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzAOAmGQBfAAAAxgAAACcAAADgJhkAXwAAABYCAAAvAAAA4CYZAF8AAAChAAAAJAAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBwJxkASwAAAH8FAAAaAAAAcCcZAEsAAAB9BQAAGwAAAHAnGQBLAAAAWAQAABIAAABPBwAADAAAAAQAAABQBwAAUQcAAE0HAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDEvc3JjL3JlYWQucnMEKBkAYAAAAKYBAABFAAAABCgZAGAAAACrAQAAPQAAAAQoGQBgAAAAswEAABoAAAAEKBkAYAAAAAACAAATAAAABCgZAGAAAAAJAgAAPgAAAAQoGQBgAAAABQIAADMAAAAEKBkAYAAAAA8CAAA6AAAABCgZAGAAAABcAgAAEwAAAAQoGQBgAAAAbgIAABkAAAAEKBkAYAAAAHIDAAAZAAAABCgZAGAAAABzAwAAGgAAAAQoGQBgAAAAdAMAABkAAAAEKBkAYAAAAHUDAAAZAAAABCgZAGAAAAB2AwAAGQAAAAQoGQBgAAAAdwMAABkAAAAEKBkAYAAAAHgDAAAZAAAABCgZAGAAAAB5AwAAGQAAAAQoGQBgAAAA1AMAABEAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAEAAgADAAQABQAGAAcACAAJAP//////////////////CgALAAwADQAOAA8A/////////////////////////////////////////////////////////////////////woACwAMAA0ADgAPAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAEAAgADAAQABQAGAAcACAAJAA//////////////////+gALAAwADQAOAA8AD/////////////////////////////////////////////////////////////////////oACwAMAA0ADgAPAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////UgcAAAwAAAAEAAAAUwcAAFIHAAAMAAAABAAAAFQHAABTBwAAhC0ZAFUHAABWBwAAVwcAAFUHAABYBwAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAMAtGQBKAAAAvgEAAB0AAAAwMTIzNDU2Nzg5YWJjZGVmdXV1dXV1dXVidG51ZnJ1dXV1dXV1dXV1dXV1dXV1dXUAACIAQYjd5AALAVwAQaze5AALjQwvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAALC8ZAEoAAAC+AQAAHQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwCILxkASwAAABMIAAAeAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAOQvGQBKAAAAvgEAAB0AAAAkc2VyZGVfanNvbjo6cHJpdmF0ZTo6UmF3VmFsdWVyYXcgdmFsdWUvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2Fs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Xqc8FPh7KZYzdgsHbQRsMTbRSxn22rN7wFPOSIgFx72DxZ4f2mhQTVj0gC11Y5xWcjvDExCDpGBuMeF4UnxD7E4KtBgwLjAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAPteGQBLAAAAfwUAABoAAAD7XhkASwAAAH0FAAAbAAAA+14ZAEsAAABYBAAAEgAAAFwHAAAMAAAABAAAAF0HAABeBwAABQAAACgpRW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAUAAAAMAAAACwAAAAsAAAAEAAAAkl8ZAJdfGQCjXxkArl8ZALlfGQAAAAAABAAAAAQAAAA8AgAAAAAAAAQAAAAEAAAAPAIAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzCGAZAFAAAAAuAgAAEQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAABoYBkASgAAAL4BAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZGVidWdpZC0wLjguMC9zcmMvbGliLnJzLQAeYRkAAQAAAMRgGQBaAAAAEwEAACcAAADEYBkAWgAAABcBAAApAAAAxGAZAFoAAAAbAQAAKQAAAERlYnVnSWQAAQAAAAAAAAD///////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0OD///////////////////////////////////CgsMDQ4P////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdXVpZC0xLjE3LjAvc3JjL3BhcnNlci5ycwAQIDBAUGBwgJCgsMDQ4PAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4PAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4PAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4PAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4PAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4PAAaGIZAFsAAAD7AAAAHAAAAGhiGQBbAAAA/AAAABwAAABoYhkAWwAAAP0AAAAcAAAAaGIZAFsAAAD+AAAAHAAAADAxMjM0NTY3ODlhYmNkZWYwMTIzNDU2Nzg5QUJDREVGL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdXVpZC0xLjE3LjAvc3JjL2ZtdC5ycyRkGQBYAAAAuwAAAA0AAAAkZBkAWAAAALMAAAAVAAAAJGQZAFgAAAC2AAAADQAAACRkGQBYAAAAtwAAAA0AAAAAAAAACQAAAA4AAAATAAAAGAAAAGAHAABhBwAAYgcAAGMHAABkBwAAY2Fubm90IGFkdmFuY2UgcGFzdCBgcmVtYWluaW5nYDogIDw9IAAAAORkGQAhAAAABWUZAAQAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ieXRlcy0xLjEwLjEvc3JjL2J5dGVzLnJzABxlGQBbAAAAxwIAAAkAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ieXRlcy1zdHItMC4yLjcvc3JjL2J5dGVfc3RyLnJzbiBpcyBub3QgYSBjaGFyYWN0ZXIgYm91bmRhcnkAAOllGQAdAAAAiGUZAGEAAACbAQAADQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaW5kZXgucnMAIGYZAE8AAABMAwAANAAAACBmGQBPAAAAUwMAADIAAAAAAAAAEAAAAAQAAABlBwAAZgcAAGcHAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBpbnZhbGlkIE9uY2Ugc3RhdGWoZhkAPAAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMA7GYZAFsAAAA1AAAAEgAAAGgHAABpBwAAagcAAGsHAABsBwAAbQcAAG4HAABvBwAAcAcAAHEHAAByBwAAcwcAAHQHAABuBwAAICAgIDogAAABAAAAAAAAAJRnGQACAAAAICAgICAgIC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9tb2QucnMAr2cZAEwAAABWCgAAJAAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzDGgZAFAAAAAuAgAAEQAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvY29yZS9zcmMvcHRyL21vZC5ycwBsaBkASwAAAAsCAAABAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5pc19jaGFyX2JvdW5kYXJ5KG4pL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAAAA8mgZAEsAAADtBwAAHQAAAPJoGQBLAAAA9QcAAB0AAADyaBkASwAAAH8FAAAaAAAA8mgZAEsAAAB9BQAAGwAAAPJoGQBLAAAAWAQAABIAAAB1BwAADAAAAAQAAAB2BwAAdwcAAHgHAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzqGkZAFgAAADBBwAACQAAAHsHAAAMAAAABAAAAHwHAAB9BwAAeAcAQbDU5QAL7g0BAAAAfgcAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAG9qGQBLAAAA0QoAAA4AAABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5RXJyb3IAAABvahkASwAAAH8FAAAaAAAAb2oZAEsAAAB9BQAAGwAAAG9qGQBLAAAAWAQAABIAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilvahkASwAAALIFAAANAAAAAAAAAAgAAAAEAAAAfwcAAAAAAAAIAAAABAAAAIAHAAB/BwAAbGsZAIEHAACCBwAAgwcAAIQHAACFBwAAewcAAAwAAAAEAAAAhgcAAHsHAAAMAAAABAAAAIcHAACGBwAAqGsZAIEHAACIBwAAgwcAAIkHAACFBwAAigcAACgAAAAEAAAAiwcAAIoHAAAoAAAABAAAAIwHAACLBwAA5GsZAI0HAACOBwAAjwcAAJAHAACRBwAAkgcAACQAAAAEAAAAiwcAAJIHAAAkAAAABAAAAIwHAACLBwAAIGwZAI0HAACTBwAAjwcAAJAHAACRBwAAYmFja3RyYWNlIGNhcHR1cmUgZmFpbGVkL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZXJyb3IucnN0bBkAXAAAAGcEAAAOAAAAAQAAAAAAAAAKCkNhdXNlZCBieToKAAAA9GwZAAEAAAAKCnN0YWNrIGJhY2t0cmFjZTpTdGFjayBiYWNrdHJhY2U6CgASbRkAEQAAAFMvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi90cmFjaW5nLWNvcmUtMC4xLjM0L3NyYy9kaXNwYXRjaGVyLnJzLW0ZAGcAAABoAwAAJgAAAAAAAAAEAAAABAAAAJUHAABBcmMgY291bnRlciBvdmVyZmxvd7RtGQAUAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc3luYy5ycwAAAAEAAAAAAAAA0G0ZAEkAAADgCwAADQAAAAAAAAAMAAAABAAAAI0DAACWBwAAlwcAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3RyYWNpbmctY29yZS0wLjEuMzQvc3JjL2NhbGxzaXRlLnJzQXR0ZW1wdGVkIHRvIHJlZ2lzdGVyIGEgYERlZmF1bHRDYWxsc2l0ZWAgdGhhdCBhbHJlYWR5IGV4aXN0cyEgVGhpcyB3aWxsIGNhdXNlIGFuIGluZmluaXRlIGxvb3Agd2hlbiBhdHRlbXB0aW5nIHRvIHJlYWQgZnJvbSB0aGUgY2FsbHNpdGUgY2FjaGUuIFRoaXMgaXMgbGlrZWx5IGEgYnVnISBZb3Ugc2hvdWxkIG9ubHkgbmVlZCB0byBjYWxsIGBEZWZhdWx0Q2FsbHNpdGU6OnJlZ2lzdGVyYCBvbmNlIHBlciBgRGVmYXVsdENhbGxzaXRlYC6xbhkA+wAAAExuGQBlAAAAvAEAAA0AAAAAAAAABAAAAAQAAACZBwAAAAAAAAQAAAAEAAAAmgcAAP////8vcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvcndsb2NrL25vX3RocmVhZHMucnMAAADobxkAXQAAAD4AAAAJAAAAAAAAAAwAAAAEAAAAmwcAAJwHAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAGxwGQAqAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvbGliLnJzAAAAoHAZAF0AAAAfBQAAGQAAAAAAAAAYAAAABAAAAJ0HAEGo4uUAC40VAQAAAJ4HAACfBwAAoAcAAKEHAACiBwAAowcAAKQHAAClBwAApgcAAKYHAACmBwAApwcAAKgHAACpBwAAqgcAAKsHAAAAAAAAeHEZACBxGQAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi90cmFjaW5nLWNvcmUtMC4xLjM0L3NyYy9kaXNwYXRjaGVyLnJzAHhxGQBnAAAAaAMAACYAAABtaWQgPiBsZW4AAADwcRkACQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQvYWRkaXRpb24ucnMAAARyGQBqAAAAOwAAABoAAAAEchkAagAAAGoAAAAiAAAABHIZAGoAAABvAAAAFwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQvc3VidHJhY3Rpb24ucnMAAACgchkAbQAAAIcAAAAlAAAAAQAAAFRoZSByYWRpeCBtdXN0IGJlIHdpdGhpbiAyLi4uMzYAJHMZAB8AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50L2NvbnZlcnQucnMAAABMcxkAaQAAAN4AAAAJAAAATHMZAGkA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b2QucnNsjBkATAAAAFYKAAAkAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAMiMGQBKAAAAvgEAAB0AAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAACSNGQBOAAAA9AUAABUAAABtaWQgPiBsZW4AAACEjRkACQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQvYWRkaXRpb24ucnMAAJiNGQBqAAAAOwAAABoAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50L2RpdmlzaW9uLnJzYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwB+jhkAGQAAABSOGQBqAAAAVwAAAAkAAAAAAAAABAAAAAAAAAAUjhkAagAAAO4AAAAfAAAAFI4ZAGoAAADSAAAACQAAABSOGQBqAAAAFQEAAA4AAAAUjhkAagAAABYBAAAOAAAAFI4ZAGoAAAAaAQAADwAAABSOGQBqAAAAUQEAAAwAAAAUjhkAagAAACABAAAhAAAAFI4ZAGoAAAAhAQAAGAAAABSOGQBqAAAAQgEAADwAAAAUjhkAagAAAEsBAAAPAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9jb252ZXJ0LnJzAAAAXI8ZAGkAAADwAQAAFgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQucnMAAADYjxkAYQAAACwAAAAdAAAA2I8ZAGEAAABjAwAAFwAAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAABckBkASgAAAL4BAAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9zaGlmdC5ycwC4kBkAZwAAAB4AAAAcAAAAuJAZAGcAAAAoAAAAGQAAALiQGQBnAAAALgAAABIAAAC4kBkAZwAAAEoAAAAjAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC5ycwAAAGCRGQBhAAAAYwMAABcAAABtaWQgPiBsZW4AAADUkRkACQAAAAAAAAAEAAAABAAAAKwHAABuZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vbi16ZXJvL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlnaW50L3NoaWZ0LnJzAAAUkhkAZgAAAGYAAAAoAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9hZGRpdGlvbi5ycwAAjJIZAGoAAAA7AAAAGgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQvc3VidHJhY3Rpb24ucnNDYW5ub3Qgc3VidHJhY3QgYiBmcm9tIGEgYmVjYXVzZSBiIGlzIGxhcmdlciB0aGFuIGEuAAAAdZMZADQAAAAIkxkAbQAAAEUAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogYV9oaS5pc19lbXB0eSgpAAAACJMZAG0AAABiAAAABQAAAAiTGQBtAAAAZQAAAAUAAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwiUGQBQAAAALgIAABEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0taW50ZWdlci0wLjEuNDYvc3JjL3Jvb3RzLnJzAAAAaJQZAGEAAACDAQAAAQBB5KnmAAu/BgEAAACtBwAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZUxheW91dEVycm9yL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMilRkASgAAAL4BAAAdAAAAYAcAAGEHAABiBwAArgcAAK8HAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ieXRlcy0xLjEwLjEvc3JjL2J5dGVzLnJzAJCVGQBbAAAAzgMAACQAAACwBwAAsQcAALIHAACzBwAAtAcAALUHAAC2BwAAtwcAALMHAAC4BwAAkJUZAFsAAABIBQAAMgAAAJCVGQBbAAAAVgUAAEkAAAC5BwAAugcAALsHAAC8BwAAvQcAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAABYlhkASgAAAL4BAAAdAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnO0lhkAUAAAAC4CAAARAAAAvgcAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2hzdHItMi4wLjAvc3JjL2xpYi5ycwAYlxkAVwAAABsBAAA8AAAASGFzaCB0YWJsZSBjYXBhY2l0eSBvdmVyZmxvd4CXGQAcAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaGFzaGJyb3duLTAuMTQuNS9zcmMvcmF3L21vZC5ycwAAAKSXGQBhAAAAVgAAACgAAAD//////////xiYGQBBsLDmAAtdL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAwmBkATwAAABUBAAAZAEGYseYAC4U7AQAAAL8HAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlTGF5b3V0RXJyb3IvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi90cmlvbXBoZS0wLjEuMTQvc3JjL2FyYy5ycwAA1pgZAFwAAAA1AQAADgAAANaYGQBcAAAAVQEAAA4AAADWmBkAXAAAAG4BAAAtAAAA1pgZAFwAAABvAQAADgAAAExlbmd0aCBuZWVkcyB0byBiZSBjb3JyZWN0IGZvciBUaGluQXJjIHRvIHdvcmsAAHSZGQAuAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdHJpb21waGUtMC4xLjE0L3NyYy90aGluX2FyYy5ycwAAAKyZGQBhAAAA6QAAAAkAAAAAAAAADAAAAAQAAADABwAAwQcAAExhenkgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAANJoZACoAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9vbmNlX2NlbGwtMS4yMS4zL3NyYy9saWIucnMAAABomhkAXQAAAB8FAAAZAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaHN0ci0yLjAuMC9zcmMvZHluYW1pYy5ycwDYmhkAWwAAAG4AAAAgAAAATGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAABEmxkAKgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL29uY2VfY2VsbC0xLjIxLjMvc3JjL2xpYi5ycwAAAHibGQBdAAAACAMAABkAAAByZWVudHJhbnQgaW5pdAAA6JsZAA4AAAB4mxkAXQAAAHoCAAANAAAASnNWYWx1ZSgpAAAAEJwZAAgAAAAYnBkAAQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTAwL3NyYy9jb252ZXJ0L3NsaWNlcy5yc251bGwgcG9pbnRlciBwYXNzZWQgdG8gcnVzdHJlY3Vyc2l2ZSB1c2Ugb2YgYW4gb2JqZWN0IGRldGVjdGVkIHdoaWNoIHdvdWxkIGxlYWQgdG8gdW5zYWZlIGFsaWFzaW5nIGluIHJ1c3QAACycGQBsAAAA6AAAAAEAAAAAAAAACAAAAAQAAADJBwAAygcAAMsHAAAxIGVsZW1lbnQgaW4gbWFwIGVsZW1lbnRzIGluIG1hcAEAAAAAAAAAPJ0ZABAAAAB1bml0YSBzdHJpbmdieXRlIGFycmF5cGF0aCBzdHJpbmdib29sZWFuIGBgAH2dGQAJAAAAhp0ZAAEAAABpbnRlZ2VyIGAAAACYnRkACQAAAIadGQABAAAAZmxvYXRpbmcgcG9pbnQgYLSdGQAQAAAAhp0ZAAEAAABjaGFyYWN0ZXIgYADUnRkACwAAAIadGQABAAAAc3RyaW5nIADwnRkABwAAAHVuaXQgdmFsdWVPcHRpb24gdmFsdWVuZXd0eXBlIHN0cnVjdHNlcXVlbmNlbWFwZW51bXVuaXQgdmFyaWFudG5ld3R5cGUgdmFyaWFudHR1cGxlIHZhcmlhbnRzdHJ1Y3QgdmFyaWFudGV4cGxpY2l0IHBhbmljL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtMS4wLjIxOS9zcmMvZGUvbW9kLnJzd54ZAF0AAADrCAAAEgAAAIadGQABAAAAhp0ZAAEAAABgIG9yIGAAAIadGQABAAAA9J4ZAAYAAACGnRkAAQAAAG9uZSBvZiAsIAAAAAEAAAAAAAAALjBhbnkgdmFsdWV1MzJ1c2l6ZQABAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvaW1wX3N0ZC5ycwAAAECfGQBhAAAAmwAAAAkAAABAnxkAYQAAAKEAAAA2AAAAOiAAAAAAAAAEAAAABAAAANMHAAAAAAAABAAAAAQAAADUBwAAAAAAAAQAAAAEAAAA1QcAAC9ydXN0Yy8xNzA2N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwD4nxkASwAAAH0FAAAbAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnNUoBkAUAAAAC4CAAARAAAAAAAAAAQAAAAEAAAA1gcAAAAAAAAEAAAABAAAANcHAABOdWxFcnJvcjoAAADYBwAADAAAAAQAAADZBwAA2gcAANsHAADcBwAADAAAAAQAAADdBwAA3gcAAN8HAADcBwAADAAAAAQAAADgBwAA4QcAAOIHAAAvcnVzdGMvMTcwNjdlOWFjNmQ3ZWNiNzBlNTBmOTJjMTk0NGU1NDUxODhkMjM1OS9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAKKEZAEoAAAC+AQAAHQAAAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjcvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZACEoRkAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAhKEZACkAAACuBAAADQAAAHVzZSBvZiBzdGQ6OnRocmVhZDo6Y3VycmVudCgpIGlzIG5vdCBwb3NzaWJsZSBhZnRlciB0aGUgdGhyZWFkJ3MgbG9jYWwgZGF0YSBoYXMgYmVlbiBkZXN0cm95ZWQAACyiGQBeAAAAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9jdXJyZW50LnJzAAAAlKIZACEAAAABAQAACQAAAEFjY2Vzc0Vycm9yY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbjogANOiGQBIAAAAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnNmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkQaMZADcAAAAkoxkAHQAAAKkEAAANAAAA4wcAABAAAAAEAAAA5AcAAHRocmVhZCBuYW1lIG1heSBub3QgY29udGFpbiBpbnRlcmlvciBudWxsIGJ5dGVzACSjGQAdAAAA9gQAACgAAABsaWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybfyjGQAoAAAAJAAAAAIAAAAkpBkAdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlAOCjGQAcAAAAigEAAB0AAADlBwAAEAAAAAQAAADmBwAA5wcAAGxpYnJhcnkvc3RkL3NyYy9pby9idWZmZXJlZC9idWZ3cml0ZXIucnMBAAAAAAAAAGxpYnJhcnkvc3RkL3NyYy9pby9idWZmZXJlZC9saW5ld3JpdGVyc2hpbS5yc21pZCA+IGxlbgAA4aQZAAkAAAC0pBkALQAAABYBAAApAAAAZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3Apc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWludmFsaWQgaW5wdXQgcGFyYW1ldGVyaW52YWxpZCBkYXRhdGltZWQgb3V0d3JpdGUgemVyb25vIHN0b3JhZ2Ugc3BhY2VzZWVrIG9uIHVuc2Vla2FibGUgZmlsZXF1b3RhIGV4Y2VlZGVkZmlsZSB0b28gbGFyZ2VyZXNvdXJjZSBidXN5ZXhlY3V0YWJsZSBmaWxlIGJ1c3lkZWFkbG9ja2Nyb3NzLWRldmljZSBsaW5rIG9yIHJlbmFtZXRvbyBtYW55IGxpbmtzaW52YWxpZCBmaWxlbmFtZWFyZ3VtZW50IGxpc3QgdG9vIGxvbmdvcGVyYXRpb24gaW50ZXJydXB0ZWR1bnN1cHBvcnRlZHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGVvdXQgb2YgbWVtb3J5aW4gcHJvZ3Jlc3NvdGhlciBlcnJvcnVuY2F0ZWdvcml6ZWQgZXJyb3JPcwAAAAAABAAAAAQAAADoBwAAY29kZQAAAAABAAAAAQAAAOkHAABraW5k2AcAAAwAAAAEAAAA6gcAAG1lc3NhZ2VLaW5kRXJyb3IAAAAACAAAAAQAAADrBwAAAAAAAAQAAAAEAAAA7AcAAEN1c3RvbWVycm9yIChvcyBlcnJvciApAAEAAAAAAAAAZ6gZAAsAAAByqBkAAQAAAISkGQAoAAAAegAAACEAAABsaWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAnKgZABsAAABcAwAAFAAAAGZhaWxlZCBwcmludGluZyB0byAAyKgZABMAAADEnxkAAgAAAJyoGQAbAAAAjQQAAAkAAABzdGRvdXRsaWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzYSBmb3JtYXR0aW5nIHRyYWl0IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHdoZW4gdGhlIHVuZGVybHlpbmcgc3RyZWFtIGRpZCBub3QAAAAbqRkAVgAAAAKpGQAZAAAAiAIAABEAAABsaWJyYXJ5L3N0ZC9zcmMvcGF0aC5ycwCMqRkAFwAAAMoCAAAhAAAAjKkZABcAAADxAgAALAAAAIypGQAXAAAA8wIAACYAAACMqRkAFwAAAAADAAAnAAAAjKkZABcAAAAMAwAAJwAAAIypGQAXAAAAdgMAACkAAACMqRkAFwAAAHcDAAArAAAAjKkZABcAAACMAwAALwAAAIypGQAXAAAAhAMAAC8AAACMqRkAFwAAAJIDAAArAAAAjKkZABcAAAC6AwAALwAAAIypGQAXAAAAswMAAC8AAACMqRkAFwAAAKgDAAArAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXh0qhkAIAAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJznKoZACwAAAATAAAACQAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL3BvaXNvbi9vbmNlLnJzANiqGQAjAAAAmwAAADIAAADYqhkAIwAAANYAAAAUAAAAbGlicmFyeS9zdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzAAAAHKsZACEAAADRAAAAEwAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4bGlicmFyeS9zdGQvc3JjL3N5bmMvcmVlbnRyYW50X2xvY2sucnN2qxkAJgAAAB8BAAAtAAAAPHVua25vd24+77+9bWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAuKsZABUAAADNqxkADQAAAGxpYnJhcnkvc3RkL3NyYy9hbGxvYy5yc+yrGQAYAAAAZAEAAAkAAAAKAAAA2AcAAAwAAAAEAAAA7QcAAAAAAAAIAAAABAAAAO4HAAAAAAAACAAAAAQAAADvBwAA8AcAAPEHAADyBwAA8wcAABAAAAAEAAAA9AcAAPUHAAD2BwAA9wcAAAAAAAAIAAAABAAAAPgHAAD5BwAA+gcAAPcHAABsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzjKwZADQAAABnAQAAMAAAAAEAAAAAAAAAxJ8ZAAIAAAAgLSAAAQAAAAAAAADgrBkAAwAAACAgICAgICAgICAgICAgICAgICBhdCAAANygGQABAAAATm90Rm91bmRQZXJtaXNzaW9uRGVuaWVkQ29ubmVjdGlvblJlZnVzZWRDb25uZWN0aW9uUmVzZXRIb3N0VW5yZWFjaGFibGVOZXR3b3JrVW5yZWFjaGFibGVDb25uZWN0aW9uQWJvcnRlZE5vdENvbm5lY3RlZEFkZHJJblVzZUFkZHJOb3RBdmFpbGFibGVOZXR3b3JrRG93bkJyb2tlblBpcGVBbHJlYWR5RXhpc3RzV291bGRCbG9ja05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWRvcGVyYXRpb24gc3VjY2Vzc2Z1bE9uY2UgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZEavGQAqAAAAb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gbWF5IG5vdCBiZSBwZXJmb3JtZWQgcmVjdXJzaXZlbHl4rxkAOAAAAAAAAAAQAAAAEQAAABIAAAAQAAAAEAAAABMAAAASAAAADQAAAA4AAAAVAAAA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aWdodDogAHPeGQAQAAAAg94ZABcAAACa3hkACQAAACByaWdodGAgZmFpbGVkOiAKICBsZWZ0OiAAAABz3hkAEAAAALzeGQAQAAAAzN4ZAAkAAACa3hkACQAAADogAAABAAAAAAAAAPjeGQACAAAAAAAAAAwAAAAEAAAAGAgAABkIAAAaCAAAICAgICB7ICwgIHsKLAp9IH0oKAosCntdYXR0ZW1wdGVkIHRvIGJlZ2luIGEgbmV3IG1hcCBlbnRyeSB3aXRob3V0IGNvbXBsZXRpbmcgdGhlIHByZXZpb3VzIG9uZQAAPN8ZAEYAAABsaWJyYXJ5L2NvcmUvc3JjL2ZtdC9idWlsZGVycy5yc4zfGQAgAAAA2QMAAA0AAABhdHRlbXB0ZWQgdG8gZm9ybWF0IGEgbWFwIHZhbHVlIGJlZm9yZSBpdHMga2V5AAC83xkALgAAAIzfGQAgAAAAJQQAAA0AAABhdHRlbXB0ZWQgdG8gZmluaXNoIGEgbWFwIHdpdGggYSBwYXJ0aWFsIGVudHJ5AAAE4BkALgAAAIzfGQAgAAAAsQQAAA0AAAAweDAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAAAFbhGQAbAAAAXwkAAAkAAAAAAAAACAAAAAQAAAARCAAAZmFsc2V0cnVlAAAAVuEZABsAAADYCgAAJgAAAFbhGQAbAAAA4QoAABoAAABsaWJyYXJ5L2NvcmUvc3JjL3NsaWNlL21lbWNoci5yc8DhGQAgAAAAhAAAAB4AAADA4RkAIAAAAKAAAAAJAAAAdXNlci1wcm92aWRlZCBjb21wYXJpc29uIGZ1bmN0aW9u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ZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX3BsdWdpbi0xLjAuMS9zcmMvYWxsb2NhdGlvbi5yc+QaGgBkAAAADwAAABMAQei26AALARAAQYC36AALAREAQZi36AALAREAQbC36AALARAAQci36AALARUAQeC36AALARYAQfi36AALARYAQZC46AALARcAQai46AALARcAQcC46AALARgAQdi46AALARkAQfC46AALARoAQYi56AALARkAQaC56AALARkAQbi56AALARgAQdC56AALARsAQei56AALARkAQYC66AALARgAQZi66AALARoAQbC66AALARwAQci66AALARoAQeC66AALARwAQfi66AALARwAQZC76AALARoAQai76AALARgAQcC76AALARsAQdi76AALARgAQfC76AALAfUAQYy86AALApIBAEGgvOgACwLAAQBBuLzoAAsCwQEAQdC86AALAsIBAEHovOgACwLDAQBBgL3oAAsCxAEAQZi96AALAsUBAEGwvegACwLGAQBByL3oAAsCxwEAQeC96AALAsgBAEH4vegACwLJAQBBkL7oAAsCygEAQai+6AALAssBAEHAvugACwLMAQBB2L7oAAsCzQEAQfC+6AALAs4BAEGIv+gACwLPAQBBoL/oAAsCMgIAQbi/6AALAjICAEHQv+gACwIyAgBB6L/oAAsCMwIAQYDA6AALAjMCAEGYwOgACwIzAgBBsMDoAAsCNAIAQcjA6AALAjMCAEHgwOgACwI0AgBB+MDoAAsCMwIAQZDB6AALAjQCAEGowegACwIzAgBBwMHoAAsCMwIAQdjB6AALAjUCAEHwwegACwI1AgBBiMLoAAsCNgIAQaDC6AALAoMCAEG4wugACxGDAgAAAAAAAODDEQAAAAAA/wBB4MLoAAsCkAMAQfzC6AALAhEEAEG4w+gACwECAEHQw+gACwISBABB6MPoAAsCIgQAQYTE6AALAicEAEGYxOgACwIoBABBsMToAAsCKQQAQcjE6AALAioEAEHgxOgACwIrBABB/MToAAsCLAQAQZDF6AALPS0EAAAAAAAAAwAAAAAAAAABAACAAAAAAAAAAADWBgAAjJAYAAAAAAD/AAAAPJEYAAAAAAD/AAAABQAAAAEAQejF6AALFZgHAAAAAAAAeHEZACBxGQAAAAAAAgBBiMboAAsBAQBBpMboAAsCwwcAfAlwcm9kdWNlcnMCCGxhbmd1YWdlAQRSdXN0AAxwcm9jZXNzZWQtYnkDBXJ1c3RjHTEuODcuMCAoMTcwNjdlOWFjIDIwMjUtMDUtMDkpBndhbHJ1cwYwLjIzLjMMd2FzbS1iaW5kZ2VuEzAuMi4xMDAgKDI0MDVlYzJiNCkAdA90YXJnZXRfZmVhdHVyZXMHKw9tdXRhYmxlLWdsb2JhbHMrE25vbnRyYXBwaW5nLWZwdG9pbnQrB3NpbWQxMjgrC2J1bGstbWVtb3J5KwhzaWduLWV4dCsPcmVmZXJlbmNlLXR5cGVzKwptdWx0aXZhbHVl', 'base64'); + +const wasmModule = new WebAssembly.Module(bytes); +const wasmInstance = new WebAssembly.Instance(wasmModule, imports); +wasm = wasmInstance.exports; +module.exports.__wasm = wasm; + +wasm.__wbindgen_start(); + diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/LICENSE b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/LICENSE new file mode 100644 index 0000000..eaa52b8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025-present Datadog, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/README.md b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/README.md new file mode 100644 index 0000000..9ec0cae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/README.md @@ -0,0 +1,94 @@ +# Tracing Hooks +This repository contains a ESM loader for injecting tracing channel hooks into Node.js modules. It also has a patch for Module to be used to patch CJS modules. + +## Usage + +To load esm loader: + +```js +// esm-loader.mjs +import { register } from 'node:module'; +const instrumentations = [ + { + channelName: 'channel1', + module: { name: 'pkg1', verisonRange: '>=1.0.0', filePath: 'index.js' }, + functionQuery: { + className: 'Class1', + methodName: 'method1', + kind: 'Async' + } + }, + { + channelName: 'channel2', + module: { name: 'pkg2', verisonRange: '>=1.0.0', filePath: 'index.js' }, + functionQuery: { + className: 'Class2, + methodName: 'method2', + kind: 'Sync' + } + } +] + +register('@apm-js-collab/tracing-hooks/hook.mjs', import.meta.url, { + data: { instrumentations } +}); +``` + +To use the loader, you can run your Node.js application with the `--import` flag: + +```bash +node --import esm-loader.mjs your-app.js +``` + +To load CJS patch: + +```js +// cjs-patch.js +const ModulePatch = require('@apm-js-collab/tracing-hooks') +const instrumentations = [ + { + channelName: 'channel1', + module: { name: 'pkg1', verisonRange: '>=1.0.0', filePath: 'index.js' }, + functionQuery: { + className: 'Class1', + methodName: 'method1', + kind: 'Async' + } + }, + { + channelName: 'channel2', + module: { name: 'pkg2', verisonRange: '>=1.0.0', filePath: 'index.js' }, + functionQuery: { + className: 'Class2', + methodName: 'method2', + kind: 'Sync' + } + } +] + + +const modulePatch = new ModulePatch({ instrumentations }); +modulePatch.patch() +``` + +To use the CJS patch you can run your Node.js application with the `--require` flag: + +```bash +node --require cjs-patch.js your-app.js +``` + +## Debugging + +The [debug module](https://www.npmjs.com/package/debug) is used to provide +insight into the patching process. Set `DEBUG='@apm-js-collab*'` to view these +logs. + +Additionally, any patched files can be written out by enabling dump mode. This +is done by setting the environment variable `TRACING_DUMP` to any value. By +default, it will write out file to the system's temporary directory as the +parent directory. The target parent directory can be configured by setting +the `TRACING_DUMP_DIR` environment variable to an absolute path. In either +case, the resolved filename of the module being patched is appended. For +example, if we are patching `lib/index.js` in the `foo` package, and we set +a base directory of `/tmp/dump/`, then the patched code will be written to +`/tmp/dump/foo/lib/index.js`. diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/hook.mjs b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/hook.mjs new file mode 100644 index 0000000..d10fa63 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/hook.mjs @@ -0,0 +1,61 @@ +'use strict' +import createDebug from 'debug'; +import { readFile } from 'node:fs/promises' +import { create } from '@apm-js-collab/code-transformer' +import parse from 'module-details-from-path' +import { fileURLToPath } from 'node:url' +import getPackageVersion from './lib/get-package-version.js' +const debug = createDebug('@apm-js-collab/tracing-hooks:esm-hook') +let transformers = null +let packages = null +let instrumentator = null + +export async function initialize(data = {}) { + const instrumentations = data?.instrumentations || [] + instrumentator = create(instrumentations) + packages = new Set(instrumentations.map(i => i.module.name)) + transformers = new Map() +} + +export async function resolve(specifier, context, nextResolve) { + const url = await nextResolve(specifier, context) + const resolvedModule = parse(url.url) + if (resolvedModule && packages.has(resolvedModule.name)) { + const path = fileURLToPath(resolvedModule.basedir) + const version = getPackageVersion(path) + const transformer = instrumentator.getTransformer(resolvedModule.name, version, resolvedModule.path) + if (transformer) { + transformers.set(url.url, transformer) + } + } + return url +} + +export async function load(url, context, nextLoad) { + const result = await nextLoad(url, context) + if (transformers.has(url) === false) { + return result + } + + if (result.format === 'commonjs') { + const parsedUrl = new URL(result.responseURL ?? url) + result.source ??= await readFile(parsedUrl) + } + + const code = result.source + if (code) { + const transformer = transformers.get(url) + try { + const transformedCode = transformer.transform(code.toString('utf8'), 'unknown') + result.source = transformedCode?.code + result.shortCircuit = true + } catch(err) { + debug('Error transforming module %s: %o', url, err) + } finally { + transformer.free() + } + } + + return result +} + diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/index.js b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/index.js new file mode 100644 index 0000000..2e994d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/index.js @@ -0,0 +1,75 @@ +'use strict' +const { create } = require('@apm-js-collab/code-transformer') +const Module = require('node:module') +const parse = require('module-details-from-path') +const getPackageVersion = require('./lib/get-package-version') +const debug = require('debug')('@apm-js-collab/tracing-hooks:module-patch') + +class ModulePatch { + constructor({ instrumentations = [] } = {}) { + this.packages = new Set(instrumentations.map(i => i.module.name)) + this.instrumentator = create(instrumentations) + this.compile = Module.prototype._compile + } + + /** + * Patches the Node.js module class method that is responsible for compiling code. + * If a module is found that has an instrumentator, it will transform the code before compiling it + * with tracing channel methods. + */ + patch() { + const self = this + Module.prototype._compile = function wrappedCompile(...args) { + const [content, filename] = args + const resolvedModule = parse(filename) + if (resolvedModule && self.packages.has(resolvedModule.name)) { + debug('found resolved module, checking if there is a transformer %s', filename) + const version = getPackageVersion(resolvedModule.basedir, resolvedModule.name) + const transformer = self.instrumentator.getTransformer(resolvedModule.name, version, resolvedModule.path) + if (transformer) { + debug('transforming file %s', filename) + try { + const transformedCode = transformer.transform(content, 'unknown') + args[0] = transformedCode?.code + if (process.env.TRACING_DUMP) { + dump(args[0], filename) + } + } catch (error) { + debug('Error transforming module %s: %o', filename, error) + } finally { + transformer.free() + } + } + } + + return self.compile.apply(this, args) + } + } + + /** + * Restores the original Module.prototype._compile method + * **Note**: This is intended to be used in testing only. + */ + unpatch() { + Module.prototype._compile = this.compile + } +} + +function dump(code, filename) { + const os = require('node:os') + const path = require('node:path') + const fs = require('node:fs') + + const base = process.env.TRACING_DUMP_DIR ?? os.tmpdir() + const dirname = path.dirname(filename) + const basename = path.basename(filename) + const targetDir = path.join(base, dirname) + const targetFile = path.join(targetDir, basename) + + debug('Dumping patched code to: %s', targetFile) + fs.mkdirSync(targetDir, { recursive: true }) + fs.writeFileSync(targetFile, code) +} + +module.exports = ModulePatch + diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/lib/get-package-version.js b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/lib/get-package-version.js new file mode 100644 index 0000000..3397e4e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/lib/get-package-version.js @@ -0,0 +1,30 @@ +'use strict' +const { readFileSync } = require('node:fs') +const { join } = require('node:path') + +const packageVersions = new Map() + +/** + * Retrieves the version of a package from its package.json file. + * If the package.json file cannot be read, it defaults to the Node.js version. + * @param {string} baseDir - The base directory where the package.json file is located. + * @returns {string} The version of the package or the Node.js version if the package.json cannot be read. + */ +function getPackageVersion(baseDir) { + if (packageVersions.has(baseDir)) { + return packageVersions.get(baseDir) + } + + try { + const packageJsonPath = join(baseDir, 'package.json') + const jsonFile = readFileSync(packageJsonPath) + const { version } = JSON.parse(jsonFile) + packageVersions.set(baseDir, version) + return version + } catch { + return process.version.slice(1) + } +} + +module.exports = getPackageVersion + diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/LICENSE b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/LICENSE new file mode 100644 index 0000000..1a9820e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/LICENSE @@ -0,0 +1,20 @@ +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/README.md b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/README.md new file mode 100644 index 0000000..9ebdfbf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/README.md @@ -0,0 +1,481 @@ +# debug +[![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) +[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) + + + +A tiny JavaScript debugging utility modelled after Node.js core's debugging +technique. Works in Node.js and web browsers. + +## Installation + +```bash +$ npm install debug +``` + +## Usage + +`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. + +Example [_app.js_](./examples/node/app.js): + +```js +var debug = require('debug')('http') + , http = require('http') + , name = 'My App'; + +// fake app + +debug('booting %o', name); + +http.createServer(function(req, res){ + debug(req.method + ' ' + req.url); + res.end('hello\n'); +}).listen(3000, function(){ + debug('listening'); +}); + +// fake worker of some kind + +require('./worker'); +``` + +Example [_worker.js_](./examples/node/worker.js): + +```js +var a = require('debug')('worker:a') + , b = require('debug')('worker:b'); + +function work() { + a('doing lots of uninteresting work'); + setTimeout(work, Math.random() * 1000); +} + +work(); + +function workb() { + b('doing some work'); + setTimeout(workb, Math.random() * 2000); +} + +workb(); +``` + +The `DEBUG` environment variable is then used to enable these based on space or +comma-delimited names. + +Here are some examples: + +screen shot 2017-08-08 at 12 53 04 pm +screen shot 2017-08-08 at 12 53 38 pm +screen shot 2017-08-08 at 12 53 25 pm + +#### Windows command prompt notes + +##### CMD + +On Windows the environment variable is set using the `set` command. + +```cmd +set DEBUG=*,-not_this +``` + +Example: + +```cmd +set DEBUG=* & node app.js +``` + +##### PowerShell (VS Code default) + +PowerShell uses different syntax to set environment variables. + +```cmd +$env:DEBUG = "*,-not_this" +``` + +Example: + +```cmd +$env:DEBUG='app';node app.js +``` + +Then, run the program to be debugged as usual. + +npm script example: +```js + "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js", +``` + +## Namespace Colors + +Every debug instance has a color generated for it based on its namespace name. +This helps when visually parsing the debug output to identify which debug instance +a debug line belongs to. + +#### Node.js + +In Node.js, colors are enabled when stderr is a TTY. You also _should_ install +the [`supports-color`](https://npmjs.org/supports-color) module alongside debug, +otherwise debug will only use a small handful of basic colors. + + + +#### Web Browser + +Colors are also enabled on "Web Inspectors" that understand the `%c` formatting +option. These are WebKit web inspectors, Firefox ([since version +31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) +and the Firebug plugin for Firefox (any version). + + + + +## Millisecond diff + +When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. + + + +When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below: + + + + +## Conventions + +If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output. + +## Wildcards + +The `*` character may be used as a wildcard. Suppose for example your library has +debuggers named "connect:bodyParser", "connect:compress", "connect:session", +instead of listing all three with +`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do +`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. + +You can also exclude specific debuggers by prefixing them with a "-" character. +For example, `DEBUG=*,-connect:*` would include all debuggers except those +starting with "connect:". + +## Environment Variables + +When running through Node.js, you can set a few environment variables that will +change the behavior of the debug logging: + +| Name | Purpose | +|-----------|-------------------------------------------------| +| `DEBUG` | Enables/disables specific debugging namespaces. | +| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). | +| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | +| `DEBUG_DEPTH` | Object inspection depth. | +| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | + + +__Note:__ The environment variables beginning with `DEBUG_` end up being +converted into an Options object that gets used with `%o`/`%O` formatters. +See the Node.js documentation for +[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) +for the complete list. + +## Formatters + +Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. +Below are the officially supported formatters: + +| Formatter | Representation | +|-----------|----------------| +| `%O` | Pretty-print an Object on multiple lines. | +| `%o` | Pretty-print an Object all on a single line. | +| `%s` | String. | +| `%d` | Number (both integer and float). | +| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | +| `%%` | Single percent sign ('%'). This does not consume an argument. | + + +### Custom formatters + +You can add custom formatters by extending the `debug.formatters` object. +For example, if you wanted to add support for rendering a Buffer as hex with +`%h`, you could do something like: + +```js +const createDebug = require('debug') +createDebug.formatters.h = (v) => { + return v.toString('hex') +} + +// …elsewhere +const debug = createDebug('foo') +debug('this is hex: %h', new Buffer('hello world')) +// foo this is hex: 68656c6c6f20776f726c6421 +0ms +``` + + +## Browser Support + +You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), +or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), +if you don't want to build it yourself. + +Debug's enable state is currently persisted by `localStorage`. +Consider the situation shown below where you have `worker:a` and `worker:b`, +and wish to debug both. You can enable this using `localStorage.debug`: + +```js +localStorage.debug = 'worker:*' +``` + +And then refresh the page. + +```js +a = debug('worker:a'); +b = debug('worker:b'); + +setInterval(function(){ + a('doing some work'); +}, 1000); + +setInterval(function(){ + b('doing some work'); +}, 1200); +``` + +In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by `debug` if the "Verbose" log level is _enabled_. + + + +## Output streams + + By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: + +Example [_stdout.js_](./examples/node/stdout.js): + +```js +var debug = require('debug'); +var error = debug('app:error'); + +// by default stderr is used +error('goes to stderr!'); + +var log = debug('app:log'); +// set this namespace to log via console.log +log.log = console.log.bind(console); // don't forget to bind to console! +log('goes to stdout'); +error('still goes to stderr!'); + +// set all output to go via console.info +// overrides all per-namespace log settings +debug.log = console.info.bind(console); +error('now goes to stdout via console.info'); +log('still goes to stdout, but via console.info now'); +``` + +## Extend +You can simply extend debugger +```js +const log = require('debug')('auth'); + +//creates new debug instance with extended namespace +const logSign = log.extend('sign'); +const logLogin = log.extend('login'); + +log('hello'); // auth hello +logSign('hello'); //auth:sign hello +logLogin('hello'); //auth:login hello +``` + +## Set dynamically + +You can also enable debug dynamically by calling the `enable()` method : + +```js +let debug = require('debug'); + +console.log(1, debug.enabled('test')); + +debug.enable('test'); +console.log(2, debug.enabled('test')); + +debug.disable(); +console.log(3, debug.enabled('test')); + +``` + +print : +``` +1 false +2 true +3 false +``` + +Usage : +`enable(namespaces)` +`namespaces` can include modes separated by a colon and wildcards. + +Note that calling `enable()` completely overrides previously set DEBUG variable : + +``` +$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))' +=> false +``` + +`disable()` + +Will disable all namespaces. The functions returns the namespaces currently +enabled (and skipped). This can be useful if you want to disable debugging +temporarily without knowing what was enabled to begin with. + +For example: + +```js +let debug = require('debug'); +debug.enable('foo:*,-foo:bar'); +let namespaces = debug.disable(); +debug.enable(namespaces); +``` + +Note: There is no guarantee that the string will be identical to the initial +enable string, but semantically they will be identical. + +## Checking whether a debug target is enabled + +After you've created a debug instance, you can determine whether or not it is +enabled by checking the `enabled` property: + +```javascript +const debug = require('debug')('http'); + +if (debug.enabled) { + // do stuff... +} +``` + +You can also manually toggle this property to force the debug instance to be +enabled or disabled. + +## Usage in child processes + +Due to the way `debug` detects if the output is a TTY or not, colors are not shown in child processes when `stderr` is piped. A solution is to pass the `DEBUG_COLORS=1` environment variable to the child process. +For example: + +```javascript +worker = fork(WORKER_WRAP_PATH, [workerPath], { + stdio: [ + /* stdin: */ 0, + /* stdout: */ 'pipe', + /* stderr: */ 'pipe', + 'ipc', + ], + env: Object.assign({}, process.env, { + DEBUG_COLORS: 1 // without this settings, colors won't be shown + }), +}); + +worker.stderr.pipe(process.stderr, { end: false }); +``` + + +## Authors + + - TJ Holowaychuk + - Nathan Rajlich + - Andrew Rhyne + - Josh Junon + +## Backers + +Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Sponsors + +Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## License + +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/index.js b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/index.js new file mode 100644 index 0000000..ea734fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/index.js @@ -0,0 +1,162 @@ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function (val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + 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( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/license.md b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/license.md new file mode 100644 index 0000000..fa5d39b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Vercel, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/package.json b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/package.json new file mode 100644 index 0000000..4997189 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/package.json @@ -0,0 +1,38 @@ +{ + "name": "ms", + "version": "2.1.3", + "description": "Tiny millisecond conversion utility", + "repository": "vercel/ms", + "main": "./index", + "files": [ + "index.js" + ], + "scripts": { + "precommit": "lint-staged", + "lint": "eslint lib/* bin/*", + "test": "mocha tests.js" + }, + "eslintConfig": { + "extends": "eslint:recommended", + "env": { + "node": true, + "es6": true + } + }, + "lint-staged": { + "*.js": [ + "npm run lint", + "prettier --single-quote --write", + "git add" + ] + }, + "license": "MIT", + "devDependencies": { + "eslint": "4.18.2", + "expect.js": "0.3.1", + "husky": "0.14.3", + "lint-staged": "5.0.0", + "mocha": "4.0.1", + "prettier": "2.0.5" + } +} diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/readme.md b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/readme.md new file mode 100644 index 0000000..0fc1abb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/node_modules/ms/readme.md @@ -0,0 +1,59 @@ +# ms + +![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) + +Use this package to easily convert various time formats to milliseconds. + +## Examples + +```js +ms('2 days') // 172800000 +ms('1d') // 86400000 +ms('10h') // 36000000 +ms('2.5 hrs') // 9000000 +ms('2h') // 7200000 +ms('1m') // 60000 +ms('5s') // 5000 +ms('1y') // 31557600000 +ms('100') // 100 +ms('-3 days') // -259200000 +ms('-1h') // -3600000 +ms('-200') // -200 +``` + +### Convert from Milliseconds + +```js +ms(60000) // "1m" +ms(2 * 60000) // "2m" +ms(-3 * 60000) // "-3m" +ms(ms('10 hours')) // "10h" +``` + +### Time Format Written-Out + +```js +ms(60000, { long: true }) // "1 minute" +ms(2 * 60000, { long: true }) // "2 minutes" +ms(-3 * 60000, { long: true }) // "-3 minutes" +ms(ms('10 hours'), { long: true }) // "10 hours" +``` + +## Features + +- Works both in [Node.js](https://nodejs.org) and in the browser +- If a number is supplied to `ms`, a string with a unit is returned +- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) +- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned + +## Related Packages + +- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. + +## Caught a Bug? + +1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device +2. Link the package to the global module directory: `npm link` +3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! + +As always, you can run the tests using: `npm test` diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/package.json b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/package.json new file mode 100644 index 0000000..ee8abb5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/package.json @@ -0,0 +1,64 @@ +{ + "name": "debug", + "version": "4.4.3", + "repository": { + "type": "git", + "url": "git://github.com/debug-js/debug.git" + }, + "description": "Lightweight debugging utility for Node.js and the browser", + "keywords": [ + "debug", + "log", + "debugger" + ], + "files": [ + "src", + "LICENSE", + "README.md" + ], + "author": "Josh Junon (https://github.com/qix-)", + "contributors": [ + "TJ Holowaychuk ", + "Nathan Rajlich (http://n8.io)", + "Andrew Rhyne " + ], + "license": "MIT", + "scripts": { + "lint": "xo", + "test": "npm run test:node && npm run test:browser && npm run lint", + "test:node": "mocha test.js test.node.js", + "test:browser": "karma start --single-run", + "test:coverage": "cat ./coverage/lcov.info | coveralls" + }, + "dependencies": { + "ms": "^2.1.3" + }, + "devDependencies": { + "brfs": "^2.0.1", + "browserify": "^16.2.3", + "coveralls": "^3.0.2", + "karma": "^3.1.4", + "karma-browserify": "^6.0.0", + "karma-chrome-launcher": "^2.2.0", + "karma-mocha": "^1.3.0", + "mocha": "^5.2.0", + "mocha-lcov-reporter": "^1.2.0", + "sinon": "^14.0.0", + "xo": "^0.23.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + }, + "main": "./src/index.js", + "browser": "./src/browser.js", + "engines": { + "node": ">=6.0" + }, + "xo": { + "rules": { + "import/extensions": "off" + } + } +} diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/browser.js b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/browser.js new file mode 100644 index 0000000..5993451 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/browser.js @@ -0,0 +1,272 @@ +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); + +/** + * Colors. + */ + +exports.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' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + let m; + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + // eslint-disable-next-line no-return-assign + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/common.js b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/common.js new file mode 100644 index 0000000..141cb57 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/common.js @@ -0,0 +1,292 @@ + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require('ms'); + createDebug.destroy = destroy; + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + return debug; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + + createDebug.names = []; + createDebug.skips = []; + + const split = (typeof namespaces === 'string' ? namespaces : '') + .trim() + .replace(/\s+/g, ',') + .split(',') + .filter(Boolean); + + for (const ns of split) { + if (ns[0] === '-') { + createDebug.skips.push(ns.slice(1)); + } else { + createDebug.names.push(ns); + } + } + } + + /** + * Checks if the given string matches a namespace template, honoring + * asterisks as wildcards. + * + * @param {String} search + * @param {String} template + * @return {Boolean} + */ + function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + + while (searchIndex < search.length) { + if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) { + // Match character or proceed with wildcard + if (template[templateIndex] === '*') { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; // Skip the '*' + } else { + searchIndex++; + templateIndex++; + } + } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition + // Backtrack to the last '*' and try to match more characters + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else { + return false; // No match + } + } + + // Handle trailing '*' in template + while (templateIndex < template.length && template[templateIndex] === '*') { + templateIndex++; + } + + return templateIndex === template.length; + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names, + ...createDebug.skips.map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + for (const skip of createDebug.skips) { + if (matchesTemplate(name, skip)) { + return false; + } + } + + for (const ns of createDebug.names) { + if (matchesTemplate(name, ns)) { + return true; + } + } + + return false; + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/index.js b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/index.js new file mode 100644 index 0000000..bf4c57f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/index.js @@ -0,0 +1,10 @@ +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = require('./browser.js'); +} else { + module.exports = require('./node.js'); +} diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/node.js b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/node.js new file mode 100644 index 0000000..715560a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/node_modules/debug/src/node.js @@ -0,0 +1,263 @@ +/** + * Module dependencies. + */ + +const tty = require('tty'); +const util = require('util'); + +/** + * This is the Node.js implementation of `debug()`. + */ + +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.destroy = util.deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = require('supports-color'); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.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 (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); +} + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + const {namespace: name, useColors} = this; + + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} + +/** + * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. + */ + +function log(...args) { + return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init(debug) { + debug.inspectOpts = {}; + + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n') + .map(str => str.trim()) + .join(' '); +}; + +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; diff --git a/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/package.json b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/package.json new file mode 100644 index 0000000..fc24788 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@apm-js-collab/tracing-hooks/package.json @@ -0,0 +1,31 @@ +{ + "name": "@apm-js-collab/tracing-hooks", + "version": "0.3.1", + "description": "CJS and ESM hooks for orchestrion", + "license": "Apache-2.0", + "type": "commonjs", + "repository": { + "type": "git", + "url": "git+https://github.com/apm-js-collab/tracing-hooks.git" + }, + "main": "index.js", + "scripts": { + "test": "c8 borp 'test/**/*.test.{js,mjs}'", + "test:update-snapshots": "SNAP_UPDATE=1 npm test" + }, + "files": [ + "index.js", + "hook.mjs", + "lib" + ], + "dependencies": { + "@apm-js-collab/code-transformer": "^0.8.0", + "debug": "^4.4.1", + "module-details-from-path": "^1.0.4" + }, + "devDependencies": { + "@matteo.collina/snap": "^0.3.0", + "borp": "^0.20.1", + "c8": "^10.1.3" + } +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/README.md new file mode 100644 index 0000000..a4e3459 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/README.md @@ -0,0 +1,66 @@ +# OpenTelemetry Logs Bridge API for JavaScript + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +**Note: This is an experimental package under active development. New releases may include breaking changes.** + +This package provides everything needed to interact with the unstable OpenTelemetry Logs Bridge API, including all TypeScript interfaces, enums, and no-op implementations. It is intended for use both on the server and in the browser. + +**Note: This module defines a log backend API. The API is not intended to be called by application developers directly. +It is provided for logging library authors to build log appenders, which use this API to bridge between existing +logging libraries and the OpenTelemetry log data model.** + +## Alpha Software - Use at your own risk + +The Logs Bridge API is considered alpha software and there is no guarantee of stability or long-term support. When the API is stabilized, it will be made available and supported long-term in the `@opentelemetry/api` package and this package will be deprecated. + +## Quick Start + +Purposefully left blank until SDK is available. + +## Version Compatibility + +Because the npm installer and node module resolution algorithm could potentially allow two or more copies of any given package to exist within the same `node_modules` structure, the OpenTelemetry API takes advantage of a variable on the `global` object to store the global API. When an API method in the API package is called, it checks if this `global` API exists and proxies calls to it if and only if it is a compatible API version. This means if a package has a dependency on an OpenTelemetry API version which is not compatible with the API used by the end user, the package will receive a no-op implementation of the API. + +## Advanced Use + +### API Methods + +If you are writing an instrumentation library, or prefer to call the API methods directly rather than using the `register` method on the Tracer/Meter/Logger Provider, OpenTelemetry provides direct access to the underlying API methods through the `@opentelemetry/api-logs` package. API entry points are defined as global singleton objects `trace`, `metrics`, `logs`, `propagation`, and `context` which contain methods used to initialize SDK implementations and acquire resources from the API. + +- [Logs API Documentation][logs-api-docs] + +```javascript +const api = require("@opentelemetry/api-logs"); + +/* A specific implementation of LoggerProvider comes from an SDK */ +const loggerProvider = createLoggerProvider(); + +/* Initialize LoggerProvider */ +api.logs.setGlobalLoggerProvider(loggerProvider); +/* returns loggerProvider (no-op if a working provider has not been initialized) */ +api.logs.getLoggerProvider(); +/* returns a logger from the registered global logger provider (no-op if a working provider has not been initialized) */ +const logger = api.logs.getLogger(name, version); + +// logging a log record in a log appender +logger.emit({ severityNumber: SeverityNumber.TRACE, body: 'log data' }); +``` + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/api-logs +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fapi-logs.svg +[logs-api-docs]: https://open-telemetry.github.io/opentelemetry-js/modules/_opentelemetry_api_logs.html diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.d.ts new file mode 100644 index 0000000..85c8860 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.d.ts @@ -0,0 +1,7 @@ +import { Logger } from './types/Logger'; +import { LogRecord } from './types/LogRecord'; +export declare class NoopLogger implements Logger { + emit(_logRecord: LogRecord): void; +} +export declare const NOOP_LOGGER: NoopLogger; +//# sourceMappingURL=NoopLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js new file mode 100644 index 0000000..78332f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class NoopLogger { + emit(_logRecord) { } +} +export const NOOP_LOGGER = new NoopLogger(); +//# sourceMappingURL=NoopLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js.map new file mode 100644 index 0000000..f954f13 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLogger.js","sourceRoot":"","sources":["../../src/NoopLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,OAAO,UAAU;IACrB,IAAI,CAAC,UAAqB,IAAS,CAAC;CACrC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.d.ts new file mode 100644 index 0000000..d32bada --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.d.ts @@ -0,0 +1,8 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class NoopLoggerProvider implements LoggerProvider { + getLogger(_name: string, _version?: string | undefined, _options?: LoggerOptions | undefined): Logger; +} +export declare const NOOP_LOGGER_PROVIDER: NoopLoggerProvider; +//# sourceMappingURL=NoopLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js new file mode 100644 index 0000000..fb4e676 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NoopLogger } from './NoopLogger'; +export class NoopLoggerProvider { + getLogger(_name, _version, _options) { + return new NoopLogger(); + } +} +export const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider(); +//# sourceMappingURL=NoopLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js.map new file mode 100644 index 0000000..ee23363 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLoggerProvider.js","sourceRoot":"","sources":["../../src/NoopLoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,kBAAkB;IAC7B,SAAS,CACP,KAAa,EACb,QAA6B,EAC7B,QAAoC;QAEpC,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.d.ts new file mode 100644 index 0000000..4ba993f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.d.ts @@ -0,0 +1,26 @@ +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +import { LogRecord } from './types/LogRecord'; +export declare class ProxyLogger implements Logger { + private _delegate?; + private _provider; + readonly name: string; + readonly version?: string | undefined; + readonly options?: LoggerOptions | undefined; + constructor(provider: LoggerDelegator, name: string, version?: string | undefined, options?: LoggerOptions | undefined); + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + private _getLogger; +} +export interface LoggerDelegator { + _getDelegateLogger(name: string, version?: string, options?: LoggerOptions): Logger | undefined; +} +//# sourceMappingURL=ProxyLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js new file mode 100644 index 0000000..85ecb07 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js @@ -0,0 +1,48 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_LOGGER } from './NoopLogger'; +export class ProxyLogger { + constructor(provider, name, version, options) { + this._provider = provider; + this.name = name; + this.version = version; + this.options = options; + } + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord) { + this._getLogger().emit(logRecord); + } + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + _getLogger() { + if (this._delegate) { + return this._delegate; + } + const logger = this._provider._getDelegateLogger(this.name, this.version, this.options); + if (!logger) { + return NOOP_LOGGER; + } + this._delegate = logger; + return this._delegate; + } +} +//# sourceMappingURL=ProxyLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js.map new file mode 100644 index 0000000..507ed17 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLogger.js","sourceRoot":"","sources":["../../src/ProxyLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,MAAM,OAAO,WAAW;IAQtB,YACE,QAAyB,EACzB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;QAEnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,SAAoB;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC9C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACb,CAAC;QACF,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,WAAW,CAAC;SACpB;QACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n private _provider: LoggerDelegator;\n public readonly name: string;\n public readonly version?: string | undefined;\n public readonly options?: LoggerOptions | undefined;\n\n constructor(\n provider: LoggerDelegator,\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\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 private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.d.ts new file mode 100644 index 0000000..3f235ea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.d.ts @@ -0,0 +1,23 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class ProxyLoggerProvider implements LoggerProvider { + private _delegate?; + getLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger; + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate(): LoggerProvider; + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate: LoggerProvider): void; + /** + * @internal + */ + _getDelegateLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger | undefined; +} +//# sourceMappingURL=ProxyLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js new file mode 100644 index 0000000..38eaa89 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js @@ -0,0 +1,47 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider'; +import { ProxyLogger } from './ProxyLogger'; +export class ProxyLoggerProvider { + getLogger(name, version, options) { + var _a; + return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger(this, name, version, options)); + } + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate() { + var _a; + return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_LOGGER_PROVIDER; + } + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate) { + this._delegate = delegate; + } + /** + * @internal + */ + _getDelegateLogger(name, version, options) { + var _a; + return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options); + } +} +//# sourceMappingURL=ProxyLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js.map new file mode 100644 index 0000000..e620a79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLoggerProvider.js","sourceRoot":"","sources":["../../src/ProxyLoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,mBAAmB;IAG9B,SAAS,CACP,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,CACL,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,mCAC/C,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,YAAY;;QACV,OAAO,MAAA,IAAI,CAAC,SAAS,mCAAI,oBAAoB,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAwB;QACnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,MAAA,IAAI,CAAC,SAAS,0CAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/api/logs.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/api/logs.d.ts new file mode 100644 index 0000000..caf4fd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/api/logs.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +import { Logger } from '../types/Logger'; +import { LoggerOptions } from '../types/LoggerOptions'; +export declare class LogsAPI { + private static _instance?; + private _proxyLoggerProvider; + private constructor(); + static getInstance(): LogsAPI; + setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider; + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider(): LoggerProvider; + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; + /** Remove the global logger provider */ + disable(): void; +} +//# sourceMappingURL=logs.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js new file mode 100644 index 0000000..07aa497 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js @@ -0,0 +1,60 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { API_BACKWARDS_COMPATIBILITY_VERSION, GLOBAL_LOGS_API_KEY, _global, makeGetter, } from '../internal/global-utils'; +import { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider'; +import { ProxyLoggerProvider } from '../ProxyLoggerProvider'; +export class LogsAPI { + constructor() { + this._proxyLoggerProvider = new ProxyLoggerProvider(); + } + static getInstance() { + if (!this._instance) { + this._instance = new LogsAPI(); + } + return this._instance; + } + setGlobalLoggerProvider(provider) { + if (_global[GLOBAL_LOGS_API_KEY]) { + return this.getLoggerProvider(); + } + _global[GLOBAL_LOGS_API_KEY] = makeGetter(API_BACKWARDS_COMPATIBILITY_VERSION, provider, NOOP_LOGGER_PROVIDER); + this._proxyLoggerProvider._setDelegate(provider); + return provider; + } + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider() { + var _a, _b; + return ((_b = (_a = _global[GLOBAL_LOGS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(_global, API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : this._proxyLoggerProvider); + } + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name, version, options) { + return this.getLoggerProvider().getLogger(name, version, options); + } + /** Remove the global logger provider */ + disable() { + delete _global[GLOBAL_LOGS_API_KEY]; + this._proxyLoggerProvider = new ProxyLoggerProvider(); + } +} +//# sourceMappingURL=logs.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js.map new file mode 100644 index 0000000..b043450 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/api/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,mCAAmC,EACnC,mBAAmB,EACnB,OAAO,EACP,UAAU,GACX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,OAAO,OAAO;IAKlB;QAFQ,yBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAElC,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;SAChC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,uBAAuB,CAAC,QAAwB;QACrD,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACjC;QAED,OAAO,CAAC,mBAAmB,CAAC,GAAG,UAAU,CACvC,mCAAmC,EACnC,QAAQ,EACR,oBAAoB,CACrB,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,iBAAiB;;QACtB,OAAO,CACL,MAAA,MAAA,OAAO,CAAC,mBAAmB,CAAC,wDAAG,mCAAmC,CAAC,mCACnE,IAAI,CAAC,oBAAoB,CAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,SAAS,CACd,IAAY,EACZ,OAAgB,EAChB,OAAuB;QAEvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,wCAAwC;IACjC,OAAO;QACZ,OAAO,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACxD,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/index.d.ts new file mode 100644 index 0000000..04d5c9c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/index.d.ts @@ -0,0 +1,10 @@ +export type { Logger } from './types/Logger'; +export type { LoggerProvider } from './types/LoggerProvider'; +export { SeverityNumber } from './types/LogRecord'; +export type { LogAttributes, LogBody, LogRecord } from './types/LogRecord'; +export type { LoggerOptions } from './types/LoggerOptions'; +export type { AnyValue, AnyValueMap } from './types/AnyValue'; +export { NOOP_LOGGER, NoopLogger } from './NoopLogger'; +import { LogsAPI } from './api/logs'; +export declare const logs: LogsAPI; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/index.js new file mode 100644 index 0000000..3f66089 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/index.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { SeverityNumber } from './types/LogRecord'; +export { NOOP_LOGGER, NoopLogger } from './NoopLogger'; +import { LogsAPI } from './api/logs'; +export const logs = LogsAPI.getInstance(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/index.js.map new file mode 100644 index 0000000..964656d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.d.ts new file mode 100644 index 0000000..f54b065 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +export declare const GLOBAL_LOGS_API_KEY: unique symbol; +type Get = (version: number) => T; +export declare const _global: Partial<{ + [GLOBAL_LOGS_API_KEY]: Get; +}>; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +export declare function makeGetter(requiredVersion: number, instance: T, fallback: T): Get; +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +export declare const API_BACKWARDS_COMPATIBILITY_VERSION = 1; +export {}; +//# sourceMappingURL=global-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js new file mode 100644 index 0000000..2ece94f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js @@ -0,0 +1,37 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs'); +export const _global = globalThis; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +export function makeGetter(requiredVersion, instance, fallback) { + return (version) => version === requiredVersion ? instance : fallback; +} +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +export const API_BACKWARDS_COMPATIBILITY_VERSION = 1; +//# sourceMappingURL=global-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js.map new file mode 100644 index 0000000..463744e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-utils.js","sourceRoot":"","sources":["../../../src/internal/global-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAO9E,MAAM,CAAC,MAAM,OAAO,GAAG,UAAwB,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,eAAuB,EACvB,QAAW,EACX,QAAW;IAEX,OAAO,CAAC,OAAe,EAAK,EAAE,CAC5B,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from '../types/LoggerProvider';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = globalThis as OtelGlobal;\n\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 */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\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 */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.d.ts new file mode 100644 index 0000000..aa987ac --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.d.ts @@ -0,0 +1,18 @@ +export type AnyValueScalar = string | number | boolean; +export type AnyValueArray = Array; +/** + * AnyValueMap is a map from string to AnyValue (attribute value or a nested map) + */ +export interface AnyValueMap { + [attributeKey: string]: AnyValue; +} +/** + * AnyValue can be one of the following: + * - a scalar value + * - a byte array + * - array of any value + * - map from string to any value + * - empty value + */ +export type AnyValue = AnyValueScalar | Uint8Array | AnyValueArray | AnyValueMap | null | undefined; +//# sourceMappingURL=AnyValue.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js new file mode 100644 index 0000000..2c44f1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=AnyValue.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js.map new file mode 100644 index 0000000..48746ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AnyValue.js","sourceRoot":"","sources":["../../../src/types/AnyValue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type AnyValueScalar = string | number | boolean;\n\nexport type AnyValueArray = Array;\n\n/**\n * AnyValueMap is a map from string to AnyValue (attribute value or a nested map)\n */\nexport interface AnyValueMap {\n [attributeKey: string]: AnyValue;\n}\n\n/**\n * AnyValue can be one of the following:\n * - a scalar value\n * - a byte array\n * - array of any value\n * - map from string to any value\n * - empty value\n */\nexport type AnyValue =\n | AnyValueScalar\n | Uint8Array\n | AnyValueArray\n | AnyValueMap\n | null\n | undefined;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.d.ts new file mode 100644 index 0000000..71abcd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.d.ts @@ -0,0 +1,66 @@ +import { Context, TimeInput } from '@opentelemetry/api'; +import { AnyValue, AnyValueMap } from './AnyValue'; +export type LogBody = AnyValue; +export type LogAttributes = AnyValueMap; +export declare enum SeverityNumber { + UNSPECIFIED = 0, + TRACE = 1, + TRACE2 = 2, + TRACE3 = 3, + TRACE4 = 4, + DEBUG = 5, + DEBUG2 = 6, + DEBUG3 = 7, + DEBUG4 = 8, + INFO = 9, + INFO2 = 10, + INFO3 = 11, + INFO4 = 12, + WARN = 13, + WARN2 = 14, + WARN3 = 15, + WARN4 = 16, + ERROR = 17, + ERROR2 = 18, + ERROR3 = 19, + ERROR4 = 20, + FATAL = 21, + FATAL2 = 22, + FATAL3 = 23, + FATAL4 = 24 +} +export interface LogRecord { + /** + * The unique identifier for the log record. + */ + eventName?: string; + /** + * The time when the log record occurred as UNIX Epoch time in nanoseconds. + */ + timestamp?: TimeInput; + /** + * Time when the event was observed by the collection system. + */ + observedTimestamp?: TimeInput; + /** + * Numerical value of the severity. + */ + severityNumber?: SeverityNumber; + /** + * The severity text. + */ + severityText?: string; + /** + * A value containing the body of the log record. + */ + body?: LogBody; + /** + * Attributes that define the log record. + */ + attributes?: LogAttributes; + /** + * The Context associated with the LogRecord. + */ + context?: Context; +} +//# sourceMappingURL=LogRecord.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js new file mode 100644 index 0000000..327a4b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js @@ -0,0 +1,44 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var SeverityNumber; +(function (SeverityNumber) { + SeverityNumber[SeverityNumber["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + SeverityNumber[SeverityNumber["TRACE"] = 1] = "TRACE"; + SeverityNumber[SeverityNumber["TRACE2"] = 2] = "TRACE2"; + SeverityNumber[SeverityNumber["TRACE3"] = 3] = "TRACE3"; + SeverityNumber[SeverityNumber["TRACE4"] = 4] = "TRACE4"; + SeverityNumber[SeverityNumber["DEBUG"] = 5] = "DEBUG"; + SeverityNumber[SeverityNumber["DEBUG2"] = 6] = "DEBUG2"; + SeverityNumber[SeverityNumber["DEBUG3"] = 7] = "DEBUG3"; + SeverityNumber[SeverityNumber["DEBUG4"] = 8] = "DEBUG4"; + SeverityNumber[SeverityNumber["INFO"] = 9] = "INFO"; + SeverityNumber[SeverityNumber["INFO2"] = 10] = "INFO2"; + SeverityNumber[SeverityNumber["INFO3"] = 11] = "INFO3"; + SeverityNumber[SeverityNumber["INFO4"] = 12] = "INFO4"; + SeverityNumber[SeverityNumber["WARN"] = 13] = "WARN"; + SeverityNumber[SeverityNumber["WARN2"] = 14] = "WARN2"; + SeverityNumber[SeverityNumber["WARN3"] = 15] = "WARN3"; + SeverityNumber[SeverityNumber["WARN4"] = 16] = "WARN4"; + SeverityNumber[SeverityNumber["ERROR"] = 17] = "ERROR"; + SeverityNumber[SeverityNumber["ERROR2"] = 18] = "ERROR2"; + SeverityNumber[SeverityNumber["ERROR3"] = 19] = "ERROR3"; + SeverityNumber[SeverityNumber["ERROR4"] = 20] = "ERROR4"; + SeverityNumber[SeverityNumber["FATAL"] = 21] = "FATAL"; + SeverityNumber[SeverityNumber["FATAL2"] = 22] = "FATAL2"; + SeverityNumber[SeverityNumber["FATAL3"] = 23] = "FATAL3"; + SeverityNumber[SeverityNumber["FATAL4"] = 24] = "FATAL4"; +})(SeverityNumber || (SeverityNumber = {})); +//# sourceMappingURL=LogRecord.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js.map new file mode 100644 index 0000000..62552a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LogRecord.js","sourceRoot":"","sources":["../../../src/types/LogRecord.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,CAAN,IAAY,cA0BX;AA1BD,WAAY,cAAc;IACxB,iEAAe,CAAA;IACf,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,mDAAQ,CAAA;IACR,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,oDAAS,CAAA;IACT,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;AACb,CAAC,EA1BW,cAAc,KAAd,cAAc,QA0BzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, TimeInput } from '@opentelemetry/api';\nimport { AnyValue, AnyValueMap } from './AnyValue';\n\nexport type LogBody = AnyValue;\nexport type LogAttributes = AnyValueMap;\n\nexport enum SeverityNumber {\n UNSPECIFIED = 0,\n TRACE = 1,\n TRACE2 = 2,\n TRACE3 = 3,\n TRACE4 = 4,\n DEBUG = 5,\n DEBUG2 = 6,\n DEBUG3 = 7,\n DEBUG4 = 8,\n INFO = 9,\n INFO2 = 10,\n INFO3 = 11,\n INFO4 = 12,\n WARN = 13,\n WARN2 = 14,\n WARN3 = 15,\n WARN4 = 16,\n ERROR = 17,\n ERROR2 = 18,\n ERROR3 = 19,\n ERROR4 = 20,\n FATAL = 21,\n FATAL2 = 22,\n FATAL3 = 23,\n FATAL4 = 24,\n}\n\nexport interface LogRecord {\n /**\n * The unique identifier for the log record.\n */\n eventName?: string;\n\n /**\n * The time when the log record occurred as UNIX Epoch time in nanoseconds.\n */\n timestamp?: TimeInput;\n\n /**\n * Time when the event was observed by the collection system.\n */\n observedTimestamp?: TimeInput;\n\n /**\n * Numerical value of the severity.\n */\n severityNumber?: SeverityNumber;\n\n /**\n * The severity text.\n */\n severityText?: string;\n\n /**\n * A value containing the body of the log record.\n */\n body?: LogBody;\n\n /**\n * Attributes that define the log record.\n */\n attributes?: LogAttributes;\n\n /**\n * The Context associated with the LogRecord.\n */\n context?: Context;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.d.ts new file mode 100644 index 0000000..fca8bc6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.d.ts @@ -0,0 +1,10 @@ +import { LogRecord } from './LogRecord'; +export interface Logger { + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; +} +//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js new file mode 100644 index 0000000..99158d8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Logger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js.map new file mode 100644 index 0000000..f454c21 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/types/Logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LogRecord } from './LogRecord';\n\nexport interface Logger {\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.d.ts new file mode 100644 index 0000000..010861f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.d.ts @@ -0,0 +1,18 @@ +import { Attributes } from '@opentelemetry/api'; +export interface LoggerOptions { + /** + * The schemaUrl of the tracer or instrumentation library + * @default '' + */ + schemaUrl?: string; + /** + * The instrumentation scope attributes to associate with emitted telemetry + */ + scopeAttributes?: Attributes; + /** + * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger. + * @default true + */ + includeTraceContext?: boolean; +} +//# sourceMappingURL=LoggerOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js new file mode 100644 index 0000000..b0ea29b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=LoggerOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js.map new file mode 100644 index 0000000..7afbd19 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerOptions.js","sourceRoot":"","sources":["../../../src/types/LoggerOptions.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Attributes } from '@opentelemetry/api';\nexport interface LoggerOptions {\n /**\n * The schemaUrl of the tracer or instrumentation library\n * @default ''\n */\n schemaUrl?: string;\n\n /**\n * The instrumentation scope attributes to associate with emitted telemetry\n */\n scopeAttributes?: Attributes;\n\n /**\n * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger.\n * @default true\n */\n includeTraceContext?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.d.ts new file mode 100644 index 0000000..022c9d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.d.ts @@ -0,0 +1,18 @@ +import { Logger } from './Logger'; +import { LoggerOptions } from './LoggerOptions'; +/** + * A registry for creating named {@link Logger}s. + */ +export interface LoggerProvider { + /** + * Returns a Logger, creating one if one with the given name, version, and + * schemaUrl pair is not already created. + * + * @param name The name of the logger or instrumentation library. + * @param version The version of the logger or instrumentation library. + * @param options The options of the logger or instrumentation library. + * @returns Logger A Logger with the given name and version + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; +} +//# sourceMappingURL=LoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js new file mode 100644 index 0000000..4134abe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=LoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js.map new file mode 100644 index 0000000..0d26f88 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerProvider.js","sourceRoot":"","sources":["../../../src/types/LoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './Logger';\nimport { LoggerOptions } from './LoggerOptions';\n\n/**\n * A registry for creating named {@link Logger}s.\n */\nexport interface LoggerProvider {\n /**\n * Returns a Logger, creating one if one with the given name, version, and\n * schemaUrl pair is not already created.\n *\n * @param name The name of the logger or instrumentation library.\n * @param version The version of the logger or instrumentation library.\n * @param options The options of the logger or instrumentation library.\n * @returns Logger A Logger with the given name and version\n */\n getLogger(name: string, version?: string, options?: LoggerOptions): Logger;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/version.d.ts new file mode 100644 index 0000000..f619f6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.211.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/version.js new file mode 100644 index 0000000..d676626 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '0.211.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/version.js.map new file mode 100644 index 0000000..4072381 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esm/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.211.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.d.ts new file mode 100644 index 0000000..85c8860 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.d.ts @@ -0,0 +1,7 @@ +import { Logger } from './types/Logger'; +import { LogRecord } from './types/LogRecord'; +export declare class NoopLogger implements Logger { + emit(_logRecord: LogRecord): void; +} +export declare const NOOP_LOGGER: NoopLogger; +//# sourceMappingURL=NoopLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js new file mode 100644 index 0000000..78332f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class NoopLogger { + emit(_logRecord) { } +} +export const NOOP_LOGGER = new NoopLogger(); +//# sourceMappingURL=NoopLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js.map new file mode 100644 index 0000000..f954f13 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLogger.js","sourceRoot":"","sources":["../../src/NoopLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,OAAO,UAAU;IACrB,IAAI,CAAC,UAAqB,IAAS,CAAC;CACrC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.d.ts new file mode 100644 index 0000000..d32bada --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.d.ts @@ -0,0 +1,8 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class NoopLoggerProvider implements LoggerProvider { + getLogger(_name: string, _version?: string | undefined, _options?: LoggerOptions | undefined): Logger; +} +export declare const NOOP_LOGGER_PROVIDER: NoopLoggerProvider; +//# sourceMappingURL=NoopLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js new file mode 100644 index 0000000..fb4e676 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NoopLogger } from './NoopLogger'; +export class NoopLoggerProvider { + getLogger(_name, _version, _options) { + return new NoopLogger(); + } +} +export const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider(); +//# sourceMappingURL=NoopLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js.map new file mode 100644 index 0000000..ee23363 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLoggerProvider.js","sourceRoot":"","sources":["../../src/NoopLoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,kBAAkB;IAC7B,SAAS,CACP,KAAa,EACb,QAA6B,EAC7B,QAAoC;QAEpC,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.d.ts new file mode 100644 index 0000000..4ba993f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.d.ts @@ -0,0 +1,26 @@ +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +import { LogRecord } from './types/LogRecord'; +export declare class ProxyLogger implements Logger { + private _delegate?; + private _provider; + readonly name: string; + readonly version?: string | undefined; + readonly options?: LoggerOptions | undefined; + constructor(provider: LoggerDelegator, name: string, version?: string | undefined, options?: LoggerOptions | undefined); + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + private _getLogger; +} +export interface LoggerDelegator { + _getDelegateLogger(name: string, version?: string, options?: LoggerOptions): Logger | undefined; +} +//# sourceMappingURL=ProxyLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js new file mode 100644 index 0000000..85ecb07 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js @@ -0,0 +1,48 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_LOGGER } from './NoopLogger'; +export class ProxyLogger { + constructor(provider, name, version, options) { + this._provider = provider; + this.name = name; + this.version = version; + this.options = options; + } + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord) { + this._getLogger().emit(logRecord); + } + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + _getLogger() { + if (this._delegate) { + return this._delegate; + } + const logger = this._provider._getDelegateLogger(this.name, this.version, this.options); + if (!logger) { + return NOOP_LOGGER; + } + this._delegate = logger; + return this._delegate; + } +} +//# sourceMappingURL=ProxyLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js.map new file mode 100644 index 0000000..507ed17 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLogger.js","sourceRoot":"","sources":["../../src/ProxyLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,MAAM,OAAO,WAAW;IAQtB,YACE,QAAyB,EACzB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;QAEnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,SAAoB;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC9C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACb,CAAC;QACF,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,WAAW,CAAC;SACpB;QACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n private _provider: LoggerDelegator;\n public readonly name: string;\n public readonly version?: string | undefined;\n public readonly options?: LoggerOptions | undefined;\n\n constructor(\n provider: LoggerDelegator,\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\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 private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.d.ts new file mode 100644 index 0000000..3f235ea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.d.ts @@ -0,0 +1,23 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class ProxyLoggerProvider implements LoggerProvider { + private _delegate?; + getLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger; + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate(): LoggerProvider; + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate: LoggerProvider): void; + /** + * @internal + */ + _getDelegateLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger | undefined; +} +//# sourceMappingURL=ProxyLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js new file mode 100644 index 0000000..38eaa89 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js @@ -0,0 +1,47 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider'; +import { ProxyLogger } from './ProxyLogger'; +export class ProxyLoggerProvider { + getLogger(name, version, options) { + var _a; + return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger(this, name, version, options)); + } + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate() { + var _a; + return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_LOGGER_PROVIDER; + } + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate) { + this._delegate = delegate; + } + /** + * @internal + */ + _getDelegateLogger(name, version, options) { + var _a; + return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options); + } +} +//# sourceMappingURL=ProxyLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js.map new file mode 100644 index 0000000..e620a79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLoggerProvider.js","sourceRoot":"","sources":["../../src/ProxyLoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,mBAAmB;IAG9B,SAAS,CACP,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,CACL,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,mCAC/C,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,YAAY;;QACV,OAAO,MAAA,IAAI,CAAC,SAAS,mCAAI,oBAAoB,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAwB;QACnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,MAAA,IAAI,CAAC,SAAS,0CAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.d.ts new file mode 100644 index 0000000..caf4fd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +import { Logger } from '../types/Logger'; +import { LoggerOptions } from '../types/LoggerOptions'; +export declare class LogsAPI { + private static _instance?; + private _proxyLoggerProvider; + private constructor(); + static getInstance(): LogsAPI; + setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider; + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider(): LoggerProvider; + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; + /** Remove the global logger provider */ + disable(): void; +} +//# sourceMappingURL=logs.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js new file mode 100644 index 0000000..07aa497 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js @@ -0,0 +1,60 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { API_BACKWARDS_COMPATIBILITY_VERSION, GLOBAL_LOGS_API_KEY, _global, makeGetter, } from '../internal/global-utils'; +import { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider'; +import { ProxyLoggerProvider } from '../ProxyLoggerProvider'; +export class LogsAPI { + constructor() { + this._proxyLoggerProvider = new ProxyLoggerProvider(); + } + static getInstance() { + if (!this._instance) { + this._instance = new LogsAPI(); + } + return this._instance; + } + setGlobalLoggerProvider(provider) { + if (_global[GLOBAL_LOGS_API_KEY]) { + return this.getLoggerProvider(); + } + _global[GLOBAL_LOGS_API_KEY] = makeGetter(API_BACKWARDS_COMPATIBILITY_VERSION, provider, NOOP_LOGGER_PROVIDER); + this._proxyLoggerProvider._setDelegate(provider); + return provider; + } + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider() { + var _a, _b; + return ((_b = (_a = _global[GLOBAL_LOGS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(_global, API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : this._proxyLoggerProvider); + } + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name, version, options) { + return this.getLoggerProvider().getLogger(name, version, options); + } + /** Remove the global logger provider */ + disable() { + delete _global[GLOBAL_LOGS_API_KEY]; + this._proxyLoggerProvider = new ProxyLoggerProvider(); + } +} +//# sourceMappingURL=logs.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js.map new file mode 100644 index 0000000..b043450 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/api/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,mCAAmC,EACnC,mBAAmB,EACnB,OAAO,EACP,UAAU,GACX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,OAAO,OAAO;IAKlB;QAFQ,yBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAElC,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;SAChC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,uBAAuB,CAAC,QAAwB;QACrD,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACjC;QAED,OAAO,CAAC,mBAAmB,CAAC,GAAG,UAAU,CACvC,mCAAmC,EACnC,QAAQ,EACR,oBAAoB,CACrB,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,iBAAiB;;QACtB,OAAO,CACL,MAAA,MAAA,OAAO,CAAC,mBAAmB,CAAC,wDAAG,mCAAmC,CAAC,mCACnE,IAAI,CAAC,oBAAoB,CAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,SAAS,CACd,IAAY,EACZ,OAAgB,EAChB,OAAuB;QAEvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,wCAAwC;IACjC,OAAO;QACZ,OAAO,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACxD,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/index.d.ts new file mode 100644 index 0000000..04d5c9c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/index.d.ts @@ -0,0 +1,10 @@ +export type { Logger } from './types/Logger'; +export type { LoggerProvider } from './types/LoggerProvider'; +export { SeverityNumber } from './types/LogRecord'; +export type { LogAttributes, LogBody, LogRecord } from './types/LogRecord'; +export type { LoggerOptions } from './types/LoggerOptions'; +export type { AnyValue, AnyValueMap } from './types/AnyValue'; +export { NOOP_LOGGER, NoopLogger } from './NoopLogger'; +import { LogsAPI } from './api/logs'; +export declare const logs: LogsAPI; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/index.js new file mode 100644 index 0000000..3f66089 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/index.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { SeverityNumber } from './types/LogRecord'; +export { NOOP_LOGGER, NoopLogger } from './NoopLogger'; +import { LogsAPI } from './api/logs'; +export const logs = LogsAPI.getInstance(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/index.js.map new file mode 100644 index 0000000..964656d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.d.ts new file mode 100644 index 0000000..f54b065 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +export declare const GLOBAL_LOGS_API_KEY: unique symbol; +type Get = (version: number) => T; +export declare const _global: Partial<{ + [GLOBAL_LOGS_API_KEY]: Get; +}>; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +export declare function makeGetter(requiredVersion: number, instance: T, fallback: T): Get; +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +export declare const API_BACKWARDS_COMPATIBILITY_VERSION = 1; +export {}; +//# sourceMappingURL=global-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js new file mode 100644 index 0000000..2ece94f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js @@ -0,0 +1,37 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs'); +export const _global = globalThis; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +export function makeGetter(requiredVersion, instance, fallback) { + return (version) => version === requiredVersion ? instance : fallback; +} +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +export const API_BACKWARDS_COMPATIBILITY_VERSION = 1; +//# sourceMappingURL=global-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js.map new file mode 100644 index 0000000..463744e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-utils.js","sourceRoot":"","sources":["../../../src/internal/global-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAO9E,MAAM,CAAC,MAAM,OAAO,GAAG,UAAwB,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,eAAuB,EACvB,QAAW,EACX,QAAW;IAEX,OAAO,CAAC,OAAe,EAAK,EAAE,CAC5B,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from '../types/LoggerProvider';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = globalThis as OtelGlobal;\n\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 */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\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 */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.d.ts new file mode 100644 index 0000000..aa987ac --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.d.ts @@ -0,0 +1,18 @@ +export type AnyValueScalar = string | number | boolean; +export type AnyValueArray = Array; +/** + * AnyValueMap is a map from string to AnyValue (attribute value or a nested map) + */ +export interface AnyValueMap { + [attributeKey: string]: AnyValue; +} +/** + * AnyValue can be one of the following: + * - a scalar value + * - a byte array + * - array of any value + * - map from string to any value + * - empty value + */ +export type AnyValue = AnyValueScalar | Uint8Array | AnyValueArray | AnyValueMap | null | undefined; +//# sourceMappingURL=AnyValue.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js new file mode 100644 index 0000000..2c44f1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=AnyValue.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js.map new file mode 100644 index 0000000..48746ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AnyValue.js","sourceRoot":"","sources":["../../../src/types/AnyValue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type AnyValueScalar = string | number | boolean;\n\nexport type AnyValueArray = Array;\n\n/**\n * AnyValueMap is a map from string to AnyValue (attribute value or a nested map)\n */\nexport interface AnyValueMap {\n [attributeKey: string]: AnyValue;\n}\n\n/**\n * AnyValue can be one of the following:\n * - a scalar value\n * - a byte array\n * - array of any value\n * - map from string to any value\n * - empty value\n */\nexport type AnyValue =\n | AnyValueScalar\n | Uint8Array\n | AnyValueArray\n | AnyValueMap\n | null\n | undefined;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.d.ts new file mode 100644 index 0000000..71abcd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.d.ts @@ -0,0 +1,66 @@ +import { Context, TimeInput } from '@opentelemetry/api'; +import { AnyValue, AnyValueMap } from './AnyValue'; +export type LogBody = AnyValue; +export type LogAttributes = AnyValueMap; +export declare enum SeverityNumber { + UNSPECIFIED = 0, + TRACE = 1, + TRACE2 = 2, + TRACE3 = 3, + TRACE4 = 4, + DEBUG = 5, + DEBUG2 = 6, + DEBUG3 = 7, + DEBUG4 = 8, + INFO = 9, + INFO2 = 10, + INFO3 = 11, + INFO4 = 12, + WARN = 13, + WARN2 = 14, + WARN3 = 15, + WARN4 = 16, + ERROR = 17, + ERROR2 = 18, + ERROR3 = 19, + ERROR4 = 20, + FATAL = 21, + FATAL2 = 22, + FATAL3 = 23, + FATAL4 = 24 +} +export interface LogRecord { + /** + * The unique identifier for the log record. + */ + eventName?: string; + /** + * The time when the log record occurred as UNIX Epoch time in nanoseconds. + */ + timestamp?: TimeInput; + /** + * Time when the event was observed by the collection system. + */ + observedTimestamp?: TimeInput; + /** + * Numerical value of the severity. + */ + severityNumber?: SeverityNumber; + /** + * The severity text. + */ + severityText?: string; + /** + * A value containing the body of the log record. + */ + body?: LogBody; + /** + * Attributes that define the log record. + */ + attributes?: LogAttributes; + /** + * The Context associated with the LogRecord. + */ + context?: Context; +} +//# sourceMappingURL=LogRecord.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js new file mode 100644 index 0000000..327a4b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js @@ -0,0 +1,44 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var SeverityNumber; +(function (SeverityNumber) { + SeverityNumber[SeverityNumber["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + SeverityNumber[SeverityNumber["TRACE"] = 1] = "TRACE"; + SeverityNumber[SeverityNumber["TRACE2"] = 2] = "TRACE2"; + SeverityNumber[SeverityNumber["TRACE3"] = 3] = "TRACE3"; + SeverityNumber[SeverityNumber["TRACE4"] = 4] = "TRACE4"; + SeverityNumber[SeverityNumber["DEBUG"] = 5] = "DEBUG"; + SeverityNumber[SeverityNumber["DEBUG2"] = 6] = "DEBUG2"; + SeverityNumber[SeverityNumber["DEBUG3"] = 7] = "DEBUG3"; + SeverityNumber[SeverityNumber["DEBUG4"] = 8] = "DEBUG4"; + SeverityNumber[SeverityNumber["INFO"] = 9] = "INFO"; + SeverityNumber[SeverityNumber["INFO2"] = 10] = "INFO2"; + SeverityNumber[SeverityNumber["INFO3"] = 11] = "INFO3"; + SeverityNumber[SeverityNumber["INFO4"] = 12] = "INFO4"; + SeverityNumber[SeverityNumber["WARN"] = 13] = "WARN"; + SeverityNumber[SeverityNumber["WARN2"] = 14] = "WARN2"; + SeverityNumber[SeverityNumber["WARN3"] = 15] = "WARN3"; + SeverityNumber[SeverityNumber["WARN4"] = 16] = "WARN4"; + SeverityNumber[SeverityNumber["ERROR"] = 17] = "ERROR"; + SeverityNumber[SeverityNumber["ERROR2"] = 18] = "ERROR2"; + SeverityNumber[SeverityNumber["ERROR3"] = 19] = "ERROR3"; + SeverityNumber[SeverityNumber["ERROR4"] = 20] = "ERROR4"; + SeverityNumber[SeverityNumber["FATAL"] = 21] = "FATAL"; + SeverityNumber[SeverityNumber["FATAL2"] = 22] = "FATAL2"; + SeverityNumber[SeverityNumber["FATAL3"] = 23] = "FATAL3"; + SeverityNumber[SeverityNumber["FATAL4"] = 24] = "FATAL4"; +})(SeverityNumber || (SeverityNumber = {})); +//# sourceMappingURL=LogRecord.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js.map new file mode 100644 index 0000000..62552a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LogRecord.js","sourceRoot":"","sources":["../../../src/types/LogRecord.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,CAAN,IAAY,cA0BX;AA1BD,WAAY,cAAc;IACxB,iEAAe,CAAA;IACf,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,mDAAQ,CAAA;IACR,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,oDAAS,CAAA;IACT,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;AACb,CAAC,EA1BW,cAAc,KAAd,cAAc,QA0BzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, TimeInput } from '@opentelemetry/api';\nimport { AnyValue, AnyValueMap } from './AnyValue';\n\nexport type LogBody = AnyValue;\nexport type LogAttributes = AnyValueMap;\n\nexport enum SeverityNumber {\n UNSPECIFIED = 0,\n TRACE = 1,\n TRACE2 = 2,\n TRACE3 = 3,\n TRACE4 = 4,\n DEBUG = 5,\n DEBUG2 = 6,\n DEBUG3 = 7,\n DEBUG4 = 8,\n INFO = 9,\n INFO2 = 10,\n INFO3 = 11,\n INFO4 = 12,\n WARN = 13,\n WARN2 = 14,\n WARN3 = 15,\n WARN4 = 16,\n ERROR = 17,\n ERROR2 = 18,\n ERROR3 = 19,\n ERROR4 = 20,\n FATAL = 21,\n FATAL2 = 22,\n FATAL3 = 23,\n FATAL4 = 24,\n}\n\nexport interface LogRecord {\n /**\n * The unique identifier for the log record.\n */\n eventName?: string;\n\n /**\n * The time when the log record occurred as UNIX Epoch time in nanoseconds.\n */\n timestamp?: TimeInput;\n\n /**\n * Time when the event was observed by the collection system.\n */\n observedTimestamp?: TimeInput;\n\n /**\n * Numerical value of the severity.\n */\n severityNumber?: SeverityNumber;\n\n /**\n * The severity text.\n */\n severityText?: string;\n\n /**\n * A value containing the body of the log record.\n */\n body?: LogBody;\n\n /**\n * Attributes that define the log record.\n */\n attributes?: LogAttributes;\n\n /**\n * The Context associated with the LogRecord.\n */\n context?: Context;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.d.ts new file mode 100644 index 0000000..fca8bc6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.d.ts @@ -0,0 +1,10 @@ +import { LogRecord } from './LogRecord'; +export interface Logger { + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; +} +//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js new file mode 100644 index 0000000..99158d8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Logger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js.map new file mode 100644 index 0000000..f454c21 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/types/Logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LogRecord } from './LogRecord';\n\nexport interface Logger {\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.d.ts new file mode 100644 index 0000000..010861f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.d.ts @@ -0,0 +1,18 @@ +import { Attributes } from '@opentelemetry/api'; +export interface LoggerOptions { + /** + * The schemaUrl of the tracer or instrumentation library + * @default '' + */ + schemaUrl?: string; + /** + * The instrumentation scope attributes to associate with emitted telemetry + */ + scopeAttributes?: Attributes; + /** + * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger. + * @default true + */ + includeTraceContext?: boolean; +} +//# sourceMappingURL=LoggerOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js new file mode 100644 index 0000000..b0ea29b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=LoggerOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js.map new file mode 100644 index 0000000..7afbd19 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerOptions.js","sourceRoot":"","sources":["../../../src/types/LoggerOptions.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Attributes } from '@opentelemetry/api';\nexport interface LoggerOptions {\n /**\n * The schemaUrl of the tracer or instrumentation library\n * @default ''\n */\n schemaUrl?: string;\n\n /**\n * The instrumentation scope attributes to associate with emitted telemetry\n */\n scopeAttributes?: Attributes;\n\n /**\n * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger.\n * @default true\n */\n includeTraceContext?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.d.ts new file mode 100644 index 0000000..022c9d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.d.ts @@ -0,0 +1,18 @@ +import { Logger } from './Logger'; +import { LoggerOptions } from './LoggerOptions'; +/** + * A registry for creating named {@link Logger}s. + */ +export interface LoggerProvider { + /** + * Returns a Logger, creating one if one with the given name, version, and + * schemaUrl pair is not already created. + * + * @param name The name of the logger or instrumentation library. + * @param version The version of the logger or instrumentation library. + * @param options The options of the logger or instrumentation library. + * @returns Logger A Logger with the given name and version + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; +} +//# sourceMappingURL=LoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js new file mode 100644 index 0000000..4134abe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=LoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js.map new file mode 100644 index 0000000..0d26f88 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerProvider.js","sourceRoot":"","sources":["../../../src/types/LoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './Logger';\nimport { LoggerOptions } from './LoggerOptions';\n\n/**\n * A registry for creating named {@link Logger}s.\n */\nexport interface LoggerProvider {\n /**\n * Returns a Logger, creating one if one with the given name, version, and\n * schemaUrl pair is not already created.\n *\n * @param name The name of the logger or instrumentation library.\n * @param version The version of the logger or instrumentation library.\n * @param options The options of the logger or instrumentation library.\n * @returns Logger A Logger with the given name and version\n */\n getLogger(name: string, version?: string, options?: LoggerOptions): Logger;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/version.d.ts new file mode 100644 index 0000000..f619f6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.211.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/version.js new file mode 100644 index 0000000..d676626 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '0.211.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/version.js.map new file mode 100644 index 0000000..4072381 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/esnext/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.211.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.d.ts new file mode 100644 index 0000000..85c8860 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.d.ts @@ -0,0 +1,7 @@ +import { Logger } from './types/Logger'; +import { LogRecord } from './types/LogRecord'; +export declare class NoopLogger implements Logger { + emit(_logRecord: LogRecord): void; +} +export declare const NOOP_LOGGER: NoopLogger; +//# sourceMappingURL=NoopLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js new file mode 100644 index 0000000..7e1b218 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js @@ -0,0 +1,24 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NOOP_LOGGER = exports.NoopLogger = void 0; +class NoopLogger { + emit(_logRecord) { } +} +exports.NoopLogger = NoopLogger; +exports.NOOP_LOGGER = new NoopLogger(); +//# sourceMappingURL=NoopLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js.map new file mode 100644 index 0000000..990f248 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLogger.js","sourceRoot":"","sources":["../../src/NoopLogger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH,MAAa,UAAU;IACrB,IAAI,CAAC,UAAqB,IAAS,CAAC;CACrC;AAFD,gCAEC;AAEY,QAAA,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.d.ts new file mode 100644 index 0000000..d32bada --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.d.ts @@ -0,0 +1,8 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class NoopLoggerProvider implements LoggerProvider { + getLogger(_name: string, _version?: string | undefined, _options?: LoggerOptions | undefined): Logger; +} +export declare const NOOP_LOGGER_PROVIDER: NoopLoggerProvider; +//# sourceMappingURL=NoopLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js new file mode 100644 index 0000000..1601f1a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js @@ -0,0 +1,27 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NOOP_LOGGER_PROVIDER = exports.NoopLoggerProvider = void 0; +const NoopLogger_1 = require("./NoopLogger"); +class NoopLoggerProvider { + getLogger(_name, _version, _options) { + return new NoopLogger_1.NoopLogger(); + } +} +exports.NoopLoggerProvider = NoopLoggerProvider; +exports.NOOP_LOGGER_PROVIDER = new NoopLoggerProvider(); +//# sourceMappingURL=NoopLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js.map new file mode 100644 index 0000000..1e03e6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLoggerProvider.js","sourceRoot":"","sources":["../../src/NoopLoggerProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH,6CAA0C;AAE1C,MAAa,kBAAkB;IAC7B,SAAS,CACP,KAAa,EACb,QAA6B,EAC7B,QAAoC;QAEpC,OAAO,IAAI,uBAAU,EAAE,CAAC;IAC1B,CAAC;CACF;AARD,gDAQC;AAEY,QAAA,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.d.ts new file mode 100644 index 0000000..4ba993f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.d.ts @@ -0,0 +1,26 @@ +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +import { LogRecord } from './types/LogRecord'; +export declare class ProxyLogger implements Logger { + private _delegate?; + private _provider; + readonly name: string; + readonly version?: string | undefined; + readonly options?: LoggerOptions | undefined; + constructor(provider: LoggerDelegator, name: string, version?: string | undefined, options?: LoggerOptions | undefined); + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + private _getLogger; +} +export interface LoggerDelegator { + _getDelegateLogger(name: string, version?: string, options?: LoggerOptions): Logger | undefined; +} +//# sourceMappingURL=ProxyLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js new file mode 100644 index 0000000..864098e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js @@ -0,0 +1,52 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ProxyLogger = void 0; +const NoopLogger_1 = require("./NoopLogger"); +class ProxyLogger { + constructor(provider, name, version, options) { + this._provider = provider; + this.name = name; + this.version = version; + this.options = options; + } + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord) { + this._getLogger().emit(logRecord); + } + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + _getLogger() { + if (this._delegate) { + return this._delegate; + } + const logger = this._provider._getDelegateLogger(this.name, this.version, this.options); + if (!logger) { + return NoopLogger_1.NOOP_LOGGER; + } + this._delegate = logger; + return this._delegate; + } +} +exports.ProxyLogger = ProxyLogger; +//# sourceMappingURL=ProxyLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js.map new file mode 100644 index 0000000..94fcbef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLogger.js","sourceRoot":"","sources":["../../src/ProxyLogger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6CAA2C;AAK3C,MAAa,WAAW;IAQtB,YACE,QAAyB,EACzB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;QAEnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,SAAoB;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC9C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACb,CAAC;QACF,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,wBAAW,CAAC;SACpB;QACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAhDD,kCAgDC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n private _provider: LoggerDelegator;\n public readonly name: string;\n public readonly version?: string | undefined;\n public readonly options?: LoggerOptions | undefined;\n\n constructor(\n provider: LoggerDelegator,\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\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 private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.d.ts new file mode 100644 index 0000000..3f235ea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.d.ts @@ -0,0 +1,23 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class ProxyLoggerProvider implements LoggerProvider { + private _delegate?; + getLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger; + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate(): LoggerProvider; + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate: LoggerProvider): void; + /** + * @internal + */ + _getDelegateLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger | undefined; +} +//# sourceMappingURL=ProxyLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js new file mode 100644 index 0000000..dd0b290 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js @@ -0,0 +1,51 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ProxyLoggerProvider = void 0; +const NoopLoggerProvider_1 = require("./NoopLoggerProvider"); +const ProxyLogger_1 = require("./ProxyLogger"); +class ProxyLoggerProvider { + getLogger(name, version, options) { + var _a; + return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger_1.ProxyLogger(this, name, version, options)); + } + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate() { + var _a; + return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER; + } + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate) { + this._delegate = delegate; + } + /** + * @internal + */ + _getDelegateLogger(name, version, options) { + var _a; + return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options); + } +} +exports.ProxyLoggerProvider = ProxyLoggerProvider; +//# sourceMappingURL=ProxyLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js.map new file mode 100644 index 0000000..2a6124c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLoggerProvider.js","sourceRoot":"","sources":["../../src/ProxyLoggerProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH,6DAA4D;AAC5D,+CAA4C;AAE5C,MAAa,mBAAmB;IAG9B,SAAS,CACP,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,CACL,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,mCAC/C,IAAI,yBAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,YAAY;;QACV,OAAO,MAAA,IAAI,CAAC,SAAS,mCAAI,yCAAoB,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAwB;QACnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,MAAA,IAAI,CAAC,SAAS,0CAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF;AAzCD,kDAyCC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/api/logs.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/api/logs.d.ts new file mode 100644 index 0000000..caf4fd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/api/logs.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +import { Logger } from '../types/Logger'; +import { LoggerOptions } from '../types/LoggerOptions'; +export declare class LogsAPI { + private static _instance?; + private _proxyLoggerProvider; + private constructor(); + static getInstance(): LogsAPI; + setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider; + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider(): LoggerProvider; + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; + /** Remove the global logger provider */ + disable(): void; +} +//# sourceMappingURL=logs.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/api/logs.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/api/logs.js new file mode 100644 index 0000000..8fd7e22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/api/logs.js @@ -0,0 +1,64 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LogsAPI = void 0; +const global_utils_1 = require("../internal/global-utils"); +const NoopLoggerProvider_1 = require("../NoopLoggerProvider"); +const ProxyLoggerProvider_1 = require("../ProxyLoggerProvider"); +class LogsAPI { + constructor() { + this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider(); + } + static getInstance() { + if (!this._instance) { + this._instance = new LogsAPI(); + } + return this._instance; + } + setGlobalLoggerProvider(provider) { + if (global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) { + return this.getLoggerProvider(); + } + 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); + this._proxyLoggerProvider._setDelegate(provider); + return provider; + } + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider() { + var _a, _b; + 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); + } + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name, version, options) { + return this.getLoggerProvider().getLogger(name, version, options); + } + /** Remove the global logger provider */ + disable() { + delete global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]; + this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider(); + } +} +exports.LogsAPI = LogsAPI; +//# sourceMappingURL=logs.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/api/logs.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/api/logs.js.map new file mode 100644 index 0000000..4418232 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/api/logs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/api/logs.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2DAKkC;AAElC,8DAA6D;AAG7D,gEAA6D;AAE7D,MAAa,OAAO;IAKlB;QAFQ,yBAAoB,GAAG,IAAI,yCAAmB,EAAE,CAAC;IAElC,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;SAChC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,uBAAuB,CAAC,QAAwB;QACrD,IAAI,sBAAO,CAAC,kCAAmB,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACjC;QAED,sBAAO,CAAC,kCAAmB,CAAC,GAAG,IAAA,yBAAU,EACvC,kDAAmC,EACnC,QAAQ,EACR,yCAAoB,CACrB,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,iBAAiB;;QACtB,OAAO,CACL,MAAA,MAAA,sBAAO,CAAC,kCAAmB,CAAC,uEAAG,kDAAmC,CAAC,mCACnE,IAAI,CAAC,oBAAoB,CAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,SAAS,CACd,IAAY,EACZ,OAAgB,EAChB,OAAuB;QAEvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,wCAAwC;IACjC,OAAO;QACZ,OAAO,sBAAO,CAAC,kCAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,yCAAmB,EAAE,CAAC;IACxD,CAAC;CACF;AA5DD,0BA4DC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/index.d.ts new file mode 100644 index 0000000..04d5c9c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/index.d.ts @@ -0,0 +1,10 @@ +export type { Logger } from './types/Logger'; +export type { LoggerProvider } from './types/LoggerProvider'; +export { SeverityNumber } from './types/LogRecord'; +export type { LogAttributes, LogBody, LogRecord } from './types/LogRecord'; +export type { LoggerOptions } from './types/LoggerOptions'; +export type { AnyValue, AnyValueMap } from './types/AnyValue'; +export { NOOP_LOGGER, NoopLogger } from './NoopLogger'; +import { LogsAPI } from './api/logs'; +export declare const logs: LogsAPI; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/index.js new file mode 100644 index 0000000..e10fb77 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/index.js @@ -0,0 +1,26 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logs = exports.NoopLogger = exports.NOOP_LOGGER = exports.SeverityNumber = void 0; +var LogRecord_1 = require("./types/LogRecord"); +Object.defineProperty(exports, "SeverityNumber", { enumerable: true, get: function () { return LogRecord_1.SeverityNumber; } }); +var NoopLogger_1 = require("./NoopLogger"); +Object.defineProperty(exports, "NOOP_LOGGER", { enumerable: true, get: function () { return NoopLogger_1.NOOP_LOGGER; } }); +Object.defineProperty(exports, "NoopLogger", { enumerable: true, get: function () { return NoopLogger_1.NoopLogger; } }); +const logs_1 = require("./api/logs"); +exports.logs = logs_1.LogsAPI.getInstance(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/index.js.map new file mode 100644 index 0000000..03c84e5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,+CAAmD;AAA1C,2GAAA,cAAc,OAAA;AAIvB,2CAAuD;AAA9C,yGAAA,WAAW,OAAA;AAAE,wGAAA,UAAU,OAAA;AAEhC,qCAAqC;AACxB,QAAA,IAAI,GAAG,cAAO,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.d.ts new file mode 100644 index 0000000..f54b065 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +export declare const GLOBAL_LOGS_API_KEY: unique symbol; +type Get = (version: number) => T; +export declare const _global: Partial<{ + [GLOBAL_LOGS_API_KEY]: Get; +}>; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +export declare function makeGetter(requiredVersion: number, instance: T, fallback: T): Get; +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +export declare const API_BACKWARDS_COMPATIBILITY_VERSION = 1; +export {}; +//# sourceMappingURL=global-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js new file mode 100644 index 0000000..5e800f5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js @@ -0,0 +1,41 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_LOGS_API_KEY = void 0; +exports.GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs'); +exports._global = globalThis; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +function makeGetter(requiredVersion, instance, fallback) { + return (version) => version === requiredVersion ? instance : fallback; +} +exports.makeGetter = makeGetter; +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +exports.API_BACKWARDS_COMPATIBILITY_VERSION = 1; +//# sourceMappingURL=global-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js.map new file mode 100644 index 0000000..5cb36c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-utils.js","sourceRoot":"","sources":["../../../src/internal/global-utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIU,QAAA,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAOjE,QAAA,OAAO,GAAG,UAAwB,CAAC;AAEhD;;;;;;;GAOG;AACH,SAAgB,UAAU,CACxB,eAAuB,EACvB,QAAW,EACX,QAAW;IAEX,OAAO,CAAC,OAAe,EAAK,EAAE,CAC5B,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAPD,gCAOC;AAED;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from '../types/LoggerProvider';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = globalThis as OtelGlobal;\n\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 */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\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 */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.d.ts new file mode 100644 index 0000000..aa987ac --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.d.ts @@ -0,0 +1,18 @@ +export type AnyValueScalar = string | number | boolean; +export type AnyValueArray = Array; +/** + * AnyValueMap is a map from string to AnyValue (attribute value or a nested map) + */ +export interface AnyValueMap { + [attributeKey: string]: AnyValue; +} +/** + * AnyValue can be one of the following: + * - a scalar value + * - a byte array + * - array of any value + * - map from string to any value + * - empty value + */ +export type AnyValue = AnyValueScalar | Uint8Array | AnyValueArray | AnyValueMap | null | undefined; +//# sourceMappingURL=AnyValue.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js new file mode 100644 index 0000000..d1d2400 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=AnyValue.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js.map new file mode 100644 index 0000000..3397a93 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AnyValue.js","sourceRoot":"","sources":["../../../src/types/AnyValue.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type AnyValueScalar = string | number | boolean;\n\nexport type AnyValueArray = Array;\n\n/**\n * AnyValueMap is a map from string to AnyValue (attribute value or a nested map)\n */\nexport interface AnyValueMap {\n [attributeKey: string]: AnyValue;\n}\n\n/**\n * AnyValue can be one of the following:\n * - a scalar value\n * - a byte array\n * - array of any value\n * - map from string to any value\n * - empty value\n */\nexport type AnyValue =\n | AnyValueScalar\n | Uint8Array\n | AnyValueArray\n | AnyValueMap\n | null\n | undefined;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.d.ts new file mode 100644 index 0000000..71abcd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.d.ts @@ -0,0 +1,66 @@ +import { Context, TimeInput } from '@opentelemetry/api'; +import { AnyValue, AnyValueMap } from './AnyValue'; +export type LogBody = AnyValue; +export type LogAttributes = AnyValueMap; +export declare enum SeverityNumber { + UNSPECIFIED = 0, + TRACE = 1, + TRACE2 = 2, + TRACE3 = 3, + TRACE4 = 4, + DEBUG = 5, + DEBUG2 = 6, + DEBUG3 = 7, + DEBUG4 = 8, + INFO = 9, + INFO2 = 10, + INFO3 = 11, + INFO4 = 12, + WARN = 13, + WARN2 = 14, + WARN3 = 15, + WARN4 = 16, + ERROR = 17, + ERROR2 = 18, + ERROR3 = 19, + ERROR4 = 20, + FATAL = 21, + FATAL2 = 22, + FATAL3 = 23, + FATAL4 = 24 +} +export interface LogRecord { + /** + * The unique identifier for the log record. + */ + eventName?: string; + /** + * The time when the log record occurred as UNIX Epoch time in nanoseconds. + */ + timestamp?: TimeInput; + /** + * Time when the event was observed by the collection system. + */ + observedTimestamp?: TimeInput; + /** + * Numerical value of the severity. + */ + severityNumber?: SeverityNumber; + /** + * The severity text. + */ + severityText?: string; + /** + * A value containing the body of the log record. + */ + body?: LogBody; + /** + * Attributes that define the log record. + */ + attributes?: LogAttributes; + /** + * The Context associated with the LogRecord. + */ + context?: Context; +} +//# sourceMappingURL=LogRecord.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js new file mode 100644 index 0000000..3e9e301 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js @@ -0,0 +1,47 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SeverityNumber = void 0; +var SeverityNumber; +(function (SeverityNumber) { + SeverityNumber[SeverityNumber["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + SeverityNumber[SeverityNumber["TRACE"] = 1] = "TRACE"; + SeverityNumber[SeverityNumber["TRACE2"] = 2] = "TRACE2"; + SeverityNumber[SeverityNumber["TRACE3"] = 3] = "TRACE3"; + SeverityNumber[SeverityNumber["TRACE4"] = 4] = "TRACE4"; + SeverityNumber[SeverityNumber["DEBUG"] = 5] = "DEBUG"; + SeverityNumber[SeverityNumber["DEBUG2"] = 6] = "DEBUG2"; + SeverityNumber[SeverityNumber["DEBUG3"] = 7] = "DEBUG3"; + SeverityNumber[SeverityNumber["DEBUG4"] = 8] = "DEBUG4"; + SeverityNumber[SeverityNumber["INFO"] = 9] = "INFO"; + SeverityNumber[SeverityNumber["INFO2"] = 10] = "INFO2"; + SeverityNumber[SeverityNumber["INFO3"] = 11] = "INFO3"; + SeverityNumber[SeverityNumber["INFO4"] = 12] = "INFO4"; + SeverityNumber[SeverityNumber["WARN"] = 13] = "WARN"; + SeverityNumber[SeverityNumber["WARN2"] = 14] = "WARN2"; + SeverityNumber[SeverityNumber["WARN3"] = 15] = "WARN3"; + SeverityNumber[SeverityNumber["WARN4"] = 16] = "WARN4"; + SeverityNumber[SeverityNumber["ERROR"] = 17] = "ERROR"; + SeverityNumber[SeverityNumber["ERROR2"] = 18] = "ERROR2"; + SeverityNumber[SeverityNumber["ERROR3"] = 19] = "ERROR3"; + SeverityNumber[SeverityNumber["ERROR4"] = 20] = "ERROR4"; + SeverityNumber[SeverityNumber["FATAL"] = 21] = "FATAL"; + SeverityNumber[SeverityNumber["FATAL2"] = 22] = "FATAL2"; + SeverityNumber[SeverityNumber["FATAL3"] = 23] = "FATAL3"; + SeverityNumber[SeverityNumber["FATAL4"] = 24] = "FATAL4"; +})(SeverityNumber = exports.SeverityNumber || (exports.SeverityNumber = {})); +//# sourceMappingURL=LogRecord.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js.map new file mode 100644 index 0000000..9efb0ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LogRecord.js","sourceRoot":"","sources":["../../../src/types/LogRecord.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAQH,IAAY,cA0BX;AA1BD,WAAY,cAAc;IACxB,iEAAe,CAAA;IACf,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,mDAAQ,CAAA;IACR,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,oDAAS,CAAA;IACT,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;AACb,CAAC,EA1BW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QA0BzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, TimeInput } from '@opentelemetry/api';\nimport { AnyValue, AnyValueMap } from './AnyValue';\n\nexport type LogBody = AnyValue;\nexport type LogAttributes = AnyValueMap;\n\nexport enum SeverityNumber {\n UNSPECIFIED = 0,\n TRACE = 1,\n TRACE2 = 2,\n TRACE3 = 3,\n TRACE4 = 4,\n DEBUG = 5,\n DEBUG2 = 6,\n DEBUG3 = 7,\n DEBUG4 = 8,\n INFO = 9,\n INFO2 = 10,\n INFO3 = 11,\n INFO4 = 12,\n WARN = 13,\n WARN2 = 14,\n WARN3 = 15,\n WARN4 = 16,\n ERROR = 17,\n ERROR2 = 18,\n ERROR3 = 19,\n ERROR4 = 20,\n FATAL = 21,\n FATAL2 = 22,\n FATAL3 = 23,\n FATAL4 = 24,\n}\n\nexport interface LogRecord {\n /**\n * The unique identifier for the log record.\n */\n eventName?: string;\n\n /**\n * The time when the log record occurred as UNIX Epoch time in nanoseconds.\n */\n timestamp?: TimeInput;\n\n /**\n * Time when the event was observed by the collection system.\n */\n observedTimestamp?: TimeInput;\n\n /**\n * Numerical value of the severity.\n */\n severityNumber?: SeverityNumber;\n\n /**\n * The severity text.\n */\n severityText?: string;\n\n /**\n * A value containing the body of the log record.\n */\n body?: LogBody;\n\n /**\n * Attributes that define the log record.\n */\n attributes?: LogAttributes;\n\n /**\n * The Context associated with the LogRecord.\n */\n context?: Context;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/Logger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/Logger.d.ts new file mode 100644 index 0000000..fca8bc6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/Logger.d.ts @@ -0,0 +1,10 @@ +import { LogRecord } from './LogRecord'; +export interface Logger { + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; +} +//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js new file mode 100644 index 0000000..438fef0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Logger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js.map new file mode 100644 index 0000000..b1ed04e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/types/Logger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LogRecord } from './LogRecord';\n\nexport interface Logger {\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.d.ts new file mode 100644 index 0000000..010861f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.d.ts @@ -0,0 +1,18 @@ +import { Attributes } from '@opentelemetry/api'; +export interface LoggerOptions { + /** + * The schemaUrl of the tracer or instrumentation library + * @default '' + */ + schemaUrl?: string; + /** + * The instrumentation scope attributes to associate with emitted telemetry + */ + scopeAttributes?: Attributes; + /** + * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger. + * @default true + */ + includeTraceContext?: boolean; +} +//# sourceMappingURL=LoggerOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js new file mode 100644 index 0000000..a28ab6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=LoggerOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js.map new file mode 100644 index 0000000..7afbd19 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerOptions.js","sourceRoot":"","sources":["../../../src/types/LoggerOptions.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Attributes } from '@opentelemetry/api';\nexport interface LoggerOptions {\n /**\n * The schemaUrl of the tracer or instrumentation library\n * @default ''\n */\n schemaUrl?: string;\n\n /**\n * The instrumentation scope attributes to associate with emitted telemetry\n */\n scopeAttributes?: Attributes;\n\n /**\n * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger.\n * @default true\n */\n includeTraceContext?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.d.ts new file mode 100644 index 0000000..022c9d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.d.ts @@ -0,0 +1,18 @@ +import { Logger } from './Logger'; +import { LoggerOptions } from './LoggerOptions'; +/** + * A registry for creating named {@link Logger}s. + */ +export interface LoggerProvider { + /** + * Returns a Logger, creating one if one with the given name, version, and + * schemaUrl pair is not already created. + * + * @param name The name of the logger or instrumentation library. + * @param version The version of the logger or instrumentation library. + * @param options The options of the logger or instrumentation library. + * @returns Logger A Logger with the given name and version + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; +} +//# sourceMappingURL=LoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js new file mode 100644 index 0000000..b78089d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=LoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js.map new file mode 100644 index 0000000..b58e25c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerProvider.js","sourceRoot":"","sources":["../../../src/types/LoggerProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './Logger';\nimport { LoggerOptions } from './LoggerOptions';\n\n/**\n * A registry for creating named {@link Logger}s.\n */\nexport interface LoggerProvider {\n /**\n * Returns a Logger, creating one if one with the given name, version, and\n * schemaUrl pair is not already created.\n *\n * @param name The name of the logger or instrumentation library.\n * @param version The version of the logger or instrumentation library.\n * @param options The options of the logger or instrumentation library.\n * @returns Logger A Logger with the given name and version\n */\n getLogger(name: string, version?: string, options?: LoggerOptions): Logger;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/version.d.ts new file mode 100644 index 0000000..f619f6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.211.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/version.js new file mode 100644 index 0000000..440c359 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '0.211.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/version.js.map new file mode 100644 index 0000000..99d92fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.211.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/package.json new file mode 100644 index 0000000..a3a3eb2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api-logs/package.json @@ -0,0 +1,78 @@ +{ + "name": "@opentelemetry/api-logs", + "version": "0.211.0", + "description": "Public logs API for OpenTelemetry", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "test": "nyc mocha test/**/*.test.ts", + "test:browser": "karma start --single-run", + "build": "npm run compile", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "version": "node ../../../scripts/version-update.js", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "prewatch": "node ../../../scripts/version-update.js", + "align-api-deps": "node ../../../scripts/align-api-deps.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "browser", + "profiling", + "logs", + "stats", + "monitoring" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@types/mocha": "10.0.10", + "@types/node": "^8.10.66", + "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "7.0.1", + "karma": "6.4.4", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "mocha": "11.7.5", + "nyc": "17.1.0", + "ts-loader": "9.5.4", + "typescript": "5.0.4", + "webpack": "5.101.3" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/api-logs", + "sideEffects": false, + "gitHead": "38924cbff2a6e924ce8a2a227d3a72de52fbcd35" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/api/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/api/README.md new file mode 100644 index 0000000..59d4cd7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/README.md @@ -0,0 +1,116 @@ +# OpenTelemetry API for JavaScript + +

+ +API Reference +  •   +Documentation +
+ + NPM Release + +
+

+ +This package provides everything needed to interact with the OpenTelemetry API, including all TypeScript interfaces, enums, and no-op implementations. It is intended for use both on the server and in the browser. + +The methods in this package perform no operations by default. This means they can be safely called by a library or end-user application whether there is an SDK registered or not. In order to generate and export telemetry data, you will also need an SDK such as the [OpenTelemetry JS SDK][opentelemetry-js]. + +## Tracing Quick Start + +### You Will Need + +- An application you wish to instrument +- [OpenTelemetry JS SDK][opentelemetry-js] +- Node.js >=8.5.0 (14+ is preferred) or an ECMAScript 5+ compatible browser + +**Note:** ECMAScript 5+ compatibility is for this package only. Please refer to the documentation for the SDK you are using to determine its minimum ECMAScript version. + +**Note for library authors:** Only your end users will need an OpenTelemetry SDK. If you wish to support OpenTelemetry in your library, you only need to use the OpenTelemetry API. For more information, please read the [tracing documentation][docs-tracing]. + +### Install Dependencies + +```sh +npm install @opentelemetry/api @opentelemetry/sdk-trace-base +``` + +### Trace Your Application + +In order to get started with tracing, you will need to first register an SDK. The SDK you are using may provide a convenience method which calls the registration methods for you, but if you would like to call them directly they are documented here: [SDK registration methods][docs-sdk-registration]. + +Once you have registered an SDK, you can start and end spans. A simple example of basic SDK registration and tracing a simple operation is below. The example should export spans to the console once per second. For more information, see the [tracing documentation][docs-tracing]. + +```javascript +const { trace } = require("@opentelemetry/api"); +const { BasicTracerProvider, ConsoleSpanExporter, SimpleSpanProcessor } = require("@opentelemetry/sdk-trace-base"); + +// Create and register an SDK +const provider = new BasicTracerProvider(); +provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); +trace.setGlobalTracerProvider(provider); + +// Acquire a tracer from the global tracer provider which will be used to trace the application +const name = 'my-application-name'; +const version = '0.1.0'; +const tracer = trace.getTracer(name, version); + +// Trace your application by creating spans +async function operation() { + const span = tracer.startSpan("do operation"); + + // mock some work by sleeping 1 second + await new Promise((resolve, reject) => { + setTimeout(resolve, 1000); + }) + + span.end(); +} + +async function main() { + while (true) { + await operation(); + } +} + +main(); +``` + +## Version Compatibility + +Because the npm installer and node module resolution algorithm could potentially allow two or more copies of any given package to exist within the same `node_modules` structure, the OpenTelemetry API takes advantage of a variable on the `global` object to store the global API. When an API method in the API package is called, it checks if this `global` API exists and proxies calls to it if and only if it is a compatible API version. This means if a package has a dependency on an OpenTelemetry API version which is not compatible with the API used by the end user, the package will receive a no-op implementation of the API. + +## Upgrade Guidelines + +### 0.21.0 to 1.0.0 + +No breaking changes + +### 0.20.0 to 0.21.0 + +- [#78](https://github.com/open-telemetry/opentelemetry-js-api/issues/78) `api.context.bind` arguments reversed and `context` is now a required argument. +- [#46](https://github.com/open-telemetry/opentelemetry-js-api/issues/46) Noop classes and singletons are no longer exported. To create a noop span it is recommended to use `api.trace.wrapSpanContext` with `INVALID_SPAN_CONTEXT` instead of using the `NOOP_TRACER`. + +### 1.0.0-rc.3 to 0.20.0 + +- Removing `TimedEvent` which was not part of spec +- `HttpBaggage` renamed to `HttpBaggagePropagator` +- [#45](https://github.com/open-telemetry/opentelemetry-js-api/pull/45) `Span#context` renamed to `Span#spanContext` +- [#47](https://github.com/open-telemetry/opentelemetry-js-api/pull/47) `getSpan`/`setSpan`/`getSpanContext`/`setSpanContext` moved to `trace` namespace +- [#55](https://github.com/open-telemetry/opentelemetry-js-api/pull/55) `getBaggage`/`setBaggage`/`createBaggage` moved to `propagation` namespace + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[opentelemetry-js]: https://github.com/open-telemetry/opentelemetry-js + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/api/LICENSE +[docs-tracing]: https://github.com/open-telemetry/opentelemetry-js/blob/main/doc/tracing.md +[docs-sdk-registration]: https://github.com/open-telemetry/opentelemetry-js/blob/main/doc/sdk-registration.md diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/context.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/context.d.ts new file mode 100644 index 0000000..61caee8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/context.d.ts @@ -0,0 +1,41 @@ +import { Context, ContextManager } from '../context/types'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Context API + */ +export declare class ContextAPI { + private static _instance?; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Context API */ + static getInstance(): ContextAPI; + /** + * Set the current context manager. + * + * @returns true if the context manager was successfully registered, else false + */ + setGlobalContextManager(contextManager: ContextManager): boolean; + /** + * Get the currently active context + */ + active(): Context; + /** + * Execute a function with an active context + * + * @param context context to be active during function execution + * @param fn function to execute in a context + * @param thisArg optional receiver to be used for calling fn + * @param args optional arguments forwarded to fn + */ + with ReturnType>(context: Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + /** + * Bind a context to a target function or event emitter + * + * @param context context to bind to the event emitter or function. Defaults to the currently active context + * @param target function or event emitter to bind + */ + bind(context: Context, target: T): T; + private _getContextManager; + /** Disable and remove the global context manager */ + disable(): void; +} +//# sourceMappingURL=context.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/context.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/context.js new file mode 100644 index 0000000..0d02f97 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/context.js @@ -0,0 +1,110 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +import { NoopContextManager } from '../context/NoopContextManager'; +import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +import { DiagAPI } from './diag'; +var API_NAME = 'context'; +var NOOP_CONTEXT_MANAGER = new NoopContextManager(); +/** + * Singleton object which represents the entry point to the OpenTelemetry Context API + */ +var ContextAPI = /** @class */ (function () { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + function ContextAPI() { + } + /** Get the singleton instance of the Context API */ + ContextAPI.getInstance = function () { + if (!this._instance) { + this._instance = new ContextAPI(); + } + return this._instance; + }; + /** + * Set the current context manager. + * + * @returns true if the context manager was successfully registered, else false + */ + ContextAPI.prototype.setGlobalContextManager = function (contextManager) { + return registerGlobal(API_NAME, contextManager, DiagAPI.instance()); + }; + /** + * Get the currently active context + */ + ContextAPI.prototype.active = function () { + return this._getContextManager().active(); + }; + /** + * Execute a function with an active context + * + * @param context context to be active during function execution + * @param fn function to execute in a context + * @param thisArg optional receiver to be used for calling fn + * @param args optional arguments forwarded to fn + */ + ContextAPI.prototype.with = function (context, fn, thisArg) { + var _a; + var args = []; + for (var _i = 3; _i < arguments.length; _i++) { + args[_i - 3] = arguments[_i]; + } + return (_a = this._getContextManager()).with.apply(_a, __spreadArray([context, fn, thisArg], __read(args), false)); + }; + /** + * Bind a context to a target function or event emitter + * + * @param context context to bind to the event emitter or function. Defaults to the currently active context + * @param target function or event emitter to bind + */ + ContextAPI.prototype.bind = function (context, target) { + return this._getContextManager().bind(context, target); + }; + ContextAPI.prototype._getContextManager = function () { + return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER; + }; + /** Disable and remove the global context manager */ + ContextAPI.prototype.disable = function () { + this._getContextManager().disable(); + unregisterGlobal(API_NAME, DiagAPI.instance()); + }; + return ContextAPI; +}()); +export { ContextAPI }; +//# sourceMappingURL=context.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/context.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/context.js.map new file mode 100644 index 0000000..6938b71 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/api/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAC3B,IAAM,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEtD;;GAEG;AACH;IAGE,+FAA+F;IAC/F;IAAuB,CAAC;IAExB,oDAAoD;IACtC,sBAAW,GAAzB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;SACnC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,4CAAuB,GAA9B,UAA+B,cAA8B;QAC3D,OAAO,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACI,2BAAM,GAAb;QACE,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;;;OAOG;IACI,yBAAI,GAAX,UACE,OAAgB,EAChB,EAAK,EACL,OAA8B;;QAC9B,cAAU;aAAV,UAAU,EAAV,qBAAU,EAAV,IAAU;YAAV,6BAAU;;QAEV,OAAO,CAAA,KAAA,IAAI,CAAC,kBAAkB,EAAE,CAAA,CAAC,IAAI,0BAAC,OAAO,EAAE,EAAE,EAAE,OAAO,UAAK,IAAI,WAAE;IACvE,CAAC;IAED;;;;;OAKG;IACI,yBAAI,GAAX,UAAe,OAAgB,EAAE,MAAS;QACxC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAEO,uCAAkB,GAA1B;QACE,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC;IACrD,CAAC;IAED,oDAAoD;IAC7C,4BAAO,GAAd;QACE,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,CAAC;QACpC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IACH,iBAAC;AAAD,CAAC,AAnED,IAmEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { Context, ContextManager } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nexport class ContextAPI {\n private static _instance?: ContextAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Context API */\n public static getInstance(): ContextAPI {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n public setGlobalContextManager(contextManager: ContextManager): boolean {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n }\n\n /**\n * Get the currently active context\n */\n public active(): Context {\n return this._getContextManager().active();\n }\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 public with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\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 public bind(context: Context, target: T): T {\n return this._getContextManager().bind(context, target);\n }\n\n private _getContextManager(): ContextManager {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n\n /** Disable and remove the global context manager */\n public disable() {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/diag.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/diag.d.ts new file mode 100644 index 0000000..131db17 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/diag.d.ts @@ -0,0 +1,30 @@ +import { ComponentLoggerOptions, DiagLogFunction, DiagLogger, DiagLoggerApi } from '../diag/types'; +/** + * Singleton object which represents the entry point to the OpenTelemetry internal + * diagnostic API + */ +export declare class DiagAPI implements DiagLogger, DiagLoggerApi { + private static _instance?; + /** Get the singleton instance of the DiagAPI API */ + static instance(): DiagAPI; + /** + * Private internal constructor + * @private + */ + private constructor(); + setLogger: DiagLoggerApi['setLogger']; + /** + * + */ + createComponentLogger: (options: ComponentLoggerOptions) => DiagLogger; + verbose: DiagLogFunction; + debug: DiagLogFunction; + info: DiagLogFunction; + warn: DiagLogFunction; + error: DiagLogFunction; + /** + * Unregister the global logger and return to Noop + */ + disable: () => void; +} +//# sourceMappingURL=diag.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/diag.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/diag.js new file mode 100644 index 0000000..25eb9af --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/diag.js @@ -0,0 +1,121 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +import { DiagComponentLogger } from '../diag/ComponentLogger'; +import { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger'; +import { DiagLogLevel, } from '../diag/types'; +import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +var API_NAME = 'diag'; +/** + * Singleton object which represents the entry point to the OpenTelemetry internal + * diagnostic API + */ +var DiagAPI = /** @class */ (function () { + /** + * Private internal constructor + * @private + */ + function DiagAPI() { + function _logProxy(funcName) { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var logger = getGlobal('diag'); + // shortcut if logger not set + if (!logger) + return; + return logger[funcName].apply(logger, __spreadArray([], __read(args), false)); + }; + } + // Using self local variable for minification purposes as 'this' cannot be minified + var self = this; + // DiagAPI specific functions + var setLogger = function (logger, optionsOrLogLevel) { + var _a, _b, _c; + if (optionsOrLogLevel === void 0) { optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }; } + if (logger === self) { + // There isn't much we can do here. + // Logging to the console might break the user application. + // Try to log to self. If a logger was previously registered it will receive the log. + var err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'); + self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message); + return false; + } + if (typeof optionsOrLogLevel === 'number') { + optionsOrLogLevel = { + logLevel: optionsOrLogLevel, + }; + } + var oldLogger = getGlobal('diag'); + var newLogger = createLogLevelDiagLogger((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : DiagLogLevel.INFO, logger); + // There already is an logger registered. We'll let it know before overwriting it. + if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) { + var stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : ''; + oldLogger.warn("Current logger will be overwritten from " + stack); + newLogger.warn("Current logger will overwrite one already registered from " + stack); + } + return registerGlobal('diag', newLogger, self, true); + }; + self.setLogger = setLogger; + self.disable = function () { + unregisterGlobal(API_NAME, self); + }; + self.createComponentLogger = function (options) { + return new DiagComponentLogger(options); + }; + self.verbose = _logProxy('verbose'); + self.debug = _logProxy('debug'); + self.info = _logProxy('info'); + self.warn = _logProxy('warn'); + self.error = _logProxy('error'); + } + /** Get the singleton instance of the DiagAPI API */ + DiagAPI.instance = function () { + if (!this._instance) { + this._instance = new DiagAPI(); + } + return this._instance; + }; + return DiagAPI; +}()); +export { DiagAPI }; +//# sourceMappingURL=diag.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/diag.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/diag.js.map new file mode 100644 index 0000000..380ed2d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/diag.js.map @@ -0,0 +1 @@ +{"version":3,"file":"diag.js","sourceRoot":"","sources":["../../../src/api/diag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAKL,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,IAAM,QAAQ,GAAG,MAAM,CAAC;AAExB;;;GAGG;AACH;IAYE;;;OAGG;IACH;QACE,SAAS,SAAS,CAAC,QAA0B;YAC3C,OAAO;gBAAU,cAAO;qBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;oBAAP,yBAAO;;gBACtB,IAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBACjC,6BAA6B;gBAC7B,IAAI,CAAC,MAAM;oBAAE,OAAO;gBACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAhB,MAAM,2BAAc,IAAI,WAAE;YACnC,CAAC,CAAC;QACJ,CAAC;QAED,mFAAmF;QACnF,IAAM,IAAI,GAAG,IAAI,CAAC;QAElB,6BAA6B;QAE7B,IAAM,SAAS,GAA+B,UAC5C,MAAM,EACN,iBAAmD;;YAAnD,kCAAA,EAAA,sBAAsB,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE;YAEnD,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,mCAAmC;gBACnC,2DAA2D;gBAC3D,qFAAqF;gBACrF,IAAM,GAAG,GAAG,IAAI,KAAK,CACnB,oIAAoI,CACrI,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,MAAA,GAAG,CAAC,KAAK,mCAAI,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrC,OAAO,KAAK,CAAC;aACd;YAED,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;gBACzC,iBAAiB,GAAG;oBAClB,QAAQ,EAAE,iBAAiB;iBAC5B,CAAC;aACH;YAED,IAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,IAAM,SAAS,GAAG,wBAAwB,CACxC,MAAA,iBAAiB,CAAC,QAAQ,mCAAI,YAAY,CAAC,IAAI,EAC/C,MAAM,CACP,CAAC;YACF,kFAAkF;YAClF,IAAI,SAAS,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,EAAE;gBAC3D,IAAM,KAAK,GAAG,MAAA,IAAI,KAAK,EAAE,CAAC,KAAK,mCAAI,iCAAiC,CAAC;gBACrE,SAAS,CAAC,IAAI,CAAC,6CAA2C,KAAO,CAAC,CAAC;gBACnE,SAAS,CAAC,IAAI,CACZ,+DAA6D,KAAO,CACrE,CAAC;aACH;YAED,OAAO,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG;YACb,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,IAAI,CAAC,qBAAqB,GAAG,UAAC,OAA+B;YAC3D,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAjFD,oDAAoD;IACtC,gBAAQ,GAAtB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;SAChC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IA+FH,cAAC;AAAD,CAAC,AAzGD,IAyGC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport {\n ComponentLoggerOptions,\n DiagLogFunction,\n DiagLogger,\n DiagLoggerApi,\n DiagLogLevel,\n} from '../diag/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\n\nconst API_NAME = 'diag';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nexport class DiagAPI implements DiagLogger, DiagLoggerApi {\n private static _instance?: DiagAPI;\n\n /** Get the singleton instance of the DiagAPI API */\n public static instance(): DiagAPI {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Private internal constructor\n * @private\n */\n private constructor() {\n function _logProxy(funcName: keyof DiagLogger): DiagLogFunction {\n return function (...args) {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) return;\n return logger[funcName](...args);\n };\n }\n\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n\n // DiagAPI specific functions\n\n const setLogger: DiagLoggerApi['setLogger'] = (\n logger,\n optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }\n ) => {\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(\n 'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'\n );\n self.error(err.stack ?? err.message);\n return false;\n }\n\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n\n const oldLogger = getGlobal('diag');\n const newLogger = createLogLevelDiagLogger(\n optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO,\n logger\n );\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = new Error().stack ?? '';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(\n `Current logger will overwrite one already registered from ${stack}`\n );\n }\n\n return registerGlobal('diag', newLogger, self, true);\n };\n\n self.setLogger = setLogger;\n\n self.disable = () => {\n unregisterGlobal(API_NAME, self);\n };\n\n self.createComponentLogger = (options: ComponentLoggerOptions) => {\n return new DiagComponentLogger(options);\n };\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\n public setLogger!: DiagLoggerApi['setLogger'];\n /**\n *\n */\n public createComponentLogger!: (\n options: ComponentLoggerOptions\n ) => DiagLogger;\n\n // DiagLogger implementation\n public verbose!: DiagLogFunction;\n public debug!: DiagLogFunction;\n public info!: DiagLogFunction;\n public warn!: DiagLogFunction;\n public error!: DiagLogFunction;\n\n /**\n * Unregister the global logger and return to Noop\n */\n public disable!: () => void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/metrics.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/metrics.d.ts new file mode 100644 index 0000000..5adc145 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/metrics.d.ts @@ -0,0 +1,28 @@ +import { Meter, MeterOptions } from '../metrics/Meter'; +import { MeterProvider } from '../metrics/MeterProvider'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Metrics API + */ +export declare class MetricsAPI { + private static _instance?; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Metrics API */ + static getInstance(): MetricsAPI; + /** + * Set the current global meter provider. + * Returns true if the meter provider was successfully registered, else false. + */ + setGlobalMeterProvider(provider: MeterProvider): boolean; + /** + * Returns the global meter provider. + */ + getMeterProvider(): MeterProvider; + /** + * Returns a meter from the global meter provider. + */ + getMeter(name: string, version?: string, options?: MeterOptions): Meter; + /** Remove the global meter provider */ + disable(): void; +} +//# sourceMappingURL=metrics.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/metrics.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/metrics.js new file mode 100644 index 0000000..92c575a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/metrics.js @@ -0,0 +1,60 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider'; +import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +import { DiagAPI } from './diag'; +var API_NAME = 'metrics'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Metrics API + */ +var MetricsAPI = /** @class */ (function () { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + function MetricsAPI() { + } + /** Get the singleton instance of the Metrics API */ + MetricsAPI.getInstance = function () { + if (!this._instance) { + this._instance = new MetricsAPI(); + } + return this._instance; + }; + /** + * Set the current global meter provider. + * Returns true if the meter provider was successfully registered, else false. + */ + MetricsAPI.prototype.setGlobalMeterProvider = function (provider) { + return registerGlobal(API_NAME, provider, DiagAPI.instance()); + }; + /** + * Returns the global meter provider. + */ + MetricsAPI.prototype.getMeterProvider = function () { + return getGlobal(API_NAME) || NOOP_METER_PROVIDER; + }; + /** + * Returns a meter from the global meter provider. + */ + MetricsAPI.prototype.getMeter = function (name, version, options) { + return this.getMeterProvider().getMeter(name, version, options); + }; + /** Remove the global meter provider */ + MetricsAPI.prototype.disable = function () { + unregisterGlobal(API_NAME, DiagAPI.instance()); + }; + return MetricsAPI; +}()); +export { MetricsAPI }; +//# sourceMappingURL=metrics.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/metrics.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/metrics.js.map new file mode 100644 index 0000000..39c6955 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/metrics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/api/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAE3B;;GAEG;AACH;IAGE,+FAA+F;IAC/F;IAAuB,CAAC;IAExB,oDAAoD;IACtC,sBAAW,GAAzB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;SACnC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,2CAAsB,GAA7B,UAA8B,QAAuB;QACnD,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,qCAAgB,GAAvB;QACE,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,6BAAQ,GAAf,UACE,IAAY,EACZ,OAAgB,EAChB,OAAsB;QAEtB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,uCAAuC;IAChC,4BAAO,GAAd;QACE,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IACH,iBAAC;AAAD,CAAC,AA7CD,IA6CC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter, MeterOptions } from '../metrics/Meter';\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'metrics';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nexport class MetricsAPI {\n private static _instance?: MetricsAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Metrics API */\n public static getInstance(): MetricsAPI {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n public setGlobalMeterProvider(provider: MeterProvider): boolean {\n return registerGlobal(API_NAME, provider, DiagAPI.instance());\n }\n\n /**\n * Returns the global meter provider.\n */\n public getMeterProvider(): MeterProvider {\n return getGlobal(API_NAME) || NOOP_METER_PROVIDER;\n }\n\n /**\n * Returns a meter from the global meter provider.\n */\n public getMeter(\n name: string,\n version?: string,\n options?: MeterOptions\n ): Meter {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n\n /** Remove the global meter provider */\n public disable(): void {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/propagation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/propagation.d.ts new file mode 100644 index 0000000..a22d24d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/propagation.d.ts @@ -0,0 +1,49 @@ +import { Context } from '../context/types'; +import { TextMapGetter, TextMapPropagator, TextMapSetter } from '../propagation/TextMapPropagator'; +import { getBaggage, getActiveBaggage, setBaggage, deleteBaggage } from '../baggage/context-helpers'; +import { createBaggage } from '../baggage/utils'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Propagation API + */ +export declare class PropagationAPI { + private static _instance?; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Propagator API */ + static getInstance(): PropagationAPI; + /** + * Set the current propagator. + * + * @returns true if the propagator was successfully registered, else false + */ + setGlobalPropagator(propagator: TextMapPropagator): boolean; + /** + * Inject context into a carrier to be propagated inter-process + * + * @param context Context carrying tracing data to inject + * @param carrier carrier to inject context into + * @param setter Function used to set values on the carrier + */ + inject(context: Context, carrier: Carrier, setter?: TextMapSetter): void; + /** + * Extract context from a carrier + * + * @param context Context which the newly created context will inherit from + * @param carrier Carrier to extract context from + * @param getter Function used to extract keys from a carrier + */ + extract(context: Context, carrier: Carrier, getter?: TextMapGetter): Context; + /** + * Return a list of all fields which may be used by the propagator. + */ + fields(): string[]; + /** Remove the global propagator */ + disable(): void; + createBaggage: typeof createBaggage; + getBaggage: typeof getBaggage; + getActiveBaggage: typeof getActiveBaggage; + setBaggage: typeof setBaggage; + deleteBaggage: typeof deleteBaggage; + private _getGlobalPropagator; +} +//# sourceMappingURL=propagation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/propagation.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/propagation.js new file mode 100644 index 0000000..d3f6f83 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/propagation.js @@ -0,0 +1,89 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +import { NoopTextMapPropagator } from '../propagation/NoopTextMapPropagator'; +import { defaultTextMapGetter, defaultTextMapSetter, } from '../propagation/TextMapPropagator'; +import { getBaggage, getActiveBaggage, setBaggage, deleteBaggage, } from '../baggage/context-helpers'; +import { createBaggage } from '../baggage/utils'; +import { DiagAPI } from './diag'; +var API_NAME = 'propagation'; +var NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator(); +/** + * Singleton object which represents the entry point to the OpenTelemetry Propagation API + */ +var PropagationAPI = /** @class */ (function () { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + function PropagationAPI() { + this.createBaggage = createBaggage; + this.getBaggage = getBaggage; + this.getActiveBaggage = getActiveBaggage; + this.setBaggage = setBaggage; + this.deleteBaggage = deleteBaggage; + } + /** Get the singleton instance of the Propagator API */ + PropagationAPI.getInstance = function () { + if (!this._instance) { + this._instance = new PropagationAPI(); + } + return this._instance; + }; + /** + * Set the current propagator. + * + * @returns true if the propagator was successfully registered, else false + */ + PropagationAPI.prototype.setGlobalPropagator = function (propagator) { + return registerGlobal(API_NAME, propagator, DiagAPI.instance()); + }; + /** + * Inject context into a carrier to be propagated inter-process + * + * @param context Context carrying tracing data to inject + * @param carrier carrier to inject context into + * @param setter Function used to set values on the carrier + */ + PropagationAPI.prototype.inject = function (context, carrier, setter) { + if (setter === void 0) { setter = defaultTextMapSetter; } + return this._getGlobalPropagator().inject(context, carrier, setter); + }; + /** + * Extract context from a carrier + * + * @param context Context which the newly created context will inherit from + * @param carrier Carrier to extract context from + * @param getter Function used to extract keys from a carrier + */ + PropagationAPI.prototype.extract = function (context, carrier, getter) { + if (getter === void 0) { getter = defaultTextMapGetter; } + return this._getGlobalPropagator().extract(context, carrier, getter); + }; + /** + * Return a list of all fields which may be used by the propagator. + */ + PropagationAPI.prototype.fields = function () { + return this._getGlobalPropagator().fields(); + }; + /** Remove the global propagator */ + PropagationAPI.prototype.disable = function () { + unregisterGlobal(API_NAME, DiagAPI.instance()); + }; + PropagationAPI.prototype._getGlobalPropagator = function () { + return getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR; + }; + return PropagationAPI; +}()); +export { PropagationAPI }; +//# sourceMappingURL=propagation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/propagation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/propagation.js.map new file mode 100644 index 0000000..1cad8f8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/propagation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"propagation.js","sourceRoot":"","sources":["../../../src/api/propagation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAIrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,IAAM,QAAQ,GAAG,aAAa,CAAC;AAC/B,IAAM,wBAAwB,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAE7D;;GAEG;AACH;IAGE,+FAA+F;IAC/F;QA8DO,kBAAa,GAAG,aAAa,CAAC;QAE9B,eAAU,GAAG,UAAU,CAAC;QAExB,qBAAgB,GAAG,gBAAgB,CAAC;QAEpC,eAAU,GAAG,UAAU,CAAC;QAExB,kBAAa,GAAG,aAAa,CAAC;IAtEd,CAAC;IAExB,uDAAuD;IACzC,0BAAW,GAAzB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;SACvC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,4CAAmB,GAA1B,UAA2B,UAA6B;QACtD,OAAO,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;OAMG;IACI,+BAAM,GAAb,UACE,OAAgB,EAChB,OAAgB,EAChB,MAAqD;QAArD,uBAAA,EAAA,6BAAqD;QAErD,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;OAMG;IACI,gCAAO,GAAd,UACE,OAAgB,EAChB,OAAgB,EAChB,MAAqD;QAArD,uBAAA,EAAA,6BAAqD;QAErD,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,+BAAM,GAAb;QACE,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,CAAC;IAC9C,CAAC;IAED,mCAAmC;IAC5B,gCAAO,GAAd;QACE,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAYO,6CAAoB,GAA5B;QACE,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,wBAAwB,CAAC;IACzD,CAAC;IACH,qBAAC;AAAD,CAAC,AA/ED,IA+EC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { NoopTextMapPropagator } from '../propagation/NoopTextMapPropagator';\nimport {\n defaultTextMapGetter,\n defaultTextMapSetter,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '../propagation/TextMapPropagator';\nimport {\n getBaggage,\n getActiveBaggage,\n setBaggage,\n deleteBaggage,\n} from '../baggage/context-helpers';\nimport { createBaggage } from '../baggage/utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n */\nexport class PropagationAPI {\n private static _instance?: PropagationAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Propagator API */\n public static getInstance(): PropagationAPI {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n public setGlobalPropagator(propagator: TextMapPropagator): boolean {\n return registerGlobal(API_NAME, propagator, DiagAPI.instance());\n }\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 public inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter = defaultTextMapSetter\n ): void {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\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 public extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter = defaultTextMapGetter\n ): Context {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n public fields(): string[] {\n return this._getGlobalPropagator().fields();\n }\n\n /** Remove the global propagator */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n\n public createBaggage = createBaggage;\n\n public getBaggage = getBaggage;\n\n public getActiveBaggage = getActiveBaggage;\n\n public setBaggage = setBaggage;\n\n public deleteBaggage = deleteBaggage;\n\n private _getGlobalPropagator(): TextMapPropagator {\n return getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/trace.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/trace.d.ts new file mode 100644 index 0000000..df59fd2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/trace.d.ts @@ -0,0 +1,40 @@ +import { isSpanContextValid, wrapSpanContext } from '../trace/spancontext-utils'; +import { Tracer } from '../trace/tracer'; +import { TracerProvider } from '../trace/tracer_provider'; +import { deleteSpan, getActiveSpan, getSpan, getSpanContext, setSpan, setSpanContext } from '../trace/context-utils'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Tracing API + */ +export declare class TraceAPI { + private static _instance?; + private _proxyTracerProvider; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Trace API */ + static getInstance(): TraceAPI; + /** + * Set the current global tracer. + * + * @returns true if the tracer provider was successfully registered, else false + */ + setGlobalTracerProvider(provider: TracerProvider): boolean; + /** + * Returns the global tracer provider. + */ + getTracerProvider(): TracerProvider; + /** + * Returns a tracer from the global tracer provider. + */ + getTracer(name: string, version?: string): Tracer; + /** Remove the global tracer provider */ + disable(): void; + wrapSpanContext: typeof wrapSpanContext; + isSpanContextValid: typeof isSpanContextValid; + deleteSpan: typeof deleteSpan; + getSpan: typeof getSpan; + getActiveSpan: typeof getActiveSpan; + getSpanContext: typeof getSpanContext; + setSpan: typeof setSpan; + setSpanContext: typeof setSpanContext; +} +//# sourceMappingURL=trace.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/trace.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/trace.js new file mode 100644 index 0000000..a4aa6e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/trace.js @@ -0,0 +1,77 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +import { ProxyTracerProvider } from '../trace/ProxyTracerProvider'; +import { isSpanContextValid, wrapSpanContext, } from '../trace/spancontext-utils'; +import { deleteSpan, getActiveSpan, getSpan, getSpanContext, setSpan, setSpanContext, } from '../trace/context-utils'; +import { DiagAPI } from './diag'; +var API_NAME = 'trace'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Tracing API + */ +var TraceAPI = /** @class */ (function () { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + function TraceAPI() { + this._proxyTracerProvider = new ProxyTracerProvider(); + this.wrapSpanContext = wrapSpanContext; + this.isSpanContextValid = isSpanContextValid; + this.deleteSpan = deleteSpan; + this.getSpan = getSpan; + this.getActiveSpan = getActiveSpan; + this.getSpanContext = getSpanContext; + this.setSpan = setSpan; + this.setSpanContext = setSpanContext; + } + /** Get the singleton instance of the Trace API */ + TraceAPI.getInstance = function () { + if (!this._instance) { + this._instance = new TraceAPI(); + } + return this._instance; + }; + /** + * Set the current global tracer. + * + * @returns true if the tracer provider was successfully registered, else false + */ + TraceAPI.prototype.setGlobalTracerProvider = function (provider) { + var success = registerGlobal(API_NAME, this._proxyTracerProvider, DiagAPI.instance()); + if (success) { + this._proxyTracerProvider.setDelegate(provider); + } + return success; + }; + /** + * Returns the global tracer provider. + */ + TraceAPI.prototype.getTracerProvider = function () { + return getGlobal(API_NAME) || this._proxyTracerProvider; + }; + /** + * Returns a tracer from the global tracer provider. + */ + TraceAPI.prototype.getTracer = function (name, version) { + return this.getTracerProvider().getTracer(name, version); + }; + /** Remove the global tracer provider */ + TraceAPI.prototype.disable = function () { + unregisterGlobal(API_NAME, DiagAPI.instance()); + this._proxyTracerProvider = new ProxyTracerProvider(); + }; + return TraceAPI; +}()); +export { TraceAPI }; +//# sourceMappingURL=trace.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/trace.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/trace.js.map new file mode 100644 index 0000000..122b7e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/api/trace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../src/api/trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,kBAAkB,EAClB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,aAAa,EACb,OAAO,EACP,cAAc,EACd,OAAO,EACP,cAAc,GACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,IAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB;;GAEG;AACH;IAKE,+FAA+F;IAC/F;QAHQ,yBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAmDlD,oBAAe,GAAG,eAAe,CAAC;QAElC,uBAAkB,GAAG,kBAAkB,CAAC;QAExC,eAAU,GAAG,UAAU,CAAC;QAExB,YAAO,GAAG,OAAO,CAAC;QAElB,kBAAa,GAAG,aAAa,CAAC;QAE9B,mBAAc,GAAG,cAAc,CAAC;QAEhC,YAAO,GAAG,OAAO,CAAC;QAElB,mBAAc,GAAG,cAAc,CAAC;IA9DhB,CAAC;IAExB,kDAAkD;IACpC,oBAAW,GAAzB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;SACjC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,0CAAuB,GAA9B,UAA+B,QAAwB;QACrD,IAAM,OAAO,GAAG,cAAc,CAC5B,QAAQ,EACR,IAAI,CAAC,oBAAoB,EACzB,OAAO,CAAC,QAAQ,EAAE,CACnB,CAAC;QACF,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACjD;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,oCAAiB,GAAxB;QACE,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC;IAC1D,CAAC;IAED;;OAEG;IACI,4BAAS,GAAhB,UAAiB,IAAY,EAAE,OAAgB;QAC7C,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,wCAAwC;IACjC,0BAAO,GAAd;QACE,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACxD,CAAC;IAiBH,eAAC;AAAD,CAAC,AArED,IAqEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n isSpanContextValid,\n wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport { Tracer } from '../trace/tracer';\nimport { TracerProvider } from '../trace/tracer_provider';\nimport {\n deleteSpan,\n getActiveSpan,\n getSpan,\n getSpanContext,\n setSpan,\n setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nexport class TraceAPI {\n private static _instance?: TraceAPI;\n\n private _proxyTracerProvider = new ProxyTracerProvider();\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Trace API */\n public static getInstance(): TraceAPI {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n public setGlobalTracerProvider(provider: TracerProvider): boolean {\n const success = registerGlobal(\n API_NAME,\n this._proxyTracerProvider,\n DiagAPI.instance()\n );\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n\n /**\n * Returns the global tracer provider.\n */\n public getTracerProvider(): TracerProvider {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n }\n\n /**\n * Returns a tracer from the global tracer provider.\n */\n public getTracer(name: string, version?: string): Tracer {\n return this.getTracerProvider().getTracer(name, version);\n }\n\n /** Remove the global tracer provider */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n }\n\n public wrapSpanContext = wrapSpanContext;\n\n public isSpanContextValid = isSpanContextValid;\n\n public deleteSpan = deleteSpan;\n\n public getSpan = getSpan;\n\n public getActiveSpan = getActiveSpan;\n\n public getSpanContext = getSpanContext;\n\n public setSpan = setSpan;\n\n public setSpanContext = setSpanContext;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.d.ts new file mode 100644 index 0000000..23750eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.d.ts @@ -0,0 +1,29 @@ +import { Context } from '../context/types'; +import { Baggage } from './types'; +/** + * Retrieve the current baggage from the given context + * + * @param {Context} Context that manage all context values + * @returns {Baggage} Extracted baggage from the context + */ +export declare function getBaggage(context: Context): Baggage | undefined; +/** + * Retrieve the current baggage from the active/current context + * + * @returns {Baggage} Extracted baggage from the context + */ +export declare function getActiveBaggage(): Baggage | undefined; +/** + * Store a baggage in the given context + * + * @param {Context} Context that manage all context values + * @param {Baggage} baggage that will be set in the actual context + */ +export declare function setBaggage(context: Context, baggage: Baggage): Context; +/** + * Delete the baggage stored in the given context + * + * @param {Context} Context that manage all context values + */ +export declare function deleteBaggage(context: Context): Context; +//# sourceMappingURL=context-helpers.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js new file mode 100644 index 0000000..6911334 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js @@ -0,0 +1,56 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ContextAPI } from '../api/context'; +import { createContextKey } from '../context/context'; +/** + * Baggage key + */ +var BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key'); +/** + * Retrieve the current baggage from the given context + * + * @param {Context} Context that manage all context values + * @returns {Baggage} Extracted baggage from the context + */ +export function getBaggage(context) { + return context.getValue(BAGGAGE_KEY) || undefined; +} +/** + * Retrieve the current baggage from the active/current context + * + * @returns {Baggage} Extracted baggage from the context + */ +export function getActiveBaggage() { + return getBaggage(ContextAPI.getInstance().active()); +} +/** + * Store a baggage in the given context + * + * @param {Context} Context that manage all context values + * @param {Baggage} baggage that will be set in the actual context + */ +export function setBaggage(context, baggage) { + return context.setValue(BAGGAGE_KEY, baggage); +} +/** + * Delete the baggage stored in the given context + * + * @param {Context} Context that manage all context values + */ +export function deleteBaggage(context) { + return context.deleteValue(BAGGAGE_KEY); +} +//# sourceMappingURL=context-helpers.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js.map new file mode 100644 index 0000000..8670ebd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context-helpers.js","sourceRoot":"","sources":["../../../src/baggage/context-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD;;GAEG;AACH,IAAM,WAAW,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAQ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa,IAAI,SAAS,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,OAAgB;IAC3D,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ContextAPI } from '../api/context';\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Baggage } from './types';\n\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');\n\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 */\nexport function getBaggage(context: Context): Baggage | undefined {\n return (context.getValue(BAGGAGE_KEY) as Baggage) || undefined;\n}\n\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getActiveBaggage(): Baggage | undefined {\n return getBaggage(ContextAPI.getInstance().active());\n}\n\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 */\nexport function setBaggage(context: Context, baggage: Baggage): Context {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\n\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nexport function deleteBaggage(context: Context): Context {\n return context.deleteValue(BAGGAGE_KEY);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.d.ts new file mode 100644 index 0000000..e6b4554 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.d.ts @@ -0,0 +1,12 @@ +import type { Baggage, BaggageEntry } from '../types'; +export declare class BaggageImpl implements Baggage { + private _entries; + constructor(entries?: Map); + getEntry(key: string): BaggageEntry | undefined; + getAllEntries(): [string, BaggageEntry][]; + setEntry(key: string, entry: BaggageEntry): BaggageImpl; + removeEntry(key: string): BaggageImpl; + removeEntries(...keys: string[]): BaggageImpl; + clear(): BaggageImpl; +} +//# sourceMappingURL=baggage-impl.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js new file mode 100644 index 0000000..c29d685 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js @@ -0,0 +1,98 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var BaggageImpl = /** @class */ (function () { + function BaggageImpl(entries) { + this._entries = entries ? new Map(entries) : new Map(); + } + BaggageImpl.prototype.getEntry = function (key) { + var entry = this._entries.get(key); + if (!entry) { + return undefined; + } + return Object.assign({}, entry); + }; + BaggageImpl.prototype.getAllEntries = function () { + return Array.from(this._entries.entries()).map(function (_a) { + var _b = __read(_a, 2), k = _b[0], v = _b[1]; + return [k, v]; + }); + }; + BaggageImpl.prototype.setEntry = function (key, entry) { + var newBaggage = new BaggageImpl(this._entries); + newBaggage._entries.set(key, entry); + return newBaggage; + }; + BaggageImpl.prototype.removeEntry = function (key) { + var newBaggage = new BaggageImpl(this._entries); + newBaggage._entries.delete(key); + return newBaggage; + }; + BaggageImpl.prototype.removeEntries = function () { + var e_1, _a; + var keys = []; + for (var _i = 0; _i < arguments.length; _i++) { + keys[_i] = arguments[_i]; + } + var newBaggage = new BaggageImpl(this._entries); + try { + for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) { + var key = keys_1_1.value; + newBaggage._entries.delete(key); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1); + } + finally { if (e_1) throw e_1.error; } + } + return newBaggage; + }; + BaggageImpl.prototype.clear = function () { + return new BaggageImpl(); + }; + return BaggageImpl; +}()); +export { BaggageImpl }; +//# sourceMappingURL=baggage-impl.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js.map new file mode 100644 index 0000000..1f3d95a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"baggage-impl.js","sourceRoot":"","sources":["../../../../src/baggage/internal/baggage-impl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIH;IAGE,qBAAY,OAAmC;QAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IACzD,CAAC;IAED,8BAAQ,GAAR,UAAS,GAAW;QAClB,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,mCAAa,GAAb;QACE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,EAAM;gBAAN,KAAA,aAAM,EAAL,CAAC,QAAA,EAAE,CAAC,QAAA;YAAM,OAAA,CAAC,CAAC,EAAE,CAAC,CAAC;QAAN,CAAM,CAAC,CAAC;IACrE,CAAC;IAED,8BAAQ,GAAR,UAAS,GAAW,EAAE,KAAmB;QACvC,IAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,iCAAW,GAAX,UAAY,GAAW;QACrB,IAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,mCAAa,GAAb;;QAAc,cAAiB;aAAjB,UAAiB,EAAjB,qBAAiB,EAAjB,IAAiB;YAAjB,yBAAiB;;QAC7B,IAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;YAClD,KAAkB,IAAA,SAAA,SAAA,IAAI,CAAA,0BAAA,4CAAE;gBAAnB,IAAM,GAAG,iBAAA;gBACZ,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACjC;;;;;;;;;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,2BAAK,GAAL;QACE,OAAO,IAAI,WAAW,EAAE,CAAC;IAC3B,CAAC;IACH,kBAAC;AAAD,CAAC,AA3CD,IA2CC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Baggage, BaggageEntry } from '../types';\n\nexport class BaggageImpl implements Baggage {\n private _entries: Map;\n\n constructor(entries?: Map) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n\n getEntry(key: string): BaggageEntry | undefined {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n\n return Object.assign({}, entry);\n }\n\n getAllEntries(): [string, BaggageEntry][] {\n return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);\n }\n\n setEntry(key: string, entry: BaggageEntry): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n\n removeEntry(key: string): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n\n removeEntries(...keys: string[]): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n\n clear(): BaggageImpl {\n return new BaggageImpl();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.d.ts new file mode 100644 index 0000000..9cd991c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.d.ts @@ -0,0 +1,5 @@ +/** + * Symbol used to make BaggageEntryMetadata an opaque type + */ +export declare const baggageEntryMetadataSymbol: unique symbol; +//# sourceMappingURL=symbol.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.js new file mode 100644 index 0000000..0e7dc36 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Symbol used to make BaggageEntryMetadata an opaque type + */ +export var baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata'); +//# sourceMappingURL=symbol.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.js.map new file mode 100644 index 0000000..f074866 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.js.map @@ -0,0 +1 @@ +{"version":3,"file":"symbol.js","sourceRoot":"","sources":["../../../../src/baggage/internal/symbol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,CAAC,IAAM,0BAA0B,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexport const baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/types.d.ts new file mode 100644 index 0000000..32fa0ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/types.d.ts @@ -0,0 +1,60 @@ +import { baggageEntryMetadataSymbol } from './internal/symbol'; +export interface BaggageEntry { + /** `String` value of the `BaggageEntry`. */ + value: string; + /** + * Metadata is an optional string property defined by the W3C baggage specification. + * It currently has no special meaning defined by the specification. + */ + metadata?: BaggageEntryMetadata; +} +/** + * Serializable Metadata defined by the W3C baggage specification. + * It currently has no special meaning defined by the OpenTelemetry or W3C. + */ +export declare type BaggageEntryMetadata = { + toString(): string; +} & { + __TYPE__: typeof baggageEntryMetadataSymbol; +}; +/** + * Baggage represents collection of key-value pairs with optional metadata. + * Each key of Baggage is associated with exactly one value. + * Baggage may be used to annotate and enrich telemetry data. + */ +export interface Baggage { + /** + * Get an entry from Baggage if it exists + * + * @param key The key which identifies the BaggageEntry + */ + getEntry(key: string): BaggageEntry | undefined; + /** + * Get a list of all entries in the Baggage + */ + getAllEntries(): [string, BaggageEntry][]; + /** + * Returns a new baggage with the entries from the current bag and the specified entry + * + * @param key string which identifies the baggage entry + * @param entry BaggageEntry for the given key + */ + setEntry(key: string, entry: BaggageEntry): Baggage; + /** + * Returns a new baggage with the entries from the current bag except the removed entry + * + * @param key key identifying the entry to be removed + */ + removeEntry(key: string): Baggage; + /** + * Returns a new baggage with the entries from the current bag except the removed entries + * + * @param key keys identifying the entries to be removed + */ + removeEntries(...key: string[]): Baggage; + /** + * Returns a new baggage with no entries + */ + clear(): Baggage; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/types.js.map new file mode 100644 index 0000000..ae80c19 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/baggage/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\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\nexport interface BaggageEntry {\n /** `String` value of the `BaggageEntry`. */\n value: string;\n /**\n * Metadata is an optional string property defined by the W3C baggage specification.\n * It currently has no special meaning defined by the specification.\n */\n metadata?: BaggageEntryMetadata;\n}\n\n/**\n * Serializable Metadata defined by the W3C baggage specification.\n * It currently has no special meaning defined by the OpenTelemetry or W3C.\n */\nexport type BaggageEntryMetadata = { toString(): string } & {\n __TYPE__: typeof baggageEntryMetadataSymbol;\n};\n\n/**\n * Baggage represents collection of key-value pairs with optional metadata.\n * Each key of Baggage is associated with exactly one value.\n * Baggage may be used to annotate and enrich telemetry data.\n */\nexport interface Baggage {\n /**\n * Get an entry from Baggage if it exists\n *\n * @param key The key which identifies the BaggageEntry\n */\n getEntry(key: string): BaggageEntry | undefined;\n\n /**\n * Get a list of all entries in the Baggage\n */\n getAllEntries(): [string, BaggageEntry][];\n\n /**\n * Returns a new baggage with the entries from the current bag and the specified entry\n *\n * @param key string which identifies the baggage entry\n * @param entry BaggageEntry for the given key\n */\n setEntry(key: string, entry: BaggageEntry): Baggage;\n\n /**\n * Returns a new baggage with the entries from the current bag except the removed entry\n *\n * @param key key identifying the entry to be removed\n */\n removeEntry(key: string): Baggage;\n\n /**\n * Returns a new baggage with the entries from the current bag except the removed entries\n *\n * @param key keys identifying the entries to be removed\n */\n removeEntries(...key: string[]): Baggage;\n\n /**\n * Returns a new baggage with no entries\n */\n clear(): Baggage;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/utils.d.ts new file mode 100644 index 0000000..9955d9e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/utils.d.ts @@ -0,0 +1,15 @@ +import { Baggage, BaggageEntry, BaggageEntryMetadata } from './types'; +/** + * Create a new Baggage with optional entries + * + * @param entries An array of baggage entries the new baggage should contain + */ +export declare function createBaggage(entries?: Record): Baggage; +/** + * Create a serializable BaggageEntryMetadata object from a string. + * + * @param str string metadata. Format is currently not defined by the spec and has no special meaning. + * + */ +export declare function baggageEntryMetadataFromString(str: string): BaggageEntryMetadata; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/utils.js new file mode 100644 index 0000000..3cc2716 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/utils.js @@ -0,0 +1,47 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { DiagAPI } from '../api/diag'; +import { BaggageImpl } from './internal/baggage-impl'; +import { baggageEntryMetadataSymbol } from './internal/symbol'; +var diag = DiagAPI.instance(); +/** + * Create a new Baggage with optional entries + * + * @param entries An array of baggage entries the new baggage should contain + */ +export function createBaggage(entries) { + if (entries === void 0) { entries = {}; } + return new BaggageImpl(new Map(Object.entries(entries))); +} +/** + * Create a serializable BaggageEntryMetadata object from a string. + * + * @param str string metadata. Format is currently not defined by the spec and has no special meaning. + * + */ +export function baggageEntryMetadataFromString(str) { + if (typeof str !== 'string') { + diag.error("Cannot create baggage metadata from unknown type: " + typeof str); + str = ''; + } + return { + __TYPE__: baggageEntryMetadataSymbol, + toString: function () { + return str; + }, + }; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/utils.js.map new file mode 100644 index 0000000..f5a00f5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/baggage/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/baggage/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAG/D,IAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;AAEhC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA0C;IAA1C,wBAAA,EAAA,YAA0C;IAE1C,OAAO,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,GAAW;IAEX,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,IAAI,CAAC,KAAK,CACR,uDAAqD,OAAO,GAAK,CAClE,CAAC;QACF,GAAG,GAAG,EAAE,CAAC;KACV;IAED,OAAO;QACL,QAAQ,EAAE,0BAA0B;QACpC,QAAQ;YACN,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagAPI } from '../api/diag';\nimport { BaggageImpl } from './internal/baggage-impl';\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\nimport { Baggage, BaggageEntry, BaggageEntryMetadata } from './types';\n\nconst diag = DiagAPI.instance();\n\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nexport function createBaggage(\n entries: Record = {}\n): Baggage {\n return new BaggageImpl(new Map(Object.entries(entries)));\n}\n\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 */\nexport function baggageEntryMetadataFromString(\n str: string\n): BaggageEntryMetadata {\n if (typeof str !== 'string') {\n diag.error(\n `Cannot create baggage metadata from unknown type: ${typeof str}`\n );\n str = '';\n }\n\n return {\n __TYPE__: baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Attributes.d.ts new file mode 100644 index 0000000..19994fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Attributes.d.ts @@ -0,0 +1,15 @@ +/** + * Attributes is a map from string to attribute values. + * + * Note: only the own enumerable keys are counted as valid attribute keys. + */ +export interface Attributes { + [attributeKey: string]: AttributeValue | undefined; +} +/** + * Attribute values may be any non-nullish primitive value except an object. + * + * null or undefined attribute values are invalid and will result in undefined behavior. + */ +export declare type AttributeValue = string | number | boolean | Array | Array | Array; +//# sourceMappingURL=Attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Attributes.js new file mode 100644 index 0000000..dbb1e49 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Attributes.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Attributes.js.map new file mode 100644 index 0000000..2649c94 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Attributes.js","sourceRoot":"","sources":["../../../src/common/Attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Attributes is a map from string to attribute values.\n *\n * Note: only the own enumerable keys are counted as valid attribute keys.\n */\nexport interface Attributes {\n [attributeKey: string]: AttributeValue | undefined;\n}\n\n/**\n * Attribute values may be any non-nullish primitive value except an object.\n *\n * null or undefined attribute values are invalid and will result in undefined behavior.\n */\nexport type AttributeValue =\n | string\n | number\n | boolean\n | Array\n | Array\n | Array;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Exception.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Exception.d.ts new file mode 100644 index 0000000..e175a7f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Exception.d.ts @@ -0,0 +1,26 @@ +interface ExceptionWithCode { + code: string | number; + name?: string; + message?: string; + stack?: string; +} +interface ExceptionWithMessage { + code?: string | number; + message: string; + name?: string; + stack?: string; +} +interface ExceptionWithName { + code?: string | number; + message?: string; + name: string; + stack?: string; +} +/** + * Defines Exception. + * + * string or an object with one of (message or name or code) and optional stack + */ +export declare type Exception = ExceptionWithCode | ExceptionWithMessage | ExceptionWithName | string; +export {}; +//# sourceMappingURL=Exception.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Exception.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Exception.js new file mode 100644 index 0000000..6522a8e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Exception.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Exception.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Exception.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Exception.js.map new file mode 100644 index 0000000..989dd3d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Exception.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Exception.js","sourceRoot":"","sources":["../../../src/common/Exception.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\ninterface ExceptionWithCode {\n code: string | number;\n name?: string;\n message?: string;\n stack?: string;\n}\n\ninterface ExceptionWithMessage {\n code?: string | number;\n message: string;\n name?: string;\n stack?: string;\n}\n\ninterface ExceptionWithName {\n code?: string | number;\n message?: string;\n name: string;\n stack?: string;\n}\n\n/**\n * Defines Exception.\n *\n * string or an object with one of (message or name or code) and optional stack\n */\nexport type Exception =\n | ExceptionWithCode\n | ExceptionWithMessage\n | ExceptionWithName\n | string;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Time.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Time.d.ts new file mode 100644 index 0000000..cc3c502 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Time.d.ts @@ -0,0 +1,20 @@ +/** + * Defines High-Resolution Time. + * + * The first number, HrTime[0], is UNIX Epoch time in seconds since 00:00:00 UTC on 1 January 1970. + * The second number, HrTime[1], represents the partial second elapsed since Unix Epoch time represented by first number in nanoseconds. + * For example, 2021-01-01T12:30:10.150Z in UNIX Epoch time in milliseconds is represented as 1609504210150. + * The first number is calculated by converting and truncating the Epoch time in milliseconds to seconds: + * HrTime[0] = Math.trunc(1609504210150 / 1000) = 1609504210. + * The second number is calculated by converting the digits after the decimal point of the subtraction, (1609504210150 / 1000) - HrTime[0], to nanoseconds: + * HrTime[1] = Number((1609504210.150 - HrTime[0]).toFixed(9)) * 1e9 = 150000000. + * This is represented in HrTime format as [1609504210, 150000000]. + */ +export declare type HrTime = [number, number]; +/** + * Defines TimeInput. + * + * hrtime, epoch milliseconds, performance.now() or Date + */ +export declare type TimeInput = HrTime | number | Date; +//# sourceMappingURL=Time.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Time.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Time.js new file mode 100644 index 0000000..2abdf58 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Time.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=Time.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Time.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Time.js.map new file mode 100644 index 0000000..ae124f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/common/Time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Time.js","sourceRoot":"","sources":["../../../src/common/Time.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Defines High-Resolution Time.\n *\n * The first number, HrTime[0], is UNIX Epoch time in seconds since 00:00:00 UTC on 1 January 1970.\n * The second number, HrTime[1], represents the partial second elapsed since Unix Epoch time represented by first number in nanoseconds.\n * For example, 2021-01-01T12:30:10.150Z in UNIX Epoch time in milliseconds is represented as 1609504210150.\n * The first number is calculated by converting and truncating the Epoch time in milliseconds to seconds:\n * HrTime[0] = Math.trunc(1609504210150 / 1000) = 1609504210.\n * The second number is calculated by converting the digits after the decimal point of the subtraction, (1609504210150 / 1000) - HrTime[0], to nanoseconds:\n * HrTime[1] = Number((1609504210.150 - HrTime[0]).toFixed(9)) * 1e9 = 150000000.\n * This is represented in HrTime format as [1609504210, 150000000].\n */\nexport type HrTime = [number, number];\n\n/**\n * Defines TimeInput.\n *\n * hrtime, epoch milliseconds, performance.now() or Date\n */\nexport type TimeInput = HrTime | number | Date;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context-api.d.ts new file mode 100644 index 0000000..650f4ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context-api.d.ts @@ -0,0 +1,4 @@ +import { ContextAPI } from './api/context'; +/** Entrypoint for context API */ +export declare const context: ContextAPI; +//# sourceMappingURL=context-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context-api.js new file mode 100644 index 0000000..b89fb25 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context-api.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { ContextAPI } from './api/context'; +/** Entrypoint for context API */ +export var context = ContextAPI.getInstance(); +//# sourceMappingURL=context-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context-api.js.map new file mode 100644 index 0000000..a59bfc1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context-api.js","sourceRoot":"","sources":["../../src/context-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,iCAAiC;AACjC,MAAM,CAAC,IAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/** Entrypoint for context API */\nexport const context = ContextAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.d.ts new file mode 100644 index 0000000..48a1659 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.d.ts @@ -0,0 +1,9 @@ +import * as types from './types'; +export declare class NoopContextManager implements types.ContextManager { + active(): types.Context; + with ReturnType>(_context: types.Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + bind(_context: types.Context, target: T): T; + enable(): this; + disable(): this; +} +//# sourceMappingURL=NoopContextManager.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js new file mode 100644 index 0000000..9794eff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js @@ -0,0 +1,67 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +import { ROOT_CONTEXT } from './context'; +var NoopContextManager = /** @class */ (function () { + function NoopContextManager() { + } + NoopContextManager.prototype.active = function () { + return ROOT_CONTEXT; + }; + NoopContextManager.prototype.with = function (_context, fn, thisArg) { + var args = []; + for (var _i = 3; _i < arguments.length; _i++) { + args[_i - 3] = arguments[_i]; + } + return fn.call.apply(fn, __spreadArray([thisArg], __read(args), false)); + }; + NoopContextManager.prototype.bind = function (_context, target) { + return target; + }; + NoopContextManager.prototype.enable = function () { + return this; + }; + NoopContextManager.prototype.disable = function () { + return this; + }; + return NoopContextManager; +}()); +export { NoopContextManager }; +//# sourceMappingURL=NoopContextManager.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js.map new file mode 100644 index 0000000..045925e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopContextManager.js","sourceRoot":"","sources":["../../../src/context/NoopContextManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC;IAAA;IAyBA,CAAC;IAxBC,mCAAM,GAAN;QACE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,iCAAI,GAAJ,UACE,QAAuB,EACvB,EAAK,EACL,OAA8B;QAC9B,cAAU;aAAV,UAAU,EAAV,qBAAU,EAAV,IAAU;YAAV,6BAAU;;QAEV,OAAO,EAAE,CAAC,IAAI,OAAP,EAAE,iBAAM,OAAO,UAAK,IAAI,WAAE;IACnC,CAAC;IAED,iCAAI,GAAJ,UAAQ,QAAuB,EAAE,MAAS;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mCAAM,GAAN;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAO,GAAP;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IACH,yBAAC;AAAD,CAAC,AAzBD,IAyBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ROOT_CONTEXT } from './context';\nimport * as types from './types';\n\nexport class NoopContextManager implements types.ContextManager {\n active(): types.Context {\n return ROOT_CONTEXT;\n }\n\n with ReturnType>(\n _context: types.Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n return fn.call(thisArg, ...args);\n }\n\n bind(_context: types.Context, target: T): T {\n return target;\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/context.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/context.d.ts new file mode 100644 index 0000000..8be0259 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/context.d.ts @@ -0,0 +1,6 @@ +import { Context } from './types'; +/** Get a key to uniquely identify a context value */ +export declare function createContextKey(description: string): symbol; +/** The root context is used as the default parent context when there is no active context */ +export declare const ROOT_CONTEXT: Context; +//# sourceMappingURL=context.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/context.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/context.js new file mode 100644 index 0000000..f8909de --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/context.js @@ -0,0 +1,52 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** Get a key to uniquely identify a context value */ +export function createContextKey(description) { + // The specification states that for the same input, multiple calls should + // return different keys. Due to the nature of the JS dependency management + // system, this creates problems where multiple versions of some package + // could hold different keys for the same property. + // + // Therefore, we use Symbol.for which returns the same key for the same input. + return Symbol.for(description); +} +var BaseContext = /** @class */ (function () { + /** + * Construct a new context which inherits values from an optional parent context. + * + * @param parentContext a context from which to inherit values + */ + function BaseContext(parentContext) { + // for minification + var self = this; + self._currentContext = parentContext ? new Map(parentContext) : new Map(); + self.getValue = function (key) { return self._currentContext.get(key); }; + self.setValue = function (key, value) { + var context = new BaseContext(self._currentContext); + context._currentContext.set(key, value); + return context; + }; + self.deleteValue = function (key) { + var context = new BaseContext(self._currentContext); + context._currentContext.delete(key); + return context; + }; + } + return BaseContext; +}()); +/** The root context is used as the default parent context when there is no active context */ +export var ROOT_CONTEXT = new BaseContext(); +//# sourceMappingURL=context.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/context.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/context.js.map new file mode 100644 index 0000000..7a7affd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,qDAAqD;AACrD,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,0EAA0E;IAC1E,2EAA2E;IAC3E,wEAAwE;IACxE,mDAAmD;IACnD,EAAE;IACF,8EAA8E;IAC9E,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED;IAGE;;;;OAIG;IACH,qBAAY,aAAoC;QAC9C,mBAAmB;QACnB,IAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAE1E,IAAI,CAAC,QAAQ,GAAG,UAAC,GAAW,IAAK,OAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAA7B,CAA6B,CAAC;QAE/D,IAAI,CAAC,QAAQ,GAAG,UAAC,GAAW,EAAE,KAAc;YAC1C,IAAM,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtD,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,UAAC,GAAW;YAC7B,IAAM,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtD,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC;IAyBH,kBAAC;AAAD,CAAC,AApDD,IAoDC;AAED,6FAA6F;AAC7F,MAAM,CAAC,IAAM,YAAY,GAAY,IAAI,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from './types';\n\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description: string) {\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}\n\nclass BaseContext implements Context {\n private _currentContext!: Map;\n\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?: Map) {\n // for minification\n const self = this;\n\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n self.getValue = (key: symbol) => self._currentContext.get(key);\n\n self.setValue = (key: symbol, value: unknown): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n\n self.deleteValue = (key: symbol): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n public getValue!: (key: symbol) => unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n public setValue!: (key: symbol, value: unknown) => Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n public deleteValue!: (key: symbol) => Context;\n}\n\n/** The root context is used as the default parent context when there is no active context */\nexport const ROOT_CONTEXT: Context = new BaseContext();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/types.d.ts new file mode 100644 index 0000000..7e86632 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/types.d.ts @@ -0,0 +1,52 @@ +export interface Context { + /** + * Get a value from the context. + * + * @param key key which identifies a context value + */ + getValue(key: symbol): unknown; + /** + * Create a new context which inherits from this context and has + * the given key set to the given value. + * + * @param key context key for which to set the value + * @param value value to set for the given key + */ + setValue(key: symbol, value: unknown): Context; + /** + * Return a new context which inherits from this context but does + * not contain a value for the given key. + * + * @param key context key for which to clear a value + */ + deleteValue(key: symbol): Context; +} +export interface ContextManager { + /** + * Get the current active context + */ + active(): Context; + /** + * Run the fn callback with object set as the current active context + * @param context Any object to set as the current active context + * @param fn A callback to be immediately run within a specific context + * @param thisArg optional receiver to be used for calling fn + * @param args optional arguments forwarded to fn + */ + with ReturnType>(context: Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + /** + * Bind an object as the current context (or a specific one) + * @param [context] Optionally specify the context which you want to assign + * @param target Any object to which a context need to be set + */ + bind(context: Context, target: T): T; + /** + * Enable context management + */ + enable(): this; + /** + * Disable context management + */ + disable(): this; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/types.js.map new file mode 100644 index 0000000..d438aa3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/context/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/context/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface Context {\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n getValue(key: symbol): unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n setValue(key: symbol, value: unknown): Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n deleteValue(key: symbol): Context;\n}\n\nexport interface ContextManager {\n /**\n * Get the current active context\n */\n active(): Context;\n\n /**\n * Run the fn callback with object set as the current active context\n * @param context Any object to set as the current active context\n * @param fn A callback to be immediately run within a specific context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType;\n\n /**\n * Bind an object as the current context (or a specific one)\n * @param [context] Optionally specify the context which you want to assign\n * @param target Any object to which a context need to be set\n */\n bind(context: Context, target: T): T;\n\n /**\n * Enable context management\n */\n enable(): this;\n\n /**\n * Disable context management\n */\n disable(): this;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag-api.d.ts new file mode 100644 index 0000000..d82fdb1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag-api.d.ts @@ -0,0 +1,9 @@ +import { DiagAPI } from './api/diag'; +/** + * Entrypoint for Diag API. + * Defines Diagnostic handler used for internal diagnostic logging operations. + * The default provides a Noop DiagLogger implementation which may be changed via the + * diag.setLogger(logger: DiagLogger) function. + */ +export declare const diag: DiagAPI; +//# sourceMappingURL=diag-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag-api.js new file mode 100644 index 0000000..9f85c1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag-api.js @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { DiagAPI } from './api/diag'; +/** + * Entrypoint for Diag API. + * Defines Diagnostic handler used for internal diagnostic logging operations. + * The default provides a Noop DiagLogger implementation which may be changed via the + * diag.setLogger(logger: DiagLogger) function. + */ +export var diag = DiagAPI.instance(); +//# sourceMappingURL=diag-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag-api.js.map new file mode 100644 index 0000000..6b09a0c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"diag-api.js","sourceRoot":"","sources":["../../src/diag-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC;;;;;GAKG;AACH,MAAM,CAAC,IAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { DiagAPI } from './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 */\nexport const diag = DiagAPI.instance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.d.ts new file mode 100644 index 0000000..f060950 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.d.ts @@ -0,0 +1,20 @@ +import { ComponentLoggerOptions, DiagLogger } from './types'; +/** + * Component Logger which is meant to be used as part of any component which + * will add automatically additional namespace in front of the log message. + * It will then forward all message to global diag logger + * @example + * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' }); + * cLogger.debug('test'); + * // @opentelemetry/instrumentation-http test + */ +export declare class DiagComponentLogger implements DiagLogger { + private _namespace; + constructor(props: ComponentLoggerOptions); + debug(...args: any[]): void; + error(...args: any[]): void; + info(...args: any[]): void; + warn(...args: any[]): void; + verbose(...args: any[]): void; +} +//# sourceMappingURL=ComponentLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js new file mode 100644 index 0000000..44bc8be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js @@ -0,0 +1,102 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +import { getGlobal } from '../internal/global-utils'; +/** + * Component Logger which is meant to be used as part of any component which + * will add automatically additional namespace in front of the log message. + * It will then forward all message to global diag logger + * @example + * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' }); + * cLogger.debug('test'); + * // @opentelemetry/instrumentation-http test + */ +var DiagComponentLogger = /** @class */ (function () { + function DiagComponentLogger(props) { + this._namespace = props.namespace || 'DiagComponentLogger'; + } + DiagComponentLogger.prototype.debug = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return logProxy('debug', this._namespace, args); + }; + DiagComponentLogger.prototype.error = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return logProxy('error', this._namespace, args); + }; + DiagComponentLogger.prototype.info = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return logProxy('info', this._namespace, args); + }; + DiagComponentLogger.prototype.warn = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return logProxy('warn', this._namespace, args); + }; + DiagComponentLogger.prototype.verbose = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return logProxy('verbose', this._namespace, args); + }; + return DiagComponentLogger; +}()); +export { DiagComponentLogger }; +function logProxy(funcName, namespace, args) { + var logger = getGlobal('diag'); + // shortcut if logger not set + if (!logger) { + return; + } + args.unshift(namespace); + return logger[funcName].apply(logger, __spreadArray([], __read(args), false)); +} +//# sourceMappingURL=ComponentLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js.map new file mode 100644 index 0000000..8671613 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ComponentLogger.js","sourceRoot":"","sources":["../../../src/diag/ComponentLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD;;;;;;;;GAQG;AACH;IAGE,6BAAY,KAA6B;QACvC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC;IAC7D,CAAC;IAEM,mCAAK,GAAZ;QAAa,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QACzB,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAEM,mCAAK,GAAZ;QAAa,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QACzB,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAEM,kCAAI,GAAX;QAAY,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QACxB,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,kCAAI,GAAX;QAAY,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QACxB,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,qCAAO,GAAd;QAAe,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC3B,OAAO,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IACH,0BAAC;AAAD,CAAC,AA1BD,IA0BC;;AAED,SAAS,QAAQ,CACf,QAA0B,EAC1B,SAAiB,EACjB,IAAS;IAET,IAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,6BAA6B;IAC7B,IAAI,CAAC,MAAM,EAAE;QACX,OAAO;KACR;IAED,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAhB,MAAM,2BAAe,IAAoC,WAAE;AACpE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { getGlobal } from '../internal/global-utils';\nimport { ComponentLoggerOptions, DiagLogger, DiagLogFunction } from './types';\n\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 */\nexport class DiagComponentLogger implements DiagLogger {\n private _namespace: string;\n\n constructor(props: ComponentLoggerOptions) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n\n public debug(...args: any[]): void {\n return logProxy('debug', this._namespace, args);\n }\n\n public error(...args: any[]): void {\n return logProxy('error', this._namespace, args);\n }\n\n public info(...args: any[]): void {\n return logProxy('info', this._namespace, args);\n }\n\n public warn(...args: any[]): void {\n return logProxy('warn', this._namespace, args);\n }\n\n public verbose(...args: any[]): void {\n return logProxy('verbose', this._namespace, args);\n }\n}\n\nfunction logProxy(\n funcName: keyof DiagLogger,\n namespace: string,\n args: any\n): void {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n\n args.unshift(namespace);\n return logger[funcName](...(args as Parameters));\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.d.ts new file mode 100644 index 0000000..fa3db1e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.d.ts @@ -0,0 +1,38 @@ +import { DiagLogger, DiagLogFunction } from './types'; +/** + * A simple Immutable Console based diagnostic logger which will output any messages to the Console. + * If you want to limit the amount of logging to a specific level or lower use the + * {@link createLogLevelDiagLogger} + */ +export declare class DiagConsoleLogger implements DiagLogger { + constructor(); + /** Log an error scenario that was not expected and caused the requested operation to fail. */ + error: DiagLogFunction; + /** + * Log a warning scenario to inform the developer of an issues that should be investigated. + * The requested operation may or may not have succeeded or completed. + */ + warn: DiagLogFunction; + /** + * Log a general informational message, this should not affect functionality. + * This is also the default logging level so this should NOT be used for logging + * debugging level information. + */ + info: DiagLogFunction; + /** + * Log a general debug message that can be useful for identifying a failure. + * Information logged at this level may include diagnostic details that would + * help identify a failure scenario. Useful scenarios would be to log the execution + * order of async operations + */ + debug: DiagLogFunction; + /** + * Log a detailed (verbose) trace level logging that can be used to identify failures + * where debug level logging would be insufficient, this level of tracing can include + * input and output parameters and as such may include PII information passing through + * the API. As such it is recommended that this level of tracing should not be enabled + * in a production environment. + */ + verbose: DiagLogFunction; +} +//# sourceMappingURL=consoleLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.js new file mode 100644 index 0000000..5965b8a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.js @@ -0,0 +1,59 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var consoleMap = [ + { n: 'error', c: 'error' }, + { n: 'warn', c: 'warn' }, + { n: 'info', c: 'info' }, + { n: 'debug', c: 'debug' }, + { n: 'verbose', c: 'trace' }, +]; +/** + * A simple Immutable Console based diagnostic logger which will output any messages to the Console. + * If you want to limit the amount of logging to a specific level or lower use the + * {@link createLogLevelDiagLogger} + */ +var DiagConsoleLogger = /** @class */ (function () { + function DiagConsoleLogger() { + function _consoleFunc(funcName) { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + if (console) { + // Some environments only expose the console when the F12 developer console is open + // eslint-disable-next-line no-console + var theFunc = console[funcName]; + if (typeof theFunc !== 'function') { + // Not all environments support all functions + // eslint-disable-next-line no-console + theFunc = console.log; + } + // One last final check + if (typeof theFunc === 'function') { + return theFunc.apply(console, args); + } + } + }; + } + for (var i = 0; i < consoleMap.length; i++) { + this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c); + } + } + return DiagConsoleLogger; +}()); +export { DiagConsoleLogger }; +//# sourceMappingURL=consoleLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.js.map new file mode 100644 index 0000000..fbfd0cf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"consoleLogger.js","sourceRoot":"","sources":["../../../src/diag/consoleLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,IAAM,UAAU,GAAiD;IAC/D,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE;IAC1B,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE;IACxB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE;IACxB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE;IAC1B,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE;CAC7B,CAAC;AAEF;;;;GAIG;AACH;IACE;QACE,SAAS,YAAY,CAAC,QAAwB;YAC5C,OAAO;gBAAU,cAAO;qBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;oBAAP,yBAAO;;gBACtB,IAAI,OAAO,EAAE;oBACX,mFAAmF;oBACnF,sCAAsC;oBACtC,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAChC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;wBACjC,6CAA6C;wBAC7C,sCAAsC;wBACtC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;qBACvB;oBAED,uBAAuB;oBACvB,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;wBACjC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;qBACrC;iBACF;YACH,CAAC,CAAC;QACJ,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD;IACH,CAAC;IAkCH,wBAAC;AAAD,CAAC,AA3DD,IA2DC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagLogger, DiagLogFunction } from './types';\n\ntype ConsoleMapKeys = 'error' | 'warn' | 'info' | 'debug' | 'trace';\nconst consoleMap: { n: keyof DiagLogger; c: ConsoleMapKeys }[] = [\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\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 */\nexport class DiagConsoleLogger implements DiagLogger {\n constructor() {\n function _consoleFunc(funcName: ConsoleMapKeys): DiagLogFunction {\n return function (...args) {\n if (console) {\n // Some environments only expose the console when the F12 developer console is open\n // eslint-disable-next-line no-console\n let theFunc = console[funcName];\n if (typeof theFunc !== 'function') {\n // Not all environments support all functions\n // eslint-disable-next-line no-console\n theFunc = console.log;\n }\n\n // One last final check\n if (typeof theFunc === 'function') {\n return theFunc.apply(console, args);\n }\n }\n };\n }\n\n for (let i = 0; i < consoleMap.length; i++) {\n this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n }\n }\n\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n public error!: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n public warn!: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n public info!: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario. Useful scenarios would be to log the execution\n * order of async operations\n */\n public debug!: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n public verbose!: DiagLogFunction;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.d.ts new file mode 100644 index 0000000..890b9f1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.d.ts @@ -0,0 +1,3 @@ +import { DiagLogger, DiagLogLevel } from '../types'; +export declare function createLogLevelDiagLogger(maxLevel: DiagLogLevel, logger: DiagLogger): DiagLogger; +//# sourceMappingURL=logLevelLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js new file mode 100644 index 0000000..aedab38 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { DiagLogLevel } from '../types'; +export function createLogLevelDiagLogger(maxLevel, logger) { + if (maxLevel < DiagLogLevel.NONE) { + maxLevel = DiagLogLevel.NONE; + } + else if (maxLevel > DiagLogLevel.ALL) { + maxLevel = DiagLogLevel.ALL; + } + // In case the logger is null or undefined + logger = logger || {}; + function _filterFunc(funcName, theLevel) { + var theFunc = logger[funcName]; + if (typeof theFunc === 'function' && maxLevel >= theLevel) { + return theFunc.bind(logger); + } + return function () { }; + } + return { + error: _filterFunc('error', DiagLogLevel.ERROR), + warn: _filterFunc('warn', DiagLogLevel.WARN), + info: _filterFunc('info', DiagLogLevel.INFO), + debug: _filterFunc('debug', DiagLogLevel.DEBUG), + verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE), + }; +} +//# sourceMappingURL=logLevelLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js.map new file mode 100644 index 0000000..7f9fafd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logLevelLogger.js","sourceRoot":"","sources":["../../../../src/diag/internal/logLevelLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAA+B,YAAY,EAAE,MAAM,UAAU,CAAC;AAErE,MAAM,UAAU,wBAAwB,CACtC,QAAsB,EACtB,MAAkB;IAElB,IAAI,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE;QAChC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;KAC9B;SAAM,IAAI,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE;QACtC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC;KAC7B;IAED,0CAA0C;IAC1C,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IAEtB,SAAS,WAAW,CAClB,QAA0B,EAC1B,QAAsB;QAEtB,IAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjC,IAAI,OAAO,OAAO,KAAK,UAAU,IAAI,QAAQ,IAAI,QAAQ,EAAE;YACzD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;QACD,OAAO,cAAa,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;QAC/C,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;QAC5C,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;QAC5C,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;QAC/C,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC;KACtD,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagLogFunction, DiagLogger, DiagLogLevel } from '../types';\n\nexport function createLogLevelDiagLogger(\n maxLevel: DiagLogLevel,\n logger: DiagLogger\n): DiagLogger {\n if (maxLevel < DiagLogLevel.NONE) {\n maxLevel = DiagLogLevel.NONE;\n } else if (maxLevel > DiagLogLevel.ALL) {\n maxLevel = DiagLogLevel.ALL;\n }\n\n // In case the logger is null or undefined\n logger = logger || {};\n\n function _filterFunc(\n funcName: keyof DiagLogger,\n theLevel: DiagLogLevel\n ): DiagLogFunction {\n const theFunc = logger[funcName];\n\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () {};\n }\n\n return {\n error: _filterFunc('error', DiagLogLevel.ERROR),\n warn: _filterFunc('warn', DiagLogLevel.WARN),\n info: _filterFunc('info', DiagLogLevel.INFO),\n debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.d.ts new file mode 100644 index 0000000..ac71ee3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.d.ts @@ -0,0 +1,8 @@ +import { DiagLogger } from '../types'; +/** + * Returns a No-Op Diagnostic logger where all messages do nothing. + * @implements {@link DiagLogger} + * @returns {DiagLogger} + */ +export declare function createNoopDiagLogger(): DiagLogger; +//# sourceMappingURL=noopLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.js new file mode 100644 index 0000000..7d5ba63 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.js @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function noopLogFunction() { } +/** + * Returns a No-Op Diagnostic logger where all messages do nothing. + * @implements {@link DiagLogger} + * @returns {DiagLogger} + */ +export function createNoopDiagLogger() { + return { + verbose: noopLogFunction, + debug: noopLogFunction, + info: noopLogFunction, + warn: noopLogFunction, + error: noopLogFunction, + }; +} +//# sourceMappingURL=noopLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.js.map new file mode 100644 index 0000000..bf20aea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"noopLogger.js","sourceRoot":"","sources":["../../../../src/diag/internal/noopLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,SAAS,eAAe,KAAI,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,eAAe;KACvB,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagLogger } from '../types';\n\nfunction noopLogFunction() {}\n\n/**\n * Returns a No-Op Diagnostic logger where all messages do nothing.\n * @implements {@link DiagLogger}\n * @returns {DiagLogger}\n */\nexport function createNoopDiagLogger(): DiagLogger {\n return {\n verbose: noopLogFunction,\n debug: noopLogFunction,\n info: noopLogFunction,\n warn: noopLogFunction,\n error: noopLogFunction,\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/types.d.ts new file mode 100644 index 0000000..e992cc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/types.d.ts @@ -0,0 +1,100 @@ +export declare type DiagLogFunction = (message: string, ...args: unknown[]) => void; +/** + * Defines an internal diagnostic logger interface which is used to log internal diagnostic + * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function. + * API provided implementations include :- + * - a No-Op {@link createNoopDiagLogger} + * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger} + * - a general Console {@link DiagConsoleLogger} version. + */ +export interface DiagLogger { + /** Log an error scenario that was not expected and caused the requested operation to fail. */ + error: DiagLogFunction; + /** + * Log a warning scenario to inform the developer of an issues that should be investigated. + * The requested operation may or may not have succeeded or completed. + */ + warn: DiagLogFunction; + /** + * Log a general informational message, this should not affect functionality. + * This is also the default logging level so this should NOT be used for logging + * debugging level information. + */ + info: DiagLogFunction; + /** + * Log a general debug message that can be useful for identifying a failure. + * Information logged at this level may include diagnostic details that would + * help identify a failure scenario. + * For example: Logging the order of execution of async operations. + */ + debug: DiagLogFunction; + /** + * Log a detailed (verbose) trace level logging that can be used to identify failures + * where debug level logging would be insufficient, this level of tracing can include + * input and output parameters and as such may include PII information passing through + * the API. As such it is recommended that this level of tracing should not be enabled + * in a production environment. + */ + verbose: DiagLogFunction; +} +/** + * Defines the available internal logging levels for the diagnostic logger, the numeric values + * of the levels are defined to match the original values from the initial LogLevel to avoid + * compatibility/migration issues for any implementation that assume the numeric ordering. + */ +export declare enum DiagLogLevel { + /** Diagnostic Logging level setting to disable all logging (except and forced logs) */ + NONE = 0, + /** Identifies an error scenario */ + ERROR = 30, + /** Identifies a warning scenario */ + WARN = 50, + /** General informational log message */ + INFO = 60, + /** General debug log message */ + DEBUG = 70, + /** + * Detailed trace level logging should only be used for development, should only be set + * in a development environment. + */ + VERBOSE = 80, + /** Used to set the logging level to include all logging */ + ALL = 9999 +} +/** + * Defines options for ComponentLogger + */ +export interface ComponentLoggerOptions { + namespace: string; +} +export interface DiagLoggerOptions { + /** + * The {@link DiagLogLevel} used to filter logs sent to the logger. + * + * @defaultValue DiagLogLevel.INFO + */ + logLevel?: DiagLogLevel; + /** + * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered. + */ + suppressOverrideMessage?: boolean; +} +export interface DiagLoggerApi { + /** + * Set the global DiagLogger and DiagLogLevel. + * If a global diag logger is already set, this will override it. + * + * @param logger - The {@link DiagLogger} instance to set as the default logger. + * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set. + * @returns `true` if the logger was successfully registered, else `false` + */ + setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean; + /** + * + * @param logger - The {@link DiagLogger} instance to set as the default logger. + * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}. + * @returns `true` if the logger was successfully registered, else `false` + */ + setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/types.js new file mode 100644 index 0000000..306585e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/types.js @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Defines the available internal logging levels for the diagnostic logger, the numeric values + * of the levels are defined to match the original values from the initial LogLevel to avoid + * compatibility/migration issues for any implementation that assume the numeric ordering. + */ +export var DiagLogLevel; +(function (DiagLogLevel) { + /** Diagnostic Logging level setting to disable all logging (except and forced logs) */ + DiagLogLevel[DiagLogLevel["NONE"] = 0] = "NONE"; + /** Identifies an error scenario */ + DiagLogLevel[DiagLogLevel["ERROR"] = 30] = "ERROR"; + /** Identifies a warning scenario */ + DiagLogLevel[DiagLogLevel["WARN"] = 50] = "WARN"; + /** General informational log message */ + DiagLogLevel[DiagLogLevel["INFO"] = 60] = "INFO"; + /** General debug log message */ + DiagLogLevel[DiagLogLevel["DEBUG"] = 70] = "DEBUG"; + /** + * Detailed trace level logging should only be used for development, should only be set + * in a development environment. + */ + DiagLogLevel[DiagLogLevel["VERBOSE"] = 80] = "VERBOSE"; + /** Used to set the logging level to include all logging */ + DiagLogLevel[DiagLogLevel["ALL"] = 9999] = "ALL"; +})(DiagLogLevel || (DiagLogLevel = {})); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/types.js.map new file mode 100644 index 0000000..6578cce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/diag/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/diag/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+CH;;;;GAIG;AACH,MAAM,CAAN,IAAY,YAwBX;AAxBD,WAAY,YAAY;IACtB,uFAAuF;IACvF,+CAAQ,CAAA;IAER,mCAAmC;IACnC,kDAAU,CAAA;IAEV,oCAAoC;IACpC,gDAAS,CAAA;IAET,wCAAwC;IACxC,gDAAS,CAAA;IAET,gCAAgC;IAChC,kDAAU,CAAA;IAEV;;;OAGG;IACH,sDAAY,CAAA;IAEZ,2DAA2D;IAC3D,gDAAU,CAAA;AACZ,CAAC,EAxBW,YAAY,KAAZ,YAAY,QAwBvB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type DiagLogFunction = (message: string, ...args: unknown[]) => void;\n\n/**\n * Defines an internal diagnostic logger interface which is used to log internal diagnostic\n * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function.\n * API provided implementations include :-\n * - a No-Op {@link createNoopDiagLogger}\n * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger}\n * - a general Console {@link DiagConsoleLogger} version.\n */\nexport interface DiagLogger {\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n error: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n warn: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n info: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario.\n * For example: Logging the order of execution of async operations.\n */\n debug: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n verbose: DiagLogFunction;\n}\n\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 */\nexport enum DiagLogLevel {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n NONE = 0,\n\n /** Identifies an error scenario */\n ERROR = 30,\n\n /** Identifies a warning scenario */\n WARN = 50,\n\n /** General informational log message */\n INFO = 60,\n\n /** General debug log message */\n DEBUG = 70,\n\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n VERBOSE = 80,\n\n /** Used to set the logging level to include all logging */\n ALL = 9999,\n}\n\n/**\n * Defines options for ComponentLogger\n */\nexport interface ComponentLoggerOptions {\n namespace: string;\n}\n\nexport interface DiagLoggerOptions {\n /**\n * The {@link DiagLogLevel} used to filter logs sent to the logger.\n *\n * @defaultValue DiagLogLevel.INFO\n */\n logLevel?: DiagLogLevel;\n\n /**\n * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered.\n */\n suppressOverrideMessage?: boolean;\n}\n\nexport interface DiagLoggerApi {\n /**\n * Set the global DiagLogger and DiagLogLevel.\n * If a global diag logger is already set, this will override it.\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean;\n\n /**\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/index.d.ts new file mode 100644 index 0000000..bec3965 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/index.d.ts @@ -0,0 +1,3 @@ +export { wrapTracer, SugaredTracer } from './trace/SugaredTracer'; +export { SugaredSpanOptions } from './trace/SugaredOptions'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/index.js new file mode 100644 index 0000000..8400e49 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { wrapTracer, SugaredTracer } from './trace/SugaredTracer'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/index.js.map new file mode 100644 index 0000000..d1699d9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/experimental/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { wrapTracer, SugaredTracer } from './trace/SugaredTracer';\nexport { SugaredSpanOptions } from './trace/SugaredOptions';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.d.ts new file mode 100644 index 0000000..89040af --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.d.ts @@ -0,0 +1,13 @@ +import { Span, SpanOptions } from '../../'; +/** + * Options needed for span creation + */ +export interface SugaredSpanOptions extends SpanOptions { + /** + * function to overwrite default exception behavior to record the exception. No exceptions should be thrown in the function. + * @param e Error which triggered this exception + * @param span current span from context + */ + onException?: (e: Error, span: Span) => void; +} +//# sourceMappingURL=SugaredOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.js new file mode 100644 index 0000000..0c6a2bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=SugaredOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.js.map new file mode 100644 index 0000000..2a18a56 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SugaredOptions.js","sourceRoot":"","sources":["../../../../src/experimental/trace/SugaredOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Span, SpanOptions } from '../../';\n\n/**\n * Options needed for span creation\n */\nexport interface SugaredSpanOptions extends SpanOptions {\n /**\n * function to overwrite default exception behavior to record the exception. No exceptions should be thrown in the function.\n * @param e Error which triggered this exception\n * @param span current span from context\n */\n onException?: (e: Error, span: Span) => void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.d.ts new file mode 100644 index 0000000..1ba7da9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.d.ts @@ -0,0 +1,64 @@ +import { SugaredSpanOptions } from './SugaredOptions'; +import { Context, Span, Tracer } from '../../'; +/** + * return a new SugaredTracer created from the supplied one + * @param tracer + */ +export declare function wrapTracer(tracer: Tracer): SugaredTracer; +export declare class SugaredTracer implements Tracer { + private readonly _tracer; + constructor(tracer: Tracer); + startActiveSpan: Tracer['startActiveSpan']; + startSpan: Tracer['startSpan']; + /** + * Starts a new {@link Span} and calls the given function passing it the + * created span as first argument. + * Additionally, the new span gets set in context and this context is activated + * for the duration of the function call. + * The span will be closed after the function has executed. + * If an exception occurs, it is recorded, the status is set to ERROR and the exception is rethrown. + * + * @param name The name of the span + * @param [options] SugaredSpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns return value of fn + * @example + * const something = tracer.withActiveSpan('op', span => { + * // do some work + * }); + * @example + * const something = await tracer.withActiveSpan('op', span => { + * // do some async work + * }); + */ + withActiveSpan ReturnType>(name: string, fn: F): ReturnType; + withActiveSpan ReturnType>(name: string, options: SugaredSpanOptions, fn: F): ReturnType; + withActiveSpan ReturnType>(name: string, options: SugaredSpanOptions, context: Context, fn: F): ReturnType; + /** + * Starts a new {@link Span} and ends it after execution of fn without setting it on context. + * The span will be closed after the function has executed. + * If an exception occurs, it is recorded, the status is et to ERROR and rethrown. + * + * This method does NOT modify the current Context. + * + * @param name The name of the span + * @param [options] SugaredSpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns Span The newly created span + * @example + * const something = tracer.withSpan('op', span => { + * // do some work + * }); + * @example + * const something = await tracer.withSpan('op', span => { + * // do some async work + * }); + */ + withSpan ReturnType>(name: string, fn: F): ReturnType; + withSpan ReturnType>(name: string, options: SugaredSpanOptions, fn: F): ReturnType; + withSpan ReturnType>(name: string, options: SugaredSpanOptions, context: Context, fn: F): ReturnType; + withSpan ReturnType>(name: string, options: SugaredSpanOptions, context: Context, fn: F): ReturnType; +} +//# sourceMappingURL=SugaredTracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.js new file mode 100644 index 0000000..6fb98de --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.js @@ -0,0 +1,92 @@ +import { context, SpanStatusCode } from '../../'; +var defaultOnException = function (e, span) { + span.recordException(e); + span.setStatus({ + code: SpanStatusCode.ERROR, + }); +}; +/** + * return a new SugaredTracer created from the supplied one + * @param tracer + */ +export function wrapTracer(tracer) { + return new SugaredTracer(tracer); +} +var SugaredTracer = /** @class */ (function () { + function SugaredTracer(tracer) { + this._tracer = tracer; + this.startSpan = tracer.startSpan.bind(this._tracer); + this.startActiveSpan = tracer.startActiveSpan.bind(this._tracer); + } + SugaredTracer.prototype.withActiveSpan = function (name, arg2, arg3, arg4) { + var _a = massageParams(arg2, arg3, arg4), opts = _a.opts, ctx = _a.ctx, fn = _a.fn; + return this._tracer.startActiveSpan(name, opts, ctx, function (span) { + return handleFn(span, opts, fn); + }); + }; + SugaredTracer.prototype.withSpan = function (name, arg2, arg3, arg4) { + var _a = massageParams(arg2, arg3, arg4), opts = _a.opts, ctx = _a.ctx, fn = _a.fn; + var span = this._tracer.startSpan(name, opts, ctx); + return handleFn(span, opts, fn); + }; + return SugaredTracer; +}()); +export { SugaredTracer }; +/** + * Massages parameters of withSpan and withActiveSpan to allow signature overwrites + * @param arg + * @param arg2 + * @param arg3 + */ +function massageParams(arg, arg2, arg3) { + var opts; + var ctx; + var fn; + if (!arg2 && !arg3) { + fn = arg; + } + else if (!arg3) { + opts = arg; + fn = arg2; + } + else { + opts = arg; + ctx = arg2; + fn = arg3; + } + opts = opts !== null && opts !== void 0 ? opts : {}; + ctx = ctx !== null && ctx !== void 0 ? ctx : context.active(); + return { opts: opts, ctx: ctx, fn: fn }; +} +/** + * Executes fn, returns results and runs onException in the case of exception to allow overwriting of error handling + * @param span + * @param opts + * @param fn + */ +function handleFn(span, opts, fn) { + var _a; + var onException = (_a = opts.onException) !== null && _a !== void 0 ? _a : defaultOnException; + var errorHandler = function (e) { + onException(e, span); + span.end(); + throw e; + }; + try { + var ret = fn(span); + // if fn is an async function, attach a recordException and spanEnd callback to the promise + if (typeof (ret === null || ret === void 0 ? void 0 : ret.then) === 'function') { + return ret.then(function (val) { + span.end(); + return val; + }, errorHandler); + } + span.end(); + return ret; + } + catch (e) { + // add throw to signal the compiler that this will throw in the inner scope + throw errorHandler(e); + } +} +//# sourceMappingURL=SugaredTracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.js.map new file mode 100644 index 0000000..d9bac44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SugaredTracer.js","sourceRoot":"","sources":["../../../../src/experimental/trace/SugaredTracer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SugaredSpanOptions } from './SugaredOptions';\nimport { context, Context, Span, SpanStatusCode, Tracer } from '../../';\n\nconst defaultOnException = (e: Error, span: Span) => {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n });\n};\n\n/**\n * return a new SugaredTracer created from the supplied one\n * @param tracer\n */\nexport function wrapTracer(tracer: Tracer): SugaredTracer {\n return new SugaredTracer(tracer);\n}\n\nexport class SugaredTracer implements Tracer {\n private readonly _tracer: Tracer;\n\n constructor(tracer: Tracer) {\n this._tracer = tracer;\n this.startSpan = tracer.startSpan.bind(this._tracer);\n this.startActiveSpan = tracer.startActiveSpan.bind(this._tracer);\n }\n\n startActiveSpan: Tracer['startActiveSpan'];\n startSpan: Tracer['startSpan'];\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally, the new span gets set in context and this context is activated\n * for the duration of the function call.\n * The span will be closed after the function has executed.\n * If an exception occurs, it is recorded, the status is set to ERROR and the exception is rethrown.\n *\n * @param name The name of the span\n * @param [options] SugaredSpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.withActiveSpan('op', span => {\n * // do some work\n * });\n * @example\n * const something = await tracer.withActiveSpan('op', span => {\n * // do some async work\n * });\n */\n withActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n withActiveSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n fn: F\n ): ReturnType;\n withActiveSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n withActiveSpan ReturnType>(\n name: string,\n arg2: F | SugaredSpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType {\n const { opts, ctx, fn } = massageParams(arg2, arg3, arg4);\n\n return this._tracer.startActiveSpan(name, opts, ctx, (span: Span) =>\n handleFn(span, opts, fn)\n ) as ReturnType;\n }\n\n /**\n * Starts a new {@link Span} and ends it after execution of fn without setting it on context.\n * The span will be closed after the function has executed.\n * If an exception occurs, it is recorded, the status is et to ERROR and rethrown.\n *\n * This method does NOT modify the current Context.\n *\n * @param name The name of the span\n * @param [options] SugaredSpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns Span The newly created span\n * @example\n * const something = tracer.withSpan('op', span => {\n * // do some work\n * });\n * @example\n * const something = await tracer.withSpan('op', span => {\n * // do some async work\n * });\n */\n withSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n arg2: SugaredSpanOptions | F,\n arg3?: Context | F,\n arg4?: F\n ): ReturnType {\n const { opts, ctx, fn } = massageParams(arg2, arg3, arg4);\n\n const span = this._tracer.startSpan(name, opts, ctx);\n return handleFn(span, opts, fn) as ReturnType;\n }\n}\n\n/**\n * Massages parameters of withSpan and withActiveSpan to allow signature overwrites\n * @param arg\n * @param arg2\n * @param arg3\n */\nfunction massageParams ReturnType>(\n arg: F | SugaredSpanOptions,\n arg2?: F | Context,\n arg3?: F\n) {\n let opts: SugaredSpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (!arg2 && !arg3) {\n fn = arg as F;\n } else if (!arg3) {\n opts = arg as SugaredSpanOptions;\n fn = arg2 as F;\n } else {\n opts = arg as SugaredSpanOptions;\n ctx = arg2 as Context;\n fn = arg3 as F;\n }\n opts = opts ?? {};\n ctx = ctx ?? context.active();\n\n return { opts, ctx, fn };\n}\n\n/**\n * Executes fn, returns results and runs onException in the case of exception to allow overwriting of error handling\n * @param span\n * @param opts\n * @param fn\n */\nfunction handleFn ReturnType>(\n span: Span,\n opts: SugaredSpanOptions,\n fn: F\n): ReturnType {\n const onException = opts.onException ?? defaultOnException;\n const errorHandler = (e: Error) => {\n onException(e, span);\n span.end();\n throw e;\n };\n\n try {\n const ret = fn(span) as Promise>;\n // if fn is an async function, attach a recordException and spanEnd callback to the promise\n if (typeof ret?.then === 'function') {\n return ret.then(val => {\n span.end();\n return val;\n }, errorHandler) as ReturnType;\n }\n span.end();\n return ret as ReturnType;\n } catch (e) {\n // add throw to signal the compiler that this will throw in the inner scope\n throw errorHandler(e);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/index.d.ts new file mode 100644 index 0000000..eea88f2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/index.d.ts @@ -0,0 +1,54 @@ +export { BaggageEntry, BaggageEntryMetadata, Baggage } from './baggage/types'; +export { baggageEntryMetadataFromString } from './baggage/utils'; +export { Exception } from './common/Exception'; +export { HrTime, TimeInput } from './common/Time'; +export { Attributes, AttributeValue } from './common/Attributes'; +export { createContextKey, ROOT_CONTEXT } from './context/context'; +export { Context, ContextManager } from './context/types'; +export type { ContextAPI } from './api/context'; +export { DiagConsoleLogger } from './diag/consoleLogger'; +export { DiagLogFunction, DiagLogger, DiagLogLevel, ComponentLoggerOptions, DiagLoggerOptions, } from './diag/types'; +export type { DiagAPI } from './api/diag'; +export { createNoopMeter } from './metrics/NoopMeter'; +export { MeterOptions, Meter } from './metrics/Meter'; +export { MeterProvider } from './metrics/MeterProvider'; +export { ValueType, Counter, Gauge, Histogram, MetricOptions, Observable, ObservableCounter, ObservableGauge, ObservableUpDownCounter, UpDownCounter, BatchObservableCallback, MetricAdvice, MetricAttributes, MetricAttributeValue, ObservableCallback, } from './metrics/Metric'; +export { BatchObservableResult, ObservableResult, } from './metrics/ObservableResult'; +export type { MetricsAPI } from './api/metrics'; +export { TextMapPropagator, TextMapSetter, TextMapGetter, defaultTextMapGetter, defaultTextMapSetter, } from './propagation/TextMapPropagator'; +export type { PropagationAPI } from './api/propagation'; +export { SpanAttributes, SpanAttributeValue } from './trace/attributes'; +export { Link } from './trace/link'; +export { ProxyTracer, TracerDelegator } from './trace/ProxyTracer'; +export { ProxyTracerProvider } from './trace/ProxyTracerProvider'; +export { Sampler } from './trace/Sampler'; +export { SamplingDecision, SamplingResult } from './trace/SamplingResult'; +export { SpanContext } from './trace/span_context'; +export { SpanKind } from './trace/span_kind'; +export { Span } from './trace/span'; +export { SpanOptions } from './trace/SpanOptions'; +export { SpanStatus, SpanStatusCode } from './trace/status'; +export { TraceFlags } from './trace/trace_flags'; +export { TraceState } from './trace/trace_state'; +export { createTraceState } from './trace/internal/utils'; +export { TracerProvider } from './trace/tracer_provider'; +export { Tracer } from './trace/tracer'; +export { TracerOptions } from './trace/tracer_options'; +export { isSpanContextValid, isValidTraceId, isValidSpanId, } from './trace/spancontext-utils'; +export { INVALID_SPANID, INVALID_TRACEID, INVALID_SPAN_CONTEXT, } from './trace/invalid-span-constants'; +export type { TraceAPI } from './api/trace'; +import { context } from './context-api'; +import { diag } from './diag-api'; +import { metrics } from './metrics-api'; +import { propagation } from './propagation-api'; +import { trace } from './trace-api'; +export { context, diag, metrics, propagation, trace }; +declare const _default: { + context: import("./api/context").ContextAPI; + diag: import("./api/diag").DiagAPI; + metrics: import("./api/metrics").MetricsAPI; + propagation: import("./api/propagation").PropagationAPI; + trace: import("./api/trace").TraceAPI; +}; +export default _default; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/index.js new file mode 100644 index 0000000..70cd870 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/index.js @@ -0,0 +1,53 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { baggageEntryMetadataFromString } from './baggage/utils'; +// Context APIs +export { createContextKey, ROOT_CONTEXT } from './context/context'; +// Diag APIs +export { DiagConsoleLogger } from './diag/consoleLogger'; +export { DiagLogLevel, } from './diag/types'; +// Metrics APIs +export { createNoopMeter } from './metrics/NoopMeter'; +export { ValueType, } from './metrics/Metric'; +// Propagation APIs +export { defaultTextMapGetter, defaultTextMapSetter, } from './propagation/TextMapPropagator'; +export { ProxyTracer } from './trace/ProxyTracer'; +export { ProxyTracerProvider } from './trace/ProxyTracerProvider'; +export { SamplingDecision } from './trace/SamplingResult'; +export { SpanKind } from './trace/span_kind'; +export { SpanStatusCode } from './trace/status'; +export { TraceFlags } from './trace/trace_flags'; +export { createTraceState } from './trace/internal/utils'; +export { isSpanContextValid, isValidTraceId, isValidSpanId, } from './trace/spancontext-utils'; +export { INVALID_SPANID, INVALID_TRACEID, INVALID_SPAN_CONTEXT, } from './trace/invalid-span-constants'; +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { context } from './context-api'; +import { diag } from './diag-api'; +import { metrics } from './metrics-api'; +import { propagation } from './propagation-api'; +import { trace } from './trace-api'; +// Named export. +export { context, diag, metrics, propagation, trace }; +// Default export. +export default { + context: context, + diag: diag, + metrics: metrics, + propagation: propagation, + trace: trace, +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/index.js.map new file mode 100644 index 0000000..b4fec2f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAKjE,eAAe;AACf,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAInE,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAGL,YAAY,GAGb,MAAM,cAAc,CAAC;AAGtB,eAAe;AACf,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EACL,SAAS,GAeV,MAAM,kBAAkB,CAAC;AAO1B,mBAAmB;AACnB,OAAO,EAIL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,WAAW,EAAmB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAc,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,EACd,eAAe,EACf,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AAGxC,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,gBAAgB;AAChB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACtD,kBAAkB;AAClB,eAAe;IACb,OAAO,SAAA;IACP,IAAI,MAAA;IACJ,OAAO,SAAA;IACP,WAAW,aAAA;IACX,KAAK,OAAA;CACN,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BaggageEntry, BaggageEntryMetadata, Baggage } from './baggage/types';\nexport { baggageEntryMetadataFromString } from './baggage/utils';\nexport { Exception } from './common/Exception';\nexport { HrTime, TimeInput } from './common/Time';\nexport { Attributes, AttributeValue } from './common/Attributes';\n\n// Context APIs\nexport { createContextKey, ROOT_CONTEXT } from './context/context';\nexport { Context, ContextManager } from './context/types';\nexport type { ContextAPI } from './api/context';\n\n// Diag APIs\nexport { DiagConsoleLogger } from './diag/consoleLogger';\nexport {\n DiagLogFunction,\n DiagLogger,\n DiagLogLevel,\n ComponentLoggerOptions,\n DiagLoggerOptions,\n} from './diag/types';\nexport type { DiagAPI } from './api/diag';\n\n// Metrics APIs\nexport { createNoopMeter } from './metrics/NoopMeter';\nexport { MeterOptions, Meter } from './metrics/Meter';\nexport { MeterProvider } from './metrics/MeterProvider';\nexport {\n ValueType,\n Counter,\n Gauge,\n Histogram,\n MetricOptions,\n Observable,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n BatchObservableCallback,\n MetricAdvice,\n MetricAttributes,\n MetricAttributeValue,\n ObservableCallback,\n} from './metrics/Metric';\nexport {\n BatchObservableResult,\n ObservableResult,\n} from './metrics/ObservableResult';\nexport type { MetricsAPI } from './api/metrics';\n\n// Propagation APIs\nexport {\n TextMapPropagator,\n TextMapSetter,\n TextMapGetter,\n defaultTextMapGetter,\n defaultTextMapSetter,\n} from './propagation/TextMapPropagator';\nexport type { PropagationAPI } from './api/propagation';\n\n// Trace APIs\nexport { SpanAttributes, SpanAttributeValue } from './trace/attributes';\nexport { Link } from './trace/link';\nexport { ProxyTracer, TracerDelegator } from './trace/ProxyTracer';\nexport { ProxyTracerProvider } from './trace/ProxyTracerProvider';\nexport { Sampler } from './trace/Sampler';\nexport { SamplingDecision, SamplingResult } from './trace/SamplingResult';\nexport { SpanContext } from './trace/span_context';\nexport { SpanKind } from './trace/span_kind';\nexport { Span } from './trace/span';\nexport { SpanOptions } from './trace/SpanOptions';\nexport { SpanStatus, SpanStatusCode } from './trace/status';\nexport { TraceFlags } from './trace/trace_flags';\nexport { TraceState } from './trace/trace_state';\nexport { createTraceState } from './trace/internal/utils';\nexport { TracerProvider } from './trace/tracer_provider';\nexport { Tracer } from './trace/tracer';\nexport { TracerOptions } from './trace/tracer_options';\nexport {\n isSpanContextValid,\n isValidTraceId,\n isValidSpanId,\n} from './trace/spancontext-utils';\nexport {\n INVALID_SPANID,\n INVALID_TRACEID,\n INVALID_SPAN_CONTEXT,\n} from './trace/invalid-span-constants';\nexport type { TraceAPI } from './api/trace';\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { context } from './context-api';\nimport { diag } from './diag-api';\nimport { metrics } from './metrics-api';\nimport { propagation } from './propagation-api';\nimport { trace } from './trace-api';\n\n// Named export.\nexport { context, diag, metrics, propagation, trace };\n// Default export.\nexport default {\n context,\n diag,\n metrics,\n propagation,\n trace,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/global-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/global-utils.d.ts new file mode 100644 index 0000000..320db97 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/global-utils.d.ts @@ -0,0 +1,18 @@ +import { MeterProvider } from '../metrics/MeterProvider'; +import { ContextManager } from '../context/types'; +import { DiagLogger } from '../diag/types'; +import { TextMapPropagator } from '../propagation/TextMapPropagator'; +import type { TracerProvider } from '../trace/tracer_provider'; +export declare function registerGlobal(type: Type, instance: OTelGlobalAPI[Type], diag: DiagLogger, allowOverride?: boolean): boolean; +export declare function getGlobal(type: Type): OTelGlobalAPI[Type] | undefined; +export declare function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger): void; +declare type OTelGlobalAPI = { + version: string; + diag?: DiagLogger; + trace?: TracerProvider; + context?: ContextManager; + metrics?: MeterProvider; + propagation?: TextMapPropagator; +}; +export {}; +//# sourceMappingURL=global-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js new file mode 100644 index 0000000..88e82a1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js @@ -0,0 +1,59 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { _globalThis } from '../platform'; +import { VERSION } from '../version'; +import { isCompatible } from './semver'; +var major = VERSION.split('.')[0]; +var GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for("opentelemetry.js.api." + major); +var _global = _globalThis; +export function registerGlobal(type, instance, diag, allowOverride) { + var _a; + if (allowOverride === void 0) { allowOverride = false; } + var api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : { + version: VERSION, + }); + if (!allowOverride && api[type]) { + // already registered an API of this type + var err = new Error("@opentelemetry/api: Attempted duplicate registration of API: " + type); + diag.error(err.stack || err.message); + return false; + } + if (api.version !== VERSION) { + // All registered APIs must be of the same version exactly + var err = new Error("@opentelemetry/api: Registration of version v" + api.version + " for " + type + " does not match previously registered API v" + VERSION); + diag.error(err.stack || err.message); + return false; + } + api[type] = instance; + diag.debug("@opentelemetry/api: Registered a global for " + type + " v" + VERSION + "."); + return true; +} +export function getGlobal(type) { + var _a, _b; + var globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version; + if (!globalVersion || !isCompatible(globalVersion)) { + return; + } + return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type]; +} +export function unregisterGlobal(type, diag) { + diag.debug("@opentelemetry/api: Unregistering a global for " + type + " v" + VERSION + "."); + var api = _global[GLOBAL_OPENTELEMETRY_API_KEY]; + if (api) { + delete api[type]; + } +} +//# sourceMappingURL=global-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js.map new file mode 100644 index 0000000..41420b9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-utils.js","sourceRoot":"","sources":["../../../src/internal/global-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,IAAM,4BAA4B,GAAG,MAAM,CAAC,GAAG,CAC7C,0BAAwB,KAAO,CAChC,CAAC;AAEF,IAAM,OAAO,GAAG,WAAyB,CAAC;AAE1C,MAAM,UAAU,cAAc,CAC5B,IAAU,EACV,QAA6B,EAC7B,IAAgB,EAChB,aAAqB;;IAArB,8BAAA,EAAA,qBAAqB;IAErB,IAAM,GAAG,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAA,OAAO,CAC1D,4BAA4B,CAC7B,mCAAI;QACH,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE;QAC/B,yCAAyC;QACzC,IAAM,GAAG,GAAG,IAAI,KAAK,CACnB,kEAAgE,IAAM,CACvE,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;KACd;IAED,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE;QAC3B,0DAA0D;QAC1D,IAAM,GAAG,GAAG,IAAI,KAAK,CACnB,kDAAgD,GAAG,CAAC,OAAO,aAAQ,IAAI,mDAA8C,OAAS,CAC/H,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;KACd;IAED,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;IACrB,IAAI,CAAC,KAAK,CACR,iDAA+C,IAAI,UAAK,OAAO,MAAG,CACnE,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,IAAU;;IAEV,IAAM,aAAa,GAAG,MAAA,OAAO,CAAC,4BAA4B,CAAC,0CAAE,OAAO,CAAC;IACrE,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;QAClD,OAAO;KACR;IACD,OAAO,MAAA,OAAO,CAAC,4BAA4B,CAAC,0CAAG,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAyB,EAAE,IAAgB;IAC1E,IAAI,CAAC,KAAK,CACR,oDAAkD,IAAI,UAAK,OAAO,MAAG,CACtE,CAAC;IACF,IAAM,GAAG,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAElD,IAAI,GAAG,EAAE;QACP,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;KAClB;AACH,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { ContextManager } from '../context/types';\nimport { DiagLogger } from '../diag/types';\nimport { _globalThis } from '../platform';\nimport { TextMapPropagator } from '../propagation/TextMapPropagator';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\n\nconst major = VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\n `opentelemetry.js.api.${major}`\n);\n\nconst _global = _globalThis as OTelGlobal;\n\nexport function registerGlobal(\n type: Type,\n instance: OTelGlobalAPI[Type],\n diag: DiagLogger,\n allowOverride = false\n): boolean {\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = _global[\n GLOBAL_OPENTELEMETRY_API_KEY\n ] ?? {\n version: VERSION,\n });\n\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(\n `@opentelemetry/api: Attempted duplicate registration of API: ${type}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n if (api.version !== VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(\n `@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${VERSION}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n api[type] = instance;\n diag.debug(\n `@opentelemetry/api: Registered a global for ${type} v${VERSION}.`\n );\n\n return true;\n}\n\nexport function getGlobal(\n type: Type\n): OTelGlobalAPI[Type] | undefined {\n const globalVersion = _global[GLOBAL_OPENTELEMETRY_API_KEY]?.version;\n if (!globalVersion || !isCompatible(globalVersion)) {\n return;\n }\n return _global[GLOBAL_OPENTELEMETRY_API_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger) {\n diag.debug(\n `@opentelemetry/api: Unregistering a global for ${type} v${VERSION}.`\n );\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n\n if (api) {\n delete api[type];\n }\n}\n\ntype OTelGlobal = {\n [GLOBAL_OPENTELEMETRY_API_KEY]?: OTelGlobalAPI;\n};\n\ntype OTelGlobalAPI = {\n version: string;\n\n diag?: DiagLogger;\n trace?: TracerProvider;\n context?: ContextManager;\n metrics?: MeterProvider;\n propagation?: TextMapPropagator;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/semver.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/semver.d.ts new file mode 100644 index 0000000..d9f4259 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/semver.d.ts @@ -0,0 +1,34 @@ +/** + * Create a function to test an API version to see if it is compatible with the provided ownVersion. + * + * The returned function has the following semantics: + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param ownVersion version which should be checked against + */ +export declare function _makeCompatibilityCheck(ownVersion: string): (globalVersion: string) => boolean; +/** + * Test an API version to see if it is compatible with this API. + * + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param version version of the API requesting an instance of the global API + */ +export declare const isCompatible: (globalVersion: string) => boolean; +//# sourceMappingURL=semver.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/semver.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/semver.js new file mode 100644 index 0000000..2a788a0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/semver.js @@ -0,0 +1,118 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { VERSION } from '../version'; +var re = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/; +/** + * Create a function to test an API version to see if it is compatible with the provided ownVersion. + * + * The returned function has the following semantics: + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param ownVersion version which should be checked against + */ +export function _makeCompatibilityCheck(ownVersion) { + var acceptedVersions = new Set([ownVersion]); + var rejectedVersions = new Set(); + var myVersionMatch = ownVersion.match(re); + if (!myVersionMatch) { + // we cannot guarantee compatibility so we always return noop + return function () { return false; }; + } + var ownVersionParsed = { + major: +myVersionMatch[1], + minor: +myVersionMatch[2], + patch: +myVersionMatch[3], + prerelease: myVersionMatch[4], + }; + // if ownVersion has a prerelease tag, versions must match exactly + if (ownVersionParsed.prerelease != null) { + return function isExactmatch(globalVersion) { + return globalVersion === ownVersion; + }; + } + function _reject(v) { + rejectedVersions.add(v); + return false; + } + function _accept(v) { + acceptedVersions.add(v); + return true; + } + return function isCompatible(globalVersion) { + if (acceptedVersions.has(globalVersion)) { + return true; + } + if (rejectedVersions.has(globalVersion)) { + return false; + } + var globalVersionMatch = globalVersion.match(re); + if (!globalVersionMatch) { + // cannot parse other version + // we cannot guarantee compatibility so we always noop + return _reject(globalVersion); + } + var globalVersionParsed = { + major: +globalVersionMatch[1], + minor: +globalVersionMatch[2], + patch: +globalVersionMatch[3], + prerelease: globalVersionMatch[4], + }; + // if globalVersion has a prerelease tag, versions must match exactly + if (globalVersionParsed.prerelease != null) { + return _reject(globalVersion); + } + // major versions must match + if (ownVersionParsed.major !== globalVersionParsed.major) { + return _reject(globalVersion); + } + if (ownVersionParsed.major === 0) { + if (ownVersionParsed.minor === globalVersionParsed.minor && + ownVersionParsed.patch <= globalVersionParsed.patch) { + return _accept(globalVersion); + } + return _reject(globalVersion); + } + if (ownVersionParsed.minor <= globalVersionParsed.minor) { + return _accept(globalVersion); + } + return _reject(globalVersion); + }; +} +/** + * Test an API version to see if it is compatible with this API. + * + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param version version of the API requesting an instance of the global API + */ +export var isCompatible = _makeCompatibilityCheck(VERSION); +//# sourceMappingURL=semver.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/semver.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/semver.js.map new file mode 100644 index 0000000..75579a4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/internal/semver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../../src/internal/semver.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { VERSION } from '../version';\n\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n\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 */\nexport function _makeCompatibilityCheck(\n ownVersion: string\n): (globalVersion: string) => boolean {\n const acceptedVersions = new Set([ownVersion]);\n const rejectedVersions = new Set();\n\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion: string): boolean {\n return globalVersion === ownVersion;\n };\n }\n\n function _reject(v: string) {\n rejectedVersions.add(v);\n return false;\n }\n\n function _accept(v: string) {\n acceptedVersions.add(v);\n return true;\n }\n\n return function isCompatible(globalVersion: string): boolean {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\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\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.major === 0) {\n if (\n ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch\n ) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n };\n}\n\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 */\nexport const isCompatible = _makeCompatibilityCheck(VERSION);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics-api.d.ts new file mode 100644 index 0000000..26d539c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics-api.d.ts @@ -0,0 +1,4 @@ +import { MetricsAPI } from './api/metrics'; +/** Entrypoint for metrics API */ +export declare const metrics: MetricsAPI; +//# sourceMappingURL=metrics-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics-api.js new file mode 100644 index 0000000..145087f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics-api.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { MetricsAPI } from './api/metrics'; +/** Entrypoint for metrics API */ +export var metrics = MetricsAPI.getInstance(); +//# sourceMappingURL=metrics-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics-api.js.map new file mode 100644 index 0000000..69dd3e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metrics-api.js","sourceRoot":"","sources":["../../src/metrics-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,iCAAiC;AACjC,MAAM,CAAC,IAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { MetricsAPI } from './api/metrics';\n/** Entrypoint for metrics API */\nexport const metrics = MetricsAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Meter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Meter.d.ts new file mode 100644 index 0000000..5e3926b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Meter.d.ts @@ -0,0 +1,110 @@ +import { BatchObservableCallback, Counter, Gauge, Histogram, MetricAttributes, MetricOptions, Observable, ObservableCounter, ObservableGauge, ObservableUpDownCounter, UpDownCounter } from './Metric'; +/** + * An interface describes additional metadata of a meter. + */ +export interface MeterOptions { + /** + * The schemaUrl of the meter or instrumentation library + */ + schemaUrl?: string; +} +/** + * An interface to allow the recording metrics. + * + * {@link Metric}s are used for recording pre-defined aggregation (`Counter`), + * or raw values (`Histogram`) in which the aggregation and attributes + * for the exported metric are deferred. + */ +export interface Meter { + /** + * Creates and returns a new `Gauge`. + * @param name the name of the metric. + * @param [options] the metric options. + */ + createGauge(name: string, options?: MetricOptions): Gauge; + /** + * Creates and returns a new `Histogram`. + * @param name the name of the metric. + * @param [options] the metric options. + */ + createHistogram(name: string, options?: MetricOptions): Histogram; + /** + * Creates a new `Counter` metric. Generally, this kind of metric when the + * value is a quantity, the sum is of primary interest, and the event count + * and value distribution are not of primary interest. + * @param name the name of the metric. + * @param [options] the metric options. + */ + createCounter(name: string, options?: MetricOptions): Counter; + /** + * Creates a new `UpDownCounter` metric. UpDownCounter is a synchronous + * instrument and very similar to Counter except that Add(increment) + * supports negative increments. It is generally useful for capturing changes + * in an amount of resources used, or any quantity that rises and falls + * during a request. + * Example uses for UpDownCounter: + *
    + *
  1. count the number of active requests.
  2. + *
  3. count memory in use by instrumenting new and delete.
  4. + *
  5. count queue size by instrumenting enqueue and dequeue.
  6. + *
  7. count semaphore up and down operations.
  8. + *
+ * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createUpDownCounter(name: string, options?: MetricOptions): UpDownCounter; + /** + * Creates a new `ObservableGauge` metric. + * + * The callback SHOULD be safe to be invoked concurrently. + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createObservableGauge(name: string, options?: MetricOptions): ObservableGauge; + /** + * Creates a new `ObservableCounter` metric. + * + * The callback SHOULD be safe to be invoked concurrently. + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createObservableCounter(name: string, options?: MetricOptions): ObservableCounter; + /** + * Creates a new `ObservableUpDownCounter` metric. + * + * The callback SHOULD be safe to be invoked concurrently. + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createObservableUpDownCounter(name: string, options?: MetricOptions): ObservableUpDownCounter; + /** + * Sets up a function that will be called whenever a metric collection is + * initiated. + * + * If the function is already in the list of callbacks for this Observable, + * the function is not added a second time. + * + * Only the associated observables can be observed in the callback. + * Measurements of observables that are not associated observed in the + * callback are dropped. + * + * @param callback the batch observable callback + * @param observables the observables associated with this batch observable callback + */ + addBatchObservableCallback(callback: BatchObservableCallback, observables: Observable[]): void; + /** + * Removes a callback previously registered with {@link Meter.addBatchObservableCallback}. + * + * The callback to be removed is identified using a combination of the callback itself, + * and the set of the observables associated with it. + * + * @param callback the batch observable callback + * @param observables the observables associated with this batch observable callback + */ + removeBatchObservableCallback(callback: BatchObservableCallback, observables: Observable[]): void; +} +//# sourceMappingURL=Meter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Meter.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Meter.js new file mode 100644 index 0000000..f1d0754 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Meter.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Meter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Meter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Meter.js.map new file mode 100644 index 0000000..c4b0aaf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Meter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Meter.js","sourceRoot":"","sources":["../../../src/metrics/Meter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n BatchObservableCallback,\n Counter,\n Gauge,\n Histogram,\n MetricAttributes,\n MetricOptions,\n Observable,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n} from './Metric';\n\n/**\n * An interface describes additional metadata of a meter.\n */\nexport interface MeterOptions {\n /**\n * The schemaUrl of the meter or instrumentation library\n */\n schemaUrl?: string;\n}\n\n/**\n * An interface to allow the recording metrics.\n *\n * {@link Metric}s are used for recording pre-defined aggregation (`Counter`),\n * or raw values (`Histogram`) in which the aggregation and attributes\n * for the exported metric are deferred.\n */\nexport interface Meter {\n /**\n * Creates and returns a new `Gauge`.\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createGauge(\n name: string,\n options?: MetricOptions\n ): Gauge;\n\n /**\n * Creates and returns a new `Histogram`.\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createHistogram(\n name: string,\n options?: MetricOptions\n ): Histogram;\n\n /**\n * Creates a new `Counter` metric. Generally, this kind of metric when the\n * value is a quantity, the sum is of primary interest, and the event count\n * and value distribution are not of primary interest.\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createCounter(\n name: string,\n options?: MetricOptions\n ): Counter;\n\n /**\n * Creates a new `UpDownCounter` metric. UpDownCounter is a synchronous\n * instrument and very similar to Counter except that Add(increment)\n * supports negative increments. It is generally useful for capturing changes\n * in an amount of resources used, or any quantity that rises and falls\n * during a request.\n * Example uses for UpDownCounter:\n *
    \n *
  1. count the number of active requests.
  2. \n *
  3. count memory in use by instrumenting new and delete.
  4. \n *
  5. count queue size by instrumenting enqueue and dequeue.
  6. \n *
  7. count semaphore up and down operations.
  8. \n *
\n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): UpDownCounter;\n\n /**\n * Creates a new `ObservableGauge` metric.\n *\n * The callback SHOULD be safe to be invoked concurrently.\n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createObservableGauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): ObservableGauge;\n\n /**\n * Creates a new `ObservableCounter` metric.\n *\n * The callback SHOULD be safe to be invoked concurrently.\n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createObservableCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): ObservableCounter;\n\n /**\n * Creates a new `ObservableUpDownCounter` metric.\n *\n * The callback SHOULD be safe to be invoked concurrently.\n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createObservableUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): ObservableUpDownCounter;\n\n /**\n * Sets up a function that will be called whenever a metric collection is\n * initiated.\n *\n * If the function is already in the list of callbacks for this Observable,\n * the function is not added a second time.\n *\n * Only the associated observables can be observed in the callback.\n * Measurements of observables that are not associated observed in the\n * callback are dropped.\n *\n * @param callback the batch observable callback\n * @param observables the observables associated with this batch observable callback\n */\n addBatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n callback: BatchObservableCallback,\n observables: Observable[]\n ): void;\n\n /**\n * Removes a callback previously registered with {@link Meter.addBatchObservableCallback}.\n *\n * The callback to be removed is identified using a combination of the callback itself,\n * and the set of the observables associated with it.\n *\n * @param callback the batch observable callback\n * @param observables the observables associated with this batch observable callback\n */\n removeBatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n callback: BatchObservableCallback,\n observables: Observable[]\n ): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.d.ts new file mode 100644 index 0000000..6c08cc3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.d.ts @@ -0,0 +1,17 @@ +import { Meter, MeterOptions } from './Meter'; +/** + * A registry for creating named {@link Meter}s. + */ +export interface MeterProvider { + /** + * Returns a Meter, creating one if one with the given name, version, and + * schemaUrl pair is not already created. + * + * @param name The name of the meter or instrumentation library. + * @param version The version of the meter or instrumentation library. + * @param options The options of the meter or instrumentation library. + * @returns Meter A Meter with the given name and version + */ + getMeter(name: string, version?: string, options?: MeterOptions): Meter; +} +//# sourceMappingURL=MeterProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.js new file mode 100644 index 0000000..3051712 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=MeterProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.js.map new file mode 100644 index 0000000..8f96d90 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MeterProvider.js","sourceRoot":"","sources":["../../../src/metrics/MeterProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter, MeterOptions } from './Meter';\n\n/**\n * A registry for creating named {@link Meter}s.\n */\nexport interface MeterProvider {\n /**\n * Returns a Meter, creating one if one with the given name, version, and\n * schemaUrl pair is not already created.\n *\n * @param name The name of the meter or instrumentation library.\n * @param version The version of the meter or instrumentation library.\n * @param options The options of the meter or instrumentation library.\n * @returns Meter A Meter with the given name and version\n */\n getMeter(name: string, version?: string, options?: MeterOptions): Meter;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Metric.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Metric.d.ts new file mode 100644 index 0000000..607b637 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Metric.d.ts @@ -0,0 +1,115 @@ +import { Attributes, AttributeValue } from '../common/Attributes'; +import { Context } from '../context/types'; +import { BatchObservableResult, ObservableResult } from './ObservableResult'; +/** + * Advisory options influencing aggregation configuration parameters. + * @experimental + */ +export interface MetricAdvice { + /** + * Hint the explicit bucket boundaries for SDK if the metric is been + * aggregated with a HistogramAggregator. + */ + explicitBucketBoundaries?: number[]; +} +/** + * Options needed for metric creation + */ +export interface MetricOptions { + /** + * The description of the Metric. + * @default '' + */ + description?: string; + /** + * The unit of the Metric values. + * @default '' + */ + unit?: string; + /** + * Indicates the type of the recorded value. + * @default {@link ValueType.DOUBLE} + */ + valueType?: ValueType; + /** + * The advice influencing aggregation configuration parameters. + * @experimental + */ + advice?: MetricAdvice; +} +/** The Type of value. It describes how the data is reported. */ +export declare enum ValueType { + INT = 0, + DOUBLE = 1 +} +/** + * Counter is the most common synchronous instrument. This instrument supports + * an `Add(increment)` function for reporting a sum, and is restricted to + * non-negative increments. The default aggregation is Sum, as for any additive + * instrument. + * + * Example uses for Counter: + *
    + *
  1. count the number of bytes received.
  2. + *
  3. count the number of requests completed.
  4. + *
  5. count the number of accounts created.
  6. + *
  7. count the number of checkpoints run.
  8. + *
  9. count the number of 5xx errors.
  10. + *
      + */ +export interface Counter { + /** + * Increment value of counter by the input. Inputs must not be negative. + */ + add(value: number, attributes?: AttributesTypes, context?: Context): void; +} +export interface UpDownCounter { + /** + * Increment value of counter by the input. Inputs may be negative. + */ + add(value: number, attributes?: AttributesTypes, context?: Context): void; +} +export interface Gauge { + /** + * Records a measurement. + */ + record(value: number, attributes?: AttributesTypes, context?: Context): void; +} +export interface Histogram { + /** + * Records a measurement. Value of the measurement must not be negative. + */ + record(value: number, attributes?: AttributesTypes, context?: Context): void; +} +/** + * @deprecated please use {@link Attributes} + */ +export declare type MetricAttributes = Attributes; +/** + * @deprecated please use {@link AttributeValue} + */ +export declare type MetricAttributeValue = AttributeValue; +/** + * The observable callback for Observable instruments. + */ +export declare type ObservableCallback = (observableResult: ObservableResult) => void | Promise; +/** + * The observable callback for a batch of Observable instruments. + */ +export declare type BatchObservableCallback = (observableResult: BatchObservableResult) => void | Promise; +export interface Observable { + /** + * Sets up a function that will be called whenever a metric collection is initiated. + * + * If the function is already in the list of callbacks for this Observable, the function is not added a second time. + */ + addCallback(callback: ObservableCallback): void; + /** + * Removes a callback previously registered with {@link Observable.addCallback}. + */ + removeCallback(callback: ObservableCallback): void; +} +export declare type ObservableCounter = Observable; +export declare type ObservableUpDownCounter = Observable; +export declare type ObservableGauge = Observable; +//# sourceMappingURL=Metric.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Metric.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Metric.js new file mode 100644 index 0000000..6df1374 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Metric.js @@ -0,0 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** The Type of value. It describes how the data is reported. */ +export var ValueType; +(function (ValueType) { + ValueType[ValueType["INT"] = 0] = "INT"; + ValueType[ValueType["DOUBLE"] = 1] = "DOUBLE"; +})(ValueType || (ValueType = {})); +//# sourceMappingURL=Metric.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Metric.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Metric.js.map new file mode 100644 index 0000000..a115430 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/Metric.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Metric.js","sourceRoot":"","sources":["../../../src/metrics/Metric.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+CH,gEAAgE;AAChE,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,uCAAG,CAAA;IACH,6CAAM,CAAA;AACR,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, AttributeValue } from '../common/Attributes';\nimport { Context } from '../context/types';\nimport { BatchObservableResult, ObservableResult } from './ObservableResult';\n\n/**\n * Advisory options influencing aggregation configuration parameters.\n * @experimental\n */\nexport interface MetricAdvice {\n /**\n * Hint the explicit bucket boundaries for SDK if the metric is been\n * aggregated with a HistogramAggregator.\n */\n explicitBucketBoundaries?: number[];\n}\n\n/**\n * Options needed for metric creation\n */\nexport interface MetricOptions {\n /**\n * The description of the Metric.\n * @default ''\n */\n description?: string;\n\n /**\n * The unit of the Metric values.\n * @default ''\n */\n unit?: string;\n\n /**\n * Indicates the type of the recorded value.\n * @default {@link ValueType.DOUBLE}\n */\n valueType?: ValueType;\n\n /**\n * The advice influencing aggregation configuration parameters.\n * @experimental\n */\n advice?: MetricAdvice;\n}\n\n/** The Type of value. It describes how the data is reported. */\nexport enum ValueType {\n INT,\n DOUBLE,\n}\n\n/**\n * Counter is the most common synchronous instrument. This instrument supports\n * an `Add(increment)` function for reporting a sum, and is restricted to\n * non-negative increments. The default aggregation is Sum, as for any additive\n * instrument.\n *\n * Example uses for Counter:\n *
        \n *
      1. count the number of bytes received.
      2. \n *
      3. count the number of requests completed.
      4. \n *
      5. count the number of accounts created.
      6. \n *
      7. count the number of checkpoints run.
      8. \n *
      9. count the number of 5xx errors.
      10. \n *
          \n */\nexport interface Counter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Increment value of counter by the input. Inputs must not be negative.\n */\n add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface UpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Increment value of counter by the input. Inputs may be negative.\n */\n add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface Gauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Records a measurement.\n */\n record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface Histogram<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Records a measurement. Value of the measurement must not be negative.\n */\n record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @deprecated please use {@link Attributes}\n */\nexport type MetricAttributes = Attributes;\n\n/**\n * @deprecated please use {@link AttributeValue}\n */\nexport type MetricAttributeValue = AttributeValue;\n\n/**\n * The observable callback for Observable instruments.\n */\nexport type ObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n observableResult: ObservableResult\n) => void | Promise;\n\n/**\n * The observable callback for a batch of Observable instruments.\n */\nexport type BatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n observableResult: BatchObservableResult\n) => void | Promise;\n\nexport interface Observable<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Sets up a function that will be called whenever a metric collection is initiated.\n *\n * If the function is already in the list of callbacks for this Observable, the function is not added a second time.\n */\n addCallback(callback: ObservableCallback): void;\n\n /**\n * Removes a callback previously registered with {@link Observable.addCallback}.\n */\n removeCallback(callback: ObservableCallback): void;\n}\n\nexport type ObservableCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\nexport type ObservableUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\nexport type ObservableGauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.d.ts new file mode 100644 index 0000000..bbefa9a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.d.ts @@ -0,0 +1,82 @@ +import { Meter } from './Meter'; +import { BatchObservableCallback, Counter, Gauge, Histogram, MetricAttributes, MetricOptions, Observable, ObservableCallback, ObservableCounter, ObservableGauge, ObservableUpDownCounter, UpDownCounter } from './Metric'; +/** + * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses + * constant NoopMetrics for all of its methods. + */ +export declare class NoopMeter implements Meter { + constructor(); + /** + * @see {@link Meter.createGauge} + */ + createGauge(_name: string, _options?: MetricOptions): Gauge; + /** + * @see {@link Meter.createHistogram} + */ + createHistogram(_name: string, _options?: MetricOptions): Histogram; + /** + * @see {@link Meter.createCounter} + */ + createCounter(_name: string, _options?: MetricOptions): Counter; + /** + * @see {@link Meter.createUpDownCounter} + */ + createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter; + /** + * @see {@link Meter.createObservableGauge} + */ + createObservableGauge(_name: string, _options?: MetricOptions): ObservableGauge; + /** + * @see {@link Meter.createObservableCounter} + */ + createObservableCounter(_name: string, _options?: MetricOptions): ObservableCounter; + /** + * @see {@link Meter.createObservableUpDownCounter} + */ + createObservableUpDownCounter(_name: string, _options?: MetricOptions): ObservableUpDownCounter; + /** + * @see {@link Meter.addBatchObservableCallback} + */ + addBatchObservableCallback(_callback: BatchObservableCallback, _observables: Observable[]): void; + /** + * @see {@link Meter.removeBatchObservableCallback} + */ + removeBatchObservableCallback(_callback: BatchObservableCallback): void; +} +export declare class NoopMetric { +} +export declare class NoopCounterMetric extends NoopMetric implements Counter { + add(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopUpDownCounterMetric extends NoopMetric implements UpDownCounter { + add(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopGaugeMetric extends NoopMetric implements Gauge { + record(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopHistogramMetric extends NoopMetric implements Histogram { + record(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopObservableMetric { + addCallback(_callback: ObservableCallback): void; + removeCallback(_callback: ObservableCallback): void; +} +export declare class NoopObservableCounterMetric extends NoopObservableMetric implements ObservableCounter { +} +export declare class NoopObservableGaugeMetric extends NoopObservableMetric implements ObservableGauge { +} +export declare class NoopObservableUpDownCounterMetric extends NoopObservableMetric implements ObservableUpDownCounter { +} +export declare const NOOP_METER: NoopMeter; +export declare const NOOP_COUNTER_METRIC: NoopCounterMetric; +export declare const NOOP_GAUGE_METRIC: NoopGaugeMetric; +export declare const NOOP_HISTOGRAM_METRIC: NoopHistogramMetric; +export declare const NOOP_UP_DOWN_COUNTER_METRIC: NoopUpDownCounterMetric; +export declare const NOOP_OBSERVABLE_COUNTER_METRIC: NoopObservableCounterMetric; +export declare const NOOP_OBSERVABLE_GAUGE_METRIC: NoopObservableGaugeMetric; +export declare const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC: NoopObservableUpDownCounterMetric; +/** + * Create a no-op Meter + */ +export declare function createNoopMeter(): Meter; +//# sourceMappingURL=NoopMeter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js new file mode 100644 index 0000000..8d03e40 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js @@ -0,0 +1,181 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +/** + * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses + * constant NoopMetrics for all of its methods. + */ +var NoopMeter = /** @class */ (function () { + function NoopMeter() { + } + /** + * @see {@link Meter.createGauge} + */ + NoopMeter.prototype.createGauge = function (_name, _options) { + return NOOP_GAUGE_METRIC; + }; + /** + * @see {@link Meter.createHistogram} + */ + NoopMeter.prototype.createHistogram = function (_name, _options) { + return NOOP_HISTOGRAM_METRIC; + }; + /** + * @see {@link Meter.createCounter} + */ + NoopMeter.prototype.createCounter = function (_name, _options) { + return NOOP_COUNTER_METRIC; + }; + /** + * @see {@link Meter.createUpDownCounter} + */ + NoopMeter.prototype.createUpDownCounter = function (_name, _options) { + return NOOP_UP_DOWN_COUNTER_METRIC; + }; + /** + * @see {@link Meter.createObservableGauge} + */ + NoopMeter.prototype.createObservableGauge = function (_name, _options) { + return NOOP_OBSERVABLE_GAUGE_METRIC; + }; + /** + * @see {@link Meter.createObservableCounter} + */ + NoopMeter.prototype.createObservableCounter = function (_name, _options) { + return NOOP_OBSERVABLE_COUNTER_METRIC; + }; + /** + * @see {@link Meter.createObservableUpDownCounter} + */ + NoopMeter.prototype.createObservableUpDownCounter = function (_name, _options) { + return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC; + }; + /** + * @see {@link Meter.addBatchObservableCallback} + */ + NoopMeter.prototype.addBatchObservableCallback = function (_callback, _observables) { }; + /** + * @see {@link Meter.removeBatchObservableCallback} + */ + NoopMeter.prototype.removeBatchObservableCallback = function (_callback) { }; + return NoopMeter; +}()); +export { NoopMeter }; +var NoopMetric = /** @class */ (function () { + function NoopMetric() { + } + return NoopMetric; +}()); +export { NoopMetric }; +var NoopCounterMetric = /** @class */ (function (_super) { + __extends(NoopCounterMetric, _super); + function NoopCounterMetric() { + return _super !== null && _super.apply(this, arguments) || this; + } + NoopCounterMetric.prototype.add = function (_value, _attributes) { }; + return NoopCounterMetric; +}(NoopMetric)); +export { NoopCounterMetric }; +var NoopUpDownCounterMetric = /** @class */ (function (_super) { + __extends(NoopUpDownCounterMetric, _super); + function NoopUpDownCounterMetric() { + return _super !== null && _super.apply(this, arguments) || this; + } + NoopUpDownCounterMetric.prototype.add = function (_value, _attributes) { }; + return NoopUpDownCounterMetric; +}(NoopMetric)); +export { NoopUpDownCounterMetric }; +var NoopGaugeMetric = /** @class */ (function (_super) { + __extends(NoopGaugeMetric, _super); + function NoopGaugeMetric() { + return _super !== null && _super.apply(this, arguments) || this; + } + NoopGaugeMetric.prototype.record = function (_value, _attributes) { }; + return NoopGaugeMetric; +}(NoopMetric)); +export { NoopGaugeMetric }; +var NoopHistogramMetric = /** @class */ (function (_super) { + __extends(NoopHistogramMetric, _super); + function NoopHistogramMetric() { + return _super !== null && _super.apply(this, arguments) || this; + } + NoopHistogramMetric.prototype.record = function (_value, _attributes) { }; + return NoopHistogramMetric; +}(NoopMetric)); +export { NoopHistogramMetric }; +var NoopObservableMetric = /** @class */ (function () { + function NoopObservableMetric() { + } + NoopObservableMetric.prototype.addCallback = function (_callback) { }; + NoopObservableMetric.prototype.removeCallback = function (_callback) { }; + return NoopObservableMetric; +}()); +export { NoopObservableMetric }; +var NoopObservableCounterMetric = /** @class */ (function (_super) { + __extends(NoopObservableCounterMetric, _super); + function NoopObservableCounterMetric() { + return _super !== null && _super.apply(this, arguments) || this; + } + return NoopObservableCounterMetric; +}(NoopObservableMetric)); +export { NoopObservableCounterMetric }; +var NoopObservableGaugeMetric = /** @class */ (function (_super) { + __extends(NoopObservableGaugeMetric, _super); + function NoopObservableGaugeMetric() { + return _super !== null && _super.apply(this, arguments) || this; + } + return NoopObservableGaugeMetric; +}(NoopObservableMetric)); +export { NoopObservableGaugeMetric }; +var NoopObservableUpDownCounterMetric = /** @class */ (function (_super) { + __extends(NoopObservableUpDownCounterMetric, _super); + function NoopObservableUpDownCounterMetric() { + return _super !== null && _super.apply(this, arguments) || this; + } + return NoopObservableUpDownCounterMetric; +}(NoopObservableMetric)); +export { NoopObservableUpDownCounterMetric }; +export var NOOP_METER = new NoopMeter(); +// Synchronous instruments +export var NOOP_COUNTER_METRIC = new NoopCounterMetric(); +export var NOOP_GAUGE_METRIC = new NoopGaugeMetric(); +export var NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric(); +export var NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric(); +// Asynchronous instruments +export var NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric(); +export var NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric(); +export var NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric(); +/** + * Create a no-op Meter + */ +export function createNoopMeter() { + return NOOP_METER; +} +//# sourceMappingURL=NoopMeter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js.map new file mode 100644 index 0000000..e1dc0e0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopMeter.js","sourceRoot":"","sources":["../../../src/metrics/NoopMeter.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter } from './Meter';\nimport {\n BatchObservableCallback,\n Counter,\n Gauge,\n Histogram,\n MetricAttributes,\n MetricOptions,\n Observable,\n ObservableCallback,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n} from './Metric';\n\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nexport class NoopMeter implements Meter {\n constructor() {}\n\n /**\n * @see {@link Meter.createGauge}\n */\n createGauge(_name: string, _options?: MetricOptions): Gauge {\n return NOOP_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name: string, _options?: MetricOptions): Histogram {\n return NOOP_HISTOGRAM_METRIC;\n }\n\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name: string, _options?: MetricOptions): Counter {\n return NOOP_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter {\n return NOOP_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(\n _name: string,\n _options?: MetricOptions\n ): ObservableGauge {\n return NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableCounter {\n return NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableUpDownCounter {\n return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(\n _callback: BatchObservableCallback,\n _observables: Observable[]\n ): void {}\n\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback: BatchObservableCallback): void {}\n}\n\nexport class NoopMetric {}\n\nexport class NoopCounterMetric extends NoopMetric implements Counter {\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopUpDownCounterMetric\n extends NoopMetric\n implements UpDownCounter\n{\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopGaugeMetric extends NoopMetric implements Gauge {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopHistogramMetric extends NoopMetric implements Histogram {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopObservableMetric {\n addCallback(_callback: ObservableCallback) {}\n\n removeCallback(_callback: ObservableCallback) {}\n}\n\nexport class NoopObservableCounterMetric\n extends NoopObservableMetric\n implements ObservableCounter {}\n\nexport class NoopObservableGaugeMetric\n extends NoopObservableMetric\n implements ObservableGauge {}\n\nexport class NoopObservableUpDownCounterMetric\n extends NoopObservableMetric\n implements ObservableUpDownCounter {}\n\nexport const NOOP_METER = new NoopMeter();\n\n// Synchronous instruments\nexport const NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexport const NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexport const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexport const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n\n// Asynchronous instruments\nexport const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexport const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexport const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC =\n new NoopObservableUpDownCounterMetric();\n\n/**\n * Create a no-op Meter\n */\nexport function createNoopMeter(): Meter {\n return NOOP_METER;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.d.ts new file mode 100644 index 0000000..8b51bc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.d.ts @@ -0,0 +1,11 @@ +import { Meter, MeterOptions } from './Meter'; +import { MeterProvider } from './MeterProvider'; +/** + * An implementation of the {@link MeterProvider} which returns an impotent Meter + * for all calls to `getMeter` + */ +export declare class NoopMeterProvider implements MeterProvider { + getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter; +} +export declare const NOOP_METER_PROVIDER: NoopMeterProvider; +//# sourceMappingURL=NoopMeterProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js new file mode 100644 index 0000000..75de3c0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_METER } from './NoopMeter'; +/** + * An implementation of the {@link MeterProvider} which returns an impotent Meter + * for all calls to `getMeter` + */ +var NoopMeterProvider = /** @class */ (function () { + function NoopMeterProvider() { + } + NoopMeterProvider.prototype.getMeter = function (_name, _version, _options) { + return NOOP_METER; + }; + return NoopMeterProvider; +}()); +export { NoopMeterProvider }; +export var NOOP_METER_PROVIDER = new NoopMeterProvider(); +//# sourceMappingURL=NoopMeterProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js.map new file mode 100644 index 0000000..28b3120 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopMeterProvider.js","sourceRoot":"","sources":["../../../src/metrics/NoopMeterProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH;IAAA;IAIA,CAAC;IAHC,oCAAQ,GAAR,UAAS,KAAa,EAAE,QAAiB,EAAE,QAAuB;QAChE,OAAO,UAAU,CAAC;IACpB,CAAC;IACH,wBAAC;AAAD,CAAC,AAJD,IAIC;;AAED,MAAM,CAAC,IAAM,mBAAmB,GAAG,IAAI,iBAAiB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter, MeterOptions } from './Meter';\nimport { MeterProvider } from './MeterProvider';\nimport { NOOP_METER } from './NoopMeter';\n\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nexport class NoopMeterProvider implements MeterProvider {\n getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter {\n return NOOP_METER;\n }\n}\n\nexport const NOOP_METER_PROVIDER = new NoopMeterProvider();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.d.ts new file mode 100644 index 0000000..26563f9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.d.ts @@ -0,0 +1,31 @@ +import { MetricAttributes, Observable } from './Metric'; +/** + * Interface that is being used in callback function for Observable Metric. + */ +export interface ObservableResult { + /** + * Observe a measurement of the value associated with the given attributes. + * + * @param value The value to be observed. + * @param attributes The attributes associated with the value. If more than + * one values associated with the same attributes values, SDK may pick the + * last one or simply drop the entire observable result. + */ + observe(this: ObservableResult, value: number, attributes?: AttributesTypes): void; +} +/** + * Interface that is being used in batch observable callback function. + */ +export interface BatchObservableResult { + /** + * Observe a measurement of the value associated with the given attributes. + * + * @param metric The observable metric to be observed. + * @param value The value to be observed. + * @param attributes The attributes associated with the value. If more than + * one values associated with the same attributes values, SDK may pick the + * last one or simply drop the entire observable result. + */ + observe(this: BatchObservableResult, metric: Observable, value: number, attributes?: AttributesTypes): void; +} +//# sourceMappingURL=ObservableResult.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.js new file mode 100644 index 0000000..7985d26 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=ObservableResult.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.js.map new file mode 100644 index 0000000..b6b0c7c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ObservableResult.js","sourceRoot":"","sources":["../../../src/metrics/ObservableResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { MetricAttributes, Observable } from './Metric';\n\n/**\n * Interface that is being used in callback function for Observable Metric.\n */\nexport interface ObservableResult<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Observe a measurement of the value associated with the given attributes.\n *\n * @param value The value to be observed.\n * @param attributes The attributes associated with the value. If more than\n * one values associated with the same attributes values, SDK may pick the\n * last one or simply drop the entire observable result.\n */\n observe(\n this: ObservableResult,\n value: number,\n attributes?: AttributesTypes\n ): void;\n}\n\n/**\n * Interface that is being used in batch observable callback function.\n */\nexport interface BatchObservableResult<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Observe a measurement of the value associated with the given attributes.\n *\n * @param metric The observable metric to be observed.\n * @param value The value to be observed.\n * @param attributes The attributes associated with the value. If more than\n * one values associated with the same attributes values, SDK may pick the\n * last one or simply drop the entire observable result.\n */\n observe(\n this: BatchObservableResult,\n metric: Observable,\n value: number,\n attributes?: AttributesTypes\n ): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.d.ts new file mode 100644 index 0000000..e73fd73 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.d.ts @@ -0,0 +1,10 @@ +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js new file mode 100644 index 0000000..52f985e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Updates to this file should also be replicated to @opentelemetry/core too. +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef +export var _globalThis = typeof globalThis === 'object' + ? globalThis + : typeof self === 'object' + ? self + : typeof window === 'object' + ? window + : typeof global === 'object' + ? global + : {}; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js.map new file mode 100644 index 0000000..665e3fc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/browser/globalThis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,6EAA6E;AAE7E;;;;;;GAMG;AAEH,gEAAgE;AAChE,8EAA8E;AAC9E,MAAM,CAAC,IAAM,WAAW,GACtB,OAAO,UAAU,KAAK,QAAQ;IAC5B,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;QAC1B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;YAC5B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;gBAC5B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAE,EAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Updates to this file should also be replicated to @opentelemetry/core too.\n\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - (When all else fails)\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef\nexport const _globalThis: typeof globalThis =\n typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : ({} as typeof globalThis);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/index.d.ts new file mode 100644 index 0000000..ba20e12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/index.d.ts @@ -0,0 +1,2 @@ +export * from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/index.js new file mode 100644 index 0000000..efcad2e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './globalThis'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/index.js.map new file mode 100644 index 0000000..07adcd9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,cAAc,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport * from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/index.d.ts new file mode 100644 index 0000000..90595da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/index.d.ts @@ -0,0 +1,2 @@ +export * from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/index.js new file mode 100644 index 0000000..c0df125 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/index.js.map new file mode 100644 index 0000000..9494c53 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport * from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.d.ts new file mode 100644 index 0000000..e3c83e5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.d.ts @@ -0,0 +1,3 @@ +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js new file mode 100644 index 0000000..feb9700 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line node/no-unsupported-features/es-builtins +export var _globalThis = typeof globalThis === 'object' ? globalThis : global; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js.map new file mode 100644 index 0000000..5911136 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/node/globalThis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,gEAAgE;AAChE,oEAAoE;AACpE,MAAM,CAAC,IAAM,WAAW,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/index.d.ts new file mode 100644 index 0000000..ba20e12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/index.d.ts @@ -0,0 +1,2 @@ +export * from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/index.js new file mode 100644 index 0000000..efcad2e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './globalThis'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/index.js.map new file mode 100644 index 0000000..f279718 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,cAAc,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport * from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation-api.d.ts new file mode 100644 index 0000000..e12b51b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation-api.d.ts @@ -0,0 +1,4 @@ +import { PropagationAPI } from './api/propagation'; +/** Entrypoint for propagation API */ +export declare const propagation: PropagationAPI; +//# sourceMappingURL=propagation-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation-api.js new file mode 100644 index 0000000..df8d5b9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation-api.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { PropagationAPI } from './api/propagation'; +/** Entrypoint for propagation API */ +export var propagation = PropagationAPI.getInstance(); +//# sourceMappingURL=propagation-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation-api.js.map new file mode 100644 index 0000000..2375317 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"propagation-api.js","sourceRoot":"","sources":["../../src/propagation-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,qCAAqC;AACrC,MAAM,CAAC,IAAM,WAAW,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { PropagationAPI } from './api/propagation';\n/** Entrypoint for propagation API */\nexport const propagation = PropagationAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.d.ts new file mode 100644 index 0000000..398021f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.d.ts @@ -0,0 +1,13 @@ +import { Context } from '../context/types'; +import { TextMapPropagator } from './TextMapPropagator'; +/** + * No-op implementations of {@link TextMapPropagator}. + */ +export declare class NoopTextMapPropagator implements TextMapPropagator { + /** Noop inject function does nothing */ + inject(_context: Context, _carrier: unknown): void; + /** Noop extract function does nothing and returns the input context */ + extract(context: Context, _carrier: unknown): Context; + fields(): string[]; +} +//# sourceMappingURL=NoopTextMapPropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js new file mode 100644 index 0000000..8e62901 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * No-op implementations of {@link TextMapPropagator}. + */ +var NoopTextMapPropagator = /** @class */ (function () { + function NoopTextMapPropagator() { + } + /** Noop inject function does nothing */ + NoopTextMapPropagator.prototype.inject = function (_context, _carrier) { }; + /** Noop extract function does nothing and returns the input context */ + NoopTextMapPropagator.prototype.extract = function (context, _carrier) { + return context; + }; + NoopTextMapPropagator.prototype.fields = function () { + return []; + }; + return NoopTextMapPropagator; +}()); +export { NoopTextMapPropagator }; +//# sourceMappingURL=NoopTextMapPropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js.map new file mode 100644 index 0000000..40be566 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopTextMapPropagator.js","sourceRoot":"","sources":["../../../src/propagation/NoopTextMapPropagator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH;;GAEG;AACH;IAAA;IAUA,CAAC;IATC,wCAAwC;IACxC,sCAAM,GAAN,UAAO,QAAiB,EAAE,QAAiB,IAAS,CAAC;IACrD,uEAAuE;IACvE,uCAAO,GAAP,UAAQ,OAAgB,EAAE,QAAiB;QACzC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,sCAAM,GAAN;QACE,OAAO,EAAE,CAAC;IACZ,CAAC;IACH,4BAAC;AAAD,CAAC,AAVD,IAUC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { TextMapPropagator } from './TextMapPropagator';\n\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nexport class NoopTextMapPropagator implements TextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context: Context, _carrier: unknown): void {}\n /** Noop extract function does nothing and returns the input context */\n extract(context: Context, _carrier: unknown): Context {\n return context;\n }\n fields(): string[] {\n return [];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.d.ts new file mode 100644 index 0000000..dc39367 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.d.ts @@ -0,0 +1,84 @@ +import { Context } from '../context/types'; +/** + * Injects `Context` into and extracts it from carriers that travel + * in-band across process boundaries. Encoding is expected to conform to the + * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request + * headers. + * + * The carrier of propagated data on both the client (injector) and server + * (extractor) side is usually an object such as http headers. Propagation is + * usually implemented via library-specific request interceptors, where the + * client-side injects values and the server-side extracts them. + */ +export interface TextMapPropagator { + /** + * Injects values from a given `Context` into a carrier. + * + * OpenTelemetry defines a common set of format values (TextMapPropagator), + * and each has an expected `carrier` type. + * + * @param context the Context from which to extract values to transmit over + * the wire. + * @param carrier the carrier of propagation fields, such as http request + * headers. + * @param setter an optional {@link TextMapSetter}. If undefined, values will be + * set by direct object assignment. + */ + inject(context: Context, carrier: Carrier, setter: TextMapSetter): void; + /** + * Given a `Context` and a carrier, extract context values from a + * carrier and return a new context, created from the old context, with the + * extracted values. + * + * @param context the Context from which to extract values to transmit over + * the wire. + * @param carrier the carrier of propagation fields, such as http request + * headers. + * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all + * own properties, and keys will be accessed by direct object access. + */ + extract(context: Context, carrier: Carrier, getter: TextMapGetter): Context; + /** + * Return a list of all fields which may be used by the propagator. + */ + fields(): string[]; +} +/** + * A setter is specified by the caller to define a specific method + * to set key/value pairs on the carrier within a propagator. + */ +export interface TextMapSetter { + /** + * Callback used to set a key/value pair on an object. + * + * Should be called by the propagator each time a key/value pair + * should be set, and should set that key/value pair on the propagator. + * + * @param carrier object or class which carries key/value pairs + * @param key string key to modify + * @param value value to be set to the key on the carrier + */ + set(carrier: Carrier, key: string, value: string): void; +} +/** + * A getter is specified by the caller to define a specific method + * to get the value of a key from a carrier. + */ +export interface TextMapGetter { + /** + * Get a list of all keys available on the carrier. + * + * @param carrier + */ + keys(carrier: Carrier): string[]; + /** + * Get the value of a specific key from the carrier. + * + * @param carrier + * @param key + */ + get(carrier: Carrier, key: string): undefined | string | string[]; +} +export declare const defaultTextMapGetter: TextMapGetter; +export declare const defaultTextMapSetter: TextMapSetter; +//# sourceMappingURL=TextMapPropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js new file mode 100644 index 0000000..c5f5311 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js @@ -0,0 +1,38 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var defaultTextMapGetter = { + get: function (carrier, key) { + if (carrier == null) { + return undefined; + } + return carrier[key]; + }, + keys: function (carrier) { + if (carrier == null) { + return []; + } + return Object.keys(carrier); + }, +}; +export var defaultTextMapSetter = { + set: function (carrier, key, value) { + if (carrier == null) { + return; + } + carrier[key] = value; + }, +}; +//# sourceMappingURL=TextMapPropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js.map new file mode 100644 index 0000000..9de7d06 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TextMapPropagator.js","sourceRoot":"","sources":["../../../src/propagation/TextMapPropagator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkGH,MAAM,CAAC,IAAM,oBAAoB,GAAkB;IACjD,GAAG,YAAC,OAAO,EAAE,GAAG;QACd,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,YAAC,OAAO;QACV,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO,EAAE,CAAC;SACX;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,IAAM,oBAAoB,GAAkB;IACjD,GAAG,YAAC,OAAO,EAAE,GAAG,EAAE,KAAK;QACrB,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO;SACR;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\n\n/**\n * Injects `Context` into and extracts it from carriers that travel\n * in-band across process boundaries. Encoding is expected to conform to the\n * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request\n * headers.\n *\n * The carrier of propagated data on both the client (injector) and server\n * (extractor) side is usually an object such as http headers. Propagation is\n * usually implemented via library-specific request interceptors, where the\n * client-side injects values and the server-side extracts them.\n */\nexport interface TextMapPropagator {\n /**\n * Injects values from a given `Context` into a carrier.\n *\n * OpenTelemetry defines a common set of format values (TextMapPropagator),\n * and each has an expected `carrier` type.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param setter an optional {@link TextMapSetter}. If undefined, values will be\n * set by direct object assignment.\n */\n inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter\n ): void;\n\n /**\n * Given a `Context` and a carrier, extract context values from a\n * carrier and return a new context, created from the old context, with the\n * extracted values.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all\n * own properties, and keys will be accessed by direct object access.\n */\n extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter\n ): Context;\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields(): string[];\n}\n\n/**\n * A setter is specified by the caller to define a specific method\n * to set key/value pairs on the carrier within a propagator.\n */\nexport interface TextMapSetter {\n /**\n * Callback used to set a key/value pair on an object.\n *\n * Should be called by the propagator each time a key/value pair\n * should be set, and should set that key/value pair on the propagator.\n *\n * @param carrier object or class which carries key/value pairs\n * @param key string key to modify\n * @param value value to be set to the key on the carrier\n */\n set(carrier: Carrier, key: string, value: string): void;\n}\n\n/**\n * A getter is specified by the caller to define a specific method\n * to get the value of a key from a carrier.\n */\nexport interface TextMapGetter {\n /**\n * Get a list of all keys available on the carrier.\n *\n * @param carrier\n */\n keys(carrier: Carrier): string[];\n\n /**\n * Get the value of a specific key from the carrier.\n *\n * @param carrier\n * @param key\n */\n get(carrier: Carrier, key: string): undefined | string | string[];\n}\n\nexport const defaultTextMapGetter: TextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\n\nexport const defaultTextMapSetter: TextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n\n carrier[key] = value;\n },\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace-api.d.ts new file mode 100644 index 0000000..b4751a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace-api.d.ts @@ -0,0 +1,4 @@ +import { TraceAPI } from './api/trace'; +/** Entrypoint for trace API */ +export declare const trace: TraceAPI; +//# sourceMappingURL=trace-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace-api.js new file mode 100644 index 0000000..57506e5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace-api.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { TraceAPI } from './api/trace'; +/** Entrypoint for trace API */ +export var trace = TraceAPI.getInstance(); +//# sourceMappingURL=trace-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace-api.js.map new file mode 100644 index 0000000..bd11c06 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace-api.js","sourceRoot":"","sources":["../../src/trace-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,+BAA+B;AAC/B,MAAM,CAAC,IAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport const trace = TraceAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.d.ts new file mode 100644 index 0000000..ce569f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.d.ts @@ -0,0 +1,28 @@ +import { Exception } from '../common/Exception'; +import { TimeInput } from '../common/Time'; +import { SpanAttributes } from './attributes'; +import { Span } from './span'; +import { SpanContext } from './span_context'; +import { SpanStatus } from './status'; +import { Link } from './link'; +/** + * The NonRecordingSpan is the default {@link Span} that is used when no Span + * implementation is available. All operations are no-op including context + * propagation. + */ +export declare class NonRecordingSpan implements Span { + private readonly _spanContext; + constructor(_spanContext?: SpanContext); + spanContext(): SpanContext; + setAttribute(_key: string, _value: unknown): this; + setAttributes(_attributes: SpanAttributes): this; + addEvent(_name: string, _attributes?: SpanAttributes): this; + addLink(_link: Link): this; + addLinks(_links: Link[]): this; + setStatus(_status: SpanStatus): this; + updateName(_name: string): this; + end(_endTime?: TimeInput): void; + isRecording(): boolean; + recordException(_exception: Exception, _time?: TimeInput): void; +} +//# sourceMappingURL=NonRecordingSpan.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js new file mode 100644 index 0000000..ec6dd75 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js @@ -0,0 +1,68 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { INVALID_SPAN_CONTEXT } from './invalid-span-constants'; +/** + * The NonRecordingSpan is the default {@link Span} that is used when no Span + * implementation is available. All operations are no-op including context + * propagation. + */ +var NonRecordingSpan = /** @class */ (function () { + function NonRecordingSpan(_spanContext) { + if (_spanContext === void 0) { _spanContext = INVALID_SPAN_CONTEXT; } + this._spanContext = _spanContext; + } + // Returns a SpanContext. + NonRecordingSpan.prototype.spanContext = function () { + return this._spanContext; + }; + // By default does nothing + NonRecordingSpan.prototype.setAttribute = function (_key, _value) { + return this; + }; + // By default does nothing + NonRecordingSpan.prototype.setAttributes = function (_attributes) { + return this; + }; + // By default does nothing + NonRecordingSpan.prototype.addEvent = function (_name, _attributes) { + return this; + }; + NonRecordingSpan.prototype.addLink = function (_link) { + return this; + }; + NonRecordingSpan.prototype.addLinks = function (_links) { + return this; + }; + // By default does nothing + NonRecordingSpan.prototype.setStatus = function (_status) { + return this; + }; + // By default does nothing + NonRecordingSpan.prototype.updateName = function (_name) { + return this; + }; + // By default does nothing + NonRecordingSpan.prototype.end = function (_endTime) { }; + // isRecording always returns false for NonRecordingSpan. + NonRecordingSpan.prototype.isRecording = function () { + return false; + }; + // By default does nothing + NonRecordingSpan.prototype.recordException = function (_exception, _time) { }; + return NonRecordingSpan; +}()); +export { NonRecordingSpan }; +//# sourceMappingURL=NonRecordingSpan.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js.map new file mode 100644 index 0000000..15f932e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NonRecordingSpan.js","sourceRoot":"","sources":["../../../src/trace/NonRecordingSpan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAMhE;;;;GAIG;AACH;IACE,0BACmB,YAAgD;QAAhD,6BAAA,EAAA,mCAAgD;QAAhD,iBAAY,GAAZ,YAAY,CAAoC;IAChE,CAAC;IAEJ,yBAAyB;IACzB,sCAAW,GAAX;QACE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,0BAA0B;IAC1B,uCAAY,GAAZ,UAAa,IAAY,EAAE,MAAe;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,wCAAa,GAAb,UAAc,WAA2B;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,mCAAQ,GAAR,UAAS,KAAa,EAAE,WAA4B;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kCAAO,GAAP,UAAQ,KAAW;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mCAAQ,GAAR,UAAS,MAAc;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,oCAAS,GAAT,UAAU,OAAmB;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,qCAAU,GAAV,UAAW,KAAa;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,8BAAG,GAAH,UAAI,QAAoB,IAAS,CAAC;IAElC,yDAAyD;IACzD,sCAAW,GAAX;QACE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,0CAAe,GAAf,UAAgB,UAAqB,EAAE,KAAiB,IAAS,CAAC;IACpE,uBAAC;AAAD,CAAC,AArDD,IAqDC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\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 */\nexport class NonRecordingSpan implements Span {\n constructor(\n private readonly _spanContext: SpanContext = INVALID_SPAN_CONTEXT\n ) {}\n\n // Returns a SpanContext.\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n // By default does nothing\n setAttribute(_key: string, _value: unknown): this {\n return this;\n }\n\n // By default does nothing\n setAttributes(_attributes: SpanAttributes): this {\n return this;\n }\n\n // By default does nothing\n addEvent(_name: string, _attributes?: SpanAttributes): this {\n return this;\n }\n\n addLink(_link: Link): this {\n return this;\n }\n\n addLinks(_links: Link[]): this {\n return this;\n }\n\n // By default does nothing\n setStatus(_status: SpanStatus): this {\n return this;\n }\n\n // By default does nothing\n updateName(_name: string): this {\n return this;\n }\n\n // By default does nothing\n end(_endTime?: TimeInput): void {}\n\n // isRecording always returns false for NonRecordingSpan.\n isRecording(): boolean {\n return false;\n }\n\n // By default does nothing\n recordException(_exception: Exception, _time?: TimeInput): void {}\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.d.ts new file mode 100644 index 0000000..0e059c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.d.ts @@ -0,0 +1,14 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanOptions } from './SpanOptions'; +import { Tracer } from './tracer'; +/** + * No-op implementations of {@link Tracer}. + */ +export declare class NoopTracer implements Tracer { + startSpan(name: string, options?: SpanOptions, context?: Context): Span; + startActiveSpan ReturnType>(name: string, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: SpanOptions | undefined, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: SpanOptions | undefined, ctx: Context | undefined, fn: F): ReturnType; +} +//# sourceMappingURL=NoopTracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js new file mode 100644 index 0000000..5a3a969 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js @@ -0,0 +1,76 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ContextAPI } from '../api/context'; +import { getSpanContext, setSpan } from '../trace/context-utils'; +import { NonRecordingSpan } from './NonRecordingSpan'; +import { isSpanContextValid } from './spancontext-utils'; +var contextApi = ContextAPI.getInstance(); +/** + * No-op implementations of {@link Tracer}. + */ +var NoopTracer = /** @class */ (function () { + function NoopTracer() { + } + // startSpan starts a noop span. + NoopTracer.prototype.startSpan = function (name, options, context) { + if (context === void 0) { context = contextApi.active(); } + var root = Boolean(options === null || options === void 0 ? void 0 : options.root); + if (root) { + return new NonRecordingSpan(); + } + var parentFromContext = context && getSpanContext(context); + if (isSpanContext(parentFromContext) && + isSpanContextValid(parentFromContext)) { + return new NonRecordingSpan(parentFromContext); + } + else { + return new NonRecordingSpan(); + } + }; + NoopTracer.prototype.startActiveSpan = function (name, arg2, arg3, arg4) { + var opts; + var ctx; + var fn; + if (arguments.length < 2) { + return; + } + else if (arguments.length === 2) { + fn = arg2; + } + else if (arguments.length === 3) { + opts = arg2; + fn = arg3; + } + else { + opts = arg2; + ctx = arg3; + fn = arg4; + } + var parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active(); + var span = this.startSpan(name, opts, parentContext); + var contextWithSpanSet = setSpan(parentContext, span); + return contextApi.with(contextWithSpanSet, fn, undefined, span); + }; + return NoopTracer; +}()); +export { NoopTracer }; +function isSpanContext(spanContext) { + return (typeof spanContext === 'object' && + typeof spanContext['spanId'] === 'string' && + typeof spanContext['traceId'] === 'string' && + typeof spanContext['traceFlags'] === 'number'); +} +//# sourceMappingURL=NoopTracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js.map new file mode 100644 index 0000000..ae82938 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopTracer.js","sourceRoot":"","sources":["../../../src/trace/NoopTracer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAKzD,IAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;AAE5C;;GAEG;AACH;IAAA;IAoEA,CAAC;IAnEC,gCAAgC;IAChC,8BAAS,GAAT,UACE,IAAY,EACZ,OAAqB,EACrB,OAA6B;QAA7B,wBAAA,EAAA,UAAU,UAAU,CAAC,MAAM,EAAE;QAE7B,IAAM,IAAI,GAAG,OAAO,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,gBAAgB,EAAE,CAAC;SAC/B;QAED,IAAM,iBAAiB,GAAG,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;QAE7D,IACE,aAAa,CAAC,iBAAiB,CAAC;YAChC,kBAAkB,CAAC,iBAAiB,CAAC,EACrC;YACA,OAAO,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;SAChD;aAAM;YACL,OAAO,IAAI,gBAAgB,EAAE,CAAC;SAC/B;IACH,CAAC;IAiBD,oCAAe,GAAf,UACE,IAAY,EACZ,IAAsB,EACtB,IAAkB,EAClB,IAAQ;QAER,IAAI,IAA6B,CAAC;QAClC,IAAI,GAAwB,CAAC;QAC7B,IAAI,EAAK,CAAC;QAEV,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,OAAO;SACR;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,EAAE,GAAG,IAAS,CAAC;SAChB;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,GAAG,IAA+B,CAAC;YACvC,EAAE,GAAG,IAAS,CAAC;SAChB;aAAM;YACL,IAAI,GAAG,IAA+B,CAAC;YACvC,GAAG,GAAG,IAA2B,CAAC;YAClC,EAAE,GAAG,IAAS,CAAC;SAChB;QAED,IAAM,aAAa,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACjD,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QACvD,IAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAExD,OAAO,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IACH,iBAAC;AAAD,CAAC,AApED,IAoEC;;AAED,SAAS,aAAa,CAAC,WAAgB;IACrC,OAAO,CACL,OAAO,WAAW,KAAK,QAAQ;QAC/B,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,QAAQ;QACzC,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,QAAQ;QAC1C,OAAO,WAAW,CAAC,YAAY,CAAC,KAAK,QAAQ,CAC9C,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ContextAPI } from '../api/context';\nimport { Context } from '../context/types';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { isSpanContextValid } from './spancontext-utils';\nimport { SpanOptions } from './SpanOptions';\nimport { SpanContext } from './span_context';\nimport { Tracer } from './tracer';\n\nconst contextApi = ContextAPI.getInstance();\n\n/**\n * No-op implementations of {@link Tracer}.\n */\nexport class NoopTracer implements Tracer {\n // startSpan starts a noop span.\n startSpan(\n name: string,\n options?: SpanOptions,\n context = contextApi.active()\n ): Span {\n const root = Boolean(options?.root);\n if (root) {\n return new NonRecordingSpan();\n }\n\n const parentFromContext = context && getSpanContext(context);\n\n if (\n isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)\n ) {\n return new NonRecordingSpan(parentFromContext);\n } else {\n return new NonRecordingSpan();\n }\n }\n\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: SpanOptions | undefined,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: SpanOptions | undefined,\n ctx: Context | undefined,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | SpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: SpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as SpanOptions | undefined;\n ctx = arg3 as Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = setSpan(parentContext, span);\n\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\n\nfunction isSpanContext(spanContext: any): spanContext is SpanContext {\n return (\n typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number'\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.d.ts new file mode 100644 index 0000000..ec0fe79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.d.ts @@ -0,0 +1,13 @@ +import { Tracer } from './tracer'; +import { TracerOptions } from './tracer_options'; +import { TracerProvider } from './tracer_provider'; +/** + * An implementation of the {@link TracerProvider} which returns an impotent + * Tracer for all calls to `getTracer`. + * + * All operations are no-op. + */ +export declare class NoopTracerProvider implements TracerProvider { + getTracer(_name?: string, _version?: string, _options?: TracerOptions): Tracer; +} +//# sourceMappingURL=NoopTracerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js new file mode 100644 index 0000000..14d44c2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NoopTracer } from './NoopTracer'; +/** + * An implementation of the {@link TracerProvider} which returns an impotent + * Tracer for all calls to `getTracer`. + * + * All operations are no-op. + */ +var NoopTracerProvider = /** @class */ (function () { + function NoopTracerProvider() { + } + NoopTracerProvider.prototype.getTracer = function (_name, _version, _options) { + return new NoopTracer(); + }; + return NoopTracerProvider; +}()); +export { NoopTracerProvider }; +//# sourceMappingURL=NoopTracerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js.map new file mode 100644 index 0000000..2705ab4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopTracerProvider.js","sourceRoot":"","sources":["../../../src/trace/NoopTracerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C;;;;;GAKG;AACH;IAAA;IAQA,CAAC;IAPC,sCAAS,GAAT,UACE,KAAc,EACd,QAAiB,EACjB,QAAwB;QAExB,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;IACH,yBAAC;AAAD,CAAC,AARD,IAQC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NoopTracer } from './NoopTracer';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\nimport { TracerProvider } from './tracer_provider';\n\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 */\nexport class NoopTracerProvider implements TracerProvider {\n getTracer(\n _name?: string,\n _version?: string,\n _options?: TracerOptions\n ): Tracer {\n return new NoopTracer();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.d.ts new file mode 100644 index 0000000..116cc5c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.d.ts @@ -0,0 +1,27 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanOptions } from './SpanOptions'; +import { Tracer } from './tracer'; +import { TracerOptions } from './tracer_options'; +/** + * Proxy tracer provided by the proxy tracer provider + */ +export declare class ProxyTracer implements Tracer { + private _provider; + readonly name: string; + readonly version?: string | undefined; + readonly options?: TracerOptions | undefined; + private _delegate?; + constructor(_provider: TracerDelegator, name: string, version?: string | undefined, options?: TracerOptions | undefined); + startSpan(name: string, options?: SpanOptions, context?: Context): Span; + startActiveSpan unknown>(_name: string, _options: F | SpanOptions, _context?: F | Context, _fn?: F): ReturnType; + /** + * Try to get a tracer from the proxy tracer provider. + * If the proxy tracer provider has no delegate, return a noop tracer. + */ + private _getTracer; +} +export interface TracerDelegator { + getDelegateTracer(name: string, version?: string, options?: TracerOptions): Tracer | undefined; +} +//# sourceMappingURL=ProxyTracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js new file mode 100644 index 0000000..341991b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js @@ -0,0 +1,53 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NoopTracer } from './NoopTracer'; +var NOOP_TRACER = new NoopTracer(); +/** + * Proxy tracer provided by the proxy tracer provider + */ +var ProxyTracer = /** @class */ (function () { + function ProxyTracer(_provider, name, version, options) { + this._provider = _provider; + this.name = name; + this.version = version; + this.options = options; + } + ProxyTracer.prototype.startSpan = function (name, options, context) { + return this._getTracer().startSpan(name, options, context); + }; + ProxyTracer.prototype.startActiveSpan = function (_name, _options, _context, _fn) { + var tracer = this._getTracer(); + return Reflect.apply(tracer.startActiveSpan, tracer, arguments); + }; + /** + * Try to get a tracer from the proxy tracer provider. + * If the proxy tracer provider has no delegate, return a noop tracer. + */ + ProxyTracer.prototype._getTracer = function () { + if (this._delegate) { + return this._delegate; + } + var tracer = this._provider.getDelegateTracer(this.name, this.version, this.options); + if (!tracer) { + return NOOP_TRACER; + } + this._delegate = tracer; + return this._delegate; + }; + return ProxyTracer; +}()); +export { ProxyTracer }; +//# sourceMappingURL=ProxyTracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js.map new file mode 100644 index 0000000..0511ae8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyTracer.js","sourceRoot":"","sources":["../../../src/trace/ProxyTracer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,IAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;AAErC;;GAEG;AACH;IAIE,qBACU,SAA0B,EAClB,IAAY,EACZ,OAAgB,EAChB,OAAuB;QAH/B,cAAS,GAAT,SAAS,CAAiB;QAClB,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAgB;IACtC,CAAC;IAEJ,+BAAS,GAAT,UAAU,IAAY,EAAE,OAAqB,EAAE,OAAiB;QAC9D,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,qCAAe,GAAf,UACE,KAAa,EACb,QAAyB,EACzB,QAAsB,EACtB,GAAO;QAEP,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACK,gCAAU,GAAlB;QACE,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QAED,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAC7C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACb,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,WAAW,CAAC;SACpB;QAED,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACH,kBAAC;AAAD,CAAC,AA/CD,IA+CC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { NoopTracer } from './NoopTracer';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER = new NoopTracer();\n\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nexport class ProxyTracer implements Tracer {\n // When a real implementation is provided, this will be it\n private _delegate?: Tracer;\n\n constructor(\n private _provider: TracerDelegator,\n public readonly name: string,\n public readonly version?: string,\n public readonly options?: TracerOptions\n ) {}\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n return this._getTracer().startSpan(name, options, context);\n }\n\n startActiveSpan unknown>(\n _name: string,\n _options: F | SpanOptions,\n _context?: F | Context,\n _fn?: F\n ): ReturnType {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\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 private _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n\n const tracer = this._provider.getDelegateTracer(\n this.name,\n this.version,\n this.options\n );\n\n if (!tracer) {\n return NOOP_TRACER;\n }\n\n this._delegate = tracer;\n return this._delegate;\n }\n}\n\nexport interface TracerDelegator {\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.d.ts new file mode 100644 index 0000000..ee7eafa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.d.ts @@ -0,0 +1,25 @@ +import { Tracer } from './tracer'; +import { TracerProvider } from './tracer_provider'; +import { TracerOptions } from './tracer_options'; +/** + * Tracer provider which provides {@link ProxyTracer}s. + * + * Before a delegate is set, tracers provided are NoOp. + * When a delegate is set, traces are provided from the delegate. + * When a delegate is set after tracers have already been provided, + * all tracers already provided will use the provided delegate implementation. + */ +export declare class ProxyTracerProvider implements TracerProvider { + private _delegate?; + /** + * Get a {@link ProxyTracer} + */ + getTracer(name: string, version?: string, options?: TracerOptions): Tracer; + getDelegate(): TracerProvider; + /** + * Set the delegate tracer provider + */ + setDelegate(delegate: TracerProvider): void; + getDelegateTracer(name: string, version?: string, options?: TracerOptions): Tracer | undefined; +} +//# sourceMappingURL=ProxyTracerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js new file mode 100644 index 0000000..3cc735c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js @@ -0,0 +1,54 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ProxyTracer } from './ProxyTracer'; +import { NoopTracerProvider } from './NoopTracerProvider'; +var NOOP_TRACER_PROVIDER = new NoopTracerProvider(); +/** + * Tracer provider which provides {@link ProxyTracer}s. + * + * Before a delegate is set, tracers provided are NoOp. + * When a delegate is set, traces are provided from the delegate. + * When a delegate is set after tracers have already been provided, + * all tracers already provided will use the provided delegate implementation. + */ +var ProxyTracerProvider = /** @class */ (function () { + function ProxyTracerProvider() { + } + /** + * Get a {@link ProxyTracer} + */ + ProxyTracerProvider.prototype.getTracer = function (name, version, options) { + var _a; + return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer(this, name, version, options)); + }; + ProxyTracerProvider.prototype.getDelegate = function () { + var _a; + return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER; + }; + /** + * Set the delegate tracer provider + */ + ProxyTracerProvider.prototype.setDelegate = function (delegate) { + this._delegate = delegate; + }; + ProxyTracerProvider.prototype.getDelegateTracer = function (name, version, options) { + var _a; + return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options); + }; + return ProxyTracerProvider; +}()); +export { ProxyTracerProvider }; +//# sourceMappingURL=ProxyTracerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js.map new file mode 100644 index 0000000..fc9179b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyTracerProvider.js","sourceRoot":"","sources":["../../../src/trace/ProxyTracerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,IAAM,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEtD;;;;;;;GAOG;AACH;IAAA;IA+BA,CAAC;IA5BC;;OAEG;IACH,uCAAS,GAAT,UAAU,IAAY,EAAE,OAAgB,EAAE,OAAuB;;QAC/D,OAAO,CACL,MAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,mCAC9C,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED,yCAAW,GAAX;;QACE,OAAO,MAAA,IAAI,CAAC,SAAS,mCAAI,oBAAoB,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,yCAAW,GAAX,UAAY,QAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,+CAAiB,GAAjB,UACE,IAAY,EACZ,OAAgB,EAChB,OAAuB;;QAEvB,OAAO,MAAA,IAAI,CAAC,SAAS,0CAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IACH,0BAAC;AAAD,CAAC,AA/BD,IA+BC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Tracer } from './tracer';\nimport { TracerProvider } from './tracer_provider';\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n\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 */\nexport class ProxyTracerProvider implements TracerProvider {\n private _delegate?: TracerProvider;\n\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer {\n return (\n this.getDelegateTracer(name, version, options) ??\n new ProxyTracer(this, name, version, options)\n );\n }\n\n getDelegate(): TracerProvider {\n return this._delegate ?? NOOP_TRACER_PROVIDER;\n }\n\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate: TracerProvider) {\n this._delegate = delegate;\n }\n\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined {\n return this._delegate?.getTracer(name, version, options);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/Sampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/Sampler.d.ts new file mode 100644 index 0000000..c847eaf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/Sampler.d.ts @@ -0,0 +1,31 @@ +import { Context } from '../context/types'; +import { SpanAttributes } from './attributes'; +import { Link } from './link'; +import { SamplingResult } from './SamplingResult'; +import { SpanKind } from './span_kind'; +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * This interface represent a sampler. Sampling is a mechanism to control the + * noise and overhead introduced by OpenTelemetry by reducing the number of + * samples of traces collected and sent to the backend. + */ +export interface Sampler { + /** + * Checks whether span needs to be created and tracked. + * + * @param context Parent Context which may contain a span. + * @param traceId of the span to be created. It can be different from the + * traceId in the {@link SpanContext}. Typically in situations when the + * span to be created starts a new trace. + * @param spanName of the span to be created. + * @param spanKind of the span to be created. + * @param attributes Initial set of SpanAttributes for the Span being constructed. + * @param links Collection of links that will be associated with the Span to + * be created. Typically useful for batch operations. + * @returns a {@link SamplingResult}. + */ + shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: SpanAttributes, links: Link[]): SamplingResult; + /** Returns the sampler name or short description with the configuration. */ + toString(): string; +} +//# sourceMappingURL=Sampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/Sampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/Sampler.js new file mode 100644 index 0000000..22a60a1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/Sampler.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Sampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/Sampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/Sampler.js.map new file mode 100644 index 0000000..66719b1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/Sampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Sampler.js","sourceRoot":"","sources":["../../../src/trace/Sampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { SpanAttributes } from './attributes';\nimport { Link } from './link';\nimport { SamplingResult } from './SamplingResult';\nimport { SpanKind } from './span_kind';\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * This interface represent a sampler. Sampling is a mechanism to control the\n * noise and overhead introduced by OpenTelemetry by reducing the number of\n * samples of traces collected and sent to the backend.\n */\nexport interface Sampler {\n /**\n * Checks whether span needs to be created and tracked.\n *\n * @param context Parent Context which may contain a span.\n * @param traceId of the span to be created. It can be different from the\n * traceId in the {@link SpanContext}. Typically in situations when the\n * span to be created starts a new trace.\n * @param spanName of the span to be created.\n * @param spanKind of the span to be created.\n * @param attributes Initial set of SpanAttributes for the Span being constructed.\n * @param links Collection of links that will be associated with the Span to\n * be created. Typically useful for batch operations.\n * @returns a {@link SamplingResult}.\n */\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: SpanAttributes,\n links: Link[]\n ): SamplingResult;\n\n /** Returns the sampler name or short description with the configuration. */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.d.ts new file mode 100644 index 0000000..f2bb495 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.d.ts @@ -0,0 +1,49 @@ +import { SpanAttributes } from './attributes'; +import { TraceState } from './trace_state'; +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +export declare enum SamplingDecision { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + NOT_RECORD = 0, + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + RECORD = 1, + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + RECORD_AND_SAMPLED = 2 +} +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * A sampling result contains a decision for a {@link Span} and additional + * attributes the sampler would like to added to the Span. + */ +export interface SamplingResult { + /** + * A sampling decision, refer to {@link SamplingDecision} for details. + */ + decision: SamplingDecision; + /** + * The list of attributes returned by SamplingResult MUST be immutable. + * Caller may call {@link Sampler}.shouldSample any number of times and + * can safely cache the returned value. + */ + attributes?: Readonly; + /** + * A {@link TraceState} that will be associated with the {@link Span} through + * the new {@link SpanContext}. Samplers SHOULD return the TraceState from + * the passed-in {@link Context} if they do not intend to change it. Leaving + * the value undefined will also leave the TraceState unchanged. + */ + traceState?: TraceState; +} +//# sourceMappingURL=SamplingResult.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.js new file mode 100644 index 0000000..be65741 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.js @@ -0,0 +1,39 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +export var SamplingDecision; +(function (SamplingDecision) { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + SamplingDecision[SamplingDecision["NOT_RECORD"] = 0] = "NOT_RECORD"; + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + SamplingDecision[SamplingDecision["RECORD"] = 1] = "RECORD"; + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + SamplingDecision[SamplingDecision["RECORD_AND_SAMPLED"] = 2] = "RECORD_AND_SAMPLED"; +})(SamplingDecision || (SamplingDecision = {})); +//# sourceMappingURL=SamplingResult.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.js.map new file mode 100644 index 0000000..fd549c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SamplingResult.js","sourceRoot":"","sources":["../../../src/trace/SamplingResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH;;;;GAIG;AACH,MAAM,CAAN,IAAY,gBAgBX;AAhBD,WAAY,gBAAgB;IAC1B;;;OAGG;IACH,mEAAU,CAAA;IACV;;;OAGG;IACH,2DAAM,CAAA;IACN;;;OAGG;IACH,mFAAkB,CAAA;AACpB,CAAC,EAhBW,gBAAgB,KAAhB,gBAAgB,QAgB3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanAttributes } from './attributes';\nimport { TraceState } from './trace_state';\n\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 */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.d.ts new file mode 100644 index 0000000..c804568 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.d.ts @@ -0,0 +1,23 @@ +import { TimeInput } from '../common/Time'; +import { SpanAttributes } from './attributes'; +import { Link } from './link'; +import { SpanKind } from './span_kind'; +/** + * Options needed for span creation + */ +export interface SpanOptions { + /** + * The SpanKind of a span + * @default {@link SpanKind.INTERNAL} + */ + kind?: SpanKind; + /** A span's attributes */ + attributes?: SpanAttributes; + /** {@link Link}s span to other spans */ + links?: Link[]; + /** A manually specified start time for the created `Span` object. */ + startTime?: TimeInput; + /** The new span should be a root span. (Ignore parent from context). */ + root?: boolean; +} +//# sourceMappingURL=SpanOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.js new file mode 100644 index 0000000..06b42b1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=SpanOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.js.map new file mode 100644 index 0000000..9132a33 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SpanOptions.js","sourceRoot":"","sources":["../../../src/trace/SpanOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { Link } from './link';\nimport { SpanKind } from './span_kind';\n\n/**\n * Options needed for span creation\n */\nexport interface SpanOptions {\n /**\n * The SpanKind of a span\n * @default {@link SpanKind.INTERNAL}\n */\n kind?: SpanKind;\n\n /** A span's attributes */\n attributes?: SpanAttributes;\n\n /** {@link Link}s span to other spans */\n links?: Link[];\n\n /** A manually specified start time for the created `Span` object. */\n startTime?: TimeInput;\n\n /** The new span should be a root span. (Ignore parent from context). */\n root?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/attributes.d.ts new file mode 100644 index 0000000..a2a5d2a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/attributes.d.ts @@ -0,0 +1,10 @@ +import { Attributes, AttributeValue } from '../common/Attributes'; +/** + * @deprecated please use {@link Attributes} + */ +export declare type SpanAttributes = Attributes; +/** + * @deprecated please use {@link AttributeValue} + */ +export declare type SpanAttributeValue = AttributeValue; +//# sourceMappingURL=attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/attributes.js new file mode 100644 index 0000000..6f1b9a3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/attributes.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/attributes.js.map new file mode 100644 index 0000000..2b02be7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/trace/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, AttributeValue } from '../common/Attributes';\n\n/**\n * @deprecated please use {@link Attributes}\n */\nexport type SpanAttributes = Attributes;\n\n/**\n * @deprecated please use {@link AttributeValue}\n */\nexport type SpanAttributeValue = AttributeValue;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/context-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/context-utils.d.ts new file mode 100644 index 0000000..f35f794 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/context-utils.d.ts @@ -0,0 +1,41 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanContext } from './span_context'; +/** + * Return the span if one exists + * + * @param context context to get span from + */ +export declare function getSpan(context: Context): Span | undefined; +/** + * Gets the span from the current context, if one exists. + */ +export declare function getActiveSpan(): Span | undefined; +/** + * Set the span on a context + * + * @param context context to use as parent + * @param span span to set active + */ +export declare function setSpan(context: Context, span: Span): Context; +/** + * Remove current span stored in the context + * + * @param context context to delete span from + */ +export declare function deleteSpan(context: Context): Context; +/** + * Wrap span context in a NoopSpan and set as span in a new + * context + * + * @param context context to set active span on + * @param spanContext span context to be wrapped + */ +export declare function setSpanContext(context: Context, spanContext: SpanContext): Context; +/** + * Get the span context of the span if it exists. + * + * @param context context to get values from + */ +export declare function getSpanContext(context: Context): SpanContext | undefined; +//# sourceMappingURL=context-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js new file mode 100644 index 0000000..4d776c3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js @@ -0,0 +1,73 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createContextKey } from '../context/context'; +import { NonRecordingSpan } from './NonRecordingSpan'; +import { ContextAPI } from '../api/context'; +/** + * span key + */ +var SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN'); +/** + * Return the span if one exists + * + * @param context context to get span from + */ +export function getSpan(context) { + return context.getValue(SPAN_KEY) || undefined; +} +/** + * Gets the span from the current context, if one exists. + */ +export function getActiveSpan() { + return getSpan(ContextAPI.getInstance().active()); +} +/** + * Set the span on a context + * + * @param context context to use as parent + * @param span span to set active + */ +export function setSpan(context, span) { + return context.setValue(SPAN_KEY, span); +} +/** + * Remove current span stored in the context + * + * @param context context to delete span from + */ +export function deleteSpan(context) { + return context.deleteValue(SPAN_KEY); +} +/** + * Wrap span context in a NoopSpan and set as span in a new + * context + * + * @param context context to set active span on + * @param spanContext span context to be wrapped + */ +export function setSpanContext(context, spanContext) { + return setSpan(context, new NonRecordingSpan(spanContext)); +} +/** + * Get the span context of the span if it exists. + * + * @param context context to get values from + */ +export function getSpanContext(context) { + var _a; + return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext(); +} +//# sourceMappingURL=context-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js.map new file mode 100644 index 0000000..86103d1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context-utils.js","sourceRoot":"","sources":["../../../src/trace/context-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,IAAM,QAAQ,GAAG,gBAAgB,CAAC,gCAAgC,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAQ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU,IAAI,SAAS,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,OAAgB,EAAE,IAAU;IAClD,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAgB,EAChB,WAAwB;IAExB,OAAO,OAAO,CAAC,OAAO,EAAE,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;;IAC7C,OAAO,MAAA,OAAO,CAAC,OAAO,CAAC,0CAAE,WAAW,EAAE,CAAC;AACzC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n\n/**\n * span key\n */\nconst SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context: Context): Span | undefined {\n return (context.getValue(SPAN_KEY) as Span) || undefined;\n}\n\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan(): Span | undefined {\n return getSpan(ContextAPI.getInstance().active());\n}\n\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 */\nexport function setSpan(context: Context, span: Span): Context {\n return context.setValue(SPAN_KEY, span);\n}\n\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context: Context): Context {\n return context.deleteValue(SPAN_KEY);\n}\n\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 */\nexport function setSpanContext(\n context: Context,\n spanContext: SpanContext\n): Context {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context: Context): SpanContext | undefined {\n return getSpan(context)?.spanContext();\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.d.ts new file mode 100644 index 0000000..9ed5ecb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.d.ts @@ -0,0 +1,22 @@ +import { TraceState } from '../trace_state'; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +export declare class TraceStateImpl implements TraceState { + private _internalState; + constructor(rawTraceState?: string); + set(key: string, value: string): TraceStateImpl; + unset(key: string): TraceStateImpl; + get(key: string): string | undefined; + serialize(): string; + private _parse; + private _keys; + private _clone; +} +//# sourceMappingURL=tracestate-impl.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.js new file mode 100644 index 0000000..7514069 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.js @@ -0,0 +1,102 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { validateKey, validateValue } from './tracestate-validators'; +var MAX_TRACE_STATE_ITEMS = 32; +var MAX_TRACE_STATE_LEN = 512; +var LIST_MEMBERS_SEPARATOR = ','; +var LIST_MEMBER_KEY_VALUE_SPLITTER = '='; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +var TraceStateImpl = /** @class */ (function () { + function TraceStateImpl(rawTraceState) { + this._internalState = new Map(); + if (rawTraceState) + this._parse(rawTraceState); + } + TraceStateImpl.prototype.set = function (key, value) { + // TODO: Benchmark the different approaches(map vs list) and + // use the faster one. + var traceState = this._clone(); + if (traceState._internalState.has(key)) { + traceState._internalState.delete(key); + } + traceState._internalState.set(key, value); + return traceState; + }; + TraceStateImpl.prototype.unset = function (key) { + var traceState = this._clone(); + traceState._internalState.delete(key); + return traceState; + }; + TraceStateImpl.prototype.get = function (key) { + return this._internalState.get(key); + }; + TraceStateImpl.prototype.serialize = function () { + var _this = this; + return this._keys() + .reduce(function (agg, key) { + agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + _this.get(key)); + return agg; + }, []) + .join(LIST_MEMBERS_SEPARATOR); + }; + TraceStateImpl.prototype._parse = function (rawTraceState) { + if (rawTraceState.length > MAX_TRACE_STATE_LEN) + return; + this._internalState = rawTraceState + .split(LIST_MEMBERS_SEPARATOR) + .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning + .reduce(function (agg, part) { + var listMember = part.trim(); // Optional Whitespace (OWS) handling + var i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER); + if (i !== -1) { + var key = listMember.slice(0, i); + var value = listMember.slice(i + 1, part.length); + if (validateKey(key) && validateValue(value)) { + agg.set(key, value); + } + else { + // TODO: Consider to add warning log + } + } + return agg; + }, new Map()); + // Because of the reverse() requirement, trunc must be done after map is created + if (this._internalState.size > MAX_TRACE_STATE_ITEMS) { + this._internalState = new Map(Array.from(this._internalState.entries()) + .reverse() // Use reverse same as original tracestate parse chain + .slice(0, MAX_TRACE_STATE_ITEMS)); + } + }; + TraceStateImpl.prototype._keys = function () { + return Array.from(this._internalState.keys()).reverse(); + }; + TraceStateImpl.prototype._clone = function () { + var traceState = new TraceStateImpl(); + traceState._internalState = new Map(this._internalState); + return traceState; + }; + return TraceStateImpl; +}()); +export { TraceStateImpl }; +//# sourceMappingURL=tracestate-impl.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.js.map new file mode 100644 index 0000000..102cb4f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracestate-impl.js","sourceRoot":"","sources":["../../../../src/trace/internal/tracestate-impl.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TraceState } from '../trace_state';\nimport { validateKey, validateValue } from './tracestate-validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\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 */\nexport class TraceStateImpl implements TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceStateImpl {\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\n unset(key: string): TraceStateImpl {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return this._keys()\n .reduce((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) 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: Map, part: string) => {\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 (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\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(\n 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 }\n\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceStateImpl {\n const traceState = new TraceStateImpl();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.d.ts new file mode 100644 index 0000000..4917f99 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.d.ts @@ -0,0 +1,15 @@ +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +export declare function validateKey(key: string): boolean; +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +export declare function validateValue(value: string): boolean; +//# sourceMappingURL=tracestate-validators.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.js new file mode 100644 index 0000000..1d3f14b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.js @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]'; +var VALID_KEY = "[a-z]" + VALID_KEY_CHAR_RANGE + "{0,255}"; +var VALID_VENDOR_KEY = "[a-z0-9]" + VALID_KEY_CHAR_RANGE + "{0,240}@[a-z]" + VALID_KEY_CHAR_RANGE + "{0,13}"; +var VALID_KEY_REGEX = new RegExp("^(?:" + VALID_KEY + "|" + VALID_VENDOR_KEY + ")$"); +var VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/; +var INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/; +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +export function validateKey(key) { + return VALID_KEY_REGEX.test(key); +} +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +export function validateValue(value) { + return (VALID_VALUE_BASE_REGEX.test(value) && + !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)); +} +//# sourceMappingURL=tracestate-validators.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.js.map new file mode 100644 index 0000000..72899fc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracestate-validators.js","sourceRoot":"","sources":["../../../../src/trace/internal/tracestate-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,IAAM,oBAAoB,GAAG,cAAc,CAAC;AAC5C,IAAM,SAAS,GAAG,UAAQ,oBAAoB,YAAS,CAAC;AACxD,IAAM,gBAAgB,GAAG,aAAW,oBAAoB,qBAAgB,oBAAoB,WAAQ,CAAC;AACrG,IAAM,eAAe,GAAG,IAAI,MAAM,CAAC,SAAO,SAAS,SAAI,gBAAgB,OAAI,CAAC,CAAC;AAC7E,IAAM,sBAAsB,GAAG,qBAAqB,CAAC;AACrD,IAAM,+BAA+B,GAAG,KAAK,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,CACL,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAC7C,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 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/**\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 */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\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 */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.d.ts new file mode 100644 index 0000000..e3b51fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.d.ts @@ -0,0 +1,3 @@ +import { TraceState } from '../trace_state'; +export declare function createTraceState(rawTraceState?: string): TraceState; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.js new file mode 100644 index 0000000..feea469 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TraceStateImpl } from './tracestate-impl'; +export function createTraceState(rawTraceState) { + return new TraceStateImpl(rawTraceState); +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.js.map new file mode 100644 index 0000000..91ba3d1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/trace/internal/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,UAAU,gBAAgB,CAAC,aAAsB;IACrD,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TraceState } from '../trace_state';\nimport { TraceStateImpl } from './tracestate-impl';\n\nexport function createTraceState(rawTraceState?: string): TraceState {\n return new TraceStateImpl(rawTraceState);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.d.ts new file mode 100644 index 0000000..e32dab9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.d.ts @@ -0,0 +1,5 @@ +import { SpanContext } from './span_context'; +export declare const INVALID_SPANID = "0000000000000000"; +export declare const INVALID_TRACEID = "00000000000000000000000000000000"; +export declare const INVALID_SPAN_CONTEXT: SpanContext; +//# sourceMappingURL=invalid-span-constants.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js new file mode 100644 index 0000000..36dc1d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js @@ -0,0 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TraceFlags } from './trace_flags'; +export var INVALID_SPANID = '0000000000000000'; +export var INVALID_TRACEID = '00000000000000000000000000000000'; +export var INVALID_SPAN_CONTEXT = { + traceId: INVALID_TRACEID, + spanId: INVALID_SPANID, + traceFlags: TraceFlags.NONE, +}; +//# sourceMappingURL=invalid-span-constants.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js.map new file mode 100644 index 0000000..970a3f4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"invalid-span-constants.js","sourceRoot":"","sources":["../../../src/trace/invalid-span-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,CAAC,IAAM,cAAc,GAAG,kBAAkB,CAAC;AACjD,MAAM,CAAC,IAAM,eAAe,GAAG,kCAAkC,CAAC;AAClE,MAAM,CAAC,IAAM,oBAAoB,GAAgB;IAC/C,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,UAAU,CAAC,IAAI;CAC5B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanContext } from './span_context';\nimport { TraceFlags } from './trace_flags';\n\nexport const INVALID_SPANID = '0000000000000000';\nexport const INVALID_TRACEID = '00000000000000000000000000000000';\nexport const INVALID_SPAN_CONTEXT: SpanContext = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/link.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/link.d.ts new file mode 100644 index 0000000..8fc0106 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/link.d.ts @@ -0,0 +1,26 @@ +import { SpanAttributes } from './attributes'; +import { SpanContext } from './span_context'; +/** + * A pointer from the current {@link Span} to another span in the same trace or + * in a different trace. + * Few examples of Link usage. + * 1. Batch Processing: A batch of elements may contain elements associated + * with one or more traces/spans. Since there can only be one parent + * SpanContext, Link is used to keep reference to SpanContext of all + * elements in the batch. + * 2. Public Endpoint: A SpanContext in incoming client request on a public + * endpoint is untrusted from service provider perspective. In such case it + * is advisable to start a new trace with appropriate sampling decision. + * However, it is desirable to associate incoming SpanContext to new trace + * initiated on service provider side so two traces (from Client and from + * Service Provider) can be correlated. + */ +export interface Link { + /** The {@link SpanContext} of a linked span. */ + context: SpanContext; + /** A set of {@link SpanAttributes} on the link. */ + attributes?: SpanAttributes; + /** Count of attributes of the link that were dropped due to collection limits */ + droppedAttributesCount?: number; +} +//# sourceMappingURL=link.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/link.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/link.js new file mode 100644 index 0000000..7c8accb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/link.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=link.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/link.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/link.js.map new file mode 100644 index 0000000..c10b714 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/link.js.map @@ -0,0 +1 @@ +{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/trace/link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanAttributes } from './attributes';\nimport { SpanContext } from './span_context';\n\n/**\n * A pointer from the current {@link Span} to another span in the same trace or\n * in a different trace.\n * Few examples of Link usage.\n * 1. Batch Processing: A batch of elements may contain elements associated\n * with one or more traces/spans. Since there can only be one parent\n * SpanContext, Link is used to keep reference to SpanContext of all\n * elements in the batch.\n * 2. Public Endpoint: A SpanContext in incoming client request on a public\n * endpoint is untrusted from service provider perspective. In such case it\n * is advisable to start a new trace with appropriate sampling decision.\n * However, it is desirable to associate incoming SpanContext to new trace\n * initiated on service provider side so two traces (from Client and from\n * Service Provider) can be correlated.\n */\nexport interface Link {\n /** The {@link SpanContext} of a linked span. */\n context: SpanContext;\n /** A set of {@link SpanAttributes} on the link. */\n attributes?: SpanAttributes;\n /** Count of attributes of the link that were dropped due to collection limits */\n droppedAttributesCount?: number;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span.d.ts new file mode 100644 index 0000000..28c6442 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span.d.ts @@ -0,0 +1,120 @@ +import { Exception } from '../common/Exception'; +import { TimeInput } from '../common/Time'; +import { SpanAttributes, SpanAttributeValue } from './attributes'; +import { SpanContext } from './span_context'; +import { SpanStatus } from './status'; +import { Link } from './link'; +/** + * An interface that represents a span. A span represents a single operation + * within a trace. Examples of span might include remote procedure calls or a + * in-process function calls to sub-components. A Trace has a single, top-level + * "root" Span that in turn may have zero or more child Spans, which in turn + * may have children. + * + * Spans are created by the {@link Tracer.startSpan} method. + */ +export interface Span { + /** + * Returns the {@link SpanContext} object associated with this Span. + * + * Get an immutable, serializable identifier for this span that can be used + * to create new child spans. Returned SpanContext is usable even after the + * span ends. + * + * @returns the SpanContext object associated with this Span. + */ + spanContext(): SpanContext; + /** + * Sets an attribute to the span. + * + * Sets a single Attribute with the key and value passed as arguments. + * + * @param key the key for this attribute. + * @param value the value for this attribute. Setting a value null or + * undefined is invalid and will result in undefined behavior. + */ + setAttribute(key: string, value: SpanAttributeValue): this; + /** + * Sets attributes to the span. + * + * @param attributes the attributes that will be added. + * null or undefined attribute values + * are invalid and will result in undefined behavior. + */ + setAttributes(attributes: SpanAttributes): this; + /** + * Adds an event to the Span. + * + * @param name the name of the event. + * @param [attributesOrStartTime] the attributes that will be added; these are + * associated with this event. Can be also a start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [startTime] start time of the event. + */ + addEvent(name: string, attributesOrStartTime?: SpanAttributes | TimeInput, startTime?: TimeInput): this; + /** + * Adds a single link to the span. + * + * Links added after the creation will not affect the sampling decision. + * It is preferred span links be added at span creation. + * + * @param link the link to add. + */ + addLink(link: Link): this; + /** + * Adds multiple links to the span. + * + * Links added after the creation will not affect the sampling decision. + * It is preferred span links be added at span creation. + * + * @param links the links to add. + */ + addLinks(links: Link[]): this; + /** + * Sets a status to the span. If used, this will override the default Span + * status. Default is {@link SpanStatusCode.UNSET}. SetStatus overrides the value + * of previous calls to SetStatus on the Span. + * + * @param status the SpanStatus to set. + */ + setStatus(status: SpanStatus): this; + /** + * Updates the Span name. + * + * This will override the name provided via {@link Tracer.startSpan}. + * + * Upon this update, any sampling behavior based on Span name will depend on + * the implementation. + * + * @param name the Span name. + */ + updateName(name: string): this; + /** + * Marks the end of Span execution. + * + * Call to End of a Span MUST not have any effects on child spans. Those may + * still be running and can be ended later. + * + * Do not return `this`. The Span generally should not be used after it + * is ended so chaining is not desired in this context. + * + * @param [endTime] the time to set as Span's end time. If not provided, + * use the current time as the span's end time. + */ + end(endTime?: TimeInput): void; + /** + * Returns the flag whether this span will be recorded. + * + * @returns true if this Span is active and recording information like events + * with the `AddEvent` operation and attributes using `setAttributes`. + */ + isRecording(): boolean; + /** + * Sets exception as a span event + * @param exception the exception the only accepted values are string or Error + * @param [time] the time to set as Span's event time. If not provided, + * use the current time. + */ + recordException(exception: Exception, time?: TimeInput): void; +} +//# sourceMappingURL=span.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span.js new file mode 100644 index 0000000..f41c7f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=span.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span.js.map new file mode 100644 index 0000000..f9a1e32 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span.js.map @@ -0,0 +1 @@ +{"version":3,"file":"span.js","sourceRoot":"","sources":["../../../src/trace/span.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes, SpanAttributeValue } from './attributes';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\n/**\n * An interface that represents a span. A span represents a single operation\n * within a trace. Examples of span might include remote procedure calls or a\n * in-process function calls to sub-components. A Trace has a single, top-level\n * \"root\" Span that in turn may have zero or more child Spans, which in turn\n * may have children.\n *\n * Spans are created by the {@link Tracer.startSpan} method.\n */\nexport interface Span {\n /**\n * Returns the {@link SpanContext} object associated with this Span.\n *\n * Get an immutable, serializable identifier for this span that can be used\n * to create new child spans. Returned SpanContext is usable even after the\n * span ends.\n *\n * @returns the SpanContext object associated with this Span.\n */\n spanContext(): SpanContext;\n\n /**\n * Sets an attribute to the span.\n *\n * Sets a single Attribute with the key and value passed as arguments.\n *\n * @param key the key for this attribute.\n * @param value the value for this attribute. Setting a value null or\n * undefined is invalid and will result in undefined behavior.\n */\n setAttribute(key: string, value: SpanAttributeValue): this;\n\n /**\n * Sets attributes to the span.\n *\n * @param attributes the attributes that will be added.\n * null or undefined attribute values\n * are invalid and will result in undefined behavior.\n */\n setAttributes(attributes: SpanAttributes): this;\n\n /**\n * Adds an event to the Span.\n *\n * @param name the name of the event.\n * @param [attributesOrStartTime] the attributes that will be added; these are\n * associated with this event. Can be also a start time\n * if type is {@type TimeInput} and 3rd param is undefined\n * @param [startTime] start time of the event.\n */\n addEvent(\n name: string,\n attributesOrStartTime?: SpanAttributes | TimeInput,\n startTime?: TimeInput\n ): this;\n\n /**\n * Adds a single link to the span.\n *\n * Links added after the creation will not affect the sampling decision.\n * It is preferred span links be added at span creation.\n *\n * @param link the link to add.\n */\n addLink(link: Link): this;\n\n /**\n * Adds multiple links to the span.\n *\n * Links added after the creation will not affect the sampling decision.\n * It is preferred span links be added at span creation.\n *\n * @param links the links to add.\n */\n addLinks(links: Link[]): this;\n\n /**\n * Sets a status to the span. If used, this will override the default Span\n * status. Default is {@link SpanStatusCode.UNSET}. SetStatus overrides the value\n * of previous calls to SetStatus on the Span.\n *\n * @param status the SpanStatus to set.\n */\n setStatus(status: SpanStatus): this;\n\n /**\n * Updates the Span name.\n *\n * This will override the name provided via {@link Tracer.startSpan}.\n *\n * Upon this update, any sampling behavior based on Span name will depend on\n * the implementation.\n *\n * @param name the Span name.\n */\n updateName(name: string): this;\n\n /**\n * Marks the end of Span execution.\n *\n * Call to End of a Span MUST not have any effects on child spans. Those may\n * still be running and can be ended later.\n *\n * Do not return `this`. The Span generally should not be used after it\n * is ended so chaining is not desired in this context.\n *\n * @param [endTime] the time to set as Span's end time. If not provided,\n * use the current time as the span's end time.\n */\n end(endTime?: TimeInput): void;\n\n /**\n * Returns the flag whether this span will be recorded.\n *\n * @returns true if this Span is active and recording information like events\n * with the `AddEvent` operation and attributes using `setAttributes`.\n */\n isRecording(): boolean;\n\n /**\n * Sets exception as a span event\n * @param exception the exception the only accepted values are string or Error\n * @param [time] the time to set as Span's event time. If not provided,\n * use the current time.\n */\n recordException(exception: Exception, time?: TimeInput): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_context.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_context.d.ts new file mode 100644 index 0000000..f30933a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_context.d.ts @@ -0,0 +1,53 @@ +import { TraceState } from './trace_state'; +/** + * A SpanContext represents the portion of a {@link Span} which must be + * serialized and propagated along side of a {@link Baggage}. + */ +export interface SpanContext { + /** + * The ID of the trace that this span belongs to. It is worldwide unique + * with practically sufficient probability by being made as 16 randomly + * generated bytes, encoded as a 32 lowercase hex characters corresponding to + * 128 bits. + */ + traceId: string; + /** + * The ID of the Span. It is globally unique with practically sufficient + * probability by being made as 8 randomly generated bytes, encoded as a 16 + * lowercase hex characters corresponding to 64 bits. + */ + spanId: string; + /** + * Only true if the SpanContext was propagated from a remote parent. + */ + isRemote?: boolean; + /** + * Trace flags to propagate. + * + * It is represented as 1 byte (bitmap). Bit to represent whether trace is + * sampled or not. When set, the least significant bit documents that the + * caller may have recorded trace data. A caller who does not record trace + * data out-of-band leaves this flag unset. + * + * see {@link TraceFlags} for valid flag values. + */ + traceFlags: number; + /** + * Tracing-system-specific info to propagate. + * + * The tracestate field value is a `list` as defined below. The `list` is a + * series of `list-members` separated by commas `,`, and a list-member is a + * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs + * surrounding `list-members` are ignored. There can be a maximum of 32 + * `list-members` in a `list`. + * More Info: https://www.w3.org/TR/trace-context/#tracestate-field + * + * Examples: + * Single tracing system (generic format): + * tracestate: rojo=00f067aa0ba902b7 + * Multiple tracing systems (with different formatting): + * tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE + */ + traceState?: TraceState; +} +//# sourceMappingURL=span_context.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_context.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_context.js new file mode 100644 index 0000000..1bb88b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_context.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=span_context.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_context.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_context.js.map new file mode 100644 index 0000000..dbf0bfe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"span_context.js","sourceRoot":"","sources":["../../../src/trace/span_context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TraceState } from './trace_state';\n\n/**\n * A SpanContext represents the portion of a {@link Span} which must be\n * serialized and propagated along side of a {@link Baggage}.\n */\nexport interface SpanContext {\n /**\n * The ID of the trace that this span belongs to. It is worldwide unique\n * with practically sufficient probability by being made as 16 randomly\n * generated bytes, encoded as a 32 lowercase hex characters corresponding to\n * 128 bits.\n */\n traceId: string;\n /**\n * The ID of the Span. It is globally unique with practically sufficient\n * probability by being made as 8 randomly generated bytes, encoded as a 16\n * lowercase hex characters corresponding to 64 bits.\n */\n spanId: string;\n /**\n * Only true if the SpanContext was propagated from a remote parent.\n */\n isRemote?: boolean;\n /**\n * Trace flags to propagate.\n *\n * It is represented as 1 byte (bitmap). Bit to represent whether trace is\n * sampled or not. When set, the least significant bit documents that the\n * caller may have recorded trace data. A caller who does not record trace\n * data out-of-band leaves this flag unset.\n *\n * see {@link TraceFlags} for valid flag values.\n */\n traceFlags: number;\n /**\n * Tracing-system-specific info to propagate.\n *\n * The tracestate field value is a `list` as defined below. The `list` is a\n * series of `list-members` separated by commas `,`, and a list-member is a\n * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs\n * surrounding `list-members` are ignored. There can be a maximum of 32\n * `list-members` in a `list`.\n * More Info: https://www.w3.org/TR/trace-context/#tracestate-field\n *\n * Examples:\n * Single tracing system (generic format):\n * tracestate: rojo=00f067aa0ba902b7\n * Multiple tracing systems (with different formatting):\n * tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE\n */\n traceState?: TraceState;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_kind.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_kind.d.ts new file mode 100644 index 0000000..a89846f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_kind.d.ts @@ -0,0 +1,27 @@ +export declare enum SpanKind { + /** Default value. Indicates that the span is used internally. */ + INTERNAL = 0, + /** + * Indicates that the span covers server-side handling of an RPC or other + * remote request. + */ + SERVER = 1, + /** + * Indicates that the span covers the client-side wrapper around an RPC or + * other remote request. + */ + CLIENT = 2, + /** + * Indicates that the span describes producer sending a message to a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + PRODUCER = 3, + /** + * Indicates that the span describes consumer receiving a message from a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + CONSUMER = 4 +} +//# sourceMappingURL=span_kind.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_kind.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_kind.js new file mode 100644 index 0000000..1119df9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_kind.js @@ -0,0 +1,43 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var SpanKind; +(function (SpanKind) { + /** Default value. Indicates that the span is used internally. */ + SpanKind[SpanKind["INTERNAL"] = 0] = "INTERNAL"; + /** + * Indicates that the span covers server-side handling of an RPC or other + * remote request. + */ + SpanKind[SpanKind["SERVER"] = 1] = "SERVER"; + /** + * Indicates that the span covers the client-side wrapper around an RPC or + * other remote request. + */ + SpanKind[SpanKind["CLIENT"] = 2] = "CLIENT"; + /** + * Indicates that the span describes producer sending a message to a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + SpanKind[SpanKind["PRODUCER"] = 3] = "PRODUCER"; + /** + * Indicates that the span describes consumer receiving a message from a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + SpanKind[SpanKind["CONSUMER"] = 4] = "CONSUMER"; +})(SpanKind || (SpanKind = {})); +//# sourceMappingURL=span_kind.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_kind.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_kind.js.map new file mode 100644 index 0000000..deb6be7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/span_kind.js.map @@ -0,0 +1 @@ +{"version":3,"file":"span_kind.js","sourceRoot":"","sources":["../../../src/trace/span_kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAN,IAAY,QA6BX;AA7BD,WAAY,QAAQ;IAClB,iEAAiE;IACjE,+CAAY,CAAA;IAEZ;;;OAGG;IACH,2CAAU,CAAA;IAEV;;;OAGG;IACH,2CAAU,CAAA;IAEV;;;;OAIG;IACH,+CAAY,CAAA;IAEZ;;;;OAIG;IACH,+CAAY,CAAA;AACd,CAAC,EA7BW,QAAQ,KAAR,QAAQ,QA6BnB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum SpanKind {\n /** Default value. Indicates that the span is used internally. */\n INTERNAL = 0,\n\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SERVER = 1,\n\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n CLIENT = 2,\n\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 PRODUCER = 3,\n\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 CONSUMER = 4,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.d.ts new file mode 100644 index 0000000..f191111 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.d.ts @@ -0,0 +1,17 @@ +import { Span } from './span'; +import { SpanContext } from './span_context'; +export declare function isValidTraceId(traceId: string): boolean; +export declare function isValidSpanId(spanId: string): boolean; +/** + * Returns true if this {@link SpanContext} is valid. + * @return true if this {@link SpanContext} is valid. + */ +export declare function isSpanContextValid(spanContext: SpanContext): boolean; +/** + * Wrap the given {@link SpanContext} in a new non-recording {@link Span} + * + * @param spanContext span context to be wrapped + * @returns a new non-recording {@link Span} with the provided context + */ +export declare function wrapSpanContext(spanContext: SpanContext): Span; +//# sourceMappingURL=spancontext-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js new file mode 100644 index 0000000..88545bb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js @@ -0,0 +1,42 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants'; +import { NonRecordingSpan } from './NonRecordingSpan'; +var VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i; +var VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i; +export function isValidTraceId(traceId) { + return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID; +} +export function isValidSpanId(spanId) { + return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID; +} +/** + * Returns true if this {@link SpanContext} is valid. + * @return true if this {@link SpanContext} is valid. + */ +export function isSpanContextValid(spanContext) { + return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)); +} +/** + * Wrap the given {@link SpanContext} in a new non-recording {@link Span} + * + * @param spanContext span context to be wrapped + * @returns a new non-recording {@link Span} with the provided context + */ +export function wrapSpanContext(spanContext) { + return new NonRecordingSpan(spanContext); +} +//# sourceMappingURL=spancontext-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js.map new file mode 100644 index 0000000..a4dc6c2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spancontext-utils.js","sourceRoot":"","sources":["../../../src/trace/spancontext-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,IAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAChD,IAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAE7C,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,eAAe,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,cAAc,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAwB;IACzD,OAAO,CACL,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CACzE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,WAAwB;IACtD,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC3C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\n\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\n\nexport function isValidTraceId(traceId: string): boolean {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\n\nexport function isValidSpanId(spanId: string): boolean {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n return (\n isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n );\n}\n\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 */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n return new NonRecordingSpan(spanContext);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/status.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/status.d.ts new file mode 100644 index 0000000..ab19a68 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/status.d.ts @@ -0,0 +1,25 @@ +export interface SpanStatus { + /** The status code of this message. */ + code: SpanStatusCode; + /** A developer-facing error message. */ + message?: string; +} +/** + * An enumeration of status codes. + */ +export declare enum SpanStatusCode { + /** + * The default status. + */ + UNSET = 0, + /** + * The operation has been validated by an Application developer or + * Operator to have completed successfully. + */ + OK = 1, + /** + * The operation contains an error. + */ + ERROR = 2 +} +//# sourceMappingURL=status.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/status.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/status.js new file mode 100644 index 0000000..5ee55e4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/status.js @@ -0,0 +1,20 @@ +/** + * An enumeration of status codes. + */ +export var SpanStatusCode; +(function (SpanStatusCode) { + /** + * The default status. + */ + SpanStatusCode[SpanStatusCode["UNSET"] = 0] = "UNSET"; + /** + * The operation has been validated by an Application developer or + * Operator to have completed successfully. + */ + SpanStatusCode[SpanStatusCode["OK"] = 1] = "OK"; + /** + * The operation contains an error. + */ + SpanStatusCode[SpanStatusCode["ERROR"] = 2] = "ERROR"; +})(SpanStatusCode || (SpanStatusCode = {})); +//# sourceMappingURL=status.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/status.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/status.js.map new file mode 100644 index 0000000..af7e7d7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/status.js.map @@ -0,0 +1 @@ +{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/trace/status.ts"],"names":[],"mappings":"AAsBA;;GAEG;AACH,MAAM,CAAN,IAAY,cAcX;AAdD,WAAY,cAAc;IACxB;;OAEG;IACH,qDAAS,CAAA;IACT;;;OAGG;IACH,+CAAM,CAAA;IACN;;OAEG;IACH,qDAAS,CAAA;AACX,CAAC,EAdW,cAAc,KAAd,cAAc,QAczB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport interface SpanStatus {\n /** The status code of this message. */\n code: SpanStatusCode;\n /** A developer-facing error message. */\n message?: string;\n}\n\n/**\n * An enumeration of status codes.\n */\nexport enum SpanStatusCode {\n /**\n * The default status.\n */\n UNSET = 0,\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n OK = 1,\n /**\n * The operation contains an error.\n */\n ERROR = 2,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.d.ts new file mode 100644 index 0000000..11288ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.d.ts @@ -0,0 +1,7 @@ +export declare enum TraceFlags { + /** Represents no flag set. */ + NONE = 0, + /** Bit to represent whether trace is sampled in trace flags. */ + SAMPLED = 1 +} +//# sourceMappingURL=trace_flags.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js new file mode 100644 index 0000000..8a7b000 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var TraceFlags; +(function (TraceFlags) { + /** Represents no flag set. */ + TraceFlags[TraceFlags["NONE"] = 0] = "NONE"; + /** Bit to represent whether trace is sampled in trace flags. */ + TraceFlags[TraceFlags["SAMPLED"] = 1] = "SAMPLED"; +})(TraceFlags || (TraceFlags = {})); +//# sourceMappingURL=trace_flags.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js.map new file mode 100644 index 0000000..2ea8680 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace_flags.js","sourceRoot":"","sources":["../../../src/trace/trace_flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,8BAA8B;IAC9B,2CAAU,CAAA;IACV,gEAAgE;IAChE,iDAAkB,CAAA;AACpB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum TraceFlags {\n /** Represents no flag set. */\n NONE = 0x0,\n /** Bit to represent whether trace is sampled in trace flags. */\n SAMPLED = 0x1 << 0,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_state.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_state.d.ts new file mode 100644 index 0000000..f275b8b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_state.d.ts @@ -0,0 +1,38 @@ +export interface TraceState { + /** + * Create a new TraceState which inherits from this TraceState and has the + * given key set. + * The new entry will always be added in the front of the list of states. + * + * @param key key of the TraceState entry. + * @param value value of the TraceState entry. + */ + set(key: string, value: string): TraceState; + /** + * Return a new TraceState which inherits from this TraceState but does not + * contain the given key. + * + * @param key the key for the TraceState entry to be removed. + */ + unset(key: string): TraceState; + /** + * Returns the value to which the specified key is mapped, or `undefined` if + * this map contains no mapping for the key. + * + * @param key with which the specified value is to be associated. + * @returns the value to which the specified key is mapped, or `undefined` if + * this map contains no mapping for the key. + */ + get(key: string): string | undefined; + /** + * Serializes the TraceState to a `list` as defined below. The `list` is a + * series of `list-members` separated by commas `,`, and a list-member is a + * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs + * surrounding `list-members` are ignored. There can be a maximum of 32 + * `list-members` in a `list`. + * + * @returns the serialized string. + */ + serialize(): string; +} +//# sourceMappingURL=trace_state.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_state.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_state.js new file mode 100644 index 0000000..a6c368f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_state.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=trace_state.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_state.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_state.js.map new file mode 100644 index 0000000..64a3d7a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/trace_state.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace_state.js","sourceRoot":"","sources":["../../../src/trace/trace_state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface TraceState {\n /**\n * Create a new TraceState which inherits from this TraceState and has the\n * given key set.\n * The new entry will always be added in the front of the list of states.\n *\n * @param key key of the TraceState entry.\n * @param value value of the TraceState entry.\n */\n set(key: string, value: string): TraceState;\n\n /**\n * Return a new TraceState which inherits from this TraceState but does not\n * contain the given key.\n *\n * @param key the key for the TraceState entry to be removed.\n */\n unset(key: string): TraceState;\n\n /**\n * Returns the value to which the specified key is mapped, or `undefined` if\n * this map contains no mapping for the key.\n *\n * @param key with which the specified value is to be associated.\n * @returns the value to which the specified key is mapped, or `undefined` if\n * this map contains no mapping for the key.\n */\n get(key: string): string | undefined;\n\n // TODO: Consider to add support for merging an object as well by also\n // accepting a single internalTraceState argument similar to the constructor.\n\n /**\n * Serializes the TraceState to a `list` as defined below. The `list` is a\n * series of `list-members` separated by commas `,`, and a list-member is a\n * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs\n * surrounding `list-members` are ignored. There can be a maximum of 32\n * `list-members` in a `list`.\n *\n * @returns the serialized string.\n */\n serialize(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer.d.ts new file mode 100644 index 0000000..2509089 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer.d.ts @@ -0,0 +1,71 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanOptions } from './SpanOptions'; +/** + * Tracer provides an interface for creating {@link Span}s. + */ +export interface Tracer { + /** + * Starts a new {@link Span}. Start the span without setting it on context. + * + * This method do NOT modify the current Context. + * + * @param name The name of the span + * @param [options] SpanOptions used for span creation + * @param [context] Context to use to extract parent + * @returns Span The newly created span + * @example + * const span = tracer.startSpan('op'); + * span.setAttribute('key', 'value'); + * span.end(); + */ + startSpan(name: string, options?: SpanOptions, context?: Context): Span; + /** + * Starts a new {@link Span} and calls the given function passing it the + * created span as first argument. + * Additionally the new span gets set in context and this context is activated + * for the duration of the function call. + * + * @param name The name of the span + * @param [options] SpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns return value of fn + * @example + * const something = tracer.startActiveSpan('op', span => { + * try { + * do some work + * span.setStatus({code: SpanStatusCode.OK}); + * return something; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } finally { + * span.end(); + * } + * }); + * + * @example + * const span = tracer.startActiveSpan('op', span => { + * try { + * do some work + * return span; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } + * }); + * do some more work + * span.end(); + */ + startActiveSpan unknown>(name: string, fn: F): ReturnType; + startActiveSpan unknown>(name: string, options: SpanOptions, fn: F): ReturnType; + startActiveSpan unknown>(name: string, options: SpanOptions, context: Context, fn: F): ReturnType; +} +//# sourceMappingURL=tracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer.js new file mode 100644 index 0000000..ad066dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=tracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer.js.map new file mode 100644 index 0000000..77f6ae9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../src/trace/tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\n\n/**\n * Tracer provides an interface for creating {@link Span}s.\n */\nexport interface Tracer {\n /**\n * Starts a new {@link Span}. Start the span without setting it on context.\n *\n * This method do NOT modify the current Context.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @returns Span The newly created span\n * @example\n * const span = tracer.startSpan('op');\n * span.setAttribute('key', 'value');\n * span.end();\n */\n startSpan(name: string, options?: SpanOptions, context?: Context): Span;\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally the new span gets set in context and this context is activated\n * for the duration of the function call.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * span.setStatus({code: SpanStatusCode.OK});\n * return something;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * } finally {\n * span.end();\n * }\n * });\n *\n * @example\n * const span = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * return span;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * }\n * });\n * do some more work\n * span.end();\n */\n startActiveSpan unknown>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan unknown>(\n name: string,\n options: SpanOptions,\n fn: F\n ): ReturnType;\n startActiveSpan unknown>(\n name: string,\n options: SpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.d.ts new file mode 100644 index 0000000..f3bbccf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.d.ts @@ -0,0 +1,10 @@ +/** + * An interface describes additional metadata of a tracer. + */ +export interface TracerOptions { + /** + * The schemaUrl of the tracer or instrumentation library + */ + schemaUrl?: string; +} +//# sourceMappingURL=tracer_options.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.js new file mode 100644 index 0000000..470a3a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=tracer_options.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.js.map new file mode 100644 index 0000000..70365af --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracer_options.js","sourceRoot":"","sources":["../../../src/trace/tracer_options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * An interface describes additional metadata of a tracer.\n */\nexport interface TracerOptions {\n /**\n * The schemaUrl of the tracer or instrumentation library\n */\n schemaUrl?: string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.d.ts new file mode 100644 index 0000000..9b2f7a9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.d.ts @@ -0,0 +1,21 @@ +import { Tracer } from './tracer'; +import { TracerOptions } from './tracer_options'; +/** + * A registry for creating named {@link Tracer}s. + */ +export interface TracerProvider { + /** + * Returns a Tracer, creating one if one with the given name and version is + * not already created. + * + * This function may return different Tracer types (e.g. + * {@link NoopTracerProvider} vs. a functional tracer). + * + * @param name The name of the tracer or instrumentation library. + * @param version The version of the tracer or instrumentation library. + * @param options The options of the tracer or instrumentation library. + * @returns Tracer A Tracer with the given name and version + */ + getTracer(name: string, version?: string, options?: TracerOptions): Tracer; +} +//# sourceMappingURL=tracer_provider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.js new file mode 100644 index 0000000..adf432a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=tracer_provider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.js.map new file mode 100644 index 0000000..bfc1cbd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracer_provider.js","sourceRoot":"","sources":["../../../src/trace/tracer_provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\n/**\n * A registry for creating named {@link Tracer}s.\n */\nexport interface TracerProvider {\n /**\n * Returns a Tracer, creating one if one with the given name and version is\n * not already created.\n *\n * This function may return different Tracer types (e.g.\n * {@link NoopTracerProvider} vs. a functional tracer).\n *\n * @param name The name of the tracer or instrumentation library.\n * @param version The version of the tracer or instrumentation library.\n * @param options The options of the tracer or instrumentation library.\n * @returns Tracer A Tracer with the given name and version\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/version.d.ts new file mode 100644 index 0000000..40f0365 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "1.9.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/version.js new file mode 100644 index 0000000..b0e29e5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export var VERSION = '1.9.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/version.js.map new file mode 100644 index 0000000..36b10eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esm/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,IAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.9.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/context.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/context.d.ts new file mode 100644 index 0000000..61caee8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/context.d.ts @@ -0,0 +1,41 @@ +import { Context, ContextManager } from '../context/types'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Context API + */ +export declare class ContextAPI { + private static _instance?; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Context API */ + static getInstance(): ContextAPI; + /** + * Set the current context manager. + * + * @returns true if the context manager was successfully registered, else false + */ + setGlobalContextManager(contextManager: ContextManager): boolean; + /** + * Get the currently active context + */ + active(): Context; + /** + * Execute a function with an active context + * + * @param context context to be active during function execution + * @param fn function to execute in a context + * @param thisArg optional receiver to be used for calling fn + * @param args optional arguments forwarded to fn + */ + with ReturnType>(context: Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + /** + * Bind a context to a target function or event emitter + * + * @param context context to bind to the event emitter or function. Defaults to the currently active context + * @param target function or event emitter to bind + */ + bind(context: Context, target: T): T; + private _getContextManager; + /** Disable and remove the global context manager */ + disable(): void; +} +//# sourceMappingURL=context.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/context.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/context.js new file mode 100644 index 0000000..c672a41 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/context.js @@ -0,0 +1,77 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NoopContextManager } from '../context/NoopContextManager'; +import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +import { DiagAPI } from './diag'; +const API_NAME = 'context'; +const NOOP_CONTEXT_MANAGER = new NoopContextManager(); +/** + * Singleton object which represents the entry point to the OpenTelemetry Context API + */ +export class ContextAPI { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + constructor() { } + /** Get the singleton instance of the Context API */ + static getInstance() { + if (!this._instance) { + this._instance = new ContextAPI(); + } + return this._instance; + } + /** + * Set the current context manager. + * + * @returns true if the context manager was successfully registered, else false + */ + setGlobalContextManager(contextManager) { + return registerGlobal(API_NAME, contextManager, DiagAPI.instance()); + } + /** + * Get the currently active context + */ + active() { + return this._getContextManager().active(); + } + /** + * Execute a function with an active context + * + * @param context context to be active during function execution + * @param fn function to execute in a context + * @param thisArg optional receiver to be used for calling fn + * @param args optional arguments forwarded to fn + */ + with(context, fn, thisArg, ...args) { + return this._getContextManager().with(context, fn, thisArg, ...args); + } + /** + * Bind a context to a target function or event emitter + * + * @param context context to bind to the event emitter or function. Defaults to the currently active context + * @param target function or event emitter to bind + */ + bind(context, target) { + return this._getContextManager().bind(context, target); + } + _getContextManager() { + return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER; + } + /** Disable and remove the global context manager */ + disable() { + this._getContextManager().disable(); + unregisterGlobal(API_NAME, DiagAPI.instance()); + } +} +//# sourceMappingURL=context.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/context.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/context.js.map new file mode 100644 index 0000000..5ad9a01 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/api/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAC3B,MAAM,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEtD;;GAEG;AACH,MAAM,OAAO,UAAU;IAGrB,+FAA+F;IAC/F,gBAAuB,CAAC;IAExB,oDAAoD;IAC7C,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;SACnC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,uBAAuB,CAAC,cAA8B;QAC3D,OAAO,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;;;OAOG;IACI,IAAI,CACT,OAAgB,EAChB,EAAK,EACL,OAA8B,EAC9B,GAAG,IAAO;QAEV,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACI,IAAI,CAAI,OAAgB,EAAE,MAAS;QACxC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAEO,kBAAkB;QACxB,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC;IACrD,CAAC;IAED,oDAAoD;IAC7C,OAAO;QACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,CAAC;QACpC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { Context, ContextManager } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nexport class ContextAPI {\n private static _instance?: ContextAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Context API */\n public static getInstance(): ContextAPI {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n public setGlobalContextManager(contextManager: ContextManager): boolean {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n }\n\n /**\n * Get the currently active context\n */\n public active(): Context {\n return this._getContextManager().active();\n }\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 public with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\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 public bind(context: Context, target: T): T {\n return this._getContextManager().bind(context, target);\n }\n\n private _getContextManager(): ContextManager {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n\n /** Disable and remove the global context manager */\n public disable() {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/diag.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/diag.d.ts new file mode 100644 index 0000000..131db17 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/diag.d.ts @@ -0,0 +1,30 @@ +import { ComponentLoggerOptions, DiagLogFunction, DiagLogger, DiagLoggerApi } from '../diag/types'; +/** + * Singleton object which represents the entry point to the OpenTelemetry internal + * diagnostic API + */ +export declare class DiagAPI implements DiagLogger, DiagLoggerApi { + private static _instance?; + /** Get the singleton instance of the DiagAPI API */ + static instance(): DiagAPI; + /** + * Private internal constructor + * @private + */ + private constructor(); + setLogger: DiagLoggerApi['setLogger']; + /** + * + */ + createComponentLogger: (options: ComponentLoggerOptions) => DiagLogger; + verbose: DiagLogFunction; + debug: DiagLogFunction; + info: DiagLogFunction; + warn: DiagLogFunction; + error: DiagLogFunction; + /** + * Unregister the global logger and return to Noop + */ + disable: () => void; +} +//# sourceMappingURL=diag.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/diag.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/diag.js new file mode 100644 index 0000000..8798a39 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/diag.js @@ -0,0 +1,89 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { DiagComponentLogger } from '../diag/ComponentLogger'; +import { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger'; +import { DiagLogLevel, } from '../diag/types'; +import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +const API_NAME = 'diag'; +/** + * Singleton object which represents the entry point to the OpenTelemetry internal + * diagnostic API + */ +export class DiagAPI { + /** + * Private internal constructor + * @private + */ + constructor() { + function _logProxy(funcName) { + return function (...args) { + const logger = getGlobal('diag'); + // shortcut if logger not set + if (!logger) + return; + return logger[funcName](...args); + }; + } + // Using self local variable for minification purposes as 'this' cannot be minified + const self = this; + // DiagAPI specific functions + const setLogger = (logger, optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }) => { + var _a, _b, _c; + if (logger === self) { + // There isn't much we can do here. + // Logging to the console might break the user application. + // Try to log to self. If a logger was previously registered it will receive the log. + const err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'); + self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message); + return false; + } + if (typeof optionsOrLogLevel === 'number') { + optionsOrLogLevel = { + logLevel: optionsOrLogLevel, + }; + } + const oldLogger = getGlobal('diag'); + const newLogger = createLogLevelDiagLogger((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : DiagLogLevel.INFO, logger); + // There already is an logger registered. We'll let it know before overwriting it. + if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) { + const stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : ''; + oldLogger.warn(`Current logger will be overwritten from ${stack}`); + newLogger.warn(`Current logger will overwrite one already registered from ${stack}`); + } + return registerGlobal('diag', newLogger, self, true); + }; + self.setLogger = setLogger; + self.disable = () => { + unregisterGlobal(API_NAME, self); + }; + self.createComponentLogger = (options) => { + return new DiagComponentLogger(options); + }; + self.verbose = _logProxy('verbose'); + self.debug = _logProxy('debug'); + self.info = _logProxy('info'); + self.warn = _logProxy('warn'); + self.error = _logProxy('error'); + } + /** Get the singleton instance of the DiagAPI API */ + static instance() { + if (!this._instance) { + this._instance = new DiagAPI(); + } + return this._instance; + } +} +//# sourceMappingURL=diag.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/diag.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/diag.js.map new file mode 100644 index 0000000..448d05c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/diag.js.map @@ -0,0 +1 @@ +{"version":3,"file":"diag.js","sourceRoot":"","sources":["../../../src/api/diag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAKL,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAExB;;;GAGG;AACH,MAAM,OAAO,OAAO;IAYlB;;;OAGG;IACH;QACE,SAAS,SAAS,CAAC,QAA0B;YAC3C,OAAO,UAAU,GAAG,IAAI;gBACtB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBACjC,6BAA6B;gBAC7B,IAAI,CAAC,MAAM;oBAAE,OAAO;gBACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACnC,CAAC,CAAC;QACJ,CAAC;QAED,mFAAmF;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,6BAA6B;QAE7B,MAAM,SAAS,GAA+B,CAC5C,MAAM,EACN,iBAAiB,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,EACnD,EAAE;;YACF,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,mCAAmC;gBACnC,2DAA2D;gBAC3D,qFAAqF;gBACrF,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,oIAAoI,CACrI,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,MAAA,GAAG,CAAC,KAAK,mCAAI,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrC,OAAO,KAAK,CAAC;aACd;YAED,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;gBACzC,iBAAiB,GAAG;oBAClB,QAAQ,EAAE,iBAAiB;iBAC5B,CAAC;aACH;YAED,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,wBAAwB,CACxC,MAAA,iBAAiB,CAAC,QAAQ,mCAAI,YAAY,CAAC,IAAI,EAC/C,MAAM,CACP,CAAC;YACF,kFAAkF;YAClF,IAAI,SAAS,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,EAAE;gBAC3D,MAAM,KAAK,GAAG,MAAA,IAAI,KAAK,EAAE,CAAC,KAAK,mCAAI,iCAAiC,CAAC;gBACrE,SAAS,CAAC,IAAI,CAAC,2CAA2C,KAAK,EAAE,CAAC,CAAC;gBACnE,SAAS,CAAC,IAAI,CACZ,6DAA6D,KAAK,EAAE,CACrE,CAAC;aACH;YAED,OAAO,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE;YAClB,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,IAAI,CAAC,qBAAqB,GAAG,CAAC,OAA+B,EAAE,EAAE;YAC/D,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAjFD,oDAAoD;IAC7C,MAAM,CAAC,QAAQ;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;SAChC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CA+FF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport {\n ComponentLoggerOptions,\n DiagLogFunction,\n DiagLogger,\n DiagLoggerApi,\n DiagLogLevel,\n} from '../diag/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\n\nconst API_NAME = 'diag';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nexport class DiagAPI implements DiagLogger, DiagLoggerApi {\n private static _instance?: DiagAPI;\n\n /** Get the singleton instance of the DiagAPI API */\n public static instance(): DiagAPI {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Private internal constructor\n * @private\n */\n private constructor() {\n function _logProxy(funcName: keyof DiagLogger): DiagLogFunction {\n return function (...args) {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) return;\n return logger[funcName](...args);\n };\n }\n\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n\n // DiagAPI specific functions\n\n const setLogger: DiagLoggerApi['setLogger'] = (\n logger,\n optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }\n ) => {\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(\n 'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'\n );\n self.error(err.stack ?? err.message);\n return false;\n }\n\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n\n const oldLogger = getGlobal('diag');\n const newLogger = createLogLevelDiagLogger(\n optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO,\n logger\n );\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = new Error().stack ?? '';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(\n `Current logger will overwrite one already registered from ${stack}`\n );\n }\n\n return registerGlobal('diag', newLogger, self, true);\n };\n\n self.setLogger = setLogger;\n\n self.disable = () => {\n unregisterGlobal(API_NAME, self);\n };\n\n self.createComponentLogger = (options: ComponentLoggerOptions) => {\n return new DiagComponentLogger(options);\n };\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\n public setLogger!: DiagLoggerApi['setLogger'];\n /**\n *\n */\n public createComponentLogger!: (\n options: ComponentLoggerOptions\n ) => DiagLogger;\n\n // DiagLogger implementation\n public verbose!: DiagLogFunction;\n public debug!: DiagLogFunction;\n public info!: DiagLogFunction;\n public warn!: DiagLogFunction;\n public error!: DiagLogFunction;\n\n /**\n * Unregister the global logger and return to Noop\n */\n public disable!: () => void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/metrics.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/metrics.d.ts new file mode 100644 index 0000000..5adc145 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/metrics.d.ts @@ -0,0 +1,28 @@ +import { Meter, MeterOptions } from '../metrics/Meter'; +import { MeterProvider } from '../metrics/MeterProvider'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Metrics API + */ +export declare class MetricsAPI { + private static _instance?; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Metrics API */ + static getInstance(): MetricsAPI; + /** + * Set the current global meter provider. + * Returns true if the meter provider was successfully registered, else false. + */ + setGlobalMeterProvider(provider: MeterProvider): boolean; + /** + * Returns the global meter provider. + */ + getMeterProvider(): MeterProvider; + /** + * Returns a meter from the global meter provider. + */ + getMeter(name: string, version?: string, options?: MeterOptions): Meter; + /** Remove the global meter provider */ + disable(): void; +} +//# sourceMappingURL=metrics.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/metrics.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/metrics.js new file mode 100644 index 0000000..7864926 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/metrics.js @@ -0,0 +1,57 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider'; +import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +import { DiagAPI } from './diag'; +const API_NAME = 'metrics'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Metrics API + */ +export class MetricsAPI { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + constructor() { } + /** Get the singleton instance of the Metrics API */ + static getInstance() { + if (!this._instance) { + this._instance = new MetricsAPI(); + } + return this._instance; + } + /** + * Set the current global meter provider. + * Returns true if the meter provider was successfully registered, else false. + */ + setGlobalMeterProvider(provider) { + return registerGlobal(API_NAME, provider, DiagAPI.instance()); + } + /** + * Returns the global meter provider. + */ + getMeterProvider() { + return getGlobal(API_NAME) || NOOP_METER_PROVIDER; + } + /** + * Returns a meter from the global meter provider. + */ + getMeter(name, version, options) { + return this.getMeterProvider().getMeter(name, version, options); + } + /** Remove the global meter provider */ + disable() { + unregisterGlobal(API_NAME, DiagAPI.instance()); + } +} +//# sourceMappingURL=metrics.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/metrics.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/metrics.js.map new file mode 100644 index 0000000..03c2872 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/metrics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/api/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAE3B;;GAEG;AACH,MAAM,OAAO,UAAU;IAGrB,+FAA+F;IAC/F,gBAAuB,CAAC;IAExB,oDAAoD;IAC7C,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;SACnC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,sBAAsB,CAAC,QAAuB;QACnD,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,QAAQ,CACb,IAAY,EACZ,OAAgB,EAChB,OAAsB;QAEtB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,uCAAuC;IAChC,OAAO;QACZ,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter, MeterOptions } from '../metrics/Meter';\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'metrics';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nexport class MetricsAPI {\n private static _instance?: MetricsAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Metrics API */\n public static getInstance(): MetricsAPI {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n public setGlobalMeterProvider(provider: MeterProvider): boolean {\n return registerGlobal(API_NAME, provider, DiagAPI.instance());\n }\n\n /**\n * Returns the global meter provider.\n */\n public getMeterProvider(): MeterProvider {\n return getGlobal(API_NAME) || NOOP_METER_PROVIDER;\n }\n\n /**\n * Returns a meter from the global meter provider.\n */\n public getMeter(\n name: string,\n version?: string,\n options?: MeterOptions\n ): Meter {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n\n /** Remove the global meter provider */\n public disable(): void {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/propagation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/propagation.d.ts new file mode 100644 index 0000000..a22d24d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/propagation.d.ts @@ -0,0 +1,49 @@ +import { Context } from '../context/types'; +import { TextMapGetter, TextMapPropagator, TextMapSetter } from '../propagation/TextMapPropagator'; +import { getBaggage, getActiveBaggage, setBaggage, deleteBaggage } from '../baggage/context-helpers'; +import { createBaggage } from '../baggage/utils'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Propagation API + */ +export declare class PropagationAPI { + private static _instance?; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Propagator API */ + static getInstance(): PropagationAPI; + /** + * Set the current propagator. + * + * @returns true if the propagator was successfully registered, else false + */ + setGlobalPropagator(propagator: TextMapPropagator): boolean; + /** + * Inject context into a carrier to be propagated inter-process + * + * @param context Context carrying tracing data to inject + * @param carrier carrier to inject context into + * @param setter Function used to set values on the carrier + */ + inject(context: Context, carrier: Carrier, setter?: TextMapSetter): void; + /** + * Extract context from a carrier + * + * @param context Context which the newly created context will inherit from + * @param carrier Carrier to extract context from + * @param getter Function used to extract keys from a carrier + */ + extract(context: Context, carrier: Carrier, getter?: TextMapGetter): Context; + /** + * Return a list of all fields which may be used by the propagator. + */ + fields(): string[]; + /** Remove the global propagator */ + disable(): void; + createBaggage: typeof createBaggage; + getBaggage: typeof getBaggage; + getActiveBaggage: typeof getActiveBaggage; + setBaggage: typeof setBaggage; + deleteBaggage: typeof deleteBaggage; + private _getGlobalPropagator; +} +//# sourceMappingURL=propagation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/propagation.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/propagation.js new file mode 100644 index 0000000..93507eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/propagation.js @@ -0,0 +1,85 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +import { NoopTextMapPropagator } from '../propagation/NoopTextMapPropagator'; +import { defaultTextMapGetter, defaultTextMapSetter, } from '../propagation/TextMapPropagator'; +import { getBaggage, getActiveBaggage, setBaggage, deleteBaggage, } from '../baggage/context-helpers'; +import { createBaggage } from '../baggage/utils'; +import { DiagAPI } from './diag'; +const API_NAME = 'propagation'; +const NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator(); +/** + * Singleton object which represents the entry point to the OpenTelemetry Propagation API + */ +export class PropagationAPI { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + constructor() { + this.createBaggage = createBaggage; + this.getBaggage = getBaggage; + this.getActiveBaggage = getActiveBaggage; + this.setBaggage = setBaggage; + this.deleteBaggage = deleteBaggage; + } + /** Get the singleton instance of the Propagator API */ + static getInstance() { + if (!this._instance) { + this._instance = new PropagationAPI(); + } + return this._instance; + } + /** + * Set the current propagator. + * + * @returns true if the propagator was successfully registered, else false + */ + setGlobalPropagator(propagator) { + return registerGlobal(API_NAME, propagator, DiagAPI.instance()); + } + /** + * Inject context into a carrier to be propagated inter-process + * + * @param context Context carrying tracing data to inject + * @param carrier carrier to inject context into + * @param setter Function used to set values on the carrier + */ + inject(context, carrier, setter = defaultTextMapSetter) { + return this._getGlobalPropagator().inject(context, carrier, setter); + } + /** + * Extract context from a carrier + * + * @param context Context which the newly created context will inherit from + * @param carrier Carrier to extract context from + * @param getter Function used to extract keys from a carrier + */ + extract(context, carrier, getter = defaultTextMapGetter) { + return this._getGlobalPropagator().extract(context, carrier, getter); + } + /** + * Return a list of all fields which may be used by the propagator. + */ + fields() { + return this._getGlobalPropagator().fields(); + } + /** Remove the global propagator */ + disable() { + unregisterGlobal(API_NAME, DiagAPI.instance()); + } + _getGlobalPropagator() { + return getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR; + } +} +//# sourceMappingURL=propagation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/propagation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/propagation.js.map new file mode 100644 index 0000000..a0673fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/propagation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"propagation.js","sourceRoot":"","sources":["../../../src/api/propagation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAIrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,MAAM,QAAQ,GAAG,aAAa,CAAC;AAC/B,MAAM,wBAAwB,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAE7D;;GAEG;AACH,MAAM,OAAO,cAAc;IAGzB,+FAA+F;IAC/F;QA8DO,kBAAa,GAAG,aAAa,CAAC;QAE9B,eAAU,GAAG,UAAU,CAAC;QAExB,qBAAgB,GAAG,gBAAgB,CAAC;QAEpC,eAAU,GAAG,UAAU,CAAC;QAExB,kBAAa,GAAG,aAAa,CAAC;IAtEd,CAAC;IAExB,uDAAuD;IAChD,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;SACvC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,UAA6B;QACtD,OAAO,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CACX,OAAgB,EAChB,OAAgB,EAChB,SAAiC,oBAAoB;QAErD,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CACZ,OAAgB,EAChB,OAAgB,EAChB,SAAiC,oBAAoB;QAErD,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,CAAC;IAC9C,CAAC;IAED,mCAAmC;IAC5B,OAAO;QACZ,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAYO,oBAAoB;QAC1B,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,wBAAwB,CAAC;IACzD,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { NoopTextMapPropagator } from '../propagation/NoopTextMapPropagator';\nimport {\n defaultTextMapGetter,\n defaultTextMapSetter,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '../propagation/TextMapPropagator';\nimport {\n getBaggage,\n getActiveBaggage,\n setBaggage,\n deleteBaggage,\n} from '../baggage/context-helpers';\nimport { createBaggage } from '../baggage/utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n */\nexport class PropagationAPI {\n private static _instance?: PropagationAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Propagator API */\n public static getInstance(): PropagationAPI {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n public setGlobalPropagator(propagator: TextMapPropagator): boolean {\n return registerGlobal(API_NAME, propagator, DiagAPI.instance());\n }\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 public inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter = defaultTextMapSetter\n ): void {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\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 public extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter = defaultTextMapGetter\n ): Context {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n public fields(): string[] {\n return this._getGlobalPropagator().fields();\n }\n\n /** Remove the global propagator */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n\n public createBaggage = createBaggage;\n\n public getBaggage = getBaggage;\n\n public getActiveBaggage = getActiveBaggage;\n\n public setBaggage = setBaggage;\n\n public deleteBaggage = deleteBaggage;\n\n private _getGlobalPropagator(): TextMapPropagator {\n return getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/trace.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/trace.d.ts new file mode 100644 index 0000000..df59fd2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/trace.d.ts @@ -0,0 +1,40 @@ +import { isSpanContextValid, wrapSpanContext } from '../trace/spancontext-utils'; +import { Tracer } from '../trace/tracer'; +import { TracerProvider } from '../trace/tracer_provider'; +import { deleteSpan, getActiveSpan, getSpan, getSpanContext, setSpan, setSpanContext } from '../trace/context-utils'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Tracing API + */ +export declare class TraceAPI { + private static _instance?; + private _proxyTracerProvider; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Trace API */ + static getInstance(): TraceAPI; + /** + * Set the current global tracer. + * + * @returns true if the tracer provider was successfully registered, else false + */ + setGlobalTracerProvider(provider: TracerProvider): boolean; + /** + * Returns the global tracer provider. + */ + getTracerProvider(): TracerProvider; + /** + * Returns a tracer from the global tracer provider. + */ + getTracer(name: string, version?: string): Tracer; + /** Remove the global tracer provider */ + disable(): void; + wrapSpanContext: typeof wrapSpanContext; + isSpanContextValid: typeof isSpanContextValid; + deleteSpan: typeof deleteSpan; + getSpan: typeof getSpan; + getActiveSpan: typeof getActiveSpan; + getSpanContext: typeof getSpanContext; + setSpan: typeof setSpan; + setSpanContext: typeof setSpanContext; +} +//# sourceMappingURL=trace.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/trace.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/trace.js new file mode 100644 index 0000000..6003620 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/trace.js @@ -0,0 +1,75 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +import { ProxyTracerProvider } from '../trace/ProxyTracerProvider'; +import { isSpanContextValid, wrapSpanContext, } from '../trace/spancontext-utils'; +import { deleteSpan, getActiveSpan, getSpan, getSpanContext, setSpan, setSpanContext, } from '../trace/context-utils'; +import { DiagAPI } from './diag'; +const API_NAME = 'trace'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Tracing API + */ +export class TraceAPI { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + constructor() { + this._proxyTracerProvider = new ProxyTracerProvider(); + this.wrapSpanContext = wrapSpanContext; + this.isSpanContextValid = isSpanContextValid; + this.deleteSpan = deleteSpan; + this.getSpan = getSpan; + this.getActiveSpan = getActiveSpan; + this.getSpanContext = getSpanContext; + this.setSpan = setSpan; + this.setSpanContext = setSpanContext; + } + /** Get the singleton instance of the Trace API */ + static getInstance() { + if (!this._instance) { + this._instance = new TraceAPI(); + } + return this._instance; + } + /** + * Set the current global tracer. + * + * @returns true if the tracer provider was successfully registered, else false + */ + setGlobalTracerProvider(provider) { + const success = registerGlobal(API_NAME, this._proxyTracerProvider, DiagAPI.instance()); + if (success) { + this._proxyTracerProvider.setDelegate(provider); + } + return success; + } + /** + * Returns the global tracer provider. + */ + getTracerProvider() { + return getGlobal(API_NAME) || this._proxyTracerProvider; + } + /** + * Returns a tracer from the global tracer provider. + */ + getTracer(name, version) { + return this.getTracerProvider().getTracer(name, version); + } + /** Remove the global tracer provider */ + disable() { + unregisterGlobal(API_NAME, DiagAPI.instance()); + this._proxyTracerProvider = new ProxyTracerProvider(); + } +} +//# sourceMappingURL=trace.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/trace.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/trace.js.map new file mode 100644 index 0000000..1521877 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/api/trace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../src/api/trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,kBAAkB,EAClB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,aAAa,EACb,OAAO,EACP,cAAc,EACd,OAAO,EACP,cAAc,GACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB;;GAEG;AACH,MAAM,OAAO,QAAQ;IAKnB,+FAA+F;IAC/F;QAHQ,yBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAmDlD,oBAAe,GAAG,eAAe,CAAC;QAElC,uBAAkB,GAAG,kBAAkB,CAAC;QAExC,eAAU,GAAG,UAAU,CAAC;QAExB,YAAO,GAAG,OAAO,CAAC;QAElB,kBAAa,GAAG,aAAa,CAAC;QAE9B,mBAAc,GAAG,cAAc,CAAC;QAEhC,YAAO,GAAG,OAAO,CAAC;QAElB,mBAAc,GAAG,cAAc,CAAC;IA9DhB,CAAC;IAExB,kDAAkD;IAC3C,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;SACjC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,uBAAuB,CAAC,QAAwB;QACrD,MAAM,OAAO,GAAG,cAAc,CAC5B,QAAQ,EACR,IAAI,CAAC,oBAAoB,EACzB,OAAO,CAAC,QAAQ,EAAE,CACnB,CAAC;QACF,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACjD;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC;IAC1D,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,IAAY,EAAE,OAAgB;QAC7C,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,wCAAwC;IACjC,OAAO;QACZ,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACxD,CAAC;CAiBF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n isSpanContextValid,\n wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport { Tracer } from '../trace/tracer';\nimport { TracerProvider } from '../trace/tracer_provider';\nimport {\n deleteSpan,\n getActiveSpan,\n getSpan,\n getSpanContext,\n setSpan,\n setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nexport class TraceAPI {\n private static _instance?: TraceAPI;\n\n private _proxyTracerProvider = new ProxyTracerProvider();\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Trace API */\n public static getInstance(): TraceAPI {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n public setGlobalTracerProvider(provider: TracerProvider): boolean {\n const success = registerGlobal(\n API_NAME,\n this._proxyTracerProvider,\n DiagAPI.instance()\n );\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n\n /**\n * Returns the global tracer provider.\n */\n public getTracerProvider(): TracerProvider {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n }\n\n /**\n * Returns a tracer from the global tracer provider.\n */\n public getTracer(name: string, version?: string): Tracer {\n return this.getTracerProvider().getTracer(name, version);\n }\n\n /** Remove the global tracer provider */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n }\n\n public wrapSpanContext = wrapSpanContext;\n\n public isSpanContextValid = isSpanContextValid;\n\n public deleteSpan = deleteSpan;\n\n public getSpan = getSpan;\n\n public getActiveSpan = getActiveSpan;\n\n public getSpanContext = getSpanContext;\n\n public setSpan = setSpan;\n\n public setSpanContext = setSpanContext;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.d.ts new file mode 100644 index 0000000..23750eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.d.ts @@ -0,0 +1,29 @@ +import { Context } from '../context/types'; +import { Baggage } from './types'; +/** + * Retrieve the current baggage from the given context + * + * @param {Context} Context that manage all context values + * @returns {Baggage} Extracted baggage from the context + */ +export declare function getBaggage(context: Context): Baggage | undefined; +/** + * Retrieve the current baggage from the active/current context + * + * @returns {Baggage} Extracted baggage from the context + */ +export declare function getActiveBaggage(): Baggage | undefined; +/** + * Store a baggage in the given context + * + * @param {Context} Context that manage all context values + * @param {Baggage} baggage that will be set in the actual context + */ +export declare function setBaggage(context: Context, baggage: Baggage): Context; +/** + * Delete the baggage stored in the given context + * + * @param {Context} Context that manage all context values + */ +export declare function deleteBaggage(context: Context): Context; +//# sourceMappingURL=context-helpers.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.js new file mode 100644 index 0000000..9cd0fe7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.js @@ -0,0 +1,56 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ContextAPI } from '../api/context'; +import { createContextKey } from '../context/context'; +/** + * Baggage key + */ +const BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key'); +/** + * Retrieve the current baggage from the given context + * + * @param {Context} Context that manage all context values + * @returns {Baggage} Extracted baggage from the context + */ +export function getBaggage(context) { + return context.getValue(BAGGAGE_KEY) || undefined; +} +/** + * Retrieve the current baggage from the active/current context + * + * @returns {Baggage} Extracted baggage from the context + */ +export function getActiveBaggage() { + return getBaggage(ContextAPI.getInstance().active()); +} +/** + * Store a baggage in the given context + * + * @param {Context} Context that manage all context values + * @param {Baggage} baggage that will be set in the actual context + */ +export function setBaggage(context, baggage) { + return context.setValue(BAGGAGE_KEY, baggage); +} +/** + * Delete the baggage stored in the given context + * + * @param {Context} Context that manage all context values + */ +export function deleteBaggage(context) { + return context.deleteValue(BAGGAGE_KEY); +} +//# sourceMappingURL=context-helpers.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.js.map new file mode 100644 index 0000000..c39d666 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context-helpers.js","sourceRoot":"","sources":["../../../src/baggage/context-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD;;GAEG;AACH,MAAM,WAAW,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAQ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa,IAAI,SAAS,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,OAAgB;IAC3D,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ContextAPI } from '../api/context';\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Baggage } from './types';\n\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');\n\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 */\nexport function getBaggage(context: Context): Baggage | undefined {\n return (context.getValue(BAGGAGE_KEY) as Baggage) || undefined;\n}\n\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getActiveBaggage(): Baggage | undefined {\n return getBaggage(ContextAPI.getInstance().active());\n}\n\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 */\nexport function setBaggage(context: Context, baggage: Baggage): Context {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\n\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nexport function deleteBaggage(context: Context): Context {\n return context.deleteValue(BAGGAGE_KEY);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.d.ts new file mode 100644 index 0000000..e6b4554 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.d.ts @@ -0,0 +1,12 @@ +import type { Baggage, BaggageEntry } from '../types'; +export declare class BaggageImpl implements Baggage { + private _entries; + constructor(entries?: Map); + getEntry(key: string): BaggageEntry | undefined; + getAllEntries(): [string, BaggageEntry][]; + setEntry(key: string, entry: BaggageEntry): BaggageImpl; + removeEntry(key: string): BaggageImpl; + removeEntries(...keys: string[]): BaggageImpl; + clear(): BaggageImpl; +} +//# sourceMappingURL=baggage-impl.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.js new file mode 100644 index 0000000..774d1f8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.js @@ -0,0 +1,51 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class BaggageImpl { + constructor(entries) { + this._entries = entries ? new Map(entries) : new Map(); + } + getEntry(key) { + const entry = this._entries.get(key); + if (!entry) { + return undefined; + } + return Object.assign({}, entry); + } + getAllEntries() { + return Array.from(this._entries.entries()).map(([k, v]) => [k, v]); + } + setEntry(key, entry) { + const newBaggage = new BaggageImpl(this._entries); + newBaggage._entries.set(key, entry); + return newBaggage; + } + removeEntry(key) { + const newBaggage = new BaggageImpl(this._entries); + newBaggage._entries.delete(key); + return newBaggage; + } + removeEntries(...keys) { + const newBaggage = new BaggageImpl(this._entries); + for (const key of keys) { + newBaggage._entries.delete(key); + } + return newBaggage; + } + clear() { + return new BaggageImpl(); + } +} +//# sourceMappingURL=baggage-impl.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.js.map new file mode 100644 index 0000000..74c6a4c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"baggage-impl.js","sourceRoot":"","sources":["../../../../src/baggage/internal/baggage-impl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,OAAO,WAAW;IAGtB,YAAY,OAAmC;QAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IACzD,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,KAAmB;QACvC,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,aAAa,CAAC,GAAG,IAAc;QAC7B,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACjC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,WAAW,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Baggage, BaggageEntry } from '../types';\n\nexport class BaggageImpl implements Baggage {\n private _entries: Map;\n\n constructor(entries?: Map) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n\n getEntry(key: string): BaggageEntry | undefined {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n\n return Object.assign({}, entry);\n }\n\n getAllEntries(): [string, BaggageEntry][] {\n return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);\n }\n\n setEntry(key: string, entry: BaggageEntry): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n\n removeEntry(key: string): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n\n removeEntries(...keys: string[]): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n\n clear(): BaggageImpl {\n return new BaggageImpl();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.d.ts new file mode 100644 index 0000000..9cd991c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.d.ts @@ -0,0 +1,5 @@ +/** + * Symbol used to make BaggageEntryMetadata an opaque type + */ +export declare const baggageEntryMetadataSymbol: unique symbol; +//# sourceMappingURL=symbol.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.js new file mode 100644 index 0000000..22f5b25 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Symbol used to make BaggageEntryMetadata an opaque type + */ +export const baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata'); +//# sourceMappingURL=symbol.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.js.map new file mode 100644 index 0000000..0cc1abd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.js.map @@ -0,0 +1 @@ +{"version":3,"file":"symbol.js","sourceRoot":"","sources":["../../../../src/baggage/internal/symbol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexport const baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/types.d.ts new file mode 100644 index 0000000..32fa0ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/types.d.ts @@ -0,0 +1,60 @@ +import { baggageEntryMetadataSymbol } from './internal/symbol'; +export interface BaggageEntry { + /** `String` value of the `BaggageEntry`. */ + value: string; + /** + * Metadata is an optional string property defined by the W3C baggage specification. + * It currently has no special meaning defined by the specification. + */ + metadata?: BaggageEntryMetadata; +} +/** + * Serializable Metadata defined by the W3C baggage specification. + * It currently has no special meaning defined by the OpenTelemetry or W3C. + */ +export declare type BaggageEntryMetadata = { + toString(): string; +} & { + __TYPE__: typeof baggageEntryMetadataSymbol; +}; +/** + * Baggage represents collection of key-value pairs with optional metadata. + * Each key of Baggage is associated with exactly one value. + * Baggage may be used to annotate and enrich telemetry data. + */ +export interface Baggage { + /** + * Get an entry from Baggage if it exists + * + * @param key The key which identifies the BaggageEntry + */ + getEntry(key: string): BaggageEntry | undefined; + /** + * Get a list of all entries in the Baggage + */ + getAllEntries(): [string, BaggageEntry][]; + /** + * Returns a new baggage with the entries from the current bag and the specified entry + * + * @param key string which identifies the baggage entry + * @param entry BaggageEntry for the given key + */ + setEntry(key: string, entry: BaggageEntry): Baggage; + /** + * Returns a new baggage with the entries from the current bag except the removed entry + * + * @param key key identifying the entry to be removed + */ + removeEntry(key: string): Baggage; + /** + * Returns a new baggage with the entries from the current bag except the removed entries + * + * @param key keys identifying the entries to be removed + */ + removeEntries(...key: string[]): Baggage; + /** + * Returns a new baggage with no entries + */ + clear(): Baggage; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/types.js.map new file mode 100644 index 0000000..ae80c19 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/baggage/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\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\nexport interface BaggageEntry {\n /** `String` value of the `BaggageEntry`. */\n value: string;\n /**\n * Metadata is an optional string property defined by the W3C baggage specification.\n * It currently has no special meaning defined by the specification.\n */\n metadata?: BaggageEntryMetadata;\n}\n\n/**\n * Serializable Metadata defined by the W3C baggage specification.\n * It currently has no special meaning defined by the OpenTelemetry or W3C.\n */\nexport type BaggageEntryMetadata = { toString(): string } & {\n __TYPE__: typeof baggageEntryMetadataSymbol;\n};\n\n/**\n * Baggage represents collection of key-value pairs with optional metadata.\n * Each key of Baggage is associated with exactly one value.\n * Baggage may be used to annotate and enrich telemetry data.\n */\nexport interface Baggage {\n /**\n * Get an entry from Baggage if it exists\n *\n * @param key The key which identifies the BaggageEntry\n */\n getEntry(key: string): BaggageEntry | undefined;\n\n /**\n * Get a list of all entries in the Baggage\n */\n getAllEntries(): [string, BaggageEntry][];\n\n /**\n * Returns a new baggage with the entries from the current bag and the specified entry\n *\n * @param key string which identifies the baggage entry\n * @param entry BaggageEntry for the given key\n */\n setEntry(key: string, entry: BaggageEntry): Baggage;\n\n /**\n * Returns a new baggage with the entries from the current bag except the removed entry\n *\n * @param key key identifying the entry to be removed\n */\n removeEntry(key: string): Baggage;\n\n /**\n * Returns a new baggage with the entries from the current bag except the removed entries\n *\n * @param key keys identifying the entries to be removed\n */\n removeEntries(...key: string[]): Baggage;\n\n /**\n * Returns a new baggage with no entries\n */\n clear(): Baggage;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/utils.d.ts new file mode 100644 index 0000000..9955d9e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/utils.d.ts @@ -0,0 +1,15 @@ +import { Baggage, BaggageEntry, BaggageEntryMetadata } from './types'; +/** + * Create a new Baggage with optional entries + * + * @param entries An array of baggage entries the new baggage should contain + */ +export declare function createBaggage(entries?: Record): Baggage; +/** + * Create a serializable BaggageEntryMetadata object from a string. + * + * @param str string metadata. Format is currently not defined by the spec and has no special meaning. + * + */ +export declare function baggageEntryMetadataFromString(str: string): BaggageEntryMetadata; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/utils.js new file mode 100644 index 0000000..b444883 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/utils.js @@ -0,0 +1,46 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { DiagAPI } from '../api/diag'; +import { BaggageImpl } from './internal/baggage-impl'; +import { baggageEntryMetadataSymbol } from './internal/symbol'; +const diag = DiagAPI.instance(); +/** + * Create a new Baggage with optional entries + * + * @param entries An array of baggage entries the new baggage should contain + */ +export function createBaggage(entries = {}) { + return new BaggageImpl(new Map(Object.entries(entries))); +} +/** + * Create a serializable BaggageEntryMetadata object from a string. + * + * @param str string metadata. Format is currently not defined by the spec and has no special meaning. + * + */ +export function baggageEntryMetadataFromString(str) { + if (typeof str !== 'string') { + diag.error(`Cannot create baggage metadata from unknown type: ${typeof str}`); + str = ''; + } + return { + __TYPE__: baggageEntryMetadataSymbol, + toString() { + return str; + }, + }; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/utils.js.map new file mode 100644 index 0000000..0a0228d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/baggage/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/baggage/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAG/D,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;AAEhC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,UAAwC,EAAE;IAE1C,OAAO,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,GAAW;IAEX,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,IAAI,CAAC,KAAK,CACR,qDAAqD,OAAO,GAAG,EAAE,CAClE,CAAC;QACF,GAAG,GAAG,EAAE,CAAC;KACV;IAED,OAAO;QACL,QAAQ,EAAE,0BAA0B;QACpC,QAAQ;YACN,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagAPI } from '../api/diag';\nimport { BaggageImpl } from './internal/baggage-impl';\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\nimport { Baggage, BaggageEntry, BaggageEntryMetadata } from './types';\n\nconst diag = DiagAPI.instance();\n\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nexport function createBaggage(\n entries: Record = {}\n): Baggage {\n return new BaggageImpl(new Map(Object.entries(entries)));\n}\n\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 */\nexport function baggageEntryMetadataFromString(\n str: string\n): BaggageEntryMetadata {\n if (typeof str !== 'string') {\n diag.error(\n `Cannot create baggage metadata from unknown type: ${typeof str}`\n );\n str = '';\n }\n\n return {\n __TYPE__: baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Attributes.d.ts new file mode 100644 index 0000000..19994fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Attributes.d.ts @@ -0,0 +1,15 @@ +/** + * Attributes is a map from string to attribute values. + * + * Note: only the own enumerable keys are counted as valid attribute keys. + */ +export interface Attributes { + [attributeKey: string]: AttributeValue | undefined; +} +/** + * Attribute values may be any non-nullish primitive value except an object. + * + * null or undefined attribute values are invalid and will result in undefined behavior. + */ +export declare type AttributeValue = string | number | boolean | Array | Array | Array; +//# sourceMappingURL=Attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Attributes.js new file mode 100644 index 0000000..dbb1e49 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Attributes.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Attributes.js.map new file mode 100644 index 0000000..2649c94 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Attributes.js","sourceRoot":"","sources":["../../../src/common/Attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Attributes is a map from string to attribute values.\n *\n * Note: only the own enumerable keys are counted as valid attribute keys.\n */\nexport interface Attributes {\n [attributeKey: string]: AttributeValue | undefined;\n}\n\n/**\n * Attribute values may be any non-nullish primitive value except an object.\n *\n * null or undefined attribute values are invalid and will result in undefined behavior.\n */\nexport type AttributeValue =\n | string\n | number\n | boolean\n | Array\n | Array\n | Array;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Exception.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Exception.d.ts new file mode 100644 index 0000000..e175a7f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Exception.d.ts @@ -0,0 +1,26 @@ +interface ExceptionWithCode { + code: string | number; + name?: string; + message?: string; + stack?: string; +} +interface ExceptionWithMessage { + code?: string | number; + message: string; + name?: string; + stack?: string; +} +interface ExceptionWithName { + code?: string | number; + message?: string; + name: string; + stack?: string; +} +/** + * Defines Exception. + * + * string or an object with one of (message or name or code) and optional stack + */ +export declare type Exception = ExceptionWithCode | ExceptionWithMessage | ExceptionWithName | string; +export {}; +//# sourceMappingURL=Exception.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Exception.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Exception.js new file mode 100644 index 0000000..6522a8e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Exception.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Exception.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Exception.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Exception.js.map new file mode 100644 index 0000000..989dd3d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Exception.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Exception.js","sourceRoot":"","sources":["../../../src/common/Exception.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\ninterface ExceptionWithCode {\n code: string | number;\n name?: string;\n message?: string;\n stack?: string;\n}\n\ninterface ExceptionWithMessage {\n code?: string | number;\n message: string;\n name?: string;\n stack?: string;\n}\n\ninterface ExceptionWithName {\n code?: string | number;\n message?: string;\n name: string;\n stack?: string;\n}\n\n/**\n * Defines Exception.\n *\n * string or an object with one of (message or name or code) and optional stack\n */\nexport type Exception =\n | ExceptionWithCode\n | ExceptionWithMessage\n | ExceptionWithName\n | string;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Time.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Time.d.ts new file mode 100644 index 0000000..cc3c502 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Time.d.ts @@ -0,0 +1,20 @@ +/** + * Defines High-Resolution Time. + * + * The first number, HrTime[0], is UNIX Epoch time in seconds since 00:00:00 UTC on 1 January 1970. + * The second number, HrTime[1], represents the partial second elapsed since Unix Epoch time represented by first number in nanoseconds. + * For example, 2021-01-01T12:30:10.150Z in UNIX Epoch time in milliseconds is represented as 1609504210150. + * The first number is calculated by converting and truncating the Epoch time in milliseconds to seconds: + * HrTime[0] = Math.trunc(1609504210150 / 1000) = 1609504210. + * The second number is calculated by converting the digits after the decimal point of the subtraction, (1609504210150 / 1000) - HrTime[0], to nanoseconds: + * HrTime[1] = Number((1609504210.150 - HrTime[0]).toFixed(9)) * 1e9 = 150000000. + * This is represented in HrTime format as [1609504210, 150000000]. + */ +export declare type HrTime = [number, number]; +/** + * Defines TimeInput. + * + * hrtime, epoch milliseconds, performance.now() or Date + */ +export declare type TimeInput = HrTime | number | Date; +//# sourceMappingURL=Time.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Time.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Time.js new file mode 100644 index 0000000..2abdf58 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Time.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=Time.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Time.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Time.js.map new file mode 100644 index 0000000..ae124f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/common/Time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Time.js","sourceRoot":"","sources":["../../../src/common/Time.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Defines High-Resolution Time.\n *\n * The first number, HrTime[0], is UNIX Epoch time in seconds since 00:00:00 UTC on 1 January 1970.\n * The second number, HrTime[1], represents the partial second elapsed since Unix Epoch time represented by first number in nanoseconds.\n * For example, 2021-01-01T12:30:10.150Z in UNIX Epoch time in milliseconds is represented as 1609504210150.\n * The first number is calculated by converting and truncating the Epoch time in milliseconds to seconds:\n * HrTime[0] = Math.trunc(1609504210150 / 1000) = 1609504210.\n * The second number is calculated by converting the digits after the decimal point of the subtraction, (1609504210150 / 1000) - HrTime[0], to nanoseconds:\n * HrTime[1] = Number((1609504210.150 - HrTime[0]).toFixed(9)) * 1e9 = 150000000.\n * This is represented in HrTime format as [1609504210, 150000000].\n */\nexport type HrTime = [number, number];\n\n/**\n * Defines TimeInput.\n *\n * hrtime, epoch milliseconds, performance.now() or Date\n */\nexport type TimeInput = HrTime | number | Date;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context-api.d.ts new file mode 100644 index 0000000..650f4ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context-api.d.ts @@ -0,0 +1,4 @@ +import { ContextAPI } from './api/context'; +/** Entrypoint for context API */ +export declare const context: ContextAPI; +//# sourceMappingURL=context-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context-api.js new file mode 100644 index 0000000..5827043 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context-api.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { ContextAPI } from './api/context'; +/** Entrypoint for context API */ +export const context = ContextAPI.getInstance(); +//# sourceMappingURL=context-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context-api.js.map new file mode 100644 index 0000000..fc655d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context-api.js","sourceRoot":"","sources":["../../src/context-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,iCAAiC;AACjC,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/** Entrypoint for context API */\nexport const context = ContextAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.d.ts new file mode 100644 index 0000000..48a1659 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.d.ts @@ -0,0 +1,9 @@ +import * as types from './types'; +export declare class NoopContextManager implements types.ContextManager { + active(): types.Context; + with ReturnType>(_context: types.Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + bind(_context: types.Context, target: T): T; + enable(): this; + disable(): this; +} +//# sourceMappingURL=NoopContextManager.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.js new file mode 100644 index 0000000..14824a6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.js @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ROOT_CONTEXT } from './context'; +export class NoopContextManager { + active() { + return ROOT_CONTEXT; + } + with(_context, fn, thisArg, ...args) { + return fn.call(thisArg, ...args); + } + bind(_context, target) { + return target; + } + enable() { + return this; + } + disable() { + return this; + } +} +//# sourceMappingURL=NoopContextManager.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.js.map new file mode 100644 index 0000000..8ee9f8f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopContextManager.js","sourceRoot":"","sources":["../../../src/context/NoopContextManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,OAAO,kBAAkB;IAC7B,MAAM;QACJ,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CACF,QAAuB,EACvB,EAAK,EACL,OAA8B,EAC9B,GAAG,IAAO;QAEV,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAI,QAAuB,EAAE,MAAS;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ROOT_CONTEXT } from './context';\nimport * as types from './types';\n\nexport class NoopContextManager implements types.ContextManager {\n active(): types.Context {\n return ROOT_CONTEXT;\n }\n\n with ReturnType>(\n _context: types.Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n return fn.call(thisArg, ...args);\n }\n\n bind(_context: types.Context, target: T): T {\n return target;\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/context.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/context.d.ts new file mode 100644 index 0000000..8be0259 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/context.d.ts @@ -0,0 +1,6 @@ +import { Context } from './types'; +/** Get a key to uniquely identify a context value */ +export declare function createContextKey(description: string): symbol; +/** The root context is used as the default parent context when there is no active context */ +export declare const ROOT_CONTEXT: Context; +//# sourceMappingURL=context.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/context.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/context.js new file mode 100644 index 0000000..a95ecf0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/context.js @@ -0,0 +1,51 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** Get a key to uniquely identify a context value */ +export function createContextKey(description) { + // The specification states that for the same input, multiple calls should + // return different keys. Due to the nature of the JS dependency management + // system, this creates problems where multiple versions of some package + // could hold different keys for the same property. + // + // Therefore, we use Symbol.for which returns the same key for the same input. + return Symbol.for(description); +} +class BaseContext { + /** + * Construct a new context which inherits values from an optional parent context. + * + * @param parentContext a context from which to inherit values + */ + constructor(parentContext) { + // for minification + const self = this; + self._currentContext = parentContext ? new Map(parentContext) : new Map(); + self.getValue = (key) => self._currentContext.get(key); + self.setValue = (key, value) => { + const context = new BaseContext(self._currentContext); + context._currentContext.set(key, value); + return context; + }; + self.deleteValue = (key) => { + const context = new BaseContext(self._currentContext); + context._currentContext.delete(key); + return context; + }; + } +} +/** The root context is used as the default parent context when there is no active context */ +export const ROOT_CONTEXT = new BaseContext(); +//# sourceMappingURL=context.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/context.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/context.js.map new file mode 100644 index 0000000..a35b9a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,qDAAqD;AACrD,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,0EAA0E;IAC1E,2EAA2E;IAC3E,wEAAwE;IACxE,mDAAmD;IACnD,EAAE;IACF,8EAA8E;IAC9E,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,WAAW;IAGf;;;;OAIG;IACH,YAAY,aAAoC;QAC9C,mBAAmB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAE1E,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/D,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAc,EAAW,EAAE;YACvD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtD,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,CAAC,GAAW,EAAW,EAAE;YAC1C,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtD,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC;CAyBF;AAED,6FAA6F;AAC7F,MAAM,CAAC,MAAM,YAAY,GAAY,IAAI,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from './types';\n\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description: string) {\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}\n\nclass BaseContext implements Context {\n private _currentContext!: Map;\n\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?: Map) {\n // for minification\n const self = this;\n\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n self.getValue = (key: symbol) => self._currentContext.get(key);\n\n self.setValue = (key: symbol, value: unknown): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n\n self.deleteValue = (key: symbol): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n public getValue!: (key: symbol) => unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n public setValue!: (key: symbol, value: unknown) => Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n public deleteValue!: (key: symbol) => Context;\n}\n\n/** The root context is used as the default parent context when there is no active context */\nexport const ROOT_CONTEXT: Context = new BaseContext();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/types.d.ts new file mode 100644 index 0000000..7e86632 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/types.d.ts @@ -0,0 +1,52 @@ +export interface Context { + /** + * Get a value from the context. + * + * @param key key which identifies a context value + */ + getValue(key: symbol): unknown; + /** + * Create a new context which inherits from this context and has + * the given key set to the given value. + * + * @param key context key for which to set the value + * @param value value to set for the given key + */ + setValue(key: symbol, value: unknown): Context; + /** + * Return a new context which inherits from this context but does + * not contain a value for the given key. + * + * @param key context key for which to clear a value + */ + deleteValue(key: symbol): Context; +} +export interface ContextManager { + /** + * Get the current active context + */ + active(): Context; + /** + * Run the fn callback with object set as the current active context + * @param context Any object to set as the current active context + * @param fn A callback to be immediately run within a specific context + * @param thisArg optional receiver to be used for calling fn + * @param args optional arguments forwarded to fn + */ + with ReturnType>(context: Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + /** + * Bind an object as the current context (or a specific one) + * @param [context] Optionally specify the context which you want to assign + * @param target Any object to which a context need to be set + */ + bind(context: Context, target: T): T; + /** + * Enable context management + */ + enable(): this; + /** + * Disable context management + */ + disable(): this; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/types.js.map new file mode 100644 index 0000000..d438aa3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/context/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/context/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface Context {\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n getValue(key: symbol): unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n setValue(key: symbol, value: unknown): Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n deleteValue(key: symbol): Context;\n}\n\nexport interface ContextManager {\n /**\n * Get the current active context\n */\n active(): Context;\n\n /**\n * Run the fn callback with object set as the current active context\n * @param context Any object to set as the current active context\n * @param fn A callback to be immediately run within a specific context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType;\n\n /**\n * Bind an object as the current context (or a specific one)\n * @param [context] Optionally specify the context which you want to assign\n * @param target Any object to which a context need to be set\n */\n bind(context: Context, target: T): T;\n\n /**\n * Enable context management\n */\n enable(): this;\n\n /**\n * Disable context management\n */\n disable(): this;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag-api.d.ts new file mode 100644 index 0000000..d82fdb1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag-api.d.ts @@ -0,0 +1,9 @@ +import { DiagAPI } from './api/diag'; +/** + * Entrypoint for Diag API. + * Defines Diagnostic handler used for internal diagnostic logging operations. + * The default provides a Noop DiagLogger implementation which may be changed via the + * diag.setLogger(logger: DiagLogger) function. + */ +export declare const diag: DiagAPI; +//# sourceMappingURL=diag-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag-api.js new file mode 100644 index 0000000..41d2658 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag-api.js @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { DiagAPI } from './api/diag'; +/** + * Entrypoint for Diag API. + * Defines Diagnostic handler used for internal diagnostic logging operations. + * The default provides a Noop DiagLogger implementation which may be changed via the + * diag.setLogger(logger: DiagLogger) function. + */ +export const diag = DiagAPI.instance(); +//# sourceMappingURL=diag-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag-api.js.map new file mode 100644 index 0000000..d0be8cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"diag-api.js","sourceRoot":"","sources":["../../src/diag-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { DiagAPI } from './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 */\nexport const diag = DiagAPI.instance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.d.ts new file mode 100644 index 0000000..f060950 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.d.ts @@ -0,0 +1,20 @@ +import { ComponentLoggerOptions, DiagLogger } from './types'; +/** + * Component Logger which is meant to be used as part of any component which + * will add automatically additional namespace in front of the log message. + * It will then forward all message to global diag logger + * @example + * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' }); + * cLogger.debug('test'); + * // @opentelemetry/instrumentation-http test + */ +export declare class DiagComponentLogger implements DiagLogger { + private _namespace; + constructor(props: ComponentLoggerOptions); + debug(...args: any[]): void; + error(...args: any[]): void; + info(...args: any[]): void; + warn(...args: any[]): void; + verbose(...args: any[]): void; +} +//# sourceMappingURL=ComponentLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.js new file mode 100644 index 0000000..1e21dbe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.js @@ -0,0 +1,55 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getGlobal } from '../internal/global-utils'; +/** + * Component Logger which is meant to be used as part of any component which + * will add automatically additional namespace in front of the log message. + * It will then forward all message to global diag logger + * @example + * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' }); + * cLogger.debug('test'); + * // @opentelemetry/instrumentation-http test + */ +export class DiagComponentLogger { + constructor(props) { + this._namespace = props.namespace || 'DiagComponentLogger'; + } + debug(...args) { + return logProxy('debug', this._namespace, args); + } + error(...args) { + return logProxy('error', this._namespace, args); + } + info(...args) { + return logProxy('info', this._namespace, args); + } + warn(...args) { + return logProxy('warn', this._namespace, args); + } + verbose(...args) { + return logProxy('verbose', this._namespace, args); + } +} +function logProxy(funcName, namespace, args) { + const logger = getGlobal('diag'); + // shortcut if logger not set + if (!logger) { + return; + } + args.unshift(namespace); + return logger[funcName](...args); +} +//# sourceMappingURL=ComponentLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.js.map new file mode 100644 index 0000000..c65f5ff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ComponentLogger.js","sourceRoot":"","sources":["../../../src/diag/ComponentLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAmB;IAG9B,YAAY,KAA6B;QACvC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,GAAG,IAAW;QACzB,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,GAAG,IAAW;QACzB,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAEM,IAAI,CAAC,GAAG,IAAW;QACxB,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,IAAI,CAAC,GAAG,IAAW;QACxB,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,OAAO,CAAC,GAAG,IAAW;QAC3B,OAAO,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;CACF;AAED,SAAS,QAAQ,CACf,QAA0B,EAC1B,SAAiB,EACjB,IAAS;IAET,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,6BAA6B;IAC7B,IAAI,CAAC,MAAM,EAAE;QACX,OAAO;KACR;IAED,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAI,IAAoC,CAAC,CAAC;AACpE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { getGlobal } from '../internal/global-utils';\nimport { ComponentLoggerOptions, DiagLogger, DiagLogFunction } from './types';\n\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 */\nexport class DiagComponentLogger implements DiagLogger {\n private _namespace: string;\n\n constructor(props: ComponentLoggerOptions) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n\n public debug(...args: any[]): void {\n return logProxy('debug', this._namespace, args);\n }\n\n public error(...args: any[]): void {\n return logProxy('error', this._namespace, args);\n }\n\n public info(...args: any[]): void {\n return logProxy('info', this._namespace, args);\n }\n\n public warn(...args: any[]): void {\n return logProxy('warn', this._namespace, args);\n }\n\n public verbose(...args: any[]): void {\n return logProxy('verbose', this._namespace, args);\n }\n}\n\nfunction logProxy(\n funcName: keyof DiagLogger,\n namespace: string,\n args: any\n): void {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n\n args.unshift(namespace);\n return logger[funcName](...(args as Parameters));\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.d.ts new file mode 100644 index 0000000..fa3db1e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.d.ts @@ -0,0 +1,38 @@ +import { DiagLogger, DiagLogFunction } from './types'; +/** + * A simple Immutable Console based diagnostic logger which will output any messages to the Console. + * If you want to limit the amount of logging to a specific level or lower use the + * {@link createLogLevelDiagLogger} + */ +export declare class DiagConsoleLogger implements DiagLogger { + constructor(); + /** Log an error scenario that was not expected and caused the requested operation to fail. */ + error: DiagLogFunction; + /** + * Log a warning scenario to inform the developer of an issues that should be investigated. + * The requested operation may or may not have succeeded or completed. + */ + warn: DiagLogFunction; + /** + * Log a general informational message, this should not affect functionality. + * This is also the default logging level so this should NOT be used for logging + * debugging level information. + */ + info: DiagLogFunction; + /** + * Log a general debug message that can be useful for identifying a failure. + * Information logged at this level may include diagnostic details that would + * help identify a failure scenario. Useful scenarios would be to log the execution + * order of async operations + */ + debug: DiagLogFunction; + /** + * Log a detailed (verbose) trace level logging that can be used to identify failures + * where debug level logging would be insufficient, this level of tracing can include + * input and output parameters and as such may include PII information passing through + * the API. As such it is recommended that this level of tracing should not be enabled + * in a production environment. + */ + verbose: DiagLogFunction; +} +//# sourceMappingURL=consoleLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.js new file mode 100644 index 0000000..d81ea30 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.js @@ -0,0 +1,53 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const consoleMap = [ + { n: 'error', c: 'error' }, + { n: 'warn', c: 'warn' }, + { n: 'info', c: 'info' }, + { n: 'debug', c: 'debug' }, + { n: 'verbose', c: 'trace' }, +]; +/** + * A simple Immutable Console based diagnostic logger which will output any messages to the Console. + * If you want to limit the amount of logging to a specific level or lower use the + * {@link createLogLevelDiagLogger} + */ +export class DiagConsoleLogger { + constructor() { + function _consoleFunc(funcName) { + return function (...args) { + if (console) { + // Some environments only expose the console when the F12 developer console is open + // eslint-disable-next-line no-console + let theFunc = console[funcName]; + if (typeof theFunc !== 'function') { + // Not all environments support all functions + // eslint-disable-next-line no-console + theFunc = console.log; + } + // One last final check + if (typeof theFunc === 'function') { + return theFunc.apply(console, args); + } + } + }; + } + for (let i = 0; i < consoleMap.length; i++) { + this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c); + } + } +} +//# sourceMappingURL=consoleLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.js.map new file mode 100644 index 0000000..7498dd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"consoleLogger.js","sourceRoot":"","sources":["../../../src/diag/consoleLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,UAAU,GAAiD;IAC/D,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE;IAC1B,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE;IACxB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE;IACxB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE;IAC1B,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE;CAC7B,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAC5B;QACE,SAAS,YAAY,CAAC,QAAwB;YAC5C,OAAO,UAAU,GAAG,IAAI;gBACtB,IAAI,OAAO,EAAE;oBACX,mFAAmF;oBACnF,sCAAsC;oBACtC,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAChC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;wBACjC,6CAA6C;wBAC7C,sCAAsC;wBACtC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;qBACvB;oBAED,uBAAuB;oBACvB,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;wBACjC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;qBACrC;iBACF;YACH,CAAC,CAAC;QACJ,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD;IACH,CAAC;CAkCF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagLogger, DiagLogFunction } from './types';\n\ntype ConsoleMapKeys = 'error' | 'warn' | 'info' | 'debug' | 'trace';\nconst consoleMap: { n: keyof DiagLogger; c: ConsoleMapKeys }[] = [\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\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 */\nexport class DiagConsoleLogger implements DiagLogger {\n constructor() {\n function _consoleFunc(funcName: ConsoleMapKeys): DiagLogFunction {\n return function (...args) {\n if (console) {\n // Some environments only expose the console when the F12 developer console is open\n // eslint-disable-next-line no-console\n let theFunc = console[funcName];\n if (typeof theFunc !== 'function') {\n // Not all environments support all functions\n // eslint-disable-next-line no-console\n theFunc = console.log;\n }\n\n // One last final check\n if (typeof theFunc === 'function') {\n return theFunc.apply(console, args);\n }\n }\n };\n }\n\n for (let i = 0; i < consoleMap.length; i++) {\n this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n }\n }\n\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n public error!: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n public warn!: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n public info!: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario. Useful scenarios would be to log the execution\n * order of async operations\n */\n public debug!: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n public verbose!: DiagLogFunction;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.d.ts new file mode 100644 index 0000000..890b9f1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.d.ts @@ -0,0 +1,3 @@ +import { DiagLogger, DiagLogLevel } from '../types'; +export declare function createLogLevelDiagLogger(maxLevel: DiagLogLevel, logger: DiagLogger): DiagLogger; +//# sourceMappingURL=logLevelLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.js new file mode 100644 index 0000000..6abf21b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.js @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { DiagLogLevel } from '../types'; +export function createLogLevelDiagLogger(maxLevel, logger) { + if (maxLevel < DiagLogLevel.NONE) { + maxLevel = DiagLogLevel.NONE; + } + else if (maxLevel > DiagLogLevel.ALL) { + maxLevel = DiagLogLevel.ALL; + } + // In case the logger is null or undefined + logger = logger || {}; + function _filterFunc(funcName, theLevel) { + const theFunc = logger[funcName]; + if (typeof theFunc === 'function' && maxLevel >= theLevel) { + return theFunc.bind(logger); + } + return function () { }; + } + return { + error: _filterFunc('error', DiagLogLevel.ERROR), + warn: _filterFunc('warn', DiagLogLevel.WARN), + info: _filterFunc('info', DiagLogLevel.INFO), + debug: _filterFunc('debug', DiagLogLevel.DEBUG), + verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE), + }; +} +//# sourceMappingURL=logLevelLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.js.map new file mode 100644 index 0000000..ac34251 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logLevelLogger.js","sourceRoot":"","sources":["../../../../src/diag/internal/logLevelLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAA+B,YAAY,EAAE,MAAM,UAAU,CAAC;AAErE,MAAM,UAAU,wBAAwB,CACtC,QAAsB,EACtB,MAAkB;IAElB,IAAI,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE;QAChC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;KAC9B;SAAM,IAAI,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE;QACtC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC;KAC7B;IAED,0CAA0C;IAC1C,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IAEtB,SAAS,WAAW,CAClB,QAA0B,EAC1B,QAAsB;QAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjC,IAAI,OAAO,OAAO,KAAK,UAAU,IAAI,QAAQ,IAAI,QAAQ,EAAE;YACzD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;QACD,OAAO,cAAa,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;QAC/C,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;QAC5C,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;QAC5C,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;QAC/C,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC;KACtD,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagLogFunction, DiagLogger, DiagLogLevel } from '../types';\n\nexport function createLogLevelDiagLogger(\n maxLevel: DiagLogLevel,\n logger: DiagLogger\n): DiagLogger {\n if (maxLevel < DiagLogLevel.NONE) {\n maxLevel = DiagLogLevel.NONE;\n } else if (maxLevel > DiagLogLevel.ALL) {\n maxLevel = DiagLogLevel.ALL;\n }\n\n // In case the logger is null or undefined\n logger = logger || {};\n\n function _filterFunc(\n funcName: keyof DiagLogger,\n theLevel: DiagLogLevel\n ): DiagLogFunction {\n const theFunc = logger[funcName];\n\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () {};\n }\n\n return {\n error: _filterFunc('error', DiagLogLevel.ERROR),\n warn: _filterFunc('warn', DiagLogLevel.WARN),\n info: _filterFunc('info', DiagLogLevel.INFO),\n debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.d.ts new file mode 100644 index 0000000..ac71ee3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.d.ts @@ -0,0 +1,8 @@ +import { DiagLogger } from '../types'; +/** + * Returns a No-Op Diagnostic logger where all messages do nothing. + * @implements {@link DiagLogger} + * @returns {DiagLogger} + */ +export declare function createNoopDiagLogger(): DiagLogger; +//# sourceMappingURL=noopLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.js new file mode 100644 index 0000000..7d5ba63 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.js @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function noopLogFunction() { } +/** + * Returns a No-Op Diagnostic logger where all messages do nothing. + * @implements {@link DiagLogger} + * @returns {DiagLogger} + */ +export function createNoopDiagLogger() { + return { + verbose: noopLogFunction, + debug: noopLogFunction, + info: noopLogFunction, + warn: noopLogFunction, + error: noopLogFunction, + }; +} +//# sourceMappingURL=noopLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.js.map new file mode 100644 index 0000000..bf20aea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"noopLogger.js","sourceRoot":"","sources":["../../../../src/diag/internal/noopLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,SAAS,eAAe,KAAI,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,eAAe;KACvB,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagLogger } from '../types';\n\nfunction noopLogFunction() {}\n\n/**\n * Returns a No-Op Diagnostic logger where all messages do nothing.\n * @implements {@link DiagLogger}\n * @returns {DiagLogger}\n */\nexport function createNoopDiagLogger(): DiagLogger {\n return {\n verbose: noopLogFunction,\n debug: noopLogFunction,\n info: noopLogFunction,\n warn: noopLogFunction,\n error: noopLogFunction,\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/types.d.ts new file mode 100644 index 0000000..e992cc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/types.d.ts @@ -0,0 +1,100 @@ +export declare type DiagLogFunction = (message: string, ...args: unknown[]) => void; +/** + * Defines an internal diagnostic logger interface which is used to log internal diagnostic + * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function. + * API provided implementations include :- + * - a No-Op {@link createNoopDiagLogger} + * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger} + * - a general Console {@link DiagConsoleLogger} version. + */ +export interface DiagLogger { + /** Log an error scenario that was not expected and caused the requested operation to fail. */ + error: DiagLogFunction; + /** + * Log a warning scenario to inform the developer of an issues that should be investigated. + * The requested operation may or may not have succeeded or completed. + */ + warn: DiagLogFunction; + /** + * Log a general informational message, this should not affect functionality. + * This is also the default logging level so this should NOT be used for logging + * debugging level information. + */ + info: DiagLogFunction; + /** + * Log a general debug message that can be useful for identifying a failure. + * Information logged at this level may include diagnostic details that would + * help identify a failure scenario. + * For example: Logging the order of execution of async operations. + */ + debug: DiagLogFunction; + /** + * Log a detailed (verbose) trace level logging that can be used to identify failures + * where debug level logging would be insufficient, this level of tracing can include + * input and output parameters and as such may include PII information passing through + * the API. As such it is recommended that this level of tracing should not be enabled + * in a production environment. + */ + verbose: DiagLogFunction; +} +/** + * Defines the available internal logging levels for the diagnostic logger, the numeric values + * of the levels are defined to match the original values from the initial LogLevel to avoid + * compatibility/migration issues for any implementation that assume the numeric ordering. + */ +export declare enum DiagLogLevel { + /** Diagnostic Logging level setting to disable all logging (except and forced logs) */ + NONE = 0, + /** Identifies an error scenario */ + ERROR = 30, + /** Identifies a warning scenario */ + WARN = 50, + /** General informational log message */ + INFO = 60, + /** General debug log message */ + DEBUG = 70, + /** + * Detailed trace level logging should only be used for development, should only be set + * in a development environment. + */ + VERBOSE = 80, + /** Used to set the logging level to include all logging */ + ALL = 9999 +} +/** + * Defines options for ComponentLogger + */ +export interface ComponentLoggerOptions { + namespace: string; +} +export interface DiagLoggerOptions { + /** + * The {@link DiagLogLevel} used to filter logs sent to the logger. + * + * @defaultValue DiagLogLevel.INFO + */ + logLevel?: DiagLogLevel; + /** + * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered. + */ + suppressOverrideMessage?: boolean; +} +export interface DiagLoggerApi { + /** + * Set the global DiagLogger and DiagLogLevel. + * If a global diag logger is already set, this will override it. + * + * @param logger - The {@link DiagLogger} instance to set as the default logger. + * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set. + * @returns `true` if the logger was successfully registered, else `false` + */ + setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean; + /** + * + * @param logger - The {@link DiagLogger} instance to set as the default logger. + * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}. + * @returns `true` if the logger was successfully registered, else `false` + */ + setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/types.js new file mode 100644 index 0000000..306585e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/types.js @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Defines the available internal logging levels for the diagnostic logger, the numeric values + * of the levels are defined to match the original values from the initial LogLevel to avoid + * compatibility/migration issues for any implementation that assume the numeric ordering. + */ +export var DiagLogLevel; +(function (DiagLogLevel) { + /** Diagnostic Logging level setting to disable all logging (except and forced logs) */ + DiagLogLevel[DiagLogLevel["NONE"] = 0] = "NONE"; + /** Identifies an error scenario */ + DiagLogLevel[DiagLogLevel["ERROR"] = 30] = "ERROR"; + /** Identifies a warning scenario */ + DiagLogLevel[DiagLogLevel["WARN"] = 50] = "WARN"; + /** General informational log message */ + DiagLogLevel[DiagLogLevel["INFO"] = 60] = "INFO"; + /** General debug log message */ + DiagLogLevel[DiagLogLevel["DEBUG"] = 70] = "DEBUG"; + /** + * Detailed trace level logging should only be used for development, should only be set + * in a development environment. + */ + DiagLogLevel[DiagLogLevel["VERBOSE"] = 80] = "VERBOSE"; + /** Used to set the logging level to include all logging */ + DiagLogLevel[DiagLogLevel["ALL"] = 9999] = "ALL"; +})(DiagLogLevel || (DiagLogLevel = {})); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/types.js.map new file mode 100644 index 0000000..6578cce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/diag/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/diag/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+CH;;;;GAIG;AACH,MAAM,CAAN,IAAY,YAwBX;AAxBD,WAAY,YAAY;IACtB,uFAAuF;IACvF,+CAAQ,CAAA;IAER,mCAAmC;IACnC,kDAAU,CAAA;IAEV,oCAAoC;IACpC,gDAAS,CAAA;IAET,wCAAwC;IACxC,gDAAS,CAAA;IAET,gCAAgC;IAChC,kDAAU,CAAA;IAEV;;;OAGG;IACH,sDAAY,CAAA;IAEZ,2DAA2D;IAC3D,gDAAU,CAAA;AACZ,CAAC,EAxBW,YAAY,KAAZ,YAAY,QAwBvB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type DiagLogFunction = (message: string, ...args: unknown[]) => void;\n\n/**\n * Defines an internal diagnostic logger interface which is used to log internal diagnostic\n * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function.\n * API provided implementations include :-\n * - a No-Op {@link createNoopDiagLogger}\n * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger}\n * - a general Console {@link DiagConsoleLogger} version.\n */\nexport interface DiagLogger {\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n error: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n warn: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n info: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario.\n * For example: Logging the order of execution of async operations.\n */\n debug: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n verbose: DiagLogFunction;\n}\n\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 */\nexport enum DiagLogLevel {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n NONE = 0,\n\n /** Identifies an error scenario */\n ERROR = 30,\n\n /** Identifies a warning scenario */\n WARN = 50,\n\n /** General informational log message */\n INFO = 60,\n\n /** General debug log message */\n DEBUG = 70,\n\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n VERBOSE = 80,\n\n /** Used to set the logging level to include all logging */\n ALL = 9999,\n}\n\n/**\n * Defines options for ComponentLogger\n */\nexport interface ComponentLoggerOptions {\n namespace: string;\n}\n\nexport interface DiagLoggerOptions {\n /**\n * The {@link DiagLogLevel} used to filter logs sent to the logger.\n *\n * @defaultValue DiagLogLevel.INFO\n */\n logLevel?: DiagLogLevel;\n\n /**\n * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered.\n */\n suppressOverrideMessage?: boolean;\n}\n\nexport interface DiagLoggerApi {\n /**\n * Set the global DiagLogger and DiagLogLevel.\n * If a global diag logger is already set, this will override it.\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean;\n\n /**\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/index.d.ts new file mode 100644 index 0000000..bec3965 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/index.d.ts @@ -0,0 +1,3 @@ +export { wrapTracer, SugaredTracer } from './trace/SugaredTracer'; +export { SugaredSpanOptions } from './trace/SugaredOptions'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/index.js new file mode 100644 index 0000000..8400e49 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { wrapTracer, SugaredTracer } from './trace/SugaredTracer'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/index.js.map new file mode 100644 index 0000000..d1699d9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/experimental/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { wrapTracer, SugaredTracer } from './trace/SugaredTracer';\nexport { SugaredSpanOptions } from './trace/SugaredOptions';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.d.ts new file mode 100644 index 0000000..89040af --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.d.ts @@ -0,0 +1,13 @@ +import { Span, SpanOptions } from '../../'; +/** + * Options needed for span creation + */ +export interface SugaredSpanOptions extends SpanOptions { + /** + * function to overwrite default exception behavior to record the exception. No exceptions should be thrown in the function. + * @param e Error which triggered this exception + * @param span current span from context + */ + onException?: (e: Error, span: Span) => void; +} +//# sourceMappingURL=SugaredOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.js new file mode 100644 index 0000000..0c6a2bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=SugaredOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.js.map new file mode 100644 index 0000000..2a18a56 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SugaredOptions.js","sourceRoot":"","sources":["../../../../src/experimental/trace/SugaredOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Span, SpanOptions } from '../../';\n\n/**\n * Options needed for span creation\n */\nexport interface SugaredSpanOptions extends SpanOptions {\n /**\n * function to overwrite default exception behavior to record the exception. No exceptions should be thrown in the function.\n * @param e Error which triggered this exception\n * @param span current span from context\n */\n onException?: (e: Error, span: Span) => void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.d.ts new file mode 100644 index 0000000..1ba7da9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.d.ts @@ -0,0 +1,64 @@ +import { SugaredSpanOptions } from './SugaredOptions'; +import { Context, Span, Tracer } from '../../'; +/** + * return a new SugaredTracer created from the supplied one + * @param tracer + */ +export declare function wrapTracer(tracer: Tracer): SugaredTracer; +export declare class SugaredTracer implements Tracer { + private readonly _tracer; + constructor(tracer: Tracer); + startActiveSpan: Tracer['startActiveSpan']; + startSpan: Tracer['startSpan']; + /** + * Starts a new {@link Span} and calls the given function passing it the + * created span as first argument. + * Additionally, the new span gets set in context and this context is activated + * for the duration of the function call. + * The span will be closed after the function has executed. + * If an exception occurs, it is recorded, the status is set to ERROR and the exception is rethrown. + * + * @param name The name of the span + * @param [options] SugaredSpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns return value of fn + * @example + * const something = tracer.withActiveSpan('op', span => { + * // do some work + * }); + * @example + * const something = await tracer.withActiveSpan('op', span => { + * // do some async work + * }); + */ + withActiveSpan ReturnType>(name: string, fn: F): ReturnType; + withActiveSpan ReturnType>(name: string, options: SugaredSpanOptions, fn: F): ReturnType; + withActiveSpan ReturnType>(name: string, options: SugaredSpanOptions, context: Context, fn: F): ReturnType; + /** + * Starts a new {@link Span} and ends it after execution of fn without setting it on context. + * The span will be closed after the function has executed. + * If an exception occurs, it is recorded, the status is et to ERROR and rethrown. + * + * This method does NOT modify the current Context. + * + * @param name The name of the span + * @param [options] SugaredSpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns Span The newly created span + * @example + * const something = tracer.withSpan('op', span => { + * // do some work + * }); + * @example + * const something = await tracer.withSpan('op', span => { + * // do some async work + * }); + */ + withSpan ReturnType>(name: string, fn: F): ReturnType; + withSpan ReturnType>(name: string, options: SugaredSpanOptions, fn: F): ReturnType; + withSpan ReturnType>(name: string, options: SugaredSpanOptions, context: Context, fn: F): ReturnType; + withSpan ReturnType>(name: string, options: SugaredSpanOptions, context: Context, fn: F): ReturnType; +} +//# sourceMappingURL=SugaredTracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.js new file mode 100644 index 0000000..a1edc7f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.js @@ -0,0 +1,88 @@ +import { context, SpanStatusCode } from '../../'; +const defaultOnException = (e, span) => { + span.recordException(e); + span.setStatus({ + code: SpanStatusCode.ERROR, + }); +}; +/** + * return a new SugaredTracer created from the supplied one + * @param tracer + */ +export function wrapTracer(tracer) { + return new SugaredTracer(tracer); +} +export class SugaredTracer { + constructor(tracer) { + this._tracer = tracer; + this.startSpan = tracer.startSpan.bind(this._tracer); + this.startActiveSpan = tracer.startActiveSpan.bind(this._tracer); + } + withActiveSpan(name, arg2, arg3, arg4) { + const { opts, ctx, fn } = massageParams(arg2, arg3, arg4); + return this._tracer.startActiveSpan(name, opts, ctx, (span) => handleFn(span, opts, fn)); + } + withSpan(name, arg2, arg3, arg4) { + const { opts, ctx, fn } = massageParams(arg2, arg3, arg4); + const span = this._tracer.startSpan(name, opts, ctx); + return handleFn(span, opts, fn); + } +} +/** + * Massages parameters of withSpan and withActiveSpan to allow signature overwrites + * @param arg + * @param arg2 + * @param arg3 + */ +function massageParams(arg, arg2, arg3) { + let opts; + let ctx; + let fn; + if (!arg2 && !arg3) { + fn = arg; + } + else if (!arg3) { + opts = arg; + fn = arg2; + } + else { + opts = arg; + ctx = arg2; + fn = arg3; + } + opts = opts !== null && opts !== void 0 ? opts : {}; + ctx = ctx !== null && ctx !== void 0 ? ctx : context.active(); + return { opts, ctx, fn }; +} +/** + * Executes fn, returns results and runs onException in the case of exception to allow overwriting of error handling + * @param span + * @param opts + * @param fn + */ +function handleFn(span, opts, fn) { + var _a; + const onException = (_a = opts.onException) !== null && _a !== void 0 ? _a : defaultOnException; + const errorHandler = (e) => { + onException(e, span); + span.end(); + throw e; + }; + try { + const ret = fn(span); + // if fn is an async function, attach a recordException and spanEnd callback to the promise + if (typeof (ret === null || ret === void 0 ? void 0 : ret.then) === 'function') { + return ret.then(val => { + span.end(); + return val; + }, errorHandler); + } + span.end(); + return ret; + } + catch (e) { + // add throw to signal the compiler that this will throw in the inner scope + throw errorHandler(e); + } +} +//# sourceMappingURL=SugaredTracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.js.map new file mode 100644 index 0000000..600ea54 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SugaredTracer.js","sourceRoot":"","sources":["../../../../src/experimental/trace/SugaredTracer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SugaredSpanOptions } from './SugaredOptions';\nimport { context, Context, Span, SpanStatusCode, Tracer } from '../../';\n\nconst defaultOnException = (e: Error, span: Span) => {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n });\n};\n\n/**\n * return a new SugaredTracer created from the supplied one\n * @param tracer\n */\nexport function wrapTracer(tracer: Tracer): SugaredTracer {\n return new SugaredTracer(tracer);\n}\n\nexport class SugaredTracer implements Tracer {\n private readonly _tracer: Tracer;\n\n constructor(tracer: Tracer) {\n this._tracer = tracer;\n this.startSpan = tracer.startSpan.bind(this._tracer);\n this.startActiveSpan = tracer.startActiveSpan.bind(this._tracer);\n }\n\n startActiveSpan: Tracer['startActiveSpan'];\n startSpan: Tracer['startSpan'];\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally, the new span gets set in context and this context is activated\n * for the duration of the function call.\n * The span will be closed after the function has executed.\n * If an exception occurs, it is recorded, the status is set to ERROR and the exception is rethrown.\n *\n * @param name The name of the span\n * @param [options] SugaredSpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.withActiveSpan('op', span => {\n * // do some work\n * });\n * @example\n * const something = await tracer.withActiveSpan('op', span => {\n * // do some async work\n * });\n */\n withActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n withActiveSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n fn: F\n ): ReturnType;\n withActiveSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n withActiveSpan ReturnType>(\n name: string,\n arg2: F | SugaredSpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType {\n const { opts, ctx, fn } = massageParams(arg2, arg3, arg4);\n\n return this._tracer.startActiveSpan(name, opts, ctx, (span: Span) =>\n handleFn(span, opts, fn)\n ) as ReturnType;\n }\n\n /**\n * Starts a new {@link Span} and ends it after execution of fn without setting it on context.\n * The span will be closed after the function has executed.\n * If an exception occurs, it is recorded, the status is et to ERROR and rethrown.\n *\n * This method does NOT modify the current Context.\n *\n * @param name The name of the span\n * @param [options] SugaredSpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns Span The newly created span\n * @example\n * const something = tracer.withSpan('op', span => {\n * // do some work\n * });\n * @example\n * const something = await tracer.withSpan('op', span => {\n * // do some async work\n * });\n */\n withSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n arg2: SugaredSpanOptions | F,\n arg3?: Context | F,\n arg4?: F\n ): ReturnType {\n const { opts, ctx, fn } = massageParams(arg2, arg3, arg4);\n\n const span = this._tracer.startSpan(name, opts, ctx);\n return handleFn(span, opts, fn) as ReturnType;\n }\n}\n\n/**\n * Massages parameters of withSpan and withActiveSpan to allow signature overwrites\n * @param arg\n * @param arg2\n * @param arg3\n */\nfunction massageParams ReturnType>(\n arg: F | SugaredSpanOptions,\n arg2?: F | Context,\n arg3?: F\n) {\n let opts: SugaredSpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (!arg2 && !arg3) {\n fn = arg as F;\n } else if (!arg3) {\n opts = arg as SugaredSpanOptions;\n fn = arg2 as F;\n } else {\n opts = arg as SugaredSpanOptions;\n ctx = arg2 as Context;\n fn = arg3 as F;\n }\n opts = opts ?? {};\n ctx = ctx ?? context.active();\n\n return { opts, ctx, fn };\n}\n\n/**\n * Executes fn, returns results and runs onException in the case of exception to allow overwriting of error handling\n * @param span\n * @param opts\n * @param fn\n */\nfunction handleFn ReturnType>(\n span: Span,\n opts: SugaredSpanOptions,\n fn: F\n): ReturnType {\n const onException = opts.onException ?? defaultOnException;\n const errorHandler = (e: Error) => {\n onException(e, span);\n span.end();\n throw e;\n };\n\n try {\n const ret = fn(span) as Promise>;\n // if fn is an async function, attach a recordException and spanEnd callback to the promise\n if (typeof ret?.then === 'function') {\n return ret.then(val => {\n span.end();\n return val;\n }, errorHandler) as ReturnType;\n }\n span.end();\n return ret as ReturnType;\n } catch (e) {\n // add throw to signal the compiler that this will throw in the inner scope\n throw errorHandler(e);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/index.d.ts new file mode 100644 index 0000000..eea88f2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/index.d.ts @@ -0,0 +1,54 @@ +export { BaggageEntry, BaggageEntryMetadata, Baggage } from './baggage/types'; +export { baggageEntryMetadataFromString } from './baggage/utils'; +export { Exception } from './common/Exception'; +export { HrTime, TimeInput } from './common/Time'; +export { Attributes, AttributeValue } from './common/Attributes'; +export { createContextKey, ROOT_CONTEXT } from './context/context'; +export { Context, ContextManager } from './context/types'; +export type { ContextAPI } from './api/context'; +export { DiagConsoleLogger } from './diag/consoleLogger'; +export { DiagLogFunction, DiagLogger, DiagLogLevel, ComponentLoggerOptions, DiagLoggerOptions, } from './diag/types'; +export type { DiagAPI } from './api/diag'; +export { createNoopMeter } from './metrics/NoopMeter'; +export { MeterOptions, Meter } from './metrics/Meter'; +export { MeterProvider } from './metrics/MeterProvider'; +export { ValueType, Counter, Gauge, Histogram, MetricOptions, Observable, ObservableCounter, ObservableGauge, ObservableUpDownCounter, UpDownCounter, BatchObservableCallback, MetricAdvice, MetricAttributes, MetricAttributeValue, ObservableCallback, } from './metrics/Metric'; +export { BatchObservableResult, ObservableResult, } from './metrics/ObservableResult'; +export type { MetricsAPI } from './api/metrics'; +export { TextMapPropagator, TextMapSetter, TextMapGetter, defaultTextMapGetter, defaultTextMapSetter, } from './propagation/TextMapPropagator'; +export type { PropagationAPI } from './api/propagation'; +export { SpanAttributes, SpanAttributeValue } from './trace/attributes'; +export { Link } from './trace/link'; +export { ProxyTracer, TracerDelegator } from './trace/ProxyTracer'; +export { ProxyTracerProvider } from './trace/ProxyTracerProvider'; +export { Sampler } from './trace/Sampler'; +export { SamplingDecision, SamplingResult } from './trace/SamplingResult'; +export { SpanContext } from './trace/span_context'; +export { SpanKind } from './trace/span_kind'; +export { Span } from './trace/span'; +export { SpanOptions } from './trace/SpanOptions'; +export { SpanStatus, SpanStatusCode } from './trace/status'; +export { TraceFlags } from './trace/trace_flags'; +export { TraceState } from './trace/trace_state'; +export { createTraceState } from './trace/internal/utils'; +export { TracerProvider } from './trace/tracer_provider'; +export { Tracer } from './trace/tracer'; +export { TracerOptions } from './trace/tracer_options'; +export { isSpanContextValid, isValidTraceId, isValidSpanId, } from './trace/spancontext-utils'; +export { INVALID_SPANID, INVALID_TRACEID, INVALID_SPAN_CONTEXT, } from './trace/invalid-span-constants'; +export type { TraceAPI } from './api/trace'; +import { context } from './context-api'; +import { diag } from './diag-api'; +import { metrics } from './metrics-api'; +import { propagation } from './propagation-api'; +import { trace } from './trace-api'; +export { context, diag, metrics, propagation, trace }; +declare const _default: { + context: import("./api/context").ContextAPI; + diag: import("./api/diag").DiagAPI; + metrics: import("./api/metrics").MetricsAPI; + propagation: import("./api/propagation").PropagationAPI; + trace: import("./api/trace").TraceAPI; +}; +export default _default; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/index.js new file mode 100644 index 0000000..123dc4d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/index.js @@ -0,0 +1,53 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { baggageEntryMetadataFromString } from './baggage/utils'; +// Context APIs +export { createContextKey, ROOT_CONTEXT } from './context/context'; +// Diag APIs +export { DiagConsoleLogger } from './diag/consoleLogger'; +export { DiagLogLevel, } from './diag/types'; +// Metrics APIs +export { createNoopMeter } from './metrics/NoopMeter'; +export { ValueType, } from './metrics/Metric'; +// Propagation APIs +export { defaultTextMapGetter, defaultTextMapSetter, } from './propagation/TextMapPropagator'; +export { ProxyTracer } from './trace/ProxyTracer'; +export { ProxyTracerProvider } from './trace/ProxyTracerProvider'; +export { SamplingDecision } from './trace/SamplingResult'; +export { SpanKind } from './trace/span_kind'; +export { SpanStatusCode } from './trace/status'; +export { TraceFlags } from './trace/trace_flags'; +export { createTraceState } from './trace/internal/utils'; +export { isSpanContextValid, isValidTraceId, isValidSpanId, } from './trace/spancontext-utils'; +export { INVALID_SPANID, INVALID_TRACEID, INVALID_SPAN_CONTEXT, } from './trace/invalid-span-constants'; +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { context } from './context-api'; +import { diag } from './diag-api'; +import { metrics } from './metrics-api'; +import { propagation } from './propagation-api'; +import { trace } from './trace-api'; +// Named export. +export { context, diag, metrics, propagation, trace }; +// Default export. +export default { + context, + diag, + metrics, + propagation, + trace, +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/index.js.map new file mode 100644 index 0000000..d53dae4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAKjE,eAAe;AACf,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAInE,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAGL,YAAY,GAGb,MAAM,cAAc,CAAC;AAGtB,eAAe;AACf,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EACL,SAAS,GAeV,MAAM,kBAAkB,CAAC;AAO1B,mBAAmB;AACnB,OAAO,EAIL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,WAAW,EAAmB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAc,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,EACd,eAAe,EACf,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AAGxC,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,gBAAgB;AAChB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACtD,kBAAkB;AAClB,eAAe;IACb,OAAO;IACP,IAAI;IACJ,OAAO;IACP,WAAW;IACX,KAAK;CACN,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BaggageEntry, BaggageEntryMetadata, Baggage } from './baggage/types';\nexport { baggageEntryMetadataFromString } from './baggage/utils';\nexport { Exception } from './common/Exception';\nexport { HrTime, TimeInput } from './common/Time';\nexport { Attributes, AttributeValue } from './common/Attributes';\n\n// Context APIs\nexport { createContextKey, ROOT_CONTEXT } from './context/context';\nexport { Context, ContextManager } from './context/types';\nexport type { ContextAPI } from './api/context';\n\n// Diag APIs\nexport { DiagConsoleLogger } from './diag/consoleLogger';\nexport {\n DiagLogFunction,\n DiagLogger,\n DiagLogLevel,\n ComponentLoggerOptions,\n DiagLoggerOptions,\n} from './diag/types';\nexport type { DiagAPI } from './api/diag';\n\n// Metrics APIs\nexport { createNoopMeter } from './metrics/NoopMeter';\nexport { MeterOptions, Meter } from './metrics/Meter';\nexport { MeterProvider } from './metrics/MeterProvider';\nexport {\n ValueType,\n Counter,\n Gauge,\n Histogram,\n MetricOptions,\n Observable,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n BatchObservableCallback,\n MetricAdvice,\n MetricAttributes,\n MetricAttributeValue,\n ObservableCallback,\n} from './metrics/Metric';\nexport {\n BatchObservableResult,\n ObservableResult,\n} from './metrics/ObservableResult';\nexport type { MetricsAPI } from './api/metrics';\n\n// Propagation APIs\nexport {\n TextMapPropagator,\n TextMapSetter,\n TextMapGetter,\n defaultTextMapGetter,\n defaultTextMapSetter,\n} from './propagation/TextMapPropagator';\nexport type { PropagationAPI } from './api/propagation';\n\n// Trace APIs\nexport { SpanAttributes, SpanAttributeValue } from './trace/attributes';\nexport { Link } from './trace/link';\nexport { ProxyTracer, TracerDelegator } from './trace/ProxyTracer';\nexport { ProxyTracerProvider } from './trace/ProxyTracerProvider';\nexport { Sampler } from './trace/Sampler';\nexport { SamplingDecision, SamplingResult } from './trace/SamplingResult';\nexport { SpanContext } from './trace/span_context';\nexport { SpanKind } from './trace/span_kind';\nexport { Span } from './trace/span';\nexport { SpanOptions } from './trace/SpanOptions';\nexport { SpanStatus, SpanStatusCode } from './trace/status';\nexport { TraceFlags } from './trace/trace_flags';\nexport { TraceState } from './trace/trace_state';\nexport { createTraceState } from './trace/internal/utils';\nexport { TracerProvider } from './trace/tracer_provider';\nexport { Tracer } from './trace/tracer';\nexport { TracerOptions } from './trace/tracer_options';\nexport {\n isSpanContextValid,\n isValidTraceId,\n isValidSpanId,\n} from './trace/spancontext-utils';\nexport {\n INVALID_SPANID,\n INVALID_TRACEID,\n INVALID_SPAN_CONTEXT,\n} from './trace/invalid-span-constants';\nexport type { TraceAPI } from './api/trace';\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { context } from './context-api';\nimport { diag } from './diag-api';\nimport { metrics } from './metrics-api';\nimport { propagation } from './propagation-api';\nimport { trace } from './trace-api';\n\n// Named export.\nexport { context, diag, metrics, propagation, trace };\n// Default export.\nexport default {\n context,\n diag,\n metrics,\n propagation,\n trace,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.d.ts new file mode 100644 index 0000000..320db97 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.d.ts @@ -0,0 +1,18 @@ +import { MeterProvider } from '../metrics/MeterProvider'; +import { ContextManager } from '../context/types'; +import { DiagLogger } from '../diag/types'; +import { TextMapPropagator } from '../propagation/TextMapPropagator'; +import type { TracerProvider } from '../trace/tracer_provider'; +export declare function registerGlobal(type: Type, instance: OTelGlobalAPI[Type], diag: DiagLogger, allowOverride?: boolean): boolean; +export declare function getGlobal(type: Type): OTelGlobalAPI[Type] | undefined; +export declare function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger): void; +declare type OTelGlobalAPI = { + version: string; + diag?: DiagLogger; + trace?: TracerProvider; + context?: ContextManager; + metrics?: MeterProvider; + propagation?: TextMapPropagator; +}; +export {}; +//# sourceMappingURL=global-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.js new file mode 100644 index 0000000..acdd185 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.js @@ -0,0 +1,58 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { _globalThis } from '../platform'; +import { VERSION } from '../version'; +import { isCompatible } from './semver'; +const major = VERSION.split('.')[0]; +const GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(`opentelemetry.js.api.${major}`); +const _global = _globalThis; +export function registerGlobal(type, instance, diag, allowOverride = false) { + var _a; + const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : { + version: VERSION, + }); + if (!allowOverride && api[type]) { + // already registered an API of this type + const err = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${type}`); + diag.error(err.stack || err.message); + return false; + } + if (api.version !== VERSION) { + // All registered APIs must be of the same version exactly + const err = new Error(`@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${VERSION}`); + diag.error(err.stack || err.message); + return false; + } + api[type] = instance; + diag.debug(`@opentelemetry/api: Registered a global for ${type} v${VERSION}.`); + return true; +} +export function getGlobal(type) { + var _a, _b; + const globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version; + if (!globalVersion || !isCompatible(globalVersion)) { + return; + } + return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type]; +} +export function unregisterGlobal(type, diag) { + diag.debug(`@opentelemetry/api: Unregistering a global for ${type} v${VERSION}.`); + const api = _global[GLOBAL_OPENTELEMETRY_API_KEY]; + if (api) { + delete api[type]; + } +} +//# sourceMappingURL=global-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.js.map new file mode 100644 index 0000000..6c95b12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-utils.js","sourceRoot":"","sources":["../../../src/internal/global-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,MAAM,4BAA4B,GAAG,MAAM,CAAC,GAAG,CAC7C,wBAAwB,KAAK,EAAE,CAChC,CAAC;AAEF,MAAM,OAAO,GAAG,WAAyB,CAAC;AAE1C,MAAM,UAAU,cAAc,CAC5B,IAAU,EACV,QAA6B,EAC7B,IAAgB,EAChB,aAAa,GAAG,KAAK;;IAErB,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAA,OAAO,CAC1D,4BAA4B,CAC7B,mCAAI;QACH,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE;QAC/B,yCAAyC;QACzC,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,gEAAgE,IAAI,EAAE,CACvE,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;KACd;IAED,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE;QAC3B,0DAA0D;QAC1D,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,gDAAgD,GAAG,CAAC,OAAO,QAAQ,IAAI,8CAA8C,OAAO,EAAE,CAC/H,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;KACd;IAED,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;IACrB,IAAI,CAAC,KAAK,CACR,+CAA+C,IAAI,KAAK,OAAO,GAAG,CACnE,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,IAAU;;IAEV,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,4BAA4B,CAAC,0CAAE,OAAO,CAAC;IACrE,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;QAClD,OAAO;KACR;IACD,OAAO,MAAA,OAAO,CAAC,4BAA4B,CAAC,0CAAG,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAyB,EAAE,IAAgB;IAC1E,IAAI,CAAC,KAAK,CACR,kDAAkD,IAAI,KAAK,OAAO,GAAG,CACtE,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAElD,IAAI,GAAG,EAAE;QACP,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;KAClB;AACH,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { ContextManager } from '../context/types';\nimport { DiagLogger } from '../diag/types';\nimport { _globalThis } from '../platform';\nimport { TextMapPropagator } from '../propagation/TextMapPropagator';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\n\nconst major = VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\n `opentelemetry.js.api.${major}`\n);\n\nconst _global = _globalThis as OTelGlobal;\n\nexport function registerGlobal(\n type: Type,\n instance: OTelGlobalAPI[Type],\n diag: DiagLogger,\n allowOverride = false\n): boolean {\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = _global[\n GLOBAL_OPENTELEMETRY_API_KEY\n ] ?? {\n version: VERSION,\n });\n\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(\n `@opentelemetry/api: Attempted duplicate registration of API: ${type}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n if (api.version !== VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(\n `@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${VERSION}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n api[type] = instance;\n diag.debug(\n `@opentelemetry/api: Registered a global for ${type} v${VERSION}.`\n );\n\n return true;\n}\n\nexport function getGlobal(\n type: Type\n): OTelGlobalAPI[Type] | undefined {\n const globalVersion = _global[GLOBAL_OPENTELEMETRY_API_KEY]?.version;\n if (!globalVersion || !isCompatible(globalVersion)) {\n return;\n }\n return _global[GLOBAL_OPENTELEMETRY_API_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger) {\n diag.debug(\n `@opentelemetry/api: Unregistering a global for ${type} v${VERSION}.`\n );\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n\n if (api) {\n delete api[type];\n }\n}\n\ntype OTelGlobal = {\n [GLOBAL_OPENTELEMETRY_API_KEY]?: OTelGlobalAPI;\n};\n\ntype OTelGlobalAPI = {\n version: string;\n\n diag?: DiagLogger;\n trace?: TracerProvider;\n context?: ContextManager;\n metrics?: MeterProvider;\n propagation?: TextMapPropagator;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/semver.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/semver.d.ts new file mode 100644 index 0000000..d9f4259 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/semver.d.ts @@ -0,0 +1,34 @@ +/** + * Create a function to test an API version to see if it is compatible with the provided ownVersion. + * + * The returned function has the following semantics: + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param ownVersion version which should be checked against + */ +export declare function _makeCompatibilityCheck(ownVersion: string): (globalVersion: string) => boolean; +/** + * Test an API version to see if it is compatible with this API. + * + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param version version of the API requesting an instance of the global API + */ +export declare const isCompatible: (globalVersion: string) => boolean; +//# sourceMappingURL=semver.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/semver.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/semver.js new file mode 100644 index 0000000..85e5980 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/semver.js @@ -0,0 +1,118 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { VERSION } from '../version'; +const re = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/; +/** + * Create a function to test an API version to see if it is compatible with the provided ownVersion. + * + * The returned function has the following semantics: + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param ownVersion version which should be checked against + */ +export function _makeCompatibilityCheck(ownVersion) { + const acceptedVersions = new Set([ownVersion]); + const rejectedVersions = new Set(); + const myVersionMatch = ownVersion.match(re); + if (!myVersionMatch) { + // we cannot guarantee compatibility so we always return noop + return () => false; + } + const ownVersionParsed = { + major: +myVersionMatch[1], + minor: +myVersionMatch[2], + patch: +myVersionMatch[3], + prerelease: myVersionMatch[4], + }; + // if ownVersion has a prerelease tag, versions must match exactly + if (ownVersionParsed.prerelease != null) { + return function isExactmatch(globalVersion) { + return globalVersion === ownVersion; + }; + } + function _reject(v) { + rejectedVersions.add(v); + return false; + } + function _accept(v) { + acceptedVersions.add(v); + return true; + } + return function isCompatible(globalVersion) { + if (acceptedVersions.has(globalVersion)) { + return true; + } + if (rejectedVersions.has(globalVersion)) { + return false; + } + const globalVersionMatch = globalVersion.match(re); + if (!globalVersionMatch) { + // cannot parse other version + // we cannot guarantee compatibility so we always noop + return _reject(globalVersion); + } + const globalVersionParsed = { + major: +globalVersionMatch[1], + minor: +globalVersionMatch[2], + patch: +globalVersionMatch[3], + prerelease: globalVersionMatch[4], + }; + // if globalVersion has a prerelease tag, versions must match exactly + if (globalVersionParsed.prerelease != null) { + return _reject(globalVersion); + } + // major versions must match + if (ownVersionParsed.major !== globalVersionParsed.major) { + return _reject(globalVersion); + } + if (ownVersionParsed.major === 0) { + if (ownVersionParsed.minor === globalVersionParsed.minor && + ownVersionParsed.patch <= globalVersionParsed.patch) { + return _accept(globalVersion); + } + return _reject(globalVersion); + } + if (ownVersionParsed.minor <= globalVersionParsed.minor) { + return _accept(globalVersion); + } + return _reject(globalVersion); + }; +} +/** + * Test an API version to see if it is compatible with this API. + * + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param version version of the API requesting an instance of the global API + */ +export const isCompatible = _makeCompatibilityCheck(VERSION); +//# sourceMappingURL=semver.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/semver.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/semver.js.map new file mode 100644 index 0000000..45cc4a3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/internal/semver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../../src/internal/semver.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { VERSION } from '../version';\n\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n\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 */\nexport function _makeCompatibilityCheck(\n ownVersion: string\n): (globalVersion: string) => boolean {\n const acceptedVersions = new Set([ownVersion]);\n const rejectedVersions = new Set();\n\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion: string): boolean {\n return globalVersion === ownVersion;\n };\n }\n\n function _reject(v: string) {\n rejectedVersions.add(v);\n return false;\n }\n\n function _accept(v: string) {\n acceptedVersions.add(v);\n return true;\n }\n\n return function isCompatible(globalVersion: string): boolean {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\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\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.major === 0) {\n if (\n ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch\n ) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n };\n}\n\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 */\nexport const isCompatible = _makeCompatibilityCheck(VERSION);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics-api.d.ts new file mode 100644 index 0000000..26d539c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics-api.d.ts @@ -0,0 +1,4 @@ +import { MetricsAPI } from './api/metrics'; +/** Entrypoint for metrics API */ +export declare const metrics: MetricsAPI; +//# sourceMappingURL=metrics-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics-api.js new file mode 100644 index 0000000..624c886 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics-api.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { MetricsAPI } from './api/metrics'; +/** Entrypoint for metrics API */ +export const metrics = MetricsAPI.getInstance(); +//# sourceMappingURL=metrics-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics-api.js.map new file mode 100644 index 0000000..eb011b6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metrics-api.js","sourceRoot":"","sources":["../../src/metrics-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,iCAAiC;AACjC,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { MetricsAPI } from './api/metrics';\n/** Entrypoint for metrics API */\nexport const metrics = MetricsAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.d.ts new file mode 100644 index 0000000..5e3926b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.d.ts @@ -0,0 +1,110 @@ +import { BatchObservableCallback, Counter, Gauge, Histogram, MetricAttributes, MetricOptions, Observable, ObservableCounter, ObservableGauge, ObservableUpDownCounter, UpDownCounter } from './Metric'; +/** + * An interface describes additional metadata of a meter. + */ +export interface MeterOptions { + /** + * The schemaUrl of the meter or instrumentation library + */ + schemaUrl?: string; +} +/** + * An interface to allow the recording metrics. + * + * {@link Metric}s are used for recording pre-defined aggregation (`Counter`), + * or raw values (`Histogram`) in which the aggregation and attributes + * for the exported metric are deferred. + */ +export interface Meter { + /** + * Creates and returns a new `Gauge`. + * @param name the name of the metric. + * @param [options] the metric options. + */ + createGauge(name: string, options?: MetricOptions): Gauge; + /** + * Creates and returns a new `Histogram`. + * @param name the name of the metric. + * @param [options] the metric options. + */ + createHistogram(name: string, options?: MetricOptions): Histogram; + /** + * Creates a new `Counter` metric. Generally, this kind of metric when the + * value is a quantity, the sum is of primary interest, and the event count + * and value distribution are not of primary interest. + * @param name the name of the metric. + * @param [options] the metric options. + */ + createCounter(name: string, options?: MetricOptions): Counter; + /** + * Creates a new `UpDownCounter` metric. UpDownCounter is a synchronous + * instrument and very similar to Counter except that Add(increment) + * supports negative increments. It is generally useful for capturing changes + * in an amount of resources used, or any quantity that rises and falls + * during a request. + * Example uses for UpDownCounter: + *
            + *
          1. count the number of active requests.
          2. + *
          3. count memory in use by instrumenting new and delete.
          4. + *
          5. count queue size by instrumenting enqueue and dequeue.
          6. + *
          7. count semaphore up and down operations.
          8. + *
          + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createUpDownCounter(name: string, options?: MetricOptions): UpDownCounter; + /** + * Creates a new `ObservableGauge` metric. + * + * The callback SHOULD be safe to be invoked concurrently. + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createObservableGauge(name: string, options?: MetricOptions): ObservableGauge; + /** + * Creates a new `ObservableCounter` metric. + * + * The callback SHOULD be safe to be invoked concurrently. + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createObservableCounter(name: string, options?: MetricOptions): ObservableCounter; + /** + * Creates a new `ObservableUpDownCounter` metric. + * + * The callback SHOULD be safe to be invoked concurrently. + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createObservableUpDownCounter(name: string, options?: MetricOptions): ObservableUpDownCounter; + /** + * Sets up a function that will be called whenever a metric collection is + * initiated. + * + * If the function is already in the list of callbacks for this Observable, + * the function is not added a second time. + * + * Only the associated observables can be observed in the callback. + * Measurements of observables that are not associated observed in the + * callback are dropped. + * + * @param callback the batch observable callback + * @param observables the observables associated with this batch observable callback + */ + addBatchObservableCallback(callback: BatchObservableCallback, observables: Observable[]): void; + /** + * Removes a callback previously registered with {@link Meter.addBatchObservableCallback}. + * + * The callback to be removed is identified using a combination of the callback itself, + * and the set of the observables associated with it. + * + * @param callback the batch observable callback + * @param observables the observables associated with this batch observable callback + */ + removeBatchObservableCallback(callback: BatchObservableCallback, observables: Observable[]): void; +} +//# sourceMappingURL=Meter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.js new file mode 100644 index 0000000..f1d0754 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Meter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.js.map new file mode 100644 index 0000000..c4b0aaf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Meter.js","sourceRoot":"","sources":["../../../src/metrics/Meter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n BatchObservableCallback,\n Counter,\n Gauge,\n Histogram,\n MetricAttributes,\n MetricOptions,\n Observable,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n} from './Metric';\n\n/**\n * An interface describes additional metadata of a meter.\n */\nexport interface MeterOptions {\n /**\n * The schemaUrl of the meter or instrumentation library\n */\n schemaUrl?: string;\n}\n\n/**\n * An interface to allow the recording metrics.\n *\n * {@link Metric}s are used for recording pre-defined aggregation (`Counter`),\n * or raw values (`Histogram`) in which the aggregation and attributes\n * for the exported metric are deferred.\n */\nexport interface Meter {\n /**\n * Creates and returns a new `Gauge`.\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createGauge(\n name: string,\n options?: MetricOptions\n ): Gauge;\n\n /**\n * Creates and returns a new `Histogram`.\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createHistogram(\n name: string,\n options?: MetricOptions\n ): Histogram;\n\n /**\n * Creates a new `Counter` metric. Generally, this kind of metric when the\n * value is a quantity, the sum is of primary interest, and the event count\n * and value distribution are not of primary interest.\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createCounter(\n name: string,\n options?: MetricOptions\n ): Counter;\n\n /**\n * Creates a new `UpDownCounter` metric. UpDownCounter is a synchronous\n * instrument and very similar to Counter except that Add(increment)\n * supports negative increments. It is generally useful for capturing changes\n * in an amount of resources used, or any quantity that rises and falls\n * during a request.\n * Example uses for UpDownCounter:\n *
            \n *
          1. count the number of active requests.
          2. \n *
          3. count memory in use by instrumenting new and delete.
          4. \n *
          5. count queue size by instrumenting enqueue and dequeue.
          6. \n *
          7. count semaphore up and down operations.
          8. \n *
          \n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): UpDownCounter;\n\n /**\n * Creates a new `ObservableGauge` metric.\n *\n * The callback SHOULD be safe to be invoked concurrently.\n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createObservableGauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): ObservableGauge;\n\n /**\n * Creates a new `ObservableCounter` metric.\n *\n * The callback SHOULD be safe to be invoked concurrently.\n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createObservableCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): ObservableCounter;\n\n /**\n * Creates a new `ObservableUpDownCounter` metric.\n *\n * The callback SHOULD be safe to be invoked concurrently.\n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createObservableUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): ObservableUpDownCounter;\n\n /**\n * Sets up a function that will be called whenever a metric collection is\n * initiated.\n *\n * If the function is already in the list of callbacks for this Observable,\n * the function is not added a second time.\n *\n * Only the associated observables can be observed in the callback.\n * Measurements of observables that are not associated observed in the\n * callback are dropped.\n *\n * @param callback the batch observable callback\n * @param observables the observables associated with this batch observable callback\n */\n addBatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n callback: BatchObservableCallback,\n observables: Observable[]\n ): void;\n\n /**\n * Removes a callback previously registered with {@link Meter.addBatchObservableCallback}.\n *\n * The callback to be removed is identified using a combination of the callback itself,\n * and the set of the observables associated with it.\n *\n * @param callback the batch observable callback\n * @param observables the observables associated with this batch observable callback\n */\n removeBatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n callback: BatchObservableCallback,\n observables: Observable[]\n ): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.d.ts new file mode 100644 index 0000000..6c08cc3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.d.ts @@ -0,0 +1,17 @@ +import { Meter, MeterOptions } from './Meter'; +/** + * A registry for creating named {@link Meter}s. + */ +export interface MeterProvider { + /** + * Returns a Meter, creating one if one with the given name, version, and + * schemaUrl pair is not already created. + * + * @param name The name of the meter or instrumentation library. + * @param version The version of the meter or instrumentation library. + * @param options The options of the meter or instrumentation library. + * @returns Meter A Meter with the given name and version + */ + getMeter(name: string, version?: string, options?: MeterOptions): Meter; +} +//# sourceMappingURL=MeterProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.js new file mode 100644 index 0000000..3051712 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=MeterProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.js.map new file mode 100644 index 0000000..8f96d90 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MeterProvider.js","sourceRoot":"","sources":["../../../src/metrics/MeterProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter, MeterOptions } from './Meter';\n\n/**\n * A registry for creating named {@link Meter}s.\n */\nexport interface MeterProvider {\n /**\n * Returns a Meter, creating one if one with the given name, version, and\n * schemaUrl pair is not already created.\n *\n * @param name The name of the meter or instrumentation library.\n * @param version The version of the meter or instrumentation library.\n * @param options The options of the meter or instrumentation library.\n * @returns Meter A Meter with the given name and version\n */\n getMeter(name: string, version?: string, options?: MeterOptions): Meter;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.d.ts new file mode 100644 index 0000000..607b637 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.d.ts @@ -0,0 +1,115 @@ +import { Attributes, AttributeValue } from '../common/Attributes'; +import { Context } from '../context/types'; +import { BatchObservableResult, ObservableResult } from './ObservableResult'; +/** + * Advisory options influencing aggregation configuration parameters. + * @experimental + */ +export interface MetricAdvice { + /** + * Hint the explicit bucket boundaries for SDK if the metric is been + * aggregated with a HistogramAggregator. + */ + explicitBucketBoundaries?: number[]; +} +/** + * Options needed for metric creation + */ +export interface MetricOptions { + /** + * The description of the Metric. + * @default '' + */ + description?: string; + /** + * The unit of the Metric values. + * @default '' + */ + unit?: string; + /** + * Indicates the type of the recorded value. + * @default {@link ValueType.DOUBLE} + */ + valueType?: ValueType; + /** + * The advice influencing aggregation configuration parameters. + * @experimental + */ + advice?: MetricAdvice; +} +/** The Type of value. It describes how the data is reported. */ +export declare enum ValueType { + INT = 0, + DOUBLE = 1 +} +/** + * Counter is the most common synchronous instrument. This instrument supports + * an `Add(increment)` function for reporting a sum, and is restricted to + * non-negative increments. The default aggregation is Sum, as for any additive + * instrument. + * + * Example uses for Counter: + *
            + *
          1. count the number of bytes received.
          2. + *
          3. count the number of requests completed.
          4. + *
          5. count the number of accounts created.
          6. + *
          7. count the number of checkpoints run.
          8. + *
          9. count the number of 5xx errors.
          10. + *
              + */ +export interface Counter { + /** + * Increment value of counter by the input. Inputs must not be negative. + */ + add(value: number, attributes?: AttributesTypes, context?: Context): void; +} +export interface UpDownCounter { + /** + * Increment value of counter by the input. Inputs may be negative. + */ + add(value: number, attributes?: AttributesTypes, context?: Context): void; +} +export interface Gauge { + /** + * Records a measurement. + */ + record(value: number, attributes?: AttributesTypes, context?: Context): void; +} +export interface Histogram { + /** + * Records a measurement. Value of the measurement must not be negative. + */ + record(value: number, attributes?: AttributesTypes, context?: Context): void; +} +/** + * @deprecated please use {@link Attributes} + */ +export declare type MetricAttributes = Attributes; +/** + * @deprecated please use {@link AttributeValue} + */ +export declare type MetricAttributeValue = AttributeValue; +/** + * The observable callback for Observable instruments. + */ +export declare type ObservableCallback = (observableResult: ObservableResult) => void | Promise; +/** + * The observable callback for a batch of Observable instruments. + */ +export declare type BatchObservableCallback = (observableResult: BatchObservableResult) => void | Promise; +export interface Observable { + /** + * Sets up a function that will be called whenever a metric collection is initiated. + * + * If the function is already in the list of callbacks for this Observable, the function is not added a second time. + */ + addCallback(callback: ObservableCallback): void; + /** + * Removes a callback previously registered with {@link Observable.addCallback}. + */ + removeCallback(callback: ObservableCallback): void; +} +export declare type ObservableCounter = Observable; +export declare type ObservableUpDownCounter = Observable; +export declare type ObservableGauge = Observable; +//# sourceMappingURL=Metric.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.js new file mode 100644 index 0000000..6df1374 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.js @@ -0,0 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** The Type of value. It describes how the data is reported. */ +export var ValueType; +(function (ValueType) { + ValueType[ValueType["INT"] = 0] = "INT"; + ValueType[ValueType["DOUBLE"] = 1] = "DOUBLE"; +})(ValueType || (ValueType = {})); +//# sourceMappingURL=Metric.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.js.map new file mode 100644 index 0000000..a115430 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Metric.js","sourceRoot":"","sources":["../../../src/metrics/Metric.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+CH,gEAAgE;AAChE,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,uCAAG,CAAA;IACH,6CAAM,CAAA;AACR,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, AttributeValue } from '../common/Attributes';\nimport { Context } from '../context/types';\nimport { BatchObservableResult, ObservableResult } from './ObservableResult';\n\n/**\n * Advisory options influencing aggregation configuration parameters.\n * @experimental\n */\nexport interface MetricAdvice {\n /**\n * Hint the explicit bucket boundaries for SDK if the metric is been\n * aggregated with a HistogramAggregator.\n */\n explicitBucketBoundaries?: number[];\n}\n\n/**\n * Options needed for metric creation\n */\nexport interface MetricOptions {\n /**\n * The description of the Metric.\n * @default ''\n */\n description?: string;\n\n /**\n * The unit of the Metric values.\n * @default ''\n */\n unit?: string;\n\n /**\n * Indicates the type of the recorded value.\n * @default {@link ValueType.DOUBLE}\n */\n valueType?: ValueType;\n\n /**\n * The advice influencing aggregation configuration parameters.\n * @experimental\n */\n advice?: MetricAdvice;\n}\n\n/** The Type of value. It describes how the data is reported. */\nexport enum ValueType {\n INT,\n DOUBLE,\n}\n\n/**\n * Counter is the most common synchronous instrument. This instrument supports\n * an `Add(increment)` function for reporting a sum, and is restricted to\n * non-negative increments. The default aggregation is Sum, as for any additive\n * instrument.\n *\n * Example uses for Counter:\n *
                \n *
              1. count the number of bytes received.
              2. \n *
              3. count the number of requests completed.
              4. \n *
              5. count the number of accounts created.
              6. \n *
              7. count the number of checkpoints run.
              8. \n *
              9. count the number of 5xx errors.
              10. \n *
                  \n */\nexport interface Counter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Increment value of counter by the input. Inputs must not be negative.\n */\n add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface UpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Increment value of counter by the input. Inputs may be negative.\n */\n add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface Gauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Records a measurement.\n */\n record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface Histogram<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Records a measurement. Value of the measurement must not be negative.\n */\n record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @deprecated please use {@link Attributes}\n */\nexport type MetricAttributes = Attributes;\n\n/**\n * @deprecated please use {@link AttributeValue}\n */\nexport type MetricAttributeValue = AttributeValue;\n\n/**\n * The observable callback for Observable instruments.\n */\nexport type ObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n observableResult: ObservableResult\n) => void | Promise;\n\n/**\n * The observable callback for a batch of Observable instruments.\n */\nexport type BatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n observableResult: BatchObservableResult\n) => void | Promise;\n\nexport interface Observable<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Sets up a function that will be called whenever a metric collection is initiated.\n *\n * If the function is already in the list of callbacks for this Observable, the function is not added a second time.\n */\n addCallback(callback: ObservableCallback): void;\n\n /**\n * Removes a callback previously registered with {@link Observable.addCallback}.\n */\n removeCallback(callback: ObservableCallback): void;\n}\n\nexport type ObservableCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\nexport type ObservableUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\nexport type ObservableGauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.d.ts new file mode 100644 index 0000000..bbefa9a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.d.ts @@ -0,0 +1,82 @@ +import { Meter } from './Meter'; +import { BatchObservableCallback, Counter, Gauge, Histogram, MetricAttributes, MetricOptions, Observable, ObservableCallback, ObservableCounter, ObservableGauge, ObservableUpDownCounter, UpDownCounter } from './Metric'; +/** + * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses + * constant NoopMetrics for all of its methods. + */ +export declare class NoopMeter implements Meter { + constructor(); + /** + * @see {@link Meter.createGauge} + */ + createGauge(_name: string, _options?: MetricOptions): Gauge; + /** + * @see {@link Meter.createHistogram} + */ + createHistogram(_name: string, _options?: MetricOptions): Histogram; + /** + * @see {@link Meter.createCounter} + */ + createCounter(_name: string, _options?: MetricOptions): Counter; + /** + * @see {@link Meter.createUpDownCounter} + */ + createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter; + /** + * @see {@link Meter.createObservableGauge} + */ + createObservableGauge(_name: string, _options?: MetricOptions): ObservableGauge; + /** + * @see {@link Meter.createObservableCounter} + */ + createObservableCounter(_name: string, _options?: MetricOptions): ObservableCounter; + /** + * @see {@link Meter.createObservableUpDownCounter} + */ + createObservableUpDownCounter(_name: string, _options?: MetricOptions): ObservableUpDownCounter; + /** + * @see {@link Meter.addBatchObservableCallback} + */ + addBatchObservableCallback(_callback: BatchObservableCallback, _observables: Observable[]): void; + /** + * @see {@link Meter.removeBatchObservableCallback} + */ + removeBatchObservableCallback(_callback: BatchObservableCallback): void; +} +export declare class NoopMetric { +} +export declare class NoopCounterMetric extends NoopMetric implements Counter { + add(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopUpDownCounterMetric extends NoopMetric implements UpDownCounter { + add(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopGaugeMetric extends NoopMetric implements Gauge { + record(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopHistogramMetric extends NoopMetric implements Histogram { + record(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopObservableMetric { + addCallback(_callback: ObservableCallback): void; + removeCallback(_callback: ObservableCallback): void; +} +export declare class NoopObservableCounterMetric extends NoopObservableMetric implements ObservableCounter { +} +export declare class NoopObservableGaugeMetric extends NoopObservableMetric implements ObservableGauge { +} +export declare class NoopObservableUpDownCounterMetric extends NoopObservableMetric implements ObservableUpDownCounter { +} +export declare const NOOP_METER: NoopMeter; +export declare const NOOP_COUNTER_METRIC: NoopCounterMetric; +export declare const NOOP_GAUGE_METRIC: NoopGaugeMetric; +export declare const NOOP_HISTOGRAM_METRIC: NoopHistogramMetric; +export declare const NOOP_UP_DOWN_COUNTER_METRIC: NoopUpDownCounterMetric; +export declare const NOOP_OBSERVABLE_COUNTER_METRIC: NoopObservableCounterMetric; +export declare const NOOP_OBSERVABLE_GAUGE_METRIC: NoopObservableGaugeMetric; +export declare const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC: NoopObservableUpDownCounterMetric; +/** + * Create a no-op Meter + */ +export declare function createNoopMeter(): Meter; +//# sourceMappingURL=NoopMeter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.js new file mode 100644 index 0000000..1f966ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.js @@ -0,0 +1,113 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses + * constant NoopMetrics for all of its methods. + */ +export class NoopMeter { + constructor() { } + /** + * @see {@link Meter.createGauge} + */ + createGauge(_name, _options) { + return NOOP_GAUGE_METRIC; + } + /** + * @see {@link Meter.createHistogram} + */ + createHistogram(_name, _options) { + return NOOP_HISTOGRAM_METRIC; + } + /** + * @see {@link Meter.createCounter} + */ + createCounter(_name, _options) { + return NOOP_COUNTER_METRIC; + } + /** + * @see {@link Meter.createUpDownCounter} + */ + createUpDownCounter(_name, _options) { + return NOOP_UP_DOWN_COUNTER_METRIC; + } + /** + * @see {@link Meter.createObservableGauge} + */ + createObservableGauge(_name, _options) { + return NOOP_OBSERVABLE_GAUGE_METRIC; + } + /** + * @see {@link Meter.createObservableCounter} + */ + createObservableCounter(_name, _options) { + return NOOP_OBSERVABLE_COUNTER_METRIC; + } + /** + * @see {@link Meter.createObservableUpDownCounter} + */ + createObservableUpDownCounter(_name, _options) { + return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC; + } + /** + * @see {@link Meter.addBatchObservableCallback} + */ + addBatchObservableCallback(_callback, _observables) { } + /** + * @see {@link Meter.removeBatchObservableCallback} + */ + removeBatchObservableCallback(_callback) { } +} +export class NoopMetric { +} +export class NoopCounterMetric extends NoopMetric { + add(_value, _attributes) { } +} +export class NoopUpDownCounterMetric extends NoopMetric { + add(_value, _attributes) { } +} +export class NoopGaugeMetric extends NoopMetric { + record(_value, _attributes) { } +} +export class NoopHistogramMetric extends NoopMetric { + record(_value, _attributes) { } +} +export class NoopObservableMetric { + addCallback(_callback) { } + removeCallback(_callback) { } +} +export class NoopObservableCounterMetric extends NoopObservableMetric { +} +export class NoopObservableGaugeMetric extends NoopObservableMetric { +} +export class NoopObservableUpDownCounterMetric extends NoopObservableMetric { +} +export const NOOP_METER = new NoopMeter(); +// Synchronous instruments +export const NOOP_COUNTER_METRIC = new NoopCounterMetric(); +export const NOOP_GAUGE_METRIC = new NoopGaugeMetric(); +export const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric(); +export const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric(); +// Asynchronous instruments +export const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric(); +export const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric(); +export const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric(); +/** + * Create a no-op Meter + */ +export function createNoopMeter() { + return NOOP_METER; +} +//# sourceMappingURL=NoopMeter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.js.map new file mode 100644 index 0000000..ca6e904 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopMeter.js","sourceRoot":"","sources":["../../../src/metrics/NoopMeter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkBH;;;GAGG;AACH,MAAM,OAAO,SAAS;IACpB,gBAAe,CAAC;IAEhB;;OAEG;IACH,WAAW,CAAC,KAAa,EAAE,QAAwB;QACjD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAa,EAAE,QAAwB;QACrD,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAa,EAAE,QAAwB;QACnD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,KAAa,EAAE,QAAwB;QACzD,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,qBAAqB,CACnB,KAAa,EACb,QAAwB;QAExB,OAAO,4BAA4B,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,uBAAuB,CACrB,KAAa,EACb,QAAwB;QAExB,OAAO,8BAA8B,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,6BAA6B,CAC3B,KAAa,EACb,QAAwB;QAExB,OAAO,sCAAsC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,0BAA0B,CACxB,SAAkC,EAClC,YAA0B,IACnB,CAAC;IAEV;;OAEG;IACH,6BAA6B,CAAC,SAAkC,IAAS,CAAC;CAC3E;AAED,MAAM,OAAO,UAAU;CAAG;AAE1B,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C,GAAG,CAAC,MAAc,EAAE,WAA6B,IAAS,CAAC;CAC5D;AAED,MAAM,OAAO,uBACX,SAAQ,UAAU;IAGlB,GAAG,CAAC,MAAc,EAAE,WAA6B,IAAS,CAAC;CAC5D;AAED,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC7C,MAAM,CAAC,MAAc,EAAE,WAA6B,IAAS,CAAC;CAC/D;AAED,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IACjD,MAAM,CAAC,MAAc,EAAE,WAA6B,IAAS,CAAC;CAC/D;AAED,MAAM,OAAO,oBAAoB;IAC/B,WAAW,CAAC,SAA6B,IAAG,CAAC;IAE7C,cAAc,CAAC,SAA6B,IAAG,CAAC;CACjD;AAED,MAAM,OAAO,2BACX,SAAQ,oBAAoB;CACG;AAEjC,MAAM,OAAO,yBACX,SAAQ,oBAAoB;CACC;AAE/B,MAAM,OAAO,iCACX,SAAQ,oBAAoB;CACS;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,SAAS,EAAE,CAAC;AAE1C,0BAA0B;AAC1B,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,eAAe,EAAE,CAAC;AACvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAC/D,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAEzE,2BAA2B;AAC3B,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,2BAA2B,EAAE,CAAC;AAChF,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,yBAAyB,EAAE,CAAC;AAC5E,MAAM,CAAC,MAAM,sCAAsC,GACjD,IAAI,iCAAiC,EAAE,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter } from './Meter';\nimport {\n BatchObservableCallback,\n Counter,\n Gauge,\n Histogram,\n MetricAttributes,\n MetricOptions,\n Observable,\n ObservableCallback,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n} from './Metric';\n\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nexport class NoopMeter implements Meter {\n constructor() {}\n\n /**\n * @see {@link Meter.createGauge}\n */\n createGauge(_name: string, _options?: MetricOptions): Gauge {\n return NOOP_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name: string, _options?: MetricOptions): Histogram {\n return NOOP_HISTOGRAM_METRIC;\n }\n\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name: string, _options?: MetricOptions): Counter {\n return NOOP_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter {\n return NOOP_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(\n _name: string,\n _options?: MetricOptions\n ): ObservableGauge {\n return NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableCounter {\n return NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableUpDownCounter {\n return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(\n _callback: BatchObservableCallback,\n _observables: Observable[]\n ): void {}\n\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback: BatchObservableCallback): void {}\n}\n\nexport class NoopMetric {}\n\nexport class NoopCounterMetric extends NoopMetric implements Counter {\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopUpDownCounterMetric\n extends NoopMetric\n implements UpDownCounter\n{\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopGaugeMetric extends NoopMetric implements Gauge {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopHistogramMetric extends NoopMetric implements Histogram {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopObservableMetric {\n addCallback(_callback: ObservableCallback) {}\n\n removeCallback(_callback: ObservableCallback) {}\n}\n\nexport class NoopObservableCounterMetric\n extends NoopObservableMetric\n implements ObservableCounter {}\n\nexport class NoopObservableGaugeMetric\n extends NoopObservableMetric\n implements ObservableGauge {}\n\nexport class NoopObservableUpDownCounterMetric\n extends NoopObservableMetric\n implements ObservableUpDownCounter {}\n\nexport const NOOP_METER = new NoopMeter();\n\n// Synchronous instruments\nexport const NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexport const NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexport const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexport const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n\n// Asynchronous instruments\nexport const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexport const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexport const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC =\n new NoopObservableUpDownCounterMetric();\n\n/**\n * Create a no-op Meter\n */\nexport function createNoopMeter(): Meter {\n return NOOP_METER;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.d.ts new file mode 100644 index 0000000..8b51bc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.d.ts @@ -0,0 +1,11 @@ +import { Meter, MeterOptions } from './Meter'; +import { MeterProvider } from './MeterProvider'; +/** + * An implementation of the {@link MeterProvider} which returns an impotent Meter + * for all calls to `getMeter` + */ +export declare class NoopMeterProvider implements MeterProvider { + getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter; +} +export declare const NOOP_METER_PROVIDER: NoopMeterProvider; +//# sourceMappingURL=NoopMeterProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.js new file mode 100644 index 0000000..075f5c6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_METER } from './NoopMeter'; +/** + * An implementation of the {@link MeterProvider} which returns an impotent Meter + * for all calls to `getMeter` + */ +export class NoopMeterProvider { + getMeter(_name, _version, _options) { + return NOOP_METER; + } +} +export const NOOP_METER_PROVIDER = new NoopMeterProvider(); +//# sourceMappingURL=NoopMeterProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.js.map new file mode 100644 index 0000000..c68783a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopMeterProvider.js","sourceRoot":"","sources":["../../../src/metrics/NoopMeterProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC5B,QAAQ,CAAC,KAAa,EAAE,QAAiB,EAAE,QAAuB;QAChE,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter, MeterOptions } from './Meter';\nimport { MeterProvider } from './MeterProvider';\nimport { NOOP_METER } from './NoopMeter';\n\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nexport class NoopMeterProvider implements MeterProvider {\n getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter {\n return NOOP_METER;\n }\n}\n\nexport const NOOP_METER_PROVIDER = new NoopMeterProvider();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.d.ts new file mode 100644 index 0000000..26563f9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.d.ts @@ -0,0 +1,31 @@ +import { MetricAttributes, Observable } from './Metric'; +/** + * Interface that is being used in callback function for Observable Metric. + */ +export interface ObservableResult { + /** + * Observe a measurement of the value associated with the given attributes. + * + * @param value The value to be observed. + * @param attributes The attributes associated with the value. If more than + * one values associated with the same attributes values, SDK may pick the + * last one or simply drop the entire observable result. + */ + observe(this: ObservableResult, value: number, attributes?: AttributesTypes): void; +} +/** + * Interface that is being used in batch observable callback function. + */ +export interface BatchObservableResult { + /** + * Observe a measurement of the value associated with the given attributes. + * + * @param metric The observable metric to be observed. + * @param value The value to be observed. + * @param attributes The attributes associated with the value. If more than + * one values associated with the same attributes values, SDK may pick the + * last one or simply drop the entire observable result. + */ + observe(this: BatchObservableResult, metric: Observable, value: number, attributes?: AttributesTypes): void; +} +//# sourceMappingURL=ObservableResult.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.js new file mode 100644 index 0000000..7985d26 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=ObservableResult.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.js.map new file mode 100644 index 0000000..b6b0c7c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ObservableResult.js","sourceRoot":"","sources":["../../../src/metrics/ObservableResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { MetricAttributes, Observable } from './Metric';\n\n/**\n * Interface that is being used in callback function for Observable Metric.\n */\nexport interface ObservableResult<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Observe a measurement of the value associated with the given attributes.\n *\n * @param value The value to be observed.\n * @param attributes The attributes associated with the value. If more than\n * one values associated with the same attributes values, SDK may pick the\n * last one or simply drop the entire observable result.\n */\n observe(\n this: ObservableResult,\n value: number,\n attributes?: AttributesTypes\n ): void;\n}\n\n/**\n * Interface that is being used in batch observable callback function.\n */\nexport interface BatchObservableResult<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Observe a measurement of the value associated with the given attributes.\n *\n * @param metric The observable metric to be observed.\n * @param value The value to be observed.\n * @param attributes The attributes associated with the value. If more than\n * one values associated with the same attributes values, SDK may pick the\n * last one or simply drop the entire observable result.\n */\n observe(\n this: BatchObservableResult,\n metric: Observable,\n value: number,\n attributes?: AttributesTypes\n ): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.d.ts new file mode 100644 index 0000000..e73fd73 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.d.ts @@ -0,0 +1,10 @@ +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.js new file mode 100644 index 0000000..e9d58b3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.js @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Updates to this file should also be replicated to @opentelemetry/core too. +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef +export const _globalThis = typeof globalThis === 'object' + ? globalThis + : typeof self === 'object' + ? self + : typeof window === 'object' + ? window + : typeof global === 'object' + ? global + : {}; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.js.map new file mode 100644 index 0000000..c01e2ab --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/browser/globalThis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,6EAA6E;AAE7E;;;;;;GAMG;AAEH,gEAAgE;AAChE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,WAAW,GACtB,OAAO,UAAU,KAAK,QAAQ;IAC5B,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;QAC1B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;YAC5B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;gBAC5B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAE,EAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Updates to this file should also be replicated to @opentelemetry/core too.\n\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - (When all else fails)\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef\nexport const _globalThis: typeof globalThis =\n typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : ({} as typeof globalThis);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.d.ts new file mode 100644 index 0000000..ba20e12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.d.ts @@ -0,0 +1,2 @@ +export * from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.js new file mode 100644 index 0000000..efcad2e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './globalThis'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.js.map new file mode 100644 index 0000000..07adcd9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,cAAc,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport * from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/index.d.ts new file mode 100644 index 0000000..90595da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/index.d.ts @@ -0,0 +1,2 @@ +export * from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/index.js new file mode 100644 index 0000000..c0df125 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/index.js.map new file mode 100644 index 0000000..9494c53 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport * from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.d.ts new file mode 100644 index 0000000..e3c83e5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.d.ts @@ -0,0 +1,3 @@ +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.js new file mode 100644 index 0000000..7daa45d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.js @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line node/no-unsupported-features/es-builtins +export const _globalThis = typeof globalThis === 'object' ? globalThis : global; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.js.map new file mode 100644 index 0000000..7d8366c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/node/globalThis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,gEAAgE;AAChE,oEAAoE;AACpE,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/index.d.ts new file mode 100644 index 0000000..ba20e12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/index.d.ts @@ -0,0 +1,2 @@ +export * from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/index.js new file mode 100644 index 0000000..efcad2e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './globalThis'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/index.js.map new file mode 100644 index 0000000..f279718 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,cAAc,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport * from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation-api.d.ts new file mode 100644 index 0000000..e12b51b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation-api.d.ts @@ -0,0 +1,4 @@ +import { PropagationAPI } from './api/propagation'; +/** Entrypoint for propagation API */ +export declare const propagation: PropagationAPI; +//# sourceMappingURL=propagation-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation-api.js new file mode 100644 index 0000000..7964ed9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation-api.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { PropagationAPI } from './api/propagation'; +/** Entrypoint for propagation API */ +export const propagation = PropagationAPI.getInstance(); +//# sourceMappingURL=propagation-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation-api.js.map new file mode 100644 index 0000000..401c0bc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"propagation-api.js","sourceRoot":"","sources":["../../src/propagation-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,qCAAqC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { PropagationAPI } from './api/propagation';\n/** Entrypoint for propagation API */\nexport const propagation = PropagationAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.d.ts new file mode 100644 index 0000000..398021f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.d.ts @@ -0,0 +1,13 @@ +import { Context } from '../context/types'; +import { TextMapPropagator } from './TextMapPropagator'; +/** + * No-op implementations of {@link TextMapPropagator}. + */ +export declare class NoopTextMapPropagator implements TextMapPropagator { + /** Noop inject function does nothing */ + inject(_context: Context, _carrier: unknown): void; + /** Noop extract function does nothing and returns the input context */ + extract(context: Context, _carrier: unknown): Context; + fields(): string[]; +} +//# sourceMappingURL=NoopTextMapPropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.js new file mode 100644 index 0000000..642b84e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.js @@ -0,0 +1,30 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * No-op implementations of {@link TextMapPropagator}. + */ +export class NoopTextMapPropagator { + /** Noop inject function does nothing */ + inject(_context, _carrier) { } + /** Noop extract function does nothing and returns the input context */ + extract(context, _carrier) { + return context; + } + fields() { + return []; + } +} +//# sourceMappingURL=NoopTextMapPropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.js.map new file mode 100644 index 0000000..29ce493 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopTextMapPropagator.js","sourceRoot":"","sources":["../../../src/propagation/NoopTextMapPropagator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAChC,wCAAwC;IACxC,MAAM,CAAC,QAAiB,EAAE,QAAiB,IAAS,CAAC;IACrD,uEAAuE;IACvE,OAAO,CAAC,OAAgB,EAAE,QAAiB;QACzC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM;QACJ,OAAO,EAAE,CAAC;IACZ,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { TextMapPropagator } from './TextMapPropagator';\n\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nexport class NoopTextMapPropagator implements TextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context: Context, _carrier: unknown): void {}\n /** Noop extract function does nothing and returns the input context */\n extract(context: Context, _carrier: unknown): Context {\n return context;\n }\n fields(): string[] {\n return [];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.d.ts new file mode 100644 index 0000000..dc39367 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.d.ts @@ -0,0 +1,84 @@ +import { Context } from '../context/types'; +/** + * Injects `Context` into and extracts it from carriers that travel + * in-band across process boundaries. Encoding is expected to conform to the + * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request + * headers. + * + * The carrier of propagated data on both the client (injector) and server + * (extractor) side is usually an object such as http headers. Propagation is + * usually implemented via library-specific request interceptors, where the + * client-side injects values and the server-side extracts them. + */ +export interface TextMapPropagator { + /** + * Injects values from a given `Context` into a carrier. + * + * OpenTelemetry defines a common set of format values (TextMapPropagator), + * and each has an expected `carrier` type. + * + * @param context the Context from which to extract values to transmit over + * the wire. + * @param carrier the carrier of propagation fields, such as http request + * headers. + * @param setter an optional {@link TextMapSetter}. If undefined, values will be + * set by direct object assignment. + */ + inject(context: Context, carrier: Carrier, setter: TextMapSetter): void; + /** + * Given a `Context` and a carrier, extract context values from a + * carrier and return a new context, created from the old context, with the + * extracted values. + * + * @param context the Context from which to extract values to transmit over + * the wire. + * @param carrier the carrier of propagation fields, such as http request + * headers. + * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all + * own properties, and keys will be accessed by direct object access. + */ + extract(context: Context, carrier: Carrier, getter: TextMapGetter): Context; + /** + * Return a list of all fields which may be used by the propagator. + */ + fields(): string[]; +} +/** + * A setter is specified by the caller to define a specific method + * to set key/value pairs on the carrier within a propagator. + */ +export interface TextMapSetter { + /** + * Callback used to set a key/value pair on an object. + * + * Should be called by the propagator each time a key/value pair + * should be set, and should set that key/value pair on the propagator. + * + * @param carrier object or class which carries key/value pairs + * @param key string key to modify + * @param value value to be set to the key on the carrier + */ + set(carrier: Carrier, key: string, value: string): void; +} +/** + * A getter is specified by the caller to define a specific method + * to get the value of a key from a carrier. + */ +export interface TextMapGetter { + /** + * Get a list of all keys available on the carrier. + * + * @param carrier + */ + keys(carrier: Carrier): string[]; + /** + * Get the value of a specific key from the carrier. + * + * @param carrier + * @param key + */ + get(carrier: Carrier, key: string): undefined | string | string[]; +} +export declare const defaultTextMapGetter: TextMapGetter; +export declare const defaultTextMapSetter: TextMapSetter; +//# sourceMappingURL=TextMapPropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.js new file mode 100644 index 0000000..4c36995 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.js @@ -0,0 +1,38 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const defaultTextMapGetter = { + get(carrier, key) { + if (carrier == null) { + return undefined; + } + return carrier[key]; + }, + keys(carrier) { + if (carrier == null) { + return []; + } + return Object.keys(carrier); + }, +}; +export const defaultTextMapSetter = { + set(carrier, key, value) { + if (carrier == null) { + return; + } + carrier[key] = value; + }, +}; +//# sourceMappingURL=TextMapPropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.js.map new file mode 100644 index 0000000..d46019b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TextMapPropagator.js","sourceRoot":"","sources":["../../../src/propagation/TextMapPropagator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkGH,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,GAAG,CAAC,OAAO,EAAE,GAAG;QACd,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,OAAO;QACV,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO,EAAE,CAAC;SACX;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK;QACrB,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO;SACR;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\n\n/**\n * Injects `Context` into and extracts it from carriers that travel\n * in-band across process boundaries. Encoding is expected to conform to the\n * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request\n * headers.\n *\n * The carrier of propagated data on both the client (injector) and server\n * (extractor) side is usually an object such as http headers. Propagation is\n * usually implemented via library-specific request interceptors, where the\n * client-side injects values and the server-side extracts them.\n */\nexport interface TextMapPropagator {\n /**\n * Injects values from a given `Context` into a carrier.\n *\n * OpenTelemetry defines a common set of format values (TextMapPropagator),\n * and each has an expected `carrier` type.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param setter an optional {@link TextMapSetter}. If undefined, values will be\n * set by direct object assignment.\n */\n inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter\n ): void;\n\n /**\n * Given a `Context` and a carrier, extract context values from a\n * carrier and return a new context, created from the old context, with the\n * extracted values.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all\n * own properties, and keys will be accessed by direct object access.\n */\n extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter\n ): Context;\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields(): string[];\n}\n\n/**\n * A setter is specified by the caller to define a specific method\n * to set key/value pairs on the carrier within a propagator.\n */\nexport interface TextMapSetter {\n /**\n * Callback used to set a key/value pair on an object.\n *\n * Should be called by the propagator each time a key/value pair\n * should be set, and should set that key/value pair on the propagator.\n *\n * @param carrier object or class which carries key/value pairs\n * @param key string key to modify\n * @param value value to be set to the key on the carrier\n */\n set(carrier: Carrier, key: string, value: string): void;\n}\n\n/**\n * A getter is specified by the caller to define a specific method\n * to get the value of a key from a carrier.\n */\nexport interface TextMapGetter {\n /**\n * Get a list of all keys available on the carrier.\n *\n * @param carrier\n */\n keys(carrier: Carrier): string[];\n\n /**\n * Get the value of a specific key from the carrier.\n *\n * @param carrier\n * @param key\n */\n get(carrier: Carrier, key: string): undefined | string | string[];\n}\n\nexport const defaultTextMapGetter: TextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\n\nexport const defaultTextMapSetter: TextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n\n carrier[key] = value;\n },\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace-api.d.ts new file mode 100644 index 0000000..b4751a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace-api.d.ts @@ -0,0 +1,4 @@ +import { TraceAPI } from './api/trace'; +/** Entrypoint for trace API */ +export declare const trace: TraceAPI; +//# sourceMappingURL=trace-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace-api.js new file mode 100644 index 0000000..3a0b9b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace-api.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +import { TraceAPI } from './api/trace'; +/** Entrypoint for trace API */ +export const trace = TraceAPI.getInstance(); +//# sourceMappingURL=trace-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace-api.js.map new file mode 100644 index 0000000..3982312 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace-api.js","sourceRoot":"","sources":["../../src/trace-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,+BAA+B;AAC/B,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport const trace = TraceAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.d.ts new file mode 100644 index 0000000..ce569f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.d.ts @@ -0,0 +1,28 @@ +import { Exception } from '../common/Exception'; +import { TimeInput } from '../common/Time'; +import { SpanAttributes } from './attributes'; +import { Span } from './span'; +import { SpanContext } from './span_context'; +import { SpanStatus } from './status'; +import { Link } from './link'; +/** + * The NonRecordingSpan is the default {@link Span} that is used when no Span + * implementation is available. All operations are no-op including context + * propagation. + */ +export declare class NonRecordingSpan implements Span { + private readonly _spanContext; + constructor(_spanContext?: SpanContext); + spanContext(): SpanContext; + setAttribute(_key: string, _value: unknown): this; + setAttributes(_attributes: SpanAttributes): this; + addEvent(_name: string, _attributes?: SpanAttributes): this; + addLink(_link: Link): this; + addLinks(_links: Link[]): this; + setStatus(_status: SpanStatus): this; + updateName(_name: string): this; + end(_endTime?: TimeInput): void; + isRecording(): boolean; + recordException(_exception: Exception, _time?: TimeInput): void; +} +//# sourceMappingURL=NonRecordingSpan.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.js new file mode 100644 index 0000000..51157cc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.js @@ -0,0 +1,65 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { INVALID_SPAN_CONTEXT } from './invalid-span-constants'; +/** + * The NonRecordingSpan is the default {@link Span} that is used when no Span + * implementation is available. All operations are no-op including context + * propagation. + */ +export class NonRecordingSpan { + constructor(_spanContext = INVALID_SPAN_CONTEXT) { + this._spanContext = _spanContext; + } + // Returns a SpanContext. + spanContext() { + return this._spanContext; + } + // By default does nothing + setAttribute(_key, _value) { + return this; + } + // By default does nothing + setAttributes(_attributes) { + return this; + } + // By default does nothing + addEvent(_name, _attributes) { + return this; + } + addLink(_link) { + return this; + } + addLinks(_links) { + return this; + } + // By default does nothing + setStatus(_status) { + return this; + } + // By default does nothing + updateName(_name) { + return this; + } + // By default does nothing + end(_endTime) { } + // isRecording always returns false for NonRecordingSpan. + isRecording() { + return false; + } + // By default does nothing + recordException(_exception, _time) { } +} +//# sourceMappingURL=NonRecordingSpan.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.js.map new file mode 100644 index 0000000..55dd10b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NonRecordingSpan.js","sourceRoot":"","sources":["../../../src/trace/NonRecordingSpan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAMhE;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAC3B,YACmB,eAA4B,oBAAoB;QAAhD,iBAAY,GAAZ,YAAY,CAAoC;IAChE,CAAC;IAEJ,yBAAyB;IACzB,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,0BAA0B;IAC1B,YAAY,CAAC,IAAY,EAAE,MAAe;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,aAAa,CAAC,WAA2B;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,QAAQ,CAAC,KAAa,EAAE,WAA4B;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,KAAW;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,SAAS,CAAC,OAAmB;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,GAAG,CAAC,QAAoB,IAAS,CAAC;IAElC,yDAAyD;IACzD,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,eAAe,CAAC,UAAqB,EAAE,KAAiB,IAAS,CAAC;CACnE","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\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 */\nexport class NonRecordingSpan implements Span {\n constructor(\n private readonly _spanContext: SpanContext = INVALID_SPAN_CONTEXT\n ) {}\n\n // Returns a SpanContext.\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n // By default does nothing\n setAttribute(_key: string, _value: unknown): this {\n return this;\n }\n\n // By default does nothing\n setAttributes(_attributes: SpanAttributes): this {\n return this;\n }\n\n // By default does nothing\n addEvent(_name: string, _attributes?: SpanAttributes): this {\n return this;\n }\n\n addLink(_link: Link): this {\n return this;\n }\n\n addLinks(_links: Link[]): this {\n return this;\n }\n\n // By default does nothing\n setStatus(_status: SpanStatus): this {\n return this;\n }\n\n // By default does nothing\n updateName(_name: string): this {\n return this;\n }\n\n // By default does nothing\n end(_endTime?: TimeInput): void {}\n\n // isRecording always returns false for NonRecordingSpan.\n isRecording(): boolean {\n return false;\n }\n\n // By default does nothing\n recordException(_exception: Exception, _time?: TimeInput): void {}\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.d.ts new file mode 100644 index 0000000..0e059c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.d.ts @@ -0,0 +1,14 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanOptions } from './SpanOptions'; +import { Tracer } from './tracer'; +/** + * No-op implementations of {@link Tracer}. + */ +export declare class NoopTracer implements Tracer { + startSpan(name: string, options?: SpanOptions, context?: Context): Span; + startActiveSpan ReturnType>(name: string, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: SpanOptions | undefined, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: SpanOptions | undefined, ctx: Context | undefined, fn: F): ReturnType; +} +//# sourceMappingURL=NoopTracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.js new file mode 100644 index 0000000..ddc7760 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.js @@ -0,0 +1,71 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ContextAPI } from '../api/context'; +import { getSpanContext, setSpan } from '../trace/context-utils'; +import { NonRecordingSpan } from './NonRecordingSpan'; +import { isSpanContextValid } from './spancontext-utils'; +const contextApi = ContextAPI.getInstance(); +/** + * No-op implementations of {@link Tracer}. + */ +export class NoopTracer { + // startSpan starts a noop span. + startSpan(name, options, context = contextApi.active()) { + const root = Boolean(options === null || options === void 0 ? void 0 : options.root); + if (root) { + return new NonRecordingSpan(); + } + const parentFromContext = context && getSpanContext(context); + if (isSpanContext(parentFromContext) && + isSpanContextValid(parentFromContext)) { + return new NonRecordingSpan(parentFromContext); + } + else { + return new NonRecordingSpan(); + } + } + startActiveSpan(name, arg2, arg3, arg4) { + let opts; + let ctx; + let fn; + if (arguments.length < 2) { + return; + } + else if (arguments.length === 2) { + fn = arg2; + } + else if (arguments.length === 3) { + opts = arg2; + fn = arg3; + } + else { + opts = arg2; + ctx = arg3; + fn = arg4; + } + const parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active(); + const span = this.startSpan(name, opts, parentContext); + const contextWithSpanSet = setSpan(parentContext, span); + return contextApi.with(contextWithSpanSet, fn, undefined, span); + } +} +function isSpanContext(spanContext) { + return (typeof spanContext === 'object' && + typeof spanContext['spanId'] === 'string' && + typeof spanContext['traceId'] === 'string' && + typeof spanContext['traceFlags'] === 'number'); +} +//# sourceMappingURL=NoopTracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.js.map new file mode 100644 index 0000000..d2f96c7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopTracer.js","sourceRoot":"","sources":["../../../src/trace/NoopTracer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAKzD,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;AAE5C;;GAEG;AACH,MAAM,OAAO,UAAU;IACrB,gCAAgC;IAChC,SAAS,CACP,IAAY,EACZ,OAAqB,EACrB,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE;QAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,gBAAgB,EAAE,CAAC;SAC/B;QAED,MAAM,iBAAiB,GAAG,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;QAE7D,IACE,aAAa,CAAC,iBAAiB,CAAC;YAChC,kBAAkB,CAAC,iBAAiB,CAAC,EACrC;YACA,OAAO,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;SAChD;aAAM;YACL,OAAO,IAAI,gBAAgB,EAAE,CAAC;SAC/B;IACH,CAAC;IAiBD,eAAe,CACb,IAAY,EACZ,IAAsB,EACtB,IAAkB,EAClB,IAAQ;QAER,IAAI,IAA6B,CAAC;QAClC,IAAI,GAAwB,CAAC;QAC7B,IAAI,EAAK,CAAC;QAEV,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,OAAO;SACR;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,EAAE,GAAG,IAAS,CAAC;SAChB;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,GAAG,IAA+B,CAAC;YACvC,EAAE,GAAG,IAAS,CAAC;SAChB;aAAM;YACL,IAAI,GAAG,IAA+B,CAAC;YACvC,GAAG,GAAG,IAA2B,CAAC;YAClC,EAAE,GAAG,IAAS,CAAC;SAChB;QAED,MAAM,aAAa,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAExD,OAAO,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;CACF;AAED,SAAS,aAAa,CAAC,WAAgB;IACrC,OAAO,CACL,OAAO,WAAW,KAAK,QAAQ;QAC/B,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,QAAQ;QACzC,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,QAAQ;QAC1C,OAAO,WAAW,CAAC,YAAY,CAAC,KAAK,QAAQ,CAC9C,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ContextAPI } from '../api/context';\nimport { Context } from '../context/types';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { isSpanContextValid } from './spancontext-utils';\nimport { SpanOptions } from './SpanOptions';\nimport { SpanContext } from './span_context';\nimport { Tracer } from './tracer';\n\nconst contextApi = ContextAPI.getInstance();\n\n/**\n * No-op implementations of {@link Tracer}.\n */\nexport class NoopTracer implements Tracer {\n // startSpan starts a noop span.\n startSpan(\n name: string,\n options?: SpanOptions,\n context = contextApi.active()\n ): Span {\n const root = Boolean(options?.root);\n if (root) {\n return new NonRecordingSpan();\n }\n\n const parentFromContext = context && getSpanContext(context);\n\n if (\n isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)\n ) {\n return new NonRecordingSpan(parentFromContext);\n } else {\n return new NonRecordingSpan();\n }\n }\n\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: SpanOptions | undefined,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: SpanOptions | undefined,\n ctx: Context | undefined,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | SpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: SpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as SpanOptions | undefined;\n ctx = arg3 as Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = setSpan(parentContext, span);\n\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\n\nfunction isSpanContext(spanContext: any): spanContext is SpanContext {\n return (\n typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number'\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.d.ts new file mode 100644 index 0000000..ec0fe79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.d.ts @@ -0,0 +1,13 @@ +import { Tracer } from './tracer'; +import { TracerOptions } from './tracer_options'; +import { TracerProvider } from './tracer_provider'; +/** + * An implementation of the {@link TracerProvider} which returns an impotent + * Tracer for all calls to `getTracer`. + * + * All operations are no-op. + */ +export declare class NoopTracerProvider implements TracerProvider { + getTracer(_name?: string, _version?: string, _options?: TracerOptions): Tracer; +} +//# sourceMappingURL=NoopTracerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.js new file mode 100644 index 0000000..b542b7d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NoopTracer } from './NoopTracer'; +/** + * An implementation of the {@link TracerProvider} which returns an impotent + * Tracer for all calls to `getTracer`. + * + * All operations are no-op. + */ +export class NoopTracerProvider { + getTracer(_name, _version, _options) { + return new NoopTracer(); + } +} +//# sourceMappingURL=NoopTracerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.js.map new file mode 100644 index 0000000..6380d2c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopTracerProvider.js","sourceRoot":"","sources":["../../../src/trace/NoopTracerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAC7B,SAAS,CACP,KAAc,EACd,QAAiB,EACjB,QAAwB;QAExB,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NoopTracer } from './NoopTracer';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\nimport { TracerProvider } from './tracer_provider';\n\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 */\nexport class NoopTracerProvider implements TracerProvider {\n getTracer(\n _name?: string,\n _version?: string,\n _options?: TracerOptions\n ): Tracer {\n return new NoopTracer();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.d.ts new file mode 100644 index 0000000..116cc5c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.d.ts @@ -0,0 +1,27 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanOptions } from './SpanOptions'; +import { Tracer } from './tracer'; +import { TracerOptions } from './tracer_options'; +/** + * Proxy tracer provided by the proxy tracer provider + */ +export declare class ProxyTracer implements Tracer { + private _provider; + readonly name: string; + readonly version?: string | undefined; + readonly options?: TracerOptions | undefined; + private _delegate?; + constructor(_provider: TracerDelegator, name: string, version?: string | undefined, options?: TracerOptions | undefined); + startSpan(name: string, options?: SpanOptions, context?: Context): Span; + startActiveSpan unknown>(_name: string, _options: F | SpanOptions, _context?: F | Context, _fn?: F): ReturnType; + /** + * Try to get a tracer from the proxy tracer provider. + * If the proxy tracer provider has no delegate, return a noop tracer. + */ + private _getTracer; +} +export interface TracerDelegator { + getDelegateTracer(name: string, version?: string, options?: TracerOptions): Tracer | undefined; +} +//# sourceMappingURL=ProxyTracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.js new file mode 100644 index 0000000..94dcb02 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.js @@ -0,0 +1,51 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NoopTracer } from './NoopTracer'; +const NOOP_TRACER = new NoopTracer(); +/** + * Proxy tracer provided by the proxy tracer provider + */ +export class ProxyTracer { + constructor(_provider, name, version, options) { + this._provider = _provider; + this.name = name; + this.version = version; + this.options = options; + } + startSpan(name, options, context) { + return this._getTracer().startSpan(name, options, context); + } + startActiveSpan(_name, _options, _context, _fn) { + const tracer = this._getTracer(); + return Reflect.apply(tracer.startActiveSpan, tracer, arguments); + } + /** + * Try to get a tracer from the proxy tracer provider. + * If the proxy tracer provider has no delegate, return a noop tracer. + */ + _getTracer() { + if (this._delegate) { + return this._delegate; + } + const tracer = this._provider.getDelegateTracer(this.name, this.version, this.options); + if (!tracer) { + return NOOP_TRACER; + } + this._delegate = tracer; + return this._delegate; + } +} +//# sourceMappingURL=ProxyTracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.js.map new file mode 100644 index 0000000..e946938 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyTracer.js","sourceRoot":"","sources":["../../../src/trace/ProxyTracer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;AAErC;;GAEG;AACH,MAAM,OAAO,WAAW;IAItB,YACU,SAA0B,EAClB,IAAY,EACZ,OAAgB,EAChB,OAAuB;QAH/B,cAAS,GAAT,SAAS,CAAiB;QAClB,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAgB;IACtC,CAAC;IAEJ,SAAS,CAAC,IAAY,EAAE,OAAqB,EAAE,OAAiB;QAC9D,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,eAAe,CACb,KAAa,EACb,QAAyB,EACzB,QAAsB,EACtB,GAAO;QAEP,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACK,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAC7C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACb,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,WAAW,CAAC;SACpB;QAED,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { NoopTracer } from './NoopTracer';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER = new NoopTracer();\n\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nexport class ProxyTracer implements Tracer {\n // When a real implementation is provided, this will be it\n private _delegate?: Tracer;\n\n constructor(\n private _provider: TracerDelegator,\n public readonly name: string,\n public readonly version?: string,\n public readonly options?: TracerOptions\n ) {}\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n return this._getTracer().startSpan(name, options, context);\n }\n\n startActiveSpan unknown>(\n _name: string,\n _options: F | SpanOptions,\n _context?: F | Context,\n _fn?: F\n ): ReturnType {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\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 private _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n\n const tracer = this._provider.getDelegateTracer(\n this.name,\n this.version,\n this.options\n );\n\n if (!tracer) {\n return NOOP_TRACER;\n }\n\n this._delegate = tracer;\n return this._delegate;\n }\n}\n\nexport interface TracerDelegator {\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.d.ts new file mode 100644 index 0000000..ee7eafa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.d.ts @@ -0,0 +1,25 @@ +import { Tracer } from './tracer'; +import { TracerProvider } from './tracer_provider'; +import { TracerOptions } from './tracer_options'; +/** + * Tracer provider which provides {@link ProxyTracer}s. + * + * Before a delegate is set, tracers provided are NoOp. + * When a delegate is set, traces are provided from the delegate. + * When a delegate is set after tracers have already been provided, + * all tracers already provided will use the provided delegate implementation. + */ +export declare class ProxyTracerProvider implements TracerProvider { + private _delegate?; + /** + * Get a {@link ProxyTracer} + */ + getTracer(name: string, version?: string, options?: TracerOptions): Tracer; + getDelegate(): TracerProvider; + /** + * Set the delegate tracer provider + */ + setDelegate(delegate: TracerProvider): void; + getDelegateTracer(name: string, version?: string, options?: TracerOptions): Tracer | undefined; +} +//# sourceMappingURL=ProxyTracerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.js new file mode 100644 index 0000000..b62fb81 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.js @@ -0,0 +1,50 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ProxyTracer } from './ProxyTracer'; +import { NoopTracerProvider } from './NoopTracerProvider'; +const NOOP_TRACER_PROVIDER = new NoopTracerProvider(); +/** + * Tracer provider which provides {@link ProxyTracer}s. + * + * Before a delegate is set, tracers provided are NoOp. + * When a delegate is set, traces are provided from the delegate. + * When a delegate is set after tracers have already been provided, + * all tracers already provided will use the provided delegate implementation. + */ +export class ProxyTracerProvider { + /** + * Get a {@link ProxyTracer} + */ + getTracer(name, version, options) { + var _a; + return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer(this, name, version, options)); + } + getDelegate() { + var _a; + return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER; + } + /** + * Set the delegate tracer provider + */ + setDelegate(delegate) { + this._delegate = delegate; + } + getDelegateTracer(name, version, options) { + var _a; + return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options); + } +} +//# sourceMappingURL=ProxyTracerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.js.map new file mode 100644 index 0000000..fc11723 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyTracerProvider.js","sourceRoot":"","sources":["../../../src/trace/ProxyTracerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAmB;IAG9B;;OAEG;IACH,SAAS,CAAC,IAAY,EAAE,OAAgB,EAAE,OAAuB;;QAC/D,OAAO,CACL,MAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,mCAC9C,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED,WAAW;;QACT,OAAO,MAAA,IAAI,CAAC,SAAS,mCAAI,oBAAoB,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,iBAAiB,CACf,IAAY,EACZ,OAAgB,EAChB,OAAuB;;QAEvB,OAAO,MAAA,IAAI,CAAC,SAAS,0CAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Tracer } from './tracer';\nimport { TracerProvider } from './tracer_provider';\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n\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 */\nexport class ProxyTracerProvider implements TracerProvider {\n private _delegate?: TracerProvider;\n\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer {\n return (\n this.getDelegateTracer(name, version, options) ??\n new ProxyTracer(this, name, version, options)\n );\n }\n\n getDelegate(): TracerProvider {\n return this._delegate ?? NOOP_TRACER_PROVIDER;\n }\n\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate: TracerProvider) {\n this._delegate = delegate;\n }\n\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined {\n return this._delegate?.getTracer(name, version, options);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.d.ts new file mode 100644 index 0000000..c847eaf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.d.ts @@ -0,0 +1,31 @@ +import { Context } from '../context/types'; +import { SpanAttributes } from './attributes'; +import { Link } from './link'; +import { SamplingResult } from './SamplingResult'; +import { SpanKind } from './span_kind'; +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * This interface represent a sampler. Sampling is a mechanism to control the + * noise and overhead introduced by OpenTelemetry by reducing the number of + * samples of traces collected and sent to the backend. + */ +export interface Sampler { + /** + * Checks whether span needs to be created and tracked. + * + * @param context Parent Context which may contain a span. + * @param traceId of the span to be created. It can be different from the + * traceId in the {@link SpanContext}. Typically in situations when the + * span to be created starts a new trace. + * @param spanName of the span to be created. + * @param spanKind of the span to be created. + * @param attributes Initial set of SpanAttributes for the Span being constructed. + * @param links Collection of links that will be associated with the Span to + * be created. Typically useful for batch operations. + * @returns a {@link SamplingResult}. + */ + shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: SpanAttributes, links: Link[]): SamplingResult; + /** Returns the sampler name or short description with the configuration. */ + toString(): string; +} +//# sourceMappingURL=Sampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.js new file mode 100644 index 0000000..22a60a1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Sampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.js.map new file mode 100644 index 0000000..66719b1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Sampler.js","sourceRoot":"","sources":["../../../src/trace/Sampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { SpanAttributes } from './attributes';\nimport { Link } from './link';\nimport { SamplingResult } from './SamplingResult';\nimport { SpanKind } from './span_kind';\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * This interface represent a sampler. Sampling is a mechanism to control the\n * noise and overhead introduced by OpenTelemetry by reducing the number of\n * samples of traces collected and sent to the backend.\n */\nexport interface Sampler {\n /**\n * Checks whether span needs to be created and tracked.\n *\n * @param context Parent Context which may contain a span.\n * @param traceId of the span to be created. It can be different from the\n * traceId in the {@link SpanContext}. Typically in situations when the\n * span to be created starts a new trace.\n * @param spanName of the span to be created.\n * @param spanKind of the span to be created.\n * @param attributes Initial set of SpanAttributes for the Span being constructed.\n * @param links Collection of links that will be associated with the Span to\n * be created. Typically useful for batch operations.\n * @returns a {@link SamplingResult}.\n */\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: SpanAttributes,\n links: Link[]\n ): SamplingResult;\n\n /** Returns the sampler name or short description with the configuration. */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.d.ts new file mode 100644 index 0000000..f2bb495 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.d.ts @@ -0,0 +1,49 @@ +import { SpanAttributes } from './attributes'; +import { TraceState } from './trace_state'; +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +export declare enum SamplingDecision { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + NOT_RECORD = 0, + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + RECORD = 1, + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + RECORD_AND_SAMPLED = 2 +} +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * A sampling result contains a decision for a {@link Span} and additional + * attributes the sampler would like to added to the Span. + */ +export interface SamplingResult { + /** + * A sampling decision, refer to {@link SamplingDecision} for details. + */ + decision: SamplingDecision; + /** + * The list of attributes returned by SamplingResult MUST be immutable. + * Caller may call {@link Sampler}.shouldSample any number of times and + * can safely cache the returned value. + */ + attributes?: Readonly; + /** + * A {@link TraceState} that will be associated with the {@link Span} through + * the new {@link SpanContext}. Samplers SHOULD return the TraceState from + * the passed-in {@link Context} if they do not intend to change it. Leaving + * the value undefined will also leave the TraceState unchanged. + */ + traceState?: TraceState; +} +//# sourceMappingURL=SamplingResult.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.js new file mode 100644 index 0000000..be65741 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.js @@ -0,0 +1,39 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +export var SamplingDecision; +(function (SamplingDecision) { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + SamplingDecision[SamplingDecision["NOT_RECORD"] = 0] = "NOT_RECORD"; + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + SamplingDecision[SamplingDecision["RECORD"] = 1] = "RECORD"; + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + SamplingDecision[SamplingDecision["RECORD_AND_SAMPLED"] = 2] = "RECORD_AND_SAMPLED"; +})(SamplingDecision || (SamplingDecision = {})); +//# sourceMappingURL=SamplingResult.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.js.map new file mode 100644 index 0000000..fd549c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SamplingResult.js","sourceRoot":"","sources":["../../../src/trace/SamplingResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH;;;;GAIG;AACH,MAAM,CAAN,IAAY,gBAgBX;AAhBD,WAAY,gBAAgB;IAC1B;;;OAGG;IACH,mEAAU,CAAA;IACV;;;OAGG;IACH,2DAAM,CAAA;IACN;;;OAGG;IACH,mFAAkB,CAAA;AACpB,CAAC,EAhBW,gBAAgB,KAAhB,gBAAgB,QAgB3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanAttributes } from './attributes';\nimport { TraceState } from './trace_state';\n\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 */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.d.ts new file mode 100644 index 0000000..c804568 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.d.ts @@ -0,0 +1,23 @@ +import { TimeInput } from '../common/Time'; +import { SpanAttributes } from './attributes'; +import { Link } from './link'; +import { SpanKind } from './span_kind'; +/** + * Options needed for span creation + */ +export interface SpanOptions { + /** + * The SpanKind of a span + * @default {@link SpanKind.INTERNAL} + */ + kind?: SpanKind; + /** A span's attributes */ + attributes?: SpanAttributes; + /** {@link Link}s span to other spans */ + links?: Link[]; + /** A manually specified start time for the created `Span` object. */ + startTime?: TimeInput; + /** The new span should be a root span. (Ignore parent from context). */ + root?: boolean; +} +//# sourceMappingURL=SpanOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.js new file mode 100644 index 0000000..06b42b1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=SpanOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.js.map new file mode 100644 index 0000000..9132a33 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SpanOptions.js","sourceRoot":"","sources":["../../../src/trace/SpanOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { Link } from './link';\nimport { SpanKind } from './span_kind';\n\n/**\n * Options needed for span creation\n */\nexport interface SpanOptions {\n /**\n * The SpanKind of a span\n * @default {@link SpanKind.INTERNAL}\n */\n kind?: SpanKind;\n\n /** A span's attributes */\n attributes?: SpanAttributes;\n\n /** {@link Link}s span to other spans */\n links?: Link[];\n\n /** A manually specified start time for the created `Span` object. */\n startTime?: TimeInput;\n\n /** The new span should be a root span. (Ignore parent from context). */\n root?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/attributes.d.ts new file mode 100644 index 0000000..a2a5d2a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/attributes.d.ts @@ -0,0 +1,10 @@ +import { Attributes, AttributeValue } from '../common/Attributes'; +/** + * @deprecated please use {@link Attributes} + */ +export declare type SpanAttributes = Attributes; +/** + * @deprecated please use {@link AttributeValue} + */ +export declare type SpanAttributeValue = AttributeValue; +//# sourceMappingURL=attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/attributes.js new file mode 100644 index 0000000..6f1b9a3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/attributes.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/attributes.js.map new file mode 100644 index 0000000..2b02be7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/trace/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, AttributeValue } from '../common/Attributes';\n\n/**\n * @deprecated please use {@link Attributes}\n */\nexport type SpanAttributes = Attributes;\n\n/**\n * @deprecated please use {@link AttributeValue}\n */\nexport type SpanAttributeValue = AttributeValue;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.d.ts new file mode 100644 index 0000000..f35f794 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.d.ts @@ -0,0 +1,41 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanContext } from './span_context'; +/** + * Return the span if one exists + * + * @param context context to get span from + */ +export declare function getSpan(context: Context): Span | undefined; +/** + * Gets the span from the current context, if one exists. + */ +export declare function getActiveSpan(): Span | undefined; +/** + * Set the span on a context + * + * @param context context to use as parent + * @param span span to set active + */ +export declare function setSpan(context: Context, span: Span): Context; +/** + * Remove current span stored in the context + * + * @param context context to delete span from + */ +export declare function deleteSpan(context: Context): Context; +/** + * Wrap span context in a NoopSpan and set as span in a new + * context + * + * @param context context to set active span on + * @param spanContext span context to be wrapped + */ +export declare function setSpanContext(context: Context, spanContext: SpanContext): Context; +/** + * Get the span context of the span if it exists. + * + * @param context context to get values from + */ +export declare function getSpanContext(context: Context): SpanContext | undefined; +//# sourceMappingURL=context-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.js new file mode 100644 index 0000000..5d113f1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.js @@ -0,0 +1,73 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createContextKey } from '../context/context'; +import { NonRecordingSpan } from './NonRecordingSpan'; +import { ContextAPI } from '../api/context'; +/** + * span key + */ +const SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN'); +/** + * Return the span if one exists + * + * @param context context to get span from + */ +export function getSpan(context) { + return context.getValue(SPAN_KEY) || undefined; +} +/** + * Gets the span from the current context, if one exists. + */ +export function getActiveSpan() { + return getSpan(ContextAPI.getInstance().active()); +} +/** + * Set the span on a context + * + * @param context context to use as parent + * @param span span to set active + */ +export function setSpan(context, span) { + return context.setValue(SPAN_KEY, span); +} +/** + * Remove current span stored in the context + * + * @param context context to delete span from + */ +export function deleteSpan(context) { + return context.deleteValue(SPAN_KEY); +} +/** + * Wrap span context in a NoopSpan and set as span in a new + * context + * + * @param context context to set active span on + * @param spanContext span context to be wrapped + */ +export function setSpanContext(context, spanContext) { + return setSpan(context, new NonRecordingSpan(spanContext)); +} +/** + * Get the span context of the span if it exists. + * + * @param context context to get values from + */ +export function getSpanContext(context) { + var _a; + return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext(); +} +//# sourceMappingURL=context-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.js.map new file mode 100644 index 0000000..a8917a4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context-utils.js","sourceRoot":"","sources":["../../../src/trace/context-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gCAAgC,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAQ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU,IAAI,SAAS,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,OAAgB,EAAE,IAAU;IAClD,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAgB,EAChB,WAAwB;IAExB,OAAO,OAAO,CAAC,OAAO,EAAE,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;;IAC7C,OAAO,MAAA,OAAO,CAAC,OAAO,CAAC,0CAAE,WAAW,EAAE,CAAC;AACzC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n\n/**\n * span key\n */\nconst SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context: Context): Span | undefined {\n return (context.getValue(SPAN_KEY) as Span) || undefined;\n}\n\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan(): Span | undefined {\n return getSpan(ContextAPI.getInstance().active());\n}\n\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 */\nexport function setSpan(context: Context, span: Span): Context {\n return context.setValue(SPAN_KEY, span);\n}\n\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context: Context): Context {\n return context.deleteValue(SPAN_KEY);\n}\n\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 */\nexport function setSpanContext(\n context: Context,\n spanContext: SpanContext\n): Context {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context: Context): SpanContext | undefined {\n return getSpan(context)?.spanContext();\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.d.ts new file mode 100644 index 0000000..9ed5ecb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.d.ts @@ -0,0 +1,22 @@ +import { TraceState } from '../trace_state'; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +export declare class TraceStateImpl implements TraceState { + private _internalState; + constructor(rawTraceState?: string); + set(key: string, value: string): TraceStateImpl; + unset(key: string): TraceStateImpl; + get(key: string): string | undefined; + serialize(): string; + private _parse; + private _keys; + private _clone; +} +//# sourceMappingURL=tracestate-impl.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.js new file mode 100644 index 0000000..3be2ea3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.js @@ -0,0 +1,99 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { validateKey, validateValue } from './tracestate-validators'; +const MAX_TRACE_STATE_ITEMS = 32; +const MAX_TRACE_STATE_LEN = 512; +const LIST_MEMBERS_SEPARATOR = ','; +const LIST_MEMBER_KEY_VALUE_SPLITTER = '='; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +export class TraceStateImpl { + constructor(rawTraceState) { + this._internalState = new Map(); + if (rawTraceState) + this._parse(rawTraceState); + } + set(key, value) { + // TODO: Benchmark the different approaches(map vs list) and + // use the faster one. + const traceState = this._clone(); + if (traceState._internalState.has(key)) { + traceState._internalState.delete(key); + } + traceState._internalState.set(key, value); + return traceState; + } + unset(key) { + const traceState = this._clone(); + traceState._internalState.delete(key); + return traceState; + } + get(key) { + return this._internalState.get(key); + } + serialize() { + return this._keys() + .reduce((agg, key) => { + agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key)); + return agg; + }, []) + .join(LIST_MEMBERS_SEPARATOR); + } + _parse(rawTraceState) { + if (rawTraceState.length > MAX_TRACE_STATE_LEN) + return; + this._internalState = rawTraceState + .split(LIST_MEMBERS_SEPARATOR) + .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning + .reduce((agg, part) => { + const listMember = part.trim(); // Optional Whitespace (OWS) handling + const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER); + if (i !== -1) { + const key = listMember.slice(0, i); + const value = listMember.slice(i + 1, part.length); + if (validateKey(key) && validateValue(value)) { + agg.set(key, value); + } + else { + // TODO: Consider to add warning log + } + } + return agg; + }, new Map()); + // Because of the reverse() requirement, trunc must be done after map is created + if (this._internalState.size > MAX_TRACE_STATE_ITEMS) { + this._internalState = new Map(Array.from(this._internalState.entries()) + .reverse() // Use reverse same as original tracestate parse chain + .slice(0, MAX_TRACE_STATE_ITEMS)); + } + } + _keys() { + return Array.from(this._internalState.keys()).reverse(); + } + _clone() { + const traceState = new TraceStateImpl(); + traceState._internalState = new Map(this._internalState); + return traceState; + } +} +//# sourceMappingURL=tracestate-impl.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.js.map new file mode 100644 index 0000000..90f35e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracestate-impl.js","sourceRoot":"","sources":["../../../../src/trace/internal/tracestate-impl.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TraceState } from '../trace_state';\nimport { validateKey, validateValue } from './tracestate-validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\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 */\nexport class TraceStateImpl implements TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceStateImpl {\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\n unset(key: string): TraceStateImpl {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return this._keys()\n .reduce((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) 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: Map, part: string) => {\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 (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\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(\n 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 }\n\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceStateImpl {\n const traceState = new TraceStateImpl();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.d.ts new file mode 100644 index 0000000..4917f99 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.d.ts @@ -0,0 +1,15 @@ +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +export declare function validateKey(key: string): boolean; +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +export declare function validateValue(value: string): boolean; +//# sourceMappingURL=tracestate-validators.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.js new file mode 100644 index 0000000..3a4f95f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.js @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]'; +const VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`; +const VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`; +const VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`); +const VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/; +const INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/; +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +export function validateKey(key) { + return VALID_KEY_REGEX.test(key); +} +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +export function validateValue(value) { + return (VALID_VALUE_BASE_REGEX.test(value) && + !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)); +} +//# sourceMappingURL=tracestate-validators.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.js.map new file mode 100644 index 0000000..20d02b8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracestate-validators.js","sourceRoot":"","sources":["../../../../src/trace/internal/tracestate-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAC5C,MAAM,SAAS,GAAG,QAAQ,oBAAoB,SAAS,CAAC;AACxD,MAAM,gBAAgB,GAAG,WAAW,oBAAoB,gBAAgB,oBAAoB,QAAQ,CAAC;AACrG,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,OAAO,SAAS,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC7E,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AACrD,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,CACL,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAC7C,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 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/**\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 */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\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 */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.d.ts new file mode 100644 index 0000000..e3b51fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.d.ts @@ -0,0 +1,3 @@ +import { TraceState } from '../trace_state'; +export declare function createTraceState(rawTraceState?: string): TraceState; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.js new file mode 100644 index 0000000..feea469 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TraceStateImpl } from './tracestate-impl'; +export function createTraceState(rawTraceState) { + return new TraceStateImpl(rawTraceState); +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.js.map new file mode 100644 index 0000000..91ba3d1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/trace/internal/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,UAAU,gBAAgB,CAAC,aAAsB;IACrD,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TraceState } from '../trace_state';\nimport { TraceStateImpl } from './tracestate-impl';\n\nexport function createTraceState(rawTraceState?: string): TraceState {\n return new TraceStateImpl(rawTraceState);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.d.ts new file mode 100644 index 0000000..e32dab9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.d.ts @@ -0,0 +1,5 @@ +import { SpanContext } from './span_context'; +export declare const INVALID_SPANID = "0000000000000000"; +export declare const INVALID_TRACEID = "00000000000000000000000000000000"; +export declare const INVALID_SPAN_CONTEXT: SpanContext; +//# sourceMappingURL=invalid-span-constants.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.js new file mode 100644 index 0000000..bd912f4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.js @@ -0,0 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TraceFlags } from './trace_flags'; +export const INVALID_SPANID = '0000000000000000'; +export const INVALID_TRACEID = '00000000000000000000000000000000'; +export const INVALID_SPAN_CONTEXT = { + traceId: INVALID_TRACEID, + spanId: INVALID_SPANID, + traceFlags: TraceFlags.NONE, +}; +//# sourceMappingURL=invalid-span-constants.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.js.map new file mode 100644 index 0000000..9c337c4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"invalid-span-constants.js","sourceRoot":"","sources":["../../../src/trace/invalid-span-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,kCAAkC,CAAC;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,UAAU,CAAC,IAAI;CAC5B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanContext } from './span_context';\nimport { TraceFlags } from './trace_flags';\n\nexport const INVALID_SPANID = '0000000000000000';\nexport const INVALID_TRACEID = '00000000000000000000000000000000';\nexport const INVALID_SPAN_CONTEXT: SpanContext = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/link.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/link.d.ts new file mode 100644 index 0000000..8fc0106 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/link.d.ts @@ -0,0 +1,26 @@ +import { SpanAttributes } from './attributes'; +import { SpanContext } from './span_context'; +/** + * A pointer from the current {@link Span} to another span in the same trace or + * in a different trace. + * Few examples of Link usage. + * 1. Batch Processing: A batch of elements may contain elements associated + * with one or more traces/spans. Since there can only be one parent + * SpanContext, Link is used to keep reference to SpanContext of all + * elements in the batch. + * 2. Public Endpoint: A SpanContext in incoming client request on a public + * endpoint is untrusted from service provider perspective. In such case it + * is advisable to start a new trace with appropriate sampling decision. + * However, it is desirable to associate incoming SpanContext to new trace + * initiated on service provider side so two traces (from Client and from + * Service Provider) can be correlated. + */ +export interface Link { + /** The {@link SpanContext} of a linked span. */ + context: SpanContext; + /** A set of {@link SpanAttributes} on the link. */ + attributes?: SpanAttributes; + /** Count of attributes of the link that were dropped due to collection limits */ + droppedAttributesCount?: number; +} +//# sourceMappingURL=link.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/link.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/link.js new file mode 100644 index 0000000..7c8accb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/link.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=link.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/link.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/link.js.map new file mode 100644 index 0000000..c10b714 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/link.js.map @@ -0,0 +1 @@ +{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/trace/link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanAttributes } from './attributes';\nimport { SpanContext } from './span_context';\n\n/**\n * A pointer from the current {@link Span} to another span in the same trace or\n * in a different trace.\n * Few examples of Link usage.\n * 1. Batch Processing: A batch of elements may contain elements associated\n * with one or more traces/spans. Since there can only be one parent\n * SpanContext, Link is used to keep reference to SpanContext of all\n * elements in the batch.\n * 2. Public Endpoint: A SpanContext in incoming client request on a public\n * endpoint is untrusted from service provider perspective. In such case it\n * is advisable to start a new trace with appropriate sampling decision.\n * However, it is desirable to associate incoming SpanContext to new trace\n * initiated on service provider side so two traces (from Client and from\n * Service Provider) can be correlated.\n */\nexport interface Link {\n /** The {@link SpanContext} of a linked span. */\n context: SpanContext;\n /** A set of {@link SpanAttributes} on the link. */\n attributes?: SpanAttributes;\n /** Count of attributes of the link that were dropped due to collection limits */\n droppedAttributesCount?: number;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span.d.ts new file mode 100644 index 0000000..28c6442 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span.d.ts @@ -0,0 +1,120 @@ +import { Exception } from '../common/Exception'; +import { TimeInput } from '../common/Time'; +import { SpanAttributes, SpanAttributeValue } from './attributes'; +import { SpanContext } from './span_context'; +import { SpanStatus } from './status'; +import { Link } from './link'; +/** + * An interface that represents a span. A span represents a single operation + * within a trace. Examples of span might include remote procedure calls or a + * in-process function calls to sub-components. A Trace has a single, top-level + * "root" Span that in turn may have zero or more child Spans, which in turn + * may have children. + * + * Spans are created by the {@link Tracer.startSpan} method. + */ +export interface Span { + /** + * Returns the {@link SpanContext} object associated with this Span. + * + * Get an immutable, serializable identifier for this span that can be used + * to create new child spans. Returned SpanContext is usable even after the + * span ends. + * + * @returns the SpanContext object associated with this Span. + */ + spanContext(): SpanContext; + /** + * Sets an attribute to the span. + * + * Sets a single Attribute with the key and value passed as arguments. + * + * @param key the key for this attribute. + * @param value the value for this attribute. Setting a value null or + * undefined is invalid and will result in undefined behavior. + */ + setAttribute(key: string, value: SpanAttributeValue): this; + /** + * Sets attributes to the span. + * + * @param attributes the attributes that will be added. + * null or undefined attribute values + * are invalid and will result in undefined behavior. + */ + setAttributes(attributes: SpanAttributes): this; + /** + * Adds an event to the Span. + * + * @param name the name of the event. + * @param [attributesOrStartTime] the attributes that will be added; these are + * associated with this event. Can be also a start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [startTime] start time of the event. + */ + addEvent(name: string, attributesOrStartTime?: SpanAttributes | TimeInput, startTime?: TimeInput): this; + /** + * Adds a single link to the span. + * + * Links added after the creation will not affect the sampling decision. + * It is preferred span links be added at span creation. + * + * @param link the link to add. + */ + addLink(link: Link): this; + /** + * Adds multiple links to the span. + * + * Links added after the creation will not affect the sampling decision. + * It is preferred span links be added at span creation. + * + * @param links the links to add. + */ + addLinks(links: Link[]): this; + /** + * Sets a status to the span. If used, this will override the default Span + * status. Default is {@link SpanStatusCode.UNSET}. SetStatus overrides the value + * of previous calls to SetStatus on the Span. + * + * @param status the SpanStatus to set. + */ + setStatus(status: SpanStatus): this; + /** + * Updates the Span name. + * + * This will override the name provided via {@link Tracer.startSpan}. + * + * Upon this update, any sampling behavior based on Span name will depend on + * the implementation. + * + * @param name the Span name. + */ + updateName(name: string): this; + /** + * Marks the end of Span execution. + * + * Call to End of a Span MUST not have any effects on child spans. Those may + * still be running and can be ended later. + * + * Do not return `this`. The Span generally should not be used after it + * is ended so chaining is not desired in this context. + * + * @param [endTime] the time to set as Span's end time. If not provided, + * use the current time as the span's end time. + */ + end(endTime?: TimeInput): void; + /** + * Returns the flag whether this span will be recorded. + * + * @returns true if this Span is active and recording information like events + * with the `AddEvent` operation and attributes using `setAttributes`. + */ + isRecording(): boolean; + /** + * Sets exception as a span event + * @param exception the exception the only accepted values are string or Error + * @param [time] the time to set as Span's event time. If not provided, + * use the current time. + */ + recordException(exception: Exception, time?: TimeInput): void; +} +//# sourceMappingURL=span.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span.js new file mode 100644 index 0000000..f41c7f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=span.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span.js.map new file mode 100644 index 0000000..f9a1e32 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span.js.map @@ -0,0 +1 @@ +{"version":3,"file":"span.js","sourceRoot":"","sources":["../../../src/trace/span.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes, SpanAttributeValue } from './attributes';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\n/**\n * An interface that represents a span. A span represents a single operation\n * within a trace. Examples of span might include remote procedure calls or a\n * in-process function calls to sub-components. A Trace has a single, top-level\n * \"root\" Span that in turn may have zero or more child Spans, which in turn\n * may have children.\n *\n * Spans are created by the {@link Tracer.startSpan} method.\n */\nexport interface Span {\n /**\n * Returns the {@link SpanContext} object associated with this Span.\n *\n * Get an immutable, serializable identifier for this span that can be used\n * to create new child spans. Returned SpanContext is usable even after the\n * span ends.\n *\n * @returns the SpanContext object associated with this Span.\n */\n spanContext(): SpanContext;\n\n /**\n * Sets an attribute to the span.\n *\n * Sets a single Attribute with the key and value passed as arguments.\n *\n * @param key the key for this attribute.\n * @param value the value for this attribute. Setting a value null or\n * undefined is invalid and will result in undefined behavior.\n */\n setAttribute(key: string, value: SpanAttributeValue): this;\n\n /**\n * Sets attributes to the span.\n *\n * @param attributes the attributes that will be added.\n * null or undefined attribute values\n * are invalid and will result in undefined behavior.\n */\n setAttributes(attributes: SpanAttributes): this;\n\n /**\n * Adds an event to the Span.\n *\n * @param name the name of the event.\n * @param [attributesOrStartTime] the attributes that will be added; these are\n * associated with this event. Can be also a start time\n * if type is {@type TimeInput} and 3rd param is undefined\n * @param [startTime] start time of the event.\n */\n addEvent(\n name: string,\n attributesOrStartTime?: SpanAttributes | TimeInput,\n startTime?: TimeInput\n ): this;\n\n /**\n * Adds a single link to the span.\n *\n * Links added after the creation will not affect the sampling decision.\n * It is preferred span links be added at span creation.\n *\n * @param link the link to add.\n */\n addLink(link: Link): this;\n\n /**\n * Adds multiple links to the span.\n *\n * Links added after the creation will not affect the sampling decision.\n * It is preferred span links be added at span creation.\n *\n * @param links the links to add.\n */\n addLinks(links: Link[]): this;\n\n /**\n * Sets a status to the span. If used, this will override the default Span\n * status. Default is {@link SpanStatusCode.UNSET}. SetStatus overrides the value\n * of previous calls to SetStatus on the Span.\n *\n * @param status the SpanStatus to set.\n */\n setStatus(status: SpanStatus): this;\n\n /**\n * Updates the Span name.\n *\n * This will override the name provided via {@link Tracer.startSpan}.\n *\n * Upon this update, any sampling behavior based on Span name will depend on\n * the implementation.\n *\n * @param name the Span name.\n */\n updateName(name: string): this;\n\n /**\n * Marks the end of Span execution.\n *\n * Call to End of a Span MUST not have any effects on child spans. Those may\n * still be running and can be ended later.\n *\n * Do not return `this`. The Span generally should not be used after it\n * is ended so chaining is not desired in this context.\n *\n * @param [endTime] the time to set as Span's end time. If not provided,\n * use the current time as the span's end time.\n */\n end(endTime?: TimeInput): void;\n\n /**\n * Returns the flag whether this span will be recorded.\n *\n * @returns true if this Span is active and recording information like events\n * with the `AddEvent` operation and attributes using `setAttributes`.\n */\n isRecording(): boolean;\n\n /**\n * Sets exception as a span event\n * @param exception the exception the only accepted values are string or Error\n * @param [time] the time to set as Span's event time. If not provided,\n * use the current time.\n */\n recordException(exception: Exception, time?: TimeInput): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_context.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_context.d.ts new file mode 100644 index 0000000..f30933a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_context.d.ts @@ -0,0 +1,53 @@ +import { TraceState } from './trace_state'; +/** + * A SpanContext represents the portion of a {@link Span} which must be + * serialized and propagated along side of a {@link Baggage}. + */ +export interface SpanContext { + /** + * The ID of the trace that this span belongs to. It is worldwide unique + * with practically sufficient probability by being made as 16 randomly + * generated bytes, encoded as a 32 lowercase hex characters corresponding to + * 128 bits. + */ + traceId: string; + /** + * The ID of the Span. It is globally unique with practically sufficient + * probability by being made as 8 randomly generated bytes, encoded as a 16 + * lowercase hex characters corresponding to 64 bits. + */ + spanId: string; + /** + * Only true if the SpanContext was propagated from a remote parent. + */ + isRemote?: boolean; + /** + * Trace flags to propagate. + * + * It is represented as 1 byte (bitmap). Bit to represent whether trace is + * sampled or not. When set, the least significant bit documents that the + * caller may have recorded trace data. A caller who does not record trace + * data out-of-band leaves this flag unset. + * + * see {@link TraceFlags} for valid flag values. + */ + traceFlags: number; + /** + * Tracing-system-specific info to propagate. + * + * The tracestate field value is a `list` as defined below. The `list` is a + * series of `list-members` separated by commas `,`, and a list-member is a + * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs + * surrounding `list-members` are ignored. There can be a maximum of 32 + * `list-members` in a `list`. + * More Info: https://www.w3.org/TR/trace-context/#tracestate-field + * + * Examples: + * Single tracing system (generic format): + * tracestate: rojo=00f067aa0ba902b7 + * Multiple tracing systems (with different formatting): + * tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE + */ + traceState?: TraceState; +} +//# sourceMappingURL=span_context.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_context.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_context.js new file mode 100644 index 0000000..1bb88b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_context.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=span_context.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_context.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_context.js.map new file mode 100644 index 0000000..dbf0bfe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"span_context.js","sourceRoot":"","sources":["../../../src/trace/span_context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TraceState } from './trace_state';\n\n/**\n * A SpanContext represents the portion of a {@link Span} which must be\n * serialized and propagated along side of a {@link Baggage}.\n */\nexport interface SpanContext {\n /**\n * The ID of the trace that this span belongs to. It is worldwide unique\n * with practically sufficient probability by being made as 16 randomly\n * generated bytes, encoded as a 32 lowercase hex characters corresponding to\n * 128 bits.\n */\n traceId: string;\n /**\n * The ID of the Span. It is globally unique with practically sufficient\n * probability by being made as 8 randomly generated bytes, encoded as a 16\n * lowercase hex characters corresponding to 64 bits.\n */\n spanId: string;\n /**\n * Only true if the SpanContext was propagated from a remote parent.\n */\n isRemote?: boolean;\n /**\n * Trace flags to propagate.\n *\n * It is represented as 1 byte (bitmap). Bit to represent whether trace is\n * sampled or not. When set, the least significant bit documents that the\n * caller may have recorded trace data. A caller who does not record trace\n * data out-of-band leaves this flag unset.\n *\n * see {@link TraceFlags} for valid flag values.\n */\n traceFlags: number;\n /**\n * Tracing-system-specific info to propagate.\n *\n * The tracestate field value is a `list` as defined below. The `list` is a\n * series of `list-members` separated by commas `,`, and a list-member is a\n * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs\n * surrounding `list-members` are ignored. There can be a maximum of 32\n * `list-members` in a `list`.\n * More Info: https://www.w3.org/TR/trace-context/#tracestate-field\n *\n * Examples:\n * Single tracing system (generic format):\n * tracestate: rojo=00f067aa0ba902b7\n * Multiple tracing systems (with different formatting):\n * tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE\n */\n traceState?: TraceState;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.d.ts new file mode 100644 index 0000000..a89846f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.d.ts @@ -0,0 +1,27 @@ +export declare enum SpanKind { + /** Default value. Indicates that the span is used internally. */ + INTERNAL = 0, + /** + * Indicates that the span covers server-side handling of an RPC or other + * remote request. + */ + SERVER = 1, + /** + * Indicates that the span covers the client-side wrapper around an RPC or + * other remote request. + */ + CLIENT = 2, + /** + * Indicates that the span describes producer sending a message to a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + PRODUCER = 3, + /** + * Indicates that the span describes consumer receiving a message from a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + CONSUMER = 4 +} +//# sourceMappingURL=span_kind.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.js new file mode 100644 index 0000000..1119df9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.js @@ -0,0 +1,43 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var SpanKind; +(function (SpanKind) { + /** Default value. Indicates that the span is used internally. */ + SpanKind[SpanKind["INTERNAL"] = 0] = "INTERNAL"; + /** + * Indicates that the span covers server-side handling of an RPC or other + * remote request. + */ + SpanKind[SpanKind["SERVER"] = 1] = "SERVER"; + /** + * Indicates that the span covers the client-side wrapper around an RPC or + * other remote request. + */ + SpanKind[SpanKind["CLIENT"] = 2] = "CLIENT"; + /** + * Indicates that the span describes producer sending a message to a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + SpanKind[SpanKind["PRODUCER"] = 3] = "PRODUCER"; + /** + * Indicates that the span describes consumer receiving a message from a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + SpanKind[SpanKind["CONSUMER"] = 4] = "CONSUMER"; +})(SpanKind || (SpanKind = {})); +//# sourceMappingURL=span_kind.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.js.map new file mode 100644 index 0000000..deb6be7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.js.map @@ -0,0 +1 @@ +{"version":3,"file":"span_kind.js","sourceRoot":"","sources":["../../../src/trace/span_kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAN,IAAY,QA6BX;AA7BD,WAAY,QAAQ;IAClB,iEAAiE;IACjE,+CAAY,CAAA;IAEZ;;;OAGG;IACH,2CAAU,CAAA;IAEV;;;OAGG;IACH,2CAAU,CAAA;IAEV;;;;OAIG;IACH,+CAAY,CAAA;IAEZ;;;;OAIG;IACH,+CAAY,CAAA;AACd,CAAC,EA7BW,QAAQ,KAAR,QAAQ,QA6BnB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum SpanKind {\n /** Default value. Indicates that the span is used internally. */\n INTERNAL = 0,\n\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SERVER = 1,\n\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n CLIENT = 2,\n\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 PRODUCER = 3,\n\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 CONSUMER = 4,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.d.ts new file mode 100644 index 0000000..f191111 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.d.ts @@ -0,0 +1,17 @@ +import { Span } from './span'; +import { SpanContext } from './span_context'; +export declare function isValidTraceId(traceId: string): boolean; +export declare function isValidSpanId(spanId: string): boolean; +/** + * Returns true if this {@link SpanContext} is valid. + * @return true if this {@link SpanContext} is valid. + */ +export declare function isSpanContextValid(spanContext: SpanContext): boolean; +/** + * Wrap the given {@link SpanContext} in a new non-recording {@link Span} + * + * @param spanContext span context to be wrapped + * @returns a new non-recording {@link Span} with the provided context + */ +export declare function wrapSpanContext(spanContext: SpanContext): Span; +//# sourceMappingURL=spancontext-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.js new file mode 100644 index 0000000..a51187a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.js @@ -0,0 +1,42 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants'; +import { NonRecordingSpan } from './NonRecordingSpan'; +const VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i; +const VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i; +export function isValidTraceId(traceId) { + return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID; +} +export function isValidSpanId(spanId) { + return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID; +} +/** + * Returns true if this {@link SpanContext} is valid. + * @return true if this {@link SpanContext} is valid. + */ +export function isSpanContextValid(spanContext) { + return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)); +} +/** + * Wrap the given {@link SpanContext} in a new non-recording {@link Span} + * + * @param spanContext span context to be wrapped + * @returns a new non-recording {@link Span} with the provided context + */ +export function wrapSpanContext(spanContext) { + return new NonRecordingSpan(spanContext); +} +//# sourceMappingURL=spancontext-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.js.map new file mode 100644 index 0000000..9730fc7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spancontext-utils.js","sourceRoot":"","sources":["../../../src/trace/spancontext-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAChD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAE7C,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,eAAe,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,cAAc,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAwB;IACzD,OAAO,CACL,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CACzE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,WAAwB;IACtD,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC3C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\n\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\n\nexport function isValidTraceId(traceId: string): boolean {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\n\nexport function isValidSpanId(spanId: string): boolean {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n return (\n isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n );\n}\n\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 */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n return new NonRecordingSpan(spanContext);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/status.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/status.d.ts new file mode 100644 index 0000000..ab19a68 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/status.d.ts @@ -0,0 +1,25 @@ +export interface SpanStatus { + /** The status code of this message. */ + code: SpanStatusCode; + /** A developer-facing error message. */ + message?: string; +} +/** + * An enumeration of status codes. + */ +export declare enum SpanStatusCode { + /** + * The default status. + */ + UNSET = 0, + /** + * The operation has been validated by an Application developer or + * Operator to have completed successfully. + */ + OK = 1, + /** + * The operation contains an error. + */ + ERROR = 2 +} +//# sourceMappingURL=status.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/status.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/status.js new file mode 100644 index 0000000..5ee55e4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/status.js @@ -0,0 +1,20 @@ +/** + * An enumeration of status codes. + */ +export var SpanStatusCode; +(function (SpanStatusCode) { + /** + * The default status. + */ + SpanStatusCode[SpanStatusCode["UNSET"] = 0] = "UNSET"; + /** + * The operation has been validated by an Application developer or + * Operator to have completed successfully. + */ + SpanStatusCode[SpanStatusCode["OK"] = 1] = "OK"; + /** + * The operation contains an error. + */ + SpanStatusCode[SpanStatusCode["ERROR"] = 2] = "ERROR"; +})(SpanStatusCode || (SpanStatusCode = {})); +//# sourceMappingURL=status.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/status.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/status.js.map new file mode 100644 index 0000000..af7e7d7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/status.js.map @@ -0,0 +1 @@ +{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/trace/status.ts"],"names":[],"mappings":"AAsBA;;GAEG;AACH,MAAM,CAAN,IAAY,cAcX;AAdD,WAAY,cAAc;IACxB;;OAEG;IACH,qDAAS,CAAA;IACT;;;OAGG;IACH,+CAAM,CAAA;IACN;;OAEG;IACH,qDAAS,CAAA;AACX,CAAC,EAdW,cAAc,KAAd,cAAc,QAczB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport interface SpanStatus {\n /** The status code of this message. */\n code: SpanStatusCode;\n /** A developer-facing error message. */\n message?: string;\n}\n\n/**\n * An enumeration of status codes.\n */\nexport enum SpanStatusCode {\n /**\n * The default status.\n */\n UNSET = 0,\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n OK = 1,\n /**\n * The operation contains an error.\n */\n ERROR = 2,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.d.ts new file mode 100644 index 0000000..11288ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.d.ts @@ -0,0 +1,7 @@ +export declare enum TraceFlags { + /** Represents no flag set. */ + NONE = 0, + /** Bit to represent whether trace is sampled in trace flags. */ + SAMPLED = 1 +} +//# sourceMappingURL=trace_flags.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.js new file mode 100644 index 0000000..8a7b000 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var TraceFlags; +(function (TraceFlags) { + /** Represents no flag set. */ + TraceFlags[TraceFlags["NONE"] = 0] = "NONE"; + /** Bit to represent whether trace is sampled in trace flags. */ + TraceFlags[TraceFlags["SAMPLED"] = 1] = "SAMPLED"; +})(TraceFlags || (TraceFlags = {})); +//# sourceMappingURL=trace_flags.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.js.map new file mode 100644 index 0000000..2ea8680 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace_flags.js","sourceRoot":"","sources":["../../../src/trace/trace_flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,8BAA8B;IAC9B,2CAAU,CAAA;IACV,gEAAgE;IAChE,iDAAkB,CAAA;AACpB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum TraceFlags {\n /** Represents no flag set. */\n NONE = 0x0,\n /** Bit to represent whether trace is sampled in trace flags. */\n SAMPLED = 0x1 << 0,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.d.ts new file mode 100644 index 0000000..f275b8b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.d.ts @@ -0,0 +1,38 @@ +export interface TraceState { + /** + * Create a new TraceState which inherits from this TraceState and has the + * given key set. + * The new entry will always be added in the front of the list of states. + * + * @param key key of the TraceState entry. + * @param value value of the TraceState entry. + */ + set(key: string, value: string): TraceState; + /** + * Return a new TraceState which inherits from this TraceState but does not + * contain the given key. + * + * @param key the key for the TraceState entry to be removed. + */ + unset(key: string): TraceState; + /** + * Returns the value to which the specified key is mapped, or `undefined` if + * this map contains no mapping for the key. + * + * @param key with which the specified value is to be associated. + * @returns the value to which the specified key is mapped, or `undefined` if + * this map contains no mapping for the key. + */ + get(key: string): string | undefined; + /** + * Serializes the TraceState to a `list` as defined below. The `list` is a + * series of `list-members` separated by commas `,`, and a list-member is a + * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs + * surrounding `list-members` are ignored. There can be a maximum of 32 + * `list-members` in a `list`. + * + * @returns the serialized string. + */ + serialize(): string; +} +//# sourceMappingURL=trace_state.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.js new file mode 100644 index 0000000..a6c368f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=trace_state.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.js.map new file mode 100644 index 0000000..64a3d7a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace_state.js","sourceRoot":"","sources":["../../../src/trace/trace_state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface TraceState {\n /**\n * Create a new TraceState which inherits from this TraceState and has the\n * given key set.\n * The new entry will always be added in the front of the list of states.\n *\n * @param key key of the TraceState entry.\n * @param value value of the TraceState entry.\n */\n set(key: string, value: string): TraceState;\n\n /**\n * Return a new TraceState which inherits from this TraceState but does not\n * contain the given key.\n *\n * @param key the key for the TraceState entry to be removed.\n */\n unset(key: string): TraceState;\n\n /**\n * Returns the value to which the specified key is mapped, or `undefined` if\n * this map contains no mapping for the key.\n *\n * @param key with which the specified value is to be associated.\n * @returns the value to which the specified key is mapped, or `undefined` if\n * this map contains no mapping for the key.\n */\n get(key: string): string | undefined;\n\n // TODO: Consider to add support for merging an object as well by also\n // accepting a single internalTraceState argument similar to the constructor.\n\n /**\n * Serializes the TraceState to a `list` as defined below. The `list` is a\n * series of `list-members` separated by commas `,`, and a list-member is a\n * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs\n * surrounding `list-members` are ignored. There can be a maximum of 32\n * `list-members` in a `list`.\n *\n * @returns the serialized string.\n */\n serialize(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer.d.ts new file mode 100644 index 0000000..2509089 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer.d.ts @@ -0,0 +1,71 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanOptions } from './SpanOptions'; +/** + * Tracer provides an interface for creating {@link Span}s. + */ +export interface Tracer { + /** + * Starts a new {@link Span}. Start the span without setting it on context. + * + * This method do NOT modify the current Context. + * + * @param name The name of the span + * @param [options] SpanOptions used for span creation + * @param [context] Context to use to extract parent + * @returns Span The newly created span + * @example + * const span = tracer.startSpan('op'); + * span.setAttribute('key', 'value'); + * span.end(); + */ + startSpan(name: string, options?: SpanOptions, context?: Context): Span; + /** + * Starts a new {@link Span} and calls the given function passing it the + * created span as first argument. + * Additionally the new span gets set in context and this context is activated + * for the duration of the function call. + * + * @param name The name of the span + * @param [options] SpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns return value of fn + * @example + * const something = tracer.startActiveSpan('op', span => { + * try { + * do some work + * span.setStatus({code: SpanStatusCode.OK}); + * return something; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } finally { + * span.end(); + * } + * }); + * + * @example + * const span = tracer.startActiveSpan('op', span => { + * try { + * do some work + * return span; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } + * }); + * do some more work + * span.end(); + */ + startActiveSpan unknown>(name: string, fn: F): ReturnType; + startActiveSpan unknown>(name: string, options: SpanOptions, fn: F): ReturnType; + startActiveSpan unknown>(name: string, options: SpanOptions, context: Context, fn: F): ReturnType; +} +//# sourceMappingURL=tracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer.js new file mode 100644 index 0000000..ad066dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=tracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer.js.map new file mode 100644 index 0000000..77f6ae9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../src/trace/tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\n\n/**\n * Tracer provides an interface for creating {@link Span}s.\n */\nexport interface Tracer {\n /**\n * Starts a new {@link Span}. Start the span without setting it on context.\n *\n * This method do NOT modify the current Context.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @returns Span The newly created span\n * @example\n * const span = tracer.startSpan('op');\n * span.setAttribute('key', 'value');\n * span.end();\n */\n startSpan(name: string, options?: SpanOptions, context?: Context): Span;\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally the new span gets set in context and this context is activated\n * for the duration of the function call.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * span.setStatus({code: SpanStatusCode.OK});\n * return something;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * } finally {\n * span.end();\n * }\n * });\n *\n * @example\n * const span = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * return span;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * }\n * });\n * do some more work\n * span.end();\n */\n startActiveSpan unknown>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan unknown>(\n name: string,\n options: SpanOptions,\n fn: F\n ): ReturnType;\n startActiveSpan unknown>(\n name: string,\n options: SpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.d.ts new file mode 100644 index 0000000..f3bbccf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.d.ts @@ -0,0 +1,10 @@ +/** + * An interface describes additional metadata of a tracer. + */ +export interface TracerOptions { + /** + * The schemaUrl of the tracer or instrumentation library + */ + schemaUrl?: string; +} +//# sourceMappingURL=tracer_options.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.js new file mode 100644 index 0000000..470a3a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=tracer_options.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.js.map new file mode 100644 index 0000000..70365af --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracer_options.js","sourceRoot":"","sources":["../../../src/trace/tracer_options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * An interface describes additional metadata of a tracer.\n */\nexport interface TracerOptions {\n /**\n * The schemaUrl of the tracer or instrumentation library\n */\n schemaUrl?: string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.d.ts new file mode 100644 index 0000000..9b2f7a9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.d.ts @@ -0,0 +1,21 @@ +import { Tracer } from './tracer'; +import { TracerOptions } from './tracer_options'; +/** + * A registry for creating named {@link Tracer}s. + */ +export interface TracerProvider { + /** + * Returns a Tracer, creating one if one with the given name and version is + * not already created. + * + * This function may return different Tracer types (e.g. + * {@link NoopTracerProvider} vs. a functional tracer). + * + * @param name The name of the tracer or instrumentation library. + * @param version The version of the tracer or instrumentation library. + * @param options The options of the tracer or instrumentation library. + * @returns Tracer A Tracer with the given name and version + */ + getTracer(name: string, version?: string, options?: TracerOptions): Tracer; +} +//# sourceMappingURL=tracer_provider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.js new file mode 100644 index 0000000..adf432a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=tracer_provider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.js.map new file mode 100644 index 0000000..bfc1cbd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracer_provider.js","sourceRoot":"","sources":["../../../src/trace/tracer_provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\n/**\n * A registry for creating named {@link Tracer}s.\n */\nexport interface TracerProvider {\n /**\n * Returns a Tracer, creating one if one with the given name and version is\n * not already created.\n *\n * This function may return different Tracer types (e.g.\n * {@link NoopTracerProvider} vs. a functional tracer).\n *\n * @param name The name of the tracer or instrumentation library.\n * @param version The version of the tracer or instrumentation library.\n * @param options The options of the tracer or instrumentation library.\n * @returns Tracer A Tracer with the given name and version\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/version.d.ts new file mode 100644 index 0000000..40f0365 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "1.9.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/version.js new file mode 100644 index 0000000..2a86ecf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '1.9.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/version.js.map new file mode 100644 index 0000000..c5ea902 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/esnext/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.9.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/context.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/context.d.ts new file mode 100644 index 0000000..61caee8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/context.d.ts @@ -0,0 +1,41 @@ +import { Context, ContextManager } from '../context/types'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Context API + */ +export declare class ContextAPI { + private static _instance?; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Context API */ + static getInstance(): ContextAPI; + /** + * Set the current context manager. + * + * @returns true if the context manager was successfully registered, else false + */ + setGlobalContextManager(contextManager: ContextManager): boolean; + /** + * Get the currently active context + */ + active(): Context; + /** + * Execute a function with an active context + * + * @param context context to be active during function execution + * @param fn function to execute in a context + * @param thisArg optional receiver to be used for calling fn + * @param args optional arguments forwarded to fn + */ + with ReturnType>(context: Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + /** + * Bind a context to a target function or event emitter + * + * @param context context to bind to the event emitter or function. Defaults to the currently active context + * @param target function or event emitter to bind + */ + bind(context: Context, target: T): T; + private _getContextManager; + /** Disable and remove the global context manager */ + disable(): void; +} +//# sourceMappingURL=context.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/context.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/context.js new file mode 100644 index 0000000..8af551f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/context.js @@ -0,0 +1,81 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ContextAPI = void 0; +const NoopContextManager_1 = require("../context/NoopContextManager"); +const global_utils_1 = require("../internal/global-utils"); +const diag_1 = require("./diag"); +const API_NAME = 'context'; +const NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager(); +/** + * Singleton object which represents the entry point to the OpenTelemetry Context API + */ +class ContextAPI { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + constructor() { } + /** Get the singleton instance of the Context API */ + static getInstance() { + if (!this._instance) { + this._instance = new ContextAPI(); + } + return this._instance; + } + /** + * Set the current context manager. + * + * @returns true if the context manager was successfully registered, else false + */ + setGlobalContextManager(contextManager) { + return (0, global_utils_1.registerGlobal)(API_NAME, contextManager, diag_1.DiagAPI.instance()); + } + /** + * Get the currently active context + */ + active() { + return this._getContextManager().active(); + } + /** + * Execute a function with an active context + * + * @param context context to be active during function execution + * @param fn function to execute in a context + * @param thisArg optional receiver to be used for calling fn + * @param args optional arguments forwarded to fn + */ + with(context, fn, thisArg, ...args) { + return this._getContextManager().with(context, fn, thisArg, ...args); + } + /** + * Bind a context to a target function or event emitter + * + * @param context context to bind to the event emitter or function. Defaults to the currently active context + * @param target function or event emitter to bind + */ + bind(context, target) { + return this._getContextManager().bind(context, target); + } + _getContextManager() { + return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_CONTEXT_MANAGER; + } + /** Disable and remove the global context manager */ + disable() { + this._getContextManager().disable(); + (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance()); + } +} +exports.ContextAPI = ContextAPI; +//# sourceMappingURL=context.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/context.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/context.js.map new file mode 100644 index 0000000..78c56c1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/api/context.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,sEAAmE;AAEnE,2DAIkC;AAClC,iCAAiC;AAEjC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAC3B,MAAM,oBAAoB,GAAG,IAAI,uCAAkB,EAAE,CAAC;AAEtD;;GAEG;AACH,MAAa,UAAU;IAGrB,+FAA+F;IAC/F,gBAAuB,CAAC;IAExB,oDAAoD;IAC7C,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;SACnC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,uBAAuB,CAAC,cAA8B;QAC3D,OAAO,IAAA,6BAAc,EAAC,QAAQ,EAAE,cAAc,EAAE,cAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;;;OAOG;IACI,IAAI,CACT,OAAgB,EAChB,EAAK,EACL,OAA8B,EAC9B,GAAG,IAAO;QAEV,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACI,IAAI,CAAI,OAAgB,EAAE,MAAS;QACxC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAEO,kBAAkB;QACxB,OAAO,IAAA,wBAAS,EAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC;IACrD,CAAC;IAED,oDAAoD;IAC7C,OAAO;QACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,CAAC;QACpC,IAAA,+BAAgB,EAAC,QAAQ,EAAE,cAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;CACF;AAnED,gCAmEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { Context, ContextManager } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nexport class ContextAPI {\n private static _instance?: ContextAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Context API */\n public static getInstance(): ContextAPI {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n public setGlobalContextManager(contextManager: ContextManager): boolean {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n }\n\n /**\n * Get the currently active context\n */\n public active(): Context {\n return this._getContextManager().active();\n }\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 public with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\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 public bind(context: Context, target: T): T {\n return this._getContextManager().bind(context, target);\n }\n\n private _getContextManager(): ContextManager {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n\n /** Disable and remove the global context manager */\n public disable() {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/diag.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/diag.d.ts new file mode 100644 index 0000000..131db17 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/diag.d.ts @@ -0,0 +1,30 @@ +import { ComponentLoggerOptions, DiagLogFunction, DiagLogger, DiagLoggerApi } from '../diag/types'; +/** + * Singleton object which represents the entry point to the OpenTelemetry internal + * diagnostic API + */ +export declare class DiagAPI implements DiagLogger, DiagLoggerApi { + private static _instance?; + /** Get the singleton instance of the DiagAPI API */ + static instance(): DiagAPI; + /** + * Private internal constructor + * @private + */ + private constructor(); + setLogger: DiagLoggerApi['setLogger']; + /** + * + */ + createComponentLogger: (options: ComponentLoggerOptions) => DiagLogger; + verbose: DiagLogFunction; + debug: DiagLogFunction; + info: DiagLogFunction; + warn: DiagLogFunction; + error: DiagLogFunction; + /** + * Unregister the global logger and return to Noop + */ + disable: () => void; +} +//# sourceMappingURL=diag.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/diag.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/diag.js new file mode 100644 index 0000000..9456923 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/diag.js @@ -0,0 +1,93 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DiagAPI = void 0; +const ComponentLogger_1 = require("../diag/ComponentLogger"); +const logLevelLogger_1 = require("../diag/internal/logLevelLogger"); +const types_1 = require("../diag/types"); +const global_utils_1 = require("../internal/global-utils"); +const API_NAME = 'diag'; +/** + * Singleton object which represents the entry point to the OpenTelemetry internal + * diagnostic API + */ +class DiagAPI { + /** + * Private internal constructor + * @private + */ + constructor() { + function _logProxy(funcName) { + return function (...args) { + const logger = (0, global_utils_1.getGlobal)('diag'); + // shortcut if logger not set + if (!logger) + return; + return logger[funcName](...args); + }; + } + // Using self local variable for minification purposes as 'this' cannot be minified + const self = this; + // DiagAPI specific functions + const setLogger = (logger, optionsOrLogLevel = { logLevel: types_1.DiagLogLevel.INFO }) => { + var _a, _b, _c; + if (logger === self) { + // There isn't much we can do here. + // Logging to the console might break the user application. + // Try to log to self. If a logger was previously registered it will receive the log. + const err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'); + self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message); + return false; + } + if (typeof optionsOrLogLevel === 'number') { + optionsOrLogLevel = { + logLevel: optionsOrLogLevel, + }; + } + const oldLogger = (0, global_utils_1.getGlobal)('diag'); + const newLogger = (0, logLevelLogger_1.createLogLevelDiagLogger)((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : types_1.DiagLogLevel.INFO, logger); + // There already is an logger registered. We'll let it know before overwriting it. + if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) { + const stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : ''; + oldLogger.warn(`Current logger will be overwritten from ${stack}`); + newLogger.warn(`Current logger will overwrite one already registered from ${stack}`); + } + return (0, global_utils_1.registerGlobal)('diag', newLogger, self, true); + }; + self.setLogger = setLogger; + self.disable = () => { + (0, global_utils_1.unregisterGlobal)(API_NAME, self); + }; + self.createComponentLogger = (options) => { + return new ComponentLogger_1.DiagComponentLogger(options); + }; + self.verbose = _logProxy('verbose'); + self.debug = _logProxy('debug'); + self.info = _logProxy('info'); + self.warn = _logProxy('warn'); + self.error = _logProxy('error'); + } + /** Get the singleton instance of the DiagAPI API */ + static instance() { + if (!this._instance) { + this._instance = new DiagAPI(); + } + return this._instance; + } +} +exports.DiagAPI = DiagAPI; +//# sourceMappingURL=diag.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/diag.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/diag.js.map new file mode 100644 index 0000000..868e19c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/diag.js.map @@ -0,0 +1 @@ +{"version":3,"file":"diag.js","sourceRoot":"","sources":["../../../src/api/diag.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport {\n ComponentLoggerOptions,\n DiagLogFunction,\n DiagLogger,\n DiagLoggerApi,\n DiagLogLevel,\n} from '../diag/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\n\nconst API_NAME = 'diag';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nexport class DiagAPI implements DiagLogger, DiagLoggerApi {\n private static _instance?: DiagAPI;\n\n /** Get the singleton instance of the DiagAPI API */\n public static instance(): DiagAPI {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Private internal constructor\n * @private\n */\n private constructor() {\n function _logProxy(funcName: keyof DiagLogger): DiagLogFunction {\n return function (...args) {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) return;\n return logger[funcName](...args);\n };\n }\n\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n\n // DiagAPI specific functions\n\n const setLogger: DiagLoggerApi['setLogger'] = (\n logger,\n optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }\n ) => {\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(\n 'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'\n );\n self.error(err.stack ?? err.message);\n return false;\n }\n\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n\n const oldLogger = getGlobal('diag');\n const newLogger = createLogLevelDiagLogger(\n optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO,\n logger\n );\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = new Error().stack ?? '';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(\n `Current logger will overwrite one already registered from ${stack}`\n );\n }\n\n return registerGlobal('diag', newLogger, self, true);\n };\n\n self.setLogger = setLogger;\n\n self.disable = () => {\n unregisterGlobal(API_NAME, self);\n };\n\n self.createComponentLogger = (options: ComponentLoggerOptions) => {\n return new DiagComponentLogger(options);\n };\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\n public setLogger!: DiagLoggerApi['setLogger'];\n /**\n *\n */\n public createComponentLogger!: (\n options: ComponentLoggerOptions\n ) => DiagLogger;\n\n // DiagLogger implementation\n public verbose!: DiagLogFunction;\n public debug!: DiagLogFunction;\n public info!: DiagLogFunction;\n public warn!: DiagLogFunction;\n public error!: DiagLogFunction;\n\n /**\n * Unregister the global logger and return to Noop\n */\n public disable!: () => void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/metrics.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/metrics.d.ts new file mode 100644 index 0000000..5adc145 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/metrics.d.ts @@ -0,0 +1,28 @@ +import { Meter, MeterOptions } from '../metrics/Meter'; +import { MeterProvider } from '../metrics/MeterProvider'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Metrics API + */ +export declare class MetricsAPI { + private static _instance?; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Metrics API */ + static getInstance(): MetricsAPI; + /** + * Set the current global meter provider. + * Returns true if the meter provider was successfully registered, else false. + */ + setGlobalMeterProvider(provider: MeterProvider): boolean; + /** + * Returns the global meter provider. + */ + getMeterProvider(): MeterProvider; + /** + * Returns a meter from the global meter provider. + */ + getMeter(name: string, version?: string, options?: MeterOptions): Meter; + /** Remove the global meter provider */ + disable(): void; +} +//# sourceMappingURL=metrics.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/metrics.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/metrics.js new file mode 100644 index 0000000..4bbc433 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/metrics.js @@ -0,0 +1,61 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MetricsAPI = void 0; +const NoopMeterProvider_1 = require("../metrics/NoopMeterProvider"); +const global_utils_1 = require("../internal/global-utils"); +const diag_1 = require("./diag"); +const API_NAME = 'metrics'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Metrics API + */ +class MetricsAPI { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + constructor() { } + /** Get the singleton instance of the Metrics API */ + static getInstance() { + if (!this._instance) { + this._instance = new MetricsAPI(); + } + return this._instance; + } + /** + * Set the current global meter provider. + * Returns true if the meter provider was successfully registered, else false. + */ + setGlobalMeterProvider(provider) { + return (0, global_utils_1.registerGlobal)(API_NAME, provider, diag_1.DiagAPI.instance()); + } + /** + * Returns the global meter provider. + */ + getMeterProvider() { + return (0, global_utils_1.getGlobal)(API_NAME) || NoopMeterProvider_1.NOOP_METER_PROVIDER; + } + /** + * Returns a meter from the global meter provider. + */ + getMeter(name, version, options) { + return this.getMeterProvider().getMeter(name, version, options); + } + /** Remove the global meter provider */ + disable() { + (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance()); + } +} +exports.MetricsAPI = MetricsAPI; +//# sourceMappingURL=metrics.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/metrics.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/metrics.js.map new file mode 100644 index 0000000..3431094 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/metrics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/api/metrics.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,oEAAmE;AACnE,2DAIkC;AAClC,iCAAiC;AAEjC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAE3B;;GAEG;AACH,MAAa,UAAU;IAGrB,+FAA+F;IAC/F,gBAAuB,CAAC;IAExB,oDAAoD;IAC7C,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;SACnC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,sBAAsB,CAAC,QAAuB;QACnD,OAAO,IAAA,6BAAc,EAAC,QAAQ,EAAE,QAAQ,EAAE,cAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,OAAO,IAAA,wBAAS,EAAC,QAAQ,CAAC,IAAI,uCAAmB,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,QAAQ,CACb,IAAY,EACZ,OAAgB,EAChB,OAAsB;QAEtB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,uCAAuC;IAChC,OAAO;QACZ,IAAA,+BAAgB,EAAC,QAAQ,EAAE,cAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;CACF;AA7CD,gCA6CC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter, MeterOptions } from '../metrics/Meter';\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'metrics';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nexport class MetricsAPI {\n private static _instance?: MetricsAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Metrics API */\n public static getInstance(): MetricsAPI {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n public setGlobalMeterProvider(provider: MeterProvider): boolean {\n return registerGlobal(API_NAME, provider, DiagAPI.instance());\n }\n\n /**\n * Returns the global meter provider.\n */\n public getMeterProvider(): MeterProvider {\n return getGlobal(API_NAME) || NOOP_METER_PROVIDER;\n }\n\n /**\n * Returns a meter from the global meter provider.\n */\n public getMeter(\n name: string,\n version?: string,\n options?: MeterOptions\n ): Meter {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n\n /** Remove the global meter provider */\n public disable(): void {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/propagation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/propagation.d.ts new file mode 100644 index 0000000..a22d24d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/propagation.d.ts @@ -0,0 +1,49 @@ +import { Context } from '../context/types'; +import { TextMapGetter, TextMapPropagator, TextMapSetter } from '../propagation/TextMapPropagator'; +import { getBaggage, getActiveBaggage, setBaggage, deleteBaggage } from '../baggage/context-helpers'; +import { createBaggage } from '../baggage/utils'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Propagation API + */ +export declare class PropagationAPI { + private static _instance?; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Propagator API */ + static getInstance(): PropagationAPI; + /** + * Set the current propagator. + * + * @returns true if the propagator was successfully registered, else false + */ + setGlobalPropagator(propagator: TextMapPropagator): boolean; + /** + * Inject context into a carrier to be propagated inter-process + * + * @param context Context carrying tracing data to inject + * @param carrier carrier to inject context into + * @param setter Function used to set values on the carrier + */ + inject(context: Context, carrier: Carrier, setter?: TextMapSetter): void; + /** + * Extract context from a carrier + * + * @param context Context which the newly created context will inherit from + * @param carrier Carrier to extract context from + * @param getter Function used to extract keys from a carrier + */ + extract(context: Context, carrier: Carrier, getter?: TextMapGetter): Context; + /** + * Return a list of all fields which may be used by the propagator. + */ + fields(): string[]; + /** Remove the global propagator */ + disable(): void; + createBaggage: typeof createBaggage; + getBaggage: typeof getBaggage; + getActiveBaggage: typeof getActiveBaggage; + setBaggage: typeof setBaggage; + deleteBaggage: typeof deleteBaggage; + private _getGlobalPropagator; +} +//# sourceMappingURL=propagation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/propagation.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/propagation.js new file mode 100644 index 0000000..7f03df8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/propagation.js @@ -0,0 +1,89 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PropagationAPI = void 0; +const global_utils_1 = require("../internal/global-utils"); +const NoopTextMapPropagator_1 = require("../propagation/NoopTextMapPropagator"); +const TextMapPropagator_1 = require("../propagation/TextMapPropagator"); +const context_helpers_1 = require("../baggage/context-helpers"); +const utils_1 = require("../baggage/utils"); +const diag_1 = require("./diag"); +const API_NAME = 'propagation'; +const NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator(); +/** + * Singleton object which represents the entry point to the OpenTelemetry Propagation API + */ +class PropagationAPI { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + constructor() { + this.createBaggage = utils_1.createBaggage; + this.getBaggage = context_helpers_1.getBaggage; + this.getActiveBaggage = context_helpers_1.getActiveBaggage; + this.setBaggage = context_helpers_1.setBaggage; + this.deleteBaggage = context_helpers_1.deleteBaggage; + } + /** Get the singleton instance of the Propagator API */ + static getInstance() { + if (!this._instance) { + this._instance = new PropagationAPI(); + } + return this._instance; + } + /** + * Set the current propagator. + * + * @returns true if the propagator was successfully registered, else false + */ + setGlobalPropagator(propagator) { + return (0, global_utils_1.registerGlobal)(API_NAME, propagator, diag_1.DiagAPI.instance()); + } + /** + * Inject context into a carrier to be propagated inter-process + * + * @param context Context carrying tracing data to inject + * @param carrier carrier to inject context into + * @param setter Function used to set values on the carrier + */ + inject(context, carrier, setter = TextMapPropagator_1.defaultTextMapSetter) { + return this._getGlobalPropagator().inject(context, carrier, setter); + } + /** + * Extract context from a carrier + * + * @param context Context which the newly created context will inherit from + * @param carrier Carrier to extract context from + * @param getter Function used to extract keys from a carrier + */ + extract(context, carrier, getter = TextMapPropagator_1.defaultTextMapGetter) { + return this._getGlobalPropagator().extract(context, carrier, getter); + } + /** + * Return a list of all fields which may be used by the propagator. + */ + fields() { + return this._getGlobalPropagator().fields(); + } + /** Remove the global propagator */ + disable() { + (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance()); + } + _getGlobalPropagator() { + return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR; + } +} +exports.PropagationAPI = PropagationAPI; +//# sourceMappingURL=propagation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/propagation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/propagation.js.map new file mode 100644 index 0000000..bb3b7e1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/propagation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"propagation.js","sourceRoot":"","sources":["../../../src/api/propagation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,2DAIkC;AAClC,gFAA6E;AAC7E,wEAM0C;AAC1C,gEAKoC;AACpC,4CAAiD;AACjD,iCAAiC;AAEjC,MAAM,QAAQ,GAAG,aAAa,CAAC;AAC/B,MAAM,wBAAwB,GAAG,IAAI,6CAAqB,EAAE,CAAC;AAE7D;;GAEG;AACH,MAAa,cAAc;IAGzB,+FAA+F;IAC/F;QA8DO,kBAAa,GAAG,qBAAa,CAAC;QAE9B,eAAU,GAAG,4BAAU,CAAC;QAExB,qBAAgB,GAAG,kCAAgB,CAAC;QAEpC,eAAU,GAAG,4BAAU,CAAC;QAExB,kBAAa,GAAG,+BAAa,CAAC;IAtEd,CAAC;IAExB,uDAAuD;IAChD,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;SACvC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,UAA6B;QACtD,OAAO,IAAA,6BAAc,EAAC,QAAQ,EAAE,UAAU,EAAE,cAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CACX,OAAgB,EAChB,OAAgB,EAChB,SAAiC,wCAAoB;QAErD,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CACZ,OAAgB,EAChB,OAAgB,EAChB,SAAiC,wCAAoB;QAErD,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,CAAC;IAC9C,CAAC;IAED,mCAAmC;IAC5B,OAAO;QACZ,IAAA,+BAAgB,EAAC,QAAQ,EAAE,cAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAYO,oBAAoB;QAC1B,OAAO,IAAA,wBAAS,EAAC,QAAQ,CAAC,IAAI,wBAAwB,CAAC;IACzD,CAAC;CACF;AA/ED,wCA+EC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { NoopTextMapPropagator } from '../propagation/NoopTextMapPropagator';\nimport {\n defaultTextMapGetter,\n defaultTextMapSetter,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '../propagation/TextMapPropagator';\nimport {\n getBaggage,\n getActiveBaggage,\n setBaggage,\n deleteBaggage,\n} from '../baggage/context-helpers';\nimport { createBaggage } from '../baggage/utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n */\nexport class PropagationAPI {\n private static _instance?: PropagationAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Propagator API */\n public static getInstance(): PropagationAPI {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n public setGlobalPropagator(propagator: TextMapPropagator): boolean {\n return registerGlobal(API_NAME, propagator, DiagAPI.instance());\n }\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 public inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter = defaultTextMapSetter\n ): void {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\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 public extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter = defaultTextMapGetter\n ): Context {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n public fields(): string[] {\n return this._getGlobalPropagator().fields();\n }\n\n /** Remove the global propagator */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n\n public createBaggage = createBaggage;\n\n public getBaggage = getBaggage;\n\n public getActiveBaggage = getActiveBaggage;\n\n public setBaggage = setBaggage;\n\n public deleteBaggage = deleteBaggage;\n\n private _getGlobalPropagator(): TextMapPropagator {\n return getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/trace.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/trace.d.ts new file mode 100644 index 0000000..df59fd2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/trace.d.ts @@ -0,0 +1,40 @@ +import { isSpanContextValid, wrapSpanContext } from '../trace/spancontext-utils'; +import { Tracer } from '../trace/tracer'; +import { TracerProvider } from '../trace/tracer_provider'; +import { deleteSpan, getActiveSpan, getSpan, getSpanContext, setSpan, setSpanContext } from '../trace/context-utils'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Tracing API + */ +export declare class TraceAPI { + private static _instance?; + private _proxyTracerProvider; + /** Empty private constructor prevents end users from constructing a new instance of the API */ + private constructor(); + /** Get the singleton instance of the Trace API */ + static getInstance(): TraceAPI; + /** + * Set the current global tracer. + * + * @returns true if the tracer provider was successfully registered, else false + */ + setGlobalTracerProvider(provider: TracerProvider): boolean; + /** + * Returns the global tracer provider. + */ + getTracerProvider(): TracerProvider; + /** + * Returns a tracer from the global tracer provider. + */ + getTracer(name: string, version?: string): Tracer; + /** Remove the global tracer provider */ + disable(): void; + wrapSpanContext: typeof wrapSpanContext; + isSpanContextValid: typeof isSpanContextValid; + deleteSpan: typeof deleteSpan; + getSpan: typeof getSpan; + getActiveSpan: typeof getActiveSpan; + getSpanContext: typeof getSpanContext; + setSpan: typeof setSpan; + setSpanContext: typeof setSpanContext; +} +//# sourceMappingURL=trace.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/trace.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/trace.js new file mode 100644 index 0000000..aa7a9da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/trace.js @@ -0,0 +1,79 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TraceAPI = void 0; +const global_utils_1 = require("../internal/global-utils"); +const ProxyTracerProvider_1 = require("../trace/ProxyTracerProvider"); +const spancontext_utils_1 = require("../trace/spancontext-utils"); +const context_utils_1 = require("../trace/context-utils"); +const diag_1 = require("./diag"); +const API_NAME = 'trace'; +/** + * Singleton object which represents the entry point to the OpenTelemetry Tracing API + */ +class TraceAPI { + /** Empty private constructor prevents end users from constructing a new instance of the API */ + constructor() { + this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider(); + this.wrapSpanContext = spancontext_utils_1.wrapSpanContext; + this.isSpanContextValid = spancontext_utils_1.isSpanContextValid; + this.deleteSpan = context_utils_1.deleteSpan; + this.getSpan = context_utils_1.getSpan; + this.getActiveSpan = context_utils_1.getActiveSpan; + this.getSpanContext = context_utils_1.getSpanContext; + this.setSpan = context_utils_1.setSpan; + this.setSpanContext = context_utils_1.setSpanContext; + } + /** Get the singleton instance of the Trace API */ + static getInstance() { + if (!this._instance) { + this._instance = new TraceAPI(); + } + return this._instance; + } + /** + * Set the current global tracer. + * + * @returns true if the tracer provider was successfully registered, else false + */ + setGlobalTracerProvider(provider) { + const success = (0, global_utils_1.registerGlobal)(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance()); + if (success) { + this._proxyTracerProvider.setDelegate(provider); + } + return success; + } + /** + * Returns the global tracer provider. + */ + getTracerProvider() { + return (0, global_utils_1.getGlobal)(API_NAME) || this._proxyTracerProvider; + } + /** + * Returns a tracer from the global tracer provider. + */ + getTracer(name, version) { + return this.getTracerProvider().getTracer(name, version); + } + /** Remove the global tracer provider */ + disable() { + (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance()); + this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider(); + } +} +exports.TraceAPI = TraceAPI; +//# sourceMappingURL=trace.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/trace.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/trace.js.map new file mode 100644 index 0000000..9bd3112 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/api/trace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../src/api/trace.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2DAIkC;AAClC,sEAAmE;AACnE,kEAGoC;AAGpC,0DAOgC;AAChC,iCAAiC;AAEjC,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB;;GAEG;AACH,MAAa,QAAQ;IAKnB,+FAA+F;IAC/F;QAHQ,yBAAoB,GAAG,IAAI,yCAAmB,EAAE,CAAC;QAmDlD,oBAAe,GAAG,mCAAe,CAAC;QAElC,uBAAkB,GAAG,sCAAkB,CAAC;QAExC,eAAU,GAAG,0BAAU,CAAC;QAExB,YAAO,GAAG,uBAAO,CAAC;QAElB,kBAAa,GAAG,6BAAa,CAAC;QAE9B,mBAAc,GAAG,8BAAc,CAAC;QAEhC,YAAO,GAAG,uBAAO,CAAC;QAElB,mBAAc,GAAG,8BAAc,CAAC;IA9DhB,CAAC;IAExB,kDAAkD;IAC3C,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;SACjC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,uBAAuB,CAAC,QAAwB;QACrD,MAAM,OAAO,GAAG,IAAA,6BAAc,EAC5B,QAAQ,EACR,IAAI,CAAC,oBAAoB,EACzB,cAAO,CAAC,QAAQ,EAAE,CACnB,CAAC;QACF,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACjD;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,OAAO,IAAA,wBAAS,EAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC;IAC1D,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,IAAY,EAAE,OAAgB;QAC7C,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,wCAAwC;IACjC,OAAO;QACZ,IAAA,+BAAgB,EAAC,QAAQ,EAAE,cAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,oBAAoB,GAAG,IAAI,yCAAmB,EAAE,CAAC;IACxD,CAAC;CAiBF;AArED,4BAqEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n isSpanContextValid,\n wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport { Tracer } from '../trace/tracer';\nimport { TracerProvider } from '../trace/tracer_provider';\nimport {\n deleteSpan,\n getActiveSpan,\n getSpan,\n getSpanContext,\n setSpan,\n setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nexport class TraceAPI {\n private static _instance?: TraceAPI;\n\n private _proxyTracerProvider = new ProxyTracerProvider();\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Trace API */\n public static getInstance(): TraceAPI {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n public setGlobalTracerProvider(provider: TracerProvider): boolean {\n const success = registerGlobal(\n API_NAME,\n this._proxyTracerProvider,\n DiagAPI.instance()\n );\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n\n /**\n * Returns the global tracer provider.\n */\n public getTracerProvider(): TracerProvider {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n }\n\n /**\n * Returns a tracer from the global tracer provider.\n */\n public getTracer(name: string, version?: string): Tracer {\n return this.getTracerProvider().getTracer(name, version);\n }\n\n /** Remove the global tracer provider */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n }\n\n public wrapSpanContext = wrapSpanContext;\n\n public isSpanContextValid = isSpanContextValid;\n\n public deleteSpan = deleteSpan;\n\n public getSpan = getSpan;\n\n public getActiveSpan = getActiveSpan;\n\n public getSpanContext = getSpanContext;\n\n public setSpan = setSpan;\n\n public setSpanContext = setSpanContext;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.d.ts new file mode 100644 index 0000000..23750eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.d.ts @@ -0,0 +1,29 @@ +import { Context } from '../context/types'; +import { Baggage } from './types'; +/** + * Retrieve the current baggage from the given context + * + * @param {Context} Context that manage all context values + * @returns {Baggage} Extracted baggage from the context + */ +export declare function getBaggage(context: Context): Baggage | undefined; +/** + * Retrieve the current baggage from the active/current context + * + * @returns {Baggage} Extracted baggage from the context + */ +export declare function getActiveBaggage(): Baggage | undefined; +/** + * Store a baggage in the given context + * + * @param {Context} Context that manage all context values + * @param {Baggage} baggage that will be set in the actual context + */ +export declare function setBaggage(context: Context, baggage: Baggage): Context; +/** + * Delete the baggage stored in the given context + * + * @param {Context} Context that manage all context values + */ +export declare function deleteBaggage(context: Context): Context; +//# sourceMappingURL=context-helpers.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js new file mode 100644 index 0000000..cc0f00b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js @@ -0,0 +1,63 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteBaggage = exports.setBaggage = exports.getActiveBaggage = exports.getBaggage = void 0; +const context_1 = require("../api/context"); +const context_2 = require("../context/context"); +/** + * Baggage key + */ +const BAGGAGE_KEY = (0, context_2.createContextKey)('OpenTelemetry Baggage Key'); +/** + * Retrieve the current baggage from the given context + * + * @param {Context} Context that manage all context values + * @returns {Baggage} Extracted baggage from the context + */ +function getBaggage(context) { + return context.getValue(BAGGAGE_KEY) || undefined; +} +exports.getBaggage = getBaggage; +/** + * Retrieve the current baggage from the active/current context + * + * @returns {Baggage} Extracted baggage from the context + */ +function getActiveBaggage() { + return getBaggage(context_1.ContextAPI.getInstance().active()); +} +exports.getActiveBaggage = getActiveBaggage; +/** + * Store a baggage in the given context + * + * @param {Context} Context that manage all context values + * @param {Baggage} baggage that will be set in the actual context + */ +function setBaggage(context, baggage) { + return context.setValue(BAGGAGE_KEY, baggage); +} +exports.setBaggage = setBaggage; +/** + * Delete the baggage stored in the given context + * + * @param {Context} Context that manage all context values + */ +function deleteBaggage(context) { + return context.deleteValue(BAGGAGE_KEY); +} +exports.deleteBaggage = deleteBaggage; +//# sourceMappingURL=context-helpers.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js.map new file mode 100644 index 0000000..ba60094 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context-helpers.js","sourceRoot":"","sources":["../../../src/baggage/context-helpers.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA4C;AAC5C,gDAAsD;AAItD;;GAEG;AACH,MAAM,WAAW,GAAG,IAAA,0BAAgB,EAAC,2BAA2B,CAAC,CAAC;AAElE;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,OAAgB;IACzC,OAAQ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa,IAAI,SAAS,CAAC;AACjE,CAAC;AAFD,gCAEC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,UAAU,CAAC,oBAAU,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AACvD,CAAC;AAFD,4CAEC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,OAAgB,EAAE,OAAgB;IAC3D,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAFD,gCAEC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,OAAgB;IAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC;AAFD,sCAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ContextAPI } from '../api/context';\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Baggage } from './types';\n\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');\n\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 */\nexport function getBaggage(context: Context): Baggage | undefined {\n return (context.getValue(BAGGAGE_KEY) as Baggage) || undefined;\n}\n\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getActiveBaggage(): Baggage | undefined {\n return getBaggage(ContextAPI.getInstance().active());\n}\n\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 */\nexport function setBaggage(context: Context, baggage: Baggage): Context {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\n\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nexport function deleteBaggage(context: Context): Context {\n return context.deleteValue(BAGGAGE_KEY);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.d.ts new file mode 100644 index 0000000..e6b4554 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.d.ts @@ -0,0 +1,12 @@ +import type { Baggage, BaggageEntry } from '../types'; +export declare class BaggageImpl implements Baggage { + private _entries; + constructor(entries?: Map); + getEntry(key: string): BaggageEntry | undefined; + getAllEntries(): [string, BaggageEntry][]; + setEntry(key: string, entry: BaggageEntry): BaggageImpl; + removeEntry(key: string): BaggageImpl; + removeEntries(...keys: string[]): BaggageImpl; + clear(): BaggageImpl; +} +//# sourceMappingURL=baggage-impl.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js new file mode 100644 index 0000000..6f04d4a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js @@ -0,0 +1,55 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BaggageImpl = void 0; +class BaggageImpl { + constructor(entries) { + this._entries = entries ? new Map(entries) : new Map(); + } + getEntry(key) { + const entry = this._entries.get(key); + if (!entry) { + return undefined; + } + return Object.assign({}, entry); + } + getAllEntries() { + return Array.from(this._entries.entries()).map(([k, v]) => [k, v]); + } + setEntry(key, entry) { + const newBaggage = new BaggageImpl(this._entries); + newBaggage._entries.set(key, entry); + return newBaggage; + } + removeEntry(key) { + const newBaggage = new BaggageImpl(this._entries); + newBaggage._entries.delete(key); + return newBaggage; + } + removeEntries(...keys) { + const newBaggage = new BaggageImpl(this._entries); + for (const key of keys) { + newBaggage._entries.delete(key); + } + return newBaggage; + } + clear() { + return new BaggageImpl(); + } +} +exports.BaggageImpl = BaggageImpl; +//# sourceMappingURL=baggage-impl.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js.map new file mode 100644 index 0000000..e95c4bc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"baggage-impl.js","sourceRoot":"","sources":["../../../../src/baggage/internal/baggage-impl.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,MAAa,WAAW;IAGtB,YAAY,OAAmC;QAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IACzD,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,KAAmB;QACvC,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,aAAa,CAAC,GAAG,IAAc;QAC7B,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACjC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,WAAW,EAAE,CAAC;IAC3B,CAAC;CACF;AA3CD,kCA2CC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Baggage, BaggageEntry } from '../types';\n\nexport class BaggageImpl implements Baggage {\n private _entries: Map;\n\n constructor(entries?: Map) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n\n getEntry(key: string): BaggageEntry | undefined {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n\n return Object.assign({}, entry);\n }\n\n getAllEntries(): [string, BaggageEntry][] {\n return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);\n }\n\n setEntry(key: string, entry: BaggageEntry): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n\n removeEntry(key: string): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n\n removeEntries(...keys: string[]): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n\n clear(): BaggageImpl {\n return new BaggageImpl();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.d.ts new file mode 100644 index 0000000..9cd991c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.d.ts @@ -0,0 +1,5 @@ +/** + * Symbol used to make BaggageEntryMetadata an opaque type + */ +export declare const baggageEntryMetadataSymbol: unique symbol; +//# sourceMappingURL=symbol.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js new file mode 100644 index 0000000..324c216 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js @@ -0,0 +1,23 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.baggageEntryMetadataSymbol = void 0; +/** + * Symbol used to make BaggageEntryMetadata an opaque type + */ +exports.baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata'); +//# sourceMappingURL=symbol.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js.map new file mode 100644 index 0000000..497f362 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js.map @@ -0,0 +1 @@ +{"version":3,"file":"symbol.js","sourceRoot":"","sources":["../../../../src/baggage/internal/symbol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;GAEG;AACU,QAAA,0BAA0B,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexport const baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/types.d.ts new file mode 100644 index 0000000..32fa0ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/types.d.ts @@ -0,0 +1,60 @@ +import { baggageEntryMetadataSymbol } from './internal/symbol'; +export interface BaggageEntry { + /** `String` value of the `BaggageEntry`. */ + value: string; + /** + * Metadata is an optional string property defined by the W3C baggage specification. + * It currently has no special meaning defined by the specification. + */ + metadata?: BaggageEntryMetadata; +} +/** + * Serializable Metadata defined by the W3C baggage specification. + * It currently has no special meaning defined by the OpenTelemetry or W3C. + */ +export declare type BaggageEntryMetadata = { + toString(): string; +} & { + __TYPE__: typeof baggageEntryMetadataSymbol; +}; +/** + * Baggage represents collection of key-value pairs with optional metadata. + * Each key of Baggage is associated with exactly one value. + * Baggage may be used to annotate and enrich telemetry data. + */ +export interface Baggage { + /** + * Get an entry from Baggage if it exists + * + * @param key The key which identifies the BaggageEntry + */ + getEntry(key: string): BaggageEntry | undefined; + /** + * Get a list of all entries in the Baggage + */ + getAllEntries(): [string, BaggageEntry][]; + /** + * Returns a new baggage with the entries from the current bag and the specified entry + * + * @param key string which identifies the baggage entry + * @param entry BaggageEntry for the given key + */ + setEntry(key: string, entry: BaggageEntry): Baggage; + /** + * Returns a new baggage with the entries from the current bag except the removed entry + * + * @param key key identifying the entry to be removed + */ + removeEntry(key: string): Baggage; + /** + * Returns a new baggage with the entries from the current bag except the removed entries + * + * @param key keys identifying the entries to be removed + */ + removeEntries(...key: string[]): Baggage; + /** + * Returns a new baggage with no entries + */ + clear(): Baggage; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/types.js.map new file mode 100644 index 0000000..2a00da4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/baggage/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\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\nexport interface BaggageEntry {\n /** `String` value of the `BaggageEntry`. */\n value: string;\n /**\n * Metadata is an optional string property defined by the W3C baggage specification.\n * It currently has no special meaning defined by the specification.\n */\n metadata?: BaggageEntryMetadata;\n}\n\n/**\n * Serializable Metadata defined by the W3C baggage specification.\n * It currently has no special meaning defined by the OpenTelemetry or W3C.\n */\nexport type BaggageEntryMetadata = { toString(): string } & {\n __TYPE__: typeof baggageEntryMetadataSymbol;\n};\n\n/**\n * Baggage represents collection of key-value pairs with optional metadata.\n * Each key of Baggage is associated with exactly one value.\n * Baggage may be used to annotate and enrich telemetry data.\n */\nexport interface Baggage {\n /**\n * Get an entry from Baggage if it exists\n *\n * @param key The key which identifies the BaggageEntry\n */\n getEntry(key: string): BaggageEntry | undefined;\n\n /**\n * Get a list of all entries in the Baggage\n */\n getAllEntries(): [string, BaggageEntry][];\n\n /**\n * Returns a new baggage with the entries from the current bag and the specified entry\n *\n * @param key string which identifies the baggage entry\n * @param entry BaggageEntry for the given key\n */\n setEntry(key: string, entry: BaggageEntry): Baggage;\n\n /**\n * Returns a new baggage with the entries from the current bag except the removed entry\n *\n * @param key key identifying the entry to be removed\n */\n removeEntry(key: string): Baggage;\n\n /**\n * Returns a new baggage with the entries from the current bag except the removed entries\n *\n * @param key keys identifying the entries to be removed\n */\n removeEntries(...key: string[]): Baggage;\n\n /**\n * Returns a new baggage with no entries\n */\n clear(): Baggage;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/utils.d.ts new file mode 100644 index 0000000..9955d9e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/utils.d.ts @@ -0,0 +1,15 @@ +import { Baggage, BaggageEntry, BaggageEntryMetadata } from './types'; +/** + * Create a new Baggage with optional entries + * + * @param entries An array of baggage entries the new baggage should contain + */ +export declare function createBaggage(entries?: Record): Baggage; +/** + * Create a serializable BaggageEntryMetadata object from a string. + * + * @param str string metadata. Format is currently not defined by the spec and has no special meaning. + * + */ +export declare function baggageEntryMetadataFromString(str: string): BaggageEntryMetadata; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/utils.js new file mode 100644 index 0000000..a0bfbf6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/utils.js @@ -0,0 +1,51 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.baggageEntryMetadataFromString = exports.createBaggage = void 0; +const diag_1 = require("../api/diag"); +const baggage_impl_1 = require("./internal/baggage-impl"); +const symbol_1 = require("./internal/symbol"); +const diag = diag_1.DiagAPI.instance(); +/** + * Create a new Baggage with optional entries + * + * @param entries An array of baggage entries the new baggage should contain + */ +function createBaggage(entries = {}) { + return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries))); +} +exports.createBaggage = createBaggage; +/** + * Create a serializable BaggageEntryMetadata object from a string. + * + * @param str string metadata. Format is currently not defined by the spec and has no special meaning. + * + */ +function baggageEntryMetadataFromString(str) { + if (typeof str !== 'string') { + diag.error(`Cannot create baggage metadata from unknown type: ${typeof str}`); + str = ''; + } + return { + __TYPE__: symbol_1.baggageEntryMetadataSymbol, + toString() { + return str; + }, + }; +} +exports.baggageEntryMetadataFromString = baggageEntryMetadataFromString; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/utils.js.map new file mode 100644 index 0000000..d3e6ee8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/baggage/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/baggage/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,sCAAsC;AACtC,0DAAsD;AACtD,8CAA+D;AAG/D,MAAM,IAAI,GAAG,cAAO,CAAC,QAAQ,EAAE,CAAC;AAEhC;;;;GAIG;AACH,SAAgB,aAAa,CAC3B,UAAwC,EAAE;IAE1C,OAAO,IAAI,0BAAW,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAJD,sCAIC;AAED;;;;;GAKG;AACH,SAAgB,8BAA8B,CAC5C,GAAW;IAEX,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,IAAI,CAAC,KAAK,CACR,qDAAqD,OAAO,GAAG,EAAE,CAClE,CAAC;QACF,GAAG,GAAG,EAAE,CAAC;KACV;IAED,OAAO;QACL,QAAQ,EAAE,mCAA0B;QACpC,QAAQ;YACN,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC;AAhBD,wEAgBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagAPI } from '../api/diag';\nimport { BaggageImpl } from './internal/baggage-impl';\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\nimport { Baggage, BaggageEntry, BaggageEntryMetadata } from './types';\n\nconst diag = DiagAPI.instance();\n\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nexport function createBaggage(\n entries: Record = {}\n): Baggage {\n return new BaggageImpl(new Map(Object.entries(entries)));\n}\n\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 */\nexport function baggageEntryMetadataFromString(\n str: string\n): BaggageEntryMetadata {\n if (typeof str !== 'string') {\n diag.error(\n `Cannot create baggage metadata from unknown type: ${typeof str}`\n );\n str = '';\n }\n\n return {\n __TYPE__: baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Attributes.d.ts new file mode 100644 index 0000000..19994fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Attributes.d.ts @@ -0,0 +1,15 @@ +/** + * Attributes is a map from string to attribute values. + * + * Note: only the own enumerable keys are counted as valid attribute keys. + */ +export interface Attributes { + [attributeKey: string]: AttributeValue | undefined; +} +/** + * Attribute values may be any non-nullish primitive value except an object. + * + * null or undefined attribute values are invalid and will result in undefined behavior. + */ +export declare type AttributeValue = string | number | boolean | Array | Array | Array; +//# sourceMappingURL=Attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Attributes.js new file mode 100644 index 0000000..684c93d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Attributes.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Attributes.js.map new file mode 100644 index 0000000..81b1168 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Attributes.js","sourceRoot":"","sources":["../../../src/common/Attributes.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Attributes is a map from string to attribute values.\n *\n * Note: only the own enumerable keys are counted as valid attribute keys.\n */\nexport interface Attributes {\n [attributeKey: string]: AttributeValue | undefined;\n}\n\n/**\n * Attribute values may be any non-nullish primitive value except an object.\n *\n * null or undefined attribute values are invalid and will result in undefined behavior.\n */\nexport type AttributeValue =\n | string\n | number\n | boolean\n | Array\n | Array\n | Array;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Exception.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Exception.d.ts new file mode 100644 index 0000000..e175a7f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Exception.d.ts @@ -0,0 +1,26 @@ +interface ExceptionWithCode { + code: string | number; + name?: string; + message?: string; + stack?: string; +} +interface ExceptionWithMessage { + code?: string | number; + message: string; + name?: string; + stack?: string; +} +interface ExceptionWithName { + code?: string | number; + message?: string; + name: string; + stack?: string; +} +/** + * Defines Exception. + * + * string or an object with one of (message or name or code) and optional stack + */ +export declare type Exception = ExceptionWithCode | ExceptionWithMessage | ExceptionWithName | string; +export {}; +//# sourceMappingURL=Exception.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Exception.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Exception.js new file mode 100644 index 0000000..ed450ae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Exception.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Exception.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Exception.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Exception.js.map new file mode 100644 index 0000000..459c350 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Exception.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Exception.js","sourceRoot":"","sources":["../../../src/common/Exception.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\ninterface ExceptionWithCode {\n code: string | number;\n name?: string;\n message?: string;\n stack?: string;\n}\n\ninterface ExceptionWithMessage {\n code?: string | number;\n message: string;\n name?: string;\n stack?: string;\n}\n\ninterface ExceptionWithName {\n code?: string | number;\n message?: string;\n name: string;\n stack?: string;\n}\n\n/**\n * Defines Exception.\n *\n * string or an object with one of (message or name or code) and optional stack\n */\nexport type Exception =\n | ExceptionWithCode\n | ExceptionWithMessage\n | ExceptionWithName\n | string;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Time.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Time.d.ts new file mode 100644 index 0000000..cc3c502 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Time.d.ts @@ -0,0 +1,20 @@ +/** + * Defines High-Resolution Time. + * + * The first number, HrTime[0], is UNIX Epoch time in seconds since 00:00:00 UTC on 1 January 1970. + * The second number, HrTime[1], represents the partial second elapsed since Unix Epoch time represented by first number in nanoseconds. + * For example, 2021-01-01T12:30:10.150Z in UNIX Epoch time in milliseconds is represented as 1609504210150. + * The first number is calculated by converting and truncating the Epoch time in milliseconds to seconds: + * HrTime[0] = Math.trunc(1609504210150 / 1000) = 1609504210. + * The second number is calculated by converting the digits after the decimal point of the subtraction, (1609504210150 / 1000) - HrTime[0], to nanoseconds: + * HrTime[1] = Number((1609504210.150 - HrTime[0]).toFixed(9)) * 1e9 = 150000000. + * This is represented in HrTime format as [1609504210, 150000000]. + */ +export declare type HrTime = [number, number]; +/** + * Defines TimeInput. + * + * hrtime, epoch milliseconds, performance.now() or Date + */ +export declare type TimeInput = HrTime | number | Date; +//# sourceMappingURL=Time.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Time.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Time.js new file mode 100644 index 0000000..1faaf69 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Time.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Time.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Time.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Time.js.map new file mode 100644 index 0000000..ae124f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/common/Time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Time.js","sourceRoot":"","sources":["../../../src/common/Time.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Defines High-Resolution Time.\n *\n * The first number, HrTime[0], is UNIX Epoch time in seconds since 00:00:00 UTC on 1 January 1970.\n * The second number, HrTime[1], represents the partial second elapsed since Unix Epoch time represented by first number in nanoseconds.\n * For example, 2021-01-01T12:30:10.150Z in UNIX Epoch time in milliseconds is represented as 1609504210150.\n * The first number is calculated by converting and truncating the Epoch time in milliseconds to seconds:\n * HrTime[0] = Math.trunc(1609504210150 / 1000) = 1609504210.\n * The second number is calculated by converting the digits after the decimal point of the subtraction, (1609504210150 / 1000) - HrTime[0], to nanoseconds:\n * HrTime[1] = Number((1609504210.150 - HrTime[0]).toFixed(9)) * 1e9 = 150000000.\n * This is represented in HrTime format as [1609504210, 150000000].\n */\nexport type HrTime = [number, number];\n\n/**\n * Defines TimeInput.\n *\n * hrtime, epoch milliseconds, performance.now() or Date\n */\nexport type TimeInput = HrTime | number | Date;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context-api.d.ts new file mode 100644 index 0000000..650f4ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context-api.d.ts @@ -0,0 +1,4 @@ +import { ContextAPI } from './api/context'; +/** Entrypoint for context API */ +export declare const context: ContextAPI; +//# sourceMappingURL=context-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context-api.js new file mode 100644 index 0000000..b9aeea9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context-api.js @@ -0,0 +1,24 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.context = void 0; +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +const context_1 = require("./api/context"); +/** Entrypoint for context API */ +exports.context = context_1.ContextAPI.getInstance(); +//# sourceMappingURL=context-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context-api.js.map new file mode 100644 index 0000000..e8e3f92 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context-api.js","sourceRoot":"","sources":["../../src/context-api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,2CAA2C;AAC3C,iCAAiC;AACpB,QAAA,OAAO,GAAG,oBAAU,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/** Entrypoint for context API */\nexport const context = ContextAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.d.ts new file mode 100644 index 0000000..48a1659 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.d.ts @@ -0,0 +1,9 @@ +import * as types from './types'; +export declare class NoopContextManager implements types.ContextManager { + active(): types.Context; + with ReturnType>(_context: types.Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + bind(_context: types.Context, target: T): T; + enable(): this; + disable(): this; +} +//# sourceMappingURL=NoopContextManager.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js new file mode 100644 index 0000000..10c6ae1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js @@ -0,0 +1,38 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NoopContextManager = void 0; +const context_1 = require("./context"); +class NoopContextManager { + active() { + return context_1.ROOT_CONTEXT; + } + with(_context, fn, thisArg, ...args) { + return fn.call(thisArg, ...args); + } + bind(_context, target) { + return target; + } + enable() { + return this; + } + disable() { + return this; + } +} +exports.NoopContextManager = NoopContextManager; +//# sourceMappingURL=NoopContextManager.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js.map new file mode 100644 index 0000000..46b0612 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopContextManager.js","sourceRoot":"","sources":["../../../src/context/NoopContextManager.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,uCAAyC;AAGzC,MAAa,kBAAkB;IAC7B,MAAM;QACJ,OAAO,sBAAY,CAAC;IACtB,CAAC;IAED,IAAI,CACF,QAAuB,EACvB,EAAK,EACL,OAA8B,EAC9B,GAAG,IAAO;QAEV,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAI,QAAuB,EAAE,MAAS;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAzBD,gDAyBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ROOT_CONTEXT } from './context';\nimport * as types from './types';\n\nexport class NoopContextManager implements types.ContextManager {\n active(): types.Context {\n return ROOT_CONTEXT;\n }\n\n with ReturnType>(\n _context: types.Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n return fn.call(thisArg, ...args);\n }\n\n bind(_context: types.Context, target: T): T {\n return target;\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/context.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/context.d.ts new file mode 100644 index 0000000..8be0259 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/context.d.ts @@ -0,0 +1,6 @@ +import { Context } from './types'; +/** Get a key to uniquely identify a context value */ +export declare function createContextKey(description: string): symbol; +/** The root context is used as the default parent context when there is no active context */ +export declare const ROOT_CONTEXT: Context; +//# sourceMappingURL=context.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/context.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/context.js new file mode 100644 index 0000000..eecc159 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/context.js @@ -0,0 +1,55 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ROOT_CONTEXT = exports.createContextKey = void 0; +/** Get a key to uniquely identify a context value */ +function createContextKey(description) { + // The specification states that for the same input, multiple calls should + // return different keys. Due to the nature of the JS dependency management + // system, this creates problems where multiple versions of some package + // could hold different keys for the same property. + // + // Therefore, we use Symbol.for which returns the same key for the same input. + return Symbol.for(description); +} +exports.createContextKey = createContextKey; +class BaseContext { + /** + * Construct a new context which inherits values from an optional parent context. + * + * @param parentContext a context from which to inherit values + */ + constructor(parentContext) { + // for minification + const self = this; + self._currentContext = parentContext ? new Map(parentContext) : new Map(); + self.getValue = (key) => self._currentContext.get(key); + self.setValue = (key, value) => { + const context = new BaseContext(self._currentContext); + context._currentContext.set(key, value); + return context; + }; + self.deleteValue = (key) => { + const context = new BaseContext(self._currentContext); + context._currentContext.delete(key); + return context; + }; + } +} +/** The root context is used as the default parent context when there is no active context */ +exports.ROOT_CONTEXT = new BaseContext(); +//# sourceMappingURL=context.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/context.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/context.js.map new file mode 100644 index 0000000..e46cf8d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,qDAAqD;AACrD,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,0EAA0E;IAC1E,2EAA2E;IAC3E,wEAAwE;IACxE,mDAAmD;IACnD,EAAE;IACF,8EAA8E;IAC9E,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AARD,4CAQC;AAED,MAAM,WAAW;IAGf;;;;OAIG;IACH,YAAY,aAAoC;QAC9C,mBAAmB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAE1E,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/D,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAc,EAAW,EAAE;YACvD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtD,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,CAAC,GAAW,EAAW,EAAE;YAC1C,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtD,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC;CAyBF;AAED,6FAA6F;AAChF,QAAA,YAAY,GAAY,IAAI,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from './types';\n\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description: string) {\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}\n\nclass BaseContext implements Context {\n private _currentContext!: Map;\n\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?: Map) {\n // for minification\n const self = this;\n\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n self.getValue = (key: symbol) => self._currentContext.get(key);\n\n self.setValue = (key: symbol, value: unknown): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n\n self.deleteValue = (key: symbol): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n public getValue!: (key: symbol) => unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n public setValue!: (key: symbol, value: unknown) => Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n public deleteValue!: (key: symbol) => Context;\n}\n\n/** The root context is used as the default parent context when there is no active context */\nexport const ROOT_CONTEXT: Context = new BaseContext();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/types.d.ts new file mode 100644 index 0000000..7e86632 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/types.d.ts @@ -0,0 +1,52 @@ +export interface Context { + /** + * Get a value from the context. + * + * @param key key which identifies a context value + */ + getValue(key: symbol): unknown; + /** + * Create a new context which inherits from this context and has + * the given key set to the given value. + * + * @param key context key for which to set the value + * @param value value to set for the given key + */ + setValue(key: symbol, value: unknown): Context; + /** + * Return a new context which inherits from this context but does + * not contain a value for the given key. + * + * @param key context key for which to clear a value + */ + deleteValue(key: symbol): Context; +} +export interface ContextManager { + /** + * Get the current active context + */ + active(): Context; + /** + * Run the fn callback with object set as the current active context + * @param context Any object to set as the current active context + * @param fn A callback to be immediately run within a specific context + * @param thisArg optional receiver to be used for calling fn + * @param args optional arguments forwarded to fn + */ + with ReturnType>(context: Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + /** + * Bind an object as the current context (or a specific one) + * @param [context] Optionally specify the context which you want to assign + * @param target Any object to which a context need to be set + */ + bind(context: Context, target: T): T; + /** + * Enable context management + */ + enable(): this; + /** + * Disable context management + */ + disable(): this; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/types.js.map new file mode 100644 index 0000000..8bde9ce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/context/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/context/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface Context {\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n getValue(key: symbol): unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n setValue(key: symbol, value: unknown): Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n deleteValue(key: symbol): Context;\n}\n\nexport interface ContextManager {\n /**\n * Get the current active context\n */\n active(): Context;\n\n /**\n * Run the fn callback with object set as the current active context\n * @param context Any object to set as the current active context\n * @param fn A callback to be immediately run within a specific context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType;\n\n /**\n * Bind an object as the current context (or a specific one)\n * @param [context] Optionally specify the context which you want to assign\n * @param target Any object to which a context need to be set\n */\n bind(context: Context, target: T): T;\n\n /**\n * Enable context management\n */\n enable(): this;\n\n /**\n * Disable context management\n */\n disable(): this;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag-api.d.ts new file mode 100644 index 0000000..d82fdb1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag-api.d.ts @@ -0,0 +1,9 @@ +import { DiagAPI } from './api/diag'; +/** + * Entrypoint for Diag API. + * Defines Diagnostic handler used for internal diagnostic logging operations. + * The default provides a Noop DiagLogger implementation which may be changed via the + * diag.setLogger(logger: DiagLogger) function. + */ +export declare const diag: DiagAPI; +//# sourceMappingURL=diag-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag-api.js new file mode 100644 index 0000000..cbf28db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag-api.js @@ -0,0 +1,29 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.diag = void 0; +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +const diag_1 = require("./api/diag"); +/** + * Entrypoint for Diag API. + * Defines Diagnostic handler used for internal diagnostic logging operations. + * The default provides a Noop DiagLogger implementation which may be changed via the + * diag.setLogger(logger: DiagLogger) function. + */ +exports.diag = diag_1.DiagAPI.instance(); +//# sourceMappingURL=diag-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag-api.js.map new file mode 100644 index 0000000..f87b0fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"diag-api.js","sourceRoot":"","sources":["../../src/diag-api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,qCAAqC;AACrC;;;;;GAKG;AACU,QAAA,IAAI,GAAG,cAAO,CAAC,QAAQ,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { DiagAPI } from './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 */\nexport const diag = DiagAPI.instance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.d.ts new file mode 100644 index 0000000..f060950 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.d.ts @@ -0,0 +1,20 @@ +import { ComponentLoggerOptions, DiagLogger } from './types'; +/** + * Component Logger which is meant to be used as part of any component which + * will add automatically additional namespace in front of the log message. + * It will then forward all message to global diag logger + * @example + * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' }); + * cLogger.debug('test'); + * // @opentelemetry/instrumentation-http test + */ +export declare class DiagComponentLogger implements DiagLogger { + private _namespace; + constructor(props: ComponentLoggerOptions); + debug(...args: any[]): void; + error(...args: any[]): void; + info(...args: any[]): void; + warn(...args: any[]): void; + verbose(...args: any[]): void; +} +//# sourceMappingURL=ComponentLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js new file mode 100644 index 0000000..579b7e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js @@ -0,0 +1,59 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DiagComponentLogger = void 0; +const global_utils_1 = require("../internal/global-utils"); +/** + * Component Logger which is meant to be used as part of any component which + * will add automatically additional namespace in front of the log message. + * It will then forward all message to global diag logger + * @example + * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' }); + * cLogger.debug('test'); + * // @opentelemetry/instrumentation-http test + */ +class DiagComponentLogger { + constructor(props) { + this._namespace = props.namespace || 'DiagComponentLogger'; + } + debug(...args) { + return logProxy('debug', this._namespace, args); + } + error(...args) { + return logProxy('error', this._namespace, args); + } + info(...args) { + return logProxy('info', this._namespace, args); + } + warn(...args) { + return logProxy('warn', this._namespace, args); + } + verbose(...args) { + return logProxy('verbose', this._namespace, args); + } +} +exports.DiagComponentLogger = DiagComponentLogger; +function logProxy(funcName, namespace, args) { + const logger = (0, global_utils_1.getGlobal)('diag'); + // shortcut if logger not set + if (!logger) { + return; + } + args.unshift(namespace); + return logger[funcName](...args); +} +//# sourceMappingURL=ComponentLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js.map new file mode 100644 index 0000000..c1b8504 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ComponentLogger.js","sourceRoot":"","sources":["../../../src/diag/ComponentLogger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2DAAqD;AAGrD;;;;;;;;GAQG;AACH,MAAa,mBAAmB;IAG9B,YAAY,KAA6B;QACvC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,GAAG,IAAW;QACzB,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,GAAG,IAAW;QACzB,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAEM,IAAI,CAAC,GAAG,IAAW;QACxB,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,IAAI,CAAC,GAAG,IAAW;QACxB,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,OAAO,CAAC,GAAG,IAAW;QAC3B,OAAO,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;CACF;AA1BD,kDA0BC;AAED,SAAS,QAAQ,CACf,QAA0B,EAC1B,SAAiB,EACjB,IAAS;IAET,MAAM,MAAM,GAAG,IAAA,wBAAS,EAAC,MAAM,CAAC,CAAC;IACjC,6BAA6B;IAC7B,IAAI,CAAC,MAAM,EAAE;QACX,OAAO;KACR;IAED,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAI,IAAoC,CAAC,CAAC;AACpE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { getGlobal } from '../internal/global-utils';\nimport { ComponentLoggerOptions, DiagLogger, DiagLogFunction } from './types';\n\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 */\nexport class DiagComponentLogger implements DiagLogger {\n private _namespace: string;\n\n constructor(props: ComponentLoggerOptions) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n\n public debug(...args: any[]): void {\n return logProxy('debug', this._namespace, args);\n }\n\n public error(...args: any[]): void {\n return logProxy('error', this._namespace, args);\n }\n\n public info(...args: any[]): void {\n return logProxy('info', this._namespace, args);\n }\n\n public warn(...args: any[]): void {\n return logProxy('warn', this._namespace, args);\n }\n\n public verbose(...args: any[]): void {\n return logProxy('verbose', this._namespace, args);\n }\n}\n\nfunction logProxy(\n funcName: keyof DiagLogger,\n namespace: string,\n args: any\n): void {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n\n args.unshift(namespace);\n return logger[funcName](...(args as Parameters));\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.d.ts new file mode 100644 index 0000000..fa3db1e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.d.ts @@ -0,0 +1,38 @@ +import { DiagLogger, DiagLogFunction } from './types'; +/** + * A simple Immutable Console based diagnostic logger which will output any messages to the Console. + * If you want to limit the amount of logging to a specific level or lower use the + * {@link createLogLevelDiagLogger} + */ +export declare class DiagConsoleLogger implements DiagLogger { + constructor(); + /** Log an error scenario that was not expected and caused the requested operation to fail. */ + error: DiagLogFunction; + /** + * Log a warning scenario to inform the developer of an issues that should be investigated. + * The requested operation may or may not have succeeded or completed. + */ + warn: DiagLogFunction; + /** + * Log a general informational message, this should not affect functionality. + * This is also the default logging level so this should NOT be used for logging + * debugging level information. + */ + info: DiagLogFunction; + /** + * Log a general debug message that can be useful for identifying a failure. + * Information logged at this level may include diagnostic details that would + * help identify a failure scenario. Useful scenarios would be to log the execution + * order of async operations + */ + debug: DiagLogFunction; + /** + * Log a detailed (verbose) trace level logging that can be used to identify failures + * where debug level logging would be insufficient, this level of tracing can include + * input and output parameters and as such may include PII information passing through + * the API. As such it is recommended that this level of tracing should not be enabled + * in a production environment. + */ + verbose: DiagLogFunction; +} +//# sourceMappingURL=consoleLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js new file mode 100644 index 0000000..1962275 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js @@ -0,0 +1,57 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DiagConsoleLogger = void 0; +const consoleMap = [ + { n: 'error', c: 'error' }, + { n: 'warn', c: 'warn' }, + { n: 'info', c: 'info' }, + { n: 'debug', c: 'debug' }, + { n: 'verbose', c: 'trace' }, +]; +/** + * A simple Immutable Console based diagnostic logger which will output any messages to the Console. + * If you want to limit the amount of logging to a specific level or lower use the + * {@link createLogLevelDiagLogger} + */ +class DiagConsoleLogger { + constructor() { + function _consoleFunc(funcName) { + return function (...args) { + if (console) { + // Some environments only expose the console when the F12 developer console is open + // eslint-disable-next-line no-console + let theFunc = console[funcName]; + if (typeof theFunc !== 'function') { + // Not all environments support all functions + // eslint-disable-next-line no-console + theFunc = console.log; + } + // One last final check + if (typeof theFunc === 'function') { + return theFunc.apply(console, args); + } + } + }; + } + for (let i = 0; i < consoleMap.length; i++) { + this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c); + } + } +} +exports.DiagConsoleLogger = DiagConsoleLogger; +//# sourceMappingURL=consoleLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js.map new file mode 100644 index 0000000..d57fe77 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"consoleLogger.js","sourceRoot":"","sources":["../../../src/diag/consoleLogger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH,MAAM,UAAU,GAAiD;IAC/D,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE;IAC1B,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE;IACxB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE;IACxB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE;IAC1B,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE;CAC7B,CAAC;AAEF;;;;GAIG;AACH,MAAa,iBAAiB;IAC5B;QACE,SAAS,YAAY,CAAC,QAAwB;YAC5C,OAAO,UAAU,GAAG,IAAI;gBACtB,IAAI,OAAO,EAAE;oBACX,mFAAmF;oBACnF,sCAAsC;oBACtC,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAChC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;wBACjC,6CAA6C;wBAC7C,sCAAsC;wBACtC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;qBACvB;oBAED,uBAAuB;oBACvB,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;wBACjC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;qBACrC;iBACF;YACH,CAAC,CAAC;QACJ,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD;IACH,CAAC;CAkCF;AA3DD,8CA2DC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagLogger, DiagLogFunction } from './types';\n\ntype ConsoleMapKeys = 'error' | 'warn' | 'info' | 'debug' | 'trace';\nconst consoleMap: { n: keyof DiagLogger; c: ConsoleMapKeys }[] = [\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\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 */\nexport class DiagConsoleLogger implements DiagLogger {\n constructor() {\n function _consoleFunc(funcName: ConsoleMapKeys): DiagLogFunction {\n return function (...args) {\n if (console) {\n // Some environments only expose the console when the F12 developer console is open\n // eslint-disable-next-line no-console\n let theFunc = console[funcName];\n if (typeof theFunc !== 'function') {\n // Not all environments support all functions\n // eslint-disable-next-line no-console\n theFunc = console.log;\n }\n\n // One last final check\n if (typeof theFunc === 'function') {\n return theFunc.apply(console, args);\n }\n }\n };\n }\n\n for (let i = 0; i < consoleMap.length; i++) {\n this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n }\n }\n\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n public error!: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n public warn!: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n public info!: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario. Useful scenarios would be to log the execution\n * order of async operations\n */\n public debug!: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n public verbose!: DiagLogFunction;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.d.ts new file mode 100644 index 0000000..890b9f1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.d.ts @@ -0,0 +1,3 @@ +import { DiagLogger, DiagLogLevel } from '../types'; +export declare function createLogLevelDiagLogger(maxLevel: DiagLogLevel, logger: DiagLogger): DiagLogger; +//# sourceMappingURL=logLevelLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js new file mode 100644 index 0000000..ee1702e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js @@ -0,0 +1,45 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createLogLevelDiagLogger = void 0; +const types_1 = require("../types"); +function createLogLevelDiagLogger(maxLevel, logger) { + if (maxLevel < types_1.DiagLogLevel.NONE) { + maxLevel = types_1.DiagLogLevel.NONE; + } + else if (maxLevel > types_1.DiagLogLevel.ALL) { + maxLevel = types_1.DiagLogLevel.ALL; + } + // In case the logger is null or undefined + logger = logger || {}; + function _filterFunc(funcName, theLevel) { + const theFunc = logger[funcName]; + if (typeof theFunc === 'function' && maxLevel >= theLevel) { + return theFunc.bind(logger); + } + return function () { }; + } + return { + error: _filterFunc('error', types_1.DiagLogLevel.ERROR), + warn: _filterFunc('warn', types_1.DiagLogLevel.WARN), + info: _filterFunc('info', types_1.DiagLogLevel.INFO), + debug: _filterFunc('debug', types_1.DiagLogLevel.DEBUG), + verbose: _filterFunc('verbose', types_1.DiagLogLevel.VERBOSE), + }; +} +exports.createLogLevelDiagLogger = createLogLevelDiagLogger; +//# sourceMappingURL=logLevelLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js.map new file mode 100644 index 0000000..1148835 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logLevelLogger.js","sourceRoot":"","sources":["../../../../src/diag/internal/logLevelLogger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,oCAAqE;AAErE,SAAgB,wBAAwB,CACtC,QAAsB,EACtB,MAAkB;IAElB,IAAI,QAAQ,GAAG,oBAAY,CAAC,IAAI,EAAE;QAChC,QAAQ,GAAG,oBAAY,CAAC,IAAI,CAAC;KAC9B;SAAM,IAAI,QAAQ,GAAG,oBAAY,CAAC,GAAG,EAAE;QACtC,QAAQ,GAAG,oBAAY,CAAC,GAAG,CAAC;KAC7B;IAED,0CAA0C;IAC1C,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IAEtB,SAAS,WAAW,CAClB,QAA0B,EAC1B,QAAsB;QAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjC,IAAI,OAAO,OAAO,KAAK,UAAU,IAAI,QAAQ,IAAI,QAAQ,EAAE;YACzD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;QACD,OAAO,cAAa,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,oBAAY,CAAC,KAAK,CAAC;QAC/C,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAY,CAAC,IAAI,CAAC;QAC5C,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAY,CAAC,IAAI,CAAC;QAC5C,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,oBAAY,CAAC,KAAK,CAAC;QAC/C,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,oBAAY,CAAC,OAAO,CAAC;KACtD,CAAC;AACJ,CAAC;AAhCD,4DAgCC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagLogFunction, DiagLogger, DiagLogLevel } from '../types';\n\nexport function createLogLevelDiagLogger(\n maxLevel: DiagLogLevel,\n logger: DiagLogger\n): DiagLogger {\n if (maxLevel < DiagLogLevel.NONE) {\n maxLevel = DiagLogLevel.NONE;\n } else if (maxLevel > DiagLogLevel.ALL) {\n maxLevel = DiagLogLevel.ALL;\n }\n\n // In case the logger is null or undefined\n logger = logger || {};\n\n function _filterFunc(\n funcName: keyof DiagLogger,\n theLevel: DiagLogLevel\n ): DiagLogFunction {\n const theFunc = logger[funcName];\n\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () {};\n }\n\n return {\n error: _filterFunc('error', DiagLogLevel.ERROR),\n warn: _filterFunc('warn', DiagLogLevel.WARN),\n info: _filterFunc('info', DiagLogLevel.INFO),\n debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.d.ts new file mode 100644 index 0000000..ac71ee3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.d.ts @@ -0,0 +1,8 @@ +import { DiagLogger } from '../types'; +/** + * Returns a No-Op Diagnostic logger where all messages do nothing. + * @implements {@link DiagLogger} + * @returns {DiagLogger} + */ +export declare function createNoopDiagLogger(): DiagLogger; +//# sourceMappingURL=noopLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.js new file mode 100644 index 0000000..4091631 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.js @@ -0,0 +1,35 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createNoopDiagLogger = void 0; +function noopLogFunction() { } +/** + * Returns a No-Op Diagnostic logger where all messages do nothing. + * @implements {@link DiagLogger} + * @returns {DiagLogger} + */ +function createNoopDiagLogger() { + return { + verbose: noopLogFunction, + debug: noopLogFunction, + info: noopLogFunction, + warn: noopLogFunction, + error: noopLogFunction, + }; +} +exports.createNoopDiagLogger = createNoopDiagLogger; +//# sourceMappingURL=noopLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.js.map new file mode 100644 index 0000000..20e0e81 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"noopLogger.js","sourceRoot":"","sources":["../../../../src/diag/internal/noopLogger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,SAAS,eAAe,KAAI,CAAC;AAE7B;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,eAAe;KACvB,CAAC;AACJ,CAAC;AARD,oDAQC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DiagLogger } from '../types';\n\nfunction noopLogFunction() {}\n\n/**\n * Returns a No-Op Diagnostic logger where all messages do nothing.\n * @implements {@link DiagLogger}\n * @returns {DiagLogger}\n */\nexport function createNoopDiagLogger(): DiagLogger {\n return {\n verbose: noopLogFunction,\n debug: noopLogFunction,\n info: noopLogFunction,\n warn: noopLogFunction,\n error: noopLogFunction,\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/types.d.ts new file mode 100644 index 0000000..e992cc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/types.d.ts @@ -0,0 +1,100 @@ +export declare type DiagLogFunction = (message: string, ...args: unknown[]) => void; +/** + * Defines an internal diagnostic logger interface which is used to log internal diagnostic + * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function. + * API provided implementations include :- + * - a No-Op {@link createNoopDiagLogger} + * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger} + * - a general Console {@link DiagConsoleLogger} version. + */ +export interface DiagLogger { + /** Log an error scenario that was not expected and caused the requested operation to fail. */ + error: DiagLogFunction; + /** + * Log a warning scenario to inform the developer of an issues that should be investigated. + * The requested operation may or may not have succeeded or completed. + */ + warn: DiagLogFunction; + /** + * Log a general informational message, this should not affect functionality. + * This is also the default logging level so this should NOT be used for logging + * debugging level information. + */ + info: DiagLogFunction; + /** + * Log a general debug message that can be useful for identifying a failure. + * Information logged at this level may include diagnostic details that would + * help identify a failure scenario. + * For example: Logging the order of execution of async operations. + */ + debug: DiagLogFunction; + /** + * Log a detailed (verbose) trace level logging that can be used to identify failures + * where debug level logging would be insufficient, this level of tracing can include + * input and output parameters and as such may include PII information passing through + * the API. As such it is recommended that this level of tracing should not be enabled + * in a production environment. + */ + verbose: DiagLogFunction; +} +/** + * Defines the available internal logging levels for the diagnostic logger, the numeric values + * of the levels are defined to match the original values from the initial LogLevel to avoid + * compatibility/migration issues for any implementation that assume the numeric ordering. + */ +export declare enum DiagLogLevel { + /** Diagnostic Logging level setting to disable all logging (except and forced logs) */ + NONE = 0, + /** Identifies an error scenario */ + ERROR = 30, + /** Identifies a warning scenario */ + WARN = 50, + /** General informational log message */ + INFO = 60, + /** General debug log message */ + DEBUG = 70, + /** + * Detailed trace level logging should only be used for development, should only be set + * in a development environment. + */ + VERBOSE = 80, + /** Used to set the logging level to include all logging */ + ALL = 9999 +} +/** + * Defines options for ComponentLogger + */ +export interface ComponentLoggerOptions { + namespace: string; +} +export interface DiagLoggerOptions { + /** + * The {@link DiagLogLevel} used to filter logs sent to the logger. + * + * @defaultValue DiagLogLevel.INFO + */ + logLevel?: DiagLogLevel; + /** + * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered. + */ + suppressOverrideMessage?: boolean; +} +export interface DiagLoggerApi { + /** + * Set the global DiagLogger and DiagLogLevel. + * If a global diag logger is already set, this will override it. + * + * @param logger - The {@link DiagLogger} instance to set as the default logger. + * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set. + * @returns `true` if the logger was successfully registered, else `false` + */ + setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean; + /** + * + * @param logger - The {@link DiagLogger} instance to set as the default logger. + * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}. + * @returns `true` if the logger was successfully registered, else `false` + */ + setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/types.js new file mode 100644 index 0000000..c195e45 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/types.js @@ -0,0 +1,44 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DiagLogLevel = void 0; +/** + * Defines the available internal logging levels for the diagnostic logger, the numeric values + * of the levels are defined to match the original values from the initial LogLevel to avoid + * compatibility/migration issues for any implementation that assume the numeric ordering. + */ +var DiagLogLevel; +(function (DiagLogLevel) { + /** Diagnostic Logging level setting to disable all logging (except and forced logs) */ + DiagLogLevel[DiagLogLevel["NONE"] = 0] = "NONE"; + /** Identifies an error scenario */ + DiagLogLevel[DiagLogLevel["ERROR"] = 30] = "ERROR"; + /** Identifies a warning scenario */ + DiagLogLevel[DiagLogLevel["WARN"] = 50] = "WARN"; + /** General informational log message */ + DiagLogLevel[DiagLogLevel["INFO"] = 60] = "INFO"; + /** General debug log message */ + DiagLogLevel[DiagLogLevel["DEBUG"] = 70] = "DEBUG"; + /** + * Detailed trace level logging should only be used for development, should only be set + * in a development environment. + */ + DiagLogLevel[DiagLogLevel["VERBOSE"] = 80] = "VERBOSE"; + /** Used to set the logging level to include all logging */ + DiagLogLevel[DiagLogLevel["ALL"] = 9999] = "ALL"; +})(DiagLogLevel = exports.DiagLogLevel || (exports.DiagLogLevel = {})); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/types.js.map new file mode 100644 index 0000000..ee8afca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/diag/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/diag/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AA+CH;;;;GAIG;AACH,IAAY,YAwBX;AAxBD,WAAY,YAAY;IACtB,uFAAuF;IACvF,+CAAQ,CAAA;IAER,mCAAmC;IACnC,kDAAU,CAAA;IAEV,oCAAoC;IACpC,gDAAS,CAAA;IAET,wCAAwC;IACxC,gDAAS,CAAA;IAET,gCAAgC;IAChC,kDAAU,CAAA;IAEV;;;OAGG;IACH,sDAAY,CAAA;IAEZ,2DAA2D;IAC3D,gDAAU,CAAA;AACZ,CAAC,EAxBW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAwBvB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type DiagLogFunction = (message: string, ...args: unknown[]) => void;\n\n/**\n * Defines an internal diagnostic logger interface which is used to log internal diagnostic\n * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function.\n * API provided implementations include :-\n * - a No-Op {@link createNoopDiagLogger}\n * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger}\n * - a general Console {@link DiagConsoleLogger} version.\n */\nexport interface DiagLogger {\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n error: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n warn: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n info: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario.\n * For example: Logging the order of execution of async operations.\n */\n debug: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n verbose: DiagLogFunction;\n}\n\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 */\nexport enum DiagLogLevel {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n NONE = 0,\n\n /** Identifies an error scenario */\n ERROR = 30,\n\n /** Identifies a warning scenario */\n WARN = 50,\n\n /** General informational log message */\n INFO = 60,\n\n /** General debug log message */\n DEBUG = 70,\n\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n VERBOSE = 80,\n\n /** Used to set the logging level to include all logging */\n ALL = 9999,\n}\n\n/**\n * Defines options for ComponentLogger\n */\nexport interface ComponentLoggerOptions {\n namespace: string;\n}\n\nexport interface DiagLoggerOptions {\n /**\n * The {@link DiagLogLevel} used to filter logs sent to the logger.\n *\n * @defaultValue DiagLogLevel.INFO\n */\n logLevel?: DiagLogLevel;\n\n /**\n * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered.\n */\n suppressOverrideMessage?: boolean;\n}\n\nexport interface DiagLoggerApi {\n /**\n * Set the global DiagLogger and DiagLogLevel.\n * If a global diag logger is already set, this will override it.\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean;\n\n /**\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/index.d.ts new file mode 100644 index 0000000..bec3965 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/index.d.ts @@ -0,0 +1,3 @@ +export { wrapTracer, SugaredTracer } from './trace/SugaredTracer'; +export { SugaredSpanOptions } from './trace/SugaredOptions'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/index.js new file mode 100644 index 0000000..bd611ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/index.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SugaredTracer = exports.wrapTracer = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var SugaredTracer_1 = require("./trace/SugaredTracer"); +Object.defineProperty(exports, "wrapTracer", { enumerable: true, get: function () { return SugaredTracer_1.wrapTracer; } }); +Object.defineProperty(exports, "SugaredTracer", { enumerable: true, get: function () { return SugaredTracer_1.SugaredTracer; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/index.js.map new file mode 100644 index 0000000..f0ed983 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/experimental/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,uDAAkE;AAAzD,2GAAA,UAAU,OAAA;AAAE,8GAAA,aAAa,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { wrapTracer, SugaredTracer } from './trace/SugaredTracer';\nexport { SugaredSpanOptions } from './trace/SugaredOptions';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.d.ts new file mode 100644 index 0000000..89040af --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.d.ts @@ -0,0 +1,13 @@ +import { Span, SpanOptions } from '../../'; +/** + * Options needed for span creation + */ +export interface SugaredSpanOptions extends SpanOptions { + /** + * function to overwrite default exception behavior to record the exception. No exceptions should be thrown in the function. + * @param e Error which triggered this exception + * @param span current span from context + */ + onException?: (e: Error, span: Span) => void; +} +//# sourceMappingURL=SugaredOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.js new file mode 100644 index 0000000..a18d65b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=SugaredOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.js.map new file mode 100644 index 0000000..19ded54 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SugaredOptions.js","sourceRoot":"","sources":["../../../../src/experimental/trace/SugaredOptions.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Span, SpanOptions } from '../../';\n\n/**\n * Options needed for span creation\n */\nexport interface SugaredSpanOptions extends SpanOptions {\n /**\n * function to overwrite default exception behavior to record the exception. No exceptions should be thrown in the function.\n * @param e Error which triggered this exception\n * @param span current span from context\n */\n onException?: (e: Error, span: Span) => void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.d.ts new file mode 100644 index 0000000..1ba7da9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.d.ts @@ -0,0 +1,64 @@ +import { SugaredSpanOptions } from './SugaredOptions'; +import { Context, Span, Tracer } from '../../'; +/** + * return a new SugaredTracer created from the supplied one + * @param tracer + */ +export declare function wrapTracer(tracer: Tracer): SugaredTracer; +export declare class SugaredTracer implements Tracer { + private readonly _tracer; + constructor(tracer: Tracer); + startActiveSpan: Tracer['startActiveSpan']; + startSpan: Tracer['startSpan']; + /** + * Starts a new {@link Span} and calls the given function passing it the + * created span as first argument. + * Additionally, the new span gets set in context and this context is activated + * for the duration of the function call. + * The span will be closed after the function has executed. + * If an exception occurs, it is recorded, the status is set to ERROR and the exception is rethrown. + * + * @param name The name of the span + * @param [options] SugaredSpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns return value of fn + * @example + * const something = tracer.withActiveSpan('op', span => { + * // do some work + * }); + * @example + * const something = await tracer.withActiveSpan('op', span => { + * // do some async work + * }); + */ + withActiveSpan ReturnType>(name: string, fn: F): ReturnType; + withActiveSpan ReturnType>(name: string, options: SugaredSpanOptions, fn: F): ReturnType; + withActiveSpan ReturnType>(name: string, options: SugaredSpanOptions, context: Context, fn: F): ReturnType; + /** + * Starts a new {@link Span} and ends it after execution of fn without setting it on context. + * The span will be closed after the function has executed. + * If an exception occurs, it is recorded, the status is et to ERROR and rethrown. + * + * This method does NOT modify the current Context. + * + * @param name The name of the span + * @param [options] SugaredSpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns Span The newly created span + * @example + * const something = tracer.withSpan('op', span => { + * // do some work + * }); + * @example + * const something = await tracer.withSpan('op', span => { + * // do some async work + * }); + */ + withSpan ReturnType>(name: string, fn: F): ReturnType; + withSpan ReturnType>(name: string, options: SugaredSpanOptions, fn: F): ReturnType; + withSpan ReturnType>(name: string, options: SugaredSpanOptions, context: Context, fn: F): ReturnType; + withSpan ReturnType>(name: string, options: SugaredSpanOptions, context: Context, fn: F): ReturnType; +} +//# sourceMappingURL=SugaredTracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.js new file mode 100644 index 0000000..aae6249 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.js @@ -0,0 +1,93 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SugaredTracer = exports.wrapTracer = void 0; +const __1 = require("../../"); +const defaultOnException = (e, span) => { + span.recordException(e); + span.setStatus({ + code: __1.SpanStatusCode.ERROR, + }); +}; +/** + * return a new SugaredTracer created from the supplied one + * @param tracer + */ +function wrapTracer(tracer) { + return new SugaredTracer(tracer); +} +exports.wrapTracer = wrapTracer; +class SugaredTracer { + constructor(tracer) { + this._tracer = tracer; + this.startSpan = tracer.startSpan.bind(this._tracer); + this.startActiveSpan = tracer.startActiveSpan.bind(this._tracer); + } + withActiveSpan(name, arg2, arg3, arg4) { + const { opts, ctx, fn } = massageParams(arg2, arg3, arg4); + return this._tracer.startActiveSpan(name, opts, ctx, (span) => handleFn(span, opts, fn)); + } + withSpan(name, arg2, arg3, arg4) { + const { opts, ctx, fn } = massageParams(arg2, arg3, arg4); + const span = this._tracer.startSpan(name, opts, ctx); + return handleFn(span, opts, fn); + } +} +exports.SugaredTracer = SugaredTracer; +/** + * Massages parameters of withSpan and withActiveSpan to allow signature overwrites + * @param arg + * @param arg2 + * @param arg3 + */ +function massageParams(arg, arg2, arg3) { + let opts; + let ctx; + let fn; + if (!arg2 && !arg3) { + fn = arg; + } + else if (!arg3) { + opts = arg; + fn = arg2; + } + else { + opts = arg; + ctx = arg2; + fn = arg3; + } + opts = opts !== null && opts !== void 0 ? opts : {}; + ctx = ctx !== null && ctx !== void 0 ? ctx : __1.context.active(); + return { opts, ctx, fn }; +} +/** + * Executes fn, returns results and runs onException in the case of exception to allow overwriting of error handling + * @param span + * @param opts + * @param fn + */ +function handleFn(span, opts, fn) { + var _a; + const onException = (_a = opts.onException) !== null && _a !== void 0 ? _a : defaultOnException; + const errorHandler = (e) => { + onException(e, span); + span.end(); + throw e; + }; + try { + const ret = fn(span); + // if fn is an async function, attach a recordException and spanEnd callback to the promise + if (typeof (ret === null || ret === void 0 ? void 0 : ret.then) === 'function') { + return ret.then(val => { + span.end(); + return val; + }, errorHandler); + } + span.end(); + return ret; + } + catch (e) { + // add throw to signal the compiler that this will throw in the inner scope + throw errorHandler(e); + } +} +//# sourceMappingURL=SugaredTracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.js.map new file mode 100644 index 0000000..b7abda9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SugaredTracer.js","sourceRoot":"","sources":["../../../../src/experimental/trace/SugaredTracer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SugaredSpanOptions } from './SugaredOptions';\nimport { context, Context, Span, SpanStatusCode, Tracer } from '../../';\n\nconst defaultOnException = (e: Error, span: Span) => {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n });\n};\n\n/**\n * return a new SugaredTracer created from the supplied one\n * @param tracer\n */\nexport function wrapTracer(tracer: Tracer): SugaredTracer {\n return new SugaredTracer(tracer);\n}\n\nexport class SugaredTracer implements Tracer {\n private readonly _tracer: Tracer;\n\n constructor(tracer: Tracer) {\n this._tracer = tracer;\n this.startSpan = tracer.startSpan.bind(this._tracer);\n this.startActiveSpan = tracer.startActiveSpan.bind(this._tracer);\n }\n\n startActiveSpan: Tracer['startActiveSpan'];\n startSpan: Tracer['startSpan'];\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally, the new span gets set in context and this context is activated\n * for the duration of the function call.\n * The span will be closed after the function has executed.\n * If an exception occurs, it is recorded, the status is set to ERROR and the exception is rethrown.\n *\n * @param name The name of the span\n * @param [options] SugaredSpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.withActiveSpan('op', span => {\n * // do some work\n * });\n * @example\n * const something = await tracer.withActiveSpan('op', span => {\n * // do some async work\n * });\n */\n withActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n withActiveSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n fn: F\n ): ReturnType;\n withActiveSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n withActiveSpan ReturnType>(\n name: string,\n arg2: F | SugaredSpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType {\n const { opts, ctx, fn } = massageParams(arg2, arg3, arg4);\n\n return this._tracer.startActiveSpan(name, opts, ctx, (span: Span) =>\n handleFn(span, opts, fn)\n ) as ReturnType;\n }\n\n /**\n * Starts a new {@link Span} and ends it after execution of fn without setting it on context.\n * The span will be closed after the function has executed.\n * If an exception occurs, it is recorded, the status is et to ERROR and rethrown.\n *\n * This method does NOT modify the current Context.\n *\n * @param name The name of the span\n * @param [options] SugaredSpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns Span The newly created span\n * @example\n * const something = tracer.withSpan('op', span => {\n * // do some work\n * });\n * @example\n * const something = await tracer.withSpan('op', span => {\n * // do some async work\n * });\n */\n withSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n options: SugaredSpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n withSpan ReturnType>(\n name: string,\n arg2: SugaredSpanOptions | F,\n arg3?: Context | F,\n arg4?: F\n ): ReturnType {\n const { opts, ctx, fn } = massageParams(arg2, arg3, arg4);\n\n const span = this._tracer.startSpan(name, opts, ctx);\n return handleFn(span, opts, fn) as ReturnType;\n }\n}\n\n/**\n * Massages parameters of withSpan and withActiveSpan to allow signature overwrites\n * @param arg\n * @param arg2\n * @param arg3\n */\nfunction massageParams ReturnType>(\n arg: F | SugaredSpanOptions,\n arg2?: F | Context,\n arg3?: F\n) {\n let opts: SugaredSpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (!arg2 && !arg3) {\n fn = arg as F;\n } else if (!arg3) {\n opts = arg as SugaredSpanOptions;\n fn = arg2 as F;\n } else {\n opts = arg as SugaredSpanOptions;\n ctx = arg2 as Context;\n fn = arg3 as F;\n }\n opts = opts ?? {};\n ctx = ctx ?? context.active();\n\n return { opts, ctx, fn };\n}\n\n/**\n * Executes fn, returns results and runs onException in the case of exception to allow overwriting of error handling\n * @param span\n * @param opts\n * @param fn\n */\nfunction handleFn ReturnType>(\n span: Span,\n opts: SugaredSpanOptions,\n fn: F\n): ReturnType {\n const onException = opts.onException ?? defaultOnException;\n const errorHandler = (e: Error) => {\n onException(e, span);\n span.end();\n throw e;\n };\n\n try {\n const ret = fn(span) as Promise>;\n // if fn is an async function, attach a recordException and spanEnd callback to the promise\n if (typeof ret?.then === 'function') {\n return ret.then(val => {\n span.end();\n return val;\n }, errorHandler) as ReturnType;\n }\n span.end();\n return ret as ReturnType;\n } catch (e) {\n // add throw to signal the compiler that this will throw in the inner scope\n throw errorHandler(e);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/index.d.ts new file mode 100644 index 0000000..eea88f2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/index.d.ts @@ -0,0 +1,54 @@ +export { BaggageEntry, BaggageEntryMetadata, Baggage } from './baggage/types'; +export { baggageEntryMetadataFromString } from './baggage/utils'; +export { Exception } from './common/Exception'; +export { HrTime, TimeInput } from './common/Time'; +export { Attributes, AttributeValue } from './common/Attributes'; +export { createContextKey, ROOT_CONTEXT } from './context/context'; +export { Context, ContextManager } from './context/types'; +export type { ContextAPI } from './api/context'; +export { DiagConsoleLogger } from './diag/consoleLogger'; +export { DiagLogFunction, DiagLogger, DiagLogLevel, ComponentLoggerOptions, DiagLoggerOptions, } from './diag/types'; +export type { DiagAPI } from './api/diag'; +export { createNoopMeter } from './metrics/NoopMeter'; +export { MeterOptions, Meter } from './metrics/Meter'; +export { MeterProvider } from './metrics/MeterProvider'; +export { ValueType, Counter, Gauge, Histogram, MetricOptions, Observable, ObservableCounter, ObservableGauge, ObservableUpDownCounter, UpDownCounter, BatchObservableCallback, MetricAdvice, MetricAttributes, MetricAttributeValue, ObservableCallback, } from './metrics/Metric'; +export { BatchObservableResult, ObservableResult, } from './metrics/ObservableResult'; +export type { MetricsAPI } from './api/metrics'; +export { TextMapPropagator, TextMapSetter, TextMapGetter, defaultTextMapGetter, defaultTextMapSetter, } from './propagation/TextMapPropagator'; +export type { PropagationAPI } from './api/propagation'; +export { SpanAttributes, SpanAttributeValue } from './trace/attributes'; +export { Link } from './trace/link'; +export { ProxyTracer, TracerDelegator } from './trace/ProxyTracer'; +export { ProxyTracerProvider } from './trace/ProxyTracerProvider'; +export { Sampler } from './trace/Sampler'; +export { SamplingDecision, SamplingResult } from './trace/SamplingResult'; +export { SpanContext } from './trace/span_context'; +export { SpanKind } from './trace/span_kind'; +export { Span } from './trace/span'; +export { SpanOptions } from './trace/SpanOptions'; +export { SpanStatus, SpanStatusCode } from './trace/status'; +export { TraceFlags } from './trace/trace_flags'; +export { TraceState } from './trace/trace_state'; +export { createTraceState } from './trace/internal/utils'; +export { TracerProvider } from './trace/tracer_provider'; +export { Tracer } from './trace/tracer'; +export { TracerOptions } from './trace/tracer_options'; +export { isSpanContextValid, isValidTraceId, isValidSpanId, } from './trace/spancontext-utils'; +export { INVALID_SPANID, INVALID_TRACEID, INVALID_SPAN_CONTEXT, } from './trace/invalid-span-constants'; +export type { TraceAPI } from './api/trace'; +import { context } from './context-api'; +import { diag } from './diag-api'; +import { metrics } from './metrics-api'; +import { propagation } from './propagation-api'; +import { trace } from './trace-api'; +export { context, diag, metrics, propagation, trace }; +declare const _default: { + context: import("./api/context").ContextAPI; + diag: import("./api/diag").DiagAPI; + metrics: import("./api/metrics").MetricsAPI; + propagation: import("./api/propagation").PropagationAPI; + trace: import("./api/trace").TraceAPI; +}; +export default _default; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/index.js new file mode 100644 index 0000000..cb0a872 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/index.js @@ -0,0 +1,81 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +var utils_1 = require("./baggage/utils"); +Object.defineProperty(exports, "baggageEntryMetadataFromString", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } }); +// Context APIs +var context_1 = require("./context/context"); +Object.defineProperty(exports, "createContextKey", { enumerable: true, get: function () { return context_1.createContextKey; } }); +Object.defineProperty(exports, "ROOT_CONTEXT", { enumerable: true, get: function () { return context_1.ROOT_CONTEXT; } }); +// Diag APIs +var consoleLogger_1 = require("./diag/consoleLogger"); +Object.defineProperty(exports, "DiagConsoleLogger", { enumerable: true, get: function () { return consoleLogger_1.DiagConsoleLogger; } }); +var types_1 = require("./diag/types"); +Object.defineProperty(exports, "DiagLogLevel", { enumerable: true, get: function () { return types_1.DiagLogLevel; } }); +// Metrics APIs +var NoopMeter_1 = require("./metrics/NoopMeter"); +Object.defineProperty(exports, "createNoopMeter", { enumerable: true, get: function () { return NoopMeter_1.createNoopMeter; } }); +var Metric_1 = require("./metrics/Metric"); +Object.defineProperty(exports, "ValueType", { enumerable: true, get: function () { return Metric_1.ValueType; } }); +// Propagation APIs +var TextMapPropagator_1 = require("./propagation/TextMapPropagator"); +Object.defineProperty(exports, "defaultTextMapGetter", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapGetter; } }); +Object.defineProperty(exports, "defaultTextMapSetter", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapSetter; } }); +var ProxyTracer_1 = require("./trace/ProxyTracer"); +Object.defineProperty(exports, "ProxyTracer", { enumerable: true, get: function () { return ProxyTracer_1.ProxyTracer; } }); +var ProxyTracerProvider_1 = require("./trace/ProxyTracerProvider"); +Object.defineProperty(exports, "ProxyTracerProvider", { enumerable: true, get: function () { return ProxyTracerProvider_1.ProxyTracerProvider; } }); +var SamplingResult_1 = require("./trace/SamplingResult"); +Object.defineProperty(exports, "SamplingDecision", { enumerable: true, get: function () { return SamplingResult_1.SamplingDecision; } }); +var span_kind_1 = require("./trace/span_kind"); +Object.defineProperty(exports, "SpanKind", { enumerable: true, get: function () { return span_kind_1.SpanKind; } }); +var status_1 = require("./trace/status"); +Object.defineProperty(exports, "SpanStatusCode", { enumerable: true, get: function () { return status_1.SpanStatusCode; } }); +var trace_flags_1 = require("./trace/trace_flags"); +Object.defineProperty(exports, "TraceFlags", { enumerable: true, get: function () { return trace_flags_1.TraceFlags; } }); +var utils_2 = require("./trace/internal/utils"); +Object.defineProperty(exports, "createTraceState", { enumerable: true, get: function () { return utils_2.createTraceState; } }); +var spancontext_utils_1 = require("./trace/spancontext-utils"); +Object.defineProperty(exports, "isSpanContextValid", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } }); +Object.defineProperty(exports, "isValidTraceId", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } }); +Object.defineProperty(exports, "isValidSpanId", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } }); +var invalid_span_constants_1 = require("./trace/invalid-span-constants"); +Object.defineProperty(exports, "INVALID_SPANID", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } }); +Object.defineProperty(exports, "INVALID_TRACEID", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } }); +Object.defineProperty(exports, "INVALID_SPAN_CONTEXT", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } }); +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +const context_api_1 = require("./context-api"); +Object.defineProperty(exports, "context", { enumerable: true, get: function () { return context_api_1.context; } }); +const diag_api_1 = require("./diag-api"); +Object.defineProperty(exports, "diag", { enumerable: true, get: function () { return diag_api_1.diag; } }); +const metrics_api_1 = require("./metrics-api"); +Object.defineProperty(exports, "metrics", { enumerable: true, get: function () { return metrics_api_1.metrics; } }); +const propagation_api_1 = require("./propagation-api"); +Object.defineProperty(exports, "propagation", { enumerable: true, get: function () { return propagation_api_1.propagation; } }); +const trace_api_1 = require("./trace-api"); +Object.defineProperty(exports, "trace", { enumerable: true, get: function () { return trace_api_1.trace; } }); +// Default export. +exports.default = { + context: context_api_1.context, + diag: diag_api_1.diag, + metrics: metrics_api_1.metrics, + propagation: propagation_api_1.propagation, + trace: trace_api_1.trace, +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/index.js.map new file mode 100644 index 0000000..2ff3ff6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,yCAAiE;AAAxD,uHAAA,8BAA8B,OAAA;AAKvC,eAAe;AACf,6CAAmE;AAA1D,2GAAA,gBAAgB,OAAA;AAAE,uGAAA,YAAY,OAAA;AAIvC,YAAY;AACZ,sDAAyD;AAAhD,kHAAA,iBAAiB,OAAA;AAC1B,sCAMsB;AAHpB,qGAAA,YAAY,OAAA;AAMd,eAAe;AACf,iDAAsD;AAA7C,4GAAA,eAAe,OAAA;AAGxB,2CAgB0B;AAfxB,mGAAA,SAAS,OAAA;AAsBX,mBAAmB;AACnB,qEAMyC;AAFvC,yHAAA,oBAAoB,OAAA;AACpB,yHAAA,oBAAoB,OAAA;AAOtB,mDAAmE;AAA1D,0GAAA,WAAW,OAAA;AACpB,mEAAkE;AAAzD,0HAAA,mBAAmB,OAAA;AAE5B,yDAA0E;AAAjE,kHAAA,gBAAgB,OAAA;AAEzB,+CAA6C;AAApC,qGAAA,QAAQ,OAAA;AAGjB,yCAA4D;AAAvC,wGAAA,cAAc,OAAA;AACnC,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AAEnB,gDAA0D;AAAjD,yGAAA,gBAAgB,OAAA;AAIzB,+DAImC;AAHjC,uHAAA,kBAAkB,OAAA;AAClB,mHAAA,cAAc,OAAA;AACd,kHAAA,aAAa,OAAA;AAEf,yEAIwC;AAHtC,wHAAA,cAAc,OAAA;AACd,yHAAA,eAAe,OAAA;AACf,8HAAA,oBAAoB,OAAA;AAItB,sEAAsE;AACtE,qCAAqC;AACrC,+CAAwC;AAO/B,wFAPA,qBAAO,OAOA;AANhB,yCAAkC;AAMhB,qFANT,eAAI,OAMS;AALtB,+CAAwC;AAKhB,wFALf,qBAAO,OAKe;AAJ/B,uDAAgD;AAIf,4FAJxB,6BAAW,OAIwB;AAH5C,2CAAoC;AAGU,sFAHrC,iBAAK,OAGqC;AACnD,kBAAkB;AAClB,kBAAe;IACb,OAAO,EAAP,qBAAO;IACP,IAAI,EAAJ,eAAI;IACJ,OAAO,EAAP,qBAAO;IACP,WAAW,EAAX,6BAAW;IACX,KAAK,EAAL,iBAAK;CACN,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BaggageEntry, BaggageEntryMetadata, Baggage } from './baggage/types';\nexport { baggageEntryMetadataFromString } from './baggage/utils';\nexport { Exception } from './common/Exception';\nexport { HrTime, TimeInput } from './common/Time';\nexport { Attributes, AttributeValue } from './common/Attributes';\n\n// Context APIs\nexport { createContextKey, ROOT_CONTEXT } from './context/context';\nexport { Context, ContextManager } from './context/types';\nexport type { ContextAPI } from './api/context';\n\n// Diag APIs\nexport { DiagConsoleLogger } from './diag/consoleLogger';\nexport {\n DiagLogFunction,\n DiagLogger,\n DiagLogLevel,\n ComponentLoggerOptions,\n DiagLoggerOptions,\n} from './diag/types';\nexport type { DiagAPI } from './api/diag';\n\n// Metrics APIs\nexport { createNoopMeter } from './metrics/NoopMeter';\nexport { MeterOptions, Meter } from './metrics/Meter';\nexport { MeterProvider } from './metrics/MeterProvider';\nexport {\n ValueType,\n Counter,\n Gauge,\n Histogram,\n MetricOptions,\n Observable,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n BatchObservableCallback,\n MetricAdvice,\n MetricAttributes,\n MetricAttributeValue,\n ObservableCallback,\n} from './metrics/Metric';\nexport {\n BatchObservableResult,\n ObservableResult,\n} from './metrics/ObservableResult';\nexport type { MetricsAPI } from './api/metrics';\n\n// Propagation APIs\nexport {\n TextMapPropagator,\n TextMapSetter,\n TextMapGetter,\n defaultTextMapGetter,\n defaultTextMapSetter,\n} from './propagation/TextMapPropagator';\nexport type { PropagationAPI } from './api/propagation';\n\n// Trace APIs\nexport { SpanAttributes, SpanAttributeValue } from './trace/attributes';\nexport { Link } from './trace/link';\nexport { ProxyTracer, TracerDelegator } from './trace/ProxyTracer';\nexport { ProxyTracerProvider } from './trace/ProxyTracerProvider';\nexport { Sampler } from './trace/Sampler';\nexport { SamplingDecision, SamplingResult } from './trace/SamplingResult';\nexport { SpanContext } from './trace/span_context';\nexport { SpanKind } from './trace/span_kind';\nexport { Span } from './trace/span';\nexport { SpanOptions } from './trace/SpanOptions';\nexport { SpanStatus, SpanStatusCode } from './trace/status';\nexport { TraceFlags } from './trace/trace_flags';\nexport { TraceState } from './trace/trace_state';\nexport { createTraceState } from './trace/internal/utils';\nexport { TracerProvider } from './trace/tracer_provider';\nexport { Tracer } from './trace/tracer';\nexport { TracerOptions } from './trace/tracer_options';\nexport {\n isSpanContextValid,\n isValidTraceId,\n isValidSpanId,\n} from './trace/spancontext-utils';\nexport {\n INVALID_SPANID,\n INVALID_TRACEID,\n INVALID_SPAN_CONTEXT,\n} from './trace/invalid-span-constants';\nexport type { TraceAPI } from './api/trace';\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { context } from './context-api';\nimport { diag } from './diag-api';\nimport { metrics } from './metrics-api';\nimport { propagation } from './propagation-api';\nimport { trace } from './trace-api';\n\n// Named export.\nexport { context, diag, metrics, propagation, trace };\n// Default export.\nexport default {\n context,\n diag,\n metrics,\n propagation,\n trace,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/global-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/global-utils.d.ts new file mode 100644 index 0000000..320db97 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/global-utils.d.ts @@ -0,0 +1,18 @@ +import { MeterProvider } from '../metrics/MeterProvider'; +import { ContextManager } from '../context/types'; +import { DiagLogger } from '../diag/types'; +import { TextMapPropagator } from '../propagation/TextMapPropagator'; +import type { TracerProvider } from '../trace/tracer_provider'; +export declare function registerGlobal(type: Type, instance: OTelGlobalAPI[Type], diag: DiagLogger, allowOverride?: boolean): boolean; +export declare function getGlobal(type: Type): OTelGlobalAPI[Type] | undefined; +export declare function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger): void; +declare type OTelGlobalAPI = { + version: string; + diag?: DiagLogger; + trace?: TracerProvider; + context?: ContextManager; + metrics?: MeterProvider; + propagation?: TextMapPropagator; +}; +export {}; +//# sourceMappingURL=global-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/global-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/global-utils.js new file mode 100644 index 0000000..11a1a44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/global-utils.js @@ -0,0 +1,64 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0; +const platform_1 = require("../platform"); +const version_1 = require("../version"); +const semver_1 = require("./semver"); +const major = version_1.VERSION.split('.')[0]; +const GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(`opentelemetry.js.api.${major}`); +const _global = platform_1._globalThis; +function registerGlobal(type, instance, diag, allowOverride = false) { + var _a; + const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : { + version: version_1.VERSION, + }); + if (!allowOverride && api[type]) { + // already registered an API of this type + const err = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${type}`); + diag.error(err.stack || err.message); + return false; + } + if (api.version !== version_1.VERSION) { + // All registered APIs must be of the same version exactly + const err = new Error(`@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${version_1.VERSION}`); + diag.error(err.stack || err.message); + return false; + } + api[type] = instance; + diag.debug(`@opentelemetry/api: Registered a global for ${type} v${version_1.VERSION}.`); + return true; +} +exports.registerGlobal = registerGlobal; +function getGlobal(type) { + var _a, _b; + const globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version; + if (!globalVersion || !(0, semver_1.isCompatible)(globalVersion)) { + return; + } + return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type]; +} +exports.getGlobal = getGlobal; +function unregisterGlobal(type, diag) { + diag.debug(`@opentelemetry/api: Unregistering a global for ${type} v${version_1.VERSION}.`); + const api = _global[GLOBAL_OPENTELEMETRY_API_KEY]; + if (api) { + delete api[type]; + } +} +exports.unregisterGlobal = unregisterGlobal; +//# sourceMappingURL=global-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/global-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/global-utils.js.map new file mode 100644 index 0000000..ddca637 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/global-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-utils.js","sourceRoot":"","sources":["../../../src/internal/global-utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH,0CAA0C;AAG1C,wCAAqC;AACrC,qCAAwC;AAExC,MAAM,KAAK,GAAG,iBAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,MAAM,4BAA4B,GAAG,MAAM,CAAC,GAAG,CAC7C,wBAAwB,KAAK,EAAE,CAChC,CAAC;AAEF,MAAM,OAAO,GAAG,sBAAyB,CAAC;AAE1C,SAAgB,cAAc,CAC5B,IAAU,EACV,QAA6B,EAC7B,IAAgB,EAChB,aAAa,GAAG,KAAK;;IAErB,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAA,OAAO,CAC1D,4BAA4B,CAC7B,mCAAI;QACH,OAAO,EAAE,iBAAO;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE;QAC/B,yCAAyC;QACzC,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,gEAAgE,IAAI,EAAE,CACvE,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;KACd;IAED,IAAI,GAAG,CAAC,OAAO,KAAK,iBAAO,EAAE;QAC3B,0DAA0D;QAC1D,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,gDAAgD,GAAG,CAAC,OAAO,QAAQ,IAAI,8CAA8C,iBAAO,EAAE,CAC/H,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;KACd;IAED,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;IACrB,IAAI,CAAC,KAAK,CACR,+CAA+C,IAAI,KAAK,iBAAO,GAAG,CACnE,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AApCD,wCAoCC;AAED,SAAgB,SAAS,CACvB,IAAU;;IAEV,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,4BAA4B,CAAC,0CAAE,OAAO,CAAC;IACrE,IAAI,CAAC,aAAa,IAAI,CAAC,IAAA,qBAAY,EAAC,aAAa,CAAC,EAAE;QAClD,OAAO;KACR;IACD,OAAO,MAAA,OAAO,CAAC,4BAA4B,CAAC,0CAAG,IAAI,CAAC,CAAC;AACvD,CAAC;AARD,8BAQC;AAED,SAAgB,gBAAgB,CAAC,IAAyB,EAAE,IAAgB;IAC1E,IAAI,CAAC,KAAK,CACR,kDAAkD,IAAI,KAAK,iBAAO,GAAG,CACtE,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAElD,IAAI,GAAG,EAAE;QACP,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;KAClB;AACH,CAAC;AATD,4CASC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { ContextManager } from '../context/types';\nimport { DiagLogger } from '../diag/types';\nimport { _globalThis } from '../platform';\nimport { TextMapPropagator } from '../propagation/TextMapPropagator';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\n\nconst major = VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\n `opentelemetry.js.api.${major}`\n);\n\nconst _global = _globalThis as OTelGlobal;\n\nexport function registerGlobal(\n type: Type,\n instance: OTelGlobalAPI[Type],\n diag: DiagLogger,\n allowOverride = false\n): boolean {\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = _global[\n GLOBAL_OPENTELEMETRY_API_KEY\n ] ?? {\n version: VERSION,\n });\n\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(\n `@opentelemetry/api: Attempted duplicate registration of API: ${type}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n if (api.version !== VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(\n `@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${VERSION}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n api[type] = instance;\n diag.debug(\n `@opentelemetry/api: Registered a global for ${type} v${VERSION}.`\n );\n\n return true;\n}\n\nexport function getGlobal(\n type: Type\n): OTelGlobalAPI[Type] | undefined {\n const globalVersion = _global[GLOBAL_OPENTELEMETRY_API_KEY]?.version;\n if (!globalVersion || !isCompatible(globalVersion)) {\n return;\n }\n return _global[GLOBAL_OPENTELEMETRY_API_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger) {\n diag.debug(\n `@opentelemetry/api: Unregistering a global for ${type} v${VERSION}.`\n );\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n\n if (api) {\n delete api[type];\n }\n}\n\ntype OTelGlobal = {\n [GLOBAL_OPENTELEMETRY_API_KEY]?: OTelGlobalAPI;\n};\n\ntype OTelGlobalAPI = {\n version: string;\n\n diag?: DiagLogger;\n trace?: TracerProvider;\n context?: ContextManager;\n metrics?: MeterProvider;\n propagation?: TextMapPropagator;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/semver.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/semver.d.ts new file mode 100644 index 0000000..d9f4259 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/semver.d.ts @@ -0,0 +1,34 @@ +/** + * Create a function to test an API version to see if it is compatible with the provided ownVersion. + * + * The returned function has the following semantics: + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param ownVersion version which should be checked against + */ +export declare function _makeCompatibilityCheck(ownVersion: string): (globalVersion: string) => boolean; +/** + * Test an API version to see if it is compatible with this API. + * + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param version version of the API requesting an instance of the global API + */ +export declare const isCompatible: (globalVersion: string) => boolean; +//# sourceMappingURL=semver.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/semver.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/semver.js new file mode 100644 index 0000000..7a073b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/semver.js @@ -0,0 +1,122 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCompatible = exports._makeCompatibilityCheck = void 0; +const version_1 = require("../version"); +const re = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/; +/** + * Create a function to test an API version to see if it is compatible with the provided ownVersion. + * + * The returned function has the following semantics: + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param ownVersion version which should be checked against + */ +function _makeCompatibilityCheck(ownVersion) { + const acceptedVersions = new Set([ownVersion]); + const rejectedVersions = new Set(); + const myVersionMatch = ownVersion.match(re); + if (!myVersionMatch) { + // we cannot guarantee compatibility so we always return noop + return () => false; + } + const ownVersionParsed = { + major: +myVersionMatch[1], + minor: +myVersionMatch[2], + patch: +myVersionMatch[3], + prerelease: myVersionMatch[4], + }; + // if ownVersion has a prerelease tag, versions must match exactly + if (ownVersionParsed.prerelease != null) { + return function isExactmatch(globalVersion) { + return globalVersion === ownVersion; + }; + } + function _reject(v) { + rejectedVersions.add(v); + return false; + } + function _accept(v) { + acceptedVersions.add(v); + return true; + } + return function isCompatible(globalVersion) { + if (acceptedVersions.has(globalVersion)) { + return true; + } + if (rejectedVersions.has(globalVersion)) { + return false; + } + const globalVersionMatch = globalVersion.match(re); + if (!globalVersionMatch) { + // cannot parse other version + // we cannot guarantee compatibility so we always noop + return _reject(globalVersion); + } + const globalVersionParsed = { + major: +globalVersionMatch[1], + minor: +globalVersionMatch[2], + patch: +globalVersionMatch[3], + prerelease: globalVersionMatch[4], + }; + // if globalVersion has a prerelease tag, versions must match exactly + if (globalVersionParsed.prerelease != null) { + return _reject(globalVersion); + } + // major versions must match + if (ownVersionParsed.major !== globalVersionParsed.major) { + return _reject(globalVersion); + } + if (ownVersionParsed.major === 0) { + if (ownVersionParsed.minor === globalVersionParsed.minor && + ownVersionParsed.patch <= globalVersionParsed.patch) { + return _accept(globalVersion); + } + return _reject(globalVersion); + } + if (ownVersionParsed.minor <= globalVersionParsed.minor) { + return _accept(globalVersion); + } + return _reject(globalVersion); + }; +} +exports._makeCompatibilityCheck = _makeCompatibilityCheck; +/** + * Test an API version to see if it is compatible with this API. + * + * - Exact match is always compatible + * - Major versions must match exactly + * - 1.x package cannot use global 2.x package + * - 2.x package cannot use global 1.x package + * - 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 + * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects + * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3 + * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor + * - Patch and build tag differences are not considered at this time + * + * @param version version of the API requesting an instance of the global API + */ +exports.isCompatible = _makeCompatibilityCheck(version_1.VERSION); +//# sourceMappingURL=semver.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/semver.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/semver.js.map new file mode 100644 index 0000000..d58dc78 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/internal/semver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../../src/internal/semver.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { VERSION } from '../version';\n\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n\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 */\nexport function _makeCompatibilityCheck(\n ownVersion: string\n): (globalVersion: string) => boolean {\n const acceptedVersions = new Set([ownVersion]);\n const rejectedVersions = new Set();\n\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion: string): boolean {\n return globalVersion === ownVersion;\n };\n }\n\n function _reject(v: string) {\n rejectedVersions.add(v);\n return false;\n }\n\n function _accept(v: string) {\n acceptedVersions.add(v);\n return true;\n }\n\n return function isCompatible(globalVersion: string): boolean {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\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\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.major === 0) {\n if (\n ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch\n ) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n };\n}\n\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 */\nexport const isCompatible = _makeCompatibilityCheck(VERSION);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics-api.d.ts new file mode 100644 index 0000000..26d539c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics-api.d.ts @@ -0,0 +1,4 @@ +import { MetricsAPI } from './api/metrics'; +/** Entrypoint for metrics API */ +export declare const metrics: MetricsAPI; +//# sourceMappingURL=metrics-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics-api.js new file mode 100644 index 0000000..987f7c2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics-api.js @@ -0,0 +1,24 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.metrics = void 0; +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +const metrics_1 = require("./api/metrics"); +/** Entrypoint for metrics API */ +exports.metrics = metrics_1.MetricsAPI.getInstance(); +//# sourceMappingURL=metrics-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics-api.js.map new file mode 100644 index 0000000..26e1802 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metrics-api.js","sourceRoot":"","sources":["../../src/metrics-api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,2CAA2C;AAC3C,iCAAiC;AACpB,QAAA,OAAO,GAAG,oBAAU,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { MetricsAPI } from './api/metrics';\n/** Entrypoint for metrics API */\nexport const metrics = MetricsAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Meter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Meter.d.ts new file mode 100644 index 0000000..5e3926b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Meter.d.ts @@ -0,0 +1,110 @@ +import { BatchObservableCallback, Counter, Gauge, Histogram, MetricAttributes, MetricOptions, Observable, ObservableCounter, ObservableGauge, ObservableUpDownCounter, UpDownCounter } from './Metric'; +/** + * An interface describes additional metadata of a meter. + */ +export interface MeterOptions { + /** + * The schemaUrl of the meter or instrumentation library + */ + schemaUrl?: string; +} +/** + * An interface to allow the recording metrics. + * + * {@link Metric}s are used for recording pre-defined aggregation (`Counter`), + * or raw values (`Histogram`) in which the aggregation and attributes + * for the exported metric are deferred. + */ +export interface Meter { + /** + * Creates and returns a new `Gauge`. + * @param name the name of the metric. + * @param [options] the metric options. + */ + createGauge(name: string, options?: MetricOptions): Gauge; + /** + * Creates and returns a new `Histogram`. + * @param name the name of the metric. + * @param [options] the metric options. + */ + createHistogram(name: string, options?: MetricOptions): Histogram; + /** + * Creates a new `Counter` metric. Generally, this kind of metric when the + * value is a quantity, the sum is of primary interest, and the event count + * and value distribution are not of primary interest. + * @param name the name of the metric. + * @param [options] the metric options. + */ + createCounter(name: string, options?: MetricOptions): Counter; + /** + * Creates a new `UpDownCounter` metric. UpDownCounter is a synchronous + * instrument and very similar to Counter except that Add(increment) + * supports negative increments. It is generally useful for capturing changes + * in an amount of resources used, or any quantity that rises and falls + * during a request. + * Example uses for UpDownCounter: + *
                    + *
                  1. count the number of active requests.
                  2. + *
                  3. count memory in use by instrumenting new and delete.
                  4. + *
                  5. count queue size by instrumenting enqueue and dequeue.
                  6. + *
                  7. count semaphore up and down operations.
                  8. + *
                  + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createUpDownCounter(name: string, options?: MetricOptions): UpDownCounter; + /** + * Creates a new `ObservableGauge` metric. + * + * The callback SHOULD be safe to be invoked concurrently. + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createObservableGauge(name: string, options?: MetricOptions): ObservableGauge; + /** + * Creates a new `ObservableCounter` metric. + * + * The callback SHOULD be safe to be invoked concurrently. + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createObservableCounter(name: string, options?: MetricOptions): ObservableCounter; + /** + * Creates a new `ObservableUpDownCounter` metric. + * + * The callback SHOULD be safe to be invoked concurrently. + * + * @param name the name of the metric. + * @param [options] the metric options. + */ + createObservableUpDownCounter(name: string, options?: MetricOptions): ObservableUpDownCounter; + /** + * Sets up a function that will be called whenever a metric collection is + * initiated. + * + * If the function is already in the list of callbacks for this Observable, + * the function is not added a second time. + * + * Only the associated observables can be observed in the callback. + * Measurements of observables that are not associated observed in the + * callback are dropped. + * + * @param callback the batch observable callback + * @param observables the observables associated with this batch observable callback + */ + addBatchObservableCallback(callback: BatchObservableCallback, observables: Observable[]): void; + /** + * Removes a callback previously registered with {@link Meter.addBatchObservableCallback}. + * + * The callback to be removed is identified using a combination of the callback itself, + * and the set of the observables associated with it. + * + * @param callback the batch observable callback + * @param observables the observables associated with this batch observable callback + */ + removeBatchObservableCallback(callback: BatchObservableCallback, observables: Observable[]): void; +} +//# sourceMappingURL=Meter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Meter.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Meter.js new file mode 100644 index 0000000..56b930c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Meter.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Meter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Meter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Meter.js.map new file mode 100644 index 0000000..c5e2ced --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Meter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Meter.js","sourceRoot":"","sources":["../../../src/metrics/Meter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n BatchObservableCallback,\n Counter,\n Gauge,\n Histogram,\n MetricAttributes,\n MetricOptions,\n Observable,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n} from './Metric';\n\n/**\n * An interface describes additional metadata of a meter.\n */\nexport interface MeterOptions {\n /**\n * The schemaUrl of the meter or instrumentation library\n */\n schemaUrl?: string;\n}\n\n/**\n * An interface to allow the recording metrics.\n *\n * {@link Metric}s are used for recording pre-defined aggregation (`Counter`),\n * or raw values (`Histogram`) in which the aggregation and attributes\n * for the exported metric are deferred.\n */\nexport interface Meter {\n /**\n * Creates and returns a new `Gauge`.\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createGauge(\n name: string,\n options?: MetricOptions\n ): Gauge;\n\n /**\n * Creates and returns a new `Histogram`.\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createHistogram(\n name: string,\n options?: MetricOptions\n ): Histogram;\n\n /**\n * Creates a new `Counter` metric. Generally, this kind of metric when the\n * value is a quantity, the sum is of primary interest, and the event count\n * and value distribution are not of primary interest.\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createCounter(\n name: string,\n options?: MetricOptions\n ): Counter;\n\n /**\n * Creates a new `UpDownCounter` metric. UpDownCounter is a synchronous\n * instrument and very similar to Counter except that Add(increment)\n * supports negative increments. It is generally useful for capturing changes\n * in an amount of resources used, or any quantity that rises and falls\n * during a request.\n * Example uses for UpDownCounter:\n *
                    \n *
                  1. count the number of active requests.
                  2. \n *
                  3. count memory in use by instrumenting new and delete.
                  4. \n *
                  5. count queue size by instrumenting enqueue and dequeue.
                  6. \n *
                  7. count semaphore up and down operations.
                  8. \n *
                  \n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): UpDownCounter;\n\n /**\n * Creates a new `ObservableGauge` metric.\n *\n * The callback SHOULD be safe to be invoked concurrently.\n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createObservableGauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): ObservableGauge;\n\n /**\n * Creates a new `ObservableCounter` metric.\n *\n * The callback SHOULD be safe to be invoked concurrently.\n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createObservableCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): ObservableCounter;\n\n /**\n * Creates a new `ObservableUpDownCounter` metric.\n *\n * The callback SHOULD be safe to be invoked concurrently.\n *\n * @param name the name of the metric.\n * @param [options] the metric options.\n */\n createObservableUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n name: string,\n options?: MetricOptions\n ): ObservableUpDownCounter;\n\n /**\n * Sets up a function that will be called whenever a metric collection is\n * initiated.\n *\n * If the function is already in the list of callbacks for this Observable,\n * the function is not added a second time.\n *\n * Only the associated observables can be observed in the callback.\n * Measurements of observables that are not associated observed in the\n * callback are dropped.\n *\n * @param callback the batch observable callback\n * @param observables the observables associated with this batch observable callback\n */\n addBatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n callback: BatchObservableCallback,\n observables: Observable[]\n ): void;\n\n /**\n * Removes a callback previously registered with {@link Meter.addBatchObservableCallback}.\n *\n * The callback to be removed is identified using a combination of the callback itself,\n * and the set of the observables associated with it.\n *\n * @param callback the batch observable callback\n * @param observables the observables associated with this batch observable callback\n */\n removeBatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n >(\n callback: BatchObservableCallback,\n observables: Observable[]\n ): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.d.ts new file mode 100644 index 0000000..6c08cc3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.d.ts @@ -0,0 +1,17 @@ +import { Meter, MeterOptions } from './Meter'; +/** + * A registry for creating named {@link Meter}s. + */ +export interface MeterProvider { + /** + * Returns a Meter, creating one if one with the given name, version, and + * schemaUrl pair is not already created. + * + * @param name The name of the meter or instrumentation library. + * @param version The version of the meter or instrumentation library. + * @param options The options of the meter or instrumentation library. + * @returns Meter A Meter with the given name and version + */ + getMeter(name: string, version?: string, options?: MeterOptions): Meter; +} +//# sourceMappingURL=MeterProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.js new file mode 100644 index 0000000..e94205e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=MeterProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.js.map new file mode 100644 index 0000000..80c07b7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MeterProvider.js","sourceRoot":"","sources":["../../../src/metrics/MeterProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter, MeterOptions } from './Meter';\n\n/**\n * A registry for creating named {@link Meter}s.\n */\nexport interface MeterProvider {\n /**\n * Returns a Meter, creating one if one with the given name, version, and\n * schemaUrl pair is not already created.\n *\n * @param name The name of the meter or instrumentation library.\n * @param version The version of the meter or instrumentation library.\n * @param options The options of the meter or instrumentation library.\n * @returns Meter A Meter with the given name and version\n */\n getMeter(name: string, version?: string, options?: MeterOptions): Meter;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Metric.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Metric.d.ts new file mode 100644 index 0000000..607b637 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Metric.d.ts @@ -0,0 +1,115 @@ +import { Attributes, AttributeValue } from '../common/Attributes'; +import { Context } from '../context/types'; +import { BatchObservableResult, ObservableResult } from './ObservableResult'; +/** + * Advisory options influencing aggregation configuration parameters. + * @experimental + */ +export interface MetricAdvice { + /** + * Hint the explicit bucket boundaries for SDK if the metric is been + * aggregated with a HistogramAggregator. + */ + explicitBucketBoundaries?: number[]; +} +/** + * Options needed for metric creation + */ +export interface MetricOptions { + /** + * The description of the Metric. + * @default '' + */ + description?: string; + /** + * The unit of the Metric values. + * @default '' + */ + unit?: string; + /** + * Indicates the type of the recorded value. + * @default {@link ValueType.DOUBLE} + */ + valueType?: ValueType; + /** + * The advice influencing aggregation configuration parameters. + * @experimental + */ + advice?: MetricAdvice; +} +/** The Type of value. It describes how the data is reported. */ +export declare enum ValueType { + INT = 0, + DOUBLE = 1 +} +/** + * Counter is the most common synchronous instrument. This instrument supports + * an `Add(increment)` function for reporting a sum, and is restricted to + * non-negative increments. The default aggregation is Sum, as for any additive + * instrument. + * + * Example uses for Counter: + *
                    + *
                  1. count the number of bytes received.
                  2. + *
                  3. count the number of requests completed.
                  4. + *
                  5. count the number of accounts created.
                  6. + *
                  7. count the number of checkpoints run.
                  8. + *
                  9. count the number of 5xx errors.
                  10. + *
                      + */ +export interface Counter { + /** + * Increment value of counter by the input. Inputs must not be negative. + */ + add(value: number, attributes?: AttributesTypes, context?: Context): void; +} +export interface UpDownCounter { + /** + * Increment value of counter by the input. Inputs may be negative. + */ + add(value: number, attributes?: AttributesTypes, context?: Context): void; +} +export interface Gauge { + /** + * Records a measurement. + */ + record(value: number, attributes?: AttributesTypes, context?: Context): void; +} +export interface Histogram { + /** + * Records a measurement. Value of the measurement must not be negative. + */ + record(value: number, attributes?: AttributesTypes, context?: Context): void; +} +/** + * @deprecated please use {@link Attributes} + */ +export declare type MetricAttributes = Attributes; +/** + * @deprecated please use {@link AttributeValue} + */ +export declare type MetricAttributeValue = AttributeValue; +/** + * The observable callback for Observable instruments. + */ +export declare type ObservableCallback = (observableResult: ObservableResult) => void | Promise; +/** + * The observable callback for a batch of Observable instruments. + */ +export declare type BatchObservableCallback = (observableResult: BatchObservableResult) => void | Promise; +export interface Observable { + /** + * Sets up a function that will be called whenever a metric collection is initiated. + * + * If the function is already in the list of callbacks for this Observable, the function is not added a second time. + */ + addCallback(callback: ObservableCallback): void; + /** + * Removes a callback previously registered with {@link Observable.addCallback}. + */ + removeCallback(callback: ObservableCallback): void; +} +export declare type ObservableCounter = Observable; +export declare type ObservableUpDownCounter = Observable; +export declare type ObservableGauge = Observable; +//# sourceMappingURL=Metric.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Metric.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Metric.js new file mode 100644 index 0000000..4966c3d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Metric.js @@ -0,0 +1,25 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueType = void 0; +/** The Type of value. It describes how the data is reported. */ +var ValueType; +(function (ValueType) { + ValueType[ValueType["INT"] = 0] = "INT"; + ValueType[ValueType["DOUBLE"] = 1] = "DOUBLE"; +})(ValueType = exports.ValueType || (exports.ValueType = {})); +//# sourceMappingURL=Metric.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Metric.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Metric.js.map new file mode 100644 index 0000000..db16884 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/Metric.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Metric.js","sourceRoot":"","sources":["../../../src/metrics/Metric.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AA+CH,gEAAgE;AAChE,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,uCAAG,CAAA;IACH,6CAAM,CAAA;AACR,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, AttributeValue } from '../common/Attributes';\nimport { Context } from '../context/types';\nimport { BatchObservableResult, ObservableResult } from './ObservableResult';\n\n/**\n * Advisory options influencing aggregation configuration parameters.\n * @experimental\n */\nexport interface MetricAdvice {\n /**\n * Hint the explicit bucket boundaries for SDK if the metric is been\n * aggregated with a HistogramAggregator.\n */\n explicitBucketBoundaries?: number[];\n}\n\n/**\n * Options needed for metric creation\n */\nexport interface MetricOptions {\n /**\n * The description of the Metric.\n * @default ''\n */\n description?: string;\n\n /**\n * The unit of the Metric values.\n * @default ''\n */\n unit?: string;\n\n /**\n * Indicates the type of the recorded value.\n * @default {@link ValueType.DOUBLE}\n */\n valueType?: ValueType;\n\n /**\n * The advice influencing aggregation configuration parameters.\n * @experimental\n */\n advice?: MetricAdvice;\n}\n\n/** The Type of value. It describes how the data is reported. */\nexport enum ValueType {\n INT,\n DOUBLE,\n}\n\n/**\n * Counter is the most common synchronous instrument. This instrument supports\n * an `Add(increment)` function for reporting a sum, and is restricted to\n * non-negative increments. The default aggregation is Sum, as for any additive\n * instrument.\n *\n * Example uses for Counter:\n *
                        \n *
                      1. count the number of bytes received.
                      2. \n *
                      3. count the number of requests completed.
                      4. \n *
                      5. count the number of accounts created.
                      6. \n *
                      7. count the number of checkpoints run.
                      8. \n *
                      9. count the number of 5xx errors.
                      10. \n *
                          \n */\nexport interface Counter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Increment value of counter by the input. Inputs must not be negative.\n */\n add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface UpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Increment value of counter by the input. Inputs may be negative.\n */\n add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface Gauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Records a measurement.\n */\n record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface Histogram<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Records a measurement. Value of the measurement must not be negative.\n */\n record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @deprecated please use {@link Attributes}\n */\nexport type MetricAttributes = Attributes;\n\n/**\n * @deprecated please use {@link AttributeValue}\n */\nexport type MetricAttributeValue = AttributeValue;\n\n/**\n * The observable callback for Observable instruments.\n */\nexport type ObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n observableResult: ObservableResult\n) => void | Promise;\n\n/**\n * The observable callback for a batch of Observable instruments.\n */\nexport type BatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n observableResult: BatchObservableResult\n) => void | Promise;\n\nexport interface Observable<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Sets up a function that will be called whenever a metric collection is initiated.\n *\n * If the function is already in the list of callbacks for this Observable, the function is not added a second time.\n */\n addCallback(callback: ObservableCallback): void;\n\n /**\n * Removes a callback previously registered with {@link Observable.addCallback}.\n */\n removeCallback(callback: ObservableCallback): void;\n}\n\nexport type ObservableCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\nexport type ObservableUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\nexport type ObservableGauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.d.ts new file mode 100644 index 0000000..bbefa9a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.d.ts @@ -0,0 +1,82 @@ +import { Meter } from './Meter'; +import { BatchObservableCallback, Counter, Gauge, Histogram, MetricAttributes, MetricOptions, Observable, ObservableCallback, ObservableCounter, ObservableGauge, ObservableUpDownCounter, UpDownCounter } from './Metric'; +/** + * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses + * constant NoopMetrics for all of its methods. + */ +export declare class NoopMeter implements Meter { + constructor(); + /** + * @see {@link Meter.createGauge} + */ + createGauge(_name: string, _options?: MetricOptions): Gauge; + /** + * @see {@link Meter.createHistogram} + */ + createHistogram(_name: string, _options?: MetricOptions): Histogram; + /** + * @see {@link Meter.createCounter} + */ + createCounter(_name: string, _options?: MetricOptions): Counter; + /** + * @see {@link Meter.createUpDownCounter} + */ + createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter; + /** + * @see {@link Meter.createObservableGauge} + */ + createObservableGauge(_name: string, _options?: MetricOptions): ObservableGauge; + /** + * @see {@link Meter.createObservableCounter} + */ + createObservableCounter(_name: string, _options?: MetricOptions): ObservableCounter; + /** + * @see {@link Meter.createObservableUpDownCounter} + */ + createObservableUpDownCounter(_name: string, _options?: MetricOptions): ObservableUpDownCounter; + /** + * @see {@link Meter.addBatchObservableCallback} + */ + addBatchObservableCallback(_callback: BatchObservableCallback, _observables: Observable[]): void; + /** + * @see {@link Meter.removeBatchObservableCallback} + */ + removeBatchObservableCallback(_callback: BatchObservableCallback): void; +} +export declare class NoopMetric { +} +export declare class NoopCounterMetric extends NoopMetric implements Counter { + add(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopUpDownCounterMetric extends NoopMetric implements UpDownCounter { + add(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopGaugeMetric extends NoopMetric implements Gauge { + record(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopHistogramMetric extends NoopMetric implements Histogram { + record(_value: number, _attributes: MetricAttributes): void; +} +export declare class NoopObservableMetric { + addCallback(_callback: ObservableCallback): void; + removeCallback(_callback: ObservableCallback): void; +} +export declare class NoopObservableCounterMetric extends NoopObservableMetric implements ObservableCounter { +} +export declare class NoopObservableGaugeMetric extends NoopObservableMetric implements ObservableGauge { +} +export declare class NoopObservableUpDownCounterMetric extends NoopObservableMetric implements ObservableUpDownCounter { +} +export declare const NOOP_METER: NoopMeter; +export declare const NOOP_COUNTER_METRIC: NoopCounterMetric; +export declare const NOOP_GAUGE_METRIC: NoopGaugeMetric; +export declare const NOOP_HISTOGRAM_METRIC: NoopHistogramMetric; +export declare const NOOP_UP_DOWN_COUNTER_METRIC: NoopUpDownCounterMetric; +export declare const NOOP_OBSERVABLE_COUNTER_METRIC: NoopObservableCounterMetric; +export declare const NOOP_OBSERVABLE_GAUGE_METRIC: NoopObservableGaugeMetric; +export declare const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC: NoopObservableUpDownCounterMetric; +/** + * Create a no-op Meter + */ +export declare function createNoopMeter(): Meter; +//# sourceMappingURL=NoopMeter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js new file mode 100644 index 0000000..d40ef03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js @@ -0,0 +1,127 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/** + * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses + * constant NoopMetrics for all of its methods. + */ +class NoopMeter { + constructor() { } + /** + * @see {@link Meter.createGauge} + */ + createGauge(_name, _options) { + return exports.NOOP_GAUGE_METRIC; + } + /** + * @see {@link Meter.createHistogram} + */ + createHistogram(_name, _options) { + return exports.NOOP_HISTOGRAM_METRIC; + } + /** + * @see {@link Meter.createCounter} + */ + createCounter(_name, _options) { + return exports.NOOP_COUNTER_METRIC; + } + /** + * @see {@link Meter.createUpDownCounter} + */ + createUpDownCounter(_name, _options) { + return exports.NOOP_UP_DOWN_COUNTER_METRIC; + } + /** + * @see {@link Meter.createObservableGauge} + */ + createObservableGauge(_name, _options) { + return exports.NOOP_OBSERVABLE_GAUGE_METRIC; + } + /** + * @see {@link Meter.createObservableCounter} + */ + createObservableCounter(_name, _options) { + return exports.NOOP_OBSERVABLE_COUNTER_METRIC; + } + /** + * @see {@link Meter.createObservableUpDownCounter} + */ + createObservableUpDownCounter(_name, _options) { + return exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC; + } + /** + * @see {@link Meter.addBatchObservableCallback} + */ + addBatchObservableCallback(_callback, _observables) { } + /** + * @see {@link Meter.removeBatchObservableCallback} + */ + removeBatchObservableCallback(_callback) { } +} +exports.NoopMeter = NoopMeter; +class NoopMetric { +} +exports.NoopMetric = NoopMetric; +class NoopCounterMetric extends NoopMetric { + add(_value, _attributes) { } +} +exports.NoopCounterMetric = NoopCounterMetric; +class NoopUpDownCounterMetric extends NoopMetric { + add(_value, _attributes) { } +} +exports.NoopUpDownCounterMetric = NoopUpDownCounterMetric; +class NoopGaugeMetric extends NoopMetric { + record(_value, _attributes) { } +} +exports.NoopGaugeMetric = NoopGaugeMetric; +class NoopHistogramMetric extends NoopMetric { + record(_value, _attributes) { } +} +exports.NoopHistogramMetric = NoopHistogramMetric; +class NoopObservableMetric { + addCallback(_callback) { } + removeCallback(_callback) { } +} +exports.NoopObservableMetric = NoopObservableMetric; +class NoopObservableCounterMetric extends NoopObservableMetric { +} +exports.NoopObservableCounterMetric = NoopObservableCounterMetric; +class NoopObservableGaugeMetric extends NoopObservableMetric { +} +exports.NoopObservableGaugeMetric = NoopObservableGaugeMetric; +class NoopObservableUpDownCounterMetric extends NoopObservableMetric { +} +exports.NoopObservableUpDownCounterMetric = NoopObservableUpDownCounterMetric; +exports.NOOP_METER = new NoopMeter(); +// Synchronous instruments +exports.NOOP_COUNTER_METRIC = new NoopCounterMetric(); +exports.NOOP_GAUGE_METRIC = new NoopGaugeMetric(); +exports.NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric(); +exports.NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric(); +// Asynchronous instruments +exports.NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric(); +exports.NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric(); +exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric(); +/** + * Create a no-op Meter + */ +function createNoopMeter() { + return exports.NOOP_METER; +} +exports.createNoopMeter = createNoopMeter; +//# sourceMappingURL=NoopMeter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js.map new file mode 100644 index 0000000..512d5fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopMeter.js","sourceRoot":"","sources":["../../../src/metrics/NoopMeter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAkBH;;;GAGG;AACH,MAAa,SAAS;IACpB,gBAAe,CAAC;IAEhB;;OAEG;IACH,WAAW,CAAC,KAAa,EAAE,QAAwB;QACjD,OAAO,yBAAiB,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAa,EAAE,QAAwB;QACrD,OAAO,6BAAqB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAa,EAAE,QAAwB;QACnD,OAAO,2BAAmB,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,KAAa,EAAE,QAAwB;QACzD,OAAO,mCAA2B,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,qBAAqB,CACnB,KAAa,EACb,QAAwB;QAExB,OAAO,oCAA4B,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,uBAAuB,CACrB,KAAa,EACb,QAAwB;QAExB,OAAO,sCAA8B,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,6BAA6B,CAC3B,KAAa,EACb,QAAwB;QAExB,OAAO,8CAAsC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,0BAA0B,CACxB,SAAkC,EAClC,YAA0B,IACnB,CAAC;IAEV;;OAEG;IACH,6BAA6B,CAAC,SAAkC,IAAS,CAAC;CAC3E;AAzED,8BAyEC;AAED,MAAa,UAAU;CAAG;AAA1B,gCAA0B;AAE1B,MAAa,iBAAkB,SAAQ,UAAU;IAC/C,GAAG,CAAC,MAAc,EAAE,WAA6B,IAAS,CAAC;CAC5D;AAFD,8CAEC;AAED,MAAa,uBACX,SAAQ,UAAU;IAGlB,GAAG,CAAC,MAAc,EAAE,WAA6B,IAAS,CAAC;CAC5D;AALD,0DAKC;AAED,MAAa,eAAgB,SAAQ,UAAU;IAC7C,MAAM,CAAC,MAAc,EAAE,WAA6B,IAAS,CAAC;CAC/D;AAFD,0CAEC;AAED,MAAa,mBAAoB,SAAQ,UAAU;IACjD,MAAM,CAAC,MAAc,EAAE,WAA6B,IAAS,CAAC;CAC/D;AAFD,kDAEC;AAED,MAAa,oBAAoB;IAC/B,WAAW,CAAC,SAA6B,IAAG,CAAC;IAE7C,cAAc,CAAC,SAA6B,IAAG,CAAC;CACjD;AAJD,oDAIC;AAED,MAAa,2BACX,SAAQ,oBAAoB;CACG;AAFjC,kEAEiC;AAEjC,MAAa,yBACX,SAAQ,oBAAoB;CACC;AAF/B,8DAE+B;AAE/B,MAAa,iCACX,SAAQ,oBAAoB;CACS;AAFvC,8EAEuC;AAE1B,QAAA,UAAU,GAAG,IAAI,SAAS,EAAE,CAAC;AAE1C,0BAA0B;AACb,QAAA,mBAAmB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC9C,QAAA,iBAAiB,GAAG,IAAI,eAAe,EAAE,CAAC;AAC1C,QAAA,qBAAqB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAClD,QAAA,2BAA2B,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAEzE,2BAA2B;AACd,QAAA,8BAA8B,GAAG,IAAI,2BAA2B,EAAE,CAAC;AACnE,QAAA,4BAA4B,GAAG,IAAI,yBAAyB,EAAE,CAAC;AAC/D,QAAA,sCAAsC,GACjD,IAAI,iCAAiC,EAAE,CAAC;AAE1C;;GAEG;AACH,SAAgB,eAAe;IAC7B,OAAO,kBAAU,CAAC;AACpB,CAAC;AAFD,0CAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter } from './Meter';\nimport {\n BatchObservableCallback,\n Counter,\n Gauge,\n Histogram,\n MetricAttributes,\n MetricOptions,\n Observable,\n ObservableCallback,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n} from './Metric';\n\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nexport class NoopMeter implements Meter {\n constructor() {}\n\n /**\n * @see {@link Meter.createGauge}\n */\n createGauge(_name: string, _options?: MetricOptions): Gauge {\n return NOOP_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name: string, _options?: MetricOptions): Histogram {\n return NOOP_HISTOGRAM_METRIC;\n }\n\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name: string, _options?: MetricOptions): Counter {\n return NOOP_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter {\n return NOOP_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(\n _name: string,\n _options?: MetricOptions\n ): ObservableGauge {\n return NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableCounter {\n return NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableUpDownCounter {\n return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(\n _callback: BatchObservableCallback,\n _observables: Observable[]\n ): void {}\n\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback: BatchObservableCallback): void {}\n}\n\nexport class NoopMetric {}\n\nexport class NoopCounterMetric extends NoopMetric implements Counter {\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopUpDownCounterMetric\n extends NoopMetric\n implements UpDownCounter\n{\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopGaugeMetric extends NoopMetric implements Gauge {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopHistogramMetric extends NoopMetric implements Histogram {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopObservableMetric {\n addCallback(_callback: ObservableCallback) {}\n\n removeCallback(_callback: ObservableCallback) {}\n}\n\nexport class NoopObservableCounterMetric\n extends NoopObservableMetric\n implements ObservableCounter {}\n\nexport class NoopObservableGaugeMetric\n extends NoopObservableMetric\n implements ObservableGauge {}\n\nexport class NoopObservableUpDownCounterMetric\n extends NoopObservableMetric\n implements ObservableUpDownCounter {}\n\nexport const NOOP_METER = new NoopMeter();\n\n// Synchronous instruments\nexport const NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexport const NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexport const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexport const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n\n// Asynchronous instruments\nexport const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexport const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexport const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC =\n new NoopObservableUpDownCounterMetric();\n\n/**\n * Create a no-op Meter\n */\nexport function createNoopMeter(): Meter {\n return NOOP_METER;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.d.ts new file mode 100644 index 0000000..8b51bc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.d.ts @@ -0,0 +1,11 @@ +import { Meter, MeterOptions } from './Meter'; +import { MeterProvider } from './MeterProvider'; +/** + * An implementation of the {@link MeterProvider} which returns an impotent Meter + * for all calls to `getMeter` + */ +export declare class NoopMeterProvider implements MeterProvider { + getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter; +} +export declare const NOOP_METER_PROVIDER: NoopMeterProvider; +//# sourceMappingURL=NoopMeterProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js new file mode 100644 index 0000000..b1c1cc0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js @@ -0,0 +1,31 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NOOP_METER_PROVIDER = exports.NoopMeterProvider = void 0; +const NoopMeter_1 = require("./NoopMeter"); +/** + * An implementation of the {@link MeterProvider} which returns an impotent Meter + * for all calls to `getMeter` + */ +class NoopMeterProvider { + getMeter(_name, _version, _options) { + return NoopMeter_1.NOOP_METER; + } +} +exports.NoopMeterProvider = NoopMeterProvider; +exports.NOOP_METER_PROVIDER = new NoopMeterProvider(); +//# sourceMappingURL=NoopMeterProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js.map new file mode 100644 index 0000000..66117d0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopMeterProvider.js","sourceRoot":"","sources":["../../../src/metrics/NoopMeterProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,2CAAyC;AAEzC;;;GAGG;AACH,MAAa,iBAAiB;IAC5B,QAAQ,CAAC,KAAa,EAAE,QAAiB,EAAE,QAAuB;QAChE,OAAO,sBAAU,CAAC;IACpB,CAAC;CACF;AAJD,8CAIC;AAEY,QAAA,mBAAmB,GAAG,IAAI,iBAAiB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Meter, MeterOptions } from './Meter';\nimport { MeterProvider } from './MeterProvider';\nimport { NOOP_METER } from './NoopMeter';\n\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nexport class NoopMeterProvider implements MeterProvider {\n getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter {\n return NOOP_METER;\n }\n}\n\nexport const NOOP_METER_PROVIDER = new NoopMeterProvider();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.d.ts new file mode 100644 index 0000000..26563f9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.d.ts @@ -0,0 +1,31 @@ +import { MetricAttributes, Observable } from './Metric'; +/** + * Interface that is being used in callback function for Observable Metric. + */ +export interface ObservableResult { + /** + * Observe a measurement of the value associated with the given attributes. + * + * @param value The value to be observed. + * @param attributes The attributes associated with the value. If more than + * one values associated with the same attributes values, SDK may pick the + * last one or simply drop the entire observable result. + */ + observe(this: ObservableResult, value: number, attributes?: AttributesTypes): void; +} +/** + * Interface that is being used in batch observable callback function. + */ +export interface BatchObservableResult { + /** + * Observe a measurement of the value associated with the given attributes. + * + * @param metric The observable metric to be observed. + * @param value The value to be observed. + * @param attributes The attributes associated with the value. If more than + * one values associated with the same attributes values, SDK may pick the + * last one or simply drop the entire observable result. + */ + observe(this: BatchObservableResult, metric: Observable, value: number, attributes?: AttributesTypes): void; +} +//# sourceMappingURL=ObservableResult.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.js new file mode 100644 index 0000000..7e5cbd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=ObservableResult.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.js.map new file mode 100644 index 0000000..450ef74 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ObservableResult.js","sourceRoot":"","sources":["../../../src/metrics/ObservableResult.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { MetricAttributes, Observable } from './Metric';\n\n/**\n * Interface that is being used in callback function for Observable Metric.\n */\nexport interface ObservableResult<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Observe a measurement of the value associated with the given attributes.\n *\n * @param value The value to be observed.\n * @param attributes The attributes associated with the value. If more than\n * one values associated with the same attributes values, SDK may pick the\n * last one or simply drop the entire observable result.\n */\n observe(\n this: ObservableResult,\n value: number,\n attributes?: AttributesTypes\n ): void;\n}\n\n/**\n * Interface that is being used in batch observable callback function.\n */\nexport interface BatchObservableResult<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Observe a measurement of the value associated with the given attributes.\n *\n * @param metric The observable metric to be observed.\n * @param value The value to be observed.\n * @param attributes The attributes associated with the value. If more than\n * one values associated with the same attributes values, SDK may pick the\n * last one or simply drop the entire observable result.\n */\n observe(\n this: BatchObservableResult,\n metric: Observable,\n value: number,\n attributes?: AttributesTypes\n ): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.d.ts new file mode 100644 index 0000000..e73fd73 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.d.ts @@ -0,0 +1,10 @@ +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js new file mode 100644 index 0000000..15c8d21 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js @@ -0,0 +1,38 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._globalThis = void 0; +// Updates to this file should also be replicated to @opentelemetry/core too. +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef +exports._globalThis = typeof globalThis === 'object' + ? globalThis + : typeof self === 'object' + ? self + : typeof window === 'object' + ? window + : typeof global === 'object' + ? global + : {}; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js.map new file mode 100644 index 0000000..1c02509 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/browser/globalThis.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6EAA6E;AAE7E;;;;;;GAMG;AAEH,gEAAgE;AAChE,8EAA8E;AACjE,QAAA,WAAW,GACtB,OAAO,UAAU,KAAK,QAAQ;IAC5B,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;QAC1B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;YAC5B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;gBAC5B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAE,EAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Updates to this file should also be replicated to @opentelemetry/core too.\n\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - (When all else fails)\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef\nexport const _globalThis: typeof globalThis =\n typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : ({} as typeof globalThis);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/index.d.ts new file mode 100644 index 0000000..ba20e12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/index.d.ts @@ -0,0 +1,2 @@ +export * from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/index.js new file mode 100644 index 0000000..99fd57c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/index.js @@ -0,0 +1,29 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./globalThis"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/index.js.map new file mode 100644 index 0000000..5a406a9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;AAEH,+CAA6B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport * from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/index.d.ts new file mode 100644 index 0000000..90595da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/index.d.ts @@ -0,0 +1,2 @@ +export * from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/index.js new file mode 100644 index 0000000..33b834d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/index.js @@ -0,0 +1,29 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./node"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/index.js.map new file mode 100644 index 0000000..bc13701 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;AAEH,yCAAuB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport * from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.d.ts new file mode 100644 index 0000000..e3c83e5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.d.ts @@ -0,0 +1,3 @@ +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js new file mode 100644 index 0000000..82c4e39 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._globalThis = void 0; +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line node/no-unsupported-features/es-builtins +exports._globalThis = typeof globalThis === 'object' ? globalThis : global; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js.map new file mode 100644 index 0000000..2f2ca82 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/node/globalThis.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,gEAAgE;AAChE,oEAAoE;AACvD,QAAA,WAAW,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/index.d.ts new file mode 100644 index 0000000..ba20e12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/index.d.ts @@ -0,0 +1,2 @@ +export * from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/index.js new file mode 100644 index 0000000..99fd57c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/index.js @@ -0,0 +1,29 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./globalThis"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/index.js.map new file mode 100644 index 0000000..95561e9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;AAEH,+CAA6B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport * from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation-api.d.ts new file mode 100644 index 0000000..e12b51b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation-api.d.ts @@ -0,0 +1,4 @@ +import { PropagationAPI } from './api/propagation'; +/** Entrypoint for propagation API */ +export declare const propagation: PropagationAPI; +//# sourceMappingURL=propagation-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation-api.js new file mode 100644 index 0000000..f014fb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation-api.js @@ -0,0 +1,24 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.propagation = void 0; +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +const propagation_1 = require("./api/propagation"); +/** Entrypoint for propagation API */ +exports.propagation = propagation_1.PropagationAPI.getInstance(); +//# sourceMappingURL=propagation-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation-api.js.map new file mode 100644 index 0000000..ff17b74 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"propagation-api.js","sourceRoot":"","sources":["../../src/propagation-api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,mDAAmD;AACnD,qCAAqC;AACxB,QAAA,WAAW,GAAG,4BAAc,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { PropagationAPI } from './api/propagation';\n/** Entrypoint for propagation API */\nexport const propagation = PropagationAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.d.ts new file mode 100644 index 0000000..398021f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.d.ts @@ -0,0 +1,13 @@ +import { Context } from '../context/types'; +import { TextMapPropagator } from './TextMapPropagator'; +/** + * No-op implementations of {@link TextMapPropagator}. + */ +export declare class NoopTextMapPropagator implements TextMapPropagator { + /** Noop inject function does nothing */ + inject(_context: Context, _carrier: unknown): void; + /** Noop extract function does nothing and returns the input context */ + extract(context: Context, _carrier: unknown): Context; + fields(): string[]; +} +//# sourceMappingURL=NoopTextMapPropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js new file mode 100644 index 0000000..3f39582 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js @@ -0,0 +1,34 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NoopTextMapPropagator = void 0; +/** + * No-op implementations of {@link TextMapPropagator}. + */ +class NoopTextMapPropagator { + /** Noop inject function does nothing */ + inject(_context, _carrier) { } + /** Noop extract function does nothing and returns the input context */ + extract(context, _carrier) { + return context; + } + fields() { + return []; + } +} +exports.NoopTextMapPropagator = NoopTextMapPropagator; +//# sourceMappingURL=NoopTextMapPropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js.map new file mode 100644 index 0000000..dfd01aa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopTextMapPropagator.js","sourceRoot":"","sources":["../../../src/propagation/NoopTextMapPropagator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH;;GAEG;AACH,MAAa,qBAAqB;IAChC,wCAAwC;IACxC,MAAM,CAAC,QAAiB,EAAE,QAAiB,IAAS,CAAC;IACrD,uEAAuE;IACvE,OAAO,CAAC,OAAgB,EAAE,QAAiB;QACzC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM;QACJ,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAVD,sDAUC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { TextMapPropagator } from './TextMapPropagator';\n\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nexport class NoopTextMapPropagator implements TextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context: Context, _carrier: unknown): void {}\n /** Noop extract function does nothing and returns the input context */\n extract(context: Context, _carrier: unknown): Context {\n return context;\n }\n fields(): string[] {\n return [];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.d.ts new file mode 100644 index 0000000..dc39367 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.d.ts @@ -0,0 +1,84 @@ +import { Context } from '../context/types'; +/** + * Injects `Context` into and extracts it from carriers that travel + * in-band across process boundaries. Encoding is expected to conform to the + * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request + * headers. + * + * The carrier of propagated data on both the client (injector) and server + * (extractor) side is usually an object such as http headers. Propagation is + * usually implemented via library-specific request interceptors, where the + * client-side injects values and the server-side extracts them. + */ +export interface TextMapPropagator { + /** + * Injects values from a given `Context` into a carrier. + * + * OpenTelemetry defines a common set of format values (TextMapPropagator), + * and each has an expected `carrier` type. + * + * @param context the Context from which to extract values to transmit over + * the wire. + * @param carrier the carrier of propagation fields, such as http request + * headers. + * @param setter an optional {@link TextMapSetter}. If undefined, values will be + * set by direct object assignment. + */ + inject(context: Context, carrier: Carrier, setter: TextMapSetter): void; + /** + * Given a `Context` and a carrier, extract context values from a + * carrier and return a new context, created from the old context, with the + * extracted values. + * + * @param context the Context from which to extract values to transmit over + * the wire. + * @param carrier the carrier of propagation fields, such as http request + * headers. + * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all + * own properties, and keys will be accessed by direct object access. + */ + extract(context: Context, carrier: Carrier, getter: TextMapGetter): Context; + /** + * Return a list of all fields which may be used by the propagator. + */ + fields(): string[]; +} +/** + * A setter is specified by the caller to define a specific method + * to set key/value pairs on the carrier within a propagator. + */ +export interface TextMapSetter { + /** + * Callback used to set a key/value pair on an object. + * + * Should be called by the propagator each time a key/value pair + * should be set, and should set that key/value pair on the propagator. + * + * @param carrier object or class which carries key/value pairs + * @param key string key to modify + * @param value value to be set to the key on the carrier + */ + set(carrier: Carrier, key: string, value: string): void; +} +/** + * A getter is specified by the caller to define a specific method + * to get the value of a key from a carrier. + */ +export interface TextMapGetter { + /** + * Get a list of all keys available on the carrier. + * + * @param carrier + */ + keys(carrier: Carrier): string[]; + /** + * Get the value of a specific key from the carrier. + * + * @param carrier + * @param key + */ + get(carrier: Carrier, key: string): undefined | string | string[]; +} +export declare const defaultTextMapGetter: TextMapGetter; +export declare const defaultTextMapSetter: TextMapSetter; +//# sourceMappingURL=TextMapPropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js new file mode 100644 index 0000000..513f33c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js @@ -0,0 +1,41 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultTextMapSetter = exports.defaultTextMapGetter = void 0; +exports.defaultTextMapGetter = { + get(carrier, key) { + if (carrier == null) { + return undefined; + } + return carrier[key]; + }, + keys(carrier) { + if (carrier == null) { + return []; + } + return Object.keys(carrier); + }, +}; +exports.defaultTextMapSetter = { + set(carrier, key, value) { + if (carrier == null) { + return; + } + carrier[key] = value; + }, +}; +//# sourceMappingURL=TextMapPropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js.map new file mode 100644 index 0000000..f233435 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TextMapPropagator.js","sourceRoot":"","sources":["../../../src/propagation/TextMapPropagator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAkGU,QAAA,oBAAoB,GAAkB;IACjD,GAAG,CAAC,OAAO,EAAE,GAAG;QACd,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,OAAO;QACV,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO,EAAE,CAAC;SACX;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC;AAEW,QAAA,oBAAoB,GAAkB;IACjD,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK;QACrB,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO;SACR;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\n\n/**\n * Injects `Context` into and extracts it from carriers that travel\n * in-band across process boundaries. Encoding is expected to conform to the\n * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request\n * headers.\n *\n * The carrier of propagated data on both the client (injector) and server\n * (extractor) side is usually an object such as http headers. Propagation is\n * usually implemented via library-specific request interceptors, where the\n * client-side injects values and the server-side extracts them.\n */\nexport interface TextMapPropagator {\n /**\n * Injects values from a given `Context` into a carrier.\n *\n * OpenTelemetry defines a common set of format values (TextMapPropagator),\n * and each has an expected `carrier` type.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param setter an optional {@link TextMapSetter}. If undefined, values will be\n * set by direct object assignment.\n */\n inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter\n ): void;\n\n /**\n * Given a `Context` and a carrier, extract context values from a\n * carrier and return a new context, created from the old context, with the\n * extracted values.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all\n * own properties, and keys will be accessed by direct object access.\n */\n extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter\n ): Context;\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields(): string[];\n}\n\n/**\n * A setter is specified by the caller to define a specific method\n * to set key/value pairs on the carrier within a propagator.\n */\nexport interface TextMapSetter {\n /**\n * Callback used to set a key/value pair on an object.\n *\n * Should be called by the propagator each time a key/value pair\n * should be set, and should set that key/value pair on the propagator.\n *\n * @param carrier object or class which carries key/value pairs\n * @param key string key to modify\n * @param value value to be set to the key on the carrier\n */\n set(carrier: Carrier, key: string, value: string): void;\n}\n\n/**\n * A getter is specified by the caller to define a specific method\n * to get the value of a key from a carrier.\n */\nexport interface TextMapGetter {\n /**\n * Get a list of all keys available on the carrier.\n *\n * @param carrier\n */\n keys(carrier: Carrier): string[];\n\n /**\n * Get the value of a specific key from the carrier.\n *\n * @param carrier\n * @param key\n */\n get(carrier: Carrier, key: string): undefined | string | string[];\n}\n\nexport const defaultTextMapGetter: TextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\n\nexport const defaultTextMapSetter: TextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n\n carrier[key] = value;\n },\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace-api.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace-api.d.ts new file mode 100644 index 0000000..b4751a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace-api.d.ts @@ -0,0 +1,4 @@ +import { TraceAPI } from './api/trace'; +/** Entrypoint for trace API */ +export declare const trace: TraceAPI; +//# sourceMappingURL=trace-api.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace-api.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace-api.js new file mode 100644 index 0000000..c8bbe93 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace-api.js @@ -0,0 +1,24 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.trace = void 0; +// Split module-level variable definition into separate files to allow +// tree-shaking on each api instance. +const trace_1 = require("./api/trace"); +/** Entrypoint for trace API */ +exports.trace = trace_1.TraceAPI.getInstance(); +//# sourceMappingURL=trace-api.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace-api.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace-api.js.map new file mode 100644 index 0000000..2475b59 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace-api.js","sourceRoot":"","sources":["../../src/trace-api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,sEAAsE;AACtE,qCAAqC;AACrC,uCAAuC;AACvC,+BAA+B;AAClB,QAAA,KAAK,GAAG,gBAAQ,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport const trace = TraceAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.d.ts new file mode 100644 index 0000000..ce569f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.d.ts @@ -0,0 +1,28 @@ +import { Exception } from '../common/Exception'; +import { TimeInput } from '../common/Time'; +import { SpanAttributes } from './attributes'; +import { Span } from './span'; +import { SpanContext } from './span_context'; +import { SpanStatus } from './status'; +import { Link } from './link'; +/** + * The NonRecordingSpan is the default {@link Span} that is used when no Span + * implementation is available. All operations are no-op including context + * propagation. + */ +export declare class NonRecordingSpan implements Span { + private readonly _spanContext; + constructor(_spanContext?: SpanContext); + spanContext(): SpanContext; + setAttribute(_key: string, _value: unknown): this; + setAttributes(_attributes: SpanAttributes): this; + addEvent(_name: string, _attributes?: SpanAttributes): this; + addLink(_link: Link): this; + addLinks(_links: Link[]): this; + setStatus(_status: SpanStatus): this; + updateName(_name: string): this; + end(_endTime?: TimeInput): void; + isRecording(): boolean; + recordException(_exception: Exception, _time?: TimeInput): void; +} +//# sourceMappingURL=NonRecordingSpan.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js new file mode 100644 index 0000000..6d3e6ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js @@ -0,0 +1,69 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NonRecordingSpan = void 0; +const invalid_span_constants_1 = require("./invalid-span-constants"); +/** + * The NonRecordingSpan is the default {@link Span} that is used when no Span + * implementation is available. All operations are no-op including context + * propagation. + */ +class NonRecordingSpan { + constructor(_spanContext = invalid_span_constants_1.INVALID_SPAN_CONTEXT) { + this._spanContext = _spanContext; + } + // Returns a SpanContext. + spanContext() { + return this._spanContext; + } + // By default does nothing + setAttribute(_key, _value) { + return this; + } + // By default does nothing + setAttributes(_attributes) { + return this; + } + // By default does nothing + addEvent(_name, _attributes) { + return this; + } + addLink(_link) { + return this; + } + addLinks(_links) { + return this; + } + // By default does nothing + setStatus(_status) { + return this; + } + // By default does nothing + updateName(_name) { + return this; + } + // By default does nothing + end(_endTime) { } + // isRecording always returns false for NonRecordingSpan. + isRecording() { + return false; + } + // By default does nothing + recordException(_exception, _time) { } +} +exports.NonRecordingSpan = NonRecordingSpan; +//# sourceMappingURL=NonRecordingSpan.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js.map new file mode 100644 index 0000000..4465327 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NonRecordingSpan.js","sourceRoot":"","sources":["../../../src/trace/NonRecordingSpan.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH,qEAAgE;AAMhE;;;;GAIG;AACH,MAAa,gBAAgB;IAC3B,YACmB,eAA4B,6CAAoB;QAAhD,iBAAY,GAAZ,YAAY,CAAoC;IAChE,CAAC;IAEJ,yBAAyB;IACzB,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,0BAA0B;IAC1B,YAAY,CAAC,IAAY,EAAE,MAAe;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,aAAa,CAAC,WAA2B;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,QAAQ,CAAC,KAAa,EAAE,WAA4B;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,KAAW;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,SAAS,CAAC,OAAmB;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,GAAG,CAAC,QAAoB,IAAS,CAAC;IAElC,yDAAyD;IACzD,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,eAAe,CAAC,UAAqB,EAAE,KAAiB,IAAS,CAAC;CACnE;AArDD,4CAqDC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\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 */\nexport class NonRecordingSpan implements Span {\n constructor(\n private readonly _spanContext: SpanContext = INVALID_SPAN_CONTEXT\n ) {}\n\n // Returns a SpanContext.\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n // By default does nothing\n setAttribute(_key: string, _value: unknown): this {\n return this;\n }\n\n // By default does nothing\n setAttributes(_attributes: SpanAttributes): this {\n return this;\n }\n\n // By default does nothing\n addEvent(_name: string, _attributes?: SpanAttributes): this {\n return this;\n }\n\n addLink(_link: Link): this {\n return this;\n }\n\n addLinks(_links: Link[]): this {\n return this;\n }\n\n // By default does nothing\n setStatus(_status: SpanStatus): this {\n return this;\n }\n\n // By default does nothing\n updateName(_name: string): this {\n return this;\n }\n\n // By default does nothing\n end(_endTime?: TimeInput): void {}\n\n // isRecording always returns false for NonRecordingSpan.\n isRecording(): boolean {\n return false;\n }\n\n // By default does nothing\n recordException(_exception: Exception, _time?: TimeInput): void {}\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.d.ts new file mode 100644 index 0000000..0e059c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.d.ts @@ -0,0 +1,14 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanOptions } from './SpanOptions'; +import { Tracer } from './tracer'; +/** + * No-op implementations of {@link Tracer}. + */ +export declare class NoopTracer implements Tracer { + startSpan(name: string, options?: SpanOptions, context?: Context): Span; + startActiveSpan ReturnType>(name: string, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: SpanOptions | undefined, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: SpanOptions | undefined, ctx: Context | undefined, fn: F): ReturnType; +} +//# sourceMappingURL=NoopTracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js new file mode 100644 index 0000000..0a823aa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js @@ -0,0 +1,75 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NoopTracer = void 0; +const context_1 = require("../api/context"); +const context_utils_1 = require("../trace/context-utils"); +const NonRecordingSpan_1 = require("./NonRecordingSpan"); +const spancontext_utils_1 = require("./spancontext-utils"); +const contextApi = context_1.ContextAPI.getInstance(); +/** + * No-op implementations of {@link Tracer}. + */ +class NoopTracer { + // startSpan starts a noop span. + startSpan(name, options, context = contextApi.active()) { + const root = Boolean(options === null || options === void 0 ? void 0 : options.root); + if (root) { + return new NonRecordingSpan_1.NonRecordingSpan(); + } + const parentFromContext = context && (0, context_utils_1.getSpanContext)(context); + if (isSpanContext(parentFromContext) && + (0, spancontext_utils_1.isSpanContextValid)(parentFromContext)) { + return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext); + } + else { + return new NonRecordingSpan_1.NonRecordingSpan(); + } + } + startActiveSpan(name, arg2, arg3, arg4) { + let opts; + let ctx; + let fn; + if (arguments.length < 2) { + return; + } + else if (arguments.length === 2) { + fn = arg2; + } + else if (arguments.length === 3) { + opts = arg2; + fn = arg3; + } + else { + opts = arg2; + ctx = arg3; + fn = arg4; + } + const parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active(); + const span = this.startSpan(name, opts, parentContext); + const contextWithSpanSet = (0, context_utils_1.setSpan)(parentContext, span); + return contextApi.with(contextWithSpanSet, fn, undefined, span); + } +} +exports.NoopTracer = NoopTracer; +function isSpanContext(spanContext) { + return (typeof spanContext === 'object' && + typeof spanContext['spanId'] === 'string' && + typeof spanContext['traceId'] === 'string' && + typeof spanContext['traceFlags'] === 'number'); +} +//# sourceMappingURL=NoopTracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js.map new file mode 100644 index 0000000..7fde17d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopTracer.js","sourceRoot":"","sources":["../../../src/trace/NoopTracer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA4C;AAE5C,0DAAiE;AACjE,yDAAsD;AAEtD,2DAAyD;AAKzD,MAAM,UAAU,GAAG,oBAAU,CAAC,WAAW,EAAE,CAAC;AAE5C;;GAEG;AACH,MAAa,UAAU;IACrB,gCAAgC;IAChC,SAAS,CACP,IAAY,EACZ,OAAqB,EACrB,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE;QAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,mCAAgB,EAAE,CAAC;SAC/B;QAED,MAAM,iBAAiB,GAAG,OAAO,IAAI,IAAA,8BAAc,EAAC,OAAO,CAAC,CAAC;QAE7D,IACE,aAAa,CAAC,iBAAiB,CAAC;YAChC,IAAA,sCAAkB,EAAC,iBAAiB,CAAC,EACrC;YACA,OAAO,IAAI,mCAAgB,CAAC,iBAAiB,CAAC,CAAC;SAChD;aAAM;YACL,OAAO,IAAI,mCAAgB,EAAE,CAAC;SAC/B;IACH,CAAC;IAiBD,eAAe,CACb,IAAY,EACZ,IAAsB,EACtB,IAAkB,EAClB,IAAQ;QAER,IAAI,IAA6B,CAAC;QAClC,IAAI,GAAwB,CAAC;QAC7B,IAAI,EAAK,CAAC;QAEV,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,OAAO;SACR;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,EAAE,GAAG,IAAS,CAAC;SAChB;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,GAAG,IAA+B,CAAC;YACvC,EAAE,GAAG,IAAS,CAAC;SAChB;aAAM;YACL,IAAI,GAAG,IAA+B,CAAC;YACvC,GAAG,GAAG,IAA2B,CAAC;YAClC,EAAE,GAAG,IAAS,CAAC;SAChB;QAED,MAAM,aAAa,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,kBAAkB,GAAG,IAAA,uBAAO,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAExD,OAAO,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;CACF;AApED,gCAoEC;AAED,SAAS,aAAa,CAAC,WAAgB;IACrC,OAAO,CACL,OAAO,WAAW,KAAK,QAAQ;QAC/B,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,QAAQ;QACzC,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,QAAQ;QAC1C,OAAO,WAAW,CAAC,YAAY,CAAC,KAAK,QAAQ,CAC9C,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ContextAPI } from '../api/context';\nimport { Context } from '../context/types';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { isSpanContextValid } from './spancontext-utils';\nimport { SpanOptions } from './SpanOptions';\nimport { SpanContext } from './span_context';\nimport { Tracer } from './tracer';\n\nconst contextApi = ContextAPI.getInstance();\n\n/**\n * No-op implementations of {@link Tracer}.\n */\nexport class NoopTracer implements Tracer {\n // startSpan starts a noop span.\n startSpan(\n name: string,\n options?: SpanOptions,\n context = contextApi.active()\n ): Span {\n const root = Boolean(options?.root);\n if (root) {\n return new NonRecordingSpan();\n }\n\n const parentFromContext = context && getSpanContext(context);\n\n if (\n isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)\n ) {\n return new NonRecordingSpan(parentFromContext);\n } else {\n return new NonRecordingSpan();\n }\n }\n\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: SpanOptions | undefined,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: SpanOptions | undefined,\n ctx: Context | undefined,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | SpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: SpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as SpanOptions | undefined;\n ctx = arg3 as Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = setSpan(parentContext, span);\n\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\n\nfunction isSpanContext(spanContext: any): spanContext is SpanContext {\n return (\n typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number'\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.d.ts new file mode 100644 index 0000000..ec0fe79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.d.ts @@ -0,0 +1,13 @@ +import { Tracer } from './tracer'; +import { TracerOptions } from './tracer_options'; +import { TracerProvider } from './tracer_provider'; +/** + * An implementation of the {@link TracerProvider} which returns an impotent + * Tracer for all calls to `getTracer`. + * + * All operations are no-op. + */ +export declare class NoopTracerProvider implements TracerProvider { + getTracer(_name?: string, _version?: string, _options?: TracerOptions): Tracer; +} +//# sourceMappingURL=NoopTracerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js new file mode 100644 index 0000000..c9e08d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js @@ -0,0 +1,32 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NoopTracerProvider = void 0; +const NoopTracer_1 = require("./NoopTracer"); +/** + * An implementation of the {@link TracerProvider} which returns an impotent + * Tracer for all calls to `getTracer`. + * + * All operations are no-op. + */ +class NoopTracerProvider { + getTracer(_name, _version, _options) { + return new NoopTracer_1.NoopTracer(); + } +} +exports.NoopTracerProvider = NoopTracerProvider; +//# sourceMappingURL=NoopTracerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js.map new file mode 100644 index 0000000..c47b350 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopTracerProvider.js","sourceRoot":"","sources":["../../../src/trace/NoopTracerProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6CAA0C;AAK1C;;;;;GAKG;AACH,MAAa,kBAAkB;IAC7B,SAAS,CACP,KAAc,EACd,QAAiB,EACjB,QAAwB;QAExB,OAAO,IAAI,uBAAU,EAAE,CAAC;IAC1B,CAAC;CACF;AARD,gDAQC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NoopTracer } from './NoopTracer';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\nimport { TracerProvider } from './tracer_provider';\n\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 */\nexport class NoopTracerProvider implements TracerProvider {\n getTracer(\n _name?: string,\n _version?: string,\n _options?: TracerOptions\n ): Tracer {\n return new NoopTracer();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.d.ts new file mode 100644 index 0000000..116cc5c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.d.ts @@ -0,0 +1,27 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanOptions } from './SpanOptions'; +import { Tracer } from './tracer'; +import { TracerOptions } from './tracer_options'; +/** + * Proxy tracer provided by the proxy tracer provider + */ +export declare class ProxyTracer implements Tracer { + private _provider; + readonly name: string; + readonly version?: string | undefined; + readonly options?: TracerOptions | undefined; + private _delegate?; + constructor(_provider: TracerDelegator, name: string, version?: string | undefined, options?: TracerOptions | undefined); + startSpan(name: string, options?: SpanOptions, context?: Context): Span; + startActiveSpan unknown>(_name: string, _options: F | SpanOptions, _context?: F | Context, _fn?: F): ReturnType; + /** + * Try to get a tracer from the proxy tracer provider. + * If the proxy tracer provider has no delegate, return a noop tracer. + */ + private _getTracer; +} +export interface TracerDelegator { + getDelegateTracer(name: string, version?: string, options?: TracerOptions): Tracer | undefined; +} +//# sourceMappingURL=ProxyTracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js new file mode 100644 index 0000000..6677680 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js @@ -0,0 +1,55 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ProxyTracer = void 0; +const NoopTracer_1 = require("./NoopTracer"); +const NOOP_TRACER = new NoopTracer_1.NoopTracer(); +/** + * Proxy tracer provided by the proxy tracer provider + */ +class ProxyTracer { + constructor(_provider, name, version, options) { + this._provider = _provider; + this.name = name; + this.version = version; + this.options = options; + } + startSpan(name, options, context) { + return this._getTracer().startSpan(name, options, context); + } + startActiveSpan(_name, _options, _context, _fn) { + const tracer = this._getTracer(); + return Reflect.apply(tracer.startActiveSpan, tracer, arguments); + } + /** + * Try to get a tracer from the proxy tracer provider. + * If the proxy tracer provider has no delegate, return a noop tracer. + */ + _getTracer() { + if (this._delegate) { + return this._delegate; + } + const tracer = this._provider.getDelegateTracer(this.name, this.version, this.options); + if (!tracer) { + return NOOP_TRACER; + } + this._delegate = tracer; + return this._delegate; + } +} +exports.ProxyTracer = ProxyTracer; +//# sourceMappingURL=ProxyTracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js.map new file mode 100644 index 0000000..941125c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyTracer.js","sourceRoot":"","sources":["../../../src/trace/ProxyTracer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,6CAA0C;AAM1C,MAAM,WAAW,GAAG,IAAI,uBAAU,EAAE,CAAC;AAErC;;GAEG;AACH,MAAa,WAAW;IAItB,YACU,SAA0B,EAClB,IAAY,EACZ,OAAgB,EAChB,OAAuB;QAH/B,cAAS,GAAT,SAAS,CAAiB;QAClB,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAgB;IACtC,CAAC;IAEJ,SAAS,CAAC,IAAY,EAAE,OAAqB,EAAE,OAAiB;QAC9D,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,eAAe,CACb,KAAa,EACb,QAAyB,EACzB,QAAsB,EACtB,GAAO;QAEP,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACK,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAC7C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACb,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,WAAW,CAAC;SACpB;QAED,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AA/CD,kCA+CC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { NoopTracer } from './NoopTracer';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER = new NoopTracer();\n\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nexport class ProxyTracer implements Tracer {\n // When a real implementation is provided, this will be it\n private _delegate?: Tracer;\n\n constructor(\n private _provider: TracerDelegator,\n public readonly name: string,\n public readonly version?: string,\n public readonly options?: TracerOptions\n ) {}\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n return this._getTracer().startSpan(name, options, context);\n }\n\n startActiveSpan unknown>(\n _name: string,\n _options: F | SpanOptions,\n _context?: F | Context,\n _fn?: F\n ): ReturnType {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\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 private _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n\n const tracer = this._provider.getDelegateTracer(\n this.name,\n this.version,\n this.options\n );\n\n if (!tracer) {\n return NOOP_TRACER;\n }\n\n this._delegate = tracer;\n return this._delegate;\n }\n}\n\nexport interface TracerDelegator {\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.d.ts new file mode 100644 index 0000000..ee7eafa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.d.ts @@ -0,0 +1,25 @@ +import { Tracer } from './tracer'; +import { TracerProvider } from './tracer_provider'; +import { TracerOptions } from './tracer_options'; +/** + * Tracer provider which provides {@link ProxyTracer}s. + * + * Before a delegate is set, tracers provided are NoOp. + * When a delegate is set, traces are provided from the delegate. + * When a delegate is set after tracers have already been provided, + * all tracers already provided will use the provided delegate implementation. + */ +export declare class ProxyTracerProvider implements TracerProvider { + private _delegate?; + /** + * Get a {@link ProxyTracer} + */ + getTracer(name: string, version?: string, options?: TracerOptions): Tracer; + getDelegate(): TracerProvider; + /** + * Set the delegate tracer provider + */ + setDelegate(delegate: TracerProvider): void; + getDelegateTracer(name: string, version?: string, options?: TracerOptions): Tracer | undefined; +} +//# sourceMappingURL=ProxyTracerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js new file mode 100644 index 0000000..75ec910 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js @@ -0,0 +1,54 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ProxyTracerProvider = void 0; +const ProxyTracer_1 = require("./ProxyTracer"); +const NoopTracerProvider_1 = require("./NoopTracerProvider"); +const NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider(); +/** + * Tracer provider which provides {@link ProxyTracer}s. + * + * Before a delegate is set, tracers provided are NoOp. + * When a delegate is set, traces are provided from the delegate. + * When a delegate is set after tracers have already been provided, + * all tracers already provided will use the provided delegate implementation. + */ +class ProxyTracerProvider { + /** + * Get a {@link ProxyTracer} + */ + getTracer(name, version, options) { + var _a; + return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer_1.ProxyTracer(this, name, version, options)); + } + getDelegate() { + var _a; + return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER; + } + /** + * Set the delegate tracer provider + */ + setDelegate(delegate) { + this._delegate = delegate; + } + getDelegateTracer(name, version, options) { + var _a; + return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options); + } +} +exports.ProxyTracerProvider = ProxyTracerProvider; +//# sourceMappingURL=ProxyTracerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js.map new file mode 100644 index 0000000..682c255 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyTracerProvider.js","sourceRoot":"","sources":["../../../src/trace/ProxyTracerProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,+CAA4C;AAC5C,6DAA0D;AAG1D,MAAM,oBAAoB,GAAG,IAAI,uCAAkB,EAAE,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAa,mBAAmB;IAG9B;;OAEG;IACH,SAAS,CAAC,IAAY,EAAE,OAAgB,EAAE,OAAuB;;QAC/D,OAAO,CACL,MAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,mCAC9C,IAAI,yBAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED,WAAW;;QACT,OAAO,MAAA,IAAI,CAAC,SAAS,mCAAI,oBAAoB,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,iBAAiB,CACf,IAAY,EACZ,OAAgB,EAChB,OAAuB;;QAEvB,OAAO,MAAA,IAAI,CAAC,SAAS,0CAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF;AA/BD,kDA+BC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Tracer } from './tracer';\nimport { TracerProvider } from './tracer_provider';\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n\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 */\nexport class ProxyTracerProvider implements TracerProvider {\n private _delegate?: TracerProvider;\n\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer {\n return (\n this.getDelegateTracer(name, version, options) ??\n new ProxyTracer(this, name, version, options)\n );\n }\n\n getDelegate(): TracerProvider {\n return this._delegate ?? NOOP_TRACER_PROVIDER;\n }\n\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate: TracerProvider) {\n this._delegate = delegate;\n }\n\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined {\n return this._delegate?.getTracer(name, version, options);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/Sampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/Sampler.d.ts new file mode 100644 index 0000000..c847eaf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/Sampler.d.ts @@ -0,0 +1,31 @@ +import { Context } from '../context/types'; +import { SpanAttributes } from './attributes'; +import { Link } from './link'; +import { SamplingResult } from './SamplingResult'; +import { SpanKind } from './span_kind'; +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * This interface represent a sampler. Sampling is a mechanism to control the + * noise and overhead introduced by OpenTelemetry by reducing the number of + * samples of traces collected and sent to the backend. + */ +export interface Sampler { + /** + * Checks whether span needs to be created and tracked. + * + * @param context Parent Context which may contain a span. + * @param traceId of the span to be created. It can be different from the + * traceId in the {@link SpanContext}. Typically in situations when the + * span to be created starts a new trace. + * @param spanName of the span to be created. + * @param spanKind of the span to be created. + * @param attributes Initial set of SpanAttributes for the Span being constructed. + * @param links Collection of links that will be associated with the Span to + * be created. Typically useful for batch operations. + * @returns a {@link SamplingResult}. + */ + shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: SpanAttributes, links: Link[]): SamplingResult; + /** Returns the sampler name or short description with the configuration. */ + toString(): string; +} +//# sourceMappingURL=Sampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/Sampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/Sampler.js new file mode 100644 index 0000000..6034482 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/Sampler.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Sampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/Sampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/Sampler.js.map new file mode 100644 index 0000000..83ae054 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/Sampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Sampler.js","sourceRoot":"","sources":["../../../src/trace/Sampler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { SpanAttributes } from './attributes';\nimport { Link } from './link';\nimport { SamplingResult } from './SamplingResult';\nimport { SpanKind } from './span_kind';\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * This interface represent a sampler. Sampling is a mechanism to control the\n * noise and overhead introduced by OpenTelemetry by reducing the number of\n * samples of traces collected and sent to the backend.\n */\nexport interface Sampler {\n /**\n * Checks whether span needs to be created and tracked.\n *\n * @param context Parent Context which may contain a span.\n * @param traceId of the span to be created. It can be different from the\n * traceId in the {@link SpanContext}. Typically in situations when the\n * span to be created starts a new trace.\n * @param spanName of the span to be created.\n * @param spanKind of the span to be created.\n * @param attributes Initial set of SpanAttributes for the Span being constructed.\n * @param links Collection of links that will be associated with the Span to\n * be created. Typically useful for batch operations.\n * @returns a {@link SamplingResult}.\n */\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: SpanAttributes,\n links: Link[]\n ): SamplingResult;\n\n /** Returns the sampler name or short description with the configuration. */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.d.ts new file mode 100644 index 0000000..f2bb495 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.d.ts @@ -0,0 +1,49 @@ +import { SpanAttributes } from './attributes'; +import { TraceState } from './trace_state'; +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +export declare enum SamplingDecision { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + NOT_RECORD = 0, + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + RECORD = 1, + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + RECORD_AND_SAMPLED = 2 +} +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * A sampling result contains a decision for a {@link Span} and additional + * attributes the sampler would like to added to the Span. + */ +export interface SamplingResult { + /** + * A sampling decision, refer to {@link SamplingDecision} for details. + */ + decision: SamplingDecision; + /** + * The list of attributes returned by SamplingResult MUST be immutable. + * Caller may call {@link Sampler}.shouldSample any number of times and + * can safely cache the returned value. + */ + attributes?: Readonly; + /** + * A {@link TraceState} that will be associated with the {@link Span} through + * the new {@link SpanContext}. Samplers SHOULD return the TraceState from + * the passed-in {@link Context} if they do not intend to change it. Leaving + * the value undefined will also leave the TraceState unchanged. + */ + traceState?: TraceState; +} +//# sourceMappingURL=SamplingResult.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js new file mode 100644 index 0000000..6df6b3b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js @@ -0,0 +1,42 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SamplingDecision = void 0; +/** + * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead. + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +var SamplingDecision; +(function (SamplingDecision) { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + SamplingDecision[SamplingDecision["NOT_RECORD"] = 0] = "NOT_RECORD"; + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + SamplingDecision[SamplingDecision["RECORD"] = 1] = "RECORD"; + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + SamplingDecision[SamplingDecision["RECORD_AND_SAMPLED"] = 2] = "RECORD_AND_SAMPLED"; +})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {})); +//# sourceMappingURL=SamplingResult.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js.map new file mode 100644 index 0000000..6e4ed4b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SamplingResult.js","sourceRoot":"","sources":["../../../src/trace/SamplingResult.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH;;;;GAIG;AACH,IAAY,gBAgBX;AAhBD,WAAY,gBAAgB;IAC1B;;;OAGG;IACH,mEAAU,CAAA;IACV;;;OAGG;IACH,2DAAM,CAAA;IACN;;;OAGG;IACH,mFAAkB,CAAA;AACpB,CAAC,EAhBW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAgB3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanAttributes } from './attributes';\nimport { TraceState } from './trace_state';\n\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 */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.d.ts new file mode 100644 index 0000000..c804568 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.d.ts @@ -0,0 +1,23 @@ +import { TimeInput } from '../common/Time'; +import { SpanAttributes } from './attributes'; +import { Link } from './link'; +import { SpanKind } from './span_kind'; +/** + * Options needed for span creation + */ +export interface SpanOptions { + /** + * The SpanKind of a span + * @default {@link SpanKind.INTERNAL} + */ + kind?: SpanKind; + /** A span's attributes */ + attributes?: SpanAttributes; + /** {@link Link}s span to other spans */ + links?: Link[]; + /** A manually specified start time for the created `Span` object. */ + startTime?: TimeInput; + /** The new span should be a root span. (Ignore parent from context). */ + root?: boolean; +} +//# sourceMappingURL=SpanOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.js new file mode 100644 index 0000000..cb58230 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=SpanOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.js.map new file mode 100644 index 0000000..049f685 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SpanOptions.js","sourceRoot":"","sources":["../../../src/trace/SpanOptions.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { Link } from './link';\nimport { SpanKind } from './span_kind';\n\n/**\n * Options needed for span creation\n */\nexport interface SpanOptions {\n /**\n * The SpanKind of a span\n * @default {@link SpanKind.INTERNAL}\n */\n kind?: SpanKind;\n\n /** A span's attributes */\n attributes?: SpanAttributes;\n\n /** {@link Link}s span to other spans */\n links?: Link[];\n\n /** A manually specified start time for the created `Span` object. */\n startTime?: TimeInput;\n\n /** The new span should be a root span. (Ignore parent from context). */\n root?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/attributes.d.ts new file mode 100644 index 0000000..a2a5d2a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/attributes.d.ts @@ -0,0 +1,10 @@ +import { Attributes, AttributeValue } from '../common/Attributes'; +/** + * @deprecated please use {@link Attributes} + */ +export declare type SpanAttributes = Attributes; +/** + * @deprecated please use {@link AttributeValue} + */ +export declare type SpanAttributeValue = AttributeValue; +//# sourceMappingURL=attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/attributes.js new file mode 100644 index 0000000..c6eb97a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/attributes.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/attributes.js.map new file mode 100644 index 0000000..4de58c4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/trace/attributes.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, AttributeValue } from '../common/Attributes';\n\n/**\n * @deprecated please use {@link Attributes}\n */\nexport type SpanAttributes = Attributes;\n\n/**\n * @deprecated please use {@link AttributeValue}\n */\nexport type SpanAttributeValue = AttributeValue;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/context-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/context-utils.d.ts new file mode 100644 index 0000000..f35f794 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/context-utils.d.ts @@ -0,0 +1,41 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanContext } from './span_context'; +/** + * Return the span if one exists + * + * @param context context to get span from + */ +export declare function getSpan(context: Context): Span | undefined; +/** + * Gets the span from the current context, if one exists. + */ +export declare function getActiveSpan(): Span | undefined; +/** + * Set the span on a context + * + * @param context context to use as parent + * @param span span to set active + */ +export declare function setSpan(context: Context, span: Span): Context; +/** + * Remove current span stored in the context + * + * @param context context to delete span from + */ +export declare function deleteSpan(context: Context): Context; +/** + * Wrap span context in a NoopSpan and set as span in a new + * context + * + * @param context context to set active span on + * @param spanContext span context to be wrapped + */ +export declare function setSpanContext(context: Context, spanContext: SpanContext): Context; +/** + * Get the span context of the span if it exists. + * + * @param context context to get values from + */ +export declare function getSpanContext(context: Context): SpanContext | undefined; +//# sourceMappingURL=context-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/context-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/context-utils.js new file mode 100644 index 0000000..d7e9c3a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/context-utils.js @@ -0,0 +1,82 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getActiveSpan = exports.getSpan = void 0; +const context_1 = require("../context/context"); +const NonRecordingSpan_1 = require("./NonRecordingSpan"); +const context_2 = require("../api/context"); +/** + * span key + */ +const SPAN_KEY = (0, context_1.createContextKey)('OpenTelemetry Context Key SPAN'); +/** + * Return the span if one exists + * + * @param context context to get span from + */ +function getSpan(context) { + return context.getValue(SPAN_KEY) || undefined; +} +exports.getSpan = getSpan; +/** + * Gets the span from the current context, if one exists. + */ +function getActiveSpan() { + return getSpan(context_2.ContextAPI.getInstance().active()); +} +exports.getActiveSpan = getActiveSpan; +/** + * Set the span on a context + * + * @param context context to use as parent + * @param span span to set active + */ +function setSpan(context, span) { + return context.setValue(SPAN_KEY, span); +} +exports.setSpan = setSpan; +/** + * Remove current span stored in the context + * + * @param context context to delete span from + */ +function deleteSpan(context) { + return context.deleteValue(SPAN_KEY); +} +exports.deleteSpan = deleteSpan; +/** + * Wrap span context in a NoopSpan and set as span in a new + * context + * + * @param context context to set active span on + * @param spanContext span context to be wrapped + */ +function setSpanContext(context, spanContext) { + return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext)); +} +exports.setSpanContext = setSpanContext; +/** + * Get the span context of the span if it exists. + * + * @param context context to get values from + */ +function getSpanContext(context) { + var _a; + return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext(); +} +exports.getSpanContext = getSpanContext; +//# sourceMappingURL=context-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/context-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/context-utils.js.map new file mode 100644 index 0000000..5fa8126 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/context-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context-utils.js","sourceRoot":"","sources":["../../../src/trace/context-utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,gDAAsD;AAItD,yDAAsD;AACtD,4CAA4C;AAE5C;;GAEG;AACH,MAAM,QAAQ,GAAG,IAAA,0BAAgB,EAAC,gCAAgC,CAAC,CAAC;AAEpE;;;;GAIG;AACH,SAAgB,OAAO,CAAC,OAAgB;IACtC,OAAQ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU,IAAI,SAAS,CAAC;AAC3D,CAAC;AAFD,0BAEC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO,OAAO,CAAC,oBAAU,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AACpD,CAAC;AAFD,sCAEC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAC,OAAgB,EAAE,IAAU;IAClD,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAFD,0BAEC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,OAAgB;IACzC,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAFD,gCAEC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,OAAgB,EAChB,WAAwB;IAExB,OAAO,OAAO,CAAC,OAAO,EAAE,IAAI,mCAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7D,CAAC;AALD,wCAKC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,OAAgB;;IAC7C,OAAO,MAAA,OAAO,CAAC,OAAO,CAAC,0CAAE,WAAW,EAAE,CAAC;AACzC,CAAC;AAFD,wCAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n\n/**\n * span key\n */\nconst SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context: Context): Span | undefined {\n return (context.getValue(SPAN_KEY) as Span) || undefined;\n}\n\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan(): Span | undefined {\n return getSpan(ContextAPI.getInstance().active());\n}\n\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 */\nexport function setSpan(context: Context, span: Span): Context {\n return context.setValue(SPAN_KEY, span);\n}\n\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context: Context): Context {\n return context.deleteValue(SPAN_KEY);\n}\n\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 */\nexport function setSpanContext(\n context: Context,\n spanContext: SpanContext\n): Context {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context: Context): SpanContext | undefined {\n return getSpan(context)?.spanContext();\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.d.ts new file mode 100644 index 0000000..9ed5ecb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.d.ts @@ -0,0 +1,22 @@ +import { TraceState } from '../trace_state'; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +export declare class TraceStateImpl implements TraceState { + private _internalState; + constructor(rawTraceState?: string); + set(key: string, value: string): TraceStateImpl; + unset(key: string): TraceStateImpl; + get(key: string): string | undefined; + serialize(): string; + private _parse; + private _keys; + private _clone; +} +//# sourceMappingURL=tracestate-impl.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js new file mode 100644 index 0000000..93c0289 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js @@ -0,0 +1,103 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TraceStateImpl = void 0; +const tracestate_validators_1 = require("./tracestate-validators"); +const MAX_TRACE_STATE_ITEMS = 32; +const MAX_TRACE_STATE_LEN = 512; +const LIST_MEMBERS_SEPARATOR = ','; +const LIST_MEMBER_KEY_VALUE_SPLITTER = '='; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +class TraceStateImpl { + constructor(rawTraceState) { + this._internalState = new Map(); + if (rawTraceState) + this._parse(rawTraceState); + } + set(key, value) { + // TODO: Benchmark the different approaches(map vs list) and + // use the faster one. + const traceState = this._clone(); + if (traceState._internalState.has(key)) { + traceState._internalState.delete(key); + } + traceState._internalState.set(key, value); + return traceState; + } + unset(key) { + const traceState = this._clone(); + traceState._internalState.delete(key); + return traceState; + } + get(key) { + return this._internalState.get(key); + } + serialize() { + return this._keys() + .reduce((agg, key) => { + agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key)); + return agg; + }, []) + .join(LIST_MEMBERS_SEPARATOR); + } + _parse(rawTraceState) { + if (rawTraceState.length > MAX_TRACE_STATE_LEN) + return; + this._internalState = rawTraceState + .split(LIST_MEMBERS_SEPARATOR) + .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning + .reduce((agg, part) => { + const listMember = part.trim(); // Optional Whitespace (OWS) handling + const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER); + if (i !== -1) { + const key = listMember.slice(0, i); + const value = listMember.slice(i + 1, part.length); + if ((0, tracestate_validators_1.validateKey)(key) && (0, tracestate_validators_1.validateValue)(value)) { + agg.set(key, value); + } + else { + // TODO: Consider to add warning log + } + } + return agg; + }, new Map()); + // Because of the reverse() requirement, trunc must be done after map is created + if (this._internalState.size > MAX_TRACE_STATE_ITEMS) { + this._internalState = new Map(Array.from(this._internalState.entries()) + .reverse() // Use reverse same as original tracestate parse chain + .slice(0, MAX_TRACE_STATE_ITEMS)); + } + } + _keys() { + return Array.from(this._internalState.keys()).reverse(); + } + _clone() { + const traceState = new TraceStateImpl(); + traceState._internalState = new Map(this._internalState); + return traceState; + } +} +exports.TraceStateImpl = TraceStateImpl; +//# sourceMappingURL=tracestate-impl.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js.map new file mode 100644 index 0000000..83eacbe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracestate-impl.js","sourceRoot":"","sources":["../../../../src/trace/internal/tracestate-impl.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TraceState } from '../trace_state';\nimport { validateKey, validateValue } from './tracestate-validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\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 */\nexport class TraceStateImpl implements TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceStateImpl {\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\n unset(key: string): TraceStateImpl {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return this._keys()\n .reduce((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) 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: Map, part: string) => {\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 (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\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(\n 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 }\n\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceStateImpl {\n const traceState = new TraceStateImpl();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.d.ts new file mode 100644 index 0000000..4917f99 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.d.ts @@ -0,0 +1,15 @@ +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +export declare function validateKey(key: string): boolean; +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +export declare function validateValue(value: string): boolean; +//# sourceMappingURL=tracestate-validators.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js new file mode 100644 index 0000000..3e37044 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js @@ -0,0 +1,46 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateValue = exports.validateKey = void 0; +const VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]'; +const VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`; +const VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`; +const VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`); +const VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/; +const INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/; +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +function validateKey(key) { + return VALID_KEY_REGEX.test(key); +} +exports.validateKey = validateKey; +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +function validateValue(value) { + return (VALID_VALUE_BASE_REGEX.test(value) && + !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)); +} +exports.validateValue = validateValue; +//# sourceMappingURL=tracestate-validators.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js.map new file mode 100644 index 0000000..498abce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracestate-validators.js","sourceRoot":"","sources":["../../../../src/trace/internal/tracestate-validators.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAC5C,MAAM,SAAS,GAAG,QAAQ,oBAAoB,SAAS,CAAC;AACxD,MAAM,gBAAgB,GAAG,WAAW,oBAAoB,gBAAgB,oBAAoB,QAAQ,CAAC;AACrG,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,OAAO,SAAS,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC7E,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AACrD,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAE9C;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,CACL,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAC7C,CAAC;AACJ,CAAC;AALD,sCAKC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 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/**\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 */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\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 */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/utils.d.ts new file mode 100644 index 0000000..e3b51fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/utils.d.ts @@ -0,0 +1,3 @@ +import { TraceState } from '../trace_state'; +export declare function createTraceState(rawTraceState?: string): TraceState; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js new file mode 100644 index 0000000..3d95419 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js @@ -0,0 +1,24 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createTraceState = void 0; +const tracestate_impl_1 = require("./tracestate-impl"); +function createTraceState(rawTraceState) { + return new tracestate_impl_1.TraceStateImpl(rawTraceState); +} +exports.createTraceState = createTraceState; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js.map new file mode 100644 index 0000000..19cd87c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/trace/internal/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,uDAAmD;AAEnD,SAAgB,gBAAgB,CAAC,aAAsB;IACrD,OAAO,IAAI,gCAAc,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC;AAFD,4CAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TraceState } from '../trace_state';\nimport { TraceStateImpl } from './tracestate-impl';\n\nexport function createTraceState(rawTraceState?: string): TraceState {\n return new TraceStateImpl(rawTraceState);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.d.ts new file mode 100644 index 0000000..e32dab9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.d.ts @@ -0,0 +1,5 @@ +import { SpanContext } from './span_context'; +export declare const INVALID_SPANID = "0000000000000000"; +export declare const INVALID_TRACEID = "00000000000000000000000000000000"; +export declare const INVALID_SPAN_CONTEXT: SpanContext; +//# sourceMappingURL=invalid-span-constants.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js new file mode 100644 index 0000000..77fb79e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js @@ -0,0 +1,27 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0; +const trace_flags_1 = require("./trace_flags"); +exports.INVALID_SPANID = '0000000000000000'; +exports.INVALID_TRACEID = '00000000000000000000000000000000'; +exports.INVALID_SPAN_CONTEXT = { + traceId: exports.INVALID_TRACEID, + spanId: exports.INVALID_SPANID, + traceFlags: trace_flags_1.TraceFlags.NONE, +}; +//# sourceMappingURL=invalid-span-constants.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js.map new file mode 100644 index 0000000..54da537 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"invalid-span-constants.js","sourceRoot":"","sources":["../../../src/trace/invalid-span-constants.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,+CAA2C;AAE9B,QAAA,cAAc,GAAG,kBAAkB,CAAC;AACpC,QAAA,eAAe,GAAG,kCAAkC,CAAC;AACrD,QAAA,oBAAoB,GAAgB;IAC/C,OAAO,EAAE,uBAAe;IACxB,MAAM,EAAE,sBAAc;IACtB,UAAU,EAAE,wBAAU,CAAC,IAAI;CAC5B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanContext } from './span_context';\nimport { TraceFlags } from './trace_flags';\n\nexport const INVALID_SPANID = '0000000000000000';\nexport const INVALID_TRACEID = '00000000000000000000000000000000';\nexport const INVALID_SPAN_CONTEXT: SpanContext = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/link.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/link.d.ts new file mode 100644 index 0000000..8fc0106 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/link.d.ts @@ -0,0 +1,26 @@ +import { SpanAttributes } from './attributes'; +import { SpanContext } from './span_context'; +/** + * A pointer from the current {@link Span} to another span in the same trace or + * in a different trace. + * Few examples of Link usage. + * 1. Batch Processing: A batch of elements may contain elements associated + * with one or more traces/spans. Since there can only be one parent + * SpanContext, Link is used to keep reference to SpanContext of all + * elements in the batch. + * 2. Public Endpoint: A SpanContext in incoming client request on a public + * endpoint is untrusted from service provider perspective. In such case it + * is advisable to start a new trace with appropriate sampling decision. + * However, it is desirable to associate incoming SpanContext to new trace + * initiated on service provider side so two traces (from Client and from + * Service Provider) can be correlated. + */ +export interface Link { + /** The {@link SpanContext} of a linked span. */ + context: SpanContext; + /** A set of {@link SpanAttributes} on the link. */ + attributes?: SpanAttributes; + /** Count of attributes of the link that were dropped due to collection limits */ + droppedAttributesCount?: number; +} +//# sourceMappingURL=link.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/link.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/link.js new file mode 100644 index 0000000..8036a63 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/link.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=link.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/link.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/link.js.map new file mode 100644 index 0000000..34fae43 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/link.js.map @@ -0,0 +1 @@ +{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/trace/link.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanAttributes } from './attributes';\nimport { SpanContext } from './span_context';\n\n/**\n * A pointer from the current {@link Span} to another span in the same trace or\n * in a different trace.\n * Few examples of Link usage.\n * 1. Batch Processing: A batch of elements may contain elements associated\n * with one or more traces/spans. Since there can only be one parent\n * SpanContext, Link is used to keep reference to SpanContext of all\n * elements in the batch.\n * 2. Public Endpoint: A SpanContext in incoming client request on a public\n * endpoint is untrusted from service provider perspective. In such case it\n * is advisable to start a new trace with appropriate sampling decision.\n * However, it is desirable to associate incoming SpanContext to new trace\n * initiated on service provider side so two traces (from Client and from\n * Service Provider) can be correlated.\n */\nexport interface Link {\n /** The {@link SpanContext} of a linked span. */\n context: SpanContext;\n /** A set of {@link SpanAttributes} on the link. */\n attributes?: SpanAttributes;\n /** Count of attributes of the link that were dropped due to collection limits */\n droppedAttributesCount?: number;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span.d.ts new file mode 100644 index 0000000..28c6442 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span.d.ts @@ -0,0 +1,120 @@ +import { Exception } from '../common/Exception'; +import { TimeInput } from '../common/Time'; +import { SpanAttributes, SpanAttributeValue } from './attributes'; +import { SpanContext } from './span_context'; +import { SpanStatus } from './status'; +import { Link } from './link'; +/** + * An interface that represents a span. A span represents a single operation + * within a trace. Examples of span might include remote procedure calls or a + * in-process function calls to sub-components. A Trace has a single, top-level + * "root" Span that in turn may have zero or more child Spans, which in turn + * may have children. + * + * Spans are created by the {@link Tracer.startSpan} method. + */ +export interface Span { + /** + * Returns the {@link SpanContext} object associated with this Span. + * + * Get an immutable, serializable identifier for this span that can be used + * to create new child spans. Returned SpanContext is usable even after the + * span ends. + * + * @returns the SpanContext object associated with this Span. + */ + spanContext(): SpanContext; + /** + * Sets an attribute to the span. + * + * Sets a single Attribute with the key and value passed as arguments. + * + * @param key the key for this attribute. + * @param value the value for this attribute. Setting a value null or + * undefined is invalid and will result in undefined behavior. + */ + setAttribute(key: string, value: SpanAttributeValue): this; + /** + * Sets attributes to the span. + * + * @param attributes the attributes that will be added. + * null or undefined attribute values + * are invalid and will result in undefined behavior. + */ + setAttributes(attributes: SpanAttributes): this; + /** + * Adds an event to the Span. + * + * @param name the name of the event. + * @param [attributesOrStartTime] the attributes that will be added; these are + * associated with this event. Can be also a start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [startTime] start time of the event. + */ + addEvent(name: string, attributesOrStartTime?: SpanAttributes | TimeInput, startTime?: TimeInput): this; + /** + * Adds a single link to the span. + * + * Links added after the creation will not affect the sampling decision. + * It is preferred span links be added at span creation. + * + * @param link the link to add. + */ + addLink(link: Link): this; + /** + * Adds multiple links to the span. + * + * Links added after the creation will not affect the sampling decision. + * It is preferred span links be added at span creation. + * + * @param links the links to add. + */ + addLinks(links: Link[]): this; + /** + * Sets a status to the span. If used, this will override the default Span + * status. Default is {@link SpanStatusCode.UNSET}. SetStatus overrides the value + * of previous calls to SetStatus on the Span. + * + * @param status the SpanStatus to set. + */ + setStatus(status: SpanStatus): this; + /** + * Updates the Span name. + * + * This will override the name provided via {@link Tracer.startSpan}. + * + * Upon this update, any sampling behavior based on Span name will depend on + * the implementation. + * + * @param name the Span name. + */ + updateName(name: string): this; + /** + * Marks the end of Span execution. + * + * Call to End of a Span MUST not have any effects on child spans. Those may + * still be running and can be ended later. + * + * Do not return `this`. The Span generally should not be used after it + * is ended so chaining is not desired in this context. + * + * @param [endTime] the time to set as Span's end time. If not provided, + * use the current time as the span's end time. + */ + end(endTime?: TimeInput): void; + /** + * Returns the flag whether this span will be recorded. + * + * @returns true if this Span is active and recording information like events + * with the `AddEvent` operation and attributes using `setAttributes`. + */ + isRecording(): boolean; + /** + * Sets exception as a span event + * @param exception the exception the only accepted values are string or Error + * @param [time] the time to set as Span's event time. If not provided, + * use the current time. + */ + recordException(exception: Exception, time?: TimeInput): void; +} +//# sourceMappingURL=span.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span.js new file mode 100644 index 0000000..b50af46 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=span.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span.js.map new file mode 100644 index 0000000..f32cb28 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span.js.map @@ -0,0 +1 @@ +{"version":3,"file":"span.js","sourceRoot":"","sources":["../../../src/trace/span.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes, SpanAttributeValue } from './attributes';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\n/**\n * An interface that represents a span. A span represents a single operation\n * within a trace. Examples of span might include remote procedure calls or a\n * in-process function calls to sub-components. A Trace has a single, top-level\n * \"root\" Span that in turn may have zero or more child Spans, which in turn\n * may have children.\n *\n * Spans are created by the {@link Tracer.startSpan} method.\n */\nexport interface Span {\n /**\n * Returns the {@link SpanContext} object associated with this Span.\n *\n * Get an immutable, serializable identifier for this span that can be used\n * to create new child spans. Returned SpanContext is usable even after the\n * span ends.\n *\n * @returns the SpanContext object associated with this Span.\n */\n spanContext(): SpanContext;\n\n /**\n * Sets an attribute to the span.\n *\n * Sets a single Attribute with the key and value passed as arguments.\n *\n * @param key the key for this attribute.\n * @param value the value for this attribute. Setting a value null or\n * undefined is invalid and will result in undefined behavior.\n */\n setAttribute(key: string, value: SpanAttributeValue): this;\n\n /**\n * Sets attributes to the span.\n *\n * @param attributes the attributes that will be added.\n * null or undefined attribute values\n * are invalid and will result in undefined behavior.\n */\n setAttributes(attributes: SpanAttributes): this;\n\n /**\n * Adds an event to the Span.\n *\n * @param name the name of the event.\n * @param [attributesOrStartTime] the attributes that will be added; these are\n * associated with this event. Can be also a start time\n * if type is {@type TimeInput} and 3rd param is undefined\n * @param [startTime] start time of the event.\n */\n addEvent(\n name: string,\n attributesOrStartTime?: SpanAttributes | TimeInput,\n startTime?: TimeInput\n ): this;\n\n /**\n * Adds a single link to the span.\n *\n * Links added after the creation will not affect the sampling decision.\n * It is preferred span links be added at span creation.\n *\n * @param link the link to add.\n */\n addLink(link: Link): this;\n\n /**\n * Adds multiple links to the span.\n *\n * Links added after the creation will not affect the sampling decision.\n * It is preferred span links be added at span creation.\n *\n * @param links the links to add.\n */\n addLinks(links: Link[]): this;\n\n /**\n * Sets a status to the span. If used, this will override the default Span\n * status. Default is {@link SpanStatusCode.UNSET}. SetStatus overrides the value\n * of previous calls to SetStatus on the Span.\n *\n * @param status the SpanStatus to set.\n */\n setStatus(status: SpanStatus): this;\n\n /**\n * Updates the Span name.\n *\n * This will override the name provided via {@link Tracer.startSpan}.\n *\n * Upon this update, any sampling behavior based on Span name will depend on\n * the implementation.\n *\n * @param name the Span name.\n */\n updateName(name: string): this;\n\n /**\n * Marks the end of Span execution.\n *\n * Call to End of a Span MUST not have any effects on child spans. Those may\n * still be running and can be ended later.\n *\n * Do not return `this`. The Span generally should not be used after it\n * is ended so chaining is not desired in this context.\n *\n * @param [endTime] the time to set as Span's end time. If not provided,\n * use the current time as the span's end time.\n */\n end(endTime?: TimeInput): void;\n\n /**\n * Returns the flag whether this span will be recorded.\n *\n * @returns true if this Span is active and recording information like events\n * with the `AddEvent` operation and attributes using `setAttributes`.\n */\n isRecording(): boolean;\n\n /**\n * Sets exception as a span event\n * @param exception the exception the only accepted values are string or Error\n * @param [time] the time to set as Span's event time. If not provided,\n * use the current time.\n */\n recordException(exception: Exception, time?: TimeInput): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_context.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_context.d.ts new file mode 100644 index 0000000..f30933a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_context.d.ts @@ -0,0 +1,53 @@ +import { TraceState } from './trace_state'; +/** + * A SpanContext represents the portion of a {@link Span} which must be + * serialized and propagated along side of a {@link Baggage}. + */ +export interface SpanContext { + /** + * The ID of the trace that this span belongs to. It is worldwide unique + * with practically sufficient probability by being made as 16 randomly + * generated bytes, encoded as a 32 lowercase hex characters corresponding to + * 128 bits. + */ + traceId: string; + /** + * The ID of the Span. It is globally unique with practically sufficient + * probability by being made as 8 randomly generated bytes, encoded as a 16 + * lowercase hex characters corresponding to 64 bits. + */ + spanId: string; + /** + * Only true if the SpanContext was propagated from a remote parent. + */ + isRemote?: boolean; + /** + * Trace flags to propagate. + * + * It is represented as 1 byte (bitmap). Bit to represent whether trace is + * sampled or not. When set, the least significant bit documents that the + * caller may have recorded trace data. A caller who does not record trace + * data out-of-band leaves this flag unset. + * + * see {@link TraceFlags} for valid flag values. + */ + traceFlags: number; + /** + * Tracing-system-specific info to propagate. + * + * The tracestate field value is a `list` as defined below. The `list` is a + * series of `list-members` separated by commas `,`, and a list-member is a + * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs + * surrounding `list-members` are ignored. There can be a maximum of 32 + * `list-members` in a `list`. + * More Info: https://www.w3.org/TR/trace-context/#tracestate-field + * + * Examples: + * Single tracing system (generic format): + * tracestate: rojo=00f067aa0ba902b7 + * Multiple tracing systems (with different formatting): + * tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE + */ + traceState?: TraceState; +} +//# sourceMappingURL=span_context.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_context.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_context.js new file mode 100644 index 0000000..4b7976c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_context.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=span_context.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_context.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_context.js.map new file mode 100644 index 0000000..005386d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"span_context.js","sourceRoot":"","sources":["../../../src/trace/span_context.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TraceState } from './trace_state';\n\n/**\n * A SpanContext represents the portion of a {@link Span} which must be\n * serialized and propagated along side of a {@link Baggage}.\n */\nexport interface SpanContext {\n /**\n * The ID of the trace that this span belongs to. It is worldwide unique\n * with practically sufficient probability by being made as 16 randomly\n * generated bytes, encoded as a 32 lowercase hex characters corresponding to\n * 128 bits.\n */\n traceId: string;\n /**\n * The ID of the Span. It is globally unique with practically sufficient\n * probability by being made as 8 randomly generated bytes, encoded as a 16\n * lowercase hex characters corresponding to 64 bits.\n */\n spanId: string;\n /**\n * Only true if the SpanContext was propagated from a remote parent.\n */\n isRemote?: boolean;\n /**\n * Trace flags to propagate.\n *\n * It is represented as 1 byte (bitmap). Bit to represent whether trace is\n * sampled or not. When set, the least significant bit documents that the\n * caller may have recorded trace data. A caller who does not record trace\n * data out-of-band leaves this flag unset.\n *\n * see {@link TraceFlags} for valid flag values.\n */\n traceFlags: number;\n /**\n * Tracing-system-specific info to propagate.\n *\n * The tracestate field value is a `list` as defined below. The `list` is a\n * series of `list-members` separated by commas `,`, and a list-member is a\n * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs\n * surrounding `list-members` are ignored. There can be a maximum of 32\n * `list-members` in a `list`.\n * More Info: https://www.w3.org/TR/trace-context/#tracestate-field\n *\n * Examples:\n * Single tracing system (generic format):\n * tracestate: rojo=00f067aa0ba902b7\n * Multiple tracing systems (with different formatting):\n * tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE\n */\n traceState?: TraceState;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_kind.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_kind.d.ts new file mode 100644 index 0000000..a89846f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_kind.d.ts @@ -0,0 +1,27 @@ +export declare enum SpanKind { + /** Default value. Indicates that the span is used internally. */ + INTERNAL = 0, + /** + * Indicates that the span covers server-side handling of an RPC or other + * remote request. + */ + SERVER = 1, + /** + * Indicates that the span covers the client-side wrapper around an RPC or + * other remote request. + */ + CLIENT = 2, + /** + * Indicates that the span describes producer sending a message to a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + PRODUCER = 3, + /** + * Indicates that the span describes consumer receiving a message from a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + CONSUMER = 4 +} +//# sourceMappingURL=span_kind.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_kind.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_kind.js new file mode 100644 index 0000000..9c06e2c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_kind.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SpanKind = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var SpanKind; +(function (SpanKind) { + /** Default value. Indicates that the span is used internally. */ + SpanKind[SpanKind["INTERNAL"] = 0] = "INTERNAL"; + /** + * Indicates that the span covers server-side handling of an RPC or other + * remote request. + */ + SpanKind[SpanKind["SERVER"] = 1] = "SERVER"; + /** + * Indicates that the span covers the client-side wrapper around an RPC or + * other remote request. + */ + SpanKind[SpanKind["CLIENT"] = 2] = "CLIENT"; + /** + * Indicates that the span describes producer sending a message to a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + SpanKind[SpanKind["PRODUCER"] = 3] = "PRODUCER"; + /** + * Indicates that the span describes consumer receiving a message from a + * broker. Unlike client and server, there is no direct critical path latency + * relationship between producer and consumer spans. + */ + SpanKind[SpanKind["CONSUMER"] = 4] = "CONSUMER"; +})(SpanKind = exports.SpanKind || (exports.SpanKind = {})); +//# sourceMappingURL=span_kind.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_kind.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_kind.js.map new file mode 100644 index 0000000..c0ba360 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/span_kind.js.map @@ -0,0 +1 @@ +{"version":3,"file":"span_kind.js","sourceRoot":"","sources":["../../../src/trace/span_kind.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,IAAY,QA6BX;AA7BD,WAAY,QAAQ;IAClB,iEAAiE;IACjE,+CAAY,CAAA;IAEZ;;;OAGG;IACH,2CAAU,CAAA;IAEV;;;OAGG;IACH,2CAAU,CAAA;IAEV;;;;OAIG;IACH,+CAAY,CAAA;IAEZ;;;;OAIG;IACH,+CAAY,CAAA;AACd,CAAC,EA7BW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA6BnB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum SpanKind {\n /** Default value. Indicates that the span is used internally. */\n INTERNAL = 0,\n\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SERVER = 1,\n\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n CLIENT = 2,\n\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 PRODUCER = 3,\n\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 CONSUMER = 4,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.d.ts new file mode 100644 index 0000000..f191111 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.d.ts @@ -0,0 +1,17 @@ +import { Span } from './span'; +import { SpanContext } from './span_context'; +export declare function isValidTraceId(traceId: string): boolean; +export declare function isValidSpanId(spanId: string): boolean; +/** + * Returns true if this {@link SpanContext} is valid. + * @return true if this {@link SpanContext} is valid. + */ +export declare function isSpanContextValid(spanContext: SpanContext): boolean; +/** + * Wrap the given {@link SpanContext} in a new non-recording {@link Span} + * + * @param spanContext span context to be wrapped + * @returns a new non-recording {@link Span} with the provided context + */ +export declare function wrapSpanContext(spanContext: SpanContext): Span; +//# sourceMappingURL=spancontext-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js new file mode 100644 index 0000000..dc88f5e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const invalid_span_constants_1 = require("./invalid-span-constants"); +const NonRecordingSpan_1 = require("./NonRecordingSpan"); +const VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i; +const VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i; +function isValidTraceId(traceId) { + return VALID_TRACEID_REGEX.test(traceId) && traceId !== invalid_span_constants_1.INVALID_TRACEID; +} +exports.isValidTraceId = isValidTraceId; +function isValidSpanId(spanId) { + return VALID_SPANID_REGEX.test(spanId) && spanId !== invalid_span_constants_1.INVALID_SPANID; +} +exports.isValidSpanId = isValidSpanId; +/** + * Returns true if this {@link SpanContext} is valid. + * @return true if this {@link SpanContext} is valid. + */ +function isSpanContextValid(spanContext) { + return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)); +} +exports.isSpanContextValid = isSpanContextValid; +/** + * Wrap the given {@link SpanContext} in a new non-recording {@link Span} + * + * @param spanContext span context to be wrapped + * @returns a new non-recording {@link Span} with the provided context + */ +function wrapSpanContext(spanContext) { + return new NonRecordingSpan_1.NonRecordingSpan(spanContext); +} +exports.wrapSpanContext = wrapSpanContext; +//# sourceMappingURL=spancontext-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js.map new file mode 100644 index 0000000..58358a0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spancontext-utils.js","sourceRoot":"","sources":["../../../src/trace/spancontext-utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,qEAA2E;AAC3E,yDAAsD;AAItD,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAChD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAE7C,SAAgB,cAAc,CAAC,OAAe;IAC5C,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,wCAAe,CAAC;AAC1E,CAAC;AAFD,wCAEC;AAED,SAAgB,aAAa,CAAC,MAAc;IAC1C,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,uCAAc,CAAC;AACtE,CAAC;AAFD,sCAEC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,WAAwB;IACzD,OAAO,CACL,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CACzE,CAAC;AACJ,CAAC;AAJD,gDAIC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,WAAwB;IACtD,OAAO,IAAI,mCAAgB,CAAC,WAAW,CAAC,CAAC;AAC3C,CAAC;AAFD,0CAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\n\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\n\nexport function isValidTraceId(traceId: string): boolean {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\n\nexport function isValidSpanId(spanId: string): boolean {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n return (\n isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n );\n}\n\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 */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n return new NonRecordingSpan(spanContext);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/status.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/status.d.ts new file mode 100644 index 0000000..ab19a68 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/status.d.ts @@ -0,0 +1,25 @@ +export interface SpanStatus { + /** The status code of this message. */ + code: SpanStatusCode; + /** A developer-facing error message. */ + message?: string; +} +/** + * An enumeration of status codes. + */ +export declare enum SpanStatusCode { + /** + * The default status. + */ + UNSET = 0, + /** + * The operation has been validated by an Application developer or + * Operator to have completed successfully. + */ + OK = 1, + /** + * The operation contains an error. + */ + ERROR = 2 +} +//# sourceMappingURL=status.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/status.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/status.js new file mode 100644 index 0000000..50cbdef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/status.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SpanStatusCode = void 0; +/** + * An enumeration of status codes. + */ +var SpanStatusCode; +(function (SpanStatusCode) { + /** + * The default status. + */ + SpanStatusCode[SpanStatusCode["UNSET"] = 0] = "UNSET"; + /** + * The operation has been validated by an Application developer or + * Operator to have completed successfully. + */ + SpanStatusCode[SpanStatusCode["OK"] = 1] = "OK"; + /** + * The operation contains an error. + */ + SpanStatusCode[SpanStatusCode["ERROR"] = 2] = "ERROR"; +})(SpanStatusCode = exports.SpanStatusCode || (exports.SpanStatusCode = {})); +//# sourceMappingURL=status.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/status.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/status.js.map new file mode 100644 index 0000000..b921cae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/status.js.map @@ -0,0 +1 @@ +{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/trace/status.ts"],"names":[],"mappings":";;;AAsBA;;GAEG;AACH,IAAY,cAcX;AAdD,WAAY,cAAc;IACxB;;OAEG;IACH,qDAAS,CAAA;IACT;;;OAGG;IACH,+CAAM,CAAA;IACN;;OAEG;IACH,qDAAS,CAAA;AACX,CAAC,EAdW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAczB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport interface SpanStatus {\n /** The status code of this message. */\n code: SpanStatusCode;\n /** A developer-facing error message. */\n message?: string;\n}\n\n/**\n * An enumeration of status codes.\n */\nexport enum SpanStatusCode {\n /**\n * The default status.\n */\n UNSET = 0,\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n OK = 1,\n /**\n * The operation contains an error.\n */\n ERROR = 2,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_flags.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_flags.d.ts new file mode 100644 index 0000000..11288ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_flags.d.ts @@ -0,0 +1,7 @@ +export declare enum TraceFlags { + /** Represents no flag set. */ + NONE = 0, + /** Bit to represent whether trace is sampled in trace flags. */ + SAMPLED = 1 +} +//# sourceMappingURL=trace_flags.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js new file mode 100644 index 0000000..f8d4dd8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TraceFlags = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var TraceFlags; +(function (TraceFlags) { + /** Represents no flag set. */ + TraceFlags[TraceFlags["NONE"] = 0] = "NONE"; + /** Bit to represent whether trace is sampled in trace flags. */ + TraceFlags[TraceFlags["SAMPLED"] = 1] = "SAMPLED"; +})(TraceFlags = exports.TraceFlags || (exports.TraceFlags = {})); +//# sourceMappingURL=trace_flags.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js.map new file mode 100644 index 0000000..965ce79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace_flags.js","sourceRoot":"","sources":["../../../src/trace/trace_flags.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,8BAA8B;IAC9B,2CAAU,CAAA;IACV,gEAAgE;IAChE,iDAAkB,CAAA;AACpB,CAAC,EALW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAKrB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum TraceFlags {\n /** Represents no flag set. */\n NONE = 0x0,\n /** Bit to represent whether trace is sampled in trace flags. */\n SAMPLED = 0x1 << 0,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_state.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_state.d.ts new file mode 100644 index 0000000..f275b8b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_state.d.ts @@ -0,0 +1,38 @@ +export interface TraceState { + /** + * Create a new TraceState which inherits from this TraceState and has the + * given key set. + * The new entry will always be added in the front of the list of states. + * + * @param key key of the TraceState entry. + * @param value value of the TraceState entry. + */ + set(key: string, value: string): TraceState; + /** + * Return a new TraceState which inherits from this TraceState but does not + * contain the given key. + * + * @param key the key for the TraceState entry to be removed. + */ + unset(key: string): TraceState; + /** + * Returns the value to which the specified key is mapped, or `undefined` if + * this map contains no mapping for the key. + * + * @param key with which the specified value is to be associated. + * @returns the value to which the specified key is mapped, or `undefined` if + * this map contains no mapping for the key. + */ + get(key: string): string | undefined; + /** + * Serializes the TraceState to a `list` as defined below. The `list` is a + * series of `list-members` separated by commas `,`, and a list-member is a + * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs + * surrounding `list-members` are ignored. There can be a maximum of 32 + * `list-members` in a `list`. + * + * @returns the serialized string. + */ + serialize(): string; +} +//# sourceMappingURL=trace_state.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_state.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_state.js new file mode 100644 index 0000000..1397038 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_state.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=trace_state.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_state.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_state.js.map new file mode 100644 index 0000000..267f2e8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/trace_state.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace_state.js","sourceRoot":"","sources":["../../../src/trace/trace_state.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface TraceState {\n /**\n * Create a new TraceState which inherits from this TraceState and has the\n * given key set.\n * The new entry will always be added in the front of the list of states.\n *\n * @param key key of the TraceState entry.\n * @param value value of the TraceState entry.\n */\n set(key: string, value: string): TraceState;\n\n /**\n * Return a new TraceState which inherits from this TraceState but does not\n * contain the given key.\n *\n * @param key the key for the TraceState entry to be removed.\n */\n unset(key: string): TraceState;\n\n /**\n * Returns the value to which the specified key is mapped, or `undefined` if\n * this map contains no mapping for the key.\n *\n * @param key with which the specified value is to be associated.\n * @returns the value to which the specified key is mapped, or `undefined` if\n * this map contains no mapping for the key.\n */\n get(key: string): string | undefined;\n\n // TODO: Consider to add support for merging an object as well by also\n // accepting a single internalTraceState argument similar to the constructor.\n\n /**\n * Serializes the TraceState to a `list` as defined below. The `list` is a\n * series of `list-members` separated by commas `,`, and a list-member is a\n * key/value pair separated by an equals sign `=`. Spaces and horizontal tabs\n * surrounding `list-members` are ignored. There can be a maximum of 32\n * `list-members` in a `list`.\n *\n * @returns the serialized string.\n */\n serialize(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer.d.ts new file mode 100644 index 0000000..2509089 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer.d.ts @@ -0,0 +1,71 @@ +import { Context } from '../context/types'; +import { Span } from './span'; +import { SpanOptions } from './SpanOptions'; +/** + * Tracer provides an interface for creating {@link Span}s. + */ +export interface Tracer { + /** + * Starts a new {@link Span}. Start the span without setting it on context. + * + * This method do NOT modify the current Context. + * + * @param name The name of the span + * @param [options] SpanOptions used for span creation + * @param [context] Context to use to extract parent + * @returns Span The newly created span + * @example + * const span = tracer.startSpan('op'); + * span.setAttribute('key', 'value'); + * span.end(); + */ + startSpan(name: string, options?: SpanOptions, context?: Context): Span; + /** + * Starts a new {@link Span} and calls the given function passing it the + * created span as first argument. + * Additionally the new span gets set in context and this context is activated + * for the duration of the function call. + * + * @param name The name of the span + * @param [options] SpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns return value of fn + * @example + * const something = tracer.startActiveSpan('op', span => { + * try { + * do some work + * span.setStatus({code: SpanStatusCode.OK}); + * return something; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } finally { + * span.end(); + * } + * }); + * + * @example + * const span = tracer.startActiveSpan('op', span => { + * try { + * do some work + * return span; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } + * }); + * do some more work + * span.end(); + */ + startActiveSpan unknown>(name: string, fn: F): ReturnType; + startActiveSpan unknown>(name: string, options: SpanOptions, fn: F): ReturnType; + startActiveSpan unknown>(name: string, options: SpanOptions, context: Context, fn: F): ReturnType; +} +//# sourceMappingURL=tracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer.js new file mode 100644 index 0000000..d710ef9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=tracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer.js.map new file mode 100644 index 0000000..3c3c591 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../src/trace/tracer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\n\n/**\n * Tracer provides an interface for creating {@link Span}s.\n */\nexport interface Tracer {\n /**\n * Starts a new {@link Span}. Start the span without setting it on context.\n *\n * This method do NOT modify the current Context.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @returns Span The newly created span\n * @example\n * const span = tracer.startSpan('op');\n * span.setAttribute('key', 'value');\n * span.end();\n */\n startSpan(name: string, options?: SpanOptions, context?: Context): Span;\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally the new span gets set in context and this context is activated\n * for the duration of the function call.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * span.setStatus({code: SpanStatusCode.OK});\n * return something;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * } finally {\n * span.end();\n * }\n * });\n *\n * @example\n * const span = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * return span;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * }\n * });\n * do some more work\n * span.end();\n */\n startActiveSpan unknown>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan unknown>(\n name: string,\n options: SpanOptions,\n fn: F\n ): ReturnType;\n startActiveSpan unknown>(\n name: string,\n options: SpanOptions,\n context: Context,\n fn: F\n ): ReturnType;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_options.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_options.d.ts new file mode 100644 index 0000000..f3bbccf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_options.d.ts @@ -0,0 +1,10 @@ +/** + * An interface describes additional metadata of a tracer. + */ +export interface TracerOptions { + /** + * The schemaUrl of the tracer or instrumentation library + */ + schemaUrl?: string; +} +//# sourceMappingURL=tracer_options.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_options.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_options.js new file mode 100644 index 0000000..3547251 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_options.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=tracer_options.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_options.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_options.js.map new file mode 100644 index 0000000..a743252 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracer_options.js","sourceRoot":"","sources":["../../../src/trace/tracer_options.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * An interface describes additional metadata of a tracer.\n */\nexport interface TracerOptions {\n /**\n * The schemaUrl of the tracer or instrumentation library\n */\n schemaUrl?: string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.d.ts new file mode 100644 index 0000000..9b2f7a9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.d.ts @@ -0,0 +1,21 @@ +import { Tracer } from './tracer'; +import { TracerOptions } from './tracer_options'; +/** + * A registry for creating named {@link Tracer}s. + */ +export interface TracerProvider { + /** + * Returns a Tracer, creating one if one with the given name and version is + * not already created. + * + * This function may return different Tracer types (e.g. + * {@link NoopTracerProvider} vs. a functional tracer). + * + * @param name The name of the tracer or instrumentation library. + * @param version The version of the tracer or instrumentation library. + * @param options The options of the tracer or instrumentation library. + * @returns Tracer A Tracer with the given name and version + */ + getTracer(name: string, version?: string, options?: TracerOptions): Tracer; +} +//# sourceMappingURL=tracer_provider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.js new file mode 100644 index 0000000..4c511db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=tracer_provider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.js.map new file mode 100644 index 0000000..31f334a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracer_provider.js","sourceRoot":"","sources":["../../../src/trace/tracer_provider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\n/**\n * A registry for creating named {@link Tracer}s.\n */\nexport interface TracerProvider {\n /**\n * Returns a Tracer, creating one if one with the given name and version is\n * not already created.\n *\n * This function may return different Tracer types (e.g.\n * {@link NoopTracerProvider} vs. a functional tracer).\n *\n * @param name The name of the tracer or instrumentation library.\n * @param version The version of the tracer or instrumentation library.\n * @param options The options of the tracer or instrumentation library.\n * @returns Tracer A Tracer with the given name and version\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/version.d.ts new file mode 100644 index 0000000..40f0365 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "1.9.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/version.js new file mode 100644 index 0000000..3c71794 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '1.9.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/version.js.map new file mode 100644 index 0000000..ee3c12c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.9.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/api/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/api/package.json new file mode 100644 index 0000000..f7ba45f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/api/package.json @@ -0,0 +1,113 @@ +{ + "name": "@opentelemetry/api", + "version": "1.9.0", + "description": "Public API for OpenTelemetry", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "types": "build/src/index.d.ts", + "browser": { + "./src/platform/index.ts": "./src/platform/browser/index.ts", + "./build/esm/platform/index.js": "./build/esm/platform/browser/index.js", + "./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js", + "./build/src/platform/index.js": "./build/src/platform/browser/index.js" + }, + "exports": { + ".": { + "module": "./build/esm/index.js", + "esnext": "./build/esnext/index.js", + "types": "./build/src/index.d.ts", + "default": "./build/src/index.js" + }, + "./experimental": { + "module": "./build/esm/experimental/index.js", + "esnext": "./build/esnext/experimental/index.js", + "types": "./build/src/experimental/index.d.ts", + "default": "./build/src/experimental/index.js" + } + }, + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../", + "codecov:webworker": "nyc report --reporter=json && codecov -f coverage/*.json -p ../", + "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "docs": "typedoc", + "docs:deploy": "gh-pages --dist docs/out", + "docs:test": "linkinator docs/out --silent && linkinator docs/*.md *.md --markdown --silent", + "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext .ts", + "test:browser": "karma start --single-run", + "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", + "test:eol": "ts-mocha -p tsconfig.json 'test/**/*.test.ts'", + "test:webworker": "karma start karma.worker.js --single-run", + "cycle-check": "dpdm --exit-code circular:1 src/index.ts", + "version": "node ../scripts/version-update.js", + "prewatch": "npm run precompile", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "peer-api-check": "node ../scripts/peer-api-check.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "browser", + "tracing", + "profiling", + "stats", + "monitoring" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@types/mocha": "10.0.6", + "@types/node": "18.6.5", + "@types/sinon": "17.0.3", + "@types/webpack": "5.28.5", + "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "6.1.1", + "codecov": "3.8.3", + "cross-var": "1.1.0", + "dpdm": "3.13.1", + "karma": "6.4.3", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-mocha-webworker": "1.3.0", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "lerna": "6.6.2", + "memfs": "3.5.3", + "mocha": "10.2.0", + "nyc": "15.1.0", + "sinon": "15.1.2", + "ts-loader": "9.5.1", + "ts-mocha": "10.0.0", + "typescript": "4.4.4", + "unionfs": "4.5.4", + "webpack": "5.89.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/api", + "sideEffects": false, + "gitHead": "c4d3351b6b3f5593c8d7cbfec97b45cea9fe1511" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/README.md new file mode 100644 index 0000000..b0b836c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/README.md @@ -0,0 +1,44 @@ +# OpenTelemetry async_hooks-based Context Managers + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This package provides two [`ContextManager`](https://open-telemetry.github.io/opentelemetry-js/interfaces/_opentelemetry_api.ContextManager.html) implementations built on APIs from Node.js's [`async_hooks`][async-hooks-doc] module. If you're looking for a `ContextManager` to use in browser environments, consider [opentelemetry-context-zone](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-zone) or [opentelemetry-context-zone-peer-dep](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-zone-peer-dep). + +See [the definition of the `ContextManager` interface][def-context-manager] and the problem it solves. + +## API + +Two `ContextManager` implementations are exported: + +- `AsyncLocalStorageContextManager`, based on [`AsyncLocalStorage`](https://nodejs.org/api/async_context.html#class-asynclocalstorage) +- `AsyncHooksContextManager`, based on [`AsyncHook`](https://nodejs.org/api/async_hooks.html#async_hooks_class_asynchook). This is **deprecated** and will be removed in v3 (planned for mid-2025. `AsyncLocalStorage` is simpler, faster, available in Node.js v14.8.0 and later, and avoids [this possible DoS vulnerability](https://nodejs.org/en/blog/vulnerability/january-2026-dos-mitigation-async-hooks). + +## Prior art + +Context propagation is a big subject when talking about tracing in Node.js. If you want more information about it here are some resources: + +- (which was the old way of doing context propagation) +- [Datadog's own implementation][dd-js-tracer-scope] for their JavaScript tracer +- [OpenTracing implementation][opentracing-scope] +- [Discussion about context propagation][diag-team-scope-discussion] by the Node.js Diagnostics Working Group + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[def-context-manager]: https://opentelemetry.io/docs/instrumentation/js/api/context/#context-manager +[dd-js-tracer-scope]: https://github.com/DataDog/dd-trace-js/blob/master/packages/dd-trace/src/scope.js +[opentracing-scope]: https://github.com/opentracing/opentracing-javascript/pull/113 +[diag-team-scope-discussion]: https://github.com/nodejs/diagnostics/issues/300 +[npm-url]: https://www.npmjs.com/package/@opentelemetry/context-async-hooks +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fcontext-async-hooks.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.d.ts new file mode 100644 index 0000000..d325d35 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.d.ts @@ -0,0 +1,50 @@ +import { ContextManager, Context } from '@opentelemetry/api'; +export declare abstract class AbstractAsyncHooksContextManager implements ContextManager { + abstract active(): Context; + abstract with ReturnType>(context: Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + abstract enable(): this; + abstract disable(): this; + /** + * Binds a the certain context or the active one to the target function and then returns the target + * @param context A context (span) to be bind to target + * @param target a function or event emitter. When target or one of its callbacks is called, + * the provided context will be used as the active context for the duration of the call. + */ + bind(context: Context, target: T): T; + private _bindFunction; + /** + * By default, EventEmitter call their callback with their context, which we do + * not want, instead we will bind a specific context to all callbacks that + * go through it. + * @param context the context we want to bind + * @param ee EventEmitter an instance of EventEmitter to patch + */ + private _bindEventEmitter; + /** + * Patch methods that remove a given listener so that we match the "patched" + * version of that listener (the one that propagate context). + * @param ee EventEmitter instance + * @param original reference to the patched method + */ + private _patchRemoveListener; + /** + * Patch methods that remove all listeners so we remove our + * internal references for a given event. + * @param ee EventEmitter instance + * @param original reference to the patched method + */ + private _patchRemoveAllListeners; + /** + * Patch methods on an event emitter instance that can add listeners so we + * can force them to propagate a given context. + * @param ee EventEmitter instance + * @param original reference to the patched method + * @param [context] context to propagate when calling listeners + */ + private _patchAddListener; + private _createPatchMap; + private _getPatchMap; + private readonly _kOtListeners; + private _wrapped; +} +//# sourceMappingURL=AbstractAsyncHooksContextManager.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js new file mode 100644 index 0000000..286ab16 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js @@ -0,0 +1,188 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AbstractAsyncHooksContextManager = void 0; +const events_1 = require("events"); +const ADD_LISTENER_METHODS = [ + 'addListener', + 'on', + 'once', + 'prependListener', + 'prependOnceListener', +]; +class AbstractAsyncHooksContextManager { + /** + * Binds a the certain context or the active one to the target function and then returns the target + * @param context A context (span) to be bind to target + * @param target a function or event emitter. When target or one of its callbacks is called, + * the provided context will be used as the active context for the duration of the call. + */ + bind(context, target) { + if (target instanceof events_1.EventEmitter) { + return this._bindEventEmitter(context, target); + } + if (typeof target === 'function') { + return this._bindFunction(context, target); + } + return target; + } + _bindFunction(context, target) { + const manager = this; + const contextWrapper = function (...args) { + return manager.with(context, () => target.apply(this, args)); + }; + Object.defineProperty(contextWrapper, 'length', { + enumerable: false, + configurable: true, + writable: false, + value: target.length, + }); + /** + * It isn't possible to tell Typescript that contextWrapper is the same as T + * so we forced to cast as any here. + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return contextWrapper; + } + /** + * By default, EventEmitter call their callback with their context, which we do + * not want, instead we will bind a specific context to all callbacks that + * go through it. + * @param context the context we want to bind + * @param ee EventEmitter an instance of EventEmitter to patch + */ + _bindEventEmitter(context, ee) { + const map = this._getPatchMap(ee); + if (map !== undefined) + return ee; + this._createPatchMap(ee); + // patch methods that add a listener to propagate context + ADD_LISTENER_METHODS.forEach(methodName => { + if (ee[methodName] === undefined) + return; + ee[methodName] = this._patchAddListener(ee, ee[methodName], context); + }); + // patch methods that remove a listener + if (typeof ee.removeListener === 'function') { + ee.removeListener = this._patchRemoveListener(ee, ee.removeListener); + } + if (typeof ee.off === 'function') { + ee.off = this._patchRemoveListener(ee, ee.off); + } + // patch method that remove all listeners + if (typeof ee.removeAllListeners === 'function') { + ee.removeAllListeners = this._patchRemoveAllListeners(ee, ee.removeAllListeners); + } + return ee; + } + /** + * Patch methods that remove a given listener so that we match the "patched" + * version of that listener (the one that propagate context). + * @param ee EventEmitter instance + * @param original reference to the patched method + */ + _patchRemoveListener(ee, original) { + const contextManager = this; + return function (event, listener) { + const events = contextManager._getPatchMap(ee)?.[event]; + if (events === undefined) { + return original.call(this, event, listener); + } + const patchedListener = events.get(listener); + return original.call(this, event, patchedListener || listener); + }; + } + /** + * Patch methods that remove all listeners so we remove our + * internal references for a given event. + * @param ee EventEmitter instance + * @param original reference to the patched method + */ + _patchRemoveAllListeners(ee, original) { + const contextManager = this; + return function (event) { + const map = contextManager._getPatchMap(ee); + if (map !== undefined) { + if (arguments.length === 0) { + contextManager._createPatchMap(ee); + } + else if (map[event] !== undefined) { + delete map[event]; + } + } + return original.apply(this, arguments); + }; + } + /** + * Patch methods on an event emitter instance that can add listeners so we + * can force them to propagate a given context. + * @param ee EventEmitter instance + * @param original reference to the patched method + * @param [context] context to propagate when calling listeners + */ + _patchAddListener(ee, original, context) { + const contextManager = this; + return function (event, listener) { + /** + * This check is required to prevent double-wrapping the listener. + * The implementation for ee.once wraps the listener and calls ee.on. + * Without this check, we would wrap that wrapped listener. + * This causes an issue because ee.removeListener depends on the onceWrapper + * to properly remove the listener. If we wrap their wrapper, we break + * that detection. + */ + if (contextManager._wrapped) { + return original.call(this, event, listener); + } + let map = contextManager._getPatchMap(ee); + if (map === undefined) { + map = contextManager._createPatchMap(ee); + } + let listeners = map[event]; + if (listeners === undefined) { + listeners = new WeakMap(); + map[event] = listeners; + } + const patchedListener = contextManager.bind(context, listener); + // store a weak reference of the user listener to ours + listeners.set(listener, patchedListener); + /** + * See comment at the start of this function for the explanation of this property. + */ + contextManager._wrapped = true; + try { + return original.call(this, event, patchedListener); + } + finally { + contextManager._wrapped = false; + } + }; + } + _createPatchMap(ee) { + const map = Object.create(null); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ee[this._kOtListeners] = map; + return map; + } + _getPatchMap(ee) { + return ee[this._kOtListeners]; + } + _kOtListeners = Symbol('OtListeners'); + _wrapped = false; +} +exports.AbstractAsyncHooksContextManager = AbstractAsyncHooksContextManager; +//# sourceMappingURL=AbstractAsyncHooksContextManager.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js.map new file mode 100644 index 0000000..cbb85e0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AbstractAsyncHooksContextManager.js","sourceRoot":"","sources":["../../src/AbstractAsyncHooksContextManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ContextManager, Context } from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\n\ntype Func = (...args: unknown[]) => T;\n\n/**\n * Store a map for each event of all original listeners and their \"patched\"\n * version. So when a listener is removed by the user, the corresponding\n * patched function will be also removed.\n */\ninterface PatchMap {\n [name: string]: WeakMap, Func>;\n}\n\nconst ADD_LISTENER_METHODS = [\n 'addListener' as const,\n 'on' as const,\n 'once' as const,\n 'prependListener' as const,\n 'prependOnceListener' as const,\n];\n\nexport abstract class AbstractAsyncHooksContextManager\n implements ContextManager\n{\n abstract active(): Context;\n\n abstract with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType;\n\n abstract enable(): this;\n\n abstract disable(): this;\n\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: Context, target: T): T {\n if (target instanceof EventEmitter) {\n return this._bindEventEmitter(context, target);\n }\n\n if (typeof target === 'function') {\n return this._bindFunction(context, target);\n }\n return target;\n }\n\n private _bindFunction(context: Context, target: T): T {\n const manager = this;\n const contextWrapper = function (this: never, ...args: unknown[]) {\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 as any;\n }\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 private _bindEventEmitter(\n context: Context,\n ee: T\n ): T {\n const map = this._getPatchMap(ee);\n if (map !== undefined) return ee;\n this._createPatchMap(ee);\n\n // patch methods that add a listener to propagate context\n ADD_LISTENER_METHODS.forEach(methodName => {\n if (ee[methodName] === undefined) 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(\n ee,\n ee.removeAllListeners\n );\n }\n return ee;\n }\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 private _patchRemoveListener(ee: EventEmitter, original: Function) {\n const contextManager = this;\n return function (this: never, event: string, listener: Func) {\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 /**\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 private _patchRemoveAllListeners(ee: EventEmitter, original: Function) {\n const contextManager = this;\n return function (this: never, event: string) {\n const map = contextManager._getPatchMap(ee);\n if (map !== undefined) {\n if (arguments.length === 0) {\n contextManager._createPatchMap(ee);\n } else if (map[event] !== undefined) {\n delete map[event];\n }\n }\n return original.apply(this, arguments);\n };\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 private _patchAddListener(\n ee: EventEmitter,\n original: Function,\n context: Context\n ) {\n const contextManager = this;\n return function (this: never, event: string, listener: Func) {\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 /**\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 } finally {\n contextManager._wrapped = false;\n }\n };\n }\n\n private _createPatchMap(ee: EventEmitter): PatchMap {\n const map = Object.create(null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (ee as any)[this._kOtListeners] = map;\n return map;\n }\n private _getPatchMap(ee: EventEmitter): PatchMap | undefined {\n return (ee as never)[this._kOtListeners];\n }\n\n private readonly _kOtListeners = Symbol('OtListeners');\n private _wrapped = false;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.d.ts new file mode 100644 index 0000000..c356200 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.d.ts @@ -0,0 +1,46 @@ +import { Context } from '@opentelemetry/api'; +import { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager'; +/** + * @deprecated Use AsyncLocalStorageContextManager instead. + */ +export declare class AsyncHooksContextManager extends AbstractAsyncHooksContextManager { + private _asyncHook; + private _contexts; + private _stack; + constructor(); + active(): Context; + with ReturnType>(context: Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + enable(): this; + disable(): this; + /** + * Init hook will be called when userland create a async context, setting the + * context as the current one if it exist. + * @param uid id of the async context + * @param type the resource type + */ + private _init; + /** + * Destroy hook will be called when a given context is no longer used so we can + * remove its attached context. + * @param uid uid of the async context + */ + private _destroy; + /** + * Before hook is called just before executing a async context. + * @param uid uid of the async context + */ + private _before; + /** + * After hook is called just after completing the execution of a async context. + */ + private _after; + /** + * Set the given context as active + */ + private _enterContext; + /** + * Remove the context at the root of the stack + */ + private _exitContext; +} +//# sourceMappingURL=AsyncHooksContextManager.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js new file mode 100644 index 0000000..8c9b3d9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js @@ -0,0 +1,117 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsyncHooksContextManager = void 0; +const api_1 = require("@opentelemetry/api"); +const asyncHooks = require("async_hooks"); +const AbstractAsyncHooksContextManager_1 = require("./AbstractAsyncHooksContextManager"); +/** + * @deprecated Use AsyncLocalStorageContextManager instead. + */ +class AsyncHooksContextManager extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager { + _asyncHook; + _contexts = new Map(); + _stack = []; + constructor() { + super(); + this._asyncHook = asyncHooks.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] ?? api_1.ROOT_CONTEXT; + } + with(context, fn, thisArg, ...args) { + this._enterContext(context); + try { + return fn.call(thisArg, ...args); + } + finally { + this._exitContext(); + } + } + enable() { + this._asyncHook.enable(); + return this; + } + disable() { + this._asyncHook.disable(); + this._contexts.clear(); + this._stack = []; + return this; + } + /** + * Init hook will be called when userland create a async context, setting the + * context as the current one if it exist. + * @param uid id of the async context + * @param type the resource type + */ + _init(uid, type) { + // ignore TIMERWRAP as they combine timers with same timeout which can lead to + // false context propagation. TIMERWRAP has been removed in node 11 + // every timer has it's own `Timeout` resource anyway which is used to propagate + // context. + if (type === 'TIMERWRAP') + return; + const context = this._stack[this._stack.length - 1]; + if (context !== undefined) { + this._contexts.set(uid, context); + } + } + /** + * Destroy hook will be called when a given context is no longer used so we can + * remove its attached context. + * @param uid uid of the async context + */ + _destroy(uid) { + this._contexts.delete(uid); + } + /** + * Before hook is called just before executing a async context. + * @param uid uid of the async context + */ + _before(uid) { + const context = this._contexts.get(uid); + if (context !== undefined) { + this._enterContext(context); + } + } + /** + * After hook is called just after completing the execution of a async context. + */ + _after() { + this._exitContext(); + } + /** + * Set the given context as active + */ + _enterContext(context) { + this._stack.push(context); + } + /** + * Remove the context at the root of the stack + */ + _exitContext() { + this._stack.pop(); + } +} +exports.AsyncHooksContextManager = AsyncHooksContextManager; +//# sourceMappingURL=AsyncHooksContextManager.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js.map new file mode 100644 index 0000000..41d40ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsyncHooksContextManager.js","sourceRoot":"","sources":["../../src/AsyncHooksContextManager.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA2D;AAC3D,0CAA0C;AAC1C,yFAAsF;AAEtF;;GAEG;AACH,MAAa,wBAAyB,SAAQ,mEAAgC;IACpE,UAAU,CAAuB;IACjC,SAAS,GAAyB,IAAI,GAAG,EAAE,CAAC;IAC5C,MAAM,GAA+B,EAAE,CAAC;IAEhD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;SACzC,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,kBAAY,CAAC;IAC7D,CAAC;IAED,IAAI,CACF,OAAgB,EAChB,EAAK,EACL,OAA8B,EAC9B,GAAG,IAAO;QAEV,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI;YACF,OAAO,EAAE,CAAC,IAAI,CAAC,OAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;SACnC;gBAAS;YACR,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,GAAW,EAAE,IAAY;QACrC,8EAA8E;QAC9E,mEAAmE;QACnE,gFAAgF;QAChF,WAAW;QACX,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO;QAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;SAClC;IACH,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAC,GAAW;QAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACK,OAAO,CAAC,GAAW;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC7B;IACH,CAAC;IAED;;OAEG;IACK,MAAM;QACZ,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,OAAgB;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;CACF;AAzGD,4DAyGC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, ROOT_CONTEXT } from '@opentelemetry/api';\nimport * as asyncHooks from 'async_hooks';\nimport { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager';\n\n/**\n * @deprecated Use AsyncLocalStorageContextManager instead.\n */\nexport class AsyncHooksContextManager extends AbstractAsyncHooksContextManager {\n private _asyncHook: asyncHooks.AsyncHook;\n private _contexts: Map = new Map();\n private _stack: Array = [];\n\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\n active(): Context {\n return this._stack[this._stack.length - 1] ?? ROOT_CONTEXT;\n }\n\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n this._enterContext(context);\n try {\n return fn.call(thisArg!, ...args);\n } finally {\n this._exitContext();\n }\n }\n\n enable(): this {\n this._asyncHook.enable();\n return this;\n }\n\n disable(): this {\n this._asyncHook.disable();\n this._contexts.clear();\n this._stack = [];\n return this;\n }\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 private _init(uid: number, type: string) {\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') return;\n\n const context = this._stack[this._stack.length - 1];\n if (context !== undefined) {\n this._contexts.set(uid, context);\n }\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 private _destroy(uid: number) {\n this._contexts.delete(uid);\n }\n\n /**\n * Before hook is called just before executing a async context.\n * @param uid uid of the async context\n */\n private _before(uid: number) {\n const context = this._contexts.get(uid);\n if (context !== undefined) {\n this._enterContext(context);\n }\n }\n\n /**\n * After hook is called just after completing the execution of a async context.\n */\n private _after() {\n this._exitContext();\n }\n\n /**\n * Set the given context as active\n */\n private _enterContext(context: Context) {\n this._stack.push(context);\n }\n\n /**\n * Remove the context at the root of the stack\n */\n private _exitContext() {\n this._stack.pop();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.d.ts new file mode 100644 index 0000000..4690371 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.d.ts @@ -0,0 +1,11 @@ +import { Context } from '@opentelemetry/api'; +import { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager'; +export declare class AsyncLocalStorageContextManager extends AbstractAsyncHooksContextManager { + private _asyncLocalStorage; + constructor(); + active(): Context; + with ReturnType>(context: Context, fn: F, thisArg?: ThisParameterType, ...args: A): ReturnType; + enable(): this; + disable(): this; +} +//# sourceMappingURL=AsyncLocalStorageContextManager.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js new file mode 100644 index 0000000..dc3400d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js @@ -0,0 +1,44 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsyncLocalStorageContextManager = void 0; +const api_1 = require("@opentelemetry/api"); +const async_hooks_1 = require("async_hooks"); +const AbstractAsyncHooksContextManager_1 = require("./AbstractAsyncHooksContextManager"); +class AsyncLocalStorageContextManager extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager { + _asyncLocalStorage; + constructor() { + super(); + this._asyncLocalStorage = new async_hooks_1.AsyncLocalStorage(); + } + active() { + return this._asyncLocalStorage.getStore() ?? api_1.ROOT_CONTEXT; + } + with(context, fn, thisArg, ...args) { + const cb = thisArg == null ? fn : fn.bind(thisArg); + return this._asyncLocalStorage.run(context, cb, ...args); + } + enable() { + return this; + } + disable() { + this._asyncLocalStorage.disable(); + return this; + } +} +exports.AsyncLocalStorageContextManager = AsyncLocalStorageContextManager; +//# sourceMappingURL=AsyncLocalStorageContextManager.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js.map new file mode 100644 index 0000000..ba0cac1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsyncLocalStorageContextManager.js","sourceRoot":"","sources":["../../src/AsyncLocalStorageContextManager.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA2D;AAC3D,6CAAgD;AAChD,yFAAsF;AAEtF,MAAa,+BAAgC,SAAQ,mEAAgC;IAC3E,kBAAkB,CAA6B;IAEvD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,kBAAkB,GAAG,IAAI,+BAAiB,EAAE,CAAC;IACpD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,kBAAY,CAAC;IAC5D,CAAC;IAED,IAAI,CACF,OAAgB,EAChB,EAAK,EACL,OAA8B,EAC9B,GAAG,IAAO;QAEV,MAAM,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAW,EAAE,GAAG,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA9BD,0EA8BC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, ROOT_CONTEXT } from '@opentelemetry/api';\nimport { AsyncLocalStorage } from 'async_hooks';\nimport { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager';\n\nexport class AsyncLocalStorageContextManager extends AbstractAsyncHooksContextManager {\n private _asyncLocalStorage: AsyncLocalStorage;\n\n constructor() {\n super();\n this._asyncLocalStorage = new AsyncLocalStorage();\n }\n\n active(): Context {\n return this._asyncLocalStorage.getStore() ?? ROOT_CONTEXT;\n }\n\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n const cb = thisArg == null ? fn : fn.bind(thisArg);\n return this._asyncLocalStorage.run(context, cb as never, ...args);\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n this._asyncLocalStorage.disable();\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/index.d.ts new file mode 100644 index 0000000..f6caa7b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { AsyncHooksContextManager } from './AsyncHooksContextManager'; +export { AsyncLocalStorageContextManager } from './AsyncLocalStorageContextManager'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/index.js new file mode 100644 index 0000000..7e10f60 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/index.js @@ -0,0 +1,23 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsyncLocalStorageContextManager = exports.AsyncHooksContextManager = void 0; +var AsyncHooksContextManager_1 = require("./AsyncHooksContextManager"); +Object.defineProperty(exports, "AsyncHooksContextManager", { enumerable: true, get: function () { return AsyncHooksContextManager_1.AsyncHooksContextManager; } }); +var AsyncLocalStorageContextManager_1 = require("./AsyncLocalStorageContextManager"); +Object.defineProperty(exports, "AsyncLocalStorageContextManager", { enumerable: true, get: function () { return AsyncLocalStorageContextManager_1.AsyncLocalStorageContextManager; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/index.js.map new file mode 100644 index 0000000..ea63891 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,qFAAoF;AAA3E,kJAAA,+BAA+B,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { AsyncHooksContextManager } from './AsyncHooksContextManager';\nexport { AsyncLocalStorageContextManager } from './AsyncLocalStorageContextManager';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/version.d.ts new file mode 100644 index 0000000..4539690 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "2.5.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/version.js new file mode 100644 index 0000000..b099165 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '2.5.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/version.js.map new file mode 100644 index 0000000..0c15794 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.5.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/package.json new file mode 100644 index 0000000..29c6013 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/context-async-hooks/package.json @@ -0,0 +1,59 @@ +{ + "name": "@opentelemetry/context-async-hooks", + "version": "2.5.0", + "description": "OpenTelemetry AsyncLocalStorage-based Context Manager", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build", + "clean": "tsc --build --clean", + "test": "nyc mocha 'test/**/*.test.ts'", + "tdd": "npm run test -- --watch-extensions ts --watch", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "version": "node ../../scripts/version-update.js", + "prewatch": "npm run precompile", + "peer-api-check": "node ../../scripts/peer-api-check.js", + "align-api-deps": "node ../../scripts/align-api-deps.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "tracing", + "profiling", + "metrics", + "stats" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0", + "@types/mocha": "10.0.10", + "@types/node": "18.19.130", + "mocha": "11.7.5", + "nyc": "17.1.0", + "typescript": "5.0.4" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-async-hooks", + "sideEffects": false, + "gitHead": "38924cbff2a6e924ce8a2a227d3a72de52fbcd35" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/core/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/core/README.md new file mode 100644 index 0000000..1d543dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/README.md @@ -0,0 +1,73 @@ +# OpenTelemetry Core + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This package provides default implementations of the OpenTelemetry API for trace and metrics. It's intended for use both on the server and in the browser. + +## Built-in Implementations + +- [OpenTelemetry Core](#opentelemetry-core) + - [Built-in Implementations](#built-in-implementations) + - [Built-in Propagators](#built-in-propagators) + - [W3CTraceContextPropagator Propagator](#w3ctracecontextpropagator-propagator) + - [Composite Propagator](#composite-propagator) + - [Baggage Propagator](#baggage-propagator) + - [Useful links](#useful-links) + - [License](#license) + +### Built-in Propagators + +#### W3CTraceContextPropagator Propagator + +OpenTelemetry provides a text-based approach to propagate context to remote services using the [W3C Trace Context](https://www.w3.org/TR/trace-context/) HTTP headers. + +```js +const api = require("@opentelemetry/api"); +const { W3CTraceContextPropagator } = require("@opentelemetry/core"); + +/* Set Global Propagator */ +api.propagation.setGlobalPropagator(new W3CTraceContextPropagator()); +``` + +#### Composite Propagator + +Combines multiple propagators into a single propagator. + +> This is used as a default Propagator + +```js +const api = require("@opentelemetry/api"); +const { CompositePropagator } = require("@opentelemetry/core"); + +/* Set Global Propagator */ +api.propagation.setGlobalPropagator(new CompositePropagator()); +``` + +#### Baggage Propagator + +Provides a text-based approach to propagate [baggage](https://w3c.github.io/baggage/) to remote services using the [OpenTelemetry Baggage Propagation](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/baggage/api.md#baggage-propagation) HTTP headers. + +```js +const api = require("@opentelemetry/api"); +const { W3CBaggagePropagator } = require("@opentelemetry/core"); + +/* Set Global Propagator */ +api.propagation.setGlobalPropagator(new W3CBaggagePropagator()); +``` + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/core +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fcore.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/ExportResult.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/ExportResult.d.ts new file mode 100644 index 0000000..570361b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/ExportResult.d.ts @@ -0,0 +1,9 @@ +export interface ExportResult { + code: ExportResultCode; + error?: Error; +} +export declare enum ExportResultCode { + SUCCESS = 0, + FAILED = 1 +} +//# sourceMappingURL=ExportResult.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/ExportResult.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/ExportResult.js new file mode 100644 index 0000000..5272c76 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/ExportResult.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var ExportResultCode; +(function (ExportResultCode) { + ExportResultCode[ExportResultCode["SUCCESS"] = 0] = "SUCCESS"; + ExportResultCode[ExportResultCode["FAILED"] = 1] = "FAILED"; +})(ExportResultCode || (ExportResultCode = {})); +//# sourceMappingURL=ExportResult.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/ExportResult.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/ExportResult.js.map new file mode 100644 index 0000000..69fd9e7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/ExportResult.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ExportResult.js","sourceRoot":"","sources":["../../src/ExportResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,6DAAO,CAAA;IACP,2DAAM,CAAA;AACR,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface ExportResult {\n code: ExportResultCode;\n error?: Error;\n}\n\nexport enum ExportResultCode {\n SUCCESS,\n FAILED,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/constants.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/constants.d.ts new file mode 100644 index 0000000..72470ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/constants.d.ts @@ -0,0 +1,8 @@ +export declare const BAGGAGE_KEY_PAIR_SEPARATOR = "="; +export declare const BAGGAGE_PROPERTIES_SEPARATOR = ";"; +export declare const BAGGAGE_ITEMS_SEPARATOR = ","; +export declare const BAGGAGE_HEADER = "baggage"; +export declare const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180; +export declare const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096; +export declare const BAGGAGE_MAX_TOTAL_LENGTH = 8192; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/constants.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/constants.js new file mode 100644 index 0000000..4ade400 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/constants.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const BAGGAGE_KEY_PAIR_SEPARATOR = '='; +export const BAGGAGE_PROPERTIES_SEPARATOR = ';'; +export const BAGGAGE_ITEMS_SEPARATOR = ','; +// Name of the http header used to propagate the baggage +export const BAGGAGE_HEADER = 'baggage'; +// Maximum number of name-value pairs allowed by w3c spec +export const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180; +// Maximum number of bytes per a single name-value pair allowed by w3c spec +export const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096; +// Maximum total length of all name-value pairs allowed by w3c spec +export const BAGGAGE_MAX_TOTAL_LENGTH = 8192; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/constants.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/constants.js.map new file mode 100644 index 0000000..8582c91 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/baggage/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,wDAAwD;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,yDAAyD;AACzD,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,CAAC;AACrD,mEAAmE;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport const BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexport const BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexport const BAGGAGE_ITEMS_SEPARATOR = ',';\n\n// Name of the http header used to propagate the baggage\nexport const BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexport const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/propagation/W3CBaggagePropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/propagation/W3CBaggagePropagator.d.ts new file mode 100644 index 0000000..d946bb1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/propagation/W3CBaggagePropagator.d.ts @@ -0,0 +1,13 @@ +import { Context, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api'; +/** + * Propagates {@link Baggage} through Context format propagation. + * + * Based on the Baggage specification: + * https://w3c.github.io/baggage/ + */ +export declare class W3CBaggagePropagator implements TextMapPropagator { + inject(context: Context, carrier: unknown, setter: TextMapSetter): void; + extract(context: Context, carrier: unknown, getter: TextMapGetter): Context; + fields(): string[]; +} +//# sourceMappingURL=W3CBaggagePropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/propagation/W3CBaggagePropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/propagation/W3CBaggagePropagator.js new file mode 100644 index 0000000..bd17a61 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/propagation/W3CBaggagePropagator.js @@ -0,0 +1,72 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { propagation, } from '@opentelemetry/api'; +import { isTracingSuppressed } from '../../trace/suppress-tracing'; +import { BAGGAGE_HEADER, BAGGAGE_ITEMS_SEPARATOR, BAGGAGE_MAX_NAME_VALUE_PAIRS, BAGGAGE_MAX_PER_NAME_VALUE_PAIRS, } from '../constants'; +import { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from '../utils'; +/** + * Propagates {@link Baggage} through Context format propagation. + * + * Based on the Baggage specification: + * https://w3c.github.io/baggage/ + */ +export class W3CBaggagePropagator { + inject(context, carrier, setter) { + const baggage = propagation.getBaggage(context); + if (!baggage || isTracingSuppressed(context)) + return; + const keyPairs = getKeyPairs(baggage) + .filter((pair) => { + return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS; + }) + .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS); + const headerValue = serializeKeyPairs(keyPairs); + if (headerValue.length > 0) { + setter.set(carrier, BAGGAGE_HEADER, headerValue); + } + } + extract(context, carrier, getter) { + const headerValue = getter.get(carrier, BAGGAGE_HEADER); + const baggageString = Array.isArray(headerValue) + ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR) + : headerValue; + if (!baggageString) + return context; + const baggage = {}; + if (baggageString.length === 0) { + return context; + } + const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR); + pairs.forEach(entry => { + const keyPair = parsePairKeyValue(entry); + if (keyPair) { + const baggageEntry = { value: keyPair.value }; + if (keyPair.metadata) { + baggageEntry.metadata = keyPair.metadata; + } + baggage[keyPair.key] = baggageEntry; + } + }); + if (Object.entries(baggage).length === 0) { + return context; + } + return propagation.setBaggage(context, propagation.createBaggage(baggage)); + } + fields() { + return [BAGGAGE_HEADER]; + } +} +//# sourceMappingURL=W3CBaggagePropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/propagation/W3CBaggagePropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/propagation/W3CBaggagePropagator.js.map new file mode 100644 index 0000000..aba8c2b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/propagation/W3CBaggagePropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"W3CBaggagePropagator.js","sourceRoot":"","sources":["../../../../src/baggage/propagation/W3CBaggagePropagator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,WAAW,GAIZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IAC/B,MAAM,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC9D,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC;YAAE,OAAO;QACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;aAClC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;YACvB,OAAO,IAAI,CAAC,MAAM,IAAI,gCAAgC,CAAC;QACzD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;SAClD;IACH,CAAC;IAED,OAAO,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC;QAChB,IAAI,CAAC,aAAa;YAAE,OAAO,OAAO,CAAC;QACnC,MAAM,OAAO,GAAiC,EAAE,CAAC;QACjD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,OAAO,OAAO,CAAC;SAChB;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpB,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,OAAO,EAAE;gBACX,MAAM,YAAY,GAAiB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC5D,IAAI,OAAO,CAAC,QAAQ,EAAE;oBACpB,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;iBAC1C;gBACD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n BaggageEntry,\n Context,\n propagation,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\n\nimport { isTracingSuppressed } from '../../trace/suppress-tracing';\nimport {\n BAGGAGE_HEADER,\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_MAX_NAME_VALUE_PAIRS,\n BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,\n} from '../constants';\nimport { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from '../utils';\n\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nexport class W3CBaggagePropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const baggage = propagation.getBaggage(context);\n if (!baggage || isTracingSuppressed(context)) return;\n const keyPairs = getKeyPairs(baggage)\n .filter((pair: string) => {\n return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = serializeKeyPairs(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, BAGGAGE_HEADER, headerValue);\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const headerValue = getter.get(carrier, BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString) return context;\n const baggage: Record = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair) {\n const baggageEntry: 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 propagation.setBaggage(context, propagation.createBaggage(baggage));\n }\n\n fields(): string[] {\n return [BAGGAGE_HEADER];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/utils.d.ts new file mode 100644 index 0000000..f6fe906 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/utils.d.ts @@ -0,0 +1,16 @@ +import { Baggage, BaggageEntryMetadata } from '@opentelemetry/api'; +type ParsedBaggageKeyValue = { + key: string; + value: string; + metadata: BaggageEntryMetadata | undefined; +}; +export declare function serializeKeyPairs(keyPairs: string[]): string; +export declare function getKeyPairs(baggage: Baggage): string[]; +export declare function parsePairKeyValue(entry: string): ParsedBaggageKeyValue | undefined; +/** + * Parse a string serialized in the baggage HTTP Format (without metadata): + * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md + */ +export declare function parseKeyPairsIntoRecord(value?: string): Record; +export {}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/utils.js new file mode 100644 index 0000000..db4c9ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/utils.js @@ -0,0 +1,82 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { baggageEntryMetadataFromString, } from '@opentelemetry/api'; +import { BAGGAGE_ITEMS_SEPARATOR, BAGGAGE_PROPERTIES_SEPARATOR, BAGGAGE_KEY_PAIR_SEPARATOR, BAGGAGE_MAX_TOTAL_LENGTH, } from './constants'; +export function serializeKeyPairs(keyPairs) { + return keyPairs.reduce((hValue, current) => { + const value = `${hValue}${hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''}${current}`; + return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value; + }, ''); +} +export function getKeyPairs(baggage) { + return baggage.getAllEntries().map(([key, value]) => { + let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`; + // include opaque metadata if provided + // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation + if (value.metadata !== undefined) { + entry += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString(); + } + return entry; + }); +} +export function parsePairKeyValue(entry) { + if (!entry) + return; + const metadataSeparatorIndex = entry.indexOf(BAGGAGE_PROPERTIES_SEPARATOR); + const keyPairPart = metadataSeparatorIndex === -1 + ? entry + : entry.substring(0, metadataSeparatorIndex); + const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR); + if (separatorIndex <= 0) + return; + const rawKey = keyPairPart.substring(0, separatorIndex).trim(); + const rawValue = keyPairPart.substring(separatorIndex + 1).trim(); + if (!rawKey || !rawValue) + return; + let key; + let value; + try { + key = decodeURIComponent(rawKey); + value = decodeURIComponent(rawValue); + } + catch { + return; + } + let metadata; + if (metadataSeparatorIndex !== -1 && + metadataSeparatorIndex < entry.length - 1) { + const metadataString = entry.substring(metadataSeparatorIndex + 1); + metadata = baggageEntryMetadataFromString(metadataString); + } + return { key, value, metadata }; +} +/** + * Parse a string serialized in the baggage HTTP Format (without metadata): + * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md + */ +export function parseKeyPairsIntoRecord(value) { + const result = {}; + if (typeof value === 'string' && value.length > 0) { + value.split(BAGGAGE_ITEMS_SEPARATOR).forEach(entry => { + const keyPair = parsePairKeyValue(entry); + if (keyPair !== undefined && keyPair.value.length > 0) { + result[keyPair.key] = keyPair.value; + } + }); + } + return result; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/utils.js.map new file mode 100644 index 0000000..82f674d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/baggage/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/baggage/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Baggage,\n BaggageEntryMetadata,\n baggageEntryMetadataFromString,\n} from '@opentelemetry/api';\nimport {\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_PROPERTIES_SEPARATOR,\n BAGGAGE_KEY_PAIR_SEPARATOR,\n BAGGAGE_MAX_TOTAL_LENGTH,\n} from './constants';\n\ntype ParsedBaggageKeyValue = {\n key: string;\n value: string;\n metadata: BaggageEntryMetadata | undefined;\n};\n\nexport function serializeKeyPairs(keyPairs: string[]): string {\n return keyPairs.reduce((hValue: string, current: string) => {\n const value = `${hValue}${\n hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''\n }${current}`;\n return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\n\nexport function getKeyPairs(baggage: Baggage): string[] {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n\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 += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n\n return entry;\n });\n}\n\nexport function parsePairKeyValue(\n entry: string\n): ParsedBaggageKeyValue | undefined {\n if (!entry) return;\n const metadataSeparatorIndex = entry.indexOf(BAGGAGE_PROPERTIES_SEPARATOR);\n const keyPairPart =\n metadataSeparatorIndex === -1\n ? entry\n : entry.substring(0, metadataSeparatorIndex);\n\n const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0) return;\n\n const rawKey = keyPairPart.substring(0, separatorIndex).trim();\n const rawValue = keyPairPart.substring(separatorIndex + 1).trim();\n\n if (!rawKey || !rawValue) return;\n let key: string;\n let value: string;\n try {\n key = decodeURIComponent(rawKey);\n value = decodeURIComponent(rawValue);\n } catch {\n return;\n }\n\n let metadata;\n if (\n metadataSeparatorIndex !== -1 &&\n metadataSeparatorIndex < entry.length - 1\n ) {\n const metadataString = entry.substring(metadataSeparatorIndex + 1);\n metadata = baggageEntryMetadataFromString(metadataString);\n }\n\n return { key, value, metadata };\n}\n\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 */\nexport function parseKeyPairsIntoRecord(\n value?: string\n): Record {\n const result: Record = {};\n\n if (typeof value === 'string' && value.length > 0) {\n value.split(BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n\n return result;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/anchored-clock.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/anchored-clock.d.ts new file mode 100644 index 0000000..87bddee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/anchored-clock.d.ts @@ -0,0 +1,41 @@ +export interface Clock { + /** + * Return the current time in milliseconds from some epoch such as the Unix epoch or process start + */ + now(): number; +} +/** + * A utility for returning wall times anchored to a given point in time. Wall time measurements will + * not be taken from the system, but instead are computed by adding a monotonic clock time + * to the anchor point. + * + * This is needed because the system time can change and result in unexpected situations like + * spans ending before they are started. Creating an anchored clock for each local root span + * ensures that span timings and durations are accurate while preventing span times from drifting + * too far from the system clock. + * + * Only creating an anchored clock once per local trace ensures span times are correct relative + * to each other. For example, a child span will never have a start time before its parent even + * if the system clock is corrected during the local trace. + * + * Heavily inspired by the OTel Java anchored clock + * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java + */ +export declare class AnchoredClock implements Clock { + private _monotonicClock; + private _epochMillis; + private _performanceMillis; + /** + * Create a new AnchoredClock anchored to the current time returned by systemClock. + * + * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date + * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance + */ + constructor(systemClock: Clock, monotonicClock: Clock); + /** + * Returns the current time by adding the number of milliseconds since the + * AnchoredClock was created to the creation epoch time + */ + now(): number; +} +//# sourceMappingURL=anchored-clock.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/anchored-clock.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/anchored-clock.js new file mode 100644 index 0000000..c7272c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/anchored-clock.js @@ -0,0 +1,57 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * A utility for returning wall times anchored to a given point in time. Wall time measurements will + * not be taken from the system, but instead are computed by adding a monotonic clock time + * to the anchor point. + * + * This is needed because the system time can change and result in unexpected situations like + * spans ending before they are started. Creating an anchored clock for each local root span + * ensures that span timings and durations are accurate while preventing span times from drifting + * too far from the system clock. + * + * Only creating an anchored clock once per local trace ensures span times are correct relative + * to each other. For example, a child span will never have a start time before its parent even + * if the system clock is corrected during the local trace. + * + * Heavily inspired by the OTel Java anchored clock + * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java + */ +export class AnchoredClock { + _monotonicClock; + _epochMillis; + _performanceMillis; + /** + * Create a new AnchoredClock anchored to the current time returned by systemClock. + * + * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date + * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance + */ + constructor(systemClock, monotonicClock) { + this._monotonicClock = monotonicClock; + this._epochMillis = systemClock.now(); + this._performanceMillis = monotonicClock.now(); + } + /** + * Returns the current time by adding the number of milliseconds since the + * AnchoredClock was created to the creation epoch time + */ + now() { + const delta = this._monotonicClock.now() - this._performanceMillis; + return this._epochMillis + delta; + } +} +//# sourceMappingURL=anchored-clock.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/anchored-clock.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/anchored-clock.js.map new file mode 100644 index 0000000..f2b00fd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/anchored-clock.js.map @@ -0,0 +1 @@ +{"version":3,"file":"anchored-clock.js","sourceRoot":"","sources":["../../../src/common/anchored-clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,aAAa;IAChB,eAAe,CAAQ;IACvB,YAAY,CAAS;IACrB,kBAAkB,CAAS;IAEnC;;;;;OAKG;IACH,YAAmB,WAAkB,EAAE,cAAqB;QAC1D,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACI,GAAG;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnE,OAAO,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IACnC,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface Clock {\n /**\n * Return the current time in milliseconds from some epoch such as the Unix epoch or process start\n */\n now(): number;\n}\n\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 */\nexport class AnchoredClock implements Clock {\n private _monotonicClock: Clock;\n private _epochMillis: number;\n private _performanceMillis: number;\n\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 public constructor(systemClock: Clock, monotonicClock: Clock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\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 public now(): number {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/attributes.d.ts new file mode 100644 index 0000000..3d9fe32 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/attributes.d.ts @@ -0,0 +1,5 @@ +import { AttributeValue, Attributes } from '@opentelemetry/api'; +export declare function sanitizeAttributes(attributes: unknown): Attributes; +export declare function isAttributeKey(key: unknown): key is string; +export declare function isAttributeValue(val: unknown): val is AttributeValue; +//# sourceMappingURL=attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/attributes.js new file mode 100644 index 0000000..2b12a81 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/attributes.js @@ -0,0 +1,87 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +export function sanitizeAttributes(attributes) { + const out = {}; + if (typeof attributes !== 'object' || attributes == null) { + return out; + } + for (const key in attributes) { + if (!Object.prototype.hasOwnProperty.call(attributes, key)) { + continue; + } + if (!isAttributeKey(key)) { + diag.warn(`Invalid attribute key: ${key}`); + continue; + } + const val = attributes[key]; + if (!isAttributeValue(val)) { + diag.warn(`Invalid attribute value set for key: ${key}`); + continue; + } + if (Array.isArray(val)) { + out[key] = val.slice(); + } + else { + out[key] = val; + } + } + return out; +} +export function isAttributeKey(key) { + return typeof key === 'string' && key !== ''; +} +export function isAttributeValue(val) { + if (val == null) { + return true; + } + if (Array.isArray(val)) { + return isHomogeneousAttributeValueArray(val); + } + return isValidPrimitiveAttributeValueType(typeof val); +} +function isHomogeneousAttributeValueArray(arr) { + let type; + for (const element of arr) { + // null/undefined elements are allowed + if (element == null) + continue; + const elementType = typeof element; + if (elementType === type) { + continue; + } + if (!type) { + if (isValidPrimitiveAttributeValueType(elementType)) { + type = elementType; + continue; + } + // encountered an invalid primitive + return false; + } + return false; + } + return true; +} +function isValidPrimitiveAttributeValueType(valType) { + switch (valType) { + case 'number': + case 'boolean': + case 'string': + return true; + } + return false; +} +//# sourceMappingURL=attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/attributes.js.map new file mode 100644 index 0000000..53069d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/common/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAA8B,MAAM,oBAAoB,CAAC;AAEtE,MAAM,UAAU,kBAAkB,CAAC,UAAmB;IACpD,MAAM,GAAG,GAAe,EAAE,CAAC;IAE3B,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,IAAI,IAAI,EAAE;QACxD,OAAO,GAAG,CAAC;KACZ;IAED,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;YAC1D,SAAS;SACV;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;YAC3C,SAAS;SACV;QACD,MAAM,GAAG,GAAI,UAAsC,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAC;YACzD,SAAS;SACV;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;SACxB;aAAM;YACL,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;SAChB;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,IAAI,IAAI,EAAE;QACf,OAAO,IAAI,CAAC;KACb;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,gCAAgC,CAAC,GAAG,CAAC,CAAC;KAC9C;IAED,OAAO,kCAAkC,CAAC,OAAO,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,gCAAgC,CAAC,GAAc;IACtD,IAAI,IAAwB,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE;QACzB,sCAAsC;QACtC,IAAI,OAAO,IAAI,IAAI;YAAE,SAAS;QAC9B,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC;QAEnC,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,SAAS;SACV;QAED,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,kCAAkC,CAAC,WAAW,CAAC,EAAE;gBACnD,IAAI,GAAG,WAAW,CAAC;gBACnB,SAAS;aACV;YACD,mCAAmC;YACnC,OAAO,KAAK,CAAC;SACd;QAED,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kCAAkC,CAAC,OAAe;IACzD,QAAQ,OAAO,EAAE;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag, AttributeValue, Attributes } from '@opentelemetry/api';\n\nexport function sanitizeAttributes(attributes: unknown): Attributes {\n const out: Attributes = {};\n\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n\n for (const key in attributes) {\n if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n continue;\n }\n if (!isAttributeKey(key)) {\n diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n const val = (attributes as Record)[key];\n if (!isAttributeValue(val)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n } else {\n out[key] = val;\n }\n }\n\n return out;\n}\n\nexport function isAttributeKey(key: unknown): key is string {\n return typeof key === 'string' && key !== '';\n}\n\nexport function isAttributeValue(val: unknown): val is AttributeValue {\n if (val == null) {\n return true;\n }\n\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n\n return isValidPrimitiveAttributeValueType(typeof val);\n}\n\nfunction isHomogeneousAttributeValueArray(arr: unknown[]): boolean {\n let type: string | undefined;\n\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null) continue;\n const elementType = typeof element;\n\n if (elementType === type) {\n continue;\n }\n\n if (!type) {\n if (isValidPrimitiveAttributeValueType(elementType)) {\n type = elementType;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction isValidPrimitiveAttributeValueType(valType: string): boolean {\n switch (valType) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n\n return false;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/global-error-handler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/global-error-handler.d.ts new file mode 100644 index 0000000..e7d4dc7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/global-error-handler.d.ts @@ -0,0 +1,13 @@ +import { Exception } from '@opentelemetry/api'; +import { ErrorHandler } from './types'; +/** + * Set the global error handler + * @param {ErrorHandler} handler + */ +export declare function setGlobalErrorHandler(handler: ErrorHandler): void; +/** + * Return the global error handler + * @param {Exception} ex + */ +export declare function globalErrorHandler(ex: Exception): void; +//# sourceMappingURL=global-error-handler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/global-error-handler.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/global-error-handler.js new file mode 100644 index 0000000..c1f6f5e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/global-error-handler.js @@ -0,0 +1,36 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { loggingErrorHandler } from './logging-error-handler'; +/** The global error handler delegate */ +let delegateHandler = loggingErrorHandler(); +/** + * Set the global error handler + * @param {ErrorHandler} handler + */ +export function setGlobalErrorHandler(handler) { + delegateHandler = handler; +} +/** + * Return the global error handler + * @param {Exception} ex + */ +export function globalErrorHandler(ex) { + try { + delegateHandler(ex); + } + catch { } // eslint-disable-line no-empty +} +//# sourceMappingURL=global-error-handler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/global-error-handler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/global-error-handler.js.map new file mode 100644 index 0000000..e0d5c56 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/global-error-handler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-error-handler.js","sourceRoot":"","sources":["../../../src/common/global-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,wCAAwC;AACxC,IAAI,eAAe,GAAG,mBAAmB,EAAE,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,eAAe,GAAG,OAAO,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAa;IAC9C,IAAI;QACF,eAAe,CAAC,EAAE,CAAC,CAAC;KACrB;IAAC,MAAM,GAAE,CAAC,+BAA+B;AAC5C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '@opentelemetry/api';\nimport { loggingErrorHandler } from './logging-error-handler';\nimport { ErrorHandler } from './types';\n\n/** The global error handler delegate */\nlet delegateHandler = loggingErrorHandler();\n\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nexport function setGlobalErrorHandler(handler: ErrorHandler): void {\n delegateHandler = handler;\n}\n\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nexport function globalErrorHandler(ex: Exception): void {\n try {\n delegateHandler(ex);\n } catch {} // eslint-disable-line no-empty\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/globalThis.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/globalThis.d.ts new file mode 100644 index 0000000..6804ddb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/globalThis.d.ts @@ -0,0 +1,5 @@ +/** + * @deprecated Use globalThis directly instead. + */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/globalThis.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/globalThis.js new file mode 100644 index 0000000..dcabaf3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/globalThis.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @deprecated Use globalThis directly instead. + */ +export const _globalThis = globalThis; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/globalThis.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/globalThis.js.map new file mode 100644 index 0000000..7c7fb6c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../src/common/globalThis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * @deprecated Use globalThis directly instead.\n */\nexport const _globalThis = globalThis;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/logging-error-handler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/logging-error-handler.d.ts new file mode 100644 index 0000000..5d578b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/logging-error-handler.d.ts @@ -0,0 +1,7 @@ +import { ErrorHandler } from './types'; +/** + * Returns a function that logs an error using the provided logger, or a + * console logger if one was not provided. + */ +export declare function loggingErrorHandler(): ErrorHandler; +//# sourceMappingURL=logging-error-handler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/logging-error-handler.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/logging-error-handler.js new file mode 100644 index 0000000..9c274f1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/logging-error-handler.js @@ -0,0 +1,59 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +/** + * Returns a function that logs an error using the provided logger, or a + * console logger if one was not provided. + */ +export function loggingErrorHandler() { + return (ex) => { + diag.error(stringifyException(ex)); + }; +} +/** + * Converts an exception into a string representation + * @param {Exception} ex + */ +function stringifyException(ex) { + if (typeof ex === 'string') { + return ex; + } + else { + return JSON.stringify(flattenException(ex)); + } +} +/** + * Flattens an exception into key-value pairs by traversing the prototype chain + * and coercing values to strings. Duplicate properties will not be overwritten; + * the first insert wins. + */ +function flattenException(ex) { + const result = {}; + let current = ex; + while (current !== null) { + Object.getOwnPropertyNames(current).forEach(propertyName => { + if (result[propertyName]) + return; + const value = current[propertyName]; + if (value) { + result[propertyName] = String(value); + } + }); + current = Object.getPrototypeOf(current); + } + return result; +} +//# sourceMappingURL=logging-error-handler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/logging-error-handler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/logging-error-handler.js.map new file mode 100644 index 0000000..3d45fd2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/logging-error-handler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logging-error-handler.js","sourceRoot":"","sources":["../../../src/common/logging-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAa,MAAM,oBAAoB,CAAC;AAGrD;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,EAAa,EAAE,EAAE;QACvB,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,EAAsB;IAChD,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QAC1B,OAAO,EAAE,CAAC;KACX;SAAM;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7C;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,EAAa;IACrC,MAAM,MAAM,GAAG,EAA4B,CAAC;IAC5C,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,OAAO,OAAO,KAAK,IAAI,EAAE;QACvB,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACzD,IAAI,MAAM,CAAC,YAAY,CAAC;gBAAE,OAAO;YACjC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAoC,CAAC,CAAC;YAC5D,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;aACtC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;KAC1C;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag, Exception } from '@opentelemetry/api';\nimport { ErrorHandler } from './types';\n\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nexport function loggingErrorHandler(): ErrorHandler {\n return (ex: Exception) => {\n diag.error(stringifyException(ex));\n };\n}\n\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex: Exception | string): string {\n if (typeof ex === 'string') {\n return ex;\n } else {\n return JSON.stringify(flattenException(ex));\n }\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: Exception): Record {\n const result = {} as Record;\n let current = ex;\n\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName]) return;\n const value = current[propertyName as keyof typeof current];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n\n return result;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/time.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/time.d.ts new file mode 100644 index 0000000..dd00182 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/time.d.ts @@ -0,0 +1,62 @@ +import * as api from '@opentelemetry/api'; +/** + * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]). + * @param epochMillis + */ +export declare function millisToHrTime(epochMillis: number): api.HrTime; +/** + * @deprecated Use `performance.timeOrigin` directly. + */ +export declare function getTimeOrigin(): number; +/** + * Returns an hrtime calculated via performance component. + * @param performanceNow + */ +export declare function hrTime(performanceNow?: number): api.HrTime; +/** + * + * Converts a TimeInput to an HrTime, defaults to _hrtime(). + * @param time + */ +export declare function timeInputToHrTime(time: api.TimeInput): api.HrTime; +/** + * Returns a duration of two hrTime. + * @param startTime + * @param endTime + */ +export declare function hrTimeDuration(startTime: api.HrTime, endTime: api.HrTime): api.HrTime; +/** + * Convert hrTime to timestamp, for example "2019-05-14T17:00:00.000123456Z" + * @param time + */ +export declare function hrTimeToTimeStamp(time: api.HrTime): string; +/** + * Convert hrTime to nanoseconds. + * @param time + */ +export declare function hrTimeToNanoseconds(time: api.HrTime): number; +/** + * Convert hrTime to milliseconds. + * @param time + */ +export declare function hrTimeToMilliseconds(time: api.HrTime): number; +/** + * Convert hrTime to microseconds. + * @param time + */ +export declare function hrTimeToMicroseconds(time: api.HrTime): number; +/** + * check if time is HrTime + * @param value + */ +export declare function isTimeInputHrTime(value: unknown): value is api.HrTime; +/** + * check if input value is a correct types.TimeInput + * @param value + */ +export declare function isTimeInput(value: unknown): value is api.HrTime | number | Date; +/** + * Given 2 HrTime formatted times, return their sum as an HrTime. + */ +export declare function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime; +//# sourceMappingURL=time.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/time.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/time.js new file mode 100644 index 0000000..59bb875 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/time.js @@ -0,0 +1,154 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { otperformance as performance } from '../platform'; +const NANOSECOND_DIGITS = 9; +const NANOSECOND_DIGITS_IN_MILLIS = 6; +const MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS); +const SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS); +/** + * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]). + * @param epochMillis + */ +export function millisToHrTime(epochMillis) { + const epochSeconds = epochMillis / 1000; + // Decimals only. + const seconds = Math.trunc(epochSeconds); + // Round sub-nanosecond accuracy to nanosecond. + const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS); + return [seconds, nanos]; +} +/** + * @deprecated Use `performance.timeOrigin` directly. + */ +export function getTimeOrigin() { + return performance.timeOrigin; +} +/** + * Returns an hrtime calculated via performance component. + * @param performanceNow + */ +export function hrTime(performanceNow) { + const timeOrigin = millisToHrTime(performance.timeOrigin); + const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : performance.now()); + return addHrTimes(timeOrigin, now); +} +/** + * + * Converts a TimeInput to an HrTime, defaults to _hrtime(). + * @param time + */ +export function timeInputToHrTime(time) { + // process.hrtime + if (isTimeInputHrTime(time)) { + return time; + } + else if (typeof time === 'number') { + // Must be a performance.now() if it's smaller than process start time. + if (time < performance.timeOrigin) { + return hrTime(time); + } + else { + // epoch milliseconds or performance.timeOrigin + return millisToHrTime(time); + } + } + else if (time instanceof Date) { + return millisToHrTime(time.getTime()); + } + else { + throw TypeError('Invalid input type'); + } +} +/** + * Returns a duration of two hrTime. + * @param startTime + * @param endTime + */ +export function hrTimeDuration(startTime, endTime) { + let seconds = endTime[0] - startTime[0]; + let nanos = endTime[1] - startTime[1]; + // overflow + if (nanos < 0) { + seconds -= 1; + // negate + nanos += SECOND_TO_NANOSECONDS; + } + return [seconds, nanos]; +} +/** + * Convert hrTime to timestamp, for example "2019-05-14T17:00:00.000123456Z" + * @param time + */ +export function hrTimeToTimeStamp(time) { + const precision = NANOSECOND_DIGITS; + const tmp = `${'0'.repeat(precision)}${time[1]}Z`; + const nanoString = tmp.substring(tmp.length - precision - 1); + const date = new Date(time[0] * 1000).toISOString(); + return date.replace('000Z', nanoString); +} +/** + * Convert hrTime to nanoseconds. + * @param time + */ +export function hrTimeToNanoseconds(time) { + return time[0] * SECOND_TO_NANOSECONDS + time[1]; +} +/** + * Convert hrTime to milliseconds. + * @param time + */ +export function hrTimeToMilliseconds(time) { + return time[0] * 1e3 + time[1] / 1e6; +} +/** + * Convert hrTime to microseconds. + * @param time + */ +export function hrTimeToMicroseconds(time) { + return time[0] * 1e6 + time[1] / 1e3; +} +/** + * check if time is HrTime + * @param value + */ +export function isTimeInputHrTime(value) { + return (Array.isArray(value) && + value.length === 2 && + typeof value[0] === 'number' && + typeof value[1] === 'number'); +} +/** + * check if input value is a correct types.TimeInput + * @param value + */ +export function isTimeInput(value) { + return (isTimeInputHrTime(value) || + typeof value === 'number' || + value instanceof Date); +} +/** + * Given 2 HrTime formatted times, return their sum as an HrTime. + */ +export function addHrTimes(time1, time2) { + const out = [time1[0] + time2[0], time1[1] + time2[1]]; + // Nanoseconds + if (out[1] >= SECOND_TO_NANOSECONDS) { + out[1] -= SECOND_TO_NANOSECONDS; + out[0] += 1; + } + return out; +} +//# sourceMappingURL=time.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/time.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/time.js.map new file mode 100644 index 0000000..9060e1e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/common/time.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport { otperformance as performance } from '../platform';\n\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/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nexport function millisToHrTime(epochMillis: number): api.HrTime {\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}\n\n/**\n * @deprecated Use `performance.timeOrigin` directly.\n */\nexport function getTimeOrigin(): number {\n return performance.timeOrigin;\n}\n\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nexport function hrTime(performanceNow?: number): api.HrTime {\n const timeOrigin = millisToHrTime(performance.timeOrigin);\n const now = millisToHrTime(\n typeof performanceNow === 'number' ? performanceNow : performance.now()\n );\n\n return addHrTimes(timeOrigin, now);\n}\n\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nexport function timeInputToHrTime(time: api.TimeInput): api.HrTime {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time as api.HrTime;\n } else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < performance.timeOrigin) {\n return hrTime(time);\n } else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n } else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n } else {\n throw TypeError('Invalid input type');\n }\n}\n\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nexport function hrTimeDuration(\n startTime: api.HrTime,\n endTime: api.HrTime\n): api.HrTime {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n\n return [seconds, nanos];\n}\n\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nexport function hrTimeToTimeStamp(time: api.HrTime): string {\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}\n\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nexport function hrTimeToNanoseconds(time: api.HrTime): number {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\n\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nexport function hrTimeToMilliseconds(time: api.HrTime): number {\n return time[0] * 1e3 + time[1] / 1e6;\n}\n\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nexport function hrTimeToMicroseconds(time: api.HrTime): number {\n return time[0] * 1e6 + time[1] / 1e3;\n}\n\n/**\n * check if time is HrTime\n * @param value\n */\nexport function isTimeInputHrTime(value: unknown): value is api.HrTime {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nexport function isTimeInput(\n value: unknown\n): value is api.HrTime | number | Date {\n return (\n isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date\n );\n}\n\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nexport function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime {\n const out = [time1[0] + time2[0], time1[1] + time2[1]] as api.HrTime;\n\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n\n return out;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/timer-util.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/timer-util.d.ts new file mode 100644 index 0000000..39d10f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/timer-util.d.ts @@ -0,0 +1,8 @@ +/** + * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package. + * @param timer + */ +export declare function unrefTimer(timer: { + unref(): unknown; +} | number): void; +//# sourceMappingURL=timer-util.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/timer-util.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/timer-util.js new file mode 100644 index 0000000..1a0ba07 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/timer-util.js @@ -0,0 +1,25 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package. + * @param timer + */ +export function unrefTimer(timer) { + if (typeof timer !== 'number') { + timer.unref(); + } +} +//# sourceMappingURL=timer-util.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/timer-util.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/timer-util.js.map new file mode 100644 index 0000000..7d327ef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/timer-util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timer-util.js","sourceRoot":"","sources":["../../../src/common/timer-util.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAoC;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,KAAK,CAAC,KAAK,EAAE,CAAC;KACf;AACH,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * @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 */\nexport function unrefTimer(timer: { unref(): unknown } | number): void {\n if (typeof timer !== 'number') {\n timer.unref();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/types.d.ts new file mode 100644 index 0000000..864edc2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/types.d.ts @@ -0,0 +1,23 @@ +import { Exception } from '@opentelemetry/api'; +/** + * This interface defines the params that are be added to the wrapped function + * using the "shimmer.wrap" + */ +export interface ShimWrapped extends Function { + __wrapped: boolean; + __unwrap: Function; + __original: Function; +} +/** + * An instrumentation scope consists of the name and optional version + * used to obtain a tracer or meter from a provider. This metadata is made + * available on ReadableSpan and MetricRecord for use by the export pipeline. + */ +export interface InstrumentationScope { + readonly name: string; + readonly version?: string; + readonly schemaUrl?: string; +} +/** Defines an error handler function */ +export type ErrorHandler = (ex: Exception) => void; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/types.js.map new file mode 100644 index 0000000..a1f510b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/common/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '@opentelemetry/api';\n\n/**\n * This interface defines the params that are be added to the wrapped function\n * using the \"shimmer.wrap\"\n */\nexport interface ShimWrapped extends Function {\n __wrapped: boolean;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __unwrap: Function;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __original: Function;\n}\n\n/**\n * An instrumentation scope consists of the name and optional version\n * used to obtain a tracer or meter from a provider. This metadata is made\n * available on ReadableSpan and MetricRecord for use by the export pipeline.\n */\nexport interface InstrumentationScope {\n readonly name: string;\n readonly version?: string;\n readonly schemaUrl?: string;\n}\n\n/** Defines an error handler function */\nexport type ErrorHandler = (ex: Exception) => void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/index.d.ts new file mode 100644 index 0000000..a6d4957 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/index.d.ts @@ -0,0 +1,30 @@ +export { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator'; +export { AnchoredClock } from './common/anchored-clock'; +export type { Clock } from './common/anchored-clock'; +export { isAttributeValue, sanitizeAttributes } from './common/attributes'; +export { globalErrorHandler, setGlobalErrorHandler, } from './common/global-error-handler'; +export { loggingErrorHandler } from './common/logging-error-handler'; +export { addHrTimes, getTimeOrigin, hrTime, hrTimeDuration, hrTimeToMicroseconds, hrTimeToMilliseconds, hrTimeToNanoseconds, hrTimeToTimeStamp, isTimeInput, isTimeInputHrTime, millisToHrTime, timeInputToHrTime, } from './common/time'; +export { unrefTimer } from './common/timer-util'; +export type { ErrorHandler, InstrumentationScope } from './common/types'; +export { ExportResultCode } from './ExportResult'; +export type { ExportResult } from './ExportResult'; +export { parseKeyPairsIntoRecord } from './baggage/utils'; +export { SDK_INFO, _globalThis, getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, otperformance, } from './platform'; +export { CompositePropagator } from './propagation/composite'; +export type { CompositePropagatorConfig } from './propagation/composite'; +export { TRACE_PARENT_HEADER, TRACE_STATE_HEADER, W3CTraceContextPropagator, parseTraceParent, } from './trace/W3CTraceContextPropagator'; +export { RPCType, deleteRPCMetadata, getRPCMetadata, setRPCMetadata, } from './trace/rpc-metadata'; +export type { RPCMetadata } from './trace/rpc-metadata'; +export { isTracingSuppressed, suppressTracing, unsuppressTracing, } from './trace/suppress-tracing'; +export { TraceState } from './trace/TraceState'; +export { merge } from './utils/merge'; +export { TimeoutError, callWithTimeout } from './utils/timeout'; +export { isUrlIgnored, urlMatches } from './utils/url'; +export { BindOnceFuture } from './utils/callback'; +export { diagLogLevelFromString } from './utils/configuration'; +import { _export } from './internal/exporter'; +export declare const internal: { + _export: typeof _export; +}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/index.js new file mode 100644 index 0000000..6613738 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/index.js @@ -0,0 +1,40 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator'; +export { AnchoredClock } from './common/anchored-clock'; +export { isAttributeValue, sanitizeAttributes } from './common/attributes'; +export { globalErrorHandler, setGlobalErrorHandler, } from './common/global-error-handler'; +export { loggingErrorHandler } from './common/logging-error-handler'; +export { addHrTimes, getTimeOrigin, hrTime, hrTimeDuration, hrTimeToMicroseconds, hrTimeToMilliseconds, hrTimeToNanoseconds, hrTimeToTimeStamp, isTimeInput, isTimeInputHrTime, millisToHrTime, timeInputToHrTime, } from './common/time'; +export { unrefTimer } from './common/timer-util'; +export { ExportResultCode } from './ExportResult'; +export { parseKeyPairsIntoRecord } from './baggage/utils'; +export { SDK_INFO, _globalThis, getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, otperformance, } from './platform'; +export { CompositePropagator } from './propagation/composite'; +export { TRACE_PARENT_HEADER, TRACE_STATE_HEADER, W3CTraceContextPropagator, parseTraceParent, } from './trace/W3CTraceContextPropagator'; +export { RPCType, deleteRPCMetadata, getRPCMetadata, setRPCMetadata, } from './trace/rpc-metadata'; +export { isTracingSuppressed, suppressTracing, unsuppressTracing, } from './trace/suppress-tracing'; +export { TraceState } from './trace/TraceState'; +export { merge } from './utils/merge'; +export { TimeoutError, callWithTimeout } from './utils/timeout'; +export { isUrlIgnored, urlMatches } from './utils/url'; +export { BindOnceFuture } from './utils/callback'; +export { diagLogLevelFromString } from './utils/configuration'; +import { _export } from './internal/exporter'; +export const internal = { + _export, +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/index.js.map new file mode 100644 index 0000000..4f4b69e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACL,UAAU,EACV,aAAa,EACb,MAAM,EACN,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO;CACR,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator';\nexport { AnchoredClock } from './common/anchored-clock';\nexport type { Clock } from './common/anchored-clock';\nexport { isAttributeValue, sanitizeAttributes } from './common/attributes';\nexport {\n globalErrorHandler,\n setGlobalErrorHandler,\n} from './common/global-error-handler';\nexport { loggingErrorHandler } from './common/logging-error-handler';\nexport {\n addHrTimes,\n getTimeOrigin,\n hrTime,\n hrTimeDuration,\n hrTimeToMicroseconds,\n hrTimeToMilliseconds,\n hrTimeToNanoseconds,\n hrTimeToTimeStamp,\n isTimeInput,\n isTimeInputHrTime,\n millisToHrTime,\n timeInputToHrTime,\n} from './common/time';\nexport { unrefTimer } from './common/timer-util';\nexport type { ErrorHandler, InstrumentationScope } from './common/types';\nexport { ExportResultCode } from './ExportResult';\nexport type { ExportResult } from './ExportResult';\nexport { parseKeyPairsIntoRecord } from './baggage/utils';\nexport {\n SDK_INFO,\n _globalThis,\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n otperformance,\n} from './platform';\nexport { CompositePropagator } from './propagation/composite';\nexport type { CompositePropagatorConfig } from './propagation/composite';\nexport {\n TRACE_PARENT_HEADER,\n TRACE_STATE_HEADER,\n W3CTraceContextPropagator,\n parseTraceParent,\n} from './trace/W3CTraceContextPropagator';\nexport {\n RPCType,\n deleteRPCMetadata,\n getRPCMetadata,\n setRPCMetadata,\n} from './trace/rpc-metadata';\nexport type { RPCMetadata } from './trace/rpc-metadata';\nexport {\n isTracingSuppressed,\n suppressTracing,\n unsuppressTracing,\n} from './trace/suppress-tracing';\nexport { TraceState } from './trace/TraceState';\nexport { merge } from './utils/merge';\nexport { TimeoutError, callWithTimeout } from './utils/timeout';\nexport { isUrlIgnored, urlMatches } from './utils/url';\nexport { BindOnceFuture } from './utils/callback';\nexport { diagLogLevelFromString } from './utils/configuration';\nimport { _export } from './internal/exporter';\nexport const internal = {\n _export,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/exporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/exporter.d.ts new file mode 100644 index 0000000..41253b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/exporter.d.ts @@ -0,0 +1,10 @@ +import { ExportResult } from '../ExportResult'; +export interface Exporter { + export(arg: T, resultCallback: (result: ExportResult) => void): void; +} +/** + * @internal + * Shared functionality used by Exporters while exporting data, including suppression of Traces. + */ +export declare function _export(exporter: Exporter, arg: T): Promise; +//# sourceMappingURL=exporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/exporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/exporter.js new file mode 100644 index 0000000..113301b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/exporter.js @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { context } from '@opentelemetry/api'; +import { suppressTracing } from '../trace/suppress-tracing'; +/** + * @internal + * Shared functionality used by Exporters while exporting data, including suppression of Traces. + */ +export function _export(exporter, arg) { + return new Promise(resolve => { + // prevent downstream exporter calls from generating spans + context.with(suppressTracing(context.active()), () => { + exporter.export(arg, (result) => { + resolve(result); + }); + }); + }); +} +//# sourceMappingURL=exporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/exporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/exporter.js.map new file mode 100644 index 0000000..578d45e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/exporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../../src/internal/exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAM5D;;;GAGG;AACH,MAAM,UAAU,OAAO,CACrB,QAAqB,EACrB,GAAM;IAEN,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,0DAA0D;QAC1D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE;YACnD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAoB,EAAE,EAAE;gBAC5C,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { context } from '@opentelemetry/api';\nimport { ExportResult } from '../ExportResult';\nimport { suppressTracing } from '../trace/suppress-tracing';\n\nexport interface Exporter {\n export(arg: T, resultCallback: (result: ExportResult) => void): void;\n}\n\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nexport function _export(\n exporter: Exporter,\n arg: T\n): Promise {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n context.with(suppressTracing(context.active()), () => {\n exporter.export(arg, (result: ExportResult) => {\n resolve(result);\n });\n });\n });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/validators.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/validators.d.ts new file mode 100644 index 0000000..8376f38 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/validators.d.ts @@ -0,0 +1,15 @@ +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +export declare function validateKey(key: string): boolean; +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +export declare function validateValue(value: string): boolean; +//# sourceMappingURL=validators.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/validators.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/validators.js new file mode 100644 index 0000000..050c5ff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/validators.js @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]'; +const VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`; +const VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`; +const VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`); +const VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/; +const INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/; +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +export function validateKey(key) { + return VALID_KEY_REGEX.test(key); +} +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +export function validateValue(value) { + return (VALID_VALUE_BASE_REGEX.test(value) && + !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)); +} +//# sourceMappingURL=validators.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/validators.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/validators.js.map new file mode 100644 index 0000000..fa902d7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/internal/validators.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/internal/validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAC5C,MAAM,SAAS,GAAG,QAAQ,oBAAoB,SAAS,CAAC;AACxD,MAAM,gBAAgB,GAAG,WAAW,oBAAoB,gBAAgB,oBAAoB,QAAQ,CAAC;AACrG,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,OAAO,SAAS,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC7E,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AACrD,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,CACL,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAC7C,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 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/**\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 */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\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 */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/environment.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/environment.d.ts new file mode 100644 index 0000000..e4f380b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/environment.d.ts @@ -0,0 +1,5 @@ +export declare function getStringFromEnv(_: string): string | undefined; +export declare function getBooleanFromEnv(_: string): boolean | undefined; +export declare function getNumberFromEnv(_: string): number | undefined; +export declare function getStringListFromEnv(_: string): string[] | undefined; +//# sourceMappingURL=environment.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/environment.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/environment.js new file mode 100644 index 0000000..2f4e99c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/environment.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export function getStringFromEnv(_) { + return undefined; +} +export function getBooleanFromEnv(_) { + return undefined; +} +export function getNumberFromEnv(_) { + return undefined; +} +export function getStringListFromEnv(_) { + return undefined; +} +//# sourceMappingURL=environment.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/environment.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/environment.js.map new file mode 100644 index 0000000..9cb8579 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/environment.js.map @@ -0,0 +1 @@ +{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../src/platform/browser/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAS;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport function getStringFromEnv(_: string): string | undefined {\n return undefined;\n}\n\nexport function getBooleanFromEnv(_: string): boolean | undefined {\n return undefined;\n}\n\nexport function getNumberFromEnv(_: string): number | undefined {\n return undefined;\n}\n\nexport function getStringListFromEnv(_: string): string[] | undefined {\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/index.d.ts new file mode 100644 index 0000000..f1c8268 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/index.d.ts @@ -0,0 +1,8 @@ +export { getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, } from './environment'; +export { _globalThis } from '../../common/globalThis'; +export { SDK_INFO } from './sdk-info'; +/** + * @deprecated Use performance directly. + */ +export declare const otperformance: Performance; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/index.js new file mode 100644 index 0000000..0bd1fa8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/index.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, } from './environment'; +export { _globalThis } from '../../common/globalThis'; +export { SDK_INFO } from './sdk-info'; +/** + * @deprecated Use performance directly. + */ +export const otperformance = performance; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/index.js.map new file mode 100644 index 0000000..3d10f71 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport {\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './environment';\nexport { _globalThis } from '../../common/globalThis';\nexport { SDK_INFO } from './sdk-info';\n\n/**\n * @deprecated Use performance directly.\n */\nexport const otperformance = performance;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/sdk-info.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/sdk-info.d.ts new file mode 100644 index 0000000..9245f44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/sdk-info.d.ts @@ -0,0 +1,8 @@ +/** Constants describing the SDK in use */ +export declare const SDK_INFO: { + "telemetry.sdk.name": string; + "process.runtime.name": string; + "telemetry.sdk.language": "webjs"; + "telemetry.sdk.version": string; +}; +//# sourceMappingURL=sdk-info.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/sdk-info.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/sdk-info.js new file mode 100644 index 0000000..fd8bd22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/sdk-info.js @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { VERSION } from '../../version'; +import { ATTR_TELEMETRY_SDK_NAME, ATTR_TELEMETRY_SDK_LANGUAGE, TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS, ATTR_TELEMETRY_SDK_VERSION, } from '@opentelemetry/semantic-conventions'; +import { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv'; +/** Constants describing the SDK in use */ +export const SDK_INFO = { + [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry', + [ATTR_PROCESS_RUNTIME_NAME]: 'browser', + [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS, + [ATTR_TELEMETRY_SDK_VERSION]: VERSION, +}; +//# sourceMappingURL=sdk-info.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/sdk-info.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/sdk-info.js.map new file mode 100644 index 0000000..d2d0597 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/browser/sdk-info.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk-info.js","sourceRoot":"","sources":["../../../../src/platform/browser/sdk-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,kCAAkC,EAClC,0BAA0B,GAC3B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,0CAA0C;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,CAAC,uBAAuB,CAAC,EAAE,eAAe;IAC1C,CAAC,yBAAyB,CAAC,EAAE,SAAS;IACtC,CAAC,2BAA2B,CAAC,EAAE,kCAAkC;IACjE,CAAC,0BAA0B,CAAC,EAAE,OAAO;CACtC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { VERSION } from '../../version';\nimport {\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [ATTR_PROCESS_RUNTIME_NAME]: 'browser',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS,\n [ATTR_TELEMETRY_SDK_VERSION]: VERSION,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/index.d.ts new file mode 100644 index 0000000..e8398c0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/index.d.ts @@ -0,0 +1,2 @@ +export { SDK_INFO, _globalThis, otperformance, getBooleanFromEnv, getStringFromEnv, getNumberFromEnv, getStringListFromEnv, } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/index.js new file mode 100644 index 0000000..7036ab1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { SDK_INFO, _globalThis, otperformance, getBooleanFromEnv, getStringFromEnv, getNumberFromEnv, getStringListFromEnv, } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/index.js.map new file mode 100644 index 0000000..5822b22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,QAAQ,EACR,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport {\n SDK_INFO,\n _globalThis,\n otperformance,\n getBooleanFromEnv,\n getStringFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/environment.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/environment.d.ts new file mode 100644 index 0000000..d66635c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/environment.d.ts @@ -0,0 +1,40 @@ +/** + * Retrieves a number from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number. + * - Returns a number in all other cases. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {number | undefined} - The number value or `undefined`. + */ +export declare function getNumberFromEnv(key: string): number | undefined; +/** + * Retrieves a string from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string | undefined} - The string value or `undefined`. + */ +export declare function getStringFromEnv(key: string): string | undefined; +/** + * Retrieves a boolean value from an environment variable. + * - Trims leading and trailing whitespace and ignores casing. + * - Returns `false` if the environment variable is empty, unset, or contains only whitespace. + * - Returns `false` for strings that cannot be mapped to a boolean. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace. + */ +export declare function getBooleanFromEnv(key: string): boolean; +/** + * Retrieves a list of strings from an environment variable. + * - Uses ',' as the delimiter. + * - Trims leading and trailing whitespace from each entry. + * - Excludes empty entries. + * - Returns `undefined` if the environment variable is empty or contains only whitespace. + * - Returns an empty array if all entries are empty or whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string[] | undefined} - The list of strings or `undefined`. + */ +export declare function getStringListFromEnv(key: string): string[] | undefined; +//# sourceMappingURL=environment.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/environment.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/environment.js new file mode 100644 index 0000000..ddf072d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/environment.js @@ -0,0 +1,97 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { inspect } from 'util'; +/** + * Retrieves a number from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number. + * - Returns a number in all other cases. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {number | undefined} - The number value or `undefined`. + */ +export function getNumberFromEnv(key) { + const raw = process.env[key]; + if (raw == null || raw.trim() === '') { + return undefined; + } + const value = Number(raw); + if (isNaN(value)) { + diag.warn(`Unknown value ${inspect(raw)} for ${key}, expected a number, using defaults`); + return undefined; + } + return value; +} +/** + * Retrieves a string from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string | undefined} - The string value or `undefined`. + */ +export function getStringFromEnv(key) { + const raw = process.env[key]; + if (raw == null || raw.trim() === '') { + return undefined; + } + return raw; +} +/** + * Retrieves a boolean value from an environment variable. + * - Trims leading and trailing whitespace and ignores casing. + * - Returns `false` if the environment variable is empty, unset, or contains only whitespace. + * - Returns `false` for strings that cannot be mapped to a boolean. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace. + */ +export function getBooleanFromEnv(key) { + const raw = process.env[key]?.trim().toLowerCase(); + if (raw == null || raw === '') { + // NOTE: falling back to `false` instead of `undefined` as required by the specification. + // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary + // normalizations in the consuming code. + return false; + } + if (raw === 'true') { + return true; + } + else if (raw === 'false') { + return false; + } + else { + diag.warn(`Unknown value ${inspect(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`); + return false; + } +} +/** + * Retrieves a list of strings from an environment variable. + * - Uses ',' as the delimiter. + * - Trims leading and trailing whitespace from each entry. + * - Excludes empty entries. + * - Returns `undefined` if the environment variable is empty or contains only whitespace. + * - Returns an empty array if all entries are empty or whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string[] | undefined} - The list of strings or `undefined`. + */ +export function getStringListFromEnv(key) { + return getStringFromEnv(key) + ?.split(',') + .map(v => v.trim()) + .filter(s => s !== ''); +} +//# sourceMappingURL=environment.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/environment.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/environment.js.map new file mode 100644 index 0000000..d6d6d3a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/environment.js.map @@ -0,0 +1 @@ +{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../src/platform/node/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpC,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;QAChB,IAAI,CAAC,IAAI,CACP,iBAAiB,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,qCAAqC,CAC9E,CAAC;QACF,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpC,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;QAC7B,yFAAyF;QACzF,mHAAmH;QACnH,wCAAwC;QACxC,OAAO,KAAK,CAAC;KACd;IACD,IAAI,GAAG,KAAK,MAAM,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,GAAG,KAAK,OAAO,EAAE;QAC1B,OAAO,KAAK,CAAC;KACd;SAAM;QACL,IAAI,CAAC,IAAI,CACP,iBAAiB,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,iEAAiE,CAC1G,CAAC;QACF,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,gBAAgB,CAAC,GAAG,CAAC;QAC1B,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\nimport { inspect } from 'util';\n\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 */\nexport function getNumberFromEnv(key: string): number | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n\n const value = Number(raw);\n if (isNaN(value)) {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected a number, using defaults`\n );\n return undefined;\n }\n\n return value;\n}\n\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 */\nexport function getStringFromEnv(key: string): string | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n return raw;\n}\n\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 */\nexport function getBooleanFromEnv(key: string): boolean {\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 } else if (raw === 'false') {\n return false;\n } else {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`\n );\n return false;\n }\n}\n\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 */\nexport function getStringListFromEnv(key: string): string[] | undefined {\n return getStringFromEnv(key)\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/index.d.ts new file mode 100644 index 0000000..594416c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/index.d.ts @@ -0,0 +1,11 @@ +export { getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, } from './environment'; +export { _globalThis } from '../../common/globalThis'; +export { SDK_INFO } from './sdk-info'; +/** + * @deprecated Use performance directly. + */ +export declare const otperformance: { + now(): number; + readonly timeOrigin: number; +}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/index.js new file mode 100644 index 0000000..0bd1fa8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/index.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, } from './environment'; +export { _globalThis } from '../../common/globalThis'; +export { SDK_INFO } from './sdk-info'; +/** + * @deprecated Use performance directly. + */ +export const otperformance = performance; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/index.js.map new file mode 100644 index 0000000..648bd6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GACxB,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport {\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './environment';\nexport { _globalThis } from '../../common/globalThis';\nexport { SDK_INFO } from './sdk-info';\n\n/**\n * @deprecated Use performance directly.\n */\nexport const otperformance: { now(): number; readonly timeOrigin: number } =\n performance;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/sdk-info.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/sdk-info.d.ts new file mode 100644 index 0000000..9627ce2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/sdk-info.d.ts @@ -0,0 +1,8 @@ +/** Constants describing the SDK in use */ +export declare const SDK_INFO: { + "telemetry.sdk.name": string; + "process.runtime.name": string; + "telemetry.sdk.language": "nodejs"; + "telemetry.sdk.version": string; +}; +//# sourceMappingURL=sdk-info.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/sdk-info.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/sdk-info.js new file mode 100644 index 0000000..a40daba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/sdk-info.js @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { VERSION } from '../../version'; +import { ATTR_TELEMETRY_SDK_NAME, ATTR_TELEMETRY_SDK_LANGUAGE, TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS, ATTR_TELEMETRY_SDK_VERSION, } from '@opentelemetry/semantic-conventions'; +import { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv'; +/** Constants describing the SDK in use */ +export const SDK_INFO = { + [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry', + [ATTR_PROCESS_RUNTIME_NAME]: 'node', + [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS, + [ATTR_TELEMETRY_SDK_VERSION]: VERSION, +}; +//# sourceMappingURL=sdk-info.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/sdk-info.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/sdk-info.js.map new file mode 100644 index 0000000..b2ce398 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/platform/node/sdk-info.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk-info.js","sourceRoot":"","sources":["../../../../src/platform/node/sdk-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,mCAAmC,EACnC,0BAA0B,GAC3B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,0CAA0C;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,CAAC,uBAAuB,CAAC,EAAE,eAAe;IAC1C,CAAC,yBAAyB,CAAC,EAAE,MAAM;IACnC,CAAC,2BAA2B,CAAC,EAAE,mCAAmC;IAClE,CAAC,0BAA0B,CAAC,EAAE,OAAO;CACtC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { VERSION } from '../../version';\nimport {\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [ATTR_PROCESS_RUNTIME_NAME]: 'node',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n [ATTR_TELEMETRY_SDK_VERSION]: VERSION,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/propagation/composite.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/propagation/composite.d.ts new file mode 100644 index 0000000..70eb01f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/propagation/composite.d.ts @@ -0,0 +1,43 @@ +import { Context, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api'; +/** Configuration object for composite propagator */ +export interface CompositePropagatorConfig { + /** + * List of propagators to run. Propagators run in the + * list order. If a propagator later in the list writes the same context + * key as a propagator earlier in the list, the later on will "win". + */ + propagators?: TextMapPropagator[]; +} +/** Combines multiple propagators into a single propagator. */ +export declare class CompositePropagator implements TextMapPropagator { + private readonly _propagators; + private readonly _fields; + /** + * Construct a composite propagator from a list of propagators. + * + * @param [config] Configuration object for composite propagator + */ + constructor(config?: CompositePropagatorConfig); + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same carrier key, the propagator later in the list + * will "win". + * + * @param context Context to inject + * @param carrier Carrier into which context will be injected + */ + inject(context: Context, carrier: unknown, setter: TextMapSetter): void; + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same context key, the propagator later in the list + * will "win". + * + * @param context Context to add values to + * @param carrier Carrier from which to extract context + */ + extract(context: Context, carrier: unknown, getter: TextMapGetter): Context; + fields(): string[]; +} +//# sourceMappingURL=composite.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/propagation/composite.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/propagation/composite.js new file mode 100644 index 0000000..19c8e68 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/propagation/composite.js @@ -0,0 +1,77 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag, } from '@opentelemetry/api'; +/** Combines multiple propagators into a single propagator. */ +export class CompositePropagator { + _propagators; + _fields; + /** + * Construct a composite propagator from a list of propagators. + * + * @param [config] Configuration object for composite propagator + */ + constructor(config = {}) { + this._propagators = config.propagators ?? []; + this._fields = Array.from(new Set(this._propagators + // older propagators may not have fields function, null check to be sure + .map(p => (typeof p.fields === 'function' ? p.fields() : [])) + .reduce((x, y) => x.concat(y), []))); + } + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same carrier key, the propagator later in the list + * will "win". + * + * @param context Context to inject + * @param carrier Carrier into which context will be injected + */ + inject(context, carrier, setter) { + for (const propagator of this._propagators) { + try { + propagator.inject(context, carrier, setter); + } + catch (err) { + diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`); + } + } + } + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same context key, the propagator later in the list + * will "win". + * + * @param context Context to add values to + * @param carrier Carrier from which to extract context + */ + extract(context, carrier, getter) { + return this._propagators.reduce((ctx, propagator) => { + try { + return propagator.extract(ctx, carrier, getter); + } + catch (err) { + diag.warn(`Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`); + } + return ctx; + }, context); + } + fields() { + // return a new array so our fields cannot be modified + return this._fields.slice(); + } +} +//# sourceMappingURL=composite.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/propagation/composite.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/propagation/composite.js.map new file mode 100644 index 0000000..d05e309 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/propagation/composite.js.map @@ -0,0 +1 @@ +{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../../src/propagation/composite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAIL,IAAI,GAEL,MAAM,oBAAoB,CAAC;AAY5B,8DAA8D;AAC9D,MAAM,OAAO,mBAAmB;IACb,YAAY,CAAsB;IAClC,OAAO,CAAW;IAEnC;;;;OAIG;IACH,YAAY,SAAoC,EAAE;QAChD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAE7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CACvB,IAAI,GAAG,CACL,IAAI,CAAC,YAAY;YACf,wEAAwE;aACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACrC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC9D,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;YAC1C,IAAI;gBACF,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aAC7C;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CACP,yBAAyB,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,GAAG,CAAC,OAAO,EAAE,CAC5E,CAAC;aACH;SACF;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC/D,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YAClD,IAAI;gBACF,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aACjD;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CACP,0BAA0B,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,GAAG,CAAC,OAAO,EAAE,CAC7E,CAAC;aACH;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QACJ,sDAAsD;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n TextMapGetter,\n TextMapPropagator,\n diag,\n TextMapSetter,\n} from '@opentelemetry/api';\n\n/** Configuration object for composite propagator */\nexport interface CompositePropagatorConfig {\n /**\n * List of propagators to run. Propagators run in the\n * list order. If a propagator later in the list writes the same context\n * key as a propagator earlier in the list, the later on will \"win\".\n */\n propagators?: TextMapPropagator[];\n}\n\n/** Combines multiple propagators into a single propagator. */\nexport class CompositePropagator implements TextMapPropagator {\n private readonly _propagators: TextMapPropagator[];\n private readonly _fields: string[];\n\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config: CompositePropagatorConfig = {}) {\n this._propagators = config.propagators ?? [];\n\n this._fields = Array.from(\n new Set(\n 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 }\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: Context, carrier: unknown, setter: TextMapSetter): void {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n } catch (err) {\n diag.warn(\n `Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\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: Context, carrier: unknown, getter: TextMapGetter): Context {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n } catch (err) {\n diag.warn(\n `Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\n return ctx;\n }, context);\n }\n\n fields(): string[] {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/semconv.d.ts new file mode 100644 index 0000000..5d4bf7e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/semconv.d.ts @@ -0,0 +1,9 @@ +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_NAME: "process.runtime.name"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/semconv.js new file mode 100644 index 0000000..4e73971 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/semconv.js @@ -0,0 +1,29 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/semconv.js.map new file mode 100644 index 0000000..5492a33 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/TraceState.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/TraceState.d.ts new file mode 100644 index 0000000..31b9c78 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/TraceState.d.ts @@ -0,0 +1,22 @@ +import * as api from '@opentelemetry/api'; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +export declare class TraceState implements api.TraceState { + private _internalState; + constructor(rawTraceState?: string); + set(key: string, value: string): TraceState; + unset(key: string): TraceState; + get(key: string): string | undefined; + serialize(): string; + private _parse; + private _keys; + private _clone; +} +//# sourceMappingURL=TraceState.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/TraceState.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/TraceState.js new file mode 100644 index 0000000..859e1a9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/TraceState.js @@ -0,0 +1,99 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { validateKey, validateValue } from '../internal/validators'; +const MAX_TRACE_STATE_ITEMS = 32; +const MAX_TRACE_STATE_LEN = 512; +const LIST_MEMBERS_SEPARATOR = ','; +const LIST_MEMBER_KEY_VALUE_SPLITTER = '='; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +export class TraceState { + _internalState = new Map(); + constructor(rawTraceState) { + if (rawTraceState) + this._parse(rawTraceState); + } + set(key, value) { + // TODO: Benchmark the different approaches(map vs list) and + // use the faster one. + const traceState = this._clone(); + if (traceState._internalState.has(key)) { + traceState._internalState.delete(key); + } + traceState._internalState.set(key, value); + return traceState; + } + unset(key) { + const traceState = this._clone(); + traceState._internalState.delete(key); + return traceState; + } + get(key) { + return this._internalState.get(key); + } + serialize() { + return this._keys() + .reduce((agg, key) => { + agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key)); + return agg; + }, []) + .join(LIST_MEMBERS_SEPARATOR); + } + _parse(rawTraceState) { + if (rawTraceState.length > MAX_TRACE_STATE_LEN) + return; + this._internalState = rawTraceState + .split(LIST_MEMBERS_SEPARATOR) + .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning + .reduce((agg, part) => { + const listMember = part.trim(); // Optional Whitespace (OWS) handling + const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER); + if (i !== -1) { + const key = listMember.slice(0, i); + const value = listMember.slice(i + 1, part.length); + if (validateKey(key) && validateValue(value)) { + agg.set(key, value); + } + else { + // TODO: Consider to add warning log + } + } + return agg; + }, new Map()); + // Because of the reverse() requirement, trunc must be done after map is created + if (this._internalState.size > MAX_TRACE_STATE_ITEMS) { + this._internalState = new Map(Array.from(this._internalState.entries()) + .reverse() // Use reverse same as original tracestate parse chain + .slice(0, MAX_TRACE_STATE_ITEMS)); + } + } + _keys() { + return Array.from(this._internalState.keys()).reverse(); + } + _clone() { + const traceState = new TraceState(); + traceState._internalState = new Map(this._internalState); + return traceState; + } +} +//# sourceMappingURL=TraceState.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/TraceState.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/TraceState.js.map new file mode 100644 index 0000000..797ceca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/TraceState.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TraceState.js","sourceRoot":"","sources":["../../../src/trace/TraceState.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport { validateKey, validateValue } from '../internal/validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\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 */\nexport class TraceState implements api.TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceState {\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\n unset(key: string): TraceState {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return this._keys()\n .reduce((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) 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: Map, part: string) => {\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 (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\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(\n 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 }\n\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceState {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.d.ts new file mode 100644 index 0000000..1760e95 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.d.ts @@ -0,0 +1,26 @@ +import { Context, SpanContext, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api'; +export declare const TRACE_PARENT_HEADER = "traceparent"; +export declare const TRACE_STATE_HEADER = "tracestate"; +/** + * Parses information from the [traceparent] span tag and converts it into {@link SpanContext} + * @param traceParent - A meta property that comes from server. + * It should be dynamically generated server side to have the server's request trace Id, + * a parent span Id that was set on the server's request span, + * and the trace flags to indicate the server's sampling decision + * (01 = sampled, 00 = not sampled). + * for example: '{version}-{traceId}-{spanId}-{sampleDecision}' + * For more information see {@link https://www.w3.org/TR/trace-context/} + */ +export declare function parseTraceParent(traceParent: string): SpanContext | null; +/** + * Propagates {@link SpanContext} through Trace Context format propagation. + * + * Based on the Trace Context specification: + * https://www.w3.org/TR/trace-context/ + */ +export declare class W3CTraceContextPropagator implements TextMapPropagator { + inject(context: Context, carrier: unknown, setter: TextMapSetter): void; + extract(context: Context, carrier: unknown, getter: TextMapGetter): Context; + fields(): string[]; +} +//# sourceMappingURL=W3CTraceContextPropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.js new file mode 100644 index 0000000..068e38b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.js @@ -0,0 +1,99 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { isSpanContextValid, trace, TraceFlags, } from '@opentelemetry/api'; +import { isTracingSuppressed } from './suppress-tracing'; +import { TraceState } from './TraceState'; +export const TRACE_PARENT_HEADER = 'traceparent'; +export const TRACE_STATE_HEADER = 'tracestate'; +const VERSION = '00'; +const VERSION_PART = '(?!ff)[\\da-f]{2}'; +const TRACE_ID_PART = '(?![0]{32})[\\da-f]{32}'; +const PARENT_ID_PART = '(?![0]{16})[\\da-f]{16}'; +const FLAGS_PART = '[\\da-f]{2}'; +const TRACE_PARENT_REGEX = new RegExp(`^\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\s?$`); +/** + * Parses information from the [traceparent] span tag and converts it into {@link SpanContext} + * @param traceParent - A meta property that comes from server. + * It should be dynamically generated server side to have the server's request trace Id, + * a parent span Id that was set on the server's request span, + * and the trace flags to indicate the server's sampling decision + * (01 = sampled, 00 = not sampled). + * for example: '{version}-{traceId}-{spanId}-{sampleDecision}' + * For more information see {@link https://www.w3.org/TR/trace-context/} + */ +export function parseTraceParent(traceParent) { + const match = TRACE_PARENT_REGEX.exec(traceParent); + if (!match) + return null; + // According to the specification the implementation should be compatible + // with future versions. If there are more parts, we only reject it if it's using version 00 + // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent + if (match[1] === '00' && match[5]) + return null; + return { + traceId: match[2], + spanId: match[3], + traceFlags: parseInt(match[4], 16), + }; +} +/** + * Propagates {@link SpanContext} through Trace Context format propagation. + * + * Based on the Trace Context specification: + * https://www.w3.org/TR/trace-context/ + */ +export class W3CTraceContextPropagator { + inject(context, carrier, setter) { + const spanContext = trace.getSpanContext(context); + if (!spanContext || + isTracingSuppressed(context) || + !isSpanContextValid(spanContext)) + return; + const traceParent = `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-0${Number(spanContext.traceFlags || TraceFlags.NONE).toString(16)}`; + setter.set(carrier, TRACE_PARENT_HEADER, traceParent); + if (spanContext.traceState) { + setter.set(carrier, TRACE_STATE_HEADER, spanContext.traceState.serialize()); + } + } + extract(context, carrier, getter) { + const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER); + if (!traceParentHeader) + return context; + const traceParent = Array.isArray(traceParentHeader) + ? traceParentHeader[0] + : traceParentHeader; + if (typeof traceParent !== 'string') + return context; + const spanContext = parseTraceParent(traceParent); + if (!spanContext) + return context; + spanContext.isRemote = true; + const traceStateHeader = getter.get(carrier, TRACE_STATE_HEADER); + if (traceStateHeader) { + // If more than one `tracestate` header is found, we merge them into a + // single header. + const state = Array.isArray(traceStateHeader) + ? traceStateHeader.join(',') + : traceStateHeader; + spanContext.traceState = new TraceState(typeof state === 'string' ? state : undefined); + } + return trace.setSpanContext(context, spanContext); + } + fields() { + return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER]; + } +} +//# sourceMappingURL=W3CTraceContextPropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.js.map new file mode 100644 index 0000000..cb139be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"W3CTraceContextPropagator.js","sourceRoot":"","sources":["../../../src/trace/W3CTraceContextPropagator.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n isSpanContextValid,\n SpanContext,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n trace,\n TraceFlags,\n} from '@opentelemetry/api';\nimport { isTracingSuppressed } from './suppress-tracing';\nimport { TraceState } from './TraceState';\n\nexport const TRACE_PARENT_HEADER = 'traceparent';\nexport const TRACE_STATE_HEADER = 'tracestate';\n\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(\n `^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`\n);\n\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 */\nexport function parseTraceParent(traceParent: string): SpanContext | null {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match) return null;\n\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]) return null;\n\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\n\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 */\nexport class W3CTraceContextPropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const spanContext = trace.getSpanContext(context);\n if (\n !spanContext ||\n isTracingSuppressed(context) ||\n !isSpanContextValid(spanContext)\n )\n return;\n\n const traceParent = `${VERSION}-${spanContext.traceId}-${\n spanContext.spanId\n }-0${Number(spanContext.traceFlags || TraceFlags.NONE).toString(16)}`;\n\n setter.set(carrier, TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(\n carrier,\n TRACE_STATE_HEADER,\n spanContext.traceState.serialize()\n );\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER);\n if (!traceParentHeader) return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string') return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext) return context;\n\n spanContext.isRemote = true;\n\n const traceStateHeader = getter.get(carrier, 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(\n typeof state === 'string' ? state : undefined\n );\n }\n return trace.setSpanContext(context, spanContext);\n }\n\n fields(): string[] {\n return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/rpc-metadata.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/rpc-metadata.d.ts new file mode 100644 index 0000000..3a0808b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/rpc-metadata.d.ts @@ -0,0 +1,18 @@ +import { Context, Span } from '@opentelemetry/api'; +export declare enum RPCType { + HTTP = "http" +} +type HTTPMetadata = { + type: RPCType.HTTP; + route?: string; + span: Span; +}; +/** + * Allows for future rpc metadata to be used with this mechanism + */ +export type RPCMetadata = HTTPMetadata; +export declare function setRPCMetadata(context: Context, meta: RPCMetadata): Context; +export declare function deleteRPCMetadata(context: Context): Context; +export declare function getRPCMetadata(context: Context): RPCMetadata | undefined; +export {}; +//# sourceMappingURL=rpc-metadata.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/rpc-metadata.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/rpc-metadata.js new file mode 100644 index 0000000..01e5cb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/rpc-metadata.js @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createContextKey } from '@opentelemetry/api'; +const RPC_METADATA_KEY = createContextKey('OpenTelemetry SDK Context Key RPC_METADATA'); +export var RPCType; +(function (RPCType) { + RPCType["HTTP"] = "http"; +})(RPCType || (RPCType = {})); +export function setRPCMetadata(context, meta) { + return context.setValue(RPC_METADATA_KEY, meta); +} +export function deleteRPCMetadata(context) { + return context.deleteValue(RPC_METADATA_KEY); +} +export function getRPCMetadata(context) { + return context.getValue(RPC_METADATA_KEY); +} +//# sourceMappingURL=rpc-metadata.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/rpc-metadata.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/rpc-metadata.js.map new file mode 100644 index 0000000..96331c1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/rpc-metadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rpc-metadata.js","sourceRoot":"","sources":["../../../src/trace/rpc-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,gBAAgB,EAAQ,MAAM,oBAAoB,CAAC;AAErE,MAAM,gBAAgB,GAAG,gBAAgB,CACvC,4CAA4C,CAC7C,CAAC;AAEF,MAAM,CAAN,IAAY,OAEX;AAFD,WAAY,OAAO;IACjB,wBAAa,CAAA;AACf,CAAC,EAFW,OAAO,KAAP,OAAO,QAElB;AAaD,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,IAAiB;IAChE,OAAO,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4B,CAAC;AACvE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, createContextKey, Span } from '@opentelemetry/api';\n\nconst RPC_METADATA_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key RPC_METADATA'\n);\n\nexport enum RPCType {\n HTTP = 'http',\n}\n\ntype HTTPMetadata = {\n type: RPCType.HTTP;\n route?: string;\n span: Span;\n};\n\n/**\n * Allows for future rpc metadata to be used with this mechanism\n */\nexport type RPCMetadata = HTTPMetadata;\n\nexport function setRPCMetadata(context: Context, meta: RPCMetadata): Context {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\n\nexport function deleteRPCMetadata(context: Context): Context {\n return context.deleteValue(RPC_METADATA_KEY);\n}\n\nexport function getRPCMetadata(context: Context): RPCMetadata | undefined {\n return context.getValue(RPC_METADATA_KEY) as RPCMetadata | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/suppress-tracing.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/suppress-tracing.d.ts new file mode 100644 index 0000000..a2ac4cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/suppress-tracing.d.ts @@ -0,0 +1,5 @@ +import { Context } from '@opentelemetry/api'; +export declare function suppressTracing(context: Context): Context; +export declare function unsuppressTracing(context: Context): Context; +export declare function isTracingSuppressed(context: Context): boolean; +//# sourceMappingURL=suppress-tracing.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/suppress-tracing.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/suppress-tracing.js new file mode 100644 index 0000000..2e837b1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/suppress-tracing.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createContextKey } from '@opentelemetry/api'; +const SUPPRESS_TRACING_KEY = createContextKey('OpenTelemetry SDK Context Key SUPPRESS_TRACING'); +export function suppressTracing(context) { + return context.setValue(SUPPRESS_TRACING_KEY, true); +} +export function unsuppressTracing(context) { + return context.deleteValue(SUPPRESS_TRACING_KEY); +} +export function isTracingSuppressed(context) { + return context.getValue(SUPPRESS_TRACING_KEY) === true; +} +//# sourceMappingURL=suppress-tracing.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/suppress-tracing.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/suppress-tracing.js.map new file mode 100644 index 0000000..b842fa5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/trace/suppress-tracing.js.map @@ -0,0 +1 @@ +{"version":3,"file":"suppress-tracing.js","sourceRoot":"","sources":["../../../src/trace/suppress-tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,oBAAoB,GAAG,gBAAgB,CAC3C,gDAAgD,CACjD,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO,OAAO,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;AACzD,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, createContextKey } from '@opentelemetry/api';\n\nconst SUPPRESS_TRACING_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key SUPPRESS_TRACING'\n);\n\nexport function suppressTracing(context: Context): Context {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\n\nexport function unsuppressTracing(context: Context): Context {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\n\nexport function isTracingSuppressed(context: Context): boolean {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/callback.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/callback.d.ts new file mode 100644 index 0000000..1f030f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/callback.d.ts @@ -0,0 +1,14 @@ +/** + * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked. + */ +export declare class BindOnceFuture R = () => R> { + private _isCalled; + private _deferred; + private _callback; + private _that; + constructor(callback: T, that: This); + get isCalled(): boolean; + get promise(): Promise; + call(...args: Parameters): Promise; +} +//# sourceMappingURL=callback.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/callback.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/callback.js new file mode 100644 index 0000000..7c69a47 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/callback.js @@ -0,0 +1,48 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Deferred } from './promise'; +/** + * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked. + */ +export class BindOnceFuture { + _isCalled = false; + _deferred = new Deferred(); + _callback; + _that; + constructor(callback, that) { + this._callback = callback; + this._that = that; + } + get isCalled() { + return this._isCalled; + } + get promise() { + return this._deferred.promise; + } + call(...args) { + if (!this._isCalled) { + this._isCalled = true; + try { + Promise.resolve(this._callback.call(this._that, ...args)).then(val => this._deferred.resolve(val), err => this._deferred.reject(err)); + } + catch (err) { + this._deferred.reject(err); + } + } + return this._deferred.promise; + } +} +//# sourceMappingURL=callback.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/callback.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/callback.js.map new file mode 100644 index 0000000..2bd1794 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/callback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"callback.js","sourceRoot":"","sources":["../../../src/utils/callback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;GAEG;AACH,MAAM,OAAO,cAAc;IAKjB,SAAS,GAAG,KAAK,CAAC;IAClB,SAAS,GAAG,IAAI,QAAQ,EAAK,CAAC;IAC9B,SAAS,CAAI;IACb,KAAK,CAAO;IAEpB,YAAY,QAAW,EAAE,IAAU;QACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,GAAG,IAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI;gBACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAC5D,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAClC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAClC,CAAC;aACH;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC5B;SACF;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Deferred } from './promise';\n\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nexport class BindOnceFuture<\n R,\n This = unknown,\n T extends (this: This, ...args: unknown[]) => R = () => R,\n> {\n private _isCalled = false;\n private _deferred = new Deferred();\n private _callback: T;\n private _that: This;\n\n constructor(callback: T, that: This) {\n this._callback = callback;\n this._that = that;\n }\n\n get isCalled() {\n return this._isCalled;\n }\n\n get promise() {\n return this._deferred.promise;\n }\n\n call(...args: Parameters): Promise {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(\n val => this._deferred.resolve(val),\n err => this._deferred.reject(err)\n );\n } catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/configuration.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/configuration.d.ts new file mode 100644 index 0000000..347bdfc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/configuration.d.ts @@ -0,0 +1,7 @@ +import { DiagLogLevel } from '@opentelemetry/api'; +/** + * 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. + * @param value + */ +export declare function diagLogLevelFromString(value: string | undefined): DiagLogLevel | undefined; +//# sourceMappingURL=configuration.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/configuration.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/configuration.js new file mode 100644 index 0000000..8afb1c5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/configuration.js @@ -0,0 +1,42 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag, DiagLogLevel } from '@opentelemetry/api'; +const logLevelMap = { + ALL: DiagLogLevel.ALL, + VERBOSE: DiagLogLevel.VERBOSE, + DEBUG: DiagLogLevel.DEBUG, + INFO: DiagLogLevel.INFO, + WARN: DiagLogLevel.WARN, + ERROR: DiagLogLevel.ERROR, + NONE: DiagLogLevel.NONE, +}; +/** + * 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. + * @param value + */ +export function diagLogLevelFromString(value) { + if (value == null) { + // 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) + return undefined; + } + const resolvedLogLevel = logLevelMap[value.toUpperCase()]; + if (resolvedLogLevel == null) { + diag.warn(`Unknown log level "${value}", expected one of ${Object.keys(logLevelMap)}, using default`); + return DiagLogLevel.INFO; + } + return resolvedLogLevel; +} +//# sourceMappingURL=configuration.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/configuration.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/configuration.js.map new file mode 100644 index 0000000..4e72ef7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/configuration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../src/utils/configuration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,GAAoC;IACnD,GAAG,EAAE,YAAY,CAAC,GAAG;IACrB,OAAO,EAAE,YAAY,CAAC,OAAO;IAC7B,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,IAAI,EAAE,YAAY,CAAC,IAAI;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAyB;IAEzB,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,yIAAyI;QACzI,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAE1D,IAAI,gBAAgB,IAAI,IAAI,EAAE;QAC5B,IAAI,CAAC,IAAI,CACP,sBAAsB,KAAK,sBAAsB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAC3F,CAAC;QACF,OAAO,YAAY,CAAC,IAAI,CAAC;KAC1B;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag, DiagLogLevel } from '@opentelemetry/api';\n\nconst logLevelMap: { [key: string]: DiagLogLevel } = {\n ALL: DiagLogLevel.ALL,\n VERBOSE: DiagLogLevel.VERBOSE,\n DEBUG: DiagLogLevel.DEBUG,\n INFO: DiagLogLevel.INFO,\n WARN: DiagLogLevel.WARN,\n ERROR: DiagLogLevel.ERROR,\n NONE: DiagLogLevel.NONE,\n};\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 */\nexport function diagLogLevelFromString(\n value: string | undefined\n): DiagLogLevel | undefined {\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\n const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n\n if (resolvedLogLevel == null) {\n diag.warn(\n `Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`\n );\n return DiagLogLevel.INFO;\n }\n\n return resolvedLogLevel;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/lodash.merge.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/lodash.merge.d.ts new file mode 100644 index 0000000..aebf18b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/lodash.merge.d.ts @@ -0,0 +1,30 @@ +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +export declare function isPlainObject(value: any): boolean; +//# sourceMappingURL=lodash.merge.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/lodash.merge.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/lodash.merge.js new file mode 100644 index 0000000..b756318 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/lodash.merge.js @@ -0,0 +1,153 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/** + * based on lodash in order to support esm builds without esModuleInterop. + * lodash is using MIT License. + **/ +const objectTag = '[object Object]'; +const nullTag = '[object Null]'; +const undefinedTag = '[object Undefined]'; +const funcProto = Function.prototype; +const funcToString = funcProto.toString; +const objectCtorString = funcToString.call(Object); +const getPrototypeOf = Object.getPrototypeOf; +const objectProto = Object.prototype; +const hasOwnProperty = objectProto.hasOwnProperty; +const symToStringTag = Symbol ? Symbol.toStringTag : undefined; +const nativeObjectToString = objectProto.toString; +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +export function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) !== objectTag) { + return false; + } + const proto = getPrototypeOf(value); + if (proto === null) { + return true; + } + const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return (typeof Ctor == 'function' && + Ctor instanceof Ctor && + funcToString.call(Ctor) === objectCtorString); +} +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return symToStringTag && symToStringTag in Object(value) + ? getRawTag(value) + : objectToString(value); +} +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + const isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; + let unmasked = false; + try { + value[symToStringTag] = undefined; + unmasked = true; + } + catch { + // silence + } + const result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } + else { + delete value[symToStringTag]; + } + } + return result; +} +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} +//# sourceMappingURL=lodash.merge.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/lodash.merge.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/lodash.merge.js.map new file mode 100644 index 0000000..6b6fd0d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/lodash.merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lodash.merge.js","sourceRoot":"","sources":["../../../src/utils/lodash.merge.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\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/**\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 */\nexport function isPlainObject(value: any) {\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 (\n typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString\n );\n}\n\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: any) {\n return value != null && typeof value == 'object';\n}\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: any) {\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/**\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: any) {\n const isOwn = hasOwnProperty.call(value, symToStringTag as any),\n tag = value[symToStringTag as any];\n let unmasked = false;\n\n try {\n value[symToStringTag as any] = undefined;\n unmasked = true;\n } catch {\n // silence\n }\n\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag as any] = tag;\n } else {\n delete value[symToStringTag as any];\n }\n }\n return result;\n}\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: any) {\n return nativeObjectToString.call(value);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/merge.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/merge.d.ts new file mode 100644 index 0000000..fda0f9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/merge.d.ts @@ -0,0 +1,6 @@ +/** + * Merges objects together + * @param args - objects / values to be merged + */ +export declare function merge(...args: any[]): any; +//# sourceMappingURL=merge.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/merge.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/merge.js new file mode 100644 index 0000000..097130b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/merge.js @@ -0,0 +1,158 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { isPlainObject } from './lodash.merge'; +const MAX_LEVEL = 20; +/** + * Merges objects together + * @param args - objects / values to be merged + */ +export function merge(...args) { + let result = args.shift(); + const objects = new WeakMap(); + while (args.length > 0) { + result = mergeTwoObjects(result, args.shift(), 0, objects); + } + return result; +} +function takeValue(value) { + if (isArray(value)) { + return value.slice(); + } + return value; +} +/** + * Merges two objects + * @param one - first object + * @param two - second object + * @param level - current deep level + * @param objects - objects holder that has been already referenced - to prevent + * cyclic dependency + */ +function mergeTwoObjects(one, two, level = 0, objects) { + let result; + if (level > MAX_LEVEL) { + return undefined; + } + level++; + if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) { + result = takeValue(two); + } + else if (isArray(one)) { + result = one.slice(); + if (isArray(two)) { + for (let i = 0, j = two.length; i < j; i++) { + result.push(takeValue(two[i])); + } + } + else if (isObject(two)) { + const keys = Object.keys(two); + for (let i = 0, j = keys.length; i < j; i++) { + const key = keys[i]; + result[key] = takeValue(two[key]); + } + } + } + else if (isObject(one)) { + if (isObject(two)) { + if (!shouldMerge(one, two)) { + return two; + } + result = Object.assign({}, one); + const keys = Object.keys(two); + for (let i = 0, j = keys.length; i < j; i++) { + const key = keys[i]; + const twoValue = two[key]; + if (isPrimitive(twoValue)) { + if (typeof twoValue === 'undefined') { + delete result[key]; + } + else { + // result[key] = takeValue(twoValue); + result[key] = twoValue; + } + } + else { + const obj1 = result[key]; + const obj2 = twoValue; + if (wasObjectReferenced(one, key, objects) || + wasObjectReferenced(two, key, objects)) { + delete result[key]; + } + else { + if (isObject(obj1) && isObject(obj2)) { + const arr1 = objects.get(obj1) || []; + const arr2 = objects.get(obj2) || []; + arr1.push({ obj: one, key }); + arr2.push({ obj: two, key }); + objects.set(obj1, arr1); + objects.set(obj2, arr2); + } + result[key] = mergeTwoObjects(result[key], twoValue, level, objects); + } + } + } + } + else { + result = two; + } + } + return result; +} +/** + * Function to check if object has been already reference + * @param obj + * @param key + * @param objects + */ +function wasObjectReferenced(obj, key, objects) { + const arr = objects.get(obj[key]) || []; + for (let i = 0, j = arr.length; i < j; i++) { + const info = arr[i]; + if (info.key === key && info.obj === obj) { + return true; + } + } + return false; +} +function isArray(value) { + return Array.isArray(value); +} +function isFunction(value) { + return typeof value === 'function'; +} +function isObject(value) { + return (!isPrimitive(value) && + !isArray(value) && + !isFunction(value) && + typeof value === 'object'); +} +function isPrimitive(value) { + return (typeof value === 'string' || + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' || + value instanceof Date || + value instanceof RegExp || + value === null); +} +function shouldMerge(one, two) { + if (!isPlainObject(one) || !isPlainObject(two)) { + return false; + } + return true; +} +//# sourceMappingURL=merge.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/merge.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/merge.js.map new file mode 100644 index 0000000..118bf41 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/utils/merge.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { isPlainObject } from './lodash.merge';\n\nconst MAX_LEVEL = 20;\n\ninterface ObjectInto {\n obj: any;\n key: string;\n}\n\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nexport function merge(...args: any[]): any {\n let result: any = args.shift();\n const objects: WeakMap | undefined = new WeakMap<\n any,\n ObjectInto[]\n >();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n\n return result;\n}\n\nfunction takeValue(value: any): any {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\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(\n one: any,\n two: any,\n level = 0,\n objects: WeakMap\n): any {\n let result: any;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\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 } 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 } 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\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n } else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n } else {\n const obj1 = result[key];\n const obj2 = twoValue;\n\n if (\n wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)\n ) {\n delete result[key];\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\n result[key] = mergeTwoObjects(\n result[key],\n twoValue,\n level,\n objects\n );\n }\n }\n }\n } else {\n result = two;\n }\n }\n\n return result;\n}\n\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(\n obj: any,\n key: string,\n objects: WeakMap\n): boolean {\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}\n\nfunction isArray(value: any): boolean {\n return Array.isArray(value);\n}\n\nfunction isFunction(value: any): boolean {\n return typeof value === 'function';\n}\n\nfunction isObject(value: any): boolean {\n return (\n !isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object'\n );\n}\n\nfunction isPrimitive(value: any): boolean {\n return (\n 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 );\n}\n\nfunction shouldMerge(one: any, two: any): boolean {\n if (!isPlainObject(one) || !isPlainObject(two)) {\n return false;\n }\n\n return true;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/promise.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/promise.d.ts new file mode 100644 index 0000000..eb22322 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/promise.d.ts @@ -0,0 +1,10 @@ +export declare class Deferred { + private _promise; + private _resolve; + private _reject; + constructor(); + get promise(): Promise; + resolve(val: T): void; + reject(err: unknown): void; +} +//# sourceMappingURL=promise.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/promise.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/promise.js new file mode 100644 index 0000000..d5eeefb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/promise.js @@ -0,0 +1,36 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class Deferred { + _promise; + _resolve; + _reject; + constructor() { + this._promise = new Promise((resolve, reject) => { + this._resolve = resolve; + this._reject = reject; + }); + } + get promise() { + return this._promise; + } + resolve(val) { + this._resolve(val); + } + reject(err) { + this._reject(err); + } +} +//# sourceMappingURL=promise.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/promise.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/promise.js.map new file mode 100644 index 0000000..be99512 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/promise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/utils/promise.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,OAAO,QAAQ;IACX,QAAQ,CAAa;IACrB,QAAQ,CAAoB;IAC5B,OAAO,CAA4B;IAC3C;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,GAAM;QACZ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,GAAY;QACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport class Deferred {\n private _promise: Promise;\n private _resolve!: (val: T) => void;\n private _reject!: (error: unknown) => void;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n get promise() {\n return this._promise;\n }\n\n resolve(val: T) {\n this._resolve(val);\n }\n\n reject(err: unknown) {\n this._reject(err);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/timeout.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/timeout.d.ts new file mode 100644 index 0000000..6095293 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/timeout.d.ts @@ -0,0 +1,17 @@ +/** + * Error that is thrown on timeouts. + */ +export declare class TimeoutError extends Error { + constructor(message?: string); +} +/** + * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise + * rejects, and resolves if the specified promise resolves. + * + *

                          NOTE: this operation will continue even after it throws a {@link TimeoutError}. + * + * @param promise promise to use with timeout. + * @param timeout the timeout in milliseconds until the returned promise is rejected. + */ +export declare function callWithTimeout(promise: Promise, timeout: number): Promise; +//# sourceMappingURL=timeout.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/timeout.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/timeout.js new file mode 100644 index 0000000..3f0ce0c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/timeout.js @@ -0,0 +1,51 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Error that is thrown on timeouts. + */ +export class TimeoutError extends Error { + constructor(message) { + super(message); + // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see: + // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work + Object.setPrototypeOf(this, TimeoutError.prototype); + } +} +/** + * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise + * rejects, and resolves if the specified promise resolves. + * + *

                          NOTE: this operation will continue even after it throws a {@link TimeoutError}. + * + * @param promise promise to use with timeout. + * @param timeout the timeout in milliseconds until the returned promise is rejected. + */ +export function callWithTimeout(promise, timeout) { + let timeoutHandle; + const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) { + timeoutHandle = setTimeout(function timeoutHandler() { + reject(new TimeoutError('Operation timed out.')); + }, timeout); + }); + return Promise.race([promise, timeoutPromise]).then(result => { + clearTimeout(timeoutHandle); + return result; + }, reason => { + clearTimeout(timeoutHandle); + throw reason; + }); +} +//# sourceMappingURL=timeout.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/timeout.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/timeout.js.map new file mode 100644 index 0000000..7e7a3ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/timeout.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../../src/utils/timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,0FAA0F;QAC1F,6IAA6I;QAC7I,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAmB,EACnB,OAAe;IAEf,IAAI,aAA4C,CAAC;IAEjD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,SAAS,eAAe,CAChE,QAAQ,EACR,MAAM;QAEN,aAAa,GAAG,UAAU,CAAC,SAAS,cAAc;YAChD,MAAM,CAAC,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACnD,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,EAAE;QACP,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,MAAM,CAAC,EAAE;QACP,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM,MAAM,CAAC;IACf,CAAC,CACF,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Error that is thrown on timeouts.\n */\nexport class TimeoutError extends Error {\n constructor(message?: string) {\n super(message);\n\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}\n\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 */\nexport function callWithTimeout(\n promise: Promise,\n timeout: number\n): Promise {\n let timeoutHandle: ReturnType;\n\n const timeoutPromise = new Promise(function timeoutFunction(\n _resolve,\n reject\n ) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).then(\n result => {\n clearTimeout(timeoutHandle);\n return result;\n },\n reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n }\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/url.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/url.d.ts new file mode 100644 index 0000000..a87f381 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/url.d.ts @@ -0,0 +1,8 @@ +export declare function urlMatches(url: string, urlToMatch: string | RegExp): boolean; +/** + * Check if {@param url} should be ignored when comparing against {@param ignoredUrls} + * @param url + * @param ignoredUrls + */ +export declare function isUrlIgnored(url: string, ignoredUrls?: Array): boolean; +//# sourceMappingURL=url.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/url.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/url.js new file mode 100644 index 0000000..6c60720 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/url.js @@ -0,0 +1,40 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export function urlMatches(url, urlToMatch) { + if (typeof urlToMatch === 'string') { + return url === urlToMatch; + } + else { + return !!url.match(urlToMatch); + } +} +/** + * Check if {@param url} should be ignored when comparing against {@param ignoredUrls} + * @param url + * @param ignoredUrls + */ +export function isUrlIgnored(url, ignoredUrls) { + if (!ignoredUrls) { + return false; + } + for (const ignoreUrl of ignoredUrls) { + if (urlMatches(url, ignoreUrl)) { + return true; + } + } + return false; +} +//# sourceMappingURL=url.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/url.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/url.js.map new file mode 100644 index 0000000..b5cf3eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/utils/url.js.map @@ -0,0 +1 @@ +{"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,UAA2B;IACjE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,OAAO,GAAG,KAAK,UAAU,CAAC;KAC3B;SAAM;QACL,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KAChC;AACH,CAAC;AACD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAW,EACX,WAAoC;IAEpC,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,KAAK,CAAC;KACd;IAED,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;QACnC,IAAI,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function urlMatches(url: string, urlToMatch: string | RegExp): boolean {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n } else {\n return !!url.match(urlToMatch);\n }\n}\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nexport function isUrlIgnored(\n url: string,\n ignoredUrls?: Array\n): boolean {\n if (!ignoredUrls) {\n return false;\n }\n\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/version.d.ts new file mode 100644 index 0000000..4539690 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "2.5.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/version.js new file mode 100644 index 0000000..fabcf00 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '2.5.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/version.js.map new file mode 100644 index 0000000..277b52a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esm/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.5.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/ExportResult.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/ExportResult.d.ts new file mode 100644 index 0000000..570361b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/ExportResult.d.ts @@ -0,0 +1,9 @@ +export interface ExportResult { + code: ExportResultCode; + error?: Error; +} +export declare enum ExportResultCode { + SUCCESS = 0, + FAILED = 1 +} +//# sourceMappingURL=ExportResult.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/ExportResult.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/ExportResult.js new file mode 100644 index 0000000..5272c76 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/ExportResult.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var ExportResultCode; +(function (ExportResultCode) { + ExportResultCode[ExportResultCode["SUCCESS"] = 0] = "SUCCESS"; + ExportResultCode[ExportResultCode["FAILED"] = 1] = "FAILED"; +})(ExportResultCode || (ExportResultCode = {})); +//# sourceMappingURL=ExportResult.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/ExportResult.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/ExportResult.js.map new file mode 100644 index 0000000..69fd9e7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/ExportResult.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ExportResult.js","sourceRoot":"","sources":["../../src/ExportResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,6DAAO,CAAA;IACP,2DAAM,CAAA;AACR,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface ExportResult {\n code: ExportResultCode;\n error?: Error;\n}\n\nexport enum ExportResultCode {\n SUCCESS,\n FAILED,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/constants.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/constants.d.ts new file mode 100644 index 0000000..72470ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/constants.d.ts @@ -0,0 +1,8 @@ +export declare const BAGGAGE_KEY_PAIR_SEPARATOR = "="; +export declare const BAGGAGE_PROPERTIES_SEPARATOR = ";"; +export declare const BAGGAGE_ITEMS_SEPARATOR = ","; +export declare const BAGGAGE_HEADER = "baggage"; +export declare const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180; +export declare const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096; +export declare const BAGGAGE_MAX_TOTAL_LENGTH = 8192; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/constants.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/constants.js new file mode 100644 index 0000000..4ade400 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/constants.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const BAGGAGE_KEY_PAIR_SEPARATOR = '='; +export const BAGGAGE_PROPERTIES_SEPARATOR = ';'; +export const BAGGAGE_ITEMS_SEPARATOR = ','; +// Name of the http header used to propagate the baggage +export const BAGGAGE_HEADER = 'baggage'; +// Maximum number of name-value pairs allowed by w3c spec +export const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180; +// Maximum number of bytes per a single name-value pair allowed by w3c spec +export const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096; +// Maximum total length of all name-value pairs allowed by w3c spec +export const BAGGAGE_MAX_TOTAL_LENGTH = 8192; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/constants.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/constants.js.map new file mode 100644 index 0000000..8582c91 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/baggage/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,wDAAwD;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,yDAAyD;AACzD,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,CAAC;AACrD,mEAAmE;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport const BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexport const BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexport const BAGGAGE_ITEMS_SEPARATOR = ',';\n\n// Name of the http header used to propagate the baggage\nexport const BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexport const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/propagation/W3CBaggagePropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/propagation/W3CBaggagePropagator.d.ts new file mode 100644 index 0000000..d946bb1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/propagation/W3CBaggagePropagator.d.ts @@ -0,0 +1,13 @@ +import { Context, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api'; +/** + * Propagates {@link Baggage} through Context format propagation. + * + * Based on the Baggage specification: + * https://w3c.github.io/baggage/ + */ +export declare class W3CBaggagePropagator implements TextMapPropagator { + inject(context: Context, carrier: unknown, setter: TextMapSetter): void; + extract(context: Context, carrier: unknown, getter: TextMapGetter): Context; + fields(): string[]; +} +//# sourceMappingURL=W3CBaggagePropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/propagation/W3CBaggagePropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/propagation/W3CBaggagePropagator.js new file mode 100644 index 0000000..bd17a61 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/propagation/W3CBaggagePropagator.js @@ -0,0 +1,72 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { propagation, } from '@opentelemetry/api'; +import { isTracingSuppressed } from '../../trace/suppress-tracing'; +import { BAGGAGE_HEADER, BAGGAGE_ITEMS_SEPARATOR, BAGGAGE_MAX_NAME_VALUE_PAIRS, BAGGAGE_MAX_PER_NAME_VALUE_PAIRS, } from '../constants'; +import { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from '../utils'; +/** + * Propagates {@link Baggage} through Context format propagation. + * + * Based on the Baggage specification: + * https://w3c.github.io/baggage/ + */ +export class W3CBaggagePropagator { + inject(context, carrier, setter) { + const baggage = propagation.getBaggage(context); + if (!baggage || isTracingSuppressed(context)) + return; + const keyPairs = getKeyPairs(baggage) + .filter((pair) => { + return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS; + }) + .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS); + const headerValue = serializeKeyPairs(keyPairs); + if (headerValue.length > 0) { + setter.set(carrier, BAGGAGE_HEADER, headerValue); + } + } + extract(context, carrier, getter) { + const headerValue = getter.get(carrier, BAGGAGE_HEADER); + const baggageString = Array.isArray(headerValue) + ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR) + : headerValue; + if (!baggageString) + return context; + const baggage = {}; + if (baggageString.length === 0) { + return context; + } + const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR); + pairs.forEach(entry => { + const keyPair = parsePairKeyValue(entry); + if (keyPair) { + const baggageEntry = { value: keyPair.value }; + if (keyPair.metadata) { + baggageEntry.metadata = keyPair.metadata; + } + baggage[keyPair.key] = baggageEntry; + } + }); + if (Object.entries(baggage).length === 0) { + return context; + } + return propagation.setBaggage(context, propagation.createBaggage(baggage)); + } + fields() { + return [BAGGAGE_HEADER]; + } +} +//# sourceMappingURL=W3CBaggagePropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/propagation/W3CBaggagePropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/propagation/W3CBaggagePropagator.js.map new file mode 100644 index 0000000..aba8c2b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/propagation/W3CBaggagePropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"W3CBaggagePropagator.js","sourceRoot":"","sources":["../../../../src/baggage/propagation/W3CBaggagePropagator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,WAAW,GAIZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IAC/B,MAAM,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC9D,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC;YAAE,OAAO;QACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;aAClC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;YACvB,OAAO,IAAI,CAAC,MAAM,IAAI,gCAAgC,CAAC;QACzD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;SAClD;IACH,CAAC;IAED,OAAO,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC;QAChB,IAAI,CAAC,aAAa;YAAE,OAAO,OAAO,CAAC;QACnC,MAAM,OAAO,GAAiC,EAAE,CAAC;QACjD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,OAAO,OAAO,CAAC;SAChB;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpB,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,OAAO,EAAE;gBACX,MAAM,YAAY,GAAiB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC5D,IAAI,OAAO,CAAC,QAAQ,EAAE;oBACpB,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;iBAC1C;gBACD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n BaggageEntry,\n Context,\n propagation,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\n\nimport { isTracingSuppressed } from '../../trace/suppress-tracing';\nimport {\n BAGGAGE_HEADER,\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_MAX_NAME_VALUE_PAIRS,\n BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,\n} from '../constants';\nimport { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from '../utils';\n\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nexport class W3CBaggagePropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const baggage = propagation.getBaggage(context);\n if (!baggage || isTracingSuppressed(context)) return;\n const keyPairs = getKeyPairs(baggage)\n .filter((pair: string) => {\n return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = serializeKeyPairs(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, BAGGAGE_HEADER, headerValue);\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const headerValue = getter.get(carrier, BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString) return context;\n const baggage: Record = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair) {\n const baggageEntry: 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 propagation.setBaggage(context, propagation.createBaggage(baggage));\n }\n\n fields(): string[] {\n return [BAGGAGE_HEADER];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/utils.d.ts new file mode 100644 index 0000000..f6fe906 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/utils.d.ts @@ -0,0 +1,16 @@ +import { Baggage, BaggageEntryMetadata } from '@opentelemetry/api'; +type ParsedBaggageKeyValue = { + key: string; + value: string; + metadata: BaggageEntryMetadata | undefined; +}; +export declare function serializeKeyPairs(keyPairs: string[]): string; +export declare function getKeyPairs(baggage: Baggage): string[]; +export declare function parsePairKeyValue(entry: string): ParsedBaggageKeyValue | undefined; +/** + * Parse a string serialized in the baggage HTTP Format (without metadata): + * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md + */ +export declare function parseKeyPairsIntoRecord(value?: string): Record; +export {}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/utils.js new file mode 100644 index 0000000..db4c9ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/utils.js @@ -0,0 +1,82 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { baggageEntryMetadataFromString, } from '@opentelemetry/api'; +import { BAGGAGE_ITEMS_SEPARATOR, BAGGAGE_PROPERTIES_SEPARATOR, BAGGAGE_KEY_PAIR_SEPARATOR, BAGGAGE_MAX_TOTAL_LENGTH, } from './constants'; +export function serializeKeyPairs(keyPairs) { + return keyPairs.reduce((hValue, current) => { + const value = `${hValue}${hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''}${current}`; + return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value; + }, ''); +} +export function getKeyPairs(baggage) { + return baggage.getAllEntries().map(([key, value]) => { + let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`; + // include opaque metadata if provided + // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation + if (value.metadata !== undefined) { + entry += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString(); + } + return entry; + }); +} +export function parsePairKeyValue(entry) { + if (!entry) + return; + const metadataSeparatorIndex = entry.indexOf(BAGGAGE_PROPERTIES_SEPARATOR); + const keyPairPart = metadataSeparatorIndex === -1 + ? entry + : entry.substring(0, metadataSeparatorIndex); + const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR); + if (separatorIndex <= 0) + return; + const rawKey = keyPairPart.substring(0, separatorIndex).trim(); + const rawValue = keyPairPart.substring(separatorIndex + 1).trim(); + if (!rawKey || !rawValue) + return; + let key; + let value; + try { + key = decodeURIComponent(rawKey); + value = decodeURIComponent(rawValue); + } + catch { + return; + } + let metadata; + if (metadataSeparatorIndex !== -1 && + metadataSeparatorIndex < entry.length - 1) { + const metadataString = entry.substring(metadataSeparatorIndex + 1); + metadata = baggageEntryMetadataFromString(metadataString); + } + return { key, value, metadata }; +} +/** + * Parse a string serialized in the baggage HTTP Format (without metadata): + * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md + */ +export function parseKeyPairsIntoRecord(value) { + const result = {}; + if (typeof value === 'string' && value.length > 0) { + value.split(BAGGAGE_ITEMS_SEPARATOR).forEach(entry => { + const keyPair = parsePairKeyValue(entry); + if (keyPair !== undefined && keyPair.value.length > 0) { + result[keyPair.key] = keyPair.value; + } + }); + } + return result; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/utils.js.map new file mode 100644 index 0000000..82f674d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/baggage/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/baggage/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Baggage,\n BaggageEntryMetadata,\n baggageEntryMetadataFromString,\n} from '@opentelemetry/api';\nimport {\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_PROPERTIES_SEPARATOR,\n BAGGAGE_KEY_PAIR_SEPARATOR,\n BAGGAGE_MAX_TOTAL_LENGTH,\n} from './constants';\n\ntype ParsedBaggageKeyValue = {\n key: string;\n value: string;\n metadata: BaggageEntryMetadata | undefined;\n};\n\nexport function serializeKeyPairs(keyPairs: string[]): string {\n return keyPairs.reduce((hValue: string, current: string) => {\n const value = `${hValue}${\n hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''\n }${current}`;\n return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\n\nexport function getKeyPairs(baggage: Baggage): string[] {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n\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 += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n\n return entry;\n });\n}\n\nexport function parsePairKeyValue(\n entry: string\n): ParsedBaggageKeyValue | undefined {\n if (!entry) return;\n const metadataSeparatorIndex = entry.indexOf(BAGGAGE_PROPERTIES_SEPARATOR);\n const keyPairPart =\n metadataSeparatorIndex === -1\n ? entry\n : entry.substring(0, metadataSeparatorIndex);\n\n const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0) return;\n\n const rawKey = keyPairPart.substring(0, separatorIndex).trim();\n const rawValue = keyPairPart.substring(separatorIndex + 1).trim();\n\n if (!rawKey || !rawValue) return;\n let key: string;\n let value: string;\n try {\n key = decodeURIComponent(rawKey);\n value = decodeURIComponent(rawValue);\n } catch {\n return;\n }\n\n let metadata;\n if (\n metadataSeparatorIndex !== -1 &&\n metadataSeparatorIndex < entry.length - 1\n ) {\n const metadataString = entry.substring(metadataSeparatorIndex + 1);\n metadata = baggageEntryMetadataFromString(metadataString);\n }\n\n return { key, value, metadata };\n}\n\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 */\nexport function parseKeyPairsIntoRecord(\n value?: string\n): Record {\n const result: Record = {};\n\n if (typeof value === 'string' && value.length > 0) {\n value.split(BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n\n return result;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/anchored-clock.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/anchored-clock.d.ts new file mode 100644 index 0000000..87bddee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/anchored-clock.d.ts @@ -0,0 +1,41 @@ +export interface Clock { + /** + * Return the current time in milliseconds from some epoch such as the Unix epoch or process start + */ + now(): number; +} +/** + * A utility for returning wall times anchored to a given point in time. Wall time measurements will + * not be taken from the system, but instead are computed by adding a monotonic clock time + * to the anchor point. + * + * This is needed because the system time can change and result in unexpected situations like + * spans ending before they are started. Creating an anchored clock for each local root span + * ensures that span timings and durations are accurate while preventing span times from drifting + * too far from the system clock. + * + * Only creating an anchored clock once per local trace ensures span times are correct relative + * to each other. For example, a child span will never have a start time before its parent even + * if the system clock is corrected during the local trace. + * + * Heavily inspired by the OTel Java anchored clock + * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java + */ +export declare class AnchoredClock implements Clock { + private _monotonicClock; + private _epochMillis; + private _performanceMillis; + /** + * Create a new AnchoredClock anchored to the current time returned by systemClock. + * + * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date + * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance + */ + constructor(systemClock: Clock, monotonicClock: Clock); + /** + * Returns the current time by adding the number of milliseconds since the + * AnchoredClock was created to the creation epoch time + */ + now(): number; +} +//# sourceMappingURL=anchored-clock.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/anchored-clock.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/anchored-clock.js new file mode 100644 index 0000000..c7272c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/anchored-clock.js @@ -0,0 +1,57 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * A utility for returning wall times anchored to a given point in time. Wall time measurements will + * not be taken from the system, but instead are computed by adding a monotonic clock time + * to the anchor point. + * + * This is needed because the system time can change and result in unexpected situations like + * spans ending before they are started. Creating an anchored clock for each local root span + * ensures that span timings and durations are accurate while preventing span times from drifting + * too far from the system clock. + * + * Only creating an anchored clock once per local trace ensures span times are correct relative + * to each other. For example, a child span will never have a start time before its parent even + * if the system clock is corrected during the local trace. + * + * Heavily inspired by the OTel Java anchored clock + * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java + */ +export class AnchoredClock { + _monotonicClock; + _epochMillis; + _performanceMillis; + /** + * Create a new AnchoredClock anchored to the current time returned by systemClock. + * + * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date + * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance + */ + constructor(systemClock, monotonicClock) { + this._monotonicClock = monotonicClock; + this._epochMillis = systemClock.now(); + this._performanceMillis = monotonicClock.now(); + } + /** + * Returns the current time by adding the number of milliseconds since the + * AnchoredClock was created to the creation epoch time + */ + now() { + const delta = this._monotonicClock.now() - this._performanceMillis; + return this._epochMillis + delta; + } +} +//# sourceMappingURL=anchored-clock.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/anchored-clock.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/anchored-clock.js.map new file mode 100644 index 0000000..f2b00fd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/anchored-clock.js.map @@ -0,0 +1 @@ +{"version":3,"file":"anchored-clock.js","sourceRoot":"","sources":["../../../src/common/anchored-clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,aAAa;IAChB,eAAe,CAAQ;IACvB,YAAY,CAAS;IACrB,kBAAkB,CAAS;IAEnC;;;;;OAKG;IACH,YAAmB,WAAkB,EAAE,cAAqB;QAC1D,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACI,GAAG;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnE,OAAO,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IACnC,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface Clock {\n /**\n * Return the current time in milliseconds from some epoch such as the Unix epoch or process start\n */\n now(): number;\n}\n\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 */\nexport class AnchoredClock implements Clock {\n private _monotonicClock: Clock;\n private _epochMillis: number;\n private _performanceMillis: number;\n\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 public constructor(systemClock: Clock, monotonicClock: Clock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\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 public now(): number {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/attributes.d.ts new file mode 100644 index 0000000..3d9fe32 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/attributes.d.ts @@ -0,0 +1,5 @@ +import { AttributeValue, Attributes } from '@opentelemetry/api'; +export declare function sanitizeAttributes(attributes: unknown): Attributes; +export declare function isAttributeKey(key: unknown): key is string; +export declare function isAttributeValue(val: unknown): val is AttributeValue; +//# sourceMappingURL=attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/attributes.js new file mode 100644 index 0000000..2b12a81 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/attributes.js @@ -0,0 +1,87 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +export function sanitizeAttributes(attributes) { + const out = {}; + if (typeof attributes !== 'object' || attributes == null) { + return out; + } + for (const key in attributes) { + if (!Object.prototype.hasOwnProperty.call(attributes, key)) { + continue; + } + if (!isAttributeKey(key)) { + diag.warn(`Invalid attribute key: ${key}`); + continue; + } + const val = attributes[key]; + if (!isAttributeValue(val)) { + diag.warn(`Invalid attribute value set for key: ${key}`); + continue; + } + if (Array.isArray(val)) { + out[key] = val.slice(); + } + else { + out[key] = val; + } + } + return out; +} +export function isAttributeKey(key) { + return typeof key === 'string' && key !== ''; +} +export function isAttributeValue(val) { + if (val == null) { + return true; + } + if (Array.isArray(val)) { + return isHomogeneousAttributeValueArray(val); + } + return isValidPrimitiveAttributeValueType(typeof val); +} +function isHomogeneousAttributeValueArray(arr) { + let type; + for (const element of arr) { + // null/undefined elements are allowed + if (element == null) + continue; + const elementType = typeof element; + if (elementType === type) { + continue; + } + if (!type) { + if (isValidPrimitiveAttributeValueType(elementType)) { + type = elementType; + continue; + } + // encountered an invalid primitive + return false; + } + return false; + } + return true; +} +function isValidPrimitiveAttributeValueType(valType) { + switch (valType) { + case 'number': + case 'boolean': + case 'string': + return true; + } + return false; +} +//# sourceMappingURL=attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/attributes.js.map new file mode 100644 index 0000000..53069d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/common/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAA8B,MAAM,oBAAoB,CAAC;AAEtE,MAAM,UAAU,kBAAkB,CAAC,UAAmB;IACpD,MAAM,GAAG,GAAe,EAAE,CAAC;IAE3B,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,IAAI,IAAI,EAAE;QACxD,OAAO,GAAG,CAAC;KACZ;IAED,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;YAC1D,SAAS;SACV;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;YAC3C,SAAS;SACV;QACD,MAAM,GAAG,GAAI,UAAsC,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAC;YACzD,SAAS;SACV;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;SACxB;aAAM;YACL,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;SAChB;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,IAAI,IAAI,EAAE;QACf,OAAO,IAAI,CAAC;KACb;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,gCAAgC,CAAC,GAAG,CAAC,CAAC;KAC9C;IAED,OAAO,kCAAkC,CAAC,OAAO,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,gCAAgC,CAAC,GAAc;IACtD,IAAI,IAAwB,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE;QACzB,sCAAsC;QACtC,IAAI,OAAO,IAAI,IAAI;YAAE,SAAS;QAC9B,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC;QAEnC,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,SAAS;SACV;QAED,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,kCAAkC,CAAC,WAAW,CAAC,EAAE;gBACnD,IAAI,GAAG,WAAW,CAAC;gBACnB,SAAS;aACV;YACD,mCAAmC;YACnC,OAAO,KAAK,CAAC;SACd;QAED,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kCAAkC,CAAC,OAAe;IACzD,QAAQ,OAAO,EAAE;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag, AttributeValue, Attributes } from '@opentelemetry/api';\n\nexport function sanitizeAttributes(attributes: unknown): Attributes {\n const out: Attributes = {};\n\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n\n for (const key in attributes) {\n if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n continue;\n }\n if (!isAttributeKey(key)) {\n diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n const val = (attributes as Record)[key];\n if (!isAttributeValue(val)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n } else {\n out[key] = val;\n }\n }\n\n return out;\n}\n\nexport function isAttributeKey(key: unknown): key is string {\n return typeof key === 'string' && key !== '';\n}\n\nexport function isAttributeValue(val: unknown): val is AttributeValue {\n if (val == null) {\n return true;\n }\n\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n\n return isValidPrimitiveAttributeValueType(typeof val);\n}\n\nfunction isHomogeneousAttributeValueArray(arr: unknown[]): boolean {\n let type: string | undefined;\n\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null) continue;\n const elementType = typeof element;\n\n if (elementType === type) {\n continue;\n }\n\n if (!type) {\n if (isValidPrimitiveAttributeValueType(elementType)) {\n type = elementType;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction isValidPrimitiveAttributeValueType(valType: string): boolean {\n switch (valType) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n\n return false;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/global-error-handler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/global-error-handler.d.ts new file mode 100644 index 0000000..e7d4dc7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/global-error-handler.d.ts @@ -0,0 +1,13 @@ +import { Exception } from '@opentelemetry/api'; +import { ErrorHandler } from './types'; +/** + * Set the global error handler + * @param {ErrorHandler} handler + */ +export declare function setGlobalErrorHandler(handler: ErrorHandler): void; +/** + * Return the global error handler + * @param {Exception} ex + */ +export declare function globalErrorHandler(ex: Exception): void; +//# sourceMappingURL=global-error-handler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/global-error-handler.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/global-error-handler.js new file mode 100644 index 0000000..c1f6f5e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/global-error-handler.js @@ -0,0 +1,36 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { loggingErrorHandler } from './logging-error-handler'; +/** The global error handler delegate */ +let delegateHandler = loggingErrorHandler(); +/** + * Set the global error handler + * @param {ErrorHandler} handler + */ +export function setGlobalErrorHandler(handler) { + delegateHandler = handler; +} +/** + * Return the global error handler + * @param {Exception} ex + */ +export function globalErrorHandler(ex) { + try { + delegateHandler(ex); + } + catch { } // eslint-disable-line no-empty +} +//# sourceMappingURL=global-error-handler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/global-error-handler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/global-error-handler.js.map new file mode 100644 index 0000000..e0d5c56 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/global-error-handler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-error-handler.js","sourceRoot":"","sources":["../../../src/common/global-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,wCAAwC;AACxC,IAAI,eAAe,GAAG,mBAAmB,EAAE,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,eAAe,GAAG,OAAO,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAa;IAC9C,IAAI;QACF,eAAe,CAAC,EAAE,CAAC,CAAC;KACrB;IAAC,MAAM,GAAE,CAAC,+BAA+B;AAC5C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '@opentelemetry/api';\nimport { loggingErrorHandler } from './logging-error-handler';\nimport { ErrorHandler } from './types';\n\n/** The global error handler delegate */\nlet delegateHandler = loggingErrorHandler();\n\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nexport function setGlobalErrorHandler(handler: ErrorHandler): void {\n delegateHandler = handler;\n}\n\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nexport function globalErrorHandler(ex: Exception): void {\n try {\n delegateHandler(ex);\n } catch {} // eslint-disable-line no-empty\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/globalThis.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/globalThis.d.ts new file mode 100644 index 0000000..6804ddb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/globalThis.d.ts @@ -0,0 +1,5 @@ +/** + * @deprecated Use globalThis directly instead. + */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/globalThis.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/globalThis.js new file mode 100644 index 0000000..dcabaf3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/globalThis.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @deprecated Use globalThis directly instead. + */ +export const _globalThis = globalThis; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/globalThis.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/globalThis.js.map new file mode 100644 index 0000000..7c7fb6c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../src/common/globalThis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * @deprecated Use globalThis directly instead.\n */\nexport const _globalThis = globalThis;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/logging-error-handler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/logging-error-handler.d.ts new file mode 100644 index 0000000..5d578b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/logging-error-handler.d.ts @@ -0,0 +1,7 @@ +import { ErrorHandler } from './types'; +/** + * Returns a function that logs an error using the provided logger, or a + * console logger if one was not provided. + */ +export declare function loggingErrorHandler(): ErrorHandler; +//# sourceMappingURL=logging-error-handler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/logging-error-handler.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/logging-error-handler.js new file mode 100644 index 0000000..9c274f1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/logging-error-handler.js @@ -0,0 +1,59 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +/** + * Returns a function that logs an error using the provided logger, or a + * console logger if one was not provided. + */ +export function loggingErrorHandler() { + return (ex) => { + diag.error(stringifyException(ex)); + }; +} +/** + * Converts an exception into a string representation + * @param {Exception} ex + */ +function stringifyException(ex) { + if (typeof ex === 'string') { + return ex; + } + else { + return JSON.stringify(flattenException(ex)); + } +} +/** + * Flattens an exception into key-value pairs by traversing the prototype chain + * and coercing values to strings. Duplicate properties will not be overwritten; + * the first insert wins. + */ +function flattenException(ex) { + const result = {}; + let current = ex; + while (current !== null) { + Object.getOwnPropertyNames(current).forEach(propertyName => { + if (result[propertyName]) + return; + const value = current[propertyName]; + if (value) { + result[propertyName] = String(value); + } + }); + current = Object.getPrototypeOf(current); + } + return result; +} +//# sourceMappingURL=logging-error-handler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/logging-error-handler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/logging-error-handler.js.map new file mode 100644 index 0000000..3d45fd2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/logging-error-handler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logging-error-handler.js","sourceRoot":"","sources":["../../../src/common/logging-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAa,MAAM,oBAAoB,CAAC;AAGrD;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,EAAa,EAAE,EAAE;QACvB,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,EAAsB;IAChD,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QAC1B,OAAO,EAAE,CAAC;KACX;SAAM;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7C;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,EAAa;IACrC,MAAM,MAAM,GAAG,EAA4B,CAAC;IAC5C,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,OAAO,OAAO,KAAK,IAAI,EAAE;QACvB,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACzD,IAAI,MAAM,CAAC,YAAY,CAAC;gBAAE,OAAO;YACjC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAoC,CAAC,CAAC;YAC5D,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;aACtC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;KAC1C;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag, Exception } from '@opentelemetry/api';\nimport { ErrorHandler } from './types';\n\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nexport function loggingErrorHandler(): ErrorHandler {\n return (ex: Exception) => {\n diag.error(stringifyException(ex));\n };\n}\n\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex: Exception | string): string {\n if (typeof ex === 'string') {\n return ex;\n } else {\n return JSON.stringify(flattenException(ex));\n }\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: Exception): Record {\n const result = {} as Record;\n let current = ex;\n\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName]) return;\n const value = current[propertyName as keyof typeof current];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n\n return result;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/time.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/time.d.ts new file mode 100644 index 0000000..dd00182 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/time.d.ts @@ -0,0 +1,62 @@ +import * as api from '@opentelemetry/api'; +/** + * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]). + * @param epochMillis + */ +export declare function millisToHrTime(epochMillis: number): api.HrTime; +/** + * @deprecated Use `performance.timeOrigin` directly. + */ +export declare function getTimeOrigin(): number; +/** + * Returns an hrtime calculated via performance component. + * @param performanceNow + */ +export declare function hrTime(performanceNow?: number): api.HrTime; +/** + * + * Converts a TimeInput to an HrTime, defaults to _hrtime(). + * @param time + */ +export declare function timeInputToHrTime(time: api.TimeInput): api.HrTime; +/** + * Returns a duration of two hrTime. + * @param startTime + * @param endTime + */ +export declare function hrTimeDuration(startTime: api.HrTime, endTime: api.HrTime): api.HrTime; +/** + * Convert hrTime to timestamp, for example "2019-05-14T17:00:00.000123456Z" + * @param time + */ +export declare function hrTimeToTimeStamp(time: api.HrTime): string; +/** + * Convert hrTime to nanoseconds. + * @param time + */ +export declare function hrTimeToNanoseconds(time: api.HrTime): number; +/** + * Convert hrTime to milliseconds. + * @param time + */ +export declare function hrTimeToMilliseconds(time: api.HrTime): number; +/** + * Convert hrTime to microseconds. + * @param time + */ +export declare function hrTimeToMicroseconds(time: api.HrTime): number; +/** + * check if time is HrTime + * @param value + */ +export declare function isTimeInputHrTime(value: unknown): value is api.HrTime; +/** + * check if input value is a correct types.TimeInput + * @param value + */ +export declare function isTimeInput(value: unknown): value is api.HrTime | number | Date; +/** + * Given 2 HrTime formatted times, return their sum as an HrTime. + */ +export declare function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime; +//# sourceMappingURL=time.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/time.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/time.js new file mode 100644 index 0000000..59bb875 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/time.js @@ -0,0 +1,154 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { otperformance as performance } from '../platform'; +const NANOSECOND_DIGITS = 9; +const NANOSECOND_DIGITS_IN_MILLIS = 6; +const MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS); +const SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS); +/** + * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]). + * @param epochMillis + */ +export function millisToHrTime(epochMillis) { + const epochSeconds = epochMillis / 1000; + // Decimals only. + const seconds = Math.trunc(epochSeconds); + // Round sub-nanosecond accuracy to nanosecond. + const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS); + return [seconds, nanos]; +} +/** + * @deprecated Use `performance.timeOrigin` directly. + */ +export function getTimeOrigin() { + return performance.timeOrigin; +} +/** + * Returns an hrtime calculated via performance component. + * @param performanceNow + */ +export function hrTime(performanceNow) { + const timeOrigin = millisToHrTime(performance.timeOrigin); + const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : performance.now()); + return addHrTimes(timeOrigin, now); +} +/** + * + * Converts a TimeInput to an HrTime, defaults to _hrtime(). + * @param time + */ +export function timeInputToHrTime(time) { + // process.hrtime + if (isTimeInputHrTime(time)) { + return time; + } + else if (typeof time === 'number') { + // Must be a performance.now() if it's smaller than process start time. + if (time < performance.timeOrigin) { + return hrTime(time); + } + else { + // epoch milliseconds or performance.timeOrigin + return millisToHrTime(time); + } + } + else if (time instanceof Date) { + return millisToHrTime(time.getTime()); + } + else { + throw TypeError('Invalid input type'); + } +} +/** + * Returns a duration of two hrTime. + * @param startTime + * @param endTime + */ +export function hrTimeDuration(startTime, endTime) { + let seconds = endTime[0] - startTime[0]; + let nanos = endTime[1] - startTime[1]; + // overflow + if (nanos < 0) { + seconds -= 1; + // negate + nanos += SECOND_TO_NANOSECONDS; + } + return [seconds, nanos]; +} +/** + * Convert hrTime to timestamp, for example "2019-05-14T17:00:00.000123456Z" + * @param time + */ +export function hrTimeToTimeStamp(time) { + const precision = NANOSECOND_DIGITS; + const tmp = `${'0'.repeat(precision)}${time[1]}Z`; + const nanoString = tmp.substring(tmp.length - precision - 1); + const date = new Date(time[0] * 1000).toISOString(); + return date.replace('000Z', nanoString); +} +/** + * Convert hrTime to nanoseconds. + * @param time + */ +export function hrTimeToNanoseconds(time) { + return time[0] * SECOND_TO_NANOSECONDS + time[1]; +} +/** + * Convert hrTime to milliseconds. + * @param time + */ +export function hrTimeToMilliseconds(time) { + return time[0] * 1e3 + time[1] / 1e6; +} +/** + * Convert hrTime to microseconds. + * @param time + */ +export function hrTimeToMicroseconds(time) { + return time[0] * 1e6 + time[1] / 1e3; +} +/** + * check if time is HrTime + * @param value + */ +export function isTimeInputHrTime(value) { + return (Array.isArray(value) && + value.length === 2 && + typeof value[0] === 'number' && + typeof value[1] === 'number'); +} +/** + * check if input value is a correct types.TimeInput + * @param value + */ +export function isTimeInput(value) { + return (isTimeInputHrTime(value) || + typeof value === 'number' || + value instanceof Date); +} +/** + * Given 2 HrTime formatted times, return their sum as an HrTime. + */ +export function addHrTimes(time1, time2) { + const out = [time1[0] + time2[0], time1[1] + time2[1]]; + // Nanoseconds + if (out[1] >= SECOND_TO_NANOSECONDS) { + out[1] -= SECOND_TO_NANOSECONDS; + out[0] += 1; + } + return out; +} +//# sourceMappingURL=time.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/time.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/time.js.map new file mode 100644 index 0000000..9060e1e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/common/time.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport { otperformance as performance } from '../platform';\n\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/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nexport function millisToHrTime(epochMillis: number): api.HrTime {\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}\n\n/**\n * @deprecated Use `performance.timeOrigin` directly.\n */\nexport function getTimeOrigin(): number {\n return performance.timeOrigin;\n}\n\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nexport function hrTime(performanceNow?: number): api.HrTime {\n const timeOrigin = millisToHrTime(performance.timeOrigin);\n const now = millisToHrTime(\n typeof performanceNow === 'number' ? performanceNow : performance.now()\n );\n\n return addHrTimes(timeOrigin, now);\n}\n\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nexport function timeInputToHrTime(time: api.TimeInput): api.HrTime {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time as api.HrTime;\n } else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < performance.timeOrigin) {\n return hrTime(time);\n } else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n } else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n } else {\n throw TypeError('Invalid input type');\n }\n}\n\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nexport function hrTimeDuration(\n startTime: api.HrTime,\n endTime: api.HrTime\n): api.HrTime {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n\n return [seconds, nanos];\n}\n\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nexport function hrTimeToTimeStamp(time: api.HrTime): string {\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}\n\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nexport function hrTimeToNanoseconds(time: api.HrTime): number {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\n\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nexport function hrTimeToMilliseconds(time: api.HrTime): number {\n return time[0] * 1e3 + time[1] / 1e6;\n}\n\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nexport function hrTimeToMicroseconds(time: api.HrTime): number {\n return time[0] * 1e6 + time[1] / 1e3;\n}\n\n/**\n * check if time is HrTime\n * @param value\n */\nexport function isTimeInputHrTime(value: unknown): value is api.HrTime {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nexport function isTimeInput(\n value: unknown\n): value is api.HrTime | number | Date {\n return (\n isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date\n );\n}\n\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nexport function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime {\n const out = [time1[0] + time2[0], time1[1] + time2[1]] as api.HrTime;\n\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n\n return out;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/timer-util.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/timer-util.d.ts new file mode 100644 index 0000000..39d10f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/timer-util.d.ts @@ -0,0 +1,8 @@ +/** + * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package. + * @param timer + */ +export declare function unrefTimer(timer: { + unref(): unknown; +} | number): void; +//# sourceMappingURL=timer-util.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/timer-util.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/timer-util.js new file mode 100644 index 0000000..1a0ba07 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/timer-util.js @@ -0,0 +1,25 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package. + * @param timer + */ +export function unrefTimer(timer) { + if (typeof timer !== 'number') { + timer.unref(); + } +} +//# sourceMappingURL=timer-util.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/timer-util.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/timer-util.js.map new file mode 100644 index 0000000..7d327ef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/timer-util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timer-util.js","sourceRoot":"","sources":["../../../src/common/timer-util.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAoC;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,KAAK,CAAC,KAAK,EAAE,CAAC;KACf;AACH,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * @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 */\nexport function unrefTimer(timer: { unref(): unknown } | number): void {\n if (typeof timer !== 'number') {\n timer.unref();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/types.d.ts new file mode 100644 index 0000000..864edc2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/types.d.ts @@ -0,0 +1,23 @@ +import { Exception } from '@opentelemetry/api'; +/** + * This interface defines the params that are be added to the wrapped function + * using the "shimmer.wrap" + */ +export interface ShimWrapped extends Function { + __wrapped: boolean; + __unwrap: Function; + __original: Function; +} +/** + * An instrumentation scope consists of the name and optional version + * used to obtain a tracer or meter from a provider. This metadata is made + * available on ReadableSpan and MetricRecord for use by the export pipeline. + */ +export interface InstrumentationScope { + readonly name: string; + readonly version?: string; + readonly schemaUrl?: string; +} +/** Defines an error handler function */ +export type ErrorHandler = (ex: Exception) => void; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/types.js.map new file mode 100644 index 0000000..a1f510b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/common/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '@opentelemetry/api';\n\n/**\n * This interface defines the params that are be added to the wrapped function\n * using the \"shimmer.wrap\"\n */\nexport interface ShimWrapped extends Function {\n __wrapped: boolean;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __unwrap: Function;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __original: Function;\n}\n\n/**\n * An instrumentation scope consists of the name and optional version\n * used to obtain a tracer or meter from a provider. This metadata is made\n * available on ReadableSpan and MetricRecord for use by the export pipeline.\n */\nexport interface InstrumentationScope {\n readonly name: string;\n readonly version?: string;\n readonly schemaUrl?: string;\n}\n\n/** Defines an error handler function */\nexport type ErrorHandler = (ex: Exception) => void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/index.d.ts new file mode 100644 index 0000000..a6d4957 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/index.d.ts @@ -0,0 +1,30 @@ +export { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator'; +export { AnchoredClock } from './common/anchored-clock'; +export type { Clock } from './common/anchored-clock'; +export { isAttributeValue, sanitizeAttributes } from './common/attributes'; +export { globalErrorHandler, setGlobalErrorHandler, } from './common/global-error-handler'; +export { loggingErrorHandler } from './common/logging-error-handler'; +export { addHrTimes, getTimeOrigin, hrTime, hrTimeDuration, hrTimeToMicroseconds, hrTimeToMilliseconds, hrTimeToNanoseconds, hrTimeToTimeStamp, isTimeInput, isTimeInputHrTime, millisToHrTime, timeInputToHrTime, } from './common/time'; +export { unrefTimer } from './common/timer-util'; +export type { ErrorHandler, InstrumentationScope } from './common/types'; +export { ExportResultCode } from './ExportResult'; +export type { ExportResult } from './ExportResult'; +export { parseKeyPairsIntoRecord } from './baggage/utils'; +export { SDK_INFO, _globalThis, getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, otperformance, } from './platform'; +export { CompositePropagator } from './propagation/composite'; +export type { CompositePropagatorConfig } from './propagation/composite'; +export { TRACE_PARENT_HEADER, TRACE_STATE_HEADER, W3CTraceContextPropagator, parseTraceParent, } from './trace/W3CTraceContextPropagator'; +export { RPCType, deleteRPCMetadata, getRPCMetadata, setRPCMetadata, } from './trace/rpc-metadata'; +export type { RPCMetadata } from './trace/rpc-metadata'; +export { isTracingSuppressed, suppressTracing, unsuppressTracing, } from './trace/suppress-tracing'; +export { TraceState } from './trace/TraceState'; +export { merge } from './utils/merge'; +export { TimeoutError, callWithTimeout } from './utils/timeout'; +export { isUrlIgnored, urlMatches } from './utils/url'; +export { BindOnceFuture } from './utils/callback'; +export { diagLogLevelFromString } from './utils/configuration'; +import { _export } from './internal/exporter'; +export declare const internal: { + _export: typeof _export; +}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/index.js new file mode 100644 index 0000000..6613738 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/index.js @@ -0,0 +1,40 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator'; +export { AnchoredClock } from './common/anchored-clock'; +export { isAttributeValue, sanitizeAttributes } from './common/attributes'; +export { globalErrorHandler, setGlobalErrorHandler, } from './common/global-error-handler'; +export { loggingErrorHandler } from './common/logging-error-handler'; +export { addHrTimes, getTimeOrigin, hrTime, hrTimeDuration, hrTimeToMicroseconds, hrTimeToMilliseconds, hrTimeToNanoseconds, hrTimeToTimeStamp, isTimeInput, isTimeInputHrTime, millisToHrTime, timeInputToHrTime, } from './common/time'; +export { unrefTimer } from './common/timer-util'; +export { ExportResultCode } from './ExportResult'; +export { parseKeyPairsIntoRecord } from './baggage/utils'; +export { SDK_INFO, _globalThis, getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, otperformance, } from './platform'; +export { CompositePropagator } from './propagation/composite'; +export { TRACE_PARENT_HEADER, TRACE_STATE_HEADER, W3CTraceContextPropagator, parseTraceParent, } from './trace/W3CTraceContextPropagator'; +export { RPCType, deleteRPCMetadata, getRPCMetadata, setRPCMetadata, } from './trace/rpc-metadata'; +export { isTracingSuppressed, suppressTracing, unsuppressTracing, } from './trace/suppress-tracing'; +export { TraceState } from './trace/TraceState'; +export { merge } from './utils/merge'; +export { TimeoutError, callWithTimeout } from './utils/timeout'; +export { isUrlIgnored, urlMatches } from './utils/url'; +export { BindOnceFuture } from './utils/callback'; +export { diagLogLevelFromString } from './utils/configuration'; +import { _export } from './internal/exporter'; +export const internal = { + _export, +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/index.js.map new file mode 100644 index 0000000..4f4b69e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACL,UAAU,EACV,aAAa,EACb,MAAM,EACN,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO;CACR,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator';\nexport { AnchoredClock } from './common/anchored-clock';\nexport type { Clock } from './common/anchored-clock';\nexport { isAttributeValue, sanitizeAttributes } from './common/attributes';\nexport {\n globalErrorHandler,\n setGlobalErrorHandler,\n} from './common/global-error-handler';\nexport { loggingErrorHandler } from './common/logging-error-handler';\nexport {\n addHrTimes,\n getTimeOrigin,\n hrTime,\n hrTimeDuration,\n hrTimeToMicroseconds,\n hrTimeToMilliseconds,\n hrTimeToNanoseconds,\n hrTimeToTimeStamp,\n isTimeInput,\n isTimeInputHrTime,\n millisToHrTime,\n timeInputToHrTime,\n} from './common/time';\nexport { unrefTimer } from './common/timer-util';\nexport type { ErrorHandler, InstrumentationScope } from './common/types';\nexport { ExportResultCode } from './ExportResult';\nexport type { ExportResult } from './ExportResult';\nexport { parseKeyPairsIntoRecord } from './baggage/utils';\nexport {\n SDK_INFO,\n _globalThis,\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n otperformance,\n} from './platform';\nexport { CompositePropagator } from './propagation/composite';\nexport type { CompositePropagatorConfig } from './propagation/composite';\nexport {\n TRACE_PARENT_HEADER,\n TRACE_STATE_HEADER,\n W3CTraceContextPropagator,\n parseTraceParent,\n} from './trace/W3CTraceContextPropagator';\nexport {\n RPCType,\n deleteRPCMetadata,\n getRPCMetadata,\n setRPCMetadata,\n} from './trace/rpc-metadata';\nexport type { RPCMetadata } from './trace/rpc-metadata';\nexport {\n isTracingSuppressed,\n suppressTracing,\n unsuppressTracing,\n} from './trace/suppress-tracing';\nexport { TraceState } from './trace/TraceState';\nexport { merge } from './utils/merge';\nexport { TimeoutError, callWithTimeout } from './utils/timeout';\nexport { isUrlIgnored, urlMatches } from './utils/url';\nexport { BindOnceFuture } from './utils/callback';\nexport { diagLogLevelFromString } from './utils/configuration';\nimport { _export } from './internal/exporter';\nexport const internal = {\n _export,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/exporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/exporter.d.ts new file mode 100644 index 0000000..41253b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/exporter.d.ts @@ -0,0 +1,10 @@ +import { ExportResult } from '../ExportResult'; +export interface Exporter { + export(arg: T, resultCallback: (result: ExportResult) => void): void; +} +/** + * @internal + * Shared functionality used by Exporters while exporting data, including suppression of Traces. + */ +export declare function _export(exporter: Exporter, arg: T): Promise; +//# sourceMappingURL=exporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/exporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/exporter.js new file mode 100644 index 0000000..113301b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/exporter.js @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { context } from '@opentelemetry/api'; +import { suppressTracing } from '../trace/suppress-tracing'; +/** + * @internal + * Shared functionality used by Exporters while exporting data, including suppression of Traces. + */ +export function _export(exporter, arg) { + return new Promise(resolve => { + // prevent downstream exporter calls from generating spans + context.with(suppressTracing(context.active()), () => { + exporter.export(arg, (result) => { + resolve(result); + }); + }); + }); +} +//# sourceMappingURL=exporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/exporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/exporter.js.map new file mode 100644 index 0000000..578d45e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/exporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../../src/internal/exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAM5D;;;GAGG;AACH,MAAM,UAAU,OAAO,CACrB,QAAqB,EACrB,GAAM;IAEN,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,0DAA0D;QAC1D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE;YACnD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAoB,EAAE,EAAE;gBAC5C,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { context } from '@opentelemetry/api';\nimport { ExportResult } from '../ExportResult';\nimport { suppressTracing } from '../trace/suppress-tracing';\n\nexport interface Exporter {\n export(arg: T, resultCallback: (result: ExportResult) => void): void;\n}\n\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nexport function _export(\n exporter: Exporter,\n arg: T\n): Promise {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n context.with(suppressTracing(context.active()), () => {\n exporter.export(arg, (result: ExportResult) => {\n resolve(result);\n });\n });\n });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/validators.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/validators.d.ts new file mode 100644 index 0000000..8376f38 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/validators.d.ts @@ -0,0 +1,15 @@ +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +export declare function validateKey(key: string): boolean; +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +export declare function validateValue(value: string): boolean; +//# sourceMappingURL=validators.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/validators.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/validators.js new file mode 100644 index 0000000..050c5ff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/validators.js @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]'; +const VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`; +const VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`; +const VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`); +const VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/; +const INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/; +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +export function validateKey(key) { + return VALID_KEY_REGEX.test(key); +} +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +export function validateValue(value) { + return (VALID_VALUE_BASE_REGEX.test(value) && + !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)); +} +//# sourceMappingURL=validators.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/validators.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/validators.js.map new file mode 100644 index 0000000..fa902d7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/internal/validators.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/internal/validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAC5C,MAAM,SAAS,GAAG,QAAQ,oBAAoB,SAAS,CAAC;AACxD,MAAM,gBAAgB,GAAG,WAAW,oBAAoB,gBAAgB,oBAAoB,QAAQ,CAAC;AACrG,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,OAAO,SAAS,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC7E,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AACrD,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,CACL,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAC7C,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 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/**\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 */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\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 */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/environment.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/environment.d.ts new file mode 100644 index 0000000..e4f380b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/environment.d.ts @@ -0,0 +1,5 @@ +export declare function getStringFromEnv(_: string): string | undefined; +export declare function getBooleanFromEnv(_: string): boolean | undefined; +export declare function getNumberFromEnv(_: string): number | undefined; +export declare function getStringListFromEnv(_: string): string[] | undefined; +//# sourceMappingURL=environment.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/environment.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/environment.js new file mode 100644 index 0000000..2f4e99c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/environment.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export function getStringFromEnv(_) { + return undefined; +} +export function getBooleanFromEnv(_) { + return undefined; +} +export function getNumberFromEnv(_) { + return undefined; +} +export function getStringListFromEnv(_) { + return undefined; +} +//# sourceMappingURL=environment.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/environment.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/environment.js.map new file mode 100644 index 0000000..9cb8579 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/environment.js.map @@ -0,0 +1 @@ +{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../src/platform/browser/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAS;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport function getStringFromEnv(_: string): string | undefined {\n return undefined;\n}\n\nexport function getBooleanFromEnv(_: string): boolean | undefined {\n return undefined;\n}\n\nexport function getNumberFromEnv(_: string): number | undefined {\n return undefined;\n}\n\nexport function getStringListFromEnv(_: string): string[] | undefined {\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/index.d.ts new file mode 100644 index 0000000..f1c8268 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/index.d.ts @@ -0,0 +1,8 @@ +export { getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, } from './environment'; +export { _globalThis } from '../../common/globalThis'; +export { SDK_INFO } from './sdk-info'; +/** + * @deprecated Use performance directly. + */ +export declare const otperformance: Performance; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/index.js new file mode 100644 index 0000000..0bd1fa8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/index.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, } from './environment'; +export { _globalThis } from '../../common/globalThis'; +export { SDK_INFO } from './sdk-info'; +/** + * @deprecated Use performance directly. + */ +export const otperformance = performance; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/index.js.map new file mode 100644 index 0000000..3d10f71 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport {\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './environment';\nexport { _globalThis } from '../../common/globalThis';\nexport { SDK_INFO } from './sdk-info';\n\n/**\n * @deprecated Use performance directly.\n */\nexport const otperformance = performance;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/sdk-info.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/sdk-info.d.ts new file mode 100644 index 0000000..9245f44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/sdk-info.d.ts @@ -0,0 +1,8 @@ +/** Constants describing the SDK in use */ +export declare const SDK_INFO: { + "telemetry.sdk.name": string; + "process.runtime.name": string; + "telemetry.sdk.language": "webjs"; + "telemetry.sdk.version": string; +}; +//# sourceMappingURL=sdk-info.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/sdk-info.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/sdk-info.js new file mode 100644 index 0000000..fd8bd22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/sdk-info.js @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { VERSION } from '../../version'; +import { ATTR_TELEMETRY_SDK_NAME, ATTR_TELEMETRY_SDK_LANGUAGE, TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS, ATTR_TELEMETRY_SDK_VERSION, } from '@opentelemetry/semantic-conventions'; +import { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv'; +/** Constants describing the SDK in use */ +export const SDK_INFO = { + [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry', + [ATTR_PROCESS_RUNTIME_NAME]: 'browser', + [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS, + [ATTR_TELEMETRY_SDK_VERSION]: VERSION, +}; +//# sourceMappingURL=sdk-info.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/sdk-info.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/sdk-info.js.map new file mode 100644 index 0000000..d2d0597 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/browser/sdk-info.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk-info.js","sourceRoot":"","sources":["../../../../src/platform/browser/sdk-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,kCAAkC,EAClC,0BAA0B,GAC3B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,0CAA0C;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,CAAC,uBAAuB,CAAC,EAAE,eAAe;IAC1C,CAAC,yBAAyB,CAAC,EAAE,SAAS;IACtC,CAAC,2BAA2B,CAAC,EAAE,kCAAkC;IACjE,CAAC,0BAA0B,CAAC,EAAE,OAAO;CACtC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { VERSION } from '../../version';\nimport {\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [ATTR_PROCESS_RUNTIME_NAME]: 'browser',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS,\n [ATTR_TELEMETRY_SDK_VERSION]: VERSION,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/index.d.ts new file mode 100644 index 0000000..e8398c0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/index.d.ts @@ -0,0 +1,2 @@ +export { SDK_INFO, _globalThis, otperformance, getBooleanFromEnv, getStringFromEnv, getNumberFromEnv, getStringListFromEnv, } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/index.js new file mode 100644 index 0000000..7036ab1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { SDK_INFO, _globalThis, otperformance, getBooleanFromEnv, getStringFromEnv, getNumberFromEnv, getStringListFromEnv, } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/index.js.map new file mode 100644 index 0000000..5822b22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,QAAQ,EACR,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport {\n SDK_INFO,\n _globalThis,\n otperformance,\n getBooleanFromEnv,\n getStringFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/environment.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/environment.d.ts new file mode 100644 index 0000000..d66635c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/environment.d.ts @@ -0,0 +1,40 @@ +/** + * Retrieves a number from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number. + * - Returns a number in all other cases. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {number | undefined} - The number value or `undefined`. + */ +export declare function getNumberFromEnv(key: string): number | undefined; +/** + * Retrieves a string from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string | undefined} - The string value or `undefined`. + */ +export declare function getStringFromEnv(key: string): string | undefined; +/** + * Retrieves a boolean value from an environment variable. + * - Trims leading and trailing whitespace and ignores casing. + * - Returns `false` if the environment variable is empty, unset, or contains only whitespace. + * - Returns `false` for strings that cannot be mapped to a boolean. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace. + */ +export declare function getBooleanFromEnv(key: string): boolean; +/** + * Retrieves a list of strings from an environment variable. + * - Uses ',' as the delimiter. + * - Trims leading and trailing whitespace from each entry. + * - Excludes empty entries. + * - Returns `undefined` if the environment variable is empty or contains only whitespace. + * - Returns an empty array if all entries are empty or whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string[] | undefined} - The list of strings or `undefined`. + */ +export declare function getStringListFromEnv(key: string): string[] | undefined; +//# sourceMappingURL=environment.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/environment.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/environment.js new file mode 100644 index 0000000..ddf072d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/environment.js @@ -0,0 +1,97 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { inspect } from 'util'; +/** + * Retrieves a number from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number. + * - Returns a number in all other cases. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {number | undefined} - The number value or `undefined`. + */ +export function getNumberFromEnv(key) { + const raw = process.env[key]; + if (raw == null || raw.trim() === '') { + return undefined; + } + const value = Number(raw); + if (isNaN(value)) { + diag.warn(`Unknown value ${inspect(raw)} for ${key}, expected a number, using defaults`); + return undefined; + } + return value; +} +/** + * Retrieves a string from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string | undefined} - The string value or `undefined`. + */ +export function getStringFromEnv(key) { + const raw = process.env[key]; + if (raw == null || raw.trim() === '') { + return undefined; + } + return raw; +} +/** + * Retrieves a boolean value from an environment variable. + * - Trims leading and trailing whitespace and ignores casing. + * - Returns `false` if the environment variable is empty, unset, or contains only whitespace. + * - Returns `false` for strings that cannot be mapped to a boolean. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace. + */ +export function getBooleanFromEnv(key) { + const raw = process.env[key]?.trim().toLowerCase(); + if (raw == null || raw === '') { + // NOTE: falling back to `false` instead of `undefined` as required by the specification. + // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary + // normalizations in the consuming code. + return false; + } + if (raw === 'true') { + return true; + } + else if (raw === 'false') { + return false; + } + else { + diag.warn(`Unknown value ${inspect(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`); + return false; + } +} +/** + * Retrieves a list of strings from an environment variable. + * - Uses ',' as the delimiter. + * - Trims leading and trailing whitespace from each entry. + * - Excludes empty entries. + * - Returns `undefined` if the environment variable is empty or contains only whitespace. + * - Returns an empty array if all entries are empty or whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string[] | undefined} - The list of strings or `undefined`. + */ +export function getStringListFromEnv(key) { + return getStringFromEnv(key) + ?.split(',') + .map(v => v.trim()) + .filter(s => s !== ''); +} +//# sourceMappingURL=environment.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/environment.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/environment.js.map new file mode 100644 index 0000000..d6d6d3a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/environment.js.map @@ -0,0 +1 @@ +{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../src/platform/node/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpC,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;QAChB,IAAI,CAAC,IAAI,CACP,iBAAiB,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,qCAAqC,CAC9E,CAAC;QACF,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpC,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;QAC7B,yFAAyF;QACzF,mHAAmH;QACnH,wCAAwC;QACxC,OAAO,KAAK,CAAC;KACd;IACD,IAAI,GAAG,KAAK,MAAM,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,GAAG,KAAK,OAAO,EAAE;QAC1B,OAAO,KAAK,CAAC;KACd;SAAM;QACL,IAAI,CAAC,IAAI,CACP,iBAAiB,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,iEAAiE,CAC1G,CAAC;QACF,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,gBAAgB,CAAC,GAAG,CAAC;QAC1B,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\nimport { inspect } from 'util';\n\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 */\nexport function getNumberFromEnv(key: string): number | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n\n const value = Number(raw);\n if (isNaN(value)) {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected a number, using defaults`\n );\n return undefined;\n }\n\n return value;\n}\n\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 */\nexport function getStringFromEnv(key: string): string | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n return raw;\n}\n\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 */\nexport function getBooleanFromEnv(key: string): boolean {\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 } else if (raw === 'false') {\n return false;\n } else {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`\n );\n return false;\n }\n}\n\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 */\nexport function getStringListFromEnv(key: string): string[] | undefined {\n return getStringFromEnv(key)\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/index.d.ts new file mode 100644 index 0000000..594416c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/index.d.ts @@ -0,0 +1,11 @@ +export { getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, } from './environment'; +export { _globalThis } from '../../common/globalThis'; +export { SDK_INFO } from './sdk-info'; +/** + * @deprecated Use performance directly. + */ +export declare const otperformance: { + now(): number; + readonly timeOrigin: number; +}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/index.js new file mode 100644 index 0000000..0bd1fa8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/index.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, } from './environment'; +export { _globalThis } from '../../common/globalThis'; +export { SDK_INFO } from './sdk-info'; +/** + * @deprecated Use performance directly. + */ +export const otperformance = performance; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/index.js.map new file mode 100644 index 0000000..648bd6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GACxB,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport {\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './environment';\nexport { _globalThis } from '../../common/globalThis';\nexport { SDK_INFO } from './sdk-info';\n\n/**\n * @deprecated Use performance directly.\n */\nexport const otperformance: { now(): number; readonly timeOrigin: number } =\n performance;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/sdk-info.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/sdk-info.d.ts new file mode 100644 index 0000000..9627ce2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/sdk-info.d.ts @@ -0,0 +1,8 @@ +/** Constants describing the SDK in use */ +export declare const SDK_INFO: { + "telemetry.sdk.name": string; + "process.runtime.name": string; + "telemetry.sdk.language": "nodejs"; + "telemetry.sdk.version": string; +}; +//# sourceMappingURL=sdk-info.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/sdk-info.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/sdk-info.js new file mode 100644 index 0000000..a40daba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/sdk-info.js @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { VERSION } from '../../version'; +import { ATTR_TELEMETRY_SDK_NAME, ATTR_TELEMETRY_SDK_LANGUAGE, TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS, ATTR_TELEMETRY_SDK_VERSION, } from '@opentelemetry/semantic-conventions'; +import { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv'; +/** Constants describing the SDK in use */ +export const SDK_INFO = { + [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry', + [ATTR_PROCESS_RUNTIME_NAME]: 'node', + [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS, + [ATTR_TELEMETRY_SDK_VERSION]: VERSION, +}; +//# sourceMappingURL=sdk-info.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/sdk-info.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/sdk-info.js.map new file mode 100644 index 0000000..b2ce398 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/platform/node/sdk-info.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk-info.js","sourceRoot":"","sources":["../../../../src/platform/node/sdk-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,mCAAmC,EACnC,0BAA0B,GAC3B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,0CAA0C;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,CAAC,uBAAuB,CAAC,EAAE,eAAe;IAC1C,CAAC,yBAAyB,CAAC,EAAE,MAAM;IACnC,CAAC,2BAA2B,CAAC,EAAE,mCAAmC;IAClE,CAAC,0BAA0B,CAAC,EAAE,OAAO;CACtC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { VERSION } from '../../version';\nimport {\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [ATTR_PROCESS_RUNTIME_NAME]: 'node',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n [ATTR_TELEMETRY_SDK_VERSION]: VERSION,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/propagation/composite.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/propagation/composite.d.ts new file mode 100644 index 0000000..70eb01f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/propagation/composite.d.ts @@ -0,0 +1,43 @@ +import { Context, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api'; +/** Configuration object for composite propagator */ +export interface CompositePropagatorConfig { + /** + * List of propagators to run. Propagators run in the + * list order. If a propagator later in the list writes the same context + * key as a propagator earlier in the list, the later on will "win". + */ + propagators?: TextMapPropagator[]; +} +/** Combines multiple propagators into a single propagator. */ +export declare class CompositePropagator implements TextMapPropagator { + private readonly _propagators; + private readonly _fields; + /** + * Construct a composite propagator from a list of propagators. + * + * @param [config] Configuration object for composite propagator + */ + constructor(config?: CompositePropagatorConfig); + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same carrier key, the propagator later in the list + * will "win". + * + * @param context Context to inject + * @param carrier Carrier into which context will be injected + */ + inject(context: Context, carrier: unknown, setter: TextMapSetter): void; + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same context key, the propagator later in the list + * will "win". + * + * @param context Context to add values to + * @param carrier Carrier from which to extract context + */ + extract(context: Context, carrier: unknown, getter: TextMapGetter): Context; + fields(): string[]; +} +//# sourceMappingURL=composite.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/propagation/composite.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/propagation/composite.js new file mode 100644 index 0000000..19c8e68 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/propagation/composite.js @@ -0,0 +1,77 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag, } from '@opentelemetry/api'; +/** Combines multiple propagators into a single propagator. */ +export class CompositePropagator { + _propagators; + _fields; + /** + * Construct a composite propagator from a list of propagators. + * + * @param [config] Configuration object for composite propagator + */ + constructor(config = {}) { + this._propagators = config.propagators ?? []; + this._fields = Array.from(new Set(this._propagators + // older propagators may not have fields function, null check to be sure + .map(p => (typeof p.fields === 'function' ? p.fields() : [])) + .reduce((x, y) => x.concat(y), []))); + } + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same carrier key, the propagator later in the list + * will "win". + * + * @param context Context to inject + * @param carrier Carrier into which context will be injected + */ + inject(context, carrier, setter) { + for (const propagator of this._propagators) { + try { + propagator.inject(context, carrier, setter); + } + catch (err) { + diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`); + } + } + } + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same context key, the propagator later in the list + * will "win". + * + * @param context Context to add values to + * @param carrier Carrier from which to extract context + */ + extract(context, carrier, getter) { + return this._propagators.reduce((ctx, propagator) => { + try { + return propagator.extract(ctx, carrier, getter); + } + catch (err) { + diag.warn(`Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`); + } + return ctx; + }, context); + } + fields() { + // return a new array so our fields cannot be modified + return this._fields.slice(); + } +} +//# sourceMappingURL=composite.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/propagation/composite.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/propagation/composite.js.map new file mode 100644 index 0000000..d05e309 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/propagation/composite.js.map @@ -0,0 +1 @@ +{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../../src/propagation/composite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAIL,IAAI,GAEL,MAAM,oBAAoB,CAAC;AAY5B,8DAA8D;AAC9D,MAAM,OAAO,mBAAmB;IACb,YAAY,CAAsB;IAClC,OAAO,CAAW;IAEnC;;;;OAIG;IACH,YAAY,SAAoC,EAAE;QAChD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAE7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CACvB,IAAI,GAAG,CACL,IAAI,CAAC,YAAY;YACf,wEAAwE;aACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACrC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC9D,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;YAC1C,IAAI;gBACF,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aAC7C;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CACP,yBAAyB,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,GAAG,CAAC,OAAO,EAAE,CAC5E,CAAC;aACH;SACF;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC/D,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YAClD,IAAI;gBACF,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aACjD;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CACP,0BAA0B,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,GAAG,CAAC,OAAO,EAAE,CAC7E,CAAC;aACH;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QACJ,sDAAsD;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n TextMapGetter,\n TextMapPropagator,\n diag,\n TextMapSetter,\n} from '@opentelemetry/api';\n\n/** Configuration object for composite propagator */\nexport interface CompositePropagatorConfig {\n /**\n * List of propagators to run. Propagators run in the\n * list order. If a propagator later in the list writes the same context\n * key as a propagator earlier in the list, the later on will \"win\".\n */\n propagators?: TextMapPropagator[];\n}\n\n/** Combines multiple propagators into a single propagator. */\nexport class CompositePropagator implements TextMapPropagator {\n private readonly _propagators: TextMapPropagator[];\n private readonly _fields: string[];\n\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config: CompositePropagatorConfig = {}) {\n this._propagators = config.propagators ?? [];\n\n this._fields = Array.from(\n new Set(\n 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 }\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: Context, carrier: unknown, setter: TextMapSetter): void {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n } catch (err) {\n diag.warn(\n `Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\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: Context, carrier: unknown, getter: TextMapGetter): Context {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n } catch (err) {\n diag.warn(\n `Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\n return ctx;\n }, context);\n }\n\n fields(): string[] {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/semconv.d.ts new file mode 100644 index 0000000..5d4bf7e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/semconv.d.ts @@ -0,0 +1,9 @@ +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_NAME: "process.runtime.name"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/semconv.js new file mode 100644 index 0000000..4e73971 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/semconv.js @@ -0,0 +1,29 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/semconv.js.map new file mode 100644 index 0000000..5492a33 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/TraceState.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/TraceState.d.ts new file mode 100644 index 0000000..31b9c78 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/TraceState.d.ts @@ -0,0 +1,22 @@ +import * as api from '@opentelemetry/api'; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +export declare class TraceState implements api.TraceState { + private _internalState; + constructor(rawTraceState?: string); + set(key: string, value: string): TraceState; + unset(key: string): TraceState; + get(key: string): string | undefined; + serialize(): string; + private _parse; + private _keys; + private _clone; +} +//# sourceMappingURL=TraceState.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/TraceState.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/TraceState.js new file mode 100644 index 0000000..859e1a9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/TraceState.js @@ -0,0 +1,99 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { validateKey, validateValue } from '../internal/validators'; +const MAX_TRACE_STATE_ITEMS = 32; +const MAX_TRACE_STATE_LEN = 512; +const LIST_MEMBERS_SEPARATOR = ','; +const LIST_MEMBER_KEY_VALUE_SPLITTER = '='; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +export class TraceState { + _internalState = new Map(); + constructor(rawTraceState) { + if (rawTraceState) + this._parse(rawTraceState); + } + set(key, value) { + // TODO: Benchmark the different approaches(map vs list) and + // use the faster one. + const traceState = this._clone(); + if (traceState._internalState.has(key)) { + traceState._internalState.delete(key); + } + traceState._internalState.set(key, value); + return traceState; + } + unset(key) { + const traceState = this._clone(); + traceState._internalState.delete(key); + return traceState; + } + get(key) { + return this._internalState.get(key); + } + serialize() { + return this._keys() + .reduce((agg, key) => { + agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key)); + return agg; + }, []) + .join(LIST_MEMBERS_SEPARATOR); + } + _parse(rawTraceState) { + if (rawTraceState.length > MAX_TRACE_STATE_LEN) + return; + this._internalState = rawTraceState + .split(LIST_MEMBERS_SEPARATOR) + .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning + .reduce((agg, part) => { + const listMember = part.trim(); // Optional Whitespace (OWS) handling + const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER); + if (i !== -1) { + const key = listMember.slice(0, i); + const value = listMember.slice(i + 1, part.length); + if (validateKey(key) && validateValue(value)) { + agg.set(key, value); + } + else { + // TODO: Consider to add warning log + } + } + return agg; + }, new Map()); + // Because of the reverse() requirement, trunc must be done after map is created + if (this._internalState.size > MAX_TRACE_STATE_ITEMS) { + this._internalState = new Map(Array.from(this._internalState.entries()) + .reverse() // Use reverse same as original tracestate parse chain + .slice(0, MAX_TRACE_STATE_ITEMS)); + } + } + _keys() { + return Array.from(this._internalState.keys()).reverse(); + } + _clone() { + const traceState = new TraceState(); + traceState._internalState = new Map(this._internalState); + return traceState; + } +} +//# sourceMappingURL=TraceState.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/TraceState.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/TraceState.js.map new file mode 100644 index 0000000..797ceca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/TraceState.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TraceState.js","sourceRoot":"","sources":["../../../src/trace/TraceState.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport { validateKey, validateValue } from '../internal/validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\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 */\nexport class TraceState implements api.TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceState {\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\n unset(key: string): TraceState {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return this._keys()\n .reduce((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) 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: Map, part: string) => {\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 (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\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(\n 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 }\n\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceState {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/W3CTraceContextPropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/W3CTraceContextPropagator.d.ts new file mode 100644 index 0000000..1760e95 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/W3CTraceContextPropagator.d.ts @@ -0,0 +1,26 @@ +import { Context, SpanContext, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api'; +export declare const TRACE_PARENT_HEADER = "traceparent"; +export declare const TRACE_STATE_HEADER = "tracestate"; +/** + * Parses information from the [traceparent] span tag and converts it into {@link SpanContext} + * @param traceParent - A meta property that comes from server. + * It should be dynamically generated server side to have the server's request trace Id, + * a parent span Id that was set on the server's request span, + * and the trace flags to indicate the server's sampling decision + * (01 = sampled, 00 = not sampled). + * for example: '{version}-{traceId}-{spanId}-{sampleDecision}' + * For more information see {@link https://www.w3.org/TR/trace-context/} + */ +export declare function parseTraceParent(traceParent: string): SpanContext | null; +/** + * Propagates {@link SpanContext} through Trace Context format propagation. + * + * Based on the Trace Context specification: + * https://www.w3.org/TR/trace-context/ + */ +export declare class W3CTraceContextPropagator implements TextMapPropagator { + inject(context: Context, carrier: unknown, setter: TextMapSetter): void; + extract(context: Context, carrier: unknown, getter: TextMapGetter): Context; + fields(): string[]; +} +//# sourceMappingURL=W3CTraceContextPropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/W3CTraceContextPropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/W3CTraceContextPropagator.js new file mode 100644 index 0000000..068e38b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/W3CTraceContextPropagator.js @@ -0,0 +1,99 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { isSpanContextValid, trace, TraceFlags, } from '@opentelemetry/api'; +import { isTracingSuppressed } from './suppress-tracing'; +import { TraceState } from './TraceState'; +export const TRACE_PARENT_HEADER = 'traceparent'; +export const TRACE_STATE_HEADER = 'tracestate'; +const VERSION = '00'; +const VERSION_PART = '(?!ff)[\\da-f]{2}'; +const TRACE_ID_PART = '(?![0]{32})[\\da-f]{32}'; +const PARENT_ID_PART = '(?![0]{16})[\\da-f]{16}'; +const FLAGS_PART = '[\\da-f]{2}'; +const TRACE_PARENT_REGEX = new RegExp(`^\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\s?$`); +/** + * Parses information from the [traceparent] span tag and converts it into {@link SpanContext} + * @param traceParent - A meta property that comes from server. + * It should be dynamically generated server side to have the server's request trace Id, + * a parent span Id that was set on the server's request span, + * and the trace flags to indicate the server's sampling decision + * (01 = sampled, 00 = not sampled). + * for example: '{version}-{traceId}-{spanId}-{sampleDecision}' + * For more information see {@link https://www.w3.org/TR/trace-context/} + */ +export function parseTraceParent(traceParent) { + const match = TRACE_PARENT_REGEX.exec(traceParent); + if (!match) + return null; + // According to the specification the implementation should be compatible + // with future versions. If there are more parts, we only reject it if it's using version 00 + // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent + if (match[1] === '00' && match[5]) + return null; + return { + traceId: match[2], + spanId: match[3], + traceFlags: parseInt(match[4], 16), + }; +} +/** + * Propagates {@link SpanContext} through Trace Context format propagation. + * + * Based on the Trace Context specification: + * https://www.w3.org/TR/trace-context/ + */ +export class W3CTraceContextPropagator { + inject(context, carrier, setter) { + const spanContext = trace.getSpanContext(context); + if (!spanContext || + isTracingSuppressed(context) || + !isSpanContextValid(spanContext)) + return; + const traceParent = `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-0${Number(spanContext.traceFlags || TraceFlags.NONE).toString(16)}`; + setter.set(carrier, TRACE_PARENT_HEADER, traceParent); + if (spanContext.traceState) { + setter.set(carrier, TRACE_STATE_HEADER, spanContext.traceState.serialize()); + } + } + extract(context, carrier, getter) { + const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER); + if (!traceParentHeader) + return context; + const traceParent = Array.isArray(traceParentHeader) + ? traceParentHeader[0] + : traceParentHeader; + if (typeof traceParent !== 'string') + return context; + const spanContext = parseTraceParent(traceParent); + if (!spanContext) + return context; + spanContext.isRemote = true; + const traceStateHeader = getter.get(carrier, TRACE_STATE_HEADER); + if (traceStateHeader) { + // If more than one `tracestate` header is found, we merge them into a + // single header. + const state = Array.isArray(traceStateHeader) + ? traceStateHeader.join(',') + : traceStateHeader; + spanContext.traceState = new TraceState(typeof state === 'string' ? state : undefined); + } + return trace.setSpanContext(context, spanContext); + } + fields() { + return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER]; + } +} +//# sourceMappingURL=W3CTraceContextPropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/W3CTraceContextPropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/W3CTraceContextPropagator.js.map new file mode 100644 index 0000000..cb139be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/W3CTraceContextPropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"W3CTraceContextPropagator.js","sourceRoot":"","sources":["../../../src/trace/W3CTraceContextPropagator.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n isSpanContextValid,\n SpanContext,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n trace,\n TraceFlags,\n} from '@opentelemetry/api';\nimport { isTracingSuppressed } from './suppress-tracing';\nimport { TraceState } from './TraceState';\n\nexport const TRACE_PARENT_HEADER = 'traceparent';\nexport const TRACE_STATE_HEADER = 'tracestate';\n\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(\n `^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`\n);\n\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 */\nexport function parseTraceParent(traceParent: string): SpanContext | null {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match) return null;\n\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]) return null;\n\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\n\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 */\nexport class W3CTraceContextPropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const spanContext = trace.getSpanContext(context);\n if (\n !spanContext ||\n isTracingSuppressed(context) ||\n !isSpanContextValid(spanContext)\n )\n return;\n\n const traceParent = `${VERSION}-${spanContext.traceId}-${\n spanContext.spanId\n }-0${Number(spanContext.traceFlags || TraceFlags.NONE).toString(16)}`;\n\n setter.set(carrier, TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(\n carrier,\n TRACE_STATE_HEADER,\n spanContext.traceState.serialize()\n );\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER);\n if (!traceParentHeader) return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string') return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext) return context;\n\n spanContext.isRemote = true;\n\n const traceStateHeader = getter.get(carrier, 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(\n typeof state === 'string' ? state : undefined\n );\n }\n return trace.setSpanContext(context, spanContext);\n }\n\n fields(): string[] {\n return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/rpc-metadata.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/rpc-metadata.d.ts new file mode 100644 index 0000000..3a0808b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/rpc-metadata.d.ts @@ -0,0 +1,18 @@ +import { Context, Span } from '@opentelemetry/api'; +export declare enum RPCType { + HTTP = "http" +} +type HTTPMetadata = { + type: RPCType.HTTP; + route?: string; + span: Span; +}; +/** + * Allows for future rpc metadata to be used with this mechanism + */ +export type RPCMetadata = HTTPMetadata; +export declare function setRPCMetadata(context: Context, meta: RPCMetadata): Context; +export declare function deleteRPCMetadata(context: Context): Context; +export declare function getRPCMetadata(context: Context): RPCMetadata | undefined; +export {}; +//# sourceMappingURL=rpc-metadata.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/rpc-metadata.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/rpc-metadata.js new file mode 100644 index 0000000..01e5cb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/rpc-metadata.js @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createContextKey } from '@opentelemetry/api'; +const RPC_METADATA_KEY = createContextKey('OpenTelemetry SDK Context Key RPC_METADATA'); +export var RPCType; +(function (RPCType) { + RPCType["HTTP"] = "http"; +})(RPCType || (RPCType = {})); +export function setRPCMetadata(context, meta) { + return context.setValue(RPC_METADATA_KEY, meta); +} +export function deleteRPCMetadata(context) { + return context.deleteValue(RPC_METADATA_KEY); +} +export function getRPCMetadata(context) { + return context.getValue(RPC_METADATA_KEY); +} +//# sourceMappingURL=rpc-metadata.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/rpc-metadata.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/rpc-metadata.js.map new file mode 100644 index 0000000..96331c1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/rpc-metadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rpc-metadata.js","sourceRoot":"","sources":["../../../src/trace/rpc-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,gBAAgB,EAAQ,MAAM,oBAAoB,CAAC;AAErE,MAAM,gBAAgB,GAAG,gBAAgB,CACvC,4CAA4C,CAC7C,CAAC;AAEF,MAAM,CAAN,IAAY,OAEX;AAFD,WAAY,OAAO;IACjB,wBAAa,CAAA;AACf,CAAC,EAFW,OAAO,KAAP,OAAO,QAElB;AAaD,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,IAAiB;IAChE,OAAO,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4B,CAAC;AACvE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, createContextKey, Span } from '@opentelemetry/api';\n\nconst RPC_METADATA_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key RPC_METADATA'\n);\n\nexport enum RPCType {\n HTTP = 'http',\n}\n\ntype HTTPMetadata = {\n type: RPCType.HTTP;\n route?: string;\n span: Span;\n};\n\n/**\n * Allows for future rpc metadata to be used with this mechanism\n */\nexport type RPCMetadata = HTTPMetadata;\n\nexport function setRPCMetadata(context: Context, meta: RPCMetadata): Context {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\n\nexport function deleteRPCMetadata(context: Context): Context {\n return context.deleteValue(RPC_METADATA_KEY);\n}\n\nexport function getRPCMetadata(context: Context): RPCMetadata | undefined {\n return context.getValue(RPC_METADATA_KEY) as RPCMetadata | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/suppress-tracing.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/suppress-tracing.d.ts new file mode 100644 index 0000000..a2ac4cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/suppress-tracing.d.ts @@ -0,0 +1,5 @@ +import { Context } from '@opentelemetry/api'; +export declare function suppressTracing(context: Context): Context; +export declare function unsuppressTracing(context: Context): Context; +export declare function isTracingSuppressed(context: Context): boolean; +//# sourceMappingURL=suppress-tracing.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/suppress-tracing.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/suppress-tracing.js new file mode 100644 index 0000000..2e837b1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/suppress-tracing.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createContextKey } from '@opentelemetry/api'; +const SUPPRESS_TRACING_KEY = createContextKey('OpenTelemetry SDK Context Key SUPPRESS_TRACING'); +export function suppressTracing(context) { + return context.setValue(SUPPRESS_TRACING_KEY, true); +} +export function unsuppressTracing(context) { + return context.deleteValue(SUPPRESS_TRACING_KEY); +} +export function isTracingSuppressed(context) { + return context.getValue(SUPPRESS_TRACING_KEY) === true; +} +//# sourceMappingURL=suppress-tracing.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/suppress-tracing.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/suppress-tracing.js.map new file mode 100644 index 0000000..b842fa5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/trace/suppress-tracing.js.map @@ -0,0 +1 @@ +{"version":3,"file":"suppress-tracing.js","sourceRoot":"","sources":["../../../src/trace/suppress-tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,oBAAoB,GAAG,gBAAgB,CAC3C,gDAAgD,CACjD,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO,OAAO,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;AACzD,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, createContextKey } from '@opentelemetry/api';\n\nconst SUPPRESS_TRACING_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key SUPPRESS_TRACING'\n);\n\nexport function suppressTracing(context: Context): Context {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\n\nexport function unsuppressTracing(context: Context): Context {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\n\nexport function isTracingSuppressed(context: Context): boolean {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/callback.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/callback.d.ts new file mode 100644 index 0000000..1f030f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/callback.d.ts @@ -0,0 +1,14 @@ +/** + * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked. + */ +export declare class BindOnceFuture R = () => R> { + private _isCalled; + private _deferred; + private _callback; + private _that; + constructor(callback: T, that: This); + get isCalled(): boolean; + get promise(): Promise; + call(...args: Parameters): Promise; +} +//# sourceMappingURL=callback.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/callback.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/callback.js new file mode 100644 index 0000000..7c69a47 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/callback.js @@ -0,0 +1,48 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Deferred } from './promise'; +/** + * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked. + */ +export class BindOnceFuture { + _isCalled = false; + _deferred = new Deferred(); + _callback; + _that; + constructor(callback, that) { + this._callback = callback; + this._that = that; + } + get isCalled() { + return this._isCalled; + } + get promise() { + return this._deferred.promise; + } + call(...args) { + if (!this._isCalled) { + this._isCalled = true; + try { + Promise.resolve(this._callback.call(this._that, ...args)).then(val => this._deferred.resolve(val), err => this._deferred.reject(err)); + } + catch (err) { + this._deferred.reject(err); + } + } + return this._deferred.promise; + } +} +//# sourceMappingURL=callback.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/callback.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/callback.js.map new file mode 100644 index 0000000..2bd1794 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/callback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"callback.js","sourceRoot":"","sources":["../../../src/utils/callback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;GAEG;AACH,MAAM,OAAO,cAAc;IAKjB,SAAS,GAAG,KAAK,CAAC;IAClB,SAAS,GAAG,IAAI,QAAQ,EAAK,CAAC;IAC9B,SAAS,CAAI;IACb,KAAK,CAAO;IAEpB,YAAY,QAAW,EAAE,IAAU;QACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,GAAG,IAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI;gBACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAC5D,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAClC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAClC,CAAC;aACH;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC5B;SACF;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Deferred } from './promise';\n\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nexport class BindOnceFuture<\n R,\n This = unknown,\n T extends (this: This, ...args: unknown[]) => R = () => R,\n> {\n private _isCalled = false;\n private _deferred = new Deferred();\n private _callback: T;\n private _that: This;\n\n constructor(callback: T, that: This) {\n this._callback = callback;\n this._that = that;\n }\n\n get isCalled() {\n return this._isCalled;\n }\n\n get promise() {\n return this._deferred.promise;\n }\n\n call(...args: Parameters): Promise {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(\n val => this._deferred.resolve(val),\n err => this._deferred.reject(err)\n );\n } catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/configuration.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/configuration.d.ts new file mode 100644 index 0000000..347bdfc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/configuration.d.ts @@ -0,0 +1,7 @@ +import { DiagLogLevel } from '@opentelemetry/api'; +/** + * 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. + * @param value + */ +export declare function diagLogLevelFromString(value: string | undefined): DiagLogLevel | undefined; +//# sourceMappingURL=configuration.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/configuration.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/configuration.js new file mode 100644 index 0000000..8afb1c5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/configuration.js @@ -0,0 +1,42 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag, DiagLogLevel } from '@opentelemetry/api'; +const logLevelMap = { + ALL: DiagLogLevel.ALL, + VERBOSE: DiagLogLevel.VERBOSE, + DEBUG: DiagLogLevel.DEBUG, + INFO: DiagLogLevel.INFO, + WARN: DiagLogLevel.WARN, + ERROR: DiagLogLevel.ERROR, + NONE: DiagLogLevel.NONE, +}; +/** + * 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. + * @param value + */ +export function diagLogLevelFromString(value) { + if (value == null) { + // 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) + return undefined; + } + const resolvedLogLevel = logLevelMap[value.toUpperCase()]; + if (resolvedLogLevel == null) { + diag.warn(`Unknown log level "${value}", expected one of ${Object.keys(logLevelMap)}, using default`); + return DiagLogLevel.INFO; + } + return resolvedLogLevel; +} +//# sourceMappingURL=configuration.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/configuration.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/configuration.js.map new file mode 100644 index 0000000..4e72ef7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/configuration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../src/utils/configuration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,GAAoC;IACnD,GAAG,EAAE,YAAY,CAAC,GAAG;IACrB,OAAO,EAAE,YAAY,CAAC,OAAO;IAC7B,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,IAAI,EAAE,YAAY,CAAC,IAAI;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAyB;IAEzB,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,yIAAyI;QACzI,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAE1D,IAAI,gBAAgB,IAAI,IAAI,EAAE;QAC5B,IAAI,CAAC,IAAI,CACP,sBAAsB,KAAK,sBAAsB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAC3F,CAAC;QACF,OAAO,YAAY,CAAC,IAAI,CAAC;KAC1B;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag, DiagLogLevel } from '@opentelemetry/api';\n\nconst logLevelMap: { [key: string]: DiagLogLevel } = {\n ALL: DiagLogLevel.ALL,\n VERBOSE: DiagLogLevel.VERBOSE,\n DEBUG: DiagLogLevel.DEBUG,\n INFO: DiagLogLevel.INFO,\n WARN: DiagLogLevel.WARN,\n ERROR: DiagLogLevel.ERROR,\n NONE: DiagLogLevel.NONE,\n};\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 */\nexport function diagLogLevelFromString(\n value: string | undefined\n): DiagLogLevel | undefined {\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\n const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n\n if (resolvedLogLevel == null) {\n diag.warn(\n `Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`\n );\n return DiagLogLevel.INFO;\n }\n\n return resolvedLogLevel;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/lodash.merge.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/lodash.merge.d.ts new file mode 100644 index 0000000..aebf18b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/lodash.merge.d.ts @@ -0,0 +1,30 @@ +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +export declare function isPlainObject(value: any): boolean; +//# sourceMappingURL=lodash.merge.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/lodash.merge.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/lodash.merge.js new file mode 100644 index 0000000..b756318 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/lodash.merge.js @@ -0,0 +1,153 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/** + * based on lodash in order to support esm builds without esModuleInterop. + * lodash is using MIT License. + **/ +const objectTag = '[object Object]'; +const nullTag = '[object Null]'; +const undefinedTag = '[object Undefined]'; +const funcProto = Function.prototype; +const funcToString = funcProto.toString; +const objectCtorString = funcToString.call(Object); +const getPrototypeOf = Object.getPrototypeOf; +const objectProto = Object.prototype; +const hasOwnProperty = objectProto.hasOwnProperty; +const symToStringTag = Symbol ? Symbol.toStringTag : undefined; +const nativeObjectToString = objectProto.toString; +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +export function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) !== objectTag) { + return false; + } + const proto = getPrototypeOf(value); + if (proto === null) { + return true; + } + const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return (typeof Ctor == 'function' && + Ctor instanceof Ctor && + funcToString.call(Ctor) === objectCtorString); +} +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return symToStringTag && symToStringTag in Object(value) + ? getRawTag(value) + : objectToString(value); +} +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + const isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; + let unmasked = false; + try { + value[symToStringTag] = undefined; + unmasked = true; + } + catch { + // silence + } + const result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } + else { + delete value[symToStringTag]; + } + } + return result; +} +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} +//# sourceMappingURL=lodash.merge.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/lodash.merge.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/lodash.merge.js.map new file mode 100644 index 0000000..6b6fd0d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/lodash.merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lodash.merge.js","sourceRoot":"","sources":["../../../src/utils/lodash.merge.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\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/**\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 */\nexport function isPlainObject(value: any) {\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 (\n typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString\n );\n}\n\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: any) {\n return value != null && typeof value == 'object';\n}\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: any) {\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/**\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: any) {\n const isOwn = hasOwnProperty.call(value, symToStringTag as any),\n tag = value[symToStringTag as any];\n let unmasked = false;\n\n try {\n value[symToStringTag as any] = undefined;\n unmasked = true;\n } catch {\n // silence\n }\n\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag as any] = tag;\n } else {\n delete value[symToStringTag as any];\n }\n }\n return result;\n}\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: any) {\n return nativeObjectToString.call(value);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/merge.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/merge.d.ts new file mode 100644 index 0000000..fda0f9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/merge.d.ts @@ -0,0 +1,6 @@ +/** + * Merges objects together + * @param args - objects / values to be merged + */ +export declare function merge(...args: any[]): any; +//# sourceMappingURL=merge.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/merge.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/merge.js new file mode 100644 index 0000000..097130b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/merge.js @@ -0,0 +1,158 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { isPlainObject } from './lodash.merge'; +const MAX_LEVEL = 20; +/** + * Merges objects together + * @param args - objects / values to be merged + */ +export function merge(...args) { + let result = args.shift(); + const objects = new WeakMap(); + while (args.length > 0) { + result = mergeTwoObjects(result, args.shift(), 0, objects); + } + return result; +} +function takeValue(value) { + if (isArray(value)) { + return value.slice(); + } + return value; +} +/** + * Merges two objects + * @param one - first object + * @param two - second object + * @param level - current deep level + * @param objects - objects holder that has been already referenced - to prevent + * cyclic dependency + */ +function mergeTwoObjects(one, two, level = 0, objects) { + let result; + if (level > MAX_LEVEL) { + return undefined; + } + level++; + if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) { + result = takeValue(two); + } + else if (isArray(one)) { + result = one.slice(); + if (isArray(two)) { + for (let i = 0, j = two.length; i < j; i++) { + result.push(takeValue(two[i])); + } + } + else if (isObject(two)) { + const keys = Object.keys(two); + for (let i = 0, j = keys.length; i < j; i++) { + const key = keys[i]; + result[key] = takeValue(two[key]); + } + } + } + else if (isObject(one)) { + if (isObject(two)) { + if (!shouldMerge(one, two)) { + return two; + } + result = Object.assign({}, one); + const keys = Object.keys(two); + for (let i = 0, j = keys.length; i < j; i++) { + const key = keys[i]; + const twoValue = two[key]; + if (isPrimitive(twoValue)) { + if (typeof twoValue === 'undefined') { + delete result[key]; + } + else { + // result[key] = takeValue(twoValue); + result[key] = twoValue; + } + } + else { + const obj1 = result[key]; + const obj2 = twoValue; + if (wasObjectReferenced(one, key, objects) || + wasObjectReferenced(two, key, objects)) { + delete result[key]; + } + else { + if (isObject(obj1) && isObject(obj2)) { + const arr1 = objects.get(obj1) || []; + const arr2 = objects.get(obj2) || []; + arr1.push({ obj: one, key }); + arr2.push({ obj: two, key }); + objects.set(obj1, arr1); + objects.set(obj2, arr2); + } + result[key] = mergeTwoObjects(result[key], twoValue, level, objects); + } + } + } + } + else { + result = two; + } + } + return result; +} +/** + * Function to check if object has been already reference + * @param obj + * @param key + * @param objects + */ +function wasObjectReferenced(obj, key, objects) { + const arr = objects.get(obj[key]) || []; + for (let i = 0, j = arr.length; i < j; i++) { + const info = arr[i]; + if (info.key === key && info.obj === obj) { + return true; + } + } + return false; +} +function isArray(value) { + return Array.isArray(value); +} +function isFunction(value) { + return typeof value === 'function'; +} +function isObject(value) { + return (!isPrimitive(value) && + !isArray(value) && + !isFunction(value) && + typeof value === 'object'); +} +function isPrimitive(value) { + return (typeof value === 'string' || + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' || + value instanceof Date || + value instanceof RegExp || + value === null); +} +function shouldMerge(one, two) { + if (!isPlainObject(one) || !isPlainObject(two)) { + return false; + } + return true; +} +//# sourceMappingURL=merge.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/merge.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/merge.js.map new file mode 100644 index 0000000..118bf41 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/utils/merge.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { isPlainObject } from './lodash.merge';\n\nconst MAX_LEVEL = 20;\n\ninterface ObjectInto {\n obj: any;\n key: string;\n}\n\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nexport function merge(...args: any[]): any {\n let result: any = args.shift();\n const objects: WeakMap | undefined = new WeakMap<\n any,\n ObjectInto[]\n >();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n\n return result;\n}\n\nfunction takeValue(value: any): any {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\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(\n one: any,\n two: any,\n level = 0,\n objects: WeakMap\n): any {\n let result: any;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\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 } 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 } 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\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n } else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n } else {\n const obj1 = result[key];\n const obj2 = twoValue;\n\n if (\n wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)\n ) {\n delete result[key];\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\n result[key] = mergeTwoObjects(\n result[key],\n twoValue,\n level,\n objects\n );\n }\n }\n }\n } else {\n result = two;\n }\n }\n\n return result;\n}\n\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(\n obj: any,\n key: string,\n objects: WeakMap\n): boolean {\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}\n\nfunction isArray(value: any): boolean {\n return Array.isArray(value);\n}\n\nfunction isFunction(value: any): boolean {\n return typeof value === 'function';\n}\n\nfunction isObject(value: any): boolean {\n return (\n !isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object'\n );\n}\n\nfunction isPrimitive(value: any): boolean {\n return (\n 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 );\n}\n\nfunction shouldMerge(one: any, two: any): boolean {\n if (!isPlainObject(one) || !isPlainObject(two)) {\n return false;\n }\n\n return true;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/promise.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/promise.d.ts new file mode 100644 index 0000000..eb22322 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/promise.d.ts @@ -0,0 +1,10 @@ +export declare class Deferred { + private _promise; + private _resolve; + private _reject; + constructor(); + get promise(): Promise; + resolve(val: T): void; + reject(err: unknown): void; +} +//# sourceMappingURL=promise.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/promise.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/promise.js new file mode 100644 index 0000000..d5eeefb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/promise.js @@ -0,0 +1,36 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class Deferred { + _promise; + _resolve; + _reject; + constructor() { + this._promise = new Promise((resolve, reject) => { + this._resolve = resolve; + this._reject = reject; + }); + } + get promise() { + return this._promise; + } + resolve(val) { + this._resolve(val); + } + reject(err) { + this._reject(err); + } +} +//# sourceMappingURL=promise.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/promise.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/promise.js.map new file mode 100644 index 0000000..be99512 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/promise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/utils/promise.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,OAAO,QAAQ;IACX,QAAQ,CAAa;IACrB,QAAQ,CAAoB;IAC5B,OAAO,CAA4B;IAC3C;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,GAAM;QACZ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,GAAY;QACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport class Deferred {\n private _promise: Promise;\n private _resolve!: (val: T) => void;\n private _reject!: (error: unknown) => void;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n get promise() {\n return this._promise;\n }\n\n resolve(val: T) {\n this._resolve(val);\n }\n\n reject(err: unknown) {\n this._reject(err);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/timeout.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/timeout.d.ts new file mode 100644 index 0000000..6095293 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/timeout.d.ts @@ -0,0 +1,17 @@ +/** + * Error that is thrown on timeouts. + */ +export declare class TimeoutError extends Error { + constructor(message?: string); +} +/** + * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise + * rejects, and resolves if the specified promise resolves. + * + *

                          NOTE: this operation will continue even after it throws a {@link TimeoutError}. + * + * @param promise promise to use with timeout. + * @param timeout the timeout in milliseconds until the returned promise is rejected. + */ +export declare function callWithTimeout(promise: Promise, timeout: number): Promise; +//# sourceMappingURL=timeout.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/timeout.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/timeout.js new file mode 100644 index 0000000..3f0ce0c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/timeout.js @@ -0,0 +1,51 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Error that is thrown on timeouts. + */ +export class TimeoutError extends Error { + constructor(message) { + super(message); + // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see: + // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work + Object.setPrototypeOf(this, TimeoutError.prototype); + } +} +/** + * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise + * rejects, and resolves if the specified promise resolves. + * + *

                          NOTE: this operation will continue even after it throws a {@link TimeoutError}. + * + * @param promise promise to use with timeout. + * @param timeout the timeout in milliseconds until the returned promise is rejected. + */ +export function callWithTimeout(promise, timeout) { + let timeoutHandle; + const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) { + timeoutHandle = setTimeout(function timeoutHandler() { + reject(new TimeoutError('Operation timed out.')); + }, timeout); + }); + return Promise.race([promise, timeoutPromise]).then(result => { + clearTimeout(timeoutHandle); + return result; + }, reason => { + clearTimeout(timeoutHandle); + throw reason; + }); +} +//# sourceMappingURL=timeout.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/timeout.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/timeout.js.map new file mode 100644 index 0000000..7e7a3ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/timeout.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../../src/utils/timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,0FAA0F;QAC1F,6IAA6I;QAC7I,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAmB,EACnB,OAAe;IAEf,IAAI,aAA4C,CAAC;IAEjD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,SAAS,eAAe,CAChE,QAAQ,EACR,MAAM;QAEN,aAAa,GAAG,UAAU,CAAC,SAAS,cAAc;YAChD,MAAM,CAAC,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACnD,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,EAAE;QACP,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,MAAM,CAAC,EAAE;QACP,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM,MAAM,CAAC;IACf,CAAC,CACF,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Error that is thrown on timeouts.\n */\nexport class TimeoutError extends Error {\n constructor(message?: string) {\n super(message);\n\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}\n\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 */\nexport function callWithTimeout(\n promise: Promise,\n timeout: number\n): Promise {\n let timeoutHandle: ReturnType;\n\n const timeoutPromise = new Promise(function timeoutFunction(\n _resolve,\n reject\n ) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).then(\n result => {\n clearTimeout(timeoutHandle);\n return result;\n },\n reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n }\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/url.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/url.d.ts new file mode 100644 index 0000000..a87f381 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/url.d.ts @@ -0,0 +1,8 @@ +export declare function urlMatches(url: string, urlToMatch: string | RegExp): boolean; +/** + * Check if {@param url} should be ignored when comparing against {@param ignoredUrls} + * @param url + * @param ignoredUrls + */ +export declare function isUrlIgnored(url: string, ignoredUrls?: Array): boolean; +//# sourceMappingURL=url.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/url.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/url.js new file mode 100644 index 0000000..6c60720 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/url.js @@ -0,0 +1,40 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export function urlMatches(url, urlToMatch) { + if (typeof urlToMatch === 'string') { + return url === urlToMatch; + } + else { + return !!url.match(urlToMatch); + } +} +/** + * Check if {@param url} should be ignored when comparing against {@param ignoredUrls} + * @param url + * @param ignoredUrls + */ +export function isUrlIgnored(url, ignoredUrls) { + if (!ignoredUrls) { + return false; + } + for (const ignoreUrl of ignoredUrls) { + if (urlMatches(url, ignoreUrl)) { + return true; + } + } + return false; +} +//# sourceMappingURL=url.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/url.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/url.js.map new file mode 100644 index 0000000..b5cf3eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/utils/url.js.map @@ -0,0 +1 @@ +{"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,UAA2B;IACjE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,OAAO,GAAG,KAAK,UAAU,CAAC;KAC3B;SAAM;QACL,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KAChC;AACH,CAAC;AACD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAW,EACX,WAAoC;IAEpC,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,KAAK,CAAC;KACd;IAED,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;QACnC,IAAI,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function urlMatches(url: string, urlToMatch: string | RegExp): boolean {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n } else {\n return !!url.match(urlToMatch);\n }\n}\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nexport function isUrlIgnored(\n url: string,\n ignoredUrls?: Array\n): boolean {\n if (!ignoredUrls) {\n return false;\n }\n\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/version.d.ts new file mode 100644 index 0000000..4539690 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "2.5.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/version.js new file mode 100644 index 0000000..fabcf00 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '2.5.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/version.js.map new file mode 100644 index 0000000..277b52a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/esnext/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.5.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/ExportResult.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/ExportResult.d.ts new file mode 100644 index 0000000..570361b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/ExportResult.d.ts @@ -0,0 +1,9 @@ +export interface ExportResult { + code: ExportResultCode; + error?: Error; +} +export declare enum ExportResultCode { + SUCCESS = 0, + FAILED = 1 +} +//# sourceMappingURL=ExportResult.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/ExportResult.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/ExportResult.js new file mode 100644 index 0000000..724d006 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/ExportResult.js @@ -0,0 +1,24 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ExportResultCode = void 0; +var ExportResultCode; +(function (ExportResultCode) { + ExportResultCode[ExportResultCode["SUCCESS"] = 0] = "SUCCESS"; + ExportResultCode[ExportResultCode["FAILED"] = 1] = "FAILED"; +})(ExportResultCode = exports.ExportResultCode || (exports.ExportResultCode = {})); +//# sourceMappingURL=ExportResult.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/ExportResult.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/ExportResult.js.map new file mode 100644 index 0000000..369c256 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/ExportResult.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ExportResult.js","sourceRoot":"","sources":["../../src/ExportResult.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAOH,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,6DAAO,CAAA;IACP,2DAAM,CAAA;AACR,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface ExportResult {\n code: ExportResultCode;\n error?: Error;\n}\n\nexport enum ExportResultCode {\n SUCCESS,\n FAILED,\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/constants.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/constants.d.ts new file mode 100644 index 0000000..72470ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/constants.d.ts @@ -0,0 +1,8 @@ +export declare const BAGGAGE_KEY_PAIR_SEPARATOR = "="; +export declare const BAGGAGE_PROPERTIES_SEPARATOR = ";"; +export declare const BAGGAGE_ITEMS_SEPARATOR = ","; +export declare const BAGGAGE_HEADER = "baggage"; +export declare const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180; +export declare const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096; +export declare const BAGGAGE_MAX_TOTAL_LENGTH = 8192; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/constants.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/constants.js new file mode 100644 index 0000000..88dcfce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/constants.js @@ -0,0 +1,30 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +exports.BAGGAGE_KEY_PAIR_SEPARATOR = '='; +exports.BAGGAGE_PROPERTIES_SEPARATOR = ';'; +exports.BAGGAGE_ITEMS_SEPARATOR = ','; +// Name of the http header used to propagate the baggage +exports.BAGGAGE_HEADER = 'baggage'; +// Maximum number of name-value pairs allowed by w3c spec +exports.BAGGAGE_MAX_NAME_VALUE_PAIRS = 180; +// Maximum number of bytes per a single name-value pair allowed by w3c spec +exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096; +// Maximum total length of all name-value pairs allowed by w3c spec +exports.BAGGAGE_MAX_TOTAL_LENGTH = 8192; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/constants.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/constants.js.map new file mode 100644 index 0000000..130cc5d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/baggage/constants.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEU,QAAA,0BAA0B,GAAG,GAAG,CAAC;AACjC,QAAA,4BAA4B,GAAG,GAAG,CAAC;AACnC,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAE3C,wDAAwD;AAC3C,QAAA,cAAc,GAAG,SAAS,CAAC;AACxC,yDAAyD;AAC5C,QAAA,4BAA4B,GAAG,GAAG,CAAC;AAChD,2EAA2E;AAC9D,QAAA,gCAAgC,GAAG,IAAI,CAAC;AACrD,mEAAmE;AACtD,QAAA,wBAAwB,GAAG,IAAI,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport const BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexport const BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexport const BAGGAGE_ITEMS_SEPARATOR = ',';\n\n// Name of the http header used to propagate the baggage\nexport const BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexport const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.d.ts new file mode 100644 index 0000000..d946bb1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.d.ts @@ -0,0 +1,13 @@ +import { Context, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api'; +/** + * Propagates {@link Baggage} through Context format propagation. + * + * Based on the Baggage specification: + * https://w3c.github.io/baggage/ + */ +export declare class W3CBaggagePropagator implements TextMapPropagator { + inject(context: Context, carrier: unknown, setter: TextMapSetter): void; + extract(context: Context, carrier: unknown, getter: TextMapGetter): Context; + fields(): string[]; +} +//# sourceMappingURL=W3CBaggagePropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js new file mode 100644 index 0000000..d295950 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js @@ -0,0 +1,76 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.W3CBaggagePropagator = void 0; +const api_1 = require("@opentelemetry/api"); +const suppress_tracing_1 = require("../../trace/suppress-tracing"); +const constants_1 = require("../constants"); +const utils_1 = require("../utils"); +/** + * Propagates {@link Baggage} through Context format propagation. + * + * Based on the Baggage specification: + * https://w3c.github.io/baggage/ + */ +class W3CBaggagePropagator { + inject(context, carrier, setter) { + const baggage = api_1.propagation.getBaggage(context); + if (!baggage || (0, suppress_tracing_1.isTracingSuppressed)(context)) + return; + const keyPairs = (0, utils_1.getKeyPairs)(baggage) + .filter((pair) => { + return pair.length <= constants_1.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS; + }) + .slice(0, constants_1.BAGGAGE_MAX_NAME_VALUE_PAIRS); + const headerValue = (0, utils_1.serializeKeyPairs)(keyPairs); + if (headerValue.length > 0) { + setter.set(carrier, constants_1.BAGGAGE_HEADER, headerValue); + } + } + extract(context, carrier, getter) { + const headerValue = getter.get(carrier, constants_1.BAGGAGE_HEADER); + const baggageString = Array.isArray(headerValue) + ? headerValue.join(constants_1.BAGGAGE_ITEMS_SEPARATOR) + : headerValue; + if (!baggageString) + return context; + const baggage = {}; + if (baggageString.length === 0) { + return context; + } + const pairs = baggageString.split(constants_1.BAGGAGE_ITEMS_SEPARATOR); + pairs.forEach(entry => { + const keyPair = (0, utils_1.parsePairKeyValue)(entry); + if (keyPair) { + const baggageEntry = { value: keyPair.value }; + if (keyPair.metadata) { + baggageEntry.metadata = keyPair.metadata; + } + baggage[keyPair.key] = baggageEntry; + } + }); + if (Object.entries(baggage).length === 0) { + return context; + } + return api_1.propagation.setBaggage(context, api_1.propagation.createBaggage(baggage)); + } + fields() { + return [constants_1.BAGGAGE_HEADER]; + } +} +exports.W3CBaggagePropagator = W3CBaggagePropagator; +//# sourceMappingURL=W3CBaggagePropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js.map new file mode 100644 index 0000000..3db18a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"W3CBaggagePropagator.js","sourceRoot":"","sources":["../../../../src/baggage/propagation/W3CBaggagePropagator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAO4B;AAE5B,mEAAmE;AACnE,4CAKsB;AACtB,oCAA6E;AAE7E;;;;;GAKG;AACH,MAAa,oBAAoB;IAC/B,MAAM,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC9D,MAAM,OAAO,GAAG,iBAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,IAAI,IAAA,sCAAmB,EAAC,OAAO,CAAC;YAAE,OAAO;QACrD,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC;aAClC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;YACvB,OAAO,IAAI,CAAC,MAAM,IAAI,4CAAgC,CAAC;QACzD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,EAAE,wCAA4B,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAA,yBAAiB,EAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,0BAAc,EAAE,WAAW,CAAC,CAAC;SAClD;IACH,CAAC;IAED,OAAO,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,0BAAc,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,mCAAuB,CAAC;YAC3C,CAAC,CAAC,WAAW,CAAC;QAChB,IAAI,CAAC,aAAa;YAAE,OAAO,OAAO,CAAC;QACnC,MAAM,OAAO,GAAiC,EAAE,CAAC;QACjD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,OAAO,OAAO,CAAC;SAChB;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,mCAAuB,CAAC,CAAC;QAC3D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpB,MAAM,OAAO,GAAG,IAAA,yBAAiB,EAAC,KAAK,CAAC,CAAC;YACzC,IAAI,OAAO,EAAE;gBACX,MAAM,YAAY,GAAiB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC5D,IAAI,OAAO,CAAC,QAAQ,EAAE;oBACpB,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;iBAC1C;gBACD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,iBAAW,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,0BAAc,CAAC,CAAC;IAC1B,CAAC;CACF;AA7CD,oDA6CC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n BaggageEntry,\n Context,\n propagation,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\n\nimport { isTracingSuppressed } from '../../trace/suppress-tracing';\nimport {\n BAGGAGE_HEADER,\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_MAX_NAME_VALUE_PAIRS,\n BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,\n} from '../constants';\nimport { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from '../utils';\n\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nexport class W3CBaggagePropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const baggage = propagation.getBaggage(context);\n if (!baggage || isTracingSuppressed(context)) return;\n const keyPairs = getKeyPairs(baggage)\n .filter((pair: string) => {\n return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = serializeKeyPairs(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, BAGGAGE_HEADER, headerValue);\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const headerValue = getter.get(carrier, BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString) return context;\n const baggage: Record = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair) {\n const baggageEntry: 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 propagation.setBaggage(context, propagation.createBaggage(baggage));\n }\n\n fields(): string[] {\n return [BAGGAGE_HEADER];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/utils.d.ts new file mode 100644 index 0000000..f6fe906 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/utils.d.ts @@ -0,0 +1,16 @@ +import { Baggage, BaggageEntryMetadata } from '@opentelemetry/api'; +type ParsedBaggageKeyValue = { + key: string; + value: string; + metadata: BaggageEntryMetadata | undefined; +}; +export declare function serializeKeyPairs(keyPairs: string[]): string; +export declare function getKeyPairs(baggage: Baggage): string[]; +export declare function parsePairKeyValue(entry: string): ParsedBaggageKeyValue | undefined; +/** + * Parse a string serialized in the baggage HTTP Format (without metadata): + * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md + */ +export declare function parseKeyPairsIntoRecord(value?: string): Record; +export {}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/utils.js new file mode 100644 index 0000000..18f1b7d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/utils.js @@ -0,0 +1,89 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parseKeyPairsIntoRecord = exports.parsePairKeyValue = exports.getKeyPairs = exports.serializeKeyPairs = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const api_1 = require("@opentelemetry/api"); +const constants_1 = require("./constants"); +function serializeKeyPairs(keyPairs) { + return keyPairs.reduce((hValue, current) => { + const value = `${hValue}${hValue !== '' ? constants_1.BAGGAGE_ITEMS_SEPARATOR : ''}${current}`; + return value.length > constants_1.BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value; + }, ''); +} +exports.serializeKeyPairs = serializeKeyPairs; +function getKeyPairs(baggage) { + return baggage.getAllEntries().map(([key, value]) => { + let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`; + // include opaque metadata if provided + // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation + if (value.metadata !== undefined) { + entry += constants_1.BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString(); + } + return entry; + }); +} +exports.getKeyPairs = getKeyPairs; +function parsePairKeyValue(entry) { + if (!entry) + return; + const metadataSeparatorIndex = entry.indexOf(constants_1.BAGGAGE_PROPERTIES_SEPARATOR); + const keyPairPart = metadataSeparatorIndex === -1 + ? entry + : entry.substring(0, metadataSeparatorIndex); + const separatorIndex = keyPairPart.indexOf(constants_1.BAGGAGE_KEY_PAIR_SEPARATOR); + if (separatorIndex <= 0) + return; + const rawKey = keyPairPart.substring(0, separatorIndex).trim(); + const rawValue = keyPairPart.substring(separatorIndex + 1).trim(); + if (!rawKey || !rawValue) + return; + let key; + let value; + try { + key = decodeURIComponent(rawKey); + value = decodeURIComponent(rawValue); + } + catch { + return; + } + let metadata; + if (metadataSeparatorIndex !== -1 && + metadataSeparatorIndex < entry.length - 1) { + const metadataString = entry.substring(metadataSeparatorIndex + 1); + metadata = (0, api_1.baggageEntryMetadataFromString)(metadataString); + } + return { key, value, metadata }; +} +exports.parsePairKeyValue = parsePairKeyValue; +/** + * Parse a string serialized in the baggage HTTP Format (without metadata): + * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md + */ +function parseKeyPairsIntoRecord(value) { + const result = {}; + if (typeof value === 'string' && value.length > 0) { + value.split(constants_1.BAGGAGE_ITEMS_SEPARATOR).forEach(entry => { + const keyPair = parsePairKeyValue(entry); + if (keyPair !== undefined && keyPair.value.length > 0) { + result[keyPair.key] = keyPair.value; + } + }); + } + return result; +} +exports.parseKeyPairsIntoRecord = parseKeyPairsIntoRecord; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/utils.js.map new file mode 100644 index 0000000..e425bd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/baggage/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/baggage/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Baggage,\n BaggageEntryMetadata,\n baggageEntryMetadataFromString,\n} from '@opentelemetry/api';\nimport {\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_PROPERTIES_SEPARATOR,\n BAGGAGE_KEY_PAIR_SEPARATOR,\n BAGGAGE_MAX_TOTAL_LENGTH,\n} from './constants';\n\ntype ParsedBaggageKeyValue = {\n key: string;\n value: string;\n metadata: BaggageEntryMetadata | undefined;\n};\n\nexport function serializeKeyPairs(keyPairs: string[]): string {\n return keyPairs.reduce((hValue: string, current: string) => {\n const value = `${hValue}${\n hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''\n }${current}`;\n return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\n\nexport function getKeyPairs(baggage: Baggage): string[] {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n\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 += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n\n return entry;\n });\n}\n\nexport function parsePairKeyValue(\n entry: string\n): ParsedBaggageKeyValue | undefined {\n if (!entry) return;\n const metadataSeparatorIndex = entry.indexOf(BAGGAGE_PROPERTIES_SEPARATOR);\n const keyPairPart =\n metadataSeparatorIndex === -1\n ? entry\n : entry.substring(0, metadataSeparatorIndex);\n\n const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0) return;\n\n const rawKey = keyPairPart.substring(0, separatorIndex).trim();\n const rawValue = keyPairPart.substring(separatorIndex + 1).trim();\n\n if (!rawKey || !rawValue) return;\n let key: string;\n let value: string;\n try {\n key = decodeURIComponent(rawKey);\n value = decodeURIComponent(rawValue);\n } catch {\n return;\n }\n\n let metadata;\n if (\n metadataSeparatorIndex !== -1 &&\n metadataSeparatorIndex < entry.length - 1\n ) {\n const metadataString = entry.substring(metadataSeparatorIndex + 1);\n metadata = baggageEntryMetadataFromString(metadataString);\n }\n\n return { key, value, metadata };\n}\n\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 */\nexport function parseKeyPairsIntoRecord(\n value?: string\n): Record {\n const result: Record = {};\n\n if (typeof value === 'string' && value.length > 0) {\n value.split(BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n\n return result;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/anchored-clock.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/anchored-clock.d.ts new file mode 100644 index 0000000..87bddee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/anchored-clock.d.ts @@ -0,0 +1,41 @@ +export interface Clock { + /** + * Return the current time in milliseconds from some epoch such as the Unix epoch or process start + */ + now(): number; +} +/** + * A utility for returning wall times anchored to a given point in time. Wall time measurements will + * not be taken from the system, but instead are computed by adding a monotonic clock time + * to the anchor point. + * + * This is needed because the system time can change and result in unexpected situations like + * spans ending before they are started. Creating an anchored clock for each local root span + * ensures that span timings and durations are accurate while preventing span times from drifting + * too far from the system clock. + * + * Only creating an anchored clock once per local trace ensures span times are correct relative + * to each other. For example, a child span will never have a start time before its parent even + * if the system clock is corrected during the local trace. + * + * Heavily inspired by the OTel Java anchored clock + * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java + */ +export declare class AnchoredClock implements Clock { + private _monotonicClock; + private _epochMillis; + private _performanceMillis; + /** + * Create a new AnchoredClock anchored to the current time returned by systemClock. + * + * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date + * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance + */ + constructor(systemClock: Clock, monotonicClock: Clock); + /** + * Returns the current time by adding the number of milliseconds since the + * AnchoredClock was created to the creation epoch time + */ + now(): number; +} +//# sourceMappingURL=anchored-clock.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/anchored-clock.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/anchored-clock.js new file mode 100644 index 0000000..e4ae16c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/anchored-clock.js @@ -0,0 +1,61 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AnchoredClock = void 0; +/** + * A utility for returning wall times anchored to a given point in time. Wall time measurements will + * not be taken from the system, but instead are computed by adding a monotonic clock time + * to the anchor point. + * + * This is needed because the system time can change and result in unexpected situations like + * spans ending before they are started. Creating an anchored clock for each local root span + * ensures that span timings and durations are accurate while preventing span times from drifting + * too far from the system clock. + * + * Only creating an anchored clock once per local trace ensures span times are correct relative + * to each other. For example, a child span will never have a start time before its parent even + * if the system clock is corrected during the local trace. + * + * Heavily inspired by the OTel Java anchored clock + * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java + */ +class AnchoredClock { + _monotonicClock; + _epochMillis; + _performanceMillis; + /** + * Create a new AnchoredClock anchored to the current time returned by systemClock. + * + * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date + * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance + */ + constructor(systemClock, monotonicClock) { + this._monotonicClock = monotonicClock; + this._epochMillis = systemClock.now(); + this._performanceMillis = monotonicClock.now(); + } + /** + * Returns the current time by adding the number of milliseconds since the + * AnchoredClock was created to the creation epoch time + */ + now() { + const delta = this._monotonicClock.now() - this._performanceMillis; + return this._epochMillis + delta; + } +} +exports.AnchoredClock = AnchoredClock; +//# sourceMappingURL=anchored-clock.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/anchored-clock.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/anchored-clock.js.map new file mode 100644 index 0000000..0acd40f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/anchored-clock.js.map @@ -0,0 +1 @@ +{"version":3,"file":"anchored-clock.js","sourceRoot":"","sources":["../../../src/common/anchored-clock.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AASH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,aAAa;IAChB,eAAe,CAAQ;IACvB,YAAY,CAAS;IACrB,kBAAkB,CAAS;IAEnC;;;;;OAKG;IACH,YAAmB,WAAkB,EAAE,cAAqB;QAC1D,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACI,GAAG;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnE,OAAO,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IACnC,CAAC;CACF;AAzBD,sCAyBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport interface Clock {\n /**\n * Return the current time in milliseconds from some epoch such as the Unix epoch or process start\n */\n now(): number;\n}\n\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 */\nexport class AnchoredClock implements Clock {\n private _monotonicClock: Clock;\n private _epochMillis: number;\n private _performanceMillis: number;\n\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 public constructor(systemClock: Clock, monotonicClock: Clock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\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 public now(): number {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/attributes.d.ts new file mode 100644 index 0000000..3d9fe32 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/attributes.d.ts @@ -0,0 +1,5 @@ +import { AttributeValue, Attributes } from '@opentelemetry/api'; +export declare function sanitizeAttributes(attributes: unknown): Attributes; +export declare function isAttributeKey(key: unknown): key is string; +export declare function isAttributeValue(val: unknown): val is AttributeValue; +//# sourceMappingURL=attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/attributes.js new file mode 100644 index 0000000..8f7bbff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/attributes.js @@ -0,0 +1,93 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isAttributeValue = exports.isAttributeKey = exports.sanitizeAttributes = void 0; +const api_1 = require("@opentelemetry/api"); +function sanitizeAttributes(attributes) { + const out = {}; + if (typeof attributes !== 'object' || attributes == null) { + return out; + } + for (const key in attributes) { + if (!Object.prototype.hasOwnProperty.call(attributes, key)) { + continue; + } + if (!isAttributeKey(key)) { + api_1.diag.warn(`Invalid attribute key: ${key}`); + continue; + } + const val = attributes[key]; + if (!isAttributeValue(val)) { + api_1.diag.warn(`Invalid attribute value set for key: ${key}`); + continue; + } + if (Array.isArray(val)) { + out[key] = val.slice(); + } + else { + out[key] = val; + } + } + return out; +} +exports.sanitizeAttributes = sanitizeAttributes; +function isAttributeKey(key) { + return typeof key === 'string' && key !== ''; +} +exports.isAttributeKey = isAttributeKey; +function isAttributeValue(val) { + if (val == null) { + return true; + } + if (Array.isArray(val)) { + return isHomogeneousAttributeValueArray(val); + } + return isValidPrimitiveAttributeValueType(typeof val); +} +exports.isAttributeValue = isAttributeValue; +function isHomogeneousAttributeValueArray(arr) { + let type; + for (const element of arr) { + // null/undefined elements are allowed + if (element == null) + continue; + const elementType = typeof element; + if (elementType === type) { + continue; + } + if (!type) { + if (isValidPrimitiveAttributeValueType(elementType)) { + type = elementType; + continue; + } + // encountered an invalid primitive + return false; + } + return false; + } + return true; +} +function isValidPrimitiveAttributeValueType(valType) { + switch (valType) { + case 'number': + case 'boolean': + case 'string': + return true; + } + return false; +} +//# sourceMappingURL=attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/attributes.js.map new file mode 100644 index 0000000..1a5f944 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/common/attributes.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAsE;AAEtE,SAAgB,kBAAkB,CAAC,UAAmB;IACpD,MAAM,GAAG,GAAe,EAAE,CAAC;IAE3B,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,IAAI,IAAI,EAAE;QACxD,OAAO,GAAG,CAAC;KACZ;IAED,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;YAC1D,SAAS;SACV;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACxB,UAAI,CAAC,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;YAC3C,SAAS;SACV;QACD,MAAM,GAAG,GAAI,UAAsC,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;YAC1B,UAAI,CAAC,IAAI,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAC;YACzD,SAAS;SACV;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;SACxB;aAAM;YACL,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;SAChB;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AA5BD,gDA4BC;AAED,SAAgB,cAAc,CAAC,GAAY;IACzC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,CAAC;AAC/C,CAAC;AAFD,wCAEC;AAED,SAAgB,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,IAAI,IAAI,EAAE;QACf,OAAO,IAAI,CAAC;KACb;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,gCAAgC,CAAC,GAAG,CAAC,CAAC;KAC9C;IAED,OAAO,kCAAkC,CAAC,OAAO,GAAG,CAAC,CAAC;AACxD,CAAC;AAVD,4CAUC;AAED,SAAS,gCAAgC,CAAC,GAAc;IACtD,IAAI,IAAwB,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE;QACzB,sCAAsC;QACtC,IAAI,OAAO,IAAI,IAAI;YAAE,SAAS;QAC9B,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC;QAEnC,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,SAAS;SACV;QAED,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,kCAAkC,CAAC,WAAW,CAAC,EAAE;gBACnD,IAAI,GAAG,WAAW,CAAC;gBACnB,SAAS;aACV;YACD,mCAAmC;YACnC,OAAO,KAAK,CAAC;SACd;QAED,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kCAAkC,CAAC,OAAe;IACzD,QAAQ,OAAO,EAAE;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag, AttributeValue, Attributes } from '@opentelemetry/api';\n\nexport function sanitizeAttributes(attributes: unknown): Attributes {\n const out: Attributes = {};\n\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n\n for (const key in attributes) {\n if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n continue;\n }\n if (!isAttributeKey(key)) {\n diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n const val = (attributes as Record)[key];\n if (!isAttributeValue(val)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n } else {\n out[key] = val;\n }\n }\n\n return out;\n}\n\nexport function isAttributeKey(key: unknown): key is string {\n return typeof key === 'string' && key !== '';\n}\n\nexport function isAttributeValue(val: unknown): val is AttributeValue {\n if (val == null) {\n return true;\n }\n\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n\n return isValidPrimitiveAttributeValueType(typeof val);\n}\n\nfunction isHomogeneousAttributeValueArray(arr: unknown[]): boolean {\n let type: string | undefined;\n\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null) continue;\n const elementType = typeof element;\n\n if (elementType === type) {\n continue;\n }\n\n if (!type) {\n if (isValidPrimitiveAttributeValueType(elementType)) {\n type = elementType;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction isValidPrimitiveAttributeValueType(valType: string): boolean {\n switch (valType) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n\n return false;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/global-error-handler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/global-error-handler.d.ts new file mode 100644 index 0000000..e7d4dc7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/global-error-handler.d.ts @@ -0,0 +1,13 @@ +import { Exception } from '@opentelemetry/api'; +import { ErrorHandler } from './types'; +/** + * Set the global error handler + * @param {ErrorHandler} handler + */ +export declare function setGlobalErrorHandler(handler: ErrorHandler): void; +/** + * Return the global error handler + * @param {Exception} ex + */ +export declare function globalErrorHandler(ex: Exception): void; +//# sourceMappingURL=global-error-handler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/global-error-handler.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/global-error-handler.js new file mode 100644 index 0000000..a5d9b76 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/global-error-handler.js @@ -0,0 +1,41 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.globalErrorHandler = exports.setGlobalErrorHandler = void 0; +const logging_error_handler_1 = require("./logging-error-handler"); +/** The global error handler delegate */ +let delegateHandler = (0, logging_error_handler_1.loggingErrorHandler)(); +/** + * Set the global error handler + * @param {ErrorHandler} handler + */ +function setGlobalErrorHandler(handler) { + delegateHandler = handler; +} +exports.setGlobalErrorHandler = setGlobalErrorHandler; +/** + * Return the global error handler + * @param {Exception} ex + */ +function globalErrorHandler(ex) { + try { + delegateHandler(ex); + } + catch { } // eslint-disable-line no-empty +} +exports.globalErrorHandler = globalErrorHandler; +//# sourceMappingURL=global-error-handler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/global-error-handler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/global-error-handler.js.map new file mode 100644 index 0000000..aa2115f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/global-error-handler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-error-handler.js","sourceRoot":"","sources":["../../../src/common/global-error-handler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,mEAA8D;AAG9D,wCAAwC;AACxC,IAAI,eAAe,GAAG,IAAA,2CAAmB,GAAE,CAAC;AAE5C;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,OAAqB;IACzD,eAAe,GAAG,OAAO,CAAC;AAC5B,CAAC;AAFD,sDAEC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,EAAa;IAC9C,IAAI;QACF,eAAe,CAAC,EAAE,CAAC,CAAC;KACrB;IAAC,MAAM,GAAE,CAAC,+BAA+B;AAC5C,CAAC;AAJD,gDAIC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '@opentelemetry/api';\nimport { loggingErrorHandler } from './logging-error-handler';\nimport { ErrorHandler } from './types';\n\n/** The global error handler delegate */\nlet delegateHandler = loggingErrorHandler();\n\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nexport function setGlobalErrorHandler(handler: ErrorHandler): void {\n delegateHandler = handler;\n}\n\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nexport function globalErrorHandler(ex: Exception): void {\n try {\n delegateHandler(ex);\n } catch {} // eslint-disable-line no-empty\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/globalThis.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/globalThis.d.ts new file mode 100644 index 0000000..6804ddb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/globalThis.d.ts @@ -0,0 +1,5 @@ +/** + * @deprecated Use globalThis directly instead. + */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/globalThis.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/globalThis.js new file mode 100644 index 0000000..7c972cd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/globalThis.js @@ -0,0 +1,23 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._globalThis = void 0; +/** + * @deprecated Use globalThis directly instead. + */ +exports._globalThis = globalThis; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/globalThis.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/globalThis.js.map new file mode 100644 index 0000000..a81de52 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../src/common/globalThis.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;GAEG;AACU,QAAA,WAAW,GAAG,UAAU,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * @deprecated Use globalThis directly instead.\n */\nexport const _globalThis = globalThis;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.d.ts new file mode 100644 index 0000000..5d578b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.d.ts @@ -0,0 +1,7 @@ +import { ErrorHandler } from './types'; +/** + * Returns a function that logs an error using the provided logger, or a + * console logger if one was not provided. + */ +export declare function loggingErrorHandler(): ErrorHandler; +//# sourceMappingURL=logging-error-handler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js new file mode 100644 index 0000000..e1ea6e0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js @@ -0,0 +1,63 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.loggingErrorHandler = void 0; +const api_1 = require("@opentelemetry/api"); +/** + * Returns a function that logs an error using the provided logger, or a + * console logger if one was not provided. + */ +function loggingErrorHandler() { + return (ex) => { + api_1.diag.error(stringifyException(ex)); + }; +} +exports.loggingErrorHandler = loggingErrorHandler; +/** + * Converts an exception into a string representation + * @param {Exception} ex + */ +function stringifyException(ex) { + if (typeof ex === 'string') { + return ex; + } + else { + return JSON.stringify(flattenException(ex)); + } +} +/** + * Flattens an exception into key-value pairs by traversing the prototype chain + * and coercing values to strings. Duplicate properties will not be overwritten; + * the first insert wins. + */ +function flattenException(ex) { + const result = {}; + let current = ex; + while (current !== null) { + Object.getOwnPropertyNames(current).forEach(propertyName => { + if (result[propertyName]) + return; + const value = current[propertyName]; + if (value) { + result[propertyName] = String(value); + } + }); + current = Object.getPrototypeOf(current); + } + return result; +} +//# sourceMappingURL=logging-error-handler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js.map new file mode 100644 index 0000000..829b96c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logging-error-handler.js","sourceRoot":"","sources":["../../../src/common/logging-error-handler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAqD;AAGrD;;;GAGG;AACH,SAAgB,mBAAmB;IACjC,OAAO,CAAC,EAAa,EAAE,EAAE;QACvB,UAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC;AAJD,kDAIC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,EAAsB;IAChD,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QAC1B,OAAO,EAAE,CAAC;KACX;SAAM;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7C;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,EAAa;IACrC,MAAM,MAAM,GAAG,EAA4B,CAAC;IAC5C,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,OAAO,OAAO,KAAK,IAAI,EAAE;QACvB,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACzD,IAAI,MAAM,CAAC,YAAY,CAAC;gBAAE,OAAO;YACjC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAoC,CAAC,CAAC;YAC5D,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;aACtC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;KAC1C;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag, Exception } from '@opentelemetry/api';\nimport { ErrorHandler } from './types';\n\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nexport function loggingErrorHandler(): ErrorHandler {\n return (ex: Exception) => {\n diag.error(stringifyException(ex));\n };\n}\n\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex: Exception | string): string {\n if (typeof ex === 'string') {\n return ex;\n } else {\n return JSON.stringify(flattenException(ex));\n }\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: Exception): Record {\n const result = {} as Record;\n let current = ex;\n\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName]) return;\n const value = current[propertyName as keyof typeof current];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n\n return result;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/time.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/time.d.ts new file mode 100644 index 0000000..dd00182 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/time.d.ts @@ -0,0 +1,62 @@ +import * as api from '@opentelemetry/api'; +/** + * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]). + * @param epochMillis + */ +export declare function millisToHrTime(epochMillis: number): api.HrTime; +/** + * @deprecated Use `performance.timeOrigin` directly. + */ +export declare function getTimeOrigin(): number; +/** + * Returns an hrtime calculated via performance component. + * @param performanceNow + */ +export declare function hrTime(performanceNow?: number): api.HrTime; +/** + * + * Converts a TimeInput to an HrTime, defaults to _hrtime(). + * @param time + */ +export declare function timeInputToHrTime(time: api.TimeInput): api.HrTime; +/** + * Returns a duration of two hrTime. + * @param startTime + * @param endTime + */ +export declare function hrTimeDuration(startTime: api.HrTime, endTime: api.HrTime): api.HrTime; +/** + * Convert hrTime to timestamp, for example "2019-05-14T17:00:00.000123456Z" + * @param time + */ +export declare function hrTimeToTimeStamp(time: api.HrTime): string; +/** + * Convert hrTime to nanoseconds. + * @param time + */ +export declare function hrTimeToNanoseconds(time: api.HrTime): number; +/** + * Convert hrTime to milliseconds. + * @param time + */ +export declare function hrTimeToMilliseconds(time: api.HrTime): number; +/** + * Convert hrTime to microseconds. + * @param time + */ +export declare function hrTimeToMicroseconds(time: api.HrTime): number; +/** + * check if time is HrTime + * @param value + */ +export declare function isTimeInputHrTime(value: unknown): value is api.HrTime; +/** + * check if input value is a correct types.TimeInput + * @param value + */ +export declare function isTimeInput(value: unknown): value is api.HrTime | number | Date; +/** + * Given 2 HrTime formatted times, return their sum as an HrTime. + */ +export declare function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime; +//# sourceMappingURL=time.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/time.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/time.js new file mode 100644 index 0000000..2ba1745 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/time.js @@ -0,0 +1,169 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +const platform_1 = require("../platform"); +const NANOSECOND_DIGITS = 9; +const NANOSECOND_DIGITS_IN_MILLIS = 6; +const MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS); +const SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS); +/** + * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]). + * @param epochMillis + */ +function millisToHrTime(epochMillis) { + const epochSeconds = epochMillis / 1000; + // Decimals only. + const seconds = Math.trunc(epochSeconds); + // Round sub-nanosecond accuracy to nanosecond. + const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS); + return [seconds, nanos]; +} +exports.millisToHrTime = millisToHrTime; +/** + * @deprecated Use `performance.timeOrigin` directly. + */ +function getTimeOrigin() { + return platform_1.otperformance.timeOrigin; +} +exports.getTimeOrigin = getTimeOrigin; +/** + * Returns an hrtime calculated via performance component. + * @param performanceNow + */ +function hrTime(performanceNow) { + const timeOrigin = millisToHrTime(platform_1.otperformance.timeOrigin); + const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : platform_1.otperformance.now()); + return addHrTimes(timeOrigin, now); +} +exports.hrTime = hrTime; +/** + * + * Converts a TimeInput to an HrTime, defaults to _hrtime(). + * @param time + */ +function timeInputToHrTime(time) { + // process.hrtime + if (isTimeInputHrTime(time)) { + return time; + } + else if (typeof time === 'number') { + // Must be a performance.now() if it's smaller than process start time. + if (time < platform_1.otperformance.timeOrigin) { + return hrTime(time); + } + else { + // epoch milliseconds or performance.timeOrigin + return millisToHrTime(time); + } + } + else if (time instanceof Date) { + return millisToHrTime(time.getTime()); + } + else { + throw TypeError('Invalid input type'); + } +} +exports.timeInputToHrTime = timeInputToHrTime; +/** + * Returns a duration of two hrTime. + * @param startTime + * @param endTime + */ +function hrTimeDuration(startTime, endTime) { + let seconds = endTime[0] - startTime[0]; + let nanos = endTime[1] - startTime[1]; + // overflow + if (nanos < 0) { + seconds -= 1; + // negate + nanos += SECOND_TO_NANOSECONDS; + } + return [seconds, nanos]; +} +exports.hrTimeDuration = hrTimeDuration; +/** + * Convert hrTime to timestamp, for example "2019-05-14T17:00:00.000123456Z" + * @param time + */ +function hrTimeToTimeStamp(time) { + const precision = NANOSECOND_DIGITS; + const tmp = `${'0'.repeat(precision)}${time[1]}Z`; + const nanoString = tmp.substring(tmp.length - precision - 1); + const date = new Date(time[0] * 1000).toISOString(); + return date.replace('000Z', nanoString); +} +exports.hrTimeToTimeStamp = hrTimeToTimeStamp; +/** + * Convert hrTime to nanoseconds. + * @param time + */ +function hrTimeToNanoseconds(time) { + return time[0] * SECOND_TO_NANOSECONDS + time[1]; +} +exports.hrTimeToNanoseconds = hrTimeToNanoseconds; +/** + * Convert hrTime to milliseconds. + * @param time + */ +function hrTimeToMilliseconds(time) { + return time[0] * 1e3 + time[1] / 1e6; +} +exports.hrTimeToMilliseconds = hrTimeToMilliseconds; +/** + * Convert hrTime to microseconds. + * @param time + */ +function hrTimeToMicroseconds(time) { + return time[0] * 1e6 + time[1] / 1e3; +} +exports.hrTimeToMicroseconds = hrTimeToMicroseconds; +/** + * check if time is HrTime + * @param value + */ +function isTimeInputHrTime(value) { + return (Array.isArray(value) && + value.length === 2 && + typeof value[0] === 'number' && + typeof value[1] === 'number'); +} +exports.isTimeInputHrTime = isTimeInputHrTime; +/** + * check if input value is a correct types.TimeInput + * @param value + */ +function isTimeInput(value) { + return (isTimeInputHrTime(value) || + typeof value === 'number' || + value instanceof Date); +} +exports.isTimeInput = isTimeInput; +/** + * Given 2 HrTime formatted times, return their sum as an HrTime. + */ +function addHrTimes(time1, time2) { + const out = [time1[0] + time2[0], time1[1] + time2[1]]; + // Nanoseconds + if (out[1] >= SECOND_TO_NANOSECONDS) { + out[1] -= SECOND_TO_NANOSECONDS; + out[0] += 1; + } + return out; +} +exports.addHrTimes = addHrTimes; +//# sourceMappingURL=time.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/time.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/time.js.map new file mode 100644 index 0000000..cf02768 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/common/time.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,0CAA2D;AAE3D,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,2BAA2B,GAAG,CAAC,CAAC;AACtC,MAAM,2BAA2B,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;AAC9E,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAE9D;;;GAGG;AACH,SAAgB,cAAc,CAAC,WAAmB;IAChD,MAAM,YAAY,GAAG,WAAW,GAAG,IAAI,CAAC;IACxC,iBAAiB;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACzC,+CAA+C;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,2BAA2B,CAAC,CAAC;IAC7E,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAPD,wCAOC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO,wBAAW,CAAC,UAAU,CAAC;AAChC,CAAC;AAFD,sCAEC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,cAAuB;IAC5C,MAAM,UAAU,GAAG,cAAc,CAAC,wBAAW,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,cAAc,CACxB,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,wBAAW,CAAC,GAAG,EAAE,CACxE,CAAC;IAEF,OAAO,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAPD,wBAOC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,IAAmB;IACnD,iBAAiB;IACjB,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;QAC3B,OAAO,IAAkB,CAAC;KAC3B;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACnC,uEAAuE;QACvE,IAAI,IAAI,GAAG,wBAAW,CAAC,UAAU,EAAE;YACjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;SACrB;aAAM;YACL,+CAA+C;YAC/C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;SAC7B;KACF;SAAM,IAAI,IAAI,YAAY,IAAI,EAAE;QAC/B,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KACvC;SAAM;QACL,MAAM,SAAS,CAAC,oBAAoB,CAAC,CAAC;KACvC;AACH,CAAC;AAjBD,8CAiBC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAC5B,SAAqB,EACrB,OAAmB;IAEnB,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAEtC,WAAW;IACX,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,OAAO,IAAI,CAAC,CAAC;QACb,SAAS;QACT,KAAK,IAAI,qBAAqB,CAAC;KAChC;IAED,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAfD,wCAeC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,IAAgB;IAChD,MAAM,SAAS,GAAG,iBAAiB,CAAC;IACpC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAClD,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC1C,CAAC;AAND,8CAMC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,IAAgB;IAClD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,qBAAqB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAFD,kDAEC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,IAAgB;IACnD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC;AAFD,oDAEC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,IAAgB;IACnD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC;AAFD,oDAEC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC7B,CAAC;AACJ,CAAC;AAPD,8CAOC;AAED;;;GAGG;AACH,SAAgB,WAAW,CACzB,KAAc;IAEd,OAAO,CACL,iBAAiB,CAAC,KAAK,CAAC;QACxB,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,YAAY,IAAI,CACtB,CAAC;AACJ,CAAC;AARD,kCAQC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAiB,EAAE,KAAiB;IAC7D,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAe,CAAC;IAErE,cAAc;IACd,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,qBAAqB,EAAE;QACnC,GAAG,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC;QAChC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KACb;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAVD,gCAUC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport { otperformance as performance } from '../platform';\n\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/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nexport function millisToHrTime(epochMillis: number): api.HrTime {\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}\n\n/**\n * @deprecated Use `performance.timeOrigin` directly.\n */\nexport function getTimeOrigin(): number {\n return performance.timeOrigin;\n}\n\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nexport function hrTime(performanceNow?: number): api.HrTime {\n const timeOrigin = millisToHrTime(performance.timeOrigin);\n const now = millisToHrTime(\n typeof performanceNow === 'number' ? performanceNow : performance.now()\n );\n\n return addHrTimes(timeOrigin, now);\n}\n\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nexport function timeInputToHrTime(time: api.TimeInput): api.HrTime {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time as api.HrTime;\n } else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < performance.timeOrigin) {\n return hrTime(time);\n } else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n } else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n } else {\n throw TypeError('Invalid input type');\n }\n}\n\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nexport function hrTimeDuration(\n startTime: api.HrTime,\n endTime: api.HrTime\n): api.HrTime {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n\n return [seconds, nanos];\n}\n\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nexport function hrTimeToTimeStamp(time: api.HrTime): string {\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}\n\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nexport function hrTimeToNanoseconds(time: api.HrTime): number {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\n\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nexport function hrTimeToMilliseconds(time: api.HrTime): number {\n return time[0] * 1e3 + time[1] / 1e6;\n}\n\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nexport function hrTimeToMicroseconds(time: api.HrTime): number {\n return time[0] * 1e6 + time[1] / 1e3;\n}\n\n/**\n * check if time is HrTime\n * @param value\n */\nexport function isTimeInputHrTime(value: unknown): value is api.HrTime {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nexport function isTimeInput(\n value: unknown\n): value is api.HrTime | number | Date {\n return (\n isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date\n );\n}\n\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nexport function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime {\n const out = [time1[0] + time2[0], time1[1] + time2[1]] as api.HrTime;\n\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n\n return out;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/timer-util.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/timer-util.d.ts new file mode 100644 index 0000000..39d10f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/timer-util.d.ts @@ -0,0 +1,8 @@ +/** + * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package. + * @param timer + */ +export declare function unrefTimer(timer: { + unref(): unknown; +} | number): void; +//# sourceMappingURL=timer-util.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/timer-util.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/timer-util.js new file mode 100644 index 0000000..76043b6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/timer-util.js @@ -0,0 +1,29 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.unrefTimer = void 0; +/** + * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package. + * @param timer + */ +function unrefTimer(timer) { + if (typeof timer !== 'number') { + timer.unref(); + } +} +exports.unrefTimer = unrefTimer; +//# sourceMappingURL=timer-util.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/timer-util.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/timer-util.js.map new file mode 100644 index 0000000..01c762d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/timer-util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timer-util.js","sourceRoot":"","sources":["../../../src/common/timer-util.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAoC;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,KAAK,CAAC,KAAK,EAAE,CAAC;KACf;AACH,CAAC;AAJD,gCAIC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * @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 */\nexport function unrefTimer(timer: { unref(): unknown } | number): void {\n if (typeof timer !== 'number') {\n timer.unref();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/types.d.ts new file mode 100644 index 0000000..864edc2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/types.d.ts @@ -0,0 +1,23 @@ +import { Exception } from '@opentelemetry/api'; +/** + * This interface defines the params that are be added to the wrapped function + * using the "shimmer.wrap" + */ +export interface ShimWrapped extends Function { + __wrapped: boolean; + __unwrap: Function; + __original: Function; +} +/** + * An instrumentation scope consists of the name and optional version + * used to obtain a tracer or meter from a provider. This metadata is made + * available on ReadableSpan and MetricRecord for use by the export pipeline. + */ +export interface InstrumentationScope { + readonly name: string; + readonly version?: string; + readonly schemaUrl?: string; +} +/** Defines an error handler function */ +export type ErrorHandler = (ex: Exception) => void; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/types.js.map new file mode 100644 index 0000000..0eed228 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/common/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '@opentelemetry/api';\n\n/**\n * This interface defines the params that are be added to the wrapped function\n * using the \"shimmer.wrap\"\n */\nexport interface ShimWrapped extends Function {\n __wrapped: boolean;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __unwrap: Function;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __original: Function;\n}\n\n/**\n * An instrumentation scope consists of the name and optional version\n * used to obtain a tracer or meter from a provider. This metadata is made\n * available on ReadableSpan and MetricRecord for use by the export pipeline.\n */\nexport interface InstrumentationScope {\n readonly name: string;\n readonly version?: string;\n readonly schemaUrl?: string;\n}\n\n/** Defines an error handler function */\nexport type ErrorHandler = (ex: Exception) => void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/index.d.ts new file mode 100644 index 0000000..a6d4957 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/index.d.ts @@ -0,0 +1,30 @@ +export { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator'; +export { AnchoredClock } from './common/anchored-clock'; +export type { Clock } from './common/anchored-clock'; +export { isAttributeValue, sanitizeAttributes } from './common/attributes'; +export { globalErrorHandler, setGlobalErrorHandler, } from './common/global-error-handler'; +export { loggingErrorHandler } from './common/logging-error-handler'; +export { addHrTimes, getTimeOrigin, hrTime, hrTimeDuration, hrTimeToMicroseconds, hrTimeToMilliseconds, hrTimeToNanoseconds, hrTimeToTimeStamp, isTimeInput, isTimeInputHrTime, millisToHrTime, timeInputToHrTime, } from './common/time'; +export { unrefTimer } from './common/timer-util'; +export type { ErrorHandler, InstrumentationScope } from './common/types'; +export { ExportResultCode } from './ExportResult'; +export type { ExportResult } from './ExportResult'; +export { parseKeyPairsIntoRecord } from './baggage/utils'; +export { SDK_INFO, _globalThis, getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, otperformance, } from './platform'; +export { CompositePropagator } from './propagation/composite'; +export type { CompositePropagatorConfig } from './propagation/composite'; +export { TRACE_PARENT_HEADER, TRACE_STATE_HEADER, W3CTraceContextPropagator, parseTraceParent, } from './trace/W3CTraceContextPropagator'; +export { RPCType, deleteRPCMetadata, getRPCMetadata, setRPCMetadata, } from './trace/rpc-metadata'; +export type { RPCMetadata } from './trace/rpc-metadata'; +export { isTracingSuppressed, suppressTracing, unsuppressTracing, } from './trace/suppress-tracing'; +export { TraceState } from './trace/TraceState'; +export { merge } from './utils/merge'; +export { TimeoutError, callWithTimeout } from './utils/timeout'; +export { isUrlIgnored, urlMatches } from './utils/url'; +export { BindOnceFuture } from './utils/callback'; +export { diagLogLevelFromString } from './utils/configuration'; +import { _export } from './internal/exporter'; +export declare const internal: { + _export: typeof _export; +}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/index.js new file mode 100644 index 0000000..acba8c7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/index.js @@ -0,0 +1,92 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +var W3CBaggagePropagator_1 = require("./baggage/propagation/W3CBaggagePropagator"); +Object.defineProperty(exports, "W3CBaggagePropagator", { enumerable: true, get: function () { return W3CBaggagePropagator_1.W3CBaggagePropagator; } }); +var anchored_clock_1 = require("./common/anchored-clock"); +Object.defineProperty(exports, "AnchoredClock", { enumerable: true, get: function () { return anchored_clock_1.AnchoredClock; } }); +var attributes_1 = require("./common/attributes"); +Object.defineProperty(exports, "isAttributeValue", { enumerable: true, get: function () { return attributes_1.isAttributeValue; } }); +Object.defineProperty(exports, "sanitizeAttributes", { enumerable: true, get: function () { return attributes_1.sanitizeAttributes; } }); +var global_error_handler_1 = require("./common/global-error-handler"); +Object.defineProperty(exports, "globalErrorHandler", { enumerable: true, get: function () { return global_error_handler_1.globalErrorHandler; } }); +Object.defineProperty(exports, "setGlobalErrorHandler", { enumerable: true, get: function () { return global_error_handler_1.setGlobalErrorHandler; } }); +var logging_error_handler_1 = require("./common/logging-error-handler"); +Object.defineProperty(exports, "loggingErrorHandler", { enumerable: true, get: function () { return logging_error_handler_1.loggingErrorHandler; } }); +var time_1 = require("./common/time"); +Object.defineProperty(exports, "addHrTimes", { enumerable: true, get: function () { return time_1.addHrTimes; } }); +Object.defineProperty(exports, "getTimeOrigin", { enumerable: true, get: function () { return time_1.getTimeOrigin; } }); +Object.defineProperty(exports, "hrTime", { enumerable: true, get: function () { return time_1.hrTime; } }); +Object.defineProperty(exports, "hrTimeDuration", { enumerable: true, get: function () { return time_1.hrTimeDuration; } }); +Object.defineProperty(exports, "hrTimeToMicroseconds", { enumerable: true, get: function () { return time_1.hrTimeToMicroseconds; } }); +Object.defineProperty(exports, "hrTimeToMilliseconds", { enumerable: true, get: function () { return time_1.hrTimeToMilliseconds; } }); +Object.defineProperty(exports, "hrTimeToNanoseconds", { enumerable: true, get: function () { return time_1.hrTimeToNanoseconds; } }); +Object.defineProperty(exports, "hrTimeToTimeStamp", { enumerable: true, get: function () { return time_1.hrTimeToTimeStamp; } }); +Object.defineProperty(exports, "isTimeInput", { enumerable: true, get: function () { return time_1.isTimeInput; } }); +Object.defineProperty(exports, "isTimeInputHrTime", { enumerable: true, get: function () { return time_1.isTimeInputHrTime; } }); +Object.defineProperty(exports, "millisToHrTime", { enumerable: true, get: function () { return time_1.millisToHrTime; } }); +Object.defineProperty(exports, "timeInputToHrTime", { enumerable: true, get: function () { return time_1.timeInputToHrTime; } }); +var timer_util_1 = require("./common/timer-util"); +Object.defineProperty(exports, "unrefTimer", { enumerable: true, get: function () { return timer_util_1.unrefTimer; } }); +var ExportResult_1 = require("./ExportResult"); +Object.defineProperty(exports, "ExportResultCode", { enumerable: true, get: function () { return ExportResult_1.ExportResultCode; } }); +var utils_1 = require("./baggage/utils"); +Object.defineProperty(exports, "parseKeyPairsIntoRecord", { enumerable: true, get: function () { return utils_1.parseKeyPairsIntoRecord; } }); +var platform_1 = require("./platform"); +Object.defineProperty(exports, "SDK_INFO", { enumerable: true, get: function () { return platform_1.SDK_INFO; } }); +Object.defineProperty(exports, "_globalThis", { enumerable: true, get: function () { return platform_1._globalThis; } }); +Object.defineProperty(exports, "getStringFromEnv", { enumerable: true, get: function () { return platform_1.getStringFromEnv; } }); +Object.defineProperty(exports, "getBooleanFromEnv", { enumerable: true, get: function () { return platform_1.getBooleanFromEnv; } }); +Object.defineProperty(exports, "getNumberFromEnv", { enumerable: true, get: function () { return platform_1.getNumberFromEnv; } }); +Object.defineProperty(exports, "getStringListFromEnv", { enumerable: true, get: function () { return platform_1.getStringListFromEnv; } }); +Object.defineProperty(exports, "otperformance", { enumerable: true, get: function () { return platform_1.otperformance; } }); +var composite_1 = require("./propagation/composite"); +Object.defineProperty(exports, "CompositePropagator", { enumerable: true, get: function () { return composite_1.CompositePropagator; } }); +var W3CTraceContextPropagator_1 = require("./trace/W3CTraceContextPropagator"); +Object.defineProperty(exports, "TRACE_PARENT_HEADER", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_PARENT_HEADER; } }); +Object.defineProperty(exports, "TRACE_STATE_HEADER", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_STATE_HEADER; } }); +Object.defineProperty(exports, "W3CTraceContextPropagator", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.W3CTraceContextPropagator; } }); +Object.defineProperty(exports, "parseTraceParent", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.parseTraceParent; } }); +var rpc_metadata_1 = require("./trace/rpc-metadata"); +Object.defineProperty(exports, "RPCType", { enumerable: true, get: function () { return rpc_metadata_1.RPCType; } }); +Object.defineProperty(exports, "deleteRPCMetadata", { enumerable: true, get: function () { return rpc_metadata_1.deleteRPCMetadata; } }); +Object.defineProperty(exports, "getRPCMetadata", { enumerable: true, get: function () { return rpc_metadata_1.getRPCMetadata; } }); +Object.defineProperty(exports, "setRPCMetadata", { enumerable: true, get: function () { return rpc_metadata_1.setRPCMetadata; } }); +var suppress_tracing_1 = require("./trace/suppress-tracing"); +Object.defineProperty(exports, "isTracingSuppressed", { enumerable: true, get: function () { return suppress_tracing_1.isTracingSuppressed; } }); +Object.defineProperty(exports, "suppressTracing", { enumerable: true, get: function () { return suppress_tracing_1.suppressTracing; } }); +Object.defineProperty(exports, "unsuppressTracing", { enumerable: true, get: function () { return suppress_tracing_1.unsuppressTracing; } }); +var TraceState_1 = require("./trace/TraceState"); +Object.defineProperty(exports, "TraceState", { enumerable: true, get: function () { return TraceState_1.TraceState; } }); +var merge_1 = require("./utils/merge"); +Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return merge_1.merge; } }); +var timeout_1 = require("./utils/timeout"); +Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return timeout_1.TimeoutError; } }); +Object.defineProperty(exports, "callWithTimeout", { enumerable: true, get: function () { return timeout_1.callWithTimeout; } }); +var url_1 = require("./utils/url"); +Object.defineProperty(exports, "isUrlIgnored", { enumerable: true, get: function () { return url_1.isUrlIgnored; } }); +Object.defineProperty(exports, "urlMatches", { enumerable: true, get: function () { return url_1.urlMatches; } }); +var callback_1 = require("./utils/callback"); +Object.defineProperty(exports, "BindOnceFuture", { enumerable: true, get: function () { return callback_1.BindOnceFuture; } }); +var configuration_1 = require("./utils/configuration"); +Object.defineProperty(exports, "diagLogLevelFromString", { enumerable: true, get: function () { return configuration_1.diagLogLevelFromString; } }); +const exporter_1 = require("./internal/exporter"); +exports.internal = { + _export: exporter_1._export, +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/index.js.map new file mode 100644 index 0000000..9f01ebc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,mFAAkF;AAAzE,4HAAA,oBAAoB,OAAA;AAC7B,0DAAwD;AAA/C,+GAAA,aAAa,OAAA;AAEtB,kDAA2E;AAAlE,8GAAA,gBAAgB,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAC7C,sEAGuC;AAFrC,0HAAA,kBAAkB,OAAA;AAClB,6HAAA,qBAAqB,OAAA;AAEvB,wEAAqE;AAA5D,4HAAA,mBAAmB,OAAA;AAC5B,sCAauB;AAZrB,kGAAA,UAAU,OAAA;AACV,qGAAA,aAAa,OAAA;AACb,8FAAA,MAAM,OAAA;AACN,sGAAA,cAAc,OAAA;AACd,4GAAA,oBAAoB,OAAA;AACpB,4GAAA,oBAAoB,OAAA;AACpB,2GAAA,mBAAmB,OAAA;AACnB,yGAAA,iBAAiB,OAAA;AACjB,mGAAA,WAAW,OAAA;AACX,yGAAA,iBAAiB,OAAA;AACjB,sGAAA,cAAc,OAAA;AACd,yGAAA,iBAAiB,OAAA;AAEnB,kDAAiD;AAAxC,wGAAA,UAAU,OAAA;AAEnB,+CAAkD;AAAzC,gHAAA,gBAAgB,OAAA;AAEzB,yCAA0D;AAAjD,gHAAA,uBAAuB,OAAA;AAChC,uCAQoB;AAPlB,oGAAA,QAAQ,OAAA;AACR,uGAAA,WAAW,OAAA;AACX,4GAAA,gBAAgB,OAAA;AAChB,6GAAA,iBAAiB,OAAA;AACjB,4GAAA,gBAAgB,OAAA;AAChB,gHAAA,oBAAoB,OAAA;AACpB,yGAAA,aAAa,OAAA;AAEf,qDAA8D;AAArD,gHAAA,mBAAmB,OAAA;AAE5B,+EAK2C;AAJzC,gIAAA,mBAAmB,OAAA;AACnB,+HAAA,kBAAkB,OAAA;AAClB,sIAAA,yBAAyB,OAAA;AACzB,6HAAA,gBAAgB,OAAA;AAElB,qDAK8B;AAJ5B,uGAAA,OAAO,OAAA;AACP,iHAAA,iBAAiB,OAAA;AACjB,8GAAA,cAAc,OAAA;AACd,8GAAA,cAAc,OAAA;AAGhB,6DAIkC;AAHhC,uHAAA,mBAAmB,OAAA;AACnB,mHAAA,eAAe,OAAA;AACf,qHAAA,iBAAiB,OAAA;AAEnB,iDAAgD;AAAvC,wGAAA,UAAU,OAAA;AACnB,uCAAsC;AAA7B,8FAAA,KAAK,OAAA;AACd,2CAAgE;AAAvD,uGAAA,YAAY,OAAA;AAAE,0GAAA,eAAe,OAAA;AACtC,mCAAuD;AAA9C,mGAAA,YAAY,OAAA;AAAE,iGAAA,UAAU,OAAA;AACjC,6CAAkD;AAAzC,0GAAA,cAAc,OAAA;AACvB,uDAA+D;AAAtD,uHAAA,sBAAsB,OAAA;AAC/B,kDAA8C;AACjC,QAAA,QAAQ,GAAG;IACtB,OAAO,EAAP,kBAAO;CACR,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator';\nexport { AnchoredClock } from './common/anchored-clock';\nexport type { Clock } from './common/anchored-clock';\nexport { isAttributeValue, sanitizeAttributes } from './common/attributes';\nexport {\n globalErrorHandler,\n setGlobalErrorHandler,\n} from './common/global-error-handler';\nexport { loggingErrorHandler } from './common/logging-error-handler';\nexport {\n addHrTimes,\n getTimeOrigin,\n hrTime,\n hrTimeDuration,\n hrTimeToMicroseconds,\n hrTimeToMilliseconds,\n hrTimeToNanoseconds,\n hrTimeToTimeStamp,\n isTimeInput,\n isTimeInputHrTime,\n millisToHrTime,\n timeInputToHrTime,\n} from './common/time';\nexport { unrefTimer } from './common/timer-util';\nexport type { ErrorHandler, InstrumentationScope } from './common/types';\nexport { ExportResultCode } from './ExportResult';\nexport type { ExportResult } from './ExportResult';\nexport { parseKeyPairsIntoRecord } from './baggage/utils';\nexport {\n SDK_INFO,\n _globalThis,\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n otperformance,\n} from './platform';\nexport { CompositePropagator } from './propagation/composite';\nexport type { CompositePropagatorConfig } from './propagation/composite';\nexport {\n TRACE_PARENT_HEADER,\n TRACE_STATE_HEADER,\n W3CTraceContextPropagator,\n parseTraceParent,\n} from './trace/W3CTraceContextPropagator';\nexport {\n RPCType,\n deleteRPCMetadata,\n getRPCMetadata,\n setRPCMetadata,\n} from './trace/rpc-metadata';\nexport type { RPCMetadata } from './trace/rpc-metadata';\nexport {\n isTracingSuppressed,\n suppressTracing,\n unsuppressTracing,\n} from './trace/suppress-tracing';\nexport { TraceState } from './trace/TraceState';\nexport { merge } from './utils/merge';\nexport { TimeoutError, callWithTimeout } from './utils/timeout';\nexport { isUrlIgnored, urlMatches } from './utils/url';\nexport { BindOnceFuture } from './utils/callback';\nexport { diagLogLevelFromString } from './utils/configuration';\nimport { _export } from './internal/exporter';\nexport const internal = {\n _export,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/exporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/exporter.d.ts new file mode 100644 index 0000000..41253b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/exporter.d.ts @@ -0,0 +1,10 @@ +import { ExportResult } from '../ExportResult'; +export interface Exporter { + export(arg: T, resultCallback: (result: ExportResult) => void): void; +} +/** + * @internal + * Shared functionality used by Exporters while exporting data, including suppression of Traces. + */ +export declare function _export(exporter: Exporter, arg: T): Promise; +//# sourceMappingURL=exporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/exporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/exporter.js new file mode 100644 index 0000000..c5c3511 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/exporter.js @@ -0,0 +1,36 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._export = void 0; +const api_1 = require("@opentelemetry/api"); +const suppress_tracing_1 = require("../trace/suppress-tracing"); +/** + * @internal + * Shared functionality used by Exporters while exporting data, including suppression of Traces. + */ +function _export(exporter, arg) { + return new Promise(resolve => { + // prevent downstream exporter calls from generating spans + api_1.context.with((0, suppress_tracing_1.suppressTracing)(api_1.context.active()), () => { + exporter.export(arg, (result) => { + resolve(result); + }); + }); + }); +} +exports._export = _export; +//# sourceMappingURL=exporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/exporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/exporter.js.map new file mode 100644 index 0000000..4c787c2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/exporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../../src/internal/exporter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA6C;AAE7C,gEAA4D;AAM5D;;;GAGG;AACH,SAAgB,OAAO,CACrB,QAAqB,EACrB,GAAM;IAEN,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,0DAA0D;QAC1D,aAAO,CAAC,IAAI,CAAC,IAAA,kCAAe,EAAC,aAAO,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE;YACnD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAoB,EAAE,EAAE;gBAC5C,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAZD,0BAYC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { context } from '@opentelemetry/api';\nimport { ExportResult } from '../ExportResult';\nimport { suppressTracing } from '../trace/suppress-tracing';\n\nexport interface Exporter {\n export(arg: T, resultCallback: (result: ExportResult) => void): void;\n}\n\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nexport function _export(\n exporter: Exporter,\n arg: T\n): Promise {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n context.with(suppressTracing(context.active()), () => {\n exporter.export(arg, (result: ExportResult) => {\n resolve(result);\n });\n });\n });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/validators.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/validators.d.ts new file mode 100644 index 0000000..8376f38 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/validators.d.ts @@ -0,0 +1,15 @@ +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +export declare function validateKey(key: string): boolean; +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +export declare function validateValue(value: string): boolean; +//# sourceMappingURL=validators.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/validators.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/validators.js new file mode 100644 index 0000000..820522c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/validators.js @@ -0,0 +1,46 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateValue = exports.validateKey = void 0; +const VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]'; +const VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`; +const VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`; +const VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`); +const VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/; +const INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/; +/** + * Key is opaque string up to 256 characters printable. It MUST begin with a + * lowercase letter, and can only contain lowercase letters a-z, digits 0-9, + * underscores _, dashes -, asterisks *, and forward slashes /. + * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the + * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key. + * see https://www.w3.org/TR/trace-context/#key + */ +function validateKey(key) { + return VALID_KEY_REGEX.test(key); +} +exports.validateKey = validateKey; +/** + * Value is opaque string up to 256 characters printable ASCII RFC0020 + * characters (i.e., the range 0x20 to 0x7E) except comma , and =. + */ +function validateValue(value) { + return (VALID_VALUE_BASE_REGEX.test(value) && + !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)); +} +exports.validateValue = validateValue; +//# sourceMappingURL=validators.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/validators.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/validators.js.map new file mode 100644 index 0000000..64fe175 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/internal/validators.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/internal/validators.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAC5C,MAAM,SAAS,GAAG,QAAQ,oBAAoB,SAAS,CAAC;AACxD,MAAM,gBAAgB,GAAG,WAAW,oBAAoB,gBAAgB,oBAAoB,QAAQ,CAAC;AACrG,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,OAAO,SAAS,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC7E,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AACrD,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAE9C;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,CACL,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAC7C,CAAC;AACJ,CAAC;AALD,sCAKC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 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/**\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 */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\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 */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/environment.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/environment.d.ts new file mode 100644 index 0000000..e4f380b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/environment.d.ts @@ -0,0 +1,5 @@ +export declare function getStringFromEnv(_: string): string | undefined; +export declare function getBooleanFromEnv(_: string): boolean | undefined; +export declare function getNumberFromEnv(_: string): number | undefined; +export declare function getStringListFromEnv(_: string): string[] | undefined; +//# sourceMappingURL=environment.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/environment.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/environment.js new file mode 100644 index 0000000..e3ee9a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/environment.js @@ -0,0 +1,35 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = void 0; +function getStringFromEnv(_) { + return undefined; +} +exports.getStringFromEnv = getStringFromEnv; +function getBooleanFromEnv(_) { + return undefined; +} +exports.getBooleanFromEnv = getBooleanFromEnv; +function getNumberFromEnv(_) { + return undefined; +} +exports.getNumberFromEnv = getNumberFromEnv; +function getStringListFromEnv(_) { + return undefined; +} +exports.getStringListFromEnv = getStringListFromEnv; +//# sourceMappingURL=environment.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/environment.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/environment.js.map new file mode 100644 index 0000000..20bf18a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/environment.js.map @@ -0,0 +1 @@ +{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../src/platform/browser/environment.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,SAAgB,gBAAgB,CAAC,CAAS;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAFD,4CAEC;AAED,SAAgB,iBAAiB,CAAC,CAAS;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC;AAFD,8CAEC;AAED,SAAgB,gBAAgB,CAAC,CAAS;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAFD,4CAEC;AAED,SAAgB,oBAAoB,CAAC,CAAS;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAFD,oDAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport function getStringFromEnv(_: string): string | undefined {\n return undefined;\n}\n\nexport function getBooleanFromEnv(_: string): boolean | undefined {\n return undefined;\n}\n\nexport function getNumberFromEnv(_: string): number | undefined {\n return undefined;\n}\n\nexport function getStringListFromEnv(_: string): string[] | undefined {\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/index.d.ts new file mode 100644 index 0000000..f1c8268 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/index.d.ts @@ -0,0 +1,8 @@ +export { getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, } from './environment'; +export { _globalThis } from '../../common/globalThis'; +export { SDK_INFO } from './sdk-info'; +/** + * @deprecated Use performance directly. + */ +export declare const otperformance: Performance; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/index.js new file mode 100644 index 0000000..d25cb6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/index.js @@ -0,0 +1,32 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.otperformance = exports.SDK_INFO = exports._globalThis = exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = void 0; +var environment_1 = require("./environment"); +Object.defineProperty(exports, "getStringFromEnv", { enumerable: true, get: function () { return environment_1.getStringFromEnv; } }); +Object.defineProperty(exports, "getBooleanFromEnv", { enumerable: true, get: function () { return environment_1.getBooleanFromEnv; } }); +Object.defineProperty(exports, "getNumberFromEnv", { enumerable: true, get: function () { return environment_1.getNumberFromEnv; } }); +Object.defineProperty(exports, "getStringListFromEnv", { enumerable: true, get: function () { return environment_1.getStringListFromEnv; } }); +var globalThis_1 = require("../../common/globalThis"); +Object.defineProperty(exports, "_globalThis", { enumerable: true, get: function () { return globalThis_1._globalThis; } }); +var sdk_info_1 = require("./sdk-info"); +Object.defineProperty(exports, "SDK_INFO", { enumerable: true, get: function () { return sdk_info_1.SDK_INFO; } }); +/** + * @deprecated Use performance directly. + */ +exports.otperformance = performance; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/index.js.map new file mode 100644 index 0000000..c18a956 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6CAKuB;AAJrB,+GAAA,gBAAgB,OAAA;AAChB,gHAAA,iBAAiB,OAAA;AACjB,+GAAA,gBAAgB,OAAA;AAChB,mHAAA,oBAAoB,OAAA;AAEtB,sDAAsD;AAA7C,yGAAA,WAAW,OAAA;AACpB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB;;GAEG;AACU,QAAA,aAAa,GAAG,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport {\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './environment';\nexport { _globalThis } from '../../common/globalThis';\nexport { SDK_INFO } from './sdk-info';\n\n/**\n * @deprecated Use performance directly.\n */\nexport const otperformance = performance;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/sdk-info.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/sdk-info.d.ts new file mode 100644 index 0000000..9245f44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/sdk-info.d.ts @@ -0,0 +1,8 @@ +/** Constants describing the SDK in use */ +export declare const SDK_INFO: { + "telemetry.sdk.name": string; + "process.runtime.name": string; + "telemetry.sdk.language": "webjs"; + "telemetry.sdk.version": string; +}; +//# sourceMappingURL=sdk-info.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/sdk-info.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/sdk-info.js new file mode 100644 index 0000000..959ad6c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/sdk-info.js @@ -0,0 +1,29 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SDK_INFO = void 0; +const version_1 = require("../../version"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("../../semconv"); +/** Constants describing the SDK in use */ +exports.SDK_INFO = { + [semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry', + [semconv_1.ATTR_PROCESS_RUNTIME_NAME]: 'browser', + [semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE]: semantic_conventions_1.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS, + [semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION]: version_1.VERSION, +}; +//# sourceMappingURL=sdk-info.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/sdk-info.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/sdk-info.js.map new file mode 100644 index 0000000..c0f58f9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/browser/sdk-info.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk-info.js","sourceRoot":"","sources":["../../../../src/platform/browser/sdk-info.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2CAAwC;AACxC,8EAK6C;AAC7C,2CAA0D;AAE1D,0CAA0C;AAC7B,QAAA,QAAQ,GAAG;IACtB,CAAC,8CAAuB,CAAC,EAAE,eAAe;IAC1C,CAAC,mCAAyB,CAAC,EAAE,SAAS;IACtC,CAAC,kDAA2B,CAAC,EAAE,yDAAkC;IACjE,CAAC,iDAA0B,CAAC,EAAE,iBAAO;CACtC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { VERSION } from '../../version';\nimport {\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [ATTR_PROCESS_RUNTIME_NAME]: 'browser',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS,\n [ATTR_TELEMETRY_SDK_VERSION]: VERSION,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/index.d.ts new file mode 100644 index 0000000..e8398c0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/index.d.ts @@ -0,0 +1,2 @@ +export { SDK_INFO, _globalThis, otperformance, getBooleanFromEnv, getStringFromEnv, getNumberFromEnv, getStringListFromEnv, } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/index.js new file mode 100644 index 0000000..5e83a05 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/index.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getStringFromEnv = exports.getBooleanFromEnv = exports.otperformance = exports._globalThis = exports.SDK_INFO = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var node_1 = require("./node"); +Object.defineProperty(exports, "SDK_INFO", { enumerable: true, get: function () { return node_1.SDK_INFO; } }); +Object.defineProperty(exports, "_globalThis", { enumerable: true, get: function () { return node_1._globalThis; } }); +Object.defineProperty(exports, "otperformance", { enumerable: true, get: function () { return node_1.otperformance; } }); +Object.defineProperty(exports, "getBooleanFromEnv", { enumerable: true, get: function () { return node_1.getBooleanFromEnv; } }); +Object.defineProperty(exports, "getStringFromEnv", { enumerable: true, get: function () { return node_1.getStringFromEnv; } }); +Object.defineProperty(exports, "getNumberFromEnv", { enumerable: true, get: function () { return node_1.getNumberFromEnv; } }); +Object.defineProperty(exports, "getStringListFromEnv", { enumerable: true, get: function () { return node_1.getStringListFromEnv; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/index.js.map new file mode 100644 index 0000000..dc5dd7a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,+BAQgB;AAPd,gGAAA,QAAQ,OAAA;AACR,mGAAA,WAAW,OAAA;AACX,qGAAA,aAAa,OAAA;AACb,yGAAA,iBAAiB,OAAA;AACjB,wGAAA,gBAAgB,OAAA;AAChB,wGAAA,gBAAgB,OAAA;AAChB,4GAAA,oBAAoB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport {\n SDK_INFO,\n _globalThis,\n otperformance,\n getBooleanFromEnv,\n getStringFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/environment.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/environment.d.ts new file mode 100644 index 0000000..d66635c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/environment.d.ts @@ -0,0 +1,40 @@ +/** + * Retrieves a number from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number. + * - Returns a number in all other cases. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {number | undefined} - The number value or `undefined`. + */ +export declare function getNumberFromEnv(key: string): number | undefined; +/** + * Retrieves a string from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string | undefined} - The string value or `undefined`. + */ +export declare function getStringFromEnv(key: string): string | undefined; +/** + * Retrieves a boolean value from an environment variable. + * - Trims leading and trailing whitespace and ignores casing. + * - Returns `false` if the environment variable is empty, unset, or contains only whitespace. + * - Returns `false` for strings that cannot be mapped to a boolean. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace. + */ +export declare function getBooleanFromEnv(key: string): boolean; +/** + * Retrieves a list of strings from an environment variable. + * - Uses ',' as the delimiter. + * - Trims leading and trailing whitespace from each entry. + * - Excludes empty entries. + * - Returns `undefined` if the environment variable is empty or contains only whitespace. + * - Returns an empty array if all entries are empty or whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string[] | undefined} - The list of strings or `undefined`. + */ +export declare function getStringListFromEnv(key: string): string[] | undefined; +//# sourceMappingURL=environment.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/environment.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/environment.js new file mode 100644 index 0000000..d0268b3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/environment.js @@ -0,0 +1,104 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getStringListFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = exports.getNumberFromEnv = void 0; +const api_1 = require("@opentelemetry/api"); +const util_1 = require("util"); +/** + * Retrieves a number from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number. + * - Returns a number in all other cases. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {number | undefined} - The number value or `undefined`. + */ +function getNumberFromEnv(key) { + const raw = process.env[key]; + if (raw == null || raw.trim() === '') { + return undefined; + } + const value = Number(raw); + if (isNaN(value)) { + api_1.diag.warn(`Unknown value ${(0, util_1.inspect)(raw)} for ${key}, expected a number, using defaults`); + return undefined; + } + return value; +} +exports.getNumberFromEnv = getNumberFromEnv; +/** + * Retrieves a string from an environment variable. + * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string | undefined} - The string value or `undefined`. + */ +function getStringFromEnv(key) { + const raw = process.env[key]; + if (raw == null || raw.trim() === '') { + return undefined; + } + return raw; +} +exports.getStringFromEnv = getStringFromEnv; +/** + * Retrieves a boolean value from an environment variable. + * - Trims leading and trailing whitespace and ignores casing. + * - Returns `false` if the environment variable is empty, unset, or contains only whitespace. + * - Returns `false` for strings that cannot be mapped to a boolean. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace. + */ +function getBooleanFromEnv(key) { + const raw = process.env[key]?.trim().toLowerCase(); + if (raw == null || raw === '') { + // NOTE: falling back to `false` instead of `undefined` as required by the specification. + // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary + // normalizations in the consuming code. + return false; + } + if (raw === 'true') { + return true; + } + else if (raw === 'false') { + return false; + } + else { + api_1.diag.warn(`Unknown value ${(0, util_1.inspect)(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`); + return false; + } +} +exports.getBooleanFromEnv = getBooleanFromEnv; +/** + * Retrieves a list of strings from an environment variable. + * - Uses ',' as the delimiter. + * - Trims leading and trailing whitespace from each entry. + * - Excludes empty entries. + * - Returns `undefined` if the environment variable is empty or contains only whitespace. + * - Returns an empty array if all entries are empty or whitespace. + * + * @param {string} key - The name of the environment variable to retrieve. + * @returns {string[] | undefined} - The list of strings or `undefined`. + */ +function getStringListFromEnv(key) { + return getStringFromEnv(key) + ?.split(',') + .map(v => v.trim()) + .filter(s => s !== ''); +} +exports.getStringListFromEnv = getStringListFromEnv; +//# sourceMappingURL=environment.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/environment.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/environment.js.map new file mode 100644 index 0000000..aa70719 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/environment.js.map @@ -0,0 +1 @@ +{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../src/platform/node/environment.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA0C;AAC1C,+BAA+B;AAE/B;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpC,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;QAChB,UAAI,CAAC,IAAI,CACP,iBAAiB,IAAA,cAAO,EAAC,GAAG,CAAC,QAAQ,GAAG,qCAAqC,CAC9E,CAAC;QACF,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,4CAeC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpC,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAND,4CAMC;AAED;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;QAC7B,yFAAyF;QACzF,mHAAmH;QACnH,wCAAwC;QACxC,OAAO,KAAK,CAAC;KACd;IACD,IAAI,GAAG,KAAK,MAAM,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,GAAG,KAAK,OAAO,EAAE;QAC1B,OAAO,KAAK,CAAC;KACd;SAAM;QACL,UAAI,CAAC,IAAI,CACP,iBAAiB,IAAA,cAAO,EAAC,GAAG,CAAC,QAAQ,GAAG,iEAAiE,CAC1G,CAAC;QACF,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAlBD,8CAkBC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,OAAO,gBAAgB,CAAC,GAAG,CAAC;QAC1B,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3B,CAAC;AALD,oDAKC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\nimport { inspect } from 'util';\n\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 */\nexport function getNumberFromEnv(key: string): number | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n\n const value = Number(raw);\n if (isNaN(value)) {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected a number, using defaults`\n );\n return undefined;\n }\n\n return value;\n}\n\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 */\nexport function getStringFromEnv(key: string): string | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n return raw;\n}\n\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 */\nexport function getBooleanFromEnv(key: string): boolean {\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 } else if (raw === 'false') {\n return false;\n } else {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`\n );\n return false;\n }\n}\n\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 */\nexport function getStringListFromEnv(key: string): string[] | undefined {\n return getStringFromEnv(key)\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/index.d.ts new file mode 100644 index 0000000..594416c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/index.d.ts @@ -0,0 +1,11 @@ +export { getStringFromEnv, getBooleanFromEnv, getNumberFromEnv, getStringListFromEnv, } from './environment'; +export { _globalThis } from '../../common/globalThis'; +export { SDK_INFO } from './sdk-info'; +/** + * @deprecated Use performance directly. + */ +export declare const otperformance: { + now(): number; + readonly timeOrigin: number; +}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/index.js new file mode 100644 index 0000000..d25cb6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/index.js @@ -0,0 +1,32 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.otperformance = exports.SDK_INFO = exports._globalThis = exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = void 0; +var environment_1 = require("./environment"); +Object.defineProperty(exports, "getStringFromEnv", { enumerable: true, get: function () { return environment_1.getStringFromEnv; } }); +Object.defineProperty(exports, "getBooleanFromEnv", { enumerable: true, get: function () { return environment_1.getBooleanFromEnv; } }); +Object.defineProperty(exports, "getNumberFromEnv", { enumerable: true, get: function () { return environment_1.getNumberFromEnv; } }); +Object.defineProperty(exports, "getStringListFromEnv", { enumerable: true, get: function () { return environment_1.getStringListFromEnv; } }); +var globalThis_1 = require("../../common/globalThis"); +Object.defineProperty(exports, "_globalThis", { enumerable: true, get: function () { return globalThis_1._globalThis; } }); +var sdk_info_1 = require("./sdk-info"); +Object.defineProperty(exports, "SDK_INFO", { enumerable: true, get: function () { return sdk_info_1.SDK_INFO; } }); +/** + * @deprecated Use performance directly. + */ +exports.otperformance = performance; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/index.js.map new file mode 100644 index 0000000..6c38d3d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6CAKuB;AAJrB,+GAAA,gBAAgB,OAAA;AAChB,gHAAA,iBAAiB,OAAA;AACjB,+GAAA,gBAAgB,OAAA;AAChB,mHAAA,oBAAoB,OAAA;AAEtB,sDAAsD;AAA7C,yGAAA,WAAW,OAAA;AACpB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB;;GAEG;AACU,QAAA,aAAa,GACxB,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport {\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './environment';\nexport { _globalThis } from '../../common/globalThis';\nexport { SDK_INFO } from './sdk-info';\n\n/**\n * @deprecated Use performance directly.\n */\nexport const otperformance: { now(): number; readonly timeOrigin: number } =\n performance;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.d.ts new file mode 100644 index 0000000..9627ce2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.d.ts @@ -0,0 +1,8 @@ +/** Constants describing the SDK in use */ +export declare const SDK_INFO: { + "telemetry.sdk.name": string; + "process.runtime.name": string; + "telemetry.sdk.language": "nodejs"; + "telemetry.sdk.version": string; +}; +//# sourceMappingURL=sdk-info.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js new file mode 100644 index 0000000..357c266 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js @@ -0,0 +1,29 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SDK_INFO = void 0; +const version_1 = require("../../version"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("../../semconv"); +/** Constants describing the SDK in use */ +exports.SDK_INFO = { + [semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry', + [semconv_1.ATTR_PROCESS_RUNTIME_NAME]: 'node', + [semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE]: semantic_conventions_1.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS, + [semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION]: version_1.VERSION, +}; +//# sourceMappingURL=sdk-info.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js.map new file mode 100644 index 0000000..b7783f2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk-info.js","sourceRoot":"","sources":["../../../../src/platform/node/sdk-info.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2CAAwC;AACxC,8EAK6C;AAC7C,2CAA0D;AAE1D,0CAA0C;AAC7B,QAAA,QAAQ,GAAG;IACtB,CAAC,8CAAuB,CAAC,EAAE,eAAe;IAC1C,CAAC,mCAAyB,CAAC,EAAE,MAAM;IACnC,CAAC,kDAA2B,CAAC,EAAE,0DAAmC;IAClE,CAAC,iDAA0B,CAAC,EAAE,iBAAO;CACtC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { VERSION } from '../../version';\nimport {\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [ATTR_PROCESS_RUNTIME_NAME]: 'node',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n [ATTR_TELEMETRY_SDK_VERSION]: VERSION,\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/propagation/composite.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/propagation/composite.d.ts new file mode 100644 index 0000000..70eb01f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/propagation/composite.d.ts @@ -0,0 +1,43 @@ +import { Context, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api'; +/** Configuration object for composite propagator */ +export interface CompositePropagatorConfig { + /** + * List of propagators to run. Propagators run in the + * list order. If a propagator later in the list writes the same context + * key as a propagator earlier in the list, the later on will "win". + */ + propagators?: TextMapPropagator[]; +} +/** Combines multiple propagators into a single propagator. */ +export declare class CompositePropagator implements TextMapPropagator { + private readonly _propagators; + private readonly _fields; + /** + * Construct a composite propagator from a list of propagators. + * + * @param [config] Configuration object for composite propagator + */ + constructor(config?: CompositePropagatorConfig); + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same carrier key, the propagator later in the list + * will "win". + * + * @param context Context to inject + * @param carrier Carrier into which context will be injected + */ + inject(context: Context, carrier: unknown, setter: TextMapSetter): void; + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same context key, the propagator later in the list + * will "win". + * + * @param context Context to add values to + * @param carrier Carrier from which to extract context + */ + extract(context: Context, carrier: unknown, getter: TextMapGetter): Context; + fields(): string[]; +} +//# sourceMappingURL=composite.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/propagation/composite.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/propagation/composite.js new file mode 100644 index 0000000..c45d777 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/propagation/composite.js @@ -0,0 +1,81 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CompositePropagator = void 0; +const api_1 = require("@opentelemetry/api"); +/** Combines multiple propagators into a single propagator. */ +class CompositePropagator { + _propagators; + _fields; + /** + * Construct a composite propagator from a list of propagators. + * + * @param [config] Configuration object for composite propagator + */ + constructor(config = {}) { + this._propagators = config.propagators ?? []; + this._fields = Array.from(new Set(this._propagators + // older propagators may not have fields function, null check to be sure + .map(p => (typeof p.fields === 'function' ? p.fields() : [])) + .reduce((x, y) => x.concat(y), []))); + } + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same carrier key, the propagator later in the list + * will "win". + * + * @param context Context to inject + * @param carrier Carrier into which context will be injected + */ + inject(context, carrier, setter) { + for (const propagator of this._propagators) { + try { + propagator.inject(context, carrier, setter); + } + catch (err) { + api_1.diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`); + } + } + } + /** + * Run each of the configured propagators with the given context and carrier. + * Propagators are run in the order they are configured, so if multiple + * propagators write the same context key, the propagator later in the list + * will "win". + * + * @param context Context to add values to + * @param carrier Carrier from which to extract context + */ + extract(context, carrier, getter) { + return this._propagators.reduce((ctx, propagator) => { + try { + return propagator.extract(ctx, carrier, getter); + } + catch (err) { + api_1.diag.warn(`Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`); + } + return ctx; + }, context); + } + fields() { + // return a new array so our fields cannot be modified + return this._fields.slice(); + } +} +exports.CompositePropagator = CompositePropagator; +//# sourceMappingURL=composite.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/propagation/composite.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/propagation/composite.js.map new file mode 100644 index 0000000..d6e277a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/propagation/composite.js.map @@ -0,0 +1 @@ +{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../../src/propagation/composite.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAM4B;AAY5B,8DAA8D;AAC9D,MAAa,mBAAmB;IACb,YAAY,CAAsB;IAClC,OAAO,CAAW;IAEnC;;;;OAIG;IACH,YAAY,SAAoC,EAAE;QAChD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAE7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CACvB,IAAI,GAAG,CACL,IAAI,CAAC,YAAY;YACf,wEAAwE;aACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACrC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC9D,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;YAC1C,IAAI;gBACF,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aAC7C;YAAC,OAAO,GAAG,EAAE;gBACZ,UAAI,CAAC,IAAI,CACP,yBAAyB,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,GAAG,CAAC,OAAO,EAAE,CAC5E,CAAC;aACH;SACF;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC/D,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YAClD,IAAI;gBACF,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aACjD;YAAC,OAAO,GAAG,EAAE;gBACZ,UAAI,CAAC,IAAI,CACP,0BAA0B,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,GAAG,CAAC,OAAO,EAAE,CAC7E,CAAC;aACH;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QACJ,sDAAsD;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF;AArED,kDAqEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n TextMapGetter,\n TextMapPropagator,\n diag,\n TextMapSetter,\n} from '@opentelemetry/api';\n\n/** Configuration object for composite propagator */\nexport interface CompositePropagatorConfig {\n /**\n * List of propagators to run. Propagators run in the\n * list order. If a propagator later in the list writes the same context\n * key as a propagator earlier in the list, the later on will \"win\".\n */\n propagators?: TextMapPropagator[];\n}\n\n/** Combines multiple propagators into a single propagator. */\nexport class CompositePropagator implements TextMapPropagator {\n private readonly _propagators: TextMapPropagator[];\n private readonly _fields: string[];\n\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config: CompositePropagatorConfig = {}) {\n this._propagators = config.propagators ?? [];\n\n this._fields = Array.from(\n new Set(\n 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 }\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: Context, carrier: unknown, setter: TextMapSetter): void {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n } catch (err) {\n diag.warn(\n `Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\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: Context, carrier: unknown, getter: TextMapGetter): Context {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n } catch (err) {\n diag.warn(\n `Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\n return ctx;\n }, context);\n }\n\n fields(): string[] {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/semconv.d.ts new file mode 100644 index 0000000..5d4bf7e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/semconv.d.ts @@ -0,0 +1,9 @@ +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_NAME: "process.runtime.name"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/semconv.js new file mode 100644 index 0000000..2cd8cea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/semconv.js @@ -0,0 +1,32 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ATTR_PROCESS_RUNTIME_NAME = void 0; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/semconv.js.map new file mode 100644 index 0000000..6c0adc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/TraceState.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/TraceState.d.ts new file mode 100644 index 0000000..31b9c78 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/TraceState.d.ts @@ -0,0 +1,22 @@ +import * as api from '@opentelemetry/api'; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +export declare class TraceState implements api.TraceState { + private _internalState; + constructor(rawTraceState?: string); + set(key: string, value: string): TraceState; + unset(key: string): TraceState; + get(key: string): string | undefined; + serialize(): string; + private _parse; + private _keys; + private _clone; +} +//# sourceMappingURL=TraceState.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/TraceState.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/TraceState.js new file mode 100644 index 0000000..6fdfa5e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/TraceState.js @@ -0,0 +1,103 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TraceState = void 0; +const validators_1 = require("../internal/validators"); +const MAX_TRACE_STATE_ITEMS = 32; +const MAX_TRACE_STATE_LEN = 512; +const LIST_MEMBERS_SEPARATOR = ','; +const LIST_MEMBER_KEY_VALUE_SPLITTER = '='; +/** + * TraceState must be a class and not a simple object type because of the spec + * requirement (https://www.w3.org/TR/trace-context/#tracestate-field). + * + * Here is the list of allowed mutations: + * - New key-value pair should be added into the beginning of the list + * - The value of any key can be updated. Modified keys MUST be moved to the + * beginning of the list. + */ +class TraceState { + _internalState = new Map(); + constructor(rawTraceState) { + if (rawTraceState) + this._parse(rawTraceState); + } + set(key, value) { + // TODO: Benchmark the different approaches(map vs list) and + // use the faster one. + const traceState = this._clone(); + if (traceState._internalState.has(key)) { + traceState._internalState.delete(key); + } + traceState._internalState.set(key, value); + return traceState; + } + unset(key) { + const traceState = this._clone(); + traceState._internalState.delete(key); + return traceState; + } + get(key) { + return this._internalState.get(key); + } + serialize() { + return this._keys() + .reduce((agg, key) => { + agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key)); + return agg; + }, []) + .join(LIST_MEMBERS_SEPARATOR); + } + _parse(rawTraceState) { + if (rawTraceState.length > MAX_TRACE_STATE_LEN) + return; + this._internalState = rawTraceState + .split(LIST_MEMBERS_SEPARATOR) + .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning + .reduce((agg, part) => { + const listMember = part.trim(); // Optional Whitespace (OWS) handling + const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER); + if (i !== -1) { + const key = listMember.slice(0, i); + const value = listMember.slice(i + 1, part.length); + if ((0, validators_1.validateKey)(key) && (0, validators_1.validateValue)(value)) { + agg.set(key, value); + } + else { + // TODO: Consider to add warning log + } + } + return agg; + }, new Map()); + // Because of the reverse() requirement, trunc must be done after map is created + if (this._internalState.size > MAX_TRACE_STATE_ITEMS) { + this._internalState = new Map(Array.from(this._internalState.entries()) + .reverse() // Use reverse same as original tracestate parse chain + .slice(0, MAX_TRACE_STATE_ITEMS)); + } + } + _keys() { + return Array.from(this._internalState.keys()).reverse(); + } + _clone() { + const traceState = new TraceState(); + traceState._internalState = new Map(this._internalState); + return traceState; + } +} +exports.TraceState = TraceState; +//# sourceMappingURL=TraceState.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/TraceState.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/TraceState.js.map new file mode 100644 index 0000000..93e3c40 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/TraceState.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TraceState.js","sourceRoot":"","sources":["../../../src/trace/TraceState.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport { validateKey, validateValue } from '../internal/validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\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 */\nexport class TraceState implements api.TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceState {\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\n unset(key: string): TraceState {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return this._keys()\n .reduce((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) 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: Map, part: string) => {\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 (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\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(\n 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 }\n\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceState {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.d.ts new file mode 100644 index 0000000..1760e95 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.d.ts @@ -0,0 +1,26 @@ +import { Context, SpanContext, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api'; +export declare const TRACE_PARENT_HEADER = "traceparent"; +export declare const TRACE_STATE_HEADER = "tracestate"; +/** + * Parses information from the [traceparent] span tag and converts it into {@link SpanContext} + * @param traceParent - A meta property that comes from server. + * It should be dynamically generated server side to have the server's request trace Id, + * a parent span Id that was set on the server's request span, + * and the trace flags to indicate the server's sampling decision + * (01 = sampled, 00 = not sampled). + * for example: '{version}-{traceId}-{spanId}-{sampleDecision}' + * For more information see {@link https://www.w3.org/TR/trace-context/} + */ +export declare function parseTraceParent(traceParent: string): SpanContext | null; +/** + * Propagates {@link SpanContext} through Trace Context format propagation. + * + * Based on the Trace Context specification: + * https://www.w3.org/TR/trace-context/ + */ +export declare class W3CTraceContextPropagator implements TextMapPropagator { + inject(context: Context, carrier: unknown, setter: TextMapSetter): void; + extract(context: Context, carrier: unknown, getter: TextMapGetter): Context; + fields(): string[]; +} +//# sourceMappingURL=W3CTraceContextPropagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js new file mode 100644 index 0000000..8683212 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js @@ -0,0 +1,104 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.W3CTraceContextPropagator = exports.parseTraceParent = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = void 0; +const api_1 = require("@opentelemetry/api"); +const suppress_tracing_1 = require("./suppress-tracing"); +const TraceState_1 = require("./TraceState"); +exports.TRACE_PARENT_HEADER = 'traceparent'; +exports.TRACE_STATE_HEADER = 'tracestate'; +const VERSION = '00'; +const VERSION_PART = '(?!ff)[\\da-f]{2}'; +const TRACE_ID_PART = '(?![0]{32})[\\da-f]{32}'; +const PARENT_ID_PART = '(?![0]{16})[\\da-f]{16}'; +const FLAGS_PART = '[\\da-f]{2}'; +const TRACE_PARENT_REGEX = new RegExp(`^\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\s?$`); +/** + * Parses information from the [traceparent] span tag and converts it into {@link SpanContext} + * @param traceParent - A meta property that comes from server. + * It should be dynamically generated server side to have the server's request trace Id, + * a parent span Id that was set on the server's request span, + * and the trace flags to indicate the server's sampling decision + * (01 = sampled, 00 = not sampled). + * for example: '{version}-{traceId}-{spanId}-{sampleDecision}' + * For more information see {@link https://www.w3.org/TR/trace-context/} + */ +function parseTraceParent(traceParent) { + const match = TRACE_PARENT_REGEX.exec(traceParent); + if (!match) + return null; + // According to the specification the implementation should be compatible + // with future versions. If there are more parts, we only reject it if it's using version 00 + // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent + if (match[1] === '00' && match[5]) + return null; + return { + traceId: match[2], + spanId: match[3], + traceFlags: parseInt(match[4], 16), + }; +} +exports.parseTraceParent = parseTraceParent; +/** + * Propagates {@link SpanContext} through Trace Context format propagation. + * + * Based on the Trace Context specification: + * https://www.w3.org/TR/trace-context/ + */ +class W3CTraceContextPropagator { + inject(context, carrier, setter) { + const spanContext = api_1.trace.getSpanContext(context); + if (!spanContext || + (0, suppress_tracing_1.isTracingSuppressed)(context) || + !(0, api_1.isSpanContextValid)(spanContext)) + return; + const traceParent = `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-0${Number(spanContext.traceFlags || api_1.TraceFlags.NONE).toString(16)}`; + setter.set(carrier, exports.TRACE_PARENT_HEADER, traceParent); + if (spanContext.traceState) { + setter.set(carrier, exports.TRACE_STATE_HEADER, spanContext.traceState.serialize()); + } + } + extract(context, carrier, getter) { + const traceParentHeader = getter.get(carrier, exports.TRACE_PARENT_HEADER); + if (!traceParentHeader) + return context; + const traceParent = Array.isArray(traceParentHeader) + ? traceParentHeader[0] + : traceParentHeader; + if (typeof traceParent !== 'string') + return context; + const spanContext = parseTraceParent(traceParent); + if (!spanContext) + return context; + spanContext.isRemote = true; + const traceStateHeader = getter.get(carrier, exports.TRACE_STATE_HEADER); + if (traceStateHeader) { + // If more than one `tracestate` header is found, we merge them into a + // single header. + const state = Array.isArray(traceStateHeader) + ? traceStateHeader.join(',') + : traceStateHeader; + spanContext.traceState = new TraceState_1.TraceState(typeof state === 'string' ? state : undefined); + } + return api_1.trace.setSpanContext(context, spanContext); + } + fields() { + return [exports.TRACE_PARENT_HEADER, exports.TRACE_STATE_HEADER]; + } +} +exports.W3CTraceContextPropagator = W3CTraceContextPropagator; +//# sourceMappingURL=W3CTraceContextPropagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js.map new file mode 100644 index 0000000..c316844 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"W3CTraceContextPropagator.js","sourceRoot":"","sources":["../../../src/trace/W3CTraceContextPropagator.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n isSpanContextValid,\n SpanContext,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n trace,\n TraceFlags,\n} from '@opentelemetry/api';\nimport { isTracingSuppressed } from './suppress-tracing';\nimport { TraceState } from './TraceState';\n\nexport const TRACE_PARENT_HEADER = 'traceparent';\nexport const TRACE_STATE_HEADER = 'tracestate';\n\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(\n `^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`\n);\n\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 */\nexport function parseTraceParent(traceParent: string): SpanContext | null {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match) return null;\n\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]) return null;\n\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\n\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 */\nexport class W3CTraceContextPropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const spanContext = trace.getSpanContext(context);\n if (\n !spanContext ||\n isTracingSuppressed(context) ||\n !isSpanContextValid(spanContext)\n )\n return;\n\n const traceParent = `${VERSION}-${spanContext.traceId}-${\n spanContext.spanId\n }-0${Number(spanContext.traceFlags || TraceFlags.NONE).toString(16)}`;\n\n setter.set(carrier, TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(\n carrier,\n TRACE_STATE_HEADER,\n spanContext.traceState.serialize()\n );\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER);\n if (!traceParentHeader) return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string') return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext) return context;\n\n spanContext.isRemote = true;\n\n const traceStateHeader = getter.get(carrier, 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(\n typeof state === 'string' ? state : undefined\n );\n }\n return trace.setSpanContext(context, spanContext);\n }\n\n fields(): string[] {\n return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.d.ts new file mode 100644 index 0000000..3a0808b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.d.ts @@ -0,0 +1,18 @@ +import { Context, Span } from '@opentelemetry/api'; +export declare enum RPCType { + HTTP = "http" +} +type HTTPMetadata = { + type: RPCType.HTTP; + route?: string; + span: Span; +}; +/** + * Allows for future rpc metadata to be used with this mechanism + */ +export type RPCMetadata = HTTPMetadata; +export declare function setRPCMetadata(context: Context, meta: RPCMetadata): Context; +export declare function deleteRPCMetadata(context: Context): Context; +export declare function getRPCMetadata(context: Context): RPCMetadata | undefined; +export {}; +//# sourceMappingURL=rpc-metadata.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js new file mode 100644 index 0000000..48de80c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js @@ -0,0 +1,37 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRPCMetadata = exports.deleteRPCMetadata = exports.setRPCMetadata = exports.RPCType = void 0; +const api_1 = require("@opentelemetry/api"); +const RPC_METADATA_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key RPC_METADATA'); +var RPCType; +(function (RPCType) { + RPCType["HTTP"] = "http"; +})(RPCType = exports.RPCType || (exports.RPCType = {})); +function setRPCMetadata(context, meta) { + return context.setValue(RPC_METADATA_KEY, meta); +} +exports.setRPCMetadata = setRPCMetadata; +function deleteRPCMetadata(context) { + return context.deleteValue(RPC_METADATA_KEY); +} +exports.deleteRPCMetadata = deleteRPCMetadata; +function getRPCMetadata(context) { + return context.getValue(RPC_METADATA_KEY); +} +exports.getRPCMetadata = getRPCMetadata; +//# sourceMappingURL=rpc-metadata.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js.map new file mode 100644 index 0000000..1a55eed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rpc-metadata.js","sourceRoot":"","sources":["../../../src/trace/rpc-metadata.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAqE;AAErE,MAAM,gBAAgB,GAAG,IAAA,sBAAgB,EACvC,4CAA4C,CAC7C,CAAC;AAEF,IAAY,OAEX;AAFD,WAAY,OAAO;IACjB,wBAAa,CAAA;AACf,CAAC,EAFW,OAAO,GAAP,eAAO,KAAP,eAAO,QAElB;AAaD,SAAgB,cAAc,CAAC,OAAgB,EAAE,IAAiB;IAChE,OAAO,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAFD,wCAEC;AAED,SAAgB,iBAAiB,CAAC,OAAgB;IAChD,OAAO,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAFD,8CAEC;AAED,SAAgB,cAAc,CAAC,OAAgB;IAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4B,CAAC;AACvE,CAAC;AAFD,wCAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, createContextKey, Span } from '@opentelemetry/api';\n\nconst RPC_METADATA_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key RPC_METADATA'\n);\n\nexport enum RPCType {\n HTTP = 'http',\n}\n\ntype HTTPMetadata = {\n type: RPCType.HTTP;\n route?: string;\n span: Span;\n};\n\n/**\n * Allows for future rpc metadata to be used with this mechanism\n */\nexport type RPCMetadata = HTTPMetadata;\n\nexport function setRPCMetadata(context: Context, meta: RPCMetadata): Context {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\n\nexport function deleteRPCMetadata(context: Context): Context {\n return context.deleteValue(RPC_METADATA_KEY);\n}\n\nexport function getRPCMetadata(context: Context): RPCMetadata | undefined {\n return context.getValue(RPC_METADATA_KEY) as RPCMetadata | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.d.ts new file mode 100644 index 0000000..a2ac4cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.d.ts @@ -0,0 +1,5 @@ +import { Context } from '@opentelemetry/api'; +export declare function suppressTracing(context: Context): Context; +export declare function unsuppressTracing(context: Context): Context; +export declare function isTracingSuppressed(context: Context): boolean; +//# sourceMappingURL=suppress-tracing.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js new file mode 100644 index 0000000..be8931d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js @@ -0,0 +1,33 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isTracingSuppressed = exports.unsuppressTracing = exports.suppressTracing = void 0; +const api_1 = require("@opentelemetry/api"); +const SUPPRESS_TRACING_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key SUPPRESS_TRACING'); +function suppressTracing(context) { + return context.setValue(SUPPRESS_TRACING_KEY, true); +} +exports.suppressTracing = suppressTracing; +function unsuppressTracing(context) { + return context.deleteValue(SUPPRESS_TRACING_KEY); +} +exports.unsuppressTracing = unsuppressTracing; +function isTracingSuppressed(context) { + return context.getValue(SUPPRESS_TRACING_KEY) === true; +} +exports.isTracingSuppressed = isTracingSuppressed; +//# sourceMappingURL=suppress-tracing.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js.map new file mode 100644 index 0000000..8e5efca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js.map @@ -0,0 +1 @@ +{"version":3,"file":"suppress-tracing.js","sourceRoot":"","sources":["../../../src/trace/suppress-tracing.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA+D;AAE/D,MAAM,oBAAoB,GAAG,IAAA,sBAAgB,EAC3C,gDAAgD,CACjD,CAAC;AAEF,SAAgB,eAAe,CAAC,OAAgB;IAC9C,OAAO,OAAO,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAFD,0CAEC;AAED,SAAgB,iBAAiB,CAAC,OAAgB;IAChD,OAAO,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;AACnD,CAAC;AAFD,8CAEC;AAED,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,OAAO,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;AACzD,CAAC;AAFD,kDAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, createContextKey } from '@opentelemetry/api';\n\nconst SUPPRESS_TRACING_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key SUPPRESS_TRACING'\n);\n\nexport function suppressTracing(context: Context): Context {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\n\nexport function unsuppressTracing(context: Context): Context {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\n\nexport function isTracingSuppressed(context: Context): boolean {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/callback.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/callback.d.ts new file mode 100644 index 0000000..1f030f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/callback.d.ts @@ -0,0 +1,14 @@ +/** + * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked. + */ +export declare class BindOnceFuture R = () => R> { + private _isCalled; + private _deferred; + private _callback; + private _that; + constructor(callback: T, that: This); + get isCalled(): boolean; + get promise(): Promise; + call(...args: Parameters): Promise; +} +//# sourceMappingURL=callback.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/callback.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/callback.js new file mode 100644 index 0000000..076e192 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/callback.js @@ -0,0 +1,52 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BindOnceFuture = void 0; +const promise_1 = require("./promise"); +/** + * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked. + */ +class BindOnceFuture { + _isCalled = false; + _deferred = new promise_1.Deferred(); + _callback; + _that; + constructor(callback, that) { + this._callback = callback; + this._that = that; + } + get isCalled() { + return this._isCalled; + } + get promise() { + return this._deferred.promise; + } + call(...args) { + if (!this._isCalled) { + this._isCalled = true; + try { + Promise.resolve(this._callback.call(this._that, ...args)).then(val => this._deferred.resolve(val), err => this._deferred.reject(err)); + } + catch (err) { + this._deferred.reject(err); + } + } + return this._deferred.promise; + } +} +exports.BindOnceFuture = BindOnceFuture; +//# sourceMappingURL=callback.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/callback.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/callback.js.map new file mode 100644 index 0000000..6a8628e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/callback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"callback.js","sourceRoot":"","sources":["../../../src/utils/callback.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,uCAAqC;AAErC;;GAEG;AACH,MAAa,cAAc;IAKjB,SAAS,GAAG,KAAK,CAAC;IAClB,SAAS,GAAG,IAAI,kBAAQ,EAAK,CAAC;IAC9B,SAAS,CAAI;IACb,KAAK,CAAO;IAEpB,YAAY,QAAW,EAAE,IAAU;QACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,GAAG,IAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI;gBACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAC5D,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAClC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAClC,CAAC;aACH;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC5B;SACF;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;CACF;AArCD,wCAqCC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Deferred } from './promise';\n\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nexport class BindOnceFuture<\n R,\n This = unknown,\n T extends (this: This, ...args: unknown[]) => R = () => R,\n> {\n private _isCalled = false;\n private _deferred = new Deferred();\n private _callback: T;\n private _that: This;\n\n constructor(callback: T, that: This) {\n this._callback = callback;\n this._that = that;\n }\n\n get isCalled() {\n return this._isCalled;\n }\n\n get promise() {\n return this._deferred.promise;\n }\n\n call(...args: Parameters): Promise {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(\n val => this._deferred.resolve(val),\n err => this._deferred.reject(err)\n );\n } catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/configuration.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/configuration.d.ts new file mode 100644 index 0000000..347bdfc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/configuration.d.ts @@ -0,0 +1,7 @@ +import { DiagLogLevel } from '@opentelemetry/api'; +/** + * 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. + * @param value + */ +export declare function diagLogLevelFromString(value: string | undefined): DiagLogLevel | undefined; +//# sourceMappingURL=configuration.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/configuration.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/configuration.js new file mode 100644 index 0000000..64ea67e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/configuration.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.diagLogLevelFromString = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const api_1 = require("@opentelemetry/api"); +const logLevelMap = { + ALL: api_1.DiagLogLevel.ALL, + VERBOSE: api_1.DiagLogLevel.VERBOSE, + DEBUG: api_1.DiagLogLevel.DEBUG, + INFO: api_1.DiagLogLevel.INFO, + WARN: api_1.DiagLogLevel.WARN, + ERROR: api_1.DiagLogLevel.ERROR, + NONE: api_1.DiagLogLevel.NONE, +}; +/** + * 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. + * @param value + */ +function diagLogLevelFromString(value) { + if (value == null) { + // 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) + return undefined; + } + const resolvedLogLevel = logLevelMap[value.toUpperCase()]; + if (resolvedLogLevel == null) { + api_1.diag.warn(`Unknown log level "${value}", expected one of ${Object.keys(logLevelMap)}, using default`); + return api_1.DiagLogLevel.INFO; + } + return resolvedLogLevel; +} +exports.diagLogLevelFromString = diagLogLevelFromString; +//# sourceMappingURL=configuration.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/configuration.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/configuration.js.map new file mode 100644 index 0000000..79c68c6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/configuration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../src/utils/configuration.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,4CAAwD;AAExD,MAAM,WAAW,GAAoC;IACnD,GAAG,EAAE,kBAAY,CAAC,GAAG;IACrB,OAAO,EAAE,kBAAY,CAAC,OAAO;IAC7B,KAAK,EAAE,kBAAY,CAAC,KAAK;IACzB,IAAI,EAAE,kBAAY,CAAC,IAAI;IACvB,IAAI,EAAE,kBAAY,CAAC,IAAI;IACvB,KAAK,EAAE,kBAAY,CAAC,KAAK;IACzB,IAAI,EAAE,kBAAY,CAAC,IAAI;CACxB,CAAC;AAEF;;;GAGG;AACH,SAAgB,sBAAsB,CACpC,KAAyB;IAEzB,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,yIAAyI;QACzI,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAE1D,IAAI,gBAAgB,IAAI,IAAI,EAAE;QAC5B,UAAI,CAAC,IAAI,CACP,sBAAsB,KAAK,sBAAsB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAC3F,CAAC;QACF,OAAO,kBAAY,CAAC,IAAI,CAAC;KAC1B;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAlBD,wDAkBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag, DiagLogLevel } from '@opentelemetry/api';\n\nconst logLevelMap: { [key: string]: DiagLogLevel } = {\n ALL: DiagLogLevel.ALL,\n VERBOSE: DiagLogLevel.VERBOSE,\n DEBUG: DiagLogLevel.DEBUG,\n INFO: DiagLogLevel.INFO,\n WARN: DiagLogLevel.WARN,\n ERROR: DiagLogLevel.ERROR,\n NONE: DiagLogLevel.NONE,\n};\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 */\nexport function diagLogLevelFromString(\n value: string | undefined\n): DiagLogLevel | undefined {\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\n const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n\n if (resolvedLogLevel == null) {\n diag.warn(\n `Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`\n );\n return DiagLogLevel.INFO;\n }\n\n return resolvedLogLevel;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.d.ts new file mode 100644 index 0000000..aebf18b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.d.ts @@ -0,0 +1,30 @@ +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +export declare function isPlainObject(value: any): boolean; +//# sourceMappingURL=lodash.merge.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js new file mode 100644 index 0000000..9e53195 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js @@ -0,0 +1,157 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isPlainObject = void 0; +/* eslint-disable @typescript-eslint/no-explicit-any */ +/** + * based on lodash in order to support esm builds without esModuleInterop. + * lodash is using MIT License. + **/ +const objectTag = '[object Object]'; +const nullTag = '[object Null]'; +const undefinedTag = '[object Undefined]'; +const funcProto = Function.prototype; +const funcToString = funcProto.toString; +const objectCtorString = funcToString.call(Object); +const getPrototypeOf = Object.getPrototypeOf; +const objectProto = Object.prototype; +const hasOwnProperty = objectProto.hasOwnProperty; +const symToStringTag = Symbol ? Symbol.toStringTag : undefined; +const nativeObjectToString = objectProto.toString; +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) !== objectTag) { + return false; + } + const proto = getPrototypeOf(value); + if (proto === null) { + return true; + } + const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return (typeof Ctor == 'function' && + Ctor instanceof Ctor && + funcToString.call(Ctor) === objectCtorString); +} +exports.isPlainObject = isPlainObject; +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return symToStringTag && symToStringTag in Object(value) + ? getRawTag(value) + : objectToString(value); +} +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + const isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; + let unmasked = false; + try { + value[symToStringTag] = undefined; + unmasked = true; + } + catch { + // silence + } + const result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } + else { + delete value[symToStringTag]; + } + } + return result; +} +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} +//# sourceMappingURL=lodash.merge.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js.map new file mode 100644 index 0000000..9a78fb8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lodash.merge.js","sourceRoot":"","sources":["../../../src/utils/lodash.merge.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\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/**\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 */\nexport function isPlainObject(value: any) {\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 (\n typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString\n );\n}\n\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: any) {\n return value != null && typeof value == 'object';\n}\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: any) {\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/**\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: any) {\n const isOwn = hasOwnProperty.call(value, symToStringTag as any),\n tag = value[symToStringTag as any];\n let unmasked = false;\n\n try {\n value[symToStringTag as any] = undefined;\n unmasked = true;\n } catch {\n // silence\n }\n\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag as any] = tag;\n } else {\n delete value[symToStringTag as any];\n }\n }\n return result;\n}\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: any) {\n return nativeObjectToString.call(value);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/merge.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/merge.d.ts new file mode 100644 index 0000000..fda0f9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/merge.d.ts @@ -0,0 +1,6 @@ +/** + * Merges objects together + * @param args - objects / values to be merged + */ +export declare function merge(...args: any[]): any; +//# sourceMappingURL=merge.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/merge.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/merge.js new file mode 100644 index 0000000..d821c71 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/merge.js @@ -0,0 +1,162 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.merge = void 0; +/* eslint-disable @typescript-eslint/no-explicit-any */ +const lodash_merge_1 = require("./lodash.merge"); +const MAX_LEVEL = 20; +/** + * Merges objects together + * @param args - objects / values to be merged + */ +function merge(...args) { + let result = args.shift(); + const objects = new WeakMap(); + while (args.length > 0) { + result = mergeTwoObjects(result, args.shift(), 0, objects); + } + return result; +} +exports.merge = merge; +function takeValue(value) { + if (isArray(value)) { + return value.slice(); + } + return value; +} +/** + * Merges two objects + * @param one - first object + * @param two - second object + * @param level - current deep level + * @param objects - objects holder that has been already referenced - to prevent + * cyclic dependency + */ +function mergeTwoObjects(one, two, level = 0, objects) { + let result; + if (level > MAX_LEVEL) { + return undefined; + } + level++; + if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) { + result = takeValue(two); + } + else if (isArray(one)) { + result = one.slice(); + if (isArray(two)) { + for (let i = 0, j = two.length; i < j; i++) { + result.push(takeValue(two[i])); + } + } + else if (isObject(two)) { + const keys = Object.keys(two); + for (let i = 0, j = keys.length; i < j; i++) { + const key = keys[i]; + result[key] = takeValue(two[key]); + } + } + } + else if (isObject(one)) { + if (isObject(two)) { + if (!shouldMerge(one, two)) { + return two; + } + result = Object.assign({}, one); + const keys = Object.keys(two); + for (let i = 0, j = keys.length; i < j; i++) { + const key = keys[i]; + const twoValue = two[key]; + if (isPrimitive(twoValue)) { + if (typeof twoValue === 'undefined') { + delete result[key]; + } + else { + // result[key] = takeValue(twoValue); + result[key] = twoValue; + } + } + else { + const obj1 = result[key]; + const obj2 = twoValue; + if (wasObjectReferenced(one, key, objects) || + wasObjectReferenced(two, key, objects)) { + delete result[key]; + } + else { + if (isObject(obj1) && isObject(obj2)) { + const arr1 = objects.get(obj1) || []; + const arr2 = objects.get(obj2) || []; + arr1.push({ obj: one, key }); + arr2.push({ obj: two, key }); + objects.set(obj1, arr1); + objects.set(obj2, arr2); + } + result[key] = mergeTwoObjects(result[key], twoValue, level, objects); + } + } + } + } + else { + result = two; + } + } + return result; +} +/** + * Function to check if object has been already reference + * @param obj + * @param key + * @param objects + */ +function wasObjectReferenced(obj, key, objects) { + const arr = objects.get(obj[key]) || []; + for (let i = 0, j = arr.length; i < j; i++) { + const info = arr[i]; + if (info.key === key && info.obj === obj) { + return true; + } + } + return false; +} +function isArray(value) { + return Array.isArray(value); +} +function isFunction(value) { + return typeof value === 'function'; +} +function isObject(value) { + return (!isPrimitive(value) && + !isArray(value) && + !isFunction(value) && + typeof value === 'object'); +} +function isPrimitive(value) { + return (typeof value === 'string' || + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' || + value instanceof Date || + value instanceof RegExp || + value === null); +} +function shouldMerge(one, two) { + if (!(0, lodash_merge_1.isPlainObject)(one) || !(0, lodash_merge_1.isPlainObject)(two)) { + return false; + } + return true; +} +//# sourceMappingURL=merge.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/merge.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/merge.js.map new file mode 100644 index 0000000..b4bff12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/utils/merge.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { isPlainObject } from './lodash.merge';\n\nconst MAX_LEVEL = 20;\n\ninterface ObjectInto {\n obj: any;\n key: string;\n}\n\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nexport function merge(...args: any[]): any {\n let result: any = args.shift();\n const objects: WeakMap | undefined = new WeakMap<\n any,\n ObjectInto[]\n >();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n\n return result;\n}\n\nfunction takeValue(value: any): any {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\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(\n one: any,\n two: any,\n level = 0,\n objects: WeakMap\n): any {\n let result: any;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\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 } 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 } 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\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n } else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n } else {\n const obj1 = result[key];\n const obj2 = twoValue;\n\n if (\n wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)\n ) {\n delete result[key];\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\n result[key] = mergeTwoObjects(\n result[key],\n twoValue,\n level,\n objects\n );\n }\n }\n }\n } else {\n result = two;\n }\n }\n\n return result;\n}\n\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(\n obj: any,\n key: string,\n objects: WeakMap\n): boolean {\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}\n\nfunction isArray(value: any): boolean {\n return Array.isArray(value);\n}\n\nfunction isFunction(value: any): boolean {\n return typeof value === 'function';\n}\n\nfunction isObject(value: any): boolean {\n return (\n !isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object'\n );\n}\n\nfunction isPrimitive(value: any): boolean {\n return (\n 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 );\n}\n\nfunction shouldMerge(one: any, two: any): boolean {\n if (!isPlainObject(one) || !isPlainObject(two)) {\n return false;\n }\n\n return true;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/promise.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/promise.d.ts new file mode 100644 index 0000000..eb22322 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/promise.d.ts @@ -0,0 +1,10 @@ +export declare class Deferred { + private _promise; + private _resolve; + private _reject; + constructor(); + get promise(): Promise; + resolve(val: T): void; + reject(err: unknown): void; +} +//# sourceMappingURL=promise.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/promise.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/promise.js new file mode 100644 index 0000000..e564737 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/promise.js @@ -0,0 +1,40 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Deferred = void 0; +class Deferred { + _promise; + _resolve; + _reject; + constructor() { + this._promise = new Promise((resolve, reject) => { + this._resolve = resolve; + this._reject = reject; + }); + } + get promise() { + return this._promise; + } + resolve(val) { + this._resolve(val); + } + reject(err) { + this._reject(err); + } +} +exports.Deferred = Deferred; +//# sourceMappingURL=promise.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/promise.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/promise.js.map new file mode 100644 index 0000000..073ae46 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/promise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/utils/promise.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,MAAa,QAAQ;IACX,QAAQ,CAAa;IACrB,QAAQ,CAAoB;IAC5B,OAAO,CAA4B;IAC3C;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,GAAM;QACZ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,GAAY;QACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;CACF;AAtBD,4BAsBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport class Deferred {\n private _promise: Promise;\n private _resolve!: (val: T) => void;\n private _reject!: (error: unknown) => void;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n get promise() {\n return this._promise;\n }\n\n resolve(val: T) {\n this._resolve(val);\n }\n\n reject(err: unknown) {\n this._reject(err);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/timeout.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/timeout.d.ts new file mode 100644 index 0000000..6095293 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/timeout.d.ts @@ -0,0 +1,17 @@ +/** + * Error that is thrown on timeouts. + */ +export declare class TimeoutError extends Error { + constructor(message?: string); +} +/** + * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise + * rejects, and resolves if the specified promise resolves. + * + *

                          NOTE: this operation will continue even after it throws a {@link TimeoutError}. + * + * @param promise promise to use with timeout. + * @param timeout the timeout in milliseconds until the returned promise is rejected. + */ +export declare function callWithTimeout(promise: Promise, timeout: number): Promise; +//# sourceMappingURL=timeout.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/timeout.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/timeout.js new file mode 100644 index 0000000..fd45a56 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/timeout.js @@ -0,0 +1,56 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.callWithTimeout = exports.TimeoutError = void 0; +/** + * Error that is thrown on timeouts. + */ +class TimeoutError extends Error { + constructor(message) { + super(message); + // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see: + // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work + Object.setPrototypeOf(this, TimeoutError.prototype); + } +} +exports.TimeoutError = TimeoutError; +/** + * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise + * rejects, and resolves if the specified promise resolves. + * + *

                          NOTE: this operation will continue even after it throws a {@link TimeoutError}. + * + * @param promise promise to use with timeout. + * @param timeout the timeout in milliseconds until the returned promise is rejected. + */ +function callWithTimeout(promise, timeout) { + let timeoutHandle; + const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) { + timeoutHandle = setTimeout(function timeoutHandler() { + reject(new TimeoutError('Operation timed out.')); + }, timeout); + }); + return Promise.race([promise, timeoutPromise]).then(result => { + clearTimeout(timeoutHandle); + return result; + }, reason => { + clearTimeout(timeoutHandle); + throw reason; + }); +} +exports.callWithTimeout = callWithTimeout; +//# sourceMappingURL=timeout.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/timeout.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/timeout.js.map new file mode 100644 index 0000000..4b34c33 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/timeout.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../../src/utils/timeout.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,0FAA0F;QAC1F,6IAA6I;QAC7I,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;CACF;AARD,oCAQC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAC7B,OAAmB,EACnB,OAAe;IAEf,IAAI,aAA4C,CAAC;IAEjD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,SAAS,eAAe,CAChE,QAAQ,EACR,MAAM;QAEN,aAAa,GAAG,UAAU,CAAC,SAAS,cAAc;YAChD,MAAM,CAAC,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACnD,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,EAAE;QACP,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,MAAM,CAAC,EAAE;QACP,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM,MAAM,CAAC;IACf,CAAC,CACF,CAAC;AACJ,CAAC;AAzBD,0CAyBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * Error that is thrown on timeouts.\n */\nexport class TimeoutError extends Error {\n constructor(message?: string) {\n super(message);\n\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}\n\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 */\nexport function callWithTimeout(\n promise: Promise,\n timeout: number\n): Promise {\n let timeoutHandle: ReturnType;\n\n const timeoutPromise = new Promise(function timeoutFunction(\n _resolve,\n reject\n ) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).then(\n result => {\n clearTimeout(timeoutHandle);\n return result;\n },\n reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n }\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/url.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/url.d.ts new file mode 100644 index 0000000..a87f381 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/url.d.ts @@ -0,0 +1,8 @@ +export declare function urlMatches(url: string, urlToMatch: string | RegExp): boolean; +/** + * Check if {@param url} should be ignored when comparing against {@param ignoredUrls} + * @param url + * @param ignoredUrls + */ +export declare function isUrlIgnored(url: string, ignoredUrls?: Array): boolean; +//# sourceMappingURL=url.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/url.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/url.js new file mode 100644 index 0000000..7bce5b5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/url.js @@ -0,0 +1,45 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isUrlIgnored = exports.urlMatches = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function urlMatches(url, urlToMatch) { + if (typeof urlToMatch === 'string') { + return url === urlToMatch; + } + else { + return !!url.match(urlToMatch); + } +} +exports.urlMatches = urlMatches; +/** + * Check if {@param url} should be ignored when comparing against {@param ignoredUrls} + * @param url + * @param ignoredUrls + */ +function isUrlIgnored(url, ignoredUrls) { + if (!ignoredUrls) { + return false; + } + for (const ignoreUrl of ignoredUrls) { + if (urlMatches(url, ignoreUrl)) { + return true; + } + } + return false; +} +exports.isUrlIgnored = isUrlIgnored; +//# sourceMappingURL=url.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/url.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/url.js.map new file mode 100644 index 0000000..7d3a539 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/utils/url.js.map @@ -0,0 +1 @@ +{"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,SAAgB,UAAU,CAAC,GAAW,EAAE,UAA2B;IACjE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,OAAO,GAAG,KAAK,UAAU,CAAC;KAC3B;SAAM;QACL,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KAChC;AACH,CAAC;AAND,gCAMC;AACD;;;;GAIG;AACH,SAAgB,YAAY,CAC1B,GAAW,EACX,WAAoC;IAEpC,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,KAAK,CAAC;KACd;IAED,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;QACnC,IAAI,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAdD,oCAcC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function urlMatches(url: string, urlToMatch: string | RegExp): boolean {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n } else {\n return !!url.match(urlToMatch);\n }\n}\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nexport function isUrlIgnored(\n url: string,\n ignoredUrls?: Array\n): boolean {\n if (!ignoredUrls) {\n return false;\n }\n\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/version.d.ts new file mode 100644 index 0000000..4539690 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "2.5.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/version.js new file mode 100644 index 0000000..b099165 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '2.5.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/version.js.map new file mode 100644 index 0000000..0c15794 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.5.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/core/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/core/package.json new file mode 100644 index 0000000..cbeed89 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/core/package.json @@ -0,0 +1,94 @@ +{ + "name": "@opentelemetry/core", + "version": "2.5.0", + "description": "OpenTelemetry Core provides constants and utilities shared by all OpenTelemetry SDK packages.", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "browser": { + "./src/platform/index.ts": "./src/platform/browser/index.ts", + "./build/esm/platform/index.js": "./build/esm/platform/browser/index.js", + "./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js", + "./build/src/platform/index.js": "./build/src/platform/browser/index.js" + }, + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "test": "nyc mocha 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", + "test:browser": "karma start --single-run", + "tdd": "npm run tdd:node", + "tdd:node": "npm run test -- --watch-extensions ts --watch", + "tdd:browser": "karma start", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "version": "node ../../scripts/version-update.js", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "prewatch": "npm run precompile", + "test:bench": "node test/performance/benchmark/index.js | tee .benchmark-results.txt", + "peer-api-check": "node ../../scripts/peer-api-check.js", + "align-api-deps": "node ../../scripts/align-api-deps.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "browser", + "tracing", + "profiling", + "metrics", + "stats" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0", + "@types/mocha": "10.0.10", + "@types/node": "18.19.130", + "@types/sinon": "17.0.4", + "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "7.0.1", + "karma": "6.4.4", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "mocha": "11.7.5", + "nyc": "17.1.0", + "sinon": "18.0.1", + "ts-loader": "9.5.4", + "typescript": "5.0.4", + "webpack": "5.101.3" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core", + "sideEffects": false, + "gitHead": "38924cbff2a6e924ce8a2a227d3a72de52fbcd35" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/README.md new file mode 100644 index 0000000..f28dd83 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/README.md @@ -0,0 +1,137 @@ +# OpenTelemetry Amqplib (RabbitMQ) Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`amqplib`](https://www.npmjs.com/package/amqplib) (RabbitMQ) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-amqplib +``` + +## Supported Versions + +- [`amqplib`](https://www.npmjs.com/package/amqplib) versions `>=0.5.5 <1` + +## Usage + +OpenTelemetry amqplib Instrumentation allows the user to automatically collect trace data and export them to the backend of choice, to give observability to distributed systems when working with [`amqplib`](https://github.com/amqp-node/amqplib) (RabbitMQ). + +To load a specific plugin, specify it in the registerInstrumentations's configuration: + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { AmqplibInstrumentation } = require('@opentelemetry/instrumentation-amqplib'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new AmqplibInstrumentation({ + // publishHook: (span: Span, publishInfo: PublishInfo) => { }, + // publishConfirmHook: (span: Span, publishConfirmedInto: PublishConfirmedInfo) => { }, + // consumeHook: (span: Span, consumeInfo: ConsumeInfo) => { }, + // consumeEndHook: (span: Span, consumeEndInfo: ConsumeEndInfo) => { }, + // useLinksForConsume: boolean, + }), + ], +}) +``` + +### amqplib Instrumentation Options + +amqplib instrumentation has few options available to choose from. You can set the following: + +| Options | Type | Description | +| -------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------- | +| `publishHook` | `AmqplibPublishCustomAttributeFunction` | hook for adding custom attributes before publish message is sent. | +| `publishConfirmHook` | `AmqplibPublishConfirmCustomAttributeFunction` | hook for adding custom attributes after publish message is confirmed by the broker. | +| `consumeHook` | `AmqplibConsumeCustomAttributeFunction` | hook for adding custom attributes before consumer message is processed. | +| `consumeEndHook` | `AmqplibConsumeEndCustomAttributeFunction` | hook for adding custom attributes after consumer message is acked to server. | +| `consumeTimeoutMs` | `number` | read [Consume Timeout](#consume-timeout) below | +| `useLinksForConsume` | `boolean` | read [Links for Consume](#links-for-consume) below | + +### Consume Timeout + +When user is setting up consume callback, it is user's responsibility to call ack/nack etc on the msg to resolve it in the server. If user is not calling the ack, the message will stay in the queue until channel is closed, or until server timeout expires (if configured). + +While we wait for the ack, a reference to the message is stored in plugin, which +will never be garbage collected. +To prevent memory leak, plugin has it's own configuration of timeout, which will close the span if user did not call ack after this timeout. + +If timeout is not big enough, span might be closed with 'InstrumentationTimeout', and then received valid ack from the user later which will not be instrumented. + +Default is 1 minute + +### Links for Consume + +By default, consume spans continue the trace where a message was produced. However, per the [spec](https://opentelemetry.io/docs/specs/semconv/messaging/messaging-spans/#consumer-spans), consume spans should be linked to the message's creation context. Setting to true, this will enable the behavior to follow the spec. + +Default is false + +## Running Tests Locally + +To run the tests locally, you need to have a RabbitMQ server running. You can use the following command to start a RabbitMQ server using Docker: + +```bash +npm run test:docker:run +``` + +By default, the tests that connect to RabbitMQ are skipped. To make sure these tests are run, you can set the `RUN_RABBIT_TESTS` environment variable to `true` + +## Semantic Conventions + +This instrumentation implements Semantic Conventions (semconv) v1.7.0. Since then, many networking-related semantic conventions (in semconv v1.21.0 and v1.23.1) were stabilized. As of `@opentelemetry/instrumentation-amqplib@0.56.0` support has been added for migrating to the stable semantic conventions using the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable as follows: + +1. Upgrade to the latest version of this instrumentation package. +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http/dup` to emit both old and stable semantic conventions. (The [`http` token is used to control the `net.*` attributes](https://github.com/open-telemetry/opentelemetry-js/issues/5663#issuecomment-3349204546).) +3. Modify alerts, dashboards, metrics, and other processes in your Observability system to use the stable semantic conventions. +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http` to emit only the stable semantic conventions. + +By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` is not set or does not include `http`, then the old v1.7.0 semconv is used. +The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new networking semconv, after which a new minor version will use the new semconv by default and drop support for the old semconv. +See [the HTTP migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/) and [deprecated network attributes](https://opentelemetry.io/docs/specs/semconv/registry/attributes/network/#deprecated-network-attributes) for details. + +Attributes collected: + +| Attribute | Short Description | +| -------------------------------- | ---------------------------------------------------------------------- | +| `messaging.destination` | The message destination name. | +| `messaging.destination_kind` | The kind of message destination. | +| `messaging.rabbitmq.routing_key` | RabbitMQ message routing key. | +| `messaging.operation` | A string identifying the kind of message consumption. | +| `messaging.message_id` | A value used by the messaging system as an identifier for the message. | +| `messaging.conversation_id` | The ID identifying the conversation to which the message belongs. | +| `messaging.protocol` | The name of the transport protocol. | +| `messaging.protocol_version` | The version of the transport protocol. | +| `messaging.system` | A string identifying the messaging system. | +| `messaging.url` | The connection string. | + +| Old semconv | Stable semconv | Description | +| --------------- | ---------------- | ------------------ | +| `net.peer.name` | `server.address` | Remote hostname | +| `net.peer.port` | `server.port` | Remote port number | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-amqplib +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-amqplib.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.d.ts new file mode 100644 index 0000000..efc54ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.d.ts @@ -0,0 +1,26 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { AmqplibInstrumentationConfig } from './types'; +export declare class AmqplibInstrumentation extends InstrumentationBase { + private _netSemconvStability; + constructor(config?: AmqplibInstrumentationConfig); + private _setSemconvStabilityFromEnv; + setConfig(config?: AmqplibInstrumentationConfig): void; + protected init(): InstrumentationNodeModuleDefinition; + private patchConnect; + private unpatchConnect; + private patchChannelModel; + private unpatchChannelModel; + private getConnectPatch; + private getChannelEmitPatch; + private getAckAllPatch; + private getAckPatch; + private getConsumePatch; + private getConfirmedPublishPatch; + private getPublishPatch; + private createPublishSpan; + private endConsumerSpan; + private endAllSpansOnChannel; + private callConsumeEndHook; + private checkConsumeTimeoutOnChannel; +} +//# sourceMappingURL=amqplib.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js new file mode 100644 index 0000000..64b1bd8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js @@ -0,0 +1,439 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AmqplibInstrumentation = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semconv_1 = require("./semconv"); +const semconv_obsolete_1 = require("../src/semconv-obsolete"); +const types_1 = require("./types"); +const utils_1 = require("./utils"); +/** @knipignore */ +const version_1 = require("./version"); +const supportedVersions = ['>=0.5.5 <1']; +class AmqplibInstrumentation extends instrumentation_1.InstrumentationBase { + _netSemconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...types_1.DEFAULT_CONFIG, ...config }); + this._setSemconvStabilityFromEnv(); + } + // Used for testing. + _setSemconvStabilityFromEnv() { + this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + setConfig(config = {}) { + super.setConfig({ ...types_1.DEFAULT_CONFIG, ...config }); + } + init() { + const channelModelModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/channel_model.js', supportedVersions, this.patchChannelModel.bind(this), this.unpatchChannelModel.bind(this)); + const callbackModelModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/callback_model.js', supportedVersions, this.patchChannelModel.bind(this), this.unpatchChannelModel.bind(this)); + const connectModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/connect.js', supportedVersions, this.patchConnect.bind(this), this.unpatchConnect.bind(this)); + const module = new instrumentation_1.InstrumentationNodeModuleDefinition('amqplib', supportedVersions, undefined, undefined, [channelModelModuleFile, connectModuleFile, callbackModelModuleFile]); + return module; + } + patchConnect(moduleExports) { + moduleExports = this.unpatchConnect(moduleExports); + if (!(0, instrumentation_1.isWrapped)(moduleExports.connect)) { + this._wrap(moduleExports, 'connect', this.getConnectPatch.bind(this)); + } + return moduleExports; + } + unpatchConnect(moduleExports) { + if ((0, instrumentation_1.isWrapped)(moduleExports.connect)) { + this._unwrap(moduleExports, 'connect'); + } + return moduleExports; + } + patchChannelModel(moduleExports, moduleVersion) { + if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.publish)) { + this._wrap(moduleExports.Channel.prototype, 'publish', this.getPublishPatch.bind(this, moduleVersion)); + } + if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.consume)) { + this._wrap(moduleExports.Channel.prototype, 'consume', this.getConsumePatch.bind(this, moduleVersion)); + } + if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ack)) { + this._wrap(moduleExports.Channel.prototype, 'ack', this.getAckPatch.bind(this, false, types_1.EndOperation.Ack)); + } + if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nack)) { + this._wrap(moduleExports.Channel.prototype, 'nack', this.getAckPatch.bind(this, true, types_1.EndOperation.Nack)); + } + if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.reject)) { + this._wrap(moduleExports.Channel.prototype, 'reject', this.getAckPatch.bind(this, true, types_1.EndOperation.Reject)); + } + if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ackAll)) { + this._wrap(moduleExports.Channel.prototype, 'ackAll', this.getAckAllPatch.bind(this, false, types_1.EndOperation.AckAll)); + } + if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nackAll)) { + this._wrap(moduleExports.Channel.prototype, 'nackAll', this.getAckAllPatch.bind(this, true, types_1.EndOperation.NackAll)); + } + if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.emit)) { + this._wrap(moduleExports.Channel.prototype, 'emit', this.getChannelEmitPatch.bind(this)); + } + if (!(0, instrumentation_1.isWrapped)(moduleExports.ConfirmChannel.prototype.publish)) { + this._wrap(moduleExports.ConfirmChannel.prototype, 'publish', this.getConfirmedPublishPatch.bind(this, moduleVersion)); + } + return moduleExports; + } + unpatchChannelModel(moduleExports) { + if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.publish)) { + this._unwrap(moduleExports.Channel.prototype, 'publish'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.consume)) { + this._unwrap(moduleExports.Channel.prototype, 'consume'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ack)) { + this._unwrap(moduleExports.Channel.prototype, 'ack'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nack)) { + this._unwrap(moduleExports.Channel.prototype, 'nack'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.reject)) { + this._unwrap(moduleExports.Channel.prototype, 'reject'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ackAll)) { + this._unwrap(moduleExports.Channel.prototype, 'ackAll'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nackAll)) { + this._unwrap(moduleExports.Channel.prototype, 'nackAll'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.emit)) { + this._unwrap(moduleExports.Channel.prototype, 'emit'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.ConfirmChannel.prototype.publish)) { + this._unwrap(moduleExports.ConfirmChannel.prototype, 'publish'); + } + return moduleExports; + } + getConnectPatch(original) { + const self = this; + return function patchedConnect(url, socketOptions, openCallback) { + return original.call(this, url, socketOptions, function (err, conn) { + if (err == null) { + const urlAttributes = (0, utils_1.getConnectionAttributesFromUrl)(url, self._netSemconvStability); + const serverAttributes = (0, utils_1.getConnectionAttributesFromServer)(conn); + conn[utils_1.CONNECTION_ATTRIBUTES] = { + ...urlAttributes, + ...serverAttributes, + }; + } + openCallback.apply(this, arguments); + }); + }; + } + getChannelEmitPatch(original) { + const self = this; + return function emit(eventName) { + if (eventName === 'close') { + self.endAllSpansOnChannel(this, true, types_1.EndOperation.ChannelClosed, undefined); + const activeTimer = this[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER]; + if (activeTimer) { + clearInterval(activeTimer); + } + this[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER] = undefined; + } + else if (eventName === 'error') { + self.endAllSpansOnChannel(this, true, types_1.EndOperation.ChannelError, undefined); + } + return original.apply(this, arguments); + }; + } + getAckAllPatch(isRejected, endOperation, original) { + const self = this; + return function ackAll(requeueOrEmpty) { + self.endAllSpansOnChannel(this, isRejected, endOperation, requeueOrEmpty); + return original.apply(this, arguments); + }; + } + getAckPatch(isRejected, endOperation, original) { + const self = this; + return function ack(message, allUpToOrRequeue, requeue) { + const channel = this; + // we use this patch in reject function as well, but it has different signature + const requeueResolved = endOperation === types_1.EndOperation.Reject ? allUpToOrRequeue : requeue; + const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? []; + const msgIndex = spansNotEnded.findIndex(msgDetails => msgDetails.msg === message); + if (msgIndex < 0) { + // should not happen in happy flow + // but possible if user is calling the api function ack twice with same message + self.endConsumerSpan(message, isRejected, endOperation, requeueResolved); + } + else if (endOperation !== types_1.EndOperation.Reject && allUpToOrRequeue) { + for (let i = 0; i <= msgIndex; i++) { + self.endConsumerSpan(spansNotEnded[i].msg, isRejected, endOperation, requeueResolved); + } + spansNotEnded.splice(0, msgIndex + 1); + } + else { + self.endConsumerSpan(message, isRejected, endOperation, requeueResolved); + spansNotEnded.splice(msgIndex, 1); + } + return original.apply(this, arguments); + }; + } + getConsumePatch(moduleVersion, original) { + const self = this; + return function consume(queue, onMessage, options) { + const channel = this; + if (!Object.prototype.hasOwnProperty.call(channel, utils_1.CHANNEL_SPANS_NOT_ENDED)) { + const { consumeTimeoutMs } = self.getConfig(); + if (consumeTimeoutMs) { + const timer = setInterval(() => { + self.checkConsumeTimeoutOnChannel(channel); + }, consumeTimeoutMs); + timer.unref(); + channel[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER] = timer; + } + channel[utils_1.CHANNEL_SPANS_NOT_ENDED] = []; + } + const patchedOnMessage = function (msg) { + // msg is expected to be null for signaling consumer cancel notification + // https://www.rabbitmq.com/consumer-cancel.html + // in this case, we do not start a span, as this is not a real message. + if (!msg) { + return onMessage.call(this, msg); + } + const headers = msg.properties.headers ?? {}; + let parentContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, headers); + const exchange = msg.fields?.exchange; + let links; + if (self._config.useLinksForConsume) { + const parentSpanContext = parentContext + ? api_1.trace.getSpan(parentContext)?.spanContext() + : undefined; + parentContext = undefined; + if (parentSpanContext) { + links = [ + { + context: parentSpanContext, + }, + ]; + } + } + const span = self.tracer.startSpan(`${queue} process`, { + kind: api_1.SpanKind.CONSUMER, + attributes: { + ...channel?.connection?.[utils_1.CONNECTION_ATTRIBUTES], + [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION]: exchange, + [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION_KIND]: semconv_obsolete_1.MESSAGING_DESTINATION_KIND_VALUE_TOPIC, + [semconv_obsolete_1.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: msg.fields?.routingKey, + [semconv_1.ATTR_MESSAGING_OPERATION]: semconv_obsolete_1.MESSAGING_OPERATION_VALUE_PROCESS, + [semconv_obsolete_1.OLD_ATTR_MESSAGING_MESSAGE_ID]: msg?.properties.messageId, + [semconv_obsolete_1.ATTR_MESSAGING_CONVERSATION_ID]: msg?.properties.correlationId, + }, + links, + }, parentContext); + const { consumeHook } = self.getConfig(); + if (consumeHook) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumeHook(span, { moduleVersion, msg }), e => { + if (e) { + api_1.diag.error('amqplib instrumentation: consumerHook error', e); + } + }, true); + } + if (!options?.noAck) { + // store the message on the channel so we can close the span on ackAll etc + channel[utils_1.CHANNEL_SPANS_NOT_ENDED].push({ + msg, + timeOfConsume: (0, core_1.hrTime)(), + }); + // store the span on the message, so we can end it when user call 'ack' on it + msg[utils_1.MESSAGE_STORED_SPAN] = span; + } + const setContext = parentContext + ? parentContext + : api_1.ROOT_CONTEXT; + api_1.context.with(api_1.trace.setSpan(setContext, span), () => { + onMessage.call(this, msg); + }); + if (options?.noAck) { + self.callConsumeEndHook(span, msg, false, types_1.EndOperation.AutoAck); + span.end(); + } + }; + arguments[1] = patchedOnMessage; + return original.apply(this, arguments); + }; + } + getConfirmedPublishPatch(moduleVersion, original) { + const self = this; + return function confirmedPublish(exchange, routingKey, content, options, callback) { + const channel = this; + const { span, modifiedOptions } = self.createPublishSpan(self, exchange, routingKey, channel, options); + const { publishHook } = self.getConfig(); + if (publishHook) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishHook(span, { + moduleVersion, + exchange, + routingKey, + content, + options: modifiedOptions, + isConfirmChannel: true, + }), e => { + if (e) { + api_1.diag.error('amqplib instrumentation: publishHook error', e); + } + }, true); + } + const patchedOnConfirm = function (err, ok) { + try { + callback?.call(this, err, ok); + } + finally { + const { publishConfirmHook } = self.getConfig(); + if (publishConfirmHook) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishConfirmHook(span, { + moduleVersion, + exchange, + routingKey, + content, + options, + isConfirmChannel: true, + confirmError: err, + }), e => { + if (e) { + api_1.diag.error('amqplib instrumentation: publishConfirmHook error', e); + } + }, true); + } + if (err) { + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: "message confirmation has been nack'ed", + }); + } + span.end(); + } + }; + // calling confirm channel publish function is storing the message in queue and registering the callback for broker confirm. + // span ends in the patched callback. + const markedContext = (0, utils_1.markConfirmChannelTracing)(api_1.context.active()); + const argumentsCopy = [...arguments]; + argumentsCopy[3] = modifiedOptions; + argumentsCopy[4] = api_1.context.bind((0, utils_1.unmarkConfirmChannelTracing)(api_1.trace.setSpan(markedContext, span)), patchedOnConfirm); + return api_1.context.with(markedContext, original.bind(this, ...argumentsCopy)); + }; + } + getPublishPatch(moduleVersion, original) { + const self = this; + return function publish(exchange, routingKey, content, options) { + if ((0, utils_1.isConfirmChannelTracing)(api_1.context.active())) { + // work already done + return original.apply(this, arguments); + } + else { + const channel = this; + const { span, modifiedOptions } = self.createPublishSpan(self, exchange, routingKey, channel, options); + const { publishHook } = self.getConfig(); + if (publishHook) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishHook(span, { + moduleVersion, + exchange, + routingKey, + content, + options: modifiedOptions, + isConfirmChannel: false, + }), e => { + if (e) { + api_1.diag.error('amqplib instrumentation: publishHook error', e); + } + }, true); + } + // calling normal channel publish function is only storing the message in queue. + // it does not send it and waits for an ack, so the span duration is expected to be very short. + const argumentsCopy = [...arguments]; + argumentsCopy[3] = modifiedOptions; + const originalRes = original.apply(this, argumentsCopy); + span.end(); + return originalRes; + } + }; + } + createPublishSpan(self, exchange, routingKey, channel, options) { + const normalizedExchange = (0, utils_1.normalizeExchange)(exchange); + const span = self.tracer.startSpan(`publish ${normalizedExchange}`, { + kind: api_1.SpanKind.PRODUCER, + attributes: { + ...channel.connection[utils_1.CONNECTION_ATTRIBUTES], + [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION]: exchange, + [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION_KIND]: semconv_obsolete_1.MESSAGING_DESTINATION_KIND_VALUE_TOPIC, + [semconv_obsolete_1.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey, + [semconv_obsolete_1.OLD_ATTR_MESSAGING_MESSAGE_ID]: options?.messageId, + [semconv_obsolete_1.ATTR_MESSAGING_CONVERSATION_ID]: options?.correlationId, + }, + }); + const modifiedOptions = options ?? {}; + modifiedOptions.headers = modifiedOptions.headers ?? {}; + api_1.propagation.inject(api_1.trace.setSpan(api_1.context.active(), span), modifiedOptions.headers); + return { span, modifiedOptions }; + } + endConsumerSpan(message, isRejected, operation, requeue) { + const storedSpan = message[utils_1.MESSAGE_STORED_SPAN]; + if (!storedSpan) + return; + if (isRejected !== false) { + storedSpan.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: operation !== types_1.EndOperation.ChannelClosed && + operation !== types_1.EndOperation.ChannelError + ? `${operation} called on message${requeue === true + ? ' with requeue' + : requeue === false + ? ' without requeue' + : ''}` + : operation, + }); + } + this.callConsumeEndHook(storedSpan, message, isRejected, operation); + storedSpan.end(); + message[utils_1.MESSAGE_STORED_SPAN] = undefined; + } + endAllSpansOnChannel(channel, isRejected, operation, requeue) { + const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? []; + spansNotEnded.forEach(msgDetails => { + this.endConsumerSpan(msgDetails.msg, isRejected, operation, requeue); + }); + channel[utils_1.CHANNEL_SPANS_NOT_ENDED] = []; + } + callConsumeEndHook(span, msg, rejected, endOperation) { + const { consumeEndHook } = this.getConfig(); + if (!consumeEndHook) + return; + (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumeEndHook(span, { msg, rejected, endOperation }), e => { + if (e) { + api_1.diag.error('amqplib instrumentation: consumerEndHook error', e); + } + }, true); + } + checkConsumeTimeoutOnChannel(channel) { + const currentTime = (0, core_1.hrTime)(); + const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? []; + let i; + const { consumeTimeoutMs } = this.getConfig(); + for (i = 0; i < spansNotEnded.length; i++) { + const currMessage = spansNotEnded[i]; + const timeFromConsume = (0, core_1.hrTimeDuration)(currMessage.timeOfConsume, currentTime); + if ((0, core_1.hrTimeToMilliseconds)(timeFromConsume) < consumeTimeoutMs) { + break; + } + this.endConsumerSpan(currMessage.msg, null, types_1.EndOperation.InstrumentationTimeout, true); + } + spansNotEnded.splice(0, i); + } +} +exports.AmqplibInstrumentation = AmqplibInstrumentation; +//# sourceMappingURL=amqplib.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js.map new file mode 100644 index 0000000..0cccb54 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js.map @@ -0,0 +1 @@ +{"version":3,"file":"amqplib.js","sourceRoot":"","sources":["../../src/amqplib.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n context,\n diag,\n propagation,\n trace,\n Span,\n SpanKind,\n SpanStatusCode,\n ROOT_CONTEXT,\n Link,\n Context,\n} from '@opentelemetry/api';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n safeExecuteInTheMiddle,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_MESSAGING_OPERATION } from './semconv';\nimport {\n ATTR_MESSAGING_DESTINATION,\n ATTR_MESSAGING_DESTINATION_KIND,\n ATTR_MESSAGING_RABBITMQ_ROUTING_KEY,\n MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n MESSAGING_OPERATION_VALUE_PROCESS,\n OLD_ATTR_MESSAGING_MESSAGE_ID,\n ATTR_MESSAGING_CONVERSATION_ID,\n} from '../src/semconv-obsolete';\nimport type {\n Connection,\n ConsumeMessage,\n Message,\n Options,\n Replies,\n} from 'amqplib';\nimport {\n AmqplibInstrumentationConfig,\n DEFAULT_CONFIG,\n EndOperation,\n} from './types';\nimport {\n CHANNEL_CONSUME_TIMEOUT_TIMER,\n CHANNEL_SPANS_NOT_ENDED,\n CONNECTION_ATTRIBUTES,\n getConnectionAttributesFromServer,\n getConnectionAttributesFromUrl,\n InstrumentationConnection,\n InstrumentationConsumeChannel,\n InstrumentationConsumeMessage,\n InstrumentationMessage,\n InstrumentationPublishChannel,\n isConfirmChannelTracing,\n markConfirmChannelTracing,\n MESSAGE_STORED_SPAN,\n normalizeExchange,\n unmarkConfirmChannelTracing,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst supportedVersions = ['>=0.5.5 <1'];\n\nexport class AmqplibInstrumentation extends InstrumentationBase {\n private _netSemconvStability!: SemconvStability;\n\n constructor(config: AmqplibInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n this._setSemconvStabilityFromEnv();\n }\n\n // Used for testing.\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n override setConfig(config: AmqplibInstrumentationConfig = {}) {\n super.setConfig({ ...DEFAULT_CONFIG, ...config });\n }\n\n protected init() {\n const channelModelModuleFile = new InstrumentationNodeModuleFile(\n 'amqplib/lib/channel_model.js',\n supportedVersions,\n this.patchChannelModel.bind(this),\n this.unpatchChannelModel.bind(this)\n );\n\n const callbackModelModuleFile = new InstrumentationNodeModuleFile(\n 'amqplib/lib/callback_model.js',\n supportedVersions,\n this.patchChannelModel.bind(this),\n this.unpatchChannelModel.bind(this)\n );\n\n const connectModuleFile = new InstrumentationNodeModuleFile(\n 'amqplib/lib/connect.js',\n supportedVersions,\n this.patchConnect.bind(this),\n this.unpatchConnect.bind(this)\n );\n\n const module = new InstrumentationNodeModuleDefinition(\n 'amqplib',\n supportedVersions,\n undefined,\n undefined,\n [channelModelModuleFile, connectModuleFile, callbackModelModuleFile]\n );\n return module;\n }\n\n private patchConnect(moduleExports: any) {\n moduleExports = this.unpatchConnect(moduleExports);\n if (!isWrapped(moduleExports.connect)) {\n this._wrap(moduleExports, 'connect', this.getConnectPatch.bind(this));\n }\n return moduleExports;\n }\n\n private unpatchConnect(moduleExports: any) {\n if (isWrapped(moduleExports.connect)) {\n this._unwrap(moduleExports, 'connect');\n }\n return moduleExports;\n }\n\n private patchChannelModel(\n moduleExports: any,\n moduleVersion: string | undefined\n ) {\n if (!isWrapped(moduleExports.Channel.prototype.publish)) {\n this._wrap(\n moduleExports.Channel.prototype,\n 'publish',\n this.getPublishPatch.bind(this, moduleVersion)\n );\n }\n if (!isWrapped(moduleExports.Channel.prototype.consume)) {\n this._wrap(\n moduleExports.Channel.prototype,\n 'consume',\n this.getConsumePatch.bind(this, moduleVersion)\n );\n }\n if (!isWrapped(moduleExports.Channel.prototype.ack)) {\n this._wrap(\n moduleExports.Channel.prototype,\n 'ack',\n this.getAckPatch.bind(this, false, EndOperation.Ack)\n );\n }\n if (!isWrapped(moduleExports.Channel.prototype.nack)) {\n this._wrap(\n moduleExports.Channel.prototype,\n 'nack',\n this.getAckPatch.bind(this, true, EndOperation.Nack)\n );\n }\n if (!isWrapped(moduleExports.Channel.prototype.reject)) {\n this._wrap(\n moduleExports.Channel.prototype,\n 'reject',\n this.getAckPatch.bind(this, true, EndOperation.Reject)\n );\n }\n if (!isWrapped(moduleExports.Channel.prototype.ackAll)) {\n this._wrap(\n moduleExports.Channel.prototype,\n 'ackAll',\n this.getAckAllPatch.bind(this, false, EndOperation.AckAll)\n );\n }\n if (!isWrapped(moduleExports.Channel.prototype.nackAll)) {\n this._wrap(\n moduleExports.Channel.prototype,\n 'nackAll',\n this.getAckAllPatch.bind(this, true, EndOperation.NackAll)\n );\n }\n if (!isWrapped(moduleExports.Channel.prototype.emit)) {\n this._wrap(\n moduleExports.Channel.prototype,\n 'emit',\n this.getChannelEmitPatch.bind(this)\n );\n }\n if (!isWrapped(moduleExports.ConfirmChannel.prototype.publish)) {\n this._wrap(\n moduleExports.ConfirmChannel.prototype,\n 'publish',\n this.getConfirmedPublishPatch.bind(this, moduleVersion)\n );\n }\n return moduleExports;\n }\n\n private unpatchChannelModel(moduleExports: any) {\n if (isWrapped(moduleExports.Channel.prototype.publish)) {\n this._unwrap(moduleExports.Channel.prototype, 'publish');\n }\n if (isWrapped(moduleExports.Channel.prototype.consume)) {\n this._unwrap(moduleExports.Channel.prototype, 'consume');\n }\n if (isWrapped(moduleExports.Channel.prototype.ack)) {\n this._unwrap(moduleExports.Channel.prototype, 'ack');\n }\n if (isWrapped(moduleExports.Channel.prototype.nack)) {\n this._unwrap(moduleExports.Channel.prototype, 'nack');\n }\n if (isWrapped(moduleExports.Channel.prototype.reject)) {\n this._unwrap(moduleExports.Channel.prototype, 'reject');\n }\n if (isWrapped(moduleExports.Channel.prototype.ackAll)) {\n this._unwrap(moduleExports.Channel.prototype, 'ackAll');\n }\n if (isWrapped(moduleExports.Channel.prototype.nackAll)) {\n this._unwrap(moduleExports.Channel.prototype, 'nackAll');\n }\n if (isWrapped(moduleExports.Channel.prototype.emit)) {\n this._unwrap(moduleExports.Channel.prototype, 'emit');\n }\n if (isWrapped(moduleExports.ConfirmChannel.prototype.publish)) {\n this._unwrap(moduleExports.ConfirmChannel.prototype, 'publish');\n }\n return moduleExports;\n }\n\n private getConnectPatch(\n original: (\n url: string | Options.Connect,\n socketOptions: any,\n openCallback: (err: any, connection: Connection) => void\n ) => Connection\n ) {\n const self = this;\n return function patchedConnect(\n this: unknown,\n url: string | Options.Connect,\n socketOptions: any,\n openCallback: Function\n ) {\n return original.call(\n this,\n url,\n socketOptions,\n function (this: unknown, err, conn: InstrumentationConnection) {\n if (err == null) {\n const urlAttributes = getConnectionAttributesFromUrl(\n url,\n self._netSemconvStability\n );\n const serverAttributes = getConnectionAttributesFromServer(conn);\n conn[CONNECTION_ATTRIBUTES] = {\n ...urlAttributes,\n ...serverAttributes,\n };\n }\n openCallback.apply(this, arguments);\n }\n );\n };\n }\n\n private getChannelEmitPatch(original: Function) {\n const self = this;\n return function emit(\n this: InstrumentationConsumeChannel,\n eventName: string\n ) {\n if (eventName === 'close') {\n self.endAllSpansOnChannel(\n this,\n true,\n EndOperation.ChannelClosed,\n undefined\n );\n const activeTimer = this[CHANNEL_CONSUME_TIMEOUT_TIMER];\n if (activeTimer) {\n clearInterval(activeTimer);\n }\n this[CHANNEL_CONSUME_TIMEOUT_TIMER] = undefined;\n } else if (eventName === 'error') {\n self.endAllSpansOnChannel(\n this,\n true,\n EndOperation.ChannelError,\n undefined\n );\n }\n return original.apply(this, arguments);\n };\n }\n\n private getAckAllPatch(\n isRejected: boolean,\n endOperation: EndOperation,\n original: Function\n ) {\n const self = this;\n return function ackAll(\n this: InstrumentationConsumeChannel,\n requeueOrEmpty?: boolean\n ): void {\n self.endAllSpansOnChannel(this, isRejected, endOperation, requeueOrEmpty);\n return original.apply(this, arguments);\n };\n }\n\n private getAckPatch(\n isRejected: boolean,\n endOperation: EndOperation,\n original: Function\n ) {\n const self = this;\n return function ack(\n this: InstrumentationConsumeChannel,\n message: Message,\n allUpToOrRequeue?: boolean,\n requeue?: boolean\n ): void {\n const channel = this;\n // we use this patch in reject function as well, but it has different signature\n const requeueResolved =\n endOperation === EndOperation.Reject ? allUpToOrRequeue : requeue;\n\n const spansNotEnded: { msg: Message }[] =\n channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n const msgIndex = spansNotEnded.findIndex(\n msgDetails => msgDetails.msg === message\n );\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(\n message,\n isRejected,\n endOperation,\n requeueResolved\n );\n } else if (endOperation !== EndOperation.Reject && allUpToOrRequeue) {\n for (let i = 0; i <= msgIndex; i++) {\n self.endConsumerSpan(\n spansNotEnded[i].msg,\n isRejected,\n endOperation,\n requeueResolved\n );\n }\n spansNotEnded.splice(0, msgIndex + 1);\n } else {\n self.endConsumerSpan(\n message,\n isRejected,\n endOperation,\n requeueResolved\n );\n spansNotEnded.splice(msgIndex, 1);\n }\n return original.apply(this, arguments);\n };\n }\n\n private getConsumePatch(\n moduleVersion: string | undefined,\n original: Function\n ) {\n const self = this;\n return function consume(\n this: InstrumentationConsumeChannel,\n queue: string,\n onMessage: (msg: ConsumeMessage | null) => void,\n options?: Options.Consume\n ): Promise {\n const channel = this;\n if (\n !Object.prototype.hasOwnProperty.call(channel, CHANNEL_SPANS_NOT_ENDED)\n ) {\n const { consumeTimeoutMs } = self.getConfig();\n if (consumeTimeoutMs) {\n const timer = setInterval(() => {\n self.checkConsumeTimeoutOnChannel(channel);\n }, consumeTimeoutMs);\n timer.unref();\n channel[CHANNEL_CONSUME_TIMEOUT_TIMER] = timer;\n }\n channel[CHANNEL_SPANS_NOT_ENDED] = [];\n }\n\n const patchedOnMessage = function (\n this: unknown,\n msg: InstrumentationConsumeMessage | null\n ) {\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\n const headers = msg.properties.headers ?? {};\n let parentContext: Context | undefined = propagation.extract(\n ROOT_CONTEXT,\n headers\n );\n const exchange = msg.fields?.exchange;\n let links: Link[] | undefined;\n if (self._config.useLinksForConsume) {\n const parentSpanContext = parentContext\n ? 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(\n `${queue} process`,\n {\n kind: SpanKind.CONSUMER,\n attributes: {\n ...channel?.connection?.[CONNECTION_ATTRIBUTES],\n [ATTR_MESSAGING_DESTINATION]: exchange,\n [ATTR_MESSAGING_DESTINATION_KIND]:\n MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n [ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: msg.fields?.routingKey,\n [ATTR_MESSAGING_OPERATION]: MESSAGING_OPERATION_VALUE_PROCESS,\n [OLD_ATTR_MESSAGING_MESSAGE_ID]: msg?.properties.messageId,\n [ATTR_MESSAGING_CONVERSATION_ID]: msg?.properties.correlationId,\n },\n links,\n },\n parentContext\n );\n\n const { consumeHook } = self.getConfig();\n if (consumeHook) {\n safeExecuteInTheMiddle(\n () => consumeHook(span, { moduleVersion, msg }),\n e => {\n if (e) {\n diag.error('amqplib instrumentation: consumerHook error', e);\n }\n },\n true\n );\n }\n\n if (!options?.noAck) {\n // store the message on the channel so we can close the span on ackAll etc\n channel[CHANNEL_SPANS_NOT_ENDED]!.push({\n msg,\n timeOfConsume: hrTime(),\n });\n\n // store the span on the message, so we can end it when user call 'ack' on it\n msg[MESSAGE_STORED_SPAN] = span;\n }\n const setContext: Context = parentContext\n ? parentContext\n : ROOT_CONTEXT;\n context.with(trace.setSpan(setContext, span), () => {\n onMessage.call(this, msg);\n });\n\n if (options?.noAck) {\n self.callConsumeEndHook(span, msg, false, EndOperation.AutoAck);\n span.end();\n }\n };\n arguments[1] = patchedOnMessage;\n return original.apply(this, arguments);\n };\n }\n\n private getConfirmedPublishPatch(\n moduleVersion: string | undefined,\n original: Function\n ) {\n const self = this;\n return function confirmedPublish(\n this: InstrumentationConsumeChannel,\n exchange: string,\n routingKey: string,\n content: Buffer,\n options?: Options.Publish,\n callback?: (err: any, ok: Replies.Empty) => void\n ): boolean {\n const channel = this;\n const { span, modifiedOptions } = self.createPublishSpan(\n self,\n exchange,\n routingKey,\n channel,\n options\n );\n\n const { publishHook } = self.getConfig();\n if (publishHook) {\n safeExecuteInTheMiddle(\n () =>\n publishHook(span, {\n moduleVersion,\n exchange,\n routingKey,\n content,\n options: modifiedOptions,\n isConfirmChannel: true,\n }),\n e => {\n if (e) {\n diag.error('amqplib instrumentation: publishHook error', e);\n }\n },\n true\n );\n }\n\n const patchedOnConfirm = function (\n this: unknown,\n err: any,\n ok: Replies.Empty\n ) {\n try {\n callback?.call(this, err, ok);\n } finally {\n const { publishConfirmHook } = self.getConfig();\n if (publishConfirmHook) {\n safeExecuteInTheMiddle(\n () =>\n publishConfirmHook(span, {\n moduleVersion,\n exchange,\n routingKey,\n content,\n options,\n isConfirmChannel: true,\n confirmError: err,\n }),\n e => {\n if (e) {\n diag.error(\n 'amqplib instrumentation: publishConfirmHook error',\n e\n );\n }\n },\n true\n );\n }\n\n if (err) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: \"message confirmation has been nack'ed\",\n });\n }\n span.end();\n }\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 = markConfirmChannelTracing(context.active());\n const argumentsCopy = [...arguments];\n argumentsCopy[3] = modifiedOptions;\n argumentsCopy[4] = context.bind(\n unmarkConfirmChannelTracing(trace.setSpan(markedContext, span)),\n patchedOnConfirm\n );\n return context.with(markedContext, original.bind(this, ...argumentsCopy));\n };\n }\n\n private getPublishPatch(\n moduleVersion: string | undefined,\n original: Function\n ) {\n const self = this;\n return function publish(\n this: InstrumentationPublishChannel,\n exchange: string,\n routingKey: string,\n content: Buffer,\n options?: Options.Publish\n ): boolean {\n if (isConfirmChannelTracing(context.active())) {\n // work already done\n return original.apply(this, arguments);\n } else {\n const channel = this;\n const { span, modifiedOptions } = self.createPublishSpan(\n self,\n exchange,\n routingKey,\n channel,\n options\n );\n\n const { publishHook } = self.getConfig();\n if (publishHook) {\n safeExecuteInTheMiddle(\n () =>\n publishHook(span, {\n moduleVersion,\n exchange,\n routingKey,\n content,\n options: modifiedOptions,\n isConfirmChannel: false,\n }),\n e => {\n if (e) {\n diag.error('amqplib instrumentation: publishHook error', e);\n }\n },\n true\n );\n }\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 as any);\n span.end();\n return originalRes;\n }\n };\n }\n\n private createPublishSpan(\n self: this,\n exchange: string,\n routingKey: string,\n channel: InstrumentationPublishChannel,\n options?: Options.Publish\n ) {\n const normalizedExchange = normalizeExchange(exchange);\n\n const span = self.tracer.startSpan(`publish ${normalizedExchange}`, {\n kind: SpanKind.PRODUCER,\n attributes: {\n ...channel.connection[CONNECTION_ATTRIBUTES],\n [ATTR_MESSAGING_DESTINATION]: exchange,\n [ATTR_MESSAGING_DESTINATION_KIND]:\n MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n\n [ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey,\n [OLD_ATTR_MESSAGING_MESSAGE_ID]: options?.messageId,\n [ATTR_MESSAGING_CONVERSATION_ID]: options?.correlationId,\n },\n });\n const modifiedOptions = options ?? {};\n modifiedOptions.headers = modifiedOptions.headers ?? {};\n\n propagation.inject(\n trace.setSpan(context.active(), span),\n modifiedOptions.headers\n );\n\n return { span, modifiedOptions };\n }\n\n private endConsumerSpan(\n message: InstrumentationMessage,\n isRejected: boolean | null,\n operation: EndOperation,\n requeue: boolean | undefined\n ) {\n const storedSpan: Span | undefined = message[MESSAGE_STORED_SPAN];\n if (!storedSpan) return;\n if (isRejected !== false) {\n storedSpan.setStatus({\n code: SpanStatusCode.ERROR,\n message:\n operation !== EndOperation.ChannelClosed &&\n operation !== EndOperation.ChannelError\n ? `${operation} called on message${\n requeue === true\n ? ' with requeue'\n : requeue === false\n ? ' without requeue'\n : ''\n }`\n : operation,\n });\n }\n this.callConsumeEndHook(storedSpan, message, isRejected, operation);\n storedSpan.end();\n message[MESSAGE_STORED_SPAN] = undefined;\n }\n\n private endAllSpansOnChannel(\n channel: InstrumentationConsumeChannel,\n isRejected: boolean,\n operation: EndOperation,\n requeue: boolean | undefined\n ) {\n const spansNotEnded: { msg: Message }[] =\n channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n spansNotEnded.forEach(msgDetails => {\n this.endConsumerSpan(msgDetails.msg, isRejected, operation, requeue);\n });\n channel[CHANNEL_SPANS_NOT_ENDED] = [];\n }\n\n private callConsumeEndHook(\n span: Span,\n msg: InstrumentationMessage,\n rejected: boolean | null,\n endOperation: EndOperation\n ) {\n const { consumeEndHook } = this.getConfig();\n if (!consumeEndHook) return;\n\n safeExecuteInTheMiddle(\n () => consumeEndHook(span, { msg, rejected, endOperation }),\n e => {\n if (e) {\n diag.error('amqplib instrumentation: consumerEndHook error', e);\n }\n },\n true\n );\n }\n\n private checkConsumeTimeoutOnChannel(channel: InstrumentationConsumeChannel) {\n const currentTime = hrTime();\n const spansNotEnded = channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n let i: number;\n const { consumeTimeoutMs } = this.getConfig();\n for (i = 0; i < spansNotEnded.length; i++) {\n const currMessage = spansNotEnded[i];\n const timeFromConsume = hrTimeDuration(\n currMessage.timeOfConsume,\n currentTime\n );\n if (hrTimeToMilliseconds(timeFromConsume) < consumeTimeoutMs!) {\n break;\n }\n this.endConsumerSpan(\n currMessage.msg,\n null,\n EndOperation.InstrumentationTimeout,\n true\n );\n }\n spansNotEnded.splice(0, i);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.d.ts new file mode 100644 index 0000000..8428b74 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.d.ts @@ -0,0 +1,4 @@ +export { AmqplibInstrumentation } from './amqplib'; +export { DEFAULT_CONFIG, EndOperation } from './types'; +export type { AmqplibConsumeCustomAttributeFunction, AmqplibConsumeEndCustomAttributeFunction, AmqplibInstrumentationConfig, AmqplibPublishConfirmCustomAttributeFunction, AmqplibPublishCustomAttributeFunction, AmqplibPublishOptions, CommonMessageFields, ConsumeEndInfo, ConsumeInfo, ConsumeMessage, ConsumeMessageFields, Message, MessageFields, MessageProperties, PublishConfirmedInfo, PublishInfo, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js new file mode 100644 index 0000000..82a4be7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EndOperation = exports.DEFAULT_CONFIG = exports.AmqplibInstrumentation = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var amqplib_1 = require("./amqplib"); +Object.defineProperty(exports, "AmqplibInstrumentation", { enumerable: true, get: function () { return amqplib_1.AmqplibInstrumentation; } }); +var types_1 = require("./types"); +Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return types_1.DEFAULT_CONFIG; } }); +Object.defineProperty(exports, "EndOperation", { enumerable: true, get: function () { return types_1.EndOperation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js.map new file mode 100644 index 0000000..841806b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,qCAAmD;AAA1C,iHAAA,sBAAsB,OAAA;AAC/B,iCAAuD;AAA9C,uGAAA,cAAc,OAAA;AAAE,qGAAA,YAAY,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { AmqplibInstrumentation } from './amqplib';\nexport { DEFAULT_CONFIG, EndOperation } from './types';\nexport type {\n AmqplibConsumeCustomAttributeFunction,\n AmqplibConsumeEndCustomAttributeFunction,\n AmqplibInstrumentationConfig,\n AmqplibPublishConfirmCustomAttributeFunction,\n AmqplibPublishCustomAttributeFunction,\n AmqplibPublishOptions,\n CommonMessageFields,\n ConsumeEndInfo,\n ConsumeInfo,\n ConsumeMessage,\n ConsumeMessageFields,\n Message,\n MessageFields,\n MessageProperties,\n PublishConfirmedInfo,\n PublishInfo,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.d.ts new file mode 100644 index 0000000..0e860d4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.d.ts @@ -0,0 +1,63 @@ +/** + * The message destination name. This might be equal to the span name but is required nevertheless. + * + * @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}). + */ +export declare const ATTR_MESSAGING_DESTINATION: "messaging.destination"; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const ATTR_MESSAGING_DESTINATION_KIND: "messaging.destination_kind"; +/** + * RabbitMQ message routing key. + * + * @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}). + */ +export declare const ATTR_MESSAGING_RABBITMQ_ROUTING_KEY: "messaging.rabbitmq.routing_key"; +/** + * 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. + * + * @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}). + */ +export declare const MESSAGING_OPERATION_VALUE_PROCESS: "process"; +/** + * The name of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME. + */ +export declare const ATTR_MESSAGING_PROTOCOL: "messaging.protocol"; +/** + * The version of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION. + */ +export declare const ATTR_MESSAGING_PROTOCOL_VERSION: "messaging.protocol_version"; +/** + * Connection string. + * + * @deprecated Removed in semconv v1.17.0. + */ +export declare const ATTR_MESSAGING_URL: "messaging.url"; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const MESSAGING_DESTINATION_KIND_VALUE_TOPIC: "topic"; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @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}). + * + * Note: changing to `ATTR_MESSAGING_MESSAGE_ID` means a change in value from `messaging.message_id` to `messaging.message.id`. + */ +export declare const OLD_ATTR_MESSAGING_MESSAGE_ID: "messaging.message_id"; +/** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @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}). + */ +export declare const ATTR_MESSAGING_CONVERSATION_ID: "messaging.conversation_id"; +//# sourceMappingURL=semconv-obsolete.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js new file mode 100644 index 0000000..ff3fd46 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js @@ -0,0 +1,89 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains constants for values that where replaced/removed from + * Semantic Conventions long enough ago that they do not have `ATTR_*` + * constants in the `@opentelemetry/semantic-conventions` package. Eventually + * it is expected that this instrumention will be updated to emit telemetry + * using modern Semantic Conventions, dropping the need for the constants in + * this file. + */ +/** + * The message destination name. This might be equal to the span name but is required nevertheless. + * + * @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}). + */ +exports.ATTR_MESSAGING_DESTINATION = 'messaging.destination'; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +exports.ATTR_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind'; +/** + * RabbitMQ message routing key. + * + * @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}). + */ +exports.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key'; +/** + * 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. + * + * @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}). + */ +exports.MESSAGING_OPERATION_VALUE_PROCESS = 'process'; +/** + * The name of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME. + */ +exports.ATTR_MESSAGING_PROTOCOL = 'messaging.protocol'; +/** + * The version of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION. + */ +exports.ATTR_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version'; +/** + * Connection string. + * + * @deprecated Removed in semconv v1.17.0. + */ +exports.ATTR_MESSAGING_URL = 'messaging.url'; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +exports.MESSAGING_DESTINATION_KIND_VALUE_TOPIC = 'topic'; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @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}). + * + * Note: changing to `ATTR_MESSAGING_MESSAGE_ID` means a change in value from `messaging.message_id` to `messaging.message.id`. + */ +exports.OLD_ATTR_MESSAGING_MESSAGE_ID = 'messaging.message_id'; +/** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @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}). + */ +exports.ATTR_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id'; +//# sourceMappingURL=semconv-obsolete.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js.map new file mode 100644 index 0000000..0c4b656 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv-obsolete.js","sourceRoot":"","sources":["../../src/semconv-obsolete.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;;;;GAOG;AAEH;;;;GAIG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;GAIG;AACU,QAAA,+BAA+B,GAC1C,4BAAqC,CAAC;AAExC;;;;GAIG;AACU,QAAA,mCAAmC,GAC9C,gCAAyC,CAAC;AAE5C;;;;GAIG;AACU,QAAA,iCAAiC,GAAG,SAAkB,CAAC;AAEpE;;;;GAIG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACU,QAAA,+BAA+B,GAC1C,4BAAqC,CAAC;AAExC;;;;GAIG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,sBAA+B,CAAC;AAE7E;;;;GAIG;AACU,QAAA,8BAA8B,GACzC,2BAAoC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_MESSAGING_DESTINATION = 'messaging.destination' as const;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const ATTR_MESSAGING_DESTINATION_KIND =\n 'messaging.destination_kind' as const;\n\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 */\nexport const ATTR_MESSAGING_RABBITMQ_ROUTING_KEY =\n 'messaging.rabbitmq.routing_key' as const;\n\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 */\nexport const MESSAGING_OPERATION_VALUE_PROCESS = 'process' as const;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const ATTR_MESSAGING_PROTOCOL = 'messaging.protocol' as const;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const ATTR_MESSAGING_PROTOCOL_VERSION =\n 'messaging.protocol_version' as const;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const ATTR_MESSAGING_URL = 'messaging.url' as const;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGING_DESTINATION_KIND_VALUE_TOPIC = 'topic' as const;\n\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 */\nexport const OLD_ATTR_MESSAGING_MESSAGE_ID = 'messaging.message_id' as const;\n\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 */\nexport const ATTR_MESSAGING_CONVERSATION_ID =\n 'messaging.conversation_id' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.d.ts new file mode 100644 index 0000000..38c245b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.d.ts @@ -0,0 +1,41 @@ +/** + * Deprecated, use `messaging.operation.type` instead. + * + * @example publish + * @example create + * @example process + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.operation.type`. + */ +export declare const ATTR_MESSAGING_OPERATION: "messaging.operation"; +/** + * The messaging system as identified by the client instrumentation. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SYSTEM: "messaging.system"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js new file mode 100644 index 0000000..aeeb371 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js @@ -0,0 +1,64 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_MESSAGING_SYSTEM = exports.ATTR_MESSAGING_OPERATION = void 0; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Deprecated, use `messaging.operation.type` instead. + * + * @example publish + * @example create + * @example process + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.operation.type`. + */ +exports.ATTR_MESSAGING_OPERATION = 'messaging.operation'; +/** + * The messaging system as identified by the client instrumentation. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_SYSTEM = 'messaging.system'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js.map new file mode 100644 index 0000000..089a807 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_MESSAGING_OPERATION = 'messaging.operation' as const;\n\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 */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.d.ts new file mode 100644 index 0000000..5c70ac8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.d.ts @@ -0,0 +1,132 @@ +/// +/// +import { Span } from '@opentelemetry/api'; +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export interface PublishInfo { + moduleVersion: string | undefined; + exchange: string; + routingKey: string; + content: Buffer; + options?: AmqplibPublishOptions; + isConfirmChannel?: boolean; +} +export interface PublishConfirmedInfo extends PublishInfo { + confirmError?: any; +} +export interface ConsumeInfo { + moduleVersion: string | undefined; + msg: ConsumeMessage; +} +export interface ConsumeEndInfo { + msg: ConsumeMessage; + rejected: boolean | null; + endOperation: EndOperation; +} +export interface AmqplibPublishCustomAttributeFunction { + (span: Span, publishInfo: PublishInfo): void; +} +export interface AmqplibPublishConfirmCustomAttributeFunction { + (span: Span, publishConfirmedInto: PublishConfirmedInfo): void; +} +export interface AmqplibConsumeCustomAttributeFunction { + (span: Span, consumeInfo: ConsumeInfo): void; +} +export interface AmqplibConsumeEndCustomAttributeFunction { + (span: Span, consumeEndInfo: ConsumeEndInfo): void; +} +export declare enum EndOperation { + AutoAck = "auto ack", + Ack = "ack", + AckAll = "ackAll", + Reject = "reject", + Nack = "nack", + NackAll = "nackAll", + ChannelClosed = "channel closed", + ChannelError = "channel error", + InstrumentationTimeout = "instrumentation timeout" +} +export interface AmqplibInstrumentationConfig extends InstrumentationConfig { + /** hook for adding custom attributes before publish message is sent */ + publishHook?: AmqplibPublishCustomAttributeFunction; + /** hook for adding custom attributes after publish message is confirmed by the broker */ + publishConfirmHook?: AmqplibPublishConfirmCustomAttributeFunction; + /** hook for adding custom attributes before consumer message is processed */ + consumeHook?: AmqplibConsumeCustomAttributeFunction; + /** hook for adding custom attributes after consumer message is acked to server */ + consumeEndHook?: AmqplibConsumeEndCustomAttributeFunction; + /** + * When user is setting up consume callback, it is user's responsibility to call + * ack/nack etc on the msg to resolve it in the server. + * If user is not calling the ack, the message will stay in the queue until + * channel is closed, or until server timeout expires (if configured). + * While we wait for the ack, a reference to the message is stored in plugin, which + * will never be garbage collected. + * To prevent memory leak, plugin has it's own configuration of timeout, which + * will close the span if user did not call ack after this timeout. + * If timeout is not big enough, span might be closed with 'InstrumentationTimeout', + * and then received valid ack from the user later which will not be instrumented. + * + * Default is 1 minute + */ + consumeTimeoutMs?: number; + /** option to use a span link for the consume message instead of continuing a trace */ + useLinksForConsume?: boolean; +} +export declare const DEFAULT_CONFIG: AmqplibInstrumentationConfig; +export interface AmqplibPublishOptions { + expiration?: string | number; + userId?: string; + CC?: string | string[]; + mandatory?: boolean; + persistent?: boolean; + deliveryMode?: boolean | number; + BCC?: string | string[]; + contentType?: string; + contentEncoding?: string; + headers?: any; + priority?: number; + correlationId?: string; + replyTo?: string; + messageId?: string; + timestamp?: number; + type?: string; + appId?: string; +} +export interface Message { + content: Buffer; + fields: MessageFields; + properties: MessageProperties; +} +export interface ConsumeMessage extends Message { + fields: ConsumeMessageFields; +} +export interface CommonMessageFields { + deliveryTag: number; + redelivered: boolean; + exchange: string; + routingKey: string; +} +export interface MessageFields extends CommonMessageFields { + messageCount?: number; + consumerTag?: string; +} +export interface ConsumeMessageFields extends CommonMessageFields { + deliveryTag: number; +} +export interface MessageProperties { + contentType: any | undefined; + contentEncoding: any | undefined; + headers: any; + deliveryMode: any | undefined; + priority: any | undefined; + correlationId: any | undefined; + replyTo: any | undefined; + expiration: any | undefined; + messageId: any | undefined; + timestamp: any | undefined; + type: any | undefined; + userId: any | undefined; + appId: any | undefined; + clusterId: any | undefined; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js new file mode 100644 index 0000000..6973978 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEFAULT_CONFIG = exports.EndOperation = void 0; +var EndOperation; +(function (EndOperation) { + EndOperation["AutoAck"] = "auto ack"; + EndOperation["Ack"] = "ack"; + EndOperation["AckAll"] = "ackAll"; + EndOperation["Reject"] = "reject"; + EndOperation["Nack"] = "nack"; + EndOperation["NackAll"] = "nackAll"; + EndOperation["ChannelClosed"] = "channel closed"; + EndOperation["ChannelError"] = "channel error"; + EndOperation["InstrumentationTimeout"] = "instrumentation timeout"; +})(EndOperation = exports.EndOperation || (exports.EndOperation = {})); +exports.DEFAULT_CONFIG = { + consumeTimeoutMs: 1000 * 60, + useLinksForConsume: false, +}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js.map new file mode 100644 index 0000000..c6d7403 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AA0DA,IAAY,YAUX;AAVD,WAAY,YAAY;IACtB,oCAAoB,CAAA;IACpB,2BAAW,CAAA;IACX,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;IACjB,6BAAa,CAAA;IACb,mCAAmB,CAAA;IACnB,gDAAgC,CAAA;IAChC,8CAA8B,CAAA;IAC9B,kEAAkD,CAAA;AACpD,CAAC,EAVW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAUvB;AAmCY,QAAA,cAAc,GAAiC;IAC1D,gBAAgB,EAAE,IAAI,GAAG,EAAE;IAC3B,kBAAkB,EAAE,KAAK;CAC1B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface PublishInfo {\n moduleVersion: string | undefined;\n exchange: string;\n routingKey: string;\n content: Buffer;\n options?: AmqplibPublishOptions;\n isConfirmChannel?: boolean;\n}\n\nexport interface PublishConfirmedInfo extends PublishInfo {\n confirmError?: any;\n}\n\nexport interface ConsumeInfo {\n moduleVersion: string | undefined;\n msg: ConsumeMessage;\n}\n\nexport interface ConsumeEndInfo {\n msg: ConsumeMessage;\n rejected: boolean | null;\n endOperation: EndOperation;\n}\n\nexport interface AmqplibPublishCustomAttributeFunction {\n (span: Span, publishInfo: PublishInfo): void;\n}\n\nexport interface AmqplibPublishConfirmCustomAttributeFunction {\n (span: Span, publishConfirmedInto: PublishConfirmedInfo): void;\n}\n\nexport interface AmqplibConsumeCustomAttributeFunction {\n (span: Span, consumeInfo: ConsumeInfo): void;\n}\n\nexport interface AmqplibConsumeEndCustomAttributeFunction {\n (span: Span, consumeEndInfo: ConsumeEndInfo): void;\n}\n\nexport enum EndOperation {\n AutoAck = 'auto ack',\n Ack = 'ack',\n AckAll = 'ackAll',\n Reject = 'reject',\n Nack = 'nack',\n NackAll = 'nackAll',\n ChannelClosed = 'channel closed',\n ChannelError = 'channel error',\n InstrumentationTimeout = 'instrumentation timeout',\n}\n\nexport interface AmqplibInstrumentationConfig extends InstrumentationConfig {\n /** hook for adding custom attributes before publish message is sent */\n publishHook?: AmqplibPublishCustomAttributeFunction;\n\n /** hook for adding custom attributes after publish message is confirmed by the broker */\n publishConfirmHook?: AmqplibPublishConfirmCustomAttributeFunction;\n\n /** hook for adding custom attributes before consumer message is processed */\n consumeHook?: AmqplibConsumeCustomAttributeFunction;\n\n /** hook for adding custom attributes after consumer message is acked to server */\n consumeEndHook?: AmqplibConsumeEndCustomAttributeFunction;\n\n /**\n * When user is setting up consume callback, it is user's responsibility to call\n * ack/nack etc on the msg to resolve it in the server.\n * If user is not calling the ack, the message will stay in the queue until\n * channel is closed, or until server timeout expires (if configured).\n * While we wait for the ack, a reference to the message is stored in plugin, which\n * will never be garbage collected.\n * To prevent memory leak, plugin has it's own configuration of timeout, which\n * will close the span if user did not call ack after this timeout.\n * If timeout is not big enough, span might be closed with 'InstrumentationTimeout',\n * and then received valid ack from the user later which will not be instrumented.\n *\n * Default is 1 minute\n */\n consumeTimeoutMs?: number;\n\n /** option to use a span link for the consume message instead of continuing a trace */\n useLinksForConsume?: boolean;\n}\n\nexport const DEFAULT_CONFIG: AmqplibInstrumentationConfig = {\n consumeTimeoutMs: 1000 * 60, // 1 minute\n useLinksForConsume: false,\n};\n\n// The following types are vendored from `@types/amqplib@0.10.1` - commit SHA: 4205e03127692a40b4871709a7134fe4e2ed5510\n\n// Vendored from: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/4205e03127692a40b4871709a7134fe4e2ed5510/types/amqplib/properties.d.ts#L108\n// This exists in `@types/amqplib` as `Options.Publish`. We're renaming things\n// here to avoid importing the whole Options namespace.\nexport interface AmqplibPublishOptions {\n expiration?: string | number;\n userId?: string;\n CC?: string | string[];\n\n mandatory?: boolean;\n persistent?: boolean;\n deliveryMode?: boolean | number;\n BCC?: string | string[];\n\n contentType?: string;\n contentEncoding?: string;\n headers?: any;\n priority?: number;\n correlationId?: string;\n replyTo?: string;\n messageId?: string;\n timestamp?: number;\n type?: string;\n appId?: string;\n}\n\n// Vendored from: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/4205e03127692a40b4871709a7134fe4e2ed5510/types/amqplib/properties.d.ts#L142\nexport interface Message {\n content: Buffer;\n fields: MessageFields;\n properties: MessageProperties;\n}\n\nexport interface ConsumeMessage extends Message {\n fields: ConsumeMessageFields;\n}\n\nexport interface CommonMessageFields {\n deliveryTag: number;\n redelivered: boolean;\n exchange: string;\n routingKey: string;\n}\n\nexport interface MessageFields extends CommonMessageFields {\n messageCount?: number;\n consumerTag?: string;\n}\n\nexport interface ConsumeMessageFields extends CommonMessageFields {\n deliveryTag: number;\n}\n\nexport interface MessageProperties {\n contentType: any | undefined;\n contentEncoding: any | undefined;\n headers: any;\n deliveryMode: any | undefined;\n priority: any | undefined;\n correlationId: any | undefined;\n replyTo: any | undefined;\n expiration: any | undefined;\n messageId: any | undefined;\n timestamp: any | undefined;\n type: any | undefined;\n userId: any | undefined;\n appId: any | undefined;\n clusterId: any | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.d.ts new file mode 100644 index 0000000..b25f5f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.d.ts @@ -0,0 +1,35 @@ +/// +import { Context, HrTime, Span, Attributes } from '@opentelemetry/api'; +import { SemconvStability } from '@opentelemetry/instrumentation'; +import type * as amqp from 'amqplib'; +export declare const MESSAGE_STORED_SPAN: unique symbol; +export declare const CHANNEL_SPANS_NOT_ENDED: unique symbol; +export declare const CHANNEL_CONSUME_TIMEOUT_TIMER: unique symbol; +export declare const CONNECTION_ATTRIBUTES: unique symbol; +export type InstrumentationConnection = amqp.Connection & { + [CONNECTION_ATTRIBUTES]?: Attributes; +}; +export type InstrumentationPublishChannel = (amqp.Channel | amqp.ConfirmChannel) & { + connection: InstrumentationConnection; +}; +export type InstrumentationConsumeChannel = amqp.Channel & { + connection: InstrumentationConnection; + [CHANNEL_SPANS_NOT_ENDED]?: { + msg: amqp.ConsumeMessage; + timeOfConsume: HrTime; + }[]; + [CHANNEL_CONSUME_TIMEOUT_TIMER]?: NodeJS.Timeout; +}; +export type InstrumentationMessage = amqp.Message & { + [MESSAGE_STORED_SPAN]?: Span; +}; +export type InstrumentationConsumeMessage = amqp.ConsumeMessage & { + [MESSAGE_STORED_SPAN]?: Span; +}; +export declare const normalizeExchange: (exchangeName: string) => string; +export declare const getConnectionAttributesFromServer: (conn: amqp.Connection) => Attributes; +export declare const getConnectionAttributesFromUrl: (url: string | amqp.Options.Connect, netSemconvStability: SemconvStability) => Attributes; +export declare const markConfirmChannelTracing: (context: Context) => Context; +export declare const unmarkConfirmChannelTracing: (context: Context) => Context; +export declare const isConfirmChannelTracing: (context: Context) => boolean; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js new file mode 100644 index 0000000..670f4eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js @@ -0,0 +1,156 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const api_1 = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +const semconv_obsolete_1 = require("../src/semconv-obsolete"); +exports.MESSAGE_STORED_SPAN = Symbol('opentelemetry.amqplib.message.stored-span'); +exports.CHANNEL_SPANS_NOT_ENDED = Symbol('opentelemetry.amqplib.channel.spans-not-ended'); +exports.CHANNEL_CONSUME_TIMEOUT_TIMER = Symbol('opentelemetry.amqplib.channel.consumer-timeout-timer'); +exports.CONNECTION_ATTRIBUTES = Symbol('opentelemetry.amqplib.connection.attributes'); +const IS_CONFIRM_CHANNEL_CONTEXT_KEY = (0, api_1.createContextKey)('opentelemetry.amqplib.channel.is-confirm-channel'); +const normalizeExchange = (exchangeName) => exchangeName !== '' ? exchangeName : ''; +exports.normalizeExchange = normalizeExchange; +const censorPassword = (url) => { + return url.replace(/:[^:@/]*@/, ':***@'); +}; +const getPort = (portFromUrl, resolvedProtocol) => { + // we are using the resolved protocol which is upper case + // this code mimic the behavior of the amqplib which is used to set connection params + return portFromUrl || (resolvedProtocol === 'AMQP' ? 5672 : 5671); +}; +const getProtocol = (protocolFromUrl) => { + const resolvedProtocol = protocolFromUrl || 'amqp'; + // the substring removed the ':' part of the protocol ('amqp:' -> 'amqp') + const noEndingColon = resolvedProtocol.endsWith(':') + ? resolvedProtocol.substring(0, resolvedProtocol.length - 1) + : resolvedProtocol; + // upper cases to match spec + return noEndingColon.toUpperCase(); +}; +const getHostname = (hostnameFromUrl) => { + // if user supplies empty hostname, it gets forwarded to 'net' package which default it to localhost. + // https://nodejs.org/docs/latest-v12.x/api/net.html#net_socket_connect_options_connectlistener + return hostnameFromUrl || 'localhost'; +}; +const extractConnectionAttributeOrLog = (url, attributeKey, attributeValue, nameForLog) => { + if (attributeValue) { + return { [attributeKey]: attributeValue }; + } + else { + api_1.diag.error(`amqplib instrumentation: could not extract connection attribute ${nameForLog} from user supplied url`, { + url, + }); + return {}; + } +}; +const getConnectionAttributesFromServer = (conn) => { + const product = conn.serverProperties.product?.toLowerCase?.(); + if (product) { + return { + [semconv_1.ATTR_MESSAGING_SYSTEM]: product, + }; + } + else { + return {}; + } +}; +exports.getConnectionAttributesFromServer = getConnectionAttributesFromServer; +const getConnectionAttributesFromUrl = (url, netSemconvStability) => { + const attributes = { + [semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library + }; + url = url || 'amqp://localhost'; + if (typeof url === 'object') { + const connectOptions = url; + const protocol = getProtocol(connectOptions?.protocol); + Object.assign(attributes, { + ...extractConnectionAttributeOrLog(url, semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL, protocol, 'protocol'), + }); + const hostname = getHostname(connectOptions?.hostname); + if (netSemconvStability & instrumentation_1.SemconvStability.OLD) { + Object.assign(attributes, { + ...extractConnectionAttributeOrLog(url, semconv_1.ATTR_NET_PEER_NAME, hostname, 'hostname'), + }); + } + if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + Object.assign(attributes, { + ...extractConnectionAttributeOrLog(url, semantic_conventions_1.ATTR_SERVER_ADDRESS, hostname, 'hostname'), + }); + } + const port = getPort(connectOptions.port, protocol); + if (netSemconvStability & instrumentation_1.SemconvStability.OLD) { + Object.assign(attributes, extractConnectionAttributeOrLog(url, semconv_1.ATTR_NET_PEER_PORT, port, 'port')); + } + if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + Object.assign(attributes, extractConnectionAttributeOrLog(url, semantic_conventions_1.ATTR_SERVER_PORT, port, 'port')); + } + } + else { + const censoredUrl = censorPassword(url); + attributes[semconv_obsolete_1.ATTR_MESSAGING_URL] = censoredUrl; + try { + const urlParts = new URL(censoredUrl); + const protocol = getProtocol(urlParts.protocol); + Object.assign(attributes, { + ...extractConnectionAttributeOrLog(censoredUrl, semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL, protocol, 'protocol'), + }); + const hostname = getHostname(urlParts.hostname); + if (netSemconvStability & instrumentation_1.SemconvStability.OLD) { + Object.assign(attributes, { + ...extractConnectionAttributeOrLog(censoredUrl, semconv_1.ATTR_NET_PEER_NAME, hostname, 'hostname'), + }); + } + if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + Object.assign(attributes, { + ...extractConnectionAttributeOrLog(censoredUrl, semantic_conventions_1.ATTR_SERVER_ADDRESS, hostname, 'hostname'), + }); + } + const port = getPort(urlParts.port ? parseInt(urlParts.port) : undefined, protocol); + if (netSemconvStability & instrumentation_1.SemconvStability.OLD) { + Object.assign(attributes, extractConnectionAttributeOrLog(censoredUrl, semconv_1.ATTR_NET_PEER_PORT, port, 'port')); + } + if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + Object.assign(attributes, extractConnectionAttributeOrLog(censoredUrl, semantic_conventions_1.ATTR_SERVER_PORT, port, 'port')); + } + } + catch (err) { + api_1.diag.error('amqplib instrumentation: error while extracting connection details from connection url', { + censoredUrl, + err, + }); + } + } + return attributes; +}; +exports.getConnectionAttributesFromUrl = getConnectionAttributesFromUrl; +const markConfirmChannelTracing = (context) => { + return context.setValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY, true); +}; +exports.markConfirmChannelTracing = markConfirmChannelTracing; +const unmarkConfirmChannelTracing = (context) => { + return context.deleteValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY); +}; +exports.unmarkConfirmChannelTracing = unmarkConfirmChannelTracing; +const isConfirmChannelTracing = (context) => { + return context.getValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY) === true; +}; +exports.isConfirmChannelTracing = isConfirmChannelTracing; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js.map new file mode 100644 index 0000000..eb1679b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Context,\n createContextKey,\n diag,\n HrTime,\n Span,\n Attributes,\n AttributeValue,\n} from '@opentelemetry/api';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport {\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_MESSAGING_SYSTEM,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n} from './semconv';\nimport {\n ATTR_MESSAGING_PROTOCOL,\n ATTR_MESSAGING_PROTOCOL_VERSION,\n ATTR_MESSAGING_URL,\n} from '../src/semconv-obsolete';\nimport type * as amqp from 'amqplib';\n\nexport const MESSAGE_STORED_SPAN: unique symbol = Symbol(\n 'opentelemetry.amqplib.message.stored-span'\n);\nexport const CHANNEL_SPANS_NOT_ENDED: unique symbol = Symbol(\n 'opentelemetry.amqplib.channel.spans-not-ended'\n);\nexport const CHANNEL_CONSUME_TIMEOUT_TIMER: unique symbol = Symbol(\n 'opentelemetry.amqplib.channel.consumer-timeout-timer'\n);\nexport const CONNECTION_ATTRIBUTES: unique symbol = Symbol(\n 'opentelemetry.amqplib.connection.attributes'\n);\n\nexport type InstrumentationConnection = amqp.Connection & {\n [CONNECTION_ATTRIBUTES]?: Attributes;\n};\nexport type InstrumentationPublishChannel = (\n | amqp.Channel\n | amqp.ConfirmChannel\n) & { connection: InstrumentationConnection };\nexport type InstrumentationConsumeChannel = amqp.Channel & {\n connection: InstrumentationConnection;\n [CHANNEL_SPANS_NOT_ENDED]?: {\n msg: amqp.ConsumeMessage;\n timeOfConsume: HrTime;\n }[];\n [CHANNEL_CONSUME_TIMEOUT_TIMER]?: NodeJS.Timeout;\n};\nexport type InstrumentationMessage = amqp.Message & {\n [MESSAGE_STORED_SPAN]?: Span;\n};\nexport type InstrumentationConsumeMessage = amqp.ConsumeMessage & {\n [MESSAGE_STORED_SPAN]?: Span;\n};\n\nconst IS_CONFIRM_CHANNEL_CONTEXT_KEY: symbol = createContextKey(\n 'opentelemetry.amqplib.channel.is-confirm-channel'\n);\n\nexport const normalizeExchange = (exchangeName: string) =>\n exchangeName !== '' ? exchangeName : '';\n\nconst censorPassword = (url: string): string => {\n return url.replace(/:[^:@/]*@/, ':***@');\n};\n\nconst getPort = (\n portFromUrl: number | undefined,\n resolvedProtocol: string\n): number => {\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};\n\nconst getProtocol = (protocolFromUrl: string | undefined): string => {\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};\n\nconst getHostname = (hostnameFromUrl: string | undefined): string => {\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};\n\nconst extractConnectionAttributeOrLog = (\n url: string | amqp.Options.Connect,\n attributeKey: string,\n attributeValue: AttributeValue,\n nameForLog: string\n): Attributes => {\n if (attributeValue) {\n return { [attributeKey]: attributeValue };\n } else {\n diag.error(\n `amqplib instrumentation: could not extract connection attribute ${nameForLog} from user supplied url`,\n {\n url,\n }\n );\n return {};\n }\n};\n\nexport const getConnectionAttributesFromServer = (\n conn: amqp.Connection\n): Attributes => {\n const product = conn.serverProperties.product?.toLowerCase?.();\n if (product) {\n return {\n [ATTR_MESSAGING_SYSTEM]: product,\n };\n } else {\n return {};\n }\n};\n\nexport const getConnectionAttributesFromUrl = (\n url: string | amqp.Options.Connect,\n netSemconvStability: SemconvStability\n): Attributes => {\n const attributes: Attributes = {\n [ATTR_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library\n };\n\n url = url || 'amqp://localhost';\n if (typeof url === 'object') {\n const connectOptions = url as amqp.Options.Connect;\n\n const protocol = getProtocol(connectOptions?.protocol);\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n url,\n ATTR_MESSAGING_PROTOCOL,\n protocol,\n 'protocol'\n ),\n });\n\n const hostname = getHostname(connectOptions?.hostname);\n if (netSemconvStability & SemconvStability.OLD) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n url,\n ATTR_NET_PEER_NAME,\n hostname,\n 'hostname'\n ),\n });\n }\n if (netSemconvStability & SemconvStability.STABLE) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n url,\n ATTR_SERVER_ADDRESS,\n hostname,\n 'hostname'\n ),\n });\n }\n\n const port = getPort(connectOptions.port, protocol);\n if (netSemconvStability & SemconvStability.OLD) {\n Object.assign(\n attributes,\n extractConnectionAttributeOrLog(url, ATTR_NET_PEER_PORT, port, 'port')\n );\n }\n if (netSemconvStability & SemconvStability.STABLE) {\n Object.assign(\n attributes,\n extractConnectionAttributeOrLog(url, ATTR_SERVER_PORT, port, 'port')\n );\n }\n } else {\n const censoredUrl = censorPassword(url);\n attributes[ATTR_MESSAGING_URL] = censoredUrl;\n try {\n const urlParts = new URL(censoredUrl);\n\n const protocol = getProtocol(urlParts.protocol);\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n censoredUrl,\n ATTR_MESSAGING_PROTOCOL,\n protocol,\n 'protocol'\n ),\n });\n\n const hostname = getHostname(urlParts.hostname);\n if (netSemconvStability & SemconvStability.OLD) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n censoredUrl,\n ATTR_NET_PEER_NAME,\n hostname,\n 'hostname'\n ),\n });\n }\n if (netSemconvStability & SemconvStability.STABLE) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n censoredUrl,\n ATTR_SERVER_ADDRESS,\n hostname,\n 'hostname'\n ),\n });\n }\n\n const port = getPort(\n urlParts.port ? parseInt(urlParts.port) : undefined,\n protocol\n );\n if (netSemconvStability & SemconvStability.OLD) {\n Object.assign(\n attributes,\n extractConnectionAttributeOrLog(\n censoredUrl,\n ATTR_NET_PEER_PORT,\n port,\n 'port'\n )\n );\n }\n if (netSemconvStability & SemconvStability.STABLE) {\n Object.assign(\n attributes,\n extractConnectionAttributeOrLog(\n censoredUrl,\n ATTR_SERVER_PORT,\n port,\n 'port'\n )\n );\n }\n } catch (err) {\n diag.error(\n 'amqplib instrumentation: error while extracting connection details from connection url',\n {\n censoredUrl,\n err,\n }\n );\n }\n }\n return attributes;\n};\n\nexport const markConfirmChannelTracing = (context: Context) => {\n return context.setValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY, true);\n};\n\nexport const unmarkConfirmChannelTracing = (context: Context) => {\n return context.deleteValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY);\n};\n\nexport const isConfirmChannelTracing = (context: Context) => {\n return context.getValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY) === true;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.d.ts new file mode 100644 index 0000000..da7651a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.58.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-amqplib"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js new file mode 100644 index 0000000..580f2b3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.58.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-amqplib'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js.map new file mode 100644 index 0000000..7fd8dd9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,wCAAwC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.58.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-amqplib';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/package.json new file mode 100644 index 0000000..7d97705 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-amqplib/package.json @@ -0,0 +1,68 @@ +{ + "name": "@opentelemetry/instrumentation-amqplib", + "version": "0.58.0", + "description": "OpenTelemetry instrumentation for the `amqplib` messaging client for RabbitMQ", + "keywords": [ + "amqplib", + "opentelemetry", + "rabbitmq", + "AMQP 0-9-1" + ], + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-amqplib#readme", + "license": "Apache-2.0", + "author": "OpenTelemetry Authors", + "bugs": { + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib/issues" + }, + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-amqplib" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-amqplib", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-services:start": "cd ../.. && npm run test-services:start rabbitmq", + "test-services:stop": "cd ../.. && npm run test-services:stop rabbitmq", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.33.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@types/amqplib": "^0.10.7", + "@types/lodash": "4.17.21", + "amqplib": "0.8.0", + "lodash": "4.17.21" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/README.md new file mode 100644 index 0000000..ad24eef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/README.md @@ -0,0 +1,80 @@ +# OpenTelemetry Connect Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`connect`](https://github.com/senchalabs/connect) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Status + +| Maturity | [Component Owner](../../.github/component_owners.yml) | Compatibility | +|----------------------------------------------------|-------------------------------------------------------|-----------------------| +| [Unmaintained](../../CONTRIBUTING.md#unmaintained) | N/A | API 1.0+
                          SDK 1.0+ | + +## Installation + +This instrumentation relies on HTTP calls to also be instrumented. Make sure you install and enable both, otherwise you will have spans that are not connected to each other. + +```bash +npm install --save @opentelemetry/instrumentation-http @opentelemetry/instrumentation-connect +``` + +### Supported Versions + +- [`connect`](https://www.npmjs.com/package/connect) versions `>=3.0.0 <4` + +## Usage + +OpenTelemetry Connect Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems. + +To load the instrumentation, specify it in the Node Tracer's configuration: + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); +const { ConnectInstrumentation } = require('@opentelemetry/instrumentation-connnect'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + // Connect instrumentation expects HTTP layer to be instrumented + new HttpInstrumentation(), + new ConnectInstrumentation(), + ], +}); +``` + +See [examples/connect](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/connect) for a short example. + +## Semantic Conventions + +This package implements Semantic Convention v1.33.1. + +Attributes collected: + +| Attribute | Short Description | +|--------------|------------------------------------| +| `http.route` | The matched route (path template). | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-connect +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-connect.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.d.ts new file mode 100644 index 0000000..2264b0c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.d.ts @@ -0,0 +1,13 @@ +export declare enum AttributeNames { + CONNECT_TYPE = "connect.type", + CONNECT_NAME = "connect.name" +} +export declare enum ConnectTypes { + MIDDLEWARE = "middleware", + REQUEST_HANDLER = "request_handler" +} +export declare enum ConnectNames { + MIDDLEWARE = "middleware", + REQUEST_HANDLER = "request handler" +} +//# sourceMappingURL=AttributeNames.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.js new file mode 100644 index 0000000..fad0b04 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.js @@ -0,0 +1,34 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConnectNames = exports.ConnectTypes = exports.AttributeNames = void 0; +var AttributeNames; +(function (AttributeNames) { + AttributeNames["CONNECT_TYPE"] = "connect.type"; + AttributeNames["CONNECT_NAME"] = "connect.name"; +})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {})); +var ConnectTypes; +(function (ConnectTypes) { + ConnectTypes["MIDDLEWARE"] = "middleware"; + ConnectTypes["REQUEST_HANDLER"] = "request_handler"; +})(ConnectTypes = exports.ConnectTypes || (exports.ConnectTypes = {})); +var ConnectNames; +(function (ConnectNames) { + ConnectNames["MIDDLEWARE"] = "middleware"; + ConnectNames["REQUEST_HANDLER"] = "request handler"; +})(ConnectNames = exports.ConnectNames || (exports.ConnectNames = {})); +//# sourceMappingURL=AttributeNames.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.js.map new file mode 100644 index 0000000..6da8111 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AttributeNames.js","sourceRoot":"","sources":["../../../src/enums/AttributeNames.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,+CAA6B,CAAA;IAC7B,+CAA6B,CAAA;AAC/B,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,yCAAyB,CAAA;IACzB,mDAAmC,CAAA;AACrC,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,yCAAyB,CAAA;IACzB,mDAAmC,CAAA;AACrC,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum AttributeNames {\n CONNECT_TYPE = 'connect.type',\n CONNECT_NAME = 'connect.name',\n}\n\nexport enum ConnectTypes {\n MIDDLEWARE = 'middleware',\n REQUEST_HANDLER = 'request_handler',\n}\n\nexport enum ConnectNames {\n MIDDLEWARE = 'middleware',\n REQUEST_HANDLER = 'request handler',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/index.d.ts new file mode 100644 index 0000000..af68622 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { ConnectInstrumentation, ANONYMOUS_NAME } from './instrumentation'; +export { AttributeNames, ConnectNames, ConnectTypes, } from './enums/AttributeNames'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/index.js new file mode 100644 index 0000000..81576cc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/index.js @@ -0,0 +1,26 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConnectTypes = exports.ConnectNames = exports.AttributeNames = exports.ANONYMOUS_NAME = exports.ConnectInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "ConnectInstrumentation", { enumerable: true, get: function () { return instrumentation_1.ConnectInstrumentation; } }); +Object.defineProperty(exports, "ANONYMOUS_NAME", { enumerable: true, get: function () { return instrumentation_1.ANONYMOUS_NAME; } }); +var AttributeNames_1 = require("./enums/AttributeNames"); +Object.defineProperty(exports, "AttributeNames", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } }); +Object.defineProperty(exports, "ConnectNames", { enumerable: true, get: function () { return AttributeNames_1.ConnectNames; } }); +Object.defineProperty(exports, "ConnectTypes", { enumerable: true, get: function () { return AttributeNames_1.ConnectTypes; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/index.js.map new file mode 100644 index 0000000..2395989 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA2E;AAAlE,yHAAA,sBAAsB,OAAA;AAAE,iHAAA,cAAc,OAAA;AAC/C,yDAIgC;AAH9B,gHAAA,cAAc,OAAA;AACd,8GAAA,YAAY,OAAA;AACZ,8GAAA,YAAY,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { ConnectInstrumentation, ANONYMOUS_NAME } from './instrumentation';\nexport {\n AttributeNames,\n ConnectNames,\n ConnectTypes,\n} from './enums/AttributeNames';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.d.ts new file mode 100644 index 0000000..f8a0015 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.d.ts @@ -0,0 +1,19 @@ +import { Span } from '@opentelemetry/api'; +import type { HandleFunction, NextFunction, Server } from 'connect'; +import { Use } from './internal-types'; +import { InstrumentationBase, InstrumentationConfig, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +export declare const ANONYMOUS_NAME = "anonymous"; +/** Connect instrumentation for OpenTelemetry */ +export declare class ConnectInstrumentation extends InstrumentationBase { + constructor(config?: InstrumentationConfig); + init(): InstrumentationNodeModuleDefinition[]; + private _patchApp; + private _patchConstructor; + _patchNext(next: NextFunction, finishSpan: () => void): NextFunction; + _startSpan(routeName: string, middleWare: HandleFunction): Span; + _patchMiddleware(routeName: string, middleWare: HandleFunction): HandleFunction; + _patchUse(original: Server['use']): Use; + _patchHandle(original: Server['handle']): Server['handle']; + _patchOut(out: NextFunction, completeStack: () => void): NextFunction; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.js new file mode 100644 index 0000000..0dbef37 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.js @@ -0,0 +1,167 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConnectInstrumentation = exports.ANONYMOUS_NAME = void 0; +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const AttributeNames_1 = require("./enums/AttributeNames"); +/** @knipignore */ +const version_1 = require("./version"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const utils_1 = require("./utils"); +exports.ANONYMOUS_NAME = 'anonymous'; +/** Connect instrumentation for OpenTelemetry */ +class ConnectInstrumentation extends instrumentation_1.InstrumentationBase { + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + } + init() { + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition('connect', ['>=3.0.0 <4'], moduleExports => { + return this._patchConstructor(moduleExports); + }), + ]; + } + _patchApp(patchedApp) { + if (!(0, instrumentation_1.isWrapped)(patchedApp.use)) { + this._wrap(patchedApp, 'use', this._patchUse.bind(this)); + } + if (!(0, instrumentation_1.isWrapped)(patchedApp.handle)) { + this._wrap(patchedApp, 'handle', this._patchHandle.bind(this)); + } + } + _patchConstructor(original) { + const instrumentation = this; + return function (...args) { + const app = original.apply(this, args); + instrumentation._patchApp(app); + return app; + }; + } + _patchNext(next, finishSpan) { + return function nextFunction(err) { + const result = next.apply(this, [err]); + finishSpan(); + return result; + }; + } + _startSpan(routeName, middleWare) { + let connectType; + let connectName; + let connectTypeName; + if (routeName) { + connectType = AttributeNames_1.ConnectTypes.REQUEST_HANDLER; + connectTypeName = AttributeNames_1.ConnectNames.REQUEST_HANDLER; + connectName = routeName; + } + else { + connectType = AttributeNames_1.ConnectTypes.MIDDLEWARE; + connectTypeName = AttributeNames_1.ConnectNames.MIDDLEWARE; + connectName = middleWare.name || exports.ANONYMOUS_NAME; + } + const spanName = `${connectTypeName} - ${connectName}`; + const options = { + attributes: { + [semantic_conventions_1.ATTR_HTTP_ROUTE]: routeName.length > 0 ? routeName : '/', + [AttributeNames_1.AttributeNames.CONNECT_TYPE]: connectType, + [AttributeNames_1.AttributeNames.CONNECT_NAME]: connectName, + }, + }; + return this.tracer.startSpan(spanName, options); + } + _patchMiddleware(routeName, middleWare) { + const instrumentation = this; + const isErrorMiddleware = middleWare.length === 4; + function patchedMiddleware() { + if (!instrumentation.isEnabled()) { + return middleWare.apply(this, arguments); + } + const [reqArgIdx, resArgIdx, nextArgIdx] = isErrorMiddleware + ? [1, 2, 3] + : [0, 1, 2]; + const req = arguments[reqArgIdx]; + const res = arguments[resArgIdx]; + const next = arguments[nextArgIdx]; + (0, utils_1.replaceCurrentStackRoute)(req, routeName); + const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active()); + if (routeName && rpcMetadata?.type === core_1.RPCType.HTTP) { + rpcMetadata.route = (0, utils_1.generateRoute)(req); + } + let spanName = ''; + if (routeName) { + spanName = `request handler - ${routeName}`; + } + else { + spanName = `middleware - ${middleWare.name || exports.ANONYMOUS_NAME}`; + } + const span = instrumentation._startSpan(routeName, middleWare); + instrumentation._diag.debug('start span', spanName); + let spanFinished = false; + function finishSpan() { + if (!spanFinished) { + spanFinished = true; + instrumentation._diag.debug(`finishing span ${span.name}`); + span.end(); + } + else { + instrumentation._diag.debug(`span ${span.name} - already finished`); + } + res.removeListener('close', finishSpan); + } + res.addListener('close', finishSpan); + arguments[nextArgIdx] = instrumentation._patchNext(next, finishSpan); + return middleWare.apply(this, arguments); + } + Object.defineProperty(patchedMiddleware, 'length', { + value: middleWare.length, + writable: false, + configurable: true, + }); + return patchedMiddleware; + } + _patchUse(original) { + const instrumentation = this; + return function (...args) { + const middleWare = args[args.length - 1]; + const routeName = (args[args.length - 2] || ''); + args[args.length - 1] = instrumentation._patchMiddleware(routeName, middleWare); + return original.apply(this, args); + }; + } + _patchHandle(original) { + const instrumentation = this; + return function () { + const [reqIdx, outIdx] = [0, 2]; + const req = arguments[reqIdx]; + const out = arguments[outIdx]; + const completeStack = (0, utils_1.addNewStackLayer)(req); + if (typeof out === 'function') { + arguments[outIdx] = instrumentation._patchOut(out, completeStack); + } + return original.apply(this, arguments); + }; + } + _patchOut(out, completeStack) { + return function nextFunction(...args) { + completeStack(); + return Reflect.apply(out, this, args); + }; + } +} +exports.ConnectInstrumentation = ConnectInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.js.map new file mode 100644 index 0000000..1bcac95 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAgE;AAChE,8CAA8D;AAG9D,2DAIgC;AAEhC,kBAAkB;AAClB,uCAA0D;AAC1D,oEAKwC;AACxC,8EAAsE;AACtE,mCAIiB;AAEJ,QAAA,cAAc,GAAG,WAAW,CAAC;AAE1C,gDAAgD;AAChD,MAAa,sBAAuB,SAAQ,qCAAmB;IAC7D,YAAY,SAAgC,EAAE;QAC5C,KAAK,CAAC,sBAAY,EAAE,yBAAe,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI;QACF,OAAO;YACL,IAAI,qDAAmC,CACrC,SAAS,EACT,CAAC,YAAY,CAAC,EACd,aAAa,CAAC,EAAE;gBACd,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC/C,CAAC,CACF;SACF,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,UAAkB;QAClC,IAAI,CAAC,IAAA,2BAAS,EAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,IAAA,2BAAS,EAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACjC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAChE;IACH,CAAC;IAEO,iBAAiB,CAAC,QAAsB;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,OAAO,UAAwB,GAAG,IAAI;YACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAW,CAAC;YACjD,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;IACJ,CAAC;IAEM,UAAU,CAAC,IAAkB,EAAE,UAAsB;QAC1D,OAAO,SAAS,YAAY,CAAqB,GAAS;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,UAAU,EAAE,CAAC;YACb,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAEM,UAAU,CAAC,SAAiB,EAAE,UAA0B;QAC7D,IAAI,WAAyB,CAAC;QAC9B,IAAI,WAAmB,CAAC;QACxB,IAAI,eAAuB,CAAC;QAC5B,IAAI,SAAS,EAAE;YACb,WAAW,GAAG,6BAAY,CAAC,eAAe,CAAC;YAC3C,eAAe,GAAG,6BAAY,CAAC,eAAe,CAAC;YAC/C,WAAW,GAAG,SAAS,CAAC;SACzB;aAAM;YACL,WAAW,GAAG,6BAAY,CAAC,UAAU,CAAC;YACtC,eAAe,GAAG,6BAAY,CAAC,UAAU,CAAC;YAC1C,WAAW,GAAG,UAAU,CAAC,IAAI,IAAI,sBAAc,CAAC;SACjD;QACD,MAAM,QAAQ,GAAG,GAAG,eAAe,MAAM,WAAW,EAAE,CAAC;QACvD,MAAM,OAAO,GAAgB;YAC3B,UAAU,EAAE;gBACV,CAAC,sCAAe,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;gBACzD,CAAC,+BAAc,CAAC,YAAY,CAAC,EAAE,WAAW;gBAC1C,CAAC,+BAAc,CAAC,YAAY,CAAC,EAAE,WAAW;aAC3C;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAEM,gBAAgB,CACrB,SAAiB,EACjB,UAA0B;QAE1B,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;QAElD,SAAS,iBAAiB;YACxB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE;gBAChC,OAAQ,UAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;aACnD;YACD,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,iBAAiB;gBAC1D,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAmB,CAAC;YACnD,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAmB,CAAC;YACnD,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAiB,CAAC;YAEnD,IAAA,gCAAwB,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEzC,MAAM,WAAW,GAAG,IAAA,qBAAc,EAAC,aAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACrD,IAAI,SAAS,IAAI,WAAW,EAAE,IAAI,KAAK,cAAO,CAAC,IAAI,EAAE;gBACnD,WAAW,CAAC,KAAK,GAAG,IAAA,qBAAa,EAAC,GAAG,CAAC,CAAC;aACxC;YAED,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,SAAS,EAAE;gBACb,QAAQ,GAAG,qBAAqB,SAAS,EAAE,CAAC;aAC7C;iBAAM;gBACL,QAAQ,GAAG,gBAAgB,UAAU,CAAC,IAAI,IAAI,sBAAc,EAAE,CAAC;aAChE;YACD,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAC/D,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACpD,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,SAAS,UAAU;gBACjB,IAAI,CAAC,YAAY,EAAE;oBACjB,YAAY,GAAG,IAAI,CAAC;oBACpB,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAmB,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC;oBACpE,IAAI,CAAC,GAAG,EAAE,CAAC;iBACZ;qBAAM;oBACL,eAAe,CAAC,KAAK,CAAC,KAAK,CACzB,QAAS,IAAY,CAAC,IAAI,qBAAqB,CAChD,CAAC;iBACH;gBACD,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC1C,CAAC;YAED,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACrC,SAAS,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAErE,OAAQ,UAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,iBAAiB,EAAE,QAAQ,EAAE;YACjD,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEM,SAAS,CAAC,QAAuB;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,OAAO,UAAwB,GAAG,IAAa;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAmB,CAAC;YAC3D,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAW,CAAC;YAE1D,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,gBAAgB,CACtD,SAAS,EACT,UAAU,CACX,CAAC;YAEF,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAgB,CAAC,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC;IAEM,YAAY,CAAC,QAA0B;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,OAAO;YACL,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAmB,CAAC;YAChD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,aAAa,GAAG,IAAA,wBAAgB,EAAC,GAAG,CAAC,CAAC;YAE5C,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;gBAC7B,SAAS,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,SAAS,CAC3C,GAAmB,EACnB,aAAa,CACd,CAAC;aACH;YAED,OAAQ,QAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC;IAEM,SAAS,CAAC,GAAiB,EAAE,aAAyB;QAC3D,OAAO,SAAS,YAAY,CAAqB,GAAG,IAAW;YAC7D,aAAa,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC;IACJ,CAAC;CACF;AA3KD,wDA2KC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { context, Span, SpanOptions } from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport type { HandleFunction, NextFunction, Server } from 'connect';\nimport type { ServerResponse } from 'http';\nimport {\n AttributeNames,\n ConnectNames,\n ConnectTypes,\n} from './enums/AttributeNames';\nimport { PatchedRequest, Use, UseArgs, UseArgs2 } from './internal-types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport {\n replaceCurrentStackRoute,\n addNewStackLayer,\n generateRoute,\n} from './utils';\n\nexport const ANONYMOUS_NAME = 'anonymous';\n\n/** Connect instrumentation for OpenTelemetry */\nexport class ConnectInstrumentation extends InstrumentationBase {\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'connect',\n ['>=3.0.0 <4'],\n moduleExports => {\n return this._patchConstructor(moduleExports);\n }\n ),\n ];\n }\n\n private _patchApp(patchedApp: Server) {\n if (!isWrapped(patchedApp.use)) {\n this._wrap(patchedApp, 'use', this._patchUse.bind(this));\n }\n if (!isWrapped(patchedApp.handle)) {\n this._wrap(patchedApp, 'handle', this._patchHandle.bind(this));\n }\n }\n\n private _patchConstructor(original: () => Server): () => Server {\n const instrumentation = this;\n return function (this: Server, ...args) {\n const app = original.apply(this, args) as Server;\n instrumentation._patchApp(app);\n return app;\n };\n }\n\n public _patchNext(next: NextFunction, finishSpan: () => void): NextFunction {\n return function nextFunction(this: NextFunction, err?: any): void {\n const result = next.apply(this, [err]);\n finishSpan();\n return result;\n };\n }\n\n public _startSpan(routeName: string, middleWare: HandleFunction): Span {\n let connectType: ConnectTypes;\n let connectName: string;\n let connectTypeName: string;\n if (routeName) {\n connectType = ConnectTypes.REQUEST_HANDLER;\n connectTypeName = ConnectNames.REQUEST_HANDLER;\n connectName = routeName;\n } else {\n connectType = ConnectTypes.MIDDLEWARE;\n connectTypeName = ConnectNames.MIDDLEWARE;\n connectName = middleWare.name || ANONYMOUS_NAME;\n }\n const spanName = `${connectTypeName} - ${connectName}`;\n const options: SpanOptions = {\n attributes: {\n [ATTR_HTTP_ROUTE]: routeName.length > 0 ? routeName : '/',\n [AttributeNames.CONNECT_TYPE]: connectType,\n [AttributeNames.CONNECT_NAME]: connectName,\n },\n };\n\n return this.tracer.startSpan(spanName, options);\n }\n\n public _patchMiddleware(\n routeName: string,\n middleWare: HandleFunction\n ): HandleFunction {\n const instrumentation = this;\n const isErrorMiddleware = middleWare.length === 4;\n\n function patchedMiddleware(this: Use): void {\n if (!instrumentation.isEnabled()) {\n return (middleWare as any).apply(this, arguments);\n }\n const [reqArgIdx, resArgIdx, nextArgIdx] = isErrorMiddleware\n ? [1, 2, 3]\n : [0, 1, 2];\n const req = arguments[reqArgIdx] as PatchedRequest;\n const res = arguments[resArgIdx] as ServerResponse;\n const next = arguments[nextArgIdx] as NextFunction;\n\n replaceCurrentStackRoute(req, routeName);\n\n const rpcMetadata = getRPCMetadata(context.active());\n if (routeName && rpcMetadata?.type === RPCType.HTTP) {\n rpcMetadata.route = generateRoute(req);\n }\n\n let spanName = '';\n if (routeName) {\n spanName = `request handler - ${routeName}`;\n } else {\n spanName = `middleware - ${middleWare.name || ANONYMOUS_NAME}`;\n }\n const span = instrumentation._startSpan(routeName, middleWare);\n instrumentation._diag.debug('start span', spanName);\n let spanFinished = false;\n\n function finishSpan() {\n if (!spanFinished) {\n spanFinished = true;\n instrumentation._diag.debug(`finishing span ${(span as any).name}`);\n span.end();\n } else {\n instrumentation._diag.debug(\n `span ${(span as any).name} - already finished`\n );\n }\n res.removeListener('close', finishSpan);\n }\n\n res.addListener('close', finishSpan);\n arguments[nextArgIdx] = instrumentation._patchNext(next, finishSpan);\n\n return (middleWare as any).apply(this, arguments);\n }\n\n Object.defineProperty(patchedMiddleware, 'length', {\n value: middleWare.length,\n writable: false,\n configurable: true,\n });\n\n return patchedMiddleware;\n }\n\n public _patchUse(original: Server['use']): Use {\n const instrumentation = this;\n return function (this: Server, ...args: UseArgs): Server {\n const middleWare = args[args.length - 1] as HandleFunction;\n const routeName = (args[args.length - 2] || '') as string;\n\n args[args.length - 1] = instrumentation._patchMiddleware(\n routeName,\n middleWare\n );\n\n return original.apply(this, args as UseArgs2);\n };\n }\n\n public _patchHandle(original: Server['handle']): Server['handle'] {\n const instrumentation = this;\n return function (this: Server): ReturnType {\n const [reqIdx, outIdx] = [0, 2];\n const req = arguments[reqIdx] as PatchedRequest;\n const out = arguments[outIdx];\n const completeStack = addNewStackLayer(req);\n\n if (typeof out === 'function') {\n arguments[outIdx] = instrumentation._patchOut(\n out as NextFunction,\n completeStack\n );\n }\n\n return (original as any).apply(this, arguments);\n };\n }\n\n public _patchOut(out: NextFunction, completeStack: () => void): NextFunction {\n return function nextFunction(this: NextFunction, ...args: any[]): void {\n completeStack();\n return Reflect.apply(out, this, args);\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.d.ts new file mode 100644 index 0000000..a63b43d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.d.ts @@ -0,0 +1,10 @@ +import type { HandleFunction, IncomingMessage, Server } from 'connect'; +export declare const _LAYERS_STORE_PROPERTY: unique symbol; +export type UseArgs1 = [HandleFunction]; +export type UseArgs2 = [string, HandleFunction]; +export type UseArgs = UseArgs1 | UseArgs2; +export type Use = (...args: UseArgs) => Server; +export type PatchedRequest = { + [_LAYERS_STORE_PROPERTY]: string[]; +} & IncomingMessage; +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.js new file mode 100644 index 0000000..61fc176 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.js @@ -0,0 +1,20 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._LAYERS_STORE_PROPERTY = void 0; +exports._LAYERS_STORE_PROPERTY = Symbol('opentelemetry.instrumentation-connect.request-route-stack'); +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.js.map new file mode 100644 index 0000000..03e0cab --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIU,QAAA,sBAAsB,GAAkB,MAAM,CACzD,2DAA2D,CAC5D,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { HandleFunction, IncomingMessage, Server } from 'connect';\n\nexport const _LAYERS_STORE_PROPERTY: unique symbol = Symbol(\n 'opentelemetry.instrumentation-connect.request-route-stack'\n);\n\nexport type UseArgs1 = [HandleFunction];\nexport type UseArgs2 = [string, HandleFunction];\nexport type UseArgs = UseArgs1 | UseArgs2;\nexport type Use = (...args: UseArgs) => Server;\nexport type PatchedRequest = {\n [_LAYERS_STORE_PROPERTY]: string[];\n} & IncomingMessage;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/utils.d.ts new file mode 100644 index 0000000..0087e93 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/utils.d.ts @@ -0,0 +1,5 @@ +import { PatchedRequest } from './internal-types'; +export declare const addNewStackLayer: (request: PatchedRequest) => () => void; +export declare const replaceCurrentStackRoute: (request: PatchedRequest, newRoute?: string) => void; +export declare const generateRoute: (request: PatchedRequest) => string; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/utils.js new file mode 100644 index 0000000..bccf746 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/utils.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generateRoute = exports.replaceCurrentStackRoute = exports.addNewStackLayer = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const api_1 = require("@opentelemetry/api"); +const internal_types_1 = require("./internal-types"); +const addNewStackLayer = (request) => { + if (Array.isArray(request[internal_types_1._LAYERS_STORE_PROPERTY]) === false) { + Object.defineProperty(request, internal_types_1._LAYERS_STORE_PROPERTY, { + enumerable: false, + value: [], + }); + } + request[internal_types_1._LAYERS_STORE_PROPERTY].push('/'); + const stackLength = request[internal_types_1._LAYERS_STORE_PROPERTY].length; + return () => { + if (stackLength === request[internal_types_1._LAYERS_STORE_PROPERTY].length) { + request[internal_types_1._LAYERS_STORE_PROPERTY].pop(); + } + else { + api_1.diag.warn('Connect: Trying to pop the stack multiple time'); + } + }; +}; +exports.addNewStackLayer = addNewStackLayer; +const replaceCurrentStackRoute = (request, newRoute) => { + if (newRoute) { + request[internal_types_1._LAYERS_STORE_PROPERTY].splice(-1, 1, newRoute); + } +}; +exports.replaceCurrentStackRoute = replaceCurrentStackRoute; +// generate route from existing stack on request object. +// splash between stack layer will be deduped +// ["/first/", "/second", "/third/"] => /first/second/third/ +const generateRoute = (request) => { + return request[internal_types_1._LAYERS_STORE_PROPERTY].reduce((acc, sub) => acc.replace(/\/+$/, '') + sub); +}; +exports.generateRoute = generateRoute; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/utils.js.map new file mode 100644 index 0000000..9723414 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,4CAA0C;AAC1C,qDAA0E;AAEnE,MAAM,gBAAgB,GAAG,CAAC,OAAuB,EAAE,EAAE;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,uCAAsB,CAAC,CAAC,KAAK,KAAK,EAAE;QAC5D,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,uCAAsB,EAAE;YACrD,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;KACJ;IACD,OAAO,CAAC,uCAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAG,OAAO,CAAC,uCAAsB,CAAC,CAAC,MAAM,CAAC;IAE3D,OAAO,GAAG,EAAE;QACV,IAAI,WAAW,KAAK,OAAO,CAAC,uCAAsB,CAAC,CAAC,MAAM,EAAE;YAC1D,OAAO,CAAC,uCAAsB,CAAC,CAAC,GAAG,EAAE,CAAC;SACvC;aAAM;YACL,UAAI,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;SAC7D;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,gBAAgB,oBAkB3B;AAEK,MAAM,wBAAwB,GAAG,CACtC,OAAuB,EACvB,QAAiB,EACjB,EAAE;IACF,IAAI,QAAQ,EAAE;QACZ,OAAO,CAAC,uCAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;KACzD;AACH,CAAC,CAAC;AAPW,QAAA,wBAAwB,4BAOnC;AAEF,wDAAwD;AACxD,6CAA6C;AAC7C,4DAA4D;AACrD,MAAM,aAAa,GAAG,CAAC,OAAuB,EAAE,EAAE;IACvD,OAAO,OAAO,CAAC,uCAAsB,CAAC,CAAC,MAAM,CAC3C,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,CAC5C,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,aAAa,iBAIxB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag } from '@opentelemetry/api';\nimport { _LAYERS_STORE_PROPERTY, PatchedRequest } from './internal-types';\n\nexport const addNewStackLayer = (request: PatchedRequest) => {\n if (Array.isArray(request[_LAYERS_STORE_PROPERTY]) === false) {\n Object.defineProperty(request, _LAYERS_STORE_PROPERTY, {\n enumerable: false,\n value: [],\n });\n }\n request[_LAYERS_STORE_PROPERTY].push('/');\n\n const stackLength = request[_LAYERS_STORE_PROPERTY].length;\n\n return () => {\n if (stackLength === request[_LAYERS_STORE_PROPERTY].length) {\n request[_LAYERS_STORE_PROPERTY].pop();\n } else {\n diag.warn('Connect: Trying to pop the stack multiple time');\n }\n };\n};\n\nexport const replaceCurrentStackRoute = (\n request: PatchedRequest,\n newRoute?: string\n) => {\n if (newRoute) {\n request[_LAYERS_STORE_PROPERTY].splice(-1, 1, newRoute);\n }\n};\n\n// generate route from existing stack on request object.\n// splash between stack layer will be deduped\n// [\"/first/\", \"/second\", \"/third/\"] => /first/second/third/\nexport const generateRoute = (request: PatchedRequest) => {\n return request[_LAYERS_STORE_PROPERTY].reduce(\n (acc, sub) => acc.replace(/\\/+$/, '') + sub\n );\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/version.d.ts new file mode 100644 index 0000000..de443f9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.54.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-connect"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/version.js new file mode 100644 index 0000000..3f9de59 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.54.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-connect'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/version.js.map new file mode 100644 index 0000000..4a45821 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,wCAAwC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.54.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-connect';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/package.json new file mode 100644 index 0000000..9753c53 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-connect/package.json @@ -0,0 +1,61 @@ +{ + "name": "@opentelemetry/instrumentation-connect", + "version": "0.54.0", + "description": "OpenTelemetry instrumentation for `connect` http middleware framework", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-connect" + }, + "scripts": { + "clean": "rimraf build/*", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-connect", + "compile": "tsc -p .", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "connect", + "instrumentation", + "nodejs", + "opentelemetry", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "connect": "3.7.0" + }, + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/connect": "3.4.38" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-connect#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/README.md new file mode 100644 index 0000000..7200a2a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/README.md @@ -0,0 +1,74 @@ +# OpenTelemetry instrumentation for dataloader + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the injection of trace context to [`dataloader`](https://www.npmjs.com/package/dataloader), which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-dataloader +``` + +## Supported Versions + +- [`dataloader`](https://www.npmjs.com/package/dataloader) versions `>=2.0.0 <3` + +## Usage + +```js +const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node"); +const { + DataloaderInstrumentation, +} = require("@opentelemetry/instrumentation-dataloader"); +const { registerInstrumentations } = require("@opentelemetry/instrumentation"); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new DataloaderInstrumentation(), + // other instrumentations + ], +}); +``` + +### Dataloader Instrumentation Options + +Dataloader instrumentation has some configuration options + +| Options | Type | Description | +| ------------------- | --------- | --------------------------------------------------------------------------------------- | +| `requireParentSpan` | `boolean` | Require a parent span in order to create dataloader spans, default when unset is false. | + +### Spans created + +Each call to `.load` or `.loadMany` will create a child span for the current active span. + +The batch load function of the dataloader also creates a span, which links to spans created as part of `.load` and `.loadMany`, it is a child span of whatever the active span is during which the dataloader is created. + +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-dataloader +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-dataloader.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/index.d.ts new file mode 100644 index 0000000..345e76b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { DataloaderInstrumentation } from './instrumentation'; +export type { DataloaderInstrumentationConfig } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/index.js new file mode 100644 index 0000000..69b2645 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DataloaderInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "DataloaderInstrumentation", { enumerable: true, get: function () { return instrumentation_1.DataloaderInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/index.js.map new file mode 100644 index 0000000..dfa513b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA8D;AAArD,4HAAA,yBAAyB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { DataloaderInstrumentation } from './instrumentation';\nexport type { DataloaderInstrumentationConfig } from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/instrumentation.d.ts new file mode 100644 index 0000000..1faa28a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/instrumentation.d.ts @@ -0,0 +1,21 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { DataloaderInstrumentationConfig } from './types'; +export declare class DataloaderInstrumentation extends InstrumentationBase { + constructor(config?: DataloaderInstrumentationConfig); + protected init(): InstrumentationNodeModuleDefinition[]; + private shouldCreateSpans; + private getSpanName; + private _wrapBatchLoadFn; + private _getPatchedConstructor; + private _patchLoad; + private _getPatchedLoad; + private _patchLoadMany; + private _getPatchedLoadMany; + private _patchPrime; + private _getPatchedPrime; + private _patchClear; + private _getPatchedClear; + private _patchClearAll; + private _getPatchedClearAll; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/instrumentation.js new file mode 100644 index 0000000..9fc0a72 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/instrumentation.js @@ -0,0 +1,243 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DataloaderInstrumentation = void 0; +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const api_1 = require("@opentelemetry/api"); +/** @knipignore */ +const version_1 = require("./version"); +const MODULE_NAME = 'dataloader'; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function extractModuleExports(module) { + return module[Symbol.toStringTag] === 'Module' + ? module.default // ESM + : module; // CommonJS +} +class DataloaderInstrumentation extends instrumentation_1.InstrumentationBase { + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + } + init() { + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition(MODULE_NAME, ['>=2.0.0 <3'], module => { + const dataloader = extractModuleExports(module); + this._patchLoad(dataloader.prototype); + this._patchLoadMany(dataloader.prototype); + this._patchPrime(dataloader.prototype); + this._patchClear(dataloader.prototype); + this._patchClearAll(dataloader.prototype); + return this._getPatchedConstructor(dataloader); + }, module => { + const dataloader = extractModuleExports(module); + ['load', 'loadMany', 'prime', 'clear', 'clearAll'].forEach(method => { + if ((0, instrumentation_1.isWrapped)(dataloader.prototype[method])) { + this._unwrap(dataloader.prototype, method); + } + }); + }), + ]; + } + shouldCreateSpans() { + const config = this.getConfig(); + const hasParentSpan = api_1.trace.getSpan(api_1.context.active()) !== undefined; + return hasParentSpan || !config.requireParentSpan; + } + getSpanName(dataloader, operation) { + const dataloaderName = dataloader.name; + if (dataloaderName === undefined || dataloaderName === null) { + return `${MODULE_NAME}.${operation}`; + } + return `${MODULE_NAME}.${operation} ${dataloaderName}`; + } + _wrapBatchLoadFn(batchLoadFn) { + const instrumentation = this; + return function patchedBatchLoadFn(...args) { + if (!instrumentation.isEnabled() || + !instrumentation.shouldCreateSpans()) { + return batchLoadFn.call(this, ...args); + } + const parent = api_1.context.active(); + const span = instrumentation.tracer.startSpan(instrumentation.getSpanName(this, 'batch'), { links: this._batch?.spanLinks }, parent); + return api_1.context.with(api_1.trace.setSpan(parent, span), () => { + return batchLoadFn.apply(this, args) + .then(value => { + span.end(); + return value; + }) + .catch(err => { + span.recordException(err); + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err.message, + }); + span.end(); + throw err; + }); + }); + }; + } + _getPatchedConstructor(constructor) { + const instrumentation = this; + const prototype = constructor.prototype; + if (!instrumentation.isEnabled()) { + return constructor; + } + function PatchedDataloader(...args) { + // BatchLoadFn is the first constructor argument + // https://github.com/graphql/dataloader/blob/77c2cd7ca97e8795242018ebc212ce2487e729d2/src/index.js#L47 + if (typeof args[0] === 'function') { + if ((0, instrumentation_1.isWrapped)(args[0])) { + instrumentation._unwrap(args, 0); + } + args[0] = instrumentation._wrapBatchLoadFn(args[0]); + } + return constructor.apply(this, args); + } + PatchedDataloader.prototype = prototype; + return PatchedDataloader; + } + _patchLoad(proto) { + if ((0, instrumentation_1.isWrapped)(proto.load)) { + this._unwrap(proto, 'load'); + } + this._wrap(proto, 'load', this._getPatchedLoad.bind(this)); + } + _getPatchedLoad(original) { + const instrumentation = this; + return function patchedLoad(...args) { + if (!instrumentation.shouldCreateSpans()) { + return original.call(this, ...args); + } + const parent = api_1.context.active(); + const span = instrumentation.tracer.startSpan(instrumentation.getSpanName(this, 'load'), { kind: api_1.SpanKind.CLIENT }, parent); + return api_1.context.with(api_1.trace.setSpan(parent, span), () => { + const result = original + .call(this, ...args) + .then(value => { + span.end(); + return value; + }) + .catch(err => { + span.recordException(err); + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err.message, + }); + span.end(); + throw err; + }); + const loader = this; + if (loader._batch) { + if (!loader._batch.spanLinks) { + loader._batch.spanLinks = []; + } + loader._batch.spanLinks.push({ context: span.spanContext() }); + } + return result; + }); + }; + } + _patchLoadMany(proto) { + if ((0, instrumentation_1.isWrapped)(proto.loadMany)) { + this._unwrap(proto, 'loadMany'); + } + this._wrap(proto, 'loadMany', this._getPatchedLoadMany.bind(this)); + } + _getPatchedLoadMany(original) { + const instrumentation = this; + return function patchedLoadMany(...args) { + if (!instrumentation.shouldCreateSpans()) { + return original.call(this, ...args); + } + const parent = api_1.context.active(); + const span = instrumentation.tracer.startSpan(instrumentation.getSpanName(this, 'loadMany'), { kind: api_1.SpanKind.CLIENT }, parent); + return api_1.context.with(api_1.trace.setSpan(parent, span), () => { + // .loadMany never rejects, as errors from internal .load + // calls are caught by dataloader lib + return original.call(this, ...args).then(value => { + span.end(); + return value; + }); + }); + }; + } + _patchPrime(proto) { + if ((0, instrumentation_1.isWrapped)(proto.prime)) { + this._unwrap(proto, 'prime'); + } + this._wrap(proto, 'prime', this._getPatchedPrime.bind(this)); + } + _getPatchedPrime(original) { + const instrumentation = this; + return function patchedPrime(...args) { + if (!instrumentation.shouldCreateSpans()) { + return original.call(this, ...args); + } + const parent = api_1.context.active(); + const span = instrumentation.tracer.startSpan(instrumentation.getSpanName(this, 'prime'), { kind: api_1.SpanKind.CLIENT }, parent); + const ret = api_1.context.with(api_1.trace.setSpan(parent, span), () => { + return original.call(this, ...args); + }); + span.end(); + return ret; + }; + } + _patchClear(proto) { + if ((0, instrumentation_1.isWrapped)(proto.clear)) { + this._unwrap(proto, 'clear'); + } + this._wrap(proto, 'clear', this._getPatchedClear.bind(this)); + } + _getPatchedClear(original) { + const instrumentation = this; + return function patchedClear(...args) { + if (!instrumentation.shouldCreateSpans()) { + return original.call(this, ...args); + } + const parent = api_1.context.active(); + const span = instrumentation.tracer.startSpan(instrumentation.getSpanName(this, 'clear'), { kind: api_1.SpanKind.CLIENT }, parent); + const ret = api_1.context.with(api_1.trace.setSpan(parent, span), () => { + return original.call(this, ...args); + }); + span.end(); + return ret; + }; + } + _patchClearAll(proto) { + if ((0, instrumentation_1.isWrapped)(proto.clearAll)) { + this._unwrap(proto, 'clearAll'); + } + this._wrap(proto, 'clearAll', this._getPatchedClearAll.bind(this)); + } + _getPatchedClearAll(original) { + const instrumentation = this; + return function patchedClearAll(...args) { + if (!instrumentation.shouldCreateSpans()) { + return original.call(this, ...args); + } + const parent = api_1.context.active(); + const span = instrumentation.tracer.startSpan(instrumentation.getSpanName(this, 'clearAll'), { kind: api_1.SpanKind.CLIENT }, parent); + const ret = api_1.context.with(api_1.trace.setSpan(parent, span), () => { + return original.call(this, ...args); + }); + span.end(); + return ret; + }; + } +} +exports.DataloaderInstrumentation = DataloaderInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/instrumentation.js.map new file mode 100644 index 0000000..1af4ab0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n} from '@opentelemetry/instrumentation';\nimport {\n trace,\n context,\n Link,\n SpanStatusCode,\n SpanKind,\n} from '@opentelemetry/api';\nimport { DataloaderInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport type * as Dataloader from 'dataloader';\n\nconst MODULE_NAME = 'dataloader';\n\ntype DataloaderInternal = typeof Dataloader.prototype & {\n _batchLoadFn: Dataloader.BatchLoadFn;\n _batch: { spanLinks?: Link[] } | null;\n};\n\ntype LoadFn = (typeof Dataloader.prototype)['load'];\ntype LoadManyFn = (typeof Dataloader.prototype)['loadMany'];\ntype PrimeFn = (typeof Dataloader.prototype)['prime'];\ntype ClearFn = (typeof Dataloader.prototype)['clear'];\ntype ClearAllFn = (typeof Dataloader.prototype)['clearAll'];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractModuleExports(module: any) {\n return module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n}\n\nexport class DataloaderInstrumentation extends InstrumentationBase {\n constructor(config: DataloaderInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.0.0 <3'],\n module => {\n const dataloader = extractModuleExports(module);\n this._patchLoad(dataloader.prototype);\n this._patchLoadMany(dataloader.prototype);\n this._patchPrime(dataloader.prototype);\n this._patchClear(dataloader.prototype);\n this._patchClearAll(dataloader.prototype);\n\n return this._getPatchedConstructor(dataloader);\n },\n module => {\n const dataloader = extractModuleExports(module);\n ['load', 'loadMany', 'prime', 'clear', 'clearAll'].forEach(method => {\n if (isWrapped(dataloader.prototype[method])) {\n this._unwrap(dataloader.prototype, method);\n }\n });\n }\n ),\n ];\n }\n\n private shouldCreateSpans(): boolean {\n const config = this.getConfig();\n const hasParentSpan = trace.getSpan(context.active()) !== undefined;\n return hasParentSpan || !config.requireParentSpan;\n }\n\n private getSpanName(\n dataloader: DataloaderInternal,\n operation: 'load' | 'loadMany' | 'batch' | 'prime' | 'clear' | 'clearAll'\n ): string {\n const dataloaderName = dataloader.name;\n if (dataloaderName === undefined || dataloaderName === null) {\n return `${MODULE_NAME}.${operation}`;\n }\n\n return `${MODULE_NAME}.${operation} ${dataloaderName}`;\n }\n\n private _wrapBatchLoadFn(\n batchLoadFn: Dataloader.BatchLoadFn\n ): Dataloader.BatchLoadFn {\n const instrumentation = this;\n\n return function patchedBatchLoadFn(\n this: DataloaderInternal,\n ...args: Parameters>\n ) {\n if (\n !instrumentation.isEnabled() ||\n !instrumentation.shouldCreateSpans()\n ) {\n return batchLoadFn.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'batch'),\n { links: this._batch?.spanLinks as Link[] | undefined },\n parent\n );\n\n return context.with(trace.setSpan(parent, span), () => {\n return (batchLoadFn.apply(this, args) as Promise)\n .then(value => {\n span.end();\n return value;\n })\n .catch(err => {\n span.recordException(err);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n span.end();\n throw err;\n });\n });\n };\n }\n\n private _getPatchedConstructor(\n constructor: typeof Dataloader\n ): typeof Dataloader {\n const instrumentation = this;\n const prototype = constructor.prototype;\n\n if (!instrumentation.isEnabled()) {\n return constructor;\n }\n\n function PatchedDataloader(\n this: DataloaderInternal,\n ...args: ConstructorParameters\n ) {\n // BatchLoadFn is the first constructor argument\n // https://github.com/graphql/dataloader/blob/77c2cd7ca97e8795242018ebc212ce2487e729d2/src/index.js#L47\n if (typeof args[0] === 'function') {\n if (isWrapped(args[0])) {\n instrumentation._unwrap(args, 0);\n }\n\n args[0] = instrumentation._wrapBatchLoadFn(\n args[0]\n ) as Dataloader.BatchLoadFn;\n }\n\n return constructor.apply(this, args);\n }\n\n PatchedDataloader.prototype = prototype;\n return PatchedDataloader as unknown as typeof Dataloader;\n }\n\n private _patchLoad(proto: typeof Dataloader.prototype) {\n if (isWrapped(proto.load)) {\n this._unwrap(proto, 'load');\n }\n\n this._wrap(proto, 'load', this._getPatchedLoad.bind(this));\n }\n\n private _getPatchedLoad(original: LoadFn): LoadFn {\n const instrumentation = this;\n\n return function patchedLoad(\n this: DataloaderInternal,\n ...args: Parameters\n ) {\n if (!instrumentation.shouldCreateSpans()) {\n return original.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'load'),\n { kind: SpanKind.CLIENT },\n parent\n );\n\n return context.with(trace.setSpan(parent, span), () => {\n const result = original\n .call(this, ...args)\n .then(value => {\n span.end();\n return value;\n })\n .catch(err => {\n span.recordException(err);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n span.end();\n throw err;\n });\n\n const loader = this as DataloaderInternal;\n\n if (loader._batch) {\n if (!loader._batch.spanLinks) {\n loader._batch.spanLinks = [];\n }\n\n loader._batch.spanLinks.push({ context: span.spanContext() } as Link);\n }\n\n return result;\n });\n };\n }\n\n private _patchLoadMany(proto: typeof Dataloader.prototype) {\n if (isWrapped(proto.loadMany)) {\n this._unwrap(proto, 'loadMany');\n }\n\n this._wrap(proto, 'loadMany', this._getPatchedLoadMany.bind(this));\n }\n\n private _getPatchedLoadMany(original: LoadManyFn): LoadManyFn {\n const instrumentation = this;\n\n return function patchedLoadMany(\n this: DataloaderInternal,\n ...args: Parameters\n ) {\n if (!instrumentation.shouldCreateSpans()) {\n return original.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'loadMany'),\n { kind: SpanKind.CLIENT },\n parent\n );\n\n return context.with(trace.setSpan(parent, span), () => {\n // .loadMany never rejects, as errors from internal .load\n // calls are caught by dataloader lib\n return original.call(this, ...args).then(value => {\n span.end();\n return value;\n });\n });\n };\n }\n\n private _patchPrime(proto: typeof Dataloader.prototype) {\n if (isWrapped(proto.prime)) {\n this._unwrap(proto, 'prime');\n }\n\n this._wrap(proto, 'prime', this._getPatchedPrime.bind(this));\n }\n\n private _getPatchedPrime(original: PrimeFn): PrimeFn {\n const instrumentation = this;\n\n return function patchedPrime(\n this: DataloaderInternal,\n ...args: Parameters\n ) {\n if (!instrumentation.shouldCreateSpans()) {\n return original.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'prime'),\n { kind: SpanKind.CLIENT },\n parent\n );\n\n const ret = context.with(trace.setSpan(parent, span), () => {\n return original.call(this, ...args);\n });\n\n span.end();\n\n return ret;\n };\n }\n\n private _patchClear(proto: typeof Dataloader.prototype) {\n if (isWrapped(proto.clear)) {\n this._unwrap(proto, 'clear');\n }\n\n this._wrap(proto, 'clear', this._getPatchedClear.bind(this));\n }\n\n private _getPatchedClear(original: ClearFn): ClearFn {\n const instrumentation = this;\n\n return function patchedClear(\n this: DataloaderInternal,\n ...args: Parameters\n ) {\n if (!instrumentation.shouldCreateSpans()) {\n return original.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'clear'),\n { kind: SpanKind.CLIENT },\n parent\n );\n\n const ret = context.with(trace.setSpan(parent, span), () => {\n return original.call(this, ...args);\n });\n\n span.end();\n\n return ret;\n };\n }\n\n private _patchClearAll(proto: typeof Dataloader.prototype) {\n if (isWrapped(proto.clearAll)) {\n this._unwrap(proto, 'clearAll');\n }\n\n this._wrap(proto, 'clearAll', this._getPatchedClearAll.bind(this));\n }\n\n private _getPatchedClearAll(original: ClearAllFn): ClearAllFn {\n const instrumentation = this;\n\n return function patchedClearAll(\n this: DataloaderInternal,\n ...args: Parameters\n ) {\n if (!instrumentation.shouldCreateSpans()) {\n return original.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'clearAll'),\n { kind: SpanKind.CLIENT },\n parent\n );\n\n const ret = context.with(trace.setSpan(parent, span), () => {\n return original.call(this, ...args);\n });\n\n span.end();\n\n return ret;\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/types.d.ts new file mode 100644 index 0000000..fc7df20 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/types.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export interface DataloaderInstrumentationConfig extends InstrumentationConfig { + /** + * Whether the instrumentation requires a parent span, if set to true + * and there is no parent span, no additional spans are created + * (default: true) + */ + requireParentSpan?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/types.js.map new file mode 100644 index 0000000..c90ea05 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface DataloaderInstrumentationConfig extends InstrumentationConfig {\n /**\n * Whether the instrumentation requires a parent span, if set to true\n * and there is no parent span, no additional spans are created\n * (default: true)\n */\n requireParentSpan?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/version.d.ts new file mode 100644 index 0000000..1af0574 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.28.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-dataloader"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/version.js new file mode 100644 index 0000000..09ca385 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.28.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-dataloader'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/version.js.map new file mode 100644 index 0000000..0ab7a4e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,2CAA2C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.28.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-dataloader';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/package.json new file mode 100644 index 0000000..5ac61e3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-dataloader/package.json @@ -0,0 +1,59 @@ +{ + "name": "@opentelemetry/instrumentation-dataloader", + "version": "0.28.0", + "description": "OpenTelemetry instrumentation for `dataloader` data fetching layer", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-dataloader" + }, + "scripts": { + "clean": "rimraf build/*", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-dataloader", + "compile": "tsc -p .", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "version:update": "node ../../scripts/version-update.js" + }, + "keywords": [ + "dataloader", + "instrumentation", + "nodejs", + "opentelemetry", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "dataloader": "2.2.3" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-dataloader#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/README.md new file mode 100644 index 0000000..bcb19f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/README.md @@ -0,0 +1,169 @@ +# OpenTelemetry Express Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`express`](https://github.com/expressjs/express) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +This instrumentation relies on HTTP calls to also be instrumented. Make sure you install and enable both, otherwise you will not see any spans being exported from the instrumentation. + +```bash +npm install --save @opentelemetry/instrumentation-http @opentelemetry/instrumentation-express +``` + +### Supported Versions + +- [`express`](https://www.npmjs.com/package/express) version `>=4.0.0 <6` + +## Usage + +OpenTelemetry Express Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems. + +To load the instrumentation, specify it in the Node Tracer's configuration: + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); +const { ExpressInstrumentation } = require('@opentelemetry/instrumentation-express'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + // Express instrumentation expects HTTP layer to be instrumented + new HttpInstrumentation(), + new ExpressInstrumentation(), + ], +}); +``` + +See [examples/express](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/express) for a short example. + +### Caveats + +Because of the way express works, it's hard to correctly compute the time taken by asynchronous middlewares and request handlers. For this reason, the time you'll see reported for asynchronous middlewares and request handlers still only represent the synchronous execution time, and **not** any asynchronous work. + +### Express Instrumentation Options + +Express instrumentation has few options available to choose from. You can set the following: + +| Options | Type | Example | Description | +|--------------------|----------------------------------------------------|------------------------|--------------------------------------------------------------------------------------------------------| +| `ignoreLayers` | `IgnoreMatcher[]` | `[/^\/_internal\//]` | Ignore layers that by match. | +| `ignoreLayersType` | `ExpressLayerType[]` | `['request_handler']` | Ignore layers of specified type. | +| `spanNameHook` | `SpanNameHook` | `() => 'my-span-name'` | Can be used to customize span names by returning a new name from the hook. | +| `requestHook` | `ExpressRequestCustomAttributeFunction (function)` | `(span, info) => {}` | Function for adding custom attributes on Express request. Receives params: `Span, ExpressRequestInfo`. | + +`ignoreLayers` accepts an array of elements of types: + +- `string` for full match of the path, +- `RegExp` for partial match of the path, +- `function` in the form of `(path) => boolean` for custom logic. + +`ignoreLayersType` accepts an array of following strings: + +- `router` is the name of `express.Router()`, +- `middleware`, +- `request_handler` is the name for anything that's not a router or a middleware. + +`spanNameHook` is invoked with 2 arguments: + +- `info: ExpressRequestInfo` containing the incoming Express.js request, the current route handler creating a span and `ExpressLayerType` - the type of the handling layer. +- `defaultName: string` - original name proposed by the instrumentation. + +`requestHook` is invoked with 2 arguments: + +- `span: Span` - the span associated with the express request. +- `info: ExpressRequestInfo` containing the incoming Express.js request, the current route handler creating a span and `ExpressLayerType` - the type of the handling layer. + +NOTE: `ExpressRequestInfo.request` is typed as `any`. If you want type support make sure you have `@types/express` installed then you can use `ExpressRequestInfo` + +#### Ignore a whole Express route + +In order to ignore whole traces that represent a given Express route, use +the `ignoreIncomingRequestHook` option from +`@opentelemetry/instrumentation-http` against the route path. Ideally, this +shouldn't be necessary since spans should a have low cardinality and minimize +interaction between instrumentation libraries but +`@opentelemetry/instrumentation-express` renames the root span from +`@opentelemetry/instrumentation-http` in order to get things in order. + +```js +registerInstrumentations({ + instrumentations: [ + // Express instrumentation expects HTTP layer to be instrumented + new HttpInstrumentation({ + ignoreIncomingRequestHook(req) { + // Ignore spans from static assets. + const isStaticAsset = !!req.url.match(/^\/static\/.*$/); + return isStaticAsset; + } + }), + new ExpressInstrumentation(), + ], +}); +``` + +#### Using `requestHook` + +Instrumentation configuration accepts a custom "hook" function which will be called for every instrumented Express layer involved in a request. Custom attributes can be set on the span or run any custom logic per layer. + +Here is a simple example that adds to the request handler span some attributes based on the Express request attributes: + +```javascript +import { ExpressInstrumentation, ExpressLayerType } from "@opentelemetry/instrumentation-express" + +const expressInstrumentation = new ExpressInstrumentation({ + requestHook: function ( + span: Span, + info: ExpressRequestInfo, + ) { + + if (info.layerType === ExpressLayerType.REQUEST_HANDLER) { + span.setAttribute( + 'http.method', + info.request.method + ); + + span.setAttribute( + 'express.base_url', + info.request.baseUrl + ); + } + } +}); +``` + +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ------------ | ---------------------------------- | +| `http.route` | The matched route (path template). | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-express +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-express.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.d.ts new file mode 100644 index 0000000..4332849 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.d.ts @@ -0,0 +1,5 @@ +export declare enum AttributeNames { + EXPRESS_TYPE = "express.type", + EXPRESS_NAME = "express.name" +} +//# sourceMappingURL=AttributeNames.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js new file mode 100644 index 0000000..0577da3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttributeNames = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var AttributeNames; +(function (AttributeNames) { + AttributeNames["EXPRESS_TYPE"] = "express.type"; + AttributeNames["EXPRESS_NAME"] = "express.name"; +})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {})); +//# sourceMappingURL=AttributeNames.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js.map new file mode 100644 index 0000000..e04f03b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AttributeNames.js","sourceRoot":"","sources":["../../../src/enums/AttributeNames.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,+CAA6B,CAAA;IAC7B,+CAA6B,CAAA;AAC/B,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum AttributeNames {\n EXPRESS_TYPE = 'express.type',\n EXPRESS_NAME = 'express.name',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.d.ts new file mode 100644 index 0000000..e7116a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.d.ts @@ -0,0 +1,6 @@ +export declare enum ExpressLayerType { + ROUTER = "router", + MIDDLEWARE = "middleware", + REQUEST_HANDLER = "request_handler" +} +//# sourceMappingURL=ExpressLayerType.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js new file mode 100644 index 0000000..1c3b349 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ExpressLayerType = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var ExpressLayerType; +(function (ExpressLayerType) { + ExpressLayerType["ROUTER"] = "router"; + ExpressLayerType["MIDDLEWARE"] = "middleware"; + ExpressLayerType["REQUEST_HANDLER"] = "request_handler"; +})(ExpressLayerType = exports.ExpressLayerType || (exports.ExpressLayerType = {})); +//# sourceMappingURL=ExpressLayerType.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js.map new file mode 100644 index 0000000..cfc5c82 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ExpressLayerType.js","sourceRoot":"","sources":["../../../src/enums/ExpressLayerType.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,6CAAyB,CAAA;IACzB,uDAAmC,CAAA;AACrC,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum ExpressLayerType {\n ROUTER = 'router',\n MIDDLEWARE = 'middleware',\n REQUEST_HANDLER = 'request_handler',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/index.d.ts new file mode 100644 index 0000000..df78b6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/index.d.ts @@ -0,0 +1,5 @@ +export { ExpressInstrumentation } from './instrumentation'; +export { ExpressLayerType } from './enums/ExpressLayerType'; +export { AttributeNames } from './enums/AttributeNames'; +export type { ExpressInstrumentationConfig, ExpressRequestCustomAttributeFunction, ExpressRequestInfo, IgnoreMatcher, LayerPathSegment, SpanNameHook, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/index.js new file mode 100644 index 0000000..28d6f7f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/index.js @@ -0,0 +1,25 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttributeNames = exports.ExpressLayerType = exports.ExpressInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "ExpressInstrumentation", { enumerable: true, get: function () { return instrumentation_1.ExpressInstrumentation; } }); +var ExpressLayerType_1 = require("./enums/ExpressLayerType"); +Object.defineProperty(exports, "ExpressLayerType", { enumerable: true, get: function () { return ExpressLayerType_1.ExpressLayerType; } }); +var AttributeNames_1 = require("./enums/AttributeNames"); +Object.defineProperty(exports, "AttributeNames", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/index.js.map new file mode 100644 index 0000000..9788aa7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA;AAC/B,6DAA4D;AAAnD,oHAAA,gBAAgB,OAAA;AACzB,yDAAwD;AAA/C,gHAAA,cAAc,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { ExpressInstrumentation } from './instrumentation';\nexport { ExpressLayerType } from './enums/ExpressLayerType';\nexport { AttributeNames } from './enums/AttributeNames';\nexport type {\n ExpressInstrumentationConfig,\n ExpressRequestCustomAttributeFunction,\n ExpressRequestInfo,\n IgnoreMatcher,\n LayerPathSegment,\n SpanNameHook,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.d.ts new file mode 100644 index 0000000..aa943ff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.d.ts @@ -0,0 +1,23 @@ +import { ExpressInstrumentationConfig, ExpressRequestInfo } from './types'; +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +/** Express instrumentation for OpenTelemetry */ +export declare class ExpressInstrumentation extends InstrumentationBase { + constructor(config?: ExpressInstrumentationConfig); + init(): InstrumentationNodeModuleDefinition[]; + /** + * Get the patch for Router.route function + */ + private _getRoutePatch; + /** + * Get the patch for Router.use function + */ + private _getRouterUsePatch; + /** + * Get the patch for Application.use function + */ + private _getAppUsePatch; + /** Patch each express layer to create span and propagate context */ + private _applyPatch; + _getSpanName(info: ExpressRequestInfo, defaultName: string): string; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js new file mode 100644 index 0000000..7bbd52d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js @@ -0,0 +1,283 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ExpressInstrumentation = void 0; +const core_1 = require("@opentelemetry/core"); +const api_1 = require("@opentelemetry/api"); +const ExpressLayerType_1 = require("./enums/ExpressLayerType"); +const AttributeNames_1 = require("./enums/AttributeNames"); +const utils_1 = require("./utils"); +/** @knipignore */ +const version_1 = require("./version"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const internal_types_1 = require("./internal-types"); +/** Express instrumentation for OpenTelemetry */ +class ExpressInstrumentation extends instrumentation_1.InstrumentationBase { + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + } + init() { + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition('express', ['>=4.0.0 <6'], moduleExports => { + const isExpressWithRouterPrototype = typeof moduleExports?.Router?.prototype?.route === 'function'; + const routerProto = isExpressWithRouterPrototype + ? moduleExports.Router.prototype // Express v5 + : moduleExports.Router; // Express v4 + // patch express.Router.route + if ((0, instrumentation_1.isWrapped)(routerProto.route)) { + this._unwrap(routerProto, 'route'); + } + this._wrap(routerProto, 'route', this._getRoutePatch()); + // patch express.Router.use + if ((0, instrumentation_1.isWrapped)(routerProto.use)) { + this._unwrap(routerProto, 'use'); + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._wrap(routerProto, 'use', this._getRouterUsePatch()); + // patch express.Application.use + if ((0, instrumentation_1.isWrapped)(moduleExports.application.use)) { + this._unwrap(moduleExports.application, 'use'); + } + this._wrap(moduleExports.application, 'use', + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._getAppUsePatch(isExpressWithRouterPrototype)); + return moduleExports; + }, moduleExports => { + if (moduleExports === undefined) + return; + const isExpressWithRouterPrototype = typeof moduleExports?.Router?.prototype?.route === 'function'; + const routerProto = isExpressWithRouterPrototype + ? moduleExports.Router.prototype + : moduleExports.Router; + this._unwrap(routerProto, 'route'); + this._unwrap(routerProto, 'use'); + this._unwrap(moduleExports.application, 'use'); + }), + ]; + } + /** + * Get the patch for Router.route function + */ + _getRoutePatch() { + const instrumentation = this; + return function (original) { + return function route_trace(...args) { + const route = original.apply(this, args); + const layer = this.stack[this.stack.length - 1]; + instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args)); + return route; + }; + }; + } + /** + * Get the patch for Router.use function + */ + _getRouterUsePatch() { + const instrumentation = this; + return function (original) { + return function use(...args) { + const route = original.apply(this, args); + const layer = this.stack[this.stack.length - 1]; + instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args)); + return route; + }; + }; + } + /** + * Get the patch for Application.use function + */ + _getAppUsePatch(isExpressWithRouterPrototype) { + const instrumentation = this; + return function (original) { + return function use(...args) { + // If we access app.router in express 4.x we trigger an assertion error. + // This property existed in v3, was removed in v4 and then re-added in v5. + const router = isExpressWithRouterPrototype + ? this.router + : this._router; + const route = original.apply(this, args); + if (router) { + const layer = router.stack[router.stack.length - 1]; + instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args)); + } + return route; + }; + }; + } + /** Patch each express layer to create span and propagate context */ + _applyPatch(layer, layerPath) { + const instrumentation = this; + // avoid patching multiple times the same layer + if (layer[internal_types_1.kLayerPatched] === true) + return; + layer[internal_types_1.kLayerPatched] = true; + this._wrap(layer, 'handle', original => { + // TODO: instrument error handlers + if (original.length === 4) + return original; + const patched = function (req, res) { + const { isLayerPathStored } = (0, utils_1.storeLayerPath)(req, layerPath); + const constructedRoute = (0, utils_1.getConstructedRoute)(req); + const actualMatchedRoute = (0, utils_1.getActualMatchedRoute)(req); + const attributes = { + [semantic_conventions_1.ATTR_HTTP_ROUTE]: actualMatchedRoute, + }; + const metadata = (0, utils_1.getLayerMetadata)(constructedRoute, layer, layerPath); + const type = metadata.attributes[AttributeNames_1.AttributeNames.EXPRESS_TYPE]; + const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active()); + if (rpcMetadata?.type === core_1.RPCType.HTTP) { + rpcMetadata.route = actualMatchedRoute; + } + // verify against the config if the layer should be ignored + if ((0, utils_1.isLayerIgnored)(metadata.name, type, instrumentation.getConfig())) { + if (type === ExpressLayerType_1.ExpressLayerType.MIDDLEWARE) { + req[internal_types_1._LAYERS_STORE_PROPERTY].pop(); + } + return original.apply(this, arguments); + } + if (api_1.trace.getSpan(api_1.context.active()) === undefined) { + return original.apply(this, arguments); + } + const spanName = instrumentation._getSpanName({ + request: req, + layerType: type, + route: constructedRoute, + }, metadata.name); + const span = instrumentation.tracer.startSpan(spanName, { + attributes: Object.assign(attributes, metadata.attributes), + }); + const parentContext = api_1.context.active(); + let currentContext = api_1.trace.setSpan(parentContext, span); + const { requestHook } = instrumentation.getConfig(); + if (requestHook) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => requestHook(span, { + request: req, + layerType: type, + route: constructedRoute, + }), e => { + if (e) { + api_1.diag.error('express instrumentation: request hook failed', e); + } + }, true); + } + let spanHasEnded = false; + // TODO: Fix router spans (getRouterPath does not work properly) to + // have useful names before removing this branch + if (metadata.attributes[AttributeNames_1.AttributeNames.EXPRESS_TYPE] === + ExpressLayerType_1.ExpressLayerType.ROUTER) { + span.end(); + spanHasEnded = true; + currentContext = parentContext; + } + // listener for response.on('finish') + const onResponseFinish = () => { + if (spanHasEnded === false) { + spanHasEnded = true; + span.end(); + } + }; + // verify we have a callback + const args = Array.from(arguments); + const callbackIdx = args.findIndex(arg => typeof arg === 'function'); + if (callbackIdx >= 0) { + arguments[callbackIdx] = function () { + // express considers anything but an empty value, "route" or "router" + // passed to its callback to be an error + const maybeError = arguments[0]; + const isError = ![undefined, null, 'route', 'router'].includes(maybeError); + if (!spanHasEnded && isError) { + const [error, message] = (0, utils_1.asErrorAndMessage)(maybeError); + span.recordException(error); + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message, + }); + } + if (spanHasEnded === false) { + spanHasEnded = true; + req.res?.removeListener('finish', onResponseFinish); + span.end(); + } + if (!(req.route && isError) && isLayerPathStored) { + req[internal_types_1._LAYERS_STORE_PROPERTY].pop(); + } + const callback = args[callbackIdx]; + return api_1.context.bind(parentContext, callback).apply(this, arguments); + }; + } + try { + return api_1.context.bind(currentContext, original).apply(this, arguments); + } + catch (anyError) { + const [error, message] = (0, utils_1.asErrorAndMessage)(anyError); + span.recordException(error); + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message, + }); + throw anyError; + } + finally { + /** + * At this point if the callback wasn't called, that means either the + * layer is asynchronous (so it will call the callback later on) or that + * the layer directly ends the http response, so we'll hook into the "finish" + * event to handle the later case. + */ + if (!spanHasEnded) { + res.once('finish', onResponseFinish); + } + } + }; + // `handle` isn't just a regular function in some cases. It also contains + // some properties holding metadata and state so we need to proxy them + // through through patched function + // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1950 + // Also some apps/libs do their own patching before OTEL and have these properties + // in the proptotype. So we use a `for...in` loop to get own properties and also + // any enumerable prop in the prototype chain + // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2271 + for (const key in original) { + Object.defineProperty(patched, key, { + get() { + return original[key]; + }, + set(value) { + original[key] = value; + }, + }); + } + return patched; + }); + } + _getSpanName(info, defaultName) { + const { spanNameHook } = this.getConfig(); + if (!(spanNameHook instanceof Function)) { + return defaultName; + } + try { + return spanNameHook(info, defaultName) ?? defaultName; + } + catch (err) { + api_1.diag.error('express instrumentation: error calling span name rewrite hook', err); + return defaultName; + } + } +} +exports.ExpressInstrumentation = ExpressInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js.map new file mode 100644 index 0000000..f9f2a6f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n trace,\n context,\n diag,\n Attributes,\n SpanStatusCode,\n} from '@opentelemetry/api';\nimport type * as express from 'express';\nimport { ExpressInstrumentationConfig, ExpressRequestInfo } from './types';\nimport { ExpressLayerType } from './enums/ExpressLayerType';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n asErrorAndMessage,\n getLayerMetadata,\n getLayerPath,\n isLayerIgnored,\n storeLayerPath,\n getActualMatchedRoute,\n getConstructedRoute,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport {\n ExpressLayer,\n ExpressRouter,\n kLayerPatched,\n PatchedRequest,\n _LAYERS_STORE_PROPERTY,\n} from './internal-types';\n\n/** Express instrumentation for OpenTelemetry */\nexport class ExpressInstrumentation extends InstrumentationBase {\n constructor(config: ExpressInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'express',\n ['>=4.0.0 <6'],\n moduleExports => {\n const isExpressWithRouterPrototype =\n 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 (isWrapped(routerProto.route)) {\n this._unwrap(routerProto, 'route');\n }\n this._wrap(routerProto, 'route', this._getRoutePatch());\n // patch express.Router.use\n if (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() as any);\n // patch express.Application.use\n if (isWrapped(moduleExports.application.use)) {\n this._unwrap(moduleExports.application, 'use');\n }\n this._wrap(\n moduleExports.application,\n 'use',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._getAppUsePatch(isExpressWithRouterPrototype) as any\n );\n return moduleExports;\n },\n moduleExports => {\n if (moduleExports === undefined) return;\n const isExpressWithRouterPrototype =\n 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\n /**\n * Get the patch for Router.route function\n */\n private _getRoutePatch() {\n const instrumentation = this;\n return function (original: express.Router['route']) {\n return function route_trace(\n this: ExpressRouter,\n ...args: Parameters\n ) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1] as ExpressLayer;\n instrumentation._applyPatch(layer, getLayerPath(args));\n return route;\n };\n };\n }\n\n /**\n * Get the patch for Router.use function\n */\n private _getRouterUsePatch() {\n const instrumentation = this;\n return function (original: express.Router['use']) {\n return function use(\n this: express.Application,\n ...args: Parameters\n ) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1] as ExpressLayer;\n instrumentation._applyPatch(layer, getLayerPath(args));\n return route;\n };\n };\n }\n\n /**\n * Get the patch for Application.use function\n */\n private _getAppUsePatch(isExpressWithRouterPrototype: boolean) {\n const instrumentation = this;\n return function (original: express.Application['use']) {\n return function use(\n // `router` in express@5, `_router` in express@4.\n this: { _router?: ExpressRouter; router?: ExpressRouter },\n ...args: Parameters\n ) {\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, getLayerPath(args));\n }\n return route;\n };\n };\n }\n\n /** Patch each express layer to create span and propagate context */\n private _applyPatch(\n this: ExpressInstrumentation,\n layer: ExpressLayer,\n layerPath?: string\n ) {\n const instrumentation = this;\n // avoid patching multiple times the same layer\n if (layer[kLayerPatched] === true) return;\n layer[kLayerPatched] = true;\n\n this._wrap(layer, 'handle', original => {\n // TODO: instrument error handlers\n if (original.length === 4) return original;\n\n const patched = function (\n this: ExpressLayer,\n req: PatchedRequest,\n res: express.Response\n ) {\n const { isLayerPathStored } = storeLayerPath(req, layerPath);\n\n const constructedRoute = getConstructedRoute(req);\n const actualMatchedRoute = getActualMatchedRoute(req);\n\n const attributes: Attributes = {\n [ATTR_HTTP_ROUTE]: actualMatchedRoute,\n };\n const metadata = getLayerMetadata(constructedRoute, layer, layerPath);\n const type = metadata.attributes[\n AttributeNames.EXPRESS_TYPE\n ] as ExpressLayerType;\n\n const rpcMetadata = getRPCMetadata(context.active());\n if (rpcMetadata?.type === RPCType.HTTP) {\n rpcMetadata.route = actualMatchedRoute;\n }\n\n // verify against the config if the layer should be ignored\n if (isLayerIgnored(metadata.name, type, instrumentation.getConfig())) {\n if (type === ExpressLayerType.MIDDLEWARE) {\n (req[_LAYERS_STORE_PROPERTY] as string[]).pop();\n }\n return original.apply(this, arguments);\n }\n\n if (trace.getSpan(context.active()) === undefined) {\n return original.apply(this, arguments);\n }\n\n const spanName = instrumentation._getSpanName(\n {\n request: req,\n layerType: type,\n route: constructedRoute,\n },\n metadata.name\n );\n const span = instrumentation.tracer.startSpan(spanName, {\n attributes: Object.assign(attributes, metadata.attributes),\n });\n\n const parentContext = context.active();\n let currentContext = trace.setSpan(parentContext, span);\n\n const { requestHook } = instrumentation.getConfig();\n if (requestHook) {\n safeExecuteInTheMiddle(\n () =>\n requestHook(span, {\n request: req,\n layerType: type,\n route: constructedRoute,\n }),\n e => {\n if (e) {\n diag.error('express instrumentation: request hook failed', e);\n }\n },\n true\n );\n }\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 (\n metadata.attributes[AttributeNames.EXPRESS_TYPE] ===\n ExpressLayerType.ROUTER\n ) {\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\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(\n maybeError\n );\n if (!spanHasEnded && isError) {\n const [error, message] = asErrorAndMessage(maybeError);\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message,\n });\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[_LAYERS_STORE_PROPERTY] as string[]).pop();\n }\n const callback = args[callbackIdx] as Function;\n return context.bind(parentContext, callback).apply(this, arguments);\n };\n }\n\n try {\n return context.bind(currentContext, original).apply(this, arguments);\n } catch (anyError) {\n const [error, message] = asErrorAndMessage(anyError);\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message,\n });\n throw anyError;\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\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\n _getSpanName(info: ExpressRequestInfo, defaultName: string) {\n const { spanNameHook } = this.getConfig();\n\n if (!(spanNameHook instanceof Function)) {\n return defaultName;\n }\n\n try {\n return spanNameHook(info, defaultName) ?? defaultName;\n } catch (err) {\n diag.error(\n 'express instrumentation: error calling span name rewrite hook',\n err\n );\n return defaultName;\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.d.ts new file mode 100644 index 0000000..435ac84 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.d.ts @@ -0,0 +1,54 @@ +import type { Request } from 'express'; +import { Attributes } from '@opentelemetry/api'; +/** + * This symbol is used to mark express layer as being already instrumented + * since its possible to use a given layer multiple times (ex: middlewares) + */ +export declare const kLayerPatched: unique symbol; +/** + * This const define where on the `request` object the Instrumentation will mount the + * current stack of express layer. + * + * It is necessary because express doesn't store the different layers + * (ie: middleware, router etc) that it called to get to the current layer. + * Given that, the only way to know the route of a given layer is to + * store the path of where each previous layer has been mounted. + * + * ex: bodyParser > auth middleware > /users router > get /:id + * in this case the stack would be: ["/users", "/:id"] + * + * ex2: bodyParser > /api router > /v1 router > /users router > get /:id + * stack: ["/api", "/v1", "/users", ":id"] + * + */ +export declare const _LAYERS_STORE_PROPERTY = "__ot_middlewares"; +export type PatchedRequest = { + [_LAYERS_STORE_PROPERTY]?: string[]; +} & Request; +export type PathParams = string | RegExp | Array; +export type ExpressRouter = { + params: { + [key: string]: string; + }; + _params: string[]; + caseSensitive: boolean; + mergeParams: boolean; + strict: boolean; + stack: ExpressLayer[]; +}; +export type ExpressLayer = { + handle: Function & Record; + [kLayerPatched]?: boolean; + name: string; + params: { + [key: string]: string; + }; + path: string; + regexp: RegExp; + route?: ExpressLayer; +}; +export type LayerMetadata = { + attributes: Attributes; + name: string; +}; +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js new file mode 100644 index 0000000..994f736 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js @@ -0,0 +1,41 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._LAYERS_STORE_PROPERTY = exports.kLayerPatched = void 0; +/** + * This symbol is used to mark express layer as being already instrumented + * since its possible to use a given layer multiple times (ex: middlewares) + */ +exports.kLayerPatched = Symbol('express-layer-patched'); +/** + * This const define where on the `request` object the Instrumentation will mount the + * current stack of express layer. + * + * It is necessary because express doesn't store the different layers + * (ie: middleware, router etc) that it called to get to the current layer. + * Given that, the only way to know the route of a given layer is to + * store the path of where each previous layer has been mounted. + * + * ex: bodyParser > auth middleware > /users router > get /:id + * in this case the stack would be: ["/users", "/:id"] + * + * ex2: bodyParser > /api router > /v1 router > /users router > get /:id + * stack: ["/api", "/v1", "/users", ":id"] + * + */ +exports._LAYERS_STORE_PROPERTY = '__ot_middlewares'; +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js.map new file mode 100644 index 0000000..f53cdfa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH;;;GAGG;AACU,QAAA,aAAa,GAAkB,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;GAeG;AACU,QAAA,sBAAsB,GAAG,kBAAkB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Request } from 'express';\nimport { Attributes } from '@opentelemetry/api';\n\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 */\nexport const kLayerPatched: unique symbol = Symbol('express-layer-patched');\n\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 */\nexport const _LAYERS_STORE_PROPERTY = '__ot_middlewares';\n\nexport type PatchedRequest = {\n [_LAYERS_STORE_PROPERTY]?: string[];\n} & Request;\nexport type PathParams = string | RegExp | Array;\n\n// https://github.com/expressjs/express/blob/main/lib/router/index.js#L53\nexport type ExpressRouter = {\n params: { [key: string]: string };\n _params: string[];\n caseSensitive: boolean;\n mergeParams: boolean;\n strict: boolean;\n stack: ExpressLayer[];\n};\n\n// https://github.com/expressjs/express/blob/main/lib/router/layer.js#L33\nexport type ExpressLayer = {\n handle: Function & Record;\n [kLayerPatched]?: boolean;\n name: string;\n params: { [key: string]: string };\n path: string;\n regexp: RegExp;\n route?: ExpressLayer;\n};\n\nexport type LayerMetadata = {\n attributes: Attributes;\n name: string;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/types.d.ts new file mode 100644 index 0000000..90a2e7a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/types.d.ts @@ -0,0 +1,39 @@ +import { Span } from '@opentelemetry/api'; +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import { ExpressLayerType } from './enums/ExpressLayerType'; +export type LayerPathSegment = string | RegExp | number; +export type IgnoreMatcher = string | RegExp | ((name: string) => boolean); +export type ExpressRequestInfo = { + /** An express request object */ + request: T; + route: string; + layerType: ExpressLayerType; +}; +export type SpanNameHook = (info: ExpressRequestInfo, +/** + * If no decision is taken based on RequestInfo, the default name + * supplied by the instrumentation can be used instead. + */ +defaultName: string) => string; +/** + * Function that can be used to add custom attributes to the current span or the root span on + * a Express request + * @param span - The Express middleware layer span. + * @param info - An instance of ExpressRequestInfo that contains info about the request such as the route, and the layer type. + */ +export interface ExpressRequestCustomAttributeFunction { + (span: Span, info: ExpressRequestInfo): void; +} +/** + * Options available for the Express Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-express#express-instrumentation-options)) + */ +export interface ExpressInstrumentationConfig extends InstrumentationConfig { + /** Ignore specific based on their name */ + ignoreLayers?: IgnoreMatcher[]; + /** Ignore specific layers based on their type */ + ignoreLayersType?: ExpressLayerType[]; + spanNameHook?: SpanNameHook; + /** Function for adding custom attributes on Express request */ + requestHook?: ExpressRequestCustomAttributeFunction; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/types.js.map new file mode 100644 index 0000000..4152b26 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { ExpressLayerType } from './enums/ExpressLayerType';\n\nexport type LayerPathSegment = string | RegExp | number;\n\nexport type IgnoreMatcher = string | RegExp | ((name: string) => boolean);\n\nexport type ExpressRequestInfo = {\n /** An express request object */\n request: T;\n route: string;\n layerType: ExpressLayerType;\n};\n\nexport type SpanNameHook = (\n info: ExpressRequestInfo,\n /**\n * If no decision is taken based on RequestInfo, the default name\n * supplied by the instrumentation can be used instead.\n */\n defaultName: string\n) => string;\n\n/**\n * Function that can be used to add custom attributes to the current span or the root span on\n * a Express request\n * @param span - The Express middleware layer span.\n * @param info - An instance of ExpressRequestInfo that contains info about the request such as the route, and the layer type.\n */\nexport interface ExpressRequestCustomAttributeFunction {\n (span: Span, info: ExpressRequestInfo): void;\n}\n\n/**\n * Options available for the Express Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-express#express-instrumentation-options))\n */\nexport interface ExpressInstrumentationConfig extends InstrumentationConfig {\n /** Ignore specific based on their name */\n ignoreLayers?: IgnoreMatcher[];\n /** Ignore specific layers based on their type */\n ignoreLayersType?: ExpressLayerType[];\n spanNameHook?: SpanNameHook;\n\n /** Function for adding custom attributes on Express request */\n requestHook?: ExpressRequestCustomAttributeFunction;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/utils.d.ts new file mode 100644 index 0000000..8e56e04 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/utils.d.ts @@ -0,0 +1,69 @@ +import { Attributes } from '@opentelemetry/api'; +import { ExpressInstrumentationConfig, LayerPathSegment } from './types'; +import { ExpressLayerType } from './enums/ExpressLayerType'; +import { ExpressLayer, PatchedRequest, _LAYERS_STORE_PROPERTY } from './internal-types'; +/** + * Store layers path in the request to be able to construct route later + * @param request The request where + * @param [value] the value to push into the array + */ +export declare const storeLayerPath: (request: PatchedRequest, value?: string) => { + isLayerPathStored: boolean; +}; +/** + * Recursively search the router path from layer stack + * @param path The path to reconstruct + * @param layer The layer to reconstruct from + * @returns The reconstructed path + */ +export declare const getRouterPath: (path: string, layer: ExpressLayer) => string; +/** + * Parse express layer context to retrieve a name and attributes. + * @param route The route of the layer + * @param layer Express layer + * @param [layerPath] if present, the path on which the layer has been mounted + */ +export declare const getLayerMetadata: (route: string, layer: ExpressLayer, layerPath?: string) => { + attributes: Attributes; + name: string; +}; +/** + * Check whether the given request is ignored by configuration + * It will not re-throw exceptions from `list` provided by the client + * @param constant e.g URL of request + * @param [list] List of ignore patterns + * @param [onException] callback for doing something when an exception has + * occurred + */ +export declare const isLayerIgnored: (name: string, type: ExpressLayerType, config?: ExpressInstrumentationConfig) => boolean; +/** + * Converts a user-provided error value into an error and error message pair + * + * @param error - User-provided error value + * @returns Both an Error or string representation of the value and an error message + */ +export declare const asErrorAndMessage: (error: unknown) => [error: string | Error, message: string]; +/** + * Extracts the layer path from the route arguments + * + * @param args - Arguments of the route + * @returns The layer path + */ +export declare const getLayerPath: (args: [LayerPathSegment | LayerPathSegment[], ...unknown[]]) => string | undefined; +export declare function getConstructedRoute(req: { + originalUrl: PatchedRequest['originalUrl']; + [_LAYERS_STORE_PROPERTY]?: string[]; +}): string; +/** + * Extracts the actual matched route from Express request for OpenTelemetry instrumentation. + * Returns the route that should be used as the http.route attribute. + * + * @param req - The Express request object with layers store + * @param layersStoreProperty - The property name where layer paths are stored + * @returns The matched route string or undefined if no valid route is found + */ +export declare function getActualMatchedRoute(req: { + originalUrl: PatchedRequest['originalUrl']; + [_LAYERS_STORE_PROPERTY]?: string[]; +}): string | undefined; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js new file mode 100644 index 0000000..f94659e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js @@ -0,0 +1,246 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getActualMatchedRoute = exports.getConstructedRoute = exports.getLayerPath = exports.asErrorAndMessage = exports.isLayerIgnored = exports.getLayerMetadata = exports.getRouterPath = exports.storeLayerPath = void 0; +const ExpressLayerType_1 = require("./enums/ExpressLayerType"); +const AttributeNames_1 = require("./enums/AttributeNames"); +const internal_types_1 = require("./internal-types"); +/** + * Store layers path in the request to be able to construct route later + * @param request The request where + * @param [value] the value to push into the array + */ +const storeLayerPath = (request, value) => { + if (Array.isArray(request[internal_types_1._LAYERS_STORE_PROPERTY]) === false) { + Object.defineProperty(request, internal_types_1._LAYERS_STORE_PROPERTY, { + enumerable: false, + value: [], + }); + } + if (value === undefined) + return { isLayerPathStored: false }; + request[internal_types_1._LAYERS_STORE_PROPERTY].push(value); + return { isLayerPathStored: true }; +}; +exports.storeLayerPath = storeLayerPath; +/** + * Recursively search the router path from layer stack + * @param path The path to reconstruct + * @param layer The layer to reconstruct from + * @returns The reconstructed path + */ +const getRouterPath = (path, layer) => { + const stackLayer = layer.handle?.stack?.[0]; + if (stackLayer?.route?.path) { + return `${path}${stackLayer.route.path}`; + } + if (stackLayer?.handle?.stack) { + return (0, exports.getRouterPath)(path, stackLayer); + } + return path; +}; +exports.getRouterPath = getRouterPath; +/** + * Parse express layer context to retrieve a name and attributes. + * @param route The route of the layer + * @param layer Express layer + * @param [layerPath] if present, the path on which the layer has been mounted + */ +const getLayerMetadata = (route, layer, layerPath) => { + if (layer.name === 'router') { + const maybeRouterPath = (0, exports.getRouterPath)('', layer); + const extractedRouterPath = maybeRouterPath + ? maybeRouterPath + : layerPath || route || '/'; + return { + attributes: { + [AttributeNames_1.AttributeNames.EXPRESS_NAME]: extractedRouterPath, + [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.ROUTER, + }, + name: `router - ${extractedRouterPath}`, + }; + } + else if (layer.name === 'bound dispatch' || layer.name === 'handle') { + return { + attributes: { + [AttributeNames_1.AttributeNames.EXPRESS_NAME]: (route || layerPath) ?? 'request handler', + [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.REQUEST_HANDLER, + }, + name: `request handler${layer.path ? ` - ${route || layerPath}` : ''}`, + }; + } + else { + return { + attributes: { + [AttributeNames_1.AttributeNames.EXPRESS_NAME]: layer.name, + [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.MIDDLEWARE, + }, + name: `middleware - ${layer.name}`, + }; + } +}; +exports.getLayerMetadata = getLayerMetadata; +/** + * Check whether the given obj match pattern + * @param constant e.g URL of request + * @param obj obj to inspect + * @param pattern Match pattern + */ +const satisfiesPattern = (constant, pattern) => { + if (typeof pattern === 'string') { + return pattern === constant; + } + else if (pattern instanceof RegExp) { + return pattern.test(constant); + } + else if (typeof pattern === 'function') { + return pattern(constant); + } + else { + throw new TypeError('Pattern is in unsupported datatype'); + } +}; +/** + * Check whether the given request is ignored by configuration + * It will not re-throw exceptions from `list` provided by the client + * @param constant e.g URL of request + * @param [list] List of ignore patterns + * @param [onException] callback for doing something when an exception has + * occurred + */ +const isLayerIgnored = (name, type, config) => { + if (Array.isArray(config?.ignoreLayersType) && + config?.ignoreLayersType?.includes(type)) { + return true; + } + if (Array.isArray(config?.ignoreLayers) === false) + return false; + try { + for (const pattern of config.ignoreLayers) { + if (satisfiesPattern(name, pattern)) { + return true; + } + } + } + catch (e) { + /* catch block*/ + } + return false; +}; +exports.isLayerIgnored = isLayerIgnored; +/** + * Converts a user-provided error value into an error and error message pair + * + * @param error - User-provided error value + * @returns Both an Error or string representation of the value and an error message + */ +const asErrorAndMessage = (error) => error instanceof Error + ? [error, error.message] + : [String(error), String(error)]; +exports.asErrorAndMessage = asErrorAndMessage; +/** + * Extracts the layer path from the route arguments + * + * @param args - Arguments of the route + * @returns The layer path + */ +const getLayerPath = (args) => { + const firstArg = args[0]; + if (Array.isArray(firstArg)) { + return firstArg.map(arg => extractLayerPathSegment(arg) || '').join(','); + } + return extractLayerPathSegment(firstArg); +}; +exports.getLayerPath = getLayerPath; +const extractLayerPathSegment = (arg) => { + if (typeof arg === 'string') { + return arg; + } + if (arg instanceof RegExp || typeof arg === 'number') { + return arg.toString(); + } + return; +}; +function getConstructedRoute(req) { + const layersStore = Array.isArray(req[internal_types_1._LAYERS_STORE_PROPERTY]) + ? req[internal_types_1._LAYERS_STORE_PROPERTY] + : []; + const meaningfulPaths = layersStore.filter(path => path !== '/' && path !== '/*'); + if (meaningfulPaths.length === 1 && meaningfulPaths[0] === '*') { + return '*'; + } + // Join parts and remove duplicate slashes + return meaningfulPaths.join('').replace(/\/{2,}/g, '/'); +} +exports.getConstructedRoute = getConstructedRoute; +/** + * Extracts the actual matched route from Express request for OpenTelemetry instrumentation. + * Returns the route that should be used as the http.route attribute. + * + * @param req - The Express request object with layers store + * @param layersStoreProperty - The property name where layer paths are stored + * @returns The matched route string or undefined if no valid route is found + */ +function getActualMatchedRoute(req) { + const layersStore = Array.isArray(req[internal_types_1._LAYERS_STORE_PROPERTY]) + ? req[internal_types_1._LAYERS_STORE_PROPERTY] + : []; + // If no layers are stored, no route can be determined + if (layersStore.length === 0) { + return undefined; + } + // Handle root path case - if all paths are root, only return root if originalUrl is also root + // The layer store also includes root paths in case a non-existing url was requested + if (layersStore.every(path => path === '/')) { + return req.originalUrl === '/' ? '/' : undefined; + } + const constructedRoute = getConstructedRoute(req); + if (constructedRoute === '*') { + return constructedRoute; + } + // For RegExp routes or route arrays, return the constructed route + // This handles the case where the route is defined using RegExp or an array + if (constructedRoute.includes('/') && + (constructedRoute.includes(',') || + constructedRoute.includes('\\') || + constructedRoute.includes('*') || + constructedRoute.includes('['))) { + return constructedRoute; + } + // Ensure route starts with '/' if it doesn't already + const normalizedRoute = constructedRoute.startsWith('/') + ? constructedRoute + : `/${constructedRoute}`; + // Validate that this appears to be a matched route + // A route is considered matched if: + // 1. We have a constructed route + // 2. The original URL matches or starts with our route pattern + const isValidRoute = normalizedRoute.length > 0 && + (req.originalUrl === normalizedRoute || + req.originalUrl.startsWith(normalizedRoute) || + isRoutePattern(normalizedRoute)); + return isValidRoute ? normalizedRoute : undefined; +} +exports.getActualMatchedRoute = getActualMatchedRoute; +/** + * Checks if a route contains parameter patterns (e.g., :id, :userId) + * which are valid even if they don't exactly match the original URL + */ +function isRoutePattern(route) { + return route.includes(':') || route.includes('*'); +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js.map new file mode 100644 index 0000000..a22b574 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n IgnoreMatcher,\n ExpressInstrumentationConfig,\n LayerPathSegment,\n} from './types';\nimport { ExpressLayerType } from './enums/ExpressLayerType';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n ExpressLayer,\n PatchedRequest,\n _LAYERS_STORE_PROPERTY,\n} from './internal-types';\n\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 */\nexport const storeLayerPath = (\n request: PatchedRequest,\n value?: string\n): { isLayerPathStored: boolean } => {\n if (Array.isArray(request[_LAYERS_STORE_PROPERTY]) === false) {\n Object.defineProperty(request, _LAYERS_STORE_PROPERTY, {\n enumerable: false,\n value: [],\n });\n }\n if (value === undefined) return { isLayerPathStored: false };\n\n (request[_LAYERS_STORE_PROPERTY] as string[]).push(value);\n\n return { isLayerPathStored: true };\n};\n\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 */\nexport const getRouterPath = (path: string, layer: ExpressLayer): string => {\n const stackLayer = layer.handle?.stack?.[0];\n\n if (stackLayer?.route?.path) {\n return `${path}${stackLayer.route.path}`;\n }\n\n if (stackLayer?.handle?.stack) {\n return getRouterPath(path, stackLayer);\n }\n\n return path;\n};\n\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 */\nexport const getLayerMetadata = (\n route: string,\n layer: ExpressLayer,\n layerPath?: string\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (layer.name === 'router') {\n const maybeRouterPath = getRouterPath('', layer);\n const extractedRouterPath = maybeRouterPath\n ? maybeRouterPath\n : layerPath || route || '/';\n\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]: extractedRouterPath,\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.ROUTER,\n },\n name: `router - ${extractedRouterPath}`,\n };\n } else if (layer.name === 'bound dispatch' || layer.name === 'handle') {\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]:\n (route || layerPath) ?? 'request handler',\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.REQUEST_HANDLER,\n },\n name: `request handler${layer.path ? ` - ${route || layerPath}` : ''}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]: layer.name,\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\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 = (\n constant: string,\n pattern: IgnoreMatcher\n): boolean => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n } else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n } else if (typeof pattern === 'function') {\n return pattern(constant);\n } else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\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 */\nexport const isLayerIgnored = (\n name: string,\n type: ExpressLayerType,\n config?: ExpressInstrumentationConfig\n): boolean => {\n if (\n Array.isArray(config?.ignoreLayersType) &&\n config?.ignoreLayersType?.includes(type)\n ) {\n return true;\n }\n if (Array.isArray(config?.ignoreLayers) === false) return false;\n try {\n for (const pattern of config!.ignoreLayers!) {\n if (satisfiesPattern(name, pattern)) {\n return true;\n }\n }\n } catch (e) {\n /* catch block*/\n }\n\n return false;\n};\n\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 */\nexport const asErrorAndMessage = (\n error: unknown\n): [error: string | Error, message: string] =>\n error instanceof Error\n ? [error, error.message]\n : [String(error), String(error)];\n\n/**\n * Extracts the layer path from the route arguments\n *\n * @param args - Arguments of the route\n * @returns The layer path\n */\nexport const getLayerPath = (\n args: [LayerPathSegment | LayerPathSegment[], ...unknown[]]\n): string | undefined => {\n const firstArg = args[0];\n\n if (Array.isArray(firstArg)) {\n return firstArg.map(arg => extractLayerPathSegment(arg) || '').join(',');\n }\n\n return extractLayerPathSegment(firstArg);\n};\n\nconst extractLayerPathSegment = (arg: LayerPathSegment) => {\n if (typeof arg === 'string') {\n return arg;\n }\n\n if (arg instanceof RegExp || typeof arg === 'number') {\n return arg.toString();\n }\n\n return;\n};\n\nexport function getConstructedRoute(req: {\n originalUrl: PatchedRequest['originalUrl'];\n [_LAYERS_STORE_PROPERTY]?: string[];\n}) {\n const layersStore: string[] = Array.isArray(req[_LAYERS_STORE_PROPERTY])\n ? (req[_LAYERS_STORE_PROPERTY] as string[])\n : [];\n\n const meaningfulPaths = layersStore.filter(\n path => path !== '/' && path !== '/*'\n );\n\n if (meaningfulPaths.length === 1 && meaningfulPaths[0] === '*') {\n return '*';\n }\n\n // Join parts and remove duplicate slashes\n return meaningfulPaths.join('').replace(/\\/{2,}/g, '/');\n}\n\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 */\nexport function getActualMatchedRoute(req: {\n originalUrl: PatchedRequest['originalUrl'];\n [_LAYERS_STORE_PROPERTY]?: string[];\n}): string | undefined {\n const layersStore: string[] = Array.isArray(req[_LAYERS_STORE_PROPERTY])\n ? (req[_LAYERS_STORE_PROPERTY] as string[])\n : [];\n\n // If no layers are stored, no route can be determined\n if (layersStore.length === 0) {\n return undefined;\n }\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\n const constructedRoute = getConstructedRoute(req);\n if (constructedRoute === '*') {\n return constructedRoute;\n }\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 (\n constructedRoute.includes('/') &&\n (constructedRoute.includes(',') ||\n constructedRoute.includes('\\\\') ||\n constructedRoute.includes('*') ||\n constructedRoute.includes('['))\n ) {\n return constructedRoute;\n }\n\n // Ensure route starts with '/' if it doesn't already\n const normalizedRoute = constructedRoute.startsWith('/')\n ? constructedRoute\n : `/${constructedRoute}`;\n\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 =\n normalizedRoute.length > 0 &&\n (req.originalUrl === normalizedRoute ||\n req.originalUrl.startsWith(normalizedRoute) ||\n isRoutePattern(normalizedRoute));\n\n return isValidRoute ? normalizedRoute : undefined;\n}\n\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: string): boolean {\n return route.includes(':') || route.includes('*');\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/version.d.ts new file mode 100644 index 0000000..71395e8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.59.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-express"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/version.js new file mode 100644 index 0000000..e7cd66e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.59.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-express'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/version.js.map new file mode 100644 index 0000000..7918087 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,wCAAwC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.59.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-express';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/package.json new file mode 100644 index 0000000..d0c7a05 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-express/package.json @@ -0,0 +1,64 @@ +{ + "name": "@opentelemetry/instrumentation-express", + "version": "0.59.0", + "description": "OpenTelemetry instrumentation for `express` http web application framework", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-express" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-express", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "yarn test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "express", + "instrumentation", + "nodejs", + "opentelemetry", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "@types/express": "^5.0.5", + "express": "^5.1.0" + }, + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-express#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/README.md new file mode 100644 index 0000000..4a40fca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/README.md @@ -0,0 +1,69 @@ +# OpenTelemetry `fs` Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`fs`](http://nodejs.org/dist/latest/docs/api/fs.html) module, which can be registered using the [`@opentelemetry/instrumentation`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-instrumentation) package. + +Compatible with OpenTelemetry JS API `1.3+`. + +See the full list of instrumented functions in [constants.ts](src/constants.ts); + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-fs +``` + +## Supported Versions + +- Node.js `>=18` + +## Usage + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { FsInstrumentation } = require('@opentelemetry/instrumentation-fs'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new FsInstrumentation({ + // see below for available configuration + }), + ], +}); +``` + +### Instrumentation Options + +You can set the following: + +| Options | Type | Description | +| ------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `createHook` | `(functionName: FMember \| FPMember, info: { args: ArrayLike }) => boolean` | Hook called before creating the span. If `false` is returned this and all the sibling calls will not be traced. | +| `endHook` | `( functionName: FMember \| FPMember, info: { args: ArrayLike; span: api.Span } ) => void` | Function called just before the span is ended. Useful for adding attributes. | +| `requireParentSpan` | `boolean` | Require parent to create fs span, default when unset is `false`. | + +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-fs +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-fs.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/constants.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/constants.d.ts new file mode 100644 index 0000000..baa6fc2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/constants.d.ts @@ -0,0 +1,5 @@ +import type { FMember, FPMember } from './types'; +export declare const PROMISE_FUNCTIONS: FPMember[]; +export declare const CALLBACK_FUNCTIONS: FMember[]; +export declare const SYNC_FUNCTIONS: FMember[]; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/constants.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/constants.js new file mode 100644 index 0000000..642af6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/constants.js @@ -0,0 +1,137 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SYNC_FUNCTIONS = exports.CALLBACK_FUNCTIONS = exports.PROMISE_FUNCTIONS = void 0; +exports.PROMISE_FUNCTIONS = [ + 'access', + 'appendFile', + 'chmod', + 'chown', + 'copyFile', + 'cp', + 'lchown', + 'link', + 'lstat', + 'lutimes', + 'mkdir', + 'mkdtemp', + 'open', + 'opendir', + 'readdir', + 'readFile', + 'readlink', + 'realpath', + 'rename', + 'rm', + 'rmdir', + 'stat', + 'symlink', + 'truncate', + 'unlink', + 'utimes', + 'writeFile', + // 'lchmod', // only implemented on macOS +]; +exports.CALLBACK_FUNCTIONS = [ + 'access', + 'appendFile', + 'chmod', + 'chown', + 'copyFile', + 'cp', + 'exists', + 'lchown', + 'link', + 'lstat', + 'lutimes', + 'mkdir', + 'mkdtemp', + 'open', + 'opendir', + 'readdir', + 'readFile', + 'readlink', + 'realpath', + 'realpath.native', + 'rename', + 'rm', + 'rmdir', + 'stat', + 'symlink', + 'truncate', + 'unlink', + 'utimes', + 'writeFile', + // 'close', // functions on file descriptor + // 'fchmod', // functions on file descriptor + // 'fchown', // functions on file descriptor + // 'fdatasync', // functions on file descriptor + // 'fstat', // functions on file descriptor + // 'fsync', // functions on file descriptor + // 'ftruncate', // functions on file descriptor + // 'futimes', // functions on file descriptor + // 'lchmod', // only implemented on macOS + // 'read', // functions on file descriptor + // 'readv', // functions on file descriptor + // 'write', // functions on file descriptor + // 'writev', // functions on file descriptor +]; +exports.SYNC_FUNCTIONS = [ + 'accessSync', + 'appendFileSync', + 'chmodSync', + 'chownSync', + 'copyFileSync', + 'cpSync', + 'existsSync', + 'lchownSync', + 'linkSync', + 'lstatSync', + 'lutimesSync', + 'mkdirSync', + 'mkdtempSync', + 'opendirSync', + 'openSync', + 'readdirSync', + 'readFileSync', + 'readlinkSync', + 'realpathSync', + 'realpathSync.native', + 'renameSync', + 'rmdirSync', + 'rmSync', + 'statSync', + 'symlinkSync', + 'truncateSync', + 'unlinkSync', + 'utimesSync', + 'writeFileSync', + // 'closeSync', // functions on file descriptor + // 'fchmodSync', // functions on file descriptor + // 'fchownSync', // functions on file descriptor + // 'fdatasyncSync', // functions on file descriptor + // 'fstatSync', // functions on file descriptor + // 'fsyncSync', // functions on file descriptor + // 'ftruncateSync', // functions on file descriptor + // 'futimesSync', // functions on file descriptor + // 'lchmodSync', // only implemented on macOS + // 'readSync', // functions on file descriptor + // 'readvSync', // functions on file descriptor + // 'writeSync', // functions on file descriptor + // 'writevSync', // functions on file descriptor +]; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/constants.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/constants.js.map new file mode 100644 index 0000000..5526217 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIU,QAAA,iBAAiB,GAAe;IAC3C,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,OAAO;IACP,UAAU;IACV,IAAgB;IAChB,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,SAAS;IACT,MAAM;IACN,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,UAAU;IACV,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,MAAM;IACN,SAAS;IACT,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,yCAAyC;CAC1C,CAAC;AAEW,QAAA,kBAAkB,GAAc;IAC3C,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,OAAO;IACP,UAAU;IACV,IAAe;IACf,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,SAAS;IACT,MAAM;IACN,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,UAAU;IACV,iBAAiB;IACjB,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,MAAM;IACN,SAAS;IACT,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,2CAA2C;IAC3C,4CAA4C;IAC5C,4CAA4C;IAC5C,+CAA+C;IAC/C,2CAA2C;IAC3C,2CAA2C;IAC3C,+CAA+C;IAC/C,6CAA6C;IAC7C,yCAAyC;IACzC,0CAA0C;IAC1C,2CAA2C;IAC3C,2CAA2C;IAC3C,4CAA4C;CAC7C,CAAC;AAEW,QAAA,cAAc,GAAc;IACvC,YAAY;IACZ,gBAAgB;IAChB,WAAW;IACX,WAAW;IACX,cAAc;IACd,QAAmB;IACnB,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,WAAW;IACX,aAAa;IACb,WAAW;IACX,aAAa;IACb,aAAa;IACb,UAAU;IACV,aAAa;IACb,cAAc;IACd,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,UAAU;IACV,aAAa;IACb,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,+CAA+C;IAC/C,gDAAgD;IAChD,gDAAgD;IAChD,mDAAmD;IACnD,+CAA+C;IAC/C,+CAA+C;IAC/C,mDAAmD;IACnD,iDAAiD;IACjD,6CAA6C;IAC7C,8CAA8C;IAC9C,+CAA+C;IAC/C,+CAA+C;IAC/C,gDAAgD;CACjD,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { FMember, FPMember } from './types';\n\nexport const PROMISE_FUNCTIONS: FPMember[] = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'copyFile',\n 'cp' as FPMember, // added in v16\n 'lchown',\n 'link',\n 'lstat',\n 'lutimes', // added in v12\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir', // added in v12\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm', // added in v14\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n // 'lchmod', // only implemented on macOS\n];\n\nexport const CALLBACK_FUNCTIONS: FMember[] = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'copyFile',\n 'cp' as FMember, // added in v16\n 'exists', // deprecated, inconsistent cb signature, handling separately when patching\n 'lchown',\n 'link',\n 'lstat',\n 'lutimes', // added in v12\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir', // added in v12\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'realpath.native',\n 'rename',\n 'rm', // added in v14\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n // 'close', // functions on file descriptor\n // 'fchmod', // functions on file descriptor\n // 'fchown', // functions on file descriptor\n // 'fdatasync', // functions on file descriptor\n // 'fstat', // functions on file descriptor\n // 'fsync', // functions on file descriptor\n // 'ftruncate', // functions on file descriptor\n // 'futimes', // functions on file descriptor\n // 'lchmod', // only implemented on macOS\n // 'read', // functions on file descriptor\n // 'readv', // functions on file descriptor\n // 'write', // functions on file descriptor\n // 'writev', // functions on file descriptor\n];\n\nexport const SYNC_FUNCTIONS: FMember[] = [\n 'accessSync',\n 'appendFileSync',\n 'chmodSync',\n 'chownSync',\n 'copyFileSync',\n 'cpSync' as FMember, // added in v16\n 'existsSync',\n 'lchownSync',\n 'linkSync',\n 'lstatSync',\n 'lutimesSync', // added in v12\n 'mkdirSync',\n 'mkdtempSync',\n 'opendirSync', // added in v12\n 'openSync',\n 'readdirSync',\n 'readFileSync',\n 'readlinkSync',\n 'realpathSync',\n 'realpathSync.native',\n 'renameSync',\n 'rmdirSync',\n 'rmSync', // added in v14\n 'statSync',\n 'symlinkSync',\n 'truncateSync',\n 'unlinkSync',\n 'utimesSync',\n 'writeFileSync',\n // 'closeSync', // functions on file descriptor\n // 'fchmodSync', // functions on file descriptor\n // 'fchownSync', // functions on file descriptor\n // 'fdatasyncSync', // functions on file descriptor\n // 'fstatSync', // functions on file descriptor\n // 'fsyncSync', // functions on file descriptor\n // 'ftruncateSync', // functions on file descriptor\n // 'futimesSync', // functions on file descriptor\n // 'lchmodSync', // only implemented on macOS\n // 'readSync', // functions on file descriptor\n // 'readvSync', // functions on file descriptor\n // 'writeSync', // functions on file descriptor\n // 'writevSync', // functions on file descriptor\n];\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/index.d.ts new file mode 100644 index 0000000..4d3650d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { FsInstrumentation } from './instrumentation'; +export type { CreateHook, EndHook, FMember, FPMember, FsInstrumentationConfig, FunctionProperties, FunctionPropertyNames, FunctionPropertyNamesTwoLevels, Member, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/index.js new file mode 100644 index 0000000..98751df --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FsInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "FsInstrumentation", { enumerable: true, get: function () { return instrumentation_1.FsInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/index.js.map new file mode 100644 index 0000000..fef1c04 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAsD;AAA7C,oHAAA,iBAAiB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { FsInstrumentation } from './instrumentation';\nexport type {\n CreateHook,\n EndHook,\n FMember,\n FPMember,\n FsInstrumentationConfig,\n FunctionProperties,\n FunctionPropertyNames,\n FunctionPropertyNamesTwoLevels,\n Member,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/instrumentation.d.ts new file mode 100644 index 0000000..db58723 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/instrumentation.d.ts @@ -0,0 +1,15 @@ +import * as api from '@opentelemetry/api'; +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import type { FMember, FPMember, CreateHook, EndHook, FsInstrumentationConfig } from './types'; +export declare class FsInstrumentation extends InstrumentationBase { + constructor(config?: FsInstrumentationConfig); + init(): (InstrumentationNodeModuleDefinition | InstrumentationNodeModuleDefinition)[]; + protected _patchSyncFunction ReturnType>(functionName: FMember, original: T): T; + protected _patchCallbackFunction ReturnType>(functionName: FMember, original: T): T; + protected _patchExistsCallbackFunction ReturnType>(functionName: 'exists', original: T): T; + protected _patchPromiseFunction ReturnType>(functionName: FPMember, original: T): T; + protected _runCreateHook(...args: Parameters): ReturnType; + protected _runEndHook(...args: Parameters): ReturnType; + protected _shouldTrace(context: api.Context): boolean; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/instrumentation.js new file mode 100644 index 0000000..d247b5f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/instrumentation.js @@ -0,0 +1,336 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FsInstrumentation = void 0; +const api = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +/** @knipignore */ +const version_1 = require("./version"); +const constants_1 = require("./constants"); +const util_1 = require("util"); +const utils_1 = require("./utils"); +/** + * This is important for 2-level functions like `realpath.native` to retain the 2nd-level + * when patching the 1st-level. + */ +function patchedFunctionWithOriginalProperties(patchedFunction, original) { + return Object.assign(patchedFunction, original); +} +class FsInstrumentation extends instrumentation_1.InstrumentationBase { + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + } + init() { + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition('fs', ['*'], (fs) => { + for (const fName of constants_1.SYNC_FUNCTIONS) { + const { objectToPatch, functionNameToPatch } = (0, utils_1.indexFs)(fs, fName); + if ((0, instrumentation_1.isWrapped)(objectToPatch[functionNameToPatch])) { + this._unwrap(objectToPatch, functionNameToPatch); + } + this._wrap(objectToPatch, functionNameToPatch, this._patchSyncFunction.bind(this, fName)); + } + for (const fName of constants_1.CALLBACK_FUNCTIONS) { + const { objectToPatch, functionNameToPatch } = (0, utils_1.indexFs)(fs, fName); + if ((0, instrumentation_1.isWrapped)(objectToPatch[functionNameToPatch])) { + this._unwrap(objectToPatch, functionNameToPatch); + } + if (fName === 'exists') { + // handling separately because of the inconsistent cb style: + // `exists` doesn't have error as the first argument, but the result + this._wrap(objectToPatch, functionNameToPatch, this._patchExistsCallbackFunction.bind(this, fName)); + continue; + } + this._wrap(objectToPatch, functionNameToPatch, this._patchCallbackFunction.bind(this, fName)); + } + for (const fName of constants_1.PROMISE_FUNCTIONS) { + if ((0, instrumentation_1.isWrapped)(fs.promises[fName])) { + this._unwrap(fs.promises, fName); + } + this._wrap(fs.promises, fName, this._patchPromiseFunction.bind(this, fName)); + } + return fs; + }, (fs) => { + if (fs === undefined) + return; + for (const fName of constants_1.SYNC_FUNCTIONS) { + const { objectToPatch, functionNameToPatch } = (0, utils_1.indexFs)(fs, fName); + if ((0, instrumentation_1.isWrapped)(objectToPatch[functionNameToPatch])) { + this._unwrap(objectToPatch, functionNameToPatch); + } + } + for (const fName of constants_1.CALLBACK_FUNCTIONS) { + const { objectToPatch, functionNameToPatch } = (0, utils_1.indexFs)(fs, fName); + if ((0, instrumentation_1.isWrapped)(objectToPatch[functionNameToPatch])) { + this._unwrap(objectToPatch, functionNameToPatch); + } + } + for (const fName of constants_1.PROMISE_FUNCTIONS) { + if ((0, instrumentation_1.isWrapped)(fs.promises[fName])) { + this._unwrap(fs.promises, fName); + } + } + }), + new instrumentation_1.InstrumentationNodeModuleDefinition('fs/promises', ['*'], (fsPromises) => { + for (const fName of constants_1.PROMISE_FUNCTIONS) { + if ((0, instrumentation_1.isWrapped)(fsPromises[fName])) { + this._unwrap(fsPromises, fName); + } + this._wrap(fsPromises, fName, this._patchPromiseFunction.bind(this, fName)); + } + return fsPromises; + }, (fsPromises) => { + if (fsPromises === undefined) + return; + for (const fName of constants_1.PROMISE_FUNCTIONS) { + if ((0, instrumentation_1.isWrapped)(fsPromises[fName])) { + this._unwrap(fsPromises, fName); + } + } + }), + ]; + } + _patchSyncFunction(functionName, original) { + const instrumentation = this; + const patchedFunction = function (...args) { + const activeContext = api.context.active(); + if (!instrumentation._shouldTrace(activeContext)) { + return original.apply(this, args); + } + if (instrumentation._runCreateHook(functionName, { + args: args, + }) === false) { + return api.context.with((0, core_1.suppressTracing)(activeContext), original, this, ...args); + } + const span = instrumentation.tracer.startSpan(`fs ${functionName}`); + try { + // Suppress tracing for internal fs calls + const res = api.context.with((0, core_1.suppressTracing)(api.trace.setSpan(activeContext, span)), original, this, ...args); + instrumentation._runEndHook(functionName, { args: args, span }); + return res; + } + catch (error) { + span.recordException(error); + span.setStatus({ + message: error.message, + code: api.SpanStatusCode.ERROR, + }); + instrumentation._runEndHook(functionName, { args: args, span, error }); + throw error; + } + finally { + span.end(); + } + }; + return patchedFunctionWithOriginalProperties(patchedFunction, original); + } + _patchCallbackFunction(functionName, original) { + const instrumentation = this; + const patchedFunction = function (...args) { + const activeContext = api.context.active(); + if (!instrumentation._shouldTrace(activeContext)) { + return original.apply(this, args); + } + if (instrumentation._runCreateHook(functionName, { + args: args, + }) === false) { + return api.context.with((0, core_1.suppressTracing)(activeContext), original, this, ...args); + } + const lastIdx = args.length - 1; + const cb = args[lastIdx]; + if (typeof cb === 'function') { + const span = instrumentation.tracer.startSpan(`fs ${functionName}`); + // Return to the context active during the call in the callback + args[lastIdx] = api.context.bind(activeContext, function (error) { + if (error) { + span.recordException(error); + span.setStatus({ + message: error.message, + code: api.SpanStatusCode.ERROR, + }); + } + instrumentation._runEndHook(functionName, { + args: args, + span, + error, + }); + span.end(); + return cb.apply(this, arguments); + }); + try { + // Suppress tracing for internal fs calls + return api.context.with((0, core_1.suppressTracing)(api.trace.setSpan(activeContext, span)), original, this, ...args); + } + catch (error) { + span.recordException(error); + span.setStatus({ + message: error.message, + code: api.SpanStatusCode.ERROR, + }); + instrumentation._runEndHook(functionName, { + args: args, + span, + error, + }); + span.end(); + throw error; + } + } + else { + // TODO: what to do if we are pretty sure it's going to throw + return original.apply(this, args); + } + }; + return patchedFunctionWithOriginalProperties(patchedFunction, original); + } + _patchExistsCallbackFunction(functionName, original) { + const instrumentation = this; + const patchedFunction = function (...args) { + const activeContext = api.context.active(); + if (!instrumentation._shouldTrace(activeContext)) { + return original.apply(this, args); + } + if (instrumentation._runCreateHook(functionName, { + args: args, + }) === false) { + return api.context.with((0, core_1.suppressTracing)(activeContext), original, this, ...args); + } + const lastIdx = args.length - 1; + const cb = args[lastIdx]; + if (typeof cb === 'function') { + const span = instrumentation.tracer.startSpan(`fs ${functionName}`); + // Return to the context active during the call in the callback + args[lastIdx] = api.context.bind(activeContext, function () { + // `exists` never calls the callback with an error + instrumentation._runEndHook(functionName, { + args: args, + span, + }); + span.end(); + return cb.apply(this, arguments); + }); + try { + // Suppress tracing for internal fs calls + return api.context.with((0, core_1.suppressTracing)(api.trace.setSpan(activeContext, span)), original, this, ...args); + } + catch (error) { + span.recordException(error); + span.setStatus({ + message: error.message, + code: api.SpanStatusCode.ERROR, + }); + instrumentation._runEndHook(functionName, { + args: args, + span, + error, + }); + span.end(); + throw error; + } + } + else { + return original.apply(this, args); + } + }; + const functionWithOriginalProperties = patchedFunctionWithOriginalProperties(patchedFunction, original); + // `exists` has a custom promisify function because of the inconsistent signature + // replicating that on the patched function + const promisified = function (path) { + return new Promise(resolve => functionWithOriginalProperties(path, resolve)); + }; + Object.defineProperty(promisified, 'name', { value: functionName }); + Object.defineProperty(functionWithOriginalProperties, util_1.promisify.custom, { + value: promisified, + }); + return functionWithOriginalProperties; + } + _patchPromiseFunction(functionName, original) { + const instrumentation = this; + const patchedFunction = async function (...args) { + const activeContext = api.context.active(); + if (!instrumentation._shouldTrace(activeContext)) { + return original.apply(this, args); + } + if (instrumentation._runCreateHook(functionName, { + args: args, + }) === false) { + return api.context.with((0, core_1.suppressTracing)(activeContext), original, this, ...args); + } + const span = instrumentation.tracer.startSpan(`fs ${functionName}`); + try { + // Suppress tracing for internal fs calls + const res = await api.context.with((0, core_1.suppressTracing)(api.trace.setSpan(activeContext, span)), original, this, ...args); + instrumentation._runEndHook(functionName, { args: args, span }); + return res; + } + catch (error) { + span.recordException(error); + span.setStatus({ + message: error.message, + code: api.SpanStatusCode.ERROR, + }); + instrumentation._runEndHook(functionName, { args: args, span, error }); + throw error; + } + finally { + span.end(); + } + }; + return patchedFunctionWithOriginalProperties(patchedFunction, original); + } + _runCreateHook(...args) { + const { createHook } = this.getConfig(); + if (typeof createHook === 'function') { + try { + return createHook(...args); + } + catch (e) { + this._diag.error('caught createHook error', e); + } + } + return true; + } + _runEndHook(...args) { + const { endHook } = this.getConfig(); + if (typeof endHook === 'function') { + try { + endHook(...args); + } + catch (e) { + this._diag.error('caught endHook error', e); + } + } + } + _shouldTrace(context) { + if ((0, core_1.isTracingSuppressed)(context)) { + // Performance optimization. Avoid creating additional contexts and spans + // if we already know that the tracing is being suppressed. + return false; + } + const { requireParentSpan } = this.getConfig(); + if (requireParentSpan) { + const parentSpan = api.trace.getSpan(context); + if (parentSpan == null) { + return false; + } + } + return true; + } +} +exports.FsInstrumentation = FsInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/instrumentation.js.map new file mode 100644 index 0000000..c701b3d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport { isTracingSuppressed, suppressTracing } from '@opentelemetry/core';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n CALLBACK_FUNCTIONS,\n PROMISE_FUNCTIONS,\n SYNC_FUNCTIONS,\n} from './constants';\nimport type * as fs from 'fs';\nimport type {\n FMember,\n FPMember,\n CreateHook,\n EndHook,\n FsInstrumentationConfig,\n} from './types';\nimport { promisify } from 'util';\nimport { indexFs } from './utils';\n\ntype FS = typeof fs;\ntype FSPromises = (typeof fs)['promises'];\n\n/**\n * This is important for 2-level functions like `realpath.native` to retain the 2nd-level\n * when patching the 1st-level.\n */\nfunction patchedFunctionWithOriginalProperties<\n T extends (...args: any[]) => ReturnType,\n>(patchedFunction: T, original: T): T {\n return Object.assign(patchedFunction, original);\n}\n\nexport class FsInstrumentation extends InstrumentationBase {\n constructor(config: FsInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init(): (\n | InstrumentationNodeModuleDefinition\n | InstrumentationNodeModuleDefinition\n )[] {\n return [\n new InstrumentationNodeModuleDefinition(\n 'fs',\n ['*'],\n (fs: FS) => {\n for (const fName of SYNC_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchSyncFunction.bind(this, fName)\n );\n }\n for (const fName of CALLBACK_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n if (fName === 'exists') {\n // handling separately because of the inconsistent cb style:\n // `exists` doesn't have error as the first argument, but the result\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchExistsCallbackFunction.bind(this, fName)\n );\n continue;\n }\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchCallbackFunction.bind(this, fName)\n );\n }\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fs.promises[fName])) {\n this._unwrap(fs.promises, fName);\n }\n this._wrap(\n fs.promises,\n fName,\n this._patchPromiseFunction.bind(this, fName)\n );\n }\n return fs;\n },\n (fs: FS) => {\n if (fs === undefined) return;\n for (const fName of SYNC_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n }\n for (const fName of CALLBACK_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n }\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fs.promises[fName])) {\n this._unwrap(fs.promises, fName);\n }\n }\n }\n ),\n new InstrumentationNodeModuleDefinition(\n 'fs/promises',\n ['*'],\n (fsPromises: FSPromises) => {\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fsPromises[fName])) {\n this._unwrap(fsPromises, fName);\n }\n this._wrap(\n fsPromises,\n fName,\n this._patchPromiseFunction.bind(this, fName)\n );\n }\n return fsPromises;\n },\n (fsPromises: FSPromises) => {\n if (fsPromises === undefined) return;\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fsPromises[fName])) {\n this._unwrap(fsPromises, fName);\n }\n }\n }\n ),\n ];\n }\n\n protected _patchSyncFunction ReturnType>(\n functionName: FMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n try {\n // Suppress tracing for internal fs calls\n const res = api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n instrumentation._runEndHook(functionName, { args: args, span });\n return res;\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, { args: args, span, error });\n throw error;\n } finally {\n span.end();\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _patchCallbackFunction ReturnType>(\n functionName: FMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const lastIdx = args.length - 1;\n const cb = args[lastIdx];\n if (typeof cb === 'function') {\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n // Return to the context active during the call in the callback\n args[lastIdx] = api.context.bind(\n activeContext,\n function (this: unknown, error?: Error) {\n if (error) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n }\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n return cb.apply(this, arguments);\n }\n );\n\n try {\n // Suppress tracing for internal fs calls\n return api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n throw error;\n }\n } else {\n // TODO: what to do if we are pretty sure it's going to throw\n return original.apply(this, args);\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _patchExistsCallbackFunction<\n T extends (...args: any[]) => ReturnType,\n >(functionName: 'exists', original: T): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const lastIdx = args.length - 1;\n const cb = args[lastIdx];\n if (typeof cb === 'function') {\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n // Return to the context active during the call in the callback\n args[lastIdx] = api.context.bind(\n activeContext,\n function (this: unknown) {\n // `exists` never calls the callback with an error\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n });\n span.end();\n return cb.apply(this, arguments);\n }\n );\n\n try {\n // Suppress tracing for internal fs calls\n return api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n throw error;\n }\n } else {\n return original.apply(this, args);\n }\n };\n const functionWithOriginalProperties =\n patchedFunctionWithOriginalProperties(patchedFunction, original);\n\n // `exists` has a custom promisify function because of the inconsistent signature\n // replicating that on the patched function\n const promisified = function (path: unknown) {\n return new Promise(resolve =>\n functionWithOriginalProperties(path, resolve)\n );\n };\n Object.defineProperty(promisified, 'name', { value: functionName });\n Object.defineProperty(functionWithOriginalProperties, promisify.custom, {\n value: promisified,\n });\n\n return functionWithOriginalProperties;\n }\n\n protected _patchPromiseFunction ReturnType>(\n functionName: FPMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = async function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n try {\n // Suppress tracing for internal fs calls\n const res = await api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n instrumentation._runEndHook(functionName, { args: args, span });\n return res;\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, { args: args, span, error });\n throw error;\n } finally {\n span.end();\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _runCreateHook(\n ...args: Parameters\n ): ReturnType {\n const { createHook } = this.getConfig();\n if (typeof createHook === 'function') {\n try {\n return createHook(...args);\n } catch (e) {\n this._diag.error('caught createHook error', e);\n }\n }\n return true;\n }\n\n protected _runEndHook(...args: Parameters): ReturnType {\n const { endHook } = this.getConfig();\n if (typeof endHook === 'function') {\n try {\n endHook(...args);\n } catch (e) {\n this._diag.error('caught endHook error', e);\n }\n }\n }\n\n protected _shouldTrace(context: api.Context): boolean {\n if (isTracingSuppressed(context)) {\n // Performance optimization. Avoid creating additional contexts and spans\n // if we already know that the tracing is being suppressed.\n return false;\n }\n\n const { requireParentSpan } = this.getConfig();\n if (requireParentSpan) {\n const parentSpan = api.trace.getSpan(context);\n if (parentSpan == null) {\n return false;\n }\n }\n\n return true;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/types.d.ts new file mode 100644 index 0000000..7c16c33 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/types.d.ts @@ -0,0 +1,30 @@ +/// +import type * as fs from 'fs'; +import type * as api from '@opentelemetry/api'; +import type { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export type FunctionPropertyNames = Exclude<{ + [K in keyof T]: T[K] extends Function ? K : never; +}[keyof T], undefined>; +export type FunctionProperties = Pick>; +export type FunctionPropertyNamesTwoLevels = Exclude<{ + [K in keyof T]: { + [L in keyof T[K]]: L extends string ? T[K][L] extends Function ? K extends string ? L extends string ? `${K}.${L}` : never : never : never : never; + }[keyof T[K]]; +}[keyof T], undefined>; +export type Member = FunctionPropertyNames | FunctionPropertyNamesTwoLevels; +export type FMember = FunctionPropertyNames | FunctionPropertyNamesTwoLevels; +export type FPMember = FunctionPropertyNames<(typeof fs)['promises']> | FunctionPropertyNamesTwoLevels<(typeof fs)['promises']>; +export type CreateHook = (functionName: FMember | FPMember, info: { + args: ArrayLike; +}) => boolean; +export type EndHook = (functionName: FMember | FPMember, info: { + args: ArrayLike; + span: api.Span; + error?: Error; +}) => void; +export interface FsInstrumentationConfig extends InstrumentationConfig { + createHook?: CreateHook; + endHook?: EndHook; + requireParentSpan?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/types.js new file mode 100644 index 0000000..11e638d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/types.js.map new file mode 100644 index 0000000..357ada4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type * as fs from 'fs';\n\nimport type * as api from '@opentelemetry/api';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport type FunctionPropertyNames = Exclude<\n {\n [K in keyof T]: T[K] extends Function ? K : never;\n }[keyof T],\n undefined\n>;\nexport type FunctionProperties = Pick>;\n\nexport type FunctionPropertyNamesTwoLevels = Exclude<\n {\n [K in keyof T]: {\n [L in keyof T[K]]: L extends string\n ? T[K][L] extends Function\n ? K extends string\n ? L extends string\n ? `${K}.${L}`\n : never\n : never\n : never\n : never;\n }[keyof T[K]];\n }[keyof T],\n undefined\n>;\n\nexport type Member =\n | FunctionPropertyNames\n | FunctionPropertyNamesTwoLevels;\nexport type FMember =\n | FunctionPropertyNames\n | FunctionPropertyNamesTwoLevels;\nexport type FPMember =\n | FunctionPropertyNames<(typeof fs)['promises']>\n | FunctionPropertyNamesTwoLevels<(typeof fs)['promises']>;\n\nexport type CreateHook = (\n functionName: FMember | FPMember,\n info: { args: ArrayLike }\n) => boolean;\nexport type EndHook = (\n functionName: FMember | FPMember,\n info: { args: ArrayLike; span: api.Span; error?: Error }\n) => void;\n\nexport interface FsInstrumentationConfig extends InstrumentationConfig {\n createHook?: CreateHook;\n endHook?: EndHook;\n requireParentSpan?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/utils.d.ts new file mode 100644 index 0000000..d3d59a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/utils.d.ts @@ -0,0 +1,11 @@ +/// +import type { FunctionPropertyNames, FMember } from './types'; +import type * as fs from 'fs'; +type FS = typeof fs; +export declare function splitTwoLevels(functionName: FMember): [FunctionPropertyNames & string] | [FunctionPropertyNames & string, string]; +export declare function indexFs(fs: FSObject, member: FMember): { + objectToPatch: any; + functionNameToPatch: string; +}; +export {}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/utils.js new file mode 100644 index 0000000..ddc74b9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/utils.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.indexFs = exports.splitTwoLevels = void 0; +function splitTwoLevels(functionName) { + const memberParts = functionName.split('.'); + if (memberParts.length > 1) { + if (memberParts.length !== 2) + throw Error(`Invalid member function name ${functionName}`); + return memberParts; + } + else { + return [functionName]; + } +} +exports.splitTwoLevels = splitTwoLevels; +function indexFs(fs, member) { + if (!member) + throw new Error(JSON.stringify({ member })); + const splitResult = splitTwoLevels(member); + const [functionName1, functionName2] = splitResult; + if (functionName2) { + return { + objectToPatch: fs[functionName1], + functionNameToPatch: functionName2, + }; + } + else { + return { + objectToPatch: fs, + functionNameToPatch: functionName1, + }; + } +} +exports.indexFs = indexFs; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/utils.js.map new file mode 100644 index 0000000..2d6540c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAmBA,SAAgB,cAAc,CAC5B,YAAqB;IAIrB,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAC1B,MAAM,KAAK,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;QAC9D,OAAO,WAAiE,CAAC;KAC1E;SAAM;QACL,OAAO,CAAC,YAAwD,CAAC,CAAC;KACnE;AACH,CAAC;AAbD,wCAaC;AAED,SAAgB,OAAO,CACrB,EAAY,EACZ,MAAe;IAEf,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,cAAc,CAAW,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,WAAW,CAAC;IACnD,IAAI,aAAa,EAAE;QACjB,OAAO;YACL,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC;YAChC,mBAAmB,EAAE,aAAa;SACnC,CAAC;KACH;SAAM;QACL,OAAO;YACL,aAAa,EAAE,EAAE;YACjB,mBAAmB,EAAE,aAAa;SACnC,CAAC;KACH;AACH,CAAC;AAlBD,0BAkBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type { FunctionPropertyNames, FMember } from './types';\nimport type * as fs from 'fs';\ntype FS = typeof fs;\n\nexport function splitTwoLevels(\n functionName: FMember\n):\n | [FunctionPropertyNames & string]\n | [FunctionPropertyNames & string, string] {\n const memberParts = functionName.split('.');\n if (memberParts.length > 1) {\n if (memberParts.length !== 2)\n throw Error(`Invalid member function name ${functionName}`);\n return memberParts as [FunctionPropertyNames & string, string];\n } else {\n return [functionName as FunctionPropertyNames & string];\n }\n}\n\nexport function indexFs(\n fs: FSObject,\n member: FMember\n): { objectToPatch: any; functionNameToPatch: string } {\n if (!member) throw new Error(JSON.stringify({ member }));\n const splitResult = splitTwoLevels(member);\n const [functionName1, functionName2] = splitResult;\n if (functionName2) {\n return {\n objectToPatch: fs[functionName1],\n functionNameToPatch: functionName2,\n };\n } else {\n return {\n objectToPatch: fs,\n functionNameToPatch: functionName1,\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/version.d.ts new file mode 100644 index 0000000..148994b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.30.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-fs"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/version.js new file mode 100644 index 0000000..33aa97d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.30.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-fs'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/version.js.map new file mode 100644 index 0000000..9c3d111 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,mCAAmC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.30.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-fs';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/package.json new file mode 100644 index 0000000..6ba09dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-fs/package.json @@ -0,0 +1,59 @@ +{ + "name": "@opentelemetry/instrumentation-fs", + "version": "0.30.0", + "description": "OpenTelemetry instrumentation for `node:fs` file system interactions module", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-fs" + }, + "scripts": { + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "tdd": "npm run test -- --watch-extensions ts --watch", + "clean": "rimraf build/*", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "version:update": "node ../../scripts/version-update.js", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-fs", + "compile": "tsc -p ." + }, + "keywords": [ + "fs", + "instrumentation", + "nodejs", + "opentelemetry", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0" + }, + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.211.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-fs#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/README.md new file mode 100644 index 0000000..32b791d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/README.md @@ -0,0 +1,62 @@ +# OpenTelemetry Generic Pool Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`generic-pool`](https://github.com/coopernurse/node-pool) module, creating a span for every acquire call, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-generic-pool +``` + +### Supported Versions + +- [`generic-pool`](https://www.npmjs.com/package/generic-pool) version `>=2.0.0 <4` + +## Usage + +```js +const { ConsoleSpanExporter, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { GenericPoolInstrumentation } = require('@opentelemetry/instrumentation-generic-pool'); + +const provider = new NodeTracerProvider({ + spanProcessors: [ + new SimpleSpanProcessor(new ConsoleSpanExporter()), + ], +}); + +provider.register(); + +registerInstrumentations({ + instrumentations: [new GenericPoolInstrumentation()], + tracerProvider: provider, +}); +``` + +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-generic-pool +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-generic-pool.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.d.ts new file mode 100644 index 0000000..6382e1f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.d.ts @@ -0,0 +1,2 @@ +export { GenericPoolInstrumentation } from './instrumentation'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.js new file mode 100644 index 0000000..5937fc3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GenericPoolInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "GenericPoolInstrumentation", { enumerable: true, get: function () { return instrumentation_1.GenericPoolInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.js.map new file mode 100644 index 0000000..334aa18 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA+D;AAAtD,6HAAA,0BAA0B,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { GenericPoolInstrumentation } from './instrumentation';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.d.ts new file mode 100644 index 0000000..c6bfb22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationBase, InstrumentationConfig, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +export declare class GenericPoolInstrumentation extends InstrumentationBase { + private _isDisabled; + constructor(config?: InstrumentationConfig); + init(): InstrumentationNodeModuleDefinition[]; + private _acquirePatcher; + private _poolWrapper; + private _acquireWithCallbacksPatcher; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.js new file mode 100644 index 0000000..e3f5062 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.js @@ -0,0 +1,119 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GenericPoolInstrumentation = void 0; +const api = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +/** @knipignore */ +const version_1 = require("./version"); +const MODULE_NAME = 'generic-pool'; +class GenericPoolInstrumentation extends instrumentation_1.InstrumentationBase { + // only used for v2 - v2.3) + _isDisabled = false; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + } + init() { + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition(MODULE_NAME, ['>=3.0.0 <4'], moduleExports => { + const Pool = moduleExports.Pool; + if ((0, instrumentation_1.isWrapped)(Pool.prototype.acquire)) { + this._unwrap(Pool.prototype, 'acquire'); + } + this._wrap(Pool.prototype, 'acquire', this._acquirePatcher.bind(this)); + return moduleExports; + }, moduleExports => { + const Pool = moduleExports.Pool; + this._unwrap(Pool.prototype, 'acquire'); + return moduleExports; + }), + new instrumentation_1.InstrumentationNodeModuleDefinition(MODULE_NAME, ['>=2.4.0 <3'], moduleExports => { + const Pool = moduleExports.Pool; + if ((0, instrumentation_1.isWrapped)(Pool.prototype.acquire)) { + this._unwrap(Pool.prototype, 'acquire'); + } + this._wrap(Pool.prototype, 'acquire', this._acquireWithCallbacksPatcher.bind(this)); + return moduleExports; + }, moduleExports => { + const Pool = moduleExports.Pool; + this._unwrap(Pool.prototype, 'acquire'); + return moduleExports; + }), + new instrumentation_1.InstrumentationNodeModuleDefinition(MODULE_NAME, ['>=2.0.0 <2.4'], moduleExports => { + this._isDisabled = false; + if ((0, instrumentation_1.isWrapped)(moduleExports.Pool)) { + this._unwrap(moduleExports, 'Pool'); + } + this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this)); + return moduleExports; + }, moduleExports => { + // since the object is created on the fly every time, we need to use + // a boolean switch here to disable the instrumentation + this._isDisabled = true; + return moduleExports; + }), + ]; + } + _acquirePatcher(original) { + const instrumentation = this; + return function wrapped_acquire(...args) { + const parent = api.context.active(); + const span = instrumentation.tracer.startSpan('generic-pool.acquire', {}, parent); + return api.context.with(api.trace.setSpan(parent, span), () => { + return original.call(this, ...args).then(value => { + span.end(); + return value; + }, err => { + span.recordException(err); + span.end(); + throw err; + }); + }); + }; + } + _poolWrapper(original) { + const instrumentation = this; + return function wrapped_pool() { + const pool = original.apply(this, arguments); + instrumentation._wrap(pool, 'acquire', instrumentation._acquireWithCallbacksPatcher.bind(instrumentation)); + return pool; + }; + } + _acquireWithCallbacksPatcher(original) { + const instrumentation = this; + return function wrapped_acquire(cb, priority) { + // only used for v2 - v2.3 + if (instrumentation._isDisabled) { + return original.call(this, cb, priority); + } + const parent = api.context.active(); + const span = instrumentation.tracer.startSpan('generic-pool.acquire', {}, parent); + return api.context.with(api.trace.setSpan(parent, span), () => { + original.call(this, (err, client) => { + span.end(); + // Not checking whether cb is a function because + // the original code doesn't do that either. + if (cb) { + return cb(err, client); + } + }, priority); + }); + }; + } +} +exports.GenericPoolInstrumentation = GenericPoolInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.js.map new file mode 100644 index 0000000..8897d94 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n} from '@opentelemetry/instrumentation';\n\nimport type * as genericPool from 'generic-pool';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst MODULE_NAME = 'generic-pool';\n\nexport class GenericPoolInstrumentation extends InstrumentationBase {\n // only used for v2 - v2.3)\n private _isDisabled = false;\n\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=3.0.0 <4'],\n moduleExports => {\n const Pool: any = moduleExports.Pool;\n if (isWrapped(Pool.prototype.acquire)) {\n this._unwrap(Pool.prototype, 'acquire');\n }\n this._wrap(\n Pool.prototype,\n 'acquire',\n this._acquirePatcher.bind(this)\n );\n return moduleExports;\n },\n moduleExports => {\n const Pool: any = moduleExports.Pool;\n this._unwrap(Pool.prototype, 'acquire');\n return moduleExports;\n }\n ),\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.4.0 <3'],\n moduleExports => {\n const Pool: any = moduleExports.Pool;\n if (isWrapped(Pool.prototype.acquire)) {\n this._unwrap(Pool.prototype, 'acquire');\n }\n this._wrap(\n Pool.prototype,\n 'acquire',\n this._acquireWithCallbacksPatcher.bind(this)\n );\n return moduleExports;\n },\n moduleExports => {\n const Pool: any = moduleExports.Pool;\n this._unwrap(Pool.prototype, 'acquire');\n return moduleExports;\n }\n ),\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.0.0 <2.4'],\n moduleExports => {\n this._isDisabled = false;\n if (isWrapped(moduleExports.Pool)) {\n this._unwrap(moduleExports, 'Pool');\n }\n this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this));\n return moduleExports;\n },\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 }\n\n private _acquirePatcher(original: genericPool.Pool['acquire']) {\n const instrumentation = this;\n return function wrapped_acquire(\n this: genericPool.Pool,\n ...args: any[]\n ) {\n const parent = api.context.active();\n const span = instrumentation.tracer.startSpan(\n 'generic-pool.acquire',\n {},\n parent\n );\n\n return api.context.with(api.trace.setSpan(parent, span), () => {\n return original.call(this, ...args).then(\n value => {\n span.end();\n return value;\n },\n err => {\n span.recordException(err);\n span.end();\n throw err;\n }\n );\n });\n };\n }\n\n private _poolWrapper(original: any) {\n const instrumentation = this;\n return function wrapped_pool(this: any) {\n const pool = original.apply(this, arguments);\n instrumentation._wrap(\n pool,\n 'acquire',\n instrumentation._acquireWithCallbacksPatcher.bind(instrumentation)\n );\n return pool;\n };\n }\n\n private _acquireWithCallbacksPatcher(original: any) {\n const instrumentation = this;\n return function wrapped_acquire(\n this: genericPool.Pool,\n cb: Function,\n priority: number\n ) {\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(\n 'generic-pool.acquire',\n {},\n parent\n );\n\n return api.context.with(api.trace.setSpan(parent, span), () => {\n original.call(\n this,\n (err: unknown, client: unknown) => {\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 },\n priority\n );\n });\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.d.ts new file mode 100644 index 0000000..b09e4b9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.54.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-generic-pool"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.js new file mode 100644 index 0000000..a15426a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.54.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-generic-pool'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.js.map new file mode 100644 index 0000000..3fb1ec9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,6CAA6C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.54.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-generic-pool';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/package.json new file mode 100644 index 0000000..5457fb7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-generic-pool/package.json @@ -0,0 +1,59 @@ +{ + "name": "@opentelemetry/instrumentation-generic-pool", + "version": "0.54.0", + "description": "OpenTelemetry instrumentation for `generic-pool` resource pool for managing expensive resources", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-generic-pool" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-generic-pool", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "yarn test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.ts'", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "generic-pool", + "instrumentation", + "nodejs", + "opentelemetry", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "@types/generic-pool": "^3.1.9", + "generic-pool": "3.8.2" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-generic-pool#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/README.md new file mode 100644 index 0000000..b5a3f99 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/README.md @@ -0,0 +1,138 @@ +# OpenTelemetry Instrumentation GraphQL + +:bangbang: You could be a component owner for this package, and help maintain the quality its users deserve! Check out [open issues](https://github.com/open-telemetry/opentelemetry-js-contrib/labels/pkg%3Ainstrumentation-graphql) on how to help. + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation and tracing for GraphQL in Node.js applications, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +*Note*: graphql plugin instruments graphql directly. it should work with any package that wraps the graphql package (e.g apollo). + +## Installation + +```shell script +npm install @opentelemetry/instrumentation-graphql +``` + +### Supported Versions + +- [`graphql`](https://www.npmjs.com/package/graphql) versions `>=14.0.0 <17` + +## Usage + +```js +'use strict'; + +const { GraphQLInstrumentation } = require('@opentelemetry/instrumentation-graphql'); +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new GraphQLInstrumentation({ + // optional params + // allowValues: true, + // depth: 2, + // mergeItems: true, + // ignoreTrivialResolveSpans: true, + // ignoreResolveSpans: true, + }), + ], +}); + +``` + +## Optional Parameters + +| Param | type | Default Value | Description | +|---------------------------|---------------------------------------------|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| mergeItems | boolean | false | Whether to merge list items into a single element. example: `users.*.name` instead of `users.0.name`, `users.1.name` | +| depth | number | -1 | The maximum depth of fields/resolvers to instrument. When set to 0 it will not instrument fields and resolvers. When set to -1 it will instrument all fields and resolvers. | +| allowValues | boolean | false | When set to true it will not remove attributes values from schema source. By default all values that can be sensitive are removed and replaced with "*" | +| ignoreTrivialResolveSpans | boolean | false | Don't create spans for the execution of the default resolver on object properties. | +| ignoreResolveSpans | boolean | false | Don't create spans for resolvers, regardless if they are trivial or not. | +| flatResolveSpans | boolean | false | Place all resolve spans under the same parent instead of producing a nested tree structure. | +| responseHook | GraphQLInstrumentationExecutionResponseHook | undefined | Hook that allows adding custom span attributes based on the data returned from "execute" GraphQL action. | + +## Verbosity + +The instrumentation by default will create a span for each invocation of a resolver. + +A resolver is run by graphql for each field in the query response, which can be a lot of spans for objects with many properties, or when lists are involved. + +There are few config options which can be used to reduce the verbosity of the instrumentations. + +They are all disabled by default. User can opt in to any combination of them to control the amount of spans. + +### ignoreTrivialResolveSpans + +When a resolver function is not defined on the schema for a field, graphql will use the default resolver which just looks for a property with that name on the object. If the property is not a function, it's not very interesting to trace. + +### ignoreResolveSpans + +The performance overhead for complex schemas with a lot of resolvers can be high due to the large number of spans created. When ignoreResolveSpans is set to true, no spans for resolvers will be created. + +If you are using `@apollo/server` as your graphql server, you might want to +enable this option because all resolvers are [currently considered non-trivial](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1686). + +### depth + +The depth is the number of nesting levels of the field, and the following is a query with a depth of 3: + +```json +{ + a { + b { + c + } + } +} +``` + +You can limit the instrumentation to stop recording "resolve" spans after a specific depth is reached. + +- `-1` means no limit. +- `0` means don't record any "resolve" spans. +- `2` for the example above will record a span for resolving "a" and "b" but not "c". + +### mergeItems + +When resolving a field to a list, graphql will execute a resolver for every field in the query on every object in the list. + +When setting mergeItems to `true` it will only record a span for the first invocation of a resolver on each field in the list, marking it's path as "foo.*.bar" instead of "foo.0.bar", "foo.1.bar". + +Notice that all span data only reflects the invocation on the first element. That includes timing, events and status. + +Downstream spans in the context of all resolvers will be child of the first span. + +## Examples + +Can be found [in the examples directory](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/graphql) + +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-graphql +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-graphql.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.d.ts new file mode 100644 index 0000000..6634ef0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.d.ts @@ -0,0 +1,38 @@ +export declare enum AllowedOperationTypes { + QUERY = "query", + MUTATION = "mutation", + SUBSCRIPTION = "subscription" +} +export declare enum TokenKind { + SOF = "", + EOF = "", + BANG = "!", + DOLLAR = "$", + AMP = "&", + PAREN_L = "(", + PAREN_R = ")", + SPREAD = "...", + COLON = ":", + EQUALS = "=", + AT = "@", + BRACKET_L = "[", + BRACKET_R = "]", + BRACE_L = "{", + PIPE = "|", + BRACE_R = "}", + NAME = "Name", + INT = "Int", + FLOAT = "Float", + STRING = "String", + BLOCK_STRING = "BlockString", + COMMENT = "Comment" +} +export declare enum SpanNames { + EXECUTE = "graphql.execute", + PARSE = "graphql.parse", + RESOLVE = "graphql.resolve", + VALIDATE = "graphql.validate", + SCHEMA_VALIDATE = "graphql.validateSchema", + SCHEMA_PARSE = "graphql.parseSchema" +} +//# sourceMappingURL=enum.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.js new file mode 100644 index 0000000..571e85c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.js @@ -0,0 +1,59 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SpanNames = exports.TokenKind = exports.AllowedOperationTypes = void 0; +var AllowedOperationTypes; +(function (AllowedOperationTypes) { + AllowedOperationTypes["QUERY"] = "query"; + AllowedOperationTypes["MUTATION"] = "mutation"; + AllowedOperationTypes["SUBSCRIPTION"] = "subscription"; +})(AllowedOperationTypes = exports.AllowedOperationTypes || (exports.AllowedOperationTypes = {})); +var TokenKind; +(function (TokenKind) { + TokenKind["SOF"] = ""; + TokenKind["EOF"] = ""; + TokenKind["BANG"] = "!"; + TokenKind["DOLLAR"] = "$"; + TokenKind["AMP"] = "&"; + TokenKind["PAREN_L"] = "("; + TokenKind["PAREN_R"] = ")"; + TokenKind["SPREAD"] = "..."; + TokenKind["COLON"] = ":"; + TokenKind["EQUALS"] = "="; + TokenKind["AT"] = "@"; + TokenKind["BRACKET_L"] = "["; + TokenKind["BRACKET_R"] = "]"; + TokenKind["BRACE_L"] = "{"; + TokenKind["PIPE"] = "|"; + TokenKind["BRACE_R"] = "}"; + TokenKind["NAME"] = "Name"; + TokenKind["INT"] = "Int"; + TokenKind["FLOAT"] = "Float"; + TokenKind["STRING"] = "String"; + TokenKind["BLOCK_STRING"] = "BlockString"; + TokenKind["COMMENT"] = "Comment"; +})(TokenKind = exports.TokenKind || (exports.TokenKind = {})); +var SpanNames; +(function (SpanNames) { + SpanNames["EXECUTE"] = "graphql.execute"; + SpanNames["PARSE"] = "graphql.parse"; + SpanNames["RESOLVE"] = "graphql.resolve"; + SpanNames["VALIDATE"] = "graphql.validate"; + SpanNames["SCHEMA_VALIDATE"] = "graphql.validateSchema"; + SpanNames["SCHEMA_PARSE"] = "graphql.parseSchema"; +})(SpanNames = exports.SpanNames || (exports.SpanNames = {})); +//# sourceMappingURL=enum.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.js.map new file mode 100644 index 0000000..7ecc55c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.js.map @@ -0,0 +1 @@ +{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/enum.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,wCAAe,CAAA;IACf,8CAAqB,CAAA;IACrB,sDAA6B,CAAA;AAC/B,CAAC,EAJW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAIhC;AAED,IAAY,SAuBX;AAvBD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,0BAAa,CAAA;IACb,uBAAU,CAAA;IACV,yBAAY,CAAA;IACZ,sBAAS,CAAA;IACT,0BAAa,CAAA;IACb,0BAAa,CAAA;IACb,2BAAc,CAAA;IACd,wBAAW,CAAA;IACX,yBAAY,CAAA;IACZ,qBAAQ,CAAA;IACR,4BAAe,CAAA;IACf,4BAAe,CAAA;IACf,0BAAa,CAAA;IACb,uBAAU,CAAA;IACV,0BAAa,CAAA;IACb,0BAAa,CAAA;IACb,wBAAW,CAAA;IACX,4BAAe,CAAA;IACf,8BAAiB,CAAA;IACjB,yCAA4B,CAAA;IAC5B,gCAAmB,CAAA;AACrB,CAAC,EAvBW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAuBpB;AAED,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,wCAA2B,CAAA;IAC3B,oCAAuB,CAAA;IACvB,wCAA2B,CAAA;IAC3B,0CAA6B,CAAA;IAC7B,uDAA0C,CAAA;IAC1C,iDAAoC,CAAA;AACtC,CAAC,EAPW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAOpB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum AllowedOperationTypes {\n QUERY = 'query',\n MUTATION = 'mutation',\n SUBSCRIPTION = 'subscription',\n}\n\nexport enum TokenKind {\n SOF = '',\n EOF = '',\n BANG = '!',\n DOLLAR = '$',\n AMP = '&',\n PAREN_L = '(',\n PAREN_R = ')',\n SPREAD = '...',\n COLON = ':',\n EQUALS = '=',\n AT = '@',\n BRACKET_L = '[',\n BRACKET_R = ']',\n BRACE_L = '{',\n PIPE = '|',\n BRACE_R = '}',\n NAME = 'Name',\n INT = 'Int',\n FLOAT = 'Float',\n STRING = 'String',\n BLOCK_STRING = 'BlockString',\n COMMENT = 'Comment',\n}\n\nexport enum SpanNames {\n EXECUTE = 'graphql.execute',\n PARSE = 'graphql.parse',\n RESOLVE = 'graphql.resolve',\n VALIDATE = 'graphql.validate',\n SCHEMA_VALIDATE = 'graphql.validateSchema',\n SCHEMA_PARSE = 'graphql.parseSchema',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.d.ts new file mode 100644 index 0000000..8c78788 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.d.ts @@ -0,0 +1,11 @@ +export declare enum AttributeNames { + SOURCE = "graphql.source", + FIELD_NAME = "graphql.field.name", + FIELD_PATH = "graphql.field.path", + FIELD_TYPE = "graphql.field.type", + OPERATION_TYPE = "graphql.operation.type", + OPERATION_NAME = "graphql.operation.name", + VARIABLES = "graphql.variables.", + ERROR_VALIDATION_NAME = "graphql.validation.error" +} +//# sourceMappingURL=AttributeNames.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.js new file mode 100644 index 0000000..48361f5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttributeNames = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var AttributeNames; +(function (AttributeNames) { + AttributeNames["SOURCE"] = "graphql.source"; + AttributeNames["FIELD_NAME"] = "graphql.field.name"; + AttributeNames["FIELD_PATH"] = "graphql.field.path"; + AttributeNames["FIELD_TYPE"] = "graphql.field.type"; + AttributeNames["OPERATION_TYPE"] = "graphql.operation.type"; + AttributeNames["OPERATION_NAME"] = "graphql.operation.name"; + AttributeNames["VARIABLES"] = "graphql.variables."; + AttributeNames["ERROR_VALIDATION_NAME"] = "graphql.validation.error"; +})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {})); +//# sourceMappingURL=AttributeNames.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.js.map new file mode 100644 index 0000000..1b2c00e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AttributeNames.js","sourceRoot":"","sources":["../../../src/enums/AttributeNames.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,IAAY,cASX;AATD,WAAY,cAAc;IACxB,2CAAyB,CAAA;IACzB,mDAAiC,CAAA;IACjC,mDAAiC,CAAA;IACjC,mDAAiC,CAAA;IACjC,2DAAyC,CAAA;IACzC,2DAAyC,CAAA;IACzC,kDAAgC,CAAA;IAChC,oEAAkD,CAAA;AACpD,CAAC,EATW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QASzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum AttributeNames {\n SOURCE = 'graphql.source',\n FIELD_NAME = 'graphql.field.name',\n FIELD_PATH = 'graphql.field.path',\n FIELD_TYPE = 'graphql.field.type',\n OPERATION_TYPE = 'graphql.operation.type',\n OPERATION_NAME = 'graphql.operation.name',\n VARIABLES = 'graphql.variables.',\n ERROR_VALIDATION_NAME = 'graphql.validation.error',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/index.d.ts new file mode 100644 index 0000000..263016d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { GraphQLInstrumentation } from './instrumentation'; +export type { GraphQLInstrumentationConfig, GraphQLInstrumentationExecutionResponseHook, GraphQLInstrumentationParsedConfig, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/index.js new file mode 100644 index 0000000..0e73081 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GraphQLInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "GraphQLInstrumentation", { enumerable: true, get: function () { return instrumentation_1.GraphQLInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/index.js.map new file mode 100644 index 0000000..03556b8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { GraphQLInstrumentation } from './instrumentation';\nexport type {\n GraphQLInstrumentationConfig,\n GraphQLInstrumentationExecutionResponseHook,\n GraphQLInstrumentationParsedConfig,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.d.ts new file mode 100644 index 0000000..057ccd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.d.ts @@ -0,0 +1,20 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { GraphQLInstrumentationConfig, GraphQLInstrumentationParsedConfig } from './types'; +export declare class GraphQLInstrumentation extends InstrumentationBase { + constructor(config?: GraphQLInstrumentationConfig); + setConfig(config?: GraphQLInstrumentationConfig): void; + protected init(): InstrumentationNodeModuleDefinition; + private _addPatchingExecute; + private _addPatchingParser; + private _addPatchingValidate; + private _patchExecute; + private _handleExecutionResult; + private _executeResponseHook; + private _patchParse; + private _patchValidate; + private _parse; + private _validate; + private _createExecuteSpan; + private _wrapExecuteArgs; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.js new file mode 100644 index 0000000..733bffc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.js @@ -0,0 +1,294 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GraphQLInstrumentation = void 0; +const api_1 = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const enum_1 = require("./enum"); +const AttributeNames_1 = require("./enums/AttributeNames"); +const symbols_1 = require("./symbols"); +const internal_types_1 = require("./internal-types"); +const utils_1 = require("./utils"); +/** @knipignore */ +const version_1 = require("./version"); +const DEFAULT_CONFIG = { + mergeItems: false, + depth: -1, + allowValues: false, + ignoreResolveSpans: false, +}; +const supportedVersions = ['>=14.0.0 <17']; +class GraphQLInstrumentation extends instrumentation_1.InstrumentationBase { + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config }); + } + setConfig(config = {}) { + super.setConfig({ ...DEFAULT_CONFIG, ...config }); + } + init() { + const module = new instrumentation_1.InstrumentationNodeModuleDefinition('graphql', supportedVersions); + module.files.push(this._addPatchingExecute()); + module.files.push(this._addPatchingParser()); + module.files.push(this._addPatchingValidate()); + return module; + } + _addPatchingExecute() { + return new instrumentation_1.InstrumentationNodeModuleFile('graphql/execution/execute.js', supportedVersions, + // cannot make it work with appropriate type as execute function has 2 + //types and/cannot import function but only types + (moduleExports) => { + if ((0, instrumentation_1.isWrapped)(moduleExports.execute)) { + this._unwrap(moduleExports, 'execute'); + } + this._wrap(moduleExports, 'execute', this._patchExecute(moduleExports.defaultFieldResolver)); + return moduleExports; + }, moduleExports => { + if (moduleExports) { + this._unwrap(moduleExports, 'execute'); + } + }); + } + _addPatchingParser() { + return new instrumentation_1.InstrumentationNodeModuleFile('graphql/language/parser.js', supportedVersions, (moduleExports) => { + if ((0, instrumentation_1.isWrapped)(moduleExports.parse)) { + this._unwrap(moduleExports, 'parse'); + } + this._wrap(moduleExports, 'parse', this._patchParse()); + return moduleExports; + }, (moduleExports) => { + if (moduleExports) { + this._unwrap(moduleExports, 'parse'); + } + }); + } + _addPatchingValidate() { + return new instrumentation_1.InstrumentationNodeModuleFile('graphql/validation/validate.js', supportedVersions, moduleExports => { + if ((0, instrumentation_1.isWrapped)(moduleExports.validate)) { + this._unwrap(moduleExports, 'validate'); + } + this._wrap(moduleExports, 'validate', this._patchValidate()); + return moduleExports; + }, moduleExports => { + if (moduleExports) { + this._unwrap(moduleExports, 'validate'); + } + }); + } + _patchExecute(defaultFieldResolved) { + const instrumentation = this; + return function execute(original) { + return function patchExecute() { + let processedArgs; + // case when apollo server is used for example + if (arguments.length >= 2) { + const args = arguments; + processedArgs = instrumentation._wrapExecuteArgs(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], defaultFieldResolved); + } + else { + const args = arguments[0]; + processedArgs = instrumentation._wrapExecuteArgs(args.schema, args.document, args.rootValue, args.contextValue, args.variableValues, args.operationName, args.fieldResolver, args.typeResolver, defaultFieldResolved); + } + const operation = (0, utils_1.getOperation)(processedArgs.document, processedArgs.operationName); + const span = instrumentation._createExecuteSpan(operation, processedArgs); + processedArgs.contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL] = { + source: processedArgs.document + ? processedArgs.document || + processedArgs.document[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL] + : undefined, + span, + fields: {}, + }; + return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => { + return (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + return original.apply(this, [ + processedArgs, + ]); + }, (err, result) => { + instrumentation._handleExecutionResult(span, err, result); + }); + }); + }; + }; + } + _handleExecutionResult(span, err, result) { + const config = this.getConfig(); + if (result === undefined || err) { + (0, utils_1.endSpan)(span, err); + return; + } + if ((0, utils_1.isPromise)(result)) { + result.then(resultData => { + if (typeof config.responseHook !== 'function') { + (0, utils_1.endSpan)(span); + return; + } + this._executeResponseHook(span, resultData); + }, error => { + (0, utils_1.endSpan)(span, error); + }); + } + else { + if (typeof config.responseHook !== 'function') { + (0, utils_1.endSpan)(span); + return; + } + this._executeResponseHook(span, result); + } + } + _executeResponseHook(span, result) { + const { responseHook } = this.getConfig(); + if (!responseHook) { + return; + } + (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + responseHook(span, result); + }, err => { + if (err) { + this._diag.error('Error running response hook', err); + } + (0, utils_1.endSpan)(span, undefined); + }, true); + } + _patchParse() { + const instrumentation = this; + return function parse(original) { + return function patchParse(source, options) { + return instrumentation._parse(this, original, source, options); + }; + }; + } + _patchValidate() { + const instrumentation = this; + return function validate(original) { + return function patchValidate(schema, documentAST, rules, options, typeInfo) { + return instrumentation._validate(this, original, schema, documentAST, rules, typeInfo, options); + }; + }; + } + _parse(obj, original, source, options) { + const config = this.getConfig(); + const span = this.tracer.startSpan(enum_1.SpanNames.PARSE); + return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => { + return (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + return original.call(obj, source, options); + }, (err, result) => { + if (result) { + const operation = (0, utils_1.getOperation)(result); + if (!operation) { + span.updateName(enum_1.SpanNames.SCHEMA_PARSE); + } + else if (result.loc) { + (0, utils_1.addSpanSource)(span, result.loc, config.allowValues); + } + } + (0, utils_1.endSpan)(span, err); + }); + }); + } + _validate(obj, original, schema, documentAST, rules, typeInfo, options) { + const span = this.tracer.startSpan(enum_1.SpanNames.VALIDATE, {}); + return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => { + return (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + return original.call(obj, schema, documentAST, rules, options, typeInfo); + }, (err, errors) => { + if (!documentAST.loc) { + span.updateName(enum_1.SpanNames.SCHEMA_VALIDATE); + } + if (errors && errors.length) { + span.recordException({ + name: AttributeNames_1.AttributeNames.ERROR_VALIDATION_NAME, + message: JSON.stringify(errors), + }); + } + (0, utils_1.endSpan)(span, err); + }); + }); + } + _createExecuteSpan(operation, processedArgs) { + const config = this.getConfig(); + const span = this.tracer.startSpan(enum_1.SpanNames.EXECUTE, {}); + if (operation) { + const { operation: operationType, name: nameNode } = operation; + span.setAttribute(AttributeNames_1.AttributeNames.OPERATION_TYPE, operationType); + const operationName = nameNode?.value; + // https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/instrumentation/graphql/ + // > The span name MUST be of the format provided that graphql.operation.type and graphql.operation.name are available. + // > If graphql.operation.name is not available, the span SHOULD be named . + if (operationName) { + span.setAttribute(AttributeNames_1.AttributeNames.OPERATION_NAME, operationName); + span.updateName(`${operationType} ${operationName}`); + } + else { + span.updateName(operationType); + } + } + else { + let operationName = ' '; + if (processedArgs.operationName) { + operationName = ` "${processedArgs.operationName}" `; + } + operationName = internal_types_1.OPERATION_NOT_SUPPORTED.replace('$operationName$', operationName); + span.setAttribute(AttributeNames_1.AttributeNames.OPERATION_NAME, operationName); + } + if (processedArgs.document?.loc) { + (0, utils_1.addSpanSource)(span, processedArgs.document.loc, config.allowValues); + } + if (processedArgs.variableValues && config.allowValues) { + (0, utils_1.addInputVariableAttributes)(span, processedArgs.variableValues); + } + return span; + } + _wrapExecuteArgs(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver, defaultFieldResolved) { + if (!contextValue) { + contextValue = {}; + } + if (contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL] || + this.getConfig().ignoreResolveSpans) { + return { + schema, + document, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + typeResolver, + }; + } + const isUsingDefaultResolver = fieldResolver == null; + // follows graphql implementation here: + // https://github.com/graphql/graphql-js/blob/0b7daed9811731362c71900e12e5ea0d1ecc7f1f/src/execution/execute.ts#L494 + const fieldResolverForExecute = fieldResolver ?? defaultFieldResolved; + fieldResolver = (0, utils_1.wrapFieldResolver)(this.tracer, () => this.getConfig(), fieldResolverForExecute, isUsingDefaultResolver); + if (schema) { + (0, utils_1.wrapFields)(schema.getQueryType(), this.tracer, () => this.getConfig()); + (0, utils_1.wrapFields)(schema.getMutationType(), this.tracer, () => this.getConfig()); + } + return { + schema, + document, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + typeResolver, + }; + } +} +exports.GraphQLInstrumentation = GraphQLInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.js.map new file mode 100644 index 0000000..2e723a5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAoD;AACpD,oEAMwC;AAExC,iCAAmC;AACnC,2DAAwD;AACxD,uCAAqD;AAErD,qDAU0B;AAC1B,mCAQiB;AAEjB,kBAAkB;AAClB,uCAA0D;AAQ1D,MAAM,cAAc,GAAuC;IACzD,UAAU,EAAE,KAAK;IACjB,KAAK,EAAE,CAAC,CAAC;IACT,WAAW,EAAE,KAAK;IAClB,kBAAkB,EAAE,KAAK;CAC1B,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,cAAc,CAAC,CAAC;AAE3C,MAAa,sBAAuB,SAAQ,qCAAuD;IACjG,YAAY,SAAuC,EAAE;QACnD,KAAK,CAAC,sBAAY,EAAE,yBAAe,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IAEQ,SAAS,CAAC,SAAuC,EAAE;QAC1D,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAES,IAAI;QACZ,MAAM,MAAM,GAAG,IAAI,qDAAmC,CACpD,SAAS,EACT,iBAAiB,CAClB,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAE/C,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,mBAAmB;QACzB,OAAO,IAAI,+CAA6B,CACtC,8BAA8B,EAC9B,iBAAiB;QACjB,sEAAsE;QACtE,iDAAiD;QACjD,CAAC,aAAkB,EAAE,EAAE;YACrB,IAAI,IAAA,2BAAS,EAAC,aAAa,CAAC,OAAO,CAAC,EAAE;gBACpC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;aACxC;YACD,IAAI,CAAC,KAAK,CACR,aAAa,EACb,SAAS,EACT,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,oBAAoB,CAAC,CACvD,CAAC;YACF,OAAO,aAAa,CAAC;QACvB,CAAC,EACD,aAAa,CAAC,EAAE;YACd,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;aACxC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,kBAAkB;QACxB,OAAO,IAAI,+CAA6B,CACtC,4BAA4B,EAC5B,iBAAiB,EACjB,CAAC,aAAkC,EAAE,EAAE;YACrC,IAAI,IAAA,2BAAS,EAAC,aAAa,CAAC,KAAK,CAAC,EAAE;gBAClC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;aACtC;YACD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACvD,OAAO,aAAa,CAAC;QACvB,CAAC,EACD,CAAC,aAAkC,EAAE,EAAE;YACrC,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;aACtC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAC1B,OAAO,IAAI,+CAA6B,CACtC,gCAAgC,EAChC,iBAAiB,EACjB,aAAa,CAAC,EAAE;YACd,IAAI,IAAA,2BAAS,EAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;aACzC;YACD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAC7D,OAAO,aAAa,CAAC;QACvB,CAAC,EACD,aAAa,CAAC,EAAE;YACd,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;aACzC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,aAAa,CACnB,oBAAiE;QAEjE,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,OAAO,SAAS,OAAO,CAAC,QAAQ;YAC9B,OAAO,SAAS,YAAY;gBAG1B,IAAI,aAAgC,CAAC;gBAErC,8CAA8C;gBAC9C,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;oBACzB,MAAM,IAAI,GAAG,SAA6C,CAAC;oBAC3D,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAC9C,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,oBAAoB,CACrB,CAAC;iBACH;qBAAM;oBACL,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAA+B,CAAC;oBACxD,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAC9C,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,oBAAoB,CACrB,CAAC;iBACH;gBAED,MAAM,SAAS,GAAG,IAAA,oBAAY,EAC5B,aAAa,CAAC,QAAQ,EACtB,aAAa,CAAC,aAAa,CAC5B,CAAC;gBAEF,MAAM,IAAI,GAAG,eAAe,CAAC,kBAAkB,CAC7C,SAAS,EACT,aAAa,CACd,CAAC;gBAEF,aAAa,CAAC,YAAY,CAAC,kCAAwB,CAAC,GAAG;oBACrD,MAAM,EAAE,aAAa,CAAC,QAAQ;wBAC5B,CAAC,CAAC,aAAa,CAAC,QAAQ;4BACrB,aAAa,CAAC,QAAkC,CAC/C,kCAAwB,CACzB;wBACH,CAAC,CAAC,SAAS;oBACb,IAAI;oBACJ,MAAM,EAAE,EAAE;iBACX,CAAC;gBAEF,OAAO,aAAO,CAAC,IAAI,CAAC,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;oBAC9D,OAAO,IAAA,wCAAsB,EAG3B,GAAG,EAAE;wBACH,OAAQ,QAAmC,CAAC,KAAK,CAAC,IAAI,EAAE;4BACtD,aAAa;yBACd,CAAC,CAAC;oBACL,CAAC,EACD,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;wBACd,eAAe,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;oBAC5D,CAAC,CACF,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAC5B,IAAc,EACd,GAAW,EACX,MAAqD;QAErD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,MAAM,KAAK,SAAS,IAAI,GAAG,EAAE;YAC/B,IAAA,eAAO,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACnB,OAAO;SACR;QAED,IAAI,IAAA,iBAAS,EAAC,MAAM,CAAC,EAAE;YACpB,MAAgD,CAAC,IAAI,CACpD,UAAU,CAAC,EAAE;gBACX,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;oBAC7C,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC;oBACd,OAAO;iBACR;gBACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,EACD,KAAK,CAAC,EAAE;gBACN,IAAA,eAAO,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvB,CAAC,CACF,CAAC;SACH;aAAM;YACL,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;gBAC7C,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC;gBACd,OAAO;aACR;YACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAsC,CAAC,CAAC;SACzE;IACH,CAAC;IAEO,oBAAoB,CAC1B,IAAc,EACd,MAAoC;QAEpC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;SACR;QAED,IAAA,wCAAsB,EACpB,GAAG,EAAE;YACH,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,EACD,GAAG,CAAC,EAAE;YACJ,IAAI,GAAG,EAAE;gBACP,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;aACtD;YAED,IAAA,eAAO,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3B,CAAC,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,OAAO,SAAS,KAAK,CAAC,QAAQ;YAC5B,OAAO,SAAS,UAAU,CAExB,MAAoC,EACpC,OAAmC;gBAEnC,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACjE,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,OAAO,SAAS,QAAQ,CAAC,QAAsB;YAC7C,OAAO,SAAS,aAAa,CAE3B,MAAkC,EAClC,WAAsC,EACtC,KAAkD,EAClD,OAAgC,EAChC,QAAgC;gBAEhC,OAAO,eAAe,CAAC,SAAS,CAC9B,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,WAAW,EACX,KAAK,EACL,QAAQ,EACR,OAAO,CACR,CAAC;YACJ,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAEO,MAAM,CACZ,GAAc,EACd,QAAmB,EACnB,MAAoC,EACpC,OAAmC;QAEnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAS,CAAC,KAAK,CAAC,CAAC;QAEpD,OAAO,aAAO,CAAC,IAAI,CAAC,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;YAC9D,OAAO,IAAA,wCAAsB,EAG3B,GAAG,EAAE;gBACH,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC,EACD,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACd,IAAI,MAAM,EAAE;oBACV,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC;oBACvC,IAAI,CAAC,SAAS,EAAE;wBACd,IAAI,CAAC,UAAU,CAAC,gBAAS,CAAC,YAAY,CAAC,CAAC;qBACzC;yBAAM,IAAI,MAAM,CAAC,GAAG,EAAE;wBACrB,IAAA,qBAAa,EAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;qBACrD;iBACF;gBACD,IAAA,eAAO,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrB,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CACf,GAAiB,EACjB,QAAsB,EACtB,MAAkC,EAClC,WAAsC,EACtC,KAAkD,EAClD,QAAgC,EAChC,OAAgC;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE3D,OAAO,aAAO,CAAC,IAAI,CAAC,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;YAC9D,OAAO,IAAA,wCAAsB,EAC3B,GAAG,EAAE;gBACH,OAAO,QAAQ,CAAC,IAAI,CAClB,GAAG,EACH,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,QAAQ,CACT,CAAC;YACJ,CAAC,EACD,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACd,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;oBACpB,IAAI,CAAC,UAAU,CAAC,gBAAS,CAAC,eAAe,CAAC,CAAC;iBAC5C;gBACD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;oBAC3B,IAAI,CAAC,eAAe,CAAC;wBACnB,IAAI,EAAE,+BAAc,CAAC,qBAAqB;wBAC1C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;qBAChC,CAAC,CAAC;iBACJ;gBACD,IAAA,eAAO,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrB,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB,CACxB,SAAkD,EAClD,aAAyC;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,SAAS,EAAE;YACb,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,GAChD,SAAiD,CAAC;YAEpD,IAAI,CAAC,YAAY,CAAC,+BAAc,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YAEhE,MAAM,aAAa,GAAG,QAAQ,EAAE,KAAK,CAAC;YAEtC,4GAA4G;YAC5G,yKAAyK;YACzK,mGAAmG;YACnG,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,YAAY,CAAC,+BAAc,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;gBAChE,IAAI,CAAC,UAAU,CAAC,GAAG,aAAa,IAAI,aAAa,EAAE,CAAC,CAAC;aACtD;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aAChC;SACF;aAAM;YACL,IAAI,aAAa,GAAG,GAAG,CAAC;YACxB,IAAI,aAAa,CAAC,aAAa,EAAE;gBAC/B,aAAa,GAAG,KAAK,aAAa,CAAC,aAAa,IAAI,CAAC;aACtD;YACD,aAAa,GAAG,wCAAuB,CAAC,OAAO,CAC7C,iBAAiB,EACjB,aAAa,CACd,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,+BAAc,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;SACjE;QAED,IAAI,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC/B,IAAA,qBAAa,EAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;SACrE;QAED,IAAI,aAAa,CAAC,cAAc,IAAI,MAAM,CAAC,WAAW,EAAE;YACtD,IAAA,kCAA0B,EAAC,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;SAChE;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,gBAAgB,CACtB,MAAkC,EAClC,QAAmC,EACnC,SAAc,EACd,YAAiB,EACjB,cAA6C,EAC7C,aAA4B,EAC5B,aAAiE,EACjE,YAA+D,EAC/D,oBAAiE;QAEjE,IAAI,CAAC,YAAY,EAAE;YACjB,YAAY,GAAG,EAAE,CAAC;SACnB;QAED,IACE,YAAY,CAAC,kCAAwB,CAAC;YACtC,IAAI,CAAC,SAAS,EAAE,CAAC,kBAAkB,EACnC;YACA,OAAO;gBACL,MAAM;gBACN,QAAQ;gBACR,SAAS;gBACT,YAAY;gBACZ,cAAc;gBACd,aAAa;gBACb,aAAa;gBACb,YAAY;aACb,CAAC;SACH;QAED,MAAM,sBAAsB,GAAG,aAAa,IAAI,IAAI,CAAC;QACrD,uCAAuC;QACvC,oHAAoH;QACpH,MAAM,uBAAuB,GAAG,aAAa,IAAI,oBAAoB,CAAC;QACtE,aAAa,GAAG,IAAA,yBAAiB,EAC/B,IAAI,CAAC,MAAM,EACX,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EACtB,uBAAuB,EACvB,sBAAsB,CACvB,CAAC;QAEF,IAAI,MAAM,EAAE;YACV,IAAA,kBAAU,EAAC,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACvE,IAAA,kBAAU,EAAC,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SAC3E;QAED,OAAO;YACL,MAAM;YACN,QAAQ;YACR,SAAS;YACT,YAAY;YACZ,cAAc;YACd,aAAa;YACb,aAAa;YACb,YAAY;SACb,CAAC;IACJ,CAAC;CACF;AA/aD,wDA+aC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { context, trace } from '@opentelemetry/api';\nimport {\n isWrapped,\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport type * as graphqlTypes from 'graphql';\nimport { SpanNames } from './enum';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { OTEL_GRAPHQL_DATA_SYMBOL } from './symbols';\n\nimport {\n executeFunctionWithObj,\n executeArgumentsArray,\n executeType,\n parseType,\n validateType,\n OtelExecutionArgs,\n ObjectWithGraphQLData,\n OPERATION_NOT_SUPPORTED,\n Maybe,\n} from './internal-types';\nimport {\n addInputVariableAttributes,\n addSpanSource,\n endSpan,\n getOperation,\n isPromise,\n wrapFieldResolver,\n wrapFields,\n} from './utils';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport * as api from '@opentelemetry/api';\nimport type { PromiseOrValue } from 'graphql/jsutils/PromiseOrValue';\nimport {\n GraphQLInstrumentationConfig,\n GraphQLInstrumentationParsedConfig,\n} from './types';\n\nconst DEFAULT_CONFIG: GraphQLInstrumentationParsedConfig = {\n mergeItems: false,\n depth: -1,\n allowValues: false,\n ignoreResolveSpans: false,\n};\n\nconst supportedVersions = ['>=14.0.0 <17'];\n\nexport class GraphQLInstrumentation extends InstrumentationBase {\n constructor(config: GraphQLInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n }\n\n override setConfig(config: GraphQLInstrumentationConfig = {}) {\n super.setConfig({ ...DEFAULT_CONFIG, ...config });\n }\n\n protected init() {\n const module = new InstrumentationNodeModuleDefinition(\n 'graphql',\n supportedVersions\n );\n module.files.push(this._addPatchingExecute());\n module.files.push(this._addPatchingParser());\n module.files.push(this._addPatchingValidate());\n\n return module;\n }\n\n private _addPatchingExecute(): InstrumentationNodeModuleFile {\n return new InstrumentationNodeModuleFile(\n 'graphql/execution/execute.js',\n 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: any) => {\n if (isWrapped(moduleExports.execute)) {\n this._unwrap(moduleExports, 'execute');\n }\n this._wrap(\n moduleExports,\n 'execute',\n this._patchExecute(moduleExports.defaultFieldResolver)\n );\n return moduleExports;\n },\n moduleExports => {\n if (moduleExports) {\n this._unwrap(moduleExports, 'execute');\n }\n }\n );\n }\n\n private _addPatchingParser(): InstrumentationNodeModuleFile {\n return new InstrumentationNodeModuleFile(\n 'graphql/language/parser.js',\n supportedVersions,\n (moduleExports: typeof graphqlTypes) => {\n if (isWrapped(moduleExports.parse)) {\n this._unwrap(moduleExports, 'parse');\n }\n this._wrap(moduleExports, 'parse', this._patchParse());\n return moduleExports;\n },\n (moduleExports: typeof graphqlTypes) => {\n if (moduleExports) {\n this._unwrap(moduleExports, 'parse');\n }\n }\n );\n }\n\n private _addPatchingValidate(): InstrumentationNodeModuleFile {\n return new InstrumentationNodeModuleFile(\n 'graphql/validation/validate.js',\n supportedVersions,\n moduleExports => {\n if (isWrapped(moduleExports.validate)) {\n this._unwrap(moduleExports, 'validate');\n }\n this._wrap(moduleExports, 'validate', this._patchValidate());\n return moduleExports;\n },\n moduleExports => {\n if (moduleExports) {\n this._unwrap(moduleExports, 'validate');\n }\n }\n );\n }\n\n private _patchExecute(\n defaultFieldResolved: graphqlTypes.GraphQLFieldResolver\n ): (original: executeType) => executeType {\n const instrumentation = this;\n return function execute(original) {\n return function patchExecute(\n this: executeType\n ): PromiseOrValue {\n let processedArgs: OtelExecutionArgs;\n\n // case when apollo server is used for example\n if (arguments.length >= 2) {\n const args = arguments as unknown as executeArgumentsArray;\n processedArgs = instrumentation._wrapExecuteArgs(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5],\n args[6],\n args[7],\n defaultFieldResolved\n );\n } else {\n const args = arguments[0] as graphqlTypes.ExecutionArgs;\n processedArgs = instrumentation._wrapExecuteArgs(\n args.schema,\n args.document,\n args.rootValue,\n args.contextValue,\n args.variableValues,\n args.operationName,\n args.fieldResolver,\n args.typeResolver,\n defaultFieldResolved\n );\n }\n\n const operation = getOperation(\n processedArgs.document,\n processedArgs.operationName\n );\n\n const span = instrumentation._createExecuteSpan(\n operation,\n processedArgs\n );\n\n processedArgs.contextValue[OTEL_GRAPHQL_DATA_SYMBOL] = {\n source: processedArgs.document\n ? processedArgs.document ||\n (processedArgs.document as ObjectWithGraphQLData)[\n OTEL_GRAPHQL_DATA_SYMBOL\n ]\n : undefined,\n span,\n fields: {},\n };\n\n return context.with(trace.setSpan(context.active(), span), () => {\n return safeExecuteInTheMiddle<\n PromiseOrValue\n >(\n () => {\n return (original as executeFunctionWithObj).apply(this, [\n processedArgs,\n ]);\n },\n (err, result) => {\n instrumentation._handleExecutionResult(span, err, result);\n }\n );\n });\n };\n };\n }\n\n private _handleExecutionResult(\n span: api.Span,\n err?: Error,\n result?: PromiseOrValue\n ) {\n const config = this.getConfig();\n if (result === undefined || err) {\n endSpan(span, err);\n return;\n }\n\n if (isPromise(result)) {\n (result as Promise).then(\n resultData => {\n if (typeof config.responseHook !== 'function') {\n endSpan(span);\n return;\n }\n this._executeResponseHook(span, resultData);\n },\n error => {\n endSpan(span, error);\n }\n );\n } else {\n if (typeof config.responseHook !== 'function') {\n endSpan(span);\n return;\n }\n this._executeResponseHook(span, result as graphqlTypes.ExecutionResult);\n }\n }\n\n private _executeResponseHook(\n span: api.Span,\n result: graphqlTypes.ExecutionResult\n ) {\n const { responseHook } = this.getConfig();\n if (!responseHook) {\n return;\n }\n\n safeExecuteInTheMiddle(\n () => {\n responseHook(span, result);\n },\n err => {\n if (err) {\n this._diag.error('Error running response hook', err);\n }\n\n endSpan(span, undefined);\n },\n true\n );\n }\n\n private _patchParse(): (original: parseType) => parseType {\n const instrumentation = this;\n return function parse(original) {\n return function patchParse(\n this: parseType,\n source: string | graphqlTypes.Source,\n options?: graphqlTypes.ParseOptions\n ): graphqlTypes.DocumentNode {\n return instrumentation._parse(this, original, source, options);\n };\n };\n }\n\n private _patchValidate(): (original: validateType) => validateType {\n const instrumentation = this;\n return function validate(original: validateType) {\n return function patchValidate(\n this: validateType,\n schema: graphqlTypes.GraphQLSchema,\n documentAST: graphqlTypes.DocumentNode,\n rules?: ReadonlyArray,\n options?: { maxErrors?: number },\n typeInfo?: graphqlTypes.TypeInfo\n ): ReadonlyArray {\n return instrumentation._validate(\n this,\n original,\n schema,\n documentAST,\n rules,\n typeInfo,\n options\n );\n };\n };\n }\n\n private _parse(\n obj: parseType,\n original: parseType,\n source: string | graphqlTypes.Source,\n options?: graphqlTypes.ParseOptions\n ): graphqlTypes.DocumentNode {\n const config = this.getConfig();\n const span = this.tracer.startSpan(SpanNames.PARSE);\n\n return context.with(trace.setSpan(context.active(), span), () => {\n return safeExecuteInTheMiddle<\n graphqlTypes.DocumentNode & ObjectWithGraphQLData\n >(\n () => {\n return original.call(obj, source, options);\n },\n (err, result) => {\n if (result) {\n const operation = getOperation(result);\n if (!operation) {\n span.updateName(SpanNames.SCHEMA_PARSE);\n } else if (result.loc) {\n addSpanSource(span, result.loc, config.allowValues);\n }\n }\n endSpan(span, err);\n }\n );\n });\n }\n\n private _validate(\n obj: validateType,\n original: validateType,\n schema: graphqlTypes.GraphQLSchema,\n documentAST: graphqlTypes.DocumentNode,\n rules?: ReadonlyArray,\n typeInfo?: graphqlTypes.TypeInfo,\n options?: { maxErrors?: number }\n ): ReadonlyArray {\n const span = this.tracer.startSpan(SpanNames.VALIDATE, {});\n\n return context.with(trace.setSpan(context.active(), span), () => {\n return safeExecuteInTheMiddle>(\n () => {\n return original.call(\n obj,\n schema,\n documentAST,\n rules,\n options,\n typeInfo\n );\n },\n (err, errors) => {\n if (!documentAST.loc) {\n span.updateName(SpanNames.SCHEMA_VALIDATE);\n }\n if (errors && errors.length) {\n span.recordException({\n name: AttributeNames.ERROR_VALIDATION_NAME,\n message: JSON.stringify(errors),\n });\n }\n endSpan(span, err);\n }\n );\n });\n }\n\n private _createExecuteSpan(\n operation: graphqlTypes.DefinitionNode | undefined,\n processedArgs: graphqlTypes.ExecutionArgs\n ): api.Span {\n const config = this.getConfig();\n\n const span = this.tracer.startSpan(SpanNames.EXECUTE, {});\n if (operation) {\n const { operation: operationType, name: nameNode } =\n operation as graphqlTypes.OperationDefinitionNode;\n\n span.setAttribute(AttributeNames.OPERATION_TYPE, operationType);\n\n const operationName = nameNode?.value;\n\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.OPERATION_NAME, operationName);\n span.updateName(`${operationType} ${operationName}`);\n } else {\n span.updateName(operationType);\n }\n } else {\n let operationName = ' ';\n if (processedArgs.operationName) {\n operationName = ` \"${processedArgs.operationName}\" `;\n }\n operationName = OPERATION_NOT_SUPPORTED.replace(\n '$operationName$',\n operationName\n );\n span.setAttribute(AttributeNames.OPERATION_NAME, operationName);\n }\n\n if (processedArgs.document?.loc) {\n addSpanSource(span, processedArgs.document.loc, config.allowValues);\n }\n\n if (processedArgs.variableValues && config.allowValues) {\n addInputVariableAttributes(span, processedArgs.variableValues);\n }\n\n return span;\n }\n\n private _wrapExecuteArgs(\n schema: graphqlTypes.GraphQLSchema,\n document: graphqlTypes.DocumentNode,\n rootValue: any,\n contextValue: any,\n variableValues: Maybe<{ [key: string]: any }>,\n operationName: Maybe,\n fieldResolver: Maybe>,\n typeResolver: Maybe>,\n defaultFieldResolved: graphqlTypes.GraphQLFieldResolver\n ): OtelExecutionArgs {\n if (!contextValue) {\n contextValue = {};\n }\n\n if (\n contextValue[OTEL_GRAPHQL_DATA_SYMBOL] ||\n this.getConfig().ignoreResolveSpans\n ) {\n return {\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n };\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 = wrapFieldResolver(\n this.tracer,\n () => this.getConfig(),\n fieldResolverForExecute,\n isUsingDefaultResolver\n );\n\n if (schema) {\n wrapFields(schema.getQueryType(), this.tracer, () => this.getConfig());\n wrapFields(schema.getMutationType(), this.tracer, () => this.getConfig());\n }\n\n return {\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.d.ts new file mode 100644 index 0000000..e1d363d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.d.ts @@ -0,0 +1,71 @@ +import type * as graphqlTypes from 'graphql'; +import type * as api from '@opentelemetry/api'; +import type { PromiseOrValue } from 'graphql/jsutils/PromiseOrValue'; +import type { DocumentNode } from 'graphql/language/ast'; +import type { GraphQLFieldResolver, GraphQLTypeResolver } from 'graphql/type/definition'; +import { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols'; +export declare const OPERATION_NOT_SUPPORTED: string; +export type executeFunctionWithObj = (args: graphqlTypes.ExecutionArgs) => PromiseOrValue; +export type executeArgumentsArray = [ + graphqlTypes.GraphQLSchema, + graphqlTypes.DocumentNode, + any, + any, + Maybe<{ + [key: string]: any; + }>, + Maybe, + Maybe>, + Maybe> +]; +export type executeFunctionWithArgs = (schema: graphqlTypes.GraphQLSchema, document: graphqlTypes.DocumentNode, rootValue?: any, contextValue?: any, variableValues?: Maybe<{ + [key: string]: any; +}>, operationName?: Maybe, fieldResolver?: Maybe>, typeResolver?: Maybe>) => PromiseOrValue; +export interface OtelExecutionArgs { + schema: graphqlTypes.GraphQLSchema; + document: DocumentNode & ObjectWithGraphQLData; + rootValue?: any; + contextValue?: any & ObjectWithGraphQLData; + variableValues?: Maybe<{ + [key: string]: any; + }>; + operationName?: Maybe; + fieldResolver?: Maybe & OtelPatched>; + typeResolver?: Maybe>; +} +export type executeType = executeFunctionWithObj | executeFunctionWithArgs; +export type parseType = (source: string | graphqlTypes.Source, options?: graphqlTypes.ParseOptions) => graphqlTypes.DocumentNode; +export type validateType = (schema: graphqlTypes.GraphQLSchema, documentAST: graphqlTypes.DocumentNode, rules?: ReadonlyArray, options?: { + maxErrors?: number; +}, typeInfo?: graphqlTypes.TypeInfo) => ReadonlyArray; +export interface GraphQLField { + span: api.Span; +} +interface OtelGraphQLData { + source?: any; + span: api.Span; + fields: { + [key: string]: GraphQLField; + }; +} +export interface ObjectWithGraphQLData { + [OTEL_GRAPHQL_DATA_SYMBOL]?: OtelGraphQLData; +} +export interface OtelPatched { + [OTEL_PATCHED_SYMBOL]?: boolean; +} +export interface GraphQLPath { + prev: GraphQLPath | undefined; + key: string | number; + /** + * optional as it didn't exist yet in ver 14 + */ + typename?: string | undefined; +} +/** + * Moving this type from ver 15 of graphql as it is nto available in ver. 14s + * this way it can compile against ver 14. + */ +export type Maybe = null | undefined | T; +export {}; +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.js new file mode 100644 index 0000000..a8b04e3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.OPERATION_NOT_SUPPORTED = void 0; +const symbols_1 = require("./symbols"); +exports.OPERATION_NOT_SUPPORTED = 'Operation$operationName$not' + ' supported'; +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.js.map new file mode 100644 index 0000000..3fe6154 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAUH,uCAA0E;AAE7D,QAAA,uBAAuB,GAClC,6BAA6B,GAAG,YAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type * as graphqlTypes from 'graphql';\nimport type * as api from '@opentelemetry/api';\nimport type { PromiseOrValue } from 'graphql/jsutils/PromiseOrValue';\nimport type { DocumentNode } from 'graphql/language/ast';\nimport type {\n GraphQLFieldResolver,\n GraphQLTypeResolver,\n} from 'graphql/type/definition';\nimport { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols';\n\nexport const OPERATION_NOT_SUPPORTED =\n 'Operation$operationName$not' + ' supported';\n\nexport type executeFunctionWithObj = (\n args: graphqlTypes.ExecutionArgs\n) => PromiseOrValue;\n\nexport type executeArgumentsArray = [\n graphqlTypes.GraphQLSchema,\n graphqlTypes.DocumentNode,\n any,\n any,\n Maybe<{ [key: string]: any }>,\n Maybe,\n Maybe>,\n Maybe>,\n];\n\nexport type executeFunctionWithArgs = (\n schema: graphqlTypes.GraphQLSchema,\n document: graphqlTypes.DocumentNode,\n rootValue?: any,\n contextValue?: any,\n variableValues?: Maybe<{ [key: string]: any }>,\n operationName?: Maybe,\n fieldResolver?: Maybe>,\n typeResolver?: Maybe>\n) => PromiseOrValue;\n\nexport interface OtelExecutionArgs {\n schema: graphqlTypes.GraphQLSchema;\n document: DocumentNode & ObjectWithGraphQLData;\n rootValue?: any;\n contextValue?: any & ObjectWithGraphQLData;\n variableValues?: Maybe<{ [key: string]: any }>;\n operationName?: Maybe;\n fieldResolver?: Maybe & OtelPatched>;\n typeResolver?: Maybe>;\n}\n\nexport type executeType = executeFunctionWithObj | executeFunctionWithArgs;\n\nexport type parseType = (\n source: string | graphqlTypes.Source,\n options?: graphqlTypes.ParseOptions\n) => graphqlTypes.DocumentNode;\n\nexport type validateType = (\n schema: graphqlTypes.GraphQLSchema,\n documentAST: graphqlTypes.DocumentNode,\n rules?: ReadonlyArray,\n options?: { maxErrors?: number },\n typeInfo?: graphqlTypes.TypeInfo\n) => ReadonlyArray;\n\nexport interface GraphQLField {\n span: api.Span;\n}\n\ninterface OtelGraphQLData {\n source?: any;\n span: api.Span;\n fields: { [key: string]: GraphQLField };\n}\n\nexport interface ObjectWithGraphQLData {\n [OTEL_GRAPHQL_DATA_SYMBOL]?: OtelGraphQLData;\n}\n\nexport interface OtelPatched {\n [OTEL_PATCHED_SYMBOL]?: boolean;\n}\n\nexport interface GraphQLPath {\n prev: GraphQLPath | undefined;\n key: string | number;\n /**\n * optional as it didn't exist yet in ver 14\n */\n typename?: string | undefined;\n}\n\n/**\n * Moving this type from ver 15 of graphql as it is nto available in ver. 14s\n * this way it can compile against ver 14.\n */\nexport type Maybe = null | undefined | T;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.d.ts new file mode 100644 index 0000000..3bc3ccb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.d.ts @@ -0,0 +1,3 @@ +export declare const OTEL_PATCHED_SYMBOL: unique symbol; +export declare const OTEL_GRAPHQL_DATA_SYMBOL: unique symbol; +//# sourceMappingURL=symbols.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.js new file mode 100644 index 0000000..a2a31b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.OTEL_GRAPHQL_DATA_SYMBOL = exports.OTEL_PATCHED_SYMBOL = void 0; +exports.OTEL_PATCHED_SYMBOL = Symbol.for('opentelemetry.patched'); +exports.OTEL_GRAPHQL_DATA_SYMBOL = Symbol.for('opentelemetry.graphql_data'); +//# sourceMappingURL=symbols.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.js.map new file mode 100644 index 0000000..be82b85 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.js.map @@ -0,0 +1 @@ +{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/symbols.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEU,QAAA,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAE1D,QAAA,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAChD,4BAA4B,CAC7B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport const OTEL_PATCHED_SYMBOL = Symbol.for('opentelemetry.patched');\n\nexport const OTEL_GRAPHQL_DATA_SYMBOL = Symbol.for(\n 'opentelemetry.graphql_data'\n);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/types.d.ts new file mode 100644 index 0000000..aedbc5f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/types.d.ts @@ -0,0 +1,71 @@ +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import type * as api from '@opentelemetry/api'; +export interface GraphQLInstrumentationExecutionResponseHook { + (span: api.Span, data: any): void; +} +export interface GraphQLInstrumentationConfig extends InstrumentationConfig { + /** + * When set to true it will not remove attributes values from schema source. + * By default all values that can be sensitive are removed and replaced + * with "*" + * + * @default false + */ + allowValues?: boolean; + /** + * The maximum depth of fields/resolvers to instrument. + * When set to 0 it will not instrument fields and resolvers + * + * @default undefined + */ + depth?: number; + /** + * Do not create spans for resolvers. + * + * @default false + */ + ignoreResolveSpans?: boolean; + /** + * Don't create spans for the execution of the default resolver on object properties. + * + * When a resolver function is not defined on the schema for a field, graphql will + * use the default resolver which just looks for a property with that name on the object. + * If the property is not a function, it's not very interesting to trace. + * This option can reduce noise and number of spans created. + * + * @default false + */ + ignoreTrivialResolveSpans?: boolean; + /** + * Place all resolve spans under the same parent instead of producing a nested tree structure. + * + * @default false + */ + flatResolveSpans?: boolean; + /** + * Whether to merge list items into a single element. + * + * @example `users.*.name` instead of `users.0.name`, `users.1.name` + * + * @default false + */ + mergeItems?: boolean; + /** + * Hook that allows adding custom span attributes based on the data + * returned from "execute" GraphQL action. + * + * @param data - A GraphQL `ExecutionResult` object. For the exact type definitions, see the following: + * - {@linkcode https://github.com/graphql/graphql-js/blob/v14.7.0/src/execution/execute.js#L115 graphql@14} + * - {@linkcode https://github.com/graphql/graphql-js/blob/15.x.x/src/execution/execute.d.ts#L31 graphql@15} + * - {@linkcode https://github.com/graphql/graphql-js/blob/16.x.x/src/execution/execute.ts#L127 graphql@16} + * + * @default undefined + */ + responseHook?: GraphQLInstrumentationExecutionResponseHook; +} +type RequireSpecificKeys = T & { + [P in K]-?: T[P]; +}; +export type GraphQLInstrumentationParsedConfig = RequireSpecificKeys; +export {}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/types.js.map new file mode 100644 index 0000000..7d70392 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport type * as api from '@opentelemetry/api';\n\nexport interface GraphQLInstrumentationExecutionResponseHook {\n (span: api.Span, data: any): void;\n}\n\nexport interface GraphQLInstrumentationConfig extends InstrumentationConfig {\n /**\n * When set to true it will not remove attributes values from schema source.\n * By default all values that can be sensitive are removed and replaced\n * with \"*\"\n *\n * @default false\n */\n allowValues?: boolean;\n\n /**\n * The maximum depth of fields/resolvers to instrument.\n * When set to 0 it will not instrument fields and resolvers\n *\n * @default undefined\n */\n depth?: number;\n\n /**\n * Do not create spans for resolvers.\n *\n * @default false\n */\n ignoreResolveSpans?: boolean;\n\n /**\n * Don't create spans for the execution of the default resolver on object properties.\n *\n * When a resolver function is not defined on the schema for a field, graphql will\n * use the default resolver which just looks for a property with that name on the object.\n * If the property is not a function, it's not very interesting to trace.\n * This option can reduce noise and number of spans created.\n *\n * @default false\n */\n ignoreTrivialResolveSpans?: boolean;\n\n /**\n * Place all resolve spans under the same parent instead of producing a nested tree structure.\n *\n * @default false\n */\n flatResolveSpans?: boolean;\n\n /**\n * Whether to merge list items into a single element.\n *\n * @example `users.*.name` instead of `users.0.name`, `users.1.name`\n *\n * @default false\n */\n mergeItems?: boolean;\n\n /**\n * Hook that allows adding custom span attributes based on the data\n * returned from \"execute\" GraphQL action.\n *\n * @param data - A GraphQL `ExecutionResult` object. For the exact type definitions, see the following:\n * - {@linkcode https://github.com/graphql/graphql-js/blob/v14.7.0/src/execution/execute.js#L115 graphql@14}\n * - {@linkcode https://github.com/graphql/graphql-js/blob/15.x.x/src/execution/execute.d.ts#L31 graphql@15}\n * - {@linkcode https://github.com/graphql/graphql-js/blob/16.x.x/src/execution/execute.ts#L127 graphql@16}\n *\n * @default undefined\n */\n responseHook?: GraphQLInstrumentationExecutionResponseHook;\n}\n\n// Utility type to make specific properties required\ntype RequireSpecificKeys = T & { [P in K]-?: T[P] };\n\n// Merged and parsed config of default instrumentation config and GraphQL\nexport type GraphQLInstrumentationParsedConfig = RequireSpecificKeys<\n GraphQLInstrumentationConfig,\n 'mergeItems' | 'depth' | 'allowValues' | 'ignoreResolveSpans'\n>;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.d.ts new file mode 100644 index 0000000..9514541 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.d.ts @@ -0,0 +1,15 @@ +import type * as graphqlTypes from 'graphql'; +import * as api from '@opentelemetry/api'; +import { ObjectWithGraphQLData, OtelPatched, Maybe } from './internal-types'; +import { GraphQLInstrumentationParsedConfig } from './types'; +export declare const isPromise: (value: any) => value is Promise; +export declare function addInputVariableAttributes(span: api.Span, variableValues: { + [key: string]: any; +}): void; +export declare function addSpanSource(span: api.Span, loc?: graphqlTypes.Location, allowValues?: boolean, start?: number, end?: number): void; +export declare function endSpan(span: api.Span, error?: Error): void; +export declare function getOperation(document: graphqlTypes.DocumentNode, operationName?: Maybe): graphqlTypes.DefinitionNode | undefined; +export declare function getSourceFromLocation(loc?: graphqlTypes.Location, allowValues?: boolean, inputStart?: number, inputEnd?: number): string; +export declare function wrapFields(type: Maybe, tracer: api.Tracer, getConfig: () => GraphQLInstrumentationParsedConfig): void; +export declare function wrapFieldResolver(tracer: api.Tracer, getConfig: () => GraphQLInstrumentationParsedConfig, fieldResolver: Maybe & OtelPatched>, isDefaultResolver?: boolean): graphqlTypes.GraphQLFieldResolver & OtelPatched; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.js new file mode 100644 index 0000000..8058219 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.js @@ -0,0 +1,337 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.wrapFieldResolver = exports.wrapFields = exports.getSourceFromLocation = exports.getOperation = exports.endSpan = exports.addSpanSource = exports.addInputVariableAttributes = exports.isPromise = void 0; +const api = require("@opentelemetry/api"); +const enum_1 = require("./enum"); +const AttributeNames_1 = require("./enums/AttributeNames"); +const symbols_1 = require("./symbols"); +const OPERATION_VALUES = Object.values(enum_1.AllowedOperationTypes); +// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isPromise.ts +const isPromise = (value) => { + return typeof value?.then === 'function'; +}; +exports.isPromise = isPromise; +// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isObjectLike.ts +const isObjectLike = (value) => { + return typeof value == 'object' && value !== null; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function addInputVariableAttribute(span, key, variable) { + if (Array.isArray(variable)) { + variable.forEach((value, idx) => { + addInputVariableAttribute(span, `${key}.${idx}`, value); + }); + } + else if (variable instanceof Object) { + Object.entries(variable).forEach(([nestedKey, value]) => { + addInputVariableAttribute(span, `${key}.${nestedKey}`, value); + }); + } + else { + span.setAttribute(`${AttributeNames_1.AttributeNames.VARIABLES}${String(key)}`, variable); + } +} +function addInputVariableAttributes(span, variableValues) { + Object.entries(variableValues).forEach(([key, value]) => { + addInputVariableAttribute(span, key, value); + }); +} +exports.addInputVariableAttributes = addInputVariableAttributes; +function addSpanSource(span, loc, allowValues, start, end) { + const source = getSourceFromLocation(loc, allowValues, start, end); + span.setAttribute(AttributeNames_1.AttributeNames.SOURCE, source); +} +exports.addSpanSource = addSpanSource; +function createFieldIfNotExists(tracer, getConfig, contextValue, info, path) { + let field = getField(contextValue, path); + if (field) { + return { field, spanAdded: false }; + } + const config = getConfig(); + const parentSpan = config.flatResolveSpans + ? getRootSpan(contextValue) + : getParentFieldSpan(contextValue, path); + field = { + span: createResolverSpan(tracer, getConfig, contextValue, info, path, parentSpan), + }; + addField(contextValue, path, field); + return { field, spanAdded: true }; +} +function createResolverSpan(tracer, getConfig, contextValue, info, path, parentSpan) { + const attributes = { + [AttributeNames_1.AttributeNames.FIELD_NAME]: info.fieldName, + [AttributeNames_1.AttributeNames.FIELD_PATH]: path.join('.'), + [AttributeNames_1.AttributeNames.FIELD_TYPE]: info.returnType.toString(), + }; + const span = tracer.startSpan(`${enum_1.SpanNames.RESOLVE} ${attributes[AttributeNames_1.AttributeNames.FIELD_PATH]}`, { + attributes, + }, parentSpan ? api.trace.setSpan(api.context.active(), parentSpan) : undefined); + const document = contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].source; + const fieldNode = info.fieldNodes.find(fieldNode => fieldNode.kind === 'Field'); + if (fieldNode) { + addSpanSource(span, document.loc, getConfig().allowValues, fieldNode.loc?.start, fieldNode.loc?.end); + } + return span; +} +function endSpan(span, error) { + if (error) { + span.recordException(error); + } + span.end(); +} +exports.endSpan = endSpan; +function getOperation(document, operationName) { + if (!document || !Array.isArray(document.definitions)) { + return undefined; + } + if (operationName) { + return document.definitions + .filter(definition => OPERATION_VALUES.indexOf(definition?.operation) !== -1) + .find(definition => operationName === definition?.name?.value); + } + else { + return document.definitions.find(definition => OPERATION_VALUES.indexOf(definition?.operation) !== -1); + } +} +exports.getOperation = getOperation; +function addField(contextValue, path, field) { + return (contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')] = + field); +} +function getField(contextValue, path) { + return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')]; +} +function getParentFieldSpan(contextValue, path) { + for (let i = path.length - 1; i > 0; i--) { + const field = getField(contextValue, path.slice(0, i)); + if (field) { + return field.span; + } + } + return getRootSpan(contextValue); +} +function getRootSpan(contextValue) { + return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].span; +} +function pathToArray(mergeItems, path) { + const flattened = []; + let curr = path; + while (curr) { + let key = curr.key; + if (mergeItems && typeof key === 'number') { + key = '*'; + } + flattened.push(String(key)); + curr = curr.prev; + } + return flattened.reverse(); +} +function repeatBreak(i) { + return repeatChar('\n', i); +} +function repeatSpace(i) { + return repeatChar(' ', i); +} +function repeatChar(char, to) { + let text = ''; + for (let i = 0; i < to; i++) { + text += char; + } + return text; +} +const KindsToBeRemoved = [ + enum_1.TokenKind.FLOAT, + enum_1.TokenKind.STRING, + enum_1.TokenKind.INT, + enum_1.TokenKind.BLOCK_STRING, +]; +function getSourceFromLocation(loc, allowValues = false, inputStart, inputEnd) { + let source = ''; + if (loc?.startToken) { + const start = typeof inputStart === 'number' ? inputStart : loc.start; + const end = typeof inputEnd === 'number' ? inputEnd : loc.end; + let next = loc.startToken.next; + let previousLine = 1; + while (next) { + if (next.start < start) { + next = next.next; + previousLine = next?.line; + continue; + } + if (next.end > end) { + next = next.next; + previousLine = next?.line; + continue; + } + let value = next.value || next.kind; + let space = ''; + if (!allowValues && KindsToBeRemoved.indexOf(next.kind) >= 0) { + // value = repeatChar('*', value.length); + value = '*'; + } + if (next.kind === enum_1.TokenKind.STRING) { + value = `"${value}"`; + } + if (next.kind === enum_1.TokenKind.EOF) { + value = ''; + } + if (next.line > previousLine) { + source += repeatBreak(next.line - previousLine); + previousLine = next.line; + space = repeatSpace(next.column - 1); + } + else { + if (next.line === next.prev?.line) { + space = repeatSpace(next.start - (next.prev?.end || 0)); + } + } + source += space + value; + if (next) { + next = next.next; + } + } + } + return source; +} +exports.getSourceFromLocation = getSourceFromLocation; +function wrapFields(type, tracer, getConfig) { + if (!type || type[symbols_1.OTEL_PATCHED_SYMBOL]) { + return; + } + const fields = type.getFields(); + type[symbols_1.OTEL_PATCHED_SYMBOL] = true; + Object.keys(fields).forEach(key => { + const field = fields[key]; + if (!field) { + return; + } + if (field.resolve) { + field.resolve = wrapFieldResolver(tracer, getConfig, field.resolve); + } + if (field.type) { + const unwrappedTypes = unwrapType(field.type); + for (const unwrappedType of unwrappedTypes) { + wrapFields(unwrappedType, tracer, getConfig); + } + } + }); +} +exports.wrapFields = wrapFields; +function unwrapType(type) { + // unwrap wrapping types (non-nullable and list types) + if ('ofType' in type) { + return unwrapType(type.ofType); + } + // unwrap union types + if (isGraphQLUnionType(type)) { + return type.getTypes(); + } + // return object types + if (isGraphQLObjectType(type)) { + return [type]; + } + return []; +} +function isGraphQLUnionType(type) { + return 'getTypes' in type && typeof type.getTypes === 'function'; +} +function isGraphQLObjectType(type) { + return 'getFields' in type && typeof type.getFields === 'function'; +} +const handleResolveSpanError = (resolveSpan, err, shouldEndSpan) => { + if (!shouldEndSpan) { + return; + } + resolveSpan.recordException(err); + resolveSpan.setStatus({ + code: api.SpanStatusCode.ERROR, + message: err.message, + }); + resolveSpan.end(); +}; +const handleResolveSpanSuccess = (resolveSpan, shouldEndSpan) => { + if (!shouldEndSpan) { + return; + } + resolveSpan.end(); +}; +function wrapFieldResolver(tracer, getConfig, fieldResolver, isDefaultResolver = false) { + if (wrappedFieldResolver[symbols_1.OTEL_PATCHED_SYMBOL] || + typeof fieldResolver !== 'function') { + return fieldResolver; + } + function wrappedFieldResolver(source, args, contextValue, info) { + if (!fieldResolver) { + return undefined; + } + const config = getConfig(); + // follows what graphql is doing to decide if this is a trivial resolver + // for which we don't need to create a resolve span + if (config.ignoreTrivialResolveSpans && + isDefaultResolver && + (isObjectLike(source) || typeof source === 'function')) { + const property = source[info.fieldName]; + // a function execution is not trivial and should be recorder. + // property which is not a function is just a value and we don't want a "resolve" span for it + if (typeof property !== 'function') { + return fieldResolver.call(this, source, args, contextValue, info); + } + } + if (!contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL]) { + return fieldResolver.call(this, source, args, contextValue, info); + } + const path = pathToArray(config.mergeItems, info && info.path); + const depth = path.filter((item) => typeof item === 'string').length; + let span; + let shouldEndSpan = false; + if (config.depth >= 0 && config.depth < depth) { + span = getParentFieldSpan(contextValue, path); + } + else { + const { field, spanAdded } = createFieldIfNotExists(tracer, getConfig, contextValue, info, path); + span = field.span; + shouldEndSpan = spanAdded; + } + return api.context.with(api.trace.setSpan(api.context.active(), span), () => { + try { + const res = fieldResolver.call(this, source, args, contextValue, info); + if ((0, exports.isPromise)(res)) { + return res.then((r) => { + handleResolveSpanSuccess(span, shouldEndSpan); + return r; + }, (err) => { + handleResolveSpanError(span, err, shouldEndSpan); + throw err; + }); + } + else { + handleResolveSpanSuccess(span, shouldEndSpan); + return res; + } + } + catch (err) { + handleResolveSpanError(span, err, shouldEndSpan); + throw err; + } + }); + } + wrappedFieldResolver[symbols_1.OTEL_PATCHED_SYMBOL] = true; + return wrappedFieldResolver; +} +exports.wrapFieldResolver = wrapFieldResolver; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.js.map new file mode 100644 index 0000000..d2e7c52 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type * as graphqlTypes from 'graphql';\nimport * as api from '@opentelemetry/api';\nimport { AllowedOperationTypes, SpanNames, TokenKind } from './enum';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols';\nimport {\n GraphQLField,\n GraphQLPath,\n ObjectWithGraphQLData,\n OtelPatched,\n Maybe,\n} from './internal-types';\nimport { GraphQLInstrumentationParsedConfig } from './types';\n\nconst OPERATION_VALUES = Object.values(AllowedOperationTypes);\n\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isPromise.ts\nexport const isPromise = (value: any): value is Promise => {\n return typeof value?.then === 'function';\n};\n\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isObjectLike.ts\nconst isObjectLike = (value: unknown): value is { [key: string]: unknown } => {\n return typeof value == 'object' && value !== null;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction addInputVariableAttribute(span: api.Span, key: string, variable: any) {\n if (Array.isArray(variable)) {\n variable.forEach((value, idx) => {\n addInputVariableAttribute(span, `${key}.${idx}`, value);\n });\n } else if (variable instanceof Object) {\n Object.entries(variable).forEach(([nestedKey, value]) => {\n addInputVariableAttribute(span, `${key}.${nestedKey}`, value);\n });\n } else {\n span.setAttribute(`${AttributeNames.VARIABLES}${String(key)}`, variable);\n }\n}\n\nexport function addInputVariableAttributes(\n span: api.Span,\n variableValues: { [key: string]: any }\n) {\n Object.entries(variableValues).forEach(([key, value]) => {\n addInputVariableAttribute(span, key, value);\n });\n}\n\nexport function addSpanSource(\n span: api.Span,\n loc?: graphqlTypes.Location,\n allowValues?: boolean,\n start?: number,\n end?: number\n): void {\n const source = getSourceFromLocation(loc, allowValues, start, end);\n span.setAttribute(AttributeNames.SOURCE, source);\n}\n\nfunction createFieldIfNotExists(\n tracer: api.Tracer,\n getConfig: () => GraphQLInstrumentationParsedConfig,\n contextValue: any,\n info: graphqlTypes.GraphQLResolveInfo,\n path: string[]\n): {\n field: GraphQLField;\n spanAdded: boolean;\n} {\n let field = getField(contextValue, path);\n if (field) {\n return { field, spanAdded: false };\n }\n\n const config = getConfig();\n const parentSpan = config.flatResolveSpans\n ? getRootSpan(contextValue)\n : getParentFieldSpan(contextValue, path);\n\n field = {\n span: createResolverSpan(\n tracer,\n getConfig,\n contextValue,\n info,\n path,\n parentSpan\n ),\n };\n\n addField(contextValue, path, field);\n\n return { field, spanAdded: true };\n}\n\nfunction createResolverSpan(\n tracer: api.Tracer,\n getConfig: () => GraphQLInstrumentationParsedConfig,\n contextValue: any,\n info: graphqlTypes.GraphQLResolveInfo,\n path: string[],\n parentSpan?: api.Span\n): api.Span {\n const attributes: api.SpanAttributes = {\n [AttributeNames.FIELD_NAME]: info.fieldName,\n [AttributeNames.FIELD_PATH]: path.join('.'),\n [AttributeNames.FIELD_TYPE]: info.returnType.toString(),\n };\n\n const span = tracer.startSpan(\n `${SpanNames.RESOLVE} ${attributes[AttributeNames.FIELD_PATH]}`,\n {\n attributes,\n },\n parentSpan ? api.trace.setSpan(api.context.active(), parentSpan) : undefined\n );\n\n const document = contextValue[OTEL_GRAPHQL_DATA_SYMBOL].source;\n const fieldNode = info.fieldNodes.find(\n fieldNode => fieldNode.kind === 'Field'\n );\n\n if (fieldNode) {\n addSpanSource(\n span,\n document.loc,\n getConfig().allowValues,\n fieldNode.loc?.start,\n fieldNode.loc?.end\n );\n }\n\n return span;\n}\n\nexport function endSpan(span: api.Span, error?: Error): void {\n if (error) {\n span.recordException(error);\n }\n span.end();\n}\n\nexport function getOperation(\n document: graphqlTypes.DocumentNode,\n operationName?: Maybe\n): graphqlTypes.DefinitionNode | undefined {\n if (!document || !Array.isArray(document.definitions)) {\n return undefined;\n }\n\n if (operationName) {\n return document.definitions\n .filter(\n definition =>\n OPERATION_VALUES.indexOf((definition as any)?.operation) !== -1\n )\n .find(definition => operationName === (definition as any)?.name?.value);\n } else {\n return document.definitions.find(\n definition =>\n OPERATION_VALUES.indexOf((definition as any)?.operation) !== -1\n );\n }\n}\n\nfunction addField(contextValue: any, path: string[], field: GraphQLField) {\n return (contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')] =\n field);\n}\n\nfunction getField(contextValue: any, path: string[]): GraphQLField {\n return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')];\n}\n\nfunction getParentFieldSpan(contextValue: any, path: string[]): api.Span {\n for (let i = path.length - 1; i > 0; i--) {\n const field = getField(contextValue, path.slice(0, i));\n\n if (field) {\n return field.span;\n }\n }\n\n return getRootSpan(contextValue);\n}\n\nfunction getRootSpan(contextValue: any): api.Span {\n return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].span;\n}\n\nfunction pathToArray(mergeItems: boolean, path: GraphQLPath): string[] {\n const flattened: string[] = [];\n let curr: GraphQLPath | undefined = path;\n while (curr) {\n let key = curr.key;\n\n if (mergeItems && typeof key === 'number') {\n key = '*';\n }\n flattened.push(String(key));\n curr = curr.prev;\n }\n return flattened.reverse();\n}\n\nfunction repeatBreak(i: number): string {\n return repeatChar('\\n', i);\n}\n\nfunction repeatSpace(i: number): string {\n return repeatChar(' ', i);\n}\n\nfunction repeatChar(char: string, to: number): string {\n let text = '';\n for (let i = 0; i < to; i++) {\n text += char;\n }\n return text;\n}\n\nconst KindsToBeRemoved: string[] = [\n TokenKind.FLOAT,\n TokenKind.STRING,\n TokenKind.INT,\n TokenKind.BLOCK_STRING,\n];\n\nexport function getSourceFromLocation(\n loc?: graphqlTypes.Location,\n allowValues = false,\n inputStart?: number,\n inputEnd?: number\n): string {\n let source = '';\n\n if (loc?.startToken) {\n const start = typeof inputStart === 'number' ? inputStart : loc.start;\n const end = typeof inputEnd === 'number' ? inputEnd : loc.end;\n\n let next: graphqlTypes.Token | null = loc.startToken.next;\n let previousLine: number | undefined = 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 === TokenKind.STRING) {\n value = `\"${value}\"`;\n }\n if (next.kind === 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 } 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\n return source;\n}\n\nexport function wrapFields(\n type: Maybe,\n tracer: api.Tracer,\n getConfig: () => GraphQLInstrumentationParsedConfig\n): void {\n if (!type || type[OTEL_PATCHED_SYMBOL]) {\n return;\n }\n const fields = type.getFields();\n\n type[OTEL_PATCHED_SYMBOL] = true;\n\n Object.keys(fields).forEach(key => {\n const field = fields[key];\n\n if (!field) {\n return;\n }\n\n if (field.resolve) {\n field.resolve = wrapFieldResolver(tracer, getConfig, field.resolve);\n }\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}\n\nfunction unwrapType(\n type: graphqlTypes.GraphQLOutputType\n): readonly graphqlTypes.GraphQLObjectType[] {\n // unwrap wrapping types (non-nullable and list types)\n if ('ofType' in type) {\n return unwrapType(type.ofType);\n }\n\n // unwrap union types\n if (isGraphQLUnionType(type)) {\n return type.getTypes();\n }\n\n // return object types\n if (isGraphQLObjectType(type)) {\n return [type];\n }\n\n return [];\n}\n\nfunction isGraphQLUnionType(\n type: graphqlTypes.GraphQLType\n): type is graphqlTypes.GraphQLUnionType {\n return 'getTypes' in type && typeof type.getTypes === 'function';\n}\n\nfunction isGraphQLObjectType(\n type: graphqlTypes.GraphQLType\n): type is graphqlTypes.GraphQLObjectType {\n return 'getFields' in type && typeof type.getFields === 'function';\n}\n\nconst handleResolveSpanError = (\n resolveSpan: api.Span,\n err: any,\n shouldEndSpan: boolean\n) => {\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};\n\nconst handleResolveSpanSuccess = (\n resolveSpan: api.Span,\n shouldEndSpan: boolean\n) => {\n if (!shouldEndSpan) {\n return;\n }\n resolveSpan.end();\n};\n\nexport function wrapFieldResolver(\n tracer: api.Tracer,\n getConfig: () => GraphQLInstrumentationParsedConfig,\n fieldResolver: Maybe<\n graphqlTypes.GraphQLFieldResolver & OtelPatched\n >,\n isDefaultResolver = false\n): graphqlTypes.GraphQLFieldResolver<\n TSource,\n TContext & ObjectWithGraphQLData,\n TArgs\n> &\n OtelPatched {\n if (\n (wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] ||\n typeof fieldResolver !== 'function'\n ) {\n return fieldResolver!;\n }\n\n function wrappedFieldResolver(\n this: graphqlTypes.GraphQLFieldResolver,\n source: TSource,\n args: TArgs,\n contextValue: TContext & ObjectWithGraphQLData,\n info: graphqlTypes.GraphQLResolveInfo\n ) {\n if (!fieldResolver) {\n return undefined;\n }\n const config = getConfig();\n\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 (\n config.ignoreTrivialResolveSpans &&\n isDefaultResolver &&\n (isObjectLike(source) || typeof source === 'function')\n ) {\n const property = (source as any)[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\n if (!contextValue[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: any) => typeof item === 'string').length;\n\n let span: api.Span;\n let shouldEndSpan = false;\n if (config.depth >= 0 && config.depth < depth) {\n span = getParentFieldSpan(contextValue, path);\n } else {\n const { field, spanAdded } = createFieldIfNotExists(\n tracer,\n getConfig,\n contextValue,\n info,\n path\n );\n span = field.span;\n shouldEndSpan = spanAdded;\n }\n\n return api.context.with(\n api.trace.setSpan(api.context.active(), span),\n () => {\n try {\n const res = fieldResolver.call(\n this,\n source,\n args,\n contextValue,\n info\n );\n if (isPromise(res)) {\n return res.then(\n (r: any) => {\n handleResolveSpanSuccess(span, shouldEndSpan);\n return r;\n },\n (err: Error) => {\n handleResolveSpanError(span, err, shouldEndSpan);\n throw err;\n }\n );\n } else {\n handleResolveSpanSuccess(span, shouldEndSpan);\n return res;\n }\n } catch (err: any) {\n handleResolveSpanError(span, err, shouldEndSpan);\n throw err;\n }\n }\n );\n }\n\n (wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] = true;\n\n return wrappedFieldResolver;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/version.d.ts new file mode 100644 index 0000000..00d30b8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.58.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-graphql"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/version.js new file mode 100644 index 0000000..4829701 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.58.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-graphql'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/version.js.map new file mode 100644 index 0000000..7e1103a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,wCAAwC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.58.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-graphql';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/package.json new file mode 100644 index 0000000..094b85e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-graphql/package.json @@ -0,0 +1,59 @@ +{ + "name": "@opentelemetry/instrumentation-graphql", + "version": "0.58.0", + "description": "OpenTelemetry instrumentation for `graphql` gql query language and runtime for GraphQL", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-graphql" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-graphql", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "graphql", + "metrics", + "nodejs", + "opentelemetry", + "stats", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "graphql": "^16.5.0" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-graphql#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/README.md new file mode 100644 index 0000000..dadaec2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/README.md @@ -0,0 +1,106 @@ +# OpenTelemetry Hapi Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [Hapi Framework](https://hapi.dev)(`@hapi/hapi`)package, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Status + +| Maturity | [Component Owner](../../.github/component_owners.yml) | Compatibility | +|----------------------------------------------------|-------------------------------------------------------|-----------------------| +| [Unmaintained](../../CONTRIBUTING.md#unmaintained) | N/A | API 1.0+
                          SDK 1.0+ | + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-hapi +``` + +### Supported Versions + +- [`@hapi/hapi`](https://www.npmjs.com/package/@hapi/hapi) versions `>=17.0.0 <22` + +## Usage + +OpenTelemetry Hapi Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems. + +To load a specific instrumentation (Hapi in this case), specify it in the registerInstrumentations' configuration. + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { HapiInstrumentation } = require('@opentelemetry/instrumentation-hapi'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new HapiInstrumentation(), + ], +}); +``` + +If instead you would just want to load a specific instrumentation only (**hapi** in this case); + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { HapiInstrumentation } = require('@opentelemetry/instrumentation-hapi'); +const provider = new NodeTracerProvider(); +provider.register(); + +const hapiInstrumentation = new HapiInstrumentation(); +hapiInstrumentation.setTracerProvider(provider); +``` + +See [examples/hapi](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/hapi) for a short example using Hapi + + + +## Hapi Instrumentation Support + +This package provides automatic tracing for hapi server routes and [request lifecycle](https://github.com/hapijs/hapi/blob/master/API.md#request-lifecycle) extensions defined either directly or via a Hapi plugin. + +## Semantic Conventions + +Prior to version `0.48.0`, this instrumentation created spans targeting an experimental semantic convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md). + +HTTP semantic conventions (semconv) were stabilized in v1.23.0, and a [migration process](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/non-normative/http-migration.md#http-semantic-convention-stability-migration) was defined. `instrumentation-hapi` versions 0.48.0 and later include support for migrating to stable HTTP semantic conventions, as described below. The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new HTTP semconv, after which a new minor version will use the *new* semconv by default and drop support for the old semconv. See the [HTTP semconv migration plan for OpenTelemetry JS instrumentations](https://github.com/open-telemetry/opentelemetry-js/issues/5646). + +To select which semconv version(s) is emitted from this instrumentation, use the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable. + +- `http`: emit the new (stable) v1.23.0+ semantics +- `http/dup`: emit **both** the old v1.7.0 and the new (stable) v1.23.0+ semantics +- By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` includes neither of the above tokens, the old v1.7.0 semconv is used. + +### Attributes collected + +The following semconv attributes are collected on hapi route spans: + +| v1.7.0 semconv | v1.23.0 semconv | Notes | +|----------------|-----------------------|---------------------------------------------| +| `http.method` | `http.request.method` | HTTP request method | +| `http.route` | `http.route` (same) | Route assigned to handler. Ex: `/users/:id` | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-hapi +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-hapi.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.d.ts new file mode 100644 index 0000000..1cc9a0a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.d.ts @@ -0,0 +1,6 @@ +export declare enum AttributeNames { + HAPI_TYPE = "hapi.type", + PLUGIN_NAME = "hapi.plugin.name", + EXT_TYPE = "server.ext.type" +} +//# sourceMappingURL=AttributeNames.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.js new file mode 100644 index 0000000..29cd427 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttributeNames = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var AttributeNames; +(function (AttributeNames) { + AttributeNames["HAPI_TYPE"] = "hapi.type"; + AttributeNames["PLUGIN_NAME"] = "hapi.plugin.name"; + AttributeNames["EXT_TYPE"] = "server.ext.type"; +})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {})); +//# sourceMappingURL=AttributeNames.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.js.map new file mode 100644 index 0000000..65c8203 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AttributeNames.js","sourceRoot":"","sources":["../../../src/enums/AttributeNames.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,kDAAgC,CAAA;IAChC,8CAA4B,CAAA;AAC9B,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum AttributeNames {\n HAPI_TYPE = 'hapi.type',\n PLUGIN_NAME = 'hapi.plugin.name',\n EXT_TYPE = 'server.ext.type',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/index.d.ts new file mode 100644 index 0000000..54edc68 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { HapiInstrumentation } from './instrumentation'; +export { AttributeNames } from './enums/AttributeNames'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/index.js new file mode 100644 index 0000000..6e83d3c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/index.js @@ -0,0 +1,23 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttributeNames = exports.HapiInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "HapiInstrumentation", { enumerable: true, get: function () { return instrumentation_1.HapiInstrumentation; } }); +var AttributeNames_1 = require("./enums/AttributeNames"); +Object.defineProperty(exports, "AttributeNames", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/index.js.map new file mode 100644 index 0000000..98ce8a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAwD;AAA/C,sHAAA,mBAAmB,OAAA;AAC5B,yDAAwD;AAA/C,gHAAA,cAAc,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { HapiInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.d.ts new file mode 100644 index 0000000..92c8c04 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.d.ts @@ -0,0 +1,72 @@ +import { InstrumentationBase, InstrumentationConfig, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +/** Hapi instrumentation for OpenTelemetry */ +export declare class HapiInstrumentation extends InstrumentationBase { + private _semconvStability; + constructor(config?: InstrumentationConfig); + protected init(): InstrumentationNodeModuleDefinition; + /** + * Patches the Hapi.server and Hapi.Server functions in order to instrument + * the server.route, server.ext, and server.register functions via calls to the + * @function _getServerRoutePatch, @function _getServerExtPatch, and + * @function _getServerRegisterPatch functions + * @param original - the original Hapi Server creation function + */ + private _getServerPatch; + /** + * Patches the plugin register function used by the Hapi Server. This function + * goes through each plugin that is being registered and adds instrumentation + * via a call to the @function _wrapRegisterHandler function. + * @param {RegisterFunction} original - the original register function which + * registers each plugin on the server + */ + private _getServerRegisterPatch; + /** + * Patches the Server.ext function which adds extension methods to the specified + * point along the request lifecycle. This function accepts the full range of + * accepted input into the standard Hapi `server.ext` function. For each extension, + * it adds instrumentation to the handler via a call to the @function _wrapExtMethods + * function. + * @param original - the original ext function which adds the extension method to the server + * @param {string} [pluginName] - if present, represents the name of the plugin responsible + * for adding this server extension. Else, signifies that the extension was added directly + */ + private _getServerExtPatch; + /** + * Patches the Server.route function. This function accepts either one or an array + * of Hapi.ServerRoute objects and adds instrumentation on each route via a call to + * the @function _wrapRouteHandler function. + * @param {HapiServerRouteInputMethod} original - the original route function which adds + * the route to the server + * @param {string} [pluginName] - if present, represents the name of the plugin responsible + * for adding this server route. Else, signifies that the route was added directly + */ + private _getServerRoutePatch; + /** + * Wraps newly registered plugins to add instrumentation to the plugin's clone of + * the original server. Specifically, wraps the server.route and server.ext functions + * via calls to @function _getServerRoutePatch and @function _getServerExtPatch + * @param {Hapi.Plugin} plugin - the new plugin which is being instrumented + */ + private _wrapRegisterHandler; + /** + * Wraps request extension methods to add instrumentation to each new extension handler. + * Patches each individual extension in order to create the + * span and propagate context. It does not create spans when there is no parent span. + * @param {PatchableExtMethod | PatchableExtMethod[]} method - the request extension + * handler which is being instrumented + * @param {Hapi.ServerRequestExtType} extPoint - the point in the Hapi request lifecycle + * which this extension targets + * @param {string} [pluginName] - if present, represents the name of the plugin responsible + * for adding this server route. Else, signifies that the route was added directly + */ + private _wrapExtMethods; + /** + * Patches each individual route handler method in order to create the + * span and propagate context. It does not create spans when there is no parent span. + * @param {PatchableServerRoute} route - the route handler which is being instrumented + * @param {string} [pluginName] - if present, represents the name of the plugin responsible + * for adding this server route. Else, signifies that the route was added directly + */ + private _wrapRouteHandler; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.js new file mode 100644 index 0000000..ba0e9bf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.js @@ -0,0 +1,305 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HapiInstrumentation = void 0; +const api = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +/** @knipignore */ +const version_1 = require("./version"); +const internal_types_1 = require("./internal-types"); +const utils_1 = require("./utils"); +/** Hapi instrumentation for OpenTelemetry */ +class HapiInstrumentation extends instrumentation_1.InstrumentationBase { + _semconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + init() { + return new instrumentation_1.InstrumentationNodeModuleDefinition(internal_types_1.HapiComponentName, ['>=17.0.0 <22'], (module) => { + const moduleExports = module[Symbol.toStringTag] === 'Module' ? module.default : module; + if (!(0, instrumentation_1.isWrapped)(moduleExports.server)) { + this._wrap(moduleExports, 'server', this._getServerPatch.bind(this)); + } + if (!(0, instrumentation_1.isWrapped)(moduleExports.Server)) { + this._wrap(moduleExports, 'Server', this._getServerPatch.bind(this)); + } + return moduleExports; + }, (module) => { + const moduleExports = module[Symbol.toStringTag] === 'Module' ? module.default : module; + this._massUnwrap([moduleExports], ['server', 'Server']); + }); + } + /** + * Patches the Hapi.server and Hapi.Server functions in order to instrument + * the server.route, server.ext, and server.register functions via calls to the + * @function _getServerRoutePatch, @function _getServerExtPatch, and + * @function _getServerRegisterPatch functions + * @param original - the original Hapi Server creation function + */ + _getServerPatch(original) { + const instrumentation = this; + const self = this; + return function server(opts) { + const newServer = original.apply(this, [opts]); + self._wrap(newServer, 'route', originalRouter => { + return instrumentation._getServerRoutePatch.bind(instrumentation)(originalRouter); + }); + // Casting as any is necessary here due to multiple overloads on the Hapi.ext + // function, which requires supporting a variety of different parameters + // as extension inputs + self._wrap(newServer, 'ext', originalExtHandler => { + return instrumentation._getServerExtPatch.bind(instrumentation)( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + originalExtHandler); + }); + // Casting as any is necessary here due to multiple overloads on the Hapi.Server.register + // function, which requires supporting a variety of different types of Plugin inputs + self._wrap(newServer, 'register', + // eslint-disable-next-line @typescript-eslint/no-explicit-any + instrumentation._getServerRegisterPatch.bind(instrumentation)); + return newServer; + }; + } + /** + * Patches the plugin register function used by the Hapi Server. This function + * goes through each plugin that is being registered and adds instrumentation + * via a call to the @function _wrapRegisterHandler function. + * @param {RegisterFunction} original - the original register function which + * registers each plugin on the server + */ + _getServerRegisterPatch(original) { + const instrumentation = this; + return function register(pluginInput, options) { + if (Array.isArray(pluginInput)) { + for (const pluginObj of pluginInput) { + const plugin = (0, utils_1.getPluginFromInput)(pluginObj); + instrumentation._wrapRegisterHandler(plugin); + } + } + else { + const plugin = (0, utils_1.getPluginFromInput)(pluginInput); + instrumentation._wrapRegisterHandler(plugin); + } + return original.apply(this, [pluginInput, options]); + }; + } + /** + * Patches the Server.ext function which adds extension methods to the specified + * point along the request lifecycle. This function accepts the full range of + * accepted input into the standard Hapi `server.ext` function. For each extension, + * it adds instrumentation to the handler via a call to the @function _wrapExtMethods + * function. + * @param original - the original ext function which adds the extension method to the server + * @param {string} [pluginName] - if present, represents the name of the plugin responsible + * for adding this server extension. Else, signifies that the extension was added directly + */ + _getServerExtPatch(original, pluginName) { + const instrumentation = this; + return function ext(...args) { + if (Array.isArray(args[0])) { + const eventsList = args[0]; + for (let i = 0; i < eventsList.length; i++) { + const eventObj = eventsList[i]; + if ((0, utils_1.isLifecycleExtType)(eventObj.type)) { + const lifecycleEventObj = eventObj; + const handler = instrumentation._wrapExtMethods(lifecycleEventObj.method, eventObj.type, pluginName); + lifecycleEventObj.method = handler; + eventsList[i] = lifecycleEventObj; + } + } + return original.apply(this, args); + } + else if ((0, utils_1.isDirectExtInput)(args)) { + const extInput = args; + const method = extInput[1]; + const handler = instrumentation._wrapExtMethods(method, extInput[0], pluginName); + return original.apply(this, [extInput[0], handler, extInput[2]]); + } + else if ((0, utils_1.isLifecycleExtEventObj)(args[0])) { + const lifecycleEventObj = args[0]; + const handler = instrumentation._wrapExtMethods(lifecycleEventObj.method, lifecycleEventObj.type, pluginName); + lifecycleEventObj.method = handler; + return original.call(this, lifecycleEventObj); + } + return original.apply(this, args); + }; + } + /** + * Patches the Server.route function. This function accepts either one or an array + * of Hapi.ServerRoute objects and adds instrumentation on each route via a call to + * the @function _wrapRouteHandler function. + * @param {HapiServerRouteInputMethod} original - the original route function which adds + * the route to the server + * @param {string} [pluginName] - if present, represents the name of the plugin responsible + * for adding this server route. Else, signifies that the route was added directly + */ + _getServerRoutePatch(original, pluginName) { + const instrumentation = this; + return function route(route) { + if (Array.isArray(route)) { + for (let i = 0; i < route.length; i++) { + const newRoute = instrumentation._wrapRouteHandler.call(instrumentation, route[i], pluginName); + route[i] = newRoute; + } + } + else { + route = instrumentation._wrapRouteHandler.call(instrumentation, route, pluginName); + } + return original.apply(this, [route]); + }; + } + /** + * Wraps newly registered plugins to add instrumentation to the plugin's clone of + * the original server. Specifically, wraps the server.route and server.ext functions + * via calls to @function _getServerRoutePatch and @function _getServerExtPatch + * @param {Hapi.Plugin} plugin - the new plugin which is being instrumented + */ + _wrapRegisterHandler(plugin) { + const instrumentation = this; + const pluginName = (0, utils_1.getPluginName)(plugin); + const oldRegister = plugin.register; + const self = this; + const newRegisterHandler = function (server, options) { + self._wrap(server, 'route', original => { + return instrumentation._getServerRoutePatch.bind(instrumentation)(original, pluginName); + }); + // Casting as any is necessary here due to multiple overloads on the Hapi.ext + // function, which requires supporting a variety of different parameters + // as extension inputs + self._wrap(server, 'ext', originalExtHandler => { + return instrumentation._getServerExtPatch.bind(instrumentation)( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + originalExtHandler, pluginName); + }); + return oldRegister.call(this, server, options); + }; + plugin.register = newRegisterHandler; + } + /** + * Wraps request extension methods to add instrumentation to each new extension handler. + * Patches each individual extension in order to create the + * span and propagate context. It does not create spans when there is no parent span. + * @param {PatchableExtMethod | PatchableExtMethod[]} method - the request extension + * handler which is being instrumented + * @param {Hapi.ServerRequestExtType} extPoint - the point in the Hapi request lifecycle + * which this extension targets + * @param {string} [pluginName] - if present, represents the name of the plugin responsible + * for adding this server route. Else, signifies that the route was added directly + */ + _wrapExtMethods(method, extPoint, pluginName) { + const instrumentation = this; + if (method instanceof Array) { + for (let i = 0; i < method.length; i++) { + method[i] = instrumentation._wrapExtMethods(method[i], extPoint); + } + return method; + } + else if ((0, utils_1.isPatchableExtMethod)(method)) { + if (method[internal_types_1.handlerPatched] === true) + return method; + method[internal_types_1.handlerPatched] = true; + const newHandler = async function (...params) { + if (api.trace.getSpan(api.context.active()) === undefined) { + return await method.apply(this, params); + } + const metadata = (0, utils_1.getExtMetadata)(extPoint, pluginName); + const span = instrumentation.tracer.startSpan(metadata.name, { + attributes: metadata.attributes, + }); + try { + return await api.context.with(api.trace.setSpan(api.context.active(), span), method, undefined, ...params); + } + catch (err) { + span.recordException(err); + span.setStatus({ + code: api.SpanStatusCode.ERROR, + message: err.message, + }); + throw err; + } + finally { + span.end(); + } + }; + return newHandler; + } + return method; + } + /** + * Patches each individual route handler method in order to create the + * span and propagate context. It does not create spans when there is no parent span. + * @param {PatchableServerRoute} route - the route handler which is being instrumented + * @param {string} [pluginName] - if present, represents the name of the plugin responsible + * for adding this server route. Else, signifies that the route was added directly + */ + _wrapRouteHandler(route, pluginName) { + const instrumentation = this; + if (route[internal_types_1.handlerPatched] === true) + return route; + route[internal_types_1.handlerPatched] = true; + const wrapHandler = oldHandler => { + return async function (...params) { + if (api.trace.getSpan(api.context.active()) === undefined) { + return await oldHandler.call(this, ...params); + } + const rpcMetadata = (0, core_1.getRPCMetadata)(api.context.active()); + if (rpcMetadata?.type === core_1.RPCType.HTTP) { + rpcMetadata.route = route.path; + } + const metadata = (0, utils_1.getRouteMetadata)(route, instrumentation._semconvStability, pluginName); + const span = instrumentation.tracer.startSpan(metadata.name, { + attributes: metadata.attributes, + }); + try { + return await api.context.with(api.trace.setSpan(api.context.active(), span), () => oldHandler.call(this, ...params)); + } + catch (err) { + span.recordException(err); + span.setStatus({ + code: api.SpanStatusCode.ERROR, + message: err.message, + }); + throw err; + } + finally { + span.end(); + } + }; + }; + if (typeof route.handler === 'function') { + route.handler = wrapHandler(route.handler); + } + else if (typeof route.options === 'function') { + const oldOptions = route.options; + route.options = function (server) { + const options = oldOptions(server); + if (typeof options.handler === 'function') { + options.handler = wrapHandler(options.handler); + } + return options; + }; + } + else if (typeof route.options?.handler === 'function') { + route.options.handler = wrapHandler(route.options.handler); + } + return route; + } +} +exports.HapiInstrumentation = HapiInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.js.map new file mode 100644 index 0000000..f39edfd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\n\nimport type * as Hapi from '@hapi/hapi';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n HapiComponentName,\n HapiServerRouteInput,\n handlerPatched,\n PatchableServerRoute,\n HapiServerRouteInputMethod,\n HapiPluginInput,\n RegisterFunction,\n PatchableExtMethod,\n ServerExtDirectInput,\n} from './internal-types';\nimport {\n getRouteMetadata,\n getPluginName,\n isLifecycleExtType,\n isLifecycleExtEventObj,\n getExtMetadata,\n isDirectExtInput,\n isPatchableExtMethod,\n getPluginFromInput,\n} from './utils';\n\n/** Hapi instrumentation for OpenTelemetry */\nexport class HapiInstrumentation extends InstrumentationBase {\n private _semconvStability: SemconvStability;\n\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n this._semconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n protected init() {\n return new InstrumentationNodeModuleDefinition(\n HapiComponentName,\n ['>=17.0.0 <22'],\n (module: any) => {\n const moduleExports: typeof Hapi =\n module[Symbol.toStringTag] === 'Module' ? module.default : module;\n if (!isWrapped(moduleExports.server)) {\n this._wrap(\n moduleExports,\n 'server',\n this._getServerPatch.bind(this) as any\n );\n }\n\n if (!isWrapped(moduleExports.Server)) {\n this._wrap(\n moduleExports,\n 'Server',\n this._getServerPatch.bind(this) as any\n );\n }\n return moduleExports;\n },\n (module: any) => {\n const moduleExports: typeof Hapi =\n module[Symbol.toStringTag] === 'Module' ? module.default : module;\n this._massUnwrap([moduleExports], ['server', 'Server']);\n }\n );\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 private _getServerPatch(\n original: (options?: Hapi.ServerOptions) => Hapi.Server\n ) {\n const instrumentation: HapiInstrumentation = this;\n const self = this;\n return function server(this: Hapi.Server, opts?: Hapi.ServerOptions) {\n const newServer: Hapi.Server = original.apply(this, [opts]);\n\n self._wrap(newServer, 'route', originalRouter => {\n return instrumentation._getServerRoutePatch.bind(instrumentation)(\n originalRouter\n );\n });\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 as any\n );\n });\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(\n newServer,\n 'register',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n instrumentation._getServerRegisterPatch.bind(instrumentation) as any\n );\n return newServer;\n };\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 private _getServerRegisterPatch(\n original: RegisterFunction\n ): RegisterFunction {\n const instrumentation: HapiInstrumentation = this;\n return function register(\n this: Hapi.Server,\n pluginInput: HapiPluginInput,\n options?: Hapi.ServerRegisterOptions\n ) {\n if (Array.isArray(pluginInput)) {\n for (const pluginObj of pluginInput) {\n const plugin = getPluginFromInput(pluginObj);\n instrumentation._wrapRegisterHandler(plugin);\n }\n } else {\n const plugin = getPluginFromInput(pluginInput);\n instrumentation._wrapRegisterHandler(plugin);\n }\n return original.apply(this, [pluginInput, options]);\n };\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 private _getServerExtPatch(\n original: (...args: unknown[]) => unknown,\n pluginName?: string\n ) {\n const instrumentation: HapiInstrumentation = this;\n\n return function ext(\n this: ThisParameterType,\n ...args: Parameters\n ) {\n if (Array.isArray(args[0])) {\n const eventsList:\n | Hapi.ServerExtEventsObject[]\n | Hapi.ServerExtEventsRequestObject[] = args[0];\n for (let i = 0; i < eventsList.length; i++) {\n const eventObj = eventsList[i];\n if (isLifecycleExtType(eventObj.type)) {\n const lifecycleEventObj =\n eventObj as Hapi.ServerExtEventsRequestObject;\n const handler = instrumentation._wrapExtMethods(\n lifecycleEventObj.method,\n eventObj.type,\n pluginName\n );\n lifecycleEventObj.method = handler;\n eventsList[i] = lifecycleEventObj;\n }\n }\n return original.apply(this, args);\n } else if (isDirectExtInput(args)) {\n const extInput: ServerExtDirectInput = args;\n const method: PatchableExtMethod = extInput[1];\n const handler = instrumentation._wrapExtMethods(\n method,\n extInput[0],\n pluginName\n );\n return original.apply(this, [extInput[0], handler, extInput[2]]);\n } else if (isLifecycleExtEventObj(args[0])) {\n const lifecycleEventObj = args[0];\n const handler = instrumentation._wrapExtMethods(\n lifecycleEventObj.method,\n lifecycleEventObj.type,\n pluginName\n );\n lifecycleEventObj.method = handler;\n return original.call(this, lifecycleEventObj);\n }\n return original.apply(this, args);\n };\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 private _getServerRoutePatch(\n original: HapiServerRouteInputMethod,\n pluginName?: string\n ) {\n const instrumentation: HapiInstrumentation = this;\n return function route(\n this: Hapi.Server,\n route: HapiServerRouteInput\n ): void {\n if (Array.isArray(route)) {\n for (let i = 0; i < route.length; i++) {\n const newRoute = instrumentation._wrapRouteHandler.call(\n instrumentation,\n route[i],\n pluginName\n );\n route[i] = newRoute;\n }\n } else {\n route = instrumentation._wrapRouteHandler.call(\n instrumentation,\n route,\n pluginName\n );\n }\n return original.apply(this, [route]);\n };\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 private _wrapRegisterHandler(plugin: Hapi.Plugin): void {\n const instrumentation: HapiInstrumentation = this;\n const pluginName = getPluginName(plugin);\n const oldRegister = plugin.register;\n const self = this;\n const newRegisterHandler = function (\n this: typeof plugin,\n server: Hapi.Server,\n options: T\n ) {\n self._wrap(server, 'route', original => {\n return instrumentation._getServerRoutePatch.bind(instrumentation)(\n original,\n pluginName\n );\n });\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 as any,\n pluginName\n );\n });\n return oldRegister.call(this, server, options);\n };\n plugin.register = newRegisterHandler;\n }\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 private _wrapExtMethods(\n method: T,\n extPoint: Hapi.ServerRequestExtType,\n pluginName?: string\n ): T {\n const instrumentation: HapiInstrumentation = this;\n if (method instanceof Array) {\n for (let i = 0; i < method.length; i++) {\n method[i] = instrumentation._wrapExtMethods(\n method[i],\n extPoint\n ) as PatchableExtMethod;\n }\n return method;\n } else if (isPatchableExtMethod(method)) {\n if (method[handlerPatched] === true) return method;\n method[handlerPatched] = true;\n\n const newHandler: PatchableExtMethod = async function (\n ...params: Parameters\n ) {\n if (api.trace.getSpan(api.context.active()) === undefined) {\n return await method.apply(this, params);\n }\n const metadata = getExtMetadata(extPoint, pluginName);\n const span = instrumentation.tracer.startSpan(metadata.name, {\n attributes: metadata.attributes,\n });\n try {\n return await api.context.with<\n Parameters,\n Hapi.Lifecycle.Method\n >(\n api.trace.setSpan(api.context.active(), span),\n method,\n undefined,\n ...params\n );\n } catch (err: any) {\n span.recordException(err);\n span.setStatus({\n code: api.SpanStatusCode.ERROR,\n message: err.message,\n });\n throw err;\n } finally {\n span.end();\n }\n };\n return newHandler as T;\n }\n return method;\n }\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 private _wrapRouteHandler(\n route: PatchableServerRoute,\n pluginName?: string\n ): PatchableServerRoute {\n const instrumentation: HapiInstrumentation = this;\n if (route[handlerPatched] === true) return route;\n route[handlerPatched] = true;\n\n const wrapHandler: (\n oldHandler: Hapi.Lifecycle.Method\n ) => Hapi.Lifecycle.Method = oldHandler => {\n return async function (...params: Parameters) {\n if (api.trace.getSpan(api.context.active()) === undefined) {\n return await oldHandler.call(this, ...params);\n }\n const rpcMetadata = getRPCMetadata(api.context.active());\n if (rpcMetadata?.type === RPCType.HTTP) {\n rpcMetadata.route = route.path;\n }\n const metadata = getRouteMetadata(\n route,\n instrumentation._semconvStability,\n pluginName\n );\n const span = instrumentation.tracer.startSpan(metadata.name, {\n attributes: metadata.attributes,\n });\n try {\n return await api.context.with(\n api.trace.setSpan(api.context.active(), span),\n () => oldHandler.call(this, ...params)\n );\n } catch (err: any) {\n span.recordException(err);\n span.setStatus({\n code: api.SpanStatusCode.ERROR,\n message: err.message,\n });\n throw err;\n } finally {\n span.end();\n }\n };\n };\n\n if (typeof route.handler === 'function') {\n route.handler = wrapHandler(route.handler as Hapi.Lifecycle.Method);\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(\n options.handler as Hapi.Lifecycle.Method\n );\n }\n return options;\n };\n } else if (typeof route.options?.handler === 'function') {\n route.options.handler = wrapHandler(\n route.options.handler as Hapi.Lifecycle.Method\n );\n }\n return route;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.d.ts new file mode 100644 index 0000000..12ab370 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.d.ts @@ -0,0 +1,32 @@ +import type * as Hapi from '@hapi/hapi'; +export declare const HapiComponentName = "@hapi/hapi"; +/** + * This symbol is used to mark a Hapi route handler or server extension handler as + * already patched, since its possible to use these handlers multiple times + * i.e. when allowing multiple versions of one plugin, or when registering a plugin + * multiple times on different servers. + */ +export declare const handlerPatched: unique symbol; +export type HapiServerRouteInputMethod = (route: HapiServerRouteInput) => void; +export type HapiServerRouteInput = PatchableServerRoute | PatchableServerRoute[]; +export type PatchableServerRoute = Hapi.ServerRoute & { + [handlerPatched]?: boolean; +}; +export type HapiPluginObject = Hapi.ServerRegisterPluginObject; +export type HapiPluginInput = HapiPluginObject | Array>; +export type RegisterFunction = (plugin: HapiPluginInput, options?: Hapi.ServerRegisterOptions) => Promise; +export type PatchableExtMethod = Hapi.Lifecycle.Method & { + [handlerPatched]?: boolean; +}; +export type ServerExtDirectInput = [ + Hapi.ServerRequestExtType, + Hapi.Lifecycle.Method, + (Hapi.ServerExtOptions | undefined)? +]; +export declare const HapiLayerType: { + ROUTER: string; + PLUGIN: string; + EXT: string; +}; +export declare const HapiLifecycleMethodNames: Set; +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.js new file mode 100644 index 0000000..0fb8935 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.js @@ -0,0 +1,41 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HapiLifecycleMethodNames = exports.HapiLayerType = exports.handlerPatched = exports.HapiComponentName = void 0; +exports.HapiComponentName = '@hapi/hapi'; +/** + * This symbol is used to mark a Hapi route handler or server extension handler as + * already patched, since its possible to use these handlers multiple times + * i.e. when allowing multiple versions of one plugin, or when registering a plugin + * multiple times on different servers. + */ +exports.handlerPatched = Symbol('hapi-handler-patched'); +exports.HapiLayerType = { + ROUTER: 'router', + PLUGIN: 'plugin', + EXT: 'server.ext', +}; +exports.HapiLifecycleMethodNames = new Set([ + 'onPreAuth', + 'onCredentials', + 'onPostAuth', + 'onPreHandler', + 'onPostHandler', + 'onPreResponse', + 'onRequest', +]); +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.js.map new file mode 100644 index 0000000..6437a2e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIU,QAAA,iBAAiB,GAAG,YAAY,CAAC;AAE9C;;;;;GAKG;AACU,QAAA,cAAc,GAAkB,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAiC/D,QAAA,aAAa,GAAG;IAC3B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,YAAY;CAClB,CAAC;AAEW,QAAA,wBAAwB,GAAG,IAAI,GAAG,CAAC;IAC9C,WAAW;IACX,eAAe;IACf,YAAY;IACZ,cAAc;IACd,eAAe;IACf,eAAe;IACf,WAAW;CACZ,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type * as Hapi from '@hapi/hapi';\n\nexport const HapiComponentName = '@hapi/hapi';\n\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 */\nexport const handlerPatched: unique symbol = Symbol('hapi-handler-patched');\n\nexport type HapiServerRouteInputMethod = (route: HapiServerRouteInput) => void;\n\nexport type HapiServerRouteInput =\n | PatchableServerRoute\n | PatchableServerRoute[];\n\nexport type PatchableServerRoute = Hapi.ServerRoute & {\n [handlerPatched]?: boolean;\n};\n\nexport type HapiPluginObject = Hapi.ServerRegisterPluginObject;\n\nexport type HapiPluginInput =\n | HapiPluginObject\n | Array>;\n\nexport type RegisterFunction = (\n plugin: HapiPluginInput,\n options?: Hapi.ServerRegisterOptions\n) => Promise;\n\nexport type PatchableExtMethod = Hapi.Lifecycle.Method & {\n [handlerPatched]?: boolean;\n};\n\nexport type ServerExtDirectInput = [\n Hapi.ServerRequestExtType,\n Hapi.Lifecycle.Method,\n (Hapi.ServerExtOptions | undefined)?,\n];\n\nexport const HapiLayerType = {\n ROUTER: 'router',\n PLUGIN: 'plugin',\n EXT: 'server.ext',\n};\n\nexport const HapiLifecycleMethodNames = new Set([\n 'onPreAuth',\n 'onCredentials',\n 'onPostAuth',\n 'onPreHandler',\n 'onPostHandler',\n 'onPreResponse',\n 'onRequest',\n]);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.d.ts new file mode 100644 index 0000000..c9dd601 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.d.ts @@ -0,0 +1,13 @@ +/** + * Deprecated, use `http.request.method` instead. + * + * @example GET + * @example POST + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.method`. + */ +export declare const ATTR_HTTP_METHOD: "http.method"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.js new file mode 100644 index 0000000..e578d12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.js @@ -0,0 +1,36 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ATTR_HTTP_METHOD = void 0; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Deprecated, use `http.request.method` instead. + * + * @example GET + * @example POST + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.method`. + */ +exports.ATTR_HTTP_METHOD = 'http.method'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.js.map new file mode 100644 index 0000000..d3fcd03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.d.ts new file mode 100644 index 0000000..ba0e016 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.d.ts @@ -0,0 +1,19 @@ +import { Attributes } from '@opentelemetry/api'; +import type * as Hapi from '@hapi/hapi'; +import { HapiPluginObject, PatchableExtMethod, ServerExtDirectInput } from './internal-types'; +import { SemconvStability } from '@opentelemetry/instrumentation'; +export declare function getPluginName(plugin: Hapi.Plugin): string; +export declare const isLifecycleExtType: (variableToCheck: unknown) => variableToCheck is Hapi.ServerRequestExtType; +export declare const isLifecycleExtEventObj: (variableToCheck: unknown) => variableToCheck is Hapi.ServerExtEventsRequestObject; +export declare const isDirectExtInput: (variableToCheck: unknown) => variableToCheck is ServerExtDirectInput; +export declare const isPatchableExtMethod: (variableToCheck: PatchableExtMethod | PatchableExtMethod[]) => variableToCheck is PatchableExtMethod; +export declare const getRouteMetadata: (route: Hapi.ServerRoute, semconvStability: SemconvStability, pluginName?: string) => { + attributes: Attributes; + name: string; +}; +export declare const getExtMetadata: (extPoint: Hapi.ServerRequestExtType, pluginName?: string) => { + attributes: Attributes; + name: string; +}; +export declare const getPluginFromInput: (pluginObj: HapiPluginObject) => Hapi.Plugin; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.js new file mode 100644 index 0000000..1f8984a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.js @@ -0,0 +1,112 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getPluginFromInput = exports.getExtMetadata = exports.getRouteMetadata = exports.isPatchableExtMethod = exports.isDirectExtInput = exports.isLifecycleExtEventObj = exports.isLifecycleExtType = exports.getPluginName = void 0; +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +const internal_types_1 = require("./internal-types"); +const AttributeNames_1 = require("./enums/AttributeNames"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +function getPluginName(plugin) { + if (plugin.name) { + return plugin.name; + } + else { + return plugin.pkg.name; + } +} +exports.getPluginName = getPluginName; +const isLifecycleExtType = (variableToCheck) => { + return (typeof variableToCheck === 'string' && + internal_types_1.HapiLifecycleMethodNames.has(variableToCheck)); +}; +exports.isLifecycleExtType = isLifecycleExtType; +const isLifecycleExtEventObj = (variableToCheck) => { + const event = variableToCheck?.type; + return event !== undefined && (0, exports.isLifecycleExtType)(event); +}; +exports.isLifecycleExtEventObj = isLifecycleExtEventObj; +const isDirectExtInput = (variableToCheck) => { + return (Array.isArray(variableToCheck) && + variableToCheck.length <= 3 && + (0, exports.isLifecycleExtType)(variableToCheck[0]) && + typeof variableToCheck[1] === 'function'); +}; +exports.isDirectExtInput = isDirectExtInput; +const isPatchableExtMethod = (variableToCheck) => { + return !Array.isArray(variableToCheck); +}; +exports.isPatchableExtMethod = isPatchableExtMethod; +const getRouteMetadata = (route, semconvStability, pluginName) => { + const attributes = { + [semantic_conventions_1.ATTR_HTTP_ROUTE]: route.path, + }; + if (semconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_HTTP_METHOD] = route.method; + } + if (semconvStability & instrumentation_1.SemconvStability.STABLE) { + // Note: This currently does *not* normalize the method name to uppercase + // and conditionally include `http.request.method.original` as described + // at https://opentelemetry.io/docs/specs/semconv/http/http-spans/ + // These attributes are for a *hapi* span, and not the parent HTTP span, + // so the HTTP span guidance doesn't strictly apply. + attributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD] = route.method; + } + let name; + if (pluginName) { + attributes[AttributeNames_1.AttributeNames.HAPI_TYPE] = internal_types_1.HapiLayerType.PLUGIN; + attributes[AttributeNames_1.AttributeNames.PLUGIN_NAME] = pluginName; + name = `${pluginName}: route - ${route.path}`; + } + else { + attributes[AttributeNames_1.AttributeNames.HAPI_TYPE] = internal_types_1.HapiLayerType.ROUTER; + name = `route - ${route.path}`; + } + return { attributes, name }; +}; +exports.getRouteMetadata = getRouteMetadata; +const getExtMetadata = (extPoint, pluginName) => { + if (pluginName) { + return { + attributes: { + [AttributeNames_1.AttributeNames.EXT_TYPE]: extPoint, + [AttributeNames_1.AttributeNames.HAPI_TYPE]: internal_types_1.HapiLayerType.EXT, + [AttributeNames_1.AttributeNames.PLUGIN_NAME]: pluginName, + }, + name: `${pluginName}: ext - ${extPoint}`, + }; + } + return { + attributes: { + [AttributeNames_1.AttributeNames.EXT_TYPE]: extPoint, + [AttributeNames_1.AttributeNames.HAPI_TYPE]: internal_types_1.HapiLayerType.EXT, + }, + name: `ext - ${extPoint}`, + }; +}; +exports.getExtMetadata = getExtMetadata; +const getPluginFromInput = (pluginObj) => { + if ('plugin' in pluginObj) { + if ('plugin' in pluginObj.plugin) { + return pluginObj.plugin.plugin; + } + return pluginObj.plugin; + } + return pluginObj; +}; +exports.getPluginFromInput = getPluginFromInput; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.js.map new file mode 100644 index 0000000..2a06206 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,8EAG6C;AAC7C,uCAA6C;AAE7C,qDAM0B;AAC1B,2DAAwD;AACxD,oEAAkE;AAElE,SAAgB,aAAa,CAAI,MAAsB;IACrD,IAAK,MAAiC,CAAC,IAAI,EAAE;QAC3C,OAAQ,MAAiC,CAAC,IAAI,CAAC;KAChD;SAAM;QACL,OAAQ,MAA6B,CAAC,GAAG,CAAC,IAAI,CAAC;KAChD;AACH,CAAC;AAND,sCAMC;AAEM,MAAM,kBAAkB,GAAG,CAChC,eAAwB,EACsB,EAAE;IAChD,OAAO,CACL,OAAO,eAAe,KAAK,QAAQ;QACnC,yCAAwB,CAAC,GAAG,CAAC,eAAe,CAAC,CAC9C,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,kBAAkB,sBAO7B;AAEK,MAAM,sBAAsB,GAAG,CACpC,eAAwB,EAC8B,EAAE;IACxD,MAAM,KAAK,GAAI,eAAqD,EAAE,IAAI,CAAC;IAC3E,OAAO,KAAK,KAAK,SAAS,IAAI,IAAA,0BAAkB,EAAC,KAAK,CAAC,CAAC;AAC1D,CAAC,CAAC;AALW,QAAA,sBAAsB,0BAKjC;AAEK,MAAM,gBAAgB,GAAG,CAC9B,eAAwB,EACiB,EAAE;IAC3C,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QAC9B,eAAe,CAAC,MAAM,IAAI,CAAC;QAC3B,IAAA,0BAAkB,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,eAAe,CAAC,CAAC,CAAC,KAAK,UAAU,CACzC,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B;AAEK,MAAM,oBAAoB,GAAG,CAClC,eAA0D,EACnB,EAAE;IACzC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACzC,CAAC,CAAC;AAJW,QAAA,oBAAoB,wBAI/B;AAEK,MAAM,gBAAgB,GAAG,CAC9B,KAAuB,EACvB,gBAAkC,EAClC,UAAmB,EAInB,EAAE;IACF,MAAM,UAAU,GAAe;QAC7B,CAAC,sCAAe,CAAC,EAAE,KAAK,CAAC,IAAI;KAC9B,CAAC;IACF,IAAI,gBAAgB,GAAG,kCAAgB,CAAC,GAAG,EAAE;QAC3C,UAAU,CAAC,0BAAgB,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;KAC7C;IACD,IAAI,gBAAgB,GAAG,kCAAgB,CAAC,MAAM,EAAE;QAC9C,yEAAyE;QACzE,wEAAwE;QACxE,kEAAkE;QAClE,wEAAwE;QACxE,oDAAoD;QACpD,UAAU,CAAC,+CAAwB,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;KACrD;IAED,IAAI,IAAI,CAAC;IACT,IAAI,UAAU,EAAE;QACd,UAAU,CAAC,+BAAc,CAAC,SAAS,CAAC,GAAG,8BAAa,CAAC,MAAM,CAAC;QAC5D,UAAU,CAAC,+BAAc,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;QACpD,IAAI,GAAG,GAAG,UAAU,aAAa,KAAK,CAAC,IAAI,EAAE,CAAC;KAC/C;SAAM;QACL,UAAU,CAAC,+BAAc,CAAC,SAAS,CAAC,GAAG,8BAAa,CAAC,MAAM,CAAC;QAC5D,IAAI,GAAG,WAAW,KAAK,CAAC,IAAI,EAAE,CAAC;KAChC;IAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC;AAlCW,QAAA,gBAAgB,oBAkC3B;AAEK,MAAM,cAAc,GAAG,CAC5B,QAAmC,EACnC,UAAmB,EAInB,EAAE;IACF,IAAI,UAAU,EAAE;QACd,OAAO;YACL,UAAU,EAAE;gBACV,CAAC,+BAAc,CAAC,QAAQ,CAAC,EAAE,QAAQ;gBACnC,CAAC,+BAAc,CAAC,SAAS,CAAC,EAAE,8BAAa,CAAC,GAAG;gBAC7C,CAAC,+BAAc,CAAC,WAAW,CAAC,EAAE,UAAU;aACzC;YACD,IAAI,EAAE,GAAG,UAAU,WAAW,QAAQ,EAAE;SACzC,CAAC;KACH;IACD,OAAO;QACL,UAAU,EAAE;YACV,CAAC,+BAAc,CAAC,QAAQ,CAAC,EAAE,QAAQ;YACnC,CAAC,+BAAc,CAAC,SAAS,CAAC,EAAE,8BAAa,CAAC,GAAG;SAC9C;QACD,IAAI,EAAE,SAAS,QAAQ,EAAE;KAC1B,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,cAAc,kBAwBzB;AAEK,MAAM,kBAAkB,GAAG,CAChC,SAA8B,EACR,EAAE;IACxB,IAAI,QAAQ,IAAI,SAAS,EAAE;QACzB,IAAI,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE;YAChC,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;SAChC;QACD,OAAO,SAAS,CAAC,MAAM,CAAC;KACzB;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAVW,QAAA,kBAAkB,sBAU7B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n ATTR_HTTP_ROUTE,\n ATTR_HTTP_REQUEST_METHOD,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_HTTP_METHOD } from './semconv';\nimport type * as Hapi from '@hapi/hapi';\nimport {\n HapiLayerType,\n HapiLifecycleMethodNames,\n HapiPluginObject,\n PatchableExtMethod,\n ServerExtDirectInput,\n} from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\n\nexport function getPluginName(plugin: Hapi.Plugin): string {\n if ((plugin as Hapi.PluginNameVersion).name) {\n return (plugin as Hapi.PluginNameVersion).name;\n } else {\n return (plugin as Hapi.PluginPackage).pkg.name;\n }\n}\n\nexport const isLifecycleExtType = (\n variableToCheck: unknown\n): variableToCheck is Hapi.ServerRequestExtType => {\n return (\n typeof variableToCheck === 'string' &&\n HapiLifecycleMethodNames.has(variableToCheck)\n );\n};\n\nexport const isLifecycleExtEventObj = (\n variableToCheck: unknown\n): variableToCheck is Hapi.ServerExtEventsRequestObject => {\n const event = (variableToCheck as Hapi.ServerExtEventsRequestObject)?.type;\n return event !== undefined && isLifecycleExtType(event);\n};\n\nexport const isDirectExtInput = (\n variableToCheck: unknown\n): variableToCheck is ServerExtDirectInput => {\n return (\n Array.isArray(variableToCheck) &&\n variableToCheck.length <= 3 &&\n isLifecycleExtType(variableToCheck[0]) &&\n typeof variableToCheck[1] === 'function'\n );\n};\n\nexport const isPatchableExtMethod = (\n variableToCheck: PatchableExtMethod | PatchableExtMethod[]\n): variableToCheck is PatchableExtMethod => {\n return !Array.isArray(variableToCheck);\n};\n\nexport const getRouteMetadata = (\n route: Hapi.ServerRoute,\n semconvStability: SemconvStability,\n pluginName?: string\n): {\n attributes: Attributes;\n name: string;\n} => {\n const attributes: Attributes = {\n [ATTR_HTTP_ROUTE]: route.path,\n };\n if (semconvStability & SemconvStability.OLD) {\n attributes[ATTR_HTTP_METHOD] = route.method;\n }\n if (semconvStability & 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[ATTR_HTTP_REQUEST_METHOD] = route.method;\n }\n\n let name;\n if (pluginName) {\n attributes[AttributeNames.HAPI_TYPE] = HapiLayerType.PLUGIN;\n attributes[AttributeNames.PLUGIN_NAME] = pluginName;\n name = `${pluginName}: route - ${route.path}`;\n } else {\n attributes[AttributeNames.HAPI_TYPE] = HapiLayerType.ROUTER;\n name = `route - ${route.path}`;\n }\n\n return { attributes, name };\n};\n\nexport const getExtMetadata = (\n extPoint: Hapi.ServerRequestExtType,\n pluginName?: string\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (pluginName) {\n return {\n attributes: {\n [AttributeNames.EXT_TYPE]: extPoint,\n [AttributeNames.HAPI_TYPE]: HapiLayerType.EXT,\n [AttributeNames.PLUGIN_NAME]: pluginName,\n },\n name: `${pluginName}: ext - ${extPoint}`,\n };\n }\n return {\n attributes: {\n [AttributeNames.EXT_TYPE]: extPoint,\n [AttributeNames.HAPI_TYPE]: HapiLayerType.EXT,\n },\n name: `ext - ${extPoint}`,\n };\n};\n\nexport const getPluginFromInput = (\n pluginObj: HapiPluginObject\n): Hapi.Plugin => {\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};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/version.d.ts new file mode 100644 index 0000000..96f4139 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.57.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-hapi"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/version.js new file mode 100644 index 0000000..77fde6b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.57.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-hapi'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/version.js.map new file mode 100644 index 0000000..37d0a20 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,qCAAqC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.57.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-hapi';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/package.json new file mode 100644 index 0000000..c5c13fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-hapi/package.json @@ -0,0 +1,63 @@ +{ + "name": "@opentelemetry/instrumentation-hapi", + "version": "0.57.0", + "description": "OpenTelemetry instrumentation for `@hapi/hapi` http web application framework", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-hapi" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-hapi", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "version:update": "node ../../scripts/version-update.js" + }, + "keywords": [ + "hapi", + "instrumentation", + "nodejs", + "opentelemetry", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@hapi/hapi": "21.3.12", + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "joi": "17.12.2" + }, + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-hapi#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/README.md new file mode 100644 index 0000000..f73c271 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/README.md @@ -0,0 +1,145 @@ +# OpenTelemetry HTTP and HTTPS Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +**Note: This is an experimental package under active development. New releases may include breaking changes.** + +This module provides automatic instrumentation for [`http`](https://nodejs.org/api/http.html) and [`https`](https://nodejs.org/api/https.html). + +For automatic instrumentation see the +[@opentelemetry/sdk-trace-node](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-http +``` + +## Supported Versions + +- Nodejs `>=14` + +## Usage + +OpenTelemetry HTTP Instrumentation allows the user to automatically collect telemetry and export it to their backend of choice, to give observability to distributed systems. + +To load a specific instrumentation (HTTP in this case), specify it in the Node Tracer's configuration. + +```js +const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); +const { + ConsoleSpanExporter, + NodeTracerProvider, + SimpleSpanProcessor, +} = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(new ConsoleSpanExporter())] +}); + +provider.register(); + +registerInstrumentations({ + instrumentations: [new HttpInstrumentation()], +}); + +``` + +See [examples/http](https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/http) for a short example. + +### Http instrumentation Options + +Http instrumentation has a few [configuration options](https://github.com/open-telemetry/opentelemetry-js/blob/e1ec4026edae53a2dea3a9a604d6d21bb5e8d99f/experimental/packages/opentelemetry-instrumentation-http/src/types.ts#L60-L93) available to choose from. +You can set the following: + +| Options | Type | Description | +| --------------------------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `applyCustomAttributesOnSpan` | `HttpCustomAttributeFunction` | Function for adding custom attributes | +| `requestHook` | `HttpRequestCustomAttributeFunction` | Function for adding custom attributes before request is handled | +| `responseHook` | `HttpResponseCustomAttributeFunction` | Function for adding custom attributes before response is handled | +| `startIncomingSpanHook` | `StartIncomingSpanCustomAttributeFunction` | Function for adding custom attributes before a span is started in incomingRequest | +| `startOutgoingSpanHook` | `StartOutgoingSpanCustomAttributeFunction` | Function for adding custom attributes before a span is started in outgoingRequest | +| `ignoreIncomingRequestHook` | `IgnoreIncomingRequestFunction` | Http instrumentation will not trace all incoming requests that matched with custom function | +| `ignoreOutgoingRequestHook` | `IgnoreOutgoingRequestFunction` | Http instrumentation will not trace all outgoing requests that matched with custom function | +| `disableOutgoingRequestInstrumentation` | `boolean` | Set to true to avoid instrumenting outgoing requests at all. This can be helpful when another instrumentation handles outgoing requests. | +| `disableIncomingRequestInstrumentation` | `boolean` | Set to true to avoid instrumenting incoming requests at all. This can be helpful when another instrumentation handles incoming requests. | +| `serverName` | `string` | The primary server name of the matched virtual host. | +| `requireParentforOutgoingSpans` | Boolean | Require that is a parent span to create new span for outgoing requests. | +| `requireParentforIncomingSpans` | Boolean | Require that is a parent span to create new span for incoming requests. | +| `headersToSpanAttributes` | `object` | List of case insensitive HTTP headers to convert to span attributes. Client (outgoing requests, incoming responses) and server (incoming requests, outgoing responses) headers will be converted to span attributes in the form of `http.{request\|response}.header.header_name`, e.g. `http.response.header.content_length` | + +## Semantic Conventions + +Prior to version `0.54.0`, this instrumentation created spans targeting an experimental semantic convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md). + +HTTP semantic conventions (semconv) were stabilized in v1.23.0, and a [migration process](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/non-normative/http-migration.md#http-semantic-convention-stability-migration) was defined. +`instrumentation-http` versions 0.54.0 and later include support for migrating to stable HTTP semantic conventions, as described below. +The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new HTTP semconv, after which a new minor version will use the *new* semconv by default and drop support for the old semconv. +See the [HTTP semconv migration plan for OpenTelemetry JS instrumentations](https://github.com/open-telemetry/opentelemetry-js/issues/5646). + +To select which semconv version(s) is emitted from this instrumentation, use the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable. + +- `http`: emit the new (stable) v1.23.0+ semantics +- `http/dup`: emit **both** the old v1.7.0 and the new (stable) v1.23.0+ semantics +- By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` includes neither of the above tokens, the old v1.7.0 semconv is used. + +### Attributes collected + +| v1.7.0 semconv | v1.23.0 semconv | Short Description | +| ------------------------------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http.client_ip` | `client.address` | The IP address of the original client behind all proxies, if known | +| `http.flavor` | `network.protocol.version` | Kind of HTTP protocol used | +| `http.host` | `server.address` | The value of the HTTP host header | +| `http.method` | `http.request.method` | HTTP request method | +| `http.request_content_length` | (opt-in, `headersToSpanAttributes`) | The size of the request payload body in bytes. For newer semconv, use the `headersToSpanAttributes:` option to capture this as `http.request.header.content_length`. | +| `http.request_content_length_uncompressed` | (not included) | The size of the uncompressed request payload body after transport decoding. (In semconv v1.23.0 this is defined by `http.request.body.size`, which is experimental and opt-in.) | +| `http.response_content_length` | (opt-in, `headersToSpanAttributes`) | The size of the response payload body in bytes. For newer semconv, use the `headersToSpanAttributes:` option to capture this as `http.response.header.content_length`. | +| `http.response_content_length_uncompressed` | (not included) | The size of the uncompressed response payload body after transport decoding. (In semconv v1.23.0 this is defined by `http.response.body.size`, which is experimental and opt-in.) | +| `http.route` | no change | The matched route (path template). | +| `http.scheme` | `url.scheme` | The URI scheme identifying the used protocol | +| `http.server_name` | `server.address` | The primary server name of the matched virtual host | +| `http.status_code` | `http.response.status_code` | HTTP response status code | +| `http.target` | `url.path` and `url.query` | The URI path and query component | +| `http.url` | `url.full` | Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]` | +| `http.user_agent` | `user_agent.original` | Value of the HTTP User-Agent header sent by the client | +| `net.host.ip` | `network.local.address` | Like net.peer.ip but for the host IP. Useful in case of a multi-IP host | +| `net.host.name` | `server.address` | Local hostname or similar | +| `net.host.port` | `server.port` | Like net.peer.port but for the host port | +| `net.peer.ip.` | `network.peer.address` | Remote address of the peer (dotted decimal for IPv4 or RFC5952 for IPv6) | +| `net.peer.name` | `server.address` | Server domain name if available without reverse DNS lookup | +| `net.peer.port` | `server.port` | Server port number | +| `net.transport` | `network.transport` | Transport protocol used | + +Metrics Exported: + +- [`http.server.request.duration`](https://github.com/open-telemetry/semantic-conventions/blob/v1.27.0/docs/http/http-metrics.md#metric-httpserverrequestduration) +- [`http.client.request.duration`](https://github.com/open-telemetry/semantic-conventions/blob/v1.27.0/docs/http/http-metrics.md#metric-httpclientrequestduration) + +### Upgrading Semantic Conventions + +When upgrading to the new semantic conventions, it is recommended to do so in the following order: + +1. Upgrade `@opentelemetry/instrumentation-http` to the latest version +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http/dup` to emit both old and new semantic conventions +3. Modify alerts, dashboards, metrics, and other processes to expect the new semantic conventions +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http` to emit only the new semantic conventions + +This will cause both the old and new semantic conventions to be emitted during the transition period. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-http +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-http.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.d.ts new file mode 100644 index 0000000..7545de4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.d.ts @@ -0,0 +1,9 @@ +/** + * https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md + */ +export declare enum AttributeNames { + HTTP_ERROR_NAME = "http.error_name", + HTTP_ERROR_MESSAGE = "http.error_message", + HTTP_STATUS_TEXT = "http.status_text" +} +//# sourceMappingURL=AttributeNames.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.js new file mode 100644 index 0000000..faf9da3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.js @@ -0,0 +1,28 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttributeNames = void 0; +/** + * https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md + */ +var AttributeNames; +(function (AttributeNames) { + AttributeNames["HTTP_ERROR_NAME"] = "http.error_name"; + AttributeNames["HTTP_ERROR_MESSAGE"] = "http.error_message"; + AttributeNames["HTTP_STATUS_TEXT"] = "http.status_text"; +})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {})); +//# sourceMappingURL=AttributeNames.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.js.map new file mode 100644 index 0000000..7019ebb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AttributeNames.js","sourceRoot":"","sources":["../../../src/enums/AttributeNames.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;GAEG;AACH,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,qDAAmC,CAAA;IACnC,2DAAyC,CAAA;IACzC,uDAAqC,CAAA;AACvC,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md\n */\nexport enum AttributeNames {\n HTTP_ERROR_NAME = 'http.error_name',\n HTTP_ERROR_MESSAGE = 'http.error_message',\n HTTP_STATUS_TEXT = 'http.status_text',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/http.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/http.d.ts new file mode 100644 index 0000000..2703369 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/http.d.ts @@ -0,0 +1,63 @@ +import { HttpInstrumentationConfig } from './types'; +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +/** + * `node:http` and `node:https` instrumentation for OpenTelemetry + */ +export declare class HttpInstrumentation extends InstrumentationBase { + /** keep track on spans not ended */ + private readonly _spanNotEnded; + private _headerCapture; + private _oldHttpServerDurationHistogram; + private _stableHttpServerDurationHistogram; + private _oldHttpClientDurationHistogram; + private _stableHttpClientDurationHistogram; + private _semconvStability; + constructor(config?: HttpInstrumentationConfig); + protected _updateMetricInstruments(): void; + private _recordServerDuration; + private _recordClientDuration; + setConfig(config?: HttpInstrumentationConfig): void; + init(): [ + InstrumentationNodeModuleDefinition, + InstrumentationNodeModuleDefinition + ]; + private _getHttpInstrumentation; + private _getHttpsInstrumentation; + /** + * Creates spans for incoming requests, restoring spans' context if applied. + */ + private _getPatchIncomingRequestFunction; + /** + * Creates spans for outgoing requests, sending spans' context for distributed + * tracing. + */ + private _getPatchOutgoingRequestFunction; + private _getPatchOutgoingGetFunction; + /** Patches HTTPS outgoing requests */ + private _getPatchHttpsOutgoingRequestFunction; + private _setDefaultOptions; + /** Patches HTTPS outgoing get requests */ + private _getPatchHttpsOutgoingGetFunction; + /** + * Attach event listeners to a client request to end span and add span attributes. + * + * @param request The original request object. + * @param span representing the current operation + * @param startTime representing the start time of the request to calculate duration in Metric + * @param oldMetricAttributes metric attributes for old semantic conventions + * @param stableMetricAttributes metric attributes for new semantic conventions + */ + private _traceClientRequest; + private _incomingRequestFunction; + private _outgoingRequestFunction; + private _onServerResponseFinish; + private _onOutgoingRequestError; + private _onServerResponseError; + private _startHttpSpan; + private _closeHttpSpan; + private _callResponseHook; + private _callRequestHook; + private _callStartSpanHook; + private _createHeaderCapture; +} +//# sourceMappingURL=http.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/http.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/http.js new file mode 100644 index 0000000..7f867d8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/http.js @@ -0,0 +1,589 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HttpInstrumentation = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const url = require("url"); +const version_1 = require("./version"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const events_1 = require("events"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const utils_1 = require("./utils"); +/** + * `node:http` and `node:https` instrumentation for OpenTelemetry + */ +class HttpInstrumentation extends instrumentation_1.InstrumentationBase { + /** keep track on spans not ended */ + _spanNotEnded = new WeakSet(); + _headerCapture; + _semconvStability = instrumentation_1.SemconvStability.OLD; + constructor(config = {}) { + super('@opentelemetry/instrumentation-http', version_1.VERSION, config); + this._headerCapture = this._createHeaderCapture(); + this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + _updateMetricInstruments() { + this._oldHttpServerDurationHistogram = this.meter.createHistogram('http.server.duration', { + description: 'Measures the duration of inbound HTTP requests.', + unit: 'ms', + valueType: api_1.ValueType.DOUBLE, + }); + this._oldHttpClientDurationHistogram = this.meter.createHistogram('http.client.duration', { + description: 'Measures the duration of outbound HTTP requests.', + unit: 'ms', + valueType: api_1.ValueType.DOUBLE, + }); + this._stableHttpServerDurationHistogram = this.meter.createHistogram(semantic_conventions_1.METRIC_HTTP_SERVER_REQUEST_DURATION, { + description: 'Duration of HTTP server requests.', + unit: 's', + valueType: api_1.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(semantic_conventions_1.METRIC_HTTP_CLIENT_REQUEST_DURATION, { + description: 'Duration of HTTP client requests.', + unit: 's', + valueType: api_1.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(durationMs, oldAttributes, stableAttributes) { + if (this._semconvStability & instrumentation_1.SemconvStability.OLD) { + // old histogram is counted in MS + this._oldHttpServerDurationHistogram.record(durationMs, oldAttributes); + } + if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) { + // stable histogram is counted in S + this._stableHttpServerDurationHistogram.record(durationMs / 1000, stableAttributes); + } + } + _recordClientDuration(durationMs, oldAttributes, stableAttributes) { + if (this._semconvStability & instrumentation_1.SemconvStability.OLD) { + // old histogram is counted in MS + this._oldHttpClientDurationHistogram.record(durationMs, oldAttributes); + } + if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) { + // stable histogram is counted in S + this._stableHttpClientDurationHistogram.record(durationMs / 1000, stableAttributes); + } + } + setConfig(config = {}) { + super.setConfig(config); + this._headerCapture = this._createHeaderCapture(); + } + init() { + return [this._getHttpsInstrumentation(), this._getHttpInstrumentation()]; + } + _getHttpInstrumentation() { + return new instrumentation_1.InstrumentationNodeModuleDefinition('http', ['*'], (moduleExports) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const isESM = moduleExports[Symbol.toStringTag] === 'Module'; + if (!this.getConfig().disableOutgoingRequestInstrumentation) { + const patchedRequest = this._wrap(moduleExports, 'request', this._getPatchOutgoingRequestFunction('http')); + const patchedGet = this._wrap(moduleExports, 'get', this._getPatchOutgoingGetFunction(patchedRequest)); + if (isESM) { + // To handle `import http from 'http'`, which returns the default + // export, we need to set `module.default.*`. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + moduleExports.default.request = patchedRequest; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + moduleExports.default.get = patchedGet; + } + } + if (!this.getConfig().disableIncomingRequestInstrumentation) { + this._wrap(moduleExports.Server.prototype, 'emit', this._getPatchIncomingRequestFunction('http')); + } + return moduleExports; + }, (moduleExports) => { + if (moduleExports === undefined) + return; + if (!this.getConfig().disableOutgoingRequestInstrumentation) { + this._unwrap(moduleExports, 'request'); + this._unwrap(moduleExports, 'get'); + } + if (!this.getConfig().disableIncomingRequestInstrumentation) { + this._unwrap(moduleExports.Server.prototype, 'emit'); + } + }); + } + _getHttpsInstrumentation() { + return new instrumentation_1.InstrumentationNodeModuleDefinition('https', ['*'], (moduleExports) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const isESM = moduleExports[Symbol.toStringTag] === 'Module'; + if (!this.getConfig().disableOutgoingRequestInstrumentation) { + const patchedRequest = this._wrap(moduleExports, 'request', this._getPatchHttpsOutgoingRequestFunction('https')); + const patchedGet = this._wrap(moduleExports, 'get', this._getPatchHttpsOutgoingGetFunction(patchedRequest)); + if (isESM) { + // To handle `import https from 'https'`, which returns the default + // export, we need to set `module.default.*`. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + moduleExports.default.request = patchedRequest; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + moduleExports.default.get = patchedGet; + } + } + if (!this.getConfig().disableIncomingRequestInstrumentation) { + this._wrap(moduleExports.Server.prototype, 'emit', this._getPatchIncomingRequestFunction('https')); + } + return moduleExports; + }, (moduleExports) => { + if (moduleExports === undefined) + return; + if (!this.getConfig().disableOutgoingRequestInstrumentation) { + this._unwrap(moduleExports, 'request'); + this._unwrap(moduleExports, 'get'); + } + if (!this.getConfig().disableIncomingRequestInstrumentation) { + this._unwrap(moduleExports.Server.prototype, 'emit'); + } + }); + } + /** + * Creates spans for incoming requests, restoring spans' context if applied. + */ + _getPatchIncomingRequestFunction(component) { + return (original) => { + return this._incomingRequestFunction(component, original); + }; + } + /** + * Creates spans for outgoing requests, sending spans' context for distributed + * tracing. + */ + _getPatchOutgoingRequestFunction(component) { + return (original) => { + return this._outgoingRequestFunction(component, original); + }; + } + _getPatchOutgoingGetFunction(clientRequest) { + return (_original) => { + // Re-implement http.get. This needs to be done (instead of using + // getPatchOutgoingRequestFunction to patch it) because we need to + // set the trace context header before the returned http.ClientRequest is + // ended. The Node.js docs state that the only differences between + // request and get are that (1) get defaults to the HTTP GET method and + // (2) the returned request object is ended immediately. The former is + // already true (at least in supported Node versions up to v10), so we + // simply follow the latter. Ref: + // https://nodejs.org/dist/latest/docs/api/http.html#http_http_get_options_callback + // https://github.com/googleapis/cloud-trace-nodejs/blob/master/src/instrumentations/instrumentation-http.ts#L198 + return function outgoingGetRequest(options, ...args) { + const req = clientRequest(options, ...args); + req.end(); + return req; + }; + }; + } + /** Patches HTTPS outgoing requests */ + _getPatchHttpsOutgoingRequestFunction(component) { + return (original) => { + const instrumentation = this; + return function httpsOutgoingRequest( + // eslint-disable-next-line n/no-unsupported-features/node-builtins + options, ...args) { + // Makes sure options will have default HTTPS parameters + if (component === 'https' && + typeof options === 'object' && + options?.constructor?.name !== 'URL') { + options = Object.assign({}, options); + instrumentation._setDefaultOptions(options); + } + return instrumentation._getPatchOutgoingRequestFunction(component)(original)(options, ...args); + }; + }; + } + _setDefaultOptions(options) { + options.protocol = options.protocol || 'https:'; + options.port = options.port || 443; + } + /** Patches HTTPS outgoing get requests */ + _getPatchHttpsOutgoingGetFunction(clientRequest) { + return (original) => { + const instrumentation = this; + return function httpsOutgoingRequest( + // eslint-disable-next-line n/no-unsupported-features/node-builtins + options, ...args) { + return instrumentation._getPatchOutgoingGetFunction(clientRequest)(original)(options, ...args); + }; + }; + } + /** + * Attach event listeners to a client request to end span and add span attributes. + * + * @param request The original request object. + * @param span representing the current operation + * @param startTime representing the start time of the request to calculate duration in Metric + * @param oldMetricAttributes metric attributes for old semantic conventions + * @param stableMetricAttributes metric attributes for new semantic conventions + */ + _traceClientRequest(request, span, startTime, oldMetricAttributes, stableMetricAttributes) { + if (this.getConfig().requestHook) { + this._callRequestHook(span, request); + } + /** + * Determines if the request has errored or the response has ended/errored. + */ + let responseFinished = false; + /* + * User 'response' event listeners can be added before our listener, + * force our listener to be the first, so response emitter is bound + * before any user listeners are added to it. + */ + request.prependListener('response', (response) => { + this._diag.debug('outgoingRequest on response()'); + if (request.listenerCount('response') <= 1) { + response.resume(); + } + const responseAttributes = (0, utils_1.getOutgoingRequestAttributesOnResponse)(response, this._semconvStability); + span.setAttributes(responseAttributes); + oldMetricAttributes = Object.assign(oldMetricAttributes, (0, utils_1.getOutgoingRequestMetricAttributesOnResponse)(responseAttributes)); + stableMetricAttributes = Object.assign(stableMetricAttributes, (0, utils_1.getOutgoingStableRequestMetricAttributesOnResponse)(responseAttributes)); + if (this.getConfig().responseHook) { + this._callResponseHook(span, response); + } + this._headerCapture.client.captureRequestHeaders(span, header => request.getHeader(header)); + this._headerCapture.client.captureResponseHeaders(span, header => response.headers[header]); + api_1.context.bind(api_1.context.active(), response); + const endHandler = () => { + this._diag.debug('outgoingRequest on end()'); + if (responseFinished) { + return; + } + responseFinished = true; + let status; + if (response.aborted && !response.complete) { + status = { code: api_1.SpanStatusCode.ERROR }; + } + else { + // behaves same for new and old semconv + status = { + code: (0, utils_1.parseResponseStatus)(api_1.SpanKind.CLIENT, response.statusCode), + }; + } + span.setStatus(status); + if (this.getConfig().applyCustomAttributesOnSpan) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().applyCustomAttributesOnSpan(span, request, response), () => { }, true); + } + this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, oldMetricAttributes, stableMetricAttributes); + }; + response.on('end', endHandler); + response.on(events_1.errorMonitor, (error) => { + this._diag.debug('outgoingRequest on error()', error); + if (responseFinished) { + return; + } + responseFinished = true; + this._onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error); + }); + }); + request.on('close', () => { + this._diag.debug('outgoingRequest on request close()'); + if (request.aborted || responseFinished) { + return; + } + responseFinished = true; + this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, oldMetricAttributes, stableMetricAttributes); + }); + request.on(events_1.errorMonitor, (error) => { + this._diag.debug('outgoingRequest on request error()', error); + if (responseFinished) { + return; + } + responseFinished = true; + this._onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error); + }); + this._diag.debug('http.ClientRequest return request'); + return request; + } + _incomingRequestFunction(component, original) { + const instrumentation = this; + return function incomingRequest(event, ...args) { + // Only traces request events + if (event !== 'request') { + return original.apply(this, [event, ...args]); + } + const request = args[0]; + const response = args[1]; + const method = request.method || 'GET'; + instrumentation._diag.debug(`${component} instrumentation incomingRequest`); + if ((0, instrumentation_1.safeExecuteInTheMiddle)(() => instrumentation.getConfig().ignoreIncomingRequestHook?.(request), (e) => { + if (e != null) { + instrumentation._diag.error('caught ignoreIncomingRequestHook error: ', e); + } + }, true)) { + return api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), () => { + api_1.context.bind(api_1.context.active(), request); + api_1.context.bind(api_1.context.active(), response); + return original.apply(this, [event, ...args]); + }); + } + const headers = request.headers; + const spanAttributes = (0, utils_1.getIncomingRequestAttributes)(request, { + component: component, + serverName: instrumentation.getConfig().serverName, + hookAttributes: instrumentation._callStartSpanHook(request, instrumentation.getConfig().startIncomingSpanHook), + semconvStability: instrumentation._semconvStability, + enableSyntheticSourceDetection: instrumentation.getConfig().enableSyntheticSourceDetection || false, + }, instrumentation._diag); + const spanOptions = { + kind: api_1.SpanKind.SERVER, + attributes: spanAttributes, + }; + const startTime = (0, core_1.hrTime)(); + const oldMetricAttributes = (0, utils_1.getIncomingRequestMetricAttributes)(spanAttributes); + // request method and url.scheme are both required span attributes + const stableMetricAttributes = { + [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: spanAttributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD], + [semantic_conventions_1.ATTR_URL_SCHEME]: spanAttributes[semantic_conventions_1.ATTR_URL_SCHEME], + }; + // recommended if and only if one was sent, same as span recommendation + if (spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]) { + stableMetricAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] = + spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]; + } + const ctx = api_1.propagation.extract(api_1.ROOT_CONTEXT, headers); + const span = instrumentation._startHttpSpan(method, spanOptions, ctx); + const rpcMetadata = { + type: core_1.RPCType.HTTP, + span, + }; + return api_1.context.with((0, core_1.setRPCMetadata)(api_1.trace.setSpan(ctx, span), rpcMetadata), () => { + api_1.context.bind(api_1.context.active(), request); + api_1.context.bind(api_1.context.active(), response); + if (instrumentation.getConfig().requestHook) { + instrumentation._callRequestHook(span, request); + } + if (instrumentation.getConfig().responseHook) { + instrumentation._callResponseHook(span, response); + } + instrumentation._headerCapture.server.captureRequestHeaders(span, header => request.headers[header]); + // After 'error', no further events other than 'close' should be emitted. + let hasError = false; + response.on('close', () => { + if (hasError) { + return; + } + instrumentation._onServerResponseFinish(request, response, span, oldMetricAttributes, stableMetricAttributes, startTime); + }); + response.on(events_1.errorMonitor, (err) => { + hasError = true; + instrumentation._onServerResponseError(span, oldMetricAttributes, stableMetricAttributes, startTime, err); + }); + return (0, instrumentation_1.safeExecuteInTheMiddle)(() => original.apply(this, [event, ...args]), error => { + if (error) { + instrumentation._onServerResponseError(span, oldMetricAttributes, stableMetricAttributes, startTime, error); + throw error; + } + }); + }); + }; + } + _outgoingRequestFunction(component, original) { + const instrumentation = this; + return function outgoingRequest(options, ...args) { + if (!(0, utils_1.isValidOptionsType)(options)) { + return original.apply(this, [options, ...args]); + } + const extraOptions = typeof args[0] === 'object' && + (typeof options === 'string' || options instanceof url.URL) + ? args.shift() + : undefined; + const { method, invalidUrl, optionsParsed } = (0, utils_1.getRequestInfo)(instrumentation._diag, options, extraOptions); + if ((0, instrumentation_1.safeExecuteInTheMiddle)(() => instrumentation + .getConfig() + .ignoreOutgoingRequestHook?.(optionsParsed), (e) => { + if (e != null) { + instrumentation._diag.error('caught ignoreOutgoingRequestHook error: ', e); + } + }, true)) { + return original.apply(this, [optionsParsed, ...args]); + } + const { hostname, port } = (0, utils_1.extractHostnameAndPort)(optionsParsed); + const attributes = (0, utils_1.getOutgoingRequestAttributes)(optionsParsed, { + component, + port, + hostname, + hookAttributes: instrumentation._callStartSpanHook(optionsParsed, instrumentation.getConfig().startOutgoingSpanHook), + redactedQueryParams: instrumentation.getConfig().redactedQueryParams, // Added config for adding custom query strings + }, instrumentation._semconvStability, instrumentation.getConfig().enableSyntheticSourceDetection || false); + const startTime = (0, core_1.hrTime)(); + const oldMetricAttributes = (0, utils_1.getOutgoingRequestMetricAttributes)(attributes); + // request method, server address, and server port are both required span attributes + const stableMetricAttributes = { + [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: attributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD], + [semantic_conventions_1.ATTR_SERVER_ADDRESS]: attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS], + [semantic_conventions_1.ATTR_SERVER_PORT]: attributes[semantic_conventions_1.ATTR_SERVER_PORT], + }; + // required if and only if one was sent, same as span requirement + if (attributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]) { + stableMetricAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] = + attributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]; + } + // recommended if and only if one was sent, same as span recommendation + if (attributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]) { + stableMetricAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] = + attributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]; + } + const spanOptions = { + kind: api_1.SpanKind.CLIENT, + attributes, + }; + const span = instrumentation._startHttpSpan(method, spanOptions); + const parentContext = api_1.context.active(); + const requestContext = api_1.trace.setSpan(parentContext, span); + if (!optionsParsed.headers) { + optionsParsed.headers = {}; + } + else { + // Make a copy of the headers object to avoid mutating an object the + // caller might have a reference to. + optionsParsed.headers = Object.assign({}, optionsParsed.headers); + } + api_1.propagation.inject(requestContext, optionsParsed.headers); + return api_1.context.with(requestContext, () => { + /* + * The response callback is registered before ClientRequest is bound, + * thus it is needed to bind it before the function call. + */ + const cb = args[args.length - 1]; + if (typeof cb === 'function') { + args[args.length - 1] = api_1.context.bind(parentContext, cb); + } + const request = (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + if (invalidUrl) { + // we know that the url is invalid, there's no point in injecting context as it will fail validation. + // Passing in what the user provided will give the user an error that matches what they'd see without + // the instrumentation. + return original.apply(this, [options, ...args]); + } + else { + return original.apply(this, [optionsParsed, ...args]); + } + }, error => { + if (error) { + instrumentation._onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error); + throw error; + } + }); + instrumentation._diag.debug(`${component} instrumentation outgoingRequest`); + api_1.context.bind(parentContext, request); + return instrumentation._traceClientRequest(request, span, startTime, oldMetricAttributes, stableMetricAttributes); + }); + }; + } + _onServerResponseFinish(request, response, span, oldMetricAttributes, stableMetricAttributes, startTime) { + const attributes = (0, utils_1.getIncomingRequestAttributesOnResponse)(request, response, this._semconvStability); + oldMetricAttributes = Object.assign(oldMetricAttributes, (0, utils_1.getIncomingRequestMetricAttributesOnResponse)(attributes)); + stableMetricAttributes = Object.assign(stableMetricAttributes, (0, utils_1.getIncomingStableRequestMetricAttributesOnResponse)(attributes)); + this._headerCapture.server.captureResponseHeaders(span, header => response.getHeader(header)); + span.setAttributes(attributes).setStatus({ + code: (0, utils_1.parseResponseStatus)(api_1.SpanKind.SERVER, response.statusCode), + }); + const route = attributes[semantic_conventions_1.ATTR_HTTP_ROUTE]; + if (route) { + span.updateName(`${request.method || 'GET'} ${route}`); + } + if (this.getConfig().applyCustomAttributesOnSpan) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().applyCustomAttributesOnSpan(span, request, response), () => { }, true); + } + this._closeHttpSpan(span, api_1.SpanKind.SERVER, startTime, oldMetricAttributes, stableMetricAttributes); + } + _onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error) { + (0, utils_1.setSpanWithError)(span, error, this._semconvStability); + stableMetricAttributes[semantic_conventions_1.ATTR_ERROR_TYPE] = error.name; + this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, oldMetricAttributes, stableMetricAttributes); + } + _onServerResponseError(span, oldMetricAttributes, stableMetricAttributes, startTime, error) { + (0, utils_1.setSpanWithError)(span, error, this._semconvStability); + stableMetricAttributes[semantic_conventions_1.ATTR_ERROR_TYPE] = error.name; + this._closeHttpSpan(span, api_1.SpanKind.SERVER, startTime, oldMetricAttributes, stableMetricAttributes); + } + _startHttpSpan(name, options, ctx = api_1.context.active()) { + /* + * If a parent is required but not present, we use a `NoopSpan` to still + * propagate context without recording it. + */ + const requireParent = options.kind === api_1.SpanKind.CLIENT + ? this.getConfig().requireParentforOutgoingSpans + : this.getConfig().requireParentforIncomingSpans; + let span; + const currentSpan = api_1.trace.getSpan(ctx); + if (requireParent === true && + (!currentSpan || !api_1.trace.isSpanContextValid(currentSpan.spanContext()))) { + span = api_1.trace.wrapSpanContext(api_1.INVALID_SPAN_CONTEXT); + } + else if (requireParent === true && currentSpan?.spanContext().isRemote) { + span = currentSpan; + } + else { + span = this.tracer.startSpan(name, options, ctx); + } + this._spanNotEnded.add(span); + return span; + } + _closeHttpSpan(span, spanKind, startTime, oldMetricAttributes, stableMetricAttributes) { + if (!this._spanNotEnded.has(span)) { + return; + } + span.end(); + this._spanNotEnded.delete(span); + // Record metrics + const duration = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)())); + if (spanKind === api_1.SpanKind.SERVER) { + this._recordServerDuration(duration, oldMetricAttributes, stableMetricAttributes); + } + else if (spanKind === api_1.SpanKind.CLIENT) { + this._recordClientDuration(duration, oldMetricAttributes, stableMetricAttributes); + } + } + _callResponseHook(span, response) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().responseHook(span, response), () => { }, true); + } + _callRequestHook(span, request) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().requestHook(span, request), () => { }, true); + } + _callStartSpanHook(request, hookFunc) { + if (typeof hookFunc === 'function') { + return (0, instrumentation_1.safeExecuteInTheMiddle)(() => hookFunc(request), () => { }, true); + } + } + _createHeaderCapture() { + const config = this.getConfig(); + return { + client: { + captureRequestHeaders: (0, utils_1.headerCapture)('request', config.headersToSpanAttributes?.client?.requestHeaders ?? []), + captureResponseHeaders: (0, utils_1.headerCapture)('response', config.headersToSpanAttributes?.client?.responseHeaders ?? []), + }, + server: { + captureRequestHeaders: (0, utils_1.headerCapture)('request', config.headersToSpanAttributes?.server?.requestHeaders ?? []), + captureResponseHeaders: (0, utils_1.headerCapture)('response', config.headersToSpanAttributes?.server?.responseHeaders ?? []), + }, + }; + } +} +exports.HttpInstrumentation = HttpInstrumentation; +//# sourceMappingURL=http.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/http.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/http.js.map new file mode 100644 index 0000000..bc6f58c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/http.js.map @@ -0,0 +1 @@ +{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n context,\n HrTime,\n INVALID_SPAN_CONTEXT,\n propagation,\n ROOT_CONTEXT,\n Span,\n SpanKind,\n SpanOptions,\n SpanStatus,\n SpanStatusCode,\n trace,\n Histogram,\n Attributes,\n ValueType,\n} from '@opentelemetry/api';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n suppressTracing,\n RPCMetadata,\n RPCType,\n setRPCMetadata,\n} from '@opentelemetry/core';\nimport type * as http from 'http';\nimport type * as https from 'https';\nimport { Socket } from 'net';\nimport * as url from 'url';\nimport { HttpInstrumentationConfig } from './types';\nimport { VERSION } from './version';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n SemconvStability,\n semconvStabilityFromStr,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { errorMonitor } from 'events';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_HTTP_ROUTE,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_SCHEME,\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n METRIC_HTTP_SERVER_REQUEST_DURATION,\n} from '@opentelemetry/semantic-conventions';\nimport {\n extractHostnameAndPort,\n getIncomingRequestAttributes,\n getIncomingRequestAttributesOnResponse,\n getIncomingRequestMetricAttributes,\n getIncomingRequestMetricAttributesOnResponse,\n getIncomingStableRequestMetricAttributesOnResponse,\n getOutgoingRequestAttributes,\n getOutgoingRequestAttributesOnResponse,\n getOutgoingRequestMetricAttributes,\n getOutgoingRequestMetricAttributesOnResponse,\n getOutgoingStableRequestMetricAttributesOnResponse,\n getRequestInfo,\n headerCapture,\n isValidOptionsType,\n parseResponseStatus,\n setSpanWithError,\n} from './utils';\nimport { Err, Func, Http, HttpRequestArgs, Https } from './internal-types';\n\n/**\n * `node:http` and `node:https` instrumentation for OpenTelemetry\n */\nexport class HttpInstrumentation extends InstrumentationBase {\n /** keep track on spans not ended */\n private readonly _spanNotEnded: WeakSet = new WeakSet();\n private _headerCapture;\n declare private _oldHttpServerDurationHistogram: Histogram;\n declare private _stableHttpServerDurationHistogram: Histogram;\n declare private _oldHttpClientDurationHistogram: Histogram;\n declare private _stableHttpClientDurationHistogram: Histogram;\n\n private _semconvStability: SemconvStability = SemconvStability.OLD;\n\n constructor(config: HttpInstrumentationConfig = {}) {\n super('@opentelemetry/instrumentation-http', VERSION, config);\n this._headerCapture = this._createHeaderCapture();\n this._semconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n protected override _updateMetricInstruments() {\n this._oldHttpServerDurationHistogram = this.meter.createHistogram(\n 'http.server.duration',\n {\n description: 'Measures the duration of inbound HTTP requests.',\n unit: 'ms',\n valueType: ValueType.DOUBLE,\n }\n );\n this._oldHttpClientDurationHistogram = this.meter.createHistogram(\n 'http.client.duration',\n {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 'ms',\n valueType: ValueType.DOUBLE,\n }\n );\n this._stableHttpServerDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_SERVER_REQUEST_DURATION,\n {\n description: 'Duration of HTTP server requests.',\n unit: 's',\n valueType: 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 this._stableHttpClientDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n {\n description: 'Duration of HTTP client requests.',\n unit: 's',\n valueType: 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 }\n\n private _recordServerDuration(\n durationMs: number,\n oldAttributes: Attributes,\n stableAttributes: Attributes\n ) {\n if (this._semconvStability & SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpServerDurationHistogram.record(durationMs, oldAttributes);\n }\n\n if (this._semconvStability & SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpServerDurationHistogram.record(\n durationMs / 1000,\n stableAttributes\n );\n }\n }\n\n private _recordClientDuration(\n durationMs: number,\n oldAttributes: Attributes,\n stableAttributes: Attributes\n ) {\n if (this._semconvStability & SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpClientDurationHistogram.record(durationMs, oldAttributes);\n }\n\n if (this._semconvStability & SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpClientDurationHistogram.record(\n durationMs / 1000,\n stableAttributes\n );\n }\n }\n\n override setConfig(config: HttpInstrumentationConfig = {}): void {\n super.setConfig(config);\n this._headerCapture = this._createHeaderCapture();\n }\n\n init(): [\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleDefinition,\n ] {\n return [this._getHttpsInstrumentation(), this._getHttpInstrumentation()];\n }\n\n private _getHttpInstrumentation() {\n return new InstrumentationNodeModuleDefinition(\n 'http',\n ['*'],\n (moduleExports: Http): Http => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = (moduleExports as any)[Symbol.toStringTag] === 'Module';\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(\n moduleExports,\n 'request',\n this._getPatchOutgoingRequestFunction('http')\n ) as unknown as Func;\n const patchedGet = this._wrap(\n moduleExports,\n 'get',\n this._getPatchOutgoingGetFunction(patchedRequest)\n );\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 as any).default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(\n moduleExports.Server.prototype,\n 'emit',\n this._getPatchIncomingRequestFunction('http')\n );\n }\n return moduleExports;\n },\n (moduleExports: Http) => {\n if (moduleExports === undefined) return;\n\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\n private _getHttpsInstrumentation() {\n return new InstrumentationNodeModuleDefinition(\n 'https',\n ['*'],\n (moduleExports: Https): Https => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = (moduleExports as any)[Symbol.toStringTag] === 'Module';\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(\n moduleExports,\n 'request',\n this._getPatchHttpsOutgoingRequestFunction('https')\n ) as unknown as Func;\n const patchedGet = this._wrap(\n moduleExports,\n 'get',\n this._getPatchHttpsOutgoingGetFunction(patchedRequest)\n );\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 as any).default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(\n moduleExports.Server.prototype,\n 'emit',\n this._getPatchIncomingRequestFunction('https')\n );\n }\n return moduleExports;\n },\n (moduleExports: Https) => {\n if (moduleExports === undefined) return;\n\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\n /**\n * Creates spans for incoming requests, restoring spans' context if applied.\n */\n private _getPatchIncomingRequestFunction(component: 'http' | 'https') {\n return (\n original: (event: string, ...args: unknown[]) => boolean\n ): ((this: unknown, event: string, ...args: unknown[]) => boolean) => {\n return this._incomingRequestFunction(component, original);\n };\n }\n\n /**\n * Creates spans for outgoing requests, sending spans' context for distributed\n * tracing.\n */\n private _getPatchOutgoingRequestFunction(component: 'http' | 'https') {\n return (original: Func): Func => {\n return this._outgoingRequestFunction(component, original);\n };\n }\n\n private _getPatchOutgoingGetFunction(\n clientRequest: (\n options: http.RequestOptions | string | url.URL,\n ...args: HttpRequestArgs\n ) => http.ClientRequest\n ) {\n return (_original: Func): Func => {\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<\n T extends http.RequestOptions | string | url.URL,\n >(options: T, ...args: HttpRequestArgs): http.ClientRequest {\n const req = clientRequest(options, ...args);\n req.end();\n return req;\n };\n };\n }\n\n /** Patches HTTPS outgoing requests */\n private _getPatchHttpsOutgoingRequestFunction(component: 'http' | 'https') {\n return (original: Func): Func => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: https.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ): http.ClientRequest {\n // Makes sure options will have default HTTPS parameters\n if (\n component === 'https' &&\n typeof options === 'object' &&\n options?.constructor?.name !== 'URL'\n ) {\n options = Object.assign({}, options);\n instrumentation._setDefaultOptions(options);\n }\n return instrumentation._getPatchOutgoingRequestFunction(component)(\n original\n )(options, ...args);\n };\n };\n }\n\n private _setDefaultOptions(options: https.RequestOptions) {\n options.protocol = options.protocol || 'https:';\n options.port = options.port || 443;\n }\n\n /** Patches HTTPS outgoing get requests */\n private _getPatchHttpsOutgoingGetFunction(\n clientRequest: (\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: http.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ) => http.ClientRequest\n ) {\n return (original: Func): Func => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: https.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ): http.ClientRequest {\n return instrumentation._getPatchOutgoingGetFunction(clientRequest)(\n original\n )(options, ...args);\n };\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 private _traceClientRequest(\n request: http.ClientRequest,\n span: Span,\n startTime: HrTime,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes\n ): http.ClientRequest {\n if (this.getConfig().requestHook) {\n this._callRequestHook(span, request);\n }\n\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n\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(\n 'response',\n (response: http.IncomingMessage & { aborted?: boolean }) => {\n this._diag.debug('outgoingRequest on response()');\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n const responseAttributes = getOutgoingRequestAttributesOnResponse(\n response,\n this._semconvStability\n );\n span.setAttributes(responseAttributes);\n oldMetricAttributes = Object.assign(\n oldMetricAttributes,\n getOutgoingRequestMetricAttributesOnResponse(responseAttributes)\n );\n stableMetricAttributes = Object.assign(\n stableMetricAttributes,\n getOutgoingStableRequestMetricAttributesOnResponse(responseAttributes)\n );\n\n if (this.getConfig().responseHook) {\n this._callResponseHook(span, response);\n }\n\n this._headerCapture.client.captureRequestHeaders(span, header =>\n request.getHeader(header)\n );\n this._headerCapture.client.captureResponseHeaders(\n span,\n header => response.headers[header]\n );\n\n context.bind(context.active(), response);\n\n const endHandler = () => {\n this._diag.debug('outgoingRequest on end()');\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n let status: SpanStatus;\n\n if (response.aborted && !response.complete) {\n status = { code: SpanStatusCode.ERROR };\n } else {\n // behaves same for new and old semconv\n status = {\n code: parseResponseStatus(SpanKind.CLIENT, response.statusCode),\n };\n }\n\n span.setStatus(status);\n\n if (this.getConfig().applyCustomAttributesOnSpan) {\n safeExecuteInTheMiddle(\n () =>\n this.getConfig().applyCustomAttributesOnSpan!(\n span,\n request,\n response\n ),\n () => {},\n true\n );\n }\n\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n };\n\n response.on('end', endHandler);\n response.on(errorMonitor, (error: Err) => {\n this._diag.debug('outgoingRequest on error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n });\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(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n });\n request.on(errorMonitor, (error: Err) => {\n this._diag.debug('outgoingRequest on request error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n });\n\n this._diag.debug('http.ClientRequest return request');\n return request;\n }\n\n private _incomingRequestFunction(\n component: 'http' | 'https',\n original: (event: string, ...args: unknown[]) => boolean\n ) {\n const instrumentation = this;\n return function incomingRequest(\n this: unknown,\n event: string,\n ...args: unknown[]\n ): boolean {\n // Only traces request events\n if (event !== 'request') {\n return original.apply(this, [event, ...args]);\n }\n\n const request = args[0] as http.IncomingMessage;\n const response = args[1] as http.ServerResponse & { socket: Socket };\n const method = request.method || 'GET';\n\n instrumentation._diag.debug(\n `${component} instrumentation incomingRequest`\n );\n\n if (\n safeExecuteInTheMiddle(\n () =>\n instrumentation.getConfig().ignoreIncomingRequestHook?.(request),\n (e: unknown) => {\n if (e != null) {\n instrumentation._diag.error(\n 'caught ignoreIncomingRequestHook error: ',\n e\n );\n }\n },\n true\n )\n ) {\n return context.with(suppressTracing(context.active()), () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n return original.apply(this, [event, ...args]);\n });\n }\n\n const headers = request.headers;\n\n const spanAttributes = getIncomingRequestAttributes(\n request,\n {\n component: component,\n serverName: instrumentation.getConfig().serverName,\n hookAttributes: instrumentation._callStartSpanHook(\n request,\n instrumentation.getConfig().startIncomingSpanHook\n ),\n semconvStability: instrumentation._semconvStability,\n enableSyntheticSourceDetection:\n instrumentation.getConfig().enableSyntheticSourceDetection || false,\n },\n instrumentation._diag\n );\n\n const spanOptions: SpanOptions = {\n kind: SpanKind.SERVER,\n attributes: spanAttributes,\n };\n\n const startTime = hrTime();\n const oldMetricAttributes =\n getIncomingRequestMetricAttributes(spanAttributes);\n\n // request method and url.scheme are both required span attributes\n const stableMetricAttributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: spanAttributes[ATTR_HTTP_REQUEST_METHOD],\n [ATTR_URL_SCHEME]: spanAttributes[ATTR_URL_SCHEME],\n };\n\n // recommended if and only if one was sent, same as span recommendation\n if (spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n const ctx = propagation.extract(ROOT_CONTEXT, headers);\n const span = instrumentation._startHttpSpan(method, spanOptions, ctx);\n const rpcMetadata: RPCMetadata = {\n type: RPCType.HTTP,\n span,\n };\n\n return context.with(\n setRPCMetadata(trace.setSpan(ctx, span), rpcMetadata),\n () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n\n if (instrumentation.getConfig().requestHook) {\n instrumentation._callRequestHook(span, request);\n }\n if (instrumentation.getConfig().responseHook) {\n instrumentation._callResponseHook(span, response);\n }\n\n instrumentation._headerCapture.server.captureRequestHeaders(\n span,\n header => request.headers[header]\n );\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(\n request,\n response,\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime\n );\n });\n response.on(errorMonitor, (err: Err) => {\n hasError = true;\n instrumentation._onServerResponseError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n err\n );\n });\n\n return safeExecuteInTheMiddle(\n () => original.apply(this, [event, ...args]),\n error => {\n if (error) {\n instrumentation._onServerResponseError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n throw error;\n }\n }\n );\n }\n );\n };\n }\n\n private _outgoingRequestFunction(\n component: 'http' | 'https',\n original: Func\n ): Func {\n const instrumentation = this;\n return function outgoingRequest(\n this: unknown,\n options: url.URL | http.RequestOptions | string,\n ...args: unknown[]\n ): http.ClientRequest {\n if (!isValidOptionsType(options)) {\n return original.apply(this, [options, ...args]);\n }\n const extraOptions =\n typeof args[0] === 'object' &&\n (typeof options === 'string' || options instanceof url.URL)\n ? (args.shift() as http.RequestOptions)\n : undefined;\n const { method, invalidUrl, optionsParsed } = getRequestInfo(\n instrumentation._diag,\n options,\n extraOptions\n );\n\n if (\n safeExecuteInTheMiddle(\n () =>\n instrumentation\n .getConfig()\n .ignoreOutgoingRequestHook?.(optionsParsed),\n (e: unknown) => {\n if (e != null) {\n instrumentation._diag.error(\n 'caught ignoreOutgoingRequestHook error: ',\n e\n );\n }\n },\n true\n )\n ) {\n return original.apply(this, [optionsParsed, ...args]);\n }\n\n const { hostname, port } = extractHostnameAndPort(optionsParsed);\n const attributes = getOutgoingRequestAttributes(\n optionsParsed,\n {\n component,\n port,\n hostname,\n hookAttributes: instrumentation._callStartSpanHook(\n optionsParsed,\n instrumentation.getConfig().startOutgoingSpanHook\n ),\n redactedQueryParams: instrumentation.getConfig().redactedQueryParams, // Added config for adding custom query strings\n },\n instrumentation._semconvStability,\n instrumentation.getConfig().enableSyntheticSourceDetection || false\n );\n\n const startTime = hrTime();\n const oldMetricAttributes: Attributes =\n getOutgoingRequestMetricAttributes(attributes);\n\n // request method, server address, and server port are both required span attributes\n const stableMetricAttributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: attributes[ATTR_HTTP_REQUEST_METHOD],\n [ATTR_SERVER_ADDRESS]: attributes[ATTR_SERVER_ADDRESS],\n [ATTR_SERVER_PORT]: attributes[ATTR_SERVER_PORT],\n };\n\n // required if and only if one was sent, same as span requirement\n if (attributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n stableMetricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n attributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n\n // recommended if and only if one was sent, same as span recommendation\n if (attributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n attributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n const spanOptions: SpanOptions = {\n kind: SpanKind.CLIENT,\n attributes,\n };\n const span = instrumentation._startHttpSpan(method, spanOptions);\n\n const parentContext = context.active();\n const requestContext = trace.setSpan(parentContext, span);\n\n if (!optionsParsed.headers) {\n optionsParsed.headers = {};\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 propagation.inject(requestContext, optionsParsed.headers);\n\n return 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] = context.bind(parentContext, cb);\n }\n\n const request: http.ClientRequest = safeExecuteInTheMiddle(\n () => {\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 } else {\n return original.apply(this, [optionsParsed, ...args]);\n }\n },\n error => {\n if (error) {\n instrumentation._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n throw error;\n }\n }\n );\n\n instrumentation._diag.debug(\n `${component} instrumentation outgoingRequest`\n );\n context.bind(parentContext, request);\n return instrumentation._traceClientRequest(\n request,\n span,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n });\n };\n }\n\n private _onServerResponseFinish(\n request: http.IncomingMessage,\n response: http.ServerResponse,\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime\n ) {\n const attributes = getIncomingRequestAttributesOnResponse(\n request,\n response,\n this._semconvStability\n );\n oldMetricAttributes = Object.assign(\n oldMetricAttributes,\n getIncomingRequestMetricAttributesOnResponse(attributes)\n );\n stableMetricAttributes = Object.assign(\n stableMetricAttributes,\n getIncomingStableRequestMetricAttributesOnResponse(attributes)\n );\n\n this._headerCapture.server.captureResponseHeaders(span, header =>\n response.getHeader(header)\n );\n\n span.setAttributes(attributes).setStatus({\n code: parseResponseStatus(SpanKind.SERVER, response.statusCode),\n });\n\n const route = attributes[ATTR_HTTP_ROUTE];\n if (route) {\n span.updateName(`${request.method || 'GET'} ${route}`);\n }\n\n if (this.getConfig().applyCustomAttributesOnSpan) {\n safeExecuteInTheMiddle(\n () =>\n this.getConfig().applyCustomAttributesOnSpan!(\n span,\n request,\n response\n ),\n () => {},\n true\n );\n }\n\n this._closeHttpSpan(\n span,\n SpanKind.SERVER,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _onOutgoingRequestError(\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime,\n error: Err\n ) {\n setSpanWithError(span, error, this._semconvStability);\n stableMetricAttributes[ATTR_ERROR_TYPE] = error.name;\n\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _onServerResponseError(\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime,\n error: Err\n ) {\n setSpanWithError(span, error, this._semconvStability);\n stableMetricAttributes[ATTR_ERROR_TYPE] = error.name;\n\n this._closeHttpSpan(\n span,\n SpanKind.SERVER,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _startHttpSpan(\n name: string,\n options: SpanOptions,\n ctx = context.active()\n ) {\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 =\n options.kind === SpanKind.CLIENT\n ? this.getConfig().requireParentforOutgoingSpans\n : this.getConfig().requireParentforIncomingSpans;\n\n let span: Span;\n const currentSpan = trace.getSpan(ctx);\n\n if (\n requireParent === true &&\n (!currentSpan || !trace.isSpanContextValid(currentSpan.spanContext()))\n ) {\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else if (requireParent === true && currentSpan?.spanContext().isRemote) {\n span = currentSpan;\n } else {\n span = this.tracer.startSpan(name, options, ctx);\n }\n this._spanNotEnded.add(span);\n return span;\n }\n\n private _closeHttpSpan(\n span: Span,\n spanKind: SpanKind,\n startTime: HrTime,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes\n ) {\n if (!this._spanNotEnded.has(span)) {\n return;\n }\n\n span.end();\n this._spanNotEnded.delete(span);\n\n // Record metrics\n const duration = hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime()));\n if (spanKind === SpanKind.SERVER) {\n this._recordServerDuration(\n duration,\n oldMetricAttributes,\n stableMetricAttributes\n );\n } else if (spanKind === SpanKind.CLIENT) {\n this._recordClientDuration(\n duration,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n }\n\n private _callResponseHook(\n span: Span,\n response: http.IncomingMessage | http.ServerResponse\n ) {\n safeExecuteInTheMiddle(\n () => this.getConfig().responseHook!(span, response),\n () => {},\n true\n );\n }\n\n private _callRequestHook(\n span: Span,\n request: http.ClientRequest | http.IncomingMessage\n ) {\n safeExecuteInTheMiddle(\n () => this.getConfig().requestHook!(span, request),\n () => {},\n true\n );\n }\n\n private _callStartSpanHook(\n request: http.IncomingMessage | http.RequestOptions,\n hookFunc: Function | undefined\n ) {\n if (typeof hookFunc === 'function') {\n return safeExecuteInTheMiddle(\n () => hookFunc(request),\n () => {},\n true\n );\n }\n }\n\n private _createHeaderCapture() {\n const config = this.getConfig();\n\n return {\n client: {\n captureRequestHeaders: headerCapture(\n 'request',\n config.headersToSpanAttributes?.client?.requestHeaders ?? []\n ),\n captureResponseHeaders: headerCapture(\n 'response',\n config.headersToSpanAttributes?.client?.responseHeaders ?? []\n ),\n },\n server: {\n captureRequestHeaders: headerCapture(\n 'request',\n config.headersToSpanAttributes?.server?.requestHeaders ?? []\n ),\n captureResponseHeaders: headerCapture(\n 'response',\n config.headersToSpanAttributes?.server?.responseHeaders ?? []\n ),\n },\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/index.d.ts new file mode 100644 index 0000000..64bc6db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { HttpInstrumentation } from './http'; +export type { HttpCustomAttributeFunction, HttpInstrumentationConfig, HttpRequestCustomAttributeFunction, HttpResponseCustomAttributeFunction, IgnoreIncomingRequestFunction, IgnoreOutgoingRequestFunction, StartIncomingSpanCustomAttributeFunction, StartOutgoingSpanCustomAttributeFunction, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/index.js new file mode 100644 index 0000000..dbc103d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HttpInstrumentation = void 0; +var http_1 = require("./http"); +Object.defineProperty(exports, "HttpInstrumentation", { enumerable: true, get: function () { return http_1.HttpInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/index.js.map new file mode 100644 index 0000000..18896dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,+BAA6C;AAApC,2GAAA,mBAAmB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { HttpInstrumentation } from './http';\nexport type {\n HttpCustomAttributeFunction,\n HttpInstrumentationConfig,\n HttpRequestCustomAttributeFunction,\n HttpResponseCustomAttributeFunction,\n IgnoreIncomingRequestFunction,\n IgnoreOutgoingRequestFunction,\n StartIncomingSpanCustomAttributeFunction,\n StartOutgoingSpanCustomAttributeFunction,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.d.ts new file mode 100644 index 0000000..794937b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.d.ts @@ -0,0 +1,42 @@ +/// +/// +/// +import type * as http from 'http'; +import type * as https from 'https'; +import { get, IncomingMessage, request } from 'http'; +import * as url from 'url'; +export type IgnoreMatcher = string | RegExp | ((url: string) => boolean); +export type HttpCallback = (res: IncomingMessage) => void; +export type RequestFunction = typeof request; +export type GetFunction = typeof get; +export type HttpCallbackOptional = HttpCallback | undefined; +export type RequestSignature = [http.RequestOptions, HttpCallbackOptional] & HttpCallback; +export type HttpRequestArgs = Array; +export type ParsedRequestOptions = (http.RequestOptions & Partial) | http.RequestOptions; +export type Http = typeof http; +export type Https = typeof https; +export type Func = (...args: any[]) => T; +export interface Err extends Error { + errno?: number; + code?: string; + path?: string; + syscall?: string; + stack?: string; +} +/** + * Names of possible synthetic test sources. + */ +export declare const SYNTHETIC_TEST_NAMES: string[]; +/** + * Names of possible synthetic bot sources. + */ +export declare const SYNTHETIC_BOT_NAMES: string[]; +/** + * REDACTED string used to replace sensitive information in URLs. + */ +export declare const STR_REDACTED = "REDACTED"; +/** + * List of URL query keys that are considered sensitive and whose value should be redacted. + */ +export declare const DEFAULT_QUERY_STRINGS_TO_REDACT: readonly ["sig", "Signature", "AWSAccessKeyId", "X-Goog-Signature"]; +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.js new file mode 100644 index 0000000..162e7d8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.js @@ -0,0 +1,40 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEFAULT_QUERY_STRINGS_TO_REDACT = exports.STR_REDACTED = exports.SYNTHETIC_BOT_NAMES = exports.SYNTHETIC_TEST_NAMES = void 0; +/** + * Names of possible synthetic test sources. + */ +exports.SYNTHETIC_TEST_NAMES = ['alwayson']; +/** + * Names of possible synthetic bot sources. + */ +exports.SYNTHETIC_BOT_NAMES = ['googlebot', 'bingbot']; +/** + * REDACTED string used to replace sensitive information in URLs. + */ +exports.STR_REDACTED = 'REDACTED'; +/** + * List of URL query keys that are considered sensitive and whose value should be redacted. + */ +exports.DEFAULT_QUERY_STRINGS_TO_REDACT = [ + 'sig', + 'Signature', + 'AWSAccessKeyId', + 'X-Goog-Signature', +]; +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.js.map new file mode 100644 index 0000000..8fedcd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAoCH;;GAEG;AACU,QAAA,oBAAoB,GAAG,CAAC,UAAU,CAAC,CAAC;AAEjD;;GAEG;AACU,QAAA,mBAAmB,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAE5D;;GAEG;AACU,QAAA,YAAY,GAAG,UAAU,CAAC;AAEvC;;GAEG;AACU,QAAA,+BAA+B,GAAG;IAC7C,KAAK;IACL,WAAW;IACX,gBAAgB;IAChB,kBAAkB;CACV,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type * as http from 'http';\nimport type * as https from 'https';\nimport { get, IncomingMessage, request } from 'http';\nimport * as url from 'url';\n\nexport type IgnoreMatcher = string | RegExp | ((url: string) => boolean);\nexport type HttpCallback = (res: IncomingMessage) => void;\nexport type RequestFunction = typeof request;\nexport type GetFunction = typeof get;\n\nexport type HttpCallbackOptional = HttpCallback | undefined;\n\n// from node 10+\nexport type RequestSignature = [http.RequestOptions, HttpCallbackOptional] &\n HttpCallback;\n\nexport type HttpRequestArgs = Array;\n\nexport type ParsedRequestOptions =\n | (http.RequestOptions & Partial)\n | http.RequestOptions;\nexport type Http = typeof http;\nexport type Https = typeof https;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Func = (...args: any[]) => T;\n\nexport interface Err extends Error {\n errno?: number;\n code?: string;\n path?: string;\n syscall?: string;\n stack?: string;\n}\n\n/**\n * Names of possible synthetic test sources.\n */\nexport const SYNTHETIC_TEST_NAMES = ['alwayson'];\n\n/**\n * Names of possible synthetic bot sources.\n */\nexport const SYNTHETIC_BOT_NAMES = ['googlebot', 'bingbot'];\n\n/**\n * REDACTED string used to replace sensitive information in URLs.\n */\nexport const STR_REDACTED = 'REDACTED';\n\n/**\n * List of URL query keys that are considered sensitive and whose value should be redacted.\n */\nexport const DEFAULT_QUERY_STRINGS_TO_REDACT = [\n 'sig',\n 'Signature',\n 'AWSAccessKeyId',\n 'X-Goog-Signature',\n] as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/semconv.d.ts new file mode 100644 index 0000000..a9bb5fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/semconv.d.ts @@ -0,0 +1,239 @@ +/** + * Specifies the category of synthetic traffic, such as tests or bots. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_SYNTHETIC_TYPE: "user_agent.synthetic.type"; +/** + * Enum value "bot" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + */ +export declare const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT: "bot"; +/** + * Enum value "test" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + */ +export declare const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST: "test"; +/** + * Deprecated, use `client.address` instead. + * + * @example "83.164.160.102" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `client.address`. + */ +export declare const ATTR_HTTP_CLIENT_IP: "http.client_ip"; +/** + * Deprecated, use `network.protocol.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.name`. + */ +export declare const ATTR_HTTP_FLAVOR: "http.flavor"; +/** + * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage. + * + * @example www.example.org + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage. + */ +export declare const ATTR_HTTP_HOST: "http.host"; +/** + * Deprecated, use `http.request.method` instead. + * + * @example GET + * @example POST + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.method`. + */ +export declare const ATTR_HTTP_METHOD: "http.method"; +/** + * Deprecated, use `http.request.header.` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.header.`. + */ +export declare const ATTR_HTTP_REQUEST_CONTENT_LENGTH: "http.request_content_length"; +/** + * Deprecated, use `http.request.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.body.size`. + */ +export declare const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: "http.request_content_length_uncompressed"; +/** + * Deprecated, use `http.response.header.` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.header.`. + */ +export declare const ATTR_HTTP_RESPONSE_CONTENT_LENGTH: "http.response_content_length"; +/** + * Deprecated, use `http.response.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replace by `http.response.body.size`. + */ +export declare const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: "http.response_content_length_uncompressed"; +/** + * Deprecated, use `url.scheme` instead. + * + * @example http + * @example https + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.scheme` instead. + */ +export declare const ATTR_HTTP_SCHEME: "http.scheme"; +/** + * Deprecated, use `server.address` instead. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_HTTP_SERVER_NAME: "http.server_name"; +/** + * Deprecated, use `http.response.status_code` instead. + * + * @example 200 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.status_code`. + */ +export declare const ATTR_HTTP_STATUS_CODE: "http.status_code"; +/** + * Deprecated, use `url.path` and `url.query` instead. + * + * @example /search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `url.path` and `url.query. + */ +export declare const ATTR_HTTP_TARGET: "http.target"; +/** + * Deprecated, use `url.full` instead. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.full`. + */ +export declare const ATTR_HTTP_URL: "http.url"; +/** + * Deprecated, use `user_agent.original` instead. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `user_agent.original`. + */ +export declare const ATTR_HTTP_USER_AGENT: "http.user_agent"; +/** + * Deprecated, use `network.local.address`. + * + * @example "192.168.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export declare const ATTR_NET_HOST_IP: "net.host.ip"; +/** + * Deprecated, use `server.address`. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_NET_HOST_NAME: "net.host.name"; +/** + * Deprecated, use `server.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port`. + */ +export declare const ATTR_NET_HOST_PORT: "net.host.port"; +/** + * Deprecated, use `network.peer.address`. + * + * @example "127.0.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export declare const ATTR_NET_PEER_IP: "net.peer.ip"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Deprecated, use `network.transport`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.transport`. + */ +export declare const ATTR_NET_TRANSPORT: "net.transport"; +/** + * Enum value "ip_tcp" for attribute {@link ATTR_NET_TRANSPORT}. + */ +export declare const NET_TRANSPORT_VALUE_IP_TCP: "ip_tcp"; +/** + * Enum value "ip_udp" for attribute {@link ATTR_NET_TRANSPORT}. + */ +export declare const NET_TRANSPORT_VALUE_IP_UDP: "ip_udp"; +/** + * Enum value "1.1" for attribute {@link ATTR_HTTP_FLAVOR}. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_1_1: "1.1"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/semconv.js new file mode 100644 index 0000000..c98952b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/semconv.js @@ -0,0 +1,262 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Specifies the category of synthetic traffic, such as tests or bots. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type'; +/** + * Enum value "bot" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + */ +exports.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = 'bot'; +/** + * Enum value "test" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + */ +exports.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = 'test'; +/** + * Deprecated, use `client.address` instead. + * + * @example "83.164.160.102" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `client.address`. + */ +exports.ATTR_HTTP_CLIENT_IP = 'http.client_ip'; +/** + * Deprecated, use `network.protocol.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.name`. + */ +exports.ATTR_HTTP_FLAVOR = 'http.flavor'; +/** + * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage. + * + * @example www.example.org + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage. + */ +exports.ATTR_HTTP_HOST = 'http.host'; +/** + * Deprecated, use `http.request.method` instead. + * + * @example GET + * @example POST + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.method`. + */ +exports.ATTR_HTTP_METHOD = 'http.method'; +/** + * Deprecated, use `http.request.header.` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.header.`. + */ +exports.ATTR_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length'; +/** + * Deprecated, use `http.request.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.body.size`. + */ +exports.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed'; +/** + * Deprecated, use `http.response.header.` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.header.`. + */ +exports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length'; +/** + * Deprecated, use `http.response.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replace by `http.response.body.size`. + */ +exports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed'; +/** + * Deprecated, use `url.scheme` instead. + * + * @example http + * @example https + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.scheme` instead. + */ +exports.ATTR_HTTP_SCHEME = 'http.scheme'; +/** + * Deprecated, use `server.address` instead. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +exports.ATTR_HTTP_SERVER_NAME = 'http.server_name'; +/** + * Deprecated, use `http.response.status_code` instead. + * + * @example 200 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.status_code`. + */ +exports.ATTR_HTTP_STATUS_CODE = 'http.status_code'; +/** + * Deprecated, use `url.path` and `url.query` instead. + * + * @example /search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `url.path` and `url.query. + */ +exports.ATTR_HTTP_TARGET = 'http.target'; +/** + * Deprecated, use `url.full` instead. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.full`. + */ +exports.ATTR_HTTP_URL = 'http.url'; +/** + * Deprecated, use `user_agent.original` instead. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `user_agent.original`. + */ +exports.ATTR_HTTP_USER_AGENT = 'http.user_agent'; +/** + * Deprecated, use `network.local.address`. + * + * @example "192.168.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +exports.ATTR_NET_HOST_IP = 'net.host.ip'; +/** + * Deprecated, use `server.address`. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +exports.ATTR_NET_HOST_NAME = 'net.host.name'; +/** + * Deprecated, use `server.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port`. + */ +exports.ATTR_NET_HOST_PORT = 'net.host.port'; +/** + * Deprecated, use `network.peer.address`. + * + * @example "127.0.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +exports.ATTR_NET_PEER_IP = 'net.peer.ip'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Deprecated, use `network.transport`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.transport`. + */ +exports.ATTR_NET_TRANSPORT = 'net.transport'; +/** + * Enum value "ip_tcp" for attribute {@link ATTR_NET_TRANSPORT}. + */ +exports.NET_TRANSPORT_VALUE_IP_TCP = 'ip_tcp'; +/** + * Enum value "ip_udp" for attribute {@link ATTR_NET_TRANSPORT}. + */ +exports.NET_TRANSPORT_VALUE_IP_UDP = 'ip_udp'; +/** + * Enum value "1.1" for attribute {@link ATTR_HTTP_FLAVOR}. + */ +exports.HTTP_FLAVOR_VALUE_HTTP_1_1 = '1.1'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/semconv.js.map new file mode 100644 index 0000000..2d91f4e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AACU,QAAA,8BAA8B,GACzC,2BAAoC,CAAC;AAEvC;;GAEG;AACU,QAAA,mCAAmC,GAAG,KAAc,CAAC;AAElE;;GAEG;AACU,QAAA,oCAAoC,GAAG,MAAe,CAAC;AAEpE;;;;;;;;GAQG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;;GAUG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,gCAAgC,GAC3C,6BAAsC,CAAC;AAEzC;;;;;;;;GAQG;AACU,QAAA,6CAA6C,GACxD,0CAAmD,CAAC;AAEtD;;;;;;;;GAQG;AACU,QAAA,iCAAiC,GAC5C,8BAAuC,CAAC;AAE1C;;;;;;;;GAQG;AACU,QAAA,8CAA8C,GACzD,2CAAoD,CAAC;AAEvD;;;;;;;;;GASG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;;;;GASG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;GAQG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;GAEG;AACU,QAAA,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;GAEG;AACU,QAAA,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;GAEG;AACU,QAAA,0BAA0B,GAAG,KAAc,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_USER_AGENT_SYNTHETIC_TYPE =\n 'user_agent.synthetic.type' as const;\n\n/**\n * Enum value \"bot\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = 'bot' as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = 'test' as const;\n\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 */\nexport const ATTR_HTTP_CLIENT_IP = 'http.client_ip' as const;\n\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 */\nexport const ATTR_HTTP_FLAVOR = 'http.flavor' as const;\n\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 */\nexport const ATTR_HTTP_HOST = 'http.host' as const;\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 */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH =\n 'http.request_content_length' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.request_content_length_uncompressed' as const;\n\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 */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH =\n 'http.response_content_length' as const;\n\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 */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.response_content_length_uncompressed' as const;\n\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 */\nexport const ATTR_HTTP_SCHEME = 'http.scheme' as const;\n\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 */\nexport const ATTR_HTTP_SERVER_NAME = 'http.server_name' as const;\n\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 */\nexport const ATTR_HTTP_STATUS_CODE = 'http.status_code' as const;\n\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 */\nexport const ATTR_HTTP_TARGET = 'http.target' as const;\n\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 */\nexport const ATTR_HTTP_URL = 'http.url' as const;\n\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 */\nexport const ATTR_HTTP_USER_AGENT = 'http.user_agent' as const;\n\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 */\nexport const ATTR_NET_HOST_IP = 'net.host.ip' as const;\n\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 */\nexport const ATTR_NET_HOST_NAME = 'net.host.name' as const;\n\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 */\nexport const ATTR_NET_HOST_PORT = 'net.host.port' as const;\n\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 */\nexport const ATTR_NET_PEER_IP = 'net.peer.ip' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\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 */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"ip_tcp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_IP_TCP = 'ip_tcp' as const;\n\n/**\n * Enum value \"ip_udp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_IP_UDP = 'ip_udp' as const;\n\n/**\n * Enum value \"1.1\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_1 = '1.1' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/types.d.ts new file mode 100644 index 0000000..049712f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/types.d.ts @@ -0,0 +1,79 @@ +/// +import { Span, Attributes } from '@opentelemetry/api'; +import { ClientRequest, IncomingMessage, ServerResponse, RequestOptions } from 'http'; +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export interface HttpCustomAttributeFunction { + (span: Span, request: ClientRequest | IncomingMessage, response: IncomingMessage | ServerResponse): void; +} +export interface IgnoreIncomingRequestFunction { + (request: IncomingMessage): boolean; +} +export interface IgnoreOutgoingRequestFunction { + (request: RequestOptions): boolean; +} +export interface HttpRequestCustomAttributeFunction { + (span: Span, request: ClientRequest | IncomingMessage): void; +} +export interface HttpResponseCustomAttributeFunction { + (span: Span, response: IncomingMessage | ServerResponse): void; +} +export interface StartIncomingSpanCustomAttributeFunction { + (request: IncomingMessage): Attributes; +} +export interface StartOutgoingSpanCustomAttributeFunction { + (request: RequestOptions): Attributes; +} +/** + * Options available for the HTTP instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http#http-instrumentation-options)) + */ +export interface HttpInstrumentationConfig extends InstrumentationConfig { + /** Not trace all incoming requests that matched with custom function */ + ignoreIncomingRequestHook?: IgnoreIncomingRequestFunction; + /** Not trace all outgoing requests that matched with custom function */ + ignoreOutgoingRequestHook?: IgnoreOutgoingRequestFunction; + /** If set to true, incoming requests will not be instrumented at all. */ + disableIncomingRequestInstrumentation?: boolean; + /** If set to true, outgoing requests will not be instrumented at all. */ + disableOutgoingRequestInstrumentation?: boolean; + /** Function for adding custom attributes after response is handled */ + applyCustomAttributesOnSpan?: HttpCustomAttributeFunction; + /** Function for adding custom attributes before request is handled */ + requestHook?: HttpRequestCustomAttributeFunction; + /** Function for adding custom attributes before response is handled */ + responseHook?: HttpResponseCustomAttributeFunction; + /** Function for adding custom attributes before a span is started in incomingRequest */ + startIncomingSpanHook?: StartIncomingSpanCustomAttributeFunction; + /** Function for adding custom attributes before a span is started in outgoingRequest */ + startOutgoingSpanHook?: StartOutgoingSpanCustomAttributeFunction; + /** The primary server name of the matched virtual host. */ + serverName?: string; + /** Require parent to create span for outgoing requests */ + requireParentforOutgoingSpans?: boolean; + /** Require parent to create span for incoming requests */ + requireParentforIncomingSpans?: boolean; + /** Map the following HTTP headers to span attributes. */ + headersToSpanAttributes?: { + client?: { + requestHeaders?: string[]; + responseHeaders?: string[]; + }; + server?: { + requestHeaders?: string[]; + responseHeaders?: string[]; + }; + }; + /** + * Enable automatic population of synthetic source type based on the user-agent header + * @experimental + **/ + enableSyntheticSourceDetection?: boolean; + /** + * [Optional] Additional query parameters to redact. + * Use this to specify custom query strings that contain sensitive information. + * These will replace/overwrite the default query strings that are to be redacted. + * @example default strings ['sig','Signature','AWSAccessKeyId','X-Goog-Signature'] + * @experimental + */ + redactedQueryParams?: string[]; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/types.js new file mode 100644 index 0000000..11e638d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/types.js.map new file mode 100644 index 0000000..17a5ae8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Span, Attributes } from '@opentelemetry/api';\nimport {\n ClientRequest,\n IncomingMessage,\n ServerResponse,\n RequestOptions,\n} from 'http';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface HttpCustomAttributeFunction {\n (\n span: Span,\n request: ClientRequest | IncomingMessage,\n response: IncomingMessage | ServerResponse\n ): void;\n}\n\nexport interface IgnoreIncomingRequestFunction {\n (request: IncomingMessage): boolean;\n}\n\nexport interface IgnoreOutgoingRequestFunction {\n (request: RequestOptions): boolean;\n}\n\nexport interface HttpRequestCustomAttributeFunction {\n (span: Span, request: ClientRequest | IncomingMessage): void;\n}\n\nexport interface HttpResponseCustomAttributeFunction {\n (span: Span, response: IncomingMessage | ServerResponse): void;\n}\n\nexport interface StartIncomingSpanCustomAttributeFunction {\n (request: IncomingMessage): Attributes;\n}\n\nexport interface StartOutgoingSpanCustomAttributeFunction {\n (request: RequestOptions): Attributes;\n}\n\n/**\n * Options available for the HTTP instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http#http-instrumentation-options))\n */\nexport interface HttpInstrumentationConfig extends InstrumentationConfig {\n /** Not trace all incoming requests that matched with custom function */\n ignoreIncomingRequestHook?: IgnoreIncomingRequestFunction;\n /** Not trace all outgoing requests that matched with custom function */\n ignoreOutgoingRequestHook?: IgnoreOutgoingRequestFunction;\n /** If set to true, incoming requests will not be instrumented at all. */\n disableIncomingRequestInstrumentation?: boolean;\n /** If set to true, outgoing requests will not be instrumented at all. */\n disableOutgoingRequestInstrumentation?: boolean;\n /** Function for adding custom attributes after response is handled */\n applyCustomAttributesOnSpan?: HttpCustomAttributeFunction;\n /** Function for adding custom attributes before request is handled */\n requestHook?: HttpRequestCustomAttributeFunction;\n /** Function for adding custom attributes before response is handled */\n responseHook?: HttpResponseCustomAttributeFunction;\n /** Function for adding custom attributes before a span is started in incomingRequest */\n startIncomingSpanHook?: StartIncomingSpanCustomAttributeFunction;\n /** Function for adding custom attributes before a span is started in outgoingRequest */\n startOutgoingSpanHook?: StartOutgoingSpanCustomAttributeFunction;\n /** The primary server name of the matched virtual host. */\n serverName?: string;\n /** Require parent to create span for outgoing requests */\n requireParentforOutgoingSpans?: boolean;\n /** Require parent to create span for incoming requests */\n requireParentforIncomingSpans?: boolean;\n /** Map the following HTTP headers to span attributes. */\n headersToSpanAttributes?: {\n client?: { requestHeaders?: string[]; responseHeaders?: string[] };\n server?: { requestHeaders?: string[]; responseHeaders?: string[] };\n };\n /**\n * Enable automatic population of synthetic source type based on the user-agent header\n * @experimental\n **/\n enableSyntheticSourceDetection?: boolean;\n /**\n * [Optional] Additional query parameters to redact.\n * Use this to specify custom query strings that contain sensitive information.\n * These will replace/overwrite the default query strings that are to be redacted.\n * @example default strings ['sig','Signature','AWSAccessKeyId','X-Goog-Signature']\n * @experimental\n */\n redactedQueryParams?: string[];\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/utils.d.ts new file mode 100644 index 0000000..808858f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/utils.d.ts @@ -0,0 +1,141 @@ +/// +import { Attributes, SpanStatusCode, Span, SpanKind, DiagLogger } from '@opentelemetry/api'; +import { IncomingHttpHeaders, IncomingMessage, OutgoingHttpHeaders, RequestOptions, ServerResponse } from 'http'; +import { SemconvStability } from '@opentelemetry/instrumentation'; +import * as url from 'url'; +import { Err, IgnoreMatcher, ParsedRequestOptions } from './internal-types'; +/** + * Get an absolute url + */ +export declare const getAbsoluteUrl: (requestUrl: ParsedRequestOptions | null, headers: IncomingHttpHeaders | OutgoingHttpHeaders, fallbackProtocol?: string, redactedQueryParams?: string[]) => string; +/** + * Parse status code from HTTP response. [More details](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-http.md#status) + */ +export declare const parseResponseStatus: (kind: SpanKind, statusCode?: number) => SpanStatusCode; +/** + * Check whether the given obj match pattern + * @param constant e.g URL of request + * @param pattern Match pattern + */ +export declare const satisfiesPattern: (constant: string, pattern: IgnoreMatcher) => boolean; +/** + * Sets the span with the error passed in params + * @param {Span} span the span that need to be set + * @param {Error} error error that will be set to span + * @param {SemconvStability} semconvStability determines which semconv version to use + */ +export declare const setSpanWithError: (span: Span, error: Err, semconvStability: SemconvStability) => void; +/** + * Adds attributes for request content-length and content-encoding HTTP headers + * @param { IncomingMessage } Request object whose headers will be analyzed + * @param { Attributes } Attributes object to be modified + */ +export declare const setRequestContentLengthAttribute: (request: IncomingMessage, attributes: Attributes) => void; +/** + * Adds attributes for response content-length and content-encoding HTTP headers + * @param { IncomingMessage } Response object whose headers will be analyzed + * @param { Attributes } Attributes object to be modified + * + * @deprecated this is for an older version of semconv. It is retained for compatibility using OTEL_SEMCONV_STABILITY_OPT_IN + */ +export declare const setResponseContentLengthAttribute: (response: IncomingMessage, attributes: Attributes) => void; +export declare const isCompressed: (headers: OutgoingHttpHeaders | IncomingHttpHeaders) => boolean; +/** + * Makes sure options is an url object + * return an object with default value and parsed options + * @param logger component logger + * @param options original options for the request + * @param [extraOptions] additional options for the request + */ +export declare const getRequestInfo: (logger: DiagLogger, options: url.URL | RequestOptions | string, extraOptions?: RequestOptions) => { + origin: string; + pathname: string; + method: string; + invalidUrl: boolean; + optionsParsed: RequestOptions; +}; +/** + * Makes sure options is of type string or object + * @param options for the request + */ +export declare const isValidOptionsType: (options: unknown) => boolean; +export declare const extractHostnameAndPort: (requestOptions: Pick) => { + hostname: string; + port: number | string; +}; +/** + * Returns outgoing request attributes scoped to the options passed to the request + * @param {ParsedRequestOptions} requestOptions the same options used to make the request + * @param {{ component: string, hostname: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes + * @param {SemconvStability} semconvStability determines which semconv version to use + */ +export declare const getOutgoingRequestAttributes: (requestOptions: ParsedRequestOptions, options: { + component: string; + hostname: string; + port: string | number; + hookAttributes?: Attributes; + redactedQueryParams?: string[]; +}, semconvStability: SemconvStability, enableSyntheticSourceDetection: boolean) => Attributes; +/** + * Returns outgoing request Metric attributes scoped to the request data + * @param {Attributes} spanAttributes the span attributes + */ +export declare const getOutgoingRequestMetricAttributes: (spanAttributes: Attributes) => Attributes; +/** + * Returns attributes related to the kind of HTTP protocol used + * @param {string} [kind] Kind of HTTP protocol used: "1.0", "1.1", "2", "SPDY" or "QUIC". + */ +export declare const setAttributesFromHttpKind: (kind: string | undefined, attributes: Attributes) => void; +/** + * Returns outgoing request attributes scoped to the response data + * @param {IncomingMessage} response the response object + * @param {SemconvStability} semconvStability determines which semconv version to use + */ +export declare const getOutgoingRequestAttributesOnResponse: (response: IncomingMessage, semconvStability: SemconvStability) => Attributes; +/** + * Returns outgoing request Metric attributes scoped to the response data + * @param {Attributes} spanAttributes the span attributes + */ +export declare const getOutgoingRequestMetricAttributesOnResponse: (spanAttributes: Attributes) => Attributes; +export declare const getOutgoingStableRequestMetricAttributesOnResponse: (spanAttributes: Attributes) => Attributes; +/** + * Get server.address and port according to http semconv 1.27 + * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes + */ +export declare function getRemoteClientAddress(request: IncomingMessage): string | null; +/** + * Returns incoming request attributes scoped to the request data + * @param {IncomingMessage} request the request object + * @param {{ component: string, serverName?: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes + * @param {SemconvStability} semconvStability determines which semconv version to use + */ +export declare const getIncomingRequestAttributes: (request: IncomingMessage, options: { + component: 'http' | 'https'; + serverName?: string; + hookAttributes?: Attributes; + semconvStability: SemconvStability; + enableSyntheticSourceDetection: boolean; +}, logger: DiagLogger) => Attributes; +/** + * Returns incoming request Metric attributes scoped to the request data + * @param {Attributes} spanAttributes the span attributes + * @param {{ component: string }} options used to pass data needed to create attributes + */ +export declare const getIncomingRequestMetricAttributes: (spanAttributes: Attributes) => Attributes; +/** + * Returns incoming request attributes scoped to the response data + * @param {(ServerResponse & { socket: Socket; })} response the response object + */ +export declare const getIncomingRequestAttributesOnResponse: (request: IncomingMessage, response: ServerResponse, semconvStability: SemconvStability) => Attributes; +/** + * Returns incoming request Metric attributes scoped to the request data + * @param {Attributes} spanAttributes the span attributes + */ +export declare const getIncomingRequestMetricAttributesOnResponse: (spanAttributes: Attributes) => Attributes; +/** + * Returns incoming stable request Metric attributes scoped to the request data + * @param {Attributes} spanAttributes the span attributes + */ +export declare const getIncomingStableRequestMetricAttributesOnResponse: (spanAttributes: Attributes) => Attributes; +export declare function headerCapture(type: 'request' | 'response', headers: string[]): (span: Span, getHeader: (key: string) => undefined | string | string[] | number) => void; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/utils.js new file mode 100644 index 0000000..74bbfe6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/utils.js @@ -0,0 +1,861 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const api_1 = require("@opentelemetry/api"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +const core_1 = require("@opentelemetry/core"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const url = require("url"); +const AttributeNames_1 = require("./enums/AttributeNames"); +const internal_types_1 = require("./internal-types"); +const internal_types_2 = require("./internal-types"); +// eslint-disable-next-line @typescript-eslint/no-require-imports +const forwardedParse = require("forwarded-parse"); +/** + * Get an absolute url + */ +const getAbsoluteUrl = (requestUrl, headers, fallbackProtocol = 'http:', redactedQueryParams = Array.from(internal_types_2.DEFAULT_QUERY_STRINGS_TO_REDACT)) => { + const reqUrlObject = requestUrl || {}; + const protocol = reqUrlObject.protocol || fallbackProtocol; + const port = (reqUrlObject.port || '').toString(); + let path = reqUrlObject.path || '/'; + let host = reqUrlObject.host || reqUrlObject.hostname || headers.host || 'localhost'; + // if there is no port in host and there is a port + // it should be displayed if it's not 80 and 443 (default ports) + if (host.indexOf(':') === -1 && + port && + port !== '80' && + port !== '443') { + host += `:${port}`; + } + // Redact sensitive query parameters + if (path.includes('?')) { + try { + const parsedUrl = new URL(path, 'http://localhost'); + const sensitiveParamsToRedact = redactedQueryParams || []; + for (const sensitiveParam of sensitiveParamsToRedact) { + if (parsedUrl.searchParams.get(sensitiveParam)) { + parsedUrl.searchParams.set(sensitiveParam, internal_types_2.STR_REDACTED); + } + } + path = `${parsedUrl.pathname}${parsedUrl.search}`; + } + catch { + // Ignore error, as the path was not a valid URL. + } + } + const authPart = reqUrlObject.auth ? `${internal_types_2.STR_REDACTED}:${internal_types_2.STR_REDACTED}@` : ''; + return `${protocol}//${authPart}${host}${path}`; +}; +exports.getAbsoluteUrl = getAbsoluteUrl; +/** + * Parse status code from HTTP response. [More details](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-http.md#status) + */ +const parseResponseStatus = (kind, statusCode) => { + const upperBound = kind === api_1.SpanKind.CLIENT ? 400 : 500; + // 1xx, 2xx, 3xx are OK on client and server + // 4xx is OK on server + if (statusCode && statusCode >= 100 && statusCode < upperBound) { + return api_1.SpanStatusCode.UNSET; + } + // All other codes are error + return api_1.SpanStatusCode.ERROR; +}; +exports.parseResponseStatus = parseResponseStatus; +/** + * Check whether the given obj match pattern + * @param constant e.g URL of request + * @param pattern Match pattern + */ +const satisfiesPattern = (constant, pattern) => { + if (typeof pattern === 'string') { + return pattern === constant; + } + else if (pattern instanceof RegExp) { + return pattern.test(constant); + } + else if (typeof pattern === 'function') { + return pattern(constant); + } + else { + throw new TypeError('Pattern is in unsupported datatype'); + } +}; +exports.satisfiesPattern = satisfiesPattern; +/** + * Sets the span with the error passed in params + * @param {Span} span the span that need to be set + * @param {Error} error error that will be set to span + * @param {SemconvStability} semconvStability determines which semconv version to use + */ +const setSpanWithError = (span, error, semconvStability) => { + const message = error.message; + if (semconvStability & instrumentation_1.SemconvStability.OLD) { + span.setAttribute(AttributeNames_1.AttributeNames.HTTP_ERROR_NAME, error.name); + span.setAttribute(AttributeNames_1.AttributeNames.HTTP_ERROR_MESSAGE, message); + } + if (semconvStability & instrumentation_1.SemconvStability.STABLE) { + span.setAttribute(semantic_conventions_1.ATTR_ERROR_TYPE, error.name); + } + span.setStatus({ code: api_1.SpanStatusCode.ERROR, message }); + span.recordException(error); +}; +exports.setSpanWithError = setSpanWithError; +/** + * Adds attributes for request content-length and content-encoding HTTP headers + * @param { IncomingMessage } Request object whose headers will be analyzed + * @param { Attributes } Attributes object to be modified + */ +const setRequestContentLengthAttribute = (request, attributes) => { + const length = getContentLength(request.headers); + if (length === null) + return; + if ((0, exports.isCompressed)(request.headers)) { + attributes[semconv_1.ATTR_HTTP_REQUEST_CONTENT_LENGTH] = length; + } + else { + attributes[semconv_1.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED] = length; + } +}; +exports.setRequestContentLengthAttribute = setRequestContentLengthAttribute; +/** + * Adds attributes for response content-length and content-encoding HTTP headers + * @param { IncomingMessage } Response object whose headers will be analyzed + * @param { Attributes } Attributes object to be modified + * + * @deprecated this is for an older version of semconv. It is retained for compatibility using OTEL_SEMCONV_STABILITY_OPT_IN + */ +const setResponseContentLengthAttribute = (response, attributes) => { + const length = getContentLength(response.headers); + if (length === null) + return; + if ((0, exports.isCompressed)(response.headers)) { + attributes[semconv_1.ATTR_HTTP_RESPONSE_CONTENT_LENGTH] = length; + } + else { + attributes[semconv_1.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED] = length; + } +}; +exports.setResponseContentLengthAttribute = setResponseContentLengthAttribute; +function getContentLength(headers) { + const contentLengthHeader = headers['content-length']; + if (contentLengthHeader === undefined) + return null; + const contentLength = parseInt(contentLengthHeader, 10); + if (isNaN(contentLength)) + return null; + return contentLength; +} +const isCompressed = (headers) => { + const encoding = headers['content-encoding']; + return !!encoding && encoding !== 'identity'; +}; +exports.isCompressed = isCompressed; +/** + * Mimics Node.js conversion of URL strings to RequestOptions expected by + * `http.request` and `https.request` APIs. + * + * See https://github.com/nodejs/node/blob/2505e217bba05fc581b572c685c5cf280a16c5a3/lib/internal/url.js#L1415-L1437 + * + * @param stringUrl + * @throws TypeError if the URL is not valid. + */ +function stringUrlToHttpOptions(stringUrl) { + // This is heavily inspired by Node.js handling of the same situation, trying + // to follow it as closely as possible while keeping in mind that we only + // deal with string URLs, not URL objects. + const { hostname, pathname, port, username, password, search, protocol, hash, href, origin, host, } = new URL(stringUrl); + const options = { + protocol: protocol, + hostname: hostname && hostname[0] === '[' ? hostname.slice(1, -1) : hostname, + hash: hash, + search: search, + pathname: pathname, + path: `${pathname || ''}${search || ''}`, + href: href, + origin: origin, + host: host, + }; + if (port !== '') { + options.port = Number(port); + } + if (username || password) { + options.auth = `${decodeURIComponent(username)}:${decodeURIComponent(password)}`; + } + return options; +} +/** + * Makes sure options is an url object + * return an object with default value and parsed options + * @param logger component logger + * @param options original options for the request + * @param [extraOptions] additional options for the request + */ +const getRequestInfo = (logger, options, extraOptions) => { + let pathname; + let origin; + let optionsParsed; + let invalidUrl = false; + if (typeof options === 'string') { + try { + const convertedOptions = stringUrlToHttpOptions(options); + optionsParsed = convertedOptions; + pathname = convertedOptions.pathname || '/'; + } + catch (e) { + invalidUrl = true; + logger.verbose('Unable to parse URL provided to HTTP request, using fallback to determine path. Original error:', e); + // for backward compatibility with how url.parse() behaved. + optionsParsed = { + path: options, + }; + pathname = optionsParsed.path || '/'; + } + origin = `${optionsParsed.protocol || 'http:'}//${optionsParsed.host}`; + if (extraOptions !== undefined) { + Object.assign(optionsParsed, extraOptions); + } + } + else if (options instanceof url.URL) { + optionsParsed = { + protocol: options.protocol, + hostname: typeof options.hostname === 'string' && options.hostname.startsWith('[') + ? options.hostname.slice(1, -1) + : options.hostname, + path: `${options.pathname || ''}${options.search || ''}`, + }; + if (options.port !== '') { + optionsParsed.port = Number(options.port); + } + if (options.username || options.password) { + optionsParsed.auth = `${options.username}:${options.password}`; + } + pathname = options.pathname; + origin = options.origin; + if (extraOptions !== undefined) { + Object.assign(optionsParsed, extraOptions); + } + } + else { + optionsParsed = Object.assign({ protocol: options.host ? 'http:' : undefined }, options); + const hostname = optionsParsed.host || + (optionsParsed.port != null + ? `${optionsParsed.hostname}${optionsParsed.port}` + : optionsParsed.hostname); + origin = `${optionsParsed.protocol || 'http:'}//${hostname}`; + pathname = options.pathname; + if (!pathname && optionsParsed.path) { + try { + const parsedUrl = new URL(optionsParsed.path, origin); + pathname = parsedUrl.pathname || '/'; + } + catch { + pathname = '/'; + } + } + } + // some packages return method in lowercase.. + // ensure upperCase for consistency + const method = optionsParsed.method + ? optionsParsed.method.toUpperCase() + : 'GET'; + return { origin, pathname, method, optionsParsed, invalidUrl }; +}; +exports.getRequestInfo = getRequestInfo; +/** + * Makes sure options is of type string or object + * @param options for the request + */ +const isValidOptionsType = (options) => { + if (!options) { + return false; + } + const type = typeof options; + return type === 'string' || (type === 'object' && !Array.isArray(options)); +}; +exports.isValidOptionsType = isValidOptionsType; +const extractHostnameAndPort = (requestOptions) => { + if (requestOptions.hostname && requestOptions.port) { + return { hostname: requestOptions.hostname, port: requestOptions.port }; + } + const matches = requestOptions.host?.match(/^([^:/ ]+)(:\d{1,5})?/) || null; + const hostname = requestOptions.hostname || (matches === null ? 'localhost' : matches[1]); + let port = requestOptions.port; + if (!port) { + if (matches && matches[2]) { + // remove the leading ":". The extracted port would be something like ":8080" + port = matches[2].substring(1); + } + else { + port = requestOptions.protocol === 'https:' ? '443' : '80'; + } + } + return { hostname, port }; +}; +exports.extractHostnameAndPort = extractHostnameAndPort; +/** + * Returns outgoing request attributes scoped to the options passed to the request + * @param {ParsedRequestOptions} requestOptions the same options used to make the request + * @param {{ component: string, hostname: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes + * @param {SemconvStability} semconvStability determines which semconv version to use + */ +const getOutgoingRequestAttributes = (requestOptions, options, semconvStability, enableSyntheticSourceDetection) => { + const hostname = options.hostname; + const port = options.port; + const method = requestOptions.method ?? 'GET'; + const normalizedMethod = normalizeMethod(method); + const headers = (requestOptions.headers || {}); + const userAgent = headers['user-agent']; + const urlFull = (0, exports.getAbsoluteUrl)(requestOptions, headers, `${options.component}:`, options.redactedQueryParams); + const oldAttributes = { + [semconv_1.ATTR_HTTP_URL]: urlFull, + [semconv_1.ATTR_HTTP_METHOD]: method, + [semconv_1.ATTR_HTTP_TARGET]: requestOptions.path || '/', + [semconv_1.ATTR_NET_PEER_NAME]: hostname, + [semconv_1.ATTR_HTTP_HOST]: headers.host ?? `${hostname}:${port}`, + }; + const newAttributes = { + // Required attributes + [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: normalizedMethod, + [semantic_conventions_1.ATTR_SERVER_ADDRESS]: hostname, + [semantic_conventions_1.ATTR_SERVER_PORT]: Number(port), + [semantic_conventions_1.ATTR_URL_FULL]: urlFull, + [semantic_conventions_1.ATTR_USER_AGENT_ORIGINAL]: userAgent, + // leaving out protocol version, it is not yet negotiated + // leaving out protocol name, it is only required when protocol version is set + // retries and redirects not supported + // Opt-in attributes left off for now + }; + // conditionally required if request method required case normalization + if (method !== normalizedMethod) { + newAttributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method; + } + if (enableSyntheticSourceDetection && userAgent) { + newAttributes[semconv_1.ATTR_USER_AGENT_SYNTHETIC_TYPE] = getSyntheticType(userAgent); + } + if (userAgent !== undefined) { + oldAttributes[semconv_1.ATTR_HTTP_USER_AGENT] = userAgent; + } + switch (semconvStability) { + case instrumentation_1.SemconvStability.STABLE: + return Object.assign(newAttributes, options.hookAttributes); + case instrumentation_1.SemconvStability.OLD: + return Object.assign(oldAttributes, options.hookAttributes); + } + return Object.assign(oldAttributes, newAttributes, options.hookAttributes); +}; +exports.getOutgoingRequestAttributes = getOutgoingRequestAttributes; +/** + * Returns outgoing request Metric attributes scoped to the request data + * @param {Attributes} spanAttributes the span attributes + */ +const getOutgoingRequestMetricAttributes = (spanAttributes) => { + const metricAttributes = {}; + metricAttributes[semconv_1.ATTR_HTTP_METHOD] = spanAttributes[semconv_1.ATTR_HTTP_METHOD]; + metricAttributes[semconv_1.ATTR_NET_PEER_NAME] = spanAttributes[semconv_1.ATTR_NET_PEER_NAME]; + //TODO: http.url attribute, it should substitute any parameters to avoid high cardinality. + return metricAttributes; +}; +exports.getOutgoingRequestMetricAttributes = getOutgoingRequestMetricAttributes; +/** + * Returns attributes related to the kind of HTTP protocol used + * @param {string} [kind] Kind of HTTP protocol used: "1.0", "1.1", "2", "SPDY" or "QUIC". + */ +const setAttributesFromHttpKind = (kind, attributes) => { + if (kind) { + attributes[semconv_1.ATTR_HTTP_FLAVOR] = kind; + if (kind.toUpperCase() !== 'QUIC') { + attributes[semconv_1.ATTR_NET_TRANSPORT] = semconv_1.NET_TRANSPORT_VALUE_IP_TCP; + } + else { + attributes[semconv_1.ATTR_NET_TRANSPORT] = semconv_1.NET_TRANSPORT_VALUE_IP_UDP; + } + } +}; +exports.setAttributesFromHttpKind = setAttributesFromHttpKind; +/** + * Returns the type of synthetic source based on the user agent + * @param {OutgoingHttpHeader} userAgent the user agent string + */ +const getSyntheticType = (userAgent) => { + const userAgentString = String(userAgent).toLowerCase(); + for (const name of internal_types_1.SYNTHETIC_TEST_NAMES) { + if (userAgentString.includes(name)) { + return semconv_1.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST; + } + } + for (const name of internal_types_1.SYNTHETIC_BOT_NAMES) { + if (userAgentString.includes(name)) { + return semconv_1.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT; + } + } + return; +}; +/** + * Returns outgoing request attributes scoped to the response data + * @param {IncomingMessage} response the response object + * @param {SemconvStability} semconvStability determines which semconv version to use + */ +const getOutgoingRequestAttributesOnResponse = (response, semconvStability) => { + const { statusCode, statusMessage, httpVersion, socket } = response; + const oldAttributes = {}; + const stableAttributes = {}; + if (statusCode != null) { + stableAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] = statusCode; + } + if (socket) { + const { remoteAddress, remotePort } = socket; + oldAttributes[semconv_1.ATTR_NET_PEER_IP] = remoteAddress; + oldAttributes[semconv_1.ATTR_NET_PEER_PORT] = remotePort; + // Recommended + stableAttributes[semantic_conventions_1.ATTR_NETWORK_PEER_ADDRESS] = remoteAddress; + stableAttributes[semantic_conventions_1.ATTR_NETWORK_PEER_PORT] = remotePort; + stableAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] = response.httpVersion; + } + (0, exports.setResponseContentLengthAttribute)(response, oldAttributes); + if (statusCode) { + oldAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] = statusCode; + oldAttributes[AttributeNames_1.AttributeNames.HTTP_STATUS_TEXT] = (statusMessage || '').toUpperCase(); + } + (0, exports.setAttributesFromHttpKind)(httpVersion, oldAttributes); + switch (semconvStability) { + case instrumentation_1.SemconvStability.STABLE: + return stableAttributes; + case instrumentation_1.SemconvStability.OLD: + return oldAttributes; + } + return Object.assign(oldAttributes, stableAttributes); +}; +exports.getOutgoingRequestAttributesOnResponse = getOutgoingRequestAttributesOnResponse; +/** + * Returns outgoing request Metric attributes scoped to the response data + * @param {Attributes} spanAttributes the span attributes + */ +const getOutgoingRequestMetricAttributesOnResponse = (spanAttributes) => { + const metricAttributes = {}; + metricAttributes[semconv_1.ATTR_NET_PEER_PORT] = spanAttributes[semconv_1.ATTR_NET_PEER_PORT]; + metricAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] = + spanAttributes[semconv_1.ATTR_HTTP_STATUS_CODE]; + metricAttributes[semconv_1.ATTR_HTTP_FLAVOR] = spanAttributes[semconv_1.ATTR_HTTP_FLAVOR]; + return metricAttributes; +}; +exports.getOutgoingRequestMetricAttributesOnResponse = getOutgoingRequestMetricAttributesOnResponse; +const getOutgoingStableRequestMetricAttributesOnResponse = (spanAttributes) => { + const metricAttributes = {}; + if (spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]) { + metricAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] = + spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]; + } + if (spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]) { + metricAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] = + spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]; + } + return metricAttributes; +}; +exports.getOutgoingStableRequestMetricAttributesOnResponse = getOutgoingStableRequestMetricAttributesOnResponse; +function parseHostHeader(hostHeader, proto) { + const parts = hostHeader.split(':'); + // no semicolon implies ipv4 dotted syntax or host name without port + // x.x.x.x + // example.com + if (parts.length === 1) { + if (proto === 'http') { + return { host: parts[0], port: '80' }; + } + if (proto === 'https') { + return { host: parts[0], port: '443' }; + } + return { host: parts[0] }; + } + // single semicolon implies ipv4 dotted syntax or host name with port + // x.x.x.x:yyyy + // example.com:yyyy + if (parts.length === 2) { + return { + host: parts[0], + port: parts[1], + }; + } + // more than 2 parts implies ipv6 syntax with multiple colons + // [x:x:x:x:x:x:x:x] + // [x:x:x:x:x:x:x:x]:yyyy + if (parts[0].startsWith('[')) { + if (parts[parts.length - 1].endsWith(']')) { + if (proto === 'http') { + return { host: hostHeader, port: '80' }; + } + if (proto === 'https') { + return { host: hostHeader, port: '443' }; + } + } + else if (parts[parts.length - 2].endsWith(']')) { + return { + host: parts.slice(0, -1).join(':'), + port: parts[parts.length - 1], + }; + } + } + // if nothing above matches just return the host header + return { host: hostHeader }; +} +/** + * Get server.address and port according to http semconv 1.27 + * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes + */ +function getServerAddress(request, component) { + const forwardedHeader = request.headers['forwarded']; + if (forwardedHeader) { + for (const entry of parseForwardedHeader(forwardedHeader)) { + if (entry.host) { + return parseHostHeader(entry.host, entry.proto); + } + } + } + const xForwardedHost = request.headers['x-forwarded-host']; + if (typeof xForwardedHost === 'string') { + if (typeof request.headers['x-forwarded-proto'] === 'string') { + return parseHostHeader(xForwardedHost, request.headers['x-forwarded-proto']); + } + if (Array.isArray(request.headers['x-forwarded-proto'])) { + return parseHostHeader(xForwardedHost, request.headers['x-forwarded-proto'][0]); + } + return parseHostHeader(xForwardedHost); + } + else if (Array.isArray(xForwardedHost) && + typeof xForwardedHost[0] === 'string' && + xForwardedHost[0].length > 0) { + if (typeof request.headers['x-forwarded-proto'] === 'string') { + return parseHostHeader(xForwardedHost[0], request.headers['x-forwarded-proto']); + } + if (Array.isArray(request.headers['x-forwarded-proto'])) { + return parseHostHeader(xForwardedHost[0], request.headers['x-forwarded-proto'][0]); + } + return parseHostHeader(xForwardedHost[0]); + } + const host = request.headers['host']; + if (typeof host === 'string' && host.length > 0) { + return parseHostHeader(host, component); + } + return null; +} +/** + * Get server.address and port according to http semconv 1.27 + * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes + */ +function getRemoteClientAddress(request) { + const forwardedHeader = request.headers['forwarded']; + if (forwardedHeader) { + for (const entry of parseForwardedHeader(forwardedHeader)) { + if (entry.for) { + return removePortFromAddress(entry.for); + } + } + } + const xForwardedFor = request.headers['x-forwarded-for']; + if (xForwardedFor) { + let xForwardedForVal; + if (typeof xForwardedFor === 'string') { + xForwardedForVal = xForwardedFor; + } + else if (Array.isArray(xForwardedFor)) { + xForwardedForVal = xForwardedFor[0]; + } + if (typeof xForwardedForVal === 'string') { + xForwardedForVal = xForwardedForVal.split(',')[0].trim(); + return removePortFromAddress(xForwardedForVal); + } + } + const remote = request.socket.remoteAddress; + if (remote) { + return remote; + } + return null; +} +exports.getRemoteClientAddress = getRemoteClientAddress; +function removePortFromAddress(input) { + // This function can be replaced with SocketAddress.parse() once the minimum + // supported Node.js version allows it. + try { + const { hostname: address } = new URL(`http://${input}`); + if (address.startsWith('[') && address.endsWith(']')) { + return address.slice(1, -1); + } + return address; + } + catch { + return input; + } +} +function getInfoFromIncomingMessage(component, request, logger) { + try { + if (request.headers.host) { + return new URL(request.url ?? '/', `${component}://${request.headers.host}`); + } + else { + const unsafeParsedUrl = new URL(request.url ?? '/', + // using localhost as a workaround to still use the URL constructor for parsing + `${component}://localhost`); + // since we use localhost as a workaround, ensure we hide the rest of the properties to avoid + // our workaround leaking though. + return { + pathname: unsafeParsedUrl.pathname, + search: unsafeParsedUrl.search, + toString: function () { + // we cannot use the result of unsafeParsedUrl.toString as it's potentially wrong. + return unsafeParsedUrl.pathname + unsafeParsedUrl.search; + }, + }; + } + } + catch (e) { + // something is wrong, use undefined - this *should* never happen, logging + // for troubleshooting in case it does happen. + logger.verbose('Unable to get URL from request', e); + return {}; + } +} +/** + * Returns incoming request attributes scoped to the request data + * @param {IncomingMessage} request the request object + * @param {{ component: string, serverName?: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes + * @param {SemconvStability} semconvStability determines which semconv version to use + */ +const getIncomingRequestAttributes = (request, options, logger) => { + const { component, enableSyntheticSourceDetection, hookAttributes, semconvStability, serverName, } = options; + const { headers, httpVersion, method } = request; + const { host, 'user-agent': userAgent, 'x-forwarded-for': ips } = headers; + const parsedUrl = getInfoFromIncomingMessage(component, request, logger); + let newAttributes; + let oldAttributes; + if (semconvStability !== instrumentation_1.SemconvStability.OLD) { + // Stable attributes are used. + const normalizedMethod = normalizeMethod(method); + const serverAddress = getServerAddress(request, component); + const remoteClientAddress = getRemoteClientAddress(request); + newAttributes = { + [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: normalizedMethod, + [semantic_conventions_1.ATTR_URL_SCHEME]: component, + [semantic_conventions_1.ATTR_SERVER_ADDRESS]: serverAddress?.host, + [semantic_conventions_1.ATTR_NETWORK_PEER_ADDRESS]: request.socket.remoteAddress, + [semantic_conventions_1.ATTR_NETWORK_PEER_PORT]: request.socket.remotePort, + [semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]: request.httpVersion, + [semantic_conventions_1.ATTR_USER_AGENT_ORIGINAL]: userAgent, + }; + if (parsedUrl.pathname != null) { + newAttributes[semantic_conventions_1.ATTR_URL_PATH] = parsedUrl.pathname; + } + if (parsedUrl.search) { + // Remove leading '?' from URL search (https://developer.mozilla.org/en-US/docs/Web/API/URL/search). + newAttributes[semantic_conventions_1.ATTR_URL_QUERY] = parsedUrl.search.slice(1); + } + if (remoteClientAddress != null) { + newAttributes[semantic_conventions_1.ATTR_CLIENT_ADDRESS] = remoteClientAddress; + } + if (serverAddress?.port != null) { + newAttributes[semantic_conventions_1.ATTR_SERVER_PORT] = Number(serverAddress.port); + } + // Conditionally required if request method required case normalization. + if (method !== normalizedMethod) { + newAttributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method; + } + if (enableSyntheticSourceDetection && userAgent) { + newAttributes[semconv_1.ATTR_USER_AGENT_SYNTHETIC_TYPE] = + getSyntheticType(userAgent); + } + } + if (semconvStability !== instrumentation_1.SemconvStability.STABLE) { + // Old attributes are used. + const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost'; + oldAttributes = { + [semconv_1.ATTR_HTTP_URL]: parsedUrl.toString(), + [semconv_1.ATTR_HTTP_HOST]: host, + [semconv_1.ATTR_NET_HOST_NAME]: hostname, + [semconv_1.ATTR_HTTP_METHOD]: method, + [semconv_1.ATTR_HTTP_SCHEME]: component, + }; + if (typeof ips === 'string') { + oldAttributes[semconv_1.ATTR_HTTP_CLIENT_IP] = ips.split(',')[0]; + } + if (typeof serverName === 'string') { + oldAttributes[semconv_1.ATTR_HTTP_SERVER_NAME] = serverName; + } + if (parsedUrl.pathname) { + oldAttributes[semconv_1.ATTR_HTTP_TARGET] = + parsedUrl.pathname + parsedUrl.search || '/'; + } + if (userAgent !== undefined) { + oldAttributes[semconv_1.ATTR_HTTP_USER_AGENT] = userAgent; + } + (0, exports.setRequestContentLengthAttribute)(request, oldAttributes); + (0, exports.setAttributesFromHttpKind)(httpVersion, oldAttributes); + } + switch (semconvStability) { + case instrumentation_1.SemconvStability.STABLE: + return Object.assign(newAttributes, hookAttributes); + case instrumentation_1.SemconvStability.OLD: + return Object.assign(oldAttributes, hookAttributes); + default: + return Object.assign(oldAttributes, newAttributes, hookAttributes); + } +}; +exports.getIncomingRequestAttributes = getIncomingRequestAttributes; +/** + * Returns incoming request Metric attributes scoped to the request data + * @param {Attributes} spanAttributes the span attributes + * @param {{ component: string }} options used to pass data needed to create attributes + */ +const getIncomingRequestMetricAttributes = (spanAttributes) => { + const metricAttributes = {}; + metricAttributes[semconv_1.ATTR_HTTP_SCHEME] = spanAttributes[semconv_1.ATTR_HTTP_SCHEME]; + metricAttributes[semconv_1.ATTR_HTTP_METHOD] = spanAttributes[semconv_1.ATTR_HTTP_METHOD]; + metricAttributes[semconv_1.ATTR_NET_HOST_NAME] = spanAttributes[semconv_1.ATTR_NET_HOST_NAME]; + metricAttributes[semconv_1.ATTR_HTTP_FLAVOR] = spanAttributes[semconv_1.ATTR_HTTP_FLAVOR]; + //TODO: http.target attribute, it should substitute any parameters to avoid high cardinality. + return metricAttributes; +}; +exports.getIncomingRequestMetricAttributes = getIncomingRequestMetricAttributes; +/** + * Returns incoming request attributes scoped to the response data + * @param {(ServerResponse & { socket: Socket; })} response the response object + */ +const getIncomingRequestAttributesOnResponse = (request, response, semconvStability) => { + // take socket from the request, + // since it may be detached from the response object in keep-alive mode + const { socket } = request; + const { statusCode, statusMessage } = response; + const newAttributes = { + [semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode, + }; + const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active()); + const oldAttributes = {}; + if (socket) { + const { localAddress, localPort, remoteAddress, remotePort } = socket; + oldAttributes[semconv_1.ATTR_NET_HOST_IP] = localAddress; + oldAttributes[semconv_1.ATTR_NET_HOST_PORT] = localPort; + oldAttributes[semconv_1.ATTR_NET_PEER_IP] = remoteAddress; + oldAttributes[semconv_1.ATTR_NET_PEER_PORT] = remotePort; + } + oldAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] = statusCode; + oldAttributes[AttributeNames_1.AttributeNames.HTTP_STATUS_TEXT] = (statusMessage || '').toUpperCase(); + if (rpcMetadata?.type === core_1.RPCType.HTTP && rpcMetadata.route !== undefined) { + oldAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = rpcMetadata.route; + newAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = rpcMetadata.route; + } + switch (semconvStability) { + case instrumentation_1.SemconvStability.STABLE: + return newAttributes; + case instrumentation_1.SemconvStability.OLD: + return oldAttributes; + } + return Object.assign(oldAttributes, newAttributes); +}; +exports.getIncomingRequestAttributesOnResponse = getIncomingRequestAttributesOnResponse; +/** + * Returns incoming request Metric attributes scoped to the request data + * @param {Attributes} spanAttributes the span attributes + */ +const getIncomingRequestMetricAttributesOnResponse = (spanAttributes) => { + const metricAttributes = {}; + metricAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] = + spanAttributes[semconv_1.ATTR_HTTP_STATUS_CODE]; + metricAttributes[semconv_1.ATTR_NET_HOST_PORT] = spanAttributes[semconv_1.ATTR_NET_HOST_PORT]; + if (spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] !== undefined) { + metricAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE]; + } + return metricAttributes; +}; +exports.getIncomingRequestMetricAttributesOnResponse = getIncomingRequestMetricAttributesOnResponse; +/** + * Returns incoming stable request Metric attributes scoped to the request data + * @param {Attributes} spanAttributes the span attributes + */ +const getIncomingStableRequestMetricAttributesOnResponse = (spanAttributes) => { + const metricAttributes = {}; + if (spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] !== undefined) { + metricAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE]; + } + // required if and only if one was sent, same as span requirement + if (spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]) { + metricAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] = + spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]; + } + return metricAttributes; +}; +exports.getIncomingStableRequestMetricAttributesOnResponse = getIncomingStableRequestMetricAttributesOnResponse; +function headerCapture(type, headers) { + const normalizedHeaders = new Map(); + for (let i = 0, len = headers.length; i < len; i++) { + const capturedHeader = headers[i].toLowerCase(); + normalizedHeaders.set(capturedHeader, capturedHeader.replace(/-/g, '_')); + } + return (span, getHeader) => { + for (const capturedHeader of normalizedHeaders.keys()) { + const value = getHeader(capturedHeader); + if (value === undefined) { + continue; + } + const normalizedHeader = normalizedHeaders.get(capturedHeader); + const key = `http.${type}.header.${normalizedHeader}`; + if (typeof value === 'string') { + span.setAttribute(key, [value]); + } + else if (Array.isArray(value)) { + span.setAttribute(key, value); + } + else { + span.setAttribute(key, [value]); + } + } + }; +} +exports.headerCapture = headerCapture; +const KNOWN_METHODS = new Set([ + // methods from https://www.rfc-editor.org/rfc/rfc9110.html#name-methods + 'GET', + 'HEAD', + 'POST', + 'PUT', + 'DELETE', + 'CONNECT', + 'OPTIONS', + 'TRACE', + // PATCH from https://www.rfc-editor.org/rfc/rfc5789.html + 'PATCH', + // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/ + 'QUERY', +]); +function normalizeMethod(method) { + if (method == null) { + return 'GET'; + } + const upper = method.toUpperCase(); + if (KNOWN_METHODS.has(upper)) { + return upper; + } + return '_OTHER'; +} +function parseForwardedHeader(header) { + try { + return forwardedParse(header); + } + catch { + return []; + } +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/utils.js.map new file mode 100644 index 0000000..daefc98 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Attributes,\n SpanStatusCode,\n Span,\n context,\n SpanKind,\n DiagLogger,\n AttributeValue,\n} from '@opentelemetry/api';\nimport {\n ATTR_CLIENT_ADDRESS,\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_REQUEST_METHOD_ORIGINAL,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_ROUTE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_USER_AGENT_ORIGINAL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_HTTP_CLIENT_IP,\n ATTR_HTTP_FLAVOR,\n ATTR_HTTP_HOST,\n ATTR_HTTP_METHOD,\n ATTR_HTTP_REQUEST_CONTENT_LENGTH,\n ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n ATTR_HTTP_RESPONSE_CONTENT_LENGTH,\n ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n ATTR_HTTP_SCHEME,\n ATTR_HTTP_SERVER_NAME,\n ATTR_HTTP_STATUS_CODE,\n ATTR_HTTP_TARGET,\n ATTR_HTTP_URL,\n ATTR_HTTP_USER_AGENT,\n ATTR_NET_HOST_IP,\n ATTR_NET_HOST_NAME,\n ATTR_NET_HOST_PORT,\n ATTR_NET_PEER_IP,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n ATTR_NET_TRANSPORT,\n NET_TRANSPORT_VALUE_IP_TCP,\n NET_TRANSPORT_VALUE_IP_UDP,\n ATTR_USER_AGENT_SYNTHETIC_TYPE,\n USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT,\n USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST,\n} from './semconv';\nimport {\n IncomingHttpHeaders,\n IncomingMessage,\n OutgoingHttpHeader,\n OutgoingHttpHeaders,\n RequestOptions,\n ServerResponse,\n} from 'http';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport * as url from 'url';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { Err, IgnoreMatcher, ParsedRequestOptions } from './internal-types';\nimport { SYNTHETIC_BOT_NAMES, SYNTHETIC_TEST_NAMES } from './internal-types';\nimport {\n DEFAULT_QUERY_STRINGS_TO_REDACT,\n STR_REDACTED,\n} from './internal-types';\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nimport forwardedParse = require('forwarded-parse');\n\n/**\n * Get an absolute url\n */\nexport const getAbsoluteUrl = (\n requestUrl: ParsedRequestOptions | null,\n headers: IncomingHttpHeaders | OutgoingHttpHeaders,\n fallbackProtocol = 'http:',\n redactedQueryParams: string[] = Array.from(DEFAULT_QUERY_STRINGS_TO_REDACT)\n): string => {\n const reqUrlObject = requestUrl || {};\n const protocol = reqUrlObject.protocol || fallbackProtocol;\n const port = (reqUrlObject.port || '').toString();\n let path = reqUrlObject.path || '/';\n let host =\n 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 (\n (host as string).indexOf(':') === -1 &&\n port &&\n port !== '80' &&\n port !== '443'\n ) {\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: string[] = redactedQueryParams || [];\n\n for (const sensitiveParam of sensitiveParamsToRedact) {\n if (parsedUrl.searchParams.get(sensitiveParam)) {\n parsedUrl.searchParams.set(sensitiveParam, STR_REDACTED);\n }\n }\n\n path = `${parsedUrl.pathname}${parsedUrl.search}`;\n } catch {\n // Ignore error, as the path was not a valid URL.\n }\n }\n const authPart = reqUrlObject.auth ? `${STR_REDACTED}:${STR_REDACTED}@` : '';\n return `${protocol}//${authPart}${host}${path}`;\n};\n\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 */\nexport const parseResponseStatus = (\n kind: SpanKind,\n statusCode?: number\n): SpanStatusCode => {\n const upperBound = kind === 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 SpanStatusCode.UNSET;\n }\n\n // All other codes are error\n return SpanStatusCode.ERROR;\n};\n\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param pattern Match pattern\n */\nexport const satisfiesPattern = (\n constant: string,\n pattern: IgnoreMatcher\n): boolean => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n } else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n } else if (typeof pattern === 'function') {\n return pattern(constant);\n } else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n\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 */\nexport const setSpanWithError = (\n span: Span,\n error: Err,\n semconvStability: SemconvStability\n): void => {\n const message = error.message;\n\n if (semconvStability & SemconvStability.OLD) {\n span.setAttribute(AttributeNames.HTTP_ERROR_NAME, error.name);\n span.setAttribute(AttributeNames.HTTP_ERROR_MESSAGE, message);\n }\n\n if (semconvStability & SemconvStability.STABLE) {\n span.setAttribute(ATTR_ERROR_TYPE, error.name);\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR, message });\n span.recordException(error);\n};\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 */\nexport const setRequestContentLengthAttribute = (\n request: IncomingMessage,\n attributes: Attributes\n): void => {\n const length = getContentLength(request.headers);\n if (length === null) return;\n\n if (isCompressed(request.headers)) {\n attributes[ATTR_HTTP_REQUEST_CONTENT_LENGTH] = length;\n } else {\n attributes[ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\n\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 */\nexport const setResponseContentLengthAttribute = (\n response: IncomingMessage,\n attributes: Attributes\n): void => {\n const length = getContentLength(response.headers);\n if (length === null) return;\n\n if (isCompressed(response.headers)) {\n attributes[ATTR_HTTP_RESPONSE_CONTENT_LENGTH] = length;\n } else {\n attributes[ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\n\nfunction getContentLength(\n headers: OutgoingHttpHeaders | IncomingHttpHeaders\n): number | null {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined) return null;\n\n const contentLength = parseInt(contentLengthHeader as string, 10);\n if (isNaN(contentLength)) return null;\n\n return contentLength;\n}\n\nexport const isCompressed = (\n headers: OutgoingHttpHeaders | IncomingHttpHeaders\n): boolean => {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n};\n\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(\n stringUrl: string\n): RequestOptions & { pathname: string } {\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 {\n hostname,\n pathname,\n port,\n username,\n password,\n search,\n protocol,\n hash,\n href,\n origin,\n host,\n } = new URL(stringUrl);\n\n const options: RequestOptions & {\n pathname: string;\n hash: string;\n search: string;\n href: string;\n origin: string;\n } = {\n protocol: protocol,\n hostname:\n 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(\n password\n )}`;\n }\n return options;\n}\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 */\nexport const getRequestInfo = (\n logger: DiagLogger,\n options: url.URL | RequestOptions | string,\n extraOptions?: RequestOptions\n): {\n origin: string;\n pathname: string;\n method: string;\n invalidUrl: boolean;\n optionsParsed: RequestOptions;\n} => {\n let pathname: string;\n let origin: string;\n let optionsParsed: RequestOptions;\n let invalidUrl = false;\n if (typeof options === 'string') {\n try {\n const convertedOptions = stringUrlToHttpOptions(options);\n optionsParsed = convertedOptions;\n pathname = convertedOptions.pathname || '/';\n } catch (e) {\n invalidUrl = true;\n logger.verbose(\n 'Unable to parse URL provided to HTTP request, using fallback to determine path. Original error:',\n e\n );\n // for backward compatibility with how url.parse() behaved.\n optionsParsed = {\n path: options,\n };\n pathname = optionsParsed.path || '/';\n }\n\n origin = `${optionsParsed.protocol || 'http:'}//${optionsParsed.host}`;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n } else if (options instanceof url.URL) {\n optionsParsed = {\n protocol: options.protocol,\n hostname:\n 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 } else {\n optionsParsed = Object.assign(\n { protocol: options.host ? 'http:' : undefined },\n options\n );\n\n const hostname =\n optionsParsed.host ||\n (optionsParsed.port != null\n ? `${optionsParsed.hostname}${optionsParsed.port}`\n : optionsParsed.hostname);\n origin = `${optionsParsed.protocol || 'http:'}//${hostname}`;\n\n pathname = (options as url.URL).pathname;\n if (!pathname && optionsParsed.path) {\n try {\n const parsedUrl = new URL(optionsParsed.path, origin);\n pathname = parsedUrl.pathname || '/';\n } catch {\n pathname = '/';\n }\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\n return { origin, pathname, method, optionsParsed, invalidUrl };\n};\n\n/**\n * Makes sure options is of type string or object\n * @param options for the request\n */\nexport const isValidOptionsType = (options: unknown): boolean => {\n if (!options) {\n return false;\n }\n\n const type = typeof options;\n return type === 'string' || (type === 'object' && !Array.isArray(options));\n};\n\nexport const extractHostnameAndPort = (\n requestOptions: Pick<\n ParsedRequestOptions,\n 'hostname' | 'host' | 'port' | 'protocol'\n >\n): { hostname: string; port: number | string } => {\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 =\n 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 } else {\n port = requestOptions.protocol === 'https:' ? '443' : '80';\n }\n }\n return { hostname, port };\n};\n\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 */\nexport const getOutgoingRequestAttributes = (\n requestOptions: ParsedRequestOptions,\n options: {\n component: string;\n hostname: string;\n port: string | number;\n hookAttributes?: Attributes;\n redactedQueryParams?: string[];\n },\n semconvStability: SemconvStability,\n enableSyntheticSourceDetection: boolean\n): Attributes => {\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 || {}) as OutgoingHttpHeaders;\n const userAgent = headers['user-agent'];\n const urlFull = getAbsoluteUrl(\n requestOptions,\n headers,\n `${options.component}:`,\n options.redactedQueryParams\n );\n\n const oldAttributes: Attributes = {\n [ATTR_HTTP_URL]: urlFull,\n [ATTR_HTTP_METHOD]: method,\n [ATTR_HTTP_TARGET]: requestOptions.path || '/',\n [ATTR_NET_PEER_NAME]: hostname,\n [ATTR_HTTP_HOST]: headers.host ?? `${hostname}:${port}`,\n };\n\n const newAttributes: Attributes = {\n // Required attributes\n [ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [ATTR_SERVER_ADDRESS]: hostname,\n [ATTR_SERVER_PORT]: Number(port),\n [ATTR_URL_FULL]: urlFull,\n [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\n // Opt-in attributes left off for now\n };\n\n // conditionally required if request method required case normalization\n if (method !== normalizedMethod) {\n newAttributes[ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[ATTR_USER_AGENT_SYNTHETIC_TYPE] = getSyntheticType(userAgent);\n }\n if (userAgent !== undefined) {\n oldAttributes[ATTR_HTTP_USER_AGENT] = userAgent;\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return Object.assign(newAttributes, options.hookAttributes);\n case SemconvStability.OLD:\n return Object.assign(oldAttributes, options.hookAttributes);\n }\n\n return Object.assign(oldAttributes, newAttributes, options.hookAttributes);\n};\n\n/**\n * Returns outgoing request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getOutgoingRequestMetricAttributes = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_METHOD] = spanAttributes[ATTR_HTTP_METHOD];\n metricAttributes[ATTR_NET_PEER_NAME] = spanAttributes[ATTR_NET_PEER_NAME];\n //TODO: http.url attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\n\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 */\nexport const setAttributesFromHttpKind = (\n kind: string | undefined,\n attributes: Attributes\n): void => {\n if (kind) {\n attributes[ATTR_HTTP_FLAVOR] = kind;\n if (kind.toUpperCase() !== 'QUIC') {\n attributes[ATTR_NET_TRANSPORT] = NET_TRANSPORT_VALUE_IP_TCP;\n } else {\n attributes[ATTR_NET_TRANSPORT] = NET_TRANSPORT_VALUE_IP_UDP;\n }\n }\n};\n\n/**\n * Returns the type of synthetic source based on the user agent\n * @param {OutgoingHttpHeader} userAgent the user agent string\n */\nconst getSyntheticType = (\n userAgent: OutgoingHttpHeader\n): AttributeValue | undefined => {\n const userAgentString: string = String(userAgent).toLowerCase();\n for (const name of SYNTHETIC_TEST_NAMES) {\n if (userAgentString.includes(name)) {\n return USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST;\n }\n }\n for (const name of SYNTHETIC_BOT_NAMES) {\n if (userAgentString.includes(name)) {\n return USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT;\n }\n }\n return;\n};\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 */\nexport const getOutgoingRequestAttributesOnResponse = (\n response: IncomingMessage,\n semconvStability: SemconvStability\n): Attributes => {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n const oldAttributes: Attributes = {};\n const stableAttributes: Attributes = {};\n\n if (statusCode != null) {\n stableAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] = statusCode;\n }\n\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n oldAttributes[ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[ATTR_NET_PEER_PORT] = remotePort;\n\n // Recommended\n stableAttributes[ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n stableAttributes[ATTR_NETWORK_PEER_PORT] = remotePort;\n stableAttributes[ATTR_NETWORK_PROTOCOL_VERSION] = response.httpVersion;\n }\n setResponseContentLengthAttribute(response, oldAttributes);\n\n if (statusCode) {\n oldAttributes[ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames.HTTP_STATUS_TEXT] = (\n statusMessage || ''\n ).toUpperCase();\n }\n\n setAttributesFromHttpKind(httpVersion, oldAttributes);\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return stableAttributes;\n case SemconvStability.OLD:\n return oldAttributes;\n }\n\n return Object.assign(oldAttributes, stableAttributes);\n};\n\n/**\n * Returns outgoing request Metric attributes scoped to the response data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getOutgoingRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_NET_PEER_PORT] = spanAttributes[ATTR_NET_PEER_PORT];\n metricAttributes[ATTR_HTTP_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_STATUS_CODE];\n metricAttributes[ATTR_HTTP_FLAVOR] = spanAttributes[ATTR_HTTP_FLAVOR];\n\n return metricAttributes;\n};\n\nexport const getOutgoingStableRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n\n if (spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n metricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n if (spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\n\nfunction parseHostHeader(\n hostHeader: string,\n proto?: string\n): { host: string; port?: string } {\n const parts = hostHeader.split(':');\n\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\n if (proto === 'https') {\n return { host: parts[0], port: '443' };\n }\n\n return { host: parts[0] };\n }\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\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\n if (proto === 'https') {\n return { host: hostHeader, port: '443' };\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\n // if nothing above matches just return the host header\n return { host: hostHeader };\n}\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(\n request: IncomingMessage,\n component: 'http' | 'https'\n): { host: string; port?: string } | null {\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\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(\n xForwardedHost,\n request.headers['x-forwarded-proto']\n );\n }\n\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(\n xForwardedHost,\n request.headers['x-forwarded-proto'][0]\n );\n }\n\n return parseHostHeader(xForwardedHost);\n } else if (\n Array.isArray(xForwardedHost) &&\n typeof xForwardedHost[0] === 'string' &&\n xForwardedHost[0].length > 0\n ) {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(\n xForwardedHost[0],\n request.headers['x-forwarded-proto']\n );\n }\n\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(\n xForwardedHost[0],\n request.headers['x-forwarded-proto'][0]\n );\n }\n\n return parseHostHeader(xForwardedHost[0]);\n }\n\n const host = request.headers['host'];\n if (typeof host === 'string' && host.length > 0) {\n return parseHostHeader(host, component);\n }\n\n return null;\n}\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 */\nexport function getRemoteClientAddress(\n request: IncomingMessage\n): string | null {\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\n const xForwardedFor = request.headers['x-forwarded-for'];\n if (xForwardedFor) {\n let xForwardedForVal;\n if (typeof xForwardedFor === 'string') {\n xForwardedForVal = xForwardedFor;\n } else if (Array.isArray(xForwardedFor)) {\n xForwardedForVal = xForwardedFor[0];\n }\n\n if (typeof xForwardedForVal === 'string') {\n xForwardedForVal = xForwardedForVal.split(',')[0].trim();\n return removePortFromAddress(xForwardedForVal);\n }\n }\n\n const remote = request.socket.remoteAddress;\n if (remote) {\n return remote;\n }\n\n return null;\n}\n\nfunction removePortFromAddress(input: string): string {\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\n if (address.startsWith('[') && address.endsWith(']')) {\n return address.slice(1, -1);\n }\n\n return address;\n } catch {\n return input;\n }\n}\n\nfunction getInfoFromIncomingMessage(\n component: 'http' | 'https',\n request: IncomingMessage,\n logger: DiagLogger\n): { pathname?: string; search?: string; toString: () => string } {\n try {\n if (request.headers.host) {\n return new URL(\n request.url ?? '/',\n `${component}://${request.headers.host}`\n );\n } else {\n const unsafeParsedUrl = new URL(\n request.url ?? '/',\n // using localhost as a workaround to still use the URL constructor for parsing\n `${component}://localhost`\n );\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 } 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/**\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 */\nexport const getIncomingRequestAttributes = (\n request: IncomingMessage,\n options: {\n component: 'http' | 'https';\n serverName?: string;\n hookAttributes?: Attributes;\n semconvStability: SemconvStability;\n enableSyntheticSourceDetection: boolean;\n },\n logger: DiagLogger\n): Attributes => {\n const {\n component,\n enableSyntheticSourceDetection,\n hookAttributes,\n semconvStability,\n serverName,\n } = 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: Attributes;\n let oldAttributes: Attributes;\n\n if (semconvStability !== SemconvStability.OLD) {\n // Stable attributes are used.\n const normalizedMethod = normalizeMethod(method);\n const serverAddress = getServerAddress(request, component);\n const remoteClientAddress = getRemoteClientAddress(request);\n\n newAttributes = {\n [ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [ATTR_URL_SCHEME]: component,\n [ATTR_SERVER_ADDRESS]: serverAddress?.host,\n [ATTR_NETWORK_PEER_ADDRESS]: request.socket.remoteAddress,\n [ATTR_NETWORK_PEER_PORT]: request.socket.remotePort,\n [ATTR_NETWORK_PROTOCOL_VERSION]: request.httpVersion,\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n };\n\n if (parsedUrl.pathname != null) {\n newAttributes[ATTR_URL_PATH] = parsedUrl.pathname;\n }\n\n if (parsedUrl.search) {\n // Remove leading '?' from URL search (https://developer.mozilla.org/en-US/docs/Web/API/URL/search).\n newAttributes[ATTR_URL_QUERY] = parsedUrl.search.slice(1);\n }\n\n if (remoteClientAddress != null) {\n newAttributes[ATTR_CLIENT_ADDRESS] = remoteClientAddress;\n }\n\n if (serverAddress?.port != null) {\n newAttributes[ATTR_SERVER_PORT] = Number(serverAddress.port);\n }\n\n // Conditionally required if request method required case normalization.\n if (method !== normalizedMethod) {\n newAttributes[ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[ATTR_USER_AGENT_SYNTHETIC_TYPE] =\n getSyntheticType(userAgent);\n }\n }\n\n if (semconvStability !== SemconvStability.STABLE) {\n // Old attributes are used.\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n\n oldAttributes = {\n [ATTR_HTTP_URL]: parsedUrl.toString(),\n [ATTR_HTTP_HOST]: host,\n [ATTR_NET_HOST_NAME]: hostname,\n [ATTR_HTTP_METHOD]: method,\n [ATTR_HTTP_SCHEME]: component,\n };\n\n if (typeof ips === 'string') {\n oldAttributes[ATTR_HTTP_CLIENT_IP] = ips.split(',')[0];\n }\n\n if (typeof serverName === 'string') {\n oldAttributes[ATTR_HTTP_SERVER_NAME] = serverName;\n }\n\n if (parsedUrl.pathname) {\n oldAttributes[ATTR_HTTP_TARGET] =\n parsedUrl.pathname + parsedUrl.search || '/';\n }\n\n if (userAgent !== undefined) {\n oldAttributes[ATTR_HTTP_USER_AGENT] = userAgent;\n }\n\n setRequestContentLengthAttribute(request, oldAttributes);\n setAttributesFromHttpKind(httpVersion, oldAttributes);\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return Object.assign(newAttributes!, hookAttributes);\n case SemconvStability.OLD:\n return Object.assign(oldAttributes!, hookAttributes);\n default:\n return Object.assign(oldAttributes!, newAttributes!, hookAttributes);\n }\n};\n\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 */\nexport const getIncomingRequestMetricAttributes = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_SCHEME] = spanAttributes[ATTR_HTTP_SCHEME];\n metricAttributes[ATTR_HTTP_METHOD] = spanAttributes[ATTR_HTTP_METHOD];\n metricAttributes[ATTR_NET_HOST_NAME] = spanAttributes[ATTR_NET_HOST_NAME];\n metricAttributes[ATTR_HTTP_FLAVOR] = spanAttributes[ATTR_HTTP_FLAVOR];\n //TODO: http.target attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\n\n/**\n * Returns incoming request attributes scoped to the response data\n * @param {(ServerResponse & { socket: Socket; })} response the response object\n */\nexport const getIncomingRequestAttributesOnResponse = (\n request: IncomingMessage,\n response: ServerResponse,\n semconvStability: SemconvStability\n): Attributes => {\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: Attributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n };\n\n const rpcMetadata = getRPCMetadata(context.active());\n const oldAttributes: Attributes = {};\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n oldAttributes[ATTR_NET_HOST_IP] = localAddress;\n oldAttributes[ATTR_NET_HOST_PORT] = localPort;\n oldAttributes[ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[ATTR_NET_PEER_PORT] = remotePort;\n }\n oldAttributes[ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames.HTTP_STATUS_TEXT] = (\n statusMessage || ''\n ).toUpperCase();\n\n if (rpcMetadata?.type === RPCType.HTTP && rpcMetadata.route !== undefined) {\n oldAttributes[ATTR_HTTP_ROUTE] = rpcMetadata.route;\n newAttributes[ATTR_HTTP_ROUTE] = rpcMetadata.route;\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return newAttributes;\n case SemconvStability.OLD:\n return oldAttributes;\n }\n\n return Object.assign(oldAttributes, newAttributes);\n};\n\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getIncomingRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_STATUS_CODE];\n metricAttributes[ATTR_NET_HOST_PORT] = spanAttributes[ATTR_NET_HOST_PORT];\n if (spanAttributes[ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[ATTR_HTTP_ROUTE] = spanAttributes[ATTR_HTTP_ROUTE];\n }\n return metricAttributes;\n};\n\n/**\n * Returns incoming stable request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getIncomingStableRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n if (spanAttributes[ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[ATTR_HTTP_ROUTE] = spanAttributes[ATTR_HTTP_ROUTE];\n }\n\n // required if and only if one was sent, same as span requirement\n if (spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\n\nexport function headerCapture(type: 'request' | 'response', headers: string[]) {\n const normalizedHeaders = new Map();\n for (let i = 0, len = headers.length; i < len; i++) {\n const capturedHeader = headers[i].toLowerCase();\n normalizedHeaders.set(capturedHeader, capturedHeader.replace(/-/g, '_'));\n }\n\n return (\n span: Span,\n getHeader: (key: string) => undefined | string | string[] | number\n ) => {\n for (const capturedHeader of normalizedHeaders.keys()) {\n const value = getHeader(capturedHeader);\n\n if (value === undefined) {\n continue;\n }\n\n const normalizedHeader = normalizedHeaders.get(capturedHeader);\n const key = `http.${type}.header.${normalizedHeader}`;\n\n if (typeof value === 'string') {\n span.setAttribute(key, [value]);\n } else if (Array.isArray(value)) {\n span.setAttribute(key, value);\n } else {\n span.setAttribute(key, [value]);\n }\n }\n };\n}\n\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\n // PATCH from https://www.rfc-editor.org/rfc/rfc5789.html\n 'PATCH',\n\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n 'QUERY',\n]);\n\nfunction normalizeMethod(method?: string | null) {\n if (method == null) {\n return 'GET';\n }\n\n const upper = method.toUpperCase();\n if (KNOWN_METHODS.has(upper)) {\n return upper;\n }\n\n return '_OTHER';\n}\n\nfunction parseForwardedHeader(header: string): Record[] {\n try {\n return forwardedParse(header);\n } catch {\n return [];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/version.d.ts new file mode 100644 index 0000000..f619f6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.211.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/version.js new file mode 100644 index 0000000..440c359 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '0.211.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/version.js.map new file mode 100644 index 0000000..99d92fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.211.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/package.json new file mode 100644 index 0000000..bd62bda --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-http/package.json @@ -0,0 +1,80 @@ +{ + "name": "@opentelemetry/instrumentation-http", + "version": "0.211.0", + "description": "OpenTelemetry instrumentation for `node:http` and `node:https` http client and server modules", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build", + "clean": "tsc --build --clean", + "test:cjs": "nyc mocha test/**/*.test.ts", + "test:esm": "nyc node --experimental-loader=@opentelemetry/instrumentation/hook.mjs ../../../node_modules/mocha/bin/mocha 'test/**/*.test.mjs'", + "test": "npm run test:cjs && npm run test:esm", + "tdd": "npm run test -- --watch-extensions ts --watch", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "version": "node ../../../scripts/version-update.js", + "watch": "tsc --build --watch", + "prewatch": "node ../../../scripts/version-update.js", + "peer-api-check": "node ../../../scripts/peer-api-check.js", + "align-api-deps": "node ../../../scripts/align-api-deps.js", + "maint:regenerate-test-certs": "cd test/fixtures && ./regenerate.sh" + }, + "keywords": [ + "opentelemetry", + "http", + "nodejs", + "tracing", + "profiling", + "instrumentation" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@opentelemetry/api": "1.9.0", + "@opentelemetry/context-async-hooks": "2.5.0", + "@opentelemetry/sdk-metrics": "2.5.0", + "@opentelemetry/sdk-trace-base": "2.5.0", + "@opentelemetry/sdk-trace-node": "2.5.0", + "@types/mocha": "10.0.10", + "@types/node": "18.19.130", + "@types/request-promise-native": "1.0.21", + "@types/sinon": "17.0.4", + "@types/superagent": "8.1.9", + "axios": "1.12.2", + "mocha": "11.7.5", + "nock": "13.5.6", + "nyc": "17.1.0", + "sinon": "18.0.1", + "superagent": "10.1.1", + "typescript": "5.0.4" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "dependencies": { + "@opentelemetry/core": "2.5.0", + "@opentelemetry/instrumentation": "0.211.0", + "@opentelemetry/semantic-conventions": "^1.29.0", + "forwarded-parse": "2.1.2" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http", + "sideEffects": false, + "gitHead": "38924cbff2a6e924ce8a2a227d3a72de52fbcd35" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/README.md new file mode 100644 index 0000000..7357944 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/README.md @@ -0,0 +1,139 @@ +# OpenTelemetry ioredis Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`ioredis`](https://github.com/luin/ioredis) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```sh +npm install --save @opentelemetry/instrumentation-ioredis +``` + +### Supported Versions + +- [`ioredis`](https://www.npmjs.com/package/ioredis) versions `>=2.0.0 <6` + +## Usage + +To load a specific instrumentation (**ioredis** in this case), specify it in the registerInstrumentations's configuration + +```javascript +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { + IORedisInstrumentation, +} = require('@opentelemetry/instrumentation-ioredis'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new IORedisInstrumentation({ + // see under for available configuration + }), + ], +}); +``` + +### IORedis Instrumentation Options + +IORedis instrumentation has few options available to choose from. You can set the following: + +| Options | Type | Description | +| ----------------------- | ------------------------------------------------- | ----------- | +| `dbStatementSerializer` | `DbStatementSerializer` | IORedis instrumentation will serialize db.statement using the specified function. | +| `requestHook` | `RedisRequestCustomAttributeFunction` (function) | Function for adding custom attributes on db request. Receives params: `span, { moduleVersion, cmdName, cmdArgs }` | +| `responseHook` | `RedisResponseCustomAttributeFunction` (function) | Function for adding custom attributes on db response | +| `requireParentSpan` | `boolean` | Require parent to create ioredis span, default when unset is true | + +#### Custom db.statement Serializer + +The instrumentation serializes the command into a Span attribute called `db.statement`. The standard serialization format attempts to be as informative +as possible while avoiding the export of potentially sensitive data. The number of serialized arguments depends on the specific command, see the configuration +list in `@opentelemetry/redis-common`. + +It is also possible to define a custom serialization function. The function will receive the command name and arguments and must return a string. + +Here is a simple example to serialize the command name skipping arguments: + +```javascript +const { IORedisInstrumentation } = require('@opentelemetry/instrumentation-ioredis'); + +const ioredisInstrumentation = new IORedisInstrumentation({ + dbStatementSerializer: function (cmdName, cmdArgs) { + return cmdName; + }, +}); +``` + +#### Using `requestHook` + +Instrumentation user can configure a custom "hook" function which will be called on every request with the relevant span and request information. User can then set custom attributes on the span or run any instrumentation-extension logic per request. + +Here is a simple example that adds a span attribute of `ioredis` instrumented version on each request: + +```javascript +const { IORedisInstrumentation } = require('@opentelemetry/instrumentation-ioredis'); + +const ioredisInstrumentation = new IORedisInstrumentation({ +requestHook: function ( + span: Span, + requestInfo: IORedisRequestHookInformation + ) { + if (requestInfo.moduleVersion) { + span.setAttribute( + 'instrumented_library.version', + requestInfo.moduleVersion + ); + } + } +}); + +``` + +## Semantic Conventions + +This instrumentation implements Semantic Conventions (semconv) v1.7.0. Since then, networking (in semconv v1.23.1) and database (in semconv v1.33.0) semantic conventions were stabilized. As of `@opentelemetry/instrumentation-ioredis@0.57.0` support has been added for migrating to the stable semantic conventions using the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable as follows: + +1. Upgrade to the latest version of this instrumentation package. +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http/dup,database/dup` to emit both old and stable semantic conventions. (The `http` token is used to control the `net.*` attributes, the `database` token to control to `db.*` attributes.) +3. Modify alerts, dashboards, metrics, and other processes in your Observability system to use the stable semantic conventions. +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http,database` to emit only the stable semantic conventions. + +By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` includes neither of the above tokens, the old v1.7.0 semconv is used. +The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new database and networking semconv, after which a new minor version will use the new semconv by default and drop support for the old semconv. +See [the HTTP migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/) and the [database migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/) for details. + +Attributes collected: + +| Old semconv | Stable semconv | Description | +| ---------------------- | ---------------- | ----------- | +| `db.connection_string` | Removed | | +| `db.system` | `db.system.name` | 'redis' | +| `db.statement` | `db.query.text` | The database query being executed. | +| `net.peer.port` | `server.port` | Remote port number. | +| `net.peer.name` | `server.address` | Remote hostname or similar. | + + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-ioredis +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-ioredis.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.d.ts new file mode 100644 index 0000000..e6e963b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { IORedisInstrumentation } from './instrumentation'; +export type { CommandArgs, DbStatementSerializer, IORedisInstrumentationConfig, IORedisRequestHookInformation, RedisRequestCustomAttributeFunction, RedisResponseCustomAttributeFunction, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.js new file mode 100644 index 0000000..60f6c2f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IORedisInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "IORedisInstrumentation", { enumerable: true, get: function () { return instrumentation_1.IORedisInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.js.map new file mode 100644 index 0000000..db69454 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { IORedisInstrumentation } from './instrumentation';\nexport type {\n CommandArgs,\n DbStatementSerializer,\n IORedisInstrumentationConfig,\n IORedisRequestHookInformation,\n RedisRequestCustomAttributeFunction,\n RedisResponseCustomAttributeFunction,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.d.ts new file mode 100644 index 0000000..e99d75f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.d.ts @@ -0,0 +1,18 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { IORedisInstrumentationConfig } from './types'; +export declare class IORedisInstrumentation extends InstrumentationBase { + private _netSemconvStability; + private _dbSemconvStability; + constructor(config?: IORedisInstrumentationConfig); + private _setSemconvStabilityFromEnv; + setConfig(config?: IORedisInstrumentationConfig): void; + init(): InstrumentationNodeModuleDefinition[]; + /** + * Patch send command internal to trace requests + */ + private _patchSendCommand; + private _patchConnection; + private _traceSendCommand; + private _traceConnection; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.js new file mode 100644 index 0000000..0042130 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.js @@ -0,0 +1,203 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IORedisInstrumentation = void 0; +const api_1 = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +const instrumentation_2 = require("@opentelemetry/instrumentation"); +const utils_1 = require("./utils"); +const redis_common_1 = require("@opentelemetry/redis-common"); +/** @knipignore */ +const version_1 = require("./version"); +const DEFAULT_CONFIG = { + requireParentSpan: true, +}; +class IORedisInstrumentation extends instrumentation_1.InstrumentationBase { + _netSemconvStability; + _dbSemconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config }); + this._setSemconvStabilityFromEnv(); + } + // Used for testing. + _setSemconvStabilityFromEnv() { + this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + setConfig(config = {}) { + super.setConfig({ ...DEFAULT_CONFIG, ...config }); + } + init() { + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition('ioredis', ['>=2.0.0 <6'], (module, moduleVersion) => { + const moduleExports = module[Symbol.toStringTag] === 'Module' + ? module.default // ESM + : module; // CommonJS + if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.sendCommand)) { + this._unwrap(moduleExports.prototype, 'sendCommand'); + } + this._wrap(moduleExports.prototype, 'sendCommand', this._patchSendCommand(moduleVersion)); + if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) { + this._unwrap(moduleExports.prototype, 'connect'); + } + this._wrap(moduleExports.prototype, 'connect', this._patchConnection()); + return module; + }, module => { + if (module === undefined) + return; + const moduleExports = module[Symbol.toStringTag] === 'Module' + ? module.default // ESM + : module; // CommonJS + this._unwrap(moduleExports.prototype, 'sendCommand'); + this._unwrap(moduleExports.prototype, 'connect'); + }), + ]; + } + /** + * Patch send command internal to trace requests + */ + _patchSendCommand(moduleVersion) { + return (original) => { + return this._traceSendCommand(original, moduleVersion); + }; + } + _patchConnection() { + return (original) => { + return this._traceConnection(original); + }; + } + _traceSendCommand(original, moduleVersion) { + const instrumentation = this; + return function (cmd) { + if (arguments.length < 1 || typeof cmd !== 'object') { + return original.apply(this, arguments); + } + const config = instrumentation.getConfig(); + const dbStatementSerializer = config.dbStatementSerializer || redis_common_1.defaultDbStatementSerializer; + const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined; + if (config.requireParentSpan === true && hasNoParentSpan) { + return original.apply(this, arguments); + } + const attributes = {}; + const { host, port } = this.options; + const dbQueryText = dbStatementSerializer(cmd.name, cmd.args); + if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_REDIS; + attributes[semconv_1.ATTR_DB_STATEMENT] = dbQueryText; + attributes[semconv_1.ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`; + } + if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_REDIS; + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbQueryText; + } + if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_NET_PEER_NAME] = host; + attributes[semconv_1.ATTR_NET_PEER_PORT] = port; + } + if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host; + attributes[semantic_conventions_1.ATTR_SERVER_PORT] = port; + } + const span = instrumentation.tracer.startSpan(cmd.name, { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + const { requestHook } = config; + if (requestHook) { + (0, instrumentation_2.safeExecuteInTheMiddle)(() => requestHook(span, { + moduleVersion, + cmdName: cmd.name, + cmdArgs: cmd.args, + }), e => { + if (e) { + api_1.diag.error('ioredis instrumentation: request hook failed', e); + } + }, true); + } + try { + const result = original.apply(this, arguments); + const origResolve = cmd.resolve; + /* eslint-disable @typescript-eslint/no-explicit-any */ + cmd.resolve = function (result) { + (0, instrumentation_2.safeExecuteInTheMiddle)(() => config.responseHook?.(span, cmd.name, cmd.args, result), e => { + if (e) { + api_1.diag.error('ioredis instrumentation: response hook failed', e); + } + }, true); + (0, utils_1.endSpan)(span, null); + origResolve(result); + }; + const origReject = cmd.reject; + cmd.reject = function (err) { + (0, utils_1.endSpan)(span, err); + origReject(err); + }; + return result; + } + catch (error) { + (0, utils_1.endSpan)(span, error); + throw error; + } + }; + } + _traceConnection(original) { + const instrumentation = this; + return function () { + const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined; + if (instrumentation.getConfig().requireParentSpan === true && + hasNoParentSpan) { + return original.apply(this, arguments); + } + const attributes = {}; + const { host, port } = this.options; + if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_REDIS; + attributes[semconv_1.ATTR_DB_STATEMENT] = 'connect'; + attributes[semconv_1.ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`; + } + if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_REDIS; + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = 'connect'; + } + if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_NET_PEER_NAME] = host; + attributes[semconv_1.ATTR_NET_PEER_PORT] = port; + } + if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host; + attributes[semantic_conventions_1.ATTR_SERVER_PORT] = port; + } + const span = instrumentation.tracer.startSpan('connect', { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + try { + const client = original.apply(this, arguments); + (0, utils_1.endSpan)(span, null); + return client; + } + catch (error) { + (0, utils_1.endSpan)(span, error); + throw error; + } + }; + } +} +exports.IORedisInstrumentation = IORedisInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.js.map new file mode 100644 index 0000000..a609fb2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n diag,\n trace,\n context,\n SpanKind,\n type Attributes,\n} from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { IORedisInstrumentationConfig } from './types';\nimport { IORedisCommand, RedisInterface } from './internal-types';\nimport {\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n DB_SYSTEM_VALUE_REDIS,\n DB_SYSTEM_NAME_VALUE_REDIS,\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n} from './semconv';\nimport { safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\nimport { endSpan } from './utils';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst DEFAULT_CONFIG: IORedisInstrumentationConfig = {\n requireParentSpan: true,\n};\n\nexport class IORedisInstrumentation extends InstrumentationBase {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n\n constructor(config: IORedisInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n this._setSemconvStabilityFromEnv();\n }\n\n // Used for testing.\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n this._dbSemconvStability = semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n override setConfig(config: IORedisInstrumentationConfig = {}) {\n super.setConfig({ ...DEFAULT_CONFIG, ...config });\n }\n\n init(): InstrumentationNodeModuleDefinition[] {\n return [\n new InstrumentationNodeModuleDefinition(\n 'ioredis',\n ['>=2.0.0 <6'],\n (module, moduleVersion?: string) => {\n const moduleExports =\n module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n if (isWrapped(moduleExports.prototype.sendCommand)) {\n this._unwrap(moduleExports.prototype, 'sendCommand');\n }\n this._wrap(\n moduleExports.prototype,\n 'sendCommand',\n this._patchSendCommand(moduleVersion)\n );\n if (isWrapped(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n this._wrap(\n moduleExports.prototype,\n 'connect',\n this._patchConnection()\n );\n return module;\n },\n module => {\n if (module === undefined) return;\n const moduleExports =\n 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\n /**\n * Patch send command internal to trace requests\n */\n private _patchSendCommand(moduleVersion?: string) {\n return (original: Function) => {\n return this._traceSendCommand(original, moduleVersion);\n };\n }\n\n private _patchConnection() {\n return (original: Function) => {\n return this._traceConnection(original);\n };\n }\n\n private _traceSendCommand(original: Function, moduleVersion?: string) {\n const instrumentation = this;\n return function (this: RedisInterface, cmd?: IORedisCommand) {\n if (arguments.length < 1 || typeof cmd !== 'object') {\n return original.apply(this, arguments);\n }\n const config = instrumentation.getConfig();\n const dbStatementSerializer =\n config.dbStatementSerializer || defaultDbStatementSerializer;\n\n const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n if (config.requireParentSpan === true && hasNoParentSpan) {\n return original.apply(this, arguments);\n }\n\n const attributes: Attributes = {};\n const { host, port } = this.options;\n const dbQueryText = dbStatementSerializer(cmd.name, cmd.args);\n if (instrumentation._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_REDIS;\n attributes[ATTR_DB_STATEMENT] = dbQueryText;\n attributes[ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n }\n if (instrumentation._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_REDIS;\n attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n }\n if (instrumentation._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_NAME] = host;\n attributes[ATTR_NET_PEER_PORT] = port;\n }\n if (instrumentation._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_ADDRESS] = host;\n attributes[ATTR_SERVER_PORT] = port;\n }\n const span = instrumentation.tracer.startSpan(cmd.name, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const { requestHook } = config;\n if (requestHook) {\n safeExecuteInTheMiddle(\n () =>\n requestHook(span, {\n moduleVersion,\n cmdName: cmd.name,\n cmdArgs: cmd.args,\n }),\n e => {\n if (e) {\n diag.error('ioredis instrumentation: request hook failed', e);\n }\n },\n true\n );\n }\n\n try {\n const result = original.apply(this, arguments);\n\n const origResolve = cmd.resolve;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n cmd.resolve = function (result: any) {\n safeExecuteInTheMiddle(\n () => config.responseHook?.(span, cmd.name, cmd.args, result),\n e => {\n if (e) {\n diag.error('ioredis instrumentation: response hook failed', e);\n }\n },\n true\n );\n\n endSpan(span, null);\n origResolve(result);\n };\n\n const origReject = cmd.reject;\n cmd.reject = function (err: Error) {\n endSpan(span, err);\n origReject(err);\n };\n\n return result;\n } catch (error: any) {\n endSpan(span, error);\n throw error;\n }\n };\n }\n\n private _traceConnection(original: Function) {\n const instrumentation = this;\n return function (this: RedisInterface) {\n const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n if (\n instrumentation.getConfig().requireParentSpan === true &&\n hasNoParentSpan\n ) {\n return original.apply(this, arguments);\n }\n\n const attributes: Attributes = {};\n const { host, port } = this.options;\n if (instrumentation._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_REDIS;\n attributes[ATTR_DB_STATEMENT] = 'connect';\n attributes[ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n }\n if (instrumentation._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_REDIS;\n attributes[ATTR_DB_QUERY_TEXT] = 'connect';\n }\n if (instrumentation._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_NAME] = host;\n attributes[ATTR_NET_PEER_PORT] = port;\n }\n if (instrumentation._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_ADDRESS] = host;\n attributes[ATTR_SERVER_PORT] = port;\n }\n const span = instrumentation.tracer.startSpan('connect', {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n try {\n const client = original.apply(this, arguments);\n endSpan(span, null);\n return client;\n } catch (error: any) {\n endSpan(span, error);\n throw error;\n }\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/internal-types.d.ts new file mode 100644 index 0000000..0e11a3b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/internal-types.d.ts @@ -0,0 +1,16 @@ +/// +/// +import type { Command, Redis } from 'ioredis'; +import type * as LegacyIORedis from 'ioredis4'; +interface LegacyIORedisCommand { + reject: (err: Error) => void; + resolve: (result: {}) => void; + promise: Promise<{}>; + args: Array; + callback: LegacyIORedis.CallbackFunction; + name: string; +} +export type IORedisCommand = Command | LegacyIORedisCommand; +export type RedisInterface = Redis | LegacyIORedis.Redis; +export {}; +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/internal-types.js new file mode 100644 index 0000000..0d014f4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/internal-types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/internal-types.js.map new file mode 100644 index 0000000..37b4eb5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type { Command, Redis } from 'ioredis';\nimport type * as LegacyIORedis from 'ioredis4';\n\ninterface LegacyIORedisCommand {\n reject: (err: Error) => void;\n resolve: (result: {}) => void;\n promise: Promise<{}>;\n args: Array;\n callback: LegacyIORedis.CallbackFunction;\n name: string;\n}\n\nexport type IORedisCommand = Command | LegacyIORedisCommand;\nexport type RedisInterface = Redis | LegacyIORedis.Redis;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.d.ts new file mode 100644 index 0000000..0ccccfb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.d.ts @@ -0,0 +1,66 @@ +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export declare const ATTR_DB_CONNECTION_STRING: "db.connection_string"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Redis](https://redis.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_REDIS: "redis"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM}. + * + * Redis + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_REDIS: "redis"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.js new file mode 100644 index 0000000..335175f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.js @@ -0,0 +1,89 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +exports.ATTR_DB_CONNECTION_STRING = 'db.connection_string'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +exports.ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +exports.ATTR_DB_SYSTEM = 'db.system'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Redis](https://redis.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_REDIS = 'redis'; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM}. + * + * Redis + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_REDIS = 'redis'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.js.map new file mode 100644 index 0000000..08e855b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = 'redis' as const;\n\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 */\nexport const DB_SYSTEM_VALUE_REDIS = 'redis' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/types.d.ts new file mode 100644 index 0000000..8f93fba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/types.d.ts @@ -0,0 +1,47 @@ +/// +/// +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import { Span } from '@opentelemetry/api'; +export type CommandArgs = Array; +/** + * Function that can be used to serialize db.statement tag + * @param cmdName - The name of the command (eg. set, get, mset) + * @param cmdArgs - Array of arguments passed to the command + * + * @returns serialized string that will be used as the db.statement attribute. + */ +export type DbStatementSerializer = (cmdName: string, cmdArgs: CommandArgs) => string; +export interface IORedisRequestHookInformation { + moduleVersion?: string; + cmdName: string; + cmdArgs: CommandArgs; +} +export interface RedisRequestCustomAttributeFunction { + (span: Span, requestInfo: IORedisRequestHookInformation): void; +} +/** + * Function that can be used to add custom attributes to span on response from redis server + * @param span - The span created for the redis command, on which attributes can be set + * @param cmdName - The name of the command (eg. set, get, mset) + * @param cmdArgs - Array of arguments passed to the command + * @param response - The response object which is returned to the user who called this command. + * Can be used to set custom attributes on the span. + * The type of the response varies depending on the specific command. + */ +export interface RedisResponseCustomAttributeFunction { + (span: Span, cmdName: string, cmdArgs: CommandArgs, response: unknown): void; +} +/** + * Options available for the IORedis Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-ioredis/README.md#ioredis-instrumentation-options)) + */ +export interface IORedisInstrumentationConfig extends InstrumentationConfig { + /** Custom serializer function for the db.statement tag */ + dbStatementSerializer?: DbStatementSerializer; + /** Function for adding custom attributes on db request */ + requestHook?: RedisRequestCustomAttributeFunction; + /** Function for adding custom attributes on db response */ + responseHook?: RedisResponseCustomAttributeFunction; + /** Require parent to create ioredis span, default when unset is true */ + requireParentSpan?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/types.js.map new file mode 100644 index 0000000..9c89828 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { Span } from '@opentelemetry/api';\n\nexport type CommandArgs = Array;\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmdName - The name of the command (eg. set, get, mset)\n * @param cmdArgs - Array of arguments passed to the command\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (\n cmdName: string,\n cmdArgs: CommandArgs\n) => string;\n\nexport interface IORedisRequestHookInformation {\n moduleVersion?: string;\n cmdName: string;\n cmdArgs: CommandArgs;\n}\n\nexport interface RedisRequestCustomAttributeFunction {\n (span: Span, requestInfo: IORedisRequestHookInformation): void;\n}\n\n/**\n * Function that can be used to add custom attributes to span on response from redis server\n * @param span - The span created for the redis command, on which attributes can be set\n * @param cmdName - The name of the command (eg. set, get, mset)\n * @param cmdArgs - Array of arguments passed to the command\n * @param response - The response object which is returned to the user who called this command.\n * Can be used to set custom attributes on the span.\n * The type of the response varies depending on the specific command.\n */\nexport interface RedisResponseCustomAttributeFunction {\n (span: Span, cmdName: string, cmdArgs: CommandArgs, response: unknown): void;\n}\n\n/**\n * Options available for the IORedis Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-ioredis/README.md#ioredis-instrumentation-options))\n */\nexport interface IORedisInstrumentationConfig extends InstrumentationConfig {\n /** Custom serializer function for the db.statement tag */\n dbStatementSerializer?: DbStatementSerializer;\n\n /** Function for adding custom attributes on db request */\n requestHook?: RedisRequestCustomAttributeFunction;\n\n /** Function for adding custom attributes on db response */\n responseHook?: RedisResponseCustomAttributeFunction;\n\n /** Require parent to create ioredis span, default when unset is true */\n requireParentSpan?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.d.ts new file mode 100644 index 0000000..269ea59 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.d.ts @@ -0,0 +1,3 @@ +import { Span } from '@opentelemetry/api'; +export declare const endSpan: (span: Span, err: NodeJS.ErrnoException | null | undefined) => void; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.js new file mode 100644 index 0000000..355804e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.js @@ -0,0 +1,31 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.endSpan = void 0; +const api_1 = require("@opentelemetry/api"); +const endSpan = (span, err) => { + if (err) { + span.recordException(err); + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err.message, + }); + } + span.end(); +}; +exports.endSpan = endSpan; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.js.map new file mode 100644 index 0000000..da58722 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA0D;AAEnD,MAAM,OAAO,GAAG,CACrB,IAAU,EACV,GAA6C,EAC7C,EAAE;IACF,IAAI,GAAG,EAAE;QACP,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,oBAAc,CAAC,KAAK;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;KACJ;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,CAAC,CAAC;AAZW,QAAA,OAAO,WAYlB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Span, SpanStatusCode } from '@opentelemetry/api';\n\nexport const endSpan = (\n span: Span,\n err: NodeJS.ErrnoException | null | undefined\n) => {\n if (err) {\n span.recordException(err);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n span.end();\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.d.ts new file mode 100644 index 0000000..11b0d3e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.59.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-ioredis"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.js new file mode 100644 index 0000000..cdaa6e0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.59.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-ioredis'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.js.map new file mode 100644 index 0000000..58e248d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,wCAAwC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.59.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-ioredis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/package.json new file mode 100644 index 0000000..0923c59 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-ioredis/package.json @@ -0,0 +1,69 @@ +{ + "name": "@opentelemetry/instrumentation-ioredis", + "version": "0.59.0", + "description": "OpenTelemetry instrumentation for `ioredis` database redis client for Redis", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-ioredis" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-ioredis", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test:debug": "cross-env RUN_REDIS_TESTS=true mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-services:start": "cd ../.. && npm run test-services:start redis", + "test-services:stop": "cd ../.. && npm run test-services:stop redis", + "version:update": "node ../../scripts/version-update.js" + }, + "keywords": [ + "instrumentation", + "ioredis", + "nodejs", + "opentelemetry", + "profiling", + "redis", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "@types/ioredis4": "npm:@types/ioredis@4.28.10", + "ioredis": "5.8.2" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/redis-common": "^0.38.2", + "@opentelemetry/semantic-conventions": "^1.33.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-ioredis#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/README.md new file mode 100644 index 0000000..5ee9759 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/README.md @@ -0,0 +1,107 @@ +# OpenTelemetry `kafkajs` Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`kafkajs`](https://www.npmjs.com/package/kafkajs) package, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-kafkajs +``` + +### Supported versions + +- [`kafkajs`](https://www.npmjs.com/package/kafkajs) versions `>=0.3.0 <3` + +## Usage + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { + KafkaJsInstrumentation, +} = require('@opentelemetry/instrumentation-kafkajs'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new KafkaJsInstrumentation({ + // see below for available configuration + }), + ], +}); +``` + +### Instrumentation Options + +You can set the following: + +| Options | Type | Description | +|----------------|----------------------------------------|----------------------------------------------------------------------------------------------------------| +| `producerHook` | `KafkaProducerCustomAttributeFunction` | Function called before a producer message is sent. Allows for adding custom attributes to the span. | +| `consumerHook` | `KafkaConsumerCustomAttributeFunction` | Function called before a consumer message is processed. Allows for adding custom attributes to the span. | + +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.30+`, which implements Semantic Convention [Version 1.30.0](https://github.com/open-telemetry/semantic-conventions/blob/v1.30.0/docs/README.md) + +### Spans Emitted + +| KafkaJS Object | Action | Span Kind | Span Name | Operation Type / Name | +|----------------|----------------------------|-----------|----------------------------|-----------------------| +| Consumer | `eachBatch` | Client | `poll ` | `receive` / `poll` | +| Consumer | `eachBatch`, `eachMessage` | Consumer | `process ` [1] | `process` / `process` | +| Producer | `send` | Producer | `send ` | `send` / `send` | + +**[1] `process `:** In the context of `eachBatch`, this span will be emitted for each message in the batch but the timing (start, end, duration) will reflect the timing of the batch. + +### Metrics Emitted + +| KafkaJS Object | Metric Name | Short Description | +|-----------------------|---------------------------------------|--------------------------------------------------------------------------------------------------------| +| Consumer | `messaging.process.duration` | Duration of processing operation. [1] | +| Consumer | `messaging.client.consumed.messages` | Number of messages that were delivered to the application. | +| Consumer and Producer | `messaging.client.operation.duration` | Number of messages that were delivered to the application. (Only emitted for kafkajs@1.5.0 and later.) | +| Producer | `messaging.client.sent.messages` | Number of messages producer attempted to send to the broker. | + +**[1] `messaging.process.duration`:** In the context of `eachBatch`, this metric will be emitted once for each message but the value reflects the duration of the entire batch. + +### Attributes Collected + +These attributes are added to both spans and metrics, where possible. + +| Attribute | Short Description | +|--------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `messaging.system` | An identifier for the messaging system being used (i.e. `"kafka"`). | +| `messaging.destination.name` | The message destination name. | +| `messaging.operation.type` | A string identifying the type of messaging operation. | +| `messaging.operation.name` | The system-specific name of the messaging operation. | +| `messaging.operation.name` | The system-specific name of the messaging operation. | +| `messaging.kafka.message.key` | A stringified value representing the key of the Kafka message (if present). | +| `messaging.kafka.message.tombstone` | A boolean that is true if the message is a tombstone. | +| `messaging.kafka.offset` | The offset of a record in the corresponding Kafka partition. | +| `messaging.destination.partition.id` | The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`. **Note:** only available on producer spans. | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-kafkajs +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-kafkajs.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.d.ts new file mode 100644 index 0000000..ea43b59 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { KafkaJsInstrumentation } from './instrumentation'; +export type { KafkaConsumerCustomAttributeFunction, KafkaJsInstrumentationConfig, KafkaProducerCustomAttributeFunction, KafkajsMessage, MessageInfo, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.js new file mode 100644 index 0000000..217db7b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors, Aspecto + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KafkaJsInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "KafkaJsInstrumentation", { enumerable: true, get: function () { return instrumentation_1.KafkaJsInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.js.map new file mode 100644 index 0000000..a309c07 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA","sourcesContent":["/*\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 */\n\nexport { KafkaJsInstrumentation } from './instrumentation';\nexport type {\n KafkaConsumerCustomAttributeFunction,\n KafkaJsInstrumentationConfig,\n KafkaProducerCustomAttributeFunction,\n KafkajsMessage,\n MessageInfo,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.d.ts new file mode 100644 index 0000000..9885cf4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.d.ts @@ -0,0 +1,25 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { KafkaJsInstrumentationConfig } from './types'; +export declare class KafkaJsInstrumentation extends InstrumentationBase { + private _clientDuration; + private _sentMessages; + private _consumedMessages; + private _processDuration; + constructor(config?: KafkaJsInstrumentationConfig); + _updateMetricInstruments(): void; + protected init(): InstrumentationNodeModuleDefinition; + private _getConsumerPatch; + private _setKafkaEventListeners; + private _recordClientDurationMetric; + private _getProducerPatch; + private _getConsumerRunPatch; + private _getConsumerEachMessagePatch; + private _getConsumerEachBatchPatch; + private _getProducerTransactionPatch; + private _getSendBatchPatch; + private _getSendPatch; + private _endSpansOnPromise; + private _startConsumerSpan; + private _startProducerSpan; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.js new file mode 100644 index 0000000..ecd910c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.js @@ -0,0 +1,451 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors, Aspecto + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KafkaJsInstrumentation = void 0; +const api_1 = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const internal_types_1 = require("./internal-types"); +const propagator_1 = require("./propagator"); +const semconv_1 = require("./semconv"); +/** @knipignore */ +const version_1 = require("./version"); +function prepareCounter(meter, value, attributes) { + return (errorType) => { + meter.add(value, { + ...attributes, + ...(errorType ? { [semantic_conventions_1.ATTR_ERROR_TYPE]: errorType } : {}), + }); + }; +} +function prepareDurationHistogram(meter, value, attributes) { + return (errorType) => { + meter.record((Date.now() - value) / 1000, { + ...attributes, + ...(errorType ? { [semantic_conventions_1.ATTR_ERROR_TYPE]: errorType } : {}), + }); + }; +} +const HISTOGRAM_BUCKET_BOUNDARIES = [ + 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 KafkaJsInstrumentation extends instrumentation_1.InstrumentationBase { + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + } + _updateMetricInstruments() { + this._clientDuration = this.meter.createHistogram(semconv_1.METRIC_MESSAGING_CLIENT_OPERATION_DURATION, { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } }); + this._sentMessages = this.meter.createCounter(semconv_1.METRIC_MESSAGING_CLIENT_SENT_MESSAGES); + this._consumedMessages = this.meter.createCounter(semconv_1.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES); + this._processDuration = this.meter.createHistogram(semconv_1.METRIC_MESSAGING_PROCESS_DURATION, { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } }); + } + init() { + const unpatch = (moduleExports) => { + if ((0, instrumentation_1.isWrapped)(moduleExports?.Kafka?.prototype.producer)) { + this._unwrap(moduleExports.Kafka.prototype, 'producer'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports?.Kafka?.prototype.consumer)) { + this._unwrap(moduleExports.Kafka.prototype, 'consumer'); + } + }; + const module = new instrumentation_1.InstrumentationNodeModuleDefinition('kafkajs', ['>=0.3.0 <3'], (moduleExports) => { + unpatch(moduleExports); + this._wrap(moduleExports?.Kafka?.prototype, 'producer', this._getProducerPatch()); + this._wrap(moduleExports?.Kafka?.prototype, 'consumer', this._getConsumerPatch()); + return moduleExports; + }, unpatch); + return module; + } + _getConsumerPatch() { + const instrumentation = this; + return (original) => { + return function consumer(...args) { + const newConsumer = original.apply(this, args); + if ((0, instrumentation_1.isWrapped)(newConsumer.run)) { + instrumentation._unwrap(newConsumer, 'run'); + } + instrumentation._wrap(newConsumer, 'run', instrumentation._getConsumerRunPatch()); + instrumentation._setKafkaEventListeners(newConsumer); + return newConsumer; + }; + }; + } + _setKafkaEventListeners(kafkaObj) { + if (kafkaObj[internal_types_1.EVENT_LISTENERS_SET]) + return; + // The REQUEST Consumer event was added in kafkajs@1.5.0. + if (kafkaObj.events?.REQUEST) { + kafkaObj.on(kafkaObj.events.REQUEST, this._recordClientDurationMetric.bind(this)); + } + kafkaObj[internal_types_1.EVENT_LISTENERS_SET] = true; + } + _recordClientDurationMetric(event) { + const [address, port] = event.payload.broker.split(':'); + this._clientDuration.record(event.payload.duration / 1000, { + [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA, + [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: `${event.payload.apiName}`, + [semantic_conventions_1.ATTR_SERVER_ADDRESS]: address, + [semantic_conventions_1.ATTR_SERVER_PORT]: Number.parseInt(port, 10), + }); + } + _getProducerPatch() { + const instrumentation = this; + return (original) => { + return function consumer(...args) { + const newProducer = original.apply(this, args); + if ((0, instrumentation_1.isWrapped)(newProducer.sendBatch)) { + instrumentation._unwrap(newProducer, 'sendBatch'); + } + instrumentation._wrap(newProducer, 'sendBatch', instrumentation._getSendBatchPatch()); + if ((0, instrumentation_1.isWrapped)(newProducer.send)) { + instrumentation._unwrap(newProducer, 'send'); + } + instrumentation._wrap(newProducer, 'send', instrumentation._getSendPatch()); + if ((0, instrumentation_1.isWrapped)(newProducer.transaction)) { + instrumentation._unwrap(newProducer, 'transaction'); + } + instrumentation._wrap(newProducer, 'transaction', instrumentation._getProducerTransactionPatch()); + instrumentation._setKafkaEventListeners(newProducer); + return newProducer; + }; + }; + } + _getConsumerRunPatch() { + const instrumentation = this; + return (original) => { + return function run(...args) { + const config = args[0]; + if (config?.eachMessage) { + if ((0, instrumentation_1.isWrapped)(config.eachMessage)) { + instrumentation._unwrap(config, 'eachMessage'); + } + instrumentation._wrap(config, 'eachMessage', instrumentation._getConsumerEachMessagePatch()); + } + if (config?.eachBatch) { + if ((0, instrumentation_1.isWrapped)(config.eachBatch)) { + instrumentation._unwrap(config, 'eachBatch'); + } + instrumentation._wrap(config, 'eachBatch', instrumentation._getConsumerEachBatchPatch()); + } + return original.call(this, config); + }; + }; + } + _getConsumerEachMessagePatch() { + const instrumentation = this; + return (original) => { + return function eachMessage(...args) { + const payload = args[0]; + const propagatedContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, payload.message.headers, propagator_1.bufferTextMapGetter); + const span = instrumentation._startConsumerSpan({ + topic: payload.topic, + message: payload.message, + operationType: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_PROCESS, + ctx: propagatedContext, + attributes: { + [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.partition), + }, + }); + const pendingMetrics = [ + prepareDurationHistogram(instrumentation._processDuration, Date.now(), { + [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA, + [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process', + [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.topic, + [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.partition), + }), + prepareCounter(instrumentation._consumedMessages, 1, { + [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA, + [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process', + [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.topic, + [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.partition), + }), + ]; + const eachMessagePromise = api_1.context.with(api_1.trace.setSpan(propagatedContext, span), () => { + return original.apply(this, args); + }); + return instrumentation._endSpansOnPromise([span], pendingMetrics, eachMessagePromise); + }; + }; + } + _getConsumerEachBatchPatch() { + return (original) => { + const instrumentation = this; + return function eachBatch(...args) { + const payload = args[0]; + // https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/messaging.md#topic-with-multiple-consumers + const receivingSpan = instrumentation._startConsumerSpan({ + topic: payload.batch.topic, + message: undefined, + operationType: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE, + ctx: api_1.ROOT_CONTEXT, + attributes: { + [semconv_1.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]: payload.batch.messages.length, + [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition), + }, + }); + return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), receivingSpan), () => { + const startTime = Date.now(); + const spans = []; + const pendingMetrics = [ + prepareCounter(instrumentation._consumedMessages, payload.batch.messages.length, { + [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA, + [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process', + [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic, + [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition), + }), + ]; + payload.batch.messages.forEach(message => { + const propagatedContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, message.headers, propagator_1.bufferTextMapGetter); + const spanContext = api_1.trace + .getSpan(propagatedContext) + ?.spanContext(); + let origSpanLink; + if (spanContext) { + origSpanLink = { + context: spanContext, + }; + } + spans.push(instrumentation._startConsumerSpan({ + topic: payload.batch.topic, + message, + operationType: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_PROCESS, + link: origSpanLink, + attributes: { + [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition), + }, + })); + pendingMetrics.push(prepareDurationHistogram(instrumentation._processDuration, startTime, { + [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA, + [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process', + [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic, + [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition), + })); + }); + const batchMessagePromise = original.apply(this, args); + spans.unshift(receivingSpan); + return instrumentation._endSpansOnPromise(spans, pendingMetrics, batchMessagePromise); + }); + }; + }; + } + _getProducerTransactionPatch() { + const instrumentation = this; + return (original) => { + return function transaction(...args) { + const transactionSpan = instrumentation.tracer.startSpan('transaction'); + const transactionPromise = original.apply(this, args); + transactionPromise + .then((transaction) => { + const originalSend = transaction.send; + transaction.send = function send(...args) { + return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), transactionSpan), () => { + const patched = instrumentation._getSendPatch()(originalSend); + return patched.apply(this, args).catch(err => { + transactionSpan.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err?.message, + }); + transactionSpan.recordException(err); + throw err; + }); + }); + }; + const originalSendBatch = transaction.sendBatch; + transaction.sendBatch = function sendBatch(...args) { + return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), transactionSpan), () => { + const patched = instrumentation._getSendBatchPatch()(originalSendBatch); + return patched.apply(this, args).catch(err => { + transactionSpan.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err?.message, + }); + transactionSpan.recordException(err); + throw err; + }); + }); + }; + const originalCommit = transaction.commit; + transaction.commit = function commit(...args) { + const originCommitPromise = originalCommit + .apply(this, args) + .then(() => { + transactionSpan.setStatus({ code: api_1.SpanStatusCode.OK }); + }); + return instrumentation._endSpansOnPromise([transactionSpan], [], originCommitPromise); + }; + const originalAbort = transaction.abort; + transaction.abort = function abort(...args) { + const originAbortPromise = originalAbort.apply(this, args); + return instrumentation._endSpansOnPromise([transactionSpan], [], originAbortPromise); + }; + }) + .catch(err => { + transactionSpan.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err?.message, + }); + transactionSpan.recordException(err); + transactionSpan.end(); + }); + return transactionPromise; + }; + }; + } + _getSendBatchPatch() { + const instrumentation = this; + return (original) => { + return function sendBatch(...args) { + const batch = args[0]; + const messages = batch.topicMessages || []; + const spans = []; + const pendingMetrics = []; + messages.forEach(topicMessage => { + topicMessage.messages.forEach(message => { + spans.push(instrumentation._startProducerSpan(topicMessage.topic, message)); + pendingMetrics.push(prepareCounter(instrumentation._sentMessages, 1, { + [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA, + [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'send', + [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: topicMessage.topic, + ...(message.partition !== undefined + ? { + [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(message.partition), + } + : {}), + })); + }); + }); + const origSendResult = original.apply(this, args); + return instrumentation._endSpansOnPromise(spans, pendingMetrics, origSendResult); + }; + }; + } + _getSendPatch() { + const instrumentation = this; + return (original) => { + return function send(...args) { + const record = args[0]; + const spans = record.messages.map(message => { + return instrumentation._startProducerSpan(record.topic, message); + }); + const pendingMetrics = record.messages.map(m => prepareCounter(instrumentation._sentMessages, 1, { + [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA, + [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'send', + [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: record.topic, + ...(m.partition !== undefined + ? { + [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(m.partition), + } + : {}), + })); + const origSendResult = original.apply(this, args); + return instrumentation._endSpansOnPromise(spans, pendingMetrics, origSendResult); + }; + }; + } + _endSpansOnPromise(spans, pendingMetrics, sendPromise) { + return Promise.resolve(sendPromise) + .then(result => { + pendingMetrics.forEach(m => m()); + return result; + }) + .catch(reason => { + let errorMessage; + let errorType = semantic_conventions_1.ERROR_TYPE_VALUE_OTHER; + if (typeof reason === 'string' || reason === undefined) { + errorMessage = reason; + } + else if (typeof reason === 'object' && + Object.prototype.hasOwnProperty.call(reason, 'message')) { + errorMessage = reason.message; + errorType = reason.constructor.name; + } + pendingMetrics.forEach(m => m(errorType)); + spans.forEach(span => { + span.setAttribute(semantic_conventions_1.ATTR_ERROR_TYPE, errorType); + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: errorMessage, + }); + }); + throw reason; + }) + .finally(() => { + spans.forEach(span => span.end()); + }); + } + _startConsumerSpan({ topic, message, operationType, ctx, link, attributes, }) { + const operationName = operationType === semconv_1.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE + ? 'poll' // for batch processing spans + : operationType; // for individual message processing spans + const span = this.tracer.startSpan(`${operationName} ${topic}`, { + kind: operationType === semconv_1.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE + ? api_1.SpanKind.CLIENT + : api_1.SpanKind.CONSUMER, + attributes: { + ...attributes, + [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA, + [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: topic, + [semconv_1.ATTR_MESSAGING_OPERATION_TYPE]: operationType, + [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: operationName, + [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message?.key + ? String(message.key) + : undefined, + [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]: message?.key && message.value === null ? true : undefined, + [semconv_1.ATTR_MESSAGING_KAFKA_OFFSET]: message?.offset, + }, + links: link ? [link] : [], + }, ctx); + const { consumerHook } = this.getConfig(); + if (consumerHook && message) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumerHook(span, { topic, message }), e => { + if (e) + this._diag.error('consumerHook error', e); + }, true); + } + return span; + } + _startProducerSpan(topic, message) { + const span = this.tracer.startSpan(`send ${topic}`, { + kind: api_1.SpanKind.PRODUCER, + attributes: { + [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA, + [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: topic, + [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message.key + ? String(message.key) + : undefined, + [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]: message.key && message.value === null ? true : undefined, + [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: message.partition !== undefined + ? String(message.partition) + : undefined, + [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'send', + [semconv_1.ATTR_MESSAGING_OPERATION_TYPE]: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_SEND, + }, + }); + message.headers = message.headers ?? {}; + api_1.propagation.inject(api_1.trace.setSpan(api_1.context.active(), span), message.headers); + const { producerHook } = this.getConfig(); + if (producerHook) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => producerHook(span, { topic, message }), e => { + if (e) + this._diag.error('producerHook error', e); + }, true); + } + return span; + } +} +exports.KafkaJsInstrumentation = KafkaJsInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.js.map new file mode 100644 index 0000000..84a98a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\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 */\n\nimport {\n Attributes,\n Context,\n context,\n Counter,\n Histogram,\n Link,\n propagation,\n ROOT_CONTEXT,\n Span,\n SpanKind,\n SpanStatusCode,\n trace,\n} from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ERROR_TYPE_VALUE_OTHER,\n} from '@opentelemetry/semantic-conventions';\nimport type * as kafkaJs from 'kafkajs';\nimport type {\n Consumer,\n ConsumerRunConfig,\n EachBatchHandler,\n EachMessageHandler,\n KafkaMessage,\n Message,\n Producer,\n RecordMetadata,\n} from 'kafkajs';\nimport { EVENT_LISTENERS_SET } from './internal-types';\nimport { bufferTextMapGetter } from './propagator';\nimport {\n ATTR_MESSAGING_BATCH_MESSAGE_COUNT,\n ATTR_MESSAGING_DESTINATION_NAME,\n ATTR_MESSAGING_DESTINATION_PARTITION_ID,\n ATTR_MESSAGING_KAFKA_MESSAGE_KEY,\n ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE,\n ATTR_MESSAGING_KAFKA_OFFSET,\n ATTR_MESSAGING_OPERATION_NAME,\n ATTR_MESSAGING_OPERATION_TYPE,\n ATTR_MESSAGING_SYSTEM,\n MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,\n MESSAGING_OPERATION_TYPE_VALUE_SEND,\n MESSAGING_SYSTEM_VALUE_KAFKA,\n METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES,\n METRIC_MESSAGING_CLIENT_OPERATION_DURATION,\n METRIC_MESSAGING_CLIENT_SENT_MESSAGES,\n METRIC_MESSAGING_PROCESS_DURATION,\n} from './semconv';\nimport { KafkaJsInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\ninterface ConsumerSpanOptions {\n topic: string;\n message: KafkaMessage | undefined;\n operationType: string;\n attributes: Attributes;\n ctx?: Context | undefined;\n link?: Link;\n}\n// This interface acts as a strict subset of the KafkaJS Consumer and\n// Producer interfaces (just for the event we're needing)\ninterface KafkaEventEmitter {\n on(\n eventName:\n | kafkaJs.ConsumerEvents['REQUEST']\n | kafkaJs.ProducerEvents['REQUEST'],\n listener: (event: kafkaJs.RequestEvent) => void\n ): void;\n events: {\n REQUEST:\n | kafkaJs.ConsumerEvents['REQUEST']\n | kafkaJs.ProducerEvents['REQUEST'];\n };\n [EVENT_LISTENERS_SET]?: boolean;\n}\n\ninterface StandardAttributes extends Attributes {\n [ATTR_MESSAGING_SYSTEM]: string;\n [ATTR_MESSAGING_OPERATION_NAME]: OP;\n [ATTR_ERROR_TYPE]?: string;\n}\ninterface TopicAttributes {\n [ATTR_MESSAGING_DESTINATION_NAME]: string;\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]?: string;\n}\n\ninterface ClientDurationAttributes\n extends StandardAttributes,\n Partial {\n [ATTR_SERVER_ADDRESS]: string;\n [ATTR_SERVER_PORT]: number;\n [ATTR_MESSAGING_OPERATION_TYPE]?: string;\n}\ninterface SentMessagesAttributes\n extends StandardAttributes<'send'>,\n TopicAttributes {\n [ATTR_ERROR_TYPE]?: string;\n}\ntype ConsumedMessagesAttributes = StandardAttributes<'receive' | 'process'>;\ninterface MessageProcessDurationAttributes\n extends StandardAttributes<'process'>,\n TopicAttributes {\n [ATTR_MESSAGING_SYSTEM]: string;\n [ATTR_MESSAGING_OPERATION_NAME]: 'process';\n [ATTR_ERROR_TYPE]?: string;\n}\ntype RecordPendingMetric = (errorType?: string | undefined) => void;\n\nfunction prepareCounter(\n meter: Counter,\n value: number,\n attributes: T\n): RecordPendingMetric {\n return (errorType?: string | undefined) => {\n meter.add(value, {\n ...attributes,\n ...(errorType ? { [ATTR_ERROR_TYPE]: errorType } : {}),\n });\n };\n}\n\nfunction prepareDurationHistogram(\n meter: Histogram,\n value: number,\n attributes: T\n): RecordPendingMetric {\n return (errorType?: string | undefined) => {\n meter.record((Date.now() - value) / 1000, {\n ...attributes,\n ...(errorType ? { [ATTR_ERROR_TYPE]: errorType } : {}),\n });\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];\nexport class KafkaJsInstrumentation extends InstrumentationBase {\n declare private _clientDuration: Histogram;\n declare private _sentMessages: Counter;\n declare private _consumedMessages: Counter;\n declare private _processDuration: Histogram;\n\n constructor(config: KafkaJsInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n override _updateMetricInstruments() {\n this._clientDuration = this.meter.createHistogram(\n METRIC_MESSAGING_CLIENT_OPERATION_DURATION,\n { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } }\n );\n this._sentMessages = this.meter.createCounter(\n METRIC_MESSAGING_CLIENT_SENT_MESSAGES\n );\n this._consumedMessages = this.meter.createCounter(\n METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES\n );\n this._processDuration = this.meter.createHistogram(\n METRIC_MESSAGING_PROCESS_DURATION,\n { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } }\n );\n }\n\n protected init() {\n const unpatch = (moduleExports: typeof kafkaJs) => {\n if (isWrapped(moduleExports?.Kafka?.prototype.producer)) {\n this._unwrap(moduleExports.Kafka.prototype, 'producer');\n }\n if (isWrapped(moduleExports?.Kafka?.prototype.consumer)) {\n this._unwrap(moduleExports.Kafka.prototype, 'consumer');\n }\n };\n\n const module = new InstrumentationNodeModuleDefinition(\n 'kafkajs',\n ['>=0.3.0 <3'],\n (moduleExports: typeof kafkaJs) => {\n unpatch(moduleExports);\n this._wrap(\n moduleExports?.Kafka?.prototype,\n 'producer',\n this._getProducerPatch()\n );\n this._wrap(\n moduleExports?.Kafka?.prototype,\n 'consumer',\n this._getConsumerPatch()\n );\n\n return moduleExports;\n },\n unpatch\n );\n return module;\n }\n\n private _getConsumerPatch() {\n const instrumentation = this;\n return (original: kafkaJs.Kafka['consumer']) => {\n return function consumer(\n this: kafkaJs.Kafka,\n ...args: Parameters\n ) {\n const newConsumer: Consumer = original.apply(this, args);\n\n if (isWrapped(newConsumer.run)) {\n instrumentation._unwrap(newConsumer, 'run');\n }\n\n instrumentation._wrap(\n newConsumer,\n 'run',\n instrumentation._getConsumerRunPatch()\n );\n\n instrumentation._setKafkaEventListeners(newConsumer);\n\n return newConsumer;\n };\n };\n }\n\n private _setKafkaEventListeners(kafkaObj: KafkaEventEmitter) {\n if (kafkaObj[EVENT_LISTENERS_SET]) return;\n\n // The REQUEST Consumer event was added in kafkajs@1.5.0.\n if (kafkaObj.events?.REQUEST) {\n kafkaObj.on(\n kafkaObj.events.REQUEST,\n this._recordClientDurationMetric.bind(this)\n );\n }\n\n kafkaObj[EVENT_LISTENERS_SET] = true;\n }\n\n private _recordClientDurationMetric(\n event: Pick\n ) {\n const [address, port] = event.payload.broker.split(':');\n this._clientDuration.record(event.payload.duration / 1000, {\n [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n [ATTR_MESSAGING_OPERATION_NAME]: `${event.payload.apiName}`, // potentially suffix with @v${event.payload.apiVersion}?\n [ATTR_SERVER_ADDRESS]: address,\n [ATTR_SERVER_PORT]: Number.parseInt(port, 10),\n });\n }\n\n private _getProducerPatch() {\n const instrumentation = this;\n return (original: kafkaJs.Kafka['producer']) => {\n return function consumer(\n this: kafkaJs.Kafka,\n ...args: Parameters\n ) {\n const newProducer: Producer = original.apply(this, args);\n\n if (isWrapped(newProducer.sendBatch)) {\n instrumentation._unwrap(newProducer, 'sendBatch');\n }\n instrumentation._wrap(\n newProducer,\n 'sendBatch',\n instrumentation._getSendBatchPatch()\n );\n\n if (isWrapped(newProducer.send)) {\n instrumentation._unwrap(newProducer, 'send');\n }\n instrumentation._wrap(\n newProducer,\n 'send',\n instrumentation._getSendPatch()\n );\n\n if (isWrapped(newProducer.transaction)) {\n instrumentation._unwrap(newProducer, 'transaction');\n }\n instrumentation._wrap(\n newProducer,\n 'transaction',\n instrumentation._getProducerTransactionPatch()\n );\n\n instrumentation._setKafkaEventListeners(newProducer);\n\n return newProducer;\n };\n };\n }\n\n private _getConsumerRunPatch() {\n const instrumentation = this;\n return (original: Consumer['run']) => {\n return function run(\n this: Consumer,\n ...args: Parameters\n ): ReturnType {\n const config = args[0];\n if (config?.eachMessage) {\n if (isWrapped(config.eachMessage)) {\n instrumentation._unwrap(config, 'eachMessage');\n }\n instrumentation._wrap(\n config,\n 'eachMessage',\n instrumentation._getConsumerEachMessagePatch()\n );\n }\n if (config?.eachBatch) {\n if (isWrapped(config.eachBatch)) {\n instrumentation._unwrap(config, 'eachBatch');\n }\n instrumentation._wrap(\n config,\n 'eachBatch',\n instrumentation._getConsumerEachBatchPatch()\n );\n }\n return original.call(this, config);\n };\n };\n }\n\n private _getConsumerEachMessagePatch() {\n const instrumentation = this;\n return (original: ConsumerRunConfig['eachMessage']) => {\n return function eachMessage(\n this: unknown,\n ...args: Parameters\n ): Promise {\n const payload = args[0];\n const propagatedContext: Context = propagation.extract(\n ROOT_CONTEXT,\n payload.message.headers,\n bufferTextMapGetter\n );\n const span = instrumentation._startConsumerSpan({\n topic: payload.topic,\n message: payload.message,\n operationType: MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n ctx: propagatedContext,\n attributes: {\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n payload.partition\n ),\n },\n });\n\n const pendingMetrics: RecordPendingMetric[] = [\n prepareDurationHistogram(\n instrumentation._processDuration,\n Date.now(),\n {\n [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n [ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n payload.partition\n ),\n }\n ),\n prepareCounter(instrumentation._consumedMessages, 1, {\n [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n [ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n payload.partition\n ),\n }),\n ];\n\n const eachMessagePromise = context.with(\n trace.setSpan(propagatedContext, span),\n () => {\n return original!.apply(this, args);\n }\n );\n return instrumentation._endSpansOnPromise(\n [span],\n pendingMetrics,\n eachMessagePromise\n );\n };\n };\n }\n\n private _getConsumerEachBatchPatch() {\n return (original: ConsumerRunConfig['eachBatch']) => {\n const instrumentation = this;\n return function eachBatch(\n this: unknown,\n ...args: Parameters\n ): Promise {\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: MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,\n ctx: ROOT_CONTEXT,\n attributes: {\n [ATTR_MESSAGING_BATCH_MESSAGE_COUNT]: payload.batch.messages.length,\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n payload.batch.partition\n ),\n },\n });\n return context.with(\n trace.setSpan(context.active(), receivingSpan),\n () => {\n const startTime = Date.now();\n const spans: Span[] = [];\n const pendingMetrics: RecordPendingMetric[] = [\n prepareCounter(\n instrumentation._consumedMessages,\n payload.batch.messages.length,\n {\n [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n [ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n payload.batch.partition\n ),\n }\n ),\n ];\n payload.batch.messages.forEach(message => {\n const propagatedContext: Context = propagation.extract(\n ROOT_CONTEXT,\n message.headers,\n bufferTextMapGetter\n );\n const spanContext = trace\n .getSpan(propagatedContext)\n ?.spanContext();\n let origSpanLink: Link | undefined;\n if (spanContext) {\n origSpanLink = {\n context: spanContext,\n };\n }\n spans.push(\n instrumentation._startConsumerSpan({\n topic: payload.batch.topic,\n message,\n operationType: MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n link: origSpanLink,\n attributes: {\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n payload.batch.partition\n ),\n },\n })\n );\n pendingMetrics.push(\n prepareDurationHistogram(\n instrumentation._processDuration,\n startTime,\n {\n [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n [ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n payload.batch.partition\n ),\n }\n )\n );\n });\n const batchMessagePromise: Promise = original!.apply(\n this,\n args\n );\n spans.unshift(receivingSpan);\n return instrumentation._endSpansOnPromise(\n spans,\n pendingMetrics,\n batchMessagePromise\n );\n }\n );\n };\n };\n }\n\n private _getProducerTransactionPatch() {\n const instrumentation = this;\n return (original: Producer['transaction']) => {\n return function transaction(\n this: Producer,\n ...args: Parameters\n ): ReturnType {\n const transactionSpan = instrumentation.tracer.startSpan('transaction');\n\n const transactionPromise = original.apply(this, args);\n\n transactionPromise\n .then((transaction: kafkaJs.Transaction) => {\n const originalSend = transaction.send;\n transaction.send = function send(\n this: kafkaJs.Transaction,\n ...args\n ) {\n return context.with(\n trace.setSpan(context.active(), transactionSpan),\n () => {\n const patched = instrumentation._getSendPatch()(originalSend);\n return patched.apply(this, args).catch(err => {\n transactionSpan.setStatus({\n code: SpanStatusCode.ERROR,\n message: err?.message,\n });\n transactionSpan.recordException(err);\n throw err;\n });\n }\n );\n };\n\n const originalSendBatch = transaction.sendBatch;\n transaction.sendBatch = function sendBatch(\n this: kafkaJs.Transaction,\n ...args\n ) {\n return context.with(\n trace.setSpan(context.active(), transactionSpan),\n () => {\n const patched =\n instrumentation._getSendBatchPatch()(originalSendBatch);\n return patched.apply(this, args).catch(err => {\n transactionSpan.setStatus({\n code: SpanStatusCode.ERROR,\n message: err?.message,\n });\n transactionSpan.recordException(err);\n throw err;\n });\n }\n );\n };\n\n const originalCommit = transaction.commit;\n transaction.commit = function commit(\n this: kafkaJs.Transaction,\n ...args\n ) {\n const originCommitPromise = originalCommit\n .apply(this, args)\n .then(() => {\n transactionSpan.setStatus({ code: SpanStatusCode.OK });\n });\n return instrumentation._endSpansOnPromise(\n [transactionSpan],\n [],\n originCommitPromise\n );\n };\n\n const originalAbort = transaction.abort;\n transaction.abort = function abort(\n this: kafkaJs.Transaction,\n ...args\n ) {\n const originAbortPromise = originalAbort.apply(this, args);\n return instrumentation._endSpansOnPromise(\n [transactionSpan],\n [],\n originAbortPromise\n );\n };\n })\n .catch(err => {\n transactionSpan.setStatus({\n code: SpanStatusCode.ERROR,\n message: err?.message,\n });\n transactionSpan.recordException(err);\n transactionSpan.end();\n });\n\n return transactionPromise;\n };\n };\n }\n\n private _getSendBatchPatch() {\n const instrumentation = this;\n return (\n original: Producer['sendBatch'] | kafkaJs.Transaction['sendBatch']\n ) => {\n return function sendBatch(\n this: kafkaJs.Producer | kafkaJs.Transaction,\n ...args: Parameters\n ): ReturnType {\n const batch = args[0];\n const messages = batch.topicMessages || [];\n\n const spans: Span[] = [];\n const pendingMetrics: RecordPendingMetric[] = [];\n\n messages.forEach(topicMessage => {\n topicMessage.messages.forEach(message => {\n spans.push(\n instrumentation._startProducerSpan(topicMessage.topic, message)\n );\n pendingMetrics.push(\n prepareCounter(instrumentation._sentMessages, 1, {\n [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n [ATTR_MESSAGING_DESTINATION_NAME]: topicMessage.topic,\n ...(message.partition !== undefined\n ? {\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n message.partition\n ),\n }\n : {}),\n })\n );\n });\n });\n const origSendResult: Promise = original.apply(\n this,\n args\n );\n return instrumentation._endSpansOnPromise(\n spans,\n pendingMetrics,\n origSendResult\n );\n };\n };\n }\n\n private _getSendPatch() {\n const instrumentation = this;\n return (original: Producer['send'] | kafkaJs.Transaction['send']) => {\n return function send(\n this: Producer | kafkaJs.Transaction,\n ...args: Parameters\n ): ReturnType {\n const record = args[0];\n const spans: Span[] = record.messages.map(message => {\n return instrumentation._startProducerSpan(record.topic, message);\n });\n\n const pendingMetrics: RecordPendingMetric[] = record.messages.map(m =>\n prepareCounter(instrumentation._sentMessages, 1, {\n [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n [ATTR_MESSAGING_DESTINATION_NAME]: record.topic,\n ...(m.partition !== undefined\n ? {\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n m.partition\n ),\n }\n : {}),\n })\n );\n const origSendResult: Promise = original.apply(\n this,\n args\n );\n return instrumentation._endSpansOnPromise(\n spans,\n pendingMetrics,\n origSendResult\n );\n };\n };\n }\n\n private _endSpansOnPromise(\n spans: Span[],\n pendingMetrics: RecordPendingMetric[],\n sendPromise: Promise\n ): Promise {\n return Promise.resolve(sendPromise)\n .then(result => {\n pendingMetrics.forEach(m => m());\n return result;\n })\n .catch(reason => {\n let errorMessage: string | undefined;\n let errorType: string = ERROR_TYPE_VALUE_OTHER;\n if (typeof reason === 'string' || reason === undefined) {\n errorMessage = reason;\n } else if (\n typeof reason === 'object' &&\n Object.prototype.hasOwnProperty.call(reason, 'message')\n ) {\n errorMessage = reason.message;\n errorType = reason.constructor.name;\n }\n pendingMetrics.forEach(m => m(errorType));\n\n spans.forEach(span => {\n span.setAttribute(ATTR_ERROR_TYPE, errorType);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: errorMessage,\n });\n });\n\n throw reason;\n })\n .finally(() => {\n spans.forEach(span => span.end());\n });\n }\n\n private _startConsumerSpan({\n topic,\n message,\n operationType,\n ctx,\n link,\n attributes,\n }: ConsumerSpanOptions) {\n const operationName =\n operationType === MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n ? 'poll' // for batch processing spans\n : operationType; // for individual message processing spans\n\n const span = this.tracer.startSpan(\n `${operationName} ${topic}`,\n {\n kind:\n operationType === MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n ? SpanKind.CLIENT\n : SpanKind.CONSUMER,\n attributes: {\n ...attributes,\n [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n [ATTR_MESSAGING_DESTINATION_NAME]: topic,\n [ATTR_MESSAGING_OPERATION_TYPE]: operationType,\n [ATTR_MESSAGING_OPERATION_NAME]: operationName,\n [ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message?.key\n ? String(message.key)\n : undefined,\n [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:\n message?.key && message.value === null ? true : undefined,\n [ATTR_MESSAGING_KAFKA_OFFSET]: message?.offset,\n },\n links: link ? [link] : [],\n },\n ctx\n );\n\n const { consumerHook } = this.getConfig();\n if (consumerHook && message) {\n safeExecuteInTheMiddle(\n () => consumerHook(span, { topic, message }),\n e => {\n if (e) this._diag.error('consumerHook error', e);\n },\n true\n );\n }\n\n return span;\n }\n\n private _startProducerSpan(topic: string, message: Message) {\n const span = this.tracer.startSpan(`send ${topic}`, {\n kind: SpanKind.PRODUCER,\n attributes: {\n [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n [ATTR_MESSAGING_DESTINATION_NAME]: topic,\n [ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message.key\n ? String(message.key)\n : undefined,\n [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:\n message.key && message.value === null ? true : undefined,\n [ATTR_MESSAGING_DESTINATION_PARTITION_ID]:\n message.partition !== undefined\n ? String(message.partition)\n : undefined,\n [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n [ATTR_MESSAGING_OPERATION_TYPE]: MESSAGING_OPERATION_TYPE_VALUE_SEND,\n },\n });\n\n message.headers = message.headers ?? {};\n propagation.inject(trace.setSpan(context.active(), span), message.headers);\n\n const { producerHook } = this.getConfig();\n if (producerHook) {\n safeExecuteInTheMiddle(\n () => producerHook(span, { topic, message }),\n e => {\n if (e) this._diag.error('producerHook error', e);\n },\n true\n );\n }\n\n return span;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.d.ts new file mode 100644 index 0000000..ef3c86a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.d.ts @@ -0,0 +1,9 @@ +import type * as KafkaJSTypes from 'kafkajs'; +export declare const EVENT_LISTENERS_SET: unique symbol; +export interface ConsumerExtended extends KafkaJSTypes.Consumer { + [EVENT_LISTENERS_SET]?: boolean; +} +export interface ProducerExtended extends KafkaJSTypes.Producer { + [EVENT_LISTENERS_SET]?: boolean; +} +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.js new file mode 100644 index 0000000..156c406 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.js @@ -0,0 +1,20 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors, Aspecto + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EVENT_LISTENERS_SET = void 0; +exports.EVENT_LISTENERS_SET = Symbol('opentelemetry.instrumentation.kafkajs.eventListenersSet'); +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.js.map new file mode 100644 index 0000000..7cfd770 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIU,QAAA,mBAAmB,GAAG,MAAM,CACvC,yDAAyD,CAC1D,CAAC","sourcesContent":["/*\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 */\n\nimport type * as KafkaJSTypes from 'kafkajs';\n\nexport const EVENT_LISTENERS_SET = Symbol(\n 'opentelemetry.instrumentation.kafkajs.eventListenersSet'\n);\n\nexport interface ConsumerExtended extends KafkaJSTypes.Consumer {\n [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n\nexport interface ProducerExtended extends KafkaJSTypes.Producer {\n [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.d.ts new file mode 100644 index 0000000..a5d5498 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.d.ts @@ -0,0 +1,3 @@ +import { TextMapGetter } from '@opentelemetry/api'; +export declare const bufferTextMapGetter: TextMapGetter; +//# sourceMappingURL=propagator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.js new file mode 100644 index 0000000..a337428 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.bufferTextMapGetter = void 0; +/* +same as open telemetry's `defaultTextMapGetter`, +but also handle case where header is buffer, +adding toString() to make sure string is returned +*/ +exports.bufferTextMapGetter = { + get(carrier, key) { + if (!carrier) { + return undefined; + } + const keys = Object.keys(carrier); + for (const carrierKey of keys) { + if (carrierKey === key || carrierKey.toLowerCase() === key) { + return carrier[carrierKey]?.toString(); + } + } + return undefined; + }, + keys(carrier) { + return carrier ? Object.keys(carrier) : []; + }, +}; +//# sourceMappingURL=propagator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.js.map new file mode 100644 index 0000000..39b2e3c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"propagator.js","sourceRoot":"","sources":["../../src/propagator.ts"],"names":[],"mappings":";;;AAiBA;;;;EAIE;AACW,QAAA,mBAAmB,GAAkB;IAChD,GAAG,CAAC,OAAO,EAAE,GAAG;QACd,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElC,KAAK,MAAM,UAAU,IAAI,IAAI,EAAE;YAC7B,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE;gBAC1D,OAAO,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;aACxC;SACF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,OAAO;QACV,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,CAAC;CACF,CAAC","sourcesContent":["/*\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 */\nimport { TextMapGetter } from '@opentelemetry/api';\n\n/*\nsame as open telemetry's `defaultTextMapGetter`,\nbut also handle case where header is buffer,\nadding toString() to make sure string is returned\n*/\nexport const bufferTextMapGetter: TextMapGetter = {\n get(carrier, key) {\n if (!carrier) {\n return undefined;\n }\n\n const keys = Object.keys(carrier);\n\n for (const carrierKey of keys) {\n if (carrierKey === key || carrierKey.toLowerCase() === key) {\n return carrier[carrierKey]?.toString();\n }\n }\n\n return undefined;\n },\n\n keys(carrier) {\n return carrier ? Object.keys(carrier) : [];\n },\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.d.ts new file mode 100644 index 0000000..f12490e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.d.ts @@ -0,0 +1,131 @@ +/** + * The number of messages sent, received, or processed in the scope of the batching operation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_BATCH_MESSAGE_COUNT: "messaging.batch.message_count"; +/** + * The message destination name + * + * @example MyQueue + * @example MyTopic + * + * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If + * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_NAME: "messaging.destination.name"; +/** + * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`. + * + * @example "1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_PARTITION_ID: "messaging.destination.partition.id"; +/** + * 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. + * + * @example "myKey" + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_KEY: "messaging.kafka.message.key"; +/** + * A boolean that is true if the message is a tombstone. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE: "messaging.kafka.message.tombstone"; +/** + * The offset of a record in the corresponding Kafka partition. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_OFFSET: "messaging.kafka.offset"; +/** + * The system-specific name of the messaging operation. + * + * @example ack + * @example nack + * @example send + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_OPERATION_NAME: "messaging.operation.name"; +/** + * A string identifying the type of the messaging operation. + * + * @note If a custom value is used, it **MUST** be of low cardinality. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_OPERATION_TYPE: "messaging.operation.type"; +/** + * The messaging system as identified by the client instrumentation. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SYSTEM: "messaging.system"; +/** + * Enum value "process" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_PROCESS: "process"; +/** + * Enum value "receive" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE: "receive"; +/** + * Enum value "send" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_SEND: "send"; +/** + * Enum value "kafka" for attribute {@link ATTR_MESSAGING_SYSTEM}. + */ +export declare const MESSAGING_SYSTEM_VALUE_KAFKA: "kafka"; +/** + * Number of messages that were delivered to the application. + * + * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios. + * 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. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES: "messaging.client.consumed.messages"; +/** + * Duration of messaging operation initiated by a producer or consumer client. + * + * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_OPERATION_DURATION: "messaging.client.operation.duration"; +/** + * Number of messages producer attempted to send to the broker. + * + * @note This metric **MUST NOT** count messages that were created but haven't yet been sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_SENT_MESSAGES: "messaging.client.sent.messages"; +/** + * Duration of processing operation. + * + * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_PROCESS_DURATION: "messaging.process.duration"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.js new file mode 100644 index 0000000..3b3648f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.js @@ -0,0 +1,154 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * The number of messages sent, received, or processed in the scope of the batching operation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count'; +/** + * The message destination name + * + * @example MyQueue + * @example MyTopic + * + * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If + * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name'; +/** + * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`. + * + * @example "1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_DESTINATION_PARTITION_ID = 'messaging.destination.partition.id'; +/** + * 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. + * + * @example "myKey" + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message.key'; +/** + * A boolean that is true if the message is a tombstone. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = 'messaging.kafka.message.tombstone'; +/** + * The offset of a record in the corresponding Kafka partition. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset'; +/** + * The system-specific name of the messaging operation. + * + * @example ack + * @example nack + * @example send + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name'; +/** + * A string identifying the type of the messaging operation. + * + * @note If a custom value is used, it **MUST** be of low cardinality. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_OPERATION_TYPE = 'messaging.operation.type'; +/** + * The messaging system as identified by the client instrumentation. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_SYSTEM = 'messaging.system'; +/** + * Enum value "process" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + */ +exports.MESSAGING_OPERATION_TYPE_VALUE_PROCESS = 'process'; +/** + * Enum value "receive" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + */ +exports.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = 'receive'; +/** + * Enum value "send" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + */ +exports.MESSAGING_OPERATION_TYPE_VALUE_SEND = 'send'; +/** + * Enum value "kafka" for attribute {@link ATTR_MESSAGING_SYSTEM}. + */ +exports.MESSAGING_SYSTEM_VALUE_KAFKA = 'kafka'; +/** + * Number of messages that were delivered to the application. + * + * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios. + * 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. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = 'messaging.client.consumed.messages'; +/** + * Duration of messaging operation initiated by a producer or consumer client. + * + * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MESSAGING_CLIENT_OPERATION_DURATION = 'messaging.client.operation.duration'; +/** + * Number of messages producer attempted to send to the broker. + * + * @note This metric **MUST NOT** count messages that were created but haven't yet been sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MESSAGING_CLIENT_SENT_MESSAGES = 'messaging.client.sent.messages'; +/** + * Duration of processing operation. + * + * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MESSAGING_PROCESS_DURATION = 'messaging.process.duration'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.js.map new file mode 100644 index 0000000..aefd321 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACU,QAAA,kCAAkC,GAC7C,+BAAwC,CAAC;AAE3C;;;;;;;;;;GAUG;AACU,QAAA,+BAA+B,GAC1C,4BAAqC,CAAC;AAExC;;;;;;GAMG;AACU,QAAA,uCAAuC,GAClD,oCAA6C,CAAC;AAEhD;;;;;;;;GAQG;AACU,QAAA,gCAAgC,GAC3C,6BAAsC,CAAC;AAEzC;;;;GAIG;AACU,QAAA,sCAAsC,GACjD,mCAA4C,CAAC;AAE/C;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;GAQG;AACU,QAAA,6BAA6B,GACxC,0BAAmC,CAAC;AAEtC;;;;;GAKG;AACU,QAAA,6BAA6B,GACxC,0BAAmC,CAAC;AAEtC;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;GAEG;AACU,QAAA,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;GAEG;AACU,QAAA,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;GAEG;AACU,QAAA,mCAAmC,GAAG,MAAe,CAAC;AAEnE;;GAEG;AACU,QAAA,4BAA4B,GAAG,OAAgB,CAAC;AAE7D;;;;;;;GAOG;AACU,QAAA,yCAAyC,GACpD,oCAA6C,CAAC;AAEhD;;;;;;GAMG;AACU,QAAA,0CAA0C,GACrD,qCAA8C,CAAC;AAEjD;;;;;;GAMG;AACU,QAAA,qCAAqC,GAChD,gCAAyC,CAAC;AAE5C;;;;;;GAMG;AACU,QAAA,iCAAiC,GAC5C,4BAAqC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_MESSAGING_BATCH_MESSAGE_COUNT =\n 'messaging.batch.message_count' as const;\n\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 */\nexport const ATTR_MESSAGING_DESTINATION_NAME =\n 'messaging.destination.name' as const;\n\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 */\nexport const ATTR_MESSAGING_DESTINATION_PARTITION_ID =\n 'messaging.destination.partition.id' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_KEY =\n 'messaging.kafka.message.key' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE =\n 'messaging.kafka.message.tombstone' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset' as const;\n\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 */\nexport const ATTR_MESSAGING_OPERATION_NAME =\n 'messaging.operation.name' as const;\n\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 */\nexport const ATTR_MESSAGING_OPERATION_TYPE =\n 'messaging.operation.type' as const;\n\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 */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Enum value \"process\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PROCESS = 'process' as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = 'receive' as const;\n\n/**\n * Enum value \"send\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SEND = 'send' as const;\n\n/**\n * Enum value \"kafka\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_KAFKA = 'kafka' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES =\n 'messaging.client.consumed.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_OPERATION_DURATION =\n 'messaging.client.operation.duration' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_SENT_MESSAGES =\n 'messaging.client.sent.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_PROCESS_DURATION =\n 'messaging.process.duration' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/types.d.ts new file mode 100644 index 0000000..95ebcdc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/types.d.ts @@ -0,0 +1,28 @@ +/// +/// +import { Span } from '@opentelemetry/api'; +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export interface KafkajsMessage { + key?: Buffer | string | null; + value: Buffer | string | null; + partition?: number; + headers?: Record; + timestamp?: string; +} +export interface MessageInfo { + topic: string; + message: T; +} +export interface KafkaProducerCustomAttributeFunction { + (span: Span, info: MessageInfo): void; +} +export interface KafkaConsumerCustomAttributeFunction { + (span: Span, info: MessageInfo): void; +} +export interface KafkaJsInstrumentationConfig extends InstrumentationConfig { + /** hook for adding custom attributes before producer message is sent */ + producerHook?: KafkaProducerCustomAttributeFunction; + /** hook for adding custom attributes before consumer message is processed */ + consumerHook?: KafkaConsumerCustomAttributeFunction; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/types.js new file mode 100644 index 0000000..11e638d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/types.js.map new file mode 100644 index 0000000..ec06a3b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["/*\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 */\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface KafkajsMessage {\n key?: Buffer | string | null;\n value: Buffer | string | null;\n partition?: number;\n headers?: Record;\n timestamp?: string;\n}\n\nexport interface MessageInfo {\n topic: string;\n message: T;\n}\n\nexport interface KafkaProducerCustomAttributeFunction {\n (span: Span, info: MessageInfo): void;\n}\n\nexport interface KafkaConsumerCustomAttributeFunction {\n (span: Span, info: MessageInfo): void;\n}\n\nexport interface KafkaJsInstrumentationConfig extends InstrumentationConfig {\n /** hook for adding custom attributes before producer message is sent */\n producerHook?: KafkaProducerCustomAttributeFunction;\n\n /** hook for adding custom attributes before consumer message is processed */\n consumerHook?: KafkaConsumerCustomAttributeFunction;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.d.ts new file mode 100644 index 0000000..9dc8be8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.20.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-kafkajs"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.js new file mode 100644 index 0000000..b0080f1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.20.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-kafkajs'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.js.map new file mode 100644 index 0000000..e8dcde0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,wCAAwC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.20.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-kafkajs';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/package.json new file mode 100644 index 0000000..6c59602 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-kafkajs/package.json @@ -0,0 +1,59 @@ +{ + "name": "@opentelemetry/instrumentation-kafkajs", + "version": "0.20.0", + "description": "OpenTelemetry instrumentation for `kafkajs` messaging client for Apache Kafka", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-kafkajs" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-kafkajs", + "lint:readme": "node ../../scripts/lint-readme", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha --require @opentelemetry/contrib-test-utils 'test/**/*.test.ts'", + "test-all-versions": "tav", + "version:update": "node ../../scripts/version-update.js" + }, + "keywords": [ + "kafkajs", + "instrumentation", + "nodejs", + "opentelemetry", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "kafkajs": "^2.2.4" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.30.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-kafkajs#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/README.md new file mode 100644 index 0000000..042edb0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/README.md @@ -0,0 +1,104 @@ +# OpenTelemetry Knex Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`knex`](https://github.com/knex/knex) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. This module allows the user to automatically collect trace data and export them to their backend of choice. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-knex +``` + +### Supported Versions + +- [`knex`](https://www.npmjs.com/package/knex) versions `>=0.10.0 <4` + +## Usage + +```js +const { KnexInstrumentation } = require('@opentelemetry/instrumentation-knex'); +const { ConsoleSpanExporter, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider({ + spanProcessors: [ + new SimpleSpanProcessor(new ConsoleSpanExporter()), + ], +}); + +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new KnexInstrumentation({ + maxQueryLength: 100, + }) + ], + tracerProvider: provider, +}); +``` + +### Configuration Options + +| Options | Type | Example | Description | +| ------- | ---- | ------- | ----------- | +| `maxQueryLength` | `number` | `100` | Truncate `db.statement` attribute to a maximum length. If the statement is truncated `'..'` is added to it's end. Default `1022`. `-1` leaves `db.statement` untouched. | +| `requireParentSpan` | `boolean` | `false` | Don't create spans unless they are part of an existing trace. Default is `false`. | + +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.33+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +This package is capable of emitting both Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) and [Version 1.33.0](https://github.com/open-telemetry/semantic-conventions/blob/v1.33.0/docs/database/database-spans.md) +It is controlled using the environment variable `OTEL_SEMCONV_STABILITY_OPT_IN`, which is a comma separated list of values. +The values `database` and `database/dup` control this instrumentation. +See details for the behavior of each of these values below. +If neither `database` or `database/dup` is included in `OTEL_SEMCONV_STABILITY_OPT_IN`, the old experimental semantic conventions will be used by default. + +### Upgrading Semantic Conventions + +When upgrading to the new semantic conventions, it is recommended to do so in the following order: + +1. Upgrade `@opentelemetry/instrumentation-knex` to the latest version +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=database/dup` to emit both old and new semantic conventions +3. Modify alerts, dashboards, metrics, and other processes to expect the new semantic conventions +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=database` to emit only the new semantic conventions + +This will cause both the old and new semantic conventions to be emitted during the transition period. + +Attributes collected: + +| v1.7.0 semconv | v1.23.0 semconv | Short Description | +| --------------- | -------------------- | --------------------------------------------------------------------------- | +| `db.name` | `db.namespace` | This attribute is used to report the name of the database being accessed. | +| `db.operation` | `db.operation.name` | The name of the operation being executed. | +| `db.sql.table` | `db.collection.name` | The name of the primary table that the operation is acting upon. | +| `db.statement` | `db.query.text` | The database statement being executed. | +| `db.system` | `db.system.name` | An identifier for the database management system (DBMS) product being used. | +| `db.user` | (not included) | Username for accessing the database. | +| `net.peer.name` | `server.address` | Remote hostname or similar. | +| `net.peer.port` | `server.port` | Remote port number. | +| `net.transport` | (not included) | Transport protocol used. | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-knex +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-knex.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/constants.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/constants.d.ts new file mode 100644 index 0000000..1d35bd1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/constants.d.ts @@ -0,0 +1,3 @@ +export declare const MODULE_NAME = "knex"; +export declare const SUPPORTED_VERSIONS: string[]; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/constants.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/constants.js new file mode 100644 index 0000000..9c99ffd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/constants.js @@ -0,0 +1,29 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SUPPORTED_VERSIONS = exports.MODULE_NAME = void 0; +exports.MODULE_NAME = 'knex'; +exports.SUPPORTED_VERSIONS = [ + // use "lib/execution" for runner.js, "lib" for client.js as basepath, latest tested 0.95.6 + '>=0.22.0 <4', + // use "lib" as basepath + '>=0.10.0 <0.18.0', + '>=0.19.0 <0.22.0', + // use "src" as basepath + '>=0.18.0 <0.19.0', +]; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/constants.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/constants.js.map new file mode 100644 index 0000000..91c15fa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEU,QAAA,WAAW,GAAG,MAAM,CAAC;AACrB,QAAA,kBAAkB,GAAG;IAChC,2FAA2F;IAC3F,aAAa;IACb,wBAAwB;IACxB,kBAAkB;IAClB,kBAAkB;IAClB,wBAAwB;IACxB,kBAAkB;CACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport const MODULE_NAME = 'knex';\nexport const SUPPORTED_VERSIONS = [\n // use \"lib/execution\" for runner.js, \"lib\" for client.js as basepath, latest tested 0.95.6\n '>=0.22.0 <4',\n // use \"lib\" as basepath\n '>=0.10.0 <0.18.0',\n '>=0.19.0 <0.22.0',\n // use \"src\" as basepath\n '>=0.18.0 <0.19.0',\n];\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/index.d.ts new file mode 100644 index 0000000..0965786 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { KnexInstrumentation } from './instrumentation'; +export type { KnexInstrumentationConfig } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/index.js new file mode 100644 index 0000000..a7c820f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KnexInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "KnexInstrumentation", { enumerable: true, get: function () { return instrumentation_1.KnexInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/index.js.map new file mode 100644 index 0000000..86b8f84 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAwD;AAA/C,sHAAA,mBAAmB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { KnexInstrumentation } from './instrumentation';\nexport type { KnexInstrumentationConfig } from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/instrumentation.d.ts new file mode 100644 index 0000000..2070bc7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/instrumentation.d.ts @@ -0,0 +1,14 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { KnexInstrumentationConfig } from './types'; +export declare class KnexInstrumentation extends InstrumentationBase { + private _semconvStability; + constructor(config?: KnexInstrumentationConfig); + setConfig(config?: KnexInstrumentationConfig): void; + init(): InstrumentationNodeModuleDefinition; + private getRunnerNodeModuleFileInstrumentation; + private getClientNodeModuleFileInstrumentation; + private createQueryWrapper; + private storeContext; + ensureWrapped(obj: any, methodName: string, wrapper: (original: any) => any): void; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/instrumentation.js new file mode 100644 index 0000000..e5bcef4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/instrumentation.js @@ -0,0 +1,167 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KnexInstrumentation = void 0; +const api = require("@opentelemetry/api"); +/** @knipignore */ +const version_1 = require("./version"); +const constants = require("./constants"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const utils = require("./utils"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +const contextSymbol = Symbol('opentelemetry.instrumentation-knex.context'); +const DEFAULT_CONFIG = { + maxQueryLength: 1022, + requireParentSpan: false, +}; +class KnexInstrumentation extends instrumentation_1.InstrumentationBase { + _semconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config }); + this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + setConfig(config = {}) { + super.setConfig({ ...DEFAULT_CONFIG, ...config }); + } + init() { + const module = new instrumentation_1.InstrumentationNodeModuleDefinition(constants.MODULE_NAME, constants.SUPPORTED_VERSIONS); + module.files.push(this.getClientNodeModuleFileInstrumentation('src'), this.getClientNodeModuleFileInstrumentation('lib'), this.getRunnerNodeModuleFileInstrumentation('src'), this.getRunnerNodeModuleFileInstrumentation('lib'), this.getRunnerNodeModuleFileInstrumentation('lib/execution')); + return module; + } + getRunnerNodeModuleFileInstrumentation(basePath) { + return new instrumentation_1.InstrumentationNodeModuleFile(`knex/${basePath}/runner.js`, constants.SUPPORTED_VERSIONS, (Runner, moduleVersion) => { + this.ensureWrapped(Runner.prototype, 'query', this.createQueryWrapper(moduleVersion)); + return Runner; + }, (Runner, moduleVersion) => { + this._unwrap(Runner.prototype, 'query'); + return Runner; + }); + } + getClientNodeModuleFileInstrumentation(basePath) { + return new instrumentation_1.InstrumentationNodeModuleFile(`knex/${basePath}/client.js`, constants.SUPPORTED_VERSIONS, (Client) => { + this.ensureWrapped(Client.prototype, 'queryBuilder', this.storeContext.bind(this)); + this.ensureWrapped(Client.prototype, 'schemaBuilder', this.storeContext.bind(this)); + this.ensureWrapped(Client.prototype, 'raw', this.storeContext.bind(this)); + return Client; + }, (Client) => { + this._unwrap(Client.prototype, 'queryBuilder'); + this._unwrap(Client.prototype, 'schemaBuilder'); + this._unwrap(Client.prototype, 'raw'); + return Client; + }); + } + createQueryWrapper(moduleVersion) { + const instrumentation = this; + return function wrapQuery(original) { + return function wrapped_logging_method(query) { + const config = this.client.config; + const table = utils.extractTableName(this.builder); + // `method` actually refers to the knex API method - Not exactly "operation" + // in the spec sense, but matches most of the time. + const operation = query?.method; + const name = config?.connection?.filename || config?.connection?.database; + const { maxQueryLength } = instrumentation.getConfig(); + const attributes = { + 'knex.version': moduleVersion, + }; + const transport = config?.connection?.filename === ':memory:' ? 'inproc' : undefined; + if (instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) { + Object.assign(attributes, { + [semconv_1.ATTR_DB_SYSTEM]: utils.mapSystem(this.client.driverName), + [semconv_1.ATTR_DB_SQL_TABLE]: table, + [semconv_1.ATTR_DB_OPERATION]: operation, + [semconv_1.ATTR_DB_USER]: config?.connection?.user, + [semconv_1.ATTR_DB_NAME]: name, + [semconv_1.ATTR_NET_PEER_NAME]: config?.connection?.host, + [semconv_1.ATTR_NET_PEER_PORT]: config?.connection?.port, + [semconv_1.ATTR_NET_TRANSPORT]: transport, + }); + } + if (instrumentation._semconvStability & instrumentation_1.SemconvStability.STABLE) { + Object.assign(attributes, { + [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: utils.mapSystem(this.client.driverName), + [semantic_conventions_1.ATTR_DB_COLLECTION_NAME]: table, + [semantic_conventions_1.ATTR_DB_OPERATION_NAME]: operation, + [semantic_conventions_1.ATTR_DB_NAMESPACE]: name, + [semantic_conventions_1.ATTR_SERVER_ADDRESS]: config?.connection?.host, + [semantic_conventions_1.ATTR_SERVER_PORT]: config?.connection?.port, + }); + } + if (maxQueryLength) { + // filters both undefined and 0 + const queryText = utils.limitLength(query?.sql, maxQueryLength); + if (instrumentation._semconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = queryText; + } + if (instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_STATEMENT] = queryText; + } + } + const parentContext = this.builder[contextSymbol] || api.context.active(); + const parentSpan = api.trace.getSpan(parentContext); + const hasActiveParent = parentSpan && api.trace.isSpanContextValid(parentSpan.spanContext()); + if (instrumentation._config.requireParentSpan && !hasActiveParent) { + return original.bind(this)(...arguments); + } + const span = instrumentation.tracer.startSpan(utils.getName(name, operation, table), { + kind: api.SpanKind.CLIENT, + attributes, + }, parentContext); + const spanContext = api.trace.setSpan(api.context.active(), span); + return api.context + .with(spanContext, original, this, ...arguments) + .then((result) => { + span.end(); + return result; + }) + .catch((err) => { + // knex adds full query with all the binding values to the message, + // we want to undo that without changing the original error + const formatter = utils.getFormatter(this); + const fullQuery = formatter(query.sql, query.bindings || []); + const message = err.message.replace(fullQuery + ' - ', ''); + const exc = utils.otelExceptionFromKnexError(err, message); + span.recordException(exc); + span.setStatus({ code: api.SpanStatusCode.ERROR, message }); + span.end(); + throw err; + }); + }; + }; + } + storeContext(original) { + return function wrapped_logging_method() { + const builder = original.apply(this, arguments); + // Builder is a custom promise type and when awaited it fails to propagate context. + // We store the parent context at the moment of initiating the builder + // otherwise we'd have nothing to attach the span as a child for in `query`. + Object.defineProperty(builder, contextSymbol, { + value: api.context.active(), + }); + return builder; + }; + } + ensureWrapped(obj, methodName, wrapper) { + if ((0, instrumentation_1.isWrapped)(obj[methodName])) { + this._unwrap(obj, methodName); + } + this._wrap(obj, methodName, wrapper); + } +} +exports.KnexInstrumentation = KnexInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/instrumentation.js.map new file mode 100644 index 0000000..cc7746d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport * as constants from './constants';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport * as utils from './utils';\nimport { KnexInstrumentationConfig } from './types';\nimport {\n ATTR_DB_COLLECTION_NAME,\n ATTR_DB_NAMESPACE,\n ATTR_DB_OPERATION_NAME,\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_DB_NAME,\n ATTR_DB_OPERATION,\n ATTR_DB_SQL_TABLE,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_DB_USER,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n ATTR_NET_TRANSPORT,\n} from './semconv';\n\nconst contextSymbol = Symbol('opentelemetry.instrumentation-knex.context');\nconst DEFAULT_CONFIG: KnexInstrumentationConfig = {\n maxQueryLength: 1022,\n requireParentSpan: false,\n};\n\nexport class KnexInstrumentation extends InstrumentationBase {\n private _semconvStability: SemconvStability;\n\n constructor(config: KnexInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n\n this._semconvStability = semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n override setConfig(config: KnexInstrumentationConfig = {}) {\n super.setConfig({ ...DEFAULT_CONFIG, ...config });\n }\n\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n constants.MODULE_NAME,\n constants.SUPPORTED_VERSIONS\n );\n\n module.files.push(\n this.getClientNodeModuleFileInstrumentation('src'),\n this.getClientNodeModuleFileInstrumentation('lib'),\n this.getRunnerNodeModuleFileInstrumentation('src'),\n this.getRunnerNodeModuleFileInstrumentation('lib'),\n this.getRunnerNodeModuleFileInstrumentation('lib/execution')\n );\n\n return module;\n }\n\n private getRunnerNodeModuleFileInstrumentation(basePath: string) {\n return new InstrumentationNodeModuleFile(\n `knex/${basePath}/runner.js`,\n constants.SUPPORTED_VERSIONS,\n (Runner: any, moduleVersion) => {\n this.ensureWrapped(\n Runner.prototype,\n 'query',\n this.createQueryWrapper(moduleVersion)\n );\n return Runner;\n },\n (Runner: any, moduleVersion) => {\n this._unwrap(Runner.prototype, 'query');\n return Runner;\n }\n );\n }\n\n private getClientNodeModuleFileInstrumentation(basePath: string) {\n return new InstrumentationNodeModuleFile(\n `knex/${basePath}/client.js`,\n constants.SUPPORTED_VERSIONS,\n (Client: any) => {\n this.ensureWrapped(\n Client.prototype,\n 'queryBuilder',\n this.storeContext.bind(this)\n );\n this.ensureWrapped(\n Client.prototype,\n 'schemaBuilder',\n this.storeContext.bind(this)\n );\n this.ensureWrapped(\n Client.prototype,\n 'raw',\n this.storeContext.bind(this)\n );\n return Client;\n },\n (Client: any) => {\n this._unwrap(Client.prototype, 'queryBuilder');\n this._unwrap(Client.prototype, 'schemaBuilder');\n this._unwrap(Client.prototype, 'raw');\n return Client;\n }\n );\n }\n\n private createQueryWrapper(moduleVersion?: string) {\n const instrumentation = this;\n\n return function wrapQuery(original: (...args: any[]) => any) {\n return function wrapped_logging_method(this: any, query: any) {\n const config = this.client.config;\n\n const table = utils.extractTableName(this.builder);\n // `method` actually refers to the knex API method - Not exactly \"operation\"\n // in the spec sense, but matches most of the time.\n const operation = query?.method;\n const name =\n config?.connection?.filename || config?.connection?.database;\n const { maxQueryLength } = instrumentation.getConfig();\n\n const attributes: api.Attributes = {\n 'knex.version': moduleVersion,\n };\n const transport =\n config?.connection?.filename === ':memory:' ? 'inproc' : undefined;\n\n if (instrumentation._semconvStability & SemconvStability.OLD) {\n Object.assign(attributes, {\n [ATTR_DB_SYSTEM]: utils.mapSystem(this.client.driverName),\n [ATTR_DB_SQL_TABLE]: table,\n [ATTR_DB_OPERATION]: operation,\n [ATTR_DB_USER]: config?.connection?.user,\n [ATTR_DB_NAME]: name,\n [ATTR_NET_PEER_NAME]: config?.connection?.host,\n [ATTR_NET_PEER_PORT]: config?.connection?.port,\n [ATTR_NET_TRANSPORT]: transport,\n });\n }\n if (instrumentation._semconvStability & SemconvStability.STABLE) {\n Object.assign(attributes, {\n [ATTR_DB_SYSTEM_NAME]: utils.mapSystem(this.client.driverName),\n [ATTR_DB_COLLECTION_NAME]: table,\n [ATTR_DB_OPERATION_NAME]: operation,\n [ATTR_DB_NAMESPACE]: name,\n [ATTR_SERVER_ADDRESS]: config?.connection?.host,\n [ATTR_SERVER_PORT]: config?.connection?.port,\n });\n }\n if (maxQueryLength) {\n // filters both undefined and 0\n const queryText = utils.limitLength(query?.sql, maxQueryLength);\n if (instrumentation._semconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = queryText;\n }\n if (instrumentation._semconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = queryText;\n }\n }\n\n const parentContext =\n this.builder[contextSymbol] || api.context.active();\n const parentSpan = api.trace.getSpan(parentContext);\n const hasActiveParent =\n parentSpan && api.trace.isSpanContextValid(parentSpan.spanContext());\n if (instrumentation._config.requireParentSpan && !hasActiveParent) {\n return original.bind(this)(...arguments);\n }\n\n const span = instrumentation.tracer.startSpan(\n utils.getName(name, operation, table),\n {\n kind: api.SpanKind.CLIENT,\n attributes,\n },\n parentContext\n );\n const spanContext = api.trace.setSpan(api.context.active(), span);\n\n return api.context\n .with(spanContext, original, this, ...arguments)\n .then((result: unknown) => {\n span.end();\n return result;\n })\n .catch((err: any) => {\n // knex adds full query with all the binding values to the message,\n // we want to undo that without changing the original error\n const formatter = utils.getFormatter(this);\n const fullQuery = formatter(query.sql, query.bindings || []);\n const message = err.message.replace(fullQuery + ' - ', '');\n const exc = utils.otelExceptionFromKnexError(err, message);\n span.recordException(exc);\n span.setStatus({ code: api.SpanStatusCode.ERROR, message });\n span.end();\n throw err;\n });\n };\n };\n }\n\n private storeContext(original: Function) {\n return function wrapped_logging_method(this: any) {\n const builder = original.apply(this, arguments);\n // Builder is a custom promise type and when awaited it fails to propagate context.\n // We store the parent context at the moment of initiating the builder\n // otherwise we'd have nothing to attach the span as a child for in `query`.\n Object.defineProperty(builder, contextSymbol, {\n value: api.context.active(),\n });\n return builder;\n };\n }\n\n ensureWrapped(obj: any, methodName: string, wrapper: (original: any) => any) {\n if (isWrapped(obj[methodName])) {\n this._unwrap(obj, methodName);\n }\n this._wrap(obj, methodName, wrapper);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/semconv.d.ts new file mode 100644 index 0000000..f6aa734 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/semconv.d.ts @@ -0,0 +1,100 @@ +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_NAME: "db.name"; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +export declare const ATTR_DB_OPERATION: "db.operation"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`. + */ +export declare const ATTR_DB_SQL_TABLE: "db.sql.table"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_USER: "db.user"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Deprecated, use `network.transport`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.transport`. + */ +export declare const ATTR_NET_TRANSPORT: "net.transport"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SQLite](https://www.sqlite.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SQLITE: "sqlite"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/semconv.js new file mode 100644 index 0000000..9dd1edd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/semconv.js @@ -0,0 +1,123 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DB_SYSTEM_NAME_VALUE_SQLITE = exports.ATTR_NET_TRANSPORT = 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_OPERATION = exports.ATTR_DB_NAME = void 0; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +exports.ATTR_DB_NAME = 'db.name'; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +exports.ATTR_DB_OPERATION = 'db.operation'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`. + */ +exports.ATTR_DB_SQL_TABLE = 'db.sql.table'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +exports.ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +exports.ATTR_DB_SYSTEM = 'db.system'; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_DB_USER = 'db.user'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Deprecated, use `network.transport`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.transport`. + */ +exports.ATTR_NET_TRANSPORT = 'net.transport'; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SQLite](https://www.sqlite.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_SQLITE = 'sqlite'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/semconv.js.map new file mode 100644 index 0000000..1858510 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,QAAiB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\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 */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\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`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\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 */\nexport const ATTR_DB_USER = 'db.user' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\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 */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SQLite](https://www.sqlite.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SQLITE = 'sqlite' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/types.d.ts new file mode 100644 index 0000000..9bc5e91 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/types.d.ts @@ -0,0 +1,8 @@ +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export interface KnexInstrumentationConfig extends InstrumentationConfig { + /** max query length in db.statement attribute ".." is added to the end when query is truncated */ + maxQueryLength?: number; + /** only create spans if part of an existing trace */ + requireParentSpan?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/types.js new file mode 100644 index 0000000..11e638d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/types.js.map new file mode 100644 index 0000000..3c840ef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface KnexInstrumentationConfig extends InstrumentationConfig {\n /** max query length in db.statement attribute \"..\" is added to the end when query is truncated */\n maxQueryLength?: number;\n /** only create spans if part of an existing trace */\n requireParentSpan?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/utils.d.ts new file mode 100644 index 0000000..370fddf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/utils.d.ts @@ -0,0 +1,12 @@ +import { Exception } from '@opentelemetry/api'; +type KnexError = Error & { + code?: string; +}; +export declare const getFormatter: (runner: any) => any; +export declare function otelExceptionFromKnexError(err: KnexError, message: string): Exception; +export declare const mapSystem: (knexSystem: string) => string; +export declare const getName: (db: string, operation?: string, table?: string) => string; +export declare const limitLength: (str: string, maxLength: number) => string; +export declare const extractTableName: (builder: any) => string; +export {}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/utils.js new file mode 100644 index 0000000..35562e1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/utils.js @@ -0,0 +1,86 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.extractTableName = exports.limitLength = exports.getName = exports.mapSystem = exports.otelExceptionFromKnexError = exports.getFormatter = void 0; +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +const getFormatter = (runner) => { + if (runner) { + if (runner.client) { + if (runner.client._formatQuery) { + return runner.client._formatQuery.bind(runner.client); + } + else if (runner.client.SqlString) { + return runner.client.SqlString.format.bind(runner.client.SqlString); + } + } + if (runner.builder) { + return runner.builder.toString.bind(runner.builder); + } + } + return () => ''; +}; +exports.getFormatter = getFormatter; +function otelExceptionFromKnexError(err, message) { + if (!(err && err instanceof Error)) { + return err; + } + return { + message, + code: err.code, + stack: err.stack, + name: err.name, + }; +} +exports.otelExceptionFromKnexError = otelExceptionFromKnexError; +const systemMap = new Map([ + ['sqlite3', semconv_1.DB_SYSTEM_NAME_VALUE_SQLITE], + ['pg', semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL], +]); +const mapSystem = (knexSystem) => { + return systemMap.get(knexSystem) || knexSystem; +}; +exports.mapSystem = mapSystem; +const getName = (db, operation, table) => { + if (operation) { + if (table) { + return `${operation} ${db}.${table}`; + } + return `${operation} ${db}`; + } + return db; +}; +exports.getName = getName; +const limitLength = (str, maxLength) => { + if (typeof str === 'string' && + typeof maxLength === 'number' && + 0 < maxLength && + maxLength < str.length) { + return str.substring(0, maxLength) + '..'; + } + return str; +}; +exports.limitLength = limitLength; +const extractTableName = (builder) => { + const table = builder?._single?.table; + if (typeof table === 'object') { + return (0, exports.extractTableName)(table); + } + return table; +}; +exports.extractTableName = extractTableName; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/utils.js.map new file mode 100644 index 0000000..3474ced --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,8EAAsF;AACtF,uCAAwD;AAMjD,MAAM,YAAY,GAAG,CAAC,MAAW,EAAE,EAAE;IAC1C,IAAI,MAAM,EAAE;QACV,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;gBAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACvD;iBAAM,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;gBAClC,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACrE;SACF;QACD,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACrD;KACF;IACD,OAAO,GAAG,EAAE,CAAC,kBAAkB,CAAC;AAClC,CAAC,CAAC;AAdW,QAAA,YAAY,gBAcvB;AAEF,SAAgB,0BAA0B,CACxC,GAAc,EACd,OAAe;IAEf,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,KAAK,CAAC,EAAE;QAClC,OAAO,GAAG,CAAC;KACZ;IAED,OAAO;QACL,OAAO;QACP,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,CAAC;AACJ,CAAC;AAdD,gEAcC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,CAAC,SAAS,EAAE,qCAA2B,CAAC;IACxC,CAAC,IAAI,EAAE,sDAA+B,CAAC;CACxC,CAAC,CAAC;AAEI,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAE,EAAE;IAC9C,OAAO,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AACjD,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB;AAEK,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,SAAkB,EAAE,KAAc,EAAE,EAAE;IACxE,IAAI,SAAS,EAAE;QACb,IAAI,KAAK,EAAE;YACT,OAAO,GAAG,SAAS,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;SACtC;QACD,OAAO,GAAG,SAAS,IAAI,EAAE,EAAE,CAAC;KAC7B;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AARW,QAAA,OAAO,WAQlB;AAEK,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,SAAiB,EAAE,EAAE;IAC5D,IACE,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAO,SAAS,KAAK,QAAQ;QAC7B,CAAC,GAAG,SAAS;QACb,SAAS,GAAG,GAAG,CAAC,MAAM,EACtB;QACA,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;KAC3C;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAVW,QAAA,WAAW,eAUtB;AAEK,MAAM,gBAAgB,GAAG,CAAC,OAAY,EAAU,EAAE;IACvD,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,IAAA,wBAAgB,EAAC,KAAK,CAAC,CAAC;KAChC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Exception } from '@opentelemetry/api';\nimport { DB_SYSTEM_NAME_VALUE_POSTGRESQL } from '@opentelemetry/semantic-conventions';\nimport { DB_SYSTEM_NAME_VALUE_SQLITE } from './semconv';\n\ntype KnexError = Error & {\n code?: string;\n};\n\nexport const getFormatter = (runner: any) => {\n if (runner) {\n if (runner.client) {\n if (runner.client._formatQuery) {\n return runner.client._formatQuery.bind(runner.client);\n } else if (runner.client.SqlString) {\n return runner.client.SqlString.format.bind(runner.client.SqlString);\n }\n }\n if (runner.builder) {\n return runner.builder.toString.bind(runner.builder);\n }\n }\n return () => '';\n};\n\nexport function otelExceptionFromKnexError(\n err: KnexError,\n message: string\n): Exception {\n if (!(err && err instanceof Error)) {\n return err;\n }\n\n return {\n message,\n code: err.code,\n stack: err.stack,\n name: err.name,\n };\n}\n\nconst systemMap = new Map([\n ['sqlite3', DB_SYSTEM_NAME_VALUE_SQLITE],\n ['pg', DB_SYSTEM_NAME_VALUE_POSTGRESQL],\n]);\n\nexport const mapSystem = (knexSystem: string) => {\n return systemMap.get(knexSystem) || knexSystem;\n};\n\nexport const getName = (db: string, operation?: string, table?: string) => {\n if (operation) {\n if (table) {\n return `${operation} ${db}.${table}`;\n }\n return `${operation} ${db}`;\n }\n return db;\n};\n\nexport const limitLength = (str: string, maxLength: number) => {\n if (\n typeof str === 'string' &&\n typeof maxLength === 'number' &&\n 0 < maxLength &&\n maxLength < str.length\n ) {\n return str.substring(0, maxLength) + '..';\n }\n return str;\n};\n\nexport const extractTableName = (builder: any): string => {\n const table = builder?._single?.table;\n if (typeof table === 'object') {\n return extractTableName(table);\n }\n return table;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/version.d.ts new file mode 100644 index 0000000..f57afa9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.55.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-knex"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/version.js new file mode 100644 index 0000000..2d23c12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.55.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-knex'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/version.js.map new file mode 100644 index 0000000..d73bfb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,qCAAqC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.55.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-knex';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/package.json new file mode 100644 index 0000000..04df3c0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-knex/package.json @@ -0,0 +1,62 @@ +{ + "name": "@opentelemetry/instrumentation-knex", + "version": "0.55.0", + "description": "OpenTelemetry instrumentation for `knex` database SQL query builder", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-knex" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-knex", + "lint:readme": "node ../../scripts/lint-readme", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc mocha 'test/**/*.ts'", + "test-all-versions": "tav", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "instrumentation", + "knex", + "nodejs", + "opentelemetry", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "better-sqlite3": "^11.10.0", + "knex": "3.1.0", + "sqlite3": "5.1.7" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.33.1" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-knex#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/README.md new file mode 100644 index 0000000..b142fad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/README.md @@ -0,0 +1,106 @@ +# OpenTelemetry Koa Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [Koa](https://github.com/koajs/koa) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Status + +| Maturity | [Component Owner](../../.github/component_owners.yml) | Compatibility | +|----------------------------------------------------|-------------------------------------------------------|-----------------------| +| [Unmaintained](../../CONTRIBUTING.md#unmaintained) | N/A | API 1.0+
                          SDK 1.0+ | + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-koa +``` + +### Supported Versions + +- [`koa`](https://www.npmjs.com/package/koa) versions `>=2.0.0 <4` +- [`@koa/router`](https://www.npmjs.com/package/@koa/router) versions `>=8.0.0` + +## Usage + +OpenTelemetry Koa Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems. + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { KoaInstrumentation } = require('@opentelemetry/instrumentation-koa'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new KoaInstrumentation(), + ], +}); +``` + +See [`examples/koa`](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/koa) for a short example using both Koa and @koa/router. + +Note that generator-based middleware are deprecated and won't be instrumented. + +### Koa Instrumentation Options + +| Options | Type | Example | Description | +| ------------------ | ----------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------- | +| `ignoreLayersType` | `KoaLayerType[]` | `['middleware']` | Ignore layers of specified type. | +| `requestHook` | `KoaRequestCustomAttributeFunction` | `(span, info) => {}` | Function for adding custom attributes to Koa middleware layers. Receives params: `Span, KoaRequestInfo`. | + +`ignoreLayersType` accepts an array of `KoaLayerType` which can take the following string values: + +- `router`, +- `middleware`. + +#### Using `requestHook` + +Instrumentation configuration accepts a custom "hook" function which will be called for every instrumented Koa middleware layer involved in a request. Custom attributes can be set on the span or run any custom logic per layer. + +NOTE: `KoaRequestInfo.context` and `KoaRequestInfo.middlewareLayer` are typed as `any`. If you want type support make sure you have `@types/koa` and `@types/koa__router` installed then you can use the following type definitions: + +```typescript +import { KoaInstrumentation } from "@opentelemetry/instrumentation-koa" +import type { Middleware, ParameterizedContext, DefaultState } from 'koa'; +import type { RouterParamContext } from '@koa/router'; + +type KoaContext = ParameterizedContext; +type KoaMiddleware = Middleware; + +const koaInstrumentation = new KoaInstrumentation({ + requestHook: function (span: Span, info: KoaRequestInfo) { + span.setAttribute( + 'http.method', + info.context.request.method + ) + } +}); +``` + +## Koa Packages + +This package provides automatic tracing for middleware added using either the core [`koa`](https://github.com/koajs/koa) package or the [`@koa/router`](https://github.com/koajs/router) package. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-koa +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-koa.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.d.ts new file mode 100644 index 0000000..83758ca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.d.ts @@ -0,0 +1,5 @@ +export declare enum AttributeNames { + KOA_TYPE = "koa.type", + KOA_NAME = "koa.name" +} +//# sourceMappingURL=AttributeNames.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.js new file mode 100644 index 0000000..fa93cd8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttributeNames = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var AttributeNames; +(function (AttributeNames) { + AttributeNames["KOA_TYPE"] = "koa.type"; + AttributeNames["KOA_NAME"] = "koa.name"; +})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {})); +//# sourceMappingURL=AttributeNames.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.js.map new file mode 100644 index 0000000..5893d6b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AttributeNames.js","sourceRoot":"","sources":["../../../src/enums/AttributeNames.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,uCAAqB,CAAA;AACvB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum AttributeNames {\n KOA_TYPE = 'koa.type',\n KOA_NAME = 'koa.name',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/index.d.ts new file mode 100644 index 0000000..125752d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/index.d.ts @@ -0,0 +1,5 @@ +export { KoaInstrumentation } from './instrumentation'; +export { AttributeNames } from './enums/AttributeNames'; +export { KoaLayerType } from './types'; +export type { KoaInstrumentationConfig, KoaRequestCustomAttributeFunction, KoaRequestInfo, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/index.js new file mode 100644 index 0000000..7bffed1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/index.js @@ -0,0 +1,25 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KoaLayerType = exports.AttributeNames = exports.KoaInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "KoaInstrumentation", { enumerable: true, get: function () { return instrumentation_1.KoaInstrumentation; } }); +var AttributeNames_1 = require("./enums/AttributeNames"); +Object.defineProperty(exports, "AttributeNames", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } }); +var types_1 = require("./types"); +Object.defineProperty(exports, "KoaLayerType", { enumerable: true, get: function () { return types_1.KoaLayerType; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/index.js.map new file mode 100644 index 0000000..cd8ba10 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAuD;AAA9C,qHAAA,kBAAkB,OAAA;AAC3B,yDAAwD;AAA/C,gHAAA,cAAc,OAAA;AACvB,iCAAuC;AAA9B,qGAAA,YAAY,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { KoaInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\nexport { KoaLayerType } from './types';\nexport type {\n KoaInstrumentationConfig,\n KoaRequestCustomAttributeFunction,\n KoaRequestInfo,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.d.ts new file mode 100644 index 0000000..ab408a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.d.ts @@ -0,0 +1,32 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { KoaInstrumentationConfig } from './types'; +/** Koa instrumentation for OpenTelemetry */ +export declare class KoaInstrumentation extends InstrumentationBase { + constructor(config?: KoaInstrumentationConfig); + protected init(): InstrumentationNodeModuleDefinition; + /** + * Patches the Koa.use function in order to instrument each original + * middleware layer which is introduced + * @param {KoaMiddleware} middleware - the original middleware function + */ + private _getKoaUsePatch; + /** + * Patches the dispatch function used by @koa/router. This function + * goes through each routed middleware and adds instrumentation via a call + * to the @function _patchLayer function. + * @param {KoaMiddleware} dispatchLayer - the original dispatch function which dispatches + * routed middleware + */ + private _patchRouterDispatch; + /** + * Patches each individual @param middlewareLayer function in order to create the + * span and propagate context. It does not create spans when there is no parent span. + * @param {KoaMiddleware} middlewareLayer - the original middleware function. + * @param {boolean} isRouter - tracks whether the original middleware function + * was dispatched by the router originally + * @param {string?} layerPath - if present, provides additional data from the + * router about the routed path which the middleware is attached to + */ + private _patchLayer; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.js new file mode 100644 index 0000000..e888858 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.js @@ -0,0 +1,159 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KoaInstrumentation = void 0; +const api = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const types_1 = require("./types"); +/** @knipignore */ +const version_1 = require("./version"); +const utils_1 = require("./utils"); +const core_1 = require("@opentelemetry/core"); +const internal_types_1 = require("./internal-types"); +/** Koa instrumentation for OpenTelemetry */ +class KoaInstrumentation extends instrumentation_1.InstrumentationBase { + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + } + init() { + return new instrumentation_1.InstrumentationNodeModuleDefinition('koa', ['>=2.0.0 <4'], (module) => { + const moduleExports = module[Symbol.toStringTag] === 'Module' + ? module.default // ESM + : module; // CommonJS + if (moduleExports == null) { + return moduleExports; + } + if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.use)) { + this._unwrap(moduleExports.prototype, 'use'); + } + this._wrap(moduleExports.prototype, 'use', this._getKoaUsePatch.bind(this)); + return module; + }, (module) => { + const moduleExports = module[Symbol.toStringTag] === 'Module' + ? module.default // ESM + : module; // CommonJS + if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.use)) { + this._unwrap(moduleExports.prototype, 'use'); + } + }); + } + /** + * Patches the Koa.use function in order to instrument each original + * middleware layer which is introduced + * @param {KoaMiddleware} middleware - the original middleware function + */ + _getKoaUsePatch(original) { + const plugin = this; + return function use(middlewareFunction) { + let patchedFunction; + if (middlewareFunction.router) { + patchedFunction = plugin._patchRouterDispatch(middlewareFunction); + } + else { + patchedFunction = plugin._patchLayer(middlewareFunction, false); + } + return original.apply(this, [patchedFunction]); + }; + } + /** + * Patches the dispatch function used by @koa/router. This function + * goes through each routed middleware and adds instrumentation via a call + * to the @function _patchLayer function. + * @param {KoaMiddleware} dispatchLayer - the original dispatch function which dispatches + * routed middleware + */ + _patchRouterDispatch(dispatchLayer) { + api.diag.debug('Patching @koa/router dispatch'); + const router = dispatchLayer.router; + const routesStack = router?.stack ?? []; + for (const pathLayer of routesStack) { + const path = pathLayer.path; + // Type cast needed: router.stack comes from @types/koa@2.x but we use @types/koa@3.x + // See internal-types.ts for full explanation + const pathStack = pathLayer.stack; + for (let j = 0; j < pathStack.length; j++) { + const routedMiddleware = pathStack[j]; + pathStack[j] = this._patchLayer(routedMiddleware, true, path); + } + } + return dispatchLayer; + } + /** + * Patches each individual @param middlewareLayer function in order to create the + * span and propagate context. It does not create spans when there is no parent span. + * @param {KoaMiddleware} middlewareLayer - the original middleware function. + * @param {boolean} isRouter - tracks whether the original middleware function + * was dispatched by the router originally + * @param {string?} layerPath - if present, provides additional data from the + * router about the routed path which the middleware is attached to + */ + _patchLayer(middlewareLayer, isRouter, layerPath) { + const layerType = isRouter ? types_1.KoaLayerType.ROUTER : types_1.KoaLayerType.MIDDLEWARE; + // Skip patching layer if its ignored in the config + if (middlewareLayer[internal_types_1.kLayerPatched] === true || + (0, utils_1.isLayerIgnored)(layerType, this.getConfig())) + return middlewareLayer; + if (middlewareLayer.constructor.name === 'GeneratorFunction' || + middlewareLayer.constructor.name === 'AsyncGeneratorFunction') { + api.diag.debug('ignoring generator-based Koa middleware layer'); + return middlewareLayer; + } + middlewareLayer[internal_types_1.kLayerPatched] = true; + api.diag.debug('patching Koa middleware layer'); + return async (context, next) => { + const parent = api.trace.getSpan(api.context.active()); + if (parent === undefined) { + return middlewareLayer(context, next); + } + const metadata = (0, utils_1.getMiddlewareMetadata)(context, middlewareLayer, isRouter, layerPath); + const span = this.tracer.startSpan(metadata.name, { + attributes: metadata.attributes, + }); + const rpcMetadata = (0, core_1.getRPCMetadata)(api.context.active()); + if (rpcMetadata?.type === core_1.RPCType.HTTP && context._matchedRoute) { + rpcMetadata.route = context._matchedRoute.toString(); + } + const { requestHook } = this.getConfig(); + if (requestHook) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => requestHook(span, { + context, + middlewareLayer, + layerType, + }), e => { + if (e) { + api.diag.error('koa instrumentation: request hook failed', e); + } + }, true); + } + const newContext = api.trace.setSpan(api.context.active(), span); + return api.context.with(newContext, async () => { + try { + return await middlewareLayer(context, next); + } + catch (err) { + span.recordException(err); + throw err; + } + finally { + span.end(); + } + }); + }; + } +} +exports.KoaInstrumentation = KoaInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.js.map new file mode 100644 index 0000000..e8d44e7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport {\n isWrapped,\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\n\nimport type * as koa from 'koa';\nimport { KoaLayerType, KoaInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { getMiddlewareMetadata, isLayerIgnored } from './utils';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n kLayerPatched,\n KoaContext,\n KoaMiddleware,\n KoaPatchedMiddleware,\n} from './internal-types';\n\n/** Koa instrumentation for OpenTelemetry */\nexport class KoaInstrumentation extends InstrumentationBase {\n constructor(config: KoaInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n protected init() {\n return new InstrumentationNodeModuleDefinition(\n 'koa',\n ['>=2.0.0 <4'],\n (module: any) => {\n const moduleExports: typeof koa =\n module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n if (moduleExports == null) {\n return moduleExports;\n }\n if (isWrapped(moduleExports.prototype.use)) {\n this._unwrap(moduleExports.prototype, 'use');\n }\n this._wrap(\n moduleExports.prototype,\n 'use',\n this._getKoaUsePatch.bind(this)\n );\n return module;\n },\n (module: any) => {\n const moduleExports: typeof koa =\n module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n if (isWrapped(moduleExports.prototype.use)) {\n this._unwrap(moduleExports.prototype, 'use');\n }\n }\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 private _getKoaUsePatch(original: (middleware: KoaMiddleware) => koa) {\n const plugin = this;\n return function use(this: koa, middlewareFunction: KoaMiddleware) {\n let patchedFunction: KoaMiddleware;\n if (middlewareFunction.router) {\n patchedFunction = plugin._patchRouterDispatch(middlewareFunction);\n } else {\n patchedFunction = plugin._patchLayer(middlewareFunction, false);\n }\n return original.apply(this, [patchedFunction]);\n };\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 private _patchRouterDispatch(dispatchLayer: KoaMiddleware): KoaMiddleware {\n api.diag.debug('Patching @koa/router dispatch');\n\n const router = dispatchLayer.router;\n\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 as any;\n for (let j = 0; j < pathStack.length; j++) {\n const routedMiddleware: KoaMiddleware = pathStack[j];\n pathStack[j] = this._patchLayer(routedMiddleware, true, path);\n }\n }\n\n return dispatchLayer;\n }\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 private _patchLayer(\n middlewareLayer: KoaPatchedMiddleware,\n isRouter: boolean,\n layerPath?: string | RegExp\n ): KoaMiddleware {\n const layerType = isRouter ? KoaLayerType.ROUTER : KoaLayerType.MIDDLEWARE;\n // Skip patching layer if its ignored in the config\n if (\n middlewareLayer[kLayerPatched] === true ||\n isLayerIgnored(layerType, this.getConfig())\n )\n return middlewareLayer;\n\n if (\n middlewareLayer.constructor.name === 'GeneratorFunction' ||\n middlewareLayer.constructor.name === 'AsyncGeneratorFunction'\n ) {\n api.diag.debug('ignoring generator-based Koa middleware layer');\n return middlewareLayer;\n }\n\n middlewareLayer[kLayerPatched] = true;\n\n api.diag.debug('patching Koa middleware layer');\n return async (context: KoaContext, next: koa.Next) => {\n const parent = api.trace.getSpan(api.context.active());\n if (parent === undefined) {\n return middlewareLayer(context, next);\n }\n const metadata = getMiddlewareMetadata(\n context,\n middlewareLayer,\n isRouter,\n layerPath\n );\n const span = this.tracer.startSpan(metadata.name, {\n attributes: metadata.attributes,\n });\n\n const rpcMetadata = getRPCMetadata(api.context.active());\n\n if (rpcMetadata?.type === RPCType.HTTP && context._matchedRoute) {\n rpcMetadata.route = context._matchedRoute.toString();\n }\n\n const { requestHook } = this.getConfig();\n if (requestHook) {\n safeExecuteInTheMiddle(\n () =>\n requestHook(span, {\n context,\n middlewareLayer,\n layerType,\n }),\n e => {\n if (e) {\n api.diag.error('koa instrumentation: request hook failed', e);\n }\n },\n true\n );\n }\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 } catch (err: any) {\n span.recordException(err);\n throw err;\n } finally {\n span.end();\n }\n });\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.d.ts new file mode 100644 index 0000000..c6df6a5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.d.ts @@ -0,0 +1,27 @@ +/// +import type { Middleware, ParameterizedContext, DefaultState } from 'koa'; +import type * as Router from '@koa/router'; +/** + * Type compatibility note: + * + * This package uses @types/koa@3.x, but @types/koa__router@12.x depends on + * @types/koa@2.x. This creates type conflicts when working with router middleware. + * At runtime, koa@3.x is used throughout, so all methods exist and work correctly. + * + * The type casts in instrumentation.ts are necessary to bridge this gap. + * + * TODO: Remove type casts when @types/koa__router@13+ with @types/koa@3.x support is available + */ +export type KoaContext = ParameterizedContext; +export type KoaMiddleware = Middleware & { + router?: Router; +}; +/** + * This symbol is used to mark a Koa layer as being already instrumented + * since its possible to use a given layer multiple times (ex: middlewares) + */ +export declare const kLayerPatched: unique symbol; +export type KoaPatchedMiddleware = KoaMiddleware & { + [kLayerPatched]?: boolean; +}; +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.js new file mode 100644 index 0000000..b8f53f2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.kLayerPatched = void 0; +/** + * This symbol is used to mark a Koa layer as being already instrumented + * since its possible to use a given layer multiple times (ex: middlewares) + */ +exports.kLayerPatched = Symbol('koa-layer-patched'); +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.js.map new file mode 100644 index 0000000..0da860a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";;;AAsCA;;;GAGG;AACU,QAAA,aAAa,GAAkB,MAAM,CAAC,mBAAmB,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type { Middleware, ParameterizedContext, DefaultState } from 'koa';\nimport type * as Router from '@koa/router';\n\n/**\n * Type compatibility note:\n *\n * This package uses @types/koa@3.x, but @types/koa__router@12.x depends on\n * @types/koa@2.x. This creates type conflicts when working with router middleware.\n * At runtime, koa@3.x is used throughout, so all methods exist and work correctly.\n *\n * The type casts in instrumentation.ts are necessary to bridge this gap.\n *\n * TODO: Remove type casts when @types/koa__router@13+ with @types/koa@3.x support is available\n */\n\nexport type KoaContext = ParameterizedContext<\n DefaultState,\n Router.RouterParamContext\n>;\nexport type KoaMiddleware = Middleware & {\n router?: Router;\n};\n\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 */\nexport const kLayerPatched: unique symbol = Symbol('koa-layer-patched');\n\nexport type KoaPatchedMiddleware = KoaMiddleware & {\n [kLayerPatched]?: boolean;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/types.d.ts new file mode 100644 index 0000000..4fe17f1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/types.d.ts @@ -0,0 +1,50 @@ +import { Span } from '@opentelemetry/api'; +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export declare enum KoaLayerType { + ROUTER = "router", + MIDDLEWARE = "middleware" +} +/** + * Information about the current Koa middleware layer + * The middleware layer type is any by default. + * One can install koa types packages `@types/koa` and `@types/koa__router` + * with compatible versions to the koa version used in the project + * to get more specific types for the middleware layer property. + * + * Example use in a custom attribute function: + * ```ts + * import type { Middleware, ParameterizedContext, DefaultState } from 'koa'; + * import type { RouterParamContext } from '@koa/router'; + * + * type KoaContext = ParameterizedContext; + * type KoaMiddleware = Middleware; + * + * const koaConfig: KoaInstrumentationConfig = { + * requestHook: (span: Span, info: KoaRequestInfo) => { + * // custom typescript code that can access the typed into.middlewareLayer and info.context + * } + * + */ +export type KoaRequestInfo = { + context: KoaContextType; + middlewareLayer: KoaMiddlewareType; + layerType: KoaLayerType; +}; +/** + * Function that can be used to add custom attributes to the current span + * @param span - The Express middleware layer span. + * @param context - The current KoaContext. + */ +export interface KoaRequestCustomAttributeFunction { + (span: Span, info: KoaRequestInfo): void; +} +/** + * Options available for the Koa Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-Instrumentation-koa#koa-Instrumentation-options)) + */ +export interface KoaInstrumentationConfig extends InstrumentationConfig { + /** Ignore specific layers based on their type */ + ignoreLayersType?: KoaLayerType[]; + /** Function for adding custom attributes to each middleware layer span */ + requestHook?: KoaRequestCustomAttributeFunction; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/types.js new file mode 100644 index 0000000..b3e3f25 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/types.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KoaLayerType = void 0; +var KoaLayerType; +(function (KoaLayerType) { + KoaLayerType["ROUTER"] = "router"; + KoaLayerType["MIDDLEWARE"] = "middleware"; +})(KoaLayerType = exports.KoaLayerType || (exports.KoaLayerType = {})); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/types.js.map new file mode 100644 index 0000000..0398ac9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAkBA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,yCAAyB,CAAA;AAC3B,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport enum KoaLayerType {\n ROUTER = 'router',\n MIDDLEWARE = 'middleware',\n}\n\n/**\n * Information about the current Koa middleware layer\n * The middleware layer type is any by default.\n * One can install koa types packages `@types/koa` and `@types/koa__router`\n * with compatible versions to the koa version used in the project\n * to get more specific types for the middleware layer property.\n *\n * Example use in a custom attribute function:\n * ```ts\n * import type { Middleware, ParameterizedContext, DefaultState } from 'koa';\n * import type { RouterParamContext } from '@koa/router';\n *\n * type KoaContext = ParameterizedContext;\n * type KoaMiddleware = Middleware;\n *\n * const koaConfig: KoaInstrumentationConfig = {\n * requestHook: (span: Span, info: KoaRequestInfo) => {\n * // custom typescript code that can access the typed into.middlewareLayer and info.context\n * }\n *\n */\nexport type KoaRequestInfo = {\n context: KoaContextType;\n middlewareLayer: KoaMiddlewareType;\n layerType: KoaLayerType;\n};\n\n/**\n * Function that can be used to add custom attributes to the current span\n * @param span - The Express middleware layer span.\n * @param context - The current KoaContext.\n */\nexport interface KoaRequestCustomAttributeFunction<\n KoaContextType = any,\n KoaMiddlewareType = any,\n> {\n (span: Span, info: KoaRequestInfo): void;\n}\n\n/**\n * Options available for the Koa Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-Instrumentation-koa#koa-Instrumentation-options))\n */\nexport interface KoaInstrumentationConfig<\n KoaContextType = any,\n KoaMiddlewareType = any,\n> extends InstrumentationConfig {\n /** Ignore specific layers based on their type */\n ignoreLayersType?: KoaLayerType[];\n /** Function for adding custom attributes to each middleware layer span */\n requestHook?: KoaRequestCustomAttributeFunction<\n KoaContextType,\n KoaMiddlewareType\n >;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/utils.d.ts new file mode 100644 index 0000000..4231fcf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/utils.d.ts @@ -0,0 +1,15 @@ +import { KoaLayerType, KoaInstrumentationConfig } from './types'; +import { KoaContext, KoaMiddleware } from './internal-types'; +import { Attributes } from '@opentelemetry/api'; +export declare const getMiddlewareMetadata: (context: KoaContext, layer: KoaMiddleware, isRouter: boolean, layerPath?: string | RegExp) => { + attributes: Attributes; + name: string; +}; +/** + * Check whether the given request is ignored by configuration + * @param [list] List of ignore patterns + * @param [onException] callback for doing something when an exception has + * occurred + */ +export declare const isLayerIgnored: (type: KoaLayerType, config?: KoaInstrumentationConfig) => boolean; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/utils.js new file mode 100644 index 0000000..144ec4b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/utils.js @@ -0,0 +1,55 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isLayerIgnored = exports.getMiddlewareMetadata = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const types_1 = require("./types"); +const AttributeNames_1 = require("./enums/AttributeNames"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const getMiddlewareMetadata = (context, layer, isRouter, layerPath) => { + if (isRouter) { + return { + attributes: { + [AttributeNames_1.AttributeNames.KOA_NAME]: layerPath?.toString(), + [AttributeNames_1.AttributeNames.KOA_TYPE]: types_1.KoaLayerType.ROUTER, + [semantic_conventions_1.ATTR_HTTP_ROUTE]: layerPath?.toString(), + }, + name: context._matchedRouteName || `router - ${layerPath}`, + }; + } + else { + return { + attributes: { + [AttributeNames_1.AttributeNames.KOA_NAME]: layer.name ?? 'middleware', + [AttributeNames_1.AttributeNames.KOA_TYPE]: types_1.KoaLayerType.MIDDLEWARE, + }, + name: `middleware - ${layer.name}`, + }; + } +}; +exports.getMiddlewareMetadata = getMiddlewareMetadata; +/** + * Check whether the given request is ignored by configuration + * @param [list] List of ignore patterns + * @param [onException] callback for doing something when an exception has + * occurred + */ +const isLayerIgnored = (type, config) => { + return !!(Array.isArray(config?.ignoreLayersType) && + config?.ignoreLayersType?.includes(type)); +}; +exports.isLayerIgnored = isLayerIgnored; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/utils.js.map new file mode 100644 index 0000000..2109ea4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,mCAAiE;AAEjE,2DAAwD;AAExD,8EAAsE;AAE/D,MAAM,qBAAqB,GAAG,CACnC,OAAmB,EACnB,KAAoB,EACpB,QAAiB,EACjB,SAA2B,EAI3B,EAAE;IACF,IAAI,QAAQ,EAAE;QACZ,OAAO;YACL,UAAU,EAAE;gBACV,CAAC,+BAAc,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;gBAChD,CAAC,+BAAc,CAAC,QAAQ,CAAC,EAAE,oBAAY,CAAC,MAAM;gBAC9C,CAAC,sCAAe,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;aACzC;YACD,IAAI,EAAE,OAAO,CAAC,iBAAiB,IAAI,YAAY,SAAS,EAAE;SAC3D,CAAC;KACH;SAAM;QACL,OAAO;YACL,UAAU,EAAE;gBACV,CAAC,+BAAc,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,YAAY;gBACrD,CAAC,+BAAc,CAAC,QAAQ,CAAC,EAAE,oBAAY,CAAC,UAAU;aACnD;YACD,IAAI,EAAE,gBAAgB,KAAK,CAAC,IAAI,EAAE;SACnC,CAAC;KACH;AACH,CAAC,CAAC;AA3BW,QAAA,qBAAqB,yBA2BhC;AAEF;;;;;GAKG;AACI,MAAM,cAAc,GAAG,CAC5B,IAAkB,EAClB,MAAiC,EACxB,EAAE;IACX,OAAO,CAAC,CAAC,CACP,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC;QACvC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,CACzC,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,cAAc,kBAQzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { KoaLayerType, KoaInstrumentationConfig } from './types';\nimport { KoaContext, KoaMiddleware } from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { Attributes } from '@opentelemetry/api';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\n\nexport const getMiddlewareMetadata = (\n context: KoaContext,\n layer: KoaMiddleware,\n isRouter: boolean,\n layerPath?: string | RegExp\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (isRouter) {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layerPath?.toString(),\n [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER,\n [ATTR_HTTP_ROUTE]: layerPath?.toString(),\n },\n name: context._matchedRouteName || `router - ${layerPath}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layer.name ?? 'middleware',\n [AttributeNames.KOA_TYPE]: KoaLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\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 */\nexport const isLayerIgnored = (\n type: KoaLayerType,\n config?: KoaInstrumentationConfig\n): boolean => {\n return !!(\n Array.isArray(config?.ignoreLayersType) &&\n config?.ignoreLayersType?.includes(type)\n );\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/version.d.ts new file mode 100644 index 0000000..0c5346b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.59.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-koa"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/version.js new file mode 100644 index 0000000..e3f0d45 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.59.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-koa'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/version.js.map new file mode 100644 index 0000000..39d4aff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,oCAAoC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.59.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-koa';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/package.json new file mode 100644 index 0000000..e6c21d4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-koa/package.json @@ -0,0 +1,68 @@ +{ + "name": "@opentelemetry/instrumentation-koa", + "version": "0.59.0", + "description": "OpenTelemetry instrumentation for `koa` http web application framework", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-koa" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-koa", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.ts'", + "test-all-versions": "tav", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "instrumentation", + "koa", + "nodejs", + "opentelemetry", + "plugin", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0" + }, + "devDependencies": { + "@koa/router": "14.0.0", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/instrumentation-http": "^0.211.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "@types/koa": "3.0.1", + "@types/koa__router": "12.0.5", + "koa": "3.0.3" + }, + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.36.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-koa#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/README.md new file mode 100644 index 0000000..82d3ba3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/README.md @@ -0,0 +1,61 @@ +# OpenTelemetry lru-memoizer Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`lru-memoizer`](https://github.com/jfromaniello/lru-memoizer) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-lru-memoizer +``` + +## Supported Versions + +- [`lru-memoizer`](https://www.npmjs.com/package/lru-memoizer) versions `>=1.3.0 <3` + +## Usage + +This instrumentation does not produce any telemetry data. It only bind the caller context to callbacks so downstream operations are recorded with the right context (traceId / parentSpanId / baggage / etc). The `lru-memoizer` package is a dependency for other packages such as [jwks-rsa](https://www.npmjs.com/package/jwks-rsa) + +To load a specific plugin, specify it in the registerInstrumentations's configuration: + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { LruMemoizerInstrumentation } = require('@opentelemetry/instrumentation-lru-memoizer'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new LruMemoizerInstrumentation(), + ], +}) +``` + +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-lru-memoizer +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-lru-memoizer.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.d.ts new file mode 100644 index 0000000..046e606 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.d.ts @@ -0,0 +1,2 @@ +export { LruMemoizerInstrumentation } from './instrumentation'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.js new file mode 100644 index 0000000..ce70706 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LruMemoizerInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "LruMemoizerInstrumentation", { enumerable: true, get: function () { return instrumentation_1.LruMemoizerInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.js.map new file mode 100644 index 0000000..1365eed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA+D;AAAtD,6HAAA,0BAA0B,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { LruMemoizerInstrumentation } from './instrumentation';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.d.ts new file mode 100644 index 0000000..e03e025 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.d.ts @@ -0,0 +1,6 @@ +import { InstrumentationBase, InstrumentationConfig, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +export declare class LruMemoizerInstrumentation extends InstrumentationBase { + constructor(config?: InstrumentationConfig); + init(): InstrumentationNodeModuleDefinition[]; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.js new file mode 100644 index 0000000..f7680aa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.js @@ -0,0 +1,58 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LruMemoizerInstrumentation = void 0; +const api_1 = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +/** @knipignore */ +const version_1 = require("./version"); +class LruMemoizerInstrumentation extends instrumentation_1.InstrumentationBase { + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + } + init() { + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition('lru-memoizer', ['>=1.3 <3'], moduleExports => { + // moduleExports is a function which receives an options object, + // and returns a "memoizer" function upon invocation. + // We want to patch this "memoizer's" internal function + const asyncMemoizer = function () { + // This following function is invoked every time the user wants to get a (possible) memoized value + // We replace it with another function in which we bind the current context to the last argument (callback) + const origMemoizer = moduleExports.apply(this, arguments); + return function () { + const modifiedArguments = [...arguments]; + // last argument is the callback + const origCallback = modifiedArguments.pop(); + const callbackWithContext = typeof origCallback === 'function' + ? api_1.context.bind(api_1.context.active(), origCallback) + : origCallback; + modifiedArguments.push(callbackWithContext); + return origMemoizer.apply(this, modifiedArguments); + }; + }; + // sync function preserves context, but we still need to export it + // as the lru-memoizer package does + asyncMemoizer.sync = moduleExports.sync; + return asyncMemoizer; + }, undefined // no need to disable as this instrumentation does not create any spans + ), + ]; + } +} +exports.LruMemoizerInstrumentation = LruMemoizerInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.js.map new file mode 100644 index 0000000..a341711 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA6C;AAC7C,oEAIwC;AACxC,kBAAkB;AAClB,uCAA0D;AAE1D,MAAa,0BAA2B,SAAQ,qCAAmB;IACjE,YAAY,SAAgC,EAAE;QAC5C,KAAK,CAAC,sBAAY,EAAE,yBAAe,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI;QACF,OAAO;YACL,IAAI,qDAAmC,CACrC,cAAc,EACd,CAAC,UAAU,CAAC,EACZ,aAAa,CAAC,EAAE;gBACd,gEAAgE;gBAChE,qDAAqD;gBACrD,uDAAuD;gBACvD,MAAM,aAAa,GAAG;oBACpB,kGAAkG;oBAClG,2GAA2G;oBAC3G,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oBAC1D,OAAO;wBACL,MAAM,iBAAiB,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;wBACzC,gCAAgC;wBAChC,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC;wBAC7C,MAAM,mBAAmB,GACvB,OAAO,YAAY,KAAK,UAAU;4BAChC,CAAC,CAAC,aAAO,CAAC,IAAI,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC;4BAC9C,CAAC,CAAC,YAAY,CAAC;wBACnB,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;wBAC5C,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;oBACrD,CAAC,CAAC;gBACJ,CAAC,CAAC;gBAEF,kEAAkE;gBAClE,mCAAmC;gBACnC,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;gBACxC,OAAO,aAAa,CAAC;YACvB,CAAC,EACD,SAAS,CAAC,uEAAuE;aAClF;SACF,CAAC;IACJ,CAAC;CACF;AAxCD,gEAwCC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { context } from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nexport class LruMemoizerInstrumentation extends InstrumentationBase {\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init(): InstrumentationNodeModuleDefinition[] {\n return [\n new InstrumentationNodeModuleDefinition(\n 'lru-memoizer',\n ['>=1.3 <3'],\n 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 (this: unknown) {\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 (this: unknown) {\n const modifiedArguments = [...arguments];\n // last argument is the callback\n const origCallback = modifiedArguments.pop();\n const callbackWithContext =\n typeof origCallback === 'function'\n ? context.bind(context.active(), origCallback)\n : origCallback;\n modifiedArguments.push(callbackWithContext);\n return origMemoizer.apply(this, modifiedArguments);\n };\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 },\n undefined // no need to disable as this instrumentation does not create any spans\n ),\n ];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.d.ts new file mode 100644 index 0000000..e8dcac1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.55.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-lru-memoizer"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.js new file mode 100644 index 0000000..7b6cb85 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.55.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-lru-memoizer'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.js.map new file mode 100644 index 0000000..f2b9b36 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,6CAA6C,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.55.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-lru-memoizer';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/package.json new file mode 100644 index 0000000..6ae39e8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-lru-memoizer/package.json @@ -0,0 +1,57 @@ +{ + "name": "@opentelemetry/instrumentation-lru-memoizer", + "version": "0.55.0", + "description": "OpenTelemetry instrumentation for `lru-memoizer` function memoization using lru-cache", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-lru-memoizer" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-lru-memoizer", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", + "test-all-versions": "tav", + "version:update": "node ../../scripts/version-update.js" + }, + "keywords": [ + "lru-memoizer", + "instrumentation", + "nodejs", + "opentelemetry", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@types/lru-cache": "7.10.10", + "lru-memoizer": "2.1.4" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-lru-memoizer#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/README.md new file mode 100644 index 0000000..8dfc6d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/README.md @@ -0,0 +1,105 @@ +# OpenTelemetry MongoDB Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`mongodb`](https://github.com/mongodb/node-mongodb-native) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-mongodb +``` + +### Supported Versions + +- [`mongodb`](https://www.npmjs.com/package/mongodb) version `>=3.3.0 <8` + +## Usage + +OpenTelemetry MongoDB Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems. + +To load a specific instrumentation (**mongodb** in this case), specify it in the Node Tracer's configuration. + +```javascript +const { MongoDBInstrumentation } = require('@opentelemetry/instrumentation-mongodb'); +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new MongoDBInstrumentation({ + // see under for available configuration + }), + ], +}); + +``` + +See [`examples/mongodb`](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/mongodb) for a short example. + +### Mongo instrumentation Options + +Mongodb instrumentation has few options available to choose from. You can set the following: + +| Options | Type | Description | +| --------------------------- | -------- | ----------- | +| `enhancedDatabaseReporting` | boolean | If true, additional information about query parameters and results will be attached (as `attributes`) to spans representing database operations. | +| `responseHook` | function | Function for adding custom attributes from db response. See type `MongoDBInstrumentationExecutionResponseHook`. | +| `dbStatementSerializer` | function | Custom serializer function for the `db.statement` / `db.query.text` span attribute. See type `DbStatementSerializer`. | +| `requireParentSpan` | boolean | Require a parent span in order to create mongodb spans, default when unset is `true`. | + +## Semantic Conventions + +This instrumentation implements Semantic Conventions (semconv) v1.7.0. Since then, networking (in semconv v1.23.1) and database (in semconv v1.33.0) semantic conventions were stabilized. As of `@opentelemetry/instrumentation-mongodb@0.63.0` support has been added for migrating to the stable semantic conventions using the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable as follows: + +1. Upgrade to the latest version of this instrumentation package. +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http/dup,database/dup` to emit both old and stable semantic conventions. (The `http` token is used to control the `net.*` attributes, the `database` token to control to `db.*` attributes.) +3. Modify alerts, dashboards, metrics, and other processes in your Observability system to use the stable semantic conventions. +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http,database` to emit only the stable semantic conventions. + +By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` includes neither of the above tokens, the old v1.7.0 semconv is used. +The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new database and networking semconv, after which a new minor version will use the new semconv by default and drop support for the old semconv. +See [the HTTP migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/) and the [database migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/) for details. + +Span attributes: + +| Old semconv | Stable semconv | Description | +| ----------------------- | -------------------- | ----------- | +| `db.system` | `db.system.name` | 'mongodb' | +| `db.name` | `db.namespace` | The MongoDB database name. | +| `db.connection_string` | Removed | | +| `db.operation` | `db.operation.name` | The name of the MongoDB command being executed. | +| `db.mongodb.collection` | `db.collection.name` | The MongoDB collection being accessed within the database stated in `db.namespace`. | +| `db.statement` | `db.query.text` | The database query being executed. | +| `net.peer.name` | `server.address` | Remote hostname or similar. | +| `net.peer.port` | `server.port` | Remote port number. | + +Metrics collected: + +- [`db.client.connections.usage`](https://github.com/open-telemetry/semantic-conventions/blob/v1.24.0/docs/database/database-metrics.md#metric-dbclientconnectionsusage) - The number of connections currently in a given state. + + Note: While `db.client.connections.usage` has been deprecated in favor of `db.client.connection.count` in the [semconv database migration](https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count), the new metric is still unstable, so cannot be enabled via `OTEL_SEMCONV_STABILITY_OPT_IN=database`. There is ongoing work to provide an opt-in setting to select the latest experimental semconv. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-mongodb +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-mongodb.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.d.ts new file mode 100644 index 0000000..82304cf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.d.ts @@ -0,0 +1,4 @@ +export { MongoDBInstrumentation } from './instrumentation'; +export { MongodbCommandType } from './types'; +export type { CommandResult, DbStatementSerializer, MongoDBInstrumentationConfig, MongoDBInstrumentationExecutionResponseHook, MongoResponseHookInformation, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.js new file mode 100644 index 0000000..6ca22e7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.js @@ -0,0 +1,23 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MongodbCommandType = exports.MongoDBInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "MongoDBInstrumentation", { enumerable: true, get: function () { return instrumentation_1.MongoDBInstrumentation; } }); +var types_1 = require("./types"); +Object.defineProperty(exports, "MongodbCommandType", { enumerable: true, get: function () { return types_1.MongodbCommandType; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.js.map new file mode 100644 index 0000000..abb9802 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA;AAC/B,iCAA6C;AAApC,2GAAA,kBAAkB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { MongoDBInstrumentation } from './instrumentation';\nexport { MongodbCommandType } from './types';\nexport type {\n CommandResult,\n DbStatementSerializer,\n MongoDBInstrumentationConfig,\n MongoDBInstrumentationExecutionResponseHook,\n MongoResponseHookInformation,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.d.ts new file mode 100644 index 0000000..1f42057 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.d.ts @@ -0,0 +1,79 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { MongoDBInstrumentationConfig } from './types'; +/** mongodb instrumentation plugin for OpenTelemetry */ +export declare class MongoDBInstrumentation extends InstrumentationBase { + private _netSemconvStability; + private _dbSemconvStability; + private _connectionsUsage; + private _poolName; + constructor(config?: MongoDBInstrumentationConfig); + private _setSemconvStabilityFromEnv; + setConfig(config?: MongoDBInstrumentationConfig): void; + _updateMetricInstruments(): void; + /** + * Convenience function for updating the `db.client.connections.usage` metric. + * The name "count" comes from the eventual replacement for this metric per + * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count + */ + private _connCountAdd; + init(): InstrumentationNodeModuleDefinition[]; + private _getV3ConnectionPatches; + private _getV4SessionsPatches; + private _getV4AcquireCommand; + private _getV4ReleaseCommand; + private _getV4ConnectionPoolPatches; + private _getV4ConnectPatches; + private _getV4ConnectionPoolCheckOut; + private _getV4ConnectCommand; + private _getV4ConnectionPatches; + /** Creates spans for common operations */ + private _getV3PatchOperation; + /** Creates spans for command operation */ + private _getV3PatchCommand; + /** Creates spans for command operation */ + private _getV4PatchCommandCallback; + private _getV4PatchCommandPromise; + /** Creates spans for find operation */ + private _getV3PatchFind; + /** Creates spans for find operation */ + private _getV3PatchCursor; + /** + * Get the mongodb command type from the object. + * @param command Internal mongodb command object + */ + private static _getCommandType; + /** + * Determine a span's attributes by fetching related metadata from the context + * @param connectionCtx mongodb internal connection context + * @param ns mongodb namespace + * @param command mongodb internal representation of a command + */ + private _getV4SpanAttributes; + /** + * Determine a span's attributes by fetching related metadata from the context + * @param ns mongodb namespace + * @param topology mongodb internal representation of the network topology + * @param command mongodb internal representation of a command + */ + private _getV3SpanAttributes; + private _getSpanAttributes; + private _spanNameFromAttrs; + private _getDefaultDbStatementReplacer; + private _defaultDbStatementSerializer; + /** + * Triggers the response hook in case it is defined. + * @param span The span to add the results to. + * @param result The command result + */ + private _handleExecutionResult; + /** + * Ends a created span. + * @param span The created span to end. + * @param resultHandler A callback function. + * @param connectionId: The connection ID of the Command response. + */ + private _patchEnd; + private setPoolName; + private _checkSkipInstrumentation; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.js new file mode 100644 index 0000000..4e4ae30 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.js @@ -0,0 +1,719 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MongoDBInstrumentation = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const api_1 = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +const internal_types_1 = require("./internal-types"); +/** @knipignore */ +const version_1 = require("./version"); +const DEFAULT_CONFIG = { + requireParentSpan: true, +}; +/** mongodb instrumentation plugin for OpenTelemetry */ +class MongoDBInstrumentation extends instrumentation_1.InstrumentationBase { + _netSemconvStability; + _dbSemconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config }); + this._setSemconvStabilityFromEnv(); + } + // Used for testing. + _setSemconvStabilityFromEnv() { + this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + setConfig(config = {}) { + super.setConfig({ ...DEFAULT_CONFIG, ...config }); + } + _updateMetricInstruments() { + this._connectionsUsage = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTIONS_USAGE, { + description: 'The number of connections that are currently in state described by the state attribute.', + unit: '{connection}', + }); + } + /** + * Convenience function for updating the `db.client.connections.usage` metric. + * The name "count" comes from the eventual replacement for this metric per + * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count + */ + _connCountAdd(n, poolName, state) { + this._connectionsUsage?.add(n, { 'pool.name': poolName, state }); + } + init() { + const { v3PatchConnection: v3PatchConnection, v3UnpatchConnection: v3UnpatchConnection, } = this._getV3ConnectionPatches(); + const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches(); + const { v4PatchConnectionCallback, v4PatchConnectionPromise, v4UnpatchConnection, } = this._getV4ConnectionPatches(); + const { v4PatchConnectionPool, v4UnpatchConnectionPool } = this._getV4ConnectionPoolPatches(); + const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches(); + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition('mongodb', ['>=3.3.0 <4'], undefined, undefined, [ + new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/core/wireprotocol/index.js', ['>=3.3.0 <4'], v3PatchConnection, v3UnpatchConnection), + ]), + new instrumentation_1.InstrumentationNodeModuleDefinition('mongodb', ['>=4.0.0 <8'], undefined, undefined, [ + new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connection.js', ['>=4.0.0 <6.4'], v4PatchConnectionCallback, v4UnpatchConnection), + new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connection.js', ['>=6.4.0 <8'], v4PatchConnectionPromise, v4UnpatchConnection), + new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connection_pool.js', ['>=4.0.0 <6.4'], v4PatchConnectionPool, v4UnpatchConnectionPool), + new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connect.js', ['>=4.0.0 <8'], v4PatchConnect, v4UnpatchConnect), + new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/sessions.js', ['>=4.0.0 <8'], v4PatchSessions, v4UnpatchSessions), + ]), + ]; + } + _getV3ConnectionPatches() { + return { + v3PatchConnection: (moduleExports) => { + // patch insert operation + if ((0, instrumentation_1.isWrapped)(moduleExports.insert)) { + this._unwrap(moduleExports, 'insert'); + } + this._wrap(moduleExports, 'insert', this._getV3PatchOperation('insert')); + // patch remove operation + if ((0, instrumentation_1.isWrapped)(moduleExports.remove)) { + this._unwrap(moduleExports, 'remove'); + } + this._wrap(moduleExports, 'remove', this._getV3PatchOperation('remove')); + // patch update operation + if ((0, instrumentation_1.isWrapped)(moduleExports.update)) { + this._unwrap(moduleExports, 'update'); + } + this._wrap(moduleExports, 'update', this._getV3PatchOperation('update')); + // patch other command + if ((0, instrumentation_1.isWrapped)(moduleExports.command)) { + this._unwrap(moduleExports, 'command'); + } + this._wrap(moduleExports, 'command', this._getV3PatchCommand()); + // patch query + if ((0, instrumentation_1.isWrapped)(moduleExports.query)) { + this._unwrap(moduleExports, 'query'); + } + this._wrap(moduleExports, 'query', this._getV3PatchFind()); + // patch get more operation on cursor + if ((0, instrumentation_1.isWrapped)(moduleExports.getMore)) { + this._unwrap(moduleExports, 'getMore'); + } + this._wrap(moduleExports, 'getMore', this._getV3PatchCursor()); + return moduleExports; + }, + v3UnpatchConnection: (moduleExports) => { + if (moduleExports === undefined) + return; + this._unwrap(moduleExports, 'insert'); + this._unwrap(moduleExports, 'remove'); + this._unwrap(moduleExports, 'update'); + this._unwrap(moduleExports, 'command'); + this._unwrap(moduleExports, 'query'); + this._unwrap(moduleExports, 'getMore'); + }, + }; + } + _getV4SessionsPatches() { + return { + v4PatchSessions: (moduleExports) => { + if ((0, instrumentation_1.isWrapped)(moduleExports.acquire)) { + this._unwrap(moduleExports, 'acquire'); + } + this._wrap(moduleExports.ServerSessionPool.prototype, 'acquire', this._getV4AcquireCommand()); + if ((0, instrumentation_1.isWrapped)(moduleExports.release)) { + this._unwrap(moduleExports, 'release'); + } + this._wrap(moduleExports.ServerSessionPool.prototype, 'release', this._getV4ReleaseCommand()); + return moduleExports; + }, + v4UnpatchSessions: (moduleExports) => { + if (moduleExports === undefined) + return; + if ((0, instrumentation_1.isWrapped)(moduleExports.acquire)) { + this._unwrap(moduleExports, 'acquire'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.release)) { + this._unwrap(moduleExports, 'release'); + } + }, + }; + } + _getV4AcquireCommand() { + const instrumentation = this; + return (original) => { + return function patchAcquire() { + const nSessionsBeforeAcquire = this.sessions.length; + const session = original.call(this); + const nSessionsAfterAcquire = this.sessions.length; + if (nSessionsBeforeAcquire === nSessionsAfterAcquire) { + //no session in the pool. a new session was created and used + instrumentation._connCountAdd(1, instrumentation._poolName, 'used'); + } + else if (nSessionsBeforeAcquire - 1 === nSessionsAfterAcquire) { + //a session was already in the pool. remove it from the pool and use it. + instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle'); + instrumentation._connCountAdd(1, instrumentation._poolName, 'used'); + } + return session; + }; + }; + } + _getV4ReleaseCommand() { + const instrumentation = this; + return (original) => { + return function patchRelease(session) { + const cmdPromise = original.call(this, session); + instrumentation._connCountAdd(-1, instrumentation._poolName, 'used'); + instrumentation._connCountAdd(1, instrumentation._poolName, 'idle'); + return cmdPromise; + }; + }; + } + _getV4ConnectionPoolPatches() { + return { + v4PatchConnectionPool: (moduleExports) => { + const poolPrototype = moduleExports.ConnectionPool.prototype; + if ((0, instrumentation_1.isWrapped)(poolPrototype.checkOut)) { + this._unwrap(poolPrototype, 'checkOut'); + } + this._wrap(poolPrototype, 'checkOut', this._getV4ConnectionPoolCheckOut()); + return moduleExports; + }, + v4UnpatchConnectionPool: (moduleExports) => { + if (moduleExports === undefined) + return; + this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut'); + }, + }; + } + _getV4ConnectPatches() { + return { + v4PatchConnect: (moduleExports) => { + if ((0, instrumentation_1.isWrapped)(moduleExports.connect)) { + this._unwrap(moduleExports, 'connect'); + } + this._wrap(moduleExports, 'connect', this._getV4ConnectCommand()); + return moduleExports; + }, + v4UnpatchConnect: (moduleExports) => { + if (moduleExports === undefined) + return; + this._unwrap(moduleExports, 'connect'); + }, + }; + } + // This patch will become unnecessary once + // https://jira.mongodb.org/browse/NODE-5639 is done. + _getV4ConnectionPoolCheckOut() { + return (original) => { + return function patchedCheckout(callback) { + const patchedCallback = api_1.context.bind(api_1.context.active(), callback); + return original.call(this, patchedCallback); + }; + }; + } + _getV4ConnectCommand() { + const instrumentation = this; + return (original) => { + return function patchedConnect(options, callback) { + // from v6.4 `connect` method only accepts an options param and returns a promise + // with the connection + if (original.length === 1) { + const result = original.call(this, options); + if (result && typeof result.then === 'function') { + result.then(() => instrumentation.setPoolName(options), + // this handler is set to pass the lint rules + () => undefined); + } + return result; + } + // Earlier versions expects a callback param and return void + const patchedCallback = function (err, conn) { + if (err || !conn) { + callback(err, conn); + return; + } + instrumentation.setPoolName(options); + callback(err, conn); + }; + return original.call(this, options, patchedCallback); + }; + }; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _getV4ConnectionPatches() { + return { + v4PatchConnectionCallback: (moduleExports) => { + // patch insert operation + if ((0, instrumentation_1.isWrapped)(moduleExports.Connection.prototype.command)) { + this._unwrap(moduleExports.Connection.prototype, 'command'); + } + this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandCallback()); + return moduleExports; + }, + v4PatchConnectionPromise: (moduleExports) => { + // patch insert operation + if ((0, instrumentation_1.isWrapped)(moduleExports.Connection.prototype.command)) { + this._unwrap(moduleExports.Connection.prototype, 'command'); + } + this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandPromise()); + return moduleExports; + }, + v4UnpatchConnection: (moduleExports) => { + if (moduleExports === undefined) + return; + this._unwrap(moduleExports.Connection.prototype, 'command'); + }, + }; + } + /** Creates spans for common operations */ + _getV3PatchOperation(operationName) { + const instrumentation = this; + return (original) => { + return function patchedServerCommand(server, ns, ops, options, callback) { + const currentSpan = api_1.trace.getSpan(api_1.context.active()); + const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan); + const resultHandler = typeof options === 'function' ? options : callback; + if (skipInstrumentation || + typeof resultHandler !== 'function' || + typeof ops !== 'object') { + if (typeof options === 'function') { + return original.call(this, server, ns, ops, options); + } + else { + return original.call(this, server, ns, ops, options, callback); + } + } + const attributes = instrumentation._getV3SpanAttributes(ns, server, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ops[0], operationName); + const spanName = instrumentation._spanNameFromAttrs(attributes); + const span = instrumentation.tracer.startSpan(spanName, { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + const patchedCallback = instrumentation._patchEnd(span, resultHandler); + // handle when options is the callback to send the correct number of args + if (typeof options === 'function') { + return original.call(this, server, ns, ops, patchedCallback); + } + else { + return original.call(this, server, ns, ops, options, patchedCallback); + } + }; + }; + } + /** Creates spans for command operation */ + _getV3PatchCommand() { + const instrumentation = this; + return (original) => { + return function patchedServerCommand(server, ns, cmd, options, callback) { + const currentSpan = api_1.trace.getSpan(api_1.context.active()); + const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan); + const resultHandler = typeof options === 'function' ? options : callback; + if (skipInstrumentation || + typeof resultHandler !== 'function' || + typeof cmd !== 'object') { + if (typeof options === 'function') { + return original.call(this, server, ns, cmd, options); + } + else { + return original.call(this, server, ns, cmd, options, callback); + } + } + const commandType = MongoDBInstrumentation._getCommandType(cmd); + const operationName = commandType === internal_types_1.MongodbCommandType.UNKNOWN ? undefined : commandType; + const attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, operationName); + const spanName = instrumentation._spanNameFromAttrs(attributes); + const span = instrumentation.tracer.startSpan(spanName, { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + const patchedCallback = instrumentation._patchEnd(span, resultHandler); + // handle when options is the callback to send the correct number of args + if (typeof options === 'function') { + return original.call(this, server, ns, cmd, patchedCallback); + } + else { + return original.call(this, server, ns, cmd, options, patchedCallback); + } + }; + }; + } + /** Creates spans for command operation */ + _getV4PatchCommandCallback() { + const instrumentation = this; + return (original) => { + return function patchedV4ServerCommand(ns, cmd, options, callback) { + const currentSpan = api_1.trace.getSpan(api_1.context.active()); + const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan); + const resultHandler = callback; + const commandType = Object.keys(cmd)[0]; + if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) { + return original.call(this, ns, cmd, options, callback); + } + let span = undefined; + if (!skipInstrumentation) { + const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType); + const spanName = instrumentation._spanNameFromAttrs(attributes); + span = instrumentation.tracer.startSpan(spanName, { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + } + const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType); + return original.call(this, ns, cmd, options, patchedCallback); + }; + }; + } + _getV4PatchCommandPromise() { + const instrumentation = this; + return (original) => { + return function patchedV4ServerCommand(...args) { + const [ns, cmd] = args; + const currentSpan = api_1.trace.getSpan(api_1.context.active()); + const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan); + const commandType = Object.keys(cmd)[0]; + const resultHandler = () => undefined; + if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) { + return original.apply(this, args); + } + let span = undefined; + if (!skipInstrumentation) { + const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType); + const spanName = instrumentation._spanNameFromAttrs(attributes); + span = instrumentation.tracer.startSpan(spanName, { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + } + const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType); + const result = original.apply(this, args); + result.then((res) => patchedCallback(null, res), (err) => patchedCallback(err)); + return result; + }; + }; + } + /** Creates spans for find operation */ + _getV3PatchFind() { + const instrumentation = this; + return (original) => { + return function patchedServerCommand(server, ns, cmd, cursorState, options, callback) { + const currentSpan = api_1.trace.getSpan(api_1.context.active()); + const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan); + const resultHandler = typeof options === 'function' ? options : callback; + if (skipInstrumentation || + typeof resultHandler !== 'function' || + typeof cmd !== 'object') { + if (typeof options === 'function') { + return original.call(this, server, ns, cmd, cursorState, options); + } + else { + return original.call(this, server, ns, cmd, cursorState, options, callback); + } + } + const attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, 'find'); + const spanName = instrumentation._spanNameFromAttrs(attributes); + const span = instrumentation.tracer.startSpan(spanName, { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + const patchedCallback = instrumentation._patchEnd(span, resultHandler); + // handle when options is the callback to send the correct number of args + if (typeof options === 'function') { + return original.call(this, server, ns, cmd, cursorState, patchedCallback); + } + else { + return original.call(this, server, ns, cmd, cursorState, options, patchedCallback); + } + }; + }; + } + /** Creates spans for find operation */ + _getV3PatchCursor() { + const instrumentation = this; + return (original) => { + return function patchedServerCommand(server, ns, cursorState, batchSize, options, callback) { + const currentSpan = api_1.trace.getSpan(api_1.context.active()); + const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan); + const resultHandler = typeof options === 'function' ? options : callback; + if (skipInstrumentation || typeof resultHandler !== 'function') { + if (typeof options === 'function') { + return original.call(this, server, ns, cursorState, batchSize, options); + } + else { + return original.call(this, server, ns, cursorState, batchSize, options, callback); + } + } + const attributes = instrumentation._getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore'); + const spanName = instrumentation._spanNameFromAttrs(attributes); + const span = instrumentation.tracer.startSpan(spanName, { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + const patchedCallback = instrumentation._patchEnd(span, resultHandler); + // handle when options is the callback to send the correct number of args + if (typeof options === 'function') { + return original.call(this, server, ns, cursorState, batchSize, patchedCallback); + } + else { + return original.call(this, server, ns, cursorState, batchSize, options, patchedCallback); + } + }; + }; + } + /** + * Get the mongodb command type from the object. + * @param command Internal mongodb command object + */ + static _getCommandType(command) { + if (command.createIndexes !== undefined) { + return internal_types_1.MongodbCommandType.CREATE_INDEXES; + } + else if (command.findandmodify !== undefined) { + return internal_types_1.MongodbCommandType.FIND_AND_MODIFY; + } + else if (command.ismaster !== undefined) { + return internal_types_1.MongodbCommandType.IS_MASTER; + } + else if (command.count !== undefined) { + return internal_types_1.MongodbCommandType.COUNT; + } + else if (command.aggregate !== undefined) { + return internal_types_1.MongodbCommandType.AGGREGATE; + } + else { + return internal_types_1.MongodbCommandType.UNKNOWN; + } + } + /** + * Determine a span's attributes by fetching related metadata from the context + * @param connectionCtx mongodb internal connection context + * @param ns mongodb namespace + * @param command mongodb internal representation of a command + */ + _getV4SpanAttributes(connectionCtx, ns, command, operation) { + let host, port; + if (connectionCtx) { + const hostParts = typeof connectionCtx.address === 'string' + ? connectionCtx.address.split(':') + : ''; + if (hostParts.length === 2) { + host = hostParts[0]; + port = hostParts[1]; + } + } + // capture parameters within the query as well if enhancedDatabaseReporting is enabled. + let commandObj; + if (command?.documents && command.documents[0]) { + commandObj = command.documents[0]; + } + else if (command?.cursors) { + commandObj = command.cursors; + } + else { + commandObj = command; + } + return this._getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation); + } + /** + * Determine a span's attributes by fetching related metadata from the context + * @param ns mongodb namespace + * @param topology mongodb internal representation of the network topology + * @param command mongodb internal representation of a command + */ + _getV3SpanAttributes(ns, topology, command, operation) { + // Extract host/port info. + let host; + let port; + if (topology && topology.s) { + host = topology.s.options?.host ?? topology.s.host; + port = (topology.s.options?.port ?? topology.s.port)?.toString(); + if (host == null || port == null) { + const address = topology.description?.address; + if (address) { + const addressSegments = address.split(':'); + host = addressSegments[0]; + port = addressSegments[1]; + } + } + } + // The namespace is a combination of the database name and the name of the + // collection or index, like so: [database-name].[collection-or-index-name]. + // It could be a string or an instance of MongoDBNamespace, as such we + // always coerce to a string to extract db and collection. + const [dbName, dbCollection] = ns.toString().split('.'); + // capture parameters within the query as well if enhancedDatabaseReporting is enabled. + const commandObj = command?.query ?? command?.q ?? command; + return this._getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation); + } + _getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation) { + const attributes = {}; + if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MONGODB; + attributes[semconv_1.ATTR_DB_NAME] = dbName; + attributes[semconv_1.ATTR_DB_MONGODB_COLLECTION] = dbCollection; + attributes[semconv_1.ATTR_DB_OPERATION] = operation; + attributes[semconv_1.ATTR_DB_CONNECTION_STRING] = + `mongodb://${host}:${port}/${dbName}`; + } + if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB; + attributes[semantic_conventions_1.ATTR_DB_NAMESPACE] = dbName; + attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = operation; + attributes[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = dbCollection; + } + if (host && port) { + if (this._netSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_NET_PEER_NAME] = host; + } + if (this._netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host; + } + const portNumber = parseInt(port, 10); + if (!isNaN(portNumber)) { + if (this._netSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_NET_PEER_PORT] = portNumber; + } + if (this._netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_SERVER_PORT] = portNumber; + } + } + } + if (commandObj) { + const { dbStatementSerializer: configDbStatementSerializer } = this.getConfig(); + const dbStatementSerializer = typeof configDbStatementSerializer === 'function' + ? configDbStatementSerializer + : this._defaultDbStatementSerializer.bind(this); + (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + const query = dbStatementSerializer(commandObj); + if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_STATEMENT] = query; + } + if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = query; + } + }, err => { + if (err) { + this._diag.error('Error running dbStatementSerializer hook', err); + } + }, true); + } + return attributes; + } + _spanNameFromAttrs(attributes) { + let spanName; + if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + // https://opentelemetry.io/docs/specs/semconv/database/database-spans/#name + spanName = + [ + attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME], + attributes[semantic_conventions_1.ATTR_DB_COLLECTION_NAME], + ] + .filter(attr => attr) + .join(' ') || semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB; + } + else { + spanName = `mongodb.${attributes[semconv_1.ATTR_DB_OPERATION] || 'command'}`; + } + return spanName; + } + _getDefaultDbStatementReplacer() { + const seen = new WeakSet(); + return (_key, value) => { + // undefined, boolean, number, bigint, string, symbol, function || null + if (typeof value !== 'object' || !value) + return '?'; + // objects (including arrays) + if (seen.has(value)) + return '[Circular]'; + seen.add(value); + return value; + }; + } + _defaultDbStatementSerializer(commandObj) { + const { enhancedDatabaseReporting } = this.getConfig(); + if (enhancedDatabaseReporting) { + return JSON.stringify(commandObj); + } + return JSON.stringify(commandObj, this._getDefaultDbStatementReplacer()); + } + /** + * Triggers the response hook in case it is defined. + * @param span The span to add the results to. + * @param result The command result + */ + _handleExecutionResult(span, result) { + const { responseHook } = this.getConfig(); + if (typeof responseHook === 'function') { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + responseHook(span, { data: result }); + }, err => { + if (err) { + this._diag.error('Error running response hook', err); + } + }, true); + } + } + /** + * Ends a created span. + * @param span The created span to end. + * @param resultHandler A callback function. + * @param connectionId: The connection ID of the Command response. + */ + _patchEnd(span, resultHandler, connectionId, commandType) { + // mongodb is using "tick" when calling a callback, this way the context + // in final callback (resultHandler) is lost + const activeContext = api_1.context.active(); + const instrumentation = this; + let spanEnded = false; + return function patchedEnd(...args) { + if (!spanEnded) { + spanEnded = true; + const error = args[0]; + if (span) { + if (error instanceof Error) { + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: error.message, + }); + } + else { + const result = args[1]; + instrumentation._handleExecutionResult(span, result); + } + span.end(); + } + if (commandType === 'endSessions') { + instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle'); + } + } + return api_1.context.with(activeContext, () => { + return resultHandler.apply(this, args); + }); + }; + } + setPoolName(options) { + const host = options.hostAddress?.host; + const port = options.hostAddress?.port; + const database = options.dbName; + const poolName = `mongodb://${host}:${port}/${database}`; + this._poolName = poolName; + } + _checkSkipInstrumentation(currentSpan) { + const requireParentSpan = this.getConfig().requireParentSpan; + const hasNoParentSpan = currentSpan === undefined; + return requireParentSpan === true && hasNoParentSpan; + } +} +exports.MongoDBInstrumentation = MongoDBInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.js.map new file mode 100644 index 0000000..2f4bd2f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n context,\n trace,\n Span,\n SpanKind,\n SpanStatusCode,\n UpDownCounter,\n type Attributes,\n} from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n safeExecuteInTheMiddle,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n ATTR_DB_COLLECTION_NAME,\n ATTR_DB_NAMESPACE,\n ATTR_DB_OPERATION_NAME,\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_MONGODB_COLLECTION,\n ATTR_DB_NAME,\n ATTR_DB_OPERATION,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n DB_SYSTEM_NAME_VALUE_MONGODB,\n DB_SYSTEM_VALUE_MONGODB,\n METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport { MongoDBInstrumentationConfig, CommandResult } from './types';\nimport {\n CursorState,\n ServerSession,\n MongodbCommandType,\n MongoInternalCommand,\n MongodbNamespace,\n MongoInternalTopology,\n WireProtocolInternal,\n V4Connection,\n V4ConnectionPool,\n Replacer,\n} from './internal-types';\nimport { V4Connect, V4Session } from './internal-types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst DEFAULT_CONFIG: MongoDBInstrumentationConfig = {\n requireParentSpan: true,\n};\n\n/** mongodb instrumentation plugin for OpenTelemetry */\nexport class MongoDBInstrumentation extends InstrumentationBase {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n declare private _connectionsUsage: UpDownCounter;\n declare private _poolName: string;\n\n constructor(config: MongoDBInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n this._setSemconvStabilityFromEnv();\n }\n\n // Used for testing.\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n this._dbSemconvStability = semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n override setConfig(config: MongoDBInstrumentationConfig = {}) {\n super.setConfig({ ...DEFAULT_CONFIG, ...config });\n }\n\n override _updateMetricInstruments() {\n this._connectionsUsage = this.meter.createUpDownCounter(\n METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n {\n description:\n 'The number of connections that are currently in state described by the state attribute.',\n unit: '{connection}',\n }\n );\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 private _connCountAdd(n: number, poolName: string, state: string) {\n this._connectionsUsage?.add(n, { 'pool.name': poolName, state });\n }\n\n init() {\n const {\n v3PatchConnection: v3PatchConnection,\n v3UnpatchConnection: v3UnpatchConnection,\n } = this._getV3ConnectionPatches();\n\n const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches();\n const {\n v4PatchConnectionCallback,\n v4PatchConnectionPromise,\n v4UnpatchConnection,\n } = this._getV4ConnectionPatches();\n const { v4PatchConnectionPool, v4UnpatchConnectionPool } =\n this._getV4ConnectionPoolPatches();\n const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches();\n\n return [\n new InstrumentationNodeModuleDefinition(\n 'mongodb',\n ['>=3.3.0 <4'],\n undefined,\n undefined,\n [\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/core/wireprotocol/index.js',\n ['>=3.3.0 <4'],\n v3PatchConnection,\n v3UnpatchConnection\n ),\n ]\n ),\n new InstrumentationNodeModuleDefinition(\n 'mongodb',\n ['>=4.0.0 <8'],\n undefined,\n undefined,\n [\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection.js',\n ['>=4.0.0 <6.4'],\n v4PatchConnectionCallback,\n v4UnpatchConnection\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection.js',\n ['>=6.4.0 <8'],\n v4PatchConnectionPromise,\n v4UnpatchConnection\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection_pool.js',\n ['>=4.0.0 <6.4'],\n v4PatchConnectionPool,\n v4UnpatchConnectionPool\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connect.js',\n ['>=4.0.0 <8'],\n v4PatchConnect,\n v4UnpatchConnect\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/sessions.js',\n ['>=4.0.0 <8'],\n v4PatchSessions,\n v4UnpatchSessions\n ),\n ]\n ),\n ];\n }\n\n private _getV3ConnectionPatches() {\n return {\n v3PatchConnection: (moduleExports: T) => {\n // patch insert operation\n if (isWrapped(moduleExports.insert)) {\n this._unwrap(moduleExports, 'insert');\n }\n this._wrap(\n moduleExports,\n 'insert',\n this._getV3PatchOperation('insert')\n );\n // patch remove operation\n if (isWrapped(moduleExports.remove)) {\n this._unwrap(moduleExports, 'remove');\n }\n this._wrap(\n moduleExports,\n 'remove',\n this._getV3PatchOperation('remove')\n );\n // patch update operation\n if (isWrapped(moduleExports.update)) {\n this._unwrap(moduleExports, 'update');\n }\n this._wrap(\n moduleExports,\n 'update',\n this._getV3PatchOperation('update')\n );\n // patch other command\n if (isWrapped(moduleExports.command)) {\n this._unwrap(moduleExports, 'command');\n }\n this._wrap(moduleExports, 'command', this._getV3PatchCommand());\n // patch query\n if (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 (isWrapped(moduleExports.getMore)) {\n this._unwrap(moduleExports, 'getMore');\n }\n this._wrap(moduleExports, 'getMore', this._getV3PatchCursor());\n return moduleExports;\n },\n v3UnpatchConnection: (moduleExports?: T) => {\n if (moduleExports === undefined) 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\n private _getV4SessionsPatches() {\n return {\n v4PatchSessions: (moduleExports: any) => {\n if (isWrapped(moduleExports.acquire)) {\n this._unwrap(moduleExports, 'acquire');\n }\n this._wrap(\n moduleExports.ServerSessionPool.prototype,\n 'acquire',\n this._getV4AcquireCommand()\n );\n\n if (isWrapped(moduleExports.release)) {\n this._unwrap(moduleExports, 'release');\n }\n this._wrap(\n moduleExports.ServerSessionPool.prototype,\n 'release',\n this._getV4ReleaseCommand()\n );\n return moduleExports;\n },\n v4UnpatchSessions: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n if (isWrapped(moduleExports.acquire)) {\n this._unwrap(moduleExports, 'acquire');\n }\n if (isWrapped(moduleExports.release)) {\n this._unwrap(moduleExports, 'release');\n }\n },\n };\n }\n\n private _getV4AcquireCommand() {\n const instrumentation = this;\n return (original: V4Session['acquire']) => {\n return function patchAcquire(this: any) {\n const nSessionsBeforeAcquire = this.sessions.length;\n const session = original.call(this);\n const nSessionsAfterAcquire = this.sessions.length;\n\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 } 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\n private _getV4ReleaseCommand() {\n const instrumentation = this;\n return (original: V4Session['release']) => {\n return function patchRelease(this: any, session: ServerSession) {\n const cmdPromise = original.call(this, session);\n\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'used');\n instrumentation._connCountAdd(1, instrumentation._poolName, 'idle');\n return cmdPromise;\n };\n };\n }\n\n private _getV4ConnectionPoolPatches() {\n return {\n v4PatchConnectionPool: (moduleExports: any) => {\n const poolPrototype = moduleExports.ConnectionPool.prototype;\n\n if (isWrapped(poolPrototype.checkOut)) {\n this._unwrap(poolPrototype, 'checkOut');\n }\n\n this._wrap(\n poolPrototype,\n 'checkOut',\n this._getV4ConnectionPoolCheckOut()\n );\n return moduleExports;\n },\n v4UnpatchConnectionPool: (moduleExports?: any) => {\n if (moduleExports === undefined) return;\n\n this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut');\n },\n };\n }\n\n private _getV4ConnectPatches() {\n return {\n v4PatchConnect: (moduleExports: any) => {\n if (isWrapped(moduleExports.connect)) {\n this._unwrap(moduleExports, 'connect');\n }\n\n this._wrap(moduleExports, 'connect', this._getV4ConnectCommand());\n return moduleExports;\n },\n v4UnpatchConnect: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n\n this._unwrap(moduleExports, 'connect');\n },\n };\n }\n\n // This patch will become unnecessary once\n // https://jira.mongodb.org/browse/NODE-5639 is done.\n private _getV4ConnectionPoolCheckOut() {\n return (original: V4ConnectionPool['checkOut']) => {\n return function patchedCheckout(this: unknown, callback: any) {\n const patchedCallback = context.bind(context.active(), callback);\n return original.call(this, patchedCallback);\n };\n };\n }\n\n private _getV4ConnectCommand() {\n const instrumentation = this;\n\n return (\n original: V4Connect['connectCallback'] | V4Connect['connectPromise']\n ) => {\n return function patchedConnect(\n this: unknown,\n options: any,\n callback: any\n ) {\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 as V4Connect['connectPromise']).call(\n this,\n options\n );\n if (result && typeof result.then === 'function') {\n result.then(\n () => instrumentation.setPoolName(options),\n // this handler is set to pass the lint rules\n () => undefined\n );\n }\n return result;\n }\n\n // Earlier versions expects a callback param and return void\n const patchedCallback = function (err: any, conn: any) {\n if (err || !conn) {\n callback(err, conn);\n return;\n }\n instrumentation.setPoolName(options);\n callback(err, conn);\n };\n\n return (original as V4Connect['connectCallback']).call(\n this,\n options,\n patchedCallback\n );\n };\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private _getV4ConnectionPatches() {\n return {\n v4PatchConnectionCallback: (moduleExports: any) => {\n // patch insert operation\n if (isWrapped(moduleExports.Connection.prototype.command)) {\n this._unwrap(moduleExports.Connection.prototype, 'command');\n }\n\n this._wrap(\n moduleExports.Connection.prototype,\n 'command',\n this._getV4PatchCommandCallback()\n );\n return moduleExports;\n },\n v4PatchConnectionPromise: (moduleExports: any) => {\n // patch insert operation\n if (isWrapped(moduleExports.Connection.prototype.command)) {\n this._unwrap(moduleExports.Connection.prototype, 'command');\n }\n\n this._wrap(\n moduleExports.Connection.prototype,\n 'command',\n this._getV4PatchCommandPromise()\n );\n return moduleExports;\n },\n v4UnpatchConnection: (moduleExports?: any) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports.Connection.prototype, 'command');\n },\n };\n }\n\n /** Creates spans for common operations */\n private _getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n const instrumentation = this;\n return (original: WireProtocolInternal[typeof operationName]) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function\n ) {\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation =\n instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler =\n typeof options === 'function' ? options : callback;\n if (\n skipInstrumentation ||\n typeof resultHandler !== 'function' ||\n typeof ops !== 'object'\n ) {\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, options);\n } else {\n return original.call(this, server, ns, ops, options, callback);\n }\n }\n\n const attributes = instrumentation._getV3SpanAttributes(\n ns,\n server,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ops[0] as any,\n operationName\n );\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\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 } else {\n return original.call(this, server, ns, ops, options, patchedCallback);\n }\n };\n };\n }\n\n /** Creates spans for command operation */\n private _getV3PatchCommand() {\n const instrumentation = this;\n return (original: WireProtocolInternal['command']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n options: unknown | Function,\n callback?: Function\n ) {\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation =\n instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler =\n typeof options === 'function' ? options : callback;\n\n if (\n skipInstrumentation ||\n typeof resultHandler !== 'function' ||\n typeof cmd !== 'object'\n ) {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, options);\n } else {\n return original.call(this, server, ns, cmd, options, callback);\n }\n }\n\n const commandType = MongoDBInstrumentation._getCommandType(cmd);\n const operationName =\n commandType === MongodbCommandType.UNKNOWN ? undefined : commandType;\n const attributes = instrumentation._getV3SpanAttributes(\n ns,\n server,\n cmd,\n operationName\n );\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\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 } else {\n return original.call(this, server, ns, cmd, options, patchedCallback);\n }\n };\n };\n }\n\n /** Creates spans for command operation */\n private _getV4PatchCommandCallback() {\n const instrumentation = this;\n return (original: V4Connection['commandCallback']) => {\n return function patchedV4ServerCommand(\n this: any,\n ns: MongodbNamespace,\n cmd: any,\n options: undefined | unknown,\n callback: any\n ) {\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation =\n instrumentation._checkSkipInstrumentation(currentSpan);\n const resultHandler = callback;\n const commandType = Object.keys(cmd)[0];\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.call(this, ns, cmd, options, callback);\n }\n\n let span = undefined;\n if (!skipInstrumentation) {\n const attributes = instrumentation._getV4SpanAttributes(\n this,\n ns,\n cmd,\n commandType\n );\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n const patchedCallback = instrumentation._patchEnd(\n span,\n resultHandler,\n this.id,\n commandType\n );\n\n return original.call(this, ns, cmd, options, patchedCallback);\n };\n };\n }\n\n private _getV4PatchCommandPromise() {\n const instrumentation = this;\n return (original: V4Connection['commandPromise']) => {\n return function patchedV4ServerCommand(\n this: any,\n ...args: Parameters\n ) {\n const [ns, cmd] = args;\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation =\n instrumentation._checkSkipInstrumentation(currentSpan);\n\n const commandType = Object.keys(cmd)[0];\n const resultHandler = () => undefined;\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.apply(this, args);\n }\n\n let span = undefined;\n if (!skipInstrumentation) {\n const attributes = instrumentation._getV4SpanAttributes(\n this,\n ns,\n cmd,\n commandType\n );\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n\n const patchedCallback = instrumentation._patchEnd(\n span,\n resultHandler,\n this.id,\n commandType\n );\n\n const result = original.apply(this, args);\n result.then(\n (res: any) => patchedCallback(null, res),\n (err: any) => patchedCallback(err)\n );\n\n return result;\n };\n };\n }\n\n /** Creates spans for find operation */\n private _getV3PatchFind() {\n const instrumentation = this;\n return (original: WireProtocolInternal['query']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n cursorState: CursorState,\n options: unknown | Function,\n callback?: Function\n ) {\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation =\n instrumentation._checkSkipInstrumentation(currentSpan);\n const resultHandler =\n typeof options === 'function' ? options : callback;\n\n if (\n skipInstrumentation ||\n typeof resultHandler !== 'function' ||\n typeof cmd !== 'object'\n ) {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, options);\n } else {\n return original.call(\n this,\n server,\n ns,\n cmd,\n cursorState,\n options,\n callback\n );\n }\n }\n\n const attributes = instrumentation._getV3SpanAttributes(\n ns,\n server,\n cmd,\n 'find'\n );\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\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(\n this,\n server,\n ns,\n cmd,\n cursorState,\n patchedCallback\n );\n } else {\n return original.call(\n this,\n server,\n ns,\n cmd,\n cursorState,\n options,\n patchedCallback\n );\n }\n };\n };\n }\n\n /** Creates spans for find operation */\n private _getV3PatchCursor() {\n const instrumentation = this;\n return (original: WireProtocolInternal['getMore']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n batchSize: number,\n options: unknown | Function,\n callback?: Function\n ) {\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation =\n instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler =\n typeof options === 'function' ? options : callback;\n\n if (skipInstrumentation || typeof resultHandler !== 'function') {\n if (typeof options === 'function') {\n return original.call(\n this,\n server,\n ns,\n cursorState,\n batchSize,\n options\n );\n } else {\n return original.call(\n this,\n server,\n ns,\n cursorState,\n batchSize,\n options,\n callback\n );\n }\n }\n\n const attributes = instrumentation._getV3SpanAttributes(\n ns,\n server,\n cursorState.cmd,\n 'getMore'\n );\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\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(\n this,\n server,\n ns,\n cursorState,\n batchSize,\n patchedCallback\n );\n } else {\n return original.call(\n this,\n server,\n ns,\n cursorState,\n batchSize,\n options,\n patchedCallback\n );\n }\n };\n };\n }\n\n /**\n * Get the mongodb command type from the object.\n * @param command Internal mongodb command object\n */\n private static _getCommandType(\n command: MongoInternalCommand\n ): MongodbCommandType {\n if (command.createIndexes !== undefined) {\n return MongodbCommandType.CREATE_INDEXES;\n } else if (command.findandmodify !== undefined) {\n return MongodbCommandType.FIND_AND_MODIFY;\n } else if (command.ismaster !== undefined) {\n return MongodbCommandType.IS_MASTER;\n } else if (command.count !== undefined) {\n return MongodbCommandType.COUNT;\n } else if (command.aggregate !== undefined) {\n return MongodbCommandType.AGGREGATE;\n } else {\n return MongodbCommandType.UNKNOWN;\n }\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 private _getV4SpanAttributes(\n connectionCtx: any,\n ns: MongodbNamespace,\n command?: any,\n operation?: string\n ): Attributes {\n let host, port: undefined | string;\n if (connectionCtx) {\n const hostParts =\n 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: Record;\n if (command?.documents && command.documents[0]) {\n commandObj = command.documents[0];\n } else if (command?.cursors) {\n commandObj = command.cursors;\n } else {\n commandObj = command;\n }\n\n return this._getSpanAttributes(\n ns.db,\n ns.collection,\n host,\n port,\n commandObj,\n operation\n );\n }\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 private _getV3SpanAttributes(\n ns: string,\n topology: MongoInternalTopology,\n command?: MongoInternalCommand,\n operation?: string | undefined\n ): Attributes {\n // Extract host/port info.\n let host: undefined | string;\n let port: undefined | string;\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\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\n return this._getSpanAttributes(\n dbName,\n dbCollection,\n host,\n port,\n commandObj,\n operation\n );\n }\n\n private _getSpanAttributes(\n dbName?: string,\n dbCollection?: string,\n host?: undefined | string,\n port?: undefined | string,\n commandObj?: any,\n operation?: string | undefined\n ): Attributes {\n const attributes: Attributes = {};\n\n if (this._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MONGODB;\n attributes[ATTR_DB_NAME] = dbName;\n attributes[ATTR_DB_MONGODB_COLLECTION] = dbCollection;\n attributes[ATTR_DB_OPERATION] = operation;\n attributes[ATTR_DB_CONNECTION_STRING] =\n `mongodb://${host}:${port}/${dbName}`;\n }\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB;\n attributes[ATTR_DB_NAMESPACE] = dbName;\n attributes[ATTR_DB_OPERATION_NAME] = operation;\n attributes[ATTR_DB_COLLECTION_NAME] = dbCollection;\n }\n\n if (host && port) {\n if (this._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_NAME] = host;\n }\n if (this._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_ADDRESS] = host;\n }\n const portNumber = parseInt(port, 10);\n if (!isNaN(portNumber)) {\n if (this._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_PORT] = portNumber;\n }\n if (this._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_PORT] = portNumber;\n }\n }\n }\n\n if (commandObj) {\n const { dbStatementSerializer: configDbStatementSerializer } =\n this.getConfig();\n const dbStatementSerializer =\n typeof configDbStatementSerializer === 'function'\n ? configDbStatementSerializer\n : this._defaultDbStatementSerializer.bind(this);\n\n safeExecuteInTheMiddle(\n () => {\n const query = dbStatementSerializer(commandObj);\n if (this._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = query;\n }\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = query;\n }\n },\n err => {\n if (err) {\n this._diag.error('Error running dbStatementSerializer hook', err);\n }\n },\n true\n );\n }\n\n return attributes;\n }\n\n private _spanNameFromAttrs(attributes: Attributes): string {\n let spanName;\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n // https://opentelemetry.io/docs/specs/semconv/database/database-spans/#name\n spanName =\n [\n attributes[ATTR_DB_OPERATION_NAME],\n attributes[ATTR_DB_COLLECTION_NAME],\n ]\n .filter(attr => attr)\n .join(' ') || DB_SYSTEM_NAME_VALUE_MONGODB;\n } else {\n spanName = `mongodb.${attributes[ATTR_DB_OPERATION] || 'command'}`;\n }\n return spanName;\n }\n\n private _getDefaultDbStatementReplacer(): Replacer {\n const seen = new WeakSet();\n return (_key, value) => {\n // undefined, boolean, number, bigint, string, symbol, function || null\n if (typeof value !== 'object' || !value) return '?';\n\n // objects (including arrays)\n if (seen.has(value)) return '[Circular]';\n seen.add(value);\n return value;\n };\n }\n\n private _defaultDbStatementSerializer(commandObj: Record) {\n const { enhancedDatabaseReporting } = this.getConfig();\n\n if (enhancedDatabaseReporting) {\n return JSON.stringify(commandObj);\n }\n\n return JSON.stringify(commandObj, this._getDefaultDbStatementReplacer());\n }\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 private _handleExecutionResult(span: Span, result: CommandResult) {\n const { responseHook } = this.getConfig();\n if (typeof responseHook === 'function') {\n safeExecuteInTheMiddle(\n () => {\n responseHook(span, { data: result });\n },\n err => {\n if (err) {\n this._diag.error('Error running response hook', err);\n }\n },\n true\n );\n }\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 private _patchEnd(\n span: Span | undefined,\n resultHandler: Function,\n connectionId?: number,\n commandType?: string\n ): Function {\n // mongodb is using \"tick\" when calling a callback, this way the context\n // in final callback (resultHandler) is lost\n const activeContext = context.active();\n const instrumentation = this;\n let spanEnded = false;\n\n return function patchedEnd(this: {}, ...args: unknown[]) {\n if (!spanEnded) {\n spanEnded = true;\n const error = args[0];\n if (span) {\n if (error instanceof Error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n } else {\n const result = args[1] as CommandResult;\n instrumentation._handleExecutionResult(span, result);\n }\n span.end();\n }\n\n if (commandType === 'endSessions') {\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n }\n }\n\n return context.with(activeContext, () => {\n return resultHandler.apply(this, args);\n });\n };\n }\n private setPoolName(options: any) {\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\n private _checkSkipInstrumentation(currentSpan: Span | undefined) {\n const requireParentSpan = this.getConfig().requireParentSpan;\n const hasNoParentSpan = currentSpan === undefined;\n return requireParentSpan === true && hasNoParentSpan;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.d.ts new file mode 100644 index 0000000..78df743 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.d.ts @@ -0,0 +1,121 @@ +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import { Span } from '@opentelemetry/api'; +export interface MongoDBInstrumentationExecutionResponseHook { + (span: Span, responseInfo: MongoResponseHookInformation): void; +} +/** + * Function that can be used to serialize db.statement tag + * @param cmd - MongoDB command object + * + * @returns serialized string that will be used as the db.statement attribute. + */ +export type DbStatementSerializer = (cmd: Record) => string; +export interface MongoDBInstrumentationConfig extends InstrumentationConfig { + /** + * If true, additional information about query parameters and + * results will be attached (as `attributes`) to spans representing + * database operations. + */ + enhancedDatabaseReporting?: boolean; + /** + * Hook that allows adding custom span attributes based on the data + * returned from MongoDB actions. + * + * @default undefined + */ + responseHook?: MongoDBInstrumentationExecutionResponseHook; + /** + * Custom serializer function for the db.statement tag + */ + dbStatementSerializer?: DbStatementSerializer; +} +export type Func = (...args: unknown[]) => T; +export type MongoInternalCommand = { + findandmodify: boolean; + createIndexes: boolean; + count: boolean; + aggregate: boolean; + ismaster: boolean; + indexes?: unknown[]; + query?: Record; + limit?: number; + q?: Record; + u?: Record; +}; +export type ServerSession = { + id: any; + lastUse: number; + txnNumber: number; + isDirty: boolean; +}; +export type CursorState = { + cmd: MongoInternalCommand; +} & Record; +export interface MongoResponseHookInformation { + data: CommandResult; +} +export type CommandResult = { + result?: unknown; + connection?: unknown; + message?: unknown; +}; +export type WireProtocolInternal = { + insert: (server: MongoInternalTopology, ns: string, ops: unknown[], options: unknown | Function, callback?: Function) => unknown; + update: (server: MongoInternalTopology, ns: string, ops: unknown[], options: unknown | Function, callback?: Function) => unknown; + remove: (server: MongoInternalTopology, ns: string, ops: unknown[], options: unknown | Function, callback?: Function) => unknown; + killCursors: (server: MongoInternalTopology, ns: string, cursorState: CursorState, callback: Function) => unknown; + getMore: (server: MongoInternalTopology, ns: string, cursorState: CursorState, batchSize: number, options: unknown | Function, callback?: Function) => unknown; + query: (server: MongoInternalTopology, ns: string, cmd: MongoInternalCommand, cursorState: CursorState, options: unknown | Function, callback?: Function) => unknown; + command: (server: MongoInternalTopology, ns: string, cmd: MongoInternalCommand, options: unknown | Function, callback?: Function) => unknown; +}; +export type MongoInternalTopology = { + s?: { + options?: { + host?: string; + port?: number; + servername?: string; + }; + host?: string; + port?: number; + }; + description?: { + address?: string; + }; +}; +export declare enum MongodbCommandType { + CREATE_INDEXES = "createIndexes", + FIND_AND_MODIFY = "findAndModify", + IS_MASTER = "isMaster", + COUNT = "count", + AGGREGATE = "aggregate", + UNKNOWN = "unknown" +} +export type Document = { + [key: string]: any; +}; +export interface MongodbNamespace { + db: string; + collection?: string; +} +export type V4Connection = { + command: Function; + commandPromise(ns: MongodbNamespace, cmd: Document, options: undefined | unknown, responseType: undefined | unknown): Promise; + commandCallback(ns: MongodbNamespace, cmd: Document, options: undefined | unknown, callback: any): void; +}; +export type V4ConnectionPool = { + checkOut: (callback: (error: any, connection: any) => void) => void; +}; +export type V4Connect = { + connect: Function; + connectPromise: (options: any) => Promise; + connectCallback: (options: any, callback: any) => void; +}; +export type V4Session = { + acquire: () => ServerSession; + release: (session: ServerSession) => void; +}; +/** + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#replacer + */ +export type Replacer = (key: string, value: unknown) => unknown; +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.js new file mode 100644 index 0000000..22e19c7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.js @@ -0,0 +1,28 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MongodbCommandType = void 0; +var MongodbCommandType; +(function (MongodbCommandType) { + MongodbCommandType["CREATE_INDEXES"] = "createIndexes"; + MongodbCommandType["FIND_AND_MODIFY"] = "findAndModify"; + MongodbCommandType["IS_MASTER"] = "isMaster"; + MongodbCommandType["COUNT"] = "count"; + MongodbCommandType["AGGREGATE"] = "aggregate"; + MongodbCommandType["UNKNOWN"] = "unknown"; +})(MongodbCommandType = exports.MongodbCommandType || (exports.MongodbCommandType = {})); +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.js.map new file mode 100644 index 0000000..a1fb390 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAsJH,IAAY,kBAOX;AAPD,WAAY,kBAAkB;IAC5B,sDAAgC,CAAA;IAChC,uDAAiC,CAAA;IACjC,4CAAsB,CAAA;IACtB,qCAAe,CAAA;IACf,6CAAuB,CAAA;IACvB,yCAAmB,CAAA;AACrB,CAAC,EAPW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAO7B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { Span } from '@opentelemetry/api';\n\nexport interface MongoDBInstrumentationExecutionResponseHook {\n (span: Span, responseInfo: MongoResponseHookInformation): void;\n}\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmd - MongoDB command object\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (cmd: Record) => string;\n\nexport interface MongoDBInstrumentationConfig extends InstrumentationConfig {\n /**\n * If true, additional information about query parameters and\n * results will be attached (as `attributes`) to spans representing\n * database operations.\n */\n enhancedDatabaseReporting?: boolean;\n\n /**\n * Hook that allows adding custom span attributes based on the data\n * returned from MongoDB actions.\n *\n * @default undefined\n */\n responseHook?: MongoDBInstrumentationExecutionResponseHook;\n\n /**\n * Custom serializer function for the db.statement tag\n */\n dbStatementSerializer?: DbStatementSerializer;\n}\n\nexport type Func = (...args: unknown[]) => T;\nexport type MongoInternalCommand = {\n findandmodify: boolean;\n createIndexes: boolean;\n count: boolean;\n aggregate: boolean;\n ismaster: boolean;\n indexes?: unknown[];\n query?: Record;\n limit?: number;\n q?: Record;\n u?: Record;\n};\n\nexport type ServerSession = {\n id: any;\n lastUse: number;\n txnNumber: number;\n isDirty: boolean;\n};\n\nexport type CursorState = { cmd: MongoInternalCommand } & Record<\n string,\n unknown\n>;\n\nexport interface MongoResponseHookInformation {\n data: CommandResult;\n}\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/connection/command_result.js\nexport type CommandResult = {\n result?: unknown;\n connection?: unknown;\n message?: unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/wireprotocol/index.js\nexport type WireProtocolInternal = {\n insert: (\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function\n ) => unknown;\n update: (\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function\n ) => unknown;\n remove: (\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function\n ) => unknown;\n killCursors: (\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n callback: Function\n ) => unknown;\n getMore: (\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n batchSize: number,\n options: unknown | Function,\n callback?: Function\n ) => unknown;\n query: (\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n cursorState: CursorState,\n options: unknown | Function,\n callback?: Function\n ) => unknown;\n command: (\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n options: unknown | Function,\n callback?: Function\n ) => unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/topologies/server.js#L172\n// https://github.com/mongodb/node-mongodb-native/blob/2.2/lib/server.js#L174\nexport type MongoInternalTopology = {\n s?: {\n // those are for mongodb@3\n options?: {\n host?: string;\n port?: number;\n servername?: string;\n };\n // those are for mongodb@2\n host?: string;\n port?: number;\n };\n // mongodb@3 with useUnifiedTopology option\n description?: {\n address?: string;\n };\n};\n\nexport enum MongodbCommandType {\n CREATE_INDEXES = 'createIndexes',\n FIND_AND_MODIFY = 'findAndModify',\n IS_MASTER = 'isMaster',\n COUNT = 'count',\n AGGREGATE = 'aggregate',\n UNKNOWN = 'unknown',\n}\n\n// https://github.com/mongodb/js-bson/blob/main/src/bson.ts\nexport type Document = {\n [key: string]: any;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/utils.ts#L281\nexport interface MongodbNamespace {\n db: string;\n collection?: string;\n}\n\nexport type V4Connection = {\n command: Function;\n // From version 6.4.0 the method does not expect a callback and returns a promise\n // https://github.com/mongodb/node-mongodb-native/blob/v6.4.2/src/cmap/connection.ts\n commandPromise(\n ns: MongodbNamespace,\n cmd: Document,\n options: undefined | unknown,\n // From v6.6.0 we have this new param which is a constructor function\n // https://github.com/mongodb/node-mongodb-native/blob/v6.6.0/src/cmap/connection.ts#L588\n responseType: undefined | unknown\n ): Promise;\n // Earlier versions expect a callback param and return void\n // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection.ts\n commandCallback(\n ns: MongodbNamespace,\n cmd: Document,\n options: undefined | unknown,\n callback: any\n ): void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection_pool.ts\nexport type V4ConnectionPool = {\n // Instrumentation just cares about carrying the async context so\n // types of callback params are not needed\n checkOut: (callback: (error: any, connection: any) => void) => void;\n};\n\nexport type V4Connect = {\n connect: Function;\n // From version 6.4.0 the method does not expect a callback and returns a promise\n // https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/cmap/connect.ts\n connectPromise: (options: any) => Promise;\n // Earlier versions expect a callback param and return void\n // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connect.ts\n connectCallback: (options: any, callback: any) => void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/sessions.ts\nexport type V4Session = {\n acquire: () => ServerSession;\n release: (session: ServerSession) => void;\n};\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#replacer\n */\nexport type Replacer = (key: string, value: unknown) => unknown;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.d.ts new file mode 100644 index 0000000..888cc47 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.d.ts @@ -0,0 +1,107 @@ +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export declare const ATTR_DB_CONNECTION_STRING: "db.connection_string"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_MONGODB_COLLECTION: "db.mongodb.collection"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_NAME: "db.name"; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +export declare const ATTR_DB_OPERATION: "db.operation"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MongoDB](https://www.mongodb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_MONGODB: "mongodb"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MongoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MONGODB: "mongodb"; +/** + * Deprecated, use `db.client.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.count`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_USAGE: "db.client.connections.usage"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.js new file mode 100644 index 0000000..7247a24 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.js @@ -0,0 +1,130 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +exports.ATTR_DB_CONNECTION_STRING = 'db.connection_string'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +exports.ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +exports.ATTR_DB_NAME = 'db.name'; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +exports.ATTR_DB_OPERATION = 'db.operation'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +exports.ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +exports.ATTR_DB_SYSTEM = 'db.system'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MongoDB](https://www.mongodb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb'; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MongoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_MONGODB = 'mongodb'; +/** + * Deprecated, use `db.client.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.count`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.js.map new file mode 100644 index 0000000..b29edc7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,kCAAkC,GAC7C,6BAAsC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\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 */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\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 */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\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 */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb' as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MONGODB = 'mongodb' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE =\n 'db.client.connections.usage' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.d.ts new file mode 100644 index 0000000..39b4a20 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.d.ts @@ -0,0 +1,51 @@ +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import { Span } from '@opentelemetry/api'; +export interface MongoDBInstrumentationExecutionResponseHook { + (span: Span, responseInfo: MongoResponseHookInformation): void; +} +/** + * Function that can be used to serialize db.statement tag + * @param cmd - MongoDB command object + * + * @returns serialized string that will be used as the db.statement attribute. + */ +export type DbStatementSerializer = (cmd: Record) => string; +export interface MongoDBInstrumentationConfig extends InstrumentationConfig { + /** + * If true, additional information about query parameters and + * results will be attached (as `attributes`) to spans representing + * database operations. + */ + enhancedDatabaseReporting?: boolean; + /** + * Hook that allows adding custom span attributes based on the data + * returned from MongoDB actions. + * + * @default undefined + */ + responseHook?: MongoDBInstrumentationExecutionResponseHook; + /** + * Custom serializer function for the db.statement tag + */ + dbStatementSerializer?: DbStatementSerializer; + /** + * Require parent to create mongodb span, default when unset is true + */ + requireParentSpan?: boolean; +} +export interface MongoResponseHookInformation { + data: CommandResult; +} +export type CommandResult = { + result?: unknown; + connection?: unknown; + message?: unknown; +}; +export declare enum MongodbCommandType { + CREATE_INDEXES = "createIndexes", + FIND_AND_MODIFY = "findAndModify", + IS_MASTER = "isMaster", + COUNT = "count", + UNKNOWN = "unknown" +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.js new file mode 100644 index 0000000..69297aa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.js @@ -0,0 +1,27 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MongodbCommandType = void 0; +var MongodbCommandType; +(function (MongodbCommandType) { + MongodbCommandType["CREATE_INDEXES"] = "createIndexes"; + MongodbCommandType["FIND_AND_MODIFY"] = "findAndModify"; + MongodbCommandType["IS_MASTER"] = "isMaster"; + MongodbCommandType["COUNT"] = "count"; + MongodbCommandType["UNKNOWN"] = "unknown"; +})(MongodbCommandType = exports.MongodbCommandType || (exports.MongodbCommandType = {})); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.js.map new file mode 100644 index 0000000..6a6c18c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAuDH,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,sDAAgC,CAAA;IAChC,uDAAiC,CAAA;IACjC,4CAAsB,CAAA;IACtB,qCAAe,CAAA;IACf,yCAAmB,CAAA;AACrB,CAAC,EANW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAM7B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { Span } from '@opentelemetry/api';\n\nexport interface MongoDBInstrumentationExecutionResponseHook {\n (span: Span, responseInfo: MongoResponseHookInformation): void;\n}\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmd - MongoDB command object\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (cmd: Record) => string;\n\nexport interface MongoDBInstrumentationConfig extends InstrumentationConfig {\n /**\n * If true, additional information about query parameters and\n * results will be attached (as `attributes`) to spans representing\n * database operations.\n */\n enhancedDatabaseReporting?: boolean;\n\n /**\n * Hook that allows adding custom span attributes based on the data\n * returned from MongoDB actions.\n *\n * @default undefined\n */\n responseHook?: MongoDBInstrumentationExecutionResponseHook;\n\n /**\n * Custom serializer function for the db.statement tag\n */\n dbStatementSerializer?: DbStatementSerializer;\n\n /**\n * Require parent to create mongodb span, default when unset is true\n */\n requireParentSpan?: boolean;\n}\n\nexport interface MongoResponseHookInformation {\n data: CommandResult;\n}\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/connection/command_result.js\nexport type CommandResult = {\n result?: unknown;\n connection?: unknown;\n message?: unknown;\n};\n\nexport enum MongodbCommandType {\n CREATE_INDEXES = 'createIndexes',\n FIND_AND_MODIFY = 'findAndModify',\n IS_MASTER = 'isMaster',\n COUNT = 'count',\n UNKNOWN = 'unknown',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.d.ts new file mode 100644 index 0000000..36143b3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.64.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-mongodb"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.js new file mode 100644 index 0000000..90effd7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.64.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-mongodb'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.js.map new file mode 100644 index 0000000..c9ff78f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,wCAAwC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.64.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mongodb';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/package.json new file mode 100644 index 0000000..2920c1d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongodb/package.json @@ -0,0 +1,73 @@ +{ + "name": "@opentelemetry/instrumentation-mongodb", + "version": "0.64.0", + "description": "OpenTelemetry instrumentation for `mongodb` database client for MongoDB", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-mongodb" + }, + "scripts": { + "clean": "rimraf build/*", + "lint:readme": "node ../../scripts/lint-readme.js", + "version:update": "node ../../scripts/version-update.js", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-mongodb", + "compile": "tsc -p .", + "prepublishOnly": "npm run compile", + "test": "npm run test-v6 && npm run test-unit", + "test-unit": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' test/unit/*.test.ts", + "test-v3": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' test/mongodb-v3.test.ts", + "test-v4": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' test/mongodb-metrics-v4plus.test.ts test/mongodb-v4.test.ts", + "test-v5": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' test/mongodb-metrics-v4plus.test.ts test/mongodb-v5plus.test.ts", + "test-v6": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' test/mongodb-metrics-v4plus.test.ts test/mongodb-v5plus.test.ts", + "test-v7": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' test/mongodb-metrics-v4plus.test.ts test/mongodb-v5plus.test.ts", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-services:start": "cd ../.. && npm run test-services:start mongodb", + "test-services:stop": "cd ../.. && npm run test-services:stop mongodb", + "watch": "tsc -w" + }, + "keywords": [ + "mongodb", + "nodejs", + "opentelemetry", + "plugin", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "@types/bson": "4.0.5", + "mongodb": "6.19.0" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.33.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-mongodb#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/README.md new file mode 100644 index 0000000..e33d5e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/README.md @@ -0,0 +1,86 @@ +# OpenTelemetry mongoose Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`mongoose`](https://github.com/Automattic/mongoose) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-mongoose +``` + +## Supported Versions + +- [`mongoose`](https://www.npmjs.com/package/mongoose) versions `>=5.9.7 <9` + +## Usage + +To load a specific plugin, specify it in the registerInstrumentations's configuration: + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { MongooseInstrumentation } = require('@opentelemetry/instrumentation-mongoose'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new MongooseInstrumentation(), + ], +}) +``` + +## Semantic Conventions + +This instrumentation implements Semantic Conventions (semconv) v1.7.0. Since then, networking (in semconv v1.23.1) and database (in semconv v1.33.0) semantic conventions were stabilized. As of `@opentelemetry/instrumentation-mongoose@0.44.0` support has been added for migrating to the stable semantic conventions using the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable as follows: + +1. Upgrade to the latest version of this instrumentation package. +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http/dup,database/dup` to emit both old and stable semantic conventions. (The `http` token is used to control the `net.*` attributes, the `database` token to control the `db.*` attributes.) +3. Modify alerts, dashboards, metrics, and other processes in your Observability system to use the stable semantic conventions. +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http,database` to emit only the stable semantic conventions. + +By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` includes neither of the above tokens, the old v1.7.0 semconv is used. +The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new database and networking semconv, after which a new minor version will use the new semconv by default and drop support for the old semconv. +See [the HTTP migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/) and the [database migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/) for details. + +Attributes collected: + +| Old semconv | Stable semconv | Description | +| ----------------------- | -------------------- | -------------------------------------------------------------------------------------------- | +| `db.system` | `db.system.name` | An identifier for the database management system (DBMS) product being used. Value: 'mongodb' | +| `db.mongodb.collection` | `db.collection.name` | The collection being accessed within the database stated in `db.name`. | +| `db.name` | `db.namespace` | This attribute is used to report the name of the database being accessed. | +| `db.operation` | `db.operation.name` | The name of the operation being executed. | +| `db.statement` | `db.query.text` | The database statement being executed. | +| `db.user` | Removed | Username for accessing the database. | +| `net.peer.name` | `server.address` | Remote hostname or similar. | +| `net.peer.port` | `server.port` | Remote port number. | + +Span name format: + +- Old: `mongoose.{modelName}.{operation}` (e.g., `mongoose.User.save`) +- Stable: `{operation} {collection}` (e.g., `save users`) + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-mongoose +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-mongoose.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.d.ts new file mode 100644 index 0000000..7e49747 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { MongooseInstrumentation } from './mongoose'; +export type { DbStatementSerializer, MongooseInstrumentationConfig, MongooseResponseCustomAttributesFunction, ResponseInfo, SerializerPayload, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js new file mode 100644 index 0000000..2bab784 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MongooseInstrumentation = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var mongoose_1 = require("./mongoose"); +Object.defineProperty(exports, "MongooseInstrumentation", { enumerable: true, get: function () { return mongoose_1.MongooseInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js.map new file mode 100644 index 0000000..ebe771a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,uCAAqD;AAA5C,mHAAA,uBAAuB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { MongooseInstrumentation } from './mongoose';\nexport type {\n DbStatementSerializer,\n MongooseInstrumentationConfig,\n MongooseResponseCustomAttributesFunction,\n ResponseInfo,\n SerializerPayload,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.d.ts new file mode 100644 index 0000000..31c2712 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.d.ts @@ -0,0 +1,24 @@ +import { MongooseInstrumentationConfig } from './types'; +import { InstrumentationBase, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation'; +export declare const _STORED_PARENT_SPAN: unique symbol; +export declare const _ALREADY_INSTRUMENTED: unique symbol; +export declare class MongooseInstrumentation extends InstrumentationBase { + private _netSemconvStability; + private _dbSemconvStability; + constructor(config?: MongooseInstrumentationConfig); + private _setSemconvStabilityFromEnv; + protected init(): InstrumentationModuleDefinition; + private patch; + private unpatch; + private patchAggregateExec; + private patchQueryExec; + private patchOnModelMethods; + private _patchDocumentUpdateMethods; + private patchModelStatic; + private patchModelAggregate; + private patchAndCaptureSpanContext; + private _startSpan; + private _handleResponse; + private _callOriginalFunction; +} +//# sourceMappingURL=mongoose.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js new file mode 100644 index 0000000..6898a2f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js @@ -0,0 +1,423 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MongooseInstrumentation = exports._ALREADY_INSTRUMENTED = exports._STORED_PARENT_SPAN = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const utils_1 = require("./utils"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +/** @knipignore */ +const version_1 = require("./version"); +const semconv_1 = require("./semconv"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const contextCaptureFunctionsCommon = [ + 'deleteOne', + 'deleteMany', + 'find', + 'findOne', + 'estimatedDocumentCount', + 'countDocuments', + 'distinct', + 'where', + '$where', + 'findOneAndUpdate', + 'findOneAndDelete', + 'findOneAndReplace', +]; +const contextCaptureFunctions6 = [ + 'remove', + 'count', + 'findOneAndRemove', + ...contextCaptureFunctionsCommon, +]; +const contextCaptureFunctions7 = [ + 'count', + 'findOneAndRemove', + ...contextCaptureFunctionsCommon, +]; +const contextCaptureFunctions8 = [...contextCaptureFunctionsCommon]; +function getContextCaptureFunctions(moduleVersion) { + /* istanbul ignore next */ + if (!moduleVersion) { + return contextCaptureFunctionsCommon; + } + else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) { + return contextCaptureFunctions6; + } + else if (moduleVersion.startsWith('7.')) { + return contextCaptureFunctions7; + } + else { + return contextCaptureFunctions8; + } +} +function instrumentRemove(moduleVersion) { + return ((moduleVersion && + (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) || + false); +} +/** + * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called. + * @param moduleVersion + */ +function needsDocumentMethodPatch(moduleVersion) { + if (!moduleVersion || !moduleVersion.startsWith('8.')) { + return false; + } + const minor = parseInt(moduleVersion.split('.')[1], 10); + return minor >= 21; +} +// when mongoose functions are called, we store the original call context +// and then set it as the parent for the spans created by Query/Aggregate exec() +// calls. this bypass the unlinked spans issue on thenables await operations. +exports._STORED_PARENT_SPAN = Symbol('stored-parent-span'); +// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+) +// creates a span and returns a Query that also calls exec() +exports._ALREADY_INSTRUMENTED = Symbol('already-instrumented'); +class MongooseInstrumentation extends instrumentation_1.InstrumentationBase { + _netSemconvStability; + _dbSemconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + this._setSemconvStabilityFromEnv(); + } + // Used for testing. + _setSemconvStabilityFromEnv() { + this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + init() { + const module = new instrumentation_1.InstrumentationNodeModuleDefinition('mongoose', ['>=5.9.7 <9'], this.patch.bind(this), this.unpatch.bind(this)); + return module; + } + patch(module, moduleVersion) { + const moduleExports = module[Symbol.toStringTag] === 'Module' + ? module.default // ESM + : module; // CommonJS + this._wrap(moduleExports.Model.prototype, 'save', this.patchOnModelMethods('save', moduleVersion)); + // mongoose applies this code on module require: + // Model.prototype.$save = Model.prototype.save; + // which captures the save function before it is patched. + // so we need to apply the same logic after instrumenting the save function. + moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save; + if (instrumentRemove(moduleVersion)) { + this._wrap(moduleExports.Model.prototype, 'remove', this.patchOnModelMethods('remove', moduleVersion)); + } + // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called. + // + // See https://github.com/Automattic/mongoose/blob/7dbda12dca1bd7adb9e270d7de8ac5229606ce72/lib/document.js#L861. + // - `this` is a Query object + // - the update happens in a pre-hook that gets called when Query.exec() is already running. + // - when we instrument Query.exec(), we don't have access to the options yet as they get set during Query.exec() only. + // + // Unfortunately, after Query.exec() is finished, the options are left modified by the library, so just delaying + // attaching the attributes after the span is done is not an option. Therefore, we patch Model methods + // and grab the data directly where the user provides it. + // + // ref: https://github.com/Automattic/mongoose/pull/15908 (introduced this behavior) + if (needsDocumentMethodPatch(moduleVersion)) { + this._wrap(moduleExports.Model.prototype, 'updateOne', this._patchDocumentUpdateMethods('updateOne', moduleVersion)); + this._wrap(moduleExports.Model.prototype, 'deleteOne', this._patchDocumentUpdateMethods('deleteOne', moduleVersion)); + } + this._wrap(moduleExports.Query.prototype, 'exec', this.patchQueryExec(moduleVersion)); + this._wrap(moduleExports.Aggregate.prototype, 'exec', this.patchAggregateExec(moduleVersion)); + const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion); + contextCaptureFunctions.forEach((funcName) => { + this._wrap(moduleExports.Query.prototype, funcName, this.patchAndCaptureSpanContext(funcName)); + }); + this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate()); + this._wrap(moduleExports.Model, 'insertMany', this.patchModelStatic('insertMany', moduleVersion)); + this._wrap(moduleExports.Model, 'bulkWrite', this.patchModelStatic('bulkWrite', moduleVersion)); + return moduleExports; + } + unpatch(module, moduleVersion) { + const moduleExports = module[Symbol.toStringTag] === 'Module' + ? module.default // ESM + : module; // CommonJS + const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion); + this._unwrap(moduleExports.Model.prototype, 'save'); + // revert the patch for $save which we applied by aliasing it to patched `save` + moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save; + if (instrumentRemove(moduleVersion)) { + this._unwrap(moduleExports.Model.prototype, 'remove'); + } + if (needsDocumentMethodPatch(moduleVersion)) { + this._unwrap(moduleExports.Model.prototype, 'updateOne'); + this._unwrap(moduleExports.Model.prototype, 'deleteOne'); + } + this._unwrap(moduleExports.Query.prototype, 'exec'); + this._unwrap(moduleExports.Aggregate.prototype, 'exec'); + contextCaptureFunctions.forEach((funcName) => { + this._unwrap(moduleExports.Query.prototype, funcName); + }); + this._unwrap(moduleExports.Model, 'aggregate'); + this._unwrap(moduleExports.Model, 'insertMany'); + this._unwrap(moduleExports.Model, 'bulkWrite'); + } + patchAggregateExec(moduleVersion) { + const self = this; + return (originalAggregate) => { + return function exec(callback) { + if (self.getConfig().requireParentSpan && + api_1.trace.getSpan(api_1.context.active()) === undefined) { + return originalAggregate.apply(this, arguments); + } + const parentSpan = this[exports._STORED_PARENT_SPAN]; + const attributes = {}; + const { dbStatementSerializer } = self.getConfig(); + if (dbStatementSerializer) { + const statement = dbStatementSerializer('aggregate', { + options: this.options, + aggregatePipeline: this._pipeline, + }); + if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_STATEMENT] = statement; + } + if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement; + } + } + const span = self._startSpan(this._model.collection, this._model?.modelName, 'aggregate', attributes, parentSpan); + return self._handleResponse(span, originalAggregate, this, arguments, callback, moduleVersion); + }; + }; + } + patchQueryExec(moduleVersion) { + const self = this; + return (originalExec) => { + return function exec(callback) { + // Skip if already instrumented by document instance method patch + if (this[exports._ALREADY_INSTRUMENTED]) { + return originalExec.apply(this, arguments); + } + if (self.getConfig().requireParentSpan && + api_1.trace.getSpan(api_1.context.active()) === undefined) { + return originalExec.apply(this, arguments); + } + const parentSpan = this[exports._STORED_PARENT_SPAN]; + const attributes = {}; + const { dbStatementSerializer } = self.getConfig(); + if (dbStatementSerializer) { + const statement = dbStatementSerializer(this.op, { + // Use public API methods (getFilter/getOptions) for better compatibility + condition: this.getFilter?.() ?? this._conditions, + updates: this._update, + options: this.getOptions?.() ?? this.options, + fields: this._fields, + }); + if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_STATEMENT] = statement; + } + if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement; + } + } + const span = self._startSpan(this.mongooseCollection, this.model.modelName, this.op, attributes, parentSpan); + return self._handleResponse(span, originalExec, this, arguments, callback, moduleVersion); + }; + }; + } + patchOnModelMethods(op, moduleVersion) { + const self = this; + return (originalOnModelFunction) => { + return function method(options, callback) { + if (self.getConfig().requireParentSpan && + api_1.trace.getSpan(api_1.context.active()) === undefined) { + return originalOnModelFunction.apply(this, arguments); + } + const serializePayload = { document: this }; + if (options && !(options instanceof Function)) { + serializePayload.options = options; + } + const attributes = {}; + const { dbStatementSerializer } = self.getConfig(); + if (dbStatementSerializer) { + const statement = dbStatementSerializer(op, serializePayload); + if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_STATEMENT] = statement; + } + if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement; + } + } + const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op, attributes); + if (options instanceof Function) { + callback = options; + options = undefined; + } + return self._handleResponse(span, originalOnModelFunction, this, arguments, callback, moduleVersion); + }; + }; + } + // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+. + _patchDocumentUpdateMethods(op, moduleVersion) { + const self = this; + return (originalMethod) => { + return function method(update, options, callback) { + if (self.getConfig().requireParentSpan && + api_1.trace.getSpan(api_1.context.active()) === undefined) { + return originalMethod.apply(this, arguments); + } + // determine actual callback since different argument patterns are allowed + let actualCallback = callback; + let actualUpdate = update; + let actualOptions = options; + if (typeof update === 'function') { + actualCallback = update; + actualUpdate = undefined; + actualOptions = undefined; + } + else if (typeof options === 'function') { + actualCallback = options; + actualOptions = undefined; + } + const attributes = {}; + const dbStatementSerializer = self.getConfig().dbStatementSerializer; + if (dbStatementSerializer) { + const statement = dbStatementSerializer(op, { + // Document instance methods automatically use the document's _id as filter + condition: { _id: this._id }, + updates: actualUpdate, + options: actualOptions, + }); + if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_STATEMENT] = statement; + } + if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement; + } + } + const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op, attributes); + const result = self._handleResponse(span, originalMethod, this, arguments, actualCallback, moduleVersion); + // Mark returned Query to prevent double-instrumentation when exec() is eventually called + if (result && typeof result === 'object') { + result[exports._ALREADY_INSTRUMENTED] = true; + } + return result; + }; + }; + } + patchModelStatic(op, moduleVersion) { + const self = this; + return (original) => { + return function patchedStatic(docsOrOps, options, callback) { + if (self.getConfig().requireParentSpan && + api_1.trace.getSpan(api_1.context.active()) === undefined) { + return original.apply(this, arguments); + } + if (typeof options === 'function') { + callback = options; + options = undefined; + } + const serializePayload = {}; + switch (op) { + case 'insertMany': + serializePayload.documents = docsOrOps; + break; + case 'bulkWrite': + serializePayload.operations = docsOrOps; + break; + default: + serializePayload.document = docsOrOps; + break; + } + if (options !== undefined) { + serializePayload.options = options; + } + const attributes = {}; + const { dbStatementSerializer } = self.getConfig(); + if (dbStatementSerializer) { + const statement = dbStatementSerializer(op, serializePayload); + if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_STATEMENT] = statement; + } + if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement; + } + } + const span = self._startSpan(this.collection, this.modelName, op, attributes); + return self._handleResponse(span, original, this, arguments, callback, moduleVersion); + }; + }; + } + // we want to capture the otel span on the object which is calling exec. + // in the special case of aggregate, we need have no function to path + // on the Aggregate object to capture the context on, so we patch + // the aggregate of Model, and set the context on the Aggregate object + patchModelAggregate() { + const self = this; + return (original) => { + return function captureSpanContext() { + const currentSpan = api_1.trace.getSpan(api_1.context.active()); + const aggregate = self._callOriginalFunction(() => original.apply(this, arguments)); + if (aggregate) + aggregate[exports._STORED_PARENT_SPAN] = currentSpan; + return aggregate; + }; + }; + } + patchAndCaptureSpanContext(funcName) { + const self = this; + return (original) => { + return function captureSpanContext() { + this[exports._STORED_PARENT_SPAN] = api_1.trace.getSpan(api_1.context.active()); + return self._callOriginalFunction(() => original.apply(this, arguments)); + }; + }; + } + _startSpan(collection, modelName, operation, attributes, parentSpan) { + const finalAttributes = { + ...attributes, + ...(0, utils_1.getAttributesFromCollection)(collection, this._dbSemconvStability, this._netSemconvStability), + }; + if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + finalAttributes[semconv_1.ATTR_DB_OPERATION] = operation; + finalAttributes[semconv_1.ATTR_DB_SYSTEM] = 'mongoose'; // keep for backwards compatibility + } + if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + finalAttributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = operation; + finalAttributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB; // actual db system name + } + const spanName = this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE + ? `${operation} ${collection.name}` + : `mongoose.${modelName}.${operation}`; + return this.tracer.startSpan(spanName, { + kind: api_1.SpanKind.CLIENT, + attributes: finalAttributes, + }, parentSpan ? api_1.trace.setSpan(api_1.context.active(), parentSpan) : undefined); + } + _handleResponse(span, exec, originalThis, args, callback, moduleVersion = undefined) { + const self = this; + if (callback instanceof Function) { + return self._callOriginalFunction(() => (0, utils_1.handleCallbackResponse)(callback, exec, originalThis, span, args, self.getConfig().responseHook, moduleVersion)); + } + else { + const response = self._callOriginalFunction(() => exec.apply(originalThis, args)); + return (0, utils_1.handlePromiseResponse)(response, span, self.getConfig().responseHook, moduleVersion); + } + } + _callOriginalFunction(originalFunction) { + if (this.getConfig().suppressInternalInstrumentation) { + return api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), originalFunction); + } + else { + return originalFunction(); + } + } +} +exports.MongooseInstrumentation = MongooseInstrumentation; +//# sourceMappingURL=mongoose.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js.map new file mode 100644 index 0000000..51371ac --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mongoose.js","sourceRoot":"","sources":["../../src/mongoose.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { context, Span, trace, Attributes, SpanKind } from '@opentelemetry/api';\nimport { suppressTracing } from '@opentelemetry/core';\nimport type * as mongoose from 'mongoose';\nimport { MongooseInstrumentationConfig, SerializerPayload } from './types';\nimport {\n handleCallbackResponse,\n handlePromiseResponse,\n getAttributesFromCollection,\n} from './utils';\nimport {\n InstrumentationBase,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n ATTR_DB_OPERATION,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n DB_SYSTEM_NAME_VALUE_MONGODB,\n} from './semconv';\nimport {\n ATTR_DB_OPERATION_NAME,\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n} from '@opentelemetry/semantic-conventions';\n\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];\n\nconst contextCaptureFunctions6 = [\n 'remove',\n 'count',\n 'findOneAndRemove',\n ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions7 = [\n 'count',\n 'findOneAndRemove',\n ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\n\nfunction getContextCaptureFunctions(\n moduleVersion: string | undefined\n): string[] {\n /* istanbul ignore next */\n if (!moduleVersion) {\n return contextCaptureFunctionsCommon;\n } else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n return contextCaptureFunctions6;\n } else if (moduleVersion.startsWith('7.')) {\n return contextCaptureFunctions7;\n } else {\n return contextCaptureFunctions8;\n }\n}\n\nfunction instrumentRemove(moduleVersion: string | undefined): boolean {\n return (\n (moduleVersion &&\n (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) ||\n false\n );\n}\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: string | undefined): boolean {\n if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n return false;\n }\n\n const minor = parseInt(moduleVersion.split('.')[1], 10);\n return minor >= 21;\n}\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.\nexport const _STORED_PARENT_SPAN: unique symbol = Symbol('stored-parent-span');\n\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexport const _ALREADY_INSTRUMENTED: unique symbol = Symbol(\n 'already-instrumented'\n);\n\nexport class MongooseInstrumentation extends InstrumentationBase {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n\n constructor(config: MongooseInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n this._setSemconvStabilityFromEnv();\n }\n\n // Used for testing.\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n this._dbSemconvStability = semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n protected init(): InstrumentationModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(\n 'mongoose',\n ['>=5.9.7 <9'],\n this.patch.bind(this),\n this.unpatch.bind(this)\n );\n return module;\n }\n\n private patch(module: any, moduleVersion: string | undefined) {\n const moduleExports: typeof mongoose =\n module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n\n this._wrap(\n moduleExports.Model.prototype,\n 'save',\n this.patchOnModelMethods('save', moduleVersion)\n );\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\n if (instrumentRemove(moduleVersion)) {\n this._wrap(\n moduleExports.Model.prototype,\n 'remove',\n this.patchOnModelMethods('remove', moduleVersion)\n );\n }\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(\n moduleExports.Model.prototype,\n 'updateOne',\n this._patchDocumentUpdateMethods('updateOne', moduleVersion)\n );\n this._wrap(\n moduleExports.Model.prototype,\n 'deleteOne',\n this._patchDocumentUpdateMethods('deleteOne', moduleVersion)\n );\n }\n\n this._wrap(\n moduleExports.Query.prototype,\n 'exec',\n this.patchQueryExec(moduleVersion)\n );\n this._wrap(\n moduleExports.Aggregate.prototype,\n 'exec',\n this.patchAggregateExec(moduleVersion)\n );\n\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n contextCaptureFunctions.forEach((funcName: string) => {\n this._wrap(\n moduleExports.Query.prototype,\n funcName as any,\n this.patchAndCaptureSpanContext(funcName)\n );\n });\n this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n\n this._wrap(\n moduleExports.Model,\n 'insertMany',\n this.patchModelStatic('insertMany', moduleVersion)\n );\n this._wrap(\n moduleExports.Model,\n 'bulkWrite',\n this.patchModelStatic('bulkWrite', moduleVersion)\n );\n\n return moduleExports;\n }\n\n private unpatch(module: any, moduleVersion: string | undefined): void {\n const moduleExports: typeof mongoose =\n module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\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\n if (instrumentRemove(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'remove');\n }\n\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'updateOne');\n this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n }\n\n this._unwrap(moduleExports.Query.prototype, 'exec');\n this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n\n contextCaptureFunctions.forEach((funcName: string) => {\n this._unwrap(moduleExports.Query.prototype, funcName as any);\n });\n this._unwrap(moduleExports.Model, 'aggregate');\n\n this._unwrap(moduleExports.Model, 'insertMany');\n this._unwrap(moduleExports.Model, 'bulkWrite');\n }\n\n private patchAggregateExec(moduleVersion: string | undefined) {\n const self = this;\n return (originalAggregate: Function) => {\n return function exec(this: any, callback?: Function) {\n if (\n self.getConfig().requireParentSpan &&\n trace.getSpan(context.active()) === undefined\n ) {\n return originalAggregate.apply(this, arguments);\n }\n\n const parentSpan = this[_STORED_PARENT_SPAN];\n const attributes: 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 & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n\n const span = self._startSpan(\n this._model.collection,\n this._model?.modelName,\n 'aggregate',\n attributes,\n parentSpan\n );\n\n return self._handleResponse(\n span,\n originalAggregate,\n this,\n arguments,\n callback,\n moduleVersion\n );\n };\n };\n }\n\n private patchQueryExec(moduleVersion: string | undefined) {\n const self = this;\n return (originalExec: Function) => {\n return function exec(this: any, callback?: Function) {\n // Skip if already instrumented by document instance method patch\n if (this[_ALREADY_INSTRUMENTED]) {\n return originalExec.apply(this, arguments);\n }\n\n if (\n self.getConfig().requireParentSpan &&\n trace.getSpan(context.active()) === undefined\n ) {\n return originalExec.apply(this, arguments);\n }\n\n const parentSpan = this[_STORED_PARENT_SPAN];\n const attributes: 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 & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(\n this.mongooseCollection,\n this.model.modelName,\n this.op,\n attributes,\n parentSpan\n );\n\n return self._handleResponse(\n span,\n originalExec,\n this,\n arguments,\n callback,\n moduleVersion\n );\n };\n };\n }\n\n private patchOnModelMethods(op: string, moduleVersion: string | undefined) {\n const self = this;\n return (originalOnModelFunction: Function) => {\n return function method(this: any, options?: any, callback?: Function) {\n if (\n self.getConfig().requireParentSpan &&\n trace.getSpan(context.active()) === undefined\n ) {\n return originalOnModelFunction.apply(this, arguments);\n }\n\n const serializePayload: SerializerPayload = { document: this };\n if (options && !(options instanceof Function)) {\n serializePayload.options = options;\n }\n const attributes: Attributes = {};\n const { dbStatementSerializer } = self.getConfig();\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer(op, serializePayload);\n if (self._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(\n this.constructor.collection,\n this.constructor.modelName,\n op,\n attributes\n );\n\n if (options instanceof Function) {\n callback = options;\n options = undefined;\n }\n\n return self._handleResponse(\n span,\n originalOnModelFunction,\n this,\n arguments,\n callback,\n moduleVersion\n );\n };\n };\n }\n\n // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n private _patchDocumentUpdateMethods(\n op: string,\n moduleVersion: string | undefined\n ) {\n const self = this;\n return (originalMethod: Function) => {\n return function method(\n this: any,\n update?: any,\n options?: any,\n callback?: Function\n ) {\n if (\n self.getConfig().requireParentSpan &&\n trace.getSpan(context.active()) === undefined\n ) {\n return originalMethod.apply(this, arguments);\n }\n\n // determine actual callback since different argument patterns are allowed\n let actualCallback: Function | undefined = callback;\n let actualUpdate = update;\n let actualOptions = options;\n\n if (typeof update === 'function') {\n actualCallback = update;\n actualUpdate = undefined;\n actualOptions = undefined;\n } else if (typeof options === 'function') {\n actualCallback = options;\n actualOptions = undefined;\n }\n\n const attributes: 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 & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n\n const span = self._startSpan(\n this.constructor.collection,\n this.constructor.modelName,\n op,\n attributes\n );\n\n const result = self._handleResponse(\n span,\n originalMethod,\n this,\n arguments,\n actualCallback,\n moduleVersion\n );\n\n // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n if (result && typeof result === 'object') {\n result[_ALREADY_INSTRUMENTED] = true;\n }\n\n return result;\n };\n };\n }\n\n private patchModelStatic(op: string, moduleVersion: string | undefined) {\n const self = this;\n return (original: Function) => {\n return function patchedStatic(\n this: any,\n docsOrOps: any,\n options?: any,\n callback?: Function\n ) {\n if (\n self.getConfig().requireParentSpan &&\n trace.getSpan(context.active()) === undefined\n ) {\n return original.apply(this, arguments);\n }\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n\n const serializePayload: SerializerPayload = {};\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\n const attributes: Attributes = {};\n const { dbStatementSerializer } = self.getConfig();\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer(op, serializePayload);\n if (self._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n\n const span = self._startSpan(\n this.collection,\n this.modelName,\n op,\n attributes\n );\n\n return self._handleResponse(\n span,\n original,\n this,\n arguments,\n callback,\n moduleVersion\n );\n };\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 private patchModelAggregate() {\n const self = this;\n return (original: Function) => {\n return function captureSpanContext(this: any) {\n const currentSpan = trace.getSpan(context.active());\n const aggregate = self._callOriginalFunction(() =>\n original.apply(this, arguments)\n );\n if (aggregate) aggregate[_STORED_PARENT_SPAN] = currentSpan;\n return aggregate;\n };\n };\n }\n\n private patchAndCaptureSpanContext(funcName: string) {\n const self = this;\n return (original: Function) => {\n return function captureSpanContext(this: any) {\n this[_STORED_PARENT_SPAN] = trace.getSpan(context.active());\n return self._callOriginalFunction(() =>\n original.apply(this, arguments)\n );\n };\n };\n }\n\n private _startSpan(\n collection: mongoose.Collection,\n modelName: string,\n operation: string,\n attributes: Attributes,\n parentSpan?: Span\n ): Span {\n const finalAttributes: Attributes = {\n ...attributes,\n ...getAttributesFromCollection(\n collection,\n this._dbSemconvStability,\n this._netSemconvStability\n ),\n };\n\n if (this._dbSemconvStability & SemconvStability.OLD) {\n finalAttributes[ATTR_DB_OPERATION] = operation;\n finalAttributes[ATTR_DB_SYSTEM] = 'mongoose'; // keep for backwards compatibility\n }\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n finalAttributes[ATTR_DB_OPERATION_NAME] = operation;\n finalAttributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB; // actual db system name\n }\n\n const spanName =\n this._dbSemconvStability & SemconvStability.STABLE\n ? `${operation} ${collection.name}`\n : `mongoose.${modelName}.${operation}`;\n\n return this.tracer.startSpan(\n spanName,\n {\n kind: SpanKind.CLIENT,\n attributes: finalAttributes,\n },\n parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined\n );\n }\n\n private _handleResponse(\n span: Span,\n exec: Function,\n originalThis: any,\n args: IArguments,\n callback?: Function,\n moduleVersion: string | undefined = undefined\n ) {\n const self = this;\n if (callback instanceof Function) {\n return self._callOriginalFunction(() =>\n handleCallbackResponse(\n callback,\n exec,\n originalThis,\n span,\n args,\n self.getConfig().responseHook,\n moduleVersion\n )\n );\n } else {\n const response = self._callOriginalFunction(() =>\n exec.apply(originalThis, args)\n );\n return handlePromiseResponse(\n response,\n span,\n self.getConfig().responseHook,\n moduleVersion\n );\n }\n }\n\n private _callOriginalFunction(originalFunction: (...args: any[]) => T): T {\n if (this.getConfig().suppressInternalInstrumentation) {\n return context.with(suppressTracing(context.active()), originalFunction);\n } else {\n return originalFunction();\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.d.ts new file mode 100644 index 0000000..5239be1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.d.ts @@ -0,0 +1,92 @@ +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_MONGODB_COLLECTION: "db.mongodb.collection"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_NAME: "db.name"; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +export declare const ATTR_DB_OPERATION: "db.operation"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_USER: "db.user"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MongoDB](https://www.mongodb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_MONGODB: "mongodb"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js new file mode 100644 index 0000000..54e7503 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js @@ -0,0 +1,115 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +exports.ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +exports.ATTR_DB_NAME = 'db.name'; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +exports.ATTR_DB_OPERATION = 'db.operation'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +exports.ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +exports.ATTR_DB_SYSTEM = 'db.system'; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_DB_USER = 'db.user'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MongoDB](https://www.mongodb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js.map new file mode 100644 index 0000000..fe69ff5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,SAAkB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\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 */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\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 */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\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 */\nexport const ATTR_DB_USER = 'db.user' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/types.d.ts new file mode 100644 index 0000000..c1a8573 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/types.d.ts @@ -0,0 +1,36 @@ +import { Span } from '@opentelemetry/api'; +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export interface SerializerPayload { + condition?: any; + options?: any; + updates?: any; + document?: any; + aggregatePipeline?: any; + fields?: any; + documents?: any; + operations?: any; +} +export type DbStatementSerializer = (operation: string, payload: SerializerPayload) => string; +export interface ResponseInfo { + moduleVersion: string | undefined; + response: any; +} +export type MongooseResponseCustomAttributesFunction = (span: Span, responseInfo: ResponseInfo) => void; +export interface MongooseInstrumentationConfig extends InstrumentationConfig { + /** + * Mongoose operation use mongodb under the hood. + * If mongodb instrumentation is enabled, a mongoose operation will also create + * a mongodb operation describing the communication with mongoDB servers. + * Setting the `suppressInternalInstrumentation` config value to `true` will + * cause the instrumentation to suppress instrumentation of underlying operations, + * effectively causing mongodb spans to be non-recordable. + */ + suppressInternalInstrumentation?: boolean; + /** Custom serializer function for the db.statement tag */ + dbStatementSerializer?: DbStatementSerializer; + /** hook for adding custom attributes using the response payload */ + responseHook?: MongooseResponseCustomAttributesFunction; + /** Set to true if you do not want to collect traces that start with mongoose */ + requireParentSpan?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/types.js new file mode 100644 index 0000000..11e638d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/types.js.map new file mode 100644 index 0000000..79734e3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface SerializerPayload {\n condition?: any;\n options?: any;\n updates?: any;\n document?: any;\n aggregatePipeline?: any;\n fields?: any;\n documents?: any;\n operations?: any;\n}\n\nexport type DbStatementSerializer = (\n operation: string,\n payload: SerializerPayload\n) => string;\n\nexport interface ResponseInfo {\n moduleVersion: string | undefined;\n response: any;\n}\n\nexport type MongooseResponseCustomAttributesFunction = (\n span: Span,\n responseInfo: ResponseInfo\n) => void;\n\nexport interface MongooseInstrumentationConfig extends InstrumentationConfig {\n /**\n * Mongoose operation use mongodb under the hood.\n * If mongodb instrumentation is enabled, a mongoose operation will also create\n * a mongodb operation describing the communication with mongoDB servers.\n * Setting the `suppressInternalInstrumentation` config value to `true` will\n * cause the instrumentation to suppress instrumentation of underlying operations,\n * effectively causing mongodb spans to be non-recordable.\n */\n suppressInternalInstrumentation?: boolean;\n\n /** Custom serializer function for the db.statement tag */\n dbStatementSerializer?: DbStatementSerializer;\n\n /** hook for adding custom attributes using the response payload */\n responseHook?: MongooseResponseCustomAttributesFunction;\n\n /** Set to true if you do not want to collect traces that start with mongoose */\n requireParentSpan?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.d.ts new file mode 100644 index 0000000..c2aaad2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.d.ts @@ -0,0 +1,8 @@ +import { Attributes, Span } from '@opentelemetry/api'; +import type { Collection } from 'mongoose'; +import { MongooseResponseCustomAttributesFunction } from './types'; +import { SemconvStability } from '@opentelemetry/instrumentation'; +export declare function getAttributesFromCollection(collection: Collection, dbSemconvStability: SemconvStability, netSemconvStability: SemconvStability): Attributes; +export declare function handlePromiseResponse(execResponse: any, span: Span, responseHook?: MongooseResponseCustomAttributesFunction, moduleVersion?: string | undefined): any; +export declare function handleCallbackResponse(callback: Function, exec: Function, originalThis: any, span: Span, args: IArguments, responseHook?: MongooseResponseCustomAttributesFunction, moduleVersion?: string | undefined): any; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js new file mode 100644 index 0000000..f671968 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.handleCallbackResponse = exports.handlePromiseResponse = exports.getAttributesFromCollection = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const api_1 = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semconv_1 = require("./semconv"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +function getAttributesFromCollection(collection, dbSemconvStability, netSemconvStability) { + const attrs = {}; + if (dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attrs[semconv_1.ATTR_DB_MONGODB_COLLECTION] = collection.name; + attrs[semconv_1.ATTR_DB_NAME] = collection.conn.name; + attrs[semconv_1.ATTR_DB_USER] = collection.conn.user; + } + if (dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attrs[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = collection.name; + attrs[semantic_conventions_1.ATTR_DB_NAMESPACE] = collection.conn.name; + // db.user has no stable replacement + } + if (netSemconvStability & instrumentation_1.SemconvStability.OLD) { + attrs[semconv_1.ATTR_NET_PEER_NAME] = collection.conn.host; + attrs[semconv_1.ATTR_NET_PEER_PORT] = collection.conn.port; + } + if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attrs[semantic_conventions_1.ATTR_SERVER_ADDRESS] = collection.conn.host; + attrs[semantic_conventions_1.ATTR_SERVER_PORT] = collection.conn.port; + } + return attrs; +} +exports.getAttributesFromCollection = getAttributesFromCollection; +function setErrorStatus(span, error = {}) { + span.recordException(error); + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: `${error.message} ${error.code ? `\nMongoose Error Code: ${error.code}` : ''}`, + }); +} +function applyResponseHook(span, response, responseHook, moduleVersion = undefined) { + if (!responseHook) { + return; + } + (0, instrumentation_1.safeExecuteInTheMiddle)(() => responseHook(span, { moduleVersion, response }), e => { + if (e) { + api_1.diag.error('mongoose instrumentation: responseHook error', e); + } + }, true); +} +function handlePromiseResponse(execResponse, span, responseHook, moduleVersion = undefined) { + if (!(execResponse instanceof Promise)) { + applyResponseHook(span, execResponse, responseHook, moduleVersion); + span.end(); + return execResponse; + } + return execResponse + .then(response => { + applyResponseHook(span, response, responseHook, moduleVersion); + return response; + }) + .catch(err => { + setErrorStatus(span, err); + throw err; + }) + .finally(() => span.end()); +} +exports.handlePromiseResponse = handlePromiseResponse; +function handleCallbackResponse(callback, exec, originalThis, span, args, responseHook, moduleVersion = undefined) { + let callbackArgumentIndex = 0; + if (args.length === 2) { + callbackArgumentIndex = 1; + } + else if (args.length === 3) { + callbackArgumentIndex = 2; + } + args[callbackArgumentIndex] = (err, response) => { + if (err) { + setErrorStatus(span, err); + } + else { + applyResponseHook(span, response, responseHook, moduleVersion); + } + span.end(); + return callback(err, response); + }; + return exec.apply(originalThis, args); +} +exports.handleCallbackResponse = handleCallbackResponse; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js.map new file mode 100644 index 0000000..0cf5958 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Attributes, SpanStatusCode, diag, Span } from '@opentelemetry/api';\nimport type { Collection } from 'mongoose';\nimport { MongooseResponseCustomAttributesFunction } from './types';\nimport {\n safeExecuteInTheMiddle,\n SemconvStability,\n} from '@opentelemetry/instrumentation';\nimport {\n ATTR_DB_MONGODB_COLLECTION,\n ATTR_DB_NAME,\n ATTR_DB_USER,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n} from './semconv';\nimport {\n ATTR_DB_COLLECTION_NAME,\n ATTR_DB_NAMESPACE,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\n\nexport function getAttributesFromCollection(\n collection: Collection,\n dbSemconvStability: SemconvStability,\n netSemconvStability: SemconvStability\n): Attributes {\n const attrs: Attributes = {};\n\n if (dbSemconvStability & SemconvStability.OLD) {\n attrs[ATTR_DB_MONGODB_COLLECTION] = collection.name;\n attrs[ATTR_DB_NAME] = collection.conn.name;\n attrs[ATTR_DB_USER] = collection.conn.user;\n }\n if (dbSemconvStability & SemconvStability.STABLE) {\n attrs[ATTR_DB_COLLECTION_NAME] = collection.name;\n attrs[ATTR_DB_NAMESPACE] = collection.conn.name;\n // db.user has no stable replacement\n }\n\n if (netSemconvStability & SemconvStability.OLD) {\n attrs[ATTR_NET_PEER_NAME] = collection.conn.host;\n attrs[ATTR_NET_PEER_PORT] = collection.conn.port;\n }\n if (netSemconvStability & SemconvStability.STABLE) {\n attrs[ATTR_SERVER_ADDRESS] = collection.conn.host;\n attrs[ATTR_SERVER_PORT] = collection.conn.port;\n }\n\n return attrs;\n}\n\nfunction setErrorStatus(span: Span, error: any = {}) {\n span.recordException(error);\n\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${error.message} ${\n error.code ? `\\nMongoose Error Code: ${error.code}` : ''\n }`,\n });\n}\n\nfunction applyResponseHook(\n span: Span,\n response: any,\n responseHook?: MongooseResponseCustomAttributesFunction,\n moduleVersion: string | undefined = undefined\n) {\n if (!responseHook) {\n return;\n }\n\n safeExecuteInTheMiddle(\n () => responseHook(span, { moduleVersion, response }),\n e => {\n if (e) {\n diag.error('mongoose instrumentation: responseHook error', e);\n }\n },\n true\n );\n}\n\nexport function handlePromiseResponse(\n execResponse: any,\n span: Span,\n responseHook?: MongooseResponseCustomAttributesFunction,\n moduleVersion: string | undefined = undefined\n): any {\n if (!(execResponse instanceof Promise)) {\n applyResponseHook(span, execResponse, responseHook, moduleVersion);\n span.end();\n return execResponse;\n }\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}\n\nexport function handleCallbackResponse(\n callback: Function,\n exec: Function,\n originalThis: any,\n span: Span,\n args: IArguments,\n responseHook?: MongooseResponseCustomAttributesFunction,\n moduleVersion: string | undefined = undefined\n) {\n let callbackArgumentIndex = 0;\n if (args.length === 2) {\n callbackArgumentIndex = 1;\n } else if (args.length === 3) {\n callbackArgumentIndex = 2;\n }\n\n args[callbackArgumentIndex] = (err: Error, response: any): any => {\n if (err) {\n setErrorStatus(span, err);\n } else {\n applyResponseHook(span, response, responseHook, moduleVersion);\n }\n\n span.end();\n return callback!(err, response);\n };\n\n return exec.apply(originalThis, args);\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.d.ts new file mode 100644 index 0000000..3c03d62 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.57.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-mongoose"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js new file mode 100644 index 0000000..af53fca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.57.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-mongoose'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js.map new file mode 100644 index 0000000..ba0334f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,yCAAyC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.57.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mongoose';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/package.json new file mode 100644 index 0000000..29c3a44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mongoose/package.json @@ -0,0 +1,67 @@ +{ + "name": "@opentelemetry/instrumentation-mongoose", + "version": "0.57.0", + "description": "OpenTelemetry instrumentation for `mongoose` database object data modeling (ODM) library for MongoDB", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-mongoose" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-mongoose", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "npm run test-v5-v6", + "test-v5-v6": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/mongoose-common.test.ts' 'test/**/mongoose-v5-v6.test.ts'", + "test-v7-v8": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/mongoose-common.test.ts' 'test/**/mongoose-v7-v8.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-services:start": "cd ../.. && npm run test-services:start mongodb", + "test-services:stop": "cd ../.. && npm run test-services:stop mongodb", + "version:update": "node ../../scripts/version-update.js" + }, + "keywords": [ + "mongodb", + "mongoose", + "orm", + "instrumentation", + "nodejs", + "opentelemetry", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "mongoose": "6.13.8" + }, + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.33.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-mongoose#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/README.md new file mode 100644 index 0000000..ec94123 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/README.md @@ -0,0 +1,97 @@ +# OpenTelemetry MySQL Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`mysql`](https://www.npmjs.com/package/mysql) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-mysql +``` + +## Supported Versions + +- [`mysql`](https://www.npmjs.com/package/mysql) versions `>=2.0.0 <3` + +## Usage + +OpenTelemetry MySQL Instrumentation allows the user to automatically collect trace data and export them to the backend of choice, to give observability to distributed systems when working with [mysql](https://www.npmjs.com/package/mysql). + +To load a specific plugin (**MySQL** in this case), specify it in the registerInstrumentations's configuration + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { MySQLInstrumentation } = require('@opentelemetry/instrumentation-mysql'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new MySQLInstrumentation(), + ], +}) +``` + +See [examples/mysql](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main//examples/mysql) for a short example. + +### MySQL instrumentation Options + +| Options | Type | Default | Description | +| ------------------------------------------------- | --------- | ------- | ----------- | +| [`enhancedDatabaseReporting`](./src/types.ts#L24) | `boolean` | `false` | If true, a `db.mysql.values` attribute containing the query's parameters will be add to database spans. Note that this is not an attribute defined in [Semantic Conventions](https://opentelemetry.io/docs/specs/semconv/database/mysql/). | + +## Semantic Conventions + +This instrumentation implements Semantic Conventions (semconv) v1.7.0. Since then, networking (in semconv v1.23.1) and database (in semconv v1.33.0) semantic conventions were stabilized. As of `@opentelemetry/instrumentation-mysql@0.55.0` support has been added for migrating to the stable semantic conventions using the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable as follows: + +1. Upgrade to the latest version of this instrumentation package. +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http/dup,database/dup` to emit both old and stable semantic conventions. (The `http` token is used to control the `net.*` attributes, the `database` token to control to `db.*` attributes.) +3. Modify alerts, dashboards, metrics, and other processes in your Observability system to use the stable semantic conventions. +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http,database` to emit only the stable semantic conventions. + +By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` includes neither of the above tokens, the old v1.7.0 semconv is used. +The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new database and networking semconv, after which a new minor version will use the new semconv by default and drop support for the old semconv. +See [the HTTP migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/) and the [database migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/) for details. + +Attributes collected: + +| Old semconv | Stable semconv | Description | +| ---------------------- | ---------------- | ----------- | +| `db.system` | `db.system.name` | 'mssql' (old), 'microsoft.sql_server' (stable) | +| `db.connection_string` | Removed | The connection string used to connect to the database. | +| `db.statement` | `db.query.text` | The database query being executed. | +| `db.user` | Removed | Username for accessing the database. | +| `db.name` | Removed | Integrated into new `db.namespace`. | +| (not included) | `db.namespace` | The database associated with the connection, as provided at connection time. (This does not track changes made via `SELECT DATABASE()`.) | +| `net.peer.name` | `server.address` | Remote hostname or similar. | +| `net.peer.port` | `server.port` | Remote port number. | + +Metrics collected: + +- [`db.client.connections.usage`](https://github.com/open-telemetry/semantic-conventions/blob/v1.24.0/docs/database/database-metrics.md#metric-dbclientconnectionsusage) - The number of connections currently in a given state. + + Note: While `db.client.connections.usage` has been deprecated in favor of `db.client.connection.count` in the [semconv database migration](https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count), the new metric is still unstable, so cannot be enabled via `OTEL_SEMCONV_STABILITY_OPT_IN=database`. There is ongoing work to provide an opt-in setting to select the latest experimental semconv. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-mysql +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-mysql.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.d.ts new file mode 100644 index 0000000..050e3e7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.d.ts @@ -0,0 +1,4 @@ +export declare enum AttributeNames { + MYSQL_VALUES = "db.mysql.values" +} +//# sourceMappingURL=AttributeNames.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.js new file mode 100644 index 0000000..f4db32f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttributeNames = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Mysql specific attributes not covered by semantic conventions +var AttributeNames; +(function (AttributeNames) { + AttributeNames["MYSQL_VALUES"] = "db.mysql.values"; +})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {})); +//# sourceMappingURL=AttributeNames.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.js.map new file mode 100644 index 0000000..4d9b330 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AttributeNames.js","sourceRoot":"","sources":["../../src/AttributeNames.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,gEAAgE;AAChE,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,kDAAgC,CAAA;AAClC,CAAC,EAFW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAEzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum AttributeNames {\n MYSQL_VALUES = 'db.mysql.values',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/index.d.ts new file mode 100644 index 0000000..141e56e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { MySQLInstrumentation } from './instrumentation'; +export type { MySQLInstrumentationConfig } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/index.js new file mode 100644 index 0000000..9e30617 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MySQLInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "MySQLInstrumentation", { enumerable: true, get: function () { return instrumentation_1.MySQLInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/index.js.map new file mode 100644 index 0000000..5d3d6cd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAyD;AAAhD,uHAAA,oBAAoB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { MySQLInstrumentation } from './instrumentation';\nexport type { MySQLInstrumentationConfig } from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.d.ts new file mode 100644 index 0000000..4132252 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.d.ts @@ -0,0 +1,28 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { MySQLInstrumentationConfig } from './types'; +export declare class MySQLInstrumentation extends InstrumentationBase { + private _netSemconvStability; + private _dbSemconvStability; + private _connectionsUsageOld; + constructor(config?: MySQLInstrumentationConfig); + private _setSemconvStabilityFromEnv; + protected _updateMetricInstruments(): void; + /** + * Convenience function for updating the `db.client.connections.usage` metric. + * The name "count" comes from the eventually replacement for this metric per + * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count + */ + private _connCountAdd; + protected init(): InstrumentationNodeModuleDefinition[]; + private _patchCreateConnection; + private _patchCreatePool; + private _patchPoolEnd; + private _patchCreatePoolCluster; + private _patchAdd; + private _patchGetConnection; + private _getConnectionCallbackPatchFn; + private _patchQuery; + private _patchCallbackQuery; + private _setPoolCallbacks; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.js new file mode 100644 index 0000000..f5d59eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.js @@ -0,0 +1,299 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MySQLInstrumentation = void 0; +const api_1 = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +const AttributeNames_1 = require("./AttributeNames"); +const utils_1 = require("./utils"); +/** @knipignore */ +const version_1 = require("./version"); +class MySQLInstrumentation extends instrumentation_1.InstrumentationBase { + _netSemconvStability; + _dbSemconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + this._setSemconvStabilityFromEnv(); + } + // Used for testing. + _setSemconvStabilityFromEnv() { + this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + _updateMetricInstruments() { + this._connectionsUsageOld = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTIONS_USAGE, { + description: 'The number of connections that are currently in state described by the state attribute.', + unit: '{connection}', + }); + } + /** + * Convenience function for updating the `db.client.connections.usage` metric. + * The name "count" comes from the eventually replacement for this metric per + * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count + */ + _connCountAdd(n, poolNameOld, state) { + this._connectionsUsageOld?.add(n, { state, name: poolNameOld }); + } + init() { + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition('mysql', ['>=2.0.0 <3'], (moduleExports) => { + if ((0, instrumentation_1.isWrapped)(moduleExports.createConnection)) { + this._unwrap(moduleExports, 'createConnection'); + } + this._wrap(moduleExports, 'createConnection', this._patchCreateConnection()); + if ((0, instrumentation_1.isWrapped)(moduleExports.createPool)) { + this._unwrap(moduleExports, 'createPool'); + } + this._wrap(moduleExports, 'createPool', this._patchCreatePool()); + if ((0, instrumentation_1.isWrapped)(moduleExports.createPoolCluster)) { + this._unwrap(moduleExports, 'createPoolCluster'); + } + this._wrap(moduleExports, 'createPoolCluster', this._patchCreatePoolCluster()); + return moduleExports; + }, (moduleExports) => { + if (moduleExports === undefined) + return; + this._unwrap(moduleExports, 'createConnection'); + this._unwrap(moduleExports, 'createPool'); + this._unwrap(moduleExports, 'createPoolCluster'); + }), + ]; + } + // global export function + _patchCreateConnection() { + return (originalCreateConnection) => { + const thisPlugin = this; + return function createConnection(_connectionUri) { + const originalResult = originalCreateConnection(...arguments); + // This is unwrapped on next call after unpatch + thisPlugin._wrap(originalResult, 'query', thisPlugin._patchQuery(originalResult)); + return originalResult; + }; + }; + } + // global export function + _patchCreatePool() { + return (originalCreatePool) => { + const thisPlugin = this; + return function createPool(_config) { + const pool = originalCreatePool(...arguments); + thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool)); + thisPlugin._wrap(pool, 'getConnection', thisPlugin._patchGetConnection(pool)); + thisPlugin._wrap(pool, 'end', thisPlugin._patchPoolEnd(pool)); + thisPlugin._setPoolCallbacks(pool, ''); + return pool; + }; + }; + } + _patchPoolEnd(pool) { + return (originalPoolEnd) => { + const thisPlugin = this; + return function end(callback) { + const nAll = pool._allConnections.length; + const nFree = pool._freeConnections.length; + const nUsed = nAll - nFree; + const poolNameOld = (0, utils_1.getPoolNameOld)(pool); + thisPlugin._connCountAdd(-nUsed, poolNameOld, 'used'); + thisPlugin._connCountAdd(-nFree, poolNameOld, 'idle'); + originalPoolEnd.apply(pool, arguments); + }; + }; + } + // global export function + _patchCreatePoolCluster() { + return (originalCreatePoolCluster) => { + const thisPlugin = this; + return function createPool(_config) { + const cluster = originalCreatePoolCluster(...arguments); + // This is unwrapped on next call after unpatch + thisPlugin._wrap(cluster, 'getConnection', thisPlugin._patchGetConnection(cluster)); + thisPlugin._wrap(cluster, 'add', thisPlugin._patchAdd(cluster)); + return cluster; + }; + }; + } + _patchAdd(cluster) { + return (originalAdd) => { + const thisPlugin = this; + return function add(id, config) { + // Unwrap if unpatch has been called + if (!thisPlugin['_enabled']) { + thisPlugin._unwrap(cluster, 'add'); + return originalAdd.apply(cluster, arguments); + } + originalAdd.apply(cluster, arguments); + const nodes = cluster['_nodes']; + if (nodes) { + const nodeId = typeof id === 'object' + ? 'CLUSTER::' + cluster._lastId + : String(id); + const pool = nodes[nodeId].pool; + thisPlugin._setPoolCallbacks(pool, id); + } + }; + }; + } + // method on cluster or pool + _patchGetConnection(pool) { + return (originalGetConnection) => { + const thisPlugin = this; + return function getConnection(arg1, arg2, arg3) { + // Unwrap if unpatch has been called + if (!thisPlugin['_enabled']) { + thisPlugin._unwrap(pool, 'getConnection'); + return originalGetConnection.apply(pool, arguments); + } + if (arguments.length === 1 && typeof arg1 === 'function') { + const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg1); + return originalGetConnection.call(pool, patchFn); + } + if (arguments.length === 2 && typeof arg2 === 'function') { + const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg2); + return originalGetConnection.call(pool, arg1, patchFn); + } + if (arguments.length === 3 && typeof arg3 === 'function') { + const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg3); + return originalGetConnection.call(pool, arg1, arg2, patchFn); + } + return originalGetConnection.apply(pool, arguments); + }; + }; + } + _getConnectionCallbackPatchFn(cb) { + const thisPlugin = this; + const activeContext = api_1.context.active(); + return function (err, connection) { + if (connection) { + // this is the callback passed into a query + // no need to unwrap + if (!(0, instrumentation_1.isWrapped)(connection.query)) { + thisPlugin._wrap(connection, 'query', thisPlugin._patchQuery(connection)); + } + } + if (typeof cb === 'function') { + api_1.context.with(activeContext, cb, this, err, connection); + } + }; + } + _patchQuery(connection) { + return (originalQuery) => { + const thisPlugin = this; + return function query(query, _valuesOrCallback, _callback) { + if (!thisPlugin['_enabled']) { + thisPlugin._unwrap(connection, 'query'); + return originalQuery.apply(connection, arguments); + } + const attributes = {}; + const { host, port, database, user } = (0, utils_1.getConfig)(connection.config); + const portNumber = parseInt(port, 10); + const dbQueryText = (0, utils_1.getDbQueryText)(query); + if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MYSQL; + attributes[semconv_1.ATTR_DB_CONNECTION_STRING] = (0, utils_1.getJDBCString)(host, port, database); + attributes[semconv_1.ATTR_DB_NAME] = database; + attributes[semconv_1.ATTR_DB_USER] = user; + attributes[semconv_1.ATTR_DB_STATEMENT] = dbQueryText; + } + if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semantic_conventions_1.DB_SYSTEM_NAME_VALUE_MYSQL; + attributes[semantic_conventions_1.ATTR_DB_NAMESPACE] = database; + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbQueryText; + } + if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_NET_PEER_NAME] = host; + if (!isNaN(portNumber)) { + attributes[semconv_1.ATTR_NET_PEER_PORT] = portNumber; + } + } + if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host; + if (!isNaN(portNumber)) { + attributes[semantic_conventions_1.ATTR_SERVER_PORT] = portNumber; + } + } + const span = thisPlugin.tracer.startSpan((0, utils_1.getSpanName)(query), { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + if (thisPlugin.getConfig().enhancedDatabaseReporting) { + let values; + if (Array.isArray(_valuesOrCallback)) { + values = _valuesOrCallback; + } + else if (arguments[2]) { + values = [_valuesOrCallback]; + } + span.setAttribute(AttributeNames_1.AttributeNames.MYSQL_VALUES, (0, utils_1.getDbValues)(query, values)); + } + const cbIndex = Array.from(arguments).findIndex(arg => typeof arg === 'function'); + const parentContext = api_1.context.active(); + if (cbIndex === -1) { + const streamableQuery = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => { + return originalQuery.apply(connection, arguments); + }); + api_1.context.bind(parentContext, streamableQuery); + return streamableQuery + .on('error', err => span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err.message, + })) + .on('end', () => { + span.end(); + }); + } + else { + thisPlugin._wrap(arguments, cbIndex, thisPlugin._patchCallbackQuery(span, parentContext)); + return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => { + return originalQuery.apply(connection, arguments); + }); + } + }; + }; + } + _patchCallbackQuery(span, parentContext) { + return (originalCallback) => { + return function (err, results, fields) { + if (err) { + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err.message, + }); + } + span.end(); + return api_1.context.with(parentContext, () => originalCallback(...arguments)); + }; + }; + } + _setPoolCallbacks(pool, id) { + const poolNameOld = id || (0, utils_1.getPoolNameOld)(pool); + pool.on('connection', _connection => { + this._connCountAdd(1, poolNameOld, 'idle'); + }); + pool.on('acquire', _connection => { + this._connCountAdd(-1, poolNameOld, 'idle'); + this._connCountAdd(1, poolNameOld, 'used'); + }); + pool.on('release', _connection => { + this._connCountAdd(1, poolNameOld, 'idle'); + this._connCountAdd(-1, poolNameOld, 'used'); + }); + } +} +exports.MySQLInstrumentation = MySQLInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.js.map new file mode 100644 index 0000000..06075c7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n context,\n Context,\n trace,\n Span,\n SpanKind,\n SpanStatusCode,\n type Attributes,\n} from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n ATTR_DB_NAMESPACE,\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_NAME,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_DB_USER,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n DB_SYSTEM_VALUE_MYSQL,\n METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport type * as mysqlTypes from 'mysql';\nimport { AttributeNames } from './AttributeNames';\nimport { MySQLInstrumentationConfig } from './types';\nimport {\n getConfig,\n getDbQueryText,\n getDbValues,\n getJDBCString,\n getSpanName,\n getPoolNameOld,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { UpDownCounter } from '@opentelemetry/api';\n\ntype getConnectionCallbackType = (\n err: mysqlTypes.MysqlError,\n connection: mysqlTypes.PoolConnection\n) => void;\n\nexport class MySQLInstrumentation extends InstrumentationBase {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n declare private _connectionsUsageOld: UpDownCounter;\n\n constructor(config: MySQLInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n this._setSemconvStabilityFromEnv();\n }\n\n // Used for testing.\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n this._dbSemconvStability = semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n protected override _updateMetricInstruments() {\n this._connectionsUsageOld = this.meter.createUpDownCounter(\n METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n {\n description:\n 'The number of connections that are currently in state described by the state attribute.',\n unit: '{connection}',\n }\n );\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 private _connCountAdd(n: number, poolNameOld: string, state: string) {\n this._connectionsUsageOld?.add(n, { state, name: poolNameOld });\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'mysql',\n ['>=2.0.0 <3'],\n (moduleExports: typeof mysqlTypes) => {\n if (isWrapped(moduleExports.createConnection)) {\n this._unwrap(moduleExports, 'createConnection');\n }\n this._wrap(\n moduleExports,\n 'createConnection',\n this._patchCreateConnection() as any\n );\n\n if (isWrapped(moduleExports.createPool)) {\n this._unwrap(moduleExports, 'createPool');\n }\n this._wrap(\n moduleExports,\n 'createPool',\n this._patchCreatePool() as any\n );\n\n if (isWrapped(moduleExports.createPoolCluster)) {\n this._unwrap(moduleExports, 'createPoolCluster');\n }\n this._wrap(\n moduleExports,\n 'createPoolCluster',\n this._patchCreatePoolCluster() as any\n );\n\n return moduleExports;\n },\n (moduleExports: typeof mysqlTypes) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports, 'createConnection');\n this._unwrap(moduleExports, 'createPool');\n this._unwrap(moduleExports, 'createPoolCluster');\n }\n ),\n ];\n }\n\n // global export function\n private _patchCreateConnection() {\n return (originalCreateConnection: Function) => {\n const thisPlugin = this;\n\n return function createConnection(\n _connectionUri: string | mysqlTypes.ConnectionConfig\n ) {\n const originalResult = originalCreateConnection(...arguments);\n\n // This is unwrapped on next call after unpatch\n thisPlugin._wrap(\n originalResult,\n 'query',\n thisPlugin._patchQuery(originalResult) as any\n );\n\n return originalResult;\n };\n };\n }\n\n // global export function\n private _patchCreatePool() {\n return (originalCreatePool: Function) => {\n const thisPlugin = this;\n return function createPool(_config: string | mysqlTypes.PoolConfig) {\n const pool = originalCreatePool(...arguments);\n\n thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool));\n thisPlugin._wrap(\n pool,\n 'getConnection',\n thisPlugin._patchGetConnection(pool)\n );\n thisPlugin._wrap(pool, 'end', thisPlugin._patchPoolEnd(pool));\n thisPlugin._setPoolCallbacks(pool, '');\n\n return pool;\n };\n };\n }\n\n private _patchPoolEnd(pool: any) {\n return (originalPoolEnd: Function) => {\n const thisPlugin = this;\n return function end(callback?: unknown) {\n const nAll = (pool as any)._allConnections.length;\n const nFree = (pool as any)._freeConnections.length;\n const nUsed = nAll - nFree;\n const poolNameOld = getPoolNameOld(pool);\n thisPlugin._connCountAdd(-nUsed, poolNameOld, 'used');\n thisPlugin._connCountAdd(-nFree, poolNameOld, 'idle');\n originalPoolEnd.apply(pool, arguments);\n };\n };\n }\n\n // global export function\n private _patchCreatePoolCluster() {\n return (originalCreatePoolCluster: Function) => {\n const thisPlugin = this;\n return function createPool(_config: string | mysqlTypes.PoolConfig) {\n const cluster = originalCreatePoolCluster(...arguments);\n\n // This is unwrapped on next call after unpatch\n thisPlugin._wrap(\n cluster,\n 'getConnection',\n thisPlugin._patchGetConnection(cluster)\n );\n thisPlugin._wrap(cluster, 'add', thisPlugin._patchAdd(cluster));\n\n return cluster;\n };\n };\n }\n private _patchAdd(cluster: mysqlTypes.PoolCluster) {\n return (originalAdd: Function) => {\n const thisPlugin = this;\n return function add(id: string, config: unknown) {\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' as keyof mysqlTypes.PoolCluster] as any;\n if (nodes) {\n const nodeId =\n typeof id === 'object'\n ? 'CLUSTER::' + (cluster as any)._lastId\n : String(id);\n\n const pool = nodes[nodeId].pool;\n thisPlugin._setPoolCallbacks(pool, id);\n }\n };\n };\n }\n\n // method on cluster or pool\n private _patchGetConnection(pool: mysqlTypes.Pool | mysqlTypes.PoolCluster) {\n return (originalGetConnection: Function) => {\n const thisPlugin = this;\n\n return function getConnection(\n arg1?: unknown,\n arg2?: unknown,\n arg3?: unknown\n ) {\n // Unwrap if unpatch has been called\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(pool, 'getConnection');\n return originalGetConnection.apply(pool, arguments);\n }\n\n if (arguments.length === 1 && typeof arg1 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n arg1 as getConnectionCallbackType\n );\n return originalGetConnection.call(pool, patchFn);\n }\n if (arguments.length === 2 && typeof arg2 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n arg2 as getConnectionCallbackType\n );\n return originalGetConnection.call(pool, arg1, patchFn);\n }\n if (arguments.length === 3 && typeof arg3 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n arg3 as getConnectionCallbackType\n );\n return originalGetConnection.call(pool, arg1, arg2, patchFn);\n }\n\n return originalGetConnection.apply(pool, arguments);\n };\n };\n }\n\n private _getConnectionCallbackPatchFn(cb: getConnectionCallbackType) {\n const thisPlugin = this;\n const activeContext = context.active();\n return function (\n this: any,\n err: mysqlTypes.MysqlError,\n connection: mysqlTypes.PoolConnection\n ) {\n if (connection) {\n // this is the callback passed into a query\n // no need to unwrap\n if (!isWrapped(connection.query)) {\n thisPlugin._wrap(\n connection,\n 'query',\n thisPlugin._patchQuery(connection)\n );\n }\n }\n if (typeof cb === 'function') {\n context.with(activeContext, cb, this, err, connection);\n }\n };\n }\n\n private _patchQuery(connection: mysqlTypes.Connection | mysqlTypes.Pool) {\n return (originalQuery: Function): mysqlTypes.QueryFunction => {\n const thisPlugin = this;\n\n return function query(\n query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n _valuesOrCallback?: unknown[] | mysqlTypes.queryCallback,\n _callback?: mysqlTypes.queryCallback\n ) {\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(connection, 'query');\n return originalQuery.apply(connection, arguments);\n }\n\n const attributes: Attributes = {};\n const { host, port, database, user } = getConfig(connection.config);\n const portNumber = parseInt(port, 10);\n const dbQueryText = getDbQueryText(query);\n if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n attributes[ATTR_DB_CONNECTION_STRING] = getJDBCString(\n host,\n port,\n database\n );\n attributes[ATTR_DB_NAME] = database;\n attributes[ATTR_DB_USER] = user;\n attributes[ATTR_DB_STATEMENT] = dbQueryText;\n }\n if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n attributes[ATTR_DB_NAMESPACE] = database;\n attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n }\n if (thisPlugin._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_NAME] = host;\n if (!isNaN(portNumber)) {\n attributes[ATTR_NET_PEER_PORT] = portNumber;\n }\n }\n if (thisPlugin._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_ADDRESS] = host;\n if (!isNaN(portNumber)) {\n attributes[ATTR_SERVER_PORT] = portNumber;\n }\n }\n const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n if (thisPlugin.getConfig().enhancedDatabaseReporting) {\n let values;\n\n if (Array.isArray(_valuesOrCallback)) {\n values = _valuesOrCallback;\n } else if (arguments[2]) {\n values = [_valuesOrCallback];\n }\n\n span.setAttribute(\n AttributeNames.MYSQL_VALUES,\n getDbValues(query, values)\n );\n }\n\n const cbIndex = Array.from(arguments).findIndex(\n arg => typeof arg === 'function'\n );\n\n const parentContext = context.active();\n\n if (cbIndex === -1) {\n const streamableQuery: mysqlTypes.Query = context.with(\n trace.setSpan(context.active(), span),\n () => {\n return originalQuery.apply(connection, arguments);\n }\n );\n context.bind(parentContext, streamableQuery);\n\n return streamableQuery\n .on('error', err =>\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n })\n )\n .on('end', () => {\n span.end();\n });\n } else {\n thisPlugin._wrap(\n arguments,\n cbIndex,\n thisPlugin._patchCallbackQuery(span, parentContext)\n );\n\n return context.with(trace.setSpan(context.active(), span), () => {\n return originalQuery.apply(connection, arguments);\n });\n }\n };\n };\n }\n\n private _patchCallbackQuery(span: Span, parentContext: Context) {\n return (originalCallback: Function) => {\n return function (\n err: mysqlTypes.MysqlError | null,\n results?: any,\n fields?: mysqlTypes.FieldInfo[]\n ) {\n if (err) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n span.end();\n return context.with(parentContext, () =>\n originalCallback(...arguments)\n );\n };\n };\n }\n\n private _setPoolCallbacks(pool: mysqlTypes.Pool, id: string) {\n const poolNameOld = id || getPoolNameOld(pool);\n\n pool.on('connection', _connection => {\n this._connCountAdd(1, poolNameOld, 'idle');\n });\n\n pool.on('acquire', _connection => {\n this._connCountAdd(-1, poolNameOld, 'idle');\n this._connCountAdd(1, poolNameOld, 'used');\n });\n\n pool.on('release', _connection => {\n this._connCountAdd(1, poolNameOld, 'idle');\n this._connCountAdd(-1, poolNameOld, 'used');\n });\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.d.ts new file mode 100644 index 0000000..d26f492 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.d.ts @@ -0,0 +1,88 @@ +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export declare const ATTR_DB_CONNECTION_STRING: "db.connection_string"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_NAME: "db.name"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_USER: "db.user"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM}. + * + * MySQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MYSQL: "mysql"; +/** + * Deprecated, use `db.client.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.count`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_USAGE: "db.client.connections.usage"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.js new file mode 100644 index 0000000..0e8dafc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.js @@ -0,0 +1,111 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +exports.ATTR_DB_CONNECTION_STRING = 'db.connection_string'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +exports.ATTR_DB_NAME = 'db.name'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +exports.ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +exports.ATTR_DB_SYSTEM = 'db.system'; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_DB_USER = 'db.user'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM}. + * + * MySQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_MYSQL = 'mysql'; +/** + * Deprecated, use `db.client.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.count`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.js.map new file mode 100644 index 0000000..4486894 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,kCAAkC,GAC7C,6BAAsC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\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 */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\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 */\nexport const ATTR_DB_USER = 'db.user' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE =\n 'db.client.connections.usage' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/types.d.ts new file mode 100644 index 0000000..afa8547 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/types.d.ts @@ -0,0 +1,9 @@ +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export interface MySQLInstrumentationConfig extends InstrumentationConfig { + /** + * If true, an attribute containing the query's parameters will be attached + * the spans generated to represent the query. + */ + enhancedDatabaseReporting?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/types.js.map new file mode 100644 index 0000000..de88aa2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface MySQLInstrumentationConfig extends InstrumentationConfig {\n /**\n * If true, an attribute containing the query's parameters will be attached\n * the spans generated to represent the query.\n */\n enhancedDatabaseReporting?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.d.ts new file mode 100644 index 0000000..4e70ec7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.d.ts @@ -0,0 +1,25 @@ +import type { Pool, Query, QueryOptions } from 'mysql'; +export declare function getConfig(config: any): { + host: any; + port: any; + database: any; + user: any; +}; +export declare function getJDBCString(host: string | undefined, port: number | undefined, database: string | undefined): string; +/** + * @returns the database query being executed. + */ +export declare function getDbQueryText(query: string | Query | QueryOptions): string; +export declare function getDbValues(query: string | Query | QueryOptions, values?: any[]): string; +/** + * The span name SHOULD be set to a low cardinality value + * representing the statement executed on the database. + * + * TODO: revisit span name based on https://github.com/open-telemetry/semantic-conventions/blob/v1.33.0/docs/database/database-spans.md#name + * + * @returns SQL statement without variable arguments or SQL verb + */ +export declare function getSpanName(query: string | Query | QueryOptions): string; +export declare function arrayStringifyHelper(arr: Array | undefined): string; +export declare function getPoolNameOld(pool: Pool): string; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.js new file mode 100644 index 0000000..6349602 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.js @@ -0,0 +1,95 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getPoolNameOld = exports.arrayStringifyHelper = exports.getSpanName = exports.getDbValues = exports.getDbQueryText = exports.getJDBCString = exports.getConfig = void 0; +function getConfig(config) { + const { host, port, database, user } = (config && config.connectionConfig) || config || {}; + return { host, port, database, user }; +} +exports.getConfig = getConfig; +function getJDBCString(host, port, database) { + let jdbcString = `jdbc:mysql://${host || 'localhost'}`; + if (typeof port === 'number') { + jdbcString += `:${port}`; + } + if (typeof database === 'string') { + jdbcString += `/${database}`; + } + return jdbcString; +} +exports.getJDBCString = getJDBCString; +/** + * @returns the database query being executed. + */ +function getDbQueryText(query) { + if (typeof query === 'string') { + return query; + } + else { + return query.sql; + } +} +exports.getDbQueryText = getDbQueryText; +function getDbValues(query, values) { + if (typeof query === 'string') { + return arrayStringifyHelper(values); + } + else { + // According to https://github.com/mysqljs/mysql#performing-queries + // The values argument will override the values in the option object. + return arrayStringifyHelper(values || query.values); + } +} +exports.getDbValues = getDbValues; +/** + * The span name SHOULD be set to a low cardinality value + * representing the statement executed on the database. + * + * TODO: revisit span name based on https://github.com/open-telemetry/semantic-conventions/blob/v1.33.0/docs/database/database-spans.md#name + * + * @returns SQL statement without variable arguments or SQL verb + */ +function getSpanName(query) { + const rawQuery = typeof query === 'object' ? query.sql : query; + // Extract the SQL verb + const firstSpace = rawQuery?.indexOf(' '); + if (typeof firstSpace === 'number' && firstSpace !== -1) { + return rawQuery?.substring(0, firstSpace); + } + return rawQuery; +} +exports.getSpanName = getSpanName; +function arrayStringifyHelper(arr) { + if (arr) + return `[${arr.toString()}]`; + return ''; +} +exports.arrayStringifyHelper = arrayStringifyHelper; +function getPoolNameOld(pool) { + const c = pool.config.connectionConfig; + let poolName = ''; + poolName += c.host ? `host: '${c.host}', ` : ''; + poolName += c.port ? `port: ${c.port}, ` : ''; + poolName += c.database ? `database: '${c.database}', ` : ''; + poolName += c.user ? `user: '${c.user}'` : ''; + if (!c.user) { + poolName = poolName.substring(0, poolName.length - 2); //omit last comma + } + return poolName.trim(); +} +exports.getPoolNameOld = getPoolNameOld; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.js.map new file mode 100644 index 0000000..ef3609e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Pool, Query, QueryOptions } from 'mysql';\n\nexport function getConfig(config: any) {\n const { host, port, database, user } =\n (config && config.connectionConfig) || config || {};\n return { host, port, database, user };\n}\n\nexport function getJDBCString(\n host: string | undefined,\n port: number | undefined,\n database: string | undefined\n) {\n let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n if (typeof port === 'number') {\n jdbcString += `:${port}`;\n }\n\n if (typeof database === 'string') {\n jdbcString += `/${database}`;\n }\n\n return jdbcString;\n}\n\n/**\n * @returns the database query being executed.\n */\nexport function getDbQueryText(query: string | Query | QueryOptions): string {\n if (typeof query === 'string') {\n return query;\n } else {\n return query.sql;\n }\n}\n\nexport function getDbValues(\n query: string | Query | QueryOptions,\n values?: any[]\n): string {\n if (typeof query === 'string') {\n return arrayStringifyHelper(values);\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}\n\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 */\nexport function getSpanName(query: string | Query | QueryOptions): string {\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}\n\nexport function arrayStringifyHelper(arr: Array | undefined): string {\n if (arr) return `[${arr.toString()}]`;\n return '';\n}\n\nexport function getPoolNameOld(pool: Pool): string {\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/version.d.ts new file mode 100644 index 0000000..cbf2e90 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.57.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-mysql"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/version.js new file mode 100644 index 0000000..89d84f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.57.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-mysql'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/version.js.map new file mode 100644 index 0000000..02f0785 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,sCAAsC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.57.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mysql';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/package.json new file mode 100644 index 0000000..a912117 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql/package.json @@ -0,0 +1,64 @@ +{ + "name": "@opentelemetry/instrumentation-mysql", + "version": "0.57.0", + "description": "OpenTelemetry instrumentation for `mysql` database client for MySQL", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-mysql" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-mysql", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "//todo": "echo \"add test-all-versions\"", + "test-services:start": "cd ../.. && npm run test-services:start mysql", + "test-services:stop": "cd ../.. && npm run test-services:stop mysql", + "version:update": "node ../../scripts/version-update.js" + }, + "keywords": [ + "instrumentation", + "mysql", + "nodejs", + "opentelemetry", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "mysql": "2.18.1" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.33.0", + "@types/mysql": "2.15.27" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-mysql#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/README.md new file mode 100644 index 0000000..5373601 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/README.md @@ -0,0 +1,96 @@ +# OpenTelemetry mysql Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`mysql2`](https://github.com/sidorares/node-mysql2) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-mysql2 +``` + +## Supported Versions + +- [`mysql2`](https://www.npmjs.com/package/mysql2) versions `>=1.4.2 <4` + +## Usage + +OpenTelemetry MySQL2 Instrumentation allows the user to automatically collect trace data and export them to the backend of choice, to give observability to distributed systems when working with [mysql2](https://github.com/sidorares/node-mysql2). + +To load a specific plugin (**MySQL2** in this case), specify it in the registerInstrumentations's configuration + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { MySQL2Instrumentation } = require('@opentelemetry/instrumentation-mysql2'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new MySQL2Instrumentation(), + ], +}) +``` + +### MySQL2 Instrumentation Options + +You can set the following instrumentation options: + +| Options | Type | Description | +|-----------------------------------|---------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `responseHook` | `MySQL2InstrumentationExecutionResponseHook` (function) | Function for adding custom attributes from db response | +| `addSqlCommenterCommentToQueries` | `boolean` | If true, adds [sqlcommenter](https://github.com/open-telemetry/opentelemetry-sqlcommenter) specification compliant comment to queries with tracing context (default false). _NOTE: A comment will not be added to queries that already contain `--` or `/* ... */` in them, even if these are not actually part of comments_ | +| `maskStatement` | `boolean` | If true, masks the `db.statement` attribute in spans (default false) with the `maskStatementHook` | +| `maskStatementHook` | `MySQL2InstrumentationMaskStatementHook` (function) | Function for masking the `db.statement` attribute in spans Default: `return query.replace(/\b\d+\b/g, '?').replac(/(["'])(?:(?=(\\?))\2.)*?\1/g, '?');` | + + +## Semantic Conventions + +This instrumentation implements Semantic Conventions (semconv) v1.7.0. Since then, networking (in semconv v1.23.1) and database (in semconv v1.33.0) semantic conventions were stabilized. As of `@opentelemetry/instrumentation-mysql2@0.53.0` support has been added for migrating to the stable semantic conventions using the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable as follows: + +1. Upgrade to the latest version of this instrumentation package. +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http/dup,database/dup` to emit both old and stable semantic conventions. (The `http` token is used to control the `net.*` attributes, the `database` token to control to `db.*` attributes.) +3. Modify alerts, dashboards, metrics, and other processes in your Observability system to use the stable semantic conventions. +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http,database` to emit only the stable semantic conventions. + +By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` includes neither of the above tokens, the old v1.7.0 semconv is used. +The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new database and networking semconv, after which a new minor version will use the new semconv by default and drop support for the old semconv. +See [the HTTP migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/) and the [database migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/) for details. + +Attributes collected: + +| Old semconv | Stable semconv | Description | +|------------------------|-------------------------------------------------|-------------------------------------------------------------------------------| +| `db.connection_string` | Removed | The connection string used to connect to the database. | +| `db.name` | Removed, integrated into the new `db.namespace` | The name of the database. | +| `db.system` | `db.system.name` | 'mysql' | +| `db.statement` | `db.query.text` | The database query being executed. | +| `db.user` | Removed | User used to connect to the database. | +| (not included) | `db.namespace` | The name of the database, fully qualified within the server address and port. | +| `net.peer.port` | `server.port` | Remote port number. | +| `net.peer.name` | `server.address` | Remote hostname or similar. | + + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-mysql2 +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-mysql2.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.d.ts new file mode 100644 index 0000000..e4becbe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { MySQL2Instrumentation } from './instrumentation'; +export type { MySQL2InstrumentationConfig, MySQL2InstrumentationExecutionResponseHook, MySQL2ResponseHookInformation, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.js new file mode 100644 index 0000000..6b863f7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MySQL2Instrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "MySQL2Instrumentation", { enumerable: true, get: function () { return instrumentation_1.MySQL2Instrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.js.map new file mode 100644 index 0000000..48844a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA0D;AAAjD,wHAAA,qBAAqB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { MySQL2Instrumentation } from './instrumentation';\nexport type {\n MySQL2InstrumentationConfig,\n MySQL2InstrumentationExecutionResponseHook,\n MySQL2ResponseHookInformation,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.d.ts new file mode 100644 index 0000000..e324f73 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.d.ts @@ -0,0 +1,12 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { MySQL2InstrumentationConfig } from './types'; +export declare class MySQL2Instrumentation extends InstrumentationBase { + private _netSemconvStability; + private _dbSemconvStability; + constructor(config?: MySQL2InstrumentationConfig); + private _setSemconvStabilityFromEnv; + protected init(): InstrumentationNodeModuleDefinition[]; + private _patchQuery; + private _patchCallbackQuery; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.js new file mode 100644 index 0000000..cb2f11d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.js @@ -0,0 +1,175 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MySQL2Instrumentation = void 0; +const api = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semconv_1 = require("./semconv"); +const sql_common_1 = require("@opentelemetry/sql-common"); +const utils_1 = require("./utils"); +/** @knipignore */ +const version_1 = require("./version"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const supportedVersions = ['>=1.4.2 <4']; +class MySQL2Instrumentation extends instrumentation_1.InstrumentationBase { + _netSemconvStability; + _dbSemconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + this._setSemconvStabilityFromEnv(); + } + // Used for testing. + _setSemconvStabilityFromEnv() { + this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + init() { + let format; + function setFormatFunction(moduleExports) { + if (!format && moduleExports.format) { + format = moduleExports.format; + } + } + const patch = (ConnectionPrototype) => { + if ((0, instrumentation_1.isWrapped)(ConnectionPrototype.query)) { + this._unwrap(ConnectionPrototype, 'query'); + } + this._wrap(ConnectionPrototype, 'query', this._patchQuery(format, false)); + if ((0, instrumentation_1.isWrapped)(ConnectionPrototype.execute)) { + this._unwrap(ConnectionPrototype, 'execute'); + } + this._wrap(ConnectionPrototype, 'execute', this._patchQuery(format, true)); + }; + const unpatch = (ConnectionPrototype) => { + this._unwrap(ConnectionPrototype, 'query'); + this._unwrap(ConnectionPrototype, 'execute'); + }; + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition('mysql2', supportedVersions, (moduleExports) => { + setFormatFunction(moduleExports); + return moduleExports; + }, () => { }, [ + new instrumentation_1.InstrumentationNodeModuleFile('mysql2/promise.js', supportedVersions, (moduleExports) => { + setFormatFunction(moduleExports); + return moduleExports; + }, () => { }), + new instrumentation_1.InstrumentationNodeModuleFile('mysql2/lib/connection.js', supportedVersions, (moduleExports) => { + const ConnectionPrototype = (0, utils_1.getConnectionPrototypeToInstrument)(moduleExports); + patch(ConnectionPrototype); + return moduleExports; + }, (moduleExports) => { + if (moduleExports === undefined) + return; + const ConnectionPrototype = (0, utils_1.getConnectionPrototypeToInstrument)(moduleExports); + unpatch(ConnectionPrototype); + }), + ]), + ]; + } + _patchQuery(format, isPrepared) { + return (originalQuery) => { + const thisPlugin = this; + return function query(query, _valuesOrCallback, _callback) { + let values; + if (Array.isArray(_valuesOrCallback)) { + values = _valuesOrCallback; + } + else if (arguments[2]) { + values = [_valuesOrCallback]; + } + const { maskStatement, maskStatementHook, responseHook } = thisPlugin.getConfig(); + const attributes = (0, utils_1.getConnectionAttributes)(this.config, thisPlugin._dbSemconvStability, thisPlugin._netSemconvStability); + const dbQueryText = (0, utils_1.getQueryText)(query, format, values, maskStatement, maskStatementHook); + if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MYSQL; + attributes[semconv_1.ATTR_DB_STATEMENT] = dbQueryText; + } + if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semantic_conventions_1.DB_SYSTEM_NAME_VALUE_MYSQL; + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbQueryText; + } + const span = thisPlugin.tracer.startSpan((0, utils_1.getSpanName)(query), { + kind: api.SpanKind.CLIENT, + attributes, + }); + if (!isPrepared && + thisPlugin.getConfig().addSqlCommenterCommentToQueries) { + arguments[0] = query = + typeof query === 'string' + ? (0, sql_common_1.addSqlCommenterComment)(span, query) + : Object.assign(query, { + sql: (0, sql_common_1.addSqlCommenterComment)(span, query.sql), + }); + } + const endSpan = (0, utils_1.once)((err, results) => { + if (err) { + span.setStatus({ + code: api.SpanStatusCode.ERROR, + message: err.message, + }); + } + else { + if (typeof responseHook === 'function') { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + responseHook(span, { + queryResults: results, + }); + }, err => { + if (err) { + thisPlugin._diag.warn('Failed executing responseHook', err); + } + }, true); + } + } + span.end(); + }); + if (arguments.length === 1) { + if (typeof query.onResult === 'function') { + thisPlugin._wrap(query, 'onResult', thisPlugin._patchCallbackQuery(endSpan)); + } + const streamableQuery = originalQuery.apply(this, arguments); + // `end` in mysql behaves similarly to `result` in mysql2. + streamableQuery + .once('error', err => { + endSpan(err); + }) + .once('result', results => { + endSpan(undefined, results); + }); + return streamableQuery; + } + if (typeof arguments[1] === 'function') { + thisPlugin._wrap(arguments, 1, thisPlugin._patchCallbackQuery(endSpan)); + } + else if (typeof arguments[2] === 'function') { + thisPlugin._wrap(arguments, 2, thisPlugin._patchCallbackQuery(endSpan)); + } + return originalQuery.apply(this, arguments); + }; + }; + } + _patchCallbackQuery(endSpan) { + return (originalCallback) => { + return function (err, results, fields) { + endSpan(err, results); + return originalCallback(...arguments); + }; + }; + } +} +exports.MySQL2Instrumentation = MySQL2Instrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.js.map new file mode 100644 index 0000000..1abbe1d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n safeExecuteInTheMiddle,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n DB_SYSTEM_VALUE_MYSQL,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n} from './semconv';\nimport { addSqlCommenterComment } from '@opentelemetry/sql-common';\nimport type * as mysqlTypes from 'mysql2';\nimport { MySQL2InstrumentationConfig } from './types';\nimport {\n getConnectionAttributes,\n getConnectionPrototypeToInstrument,\n getQueryText,\n getSpanName,\n once,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\n\ntype formatType = typeof mysqlTypes.format;\n\nconst supportedVersions = ['>=1.4.2 <4'];\n\nexport class MySQL2Instrumentation extends InstrumentationBase {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n\n constructor(config: MySQL2InstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n this._setSemconvStabilityFromEnv();\n }\n\n // Used for testing.\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n this._dbSemconvStability = semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n protected init() {\n let format: formatType | undefined;\n function setFormatFunction(moduleExports: any) {\n if (!format && moduleExports.format) {\n format = moduleExports.format;\n }\n }\n const patch = (ConnectionPrototype: mysqlTypes.Connection) => {\n if (isWrapped(ConnectionPrototype.query)) {\n this._unwrap(ConnectionPrototype, 'query');\n }\n this._wrap(\n ConnectionPrototype,\n 'query',\n this._patchQuery(format, false) as any\n );\n if (isWrapped(ConnectionPrototype.execute)) {\n this._unwrap(ConnectionPrototype, 'execute');\n }\n this._wrap(\n ConnectionPrototype,\n 'execute',\n this._patchQuery(format, true) as any\n );\n };\n const unpatch = (ConnectionPrototype: mysqlTypes.Connection) => {\n this._unwrap(ConnectionPrototype, 'query');\n this._unwrap(ConnectionPrototype, 'execute');\n };\n return [\n new InstrumentationNodeModuleDefinition(\n 'mysql2',\n supportedVersions,\n (moduleExports: any) => {\n setFormatFunction(moduleExports);\n return moduleExports;\n },\n () => {},\n [\n new InstrumentationNodeModuleFile(\n 'mysql2/promise.js',\n supportedVersions,\n (moduleExports: any) => {\n setFormatFunction(moduleExports);\n return moduleExports;\n },\n () => {}\n ),\n new InstrumentationNodeModuleFile(\n 'mysql2/lib/connection.js',\n supportedVersions,\n (moduleExports: any) => {\n const ConnectionPrototype: mysqlTypes.Connection =\n getConnectionPrototypeToInstrument(moduleExports);\n patch(ConnectionPrototype);\n return moduleExports;\n },\n (moduleExports: any) => {\n if (moduleExports === undefined) return;\n const ConnectionPrototype: mysqlTypes.Connection =\n getConnectionPrototypeToInstrument(moduleExports);\n unpatch(ConnectionPrototype);\n }\n ),\n ]\n ),\n ];\n }\n\n private _patchQuery(format: formatType | undefined, isPrepared: boolean) {\n return (originalQuery: Function): Function => {\n const thisPlugin = this;\n return function query(\n this: mysqlTypes.Connection,\n query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n _valuesOrCallback?: unknown[] | Function,\n _callback?: Function\n ) {\n let values;\n if (Array.isArray(_valuesOrCallback)) {\n values = _valuesOrCallback;\n } else if (arguments[2]) {\n values = [_valuesOrCallback];\n }\n const { maskStatement, maskStatementHook, responseHook } =\n thisPlugin.getConfig();\n\n const attributes: api.Attributes = getConnectionAttributes(\n this.config,\n thisPlugin._dbSemconvStability,\n thisPlugin._netSemconvStability\n );\n const dbQueryText = getQueryText(\n query,\n format,\n values,\n maskStatement,\n maskStatementHook\n );\n if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n attributes[ATTR_DB_STATEMENT] = dbQueryText;\n }\n if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n }\n\n const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n kind: api.SpanKind.CLIENT,\n attributes,\n });\n\n if (\n !isPrepared &&\n thisPlugin.getConfig().addSqlCommenterCommentToQueries\n ) {\n arguments[0] = query =\n typeof query === 'string'\n ? addSqlCommenterComment(span, query)\n : Object.assign(query, {\n sql: addSqlCommenterComment(span, query.sql),\n });\n }\n\n const endSpan = once((err?: any, results?: any) => {\n if (err) {\n span.setStatus({\n code: api.SpanStatusCode.ERROR,\n message: err.message,\n });\n } else {\n if (typeof responseHook === 'function') {\n safeExecuteInTheMiddle(\n () => {\n responseHook(span, {\n queryResults: results,\n });\n },\n err => {\n if (err) {\n thisPlugin._diag.warn('Failed executing responseHook', err);\n }\n },\n true\n );\n }\n }\n\n span.end();\n });\n\n if (arguments.length === 1) {\n if (typeof (query as any).onResult === 'function') {\n thisPlugin._wrap(\n query as any,\n 'onResult',\n thisPlugin._patchCallbackQuery(endSpan)\n );\n }\n\n const streamableQuery: mysqlTypes.Query = originalQuery.apply(\n this,\n arguments\n );\n\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\n return streamableQuery;\n }\n\n if (typeof arguments[1] === 'function') {\n thisPlugin._wrap(\n arguments,\n 1,\n thisPlugin._patchCallbackQuery(endSpan)\n );\n } else if (typeof arguments[2] === 'function') {\n thisPlugin._wrap(\n arguments,\n 2,\n thisPlugin._patchCallbackQuery(endSpan)\n );\n }\n\n return originalQuery.apply(this, arguments);\n };\n };\n }\n\n private _patchCallbackQuery(endSpan: Function) {\n return (originalCallback: Function) => {\n return function (\n err: mysqlTypes.QueryError | null,\n results?: any,\n fields?: mysqlTypes.FieldPacket[]\n ) {\n endSpan(err, results);\n return originalCallback(...arguments);\n };\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.d.ts new file mode 100644 index 0000000..bdbe816 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.d.ts @@ -0,0 +1,80 @@ +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export declare const ATTR_DB_CONNECTION_STRING: "db.connection_string"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_NAME: "db.name"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_USER: "db.user"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM}. + * + * MySQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MYSQL: "mysql"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.js new file mode 100644 index 0000000..4ac70a9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.js @@ -0,0 +1,103 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +exports.ATTR_DB_CONNECTION_STRING = 'db.connection_string'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +exports.ATTR_DB_NAME = 'db.name'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +exports.ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +exports.ATTR_DB_SYSTEM = 'db.system'; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_DB_USER = 'db.user'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM}. + * + * MySQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_MYSQL = 'mysql'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.js.map new file mode 100644 index 0000000..8b8e229 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\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 */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\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 */\nexport const ATTR_DB_USER = 'db.user' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/types.d.ts new file mode 100644 index 0000000..66b4a73 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/types.d.ts @@ -0,0 +1,39 @@ +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import type { Span } from '@opentelemetry/api'; +export interface MySQL2ResponseHookInformation { + queryResults: any; +} +export interface MySQL2InstrumentationExecutionResponseHook { + (span: Span, responseHookInfo: MySQL2ResponseHookInformation): void; +} +export interface MySQL2InstrumentationQueryMaskingHook { + (query: string): string; +} +export interface MySQL2InstrumentationConfig extends InstrumentationConfig { + /** + * If true, the query will be masked before setting it as a span attribute, using the {@link maskStatementHook}. + * + * @default false + * @see maskStatementHook + */ + maskStatement?: boolean; + /** + * Hook that allows masking the query string before setting it as span attribute. + * + * @default (query: string) => query.replace(/\b\d+\b/g, '?').replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, '?') + */ + maskStatementHook?: MySQL2InstrumentationQueryMaskingHook; + /** + * Hook that allows adding custom span attributes based on the data + * returned MySQL2 queries. + * + * @default undefined + */ + responseHook?: MySQL2InstrumentationExecutionResponseHook; + /** + * If true, queries are modified to also include a comment with + * the tracing context, following the {@link https://github.com/open-telemetry/opentelemetry-sqlcommenter sqlcommenter} format + */ + addSqlCommenterCommentToQueries?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/types.js.map new file mode 100644 index 0000000..76ca31c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport type { Span } from '@opentelemetry/api';\n\nexport interface MySQL2ResponseHookInformation {\n queryResults: any;\n}\n\nexport interface MySQL2InstrumentationExecutionResponseHook {\n (span: Span, responseHookInfo: MySQL2ResponseHookInformation): void;\n}\n\nexport interface MySQL2InstrumentationQueryMaskingHook {\n (query: string): string;\n}\n\nexport interface MySQL2InstrumentationConfig extends InstrumentationConfig {\n /**\n * If true, the query will be masked before setting it as a span attribute, using the {@link maskStatementHook}.\n *\n * @default false\n * @see maskStatementHook\n */\n maskStatement?: boolean;\n\n /**\n * Hook that allows masking the query string before setting it as span attribute.\n *\n * @default (query: string) => query.replace(/\\b\\d+\\b/g, '?').replace(/([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g, '?')\n */\n maskStatementHook?: MySQL2InstrumentationQueryMaskingHook;\n\n /**\n * Hook that allows adding custom span attributes based on the data\n * returned MySQL2 queries.\n *\n * @default undefined\n */\n responseHook?: MySQL2InstrumentationExecutionResponseHook;\n\n /**\n * If true, queries are modified to also include a comment with\n * the tracing context, following the {@link https://github.com/open-telemetry/opentelemetry-sqlcommenter sqlcommenter} format\n */\n addSqlCommenterCommentToQueries?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.d.ts new file mode 100644 index 0000000..cc46f3a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.d.ts @@ -0,0 +1,42 @@ +import { Attributes } from '@opentelemetry/api'; +import type * as mysqlTypes from 'mysql2'; +import { MySQL2InstrumentationQueryMaskingHook } from './types'; +import { SemconvStability } from '@opentelemetry/instrumentation'; +type formatType = typeof mysqlTypes.format; +interface QueryOptions { + sql: string; + values?: any | any[] | { + [param: string]: any; + }; +} +interface Query { + sql: string; +} +interface Config { + host?: string; + port?: number; + database?: string; + user?: string; + connectionConfig?: Config; +} +/** + * Get an Attributes map from a mysql connection config object + * + * @param config ConnectionConfig + */ +export declare function getConnectionAttributes(config: Config, dbSemconvStability: SemconvStability, netSemconvStability: SemconvStability): Attributes; +/** + * Conjures up the value for the db.query.text attribute by formatting a SQL query. + */ +export declare function getQueryText(query: string | Query | QueryOptions, format?: formatType, values?: any[], maskStatement?: boolean, maskStatementHook?: MySQL2InstrumentationQueryMaskingHook): string; +/** + * The span name SHOULD be set to a low cardinality value + * representing the statement executed on the database. + * + * @returns SQL statement without variable arguments or SQL verb + */ +export declare function getSpanName(query: string | Query | QueryOptions): string; +export declare const once: (fn: Function) => (...args: unknown[]) => any; +export declare function getConnectionPrototypeToInstrument(connection: any): any; +export {}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.js new file mode 100644 index 0000000..d095e0f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.js @@ -0,0 +1,153 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getConnectionPrototypeToInstrument = exports.once = exports.getSpanName = exports.getQueryText = exports.getConnectionAttributes = void 0; +const semconv_1 = require("./semconv"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +/** + * Get an Attributes map from a mysql connection config object + * + * @param config ConnectionConfig + */ +function getConnectionAttributes(config, dbSemconvStability, netSemconvStability) { + const { host, port, database, user } = getConfig(config); + const attrs = {}; + if (dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attrs[semconv_1.ATTR_DB_CONNECTION_STRING] = getJDBCString(host, port, database); + attrs[semconv_1.ATTR_DB_NAME] = database; + attrs[semconv_1.ATTR_DB_USER] = user; + } + if (dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attrs[semantic_conventions_1.ATTR_DB_NAMESPACE] = database; + } + const portNumber = parseInt(port, 10); + if (netSemconvStability & instrumentation_1.SemconvStability.OLD) { + attrs[semconv_1.ATTR_NET_PEER_NAME] = host; + if (!isNaN(portNumber)) { + attrs[semconv_1.ATTR_NET_PEER_PORT] = portNumber; + } + } + if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attrs[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host; + if (!isNaN(portNumber)) { + attrs[semantic_conventions_1.ATTR_SERVER_PORT] = portNumber; + } + } + return attrs; +} +exports.getConnectionAttributes = getConnectionAttributes; +function getConfig(config) { + const { host, port, database, user } = (config && config.connectionConfig) || config || {}; + return { host, port, database, user }; +} +function getJDBCString(host, port, database) { + let jdbcString = `jdbc:mysql://${host || 'localhost'}`; + if (typeof port === 'number') { + jdbcString += `:${port}`; + } + if (typeof database === 'string') { + jdbcString += `/${database}`; + } + return jdbcString; +} +/** + * Conjures up the value for the db.query.text attribute by formatting a SQL query. + */ +function getQueryText(query, format, values, maskStatement = false, maskStatementHook = defaultMaskingHook) { + const [querySql, queryValues] = typeof query === 'string' + ? [query, values] + : [query.sql, hasValues(query) ? values || query.values : values]; + try { + if (maskStatement) { + return maskStatementHook(querySql); + } + else if (format && queryValues) { + return format(querySql, queryValues); + } + else { + return querySql; + } + } + catch (e) { + return 'Could not determine the query due to an error in masking or formatting'; + } +} +exports.getQueryText = getQueryText; +/** + * Replaces numeric values and quoted strings in the query with placeholders ('?'). + * + * - `\b\d+\b`: Matches whole numbers (integers) and replaces them with '?'. + * - `(["'])(?:(?=(\\?))\2.)*?\1`: + * - Matches quoted strings (both single `'` and double `"` quotes). + * - Uses a lookahead `(?=(\\?))` to detect an optional backslash without consuming it immediately. + * - Captures the optional backslash `\2` and ensures escaped quotes inside the string are handled correctly. + * - Ensures that only complete quoted strings are replaced with '?'. + * + * This prevents accidental replacement of escaped quotes within strings and ensures that the + * query structure remains intact while masking sensitive data. + */ +function defaultMaskingHook(query) { + return query + .replace(/\b\d+\b/g, '?') + .replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, '?'); +} +function hasValues(obj) { + return 'values' in obj; +} +/** + * The span name SHOULD be set to a low cardinality value + * representing the statement executed on the database. + * + * @returns SQL statement without variable arguments or SQL verb + */ +function getSpanName(query) { + const rawQuery = typeof query === 'object' ? query.sql : query; + // Extract the SQL verb + const firstSpace = rawQuery?.indexOf(' '); + if (typeof firstSpace === 'number' && firstSpace !== -1) { + return rawQuery?.substring(0, firstSpace); + } + return rawQuery; +} +exports.getSpanName = getSpanName; +const once = (fn) => { + let called = false; + return (...args) => { + if (called) + return; + called = true; + return fn(...args); + }; +}; +exports.once = once; +function getConnectionPrototypeToInstrument(connection) { + const connectionPrototype = connection.prototype; + const basePrototype = Object.getPrototypeOf(connectionPrototype); + // mysql2@3.11.5 included a refactoring, where most code was moved out of the `Connection` class and into a shared base + // so we need to instrument that instead, see https://github.com/sidorares/node-mysql2/pull/3081 + // This checks if the functions we're instrumenting are there on the base - we cannot use the presence of a base + // prototype since EventEmitter is the base for mysql2@<=3.11.4 + if (typeof basePrototype?.query === 'function' && + typeof basePrototype?.execute === 'function') { + return basePrototype; + } + // otherwise instrument the connection directly. + return connectionPrototype; +} +exports.getConnectionPrototypeToInstrument = getConnectionPrototypeToInstrument; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.js.map new file mode 100644 index 0000000..137e586 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_NAME,\n ATTR_DB_USER,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n} from './semconv';\nimport type * as mysqlTypes from 'mysql2';\nimport { MySQL2InstrumentationQueryMaskingHook } from './types';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport {\n ATTR_DB_NAMESPACE,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\n\ntype formatType = typeof mysqlTypes.format;\n\n/*\n Following types declare an expectation on mysql2 types and define a subset we\n use in the instrumentation of the types actually defined in mysql2 package\n\n We need to import them here so that the installing party of the instrumentation\n doesn't have to absolutely install the mysql2 package as well - specially\n important for auto-loaders and meta-packages.\n*/\ninterface QueryOptions {\n sql: string;\n values?: any | any[] | { [param: string]: any };\n}\n\ninterface Query {\n sql: string;\n}\n\ninterface Config {\n host?: string;\n port?: number;\n database?: string;\n user?: string;\n connectionConfig?: Config;\n}\n\n/**\n * Get an Attributes map from a mysql connection config object\n *\n * @param config ConnectionConfig\n */\nexport function getConnectionAttributes(\n config: Config,\n dbSemconvStability: SemconvStability,\n netSemconvStability: SemconvStability\n): Attributes {\n const { host, port, database, user } = getConfig(config);\n\n const attrs: Attributes = {};\n if (dbSemconvStability & SemconvStability.OLD) {\n attrs[ATTR_DB_CONNECTION_STRING] = getJDBCString(host, port, database);\n attrs[ATTR_DB_NAME] = database;\n attrs[ATTR_DB_USER] = user;\n }\n if (dbSemconvStability & SemconvStability.STABLE) {\n attrs[ATTR_DB_NAMESPACE] = database;\n }\n\n const portNumber = parseInt(port, 10);\n if (netSemconvStability & SemconvStability.OLD) {\n attrs[ATTR_NET_PEER_NAME] = host;\n if (!isNaN(portNumber)) {\n attrs[ATTR_NET_PEER_PORT] = portNumber;\n }\n }\n if (netSemconvStability & SemconvStability.STABLE) {\n attrs[ATTR_SERVER_ADDRESS] = host;\n if (!isNaN(portNumber)) {\n attrs[ATTR_SERVER_PORT] = portNumber;\n }\n }\n\n return attrs;\n}\n\nfunction getConfig(config: any) {\n const { host, port, database, user } =\n (config && config.connectionConfig) || config || {};\n return { host, port, database, user };\n}\n\nfunction getJDBCString(\n host: string | undefined,\n port: number | undefined,\n database: string | undefined\n) {\n let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n if (typeof port === 'number') {\n jdbcString += `:${port}`;\n }\n\n if (typeof database === 'string') {\n jdbcString += `/${database}`;\n }\n\n return jdbcString;\n}\n\n/**\n * Conjures up the value for the db.query.text attribute by formatting a SQL query.\n */\nexport function getQueryText(\n query: string | Query | QueryOptions,\n format?: formatType,\n values?: any[],\n maskStatement = false,\n maskStatementHook: MySQL2InstrumentationQueryMaskingHook = defaultMaskingHook\n): string {\n const [querySql, queryValues] =\n 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 } else if (format && queryValues) {\n return format(querySql, queryValues);\n } else {\n return querySql;\n }\n } catch (e) {\n return 'Could not determine the query due to an error in masking or formatting';\n }\n}\n\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: string): string {\n return query\n .replace(/\\b\\d+\\b/g, '?')\n .replace(/([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g, '?');\n}\n\nfunction hasValues(obj: Query | QueryOptions): obj is QueryOptions {\n return 'values' in obj;\n}\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 */\nexport function getSpanName(query: string | Query | QueryOptions): string {\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}\n\nexport const once = (fn: Function) => {\n let called = false;\n return (...args: unknown[]) => {\n if (called) return;\n called = true;\n return fn(...args);\n };\n};\n\nexport function getConnectionPrototypeToInstrument(connection: any) {\n const connectionPrototype = connection.prototype;\n const basePrototype = Object.getPrototypeOf(connectionPrototype);\n\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 (\n typeof basePrototype?.query === 'function' &&\n typeof basePrototype?.execute === 'function'\n ) {\n return basePrototype;\n }\n\n // otherwise instrument the connection directly.\n return connectionPrototype;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.d.ts new file mode 100644 index 0000000..f4b84e7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.57.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-mysql2"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.js new file mode 100644 index 0000000..40b81ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.57.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-mysql2'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.js.map new file mode 100644 index 0000000..a399eba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,uCAAuC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.57.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mysql2';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/package.json new file mode 100644 index 0000000..e60d35d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-mysql2/package.json @@ -0,0 +1,65 @@ +{ + "name": "@opentelemetry/instrumentation-mysql2", + "version": "0.57.0", + "description": "OpenTelemetry instrumentation for `mysql2` database client for MySQL", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-mysql2" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-mysql2", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-services:start": "cd ../.. && npm run test-services:start mysql", + "test-services:stop": "cd ../.. && npm run test-services:stop mysql", + "version:update": "node ../../scripts/version-update.js" + }, + "keywords": [ + "instrumentation", + "mysql", + "mysql2", + "nodejs", + "opentelemetry", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "mysql2": "3.11.5" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.33.0", + "@opentelemetry/sql-common": "^0.41.2" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-mysql2#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/README.md new file mode 100644 index 0000000..50af8c3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/README.md @@ -0,0 +1,123 @@ +# OpenTelemetry Postgres Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`pg`](https://github.com/brianc/node-postgres)module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-pg +``` + +### Supported Versions + +- [`pg`](https://www.npmjs.com/package/pg) versions `>=8.0.3 <9` +- [`pg-pool`](https://www.npmjs.com/package/pg-pool) versions `>=2.0.0 <4` + +## Usage + +```js +const { PgInstrumentation } = require('@opentelemetry/instrumentation-pg'); +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new PgInstrumentation(), + ], +}); +``` + +PgInstrumentation contains both pg and [`pg.Pool`](https://node-postgres.com/api/pool) so it will be instrumented automatically. + +### Span Types Created + +This instrumentation creates the following span types: + +| Span Name | Description | When Created | +| --------- | ----------- | ------------ | +| `pg.query: ` | Database query execution | When `client.query()` is called | +| `pg.connect` | Client connection to database | When `new Client().connect()` is called directly | +| `pg-pool.connect` | Pool connection acquisition wait time | When acquiring a connection from `pg-pool` | + +The `pg-pool.connect` spans measure the time spent waiting to acquire a connection from the pool. This can be valuable for identifying connection pool exhaustion or sizing issues. However, in high-throughput scenarios where connections are readily available, these spans may add noise with minimal diagnostic value. Consider using the `requireParentSpan` option or sampling strategies if pool connect spans become excessive. + +### PostgreSQL Instrumentation Options + +PostgreSQL instrumentation has few options available to choose from. You can set the following: + +| Options | Type | Description | +| ------- | ---- | ----------- | +| [`enhancedDatabaseReporting`](./src/types.ts#L30) | `boolean` | If true, additional information about query parameters and results will be attached (as `attributes`) to spans representing database operations | +| `requestHook` | `PgInstrumentationExecutionRequestHook` (function) | Function for adding custom span attributes using information about the query being issued and the db to which it's directed | +| `responseHook` | `PgInstrumentationExecutionResponseHook` (function) | Function for adding custom span attributes from db response | +| `requireParentSpan` | `boolean` | If true, requires a parent span to create new spans (default false) | +| `addSqlCommenterCommentToQueries` | `boolean` | If true, adds [sqlcommenter](https://github.com/open-telemetry/opentelemetry-sqlcommenter) specification compliant comment to queries with tracing context (default false). _NOTE: A comment will not be added to queries that already contain `--` or `/* ... */` in them, even if these are not actually part of comments_ | +| `ignoreConnectSpans` | `boolean` | If true, `pg.connect` and `pg-pool.connect` spans will not be created. Query spans and pool metrics are still recorded (default false) | + +## Semantic Conventions + +Prior to version `0.55.0`, this instrumentation created spans and metrics targeting an experimental semantic convention Version 1.27.0. + +Database semantic conventions (semconv) were stabilized in v1.34.0, and a [migration process](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/non-normative/db-migration.md) was defined. +`@opentelemetry/instrumentation-pg` versions 0.55.0 and later include support for migrating to stable Database semantic conventions, as described below. +The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new Database semconv, after which a new minor version will use the new semconv by default and drop support for the old semconv. + +To select which semconv version(s) is emitted from this instrumentation, use the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable. + +- `database`: emit the new (stable) v1.34.0+ semantics +- `database/dup`: emit **both** the old v1.27.0 and the new (stable) v1.34.0+ semantics +- By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` includes neither of the above tokens, the old v1.27.0 semconv is used. + +### Attributes collected + +| v1.27.0 semconv | v1.34.0 semconv | Short Description | +| ----------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------ | +| `db.connection_string` | Removed | String used to connect to the database | +| `db.user` | Removed | User used to connect to the database | +| `db.name` | Removed, integrated into the new `db.namespace` | The name of the database. | +| (not included) | `db.namespace` | The name of the database, fully qualified within the server address and port. | +| `db.statement` | `db.query.text` | The database query being executed. | +| `db.system` | `db.system.name` | The database management system (DBMS) product as identified by the client instrumentation. | +| `net.peer.port` | `server.port` | Remote port number. | +| `net.peer.name` | `server.address` | Remote hostname or similar. | + +Metrics Exported: + +- [`db.client.operation.duration`](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-metrics.md#metric-dbclientoperationduration) + +### Upgrading Semantic Conventions + +When upgrading to the new semantic conventions, it is recommended to do so in the following order: + +1. Upgrade `@opentelemetry/opentelemetry-instrumentation-pg` to the latest version +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=database/dup` to emit both old and new semantic conventions +3. Modify alerts, dashboards, metrics, and other processes to expect the new semantic conventions +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=database` to emit only the new semantic conventions + +This will cause both the old and new semantic conventions to be emitted during the transition period. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-pg +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-pg.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.d.ts new file mode 100644 index 0000000..c49e820 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.d.ts @@ -0,0 +1,7 @@ +export declare enum AttributeNames { + PG_VALUES = "db.postgresql.values", + PG_PLAN = "db.postgresql.plan", + IDLE_TIMEOUT_MILLIS = "db.postgresql.idle.timeout.millis", + MAX_CLIENT = "db.postgresql.max.client" +} +//# sourceMappingURL=AttributeNames.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js new file mode 100644 index 0000000..53d64a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttributeNames = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Postgresql specific attributes not covered by semantic conventions +var AttributeNames; +(function (AttributeNames) { + AttributeNames["PG_VALUES"] = "db.postgresql.values"; + AttributeNames["PG_PLAN"] = "db.postgresql.plan"; + AttributeNames["IDLE_TIMEOUT_MILLIS"] = "db.postgresql.idle.timeout.millis"; + AttributeNames["MAX_CLIENT"] = "db.postgresql.max.client"; +})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {})); +//# sourceMappingURL=AttributeNames.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js.map new file mode 100644 index 0000000..b173fd2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AttributeNames.js","sourceRoot":"","sources":["../../../src/enums/AttributeNames.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,qEAAqE;AACrE,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,oDAAkC,CAAA;IAClC,gDAA8B,CAAA;IAC9B,2EAAyD,CAAA;IACzD,yDAAuC,CAAA;AACzC,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum AttributeNames {\n PG_VALUES = 'db.postgresql.values',\n PG_PLAN = 'db.postgresql.plan',\n IDLE_TIMEOUT_MILLIS = 'db.postgresql.idle.timeout.millis',\n MAX_CLIENT = 'db.postgresql.max.client',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.d.ts new file mode 100644 index 0000000..00a48f8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.d.ts @@ -0,0 +1,6 @@ +export declare enum SpanNames { + QUERY_PREFIX = "pg.query", + CONNECT = "pg.connect", + POOL_CONNECT = "pg-pool.connect" +} +//# sourceMappingURL=SpanNames.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js new file mode 100644 index 0000000..c8ef865 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SpanNames = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Contains span names produced by instrumentation +var SpanNames; +(function (SpanNames) { + SpanNames["QUERY_PREFIX"] = "pg.query"; + SpanNames["CONNECT"] = "pg.connect"; + SpanNames["POOL_CONNECT"] = "pg-pool.connect"; +})(SpanNames = exports.SpanNames || (exports.SpanNames = {})); +//# sourceMappingURL=SpanNames.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js.map new file mode 100644 index 0000000..89fb5e8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SpanNames.js","sourceRoot":"","sources":["../../../src/enums/SpanNames.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,kDAAkD;AAClD,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,sCAAyB,CAAA;IACzB,mCAAsB,CAAA;IACtB,6CAAgC,CAAA;AAClC,CAAC,EAJW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAIpB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum SpanNames {\n QUERY_PREFIX = 'pg.query',\n CONNECT = 'pg.connect',\n POOL_CONNECT = 'pg-pool.connect',\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/index.d.ts new file mode 100644 index 0000000..8dc7480 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/index.d.ts @@ -0,0 +1,4 @@ +export { PgInstrumentation } from './instrumentation'; +export { AttributeNames } from './enums/AttributeNames'; +export type { PgInstrumentationConfig, PgInstrumentationExecutionRequestHook, PgInstrumentationExecutionResponseHook, PgRequestHookInformation, PgResponseHookInformation, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/index.js new file mode 100644 index 0000000..c5b3ae1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/index.js @@ -0,0 +1,23 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttributeNames = exports.PgInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "PgInstrumentation", { enumerable: true, get: function () { return instrumentation_1.PgInstrumentation; } }); +var AttributeNames_1 = require("./enums/AttributeNames"); +Object.defineProperty(exports, "AttributeNames", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/index.js.map new file mode 100644 index 0000000..be1f27d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAsD;AAA7C,oHAAA,iBAAiB,OAAA;AAC1B,yDAAwD;AAA/C,gHAAA,cAAc,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { PgInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\nexport type {\n PgInstrumentationConfig,\n PgInstrumentationExecutionRequestHook,\n PgInstrumentationExecutionResponseHook,\n PgRequestHookInformation,\n PgResponseHookInformation,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.d.ts new file mode 100644 index 0000000..8736ddb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.d.ts @@ -0,0 +1,20 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { PgInstrumentationConfig } from './types'; +export declare class PgInstrumentation extends InstrumentationBase { + private _operationDuration; + private _connectionsCount; + private _connectionPendingRequests; + private _connectionsCounter; + private _semconvStability; + constructor(config?: PgInstrumentationConfig); + _updateMetricInstruments(): void; + protected init(): InstrumentationNodeModuleDefinition[]; + private _patchPgClient; + private _unpatchPgClient; + private _getClientConnectPatch; + private recordOperationDuration; + private _getClientQueryPatch; + private _setPoolConnectEventListeners; + private _getPoolConnectPatch; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js new file mode 100644 index 0000000..44ee95c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js @@ -0,0 +1,428 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PgInstrumentation = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const api_1 = require("@opentelemetry/api"); +const internal_types_1 = require("./internal-types"); +const utils = require("./utils"); +const sql_common_1 = require("@opentelemetry/sql-common"); +/** @knipignore */ +const version_1 = require("./version"); +const SpanNames_1 = require("./enums/SpanNames"); +const core_1 = require("@opentelemetry/core"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +function extractModuleExports(module) { + return module[Symbol.toStringTag] === 'Module' + ? module.default // ESM + : module; // CommonJS +} +class PgInstrumentation extends instrumentation_1.InstrumentationBase { + // Pool events connect, acquire, release and remove can be called + // multiple times without changing the values of total, idle and waiting + // connections. The _connectionsCounter is used to keep track of latest + // values and only update the metrics _connectionsCount and _connectionPendingRequests + // when the value change. + _connectionsCounter = { + used: 0, + idle: 0, + pending: 0, + }; + _semconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + _updateMetricInstruments() { + this._operationDuration = this.meter.createHistogram(semantic_conventions_1.METRIC_DB_CLIENT_OPERATION_DURATION, { + description: 'Duration of database client operations.', + unit: 's', + valueType: api_1.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(semconv_1.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(semconv_1.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS, { + description: 'The number of current pending requests for an open connection.', + unit: '{connection}', + }); + } + init() { + const SUPPORTED_PG_VERSIONS = ['>=8.0.3 <9']; + const SUPPORTED_PG_POOL_VERSIONS = ['>=2.0.0 <4']; + const modulePgNativeClient = new instrumentation_1.InstrumentationNodeModuleFile('pg/lib/native/client.js', SUPPORTED_PG_VERSIONS, this._patchPgClient.bind(this), this._unpatchPgClient.bind(this)); + const modulePgClient = new instrumentation_1.InstrumentationNodeModuleFile('pg/lib/client.js', SUPPORTED_PG_VERSIONS, this._patchPgClient.bind(this), this._unpatchPgClient.bind(this)); + const modulePG = new instrumentation_1.InstrumentationNodeModuleDefinition('pg', SUPPORTED_PG_VERSIONS, (module) => { + const moduleExports = extractModuleExports(module); + this._patchPgClient(moduleExports.Client); + return module; + }, (module) => { + const moduleExports = extractModuleExports(module); + this._unpatchPgClient(moduleExports.Client); + return module; + }, [modulePgClient, modulePgNativeClient]); + const modulePGPool = new instrumentation_1.InstrumentationNodeModuleDefinition('pg-pool', SUPPORTED_PG_POOL_VERSIONS, (module) => { + const moduleExports = extractModuleExports(module); + if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) { + this._unwrap(moduleExports.prototype, 'connect'); + } + this._wrap(moduleExports.prototype, 'connect', this._getPoolConnectPatch()); + return moduleExports; + }, (module) => { + const moduleExports = extractModuleExports(module); + if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) { + this._unwrap(moduleExports.prototype, 'connect'); + } + }); + return [modulePG, modulePGPool]; + } + _patchPgClient(module) { + if (!module) { + return; + } + const moduleExports = extractModuleExports(module); + if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.query)) { + this._unwrap(moduleExports.prototype, 'query'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) { + this._unwrap(moduleExports.prototype, 'connect'); + } + this._wrap(moduleExports.prototype, 'query', this._getClientQueryPatch()); + this._wrap(moduleExports.prototype, 'connect', this._getClientConnectPatch()); + return module; + } + _unpatchPgClient(module) { + const moduleExports = extractModuleExports(module); + if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.query)) { + this._unwrap(moduleExports.prototype, 'query'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) { + this._unwrap(moduleExports.prototype, 'connect'); + } + return module; + } + _getClientConnectPatch() { + const plugin = this; + return (original) => { + return function connect(callback) { + const config = plugin.getConfig(); + if (utils.shouldSkipInstrumentation(config) || + config.ignoreConnectSpans) { + return original.call(this, callback); + } + const span = plugin.tracer.startSpan(SpanNames_1.SpanNames.CONNECT, { + kind: api_1.SpanKind.CLIENT, + attributes: utils.getSemanticAttributesFromConnection(this, plugin._semconvStability), + }); + if (callback) { + const parentSpan = api_1.trace.getSpan(api_1.context.active()); + callback = utils.patchClientConnectCallback(span, callback); + if (parentSpan) { + callback = api_1.context.bind(api_1.context.active(), callback); + } + } + const connectResult = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => { + return original.call(this, callback); + }); + return handleConnectResult(span, connectResult); + }; + }; + } + recordOperationDuration(attributes, startTime) { + const metricsAttributes = {}; + const keysToCopy = [ + semantic_conventions_1.ATTR_DB_NAMESPACE, + semantic_conventions_1.ATTR_ERROR_TYPE, + semantic_conventions_1.ATTR_SERVER_PORT, + semantic_conventions_1.ATTR_SERVER_ADDRESS, + semantic_conventions_1.ATTR_DB_OPERATION_NAME, + ]; + if (this._semconvStability & instrumentation_1.SemconvStability.OLD) { + keysToCopy.push(semconv_1.ATTR_DB_SYSTEM); + } + if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) { + keysToCopy.push(semantic_conventions_1.ATTR_DB_SYSTEM_NAME); + } + keysToCopy.forEach(key => { + if (key in attributes) { + metricsAttributes[key] = attributes[key]; + } + }); + const durationSeconds = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)())) / 1000; + this._operationDuration.record(durationSeconds, metricsAttributes); + } + _getClientQueryPatch() { + const plugin = this; + return (original) => { + this._diag.debug('Patching pg.Client.prototype.query'); + return function query(...args) { + if (utils.shouldSkipInstrumentation(plugin.getConfig())) { + return original.apply(this, args); + } + const startTime = (0, core_1.hrTime)(); + // client.query(text, cb?), client.query(text, values, cb?), and + // client.query(configObj, cb?) are all valid signatures. We construct + // a queryConfig obj from all (valid) signatures to build the span in a + // unified way. We verify that we at least have query text, and code + // defensively when dealing with `queryConfig` after that (to handle all + // the other invalid cases, like a non-array for values being provided). + // The type casts here reflect only what we've actually validated. + const arg0 = args[0]; + const firstArgIsString = typeof arg0 === 'string'; + const firstArgIsQueryObjectWithText = utils.isObjectWithTextString(arg0); + // TODO: remove the `as ...` casts below when the TS version is upgraded. + // Newer TS versions will use the result of firstArgIsQueryObjectWithText + // to properly narrow arg0, but TS 4.3.5 does not. + const queryConfig = firstArgIsString + ? { + text: arg0, + values: Array.isArray(args[1]) ? args[1] : undefined, + } + : firstArgIsQueryObjectWithText + ? { + ...arg0, + name: arg0.name, + text: arg0.text, + values: arg0.values ?? + (Array.isArray(args[1]) ? args[1] : undefined), + } + : undefined; + const attributes = { + [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL, + [semantic_conventions_1.ATTR_DB_NAMESPACE]: this.database, + [semantic_conventions_1.ATTR_SERVER_PORT]: this.connectionParameters.port, + [semantic_conventions_1.ATTR_SERVER_ADDRESS]: this.connectionParameters.host, + }; + if (queryConfig?.text) { + attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = + utils.parseNormalizedOperationName(queryConfig?.text); + } + const recordDuration = () => { + plugin.recordOperationDuration(attributes, startTime); + }; + const instrumentationConfig = plugin.getConfig(); + const span = utils.handleConfigQuery.call(this, plugin.tracer, instrumentationConfig, plugin._semconvStability, queryConfig); + // Modify query text w/ a tracing comment before invoking original for + // tracing, but only if args[0] has one of our expected shapes. + if (instrumentationConfig.addSqlCommenterCommentToQueries) { + if (firstArgIsString) { + args[0] = (0, sql_common_1.addSqlCommenterComment)(span, arg0); + } + else if (firstArgIsQueryObjectWithText && !('name' in arg0)) { + // In the case of a query object, we need to ensure there's no name field + // as this indicates a prepared query, where the comment would remain the same + // for every invocation and contain an outdated trace context. + args[0] = { + ...arg0, + text: (0, sql_common_1.addSqlCommenterComment)(span, arg0.text), + }; + } + } + // Bind callback (if any) to parent span (if any) + if (args.length > 0) { + const parentSpan = api_1.trace.getSpan(api_1.context.active()); + if (typeof args[args.length - 1] === 'function') { + // Patch ParameterQuery callback + args[args.length - 1] = utils.patchCallback(instrumentationConfig, span, args[args.length - 1], // nb: not type safe. + attributes, recordDuration); + // If a parent span exists, bind the callback + if (parentSpan) { + args[args.length - 1] = api_1.context.bind(api_1.context.active(), args[args.length - 1]); + } + } + else if (typeof queryConfig?.callback === 'function') { + // Patch ConfigQuery callback + let callback = utils.patchCallback(plugin.getConfig(), span, queryConfig.callback, // nb: not type safe. + attributes, recordDuration); + // If a parent span existed, bind the callback + if (parentSpan) { + callback = api_1.context.bind(api_1.context.active(), callback); + } + args[0].callback = callback; + } + } + const { requestHook } = instrumentationConfig; + if (typeof requestHook === 'function' && queryConfig) { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + // pick keys to expose explicitly, so we're not leaking pg package + // internals that are subject to change + const { database, host, port, user } = this.connectionParameters; + const connection = { database, host, port, user }; + requestHook(span, { + connection, + query: { + text: queryConfig.text, + // nb: if `client.query` is called with illegal arguments + // (e.g., if `queryConfig.values` is passed explicitly, but a + // non-array is given), then the type casts will be wrong. But + // we leave it up to the queryHook to handle that, and we + // catch and swallow any errors it throws. The other options + // are all worse. E.g., we could leave `queryConfig.values` + // and `queryConfig.name` as `unknown`, but then the hook body + // would be forced to validate (or cast) them before using + // them, which seems incredibly cumbersome given that these + // casts will be correct 99.9% of the time -- and pg.query + // will immediately throw during development in the other .1% + // of cases. Alternatively, we could simply skip calling the + // hook when `values` or `name` don't have the expected type, + // but that would add unnecessary validation overhead to every + // hook invocation and possibly be even more confusing/unexpected. + values: queryConfig.values, + name: queryConfig.name, + }, + }); + }, err => { + if (err) { + plugin._diag.error('Error running query hook', err); + } + }, true); + } + let result; + try { + result = original.apply(this, args); + } + catch (e) { + if (e instanceof Error) { + span.recordException(utils.sanitizedErrorMessage(e)); + } + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: utils.getErrorMessage(e), + }); + span.end(); + throw e; + } + // Bind promise to parent span and end the span + if (result instanceof Promise) { + return result + .then((result) => { + // Return a pass-along promise which ends the span and then goes to user's orig resolvers + return new Promise(resolve => { + utils.handleExecutionResult(plugin.getConfig(), span, result); + recordDuration(); + span.end(); + resolve(result); + }); + }) + .catch((error) => { + return new Promise((_, reject) => { + if (error instanceof Error) { + span.recordException(utils.sanitizedErrorMessage(error)); + } + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: error.message, + }); + recordDuration(); + span.end(); + reject(error); + }); + }); + } + // else returns void + return result; // void + }; + }; + } + _setPoolConnectEventListeners(pgPool) { + if (pgPool[internal_types_1.EVENT_LISTENERS_SET]) + return; + const poolName = utils.getPoolName(pgPool.options); + pgPool.on('connect', () => { + this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter); + }); + pgPool.on('acquire', () => { + this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter); + }); + pgPool.on('remove', () => { + this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter); + }); + pgPool.on('release', () => { + this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter); + }); + pgPool[internal_types_1.EVENT_LISTENERS_SET] = true; + } + _getPoolConnectPatch() { + const plugin = this; + return (originalConnect) => { + return function connect(callback) { + const config = plugin.getConfig(); + if (utils.shouldSkipInstrumentation(config)) { + return originalConnect.call(this, callback); + } + // Still set up event listeners for metrics even when skipping spans + plugin._setPoolConnectEventListeners(this); + if (config.ignoreConnectSpans) { + return originalConnect.call(this, callback); + } + // setup span + const span = plugin.tracer.startSpan(SpanNames_1.SpanNames.POOL_CONNECT, { + kind: api_1.SpanKind.CLIENT, + attributes: utils.getSemanticAttributesFromPoolConnection(this.options, plugin._semconvStability), + }); + if (callback) { + const parentSpan = api_1.trace.getSpan(api_1.context.active()); + callback = utils.patchCallbackPGPool(span, callback); + // If a parent span exists, bind the callback + if (parentSpan) { + callback = api_1.context.bind(api_1.context.active(), callback); + } + } + const connectResult = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => { + return originalConnect.call(this, callback); + }); + return handleConnectResult(span, connectResult); + }; + }; + } +} +exports.PgInstrumentation = PgInstrumentation; +function handleConnectResult(span, connectResult) { + if (!(connectResult instanceof Promise)) { + return connectResult; + } + const connectResultPromise = connectResult; + return api_1.context.bind(api_1.context.active(), connectResultPromise + .then(result => { + span.end(); + return result; + }) + .catch((error) => { + if (error instanceof Error) { + span.recordException(utils.sanitizedErrorMessage(error)); + } + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: utils.getErrorMessage(error), + }); + span.end(); + return Promise.reject(error); + })); +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js.map new file mode 100644 index 0000000..0f7ddff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n isWrapped,\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n safeExecuteInTheMiddle,\n InstrumentationNodeModuleFile,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n context,\n trace,\n Span,\n SpanStatusCode,\n SpanKind,\n Histogram,\n ValueType,\n Attributes,\n HrTime,\n UpDownCounter,\n} from '@opentelemetry/api';\nimport type * as pgTypes from 'pg';\nimport type * as pgPoolTypes from 'pg-pool';\nimport {\n PgClientConnect,\n PgClientExtended,\n PostgresCallback,\n PgPoolExtended,\n PgPoolCallback,\n EVENT_LISTENERS_SET,\n} from './internal-types';\nimport { PgInstrumentationConfig } from './types';\nimport * as utils from './utils';\nimport { addSqlCommenterComment } from '@opentelemetry/sql-common';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { SpanNames } from './enums/SpanNames';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_SERVER_PORT,\n ATTR_SERVER_ADDRESS,\n ATTR_DB_NAMESPACE,\n ATTR_DB_OPERATION_NAME,\n ATTR_DB_SYSTEM_NAME,\n METRIC_DB_CLIENT_OPERATION_DURATION,\n} from '@opentelemetry/semantic-conventions';\nimport {\n METRIC_DB_CLIENT_CONNECTION_COUNT,\n METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,\n ATTR_DB_SYSTEM,\n DB_SYSTEM_VALUE_POSTGRESQL,\n} from './semconv';\n\nfunction extractModuleExports(module: any) {\n return module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n}\n\nexport class PgInstrumentation extends InstrumentationBase {\n declare private _operationDuration: Histogram;\n declare private _connectionsCount: UpDownCounter;\n declare private _connectionPendingRequests: UpDownCounter;\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 private _connectionsCounter: utils.poolConnectionsCounter = {\n used: 0,\n idle: 0,\n pending: 0,\n };\n private _semconvStability: SemconvStability;\n\n constructor(config: PgInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n this._semconvStability = semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n override _updateMetricInstruments() {\n this._operationDuration = this.meter.createHistogram(\n METRIC_DB_CLIENT_OPERATION_DURATION,\n {\n description: 'Duration of database client operations.',\n unit: 's',\n valueType: 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 );\n\n this._connectionsCounter = {\n idle: 0,\n pending: 0,\n used: 0,\n };\n this._connectionsCount = this.meter.createUpDownCounter(\n METRIC_DB_CLIENT_CONNECTION_COUNT,\n {\n description:\n 'The number of connections that are currently in state described by the state attribute.',\n unit: '{connection}',\n }\n );\n this._connectionPendingRequests = this.meter.createUpDownCounter(\n METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,\n {\n description:\n 'The number of current pending requests for an open connection.',\n unit: '{connection}',\n }\n );\n }\n\n protected init() {\n const SUPPORTED_PG_VERSIONS = ['>=8.0.3 <9'];\n const SUPPORTED_PG_POOL_VERSIONS = ['>=2.0.0 <4'];\n\n const modulePgNativeClient = new InstrumentationNodeModuleFile(\n 'pg/lib/native/client.js',\n SUPPORTED_PG_VERSIONS,\n this._patchPgClient.bind(this),\n this._unpatchPgClient.bind(this)\n );\n\n const modulePgClient = new InstrumentationNodeModuleFile(\n 'pg/lib/client.js',\n SUPPORTED_PG_VERSIONS,\n this._patchPgClient.bind(this),\n this._unpatchPgClient.bind(this)\n );\n\n const modulePG = new InstrumentationNodeModuleDefinition(\n 'pg',\n SUPPORTED_PG_VERSIONS,\n (module: any) => {\n const moduleExports = extractModuleExports(module);\n\n this._patchPgClient(moduleExports.Client);\n return module;\n },\n (module: any) => {\n const moduleExports = extractModuleExports(module);\n\n this._unpatchPgClient(moduleExports.Client);\n return module;\n },\n [modulePgClient, modulePgNativeClient]\n );\n\n const modulePGPool = new InstrumentationNodeModuleDefinition(\n 'pg-pool',\n SUPPORTED_PG_POOL_VERSIONS,\n (module: any) => {\n const moduleExports = extractModuleExports(module);\n if (isWrapped(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n this._wrap(\n moduleExports.prototype,\n 'connect',\n this._getPoolConnectPatch() as any\n );\n return moduleExports;\n },\n (module: any) => {\n const moduleExports = extractModuleExports(module);\n if (isWrapped(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n }\n );\n\n return [modulePG, modulePGPool];\n }\n\n private _patchPgClient(module: any) {\n if (!module) {\n return;\n }\n\n const moduleExports = extractModuleExports(module);\n\n if (isWrapped(moduleExports.prototype.query)) {\n this._unwrap(moduleExports.prototype, 'query');\n }\n\n if (isWrapped(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n\n this._wrap(\n moduleExports.prototype,\n 'query',\n this._getClientQueryPatch() as any\n );\n\n this._wrap(\n moduleExports.prototype,\n 'connect',\n this._getClientConnectPatch() as any\n );\n\n return module;\n }\n\n private _unpatchPgClient(module: any) {\n const moduleExports = extractModuleExports(module);\n\n if (isWrapped(moduleExports.prototype.query)) {\n this._unwrap(moduleExports.prototype, 'query');\n }\n\n if (isWrapped(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n\n return module;\n }\n\n private _getClientConnectPatch() {\n const plugin = this;\n return (original: PgClientConnect) => {\n return function connect(this: pgTypes.Client, callback?: Function) {\n const config = plugin.getConfig();\n\n if (\n utils.shouldSkipInstrumentation(config) ||\n config.ignoreConnectSpans\n ) {\n return original.call(this, callback);\n }\n\n const span = plugin.tracer.startSpan(SpanNames.CONNECT, {\n kind: SpanKind.CLIENT,\n attributes: utils.getSemanticAttributesFromConnection(\n this,\n plugin._semconvStability\n ),\n });\n\n if (callback) {\n const parentSpan = trace.getSpan(context.active());\n callback = utils.patchClientConnectCallback(span, callback);\n if (parentSpan) {\n callback = context.bind(context.active(), callback);\n }\n }\n\n const connectResult: unknown = context.with(\n trace.setSpan(context.active(), span),\n () => {\n return original.call(this, callback);\n }\n );\n\n return handleConnectResult(span, connectResult);\n };\n };\n }\n\n private recordOperationDuration(attributes: Attributes, startTime: HrTime) {\n const metricsAttributes: Attributes = {};\n const keysToCopy: string[] = [\n ATTR_DB_NAMESPACE,\n ATTR_ERROR_TYPE,\n ATTR_SERVER_PORT,\n ATTR_SERVER_ADDRESS,\n ATTR_DB_OPERATION_NAME,\n ];\n if (this._semconvStability & SemconvStability.OLD) {\n keysToCopy.push(ATTR_DB_SYSTEM);\n }\n if (this._semconvStability & SemconvStability.STABLE) {\n keysToCopy.push(ATTR_DB_SYSTEM_NAME);\n }\n\n keysToCopy.forEach(key => {\n if (key in attributes) {\n metricsAttributes[key] = attributes[key];\n }\n });\n\n const durationSeconds =\n hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime())) / 1000;\n this._operationDuration.record(durationSeconds, metricsAttributes);\n }\n\n private _getClientQueryPatch() {\n const plugin = this;\n return (original: typeof pgTypes.Client.prototype.query) => {\n this._diag.debug('Patching pg.Client.prototype.query');\n return function query(this: PgClientExtended, ...args: unknown[]) {\n if (utils.shouldSkipInstrumentation(plugin.getConfig())) {\n return original.apply(this, args as never);\n }\n const startTime = hrTime();\n\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 =\n utils.isObjectWithTextString(arg0);\n\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 as string,\n values: Array.isArray(args[1]) ? args[1] : undefined,\n }\n : firstArgIsQueryObjectWithText\n ? {\n ...(arg0 as any),\n name: arg0.name,\n text: arg0.text,\n values:\n (arg0 as any).values ??\n (Array.isArray(args[1]) ? args[1] : undefined),\n }\n : undefined;\n\n const attributes: Attributes = {\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n [ATTR_DB_NAMESPACE]: this.database,\n [ATTR_SERVER_PORT]: this.connectionParameters.port,\n [ATTR_SERVER_ADDRESS]: this.connectionParameters.host,\n };\n\n if (queryConfig?.text) {\n attributes[ATTR_DB_OPERATION_NAME] =\n utils.parseNormalizedOperationName(queryConfig?.text);\n }\n\n const recordDuration = () => {\n plugin.recordOperationDuration(attributes, startTime);\n };\n\n const instrumentationConfig = plugin.getConfig();\n\n const span = utils.handleConfigQuery.call(\n this,\n plugin.tracer,\n instrumentationConfig,\n plugin._semconvStability,\n queryConfig\n );\n\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] = addSqlCommenterComment(span, arg0);\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: addSqlCommenterComment(span, arg0.text),\n };\n }\n }\n\n // Bind callback (if any) to parent span (if any)\n if (args.length > 0) {\n const parentSpan = trace.getSpan(context.active());\n if (typeof args[args.length - 1] === 'function') {\n // Patch ParameterQuery callback\n args[args.length - 1] = utils.patchCallback(\n instrumentationConfig,\n span,\n args[args.length - 1] as PostgresCallback, // nb: not type safe.\n attributes,\n recordDuration\n );\n\n // If a parent span exists, bind the callback\n if (parentSpan) {\n args[args.length - 1] = context.bind(\n context.active(),\n args[args.length - 1]\n );\n }\n } else if (typeof queryConfig?.callback === 'function') {\n // Patch ConfigQuery callback\n let callback = utils.patchCallback(\n plugin.getConfig(),\n span,\n queryConfig.callback as PostgresCallback, // nb: not type safe.\n attributes,\n recordDuration\n );\n\n // If a parent span existed, bind the callback\n if (parentSpan) {\n callback = context.bind(context.active(), callback);\n }\n\n (args[0] as { callback?: PostgresCallback }).callback = callback;\n }\n }\n\n const { requestHook } = instrumentationConfig;\n if (typeof requestHook === 'function' && queryConfig) {\n safeExecuteInTheMiddle(\n () => {\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\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 as unknown[],\n name: queryConfig.name as string | undefined,\n },\n });\n },\n err => {\n if (err) {\n plugin._diag.error('Error running query hook', err);\n }\n },\n true\n );\n }\n\n let result: unknown;\n try {\n result = original.apply(this, args as never);\n } catch (e: unknown) {\n if (e instanceof Error) {\n span.recordException(utils.sanitizedErrorMessage(e));\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: utils.getErrorMessage(e),\n });\n span.end();\n throw e;\n }\n\n // Bind promise to parent span and end the span\n if (result instanceof Promise) {\n return result\n .then((result: unknown) => {\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: Error) => {\n return new Promise((_, reject) => {\n if (error instanceof Error) {\n span.recordException(utils.sanitizedErrorMessage(error));\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n recordDuration();\n span.end();\n reject(error);\n });\n });\n }\n\n // else returns void\n return result; // void\n };\n };\n }\n\n private _setPoolConnectEventListeners(pgPool: PgPoolExtended) {\n if (pgPool[EVENT_LISTENERS_SET]) return;\n const poolName = utils.getPoolName(pgPool.options);\n\n pgPool.on('connect', () => {\n this._connectionsCounter = utils.updateCounter(\n poolName,\n pgPool,\n this._connectionsCount,\n this._connectionPendingRequests,\n this._connectionsCounter\n );\n });\n\n pgPool.on('acquire', () => {\n this._connectionsCounter = utils.updateCounter(\n poolName,\n pgPool,\n this._connectionsCount,\n this._connectionPendingRequests,\n this._connectionsCounter\n );\n });\n\n pgPool.on('remove', () => {\n this._connectionsCounter = utils.updateCounter(\n poolName,\n pgPool,\n this._connectionsCount,\n this._connectionPendingRequests,\n this._connectionsCounter\n );\n });\n\n pgPool.on('release' as any, () => {\n this._connectionsCounter = utils.updateCounter(\n poolName,\n pgPool,\n this._connectionsCount,\n this._connectionPendingRequests,\n this._connectionsCounter\n );\n });\n pgPool[EVENT_LISTENERS_SET] = true;\n }\n\n private _getPoolConnectPatch() {\n const plugin = this;\n return (originalConnect: typeof pgPoolTypes.prototype.connect) => {\n return function connect(this: PgPoolExtended, callback?: PgPoolCallback) {\n const config = plugin.getConfig();\n\n if (utils.shouldSkipInstrumentation(config)) {\n return originalConnect.call(this, callback as any);\n }\n\n // Still set up event listeners for metrics even when skipping spans\n plugin._setPoolConnectEventListeners(this);\n\n if (config.ignoreConnectSpans) {\n return originalConnect.call(this, callback as any);\n }\n\n // setup span\n const span = plugin.tracer.startSpan(SpanNames.POOL_CONNECT, {\n kind: SpanKind.CLIENT,\n attributes: utils.getSemanticAttributesFromPoolConnection(\n this.options,\n plugin._semconvStability\n ),\n });\n\n if (callback) {\n const parentSpan = trace.getSpan(context.active());\n callback = utils.patchCallbackPGPool(\n span,\n callback\n ) as PgPoolCallback;\n // If a parent span exists, bind the callback\n if (parentSpan) {\n callback = context.bind(context.active(), callback);\n }\n }\n\n const connectResult: unknown = context.with(\n trace.setSpan(context.active(), span),\n () => {\n return originalConnect.call(this, callback as any);\n }\n );\n\n return handleConnectResult(span, connectResult);\n };\n };\n }\n}\n\nfunction handleConnectResult(span: Span, connectResult: unknown) {\n if (!(connectResult instanceof Promise)) {\n return connectResult;\n }\n\n const connectResultPromise = connectResult as Promise;\n return context.bind(\n context.active(),\n connectResultPromise\n .then(result => {\n span.end();\n return result;\n })\n .catch((error: unknown) => {\n if (error instanceof Error) {\n span.recordException(utils.sanitizedErrorMessage(error));\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: utils.getErrorMessage(error),\n });\n span.end();\n return Promise.reject(error);\n })\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.d.ts new file mode 100644 index 0000000..8901af9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.d.ts @@ -0,0 +1,35 @@ +import type * as pgTypes from 'pg'; +import type * as pgPoolTypes from 'pg-pool'; +export type PostgresCallback = (err: Error, res: object) => unknown; +export interface PgParsedConnectionParams { + database?: string; + host?: string; + namespace?: string; + port?: number; + user?: string; +} +export interface PgClientExtended extends pgTypes.Client { + connectionParameters: PgParsedConnectionParams; +} +export type PgPoolCallback = (err: Error, client: any, done: (release?: any) => void) => void; +export interface PgPoolOptionsParams { + allowExitOnIdle: boolean; + connectionString?: string; + database: string; + host: string; + idleTimeoutMillis: number; + max: number; + maxClient: number; + maxLifetimeSeconds: number; + maxUses: number; + namespace: string; + port: number; + user: string; +} +export declare const EVENT_LISTENERS_SET: unique symbol; +export interface PgPoolExtended extends pgPoolTypes { + options: PgPoolOptionsParams; + [EVENT_LISTENERS_SET]?: boolean; +} +export type PgClientConnect = (callback?: Function) => Promise | void; +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js new file mode 100644 index 0000000..ed409a9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js @@ -0,0 +1,20 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EVENT_LISTENERS_SET = void 0; +exports.EVENT_LISTENERS_SET = Symbol('opentelemetry.instrumentation.pg.eventListenersSet'); +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js.map new file mode 100644 index 0000000..c29fa8f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAkDU,QAAA,mBAAmB,GAAG,MAAM,CACvC,oDAAoD,CACrD,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type * as pgTypes from 'pg';\nimport type * as pgPoolTypes from 'pg-pool';\n\nexport type PostgresCallback = (err: Error, res: object) => unknown;\n\n// NB: this type describes the shape of a parsed, normalized form of the\n// connection information that's stored inside each pg.Client instance. It's\n// _not_ the same as the ConnectionConfig type exported from `@types/pg`. That\n// type defines how data must be _passed in_ when creating a new `pg.Client`,\n// which doesn't necessarily match the normalized internal form. E.g., a user\n// can call `new Client({ connectionString: '...' }), but `connectionString`\n// will never show up in the type below, because only the extracted host, port,\n// etc. are recorded in this normalized config. The keys listed below are also\n// incomplete, which is fine because the type is internal and these keys are the\n// only ones our code is reading. See https://github.com/brianc/node-postgres/blob/fde5ec586e49258dfc4a2fcd861fcdecb4794fc3/lib/client.js#L25\nexport interface PgParsedConnectionParams {\n database?: string;\n host?: string;\n namespace?: string;\n port?: number;\n user?: string;\n}\n\nexport interface PgClientExtended extends pgTypes.Client {\n connectionParameters: PgParsedConnectionParams;\n}\n\nexport type PgPoolCallback = (\n err: Error,\n client: any,\n done: (release?: any) => void\n) => void;\n\nexport interface PgPoolOptionsParams {\n allowExitOnIdle: boolean;\n connectionString?: string; // connection string if provided directly\n database: string;\n host: string;\n idleTimeoutMillis: number; // the minimum amount of time that an object may sit idle in the pool before it is eligible for eviction due to idle time\n max: number;\n maxClient: number; // maximum size of the pool\n maxLifetimeSeconds: number;\n maxUses: number;\n namespace: string;\n port: number;\n user: string;\n}\n\nexport const EVENT_LISTENERS_SET = Symbol(\n 'opentelemetry.instrumentation.pg.eventListenersSet'\n);\n\nexport interface PgPoolExtended extends pgPoolTypes {\n options: PgPoolOptionsParams;\n [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n\nexport type PgClientConnect = (callback?: Function) => Promise | void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.d.ts new file mode 100644 index 0000000..036fb51 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.d.ts @@ -0,0 +1,112 @@ +/** + * 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. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_CLIENT_CONNECTION_POOL_NAME: "db.client.connection.pool.name"; +/** + * The state of a connection in the pool + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_CLIENT_CONNECTION_STATE: "db.client.connection.state"; +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export declare const ATTR_DB_CONNECTION_STRING: "db.connection_string"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_NAME: "db.name"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_USER: "db.user"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + */ +export declare const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE: "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + */ +export declare const DB_CLIENT_CONNECTION_STATE_VALUE_USED: "used"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM}. + */ +export declare const DB_SYSTEM_VALUE_POSTGRESQL: "postgresql"; +/** + * The number of connections that are currently in state described by the `state` attribute + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_COUNT: "db.client.connection.count"; +/** + * The number of current pending requests for an open connection + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS: "db.client.connection.pending_requests"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js new file mode 100644 index 0000000..ad786ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js @@ -0,0 +1,135 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * The name of the connection pool; unique within the instrumented application. In case the connection pool implementation doesn't provide a name, instrumentation **SHOULD** use a combination of parameters that would make the name unique, for example, combining attributes `server.address`, `server.port`, and `db.namespace`, formatted as `server.address:server.port/db.namespace`. Instrumentations that generate connection pool name following different patterns **SHOULD** document it. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name'; +/** + * The state of a connection in the pool + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state'; +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +exports.ATTR_DB_CONNECTION_STRING = 'db.connection_string'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +exports.ATTR_DB_NAME = 'db.name'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +exports.ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +exports.ATTR_DB_SYSTEM = 'db.system'; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_DB_USER = 'db.user'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + */ +exports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle'; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + */ +exports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used'; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM}. + */ +exports.DB_SYSTEM_VALUE_POSTGRESQL = 'postgresql'; +/** + * The number of connections that are currently in state described by the `state` attribute + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count'; +/** + * The number of current pending requests for an open connection + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js.map new file mode 100644 index 0000000..6d54285 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AACU,QAAA,mCAAmC,GAC9C,gCAAyC,CAAC;AAE5C;;;;;;GAMG;AACU,QAAA,+BAA+B,GAC1C,4BAAqC,CAAC;AAExC;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;GAEG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;GAEG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;GAEG;AACU,QAAA,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;GAIG;AACU,QAAA,iCAAiC,GAC5C,4BAAqC,CAAC;AAExC;;;;GAIG;AACU,QAAA,4CAA4C,GACvD,uCAAgD,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_DB_CLIENT_CONNECTION_POOL_NAME =\n 'db.client.connection.pool.name' as const;\n\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 */\nexport const ATTR_DB_CLIENT_CONNECTION_STATE =\n 'db.client.connection.state' as const;\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 */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\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 */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\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 */\nexport const ATTR_DB_USER = 'db.user' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle' as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used' as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_POSTGRESQL = 'postgresql' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTION_COUNT =\n 'db.client.connection.count' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS =\n 'db.client.connection.pending_requests' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/types.d.ts new file mode 100644 index 0000000..0ec71f8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/types.d.ts @@ -0,0 +1,65 @@ +import type * as pgTypes from 'pg'; +import type * as api from '@opentelemetry/api'; +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export interface PgResponseHookInformation { + data: pgTypes.QueryResult | pgTypes.QueryArrayResult; +} +export interface PgInstrumentationExecutionResponseHook { + (span: api.Span, responseInfo: PgResponseHookInformation): void; +} +export interface PgRequestHookInformation { + query: { + text: string; + name?: string; + values?: unknown[]; + }; + connection: { + database?: string; + host?: string; + port?: number; + user?: string; + }; +} +export interface PgInstrumentationExecutionRequestHook { + (span: api.Span, queryInfo: PgRequestHookInformation): void; +} +export interface PgInstrumentationConfig extends InstrumentationConfig { + /** + * If true, an attribute containing the query's parameters will be attached + * the spans generated to represent the query. + */ + enhancedDatabaseReporting?: boolean; + /** + * Hook that allows adding custom span attributes or updating the + * span's name based on the data about the query to execute. + * + * @default undefined + */ + requestHook?: PgInstrumentationExecutionRequestHook; + /** + * Hook that allows adding custom span attributes based on the data + * returned from "query" Pg actions. + * + * @default undefined + */ + responseHook?: PgInstrumentationExecutionResponseHook; + /** + * If true, requires a parent span to create new spans. + * + * @default false + */ + requireParentSpan?: boolean; + /** + * If true, queries are modified to also include a comment with + * the tracing context, following the {@link https://github.com/open-telemetry/opentelemetry-sqlcommenter sqlcommenter} format + */ + addSqlCommenterCommentToQueries?: boolean; + /** + * If true, `pg.connect` and `pg-pool.connect` spans will not be created. + * Query spans and pool metrics are still recorded. + * + * @default false + */ + ignoreConnectSpans?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/types.js.map new file mode 100644 index 0000000..4aaada6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type * as pgTypes from 'pg';\nimport type * as api from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface PgResponseHookInformation {\n data: pgTypes.QueryResult | pgTypes.QueryArrayResult;\n}\n\nexport interface PgInstrumentationExecutionResponseHook {\n (span: api.Span, responseInfo: PgResponseHookInformation): void;\n}\n\nexport interface PgRequestHookInformation {\n query: {\n text: string;\n name?: string;\n values?: unknown[];\n };\n connection: {\n database?: string;\n host?: string;\n port?: number;\n user?: string;\n };\n}\n\nexport interface PgInstrumentationExecutionRequestHook {\n (span: api.Span, queryInfo: PgRequestHookInformation): void;\n}\n\nexport interface PgInstrumentationConfig extends InstrumentationConfig {\n /**\n * If true, an attribute containing the query's parameters will be attached\n * the spans generated to represent the query.\n */\n enhancedDatabaseReporting?: boolean;\n\n /**\n * Hook that allows adding custom span attributes or updating the\n * span's name based on the data about the query to execute.\n *\n * @default undefined\n */\n requestHook?: PgInstrumentationExecutionRequestHook;\n\n /**\n * Hook that allows adding custom span attributes based on the data\n * returned from \"query\" Pg actions.\n *\n * @default undefined\n */\n responseHook?: PgInstrumentationExecutionResponseHook;\n\n /**\n * If true, requires a parent span to create new spans.\n *\n * @default false\n */\n requireParentSpan?: boolean;\n\n /**\n * If true, queries are modified to also include a comment with\n * the tracing context, following the {@link https://github.com/open-telemetry/opentelemetry-sqlcommenter sqlcommenter} format\n */\n addSqlCommenterCommentToQueries?: boolean;\n\n /**\n * If true, `pg.connect` and `pg-pool.connect` spans will not be created.\n * Query spans and pool metrics are still recorded.\n *\n * @default false\n */\n ignoreConnectSpans?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.d.ts new file mode 100644 index 0000000..67b4f57 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.d.ts @@ -0,0 +1,69 @@ +import { Span, Tracer, UpDownCounter, Attributes } from '@opentelemetry/api'; +import { PgClientExtended, PostgresCallback, PgPoolCallback, PgPoolExtended, PgParsedConnectionParams, PgPoolOptionsParams } from './internal-types'; +import { PgInstrumentationConfig } from './types'; +import type * as pgTypes from 'pg'; +import { SemconvStability } from '@opentelemetry/instrumentation'; +/** + * Helper function to get a low cardinality span name from whatever info we have + * about the query. + * + * This is tricky, because we don't have most of the information (table name, + * operation name, etc) the spec recommends using to build a low-cardinality + * value w/o parsing. So, we use db.name and assume that, if the query's a named + * prepared statement, those `name` values will be low cardinality. If we don't + * have a named prepared statement, we try to parse an operation (despite the + * spec's warnings). + * + * @params dbName The name of the db against which this query is being issued, + * which could be missing if no db name was given at the time that the + * connection was established. + * @params queryConfig Information we have about the query being issued, typed + * to reflect only the validation we've actually done on the args to + * `client.query()`. This will be undefined if `client.query()` was called + * with invalid arguments. + */ +export declare function getQuerySpanName(dbName: string | undefined, queryConfig?: { + text: string; + name?: unknown; +}): string; +export declare function parseNormalizedOperationName(queryText: string): string; +export declare function parseAndMaskConnectionString(connectionString: string): string; +export declare function getConnectionString(params: PgParsedConnectionParams | PgPoolOptionsParams): string; +export declare function getSemanticAttributesFromConnection(params: PgParsedConnectionParams, semconvStability: SemconvStability): Attributes; +export declare function getSemanticAttributesFromPoolConnection(params: PgPoolOptionsParams, semconvStability: SemconvStability): Attributes; +export declare function shouldSkipInstrumentation(instrumentationConfig: PgInstrumentationConfig): boolean; +export declare function handleConfigQuery(this: PgClientExtended, tracer: Tracer, instrumentationConfig: PgInstrumentationConfig, semconvStability: SemconvStability, queryConfig?: { + text: string; + values?: unknown; + name?: unknown; +}): Span; +export declare function handleExecutionResult(config: PgInstrumentationConfig, span: Span, pgResult: pgTypes.QueryResult | pgTypes.QueryArrayResult | unknown): void; +export declare function patchCallback(instrumentationConfig: PgInstrumentationConfig, span: Span, cb: PostgresCallback, attributes: Attributes, recordDuration: { + (): void; +}): PostgresCallback; +export declare function getPoolName(pool: PgPoolOptionsParams): string; +export interface poolConnectionsCounter { + used: number; + idle: number; + pending: number; +} +export declare function updateCounter(poolName: string, pool: PgPoolExtended, connectionCount: UpDownCounter, connectionPendingRequests: UpDownCounter, latestCounter: poolConnectionsCounter): poolConnectionsCounter; +export declare function patchCallbackPGPool(span: Span, cb: PgPoolCallback): PgPoolCallback; +export declare function patchClientConnectCallback(span: Span, cb: Function): Function; +/** + * Attempt to get a message string from a thrown value, while being quite + * defensive, to recognize the fact that, in JS, any kind of value (even + * primitives) can be thrown. + */ +export declare function getErrorMessage(e: unknown): string | undefined; +export declare function isObjectWithTextString(it: unknown): it is ObjectWithText; +export type ObjectWithText = { + text: string; + [k: string]: unknown; +}; +/** + * Generates a sanitized message for the error. + * Only includes the error type and PostgreSQL error code, omitting any sensitive details. + */ +export declare function sanitizedErrorMessage(error: unknown): string; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js new file mode 100644 index 0000000..d697222 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js @@ -0,0 +1,350 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +const api_1 = require("@opentelemetry/api"); +const AttributeNames_1 = require("./enums/AttributeNames"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const SpanNames_1 = require("./enums/SpanNames"); +/** + * Helper function to get a low cardinality span name from whatever info we have + * about the query. + * + * This is tricky, because we don't have most of the information (table name, + * operation name, etc) the spec recommends using to build a low-cardinality + * value w/o parsing. So, we use db.name and assume that, if the query's a named + * prepared statement, those `name` values will be low cardinality. If we don't + * have a named prepared statement, we try to parse an operation (despite the + * spec's warnings). + * + * @params dbName The name of the db against which this query is being issued, + * which could be missing if no db name was given at the time that the + * connection was established. + * @params queryConfig Information we have about the query being issued, typed + * to reflect only the validation we've actually done on the args to + * `client.query()`. This will be undefined if `client.query()` was called + * with invalid arguments. + */ +function getQuerySpanName(dbName, queryConfig) { + // NB: when the query config is invalid, we omit the dbName too, so that + // someone (or some tool) reading the span name doesn't misinterpret the + // dbName as being a prepared statement or sql commit name. + if (!queryConfig) + return SpanNames_1.SpanNames.QUERY_PREFIX; + // Either the name of a prepared statement; or an attempted parse + // of the SQL command, normalized to uppercase; or unknown. + const command = typeof queryConfig.name === 'string' && queryConfig.name + ? queryConfig.name + : parseNormalizedOperationName(queryConfig.text); + return `${SpanNames_1.SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`; +} +exports.getQuerySpanName = getQuerySpanName; +function parseNormalizedOperationName(queryText) { + // Trim the query text to handle leading/trailing whitespace + const trimmedQuery = queryText.trim(); + const indexOfFirstSpace = trimmedQuery.indexOf(' '); + let sqlCommand = indexOfFirstSpace === -1 + ? trimmedQuery + : trimmedQuery.slice(0, indexOfFirstSpace); + sqlCommand = sqlCommand.toUpperCase(); + // Handle query text being "COMMIT;", which has an extra semicolon before the space. + return sqlCommand.endsWith(';') ? sqlCommand.slice(0, -1) : sqlCommand; +} +exports.parseNormalizedOperationName = parseNormalizedOperationName; +function parseAndMaskConnectionString(connectionString) { + try { + // Parse the connection string + const url = new URL(connectionString); + // Remove all auth information (username and password) + url.username = ''; + url.password = ''; + return url.toString(); + } + catch (e) { + // If parsing fails, return a generic connection string + return 'postgresql://localhost:5432/'; + } +} +exports.parseAndMaskConnectionString = parseAndMaskConnectionString; +function getConnectionString(params) { + if ('connectionString' in params && params.connectionString) { + return parseAndMaskConnectionString(params.connectionString); + } + const host = params.host || 'localhost'; + const port = params.port || 5432; + const database = params.database || ''; + return `postgresql://${host}:${port}/${database}`; +} +exports.getConnectionString = getConnectionString; +function getPort(port) { + // Port may be NaN as parseInt() is used on the value, passing null will result in NaN being parsed. + // https://github.com/brianc/node-postgres/blob/2a8efbee09a284be12748ed3962bc9b816965e36/packages/pg/lib/connection-parameters.js#L66 + if (Number.isInteger(port)) { + return port; + } + // Unable to find the default used in pg code, so falling back to 'undefined'. + return undefined; +} +function getSemanticAttributesFromConnection(params, semconvStability) { + let attributes = {}; + if (semconvStability & instrumentation_1.SemconvStability.OLD) { + attributes = { + ...attributes, + [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL, + [semconv_1.ATTR_DB_NAME]: params.database, + [semconv_1.ATTR_DB_CONNECTION_STRING]: getConnectionString(params), + [semconv_1.ATTR_DB_USER]: params.user, + [semconv_1.ATTR_NET_PEER_NAME]: params.host, + [semconv_1.ATTR_NET_PEER_PORT]: getPort(params.port), + }; + } + if (semconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes = { + ...attributes, + [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL, + [semantic_conventions_1.ATTR_DB_NAMESPACE]: params.namespace, + [semantic_conventions_1.ATTR_SERVER_ADDRESS]: params.host, + [semantic_conventions_1.ATTR_SERVER_PORT]: getPort(params.port), + }; + } + return attributes; +} +exports.getSemanticAttributesFromConnection = getSemanticAttributesFromConnection; +function getSemanticAttributesFromPoolConnection(params, semconvStability) { + let url; + try { + url = params.connectionString + ? new URL(params.connectionString) + : undefined; + } + catch (e) { + url = undefined; + } + let attributes = { + [AttributeNames_1.AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis, + [AttributeNames_1.AttributeNames.MAX_CLIENT]: params.maxClient, + }; + if (semconvStability & instrumentation_1.SemconvStability.OLD) { + attributes = { + ...attributes, + [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL, + [semconv_1.ATTR_DB_NAME]: url?.pathname.slice(1) ?? params.database, + [semconv_1.ATTR_DB_CONNECTION_STRING]: getConnectionString(params), + [semconv_1.ATTR_NET_PEER_NAME]: url?.hostname ?? params.host, + [semconv_1.ATTR_NET_PEER_PORT]: Number(url?.port) || getPort(params.port), + [semconv_1.ATTR_DB_USER]: url?.username ?? params.user, + }; + } + if (semconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes = { + ...attributes, + [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL, + [semantic_conventions_1.ATTR_DB_NAMESPACE]: params.namespace, + [semantic_conventions_1.ATTR_SERVER_ADDRESS]: url?.hostname ?? params.host, + [semantic_conventions_1.ATTR_SERVER_PORT]: Number(url?.port) || getPort(params.port), + }; + } + return attributes; +} +exports.getSemanticAttributesFromPoolConnection = getSemanticAttributesFromPoolConnection; +function shouldSkipInstrumentation(instrumentationConfig) { + return (instrumentationConfig.requireParentSpan === true && + api_1.trace.getSpan(api_1.context.active()) === undefined); +} +exports.shouldSkipInstrumentation = shouldSkipInstrumentation; +// Create a span from our normalized queryConfig object, +// or return a basic span if no queryConfig was given/could be created. +function handleConfigQuery(tracer, instrumentationConfig, semconvStability, queryConfig) { + // Create child span. + const { connectionParameters } = this; + const dbName = connectionParameters.database; + const spanName = getQuerySpanName(dbName, queryConfig); + const span = tracer.startSpan(spanName, { + kind: api_1.SpanKind.CLIENT, + attributes: getSemanticAttributesFromConnection(connectionParameters, semconvStability), + }); + if (!queryConfig) { + return span; + } + // Set attributes + if (queryConfig.text) { + if (semconvStability & instrumentation_1.SemconvStability.OLD) { + span.setAttribute(semconv_1.ATTR_DB_STATEMENT, queryConfig.text); + } + if (semconvStability & instrumentation_1.SemconvStability.STABLE) { + span.setAttribute(semantic_conventions_1.ATTR_DB_QUERY_TEXT, queryConfig.text); + } + } + if (instrumentationConfig.enhancedDatabaseReporting && + Array.isArray(queryConfig.values)) { + try { + const convertedValues = queryConfig.values.map(value => { + if (value == null) { + return 'null'; + } + else if (value instanceof Buffer) { + return value.toString(); + } + else if (typeof value === 'object') { + if (typeof value.toPostgres === 'function') { + return value.toPostgres(); + } + return JSON.stringify(value); + } + else { + //string, number + return value.toString(); + } + }); + span.setAttribute(AttributeNames_1.AttributeNames.PG_VALUES, convertedValues); + } + catch (e) { + api_1.diag.error('failed to stringify ', queryConfig.values, e); + } + } + // Set plan name attribute, if present + if (typeof queryConfig.name === 'string') { + span.setAttribute(AttributeNames_1.AttributeNames.PG_PLAN, queryConfig.name); + } + return span; +} +exports.handleConfigQuery = handleConfigQuery; +function handleExecutionResult(config, span, pgResult) { + if (typeof config.responseHook === 'function') { + (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + config.responseHook(span, { + data: pgResult, + }); + }, err => { + if (err) { + api_1.diag.error('Error running response hook', err); + } + }, true); + } +} +exports.handleExecutionResult = handleExecutionResult; +function patchCallback(instrumentationConfig, span, cb, attributes, recordDuration) { + return function patchedCallback(err, res) { + if (err) { + if (Object.prototype.hasOwnProperty.call(err, 'code')) { + attributes[semantic_conventions_1.ATTR_ERROR_TYPE] = err['code']; + } + if (err instanceof Error) { + span.recordException(sanitizedErrorMessage(err)); + } + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err.message, + }); + } + else { + handleExecutionResult(instrumentationConfig, span, res); + } + recordDuration(); + span.end(); + cb.call(this, err, res); + }; +} +exports.patchCallback = patchCallback; +function getPoolName(pool) { + let poolName = ''; + poolName += (pool?.host ? `${pool.host}` : 'unknown_host') + ':'; + poolName += (pool?.port ? `${pool.port}` : 'unknown_port') + '/'; + poolName += pool?.database ? `${pool.database}` : 'unknown_database'; + return poolName.trim(); +} +exports.getPoolName = getPoolName; +function updateCounter(poolName, pool, connectionCount, connectionPendingRequests, latestCounter) { + const all = pool.totalCount; + const pending = pool.waitingCount; + const idle = pool.idleCount; + const used = all - idle; + connectionCount.add(used - latestCounter.used, { + [semconv_1.ATTR_DB_CLIENT_CONNECTION_STATE]: semconv_1.DB_CLIENT_CONNECTION_STATE_VALUE_USED, + [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName, + }); + connectionCount.add(idle - latestCounter.idle, { + [semconv_1.ATTR_DB_CLIENT_CONNECTION_STATE]: semconv_1.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE, + [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName, + }); + connectionPendingRequests.add(pending - latestCounter.pending, { + [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName, + }); + return { used: used, idle: idle, pending: pending }; +} +exports.updateCounter = updateCounter; +function patchCallbackPGPool(span, cb) { + return function patchedCallback(err, res, done) { + if (err) { + if (err instanceof Error) { + span.recordException(sanitizedErrorMessage(err)); + } + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err.message, + }); + } + span.end(); + cb.call(this, err, res, done); + }; +} +exports.patchCallbackPGPool = patchCallbackPGPool; +function patchClientConnectCallback(span, cb) { + return function patchedClientConnectCallback(err) { + if (err) { + if (err instanceof Error) { + span.recordException(sanitizedErrorMessage(err)); + } + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err.message, + }); + } + span.end(); + cb.apply(this, arguments); + }; +} +exports.patchClientConnectCallback = patchClientConnectCallback; +/** + * Attempt to get a message string from a thrown value, while being quite + * defensive, to recognize the fact that, in JS, any kind of value (even + * primitives) can be thrown. + */ +function getErrorMessage(e) { + return typeof e === 'object' && e !== null && 'message' in e + ? String(e.message) + : undefined; +} +exports.getErrorMessage = getErrorMessage; +function isObjectWithTextString(it) { + return (typeof it === 'object' && + typeof it?.text === 'string'); +} +exports.isObjectWithTextString = isObjectWithTextString; +/** + * Generates a sanitized message for the error. + * Only includes the error type and PostgreSQL error code, omitting any sensitive details. + */ +function sanitizedErrorMessage(error) { + const name = error?.name ?? 'PostgreSQLError'; + const code = error?.code ?? 'UNKNOWN'; + return `PostgreSQL error of type '${name}' occurred (code: ${code})`; +} +exports.sanitizedErrorMessage = sanitizedErrorMessage; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js.map new file mode 100644 index 0000000..d25c461 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n context,\n trace,\n Span,\n SpanStatusCode,\n Tracer,\n SpanKind,\n diag,\n UpDownCounter,\n Attributes,\n} from '@opentelemetry/api';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_DB_SYSTEM_NAME,\n ATTR_DB_NAMESPACE,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_DB_QUERY_TEXT,\n DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_DB_CLIENT_CONNECTION_POOL_NAME,\n ATTR_DB_CLIENT_CONNECTION_STATE,\n DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n ATTR_DB_SYSTEM,\n ATTR_DB_NAME,\n ATTR_DB_USER,\n DB_SYSTEM_VALUE_POSTGRESQL,\n ATTR_DB_CONNECTION_STRING,\n ATTR_NET_PEER_PORT,\n ATTR_NET_PEER_NAME,\n ATTR_DB_STATEMENT,\n} from './semconv';\nimport {\n PgClientExtended,\n PostgresCallback,\n PgPoolCallback,\n PgPoolExtended,\n PgParsedConnectionParams,\n PgPoolOptionsParams,\n} from './internal-types';\nimport { PgInstrumentationConfig } from './types';\nimport type * as pgTypes from 'pg';\nimport {\n safeExecuteInTheMiddle,\n SemconvStability,\n} from '@opentelemetry/instrumentation';\nimport { SpanNames } from './enums/SpanNames';\n\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 */\nexport function getQuerySpanName(\n dbName: string | undefined,\n queryConfig?: { text: string; name?: unknown }\n) {\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) return SpanNames.QUERY_PREFIX;\n\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 =\n typeof queryConfig.name === 'string' && queryConfig.name\n ? queryConfig.name\n : parseNormalizedOperationName(queryConfig.text);\n\n return `${SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`;\n}\n\nexport function parseNormalizedOperationName(queryText: string) {\n // Trim the query text to handle leading/trailing whitespace\n const trimmedQuery = queryText.trim();\n const indexOfFirstSpace = trimmedQuery.indexOf(' ');\n let sqlCommand =\n indexOfFirstSpace === -1\n ? trimmedQuery\n : trimmedQuery.slice(0, indexOfFirstSpace);\n sqlCommand = sqlCommand.toUpperCase();\n\n // Handle query text being \"COMMIT;\", which has an extra semicolon before the space.\n return sqlCommand.endsWith(';') ? sqlCommand.slice(0, -1) : sqlCommand;\n}\n\nexport function parseAndMaskConnectionString(connectionString: string): string {\n try {\n // Parse the connection string\n const url = new URL(connectionString);\n\n // Remove all auth information (username and password)\n url.username = '';\n url.password = '';\n\n return url.toString();\n } catch (e) {\n // If parsing fails, return a generic connection string\n return 'postgresql://localhost:5432/';\n }\n}\n\nexport function getConnectionString(\n params: PgParsedConnectionParams | PgPoolOptionsParams\n) {\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}\n\nfunction getPort(port: number | undefined): number | undefined {\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\n // Unable to find the default used in pg code, so falling back to 'undefined'.\n return undefined;\n}\n\nexport function getSemanticAttributesFromConnection(\n params: PgParsedConnectionParams,\n semconvStability: SemconvStability\n) {\n let attributes: Attributes = {};\n\n if (semconvStability & SemconvStability.OLD) {\n attributes = {\n ...attributes,\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n [ATTR_DB_NAME]: params.database,\n [ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n [ATTR_DB_USER]: params.user,\n [ATTR_NET_PEER_NAME]: params.host, // required\n [ATTR_NET_PEER_PORT]: getPort(params.port),\n };\n }\n if (semconvStability & SemconvStability.STABLE) {\n attributes = {\n ...attributes,\n [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n [ATTR_DB_NAMESPACE]: params.namespace,\n [ATTR_SERVER_ADDRESS]: params.host,\n [ATTR_SERVER_PORT]: getPort(params.port),\n };\n }\n\n return attributes;\n}\n\nexport function getSemanticAttributesFromPoolConnection(\n params: PgPoolOptionsParams,\n semconvStability: SemconvStability\n) {\n let url: URL | undefined;\n try {\n url = params.connectionString\n ? new URL(params.connectionString)\n : undefined;\n } catch (e) {\n url = undefined;\n }\n let attributes: Attributes = {\n [AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis,\n [AttributeNames.MAX_CLIENT]: params.maxClient,\n };\n\n if (semconvStability & SemconvStability.OLD) {\n attributes = {\n ...attributes,\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n [ATTR_DB_NAME]: url?.pathname.slice(1) ?? params.database,\n [ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n [ATTR_NET_PEER_NAME]: url?.hostname ?? params.host,\n [ATTR_NET_PEER_PORT]: Number(url?.port) || getPort(params.port),\n [ATTR_DB_USER]: url?.username ?? params.user,\n };\n }\n if (semconvStability & SemconvStability.STABLE) {\n attributes = {\n ...attributes,\n [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n [ATTR_DB_NAMESPACE]: params.namespace,\n [ATTR_SERVER_ADDRESS]: url?.hostname ?? params.host,\n [ATTR_SERVER_PORT]: Number(url?.port) || getPort(params.port),\n };\n }\n\n return attributes;\n}\n\nexport function shouldSkipInstrumentation(\n instrumentationConfig: PgInstrumentationConfig\n) {\n return (\n instrumentationConfig.requireParentSpan === true &&\n trace.getSpan(context.active()) === undefined\n );\n}\n\n// Create a span from our normalized queryConfig object,\n// or return a basic span if no queryConfig was given/could be created.\nexport function handleConfigQuery(\n this: PgClientExtended,\n tracer: Tracer,\n instrumentationConfig: PgInstrumentationConfig,\n semconvStability: SemconvStability,\n queryConfig?: { text: string; values?: unknown; name?: unknown }\n) {\n // Create child span.\n const { connectionParameters } = this;\n const dbName = connectionParameters.database;\n\n const spanName = getQuerySpanName(dbName, queryConfig);\n const span = tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes: getSemanticAttributesFromConnection(\n connectionParameters,\n semconvStability\n ),\n });\n\n if (!queryConfig) {\n return span;\n }\n\n // Set attributes\n if (queryConfig.text) {\n if (semconvStability & SemconvStability.OLD) {\n span.setAttribute(ATTR_DB_STATEMENT, queryConfig.text);\n }\n if (semconvStability & SemconvStability.STABLE) {\n span.setAttribute(ATTR_DB_QUERY_TEXT, queryConfig.text);\n }\n }\n\n if (\n instrumentationConfig.enhancedDatabaseReporting &&\n Array.isArray(queryConfig.values)\n ) {\n try {\n const convertedValues = queryConfig.values.map(value => {\n if (value == null) {\n return 'null';\n } else if (value instanceof Buffer) {\n return value.toString();\n } else if (typeof value === 'object') {\n if (typeof value.toPostgres === 'function') {\n return value.toPostgres();\n }\n return JSON.stringify(value);\n } else {\n //string, number\n return value.toString();\n }\n });\n span.setAttribute(AttributeNames.PG_VALUES, convertedValues);\n } catch (e) {\n diag.error('failed to stringify ', queryConfig.values, e);\n }\n }\n\n // Set plan name attribute, if present\n if (typeof queryConfig.name === 'string') {\n span.setAttribute(AttributeNames.PG_PLAN, queryConfig.name);\n }\n\n return span;\n}\n\nexport function handleExecutionResult(\n config: PgInstrumentationConfig,\n span: Span,\n pgResult: pgTypes.QueryResult | pgTypes.QueryArrayResult | unknown\n) {\n if (typeof config.responseHook === 'function') {\n safeExecuteInTheMiddle(\n () => {\n config.responseHook!(span, {\n data: pgResult as pgTypes.QueryResult | pgTypes.QueryArrayResult,\n });\n },\n err => {\n if (err) {\n diag.error('Error running response hook', err);\n }\n },\n true\n );\n }\n}\n\nexport function patchCallback(\n instrumentationConfig: PgInstrumentationConfig,\n span: Span,\n cb: PostgresCallback,\n attributes: Attributes,\n recordDuration: { (): void }\n): PostgresCallback {\n return function patchedCallback(\n this: PgClientExtended,\n err: Error,\n res: object\n ) {\n if (err) {\n if (Object.prototype.hasOwnProperty.call(err, 'code')) {\n attributes[ATTR_ERROR_TYPE] = (err as any)['code'];\n }\n if (err instanceof Error) {\n span.recordException(sanitizedErrorMessage(err));\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n } else {\n handleExecutionResult(instrumentationConfig, span, res);\n }\n\n recordDuration();\n span.end();\n cb.call(this, err, res);\n };\n}\n\nexport function getPoolName(pool: PgPoolOptionsParams): string {\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\n return poolName.trim();\n}\n\nexport interface poolConnectionsCounter {\n used: number;\n idle: number;\n pending: number;\n}\n\nexport function updateCounter(\n poolName: string,\n pool: PgPoolExtended,\n connectionCount: UpDownCounter,\n connectionPendingRequests: UpDownCounter,\n latestCounter: poolConnectionsCounter\n): poolConnectionsCounter {\n const all = pool.totalCount;\n const pending = pool.waitingCount;\n const idle = pool.idleCount;\n const used = all - idle;\n\n connectionCount.add(used - latestCounter.used, {\n [ATTR_DB_CLIENT_CONNECTION_STATE]: DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n });\n\n connectionCount.add(idle - latestCounter.idle, {\n [ATTR_DB_CLIENT_CONNECTION_STATE]: DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n });\n\n connectionPendingRequests.add(pending - latestCounter.pending, {\n [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n });\n\n return { used: used, idle: idle, pending: pending };\n}\n\nexport function patchCallbackPGPool(\n span: Span,\n cb: PgPoolCallback\n): PgPoolCallback {\n return function patchedCallback(\n this: PgPoolExtended,\n err: Error,\n res: object,\n done: any\n ) {\n if (err) {\n if (err instanceof Error) {\n span.recordException(sanitizedErrorMessage(err));\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n span.end();\n cb.call(this, err, res, done);\n };\n}\n\nexport function patchClientConnectCallback(span: Span, cb: Function): Function {\n return function patchedClientConnectCallback(\n this: pgTypes.Client,\n err: Error\n ) {\n if (err) {\n if (err instanceof Error) {\n span.recordException(sanitizedErrorMessage(err));\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n span.end();\n cb.apply(this, arguments);\n };\n}\n\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 */\nexport function getErrorMessage(e: unknown) {\n return typeof e === 'object' && e !== null && 'message' in e\n ? String((e as { message?: unknown }).message)\n : undefined;\n}\n\nexport function isObjectWithTextString(it: unknown): it is ObjectWithText {\n return (\n typeof it === 'object' &&\n typeof (it as null | { text?: unknown })?.text === 'string'\n );\n}\n\nexport type ObjectWithText = {\n text: string;\n [k: string]: unknown;\n};\n\n/**\n * Generates a sanitized message for the error.\n * Only includes the error type and PostgreSQL error code, omitting any sensitive details.\n */\nexport function sanitizedErrorMessage(error: unknown): string {\n const name = (error as any)?.name ?? 'PostgreSQLError';\n const code = (error as any)?.code ?? 'UNKNOWN';\n\n return `PostgreSQL error of type '${name}' occurred (code: ${code})`;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/version.d.ts new file mode 100644 index 0000000..6769f3c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.63.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-pg"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js new file mode 100644 index 0000000..725fce5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.63.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-pg'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js.map new file mode 100644 index 0000000..e14398a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,mCAAmC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.63.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-pg';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/package.json new file mode 100644 index 0000000..1f271fc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-pg/package.json @@ -0,0 +1,75 @@ +{ + "name": "@opentelemetry/instrumentation-pg", + "version": "0.63.0", + "description": "OpenTelemetry instrumentation for `pg` and `pg-pool` database client for PostgreSQL", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-pg" + }, + "scripts": { + "clean": "rimraf build/*", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-pg", + "compile": "tsc -p .", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test:debug": "mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-services:start": "cd ../.. && npm run test-services:start postgres", + "test-services:stop": "cd ../.. && npm run test-services:stop postgres", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "instrumentation", + "nodejs", + "opentelemetry", + "pg", + "plugin", + "postgres", + "postgresql", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "pg": "8.7.1", + "pg-pool": "3.4.1" + }, + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.34.0", + "@opentelemetry/sql-common": "^0.41.2", + "@types/pg": "8.15.6", + "@types/pg-pool": "2.0.7" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-pg#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/README.md new file mode 100644 index 0000000..57ecfec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/README.md @@ -0,0 +1,121 @@ +# OpenTelemetry redis Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`redis`](https://github.com/NodeRedis/node_redis) module versions `>=2.6.0 <6`, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-redis +``` + +### Supported Versions + +- [`redis`](https://www.npmjs.com/package/redis) versions `>=2.6.0 <6` + +## Usage + +OpenTelemetry Redis Instrumentation allows the user to automatically collect trace data and export them to the backend of choice, to give observability to distributed systems when working with [redis](https://www.npmjs.com/package/redis). + +To load a specific instrumentation (**redis** in this case), specify it in the registerInstrumentations' configuration + +```javascript +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { RedisInstrumentation } = require('@opentelemetry/instrumentation-redis'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new RedisInstrumentation(), + ], +}) +``` + +See [examples/redis](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/redis) for a short example. + +### Redis Instrumentation Options + +Redis instrumentation has a few options available to choose from. You can set the following: + +| Options | Type | Description | +|-------------------------|---------------------------------------------------|----------------------------------------------------------------------------------------------------------------| +| `dbStatementSerializer` | `DbStatementSerializer` (function) | Redis instrumentation will serialize the command to the `db.statement` attribute using the specified function. | +| `responseHook` | `RedisResponseCustomAttributeFunction` (function) | Function for adding custom attributes on db response. Receives params: `span, moduleVersion, cmdName, cmdArgs` | +| `requireParentSpan` | `boolean` | Require parent to create redis span, default when unset is false. | + +#### Custom `db.statement` Serializer + +The instrumentation serializes the command into a Span attribute called `db.statement`. The standard serialization format attempts to be as informative as possible while avoiding the export of potentially sensitive data. The number of serialized arguments depends on the specific command, see the configuration +list in `@opentelemetry/redis-common`. + +It is also possible to define a custom serialization function. The function +will receive the command name and arguments and must return a string. + +Here is a simple example to serialize the command name and all command arguments. +Notice that it might capture sensitive data and big payloads: + +```javascript +const { RedisInstrumentation } = require('@opentelemetry/instrumentation-redis'); + +const redisInstrumentation = new RedisInstrumentation({ + dbStatementSerializer: function (cmdName, cmdArgs) { + return [cmdName, ...cmdArgs].join(" "); + }, +}); +``` + +## Semantic Conventions + + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) ("old" conventions). + +It also supports the new stable semantic conventions introduced in [Version 1.33.0] +By default, old semantic conventions are used. Use the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable to control which version to emit. + +Attributes collected: + +### Old Semantic Conventions (default) + +| Attribute | Short Description | +|------------------------|--------------------------------------------------------------| +| `db.connection_string` | URL to Redis server address, of the form `redis://host:port` | +| `db.statement` | Executed Redis statement | +| `db.system` | Database identifier; always `redis` | +| `net.peer.name` | Hostname or IP of the connected Redis server | +| `net.peer.port` | Port of the connected Redis server | + +### Stable Semantic Conventions (v1.33.0) + +| Attribute | Short Description | +|---------------------------|--------------------------------------------------------| +| `db.operation.name` | Redis command name | +| `db.operation.batch.size` | Number of commands in a Redis `MULTI/EXEC` transaction | +| `db.query.text` | The database query being executed | +| `db.system.name` | Database identifier; always `redis` | +| `server.address` | Hostname or IP of the connected Redis server | +| `server.port` | Port of the connected Redis server | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-redis +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-redis.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/index.d.ts new file mode 100644 index 0000000..3280608 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { RedisInstrumentation } from './redis'; +export type { DbStatementSerializer, RedisInstrumentationConfig, RedisResponseCustomAttributeFunction, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/index.js new file mode 100644 index 0000000..5d13fb5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RedisInstrumentation = void 0; +var redis_1 = require("./redis"); +Object.defineProperty(exports, "RedisInstrumentation", { enumerable: true, get: function () { return redis_1.RedisInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/index.js.map new file mode 100644 index 0000000..cc12eab --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,iCAA+C;AAAtC,6GAAA,oBAAoB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { RedisInstrumentation } from './redis';\nexport type {\n DbStatementSerializer,\n RedisInstrumentationConfig,\n RedisResponseCustomAttributeFunction,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/redis.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/redis.d.ts new file mode 100644 index 0000000..e08099a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/redis.d.ts @@ -0,0 +1,16 @@ +import { InstrumentationBase, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation'; +import { RedisInstrumentationConfig } from './types'; +import { TracerProvider } from '@opentelemetry/api'; +export declare class RedisInstrumentation extends InstrumentationBase { + private instrumentationV2_V3; + private instrumentationV4_V5; + private initialized; + constructor(config?: RedisInstrumentationConfig); + setConfig(config?: RedisInstrumentationConfig): void; + init(): void; + getModuleDefinitions(): InstrumentationModuleDefinition[]; + setTracerProvider(tracerProvider: TracerProvider): void; + enable(): void; + disable(): void; +} +//# sourceMappingURL=redis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/redis.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/redis.js new file mode 100644 index 0000000..c7cd55e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/redis.js @@ -0,0 +1,85 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RedisInstrumentation = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const instrumentation_1 = require("@opentelemetry/instrumentation"); +/** @knipignore */ +const version_1 = require("./version"); +const instrumentation_2 = require("./v2-v3/instrumentation"); +const instrumentation_3 = require("./v4-v5/instrumentation"); +const DEFAULT_CONFIG = { + requireParentSpan: false, +}; +// Wrapper RedisInstrumentation that address all supported versions +class RedisInstrumentation extends instrumentation_1.InstrumentationBase { + instrumentationV2_V3; + instrumentationV4_V5; + // this is used to bypass a flaw in the base class constructor, which is calling + // member functions before the constructor has a chance to fully initialize the member variables. + initialized = false; + constructor(config = {}) { + const resolvedConfig = { ...DEFAULT_CONFIG, ...config }; + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, resolvedConfig); + this.instrumentationV2_V3 = new instrumentation_2.RedisInstrumentationV2_V3(this.getConfig()); + this.instrumentationV4_V5 = new instrumentation_3.RedisInstrumentationV4_V5(this.getConfig()); + this.initialized = true; + } + setConfig(config = {}) { + const newConfig = { ...DEFAULT_CONFIG, ...config }; + super.setConfig(newConfig); + if (!this.initialized) { + return; + } + this.instrumentationV2_V3.setConfig(newConfig); + this.instrumentationV4_V5.setConfig(newConfig); + } + init() { } + // Return underlying modules, as consumers (like https://github.com/DrewCorlin/opentelemetry-node-bundler-plugins) may + // expect them to be populated without knowing that this module wraps 2 instrumentations + getModuleDefinitions() { + return [ + ...this.instrumentationV2_V3.getModuleDefinitions(), + ...this.instrumentationV4_V5.getModuleDefinitions(), + ]; + } + setTracerProvider(tracerProvider) { + super.setTracerProvider(tracerProvider); + if (!this.initialized) { + return; + } + this.instrumentationV2_V3.setTracerProvider(tracerProvider); + this.instrumentationV4_V5.setTracerProvider(tracerProvider); + } + enable() { + super.enable(); + if (!this.initialized) { + return; + } + this.instrumentationV2_V3.enable(); + this.instrumentationV4_V5.enable(); + } + disable() { + super.disable(); + if (!this.initialized) { + return; + } + this.instrumentationV2_V3.disable(); + this.instrumentationV4_V5.disable(); + } +} +exports.RedisInstrumentation = RedisInstrumentation; +//# sourceMappingURL=redis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/redis.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/redis.js.map new file mode 100644 index 0000000..d62ac3e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/redis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/redis.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,oEAGwC;AAExC,kBAAkB;AAClB,uCAA0D;AAC1D,6DAAoE;AAEpE,6DAAoE;AAEpE,MAAM,cAAc,GAA+B;IACjD,iBAAiB,EAAE,KAAK;CACzB,CAAC;AAEF,mEAAmE;AACnE,MAAa,oBAAqB,SAAQ,qCAA+C;IAC/E,oBAAoB,CAA4B;IAChD,oBAAoB,CAA4B;IAExD,gFAAgF;IAChF,iGAAiG;IACzF,WAAW,GAAG,KAAK,CAAC;IAE5B,YAAY,SAAqC,EAAE;QACjD,MAAM,cAAc,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QACxD,KAAK,CAAC,sBAAY,EAAE,yBAAe,EAAE,cAAc,CAAC,CAAC;QAErD,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEQ,SAAS,CAAC,SAAqC,EAAE;QACxD,MAAM,SAAS,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QACnD,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QAED,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAEQ,IAAI,KAAI,CAAC;IAElB,sHAAsH;IACtH,wFAAwF;IAC/E,oBAAoB;QAC3B,OAAO;YACL,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE;YACnD,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE;SACpD,CAAC;IACJ,CAAC;IAEQ,iBAAiB,CAAC,cAA8B;QACvD,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QACD,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAC5D,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAEQ,MAAM;QACb,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;IACrC,CAAC;IAEQ,OAAO;QACd,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QACD,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;CACF;AAjED,oDAiEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n InstrumentationBase,\n InstrumentationModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport { RedisInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { RedisInstrumentationV2_V3 } from './v2-v3/instrumentation';\nimport { TracerProvider } from '@opentelemetry/api';\nimport { RedisInstrumentationV4_V5 } from './v4-v5/instrumentation';\n\nconst DEFAULT_CONFIG: RedisInstrumentationConfig = {\n requireParentSpan: false,\n};\n\n// Wrapper RedisInstrumentation that address all supported versions\nexport class RedisInstrumentation extends InstrumentationBase {\n private instrumentationV2_V3: RedisInstrumentationV2_V3;\n private instrumentationV4_V5: RedisInstrumentationV4_V5;\n\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 private initialized = false;\n\n constructor(config: RedisInstrumentationConfig = {}) {\n const resolvedConfig = { ...DEFAULT_CONFIG, ...config };\n super(PACKAGE_NAME, PACKAGE_VERSION, resolvedConfig);\n\n this.instrumentationV2_V3 = new RedisInstrumentationV2_V3(this.getConfig());\n this.instrumentationV4_V5 = new RedisInstrumentationV4_V5(this.getConfig());\n this.initialized = true;\n }\n\n override setConfig(config: RedisInstrumentationConfig = {}) {\n const newConfig = { ...DEFAULT_CONFIG, ...config };\n super.setConfig(newConfig);\n if (!this.initialized) {\n return;\n }\n\n this.instrumentationV2_V3.setConfig(newConfig);\n this.instrumentationV4_V5.setConfig(newConfig);\n }\n\n override init() {}\n\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 override getModuleDefinitions(): InstrumentationModuleDefinition[] {\n return [\n ...this.instrumentationV2_V3.getModuleDefinitions(),\n ...this.instrumentationV4_V5.getModuleDefinitions(),\n ];\n }\n\n override setTracerProvider(tracerProvider: 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\n override enable() {\n super.enable();\n if (!this.initialized) {\n return;\n }\n this.instrumentationV2_V3.enable();\n this.instrumentationV4_V5.enable();\n }\n\n override disable() {\n super.disable();\n if (!this.initialized) {\n return;\n }\n this.instrumentationV2_V3.disable();\n this.instrumentationV4_V5.disable();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.d.ts new file mode 100644 index 0000000..0ccccfb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.d.ts @@ -0,0 +1,66 @@ +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export declare const ATTR_DB_CONNECTION_STRING: "db.connection_string"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Redis](https://redis.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_REDIS: "redis"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM}. + * + * Redis + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_REDIS: "redis"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.js new file mode 100644 index 0000000..335175f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.js @@ -0,0 +1,89 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +exports.ATTR_DB_CONNECTION_STRING = 'db.connection_string'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +exports.ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +exports.ATTR_DB_SYSTEM = 'db.system'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Redis](https://redis.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_REDIS = 'redis'; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM}. + * + * Redis + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_REDIS = 'redis'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.js.map new file mode 100644 index 0000000..08e855b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = 'redis' as const;\n\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 */\nexport const DB_SYSTEM_VALUE_REDIS = 'redis' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/types.d.ts new file mode 100644 index 0000000..261768c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/types.d.ts @@ -0,0 +1,40 @@ +/// +/// +import { Span } from '@opentelemetry/api'; +import { InstrumentationConfig, SemconvStability } from '@opentelemetry/instrumentation'; +/** + * Function that can be used to serialize db.statement tag + * @param cmdName - The name of the command (eg. set, get, mset) + * @param cmdArgs - Array of arguments passed to the command + * + * @returns serialized string that will be used as the db.statement attribute. + */ +export type DbStatementSerializer = (cmdName: string, cmdArgs: Array) => string; +/** + * Function that can be used to add custom attributes to span on response from redis server + * @param span - The span created for the redis command, on which attributes can be set + * @param cmdName - The name of the command (eg. set, get, mset) + * @param cmdArgs - Array of arguments passed to the command + * @param response - The response object which is returned to the user who called this command. + * Can be used to set custom attributes on the span. + * The type of the response varies depending on the specific command. + */ +export interface RedisResponseCustomAttributeFunction { + (span: Span, cmdName: string, cmdArgs: Array, response: unknown): void; +} +export interface RedisInstrumentationConfig extends InstrumentationConfig { + /** Custom serializer function for the db.statement tag */ + dbStatementSerializer?: DbStatementSerializer; + /** Function for adding custom attributes on db response */ + responseHook?: RedisResponseCustomAttributeFunction; + /** Require parent to create redis span, default when unset is false */ + requireParentSpan?: boolean; + /** + * Controls which semantic-convention attributes are emitted on spans. + * Default: 'OLD'. + * When this option is set, it takes precedence over any value provided via + * the OTEL_SEMCONV_STABILITY_OPT_IN environment variable. + */ + semconvStability?: SemconvStability; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/types.js.map new file mode 100644 index 0000000..67bfd4e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Span } from '@opentelemetry/api';\nimport {\n InstrumentationConfig,\n SemconvStability,\n} from '@opentelemetry/instrumentation';\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmdName - The name of the command (eg. set, get, mset)\n * @param cmdArgs - Array of arguments passed to the command\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (\n cmdName: string,\n cmdArgs: Array\n) => string;\n\n/**\n * Function that can be used to add custom attributes to span on response from redis server\n * @param span - The span created for the redis command, on which attributes can be set\n * @param cmdName - The name of the command (eg. set, get, mset)\n * @param cmdArgs - Array of arguments passed to the command\n * @param response - The response object which is returned to the user who called this command.\n * Can be used to set custom attributes on the span.\n * The type of the response varies depending on the specific command.\n */\nexport interface RedisResponseCustomAttributeFunction {\n (\n span: Span,\n cmdName: string,\n cmdArgs: Array,\n response: unknown\n ): void;\n}\n\nexport interface RedisInstrumentationConfig extends InstrumentationConfig {\n /** Custom serializer function for the db.statement tag */\n dbStatementSerializer?: DbStatementSerializer;\n\n /** Function for adding custom attributes on db response */\n responseHook?: RedisResponseCustomAttributeFunction;\n\n /** Require parent to create redis span, default when unset is false */\n requireParentSpan?: boolean;\n\n /**\n * Controls which semantic-convention attributes are emitted on spans.\n * Default: 'OLD'.\n * When this option is set, it takes precedence over any value provided via\n * the OTEL_SEMCONV_STABILITY_OPT_IN environment variable.\n */\n semconvStability?: SemconvStability;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.d.ts new file mode 100644 index 0000000..40cff6f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.d.ts @@ -0,0 +1,16 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { RedisInstrumentationConfig } from '../types'; +export declare class RedisInstrumentationV2_V3 extends InstrumentationBase { + static readonly COMPONENT = "redis"; + private _semconvStability; + constructor(config?: RedisInstrumentationConfig); + setConfig(config?: RedisInstrumentationConfig): void; + protected init(): InstrumentationNodeModuleDefinition[]; + /** + * Patch internal_send_command(...) to trace requests + */ + private _getPatchInternalSendCommand; + private _getPatchCreateClient; + private _getPatchCreateStream; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.js new file mode 100644 index 0000000..86a8a34 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.js @@ -0,0 +1,166 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RedisInstrumentationV2_V3 = void 0; +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const utils_1 = require("./utils"); +/** @knipignore */ +const version_1 = require("../version"); +const api_1 = require("@opentelemetry/api"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("../semconv"); +const redis_common_1 = require("@opentelemetry/redis-common"); +class RedisInstrumentationV2_V3 extends instrumentation_1.InstrumentationBase { + static COMPONENT = 'redis'; + _semconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + this._semconvStability = config.semconvStability + ? config.semconvStability + : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + setConfig(config = {}) { + super.setConfig(config); + this._semconvStability = config.semconvStability + ? config.semconvStability + : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + init() { + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition('redis', ['>=2.6.0 <4'], moduleExports => { + if ((0, instrumentation_1.isWrapped)(moduleExports.RedisClient.prototype['internal_send_command'])) { + this._unwrap(moduleExports.RedisClient.prototype, 'internal_send_command'); + } + this._wrap(moduleExports.RedisClient.prototype, 'internal_send_command', this._getPatchInternalSendCommand()); + if ((0, instrumentation_1.isWrapped)(moduleExports.RedisClient.prototype['create_stream'])) { + this._unwrap(moduleExports.RedisClient.prototype, 'create_stream'); + } + this._wrap(moduleExports.RedisClient.prototype, 'create_stream', this._getPatchCreateStream()); + if ((0, instrumentation_1.isWrapped)(moduleExports.createClient)) { + this._unwrap(moduleExports, 'createClient'); + } + this._wrap(moduleExports, 'createClient', this._getPatchCreateClient()); + return moduleExports; + }, moduleExports => { + if (moduleExports === undefined) + return; + this._unwrap(moduleExports.RedisClient.prototype, 'internal_send_command'); + this._unwrap(moduleExports.RedisClient.prototype, 'create_stream'); + this._unwrap(moduleExports, 'createClient'); + }), + ]; + } + /** + * Patch internal_send_command(...) to trace requests + */ + _getPatchInternalSendCommand() { + const instrumentation = this; + return function internal_send_command(original) { + return function internal_send_command_trace(cmd) { + // Versions of redis (2.4+) use a single options object + // instead of named arguments + if (arguments.length !== 1 || typeof cmd !== 'object') { + // We don't know how to trace this call, so don't start/stop a span + return original.apply(this, arguments); + } + const config = instrumentation.getConfig(); + const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined; + if (config.requireParentSpan === true && hasNoParentSpan) { + return original.apply(this, arguments); + } + const dbStatementSerializer = config?.dbStatementSerializer || redis_common_1.defaultDbStatementSerializer; + const attributes = {}; + if (instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) { + Object.assign(attributes, { + [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_REDIS, + [semconv_1.ATTR_DB_STATEMENT]: dbStatementSerializer(cmd.command, cmd.args), + }); + } + if (instrumentation._semconvStability & instrumentation_1.SemconvStability.STABLE) { + Object.assign(attributes, { + [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semconv_1.DB_SYSTEM_NAME_VALUE_REDIS, + [semantic_conventions_1.ATTR_DB_OPERATION_NAME]: cmd.command, + [semantic_conventions_1.ATTR_DB_QUERY_TEXT]: dbStatementSerializer(cmd.command, cmd.args), + }); + } + const span = instrumentation.tracer.startSpan(`${RedisInstrumentationV2_V3.COMPONENT}-${cmd.command}`, { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + // Set attributes for not explicitly typed RedisPluginClientTypes + if (this.connection_options) { + const connectionAttributes = {}; + if (instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) { + Object.assign(connectionAttributes, { + [semconv_1.ATTR_NET_PEER_NAME]: this.connection_options.host, + [semconv_1.ATTR_NET_PEER_PORT]: this.connection_options.port, + }); + } + if (instrumentation._semconvStability & instrumentation_1.SemconvStability.STABLE) { + Object.assign(connectionAttributes, { + [semantic_conventions_1.ATTR_SERVER_ADDRESS]: this.connection_options.host, + [semantic_conventions_1.ATTR_SERVER_PORT]: this.connection_options.port, + }); + } + span.setAttributes(connectionAttributes); + } + if (this.address && + instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) { + span.setAttribute(semconv_1.ATTR_DB_CONNECTION_STRING, `redis://${this.address}`); + } + const originalCallback = arguments[0].callback; + if (originalCallback) { + const originalContext = api_1.context.active(); + arguments[0].callback = function callback(err, reply) { + if (config?.responseHook) { + const responseHook = config.responseHook; + (0, instrumentation_1.safeExecuteInTheMiddle)(() => { + responseHook(span, cmd.command, cmd.args, reply); + }, err => { + if (err) { + instrumentation._diag.error('Error executing responseHook', err); + } + }, true); + } + (0, utils_1.endSpan)(span, err); + return api_1.context.with(originalContext, originalCallback, this, ...arguments); + }; + } + try { + // Span will be ended in callback + return original.apply(this, arguments); + } + catch (rethrow) { + (0, utils_1.endSpan)(span, rethrow); + throw rethrow; // rethrow after ending span + } + }; + }; + } + _getPatchCreateClient() { + return function createClient(original) { + return (0, utils_1.getTracedCreateClient)(original); + }; + } + _getPatchCreateStream() { + return function createReadStream(original) { + return (0, utils_1.getTracedCreateStreamTrace)(original); + }; + } +} +exports.RedisInstrumentationV2_V3 = RedisInstrumentationV2_V3; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.js.map new file mode 100644 index 0000000..d81e91f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../src/v2-v3/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n isWrapped,\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n safeExecuteInTheMiddle,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n endSpan,\n getTracedCreateClient,\n getTracedCreateStreamTrace,\n} from './utils';\nimport { RedisInstrumentationConfig } from '../types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from '../version';\nimport type { RedisCommand, RedisPluginClientTypes } from './internal-types';\nimport { Attributes, SpanKind, context, trace } from '@opentelemetry/api';\nimport {\n ATTR_DB_SYSTEM_NAME,\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_OPERATION_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n DB_SYSTEM_NAME_VALUE_REDIS,\n DB_SYSTEM_VALUE_REDIS,\n} from '../semconv';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\n\nexport class RedisInstrumentationV2_V3 extends InstrumentationBase {\n static readonly COMPONENT = 'redis';\n private _semconvStability: SemconvStability;\n\n constructor(config: RedisInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n this._semconvStability = config.semconvStability\n ? config.semconvStability\n : semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n override setConfig(config: RedisInstrumentationConfig = {}) {\n super.setConfig(config);\n this._semconvStability = config.semconvStability\n ? config.semconvStability\n : semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'redis',\n ['>=2.6.0 <4'],\n moduleExports => {\n if (\n isWrapped(\n moduleExports.RedisClient.prototype['internal_send_command']\n )\n ) {\n this._unwrap(\n moduleExports.RedisClient.prototype,\n 'internal_send_command'\n );\n }\n this._wrap(\n moduleExports.RedisClient.prototype,\n 'internal_send_command',\n this._getPatchInternalSendCommand()\n );\n\n if (isWrapped(moduleExports.RedisClient.prototype['create_stream'])) {\n this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n }\n this._wrap(\n moduleExports.RedisClient.prototype,\n 'create_stream',\n this._getPatchCreateStream()\n );\n\n if (isWrapped(moduleExports.createClient)) {\n this._unwrap(moduleExports, 'createClient');\n }\n this._wrap(\n moduleExports,\n 'createClient',\n this._getPatchCreateClient()\n );\n return moduleExports;\n },\n moduleExports => {\n if (moduleExports === undefined) return;\n this._unwrap(\n moduleExports.RedisClient.prototype,\n 'internal_send_command'\n );\n this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n this._unwrap(moduleExports, 'createClient');\n }\n ),\n ];\n }\n\n /**\n * Patch internal_send_command(...) to trace requests\n */\n private _getPatchInternalSendCommand() {\n const instrumentation = this;\n return function internal_send_command(original: Function) {\n return function internal_send_command_trace(\n this: RedisPluginClientTypes,\n cmd?: RedisCommand\n ) {\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\n const config = instrumentation.getConfig();\n\n const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n if (config.requireParentSpan === true && hasNoParentSpan) {\n return original.apply(this, arguments);\n }\n\n const dbStatementSerializer =\n config?.dbStatementSerializer || defaultDbStatementSerializer;\n\n const attributes: Attributes = {};\n\n if (instrumentation._semconvStability & SemconvStability.OLD) {\n Object.assign(attributes, {\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n [ATTR_DB_STATEMENT]: dbStatementSerializer(cmd.command, cmd.args),\n });\n }\n\n if (instrumentation._semconvStability & SemconvStability.STABLE) {\n Object.assign(attributes, {\n [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_REDIS,\n [ATTR_DB_OPERATION_NAME]: cmd.command,\n [ATTR_DB_QUERY_TEXT]: dbStatementSerializer(cmd.command, cmd.args),\n });\n }\n\n const span = instrumentation.tracer.startSpan(\n `${RedisInstrumentationV2_V3.COMPONENT}-${cmd.command}`,\n {\n kind: SpanKind.CLIENT,\n attributes,\n }\n );\n\n // Set attributes for not explicitly typed RedisPluginClientTypes\n if (this.connection_options) {\n const connectionAttributes: Attributes = {};\n\n if (instrumentation._semconvStability & SemconvStability.OLD) {\n Object.assign(connectionAttributes, {\n [ATTR_NET_PEER_NAME]: this.connection_options.host,\n [ATTR_NET_PEER_PORT]: this.connection_options.port,\n });\n }\n\n if (instrumentation._semconvStability & SemconvStability.STABLE) {\n Object.assign(connectionAttributes, {\n [ATTR_SERVER_ADDRESS]: this.connection_options.host,\n [ATTR_SERVER_PORT]: this.connection_options.port,\n });\n }\n\n span.setAttributes(connectionAttributes);\n }\n\n if (\n this.address &&\n instrumentation._semconvStability & SemconvStability.OLD\n ) {\n span.setAttribute(\n ATTR_DB_CONNECTION_STRING,\n `redis://${this.address}`\n );\n }\n\n const originalCallback = arguments[0].callback;\n if (originalCallback) {\n const originalContext = context.active();\n (arguments[0] as RedisCommand).callback = function callback(\n this: unknown,\n err: Error | null,\n reply: T\n ) {\n if (config?.responseHook) {\n const responseHook = config.responseHook;\n safeExecuteInTheMiddle(\n () => {\n responseHook(span, cmd.command, cmd.args, reply);\n },\n err => {\n if (err) {\n instrumentation._diag.error(\n 'Error executing responseHook',\n err\n );\n }\n },\n true\n );\n }\n\n endSpan(span, err);\n return context.with(\n originalContext,\n originalCallback,\n this,\n ...arguments\n );\n };\n }\n try {\n // Span will be ended in callback\n return original.apply(this, arguments);\n } catch (rethrow: any) {\n endSpan(span, rethrow);\n throw rethrow; // rethrow after ending span\n }\n };\n };\n }\n\n private _getPatchCreateClient() {\n return function createClient(original: Function) {\n return getTracedCreateClient(original);\n };\n }\n\n private _getPatchCreateStream() {\n return function createReadStream(original: Function) {\n return getTracedCreateStreamTrace(original);\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/internal-types.d.ts new file mode 100644 index 0000000..066bba6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/internal-types.d.ts @@ -0,0 +1,16 @@ +export interface RedisPluginClientTypes { + connection_options?: { + port?: string; + host?: string; + }; + address?: string; +} +export interface RedisCommand { + command: string; + args: string[]; + buffer_args: boolean; + callback: (err: Error | null, reply: unknown) => void; + call_on_write: boolean; +} +export type Callback = (err: Error | null, reply: T) => void; +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/internal-types.js new file mode 100644 index 0000000..0d014f4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/internal-types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/internal-types.js.map new file mode 100644 index 0000000..4550a40 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../../src/v2-v3/internal-types.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport interface RedisPluginClientTypes {\n connection_options?: {\n port?: string;\n host?: string;\n };\n\n address?: string;\n}\n\n// exported from\n// https://github.com/redis/node-redis/blob/v3.1.2/lib/command.js\nexport interface RedisCommand {\n command: string;\n args: string[];\n buffer_args: boolean;\n callback: (err: Error | null, reply: unknown) => void;\n call_on_write: boolean;\n}\n\n// Exported from \"@types/redis@2.8.32\".\nexport type Callback = (err: Error | null, reply: T) => void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.d.ts new file mode 100644 index 0000000..742366c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.d.ts @@ -0,0 +1,5 @@ +import { Span } from '@opentelemetry/api'; +export declare const endSpan: (span: Span, err?: Error | null) => void; +export declare const getTracedCreateClient: (original: Function) => (this: any) => any; +export declare const getTracedCreateStreamTrace: (original: Function) => (this: any) => any; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.js new file mode 100644 index 0000000..05bd874 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.js @@ -0,0 +1,54 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getTracedCreateStreamTrace = exports.getTracedCreateClient = exports.endSpan = void 0; +const api_1 = require("@opentelemetry/api"); +const endSpan = (span, err) => { + if (err) { + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: err.message, + }); + } + span.end(); +}; +exports.endSpan = endSpan; +const getTracedCreateClient = (original) => { + return function createClientTrace() { + const client = original.apply(this, arguments); + return api_1.context.bind(api_1.context.active(), client); + }; +}; +exports.getTracedCreateClient = getTracedCreateClient; +const getTracedCreateStreamTrace = (original) => { + return function create_stream_trace() { + if (!Object.prototype.hasOwnProperty.call(this, 'stream')) { + Object.defineProperty(this, 'stream', { + get() { + return this._patched_redis_stream; + }, + set(val) { + api_1.context.bind(api_1.context.active(), val); + this._patched_redis_stream = val; + }, + }); + } + return original.apply(this, arguments); + }; +}; +exports.getTracedCreateStreamTrace = getTracedCreateStreamTrace; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.js.map new file mode 100644 index 0000000..88b5d8f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/v2-v3/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAmE;AAG5D,MAAM,OAAO,GAAG,CAAC,IAAU,EAAE,GAAkB,EAAE,EAAE;IACxD,IAAI,GAAG,EAAE;QACP,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,oBAAc,CAAC,KAAK;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;KACJ;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,CAAC,CAAC;AARW,QAAA,OAAO,WAQlB;AAEK,MAAM,qBAAqB,GAAG,CAAC,QAAkB,EAAE,EAAE;IAC1D,OAAO,SAAS,iBAAiB;QAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,OAAO,aAAO,CAAC,IAAI,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC,CAAC;AALW,QAAA,qBAAqB,yBAKhC;AAEK,MAAM,0BAA0B,GAAG,CAAC,QAAkB,EAAE,EAAE;IAC/D,OAAO,SAAS,mBAAmB;QACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;YACzD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;gBACpC,GAAG;oBACD,OAAO,IAAI,CAAC,qBAAqB,CAAC;gBACpC,CAAC;gBACD,GAAG,CAAC,GAAiB;oBACnB,aAAO,CAAC,IAAI,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;oBACpC,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC;gBACnC,CAAC;aACF,CAAC,CAAC;SACJ;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,0BAA0B,8BAerC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { context, Span, SpanStatusCode } from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\n\nexport const endSpan = (span: Span, err?: Error | null) => {\n if (err) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n span.end();\n};\n\nexport const getTracedCreateClient = (original: Function) => {\n return function createClientTrace(this: any) {\n const client = original.apply(this, arguments);\n return context.bind(context.active(), client);\n };\n};\n\nexport const getTracedCreateStreamTrace = (original: Function) => {\n return function create_stream_trace(this: any) {\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: EventEmitter) {\n context.bind(context.active(), val);\n this._patched_redis_stream = val;\n },\n });\n }\n return original.apply(this, arguments);\n };\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.d.ts new file mode 100644 index 0000000..9dfb334 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.d.ts @@ -0,0 +1,20 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { RedisInstrumentationConfig } from '../types'; +export declare class RedisInstrumentationV4_V5 extends InstrumentationBase { + static readonly COMPONENT = "redis"; + private _semconvStability; + constructor(config?: RedisInstrumentationConfig); + setConfig(config?: RedisInstrumentationConfig): void; + protected init(): InstrumentationNodeModuleDefinition[]; + private _getInstrumentationNodeModuleDefinition; + private _getPatchExtendWithCommands; + private _getPatchMultiCommandsExec; + private _getPatchMultiCommandsAddCommand; + private _getPatchRedisClientMulti; + private _getPatchRedisClientSendCommand; + private _getPatchedClientConnect; + private _traceClientCommand; + private _endSpansWithRedisReplies; + private _endSpanWithResponse; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.js new file mode 100644 index 0000000..96e025f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.js @@ -0,0 +1,351 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RedisInstrumentationV4_V5 = void 0; +const api_1 = require("@opentelemetry/api"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const utils_1 = require("./utils"); +const redis_common_1 = require("@opentelemetry/redis-common"); +/** @knipignore */ +const version_1 = require("../version"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("../semconv"); +const OTEL_OPEN_SPANS = Symbol('opentelemetry.instrumentation.redis.open_spans'); +const MULTI_COMMAND_OPTIONS = Symbol('opentelemetry.instrumentation.redis.multi_command_options'); +class RedisInstrumentationV4_V5 extends instrumentation_1.InstrumentationBase { + static COMPONENT = 'redis'; + _semconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + this._semconvStability = config.semconvStability + ? config.semconvStability + : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + setConfig(config = {}) { + super.setConfig(config); + this._semconvStability = config.semconvStability + ? config.semconvStability + : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + init() { + // @node-redis/client is a new package introduced and consumed by 'redis 4.0.x' + // on redis@4.1.0 it was changed to @redis/client. + // we will instrument both packages + return [ + this._getInstrumentationNodeModuleDefinition('@redis/client'), + this._getInstrumentationNodeModuleDefinition('@node-redis/client'), + ]; + } + _getInstrumentationNodeModuleDefinition(basePackageName) { + const commanderModuleFile = new instrumentation_1.InstrumentationNodeModuleFile(`${basePackageName}/dist/lib/commander.js`, ['^1.0.0'], (moduleExports, moduleVersion) => { + const transformCommandArguments = moduleExports.transformCommandArguments; + if (!transformCommandArguments) { + this._diag.error('internal instrumentation error, missing transformCommandArguments function'); + return moduleExports; + } + // function name and signature changed in redis 4.1.0 from 'extendWithCommands' to 'attachCommands' + // the matching internal package names starts with 1.0.x (for redis 4.0.x) + const functionToPatch = moduleVersion?.startsWith('1.0.') + ? 'extendWithCommands' + : 'attachCommands'; + // this is the function that extend a redis client with a list of commands. + // the function patches the commandExecutor to record a span + if ((0, instrumentation_1.isWrapped)(moduleExports?.[functionToPatch])) { + this._unwrap(moduleExports, functionToPatch); + } + this._wrap(moduleExports, functionToPatch, this._getPatchExtendWithCommands(transformCommandArguments)); + return moduleExports; + }, (moduleExports) => { + if ((0, instrumentation_1.isWrapped)(moduleExports?.extendWithCommands)) { + this._unwrap(moduleExports, 'extendWithCommands'); + } + if ((0, instrumentation_1.isWrapped)(moduleExports?.attachCommands)) { + this._unwrap(moduleExports, 'attachCommands'); + } + }); + const multiCommanderModule = new instrumentation_1.InstrumentationNodeModuleFile(`${basePackageName}/dist/lib/client/multi-command.js`, ['^1.0.0', '^5.0.0'], (moduleExports) => { + const redisClientMultiCommandPrototype = moduleExports?.default?.prototype; + if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.exec)) { + this._unwrap(redisClientMultiCommandPrototype, 'exec'); + } + this._wrap(redisClientMultiCommandPrototype, 'exec', this._getPatchMultiCommandsExec(false)); + if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.execAsPipeline)) { + this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline'); + } + this._wrap(redisClientMultiCommandPrototype, 'execAsPipeline', this._getPatchMultiCommandsExec(true)); + if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.addCommand)) { + this._unwrap(redisClientMultiCommandPrototype, 'addCommand'); + } + this._wrap(redisClientMultiCommandPrototype, 'addCommand', this._getPatchMultiCommandsAddCommand()); + return moduleExports; + }, (moduleExports) => { + const redisClientMultiCommandPrototype = moduleExports?.default?.prototype; + if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.exec)) { + this._unwrap(redisClientMultiCommandPrototype, 'exec'); + } + if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.addCommand)) { + this._unwrap(redisClientMultiCommandPrototype, 'addCommand'); + } + }); + const clientIndexModule = new instrumentation_1.InstrumentationNodeModuleFile(`${basePackageName}/dist/lib/client/index.js`, ['^1.0.0', '^5.0.0'], (moduleExports) => { + const redisClientPrototype = moduleExports?.default?.prototype; + // In some @redis/client versions 'multi' is a method. In later + // versions, as of https://github.com/redis/node-redis/pull/2324, + // 'MULTI' is a method and 'multi' is a property defined in the + // constructor that points to 'MULTI', and therefore it will not + // be defined on the prototype. + if (redisClientPrototype?.multi) { + if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.multi)) { + this._unwrap(redisClientPrototype, 'multi'); + } + this._wrap(redisClientPrototype, 'multi', this._getPatchRedisClientMulti()); + } + if (redisClientPrototype?.MULTI) { + if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.MULTI)) { + this._unwrap(redisClientPrototype, 'MULTI'); + } + this._wrap(redisClientPrototype, 'MULTI', this._getPatchRedisClientMulti()); + } + if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.sendCommand)) { + this._unwrap(redisClientPrototype, 'sendCommand'); + } + this._wrap(redisClientPrototype, 'sendCommand', this._getPatchRedisClientSendCommand()); + this._wrap(redisClientPrototype, 'connect', this._getPatchedClientConnect()); + return moduleExports; + }, (moduleExports) => { + const redisClientPrototype = moduleExports?.default?.prototype; + if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.multi)) { + this._unwrap(redisClientPrototype, 'multi'); + } + if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.MULTI)) { + this._unwrap(redisClientPrototype, 'MULTI'); + } + if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.sendCommand)) { + this._unwrap(redisClientPrototype, 'sendCommand'); + } + }); + return new instrumentation_1.InstrumentationNodeModuleDefinition(basePackageName, ['^1.0.0', '^5.0.0'], (moduleExports) => { + return moduleExports; + }, () => { }, [commanderModuleFile, multiCommanderModule, clientIndexModule]); + } + // serves both for redis 4.0.x where function name is extendWithCommands + // and redis ^4.1.0 where function name is attachCommands + _getPatchExtendWithCommands(transformCommandArguments) { + const plugin = this; + return function extendWithCommandsPatchWrapper(original) { + return function extendWithCommandsPatch(config) { + if (config?.BaseClass?.name !== 'RedisClient') { + return original.apply(this, arguments); + } + const origExecutor = config.executor; + config.executor = function (command, args) { + const redisCommandArguments = transformCommandArguments(command, args).args; + return plugin._traceClientCommand(origExecutor, this, arguments, redisCommandArguments); + }; + return original.apply(this, arguments); + }; + }; + } + _getPatchMultiCommandsExec(isPipeline) { + const plugin = this; + return function execPatchWrapper(original) { + return function execPatch() { + const execRes = original.apply(this, arguments); + if (typeof execRes?.then !== 'function') { + plugin._diag.error('non-promise result when patching exec/execAsPipeline'); + return execRes; + } + return execRes + .then((redisRes) => { + const openSpans = this[OTEL_OPEN_SPANS]; + plugin._endSpansWithRedisReplies(openSpans, redisRes, isPipeline); + return redisRes; + }) + .catch((err) => { + const openSpans = this[OTEL_OPEN_SPANS]; + if (!openSpans) { + plugin._diag.error('cannot find open spans to end for multi/pipeline'); + } + else { + const replies = err.constructor.name === 'MultiErrorReply' + ? err.replies + : new Array(openSpans.length).fill(err); + plugin._endSpansWithRedisReplies(openSpans, replies, isPipeline); + } + return Promise.reject(err); + }); + }; + }; + } + _getPatchMultiCommandsAddCommand() { + const plugin = this; + return function addCommandWrapper(original) { + return function addCommandPatch(args) { + return plugin._traceClientCommand(original, this, arguments, args); + }; + }; + } + _getPatchRedisClientMulti() { + return function multiPatchWrapper(original) { + return function multiPatch() { + const multiRes = original.apply(this, arguments); + multiRes[MULTI_COMMAND_OPTIONS] = this.options; + return multiRes; + }; + }; + } + _getPatchRedisClientSendCommand() { + const plugin = this; + return function sendCommandWrapper(original) { + return function sendCommandPatch(args) { + return plugin._traceClientCommand(original, this, arguments, args); + }; + }; + } + _getPatchedClientConnect() { + const plugin = this; + return function connectWrapper(original) { + return function patchedConnect() { + const options = this.options; + const attributes = (0, utils_1.getClientAttributes)(plugin._diag, options, plugin._semconvStability); + const span = plugin.tracer.startSpan(`${RedisInstrumentationV4_V5.COMPONENT}-connect`, { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + const res = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => { + return original.apply(this); + }); + return res + .then((result) => { + span.end(); + return result; + }) + .catch((error) => { + span.recordException(error); + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: error.message, + }); + span.end(); + return Promise.reject(error); + }); + }; + }; + } + _traceClientCommand(origFunction, origThis, origArguments, redisCommandArguments) { + const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined; + if (hasNoParentSpan && this.getConfig().requireParentSpan) { + return origFunction.apply(origThis, origArguments); + } + const clientOptions = origThis.options || origThis[MULTI_COMMAND_OPTIONS]; + const commandName = redisCommandArguments[0]; // types also allows it to be a Buffer, but in practice it only string + const commandArgs = redisCommandArguments.slice(1); + const dbStatementSerializer = this.getConfig().dbStatementSerializer || redis_common_1.defaultDbStatementSerializer; + const attributes = (0, utils_1.getClientAttributes)(this._diag, clientOptions, this._semconvStability); + if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = commandName; + } + try { + const dbStatement = dbStatementSerializer(commandName, commandArgs); + if (dbStatement != null) { + if (this._semconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_STATEMENT] = dbStatement; + } + if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbStatement; + } + } + } + catch (e) { + this._diag.error('dbStatementSerializer throw an exception', e, { + commandName, + }); + } + const span = this.tracer.startSpan(`${RedisInstrumentationV4_V5.COMPONENT}-${commandName}`, { + kind: api_1.SpanKind.CLIENT, + attributes, + }); + const res = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => { + return origFunction.apply(origThis, origArguments); + }); + if (typeof res?.then === 'function') { + res.then((redisRes) => { + this._endSpanWithResponse(span, commandName, commandArgs, redisRes, undefined); + }, (err) => { + this._endSpanWithResponse(span, commandName, commandArgs, null, err); + }); + } + else { + const redisClientMultiCommand = res; + redisClientMultiCommand[OTEL_OPEN_SPANS] = + redisClientMultiCommand[OTEL_OPEN_SPANS] || []; + redisClientMultiCommand[OTEL_OPEN_SPANS].push({ + span, + commandName, + commandArgs, + }); + } + return res; + } + _endSpansWithRedisReplies(openSpans, replies, isPipeline = false) { + if (!openSpans) { + return this._diag.error('cannot find open spans to end for redis multi/pipeline'); + } + if (replies.length !== openSpans.length) { + return this._diag.error('number of multi command spans does not match response from redis'); + } + // Determine a single operation name for the batch of commands. + // If all commands are identical, include the command name (e.g., "MULTI SET"). + // Otherwise, use a generic "MULTI" or "PIPELINE" label for the span. + const allCommands = openSpans.map(s => s.commandName); + const allSameCommand = allCommands.every(cmd => cmd === allCommands[0]); + const operationName = allSameCommand + ? (isPipeline ? 'PIPELINE ' : 'MULTI ') + allCommands[0] + : isPipeline + ? 'PIPELINE' + : 'MULTI'; + for (let i = 0; i < openSpans.length; i++) { + const { span, commandArgs } = openSpans[i]; + const currCommandRes = replies[i]; + const [res, err] = currCommandRes instanceof Error + ? [null, currCommandRes] + : [currCommandRes, undefined]; + if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) { + span.setAttribute(semantic_conventions_1.ATTR_DB_OPERATION_NAME, operationName); + } + this._endSpanWithResponse(span, allCommands[i], commandArgs, res, err); + } + } + _endSpanWithResponse(span, commandName, commandArgs, response, error) { + const { responseHook } = this.getConfig(); + if (!error && responseHook) { + try { + responseHook(span, commandName, commandArgs, response); + } + catch (err) { + this._diag.error('responseHook throw an exception', err); + } + } + if (error) { + span.recordException(error); + span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error?.message }); + } + span.end(); + } +} +exports.RedisInstrumentationV4_V5 = RedisInstrumentationV4_V5; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.js.map new file mode 100644 index 0000000..84d8498 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../src/v4-v5/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n trace,\n context,\n SpanKind,\n Span,\n SpanStatusCode,\n} from '@opentelemetry/api';\nimport {\n isWrapped,\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { getClientAttributes } from './utils';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\nimport { RedisInstrumentationConfig } from '../types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from '../version';\nimport {\n ATTR_DB_OPERATION_NAME,\n ATTR_DB_QUERY_TEXT,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_DB_STATEMENT } from '../semconv';\nimport type { MultiErrorReply } from './internal-types';\n\nconst OTEL_OPEN_SPANS = Symbol(\n 'opentelemetry.instrumentation.redis.open_spans'\n);\nconst MULTI_COMMAND_OPTIONS = Symbol(\n 'opentelemetry.instrumentation.redis.multi_command_options'\n);\n\ninterface MutliCommandInfo {\n span: Span;\n commandName: string;\n commandArgs: Array;\n}\n\nexport class RedisInstrumentationV4_V5 extends InstrumentationBase {\n static readonly COMPONENT = 'redis';\n private _semconvStability: SemconvStability;\n\n constructor(config: RedisInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n this._semconvStability = config.semconvStability\n ? config.semconvStability\n : semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n override setConfig(config: RedisInstrumentationConfig = {}) {\n super.setConfig(config);\n this._semconvStability = config.semconvStability\n ? config.semconvStability\n : semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n protected 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\n private _getInstrumentationNodeModuleDefinition(\n basePackageName: string\n ): InstrumentationNodeModuleDefinition {\n const commanderModuleFile = new InstrumentationNodeModuleFile(\n `${basePackageName}/dist/lib/commander.js`,\n ['^1.0.0'],\n (moduleExports: any, moduleVersion?: string) => {\n const transformCommandArguments =\n moduleExports.transformCommandArguments;\n if (!transformCommandArguments) {\n this._diag.error(\n 'internal instrumentation error, missing transformCommandArguments function'\n );\n return moduleExports;\n }\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 (isWrapped(moduleExports?.[functionToPatch])) {\n this._unwrap(moduleExports, functionToPatch);\n }\n this._wrap(\n moduleExports,\n functionToPatch,\n this._getPatchExtendWithCommands(transformCommandArguments)\n );\n\n return moduleExports;\n },\n (moduleExports: any) => {\n if (isWrapped(moduleExports?.extendWithCommands)) {\n this._unwrap(moduleExports, 'extendWithCommands');\n }\n if (isWrapped(moduleExports?.attachCommands)) {\n this._unwrap(moduleExports, 'attachCommands');\n }\n }\n );\n\n const multiCommanderModule = new InstrumentationNodeModuleFile(\n `${basePackageName}/dist/lib/client/multi-command.js`,\n ['^1.0.0', '^5.0.0'],\n (moduleExports: any) => {\n const redisClientMultiCommandPrototype =\n moduleExports?.default?.prototype;\n\n if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n this._unwrap(redisClientMultiCommandPrototype, 'exec');\n }\n this._wrap(\n redisClientMultiCommandPrototype,\n 'exec',\n this._getPatchMultiCommandsExec(false)\n );\n if (isWrapped(redisClientMultiCommandPrototype?.execAsPipeline)) {\n this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline');\n }\n this._wrap(\n redisClientMultiCommandPrototype,\n 'execAsPipeline',\n this._getPatchMultiCommandsExec(true)\n );\n\n if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n }\n this._wrap(\n redisClientMultiCommandPrototype,\n 'addCommand',\n this._getPatchMultiCommandsAddCommand()\n );\n\n return moduleExports;\n },\n (moduleExports: any) => {\n const redisClientMultiCommandPrototype =\n moduleExports?.default?.prototype;\n if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n this._unwrap(redisClientMultiCommandPrototype, 'exec');\n }\n if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n }\n }\n );\n\n const clientIndexModule = new InstrumentationNodeModuleFile(\n `${basePackageName}/dist/lib/client/index.js`,\n ['^1.0.0', '^5.0.0'],\n (moduleExports: any) => {\n const redisClientPrototype = moduleExports?.default?.prototype;\n\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 (isWrapped(redisClientPrototype?.multi)) {\n this._unwrap(redisClientPrototype, 'multi');\n }\n this._wrap(\n redisClientPrototype,\n 'multi',\n this._getPatchRedisClientMulti()\n );\n }\n if (redisClientPrototype?.MULTI) {\n if (isWrapped(redisClientPrototype?.MULTI)) {\n this._unwrap(redisClientPrototype, 'MULTI');\n }\n this._wrap(\n redisClientPrototype,\n 'MULTI',\n this._getPatchRedisClientMulti()\n );\n }\n\n if (isWrapped(redisClientPrototype?.sendCommand)) {\n this._unwrap(redisClientPrototype, 'sendCommand');\n }\n this._wrap(\n redisClientPrototype,\n 'sendCommand',\n this._getPatchRedisClientSendCommand()\n );\n\n this._wrap(\n redisClientPrototype,\n 'connect',\n this._getPatchedClientConnect()\n );\n\n return moduleExports;\n },\n (moduleExports: any) => {\n const redisClientPrototype = moduleExports?.default?.prototype;\n if (isWrapped(redisClientPrototype?.multi)) {\n this._unwrap(redisClientPrototype, 'multi');\n }\n if (isWrapped(redisClientPrototype?.MULTI)) {\n this._unwrap(redisClientPrototype, 'MULTI');\n }\n if (isWrapped(redisClientPrototype?.sendCommand)) {\n this._unwrap(redisClientPrototype, 'sendCommand');\n }\n }\n );\n\n return new InstrumentationNodeModuleDefinition(\n basePackageName,\n ['^1.0.0', '^5.0.0'],\n (moduleExports: any) => {\n return moduleExports;\n },\n () => {},\n [commanderModuleFile, multiCommanderModule, clientIndexModule]\n );\n }\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 private _getPatchExtendWithCommands(transformCommandArguments: Function) {\n const plugin = this;\n return function extendWithCommandsPatchWrapper(original: Function) {\n return function extendWithCommandsPatch(this: any, config: any) {\n if (config?.BaseClass?.name !== 'RedisClient') {\n return original.apply(this, arguments);\n }\n\n const origExecutor = config.executor;\n config.executor = function (\n this: any,\n command: any,\n args: Array\n ) {\n const redisCommandArguments = transformCommandArguments(\n command,\n args\n ).args;\n return plugin._traceClientCommand(\n origExecutor,\n this,\n arguments,\n redisCommandArguments\n );\n };\n return original.apply(this, arguments);\n };\n };\n }\n\n private _getPatchMultiCommandsExec(isPipeline: boolean) {\n const plugin = this;\n return function execPatchWrapper(original: Function) {\n return function execPatch(this: any) {\n const execRes = original.apply(this, arguments);\n if (typeof execRes?.then !== 'function') {\n plugin._diag.error(\n 'non-promise result when patching exec/execAsPipeline'\n );\n return execRes;\n }\n\n return execRes\n .then((redisRes: unknown[]) => {\n const openSpans = this[OTEL_OPEN_SPANS];\n plugin._endSpansWithRedisReplies(openSpans, redisRes, isPipeline);\n return redisRes;\n })\n .catch((err: Error) => {\n const openSpans = this[OTEL_OPEN_SPANS];\n if (!openSpans) {\n plugin._diag.error(\n 'cannot find open spans to end for multi/pipeline'\n );\n } else {\n const replies =\n err.constructor.name === 'MultiErrorReply'\n ? (err as MultiErrorReply).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\n private _getPatchMultiCommandsAddCommand() {\n const plugin = this;\n return function addCommandWrapper(original: Function) {\n return function addCommandPatch(this: any, args: Array) {\n return plugin._traceClientCommand(original, this, arguments, args);\n };\n };\n }\n\n private _getPatchRedisClientMulti() {\n return function multiPatchWrapper(original: Function) {\n return function multiPatch(this: any) {\n const multiRes = original.apply(this, arguments);\n multiRes[MULTI_COMMAND_OPTIONS] = this.options;\n return multiRes;\n };\n };\n }\n\n private _getPatchRedisClientSendCommand() {\n const plugin = this;\n return function sendCommandWrapper(original: Function) {\n return function sendCommandPatch(\n this: any,\n args: Array\n ) {\n return plugin._traceClientCommand(original, this, arguments, args);\n };\n };\n }\n\n private _getPatchedClientConnect() {\n const plugin = this;\n return function connectWrapper(original: Function) {\n return function patchedConnect(this: any): Promise {\n const options = this.options;\n const attributes = getClientAttributes(\n plugin._diag,\n options,\n plugin._semconvStability\n );\n\n const span = plugin.tracer.startSpan(\n `${RedisInstrumentationV4_V5.COMPONENT}-connect`,\n {\n kind: SpanKind.CLIENT,\n attributes,\n }\n );\n\n const res = context.with(trace.setSpan(context.active(), span), () => {\n return original.apply(this);\n });\n\n return res\n .then((result: unknown) => {\n span.end();\n return result;\n })\n .catch((error: Error) => {\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.end();\n return Promise.reject(error);\n });\n };\n };\n }\n\n private _traceClientCommand(\n origFunction: Function,\n origThis: any,\n origArguments: IArguments,\n redisCommandArguments: Array\n ) {\n const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n if (hasNoParentSpan && this.getConfig().requireParentSpan) {\n return origFunction.apply(origThis, origArguments);\n }\n\n const clientOptions = origThis.options || origThis[MULTI_COMMAND_OPTIONS];\n\n const commandName = redisCommandArguments[0] as string; // types also allows it to be a Buffer, but in practice it only string\n const commandArgs = redisCommandArguments.slice(1);\n\n const dbStatementSerializer =\n this.getConfig().dbStatementSerializer || defaultDbStatementSerializer;\n\n const attributes = getClientAttributes(\n this._diag,\n clientOptions,\n this._semconvStability\n );\n if (this._semconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_OPERATION_NAME] = commandName;\n }\n try {\n const dbStatement = dbStatementSerializer(commandName, commandArgs);\n if (dbStatement != null) {\n if (this._semconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = dbStatement;\n }\n if (this._semconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = dbStatement;\n }\n }\n } catch (e) {\n this._diag.error('dbStatementSerializer throw an exception', e, {\n commandName,\n });\n }\n\n const span = this.tracer.startSpan(\n `${RedisInstrumentationV4_V5.COMPONENT}-${commandName}`,\n {\n kind: SpanKind.CLIENT,\n attributes,\n }\n );\n\n const res = context.with(trace.setSpan(context.active(), span), () => {\n return origFunction.apply(origThis, origArguments);\n });\n if (typeof res?.then === 'function') {\n res.then(\n (redisRes: unknown) => {\n this._endSpanWithResponse(\n span,\n commandName,\n commandArgs,\n redisRes,\n undefined\n );\n },\n (err: any) => {\n this._endSpanWithResponse(span, commandName, commandArgs, null, err);\n }\n );\n } else {\n const redisClientMultiCommand = res as {\n [OTEL_OPEN_SPANS]?: Array;\n };\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\n private _endSpansWithRedisReplies(\n openSpans: Array,\n replies: unknown[],\n isPipeline = false\n ) {\n if (!openSpans) {\n return this._diag.error(\n 'cannot find open spans to end for redis multi/pipeline'\n );\n }\n if (replies.length !== openSpans.length) {\n return this._diag.error(\n 'number of multi command spans does not match response from redis'\n );\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\n for (let i = 0; i < openSpans.length; i++) {\n const { span, commandArgs } = openSpans[i];\n const currCommandRes = replies[i];\n const [res, err] =\n currCommandRes instanceof Error\n ? [null, currCommandRes]\n : [currCommandRes, undefined];\n\n if (this._semconvStability & SemconvStability.STABLE) {\n span.setAttribute(ATTR_DB_OPERATION_NAME, operationName);\n }\n\n this._endSpanWithResponse(span, allCommands[i], commandArgs, res, err);\n }\n }\n\n private _endSpanWithResponse(\n span: Span,\n commandName: string,\n commandArgs: Array,\n response: unknown,\n error: Error | undefined\n ) {\n const { responseHook } = this.getConfig();\n if (!error && responseHook) {\n try {\n responseHook(span, commandName, commandArgs, response);\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: SpanStatusCode.ERROR, message: error?.message });\n }\n span.end();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/internal-types.d.ts new file mode 100644 index 0000000..436dad6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/internal-types.d.ts @@ -0,0 +1,5 @@ +export interface MultiErrorReply extends Error { + replies: unknown[]; + errorIndexes: Array; +} +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/internal-types.js new file mode 100644 index 0000000..814fbda --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/internal-types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/internal-types.js.map new file mode 100644 index 0000000..2c01774 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../../src/v4-v5/internal-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Error class introduced in redis@4.6.12.\n// https://github.com/redis/node-redis/blob/redis@4.6.12/packages/client/lib/errors.ts#L69-L84\nexport interface MultiErrorReply extends Error {\n replies: unknown[];\n errorIndexes: Array;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.d.ts new file mode 100644 index 0000000..70cfe0f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.d.ts @@ -0,0 +1,4 @@ +import { Attributes, DiagLogger } from '@opentelemetry/api'; +import { SemconvStability } from '@opentelemetry/instrumentation'; +export declare function getClientAttributes(diag: DiagLogger, options: any, semconvStability: SemconvStability): Attributes; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.js new file mode 100644 index 0000000..9eea18d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.js @@ -0,0 +1,50 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getClientAttributes = void 0; +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("../semconv"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +function getClientAttributes(diag, options, semconvStability) { + const attributes = {}; + if (semconvStability & instrumentation_1.SemconvStability.OLD) { + Object.assign(attributes, { + [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_REDIS, + [semconv_1.ATTR_NET_PEER_NAME]: options?.socket?.host, + [semconv_1.ATTR_NET_PEER_PORT]: options?.socket?.port, + [semconv_1.ATTR_DB_CONNECTION_STRING]: removeCredentialsFromDBConnectionStringAttribute(diag, options?.url), + }); + } + if (semconvStability & instrumentation_1.SemconvStability.STABLE) { + Object.assign(attributes, { + [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semconv_1.DB_SYSTEM_NAME_VALUE_REDIS, + [semantic_conventions_1.ATTR_SERVER_ADDRESS]: options?.socket?.host, + [semantic_conventions_1.ATTR_SERVER_PORT]: options?.socket?.port, + }); + } + return attributes; +} +exports.getClientAttributes = getClientAttributes; +/** + * removeCredentialsFromDBConnectionStringAttribute removes basic auth from url and user_pwd from query string + * + * Examples: + * redis://user:pass@localhost:6379/mydb => redis://localhost:6379/mydb + * redis://localhost:6379?db=mydb&user_pwd=pass => redis://localhost:6379?db=mydb + */ +function removeCredentialsFromDBConnectionStringAttribute(diag, url) { + if (typeof url !== 'string' || !url) { + return; + } + try { + const u = new URL(url); + u.searchParams.delete('user_pwd'); + u.username = ''; + u.password = ''; + return u.href; + } + catch (err) { + diag.error('failed to sanitize redis connection url', err); + } + return; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.js.map new file mode 100644 index 0000000..f2d1ea6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/v4-v5/utils.ts"],"names":[],"mappings":";;;AAgBA,8EAI6C;AAC7C,wCAOoB;AACpB,oEAAkE;AAElE,SAAgB,mBAAmB,CACjC,IAAgB,EAChB,OAAY,EACZ,gBAAkC;IAElC,MAAM,UAAU,GAAe,EAAE,CAAC;IAElC,IAAI,gBAAgB,GAAG,kCAAgB,CAAC,GAAG,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;YACxB,CAAC,wBAAc,CAAC,EAAE,+BAAqB;YACvC,CAAC,4BAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI;YAC3C,CAAC,4BAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI;YAC3C,CAAC,mCAAyB,CAAC,EACzB,gDAAgD,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC;SACvE,CAAC,CAAC;KACJ;IAED,IAAI,gBAAgB,GAAG,kCAAgB,CAAC,MAAM,EAAE;QAC9C,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;YACxB,CAAC,0CAAmB,CAAC,EAAE,oCAA0B;YACjD,CAAC,0CAAmB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI;YAC5C,CAAC,uCAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI;SAC1C,CAAC,CAAC;KACJ;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AA1BD,kDA0BC;AAED;;;;;;GAMG;AACH,SAAS,gDAAgD,CACvD,IAAgB,EAChB,GAAa;IAEb,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE;QACnC,OAAO;KACR;IAED,IAAI;QACF,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;QAChB,OAAO,CAAC,CAAC,IAAI,CAAC;KACf;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;KAC5D;IACD,OAAO;AACT,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Attributes, DiagLogger } from '@opentelemetry/api';\nimport {\n ATTR_DB_SYSTEM_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_DB_SYSTEM,\n ATTR_DB_CONNECTION_STRING,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n DB_SYSTEM_VALUE_REDIS,\n DB_SYSTEM_NAME_VALUE_REDIS,\n} from '../semconv';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\n\nexport function getClientAttributes(\n diag: DiagLogger,\n options: any,\n semconvStability: SemconvStability\n): Attributes {\n const attributes: Attributes = {};\n\n if (semconvStability & SemconvStability.OLD) {\n Object.assign(attributes, {\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n [ATTR_NET_PEER_NAME]: options?.socket?.host,\n [ATTR_NET_PEER_PORT]: options?.socket?.port,\n [ATTR_DB_CONNECTION_STRING]:\n removeCredentialsFromDBConnectionStringAttribute(diag, options?.url),\n });\n }\n\n if (semconvStability & SemconvStability.STABLE) {\n Object.assign(attributes, {\n [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_REDIS,\n [ATTR_SERVER_ADDRESS]: options?.socket?.host,\n [ATTR_SERVER_PORT]: options?.socket?.port,\n });\n }\n\n return attributes;\n}\n\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(\n diag: DiagLogger,\n url?: unknown\n): string | undefined {\n if (typeof url !== 'string' || !url) {\n return;\n }\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 } catch (err) {\n diag.error('failed to sanitize redis connection url', err);\n }\n return;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/version.d.ts new file mode 100644 index 0000000..dc8cf04 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.59.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-redis"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/version.js new file mode 100644 index 0000000..99ea425 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.59.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-redis'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/version.js.map new file mode 100644 index 0000000..bfddaf0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,sCAAsC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.59.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-redis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/package.json new file mode 100644 index 0000000..5970493 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-redis/package.json @@ -0,0 +1,68 @@ +{ + "name": "@opentelemetry/instrumentation-redis", + "version": "0.59.0", + "description": "OpenTelemetry instrumentation for `redis` database client for Redis", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-redis" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-redis", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test-v2-v3": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/v2-v3/*.test.ts'", + "test": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/v4-v5/*.test.ts' 'test/*.test.ts'", + "test:debug": "cross-env RUN_REDIS_TESTS=true mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-services:start": "cd ../.. && npm run test-services:start redis", + "test-services:stop": "cd ../.. && npm run test-services:stop redis", + "version:update": "node ../../scripts/version-update.js" + }, + "keywords": [ + "instrumentation", + "nodejs", + "opentelemetry", + "profiling", + "redis", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "redis": "^5.6.0" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/redis-common": "^0.38.2", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-redis#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/README.md new file mode 100644 index 0000000..3330ab4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/README.md @@ -0,0 +1,90 @@ +# OpenTelemetry Tedious Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`tedious`](https://github.com/tediousjs/tedious) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-tedious +``` + +## Supported Versions + +- [tedious](https://www.npmjs.com/package/tedious) `>=1.11.0 <20` + +## Usage + +OpenTelemetry Tedious Instrumentation allows the user to automatically collect trace data and export them to the backend of choice, to give observability to distributed systems when working with [`tedious`](https://github.com/tediousjs/tedious). + +To load a specific plugin, specify it in the registerInstrumentations's configuration: + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { TediousInstrumentation } = require('@opentelemetry/instrumentation-tedious'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new TediousInstrumentation(), + ], +}) +``` + +## Semantic Conventions + +This instrumentation implements Semantic Conventions (semconv) v1.7.0. Since then, networking (in semconv v1.23.1) and database (in semconv v1.33.0) semantic conventions were stabilized. As of `@opentelemetry/instrumentation-tedious@0.28.0` support has been added for migrating to the stable semantic conventions using the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable as follows: + +1. Upgrade to the latest version of this instrumentation package. +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http/dup,database/dup` to emit both old and stable semantic conventions. (The `http` token is used to control the `net.*` attributes, the `database` token to control to `db.*` attributes.) +3. Modify alerts, dashboards, metrics, and other processes in your Observability system to use the stable semantic conventions. +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=http,database` to emit only the stable semantic conventions. + +By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` includes neither of the above tokens, the old v1.7.0 semconv is used. +The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new database and networking semconv, after which a new minor version will use the new semconv by default and drop support for the old semconv. +See [the HTTP migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/) and the [database migration guide](https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/) for details. + +Attributes collected: + +| Old semconv | Stable semconv | Description | +| --------------- | -------------------- | ---------------------------------- | +| `db.system` | `db.system.name` | 'mssql' (old), 'microsoft.sql_server' (stable) | +| `db.statement` | `db.query.text` | The database query being executed. | +| `db.user` | Removed | Username for accessing the database. | +| `db.name` | Removed | Integrated into new `db.namespace`. | +| (not included) | `db.namespace` | The database associated with the connection, qualified by the instance name. | +| `db.sql.table` | `db.collection.name` | The name of a collection (table, container) within the database. | +| `net.peer.name` | `server.address` | Remote hostname or similar. | +| `net.peer.port` | `server.port` | Remote port number. | + +### Trace Context Propagation + +Database trace context propagation can be enabled by setting `enableTraceContextPropagation`to `true`. +This uses the [SET CONTEXT_INFO](https://learn.microsoft.com/en-us/sql/t-sql/statements/set-context-info-transact-sql?view=sql-server-ver16) +command to set [traceparent](https://www.w3.org/TR/trace-context/#traceparent-header)information +for the current connection, which results in **an additional round-trip to the database**. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-tedious +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-tedious.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/index.d.ts new file mode 100644 index 0000000..16aa1c2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { TediousInstrumentation } from './instrumentation'; +export type { TediousInstrumentationConfig } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/index.js new file mode 100644 index 0000000..34ba4a6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TediousInstrumentation = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "TediousInstrumentation", { enumerable: true, get: function () { return instrumentation_1.TediousInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/index.js.map new file mode 100644 index 0000000..293be93 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { TediousInstrumentation } from './instrumentation';\nexport type { TediousInstrumentationConfig } from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.d.ts new file mode 100644 index 0000000..2b02b14 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.d.ts @@ -0,0 +1,22 @@ +import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { TediousInstrumentationConfig } from './types'; +export declare const INJECTED_CTX: unique symbol; +export declare class TediousInstrumentation extends InstrumentationBase { + static readonly COMPONENT = "tedious"; + private _netSemconvStability; + private _dbSemconvStability; + constructor(config?: TediousInstrumentationConfig); + private _setSemconvStabilityFromEnv; + protected init(): InstrumentationNodeModuleDefinition[]; + private _patchConnect; + private _buildTraceparent; + /** + * Fire a one-off `SET CONTEXT_INFO @opentelemetry_traceparent` on the same + * connection. Marks the request with INJECTED_CTX so our patch skips it. + */ + private _injectContextInfo; + private _shouldInjectFor; + private _patchQuery; + private _patchCallbackQuery; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.js new file mode 100644 index 0000000..a895cab --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.js @@ -0,0 +1,246 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TediousInstrumentation = exports.INJECTED_CTX = void 0; +const api = require("@opentelemetry/api"); +const events_1 = require("events"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const semconv_1 = require("./semconv"); +const utils_1 = require("./utils"); +/** @knipignore */ +const version_1 = require("./version"); +const CURRENT_DATABASE = Symbol('opentelemetry.instrumentation-tedious.current-database'); +exports.INJECTED_CTX = Symbol('opentelemetry.instrumentation-tedious.context-info-injected'); +const PATCHED_METHODS = [ + 'callProcedure', + 'execSql', + 'execSqlBatch', + 'execBulkLoad', + 'prepare', + 'execute', +]; +function setDatabase(databaseName) { + Object.defineProperty(this, CURRENT_DATABASE, { + value: databaseName, + writable: true, + }); +} +class TediousInstrumentation extends instrumentation_1.InstrumentationBase { + static COMPONENT = 'tedious'; + _netSemconvStability; + _dbSemconvStability; + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + this._setSemconvStabilityFromEnv(); + } + // Used for testing. + _setSemconvStabilityFromEnv() { + this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN); + } + init() { + return [ + new instrumentation_1.InstrumentationNodeModuleDefinition(TediousInstrumentation.COMPONENT, ['>=1.11.0 <20'], (moduleExports) => { + const ConnectionPrototype = moduleExports.Connection.prototype; + for (const method of PATCHED_METHODS) { + if ((0, instrumentation_1.isWrapped)(ConnectionPrototype[method])) { + this._unwrap(ConnectionPrototype, method); + } + this._wrap(ConnectionPrototype, method, this._patchQuery(method, moduleExports)); + } + if ((0, instrumentation_1.isWrapped)(ConnectionPrototype.connect)) { + this._unwrap(ConnectionPrototype, 'connect'); + } + this._wrap(ConnectionPrototype, 'connect', this._patchConnect); + return moduleExports; + }, (moduleExports) => { + if (moduleExports === undefined) + return; + const ConnectionPrototype = moduleExports.Connection.prototype; + for (const method of PATCHED_METHODS) { + this._unwrap(ConnectionPrototype, method); + } + this._unwrap(ConnectionPrototype, 'connect'); + }), + ]; + } + _patchConnect(original) { + return function patchedConnect() { + setDatabase.call(this, this.config?.options?.database); + // remove the listener first in case it's already added + this.removeListener('databaseChange', setDatabase); + this.on('databaseChange', setDatabase); + this.once('end', () => { + this.removeListener('databaseChange', setDatabase); + }); + return original.apply(this, arguments); + }; + } + _buildTraceparent(span) { + const sc = span.spanContext(); + return `00-${sc.traceId}-${sc.spanId}-0${Number(sc.traceFlags || api.TraceFlags.NONE).toString(16)}`; + } + /** + * Fire a one-off `SET CONTEXT_INFO @opentelemetry_traceparent` on the same + * connection. Marks the request with INJECTED_CTX so our patch skips it. + */ + _injectContextInfo(connection, tediousModule, traceparent) { + return new Promise(resolve => { + try { + const sql = 'set context_info @opentelemetry_traceparent'; + const req = new tediousModule.Request(sql, (_err) => { + resolve(); + }); + Object.defineProperty(req, exports.INJECTED_CTX, { value: true }); + const buf = Buffer.from(traceparent, 'utf8'); + req.addParameter('opentelemetry_traceparent', tediousModule.TYPES.VarBinary, buf, { length: buf.length }); + connection.execSql(req); + } + catch { + resolve(); + } + }); + } + _shouldInjectFor(operation) { + return (operation === 'execSql' || + operation === 'execSqlBatch' || + operation === 'callProcedure' || + operation === 'execute'); + } + _patchQuery(operation, tediousModule) { + return (originalMethod) => { + const thisPlugin = this; + function patchedMethod(request) { + // Skip our own injected request + if (request?.[exports.INJECTED_CTX]) { + return originalMethod.apply(this, arguments); + } + if (!(request instanceof events_1.EventEmitter)) { + thisPlugin._diag.warn(`Unexpected invocation of patched ${operation} method. Span not recorded`); + return originalMethod.apply(this, arguments); + } + let procCount = 0; + let statementCount = 0; + const incrementStatementCount = () => statementCount++; + const incrementProcCount = () => procCount++; + const databaseName = this[CURRENT_DATABASE]; + const sql = (request => { + // Required for <11.0.9 + if (request.sqlTextOrProcedure === 'sp_prepare' && + request.parametersByName?.stmt?.value) { + return request.parametersByName.stmt.value; + } + return request.sqlTextOrProcedure; + })(request); + const attributes = {}; + if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MSSQL; + attributes[semconv_1.ATTR_DB_NAME] = databaseName; + // >=4 uses `authentication` object; older versions just userName and password pair + attributes[semconv_1.ATTR_DB_USER] = + this.config?.userName ?? + this.config?.authentication?.options?.userName; + attributes[semconv_1.ATTR_DB_STATEMENT] = sql; + attributes[semconv_1.ATTR_DB_SQL_TABLE] = request.table; + } + if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) { + // The OTel spec for "db.namespace" discusses handling for connection + // to MSSQL "named instances". This isn't currently supported. + // https://opentelemetry.io/docs/specs/semconv/database/sql-server/#:~:text=%5B1%5D%20db%2Enamespace + attributes[semantic_conventions_1.ATTR_DB_NAMESPACE] = databaseName; + attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = + semantic_conventions_1.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER; + attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = sql; + attributes[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = request.table; + // See https://opentelemetry.io/docs/specs/semconv/database/sql-server/#spans + // TODO(3290): can `db.response.status_code` be added? + // TODO(3290): is `operation` correct for `db.operation.name` + // TODO(3290): can `db.query.summary` reliably be calculated? + // TODO(3290): `db.stored_procedure.name` + } + if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.OLD) { + attributes[semconv_1.ATTR_NET_PEER_NAME] = this.config?.server; + attributes[semconv_1.ATTR_NET_PEER_PORT] = this.config?.options?.port; + } + if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.STABLE) { + attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = this.config?.server; + attributes[semantic_conventions_1.ATTR_SERVER_PORT] = this.config?.options?.port; + } + const span = thisPlugin.tracer.startSpan((0, utils_1.getSpanName)(operation, databaseName, sql, request.table), { + kind: api.SpanKind.CLIENT, + attributes, + }); + const endSpan = (0, utils_1.once)((err) => { + request.removeListener('done', incrementStatementCount); + request.removeListener('doneInProc', incrementStatementCount); + request.removeListener('doneProc', incrementProcCount); + request.removeListener('error', endSpan); + this.removeListener('end', endSpan); + span.setAttribute('tedious.procedure_count', procCount); + span.setAttribute('tedious.statement_count', statementCount); + if (err) { + span.setStatus({ + code: api.SpanStatusCode.ERROR, + message: err.message, + }); + // TODO(3290): set `error.type` attribute? + } + span.end(); + }); + request.on('done', incrementStatementCount); + request.on('doneInProc', incrementStatementCount); + request.on('doneProc', incrementProcCount); + request.once('error', endSpan); + this.on('end', endSpan); + if (typeof request.callback === 'function') { + thisPlugin._wrap(request, 'callback', thisPlugin._patchCallbackQuery(endSpan)); + } + else { + thisPlugin._diag.error('Expected request.callback to be a function'); + } + const runUserRequest = () => { + return api.context.with(api.trace.setSpan(api.context.active(), span), originalMethod, this, ...arguments); + }; + const cfg = thisPlugin.getConfig(); + const shouldInject = cfg.enableTraceContextPropagation && + thisPlugin._shouldInjectFor(operation); + if (!shouldInject) + return runUserRequest(); + const traceparent = thisPlugin._buildTraceparent(span); + void thisPlugin + ._injectContextInfo(this, tediousModule, traceparent) + .finally(runUserRequest); + } + Object.defineProperty(patchedMethod, 'length', { + value: originalMethod.length, + writable: false, + }); + return patchedMethod; + }; + } + _patchCallbackQuery(endSpan) { + return (originalCallback) => { + return function (err, rowCount, rows) { + endSpan(err); + return originalCallback.apply(this, arguments); + }; + }; + } +} +exports.TediousInstrumentation = TediousInstrumentation; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.js.map new file mode 100644 index 0000000..b89b3da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,0CAA0C;AAC1C,mCAAsC;AACtC,oEAMwC;AACxC,8EAQ6C;AAC7C,uCASmB;AAGnB,mCAA4C;AAC5C,kBAAkB;AAClB,uCAA0D;AAE1D,MAAM,gBAAgB,GAAG,MAAM,CAC7B,wDAAwD,CACzD,CAAC;AAEW,QAAA,YAAY,GAAG,MAAM,CAChC,6DAA6D,CAC9D,CAAC;AAEF,MAAM,eAAe,GAAG;IACtB,eAAe;IACf,SAAS;IACT,cAAc;IACd,cAAc;IACd,SAAS;IACT,SAAS;CACV,CAAC;AAcF,SAAS,WAAW,CAAyB,YAAoB;IAC/D,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;QAC5C,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;AACL,CAAC;AAED,MAAa,sBAAuB,SAAQ,qCAAiD;IAC3F,MAAM,CAAU,SAAS,GAAG,SAAS,CAAC;IAC9B,oBAAoB,CAAoB;IACxC,mBAAmB,CAAoB;IAE/C,YAAY,SAAuC,EAAE;QACnD,KAAK,CAAC,sBAAY,EAAE,yBAAe,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,oBAAoB;IACZ,2BAA2B;QACjC,IAAI,CAAC,oBAAoB,GAAG,IAAA,yCAAuB,EACjD,MAAM,EACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,CAAC;QACF,IAAI,CAAC,mBAAmB,GAAG,IAAA,yCAAuB,EAChD,UAAU,EACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,CAAC;IACJ,CAAC;IAES,IAAI;QACZ,OAAO;YACL,IAAI,qDAAmC,CACrC,sBAAsB,CAAC,SAAS,EAChC,CAAC,cAAc,CAAC,EAChB,CAAC,aAA6B,EAAE,EAAE;gBAChC,MAAM,mBAAmB,GAAQ,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC;gBACpE,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;oBACpC,IAAI,IAAA,2BAAS,EAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE;wBAC1C,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;qBAC3C;oBACD,IAAI,CAAC,KAAK,CACR,mBAAmB,EACnB,MAAM,EACN,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAQ,CAC/C,CAAC;iBACH;gBAED,IAAI,IAAA,2BAAS,EAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;oBAC1C,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;iBAC9C;gBACD,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAE/D,OAAO,aAAa,CAAC;YACvB,CAAC,EACD,CAAC,aAA6B,EAAE,EAAE;gBAChC,IAAI,aAAa,KAAK,SAAS;oBAAE,OAAO;gBACxC,MAAM,mBAAmB,GAAQ,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC;gBACpE,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;oBACpC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;iBAC3C;gBACD,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YAC/C,CAAC,CACF;SACF,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,QAAyB;QAC7C,OAAO,SAAS,cAAc;YAC5B,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAEvD,uDAAuD;YACvD,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;gBACpB,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAA6B,CAAC,CAAC;QAC7D,CAAC,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,IAAc;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,OAAO,MAAM,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACvG,CAAC;IAED;;;OAGG;IACK,kBAAkB,CACxB,UAAe,EACf,aAA6B,EAC7B,WAAmB;QAEnB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,IAAI;gBACF,MAAM,GAAG,GAAG,6CAA6C,CAAC;gBAC1D,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAS,EAAE,EAAE;oBACvD,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,oBAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAC7C,GAAG,CAAC,YAAY,CACd,2BAA2B,EAC1B,aAAqB,CAAC,KAAK,CAAC,SAAS,EACtC,GAAG,EACH,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACvB,CAAC;gBAEF,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACzB;YAAC,MAAM;gBACN,OAAO,EAAE,CAAC;aACX;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,SAAiB;QACxC,OAAO,CACL,SAAS,KAAK,SAAS;YACvB,SAAS,KAAK,cAAc;YAC5B,SAAS,KAAK,eAAe;YAC7B,SAAS,KAAK,SAAS,CACxB,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,SAAiB,EAAE,aAA6B;QAClE,OAAO,CAAC,cAA+B,EAAmB,EAAE;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC;YAExB,SAAS,aAAa,CAAyB,OAAsB;gBACnE,gCAAgC;gBAChC,IAAK,OAAe,EAAE,CAAC,oBAAY,CAAC,EAAE;oBACpC,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAA6B,CAAC,CAAC;iBAClE;gBAED,IAAI,CAAC,CAAC,OAAO,YAAY,qBAAY,CAAC,EAAE;oBACtC,UAAU,CAAC,KAAK,CAAC,IAAI,CACnB,oCAAoC,SAAS,4BAA4B,CAC1E,CAAC;oBACF,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAA6B,CAAC,CAAC;iBAClE;gBACD,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,IAAI,cAAc,GAAG,CAAC,CAAC;gBACvB,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;gBACvD,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;gBAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC5C,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE;oBACrB,uBAAuB;oBACvB,IACE,OAAO,CAAC,kBAAkB,KAAK,YAAY;wBAC3C,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,EACrC;wBACA,OAAO,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;qBAC5C;oBACD,OAAO,OAAO,CAAC,kBAAkB,CAAC;gBACpC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAEZ,MAAM,UAAU,GAAmB,EAAE,CAAC;gBACtC,IAAI,UAAU,CAAC,mBAAmB,GAAG,kCAAgB,CAAC,GAAG,EAAE;oBACzD,UAAU,CAAC,wBAAc,CAAC,GAAG,+BAAqB,CAAC;oBACnD,UAAU,CAAC,sBAAY,CAAC,GAAG,YAAY,CAAC;oBACxC,mFAAmF;oBACnF,UAAU,CAAC,sBAAY,CAAC;wBACtB,IAAI,CAAC,MAAM,EAAE,QAAQ;4BACrB,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC;oBACjD,UAAU,CAAC,2BAAiB,CAAC,GAAG,GAAG,CAAC;oBACpC,UAAU,CAAC,2BAAiB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;iBAC/C;gBACD,IAAI,UAAU,CAAC,mBAAmB,GAAG,kCAAgB,CAAC,MAAM,EAAE;oBAC5D,qEAAqE;oBACrE,8DAA8D;oBAC9D,uGAAuG;oBACvG,UAAU,CAAC,wCAAiB,CAAC,GAAG,YAAY,CAAC;oBAC7C,UAAU,CAAC,0CAAmB,CAAC;wBAC7B,gEAAyC,CAAC;oBAC5C,UAAU,CAAC,yCAAkB,CAAC,GAAG,GAAG,CAAC;oBACrC,UAAU,CAAC,8CAAuB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;oBACpD,6EAA6E;oBAC7E,sDAAsD;oBACtD,6DAA6D;oBAC7D,6DAA6D;oBAC7D,yCAAyC;iBAC1C;gBACD,IAAI,UAAU,CAAC,oBAAoB,GAAG,kCAAgB,CAAC,GAAG,EAAE;oBAC1D,UAAU,CAAC,4BAAkB,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;oBACrD,UAAU,CAAC,4BAAkB,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;iBAC7D;gBACD,IAAI,UAAU,CAAC,oBAAoB,GAAG,kCAAgB,CAAC,MAAM,EAAE;oBAC7D,UAAU,CAAC,0CAAmB,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;oBACtD,UAAU,CAAC,uCAAgB,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;iBAC3D;gBACD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CACtC,IAAA,mBAAW,EAAC,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,EACxD;oBACE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;oBACzB,UAAU;iBACX,CACF,CAAC;gBAEF,MAAM,OAAO,GAAG,IAAA,YAAI,EAAC,CAAC,GAAS,EAAE,EAAE;oBACjC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;oBACxD,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;oBAC9D,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;oBACvD,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACzC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAEpC,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;oBACxD,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,cAAc,CAAC,CAAC;oBAC7D,IAAI,GAAG,EAAE;wBACP,IAAI,CAAC,SAAS,CAAC;4BACb,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK;4BAC9B,OAAO,EAAE,GAAG,CAAC,OAAO;yBACrB,CAAC,CAAC;wBACH,0CAA0C;qBAC3C;oBACD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;gBAC5C,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;gBAClD,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC/B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAExB,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE;oBAC1C,UAAU,CAAC,KAAK,CACd,OAAO,EACP,UAAU,EACV,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CACxC,CAAC;iBACH;qBAAM;oBACL,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;iBACtE;gBAED,MAAM,cAAc,GAAG,GAAG,EAAE;oBAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CACrB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAC7C,cAAc,EACd,IAAI,EACJ,GAAG,SAAS,CACb,CAAC;gBACJ,CAAC,CAAC;gBAEF,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;gBACnC,MAAM,YAAY,GAChB,GAAG,CAAC,6BAA6B;oBACjC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAEzC,IAAI,CAAC,YAAY;oBAAE,OAAO,cAAc,EAAE,CAAC;gBAE3C,MAAM,WAAW,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAEvD,KAAK,UAAU;qBACZ,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,CAAC;qBACpD,OAAO,CAAC,cAAc,CAAC,CAAC;YAC7B,CAAC;YAED,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE;gBAC7C,KAAK,EAAE,cAAc,CAAC,MAAM;gBAC5B,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,OAAiB;QAC3C,OAAO,CAAC,gBAA0B,EAAE,EAAE;YACpC,OAAO,UAEL,GAA6B,EAC7B,QAAiB,EACjB,IAAU;gBAEV,OAAO,CAAC,GAAG,CAAC,CAAC;gBACb,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;;AAhRU,wDAAsB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n ATTR_DB_COLLECTION_NAME,\n ATTR_DB_NAMESPACE,\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,\n} from '@opentelemetry/semantic-conventions';\nimport {\n DB_SYSTEM_VALUE_MSSQL,\n ATTR_DB_NAME,\n ATTR_DB_SQL_TABLE,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_DB_USER,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n} from './semconv';\nimport type * as tedious from 'tedious';\nimport { TediousInstrumentationConfig } from './types';\nimport { getSpanName, once } from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst CURRENT_DATABASE = Symbol(\n 'opentelemetry.instrumentation-tedious.current-database'\n);\n\nexport const INJECTED_CTX = Symbol(\n 'opentelemetry.instrumentation-tedious.context-info-injected'\n);\n\nconst PATCHED_METHODS = [\n 'callProcedure',\n 'execSql',\n 'execSqlBatch',\n 'execBulkLoad',\n 'prepare',\n 'execute',\n];\n\ntype UnknownFunction = (...args: any[]) => any;\ntype ApproxConnection = EventEmitter & {\n [CURRENT_DATABASE]: string;\n config: any;\n};\ntype ApproxRequest = EventEmitter & {\n sqlTextOrProcedure: string | undefined;\n callback: any;\n table: string | undefined;\n parametersByName: any;\n};\n\nfunction setDatabase(this: ApproxConnection, databaseName: string) {\n Object.defineProperty(this, CURRENT_DATABASE, {\n value: databaseName,\n writable: true,\n });\n}\n\nexport class TediousInstrumentation extends InstrumentationBase {\n static readonly COMPONENT = 'tedious';\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n\n constructor(config: TediousInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n this._setSemconvStabilityFromEnv();\n }\n\n // Used for testing.\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n this._dbSemconvStability = semconvStabilityFromStr(\n 'database',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n TediousInstrumentation.COMPONENT,\n ['>=1.11.0 <20'],\n (moduleExports: typeof tedious) => {\n const ConnectionPrototype: any = moduleExports.Connection.prototype;\n for (const method of PATCHED_METHODS) {\n if (isWrapped(ConnectionPrototype[method])) {\n this._unwrap(ConnectionPrototype, method);\n }\n this._wrap(\n ConnectionPrototype,\n method,\n this._patchQuery(method, moduleExports) as any\n );\n }\n\n if (isWrapped(ConnectionPrototype.connect)) {\n this._unwrap(ConnectionPrototype, 'connect');\n }\n this._wrap(ConnectionPrototype, 'connect', this._patchConnect);\n\n return moduleExports;\n },\n (moduleExports: typeof tedious) => {\n if (moduleExports === undefined) return;\n const ConnectionPrototype: any = 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 }\n\n private _patchConnect(original: UnknownFunction): UnknownFunction {\n return function patchedConnect(this: ApproxConnection) {\n setDatabase.call(this, this.config?.options?.database);\n\n // remove the listener first in case it's already added\n this.removeListener('databaseChange', setDatabase);\n this.on('databaseChange', setDatabase);\n\n this.once('end', () => {\n this.removeListener('databaseChange', setDatabase);\n });\n return original.apply(this, arguments as unknown as any[]);\n };\n }\n\n private _buildTraceparent(span: api.Span): string {\n const sc = span.spanContext();\n return `00-${sc.traceId}-${sc.spanId}-0${Number(sc.traceFlags || api.TraceFlags.NONE).toString(16)}`;\n }\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 private _injectContextInfo(\n connection: any,\n tediousModule: typeof tedious,\n traceparent: string\n ): Promise {\n return new Promise(resolve => {\n try {\n const sql = 'set context_info @opentelemetry_traceparent';\n const req = new tediousModule.Request(sql, (_err: any) => {\n resolve();\n });\n Object.defineProperty(req, INJECTED_CTX, { value: true });\n const buf = Buffer.from(traceparent, 'utf8');\n req.addParameter(\n 'opentelemetry_traceparent',\n (tediousModule as any).TYPES.VarBinary,\n buf,\n { length: buf.length }\n );\n\n connection.execSql(req);\n } catch {\n resolve();\n }\n });\n }\n\n private _shouldInjectFor(operation: string): boolean {\n return (\n operation === 'execSql' ||\n operation === 'execSqlBatch' ||\n operation === 'callProcedure' ||\n operation === 'execute'\n );\n }\n\n private _patchQuery(operation: string, tediousModule: typeof tedious) {\n return (originalMethod: UnknownFunction): UnknownFunction => {\n const thisPlugin = this;\n\n function patchedMethod(this: ApproxConnection, request: ApproxRequest) {\n // Skip our own injected request\n if ((request as any)?.[INJECTED_CTX]) {\n return originalMethod.apply(this, arguments as unknown as any[]);\n }\n\n if (!(request instanceof EventEmitter)) {\n thisPlugin._diag.warn(\n `Unexpected invocation of patched ${operation} method. Span not recorded`\n );\n return originalMethod.apply(this, arguments as unknown as any[]);\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 (\n request.sqlTextOrProcedure === 'sp_prepare' &&\n request.parametersByName?.stmt?.value\n ) {\n return request.parametersByName.stmt.value;\n }\n return request.sqlTextOrProcedure;\n })(request);\n\n const attributes: api.Attributes = {};\n if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MSSQL;\n attributes[ATTR_DB_NAME] = databaseName;\n // >=4 uses `authentication` object; older versions just userName and password pair\n attributes[ATTR_DB_USER] =\n this.config?.userName ??\n this.config?.authentication?.options?.userName;\n attributes[ATTR_DB_STATEMENT] = sql;\n attributes[ATTR_DB_SQL_TABLE] = request.table;\n }\n if (thisPlugin._dbSemconvStability & 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[ATTR_DB_NAMESPACE] = databaseName;\n attributes[ATTR_DB_SYSTEM_NAME] =\n DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER;\n attributes[ATTR_DB_QUERY_TEXT] = sql;\n attributes[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 & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_NAME] = this.config?.server;\n attributes[ATTR_NET_PEER_PORT] = this.config?.options?.port;\n }\n if (thisPlugin._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_ADDRESS] = this.config?.server;\n attributes[ATTR_SERVER_PORT] = this.config?.options?.port;\n }\n const span = thisPlugin.tracer.startSpan(\n getSpanName(operation, databaseName, sql, request.table),\n {\n kind: api.SpanKind.CLIENT,\n attributes,\n }\n );\n\n const endSpan = once((err?: any) => {\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\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\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\n if (typeof request.callback === 'function') {\n thisPlugin._wrap(\n request,\n 'callback',\n thisPlugin._patchCallbackQuery(endSpan)\n );\n } else {\n thisPlugin._diag.error('Expected request.callback to be a function');\n }\n\n const runUserRequest = () => {\n return api.context.with(\n api.trace.setSpan(api.context.active(), span),\n originalMethod,\n this,\n ...arguments\n );\n };\n\n const cfg = thisPlugin.getConfig();\n const shouldInject =\n cfg.enableTraceContextPropagation &&\n thisPlugin._shouldInjectFor(operation);\n\n if (!shouldInject) return runUserRequest();\n\n const traceparent = thisPlugin._buildTraceparent(span);\n\n void thisPlugin\n ._injectContextInfo(this, tediousModule, traceparent)\n .finally(runUserRequest);\n }\n\n Object.defineProperty(patchedMethod, 'length', {\n value: originalMethod.length,\n writable: false,\n });\n\n return patchedMethod;\n };\n }\n\n private _patchCallbackQuery(endSpan: Function) {\n return (originalCallback: Function) => {\n return function (\n this: any,\n err: Error | undefined | null,\n rowCount?: number,\n rows?: any\n ) {\n endSpan(err);\n return originalCallback.apply(this, arguments);\n };\n };\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.d.ts new file mode 100644 index 0000000..cf893bb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.d.ts @@ -0,0 +1,80 @@ +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_NAME: "db.name"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`. + */ +export declare const ATTR_DB_SQL_TABLE: "db.sql.table"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_USER: "db.user"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Enum value "mssql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft SQL Server + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MSSQL: "mssql"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.js new file mode 100644 index 0000000..f6c4af2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.js @@ -0,0 +1,103 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +exports.ATTR_DB_NAME = 'db.name'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`. + */ +exports.ATTR_DB_SQL_TABLE = 'db.sql.table'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +exports.ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +exports.ATTR_DB_SYSTEM = 'db.system'; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_DB_USER = 'db.user'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Enum value "mssql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft SQL Server + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_MSSQL = 'mssql'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.js.map new file mode 100644 index 0000000..50ff359 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_DB_NAME = 'db.name' as const;\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`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\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 */\nexport const ATTR_DB_USER = 'db.user' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MSSQL = 'mssql' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/types.d.ts new file mode 100644 index 0000000..743e8e3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/types.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +export interface TediousInstrumentationConfig extends InstrumentationConfig { + /** + * If true, injects the current DB span's W3C traceparent into SQL Server + * session state via `SET CONTEXT_INFO @opentelemetry_traceparent` (varbinary). + * Off by default to avoid the extra round-trip per request. + */ + enableTraceContextPropagation?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/types.js.map new file mode 100644 index 0000000..2e56dc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nexport interface TediousInstrumentationConfig extends InstrumentationConfig {\n /**\n * If true, injects the current DB span's W3C traceparent into SQL Server\n * session state via `SET CONTEXT_INFO @opentelemetry_traceparent` (varbinary).\n * Off by default to avoid the extra round-trip per request.\n */\n enableTraceContextPropagation?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.d.ts new file mode 100644 index 0000000..e9394e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.d.ts @@ -0,0 +1,9 @@ +/** + * The span name SHOULD be set to a low cardinality value + * representing the statement executed on the database. + * + * @returns Operation executed on Tedious Connection. Does not map to SQL statement in any way. + */ +export declare function getSpanName(operation: string, db: string | undefined, sql: string | undefined, bulkLoadTable: string | undefined): string; +export declare const once: (fn: Function) => (...args: unknown[]) => any; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.js new file mode 100644 index 0000000..46d5ac2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.js @@ -0,0 +1,53 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.once = exports.getSpanName = void 0; +/** + * The span name SHOULD be set to a low cardinality value + * representing the statement executed on the database. + * + * @returns Operation executed on Tedious Connection. Does not map to SQL statement in any way. + */ +function getSpanName(operation, db, sql, bulkLoadTable) { + if (operation === 'execBulkLoad' && bulkLoadTable && db) { + return `${operation} ${bulkLoadTable} ${db}`; + } + if (operation === 'callProcedure') { + // `sql` refers to procedure name with `callProcedure` + if (db) { + return `${operation} ${sql} ${db}`; + } + return `${operation} ${sql}`; + } + // do not use `sql` in general case because of high-cardinality + if (db) { + return `${operation} ${db}`; + } + return `${operation}`; +} +exports.getSpanName = getSpanName; +const once = (fn) => { + let called = false; + return (...args) => { + if (called) + return; + called = true; + return fn(...args); + }; +}; +exports.once = once; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.js.map new file mode 100644 index 0000000..ad91a6e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;;GAKG;AACH,SAAgB,WAAW,CACzB,SAAiB,EACjB,EAAsB,EACtB,GAAuB,EACvB,aAAiC;IAEjC,IAAI,SAAS,KAAK,cAAc,IAAI,aAAa,IAAI,EAAE,EAAE;QACvD,OAAO,GAAG,SAAS,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;KAC9C;IACD,IAAI,SAAS,KAAK,eAAe,EAAE;QACjC,sDAAsD;QACtD,IAAI,EAAE,EAAE;YACN,OAAO,GAAG,SAAS,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;SACpC;QACD,OAAO,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC;KAC9B;IACD,+DAA+D;IAC/D,IAAI,EAAE,EAAE;QACN,OAAO,GAAG,SAAS,IAAI,EAAE,EAAE,CAAC;KAC7B;IACD,OAAO,GAAG,SAAS,EAAE,CAAC;AACxB,CAAC;AArBD,kCAqBC;AAEM,MAAM,IAAI,GAAG,CAAC,EAAY,EAAE,EAAE;IACnC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,IAAI,MAAM;YAAE,OAAO;QACnB,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,IAAI,QAOf","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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 */\nexport function getSpanName(\n operation: string,\n db: string | undefined,\n sql: string | undefined,\n bulkLoadTable: string | undefined\n): string {\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}\n\nexport const once = (fn: Function) => {\n let called = false;\n return (...args: unknown[]) => {\n if (called) return;\n called = true;\n return fn(...args);\n };\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/version.d.ts new file mode 100644 index 0000000..4c4cf25 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.30.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-tedious"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/version.js new file mode 100644 index 0000000..1a25433 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.30.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-tedious'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/version.js.map new file mode 100644 index 0000000..4d4f196 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,wCAAwC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.30.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-tedious';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/package.json new file mode 100644 index 0000000..d2d1c48 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-tedious/package.json @@ -0,0 +1,68 @@ +{ + "name": "@opentelemetry/instrumentation-tedious", + "version": "0.30.0", + "description": "OpenTelemetry instrumentation for `tedious` database client for Microsoft SQL Server", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-tedious" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-tedious", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-services:start": "cd ../.. && npm run test-services:start mssql", + "test-services:stop": "cd ../.. && npm run test-services:stop mssql", + "version:update": "node ../../scripts/version-update.js" + }, + "keywords": [ + "instrumentation", + "microsoft", + "mssql", + "nodejs", + "opentelemetry", + "profiling", + "sql server", + "tds", + "tedious", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.58.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "tedious": "17.0.0" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.33.0", + "@types/tedious": "^4.0.14" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-tedious#readme", + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/README.md new file mode 100644 index 0000000..13eaab2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/README.md @@ -0,0 +1,109 @@ +# OpenTelemetry Undici/fetch Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +**Note: This is an experimental package under active development. New releases may include breaking changes.** + +This module provides automatic instrumentation for [`undici`](https://undici.nodejs.org/) and Node.js global [`fetch`](https://nodejs.org/docs/latest/api/globals.html#fetch) API. +If you're looking the instrumentation for browser's `fetch` API it is located at [https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch/](https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch/) + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-undici +``` + +## Supported Versions + +- [`undici`](https://www.npmjs.com/package/undici) version `>=5.12.0` + +## Usage + +OpenTelemetry Undici/fetch Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems. + +To load a specific instrumentation (Undici in this case), specify it in the Node Tracer's configuration. + +```js +const { + UndiciInstrumentation, +} = require('@opentelemetry/instrumentation-undici'); +const { + ConsoleSpanExporter, + NodeTracerProvider, + SimpleSpanProcessor, +} = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider({ + spanProcessors: [ + new SimpleSpanProcessor(new ConsoleSpanExporter()), + ], +}); + +provider.register(); + +registerInstrumentations({ + instrumentations: [new UndiciInstrumentation()], +}); +``` + +### Undici/Fetch instrumentation Options + +Undici instrumentation has few options available to choose from. You can set the following: + +| Options | Type | Description | +|----------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`ignoreRequestHook`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-undici/src/types.ts#L73) | `IgnoreRequestFunction` | Undici instrumentation will not trace all incoming requests that matched with custom function. | +| [`requestHook`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-undici/src/types.ts#L75) | `RequestHookFunction` | Function for adding custom attributes before request is handled. | +| [`responseHook`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-undici/src/types.ts#L77) | `ResponseHookFunction` | Function for adding custom attributes after the response headers are received. | +| [`startSpanHook`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-undici/src/types.ts#L79) | `StartSpanHookFunction` | Function for adding custom attributes before a span is started. | +| [`requireParentforSpans`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-undici/src/types.ts#L81) | `Boolean` | Require a parent span is present to create new span for outgoing requests. | +| [`headersToSpanAttributes`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-undici/src/types.ts#L83) | `Object` | List of case insensitive HTTP headers to convert to span attributes. Headers will be converted to span attributes in the form of `http.{request\|response}.header.header-name` where the name is only lowercased, e.g. `http.response.header.content-length` | + +### Observations + +This instrumentation subscribes to certain [diagnostics_channel](https://nodejs.org/api/diagnostics_channel.html) to intercept the client requests +and generate traces and metrics. In particular tracing spans are started when [undici:request:create](https://undici.nodejs.org/#/docs/api/DiagnosticsChannel?id=undicirequestcreate) +channel receives a message and ended when [undici:request:trailers](https://undici.nodejs.org/#/docs/api/DiagnosticsChannel?id=undicirequesttrailers) channel receive a message. +This means the full response body has been received when the instrumentation ends the span. + +## Semantic Conventions + +This package uses Semantic Conventions [Version 1.24.0](https://github.com/open-telemetry/semantic-conventions/tree/v1.24.0/docs/http). As for now the Semantic Conventions +are bundled in this package but eventually will be imported from `@opentelemetry/semantic-conventions` package when it is updated to latest version. +Ref: [opentelemetry-js/issues/4235](https://github.com/open-telemetry/opentelemetry-js/issues/4235) + +Attributes collected: + +| Attribute | Short Description | +|--------------------------------|------------------------------------------------------------------------------------------------------------| +| `error.type` | Describes a class of error the operation ended with. | +| `http.request.method` | HTTP request method. | +| `http.request.method_original` | Original HTTP method sent by the client in the request line. | +| `http.response.status_code` | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | +| `network.peer.address` | Peer address of the network connection - IP address or Unix domain socket name. | +| `network.peer.port` | Peer port number of the network connection. | +| `server.address` | Server domain name, IP address or Unix domain socket name. | +| `server.port` | Server port number. | +| `url.full` | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986). | +| `url.path` | The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component. | +| `url.query` | The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component. | +| `url.scheme` | HTTP request method. | +| `user_agent.original` | Value of the HTTP User-Agent header sent by the client. | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-undici +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-undici.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/index.d.ts new file mode 100644 index 0000000..bdb6529 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/index.d.ts @@ -0,0 +1,3 @@ +export { UndiciInstrumentation } from './undici'; +export type { IgnoreRequestFunction, RequestHookFunction, ResponseHookFunction, StartSpanHookFunction, UndiciInstrumentationConfig, UndiciRequest, UndiciResponse, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/index.js new file mode 100644 index 0000000..63fd9f5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UndiciInstrumentation = void 0; +var undici_1 = require("./undici"); +Object.defineProperty(exports, "UndiciInstrumentation", { enumerable: true, get: function () { return undici_1.UndiciInstrumentation; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/index.js.map new file mode 100644 index 0000000..61ef182 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { UndiciInstrumentation } from './undici';\nexport type {\n IgnoreRequestFunction,\n RequestHookFunction,\n ResponseHookFunction,\n StartSpanHookFunction,\n UndiciInstrumentationConfig,\n UndiciRequest,\n UndiciResponse,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/internal-types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/internal-types.d.ts new file mode 100644 index 0000000..c3e28a0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/internal-types.d.ts @@ -0,0 +1,25 @@ +import { UndiciRequest, UndiciResponse } from './types'; +export interface ListenerRecord { + name: string; + unsubscribe: () => void; +} +export interface RequestMessage { + request: UndiciRequest; +} +export interface RequestHeadersMessage { + request: UndiciRequest; + socket: any; +} +export interface ResponseHeadersMessage { + request: UndiciRequest; + response: UndiciResponse; +} +export interface RequestTrailersMessage { + request: UndiciRequest; + response: UndiciResponse; +} +export interface RequestErrorMessage { + request: UndiciRequest; + error: Error; +} +//# sourceMappingURL=internal-types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/internal-types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/internal-types.js new file mode 100644 index 0000000..814fbda --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/internal-types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=internal-types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/internal-types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/internal-types.js.map new file mode 100644 index 0000000..1e16df9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/internal-types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { UndiciRequest, UndiciResponse } from './types';\n\nexport interface ListenerRecord {\n name: string;\n unsubscribe: () => void;\n}\n\nexport interface RequestMessage {\n request: UndiciRequest;\n}\n\nexport interface RequestHeadersMessage {\n request: UndiciRequest;\n socket: any;\n}\n\nexport interface ResponseHeadersMessage {\n request: UndiciRequest;\n response: UndiciResponse;\n}\n\nexport interface RequestTrailersMessage {\n request: UndiciRequest;\n response: UndiciResponse;\n}\n\nexport interface RequestErrorMessage {\n request: UndiciRequest;\n error: Error;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/types.d.ts new file mode 100644 index 0000000..454bd88 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/types.d.ts @@ -0,0 +1,64 @@ +/// +/// +import type { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import type { Attributes, Span } from '@opentelemetry/api'; +export interface UndiciRequest { + origin: string; + method: string; + path: string; + /** + * Serialized string of headers in the form `name: value\r\n` for v5 + * Array of strings `[key1, value1, key2, value2]`, where values are + * `string | string[]` for v6 + */ + headers: string | (string | string[])[]; + /** + * Helper method to add headers (from v6) + */ + addHeader: (name: string, value: string) => void; + throwOnError: boolean; + completed: boolean; + aborted: boolean; + idempotent: boolean; + contentLength: number | null; + contentType: string | null; + body: any; +} +export interface UndiciResponse { + headers: Buffer[]; + statusCode: number; + statusText: string; +} +export interface IgnoreRequestFunction { + (request: T): boolean; +} +export interface RequestHookFunction { + (span: Span, request: T): void; +} +export interface ResponseHookFunction { + (span: Span, info: { + request: RequestType; + response: ResponseType; + }): void; +} +export interface StartSpanHookFunction { + (request: T): Attributes; +} +export interface UndiciInstrumentationConfig extends InstrumentationConfig { + /** Not trace all outgoing requests that matched with custom function */ + ignoreRequestHook?: IgnoreRequestFunction; + /** Function for adding custom attributes before request is handled */ + requestHook?: RequestHookFunction; + /** Function called once response headers have been received */ + responseHook?: ResponseHookFunction; + /** Function for adding custom attributes before a span is started */ + startSpanHook?: StartSpanHookFunction; + /** Require parent to create span for outgoing requests */ + requireParentforSpans?: boolean; + /** Map the following HTTP headers to span attributes. */ + headersToSpanAttributes?: { + requestHeaders?: string[]; + responseHeaders?: string[]; + }; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/types.js new file mode 100644 index 0000000..11e638d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/types.js.map new file mode 100644 index 0000000..201f37e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport type { Attributes, Span } from '@opentelemetry/api';\n\nexport interface UndiciRequest {\n origin: string;\n method: string;\n path: string;\n /**\n * Serialized string of headers in the form `name: value\\r\\n` for v5\n * Array of strings `[key1, value1, key2, value2]`, where values are\n * `string | string[]` for v6\n */\n headers: string | (string | string[])[];\n /**\n * Helper method to add headers (from v6)\n */\n addHeader: (name: string, value: string) => void;\n throwOnError: boolean;\n completed: boolean;\n aborted: boolean;\n idempotent: boolean;\n contentLength: number | null;\n contentType: string | null;\n body: any;\n}\n\nexport interface UndiciResponse {\n headers: Buffer[];\n statusCode: number;\n statusText: string;\n}\n\nexport interface IgnoreRequestFunction {\n (request: T): boolean;\n}\n\nexport interface RequestHookFunction {\n (span: Span, request: T): void;\n}\n\nexport interface ResponseHookFunction<\n RequestType = UndiciRequest,\n ResponseType = UndiciResponse,\n> {\n (span: Span, info: { request: RequestType; response: ResponseType }): void;\n}\n\nexport interface StartSpanHookFunction {\n (request: T): Attributes;\n}\n\n// This package will instrument HTTP requests made through `undici` or `fetch` global API\n// so it seems logical to have similar options than the HTTP instrumentation\nexport interface UndiciInstrumentationConfig<\n RequestType = UndiciRequest,\n ResponseType = UndiciResponse,\n> extends InstrumentationConfig {\n /** Not trace all outgoing requests that matched with custom function */\n ignoreRequestHook?: IgnoreRequestFunction;\n /** Function for adding custom attributes before request is handled */\n requestHook?: RequestHookFunction;\n /** Function called once response headers have been received */\n responseHook?: ResponseHookFunction;\n /** Function for adding custom attributes before a span is started */\n startSpanHook?: StartSpanHookFunction;\n /** Require parent to create span for outgoing requests */\n requireParentforSpans?: boolean;\n /** Map the following HTTP headers to span attributes. */\n headersToSpanAttributes?: {\n requestHeaders?: string[];\n responseHeaders?: string[];\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/undici.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/undici.d.ts new file mode 100644 index 0000000..ddbe2a3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/undici.d.ts @@ -0,0 +1,22 @@ +import { InstrumentationBase } from '@opentelemetry/instrumentation'; +import { UndiciInstrumentationConfig } from './types'; +export declare class UndiciInstrumentation extends InstrumentationBase { + private _channelSubs; + private _recordFromReq; + private _httpClientDurationHistogram; + constructor(config?: UndiciInstrumentationConfig); + protected init(): undefined; + disable(): void; + enable(): void; + protected _updateMetricInstruments(): void; + private subscribeToChannel; + private parseRequestHeaders; + private onRequestCreated; + private onRequestHeaders; + private onResponseHeaders; + private onDone; + private onError; + private recordRequestDuration; + private getRequestMethod; +} +//# sourceMappingURL=undici.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/undici.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/undici.js new file mode 100644 index 0000000..2b46fbd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/undici.js @@ -0,0 +1,399 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UndiciInstrumentation = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const diagch = require("diagnostics_channel"); +const url_1 = require("url"); +const instrumentation_1 = require("@opentelemetry/instrumentation"); +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +/** @knipignore */ +const version_1 = require("./version"); +// A combination of https://github.com/elastic/apm-agent-nodejs and +// https://github.com/gadget-inc/opentelemetry-instrumentations/blob/main/packages/opentelemetry-instrumentation-undici/src/index.ts +class UndiciInstrumentation extends instrumentation_1.InstrumentationBase { + _recordFromReq = new WeakMap(); + constructor(config = {}) { + super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config); + } + // No need to instrument files/modules + init() { + return undefined; + } + disable() { + super.disable(); + this._channelSubs.forEach(sub => sub.unsubscribe()); + this._channelSubs.length = 0; + } + enable() { + // "enabled" handling is currently a bit messy with InstrumentationBase. + // If constructed with `{enabled: false}`, this `.enable()` is still called, + // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion. + // + // For now, this class will setup for instrumenting if `.enable()` is + // called, but use `this.getConfig().enabled` to determine if + // instrumentation should be generated. This covers the more likely common + // case of config being given a construction time, rather than later via + // `instance.enable()`, `.disable()`, or `.setConfig()` calls. + super.enable(); + // This method is called by the super-class constructor before ours is + // called. So we need to ensure the property is initalized. + this._channelSubs = this._channelSubs || []; + // Avoid to duplicate subscriptions + if (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(semantic_conventions_1.METRIC_HTTP_CLIENT_REQUEST_DURATION, { + description: 'Measures the duration of outbound HTTP requests.', + unit: 's', + valueType: api_1.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(diagnosticChannel, onMessage) { + // `diagnostics_channel` had a ref counting bug until v18.19.0. + // https://github.com/nodejs/node/pull/47520 + const [major, minor] = process.version + .replace('v', '') + .split('.') + .map(n => Number(n)); + const useNewSubscribe = major > 18 || (major === 18 && minor >= 19); + let unsubscribe; + if (useNewSubscribe) { + diagch.subscribe?.(diagnosticChannel, onMessage); + unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage); + } + else { + const channel = diagch.channel(diagnosticChannel); + channel.subscribe(onMessage); + unsubscribe = () => channel.unsubscribe(onMessage); + } + this._channelSubs.push({ + name: diagnosticChannel, + unsubscribe, + }); + } + parseRequestHeaders(request) { + const result = new Map(); + if (Array.isArray(request.headers)) { + // headers are an array [k1, v2, k2, v2] (undici v6+) + // values could be string or a string[] for multiple values + for (let i = 0; i < request.headers.length; i += 2) { + const key = request.headers[i]; + const value = request.headers[i + 1]; + // Key should always be a string, but the types don't know that, and let's be safe + if (typeof key === 'string') { + result.set(key.toLowerCase(), value); + } + } + } + else if (typeof request.headers === 'string') { + // headers are a raw string (undici v5) + // headers could be repeated in several lines for multiple values + const headers = request.headers.split('\r\n'); + for (const line of headers) { + if (!line) { + continue; + } + const colonIndex = line.indexOf(':'); + if (colonIndex === -1) { + // Invalid header? Probably this can't happen, but again let's be safe. + continue; + } + const key = line.substring(0, colonIndex).toLowerCase(); + const value = line.substring(colonIndex + 1).trim(); + const allValues = result.get(key); + if (allValues && Array.isArray(allValues)) { + allValues.push(value); + } + else if (allValues) { + result.set(key, [allValues, value]); + } + else { + result.set(key, value); + } + } + } + return result; + } + // This is the 1st message we receive for each request (fired after request creation). Here we will + // create the span and populate some atttributes, then link the span to the request for further + // span processing + onRequestCreated({ request }) { + // Ignore if: + // - instrumentation is disabled + // - ignored by config + // - method is 'CONNECT' + const config = this.getConfig(); + const enabled = config.enabled !== false; + const shouldIgnoreReq = (0, instrumentation_1.safeExecuteInTheMiddle)(() => !enabled || + request.method === 'CONNECT' || + config.ignoreRequestHook?.(request), e => e && this._diag.error('caught ignoreRequestHook error: ', e), true); + if (shouldIgnoreReq) { + return; + } + const startTime = (0, core_1.hrTime)(); + let requestUrl; + try { + requestUrl = new url_1.URL(request.path, request.origin); + } + catch (err) { + this._diag.warn('could not determine url.full:', err); + // Skip instrumenting this request. + return; + } + const urlScheme = requestUrl.protocol.replace(':', ''); + const requestMethod = this.getRequestMethod(request.method); + const attributes = { + [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: requestMethod, + [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]: request.method, + [semantic_conventions_1.ATTR_URL_FULL]: requestUrl.toString(), + [semantic_conventions_1.ATTR_URL_PATH]: requestUrl.pathname, + [semantic_conventions_1.ATTR_URL_QUERY]: requestUrl.search, + [semantic_conventions_1.ATTR_URL_SCHEME]: urlScheme, + }; + const schemePorts = { https: '443', http: '80' }; + const serverAddress = requestUrl.hostname; + const serverPort = requestUrl.port || schemePorts[urlScheme]; + attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = serverAddress; + if (serverPort && !isNaN(Number(serverPort))) { + attributes[semantic_conventions_1.ATTR_SERVER_PORT] = Number(serverPort); + } + // Get user agent from headers + const headersMap = this.parseRequestHeaders(request); + const userAgentValues = headersMap.get('user-agent'); + if (userAgentValues) { + // NOTE: having multiple user agents is not expected so + // we're going to take last one like `curl` does + // ref: https://curl.se/docs/manpage.html#-A + const userAgent = Array.isArray(userAgentValues) + ? userAgentValues[userAgentValues.length - 1] + : userAgentValues; + attributes[semantic_conventions_1.ATTR_USER_AGENT_ORIGINAL] = userAgent; + } + // Get attributes from the hook if present + const hookAttributes = (0, instrumentation_1.safeExecuteInTheMiddle)(() => config.startSpanHook?.(request), e => e && this._diag.error('caught startSpanHook error: ', e), true); + if (hookAttributes) { + Object.entries(hookAttributes).forEach(([key, val]) => { + attributes[key] = val; + }); + } + // Check if parent span is required via config and: + // - if a parent is required but not present, we use a `NoopSpan` to still + // propagate context without recording it. + // - create a span otherwise + const activeCtx = api_1.context.active(); + const currentSpan = api_1.trace.getSpan(activeCtx); + let span; + if (config.requireParentforSpans && + (!currentSpan || !api_1.trace.isSpanContextValid(currentSpan.spanContext()))) { + span = api_1.trace.wrapSpanContext(api_1.INVALID_SPAN_CONTEXT); + } + else { + span = this.tracer.startSpan(requestMethod === '_OTHER' ? 'HTTP' : requestMethod, { + kind: api_1.SpanKind.CLIENT, + attributes: attributes, + }, activeCtx); + } + // Execute the request hook if defined + (0, instrumentation_1.safeExecuteInTheMiddle)(() => config.requestHook?.(span, request), e => e && this._diag.error('caught requestHook error: ', e), true); + // Context propagation goes last so no hook can tamper + // the propagation headers + const requestContext = api_1.trace.setSpan(api_1.context.active(), span); + const addedHeaders = {}; + api_1.propagation.inject(requestContext, addedHeaders); + const headerEntries = Object.entries(addedHeaders); + for (let i = 0; i < headerEntries.length; i++) { + const [k, v] = headerEntries[i]; + if (typeof request.addHeader === 'function') { + request.addHeader(k, v); + } + else if (typeof request.headers === 'string') { + request.headers += `${k}: ${v}\r\n`; + } + else if (Array.isArray(request.headers)) { + // undici@6.11.0 accidentally, briefly removed `request.addHeader()`. + request.headers.push(k, v); + } + } + this._recordFromReq.set(request, { span, attributes, startTime }); + } + // This is the 2nd message we receive for each request. It is fired when connection with + // the remote is established and about to send the first byte. Here we do have info about the + // remote address and port so we can populate some `network.*` attributes into the span + onRequestHeaders({ request, socket }) { + const record = this._recordFromReq.get(request); + if (!record) { + return; + } + const config = this.getConfig(); + const { span } = record; + const { remoteAddress, remotePort } = socket; + const spanAttributes = { + [semantic_conventions_1.ATTR_NETWORK_PEER_ADDRESS]: remoteAddress, + [semantic_conventions_1.ATTR_NETWORK_PEER_PORT]: remotePort, + }; + // After hooks have been processed (which may modify request headers) + // we can collect the headers based on the configuration + if (config.headersToSpanAttributes?.requestHeaders) { + const headersToAttribs = new Set(config.headersToSpanAttributes.requestHeaders.map(n => n.toLowerCase())); + const headersMap = this.parseRequestHeaders(request); + for (const [name, value] of headersMap.entries()) { + if (headersToAttribs.has(name)) { + const attrValue = Array.isArray(value) ? value.join(', ') : value; + spanAttributes[`http.request.header.${name}`] = attrValue; + } + } + } + span.setAttributes(spanAttributes); + } + // This is the 3rd message we get for each request and it's fired when the server + // headers are received, body may not be accessible yet. + // From the response headers we can set the status and content length + onResponseHeaders({ request, response, }) { + const record = this._recordFromReq.get(request); + if (!record) { + return; + } + const { span, attributes } = record; + const spanAttributes = { + [semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]: response.statusCode, + }; + const config = this.getConfig(); + // Execute the response hook if defined + (0, instrumentation_1.safeExecuteInTheMiddle)(() => config.responseHook?.(span, { request, response }), e => e && this._diag.error('caught responseHook error: ', e), true); + const headersToAttribs = new Set(); + if (config.headersToSpanAttributes?.responseHeaders) { + config.headersToSpanAttributes?.responseHeaders.forEach(name => headersToAttribs.add(name.toLowerCase())); + } + for (let idx = 0; idx < response.headers.length; idx = idx + 2) { + const name = response.headers[idx].toString().toLowerCase(); + const value = response.headers[idx + 1]; + if (headersToAttribs.has(name)) { + spanAttributes[`http.response.header.${name}`] = value.toString(); + } + if (name === 'content-length') { + const contentLength = Number(value.toString()); + if (!isNaN(contentLength)) { + spanAttributes['http.response.header.content-length'] = contentLength; + } + } + } + span.setAttributes(spanAttributes); + span.setStatus({ + code: response.statusCode >= 400 + ? api_1.SpanStatusCode.ERROR + : api_1.SpanStatusCode.UNSET, + }); + record.attributes = Object.assign(attributes, spanAttributes); + } + // This is the last event we receive if the request went without any errors + onDone({ request }) { + const record = this._recordFromReq.get(request); + if (!record) { + return; + } + const { span, attributes, startTime } = record; + // End the span + span.end(); + this._recordFromReq.delete(request); + // Record metrics + this.recordRequestDuration(attributes, startTime); + } + // This is the event we get when something is wrong in the request like + // - invalid options when calling `fetch` global API or any undici method for request + // - connectivity errors such as unreachable host + // - requests aborted through an `AbortController.signal` + // NOTE: server errors are considered valid responses and it's the lib consumer + // who should deal with that. + onError({ request, error }) { + const record = this._recordFromReq.get(request); + if (!record) { + return; + } + const { span, attributes, startTime } = record; + // NOTE: in `undici@6.3.0` when request aborted the error type changes from + // a custom error (`RequestAbortedError`) to a built-in `DOMException` carrying + // some differences: + // - `code` is from DOMEXception (ABORT_ERR: 20) + // - `message` changes + // - stacktrace is smaller and contains node internal frames + span.recordException(error); + span.setStatus({ + code: api_1.SpanStatusCode.ERROR, + message: error.message, + }); + span.end(); + this._recordFromReq.delete(request); + // Record metrics (with the error) + attributes[semantic_conventions_1.ATTR_ERROR_TYPE] = error.message; + this.recordRequestDuration(attributes, startTime); + } + recordRequestDuration(attributes, startTime) { + // Time to record metrics + const metricsAttributes = {}; + // Get the attribs already in span attributes + const keysToCopy = [ + semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE, + semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD, + semantic_conventions_1.ATTR_SERVER_ADDRESS, + semantic_conventions_1.ATTR_SERVER_PORT, + semantic_conventions_1.ATTR_URL_SCHEME, + semantic_conventions_1.ATTR_ERROR_TYPE, + ]; + keysToCopy.forEach(key => { + if (key in attributes) { + metricsAttributes[key] = attributes[key]; + } + }); + // Take the duration and record it + const durationSeconds = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)())) / 1000; + this._httpClientDurationHistogram.record(durationSeconds, metricsAttributes); + } + getRequestMethod(original) { + const knownMethods = { + CONNECT: true, + OPTIONS: true, + HEAD: true, + GET: true, + POST: true, + PUT: true, + PATCH: true, + DELETE: true, + TRACE: true, + }; + if (original.toUpperCase() in knownMethods) { + return original.toUpperCase(); + } + return '_OTHER'; + } +} +exports.UndiciInstrumentation = UndiciInstrumentation; +//# sourceMappingURL=undici.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/undici.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/undici.js.map new file mode 100644 index 0000000..5b7bfbe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/undici.js.map @@ -0,0 +1 @@ +{"version":3,"file":"undici.js","sourceRoot":"","sources":["../../src/undici.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as diagch from 'diagnostics_channel';\nimport { URL } from 'url';\n\nimport {\n InstrumentationBase,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n Attributes,\n context,\n Histogram,\n HrTime,\n INVALID_SPAN_CONTEXT,\n propagation,\n Span,\n SpanKind,\n SpanStatusCode,\n trace,\n ValueType,\n} from '@opentelemetry/api';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_REQUEST_METHOD_ORIGINAL,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_USER_AGENT_ORIGINAL,\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n} from '@opentelemetry/semantic-conventions';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nimport {\n ListenerRecord,\n RequestHeadersMessage,\n RequestMessage,\n RequestTrailersMessage,\n ResponseHeadersMessage,\n} from './internal-types';\nimport { UndiciInstrumentationConfig, UndiciRequest } from './types';\n\ninterface InstrumentationRecord {\n span: Span;\n attributes: Attributes;\n startTime: HrTime;\n}\n\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\nexport class UndiciInstrumentation extends InstrumentationBase {\n // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for\n // unsubscribing.\n declare private _channelSubs: Array;\n private _recordFromReq = new WeakMap();\n\n declare private _httpClientDurationHistogram: Histogram;\n\n constructor(config: UndiciInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n // No need to instrument files/modules\n protected override init() {\n return undefined;\n }\n\n override disable(): void {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs.length = 0;\n }\n\n override enable(): void {\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(\n 'undici:request:create',\n this.onRequestCreated.bind(this)\n );\n this.subscribeToChannel(\n 'undici:client:sendHeaders',\n this.onRequestHeaders.bind(this)\n );\n this.subscribeToChannel(\n 'undici:request:headers',\n this.onResponseHeaders.bind(this)\n );\n this.subscribeToChannel('undici:request:trailers', this.onDone.bind(this));\n this.subscribeToChannel('undici:request:error', this.onError.bind(this));\n }\n\n protected override _updateMetricInstruments() {\n this._httpClientDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 's',\n valueType: 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 }\n\n private subscribeToChannel(\n diagnosticChannel: string,\n onMessage: (message: any, name: string | symbol) => void\n ) {\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\n let unsubscribe: () => void;\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 private parseRequestHeaders(request: UndiciRequest) {\n const result = new Map();\n\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\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 } 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\n if (allValues && Array.isArray(allValues)) {\n allValues.push(value);\n } else if (allValues) {\n result.set(key, [allValues, value]);\n } else {\n result.set(key, value);\n }\n }\n }\n return result;\n }\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 private onRequestCreated({ request }: RequestMessage): void {\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 = safeExecuteInTheMiddle(\n () =>\n !enabled ||\n request.method === 'CONNECT' ||\n config.ignoreRequestHook?.(request),\n e => e && this._diag.error('caught ignoreRequestHook error: ', e),\n true\n );\n\n if (shouldIgnoreReq) {\n return;\n }\n\n const startTime = hrTime();\n let requestUrl;\n try {\n requestUrl = new URL(request.path, request.origin);\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: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: requestMethod,\n [ATTR_HTTP_REQUEST_METHOD_ORIGINAL]: request.method,\n [ATTR_URL_FULL]: requestUrl.toString(),\n [ATTR_URL_PATH]: requestUrl.pathname,\n [ATTR_URL_QUERY]: requestUrl.search,\n [ATTR_URL_SCHEME]: urlScheme,\n };\n\n const schemePorts: Record = { https: '443', http: '80' };\n const serverAddress = requestUrl.hostname;\n const serverPort = requestUrl.port || schemePorts[urlScheme];\n\n attributes[ATTR_SERVER_ADDRESS] = serverAddress;\n if (serverPort && !isNaN(Number(serverPort))) {\n attributes[ATTR_SERVER_PORT] = Number(serverPort);\n }\n\n // Get user agent from headers\n const headersMap = this.parseRequestHeaders(request);\n const userAgentValues = headersMap.get('user-agent');\n\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[ATTR_USER_AGENT_ORIGINAL] = userAgent;\n }\n\n // Get attributes from the hook if present\n const hookAttributes = safeExecuteInTheMiddle(\n () => config.startSpanHook?.(request),\n e => e && this._diag.error('caught startSpanHook error: ', e),\n true\n );\n if (hookAttributes) {\n Object.entries(hookAttributes).forEach(([key, val]) => {\n attributes[key] = val;\n });\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 = context.active();\n const currentSpan = trace.getSpan(activeCtx);\n let span: Span;\n\n if (\n config.requireParentforSpans &&\n (!currentSpan || !trace.isSpanContextValid(currentSpan.spanContext()))\n ) {\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else {\n span = this.tracer.startSpan(\n requestMethod === '_OTHER' ? 'HTTP' : requestMethod,\n {\n kind: SpanKind.CLIENT,\n attributes: attributes,\n },\n activeCtx\n );\n }\n\n // Execute the request hook if defined\n safeExecuteInTheMiddle(\n () => config.requestHook?.(span, request),\n e => e && this._diag.error('caught requestHook error: ', e),\n true\n );\n\n // Context propagation goes last so no hook can tamper\n // the propagation headers\n const requestContext = trace.setSpan(context.active(), span);\n const addedHeaders: Record = {};\n propagation.inject(requestContext, addedHeaders);\n\n const headerEntries = Object.entries(addedHeaders);\n\n for (let i = 0; i < headerEntries.length; i++) {\n const [k, v] = headerEntries[i];\n\n if (typeof request.addHeader === 'function') {\n request.addHeader(k, v);\n } else if (typeof request.headers === 'string') {\n request.headers += `${k}: ${v}\\r\\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\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 private onRequestHeaders({ request, socket }: RequestHeadersMessage): void {\n const record = this._recordFromReq.get(request as UndiciRequest);\n\n if (!record) {\n return;\n }\n\n const config = this.getConfig();\n const { span } = record;\n const { remoteAddress, remotePort } = socket;\n const spanAttributes: Attributes = {\n [ATTR_NETWORK_PEER_ADDRESS]: remoteAddress,\n [ATTR_NETWORK_PEER_PORT]: remotePort,\n };\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(\n config.headersToSpanAttributes.requestHeaders.map(n => n.toLowerCase())\n );\n const headersMap = this.parseRequestHeaders(request);\n\n for (const [name, value] of headersMap.entries()) {\n if (headersToAttribs.has(name)) {\n const attrValue = Array.isArray(value) ? value.join(', ') : value;\n spanAttributes[`http.request.header.${name}`] = attrValue;\n }\n }\n }\n\n span.setAttributes(spanAttributes);\n }\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 private onResponseHeaders({\n request,\n response,\n }: ResponseHeadersMessage): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes } = record;\n const spanAttributes: Attributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: response.statusCode,\n };\n\n const config = this.getConfig();\n\n // Execute the response hook if defined\n safeExecuteInTheMiddle(\n () => config.responseHook?.(span, { request, response }),\n e => e && this._diag.error('caught responseHook error: ', e),\n true\n );\n\n const headersToAttribs = new Set();\n\n if (config.headersToSpanAttributes?.responseHeaders) {\n config.headersToSpanAttributes?.responseHeaders.forEach(name =>\n headersToAttribs.add(name.toLowerCase())\n );\n }\n\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\n if (headersToAttribs.has(name)) {\n spanAttributes[`http.response.header.${name}`] = value.toString();\n }\n\n if (name === 'content-length') {\n const contentLength = Number(value.toString());\n if (!isNaN(contentLength)) {\n spanAttributes['http.response.header.content-length'] = contentLength;\n }\n }\n }\n\n span.setAttributes(spanAttributes);\n span.setStatus({\n code:\n response.statusCode >= 400\n ? SpanStatusCode.ERROR\n : SpanStatusCode.UNSET,\n });\n record.attributes = Object.assign(attributes, spanAttributes);\n }\n\n // This is the last event we receive if the request went without any errors\n private onDone({ request }: RequestTrailersMessage): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes, startTime } = record;\n\n // End the span\n span.end();\n this._recordFromReq.delete(request);\n\n // Record metrics\n this.recordRequestDuration(attributes, startTime);\n }\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 private onError({ request, error }: any): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes, startTime } = record;\n\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: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.end();\n this._recordFromReq.delete(request);\n\n // Record metrics (with the error)\n attributes[ATTR_ERROR_TYPE] = error.message;\n this.recordRequestDuration(attributes, startTime);\n }\n\n private recordRequestDuration(attributes: Attributes, startTime: HrTime) {\n // Time to record metrics\n const metricsAttributes: Attributes = {};\n // Get the attribs already in span attributes\n const keysToCopy = [\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_SCHEME,\n ATTR_ERROR_TYPE,\n ];\n keysToCopy.forEach(key => {\n if (key in attributes) {\n metricsAttributes[key] = attributes[key];\n }\n });\n\n // Take the duration and record it\n const durationSeconds =\n hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime())) / 1000;\n this._httpClientDurationHistogram.record(\n durationSeconds,\n metricsAttributes\n );\n }\n\n private getRequestMethod(original: string): string {\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 };\n\n if (original.toUpperCase() in knownMethods) {\n return original.toUpperCase();\n }\n\n return '_OTHER';\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/version.d.ts new file mode 100644 index 0000000..e7ea761 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const PACKAGE_VERSION = "0.21.0"; +export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-undici"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/version.js new file mode 100644 index 0000000..889a9fd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/version.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.PACKAGE_VERSION = '0.21.0'; +exports.PACKAGE_NAME = '@opentelemetry/instrumentation-undici'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/version.js.map new file mode 100644 index 0000000..7426c22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,uCAAuC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.21.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-undici';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/package.json new file mode 100644 index 0000000..37ba7d4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation-undici/package.json @@ -0,0 +1,62 @@ +{ + "name": "@opentelemetry/instrumentation-undici", + "version": "0.21.0", + "description": "OpenTelemetry instrumentation for `undici` http client and Node.js fetch()", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-undici" + }, + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-undici", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha test/**/*.test.ts", + "test-all-versions": "tav", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "opentelemetry", + "fetch", + "undici", + "nodejs", + "tracing", + "instrumentation" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@opentelemetry/api": "^1.7.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "undici": "6.21.3" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0" + }, + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.211.0", + "@opentelemetry/semantic-conventions": "^1.24.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-undici#readme", + "sideEffects": false, + "gitHead": "7a5f3c0a09b6a2d32c712b2962b95137c906a016" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/LICENSES/shimmer/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/LICENSES/shimmer/LICENSE new file mode 100644 index 0000000..a87c655 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/LICENSES/shimmer/LICENSE @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2013-2019, Forrest L Norvell +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/README.md new file mode 100644 index 0000000..92ee119 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/README.md @@ -0,0 +1,259 @@ +# OpenTelemetry Instrumentation for web and node + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +**Note: This is an experimental package under active development. New releases may include breaking changes.** + +## Installation + +**Note: Much of OpenTelemetry JS documentation is written assuming the compiled application is run as CommonJS.** +For more details on ECMAScript Modules vs CommonJS, refer to [esm-support](https://github.com/open-telemetry/opentelemetry-js/blob/main/doc/esm-support.md). + +```bash +npm install --save @opentelemetry/instrumentation +``` + +## Usage in Node + +```typescript +import { + InstrumentationBase, + InstrumentationConfig, + InstrumentationNodeModuleDefinition, + InstrumentationNodeModuleFile, +} from '@opentelemetry/instrumentation'; + +import type * as module_name_to_be_patched from 'module_name_to_be_patched'; + +export class MyInstrumentation extends InstrumentationBase { + constructor(config: InstrumentationConfig = {}) { + super('MyInstrumentation', VERSION, config); + } + + /** + * Init method will be called when the plugin is constructed. + * It returns an `InstrumentationNodeModuleDefinition` which describes + * the node module to be instrumented and patched. + * It may also return a list of `InstrumentationNodeModuleDefinition`s if + * the plugin should patch multiple modules or versions. + */ + protected init() { + const module = new InstrumentationNodeModuleDefinition( + 'module_name_to_be_patched', + ['1.*'], + this._onPatchMain, + this._onUnPatchMain, + ); + // in case you need to patch additional files - this is optional + module.files.push(this._addPatchingMethod()); + + return module; + // you can also define more modules then just return an array of modules + // return [module1, module2, ....] + } + + private _onPatchMain(moduleExports: typeof module_name_to_be_patched) { + this._wrap( + moduleExports, + 'mainMethodName', + this._patchMainMethodName() + ); + return moduleExports; + } + + private _onUnPatchMain(moduleExports: typeof module_name_to_be_patched) { + this._unwrap(moduleExports, 'mainMethodName'); + } + + private _addPatchingMethod(): InstrumentationNodeModuleFile { + const file = new InstrumentationNodeModuleFile( + 'module_name_to_be_patched/src/some_file.js', + this._onPatchMethodName, + this._onUnPatchMethodName, + ); + return file; + } + + private _onPatchMethodName(moduleExports: typeof module_name_to_be_patched) { + this._wrap( + moduleExports, + 'methodName', + this._patchMethodName() + ); + return moduleExports; + } + + private _onUnPatchMethodName(moduleExports: typeof module_name_to_be_patched) { + this._unwrap(moduleExports, 'methodName'); + } + + private _patchMethodName(): (original) => any { + const plugin = this; + return function methodName(original) { + return function patchMethodName(this: any): PromiseOrValue { + console.log('methodName', arguments); + return original.apply(this, arguments); + }; + }; + } + + private _patchMainMethodName(): (original) => any { + const plugin = this; + return function mainMethodName(original) { + return function patchMainMethodName(this: any): PromiseOrValue { + console.log('mainMethodName', arguments); + return original.apply(this, arguments); + }; + }; + } +} + +// Later, but before the module to instrument is required + +const myInstrumentation = new MyInstrumentation(); +myInstrumentation.setTracerProvider(provider); // this is optional, only if global TracerProvider shouldn't be used +myInstrumentation.setMeterProvider(meterProvider); // this is optional +myInstrumentation.enable(); +// or use Auto Loader +``` + +## Usage in Web + +```typescript +import { + InstrumentationBase, + InstrumentationConfig, +} from '@opentelemetry/instrumentation'; + +import { Instrumentation } from '@opentelemetry/instrumentation'; + +export class MyInstrumentation extends InstrumentationBase { + constructor(config: InstrumentationConfig = {}) { + super('MyInstrumentation', VERSION, config); + } + + private _patchOpen() { + return (original: OpenFunction): OpenFunction => { + const plugin = this; + return function patchOpen(this: XMLHttpRequest, ...args): void { + console.log('open', arguments); + return original.apply(this, args); + }; + }; + } + + public enable() { + this._wrap(XMLHttpRequest.prototype, 'open', this._patchOpen()); + } + public disable() { + this._unwrap(XMLHttpRequest.prototype, 'open'); + } +} + +// Later + +const myInstrumentation = new MyInstrumentation(); +myInstrumentation.setTracerProvider(provider); // this is optional, only if global TracerProvider shouldn't be used +myInstrumentation.setMeterProvider(meterProvider); // this is optional, only if global MeterProvider shouldn't be used +myInstrumentation.enable(); +// or use Auto Loader +``` + +## AutoLoader + +### NODE - Auto Loader + +```javascript +const { B3Propagator } = require('@opentelemetry/propagator-b3'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); + +const tracerProvider = new NodeTracerProvider(); + +tracerProvider.register({ + propagator: new B3Propagator(), +}); + +registerInstrumentations({ + instrumentations: [ + new HttpInstrumentation(), + ], + //tracerProvider: tracerProvider, // optional, only if global TracerProvider shouldn't be used + //meterProvider: meterProvider, // optional, only if global MeterProvider shouldn't be used +}); + +``` + +### WEB - Auto Loader + +```javascript +const { B3Propagator } = require('@opentelemetry/propagator-b3'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { XMLHttpRequestInstrumentation } = require('@opentelemetry/instrumentation-xml-http-request'); +const { WebTracerProvider } = require('@opentelemetry/sdk-trace-web'); + +const tracerProvider = new WebTracerProvider(); + +tracerProvider.register({ + propagator: new B3Propagator(), +}); + +registerInstrumentations({ + instrumentations: [ + new XMLHttpRequestInstrumentation({ + ignoreUrls: [/localhost/], + propagateTraceHeaderCorsUrls: [ + 'http://localhost:8090', + ], + }), + ], + //tracerProvider: tracerProvider, // optional, only if global TracerProvider shouldn't be used + //meterProvider: meterProvider, // optional, only if global MeterProvider shouldn't be used +}); +``` + +## Selection of the used TracerProvider/MeterProvider + +The `registerInstrumentations()` API allows to specify which `TracerProvider` and/or `MeterProvider` to use by the given options object. +If nothing is specified the global registered provider is used. Usually this is what most users want therefore it's recommended to keep this default. + +There might be use case where someone has the need for more providers within an application. Please note that special care must be takes in such setups +to avoid leaking information from one provider to the other because there are a lot places where e.g. the global `ContextManager` or `Propagator` is used. + +## Instrumentation for ECMAScript Modules (ESM) in Node.js (experimental) + +Node.js uses a different module loader for ECMAScript Modules (ESM) vs. CommonJS (CJS). +A `require()` call will cause Node.js to use the CommonJS module loader. +An `import ...` statement or `import()` call will cause Node.js to use the ECMAScript module loader. + +If your application is written in JavaScript as ESM, or it must compile to ESM from TypeScript, then a loader hook is required to properly patch instrumentation. +The custom hook for ESM instrumentation is `--experimental-loader=@opentelemetry/instrumentation/hook.mjs`. +This flag must be passed to the `node` binary, which is often done as a startup command and/or in the `NODE_OPTIONS` environment variable. + +For more details on ECMAScript Modules vs CommonJS, refer to [esm-support](https://github.com/open-telemetry/opentelemetry-js/blob/main/doc/esm-support.md). + +## Limitations + +Instrumentations for external modules (e.g. express, mongodb,...) hooks the `require` call or `import` statement. Therefore following conditions need to be met that this mechanism can work: + +- Instrumentations are registered **before** the module to instrument is `require`ed (CJS only) +- modules are not included in a bundle. Tools like `esbuild`, `webpack`, ... usually have some mechanism to exclude specific modules from bundling + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +Third-party licenses and copyright notices can be found in the [LICENSES directory](./LICENSES). + +## Useful links + +- For more information on OpenTelemetry, visit: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.d.ts new file mode 100644 index 0000000..961729a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.d.ts @@ -0,0 +1,9 @@ +import { AutoLoaderOptions } from './types_internal'; +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +export declare function registerInstrumentations(options: AutoLoaderOptions): () => void; +//# sourceMappingURL=autoLoader.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js new file mode 100644 index 0000000..dc92948 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { trace, metrics } from '@opentelemetry/api'; +import { logs } from '@opentelemetry/api-logs'; +import { disableInstrumentations, enableInstrumentations, } from './autoLoaderUtils'; +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +export function registerInstrumentations(options) { + const tracerProvider = options.tracerProvider || trace.getTracerProvider(); + const meterProvider = options.meterProvider || metrics.getMeterProvider(); + const loggerProvider = options.loggerProvider || logs.getLoggerProvider(); + const instrumentations = options.instrumentations?.flat() ?? []; + enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider); + return () => { + disableInstrumentations(instrumentations); + }; +} +//# sourceMappingURL=autoLoader.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js.map new file mode 100644 index 0000000..068eeb2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoader.js","sourceRoot":"","sources":["../../src/autoLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA0B;IAE1B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC3E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1E,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEhE,sBAAsB,CACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,CACf,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\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 */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.d.ts new file mode 100644 index 0000000..c460564 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.d.ts @@ -0,0 +1,16 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +export declare function enableInstrumentations(instrumentations: Instrumentation[], tracerProvider?: TracerProvider, meterProvider?: MeterProvider, loggerProvider?: LoggerProvider): void; +/** + * Disable instrumentations + * @param instrumentations + */ +export declare function disableInstrumentations(instrumentations: Instrumentation[]): void; +//# sourceMappingURL=autoLoaderUtils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js new file mode 100644 index 0000000..e5759f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js @@ -0,0 +1,50 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +export function enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) { + for (let i = 0, j = instrumentations.length; i < j; i++) { + const instrumentation = instrumentations[i]; + if (tracerProvider) { + instrumentation.setTracerProvider(tracerProvider); + } + if (meterProvider) { + instrumentation.setMeterProvider(meterProvider); + } + if (loggerProvider && instrumentation.setLoggerProvider) { + instrumentation.setLoggerProvider(loggerProvider); + } + // instrumentations have been already enabled during creation + // so enable only if user prevented that by setting enabled to false + // this is to prevent double enabling but when calling register all + // instrumentations should be now enabled + if (!instrumentation.getConfig().enabled) { + instrumentation.enable(); + } + } +} +/** + * Disable instrumentations + * @param instrumentations + */ +export function disableInstrumentations(instrumentations) { + instrumentations.forEach(instrumentation => instrumentation.disable()); +} +//# sourceMappingURL=autoLoaderUtils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js.map new file mode 100644 index 0000000..fb05cb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoaderUtils.js","sourceRoot":"","sources":["../../src/autoLoaderUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,gBAAmC,EACnC,cAA+B,EAC/B,aAA6B,EAC7B,cAA+B;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,cAAc,EAAE;YAClB,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,IAAI,aAAa,EAAE;YACjB,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACjD;QACD,IAAI,cAAc,IAAI,eAAe,CAAC,iBAAiB,EAAE;YACvD,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,6DAA6D;QAC7D,oEAAoE;QACpE,mEAAmE;QACnE,yCAAyC;QACzC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE;YACxC,eAAe,CAAC,MAAM,EAAE,CAAC;SAC1B;KACF;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,gBAAmC;IAEnC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\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}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/index.d.ts new file mode 100644 index 0000000..b2b5dbc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/index.d.ts @@ -0,0 +1,9 @@ +export { registerInstrumentations } from './autoLoader'; +export { InstrumentationBase } from './platform/index'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export type { Instrumentation, InstrumentationConfig, InstrumentationModuleDefinition, InstrumentationModuleFile, ShimWrapped, SpanCustomizationHook, } from './types'; +export type { AutoLoaderOptions, AutoLoaderResult } from './types_internal'; +export { isWrapped, safeExecuteInTheMiddle, safeExecuteInTheMiddleAsync, } from './utils'; +export { SemconvStability, semconvStabilityFromStr } from './semconvStability'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/index.js new file mode 100644 index 0000000..aa64ce5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/index.js @@ -0,0 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { registerInstrumentations } from './autoLoader'; +export { InstrumentationBase } from './platform/index'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export { isWrapped, safeExecuteInTheMiddle, safeExecuteInTheMiddleAsync, } from './utils'; +export { SemconvStability, semconvStabilityFromStr } from './semconvStability'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/index.js.map new file mode 100644 index 0000000..453f88b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAUhF,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.d.ts new file mode 100644 index 0000000..9dc30d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.d.ts @@ -0,0 +1,74 @@ +import { DiagLogger, Meter, MeterProvider, Tracer, TracerProvider, Span } from '@opentelemetry/api'; +import { Logger, LoggerProvider } from '@opentelemetry/api-logs'; +import { InstrumentationModuleDefinition, Instrumentation, InstrumentationConfig, SpanCustomizationHook } from './types'; +/** + * Base abstract internal class for instrumenting node and web plugins + */ +export declare abstract class InstrumentationAbstract implements Instrumentation { + protected _config: ConfigType; + private _tracer; + private _meter; + private _logger; + protected _diag: DiagLogger; + readonly instrumentationName: string; + readonly instrumentationVersion: string; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => import("./types").ShimWrapped | undefined; + protected _unwrap: (nodule: Nodule, name: keyof Nodule) => void; + protected _massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + protected _massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; + protected get meter(): Meter; + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider: MeterProvider): void; + protected get logger(): Logger; + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider: LoggerProvider): void; + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions(): InstrumentationModuleDefinition[]; + /** + * Sets the new metric instruments with the current Meter. + */ + protected _updateMetricInstruments(): void; + getConfig(): ConfigType; + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config: ConfigType): void; + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider: TracerProvider): void; + protected get tracer(): Tracer; + abstract enable(): void; + abstract disable(): void; + /** + * Init method in which plugin should define _modules and patches for + * methods. + */ + protected abstract init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] | void; + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + protected _runSpanCustomizationHook(hookHandler: SpanCustomizationHook | undefined, triggerName: string, span: Span, info: SpanCustomizationInfoType): void; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js new file mode 100644 index 0000000..ecf776f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js @@ -0,0 +1,141 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag, metrics, trace, } from '@opentelemetry/api'; +import { logs } from '@opentelemetry/api-logs'; +import * as shimmer from './shimmer'; +/** + * Base abstract internal class for instrumenting node and web plugins + */ +export class InstrumentationAbstract { + _config = {}; + _tracer; + _meter; + _logger; + _diag; + instrumentationName; + instrumentationVersion; + constructor(instrumentationName, instrumentationVersion, config) { + this.instrumentationName = instrumentationName; + this.instrumentationVersion = instrumentationVersion; + this.setConfig(config); + this._diag = diag.createComponentLogger({ + namespace: instrumentationName, + }); + this._tracer = trace.getTracer(instrumentationName, instrumentationVersion); + this._meter = metrics.getMeter(instrumentationName, instrumentationVersion); + this._logger = logs.getLogger(instrumentationName, instrumentationVersion); + this._updateMetricInstruments(); + } + /* Api to wrap instrumented method */ + _wrap = shimmer.wrap; + /* Api to unwrap instrumented methods */ + _unwrap = shimmer.unwrap; + /* Api to mass wrap instrumented method */ + _massWrap = shimmer.massWrap; + /* Api to mass unwrap instrumented methods */ + _massUnwrap = shimmer.massUnwrap; + /* Returns meter */ + get meter() { + return this._meter; + } + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider) { + this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion); + this._updateMetricInstruments(); + } + /* Returns logger */ + get logger() { + return this._logger; + } + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider) { + this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion); + } + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions() { + const initResult = this.init() ?? []; + if (!Array.isArray(initResult)) { + return [initResult]; + } + return initResult; + } + /** + * Sets the new metric instruments with the current Meter. + */ + _updateMetricInstruments() { + return; + } + /* Returns InstrumentationConfig */ + getConfig() { + return this._config; + } + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config) { + // copy config first level properties to ensure they are immutable. + // nested properties are not copied, thus are mutable from the outside. + this._config = { + enabled: true, + ...config, + }; + } + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider) { + this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion); + } + /* Returns tracer */ + get tracer() { + return this._tracer; + } + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + _runSpanCustomizationHook(hookHandler, triggerName, span, info) { + if (!hookHandler) { + return; + } + try { + hookHandler(span, info); + } + catch (e) { + this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e); + } + } +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js.map new file mode 100644 index 0000000..9fee0ce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n diag,\n DiagLogger,\n metrics,\n Meter,\n MeterProvider,\n trace,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n public readonly instrumentationName: string;\n public readonly instrumentationVersion: string;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\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 public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\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 /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\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 protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.d.ts new file mode 100644 index 0000000..d9b12fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationModuleDefinition, InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleDefinition implements InstrumentationModuleDefinition { + files: InstrumentationModuleFile[]; + name: string; + supportedVersions: string[]; + patch: ((exports: any, moduleVersion?: string) => any) | undefined; + unpatch: ((exports: any, moduleVersion?: string) => void) | undefined; + constructor(name: string, supportedVersions: string[], patch?: (exports: any, moduleVersion?: string) => any, unpatch?: (exports: any, moduleVersion?: string) => void, files?: InstrumentationModuleFile[]); +} +//# sourceMappingURL=instrumentationNodeModuleDefinition.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js new file mode 100644 index 0000000..c325e79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class InstrumentationNodeModuleDefinition { + files; + name; + supportedVersions; + patch; + unpatch; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch, files) { + this.files = files || []; + this.name = name; + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + } +} +//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js.map new file mode 100644 index 0000000..c12362f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleDefinition.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleDefinition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,MAAM,OAAO,mCAAmC;IAG9C,KAAK,CAA8B;IAC5B,IAAI,CAAS;IACb,iBAAiB,CAAW;IAC5B,KAAK,CAAC;IACN,OAAO,CAAC;IACf,YACE,IAAY,EACZ,iBAA2B;IAC3B,8DAA8D;IAC9D,KAAqD;IACrD,8DAA8D;IAC9D,OAAwD,EACxD,KAAmC;QAEnC,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.d.ts new file mode 100644 index 0000000..3c22ecb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.d.ts @@ -0,0 +1,9 @@ +import { InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleFile implements InstrumentationModuleFile { + name: string; + supportedVersions: string[]; + patch: (moduleExports: any, moduleVersion?: string) => any; + unpatch: (moduleExports?: any, moduleVersion?: string) => void; + constructor(name: string, supportedVersions: string[], patch: (moduleExports: any, moduleVersion?: string) => any, unpatch: (moduleExports?: any, moduleVersion?: string) => void); +} +//# sourceMappingURL=instrumentationNodeModuleFile.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js new file mode 100644 index 0000000..d564ff9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { normalize } from './platform/index'; +export class InstrumentationNodeModuleFile { + name; + supportedVersions; + patch; + unpatch; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch) { + this.name = normalize(name); + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + } +} +//# sourceMappingURL=instrumentationNodeModuleFile.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js.map new file mode 100644 index 0000000..1e3e977 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleFile.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleFile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,6BAA6B;IAGjC,IAAI,CAAS;IACb,iBAAiB,CAAW;IAC5B,KAAK,CAAC;IACN,OAAO,CAAC;IAEf,YACE,IAAY,EACZ,iBAA2B;IAC3B,8DAA8D;IAC9D,KAA0D;IAC1D,8DAA8D;IAC9D,OAA8D;QAE9D,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.d.ts new file mode 100644 index 0000000..37aafc8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './noop-normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js new file mode 100644 index 0000000..d8417b4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './noop-normalize'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js.map new file mode 100644 index 0000000..fb42463 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './noop-normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.d.ts new file mode 100644 index 0000000..be36994 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationAbstract } from '../../instrumentation'; +import * as types from '../../types'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting web plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js new file mode 100644 index 0000000..8358620 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { InstrumentationAbstract } from '../../instrumentation'; +/** + * Base abstract class for instrumenting web plugins + */ +export class InstrumentationBase extends InstrumentationAbstract { + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + if (this._config.enabled) { + this.enable(); + } + } +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js.map new file mode 100644 index 0000000..a54838a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/browser/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAIhE;;GAEG;AACH,MAAM,OAAgB,mBAGpB,SAAQ,uBAAmC;IAG3C,YACE,mBAA2B,EAC3B,sBAA8B,EAC9B,MAAkB;QAElB,KAAK,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport * as types from '../../types';\nimport { InstrumentationConfig } from '../../types';\n\n/**\n * Base abstract class for instrumenting web plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.d.ts new file mode 100644 index 0000000..7c64ca3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.d.ts @@ -0,0 +1,13 @@ +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +export declare function normalize(path: string): string; +//# sourceMappingURL=noop-normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js new file mode 100644 index 0000000..bcfedbb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +export function normalize(path) { + diag.warn('Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'); + return path; +} +//# sourceMappingURL=noop-normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js.map new file mode 100644 index 0000000..e059d44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"noop-normalize.js","sourceRoot":"","sources":["../../../../src/platform/browser/noop-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,IAAI,CACP,yOAAyO,CAC1O,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\n\n/**\n * Placeholder normalize function to replace the node variant in browser runtimes,\n * this should never be called and will perform a no-op and warn if it is called regardless.\n *\n * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation\n * package can be made node-only.\n *\n * @param path input path\n * @return unmodified path\n * @internal\n */\nexport function normalize(path: string): string {\n diag.warn(\n 'Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'\n );\n return path;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.d.ts new file mode 100644 index 0000000..2cbefb0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.d.ts @@ -0,0 +1,2 @@ +export { InstrumentationBase, normalize } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js new file mode 100644 index 0000000..1fcd712 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase, normalize } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js.map new file mode 100644 index 0000000..944037a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase, normalize } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.d.ts new file mode 100644 index 0000000..6da6060 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.d.ts @@ -0,0 +1,36 @@ +import type { Hooked } from './RequireInTheMiddleSingleton'; +export declare const ModuleNameSeparator = "/"; +type ModuleNameTrieSearchOptions = { + /** + * Whether to return the results in insertion order + */ + maintainInsertionOrder?: boolean; + /** + * Whether to return only full matches + */ + fullOnly?: boolean; +}; +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +export declare class ModuleNameTrie { + private _trie; + private _counter; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook: Hooked): void; + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName: string, { maintainInsertionOrder, fullOnly }?: ModuleNameTrieSearchOptions): Hooked[]; +} +export {}; +//# sourceMappingURL=ModuleNameTrie.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js new file mode 100644 index 0000000..45452b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js @@ -0,0 +1,85 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const ModuleNameSeparator = '/'; +/** + * Node in a `ModuleNameTrie` + */ +class ModuleNameTrieNode { + hooks = []; + children = new Map(); +} +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +export class ModuleNameTrie { + _trie = new ModuleNameTrieNode(); + _counter = 0; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook) { + let trieNode = this._trie; + for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) { + let nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + nextNode = new ModuleNameTrieNode(); + trieNode.children.set(moduleNamePart, nextNode); + } + trieNode = nextNode; + } + trieNode.hooks.push({ hook, insertedId: this._counter++ }); + } + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName, { maintainInsertionOrder, fullOnly } = {}) { + let trieNode = this._trie; + const results = []; + let foundFull = true; + for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) { + const nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + foundFull = false; + break; + } + if (!fullOnly) { + results.push(...nextNode.hooks); + } + trieNode = nextNode; + } + if (fullOnly && foundFull) { + results.push(...trieNode.hooks); + } + if (results.length === 0) { + return []; + } + if (results.length === 1) { + return [results[0].hook]; + } + if (maintainInsertionOrder) { + results.sort((a, b) => a.insertedId - b.insertedId); + } + return results.map(({ hook }) => hook); + } +} +//# sourceMappingURL=ModuleNameTrie.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js.map new file mode 100644 index 0000000..00e7879 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ModuleNameTrie.js","sourceRoot":"","sources":["../../../../src/platform/node/ModuleNameTrie.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;GAEG;AACH,MAAM,kBAAkB;IACtB,KAAK,GAAgD,EAAE,CAAC;IACxD,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;CACvD;AAaD;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,KAAK,GAAuB,IAAI,kBAAkB,EAAE,CAAC;IACrD,QAAQ,GAAW,CAAC,CAAC;IAE7B;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAE1B,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;YACvE,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACpC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;aACjD;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QACD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CACJ,UAAkB,EAClB,EAAE,sBAAsB,EAAE,QAAQ,KAAkC,EAAE;QAEtE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAgC,EAAE,CAAC;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;YAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;gBACb,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACP;YACD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjC;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QAED,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,EAAE,CAAC;SACX;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC1B;QACD,IAAI,sBAAsB,EAAE;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;SACrD;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(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 /**\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(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(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\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.d.ts new file mode 100644 index 0000000..e1b8733 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.d.ts @@ -0,0 +1,35 @@ +import type { OnRequireFn } from 'require-in-the-middle'; +export type Hooked = { + moduleName: string; + onRequire: OnRequireFn; +}; +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +export declare class RequireInTheMiddleSingleton { + private _moduleNameTrie; + private static _instance?; + private constructor(); + private _initialize; + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName: string, onRequire: OnRequireFn): Hooked; + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance(): RequireInTheMiddleSingleton; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js new file mode 100644 index 0000000..543000a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js @@ -0,0 +1,107 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Hook } from 'require-in-the-middle'; +import * as path from 'path'; +import { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie'; +/** + * Whether Mocha is running in this process + * Inspired by https://github.com/AndreasPizsa/detect-mocha + * + * @type {boolean} + */ +const isMocha = [ + 'afterEach', + 'after', + 'beforeEach', + 'before', + 'describe', + 'it', +].every(fn => { + // @ts-expect-error TS7053: Element implicitly has an 'any' type + return typeof global[fn] === 'function'; +}); +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +export class RequireInTheMiddleSingleton { + _moduleNameTrie = new ModuleNameTrie(); + static _instance; + constructor() { + this._initialize(); + } + _initialize() { + new Hook( + // Intercept all `require` calls; we will filter the matching ones below + null, { internals: true }, (exports, name, basedir) => { + // For internal files on Windows, `name` will use backslash as the path separator + const normalizedModuleName = normalizePathSeparators(name); + const matches = this._moduleNameTrie.search(normalizedModuleName, { + maintainInsertionOrder: true, + // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises'). + // This matches the behavior of `require-in-the-middle`. + // `basedir` is always `undefined` for core modules. + fullOnly: basedir === undefined, + }); + for (const { onRequire } of matches) { + exports = onRequire(exports, name, basedir); + } + return exports; + }); + } + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName, onRequire) { + const hooked = { moduleName, onRequire }; + this._moduleNameTrie.insert(hooked); + return hooked; + } + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance() { + // Mocha runs all test suites in the same process + // This prevents test suites from sharing a singleton + if (isMocha) + return new RequireInTheMiddleSingleton(); + return (this._instance = + this._instance ?? new RequireInTheMiddleSingleton()); + } +} +/** + * Normalize the path separators to forward slash in a module name or path + * + * @param {string} moduleNameOrPath Module name or path + * @returns {string} Normalized module name or path + */ +function normalizePathSeparators(moduleNameOrPath) { + return path.sep !== ModuleNameSeparator + ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator) + : moduleNameOrPath; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js.map new file mode 100644 index 0000000..0d20243 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RequireInTheMiddleSingleton.js","sourceRoot":"","sources":["../../../../src/platform/node/RequireInTheMiddleSingleton.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvE;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IACd,WAAW;IACX,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,IAAI;CACL,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;IACX,gEAAgE;IAChE,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,OAAO,2BAA2B;IAC9B,eAAe,GAAmB,IAAI,cAAc,EAAE,CAAC;IACvD,MAAM,CAAC,SAAS,CAA+B;IAEvD;QACE,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI;QACN,wEAAwE;QACxE,IAAI,EACJ,EAAE,SAAS,EAAE,IAAI,EAAE,EACnB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACzB,iFAAiF;YACjF,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE3D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,oBAAoB,EAAE;gBAChE,sBAAsB,EAAE,IAAI;gBAC5B,gFAAgF;gBAChF,wDAAwD;gBACxD,oDAAoD;gBACpD,QAAQ,EAAE,OAAO,KAAK,SAAS;aAChC,CAAC,CAAC;YAEH,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE;gBACnC,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;aAC7C;YAED,OAAO,OAAO,CAAC;QACjB,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,UAAkB,EAAE,SAAsB;QACjD,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW;QAChB,iDAAiD;QACjD,qDAAqD;QACrD,IAAI,OAAO;YAAE,OAAO,IAAI,2BAA2B,EAAE,CAAC;QAEtD,OAAO,CAAC,IAAI,CAAC,SAAS;YACpB,IAAI,CAAC,SAAS,IAAI,IAAI,2BAA2B,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,gBAAwB;IACvD,OAAO,IAAI,CAAC,GAAG,KAAK,mBAAmB;QACrC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC5D,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\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/**\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 */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\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\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\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: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\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: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.d.ts new file mode 100644 index 0000000..181ca82 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js new file mode 100644 index 0000000..27ac5e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './normalize'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js.map new file mode 100644 index 0000000..7ce23f9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.d.ts new file mode 100644 index 0000000..a74d6bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.d.ts @@ -0,0 +1,25 @@ +import * as types from '../../types'; +import { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer'; +import { InstrumentationAbstract } from '../../instrumentation'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting node plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + private _modules; + private _hooks; + private _requireInTheMiddleSingleton; + private _enabled; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: typeof wrap; + protected _unwrap: typeof unwrap; + protected _massWrap: typeof massWrap; + protected _massUnwrap: typeof massUnwrap; + private _warnOnPreloadedModules; + private _extractPackageVersion; + private _onRequire; + enable(): void; + disable(): void; + isEnabled(): boolean; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js new file mode 100644 index 0000000..81ef53d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js @@ -0,0 +1,277 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as path from 'path'; +import { types as utilTypes } from 'util'; +import { satisfies } from '../../semver'; +import { wrap, unwrap } from '../../shimmer'; +import { InstrumentationAbstract } from '../../instrumentation'; +import { RequireInTheMiddleSingleton, } from './RequireInTheMiddleSingleton'; +import { Hook as HookImport } from 'import-in-the-middle'; +import { diag } from '@opentelemetry/api'; +import { Hook as HookRequire } from 'require-in-the-middle'; +import { readFileSync } from 'fs'; +import { isWrapped } from '../../utils'; +/** + * Base abstract class for instrumenting node plugins + */ +export class InstrumentationBase extends InstrumentationAbstract { + _modules; + _hooks = []; + _requireInTheMiddleSingleton = RequireInTheMiddleSingleton.getInstance(); + _enabled = false; + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + let modules = this.init(); + if (modules && !Array.isArray(modules)) { + modules = [modules]; + } + this._modules = modules || []; + if (this._config.enabled) { + this.enable(); + } + } + _wrap = (moduleExports, name, wrapper) => { + if (isWrapped(moduleExports[name])) { + this._unwrap(moduleExports, name); + } + if (!utilTypes.isProxy(moduleExports)) { + return wrap(moduleExports, name, wrapper); + } + else { + const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper); + Object.defineProperty(moduleExports, name, { + value: wrapped, + }); + return wrapped; + } + }; + _unwrap = (moduleExports, name) => { + if (!utilTypes.isProxy(moduleExports)) { + return unwrap(moduleExports, name); + } + else { + return Object.defineProperty(moduleExports, name, { + value: moduleExports[name], + }); + } + }; + _massWrap = (moduleExportsArray, names, wrapper) => { + if (!moduleExportsArray) { + diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._wrap(moduleExports, name, wrapper); + }); + }); + }; + _massUnwrap = (moduleExportsArray, names) => { + if (!moduleExportsArray) { + diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._unwrap(moduleExports, name); + }); + }); + }; + _warnOnPreloadedModules() { + this._modules.forEach((module) => { + const { name } = module; + try { + const resolvedModule = require.resolve(name); + if (require.cache[resolvedModule]) { + // Module is already cached, which means the instrumentation hook might not work + this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`); + } + } + catch { + // Module isn't available, we can simply skip + } + }); + } + _extractPackageVersion(baseDir) { + try { + const json = readFileSync(path.join(baseDir, 'package.json'), { + encoding: 'utf8', + }); + const version = JSON.parse(json).version; + return typeof version === 'string' ? version : undefined; + } + catch { + diag.warn('Failed extracting version', baseDir); + } + return undefined; + } + _onRequire(module, exports, name, baseDir) { + if (!baseDir) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', { + module: module.name, + }); + return module.patch(exports); + } + } + return exports; + } + const version = this._extractPackageVersion(baseDir); + module.moduleVersion = version; + if (module.name === name) { + // main module + if (isSupported(module.supportedVersions, version, module.includePrerelease)) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for module on require hook', { + module: module.name, + version: module.moduleVersion, + baseDir, + }); + return module.patch(exports, module.moduleVersion); + } + } + } + return exports; + } + // internal file + const files = module.files ?? []; + const normalizedName = path.normalize(name); + const supportedFileInstrumentations = files.filter(f => f.name === normalizedName && + isSupported(f.supportedVersions, version, module.includePrerelease)); + return supportedFileInstrumentations.reduce((patchedExports, file) => { + file.moduleExports = patchedExports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + baseDir, + }); + // patch signature is not typed, so we cast it assuming it's correct + return file.patch(patchedExports, module.moduleVersion); + } + return patchedExports; + }, exports); + } + enable() { + if (this._enabled) { + return; + } + this._enabled = true; + // already hooked, just call patch again + if (this._hooks.length > 0) { + for (const module of this._modules) { + if (typeof module.patch === 'function' && module.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + }); + module.patch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.patch(file.moduleExports, module.moduleVersion); + } + } + } + return; + } + this._warnOnPreloadedModules(); + for (const module of this._modules) { + const hookFn = (exports, name, baseDir) => { + if (!baseDir && path.isAbsolute(name)) { + const parsedPath = path.parse(name); + name = parsedPath.name; + baseDir = parsedPath.dir; + } + return this._onRequire(module, exports, name, baseDir); + }; + const onRequire = (exports, name, baseDir) => { + return this._onRequire(module, exports, name, baseDir); + }; + // `RequireInTheMiddleSingleton` does not support absolute paths. + // For an absolute paths, we must create a separate instance of the + // require-in-the-middle `Hook`. + const hook = path.isAbsolute(module.name) + ? new HookRequire([module.name], { internals: true }, onRequire) + : this._requireInTheMiddleSingleton.register(module.name, onRequire); + this._hooks.push(hook); + const esmHook = new HookImport([module.name], { internals: false }, hookFn); + this._hooks.push(esmHook); + } + } + disable() { + if (!this._enabled) { + return; + } + this._enabled = false; + for (const module of this._modules) { + if (typeof module.unpatch === 'function' && module.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + }); + module.unpatch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.unpatch(file.moduleExports, module.moduleVersion); + } + } + } + } + isEnabled() { + return this._enabled; + } +} +function isSupported(supportedVersions, version, includePrerelease) { + if (typeof version === 'undefined') { + // If we don't have the version, accept the wildcard case only + return supportedVersions.includes('*'); + } + return supportedVersions.some(supportedVersion => { + return satisfies(version, supportedVersion, { includePrerelease }); + }); +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js.map new file mode 100644 index 0000000..cca706c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/node/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n RequireInTheMiddleSingleton,\n Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\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(\n `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\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = 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 } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\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(\n f =>\n f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\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(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: 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: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\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 HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: false },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.d.ts new file mode 100644 index 0000000..d8e833e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.d.ts @@ -0,0 +1,2 @@ +export { normalize } from 'path'; +//# sourceMappingURL=normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js new file mode 100644 index 0000000..f6280d5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { normalize } from 'path'; +//# sourceMappingURL=normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js.map new file mode 100644 index 0000000..919a813 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../src/platform/node/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { normalize } from 'path';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.d.ts new file mode 100644 index 0000000..7bfd831 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.d.ts @@ -0,0 +1,58 @@ +export declare enum SemconvStability { + /** Emit only stable semantic conventions. */ + STABLE = 1, + /** Emit only old semantic conventions. */ + OLD = 2, + /** Emit both stable and old semantic conventions. */ + DUPLICATE = 3 +} +type SemConvStabilityNamespace = 'http' | 'messaging' | 'database' | 'k8s' | (string & {}); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +export declare function semconvStabilityFromStr(namespace: SemConvStabilityNamespace, str: string | undefined): SemconvStability; +export {}; +//# sourceMappingURL=semconvStability.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js new file mode 100644 index 0000000..11ed6de --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js @@ -0,0 +1,90 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var SemconvStability; +(function (SemconvStability) { + /** Emit only stable semantic conventions. */ + SemconvStability[SemconvStability["STABLE"] = 1] = "STABLE"; + /** Emit only old semantic conventions. */ + SemconvStability[SemconvStability["OLD"] = 2] = "OLD"; + /** Emit both stable and old semantic conventions. */ + SemconvStability[SemconvStability["DUPLICATE"] = 3] = "DUPLICATE"; +})(SemconvStability || (SemconvStability = {})); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +export function semconvStabilityFromStr(namespace, str) { + let semconvStability = SemconvStability.OLD; + // The same parsing of `str` as `getStringListFromEnv` from the core pkg. + const entries = str + ?.split(',') + .map(v => v.trim()) + .filter(s => s !== ''); + for (const entry of entries ?? []) { + if (entry.toLowerCase() === namespace + '/dup') { + // DUPLICATE takes highest precedence. + semconvStability = SemconvStability.DUPLICATE; + break; + } + else if (entry.toLowerCase() === namespace) { + semconvStability = SemconvStability.STABLE; + } + } + return semconvStability; +} +//# sourceMappingURL=semconvStability.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js.map new file mode 100644 index 0000000..c724aea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconvStability.js","sourceRoot":"","sources":["../../src/semconvStability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,6CAA6C;IAC7C,2DAAY,CAAA;IACZ,0CAA0C;IAC1C,qDAAS,CAAA;IACT,qDAAqD;IACrD,iEAAqB,CAAA;AACvB,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAoC,EACpC,GAAuB;IAEvB,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC;IAE5C,yEAAyE;IACzE,MAAM,OAAO,GAAG,GAAG;QACjB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,EAAE,EAAE;QACjC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,GAAG,MAAM,EAAE;YAC9C,sCAAsC;YACtC,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC;YAC9C,MAAM;SACP;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;YAC5C,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC;SAC5C;KACF;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\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 */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\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 } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semver.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semver.d.ts new file mode 100644 index 0000000..30799dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semver.d.ts @@ -0,0 +1,16 @@ +/** Interface for the options to configure semantic versioning satisfy check. */ +export interface SatisfiesOptions { + /** + * If set to true, the pre-release checks will be included + * as described [here](https://github.com/npm/node-semver#prerelease-tags). + */ + includePrerelease?: boolean; +} +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +export declare function satisfies(version: string, range: string, options?: SatisfiesOptions): boolean; +//# sourceMappingURL=semver.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semver.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semver.js new file mode 100644 index 0000000..3909548 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semver.js @@ -0,0 +1,514 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// This is a custom semantic versioning implementation compatible with the +// `satisfies(version, range, options?)` function from the `semver` npm package; +// with the exception that the `loose` option is not supported. +// +// The motivation for the custom semver implementation is that +// `semver` package has some initialization delay (lots of RegExp init and compile) +// and this leads to coldstart overhead for the OTEL Lambda Node.js layer. +// Hence, we have implemented lightweight version of it internally with required functionalities. +import { diag } from '@opentelemetry/api'; +const 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-]+)*))?$/; +const 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-]+)*))?$/; +const operatorResMap = { + '>': [1], + '>=': [0, 1], + '=': [0], + '<=': [-1, 0], + '<': [-1], + '!=': [-1, 1], +}; +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +export function satisfies(version, range, options) { + // Strict semver format check + if (!_validateVersion(version)) { + diag.error(`Invalid version: ${version}`); + return false; + } + // If range is empty, satisfy check succeeds regardless what version is + if (!range) { + return true; + } + // Cleanup range + range = range.replace(/([<>=~^]+)\s+/g, '$1'); + // Parse version + const parsedVersion = _parseVersion(version); + if (!parsedVersion) { + return false; + } + const allParsedRanges = []; + // Check given version whether it satisfies given range expression + const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options); + // If check result is OK, + // do another final check for pre-release, if pre-release check is included by option + if (checkResult && !options?.includePrerelease) { + return _doPreleaseCheck(parsedVersion, allParsedRanges); + } + return checkResult; +} +function _validateVersion(version) { + return typeof version === 'string' && VERSION_REGEXP.test(version); +} +function _doSatisfies(parsedVersion, range, allParsedRanges, options) { + if (range.includes('||')) { + // A version matches a range if and only if + // every comparator in at least one of the ||-separated comparator sets is satisfied by the version + const ranges = range.trim().split('||'); + for (const r of ranges) { + if (_checkRange(parsedVersion, r, allParsedRanges, options)) { + return true; + } + } + return false; + } + else if (range.includes(' - ')) { + // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc + range = replaceHyphen(range, options); + } + else if (range.includes(' ')) { + // Multiple separated ranges and all needs to be satisfied for success + const ranges = range + .trim() + .replace(/\s{2,}/g, ' ') + .split(' '); + for (const r of ranges) { + if (!_checkRange(parsedVersion, r, allParsedRanges, options)) { + return false; + } + } + return true; + } + // Check given parsed version with given range + return _checkRange(parsedVersion, range, allParsedRanges, options); +} +function _checkRange(parsedVersion, range, allParsedRanges, options) { + range = _normalizeRange(range, options); + if (range.includes(' ')) { + // If there are multiple ranges separated, satisfy each of them + return _doSatisfies(parsedVersion, range, allParsedRanges, options); + } + else { + // Validate and parse range + const parsedRange = _parseRange(range); + allParsedRanges.push(parsedRange); + // Check parsed version by parsed range + return _satisfies(parsedVersion, parsedRange); + } +} +function _satisfies(parsedVersion, parsedRange) { + // If range is invalid, satisfy check fails (no error throw) + if (parsedRange.invalid) { + return false; + } + // If range is empty or wildcard, satisfy check succeeds regardless what version is + if (!parsedRange.version || _isWildcard(parsedRange.version)) { + return true; + } + // Compare version segment first + let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []); + // If versions segments are equal, compare by pre-release segments + if (comparisonResult === 0) { + const versionPrereleaseSegments = parsedVersion.prereleaseSegments || []; + const rangePrereleaseSegments = parsedRange.prereleaseSegments || []; + if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) { + comparisonResult = 0; + } + else if (!versionPrereleaseSegments.length && + rangePrereleaseSegments.length) { + comparisonResult = 1; + } + else if (versionPrereleaseSegments.length && + !rangePrereleaseSegments.length) { + comparisonResult = -1; + } + else { + comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments); + } + } + // Resolve check result according to comparison operator + return operatorResMap[parsedRange.op]?.includes(comparisonResult); +} +function _doPreleaseCheck(parsedVersion, allParsedRanges) { + if (parsedVersion.prerelease) { + return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version); + } + return true; +} +function _normalizeRange(range, options) { + range = range.trim(); + range = replaceCaret(range, options); + range = replaceTilde(range); + range = replaceXRange(range, options); + range = range.trim(); + return range; +} +function isX(id) { + return !id || id.toLowerCase() === 'x' || id === '*'; +} +function _parseVersion(versionString) { + const match = versionString.match(VERSION_REGEXP); + if (!match) { + diag.error(`Invalid version: ${versionString}`); + return undefined; + } + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + return { + op: undefined, + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _parseRange(rangeString) { + if (!rangeString) { + return {}; + } + const match = rangeString.match(RANGE_REGEXP); + if (!match) { + diag.error(`Invalid range: ${rangeString}`); + return { + invalid: true, + }; + } + let op = match.groups.op; + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + if (op === '==') { + op = '='; + } + return { + op: op || '=', + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _isWildcard(s) { + return s === '*' || s === 'x' || s === 'X'; +} +function _parseVersionString(v) { + const n = parseInt(v, 10); + return isNaN(n) ? v : n; +} +function _normalizeVersionType(a, b) { + if (typeof a === typeof b) { + if (typeof a === 'number') { + return [a, b]; + } + else if (typeof a === 'string') { + return [a, b]; + } + else { + throw new Error('Version segments can only be strings or numbers'); + } + } + else { + return [String(a), String(b)]; + } +} +function _compareVersionStrings(v1, v2) { + if (_isWildcard(v1) || _isWildcard(v2)) { + return 0; + } + const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2)); + if (parsedV1 > parsedV2) { + return 1; + } + else if (parsedV1 < parsedV2) { + return -1; + } + return 0; +} +function _compareVersionSegments(v1, v2) { + for (let i = 0; i < Math.max(v1.length, v2.length); i++) { + const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0'); + if (res !== 0) { + return res; + } + } + return 0; +} +//////////////////////////////////////////////////////////////////////////////// +// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb +// License: +/* + * The ISC License + * + * Copyright (c) Isaac Z. Schlueter and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +const LETTERDASHNUMBER = '[a-zA-Z0-9-]'; +const NUMERICIDENTIFIER = '0|[1-9]\\d*'; +const NONNUMERICIDENTIFIER = `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`; +const GTLT = '((?:<|>)?=?)'; +const PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`; +const PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\.${PRERELEASEIDENTIFIER})*))`; +const BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`; +const BUILD = `(?:\\+(${BUILDIDENTIFIER}(?:\\.${BUILDIDENTIFIER})*))`; +const XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\*`; +const XRANGEPLAIN = `[v=\\s]*(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:${PRERELEASE})?${BUILD}?` + + `)?)?`; +const XRANGE = `^${GTLT}\\s*${XRANGEPLAIN}$`; +const XRANGE_REGEXP = new RegExp(XRANGE); +const HYPHENRANGE = `^\\s*(${XRANGEPLAIN})` + `\\s+-\\s+` + `(${XRANGEPLAIN})` + `\\s*$`; +const HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE); +const LONETILDE = '(?:~>?)'; +const TILDE = `^${LONETILDE}${XRANGEPLAIN}$`; +const TILDE_REGEXP = new RegExp(TILDE); +const LONECARET = '(?:\\^)'; +const CARET = `^${LONECARET}${XRANGEPLAIN}$`; +const CARET_REGEXP = new RegExp(CARET); +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285 +// +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +// ~0.0.1 --> >=0.0.1 <0.1.0-0 +function replaceTilde(comp) { + const r = TILDE_REGEXP; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } + else if (pr) { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329 +// +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +// ^0.0.1 --> >=0.0.1 <0.0.2-0 +// ^0.1.0 --> >=0.1.0 <0.2.0-0 +function replaceCaret(comp, options) { + const r = CARET_REGEXP; + const z = options?.includePrerelease ? '-0' : ''; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } + else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } + else if (pr) { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } + } + else { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390 +function replaceXRange(comp, options) { + const r = XRANGE_REGEXP; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === '=' && anyX) { + gtlt = ''; + } + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options?.includePrerelease ? '-0' : ''; + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0'; + } + else { + // nothing is forbidden + ret = '*'; + } + } + else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0; + } + p = 0; + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>='; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } + else { + m = +m + 1; + p = 0; + } + } + else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<'; + if (xm) { + M = +M + 1; + } + else { + m = +m + 1; + } + } + if (gtlt === '<') { + pr = '-0'; + } + ret = `${gtlt + M}.${m}.${p}${pr}`; + } + else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } + else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488 +// +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +function replaceHyphen(comp, options) { + const r = HYPHENRANGE_REGEXP; + return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ''; + } + else if (isX(fm)) { + from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (isX(fp)) { + from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (fpr) { + from = `>=${from}`; + } + else { + from = `>=${from}${options?.includePrerelease ? '-0' : ''}`; + } + if (isX(tM)) { + to = ''; + } + else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } + else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } + else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } + else if (options?.includePrerelease) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } + else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }); +} +//# sourceMappingURL=semver.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semver.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semver.js.map new file mode 100644 index 0000000..4786071 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/semver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/semver.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// 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.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?: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 =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\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-]+)*))?$/;\n\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\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 */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\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}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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: string[] = 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 } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = 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\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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 } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\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\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\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}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\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 */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\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: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\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 } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\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\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: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\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 } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\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\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\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\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\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\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 } else {\n m = +m + 1;\n p = 0;\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 } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\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: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.d.ts new file mode 100644 index 0000000..0b00757 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.d.ts @@ -0,0 +1,17 @@ +import { ShimWrapped } from './types'; +export declare const wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; +export declare const massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; +export declare const unwrap: (nodule: Nodule, name: keyof Nodule) => void; +export declare const massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +export interface ShimmerOptions { + logger?: typeof console.error; +} +declare function shimmer(options: ShimmerOptions): void; +declare namespace shimmer { + var wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; + var massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + var unwrap: (nodule: Nodule, name: keyof Nodule) => void; + var massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +} +export default shimmer; +//# sourceMappingURL=shimmer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js new file mode 100644 index 0000000..d996aa4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js @@ -0,0 +1,126 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Default to complaining loudly when things don't go according to plan. +// eslint-disable-next-line no-console +let logger = console.error.bind(console); +// Sets a property on an object, preserving its enumerability. +// This function assumes that the property is already writable. +function defineProperty(obj, name, value) { + const enumerable = !!obj[name] && + Object.prototype.propertyIsEnumerable.call(obj, name); + Object.defineProperty(obj, name, { + configurable: true, + enumerable, + writable: true, + value, + }); +} +export const wrap = (nodule, name, wrapper) => { + if (!nodule || !nodule[name]) { + logger('no original function ' + String(name) + ' to wrap'); + return; + } + if (!wrapper) { + logger('no wrapper function'); + logger(new Error().stack); + return; + } + const original = nodule[name]; + if (typeof original !== 'function' || typeof wrapper !== 'function') { + logger('original object and wrapper must be functions'); + return; + } + const wrapped = wrapper(original, name); + defineProperty(wrapped, '__original', original); + defineProperty(wrapped, '__unwrap', () => { + if (nodule[name] === wrapped) { + defineProperty(nodule, name, original); + } + }); + defineProperty(wrapped, '__wrapped', true); + defineProperty(nodule, name, wrapped); + return wrapped; +}; +export const massWrap = (nodules, names, wrapper) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to wrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + wrap(nodule, name, wrapper); + }); + }); +}; +export const unwrap = (nodule, name) => { + if (!nodule || !nodule[name]) { + logger('no function to unwrap.'); + logger(new Error().stack); + return; + } + const wrapped = nodule[name]; + if (!wrapped.__unwrap) { + logger('no original to unwrap to -- has ' + + String(name) + + ' already been unwrapped?'); + } + else { + wrapped.__unwrap(); + return; + } +}; +export const massUnwrap = (nodules, names) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to unwrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + unwrap(nodule, name); + }); + }); +}; +export default function shimmer(options) { + if (options && options.logger) { + if (typeof options.logger !== 'function') { + logger("new logger isn't a function, not replacing"); + } + else { + logger = options.logger; + } + } +} +shimmer.wrap = wrap; +shimmer.massWrap = massWrap; +shimmer.unwrap = unwrap; +shimmer.massUnwrap = massUnwrap; +//# sourceMappingURL=shimmer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js.map new file mode 100644 index 0000000..ffee843 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shimmer.js","sourceRoot":"","sources":["../../src/shimmer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\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 as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types.d.ts new file mode 100644 index 0000000..5cf7d03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types.d.ts @@ -0,0 +1,116 @@ +import { TracerProvider, MeterProvider, Span } from '@opentelemetry/api'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** Interface Instrumentation to apply patch. */ +export interface Instrumentation { + /** Instrumentation Name */ + instrumentationName: string; + /** Instrumentation Version */ + instrumentationVersion: string; + /** Method to disable the instrumentation */ + disable(): void; + /** Method to enable the instrumentation */ + enable(): void; + /** Method to set tracer provider */ + setTracerProvider(tracerProvider: TracerProvider): void; + /** Method to set meter provider */ + setMeterProvider(meterProvider: MeterProvider): void; + /** Method to set logger provider */ + setLoggerProvider?(loggerProvider: LoggerProvider): void; + /** Method to set instrumentation config */ + setConfig(config: ConfigType): void; + /** Method to get instrumentation config */ + getConfig(): ConfigType; +} +/** + * Base interface for configuration options common to all instrumentations. + * This interface can be extended by individual instrumentations to include + * additional configuration options specific to that instrumentation. + * All configuration options must be optional. + */ +export interface InstrumentationConfig { + /** + * Whether to enable the plugin. + * @default true + */ + enabled?: boolean; +} +/** + * This interface defines the params that are be added to the wrapped function + * using the "shimmer.wrap" + */ +export interface ShimWrapped extends Function { + __wrapped: boolean; + __unwrap: Function; + __original: Function; +} +export interface InstrumentationModuleFile { + /** Name of file to be patched with relative path */ + name: string; + moduleExports?: unknown; + /** Supported versions for the file. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with a function compatible + * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1). + * If the version is not supported, we won't apply instrumentation patch. + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Method to patch the instrumentation */ + patch(moduleExports: unknown, moduleVersion?: string): unknown; + /** Method to unpatch the instrumentation */ + unpatch(moduleExports?: unknown, moduleVersion?: string): void; +} +export interface InstrumentationModuleDefinition { + /** Module name or path */ + name: string; + moduleExports?: any; + /** Instrumented module version */ + moduleVersion?: string; + /** Supported version of module. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with the `satisfies` function of + * "The [semantic versioner](https://semver.org) for npm". + * If the version is not supported, we won't apply instrumentation patch (see `enable` method). + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Module internal files to be patched */ + files: InstrumentationModuleFile[]; + /** If set to true, the includePrerelease check will be included when calling semver.satisfies */ + includePrerelease?: boolean; + /** Method to patch the instrumentation */ + patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any + ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined; + /** Method to unpatch the instrumentation */ + unpatch?: ((moduleExports: any, moduleVersion?: string | undefined) => void) | undefined; +} +/** + * SpanCustomizationHook is a common way for instrumentations to expose extension points + * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle. + * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span, + * capture payloads, modify the span in some way, or carry some other side effect. + * + * The hook is registered with the instrumentation specific config by implementing an handler function with this signature, + * and if the hook is present, it will be called with the span and the event information + * when the event is emitted. + * + * When and under what conditions the hook is called and what data is passed + * in the info argument, is specific to each instrumentation and life-cycle event + * and should be documented where it is used. + * + * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events. + */ +export type SpanCustomizationHook = (span: Span, info: SpanCustomizationInfoType) => void; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types.js.map new file mode 100644 index 0000000..a2c15fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider, Span } from '@opentelemetry/api';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/** Interface Instrumentation to apply patch. */\nexport interface Instrumentation<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> {\n /** Instrumentation Name */\n instrumentationName: string;\n\n /** Instrumentation Version */\n instrumentationVersion: string;\n\n /** Method to disable the instrumentation */\n disable(): void;\n\n /** Method to enable the instrumentation */\n enable(): void;\n\n /** Method to set tracer provider */\n setTracerProvider(tracerProvider: TracerProvider): void;\n\n /** Method to set meter provider */\n setMeterProvider(meterProvider: MeterProvider): void;\n\n /** Method to set logger provider */\n setLoggerProvider?(loggerProvider: LoggerProvider): void;\n\n /** Method to set instrumentation config */\n setConfig(config: ConfigType): void;\n\n /** Method to get instrumentation config */\n getConfig(): ConfigType;\n}\n\n/**\n * Base interface for configuration options common to all instrumentations.\n * This interface can be extended by individual instrumentations to include\n * additional configuration options specific to that instrumentation.\n * All configuration options must be optional.\n */\nexport interface InstrumentationConfig {\n /**\n * Whether to enable the plugin.\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * This interface defines the params that are be added to the wrapped function\n * using the \"shimmer.wrap\"\n */\nexport interface ShimWrapped extends Function {\n __wrapped: boolean;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __unwrap: Function;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __original: Function;\n}\n\nexport interface InstrumentationModuleFile {\n /** Name of file to be patched with relative path */\n name: string;\n\n moduleExports?: unknown;\n\n /** Supported versions for the file.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with a function compatible\n * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1).\n * If the version is not supported, we won't apply instrumentation patch.\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Method to patch the instrumentation */\n patch(moduleExports: unknown, moduleVersion?: string): unknown;\n\n /** Method to unpatch the instrumentation */\n unpatch(moduleExports?: unknown, moduleVersion?: string): void;\n}\n\nexport interface InstrumentationModuleDefinition {\n /** Module name or path */\n name: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports?: any;\n\n /** Instrumented module version */\n moduleVersion?: string;\n\n /** Supported version of module.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with the `satisfies` function of\n * \"The [semantic versioner](https://semver.org) for npm\".\n * If the version is not supported, we won't apply instrumentation patch (see `enable` method).\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Module internal files to be patched */\n files: InstrumentationModuleFile[];\n\n /** If set to true, the includePrerelease check will be included when calling semver.satisfies */\n includePrerelease?: boolean;\n\n /** Method to patch the instrumentation */\n patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined;\n\n /** Method to unpatch the instrumentation */\n unpatch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | ((moduleExports: any, moduleVersion?: string | undefined) => void)\n | undefined;\n}\n\n/**\n * SpanCustomizationHook is a common way for instrumentations to expose extension points\n * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle.\n * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span,\n * capture payloads, modify the span in some way, or carry some other side effect.\n *\n * The hook is registered with the instrumentation specific config by implementing an handler function with this signature,\n * and if the hook is present, it will be called with the span and the event information\n * when the event is emitted.\n *\n * When and under what conditions the hook is called and what data is passed\n * in the info argument, is specific to each instrumentation and life-cycle event\n * and should be documented where it is used.\n *\n * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events.\n */\nexport type SpanCustomizationHook = (\n span: Span,\n info: SpanCustomizationInfoType\n) => void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.d.ts new file mode 100644 index 0000000..d9dc97d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.d.ts @@ -0,0 +1,13 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +export interface AutoLoaderResult { + instrumentations: Instrumentation[]; +} +export interface AutoLoaderOptions { + instrumentations?: (Instrumentation | Instrumentation[])[]; + tracerProvider?: TracerProvider; + meterProvider?: MeterProvider; + loggerProvider?: LoggerProvider; +} +//# sourceMappingURL=types_internal.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js new file mode 100644 index 0000000..876cf31 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types_internal.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js.map new file mode 100644 index 0000000..05a29dd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types_internal.js","sourceRoot":"","sources":["../../src/types_internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\nexport interface AutoLoaderResult {\n instrumentations: Instrumentation[];\n}\n\nexport interface AutoLoaderOptions {\n instrumentations?: (Instrumentation | Instrumentation[])[];\n tracerProvider?: TracerProvider;\n meterProvider?: MeterProvider;\n loggerProvider?: LoggerProvider;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/utils.d.ts new file mode 100644 index 0000000..e550087 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/utils.d.ts @@ -0,0 +1,19 @@ +import { ShimWrapped } from './types'; +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddle(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => void, preventThrowingError?: boolean): T; +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddleAsync(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => Promise | void, preventThrowingError?: boolean): Promise; +/** + * Checks if certain function has been already wrapped + * @param func + */ +export declare function isWrapped(func: unknown): func is ShimWrapped; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/utils.js new file mode 100644 index 0000000..67eea86 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/utils.js @@ -0,0 +1,74 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export function safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = execute(); + } + catch (e) { + error = e; + } + finally { + onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export async function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = await execute(); + } + catch (e) { + error = e; + } + finally { + await onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +/** + * Checks if certain function has been already wrapped + * @param func + */ +export function isWrapped(func) { + return (typeof func === 'function' && + typeof func.__original === 'function' && + typeof func.__unwrap === 'function' && + func.__wrapped === true); +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/utils.js.map new file mode 100644 index 0000000..c8f537c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,QAA+D,EAC/D,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,OAAO,EAAE,CAAC;KACpB;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAAgB,EAChB,QAGyB,EACzB,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;KAC1B;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AACD;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO,CACL,OAAO,IAAI,KAAK,UAAU;QAC1B,OAAQ,IAAoB,CAAC,UAAU,KAAK,UAAU;QACtD,OAAQ,IAAoB,CAAC,QAAQ,KAAK,UAAU;QACnD,IAAoB,CAAC,SAAS,KAAK,IAAI,CACzC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ShimWrapped } from './types';\n\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 */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n\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 */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (\n e: Error | undefined,\n result: T | undefined\n ) => Promise | void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/version.d.ts new file mode 100644 index 0000000..f619f6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.211.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/version.js new file mode 100644 index 0000000..d676626 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '0.211.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/version.js.map new file mode 100644 index 0000000..4072381 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esm/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.211.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.d.ts new file mode 100644 index 0000000..961729a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.d.ts @@ -0,0 +1,9 @@ +import { AutoLoaderOptions } from './types_internal'; +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +export declare function registerInstrumentations(options: AutoLoaderOptions): () => void; +//# sourceMappingURL=autoLoader.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js new file mode 100644 index 0000000..dc92948 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { trace, metrics } from '@opentelemetry/api'; +import { logs } from '@opentelemetry/api-logs'; +import { disableInstrumentations, enableInstrumentations, } from './autoLoaderUtils'; +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +export function registerInstrumentations(options) { + const tracerProvider = options.tracerProvider || trace.getTracerProvider(); + const meterProvider = options.meterProvider || metrics.getMeterProvider(); + const loggerProvider = options.loggerProvider || logs.getLoggerProvider(); + const instrumentations = options.instrumentations?.flat() ?? []; + enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider); + return () => { + disableInstrumentations(instrumentations); + }; +} +//# sourceMappingURL=autoLoader.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js.map new file mode 100644 index 0000000..068eeb2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoader.js","sourceRoot":"","sources":["../../src/autoLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA0B;IAE1B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC3E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1E,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEhE,sBAAsB,CACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,CACf,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\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 */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.d.ts new file mode 100644 index 0000000..c460564 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.d.ts @@ -0,0 +1,16 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +export declare function enableInstrumentations(instrumentations: Instrumentation[], tracerProvider?: TracerProvider, meterProvider?: MeterProvider, loggerProvider?: LoggerProvider): void; +/** + * Disable instrumentations + * @param instrumentations + */ +export declare function disableInstrumentations(instrumentations: Instrumentation[]): void; +//# sourceMappingURL=autoLoaderUtils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js new file mode 100644 index 0000000..e5759f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js @@ -0,0 +1,50 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +export function enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) { + for (let i = 0, j = instrumentations.length; i < j; i++) { + const instrumentation = instrumentations[i]; + if (tracerProvider) { + instrumentation.setTracerProvider(tracerProvider); + } + if (meterProvider) { + instrumentation.setMeterProvider(meterProvider); + } + if (loggerProvider && instrumentation.setLoggerProvider) { + instrumentation.setLoggerProvider(loggerProvider); + } + // instrumentations have been already enabled during creation + // so enable only if user prevented that by setting enabled to false + // this is to prevent double enabling but when calling register all + // instrumentations should be now enabled + if (!instrumentation.getConfig().enabled) { + instrumentation.enable(); + } + } +} +/** + * Disable instrumentations + * @param instrumentations + */ +export function disableInstrumentations(instrumentations) { + instrumentations.forEach(instrumentation => instrumentation.disable()); +} +//# sourceMappingURL=autoLoaderUtils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js.map new file mode 100644 index 0000000..fb05cb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoaderUtils.js","sourceRoot":"","sources":["../../src/autoLoaderUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,gBAAmC,EACnC,cAA+B,EAC/B,aAA6B,EAC7B,cAA+B;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,cAAc,EAAE;YAClB,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,IAAI,aAAa,EAAE;YACjB,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACjD;QACD,IAAI,cAAc,IAAI,eAAe,CAAC,iBAAiB,EAAE;YACvD,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,6DAA6D;QAC7D,oEAAoE;QACpE,mEAAmE;QACnE,yCAAyC;QACzC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE;YACxC,eAAe,CAAC,MAAM,EAAE,CAAC;SAC1B;KACF;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,gBAAmC;IAEnC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\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}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/index.d.ts new file mode 100644 index 0000000..b2b5dbc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/index.d.ts @@ -0,0 +1,9 @@ +export { registerInstrumentations } from './autoLoader'; +export { InstrumentationBase } from './platform/index'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export type { Instrumentation, InstrumentationConfig, InstrumentationModuleDefinition, InstrumentationModuleFile, ShimWrapped, SpanCustomizationHook, } from './types'; +export type { AutoLoaderOptions, AutoLoaderResult } from './types_internal'; +export { isWrapped, safeExecuteInTheMiddle, safeExecuteInTheMiddleAsync, } from './utils'; +export { SemconvStability, semconvStabilityFromStr } from './semconvStability'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/index.js new file mode 100644 index 0000000..aa64ce5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/index.js @@ -0,0 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { registerInstrumentations } from './autoLoader'; +export { InstrumentationBase } from './platform/index'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export { isWrapped, safeExecuteInTheMiddle, safeExecuteInTheMiddleAsync, } from './utils'; +export { SemconvStability, semconvStabilityFromStr } from './semconvStability'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/index.js.map new file mode 100644 index 0000000..453f88b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAUhF,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.d.ts new file mode 100644 index 0000000..9dc30d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.d.ts @@ -0,0 +1,74 @@ +import { DiagLogger, Meter, MeterProvider, Tracer, TracerProvider, Span } from '@opentelemetry/api'; +import { Logger, LoggerProvider } from '@opentelemetry/api-logs'; +import { InstrumentationModuleDefinition, Instrumentation, InstrumentationConfig, SpanCustomizationHook } from './types'; +/** + * Base abstract internal class for instrumenting node and web plugins + */ +export declare abstract class InstrumentationAbstract implements Instrumentation { + protected _config: ConfigType; + private _tracer; + private _meter; + private _logger; + protected _diag: DiagLogger; + readonly instrumentationName: string; + readonly instrumentationVersion: string; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => import("./types").ShimWrapped | undefined; + protected _unwrap: (nodule: Nodule, name: keyof Nodule) => void; + protected _massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + protected _massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; + protected get meter(): Meter; + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider: MeterProvider): void; + protected get logger(): Logger; + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider: LoggerProvider): void; + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions(): InstrumentationModuleDefinition[]; + /** + * Sets the new metric instruments with the current Meter. + */ + protected _updateMetricInstruments(): void; + getConfig(): ConfigType; + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config: ConfigType): void; + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider: TracerProvider): void; + protected get tracer(): Tracer; + abstract enable(): void; + abstract disable(): void; + /** + * Init method in which plugin should define _modules and patches for + * methods. + */ + protected abstract init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] | void; + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + protected _runSpanCustomizationHook(hookHandler: SpanCustomizationHook | undefined, triggerName: string, span: Span, info: SpanCustomizationInfoType): void; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js new file mode 100644 index 0000000..ecf776f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js @@ -0,0 +1,141 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag, metrics, trace, } from '@opentelemetry/api'; +import { logs } from '@opentelemetry/api-logs'; +import * as shimmer from './shimmer'; +/** + * Base abstract internal class for instrumenting node and web plugins + */ +export class InstrumentationAbstract { + _config = {}; + _tracer; + _meter; + _logger; + _diag; + instrumentationName; + instrumentationVersion; + constructor(instrumentationName, instrumentationVersion, config) { + this.instrumentationName = instrumentationName; + this.instrumentationVersion = instrumentationVersion; + this.setConfig(config); + this._diag = diag.createComponentLogger({ + namespace: instrumentationName, + }); + this._tracer = trace.getTracer(instrumentationName, instrumentationVersion); + this._meter = metrics.getMeter(instrumentationName, instrumentationVersion); + this._logger = logs.getLogger(instrumentationName, instrumentationVersion); + this._updateMetricInstruments(); + } + /* Api to wrap instrumented method */ + _wrap = shimmer.wrap; + /* Api to unwrap instrumented methods */ + _unwrap = shimmer.unwrap; + /* Api to mass wrap instrumented method */ + _massWrap = shimmer.massWrap; + /* Api to mass unwrap instrumented methods */ + _massUnwrap = shimmer.massUnwrap; + /* Returns meter */ + get meter() { + return this._meter; + } + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider) { + this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion); + this._updateMetricInstruments(); + } + /* Returns logger */ + get logger() { + return this._logger; + } + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider) { + this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion); + } + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions() { + const initResult = this.init() ?? []; + if (!Array.isArray(initResult)) { + return [initResult]; + } + return initResult; + } + /** + * Sets the new metric instruments with the current Meter. + */ + _updateMetricInstruments() { + return; + } + /* Returns InstrumentationConfig */ + getConfig() { + return this._config; + } + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config) { + // copy config first level properties to ensure they are immutable. + // nested properties are not copied, thus are mutable from the outside. + this._config = { + enabled: true, + ...config, + }; + } + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider) { + this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion); + } + /* Returns tracer */ + get tracer() { + return this._tracer; + } + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + _runSpanCustomizationHook(hookHandler, triggerName, span, info) { + if (!hookHandler) { + return; + } + try { + hookHandler(span, info); + } + catch (e) { + this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e); + } + } +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js.map new file mode 100644 index 0000000..9fee0ce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n diag,\n DiagLogger,\n metrics,\n Meter,\n MeterProvider,\n trace,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n public readonly instrumentationName: string;\n public readonly instrumentationVersion: string;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\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 public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\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 /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\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 protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.d.ts new file mode 100644 index 0000000..d9b12fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationModuleDefinition, InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleDefinition implements InstrumentationModuleDefinition { + files: InstrumentationModuleFile[]; + name: string; + supportedVersions: string[]; + patch: ((exports: any, moduleVersion?: string) => any) | undefined; + unpatch: ((exports: any, moduleVersion?: string) => void) | undefined; + constructor(name: string, supportedVersions: string[], patch?: (exports: any, moduleVersion?: string) => any, unpatch?: (exports: any, moduleVersion?: string) => void, files?: InstrumentationModuleFile[]); +} +//# sourceMappingURL=instrumentationNodeModuleDefinition.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js new file mode 100644 index 0000000..c325e79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class InstrumentationNodeModuleDefinition { + files; + name; + supportedVersions; + patch; + unpatch; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch, files) { + this.files = files || []; + this.name = name; + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + } +} +//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js.map new file mode 100644 index 0000000..c12362f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleDefinition.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleDefinition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,MAAM,OAAO,mCAAmC;IAG9C,KAAK,CAA8B;IAC5B,IAAI,CAAS;IACb,iBAAiB,CAAW;IAC5B,KAAK,CAAC;IACN,OAAO,CAAC;IACf,YACE,IAAY,EACZ,iBAA2B;IAC3B,8DAA8D;IAC9D,KAAqD;IACrD,8DAA8D;IAC9D,OAAwD,EACxD,KAAmC;QAEnC,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.d.ts new file mode 100644 index 0000000..3c22ecb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.d.ts @@ -0,0 +1,9 @@ +import { InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleFile implements InstrumentationModuleFile { + name: string; + supportedVersions: string[]; + patch: (moduleExports: any, moduleVersion?: string) => any; + unpatch: (moduleExports?: any, moduleVersion?: string) => void; + constructor(name: string, supportedVersions: string[], patch: (moduleExports: any, moduleVersion?: string) => any, unpatch: (moduleExports?: any, moduleVersion?: string) => void); +} +//# sourceMappingURL=instrumentationNodeModuleFile.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js new file mode 100644 index 0000000..d564ff9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { normalize } from './platform/index'; +export class InstrumentationNodeModuleFile { + name; + supportedVersions; + patch; + unpatch; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch) { + this.name = normalize(name); + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + } +} +//# sourceMappingURL=instrumentationNodeModuleFile.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js.map new file mode 100644 index 0000000..1e3e977 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleFile.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleFile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,6BAA6B;IAGjC,IAAI,CAAS;IACb,iBAAiB,CAAW;IAC5B,KAAK,CAAC;IACN,OAAO,CAAC;IAEf,YACE,IAAY,EACZ,iBAA2B;IAC3B,8DAA8D;IAC9D,KAA0D;IAC1D,8DAA8D;IAC9D,OAA8D;QAE9D,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.d.ts new file mode 100644 index 0000000..37aafc8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './noop-normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js new file mode 100644 index 0000000..d8417b4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './noop-normalize'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js.map new file mode 100644 index 0000000..fb42463 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './noop-normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.d.ts new file mode 100644 index 0000000..be36994 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationAbstract } from '../../instrumentation'; +import * as types from '../../types'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting web plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js new file mode 100644 index 0000000..8358620 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { InstrumentationAbstract } from '../../instrumentation'; +/** + * Base abstract class for instrumenting web plugins + */ +export class InstrumentationBase extends InstrumentationAbstract { + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + if (this._config.enabled) { + this.enable(); + } + } +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js.map new file mode 100644 index 0000000..a54838a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/browser/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAIhE;;GAEG;AACH,MAAM,OAAgB,mBAGpB,SAAQ,uBAAmC;IAG3C,YACE,mBAA2B,EAC3B,sBAA8B,EAC9B,MAAkB;QAElB,KAAK,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport * as types from '../../types';\nimport { InstrumentationConfig } from '../../types';\n\n/**\n * Base abstract class for instrumenting web plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.d.ts new file mode 100644 index 0000000..7c64ca3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.d.ts @@ -0,0 +1,13 @@ +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +export declare function normalize(path: string): string; +//# sourceMappingURL=noop-normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js new file mode 100644 index 0000000..bcfedbb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +export function normalize(path) { + diag.warn('Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'); + return path; +} +//# sourceMappingURL=noop-normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js.map new file mode 100644 index 0000000..e059d44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"noop-normalize.js","sourceRoot":"","sources":["../../../../src/platform/browser/noop-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,IAAI,CACP,yOAAyO,CAC1O,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\n\n/**\n * Placeholder normalize function to replace the node variant in browser runtimes,\n * this should never be called and will perform a no-op and warn if it is called regardless.\n *\n * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation\n * package can be made node-only.\n *\n * @param path input path\n * @return unmodified path\n * @internal\n */\nexport function normalize(path: string): string {\n diag.warn(\n 'Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'\n );\n return path;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.d.ts new file mode 100644 index 0000000..2cbefb0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.d.ts @@ -0,0 +1,2 @@ +export { InstrumentationBase, normalize } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js new file mode 100644 index 0000000..1fcd712 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase, normalize } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js.map new file mode 100644 index 0000000..944037a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase, normalize } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.d.ts new file mode 100644 index 0000000..6da6060 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.d.ts @@ -0,0 +1,36 @@ +import type { Hooked } from './RequireInTheMiddleSingleton'; +export declare const ModuleNameSeparator = "/"; +type ModuleNameTrieSearchOptions = { + /** + * Whether to return the results in insertion order + */ + maintainInsertionOrder?: boolean; + /** + * Whether to return only full matches + */ + fullOnly?: boolean; +}; +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +export declare class ModuleNameTrie { + private _trie; + private _counter; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook: Hooked): void; + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName: string, { maintainInsertionOrder, fullOnly }?: ModuleNameTrieSearchOptions): Hooked[]; +} +export {}; +//# sourceMappingURL=ModuleNameTrie.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js new file mode 100644 index 0000000..45452b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js @@ -0,0 +1,85 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const ModuleNameSeparator = '/'; +/** + * Node in a `ModuleNameTrie` + */ +class ModuleNameTrieNode { + hooks = []; + children = new Map(); +} +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +export class ModuleNameTrie { + _trie = new ModuleNameTrieNode(); + _counter = 0; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook) { + let trieNode = this._trie; + for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) { + let nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + nextNode = new ModuleNameTrieNode(); + trieNode.children.set(moduleNamePart, nextNode); + } + trieNode = nextNode; + } + trieNode.hooks.push({ hook, insertedId: this._counter++ }); + } + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName, { maintainInsertionOrder, fullOnly } = {}) { + let trieNode = this._trie; + const results = []; + let foundFull = true; + for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) { + const nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + foundFull = false; + break; + } + if (!fullOnly) { + results.push(...nextNode.hooks); + } + trieNode = nextNode; + } + if (fullOnly && foundFull) { + results.push(...trieNode.hooks); + } + if (results.length === 0) { + return []; + } + if (results.length === 1) { + return [results[0].hook]; + } + if (maintainInsertionOrder) { + results.sort((a, b) => a.insertedId - b.insertedId); + } + return results.map(({ hook }) => hook); + } +} +//# sourceMappingURL=ModuleNameTrie.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js.map new file mode 100644 index 0000000..00e7879 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ModuleNameTrie.js","sourceRoot":"","sources":["../../../../src/platform/node/ModuleNameTrie.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;GAEG;AACH,MAAM,kBAAkB;IACtB,KAAK,GAAgD,EAAE,CAAC;IACxD,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;CACvD;AAaD;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,KAAK,GAAuB,IAAI,kBAAkB,EAAE,CAAC;IACrD,QAAQ,GAAW,CAAC,CAAC;IAE7B;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAE1B,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;YACvE,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACpC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;aACjD;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QACD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CACJ,UAAkB,EAClB,EAAE,sBAAsB,EAAE,QAAQ,KAAkC,EAAE;QAEtE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAgC,EAAE,CAAC;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;YAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;gBACb,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACP;YACD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjC;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QAED,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,EAAE,CAAC;SACX;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC1B;QACD,IAAI,sBAAsB,EAAE;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;SACrD;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(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 /**\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(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(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\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.d.ts new file mode 100644 index 0000000..e1b8733 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.d.ts @@ -0,0 +1,35 @@ +import type { OnRequireFn } from 'require-in-the-middle'; +export type Hooked = { + moduleName: string; + onRequire: OnRequireFn; +}; +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +export declare class RequireInTheMiddleSingleton { + private _moduleNameTrie; + private static _instance?; + private constructor(); + private _initialize; + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName: string, onRequire: OnRequireFn): Hooked; + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance(): RequireInTheMiddleSingleton; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js new file mode 100644 index 0000000..543000a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js @@ -0,0 +1,107 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Hook } from 'require-in-the-middle'; +import * as path from 'path'; +import { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie'; +/** + * Whether Mocha is running in this process + * Inspired by https://github.com/AndreasPizsa/detect-mocha + * + * @type {boolean} + */ +const isMocha = [ + 'afterEach', + 'after', + 'beforeEach', + 'before', + 'describe', + 'it', +].every(fn => { + // @ts-expect-error TS7053: Element implicitly has an 'any' type + return typeof global[fn] === 'function'; +}); +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +export class RequireInTheMiddleSingleton { + _moduleNameTrie = new ModuleNameTrie(); + static _instance; + constructor() { + this._initialize(); + } + _initialize() { + new Hook( + // Intercept all `require` calls; we will filter the matching ones below + null, { internals: true }, (exports, name, basedir) => { + // For internal files on Windows, `name` will use backslash as the path separator + const normalizedModuleName = normalizePathSeparators(name); + const matches = this._moduleNameTrie.search(normalizedModuleName, { + maintainInsertionOrder: true, + // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises'). + // This matches the behavior of `require-in-the-middle`. + // `basedir` is always `undefined` for core modules. + fullOnly: basedir === undefined, + }); + for (const { onRequire } of matches) { + exports = onRequire(exports, name, basedir); + } + return exports; + }); + } + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName, onRequire) { + const hooked = { moduleName, onRequire }; + this._moduleNameTrie.insert(hooked); + return hooked; + } + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance() { + // Mocha runs all test suites in the same process + // This prevents test suites from sharing a singleton + if (isMocha) + return new RequireInTheMiddleSingleton(); + return (this._instance = + this._instance ?? new RequireInTheMiddleSingleton()); + } +} +/** + * Normalize the path separators to forward slash in a module name or path + * + * @param {string} moduleNameOrPath Module name or path + * @returns {string} Normalized module name or path + */ +function normalizePathSeparators(moduleNameOrPath) { + return path.sep !== ModuleNameSeparator + ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator) + : moduleNameOrPath; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js.map new file mode 100644 index 0000000..0d20243 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RequireInTheMiddleSingleton.js","sourceRoot":"","sources":["../../../../src/platform/node/RequireInTheMiddleSingleton.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvE;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IACd,WAAW;IACX,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,IAAI;CACL,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;IACX,gEAAgE;IAChE,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,OAAO,2BAA2B;IAC9B,eAAe,GAAmB,IAAI,cAAc,EAAE,CAAC;IACvD,MAAM,CAAC,SAAS,CAA+B;IAEvD;QACE,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI;QACN,wEAAwE;QACxE,IAAI,EACJ,EAAE,SAAS,EAAE,IAAI,EAAE,EACnB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACzB,iFAAiF;YACjF,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE3D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,oBAAoB,EAAE;gBAChE,sBAAsB,EAAE,IAAI;gBAC5B,gFAAgF;gBAChF,wDAAwD;gBACxD,oDAAoD;gBACpD,QAAQ,EAAE,OAAO,KAAK,SAAS;aAChC,CAAC,CAAC;YAEH,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE;gBACnC,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;aAC7C;YAED,OAAO,OAAO,CAAC;QACjB,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,UAAkB,EAAE,SAAsB;QACjD,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW;QAChB,iDAAiD;QACjD,qDAAqD;QACrD,IAAI,OAAO;YAAE,OAAO,IAAI,2BAA2B,EAAE,CAAC;QAEtD,OAAO,CAAC,IAAI,CAAC,SAAS;YACpB,IAAI,CAAC,SAAS,IAAI,IAAI,2BAA2B,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,gBAAwB;IACvD,OAAO,IAAI,CAAC,GAAG,KAAK,mBAAmB;QACrC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC5D,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\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/**\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 */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\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\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\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: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\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: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.d.ts new file mode 100644 index 0000000..181ca82 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js new file mode 100644 index 0000000..27ac5e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './normalize'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js.map new file mode 100644 index 0000000..7ce23f9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.d.ts new file mode 100644 index 0000000..a74d6bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.d.ts @@ -0,0 +1,25 @@ +import * as types from '../../types'; +import { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer'; +import { InstrumentationAbstract } from '../../instrumentation'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting node plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + private _modules; + private _hooks; + private _requireInTheMiddleSingleton; + private _enabled; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: typeof wrap; + protected _unwrap: typeof unwrap; + protected _massWrap: typeof massWrap; + protected _massUnwrap: typeof massUnwrap; + private _warnOnPreloadedModules; + private _extractPackageVersion; + private _onRequire; + enable(): void; + disable(): void; + isEnabled(): boolean; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js new file mode 100644 index 0000000..81ef53d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js @@ -0,0 +1,277 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as path from 'path'; +import { types as utilTypes } from 'util'; +import { satisfies } from '../../semver'; +import { wrap, unwrap } from '../../shimmer'; +import { InstrumentationAbstract } from '../../instrumentation'; +import { RequireInTheMiddleSingleton, } from './RequireInTheMiddleSingleton'; +import { Hook as HookImport } from 'import-in-the-middle'; +import { diag } from '@opentelemetry/api'; +import { Hook as HookRequire } from 'require-in-the-middle'; +import { readFileSync } from 'fs'; +import { isWrapped } from '../../utils'; +/** + * Base abstract class for instrumenting node plugins + */ +export class InstrumentationBase extends InstrumentationAbstract { + _modules; + _hooks = []; + _requireInTheMiddleSingleton = RequireInTheMiddleSingleton.getInstance(); + _enabled = false; + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + let modules = this.init(); + if (modules && !Array.isArray(modules)) { + modules = [modules]; + } + this._modules = modules || []; + if (this._config.enabled) { + this.enable(); + } + } + _wrap = (moduleExports, name, wrapper) => { + if (isWrapped(moduleExports[name])) { + this._unwrap(moduleExports, name); + } + if (!utilTypes.isProxy(moduleExports)) { + return wrap(moduleExports, name, wrapper); + } + else { + const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper); + Object.defineProperty(moduleExports, name, { + value: wrapped, + }); + return wrapped; + } + }; + _unwrap = (moduleExports, name) => { + if (!utilTypes.isProxy(moduleExports)) { + return unwrap(moduleExports, name); + } + else { + return Object.defineProperty(moduleExports, name, { + value: moduleExports[name], + }); + } + }; + _massWrap = (moduleExportsArray, names, wrapper) => { + if (!moduleExportsArray) { + diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._wrap(moduleExports, name, wrapper); + }); + }); + }; + _massUnwrap = (moduleExportsArray, names) => { + if (!moduleExportsArray) { + diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._unwrap(moduleExports, name); + }); + }); + }; + _warnOnPreloadedModules() { + this._modules.forEach((module) => { + const { name } = module; + try { + const resolvedModule = require.resolve(name); + if (require.cache[resolvedModule]) { + // Module is already cached, which means the instrumentation hook might not work + this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`); + } + } + catch { + // Module isn't available, we can simply skip + } + }); + } + _extractPackageVersion(baseDir) { + try { + const json = readFileSync(path.join(baseDir, 'package.json'), { + encoding: 'utf8', + }); + const version = JSON.parse(json).version; + return typeof version === 'string' ? version : undefined; + } + catch { + diag.warn('Failed extracting version', baseDir); + } + return undefined; + } + _onRequire(module, exports, name, baseDir) { + if (!baseDir) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', { + module: module.name, + }); + return module.patch(exports); + } + } + return exports; + } + const version = this._extractPackageVersion(baseDir); + module.moduleVersion = version; + if (module.name === name) { + // main module + if (isSupported(module.supportedVersions, version, module.includePrerelease)) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for module on require hook', { + module: module.name, + version: module.moduleVersion, + baseDir, + }); + return module.patch(exports, module.moduleVersion); + } + } + } + return exports; + } + // internal file + const files = module.files ?? []; + const normalizedName = path.normalize(name); + const supportedFileInstrumentations = files.filter(f => f.name === normalizedName && + isSupported(f.supportedVersions, version, module.includePrerelease)); + return supportedFileInstrumentations.reduce((patchedExports, file) => { + file.moduleExports = patchedExports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + baseDir, + }); + // patch signature is not typed, so we cast it assuming it's correct + return file.patch(patchedExports, module.moduleVersion); + } + return patchedExports; + }, exports); + } + enable() { + if (this._enabled) { + return; + } + this._enabled = true; + // already hooked, just call patch again + if (this._hooks.length > 0) { + for (const module of this._modules) { + if (typeof module.patch === 'function' && module.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + }); + module.patch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.patch(file.moduleExports, module.moduleVersion); + } + } + } + return; + } + this._warnOnPreloadedModules(); + for (const module of this._modules) { + const hookFn = (exports, name, baseDir) => { + if (!baseDir && path.isAbsolute(name)) { + const parsedPath = path.parse(name); + name = parsedPath.name; + baseDir = parsedPath.dir; + } + return this._onRequire(module, exports, name, baseDir); + }; + const onRequire = (exports, name, baseDir) => { + return this._onRequire(module, exports, name, baseDir); + }; + // `RequireInTheMiddleSingleton` does not support absolute paths. + // For an absolute paths, we must create a separate instance of the + // require-in-the-middle `Hook`. + const hook = path.isAbsolute(module.name) + ? new HookRequire([module.name], { internals: true }, onRequire) + : this._requireInTheMiddleSingleton.register(module.name, onRequire); + this._hooks.push(hook); + const esmHook = new HookImport([module.name], { internals: false }, hookFn); + this._hooks.push(esmHook); + } + } + disable() { + if (!this._enabled) { + return; + } + this._enabled = false; + for (const module of this._modules) { + if (typeof module.unpatch === 'function' && module.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + }); + module.unpatch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.unpatch(file.moduleExports, module.moduleVersion); + } + } + } + } + isEnabled() { + return this._enabled; + } +} +function isSupported(supportedVersions, version, includePrerelease) { + if (typeof version === 'undefined') { + // If we don't have the version, accept the wildcard case only + return supportedVersions.includes('*'); + } + return supportedVersions.some(supportedVersion => { + return satisfies(version, supportedVersion, { includePrerelease }); + }); +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js.map new file mode 100644 index 0000000..cca706c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/node/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n RequireInTheMiddleSingleton,\n Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\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(\n `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\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = 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 } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\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(\n f =>\n f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\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(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: 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: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\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 HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: false },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.d.ts new file mode 100644 index 0000000..d8e833e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.d.ts @@ -0,0 +1,2 @@ +export { normalize } from 'path'; +//# sourceMappingURL=normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js new file mode 100644 index 0000000..f6280d5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { normalize } from 'path'; +//# sourceMappingURL=normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js.map new file mode 100644 index 0000000..919a813 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../src/platform/node/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { normalize } from 'path';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.d.ts new file mode 100644 index 0000000..7bfd831 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.d.ts @@ -0,0 +1,58 @@ +export declare enum SemconvStability { + /** Emit only stable semantic conventions. */ + STABLE = 1, + /** Emit only old semantic conventions. */ + OLD = 2, + /** Emit both stable and old semantic conventions. */ + DUPLICATE = 3 +} +type SemConvStabilityNamespace = 'http' | 'messaging' | 'database' | 'k8s' | (string & {}); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +export declare function semconvStabilityFromStr(namespace: SemConvStabilityNamespace, str: string | undefined): SemconvStability; +export {}; +//# sourceMappingURL=semconvStability.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js new file mode 100644 index 0000000..11ed6de --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js @@ -0,0 +1,90 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var SemconvStability; +(function (SemconvStability) { + /** Emit only stable semantic conventions. */ + SemconvStability[SemconvStability["STABLE"] = 1] = "STABLE"; + /** Emit only old semantic conventions. */ + SemconvStability[SemconvStability["OLD"] = 2] = "OLD"; + /** Emit both stable and old semantic conventions. */ + SemconvStability[SemconvStability["DUPLICATE"] = 3] = "DUPLICATE"; +})(SemconvStability || (SemconvStability = {})); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +export function semconvStabilityFromStr(namespace, str) { + let semconvStability = SemconvStability.OLD; + // The same parsing of `str` as `getStringListFromEnv` from the core pkg. + const entries = str + ?.split(',') + .map(v => v.trim()) + .filter(s => s !== ''); + for (const entry of entries ?? []) { + if (entry.toLowerCase() === namespace + '/dup') { + // DUPLICATE takes highest precedence. + semconvStability = SemconvStability.DUPLICATE; + break; + } + else if (entry.toLowerCase() === namespace) { + semconvStability = SemconvStability.STABLE; + } + } + return semconvStability; +} +//# sourceMappingURL=semconvStability.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js.map new file mode 100644 index 0000000..c724aea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconvStability.js","sourceRoot":"","sources":["../../src/semconvStability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,6CAA6C;IAC7C,2DAAY,CAAA;IACZ,0CAA0C;IAC1C,qDAAS,CAAA;IACT,qDAAqD;IACrD,iEAAqB,CAAA;AACvB,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAoC,EACpC,GAAuB;IAEvB,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC;IAE5C,yEAAyE;IACzE,MAAM,OAAO,GAAG,GAAG;QACjB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,EAAE,EAAE;QACjC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,GAAG,MAAM,EAAE;YAC9C,sCAAsC;YACtC,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC;YAC9C,MAAM;SACP;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;YAC5C,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC;SAC5C;KACF;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\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 */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\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 } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semver.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semver.d.ts new file mode 100644 index 0000000..30799dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semver.d.ts @@ -0,0 +1,16 @@ +/** Interface for the options to configure semantic versioning satisfy check. */ +export interface SatisfiesOptions { + /** + * If set to true, the pre-release checks will be included + * as described [here](https://github.com/npm/node-semver#prerelease-tags). + */ + includePrerelease?: boolean; +} +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +export declare function satisfies(version: string, range: string, options?: SatisfiesOptions): boolean; +//# sourceMappingURL=semver.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js new file mode 100644 index 0000000..3909548 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js @@ -0,0 +1,514 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// This is a custom semantic versioning implementation compatible with the +// `satisfies(version, range, options?)` function from the `semver` npm package; +// with the exception that the `loose` option is not supported. +// +// The motivation for the custom semver implementation is that +// `semver` package has some initialization delay (lots of RegExp init and compile) +// and this leads to coldstart overhead for the OTEL Lambda Node.js layer. +// Hence, we have implemented lightweight version of it internally with required functionalities. +import { diag } from '@opentelemetry/api'; +const 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-]+)*))?$/; +const 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-]+)*))?$/; +const operatorResMap = { + '>': [1], + '>=': [0, 1], + '=': [0], + '<=': [-1, 0], + '<': [-1], + '!=': [-1, 1], +}; +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +export function satisfies(version, range, options) { + // Strict semver format check + if (!_validateVersion(version)) { + diag.error(`Invalid version: ${version}`); + return false; + } + // If range is empty, satisfy check succeeds regardless what version is + if (!range) { + return true; + } + // Cleanup range + range = range.replace(/([<>=~^]+)\s+/g, '$1'); + // Parse version + const parsedVersion = _parseVersion(version); + if (!parsedVersion) { + return false; + } + const allParsedRanges = []; + // Check given version whether it satisfies given range expression + const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options); + // If check result is OK, + // do another final check for pre-release, if pre-release check is included by option + if (checkResult && !options?.includePrerelease) { + return _doPreleaseCheck(parsedVersion, allParsedRanges); + } + return checkResult; +} +function _validateVersion(version) { + return typeof version === 'string' && VERSION_REGEXP.test(version); +} +function _doSatisfies(parsedVersion, range, allParsedRanges, options) { + if (range.includes('||')) { + // A version matches a range if and only if + // every comparator in at least one of the ||-separated comparator sets is satisfied by the version + const ranges = range.trim().split('||'); + for (const r of ranges) { + if (_checkRange(parsedVersion, r, allParsedRanges, options)) { + return true; + } + } + return false; + } + else if (range.includes(' - ')) { + // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc + range = replaceHyphen(range, options); + } + else if (range.includes(' ')) { + // Multiple separated ranges and all needs to be satisfied for success + const ranges = range + .trim() + .replace(/\s{2,}/g, ' ') + .split(' '); + for (const r of ranges) { + if (!_checkRange(parsedVersion, r, allParsedRanges, options)) { + return false; + } + } + return true; + } + // Check given parsed version with given range + return _checkRange(parsedVersion, range, allParsedRanges, options); +} +function _checkRange(parsedVersion, range, allParsedRanges, options) { + range = _normalizeRange(range, options); + if (range.includes(' ')) { + // If there are multiple ranges separated, satisfy each of them + return _doSatisfies(parsedVersion, range, allParsedRanges, options); + } + else { + // Validate and parse range + const parsedRange = _parseRange(range); + allParsedRanges.push(parsedRange); + // Check parsed version by parsed range + return _satisfies(parsedVersion, parsedRange); + } +} +function _satisfies(parsedVersion, parsedRange) { + // If range is invalid, satisfy check fails (no error throw) + if (parsedRange.invalid) { + return false; + } + // If range is empty or wildcard, satisfy check succeeds regardless what version is + if (!parsedRange.version || _isWildcard(parsedRange.version)) { + return true; + } + // Compare version segment first + let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []); + // If versions segments are equal, compare by pre-release segments + if (comparisonResult === 0) { + const versionPrereleaseSegments = parsedVersion.prereleaseSegments || []; + const rangePrereleaseSegments = parsedRange.prereleaseSegments || []; + if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) { + comparisonResult = 0; + } + else if (!versionPrereleaseSegments.length && + rangePrereleaseSegments.length) { + comparisonResult = 1; + } + else if (versionPrereleaseSegments.length && + !rangePrereleaseSegments.length) { + comparisonResult = -1; + } + else { + comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments); + } + } + // Resolve check result according to comparison operator + return operatorResMap[parsedRange.op]?.includes(comparisonResult); +} +function _doPreleaseCheck(parsedVersion, allParsedRanges) { + if (parsedVersion.prerelease) { + return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version); + } + return true; +} +function _normalizeRange(range, options) { + range = range.trim(); + range = replaceCaret(range, options); + range = replaceTilde(range); + range = replaceXRange(range, options); + range = range.trim(); + return range; +} +function isX(id) { + return !id || id.toLowerCase() === 'x' || id === '*'; +} +function _parseVersion(versionString) { + const match = versionString.match(VERSION_REGEXP); + if (!match) { + diag.error(`Invalid version: ${versionString}`); + return undefined; + } + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + return { + op: undefined, + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _parseRange(rangeString) { + if (!rangeString) { + return {}; + } + const match = rangeString.match(RANGE_REGEXP); + if (!match) { + diag.error(`Invalid range: ${rangeString}`); + return { + invalid: true, + }; + } + let op = match.groups.op; + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + if (op === '==') { + op = '='; + } + return { + op: op || '=', + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _isWildcard(s) { + return s === '*' || s === 'x' || s === 'X'; +} +function _parseVersionString(v) { + const n = parseInt(v, 10); + return isNaN(n) ? v : n; +} +function _normalizeVersionType(a, b) { + if (typeof a === typeof b) { + if (typeof a === 'number') { + return [a, b]; + } + else if (typeof a === 'string') { + return [a, b]; + } + else { + throw new Error('Version segments can only be strings or numbers'); + } + } + else { + return [String(a), String(b)]; + } +} +function _compareVersionStrings(v1, v2) { + if (_isWildcard(v1) || _isWildcard(v2)) { + return 0; + } + const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2)); + if (parsedV1 > parsedV2) { + return 1; + } + else if (parsedV1 < parsedV2) { + return -1; + } + return 0; +} +function _compareVersionSegments(v1, v2) { + for (let i = 0; i < Math.max(v1.length, v2.length); i++) { + const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0'); + if (res !== 0) { + return res; + } + } + return 0; +} +//////////////////////////////////////////////////////////////////////////////// +// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb +// License: +/* + * The ISC License + * + * Copyright (c) Isaac Z. Schlueter and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +const LETTERDASHNUMBER = '[a-zA-Z0-9-]'; +const NUMERICIDENTIFIER = '0|[1-9]\\d*'; +const NONNUMERICIDENTIFIER = `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`; +const GTLT = '((?:<|>)?=?)'; +const PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`; +const PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\.${PRERELEASEIDENTIFIER})*))`; +const BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`; +const BUILD = `(?:\\+(${BUILDIDENTIFIER}(?:\\.${BUILDIDENTIFIER})*))`; +const XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\*`; +const XRANGEPLAIN = `[v=\\s]*(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:${PRERELEASE})?${BUILD}?` + + `)?)?`; +const XRANGE = `^${GTLT}\\s*${XRANGEPLAIN}$`; +const XRANGE_REGEXP = new RegExp(XRANGE); +const HYPHENRANGE = `^\\s*(${XRANGEPLAIN})` + `\\s+-\\s+` + `(${XRANGEPLAIN})` + `\\s*$`; +const HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE); +const LONETILDE = '(?:~>?)'; +const TILDE = `^${LONETILDE}${XRANGEPLAIN}$`; +const TILDE_REGEXP = new RegExp(TILDE); +const LONECARET = '(?:\\^)'; +const CARET = `^${LONECARET}${XRANGEPLAIN}$`; +const CARET_REGEXP = new RegExp(CARET); +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285 +// +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +// ~0.0.1 --> >=0.0.1 <0.1.0-0 +function replaceTilde(comp) { + const r = TILDE_REGEXP; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } + else if (pr) { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329 +// +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +// ^0.0.1 --> >=0.0.1 <0.0.2-0 +// ^0.1.0 --> >=0.1.0 <0.2.0-0 +function replaceCaret(comp, options) { + const r = CARET_REGEXP; + const z = options?.includePrerelease ? '-0' : ''; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } + else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } + else if (pr) { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } + } + else { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390 +function replaceXRange(comp, options) { + const r = XRANGE_REGEXP; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === '=' && anyX) { + gtlt = ''; + } + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options?.includePrerelease ? '-0' : ''; + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0'; + } + else { + // nothing is forbidden + ret = '*'; + } + } + else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0; + } + p = 0; + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>='; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } + else { + m = +m + 1; + p = 0; + } + } + else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<'; + if (xm) { + M = +M + 1; + } + else { + m = +m + 1; + } + } + if (gtlt === '<') { + pr = '-0'; + } + ret = `${gtlt + M}.${m}.${p}${pr}`; + } + else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } + else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488 +// +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +function replaceHyphen(comp, options) { + const r = HYPHENRANGE_REGEXP; + return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ''; + } + else if (isX(fm)) { + from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (isX(fp)) { + from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (fpr) { + from = `>=${from}`; + } + else { + from = `>=${from}${options?.includePrerelease ? '-0' : ''}`; + } + if (isX(tM)) { + to = ''; + } + else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } + else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } + else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } + else if (options?.includePrerelease) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } + else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }); +} +//# sourceMappingURL=semver.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js.map new file mode 100644 index 0000000..4786071 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/semver.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// 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.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?: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 =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\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-]+)*))?$/;\n\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\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 */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\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}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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: string[] = 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 } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = 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\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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 } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\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\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\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}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\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 */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\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: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\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 } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\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\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: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\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 } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\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\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\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\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\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\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 } else {\n m = +m + 1;\n p = 0;\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 } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\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: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.d.ts new file mode 100644 index 0000000..0b00757 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.d.ts @@ -0,0 +1,17 @@ +import { ShimWrapped } from './types'; +export declare const wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; +export declare const massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; +export declare const unwrap: (nodule: Nodule, name: keyof Nodule) => void; +export declare const massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +export interface ShimmerOptions { + logger?: typeof console.error; +} +declare function shimmer(options: ShimmerOptions): void; +declare namespace shimmer { + var wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; + var massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + var unwrap: (nodule: Nodule, name: keyof Nodule) => void; + var massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +} +export default shimmer; +//# sourceMappingURL=shimmer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js new file mode 100644 index 0000000..d996aa4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js @@ -0,0 +1,126 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Default to complaining loudly when things don't go according to plan. +// eslint-disable-next-line no-console +let logger = console.error.bind(console); +// Sets a property on an object, preserving its enumerability. +// This function assumes that the property is already writable. +function defineProperty(obj, name, value) { + const enumerable = !!obj[name] && + Object.prototype.propertyIsEnumerable.call(obj, name); + Object.defineProperty(obj, name, { + configurable: true, + enumerable, + writable: true, + value, + }); +} +export const wrap = (nodule, name, wrapper) => { + if (!nodule || !nodule[name]) { + logger('no original function ' + String(name) + ' to wrap'); + return; + } + if (!wrapper) { + logger('no wrapper function'); + logger(new Error().stack); + return; + } + const original = nodule[name]; + if (typeof original !== 'function' || typeof wrapper !== 'function') { + logger('original object and wrapper must be functions'); + return; + } + const wrapped = wrapper(original, name); + defineProperty(wrapped, '__original', original); + defineProperty(wrapped, '__unwrap', () => { + if (nodule[name] === wrapped) { + defineProperty(nodule, name, original); + } + }); + defineProperty(wrapped, '__wrapped', true); + defineProperty(nodule, name, wrapped); + return wrapped; +}; +export const massWrap = (nodules, names, wrapper) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to wrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + wrap(nodule, name, wrapper); + }); + }); +}; +export const unwrap = (nodule, name) => { + if (!nodule || !nodule[name]) { + logger('no function to unwrap.'); + logger(new Error().stack); + return; + } + const wrapped = nodule[name]; + if (!wrapped.__unwrap) { + logger('no original to unwrap to -- has ' + + String(name) + + ' already been unwrapped?'); + } + else { + wrapped.__unwrap(); + return; + } +}; +export const massUnwrap = (nodules, names) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to unwrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + unwrap(nodule, name); + }); + }); +}; +export default function shimmer(options) { + if (options && options.logger) { + if (typeof options.logger !== 'function') { + logger("new logger isn't a function, not replacing"); + } + else { + logger = options.logger; + } + } +} +shimmer.wrap = wrap; +shimmer.massWrap = massWrap; +shimmer.unwrap = unwrap; +shimmer.massUnwrap = massUnwrap; +//# sourceMappingURL=shimmer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js.map new file mode 100644 index 0000000..ffee843 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shimmer.js","sourceRoot":"","sources":["../../src/shimmer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAqCH,wEAAwE;AACxE,sCAAsC;AACtC,IAAI,MAAM,GAAyB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE/D,8DAA8D;AAC9D,+DAA+D;AAC/D,SAAS,cAAc,CAAC,GAAW,EAAE,IAAiB,EAAE,KAAc;IACpE,MAAM,UAAU,GACd,CAAC,CAAC,GAAG,CAAC,IAAwB,CAAC;QAC/B,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAExD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;QAC/B,YAAY,EAAE,IAAI;QAClB,UAAU;QACV,QAAQ,EAAE,IAAI;QACd,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,MAAc,EACd,IAAe,EACf,OAA4E,EACnD,EAAE;IAC3B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC5B,MAAM,CAAC,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QAC5D,OAAO;KACR;IAED,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE9B,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;QACnE,MAAM,CAAC,+CAA+C,CAAC,CAAC;QACxD,OAAO;KACR;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAW,CAAC;IAElD,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAChD,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE;QACvC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE;YAC5B,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SACxC;IACH,CAAC,CAAC,CAAC;IACH,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC3C,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,OAAsB,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,OAAiB,EACjB,KAAkB,EAClB,OAA2D,EACrD,EAAE;IACR,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,CAAC,2CAA2C,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO;KACR;SAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAClC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QACpC,MAAM,CAAC,uDAAuD,CAAC,CAAC;QAChE,OAAO;KACR;IAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACvB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,MAAc,EACd,IAAkB,EACZ,EAAE;IACR,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC5B,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO;KACR;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAA2B,CAAC;IAEvD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;QACrB,MAAM,CACJ,kCAAkC;YAChC,MAAM,CAAC,IAAI,CAAC;YACZ,0BAA0B,CAC7B,CAAC;KACH;SAAM;QACL,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO;KACR;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,OAAiB,EACjB,KAA0B,EACpB,EAAE;IACR,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,CAAC,2CAA2C,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO;KACR;SAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAClC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QACpC,MAAM,CAAC,yDAAyD,CAAC,CAAC;QAClE,OAAO;KACR;IAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACvB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAMF,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAuB;IACrD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;QAC7B,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;YACxC,MAAM,CAAC,4CAA4C,CAAC,CAAC;SACtD;aAAM;YACL,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;SACzB;KACF;AACH,CAAC;AAED,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AACxB,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\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 as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types.d.ts new file mode 100644 index 0000000..5cf7d03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types.d.ts @@ -0,0 +1,116 @@ +import { TracerProvider, MeterProvider, Span } from '@opentelemetry/api'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** Interface Instrumentation to apply patch. */ +export interface Instrumentation { + /** Instrumentation Name */ + instrumentationName: string; + /** Instrumentation Version */ + instrumentationVersion: string; + /** Method to disable the instrumentation */ + disable(): void; + /** Method to enable the instrumentation */ + enable(): void; + /** Method to set tracer provider */ + setTracerProvider(tracerProvider: TracerProvider): void; + /** Method to set meter provider */ + setMeterProvider(meterProvider: MeterProvider): void; + /** Method to set logger provider */ + setLoggerProvider?(loggerProvider: LoggerProvider): void; + /** Method to set instrumentation config */ + setConfig(config: ConfigType): void; + /** Method to get instrumentation config */ + getConfig(): ConfigType; +} +/** + * Base interface for configuration options common to all instrumentations. + * This interface can be extended by individual instrumentations to include + * additional configuration options specific to that instrumentation. + * All configuration options must be optional. + */ +export interface InstrumentationConfig { + /** + * Whether to enable the plugin. + * @default true + */ + enabled?: boolean; +} +/** + * This interface defines the params that are be added to the wrapped function + * using the "shimmer.wrap" + */ +export interface ShimWrapped extends Function { + __wrapped: boolean; + __unwrap: Function; + __original: Function; +} +export interface InstrumentationModuleFile { + /** Name of file to be patched with relative path */ + name: string; + moduleExports?: unknown; + /** Supported versions for the file. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with a function compatible + * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1). + * If the version is not supported, we won't apply instrumentation patch. + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Method to patch the instrumentation */ + patch(moduleExports: unknown, moduleVersion?: string): unknown; + /** Method to unpatch the instrumentation */ + unpatch(moduleExports?: unknown, moduleVersion?: string): void; +} +export interface InstrumentationModuleDefinition { + /** Module name or path */ + name: string; + moduleExports?: any; + /** Instrumented module version */ + moduleVersion?: string; + /** Supported version of module. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with the `satisfies` function of + * "The [semantic versioner](https://semver.org) for npm". + * If the version is not supported, we won't apply instrumentation patch (see `enable` method). + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Module internal files to be patched */ + files: InstrumentationModuleFile[]; + /** If set to true, the includePrerelease check will be included when calling semver.satisfies */ + includePrerelease?: boolean; + /** Method to patch the instrumentation */ + patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any + ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined; + /** Method to unpatch the instrumentation */ + unpatch?: ((moduleExports: any, moduleVersion?: string | undefined) => void) | undefined; +} +/** + * SpanCustomizationHook is a common way for instrumentations to expose extension points + * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle. + * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span, + * capture payloads, modify the span in some way, or carry some other side effect. + * + * The hook is registered with the instrumentation specific config by implementing an handler function with this signature, + * and if the hook is present, it will be called with the span and the event information + * when the event is emitted. + * + * When and under what conditions the hook is called and what data is passed + * in the info argument, is specific to each instrumentation and life-cycle event + * and should be documented where it is used. + * + * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events. + */ +export type SpanCustomizationHook = (span: Span, info: SpanCustomizationInfoType) => void; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types.js.map new file mode 100644 index 0000000..a2c15fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider, Span } from '@opentelemetry/api';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/** Interface Instrumentation to apply patch. */\nexport interface Instrumentation<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> {\n /** Instrumentation Name */\n instrumentationName: string;\n\n /** Instrumentation Version */\n instrumentationVersion: string;\n\n /** Method to disable the instrumentation */\n disable(): void;\n\n /** Method to enable the instrumentation */\n enable(): void;\n\n /** Method to set tracer provider */\n setTracerProvider(tracerProvider: TracerProvider): void;\n\n /** Method to set meter provider */\n setMeterProvider(meterProvider: MeterProvider): void;\n\n /** Method to set logger provider */\n setLoggerProvider?(loggerProvider: LoggerProvider): void;\n\n /** Method to set instrumentation config */\n setConfig(config: ConfigType): void;\n\n /** Method to get instrumentation config */\n getConfig(): ConfigType;\n}\n\n/**\n * Base interface for configuration options common to all instrumentations.\n * This interface can be extended by individual instrumentations to include\n * additional configuration options specific to that instrumentation.\n * All configuration options must be optional.\n */\nexport interface InstrumentationConfig {\n /**\n * Whether to enable the plugin.\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * This interface defines the params that are be added to the wrapped function\n * using the \"shimmer.wrap\"\n */\nexport interface ShimWrapped extends Function {\n __wrapped: boolean;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __unwrap: Function;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __original: Function;\n}\n\nexport interface InstrumentationModuleFile {\n /** Name of file to be patched with relative path */\n name: string;\n\n moduleExports?: unknown;\n\n /** Supported versions for the file.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with a function compatible\n * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1).\n * If the version is not supported, we won't apply instrumentation patch.\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Method to patch the instrumentation */\n patch(moduleExports: unknown, moduleVersion?: string): unknown;\n\n /** Method to unpatch the instrumentation */\n unpatch(moduleExports?: unknown, moduleVersion?: string): void;\n}\n\nexport interface InstrumentationModuleDefinition {\n /** Module name or path */\n name: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports?: any;\n\n /** Instrumented module version */\n moduleVersion?: string;\n\n /** Supported version of module.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with the `satisfies` function of\n * \"The [semantic versioner](https://semver.org) for npm\".\n * If the version is not supported, we won't apply instrumentation patch (see `enable` method).\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Module internal files to be patched */\n files: InstrumentationModuleFile[];\n\n /** If set to true, the includePrerelease check will be included when calling semver.satisfies */\n includePrerelease?: boolean;\n\n /** Method to patch the instrumentation */\n patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined;\n\n /** Method to unpatch the instrumentation */\n unpatch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | ((moduleExports: any, moduleVersion?: string | undefined) => void)\n | undefined;\n}\n\n/**\n * SpanCustomizationHook is a common way for instrumentations to expose extension points\n * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle.\n * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span,\n * capture payloads, modify the span in some way, or carry some other side effect.\n *\n * The hook is registered with the instrumentation specific config by implementing an handler function with this signature,\n * and if the hook is present, it will be called with the span and the event information\n * when the event is emitted.\n *\n * When and under what conditions the hook is called and what data is passed\n * in the info argument, is specific to each instrumentation and life-cycle event\n * and should be documented where it is used.\n *\n * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events.\n */\nexport type SpanCustomizationHook = (\n span: Span,\n info: SpanCustomizationInfoType\n) => void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.d.ts new file mode 100644 index 0000000..d9dc97d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.d.ts @@ -0,0 +1,13 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +export interface AutoLoaderResult { + instrumentations: Instrumentation[]; +} +export interface AutoLoaderOptions { + instrumentations?: (Instrumentation | Instrumentation[])[]; + tracerProvider?: TracerProvider; + meterProvider?: MeterProvider; + loggerProvider?: LoggerProvider; +} +//# sourceMappingURL=types_internal.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js new file mode 100644 index 0000000..876cf31 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types_internal.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js.map new file mode 100644 index 0000000..05a29dd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types_internal.js","sourceRoot":"","sources":["../../src/types_internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\nexport interface AutoLoaderResult {\n instrumentations: Instrumentation[];\n}\n\nexport interface AutoLoaderOptions {\n instrumentations?: (Instrumentation | Instrumentation[])[];\n tracerProvider?: TracerProvider;\n meterProvider?: MeterProvider;\n loggerProvider?: LoggerProvider;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/utils.d.ts new file mode 100644 index 0000000..e550087 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/utils.d.ts @@ -0,0 +1,19 @@ +import { ShimWrapped } from './types'; +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddle(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => void, preventThrowingError?: boolean): T; +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddleAsync(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => Promise | void, preventThrowingError?: boolean): Promise; +/** + * Checks if certain function has been already wrapped + * @param func + */ +export declare function isWrapped(func: unknown): func is ShimWrapped; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js new file mode 100644 index 0000000..67eea86 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js @@ -0,0 +1,74 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export function safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = execute(); + } + catch (e) { + error = e; + } + finally { + onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export async function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = await execute(); + } + catch (e) { + error = e; + } + finally { + await onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +/** + * Checks if certain function has been already wrapped + * @param func + */ +export function isWrapped(func) { + return (typeof func === 'function' && + typeof func.__original === 'function' && + typeof func.__unwrap === 'function' && + func.__wrapped === true); +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js.map new file mode 100644 index 0000000..c8f537c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,QAA+D,EAC/D,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,OAAO,EAAE,CAAC;KACpB;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAAgB,EAChB,QAGyB,EACzB,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;KAC1B;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AACD;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO,CACL,OAAO,IAAI,KAAK,UAAU;QAC1B,OAAQ,IAAoB,CAAC,UAAU,KAAK,UAAU;QACtD,OAAQ,IAAoB,CAAC,QAAQ,KAAK,UAAU;QACnD,IAAoB,CAAC,SAAS,KAAK,IAAI,CACzC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ShimWrapped } from './types';\n\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 */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n\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 */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (\n e: Error | undefined,\n result: T | undefined\n ) => Promise | void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/version.d.ts new file mode 100644 index 0000000..f619f6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.211.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/version.js new file mode 100644 index 0000000..d676626 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '0.211.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/version.js.map new file mode 100644 index 0000000..4072381 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/esnext/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.211.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.d.ts new file mode 100644 index 0000000..961729a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.d.ts @@ -0,0 +1,9 @@ +import { AutoLoaderOptions } from './types_internal'; +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +export declare function registerInstrumentations(options: AutoLoaderOptions): () => void; +//# sourceMappingURL=autoLoader.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js new file mode 100644 index 0000000..6fbd5cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js @@ -0,0 +1,39 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.registerInstrumentations = void 0; +const api_1 = require("@opentelemetry/api"); +const api_logs_1 = require("@opentelemetry/api-logs"); +const autoLoaderUtils_1 = require("./autoLoaderUtils"); +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +function registerInstrumentations(options) { + const tracerProvider = options.tracerProvider || api_1.trace.getTracerProvider(); + const meterProvider = options.meterProvider || api_1.metrics.getMeterProvider(); + const loggerProvider = options.loggerProvider || api_logs_1.logs.getLoggerProvider(); + const instrumentations = options.instrumentations?.flat() ?? []; + (0, autoLoaderUtils_1.enableInstrumentations)(instrumentations, tracerProvider, meterProvider, loggerProvider); + return () => { + (0, autoLoaderUtils_1.disableInstrumentations)(instrumentations); + }; +} +exports.registerInstrumentations = registerInstrumentations; +//# sourceMappingURL=autoLoader.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js.map new file mode 100644 index 0000000..0e1b92e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoader.js","sourceRoot":"","sources":["../../src/autoLoader.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAoD;AACpD,sDAA+C;AAC/C,uDAG2B;AAG3B;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,OAA0B;IAE1B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,WAAK,CAAC,iBAAiB,EAAE,CAAC;IAC3E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,aAAO,CAAC,gBAAgB,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,eAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1E,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEhE,IAAA,wCAAsB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,CACf,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,IAAA,yCAAuB,EAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC;AAlBD,4DAkBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\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 */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.d.ts new file mode 100644 index 0000000..c460564 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.d.ts @@ -0,0 +1,16 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +export declare function enableInstrumentations(instrumentations: Instrumentation[], tracerProvider?: TracerProvider, meterProvider?: MeterProvider, loggerProvider?: LoggerProvider): void; +/** + * Disable instrumentations + * @param instrumentations + */ +export declare function disableInstrumentations(instrumentations: Instrumentation[]): void; +//# sourceMappingURL=autoLoaderUtils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js new file mode 100644 index 0000000..5793f70 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js @@ -0,0 +1,55 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.disableInstrumentations = exports.enableInstrumentations = void 0; +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +function enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) { + for (let i = 0, j = instrumentations.length; i < j; i++) { + const instrumentation = instrumentations[i]; + if (tracerProvider) { + instrumentation.setTracerProvider(tracerProvider); + } + if (meterProvider) { + instrumentation.setMeterProvider(meterProvider); + } + if (loggerProvider && instrumentation.setLoggerProvider) { + instrumentation.setLoggerProvider(loggerProvider); + } + // instrumentations have been already enabled during creation + // so enable only if user prevented that by setting enabled to false + // this is to prevent double enabling but when calling register all + // instrumentations should be now enabled + if (!instrumentation.getConfig().enabled) { + instrumentation.enable(); + } + } +} +exports.enableInstrumentations = enableInstrumentations; +/** + * Disable instrumentations + * @param instrumentations + */ +function disableInstrumentations(instrumentations) { + instrumentations.forEach(instrumentation => instrumentation.disable()); +} +exports.disableInstrumentations = disableInstrumentations; +//# sourceMappingURL=autoLoaderUtils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js.map new file mode 100644 index 0000000..d4047c7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoaderUtils.js","sourceRoot":"","sources":["../../src/autoLoaderUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAMH;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,gBAAmC,EACnC,cAA+B,EAC/B,aAA6B,EAC7B,cAA+B;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,cAAc,EAAE;YAClB,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,IAAI,aAAa,EAAE;YACjB,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACjD;QACD,IAAI,cAAc,IAAI,eAAe,CAAC,iBAAiB,EAAE;YACvD,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,6DAA6D;QAC7D,oEAAoE;QACpE,mEAAmE;QACnE,yCAAyC;QACzC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE;YACxC,eAAe,CAAC,MAAM,EAAE,CAAC;SAC1B;KACF;AACH,CAAC;AAzBD,wDAyBC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CACrC,gBAAmC;IAEnC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC;AAJD,0DAIC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\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}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/index.d.ts new file mode 100644 index 0000000..b2b5dbc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/index.d.ts @@ -0,0 +1,9 @@ +export { registerInstrumentations } from './autoLoader'; +export { InstrumentationBase } from './platform/index'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export type { Instrumentation, InstrumentationConfig, InstrumentationModuleDefinition, InstrumentationModuleFile, ShimWrapped, SpanCustomizationHook, } from './types'; +export type { AutoLoaderOptions, AutoLoaderResult } from './types_internal'; +export { isWrapped, safeExecuteInTheMiddle, safeExecuteInTheMiddleAsync, } from './utils'; +export { SemconvStability, semconvStabilityFromStr } from './semconvStability'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/index.js new file mode 100644 index 0000000..6e63644 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/index.js @@ -0,0 +1,34 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.semconvStabilityFromStr = exports.SemconvStability = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = exports.isWrapped = exports.InstrumentationNodeModuleFile = exports.InstrumentationNodeModuleDefinition = exports.InstrumentationBase = exports.registerInstrumentations = void 0; +var autoLoader_1 = require("./autoLoader"); +Object.defineProperty(exports, "registerInstrumentations", { enumerable: true, get: function () { return autoLoader_1.registerInstrumentations; } }); +var index_1 = require("./platform/index"); +Object.defineProperty(exports, "InstrumentationBase", { enumerable: true, get: function () { return index_1.InstrumentationBase; } }); +var instrumentationNodeModuleDefinition_1 = require("./instrumentationNodeModuleDefinition"); +Object.defineProperty(exports, "InstrumentationNodeModuleDefinition", { enumerable: true, get: function () { return instrumentationNodeModuleDefinition_1.InstrumentationNodeModuleDefinition; } }); +var instrumentationNodeModuleFile_1 = require("./instrumentationNodeModuleFile"); +Object.defineProperty(exports, "InstrumentationNodeModuleFile", { enumerable: true, get: function () { return instrumentationNodeModuleFile_1.InstrumentationNodeModuleFile; } }); +var utils_1 = require("./utils"); +Object.defineProperty(exports, "isWrapped", { enumerable: true, get: function () { return utils_1.isWrapped; } }); +Object.defineProperty(exports, "safeExecuteInTheMiddle", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddle; } }); +Object.defineProperty(exports, "safeExecuteInTheMiddleAsync", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddleAsync; } }); +var semconvStability_1 = require("./semconvStability"); +Object.defineProperty(exports, "SemconvStability", { enumerable: true, get: function () { return semconvStability_1.SemconvStability; } }); +Object.defineProperty(exports, "semconvStabilityFromStr", { enumerable: true, get: function () { return semconvStability_1.semconvStabilityFromStr; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/index.js.map new file mode 100644 index 0000000..884cab9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2CAAwD;AAA/C,sHAAA,wBAAwB,OAAA;AACjC,0CAAuD;AAA9C,4GAAA,mBAAmB,OAAA;AAC5B,6FAA4F;AAAnF,0JAAA,mCAAmC,OAAA;AAC5C,iFAAgF;AAAvE,8IAAA,6BAA6B,OAAA;AAUtC,iCAIiB;AAHf,kGAAA,SAAS,OAAA;AACT,+GAAA,sBAAsB,OAAA;AACtB,oHAAA,2BAA2B,OAAA;AAE7B,uDAA+E;AAAtE,oHAAA,gBAAgB,OAAA;AAAE,2HAAA,uBAAuB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.d.ts new file mode 100644 index 0000000..9dc30d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.d.ts @@ -0,0 +1,74 @@ +import { DiagLogger, Meter, MeterProvider, Tracer, TracerProvider, Span } from '@opentelemetry/api'; +import { Logger, LoggerProvider } from '@opentelemetry/api-logs'; +import { InstrumentationModuleDefinition, Instrumentation, InstrumentationConfig, SpanCustomizationHook } from './types'; +/** + * Base abstract internal class for instrumenting node and web plugins + */ +export declare abstract class InstrumentationAbstract implements Instrumentation { + protected _config: ConfigType; + private _tracer; + private _meter; + private _logger; + protected _diag: DiagLogger; + readonly instrumentationName: string; + readonly instrumentationVersion: string; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => import("./types").ShimWrapped | undefined; + protected _unwrap: (nodule: Nodule, name: keyof Nodule) => void; + protected _massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + protected _massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; + protected get meter(): Meter; + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider: MeterProvider): void; + protected get logger(): Logger; + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider: LoggerProvider): void; + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions(): InstrumentationModuleDefinition[]; + /** + * Sets the new metric instruments with the current Meter. + */ + protected _updateMetricInstruments(): void; + getConfig(): ConfigType; + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config: ConfigType): void; + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider: TracerProvider): void; + protected get tracer(): Tracer; + abstract enable(): void; + abstract disable(): void; + /** + * Init method in which plugin should define _modules and patches for + * methods. + */ + protected abstract init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] | void; + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + protected _runSpanCustomizationHook(hookHandler: SpanCustomizationHook | undefined, triggerName: string, span: Span, info: SpanCustomizationInfoType): void; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js new file mode 100644 index 0000000..42973bb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js @@ -0,0 +1,145 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InstrumentationAbstract = void 0; +const api_1 = require("@opentelemetry/api"); +const api_logs_1 = require("@opentelemetry/api-logs"); +const shimmer = require("./shimmer"); +/** + * Base abstract internal class for instrumenting node and web plugins + */ +class InstrumentationAbstract { + _config = {}; + _tracer; + _meter; + _logger; + _diag; + instrumentationName; + instrumentationVersion; + constructor(instrumentationName, instrumentationVersion, config) { + this.instrumentationName = instrumentationName; + this.instrumentationVersion = instrumentationVersion; + this.setConfig(config); + this._diag = api_1.diag.createComponentLogger({ + namespace: instrumentationName, + }); + this._tracer = api_1.trace.getTracer(instrumentationName, instrumentationVersion); + this._meter = api_1.metrics.getMeter(instrumentationName, instrumentationVersion); + this._logger = api_logs_1.logs.getLogger(instrumentationName, instrumentationVersion); + this._updateMetricInstruments(); + } + /* Api to wrap instrumented method */ + _wrap = shimmer.wrap; + /* Api to unwrap instrumented methods */ + _unwrap = shimmer.unwrap; + /* Api to mass wrap instrumented method */ + _massWrap = shimmer.massWrap; + /* Api to mass unwrap instrumented methods */ + _massUnwrap = shimmer.massUnwrap; + /* Returns meter */ + get meter() { + return this._meter; + } + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider) { + this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion); + this._updateMetricInstruments(); + } + /* Returns logger */ + get logger() { + return this._logger; + } + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider) { + this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion); + } + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions() { + const initResult = this.init() ?? []; + if (!Array.isArray(initResult)) { + return [initResult]; + } + return initResult; + } + /** + * Sets the new metric instruments with the current Meter. + */ + _updateMetricInstruments() { + return; + } + /* Returns InstrumentationConfig */ + getConfig() { + return this._config; + } + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config) { + // copy config first level properties to ensure they are immutable. + // nested properties are not copied, thus are mutable from the outside. + this._config = { + enabled: true, + ...config, + }; + } + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider) { + this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion); + } + /* Returns tracer */ + get tracer() { + return this._tracer; + } + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + _runSpanCustomizationHook(hookHandler, triggerName, span, info) { + if (!hookHandler) { + return; + } + try { + hookHandler(span, info); + } + catch (e) { + this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e); + } + } +} +exports.InstrumentationAbstract = InstrumentationAbstract; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js.map new file mode 100644 index 0000000..7c50f84 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n diag,\n DiagLogger,\n metrics,\n Meter,\n MeterProvider,\n trace,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n public readonly instrumentationName: string;\n public readonly instrumentationVersion: string;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\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 public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\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 /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\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 protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.d.ts new file mode 100644 index 0000000..d9b12fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationModuleDefinition, InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleDefinition implements InstrumentationModuleDefinition { + files: InstrumentationModuleFile[]; + name: string; + supportedVersions: string[]; + patch: ((exports: any, moduleVersion?: string) => any) | undefined; + unpatch: ((exports: any, moduleVersion?: string) => void) | undefined; + constructor(name: string, supportedVersions: string[], patch?: (exports: any, moduleVersion?: string) => any, unpatch?: (exports: any, moduleVersion?: string) => void, files?: InstrumentationModuleFile[]); +} +//# sourceMappingURL=instrumentationNodeModuleDefinition.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js new file mode 100644 index 0000000..c23fc3e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js @@ -0,0 +1,38 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InstrumentationNodeModuleDefinition = void 0; +class InstrumentationNodeModuleDefinition { + files; + name; + supportedVersions; + patch; + unpatch; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch, files) { + this.files = files || []; + this.name = name; + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + } +} +exports.InstrumentationNodeModuleDefinition = InstrumentationNodeModuleDefinition; +//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js.map new file mode 100644 index 0000000..166dc45 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleDefinition.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleDefinition.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAOH,MAAa,mCAAmC;IAG9C,KAAK,CAA8B;IAC5B,IAAI,CAAS;IACb,iBAAiB,CAAW;IAC5B,KAAK,CAAC;IACN,OAAO,CAAC;IACf,YACE,IAAY,EACZ,iBAA2B;IAC3B,8DAA8D;IAC9D,KAAqD;IACrD,8DAA8D;IAC9D,OAAwD,EACxD,KAAmC;QAEnC,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAvBD,kFAuBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.d.ts new file mode 100644 index 0000000..3c22ecb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.d.ts @@ -0,0 +1,9 @@ +import { InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleFile implements InstrumentationModuleFile { + name: string; + supportedVersions: string[]; + patch: (moduleExports: any, moduleVersion?: string) => any; + unpatch: (moduleExports?: any, moduleVersion?: string) => void; + constructor(name: string, supportedVersions: string[], patch: (moduleExports: any, moduleVersion?: string) => any, unpatch: (moduleExports?: any, moduleVersion?: string) => void); +} +//# sourceMappingURL=instrumentationNodeModuleFile.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js new file mode 100644 index 0000000..d679957 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js @@ -0,0 +1,37 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InstrumentationNodeModuleFile = void 0; +const index_1 = require("./platform/index"); +class InstrumentationNodeModuleFile { + name; + supportedVersions; + patch; + unpatch; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch) { + this.name = (0, index_1.normalize)(name); + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + } +} +exports.InstrumentationNodeModuleFile = InstrumentationNodeModuleFile; +//# sourceMappingURL=instrumentationNodeModuleFile.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js.map new file mode 100644 index 0000000..4b38cbb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleFile.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleFile.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,4CAA6C;AAE7C,MAAa,6BAA6B;IAGjC,IAAI,CAAS;IACb,iBAAiB,CAAW;IAC5B,KAAK,CAAC;IACN,OAAO,CAAC;IAEf,YACE,IAAY,EACZ,iBAA2B;IAC3B,8DAA8D;IAC9D,KAA0D;IAC1D,8DAA8D;IAC9D,OAA8D;QAE9D,IAAI,CAAC,IAAI,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AArBD,sEAqBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.d.ts new file mode 100644 index 0000000..37aafc8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './noop-normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js new file mode 100644 index 0000000..dbca909 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js @@ -0,0 +1,23 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalize = exports.InstrumentationBase = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "InstrumentationBase", { enumerable: true, get: function () { return instrumentation_1.InstrumentationBase; } }); +var noop_normalize_1 = require("./noop-normalize"); +Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return noop_normalize_1.normalize; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js.map new file mode 100644 index 0000000..4539dfc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAwD;AAA/C,sHAAA,mBAAmB,OAAA;AAC5B,mDAA6C;AAApC,2GAAA,SAAS,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './noop-normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.d.ts new file mode 100644 index 0000000..be36994 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationAbstract } from '../../instrumentation'; +import * as types from '../../types'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting web plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js new file mode 100644 index 0000000..6acbc52 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js @@ -0,0 +1,32 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InstrumentationBase = void 0; +const instrumentation_1 = require("../../instrumentation"); +/** + * Base abstract class for instrumenting web plugins + */ +class InstrumentationBase extends instrumentation_1.InstrumentationAbstract { + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + if (this._config.enabled) { + this.enable(); + } + } +} +exports.InstrumentationBase = InstrumentationBase; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js.map new file mode 100644 index 0000000..c2fa49a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/browser/instrumentation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2DAAgE;AAIhE;;GAEG;AACH,MAAsB,mBAGpB,SAAQ,yCAAmC;IAG3C,YACE,mBAA2B,EAC3B,sBAA8B,EAC9B,MAAkB;QAElB,KAAK,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;CACF;AAjBD,kDAiBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport * as types from '../../types';\nimport { InstrumentationConfig } from '../../types';\n\n/**\n * Base abstract class for instrumenting web plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.d.ts new file mode 100644 index 0000000..7c64ca3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.d.ts @@ -0,0 +1,13 @@ +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +export declare function normalize(path: string): string; +//# sourceMappingURL=noop-normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js new file mode 100644 index 0000000..a7d26fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js @@ -0,0 +1,36 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalize = void 0; +const api_1 = require("@opentelemetry/api"); +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +function normalize(path) { + api_1.diag.warn('Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'); + return path; +} +exports.normalize = normalize; +//# sourceMappingURL=noop-normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js.map new file mode 100644 index 0000000..f144ce5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"noop-normalize.js","sourceRoot":"","sources":["../../../../src/platform/browser/noop-normalize.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA0C;AAE1C;;;;;;;;;;GAUG;AACH,SAAgB,SAAS,CAAC,IAAY;IACpC,UAAI,CAAC,IAAI,CACP,yOAAyO,CAC1O,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AALD,8BAKC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\n\n/**\n * Placeholder normalize function to replace the node variant in browser runtimes,\n * this should never be called and will perform a no-op and warn if it is called regardless.\n *\n * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation\n * package can be made node-only.\n *\n * @param path input path\n * @return unmodified path\n * @internal\n */\nexport function normalize(path: string): string {\n diag.warn(\n 'Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'\n );\n return path;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/index.d.ts new file mode 100644 index 0000000..2cbefb0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/index.d.ts @@ -0,0 +1,2 @@ +export { InstrumentationBase, normalize } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js new file mode 100644 index 0000000..3e2265e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalize = exports.InstrumentationBase = void 0; +var node_1 = require("./node"); +Object.defineProperty(exports, "InstrumentationBase", { enumerable: true, get: function () { return node_1.InstrumentationBase; } }); +Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return node_1.normalize; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js.map new file mode 100644 index 0000000..dcc246d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,+BAAwD;AAA/C,2GAAA,mBAAmB,OAAA;AAAE,iGAAA,SAAS,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase, normalize } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.d.ts new file mode 100644 index 0000000..6da6060 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.d.ts @@ -0,0 +1,36 @@ +import type { Hooked } from './RequireInTheMiddleSingleton'; +export declare const ModuleNameSeparator = "/"; +type ModuleNameTrieSearchOptions = { + /** + * Whether to return the results in insertion order + */ + maintainInsertionOrder?: boolean; + /** + * Whether to return only full matches + */ + fullOnly?: boolean; +}; +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +export declare class ModuleNameTrie { + private _trie; + private _counter; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook: Hooked): void; + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName: string, { maintainInsertionOrder, fullOnly }?: ModuleNameTrieSearchOptions): Hooked[]; +} +export {}; +//# sourceMappingURL=ModuleNameTrie.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js new file mode 100644 index 0000000..6df2c1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js @@ -0,0 +1,89 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ModuleNameTrie = exports.ModuleNameSeparator = void 0; +exports.ModuleNameSeparator = '/'; +/** + * Node in a `ModuleNameTrie` + */ +class ModuleNameTrieNode { + hooks = []; + children = new Map(); +} +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +class ModuleNameTrie { + _trie = new ModuleNameTrieNode(); + _counter = 0; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook) { + let trieNode = this._trie; + for (const moduleNamePart of hook.moduleName.split(exports.ModuleNameSeparator)) { + let nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + nextNode = new ModuleNameTrieNode(); + trieNode.children.set(moduleNamePart, nextNode); + } + trieNode = nextNode; + } + trieNode.hooks.push({ hook, insertedId: this._counter++ }); + } + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName, { maintainInsertionOrder, fullOnly } = {}) { + let trieNode = this._trie; + const results = []; + let foundFull = true; + for (const moduleNamePart of moduleName.split(exports.ModuleNameSeparator)) { + const nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + foundFull = false; + break; + } + if (!fullOnly) { + results.push(...nextNode.hooks); + } + trieNode = nextNode; + } + if (fullOnly && foundFull) { + results.push(...trieNode.hooks); + } + if (results.length === 0) { + return []; + } + if (results.length === 1) { + return [results[0].hook]; + } + if (maintainInsertionOrder) { + results.sort((a, b) => a.insertedId - b.insertedId); + } + return results.map(({ hook }) => hook); + } +} +exports.ModuleNameTrie = ModuleNameTrie; +//# sourceMappingURL=ModuleNameTrie.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js.map new file mode 100644 index 0000000..a021a3b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ModuleNameTrie.js","sourceRoot":"","sources":["../../../../src/platform/node/ModuleNameTrie.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIU,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;GAEG;AACH,MAAM,kBAAkB;IACtB,KAAK,GAAgD,EAAE,CAAC;IACxD,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;CACvD;AAaD;;GAEG;AACH,MAAa,cAAc;IACjB,KAAK,GAAuB,IAAI,kBAAkB,EAAE,CAAC;IACrD,QAAQ,GAAW,CAAC,CAAC;IAE7B;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAE1B,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,2BAAmB,CAAC,EAAE;YACvE,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACpC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;aACjD;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QACD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CACJ,UAAkB,EAClB,EAAE,sBAAsB,EAAE,QAAQ,KAAkC,EAAE;QAEtE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAgC,EAAE,CAAC;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,KAAK,CAAC,2BAAmB,CAAC,EAAE;YAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;gBACb,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACP;YACD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjC;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QAED,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,EAAE,CAAC;SACX;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC1B;QACD,IAAI,sBAAsB,EAAE;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;SACrD;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF;AAlED,wCAkEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(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 /**\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(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(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\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.d.ts new file mode 100644 index 0000000..e1b8733 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.d.ts @@ -0,0 +1,35 @@ +import type { OnRequireFn } from 'require-in-the-middle'; +export type Hooked = { + moduleName: string; + onRequire: OnRequireFn; +}; +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +export declare class RequireInTheMiddleSingleton { + private _moduleNameTrie; + private static _instance?; + private constructor(); + private _initialize; + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName: string, onRequire: OnRequireFn): Hooked; + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance(): RequireInTheMiddleSingleton; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js new file mode 100644 index 0000000..6a50c1e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js @@ -0,0 +1,111 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RequireInTheMiddleSingleton = void 0; +const require_in_the_middle_1 = require("require-in-the-middle"); +const path = require("path"); +const ModuleNameTrie_1 = require("./ModuleNameTrie"); +/** + * Whether Mocha is running in this process + * Inspired by https://github.com/AndreasPizsa/detect-mocha + * + * @type {boolean} + */ +const isMocha = [ + 'afterEach', + 'after', + 'beforeEach', + 'before', + 'describe', + 'it', +].every(fn => { + // @ts-expect-error TS7053: Element implicitly has an 'any' type + return typeof global[fn] === 'function'; +}); +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +class RequireInTheMiddleSingleton { + _moduleNameTrie = new ModuleNameTrie_1.ModuleNameTrie(); + static _instance; + constructor() { + this._initialize(); + } + _initialize() { + new require_in_the_middle_1.Hook( + // Intercept all `require` calls; we will filter the matching ones below + null, { internals: true }, (exports, name, basedir) => { + // For internal files on Windows, `name` will use backslash as the path separator + const normalizedModuleName = normalizePathSeparators(name); + const matches = this._moduleNameTrie.search(normalizedModuleName, { + maintainInsertionOrder: true, + // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises'). + // This matches the behavior of `require-in-the-middle`. + // `basedir` is always `undefined` for core modules. + fullOnly: basedir === undefined, + }); + for (const { onRequire } of matches) { + exports = onRequire(exports, name, basedir); + } + return exports; + }); + } + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName, onRequire) { + const hooked = { moduleName, onRequire }; + this._moduleNameTrie.insert(hooked); + return hooked; + } + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance() { + // Mocha runs all test suites in the same process + // This prevents test suites from sharing a singleton + if (isMocha) + return new RequireInTheMiddleSingleton(); + return (this._instance = + this._instance ?? new RequireInTheMiddleSingleton()); + } +} +exports.RequireInTheMiddleSingleton = RequireInTheMiddleSingleton; +/** + * Normalize the path separators to forward slash in a module name or path + * + * @param {string} moduleNameOrPath Module name or path + * @returns {string} Normalized module name or path + */ +function normalizePathSeparators(moduleNameOrPath) { + return path.sep !== ModuleNameTrie_1.ModuleNameSeparator + ? moduleNameOrPath.split(path.sep).join(ModuleNameTrie_1.ModuleNameSeparator) + : moduleNameOrPath; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js.map new file mode 100644 index 0000000..84c962d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RequireInTheMiddleSingleton.js","sourceRoot":"","sources":["../../../../src/platform/node/RequireInTheMiddleSingleton.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,iEAA6C;AAC7C,6BAA6B;AAC7B,qDAAuE;AAOvE;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IACd,WAAW;IACX,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,IAAI;CACL,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;IACX,gEAAgE;IAChE,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAa,2BAA2B;IAC9B,eAAe,GAAmB,IAAI,+BAAc,EAAE,CAAC;IACvD,MAAM,CAAC,SAAS,CAA+B;IAEvD;QACE,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,4BAAI;QACN,wEAAwE;QACxE,IAAI,EACJ,EAAE,SAAS,EAAE,IAAI,EAAE,EACnB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACzB,iFAAiF;YACjF,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE3D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,oBAAoB,EAAE;gBAChE,sBAAsB,EAAE,IAAI;gBAC5B,gFAAgF;gBAChF,wDAAwD;gBACxD,oDAAoD;gBACpD,QAAQ,EAAE,OAAO,KAAK,SAAS;aAChC,CAAC,CAAC;YAEH,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE;gBACnC,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;aAC7C;YAED,OAAO,OAAO,CAAC;QACjB,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,UAAkB,EAAE,SAAsB;QACjD,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW;QAChB,iDAAiD;QACjD,qDAAqD;QACrD,IAAI,OAAO;YAAE,OAAO,IAAI,2BAA2B,EAAE,CAAC;QAEtD,OAAO,CAAC,IAAI,CAAC,SAAS;YACpB,IAAI,CAAC,SAAS,IAAI,IAAI,2BAA2B,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AA5DD,kEA4DC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,gBAAwB;IACvD,OAAO,IAAI,CAAC,GAAG,KAAK,oCAAmB;QACrC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oCAAmB,CAAC;QAC5D,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\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/**\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 */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\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\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\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: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\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: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.d.ts new file mode 100644 index 0000000..181ca82 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js new file mode 100644 index 0000000..1f2ce31 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalize = exports.InstrumentationBase = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "InstrumentationBase", { enumerable: true, get: function () { return instrumentation_1.InstrumentationBase; } }); +var normalize_1 = require("./normalize"); +Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return normalize_1.normalize; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js.map new file mode 100644 index 0000000..537c7ff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,qDAAwD;AAA/C,sHAAA,mBAAmB,OAAA;AAC5B,yCAAwC;AAA/B,sGAAA,SAAS,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.d.ts new file mode 100644 index 0000000..a74d6bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.d.ts @@ -0,0 +1,25 @@ +import * as types from '../../types'; +import { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer'; +import { InstrumentationAbstract } from '../../instrumentation'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting node plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + private _modules; + private _hooks; + private _requireInTheMiddleSingleton; + private _enabled; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: typeof wrap; + protected _unwrap: typeof unwrap; + protected _massWrap: typeof massWrap; + protected _massUnwrap: typeof massUnwrap; + private _warnOnPreloadedModules; + private _extractPackageVersion; + private _onRequire; + enable(): void; + disable(): void; + isEnabled(): boolean; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js new file mode 100644 index 0000000..2124978 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js @@ -0,0 +1,281 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InstrumentationBase = void 0; +const path = require("path"); +const util_1 = require("util"); +const semver_1 = require("../../semver"); +const shimmer_1 = require("../../shimmer"); +const instrumentation_1 = require("../../instrumentation"); +const RequireInTheMiddleSingleton_1 = require("./RequireInTheMiddleSingleton"); +const import_in_the_middle_1 = require("import-in-the-middle"); +const api_1 = require("@opentelemetry/api"); +const require_in_the_middle_1 = require("require-in-the-middle"); +const fs_1 = require("fs"); +const utils_1 = require("../../utils"); +/** + * Base abstract class for instrumenting node plugins + */ +class InstrumentationBase extends instrumentation_1.InstrumentationAbstract { + _modules; + _hooks = []; + _requireInTheMiddleSingleton = RequireInTheMiddleSingleton_1.RequireInTheMiddleSingleton.getInstance(); + _enabled = false; + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + let modules = this.init(); + if (modules && !Array.isArray(modules)) { + modules = [modules]; + } + this._modules = modules || []; + if (this._config.enabled) { + this.enable(); + } + } + _wrap = (moduleExports, name, wrapper) => { + if ((0, utils_1.isWrapped)(moduleExports[name])) { + this._unwrap(moduleExports, name); + } + if (!util_1.types.isProxy(moduleExports)) { + return (0, shimmer_1.wrap)(moduleExports, name, wrapper); + } + else { + const wrapped = (0, shimmer_1.wrap)(Object.assign({}, moduleExports), name, wrapper); + Object.defineProperty(moduleExports, name, { + value: wrapped, + }); + return wrapped; + } + }; + _unwrap = (moduleExports, name) => { + if (!util_1.types.isProxy(moduleExports)) { + return (0, shimmer_1.unwrap)(moduleExports, name); + } + else { + return Object.defineProperty(moduleExports, name, { + value: moduleExports[name], + }); + } + }; + _massWrap = (moduleExportsArray, names, wrapper) => { + if (!moduleExportsArray) { + api_1.diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + api_1.diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._wrap(moduleExports, name, wrapper); + }); + }); + }; + _massUnwrap = (moduleExportsArray, names) => { + if (!moduleExportsArray) { + api_1.diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + api_1.diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._unwrap(moduleExports, name); + }); + }); + }; + _warnOnPreloadedModules() { + this._modules.forEach((module) => { + const { name } = module; + try { + const resolvedModule = require.resolve(name); + if (require.cache[resolvedModule]) { + // Module is already cached, which means the instrumentation hook might not work + this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`); + } + } + catch { + // Module isn't available, we can simply skip + } + }); + } + _extractPackageVersion(baseDir) { + try { + const json = (0, fs_1.readFileSync)(path.join(baseDir, 'package.json'), { + encoding: 'utf8', + }); + const version = JSON.parse(json).version; + return typeof version === 'string' ? version : undefined; + } + catch { + api_1.diag.warn('Failed extracting version', baseDir); + } + return undefined; + } + _onRequire(module, exports, name, baseDir) { + if (!baseDir) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', { + module: module.name, + }); + return module.patch(exports); + } + } + return exports; + } + const version = this._extractPackageVersion(baseDir); + module.moduleVersion = version; + if (module.name === name) { + // main module + if (isSupported(module.supportedVersions, version, module.includePrerelease)) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for module on require hook', { + module: module.name, + version: module.moduleVersion, + baseDir, + }); + return module.patch(exports, module.moduleVersion); + } + } + } + return exports; + } + // internal file + const files = module.files ?? []; + const normalizedName = path.normalize(name); + const supportedFileInstrumentations = files.filter(f => f.name === normalizedName && + isSupported(f.supportedVersions, version, module.includePrerelease)); + return supportedFileInstrumentations.reduce((patchedExports, file) => { + file.moduleExports = patchedExports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + baseDir, + }); + // patch signature is not typed, so we cast it assuming it's correct + return file.patch(patchedExports, module.moduleVersion); + } + return patchedExports; + }, exports); + } + enable() { + if (this._enabled) { + return; + } + this._enabled = true; + // already hooked, just call patch again + if (this._hooks.length > 0) { + for (const module of this._modules) { + if (typeof module.patch === 'function' && module.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + }); + module.patch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.patch(file.moduleExports, module.moduleVersion); + } + } + } + return; + } + this._warnOnPreloadedModules(); + for (const module of this._modules) { + const hookFn = (exports, name, baseDir) => { + if (!baseDir && path.isAbsolute(name)) { + const parsedPath = path.parse(name); + name = parsedPath.name; + baseDir = parsedPath.dir; + } + return this._onRequire(module, exports, name, baseDir); + }; + const onRequire = (exports, name, baseDir) => { + return this._onRequire(module, exports, name, baseDir); + }; + // `RequireInTheMiddleSingleton` does not support absolute paths. + // For an absolute paths, we must create a separate instance of the + // require-in-the-middle `Hook`. + const hook = path.isAbsolute(module.name) + ? new require_in_the_middle_1.Hook([module.name], { internals: true }, onRequire) + : this._requireInTheMiddleSingleton.register(module.name, onRequire); + this._hooks.push(hook); + const esmHook = new import_in_the_middle_1.Hook([module.name], { internals: false }, hookFn); + this._hooks.push(esmHook); + } + } + disable() { + if (!this._enabled) { + return; + } + this._enabled = false; + for (const module of this._modules) { + if (typeof module.unpatch === 'function' && module.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + }); + module.unpatch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.unpatch(file.moduleExports, module.moduleVersion); + } + } + } + } + isEnabled() { + return this._enabled; + } +} +exports.InstrumentationBase = InstrumentationBase; +function isSupported(supportedVersions, version, includePrerelease) { + if (typeof version === 'undefined') { + // If we don't have the version, accept the wildcard case only + return supportedVersions.includes('*'); + } + return supportedVersions.some(supportedVersion => { + return (0, semver_1.satisfies)(version, supportedVersion, { includePrerelease }); + }); +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js.map new file mode 100644 index 0000000..1a99bf6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/node/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n RequireInTheMiddleSingleton,\n Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\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(\n `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\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = 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 } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\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(\n f =>\n f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\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(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: 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: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\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 HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: false },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.d.ts new file mode 100644 index 0000000..d8e833e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.d.ts @@ -0,0 +1,2 @@ +export { normalize } from 'path'; +//# sourceMappingURL=normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js new file mode 100644 index 0000000..148b3a0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalize = void 0; +var path_1 = require("path"); +Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return path_1.normalize; } }); +//# sourceMappingURL=normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js.map new file mode 100644 index 0000000..9d64fe5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../src/platform/node/normalize.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6BAAiC;AAAxB,iGAAA,SAAS,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { normalize } from 'path';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.d.ts new file mode 100644 index 0000000..7bfd831 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.d.ts @@ -0,0 +1,58 @@ +export declare enum SemconvStability { + /** Emit only stable semantic conventions. */ + STABLE = 1, + /** Emit only old semantic conventions. */ + OLD = 2, + /** Emit both stable and old semantic conventions. */ + DUPLICATE = 3 +} +type SemConvStabilityNamespace = 'http' | 'messaging' | 'database' | 'k8s' | (string & {}); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +export declare function semconvStabilityFromStr(namespace: SemConvStabilityNamespace, str: string | undefined): SemconvStability; +export {}; +//# sourceMappingURL=semconvStability.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js new file mode 100644 index 0000000..c554e4a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js @@ -0,0 +1,94 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.semconvStabilityFromStr = exports.SemconvStability = void 0; +var SemconvStability; +(function (SemconvStability) { + /** Emit only stable semantic conventions. */ + SemconvStability[SemconvStability["STABLE"] = 1] = "STABLE"; + /** Emit only old semantic conventions. */ + SemconvStability[SemconvStability["OLD"] = 2] = "OLD"; + /** Emit both stable and old semantic conventions. */ + SemconvStability[SemconvStability["DUPLICATE"] = 3] = "DUPLICATE"; +})(SemconvStability = exports.SemconvStability || (exports.SemconvStability = {})); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +function semconvStabilityFromStr(namespace, str) { + let semconvStability = SemconvStability.OLD; + // The same parsing of `str` as `getStringListFromEnv` from the core pkg. + const entries = str + ?.split(',') + .map(v => v.trim()) + .filter(s => s !== ''); + for (const entry of entries ?? []) { + if (entry.toLowerCase() === namespace + '/dup') { + // DUPLICATE takes highest precedence. + semconvStability = SemconvStability.DUPLICATE; + break; + } + else if (entry.toLowerCase() === namespace) { + semconvStability = SemconvStability.STABLE; + } + } + return semconvStability; +} +exports.semconvStabilityFromStr = semconvStabilityFromStr; +//# sourceMappingURL=semconvStability.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js.map new file mode 100644 index 0000000..04041fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconvStability.js","sourceRoot":"","sources":["../../src/semconvStability.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,6CAA6C;IAC7C,2DAAY,CAAA;IACZ,0CAA0C;IAC1C,qDAAS,CAAA;IACT,qDAAqD;IACrD,iEAAqB,CAAA;AACvB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,SAAgB,uBAAuB,CACrC,SAAoC,EACpC,GAAuB;IAEvB,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC;IAE5C,yEAAyE;IACzE,MAAM,OAAO,GAAG,GAAG;QACjB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,EAAE,EAAE;QACjC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,GAAG,MAAM,EAAE;YAC9C,sCAAsC;YACtC,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC;YAC9C,MAAM;SACP;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;YAC5C,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC;SAC5C;KACF;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAtBD,0DAsBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\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 */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\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 } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semver.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semver.d.ts new file mode 100644 index 0000000..30799dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semver.d.ts @@ -0,0 +1,16 @@ +/** Interface for the options to configure semantic versioning satisfy check. */ +export interface SatisfiesOptions { + /** + * If set to true, the pre-release checks will be included + * as described [here](https://github.com/npm/node-semver#prerelease-tags). + */ + includePrerelease?: boolean; +} +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +export declare function satisfies(version: string, range: string, options?: SatisfiesOptions): boolean; +//# sourceMappingURL=semver.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semver.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semver.js new file mode 100644 index 0000000..de86ac0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semver.js @@ -0,0 +1,518 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.satisfies = void 0; +// This is a custom semantic versioning implementation compatible with the +// `satisfies(version, range, options?)` function from the `semver` npm package; +// with the exception that the `loose` option is not supported. +// +// The motivation for the custom semver implementation is that +// `semver` package has some initialization delay (lots of RegExp init and compile) +// and this leads to coldstart overhead for the OTEL Lambda Node.js layer. +// Hence, we have implemented lightweight version of it internally with required functionalities. +const api_1 = require("@opentelemetry/api"); +const 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-]+)*))?$/; +const 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-]+)*))?$/; +const operatorResMap = { + '>': [1], + '>=': [0, 1], + '=': [0], + '<=': [-1, 0], + '<': [-1], + '!=': [-1, 1], +}; +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +function satisfies(version, range, options) { + // Strict semver format check + if (!_validateVersion(version)) { + api_1.diag.error(`Invalid version: ${version}`); + return false; + } + // If range is empty, satisfy check succeeds regardless what version is + if (!range) { + return true; + } + // Cleanup range + range = range.replace(/([<>=~^]+)\s+/g, '$1'); + // Parse version + const parsedVersion = _parseVersion(version); + if (!parsedVersion) { + return false; + } + const allParsedRanges = []; + // Check given version whether it satisfies given range expression + const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options); + // If check result is OK, + // do another final check for pre-release, if pre-release check is included by option + if (checkResult && !options?.includePrerelease) { + return _doPreleaseCheck(parsedVersion, allParsedRanges); + } + return checkResult; +} +exports.satisfies = satisfies; +function _validateVersion(version) { + return typeof version === 'string' && VERSION_REGEXP.test(version); +} +function _doSatisfies(parsedVersion, range, allParsedRanges, options) { + if (range.includes('||')) { + // A version matches a range if and only if + // every comparator in at least one of the ||-separated comparator sets is satisfied by the version + const ranges = range.trim().split('||'); + for (const r of ranges) { + if (_checkRange(parsedVersion, r, allParsedRanges, options)) { + return true; + } + } + return false; + } + else if (range.includes(' - ')) { + // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc + range = replaceHyphen(range, options); + } + else if (range.includes(' ')) { + // Multiple separated ranges and all needs to be satisfied for success + const ranges = range + .trim() + .replace(/\s{2,}/g, ' ') + .split(' '); + for (const r of ranges) { + if (!_checkRange(parsedVersion, r, allParsedRanges, options)) { + return false; + } + } + return true; + } + // Check given parsed version with given range + return _checkRange(parsedVersion, range, allParsedRanges, options); +} +function _checkRange(parsedVersion, range, allParsedRanges, options) { + range = _normalizeRange(range, options); + if (range.includes(' ')) { + // If there are multiple ranges separated, satisfy each of them + return _doSatisfies(parsedVersion, range, allParsedRanges, options); + } + else { + // Validate and parse range + const parsedRange = _parseRange(range); + allParsedRanges.push(parsedRange); + // Check parsed version by parsed range + return _satisfies(parsedVersion, parsedRange); + } +} +function _satisfies(parsedVersion, parsedRange) { + // If range is invalid, satisfy check fails (no error throw) + if (parsedRange.invalid) { + return false; + } + // If range is empty or wildcard, satisfy check succeeds regardless what version is + if (!parsedRange.version || _isWildcard(parsedRange.version)) { + return true; + } + // Compare version segment first + let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []); + // If versions segments are equal, compare by pre-release segments + if (comparisonResult === 0) { + const versionPrereleaseSegments = parsedVersion.prereleaseSegments || []; + const rangePrereleaseSegments = parsedRange.prereleaseSegments || []; + if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) { + comparisonResult = 0; + } + else if (!versionPrereleaseSegments.length && + rangePrereleaseSegments.length) { + comparisonResult = 1; + } + else if (versionPrereleaseSegments.length && + !rangePrereleaseSegments.length) { + comparisonResult = -1; + } + else { + comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments); + } + } + // Resolve check result according to comparison operator + return operatorResMap[parsedRange.op]?.includes(comparisonResult); +} +function _doPreleaseCheck(parsedVersion, allParsedRanges) { + if (parsedVersion.prerelease) { + return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version); + } + return true; +} +function _normalizeRange(range, options) { + range = range.trim(); + range = replaceCaret(range, options); + range = replaceTilde(range); + range = replaceXRange(range, options); + range = range.trim(); + return range; +} +function isX(id) { + return !id || id.toLowerCase() === 'x' || id === '*'; +} +function _parseVersion(versionString) { + const match = versionString.match(VERSION_REGEXP); + if (!match) { + api_1.diag.error(`Invalid version: ${versionString}`); + return undefined; + } + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + return { + op: undefined, + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _parseRange(rangeString) { + if (!rangeString) { + return {}; + } + const match = rangeString.match(RANGE_REGEXP); + if (!match) { + api_1.diag.error(`Invalid range: ${rangeString}`); + return { + invalid: true, + }; + } + let op = match.groups.op; + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + if (op === '==') { + op = '='; + } + return { + op: op || '=', + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _isWildcard(s) { + return s === '*' || s === 'x' || s === 'X'; +} +function _parseVersionString(v) { + const n = parseInt(v, 10); + return isNaN(n) ? v : n; +} +function _normalizeVersionType(a, b) { + if (typeof a === typeof b) { + if (typeof a === 'number') { + return [a, b]; + } + else if (typeof a === 'string') { + return [a, b]; + } + else { + throw new Error('Version segments can only be strings or numbers'); + } + } + else { + return [String(a), String(b)]; + } +} +function _compareVersionStrings(v1, v2) { + if (_isWildcard(v1) || _isWildcard(v2)) { + return 0; + } + const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2)); + if (parsedV1 > parsedV2) { + return 1; + } + else if (parsedV1 < parsedV2) { + return -1; + } + return 0; +} +function _compareVersionSegments(v1, v2) { + for (let i = 0; i < Math.max(v1.length, v2.length); i++) { + const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0'); + if (res !== 0) { + return res; + } + } + return 0; +} +//////////////////////////////////////////////////////////////////////////////// +// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb +// License: +/* + * The ISC License + * + * Copyright (c) Isaac Z. Schlueter and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +const LETTERDASHNUMBER = '[a-zA-Z0-9-]'; +const NUMERICIDENTIFIER = '0|[1-9]\\d*'; +const NONNUMERICIDENTIFIER = `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`; +const GTLT = '((?:<|>)?=?)'; +const PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`; +const PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\.${PRERELEASEIDENTIFIER})*))`; +const BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`; +const BUILD = `(?:\\+(${BUILDIDENTIFIER}(?:\\.${BUILDIDENTIFIER})*))`; +const XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\*`; +const XRANGEPLAIN = `[v=\\s]*(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:${PRERELEASE})?${BUILD}?` + + `)?)?`; +const XRANGE = `^${GTLT}\\s*${XRANGEPLAIN}$`; +const XRANGE_REGEXP = new RegExp(XRANGE); +const HYPHENRANGE = `^\\s*(${XRANGEPLAIN})` + `\\s+-\\s+` + `(${XRANGEPLAIN})` + `\\s*$`; +const HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE); +const LONETILDE = '(?:~>?)'; +const TILDE = `^${LONETILDE}${XRANGEPLAIN}$`; +const TILDE_REGEXP = new RegExp(TILDE); +const LONECARET = '(?:\\^)'; +const CARET = `^${LONECARET}${XRANGEPLAIN}$`; +const CARET_REGEXP = new RegExp(CARET); +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285 +// +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +// ~0.0.1 --> >=0.0.1 <0.1.0-0 +function replaceTilde(comp) { + const r = TILDE_REGEXP; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } + else if (pr) { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329 +// +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +// ^0.0.1 --> >=0.0.1 <0.0.2-0 +// ^0.1.0 --> >=0.1.0 <0.2.0-0 +function replaceCaret(comp, options) { + const r = CARET_REGEXP; + const z = options?.includePrerelease ? '-0' : ''; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } + else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } + else if (pr) { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } + } + else { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390 +function replaceXRange(comp, options) { + const r = XRANGE_REGEXP; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === '=' && anyX) { + gtlt = ''; + } + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options?.includePrerelease ? '-0' : ''; + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0'; + } + else { + // nothing is forbidden + ret = '*'; + } + } + else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0; + } + p = 0; + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>='; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } + else { + m = +m + 1; + p = 0; + } + } + else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<'; + if (xm) { + M = +M + 1; + } + else { + m = +m + 1; + } + } + if (gtlt === '<') { + pr = '-0'; + } + ret = `${gtlt + M}.${m}.${p}${pr}`; + } + else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } + else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488 +// +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +function replaceHyphen(comp, options) { + const r = HYPHENRANGE_REGEXP; + return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ''; + } + else if (isX(fm)) { + from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (isX(fp)) { + from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (fpr) { + from = `>=${from}`; + } + else { + from = `>=${from}${options?.includePrerelease ? '-0' : ''}`; + } + if (isX(tM)) { + to = ''; + } + else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } + else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } + else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } + else if (options?.includePrerelease) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } + else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }); +} +//# sourceMappingURL=semver.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semver.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semver.js.map new file mode 100644 index 0000000..50ffde3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/semver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/semver.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,0EAA0E;AAC1E,gFAAgF;AAChF,+DAA+D;AAC/D,EAAE;AACF,8DAA8D;AAC9D,mFAAmF;AACnF,0EAA0E;AAC1E,iGAAiG;AAEjG,4CAA0C;AAE1C,MAAM,cAAc,GAClB,oPAAoP,CAAC;AACvP,MAAM,YAAY,GAChB,oTAAoT,CAAC;AAEvT,MAAM,cAAc,GAA+B;IACjD,GAAG,EAAE,CAAC,CAAC,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACT,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CACd,CAAC;AA2BF;;;;;GAKG;AACH,SAAgB,SAAS,CACvB,OAAe,EACf,KAAa,EACb,OAA0B;IAE1B,6BAA6B;IAC7B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;QAC9B,UAAI,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;KACd;IAED,uEAAuE;IACvE,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAC;KACb;IAED,gBAAgB;IAChB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAE9C,gBAAgB;IAChB,MAAM,aAAa,GAA8B,aAAa,CAAC,OAAO,CAAC,CAAC;IACxE,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,eAAe,GAAoB,EAAE,CAAC;IAE5C,kEAAkE;IAClE,MAAM,WAAW,GAAY,YAAY,CACvC,aAAa,EACb,KAAK,EACL,eAAe,EACf,OAAO,CACR,CAAC;IAEF,yBAAyB;IACzB,qFAAqF;IACrF,IAAI,WAAW,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE;QAC9C,OAAO,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;KACzD;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAzCD,8BAyCC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,YAAY,CACnB,aAA4B,EAC5B,KAAa,EACb,eAAgC,EAChC,OAA0B;IAE1B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACxB,2CAA2C;QAC3C,mGAAmG;QACnG,MAAM,MAAM,GAAa,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;YACtB,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;gBAC3D,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAChC,4EAA4E;QAC5E,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACvC;SAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC9B,sEAAsE;QACtE,MAAM,MAAM,GAAa,KAAK;aAC3B,IAAI,EAAE;aACN,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,KAAK,CAAC,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;gBAC5D,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;KACb;IAED,8CAA8C;IAC9C,OAAO,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,WAAW,CAClB,aAA4B,EAC5B,KAAa,EACb,eAAgC,EAChC,OAA0B;IAE1B,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvB,+DAA+D;QAC/D,OAAO,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;KACrE;SAAM;QACL,2BAA2B;QAC3B,MAAM,WAAW,GAAkB,WAAW,CAAC,KAAK,CAAC,CAAC;QACtD,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClC,uCAAuC;QACvC,OAAO,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;KAC/C;AACH,CAAC;AAED,SAAS,UAAU,CACjB,aAA4B,EAC5B,WAA0B;IAE1B,4DAA4D;IAC5D,IAAI,WAAW,CAAC,OAAO,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,mFAAmF;IACnF,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;QAC5D,OAAO,IAAI,CAAC;KACb;IAED,gCAAgC;IAChC,IAAI,gBAAgB,GAAW,uBAAuB,CACpD,aAAa,CAAC,eAAe,IAAI,EAAE,EACnC,WAAW,CAAC,eAAe,IAAI,EAAE,CAClC,CAAC;IAEF,kEAAkE;IAClE,IAAI,gBAAgB,KAAK,CAAC,EAAE;QAC1B,MAAM,yBAAyB,GAC7B,aAAa,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACzC,MAAM,uBAAuB,GAC3B,WAAW,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,yBAAyB,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE;YACxE,gBAAgB,GAAG,CAAC,CAAC;SACtB;aAAM,IACL,CAAC,yBAAyB,CAAC,MAAM;YACjC,uBAAuB,CAAC,MAAM,EAC9B;YACA,gBAAgB,GAAG,CAAC,CAAC;SACtB;aAAM,IACL,yBAAyB,CAAC,MAAM;YAChC,CAAC,uBAAuB,CAAC,MAAM,EAC/B;YACA,gBAAgB,GAAG,CAAC,CAAC,CAAC;SACvB;aAAM;YACL,gBAAgB,GAAG,uBAAuB,CACxC,yBAAyB,EACzB,uBAAuB,CACxB,CAAC;SACH;KACF;IAED,wDAAwD;IACxD,OAAO,cAAc,CAAC,WAAW,CAAC,EAAG,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,gBAAgB,CACvB,aAA4B,EAC5B,eAAgC;IAEhC,IAAI,aAAa,CAAC,UAAU,EAAE;QAC5B,OAAO,eAAe,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,OAAO,CACzD,CAAC;KACH;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,OAA0B;IAChE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5B,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,GAAG,CAAC,EAAW;IACtB,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,aAAqB;IAC1C,MAAM,KAAK,GAA4B,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK,EAAE;QACV,UAAI,CAAC,KAAK,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,OAAO,GAAW,KAAM,CAAC,MAAO,CAAC,OAAO,CAAC;IAC/C,MAAM,UAAU,GAAW,KAAM,CAAC,MAAO,CAAC,UAAU,CAAC;IACrD,MAAM,KAAK,GAAW,KAAM,CAAC,MAAO,CAAC,KAAK,CAAC;IAE3C,MAAM,eAAe,GAAa,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,kBAAkB,GAAyB,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAExE,OAAO;QACL,EAAE,EAAE,SAAS;QAEb,OAAO;QACP,eAAe;QACf,mBAAmB,EAAE,eAAe,CAAC,MAAM;QAE3C,UAAU;QACV,kBAAkB;QAClB,sBAAsB,EAAE,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE1E,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB;IACtC,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,MAAM,KAAK,GAA4B,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvE,IAAI,CAAC,KAAK,EAAE;QACV,UAAI,CAAC,KAAK,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;KACH;IAED,IAAI,EAAE,GAAW,KAAM,CAAC,MAAO,CAAC,EAAE,CAAC;IACnC,MAAM,OAAO,GAAW,KAAM,CAAC,MAAO,CAAC,OAAO,CAAC;IAC/C,MAAM,UAAU,GAAW,KAAM,CAAC,MAAO,CAAC,UAAU,CAAC;IACrD,MAAM,KAAK,GAAW,KAAM,CAAC,MAAO,CAAC,KAAK,CAAC;IAE3C,MAAM,eAAe,GAAa,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,kBAAkB,GAAyB,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAExE,IAAI,EAAE,KAAK,IAAI,EAAE;QACf,EAAE,GAAG,GAAG,CAAC;KACV;IAED,OAAO;QACL,EAAE,EAAE,EAAE,IAAI,GAAG;QAEb,OAAO;QACP,eAAe;QACf,mBAAmB,EAAE,eAAe,CAAC,MAAM;QAE3C,UAAU;QACV,kBAAkB;QAClB,sBAAsB,EAAE,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE1E,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,CAAqB;IACxC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAS;IACpC,MAAM,CAAC,GAAW,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,qBAAqB,CAC5B,CAAkB,EAClB,CAAkB;IAElB,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC,EAAE;QACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;YACzB,OAAO,CAAC,CAAW,EAAE,CAAW,CAAC,CAAC;SACnC;aAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;YAChC,OAAO,CAAC,CAAW,EAAE,CAAW,CAAC,CAAC;SACnC;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;SACpE;KACF;SAAM;QACL,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/B;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,EAAU,EAAE,EAAU;IACpD,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE;QACtC,OAAO,CAAC,CAAC;KACV;IACD,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,qBAAqB,CAChD,mBAAmB,CAAC,EAAE,CAAC,EACvB,mBAAmB,CAAC,EAAE,CAAC,CACxB,CAAC;IACF,IAAI,QAAQ,GAAG,QAAQ,EAAE;QACvB,OAAO,CAAC,CAAC;KACV;SAAM,IAAI,QAAQ,GAAG,QAAQ,EAAE;QAC9B,OAAO,CAAC,CAAC,CAAC;KACX;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAY,EAAE,EAAY;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,GAAG,GAAW,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACvE,IAAI,GAAG,KAAK,CAAC,EAAE;YACb,OAAO,GAAG,CAAC;SACZ;KACF;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gFAAgF;AAChF,oGAAoG;AACpG,WAAW;AACX;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AACxC,MAAM,oBAAoB,GAAG,gBAAgB,gBAAgB,GAAG,CAAC;AACjE,MAAM,IAAI,GAAG,cAAc,CAAC;AAE5B,MAAM,oBAAoB,GAAG,MAAM,iBAAiB,IAAI,oBAAoB,GAAG,CAAC;AAChF,MAAM,UAAU,GAAG,QAAQ,oBAAoB,SAAS,oBAAoB,MAAM,CAAC;AAEnF,MAAM,eAAe,GAAG,GAAG,gBAAgB,GAAG,CAAC;AAC/C,MAAM,KAAK,GAAG,UAAU,eAAe,SAAS,eAAe,MAAM,CAAC;AAEtE,MAAM,gBAAgB,GAAG,GAAG,iBAAiB,UAAU,CAAC;AACxD,MAAM,WAAW,GACf,YAAY,gBAAgB,GAAG;IAC/B,UAAU,gBAAgB,GAAG;IAC7B,UAAU,gBAAgB,GAAG;IAC7B,MAAM,UAAU,KAAK,KAAK,GAAG;IAC7B,MAAM,CAAC;AACT,MAAM,MAAM,GAAG,IAAI,IAAI,OAAO,WAAW,GAAG,CAAC;AAC7C,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,WAAW,GACf,SAAS,WAAW,GAAG,GAAG,WAAW,GAAG,IAAI,WAAW,GAAG,GAAG,OAAO,CAAC;AACvE,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;AAEnD,MAAM,SAAS,GAAG,SAAS,CAAC;AAC5B,MAAM,KAAK,GAAG,IAAI,SAAS,GAAG,WAAW,GAAG,CAAC;AAC7C,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvC,MAAM,SAAS,GAAG,SAAS,CAAC;AAC5B,MAAM,KAAK,GAAG,IAAI,SAAS,GAAG,WAAW,GAAG,CAAC;AAC7C,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvC,uHAAuH;AACvH,EAAE;AACF,iCAAiC;AACjC,4DAA4D;AAC5D,oDAAoD;AACpD,oDAAoD;AACpD,uCAAuC;AACvC,uCAAuC;AACvC,8BAA8B;AAC9B,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,CAAC,GAAG,YAAY,CAAC;IACvB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QACxC,IAAI,GAAG,CAAC;QAER,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACV,GAAG,GAAG,EAAE,CAAC;SACV;aAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACjB,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;SACrC;aAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACjB,2BAA2B;YAC3B,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;SAC3C;aAAM,IAAI,EAAE,EAAE;YACb,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;SACpD;aAAM;YACL,6BAA6B;YAC7B,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;SAC9C;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uHAAuH;AACvH,EAAE;AACF,6BAA6B;AAC7B,wCAAwC;AACxC,oCAAoC;AACpC,oCAAoC;AACpC,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,SAAS,YAAY,CAAC,IAAY,EAAE,OAA0B;IAC5D,MAAM,CAAC,GAAG,YAAY,CAAC;IACvB,MAAM,CAAC,GAAG,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QACxC,IAAI,GAAG,CAAC;QAER,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACV,GAAG,GAAG,EAAE,CAAC;SACV;aAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACjB,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;SACzC;aAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACjB,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;aAC/C;iBAAM;gBACL,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;aAC5C;SACF;aAAM,IAAI,EAAE,EAAE;YACb,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,IAAI,CAAC,KAAK,GAAG,EAAE;oBACb,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;iBACvD;qBAAM;oBACL,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;iBACpD;aACF;iBAAM;gBACL,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;aACjD;SACF;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,IAAI,CAAC,KAAK,GAAG,EAAE;oBACb,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;iBACrD;qBAAM;oBACL,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;iBAClD;aACF;iBAAM;gBACL,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;aAC3C;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uHAAuH;AACvH,SAAS,aAAa,CAAC,IAAY,EAAE,OAA0B;IAC7D,MAAM,CAAC,GAAG,aAAa,CAAC;IACxB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QAChD,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,EAAE,CAAC;QAEhB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE;YACxB,IAAI,GAAG,EAAE,CAAC;SACX;QAED,4DAA4D;QAC5D,0DAA0D;QAC1D,EAAE,GAAG,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5C,IAAI,EAAE,EAAE;YACN,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;gBAChC,qBAAqB;gBACrB,GAAG,GAAG,UAAU,CAAC;aAClB;iBAAM;gBACL,uBAAuB;gBACvB,GAAG,GAAG,GAAG,CAAC;aACX;SACF;aAAM,IAAI,IAAI,IAAI,IAAI,EAAE;YACvB,uDAAuD;YACvD,mBAAmB;YACnB,IAAI,EAAE,EAAE;gBACN,CAAC,GAAG,CAAC,CAAC;aACP;YACD,CAAC,GAAG,CAAC,CAAC;YAEN,IAAI,IAAI,KAAK,GAAG,EAAE;gBAChB,gBAAgB;gBAChB,kBAAkB;gBAClB,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,EAAE,EAAE;oBACN,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACX,CAAC,GAAG,CAAC,CAAC;oBACN,CAAC,GAAG,CAAC,CAAC;iBACP;qBAAM;oBACL,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACX,CAAC,GAAG,CAAC,CAAC;iBACP;aACF;iBAAM,IAAI,IAAI,KAAK,IAAI,EAAE;gBACxB,qDAAqD;gBACrD,mDAAmD;gBACnD,IAAI,GAAG,GAAG,CAAC;gBACX,IAAI,EAAE,EAAE;oBACN,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACZ;qBAAM;oBACL,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACZ;aACF;YAED,IAAI,IAAI,KAAK,GAAG,EAAE;gBAChB,EAAE,GAAG,IAAI,CAAC;aACX;YAED,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;SACpC;aAAM,IAAI,EAAE,EAAE;YACb,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;SAC1C;aAAM,IAAI,EAAE,EAAE;YACb,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;SAChD;QAED,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uHAAuH;AACvH,EAAE;AACF,iCAAiC;AACjC,oDAAoD;AACpD,gCAAgC;AAChC,SAAS,aAAa,CAAC,IAAY,EAAE,OAA0B;IAC7D,MAAM,CAAC,GAAG,kBAAkB,CAAC;IAC7B,OAAO,IAAI,CAAC,OAAO,CACjB,CAAC,EACD,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;QACpD,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;YACX,IAAI,GAAG,EAAE,CAAC;SACX;aAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;YAClB,IAAI,GAAG,KAAK,EAAE,OAAO,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SAC/D;aAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;YAClB,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACnE;aAAM,IAAI,GAAG,EAAE;YACd,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;SACpB;aAAM;YACL,IAAI,GAAG,KAAK,IAAI,GAAG,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SAC7D;QAED,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;YACX,EAAE,GAAG,EAAE,CAAC;SACT;aAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;YAClB,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC;SAC1B;aAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;YAClB,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;SAC9B;aAAM,IAAI,GAAG,EAAE;YACd,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;SACnC;aAAM,IAAI,OAAO,EAAE,iBAAiB,EAAE;YACrC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;SAClC;aAAM;YACL,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC;SAChB;QAED,OAAO,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC,CACF,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// 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.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?: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 =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\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-]+)*))?$/;\n\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\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 */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\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}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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: string[] = 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 } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = 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\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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 } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\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\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\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}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\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 */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\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: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\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 } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\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\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: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\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 } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\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\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\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\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\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\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 } else {\n m = +m + 1;\n p = 0;\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 } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\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: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/shimmer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/shimmer.d.ts new file mode 100644 index 0000000..0b00757 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/shimmer.d.ts @@ -0,0 +1,17 @@ +import { ShimWrapped } from './types'; +export declare const wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; +export declare const massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; +export declare const unwrap: (nodule: Nodule, name: keyof Nodule) => void; +export declare const massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +export interface ShimmerOptions { + logger?: typeof console.error; +} +declare function shimmer(options: ShimmerOptions): void; +declare namespace shimmer { + var wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; + var massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + var unwrap: (nodule: Nodule, name: keyof Nodule) => void; + var massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +} +export default shimmer; +//# sourceMappingURL=shimmer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js new file mode 100644 index 0000000..b378ec0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js @@ -0,0 +1,134 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.massUnwrap = exports.unwrap = exports.massWrap = exports.wrap = void 0; +// Default to complaining loudly when things don't go according to plan. +// eslint-disable-next-line no-console +let logger = console.error.bind(console); +// Sets a property on an object, preserving its enumerability. +// This function assumes that the property is already writable. +function defineProperty(obj, name, value) { + const enumerable = !!obj[name] && + Object.prototype.propertyIsEnumerable.call(obj, name); + Object.defineProperty(obj, name, { + configurable: true, + enumerable, + writable: true, + value, + }); +} +const wrap = (nodule, name, wrapper) => { + if (!nodule || !nodule[name]) { + logger('no original function ' + String(name) + ' to wrap'); + return; + } + if (!wrapper) { + logger('no wrapper function'); + logger(new Error().stack); + return; + } + const original = nodule[name]; + if (typeof original !== 'function' || typeof wrapper !== 'function') { + logger('original object and wrapper must be functions'); + return; + } + const wrapped = wrapper(original, name); + defineProperty(wrapped, '__original', original); + defineProperty(wrapped, '__unwrap', () => { + if (nodule[name] === wrapped) { + defineProperty(nodule, name, original); + } + }); + defineProperty(wrapped, '__wrapped', true); + defineProperty(nodule, name, wrapped); + return wrapped; +}; +exports.wrap = wrap; +const massWrap = (nodules, names, wrapper) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to wrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + (0, exports.wrap)(nodule, name, wrapper); + }); + }); +}; +exports.massWrap = massWrap; +const unwrap = (nodule, name) => { + if (!nodule || !nodule[name]) { + logger('no function to unwrap.'); + logger(new Error().stack); + return; + } + const wrapped = nodule[name]; + if (!wrapped.__unwrap) { + logger('no original to unwrap to -- has ' + + String(name) + + ' already been unwrapped?'); + } + else { + wrapped.__unwrap(); + return; + } +}; +exports.unwrap = unwrap; +const massUnwrap = (nodules, names) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to unwrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + (0, exports.unwrap)(nodule, name); + }); + }); +}; +exports.massUnwrap = massUnwrap; +function shimmer(options) { + if (options && options.logger) { + if (typeof options.logger !== 'function') { + logger("new logger isn't a function, not replacing"); + } + else { + logger = options.logger; + } + } +} +exports.default = shimmer; +shimmer.wrap = exports.wrap; +shimmer.massWrap = exports.massWrap; +shimmer.unwrap = exports.unwrap; +shimmer.massUnwrap = exports.massUnwrap; +//# sourceMappingURL=shimmer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js.map new file mode 100644 index 0000000..2e5181a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shimmer.js","sourceRoot":"","sources":["../../src/shimmer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\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 as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types.d.ts new file mode 100644 index 0000000..5cf7d03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types.d.ts @@ -0,0 +1,116 @@ +import { TracerProvider, MeterProvider, Span } from '@opentelemetry/api'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** Interface Instrumentation to apply patch. */ +export interface Instrumentation { + /** Instrumentation Name */ + instrumentationName: string; + /** Instrumentation Version */ + instrumentationVersion: string; + /** Method to disable the instrumentation */ + disable(): void; + /** Method to enable the instrumentation */ + enable(): void; + /** Method to set tracer provider */ + setTracerProvider(tracerProvider: TracerProvider): void; + /** Method to set meter provider */ + setMeterProvider(meterProvider: MeterProvider): void; + /** Method to set logger provider */ + setLoggerProvider?(loggerProvider: LoggerProvider): void; + /** Method to set instrumentation config */ + setConfig(config: ConfigType): void; + /** Method to get instrumentation config */ + getConfig(): ConfigType; +} +/** + * Base interface for configuration options common to all instrumentations. + * This interface can be extended by individual instrumentations to include + * additional configuration options specific to that instrumentation. + * All configuration options must be optional. + */ +export interface InstrumentationConfig { + /** + * Whether to enable the plugin. + * @default true + */ + enabled?: boolean; +} +/** + * This interface defines the params that are be added to the wrapped function + * using the "shimmer.wrap" + */ +export interface ShimWrapped extends Function { + __wrapped: boolean; + __unwrap: Function; + __original: Function; +} +export interface InstrumentationModuleFile { + /** Name of file to be patched with relative path */ + name: string; + moduleExports?: unknown; + /** Supported versions for the file. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with a function compatible + * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1). + * If the version is not supported, we won't apply instrumentation patch. + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Method to patch the instrumentation */ + patch(moduleExports: unknown, moduleVersion?: string): unknown; + /** Method to unpatch the instrumentation */ + unpatch(moduleExports?: unknown, moduleVersion?: string): void; +} +export interface InstrumentationModuleDefinition { + /** Module name or path */ + name: string; + moduleExports?: any; + /** Instrumented module version */ + moduleVersion?: string; + /** Supported version of module. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with the `satisfies` function of + * "The [semantic versioner](https://semver.org) for npm". + * If the version is not supported, we won't apply instrumentation patch (see `enable` method). + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Module internal files to be patched */ + files: InstrumentationModuleFile[]; + /** If set to true, the includePrerelease check will be included when calling semver.satisfies */ + includePrerelease?: boolean; + /** Method to patch the instrumentation */ + patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any + ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined; + /** Method to unpatch the instrumentation */ + unpatch?: ((moduleExports: any, moduleVersion?: string | undefined) => void) | undefined; +} +/** + * SpanCustomizationHook is a common way for instrumentations to expose extension points + * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle. + * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span, + * capture payloads, modify the span in some way, or carry some other side effect. + * + * The hook is registered with the instrumentation specific config by implementing an handler function with this signature, + * and if the hook is present, it will be called with the span and the event information + * when the event is emitted. + * + * When and under what conditions the hook is called and what data is passed + * in the info argument, is specific to each instrumentation and life-cycle event + * and should be documented where it is used. + * + * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events. + */ +export type SpanCustomizationHook = (span: Span, info: SpanCustomizationInfoType) => void; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types.js.map new file mode 100644 index 0000000..5764a6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider, Span } from '@opentelemetry/api';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/** Interface Instrumentation to apply patch. */\nexport interface Instrumentation<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> {\n /** Instrumentation Name */\n instrumentationName: string;\n\n /** Instrumentation Version */\n instrumentationVersion: string;\n\n /** Method to disable the instrumentation */\n disable(): void;\n\n /** Method to enable the instrumentation */\n enable(): void;\n\n /** Method to set tracer provider */\n setTracerProvider(tracerProvider: TracerProvider): void;\n\n /** Method to set meter provider */\n setMeterProvider(meterProvider: MeterProvider): void;\n\n /** Method to set logger provider */\n setLoggerProvider?(loggerProvider: LoggerProvider): void;\n\n /** Method to set instrumentation config */\n setConfig(config: ConfigType): void;\n\n /** Method to get instrumentation config */\n getConfig(): ConfigType;\n}\n\n/**\n * Base interface for configuration options common to all instrumentations.\n * This interface can be extended by individual instrumentations to include\n * additional configuration options specific to that instrumentation.\n * All configuration options must be optional.\n */\nexport interface InstrumentationConfig {\n /**\n * Whether to enable the plugin.\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * This interface defines the params that are be added to the wrapped function\n * using the \"shimmer.wrap\"\n */\nexport interface ShimWrapped extends Function {\n __wrapped: boolean;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __unwrap: Function;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __original: Function;\n}\n\nexport interface InstrumentationModuleFile {\n /** Name of file to be patched with relative path */\n name: string;\n\n moduleExports?: unknown;\n\n /** Supported versions for the file.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with a function compatible\n * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1).\n * If the version is not supported, we won't apply instrumentation patch.\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Method to patch the instrumentation */\n patch(moduleExports: unknown, moduleVersion?: string): unknown;\n\n /** Method to unpatch the instrumentation */\n unpatch(moduleExports?: unknown, moduleVersion?: string): void;\n}\n\nexport interface InstrumentationModuleDefinition {\n /** Module name or path */\n name: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports?: any;\n\n /** Instrumented module version */\n moduleVersion?: string;\n\n /** Supported version of module.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with the `satisfies` function of\n * \"The [semantic versioner](https://semver.org) for npm\".\n * If the version is not supported, we won't apply instrumentation patch (see `enable` method).\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Module internal files to be patched */\n files: InstrumentationModuleFile[];\n\n /** If set to true, the includePrerelease check will be included when calling semver.satisfies */\n includePrerelease?: boolean;\n\n /** Method to patch the instrumentation */\n patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined;\n\n /** Method to unpatch the instrumentation */\n unpatch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | ((moduleExports: any, moduleVersion?: string | undefined) => void)\n | undefined;\n}\n\n/**\n * SpanCustomizationHook is a common way for instrumentations to expose extension points\n * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle.\n * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span,\n * capture payloads, modify the span in some way, or carry some other side effect.\n *\n * The hook is registered with the instrumentation specific config by implementing an handler function with this signature,\n * and if the hook is present, it will be called with the span and the event information\n * when the event is emitted.\n *\n * When and under what conditions the hook is called and what data is passed\n * in the info argument, is specific to each instrumentation and life-cycle event\n * and should be documented where it is used.\n *\n * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events.\n */\nexport type SpanCustomizationHook = (\n span: Span,\n info: SpanCustomizationInfoType\n) => void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types_internal.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types_internal.d.ts new file mode 100644 index 0000000..d9dc97d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types_internal.d.ts @@ -0,0 +1,13 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +export interface AutoLoaderResult { + instrumentations: Instrumentation[]; +} +export interface AutoLoaderOptions { + instrumentations?: (Instrumentation | Instrumentation[])[]; + tracerProvider?: TracerProvider; + meterProvider?: MeterProvider; + loggerProvider?: LoggerProvider; +} +//# sourceMappingURL=types_internal.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js new file mode 100644 index 0000000..4b3e699 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types_internal.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js.map new file mode 100644 index 0000000..e3325ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types_internal.js","sourceRoot":"","sources":["../../src/types_internal.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\nexport interface AutoLoaderResult {\n instrumentations: Instrumentation[];\n}\n\nexport interface AutoLoaderOptions {\n instrumentations?: (Instrumentation | Instrumentation[])[];\n tracerProvider?: TracerProvider;\n meterProvider?: MeterProvider;\n loggerProvider?: LoggerProvider;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/utils.d.ts new file mode 100644 index 0000000..e550087 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/utils.d.ts @@ -0,0 +1,19 @@ +import { ShimWrapped } from './types'; +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddle(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => void, preventThrowingError?: boolean): T; +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddleAsync(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => Promise | void, preventThrowingError?: boolean): Promise; +/** + * Checks if certain function has been already wrapped + * @param func + */ +export declare function isWrapped(func: unknown): func is ShimWrapped; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/utils.js new file mode 100644 index 0000000..20f278b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/utils.js @@ -0,0 +1,80 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isWrapped = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = void 0; +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +function safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = execute(); + } + catch (e) { + error = e; + } + finally { + onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +exports.safeExecuteInTheMiddle = safeExecuteInTheMiddle; +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +async function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = await execute(); + } + catch (e) { + error = e; + } + finally { + await onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +exports.safeExecuteInTheMiddleAsync = safeExecuteInTheMiddleAsync; +/** + * Checks if certain function has been already wrapped + * @param func + */ +function isWrapped(func) { + return (typeof func === 'function' && + typeof func.__original === 'function' && + typeof func.__unwrap === 'function' && + func.__wrapped === true); +} +exports.isWrapped = isWrapped; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/utils.js.map new file mode 100644 index 0000000..fc4fab0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH;;;;GAIG;AACH,SAAgB,sBAAsB,CACpC,OAAgB,EAChB,QAA+D,EAC/D,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,OAAO,EAAE,CAAC;KACpB;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AApBD,wDAoBC;AAED;;;;GAIG;AACI,KAAK,UAAU,2BAA2B,CAC/C,OAAgB,EAChB,QAGyB,EACzB,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;KAC1B;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AAvBD,kEAuBC;AACD;;;GAGG;AACH,SAAgB,SAAS,CAAC,IAAa;IACrC,OAAO,CACL,OAAO,IAAI,KAAK,UAAU;QAC1B,OAAQ,IAAoB,CAAC,UAAU,KAAK,UAAU;QACtD,OAAQ,IAAoB,CAAC,QAAQ,KAAK,UAAU;QACnD,IAAoB,CAAC,SAAS,KAAK,IAAI,CACzC,CAAC;AACJ,CAAC;AAPD,8BAOC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ShimWrapped } from './types';\n\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 */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n\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 */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (\n e: Error | undefined,\n result: T | undefined\n ) => Promise | void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/version.d.ts new file mode 100644 index 0000000..f619f6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.211.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/version.js new file mode 100644 index 0000000..440c359 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '0.211.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/version.js.map new file mode 100644 index 0000000..99d92fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.211.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/hook.mjs b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/hook.mjs new file mode 100644 index 0000000..8ae481f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/hook.mjs @@ -0,0 +1,29 @@ +/*! + * Copyright 2021 Datadog, Inc. + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License. +// +// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc. + +import { + initialize, + load, + resolve, + getFormat, + getSource, +} from 'import-in-the-middle/hook.mjs'; +export { initialize, load, resolve, getFormat, getSource }; diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/package.json new file mode 100644 index 0000000..f0aa104 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/instrumentation/package.json @@ -0,0 +1,110 @@ +{ + "name": "@opentelemetry/instrumentation", + "version": "0.211.0", + "description": "Base class for node which OpenTelemetry instrumentation modules extend", + "author": "OpenTelemetry Authors", + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation", + "license": "Apache-2.0", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "types": "build/src/index.d.ts", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/open-telemetry/opentelemetry-js.git" + }, + "browser": { + "./src/platform/index.ts": "./src/platform/browser/index.ts", + "./build/esm/platform/index.js": "./build/esm/platform/browser/index.js", + "./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js", + "./build/src/platform/index.js": "./build/src/platform/browser/index.js" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "hook.mjs", + "doc", + "LICENSE", + "LICENSES/**/*", + "README.md" + ], + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "tdd": "npm run tdd:node", + "tdd:node": "npm run test -- --watch-extensions ts --watch", + "tdd:browser": "karma start", + "test:cjs": "nyc mocha 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", + "test:esm": "nyc node --experimental-loader=./hook.mjs ../../../node_modules/mocha/bin/mocha 'test/node/*.test.mjs'", + "test": "npm run test:cjs && npm run test:esm", + "test:browser": "karma start --single-run", + "version": "node ../../../scripts/version-update.js", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "prewatch": "node ../../../scripts/version-update.js", + "peer-api-check": "node ../../../scripts/peer-api-check.js", + "align-api-deps": "node ../../../scripts/align-api-deps.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "browser", + "tracing", + "profiling", + "metrics", + "stats" + ], + "bugs": { + "url": "https://github.com/open-telemetry/opentelemetry-js/issues" + }, + "dependencies": { + "@opentelemetry/api-logs": "0.211.0", + "import-in-the-middle": "^2.0.0", + "require-in-the-middle": "^8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@babel/core": "7.27.1", + "@babel/preset-env": "7.27.2", + "@opentelemetry/api": "1.9.0", + "@opentelemetry/sdk-metrics": "2.5.0", + "@types/mocha": "10.0.10", + "@types/node": "18.19.130", + "@types/sinon": "17.0.4", + "@types/webpack-env": "1.16.3", + "babel-loader": "10.0.0", + "babel-plugin-istanbul": "7.0.1", + "karma": "6.4.4", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "mocha": "11.7.5", + "nyc": "17.1.0", + "sinon": "18.0.1", + "ts-loader": "9.5.4", + "typescript": "5.0.4", + "webpack": "5.101.3", + "webpack-cli": "6.0.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "sideEffects": false, + "gitHead": "38924cbff2a6e924ce8a2a227d3a72de52fbcd35" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/README.md new file mode 100644 index 0000000..95ba85a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/README.md @@ -0,0 +1,6 @@ +# Redis Common Utils for OpenTelemetry redis packages + +This is an internal utils package used for the different redis instrumentations: + +1. ioredis +2. redis diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/src/index.d.ts new file mode 100644 index 0000000..20d3673 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/src/index.d.ts @@ -0,0 +1,11 @@ +/// +export type DbStatementSerializer = (cmdName: string, cmdArgs: Array) => string; +/** + * Given the redis command name and arguments, return a combination of the + * command name + the allowed arguments according to `serializationSubsets`. + * @param cmdName The redis command name + * @param cmdArgs The redis command arguments + * @returns a combination of the command name + args according to `serializationSubsets`. + */ +export declare const defaultDbStatementSerializer: DbStatementSerializer; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/src/index.js new file mode 100644 index 0000000..8593953 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/src/index.js @@ -0,0 +1,66 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultDbStatementSerializer = void 0; +/** + * List of regexes and the number of arguments that should be serialized for matching commands. + * For example, HSET should serialize which key and field it's operating on, but not its value. + * Setting the subset to -1 will serialize all arguments. + * Commands without a match will have their first argument serialized. + * + * Refer to https://redis.io/commands/ for the full list. + */ +const serializationSubsets = [ + { + 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, + }, +]; +/** + * Given the redis command name and arguments, return a combination of the + * command name + the allowed arguments according to `serializationSubsets`. + * @param cmdName The redis command name + * @param cmdArgs The redis command arguments + * @returns a combination of the command name + args according to `serializationSubsets`. + */ +const defaultDbStatementSerializer = (cmdName, cmdArgs) => { + if (Array.isArray(cmdArgs) && cmdArgs.length) { + const nArgsToSerialize = serializationSubsets.find(({ regex }) => { + return regex.test(cmdName); + })?.args ?? 0; + const argsToSerialize = nArgsToSerialize >= 0 ? cmdArgs.slice(0, nArgsToSerialize) : cmdArgs; + if (cmdArgs.length > argsToSerialize.length) { + argsToSerialize.push(`[${cmdArgs.length - nArgsToSerialize} other arguments]`); + } + return `${cmdName} ${argsToSerialize.join(' ')}`; + } + return cmdName; +}; +exports.defaultDbStatementSerializer = defaultDbStatementSerializer; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/src/index.js.map new file mode 100644 index 0000000..810b93f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG;IAC3B;QACE,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,CAAC;KACR;IACD;QACE,KAAK,EAAE,8DAA8D;QACrE,IAAI,EAAE,CAAC;KACR;IACD;QACE,KAAK,EAAE,6BAA6B;QACpC,IAAI,EAAE,CAAC;KACR;IACD;QACE,KAAK,EACH,kLAAkL;QACpL,IAAI,EAAE,CAAC,CAAC;KACT;CACF,CAAC;AAOF;;;;;;GAMG;AACI,MAAM,4BAA4B,GAA0B,CACjE,OAAO,EACP,OAAO,EACP,EAAE;IACF,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE;QAC5C,MAAM,gBAAgB,GACpB,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACtC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;QAChB,MAAM,eAAe,GACnB,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvE,IAAI,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE;YAC3C,eAAe,CAAC,IAAI,CAClB,IAAI,OAAO,CAAC,MAAM,GAAG,gBAAgB,mBAAmB,CACzD,CAAC;SACH;QACD,OAAO,GAAG,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;KAClD;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAnBW,QAAA,4BAA4B,gCAmBvC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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:\n /^(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\nexport type DbStatementSerializer = (\n cmdName: string,\n cmdArgs: Array\n) => string;\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 */\nexport const defaultDbStatementSerializer: DbStatementSerializer = (\n cmdName,\n cmdArgs\n) => {\n if (Array.isArray(cmdArgs) && cmdArgs.length) {\n const nArgsToSerialize =\n serializationSubsets.find(({ regex }) => {\n return regex.test(cmdName);\n })?.args ?? 0;\n const argsToSerialize =\n nArgsToSerialize >= 0 ? cmdArgs.slice(0, nArgsToSerialize) : cmdArgs;\n if (cmdArgs.length > argsToSerialize.length) {\n argsToSerialize.push(\n `[${cmdArgs.length - nArgsToSerialize} other arguments]`\n );\n }\n return `${cmdName} ${argsToSerialize.join(' ')}`;\n }\n return cmdName;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/test/redis-common.test.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/test/redis-common.test.d.ts new file mode 100644 index 0000000..b35aad5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/test/redis-common.test.d.ts @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=redis-common.test.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/test/redis-common.test.js b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/test/redis-common.test.js new file mode 100644 index 0000000..639cfca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/test/redis-common.test.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const index_1 = require("../src/index"); +const assert = require("assert"); +describe('#defaultDbStatementSerializer()', () => { + [ + { + cmdName: 'UNKNOWN', + cmdArgs: ['something'], + expected: 'UNKNOWN [1 other arguments]', + }, + { + cmdName: 'ECHO', + cmdArgs: ['echo'], + expected: 'ECHO [1 other arguments]', + }, + { + cmdName: 'LPUSH', + cmdArgs: ['list', 'value'], + expected: 'LPUSH list [1 other arguments]', + }, + { + cmdName: 'HSET', + cmdArgs: ['hash', 'field', 'value'], + expected: 'HSET hash field [1 other arguments]', + }, + { + cmdName: 'INCRBY', + cmdArgs: ['key', 5], + expected: 'INCRBY key 5', + }, + ].forEach(({ cmdName, cmdArgs, expected }) => { + it(`should serialize the correct number of arguments for ${cmdName}`, () => { + assert.strictEqual((0, index_1.defaultDbStatementSerializer)(cmdName, cmdArgs), expected); + }); + }); +}); +//# sourceMappingURL=redis-common.test.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/test/redis-common.test.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/test/redis-common.test.js.map new file mode 100644 index 0000000..b5bf12d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/build/test/redis-common.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"redis-common.test.js","sourceRoot":"","sources":["../../test/redis-common.test.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;GAcG;AACH,wCAA4D;AAC5D,iCAAiC;AAEjC,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C;QACE;YACE,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,CAAC,WAAW,CAAC;YACtB,QAAQ,EAAE,6BAA6B;SACxC;QACD;YACE,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,QAAQ,EAAE,0BAA0B;SACrC;QACD;YACE,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YAC1B,QAAQ,EAAE,gCAAgC;SAC3C;QACD;YACE,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;YACnC,QAAQ,EAAE,qCAAqC;SAChD;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YACnB,QAAQ,EAAE,cAAc;SACzB;KACF,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3C,EAAE,CAAC,wDAAwD,OAAO,EAAE,EAAE,GAAG,EAAE;YACzE,MAAM,CAAC,WAAW,CAChB,IAAA,oCAA4B,EAAC,OAAO,EAAE,OAAO,CAAC,EAC9C,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { defaultDbStatementSerializer } from '../src/index';\nimport * as assert from 'assert';\n\ndescribe('#defaultDbStatementSerializer()', () => {\n [\n {\n cmdName: 'UNKNOWN',\n cmdArgs: ['something'],\n expected: 'UNKNOWN [1 other arguments]',\n },\n {\n cmdName: 'ECHO',\n cmdArgs: ['echo'],\n expected: 'ECHO [1 other arguments]',\n },\n {\n cmdName: 'LPUSH',\n cmdArgs: ['list', 'value'],\n expected: 'LPUSH list [1 other arguments]',\n },\n {\n cmdName: 'HSET',\n cmdArgs: ['hash', 'field', 'value'],\n expected: 'HSET hash field [1 other arguments]',\n },\n {\n cmdName: 'INCRBY',\n cmdArgs: ['key', 5],\n expected: 'INCRBY key 5',\n },\n ].forEach(({ cmdName, cmdArgs, expected }) => {\n it(`should serialize the correct number of arguments for ${cmdName}`, () => {\n assert.strictEqual(\n defaultDbStatementSerializer(cmdName, cmdArgs),\n expected\n );\n });\n });\n});\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/package.json new file mode 100644 index 0000000..7ae0da7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/redis-common/package.json @@ -0,0 +1,49 @@ +{ + "name": "@opentelemetry/redis-common", + "version": "0.38.2", + "description": "Redis utilities for redis instrumentations", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "publishConfig": { + "access": "public" + }, + "scripts": { + "compile": "tsc --build tsconfig.json", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/redis-common", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "prepublishOnly": "npm run compile", + "test": "nyc mocha 'test/**/*.test.ts'", + "watch": "tsc -w" + }, + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/redis-common" + }, + "keywords": [ + "opentelemetry", + "redis-common" + ], + "files": [ + "build/**/*.js", + "build/**/*.js.map", + "build/**/*.d.ts" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "bugs": { + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib/issues" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/redis-common#readme", + "devDependencies": { + "@types/mocha": "^10.0.0", + "@types/node": "18.18.14", + "nyc": "17.1.0", + "typescript": "5.0.4" + }, + "gitHead": "5a5918fd4f9f16b14c9ef4d3de08ab98c20e5b46" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/resources/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/resources/README.md new file mode 100644 index 0000000..7ca5bcb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/README.md @@ -0,0 +1,49 @@ +# OpenTelemetry Resources Util + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +The OpenTelemetry Resource is an immutable representation of the entity producing telemetry. For example, a process producing telemetry that is running in a container on Kubernetes has a Pod name, it is in a namespace and possibly is part of a Deployment which also has a name. All three of these attributes can be included in the `Resource`. + +[This document][resource-semantic_conventions] defines standard attributes for resources which are accessible via [`@opentelemetry/semantic-conventions`](https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions). + +## Installation + +```bash +npm install --save @opentelemetry/resources +``` + +## Usage + +```typescript +import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; +import { resourceFromAttributes } from '@opentelemetry/resources'; + +const resource = resourceFromAttributes({ + [ATTR_SERVICE_NAME]: 'api-service', +}); + +const anotherResource = resourceFromAttributes({ + 'service.version': '2.0.0', + 'service.group': 'instrumentation-group' +}); +const mergedResource = resource.merge(anotherResource); +``` + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/resources +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fresources.svg + +[resource-semantic_conventions]: https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/resource/semantic_conventions diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/Resource.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/Resource.d.ts new file mode 100644 index 0000000..2870d9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/Resource.d.ts @@ -0,0 +1,46 @@ +import { Attributes } from '@opentelemetry/api'; +import { RawResourceAttribute } from './types'; +/** + * An interface that represents a resource. A Resource describes the entity for which signals (metrics or trace) are + * collected. + * + * This interface is NOT user-implementable. Valid ways to obtain a {@link Resource} are by using either of these functions + * - {@link resourceFromAttributes} + * - {@link emptyResource} + * - {@link defaultResource} + * - {@link detectResources} + */ +export interface Resource { + /** + * Check if async attributes have resolved. This is useful to avoid awaiting + * waitForAsyncAttributes (which will introduce asynchronous behavior) when not necessary. + * + * @returns true if the resource "attributes" property is not yet settled to its final value + */ + readonly asyncAttributesPending?: boolean; + /** + * @returns the Resource's attributes. + */ + readonly attributes: Attributes; + /** + * @returns the Resource's schema URL or undefined if not set. + */ + readonly schemaUrl?: string; + /** + * Returns a promise that will never be rejected. Resolves when all async attributes have finished being added to + * this Resource's attributes. This is useful in exporters to block until resource detection + * has finished. + */ + waitForAsyncAttributes?(): Promise; + /** + * Returns a new, merged {@link Resource} by merging the current Resource + * with the other Resource. In case of a collision, other Resource takes + * precedence. + * + * @param other the Resource that will be merged with this. + * @returns the newly merged Resource. + */ + merge(other: Resource | null): Resource; + getRawAttributes(): RawResourceAttribute[]; +} +//# sourceMappingURL=Resource.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/Resource.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/Resource.js new file mode 100644 index 0000000..c9fc3b4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/Resource.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Resource.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/Resource.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/Resource.js.map new file mode 100644 index 0000000..855807a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/Resource.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Resource.js","sourceRoot":"","sources":["../../src/Resource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes } from '@opentelemetry/api';\nimport { RawResourceAttribute } from './types';\n\n/**\n * An interface that represents a resource. A Resource describes the entity for which signals (metrics or trace) are\n * collected.\n *\n * This interface is NOT user-implementable. Valid ways to obtain a {@link Resource} are by using either of these functions\n * - {@link resourceFromAttributes}\n * - {@link emptyResource}\n * - {@link defaultResource}\n * - {@link detectResources}\n */\nexport interface Resource {\n /**\n * Check if async attributes have resolved. This is useful to avoid awaiting\n * waitForAsyncAttributes (which will introduce asynchronous behavior) when not necessary.\n *\n * @returns true if the resource \"attributes\" property is not yet settled to its final value\n */\n readonly asyncAttributesPending?: boolean;\n\n /**\n * @returns the Resource's attributes.\n */\n readonly attributes: Attributes;\n\n /**\n * @returns the Resource's schema URL or undefined if not set.\n */\n readonly schemaUrl?: string;\n\n /**\n * Returns a promise that will never be rejected. Resolves when all async attributes have finished being added to\n * this Resource's attributes. This is useful in exporters to block until resource detection\n * has finished.\n */\n waitForAsyncAttributes?(): Promise;\n\n /**\n * Returns a new, merged {@link Resource} by merging the current Resource\n * with the other Resource. In case of a collision, other Resource takes\n * precedence.\n *\n * @param other the Resource that will be merged with this.\n * @returns the newly merged Resource.\n */\n merge(other: Resource | null): Resource;\n\n getRawAttributes(): RawResourceAttribute[];\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/ResourceImpl.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/ResourceImpl.d.ts new file mode 100644 index 0000000..6c7af7a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/ResourceImpl.d.ts @@ -0,0 +1,7 @@ +import { Resource } from './Resource'; +import { DetectedResource, DetectedResourceAttributes, ResourceOptions } from './types'; +export declare function resourceFromAttributes(attributes: DetectedResourceAttributes, options?: ResourceOptions): Resource; +export declare function resourceFromDetectedResource(detectedResource: DetectedResource, options?: ResourceOptions): Resource; +export declare function emptyResource(): Resource; +export declare function defaultResource(): Resource; +//# sourceMappingURL=ResourceImpl.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/ResourceImpl.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/ResourceImpl.js new file mode 100644 index 0000000..1b4c6f8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/ResourceImpl.js @@ -0,0 +1,160 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { SDK_INFO } from '@opentelemetry/core'; +import { ATTR_SERVICE_NAME, ATTR_TELEMETRY_SDK_LANGUAGE, ATTR_TELEMETRY_SDK_NAME, ATTR_TELEMETRY_SDK_VERSION, } from '@opentelemetry/semantic-conventions'; +import { defaultServiceName } from './default-service-name'; +import { isPromiseLike } from './utils'; +class ResourceImpl { + _rawAttributes; + _asyncAttributesPending = false; + _schemaUrl; + _memoizedAttributes; + static FromAttributeList(attributes, options) { + const res = new ResourceImpl({}, options); + res._rawAttributes = guardedRawAttributes(attributes); + res._asyncAttributesPending = + attributes.filter(([_, val]) => isPromiseLike(val)).length > 0; + return res; + } + constructor( + /** + * A dictionary of attributes with string keys and values that provide + * information about the entity as numbers, strings or booleans + * TODO: Consider to add check/validation on attributes. + */ + resource, options) { + const attributes = resource.attributes ?? {}; + this._rawAttributes = Object.entries(attributes).map(([k, v]) => { + if (isPromiseLike(v)) { + // side-effect + this._asyncAttributesPending = true; + } + return [k, v]; + }); + this._rawAttributes = guardedRawAttributes(this._rawAttributes); + this._schemaUrl = validateSchemaUrl(options?.schemaUrl); + } + get asyncAttributesPending() { + return this._asyncAttributesPending; + } + async waitForAsyncAttributes() { + if (!this.asyncAttributesPending) { + return; + } + for (let i = 0; i < this._rawAttributes.length; i++) { + const [k, v] = this._rawAttributes[i]; + this._rawAttributes[i] = [k, isPromiseLike(v) ? await v : v]; + } + this._asyncAttributesPending = false; + } + get attributes() { + if (this.asyncAttributesPending) { + diag.error('Accessing resource attributes before async attributes settled'); + } + if (this._memoizedAttributes) { + return this._memoizedAttributes; + } + const attrs = {}; + for (const [k, v] of this._rawAttributes) { + if (isPromiseLike(v)) { + diag.debug(`Unsettled resource attribute ${k} skipped`); + continue; + } + if (v != null) { + attrs[k] ??= v; + } + } + // only memoize output if all attributes are settled + if (!this._asyncAttributesPending) { + this._memoizedAttributes = attrs; + } + return attrs; + } + getRawAttributes() { + return this._rawAttributes; + } + get schemaUrl() { + return this._schemaUrl; + } + merge(resource) { + if (resource == null) + return this; + // Order is important + // Spec states incoming attributes override existing attributes + const mergedSchemaUrl = mergeSchemaUrl(this, resource); + const mergedOptions = mergedSchemaUrl + ? { schemaUrl: mergedSchemaUrl } + : undefined; + return ResourceImpl.FromAttributeList([...resource.getRawAttributes(), ...this.getRawAttributes()], mergedOptions); + } +} +export function resourceFromAttributes(attributes, options) { + return ResourceImpl.FromAttributeList(Object.entries(attributes), options); +} +export function resourceFromDetectedResource(detectedResource, options) { + return new ResourceImpl(detectedResource, options); +} +export function emptyResource() { + return resourceFromAttributes({}); +} +export function defaultResource() { + return resourceFromAttributes({ + [ATTR_SERVICE_NAME]: defaultServiceName(), + [ATTR_TELEMETRY_SDK_LANGUAGE]: SDK_INFO[ATTR_TELEMETRY_SDK_LANGUAGE], + [ATTR_TELEMETRY_SDK_NAME]: SDK_INFO[ATTR_TELEMETRY_SDK_NAME], + [ATTR_TELEMETRY_SDK_VERSION]: SDK_INFO[ATTR_TELEMETRY_SDK_VERSION], + }); +} +function guardedRawAttributes(attributes) { + return attributes.map(([k, v]) => { + if (isPromiseLike(v)) { + return [ + k, + v.catch(err => { + diag.debug('promise rejection for resource attribute: %s - %s', k, err); + return undefined; + }), + ]; + } + return [k, v]; + }); +} +function validateSchemaUrl(schemaUrl) { + if (typeof schemaUrl === 'string' || schemaUrl === undefined) { + return schemaUrl; + } + diag.warn('Schema URL must be string or undefined, got %s. Schema URL will be ignored.', schemaUrl); + return undefined; +} +function mergeSchemaUrl(old, updating) { + const oldSchemaUrl = old?.schemaUrl; + const updatingSchemaUrl = updating?.schemaUrl; + const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === ''; + const isUpdatingEmpty = updatingSchemaUrl === undefined || updatingSchemaUrl === ''; + if (isOldEmpty) { + return updatingSchemaUrl; + } + if (isUpdatingEmpty) { + return oldSchemaUrl; + } + if (oldSchemaUrl === updatingSchemaUrl) { + return oldSchemaUrl; + } + diag.warn('Schema URL merge conflict: old resource has "%s", updating resource has "%s". Resulting resource will have undefined Schema URL.', oldSchemaUrl, updatingSchemaUrl); + return undefined; +} +//# sourceMappingURL=ResourceImpl.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/ResourceImpl.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/ResourceImpl.js.map new file mode 100644 index 0000000..2243dda --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/ResourceImpl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ResourceImpl.js","sourceRoot":"","sources":["../../src/ResourceImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, AttributeValue, diag } from '@opentelemetry/api';\nimport { SDK_INFO } from '@opentelemetry/core';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { Resource } from './Resource';\nimport { defaultServiceName } from './default-service-name';\nimport {\n DetectedResource,\n DetectedResourceAttributes,\n MaybePromise,\n RawResourceAttribute,\n ResourceOptions,\n} from './types';\nimport { isPromiseLike } from './utils';\n\nclass ResourceImpl implements Resource {\n private _rawAttributes: RawResourceAttribute[];\n private _asyncAttributesPending = false;\n private _schemaUrl?: string;\n\n private _memoizedAttributes?: Attributes;\n\n static FromAttributeList(\n attributes: [string, MaybePromise][],\n options?: ResourceOptions\n ): Resource {\n const res = new ResourceImpl({}, options);\n res._rawAttributes = guardedRawAttributes(attributes);\n res._asyncAttributesPending =\n attributes.filter(([_, val]) => isPromiseLike(val)).length > 0;\n return res;\n }\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: DetectedResource,\n options?: ResourceOptions\n ) {\n const attributes = resource.attributes ?? {};\n this._rawAttributes = Object.entries(attributes).map(([k, v]) => {\n if (isPromiseLike(v)) {\n // side-effect\n this._asyncAttributesPending = true;\n }\n\n return [k, v];\n });\n\n this._rawAttributes = guardedRawAttributes(this._rawAttributes);\n this._schemaUrl = validateSchemaUrl(options?.schemaUrl);\n }\n\n public get asyncAttributesPending(): boolean {\n return this._asyncAttributesPending;\n }\n\n public async waitForAsyncAttributes(): Promise {\n if (!this.asyncAttributesPending) {\n return;\n }\n\n for (let i = 0; i < this._rawAttributes.length; i++) {\n const [k, v] = this._rawAttributes[i];\n this._rawAttributes[i] = [k, isPromiseLike(v) ? await v : v];\n }\n\n this._asyncAttributesPending = false;\n }\n\n public get attributes(): Attributes {\n if (this.asyncAttributesPending) {\n diag.error(\n 'Accessing resource attributes before async attributes settled'\n );\n }\n\n if (this._memoizedAttributes) {\n return this._memoizedAttributes;\n }\n\n const attrs: Attributes = {};\n for (const [k, v] of this._rawAttributes) {\n if (isPromiseLike(v)) {\n diag.debug(`Unsettled resource attribute ${k} skipped`);\n continue;\n }\n if (v != null) {\n attrs[k] ??= v;\n }\n }\n\n // only memoize output if all attributes are settled\n if (!this._asyncAttributesPending) {\n this._memoizedAttributes = attrs;\n }\n\n return attrs;\n }\n\n public getRawAttributes(): RawResourceAttribute[] {\n return this._rawAttributes;\n }\n\n public get schemaUrl(): string | undefined {\n return this._schemaUrl;\n }\n\n public merge(resource: Resource | null): Resource {\n if (resource == null) return this;\n\n // Order is important\n // Spec states incoming attributes override existing attributes\n const mergedSchemaUrl = mergeSchemaUrl(this, resource);\n const mergedOptions: ResourceOptions | undefined = mergedSchemaUrl\n ? { schemaUrl: mergedSchemaUrl }\n : undefined;\n\n return ResourceImpl.FromAttributeList(\n [...resource.getRawAttributes(), ...this.getRawAttributes()],\n mergedOptions\n );\n }\n}\n\nexport function resourceFromAttributes(\n attributes: DetectedResourceAttributes,\n options?: ResourceOptions\n): Resource {\n return ResourceImpl.FromAttributeList(Object.entries(attributes), options);\n}\n\nexport function resourceFromDetectedResource(\n detectedResource: DetectedResource,\n options?: ResourceOptions\n): Resource {\n return new ResourceImpl(detectedResource, options);\n}\n\nexport function emptyResource(): Resource {\n return resourceFromAttributes({});\n}\n\nexport function defaultResource(): Resource {\n return resourceFromAttributes({\n [ATTR_SERVICE_NAME]: defaultServiceName(),\n [ATTR_TELEMETRY_SDK_LANGUAGE]: SDK_INFO[ATTR_TELEMETRY_SDK_LANGUAGE],\n [ATTR_TELEMETRY_SDK_NAME]: SDK_INFO[ATTR_TELEMETRY_SDK_NAME],\n [ATTR_TELEMETRY_SDK_VERSION]: SDK_INFO[ATTR_TELEMETRY_SDK_VERSION],\n });\n}\n\nfunction guardedRawAttributes(\n attributes: RawResourceAttribute[]\n): RawResourceAttribute[] {\n return attributes.map(([k, v]) => {\n if (isPromiseLike(v)) {\n return [\n k,\n v.catch(err => {\n diag.debug(\n 'promise rejection for resource attribute: %s - %s',\n k,\n err\n );\n return undefined;\n }),\n ];\n }\n return [k, v];\n });\n}\n\nfunction validateSchemaUrl(schemaUrl?: string): string | undefined {\n if (typeof schemaUrl === 'string' || schemaUrl === undefined) {\n return schemaUrl;\n }\n\n diag.warn(\n 'Schema URL must be string or undefined, got %s. Schema URL will be ignored.',\n schemaUrl\n );\n\n return undefined;\n}\n\nfunction mergeSchemaUrl(\n old: Resource,\n updating: Resource | null\n): string | undefined {\n const oldSchemaUrl = old?.schemaUrl;\n const updatingSchemaUrl = updating?.schemaUrl;\n\n const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === '';\n const isUpdatingEmpty =\n updatingSchemaUrl === undefined || updatingSchemaUrl === '';\n\n if (isOldEmpty) {\n return updatingSchemaUrl;\n }\n\n if (isUpdatingEmpty) {\n return oldSchemaUrl;\n }\n\n if (oldSchemaUrl === updatingSchemaUrl) {\n return oldSchemaUrl;\n }\n\n diag.warn(\n 'Schema URL merge conflict: old resource has \"%s\", updating resource has \"%s\". Resulting resource will have undefined Schema URL.',\n oldSchemaUrl,\n updatingSchemaUrl\n );\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/config.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/config.d.ts new file mode 100644 index 0000000..6858bd8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/config.d.ts @@ -0,0 +1,8 @@ +import type { ResourceDetector } from './types'; +/** + * ResourceDetectionConfig provides an interface for configuring resource auto-detection. + */ +export interface ResourceDetectionConfig { + detectors?: Array; +} +//# sourceMappingURL=config.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/config.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/config.js new file mode 100644 index 0000000..6c92201 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/config.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/config.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/config.js.map new file mode 100644 index 0000000..676c7e7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/config.js.map @@ -0,0 +1 @@ +{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { ResourceDetector } from './types';\n\n/**\n * ResourceDetectionConfig provides an interface for configuring resource auto-detection.\n */\nexport interface ResourceDetectionConfig {\n detectors?: Array;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/default-service-name.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/default-service-name.d.ts new file mode 100644 index 0000000..d39946b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/default-service-name.d.ts @@ -0,0 +1,9 @@ +/** + * Returns the default service name for OpenTelemetry resources. + * In Node.js environments, returns "unknown_service:". + * In browser/edge environments, returns "unknown_service". + */ +export declare function defaultServiceName(): string; +/** @internal For testing purposes only */ +export declare function _clearDefaultServiceNameCache(): void; +//# sourceMappingURL=default-service-name.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/default-service-name.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/default-service-name.js new file mode 100644 index 0000000..ebf6c17 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/default-service-name.js @@ -0,0 +1,38 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +let serviceName; +/** + * Returns the default service name for OpenTelemetry resources. + * In Node.js environments, returns "unknown_service:". + * In browser/edge environments, returns "unknown_service". + */ +export function defaultServiceName() { + if (serviceName === undefined) { + try { + const argv0 = globalThis.process.argv0; + serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service'; + } + catch { + serviceName = 'unknown_service'; + } + } + return serviceName; +} +/** @internal For testing purposes only */ +export function _clearDefaultServiceNameCache() { + serviceName = undefined; +} +//# sourceMappingURL=default-service-name.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/default-service-name.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/default-service-name.js.map new file mode 100644 index 0000000..c39a386 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/default-service-name.js.map @@ -0,0 +1 @@ +{"version":3,"file":"default-service-name.js","sourceRoot":"","sources":["../../src/default-service-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,IAAI,WAA+B,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,WAAW,KAAK,SAAS,EAAE;QAC7B,IAAI;YACF,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YACvC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;SACtE;QAAC,MAAM;YACN,WAAW,GAAG,iBAAiB,CAAC;SACjC;KACF;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,6BAA6B;IAC3C,WAAW,GAAG,SAAS,CAAC;AAC1B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nlet serviceName: string | undefined;\n\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 */\nexport function defaultServiceName(): string {\n if (serviceName === undefined) {\n try {\n const argv0 = globalThis.process.argv0;\n serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service';\n } catch {\n serviceName = 'unknown_service';\n }\n }\n return serviceName;\n}\n\n/** @internal For testing purposes only */\nexport function _clearDefaultServiceNameCache(): void {\n serviceName = undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detect-resources.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detect-resources.d.ts new file mode 100644 index 0000000..a796f9e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detect-resources.d.ts @@ -0,0 +1,9 @@ +import { Resource } from './Resource'; +import { ResourceDetectionConfig } from './config'; +/** + * Runs all resource detectors and returns the results merged into a single Resource. + * + * @param config Configuration for resource detection + */ +export declare const detectResources: (config?: ResourceDetectionConfig) => Resource; +//# sourceMappingURL=detect-resources.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detect-resources.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detect-resources.js new file mode 100644 index 0000000..20831db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detect-resources.js @@ -0,0 +1,37 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { emptyResource, resourceFromDetectedResource } from './ResourceImpl'; +/** + * Runs all resource detectors and returns the results merged into a single Resource. + * + * @param config Configuration for resource detection + */ +export const detectResources = (config = {}) => { + const resources = (config.detectors || []).map(d => { + try { + const resource = resourceFromDetectedResource(d.detect(config)); + diag.debug(`${d.constructor.name} found resource.`, resource); + return resource; + } + catch (e) { + diag.debug(`${d.constructor.name} failed: ${e.message}`); + return emptyResource(); + } + }); + return resources.reduce((acc, resource) => acc.merge(resource), emptyResource()); +}; +//# sourceMappingURL=detect-resources.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detect-resources.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detect-resources.js.map new file mode 100644 index 0000000..c741989 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detect-resources.js.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-resources.js","sourceRoot":"","sources":["../../src/detect-resources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAG7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,SAAkC,EAAE,EAC1B,EAAE;IACZ,MAAM,SAAS,GAAe,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7D,IAAI;YACF,MAAM,QAAQ,GAAG,4BAA4B,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAC9D,OAAO,QAAQ,CAAC;SACjB;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,OAAO,aAAa,EAAE,CAAC;SACxB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EACtC,aAAa,EAAE,CAChB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\nimport { Resource } from './Resource';\nimport { emptyResource, resourceFromDetectedResource } from './ResourceImpl';\nimport { ResourceDetectionConfig } from './config';\n\n/**\n * Runs all resource detectors and returns the results merged into a single Resource.\n *\n * @param config Configuration for resource detection\n */\nexport const detectResources = (\n config: ResourceDetectionConfig = {}\n): Resource => {\n const resources: Resource[] = (config.detectors || []).map(d => {\n try {\n const resource = resourceFromDetectedResource(d.detect(config));\n diag.debug(`${d.constructor.name} found resource.`, resource);\n return resource;\n } catch (e) {\n diag.debug(`${d.constructor.name} failed: ${e.message}`);\n return emptyResource();\n }\n });\n\n return resources.reduce(\n (acc, resource) => acc.merge(resource),\n emptyResource()\n );\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/EnvDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/EnvDetector.d.ts new file mode 100644 index 0000000..a365a1a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/EnvDetector.d.ts @@ -0,0 +1,56 @@ +import { ResourceDetectionConfig } from '../config'; +import { DetectedResource, ResourceDetector } from '../types'; +/** + * EnvDetector can be used to detect the presence of and create a Resource + * from the OTEL_RESOURCE_ATTRIBUTES environment variable. + */ +declare class EnvDetector implements ResourceDetector { + private readonly _MAX_LENGTH; + private readonly _COMMA_SEPARATOR; + private readonly _LABEL_KEY_VALUE_SPLITTER; + private readonly _ERROR_MESSAGE_INVALID_CHARS; + private readonly _ERROR_MESSAGE_INVALID_VALUE; + /** + * Returns a {@link Resource} populated with attributes from the + * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async + * function to conform to the Detector interface. + * + * @param config The resource detection config + */ + detect(_config?: ResourceDetectionConfig): DetectedResource; + /** + * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment + * variable. + * + * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes describing + * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and + * paths are accepted as attribute keys. Values may be quoted or unquoted in + * general. If a value contains whitespace, =, or " characters, it must + * always be quoted. + * + * @param rawEnvAttributes The resource attributes as a comma-separated list + * of key/value pairs. + * @returns The sanitized resource attributes. + */ + private _parseResourceAttributes; + /** + * Determines whether the given String is a valid printable ASCII string with + * a length not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid. + */ + private _isValid; + private _isBaggageOctetString; + /** + * Determines whether the given String is a valid printable ASCII string with + * a length greater than 0 and not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid and not empty. + */ + private _isValidAndNotEmpty; +} +export declare const envDetector: EnvDetector; +export {}; +//# sourceMappingURL=EnvDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/EnvDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/EnvDetector.js new file mode 100644 index 0000000..ff8bf05 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/EnvDetector.js @@ -0,0 +1,131 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; +import { getStringFromEnv } from '@opentelemetry/core'; +/** + * EnvDetector can be used to detect the presence of and create a Resource + * from the OTEL_RESOURCE_ATTRIBUTES environment variable. + */ +class EnvDetector { + // Type, attribute keys, and attribute values should not exceed 256 characters. + _MAX_LENGTH = 255; + // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes. + _COMMA_SEPARATOR = ','; + // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='. + _LABEL_KEY_VALUE_SPLITTER = '='; + _ERROR_MESSAGE_INVALID_CHARS = 'should be a ASCII string with a length greater than 0 and not exceed ' + + this._MAX_LENGTH + + ' characters.'; + _ERROR_MESSAGE_INVALID_VALUE = 'should be a ASCII string with a length not exceed ' + + this._MAX_LENGTH + + ' characters.'; + /** + * Returns a {@link Resource} populated with attributes from the + * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async + * function to conform to the Detector interface. + * + * @param config The resource detection config + */ + detect(_config) { + const attributes = {}; + const rawAttributes = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES'); + const serviceName = getStringFromEnv('OTEL_SERVICE_NAME'); + if (rawAttributes) { + try { + const parsedAttributes = this._parseResourceAttributes(rawAttributes); + Object.assign(attributes, parsedAttributes); + } + catch (e) { + diag.debug(`EnvDetector failed: ${e.message}`); + } + } + if (serviceName) { + attributes[ATTR_SERVICE_NAME] = serviceName; + } + return { attributes }; + } + /** + * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment + * variable. + * + * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes describing + * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and + * paths are accepted as attribute keys. Values may be quoted or unquoted in + * general. If a value contains whitespace, =, or " characters, it must + * always be quoted. + * + * @param rawEnvAttributes The resource attributes as a comma-separated list + * of key/value pairs. + * @returns The sanitized resource attributes. + */ + _parseResourceAttributes(rawEnvAttributes) { + if (!rawEnvAttributes) + return {}; + const attributes = {}; + const rawAttributes = rawEnvAttributes.split(this._COMMA_SEPARATOR, -1); + for (const rawAttribute of rawAttributes) { + const keyValuePair = rawAttribute.split(this._LABEL_KEY_VALUE_SPLITTER, -1); + if (keyValuePair.length !== 2) { + continue; + } + let [key, value] = keyValuePair; + // Leading and trailing whitespaces are trimmed. + key = key.trim(); + value = value.trim().split(/^"|"$/).join(''); + if (!this._isValidAndNotEmpty(key)) { + throw new Error(`Attribute key ${this._ERROR_MESSAGE_INVALID_CHARS}`); + } + if (!this._isValid(value)) { + throw new Error(`Attribute value ${this._ERROR_MESSAGE_INVALID_VALUE}`); + } + attributes[key] = decodeURIComponent(value); + } + return attributes; + } + /** + * Determines whether the given String is a valid printable ASCII string with + * a length not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid. + */ + _isValid(name) { + return name.length <= this._MAX_LENGTH && this._isBaggageOctetString(name); + } + // https://www.w3.org/TR/baggage/#definition + _isBaggageOctetString(str) { + for (let i = 0; i < str.length; i++) { + const ch = str.charCodeAt(i); + if (ch < 0x21 || ch === 0x2c || ch === 0x3b || ch === 0x5c || ch > 0x7e) { + return false; + } + } + return true; + } + /** + * Determines whether the given String is a valid printable ASCII string with + * a length greater than 0 and not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid and not empty. + */ + _isValidAndNotEmpty(str) { + return str.length > 0 && this._isValid(str); + } +} +export const envDetector = new EnvDetector(); +//# sourceMappingURL=EnvDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/EnvDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/EnvDetector.js.map new file mode 100644 index 0000000..a683700 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/EnvDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"EnvDetector.js","sourceRoot":"","sources":["../../../src/detectors/EnvDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAc,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW;IACf,+EAA+E;IAC9D,WAAW,GAAG,GAAG,CAAC;IAEnC,oEAAoE;IACnD,gBAAgB,GAAG,GAAG,CAAC;IAExC,qEAAqE;IACpD,yBAAyB,GAAG,GAAG,CAAC;IAEhC,4BAA4B,GAC3C,uEAAuE;QACvE,IAAI,CAAC,WAAW;QAChB,cAAc,CAAC;IAEA,4BAA4B,GAC3C,oDAAoD;QACpD,IAAI,CAAC,WAAW;QAChB,cAAc,CAAC;IAEjB;;;;;;OAMG;IACH,MAAM,CAAC,OAAiC;QACtC,MAAM,UAAU,GAAe,EAAE,CAAC;QAElC,MAAM,aAAa,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QAE1D,IAAI,aAAa,EAAE;YACjB,IAAI;gBACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;gBACtE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;aAC7C;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;aAChD;SACF;QAED,IAAI,WAAW,EAAE;YACf,UAAU,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC;SAC7C;QAED,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,wBAAwB,CAAC,gBAAyB;QACxD,IAAI,CAAC,gBAAgB;YAAE,OAAO,EAAE,CAAC;QAEjC,MAAM,UAAU,GAAe,EAAE,CAAC;QAClC,MAAM,aAAa,GAAa,gBAAgB,CAAC,KAAK,CACpD,IAAI,CAAC,gBAAgB,EACrB,CAAC,CAAC,CACH,CAAC;QACF,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;YACxC,MAAM,YAAY,GAAa,YAAY,CAAC,KAAK,CAC/C,IAAI,CAAC,yBAAyB,EAC9B,CAAC,CAAC,CACH,CAAC;YACF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,SAAS;aACV;YACD,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC;YAChC,gDAAgD;YAChD,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;aACvE;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;aACzE;YACD,UAAU,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAC7C;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACK,QAAQ,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,4CAA4C;IACpC,qBAAqB,CAAC,GAAW;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE;gBACvE,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB,CAAC,GAAW;QACrC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, diag } from '@opentelemetry/api';\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport { ResourceDetectionConfig } from '../config';\nimport { DetectedResource, ResourceDetector } from '../types';\nimport { getStringFromEnv } from '@opentelemetry/core';\n\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 implements ResourceDetector {\n // Type, attribute keys, and attribute values should not exceed 256 characters.\n private readonly _MAX_LENGTH = 255;\n\n // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes.\n private readonly _COMMA_SEPARATOR = ',';\n\n // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='.\n private readonly _LABEL_KEY_VALUE_SPLITTER = '=';\n\n private readonly _ERROR_MESSAGE_INVALID_CHARS =\n 'should be a ASCII string with a length greater than 0 and not exceed ' +\n this._MAX_LENGTH +\n ' characters.';\n\n private readonly _ERROR_MESSAGE_INVALID_VALUE =\n 'should be a ASCII string with a length not exceed ' +\n this._MAX_LENGTH +\n ' characters.';\n\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?: ResourceDetectionConfig): DetectedResource {\n const attributes: Attributes = {};\n\n const rawAttributes = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n const serviceName = getStringFromEnv('OTEL_SERVICE_NAME');\n\n if (rawAttributes) {\n try {\n const parsedAttributes = this._parseResourceAttributes(rawAttributes);\n Object.assign(attributes, parsedAttributes);\n } catch (e) {\n diag.debug(`EnvDetector failed: ${e.message}`);\n }\n }\n\n if (serviceName) {\n attributes[ATTR_SERVICE_NAME] = serviceName;\n }\n\n return { attributes };\n }\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 describing\n * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and\n * paths are accepted as attribute keys. Values may be quoted or unquoted in\n * general. If a value contains whitespace, =, or \" characters, it must\n * always be quoted.\n *\n * @param rawEnvAttributes The resource attributes as a comma-separated list\n * of key/value pairs.\n * @returns The sanitized resource attributes.\n */\n private _parseResourceAttributes(rawEnvAttributes?: string): Attributes {\n if (!rawEnvAttributes) return {};\n\n const attributes: Attributes = {};\n const rawAttributes: string[] = rawEnvAttributes.split(\n this._COMMA_SEPARATOR,\n -1\n );\n for (const rawAttribute of rawAttributes) {\n const keyValuePair: string[] = rawAttribute.split(\n this._LABEL_KEY_VALUE_SPLITTER,\n -1\n );\n if (keyValuePair.length !== 2) {\n continue;\n }\n let [key, value] = keyValuePair;\n // Leading and trailing whitespaces are trimmed.\n key = key.trim();\n value = value.trim().split(/^\"|\"$/).join('');\n if (!this._isValidAndNotEmpty(key)) {\n throw new Error(`Attribute key ${this._ERROR_MESSAGE_INVALID_CHARS}`);\n }\n if (!this._isValid(value)) {\n throw new Error(`Attribute value ${this._ERROR_MESSAGE_INVALID_VALUE}`);\n }\n attributes[key] = decodeURIComponent(value);\n }\n return attributes;\n }\n\n /**\n * Determines whether the given String is a valid printable ASCII string with\n * a length not exceed _MAX_LENGTH characters.\n *\n * @param str The String to be validated.\n * @returns Whether the String is valid.\n */\n private _isValid(name: string): boolean {\n return name.length <= this._MAX_LENGTH && this._isBaggageOctetString(name);\n }\n\n // https://www.w3.org/TR/baggage/#definition\n private _isBaggageOctetString(str: string): boolean {\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n if (ch < 0x21 || ch === 0x2c || ch === 0x3b || ch === 0x5c || ch > 0x7e) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Determines whether the given String is a valid printable ASCII string with\n * a length greater than 0 and not exceed _MAX_LENGTH characters.\n *\n * @param str The String to be validated.\n * @returns Whether the String is valid and not empty.\n */\n private _isValidAndNotEmpty(str: string): boolean {\n return str.length > 0 && this._isValid(str);\n }\n}\n\nexport const envDetector = new EnvDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/NoopDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/NoopDetector.d.ts new file mode 100644 index 0000000..52ec701 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/NoopDetector.d.ts @@ -0,0 +1,6 @@ +import { DetectedResource, ResourceDetector } from '../types'; +export declare class NoopDetector implements ResourceDetector { + detect(): DetectedResource; +} +export declare const noopDetector: NoopDetector; +//# sourceMappingURL=NoopDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/NoopDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/NoopDetector.js new file mode 100644 index 0000000..dae16b5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/NoopDetector.js @@ -0,0 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class NoopDetector { + detect() { + return { + attributes: {}, + }; + } +} +export const noopDetector = new NoopDetector(); +//# sourceMappingURL=NoopDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/NoopDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/NoopDetector.js.map new file mode 100644 index 0000000..1a25402 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/NoopDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopDetector.js","sourceRoot":"","sources":["../../../src/detectors/NoopDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,OAAO,YAAY;IACvB,MAAM;QACJ,OAAO;YACL,UAAU,EAAE,EAAE;SACf,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DetectedResource, ResourceDetector } from '../types';\n\nexport class NoopDetector implements ResourceDetector {\n detect(): DetectedResource {\n return {\n attributes: {},\n };\n }\n}\n\nexport const noopDetector = new NoopDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/index.d.ts new file mode 100644 index 0000000..6a7b63c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/index.d.ts @@ -0,0 +1,4 @@ +export { envDetector } from './EnvDetector'; +export { hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './platform'; +export { noopDetector } from './NoopDetector'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/index.js new file mode 100644 index 0000000..f0641cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/index.js @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { envDetector } from './EnvDetector'; +export { hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './platform'; +export { noopDetector } from './NoopDetector'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/index.js.map new file mode 100644 index 0000000..e28356c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/detectors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,eAAe,EACf,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { envDetector } from './EnvDetector';\nexport {\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from './platform';\nexport { noopDetector } from './NoopDetector';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/HostDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/HostDetector.d.ts new file mode 100644 index 0000000..60202e0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/HostDetector.d.ts @@ -0,0 +1,2 @@ +export declare const hostDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=HostDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/HostDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/HostDetector.js new file mode 100644 index 0000000..be6128e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/HostDetector.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { noopDetector } from '../../NoopDetector'; +export const hostDetector = noopDetector; +//# sourceMappingURL=HostDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/HostDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/HostDetector.js.map new file mode 100644 index 0000000..d32b3e9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/HostDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HostDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/HostDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\nexport const hostDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/OSDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/OSDetector.d.ts new file mode 100644 index 0000000..873e332 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/OSDetector.d.ts @@ -0,0 +1,2 @@ +export declare const osDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=OSDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/OSDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/OSDetector.js new file mode 100644 index 0000000..cafc6cd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/OSDetector.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { noopDetector } from '../../NoopDetector'; +export const osDetector = noopDetector; +//# sourceMappingURL=OSDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/OSDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/OSDetector.js.map new file mode 100644 index 0000000..937c76e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/OSDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OSDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/OSDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\nexport const osDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ProcessDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ProcessDetector.d.ts new file mode 100644 index 0000000..54a3ddb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ProcessDetector.d.ts @@ -0,0 +1,2 @@ +export declare const processDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=ProcessDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ProcessDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ProcessDetector.js new file mode 100644 index 0000000..b933417 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ProcessDetector.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { noopDetector } from '../../NoopDetector'; +export const processDetector = noopDetector; +//# sourceMappingURL=ProcessDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ProcessDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ProcessDetector.js.map new file mode 100644 index 0000000..133af12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ProcessDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProcessDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/ProcessDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\nexport const processDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ServiceInstanceIdDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ServiceInstanceIdDetector.d.ts new file mode 100644 index 0000000..a220191 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ServiceInstanceIdDetector.d.ts @@ -0,0 +1,5 @@ +/** + * @experimental + */ +export declare const serviceInstanceIdDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=ServiceInstanceIdDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ServiceInstanceIdDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ServiceInstanceIdDetector.js new file mode 100644 index 0000000..53beaec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ServiceInstanceIdDetector.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { noopDetector } from '../../NoopDetector'; +/** + * @experimental + */ +export const serviceInstanceIdDetector = noopDetector; +//# sourceMappingURL=ServiceInstanceIdDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ServiceInstanceIdDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ServiceInstanceIdDetector.js.map new file mode 100644 index 0000000..78376b6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/ServiceInstanceIdDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ServiceInstanceIdDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/ServiceInstanceIdDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\n/**\n * @experimental\n */\nexport const serviceInstanceIdDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/index.d.ts new file mode 100644 index 0000000..42cb969 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/index.d.ts @@ -0,0 +1,5 @@ +export { hostDetector } from './HostDetector'; +export { osDetector } from './OSDetector'; +export { processDetector } from './ProcessDetector'; +export { serviceInstanceIdDetector } from './ServiceInstanceIdDetector'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/index.js new file mode 100644 index 0000000..9ff8ecb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/index.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { hostDetector } from './HostDetector'; +export { osDetector } from './OSDetector'; +export { processDetector } from './ProcessDetector'; +export { serviceInstanceIdDetector } from './ServiceInstanceIdDetector'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/index.js.map new file mode 100644 index 0000000..661ff35 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { hostDetector } from './HostDetector';\nexport { osDetector } from './OSDetector';\nexport { processDetector } from './ProcessDetector';\nexport { serviceInstanceIdDetector } from './ServiceInstanceIdDetector';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/index.d.ts new file mode 100644 index 0000000..a6c355c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/index.d.ts @@ -0,0 +1,2 @@ +export { hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/index.js new file mode 100644 index 0000000..a3d0948 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/index.js.map new file mode 100644 index 0000000..d78a090 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/detectors/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,YAAY,EACZ,UAAU,EACV,eAAe,EACf,yBAAyB,GAC1B,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport {\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/HostDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/HostDetector.d.ts new file mode 100644 index 0000000..85d731d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/HostDetector.d.ts @@ -0,0 +1,12 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * HostDetector detects the resources related to the host current process is + * running on. Currently only non-cloud-based attributes are included. + */ +declare class HostDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +export declare const hostDetector: HostDetector; +export {}; +//# sourceMappingURL=HostDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/HostDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/HostDetector.js new file mode 100644 index 0000000..62cbf97 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/HostDetector.js @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ATTR_HOST_ARCH, ATTR_HOST_ID, ATTR_HOST_NAME } from '../../../semconv'; +import { arch, hostname } from 'os'; +import { getMachineId } from './machine-id/getMachineId'; +import { normalizeArch } from './utils'; +/** + * HostDetector detects the resources related to the host current process is + * running on. Currently only non-cloud-based attributes are included. + */ +class HostDetector { + detect(_config) { + const attributes = { + [ATTR_HOST_NAME]: hostname(), + [ATTR_HOST_ARCH]: normalizeArch(arch()), + [ATTR_HOST_ID]: getMachineId(), + }; + return { attributes }; + } +} +export const hostDetector = new HostDetector(); +//# sourceMappingURL=HostDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/HostDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/HostDetector.js.map new file mode 100644 index 0000000..5a53ada --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/HostDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HostDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/HostDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAOpC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;;GAGG;AACH,MAAM,YAAY;IAChB,MAAM,CAAC,OAAiC;QACtC,MAAM,UAAU,GAA+B;YAC7C,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE;YAC5B,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE;SAC/B,CAAC;QAEF,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ATTR_HOST_ARCH, ATTR_HOST_ID, ATTR_HOST_NAME } from '../../../semconv';\nimport { arch, hostname } from 'os';\nimport { ResourceDetectionConfig } from '../../../config';\nimport {\n DetectedResource,\n DetectedResourceAttributes,\n ResourceDetector,\n} from '../../../types';\nimport { getMachineId } from './machine-id/getMachineId';\nimport { normalizeArch } from './utils';\n\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 implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n const attributes: DetectedResourceAttributes = {\n [ATTR_HOST_NAME]: hostname(),\n [ATTR_HOST_ARCH]: normalizeArch(arch()),\n [ATTR_HOST_ID]: getMachineId(),\n };\n\n return { attributes };\n }\n}\n\nexport const hostDetector = new HostDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/OSDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/OSDetector.d.ts new file mode 100644 index 0000000..ee0516a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/OSDetector.d.ts @@ -0,0 +1,12 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * OSDetector detects the resources related to the operating system (OS) on + * which the process represented by this resource is running. + */ +declare class OSDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +export declare const osDetector: OSDetector; +export {}; +//# sourceMappingURL=OSDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/OSDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/OSDetector.js new file mode 100644 index 0000000..0439087 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/OSDetector.js @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ATTR_OS_TYPE, ATTR_OS_VERSION } from '../../../semconv'; +import { platform, release } from 'os'; +import { normalizeType } from './utils'; +/** + * OSDetector detects the resources related to the operating system (OS) on + * which the process represented by this resource is running. + */ +class OSDetector { + detect(_config) { + const attributes = { + [ATTR_OS_TYPE]: normalizeType(platform()), + [ATTR_OS_VERSION]: release(), + }; + return { attributes }; + } +} +export const osDetector = new OSDetector(); +//# sourceMappingURL=OSDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/OSDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/OSDetector.js.map new file mode 100644 index 0000000..03a9f0b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/OSDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OSDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/OSDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU;IACd,MAAM,CAAC,OAAiC;QACtC,MAAM,UAAU,GAAe;YAC7B,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzC,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE;SAC7B,CAAC;QACF,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes } from '@opentelemetry/api';\nimport { ATTR_OS_TYPE, ATTR_OS_VERSION } from '../../../semconv';\nimport { platform, release } from 'os';\nimport { ResourceDetectionConfig } from '../../../config';\nimport { DetectedResource, ResourceDetector } from '../../../types';\nimport { normalizeType } from './utils';\n\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 implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n const attributes: Attributes = {\n [ATTR_OS_TYPE]: normalizeType(platform()),\n [ATTR_OS_VERSION]: release(),\n };\n return { attributes };\n }\n}\n\nexport const osDetector = new OSDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ProcessDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ProcessDetector.d.ts new file mode 100644 index 0000000..1b9e8f4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ProcessDetector.d.ts @@ -0,0 +1,12 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * ProcessDetector will be used to detect the resources related current process running + * and being instrumented from the NodeJS Process module. + */ +declare class ProcessDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +export declare const processDetector: ProcessDetector; +export {}; +//# sourceMappingURL=ProcessDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ProcessDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ProcessDetector.js new file mode 100644 index 0000000..2a029f5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ProcessDetector.js @@ -0,0 +1,52 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { ATTR_PROCESS_COMMAND, ATTR_PROCESS_COMMAND_ARGS, ATTR_PROCESS_EXECUTABLE_NAME, ATTR_PROCESS_EXECUTABLE_PATH, ATTR_PROCESS_OWNER, ATTR_PROCESS_PID, ATTR_PROCESS_RUNTIME_DESCRIPTION, ATTR_PROCESS_RUNTIME_NAME, ATTR_PROCESS_RUNTIME_VERSION, } from '../../../semconv'; +import * as os from 'os'; +/** + * ProcessDetector will be used to detect the resources related current process running + * and being instrumented from the NodeJS Process module. + */ +class ProcessDetector { + detect(_config) { + const attributes = { + [ATTR_PROCESS_PID]: process.pid, + [ATTR_PROCESS_EXECUTABLE_NAME]: process.title, + [ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath, + [ATTR_PROCESS_COMMAND_ARGS]: [ + process.argv[0], + ...process.execArgv, + ...process.argv.slice(1), + ], + [ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node, + [ATTR_PROCESS_RUNTIME_NAME]: 'nodejs', + [ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js', + }; + if (process.argv.length > 1) { + attributes[ATTR_PROCESS_COMMAND] = process.argv[1]; + } + try { + const userInfo = os.userInfo(); + attributes[ATTR_PROCESS_OWNER] = userInfo.username; + } + catch (e) { + diag.debug(`error obtaining process owner: ${e}`); + } + return { attributes }; + } +} +export const processDetector = new ProcessDetector(); +//# sourceMappingURL=ProcessDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ProcessDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ProcessDetector.js.map new file mode 100644 index 0000000..0c73458 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ProcessDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProcessDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/ProcessDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAc,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,EAC5B,4BAA4B,EAC5B,kBAAkB,EAClB,gBAAgB,EAChB,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAIzB;;;GAGG;AACH,MAAM,eAAe;IACnB,MAAM,CAAC,OAAiC;QACtC,MAAM,UAAU,GAAe;YAC7B,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,GAAG;YAC/B,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC,KAAK;YAC7C,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC,QAAQ;YAChD,CAAC,yBAAyB,CAAC,EAAE;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACf,GAAG,OAAO,CAAC,QAAQ;gBACnB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACzB;YACD,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;YACrD,CAAC,yBAAyB,CAAC,EAAE,QAAQ;YACrC,CAAC,gCAAgC,CAAC,EAAE,SAAS;SAC9C,CAAC;QAEF,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,UAAU,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpD;QAED,IAAI;YACF,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC/B,UAAU,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;SACpD;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;SACnD;QAED,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, diag } from '@opentelemetry/api';\nimport {\n ATTR_PROCESS_COMMAND,\n ATTR_PROCESS_COMMAND_ARGS,\n ATTR_PROCESS_EXECUTABLE_NAME,\n ATTR_PROCESS_EXECUTABLE_PATH,\n ATTR_PROCESS_OWNER,\n ATTR_PROCESS_PID,\n ATTR_PROCESS_RUNTIME_DESCRIPTION,\n ATTR_PROCESS_RUNTIME_NAME,\n ATTR_PROCESS_RUNTIME_VERSION,\n} from '../../../semconv';\nimport * as os from 'os';\nimport { ResourceDetectionConfig } from '../../../config';\nimport { DetectedResource, ResourceDetector } from '../../../types';\n\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 implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n const attributes: Attributes = {\n [ATTR_PROCESS_PID]: process.pid,\n [ATTR_PROCESS_EXECUTABLE_NAME]: process.title,\n [ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath,\n [ATTR_PROCESS_COMMAND_ARGS]: [\n process.argv[0],\n ...process.execArgv,\n ...process.argv.slice(1),\n ],\n [ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node,\n [ATTR_PROCESS_RUNTIME_NAME]: 'nodejs',\n [ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js',\n };\n\n if (process.argv.length > 1) {\n attributes[ATTR_PROCESS_COMMAND] = process.argv[1];\n }\n\n try {\n const userInfo = os.userInfo();\n attributes[ATTR_PROCESS_OWNER] = userInfo.username;\n } catch (e) {\n diag.debug(`error obtaining process owner: ${e}`);\n }\n\n return { attributes };\n }\n}\n\nexport const processDetector = new ProcessDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ServiceInstanceIdDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ServiceInstanceIdDetector.d.ts new file mode 100644 index 0000000..7cd453a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ServiceInstanceIdDetector.d.ts @@ -0,0 +1,14 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * ServiceInstanceIdDetector detects the resources related to the service instance ID. + */ +declare class ServiceInstanceIdDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +/** + * @experimental + */ +export declare const serviceInstanceIdDetector: ServiceInstanceIdDetector; +export {}; +//# sourceMappingURL=ServiceInstanceIdDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ServiceInstanceIdDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ServiceInstanceIdDetector.js new file mode 100644 index 0000000..646c0c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ServiceInstanceIdDetector.js @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ATTR_SERVICE_INSTANCE_ID } from '../../../semconv'; +import { randomUUID } from 'crypto'; +/** + * ServiceInstanceIdDetector detects the resources related to the service instance ID. + */ +class ServiceInstanceIdDetector { + detect(_config) { + return { + attributes: { + [ATTR_SERVICE_INSTANCE_ID]: randomUUID(), + }, + }; + } +} +/** + * @experimental + */ +export const serviceInstanceIdDetector = new ServiceInstanceIdDetector(); +//# sourceMappingURL=ServiceInstanceIdDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ServiceInstanceIdDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ServiceInstanceIdDetector.js.map new file mode 100644 index 0000000..1625464 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/ServiceInstanceIdDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ServiceInstanceIdDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/ServiceInstanceIdDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIpC;;GAEG;AACH,MAAM,yBAAyB;IAC7B,MAAM,CAAC,OAAiC;QACtC,OAAO;YACL,UAAU,EAAE;gBACV,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE;aACzC;SACF,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ATTR_SERVICE_INSTANCE_ID } from '../../../semconv';\nimport { randomUUID } from 'crypto';\nimport { ResourceDetectionConfig } from '../../../config';\nimport { DetectedResource, ResourceDetector } from '../../../types';\n\n/**\n * ServiceInstanceIdDetector detects the resources related to the service instance ID.\n */\nclass ServiceInstanceIdDetector implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n return {\n attributes: {\n [ATTR_SERVICE_INSTANCE_ID]: randomUUID(),\n },\n };\n }\n}\n\n/**\n * @experimental\n */\nexport const serviceInstanceIdDetector = new ServiceInstanceIdDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/index.d.ts new file mode 100644 index 0000000..42cb969 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/index.d.ts @@ -0,0 +1,5 @@ +export { hostDetector } from './HostDetector'; +export { osDetector } from './OSDetector'; +export { processDetector } from './ProcessDetector'; +export { serviceInstanceIdDetector } from './ServiceInstanceIdDetector'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/index.js new file mode 100644 index 0000000..9ff8ecb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/index.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { hostDetector } from './HostDetector'; +export { osDetector } from './OSDetector'; +export { processDetector } from './ProcessDetector'; +export { serviceInstanceIdDetector } from './ServiceInstanceIdDetector'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/index.js.map new file mode 100644 index 0000000..f555638 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { hostDetector } from './HostDetector';\nexport { osDetector } from './OSDetector';\nexport { processDetector } from './ProcessDetector';\nexport { serviceInstanceIdDetector } from './ServiceInstanceIdDetector';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/execAsync.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/execAsync.d.ts new file mode 100644 index 0000000..5c3f34b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/execAsync.d.ts @@ -0,0 +1,4 @@ +/// +import * as child_process from 'child_process'; +export declare const execAsync: typeof child_process.exec.__promisify__; +//# sourceMappingURL=execAsync.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/execAsync.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/execAsync.js new file mode 100644 index 0000000..65d93d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/execAsync.js @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as child_process from 'child_process'; +import * as util from 'util'; +export const execAsync = util.promisify(child_process.exec); +//# sourceMappingURL=execAsync.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/execAsync.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/execAsync.js.map new file mode 100644 index 0000000..bdfb948 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/execAsync.js.map @@ -0,0 +1 @@ +{"version":3,"file":"execAsync.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/execAsync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,aAAa,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as child_process from 'child_process';\nimport * as util from 'util';\n\nexport const execAsync = util.promisify(child_process.exec);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-bsd.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-bsd.d.ts new file mode 100644 index 0000000..c6b382d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-bsd.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-bsd.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-bsd.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-bsd.js new file mode 100644 index 0000000..9d061c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-bsd.js @@ -0,0 +1,36 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { promises as fs } from 'fs'; +import { execAsync } from './execAsync'; +import { diag } from '@opentelemetry/api'; +export async function getMachineId() { + try { + const result = await fs.readFile('/etc/hostid', { encoding: 'utf8' }); + return result.trim(); + } + catch (e) { + diag.debug(`error reading machine id: ${e}`); + } + try { + const result = await execAsync('kenv -q smbios.system.uuid'); + return result.stdout.trim(); + } + catch (e) { + diag.debug(`error reading machine id: ${e}`); + } + return undefined; +} +//# sourceMappingURL=getMachineId-bsd.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-bsd.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-bsd.js.map new file mode 100644 index 0000000..f9ca1e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-bsd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-bsd.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-bsd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;KACtB;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,4BAA4B,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KAC7B;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { promises as fs } from 'fs';\nimport { execAsync } from './execAsync';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n try {\n const result = await fs.readFile('/etc/hostid', { encoding: 'utf8' });\n return result.trim();\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n try {\n const result = await execAsync('kenv -q smbios.system.uuid');\n return result.stdout.trim();\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-darwin.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-darwin.d.ts new file mode 100644 index 0000000..83d717a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-darwin.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-darwin.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-darwin.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-darwin.js new file mode 100644 index 0000000..79d6d4e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-darwin.js @@ -0,0 +1,37 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { execAsync } from './execAsync'; +import { diag } from '@opentelemetry/api'; +export async function getMachineId() { + try { + const result = await execAsync('ioreg -rd1 -c "IOPlatformExpertDevice"'); + const idLine = result.stdout + .split('\n') + .find(line => line.includes('IOPlatformUUID')); + if (!idLine) { + return undefined; + } + const parts = idLine.split('" = "'); + if (parts.length === 2) { + return parts[1].slice(0, -1); + } + } + catch (e) { + diag.debug(`error reading machine id: ${e}`); + } + return undefined; +} +//# sourceMappingURL=getMachineId-darwin.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-darwin.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-darwin.js.map new file mode 100644 index 0000000..b9d303a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-darwin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-darwin.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-darwin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;aACzB,KAAK,CAAC,IAAI,CAAC;aACX,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC9B;KACF;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { execAsync } from './execAsync';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n try {\n const result = await execAsync('ioreg -rd1 -c \"IOPlatformExpertDevice\"');\n\n const idLine = result.stdout\n .split('\\n')\n .find(line => line.includes('IOPlatformUUID'));\n\n if (!idLine) {\n return undefined;\n }\n\n const parts = idLine.split('\" = \"');\n if (parts.length === 2) {\n return parts[1].slice(0, -1);\n }\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-linux.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-linux.d.ts new file mode 100644 index 0000000..571052e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-linux.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-linux.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-linux.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-linux.js new file mode 100644 index 0000000..47b4333 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-linux.js @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { promises as fs } from 'fs'; +import { diag } from '@opentelemetry/api'; +export async function getMachineId() { + const paths = ['/etc/machine-id', '/var/lib/dbus/machine-id']; + for (const path of paths) { + try { + const result = await fs.readFile(path, { encoding: 'utf8' }); + return result.trim(); + } + catch (e) { + diag.debug(`error reading machine id: ${e}`); + } + } + return undefined; +} +//# sourceMappingURL=getMachineId-linux.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-linux.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-linux.js.map new file mode 100644 index 0000000..f99b126 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-linux.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-linux.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-linux.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,KAAK,GAAG,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAAC;IAE9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;SAC9C;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { promises as fs } from 'fs';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n const paths = ['/etc/machine-id', '/var/lib/dbus/machine-id'];\n\n for (const path of paths) {\n try {\n const result = await fs.readFile(path, { encoding: 'utf8' });\n return result.trim();\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-unsupported.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-unsupported.d.ts new file mode 100644 index 0000000..040ca09 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-unsupported.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-unsupported.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-unsupported.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-unsupported.js new file mode 100644 index 0000000..099f8ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-unsupported.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +export async function getMachineId() { + diag.debug('could not read machine-id: unsupported platform'); + return undefined; +} +//# sourceMappingURL=getMachineId-unsupported.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-unsupported.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-unsupported.js.map new file mode 100644 index 0000000..43040cd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-unsupported.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-unsupported.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-unsupported.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAC9D,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n diag.debug('could not read machine-id: unsupported platform');\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-win.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-win.d.ts new file mode 100644 index 0000000..0452b47 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-win.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-win.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-win.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-win.js new file mode 100644 index 0000000..637fe5e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-win.js @@ -0,0 +1,37 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as process from 'process'; +import { execAsync } from './execAsync'; +import { diag } from '@opentelemetry/api'; +export async function getMachineId() { + const args = 'QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid'; + let command = '%windir%\\System32\\REG.exe'; + if (process.arch === 'ia32' && 'PROCESSOR_ARCHITEW6432' in process.env) { + command = '%windir%\\sysnative\\cmd.exe /c ' + command; + } + try { + const result = await execAsync(`${command} ${args}`); + const parts = result.stdout.split('REG_SZ'); + if (parts.length === 2) { + return parts[1].trim(); + } + } + catch (e) { + diag.debug(`error reading machine id: ${e}`); + } + return undefined; +} +//# sourceMappingURL=getMachineId-win.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-win.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-win.js.map new file mode 100644 index 0000000..aea2084 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId-win.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-win.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-win.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,IAAI,GACR,4EAA4E,CAAC;IAC/E,IAAI,OAAO,GAAG,6BAA6B,CAAC;IAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,wBAAwB,IAAI,OAAO,CAAC,GAAG,EAAE;QACtE,OAAO,GAAG,kCAAkC,GAAG,OAAO,CAAC;KACxD;IAED,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACxB;KACF;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as process from 'process';\nimport { execAsync } from './execAsync';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n const args =\n '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\n try {\n const result = await execAsync(`${command} ${args}`);\n const parts = result.stdout.split('REG_SZ');\n if (parts.length === 2) {\n return parts[1].trim();\n }\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId.d.ts new file mode 100644 index 0000000..f8f3e77 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId.js new file mode 100644 index 0000000..7195904 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId.js @@ -0,0 +1,43 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as process from 'process'; +let getMachineIdImpl; +export async function getMachineId() { + if (!getMachineIdImpl) { + switch (process.platform) { + case 'darwin': + getMachineIdImpl = (await import('./getMachineId-darwin.js')) + .getMachineId; + break; + case 'linux': + getMachineIdImpl = (await import('./getMachineId-linux.js')) + .getMachineId; + break; + case 'freebsd': + getMachineIdImpl = (await import('./getMachineId-bsd.js')).getMachineId; + break; + case 'win32': + getMachineIdImpl = (await import('./getMachineId-win.js')).getMachineId; + break; + default: + getMachineIdImpl = (await import('./getMachineId-unsupported.js')) + .getMachineId; + break; + } + } + return getMachineIdImpl(); +} +//# sourceMappingURL=getMachineId.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId.js.map new file mode 100644 index 0000000..7ff09b9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/machine-id/getMachineId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,IAAI,gBAAiE,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,gBAAgB,EAAE;QACrB,QAAQ,OAAO,CAAC,QAAQ,EAAE;YACxB,KAAK,QAAQ;gBACX,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;qBAC1D,YAAY,CAAC;gBAChB,MAAM;YACR,KAAK,OAAO;gBACV,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;qBACzD,YAAY,CAAC;gBAChB,MAAM;YACR,KAAK,SAAS;gBACZ,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC;gBACxE,MAAM;YACR,KAAK,OAAO;gBACV,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC;gBACxE,MAAM;YACR;gBACE,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;qBAC/D,YAAY,CAAC;gBAChB,MAAM;SACT;KACF;IAED,OAAO,gBAAgB,EAAE,CAAC;AAC5B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as process from 'process';\n\nlet getMachineIdImpl: undefined | (() => Promise);\n\nexport async function getMachineId(): Promise {\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\n return getMachineIdImpl();\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/utils.d.ts new file mode 100644 index 0000000..6180fd7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/utils.d.ts @@ -0,0 +1,3 @@ +export declare const normalizeArch: (nodeArchString: string) => string; +export declare const normalizeType: (nodePlatform: string) => string; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/utils.js new file mode 100644 index 0000000..5ee5faf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/utils.js @@ -0,0 +1,42 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const normalizeArch = (nodeArchString) => { + // Maps from https://nodejs.org/api/os.html#osarch to arch values in spec: + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md + switch (nodeArchString) { + case 'arm': + return 'arm32'; + case 'ppc': + return 'ppc32'; + case 'x64': + return 'amd64'; + default: + return nodeArchString; + } +}; +export const normalizeType = (nodePlatform) => { + // Maps from https://nodejs.org/api/os.html#osplatform to arch values in spec: + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/os.md + switch (nodePlatform) { + case 'sunos': + return 'solaris'; + case 'win32': + return 'windows'; + default: + return nodePlatform; + } +}; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/utils.js.map new file mode 100644 index 0000000..bc0b3cc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/detectors/platform/node/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,cAAsB,EAAU,EAAE;IAC9D,0EAA0E;IAC1E,8HAA8H;IAC9H,QAAQ,cAAc,EAAE;QACtB,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,cAAc,CAAC;KACzB;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,YAAoB,EAAU,EAAE;IAC5D,8EAA8E;IAC9E,4HAA4H;IAC5H,QAAQ,YAAY,EAAE;QACpB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,YAAY,CAAC;KACvB;AACH,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const normalizeArch = (nodeArchString: string): string => {\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};\n\nexport const normalizeType = (nodePlatform: string): string => {\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};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/index.d.ts new file mode 100644 index 0000000..107b45d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/index.d.ts @@ -0,0 +1,8 @@ +export type { ResourceDetectionConfig } from './config'; +export { detectResources } from './detect-resources'; +export { envDetector, hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './detectors'; +export type { Resource } from './Resource'; +export { resourceFromAttributes, defaultResource, emptyResource, } from './ResourceImpl'; +export { defaultServiceName } from './default-service-name'; +export type { ResourceDetector, DetectedResource, DetectedResourceAttributes, RawResourceAttribute, MaybePromise, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/index.js new file mode 100644 index 0000000..b34d3be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/index.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { detectResources } from './detect-resources'; +export { envDetector, hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './detectors'; +export { resourceFromAttributes, defaultResource, emptyResource, } from './ResourceImpl'; +export { defaultServiceName } from './default-service-name'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/index.js.map new file mode 100644 index 0000000..6db8f9a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type { ResourceDetectionConfig } from './config';\nexport { detectResources } from './detect-resources';\nexport {\n envDetector,\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from './detectors';\nexport type { Resource } from './Resource';\nexport {\n resourceFromAttributes,\n defaultResource,\n emptyResource,\n} from './ResourceImpl';\nexport { defaultServiceName } from './default-service-name';\nexport type {\n ResourceDetector,\n DetectedResource,\n DetectedResourceAttributes,\n RawResourceAttribute,\n MaybePromise,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/semconv.d.ts new file mode 100644 index 0000000..af59c7e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/semconv.d.ts @@ -0,0 +1,312 @@ +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_ACCOUNT_ID: "cloud.account.id"; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_AVAILABILITY_ZONE: "cloud.availability_zone"; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_PROVIDER: "cloud.provider"; +/** + * The geographical region the resource is running. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_REGION: "cloud.region"; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_ID: "container.id"; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_NAME: "container.image.name"; +/** + * 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:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_TAGS: "container.image.tags"; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_NAME: "container.name"; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ARCH: "host.arch"; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ID: "host.id"; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_ID: "host.image.id"; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_NAME: "host.image.name"; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_VERSION: "host.image.version"; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_NAME: "host.name"; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_TYPE: "host.type"; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CLUSTER_NAME: "k8s.cluster.name"; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_NAME: "k8s.deployment.name"; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_NAME: "k8s.namespace.name"; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_NAME: "k8s.pod.name"; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_TYPE: "os.type"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_VERSION: "os.version"; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND: "process.command"; +/** + * 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`. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND_ARGS: "process.command_args"; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_NAME: "process.executable.name"; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_PATH: "process.executable.path"; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_OWNER: "process.owner"; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_PID: "process.pid"; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_DESCRIPTION: "process.runtime.description"; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_NAME: "process.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_VERSION: "process.runtime.version"; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_INSTANCE_ID: "service.instance.id"; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_NAMESPACE: "service.namespace"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_DESCRIPTION: "webengine.description"; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_NAME: "webengine.name"; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_VERSION: "webengine.version"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/semconv.js new file mode 100644 index 0000000..ef5f5db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/semconv.js @@ -0,0 +1,332 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id'; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone'; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_PROVIDER = 'cloud.provider'; +/** + * The geographical region the resource is running. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_REGION = 'cloud.region'; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_ID = 'container.id'; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name'; +/** + * 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:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags'; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_NAME = 'container.name'; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_ARCH = 'host.arch'; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_ID = 'host.id'; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_ID = 'host.image.id'; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_NAME = 'host.image.name'; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_VERSION = 'host.image.version'; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_NAME = 'host.name'; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_TYPE = 'host.type'; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name'; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name'; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name'; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_NAME = 'k8s.pod.name'; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_TYPE = 'os.type'; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_VERSION = 'os.version'; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_COMMAND = 'process.command'; +/** + * 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`. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args'; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name'; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path'; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_OWNER = 'process.owner'; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_PID = 'process.pid'; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version'; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id'; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_NAMESPACE = 'service.namespace'; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description'; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_NAME = 'webengine.name'; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_VERSION = 'webengine.version'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/semconv.js.map new file mode 100644 index 0000000..b623fae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id' as const;\n\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 */\nexport const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone' as const;\n\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 */\nexport const ATTR_CLOUD_PROVIDER = 'cloud.provider' as const;\n\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 */\nexport const ATTR_CLOUD_REGION = 'cloud.region' as const;\n\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 */\nexport const ATTR_CONTAINER_ID = 'container.id' as const;\n\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 */\nexport const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name' as const;\n\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 */\nexport const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags' as const;\n\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 */\nexport const ATTR_CONTAINER_NAME = 'container.name' as const;\n\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 */\nexport const ATTR_HOST_ARCH = 'host.arch' as const;\n\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 */\nexport const ATTR_HOST_ID = 'host.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_ID = 'host.image.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_NAME = 'host.image.name' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_VERSION = 'host.image.version' as const;\n\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 */\nexport const ATTR_HOST_NAME = 'host.name' as const;\n\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 */\nexport const ATTR_HOST_TYPE = 'host.type' as const;\n\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 */\nexport const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name' as const;\n\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 */\nexport const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' as const;\n\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 */\nexport const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name' as const;\n\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 */\nexport const ATTR_K8S_POD_NAME = 'k8s.pod.name' as const;\n\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 */\nexport const ATTR_OS_TYPE = 'os.type' as const;\n\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 */\nexport const ATTR_OS_VERSION = 'os.version' as const;\n\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 */\nexport const ATTR_PROCESS_COMMAND = 'process.command' as const;\n\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 */\nexport const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path' as const;\n\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 */\nexport const ATTR_PROCESS_OWNER = 'process.owner' as const;\n\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 */\nexport const ATTR_PROCESS_PID = 'process.pid' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_DESCRIPTION =\n 'process.runtime.description' as const;\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 */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version' as const;\n\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 */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\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 */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\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 */\nexport const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description' as const;\n\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 */\nexport const ATTR_WEBENGINE_NAME = 'webengine.name' as const;\n\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 */\nexport const ATTR_WEBENGINE_VERSION = 'webengine.version' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/types.d.ts new file mode 100644 index 0000000..8db9171 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/types.d.ts @@ -0,0 +1,44 @@ +import { AttributeValue } from '@opentelemetry/api'; +import { ResourceDetectionConfig } from './config'; +/** + * Interface for a Resource Detector. + * A resource detector returns a set of detected resource attributes. + * A detected resource attribute may be an {@link AttributeValue} or a Promise of an AttributeValue. + */ +export interface ResourceDetector { + /** + * Detect resource attributes. + * + * @returns a {@link DetectedResource} object containing detected resource attributes + */ + detect(config?: ResourceDetectionConfig): DetectedResource; +} +export type DetectedResource = { + /** + * Detected resource attributes. + */ + attributes?: DetectedResourceAttributes; +}; +/** + * An object representing detected resource attributes. + * Value may be {@link AttributeValue}s, a promise to an {@link AttributeValue}, or undefined. + */ +type DetectedResourceAttributeValue = MaybePromise; +/** + * An object representing detected resource attributes. + * Values may be {@link AttributeValue}s or a promise to an {@link AttributeValue}. + */ +export type DetectedResourceAttributes = Record; +export type MaybePromise = T | Promise; +export type RawResourceAttribute = [ + string, + MaybePromise +]; +/** + * Options for creating a {@link Resource}. + */ +export type ResourceOptions = { + schemaUrl?: string; +}; +export {}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/types.js.map new file mode 100644 index 0000000..d630f03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { AttributeValue } from '@opentelemetry/api';\nimport { ResourceDetectionConfig } from './config';\n\n/**\n * Interface for a Resource Detector.\n * A resource detector returns a set of detected resource attributes.\n * A detected resource attribute may be an {@link AttributeValue} or a Promise of an AttributeValue.\n */\nexport interface ResourceDetector {\n /**\n * Detect resource attributes.\n *\n * @returns a {@link DetectedResource} object containing detected resource attributes\n */\n detect(config?: ResourceDetectionConfig): DetectedResource;\n}\n\nexport type DetectedResource = {\n /**\n * Detected resource attributes.\n */\n attributes?: DetectedResourceAttributes;\n};\n\n/**\n * An object representing detected resource attributes.\n * Value may be {@link AttributeValue}s, a promise to an {@link AttributeValue}, or undefined.\n */\ntype DetectedResourceAttributeValue = MaybePromise;\n\n/**\n * An object representing detected resource attributes.\n * Values may be {@link AttributeValue}s or a promise to an {@link AttributeValue}.\n */\nexport type DetectedResourceAttributes = Record<\n string,\n DetectedResourceAttributeValue\n>;\n\nexport type MaybePromise = T | Promise;\n\nexport type RawResourceAttribute = [\n string,\n MaybePromise,\n];\n\n/**\n * Options for creating a {@link Resource}.\n */\nexport type ResourceOptions = {\n schemaUrl?: string;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/utils.d.ts new file mode 100644 index 0000000..765f036 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/utils.d.ts @@ -0,0 +1,2 @@ +export declare const isPromiseLike: (val: unknown) => val is PromiseLike; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/utils.js new file mode 100644 index 0000000..f3c7356 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/utils.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const isPromiseLike = (val) => { + return (val !== null && + typeof val === 'object' && + typeof val.then === 'function'); +}; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/utils.js.map new file mode 100644 index 0000000..0928847 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,GAAY,EAAyB,EAAE;IACtE,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAQ,GAA+B,CAAC,IAAI,KAAK,UAAU,CAC5D,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport const isPromiseLike = (val: unknown): val is PromiseLike => {\n return (\n val !== null &&\n typeof val === 'object' &&\n typeof (val as Partial>).then === 'function'\n );\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/version.d.ts new file mode 100644 index 0000000..4539690 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "2.5.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/version.js new file mode 100644 index 0000000..fabcf00 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '2.5.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/version.js.map new file mode 100644 index 0000000..277b52a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esm/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.5.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/Resource.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/Resource.d.ts new file mode 100644 index 0000000..2870d9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/Resource.d.ts @@ -0,0 +1,46 @@ +import { Attributes } from '@opentelemetry/api'; +import { RawResourceAttribute } from './types'; +/** + * An interface that represents a resource. A Resource describes the entity for which signals (metrics or trace) are + * collected. + * + * This interface is NOT user-implementable. Valid ways to obtain a {@link Resource} are by using either of these functions + * - {@link resourceFromAttributes} + * - {@link emptyResource} + * - {@link defaultResource} + * - {@link detectResources} + */ +export interface Resource { + /** + * Check if async attributes have resolved. This is useful to avoid awaiting + * waitForAsyncAttributes (which will introduce asynchronous behavior) when not necessary. + * + * @returns true if the resource "attributes" property is not yet settled to its final value + */ + readonly asyncAttributesPending?: boolean; + /** + * @returns the Resource's attributes. + */ + readonly attributes: Attributes; + /** + * @returns the Resource's schema URL or undefined if not set. + */ + readonly schemaUrl?: string; + /** + * Returns a promise that will never be rejected. Resolves when all async attributes have finished being added to + * this Resource's attributes. This is useful in exporters to block until resource detection + * has finished. + */ + waitForAsyncAttributes?(): Promise; + /** + * Returns a new, merged {@link Resource} by merging the current Resource + * with the other Resource. In case of a collision, other Resource takes + * precedence. + * + * @param other the Resource that will be merged with this. + * @returns the newly merged Resource. + */ + merge(other: Resource | null): Resource; + getRawAttributes(): RawResourceAttribute[]; +} +//# sourceMappingURL=Resource.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/Resource.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/Resource.js new file mode 100644 index 0000000..c9fc3b4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/Resource.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Resource.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/Resource.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/Resource.js.map new file mode 100644 index 0000000..855807a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/Resource.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Resource.js","sourceRoot":"","sources":["../../src/Resource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes } from '@opentelemetry/api';\nimport { RawResourceAttribute } from './types';\n\n/**\n * An interface that represents a resource. A Resource describes the entity for which signals (metrics or trace) are\n * collected.\n *\n * This interface is NOT user-implementable. Valid ways to obtain a {@link Resource} are by using either of these functions\n * - {@link resourceFromAttributes}\n * - {@link emptyResource}\n * - {@link defaultResource}\n * - {@link detectResources}\n */\nexport interface Resource {\n /**\n * Check if async attributes have resolved. This is useful to avoid awaiting\n * waitForAsyncAttributes (which will introduce asynchronous behavior) when not necessary.\n *\n * @returns true if the resource \"attributes\" property is not yet settled to its final value\n */\n readonly asyncAttributesPending?: boolean;\n\n /**\n * @returns the Resource's attributes.\n */\n readonly attributes: Attributes;\n\n /**\n * @returns the Resource's schema URL or undefined if not set.\n */\n readonly schemaUrl?: string;\n\n /**\n * Returns a promise that will never be rejected. Resolves when all async attributes have finished being added to\n * this Resource's attributes. This is useful in exporters to block until resource detection\n * has finished.\n */\n waitForAsyncAttributes?(): Promise;\n\n /**\n * Returns a new, merged {@link Resource} by merging the current Resource\n * with the other Resource. In case of a collision, other Resource takes\n * precedence.\n *\n * @param other the Resource that will be merged with this.\n * @returns the newly merged Resource.\n */\n merge(other: Resource | null): Resource;\n\n getRawAttributes(): RawResourceAttribute[];\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/ResourceImpl.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/ResourceImpl.d.ts new file mode 100644 index 0000000..6c7af7a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/ResourceImpl.d.ts @@ -0,0 +1,7 @@ +import { Resource } from './Resource'; +import { DetectedResource, DetectedResourceAttributes, ResourceOptions } from './types'; +export declare function resourceFromAttributes(attributes: DetectedResourceAttributes, options?: ResourceOptions): Resource; +export declare function resourceFromDetectedResource(detectedResource: DetectedResource, options?: ResourceOptions): Resource; +export declare function emptyResource(): Resource; +export declare function defaultResource(): Resource; +//# sourceMappingURL=ResourceImpl.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/ResourceImpl.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/ResourceImpl.js new file mode 100644 index 0000000..1b4c6f8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/ResourceImpl.js @@ -0,0 +1,160 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { SDK_INFO } from '@opentelemetry/core'; +import { ATTR_SERVICE_NAME, ATTR_TELEMETRY_SDK_LANGUAGE, ATTR_TELEMETRY_SDK_NAME, ATTR_TELEMETRY_SDK_VERSION, } from '@opentelemetry/semantic-conventions'; +import { defaultServiceName } from './default-service-name'; +import { isPromiseLike } from './utils'; +class ResourceImpl { + _rawAttributes; + _asyncAttributesPending = false; + _schemaUrl; + _memoizedAttributes; + static FromAttributeList(attributes, options) { + const res = new ResourceImpl({}, options); + res._rawAttributes = guardedRawAttributes(attributes); + res._asyncAttributesPending = + attributes.filter(([_, val]) => isPromiseLike(val)).length > 0; + return res; + } + constructor( + /** + * A dictionary of attributes with string keys and values that provide + * information about the entity as numbers, strings or booleans + * TODO: Consider to add check/validation on attributes. + */ + resource, options) { + const attributes = resource.attributes ?? {}; + this._rawAttributes = Object.entries(attributes).map(([k, v]) => { + if (isPromiseLike(v)) { + // side-effect + this._asyncAttributesPending = true; + } + return [k, v]; + }); + this._rawAttributes = guardedRawAttributes(this._rawAttributes); + this._schemaUrl = validateSchemaUrl(options?.schemaUrl); + } + get asyncAttributesPending() { + return this._asyncAttributesPending; + } + async waitForAsyncAttributes() { + if (!this.asyncAttributesPending) { + return; + } + for (let i = 0; i < this._rawAttributes.length; i++) { + const [k, v] = this._rawAttributes[i]; + this._rawAttributes[i] = [k, isPromiseLike(v) ? await v : v]; + } + this._asyncAttributesPending = false; + } + get attributes() { + if (this.asyncAttributesPending) { + diag.error('Accessing resource attributes before async attributes settled'); + } + if (this._memoizedAttributes) { + return this._memoizedAttributes; + } + const attrs = {}; + for (const [k, v] of this._rawAttributes) { + if (isPromiseLike(v)) { + diag.debug(`Unsettled resource attribute ${k} skipped`); + continue; + } + if (v != null) { + attrs[k] ??= v; + } + } + // only memoize output if all attributes are settled + if (!this._asyncAttributesPending) { + this._memoizedAttributes = attrs; + } + return attrs; + } + getRawAttributes() { + return this._rawAttributes; + } + get schemaUrl() { + return this._schemaUrl; + } + merge(resource) { + if (resource == null) + return this; + // Order is important + // Spec states incoming attributes override existing attributes + const mergedSchemaUrl = mergeSchemaUrl(this, resource); + const mergedOptions = mergedSchemaUrl + ? { schemaUrl: mergedSchemaUrl } + : undefined; + return ResourceImpl.FromAttributeList([...resource.getRawAttributes(), ...this.getRawAttributes()], mergedOptions); + } +} +export function resourceFromAttributes(attributes, options) { + return ResourceImpl.FromAttributeList(Object.entries(attributes), options); +} +export function resourceFromDetectedResource(detectedResource, options) { + return new ResourceImpl(detectedResource, options); +} +export function emptyResource() { + return resourceFromAttributes({}); +} +export function defaultResource() { + return resourceFromAttributes({ + [ATTR_SERVICE_NAME]: defaultServiceName(), + [ATTR_TELEMETRY_SDK_LANGUAGE]: SDK_INFO[ATTR_TELEMETRY_SDK_LANGUAGE], + [ATTR_TELEMETRY_SDK_NAME]: SDK_INFO[ATTR_TELEMETRY_SDK_NAME], + [ATTR_TELEMETRY_SDK_VERSION]: SDK_INFO[ATTR_TELEMETRY_SDK_VERSION], + }); +} +function guardedRawAttributes(attributes) { + return attributes.map(([k, v]) => { + if (isPromiseLike(v)) { + return [ + k, + v.catch(err => { + diag.debug('promise rejection for resource attribute: %s - %s', k, err); + return undefined; + }), + ]; + } + return [k, v]; + }); +} +function validateSchemaUrl(schemaUrl) { + if (typeof schemaUrl === 'string' || schemaUrl === undefined) { + return schemaUrl; + } + diag.warn('Schema URL must be string or undefined, got %s. Schema URL will be ignored.', schemaUrl); + return undefined; +} +function mergeSchemaUrl(old, updating) { + const oldSchemaUrl = old?.schemaUrl; + const updatingSchemaUrl = updating?.schemaUrl; + const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === ''; + const isUpdatingEmpty = updatingSchemaUrl === undefined || updatingSchemaUrl === ''; + if (isOldEmpty) { + return updatingSchemaUrl; + } + if (isUpdatingEmpty) { + return oldSchemaUrl; + } + if (oldSchemaUrl === updatingSchemaUrl) { + return oldSchemaUrl; + } + diag.warn('Schema URL merge conflict: old resource has "%s", updating resource has "%s". Resulting resource will have undefined Schema URL.', oldSchemaUrl, updatingSchemaUrl); + return undefined; +} +//# sourceMappingURL=ResourceImpl.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/ResourceImpl.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/ResourceImpl.js.map new file mode 100644 index 0000000..2243dda --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/ResourceImpl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ResourceImpl.js","sourceRoot":"","sources":["../../src/ResourceImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, AttributeValue, diag } from '@opentelemetry/api';\nimport { SDK_INFO } from '@opentelemetry/core';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { Resource } from './Resource';\nimport { defaultServiceName } from './default-service-name';\nimport {\n DetectedResource,\n DetectedResourceAttributes,\n MaybePromise,\n RawResourceAttribute,\n ResourceOptions,\n} from './types';\nimport { isPromiseLike } from './utils';\n\nclass ResourceImpl implements Resource {\n private _rawAttributes: RawResourceAttribute[];\n private _asyncAttributesPending = false;\n private _schemaUrl?: string;\n\n private _memoizedAttributes?: Attributes;\n\n static FromAttributeList(\n attributes: [string, MaybePromise][],\n options?: ResourceOptions\n ): Resource {\n const res = new ResourceImpl({}, options);\n res._rawAttributes = guardedRawAttributes(attributes);\n res._asyncAttributesPending =\n attributes.filter(([_, val]) => isPromiseLike(val)).length > 0;\n return res;\n }\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: DetectedResource,\n options?: ResourceOptions\n ) {\n const attributes = resource.attributes ?? {};\n this._rawAttributes = Object.entries(attributes).map(([k, v]) => {\n if (isPromiseLike(v)) {\n // side-effect\n this._asyncAttributesPending = true;\n }\n\n return [k, v];\n });\n\n this._rawAttributes = guardedRawAttributes(this._rawAttributes);\n this._schemaUrl = validateSchemaUrl(options?.schemaUrl);\n }\n\n public get asyncAttributesPending(): boolean {\n return this._asyncAttributesPending;\n }\n\n public async waitForAsyncAttributes(): Promise {\n if (!this.asyncAttributesPending) {\n return;\n }\n\n for (let i = 0; i < this._rawAttributes.length; i++) {\n const [k, v] = this._rawAttributes[i];\n this._rawAttributes[i] = [k, isPromiseLike(v) ? await v : v];\n }\n\n this._asyncAttributesPending = false;\n }\n\n public get attributes(): Attributes {\n if (this.asyncAttributesPending) {\n diag.error(\n 'Accessing resource attributes before async attributes settled'\n );\n }\n\n if (this._memoizedAttributes) {\n return this._memoizedAttributes;\n }\n\n const attrs: Attributes = {};\n for (const [k, v] of this._rawAttributes) {\n if (isPromiseLike(v)) {\n diag.debug(`Unsettled resource attribute ${k} skipped`);\n continue;\n }\n if (v != null) {\n attrs[k] ??= v;\n }\n }\n\n // only memoize output if all attributes are settled\n if (!this._asyncAttributesPending) {\n this._memoizedAttributes = attrs;\n }\n\n return attrs;\n }\n\n public getRawAttributes(): RawResourceAttribute[] {\n return this._rawAttributes;\n }\n\n public get schemaUrl(): string | undefined {\n return this._schemaUrl;\n }\n\n public merge(resource: Resource | null): Resource {\n if (resource == null) return this;\n\n // Order is important\n // Spec states incoming attributes override existing attributes\n const mergedSchemaUrl = mergeSchemaUrl(this, resource);\n const mergedOptions: ResourceOptions | undefined = mergedSchemaUrl\n ? { schemaUrl: mergedSchemaUrl }\n : undefined;\n\n return ResourceImpl.FromAttributeList(\n [...resource.getRawAttributes(), ...this.getRawAttributes()],\n mergedOptions\n );\n }\n}\n\nexport function resourceFromAttributes(\n attributes: DetectedResourceAttributes,\n options?: ResourceOptions\n): Resource {\n return ResourceImpl.FromAttributeList(Object.entries(attributes), options);\n}\n\nexport function resourceFromDetectedResource(\n detectedResource: DetectedResource,\n options?: ResourceOptions\n): Resource {\n return new ResourceImpl(detectedResource, options);\n}\n\nexport function emptyResource(): Resource {\n return resourceFromAttributes({});\n}\n\nexport function defaultResource(): Resource {\n return resourceFromAttributes({\n [ATTR_SERVICE_NAME]: defaultServiceName(),\n [ATTR_TELEMETRY_SDK_LANGUAGE]: SDK_INFO[ATTR_TELEMETRY_SDK_LANGUAGE],\n [ATTR_TELEMETRY_SDK_NAME]: SDK_INFO[ATTR_TELEMETRY_SDK_NAME],\n [ATTR_TELEMETRY_SDK_VERSION]: SDK_INFO[ATTR_TELEMETRY_SDK_VERSION],\n });\n}\n\nfunction guardedRawAttributes(\n attributes: RawResourceAttribute[]\n): RawResourceAttribute[] {\n return attributes.map(([k, v]) => {\n if (isPromiseLike(v)) {\n return [\n k,\n v.catch(err => {\n diag.debug(\n 'promise rejection for resource attribute: %s - %s',\n k,\n err\n );\n return undefined;\n }),\n ];\n }\n return [k, v];\n });\n}\n\nfunction validateSchemaUrl(schemaUrl?: string): string | undefined {\n if (typeof schemaUrl === 'string' || schemaUrl === undefined) {\n return schemaUrl;\n }\n\n diag.warn(\n 'Schema URL must be string or undefined, got %s. Schema URL will be ignored.',\n schemaUrl\n );\n\n return undefined;\n}\n\nfunction mergeSchemaUrl(\n old: Resource,\n updating: Resource | null\n): string | undefined {\n const oldSchemaUrl = old?.schemaUrl;\n const updatingSchemaUrl = updating?.schemaUrl;\n\n const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === '';\n const isUpdatingEmpty =\n updatingSchemaUrl === undefined || updatingSchemaUrl === '';\n\n if (isOldEmpty) {\n return updatingSchemaUrl;\n }\n\n if (isUpdatingEmpty) {\n return oldSchemaUrl;\n }\n\n if (oldSchemaUrl === updatingSchemaUrl) {\n return oldSchemaUrl;\n }\n\n diag.warn(\n 'Schema URL merge conflict: old resource has \"%s\", updating resource has \"%s\". Resulting resource will have undefined Schema URL.',\n oldSchemaUrl,\n updatingSchemaUrl\n );\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/config.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/config.d.ts new file mode 100644 index 0000000..6858bd8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/config.d.ts @@ -0,0 +1,8 @@ +import type { ResourceDetector } from './types'; +/** + * ResourceDetectionConfig provides an interface for configuring resource auto-detection. + */ +export interface ResourceDetectionConfig { + detectors?: Array; +} +//# sourceMappingURL=config.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/config.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/config.js new file mode 100644 index 0000000..6c92201 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/config.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/config.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/config.js.map new file mode 100644 index 0000000..676c7e7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/config.js.map @@ -0,0 +1 @@ +{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { ResourceDetector } from './types';\n\n/**\n * ResourceDetectionConfig provides an interface for configuring resource auto-detection.\n */\nexport interface ResourceDetectionConfig {\n detectors?: Array;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/default-service-name.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/default-service-name.d.ts new file mode 100644 index 0000000..d39946b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/default-service-name.d.ts @@ -0,0 +1,9 @@ +/** + * Returns the default service name for OpenTelemetry resources. + * In Node.js environments, returns "unknown_service:". + * In browser/edge environments, returns "unknown_service". + */ +export declare function defaultServiceName(): string; +/** @internal For testing purposes only */ +export declare function _clearDefaultServiceNameCache(): void; +//# sourceMappingURL=default-service-name.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/default-service-name.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/default-service-name.js new file mode 100644 index 0000000..ebf6c17 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/default-service-name.js @@ -0,0 +1,38 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +let serviceName; +/** + * Returns the default service name for OpenTelemetry resources. + * In Node.js environments, returns "unknown_service:". + * In browser/edge environments, returns "unknown_service". + */ +export function defaultServiceName() { + if (serviceName === undefined) { + try { + const argv0 = globalThis.process.argv0; + serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service'; + } + catch { + serviceName = 'unknown_service'; + } + } + return serviceName; +} +/** @internal For testing purposes only */ +export function _clearDefaultServiceNameCache() { + serviceName = undefined; +} +//# sourceMappingURL=default-service-name.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/default-service-name.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/default-service-name.js.map new file mode 100644 index 0000000..c39a386 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/default-service-name.js.map @@ -0,0 +1 @@ +{"version":3,"file":"default-service-name.js","sourceRoot":"","sources":["../../src/default-service-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,IAAI,WAA+B,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,WAAW,KAAK,SAAS,EAAE;QAC7B,IAAI;YACF,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YACvC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;SACtE;QAAC,MAAM;YACN,WAAW,GAAG,iBAAiB,CAAC;SACjC;KACF;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,6BAA6B;IAC3C,WAAW,GAAG,SAAS,CAAC;AAC1B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nlet serviceName: string | undefined;\n\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 */\nexport function defaultServiceName(): string {\n if (serviceName === undefined) {\n try {\n const argv0 = globalThis.process.argv0;\n serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service';\n } catch {\n serviceName = 'unknown_service';\n }\n }\n return serviceName;\n}\n\n/** @internal For testing purposes only */\nexport function _clearDefaultServiceNameCache(): void {\n serviceName = undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detect-resources.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detect-resources.d.ts new file mode 100644 index 0000000..a796f9e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detect-resources.d.ts @@ -0,0 +1,9 @@ +import { Resource } from './Resource'; +import { ResourceDetectionConfig } from './config'; +/** + * Runs all resource detectors and returns the results merged into a single Resource. + * + * @param config Configuration for resource detection + */ +export declare const detectResources: (config?: ResourceDetectionConfig) => Resource; +//# sourceMappingURL=detect-resources.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detect-resources.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detect-resources.js new file mode 100644 index 0000000..20831db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detect-resources.js @@ -0,0 +1,37 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { emptyResource, resourceFromDetectedResource } from './ResourceImpl'; +/** + * Runs all resource detectors and returns the results merged into a single Resource. + * + * @param config Configuration for resource detection + */ +export const detectResources = (config = {}) => { + const resources = (config.detectors || []).map(d => { + try { + const resource = resourceFromDetectedResource(d.detect(config)); + diag.debug(`${d.constructor.name} found resource.`, resource); + return resource; + } + catch (e) { + diag.debug(`${d.constructor.name} failed: ${e.message}`); + return emptyResource(); + } + }); + return resources.reduce((acc, resource) => acc.merge(resource), emptyResource()); +}; +//# sourceMappingURL=detect-resources.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detect-resources.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detect-resources.js.map new file mode 100644 index 0000000..c741989 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detect-resources.js.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-resources.js","sourceRoot":"","sources":["../../src/detect-resources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAG7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,SAAkC,EAAE,EAC1B,EAAE;IACZ,MAAM,SAAS,GAAe,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7D,IAAI;YACF,MAAM,QAAQ,GAAG,4BAA4B,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAC9D,OAAO,QAAQ,CAAC;SACjB;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,OAAO,aAAa,EAAE,CAAC;SACxB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EACtC,aAAa,EAAE,CAChB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\nimport { Resource } from './Resource';\nimport { emptyResource, resourceFromDetectedResource } from './ResourceImpl';\nimport { ResourceDetectionConfig } from './config';\n\n/**\n * Runs all resource detectors and returns the results merged into a single Resource.\n *\n * @param config Configuration for resource detection\n */\nexport const detectResources = (\n config: ResourceDetectionConfig = {}\n): Resource => {\n const resources: Resource[] = (config.detectors || []).map(d => {\n try {\n const resource = resourceFromDetectedResource(d.detect(config));\n diag.debug(`${d.constructor.name} found resource.`, resource);\n return resource;\n } catch (e) {\n diag.debug(`${d.constructor.name} failed: ${e.message}`);\n return emptyResource();\n }\n });\n\n return resources.reduce(\n (acc, resource) => acc.merge(resource),\n emptyResource()\n );\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/EnvDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/EnvDetector.d.ts new file mode 100644 index 0000000..a365a1a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/EnvDetector.d.ts @@ -0,0 +1,56 @@ +import { ResourceDetectionConfig } from '../config'; +import { DetectedResource, ResourceDetector } from '../types'; +/** + * EnvDetector can be used to detect the presence of and create a Resource + * from the OTEL_RESOURCE_ATTRIBUTES environment variable. + */ +declare class EnvDetector implements ResourceDetector { + private readonly _MAX_LENGTH; + private readonly _COMMA_SEPARATOR; + private readonly _LABEL_KEY_VALUE_SPLITTER; + private readonly _ERROR_MESSAGE_INVALID_CHARS; + private readonly _ERROR_MESSAGE_INVALID_VALUE; + /** + * Returns a {@link Resource} populated with attributes from the + * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async + * function to conform to the Detector interface. + * + * @param config The resource detection config + */ + detect(_config?: ResourceDetectionConfig): DetectedResource; + /** + * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment + * variable. + * + * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes describing + * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and + * paths are accepted as attribute keys. Values may be quoted or unquoted in + * general. If a value contains whitespace, =, or " characters, it must + * always be quoted. + * + * @param rawEnvAttributes The resource attributes as a comma-separated list + * of key/value pairs. + * @returns The sanitized resource attributes. + */ + private _parseResourceAttributes; + /** + * Determines whether the given String is a valid printable ASCII string with + * a length not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid. + */ + private _isValid; + private _isBaggageOctetString; + /** + * Determines whether the given String is a valid printable ASCII string with + * a length greater than 0 and not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid and not empty. + */ + private _isValidAndNotEmpty; +} +export declare const envDetector: EnvDetector; +export {}; +//# sourceMappingURL=EnvDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/EnvDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/EnvDetector.js new file mode 100644 index 0000000..ff8bf05 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/EnvDetector.js @@ -0,0 +1,131 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; +import { getStringFromEnv } from '@opentelemetry/core'; +/** + * EnvDetector can be used to detect the presence of and create a Resource + * from the OTEL_RESOURCE_ATTRIBUTES environment variable. + */ +class EnvDetector { + // Type, attribute keys, and attribute values should not exceed 256 characters. + _MAX_LENGTH = 255; + // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes. + _COMMA_SEPARATOR = ','; + // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='. + _LABEL_KEY_VALUE_SPLITTER = '='; + _ERROR_MESSAGE_INVALID_CHARS = 'should be a ASCII string with a length greater than 0 and not exceed ' + + this._MAX_LENGTH + + ' characters.'; + _ERROR_MESSAGE_INVALID_VALUE = 'should be a ASCII string with a length not exceed ' + + this._MAX_LENGTH + + ' characters.'; + /** + * Returns a {@link Resource} populated with attributes from the + * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async + * function to conform to the Detector interface. + * + * @param config The resource detection config + */ + detect(_config) { + const attributes = {}; + const rawAttributes = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES'); + const serviceName = getStringFromEnv('OTEL_SERVICE_NAME'); + if (rawAttributes) { + try { + const parsedAttributes = this._parseResourceAttributes(rawAttributes); + Object.assign(attributes, parsedAttributes); + } + catch (e) { + diag.debug(`EnvDetector failed: ${e.message}`); + } + } + if (serviceName) { + attributes[ATTR_SERVICE_NAME] = serviceName; + } + return { attributes }; + } + /** + * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment + * variable. + * + * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes describing + * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and + * paths are accepted as attribute keys. Values may be quoted or unquoted in + * general. If a value contains whitespace, =, or " characters, it must + * always be quoted. + * + * @param rawEnvAttributes The resource attributes as a comma-separated list + * of key/value pairs. + * @returns The sanitized resource attributes. + */ + _parseResourceAttributes(rawEnvAttributes) { + if (!rawEnvAttributes) + return {}; + const attributes = {}; + const rawAttributes = rawEnvAttributes.split(this._COMMA_SEPARATOR, -1); + for (const rawAttribute of rawAttributes) { + const keyValuePair = rawAttribute.split(this._LABEL_KEY_VALUE_SPLITTER, -1); + if (keyValuePair.length !== 2) { + continue; + } + let [key, value] = keyValuePair; + // Leading and trailing whitespaces are trimmed. + key = key.trim(); + value = value.trim().split(/^"|"$/).join(''); + if (!this._isValidAndNotEmpty(key)) { + throw new Error(`Attribute key ${this._ERROR_MESSAGE_INVALID_CHARS}`); + } + if (!this._isValid(value)) { + throw new Error(`Attribute value ${this._ERROR_MESSAGE_INVALID_VALUE}`); + } + attributes[key] = decodeURIComponent(value); + } + return attributes; + } + /** + * Determines whether the given String is a valid printable ASCII string with + * a length not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid. + */ + _isValid(name) { + return name.length <= this._MAX_LENGTH && this._isBaggageOctetString(name); + } + // https://www.w3.org/TR/baggage/#definition + _isBaggageOctetString(str) { + for (let i = 0; i < str.length; i++) { + const ch = str.charCodeAt(i); + if (ch < 0x21 || ch === 0x2c || ch === 0x3b || ch === 0x5c || ch > 0x7e) { + return false; + } + } + return true; + } + /** + * Determines whether the given String is a valid printable ASCII string with + * a length greater than 0 and not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid and not empty. + */ + _isValidAndNotEmpty(str) { + return str.length > 0 && this._isValid(str); + } +} +export const envDetector = new EnvDetector(); +//# sourceMappingURL=EnvDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/EnvDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/EnvDetector.js.map new file mode 100644 index 0000000..a683700 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/EnvDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"EnvDetector.js","sourceRoot":"","sources":["../../../src/detectors/EnvDetector.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, diag } from '@opentelemetry/api';\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport { ResourceDetectionConfig } from '../config';\nimport { DetectedResource, ResourceDetector } from '../types';\nimport { getStringFromEnv } from '@opentelemetry/core';\n\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 implements ResourceDetector {\n // Type, attribute keys, and attribute values should not exceed 256 characters.\n private readonly _MAX_LENGTH = 255;\n\n // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes.\n private readonly _COMMA_SEPARATOR = ',';\n\n // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='.\n private readonly _LABEL_KEY_VALUE_SPLITTER = '=';\n\n private readonly _ERROR_MESSAGE_INVALID_CHARS =\n 'should be a ASCII string with a length greater than 0 and not exceed ' +\n this._MAX_LENGTH +\n ' characters.';\n\n private readonly _ERROR_MESSAGE_INVALID_VALUE =\n 'should be a ASCII string with a length not exceed ' +\n this._MAX_LENGTH +\n ' characters.';\n\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?: ResourceDetectionConfig): DetectedResource {\n const attributes: Attributes = {};\n\n const rawAttributes = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n const serviceName = getStringFromEnv('OTEL_SERVICE_NAME');\n\n if (rawAttributes) {\n try {\n const parsedAttributes = this._parseResourceAttributes(rawAttributes);\n Object.assign(attributes, parsedAttributes);\n } catch (e) {\n diag.debug(`EnvDetector failed: ${e.message}`);\n }\n }\n\n if (serviceName) {\n attributes[ATTR_SERVICE_NAME] = serviceName;\n }\n\n return { attributes };\n }\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 describing\n * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and\n * paths are accepted as attribute keys. Values may be quoted or unquoted in\n * general. If a value contains whitespace, =, or \" characters, it must\n * always be quoted.\n *\n * @param rawEnvAttributes The resource attributes as a comma-separated list\n * of key/value pairs.\n * @returns The sanitized resource attributes.\n */\n private _parseResourceAttributes(rawEnvAttributes?: string): Attributes {\n if (!rawEnvAttributes) return {};\n\n const attributes: Attributes = {};\n const rawAttributes: string[] = rawEnvAttributes.split(\n this._COMMA_SEPARATOR,\n -1\n );\n for (const rawAttribute of rawAttributes) {\n const keyValuePair: string[] = rawAttribute.split(\n this._LABEL_KEY_VALUE_SPLITTER,\n -1\n );\n if (keyValuePair.length !== 2) {\n continue;\n }\n let [key, value] = keyValuePair;\n // Leading and trailing whitespaces are trimmed.\n key = key.trim();\n value = value.trim().split(/^\"|\"$/).join('');\n if (!this._isValidAndNotEmpty(key)) {\n throw new Error(`Attribute key ${this._ERROR_MESSAGE_INVALID_CHARS}`);\n }\n if (!this._isValid(value)) {\n throw new Error(`Attribute value ${this._ERROR_MESSAGE_INVALID_VALUE}`);\n }\n attributes[key] = decodeURIComponent(value);\n }\n return attributes;\n }\n\n /**\n * Determines whether the given String is a valid printable ASCII string with\n * a length not exceed _MAX_LENGTH characters.\n *\n * @param str The String to be validated.\n * @returns Whether the String is valid.\n */\n private _isValid(name: string): boolean {\n return name.length <= this._MAX_LENGTH && this._isBaggageOctetString(name);\n }\n\n // https://www.w3.org/TR/baggage/#definition\n private _isBaggageOctetString(str: string): boolean {\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n if (ch < 0x21 || ch === 0x2c || ch === 0x3b || ch === 0x5c || ch > 0x7e) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Determines whether the given String is a valid printable ASCII string with\n * a length greater than 0 and not exceed _MAX_LENGTH characters.\n *\n * @param str The String to be validated.\n * @returns Whether the String is valid and not empty.\n */\n private _isValidAndNotEmpty(str: string): boolean {\n return str.length > 0 && this._isValid(str);\n }\n}\n\nexport const envDetector = new EnvDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/NoopDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/NoopDetector.d.ts new file mode 100644 index 0000000..52ec701 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/NoopDetector.d.ts @@ -0,0 +1,6 @@ +import { DetectedResource, ResourceDetector } from '../types'; +export declare class NoopDetector implements ResourceDetector { + detect(): DetectedResource; +} +export declare const noopDetector: NoopDetector; +//# sourceMappingURL=NoopDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/NoopDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/NoopDetector.js new file mode 100644 index 0000000..dae16b5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/NoopDetector.js @@ -0,0 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class NoopDetector { + detect() { + return { + attributes: {}, + }; + } +} +export const noopDetector = new NoopDetector(); +//# sourceMappingURL=NoopDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/NoopDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/NoopDetector.js.map new file mode 100644 index 0000000..1a25402 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/NoopDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopDetector.js","sourceRoot":"","sources":["../../../src/detectors/NoopDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,OAAO,YAAY;IACvB,MAAM;QACJ,OAAO;YACL,UAAU,EAAE,EAAE;SACf,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DetectedResource, ResourceDetector } from '../types';\n\nexport class NoopDetector implements ResourceDetector {\n detect(): DetectedResource {\n return {\n attributes: {},\n };\n }\n}\n\nexport const noopDetector = new NoopDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/index.d.ts new file mode 100644 index 0000000..6a7b63c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/index.d.ts @@ -0,0 +1,4 @@ +export { envDetector } from './EnvDetector'; +export { hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './platform'; +export { noopDetector } from './NoopDetector'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/index.js new file mode 100644 index 0000000..f0641cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/index.js @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { envDetector } from './EnvDetector'; +export { hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './platform'; +export { noopDetector } from './NoopDetector'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/index.js.map new file mode 100644 index 0000000..e28356c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/detectors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,eAAe,EACf,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { envDetector } from './EnvDetector';\nexport {\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from './platform';\nexport { noopDetector } from './NoopDetector';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/HostDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/HostDetector.d.ts new file mode 100644 index 0000000..60202e0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/HostDetector.d.ts @@ -0,0 +1,2 @@ +export declare const hostDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=HostDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/HostDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/HostDetector.js new file mode 100644 index 0000000..be6128e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/HostDetector.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { noopDetector } from '../../NoopDetector'; +export const hostDetector = noopDetector; +//# sourceMappingURL=HostDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/HostDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/HostDetector.js.map new file mode 100644 index 0000000..d32b3e9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/HostDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HostDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/HostDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\nexport const hostDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/OSDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/OSDetector.d.ts new file mode 100644 index 0000000..873e332 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/OSDetector.d.ts @@ -0,0 +1,2 @@ +export declare const osDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=OSDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/OSDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/OSDetector.js new file mode 100644 index 0000000..cafc6cd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/OSDetector.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { noopDetector } from '../../NoopDetector'; +export const osDetector = noopDetector; +//# sourceMappingURL=OSDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/OSDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/OSDetector.js.map new file mode 100644 index 0000000..937c76e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/OSDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OSDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/OSDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\nexport const osDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ProcessDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ProcessDetector.d.ts new file mode 100644 index 0000000..54a3ddb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ProcessDetector.d.ts @@ -0,0 +1,2 @@ +export declare const processDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=ProcessDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ProcessDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ProcessDetector.js new file mode 100644 index 0000000..b933417 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ProcessDetector.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { noopDetector } from '../../NoopDetector'; +export const processDetector = noopDetector; +//# sourceMappingURL=ProcessDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ProcessDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ProcessDetector.js.map new file mode 100644 index 0000000..133af12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ProcessDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProcessDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/ProcessDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\nexport const processDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ServiceInstanceIdDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ServiceInstanceIdDetector.d.ts new file mode 100644 index 0000000..a220191 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ServiceInstanceIdDetector.d.ts @@ -0,0 +1,5 @@ +/** + * @experimental + */ +export declare const serviceInstanceIdDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=ServiceInstanceIdDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ServiceInstanceIdDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ServiceInstanceIdDetector.js new file mode 100644 index 0000000..53beaec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ServiceInstanceIdDetector.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { noopDetector } from '../../NoopDetector'; +/** + * @experimental + */ +export const serviceInstanceIdDetector = noopDetector; +//# sourceMappingURL=ServiceInstanceIdDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ServiceInstanceIdDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ServiceInstanceIdDetector.js.map new file mode 100644 index 0000000..78376b6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/ServiceInstanceIdDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ServiceInstanceIdDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/ServiceInstanceIdDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\n/**\n * @experimental\n */\nexport const serviceInstanceIdDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/index.d.ts new file mode 100644 index 0000000..42cb969 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/index.d.ts @@ -0,0 +1,5 @@ +export { hostDetector } from './HostDetector'; +export { osDetector } from './OSDetector'; +export { processDetector } from './ProcessDetector'; +export { serviceInstanceIdDetector } from './ServiceInstanceIdDetector'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/index.js new file mode 100644 index 0000000..9ff8ecb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/index.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { hostDetector } from './HostDetector'; +export { osDetector } from './OSDetector'; +export { processDetector } from './ProcessDetector'; +export { serviceInstanceIdDetector } from './ServiceInstanceIdDetector'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/index.js.map new file mode 100644 index 0000000..661ff35 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { hostDetector } from './HostDetector';\nexport { osDetector } from './OSDetector';\nexport { processDetector } from './ProcessDetector';\nexport { serviceInstanceIdDetector } from './ServiceInstanceIdDetector';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/index.d.ts new file mode 100644 index 0000000..a6c355c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/index.d.ts @@ -0,0 +1,2 @@ +export { hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/index.js new file mode 100644 index 0000000..a3d0948 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/index.js.map new file mode 100644 index 0000000..d78a090 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/detectors/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,YAAY,EACZ,UAAU,EACV,eAAe,EACf,yBAAyB,GAC1B,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport {\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/HostDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/HostDetector.d.ts new file mode 100644 index 0000000..85d731d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/HostDetector.d.ts @@ -0,0 +1,12 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * HostDetector detects the resources related to the host current process is + * running on. Currently only non-cloud-based attributes are included. + */ +declare class HostDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +export declare const hostDetector: HostDetector; +export {}; +//# sourceMappingURL=HostDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/HostDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/HostDetector.js new file mode 100644 index 0000000..62cbf97 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/HostDetector.js @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ATTR_HOST_ARCH, ATTR_HOST_ID, ATTR_HOST_NAME } from '../../../semconv'; +import { arch, hostname } from 'os'; +import { getMachineId } from './machine-id/getMachineId'; +import { normalizeArch } from './utils'; +/** + * HostDetector detects the resources related to the host current process is + * running on. Currently only non-cloud-based attributes are included. + */ +class HostDetector { + detect(_config) { + const attributes = { + [ATTR_HOST_NAME]: hostname(), + [ATTR_HOST_ARCH]: normalizeArch(arch()), + [ATTR_HOST_ID]: getMachineId(), + }; + return { attributes }; + } +} +export const hostDetector = new HostDetector(); +//# sourceMappingURL=HostDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/HostDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/HostDetector.js.map new file mode 100644 index 0000000..5a53ada --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/HostDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HostDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/HostDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAOpC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;;GAGG;AACH,MAAM,YAAY;IAChB,MAAM,CAAC,OAAiC;QACtC,MAAM,UAAU,GAA+B;YAC7C,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE;YAC5B,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE;SAC/B,CAAC;QAEF,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ATTR_HOST_ARCH, ATTR_HOST_ID, ATTR_HOST_NAME } from '../../../semconv';\nimport { arch, hostname } from 'os';\nimport { ResourceDetectionConfig } from '../../../config';\nimport {\n DetectedResource,\n DetectedResourceAttributes,\n ResourceDetector,\n} from '../../../types';\nimport { getMachineId } from './machine-id/getMachineId';\nimport { normalizeArch } from './utils';\n\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 implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n const attributes: DetectedResourceAttributes = {\n [ATTR_HOST_NAME]: hostname(),\n [ATTR_HOST_ARCH]: normalizeArch(arch()),\n [ATTR_HOST_ID]: getMachineId(),\n };\n\n return { attributes };\n }\n}\n\nexport const hostDetector = new HostDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/OSDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/OSDetector.d.ts new file mode 100644 index 0000000..ee0516a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/OSDetector.d.ts @@ -0,0 +1,12 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * OSDetector detects the resources related to the operating system (OS) on + * which the process represented by this resource is running. + */ +declare class OSDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +export declare const osDetector: OSDetector; +export {}; +//# sourceMappingURL=OSDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/OSDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/OSDetector.js new file mode 100644 index 0000000..0439087 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/OSDetector.js @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ATTR_OS_TYPE, ATTR_OS_VERSION } from '../../../semconv'; +import { platform, release } from 'os'; +import { normalizeType } from './utils'; +/** + * OSDetector detects the resources related to the operating system (OS) on + * which the process represented by this resource is running. + */ +class OSDetector { + detect(_config) { + const attributes = { + [ATTR_OS_TYPE]: normalizeType(platform()), + [ATTR_OS_VERSION]: release(), + }; + return { attributes }; + } +} +export const osDetector = new OSDetector(); +//# sourceMappingURL=OSDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/OSDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/OSDetector.js.map new file mode 100644 index 0000000..03a9f0b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/OSDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OSDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/OSDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU;IACd,MAAM,CAAC,OAAiC;QACtC,MAAM,UAAU,GAAe;YAC7B,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzC,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE;SAC7B,CAAC;QACF,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes } from '@opentelemetry/api';\nimport { ATTR_OS_TYPE, ATTR_OS_VERSION } from '../../../semconv';\nimport { platform, release } from 'os';\nimport { ResourceDetectionConfig } from '../../../config';\nimport { DetectedResource, ResourceDetector } from '../../../types';\nimport { normalizeType } from './utils';\n\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 implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n const attributes: Attributes = {\n [ATTR_OS_TYPE]: normalizeType(platform()),\n [ATTR_OS_VERSION]: release(),\n };\n return { attributes };\n }\n}\n\nexport const osDetector = new OSDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ProcessDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ProcessDetector.d.ts new file mode 100644 index 0000000..1b9e8f4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ProcessDetector.d.ts @@ -0,0 +1,12 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * ProcessDetector will be used to detect the resources related current process running + * and being instrumented from the NodeJS Process module. + */ +declare class ProcessDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +export declare const processDetector: ProcessDetector; +export {}; +//# sourceMappingURL=ProcessDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ProcessDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ProcessDetector.js new file mode 100644 index 0000000..2a029f5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ProcessDetector.js @@ -0,0 +1,52 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { ATTR_PROCESS_COMMAND, ATTR_PROCESS_COMMAND_ARGS, ATTR_PROCESS_EXECUTABLE_NAME, ATTR_PROCESS_EXECUTABLE_PATH, ATTR_PROCESS_OWNER, ATTR_PROCESS_PID, ATTR_PROCESS_RUNTIME_DESCRIPTION, ATTR_PROCESS_RUNTIME_NAME, ATTR_PROCESS_RUNTIME_VERSION, } from '../../../semconv'; +import * as os from 'os'; +/** + * ProcessDetector will be used to detect the resources related current process running + * and being instrumented from the NodeJS Process module. + */ +class ProcessDetector { + detect(_config) { + const attributes = { + [ATTR_PROCESS_PID]: process.pid, + [ATTR_PROCESS_EXECUTABLE_NAME]: process.title, + [ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath, + [ATTR_PROCESS_COMMAND_ARGS]: [ + process.argv[0], + ...process.execArgv, + ...process.argv.slice(1), + ], + [ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node, + [ATTR_PROCESS_RUNTIME_NAME]: 'nodejs', + [ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js', + }; + if (process.argv.length > 1) { + attributes[ATTR_PROCESS_COMMAND] = process.argv[1]; + } + try { + const userInfo = os.userInfo(); + attributes[ATTR_PROCESS_OWNER] = userInfo.username; + } + catch (e) { + diag.debug(`error obtaining process owner: ${e}`); + } + return { attributes }; + } +} +export const processDetector = new ProcessDetector(); +//# sourceMappingURL=ProcessDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ProcessDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ProcessDetector.js.map new file mode 100644 index 0000000..0c73458 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ProcessDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProcessDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/ProcessDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAc,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,EAC5B,4BAA4B,EAC5B,kBAAkB,EAClB,gBAAgB,EAChB,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAIzB;;;GAGG;AACH,MAAM,eAAe;IACnB,MAAM,CAAC,OAAiC;QACtC,MAAM,UAAU,GAAe;YAC7B,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,GAAG;YAC/B,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC,KAAK;YAC7C,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC,QAAQ;YAChD,CAAC,yBAAyB,CAAC,EAAE;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACf,GAAG,OAAO,CAAC,QAAQ;gBACnB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACzB;YACD,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;YACrD,CAAC,yBAAyB,CAAC,EAAE,QAAQ;YACrC,CAAC,gCAAgC,CAAC,EAAE,SAAS;SAC9C,CAAC;QAEF,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,UAAU,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpD;QAED,IAAI;YACF,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC/B,UAAU,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;SACpD;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;SACnD;QAED,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, diag } from '@opentelemetry/api';\nimport {\n ATTR_PROCESS_COMMAND,\n ATTR_PROCESS_COMMAND_ARGS,\n ATTR_PROCESS_EXECUTABLE_NAME,\n ATTR_PROCESS_EXECUTABLE_PATH,\n ATTR_PROCESS_OWNER,\n ATTR_PROCESS_PID,\n ATTR_PROCESS_RUNTIME_DESCRIPTION,\n ATTR_PROCESS_RUNTIME_NAME,\n ATTR_PROCESS_RUNTIME_VERSION,\n} from '../../../semconv';\nimport * as os from 'os';\nimport { ResourceDetectionConfig } from '../../../config';\nimport { DetectedResource, ResourceDetector } from '../../../types';\n\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 implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n const attributes: Attributes = {\n [ATTR_PROCESS_PID]: process.pid,\n [ATTR_PROCESS_EXECUTABLE_NAME]: process.title,\n [ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath,\n [ATTR_PROCESS_COMMAND_ARGS]: [\n process.argv[0],\n ...process.execArgv,\n ...process.argv.slice(1),\n ],\n [ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node,\n [ATTR_PROCESS_RUNTIME_NAME]: 'nodejs',\n [ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js',\n };\n\n if (process.argv.length > 1) {\n attributes[ATTR_PROCESS_COMMAND] = process.argv[1];\n }\n\n try {\n const userInfo = os.userInfo();\n attributes[ATTR_PROCESS_OWNER] = userInfo.username;\n } catch (e) {\n diag.debug(`error obtaining process owner: ${e}`);\n }\n\n return { attributes };\n }\n}\n\nexport const processDetector = new ProcessDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ServiceInstanceIdDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ServiceInstanceIdDetector.d.ts new file mode 100644 index 0000000..7cd453a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ServiceInstanceIdDetector.d.ts @@ -0,0 +1,14 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * ServiceInstanceIdDetector detects the resources related to the service instance ID. + */ +declare class ServiceInstanceIdDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +/** + * @experimental + */ +export declare const serviceInstanceIdDetector: ServiceInstanceIdDetector; +export {}; +//# sourceMappingURL=ServiceInstanceIdDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ServiceInstanceIdDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ServiceInstanceIdDetector.js new file mode 100644 index 0000000..646c0c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ServiceInstanceIdDetector.js @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ATTR_SERVICE_INSTANCE_ID } from '../../../semconv'; +import { randomUUID } from 'crypto'; +/** + * ServiceInstanceIdDetector detects the resources related to the service instance ID. + */ +class ServiceInstanceIdDetector { + detect(_config) { + return { + attributes: { + [ATTR_SERVICE_INSTANCE_ID]: randomUUID(), + }, + }; + } +} +/** + * @experimental + */ +export const serviceInstanceIdDetector = new ServiceInstanceIdDetector(); +//# sourceMappingURL=ServiceInstanceIdDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ServiceInstanceIdDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ServiceInstanceIdDetector.js.map new file mode 100644 index 0000000..1625464 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/ServiceInstanceIdDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ServiceInstanceIdDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/ServiceInstanceIdDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIpC;;GAEG;AACH,MAAM,yBAAyB;IAC7B,MAAM,CAAC,OAAiC;QACtC,OAAO;YACL,UAAU,EAAE;gBACV,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE;aACzC;SACF,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ATTR_SERVICE_INSTANCE_ID } from '../../../semconv';\nimport { randomUUID } from 'crypto';\nimport { ResourceDetectionConfig } from '../../../config';\nimport { DetectedResource, ResourceDetector } from '../../../types';\n\n/**\n * ServiceInstanceIdDetector detects the resources related to the service instance ID.\n */\nclass ServiceInstanceIdDetector implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n return {\n attributes: {\n [ATTR_SERVICE_INSTANCE_ID]: randomUUID(),\n },\n };\n }\n}\n\n/**\n * @experimental\n */\nexport const serviceInstanceIdDetector = new ServiceInstanceIdDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/index.d.ts new file mode 100644 index 0000000..42cb969 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/index.d.ts @@ -0,0 +1,5 @@ +export { hostDetector } from './HostDetector'; +export { osDetector } from './OSDetector'; +export { processDetector } from './ProcessDetector'; +export { serviceInstanceIdDetector } from './ServiceInstanceIdDetector'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/index.js new file mode 100644 index 0000000..9ff8ecb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/index.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { hostDetector } from './HostDetector'; +export { osDetector } from './OSDetector'; +export { processDetector } from './ProcessDetector'; +export { serviceInstanceIdDetector } from './ServiceInstanceIdDetector'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/index.js.map new file mode 100644 index 0000000..f555638 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { hostDetector } from './HostDetector';\nexport { osDetector } from './OSDetector';\nexport { processDetector } from './ProcessDetector';\nexport { serviceInstanceIdDetector } from './ServiceInstanceIdDetector';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/execAsync.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/execAsync.d.ts new file mode 100644 index 0000000..5c3f34b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/execAsync.d.ts @@ -0,0 +1,4 @@ +/// +import * as child_process from 'child_process'; +export declare const execAsync: typeof child_process.exec.__promisify__; +//# sourceMappingURL=execAsync.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/execAsync.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/execAsync.js new file mode 100644 index 0000000..65d93d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/execAsync.js @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as child_process from 'child_process'; +import * as util from 'util'; +export const execAsync = util.promisify(child_process.exec); +//# sourceMappingURL=execAsync.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/execAsync.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/execAsync.js.map new file mode 100644 index 0000000..bdfb948 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/execAsync.js.map @@ -0,0 +1 @@ +{"version":3,"file":"execAsync.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/execAsync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,aAAa,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as child_process from 'child_process';\nimport * as util from 'util';\n\nexport const execAsync = util.promisify(child_process.exec);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-bsd.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-bsd.d.ts new file mode 100644 index 0000000..c6b382d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-bsd.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-bsd.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-bsd.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-bsd.js new file mode 100644 index 0000000..9d061c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-bsd.js @@ -0,0 +1,36 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { promises as fs } from 'fs'; +import { execAsync } from './execAsync'; +import { diag } from '@opentelemetry/api'; +export async function getMachineId() { + try { + const result = await fs.readFile('/etc/hostid', { encoding: 'utf8' }); + return result.trim(); + } + catch (e) { + diag.debug(`error reading machine id: ${e}`); + } + try { + const result = await execAsync('kenv -q smbios.system.uuid'); + return result.stdout.trim(); + } + catch (e) { + diag.debug(`error reading machine id: ${e}`); + } + return undefined; +} +//# sourceMappingURL=getMachineId-bsd.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-bsd.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-bsd.js.map new file mode 100644 index 0000000..f9ca1e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-bsd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-bsd.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-bsd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;KACtB;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,4BAA4B,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KAC7B;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { promises as fs } from 'fs';\nimport { execAsync } from './execAsync';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n try {\n const result = await fs.readFile('/etc/hostid', { encoding: 'utf8' });\n return result.trim();\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n try {\n const result = await execAsync('kenv -q smbios.system.uuid');\n return result.stdout.trim();\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-darwin.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-darwin.d.ts new file mode 100644 index 0000000..83d717a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-darwin.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-darwin.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-darwin.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-darwin.js new file mode 100644 index 0000000..79d6d4e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-darwin.js @@ -0,0 +1,37 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { execAsync } from './execAsync'; +import { diag } from '@opentelemetry/api'; +export async function getMachineId() { + try { + const result = await execAsync('ioreg -rd1 -c "IOPlatformExpertDevice"'); + const idLine = result.stdout + .split('\n') + .find(line => line.includes('IOPlatformUUID')); + if (!idLine) { + return undefined; + } + const parts = idLine.split('" = "'); + if (parts.length === 2) { + return parts[1].slice(0, -1); + } + } + catch (e) { + diag.debug(`error reading machine id: ${e}`); + } + return undefined; +} +//# sourceMappingURL=getMachineId-darwin.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-darwin.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-darwin.js.map new file mode 100644 index 0000000..b9d303a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-darwin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-darwin.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-darwin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;aACzB,KAAK,CAAC,IAAI,CAAC;aACX,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC9B;KACF;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { execAsync } from './execAsync';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n try {\n const result = await execAsync('ioreg -rd1 -c \"IOPlatformExpertDevice\"');\n\n const idLine = result.stdout\n .split('\\n')\n .find(line => line.includes('IOPlatformUUID'));\n\n if (!idLine) {\n return undefined;\n }\n\n const parts = idLine.split('\" = \"');\n if (parts.length === 2) {\n return parts[1].slice(0, -1);\n }\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-linux.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-linux.d.ts new file mode 100644 index 0000000..571052e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-linux.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-linux.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-linux.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-linux.js new file mode 100644 index 0000000..47b4333 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-linux.js @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { promises as fs } from 'fs'; +import { diag } from '@opentelemetry/api'; +export async function getMachineId() { + const paths = ['/etc/machine-id', '/var/lib/dbus/machine-id']; + for (const path of paths) { + try { + const result = await fs.readFile(path, { encoding: 'utf8' }); + return result.trim(); + } + catch (e) { + diag.debug(`error reading machine id: ${e}`); + } + } + return undefined; +} +//# sourceMappingURL=getMachineId-linux.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-linux.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-linux.js.map new file mode 100644 index 0000000..f99b126 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-linux.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-linux.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-linux.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,KAAK,GAAG,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAAC;IAE9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;SAC9C;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { promises as fs } from 'fs';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n const paths = ['/etc/machine-id', '/var/lib/dbus/machine-id'];\n\n for (const path of paths) {\n try {\n const result = await fs.readFile(path, { encoding: 'utf8' });\n return result.trim();\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-unsupported.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-unsupported.d.ts new file mode 100644 index 0000000..040ca09 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-unsupported.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-unsupported.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-unsupported.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-unsupported.js new file mode 100644 index 0000000..099f8ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-unsupported.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +export async function getMachineId() { + diag.debug('could not read machine-id: unsupported platform'); + return undefined; +} +//# sourceMappingURL=getMachineId-unsupported.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-unsupported.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-unsupported.js.map new file mode 100644 index 0000000..43040cd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-unsupported.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-unsupported.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-unsupported.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAC9D,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n diag.debug('could not read machine-id: unsupported platform');\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-win.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-win.d.ts new file mode 100644 index 0000000..0452b47 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-win.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-win.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-win.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-win.js new file mode 100644 index 0000000..637fe5e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-win.js @@ -0,0 +1,37 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as process from 'process'; +import { execAsync } from './execAsync'; +import { diag } from '@opentelemetry/api'; +export async function getMachineId() { + const args = 'QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid'; + let command = '%windir%\\System32\\REG.exe'; + if (process.arch === 'ia32' && 'PROCESSOR_ARCHITEW6432' in process.env) { + command = '%windir%\\sysnative\\cmd.exe /c ' + command; + } + try { + const result = await execAsync(`${command} ${args}`); + const parts = result.stdout.split('REG_SZ'); + if (parts.length === 2) { + return parts[1].trim(); + } + } + catch (e) { + diag.debug(`error reading machine id: ${e}`); + } + return undefined; +} +//# sourceMappingURL=getMachineId-win.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-win.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-win.js.map new file mode 100644 index 0000000..aea2084 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId-win.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-win.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-win.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,IAAI,GACR,4EAA4E,CAAC;IAC/E,IAAI,OAAO,GAAG,6BAA6B,CAAC;IAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,wBAAwB,IAAI,OAAO,CAAC,GAAG,EAAE;QACtE,OAAO,GAAG,kCAAkC,GAAG,OAAO,CAAC;KACxD;IAED,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACxB;KACF;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as process from 'process';\nimport { execAsync } from './execAsync';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n const args =\n '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\n try {\n const result = await execAsync(`${command} ${args}`);\n const parts = result.stdout.split('REG_SZ');\n if (parts.length === 2) {\n return parts[1].trim();\n }\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId.d.ts new file mode 100644 index 0000000..f8f3e77 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId.js new file mode 100644 index 0000000..7195904 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId.js @@ -0,0 +1,43 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as process from 'process'; +let getMachineIdImpl; +export async function getMachineId() { + if (!getMachineIdImpl) { + switch (process.platform) { + case 'darwin': + getMachineIdImpl = (await import('./getMachineId-darwin.js')) + .getMachineId; + break; + case 'linux': + getMachineIdImpl = (await import('./getMachineId-linux.js')) + .getMachineId; + break; + case 'freebsd': + getMachineIdImpl = (await import('./getMachineId-bsd.js')).getMachineId; + break; + case 'win32': + getMachineIdImpl = (await import('./getMachineId-win.js')).getMachineId; + break; + default: + getMachineIdImpl = (await import('./getMachineId-unsupported.js')) + .getMachineId; + break; + } + } + return getMachineIdImpl(); +} +//# sourceMappingURL=getMachineId.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId.js.map new file mode 100644 index 0000000..7ff09b9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/machine-id/getMachineId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,IAAI,gBAAiE,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,gBAAgB,EAAE;QACrB,QAAQ,OAAO,CAAC,QAAQ,EAAE;YACxB,KAAK,QAAQ;gBACX,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;qBAC1D,YAAY,CAAC;gBAChB,MAAM;YACR,KAAK,OAAO;gBACV,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;qBACzD,YAAY,CAAC;gBAChB,MAAM;YACR,KAAK,SAAS;gBACZ,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC;gBACxE,MAAM;YACR,KAAK,OAAO;gBACV,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC;gBACxE,MAAM;YACR;gBACE,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;qBAC/D,YAAY,CAAC;gBAChB,MAAM;SACT;KACF;IAED,OAAO,gBAAgB,EAAE,CAAC;AAC5B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as process from 'process';\n\nlet getMachineIdImpl: undefined | (() => Promise);\n\nexport async function getMachineId(): Promise {\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\n return getMachineIdImpl();\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/utils.d.ts new file mode 100644 index 0000000..6180fd7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/utils.d.ts @@ -0,0 +1,3 @@ +export declare const normalizeArch: (nodeArchString: string) => string; +export declare const normalizeType: (nodePlatform: string) => string; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/utils.js new file mode 100644 index 0000000..5ee5faf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/utils.js @@ -0,0 +1,42 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const normalizeArch = (nodeArchString) => { + // Maps from https://nodejs.org/api/os.html#osarch to arch values in spec: + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md + switch (nodeArchString) { + case 'arm': + return 'arm32'; + case 'ppc': + return 'ppc32'; + case 'x64': + return 'amd64'; + default: + return nodeArchString; + } +}; +export const normalizeType = (nodePlatform) => { + // Maps from https://nodejs.org/api/os.html#osplatform to arch values in spec: + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/os.md + switch (nodePlatform) { + case 'sunos': + return 'solaris'; + case 'win32': + return 'windows'; + default: + return nodePlatform; + } +}; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/utils.js.map new file mode 100644 index 0000000..bc0b3cc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/detectors/platform/node/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,cAAsB,EAAU,EAAE;IAC9D,0EAA0E;IAC1E,8HAA8H;IAC9H,QAAQ,cAAc,EAAE;QACtB,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,cAAc,CAAC;KACzB;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,YAAoB,EAAU,EAAE;IAC5D,8EAA8E;IAC9E,4HAA4H;IAC5H,QAAQ,YAAY,EAAE;QACpB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,YAAY,CAAC;KACvB;AACH,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const normalizeArch = (nodeArchString: string): string => {\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};\n\nexport const normalizeType = (nodePlatform: string): string => {\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};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/index.d.ts new file mode 100644 index 0000000..107b45d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/index.d.ts @@ -0,0 +1,8 @@ +export type { ResourceDetectionConfig } from './config'; +export { detectResources } from './detect-resources'; +export { envDetector, hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './detectors'; +export type { Resource } from './Resource'; +export { resourceFromAttributes, defaultResource, emptyResource, } from './ResourceImpl'; +export { defaultServiceName } from './default-service-name'; +export type { ResourceDetector, DetectedResource, DetectedResourceAttributes, RawResourceAttribute, MaybePromise, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/index.js new file mode 100644 index 0000000..b34d3be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/index.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { detectResources } from './detect-resources'; +export { envDetector, hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './detectors'; +export { resourceFromAttributes, defaultResource, emptyResource, } from './ResourceImpl'; +export { defaultServiceName } from './default-service-name'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/index.js.map new file mode 100644 index 0000000..6db8f9a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type { ResourceDetectionConfig } from './config';\nexport { detectResources } from './detect-resources';\nexport {\n envDetector,\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from './detectors';\nexport type { Resource } from './Resource';\nexport {\n resourceFromAttributes,\n defaultResource,\n emptyResource,\n} from './ResourceImpl';\nexport { defaultServiceName } from './default-service-name';\nexport type {\n ResourceDetector,\n DetectedResource,\n DetectedResourceAttributes,\n RawResourceAttribute,\n MaybePromise,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/semconv.d.ts new file mode 100644 index 0000000..af59c7e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/semconv.d.ts @@ -0,0 +1,312 @@ +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_ACCOUNT_ID: "cloud.account.id"; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_AVAILABILITY_ZONE: "cloud.availability_zone"; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_PROVIDER: "cloud.provider"; +/** + * The geographical region the resource is running. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_REGION: "cloud.region"; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_ID: "container.id"; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_NAME: "container.image.name"; +/** + * 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:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_TAGS: "container.image.tags"; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_NAME: "container.name"; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ARCH: "host.arch"; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ID: "host.id"; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_ID: "host.image.id"; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_NAME: "host.image.name"; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_VERSION: "host.image.version"; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_NAME: "host.name"; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_TYPE: "host.type"; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CLUSTER_NAME: "k8s.cluster.name"; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_NAME: "k8s.deployment.name"; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_NAME: "k8s.namespace.name"; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_NAME: "k8s.pod.name"; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_TYPE: "os.type"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_VERSION: "os.version"; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND: "process.command"; +/** + * 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`. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND_ARGS: "process.command_args"; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_NAME: "process.executable.name"; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_PATH: "process.executable.path"; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_OWNER: "process.owner"; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_PID: "process.pid"; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_DESCRIPTION: "process.runtime.description"; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_NAME: "process.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_VERSION: "process.runtime.version"; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_INSTANCE_ID: "service.instance.id"; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_NAMESPACE: "service.namespace"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_DESCRIPTION: "webengine.description"; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_NAME: "webengine.name"; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_VERSION: "webengine.version"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/semconv.js new file mode 100644 index 0000000..ef5f5db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/semconv.js @@ -0,0 +1,332 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id'; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone'; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_PROVIDER = 'cloud.provider'; +/** + * The geographical region the resource is running. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_REGION = 'cloud.region'; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_ID = 'container.id'; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name'; +/** + * 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:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags'; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_NAME = 'container.name'; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_ARCH = 'host.arch'; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_ID = 'host.id'; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_ID = 'host.image.id'; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_NAME = 'host.image.name'; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_VERSION = 'host.image.version'; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_NAME = 'host.name'; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_TYPE = 'host.type'; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name'; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name'; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name'; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_NAME = 'k8s.pod.name'; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_TYPE = 'os.type'; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_VERSION = 'os.version'; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_COMMAND = 'process.command'; +/** + * 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`. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args'; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name'; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path'; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_OWNER = 'process.owner'; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_PID = 'process.pid'; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version'; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id'; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_NAMESPACE = 'service.namespace'; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description'; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_NAME = 'webengine.name'; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_VERSION = 'webengine.version'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/semconv.js.map new file mode 100644 index 0000000..b623fae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id' as const;\n\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 */\nexport const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone' as const;\n\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 */\nexport const ATTR_CLOUD_PROVIDER = 'cloud.provider' as const;\n\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 */\nexport const ATTR_CLOUD_REGION = 'cloud.region' as const;\n\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 */\nexport const ATTR_CONTAINER_ID = 'container.id' as const;\n\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 */\nexport const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name' as const;\n\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 */\nexport const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags' as const;\n\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 */\nexport const ATTR_CONTAINER_NAME = 'container.name' as const;\n\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 */\nexport const ATTR_HOST_ARCH = 'host.arch' as const;\n\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 */\nexport const ATTR_HOST_ID = 'host.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_ID = 'host.image.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_NAME = 'host.image.name' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_VERSION = 'host.image.version' as const;\n\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 */\nexport const ATTR_HOST_NAME = 'host.name' as const;\n\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 */\nexport const ATTR_HOST_TYPE = 'host.type' as const;\n\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 */\nexport const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name' as const;\n\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 */\nexport const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' as const;\n\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 */\nexport const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name' as const;\n\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 */\nexport const ATTR_K8S_POD_NAME = 'k8s.pod.name' as const;\n\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 */\nexport const ATTR_OS_TYPE = 'os.type' as const;\n\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 */\nexport const ATTR_OS_VERSION = 'os.version' as const;\n\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 */\nexport const ATTR_PROCESS_COMMAND = 'process.command' as const;\n\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 */\nexport const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path' as const;\n\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 */\nexport const ATTR_PROCESS_OWNER = 'process.owner' as const;\n\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 */\nexport const ATTR_PROCESS_PID = 'process.pid' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_DESCRIPTION =\n 'process.runtime.description' as const;\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 */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version' as const;\n\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 */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\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 */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\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 */\nexport const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description' as const;\n\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 */\nexport const ATTR_WEBENGINE_NAME = 'webengine.name' as const;\n\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 */\nexport const ATTR_WEBENGINE_VERSION = 'webengine.version' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/types.d.ts new file mode 100644 index 0000000..8db9171 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/types.d.ts @@ -0,0 +1,44 @@ +import { AttributeValue } from '@opentelemetry/api'; +import { ResourceDetectionConfig } from './config'; +/** + * Interface for a Resource Detector. + * A resource detector returns a set of detected resource attributes. + * A detected resource attribute may be an {@link AttributeValue} or a Promise of an AttributeValue. + */ +export interface ResourceDetector { + /** + * Detect resource attributes. + * + * @returns a {@link DetectedResource} object containing detected resource attributes + */ + detect(config?: ResourceDetectionConfig): DetectedResource; +} +export type DetectedResource = { + /** + * Detected resource attributes. + */ + attributes?: DetectedResourceAttributes; +}; +/** + * An object representing detected resource attributes. + * Value may be {@link AttributeValue}s, a promise to an {@link AttributeValue}, or undefined. + */ +type DetectedResourceAttributeValue = MaybePromise; +/** + * An object representing detected resource attributes. + * Values may be {@link AttributeValue}s or a promise to an {@link AttributeValue}. + */ +export type DetectedResourceAttributes = Record; +export type MaybePromise = T | Promise; +export type RawResourceAttribute = [ + string, + MaybePromise +]; +/** + * Options for creating a {@link Resource}. + */ +export type ResourceOptions = { + schemaUrl?: string; +}; +export {}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/types.js.map new file mode 100644 index 0000000..d630f03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { AttributeValue } from '@opentelemetry/api';\nimport { ResourceDetectionConfig } from './config';\n\n/**\n * Interface for a Resource Detector.\n * A resource detector returns a set of detected resource attributes.\n * A detected resource attribute may be an {@link AttributeValue} or a Promise of an AttributeValue.\n */\nexport interface ResourceDetector {\n /**\n * Detect resource attributes.\n *\n * @returns a {@link DetectedResource} object containing detected resource attributes\n */\n detect(config?: ResourceDetectionConfig): DetectedResource;\n}\n\nexport type DetectedResource = {\n /**\n * Detected resource attributes.\n */\n attributes?: DetectedResourceAttributes;\n};\n\n/**\n * An object representing detected resource attributes.\n * Value may be {@link AttributeValue}s, a promise to an {@link AttributeValue}, or undefined.\n */\ntype DetectedResourceAttributeValue = MaybePromise;\n\n/**\n * An object representing detected resource attributes.\n * Values may be {@link AttributeValue}s or a promise to an {@link AttributeValue}.\n */\nexport type DetectedResourceAttributes = Record<\n string,\n DetectedResourceAttributeValue\n>;\n\nexport type MaybePromise = T | Promise;\n\nexport type RawResourceAttribute = [\n string,\n MaybePromise,\n];\n\n/**\n * Options for creating a {@link Resource}.\n */\nexport type ResourceOptions = {\n schemaUrl?: string;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/utils.d.ts new file mode 100644 index 0000000..765f036 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/utils.d.ts @@ -0,0 +1,2 @@ +export declare const isPromiseLike: (val: unknown) => val is PromiseLike; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/utils.js new file mode 100644 index 0000000..f3c7356 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/utils.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const isPromiseLike = (val) => { + return (val !== null && + typeof val === 'object' && + typeof val.then === 'function'); +}; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/utils.js.map new file mode 100644 index 0000000..0928847 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,GAAY,EAAyB,EAAE;IACtE,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAQ,GAA+B,CAAC,IAAI,KAAK,UAAU,CAC5D,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport const isPromiseLike = (val: unknown): val is PromiseLike => {\n return (\n val !== null &&\n typeof val === 'object' &&\n typeof (val as Partial>).then === 'function'\n );\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/version.d.ts new file mode 100644 index 0000000..4539690 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "2.5.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/version.js new file mode 100644 index 0000000..fabcf00 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '2.5.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/version.js.map new file mode 100644 index 0000000..277b52a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/esnext/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.5.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/Resource.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/Resource.d.ts new file mode 100644 index 0000000..2870d9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/Resource.d.ts @@ -0,0 +1,46 @@ +import { Attributes } from '@opentelemetry/api'; +import { RawResourceAttribute } from './types'; +/** + * An interface that represents a resource. A Resource describes the entity for which signals (metrics or trace) are + * collected. + * + * This interface is NOT user-implementable. Valid ways to obtain a {@link Resource} are by using either of these functions + * - {@link resourceFromAttributes} + * - {@link emptyResource} + * - {@link defaultResource} + * - {@link detectResources} + */ +export interface Resource { + /** + * Check if async attributes have resolved. This is useful to avoid awaiting + * waitForAsyncAttributes (which will introduce asynchronous behavior) when not necessary. + * + * @returns true if the resource "attributes" property is not yet settled to its final value + */ + readonly asyncAttributesPending?: boolean; + /** + * @returns the Resource's attributes. + */ + readonly attributes: Attributes; + /** + * @returns the Resource's schema URL or undefined if not set. + */ + readonly schemaUrl?: string; + /** + * Returns a promise that will never be rejected. Resolves when all async attributes have finished being added to + * this Resource's attributes. This is useful in exporters to block until resource detection + * has finished. + */ + waitForAsyncAttributes?(): Promise; + /** + * Returns a new, merged {@link Resource} by merging the current Resource + * with the other Resource. In case of a collision, other Resource takes + * precedence. + * + * @param other the Resource that will be merged with this. + * @returns the newly merged Resource. + */ + merge(other: Resource | null): Resource; + getRawAttributes(): RawResourceAttribute[]; +} +//# sourceMappingURL=Resource.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/Resource.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/Resource.js new file mode 100644 index 0000000..55663f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/Resource.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Resource.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/Resource.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/Resource.js.map new file mode 100644 index 0000000..5a9e6cf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/Resource.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Resource.js","sourceRoot":"","sources":["../../src/Resource.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes } from '@opentelemetry/api';\nimport { RawResourceAttribute } from './types';\n\n/**\n * An interface that represents a resource. A Resource describes the entity for which signals (metrics or trace) are\n * collected.\n *\n * This interface is NOT user-implementable. Valid ways to obtain a {@link Resource} are by using either of these functions\n * - {@link resourceFromAttributes}\n * - {@link emptyResource}\n * - {@link defaultResource}\n * - {@link detectResources}\n */\nexport interface Resource {\n /**\n * Check if async attributes have resolved. This is useful to avoid awaiting\n * waitForAsyncAttributes (which will introduce asynchronous behavior) when not necessary.\n *\n * @returns true if the resource \"attributes\" property is not yet settled to its final value\n */\n readonly asyncAttributesPending?: boolean;\n\n /**\n * @returns the Resource's attributes.\n */\n readonly attributes: Attributes;\n\n /**\n * @returns the Resource's schema URL or undefined if not set.\n */\n readonly schemaUrl?: string;\n\n /**\n * Returns a promise that will never be rejected. Resolves when all async attributes have finished being added to\n * this Resource's attributes. This is useful in exporters to block until resource detection\n * has finished.\n */\n waitForAsyncAttributes?(): Promise;\n\n /**\n * Returns a new, merged {@link Resource} by merging the current Resource\n * with the other Resource. In case of a collision, other Resource takes\n * precedence.\n *\n * @param other the Resource that will be merged with this.\n * @returns the newly merged Resource.\n */\n merge(other: Resource | null): Resource;\n\n getRawAttributes(): RawResourceAttribute[];\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/ResourceImpl.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/ResourceImpl.d.ts new file mode 100644 index 0000000..6c7af7a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/ResourceImpl.d.ts @@ -0,0 +1,7 @@ +import { Resource } from './Resource'; +import { DetectedResource, DetectedResourceAttributes, ResourceOptions } from './types'; +export declare function resourceFromAttributes(attributes: DetectedResourceAttributes, options?: ResourceOptions): Resource; +export declare function resourceFromDetectedResource(detectedResource: DetectedResource, options?: ResourceOptions): Resource; +export declare function emptyResource(): Resource; +export declare function defaultResource(): Resource; +//# sourceMappingURL=ResourceImpl.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/ResourceImpl.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/ResourceImpl.js new file mode 100644 index 0000000..f9bf6d0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/ResourceImpl.js @@ -0,0 +1,167 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultResource = exports.emptyResource = exports.resourceFromDetectedResource = exports.resourceFromAttributes = void 0; +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const default_service_name_1 = require("./default-service-name"); +const utils_1 = require("./utils"); +class ResourceImpl { + _rawAttributes; + _asyncAttributesPending = false; + _schemaUrl; + _memoizedAttributes; + static FromAttributeList(attributes, options) { + const res = new ResourceImpl({}, options); + res._rawAttributes = guardedRawAttributes(attributes); + res._asyncAttributesPending = + attributes.filter(([_, val]) => (0, utils_1.isPromiseLike)(val)).length > 0; + return res; + } + constructor( + /** + * A dictionary of attributes with string keys and values that provide + * information about the entity as numbers, strings or booleans + * TODO: Consider to add check/validation on attributes. + */ + resource, options) { + const attributes = resource.attributes ?? {}; + this._rawAttributes = Object.entries(attributes).map(([k, v]) => { + if ((0, utils_1.isPromiseLike)(v)) { + // side-effect + this._asyncAttributesPending = true; + } + return [k, v]; + }); + this._rawAttributes = guardedRawAttributes(this._rawAttributes); + this._schemaUrl = validateSchemaUrl(options?.schemaUrl); + } + get asyncAttributesPending() { + return this._asyncAttributesPending; + } + async waitForAsyncAttributes() { + if (!this.asyncAttributesPending) { + return; + } + for (let i = 0; i < this._rawAttributes.length; i++) { + const [k, v] = this._rawAttributes[i]; + this._rawAttributes[i] = [k, (0, utils_1.isPromiseLike)(v) ? await v : v]; + } + this._asyncAttributesPending = false; + } + get attributes() { + if (this.asyncAttributesPending) { + api_1.diag.error('Accessing resource attributes before async attributes settled'); + } + if (this._memoizedAttributes) { + return this._memoizedAttributes; + } + const attrs = {}; + for (const [k, v] of this._rawAttributes) { + if ((0, utils_1.isPromiseLike)(v)) { + api_1.diag.debug(`Unsettled resource attribute ${k} skipped`); + continue; + } + if (v != null) { + attrs[k] ??= v; + } + } + // only memoize output if all attributes are settled + if (!this._asyncAttributesPending) { + this._memoizedAttributes = attrs; + } + return attrs; + } + getRawAttributes() { + return this._rawAttributes; + } + get schemaUrl() { + return this._schemaUrl; + } + merge(resource) { + if (resource == null) + return this; + // Order is important + // Spec states incoming attributes override existing attributes + const mergedSchemaUrl = mergeSchemaUrl(this, resource); + const mergedOptions = mergedSchemaUrl + ? { schemaUrl: mergedSchemaUrl } + : undefined; + return ResourceImpl.FromAttributeList([...resource.getRawAttributes(), ...this.getRawAttributes()], mergedOptions); + } +} +function resourceFromAttributes(attributes, options) { + return ResourceImpl.FromAttributeList(Object.entries(attributes), options); +} +exports.resourceFromAttributes = resourceFromAttributes; +function resourceFromDetectedResource(detectedResource, options) { + return new ResourceImpl(detectedResource, options); +} +exports.resourceFromDetectedResource = resourceFromDetectedResource; +function emptyResource() { + return resourceFromAttributes({}); +} +exports.emptyResource = emptyResource; +function defaultResource() { + return resourceFromAttributes({ + [semantic_conventions_1.ATTR_SERVICE_NAME]: (0, default_service_name_1.defaultServiceName)(), + [semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE]: core_1.SDK_INFO[semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE], + [semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME]: core_1.SDK_INFO[semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME], + [semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION]: core_1.SDK_INFO[semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION], + }); +} +exports.defaultResource = defaultResource; +function guardedRawAttributes(attributes) { + return attributes.map(([k, v]) => { + if ((0, utils_1.isPromiseLike)(v)) { + return [ + k, + v.catch(err => { + api_1.diag.debug('promise rejection for resource attribute: %s - %s', k, err); + return undefined; + }), + ]; + } + return [k, v]; + }); +} +function validateSchemaUrl(schemaUrl) { + if (typeof schemaUrl === 'string' || schemaUrl === undefined) { + return schemaUrl; + } + api_1.diag.warn('Schema URL must be string or undefined, got %s. Schema URL will be ignored.', schemaUrl); + return undefined; +} +function mergeSchemaUrl(old, updating) { + const oldSchemaUrl = old?.schemaUrl; + const updatingSchemaUrl = updating?.schemaUrl; + const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === ''; + const isUpdatingEmpty = updatingSchemaUrl === undefined || updatingSchemaUrl === ''; + if (isOldEmpty) { + return updatingSchemaUrl; + } + if (isUpdatingEmpty) { + return oldSchemaUrl; + } + if (oldSchemaUrl === updatingSchemaUrl) { + return oldSchemaUrl; + } + 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); + return undefined; +} +//# sourceMappingURL=ResourceImpl.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/ResourceImpl.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/ResourceImpl.js.map new file mode 100644 index 0000000..4cd8eb1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/ResourceImpl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ResourceImpl.js","sourceRoot":"","sources":["../../src/ResourceImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, AttributeValue, diag } from '@opentelemetry/api';\nimport { SDK_INFO } from '@opentelemetry/core';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { Resource } from './Resource';\nimport { defaultServiceName } from './default-service-name';\nimport {\n DetectedResource,\n DetectedResourceAttributes,\n MaybePromise,\n RawResourceAttribute,\n ResourceOptions,\n} from './types';\nimport { isPromiseLike } from './utils';\n\nclass ResourceImpl implements Resource {\n private _rawAttributes: RawResourceAttribute[];\n private _asyncAttributesPending = false;\n private _schemaUrl?: string;\n\n private _memoizedAttributes?: Attributes;\n\n static FromAttributeList(\n attributes: [string, MaybePromise][],\n options?: ResourceOptions\n ): Resource {\n const res = new ResourceImpl({}, options);\n res._rawAttributes = guardedRawAttributes(attributes);\n res._asyncAttributesPending =\n attributes.filter(([_, val]) => isPromiseLike(val)).length > 0;\n return res;\n }\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: DetectedResource,\n options?: ResourceOptions\n ) {\n const attributes = resource.attributes ?? {};\n this._rawAttributes = Object.entries(attributes).map(([k, v]) => {\n if (isPromiseLike(v)) {\n // side-effect\n this._asyncAttributesPending = true;\n }\n\n return [k, v];\n });\n\n this._rawAttributes = guardedRawAttributes(this._rawAttributes);\n this._schemaUrl = validateSchemaUrl(options?.schemaUrl);\n }\n\n public get asyncAttributesPending(): boolean {\n return this._asyncAttributesPending;\n }\n\n public async waitForAsyncAttributes(): Promise {\n if (!this.asyncAttributesPending) {\n return;\n }\n\n for (let i = 0; i < this._rawAttributes.length; i++) {\n const [k, v] = this._rawAttributes[i];\n this._rawAttributes[i] = [k, isPromiseLike(v) ? await v : v];\n }\n\n this._asyncAttributesPending = false;\n }\n\n public get attributes(): Attributes {\n if (this.asyncAttributesPending) {\n diag.error(\n 'Accessing resource attributes before async attributes settled'\n );\n }\n\n if (this._memoizedAttributes) {\n return this._memoizedAttributes;\n }\n\n const attrs: Attributes = {};\n for (const [k, v] of this._rawAttributes) {\n if (isPromiseLike(v)) {\n diag.debug(`Unsettled resource attribute ${k} skipped`);\n continue;\n }\n if (v != null) {\n attrs[k] ??= v;\n }\n }\n\n // only memoize output if all attributes are settled\n if (!this._asyncAttributesPending) {\n this._memoizedAttributes = attrs;\n }\n\n return attrs;\n }\n\n public getRawAttributes(): RawResourceAttribute[] {\n return this._rawAttributes;\n }\n\n public get schemaUrl(): string | undefined {\n return this._schemaUrl;\n }\n\n public merge(resource: Resource | null): Resource {\n if (resource == null) return this;\n\n // Order is important\n // Spec states incoming attributes override existing attributes\n const mergedSchemaUrl = mergeSchemaUrl(this, resource);\n const mergedOptions: ResourceOptions | undefined = mergedSchemaUrl\n ? { schemaUrl: mergedSchemaUrl }\n : undefined;\n\n return ResourceImpl.FromAttributeList(\n [...resource.getRawAttributes(), ...this.getRawAttributes()],\n mergedOptions\n );\n }\n}\n\nexport function resourceFromAttributes(\n attributes: DetectedResourceAttributes,\n options?: ResourceOptions\n): Resource {\n return ResourceImpl.FromAttributeList(Object.entries(attributes), options);\n}\n\nexport function resourceFromDetectedResource(\n detectedResource: DetectedResource,\n options?: ResourceOptions\n): Resource {\n return new ResourceImpl(detectedResource, options);\n}\n\nexport function emptyResource(): Resource {\n return resourceFromAttributes({});\n}\n\nexport function defaultResource(): Resource {\n return resourceFromAttributes({\n [ATTR_SERVICE_NAME]: defaultServiceName(),\n [ATTR_TELEMETRY_SDK_LANGUAGE]: SDK_INFO[ATTR_TELEMETRY_SDK_LANGUAGE],\n [ATTR_TELEMETRY_SDK_NAME]: SDK_INFO[ATTR_TELEMETRY_SDK_NAME],\n [ATTR_TELEMETRY_SDK_VERSION]: SDK_INFO[ATTR_TELEMETRY_SDK_VERSION],\n });\n}\n\nfunction guardedRawAttributes(\n attributes: RawResourceAttribute[]\n): RawResourceAttribute[] {\n return attributes.map(([k, v]) => {\n if (isPromiseLike(v)) {\n return [\n k,\n v.catch(err => {\n diag.debug(\n 'promise rejection for resource attribute: %s - %s',\n k,\n err\n );\n return undefined;\n }),\n ];\n }\n return [k, v];\n });\n}\n\nfunction validateSchemaUrl(schemaUrl?: string): string | undefined {\n if (typeof schemaUrl === 'string' || schemaUrl === undefined) {\n return schemaUrl;\n }\n\n diag.warn(\n 'Schema URL must be string or undefined, got %s. Schema URL will be ignored.',\n schemaUrl\n );\n\n return undefined;\n}\n\nfunction mergeSchemaUrl(\n old: Resource,\n updating: Resource | null\n): string | undefined {\n const oldSchemaUrl = old?.schemaUrl;\n const updatingSchemaUrl = updating?.schemaUrl;\n\n const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === '';\n const isUpdatingEmpty =\n updatingSchemaUrl === undefined || updatingSchemaUrl === '';\n\n if (isOldEmpty) {\n return updatingSchemaUrl;\n }\n\n if (isUpdatingEmpty) {\n return oldSchemaUrl;\n }\n\n if (oldSchemaUrl === updatingSchemaUrl) {\n return oldSchemaUrl;\n }\n\n diag.warn(\n 'Schema URL merge conflict: old resource has \"%s\", updating resource has \"%s\". Resulting resource will have undefined Schema URL.',\n oldSchemaUrl,\n updatingSchemaUrl\n );\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/config.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/config.d.ts new file mode 100644 index 0000000..6858bd8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/config.d.ts @@ -0,0 +1,8 @@ +import type { ResourceDetector } from './types'; +/** + * ResourceDetectionConfig provides an interface for configuring resource auto-detection. + */ +export interface ResourceDetectionConfig { + detectors?: Array; +} +//# sourceMappingURL=config.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/config.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/config.js new file mode 100644 index 0000000..a830b21 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/config.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/config.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/config.js.map new file mode 100644 index 0000000..fa9e548 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/config.js.map @@ -0,0 +1 @@ +{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { ResourceDetector } from './types';\n\n/**\n * ResourceDetectionConfig provides an interface for configuring resource auto-detection.\n */\nexport interface ResourceDetectionConfig {\n detectors?: Array;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/default-service-name.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/default-service-name.d.ts new file mode 100644 index 0000000..d39946b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/default-service-name.d.ts @@ -0,0 +1,9 @@ +/** + * Returns the default service name for OpenTelemetry resources. + * In Node.js environments, returns "unknown_service:". + * In browser/edge environments, returns "unknown_service". + */ +export declare function defaultServiceName(): string; +/** @internal For testing purposes only */ +export declare function _clearDefaultServiceNameCache(): void; +//# sourceMappingURL=default-service-name.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/default-service-name.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/default-service-name.js new file mode 100644 index 0000000..a2490c4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/default-service-name.js @@ -0,0 +1,43 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._clearDefaultServiceNameCache = exports.defaultServiceName = void 0; +let serviceName; +/** + * Returns the default service name for OpenTelemetry resources. + * In Node.js environments, returns "unknown_service:". + * In browser/edge environments, returns "unknown_service". + */ +function defaultServiceName() { + if (serviceName === undefined) { + try { + const argv0 = globalThis.process.argv0; + serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service'; + } + catch { + serviceName = 'unknown_service'; + } + } + return serviceName; +} +exports.defaultServiceName = defaultServiceName; +/** @internal For testing purposes only */ +function _clearDefaultServiceNameCache() { + serviceName = undefined; +} +exports._clearDefaultServiceNameCache = _clearDefaultServiceNameCache; +//# sourceMappingURL=default-service-name.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/default-service-name.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/default-service-name.js.map new file mode 100644 index 0000000..79bf400 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/default-service-name.js.map @@ -0,0 +1 @@ +{"version":3,"file":"default-service-name.js","sourceRoot":"","sources":["../../src/default-service-name.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,IAAI,WAA+B,CAAC;AAEpC;;;;GAIG;AACH,SAAgB,kBAAkB;IAChC,IAAI,WAAW,KAAK,SAAS,EAAE;QAC7B,IAAI;YACF,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YACvC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;SACtE;QAAC,MAAM;YACN,WAAW,GAAG,iBAAiB,CAAC;SACjC;KACF;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAVD,gDAUC;AAED,0CAA0C;AAC1C,SAAgB,6BAA6B;IAC3C,WAAW,GAAG,SAAS,CAAC;AAC1B,CAAC;AAFD,sEAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nlet serviceName: string | undefined;\n\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 */\nexport function defaultServiceName(): string {\n if (serviceName === undefined) {\n try {\n const argv0 = globalThis.process.argv0;\n serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service';\n } catch {\n serviceName = 'unknown_service';\n }\n }\n return serviceName;\n}\n\n/** @internal For testing purposes only */\nexport function _clearDefaultServiceNameCache(): void {\n serviceName = undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detect-resources.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detect-resources.d.ts new file mode 100644 index 0000000..a796f9e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detect-resources.d.ts @@ -0,0 +1,9 @@ +import { Resource } from './Resource'; +import { ResourceDetectionConfig } from './config'; +/** + * Runs all resource detectors and returns the results merged into a single Resource. + * + * @param config Configuration for resource detection + */ +export declare const detectResources: (config?: ResourceDetectionConfig) => Resource; +//# sourceMappingURL=detect-resources.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detect-resources.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detect-resources.js new file mode 100644 index 0000000..0e9d28d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detect-resources.js @@ -0,0 +1,41 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.detectResources = void 0; +const api_1 = require("@opentelemetry/api"); +const ResourceImpl_1 = require("./ResourceImpl"); +/** + * Runs all resource detectors and returns the results merged into a single Resource. + * + * @param config Configuration for resource detection + */ +const detectResources = (config = {}) => { + const resources = (config.detectors || []).map(d => { + try { + const resource = (0, ResourceImpl_1.resourceFromDetectedResource)(d.detect(config)); + api_1.diag.debug(`${d.constructor.name} found resource.`, resource); + return resource; + } + catch (e) { + api_1.diag.debug(`${d.constructor.name} failed: ${e.message}`); + return (0, ResourceImpl_1.emptyResource)(); + } + }); + return resources.reduce((acc, resource) => acc.merge(resource), (0, ResourceImpl_1.emptyResource)()); +}; +exports.detectResources = detectResources; +//# sourceMappingURL=detect-resources.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detect-resources.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detect-resources.js.map new file mode 100644 index 0000000..bbdfe70 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detect-resources.js.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-resources.js","sourceRoot":"","sources":["../../src/detect-resources.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA0C;AAE1C,iDAA6E;AAG7E;;;;GAIG;AACI,MAAM,eAAe,GAAG,CAC7B,SAAkC,EAAE,EAC1B,EAAE;IACZ,MAAM,SAAS,GAAe,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7D,IAAI;YACF,MAAM,QAAQ,GAAG,IAAA,2CAA4B,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAChE,UAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAC9D,OAAO,QAAQ,CAAC;SACjB;QAAC,OAAO,CAAC,EAAE;YACV,UAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,OAAO,IAAA,4BAAa,GAAE,CAAC;SACxB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EACtC,IAAA,4BAAa,GAAE,CAChB,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,eAAe,mBAkB1B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\nimport { Resource } from './Resource';\nimport { emptyResource, resourceFromDetectedResource } from './ResourceImpl';\nimport { ResourceDetectionConfig } from './config';\n\n/**\n * Runs all resource detectors and returns the results merged into a single Resource.\n *\n * @param config Configuration for resource detection\n */\nexport const detectResources = (\n config: ResourceDetectionConfig = {}\n): Resource => {\n const resources: Resource[] = (config.detectors || []).map(d => {\n try {\n const resource = resourceFromDetectedResource(d.detect(config));\n diag.debug(`${d.constructor.name} found resource.`, resource);\n return resource;\n } catch (e) {\n diag.debug(`${d.constructor.name} failed: ${e.message}`);\n return emptyResource();\n }\n });\n\n return resources.reduce(\n (acc, resource) => acc.merge(resource),\n emptyResource()\n );\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.d.ts new file mode 100644 index 0000000..a365a1a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.d.ts @@ -0,0 +1,56 @@ +import { ResourceDetectionConfig } from '../config'; +import { DetectedResource, ResourceDetector } from '../types'; +/** + * EnvDetector can be used to detect the presence of and create a Resource + * from the OTEL_RESOURCE_ATTRIBUTES environment variable. + */ +declare class EnvDetector implements ResourceDetector { + private readonly _MAX_LENGTH; + private readonly _COMMA_SEPARATOR; + private readonly _LABEL_KEY_VALUE_SPLITTER; + private readonly _ERROR_MESSAGE_INVALID_CHARS; + private readonly _ERROR_MESSAGE_INVALID_VALUE; + /** + * Returns a {@link Resource} populated with attributes from the + * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async + * function to conform to the Detector interface. + * + * @param config The resource detection config + */ + detect(_config?: ResourceDetectionConfig): DetectedResource; + /** + * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment + * variable. + * + * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes describing + * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and + * paths are accepted as attribute keys. Values may be quoted or unquoted in + * general. If a value contains whitespace, =, or " characters, it must + * always be quoted. + * + * @param rawEnvAttributes The resource attributes as a comma-separated list + * of key/value pairs. + * @returns The sanitized resource attributes. + */ + private _parseResourceAttributes; + /** + * Determines whether the given String is a valid printable ASCII string with + * a length not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid. + */ + private _isValid; + private _isBaggageOctetString; + /** + * Determines whether the given String is a valid printable ASCII string with + * a length greater than 0 and not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid and not empty. + */ + private _isValidAndNotEmpty; +} +export declare const envDetector: EnvDetector; +export {}; +//# sourceMappingURL=EnvDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.js new file mode 100644 index 0000000..d88be5c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.js @@ -0,0 +1,134 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.envDetector = void 0; +const api_1 = require("@opentelemetry/api"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const core_1 = require("@opentelemetry/core"); +/** + * EnvDetector can be used to detect the presence of and create a Resource + * from the OTEL_RESOURCE_ATTRIBUTES environment variable. + */ +class EnvDetector { + // Type, attribute keys, and attribute values should not exceed 256 characters. + _MAX_LENGTH = 255; + // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes. + _COMMA_SEPARATOR = ','; + // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='. + _LABEL_KEY_VALUE_SPLITTER = '='; + _ERROR_MESSAGE_INVALID_CHARS = 'should be a ASCII string with a length greater than 0 and not exceed ' + + this._MAX_LENGTH + + ' characters.'; + _ERROR_MESSAGE_INVALID_VALUE = 'should be a ASCII string with a length not exceed ' + + this._MAX_LENGTH + + ' characters.'; + /** + * Returns a {@link Resource} populated with attributes from the + * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async + * function to conform to the Detector interface. + * + * @param config The resource detection config + */ + detect(_config) { + const attributes = {}; + const rawAttributes = (0, core_1.getStringFromEnv)('OTEL_RESOURCE_ATTRIBUTES'); + const serviceName = (0, core_1.getStringFromEnv)('OTEL_SERVICE_NAME'); + if (rawAttributes) { + try { + const parsedAttributes = this._parseResourceAttributes(rawAttributes); + Object.assign(attributes, parsedAttributes); + } + catch (e) { + api_1.diag.debug(`EnvDetector failed: ${e.message}`); + } + } + if (serviceName) { + attributes[semantic_conventions_1.ATTR_SERVICE_NAME] = serviceName; + } + return { attributes }; + } + /** + * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment + * variable. + * + * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes describing + * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and + * paths are accepted as attribute keys. Values may be quoted or unquoted in + * general. If a value contains whitespace, =, or " characters, it must + * always be quoted. + * + * @param rawEnvAttributes The resource attributes as a comma-separated list + * of key/value pairs. + * @returns The sanitized resource attributes. + */ + _parseResourceAttributes(rawEnvAttributes) { + if (!rawEnvAttributes) + return {}; + const attributes = {}; + const rawAttributes = rawEnvAttributes.split(this._COMMA_SEPARATOR, -1); + for (const rawAttribute of rawAttributes) { + const keyValuePair = rawAttribute.split(this._LABEL_KEY_VALUE_SPLITTER, -1); + if (keyValuePair.length !== 2) { + continue; + } + let [key, value] = keyValuePair; + // Leading and trailing whitespaces are trimmed. + key = key.trim(); + value = value.trim().split(/^"|"$/).join(''); + if (!this._isValidAndNotEmpty(key)) { + throw new Error(`Attribute key ${this._ERROR_MESSAGE_INVALID_CHARS}`); + } + if (!this._isValid(value)) { + throw new Error(`Attribute value ${this._ERROR_MESSAGE_INVALID_VALUE}`); + } + attributes[key] = decodeURIComponent(value); + } + return attributes; + } + /** + * Determines whether the given String is a valid printable ASCII string with + * a length not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid. + */ + _isValid(name) { + return name.length <= this._MAX_LENGTH && this._isBaggageOctetString(name); + } + // https://www.w3.org/TR/baggage/#definition + _isBaggageOctetString(str) { + for (let i = 0; i < str.length; i++) { + const ch = str.charCodeAt(i); + if (ch < 0x21 || ch === 0x2c || ch === 0x3b || ch === 0x5c || ch > 0x7e) { + return false; + } + } + return true; + } + /** + * Determines whether the given String is a valid printable ASCII string with + * a length greater than 0 and not exceed _MAX_LENGTH characters. + * + * @param str The String to be validated. + * @returns Whether the String is valid and not empty. + */ + _isValidAndNotEmpty(str) { + return str.length > 0 && this._isValid(str); + } +} +exports.envDetector = new EnvDetector(); +//# sourceMappingURL=EnvDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.js.map new file mode 100644 index 0000000..c94467d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"EnvDetector.js","sourceRoot":"","sources":["../../../src/detectors/EnvDetector.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, diag } from '@opentelemetry/api';\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport { ResourceDetectionConfig } from '../config';\nimport { DetectedResource, ResourceDetector } from '../types';\nimport { getStringFromEnv } from '@opentelemetry/core';\n\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 implements ResourceDetector {\n // Type, attribute keys, and attribute values should not exceed 256 characters.\n private readonly _MAX_LENGTH = 255;\n\n // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes.\n private readonly _COMMA_SEPARATOR = ',';\n\n // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='.\n private readonly _LABEL_KEY_VALUE_SPLITTER = '=';\n\n private readonly _ERROR_MESSAGE_INVALID_CHARS =\n 'should be a ASCII string with a length greater than 0 and not exceed ' +\n this._MAX_LENGTH +\n ' characters.';\n\n private readonly _ERROR_MESSAGE_INVALID_VALUE =\n 'should be a ASCII string with a length not exceed ' +\n this._MAX_LENGTH +\n ' characters.';\n\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?: ResourceDetectionConfig): DetectedResource {\n const attributes: Attributes = {};\n\n const rawAttributes = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n const serviceName = getStringFromEnv('OTEL_SERVICE_NAME');\n\n if (rawAttributes) {\n try {\n const parsedAttributes = this._parseResourceAttributes(rawAttributes);\n Object.assign(attributes, parsedAttributes);\n } catch (e) {\n diag.debug(`EnvDetector failed: ${e.message}`);\n }\n }\n\n if (serviceName) {\n attributes[ATTR_SERVICE_NAME] = serviceName;\n }\n\n return { attributes };\n }\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 describing\n * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and\n * paths are accepted as attribute keys. Values may be quoted or unquoted in\n * general. If a value contains whitespace, =, or \" characters, it must\n * always be quoted.\n *\n * @param rawEnvAttributes The resource attributes as a comma-separated list\n * of key/value pairs.\n * @returns The sanitized resource attributes.\n */\n private _parseResourceAttributes(rawEnvAttributes?: string): Attributes {\n if (!rawEnvAttributes) return {};\n\n const attributes: Attributes = {};\n const rawAttributes: string[] = rawEnvAttributes.split(\n this._COMMA_SEPARATOR,\n -1\n );\n for (const rawAttribute of rawAttributes) {\n const keyValuePair: string[] = rawAttribute.split(\n this._LABEL_KEY_VALUE_SPLITTER,\n -1\n );\n if (keyValuePair.length !== 2) {\n continue;\n }\n let [key, value] = keyValuePair;\n // Leading and trailing whitespaces are trimmed.\n key = key.trim();\n value = value.trim().split(/^\"|\"$/).join('');\n if (!this._isValidAndNotEmpty(key)) {\n throw new Error(`Attribute key ${this._ERROR_MESSAGE_INVALID_CHARS}`);\n }\n if (!this._isValid(value)) {\n throw new Error(`Attribute value ${this._ERROR_MESSAGE_INVALID_VALUE}`);\n }\n attributes[key] = decodeURIComponent(value);\n }\n return attributes;\n }\n\n /**\n * Determines whether the given String is a valid printable ASCII string with\n * a length not exceed _MAX_LENGTH characters.\n *\n * @param str The String to be validated.\n * @returns Whether the String is valid.\n */\n private _isValid(name: string): boolean {\n return name.length <= this._MAX_LENGTH && this._isBaggageOctetString(name);\n }\n\n // https://www.w3.org/TR/baggage/#definition\n private _isBaggageOctetString(str: string): boolean {\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n if (ch < 0x21 || ch === 0x2c || ch === 0x3b || ch === 0x5c || ch > 0x7e) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Determines whether the given String is a valid printable ASCII string with\n * a length greater than 0 and not exceed _MAX_LENGTH characters.\n *\n * @param str The String to be validated.\n * @returns Whether the String is valid and not empty.\n */\n private _isValidAndNotEmpty(str: string): boolean {\n return str.length > 0 && this._isValid(str);\n }\n}\n\nexport const envDetector = new EnvDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.d.ts new file mode 100644 index 0000000..52ec701 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.d.ts @@ -0,0 +1,6 @@ +import { DetectedResource, ResourceDetector } from '../types'; +export declare class NoopDetector implements ResourceDetector { + detect(): DetectedResource; +} +export declare const noopDetector: NoopDetector; +//# sourceMappingURL=NoopDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.js new file mode 100644 index 0000000..eb2cd7d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.js @@ -0,0 +1,28 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.noopDetector = exports.NoopDetector = void 0; +class NoopDetector { + detect() { + return { + attributes: {}, + }; + } +} +exports.NoopDetector = NoopDetector; +exports.noopDetector = new NoopDetector(); +//# sourceMappingURL=NoopDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.js.map new file mode 100644 index 0000000..06dd9cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopDetector.js","sourceRoot":"","sources":["../../../src/detectors/NoopDetector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,MAAa,YAAY;IACvB,MAAM;QACJ,OAAO;YACL,UAAU,EAAE,EAAE;SACf,CAAC;IACJ,CAAC;CACF;AAND,oCAMC;AAEY,QAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { DetectedResource, ResourceDetector } from '../types';\n\nexport class NoopDetector implements ResourceDetector {\n detect(): DetectedResource {\n return {\n attributes: {},\n };\n }\n}\n\nexport const noopDetector = new NoopDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/index.d.ts new file mode 100644 index 0000000..6a7b63c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/index.d.ts @@ -0,0 +1,4 @@ +export { envDetector } from './EnvDetector'; +export { hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './platform'; +export { noopDetector } from './NoopDetector'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/index.js new file mode 100644 index 0000000..73da00d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/index.js @@ -0,0 +1,28 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.noopDetector = exports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = exports.envDetector = void 0; +var EnvDetector_1 = require("./EnvDetector"); +Object.defineProperty(exports, "envDetector", { enumerable: true, get: function () { return EnvDetector_1.envDetector; } }); +var platform_1 = require("./platform"); +Object.defineProperty(exports, "hostDetector", { enumerable: true, get: function () { return platform_1.hostDetector; } }); +Object.defineProperty(exports, "osDetector", { enumerable: true, get: function () { return platform_1.osDetector; } }); +Object.defineProperty(exports, "processDetector", { enumerable: true, get: function () { return platform_1.processDetector; } }); +Object.defineProperty(exports, "serviceInstanceIdDetector", { enumerable: true, get: function () { return platform_1.serviceInstanceIdDetector; } }); +var NoopDetector_1 = require("./NoopDetector"); +Object.defineProperty(exports, "noopDetector", { enumerable: true, get: function () { return NoopDetector_1.noopDetector; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/index.js.map new file mode 100644 index 0000000..7dd1a68 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/detectors/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,uCAKoB;AAJlB,wGAAA,YAAY,OAAA;AACZ,sGAAA,UAAU,OAAA;AACV,2GAAA,eAAe,OAAA;AACf,qHAAA,yBAAyB,OAAA;AAE3B,+CAA8C;AAArC,4GAAA,YAAY,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { envDetector } from './EnvDetector';\nexport {\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from './platform';\nexport { noopDetector } from './NoopDetector';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/HostDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/HostDetector.d.ts new file mode 100644 index 0000000..60202e0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/HostDetector.d.ts @@ -0,0 +1,2 @@ +export declare const hostDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=HostDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/HostDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/HostDetector.js new file mode 100644 index 0000000..294eaa7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/HostDetector.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hostDetector = void 0; +const NoopDetector_1 = require("../../NoopDetector"); +exports.hostDetector = NoopDetector_1.noopDetector; +//# sourceMappingURL=HostDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/HostDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/HostDetector.js.map new file mode 100644 index 0000000..b89c1c7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/HostDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HostDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/HostDetector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAkD;AAErC,QAAA,YAAY,GAAG,2BAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\nexport const hostDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/OSDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/OSDetector.d.ts new file mode 100644 index 0000000..873e332 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/OSDetector.d.ts @@ -0,0 +1,2 @@ +export declare const osDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=OSDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/OSDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/OSDetector.js new file mode 100644 index 0000000..47f3d07 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/OSDetector.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.osDetector = void 0; +const NoopDetector_1 = require("../../NoopDetector"); +exports.osDetector = NoopDetector_1.noopDetector; +//# sourceMappingURL=OSDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/OSDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/OSDetector.js.map new file mode 100644 index 0000000..ca89a07 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/OSDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OSDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/OSDetector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAkD;AAErC,QAAA,UAAU,GAAG,2BAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\nexport const osDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ProcessDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ProcessDetector.d.ts new file mode 100644 index 0000000..54a3ddb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ProcessDetector.d.ts @@ -0,0 +1,2 @@ +export declare const processDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=ProcessDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ProcessDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ProcessDetector.js new file mode 100644 index 0000000..4330715 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ProcessDetector.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.processDetector = void 0; +const NoopDetector_1 = require("../../NoopDetector"); +exports.processDetector = NoopDetector_1.noopDetector; +//# sourceMappingURL=ProcessDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ProcessDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ProcessDetector.js.map new file mode 100644 index 0000000..3ba0eb7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ProcessDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProcessDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/ProcessDetector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAkD;AAErC,QAAA,eAAe,GAAG,2BAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\nexport const processDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ServiceInstanceIdDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ServiceInstanceIdDetector.d.ts new file mode 100644 index 0000000..a220191 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ServiceInstanceIdDetector.d.ts @@ -0,0 +1,5 @@ +/** + * @experimental + */ +export declare const serviceInstanceIdDetector: import("../../NoopDetector").NoopDetector; +//# sourceMappingURL=ServiceInstanceIdDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ServiceInstanceIdDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ServiceInstanceIdDetector.js new file mode 100644 index 0000000..d34515c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ServiceInstanceIdDetector.js @@ -0,0 +1,24 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serviceInstanceIdDetector = void 0; +const NoopDetector_1 = require("../../NoopDetector"); +/** + * @experimental + */ +exports.serviceInstanceIdDetector = NoopDetector_1.noopDetector; +//# sourceMappingURL=ServiceInstanceIdDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ServiceInstanceIdDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ServiceInstanceIdDetector.js.map new file mode 100644 index 0000000..e0f0205 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/ServiceInstanceIdDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ServiceInstanceIdDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/ServiceInstanceIdDetector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAkD;AAElD;;GAEG;AACU,QAAA,yBAAyB,GAAG,2BAAY,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { noopDetector } from '../../NoopDetector';\n\n/**\n * @experimental\n */\nexport const serviceInstanceIdDetector = noopDetector;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/index.d.ts new file mode 100644 index 0000000..42cb969 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/index.d.ts @@ -0,0 +1,5 @@ +export { hostDetector } from './HostDetector'; +export { osDetector } from './OSDetector'; +export { processDetector } from './ProcessDetector'; +export { serviceInstanceIdDetector } from './ServiceInstanceIdDetector'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/index.js new file mode 100644 index 0000000..9fc4c70 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/index.js @@ -0,0 +1,27 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = void 0; +var HostDetector_1 = require("./HostDetector"); +Object.defineProperty(exports, "hostDetector", { enumerable: true, get: function () { return HostDetector_1.hostDetector; } }); +var OSDetector_1 = require("./OSDetector"); +Object.defineProperty(exports, "osDetector", { enumerable: true, get: function () { return OSDetector_1.osDetector; } }); +var ProcessDetector_1 = require("./ProcessDetector"); +Object.defineProperty(exports, "processDetector", { enumerable: true, get: function () { return ProcessDetector_1.processDetector; } }); +var ServiceInstanceIdDetector_1 = require("./ServiceInstanceIdDetector"); +Object.defineProperty(exports, "serviceInstanceIdDetector", { enumerable: true, get: function () { return ServiceInstanceIdDetector_1.serviceInstanceIdDetector; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/index.js.map new file mode 100644 index 0000000..8b3c830 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { hostDetector } from './HostDetector';\nexport { osDetector } from './OSDetector';\nexport { processDetector } from './ProcessDetector';\nexport { serviceInstanceIdDetector } from './ServiceInstanceIdDetector';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/index.d.ts new file mode 100644 index 0000000..a6c355c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/index.d.ts @@ -0,0 +1,2 @@ +export { hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/index.js new file mode 100644 index 0000000..333c428 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/index.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var node_1 = require("./node"); +Object.defineProperty(exports, "hostDetector", { enumerable: true, get: function () { return node_1.hostDetector; } }); +Object.defineProperty(exports, "osDetector", { enumerable: true, get: function () { return node_1.osDetector; } }); +Object.defineProperty(exports, "processDetector", { enumerable: true, get: function () { return node_1.processDetector; } }); +Object.defineProperty(exports, "serviceInstanceIdDetector", { enumerable: true, get: function () { return node_1.serviceInstanceIdDetector; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/index.js.map new file mode 100644 index 0000000..fd6e4d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/detectors/platform/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,+BAKgB;AAJd,oGAAA,YAAY,OAAA;AACZ,kGAAA,UAAU,OAAA;AACV,uGAAA,eAAe,OAAA;AACf,iHAAA,yBAAyB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport {\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.d.ts new file mode 100644 index 0000000..85d731d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.d.ts @@ -0,0 +1,12 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * HostDetector detects the resources related to the host current process is + * running on. Currently only non-cloud-based attributes are included. + */ +declare class HostDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +export declare const hostDetector: HostDetector; +export {}; +//# sourceMappingURL=HostDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.js new file mode 100644 index 0000000..da3f41d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.js @@ -0,0 +1,38 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hostDetector = void 0; +const semconv_1 = require("../../../semconv"); +const os_1 = require("os"); +const getMachineId_1 = require("./machine-id/getMachineId"); +const utils_1 = require("./utils"); +/** + * HostDetector detects the resources related to the host current process is + * running on. Currently only non-cloud-based attributes are included. + */ +class HostDetector { + detect(_config) { + const attributes = { + [semconv_1.ATTR_HOST_NAME]: (0, os_1.hostname)(), + [semconv_1.ATTR_HOST_ARCH]: (0, utils_1.normalizeArch)((0, os_1.arch)()), + [semconv_1.ATTR_HOST_ID]: (0, getMachineId_1.getMachineId)(), + }; + return { attributes }; + } +} +exports.hostDetector = new HostDetector(); +//# sourceMappingURL=HostDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.js.map new file mode 100644 index 0000000..f16ccd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HostDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/HostDetector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,8CAAgF;AAChF,2BAAoC;AAOpC,4DAAyD;AACzD,mCAAwC;AAExC;;;GAGG;AACH,MAAM,YAAY;IAChB,MAAM,CAAC,OAAiC;QACtC,MAAM,UAAU,GAA+B;YAC7C,CAAC,wBAAc,CAAC,EAAE,IAAA,aAAQ,GAAE;YAC5B,CAAC,wBAAc,CAAC,EAAE,IAAA,qBAAa,EAAC,IAAA,SAAI,GAAE,CAAC;YACvC,CAAC,sBAAY,CAAC,EAAE,IAAA,2BAAY,GAAE;SAC/B,CAAC;QAEF,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AAEY,QAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ATTR_HOST_ARCH, ATTR_HOST_ID, ATTR_HOST_NAME } from '../../../semconv';\nimport { arch, hostname } from 'os';\nimport { ResourceDetectionConfig } from '../../../config';\nimport {\n DetectedResource,\n DetectedResourceAttributes,\n ResourceDetector,\n} from '../../../types';\nimport { getMachineId } from './machine-id/getMachineId';\nimport { normalizeArch } from './utils';\n\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 implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n const attributes: DetectedResourceAttributes = {\n [ATTR_HOST_NAME]: hostname(),\n [ATTR_HOST_ARCH]: normalizeArch(arch()),\n [ATTR_HOST_ID]: getMachineId(),\n };\n\n return { attributes };\n }\n}\n\nexport const hostDetector = new HostDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.d.ts new file mode 100644 index 0000000..ee0516a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.d.ts @@ -0,0 +1,12 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * OSDetector detects the resources related to the operating system (OS) on + * which the process represented by this resource is running. + */ +declare class OSDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +export declare const osDetector: OSDetector; +export {}; +//# sourceMappingURL=OSDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.js new file mode 100644 index 0000000..2af15dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.js @@ -0,0 +1,36 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.osDetector = void 0; +const semconv_1 = require("../../../semconv"); +const os_1 = require("os"); +const utils_1 = require("./utils"); +/** + * OSDetector detects the resources related to the operating system (OS) on + * which the process represented by this resource is running. + */ +class OSDetector { + detect(_config) { + const attributes = { + [semconv_1.ATTR_OS_TYPE]: (0, utils_1.normalizeType)((0, os_1.platform)()), + [semconv_1.ATTR_OS_VERSION]: (0, os_1.release)(), + }; + return { attributes }; + } +} +exports.osDetector = new OSDetector(); +//# sourceMappingURL=OSDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.js.map new file mode 100644 index 0000000..4069ad0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OSDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/OSDetector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,8CAAiE;AACjE,2BAAuC;AAGvC,mCAAwC;AAExC;;;GAGG;AACH,MAAM,UAAU;IACd,MAAM,CAAC,OAAiC;QACtC,MAAM,UAAU,GAAe;YAC7B,CAAC,sBAAY,CAAC,EAAE,IAAA,qBAAa,EAAC,IAAA,aAAQ,GAAE,CAAC;YACzC,CAAC,yBAAe,CAAC,EAAE,IAAA,YAAO,GAAE;SAC7B,CAAC;QACF,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AAEY,QAAA,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes } from '@opentelemetry/api';\nimport { ATTR_OS_TYPE, ATTR_OS_VERSION } from '../../../semconv';\nimport { platform, release } from 'os';\nimport { ResourceDetectionConfig } from '../../../config';\nimport { DetectedResource, ResourceDetector } from '../../../types';\nimport { normalizeType } from './utils';\n\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 implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n const attributes: Attributes = {\n [ATTR_OS_TYPE]: normalizeType(platform()),\n [ATTR_OS_VERSION]: release(),\n };\n return { attributes };\n }\n}\n\nexport const osDetector = new OSDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.d.ts new file mode 100644 index 0000000..1b9e8f4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.d.ts @@ -0,0 +1,12 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * ProcessDetector will be used to detect the resources related current process running + * and being instrumented from the NodeJS Process module. + */ +declare class ProcessDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +export declare const processDetector: ProcessDetector; +export {}; +//# sourceMappingURL=ProcessDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.js new file mode 100644 index 0000000..32c3aaa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.js @@ -0,0 +1,55 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.processDetector = void 0; +const api_1 = require("@opentelemetry/api"); +const semconv_1 = require("../../../semconv"); +const os = require("os"); +/** + * ProcessDetector will be used to detect the resources related current process running + * and being instrumented from the NodeJS Process module. + */ +class ProcessDetector { + detect(_config) { + const attributes = { + [semconv_1.ATTR_PROCESS_PID]: process.pid, + [semconv_1.ATTR_PROCESS_EXECUTABLE_NAME]: process.title, + [semconv_1.ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath, + [semconv_1.ATTR_PROCESS_COMMAND_ARGS]: [ + process.argv[0], + ...process.execArgv, + ...process.argv.slice(1), + ], + [semconv_1.ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node, + [semconv_1.ATTR_PROCESS_RUNTIME_NAME]: 'nodejs', + [semconv_1.ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js', + }; + if (process.argv.length > 1) { + attributes[semconv_1.ATTR_PROCESS_COMMAND] = process.argv[1]; + } + try { + const userInfo = os.userInfo(); + attributes[semconv_1.ATTR_PROCESS_OWNER] = userInfo.username; + } + catch (e) { + api_1.diag.debug(`error obtaining process owner: ${e}`); + } + return { attributes }; + } +} +exports.processDetector = new ProcessDetector(); +//# sourceMappingURL=ProcessDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.js.map new file mode 100644 index 0000000..ecaec15 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProcessDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/ProcessDetector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAsD;AACtD,8CAU0B;AAC1B,yBAAyB;AAIzB;;;GAGG;AACH,MAAM,eAAe;IACnB,MAAM,CAAC,OAAiC;QACtC,MAAM,UAAU,GAAe;YAC7B,CAAC,0BAAgB,CAAC,EAAE,OAAO,CAAC,GAAG;YAC/B,CAAC,sCAA4B,CAAC,EAAE,OAAO,CAAC,KAAK;YAC7C,CAAC,sCAA4B,CAAC,EAAE,OAAO,CAAC,QAAQ;YAChD,CAAC,mCAAyB,CAAC,EAAE;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACf,GAAG,OAAO,CAAC,QAAQ;gBACnB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACzB;YACD,CAAC,sCAA4B,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;YACrD,CAAC,mCAAyB,CAAC,EAAE,QAAQ;YACrC,CAAC,0CAAgC,CAAC,EAAE,SAAS;SAC9C,CAAC;QAEF,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,UAAU,CAAC,8BAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpD;QAED,IAAI;YACF,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC/B,UAAU,CAAC,4BAAkB,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;SACpD;QAAC,OAAO,CAAC,EAAE;YACV,UAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;SACnD;QAED,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AAEY,QAAA,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Attributes, diag } from '@opentelemetry/api';\nimport {\n ATTR_PROCESS_COMMAND,\n ATTR_PROCESS_COMMAND_ARGS,\n ATTR_PROCESS_EXECUTABLE_NAME,\n ATTR_PROCESS_EXECUTABLE_PATH,\n ATTR_PROCESS_OWNER,\n ATTR_PROCESS_PID,\n ATTR_PROCESS_RUNTIME_DESCRIPTION,\n ATTR_PROCESS_RUNTIME_NAME,\n ATTR_PROCESS_RUNTIME_VERSION,\n} from '../../../semconv';\nimport * as os from 'os';\nimport { ResourceDetectionConfig } from '../../../config';\nimport { DetectedResource, ResourceDetector } from '../../../types';\n\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 implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n const attributes: Attributes = {\n [ATTR_PROCESS_PID]: process.pid,\n [ATTR_PROCESS_EXECUTABLE_NAME]: process.title,\n [ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath,\n [ATTR_PROCESS_COMMAND_ARGS]: [\n process.argv[0],\n ...process.execArgv,\n ...process.argv.slice(1),\n ],\n [ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node,\n [ATTR_PROCESS_RUNTIME_NAME]: 'nodejs',\n [ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js',\n };\n\n if (process.argv.length > 1) {\n attributes[ATTR_PROCESS_COMMAND] = process.argv[1];\n }\n\n try {\n const userInfo = os.userInfo();\n attributes[ATTR_PROCESS_OWNER] = userInfo.username;\n } catch (e) {\n diag.debug(`error obtaining process owner: ${e}`);\n }\n\n return { attributes };\n }\n}\n\nexport const processDetector = new ProcessDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.d.ts new file mode 100644 index 0000000..7cd453a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.d.ts @@ -0,0 +1,14 @@ +import { ResourceDetectionConfig } from '../../../config'; +import { DetectedResource, ResourceDetector } from '../../../types'; +/** + * ServiceInstanceIdDetector detects the resources related to the service instance ID. + */ +declare class ServiceInstanceIdDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource; +} +/** + * @experimental + */ +export declare const serviceInstanceIdDetector: ServiceInstanceIdDetector; +export {}; +//# sourceMappingURL=ServiceInstanceIdDetector.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.js new file mode 100644 index 0000000..c849fe4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.js @@ -0,0 +1,37 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serviceInstanceIdDetector = void 0; +const semconv_1 = require("../../../semconv"); +const crypto_1 = require("crypto"); +/** + * ServiceInstanceIdDetector detects the resources related to the service instance ID. + */ +class ServiceInstanceIdDetector { + detect(_config) { + return { + attributes: { + [semconv_1.ATTR_SERVICE_INSTANCE_ID]: (0, crypto_1.randomUUID)(), + }, + }; + } +} +/** + * @experimental + */ +exports.serviceInstanceIdDetector = new ServiceInstanceIdDetector(); +//# sourceMappingURL=ServiceInstanceIdDetector.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.js.map new file mode 100644 index 0000000..86dc118 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ServiceInstanceIdDetector.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/ServiceInstanceIdDetector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,8CAA4D;AAC5D,mCAAoC;AAIpC;;GAEG;AACH,MAAM,yBAAyB;IAC7B,MAAM,CAAC,OAAiC;QACtC,OAAO;YACL,UAAU,EAAE;gBACV,CAAC,kCAAwB,CAAC,EAAE,IAAA,mBAAU,GAAE;aACzC;SACF,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACU,QAAA,yBAAyB,GAAG,IAAI,yBAAyB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ATTR_SERVICE_INSTANCE_ID } from '../../../semconv';\nimport { randomUUID } from 'crypto';\nimport { ResourceDetectionConfig } from '../../../config';\nimport { DetectedResource, ResourceDetector } from '../../../types';\n\n/**\n * ServiceInstanceIdDetector detects the resources related to the service instance ID.\n */\nclass ServiceInstanceIdDetector implements ResourceDetector {\n detect(_config?: ResourceDetectionConfig): DetectedResource {\n return {\n attributes: {\n [ATTR_SERVICE_INSTANCE_ID]: randomUUID(),\n },\n };\n }\n}\n\n/**\n * @experimental\n */\nexport const serviceInstanceIdDetector = new ServiceInstanceIdDetector();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.d.ts new file mode 100644 index 0000000..42cb969 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.d.ts @@ -0,0 +1,5 @@ +export { hostDetector } from './HostDetector'; +export { osDetector } from './OSDetector'; +export { processDetector } from './ProcessDetector'; +export { serviceInstanceIdDetector } from './ServiceInstanceIdDetector'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.js new file mode 100644 index 0000000..9fc4c70 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.js @@ -0,0 +1,27 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = void 0; +var HostDetector_1 = require("./HostDetector"); +Object.defineProperty(exports, "hostDetector", { enumerable: true, get: function () { return HostDetector_1.hostDetector; } }); +var OSDetector_1 = require("./OSDetector"); +Object.defineProperty(exports, "osDetector", { enumerable: true, get: function () { return OSDetector_1.osDetector; } }); +var ProcessDetector_1 = require("./ProcessDetector"); +Object.defineProperty(exports, "processDetector", { enumerable: true, get: function () { return ProcessDetector_1.processDetector; } }); +var ServiceInstanceIdDetector_1 = require("./ServiceInstanceIdDetector"); +Object.defineProperty(exports, "serviceInstanceIdDetector", { enumerable: true, get: function () { return ServiceInstanceIdDetector_1.serviceInstanceIdDetector; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.js.map new file mode 100644 index 0000000..8ad920b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { hostDetector } from './HostDetector';\nexport { osDetector } from './OSDetector';\nexport { processDetector } from './ProcessDetector';\nexport { serviceInstanceIdDetector } from './ServiceInstanceIdDetector';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.d.ts new file mode 100644 index 0000000..5c3f34b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.d.ts @@ -0,0 +1,4 @@ +/// +import * as child_process from 'child_process'; +export declare const execAsync: typeof child_process.exec.__promisify__; +//# sourceMappingURL=execAsync.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js new file mode 100644 index 0000000..6688a2a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.execAsync = void 0; +const child_process = require("child_process"); +const util = require("util"); +exports.execAsync = util.promisify(child_process.exec); +//# sourceMappingURL=execAsync.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js.map new file mode 100644 index 0000000..c395997 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js.map @@ -0,0 +1 @@ +{"version":3,"file":"execAsync.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/execAsync.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,+CAA+C;AAC/C,6BAA6B;AAEhB,QAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as child_process from 'child_process';\nimport * as util from 'util';\n\nexport const execAsync = util.promisify(child_process.exec);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.d.ts new file mode 100644 index 0000000..c6b382d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-bsd.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js new file mode 100644 index 0000000..282aa32 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js @@ -0,0 +1,40 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getMachineId = void 0; +const fs_1 = require("fs"); +const execAsync_1 = require("./execAsync"); +const api_1 = require("@opentelemetry/api"); +async function getMachineId() { + try { + const result = await fs_1.promises.readFile('/etc/hostid', { encoding: 'utf8' }); + return result.trim(); + } + catch (e) { + api_1.diag.debug(`error reading machine id: ${e}`); + } + try { + const result = await (0, execAsync_1.execAsync)('kenv -q smbios.system.uuid'); + return result.stdout.trim(); + } + catch (e) { + api_1.diag.debug(`error reading machine id: ${e}`); + } + return undefined; +} +exports.getMachineId = getMachineId; +//# sourceMappingURL=getMachineId-bsd.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js.map new file mode 100644 index 0000000..9b4a368 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-bsd.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-bsd.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2BAAoC;AACpC,2CAAwC;AACxC,4CAA0C;AAEnC,KAAK,UAAU,YAAY;IAChC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;KACtB;IAAC,OAAO,CAAC,EAAE;QACV,UAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAS,EAAC,4BAA4B,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KAC7B;IAAC,OAAO,CAAC,EAAE;QACV,UAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAhBD,oCAgBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { promises as fs } from 'fs';\nimport { execAsync } from './execAsync';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n try {\n const result = await fs.readFile('/etc/hostid', { encoding: 'utf8' });\n return result.trim();\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n try {\n const result = await execAsync('kenv -q smbios.system.uuid');\n return result.stdout.trim();\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.d.ts new file mode 100644 index 0000000..83d717a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-darwin.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js new file mode 100644 index 0000000..143945e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js @@ -0,0 +1,41 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getMachineId = void 0; +const execAsync_1 = require("./execAsync"); +const api_1 = require("@opentelemetry/api"); +async function getMachineId() { + try { + const result = await (0, execAsync_1.execAsync)('ioreg -rd1 -c "IOPlatformExpertDevice"'); + const idLine = result.stdout + .split('\n') + .find(line => line.includes('IOPlatformUUID')); + if (!idLine) { + return undefined; + } + const parts = idLine.split('" = "'); + if (parts.length === 2) { + return parts[1].slice(0, -1); + } + } + catch (e) { + api_1.diag.debug(`error reading machine id: ${e}`); + } + return undefined; +} +exports.getMachineId = getMachineId; +//# sourceMappingURL=getMachineId-darwin.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js.map new file mode 100644 index 0000000..d3c2d25 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-darwin.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-darwin.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2CAAwC;AACxC,4CAA0C;AAEnC,KAAK,UAAU,YAAY;IAChC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAS,EAAC,wCAAwC,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;aACzB,KAAK,CAAC,IAAI,CAAC;aACX,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC9B;KACF;IAAC,OAAO,CAAC,EAAE;QACV,UAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AArBD,oCAqBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { execAsync } from './execAsync';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n try {\n const result = await execAsync('ioreg -rd1 -c \"IOPlatformExpertDevice\"');\n\n const idLine = result.stdout\n .split('\\n')\n .find(line => line.includes('IOPlatformUUID'));\n\n if (!idLine) {\n return undefined;\n }\n\n const parts = idLine.split('\" = \"');\n if (parts.length === 2) {\n return parts[1].slice(0, -1);\n }\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.d.ts new file mode 100644 index 0000000..571052e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-linux.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js new file mode 100644 index 0000000..8214dd3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getMachineId = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const fs_1 = require("fs"); +const api_1 = require("@opentelemetry/api"); +async function getMachineId() { + const paths = ['/etc/machine-id', '/var/lib/dbus/machine-id']; + for (const path of paths) { + try { + const result = await fs_1.promises.readFile(path, { encoding: 'utf8' }); + return result.trim(); + } + catch (e) { + api_1.diag.debug(`error reading machine id: ${e}`); + } + } + return undefined; +} +exports.getMachineId = getMachineId; +//# sourceMappingURL=getMachineId-linux.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js.map new file mode 100644 index 0000000..fd7399e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-linux.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-linux.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,2BAAoC;AACpC,4CAA0C;AAEnC,KAAK,UAAU,YAAY;IAChC,MAAM,KAAK,GAAG,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAAC;IAE9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;QAAC,OAAO,CAAC,EAAE;YACV,UAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;SAC9C;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAbD,oCAaC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { promises as fs } from 'fs';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n const paths = ['/etc/machine-id', '/var/lib/dbus/machine-id'];\n\n for (const path of paths) {\n try {\n const result = await fs.readFile(path, { encoding: 'utf8' });\n return result.trim();\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.d.ts new file mode 100644 index 0000000..040ca09 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-unsupported.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js new file mode 100644 index 0000000..f68a1fa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js @@ -0,0 +1,25 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getMachineId = void 0; +const api_1 = require("@opentelemetry/api"); +async function getMachineId() { + api_1.diag.debug('could not read machine-id: unsupported platform'); + return undefined; +} +exports.getMachineId = getMachineId; +//# sourceMappingURL=getMachineId-unsupported.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js.map new file mode 100644 index 0000000..8986e9f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-unsupported.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-unsupported.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA0C;AAEnC,KAAK,UAAU,YAAY;IAChC,UAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAC9D,OAAO,SAAS,CAAC;AACnB,CAAC;AAHD,oCAGC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n diag.debug('could not read machine-id: unsupported platform');\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.d.ts new file mode 100644 index 0000000..0452b47 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId-win.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js new file mode 100644 index 0000000..1d3f784 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js @@ -0,0 +1,41 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getMachineId = void 0; +const process = require("process"); +const execAsync_1 = require("./execAsync"); +const api_1 = require("@opentelemetry/api"); +async function getMachineId() { + const args = 'QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid'; + let command = '%windir%\\System32\\REG.exe'; + if (process.arch === 'ia32' && 'PROCESSOR_ARCHITEW6432' in process.env) { + command = '%windir%\\sysnative\\cmd.exe /c ' + command; + } + try { + const result = await (0, execAsync_1.execAsync)(`${command} ${args}`); + const parts = result.stdout.split('REG_SZ'); + if (parts.length === 2) { + return parts[1].trim(); + } + } + catch (e) { + api_1.diag.debug(`error reading machine id: ${e}`); + } + return undefined; +} +exports.getMachineId = getMachineId; +//# sourceMappingURL=getMachineId-win.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js.map new file mode 100644 index 0000000..fa636c4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId-win.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId-win.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,mCAAmC;AACnC,2CAAwC;AACxC,4CAA0C;AAEnC,KAAK,UAAU,YAAY;IAChC,MAAM,IAAI,GACR,4EAA4E,CAAC;IAC/E,IAAI,OAAO,GAAG,6BAA6B,CAAC;IAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,wBAAwB,IAAI,OAAO,CAAC,GAAG,EAAE;QACtE,OAAO,GAAG,kCAAkC,GAAG,OAAO,CAAC;KACxD;IAED,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAS,EAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACxB;KACF;IAAC,OAAO,CAAC,EAAE;QACV,UAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;KAC9C;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAnBD,oCAmBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as process from 'process';\nimport { execAsync } from './execAsync';\nimport { diag } from '@opentelemetry/api';\n\nexport async function getMachineId(): Promise {\n const args =\n '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\n try {\n const result = await execAsync(`${command} ${args}`);\n const parts = result.stdout.split('REG_SZ');\n if (parts.length === 2) {\n return parts[1].trim();\n }\n } catch (e) {\n diag.debug(`error reading machine id: ${e}`);\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.d.ts new file mode 100644 index 0000000..f8f3e77 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.d.ts @@ -0,0 +1,2 @@ +export declare function getMachineId(): Promise; +//# sourceMappingURL=getMachineId.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.js new file mode 100644 index 0000000..e10c3f9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getMachineId = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const process = require("process"); +let getMachineIdImpl; +async function getMachineId() { + if (!getMachineIdImpl) { + switch (process.platform) { + case 'darwin': + getMachineIdImpl = (await import('./getMachineId-darwin.js')) + .getMachineId; + break; + case 'linux': + getMachineIdImpl = (await import('./getMachineId-linux.js')) + .getMachineId; + break; + case 'freebsd': + getMachineIdImpl = (await import('./getMachineId-bsd.js')).getMachineId; + break; + case 'win32': + getMachineIdImpl = (await import('./getMachineId-win.js')).getMachineId; + break; + default: + getMachineIdImpl = (await import('./getMachineId-unsupported.js')) + .getMachineId; + break; + } + } + return getMachineIdImpl(); +} +exports.getMachineId = getMachineId; +//# sourceMappingURL=getMachineId.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.js.map new file mode 100644 index 0000000..e4a91fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getMachineId.js","sourceRoot":"","sources":["../../../../../../src/detectors/platform/node/machine-id/getMachineId.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,mCAAmC;AAEnC,IAAI,gBAAiE,CAAC;AAE/D,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,gBAAgB,EAAE;QACrB,QAAQ,OAAO,CAAC,QAAQ,EAAE;YACxB,KAAK,QAAQ;gBACX,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;qBAC1D,YAAY,CAAC;gBAChB,MAAM;YACR,KAAK,OAAO;gBACV,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;qBACzD,YAAY,CAAC;gBAChB,MAAM;YACR,KAAK,SAAS;gBACZ,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC;gBACxE,MAAM;YACR,KAAK,OAAO;gBACV,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC;gBACxE,MAAM;YACR;gBACE,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;qBAC/D,YAAY,CAAC;gBAChB,MAAM;SACT;KACF;IAED,OAAO,gBAAgB,EAAE,CAAC;AAC5B,CAAC;AAzBD,oCAyBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as process from 'process';\n\nlet getMachineIdImpl: undefined | (() => Promise);\n\nexport async function getMachineId(): Promise {\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\n return getMachineIdImpl();\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.d.ts new file mode 100644 index 0000000..6180fd7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.d.ts @@ -0,0 +1,3 @@ +export declare const normalizeArch: (nodeArchString: string) => string; +export declare const normalizeType: (nodePlatform: string) => string; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.js new file mode 100644 index 0000000..33675c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalizeType = exports.normalizeArch = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const normalizeArch = (nodeArchString) => { + // Maps from https://nodejs.org/api/os.html#osarch to arch values in spec: + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md + switch (nodeArchString) { + case 'arm': + return 'arm32'; + case 'ppc': + return 'ppc32'; + case 'x64': + return 'amd64'; + default: + return nodeArchString; + } +}; +exports.normalizeArch = normalizeArch; +const normalizeType = (nodePlatform) => { + // Maps from https://nodejs.org/api/os.html#osplatform to arch values in spec: + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/os.md + switch (nodePlatform) { + case 'sunos': + return 'solaris'; + case 'win32': + return 'windows'; + default: + return nodePlatform; + } +}; +exports.normalizeType = normalizeType; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.js.map new file mode 100644 index 0000000..df7a213 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/detectors/platform/node/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACI,MAAM,aAAa,GAAG,CAAC,cAAsB,EAAU,EAAE;IAC9D,0EAA0E;IAC1E,8HAA8H;IAC9H,QAAQ,cAAc,EAAE;QACtB,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,cAAc,CAAC;KACzB;AACH,CAAC,CAAC;AAbW,QAAA,aAAa,iBAaxB;AAEK,MAAM,aAAa,GAAG,CAAC,YAAoB,EAAU,EAAE;IAC5D,8EAA8E;IAC9E,4HAA4H;IAC5H,QAAQ,YAAY,EAAE;QACpB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,YAAY,CAAC;KACvB;AACH,CAAC,CAAC;AAXW,QAAA,aAAa,iBAWxB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const normalizeArch = (nodeArchString: string): string => {\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};\n\nexport const normalizeType = (nodePlatform: string): string => {\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};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/index.d.ts new file mode 100644 index 0000000..107b45d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/index.d.ts @@ -0,0 +1,8 @@ +export type { ResourceDetectionConfig } from './config'; +export { detectResources } from './detect-resources'; +export { envDetector, hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from './detectors'; +export type { Resource } from './Resource'; +export { resourceFromAttributes, defaultResource, emptyResource, } from './ResourceImpl'; +export { defaultServiceName } from './default-service-name'; +export type { ResourceDetector, DetectedResource, DetectedResourceAttributes, RawResourceAttribute, MaybePromise, } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/index.js new file mode 100644 index 0000000..4873824 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/index.js @@ -0,0 +1,33 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultServiceName = exports.emptyResource = exports.defaultResource = exports.resourceFromAttributes = exports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = exports.envDetector = exports.detectResources = void 0; +var detect_resources_1 = require("./detect-resources"); +Object.defineProperty(exports, "detectResources", { enumerable: true, get: function () { return detect_resources_1.detectResources; } }); +var detectors_1 = require("./detectors"); +Object.defineProperty(exports, "envDetector", { enumerable: true, get: function () { return detectors_1.envDetector; } }); +Object.defineProperty(exports, "hostDetector", { enumerable: true, get: function () { return detectors_1.hostDetector; } }); +Object.defineProperty(exports, "osDetector", { enumerable: true, get: function () { return detectors_1.osDetector; } }); +Object.defineProperty(exports, "processDetector", { enumerable: true, get: function () { return detectors_1.processDetector; } }); +Object.defineProperty(exports, "serviceInstanceIdDetector", { enumerable: true, get: function () { return detectors_1.serviceInstanceIdDetector; } }); +var ResourceImpl_1 = require("./ResourceImpl"); +Object.defineProperty(exports, "resourceFromAttributes", { enumerable: true, get: function () { return ResourceImpl_1.resourceFromAttributes; } }); +Object.defineProperty(exports, "defaultResource", { enumerable: true, get: function () { return ResourceImpl_1.defaultResource; } }); +Object.defineProperty(exports, "emptyResource", { enumerable: true, get: function () { return ResourceImpl_1.emptyResource; } }); +var default_service_name_1 = require("./default-service-name"); +Object.defineProperty(exports, "defaultServiceName", { enumerable: true, get: function () { return default_service_name_1.defaultServiceName; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/index.js.map new file mode 100644 index 0000000..56668bc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,yCAMqB;AALnB,wGAAA,WAAW,OAAA;AACX,yGAAA,YAAY,OAAA;AACZ,uGAAA,UAAU,OAAA;AACV,4GAAA,eAAe,OAAA;AACf,sHAAA,yBAAyB,OAAA;AAG3B,+CAIwB;AAHtB,sHAAA,sBAAsB,OAAA;AACtB,+GAAA,eAAe,OAAA;AACf,6GAAA,aAAa,OAAA;AAEf,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type { ResourceDetectionConfig } from './config';\nexport { detectResources } from './detect-resources';\nexport {\n envDetector,\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from './detectors';\nexport type { Resource } from './Resource';\nexport {\n resourceFromAttributes,\n defaultResource,\n emptyResource,\n} from './ResourceImpl';\nexport { defaultServiceName } from './default-service-name';\nexport type {\n ResourceDetector,\n DetectedResource,\n DetectedResourceAttributes,\n RawResourceAttribute,\n MaybePromise,\n} from './types';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/semconv.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/semconv.d.ts new file mode 100644 index 0000000..af59c7e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/semconv.d.ts @@ -0,0 +1,312 @@ +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_ACCOUNT_ID: "cloud.account.id"; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_AVAILABILITY_ZONE: "cloud.availability_zone"; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_PROVIDER: "cloud.provider"; +/** + * The geographical region the resource is running. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_REGION: "cloud.region"; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_ID: "container.id"; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_NAME: "container.image.name"; +/** + * 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:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_TAGS: "container.image.tags"; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_NAME: "container.name"; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ARCH: "host.arch"; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ID: "host.id"; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_ID: "host.image.id"; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_NAME: "host.image.name"; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_VERSION: "host.image.version"; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_NAME: "host.name"; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_TYPE: "host.type"; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CLUSTER_NAME: "k8s.cluster.name"; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_NAME: "k8s.deployment.name"; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_NAME: "k8s.namespace.name"; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_NAME: "k8s.pod.name"; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_TYPE: "os.type"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_VERSION: "os.version"; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND: "process.command"; +/** + * 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`. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND_ARGS: "process.command_args"; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_NAME: "process.executable.name"; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_PATH: "process.executable.path"; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_OWNER: "process.owner"; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_PID: "process.pid"; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_DESCRIPTION: "process.runtime.description"; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_NAME: "process.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_VERSION: "process.runtime.version"; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_INSTANCE_ID: "service.instance.id"; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_NAMESPACE: "service.namespace"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_DESCRIPTION: "webengine.description"; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_NAME: "webengine.name"; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_VERSION: "webengine.version"; +//# sourceMappingURL=semconv.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/semconv.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/semconv.js new file mode 100644 index 0000000..73c98da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/semconv.js @@ -0,0 +1,335 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id'; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone'; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUD_PROVIDER = 'cloud.provider'; +/** + * The geographical region the resource is running. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUD_REGION = 'cloud.region'; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_ID = 'container.id'; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_IMAGE_NAME = 'container.image.name'; +/** + * 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:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags'; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_NAME = 'container.name'; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_ARCH = 'host.arch'; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_ID = 'host.id'; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_IMAGE_ID = 'host.image.id'; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_IMAGE_NAME = 'host.image.name'; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_IMAGE_VERSION = 'host.image.version'; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_NAME = 'host.name'; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_TYPE = 'host.type'; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name'; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name'; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name'; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_POD_NAME = 'k8s.pod.name'; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OS_TYPE = 'os.type'; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OS_VERSION = 'os.version'; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_COMMAND = 'process.command'; +/** + * 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`. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_COMMAND_ARGS = 'process.command_args'; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name'; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path'; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_OWNER = 'process.owner'; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_PID = 'process.pid'; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version'; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SERVICE_INSTANCE_ID = 'service.instance.id'; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SERVICE_NAMESPACE = 'service.namespace'; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_WEBENGINE_DESCRIPTION = 'webengine.description'; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_WEBENGINE_NAME = 'webengine.name'; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_WEBENGINE_VERSION = 'webengine.version'; +//# sourceMappingURL=semconv.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/semconv.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/semconv.js.map new file mode 100644 index 0000000..cae3a6c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/semconv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;GAOG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;GAIG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;GAIG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;GAOG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,gCAAgC,GAC3C,6BAAsC,CAAC;AAEzC;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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/**\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 */\nexport const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id' as const;\n\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 */\nexport const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone' as const;\n\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 */\nexport const ATTR_CLOUD_PROVIDER = 'cloud.provider' as const;\n\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 */\nexport const ATTR_CLOUD_REGION = 'cloud.region' as const;\n\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 */\nexport const ATTR_CONTAINER_ID = 'container.id' as const;\n\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 */\nexport const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name' as const;\n\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 */\nexport const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags' as const;\n\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 */\nexport const ATTR_CONTAINER_NAME = 'container.name' as const;\n\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 */\nexport const ATTR_HOST_ARCH = 'host.arch' as const;\n\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 */\nexport const ATTR_HOST_ID = 'host.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_ID = 'host.image.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_NAME = 'host.image.name' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_VERSION = 'host.image.version' as const;\n\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 */\nexport const ATTR_HOST_NAME = 'host.name' as const;\n\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 */\nexport const ATTR_HOST_TYPE = 'host.type' as const;\n\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 */\nexport const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name' as const;\n\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 */\nexport const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' as const;\n\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 */\nexport const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name' as const;\n\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 */\nexport const ATTR_K8S_POD_NAME = 'k8s.pod.name' as const;\n\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 */\nexport const ATTR_OS_TYPE = 'os.type' as const;\n\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 */\nexport const ATTR_OS_VERSION = 'os.version' as const;\n\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 */\nexport const ATTR_PROCESS_COMMAND = 'process.command' as const;\n\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 */\nexport const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path' as const;\n\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 */\nexport const ATTR_PROCESS_OWNER = 'process.owner' as const;\n\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 */\nexport const ATTR_PROCESS_PID = 'process.pid' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_DESCRIPTION =\n 'process.runtime.description' as const;\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 */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version' as const;\n\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 */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\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 */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\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 */\nexport const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description' as const;\n\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 */\nexport const ATTR_WEBENGINE_NAME = 'webengine.name' as const;\n\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 */\nexport const ATTR_WEBENGINE_VERSION = 'webengine.version' as const;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/types.d.ts new file mode 100644 index 0000000..8db9171 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/types.d.ts @@ -0,0 +1,44 @@ +import { AttributeValue } from '@opentelemetry/api'; +import { ResourceDetectionConfig } from './config'; +/** + * Interface for a Resource Detector. + * A resource detector returns a set of detected resource attributes. + * A detected resource attribute may be an {@link AttributeValue} or a Promise of an AttributeValue. + */ +export interface ResourceDetector { + /** + * Detect resource attributes. + * + * @returns a {@link DetectedResource} object containing detected resource attributes + */ + detect(config?: ResourceDetectionConfig): DetectedResource; +} +export type DetectedResource = { + /** + * Detected resource attributes. + */ + attributes?: DetectedResourceAttributes; +}; +/** + * An object representing detected resource attributes. + * Value may be {@link AttributeValue}s, a promise to an {@link AttributeValue}, or undefined. + */ +type DetectedResourceAttributeValue = MaybePromise; +/** + * An object representing detected resource attributes. + * Values may be {@link AttributeValue}s or a promise to an {@link AttributeValue}. + */ +export type DetectedResourceAttributes = Record; +export type MaybePromise = T | Promise; +export type RawResourceAttribute = [ + string, + MaybePromise +]; +/** + * Options for creating a {@link Resource}. + */ +export type ResourceOptions = { + schemaUrl?: string; +}; +export {}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/types.js.map new file mode 100644 index 0000000..4853110 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { AttributeValue } from '@opentelemetry/api';\nimport { ResourceDetectionConfig } from './config';\n\n/**\n * Interface for a Resource Detector.\n * A resource detector returns a set of detected resource attributes.\n * A detected resource attribute may be an {@link AttributeValue} or a Promise of an AttributeValue.\n */\nexport interface ResourceDetector {\n /**\n * Detect resource attributes.\n *\n * @returns a {@link DetectedResource} object containing detected resource attributes\n */\n detect(config?: ResourceDetectionConfig): DetectedResource;\n}\n\nexport type DetectedResource = {\n /**\n * Detected resource attributes.\n */\n attributes?: DetectedResourceAttributes;\n};\n\n/**\n * An object representing detected resource attributes.\n * Value may be {@link AttributeValue}s, a promise to an {@link AttributeValue}, or undefined.\n */\ntype DetectedResourceAttributeValue = MaybePromise;\n\n/**\n * An object representing detected resource attributes.\n * Values may be {@link AttributeValue}s or a promise to an {@link AttributeValue}.\n */\nexport type DetectedResourceAttributes = Record<\n string,\n DetectedResourceAttributeValue\n>;\n\nexport type MaybePromise = T | Promise;\n\nexport type RawResourceAttribute = [\n string,\n MaybePromise,\n];\n\n/**\n * Options for creating a {@link Resource}.\n */\nexport type ResourceOptions = {\n schemaUrl?: string;\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/utils.d.ts new file mode 100644 index 0000000..765f036 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/utils.d.ts @@ -0,0 +1,2 @@ +export declare const isPromiseLike: (val: unknown) => val is PromiseLike; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/utils.js new file mode 100644 index 0000000..d089cef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/utils.js @@ -0,0 +1,25 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isPromiseLike = void 0; +const isPromiseLike = (val) => { + return (val !== null && + typeof val === 'object' && + typeof val.then === 'function'); +}; +exports.isPromiseLike = isPromiseLike; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/utils.js.map new file mode 100644 index 0000000..6c8d65a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEI,MAAM,aAAa,GAAG,CAAI,GAAY,EAAyB,EAAE;IACtE,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAQ,GAA+B,CAAC,IAAI,KAAK,UAAU,CAC5D,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport const isPromiseLike = (val: unknown): val is PromiseLike => {\n return (\n val !== null &&\n typeof val === 'object' &&\n typeof (val as Partial>).then === 'function'\n );\n};\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/version.d.ts new file mode 100644 index 0000000..4539690 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "2.5.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/version.js new file mode 100644 index 0000000..b099165 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '2.5.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/version.js.map new file mode 100644 index 0000000..0c15794 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.5.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/resources/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/resources/package.json new file mode 100644 index 0000000..cb571d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/resources/package.json @@ -0,0 +1,91 @@ +{ + "name": "@opentelemetry/resources", + "version": "2.5.0", + "description": "OpenTelemetry SDK resources", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "browser": { + "./src/detectors/platform/index.ts": "./src/detectors/platform/browser/index.ts", + "./build/esm/detectors/platform/index.js": "./build/esm/detectors/platform/browser/index.js", + "./build/esnext/detectors/platform/index.js": "./build/esnext/detectors/platform/browser/index.js", + "./build/src/detectors/platform/index.js": "./build/src/detectors/platform/browser/index.js" + }, + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "test": "nyc mocha 'test/**/*.test.ts'", + "test:browser": "karma start --single-run", + "test:webworker": "karma start karma.worker.js --single-run", + "tdd": "npm run test -- --watch-extensions ts --watch", + "version": "node ../../scripts/version-update.js", + "prewatch": "npm run precompile", + "peer-api-check": "node ../../scripts/peer-api-check.js", + "align-api-deps": "node ../../scripts/align-api-deps.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "resources", + "stats", + "profiling" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0", + "@types/mocha": "10.0.10", + "@types/node": "18.19.130", + "@types/sinon": "17.0.4", + "@types/webpack-env": "1.16.3", + "karma": "6.4.4", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-mocha-webworker": "1.3.0", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "mocha": "11.7.5", + "nock": "13.5.6", + "nyc": "17.1.0", + "sinon": "18.0.1", + "typescript": "5.0.4", + "webpack": "5.101.3", + "webpack-cli": "6.0.1" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + }, + "dependencies": { + "@opentelemetry/core": "2.5.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources", + "sideEffects": false, + "gitHead": "38924cbff2a6e924ce8a2a227d3a72de52fbcd35" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/README.md new file mode 100644 index 0000000..c22b735 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/README.md @@ -0,0 +1,185 @@ +# OpenTelemetry Tracing SDK + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +The `tracing` module contains the foundation for all tracing SDKs of [opentelemetry-js](https://github.com/open-telemetry/opentelemetry-js). + +Used standalone, this module provides methods for manual instrumentation of code, offering full control over span creation for client-side JavaScript (browser) and Node.js. + +It does **not** provide automated instrumentation of known libraries, context propagation or distributed-context out-of-the-box. + +For a `TracerProvider` that includes default context management and propagation for Node.js, please see +[@opentelemetry/sdk-trace-node](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node). + +For a `TracerProvider` that includes default context management and propagation for Browser, please see +[@opentelemetry/sdk-trace-web](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-web). + +## Installation + +```bash +npm install --save @opentelemetry/api +npm install --save @opentelemetry/sdk-trace-base +``` + +## Usage + +```js +const { trace } = require('@opentelemetry/api'); +const { BasicTracerProvider } = require('@opentelemetry/sdk-trace-base'); + +// To start a trace, you first need to initialize the Tracer provider. +// NOTE: The default OpenTelemetry tracer provider does not record any tracing information. +// Registering a working tracer provider allows the API methods to record traces. +trace.setGlobalTracerProvider(new BasicTracerProvider()); + +// Important: requires a context manager and propagator to be registered manually. +// propagation.setGlobalPropagator(propagator); // replace `propagator` with your `TextMapPropagator`, for example: `W3CTraceContextPropagator` from `@openetelemetry/core` +// context.setGlobalContextManager(contextManager); // replace `contextManager` with your `ContextManager`: `AsyncLocalStorageContextManager` from `@openetelemetry/async-hooks` + +// To create a span in a trace, we used the global singleton tracer to start a new span. +const span = trace.getTracer('default').startSpan('foo'); + +// Set a span attribute +span.setAttribute('key', 'value'); + +// We must end the spans so they become available for exporting. +span.end(); +``` + +## Config + +Tracing configuration is a merge of user supplied configuration with both the default +configuration as specified in [config.ts](./src/config.ts) and an +environmentally configurable sampling (via `OTEL_TRACES_SAMPLER` and `OTEL_TRACES_SAMPLER_ARG`). + +## Built-in Samplers + +Sampler is used to make decisions on `Span` sampling. + +### AlwaysOn Sampler + +Samples every trace regardless of upstream sampling decisions. + +> This is used as a default Sampler + +```js +const { + AlwaysOnSampler, + BasicTracerProvider, +} = require("@opentelemetry/sdk-trace-base"); + +const tracerProvider = new BasicTracerProvider({ + sampler: new AlwaysOnSampler() +}); +``` + +### AlwaysOff Sampler + +Doesn't sample any trace, regardless of upstream sampling decisions. + +```js +const { + AlwaysOffSampler, + BasicTracerProvider, +} = require("@opentelemetry/sdk-trace-base"); + +const tracerProvider = new BasicTracerProvider({ + sampler: new AlwaysOffSampler() +}); +``` + +### TraceIdRatioBased Sampler + +Samples some percentage of traces, calculated deterministically using the trace ID. +Any trace that would be sampled at a given percentage will also be sampled at any higher percentage. + +The `TraceIDRatioSampler` may be used with the `ParentBasedSampler` to respect the sampled flag of an incoming trace. + +```js +const { + BasicTracerProvider, + TraceIdRatioBasedSampler, +} = require("@opentelemetry/sdk-trace-base"); + +const tracerProvider = new BasicTracerProvider({ + // See details of ParentBasedSampler below + sampler: new ParentBasedSampler({ + // Trace ID Ratio Sampler accepts a positional argument + // which represents the percentage of traces which should + // be sampled. + root: new TraceIdRatioBasedSampler(0.5) + }); +}); +``` + +### ParentBased Sampler + +- This is a composite sampler. `ParentBased` helps distinguished between the +following cases: + - No parent (root span). + - Remote parent with `sampled` flag `true` + - Remote parent with `sampled` flag `false` + - Local parent with `sampled` flag `true` + - Local parent with `sampled` flag `false` + +Required parameters: + +- `root(Sampler)` - Sampler called for spans with no parent (root spans) + +Optional parameters: + +- `remoteParentSampled(Sampler)` (default: `AlwaysOn`) +- `remoteParentNotSampled(Sampler)` (default: `AlwaysOff`) +- `localParentSampled(Sampler)` (default: `AlwaysOn`) +- `localParentNotSampled(Sampler)` (default: `AlwaysOff`) + +|Parent|parent.isRemote()|parent.isSampled()|Invoke sampler| +|---|---|---|---| +|absent|n/a|n/a|`root()`| +|present|true|true|`remoteParentSampled()`| +|present|true|false|`remoteParentNotSampled()`| +|present|false|true|`localParentSampled()`| +|present|false|false|`localParentNotSampled()`| + +```js +const { + AlwaysOffSampler, + BasicTracerProvider, + ParentBasedSampler, + TraceIdRatioBasedSampler, +} = require("@opentelemetry/sdk-trace-base"); + +const tracerProvider = new BasicTracerProvider({ + sampler: new ParentBasedSampler({ + // By default, the ParentBasedSampler will respect the parent span's sampling + // decision. This is configurable by providing a different sampler to use + // based on the situation. See configuration details above. + // + // This will delegate the sampling decision of all root traces (no parent) + // to the TraceIdRatioBasedSampler. + // See details of TraceIdRatioBasedSampler above. + root: new TraceIdRatioBasedSampler(0.5) + }) +}); +``` + +## Example + +See [examples/basic-tracer-node](https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/basic-tracer-node) for an end-to-end example, including exporting created spans. + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/sdk-trace-base +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fsdk-trace-base.svg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/BasicTracerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/BasicTracerProvider.d.ts new file mode 100644 index 0000000..93e5f22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/BasicTracerProvider.d.ts @@ -0,0 +1,24 @@ +import { TracerProvider, Tracer as ApiTracer } from '@opentelemetry/api'; +import { TracerConfig } from './types'; +export declare enum ForceFlushState { + 'resolved' = 0, + 'timeout' = 1, + 'error' = 2, + 'unresolved' = 3 +} +/** + * This class represents a basic tracer provider which platform libraries can extend + */ +export declare class BasicTracerProvider implements TracerProvider { + private readonly _config; + private readonly _tracers; + private readonly _resource; + private readonly _activeSpanProcessor; + constructor(config?: TracerConfig); + getTracer(name: string, version?: string, options?: { + schemaUrl?: string; + }): ApiTracer; + forceFlush(): Promise; + shutdown(): Promise; +} +//# sourceMappingURL=BasicTracerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/BasicTracerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/BasicTracerProvider.js new file mode 100644 index 0000000..fbc5112 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/BasicTracerProvider.js @@ -0,0 +1,100 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { merge } from '@opentelemetry/core'; +import { defaultResource } from '@opentelemetry/resources'; +import { Tracer } from './Tracer'; +import { loadDefaultConfig } from './config'; +import { MultiSpanProcessor } from './MultiSpanProcessor'; +import { reconfigureLimits } from './utility'; +export var ForceFlushState; +(function (ForceFlushState) { + ForceFlushState[ForceFlushState["resolved"] = 0] = "resolved"; + ForceFlushState[ForceFlushState["timeout"] = 1] = "timeout"; + ForceFlushState[ForceFlushState["error"] = 2] = "error"; + ForceFlushState[ForceFlushState["unresolved"] = 3] = "unresolved"; +})(ForceFlushState || (ForceFlushState = {})); +/** + * This class represents a basic tracer provider which platform libraries can extend + */ +export class BasicTracerProvider { + _config; + _tracers = new Map(); + _resource; + _activeSpanProcessor; + constructor(config = {}) { + const mergedConfig = merge({}, loadDefaultConfig(), reconfigureLimits(config)); + this._resource = mergedConfig.resource ?? defaultResource(); + this._config = Object.assign({}, mergedConfig, { + resource: this._resource, + }); + const spanProcessors = []; + if (config.spanProcessors?.length) { + spanProcessors.push(...config.spanProcessors); + } + this._activeSpanProcessor = new MultiSpanProcessor(spanProcessors); + } + getTracer(name, version, options) { + const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`; + if (!this._tracers.has(key)) { + this._tracers.set(key, new Tracer({ name, version, schemaUrl: options?.schemaUrl }, this._config, this._resource, this._activeSpanProcessor)); + } + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return this._tracers.get(key); + } + forceFlush() { + const timeout = this._config.forceFlushTimeoutMillis; + const promises = this._activeSpanProcessor['_spanProcessors'].map((spanProcessor) => { + return new Promise(resolve => { + let state; + const timeoutInterval = setTimeout(() => { + resolve(new Error(`Span processor did not completed within timeout period of ${timeout} ms`)); + state = ForceFlushState.timeout; + }, timeout); + spanProcessor + .forceFlush() + .then(() => { + clearTimeout(timeoutInterval); + if (state !== ForceFlushState.timeout) { + state = ForceFlushState.resolved; + resolve(state); + } + }) + .catch(error => { + clearTimeout(timeoutInterval); + state = ForceFlushState.error; + resolve(error); + }); + }); + }); + return new Promise((resolve, reject) => { + Promise.all(promises) + .then(results => { + const errors = results.filter(result => result !== ForceFlushState.resolved); + if (errors.length > 0) { + reject(errors); + } + else { + resolve(); + } + }) + .catch(error => reject([error])); + }); + } + shutdown() { + return this._activeSpanProcessor.shutdown(); + } +} +//# sourceMappingURL=BasicTracerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/BasicTracerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/BasicTracerProvider.js.map new file mode 100644 index 0000000..890a8a4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/BasicTracerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BasicTracerProvider.js","sourceRoot":"","sources":["../../src/BasicTracerProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, Tracer as ApiTracer } from '@opentelemetry/api';\nimport { merge } from '@opentelemetry/core';\nimport { defaultResource, Resource } from '@opentelemetry/resources';\nimport { SpanProcessor } from './SpanProcessor';\nimport { Tracer } from './Tracer';\nimport { loadDefaultConfig } from './config';\nimport { MultiSpanProcessor } from './MultiSpanProcessor';\nimport { TracerConfig } from './types';\nimport { reconfigureLimits } from './utility';\n\nexport enum ForceFlushState {\n 'resolved',\n 'timeout',\n 'error',\n 'unresolved',\n}\n\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nexport class BasicTracerProvider implements TracerProvider {\n private readonly _config: TracerConfig;\n private readonly _tracers: Map = new Map();\n private readonly _resource: Resource;\n private readonly _activeSpanProcessor: MultiSpanProcessor;\n\n constructor(config: TracerConfig = {}) {\n const mergedConfig = merge(\n {},\n loadDefaultConfig(),\n reconfigureLimits(config)\n );\n this._resource = mergedConfig.resource ?? defaultResource();\n\n this._config = Object.assign({}, mergedConfig, {\n resource: this._resource,\n });\n\n const spanProcessors: SpanProcessor[] = [];\n\n if (config.spanProcessors?.length) {\n spanProcessors.push(...config.spanProcessors);\n }\n\n this._activeSpanProcessor = new MultiSpanProcessor(spanProcessors);\n }\n\n getTracer(\n name: string,\n version?: string,\n options?: { schemaUrl?: string }\n ): ApiTracer {\n const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(\n key,\n new Tracer(\n { name, version, schemaUrl: options?.schemaUrl },\n this._config,\n this._resource,\n this._activeSpanProcessor\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key)!;\n }\n\n forceFlush(): Promise {\n const timeout = this._config.forceFlushTimeoutMillis;\n const promises = this._activeSpanProcessor['_spanProcessors'].map(\n (spanProcessor: SpanProcessor) => {\n return new Promise(resolve => {\n let state: ForceFlushState;\n const timeoutInterval = setTimeout(() => {\n resolve(\n new Error(\n `Span processor did not completed within timeout period of ${timeout} ms`\n )\n );\n state = ForceFlushState.timeout;\n }, timeout);\n\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 );\n\n return new Promise((resolve, reject) => {\n Promise.all(promises)\n .then(results => {\n const errors = results.filter(\n result => result !== ForceFlushState.resolved\n );\n if (errors.length > 0) {\n reject(errors);\n } else {\n resolve();\n }\n })\n .catch(error => reject([error]));\n });\n }\n\n shutdown(): Promise {\n return this._activeSpanProcessor.shutdown();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/IdGenerator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/IdGenerator.d.ts new file mode 100644 index 0000000..ee18577 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/IdGenerator.d.ts @@ -0,0 +1,8 @@ +/** IdGenerator provides an interface for generating Trace Id and Span Id */ +export interface IdGenerator { + /** Returns a trace ID composed of 32 lowercase hex characters. */ + generateTraceId(): string; + /** Returns a span ID composed of 16 lowercase hex characters. */ + generateSpanId(): string; +} +//# sourceMappingURL=IdGenerator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/IdGenerator.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/IdGenerator.js new file mode 100644 index 0000000..9f96598 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/IdGenerator.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=IdGenerator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/IdGenerator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/IdGenerator.js.map new file mode 100644 index 0000000..2c76898 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/IdGenerator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IdGenerator.js","sourceRoot":"","sources":["../../src/IdGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/** IdGenerator provides an interface for generating Trace Id and Span Id */\nexport interface IdGenerator {\n /** Returns a trace ID composed of 32 lowercase hex characters. */\n generateTraceId(): string;\n /** Returns a span ID composed of 16 lowercase hex characters. */\n generateSpanId(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/MultiSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/MultiSpanProcessor.d.ts new file mode 100644 index 0000000..29b3f1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/MultiSpanProcessor.d.ts @@ -0,0 +1,18 @@ +import { Context } from '@opentelemetry/api'; +import { ReadableSpan } from './export/ReadableSpan'; +import { Span } from './Span'; +import { SpanProcessor } from './SpanProcessor'; +/** + * Implementation of the {@link SpanProcessor} that simply forwards all + * received events to a list of {@link SpanProcessor}s. + */ +export declare class MultiSpanProcessor implements SpanProcessor { + private readonly _spanProcessors; + constructor(spanProcessors: SpanProcessor[]); + forceFlush(): Promise; + onStart(span: Span, context: Context): void; + onEnding(span: Span): void; + onEnd(span: ReadableSpan): void; + shutdown(): Promise; +} +//# sourceMappingURL=MultiSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/MultiSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/MultiSpanProcessor.js new file mode 100644 index 0000000..c1bc91d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/MultiSpanProcessor.js @@ -0,0 +1,71 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { globalErrorHandler } from '@opentelemetry/core'; +/** + * Implementation of the {@link SpanProcessor} that simply forwards all + * received events to a list of {@link SpanProcessor}s. + */ +export class MultiSpanProcessor { + _spanProcessors; + constructor(spanProcessors) { + this._spanProcessors = spanProcessors; + } + forceFlush() { + const promises = []; + for (const spanProcessor of this._spanProcessors) { + promises.push(spanProcessor.forceFlush()); + } + return new Promise(resolve => { + Promise.all(promises) + .then(() => { + resolve(); + }) + .catch(error => { + globalErrorHandler(error || new Error('MultiSpanProcessor: forceFlush failed')); + resolve(); + }); + }); + } + onStart(span, context) { + for (const spanProcessor of this._spanProcessors) { + spanProcessor.onStart(span, context); + } + } + onEnding(span) { + for (const spanProcessor of this._spanProcessors) { + if (spanProcessor.onEnding) { + spanProcessor.onEnding(span); + } + } + } + onEnd(span) { + for (const spanProcessor of this._spanProcessors) { + spanProcessor.onEnd(span); + } + } + shutdown() { + const promises = []; + for (const spanProcessor of this._spanProcessors) { + promises.push(spanProcessor.shutdown()); + } + return new Promise((resolve, reject) => { + Promise.all(promises).then(() => { + resolve(); + }, reject); + }); + } +} +//# sourceMappingURL=MultiSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/MultiSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/MultiSpanProcessor.js.map new file mode 100644 index 0000000..1d09a13 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/MultiSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MultiSpanProcessor.js","sourceRoot":"","sources":["../../src/MultiSpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAKzD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACZ,eAAe,CAAkB;IAClD,YAAY,cAA+B;QACzC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,UAAU;QACR,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;iBAClB,IAAI,CAAC,GAAG,EAAE;gBACT,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,kBAAkB,CAChB,KAAK,IAAI,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAC5D,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAU,EAAE,OAAgB;QAClC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACtC;IACH,CAAC;IAED,QAAQ,CAAC,IAAU;QACjB,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,IAAI,aAAa,CAAC,QAAQ,EAAE;gBAC1B,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC9B;SACF;IACH,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC3B;IACH,CAAC;IAED,QAAQ;QACN,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9B,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,MAAM,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { Span } from './Span';\nimport { SpanProcessor } from './SpanProcessor';\n\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nexport class MultiSpanProcessor implements SpanProcessor {\n private readonly _spanProcessors: SpanProcessor[];\n constructor(spanProcessors: SpanProcessor[]) {\n this._spanProcessors = spanProcessors;\n }\n\n forceFlush(): Promise {\n const promises: Promise[] = [];\n\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 globalErrorHandler(\n error || new Error('MultiSpanProcessor: forceFlush failed')\n );\n resolve();\n });\n });\n }\n\n onStart(span: Span, context: Context): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onStart(span, context);\n }\n }\n\n onEnding(span: Span): void {\n for (const spanProcessor of this._spanProcessors) {\n if (spanProcessor.onEnding) {\n spanProcessor.onEnding(span);\n }\n }\n }\n\n onEnd(span: ReadableSpan): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onEnd(span);\n }\n }\n\n shutdown(): Promise {\n const promises: Promise[] = [];\n\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.d.ts new file mode 100644 index 0000000..ff5ceb8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.d.ts @@ -0,0 +1,70 @@ +import { Context, Link, Attributes, SpanKind, TraceState } from '@opentelemetry/api'; +/** + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +export declare enum SamplingDecision { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + NOT_RECORD = 0, + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + RECORD = 1, + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + RECORD_AND_SAMPLED = 2 +} +/** + * A sampling result contains a decision for a {@link Span} and additional + * attributes the sampler would like to added to the Span. + */ +export interface SamplingResult { + /** + * A sampling decision, refer to {@link SamplingDecision} for details. + */ + decision: SamplingDecision; + /** + * The list of attributes returned by SamplingResult MUST be immutable. + * Caller may call {@link Sampler}.shouldSample any number of times and + * can safely cache the returned value. + */ + attributes?: Readonly; + /** + * A {@link TraceState} that will be associated with the {@link Span} through + * the new {@link SpanContext}. Samplers SHOULD return the TraceState from + * the passed-in {@link Context} if they do not intend to change it. Leaving + * the value undefined will also leave the TraceState unchanged. + */ + traceState?: TraceState; +} +/** + * This interface represent a sampler. Sampling is a mechanism to control the + * noise and overhead introduced by OpenTelemetry by reducing the number of + * samples of traces collected and sent to the backend. + */ +export interface Sampler { + /** + * Checks whether span needs to be created and tracked. + * + * @param context Parent Context which may contain a span. + * @param traceId of the span to be created. It can be different from the + * traceId in the {@link SpanContext}. Typically in situations when the + * span to be created starts a new trace. + * @param spanName of the span to be created. + * @param spanKind of the span to be created. + * @param attributes Initial set of Attributes for the Span being constructed. + * @param links Collection of links that will be associated with the Span to + * be created. Typically useful for batch operations. + * @returns a {@link SamplingResult}. + */ + shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: Attributes, links: Link[]): SamplingResult; + /** Returns the sampler name or short description with the configuration. */ + toString(): string; +} +//# sourceMappingURL=Sampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.js new file mode 100644 index 0000000..32c1b8d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.js @@ -0,0 +1,38 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +export var SamplingDecision; +(function (SamplingDecision) { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + SamplingDecision[SamplingDecision["NOT_RECORD"] = 0] = "NOT_RECORD"; + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + SamplingDecision[SamplingDecision["RECORD"] = 1] = "RECORD"; + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + SamplingDecision[SamplingDecision["RECORD_AND_SAMPLED"] = 2] = "RECORD_AND_SAMPLED"; +})(SamplingDecision || (SamplingDecision = {})); +//# sourceMappingURL=Sampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.js.map new file mode 100644 index 0000000..6587f21 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Sampler.js","sourceRoot":"","sources":["../../src/Sampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH;;;GAGG;AACH,MAAM,CAAN,IAAY,gBAgBX;AAhBD,WAAY,gBAAgB;IAC1B;;;OAGG;IACH,mEAAU,CAAA;IACV;;;OAGG;IACH,2DAAM,CAAA;IACN;;;OAGG;IACH,mFAAkB,CAAA;AACpB,CAAC,EAhBW,gBAAgB,KAAhB,gBAAgB,QAgB3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n Link,\n Attributes,\n SpanKind,\n TraceState,\n} from '@opentelemetry/api';\n\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n\n/**\n * This interface represent a sampler. Sampling is a mechanism to control the\n * noise and overhead introduced by OpenTelemetry by reducing the number of\n * samples of traces collected and sent to the backend.\n */\nexport interface Sampler {\n /**\n * Checks whether span needs to be created and tracked.\n *\n * @param context Parent Context which may contain a span.\n * @param traceId of the span to be created. It can be different from the\n * traceId in the {@link SpanContext}. Typically in situations when the\n * span to be created starts a new trace.\n * @param spanName of the span to be created.\n * @param spanKind of the span to be created.\n * @param attributes Initial set of Attributes for the Span being constructed.\n * @param links Collection of links that will be associated with the Span to\n * be created. Typically useful for batch operations.\n * @returns a {@link SamplingResult}.\n */\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult;\n\n /** Returns the sampler name or short description with the configuration. */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Span.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Span.d.ts new file mode 100644 index 0000000..85355d9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Span.d.ts @@ -0,0 +1,99 @@ +import { Context, Exception, HrTime, Link, Span as APISpan, Attributes, AttributeValue, SpanContext, SpanKind, SpanStatus, TimeInput } from '@opentelemetry/api'; +import { InstrumentationScope } from '@opentelemetry/core'; +import { Resource } from '@opentelemetry/resources'; +import { ReadableSpan } from './export/ReadableSpan'; +import { SpanProcessor } from './SpanProcessor'; +import { TimedEvent } from './TimedEvent'; +import { SpanLimits } from './types'; +/** + * This type provides the properties of @link{ReadableSpan} at the same time + * of the Span API + */ +export type Span = APISpan & ReadableSpan; +interface SpanOptions { + resource: Resource; + scope: InstrumentationScope; + context: Context; + spanContext: SpanContext; + name: string; + kind: SpanKind; + parentSpanContext?: SpanContext; + links?: Link[]; + startTime?: TimeInput; + attributes?: Attributes; + spanLimits: SpanLimits; + spanProcessor: SpanProcessor; +} +/** + * This class represents a span. + */ +export declare class SpanImpl implements Span { + private readonly _spanContext; + readonly kind: SpanKind; + readonly parentSpanContext?: SpanContext; + readonly attributes: Attributes; + readonly links: Link[]; + readonly events: TimedEvent[]; + readonly startTime: HrTime; + readonly resource: Resource; + readonly instrumentationScope: InstrumentationScope; + private _droppedAttributesCount; + private _droppedEventsCount; + private _droppedLinksCount; + name: string; + status: SpanStatus; + endTime: HrTime; + private _ended; + private _duration; + private readonly _spanProcessor; + private readonly _spanLimits; + private readonly _attributeValueLengthLimit; + private readonly _performanceStartTime; + private readonly _performanceOffset; + private readonly _startTimeProvided; + /** + * Constructs a new SpanImpl instance. + */ + constructor(opts: SpanOptions); + spanContext(): SpanContext; + setAttribute(key: string, value?: AttributeValue): this; + setAttributes(attributes: Attributes): this; + /** + * + * @param name Span Name + * @param [attributesOrStartTime] Span attributes or start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [timeStamp] Specified time stamp for the event + */ + addEvent(name: string, attributesOrStartTime?: Attributes | TimeInput, timeStamp?: TimeInput): this; + addLink(link: Link): this; + addLinks(links: Link[]): this; + setStatus(status: SpanStatus): this; + updateName(name: string): this; + end(endTime?: TimeInput): void; + private _getTime; + isRecording(): boolean; + recordException(exception: Exception, time?: TimeInput): void; + get duration(): HrTime; + get ended(): boolean; + get droppedAttributesCount(): number; + get droppedEventsCount(): number; + get droppedLinksCount(): number; + private _isSpanEnded; + private _truncateToLimitUtil; + /** + * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then + * return string with truncated to {@code attributeValueLengthLimit} characters + * + * If the given attribute value is array of strings then + * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters + * + * Otherwise return same Attribute {@code value} + * + * @param value Attribute value + * @returns truncated attribute value if required, otherwise same value + */ + private _truncateToSize; +} +export {}; +//# sourceMappingURL=Span.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Span.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Span.js new file mode 100644 index 0000000..4f0abaa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Span.js @@ -0,0 +1,311 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag, SpanStatusCode, } from '@opentelemetry/api'; +import { addHrTimes, millisToHrTime, hrTime, hrTimeDuration, isAttributeValue, isTimeInput, isTimeInputHrTime, otperformance, sanitizeAttributes, } from '@opentelemetry/core'; +import { ATTR_EXCEPTION_MESSAGE, ATTR_EXCEPTION_STACKTRACE, ATTR_EXCEPTION_TYPE, } from '@opentelemetry/semantic-conventions'; +import { ExceptionEventName } from './enums'; +/** + * This class represents a span. + */ +export class SpanImpl { + // Below properties are included to implement ReadableSpan for export + // purposes but are not intended to be written-to directly. + _spanContext; + kind; + parentSpanContext; + attributes = {}; + links = []; + events = []; + startTime; + resource; + instrumentationScope; + _droppedAttributesCount = 0; + _droppedEventsCount = 0; + _droppedLinksCount = 0; + name; + status = { + code: SpanStatusCode.UNSET, + }; + endTime = [0, 0]; + _ended = false; + _duration = [-1, -1]; + _spanProcessor; + _spanLimits; + _attributeValueLengthLimit; + _performanceStartTime; + _performanceOffset; + _startTimeProvided; + /** + * Constructs a new SpanImpl instance. + */ + constructor(opts) { + const now = Date.now(); + this._spanContext = opts.spanContext; + this._performanceStartTime = otperformance.now(); + this._performanceOffset = + now - (this._performanceStartTime + otperformance.timeOrigin); + this._startTimeProvided = opts.startTime != null; + this._spanLimits = opts.spanLimits; + this._attributeValueLengthLimit = + this._spanLimits.attributeValueLengthLimit || 0; + this._spanProcessor = opts.spanProcessor; + this.name = opts.name; + this.parentSpanContext = opts.parentSpanContext; + this.kind = opts.kind; + this.links = opts.links || []; + this.startTime = this._getTime(opts.startTime ?? now); + this.resource = opts.resource; + this.instrumentationScope = opts.scope; + if (opts.attributes != null) { + this.setAttributes(opts.attributes); + } + this._spanProcessor.onStart(this, opts.context); + } + spanContext() { + return this._spanContext; + } + setAttribute(key, value) { + if (value == null || this._isSpanEnded()) + return this; + if (key.length === 0) { + diag.warn(`Invalid attribute key: ${key}`); + return this; + } + if (!isAttributeValue(value)) { + diag.warn(`Invalid attribute value set for key: ${key}`); + return this; + } + const { attributeCountLimit } = this._spanLimits; + if (attributeCountLimit !== undefined && + Object.keys(this.attributes).length >= attributeCountLimit && + !Object.prototype.hasOwnProperty.call(this.attributes, key)) { + this._droppedAttributesCount++; + return this; + } + this.attributes[key] = this._truncateToSize(value); + return this; + } + setAttributes(attributes) { + for (const [k, v] of Object.entries(attributes)) { + this.setAttribute(k, v); + } + return this; + } + /** + * + * @param name Span Name + * @param [attributesOrStartTime] Span attributes or start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [timeStamp] Specified time stamp for the event + */ + addEvent(name, attributesOrStartTime, timeStamp) { + if (this._isSpanEnded()) + return this; + const { eventCountLimit } = this._spanLimits; + if (eventCountLimit === 0) { + diag.warn('No events allowed.'); + this._droppedEventsCount++; + return this; + } + if (eventCountLimit !== undefined && + this.events.length >= eventCountLimit) { + if (this._droppedEventsCount === 0) { + diag.debug('Dropping extra events.'); + } + this.events.shift(); + this._droppedEventsCount++; + } + if (isTimeInput(attributesOrStartTime)) { + if (!isTimeInput(timeStamp)) { + timeStamp = attributesOrStartTime; + } + attributesOrStartTime = undefined; + } + const attributes = sanitizeAttributes(attributesOrStartTime); + this.events.push({ + name, + attributes, + time: this._getTime(timeStamp), + droppedAttributesCount: 0, + }); + return this; + } + addLink(link) { + this.links.push(link); + return this; + } + addLinks(links) { + this.links.push(...links); + return this; + } + setStatus(status) { + if (this._isSpanEnded()) + return this; + this.status = { ...status }; + // When using try-catch, the caught "error" is of type `any`. When then assigning `any` to `status.message`, + // TypeScript will not error. While this can happen during use of any API, it is more common on Span#setStatus() + // as it's likely used in a catch-block. Therefore, we validate if `status.message` is actually a string, null, or + // undefined to avoid an incorrect type causing issues downstream. + if (this.status.message != null && typeof status.message !== 'string') { + diag.warn(`Dropping invalid status.message of type '${typeof status.message}', expected 'string'`); + delete this.status.message; + } + return this; + } + updateName(name) { + if (this._isSpanEnded()) + return this; + this.name = name; + return this; + } + end(endTime) { + if (this._isSpanEnded()) { + diag.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`); + return; + } + this.endTime = this._getTime(endTime); + this._duration = hrTimeDuration(this.startTime, this.endTime); + if (this._duration[0] < 0) { + 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) { + diag.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`); + } + if (this._spanProcessor.onEnding) { + this._spanProcessor.onEnding(this); + } + this._ended = true; + this._spanProcessor.onEnd(this); + } + _getTime(inp) { + if (typeof inp === 'number' && inp <= otperformance.now()) { + // must be a performance timestamp + // apply correction and convert to hrtime + return hrTime(inp + this._performanceOffset); + } + if (typeof inp === 'number') { + return millisToHrTime(inp); + } + if (inp instanceof Date) { + return millisToHrTime(inp.getTime()); + } + if (isTimeInputHrTime(inp)) { + return inp; + } + if (this._startTimeProvided) { + // if user provided a time for the start manually + // we can't use duration to calculate event/end times + return millisToHrTime(Date.now()); + } + const msDuration = otperformance.now() - this._performanceStartTime; + return addHrTimes(this.startTime, millisToHrTime(msDuration)); + } + isRecording() { + return this._ended === false; + } + recordException(exception, time) { + const attributes = {}; + if (typeof exception === 'string') { + attributes[ATTR_EXCEPTION_MESSAGE] = exception; + } + else if (exception) { + if (exception.code) { + attributes[ATTR_EXCEPTION_TYPE] = exception.code.toString(); + } + else if (exception.name) { + attributes[ATTR_EXCEPTION_TYPE] = exception.name; + } + if (exception.message) { + attributes[ATTR_EXCEPTION_MESSAGE] = exception.message; + } + if (exception.stack) { + attributes[ATTR_EXCEPTION_STACKTRACE] = exception.stack; + } + } + // these are minimum requirements from spec + if (attributes[ATTR_EXCEPTION_TYPE] || attributes[ATTR_EXCEPTION_MESSAGE]) { + this.addEvent(ExceptionEventName, attributes, time); + } + else { + diag.warn(`Failed to record an exception ${exception}`); + } + } + 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) { + const error = new Error(`Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`); + diag.warn(`Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`, error); + } + return this._ended; + } + // Utility function to truncate given value within size + // for value type of string, will truncate to given limit + // for type of non-string, will return same value + _truncateToLimitUtil(value, limit) { + if (value.length <= limit) { + return value; + } + return value.substring(0, limit); + } + /** + * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then + * return string with truncated to {@code attributeValueLengthLimit} characters + * + * If the given attribute value is array of strings then + * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters + * + * Otherwise return same Attribute {@code value} + * + * @param value Attribute value + * @returns truncated attribute value if required, otherwise same value + */ + _truncateToSize(value) { + const limit = this._attributeValueLengthLimit; + // Check limit + if (limit <= 0) { + // Negative values are invalid, so do not truncate + diag.warn(`Attribute value limit must be positive, got ${limit}`); + return value; + } + // String + if (typeof value === 'string') { + return this._truncateToLimitUtil(value, limit); + } + // Array of strings + if (Array.isArray(value)) { + return value.map(val => typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val); + } + // Other types, no need to apply value length limit + return value; + } +} +//# sourceMappingURL=Span.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Span.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Span.js.map new file mode 100644 index 0000000..24aeb5b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Span.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Span.js","sourceRoot":"","sources":["../../src/Span.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n diag,\n Exception,\n HrTime,\n Link,\n Span as APISpan,\n Attributes,\n AttributeValue,\n SpanContext,\n SpanKind,\n SpanStatus,\n SpanStatusCode,\n TimeInput,\n} from '@opentelemetry/api';\nimport {\n addHrTimes,\n millisToHrTime,\n hrTime,\n hrTimeDuration,\n InstrumentationScope,\n isAttributeValue,\n isTimeInput,\n isTimeInputHrTime,\n otperformance,\n sanitizeAttributes,\n} from '@opentelemetry/core';\nimport { Resource } from '@opentelemetry/resources';\nimport {\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n} from '@opentelemetry/semantic-conventions';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { ExceptionEventName } from './enums';\nimport { SpanProcessor } from './SpanProcessor';\nimport { TimedEvent } from './TimedEvent';\nimport { SpanLimits } from './types';\n\n/**\n * This type provides the properties of @link{ReadableSpan} at the same time\n * of the Span API\n */\nexport type Span = APISpan & ReadableSpan;\n\ninterface SpanOptions {\n resource: Resource;\n scope: InstrumentationScope;\n context: Context;\n spanContext: SpanContext;\n name: string;\n kind: SpanKind;\n parentSpanContext?: SpanContext;\n links?: Link[];\n startTime?: TimeInput;\n attributes?: Attributes;\n spanLimits: SpanLimits;\n spanProcessor: SpanProcessor;\n}\n\n/**\n * This class represents a span.\n */\nexport class SpanImpl implements Span {\n // Below properties are included to implement ReadableSpan for export\n // purposes but are not intended to be written-to directly.\n private readonly _spanContext: SpanContext;\n readonly kind: SpanKind;\n readonly parentSpanContext?: SpanContext;\n readonly attributes: Attributes = {};\n readonly links: Link[] = [];\n readonly events: TimedEvent[] = [];\n readonly startTime: HrTime;\n readonly resource: Resource;\n readonly instrumentationScope: InstrumentationScope;\n\n private _droppedAttributesCount = 0;\n private _droppedEventsCount: number = 0;\n private _droppedLinksCount: number = 0;\n\n name: string;\n status: SpanStatus = {\n code: SpanStatusCode.UNSET,\n };\n endTime: HrTime = [0, 0];\n private _ended = false;\n private _duration: HrTime = [-1, -1];\n private readonly _spanProcessor: SpanProcessor;\n private readonly _spanLimits: SpanLimits;\n private readonly _attributeValueLengthLimit: number;\n\n private readonly _performanceStartTime: number;\n private readonly _performanceOffset: number;\n private readonly _startTimeProvided: boolean;\n\n /**\n * Constructs a new SpanImpl instance.\n */\n constructor(opts: SpanOptions) {\n const now = Date.now();\n\n this._spanContext = opts.spanContext;\n this._performanceStartTime = otperformance.now();\n this._performanceOffset =\n now - (this._performanceStartTime + 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\n this.name = opts.name;\n this.parentSpanContext = opts.parentSpanContext;\n this.kind = opts.kind;\n this.links = opts.links || [];\n this.startTime = this._getTime(opts.startTime ?? now);\n this.resource = opts.resource;\n this.instrumentationScope = opts.scope;\n\n if (opts.attributes != null) {\n this.setAttributes(opts.attributes);\n }\n\n this._spanProcessor.onStart(this, opts.context);\n }\n\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n setAttribute(key: string, value?: AttributeValue): this;\n setAttribute(key: string, value: unknown): this {\n if (value == null || this._isSpanEnded()) return this;\n if (key.length === 0) {\n diag.warn(`Invalid attribute key: ${key}`);\n return this;\n }\n if (!isAttributeValue(value)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n return this;\n }\n\n const { attributeCountLimit } = this._spanLimits;\n\n if (\n attributeCountLimit !== undefined &&\n Object.keys(this.attributes).length >= attributeCountLimit &&\n !Object.prototype.hasOwnProperty.call(this.attributes, key)\n ) {\n this._droppedAttributesCount++;\n return this;\n }\n this.attributes[key] = this._truncateToSize(value);\n return this;\n }\n\n setAttributes(attributes: Attributes): this {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\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(\n name: string,\n attributesOrStartTime?: Attributes | TimeInput,\n timeStamp?: TimeInput\n ): this {\n if (this._isSpanEnded()) return this;\n\n const { eventCountLimit } = this._spanLimits;\n\n if (eventCountLimit === 0) {\n diag.warn('No events allowed.');\n this._droppedEventsCount++;\n return this;\n }\n\n if (\n eventCountLimit !== undefined &&\n this.events.length >= eventCountLimit\n ) {\n if (this._droppedEventsCount === 0) {\n diag.debug('Dropping extra events.');\n }\n this.events.shift();\n this._droppedEventsCount++;\n }\n\n if (isTimeInput(attributesOrStartTime)) {\n if (!isTimeInput(timeStamp)) {\n timeStamp = attributesOrStartTime;\n }\n attributesOrStartTime = undefined;\n }\n\n const attributes = sanitizeAttributes(attributesOrStartTime);\n\n this.events.push({\n name,\n attributes,\n time: this._getTime(timeStamp),\n droppedAttributesCount: 0,\n });\n return this;\n }\n\n addLink(link: Link): this {\n this.links.push(link);\n return this;\n }\n\n addLinks(links: Link[]): this {\n this.links.push(...links);\n return this;\n }\n\n setStatus(status: SpanStatus): this {\n if (this._isSpanEnded()) return this;\n this.status = { ...status };\n\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 (this.status.message != null && typeof status.message !== 'string') {\n diag.warn(\n `Dropping invalid status.message of type '${typeof status.message}', expected 'string'`\n );\n delete this.status.message;\n }\n\n return this;\n }\n\n updateName(name: string): this {\n if (this._isSpanEnded()) return this;\n this.name = name;\n return this;\n }\n\n end(endTime?: TimeInput): void {\n if (this._isSpanEnded()) {\n diag.error(\n `${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`\n );\n return;\n }\n this.endTime = this._getTime(endTime);\n this._duration = hrTimeDuration(this.startTime, this.endTime);\n\n if (this._duration[0] < 0) {\n diag.warn(\n 'Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.',\n this.startTime,\n this.endTime\n );\n this.endTime = this.startTime.slice() as HrTime;\n this._duration = [0, 0];\n }\n\n if (this._droppedEventsCount > 0) {\n diag.warn(\n `Dropped ${this._droppedEventsCount} events because eventCountLimit reached`\n );\n }\n if (this._spanProcessor.onEnding) {\n this._spanProcessor.onEnding(this);\n }\n\n this._ended = true;\n this._spanProcessor.onEnd(this);\n }\n\n private _getTime(inp?: TimeInput): HrTime {\n if (typeof inp === 'number' && inp <= otperformance.now()) {\n // must be a performance timestamp\n // apply correction and convert to hrtime\n return hrTime(inp + this._performanceOffset);\n }\n\n if (typeof inp === 'number') {\n return millisToHrTime(inp);\n }\n\n if (inp instanceof Date) {\n return millisToHrTime(inp.getTime());\n }\n\n if (isTimeInputHrTime(inp)) {\n return inp;\n }\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 millisToHrTime(Date.now());\n }\n\n const msDuration = otperformance.now() - this._performanceStartTime;\n return addHrTimes(this.startTime, millisToHrTime(msDuration));\n }\n\n isRecording(): boolean {\n return this._ended === false;\n }\n\n recordException(exception: Exception, time?: TimeInput): void {\n const attributes: Attributes = {};\n if (typeof exception === 'string') {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception;\n } else if (exception) {\n if (exception.code) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.code.toString();\n } else if (exception.name) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.name;\n }\n if (exception.message) {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception.message;\n }\n if (exception.stack) {\n attributes[ATTR_EXCEPTION_STACKTRACE] = exception.stack;\n }\n }\n\n // these are minimum requirements from spec\n if (attributes[ATTR_EXCEPTION_TYPE] || attributes[ATTR_EXCEPTION_MESSAGE]) {\n this.addEvent(ExceptionEventName, attributes, time);\n } else {\n diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n\n get duration(): HrTime {\n return this._duration;\n }\n\n get ended(): boolean {\n return this._ended;\n }\n\n get droppedAttributesCount(): number {\n return this._droppedAttributesCount;\n }\n\n get droppedEventsCount(): number {\n return this._droppedEventsCount;\n }\n\n get droppedLinksCount(): number {\n return this._droppedLinksCount;\n }\n\n private _isSpanEnded(): boolean {\n if (this._ended) {\n const error = new Error(\n `Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`\n );\n\n diag.warn(\n `Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`,\n error\n );\n }\n return this._ended;\n }\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 private _truncateToLimitUtil(value: string, limit: number): string {\n if (value.length <= limit) {\n return value;\n }\n return value.substring(0, limit);\n }\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 private _truncateToSize(value: AttributeValue): AttributeValue {\n const limit = this._attributeValueLengthLimit;\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n\n // String\n if (typeof value === 'string') {\n return this._truncateToLimitUtil(value, limit);\n }\n\n // Array of strings\n if (Array.isArray(value)) {\n return (value as []).map(val =>\n typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val\n );\n }\n\n // Other types, no need to apply value length limit\n return value;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/SpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/SpanProcessor.d.ts new file mode 100644 index 0000000..0ec6fec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/SpanProcessor.d.ts @@ -0,0 +1,39 @@ +import { Context } from '@opentelemetry/api'; +import { ReadableSpan } from './export/ReadableSpan'; +import { Span } from './Span'; +/** + * SpanProcessor is the interface Tracer SDK uses to allow synchronous hooks + * for when a {@link Span} is started or when a {@link Span} is ended. + */ +export interface SpanProcessor { + /** + * Forces to export all finished spans + */ + forceFlush(): Promise; + /** + * Called when a {@link Span} is started, if the `span.isRecording()` + * returns true. + * @param span the Span that just started. + */ + onStart(span: Span, parentContext: Context): void; + /** + * Called when a {@link Span} is ending, if the `span.isRecording()` + * returns true. + * @param span the Span that is ending. + * + * @experimental This method is experimental and may break in minor versions of this package + */ + onEnding?(span: Span): void; + /** + * Called when a {@link ReadableSpan} is ended, if the `span.isRecording()` + * returns true. + * @param span the Span that just ended. + */ + onEnd(span: ReadableSpan): void; + /** + * Shuts down the processor. Called when SDK is shut down. This is an + * opportunity for processor to do any cleanup required. + */ + shutdown(): Promise; +} +//# sourceMappingURL=SpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/SpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/SpanProcessor.js new file mode 100644 index 0000000..53cab0e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/SpanProcessor.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=SpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/SpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/SpanProcessor.js.map new file mode 100644 index 0000000..1715711 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/SpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SpanProcessor.js","sourceRoot":"","sources":["../../src/SpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '@opentelemetry/api';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { Span } from './Span';\n\n/**\n * SpanProcessor is the interface Tracer SDK uses to allow synchronous hooks\n * for when a {@link Span} is started or when a {@link Span} is ended.\n */\nexport interface SpanProcessor {\n /**\n * Forces to export all finished spans\n */\n forceFlush(): Promise;\n\n /**\n * Called when a {@link Span} is started, if the `span.isRecording()`\n * returns true.\n * @param span the Span that just started.\n */\n onStart(span: Span, parentContext: Context): void;\n\n /**\n * Called when a {@link Span} is ending, if the `span.isRecording()`\n * returns true.\n * @param span the Span that is ending.\n *\n * @experimental This method is experimental and may break in minor versions of this package\n */\n onEnding?(span: Span): void;\n\n /**\n * Called when a {@link ReadableSpan} is ended, if the `span.isRecording()`\n * returns true.\n * @param span the Span that just ended.\n */\n onEnd(span: ReadableSpan): void;\n\n /**\n * Shuts down the processor. Called when SDK is shut down. This is an\n * opportunity for processor to do any cleanup required.\n */\n shutdown(): Promise;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/TimedEvent.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/TimedEvent.d.ts new file mode 100644 index 0000000..7ad3754 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/TimedEvent.d.ts @@ -0,0 +1,15 @@ +import { HrTime, Attributes } from '@opentelemetry/api'; +/** + * Represents a timed event. + * A timed event is an event with a timestamp. + */ +export interface TimedEvent { + time: HrTime; + /** The name of the event. */ + name: string; + /** The attributes of the event. */ + attributes?: Attributes; + /** Count of attributes of the event that were dropped due to collection limits */ + droppedAttributesCount?: number; +} +//# sourceMappingURL=TimedEvent.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/TimedEvent.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/TimedEvent.js new file mode 100644 index 0000000..1e58cf2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/TimedEvent.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=TimedEvent.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/TimedEvent.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/TimedEvent.js.map new file mode 100644 index 0000000..e5ee89d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/TimedEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TimedEvent.js","sourceRoot":"","sources":["../../src/TimedEvent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { HrTime, Attributes } from '@opentelemetry/api';\n\n/**\n * Represents a timed event.\n * A timed event is an event with a timestamp.\n */\nexport interface TimedEvent {\n time: HrTime;\n /** The name of the event. */\n name: string;\n /** The attributes of the event. */\n attributes?: Attributes;\n /** Count of attributes of the event that were dropped due to collection limits */\n droppedAttributesCount?: number;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.d.ts new file mode 100644 index 0000000..a01a9aa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.d.ts @@ -0,0 +1,77 @@ +import * as api from '@opentelemetry/api'; +import { InstrumentationScope } from '@opentelemetry/core'; +import { GeneralLimits, SpanLimits, TracerConfig } from './types'; +import { SpanProcessor } from './SpanProcessor'; +import { Resource } from '@opentelemetry/resources'; +/** + * This class represents a basic tracer. + */ +export declare class Tracer implements api.Tracer { + private readonly _sampler; + private readonly _generalLimits; + private readonly _spanLimits; + private readonly _idGenerator; + readonly instrumentationScope: InstrumentationScope; + private readonly _resource; + private readonly _spanProcessor; + /** + * Constructs a new Tracer instance. + */ + constructor(instrumentationScope: InstrumentationScope, config: TracerConfig, resource: Resource, spanProcessor: SpanProcessor); + /** + * Starts a new Span or returns the default NoopSpan based on the sampling + * decision. + */ + startSpan(name: string, options?: api.SpanOptions, context?: api.Context): api.Span; + /** + * Starts a new {@link Span} and calls the given function passing it the + * created span as first argument. + * Additionally the new span gets set in context and this context is activated + * for the duration of the function call. + * + * @param name The name of the span + * @param [options] SpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns return value of fn + * @example + * const something = tracer.startActiveSpan('op', span => { + * try { + * do some work + * span.setStatus({code: SpanStatusCode.OK}); + * return something; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } finally { + * span.end(); + * } + * }); + * @example + * const span = tracer.startActiveSpan('op', span => { + * try { + * do some work + * return span; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } + * }); + * do some more work + * span.end(); + */ + startActiveSpan ReturnType>(name: string, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: api.SpanOptions, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: api.SpanOptions, ctx: api.Context, fn: F): ReturnType; + /** Returns the active {@link GeneralLimits}. */ + getGeneralLimits(): GeneralLimits; + /** Returns the active {@link SpanLimits}. */ + getSpanLimits(): SpanLimits; +} +//# sourceMappingURL=Tracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.js new file mode 100644 index 0000000..d889cfa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.js @@ -0,0 +1,148 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as api from '@opentelemetry/api'; +import { sanitizeAttributes, isTracingSuppressed, } from '@opentelemetry/core'; +import { SpanImpl } from './Span'; +import { mergeConfig } from './utility'; +import { RandomIdGenerator } from './platform'; +/** + * This class represents a basic tracer. + */ +export class Tracer { + _sampler; + _generalLimits; + _spanLimits; + _idGenerator; + instrumentationScope; + _resource; + _spanProcessor; + /** + * Constructs a new Tracer instance. + */ + constructor(instrumentationScope, config, resource, spanProcessor) { + const localConfig = mergeConfig(config); + this._sampler = localConfig.sampler; + this._generalLimits = localConfig.generalLimits; + this._spanLimits = localConfig.spanLimits; + this._idGenerator = config.idGenerator || new RandomIdGenerator(); + this._resource = resource; + this._spanProcessor = spanProcessor; + this.instrumentationScope = instrumentationScope; + } + /** + * Starts a new Span or returns the default NoopSpan based on the sampling + * decision. + */ + startSpan(name, options = {}, context = api.context.active()) { + // remove span from context in case a root span is requested via options + if (options.root) { + context = api.trace.deleteSpan(context); + } + const parentSpan = api.trace.getSpan(context); + if (isTracingSuppressed(context)) { + api.diag.debug('Instrumentation suppressed, returning Noop Span'); + const nonRecordingSpan = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT); + return nonRecordingSpan; + } + const parentSpanContext = parentSpan?.spanContext(); + const spanId = this._idGenerator.generateSpanId(); + let validParentSpanContext; + let traceId; + let traceState; + if (!parentSpanContext || + !api.trace.isSpanContextValid(parentSpanContext)) { + // New root span. + traceId = this._idGenerator.generateTraceId(); + } + else { + // New child span. + traceId = parentSpanContext.traceId; + traceState = parentSpanContext.traceState; + validParentSpanContext = parentSpanContext; + } + const spanKind = options.kind ?? api.SpanKind.INTERNAL; + const links = (options.links ?? []).map(link => { + return { + context: link.context, + attributes: sanitizeAttributes(link.attributes), + }; + }); + const attributes = sanitizeAttributes(options.attributes); + // make sampling decision + const samplingResult = this._sampler.shouldSample(context, traceId, name, spanKind, attributes, links); + traceState = samplingResult.traceState ?? traceState; + const traceFlags = samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED + ? api.TraceFlags.SAMPLED + : api.TraceFlags.NONE; + const spanContext = { traceId, spanId, traceFlags, traceState }; + if (samplingResult.decision === api.SamplingDecision.NOT_RECORD) { + api.diag.debug('Recording is off, propagating context in a non-recording span'); + const nonRecordingSpan = api.trace.wrapSpanContext(spanContext); + return nonRecordingSpan; + } + // Set initial span attributes. The attributes object may have been mutated + // by the sampler, so we sanitize the merged attributes before setting them. + const initAttributes = sanitizeAttributes(Object.assign(attributes, samplingResult.attributes)); + const span = new SpanImpl({ + resource: this._resource, + scope: this.instrumentationScope, + context, + spanContext, + name, + kind: spanKind, + links, + parentSpanContext: validParentSpanContext, + attributes: initAttributes, + startTime: options.startTime, + spanProcessor: this._spanProcessor, + spanLimits: this._spanLimits, + }); + return span; + } + startActiveSpan(name, arg2, arg3, arg4) { + let opts; + let ctx; + let fn; + if (arguments.length < 2) { + return; + } + else if (arguments.length === 2) { + fn = arg2; + } + else if (arguments.length === 3) { + opts = arg2; + fn = arg3; + } + else { + opts = arg2; + ctx = arg3; + fn = arg4; + } + const parentContext = ctx ?? api.context.active(); + const span = this.startSpan(name, opts, parentContext); + const contextWithSpanSet = api.trace.setSpan(parentContext, span); + return api.context.with(contextWithSpanSet, fn, undefined, span); + } + /** Returns the active {@link GeneralLimits}. */ + getGeneralLimits() { + return this._generalLimits; + } + /** Returns the active {@link SpanLimits}. */ + getSpanLimits() { + return this._spanLimits; + } +} +//# sourceMappingURL=Tracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.js.map new file mode 100644 index 0000000..03211b9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Tracer.js","sourceRoot":"","sources":["../../src/Tracer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport {\n InstrumentationScope,\n sanitizeAttributes,\n isTracingSuppressed,\n} from '@opentelemetry/core';\nimport { SpanImpl } from './Span';\nimport { GeneralLimits, SpanLimits, TracerConfig } from './types';\nimport { mergeConfig } from './utility';\nimport { SpanProcessor } from './SpanProcessor';\nimport { Sampler } from './Sampler';\nimport { IdGenerator } from './IdGenerator';\nimport { RandomIdGenerator } from './platform';\nimport { Resource } from '@opentelemetry/resources';\n\n/**\n * This class represents a basic tracer.\n */\nexport class Tracer implements api.Tracer {\n private readonly _sampler: Sampler;\n private readonly _generalLimits: GeneralLimits;\n private readonly _spanLimits: SpanLimits;\n private readonly _idGenerator: IdGenerator;\n readonly instrumentationScope: InstrumentationScope;\n\n private readonly _resource: Resource;\n private readonly _spanProcessor: SpanProcessor;\n\n /**\n * Constructs a new Tracer instance.\n */\n constructor(\n instrumentationScope: InstrumentationScope,\n config: TracerConfig,\n resource: Resource,\n spanProcessor: SpanProcessor\n ) {\n const localConfig = mergeConfig(config);\n this._sampler = localConfig.sampler;\n this._generalLimits = localConfig.generalLimits;\n this._spanLimits = localConfig.spanLimits;\n this._idGenerator = config.idGenerator || new RandomIdGenerator();\n this._resource = resource;\n this._spanProcessor = spanProcessor;\n this.instrumentationScope = instrumentationScope;\n }\n\n /**\n * Starts a new Span or returns the default NoopSpan based on the sampling\n * decision.\n */\n startSpan(\n name: string,\n options: api.SpanOptions = {},\n context = api.context.active()\n ): api.Span {\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\n if (isTracingSuppressed(context)) {\n api.diag.debug('Instrumentation suppressed, returning Noop Span');\n const nonRecordingSpan = api.trace.wrapSpanContext(\n api.INVALID_SPAN_CONTEXT\n );\n return nonRecordingSpan;\n }\n\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = this._idGenerator.generateSpanId();\n let validParentSpanContext;\n let traceId;\n let traceState;\n if (\n !parentSpanContext ||\n !api.trace.isSpanContextValid(parentSpanContext)\n ) {\n // New root span.\n traceId = this._idGenerator.generateTraceId();\n } else {\n // New child span.\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n validParentSpanContext = parentSpanContext;\n }\n\n const spanKind = options.kind ?? api.SpanKind.INTERNAL;\n const links = (options.links ?? []).map(link => {\n return {\n context: link.context,\n attributes: sanitizeAttributes(link.attributes),\n };\n });\n const attributes = sanitizeAttributes(options.attributes);\n // make sampling decision\n const samplingResult = this._sampler.shouldSample(\n context,\n traceId,\n name,\n spanKind,\n attributes,\n links\n );\n\n traceState = samplingResult.traceState ?? traceState;\n\n const traceFlags =\n 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(\n 'Recording is off, propagating context in a non-recording span'\n );\n const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n return nonRecordingSpan;\n }\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 = sanitizeAttributes(\n Object.assign(attributes, samplingResult.attributes)\n );\n\n const span = new 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 });\n return span;\n }\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally the new span gets set in context and this context is activated\n * for the duration of the function call.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * span.setStatus({code: SpanStatusCode.OK});\n * return something;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * } finally {\n * span.end();\n * }\n * });\n * @example\n * const span = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * return span;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * }\n * });\n * do some more work\n * span.end();\n */\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n ctx: api.Context,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | api.SpanOptions,\n arg3?: F | api.Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: api.SpanOptions | undefined;\n let ctx: api.Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as api.SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as api.SpanOptions | undefined;\n ctx = arg3 as api.Context | undefined;\n fn = arg4 as F;\n }\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\n return api.context.with(contextWithSpanSet, fn, undefined, span);\n }\n\n /** Returns the active {@link GeneralLimits}. */\n getGeneralLimits(): GeneralLimits {\n return this._generalLimits;\n }\n\n /** Returns the active {@link SpanLimits}. */\n getSpanLimits(): SpanLimits {\n return this._spanLimits;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/config.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/config.d.ts new file mode 100644 index 0000000..4b6cea3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/config.d.ts @@ -0,0 +1,28 @@ +import { Sampler } from './Sampler'; +/** + * Load default configuration. For fields with primitive values, any user-provided + * value will override the corresponding default value. For fields with + * non-primitive values (like `spanLimits`), the user-provided value will be + * used to extend the default value. + */ +export declare function loadDefaultConfig(): { + sampler: Sampler; + forceFlushTimeoutMillis: number; + generalLimits: { + attributeValueLengthLimit: number; + attributeCountLimit: number; + }; + spanLimits: { + attributeValueLengthLimit: number; + attributeCountLimit: number; + linkCountLimit: number; + eventCountLimit: number; + attributePerEventCountLimit: number; + attributePerLinkCountLimit: number; + }; +}; +/** + * Based on environment, builds a sampler, complies with specification. + */ +export declare function buildSamplerFromEnv(): Sampler; +//# sourceMappingURL=config.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/config.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/config.js new file mode 100644 index 0000000..a5e9e34 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/config.js @@ -0,0 +1,102 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { getNumberFromEnv, getStringFromEnv } from '@opentelemetry/core'; +import { AlwaysOffSampler } from './sampler/AlwaysOffSampler'; +import { AlwaysOnSampler } from './sampler/AlwaysOnSampler'; +import { ParentBasedSampler } from './sampler/ParentBasedSampler'; +import { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler'; +var TracesSamplerValues; +(function (TracesSamplerValues) { + TracesSamplerValues["AlwaysOff"] = "always_off"; + TracesSamplerValues["AlwaysOn"] = "always_on"; + TracesSamplerValues["ParentBasedAlwaysOff"] = "parentbased_always_off"; + TracesSamplerValues["ParentBasedAlwaysOn"] = "parentbased_always_on"; + TracesSamplerValues["ParentBasedTraceIdRatio"] = "parentbased_traceidratio"; + TracesSamplerValues["TraceIdRatio"] = "traceidratio"; +})(TracesSamplerValues || (TracesSamplerValues = {})); +const DEFAULT_RATIO = 1; +/** + * Load default configuration. For fields with primitive values, any user-provided + * value will override the corresponding default value. For fields with + * non-primitive values (like `spanLimits`), the user-provided value will be + * used to extend the default value. + */ +// object needs to be wrapped in this function and called when needed otherwise +// envs are parsed before tests are ran - causes tests using these envs to fail +export function loadDefaultConfig() { + return { + sampler: buildSamplerFromEnv(), + forceFlushTimeoutMillis: 30000, + generalLimits: { + attributeValueLengthLimit: getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity, + attributeCountLimit: getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128, + }, + spanLimits: { + attributeValueLengthLimit: getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity, + attributeCountLimit: getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128, + linkCountLimit: getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128, + eventCountLimit: getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128, + attributePerEventCountLimit: getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128, + attributePerLinkCountLimit: getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128, + }, + }; +} +/** + * Based on environment, builds a sampler, complies with specification. + */ +export function buildSamplerFromEnv() { + const sampler = getStringFromEnv('OTEL_TRACES_SAMPLER') ?? + TracesSamplerValues.ParentBasedAlwaysOn; + switch (sampler) { + case TracesSamplerValues.AlwaysOn: + return new AlwaysOnSampler(); + case TracesSamplerValues.AlwaysOff: + return new AlwaysOffSampler(); + case TracesSamplerValues.ParentBasedAlwaysOn: + return new ParentBasedSampler({ + root: new AlwaysOnSampler(), + }); + case TracesSamplerValues.ParentBasedAlwaysOff: + return new ParentBasedSampler({ + root: new AlwaysOffSampler(), + }); + case TracesSamplerValues.TraceIdRatio: + return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()); + case TracesSamplerValues.ParentBasedTraceIdRatio: + return new ParentBasedSampler({ + root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()), + }); + default: + diag.error(`OTEL_TRACES_SAMPLER value "${sampler}" invalid, defaulting to "${TracesSamplerValues.ParentBasedAlwaysOn}".`); + return new ParentBasedSampler({ + root: new AlwaysOnSampler(), + }); + } +} +function getSamplerProbabilityFromEnv() { + const probability = getNumberFromEnv('OTEL_TRACES_SAMPLER_ARG'); + if (probability == null) { + diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`); + return DEFAULT_RATIO; + } + if (probability < 0 || probability > 1) { + diag.error(`OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`); + return DEFAULT_RATIO; + } + return probability; +} +//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/config.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/config.js.map new file mode 100644 index 0000000..8d9f0e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/config.js.map @@ -0,0 +1 @@ +{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\nimport { getNumberFromEnv, getStringFromEnv } from '@opentelemetry/core';\nimport { Sampler } from './Sampler';\nimport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nimport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nimport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nimport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\n\nconst enum TracesSamplerValues {\n AlwaysOff = 'always_off',\n AlwaysOn = 'always_on',\n ParentBasedAlwaysOff = 'parentbased_always_off',\n ParentBasedAlwaysOn = 'parentbased_always_on',\n ParentBasedTraceIdRatio = 'parentbased_traceidratio',\n TraceIdRatio = 'traceidratio',\n}\n\nconst DEFAULT_RATIO = 1;\n\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\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\nexport function loadDefaultConfig() {\n return {\n sampler: buildSamplerFromEnv(),\n forceFlushTimeoutMillis: 30000,\n generalLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n },\n spanLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n linkCountLimit: getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128,\n eventCountLimit: getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128,\n attributePerEventCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128,\n attributePerLinkCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128,\n },\n };\n}\n\n/**\n * Based on environment, builds a sampler, complies with specification.\n */\nexport function buildSamplerFromEnv(): Sampler {\n const sampler =\n getStringFromEnv('OTEL_TRACES_SAMPLER') ??\n TracesSamplerValues.ParentBasedAlwaysOn;\n switch (sampler) {\n case TracesSamplerValues.AlwaysOn:\n return new AlwaysOnSampler();\n case TracesSamplerValues.AlwaysOff:\n return new AlwaysOffSampler();\n case TracesSamplerValues.ParentBasedAlwaysOn:\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n case TracesSamplerValues.ParentBasedAlwaysOff:\n return new ParentBasedSampler({\n root: new AlwaysOffSampler(),\n });\n case TracesSamplerValues.TraceIdRatio:\n return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv());\n case TracesSamplerValues.ParentBasedTraceIdRatio:\n return new ParentBasedSampler({\n root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()),\n });\n default:\n diag.error(\n `OTEL_TRACES_SAMPLER value \"${sampler}\" invalid, defaulting to \"${TracesSamplerValues.ParentBasedAlwaysOn}\".`\n );\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n }\n}\n\nfunction getSamplerProbabilityFromEnv(): number | undefined {\n const probability = getNumberFromEnv('OTEL_TRACES_SAMPLER_ARG');\n if (probability == null) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n if (probability < 0 || probability > 1) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n return probability;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/enums.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/enums.d.ts new file mode 100644 index 0000000..0192301 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/enums.d.ts @@ -0,0 +1,2 @@ +export declare const ExceptionEventName = "exception"; +//# sourceMappingURL=enums.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/enums.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/enums.js new file mode 100644 index 0000000..c3d6c57 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/enums.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Event name definitions +export const ExceptionEventName = 'exception'; +//# sourceMappingURL=enums.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/enums.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/enums.js.map new file mode 100644 index 0000000..b98b43e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/enums.js.map @@ -0,0 +1 @@ +{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,yBAAyB;AACzB,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Event name definitions\nexport const ExceptionEventName = 'exception';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/BatchSpanProcessorBase.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/BatchSpanProcessorBase.d.ts new file mode 100644 index 0000000..d67139f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/BatchSpanProcessorBase.d.ts @@ -0,0 +1,41 @@ +import { Context } from '@opentelemetry/api'; +import { Span } from '../Span'; +import { SpanProcessor } from '../SpanProcessor'; +import { BufferConfig } from '../types'; +import { ReadableSpan } from './ReadableSpan'; +import { SpanExporter } from './SpanExporter'; +/** + * Implementation of the {@link SpanProcessor} that batches spans exported by + * the SDK then pushes them to the exporter pipeline. + */ +export declare abstract class BatchSpanProcessorBase implements SpanProcessor { + private readonly _maxExportBatchSize; + private readonly _maxQueueSize; + private readonly _scheduledDelayMillis; + private readonly _exportTimeoutMillis; + private readonly _exporter; + private _isExporting; + private _finishedSpans; + private _timer; + private _shutdownOnce; + private _droppedSpansCount; + constructor(exporter: SpanExporter, config?: T); + forceFlush(): Promise; + onStart(_span: Span, _parentContext: Context): void; + onEnd(span: ReadableSpan): void; + shutdown(): Promise; + private _shutdown; + /** Add a span in the buffer. */ + private _addToBuffer; + /** + * Send all spans to the exporter respecting the batch size limit + * This function is used only on forceFlush or shutdown, + * for all other cases _flush should be used + * */ + private _flushAll; + private _flushOneBatch; + private _maybeStartTimer; + private _clearTimer; + protected abstract onShutdown(): void; +} +//# sourceMappingURL=BatchSpanProcessorBase.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/BatchSpanProcessorBase.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/BatchSpanProcessorBase.js new file mode 100644 index 0000000..eff087d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/BatchSpanProcessorBase.js @@ -0,0 +1,219 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { context, diag, TraceFlags } from '@opentelemetry/api'; +import { BindOnceFuture, ExportResultCode, getNumberFromEnv, globalErrorHandler, suppressTracing, } from '@opentelemetry/core'; +/** + * Implementation of the {@link SpanProcessor} that batches spans exported by + * the SDK then pushes them to the exporter pipeline. + */ +export class BatchSpanProcessorBase { + _maxExportBatchSize; + _maxQueueSize; + _scheduledDelayMillis; + _exportTimeoutMillis; + _exporter; + _isExporting = false; + _finishedSpans = []; + _timer; + _shutdownOnce; + _droppedSpansCount = 0; + constructor(exporter, config) { + this._exporter = exporter; + this._maxExportBatchSize = + typeof config?.maxExportBatchSize === 'number' + ? config.maxExportBatchSize + : (getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512); + this._maxQueueSize = + typeof config?.maxQueueSize === 'number' + ? config.maxQueueSize + : (getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048); + this._scheduledDelayMillis = + typeof config?.scheduledDelayMillis === 'number' + ? config.scheduledDelayMillis + : (getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000); + this._exportTimeoutMillis = + typeof config?.exportTimeoutMillis === 'number' + ? config.exportTimeoutMillis + : (getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000); + this._shutdownOnce = new BindOnceFuture(this._shutdown, this); + if (this._maxExportBatchSize > this._maxQueueSize) { + 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(); + } + // does nothing. + onStart(_span, _parentContext) { } + onEnd(span) { + if (this._shutdownOnce.isCalled) { + return; + } + if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) { + return; + } + this._addToBuffer(span); + } + shutdown() { + return this._shutdownOnce.call(); + } + _shutdown() { + return Promise.resolve() + .then(() => { + return this.onShutdown(); + }) + .then(() => { + return this._flushAll(); + }) + .then(() => { + return this._exporter.shutdown(); + }); + } + /** Add a span in the buffer. */ + _addToBuffer(span) { + if (this._finishedSpans.length >= this._maxQueueSize) { + // limit reached, drop span + if (this._droppedSpansCount === 0) { + diag.debug('maxQueueSize reached, dropping spans'); + } + this._droppedSpansCount++; + return; + } + if (this._droppedSpansCount > 0) { + // some spans were dropped, log once with count of spans dropped + diag.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`); + this._droppedSpansCount = 0; + } + this._finishedSpans.push(span); + this._maybeStartTimer(); + } + /** + * Send all spans to the exporter respecting the batch size limit + * This function is used only on forceFlush or shutdown, + * for all other cases _flush should be used + * */ + _flushAll() { + return new Promise((resolve, reject) => { + const promises = []; + // calculate number of batches + const count = Math.ceil(this._finishedSpans.length / this._maxExportBatchSize); + for (let i = 0, j = count; i < j; i++) { + promises.push(this._flushOneBatch()); + } + Promise.all(promises) + .then(() => { + resolve(); + }) + .catch(reject); + }); + } + _flushOneBatch() { + this._clearTimer(); + if (this._finishedSpans.length === 0) { + return Promise.resolve(); + } + return new Promise((resolve, reject) => { + const timer = setTimeout(() => { + // don't wait anymore for export, this way the next batch can start + reject(new Error('Timeout')); + }, this._exportTimeoutMillis); + // prevent downstream exporter calls from generating spans + context.with(suppressTracing(context.active()), () => { + // Reset the finished spans buffer here because the next invocations of the _flush method + // could pass the same finished spans to the exporter if the buffer is cleared + // outside the execution of this callback. + let spans; + if (this._finishedSpans.length <= this._maxExportBatchSize) { + spans = this._finishedSpans; + this._finishedSpans = []; + } + else { + spans = this._finishedSpans.splice(0, this._maxExportBatchSize); + } + const doExport = () => this._exporter.export(spans, result => { + clearTimeout(timer); + if (result.code === ExportResultCode.SUCCESS) { + resolve(); + } + else { + reject(result.error ?? + new Error('BatchSpanProcessor: span export failed')); + } + }); + let pendingResources = null; + for (let i = 0, len = spans.length; i < len; i++) { + const span = spans[i]; + if (span.resource.asyncAttributesPending && + span.resource.waitForAsyncAttributes) { + pendingResources ??= []; + pendingResources.push(span.resource.waitForAsyncAttributes()); + } + } + // Avoid scheduling a promise to make the behavior more predictable and easier to test + if (pendingResources === null) { + doExport(); + } + else { + Promise.all(pendingResources).then(doExport, err => { + globalErrorHandler(err); + reject(err); + }); + } + }); + }); + } + _maybeStartTimer() { + if (this._isExporting) + return; + const flush = () => { + this._isExporting = true; + this._flushOneBatch() + .finally(() => { + this._isExporting = false; + if (this._finishedSpans.length > 0) { + this._clearTimer(); + this._maybeStartTimer(); + } + }) + .catch(e => { + this._isExporting = false; + globalErrorHandler(e); + }); + }; + // we only wait if the queue doesn't have enough elements yet + if (this._finishedSpans.length >= this._maxExportBatchSize) { + return flush(); + } + if (this._timer !== undefined) + return; + this._timer = setTimeout(() => flush(), this._scheduledDelayMillis); + // depending on runtime, this may be a 'number' or NodeJS.Timeout + if (typeof this._timer !== 'number') { + this._timer.unref(); + } + } + _clearTimer() { + if (this._timer !== undefined) { + clearTimeout(this._timer); + this._timer = undefined; + } + } +} +//# sourceMappingURL=BatchSpanProcessorBase.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/BatchSpanProcessorBase.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/BatchSpanProcessorBase.js.map new file mode 100644 index 0000000..7381301 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/BatchSpanProcessorBase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchSpanProcessorBase.js","sourceRoot":"","sources":["../../../src/export/BatchSpanProcessorBase.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { context, Context, diag, TraceFlags } from '@opentelemetry/api';\nimport {\n BindOnceFuture,\n ExportResultCode,\n getNumberFromEnv,\n globalErrorHandler,\n suppressTracing,\n} from '@opentelemetry/core';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\nimport { BufferConfig } from '../types';\nimport { ReadableSpan } from './ReadableSpan';\nimport { SpanExporter } from './SpanExporter';\n\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nexport abstract class BatchSpanProcessorBase\n implements SpanProcessor\n{\n private readonly _maxExportBatchSize: number;\n private readonly _maxQueueSize: number;\n private readonly _scheduledDelayMillis: number;\n private readonly _exportTimeoutMillis: number;\n private readonly _exporter: SpanExporter;\n\n private _isExporting = false;\n private _finishedSpans: ReadableSpan[] = [];\n private _timer: NodeJS.Timeout | number | undefined;\n private _shutdownOnce: BindOnceFuture;\n private _droppedSpansCount: number = 0;\n\n constructor(exporter: SpanExporter, config?: T) {\n this._exporter = exporter;\n this._maxExportBatchSize =\n typeof config?.maxExportBatchSize === 'number'\n ? config.maxExportBatchSize\n : (getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512);\n this._maxQueueSize =\n typeof config?.maxQueueSize === 'number'\n ? config.maxQueueSize\n : (getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048);\n this._scheduledDelayMillis =\n typeof config?.scheduledDelayMillis === 'number'\n ? config.scheduledDelayMillis\n : (getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000);\n this._exportTimeoutMillis =\n typeof config?.exportTimeoutMillis === 'number'\n ? config.exportTimeoutMillis\n : (getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000);\n\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n\n if (this._maxExportBatchSize > this._maxQueueSize) {\n diag.warn(\n 'BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize'\n );\n this._maxExportBatchSize = this._maxQueueSize;\n }\n }\n\n forceFlush(): Promise {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n\n // does nothing.\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n this._addToBuffer(span);\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _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\n /** Add a span in the buffer. */\n private _addToBuffer(span: ReadableSpan) {\n if (this._finishedSpans.length >= this._maxQueueSize) {\n // limit reached, drop span\n\n if (this._droppedSpansCount === 0) {\n diag.debug('maxQueueSize reached, dropping spans');\n }\n this._droppedSpansCount++;\n\n return;\n }\n\n if (this._droppedSpansCount > 0) {\n // some spans were dropped, log once with count of spans dropped\n diag.warn(\n `Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`\n );\n this._droppedSpansCount = 0;\n }\n\n this._finishedSpans.push(span);\n this._maybeStartTimer();\n }\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 private _flushAll(): Promise {\n return new Promise((resolve, reject) => {\n const promises = [];\n // calculate number of batches\n const count = Math.ceil(\n this._finishedSpans.length / this._maxExportBatchSize\n );\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\n private _flushOneBatch(): Promise {\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 context.with(suppressTracing(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: ReadableSpan[];\n if (this._finishedSpans.length <= this._maxExportBatchSize) {\n spans = this._finishedSpans;\n this._finishedSpans = [];\n } else {\n spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n }\n\n const doExport = () =>\n this._exporter.export(spans, result => {\n clearTimeout(timer);\n if (result.code === ExportResultCode.SUCCESS) {\n resolve();\n } else {\n reject(\n result.error ??\n new Error('BatchSpanProcessor: span export failed')\n );\n }\n });\n\n let pendingResources: Array> | null = null;\n for (let i = 0, len = spans.length; i < len; i++) {\n const span = spans[i];\n if (\n span.resource.asyncAttributesPending &&\n span.resource.waitForAsyncAttributes\n ) {\n pendingResources ??= [];\n pendingResources.push(span.resource.waitForAsyncAttributes());\n }\n }\n\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (pendingResources === null) {\n doExport();\n } else {\n Promise.all(pendingResources).then(doExport, err => {\n globalErrorHandler(err);\n reject(err);\n });\n }\n });\n });\n }\n\n private _maybeStartTimer() {\n if (this._isExporting) 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 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) return;\n this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n\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\n private _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n\n protected abstract onShutdown(): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ConsoleSpanExporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ConsoleSpanExporter.d.ts new file mode 100644 index 0000000..cbbf9bb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ConsoleSpanExporter.d.ts @@ -0,0 +1,37 @@ +import { SpanExporter } from './SpanExporter'; +import { ReadableSpan } from './ReadableSpan'; +import { ExportResult } from '@opentelemetry/core'; +/** + * This is implementation of {@link SpanExporter} that prints spans to the + * console. This class can be used for diagnostic purposes. + * + * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time. + */ +export declare class ConsoleSpanExporter implements SpanExporter { + /** + * Export spans. + * @param spans + * @param resultCallback + */ + export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void; + /** + * Shutdown the exporter. + */ + shutdown(): Promise; + /** + * Exports any pending spans in exporter + */ + forceFlush(): Promise; + /** + * converts span info into more readable format + * @param span + */ + private _exportInfo; + /** + * Showing spans in console + * @param spans + * @param done + */ + private _sendSpans; +} +//# sourceMappingURL=ConsoleSpanExporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ConsoleSpanExporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ConsoleSpanExporter.js new file mode 100644 index 0000000..81d6e1d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ConsoleSpanExporter.js @@ -0,0 +1,84 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ExportResultCode, hrTimeToMicroseconds, } from '@opentelemetry/core'; +/** + * This is implementation of {@link SpanExporter} that prints spans to the + * console. This class can be used for diagnostic purposes. + * + * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time. + */ +/* eslint-disable no-console */ +export class ConsoleSpanExporter { + /** + * Export spans. + * @param spans + * @param resultCallback + */ + export(spans, resultCallback) { + return this._sendSpans(spans, resultCallback); + } + /** + * Shutdown the exporter. + */ + shutdown() { + this._sendSpans([]); + return this.forceFlush(); + } + /** + * Exports any pending spans in exporter + */ + forceFlush() { + return Promise.resolve(); + } + /** + * converts span info into more readable format + * @param span + */ + _exportInfo(span) { + return { + resource: { + attributes: span.resource.attributes, + }, + instrumentationScope: span.instrumentationScope, + traceId: span.spanContext().traceId, + parentSpanContext: span.parentSpanContext, + traceState: span.spanContext().traceState?.serialize(), + name: span.name, + id: span.spanContext().spanId, + kind: span.kind, + timestamp: hrTimeToMicroseconds(span.startTime), + duration: hrTimeToMicroseconds(span.duration), + attributes: span.attributes, + status: span.status, + events: span.events, + links: span.links, + }; + } + /** + * Showing spans in console + * @param spans + * @param done + */ + _sendSpans(spans, done) { + for (const span of spans) { + console.dir(this._exportInfo(span), { depth: 3 }); + } + if (done) { + return done({ code: ExportResultCode.SUCCESS }); + } + } +} +//# sourceMappingURL=ConsoleSpanExporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ConsoleSpanExporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ConsoleSpanExporter.js.map new file mode 100644 index 0000000..c5db26e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ConsoleSpanExporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ConsoleSpanExporter.js","sourceRoot":"","sources":["../../../src/export/ConsoleSpanExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAEL,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B;;;;;GAKG;AAEH,+BAA+B;AAC/B,MAAM,OAAO,mBAAmB;IAC9B;;;;OAIG;IACH,MAAM,CACJ,KAAqB,EACrB,cAA8C;QAE9C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,IAAkB;QACpC,OAAO;YACL,QAAQ,EAAE;gBACR,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;aACrC;YACD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO;YACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE;YACtD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;YAC/C,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC7C,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,UAAU,CAChB,KAAqB,EACrB,IAAqC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;SACnD;QACD,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;SACjD;IACH,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanExporter } from './SpanExporter';\nimport { ReadableSpan } from './ReadableSpan';\nimport {\n ExportResult,\n ExportResultCode,\n hrTimeToMicroseconds,\n} from '@opentelemetry/core';\n\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\n/* eslint-disable no-console */\nexport class ConsoleSpanExporter implements SpanExporter {\n /**\n * Export spans.\n * @param spans\n * @param resultCallback\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n return this._sendSpans(spans, resultCallback);\n }\n\n /**\n * Shutdown the exporter.\n */\n shutdown(): Promise {\n this._sendSpans([]);\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n /**\n * converts span info into more readable format\n * @param span\n */\n private _exportInfo(span: ReadableSpan) {\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: hrTimeToMicroseconds(span.startTime),\n duration: hrTimeToMicroseconds(span.duration),\n attributes: span.attributes,\n status: span.status,\n events: span.events,\n links: span.links,\n };\n }\n\n /**\n * Showing spans in console\n * @param spans\n * @param done\n */\n private _sendSpans(\n spans: ReadableSpan[],\n done?: (result: ExportResult) => void\n ): void {\n for (const span of spans) {\n console.dir(this._exportInfo(span), { depth: 3 });\n }\n if (done) {\n return done({ code: ExportResultCode.SUCCESS });\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/InMemorySpanExporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/InMemorySpanExporter.d.ts new file mode 100644 index 0000000..50dea6e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/InMemorySpanExporter.d.ts @@ -0,0 +1,25 @@ +import { SpanExporter } from './SpanExporter'; +import { ReadableSpan } from './ReadableSpan'; +import { ExportResult } from '@opentelemetry/core'; +/** + * This class can be used for testing purposes. It stores the exported spans + * in a list in memory that can be retrieved using the `getFinishedSpans()` + * method. + */ +export declare class InMemorySpanExporter implements SpanExporter { + private _finishedSpans; + /** + * Indicates if the exporter has been "shutdown." + * When false, exported spans will not be stored in-memory. + */ + protected _stopped: boolean; + export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void; + shutdown(): Promise; + /** + * Exports any pending spans in the exporter + */ + forceFlush(): Promise; + reset(): void; + getFinishedSpans(): ReadableSpan[]; +} +//# sourceMappingURL=InMemorySpanExporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/InMemorySpanExporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/InMemorySpanExporter.js new file mode 100644 index 0000000..68b8058 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/InMemorySpanExporter.js @@ -0,0 +1,56 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ExportResultCode } from '@opentelemetry/core'; +/** + * This class can be used for testing purposes. It stores the exported spans + * in a list in memory that can be retrieved using the `getFinishedSpans()` + * method. + */ +export class InMemorySpanExporter { + _finishedSpans = []; + /** + * Indicates if the exporter has been "shutdown." + * When false, exported spans will not be stored in-memory. + */ + _stopped = false; + export(spans, resultCallback) { + if (this._stopped) + return resultCallback({ + code: ExportResultCode.FAILED, + error: new Error('Exporter has been stopped'), + }); + this._finishedSpans.push(...spans); + setTimeout(() => resultCallback({ code: ExportResultCode.SUCCESS }), 0); + } + shutdown() { + this._stopped = true; + this._finishedSpans = []; + return this.forceFlush(); + } + /** + * Exports any pending spans in the exporter + */ + forceFlush() { + return Promise.resolve(); + } + reset() { + this._finishedSpans = []; + } + getFinishedSpans() { + return this._finishedSpans; + } +} +//# sourceMappingURL=InMemorySpanExporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/InMemorySpanExporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/InMemorySpanExporter.js.map new file mode 100644 index 0000000..8de6ce2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/InMemorySpanExporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"InMemorySpanExporter.js","sourceRoot":"","sources":["../../../src/export/InMemorySpanExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAgB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErE;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IACvB,cAAc,GAAmB,EAAE,CAAC;IAC5C;;;OAGG;IACO,QAAQ,GAAG,KAAK,CAAC;IAE3B,MAAM,CACJ,KAAqB,EACrB,cAA8C;QAE9C,IAAI,IAAI,CAAC,QAAQ;YACf,OAAO,cAAc,CAAC;gBACpB,IAAI,EAAE,gBAAgB,CAAC,MAAM;gBAC7B,KAAK,EAAE,IAAI,KAAK,CAAC,2BAA2B,CAAC;aAC9C,CAAC,CAAC;QACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAEnC,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanExporter } from './SpanExporter';\nimport { ReadableSpan } from './ReadableSpan';\nimport { ExportResult, ExportResultCode } from '@opentelemetry/core';\n\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 */\nexport class InMemorySpanExporter implements SpanExporter {\n private _finishedSpans: ReadableSpan[] = [];\n /**\n * Indicates if the exporter has been \"shutdown.\"\n * When false, exported spans will not be stored in-memory.\n */\n protected _stopped = false;\n\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n if (this._stopped)\n return resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error('Exporter has been stopped'),\n });\n this._finishedSpans.push(...spans);\n\n setTimeout(() => resultCallback({ code: ExportResultCode.SUCCESS }), 0);\n }\n\n shutdown(): Promise {\n this._stopped = true;\n this._finishedSpans = [];\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in the exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n reset(): void {\n this._finishedSpans = [];\n }\n\n getFinishedSpans(): ReadableSpan[] {\n return this._finishedSpans;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/NoopSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/NoopSpanProcessor.d.ts new file mode 100644 index 0000000..fc70798 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/NoopSpanProcessor.d.ts @@ -0,0 +1,12 @@ +import { Context } from '@opentelemetry/api'; +import { ReadableSpan } from './ReadableSpan'; +import { Span } from '../Span'; +import { SpanProcessor } from '../SpanProcessor'; +/** No-op implementation of SpanProcessor */ +export declare class NoopSpanProcessor implements SpanProcessor { + onStart(_span: Span, _context: Context): void; + onEnd(_span: ReadableSpan): void; + shutdown(): Promise; + forceFlush(): Promise; +} +//# sourceMappingURL=NoopSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/NoopSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/NoopSpanProcessor.js new file mode 100644 index 0000000..e83b896 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/NoopSpanProcessor.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** No-op implementation of SpanProcessor */ +export class NoopSpanProcessor { + onStart(_span, _context) { } + onEnd(_span) { } + shutdown() { + return Promise.resolve(); + } + forceFlush() { + return Promise.resolve(); + } +} +//# sourceMappingURL=NoopSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/NoopSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/NoopSpanProcessor.js.map new file mode 100644 index 0000000..7696a15 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/NoopSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopSpanProcessor.js","sourceRoot":"","sources":["../../../src/export/NoopSpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,4CAA4C;AAC5C,MAAM,OAAO,iBAAiB;IAC5B,OAAO,CAAC,KAAW,EAAE,QAAiB,IAAS,CAAC;IAChD,KAAK,CAAC,KAAmB,IAAS,CAAC;IACnC,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '@opentelemetry/api';\nimport { ReadableSpan } from './ReadableSpan';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\n\n/** No-op implementation of SpanProcessor */\nexport class NoopSpanProcessor implements SpanProcessor {\n onStart(_span: Span, _context: Context): void {}\n onEnd(_span: ReadableSpan): void {}\n shutdown(): Promise {\n return Promise.resolve();\n }\n forceFlush(): Promise {\n return Promise.resolve();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ReadableSpan.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ReadableSpan.d.ts new file mode 100644 index 0000000..1645fc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ReadableSpan.d.ts @@ -0,0 +1,24 @@ +import { SpanKind, SpanStatus, Attributes, HrTime, Link, SpanContext } from '@opentelemetry/api'; +import { Resource } from '@opentelemetry/resources'; +import { InstrumentationScope } from '@opentelemetry/core'; +import { TimedEvent } from '../TimedEvent'; +export interface ReadableSpan { + readonly name: string; + readonly kind: SpanKind; + readonly spanContext: () => SpanContext; + readonly parentSpanContext?: SpanContext; + readonly startTime: HrTime; + readonly endTime: HrTime; + readonly status: SpanStatus; + readonly attributes: Attributes; + readonly links: Link[]; + readonly events: TimedEvent[]; + readonly duration: HrTime; + readonly ended: boolean; + readonly resource: Resource; + readonly instrumentationScope: InstrumentationScope; + readonly droppedAttributesCount: number; + readonly droppedEventsCount: number; + readonly droppedLinksCount: number; +} +//# sourceMappingURL=ReadableSpan.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ReadableSpan.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ReadableSpan.js new file mode 100644 index 0000000..b283433 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ReadableSpan.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=ReadableSpan.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ReadableSpan.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ReadableSpan.js.map new file mode 100644 index 0000000..d1d8d07 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/ReadableSpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ReadableSpan.js","sourceRoot":"","sources":["../../../src/export/ReadableSpan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n SpanKind,\n SpanStatus,\n Attributes,\n HrTime,\n Link,\n SpanContext,\n} from '@opentelemetry/api';\nimport { Resource } from '@opentelemetry/resources';\nimport { InstrumentationScope } from '@opentelemetry/core';\nimport { TimedEvent } from '../TimedEvent';\n\nexport interface ReadableSpan {\n readonly name: string;\n readonly kind: SpanKind;\n readonly spanContext: () => SpanContext;\n readonly parentSpanContext?: SpanContext;\n readonly startTime: HrTime;\n readonly endTime: HrTime;\n readonly status: SpanStatus;\n readonly attributes: Attributes;\n readonly links: Link[];\n readonly events: TimedEvent[];\n readonly duration: HrTime;\n readonly ended: boolean;\n readonly resource: Resource;\n readonly instrumentationScope: InstrumentationScope;\n readonly droppedAttributesCount: number;\n readonly droppedEventsCount: number;\n readonly droppedLinksCount: number;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SimpleSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SimpleSpanProcessor.d.ts new file mode 100644 index 0000000..395e7b5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SimpleSpanProcessor.d.ts @@ -0,0 +1,26 @@ +import { Context } from '@opentelemetry/api'; +import { Span } from '../Span'; +import { SpanProcessor } from '../SpanProcessor'; +import { ReadableSpan } from './ReadableSpan'; +import { SpanExporter } from './SpanExporter'; +/** + * An implementation of the {@link SpanProcessor} that converts the {@link Span} + * to {@link ReadableSpan} and passes it to the configured exporter. + * + * Only spans that are sampled are converted. + * + * 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. + */ +export declare class SimpleSpanProcessor implements SpanProcessor { + private readonly _exporter; + private _shutdownOnce; + private _pendingExports; + constructor(exporter: SpanExporter); + forceFlush(): Promise; + onStart(_span: Span, _parentContext: Context): void; + onEnd(span: ReadableSpan): void; + private _doExport; + shutdown(): Promise; + private _shutdown; +} +//# sourceMappingURL=SimpleSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SimpleSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SimpleSpanProcessor.js new file mode 100644 index 0000000..a9c935f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SimpleSpanProcessor.js @@ -0,0 +1,72 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TraceFlags } from '@opentelemetry/api'; +import { internal, ExportResultCode, globalErrorHandler, BindOnceFuture, } from '@opentelemetry/core'; +/** + * An implementation of the {@link SpanProcessor} that converts the {@link Span} + * to {@link ReadableSpan} and passes it to the configured exporter. + * + * Only spans that are sampled are converted. + * + * 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. + */ +export class SimpleSpanProcessor { + _exporter; + _shutdownOnce; + _pendingExports; + constructor(exporter) { + this._exporter = exporter; + this._shutdownOnce = new BindOnceFuture(this._shutdown, this); + this._pendingExports = new Set(); + } + async forceFlush() { + await Promise.all(Array.from(this._pendingExports)); + if (this._exporter.forceFlush) { + await this._exporter.forceFlush(); + } + } + onStart(_span, _parentContext) { } + onEnd(span) { + if (this._shutdownOnce.isCalled) { + return; + } + if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) { + return; + } + const pendingExport = this._doExport(span).catch(err => globalErrorHandler(err)); + // Enqueue this export to the pending list so it can be flushed by the user. + this._pendingExports.add(pendingExport); + void pendingExport.finally(() => this._pendingExports.delete(pendingExport)); + } + async _doExport(span) { + if (span.resource.asyncAttributesPending) { + // Ensure resource is fully resolved before exporting. + await span.resource.waitForAsyncAttributes?.(); + } + const result = await internal._export(this._exporter, [span]); + if (result.code !== ExportResultCode.SUCCESS) { + throw (result.error ?? + new Error(`SimpleSpanProcessor: span export failed (status ${result})`)); + } + } + shutdown() { + return this._shutdownOnce.call(); + } + _shutdown() { + return this._exporter.shutdown(); + } +} +//# sourceMappingURL=SimpleSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SimpleSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SimpleSpanProcessor.js.map new file mode 100644 index 0000000..6303cab --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SimpleSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SimpleSpanProcessor.js","sourceRoot":"","sources":["../../../src/export/SimpleSpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAM7B;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAmB;IACb,SAAS,CAAe;IACjC,aAAa,CAAuB;IACpC,eAAe,CAAqB;IAE5C,YAAY,QAAsB;QAChC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAiB,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;SACnC;IACH,CAAC;IAED,OAAO,CAAC,KAAW,EAAE,cAAuB,IAAS,CAAC;IAEtD,KAAK,CAAC,IAAkB;QACtB,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC/B,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC9D,OAAO;SACR;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CACrD,kBAAkB,CAAC,GAAG,CAAC,CACxB,CAAC;QACF,4EAA4E;QAC5E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,KAAK,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAC3C,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAkB;QACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE;YACxC,sDAAsD;YACtD,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,CAAC;SAChD;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,EAAE;YAC5C,MAAM,CACJ,MAAM,CAAC,KAAK;gBACZ,IAAI,KAAK,CAAC,mDAAmD,MAAM,GAAG,CAAC,CACxE,CAAC;SACH;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, TraceFlags } from '@opentelemetry/api';\nimport {\n internal,\n ExportResultCode,\n globalErrorHandler,\n BindOnceFuture,\n} from '@opentelemetry/core';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\nimport { ReadableSpan } from './ReadableSpan';\nimport { SpanExporter } from './SpanExporter';\n\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 */\nexport class SimpleSpanProcessor implements SpanProcessor {\n private readonly _exporter: SpanExporter;\n private _shutdownOnce: BindOnceFuture;\n private _pendingExports: Set>;\n\n constructor(exporter: SpanExporter) {\n this._exporter = exporter;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n this._pendingExports = new Set>();\n }\n\n async forceFlush(): Promise {\n await Promise.all(Array.from(this._pendingExports));\n if (this._exporter.forceFlush) {\n await this._exporter.forceFlush();\n }\n }\n\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n const pendingExport = this._doExport(span).catch(err =>\n globalErrorHandler(err)\n );\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(() =>\n this._pendingExports.delete(pendingExport)\n );\n }\n\n private async _doExport(span: ReadableSpan): Promise {\n if (span.resource.asyncAttributesPending) {\n // Ensure resource is fully resolved before exporting.\n await span.resource.waitForAsyncAttributes?.();\n }\n\n const result = await internal._export(this._exporter, [span]);\n if (result.code !== ExportResultCode.SUCCESS) {\n throw (\n result.error ??\n new Error(`SimpleSpanProcessor: span export failed (status ${result})`)\n );\n }\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _shutdown(): Promise {\n return this._exporter.shutdown();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SpanExporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SpanExporter.d.ts new file mode 100644 index 0000000..0580a57 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SpanExporter.d.ts @@ -0,0 +1,21 @@ +import { ExportResult } from '@opentelemetry/core'; +import { ReadableSpan } from './ReadableSpan'; +/** + * An interface that allows different tracing services to export recorded data + * for sampled spans in their own format. + * + * To export data this MUST be register to the Tracer SDK using a optional + * config. + */ +export interface SpanExporter { + /** + * Called to export sampled {@link ReadableSpan}s. + * @param spans the list of sampled Spans to be exported. + */ + export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void; + /** Stops the exporter. */ + shutdown(): Promise; + /** Immediately export all spans */ + forceFlush?(): Promise; +} +//# sourceMappingURL=SpanExporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SpanExporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SpanExporter.js new file mode 100644 index 0000000..b23b664 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SpanExporter.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=SpanExporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SpanExporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SpanExporter.js.map new file mode 100644 index 0000000..56b527f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/export/SpanExporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SpanExporter.js","sourceRoot":"","sources":["../../../src/export/SpanExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ExportResult } from '@opentelemetry/core';\nimport { ReadableSpan } from './ReadableSpan';\n\n/**\n * An interface that allows different tracing services to export recorded data\n * for sampled spans in their own format.\n *\n * To export data this MUST be register to the Tracer SDK using a optional\n * config.\n */\nexport interface SpanExporter {\n /**\n * Called to export sampled {@link ReadableSpan}s.\n * @param spans the list of sampled Spans to be exported.\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void;\n\n /** Stops the exporter. */\n shutdown(): Promise;\n\n /** Immediately export all spans */\n forceFlush?(): Promise;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/index.d.ts new file mode 100644 index 0000000..db7e88a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/index.d.ts @@ -0,0 +1,20 @@ +export { BasicTracerProvider } from './BasicTracerProvider'; +export { BatchSpanProcessor, RandomIdGenerator } from './platform'; +export { ConsoleSpanExporter } from './export/ConsoleSpanExporter'; +export { InMemorySpanExporter } from './export/InMemorySpanExporter'; +export type { ReadableSpan } from './export/ReadableSpan'; +export { SimpleSpanProcessor } from './export/SimpleSpanProcessor'; +export type { SpanExporter } from './export/SpanExporter'; +export { NoopSpanProcessor } from './export/NoopSpanProcessor'; +export { AlwaysOffSampler } from './sampler/AlwaysOffSampler'; +export { AlwaysOnSampler } from './sampler/AlwaysOnSampler'; +export { ParentBasedSampler } from './sampler/ParentBasedSampler'; +export { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler'; +export { SamplingDecision } from './Sampler'; +export type { Sampler, SamplingResult } from './Sampler'; +export type { Span } from './Span'; +export type { SpanProcessor } from './SpanProcessor'; +export type { TimedEvent } from './TimedEvent'; +export type { BatchSpanProcessorBrowserConfig, BufferConfig, GeneralLimits, SDKRegistrationConfig, SpanLimits, TracerConfig, } from './types'; +export type { IdGenerator } from './IdGenerator'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/index.js new file mode 100644 index 0000000..3ecd8e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/index.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { BasicTracerProvider } from './BasicTracerProvider'; +export { BatchSpanProcessor, RandomIdGenerator } from './platform'; +export { ConsoleSpanExporter } from './export/ConsoleSpanExporter'; +export { InMemorySpanExporter } from './export/InMemorySpanExporter'; +export { SimpleSpanProcessor } from './export/SimpleSpanProcessor'; +export { NoopSpanProcessor } from './export/NoopSpanProcessor'; +export { AlwaysOffSampler } from './sampler/AlwaysOffSampler'; +export { AlwaysOnSampler } from './sampler/AlwaysOnSampler'; +export { ParentBasedSampler } from './sampler/ParentBasedSampler'; +export { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler'; +export { SamplingDecision } from './Sampler'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/index.js.map new file mode 100644 index 0000000..1481ad7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BasicTracerProvider } from './BasicTracerProvider';\nexport { BatchSpanProcessor, RandomIdGenerator } from './platform';\nexport { ConsoleSpanExporter } from './export/ConsoleSpanExporter';\nexport { InMemorySpanExporter } from './export/InMemorySpanExporter';\nexport type { ReadableSpan } from './export/ReadableSpan';\nexport { SimpleSpanProcessor } from './export/SimpleSpanProcessor';\nexport type { SpanExporter } from './export/SpanExporter';\nexport { NoopSpanProcessor } from './export/NoopSpanProcessor';\nexport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nexport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nexport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nexport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\nexport { SamplingDecision } from './Sampler';\nexport type { Sampler, SamplingResult } from './Sampler';\nexport type { Span } from './Span';\nexport type { SpanProcessor } from './SpanProcessor';\nexport type { TimedEvent } from './TimedEvent';\nexport type {\n BatchSpanProcessorBrowserConfig,\n BufferConfig,\n GeneralLimits,\n SDKRegistrationConfig,\n SpanLimits,\n TracerConfig,\n} from './types';\nexport type { IdGenerator } from './IdGenerator';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/RandomIdGenerator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/RandomIdGenerator.d.ts new file mode 100644 index 0000000..846240d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/RandomIdGenerator.d.ts @@ -0,0 +1,14 @@ +import { IdGenerator } from '../../IdGenerator'; +export declare class RandomIdGenerator implements IdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId: () => string; + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId: () => string; +} +//# sourceMappingURL=RandomIdGenerator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/RandomIdGenerator.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/RandomIdGenerator.js new file mode 100644 index 0000000..66137b3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/RandomIdGenerator.js @@ -0,0 +1,43 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const SPAN_ID_BYTES = 8; +const TRACE_ID_BYTES = 16; +export class RandomIdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId = getIdGenerator(TRACE_ID_BYTES); + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId = getIdGenerator(SPAN_ID_BYTES); +} +const SHARED_CHAR_CODES_ARRAY = Array(32); +function getIdGenerator(bytes) { + return function generateId() { + for (let i = 0; i < bytes * 2; i++) { + SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48; + // valid hex characters in the range 48-57 and 97-102 + if (SHARED_CHAR_CODES_ARRAY[i] >= 58) { + SHARED_CHAR_CODES_ARRAY[i] += 39; + } + } + return String.fromCharCode.apply(null, SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2)); + }; +} +//# sourceMappingURL=RandomIdGenerator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/RandomIdGenerator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/RandomIdGenerator.js.map new file mode 100644 index 0000000..b8e56c5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/RandomIdGenerator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RandomIdGenerator.js","sourceRoot":"","sources":["../../../../src/platform/browser/RandomIdGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAAM,OAAO,iBAAiB;IAC5B;;;OAGG;IACH,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEjD;;;OAGG;IACH,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;CAChD;AAED,MAAM,uBAAuB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1C,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,SAAS,UAAU;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,uBAAuB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YACjE,qDAAqD;YACrD,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;gBACpC,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClC;SACF;QACD,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAC9B,IAAI,EACJ,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAC5C,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { IdGenerator } from '../../IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\nexport class RandomIdGenerator implements IdGenerator {\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 /**\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}\n\nconst SHARED_CHAR_CODES_ARRAY = Array(32);\nfunction getIdGenerator(bytes: number): () => string {\n return function generateId() {\n for (let i = 0; i < bytes * 2; i++) {\n SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48;\n // valid hex characters in the range 48-57 and 97-102\n if (SHARED_CHAR_CODES_ARRAY[i] >= 58) {\n SHARED_CHAR_CODES_ARRAY[i] += 39;\n }\n }\n return String.fromCharCode.apply(\n null,\n SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2)\n );\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.d.ts new file mode 100644 index 0000000..6fd5820 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.d.ts @@ -0,0 +1,11 @@ +import { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase'; +import { SpanExporter } from '../../../export/SpanExporter'; +import { BatchSpanProcessorBrowserConfig } from '../../../types'; +export declare class BatchSpanProcessor extends BatchSpanProcessorBase { + private _visibilityChangeListener?; + private _pageHideListener?; + constructor(_exporter: SpanExporter, config?: BatchSpanProcessorBrowserConfig); + private onInit; + protected onShutdown(): void; +} +//# sourceMappingURL=BatchSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.js new file mode 100644 index 0000000..455cc5f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.js @@ -0,0 +1,56 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase'; +import { globalErrorHandler } from '@opentelemetry/core'; +export class BatchSpanProcessor extends BatchSpanProcessorBase { + _visibilityChangeListener; + _pageHideListener; + constructor(_exporter, config) { + super(_exporter, config); + this.onInit(config); + } + onInit(config) { + if (config?.disableAutoFlushOnDocumentHide !== true && + typeof document !== 'undefined') { + this._visibilityChangeListener = () => { + if (document.visibilityState === 'hidden') { + this.forceFlush().catch(error => { + globalErrorHandler(error); + }); + } + }; + this._pageHideListener = () => { + this.forceFlush().catch(error => { + globalErrorHandler(error); + }); + }; + document.addEventListener('visibilitychange', this._visibilityChangeListener); + // use 'pagehide' event as a fallback for Safari; see https://bugs.webkit.org/show_bug.cgi?id=116769 + document.addEventListener('pagehide', this._pageHideListener); + } + } + onShutdown() { + if (typeof document !== 'undefined') { + if (this._visibilityChangeListener) { + document.removeEventListener('visibilitychange', this._visibilityChangeListener); + } + if (this._pageHideListener) { + document.removeEventListener('pagehide', this._pageHideListener); + } + } + } +} +//# sourceMappingURL=BatchSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.js.map new file mode 100644 index 0000000..efdb42f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchSpanProcessor.js","sourceRoot":"","sources":["../../../../../src/platform/browser/export/BatchSpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAGhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,OAAO,kBAAmB,SAAQ,sBAAuD;IACrF,yBAAyB,CAAc;IACvC,iBAAiB,CAAc;IAEvC,YACE,SAAuB,EACvB,MAAwC;QAExC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,MAAwC;QACrD,IACE,MAAM,EAAE,8BAA8B,KAAK,IAAI;YAC/C,OAAO,QAAQ,KAAK,WAAW,EAC/B;YACA,IAAI,CAAC,yBAAyB,GAAG,GAAG,EAAE;gBACpC,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE;oBACzC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBAC9B,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAC5B,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,GAAG,EAAE;gBAC5B,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC9B,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,QAAQ,CAAC,gBAAgB,CACvB,kBAAkB,EAClB,IAAI,CAAC,yBAAyB,CAC/B,CAAC;YAEF,oGAAoG;YACpG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC/D;IACH,CAAC;IAES,UAAU;QAClB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,QAAQ,CAAC,mBAAmB,CAC1B,kBAAkB,EAClB,IAAI,CAAC,yBAAyB,CAC/B,CAAC;aACH;YACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAClE;SACF;IACH,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase';\nimport { SpanExporter } from '../../../export/SpanExporter';\nimport { BatchSpanProcessorBrowserConfig } from '../../../types';\nimport { globalErrorHandler } from '@opentelemetry/core';\n\nexport class BatchSpanProcessor extends BatchSpanProcessorBase {\n private _visibilityChangeListener?: () => void;\n private _pageHideListener?: () => void;\n\n constructor(\n _exporter: SpanExporter,\n config?: BatchSpanProcessorBrowserConfig\n ) {\n super(_exporter, config);\n this.onInit(config);\n }\n\n private onInit(config?: BatchSpanProcessorBrowserConfig): void {\n if (\n config?.disableAutoFlushOnDocumentHide !== true &&\n typeof document !== 'undefined'\n ) {\n this._visibilityChangeListener = () => {\n if (document.visibilityState === 'hidden') {\n this.forceFlush().catch(error => {\n globalErrorHandler(error);\n });\n }\n };\n this._pageHideListener = () => {\n this.forceFlush().catch(error => {\n globalErrorHandler(error);\n });\n };\n document.addEventListener(\n 'visibilitychange',\n this._visibilityChangeListener\n );\n\n // use 'pagehide' event as a fallback for Safari; see https://bugs.webkit.org/show_bug.cgi?id=116769\n document.addEventListener('pagehide', this._pageHideListener);\n }\n }\n\n protected onShutdown(): void {\n if (typeof document !== 'undefined') {\n if (this._visibilityChangeListener) {\n document.removeEventListener(\n 'visibilitychange',\n this._visibilityChangeListener\n );\n }\n if (this._pageHideListener) {\n document.removeEventListener('pagehide', this._pageHideListener);\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/index.d.ts new file mode 100644 index 0000000..40c4ca6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/index.d.ts @@ -0,0 +1,3 @@ +export { BatchSpanProcessor } from './export/BatchSpanProcessor'; +export { RandomIdGenerator } from './RandomIdGenerator'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/index.js new file mode 100644 index 0000000..15b8091 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { BatchSpanProcessor } from './export/BatchSpanProcessor'; +export { RandomIdGenerator } from './RandomIdGenerator'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/index.js.map new file mode 100644 index 0000000..6d190d1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BatchSpanProcessor } from './export/BatchSpanProcessor';\nexport { RandomIdGenerator } from './RandomIdGenerator';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/index.d.ts new file mode 100644 index 0000000..d5add34 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/index.d.ts @@ -0,0 +1,2 @@ +export { BatchSpanProcessor, RandomIdGenerator } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/index.js new file mode 100644 index 0000000..6e61c79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { BatchSpanProcessor, RandomIdGenerator } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/index.js.map new file mode 100644 index 0000000..6334f9d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BatchSpanProcessor, RandomIdGenerator } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/RandomIdGenerator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/RandomIdGenerator.d.ts new file mode 100644 index 0000000..846240d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/RandomIdGenerator.d.ts @@ -0,0 +1,14 @@ +import { IdGenerator } from '../../IdGenerator'; +export declare class RandomIdGenerator implements IdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId: () => string; + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId: () => string; +} +//# sourceMappingURL=RandomIdGenerator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/RandomIdGenerator.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/RandomIdGenerator.js new file mode 100644 index 0000000..ab107ca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/RandomIdGenerator.js @@ -0,0 +1,50 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const SPAN_ID_BYTES = 8; +const TRACE_ID_BYTES = 16; +export class RandomIdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId = getIdGenerator(TRACE_ID_BYTES); + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId = getIdGenerator(SPAN_ID_BYTES); +} +const SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES); +function getIdGenerator(bytes) { + return function generateId() { + for (let i = 0; i < bytes / 4; i++) { + // unsigned right shift drops decimal part of the number + // 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 + SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4); + } + // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated + for (let i = 0; i < bytes; i++) { + if (SHARED_BUFFER[i] > 0) { + break; + } + else if (i === bytes - 1) { + SHARED_BUFFER[bytes - 1] = 1; + } + } + return SHARED_BUFFER.toString('hex', 0, bytes); + }; +} +//# sourceMappingURL=RandomIdGenerator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/RandomIdGenerator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/RandomIdGenerator.js.map new file mode 100644 index 0000000..98fe6be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/RandomIdGenerator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RandomIdGenerator.js","sourceRoot":"","sources":["../../../../src/platform/node/RandomIdGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAAM,OAAO,iBAAiB;IAC5B;;;OAGG;IACH,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEjD;;;OAGG;IACH,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;CAChD;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACzD,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,SAAS,UAAU;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,wDAAwD;YACxD,gIAAgI;YAChI,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACrE;QAED,sFAAsF;QACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACxB,MAAM;aACP;iBAAM,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE;gBAC1B,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;aAC9B;SACF;QAED,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { IdGenerator } from '../../IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\nexport class RandomIdGenerator implements IdGenerator {\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 /**\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}\n\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes: number): () => string {\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\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 } else if (i === bytes - 1) {\n SHARED_BUFFER[bytes - 1] = 1;\n }\n }\n\n return SHARED_BUFFER.toString('hex', 0, bytes);\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/export/BatchSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/export/BatchSpanProcessor.d.ts new file mode 100644 index 0000000..fc75ac2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/export/BatchSpanProcessor.d.ts @@ -0,0 +1,6 @@ +import { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase'; +import { BufferConfig } from '../../../types'; +export declare class BatchSpanProcessor extends BatchSpanProcessorBase { + protected onShutdown(): void; +} +//# sourceMappingURL=BatchSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/export/BatchSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/export/BatchSpanProcessor.js new file mode 100644 index 0000000..d869ced --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/export/BatchSpanProcessor.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase'; +export class BatchSpanProcessor extends BatchSpanProcessorBase { + onShutdown() { } +} +//# sourceMappingURL=BatchSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/export/BatchSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/export/BatchSpanProcessor.js.map new file mode 100644 index 0000000..0504984 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/export/BatchSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchSpanProcessor.js","sourceRoot":"","sources":["../../../../../src/platform/node/export/BatchSpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAGhF,MAAM,OAAO,kBAAmB,SAAQ,sBAAoC;IAChE,UAAU,KAAU,CAAC;CAChC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase';\nimport { BufferConfig } from '../../../types';\n\nexport class BatchSpanProcessor extends BatchSpanProcessorBase {\n protected onShutdown(): void {}\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/index.d.ts new file mode 100644 index 0000000..40c4ca6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/index.d.ts @@ -0,0 +1,3 @@ +export { BatchSpanProcessor } from './export/BatchSpanProcessor'; +export { RandomIdGenerator } from './RandomIdGenerator'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/index.js new file mode 100644 index 0000000..15b8091 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { BatchSpanProcessor } from './export/BatchSpanProcessor'; +export { RandomIdGenerator } from './RandomIdGenerator'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/index.js.map new file mode 100644 index 0000000..5e0fa8b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BatchSpanProcessor } from './export/BatchSpanProcessor';\nexport { RandomIdGenerator } from './RandomIdGenerator';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOffSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOffSampler.d.ts new file mode 100644 index 0000000..1dfe8ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOffSampler.d.ts @@ -0,0 +1,7 @@ +import { Sampler, SamplingResult } from '../Sampler'; +/** Sampler that samples no traces. */ +export declare class AlwaysOffSampler implements Sampler { + shouldSample(): SamplingResult; + toString(): string; +} +//# sourceMappingURL=AlwaysOffSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOffSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOffSampler.js new file mode 100644 index 0000000..930e0c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOffSampler.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { SamplingDecision } from '../Sampler'; +/** Sampler that samples no traces. */ +export class AlwaysOffSampler { + shouldSample() { + return { + decision: SamplingDecision.NOT_RECORD, + }; + } + toString() { + return 'AlwaysOffSampler'; + } +} +//# sourceMappingURL=AlwaysOffSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOffSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOffSampler.js.map new file mode 100644 index 0000000..13c1ca0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOffSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AlwaysOffSampler.js","sourceRoot":"","sources":["../../../src/sampler/AlwaysOffSampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAEvE,sCAAsC;AACtC,MAAM,OAAO,gBAAgB;IAC3B,YAAY;QACV,OAAO;YACL,QAAQ,EAAE,gBAAgB,CAAC,UAAU;SACtC,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples no traces. */\nexport class AlwaysOffSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return 'AlwaysOffSampler';\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOnSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOnSampler.d.ts new file mode 100644 index 0000000..9a7e914 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOnSampler.d.ts @@ -0,0 +1,7 @@ +import { Sampler, SamplingResult } from '../Sampler'; +/** Sampler that samples all traces. */ +export declare class AlwaysOnSampler implements Sampler { + shouldSample(): SamplingResult; + toString(): string; +} +//# sourceMappingURL=AlwaysOnSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOnSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOnSampler.js new file mode 100644 index 0000000..2327720 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOnSampler.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { SamplingDecision } from '../Sampler'; +/** Sampler that samples all traces. */ +export class AlwaysOnSampler { + shouldSample() { + return { + decision: SamplingDecision.RECORD_AND_SAMPLED, + }; + } + toString() { + return 'AlwaysOnSampler'; + } +} +//# sourceMappingURL=AlwaysOnSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOnSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOnSampler.js.map new file mode 100644 index 0000000..05b9900 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/AlwaysOnSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AlwaysOnSampler.js","sourceRoot":"","sources":["../../../src/sampler/AlwaysOnSampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAEvE,uCAAuC;AACvC,MAAM,OAAO,eAAe;IAC1B,YAAY;QACV,OAAO;YACL,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB;SAC9C,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples all traces. */\nexport class AlwaysOnSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n\n toString(): string {\n return 'AlwaysOnSampler';\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/ParentBasedSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/ParentBasedSampler.d.ts new file mode 100644 index 0000000..96c4ef7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/ParentBasedSampler.d.ts @@ -0,0 +1,30 @@ +import { Context, Link, Attributes, SpanKind } from '@opentelemetry/api'; +import { Sampler, SamplingResult } from '../Sampler'; +/** + * A composite sampler that either respects the parent span's sampling decision + * or delegates to `delegateSampler` for root spans. + */ +export declare class ParentBasedSampler implements Sampler { + private _root; + private _remoteParentSampled; + private _remoteParentNotSampled; + private _localParentSampled; + private _localParentNotSampled; + constructor(config: ParentBasedSamplerConfig); + shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: Attributes, links: Link[]): SamplingResult; + toString(): string; +} +interface ParentBasedSamplerConfig { + /** Sampler called for spans with no parent */ + root: Sampler; + /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */ + remoteParentSampled?: Sampler; + /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */ + remoteParentNotSampled?: Sampler; + /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */ + localParentSampled?: Sampler; + /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */ + localParentNotSampled?: Sampler; +} +export {}; +//# sourceMappingURL=ParentBasedSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/ParentBasedSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/ParentBasedSampler.js new file mode 100644 index 0000000..15cdf79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/ParentBasedSampler.js @@ -0,0 +1,65 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { isSpanContextValid, TraceFlags, trace, } from '@opentelemetry/api'; +import { globalErrorHandler } from '@opentelemetry/core'; +import { AlwaysOffSampler } from './AlwaysOffSampler'; +import { AlwaysOnSampler } from './AlwaysOnSampler'; +/** + * A composite sampler that either respects the parent span's sampling decision + * or delegates to `delegateSampler` for root spans. + */ +export class ParentBasedSampler { + _root; + _remoteParentSampled; + _remoteParentNotSampled; + _localParentSampled; + _localParentNotSampled; + constructor(config) { + this._root = config.root; + if (!this._root) { + globalErrorHandler(new Error('ParentBasedSampler must have a root sampler configured')); + this._root = new AlwaysOnSampler(); + } + this._remoteParentSampled = + config.remoteParentSampled ?? new AlwaysOnSampler(); + this._remoteParentNotSampled = + config.remoteParentNotSampled ?? new AlwaysOffSampler(); + this._localParentSampled = + config.localParentSampled ?? new AlwaysOnSampler(); + this._localParentNotSampled = + config.localParentNotSampled ?? new AlwaysOffSampler(); + } + shouldSample(context, traceId, spanName, spanKind, attributes, links) { + const parentContext = trace.getSpanContext(context); + if (!parentContext || !isSpanContextValid(parentContext)) { + return this._root.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + if (parentContext.isRemote) { + if (parentContext.traceFlags & TraceFlags.SAMPLED) { + return this._remoteParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + return this._remoteParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + if (parentContext.traceFlags & TraceFlags.SAMPLED) { + return this._localParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + return this._localParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + toString() { + return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`; + } +} +//# sourceMappingURL=ParentBasedSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/ParentBasedSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/ParentBasedSampler.js.map new file mode 100644 index 0000000..18a4d38 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/ParentBasedSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ParentBasedSampler.js","sourceRoot":"","sources":["../../../src/sampler/ParentBasedSampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,kBAAkB,EAIlB,UAAU,EACV,KAAK,GACN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACrB,KAAK,CAAU;IACf,oBAAoB,CAAU;IAC9B,uBAAuB,CAAU;IACjC,mBAAmB,CAAU;IAC7B,sBAAsB,CAAU;IAExC,YAAY,MAAgC;QAC1C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,kBAAkB,CAChB,IAAI,KAAK,CAAC,wDAAwD,CAAC,CACpE,CAAC;YACF,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;SACpC;QAED,IAAI,CAAC,oBAAoB;YACvB,MAAM,CAAC,mBAAmB,IAAI,IAAI,eAAe,EAAE,CAAC;QACtD,IAAI,CAAC,uBAAuB;YAC1B,MAAM,CAAC,sBAAsB,IAAI,IAAI,gBAAgB,EAAE,CAAC;QAC1D,IAAI,CAAC,mBAAmB;YACtB,MAAM,CAAC,kBAAkB,IAAI,IAAI,eAAe,EAAE,CAAC;QACrD,IAAI,CAAC,sBAAsB;YACzB,MAAM,CAAC,qBAAqB,IAAI,IAAI,gBAAgB,EAAE,CAAC;IAC3D,CAAC;IAED,YAAY,CACV,OAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,QAAkB,EAClB,UAAsB,EACtB,KAAa;QAEb,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE;YACxD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAC5B,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;SACH;QAED,IAAI,aAAa,CAAC,QAAQ,EAAE;YAC1B,IAAI,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE;gBACjD,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAC3C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;aACH;YACD,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAC9C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;SACH;QAED,IAAI,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE;YACjD,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAC1C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;SACH;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAC7C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,oBAAoB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,yBAAyB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,4BAA4B,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,wBAAwB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,2BAA2B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC;IAClT,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n isSpanContextValid,\n Link,\n Attributes,\n SpanKind,\n TraceFlags,\n trace,\n} from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { AlwaysOffSampler } from './AlwaysOffSampler';\nimport { AlwaysOnSampler } from './AlwaysOnSampler';\nimport { Sampler, SamplingResult } from '../Sampler';\n\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nexport class ParentBasedSampler implements Sampler {\n private _root: Sampler;\n private _remoteParentSampled: Sampler;\n private _remoteParentNotSampled: Sampler;\n private _localParentSampled: Sampler;\n private _localParentNotSampled: Sampler;\n\n constructor(config: ParentBasedSamplerConfig) {\n this._root = config.root;\n\n if (!this._root) {\n globalErrorHandler(\n new Error('ParentBasedSampler must have a root sampler configured')\n );\n this._root = new AlwaysOnSampler();\n }\n\n this._remoteParentSampled =\n config.remoteParentSampled ?? new AlwaysOnSampler();\n this._remoteParentNotSampled =\n config.remoteParentNotSampled ?? new AlwaysOffSampler();\n this._localParentSampled =\n config.localParentSampled ?? new AlwaysOnSampler();\n this._localParentNotSampled =\n config.localParentNotSampled ?? new AlwaysOffSampler();\n }\n\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult {\n const parentContext = trace.getSpanContext(context);\n\n if (!parentContext || !isSpanContextValid(parentContext)) {\n return this._root.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n return this._remoteParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n return this._localParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n toString(): string {\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}\n\ninterface ParentBasedSamplerConfig {\n /** Sampler called for spans with no parent */\n root: Sampler;\n /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */\n remoteParentSampled?: Sampler;\n /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */\n remoteParentNotSampled?: Sampler;\n /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */\n localParentSampled?: Sampler;\n /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */\n localParentNotSampled?: Sampler;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/TraceIdRatioBasedSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/TraceIdRatioBasedSampler.d.ts new file mode 100644 index 0000000..36ad233 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/TraceIdRatioBasedSampler.d.ts @@ -0,0 +1,12 @@ +import { Sampler, SamplingResult } from '../Sampler'; +/** Sampler that samples a given fraction of traces based of trace id deterministically. */ +export declare class TraceIdRatioBasedSampler implements Sampler { + private readonly _ratio; + private _upperBound; + constructor(ratio?: number); + shouldSample(context: unknown, traceId: string): SamplingResult; + toString(): string; + private _normalize; + private _accumulate; +} +//# sourceMappingURL=TraceIdRatioBasedSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/TraceIdRatioBasedSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/TraceIdRatioBasedSampler.js new file mode 100644 index 0000000..d993702 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/TraceIdRatioBasedSampler.js @@ -0,0 +1,51 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { isValidTraceId } from '@opentelemetry/api'; +import { SamplingDecision } from '../Sampler'; +/** Sampler that samples a given fraction of traces based of trace id deterministically. */ +export class TraceIdRatioBasedSampler { + _ratio; + _upperBound; + constructor(ratio = 0) { + this._ratio = this._normalize(ratio); + this._upperBound = Math.floor(this._ratio * 0xffffffff); + } + shouldSample(context, traceId) { + return { + decision: isValidTraceId(traceId) && this._accumulate(traceId) < this._upperBound + ? SamplingDecision.RECORD_AND_SAMPLED + : SamplingDecision.NOT_RECORD, + }; + } + toString() { + return `TraceIdRatioBased{${this._ratio}}`; + } + _normalize(ratio) { + if (typeof ratio !== 'number' || isNaN(ratio)) + return 0; + return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio; + } + _accumulate(traceId) { + let accumulation = 0; + for (let i = 0; i < traceId.length / 8; i++) { + const pos = i * 8; + const part = parseInt(traceId.slice(pos, pos + 8), 16); + accumulation = (accumulation ^ part) >>> 0; + } + return accumulation; + } +} +//# sourceMappingURL=TraceIdRatioBasedSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/TraceIdRatioBasedSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/TraceIdRatioBasedSampler.js.map new file mode 100644 index 0000000..72c46e8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/sampler/TraceIdRatioBasedSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TraceIdRatioBasedSampler.js","sourceRoot":"","sources":["../../../src/sampler/TraceIdRatioBasedSampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAW,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAEvE,2FAA2F;AAC3F,MAAM,OAAO,wBAAwB;IAClB,MAAM,CAAC;IAChB,WAAW,CAAS;IAE5B,YAAY,KAAK,GAAG,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,YAAY,CAAC,OAAgB,EAAE,OAAe;QAC5C,OAAO;YACL,QAAQ,EACN,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW;gBACrE,CAAC,CAAC,gBAAgB,CAAC,kBAAkB;gBACrC,CAAC,CAAC,gBAAgB,CAAC,UAAU;SAClC,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,qBAAqB,IAAI,CAAC,MAAM,GAAG,CAAC;IAC7C,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACxD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;IAEO,WAAW,CAAC,OAAe;QACjC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,YAAY,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5C;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { isValidTraceId } from '@opentelemetry/api';\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nexport class TraceIdRatioBasedSampler implements Sampler {\n private readonly _ratio;\n private _upperBound: number;\n\n constructor(ratio = 0) {\n this._ratio = this._normalize(ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n\n shouldSample(context: unknown, traceId: string): SamplingResult {\n return {\n decision:\n isValidTraceId(traceId) && this._accumulate(traceId) < this._upperBound\n ? SamplingDecision.RECORD_AND_SAMPLED\n : SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n\n private _normalize(ratio: number): number {\n if (typeof ratio !== 'number' || isNaN(ratio)) return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n\n private _accumulate(traceId: string): number {\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/types.d.ts new file mode 100644 index 0000000..9ae585b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/types.d.ts @@ -0,0 +1,89 @@ +import { ContextManager, TextMapPropagator } from '@opentelemetry/api'; +import { Resource } from '@opentelemetry/resources'; +import { IdGenerator } from './IdGenerator'; +import { Sampler } from './Sampler'; +import { SpanProcessor } from './SpanProcessor'; +/** + * TracerConfig provides an interface for configuring a Basic Tracer. + */ +export interface TracerConfig { + /** + * Sampler determines if a span should be recorded or should be a NoopSpan. + */ + sampler?: Sampler; + /** General Limits */ + generalLimits?: GeneralLimits; + /** Span Limits */ + spanLimits?: SpanLimits; + /** Resource associated with trace telemetry */ + resource?: Resource; + /** + * Generator of trace and span IDs + * The default idGenerator generates random ids + */ + idGenerator?: IdGenerator; + /** + * How long the forceFlush can run before it is cancelled. + * The default value is 30000ms + */ + forceFlushTimeoutMillis?: number; + /** + * List of SpanProcessor for the tracer + */ + spanProcessors?: SpanProcessor[]; +} +/** + * Configuration options for registering the API with the SDK. + * Undefined values may be substituted for defaults, and null + * values will not be registered. + */ +export interface SDKRegistrationConfig { + /** Propagator to register as the global propagator */ + propagator?: TextMapPropagator | null; + /** Context manager to register as the global context manager */ + contextManager?: ContextManager | null; +} +/** Global configuration limits of trace service */ +export interface GeneralLimits { + /** attributeValueLengthLimit is maximum allowed attribute value size */ + attributeValueLengthLimit?: number; + /** attributeCountLimit is number of attributes per trace */ + attributeCountLimit?: number; +} +/** Global configuration of trace service */ +export interface SpanLimits { + /** attributeValueLengthLimit is maximum allowed attribute value size */ + attributeValueLengthLimit?: number; + /** attributeCountLimit is number of attributes per span */ + attributeCountLimit?: number; + /** linkCountLimit is number of links per span */ + linkCountLimit?: number; + /** eventCountLimit is number of message events per span */ + eventCountLimit?: number; + /** attributePerEventCountLimit is the maximum number of attributes allowed per span event */ + attributePerEventCountLimit?: number; + /** attributePerLinkCountLimit is the maximum number of attributes allowed per span link */ + attributePerLinkCountLimit?: number; +} +/** Interface configuration for a buffer. */ +export interface BufferConfig { + /** The maximum batch size of every export. It must be smaller or equal to + * maxQueueSize. The default value is 512. */ + maxExportBatchSize?: number; + /** The delay interval in milliseconds between two consecutive exports. + * The default value is 5000ms. */ + scheduledDelayMillis?: number; + /** How long the export can run before it is cancelled. + * The default value is 30000ms */ + exportTimeoutMillis?: number; + /** The maximum queue size. After the size is reached spans are dropped. + * The default value is 2048. */ + maxQueueSize?: number; +} +/** Interface configuration for BatchSpanProcessor on browser */ +export interface BatchSpanProcessorBrowserConfig extends BufferConfig { + /** Disable flush when a user navigates to a new page, closes the tab or the browser, or, + * on mobile, switches to a different app. Auto flush is enabled by default. */ + disableAutoFlushOnDocumentHide?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/types.js.map new file mode 100644 index 0000000..7f93ab6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ContextManager, TextMapPropagator } from '@opentelemetry/api';\nimport { Resource } from '@opentelemetry/resources';\nimport { IdGenerator } from './IdGenerator';\nimport { Sampler } from './Sampler';\nimport { SpanProcessor } from './SpanProcessor';\n\n/**\n * TracerConfig provides an interface for configuring a Basic Tracer.\n */\nexport interface TracerConfig {\n /**\n * Sampler determines if a span should be recorded or should be a NoopSpan.\n */\n sampler?: Sampler;\n\n /** General Limits */\n generalLimits?: GeneralLimits;\n\n /** Span Limits */\n spanLimits?: SpanLimits;\n\n /** Resource associated with trace telemetry */\n resource?: Resource;\n\n /**\n * Generator of trace and span IDs\n * The default idGenerator generates random ids\n */\n idGenerator?: IdGenerator;\n\n /**\n * How long the forceFlush can run before it is cancelled.\n * The default value is 30000ms\n */\n forceFlushTimeoutMillis?: number;\n\n /**\n * List of SpanProcessor for the tracer\n */\n spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Configuration options for registering the API with the SDK.\n * Undefined values may be substituted for defaults, and null\n * values will not be registered.\n */\nexport interface SDKRegistrationConfig {\n /** Propagator to register as the global propagator */\n propagator?: TextMapPropagator | null;\n\n /** Context manager to register as the global context manager */\n contextManager?: ContextManager | null;\n}\n\n/** Global configuration limits of trace service */\nexport interface GeneralLimits {\n /** attributeValueLengthLimit is maximum allowed attribute value size */\n attributeValueLengthLimit?: number;\n /** attributeCountLimit is number of attributes per trace */\n attributeCountLimit?: number;\n}\n\n/** Global configuration of trace service */\nexport interface SpanLimits {\n /** attributeValueLengthLimit is maximum allowed attribute value size */\n attributeValueLengthLimit?: number;\n /** attributeCountLimit is number of attributes per span */\n attributeCountLimit?: number;\n /** linkCountLimit is number of links per span */\n linkCountLimit?: number;\n /** eventCountLimit is number of message events per span */\n eventCountLimit?: number;\n /** attributePerEventCountLimit is the maximum number of attributes allowed per span event */\n attributePerEventCountLimit?: number;\n /** attributePerLinkCountLimit is the maximum number of attributes allowed per span link */\n attributePerLinkCountLimit?: number;\n}\n\n/** Interface configuration for a buffer. */\nexport interface BufferConfig {\n /** The maximum batch size of every export. It must be smaller or equal to\n * maxQueueSize. The default value is 512. */\n maxExportBatchSize?: number;\n\n /** The delay interval in milliseconds between two consecutive exports.\n * The default value is 5000ms. */\n scheduledDelayMillis?: number;\n\n /** How long the export can run before it is cancelled.\n * The default value is 30000ms */\n exportTimeoutMillis?: number;\n\n /** The maximum queue size. After the size is reached spans are dropped.\n * The default value is 2048. */\n maxQueueSize?: number;\n}\n\n/** Interface configuration for BatchSpanProcessor on browser */\nexport interface BatchSpanProcessorBrowserConfig extends BufferConfig {\n /** Disable flush when a user navigates to a new page, closes the tab or the browser, or,\n * on mobile, switches to a different app. Auto flush is enabled by default. */\n disableAutoFlushOnDocumentHide?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/utility.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/utility.d.ts new file mode 100644 index 0000000..7ec2d28 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/utility.d.ts @@ -0,0 +1,20 @@ +import { Sampler } from './Sampler'; +import { SpanLimits, TracerConfig, GeneralLimits } from './types'; +export declare const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128; +export declare const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT: number; +/** + * Function to merge Default configuration (as specified in './config') with + * user provided configurations. + */ +export declare function mergeConfig(userConfig: TracerConfig): TracerConfig & { + sampler: Sampler; + spanLimits: SpanLimits; + generalLimits: GeneralLimits; +}; +/** + * When general limits are provided and model specific limits are not, + * configures the model specific limits by using the values from the general ones. + * @param userConfig User provided tracer configuration + */ +export declare function reconfigureLimits(userConfig: TracerConfig): TracerConfig; +//# sourceMappingURL=utility.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/utility.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/utility.js new file mode 100644 index 0000000..dbaca80 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/utility.js @@ -0,0 +1,61 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { buildSamplerFromEnv, loadDefaultConfig } from './config'; +import { getNumberFromEnv } from '@opentelemetry/core'; +export const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128; +export const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity; +/** + * Function to merge Default configuration (as specified in './config') with + * user provided configurations. + */ +export function mergeConfig(userConfig) { + const perInstanceDefaults = { + sampler: buildSamplerFromEnv(), + }; + const DEFAULT_CONFIG = loadDefaultConfig(); + const target = Object.assign({}, DEFAULT_CONFIG, perInstanceDefaults, userConfig); + target.generalLimits = Object.assign({}, DEFAULT_CONFIG.generalLimits, userConfig.generalLimits || {}); + target.spanLimits = Object.assign({}, DEFAULT_CONFIG.spanLimits, userConfig.spanLimits || {}); + return target; +} +/** + * When general limits are provided and model specific limits are not, + * configures the model specific limits by using the values from the general ones. + * @param userConfig User provided tracer configuration + */ +export function reconfigureLimits(userConfig) { + const spanLimits = Object.assign({}, userConfig.spanLimits); + /** + * Reassign span attribute count limit to use first non null value defined by user or use default value + */ + spanLimits.attributeCountLimit = + userConfig.spanLimits?.attributeCountLimit ?? + userConfig.generalLimits?.attributeCountLimit ?? + getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? + getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? + DEFAULT_ATTRIBUTE_COUNT_LIMIT; + /** + * Reassign span attribute value length limit to use first non null value defined by user or use default value + */ + spanLimits.attributeValueLengthLimit = + userConfig.spanLimits?.attributeValueLengthLimit ?? + userConfig.generalLimits?.attributeValueLengthLimit ?? + getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? + getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? + DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT; + return Object.assign({}, userConfig, { spanLimits }); +} +//# sourceMappingURL=utility.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/utility.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/utility.js.map new file mode 100644 index 0000000..9bcc76f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/utility.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/utility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AACjD,MAAM,CAAC,MAAM,oCAAoC,GAAG,QAAQ,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,UAAwB;IAKlD,MAAM,mBAAmB,GAA0B;QACjD,OAAO,EAAE,mBAAmB,EAAE;KAC/B,CAAC;IAEF,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,EAAE,EACF,cAAc,EACd,mBAAmB,EACnB,UAAU,CACX,CAAC;IAEF,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAClC,EAAE,EACF,cAAc,CAAC,aAAa,EAC5B,UAAU,CAAC,aAAa,IAAI,EAAE,CAC/B,CAAC;IAEF,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAC/B,EAAE,EACF,cAAc,CAAC,UAAU,EACzB,UAAU,CAAC,UAAU,IAAI,EAAE,CAC5B,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAwB;IACxD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAE5D;;OAEG;IACH,UAAU,CAAC,mBAAmB;QAC5B,UAAU,CAAC,UAAU,EAAE,mBAAmB;YAC1C,UAAU,CAAC,aAAa,EAAE,mBAAmB;YAC7C,gBAAgB,CAAC,iCAAiC,CAAC;YACnD,gBAAgB,CAAC,4BAA4B,CAAC;YAC9C,6BAA6B,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,yBAAyB;QAClC,UAAU,CAAC,UAAU,EAAE,yBAAyB;YAChD,UAAU,CAAC,aAAa,EAAE,yBAAyB;YACnD,gBAAgB,CAAC,wCAAwC,CAAC;YAC1D,gBAAgB,CAAC,mCAAmC,CAAC;YACrD,oCAAoC,CAAC;IAEvC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AACvD,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { buildSamplerFromEnv, loadDefaultConfig } from './config';\nimport { Sampler } from './Sampler';\nimport { SpanLimits, TracerConfig, GeneralLimits } from './types';\nimport { getNumberFromEnv } from '@opentelemetry/core';\n\nexport const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\nexport const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\n\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nexport function mergeConfig(userConfig: TracerConfig): TracerConfig & {\n sampler: Sampler;\n spanLimits: SpanLimits;\n generalLimits: GeneralLimits;\n} {\n const perInstanceDefaults: Partial = {\n sampler: buildSamplerFromEnv(),\n };\n\n const DEFAULT_CONFIG = loadDefaultConfig();\n\n const target = Object.assign(\n {},\n DEFAULT_CONFIG,\n perInstanceDefaults,\n userConfig\n );\n\n target.generalLimits = Object.assign(\n {},\n DEFAULT_CONFIG.generalLimits,\n userConfig.generalLimits || {}\n );\n\n target.spanLimits = Object.assign(\n {},\n DEFAULT_CONFIG.spanLimits,\n userConfig.spanLimits || {}\n );\n\n return target;\n}\n\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 */\nexport function reconfigureLimits(userConfig: TracerConfig): TracerConfig {\n const spanLimits = Object.assign({}, userConfig.spanLimits);\n\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 getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ??\n DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n\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 getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n\n return Object.assign({}, userConfig, { spanLimits });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.d.ts new file mode 100644 index 0000000..4539690 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "2.5.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.js new file mode 100644 index 0000000..fabcf00 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '2.5.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.js.map new file mode 100644 index 0000000..277b52a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.5.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/BasicTracerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/BasicTracerProvider.d.ts new file mode 100644 index 0000000..93e5f22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/BasicTracerProvider.d.ts @@ -0,0 +1,24 @@ +import { TracerProvider, Tracer as ApiTracer } from '@opentelemetry/api'; +import { TracerConfig } from './types'; +export declare enum ForceFlushState { + 'resolved' = 0, + 'timeout' = 1, + 'error' = 2, + 'unresolved' = 3 +} +/** + * This class represents a basic tracer provider which platform libraries can extend + */ +export declare class BasicTracerProvider implements TracerProvider { + private readonly _config; + private readonly _tracers; + private readonly _resource; + private readonly _activeSpanProcessor; + constructor(config?: TracerConfig); + getTracer(name: string, version?: string, options?: { + schemaUrl?: string; + }): ApiTracer; + forceFlush(): Promise; + shutdown(): Promise; +} +//# sourceMappingURL=BasicTracerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/BasicTracerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/BasicTracerProvider.js new file mode 100644 index 0000000..fbc5112 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/BasicTracerProvider.js @@ -0,0 +1,100 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { merge } from '@opentelemetry/core'; +import { defaultResource } from '@opentelemetry/resources'; +import { Tracer } from './Tracer'; +import { loadDefaultConfig } from './config'; +import { MultiSpanProcessor } from './MultiSpanProcessor'; +import { reconfigureLimits } from './utility'; +export var ForceFlushState; +(function (ForceFlushState) { + ForceFlushState[ForceFlushState["resolved"] = 0] = "resolved"; + ForceFlushState[ForceFlushState["timeout"] = 1] = "timeout"; + ForceFlushState[ForceFlushState["error"] = 2] = "error"; + ForceFlushState[ForceFlushState["unresolved"] = 3] = "unresolved"; +})(ForceFlushState || (ForceFlushState = {})); +/** + * This class represents a basic tracer provider which platform libraries can extend + */ +export class BasicTracerProvider { + _config; + _tracers = new Map(); + _resource; + _activeSpanProcessor; + constructor(config = {}) { + const mergedConfig = merge({}, loadDefaultConfig(), reconfigureLimits(config)); + this._resource = mergedConfig.resource ?? defaultResource(); + this._config = Object.assign({}, mergedConfig, { + resource: this._resource, + }); + const spanProcessors = []; + if (config.spanProcessors?.length) { + spanProcessors.push(...config.spanProcessors); + } + this._activeSpanProcessor = new MultiSpanProcessor(spanProcessors); + } + getTracer(name, version, options) { + const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`; + if (!this._tracers.has(key)) { + this._tracers.set(key, new Tracer({ name, version, schemaUrl: options?.schemaUrl }, this._config, this._resource, this._activeSpanProcessor)); + } + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return this._tracers.get(key); + } + forceFlush() { + const timeout = this._config.forceFlushTimeoutMillis; + const promises = this._activeSpanProcessor['_spanProcessors'].map((spanProcessor) => { + return new Promise(resolve => { + let state; + const timeoutInterval = setTimeout(() => { + resolve(new Error(`Span processor did not completed within timeout period of ${timeout} ms`)); + state = ForceFlushState.timeout; + }, timeout); + spanProcessor + .forceFlush() + .then(() => { + clearTimeout(timeoutInterval); + if (state !== ForceFlushState.timeout) { + state = ForceFlushState.resolved; + resolve(state); + } + }) + .catch(error => { + clearTimeout(timeoutInterval); + state = ForceFlushState.error; + resolve(error); + }); + }); + }); + return new Promise((resolve, reject) => { + Promise.all(promises) + .then(results => { + const errors = results.filter(result => result !== ForceFlushState.resolved); + if (errors.length > 0) { + reject(errors); + } + else { + resolve(); + } + }) + .catch(error => reject([error])); + }); + } + shutdown() { + return this._activeSpanProcessor.shutdown(); + } +} +//# sourceMappingURL=BasicTracerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/BasicTracerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/BasicTracerProvider.js.map new file mode 100644 index 0000000..890a8a4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/BasicTracerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BasicTracerProvider.js","sourceRoot":"","sources":["../../src/BasicTracerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAY,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,6DAAU,CAAA;IACV,2DAAS,CAAA;IACT,uDAAO,CAAA;IACP,iEAAY,CAAA;AACd,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B;AAED;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACb,OAAO,CAAe;IACtB,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC1C,SAAS,CAAW;IACpB,oBAAoB,CAAqB;IAE1D,YAAY,SAAuB,EAAE;QACnC,MAAM,YAAY,GAAG,KAAK,CACxB,EAAE,EACF,iBAAiB,EAAE,EACnB,iBAAiB,CAAC,MAAM,CAAC,CAC1B,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,QAAQ,IAAI,eAAe,EAAE,CAAC;QAE5D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE;YAC7C,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAoB,EAAE,CAAC;QAE3C,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE;YACjC,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACrE,CAAC;IAED,SAAS,CACP,IAAY,EACZ,OAAgB,EAChB,OAAgC;QAEhC,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,GAAG,EACH,IAAI,MAAM,CACR,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAChD,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,oBAAoB,CAC1B,CACF,CAAC;SACH;QAED,oEAAoE;QACpE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACjC,CAAC;IAED,UAAU;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAC/D,CAAC,aAA4B,EAAE,EAAE;YAC/B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3B,IAAI,KAAsB,CAAC;gBAC3B,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtC,OAAO,CACL,IAAI,KAAK,CACP,6DAA6D,OAAO,KAAK,CAC1E,CACF,CAAC;oBACF,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC;gBAClC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAEZ,aAAa;qBACV,UAAU,EAAE;qBACZ,IAAI,CAAC,GAAG,EAAE;oBACT,YAAY,CAAC,eAAe,CAAC,CAAC;oBAC9B,IAAI,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE;wBACrC,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC;wBACjC,OAAO,CAAC,KAAK,CAAC,CAAC;qBAChB;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,KAAK,CAAC,EAAE;oBACb,YAAY,CAAC,eAAe,CAAC,CAAC;oBAC9B,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;oBAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;iBAClB,IAAI,CAAC,OAAO,CAAC,EAAE;gBACd,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,eAAe,CAAC,QAAQ,CAC9C,CAAC;gBACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACrB,MAAM,CAAC,MAAM,CAAC,CAAC;iBAChB;qBAAM;oBACL,OAAO,EAAE,CAAC;iBACX;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, Tracer as ApiTracer } from '@opentelemetry/api';\nimport { merge } from '@opentelemetry/core';\nimport { defaultResource, Resource } from '@opentelemetry/resources';\nimport { SpanProcessor } from './SpanProcessor';\nimport { Tracer } from './Tracer';\nimport { loadDefaultConfig } from './config';\nimport { MultiSpanProcessor } from './MultiSpanProcessor';\nimport { TracerConfig } from './types';\nimport { reconfigureLimits } from './utility';\n\nexport enum ForceFlushState {\n 'resolved',\n 'timeout',\n 'error',\n 'unresolved',\n}\n\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nexport class BasicTracerProvider implements TracerProvider {\n private readonly _config: TracerConfig;\n private readonly _tracers: Map = new Map();\n private readonly _resource: Resource;\n private readonly _activeSpanProcessor: MultiSpanProcessor;\n\n constructor(config: TracerConfig = {}) {\n const mergedConfig = merge(\n {},\n loadDefaultConfig(),\n reconfigureLimits(config)\n );\n this._resource = mergedConfig.resource ?? defaultResource();\n\n this._config = Object.assign({}, mergedConfig, {\n resource: this._resource,\n });\n\n const spanProcessors: SpanProcessor[] = [];\n\n if (config.spanProcessors?.length) {\n spanProcessors.push(...config.spanProcessors);\n }\n\n this._activeSpanProcessor = new MultiSpanProcessor(spanProcessors);\n }\n\n getTracer(\n name: string,\n version?: string,\n options?: { schemaUrl?: string }\n ): ApiTracer {\n const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(\n key,\n new Tracer(\n { name, version, schemaUrl: options?.schemaUrl },\n this._config,\n this._resource,\n this._activeSpanProcessor\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key)!;\n }\n\n forceFlush(): Promise {\n const timeout = this._config.forceFlushTimeoutMillis;\n const promises = this._activeSpanProcessor['_spanProcessors'].map(\n (spanProcessor: SpanProcessor) => {\n return new Promise(resolve => {\n let state: ForceFlushState;\n const timeoutInterval = setTimeout(() => {\n resolve(\n new Error(\n `Span processor did not completed within timeout period of ${timeout} ms`\n )\n );\n state = ForceFlushState.timeout;\n }, timeout);\n\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 );\n\n return new Promise((resolve, reject) => {\n Promise.all(promises)\n .then(results => {\n const errors = results.filter(\n result => result !== ForceFlushState.resolved\n );\n if (errors.length > 0) {\n reject(errors);\n } else {\n resolve();\n }\n })\n .catch(error => reject([error]));\n });\n }\n\n shutdown(): Promise {\n return this._activeSpanProcessor.shutdown();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/IdGenerator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/IdGenerator.d.ts new file mode 100644 index 0000000..ee18577 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/IdGenerator.d.ts @@ -0,0 +1,8 @@ +/** IdGenerator provides an interface for generating Trace Id and Span Id */ +export interface IdGenerator { + /** Returns a trace ID composed of 32 lowercase hex characters. */ + generateTraceId(): string; + /** Returns a span ID composed of 16 lowercase hex characters. */ + generateSpanId(): string; +} +//# sourceMappingURL=IdGenerator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/IdGenerator.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/IdGenerator.js new file mode 100644 index 0000000..9f96598 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/IdGenerator.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=IdGenerator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/IdGenerator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/IdGenerator.js.map new file mode 100644 index 0000000..2c76898 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/IdGenerator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IdGenerator.js","sourceRoot":"","sources":["../../src/IdGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/** IdGenerator provides an interface for generating Trace Id and Span Id */\nexport interface IdGenerator {\n /** Returns a trace ID composed of 32 lowercase hex characters. */\n generateTraceId(): string;\n /** Returns a span ID composed of 16 lowercase hex characters. */\n generateSpanId(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/MultiSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/MultiSpanProcessor.d.ts new file mode 100644 index 0000000..29b3f1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/MultiSpanProcessor.d.ts @@ -0,0 +1,18 @@ +import { Context } from '@opentelemetry/api'; +import { ReadableSpan } from './export/ReadableSpan'; +import { Span } from './Span'; +import { SpanProcessor } from './SpanProcessor'; +/** + * Implementation of the {@link SpanProcessor} that simply forwards all + * received events to a list of {@link SpanProcessor}s. + */ +export declare class MultiSpanProcessor implements SpanProcessor { + private readonly _spanProcessors; + constructor(spanProcessors: SpanProcessor[]); + forceFlush(): Promise; + onStart(span: Span, context: Context): void; + onEnding(span: Span): void; + onEnd(span: ReadableSpan): void; + shutdown(): Promise; +} +//# sourceMappingURL=MultiSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/MultiSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/MultiSpanProcessor.js new file mode 100644 index 0000000..c1bc91d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/MultiSpanProcessor.js @@ -0,0 +1,71 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { globalErrorHandler } from '@opentelemetry/core'; +/** + * Implementation of the {@link SpanProcessor} that simply forwards all + * received events to a list of {@link SpanProcessor}s. + */ +export class MultiSpanProcessor { + _spanProcessors; + constructor(spanProcessors) { + this._spanProcessors = spanProcessors; + } + forceFlush() { + const promises = []; + for (const spanProcessor of this._spanProcessors) { + promises.push(spanProcessor.forceFlush()); + } + return new Promise(resolve => { + Promise.all(promises) + .then(() => { + resolve(); + }) + .catch(error => { + globalErrorHandler(error || new Error('MultiSpanProcessor: forceFlush failed')); + resolve(); + }); + }); + } + onStart(span, context) { + for (const spanProcessor of this._spanProcessors) { + spanProcessor.onStart(span, context); + } + } + onEnding(span) { + for (const spanProcessor of this._spanProcessors) { + if (spanProcessor.onEnding) { + spanProcessor.onEnding(span); + } + } + } + onEnd(span) { + for (const spanProcessor of this._spanProcessors) { + spanProcessor.onEnd(span); + } + } + shutdown() { + const promises = []; + for (const spanProcessor of this._spanProcessors) { + promises.push(spanProcessor.shutdown()); + } + return new Promise((resolve, reject) => { + Promise.all(promises).then(() => { + resolve(); + }, reject); + }); + } +} +//# sourceMappingURL=MultiSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/MultiSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/MultiSpanProcessor.js.map new file mode 100644 index 0000000..1d09a13 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/MultiSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MultiSpanProcessor.js","sourceRoot":"","sources":["../../src/MultiSpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAKzD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACZ,eAAe,CAAkB;IAClD,YAAY,cAA+B;QACzC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,UAAU;QACR,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;iBAClB,IAAI,CAAC,GAAG,EAAE;gBACT,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,kBAAkB,CAChB,KAAK,IAAI,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAC5D,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAU,EAAE,OAAgB;QAClC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACtC;IACH,CAAC;IAED,QAAQ,CAAC,IAAU;QACjB,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,IAAI,aAAa,CAAC,QAAQ,EAAE;gBAC1B,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC9B;SACF;IACH,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC3B;IACH,CAAC;IAED,QAAQ;QACN,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9B,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,MAAM,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { Span } from './Span';\nimport { SpanProcessor } from './SpanProcessor';\n\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nexport class MultiSpanProcessor implements SpanProcessor {\n private readonly _spanProcessors: SpanProcessor[];\n constructor(spanProcessors: SpanProcessor[]) {\n this._spanProcessors = spanProcessors;\n }\n\n forceFlush(): Promise {\n const promises: Promise[] = [];\n\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 globalErrorHandler(\n error || new Error('MultiSpanProcessor: forceFlush failed')\n );\n resolve();\n });\n });\n }\n\n onStart(span: Span, context: Context): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onStart(span, context);\n }\n }\n\n onEnding(span: Span): void {\n for (const spanProcessor of this._spanProcessors) {\n if (spanProcessor.onEnding) {\n spanProcessor.onEnding(span);\n }\n }\n }\n\n onEnd(span: ReadableSpan): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onEnd(span);\n }\n }\n\n shutdown(): Promise {\n const promises: Promise[] = [];\n\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Sampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Sampler.d.ts new file mode 100644 index 0000000..ff5ceb8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Sampler.d.ts @@ -0,0 +1,70 @@ +import { Context, Link, Attributes, SpanKind, TraceState } from '@opentelemetry/api'; +/** + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +export declare enum SamplingDecision { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + NOT_RECORD = 0, + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + RECORD = 1, + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + RECORD_AND_SAMPLED = 2 +} +/** + * A sampling result contains a decision for a {@link Span} and additional + * attributes the sampler would like to added to the Span. + */ +export interface SamplingResult { + /** + * A sampling decision, refer to {@link SamplingDecision} for details. + */ + decision: SamplingDecision; + /** + * The list of attributes returned by SamplingResult MUST be immutable. + * Caller may call {@link Sampler}.shouldSample any number of times and + * can safely cache the returned value. + */ + attributes?: Readonly; + /** + * A {@link TraceState} that will be associated with the {@link Span} through + * the new {@link SpanContext}. Samplers SHOULD return the TraceState from + * the passed-in {@link Context} if they do not intend to change it. Leaving + * the value undefined will also leave the TraceState unchanged. + */ + traceState?: TraceState; +} +/** + * This interface represent a sampler. Sampling is a mechanism to control the + * noise and overhead introduced by OpenTelemetry by reducing the number of + * samples of traces collected and sent to the backend. + */ +export interface Sampler { + /** + * Checks whether span needs to be created and tracked. + * + * @param context Parent Context which may contain a span. + * @param traceId of the span to be created. It can be different from the + * traceId in the {@link SpanContext}. Typically in situations when the + * span to be created starts a new trace. + * @param spanName of the span to be created. + * @param spanKind of the span to be created. + * @param attributes Initial set of Attributes for the Span being constructed. + * @param links Collection of links that will be associated with the Span to + * be created. Typically useful for batch operations. + * @returns a {@link SamplingResult}. + */ + shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: Attributes, links: Link[]): SamplingResult; + /** Returns the sampler name or short description with the configuration. */ + toString(): string; +} +//# sourceMappingURL=Sampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Sampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Sampler.js new file mode 100644 index 0000000..32c1b8d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Sampler.js @@ -0,0 +1,38 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +export var SamplingDecision; +(function (SamplingDecision) { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + SamplingDecision[SamplingDecision["NOT_RECORD"] = 0] = "NOT_RECORD"; + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + SamplingDecision[SamplingDecision["RECORD"] = 1] = "RECORD"; + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + SamplingDecision[SamplingDecision["RECORD_AND_SAMPLED"] = 2] = "RECORD_AND_SAMPLED"; +})(SamplingDecision || (SamplingDecision = {})); +//# sourceMappingURL=Sampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Sampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Sampler.js.map new file mode 100644 index 0000000..6587f21 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Sampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Sampler.js","sourceRoot":"","sources":["../../src/Sampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH;;;GAGG;AACH,MAAM,CAAN,IAAY,gBAgBX;AAhBD,WAAY,gBAAgB;IAC1B;;;OAGG;IACH,mEAAU,CAAA;IACV;;;OAGG;IACH,2DAAM,CAAA;IACN;;;OAGG;IACH,mFAAkB,CAAA;AACpB,CAAC,EAhBW,gBAAgB,KAAhB,gBAAgB,QAgB3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n Link,\n Attributes,\n SpanKind,\n TraceState,\n} from '@opentelemetry/api';\n\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n\n/**\n * This interface represent a sampler. Sampling is a mechanism to control the\n * noise and overhead introduced by OpenTelemetry by reducing the number of\n * samples of traces collected and sent to the backend.\n */\nexport interface Sampler {\n /**\n * Checks whether span needs to be created and tracked.\n *\n * @param context Parent Context which may contain a span.\n * @param traceId of the span to be created. It can be different from the\n * traceId in the {@link SpanContext}. Typically in situations when the\n * span to be created starts a new trace.\n * @param spanName of the span to be created.\n * @param spanKind of the span to be created.\n * @param attributes Initial set of Attributes for the Span being constructed.\n * @param links Collection of links that will be associated with the Span to\n * be created. Typically useful for batch operations.\n * @returns a {@link SamplingResult}.\n */\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult;\n\n /** Returns the sampler name or short description with the configuration. */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Span.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Span.d.ts new file mode 100644 index 0000000..85355d9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Span.d.ts @@ -0,0 +1,99 @@ +import { Context, Exception, HrTime, Link, Span as APISpan, Attributes, AttributeValue, SpanContext, SpanKind, SpanStatus, TimeInput } from '@opentelemetry/api'; +import { InstrumentationScope } from '@opentelemetry/core'; +import { Resource } from '@opentelemetry/resources'; +import { ReadableSpan } from './export/ReadableSpan'; +import { SpanProcessor } from './SpanProcessor'; +import { TimedEvent } from './TimedEvent'; +import { SpanLimits } from './types'; +/** + * This type provides the properties of @link{ReadableSpan} at the same time + * of the Span API + */ +export type Span = APISpan & ReadableSpan; +interface SpanOptions { + resource: Resource; + scope: InstrumentationScope; + context: Context; + spanContext: SpanContext; + name: string; + kind: SpanKind; + parentSpanContext?: SpanContext; + links?: Link[]; + startTime?: TimeInput; + attributes?: Attributes; + spanLimits: SpanLimits; + spanProcessor: SpanProcessor; +} +/** + * This class represents a span. + */ +export declare class SpanImpl implements Span { + private readonly _spanContext; + readonly kind: SpanKind; + readonly parentSpanContext?: SpanContext; + readonly attributes: Attributes; + readonly links: Link[]; + readonly events: TimedEvent[]; + readonly startTime: HrTime; + readonly resource: Resource; + readonly instrumentationScope: InstrumentationScope; + private _droppedAttributesCount; + private _droppedEventsCount; + private _droppedLinksCount; + name: string; + status: SpanStatus; + endTime: HrTime; + private _ended; + private _duration; + private readonly _spanProcessor; + private readonly _spanLimits; + private readonly _attributeValueLengthLimit; + private readonly _performanceStartTime; + private readonly _performanceOffset; + private readonly _startTimeProvided; + /** + * Constructs a new SpanImpl instance. + */ + constructor(opts: SpanOptions); + spanContext(): SpanContext; + setAttribute(key: string, value?: AttributeValue): this; + setAttributes(attributes: Attributes): this; + /** + * + * @param name Span Name + * @param [attributesOrStartTime] Span attributes or start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [timeStamp] Specified time stamp for the event + */ + addEvent(name: string, attributesOrStartTime?: Attributes | TimeInput, timeStamp?: TimeInput): this; + addLink(link: Link): this; + addLinks(links: Link[]): this; + setStatus(status: SpanStatus): this; + updateName(name: string): this; + end(endTime?: TimeInput): void; + private _getTime; + isRecording(): boolean; + recordException(exception: Exception, time?: TimeInput): void; + get duration(): HrTime; + get ended(): boolean; + get droppedAttributesCount(): number; + get droppedEventsCount(): number; + get droppedLinksCount(): number; + private _isSpanEnded; + private _truncateToLimitUtil; + /** + * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then + * return string with truncated to {@code attributeValueLengthLimit} characters + * + * If the given attribute value is array of strings then + * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters + * + * Otherwise return same Attribute {@code value} + * + * @param value Attribute value + * @returns truncated attribute value if required, otherwise same value + */ + private _truncateToSize; +} +export {}; +//# sourceMappingURL=Span.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Span.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Span.js new file mode 100644 index 0000000..4f0abaa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Span.js @@ -0,0 +1,311 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag, SpanStatusCode, } from '@opentelemetry/api'; +import { addHrTimes, millisToHrTime, hrTime, hrTimeDuration, isAttributeValue, isTimeInput, isTimeInputHrTime, otperformance, sanitizeAttributes, } from '@opentelemetry/core'; +import { ATTR_EXCEPTION_MESSAGE, ATTR_EXCEPTION_STACKTRACE, ATTR_EXCEPTION_TYPE, } from '@opentelemetry/semantic-conventions'; +import { ExceptionEventName } from './enums'; +/** + * This class represents a span. + */ +export class SpanImpl { + // Below properties are included to implement ReadableSpan for export + // purposes but are not intended to be written-to directly. + _spanContext; + kind; + parentSpanContext; + attributes = {}; + links = []; + events = []; + startTime; + resource; + instrumentationScope; + _droppedAttributesCount = 0; + _droppedEventsCount = 0; + _droppedLinksCount = 0; + name; + status = { + code: SpanStatusCode.UNSET, + }; + endTime = [0, 0]; + _ended = false; + _duration = [-1, -1]; + _spanProcessor; + _spanLimits; + _attributeValueLengthLimit; + _performanceStartTime; + _performanceOffset; + _startTimeProvided; + /** + * Constructs a new SpanImpl instance. + */ + constructor(opts) { + const now = Date.now(); + this._spanContext = opts.spanContext; + this._performanceStartTime = otperformance.now(); + this._performanceOffset = + now - (this._performanceStartTime + otperformance.timeOrigin); + this._startTimeProvided = opts.startTime != null; + this._spanLimits = opts.spanLimits; + this._attributeValueLengthLimit = + this._spanLimits.attributeValueLengthLimit || 0; + this._spanProcessor = opts.spanProcessor; + this.name = opts.name; + this.parentSpanContext = opts.parentSpanContext; + this.kind = opts.kind; + this.links = opts.links || []; + this.startTime = this._getTime(opts.startTime ?? now); + this.resource = opts.resource; + this.instrumentationScope = opts.scope; + if (opts.attributes != null) { + this.setAttributes(opts.attributes); + } + this._spanProcessor.onStart(this, opts.context); + } + spanContext() { + return this._spanContext; + } + setAttribute(key, value) { + if (value == null || this._isSpanEnded()) + return this; + if (key.length === 0) { + diag.warn(`Invalid attribute key: ${key}`); + return this; + } + if (!isAttributeValue(value)) { + diag.warn(`Invalid attribute value set for key: ${key}`); + return this; + } + const { attributeCountLimit } = this._spanLimits; + if (attributeCountLimit !== undefined && + Object.keys(this.attributes).length >= attributeCountLimit && + !Object.prototype.hasOwnProperty.call(this.attributes, key)) { + this._droppedAttributesCount++; + return this; + } + this.attributes[key] = this._truncateToSize(value); + return this; + } + setAttributes(attributes) { + for (const [k, v] of Object.entries(attributes)) { + this.setAttribute(k, v); + } + return this; + } + /** + * + * @param name Span Name + * @param [attributesOrStartTime] Span attributes or start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [timeStamp] Specified time stamp for the event + */ + addEvent(name, attributesOrStartTime, timeStamp) { + if (this._isSpanEnded()) + return this; + const { eventCountLimit } = this._spanLimits; + if (eventCountLimit === 0) { + diag.warn('No events allowed.'); + this._droppedEventsCount++; + return this; + } + if (eventCountLimit !== undefined && + this.events.length >= eventCountLimit) { + if (this._droppedEventsCount === 0) { + diag.debug('Dropping extra events.'); + } + this.events.shift(); + this._droppedEventsCount++; + } + if (isTimeInput(attributesOrStartTime)) { + if (!isTimeInput(timeStamp)) { + timeStamp = attributesOrStartTime; + } + attributesOrStartTime = undefined; + } + const attributes = sanitizeAttributes(attributesOrStartTime); + this.events.push({ + name, + attributes, + time: this._getTime(timeStamp), + droppedAttributesCount: 0, + }); + return this; + } + addLink(link) { + this.links.push(link); + return this; + } + addLinks(links) { + this.links.push(...links); + return this; + } + setStatus(status) { + if (this._isSpanEnded()) + return this; + this.status = { ...status }; + // When using try-catch, the caught "error" is of type `any`. When then assigning `any` to `status.message`, + // TypeScript will not error. While this can happen during use of any API, it is more common on Span#setStatus() + // as it's likely used in a catch-block. Therefore, we validate if `status.message` is actually a string, null, or + // undefined to avoid an incorrect type causing issues downstream. + if (this.status.message != null && typeof status.message !== 'string') { + diag.warn(`Dropping invalid status.message of type '${typeof status.message}', expected 'string'`); + delete this.status.message; + } + return this; + } + updateName(name) { + if (this._isSpanEnded()) + return this; + this.name = name; + return this; + } + end(endTime) { + if (this._isSpanEnded()) { + diag.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`); + return; + } + this.endTime = this._getTime(endTime); + this._duration = hrTimeDuration(this.startTime, this.endTime); + if (this._duration[0] < 0) { + 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) { + diag.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`); + } + if (this._spanProcessor.onEnding) { + this._spanProcessor.onEnding(this); + } + this._ended = true; + this._spanProcessor.onEnd(this); + } + _getTime(inp) { + if (typeof inp === 'number' && inp <= otperformance.now()) { + // must be a performance timestamp + // apply correction and convert to hrtime + return hrTime(inp + this._performanceOffset); + } + if (typeof inp === 'number') { + return millisToHrTime(inp); + } + if (inp instanceof Date) { + return millisToHrTime(inp.getTime()); + } + if (isTimeInputHrTime(inp)) { + return inp; + } + if (this._startTimeProvided) { + // if user provided a time for the start manually + // we can't use duration to calculate event/end times + return millisToHrTime(Date.now()); + } + const msDuration = otperformance.now() - this._performanceStartTime; + return addHrTimes(this.startTime, millisToHrTime(msDuration)); + } + isRecording() { + return this._ended === false; + } + recordException(exception, time) { + const attributes = {}; + if (typeof exception === 'string') { + attributes[ATTR_EXCEPTION_MESSAGE] = exception; + } + else if (exception) { + if (exception.code) { + attributes[ATTR_EXCEPTION_TYPE] = exception.code.toString(); + } + else if (exception.name) { + attributes[ATTR_EXCEPTION_TYPE] = exception.name; + } + if (exception.message) { + attributes[ATTR_EXCEPTION_MESSAGE] = exception.message; + } + if (exception.stack) { + attributes[ATTR_EXCEPTION_STACKTRACE] = exception.stack; + } + } + // these are minimum requirements from spec + if (attributes[ATTR_EXCEPTION_TYPE] || attributes[ATTR_EXCEPTION_MESSAGE]) { + this.addEvent(ExceptionEventName, attributes, time); + } + else { + diag.warn(`Failed to record an exception ${exception}`); + } + } + 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) { + const error = new Error(`Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`); + diag.warn(`Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`, error); + } + return this._ended; + } + // Utility function to truncate given value within size + // for value type of string, will truncate to given limit + // for type of non-string, will return same value + _truncateToLimitUtil(value, limit) { + if (value.length <= limit) { + return value; + } + return value.substring(0, limit); + } + /** + * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then + * return string with truncated to {@code attributeValueLengthLimit} characters + * + * If the given attribute value is array of strings then + * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters + * + * Otherwise return same Attribute {@code value} + * + * @param value Attribute value + * @returns truncated attribute value if required, otherwise same value + */ + _truncateToSize(value) { + const limit = this._attributeValueLengthLimit; + // Check limit + if (limit <= 0) { + // Negative values are invalid, so do not truncate + diag.warn(`Attribute value limit must be positive, got ${limit}`); + return value; + } + // String + if (typeof value === 'string') { + return this._truncateToLimitUtil(value, limit); + } + // Array of strings + if (Array.isArray(value)) { + return value.map(val => typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val); + } + // Other types, no need to apply value length limit + return value; + } +} +//# sourceMappingURL=Span.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Span.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Span.js.map new file mode 100644 index 0000000..24aeb5b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Span.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Span.js","sourceRoot":"","sources":["../../src/Span.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n diag,\n Exception,\n HrTime,\n Link,\n Span as APISpan,\n Attributes,\n AttributeValue,\n SpanContext,\n SpanKind,\n SpanStatus,\n SpanStatusCode,\n TimeInput,\n} from '@opentelemetry/api';\nimport {\n addHrTimes,\n millisToHrTime,\n hrTime,\n hrTimeDuration,\n InstrumentationScope,\n isAttributeValue,\n isTimeInput,\n isTimeInputHrTime,\n otperformance,\n sanitizeAttributes,\n} from '@opentelemetry/core';\nimport { Resource } from '@opentelemetry/resources';\nimport {\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n} from '@opentelemetry/semantic-conventions';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { ExceptionEventName } from './enums';\nimport { SpanProcessor } from './SpanProcessor';\nimport { TimedEvent } from './TimedEvent';\nimport { SpanLimits } from './types';\n\n/**\n * This type provides the properties of @link{ReadableSpan} at the same time\n * of the Span API\n */\nexport type Span = APISpan & ReadableSpan;\n\ninterface SpanOptions {\n resource: Resource;\n scope: InstrumentationScope;\n context: Context;\n spanContext: SpanContext;\n name: string;\n kind: SpanKind;\n parentSpanContext?: SpanContext;\n links?: Link[];\n startTime?: TimeInput;\n attributes?: Attributes;\n spanLimits: SpanLimits;\n spanProcessor: SpanProcessor;\n}\n\n/**\n * This class represents a span.\n */\nexport class SpanImpl implements Span {\n // Below properties are included to implement ReadableSpan for export\n // purposes but are not intended to be written-to directly.\n private readonly _spanContext: SpanContext;\n readonly kind: SpanKind;\n readonly parentSpanContext?: SpanContext;\n readonly attributes: Attributes = {};\n readonly links: Link[] = [];\n readonly events: TimedEvent[] = [];\n readonly startTime: HrTime;\n readonly resource: Resource;\n readonly instrumentationScope: InstrumentationScope;\n\n private _droppedAttributesCount = 0;\n private _droppedEventsCount: number = 0;\n private _droppedLinksCount: number = 0;\n\n name: string;\n status: SpanStatus = {\n code: SpanStatusCode.UNSET,\n };\n endTime: HrTime = [0, 0];\n private _ended = false;\n private _duration: HrTime = [-1, -1];\n private readonly _spanProcessor: SpanProcessor;\n private readonly _spanLimits: SpanLimits;\n private readonly _attributeValueLengthLimit: number;\n\n private readonly _performanceStartTime: number;\n private readonly _performanceOffset: number;\n private readonly _startTimeProvided: boolean;\n\n /**\n * Constructs a new SpanImpl instance.\n */\n constructor(opts: SpanOptions) {\n const now = Date.now();\n\n this._spanContext = opts.spanContext;\n this._performanceStartTime = otperformance.now();\n this._performanceOffset =\n now - (this._performanceStartTime + 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\n this.name = opts.name;\n this.parentSpanContext = opts.parentSpanContext;\n this.kind = opts.kind;\n this.links = opts.links || [];\n this.startTime = this._getTime(opts.startTime ?? now);\n this.resource = opts.resource;\n this.instrumentationScope = opts.scope;\n\n if (opts.attributes != null) {\n this.setAttributes(opts.attributes);\n }\n\n this._spanProcessor.onStart(this, opts.context);\n }\n\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n setAttribute(key: string, value?: AttributeValue): this;\n setAttribute(key: string, value: unknown): this {\n if (value == null || this._isSpanEnded()) return this;\n if (key.length === 0) {\n diag.warn(`Invalid attribute key: ${key}`);\n return this;\n }\n if (!isAttributeValue(value)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n return this;\n }\n\n const { attributeCountLimit } = this._spanLimits;\n\n if (\n attributeCountLimit !== undefined &&\n Object.keys(this.attributes).length >= attributeCountLimit &&\n !Object.prototype.hasOwnProperty.call(this.attributes, key)\n ) {\n this._droppedAttributesCount++;\n return this;\n }\n this.attributes[key] = this._truncateToSize(value);\n return this;\n }\n\n setAttributes(attributes: Attributes): this {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\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(\n name: string,\n attributesOrStartTime?: Attributes | TimeInput,\n timeStamp?: TimeInput\n ): this {\n if (this._isSpanEnded()) return this;\n\n const { eventCountLimit } = this._spanLimits;\n\n if (eventCountLimit === 0) {\n diag.warn('No events allowed.');\n this._droppedEventsCount++;\n return this;\n }\n\n if (\n eventCountLimit !== undefined &&\n this.events.length >= eventCountLimit\n ) {\n if (this._droppedEventsCount === 0) {\n diag.debug('Dropping extra events.');\n }\n this.events.shift();\n this._droppedEventsCount++;\n }\n\n if (isTimeInput(attributesOrStartTime)) {\n if (!isTimeInput(timeStamp)) {\n timeStamp = attributesOrStartTime;\n }\n attributesOrStartTime = undefined;\n }\n\n const attributes = sanitizeAttributes(attributesOrStartTime);\n\n this.events.push({\n name,\n attributes,\n time: this._getTime(timeStamp),\n droppedAttributesCount: 0,\n });\n return this;\n }\n\n addLink(link: Link): this {\n this.links.push(link);\n return this;\n }\n\n addLinks(links: Link[]): this {\n this.links.push(...links);\n return this;\n }\n\n setStatus(status: SpanStatus): this {\n if (this._isSpanEnded()) return this;\n this.status = { ...status };\n\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 (this.status.message != null && typeof status.message !== 'string') {\n diag.warn(\n `Dropping invalid status.message of type '${typeof status.message}', expected 'string'`\n );\n delete this.status.message;\n }\n\n return this;\n }\n\n updateName(name: string): this {\n if (this._isSpanEnded()) return this;\n this.name = name;\n return this;\n }\n\n end(endTime?: TimeInput): void {\n if (this._isSpanEnded()) {\n diag.error(\n `${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`\n );\n return;\n }\n this.endTime = this._getTime(endTime);\n this._duration = hrTimeDuration(this.startTime, this.endTime);\n\n if (this._duration[0] < 0) {\n diag.warn(\n 'Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.',\n this.startTime,\n this.endTime\n );\n this.endTime = this.startTime.slice() as HrTime;\n this._duration = [0, 0];\n }\n\n if (this._droppedEventsCount > 0) {\n diag.warn(\n `Dropped ${this._droppedEventsCount} events because eventCountLimit reached`\n );\n }\n if (this._spanProcessor.onEnding) {\n this._spanProcessor.onEnding(this);\n }\n\n this._ended = true;\n this._spanProcessor.onEnd(this);\n }\n\n private _getTime(inp?: TimeInput): HrTime {\n if (typeof inp === 'number' && inp <= otperformance.now()) {\n // must be a performance timestamp\n // apply correction and convert to hrtime\n return hrTime(inp + this._performanceOffset);\n }\n\n if (typeof inp === 'number') {\n return millisToHrTime(inp);\n }\n\n if (inp instanceof Date) {\n return millisToHrTime(inp.getTime());\n }\n\n if (isTimeInputHrTime(inp)) {\n return inp;\n }\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 millisToHrTime(Date.now());\n }\n\n const msDuration = otperformance.now() - this._performanceStartTime;\n return addHrTimes(this.startTime, millisToHrTime(msDuration));\n }\n\n isRecording(): boolean {\n return this._ended === false;\n }\n\n recordException(exception: Exception, time?: TimeInput): void {\n const attributes: Attributes = {};\n if (typeof exception === 'string') {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception;\n } else if (exception) {\n if (exception.code) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.code.toString();\n } else if (exception.name) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.name;\n }\n if (exception.message) {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception.message;\n }\n if (exception.stack) {\n attributes[ATTR_EXCEPTION_STACKTRACE] = exception.stack;\n }\n }\n\n // these are minimum requirements from spec\n if (attributes[ATTR_EXCEPTION_TYPE] || attributes[ATTR_EXCEPTION_MESSAGE]) {\n this.addEvent(ExceptionEventName, attributes, time);\n } else {\n diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n\n get duration(): HrTime {\n return this._duration;\n }\n\n get ended(): boolean {\n return this._ended;\n }\n\n get droppedAttributesCount(): number {\n return this._droppedAttributesCount;\n }\n\n get droppedEventsCount(): number {\n return this._droppedEventsCount;\n }\n\n get droppedLinksCount(): number {\n return this._droppedLinksCount;\n }\n\n private _isSpanEnded(): boolean {\n if (this._ended) {\n const error = new Error(\n `Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`\n );\n\n diag.warn(\n `Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`,\n error\n );\n }\n return this._ended;\n }\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 private _truncateToLimitUtil(value: string, limit: number): string {\n if (value.length <= limit) {\n return value;\n }\n return value.substring(0, limit);\n }\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 private _truncateToSize(value: AttributeValue): AttributeValue {\n const limit = this._attributeValueLengthLimit;\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n\n // String\n if (typeof value === 'string') {\n return this._truncateToLimitUtil(value, limit);\n }\n\n // Array of strings\n if (Array.isArray(value)) {\n return (value as []).map(val =>\n typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val\n );\n }\n\n // Other types, no need to apply value length limit\n return value;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/SpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/SpanProcessor.d.ts new file mode 100644 index 0000000..0ec6fec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/SpanProcessor.d.ts @@ -0,0 +1,39 @@ +import { Context } from '@opentelemetry/api'; +import { ReadableSpan } from './export/ReadableSpan'; +import { Span } from './Span'; +/** + * SpanProcessor is the interface Tracer SDK uses to allow synchronous hooks + * for when a {@link Span} is started or when a {@link Span} is ended. + */ +export interface SpanProcessor { + /** + * Forces to export all finished spans + */ + forceFlush(): Promise; + /** + * Called when a {@link Span} is started, if the `span.isRecording()` + * returns true. + * @param span the Span that just started. + */ + onStart(span: Span, parentContext: Context): void; + /** + * Called when a {@link Span} is ending, if the `span.isRecording()` + * returns true. + * @param span the Span that is ending. + * + * @experimental This method is experimental and may break in minor versions of this package + */ + onEnding?(span: Span): void; + /** + * Called when a {@link ReadableSpan} is ended, if the `span.isRecording()` + * returns true. + * @param span the Span that just ended. + */ + onEnd(span: ReadableSpan): void; + /** + * Shuts down the processor. Called when SDK is shut down. This is an + * opportunity for processor to do any cleanup required. + */ + shutdown(): Promise; +} +//# sourceMappingURL=SpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/SpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/SpanProcessor.js new file mode 100644 index 0000000..53cab0e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/SpanProcessor.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=SpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/SpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/SpanProcessor.js.map new file mode 100644 index 0000000..1715711 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/SpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SpanProcessor.js","sourceRoot":"","sources":["../../src/SpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '@opentelemetry/api';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { Span } from './Span';\n\n/**\n * SpanProcessor is the interface Tracer SDK uses to allow synchronous hooks\n * for when a {@link Span} is started or when a {@link Span} is ended.\n */\nexport interface SpanProcessor {\n /**\n * Forces to export all finished spans\n */\n forceFlush(): Promise;\n\n /**\n * Called when a {@link Span} is started, if the `span.isRecording()`\n * returns true.\n * @param span the Span that just started.\n */\n onStart(span: Span, parentContext: Context): void;\n\n /**\n * Called when a {@link Span} is ending, if the `span.isRecording()`\n * returns true.\n * @param span the Span that is ending.\n *\n * @experimental This method is experimental and may break in minor versions of this package\n */\n onEnding?(span: Span): void;\n\n /**\n * Called when a {@link ReadableSpan} is ended, if the `span.isRecording()`\n * returns true.\n * @param span the Span that just ended.\n */\n onEnd(span: ReadableSpan): void;\n\n /**\n * Shuts down the processor. Called when SDK is shut down. This is an\n * opportunity for processor to do any cleanup required.\n */\n shutdown(): Promise;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/TimedEvent.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/TimedEvent.d.ts new file mode 100644 index 0000000..7ad3754 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/TimedEvent.d.ts @@ -0,0 +1,15 @@ +import { HrTime, Attributes } from '@opentelemetry/api'; +/** + * Represents a timed event. + * A timed event is an event with a timestamp. + */ +export interface TimedEvent { + time: HrTime; + /** The name of the event. */ + name: string; + /** The attributes of the event. */ + attributes?: Attributes; + /** Count of attributes of the event that were dropped due to collection limits */ + droppedAttributesCount?: number; +} +//# sourceMappingURL=TimedEvent.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/TimedEvent.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/TimedEvent.js new file mode 100644 index 0000000..1e58cf2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/TimedEvent.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=TimedEvent.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/TimedEvent.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/TimedEvent.js.map new file mode 100644 index 0000000..e5ee89d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/TimedEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TimedEvent.js","sourceRoot":"","sources":["../../src/TimedEvent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { HrTime, Attributes } from '@opentelemetry/api';\n\n/**\n * Represents a timed event.\n * A timed event is an event with a timestamp.\n */\nexport interface TimedEvent {\n time: HrTime;\n /** The name of the event. */\n name: string;\n /** The attributes of the event. */\n attributes?: Attributes;\n /** Count of attributes of the event that were dropped due to collection limits */\n droppedAttributesCount?: number;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Tracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Tracer.d.ts new file mode 100644 index 0000000..a01a9aa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Tracer.d.ts @@ -0,0 +1,77 @@ +import * as api from '@opentelemetry/api'; +import { InstrumentationScope } from '@opentelemetry/core'; +import { GeneralLimits, SpanLimits, TracerConfig } from './types'; +import { SpanProcessor } from './SpanProcessor'; +import { Resource } from '@opentelemetry/resources'; +/** + * This class represents a basic tracer. + */ +export declare class Tracer implements api.Tracer { + private readonly _sampler; + private readonly _generalLimits; + private readonly _spanLimits; + private readonly _idGenerator; + readonly instrumentationScope: InstrumentationScope; + private readonly _resource; + private readonly _spanProcessor; + /** + * Constructs a new Tracer instance. + */ + constructor(instrumentationScope: InstrumentationScope, config: TracerConfig, resource: Resource, spanProcessor: SpanProcessor); + /** + * Starts a new Span or returns the default NoopSpan based on the sampling + * decision. + */ + startSpan(name: string, options?: api.SpanOptions, context?: api.Context): api.Span; + /** + * Starts a new {@link Span} and calls the given function passing it the + * created span as first argument. + * Additionally the new span gets set in context and this context is activated + * for the duration of the function call. + * + * @param name The name of the span + * @param [options] SpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns return value of fn + * @example + * const something = tracer.startActiveSpan('op', span => { + * try { + * do some work + * span.setStatus({code: SpanStatusCode.OK}); + * return something; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } finally { + * span.end(); + * } + * }); + * @example + * const span = tracer.startActiveSpan('op', span => { + * try { + * do some work + * return span; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } + * }); + * do some more work + * span.end(); + */ + startActiveSpan ReturnType>(name: string, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: api.SpanOptions, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: api.SpanOptions, ctx: api.Context, fn: F): ReturnType; + /** Returns the active {@link GeneralLimits}. */ + getGeneralLimits(): GeneralLimits; + /** Returns the active {@link SpanLimits}. */ + getSpanLimits(): SpanLimits; +} +//# sourceMappingURL=Tracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Tracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Tracer.js new file mode 100644 index 0000000..d889cfa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Tracer.js @@ -0,0 +1,148 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as api from '@opentelemetry/api'; +import { sanitizeAttributes, isTracingSuppressed, } from '@opentelemetry/core'; +import { SpanImpl } from './Span'; +import { mergeConfig } from './utility'; +import { RandomIdGenerator } from './platform'; +/** + * This class represents a basic tracer. + */ +export class Tracer { + _sampler; + _generalLimits; + _spanLimits; + _idGenerator; + instrumentationScope; + _resource; + _spanProcessor; + /** + * Constructs a new Tracer instance. + */ + constructor(instrumentationScope, config, resource, spanProcessor) { + const localConfig = mergeConfig(config); + this._sampler = localConfig.sampler; + this._generalLimits = localConfig.generalLimits; + this._spanLimits = localConfig.spanLimits; + this._idGenerator = config.idGenerator || new RandomIdGenerator(); + this._resource = resource; + this._spanProcessor = spanProcessor; + this.instrumentationScope = instrumentationScope; + } + /** + * Starts a new Span or returns the default NoopSpan based on the sampling + * decision. + */ + startSpan(name, options = {}, context = api.context.active()) { + // remove span from context in case a root span is requested via options + if (options.root) { + context = api.trace.deleteSpan(context); + } + const parentSpan = api.trace.getSpan(context); + if (isTracingSuppressed(context)) { + api.diag.debug('Instrumentation suppressed, returning Noop Span'); + const nonRecordingSpan = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT); + return nonRecordingSpan; + } + const parentSpanContext = parentSpan?.spanContext(); + const spanId = this._idGenerator.generateSpanId(); + let validParentSpanContext; + let traceId; + let traceState; + if (!parentSpanContext || + !api.trace.isSpanContextValid(parentSpanContext)) { + // New root span. + traceId = this._idGenerator.generateTraceId(); + } + else { + // New child span. + traceId = parentSpanContext.traceId; + traceState = parentSpanContext.traceState; + validParentSpanContext = parentSpanContext; + } + const spanKind = options.kind ?? api.SpanKind.INTERNAL; + const links = (options.links ?? []).map(link => { + return { + context: link.context, + attributes: sanitizeAttributes(link.attributes), + }; + }); + const attributes = sanitizeAttributes(options.attributes); + // make sampling decision + const samplingResult = this._sampler.shouldSample(context, traceId, name, spanKind, attributes, links); + traceState = samplingResult.traceState ?? traceState; + const traceFlags = samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED + ? api.TraceFlags.SAMPLED + : api.TraceFlags.NONE; + const spanContext = { traceId, spanId, traceFlags, traceState }; + if (samplingResult.decision === api.SamplingDecision.NOT_RECORD) { + api.diag.debug('Recording is off, propagating context in a non-recording span'); + const nonRecordingSpan = api.trace.wrapSpanContext(spanContext); + return nonRecordingSpan; + } + // Set initial span attributes. The attributes object may have been mutated + // by the sampler, so we sanitize the merged attributes before setting them. + const initAttributes = sanitizeAttributes(Object.assign(attributes, samplingResult.attributes)); + const span = new SpanImpl({ + resource: this._resource, + scope: this.instrumentationScope, + context, + spanContext, + name, + kind: spanKind, + links, + parentSpanContext: validParentSpanContext, + attributes: initAttributes, + startTime: options.startTime, + spanProcessor: this._spanProcessor, + spanLimits: this._spanLimits, + }); + return span; + } + startActiveSpan(name, arg2, arg3, arg4) { + let opts; + let ctx; + let fn; + if (arguments.length < 2) { + return; + } + else if (arguments.length === 2) { + fn = arg2; + } + else if (arguments.length === 3) { + opts = arg2; + fn = arg3; + } + else { + opts = arg2; + ctx = arg3; + fn = arg4; + } + const parentContext = ctx ?? api.context.active(); + const span = this.startSpan(name, opts, parentContext); + const contextWithSpanSet = api.trace.setSpan(parentContext, span); + return api.context.with(contextWithSpanSet, fn, undefined, span); + } + /** Returns the active {@link GeneralLimits}. */ + getGeneralLimits() { + return this._generalLimits; + } + /** Returns the active {@link SpanLimits}. */ + getSpanLimits() { + return this._spanLimits; + } +} +//# sourceMappingURL=Tracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Tracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Tracer.js.map new file mode 100644 index 0000000..03211b9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/Tracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Tracer.js","sourceRoot":"","sources":["../../src/Tracer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport {\n InstrumentationScope,\n sanitizeAttributes,\n isTracingSuppressed,\n} from '@opentelemetry/core';\nimport { SpanImpl } from './Span';\nimport { GeneralLimits, SpanLimits, TracerConfig } from './types';\nimport { mergeConfig } from './utility';\nimport { SpanProcessor } from './SpanProcessor';\nimport { Sampler } from './Sampler';\nimport { IdGenerator } from './IdGenerator';\nimport { RandomIdGenerator } from './platform';\nimport { Resource } from '@opentelemetry/resources';\n\n/**\n * This class represents a basic tracer.\n */\nexport class Tracer implements api.Tracer {\n private readonly _sampler: Sampler;\n private readonly _generalLimits: GeneralLimits;\n private readonly _spanLimits: SpanLimits;\n private readonly _idGenerator: IdGenerator;\n readonly instrumentationScope: InstrumentationScope;\n\n private readonly _resource: Resource;\n private readonly _spanProcessor: SpanProcessor;\n\n /**\n * Constructs a new Tracer instance.\n */\n constructor(\n instrumentationScope: InstrumentationScope,\n config: TracerConfig,\n resource: Resource,\n spanProcessor: SpanProcessor\n ) {\n const localConfig = mergeConfig(config);\n this._sampler = localConfig.sampler;\n this._generalLimits = localConfig.generalLimits;\n this._spanLimits = localConfig.spanLimits;\n this._idGenerator = config.idGenerator || new RandomIdGenerator();\n this._resource = resource;\n this._spanProcessor = spanProcessor;\n this.instrumentationScope = instrumentationScope;\n }\n\n /**\n * Starts a new Span or returns the default NoopSpan based on the sampling\n * decision.\n */\n startSpan(\n name: string,\n options: api.SpanOptions = {},\n context = api.context.active()\n ): api.Span {\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\n if (isTracingSuppressed(context)) {\n api.diag.debug('Instrumentation suppressed, returning Noop Span');\n const nonRecordingSpan = api.trace.wrapSpanContext(\n api.INVALID_SPAN_CONTEXT\n );\n return nonRecordingSpan;\n }\n\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = this._idGenerator.generateSpanId();\n let validParentSpanContext;\n let traceId;\n let traceState;\n if (\n !parentSpanContext ||\n !api.trace.isSpanContextValid(parentSpanContext)\n ) {\n // New root span.\n traceId = this._idGenerator.generateTraceId();\n } else {\n // New child span.\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n validParentSpanContext = parentSpanContext;\n }\n\n const spanKind = options.kind ?? api.SpanKind.INTERNAL;\n const links = (options.links ?? []).map(link => {\n return {\n context: link.context,\n attributes: sanitizeAttributes(link.attributes),\n };\n });\n const attributes = sanitizeAttributes(options.attributes);\n // make sampling decision\n const samplingResult = this._sampler.shouldSample(\n context,\n traceId,\n name,\n spanKind,\n attributes,\n links\n );\n\n traceState = samplingResult.traceState ?? traceState;\n\n const traceFlags =\n 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(\n 'Recording is off, propagating context in a non-recording span'\n );\n const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n return nonRecordingSpan;\n }\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 = sanitizeAttributes(\n Object.assign(attributes, samplingResult.attributes)\n );\n\n const span = new 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 });\n return span;\n }\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally the new span gets set in context and this context is activated\n * for the duration of the function call.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * span.setStatus({code: SpanStatusCode.OK});\n * return something;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * } finally {\n * span.end();\n * }\n * });\n * @example\n * const span = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * return span;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * }\n * });\n * do some more work\n * span.end();\n */\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n ctx: api.Context,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | api.SpanOptions,\n arg3?: F | api.Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: api.SpanOptions | undefined;\n let ctx: api.Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as api.SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as api.SpanOptions | undefined;\n ctx = arg3 as api.Context | undefined;\n fn = arg4 as F;\n }\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\n return api.context.with(contextWithSpanSet, fn, undefined, span);\n }\n\n /** Returns the active {@link GeneralLimits}. */\n getGeneralLimits(): GeneralLimits {\n return this._generalLimits;\n }\n\n /** Returns the active {@link SpanLimits}. */\n getSpanLimits(): SpanLimits {\n return this._spanLimits;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/config.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/config.d.ts new file mode 100644 index 0000000..4b6cea3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/config.d.ts @@ -0,0 +1,28 @@ +import { Sampler } from './Sampler'; +/** + * Load default configuration. For fields with primitive values, any user-provided + * value will override the corresponding default value. For fields with + * non-primitive values (like `spanLimits`), the user-provided value will be + * used to extend the default value. + */ +export declare function loadDefaultConfig(): { + sampler: Sampler; + forceFlushTimeoutMillis: number; + generalLimits: { + attributeValueLengthLimit: number; + attributeCountLimit: number; + }; + spanLimits: { + attributeValueLengthLimit: number; + attributeCountLimit: number; + linkCountLimit: number; + eventCountLimit: number; + attributePerEventCountLimit: number; + attributePerLinkCountLimit: number; + }; +}; +/** + * Based on environment, builds a sampler, complies with specification. + */ +export declare function buildSamplerFromEnv(): Sampler; +//# sourceMappingURL=config.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/config.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/config.js new file mode 100644 index 0000000..a5e9e34 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/config.js @@ -0,0 +1,102 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import { getNumberFromEnv, getStringFromEnv } from '@opentelemetry/core'; +import { AlwaysOffSampler } from './sampler/AlwaysOffSampler'; +import { AlwaysOnSampler } from './sampler/AlwaysOnSampler'; +import { ParentBasedSampler } from './sampler/ParentBasedSampler'; +import { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler'; +var TracesSamplerValues; +(function (TracesSamplerValues) { + TracesSamplerValues["AlwaysOff"] = "always_off"; + TracesSamplerValues["AlwaysOn"] = "always_on"; + TracesSamplerValues["ParentBasedAlwaysOff"] = "parentbased_always_off"; + TracesSamplerValues["ParentBasedAlwaysOn"] = "parentbased_always_on"; + TracesSamplerValues["ParentBasedTraceIdRatio"] = "parentbased_traceidratio"; + TracesSamplerValues["TraceIdRatio"] = "traceidratio"; +})(TracesSamplerValues || (TracesSamplerValues = {})); +const DEFAULT_RATIO = 1; +/** + * Load default configuration. For fields with primitive values, any user-provided + * value will override the corresponding default value. For fields with + * non-primitive values (like `spanLimits`), the user-provided value will be + * used to extend the default value. + */ +// object needs to be wrapped in this function and called when needed otherwise +// envs are parsed before tests are ran - causes tests using these envs to fail +export function loadDefaultConfig() { + return { + sampler: buildSamplerFromEnv(), + forceFlushTimeoutMillis: 30000, + generalLimits: { + attributeValueLengthLimit: getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity, + attributeCountLimit: getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128, + }, + spanLimits: { + attributeValueLengthLimit: getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity, + attributeCountLimit: getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128, + linkCountLimit: getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128, + eventCountLimit: getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128, + attributePerEventCountLimit: getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128, + attributePerLinkCountLimit: getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128, + }, + }; +} +/** + * Based on environment, builds a sampler, complies with specification. + */ +export function buildSamplerFromEnv() { + const sampler = getStringFromEnv('OTEL_TRACES_SAMPLER') ?? + TracesSamplerValues.ParentBasedAlwaysOn; + switch (sampler) { + case TracesSamplerValues.AlwaysOn: + return new AlwaysOnSampler(); + case TracesSamplerValues.AlwaysOff: + return new AlwaysOffSampler(); + case TracesSamplerValues.ParentBasedAlwaysOn: + return new ParentBasedSampler({ + root: new AlwaysOnSampler(), + }); + case TracesSamplerValues.ParentBasedAlwaysOff: + return new ParentBasedSampler({ + root: new AlwaysOffSampler(), + }); + case TracesSamplerValues.TraceIdRatio: + return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()); + case TracesSamplerValues.ParentBasedTraceIdRatio: + return new ParentBasedSampler({ + root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()), + }); + default: + diag.error(`OTEL_TRACES_SAMPLER value "${sampler}" invalid, defaulting to "${TracesSamplerValues.ParentBasedAlwaysOn}".`); + return new ParentBasedSampler({ + root: new AlwaysOnSampler(), + }); + } +} +function getSamplerProbabilityFromEnv() { + const probability = getNumberFromEnv('OTEL_TRACES_SAMPLER_ARG'); + if (probability == null) { + diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`); + return DEFAULT_RATIO; + } + if (probability < 0 || probability > 1) { + diag.error(`OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`); + return DEFAULT_RATIO; + } + return probability; +} +//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/config.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/config.js.map new file mode 100644 index 0000000..8d9f0e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/config.js.map @@ -0,0 +1 @@ +{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\nimport { getNumberFromEnv, getStringFromEnv } from '@opentelemetry/core';\nimport { Sampler } from './Sampler';\nimport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nimport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nimport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nimport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\n\nconst enum TracesSamplerValues {\n AlwaysOff = 'always_off',\n AlwaysOn = 'always_on',\n ParentBasedAlwaysOff = 'parentbased_always_off',\n ParentBasedAlwaysOn = 'parentbased_always_on',\n ParentBasedTraceIdRatio = 'parentbased_traceidratio',\n TraceIdRatio = 'traceidratio',\n}\n\nconst DEFAULT_RATIO = 1;\n\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\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\nexport function loadDefaultConfig() {\n return {\n sampler: buildSamplerFromEnv(),\n forceFlushTimeoutMillis: 30000,\n generalLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n },\n spanLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n linkCountLimit: getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128,\n eventCountLimit: getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128,\n attributePerEventCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128,\n attributePerLinkCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128,\n },\n };\n}\n\n/**\n * Based on environment, builds a sampler, complies with specification.\n */\nexport function buildSamplerFromEnv(): Sampler {\n const sampler =\n getStringFromEnv('OTEL_TRACES_SAMPLER') ??\n TracesSamplerValues.ParentBasedAlwaysOn;\n switch (sampler) {\n case TracesSamplerValues.AlwaysOn:\n return new AlwaysOnSampler();\n case TracesSamplerValues.AlwaysOff:\n return new AlwaysOffSampler();\n case TracesSamplerValues.ParentBasedAlwaysOn:\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n case TracesSamplerValues.ParentBasedAlwaysOff:\n return new ParentBasedSampler({\n root: new AlwaysOffSampler(),\n });\n case TracesSamplerValues.TraceIdRatio:\n return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv());\n case TracesSamplerValues.ParentBasedTraceIdRatio:\n return new ParentBasedSampler({\n root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()),\n });\n default:\n diag.error(\n `OTEL_TRACES_SAMPLER value \"${sampler}\" invalid, defaulting to \"${TracesSamplerValues.ParentBasedAlwaysOn}\".`\n );\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n }\n}\n\nfunction getSamplerProbabilityFromEnv(): number | undefined {\n const probability = getNumberFromEnv('OTEL_TRACES_SAMPLER_ARG');\n if (probability == null) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n if (probability < 0 || probability > 1) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n return probability;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/enums.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/enums.d.ts new file mode 100644 index 0000000..0192301 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/enums.d.ts @@ -0,0 +1,2 @@ +export declare const ExceptionEventName = "exception"; +//# sourceMappingURL=enums.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/enums.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/enums.js new file mode 100644 index 0000000..c3d6c57 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/enums.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Event name definitions +export const ExceptionEventName = 'exception'; +//# sourceMappingURL=enums.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/enums.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/enums.js.map new file mode 100644 index 0000000..b98b43e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/enums.js.map @@ -0,0 +1 @@ +{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,yBAAyB;AACzB,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Event name definitions\nexport const ExceptionEventName = 'exception';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/BatchSpanProcessorBase.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/BatchSpanProcessorBase.d.ts new file mode 100644 index 0000000..d67139f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/BatchSpanProcessorBase.d.ts @@ -0,0 +1,41 @@ +import { Context } from '@opentelemetry/api'; +import { Span } from '../Span'; +import { SpanProcessor } from '../SpanProcessor'; +import { BufferConfig } from '../types'; +import { ReadableSpan } from './ReadableSpan'; +import { SpanExporter } from './SpanExporter'; +/** + * Implementation of the {@link SpanProcessor} that batches spans exported by + * the SDK then pushes them to the exporter pipeline. + */ +export declare abstract class BatchSpanProcessorBase implements SpanProcessor { + private readonly _maxExportBatchSize; + private readonly _maxQueueSize; + private readonly _scheduledDelayMillis; + private readonly _exportTimeoutMillis; + private readonly _exporter; + private _isExporting; + private _finishedSpans; + private _timer; + private _shutdownOnce; + private _droppedSpansCount; + constructor(exporter: SpanExporter, config?: T); + forceFlush(): Promise; + onStart(_span: Span, _parentContext: Context): void; + onEnd(span: ReadableSpan): void; + shutdown(): Promise; + private _shutdown; + /** Add a span in the buffer. */ + private _addToBuffer; + /** + * Send all spans to the exporter respecting the batch size limit + * This function is used only on forceFlush or shutdown, + * for all other cases _flush should be used + * */ + private _flushAll; + private _flushOneBatch; + private _maybeStartTimer; + private _clearTimer; + protected abstract onShutdown(): void; +} +//# sourceMappingURL=BatchSpanProcessorBase.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/BatchSpanProcessorBase.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/BatchSpanProcessorBase.js new file mode 100644 index 0000000..eff087d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/BatchSpanProcessorBase.js @@ -0,0 +1,219 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { context, diag, TraceFlags } from '@opentelemetry/api'; +import { BindOnceFuture, ExportResultCode, getNumberFromEnv, globalErrorHandler, suppressTracing, } from '@opentelemetry/core'; +/** + * Implementation of the {@link SpanProcessor} that batches spans exported by + * the SDK then pushes them to the exporter pipeline. + */ +export class BatchSpanProcessorBase { + _maxExportBatchSize; + _maxQueueSize; + _scheduledDelayMillis; + _exportTimeoutMillis; + _exporter; + _isExporting = false; + _finishedSpans = []; + _timer; + _shutdownOnce; + _droppedSpansCount = 0; + constructor(exporter, config) { + this._exporter = exporter; + this._maxExportBatchSize = + typeof config?.maxExportBatchSize === 'number' + ? config.maxExportBatchSize + : (getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512); + this._maxQueueSize = + typeof config?.maxQueueSize === 'number' + ? config.maxQueueSize + : (getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048); + this._scheduledDelayMillis = + typeof config?.scheduledDelayMillis === 'number' + ? config.scheduledDelayMillis + : (getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000); + this._exportTimeoutMillis = + typeof config?.exportTimeoutMillis === 'number' + ? config.exportTimeoutMillis + : (getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000); + this._shutdownOnce = new BindOnceFuture(this._shutdown, this); + if (this._maxExportBatchSize > this._maxQueueSize) { + 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(); + } + // does nothing. + onStart(_span, _parentContext) { } + onEnd(span) { + if (this._shutdownOnce.isCalled) { + return; + } + if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) { + return; + } + this._addToBuffer(span); + } + shutdown() { + return this._shutdownOnce.call(); + } + _shutdown() { + return Promise.resolve() + .then(() => { + return this.onShutdown(); + }) + .then(() => { + return this._flushAll(); + }) + .then(() => { + return this._exporter.shutdown(); + }); + } + /** Add a span in the buffer. */ + _addToBuffer(span) { + if (this._finishedSpans.length >= this._maxQueueSize) { + // limit reached, drop span + if (this._droppedSpansCount === 0) { + diag.debug('maxQueueSize reached, dropping spans'); + } + this._droppedSpansCount++; + return; + } + if (this._droppedSpansCount > 0) { + // some spans were dropped, log once with count of spans dropped + diag.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`); + this._droppedSpansCount = 0; + } + this._finishedSpans.push(span); + this._maybeStartTimer(); + } + /** + * Send all spans to the exporter respecting the batch size limit + * This function is used only on forceFlush or shutdown, + * for all other cases _flush should be used + * */ + _flushAll() { + return new Promise((resolve, reject) => { + const promises = []; + // calculate number of batches + const count = Math.ceil(this._finishedSpans.length / this._maxExportBatchSize); + for (let i = 0, j = count; i < j; i++) { + promises.push(this._flushOneBatch()); + } + Promise.all(promises) + .then(() => { + resolve(); + }) + .catch(reject); + }); + } + _flushOneBatch() { + this._clearTimer(); + if (this._finishedSpans.length === 0) { + return Promise.resolve(); + } + return new Promise((resolve, reject) => { + const timer = setTimeout(() => { + // don't wait anymore for export, this way the next batch can start + reject(new Error('Timeout')); + }, this._exportTimeoutMillis); + // prevent downstream exporter calls from generating spans + context.with(suppressTracing(context.active()), () => { + // Reset the finished spans buffer here because the next invocations of the _flush method + // could pass the same finished spans to the exporter if the buffer is cleared + // outside the execution of this callback. + let spans; + if (this._finishedSpans.length <= this._maxExportBatchSize) { + spans = this._finishedSpans; + this._finishedSpans = []; + } + else { + spans = this._finishedSpans.splice(0, this._maxExportBatchSize); + } + const doExport = () => this._exporter.export(spans, result => { + clearTimeout(timer); + if (result.code === ExportResultCode.SUCCESS) { + resolve(); + } + else { + reject(result.error ?? + new Error('BatchSpanProcessor: span export failed')); + } + }); + let pendingResources = null; + for (let i = 0, len = spans.length; i < len; i++) { + const span = spans[i]; + if (span.resource.asyncAttributesPending && + span.resource.waitForAsyncAttributes) { + pendingResources ??= []; + pendingResources.push(span.resource.waitForAsyncAttributes()); + } + } + // Avoid scheduling a promise to make the behavior more predictable and easier to test + if (pendingResources === null) { + doExport(); + } + else { + Promise.all(pendingResources).then(doExport, err => { + globalErrorHandler(err); + reject(err); + }); + } + }); + }); + } + _maybeStartTimer() { + if (this._isExporting) + return; + const flush = () => { + this._isExporting = true; + this._flushOneBatch() + .finally(() => { + this._isExporting = false; + if (this._finishedSpans.length > 0) { + this._clearTimer(); + this._maybeStartTimer(); + } + }) + .catch(e => { + this._isExporting = false; + globalErrorHandler(e); + }); + }; + // we only wait if the queue doesn't have enough elements yet + if (this._finishedSpans.length >= this._maxExportBatchSize) { + return flush(); + } + if (this._timer !== undefined) + return; + this._timer = setTimeout(() => flush(), this._scheduledDelayMillis); + // depending on runtime, this may be a 'number' or NodeJS.Timeout + if (typeof this._timer !== 'number') { + this._timer.unref(); + } + } + _clearTimer() { + if (this._timer !== undefined) { + clearTimeout(this._timer); + this._timer = undefined; + } + } +} +//# sourceMappingURL=BatchSpanProcessorBase.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/BatchSpanProcessorBase.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/BatchSpanProcessorBase.js.map new file mode 100644 index 0000000..7381301 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/BatchSpanProcessorBase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchSpanProcessorBase.js","sourceRoot":"","sources":["../../../src/export/BatchSpanProcessorBase.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { context, Context, diag, TraceFlags } from '@opentelemetry/api';\nimport {\n BindOnceFuture,\n ExportResultCode,\n getNumberFromEnv,\n globalErrorHandler,\n suppressTracing,\n} from '@opentelemetry/core';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\nimport { BufferConfig } from '../types';\nimport { ReadableSpan } from './ReadableSpan';\nimport { SpanExporter } from './SpanExporter';\n\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nexport abstract class BatchSpanProcessorBase\n implements SpanProcessor\n{\n private readonly _maxExportBatchSize: number;\n private readonly _maxQueueSize: number;\n private readonly _scheduledDelayMillis: number;\n private readonly _exportTimeoutMillis: number;\n private readonly _exporter: SpanExporter;\n\n private _isExporting = false;\n private _finishedSpans: ReadableSpan[] = [];\n private _timer: NodeJS.Timeout | number | undefined;\n private _shutdownOnce: BindOnceFuture;\n private _droppedSpansCount: number = 0;\n\n constructor(exporter: SpanExporter, config?: T) {\n this._exporter = exporter;\n this._maxExportBatchSize =\n typeof config?.maxExportBatchSize === 'number'\n ? config.maxExportBatchSize\n : (getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512);\n this._maxQueueSize =\n typeof config?.maxQueueSize === 'number'\n ? config.maxQueueSize\n : (getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048);\n this._scheduledDelayMillis =\n typeof config?.scheduledDelayMillis === 'number'\n ? config.scheduledDelayMillis\n : (getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000);\n this._exportTimeoutMillis =\n typeof config?.exportTimeoutMillis === 'number'\n ? config.exportTimeoutMillis\n : (getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000);\n\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n\n if (this._maxExportBatchSize > this._maxQueueSize) {\n diag.warn(\n 'BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize'\n );\n this._maxExportBatchSize = this._maxQueueSize;\n }\n }\n\n forceFlush(): Promise {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n\n // does nothing.\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n this._addToBuffer(span);\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _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\n /** Add a span in the buffer. */\n private _addToBuffer(span: ReadableSpan) {\n if (this._finishedSpans.length >= this._maxQueueSize) {\n // limit reached, drop span\n\n if (this._droppedSpansCount === 0) {\n diag.debug('maxQueueSize reached, dropping spans');\n }\n this._droppedSpansCount++;\n\n return;\n }\n\n if (this._droppedSpansCount > 0) {\n // some spans were dropped, log once with count of spans dropped\n diag.warn(\n `Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`\n );\n this._droppedSpansCount = 0;\n }\n\n this._finishedSpans.push(span);\n this._maybeStartTimer();\n }\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 private _flushAll(): Promise {\n return new Promise((resolve, reject) => {\n const promises = [];\n // calculate number of batches\n const count = Math.ceil(\n this._finishedSpans.length / this._maxExportBatchSize\n );\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\n private _flushOneBatch(): Promise {\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 context.with(suppressTracing(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: ReadableSpan[];\n if (this._finishedSpans.length <= this._maxExportBatchSize) {\n spans = this._finishedSpans;\n this._finishedSpans = [];\n } else {\n spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n }\n\n const doExport = () =>\n this._exporter.export(spans, result => {\n clearTimeout(timer);\n if (result.code === ExportResultCode.SUCCESS) {\n resolve();\n } else {\n reject(\n result.error ??\n new Error('BatchSpanProcessor: span export failed')\n );\n }\n });\n\n let pendingResources: Array> | null = null;\n for (let i = 0, len = spans.length; i < len; i++) {\n const span = spans[i];\n if (\n span.resource.asyncAttributesPending &&\n span.resource.waitForAsyncAttributes\n ) {\n pendingResources ??= [];\n pendingResources.push(span.resource.waitForAsyncAttributes());\n }\n }\n\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (pendingResources === null) {\n doExport();\n } else {\n Promise.all(pendingResources).then(doExport, err => {\n globalErrorHandler(err);\n reject(err);\n });\n }\n });\n });\n }\n\n private _maybeStartTimer() {\n if (this._isExporting) 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 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) return;\n this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n\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\n private _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n\n protected abstract onShutdown(): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ConsoleSpanExporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ConsoleSpanExporter.d.ts new file mode 100644 index 0000000..cbbf9bb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ConsoleSpanExporter.d.ts @@ -0,0 +1,37 @@ +import { SpanExporter } from './SpanExporter'; +import { ReadableSpan } from './ReadableSpan'; +import { ExportResult } from '@opentelemetry/core'; +/** + * This is implementation of {@link SpanExporter} that prints spans to the + * console. This class can be used for diagnostic purposes. + * + * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time. + */ +export declare class ConsoleSpanExporter implements SpanExporter { + /** + * Export spans. + * @param spans + * @param resultCallback + */ + export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void; + /** + * Shutdown the exporter. + */ + shutdown(): Promise; + /** + * Exports any pending spans in exporter + */ + forceFlush(): Promise; + /** + * converts span info into more readable format + * @param span + */ + private _exportInfo; + /** + * Showing spans in console + * @param spans + * @param done + */ + private _sendSpans; +} +//# sourceMappingURL=ConsoleSpanExporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ConsoleSpanExporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ConsoleSpanExporter.js new file mode 100644 index 0000000..81d6e1d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ConsoleSpanExporter.js @@ -0,0 +1,84 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ExportResultCode, hrTimeToMicroseconds, } from '@opentelemetry/core'; +/** + * This is implementation of {@link SpanExporter} that prints spans to the + * console. This class can be used for diagnostic purposes. + * + * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time. + */ +/* eslint-disable no-console */ +export class ConsoleSpanExporter { + /** + * Export spans. + * @param spans + * @param resultCallback + */ + export(spans, resultCallback) { + return this._sendSpans(spans, resultCallback); + } + /** + * Shutdown the exporter. + */ + shutdown() { + this._sendSpans([]); + return this.forceFlush(); + } + /** + * Exports any pending spans in exporter + */ + forceFlush() { + return Promise.resolve(); + } + /** + * converts span info into more readable format + * @param span + */ + _exportInfo(span) { + return { + resource: { + attributes: span.resource.attributes, + }, + instrumentationScope: span.instrumentationScope, + traceId: span.spanContext().traceId, + parentSpanContext: span.parentSpanContext, + traceState: span.spanContext().traceState?.serialize(), + name: span.name, + id: span.spanContext().spanId, + kind: span.kind, + timestamp: hrTimeToMicroseconds(span.startTime), + duration: hrTimeToMicroseconds(span.duration), + attributes: span.attributes, + status: span.status, + events: span.events, + links: span.links, + }; + } + /** + * Showing spans in console + * @param spans + * @param done + */ + _sendSpans(spans, done) { + for (const span of spans) { + console.dir(this._exportInfo(span), { depth: 3 }); + } + if (done) { + return done({ code: ExportResultCode.SUCCESS }); + } + } +} +//# sourceMappingURL=ConsoleSpanExporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ConsoleSpanExporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ConsoleSpanExporter.js.map new file mode 100644 index 0000000..c5db26e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ConsoleSpanExporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ConsoleSpanExporter.js","sourceRoot":"","sources":["../../../src/export/ConsoleSpanExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAEL,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B;;;;;GAKG;AAEH,+BAA+B;AAC/B,MAAM,OAAO,mBAAmB;IAC9B;;;;OAIG;IACH,MAAM,CACJ,KAAqB,EACrB,cAA8C;QAE9C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,IAAkB;QACpC,OAAO;YACL,QAAQ,EAAE;gBACR,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;aACrC;YACD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO;YACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE;YACtD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;YAC/C,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC7C,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,UAAU,CAChB,KAAqB,EACrB,IAAqC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;SACnD;QACD,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;SACjD;IACH,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanExporter } from './SpanExporter';\nimport { ReadableSpan } from './ReadableSpan';\nimport {\n ExportResult,\n ExportResultCode,\n hrTimeToMicroseconds,\n} from '@opentelemetry/core';\n\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\n/* eslint-disable no-console */\nexport class ConsoleSpanExporter implements SpanExporter {\n /**\n * Export spans.\n * @param spans\n * @param resultCallback\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n return this._sendSpans(spans, resultCallback);\n }\n\n /**\n * Shutdown the exporter.\n */\n shutdown(): Promise {\n this._sendSpans([]);\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n /**\n * converts span info into more readable format\n * @param span\n */\n private _exportInfo(span: ReadableSpan) {\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: hrTimeToMicroseconds(span.startTime),\n duration: hrTimeToMicroseconds(span.duration),\n attributes: span.attributes,\n status: span.status,\n events: span.events,\n links: span.links,\n };\n }\n\n /**\n * Showing spans in console\n * @param spans\n * @param done\n */\n private _sendSpans(\n spans: ReadableSpan[],\n done?: (result: ExportResult) => void\n ): void {\n for (const span of spans) {\n console.dir(this._exportInfo(span), { depth: 3 });\n }\n if (done) {\n return done({ code: ExportResultCode.SUCCESS });\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/InMemorySpanExporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/InMemorySpanExporter.d.ts new file mode 100644 index 0000000..50dea6e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/InMemorySpanExporter.d.ts @@ -0,0 +1,25 @@ +import { SpanExporter } from './SpanExporter'; +import { ReadableSpan } from './ReadableSpan'; +import { ExportResult } from '@opentelemetry/core'; +/** + * This class can be used for testing purposes. It stores the exported spans + * in a list in memory that can be retrieved using the `getFinishedSpans()` + * method. + */ +export declare class InMemorySpanExporter implements SpanExporter { + private _finishedSpans; + /** + * Indicates if the exporter has been "shutdown." + * When false, exported spans will not be stored in-memory. + */ + protected _stopped: boolean; + export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void; + shutdown(): Promise; + /** + * Exports any pending spans in the exporter + */ + forceFlush(): Promise; + reset(): void; + getFinishedSpans(): ReadableSpan[]; +} +//# sourceMappingURL=InMemorySpanExporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/InMemorySpanExporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/InMemorySpanExporter.js new file mode 100644 index 0000000..68b8058 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/InMemorySpanExporter.js @@ -0,0 +1,56 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ExportResultCode } from '@opentelemetry/core'; +/** + * This class can be used for testing purposes. It stores the exported spans + * in a list in memory that can be retrieved using the `getFinishedSpans()` + * method. + */ +export class InMemorySpanExporter { + _finishedSpans = []; + /** + * Indicates if the exporter has been "shutdown." + * When false, exported spans will not be stored in-memory. + */ + _stopped = false; + export(spans, resultCallback) { + if (this._stopped) + return resultCallback({ + code: ExportResultCode.FAILED, + error: new Error('Exporter has been stopped'), + }); + this._finishedSpans.push(...spans); + setTimeout(() => resultCallback({ code: ExportResultCode.SUCCESS }), 0); + } + shutdown() { + this._stopped = true; + this._finishedSpans = []; + return this.forceFlush(); + } + /** + * Exports any pending spans in the exporter + */ + forceFlush() { + return Promise.resolve(); + } + reset() { + this._finishedSpans = []; + } + getFinishedSpans() { + return this._finishedSpans; + } +} +//# sourceMappingURL=InMemorySpanExporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/InMemorySpanExporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/InMemorySpanExporter.js.map new file mode 100644 index 0000000..8de6ce2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/InMemorySpanExporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"InMemorySpanExporter.js","sourceRoot":"","sources":["../../../src/export/InMemorySpanExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAgB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErE;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IACvB,cAAc,GAAmB,EAAE,CAAC;IAC5C;;;OAGG;IACO,QAAQ,GAAG,KAAK,CAAC;IAE3B,MAAM,CACJ,KAAqB,EACrB,cAA8C;QAE9C,IAAI,IAAI,CAAC,QAAQ;YACf,OAAO,cAAc,CAAC;gBACpB,IAAI,EAAE,gBAAgB,CAAC,MAAM;gBAC7B,KAAK,EAAE,IAAI,KAAK,CAAC,2BAA2B,CAAC;aAC9C,CAAC,CAAC;QACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAEnC,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanExporter } from './SpanExporter';\nimport { ReadableSpan } from './ReadableSpan';\nimport { ExportResult, ExportResultCode } from '@opentelemetry/core';\n\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 */\nexport class InMemorySpanExporter implements SpanExporter {\n private _finishedSpans: ReadableSpan[] = [];\n /**\n * Indicates if the exporter has been \"shutdown.\"\n * When false, exported spans will not be stored in-memory.\n */\n protected _stopped = false;\n\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n if (this._stopped)\n return resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error('Exporter has been stopped'),\n });\n this._finishedSpans.push(...spans);\n\n setTimeout(() => resultCallback({ code: ExportResultCode.SUCCESS }), 0);\n }\n\n shutdown(): Promise {\n this._stopped = true;\n this._finishedSpans = [];\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in the exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n reset(): void {\n this._finishedSpans = [];\n }\n\n getFinishedSpans(): ReadableSpan[] {\n return this._finishedSpans;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/NoopSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/NoopSpanProcessor.d.ts new file mode 100644 index 0000000..fc70798 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/NoopSpanProcessor.d.ts @@ -0,0 +1,12 @@ +import { Context } from '@opentelemetry/api'; +import { ReadableSpan } from './ReadableSpan'; +import { Span } from '../Span'; +import { SpanProcessor } from '../SpanProcessor'; +/** No-op implementation of SpanProcessor */ +export declare class NoopSpanProcessor implements SpanProcessor { + onStart(_span: Span, _context: Context): void; + onEnd(_span: ReadableSpan): void; + shutdown(): Promise; + forceFlush(): Promise; +} +//# sourceMappingURL=NoopSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/NoopSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/NoopSpanProcessor.js new file mode 100644 index 0000000..e83b896 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/NoopSpanProcessor.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** No-op implementation of SpanProcessor */ +export class NoopSpanProcessor { + onStart(_span, _context) { } + onEnd(_span) { } + shutdown() { + return Promise.resolve(); + } + forceFlush() { + return Promise.resolve(); + } +} +//# sourceMappingURL=NoopSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/NoopSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/NoopSpanProcessor.js.map new file mode 100644 index 0000000..7696a15 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/NoopSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopSpanProcessor.js","sourceRoot":"","sources":["../../../src/export/NoopSpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,4CAA4C;AAC5C,MAAM,OAAO,iBAAiB;IAC5B,OAAO,CAAC,KAAW,EAAE,QAAiB,IAAS,CAAC;IAChD,KAAK,CAAC,KAAmB,IAAS,CAAC;IACnC,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '@opentelemetry/api';\nimport { ReadableSpan } from './ReadableSpan';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\n\n/** No-op implementation of SpanProcessor */\nexport class NoopSpanProcessor implements SpanProcessor {\n onStart(_span: Span, _context: Context): void {}\n onEnd(_span: ReadableSpan): void {}\n shutdown(): Promise {\n return Promise.resolve();\n }\n forceFlush(): Promise {\n return Promise.resolve();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ReadableSpan.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ReadableSpan.d.ts new file mode 100644 index 0000000..1645fc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ReadableSpan.d.ts @@ -0,0 +1,24 @@ +import { SpanKind, SpanStatus, Attributes, HrTime, Link, SpanContext } from '@opentelemetry/api'; +import { Resource } from '@opentelemetry/resources'; +import { InstrumentationScope } from '@opentelemetry/core'; +import { TimedEvent } from '../TimedEvent'; +export interface ReadableSpan { + readonly name: string; + readonly kind: SpanKind; + readonly spanContext: () => SpanContext; + readonly parentSpanContext?: SpanContext; + readonly startTime: HrTime; + readonly endTime: HrTime; + readonly status: SpanStatus; + readonly attributes: Attributes; + readonly links: Link[]; + readonly events: TimedEvent[]; + readonly duration: HrTime; + readonly ended: boolean; + readonly resource: Resource; + readonly instrumentationScope: InstrumentationScope; + readonly droppedAttributesCount: number; + readonly droppedEventsCount: number; + readonly droppedLinksCount: number; +} +//# sourceMappingURL=ReadableSpan.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ReadableSpan.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ReadableSpan.js new file mode 100644 index 0000000..b283433 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ReadableSpan.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=ReadableSpan.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ReadableSpan.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ReadableSpan.js.map new file mode 100644 index 0000000..d1d8d07 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/ReadableSpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ReadableSpan.js","sourceRoot":"","sources":["../../../src/export/ReadableSpan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n SpanKind,\n SpanStatus,\n Attributes,\n HrTime,\n Link,\n SpanContext,\n} from '@opentelemetry/api';\nimport { Resource } from '@opentelemetry/resources';\nimport { InstrumentationScope } from '@opentelemetry/core';\nimport { TimedEvent } from '../TimedEvent';\n\nexport interface ReadableSpan {\n readonly name: string;\n readonly kind: SpanKind;\n readonly spanContext: () => SpanContext;\n readonly parentSpanContext?: SpanContext;\n readonly startTime: HrTime;\n readonly endTime: HrTime;\n readonly status: SpanStatus;\n readonly attributes: Attributes;\n readonly links: Link[];\n readonly events: TimedEvent[];\n readonly duration: HrTime;\n readonly ended: boolean;\n readonly resource: Resource;\n readonly instrumentationScope: InstrumentationScope;\n readonly droppedAttributesCount: number;\n readonly droppedEventsCount: number;\n readonly droppedLinksCount: number;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SimpleSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SimpleSpanProcessor.d.ts new file mode 100644 index 0000000..395e7b5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SimpleSpanProcessor.d.ts @@ -0,0 +1,26 @@ +import { Context } from '@opentelemetry/api'; +import { Span } from '../Span'; +import { SpanProcessor } from '../SpanProcessor'; +import { ReadableSpan } from './ReadableSpan'; +import { SpanExporter } from './SpanExporter'; +/** + * An implementation of the {@link SpanProcessor} that converts the {@link Span} + * to {@link ReadableSpan} and passes it to the configured exporter. + * + * Only spans that are sampled are converted. + * + * 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. + */ +export declare class SimpleSpanProcessor implements SpanProcessor { + private readonly _exporter; + private _shutdownOnce; + private _pendingExports; + constructor(exporter: SpanExporter); + forceFlush(): Promise; + onStart(_span: Span, _parentContext: Context): void; + onEnd(span: ReadableSpan): void; + private _doExport; + shutdown(): Promise; + private _shutdown; +} +//# sourceMappingURL=SimpleSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SimpleSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SimpleSpanProcessor.js new file mode 100644 index 0000000..a9c935f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SimpleSpanProcessor.js @@ -0,0 +1,72 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TraceFlags } from '@opentelemetry/api'; +import { internal, ExportResultCode, globalErrorHandler, BindOnceFuture, } from '@opentelemetry/core'; +/** + * An implementation of the {@link SpanProcessor} that converts the {@link Span} + * to {@link ReadableSpan} and passes it to the configured exporter. + * + * Only spans that are sampled are converted. + * + * 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. + */ +export class SimpleSpanProcessor { + _exporter; + _shutdownOnce; + _pendingExports; + constructor(exporter) { + this._exporter = exporter; + this._shutdownOnce = new BindOnceFuture(this._shutdown, this); + this._pendingExports = new Set(); + } + async forceFlush() { + await Promise.all(Array.from(this._pendingExports)); + if (this._exporter.forceFlush) { + await this._exporter.forceFlush(); + } + } + onStart(_span, _parentContext) { } + onEnd(span) { + if (this._shutdownOnce.isCalled) { + return; + } + if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) { + return; + } + const pendingExport = this._doExport(span).catch(err => globalErrorHandler(err)); + // Enqueue this export to the pending list so it can be flushed by the user. + this._pendingExports.add(pendingExport); + void pendingExport.finally(() => this._pendingExports.delete(pendingExport)); + } + async _doExport(span) { + if (span.resource.asyncAttributesPending) { + // Ensure resource is fully resolved before exporting. + await span.resource.waitForAsyncAttributes?.(); + } + const result = await internal._export(this._exporter, [span]); + if (result.code !== ExportResultCode.SUCCESS) { + throw (result.error ?? + new Error(`SimpleSpanProcessor: span export failed (status ${result})`)); + } + } + shutdown() { + return this._shutdownOnce.call(); + } + _shutdown() { + return this._exporter.shutdown(); + } +} +//# sourceMappingURL=SimpleSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SimpleSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SimpleSpanProcessor.js.map new file mode 100644 index 0000000..6303cab --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SimpleSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SimpleSpanProcessor.js","sourceRoot":"","sources":["../../../src/export/SimpleSpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAM7B;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAmB;IACb,SAAS,CAAe;IACjC,aAAa,CAAuB;IACpC,eAAe,CAAqB;IAE5C,YAAY,QAAsB;QAChC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAiB,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;SACnC;IACH,CAAC;IAED,OAAO,CAAC,KAAW,EAAE,cAAuB,IAAS,CAAC;IAEtD,KAAK,CAAC,IAAkB;QACtB,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC/B,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC9D,OAAO;SACR;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CACrD,kBAAkB,CAAC,GAAG,CAAC,CACxB,CAAC;QACF,4EAA4E;QAC5E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,KAAK,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAC3C,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAkB;QACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE;YACxC,sDAAsD;YACtD,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,CAAC;SAChD;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,EAAE;YAC5C,MAAM,CACJ,MAAM,CAAC,KAAK;gBACZ,IAAI,KAAK,CAAC,mDAAmD,MAAM,GAAG,CAAC,CACxE,CAAC;SACH;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, TraceFlags } from '@opentelemetry/api';\nimport {\n internal,\n ExportResultCode,\n globalErrorHandler,\n BindOnceFuture,\n} from '@opentelemetry/core';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\nimport { ReadableSpan } from './ReadableSpan';\nimport { SpanExporter } from './SpanExporter';\n\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 */\nexport class SimpleSpanProcessor implements SpanProcessor {\n private readonly _exporter: SpanExporter;\n private _shutdownOnce: BindOnceFuture;\n private _pendingExports: Set>;\n\n constructor(exporter: SpanExporter) {\n this._exporter = exporter;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n this._pendingExports = new Set>();\n }\n\n async forceFlush(): Promise {\n await Promise.all(Array.from(this._pendingExports));\n if (this._exporter.forceFlush) {\n await this._exporter.forceFlush();\n }\n }\n\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n const pendingExport = this._doExport(span).catch(err =>\n globalErrorHandler(err)\n );\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(() =>\n this._pendingExports.delete(pendingExport)\n );\n }\n\n private async _doExport(span: ReadableSpan): Promise {\n if (span.resource.asyncAttributesPending) {\n // Ensure resource is fully resolved before exporting.\n await span.resource.waitForAsyncAttributes?.();\n }\n\n const result = await internal._export(this._exporter, [span]);\n if (result.code !== ExportResultCode.SUCCESS) {\n throw (\n result.error ??\n new Error(`SimpleSpanProcessor: span export failed (status ${result})`)\n );\n }\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _shutdown(): Promise {\n return this._exporter.shutdown();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SpanExporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SpanExporter.d.ts new file mode 100644 index 0000000..0580a57 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SpanExporter.d.ts @@ -0,0 +1,21 @@ +import { ExportResult } from '@opentelemetry/core'; +import { ReadableSpan } from './ReadableSpan'; +/** + * An interface that allows different tracing services to export recorded data + * for sampled spans in their own format. + * + * To export data this MUST be register to the Tracer SDK using a optional + * config. + */ +export interface SpanExporter { + /** + * Called to export sampled {@link ReadableSpan}s. + * @param spans the list of sampled Spans to be exported. + */ + export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void; + /** Stops the exporter. */ + shutdown(): Promise; + /** Immediately export all spans */ + forceFlush?(): Promise; +} +//# sourceMappingURL=SpanExporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SpanExporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SpanExporter.js new file mode 100644 index 0000000..b23b664 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SpanExporter.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=SpanExporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SpanExporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SpanExporter.js.map new file mode 100644 index 0000000..56b527f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/export/SpanExporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SpanExporter.js","sourceRoot":"","sources":["../../../src/export/SpanExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ExportResult } from '@opentelemetry/core';\nimport { ReadableSpan } from './ReadableSpan';\n\n/**\n * An interface that allows different tracing services to export recorded data\n * for sampled spans in their own format.\n *\n * To export data this MUST be register to the Tracer SDK using a optional\n * config.\n */\nexport interface SpanExporter {\n /**\n * Called to export sampled {@link ReadableSpan}s.\n * @param spans the list of sampled Spans to be exported.\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void;\n\n /** Stops the exporter. */\n shutdown(): Promise;\n\n /** Immediately export all spans */\n forceFlush?(): Promise;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/index.d.ts new file mode 100644 index 0000000..db7e88a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/index.d.ts @@ -0,0 +1,20 @@ +export { BasicTracerProvider } from './BasicTracerProvider'; +export { BatchSpanProcessor, RandomIdGenerator } from './platform'; +export { ConsoleSpanExporter } from './export/ConsoleSpanExporter'; +export { InMemorySpanExporter } from './export/InMemorySpanExporter'; +export type { ReadableSpan } from './export/ReadableSpan'; +export { SimpleSpanProcessor } from './export/SimpleSpanProcessor'; +export type { SpanExporter } from './export/SpanExporter'; +export { NoopSpanProcessor } from './export/NoopSpanProcessor'; +export { AlwaysOffSampler } from './sampler/AlwaysOffSampler'; +export { AlwaysOnSampler } from './sampler/AlwaysOnSampler'; +export { ParentBasedSampler } from './sampler/ParentBasedSampler'; +export { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler'; +export { SamplingDecision } from './Sampler'; +export type { Sampler, SamplingResult } from './Sampler'; +export type { Span } from './Span'; +export type { SpanProcessor } from './SpanProcessor'; +export type { TimedEvent } from './TimedEvent'; +export type { BatchSpanProcessorBrowserConfig, BufferConfig, GeneralLimits, SDKRegistrationConfig, SpanLimits, TracerConfig, } from './types'; +export type { IdGenerator } from './IdGenerator'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/index.js new file mode 100644 index 0000000..3ecd8e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/index.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { BasicTracerProvider } from './BasicTracerProvider'; +export { BatchSpanProcessor, RandomIdGenerator } from './platform'; +export { ConsoleSpanExporter } from './export/ConsoleSpanExporter'; +export { InMemorySpanExporter } from './export/InMemorySpanExporter'; +export { SimpleSpanProcessor } from './export/SimpleSpanProcessor'; +export { NoopSpanProcessor } from './export/NoopSpanProcessor'; +export { AlwaysOffSampler } from './sampler/AlwaysOffSampler'; +export { AlwaysOnSampler } from './sampler/AlwaysOnSampler'; +export { ParentBasedSampler } from './sampler/ParentBasedSampler'; +export { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler'; +export { SamplingDecision } from './Sampler'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/index.js.map new file mode 100644 index 0000000..1481ad7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BasicTracerProvider } from './BasicTracerProvider';\nexport { BatchSpanProcessor, RandomIdGenerator } from './platform';\nexport { ConsoleSpanExporter } from './export/ConsoleSpanExporter';\nexport { InMemorySpanExporter } from './export/InMemorySpanExporter';\nexport type { ReadableSpan } from './export/ReadableSpan';\nexport { SimpleSpanProcessor } from './export/SimpleSpanProcessor';\nexport type { SpanExporter } from './export/SpanExporter';\nexport { NoopSpanProcessor } from './export/NoopSpanProcessor';\nexport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nexport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nexport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nexport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\nexport { SamplingDecision } from './Sampler';\nexport type { Sampler, SamplingResult } from './Sampler';\nexport type { Span } from './Span';\nexport type { SpanProcessor } from './SpanProcessor';\nexport type { TimedEvent } from './TimedEvent';\nexport type {\n BatchSpanProcessorBrowserConfig,\n BufferConfig,\n GeneralLimits,\n SDKRegistrationConfig,\n SpanLimits,\n TracerConfig,\n} from './types';\nexport type { IdGenerator } from './IdGenerator';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/RandomIdGenerator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/RandomIdGenerator.d.ts new file mode 100644 index 0000000..846240d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/RandomIdGenerator.d.ts @@ -0,0 +1,14 @@ +import { IdGenerator } from '../../IdGenerator'; +export declare class RandomIdGenerator implements IdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId: () => string; + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId: () => string; +} +//# sourceMappingURL=RandomIdGenerator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/RandomIdGenerator.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/RandomIdGenerator.js new file mode 100644 index 0000000..66137b3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/RandomIdGenerator.js @@ -0,0 +1,43 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const SPAN_ID_BYTES = 8; +const TRACE_ID_BYTES = 16; +export class RandomIdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId = getIdGenerator(TRACE_ID_BYTES); + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId = getIdGenerator(SPAN_ID_BYTES); +} +const SHARED_CHAR_CODES_ARRAY = Array(32); +function getIdGenerator(bytes) { + return function generateId() { + for (let i = 0; i < bytes * 2; i++) { + SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48; + // valid hex characters in the range 48-57 and 97-102 + if (SHARED_CHAR_CODES_ARRAY[i] >= 58) { + SHARED_CHAR_CODES_ARRAY[i] += 39; + } + } + return String.fromCharCode.apply(null, SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2)); + }; +} +//# sourceMappingURL=RandomIdGenerator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/RandomIdGenerator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/RandomIdGenerator.js.map new file mode 100644 index 0000000..b8e56c5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/RandomIdGenerator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RandomIdGenerator.js","sourceRoot":"","sources":["../../../../src/platform/browser/RandomIdGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAAM,OAAO,iBAAiB;IAC5B;;;OAGG;IACH,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEjD;;;OAGG;IACH,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;CAChD;AAED,MAAM,uBAAuB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1C,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,SAAS,UAAU;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,uBAAuB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YACjE,qDAAqD;YACrD,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;gBACpC,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClC;SACF;QACD,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAC9B,IAAI,EACJ,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAC5C,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { IdGenerator } from '../../IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\nexport class RandomIdGenerator implements IdGenerator {\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 /**\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}\n\nconst SHARED_CHAR_CODES_ARRAY = Array(32);\nfunction getIdGenerator(bytes: number): () => string {\n return function generateId() {\n for (let i = 0; i < bytes * 2; i++) {\n SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48;\n // valid hex characters in the range 48-57 and 97-102\n if (SHARED_CHAR_CODES_ARRAY[i] >= 58) {\n SHARED_CHAR_CODES_ARRAY[i] += 39;\n }\n }\n return String.fromCharCode.apply(\n null,\n SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2)\n );\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/export/BatchSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/export/BatchSpanProcessor.d.ts new file mode 100644 index 0000000..6fd5820 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/export/BatchSpanProcessor.d.ts @@ -0,0 +1,11 @@ +import { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase'; +import { SpanExporter } from '../../../export/SpanExporter'; +import { BatchSpanProcessorBrowserConfig } from '../../../types'; +export declare class BatchSpanProcessor extends BatchSpanProcessorBase { + private _visibilityChangeListener?; + private _pageHideListener?; + constructor(_exporter: SpanExporter, config?: BatchSpanProcessorBrowserConfig); + private onInit; + protected onShutdown(): void; +} +//# sourceMappingURL=BatchSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/export/BatchSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/export/BatchSpanProcessor.js new file mode 100644 index 0000000..455cc5f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/export/BatchSpanProcessor.js @@ -0,0 +1,56 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase'; +import { globalErrorHandler } from '@opentelemetry/core'; +export class BatchSpanProcessor extends BatchSpanProcessorBase { + _visibilityChangeListener; + _pageHideListener; + constructor(_exporter, config) { + super(_exporter, config); + this.onInit(config); + } + onInit(config) { + if (config?.disableAutoFlushOnDocumentHide !== true && + typeof document !== 'undefined') { + this._visibilityChangeListener = () => { + if (document.visibilityState === 'hidden') { + this.forceFlush().catch(error => { + globalErrorHandler(error); + }); + } + }; + this._pageHideListener = () => { + this.forceFlush().catch(error => { + globalErrorHandler(error); + }); + }; + document.addEventListener('visibilitychange', this._visibilityChangeListener); + // use 'pagehide' event as a fallback for Safari; see https://bugs.webkit.org/show_bug.cgi?id=116769 + document.addEventListener('pagehide', this._pageHideListener); + } + } + onShutdown() { + if (typeof document !== 'undefined') { + if (this._visibilityChangeListener) { + document.removeEventListener('visibilitychange', this._visibilityChangeListener); + } + if (this._pageHideListener) { + document.removeEventListener('pagehide', this._pageHideListener); + } + } + } +} +//# sourceMappingURL=BatchSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/export/BatchSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/export/BatchSpanProcessor.js.map new file mode 100644 index 0000000..efdb42f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/export/BatchSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchSpanProcessor.js","sourceRoot":"","sources":["../../../../../src/platform/browser/export/BatchSpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAGhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,OAAO,kBAAmB,SAAQ,sBAAuD;IACrF,yBAAyB,CAAc;IACvC,iBAAiB,CAAc;IAEvC,YACE,SAAuB,EACvB,MAAwC;QAExC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,MAAwC;QACrD,IACE,MAAM,EAAE,8BAA8B,KAAK,IAAI;YAC/C,OAAO,QAAQ,KAAK,WAAW,EAC/B;YACA,IAAI,CAAC,yBAAyB,GAAG,GAAG,EAAE;gBACpC,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE;oBACzC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBAC9B,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAC5B,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,GAAG,EAAE;gBAC5B,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC9B,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,QAAQ,CAAC,gBAAgB,CACvB,kBAAkB,EAClB,IAAI,CAAC,yBAAyB,CAC/B,CAAC;YAEF,oGAAoG;YACpG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC/D;IACH,CAAC;IAES,UAAU;QAClB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,QAAQ,CAAC,mBAAmB,CAC1B,kBAAkB,EAClB,IAAI,CAAC,yBAAyB,CAC/B,CAAC;aACH;YACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAClE;SACF;IACH,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase';\nimport { SpanExporter } from '../../../export/SpanExporter';\nimport { BatchSpanProcessorBrowserConfig } from '../../../types';\nimport { globalErrorHandler } from '@opentelemetry/core';\n\nexport class BatchSpanProcessor extends BatchSpanProcessorBase {\n private _visibilityChangeListener?: () => void;\n private _pageHideListener?: () => void;\n\n constructor(\n _exporter: SpanExporter,\n config?: BatchSpanProcessorBrowserConfig\n ) {\n super(_exporter, config);\n this.onInit(config);\n }\n\n private onInit(config?: BatchSpanProcessorBrowserConfig): void {\n if (\n config?.disableAutoFlushOnDocumentHide !== true &&\n typeof document !== 'undefined'\n ) {\n this._visibilityChangeListener = () => {\n if (document.visibilityState === 'hidden') {\n this.forceFlush().catch(error => {\n globalErrorHandler(error);\n });\n }\n };\n this._pageHideListener = () => {\n this.forceFlush().catch(error => {\n globalErrorHandler(error);\n });\n };\n document.addEventListener(\n 'visibilitychange',\n this._visibilityChangeListener\n );\n\n // use 'pagehide' event as a fallback for Safari; see https://bugs.webkit.org/show_bug.cgi?id=116769\n document.addEventListener('pagehide', this._pageHideListener);\n }\n }\n\n protected onShutdown(): void {\n if (typeof document !== 'undefined') {\n if (this._visibilityChangeListener) {\n document.removeEventListener(\n 'visibilitychange',\n this._visibilityChangeListener\n );\n }\n if (this._pageHideListener) {\n document.removeEventListener('pagehide', this._pageHideListener);\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/index.d.ts new file mode 100644 index 0000000..40c4ca6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/index.d.ts @@ -0,0 +1,3 @@ +export { BatchSpanProcessor } from './export/BatchSpanProcessor'; +export { RandomIdGenerator } from './RandomIdGenerator'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/index.js new file mode 100644 index 0000000..15b8091 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { BatchSpanProcessor } from './export/BatchSpanProcessor'; +export { RandomIdGenerator } from './RandomIdGenerator'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/index.js.map new file mode 100644 index 0000000..6d190d1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BatchSpanProcessor } from './export/BatchSpanProcessor';\nexport { RandomIdGenerator } from './RandomIdGenerator';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/index.d.ts new file mode 100644 index 0000000..d5add34 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/index.d.ts @@ -0,0 +1,2 @@ +export { BatchSpanProcessor, RandomIdGenerator } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/index.js new file mode 100644 index 0000000..6e61c79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { BatchSpanProcessor, RandomIdGenerator } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/index.js.map new file mode 100644 index 0000000..6334f9d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BatchSpanProcessor, RandomIdGenerator } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/RandomIdGenerator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/RandomIdGenerator.d.ts new file mode 100644 index 0000000..846240d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/RandomIdGenerator.d.ts @@ -0,0 +1,14 @@ +import { IdGenerator } from '../../IdGenerator'; +export declare class RandomIdGenerator implements IdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId: () => string; + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId: () => string; +} +//# sourceMappingURL=RandomIdGenerator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/RandomIdGenerator.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/RandomIdGenerator.js new file mode 100644 index 0000000..ab107ca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/RandomIdGenerator.js @@ -0,0 +1,50 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const SPAN_ID_BYTES = 8; +const TRACE_ID_BYTES = 16; +export class RandomIdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId = getIdGenerator(TRACE_ID_BYTES); + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId = getIdGenerator(SPAN_ID_BYTES); +} +const SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES); +function getIdGenerator(bytes) { + return function generateId() { + for (let i = 0; i < bytes / 4; i++) { + // unsigned right shift drops decimal part of the number + // 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 + SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4); + } + // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated + for (let i = 0; i < bytes; i++) { + if (SHARED_BUFFER[i] > 0) { + break; + } + else if (i === bytes - 1) { + SHARED_BUFFER[bytes - 1] = 1; + } + } + return SHARED_BUFFER.toString('hex', 0, bytes); + }; +} +//# sourceMappingURL=RandomIdGenerator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/RandomIdGenerator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/RandomIdGenerator.js.map new file mode 100644 index 0000000..98fe6be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/RandomIdGenerator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RandomIdGenerator.js","sourceRoot":"","sources":["../../../../src/platform/node/RandomIdGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAAM,OAAO,iBAAiB;IAC5B;;;OAGG;IACH,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEjD;;;OAGG;IACH,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;CAChD;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACzD,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,SAAS,UAAU;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,wDAAwD;YACxD,gIAAgI;YAChI,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACrE;QAED,sFAAsF;QACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACxB,MAAM;aACP;iBAAM,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE;gBAC1B,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;aAC9B;SACF;QAED,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { IdGenerator } from '../../IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\nexport class RandomIdGenerator implements IdGenerator {\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 /**\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}\n\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes: number): () => string {\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\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 } else if (i === bytes - 1) {\n SHARED_BUFFER[bytes - 1] = 1;\n }\n }\n\n return SHARED_BUFFER.toString('hex', 0, bytes);\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/export/BatchSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/export/BatchSpanProcessor.d.ts new file mode 100644 index 0000000..fc75ac2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/export/BatchSpanProcessor.d.ts @@ -0,0 +1,6 @@ +import { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase'; +import { BufferConfig } from '../../../types'; +export declare class BatchSpanProcessor extends BatchSpanProcessorBase { + protected onShutdown(): void; +} +//# sourceMappingURL=BatchSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/export/BatchSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/export/BatchSpanProcessor.js new file mode 100644 index 0000000..d869ced --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/export/BatchSpanProcessor.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase'; +export class BatchSpanProcessor extends BatchSpanProcessorBase { + onShutdown() { } +} +//# sourceMappingURL=BatchSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/export/BatchSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/export/BatchSpanProcessor.js.map new file mode 100644 index 0000000..0504984 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/export/BatchSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchSpanProcessor.js","sourceRoot":"","sources":["../../../../../src/platform/node/export/BatchSpanProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAGhF,MAAM,OAAO,kBAAmB,SAAQ,sBAAoC;IAChE,UAAU,KAAU,CAAC;CAChC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase';\nimport { BufferConfig } from '../../../types';\n\nexport class BatchSpanProcessor extends BatchSpanProcessorBase {\n protected onShutdown(): void {}\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/index.d.ts new file mode 100644 index 0000000..40c4ca6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/index.d.ts @@ -0,0 +1,3 @@ +export { BatchSpanProcessor } from './export/BatchSpanProcessor'; +export { RandomIdGenerator } from './RandomIdGenerator'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/index.js new file mode 100644 index 0000000..15b8091 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { BatchSpanProcessor } from './export/BatchSpanProcessor'; +export { RandomIdGenerator } from './RandomIdGenerator'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/index.js.map new file mode 100644 index 0000000..5e0fa8b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BatchSpanProcessor } from './export/BatchSpanProcessor';\nexport { RandomIdGenerator } from './RandomIdGenerator';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOffSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOffSampler.d.ts new file mode 100644 index 0000000..1dfe8ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOffSampler.d.ts @@ -0,0 +1,7 @@ +import { Sampler, SamplingResult } from '../Sampler'; +/** Sampler that samples no traces. */ +export declare class AlwaysOffSampler implements Sampler { + shouldSample(): SamplingResult; + toString(): string; +} +//# sourceMappingURL=AlwaysOffSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOffSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOffSampler.js new file mode 100644 index 0000000..930e0c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOffSampler.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { SamplingDecision } from '../Sampler'; +/** Sampler that samples no traces. */ +export class AlwaysOffSampler { + shouldSample() { + return { + decision: SamplingDecision.NOT_RECORD, + }; + } + toString() { + return 'AlwaysOffSampler'; + } +} +//# sourceMappingURL=AlwaysOffSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOffSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOffSampler.js.map new file mode 100644 index 0000000..13c1ca0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOffSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AlwaysOffSampler.js","sourceRoot":"","sources":["../../../src/sampler/AlwaysOffSampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAEvE,sCAAsC;AACtC,MAAM,OAAO,gBAAgB;IAC3B,YAAY;QACV,OAAO;YACL,QAAQ,EAAE,gBAAgB,CAAC,UAAU;SACtC,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples no traces. */\nexport class AlwaysOffSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return 'AlwaysOffSampler';\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOnSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOnSampler.d.ts new file mode 100644 index 0000000..9a7e914 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOnSampler.d.ts @@ -0,0 +1,7 @@ +import { Sampler, SamplingResult } from '../Sampler'; +/** Sampler that samples all traces. */ +export declare class AlwaysOnSampler implements Sampler { + shouldSample(): SamplingResult; + toString(): string; +} +//# sourceMappingURL=AlwaysOnSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOnSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOnSampler.js new file mode 100644 index 0000000..2327720 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOnSampler.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { SamplingDecision } from '../Sampler'; +/** Sampler that samples all traces. */ +export class AlwaysOnSampler { + shouldSample() { + return { + decision: SamplingDecision.RECORD_AND_SAMPLED, + }; + } + toString() { + return 'AlwaysOnSampler'; + } +} +//# sourceMappingURL=AlwaysOnSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOnSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOnSampler.js.map new file mode 100644 index 0000000..05b9900 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/AlwaysOnSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AlwaysOnSampler.js","sourceRoot":"","sources":["../../../src/sampler/AlwaysOnSampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAEvE,uCAAuC;AACvC,MAAM,OAAO,eAAe;IAC1B,YAAY;QACV,OAAO;YACL,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB;SAC9C,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples all traces. */\nexport class AlwaysOnSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n\n toString(): string {\n return 'AlwaysOnSampler';\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/ParentBasedSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/ParentBasedSampler.d.ts new file mode 100644 index 0000000..96c4ef7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/ParentBasedSampler.d.ts @@ -0,0 +1,30 @@ +import { Context, Link, Attributes, SpanKind } from '@opentelemetry/api'; +import { Sampler, SamplingResult } from '../Sampler'; +/** + * A composite sampler that either respects the parent span's sampling decision + * or delegates to `delegateSampler` for root spans. + */ +export declare class ParentBasedSampler implements Sampler { + private _root; + private _remoteParentSampled; + private _remoteParentNotSampled; + private _localParentSampled; + private _localParentNotSampled; + constructor(config: ParentBasedSamplerConfig); + shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: Attributes, links: Link[]): SamplingResult; + toString(): string; +} +interface ParentBasedSamplerConfig { + /** Sampler called for spans with no parent */ + root: Sampler; + /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */ + remoteParentSampled?: Sampler; + /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */ + remoteParentNotSampled?: Sampler; + /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */ + localParentSampled?: Sampler; + /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */ + localParentNotSampled?: Sampler; +} +export {}; +//# sourceMappingURL=ParentBasedSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/ParentBasedSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/ParentBasedSampler.js new file mode 100644 index 0000000..15cdf79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/ParentBasedSampler.js @@ -0,0 +1,65 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { isSpanContextValid, TraceFlags, trace, } from '@opentelemetry/api'; +import { globalErrorHandler } from '@opentelemetry/core'; +import { AlwaysOffSampler } from './AlwaysOffSampler'; +import { AlwaysOnSampler } from './AlwaysOnSampler'; +/** + * A composite sampler that either respects the parent span's sampling decision + * or delegates to `delegateSampler` for root spans. + */ +export class ParentBasedSampler { + _root; + _remoteParentSampled; + _remoteParentNotSampled; + _localParentSampled; + _localParentNotSampled; + constructor(config) { + this._root = config.root; + if (!this._root) { + globalErrorHandler(new Error('ParentBasedSampler must have a root sampler configured')); + this._root = new AlwaysOnSampler(); + } + this._remoteParentSampled = + config.remoteParentSampled ?? new AlwaysOnSampler(); + this._remoteParentNotSampled = + config.remoteParentNotSampled ?? new AlwaysOffSampler(); + this._localParentSampled = + config.localParentSampled ?? new AlwaysOnSampler(); + this._localParentNotSampled = + config.localParentNotSampled ?? new AlwaysOffSampler(); + } + shouldSample(context, traceId, spanName, spanKind, attributes, links) { + const parentContext = trace.getSpanContext(context); + if (!parentContext || !isSpanContextValid(parentContext)) { + return this._root.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + if (parentContext.isRemote) { + if (parentContext.traceFlags & TraceFlags.SAMPLED) { + return this._remoteParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + return this._remoteParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + if (parentContext.traceFlags & TraceFlags.SAMPLED) { + return this._localParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + return this._localParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + toString() { + return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`; + } +} +//# sourceMappingURL=ParentBasedSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/ParentBasedSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/ParentBasedSampler.js.map new file mode 100644 index 0000000..18a4d38 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/ParentBasedSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ParentBasedSampler.js","sourceRoot":"","sources":["../../../src/sampler/ParentBasedSampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,kBAAkB,EAIlB,UAAU,EACV,KAAK,GACN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACrB,KAAK,CAAU;IACf,oBAAoB,CAAU;IAC9B,uBAAuB,CAAU;IACjC,mBAAmB,CAAU;IAC7B,sBAAsB,CAAU;IAExC,YAAY,MAAgC;QAC1C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,kBAAkB,CAChB,IAAI,KAAK,CAAC,wDAAwD,CAAC,CACpE,CAAC;YACF,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;SACpC;QAED,IAAI,CAAC,oBAAoB;YACvB,MAAM,CAAC,mBAAmB,IAAI,IAAI,eAAe,EAAE,CAAC;QACtD,IAAI,CAAC,uBAAuB;YAC1B,MAAM,CAAC,sBAAsB,IAAI,IAAI,gBAAgB,EAAE,CAAC;QAC1D,IAAI,CAAC,mBAAmB;YACtB,MAAM,CAAC,kBAAkB,IAAI,IAAI,eAAe,EAAE,CAAC;QACrD,IAAI,CAAC,sBAAsB;YACzB,MAAM,CAAC,qBAAqB,IAAI,IAAI,gBAAgB,EAAE,CAAC;IAC3D,CAAC;IAED,YAAY,CACV,OAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,QAAkB,EAClB,UAAsB,EACtB,KAAa;QAEb,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE;YACxD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAC5B,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;SACH;QAED,IAAI,aAAa,CAAC,QAAQ,EAAE;YAC1B,IAAI,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE;gBACjD,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAC3C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;aACH;YACD,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAC9C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;SACH;QAED,IAAI,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE;YACjD,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAC1C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;SACH;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAC7C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,oBAAoB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,yBAAyB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,4BAA4B,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,wBAAwB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,2BAA2B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC;IAClT,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n isSpanContextValid,\n Link,\n Attributes,\n SpanKind,\n TraceFlags,\n trace,\n} from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { AlwaysOffSampler } from './AlwaysOffSampler';\nimport { AlwaysOnSampler } from './AlwaysOnSampler';\nimport { Sampler, SamplingResult } from '../Sampler';\n\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nexport class ParentBasedSampler implements Sampler {\n private _root: Sampler;\n private _remoteParentSampled: Sampler;\n private _remoteParentNotSampled: Sampler;\n private _localParentSampled: Sampler;\n private _localParentNotSampled: Sampler;\n\n constructor(config: ParentBasedSamplerConfig) {\n this._root = config.root;\n\n if (!this._root) {\n globalErrorHandler(\n new Error('ParentBasedSampler must have a root sampler configured')\n );\n this._root = new AlwaysOnSampler();\n }\n\n this._remoteParentSampled =\n config.remoteParentSampled ?? new AlwaysOnSampler();\n this._remoteParentNotSampled =\n config.remoteParentNotSampled ?? new AlwaysOffSampler();\n this._localParentSampled =\n config.localParentSampled ?? new AlwaysOnSampler();\n this._localParentNotSampled =\n config.localParentNotSampled ?? new AlwaysOffSampler();\n }\n\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult {\n const parentContext = trace.getSpanContext(context);\n\n if (!parentContext || !isSpanContextValid(parentContext)) {\n return this._root.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n return this._remoteParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n return this._localParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n toString(): string {\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}\n\ninterface ParentBasedSamplerConfig {\n /** Sampler called for spans with no parent */\n root: Sampler;\n /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */\n remoteParentSampled?: Sampler;\n /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */\n remoteParentNotSampled?: Sampler;\n /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */\n localParentSampled?: Sampler;\n /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */\n localParentNotSampled?: Sampler;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/TraceIdRatioBasedSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/TraceIdRatioBasedSampler.d.ts new file mode 100644 index 0000000..36ad233 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/TraceIdRatioBasedSampler.d.ts @@ -0,0 +1,12 @@ +import { Sampler, SamplingResult } from '../Sampler'; +/** Sampler that samples a given fraction of traces based of trace id deterministically. */ +export declare class TraceIdRatioBasedSampler implements Sampler { + private readonly _ratio; + private _upperBound; + constructor(ratio?: number); + shouldSample(context: unknown, traceId: string): SamplingResult; + toString(): string; + private _normalize; + private _accumulate; +} +//# sourceMappingURL=TraceIdRatioBasedSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/TraceIdRatioBasedSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/TraceIdRatioBasedSampler.js new file mode 100644 index 0000000..d993702 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/TraceIdRatioBasedSampler.js @@ -0,0 +1,51 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { isValidTraceId } from '@opentelemetry/api'; +import { SamplingDecision } from '../Sampler'; +/** Sampler that samples a given fraction of traces based of trace id deterministically. */ +export class TraceIdRatioBasedSampler { + _ratio; + _upperBound; + constructor(ratio = 0) { + this._ratio = this._normalize(ratio); + this._upperBound = Math.floor(this._ratio * 0xffffffff); + } + shouldSample(context, traceId) { + return { + decision: isValidTraceId(traceId) && this._accumulate(traceId) < this._upperBound + ? SamplingDecision.RECORD_AND_SAMPLED + : SamplingDecision.NOT_RECORD, + }; + } + toString() { + return `TraceIdRatioBased{${this._ratio}}`; + } + _normalize(ratio) { + if (typeof ratio !== 'number' || isNaN(ratio)) + return 0; + return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio; + } + _accumulate(traceId) { + let accumulation = 0; + for (let i = 0; i < traceId.length / 8; i++) { + const pos = i * 8; + const part = parseInt(traceId.slice(pos, pos + 8), 16); + accumulation = (accumulation ^ part) >>> 0; + } + return accumulation; + } +} +//# sourceMappingURL=TraceIdRatioBasedSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/TraceIdRatioBasedSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/TraceIdRatioBasedSampler.js.map new file mode 100644 index 0000000..72c46e8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/sampler/TraceIdRatioBasedSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TraceIdRatioBasedSampler.js","sourceRoot":"","sources":["../../../src/sampler/TraceIdRatioBasedSampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAW,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAEvE,2FAA2F;AAC3F,MAAM,OAAO,wBAAwB;IAClB,MAAM,CAAC;IAChB,WAAW,CAAS;IAE5B,YAAY,KAAK,GAAG,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,YAAY,CAAC,OAAgB,EAAE,OAAe;QAC5C,OAAO;YACL,QAAQ,EACN,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW;gBACrE,CAAC,CAAC,gBAAgB,CAAC,kBAAkB;gBACrC,CAAC,CAAC,gBAAgB,CAAC,UAAU;SAClC,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,qBAAqB,IAAI,CAAC,MAAM,GAAG,CAAC;IAC7C,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACxD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;IAEO,WAAW,CAAC,OAAe;QACjC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,YAAY,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5C;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { isValidTraceId } from '@opentelemetry/api';\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nexport class TraceIdRatioBasedSampler implements Sampler {\n private readonly _ratio;\n private _upperBound: number;\n\n constructor(ratio = 0) {\n this._ratio = this._normalize(ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n\n shouldSample(context: unknown, traceId: string): SamplingResult {\n return {\n decision:\n isValidTraceId(traceId) && this._accumulate(traceId) < this._upperBound\n ? SamplingDecision.RECORD_AND_SAMPLED\n : SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n\n private _normalize(ratio: number): number {\n if (typeof ratio !== 'number' || isNaN(ratio)) return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n\n private _accumulate(traceId: string): number {\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/types.d.ts new file mode 100644 index 0000000..9ae585b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/types.d.ts @@ -0,0 +1,89 @@ +import { ContextManager, TextMapPropagator } from '@opentelemetry/api'; +import { Resource } from '@opentelemetry/resources'; +import { IdGenerator } from './IdGenerator'; +import { Sampler } from './Sampler'; +import { SpanProcessor } from './SpanProcessor'; +/** + * TracerConfig provides an interface for configuring a Basic Tracer. + */ +export interface TracerConfig { + /** + * Sampler determines if a span should be recorded or should be a NoopSpan. + */ + sampler?: Sampler; + /** General Limits */ + generalLimits?: GeneralLimits; + /** Span Limits */ + spanLimits?: SpanLimits; + /** Resource associated with trace telemetry */ + resource?: Resource; + /** + * Generator of trace and span IDs + * The default idGenerator generates random ids + */ + idGenerator?: IdGenerator; + /** + * How long the forceFlush can run before it is cancelled. + * The default value is 30000ms + */ + forceFlushTimeoutMillis?: number; + /** + * List of SpanProcessor for the tracer + */ + spanProcessors?: SpanProcessor[]; +} +/** + * Configuration options for registering the API with the SDK. + * Undefined values may be substituted for defaults, and null + * values will not be registered. + */ +export interface SDKRegistrationConfig { + /** Propagator to register as the global propagator */ + propagator?: TextMapPropagator | null; + /** Context manager to register as the global context manager */ + contextManager?: ContextManager | null; +} +/** Global configuration limits of trace service */ +export interface GeneralLimits { + /** attributeValueLengthLimit is maximum allowed attribute value size */ + attributeValueLengthLimit?: number; + /** attributeCountLimit is number of attributes per trace */ + attributeCountLimit?: number; +} +/** Global configuration of trace service */ +export interface SpanLimits { + /** attributeValueLengthLimit is maximum allowed attribute value size */ + attributeValueLengthLimit?: number; + /** attributeCountLimit is number of attributes per span */ + attributeCountLimit?: number; + /** linkCountLimit is number of links per span */ + linkCountLimit?: number; + /** eventCountLimit is number of message events per span */ + eventCountLimit?: number; + /** attributePerEventCountLimit is the maximum number of attributes allowed per span event */ + attributePerEventCountLimit?: number; + /** attributePerLinkCountLimit is the maximum number of attributes allowed per span link */ + attributePerLinkCountLimit?: number; +} +/** Interface configuration for a buffer. */ +export interface BufferConfig { + /** The maximum batch size of every export. It must be smaller or equal to + * maxQueueSize. The default value is 512. */ + maxExportBatchSize?: number; + /** The delay interval in milliseconds between two consecutive exports. + * The default value is 5000ms. */ + scheduledDelayMillis?: number; + /** How long the export can run before it is cancelled. + * The default value is 30000ms */ + exportTimeoutMillis?: number; + /** The maximum queue size. After the size is reached spans are dropped. + * The default value is 2048. */ + maxQueueSize?: number; +} +/** Interface configuration for BatchSpanProcessor on browser */ +export interface BatchSpanProcessorBrowserConfig extends BufferConfig { + /** Disable flush when a user navigates to a new page, closes the tab or the browser, or, + * on mobile, switches to a different app. Auto flush is enabled by default. */ + disableAutoFlushOnDocumentHide?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/types.js.map new file mode 100644 index 0000000..7f93ab6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ContextManager, TextMapPropagator } from '@opentelemetry/api';\nimport { Resource } from '@opentelemetry/resources';\nimport { IdGenerator } from './IdGenerator';\nimport { Sampler } from './Sampler';\nimport { SpanProcessor } from './SpanProcessor';\n\n/**\n * TracerConfig provides an interface for configuring a Basic Tracer.\n */\nexport interface TracerConfig {\n /**\n * Sampler determines if a span should be recorded or should be a NoopSpan.\n */\n sampler?: Sampler;\n\n /** General Limits */\n generalLimits?: GeneralLimits;\n\n /** Span Limits */\n spanLimits?: SpanLimits;\n\n /** Resource associated with trace telemetry */\n resource?: Resource;\n\n /**\n * Generator of trace and span IDs\n * The default idGenerator generates random ids\n */\n idGenerator?: IdGenerator;\n\n /**\n * How long the forceFlush can run before it is cancelled.\n * The default value is 30000ms\n */\n forceFlushTimeoutMillis?: number;\n\n /**\n * List of SpanProcessor for the tracer\n */\n spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Configuration options for registering the API with the SDK.\n * Undefined values may be substituted for defaults, and null\n * values will not be registered.\n */\nexport interface SDKRegistrationConfig {\n /** Propagator to register as the global propagator */\n propagator?: TextMapPropagator | null;\n\n /** Context manager to register as the global context manager */\n contextManager?: ContextManager | null;\n}\n\n/** Global configuration limits of trace service */\nexport interface GeneralLimits {\n /** attributeValueLengthLimit is maximum allowed attribute value size */\n attributeValueLengthLimit?: number;\n /** attributeCountLimit is number of attributes per trace */\n attributeCountLimit?: number;\n}\n\n/** Global configuration of trace service */\nexport interface SpanLimits {\n /** attributeValueLengthLimit is maximum allowed attribute value size */\n attributeValueLengthLimit?: number;\n /** attributeCountLimit is number of attributes per span */\n attributeCountLimit?: number;\n /** linkCountLimit is number of links per span */\n linkCountLimit?: number;\n /** eventCountLimit is number of message events per span */\n eventCountLimit?: number;\n /** attributePerEventCountLimit is the maximum number of attributes allowed per span event */\n attributePerEventCountLimit?: number;\n /** attributePerLinkCountLimit is the maximum number of attributes allowed per span link */\n attributePerLinkCountLimit?: number;\n}\n\n/** Interface configuration for a buffer. */\nexport interface BufferConfig {\n /** The maximum batch size of every export. It must be smaller or equal to\n * maxQueueSize. The default value is 512. */\n maxExportBatchSize?: number;\n\n /** The delay interval in milliseconds between two consecutive exports.\n * The default value is 5000ms. */\n scheduledDelayMillis?: number;\n\n /** How long the export can run before it is cancelled.\n * The default value is 30000ms */\n exportTimeoutMillis?: number;\n\n /** The maximum queue size. After the size is reached spans are dropped.\n * The default value is 2048. */\n maxQueueSize?: number;\n}\n\n/** Interface configuration for BatchSpanProcessor on browser */\nexport interface BatchSpanProcessorBrowserConfig extends BufferConfig {\n /** Disable flush when a user navigates to a new page, closes the tab or the browser, or,\n * on mobile, switches to a different app. Auto flush is enabled by default. */\n disableAutoFlushOnDocumentHide?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/utility.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/utility.d.ts new file mode 100644 index 0000000..7ec2d28 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/utility.d.ts @@ -0,0 +1,20 @@ +import { Sampler } from './Sampler'; +import { SpanLimits, TracerConfig, GeneralLimits } from './types'; +export declare const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128; +export declare const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT: number; +/** + * Function to merge Default configuration (as specified in './config') with + * user provided configurations. + */ +export declare function mergeConfig(userConfig: TracerConfig): TracerConfig & { + sampler: Sampler; + spanLimits: SpanLimits; + generalLimits: GeneralLimits; +}; +/** + * When general limits are provided and model specific limits are not, + * configures the model specific limits by using the values from the general ones. + * @param userConfig User provided tracer configuration + */ +export declare function reconfigureLimits(userConfig: TracerConfig): TracerConfig; +//# sourceMappingURL=utility.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/utility.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/utility.js new file mode 100644 index 0000000..dbaca80 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/utility.js @@ -0,0 +1,61 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { buildSamplerFromEnv, loadDefaultConfig } from './config'; +import { getNumberFromEnv } from '@opentelemetry/core'; +export const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128; +export const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity; +/** + * Function to merge Default configuration (as specified in './config') with + * user provided configurations. + */ +export function mergeConfig(userConfig) { + const perInstanceDefaults = { + sampler: buildSamplerFromEnv(), + }; + const DEFAULT_CONFIG = loadDefaultConfig(); + const target = Object.assign({}, DEFAULT_CONFIG, perInstanceDefaults, userConfig); + target.generalLimits = Object.assign({}, DEFAULT_CONFIG.generalLimits, userConfig.generalLimits || {}); + target.spanLimits = Object.assign({}, DEFAULT_CONFIG.spanLimits, userConfig.spanLimits || {}); + return target; +} +/** + * When general limits are provided and model specific limits are not, + * configures the model specific limits by using the values from the general ones. + * @param userConfig User provided tracer configuration + */ +export function reconfigureLimits(userConfig) { + const spanLimits = Object.assign({}, userConfig.spanLimits); + /** + * Reassign span attribute count limit to use first non null value defined by user or use default value + */ + spanLimits.attributeCountLimit = + userConfig.spanLimits?.attributeCountLimit ?? + userConfig.generalLimits?.attributeCountLimit ?? + getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? + getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? + DEFAULT_ATTRIBUTE_COUNT_LIMIT; + /** + * Reassign span attribute value length limit to use first non null value defined by user or use default value + */ + spanLimits.attributeValueLengthLimit = + userConfig.spanLimits?.attributeValueLengthLimit ?? + userConfig.generalLimits?.attributeValueLengthLimit ?? + getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? + getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? + DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT; + return Object.assign({}, userConfig, { spanLimits }); +} +//# sourceMappingURL=utility.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/utility.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/utility.js.map new file mode 100644 index 0000000..9bcc76f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/utility.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/utility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AACjD,MAAM,CAAC,MAAM,oCAAoC,GAAG,QAAQ,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,UAAwB;IAKlD,MAAM,mBAAmB,GAA0B;QACjD,OAAO,EAAE,mBAAmB,EAAE;KAC/B,CAAC;IAEF,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,EAAE,EACF,cAAc,EACd,mBAAmB,EACnB,UAAU,CACX,CAAC;IAEF,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAClC,EAAE,EACF,cAAc,CAAC,aAAa,EAC5B,UAAU,CAAC,aAAa,IAAI,EAAE,CAC/B,CAAC;IAEF,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAC/B,EAAE,EACF,cAAc,CAAC,UAAU,EACzB,UAAU,CAAC,UAAU,IAAI,EAAE,CAC5B,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAwB;IACxD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAE5D;;OAEG;IACH,UAAU,CAAC,mBAAmB;QAC5B,UAAU,CAAC,UAAU,EAAE,mBAAmB;YAC1C,UAAU,CAAC,aAAa,EAAE,mBAAmB;YAC7C,gBAAgB,CAAC,iCAAiC,CAAC;YACnD,gBAAgB,CAAC,4BAA4B,CAAC;YAC9C,6BAA6B,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,yBAAyB;QAClC,UAAU,CAAC,UAAU,EAAE,yBAAyB;YAChD,UAAU,CAAC,aAAa,EAAE,yBAAyB;YACnD,gBAAgB,CAAC,wCAAwC,CAAC;YAC1D,gBAAgB,CAAC,mCAAmC,CAAC;YACrD,oCAAoC,CAAC;IAEvC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AACvD,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { buildSamplerFromEnv, loadDefaultConfig } from './config';\nimport { Sampler } from './Sampler';\nimport { SpanLimits, TracerConfig, GeneralLimits } from './types';\nimport { getNumberFromEnv } from '@opentelemetry/core';\n\nexport const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\nexport const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\n\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nexport function mergeConfig(userConfig: TracerConfig): TracerConfig & {\n sampler: Sampler;\n spanLimits: SpanLimits;\n generalLimits: GeneralLimits;\n} {\n const perInstanceDefaults: Partial = {\n sampler: buildSamplerFromEnv(),\n };\n\n const DEFAULT_CONFIG = loadDefaultConfig();\n\n const target = Object.assign(\n {},\n DEFAULT_CONFIG,\n perInstanceDefaults,\n userConfig\n );\n\n target.generalLimits = Object.assign(\n {},\n DEFAULT_CONFIG.generalLimits,\n userConfig.generalLimits || {}\n );\n\n target.spanLimits = Object.assign(\n {},\n DEFAULT_CONFIG.spanLimits,\n userConfig.spanLimits || {}\n );\n\n return target;\n}\n\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 */\nexport function reconfigureLimits(userConfig: TracerConfig): TracerConfig {\n const spanLimits = Object.assign({}, userConfig.spanLimits);\n\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 getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ??\n DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n\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 getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n\n return Object.assign({}, userConfig, { spanLimits });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.d.ts new file mode 100644 index 0000000..4539690 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "2.5.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.js new file mode 100644 index 0000000..fabcf00 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '2.5.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.js.map new file mode 100644 index 0000000..277b52a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.5.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.d.ts new file mode 100644 index 0000000..93e5f22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.d.ts @@ -0,0 +1,24 @@ +import { TracerProvider, Tracer as ApiTracer } from '@opentelemetry/api'; +import { TracerConfig } from './types'; +export declare enum ForceFlushState { + 'resolved' = 0, + 'timeout' = 1, + 'error' = 2, + 'unresolved' = 3 +} +/** + * This class represents a basic tracer provider which platform libraries can extend + */ +export declare class BasicTracerProvider implements TracerProvider { + private readonly _config; + private readonly _tracers; + private readonly _resource; + private readonly _activeSpanProcessor; + constructor(config?: TracerConfig); + getTracer(name: string, version?: string, options?: { + schemaUrl?: string; + }): ApiTracer; + forceFlush(): Promise; + shutdown(): Promise; +} +//# sourceMappingURL=BasicTracerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js new file mode 100644 index 0000000..baa4190 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js @@ -0,0 +1,104 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BasicTracerProvider = exports.ForceFlushState = void 0; +const core_1 = require("@opentelemetry/core"); +const resources_1 = require("@opentelemetry/resources"); +const Tracer_1 = require("./Tracer"); +const config_1 = require("./config"); +const MultiSpanProcessor_1 = require("./MultiSpanProcessor"); +const utility_1 = require("./utility"); +var ForceFlushState; +(function (ForceFlushState) { + ForceFlushState[ForceFlushState["resolved"] = 0] = "resolved"; + ForceFlushState[ForceFlushState["timeout"] = 1] = "timeout"; + ForceFlushState[ForceFlushState["error"] = 2] = "error"; + ForceFlushState[ForceFlushState["unresolved"] = 3] = "unresolved"; +})(ForceFlushState = exports.ForceFlushState || (exports.ForceFlushState = {})); +/** + * This class represents a basic tracer provider which platform libraries can extend + */ +class BasicTracerProvider { + _config; + _tracers = new Map(); + _resource; + _activeSpanProcessor; + constructor(config = {}) { + const mergedConfig = (0, core_1.merge)({}, (0, config_1.loadDefaultConfig)(), (0, utility_1.reconfigureLimits)(config)); + this._resource = mergedConfig.resource ?? (0, resources_1.defaultResource)(); + this._config = Object.assign({}, mergedConfig, { + resource: this._resource, + }); + const spanProcessors = []; + if (config.spanProcessors?.length) { + spanProcessors.push(...config.spanProcessors); + } + this._activeSpanProcessor = new MultiSpanProcessor_1.MultiSpanProcessor(spanProcessors); + } + getTracer(name, version, options) { + const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`; + if (!this._tracers.has(key)) { + this._tracers.set(key, new Tracer_1.Tracer({ name, version, schemaUrl: options?.schemaUrl }, this._config, this._resource, this._activeSpanProcessor)); + } + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return this._tracers.get(key); + } + forceFlush() { + const timeout = this._config.forceFlushTimeoutMillis; + const promises = this._activeSpanProcessor['_spanProcessors'].map((spanProcessor) => { + return new Promise(resolve => { + let state; + const timeoutInterval = setTimeout(() => { + resolve(new Error(`Span processor did not completed within timeout period of ${timeout} ms`)); + state = ForceFlushState.timeout; + }, timeout); + spanProcessor + .forceFlush() + .then(() => { + clearTimeout(timeoutInterval); + if (state !== ForceFlushState.timeout) { + state = ForceFlushState.resolved; + resolve(state); + } + }) + .catch(error => { + clearTimeout(timeoutInterval); + state = ForceFlushState.error; + resolve(error); + }); + }); + }); + return new Promise((resolve, reject) => { + Promise.all(promises) + .then(results => { + const errors = results.filter(result => result !== ForceFlushState.resolved); + if (errors.length > 0) { + reject(errors); + } + else { + resolve(); + } + }) + .catch(error => reject([error])); + }); + } + shutdown() { + return this._activeSpanProcessor.shutdown(); + } +} +exports.BasicTracerProvider = BasicTracerProvider; +//# sourceMappingURL=BasicTracerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js.map new file mode 100644 index 0000000..9985600 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BasicTracerProvider.js","sourceRoot":"","sources":["../../src/BasicTracerProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,8CAA4C;AAC5C,wDAAqE;AAErE,qCAAkC;AAClC,qCAA6C;AAC7C,6DAA0D;AAE1D,uCAA8C;AAE9C,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,6DAAU,CAAA;IACV,2DAAS,CAAA;IACT,uDAAO,CAAA;IACP,iEAAY,CAAA;AACd,CAAC,EALW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK1B;AAED;;GAEG;AACH,MAAa,mBAAmB;IACb,OAAO,CAAe;IACtB,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC1C,SAAS,CAAW;IACpB,oBAAoB,CAAqB;IAE1D,YAAY,SAAuB,EAAE;QACnC,MAAM,YAAY,GAAG,IAAA,YAAK,EACxB,EAAE,EACF,IAAA,0BAAiB,GAAE,EACnB,IAAA,2BAAiB,EAAC,MAAM,CAAC,CAC1B,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,QAAQ,IAAI,IAAA,2BAAe,GAAE,CAAC;QAE5D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE;YAC7C,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAoB,EAAE,CAAC;QAE3C,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE;YACjC,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,uCAAkB,CAAC,cAAc,CAAC,CAAC;IACrE,CAAC;IAED,SAAS,CACP,IAAY,EACZ,OAAgB,EAChB,OAAgC;QAEhC,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,GAAG,EACH,IAAI,eAAM,CACR,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAChD,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,oBAAoB,CAC1B,CACF,CAAC;SACH;QAED,oEAAoE;QACpE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACjC,CAAC;IAED,UAAU;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAC/D,CAAC,aAA4B,EAAE,EAAE;YAC/B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3B,IAAI,KAAsB,CAAC;gBAC3B,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtC,OAAO,CACL,IAAI,KAAK,CACP,6DAA6D,OAAO,KAAK,CAC1E,CACF,CAAC;oBACF,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC;gBAClC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAEZ,aAAa;qBACV,UAAU,EAAE;qBACZ,IAAI,CAAC,GAAG,EAAE;oBACT,YAAY,CAAC,eAAe,CAAC,CAAC;oBAC9B,IAAI,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE;wBACrC,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC;wBACjC,OAAO,CAAC,KAAK,CAAC,CAAC;qBAChB;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,KAAK,CAAC,EAAE;oBACb,YAAY,CAAC,eAAe,CAAC,CAAC;oBAC9B,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;oBAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;iBAClB,IAAI,CAAC,OAAO,CAAC,EAAE;gBACd,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,eAAe,CAAC,QAAQ,CAC9C,CAAC;gBACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACrB,MAAM,CAAC,MAAM,CAAC,CAAC;iBAChB;qBAAM;oBACL,OAAO,EAAE,CAAC;iBACX;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;CACF;AArGD,kDAqGC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, Tracer as ApiTracer } from '@opentelemetry/api';\nimport { merge } from '@opentelemetry/core';\nimport { defaultResource, Resource } from '@opentelemetry/resources';\nimport { SpanProcessor } from './SpanProcessor';\nimport { Tracer } from './Tracer';\nimport { loadDefaultConfig } from './config';\nimport { MultiSpanProcessor } from './MultiSpanProcessor';\nimport { TracerConfig } from './types';\nimport { reconfigureLimits } from './utility';\n\nexport enum ForceFlushState {\n 'resolved',\n 'timeout',\n 'error',\n 'unresolved',\n}\n\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nexport class BasicTracerProvider implements TracerProvider {\n private readonly _config: TracerConfig;\n private readonly _tracers: Map = new Map();\n private readonly _resource: Resource;\n private readonly _activeSpanProcessor: MultiSpanProcessor;\n\n constructor(config: TracerConfig = {}) {\n const mergedConfig = merge(\n {},\n loadDefaultConfig(),\n reconfigureLimits(config)\n );\n this._resource = mergedConfig.resource ?? defaultResource();\n\n this._config = Object.assign({}, mergedConfig, {\n resource: this._resource,\n });\n\n const spanProcessors: SpanProcessor[] = [];\n\n if (config.spanProcessors?.length) {\n spanProcessors.push(...config.spanProcessors);\n }\n\n this._activeSpanProcessor = new MultiSpanProcessor(spanProcessors);\n }\n\n getTracer(\n name: string,\n version?: string,\n options?: { schemaUrl?: string }\n ): ApiTracer {\n const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(\n key,\n new Tracer(\n { name, version, schemaUrl: options?.schemaUrl },\n this._config,\n this._resource,\n this._activeSpanProcessor\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key)!;\n }\n\n forceFlush(): Promise {\n const timeout = this._config.forceFlushTimeoutMillis;\n const promises = this._activeSpanProcessor['_spanProcessors'].map(\n (spanProcessor: SpanProcessor) => {\n return new Promise(resolve => {\n let state: ForceFlushState;\n const timeoutInterval = setTimeout(() => {\n resolve(\n new Error(\n `Span processor did not completed within timeout period of ${timeout} ms`\n )\n );\n state = ForceFlushState.timeout;\n }, timeout);\n\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 );\n\n return new Promise((resolve, reject) => {\n Promise.all(promises)\n .then(results => {\n const errors = results.filter(\n result => result !== ForceFlushState.resolved\n );\n if (errors.length > 0) {\n reject(errors);\n } else {\n resolve();\n }\n })\n .catch(error => reject([error]));\n });\n }\n\n shutdown(): Promise {\n return this._activeSpanProcessor.shutdown();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.d.ts new file mode 100644 index 0000000..ee18577 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.d.ts @@ -0,0 +1,8 @@ +/** IdGenerator provides an interface for generating Trace Id and Span Id */ +export interface IdGenerator { + /** Returns a trace ID composed of 32 lowercase hex characters. */ + generateTraceId(): string; + /** Returns a span ID composed of 16 lowercase hex characters. */ + generateSpanId(): string; +} +//# sourceMappingURL=IdGenerator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.js new file mode 100644 index 0000000..3e8edd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=IdGenerator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.js.map new file mode 100644 index 0000000..b6b9d6f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IdGenerator.js","sourceRoot":"","sources":["../../src/IdGenerator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/** IdGenerator provides an interface for generating Trace Id and Span Id */\nexport interface IdGenerator {\n /** Returns a trace ID composed of 32 lowercase hex characters. */\n generateTraceId(): string;\n /** Returns a span ID composed of 16 lowercase hex characters. */\n generateSpanId(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.d.ts new file mode 100644 index 0000000..29b3f1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.d.ts @@ -0,0 +1,18 @@ +import { Context } from '@opentelemetry/api'; +import { ReadableSpan } from './export/ReadableSpan'; +import { Span } from './Span'; +import { SpanProcessor } from './SpanProcessor'; +/** + * Implementation of the {@link SpanProcessor} that simply forwards all + * received events to a list of {@link SpanProcessor}s. + */ +export declare class MultiSpanProcessor implements SpanProcessor { + private readonly _spanProcessors; + constructor(spanProcessors: SpanProcessor[]); + forceFlush(): Promise; + onStart(span: Span, context: Context): void; + onEnding(span: Span): void; + onEnd(span: ReadableSpan): void; + shutdown(): Promise; +} +//# sourceMappingURL=MultiSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.js new file mode 100644 index 0000000..8641df2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.js @@ -0,0 +1,75 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MultiSpanProcessor = void 0; +const core_1 = require("@opentelemetry/core"); +/** + * Implementation of the {@link SpanProcessor} that simply forwards all + * received events to a list of {@link SpanProcessor}s. + */ +class MultiSpanProcessor { + _spanProcessors; + constructor(spanProcessors) { + this._spanProcessors = spanProcessors; + } + forceFlush() { + const promises = []; + for (const spanProcessor of this._spanProcessors) { + promises.push(spanProcessor.forceFlush()); + } + return new Promise(resolve => { + Promise.all(promises) + .then(() => { + resolve(); + }) + .catch(error => { + (0, core_1.globalErrorHandler)(error || new Error('MultiSpanProcessor: forceFlush failed')); + resolve(); + }); + }); + } + onStart(span, context) { + for (const spanProcessor of this._spanProcessors) { + spanProcessor.onStart(span, context); + } + } + onEnding(span) { + for (const spanProcessor of this._spanProcessors) { + if (spanProcessor.onEnding) { + spanProcessor.onEnding(span); + } + } + } + onEnd(span) { + for (const spanProcessor of this._spanProcessors) { + spanProcessor.onEnd(span); + } + } + shutdown() { + const promises = []; + for (const spanProcessor of this._spanProcessors) { + promises.push(spanProcessor.shutdown()); + } + return new Promise((resolve, reject) => { + Promise.all(promises).then(() => { + resolve(); + }, reject); + }); + } +} +exports.MultiSpanProcessor = MultiSpanProcessor; +//# sourceMappingURL=MultiSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.js.map new file mode 100644 index 0000000..3145538 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MultiSpanProcessor.js","sourceRoot":"","sources":["../../src/MultiSpanProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,8CAAyD;AAKzD;;;GAGG;AACH,MAAa,kBAAkB;IACZ,eAAe,CAAkB;IAClD,YAAY,cAA+B;QACzC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,UAAU;QACR,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;iBAClB,IAAI,CAAC,GAAG,EAAE;gBACT,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,IAAA,yBAAkB,EAChB,KAAK,IAAI,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAC5D,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAU,EAAE,OAAgB;QAClC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACtC;IACH,CAAC;IAED,QAAQ,CAAC,IAAU;QACjB,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,IAAI,aAAa,CAAC,QAAQ,EAAE;gBAC1B,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC9B;SACF;IACH,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC3B;IACH,CAAC;IAED,QAAQ;QACN,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;YAChD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9B,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,MAAM,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA1DD,gDA0DC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { Span } from './Span';\nimport { SpanProcessor } from './SpanProcessor';\n\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nexport class MultiSpanProcessor implements SpanProcessor {\n private readonly _spanProcessors: SpanProcessor[];\n constructor(spanProcessors: SpanProcessor[]) {\n this._spanProcessors = spanProcessors;\n }\n\n forceFlush(): Promise {\n const promises: Promise[] = [];\n\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 globalErrorHandler(\n error || new Error('MultiSpanProcessor: forceFlush failed')\n );\n resolve();\n });\n });\n }\n\n onStart(span: Span, context: Context): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onStart(span, context);\n }\n }\n\n onEnding(span: Span): void {\n for (const spanProcessor of this._spanProcessors) {\n if (spanProcessor.onEnding) {\n spanProcessor.onEnding(span);\n }\n }\n }\n\n onEnd(span: ReadableSpan): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onEnd(span);\n }\n }\n\n shutdown(): Promise {\n const promises: Promise[] = [];\n\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.d.ts new file mode 100644 index 0000000..ff5ceb8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.d.ts @@ -0,0 +1,70 @@ +import { Context, Link, Attributes, SpanKind, TraceState } from '@opentelemetry/api'; +/** + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +export declare enum SamplingDecision { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + NOT_RECORD = 0, + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + RECORD = 1, + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + RECORD_AND_SAMPLED = 2 +} +/** + * A sampling result contains a decision for a {@link Span} and additional + * attributes the sampler would like to added to the Span. + */ +export interface SamplingResult { + /** + * A sampling decision, refer to {@link SamplingDecision} for details. + */ + decision: SamplingDecision; + /** + * The list of attributes returned by SamplingResult MUST be immutable. + * Caller may call {@link Sampler}.shouldSample any number of times and + * can safely cache the returned value. + */ + attributes?: Readonly; + /** + * A {@link TraceState} that will be associated with the {@link Span} through + * the new {@link SpanContext}. Samplers SHOULD return the TraceState from + * the passed-in {@link Context} if they do not intend to change it. Leaving + * the value undefined will also leave the TraceState unchanged. + */ + traceState?: TraceState; +} +/** + * This interface represent a sampler. Sampling is a mechanism to control the + * noise and overhead introduced by OpenTelemetry by reducing the number of + * samples of traces collected and sent to the backend. + */ +export interface Sampler { + /** + * Checks whether span needs to be created and tracked. + * + * @param context Parent Context which may contain a span. + * @param traceId of the span to be created. It can be different from the + * traceId in the {@link SpanContext}. Typically in situations when the + * span to be created starts a new trace. + * @param spanName of the span to be created. + * @param spanKind of the span to be created. + * @param attributes Initial set of Attributes for the Span being constructed. + * @param links Collection of links that will be associated with the Span to + * be created. Typically useful for batch operations. + * @returns a {@link SamplingResult}. + */ + shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: Attributes, links: Link[]): SamplingResult; + /** Returns the sampler name or short description with the configuration. */ + toString(): string; +} +//# sourceMappingURL=Sampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.js new file mode 100644 index 0000000..ddb4b59 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.js @@ -0,0 +1,41 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SamplingDecision = void 0; +/** + * A sampling decision that determines how a {@link Span} will be recorded + * and collected. + */ +var SamplingDecision; +(function (SamplingDecision) { + /** + * `Span.isRecording() === false`, span will not be recorded and all events + * and attributes will be dropped. + */ + SamplingDecision[SamplingDecision["NOT_RECORD"] = 0] = "NOT_RECORD"; + /** + * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags} + * MUST NOT be set. + */ + SamplingDecision[SamplingDecision["RECORD"] = 1] = "RECORD"; + /** + * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags} + * MUST be set. + */ + SamplingDecision[SamplingDecision["RECORD_AND_SAMPLED"] = 2] = "RECORD_AND_SAMPLED"; +})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {})); +//# sourceMappingURL=Sampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.js.map new file mode 100644 index 0000000..37c27be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Sampler.js","sourceRoot":"","sources":["../../src/Sampler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAUH;;;GAGG;AACH,IAAY,gBAgBX;AAhBD,WAAY,gBAAgB;IAC1B;;;OAGG;IACH,mEAAU,CAAA;IACV;;;OAGG;IACH,2DAAM,CAAA;IACN;;;OAGG;IACH,mFAAkB,CAAA;AACpB,CAAC,EAhBW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAgB3B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n Link,\n Attributes,\n SpanKind,\n TraceState,\n} from '@opentelemetry/api';\n\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n\n/**\n * This interface represent a sampler. Sampling is a mechanism to control the\n * noise and overhead introduced by OpenTelemetry by reducing the number of\n * samples of traces collected and sent to the backend.\n */\nexport interface Sampler {\n /**\n * Checks whether span needs to be created and tracked.\n *\n * @param context Parent Context which may contain a span.\n * @param traceId of the span to be created. It can be different from the\n * traceId in the {@link SpanContext}. Typically in situations when the\n * span to be created starts a new trace.\n * @param spanName of the span to be created.\n * @param spanKind of the span to be created.\n * @param attributes Initial set of Attributes for the Span being constructed.\n * @param links Collection of links that will be associated with the Span to\n * be created. Typically useful for batch operations.\n * @returns a {@link SamplingResult}.\n */\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult;\n\n /** Returns the sampler name or short description with the configuration. */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.d.ts new file mode 100644 index 0000000..85355d9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.d.ts @@ -0,0 +1,99 @@ +import { Context, Exception, HrTime, Link, Span as APISpan, Attributes, AttributeValue, SpanContext, SpanKind, SpanStatus, TimeInput } from '@opentelemetry/api'; +import { InstrumentationScope } from '@opentelemetry/core'; +import { Resource } from '@opentelemetry/resources'; +import { ReadableSpan } from './export/ReadableSpan'; +import { SpanProcessor } from './SpanProcessor'; +import { TimedEvent } from './TimedEvent'; +import { SpanLimits } from './types'; +/** + * This type provides the properties of @link{ReadableSpan} at the same time + * of the Span API + */ +export type Span = APISpan & ReadableSpan; +interface SpanOptions { + resource: Resource; + scope: InstrumentationScope; + context: Context; + spanContext: SpanContext; + name: string; + kind: SpanKind; + parentSpanContext?: SpanContext; + links?: Link[]; + startTime?: TimeInput; + attributes?: Attributes; + spanLimits: SpanLimits; + spanProcessor: SpanProcessor; +} +/** + * This class represents a span. + */ +export declare class SpanImpl implements Span { + private readonly _spanContext; + readonly kind: SpanKind; + readonly parentSpanContext?: SpanContext; + readonly attributes: Attributes; + readonly links: Link[]; + readonly events: TimedEvent[]; + readonly startTime: HrTime; + readonly resource: Resource; + readonly instrumentationScope: InstrumentationScope; + private _droppedAttributesCount; + private _droppedEventsCount; + private _droppedLinksCount; + name: string; + status: SpanStatus; + endTime: HrTime; + private _ended; + private _duration; + private readonly _spanProcessor; + private readonly _spanLimits; + private readonly _attributeValueLengthLimit; + private readonly _performanceStartTime; + private readonly _performanceOffset; + private readonly _startTimeProvided; + /** + * Constructs a new SpanImpl instance. + */ + constructor(opts: SpanOptions); + spanContext(): SpanContext; + setAttribute(key: string, value?: AttributeValue): this; + setAttributes(attributes: Attributes): this; + /** + * + * @param name Span Name + * @param [attributesOrStartTime] Span attributes or start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [timeStamp] Specified time stamp for the event + */ + addEvent(name: string, attributesOrStartTime?: Attributes | TimeInput, timeStamp?: TimeInput): this; + addLink(link: Link): this; + addLinks(links: Link[]): this; + setStatus(status: SpanStatus): this; + updateName(name: string): this; + end(endTime?: TimeInput): void; + private _getTime; + isRecording(): boolean; + recordException(exception: Exception, time?: TimeInput): void; + get duration(): HrTime; + get ended(): boolean; + get droppedAttributesCount(): number; + get droppedEventsCount(): number; + get droppedLinksCount(): number; + private _isSpanEnded; + private _truncateToLimitUtil; + /** + * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then + * return string with truncated to {@code attributeValueLengthLimit} characters + * + * If the given attribute value is array of strings then + * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters + * + * Otherwise return same Attribute {@code value} + * + * @param value Attribute value + * @returns truncated attribute value if required, otherwise same value + */ + private _truncateToSize; +} +export {}; +//# sourceMappingURL=Span.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.js new file mode 100644 index 0000000..0eff0db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.js @@ -0,0 +1,315 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SpanImpl = void 0; +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); +const enums_1 = require("./enums"); +/** + * This class represents a span. + */ +class SpanImpl { + // Below properties are included to implement ReadableSpan for export + // purposes but are not intended to be written-to directly. + _spanContext; + kind; + parentSpanContext; + attributes = {}; + links = []; + events = []; + startTime; + resource; + instrumentationScope; + _droppedAttributesCount = 0; + _droppedEventsCount = 0; + _droppedLinksCount = 0; + name; + status = { + code: api_1.SpanStatusCode.UNSET, + }; + endTime = [0, 0]; + _ended = false; + _duration = [-1, -1]; + _spanProcessor; + _spanLimits; + _attributeValueLengthLimit; + _performanceStartTime; + _performanceOffset; + _startTimeProvided; + /** + * Constructs a new SpanImpl instance. + */ + constructor(opts) { + const now = Date.now(); + this._spanContext = opts.spanContext; + this._performanceStartTime = core_1.otperformance.now(); + this._performanceOffset = + now - (this._performanceStartTime + core_1.otperformance.timeOrigin); + this._startTimeProvided = opts.startTime != null; + this._spanLimits = opts.spanLimits; + this._attributeValueLengthLimit = + this._spanLimits.attributeValueLengthLimit || 0; + this._spanProcessor = opts.spanProcessor; + this.name = opts.name; + this.parentSpanContext = opts.parentSpanContext; + this.kind = opts.kind; + this.links = opts.links || []; + this.startTime = this._getTime(opts.startTime ?? now); + this.resource = opts.resource; + this.instrumentationScope = opts.scope; + if (opts.attributes != null) { + this.setAttributes(opts.attributes); + } + this._spanProcessor.onStart(this, opts.context); + } + spanContext() { + return this._spanContext; + } + setAttribute(key, value) { + if (value == null || this._isSpanEnded()) + return this; + if (key.length === 0) { + api_1.diag.warn(`Invalid attribute key: ${key}`); + return this; + } + if (!(0, core_1.isAttributeValue)(value)) { + api_1.diag.warn(`Invalid attribute value set for key: ${key}`); + return this; + } + const { attributeCountLimit } = this._spanLimits; + if (attributeCountLimit !== undefined && + Object.keys(this.attributes).length >= attributeCountLimit && + !Object.prototype.hasOwnProperty.call(this.attributes, key)) { + this._droppedAttributesCount++; + return this; + } + this.attributes[key] = this._truncateToSize(value); + return this; + } + setAttributes(attributes) { + for (const [k, v] of Object.entries(attributes)) { + this.setAttribute(k, v); + } + return this; + } + /** + * + * @param name Span Name + * @param [attributesOrStartTime] Span attributes or start time + * if type is {@type TimeInput} and 3rd param is undefined + * @param [timeStamp] Specified time stamp for the event + */ + addEvent(name, attributesOrStartTime, timeStamp) { + if (this._isSpanEnded()) + return this; + const { eventCountLimit } = this._spanLimits; + if (eventCountLimit === 0) { + api_1.diag.warn('No events allowed.'); + this._droppedEventsCount++; + return this; + } + if (eventCountLimit !== undefined && + this.events.length >= eventCountLimit) { + if (this._droppedEventsCount === 0) { + api_1.diag.debug('Dropping extra events.'); + } + this.events.shift(); + this._droppedEventsCount++; + } + if ((0, core_1.isTimeInput)(attributesOrStartTime)) { + if (!(0, core_1.isTimeInput)(timeStamp)) { + timeStamp = attributesOrStartTime; + } + attributesOrStartTime = undefined; + } + const attributes = (0, core_1.sanitizeAttributes)(attributesOrStartTime); + this.events.push({ + name, + attributes, + time: this._getTime(timeStamp), + droppedAttributesCount: 0, + }); + return this; + } + addLink(link) { + this.links.push(link); + return this; + } + addLinks(links) { + this.links.push(...links); + return this; + } + setStatus(status) { + if (this._isSpanEnded()) + return this; + this.status = { ...status }; + // When using try-catch, the caught "error" is of type `any`. When then assigning `any` to `status.message`, + // TypeScript will not error. While this can happen during use of any API, it is more common on Span#setStatus() + // as it's likely used in a catch-block. Therefore, we validate if `status.message` is actually a string, null, or + // undefined to avoid an incorrect type causing issues downstream. + if (this.status.message != null && typeof status.message !== 'string') { + api_1.diag.warn(`Dropping invalid status.message of type '${typeof status.message}', expected 'string'`); + delete this.status.message; + } + return this; + } + updateName(name) { + if (this._isSpanEnded()) + return this; + this.name = name; + return this; + } + end(endTime) { + if (this._isSpanEnded()) { + api_1.diag.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`); + return; + } + this.endTime = this._getTime(endTime); + this._duration = (0, core_1.hrTimeDuration)(this.startTime, this.endTime); + if (this._duration[0] < 0) { + api_1.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) { + api_1.diag.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`); + } + if (this._spanProcessor.onEnding) { + this._spanProcessor.onEnding(this); + } + this._ended = true; + this._spanProcessor.onEnd(this); + } + _getTime(inp) { + if (typeof inp === 'number' && inp <= core_1.otperformance.now()) { + // must be a performance timestamp + // apply correction and convert to hrtime + return (0, core_1.hrTime)(inp + this._performanceOffset); + } + if (typeof inp === 'number') { + return (0, core_1.millisToHrTime)(inp); + } + if (inp instanceof Date) { + return (0, core_1.millisToHrTime)(inp.getTime()); + } + if ((0, core_1.isTimeInputHrTime)(inp)) { + return inp; + } + if (this._startTimeProvided) { + // if user provided a time for the start manually + // we can't use duration to calculate event/end times + return (0, core_1.millisToHrTime)(Date.now()); + } + const msDuration = core_1.otperformance.now() - this._performanceStartTime; + return (0, core_1.addHrTimes)(this.startTime, (0, core_1.millisToHrTime)(msDuration)); + } + isRecording() { + return this._ended === false; + } + recordException(exception, time) { + const attributes = {}; + if (typeof exception === 'string') { + attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE] = exception; + } + else if (exception) { + if (exception.code) { + attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE] = exception.code.toString(); + } + else if (exception.name) { + attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE] = exception.name; + } + if (exception.message) { + attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE] = exception.message; + } + if (exception.stack) { + attributes[semantic_conventions_1.ATTR_EXCEPTION_STACKTRACE] = exception.stack; + } + } + // these are minimum requirements from spec + if (attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE] || attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE]) { + this.addEvent(enums_1.ExceptionEventName, attributes, time); + } + else { + api_1.diag.warn(`Failed to record an exception ${exception}`); + } + } + 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) { + const error = new Error(`Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`); + api_1.diag.warn(`Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`, error); + } + return this._ended; + } + // Utility function to truncate given value within size + // for value type of string, will truncate to given limit + // for type of non-string, will return same value + _truncateToLimitUtil(value, limit) { + if (value.length <= limit) { + return value; + } + return value.substring(0, limit); + } + /** + * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then + * return string with truncated to {@code attributeValueLengthLimit} characters + * + * If the given attribute value is array of strings then + * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters + * + * Otherwise return same Attribute {@code value} + * + * @param value Attribute value + * @returns truncated attribute value if required, otherwise same value + */ + _truncateToSize(value) { + const limit = this._attributeValueLengthLimit; + // Check limit + if (limit <= 0) { + // Negative values are invalid, so do not truncate + api_1.diag.warn(`Attribute value limit must be positive, got ${limit}`); + return value; + } + // String + if (typeof value === 'string') { + return this._truncateToLimitUtil(value, limit); + } + // Array of strings + if (Array.isArray(value)) { + return value.map(val => typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val); + } + // Other types, no need to apply value length limit + return value; + } +} +exports.SpanImpl = SpanImpl; +//# sourceMappingURL=Span.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.js.map new file mode 100644 index 0000000..14b3d9a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Span.js","sourceRoot":"","sources":["../../src/Span.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAc4B;AAC5B,8CAW6B;AAE7B,8EAI6C;AAE7C,mCAA6C;AA0B7C;;GAEG;AACH,MAAa,QAAQ;IACnB,qEAAqE;IACrE,2DAA2D;IAC1C,YAAY,CAAc;IAClC,IAAI,CAAW;IACf,iBAAiB,CAAe;IAChC,UAAU,GAAe,EAAE,CAAC;IAC5B,KAAK,GAAW,EAAE,CAAC;IACnB,MAAM,GAAiB,EAAE,CAAC;IAC1B,SAAS,CAAS;IAClB,QAAQ,CAAW;IACnB,oBAAoB,CAAuB;IAE5C,uBAAuB,GAAG,CAAC,CAAC;IAC5B,mBAAmB,GAAW,CAAC,CAAC;IAChC,kBAAkB,GAAW,CAAC,CAAC;IAEvC,IAAI,CAAS;IACb,MAAM,GAAe;QACnB,IAAI,EAAE,oBAAc,CAAC,KAAK;KAC3B,CAAC;IACF,OAAO,GAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB,MAAM,GAAG,KAAK,CAAC;IACf,SAAS,GAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,cAAc,CAAgB;IAC9B,WAAW,CAAa;IACxB,0BAA0B,CAAS;IAEnC,qBAAqB,CAAS;IAC9B,kBAAkB,CAAS;IAC3B,kBAAkB,CAAU;IAE7C;;OAEG;IACH,YAAY,IAAiB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,qBAAqB,GAAG,oBAAa,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,kBAAkB;YACrB,GAAG,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,oBAAa,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,0BAA0B;YAC7B,IAAI,CAAC,WAAW,CAAC,yBAAyB,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QAEzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACrC;QAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAGD,YAAY,CAAC,GAAW,EAAE,KAAc;QACtC,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO,IAAI,CAAC;QACtD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YACpB,UAAI,CAAC,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;SACb;QACD,IAAI,CAAC,IAAA,uBAAgB,EAAC,KAAK,CAAC,EAAE;YAC5B,UAAI,CAAC,IAAI,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;SACb;QAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAEjD,IACE,mBAAmB,KAAK,SAAS;YACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,mBAAmB;YAC1D,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAC3D;YACA,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;SACb;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,UAAsB;QAClC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC/C,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CACN,IAAY,EACZ,qBAA8C,EAC9C,SAAqB;QAErB,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO,IAAI,CAAC;QAErC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAE7C,IAAI,eAAe,KAAK,CAAC,EAAE;YACzB,UAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAChC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;SACb;QAED,IACE,eAAe,KAAK,SAAS;YAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,eAAe,EACrC;YACA,IAAI,IAAI,CAAC,mBAAmB,KAAK,CAAC,EAAE;gBAClC,UAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;aACtC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;QAED,IAAI,IAAA,kBAAW,EAAC,qBAAqB,CAAC,EAAE;YACtC,IAAI,CAAC,IAAA,kBAAW,EAAC,SAAS,CAAC,EAAE;gBAC3B,SAAS,GAAG,qBAAqB,CAAC;aACnC;YACD,qBAAqB,GAAG,SAAS,CAAC;SACnC;QAED,MAAM,UAAU,GAAG,IAAA,yBAAkB,EAAC,qBAAqB,CAAC,CAAC;QAE7D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,IAAI;YACJ,UAAU;YACV,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC9B,sBAAsB,EAAE,CAAC;SAC1B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAU;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,MAAkB;QAC1B,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAE5B,4GAA4G;QAC5G,gHAAgH;QAChH,kHAAkH;QAClH,kEAAkE;QAClE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE;YACrE,UAAI,CAAC,IAAI,CACP,4CAA4C,OAAO,MAAM,CAAC,OAAO,sBAAsB,CACxF,CAAC;YACF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;SAC5B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,OAAmB;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,UAAI,CAAC,KAAK,CACR,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,4CAA4C,CAClH,CAAC;YACF,OAAO;SACR;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;YACzB,UAAI,CAAC,IAAI,CACP,qFAAqF,EACrF,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,CACb,CAAC;YACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAY,CAAC;YAChD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACzB;QAED,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE;YAChC,UAAI,CAAC,IAAI,CACP,WAAW,IAAI,CAAC,mBAAmB,yCAAyC,CAC7E,CAAC;SACH;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACpC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEO,QAAQ,CAAC,GAAe;QAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,oBAAa,CAAC,GAAG,EAAE,EAAE;YACzD,kCAAkC;YAClC,yCAAyC;YACzC,OAAO,IAAA,aAAM,EAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAC9C;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,IAAA,qBAAc,EAAC,GAAG,CAAC,CAAC;SAC5B;QAED,IAAI,GAAG,YAAY,IAAI,EAAE;YACvB,OAAO,IAAA,qBAAc,EAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;SACtC;QAED,IAAI,IAAA,wBAAiB,EAAC,GAAG,CAAC,EAAE;YAC1B,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,iDAAiD;YACjD,qDAAqD;YACrD,OAAO,IAAA,qBAAc,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SACnC;QAED,MAAM,UAAU,GAAG,oBAAa,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACpE,OAAO,IAAA,iBAAU,EAAC,IAAI,CAAC,SAAS,EAAE,IAAA,qBAAc,EAAC,UAAU,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC;IAC/B,CAAC;IAED,eAAe,CAAC,SAAoB,EAAE,IAAgB;QACpD,MAAM,UAAU,GAAe,EAAE,CAAC;QAClC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACjC,UAAU,CAAC,6CAAsB,CAAC,GAAG,SAAS,CAAC;SAChD;aAAM,IAAI,SAAS,EAAE;YACpB,IAAI,SAAS,CAAC,IAAI,EAAE;gBAClB,UAAU,CAAC,0CAAmB,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;aAC7D;iBAAM,IAAI,SAAS,CAAC,IAAI,EAAE;gBACzB,UAAU,CAAC,0CAAmB,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;aAClD;YACD,IAAI,SAAS,CAAC,OAAO,EAAE;gBACrB,UAAU,CAAC,6CAAsB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;aACxD;YACD,IAAI,SAAS,CAAC,KAAK,EAAE;gBACnB,UAAU,CAAC,gDAAyB,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;aACzD;SACF;QAED,2CAA2C;QAC3C,IAAI,UAAU,CAAC,0CAAmB,CAAC,IAAI,UAAU,CAAC,6CAAsB,CAAC,EAAE;YACzE,IAAI,CAAC,QAAQ,CAAC,0BAAkB,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;SACrD;aAAM;YACL,UAAI,CAAC,IAAI,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;SACzD;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,+CAA+C,IAAI,CAAC,YAAY,CAAC,OAAO,aAAa,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CACjH,CAAC;YAEF,UAAI,CAAC,IAAI,CACP,wDAAwD,IAAI,CAAC,YAAY,CAAC,OAAO,aAAa,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,EACzH,KAAK,CACN,CAAC;SACH;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,uDAAuD;IACvD,yDAAyD;IACzD,iDAAiD;IACzC,oBAAoB,CAAC,KAAa,EAAE,KAAa;QACvD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE;YACzB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;OAWG;IACK,eAAe,CAAC,KAAqB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC;QAC9C,cAAc;QACd,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,kDAAkD;YAClD,UAAI,CAAC,IAAI,CAAC,+CAA+C,KAAK,EAAE,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC;SACd;QAED,SAAS;QACT,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAChD;QAED,mBAAmB;QACnB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAQ,KAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAC7B,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CACtE,CAAC;SACH;QAED,mDAAmD;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AArWD,4BAqWC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n diag,\n Exception,\n HrTime,\n Link,\n Span as APISpan,\n Attributes,\n AttributeValue,\n SpanContext,\n SpanKind,\n SpanStatus,\n SpanStatusCode,\n TimeInput,\n} from '@opentelemetry/api';\nimport {\n addHrTimes,\n millisToHrTime,\n hrTime,\n hrTimeDuration,\n InstrumentationScope,\n isAttributeValue,\n isTimeInput,\n isTimeInputHrTime,\n otperformance,\n sanitizeAttributes,\n} from '@opentelemetry/core';\nimport { Resource } from '@opentelemetry/resources';\nimport {\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n} from '@opentelemetry/semantic-conventions';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { ExceptionEventName } from './enums';\nimport { SpanProcessor } from './SpanProcessor';\nimport { TimedEvent } from './TimedEvent';\nimport { SpanLimits } from './types';\n\n/**\n * This type provides the properties of @link{ReadableSpan} at the same time\n * of the Span API\n */\nexport type Span = APISpan & ReadableSpan;\n\ninterface SpanOptions {\n resource: Resource;\n scope: InstrumentationScope;\n context: Context;\n spanContext: SpanContext;\n name: string;\n kind: SpanKind;\n parentSpanContext?: SpanContext;\n links?: Link[];\n startTime?: TimeInput;\n attributes?: Attributes;\n spanLimits: SpanLimits;\n spanProcessor: SpanProcessor;\n}\n\n/**\n * This class represents a span.\n */\nexport class SpanImpl implements Span {\n // Below properties are included to implement ReadableSpan for export\n // purposes but are not intended to be written-to directly.\n private readonly _spanContext: SpanContext;\n readonly kind: SpanKind;\n readonly parentSpanContext?: SpanContext;\n readonly attributes: Attributes = {};\n readonly links: Link[] = [];\n readonly events: TimedEvent[] = [];\n readonly startTime: HrTime;\n readonly resource: Resource;\n readonly instrumentationScope: InstrumentationScope;\n\n private _droppedAttributesCount = 0;\n private _droppedEventsCount: number = 0;\n private _droppedLinksCount: number = 0;\n\n name: string;\n status: SpanStatus = {\n code: SpanStatusCode.UNSET,\n };\n endTime: HrTime = [0, 0];\n private _ended = false;\n private _duration: HrTime = [-1, -1];\n private readonly _spanProcessor: SpanProcessor;\n private readonly _spanLimits: SpanLimits;\n private readonly _attributeValueLengthLimit: number;\n\n private readonly _performanceStartTime: number;\n private readonly _performanceOffset: number;\n private readonly _startTimeProvided: boolean;\n\n /**\n * Constructs a new SpanImpl instance.\n */\n constructor(opts: SpanOptions) {\n const now = Date.now();\n\n this._spanContext = opts.spanContext;\n this._performanceStartTime = otperformance.now();\n this._performanceOffset =\n now - (this._performanceStartTime + 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\n this.name = opts.name;\n this.parentSpanContext = opts.parentSpanContext;\n this.kind = opts.kind;\n this.links = opts.links || [];\n this.startTime = this._getTime(opts.startTime ?? now);\n this.resource = opts.resource;\n this.instrumentationScope = opts.scope;\n\n if (opts.attributes != null) {\n this.setAttributes(opts.attributes);\n }\n\n this._spanProcessor.onStart(this, opts.context);\n }\n\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n setAttribute(key: string, value?: AttributeValue): this;\n setAttribute(key: string, value: unknown): this {\n if (value == null || this._isSpanEnded()) return this;\n if (key.length === 0) {\n diag.warn(`Invalid attribute key: ${key}`);\n return this;\n }\n if (!isAttributeValue(value)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n return this;\n }\n\n const { attributeCountLimit } = this._spanLimits;\n\n if (\n attributeCountLimit !== undefined &&\n Object.keys(this.attributes).length >= attributeCountLimit &&\n !Object.prototype.hasOwnProperty.call(this.attributes, key)\n ) {\n this._droppedAttributesCount++;\n return this;\n }\n this.attributes[key] = this._truncateToSize(value);\n return this;\n }\n\n setAttributes(attributes: Attributes): this {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\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(\n name: string,\n attributesOrStartTime?: Attributes | TimeInput,\n timeStamp?: TimeInput\n ): this {\n if (this._isSpanEnded()) return this;\n\n const { eventCountLimit } = this._spanLimits;\n\n if (eventCountLimit === 0) {\n diag.warn('No events allowed.');\n this._droppedEventsCount++;\n return this;\n }\n\n if (\n eventCountLimit !== undefined &&\n this.events.length >= eventCountLimit\n ) {\n if (this._droppedEventsCount === 0) {\n diag.debug('Dropping extra events.');\n }\n this.events.shift();\n this._droppedEventsCount++;\n }\n\n if (isTimeInput(attributesOrStartTime)) {\n if (!isTimeInput(timeStamp)) {\n timeStamp = attributesOrStartTime;\n }\n attributesOrStartTime = undefined;\n }\n\n const attributes = sanitizeAttributes(attributesOrStartTime);\n\n this.events.push({\n name,\n attributes,\n time: this._getTime(timeStamp),\n droppedAttributesCount: 0,\n });\n return this;\n }\n\n addLink(link: Link): this {\n this.links.push(link);\n return this;\n }\n\n addLinks(links: Link[]): this {\n this.links.push(...links);\n return this;\n }\n\n setStatus(status: SpanStatus): this {\n if (this._isSpanEnded()) return this;\n this.status = { ...status };\n\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 (this.status.message != null && typeof status.message !== 'string') {\n diag.warn(\n `Dropping invalid status.message of type '${typeof status.message}', expected 'string'`\n );\n delete this.status.message;\n }\n\n return this;\n }\n\n updateName(name: string): this {\n if (this._isSpanEnded()) return this;\n this.name = name;\n return this;\n }\n\n end(endTime?: TimeInput): void {\n if (this._isSpanEnded()) {\n diag.error(\n `${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`\n );\n return;\n }\n this.endTime = this._getTime(endTime);\n this._duration = hrTimeDuration(this.startTime, this.endTime);\n\n if (this._duration[0] < 0) {\n diag.warn(\n 'Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.',\n this.startTime,\n this.endTime\n );\n this.endTime = this.startTime.slice() as HrTime;\n this._duration = [0, 0];\n }\n\n if (this._droppedEventsCount > 0) {\n diag.warn(\n `Dropped ${this._droppedEventsCount} events because eventCountLimit reached`\n );\n }\n if (this._spanProcessor.onEnding) {\n this._spanProcessor.onEnding(this);\n }\n\n this._ended = true;\n this._spanProcessor.onEnd(this);\n }\n\n private _getTime(inp?: TimeInput): HrTime {\n if (typeof inp === 'number' && inp <= otperformance.now()) {\n // must be a performance timestamp\n // apply correction and convert to hrtime\n return hrTime(inp + this._performanceOffset);\n }\n\n if (typeof inp === 'number') {\n return millisToHrTime(inp);\n }\n\n if (inp instanceof Date) {\n return millisToHrTime(inp.getTime());\n }\n\n if (isTimeInputHrTime(inp)) {\n return inp;\n }\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 millisToHrTime(Date.now());\n }\n\n const msDuration = otperformance.now() - this._performanceStartTime;\n return addHrTimes(this.startTime, millisToHrTime(msDuration));\n }\n\n isRecording(): boolean {\n return this._ended === false;\n }\n\n recordException(exception: Exception, time?: TimeInput): void {\n const attributes: Attributes = {};\n if (typeof exception === 'string') {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception;\n } else if (exception) {\n if (exception.code) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.code.toString();\n } else if (exception.name) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.name;\n }\n if (exception.message) {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception.message;\n }\n if (exception.stack) {\n attributes[ATTR_EXCEPTION_STACKTRACE] = exception.stack;\n }\n }\n\n // these are minimum requirements from spec\n if (attributes[ATTR_EXCEPTION_TYPE] || attributes[ATTR_EXCEPTION_MESSAGE]) {\n this.addEvent(ExceptionEventName, attributes, time);\n } else {\n diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n\n get duration(): HrTime {\n return this._duration;\n }\n\n get ended(): boolean {\n return this._ended;\n }\n\n get droppedAttributesCount(): number {\n return this._droppedAttributesCount;\n }\n\n get droppedEventsCount(): number {\n return this._droppedEventsCount;\n }\n\n get droppedLinksCount(): number {\n return this._droppedLinksCount;\n }\n\n private _isSpanEnded(): boolean {\n if (this._ended) {\n const error = new Error(\n `Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`\n );\n\n diag.warn(\n `Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`,\n error\n );\n }\n return this._ended;\n }\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 private _truncateToLimitUtil(value: string, limit: number): string {\n if (value.length <= limit) {\n return value;\n }\n return value.substring(0, limit);\n }\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 private _truncateToSize(value: AttributeValue): AttributeValue {\n const limit = this._attributeValueLengthLimit;\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n\n // String\n if (typeof value === 'string') {\n return this._truncateToLimitUtil(value, limit);\n }\n\n // Array of strings\n if (Array.isArray(value)) {\n return (value as []).map(val =>\n typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val\n );\n }\n\n // Other types, no need to apply value length limit\n return value;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.d.ts new file mode 100644 index 0000000..0ec6fec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.d.ts @@ -0,0 +1,39 @@ +import { Context } from '@opentelemetry/api'; +import { ReadableSpan } from './export/ReadableSpan'; +import { Span } from './Span'; +/** + * SpanProcessor is the interface Tracer SDK uses to allow synchronous hooks + * for when a {@link Span} is started or when a {@link Span} is ended. + */ +export interface SpanProcessor { + /** + * Forces to export all finished spans + */ + forceFlush(): Promise; + /** + * Called when a {@link Span} is started, if the `span.isRecording()` + * returns true. + * @param span the Span that just started. + */ + onStart(span: Span, parentContext: Context): void; + /** + * Called when a {@link Span} is ending, if the `span.isRecording()` + * returns true. + * @param span the Span that is ending. + * + * @experimental This method is experimental and may break in minor versions of this package + */ + onEnding?(span: Span): void; + /** + * Called when a {@link ReadableSpan} is ended, if the `span.isRecording()` + * returns true. + * @param span the Span that just ended. + */ + onEnd(span: ReadableSpan): void; + /** + * Shuts down the processor. Called when SDK is shut down. This is an + * opportunity for processor to do any cleanup required. + */ + shutdown(): Promise; +} +//# sourceMappingURL=SpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.js new file mode 100644 index 0000000..5259028 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=SpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.js.map new file mode 100644 index 0000000..4b8198e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SpanProcessor.js","sourceRoot":"","sources":["../../src/SpanProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '@opentelemetry/api';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { Span } from './Span';\n\n/**\n * SpanProcessor is the interface Tracer SDK uses to allow synchronous hooks\n * for when a {@link Span} is started or when a {@link Span} is ended.\n */\nexport interface SpanProcessor {\n /**\n * Forces to export all finished spans\n */\n forceFlush(): Promise;\n\n /**\n * Called when a {@link Span} is started, if the `span.isRecording()`\n * returns true.\n * @param span the Span that just started.\n */\n onStart(span: Span, parentContext: Context): void;\n\n /**\n * Called when a {@link Span} is ending, if the `span.isRecording()`\n * returns true.\n * @param span the Span that is ending.\n *\n * @experimental This method is experimental and may break in minor versions of this package\n */\n onEnding?(span: Span): void;\n\n /**\n * Called when a {@link ReadableSpan} is ended, if the `span.isRecording()`\n * returns true.\n * @param span the Span that just ended.\n */\n onEnd(span: ReadableSpan): void;\n\n /**\n * Shuts down the processor. Called when SDK is shut down. This is an\n * opportunity for processor to do any cleanup required.\n */\n shutdown(): Promise;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.d.ts new file mode 100644 index 0000000..7ad3754 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.d.ts @@ -0,0 +1,15 @@ +import { HrTime, Attributes } from '@opentelemetry/api'; +/** + * Represents a timed event. + * A timed event is an event with a timestamp. + */ +export interface TimedEvent { + time: HrTime; + /** The name of the event. */ + name: string; + /** The attributes of the event. */ + attributes?: Attributes; + /** Count of attributes of the event that were dropped due to collection limits */ + droppedAttributesCount?: number; +} +//# sourceMappingURL=TimedEvent.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.js new file mode 100644 index 0000000..09cec6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=TimedEvent.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.js.map new file mode 100644 index 0000000..e0a767c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TimedEvent.js","sourceRoot":"","sources":["../../src/TimedEvent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { HrTime, Attributes } from '@opentelemetry/api';\n\n/**\n * Represents a timed event.\n * A timed event is an event with a timestamp.\n */\nexport interface TimedEvent {\n time: HrTime;\n /** The name of the event. */\n name: string;\n /** The attributes of the event. */\n attributes?: Attributes;\n /** Count of attributes of the event that were dropped due to collection limits */\n droppedAttributesCount?: number;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.d.ts new file mode 100644 index 0000000..a01a9aa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.d.ts @@ -0,0 +1,77 @@ +import * as api from '@opentelemetry/api'; +import { InstrumentationScope } from '@opentelemetry/core'; +import { GeneralLimits, SpanLimits, TracerConfig } from './types'; +import { SpanProcessor } from './SpanProcessor'; +import { Resource } from '@opentelemetry/resources'; +/** + * This class represents a basic tracer. + */ +export declare class Tracer implements api.Tracer { + private readonly _sampler; + private readonly _generalLimits; + private readonly _spanLimits; + private readonly _idGenerator; + readonly instrumentationScope: InstrumentationScope; + private readonly _resource; + private readonly _spanProcessor; + /** + * Constructs a new Tracer instance. + */ + constructor(instrumentationScope: InstrumentationScope, config: TracerConfig, resource: Resource, spanProcessor: SpanProcessor); + /** + * Starts a new Span or returns the default NoopSpan based on the sampling + * decision. + */ + startSpan(name: string, options?: api.SpanOptions, context?: api.Context): api.Span; + /** + * Starts a new {@link Span} and calls the given function passing it the + * created span as first argument. + * Additionally the new span gets set in context and this context is activated + * for the duration of the function call. + * + * @param name The name of the span + * @param [options] SpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns return value of fn + * @example + * const something = tracer.startActiveSpan('op', span => { + * try { + * do some work + * span.setStatus({code: SpanStatusCode.OK}); + * return something; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } finally { + * span.end(); + * } + * }); + * @example + * const span = tracer.startActiveSpan('op', span => { + * try { + * do some work + * return span; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } + * }); + * do some more work + * span.end(); + */ + startActiveSpan ReturnType>(name: string, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: api.SpanOptions, fn: F): ReturnType; + startActiveSpan ReturnType>(name: string, opts: api.SpanOptions, ctx: api.Context, fn: F): ReturnType; + /** Returns the active {@link GeneralLimits}. */ + getGeneralLimits(): GeneralLimits; + /** Returns the active {@link SpanLimits}. */ + getSpanLimits(): SpanLimits; +} +//# sourceMappingURL=Tracer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js new file mode 100644 index 0000000..ec08e4a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js @@ -0,0 +1,152 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Tracer = void 0; +const api = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const Span_1 = require("./Span"); +const utility_1 = require("./utility"); +const platform_1 = require("./platform"); +/** + * This class represents a basic tracer. + */ +class Tracer { + _sampler; + _generalLimits; + _spanLimits; + _idGenerator; + instrumentationScope; + _resource; + _spanProcessor; + /** + * Constructs a new Tracer instance. + */ + constructor(instrumentationScope, config, resource, spanProcessor) { + const localConfig = (0, utility_1.mergeConfig)(config); + this._sampler = localConfig.sampler; + this._generalLimits = localConfig.generalLimits; + this._spanLimits = localConfig.spanLimits; + this._idGenerator = config.idGenerator || new platform_1.RandomIdGenerator(); + this._resource = resource; + this._spanProcessor = spanProcessor; + this.instrumentationScope = instrumentationScope; + } + /** + * Starts a new Span or returns the default NoopSpan based on the sampling + * decision. + */ + startSpan(name, options = {}, context = api.context.active()) { + // remove span from context in case a root span is requested via options + if (options.root) { + context = api.trace.deleteSpan(context); + } + const parentSpan = api.trace.getSpan(context); + if ((0, core_1.isTracingSuppressed)(context)) { + api.diag.debug('Instrumentation suppressed, returning Noop Span'); + const nonRecordingSpan = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT); + return nonRecordingSpan; + } + const parentSpanContext = parentSpan?.spanContext(); + const spanId = this._idGenerator.generateSpanId(); + let validParentSpanContext; + let traceId; + let traceState; + if (!parentSpanContext || + !api.trace.isSpanContextValid(parentSpanContext)) { + // New root span. + traceId = this._idGenerator.generateTraceId(); + } + else { + // New child span. + traceId = parentSpanContext.traceId; + traceState = parentSpanContext.traceState; + validParentSpanContext = parentSpanContext; + } + const spanKind = options.kind ?? api.SpanKind.INTERNAL; + const links = (options.links ?? []).map(link => { + return { + context: link.context, + attributes: (0, core_1.sanitizeAttributes)(link.attributes), + }; + }); + const attributes = (0, core_1.sanitizeAttributes)(options.attributes); + // make sampling decision + const samplingResult = this._sampler.shouldSample(context, traceId, name, spanKind, attributes, links); + traceState = samplingResult.traceState ?? traceState; + const traceFlags = samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED + ? api.TraceFlags.SAMPLED + : api.TraceFlags.NONE; + const spanContext = { traceId, spanId, traceFlags, traceState }; + if (samplingResult.decision === api.SamplingDecision.NOT_RECORD) { + api.diag.debug('Recording is off, propagating context in a non-recording span'); + const nonRecordingSpan = api.trace.wrapSpanContext(spanContext); + return nonRecordingSpan; + } + // Set initial span attributes. The attributes object may have been mutated + // by the sampler, so we sanitize the merged attributes before setting them. + const initAttributes = (0, core_1.sanitizeAttributes)(Object.assign(attributes, samplingResult.attributes)); + const span = new Span_1.SpanImpl({ + resource: this._resource, + scope: this.instrumentationScope, + context, + spanContext, + name, + kind: spanKind, + links, + parentSpanContext: validParentSpanContext, + attributes: initAttributes, + startTime: options.startTime, + spanProcessor: this._spanProcessor, + spanLimits: this._spanLimits, + }); + return span; + } + startActiveSpan(name, arg2, arg3, arg4) { + let opts; + let ctx; + let fn; + if (arguments.length < 2) { + return; + } + else if (arguments.length === 2) { + fn = arg2; + } + else if (arguments.length === 3) { + opts = arg2; + fn = arg3; + } + else { + opts = arg2; + ctx = arg3; + fn = arg4; + } + const parentContext = ctx ?? api.context.active(); + const span = this.startSpan(name, opts, parentContext); + const contextWithSpanSet = api.trace.setSpan(parentContext, span); + return api.context.with(contextWithSpanSet, fn, undefined, span); + } + /** Returns the active {@link GeneralLimits}. */ + getGeneralLimits() { + return this._generalLimits; + } + /** Returns the active {@link SpanLimits}. */ + getSpanLimits() { + return this._spanLimits; + } +} +exports.Tracer = Tracer; +//# sourceMappingURL=Tracer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js.map new file mode 100644 index 0000000..526301b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Tracer.js","sourceRoot":"","sources":["../../src/Tracer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as api from '@opentelemetry/api';\nimport {\n InstrumentationScope,\n sanitizeAttributes,\n isTracingSuppressed,\n} from '@opentelemetry/core';\nimport { SpanImpl } from './Span';\nimport { GeneralLimits, SpanLimits, TracerConfig } from './types';\nimport { mergeConfig } from './utility';\nimport { SpanProcessor } from './SpanProcessor';\nimport { Sampler } from './Sampler';\nimport { IdGenerator } from './IdGenerator';\nimport { RandomIdGenerator } from './platform';\nimport { Resource } from '@opentelemetry/resources';\n\n/**\n * This class represents a basic tracer.\n */\nexport class Tracer implements api.Tracer {\n private readonly _sampler: Sampler;\n private readonly _generalLimits: GeneralLimits;\n private readonly _spanLimits: SpanLimits;\n private readonly _idGenerator: IdGenerator;\n readonly instrumentationScope: InstrumentationScope;\n\n private readonly _resource: Resource;\n private readonly _spanProcessor: SpanProcessor;\n\n /**\n * Constructs a new Tracer instance.\n */\n constructor(\n instrumentationScope: InstrumentationScope,\n config: TracerConfig,\n resource: Resource,\n spanProcessor: SpanProcessor\n ) {\n const localConfig = mergeConfig(config);\n this._sampler = localConfig.sampler;\n this._generalLimits = localConfig.generalLimits;\n this._spanLimits = localConfig.spanLimits;\n this._idGenerator = config.idGenerator || new RandomIdGenerator();\n this._resource = resource;\n this._spanProcessor = spanProcessor;\n this.instrumentationScope = instrumentationScope;\n }\n\n /**\n * Starts a new Span or returns the default NoopSpan based on the sampling\n * decision.\n */\n startSpan(\n name: string,\n options: api.SpanOptions = {},\n context = api.context.active()\n ): api.Span {\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\n if (isTracingSuppressed(context)) {\n api.diag.debug('Instrumentation suppressed, returning Noop Span');\n const nonRecordingSpan = api.trace.wrapSpanContext(\n api.INVALID_SPAN_CONTEXT\n );\n return nonRecordingSpan;\n }\n\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = this._idGenerator.generateSpanId();\n let validParentSpanContext;\n let traceId;\n let traceState;\n if (\n !parentSpanContext ||\n !api.trace.isSpanContextValid(parentSpanContext)\n ) {\n // New root span.\n traceId = this._idGenerator.generateTraceId();\n } else {\n // New child span.\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n validParentSpanContext = parentSpanContext;\n }\n\n const spanKind = options.kind ?? api.SpanKind.INTERNAL;\n const links = (options.links ?? []).map(link => {\n return {\n context: link.context,\n attributes: sanitizeAttributes(link.attributes),\n };\n });\n const attributes = sanitizeAttributes(options.attributes);\n // make sampling decision\n const samplingResult = this._sampler.shouldSample(\n context,\n traceId,\n name,\n spanKind,\n attributes,\n links\n );\n\n traceState = samplingResult.traceState ?? traceState;\n\n const traceFlags =\n 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(\n 'Recording is off, propagating context in a non-recording span'\n );\n const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n return nonRecordingSpan;\n }\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 = sanitizeAttributes(\n Object.assign(attributes, samplingResult.attributes)\n );\n\n const span = new 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 });\n return span;\n }\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally the new span gets set in context and this context is activated\n * for the duration of the function call.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * span.setStatus({code: SpanStatusCode.OK});\n * return something;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * } finally {\n * span.end();\n * }\n * });\n * @example\n * const span = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * return span;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * }\n * });\n * do some more work\n * span.end();\n */\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n ctx: api.Context,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | api.SpanOptions,\n arg3?: F | api.Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: api.SpanOptions | undefined;\n let ctx: api.Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as api.SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as api.SpanOptions | undefined;\n ctx = arg3 as api.Context | undefined;\n fn = arg4 as F;\n }\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\n return api.context.with(contextWithSpanSet, fn, undefined, span);\n }\n\n /** Returns the active {@link GeneralLimits}. */\n getGeneralLimits(): GeneralLimits {\n return this._generalLimits;\n }\n\n /** Returns the active {@link SpanLimits}. */\n getSpanLimits(): SpanLimits {\n return this._spanLimits;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/config.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/config.d.ts new file mode 100644 index 0000000..4b6cea3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/config.d.ts @@ -0,0 +1,28 @@ +import { Sampler } from './Sampler'; +/** + * Load default configuration. For fields with primitive values, any user-provided + * value will override the corresponding default value. For fields with + * non-primitive values (like `spanLimits`), the user-provided value will be + * used to extend the default value. + */ +export declare function loadDefaultConfig(): { + sampler: Sampler; + forceFlushTimeoutMillis: number; + generalLimits: { + attributeValueLengthLimit: number; + attributeCountLimit: number; + }; + spanLimits: { + attributeValueLengthLimit: number; + attributeCountLimit: number; + linkCountLimit: number; + eventCountLimit: number; + attributePerEventCountLimit: number; + attributePerLinkCountLimit: number; + }; +}; +/** + * Based on environment, builds a sampler, complies with specification. + */ +export declare function buildSamplerFromEnv(): Sampler; +//# sourceMappingURL=config.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/config.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/config.js new file mode 100644 index 0000000..118b84a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/config.js @@ -0,0 +1,107 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.buildSamplerFromEnv = exports.loadDefaultConfig = void 0; +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const AlwaysOffSampler_1 = require("./sampler/AlwaysOffSampler"); +const AlwaysOnSampler_1 = require("./sampler/AlwaysOnSampler"); +const ParentBasedSampler_1 = require("./sampler/ParentBasedSampler"); +const TraceIdRatioBasedSampler_1 = require("./sampler/TraceIdRatioBasedSampler"); +var TracesSamplerValues; +(function (TracesSamplerValues) { + TracesSamplerValues["AlwaysOff"] = "always_off"; + TracesSamplerValues["AlwaysOn"] = "always_on"; + TracesSamplerValues["ParentBasedAlwaysOff"] = "parentbased_always_off"; + TracesSamplerValues["ParentBasedAlwaysOn"] = "parentbased_always_on"; + TracesSamplerValues["ParentBasedTraceIdRatio"] = "parentbased_traceidratio"; + TracesSamplerValues["TraceIdRatio"] = "traceidratio"; +})(TracesSamplerValues || (TracesSamplerValues = {})); +const DEFAULT_RATIO = 1; +/** + * Load default configuration. For fields with primitive values, any user-provided + * value will override the corresponding default value. For fields with + * non-primitive values (like `spanLimits`), the user-provided value will be + * used to extend the default value. + */ +// object needs to be wrapped in this function and called when needed otherwise +// envs are parsed before tests are ran - causes tests using these envs to fail +function loadDefaultConfig() { + return { + sampler: buildSamplerFromEnv(), + forceFlushTimeoutMillis: 30000, + generalLimits: { + attributeValueLengthLimit: (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity, + attributeCountLimit: (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128, + }, + spanLimits: { + attributeValueLengthLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity, + attributeCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128, + linkCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128, + eventCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128, + attributePerEventCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128, + attributePerLinkCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128, + }, + }; +} +exports.loadDefaultConfig = loadDefaultConfig; +/** + * Based on environment, builds a sampler, complies with specification. + */ +function buildSamplerFromEnv() { + const sampler = (0, core_1.getStringFromEnv)('OTEL_TRACES_SAMPLER') ?? + TracesSamplerValues.ParentBasedAlwaysOn; + switch (sampler) { + case TracesSamplerValues.AlwaysOn: + return new AlwaysOnSampler_1.AlwaysOnSampler(); + case TracesSamplerValues.AlwaysOff: + return new AlwaysOffSampler_1.AlwaysOffSampler(); + case TracesSamplerValues.ParentBasedAlwaysOn: + return new ParentBasedSampler_1.ParentBasedSampler({ + root: new AlwaysOnSampler_1.AlwaysOnSampler(), + }); + case TracesSamplerValues.ParentBasedAlwaysOff: + return new ParentBasedSampler_1.ParentBasedSampler({ + root: new AlwaysOffSampler_1.AlwaysOffSampler(), + }); + case TracesSamplerValues.TraceIdRatio: + return new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()); + case TracesSamplerValues.ParentBasedTraceIdRatio: + return new ParentBasedSampler_1.ParentBasedSampler({ + root: new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()), + }); + default: + api_1.diag.error(`OTEL_TRACES_SAMPLER value "${sampler}" invalid, defaulting to "${TracesSamplerValues.ParentBasedAlwaysOn}".`); + return new ParentBasedSampler_1.ParentBasedSampler({ + root: new AlwaysOnSampler_1.AlwaysOnSampler(), + }); + } +} +exports.buildSamplerFromEnv = buildSamplerFromEnv; +function getSamplerProbabilityFromEnv() { + const probability = (0, core_1.getNumberFromEnv)('OTEL_TRACES_SAMPLER_ARG'); + if (probability == null) { + api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`); + return DEFAULT_RATIO; + } + if (probability < 0 || probability > 1) { + api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`); + return DEFAULT_RATIO; + } + return probability; +} +//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/config.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/config.js.map new file mode 100644 index 0000000..f823887 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/config.js.map @@ -0,0 +1 @@ +{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\nimport { getNumberFromEnv, getStringFromEnv } from '@opentelemetry/core';\nimport { Sampler } from './Sampler';\nimport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nimport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nimport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nimport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\n\nconst enum TracesSamplerValues {\n AlwaysOff = 'always_off',\n AlwaysOn = 'always_on',\n ParentBasedAlwaysOff = 'parentbased_always_off',\n ParentBasedAlwaysOn = 'parentbased_always_on',\n ParentBasedTraceIdRatio = 'parentbased_traceidratio',\n TraceIdRatio = 'traceidratio',\n}\n\nconst DEFAULT_RATIO = 1;\n\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\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\nexport function loadDefaultConfig() {\n return {\n sampler: buildSamplerFromEnv(),\n forceFlushTimeoutMillis: 30000,\n generalLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n },\n spanLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n linkCountLimit: getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128,\n eventCountLimit: getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128,\n attributePerEventCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128,\n attributePerLinkCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128,\n },\n };\n}\n\n/**\n * Based on environment, builds a sampler, complies with specification.\n */\nexport function buildSamplerFromEnv(): Sampler {\n const sampler =\n getStringFromEnv('OTEL_TRACES_SAMPLER') ??\n TracesSamplerValues.ParentBasedAlwaysOn;\n switch (sampler) {\n case TracesSamplerValues.AlwaysOn:\n return new AlwaysOnSampler();\n case TracesSamplerValues.AlwaysOff:\n return new AlwaysOffSampler();\n case TracesSamplerValues.ParentBasedAlwaysOn:\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n case TracesSamplerValues.ParentBasedAlwaysOff:\n return new ParentBasedSampler({\n root: new AlwaysOffSampler(),\n });\n case TracesSamplerValues.TraceIdRatio:\n return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv());\n case TracesSamplerValues.ParentBasedTraceIdRatio:\n return new ParentBasedSampler({\n root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()),\n });\n default:\n diag.error(\n `OTEL_TRACES_SAMPLER value \"${sampler}\" invalid, defaulting to \"${TracesSamplerValues.ParentBasedAlwaysOn}\".`\n );\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n }\n}\n\nfunction getSamplerProbabilityFromEnv(): number | undefined {\n const probability = getNumberFromEnv('OTEL_TRACES_SAMPLER_ARG');\n if (probability == null) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n if (probability < 0 || probability > 1) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n return probability;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/enums.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/enums.d.ts new file mode 100644 index 0000000..0192301 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/enums.d.ts @@ -0,0 +1,2 @@ +export declare const ExceptionEventName = "exception"; +//# sourceMappingURL=enums.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/enums.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/enums.js new file mode 100644 index 0000000..aecbce0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/enums.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ExceptionEventName = void 0; +// Event name definitions +exports.ExceptionEventName = 'exception'; +//# sourceMappingURL=enums.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/enums.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/enums.js.map new file mode 100644 index 0000000..7ee96bc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/enums.js.map @@ -0,0 +1 @@ +{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/enums.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,yBAAyB;AACZ,QAAA,kBAAkB,GAAG,WAAW,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Event name definitions\nexport const ExceptionEventName = 'exception';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.d.ts new file mode 100644 index 0000000..d67139f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.d.ts @@ -0,0 +1,41 @@ +import { Context } from '@opentelemetry/api'; +import { Span } from '../Span'; +import { SpanProcessor } from '../SpanProcessor'; +import { BufferConfig } from '../types'; +import { ReadableSpan } from './ReadableSpan'; +import { SpanExporter } from './SpanExporter'; +/** + * Implementation of the {@link SpanProcessor} that batches spans exported by + * the SDK then pushes them to the exporter pipeline. + */ +export declare abstract class BatchSpanProcessorBase implements SpanProcessor { + private readonly _maxExportBatchSize; + private readonly _maxQueueSize; + private readonly _scheduledDelayMillis; + private readonly _exportTimeoutMillis; + private readonly _exporter; + private _isExporting; + private _finishedSpans; + private _timer; + private _shutdownOnce; + private _droppedSpansCount; + constructor(exporter: SpanExporter, config?: T); + forceFlush(): Promise; + onStart(_span: Span, _parentContext: Context): void; + onEnd(span: ReadableSpan): void; + shutdown(): Promise; + private _shutdown; + /** Add a span in the buffer. */ + private _addToBuffer; + /** + * Send all spans to the exporter respecting the batch size limit + * This function is used only on forceFlush or shutdown, + * for all other cases _flush should be used + * */ + private _flushAll; + private _flushOneBatch; + private _maybeStartTimer; + private _clearTimer; + protected abstract onShutdown(): void; +} +//# sourceMappingURL=BatchSpanProcessorBase.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.js new file mode 100644 index 0000000..2983350 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.js @@ -0,0 +1,223 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BatchSpanProcessorBase = void 0; +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +/** + * Implementation of the {@link SpanProcessor} that batches spans exported by + * the SDK then pushes them to the exporter pipeline. + */ +class BatchSpanProcessorBase { + _maxExportBatchSize; + _maxQueueSize; + _scheduledDelayMillis; + _exportTimeoutMillis; + _exporter; + _isExporting = false; + _finishedSpans = []; + _timer; + _shutdownOnce; + _droppedSpansCount = 0; + constructor(exporter, config) { + this._exporter = exporter; + this._maxExportBatchSize = + typeof config?.maxExportBatchSize === 'number' + ? config.maxExportBatchSize + : ((0, core_1.getNumberFromEnv)('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512); + this._maxQueueSize = + typeof config?.maxQueueSize === 'number' + ? config.maxQueueSize + : ((0, core_1.getNumberFromEnv)('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048); + this._scheduledDelayMillis = + typeof config?.scheduledDelayMillis === 'number' + ? config.scheduledDelayMillis + : ((0, core_1.getNumberFromEnv)('OTEL_BSP_SCHEDULE_DELAY') ?? 5000); + this._exportTimeoutMillis = + typeof config?.exportTimeoutMillis === 'number' + ? config.exportTimeoutMillis + : ((0, core_1.getNumberFromEnv)('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000); + this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this); + if (this._maxExportBatchSize > this._maxQueueSize) { + api_1.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(); + } + // does nothing. + onStart(_span, _parentContext) { } + onEnd(span) { + if (this._shutdownOnce.isCalled) { + return; + } + if ((span.spanContext().traceFlags & api_1.TraceFlags.SAMPLED) === 0) { + return; + } + this._addToBuffer(span); + } + shutdown() { + return this._shutdownOnce.call(); + } + _shutdown() { + return Promise.resolve() + .then(() => { + return this.onShutdown(); + }) + .then(() => { + return this._flushAll(); + }) + .then(() => { + return this._exporter.shutdown(); + }); + } + /** Add a span in the buffer. */ + _addToBuffer(span) { + if (this._finishedSpans.length >= this._maxQueueSize) { + // limit reached, drop span + if (this._droppedSpansCount === 0) { + api_1.diag.debug('maxQueueSize reached, dropping spans'); + } + this._droppedSpansCount++; + return; + } + if (this._droppedSpansCount > 0) { + // some spans were dropped, log once with count of spans dropped + api_1.diag.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`); + this._droppedSpansCount = 0; + } + this._finishedSpans.push(span); + this._maybeStartTimer(); + } + /** + * Send all spans to the exporter respecting the batch size limit + * This function is used only on forceFlush or shutdown, + * for all other cases _flush should be used + * */ + _flushAll() { + return new Promise((resolve, reject) => { + const promises = []; + // calculate number of batches + const count = Math.ceil(this._finishedSpans.length / this._maxExportBatchSize); + for (let i = 0, j = count; i < j; i++) { + promises.push(this._flushOneBatch()); + } + Promise.all(promises) + .then(() => { + resolve(); + }) + .catch(reject); + }); + } + _flushOneBatch() { + this._clearTimer(); + if (this._finishedSpans.length === 0) { + return Promise.resolve(); + } + return new Promise((resolve, reject) => { + const timer = setTimeout(() => { + // don't wait anymore for export, this way the next batch can start + reject(new Error('Timeout')); + }, this._exportTimeoutMillis); + // prevent downstream exporter calls from generating spans + api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), () => { + // Reset the finished spans buffer here because the next invocations of the _flush method + // could pass the same finished spans to the exporter if the buffer is cleared + // outside the execution of this callback. + let spans; + if (this._finishedSpans.length <= this._maxExportBatchSize) { + spans = this._finishedSpans; + this._finishedSpans = []; + } + else { + spans = this._finishedSpans.splice(0, this._maxExportBatchSize); + } + const doExport = () => this._exporter.export(spans, result => { + clearTimeout(timer); + if (result.code === core_1.ExportResultCode.SUCCESS) { + resolve(); + } + else { + reject(result.error ?? + new Error('BatchSpanProcessor: span export failed')); + } + }); + let pendingResources = null; + for (let i = 0, len = spans.length; i < len; i++) { + const span = spans[i]; + if (span.resource.asyncAttributesPending && + span.resource.waitForAsyncAttributes) { + pendingResources ??= []; + pendingResources.push(span.resource.waitForAsyncAttributes()); + } + } + // Avoid scheduling a promise to make the behavior more predictable and easier to test + if (pendingResources === null) { + doExport(); + } + else { + Promise.all(pendingResources).then(doExport, err => { + (0, core_1.globalErrorHandler)(err); + reject(err); + }); + } + }); + }); + } + _maybeStartTimer() { + if (this._isExporting) + return; + const flush = () => { + this._isExporting = true; + this._flushOneBatch() + .finally(() => { + this._isExporting = false; + if (this._finishedSpans.length > 0) { + this._clearTimer(); + this._maybeStartTimer(); + } + }) + .catch(e => { + this._isExporting = false; + (0, core_1.globalErrorHandler)(e); + }); + }; + // we only wait if the queue doesn't have enough elements yet + if (this._finishedSpans.length >= this._maxExportBatchSize) { + return flush(); + } + if (this._timer !== undefined) + return; + this._timer = setTimeout(() => flush(), this._scheduledDelayMillis); + // depending on runtime, this may be a 'number' or NodeJS.Timeout + if (typeof this._timer !== 'number') { + this._timer.unref(); + } + } + _clearTimer() { + if (this._timer !== undefined) { + clearTimeout(this._timer); + this._timer = undefined; + } + } +} +exports.BatchSpanProcessorBase = BatchSpanProcessorBase; +//# sourceMappingURL=BatchSpanProcessorBase.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.js.map new file mode 100644 index 0000000..ddc88d8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchSpanProcessorBase.js","sourceRoot":"","sources":["../../../src/export/BatchSpanProcessorBase.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { context, Context, diag, TraceFlags } from '@opentelemetry/api';\nimport {\n BindOnceFuture,\n ExportResultCode,\n getNumberFromEnv,\n globalErrorHandler,\n suppressTracing,\n} from '@opentelemetry/core';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\nimport { BufferConfig } from '../types';\nimport { ReadableSpan } from './ReadableSpan';\nimport { SpanExporter } from './SpanExporter';\n\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nexport abstract class BatchSpanProcessorBase\n implements SpanProcessor\n{\n private readonly _maxExportBatchSize: number;\n private readonly _maxQueueSize: number;\n private readonly _scheduledDelayMillis: number;\n private readonly _exportTimeoutMillis: number;\n private readonly _exporter: SpanExporter;\n\n private _isExporting = false;\n private _finishedSpans: ReadableSpan[] = [];\n private _timer: NodeJS.Timeout | number | undefined;\n private _shutdownOnce: BindOnceFuture;\n private _droppedSpansCount: number = 0;\n\n constructor(exporter: SpanExporter, config?: T) {\n this._exporter = exporter;\n this._maxExportBatchSize =\n typeof config?.maxExportBatchSize === 'number'\n ? config.maxExportBatchSize\n : (getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512);\n this._maxQueueSize =\n typeof config?.maxQueueSize === 'number'\n ? config.maxQueueSize\n : (getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048);\n this._scheduledDelayMillis =\n typeof config?.scheduledDelayMillis === 'number'\n ? config.scheduledDelayMillis\n : (getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000);\n this._exportTimeoutMillis =\n typeof config?.exportTimeoutMillis === 'number'\n ? config.exportTimeoutMillis\n : (getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000);\n\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n\n if (this._maxExportBatchSize > this._maxQueueSize) {\n diag.warn(\n 'BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize'\n );\n this._maxExportBatchSize = this._maxQueueSize;\n }\n }\n\n forceFlush(): Promise {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n\n // does nothing.\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n this._addToBuffer(span);\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _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\n /** Add a span in the buffer. */\n private _addToBuffer(span: ReadableSpan) {\n if (this._finishedSpans.length >= this._maxQueueSize) {\n // limit reached, drop span\n\n if (this._droppedSpansCount === 0) {\n diag.debug('maxQueueSize reached, dropping spans');\n }\n this._droppedSpansCount++;\n\n return;\n }\n\n if (this._droppedSpansCount > 0) {\n // some spans were dropped, log once with count of spans dropped\n diag.warn(\n `Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`\n );\n this._droppedSpansCount = 0;\n }\n\n this._finishedSpans.push(span);\n this._maybeStartTimer();\n }\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 private _flushAll(): Promise {\n return new Promise((resolve, reject) => {\n const promises = [];\n // calculate number of batches\n const count = Math.ceil(\n this._finishedSpans.length / this._maxExportBatchSize\n );\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\n private _flushOneBatch(): Promise {\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 context.with(suppressTracing(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: ReadableSpan[];\n if (this._finishedSpans.length <= this._maxExportBatchSize) {\n spans = this._finishedSpans;\n this._finishedSpans = [];\n } else {\n spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n }\n\n const doExport = () =>\n this._exporter.export(spans, result => {\n clearTimeout(timer);\n if (result.code === ExportResultCode.SUCCESS) {\n resolve();\n } else {\n reject(\n result.error ??\n new Error('BatchSpanProcessor: span export failed')\n );\n }\n });\n\n let pendingResources: Array> | null = null;\n for (let i = 0, len = spans.length; i < len; i++) {\n const span = spans[i];\n if (\n span.resource.asyncAttributesPending &&\n span.resource.waitForAsyncAttributes\n ) {\n pendingResources ??= [];\n pendingResources.push(span.resource.waitForAsyncAttributes());\n }\n }\n\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (pendingResources === null) {\n doExport();\n } else {\n Promise.all(pendingResources).then(doExport, err => {\n globalErrorHandler(err);\n reject(err);\n });\n }\n });\n });\n }\n\n private _maybeStartTimer() {\n if (this._isExporting) 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 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) return;\n this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n\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\n private _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n\n protected abstract onShutdown(): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.d.ts new file mode 100644 index 0000000..cbbf9bb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.d.ts @@ -0,0 +1,37 @@ +import { SpanExporter } from './SpanExporter'; +import { ReadableSpan } from './ReadableSpan'; +import { ExportResult } from '@opentelemetry/core'; +/** + * This is implementation of {@link SpanExporter} that prints spans to the + * console. This class can be used for diagnostic purposes. + * + * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time. + */ +export declare class ConsoleSpanExporter implements SpanExporter { + /** + * Export spans. + * @param spans + * @param resultCallback + */ + export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void; + /** + * Shutdown the exporter. + */ + shutdown(): Promise; + /** + * Exports any pending spans in exporter + */ + forceFlush(): Promise; + /** + * converts span info into more readable format + * @param span + */ + private _exportInfo; + /** + * Showing spans in console + * @param spans + * @param done + */ + private _sendSpans; +} +//# sourceMappingURL=ConsoleSpanExporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.js new file mode 100644 index 0000000..7f22fd9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.js @@ -0,0 +1,88 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConsoleSpanExporter = void 0; +const core_1 = require("@opentelemetry/core"); +/** + * This is implementation of {@link SpanExporter} that prints spans to the + * console. This class can be used for diagnostic purposes. + * + * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time. + */ +/* eslint-disable no-console */ +class ConsoleSpanExporter { + /** + * Export spans. + * @param spans + * @param resultCallback + */ + export(spans, resultCallback) { + return this._sendSpans(spans, resultCallback); + } + /** + * Shutdown the exporter. + */ + shutdown() { + this._sendSpans([]); + return this.forceFlush(); + } + /** + * Exports any pending spans in exporter + */ + forceFlush() { + return Promise.resolve(); + } + /** + * converts span info into more readable format + * @param span + */ + _exportInfo(span) { + return { + resource: { + attributes: span.resource.attributes, + }, + instrumentationScope: span.instrumentationScope, + traceId: span.spanContext().traceId, + parentSpanContext: span.parentSpanContext, + traceState: span.spanContext().traceState?.serialize(), + name: span.name, + id: span.spanContext().spanId, + kind: span.kind, + timestamp: (0, core_1.hrTimeToMicroseconds)(span.startTime), + duration: (0, core_1.hrTimeToMicroseconds)(span.duration), + attributes: span.attributes, + status: span.status, + events: span.events, + links: span.links, + }; + } + /** + * Showing spans in console + * @param spans + * @param done + */ + _sendSpans(spans, done) { + for (const span of spans) { + console.dir(this._exportInfo(span), { depth: 3 }); + } + if (done) { + return done({ code: core_1.ExportResultCode.SUCCESS }); + } + } +} +exports.ConsoleSpanExporter = ConsoleSpanExporter; +//# sourceMappingURL=ConsoleSpanExporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.js.map new file mode 100644 index 0000000..fb51143 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ConsoleSpanExporter.js","sourceRoot":"","sources":["../../../src/export/ConsoleSpanExporter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,8CAI6B;AAE7B;;;;;GAKG;AAEH,+BAA+B;AAC/B,MAAa,mBAAmB;IAC9B;;;;OAIG;IACH,MAAM,CACJ,KAAqB,EACrB,cAA8C;QAE9C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,IAAkB;QACpC,OAAO;YACL,QAAQ,EAAE;gBACR,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;aACrC;YACD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO;YACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE;YACtD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAA,2BAAoB,EAAC,IAAI,CAAC,SAAS,CAAC;YAC/C,QAAQ,EAAE,IAAA,2BAAoB,EAAC,IAAI,CAAC,QAAQ,CAAC;YAC7C,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,UAAU,CAChB,KAAqB,EACrB,IAAqC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;SACnD;QACD,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;SACjD;IACH,CAAC;CACF;AArED,kDAqEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanExporter } from './SpanExporter';\nimport { ReadableSpan } from './ReadableSpan';\nimport {\n ExportResult,\n ExportResultCode,\n hrTimeToMicroseconds,\n} from '@opentelemetry/core';\n\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\n/* eslint-disable no-console */\nexport class ConsoleSpanExporter implements SpanExporter {\n /**\n * Export spans.\n * @param spans\n * @param resultCallback\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n return this._sendSpans(spans, resultCallback);\n }\n\n /**\n * Shutdown the exporter.\n */\n shutdown(): Promise {\n this._sendSpans([]);\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n /**\n * converts span info into more readable format\n * @param span\n */\n private _exportInfo(span: ReadableSpan) {\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: hrTimeToMicroseconds(span.startTime),\n duration: hrTimeToMicroseconds(span.duration),\n attributes: span.attributes,\n status: span.status,\n events: span.events,\n links: span.links,\n };\n }\n\n /**\n * Showing spans in console\n * @param spans\n * @param done\n */\n private _sendSpans(\n spans: ReadableSpan[],\n done?: (result: ExportResult) => void\n ): void {\n for (const span of spans) {\n console.dir(this._exportInfo(span), { depth: 3 });\n }\n if (done) {\n return done({ code: ExportResultCode.SUCCESS });\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.d.ts new file mode 100644 index 0000000..50dea6e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.d.ts @@ -0,0 +1,25 @@ +import { SpanExporter } from './SpanExporter'; +import { ReadableSpan } from './ReadableSpan'; +import { ExportResult } from '@opentelemetry/core'; +/** + * This class can be used for testing purposes. It stores the exported spans + * in a list in memory that can be retrieved using the `getFinishedSpans()` + * method. + */ +export declare class InMemorySpanExporter implements SpanExporter { + private _finishedSpans; + /** + * Indicates if the exporter has been "shutdown." + * When false, exported spans will not be stored in-memory. + */ + protected _stopped: boolean; + export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void; + shutdown(): Promise; + /** + * Exports any pending spans in the exporter + */ + forceFlush(): Promise; + reset(): void; + getFinishedSpans(): ReadableSpan[]; +} +//# sourceMappingURL=InMemorySpanExporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.js new file mode 100644 index 0000000..f834464 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.js @@ -0,0 +1,60 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InMemorySpanExporter = void 0; +const core_1 = require("@opentelemetry/core"); +/** + * This class can be used for testing purposes. It stores the exported spans + * in a list in memory that can be retrieved using the `getFinishedSpans()` + * method. + */ +class InMemorySpanExporter { + _finishedSpans = []; + /** + * Indicates if the exporter has been "shutdown." + * When false, exported spans will not be stored in-memory. + */ + _stopped = false; + export(spans, resultCallback) { + if (this._stopped) + return resultCallback({ + code: core_1.ExportResultCode.FAILED, + error: new Error('Exporter has been stopped'), + }); + this._finishedSpans.push(...spans); + setTimeout(() => resultCallback({ code: core_1.ExportResultCode.SUCCESS }), 0); + } + shutdown() { + this._stopped = true; + this._finishedSpans = []; + return this.forceFlush(); + } + /** + * Exports any pending spans in the exporter + */ + forceFlush() { + return Promise.resolve(); + } + reset() { + this._finishedSpans = []; + } + getFinishedSpans() { + return this._finishedSpans; + } +} +exports.InMemorySpanExporter = InMemorySpanExporter; +//# sourceMappingURL=InMemorySpanExporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.js.map new file mode 100644 index 0000000..4512e5c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"InMemorySpanExporter.js","sourceRoot":"","sources":["../../../src/export/InMemorySpanExporter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,8CAAqE;AAErE;;;;GAIG;AACH,MAAa,oBAAoB;IACvB,cAAc,GAAmB,EAAE,CAAC;IAC5C;;;OAGG;IACO,QAAQ,GAAG,KAAK,CAAC;IAE3B,MAAM,CACJ,KAAqB,EACrB,cAA8C;QAE9C,IAAI,IAAI,CAAC,QAAQ;YACf,OAAO,cAAc,CAAC;gBACpB,IAAI,EAAE,uBAAgB,CAAC,MAAM;gBAC7B,KAAK,EAAE,IAAI,KAAK,CAAC,2BAA2B,CAAC;aAC9C,CAAC,CAAC;QACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAEnC,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF;AA1CD,oDA0CC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { SpanExporter } from './SpanExporter';\nimport { ReadableSpan } from './ReadableSpan';\nimport { ExportResult, ExportResultCode } from '@opentelemetry/core';\n\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 */\nexport class InMemorySpanExporter implements SpanExporter {\n private _finishedSpans: ReadableSpan[] = [];\n /**\n * Indicates if the exporter has been \"shutdown.\"\n * When false, exported spans will not be stored in-memory.\n */\n protected _stopped = false;\n\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n if (this._stopped)\n return resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error('Exporter has been stopped'),\n });\n this._finishedSpans.push(...spans);\n\n setTimeout(() => resultCallback({ code: ExportResultCode.SUCCESS }), 0);\n }\n\n shutdown(): Promise {\n this._stopped = true;\n this._finishedSpans = [];\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in the exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n reset(): void {\n this._finishedSpans = [];\n }\n\n getFinishedSpans(): ReadableSpan[] {\n return this._finishedSpans;\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.d.ts new file mode 100644 index 0000000..fc70798 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.d.ts @@ -0,0 +1,12 @@ +import { Context } from '@opentelemetry/api'; +import { ReadableSpan } from './ReadableSpan'; +import { Span } from '../Span'; +import { SpanProcessor } from '../SpanProcessor'; +/** No-op implementation of SpanProcessor */ +export declare class NoopSpanProcessor implements SpanProcessor { + onStart(_span: Span, _context: Context): void; + onEnd(_span: ReadableSpan): void; + shutdown(): Promise; + forceFlush(): Promise; +} +//# sourceMappingURL=NoopSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.js new file mode 100644 index 0000000..d077865 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.js @@ -0,0 +1,31 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NoopSpanProcessor = void 0; +/** No-op implementation of SpanProcessor */ +class NoopSpanProcessor { + onStart(_span, _context) { } + onEnd(_span) { } + shutdown() { + return Promise.resolve(); + } + forceFlush() { + return Promise.resolve(); + } +} +exports.NoopSpanProcessor = NoopSpanProcessor; +//# sourceMappingURL=NoopSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.js.map new file mode 100644 index 0000000..d54ea90 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopSpanProcessor.js","sourceRoot":"","sources":["../../../src/export/NoopSpanProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAOH,4CAA4C;AAC5C,MAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAW,EAAE,QAAiB,IAAS,CAAC;IAChD,KAAK,CAAC,KAAmB,IAAS,CAAC;IACnC,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF;AATD,8CASC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context } from '@opentelemetry/api';\nimport { ReadableSpan } from './ReadableSpan';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\n\n/** No-op implementation of SpanProcessor */\nexport class NoopSpanProcessor implements SpanProcessor {\n onStart(_span: Span, _context: Context): void {}\n onEnd(_span: ReadableSpan): void {}\n shutdown(): Promise {\n return Promise.resolve();\n }\n forceFlush(): Promise {\n return Promise.resolve();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.d.ts new file mode 100644 index 0000000..1645fc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.d.ts @@ -0,0 +1,24 @@ +import { SpanKind, SpanStatus, Attributes, HrTime, Link, SpanContext } from '@opentelemetry/api'; +import { Resource } from '@opentelemetry/resources'; +import { InstrumentationScope } from '@opentelemetry/core'; +import { TimedEvent } from '../TimedEvent'; +export interface ReadableSpan { + readonly name: string; + readonly kind: SpanKind; + readonly spanContext: () => SpanContext; + readonly parentSpanContext?: SpanContext; + readonly startTime: HrTime; + readonly endTime: HrTime; + readonly status: SpanStatus; + readonly attributes: Attributes; + readonly links: Link[]; + readonly events: TimedEvent[]; + readonly duration: HrTime; + readonly ended: boolean; + readonly resource: Resource; + readonly instrumentationScope: InstrumentationScope; + readonly droppedAttributesCount: number; + readonly droppedEventsCount: number; + readonly droppedLinksCount: number; +} +//# sourceMappingURL=ReadableSpan.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.js new file mode 100644 index 0000000..f8bce6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=ReadableSpan.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.js.map new file mode 100644 index 0000000..3d9489d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ReadableSpan.js","sourceRoot":"","sources":["../../../src/export/ReadableSpan.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n SpanKind,\n SpanStatus,\n Attributes,\n HrTime,\n Link,\n SpanContext,\n} from '@opentelemetry/api';\nimport { Resource } from '@opentelemetry/resources';\nimport { InstrumentationScope } from '@opentelemetry/core';\nimport { TimedEvent } from '../TimedEvent';\n\nexport interface ReadableSpan {\n readonly name: string;\n readonly kind: SpanKind;\n readonly spanContext: () => SpanContext;\n readonly parentSpanContext?: SpanContext;\n readonly startTime: HrTime;\n readonly endTime: HrTime;\n readonly status: SpanStatus;\n readonly attributes: Attributes;\n readonly links: Link[];\n readonly events: TimedEvent[];\n readonly duration: HrTime;\n readonly ended: boolean;\n readonly resource: Resource;\n readonly instrumentationScope: InstrumentationScope;\n readonly droppedAttributesCount: number;\n readonly droppedEventsCount: number;\n readonly droppedLinksCount: number;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.d.ts new file mode 100644 index 0000000..395e7b5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.d.ts @@ -0,0 +1,26 @@ +import { Context } from '@opentelemetry/api'; +import { Span } from '../Span'; +import { SpanProcessor } from '../SpanProcessor'; +import { ReadableSpan } from './ReadableSpan'; +import { SpanExporter } from './SpanExporter'; +/** + * An implementation of the {@link SpanProcessor} that converts the {@link Span} + * to {@link ReadableSpan} and passes it to the configured exporter. + * + * Only spans that are sampled are converted. + * + * 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. + */ +export declare class SimpleSpanProcessor implements SpanProcessor { + private readonly _exporter; + private _shutdownOnce; + private _pendingExports; + constructor(exporter: SpanExporter); + forceFlush(): Promise; + onStart(_span: Span, _parentContext: Context): void; + onEnd(span: ReadableSpan): void; + private _doExport; + shutdown(): Promise; + private _shutdown; +} +//# sourceMappingURL=SimpleSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.js new file mode 100644 index 0000000..795f966 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.js @@ -0,0 +1,76 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SimpleSpanProcessor = void 0; +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +/** + * An implementation of the {@link SpanProcessor} that converts the {@link Span} + * to {@link ReadableSpan} and passes it to the configured exporter. + * + * Only spans that are sampled are converted. + * + * 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. + */ +class SimpleSpanProcessor { + _exporter; + _shutdownOnce; + _pendingExports; + constructor(exporter) { + this._exporter = exporter; + this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this); + this._pendingExports = new Set(); + } + async forceFlush() { + await Promise.all(Array.from(this._pendingExports)); + if (this._exporter.forceFlush) { + await this._exporter.forceFlush(); + } + } + onStart(_span, _parentContext) { } + onEnd(span) { + if (this._shutdownOnce.isCalled) { + return; + } + if ((span.spanContext().traceFlags & api_1.TraceFlags.SAMPLED) === 0) { + return; + } + const pendingExport = this._doExport(span).catch(err => (0, core_1.globalErrorHandler)(err)); + // Enqueue this export to the pending list so it can be flushed by the user. + this._pendingExports.add(pendingExport); + void pendingExport.finally(() => this._pendingExports.delete(pendingExport)); + } + async _doExport(span) { + if (span.resource.asyncAttributesPending) { + // Ensure resource is fully resolved before exporting. + await span.resource.waitForAsyncAttributes?.(); + } + const result = await core_1.internal._export(this._exporter, [span]); + if (result.code !== core_1.ExportResultCode.SUCCESS) { + throw (result.error ?? + new Error(`SimpleSpanProcessor: span export failed (status ${result})`)); + } + } + shutdown() { + return this._shutdownOnce.call(); + } + _shutdown() { + return this._exporter.shutdown(); + } +} +exports.SimpleSpanProcessor = SimpleSpanProcessor; +//# sourceMappingURL=SimpleSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.js.map new file mode 100644 index 0000000..72f1864 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SimpleSpanProcessor.js","sourceRoot":"","sources":["../../../src/export/SimpleSpanProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAyD;AACzD,8CAK6B;AAM7B;;;;;;;GAOG;AACH,MAAa,mBAAmB;IACb,SAAS,CAAe;IACjC,aAAa,CAAuB;IACpC,eAAe,CAAqB;IAE5C,YAAY,QAAsB;QAChC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,qBAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAiB,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;SACnC;IACH,CAAC;IAED,OAAO,CAAC,KAAW,EAAE,cAAuB,IAAS,CAAC;IAEtD,KAAK,CAAC,IAAkB;QACtB,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC/B,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,GAAG,gBAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC9D,OAAO;SACR;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CACrD,IAAA,yBAAkB,EAAC,GAAG,CAAC,CACxB,CAAC;QACF,4EAA4E;QAC5E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,KAAK,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAC3C,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAkB;QACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE;YACxC,sDAAsD;YACtD,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,CAAC;SAChD;QAED,MAAM,MAAM,GAAG,MAAM,eAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,IAAI,KAAK,uBAAgB,CAAC,OAAO,EAAE;YAC5C,MAAM,CACJ,MAAM,CAAC,KAAK;gBACZ,IAAI,KAAK,CAAC,mDAAmD,MAAM,GAAG,CAAC,CACxE,CAAC;SACH;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF;AA7DD,kDA6DC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, TraceFlags } from '@opentelemetry/api';\nimport {\n internal,\n ExportResultCode,\n globalErrorHandler,\n BindOnceFuture,\n} from '@opentelemetry/core';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\nimport { ReadableSpan } from './ReadableSpan';\nimport { SpanExporter } from './SpanExporter';\n\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 */\nexport class SimpleSpanProcessor implements SpanProcessor {\n private readonly _exporter: SpanExporter;\n private _shutdownOnce: BindOnceFuture;\n private _pendingExports: Set>;\n\n constructor(exporter: SpanExporter) {\n this._exporter = exporter;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n this._pendingExports = new Set>();\n }\n\n async forceFlush(): Promise {\n await Promise.all(Array.from(this._pendingExports));\n if (this._exporter.forceFlush) {\n await this._exporter.forceFlush();\n }\n }\n\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n const pendingExport = this._doExport(span).catch(err =>\n globalErrorHandler(err)\n );\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(() =>\n this._pendingExports.delete(pendingExport)\n );\n }\n\n private async _doExport(span: ReadableSpan): Promise {\n if (span.resource.asyncAttributesPending) {\n // Ensure resource is fully resolved before exporting.\n await span.resource.waitForAsyncAttributes?.();\n }\n\n const result = await internal._export(this._exporter, [span]);\n if (result.code !== ExportResultCode.SUCCESS) {\n throw (\n result.error ??\n new Error(`SimpleSpanProcessor: span export failed (status ${result})`)\n );\n }\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _shutdown(): Promise {\n return this._exporter.shutdown();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.d.ts new file mode 100644 index 0000000..0580a57 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.d.ts @@ -0,0 +1,21 @@ +import { ExportResult } from '@opentelemetry/core'; +import { ReadableSpan } from './ReadableSpan'; +/** + * An interface that allows different tracing services to export recorded data + * for sampled spans in their own format. + * + * To export data this MUST be register to the Tracer SDK using a optional + * config. + */ +export interface SpanExporter { + /** + * Called to export sampled {@link ReadableSpan}s. + * @param spans the list of sampled Spans to be exported. + */ + export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void; + /** Stops the exporter. */ + shutdown(): Promise; + /** Immediately export all spans */ + forceFlush?(): Promise; +} +//# sourceMappingURL=SpanExporter.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.js new file mode 100644 index 0000000..47e95b7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=SpanExporter.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.js.map new file mode 100644 index 0000000..d325196 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SpanExporter.js","sourceRoot":"","sources":["../../../src/export/SpanExporter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ExportResult } from '@opentelemetry/core';\nimport { ReadableSpan } from './ReadableSpan';\n\n/**\n * An interface that allows different tracing services to export recorded data\n * for sampled spans in their own format.\n *\n * To export data this MUST be register to the Tracer SDK using a optional\n * config.\n */\nexport interface SpanExporter {\n /**\n * Called to export sampled {@link ReadableSpan}s.\n * @param spans the list of sampled Spans to be exported.\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void;\n\n /** Stops the exporter. */\n shutdown(): Promise;\n\n /** Immediately export all spans */\n forceFlush?(): Promise;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/index.d.ts new file mode 100644 index 0000000..db7e88a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/index.d.ts @@ -0,0 +1,20 @@ +export { BasicTracerProvider } from './BasicTracerProvider'; +export { BatchSpanProcessor, RandomIdGenerator } from './platform'; +export { ConsoleSpanExporter } from './export/ConsoleSpanExporter'; +export { InMemorySpanExporter } from './export/InMemorySpanExporter'; +export type { ReadableSpan } from './export/ReadableSpan'; +export { SimpleSpanProcessor } from './export/SimpleSpanProcessor'; +export type { SpanExporter } from './export/SpanExporter'; +export { NoopSpanProcessor } from './export/NoopSpanProcessor'; +export { AlwaysOffSampler } from './sampler/AlwaysOffSampler'; +export { AlwaysOnSampler } from './sampler/AlwaysOnSampler'; +export { ParentBasedSampler } from './sampler/ParentBasedSampler'; +export { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler'; +export { SamplingDecision } from './Sampler'; +export type { Sampler, SamplingResult } from './Sampler'; +export type { Span } from './Span'; +export type { SpanProcessor } from './SpanProcessor'; +export type { TimedEvent } from './TimedEvent'; +export type { BatchSpanProcessorBrowserConfig, BufferConfig, GeneralLimits, SDKRegistrationConfig, SpanLimits, TracerConfig, } from './types'; +export type { IdGenerator } from './IdGenerator'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/index.js new file mode 100644 index 0000000..632f563 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/index.js @@ -0,0 +1,42 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +var BasicTracerProvider_1 = require("./BasicTracerProvider"); +Object.defineProperty(exports, "BasicTracerProvider", { enumerable: true, get: function () { return BasicTracerProvider_1.BasicTracerProvider; } }); +var platform_1 = require("./platform"); +Object.defineProperty(exports, "BatchSpanProcessor", { enumerable: true, get: function () { return platform_1.BatchSpanProcessor; } }); +Object.defineProperty(exports, "RandomIdGenerator", { enumerable: true, get: function () { return platform_1.RandomIdGenerator; } }); +var ConsoleSpanExporter_1 = require("./export/ConsoleSpanExporter"); +Object.defineProperty(exports, "ConsoleSpanExporter", { enumerable: true, get: function () { return ConsoleSpanExporter_1.ConsoleSpanExporter; } }); +var InMemorySpanExporter_1 = require("./export/InMemorySpanExporter"); +Object.defineProperty(exports, "InMemorySpanExporter", { enumerable: true, get: function () { return InMemorySpanExporter_1.InMemorySpanExporter; } }); +var SimpleSpanProcessor_1 = require("./export/SimpleSpanProcessor"); +Object.defineProperty(exports, "SimpleSpanProcessor", { enumerable: true, get: function () { return SimpleSpanProcessor_1.SimpleSpanProcessor; } }); +var NoopSpanProcessor_1 = require("./export/NoopSpanProcessor"); +Object.defineProperty(exports, "NoopSpanProcessor", { enumerable: true, get: function () { return NoopSpanProcessor_1.NoopSpanProcessor; } }); +var AlwaysOffSampler_1 = require("./sampler/AlwaysOffSampler"); +Object.defineProperty(exports, "AlwaysOffSampler", { enumerable: true, get: function () { return AlwaysOffSampler_1.AlwaysOffSampler; } }); +var AlwaysOnSampler_1 = require("./sampler/AlwaysOnSampler"); +Object.defineProperty(exports, "AlwaysOnSampler", { enumerable: true, get: function () { return AlwaysOnSampler_1.AlwaysOnSampler; } }); +var ParentBasedSampler_1 = require("./sampler/ParentBasedSampler"); +Object.defineProperty(exports, "ParentBasedSampler", { enumerable: true, get: function () { return ParentBasedSampler_1.ParentBasedSampler; } }); +var TraceIdRatioBasedSampler_1 = require("./sampler/TraceIdRatioBasedSampler"); +Object.defineProperty(exports, "TraceIdRatioBasedSampler", { enumerable: true, get: function () { return TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler; } }); +var Sampler_1 = require("./Sampler"); +Object.defineProperty(exports, "SamplingDecision", { enumerable: true, get: function () { return Sampler_1.SamplingDecision; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/index.js.map new file mode 100644 index 0000000..29b7ba3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,uCAAmE;AAA1D,8GAAA,kBAAkB,OAAA;AAAE,6GAAA,iBAAiB,OAAA;AAC9C,oEAAmE;AAA1D,0HAAA,mBAAmB,OAAA;AAC5B,sEAAqE;AAA5D,4HAAA,oBAAoB,OAAA;AAE7B,oEAAmE;AAA1D,0HAAA,mBAAmB,OAAA;AAE5B,gEAA+D;AAAtD,sHAAA,iBAAiB,OAAA;AAC1B,+DAA8D;AAArD,oHAAA,gBAAgB,OAAA;AACzB,6DAA4D;AAAnD,kHAAA,eAAe,OAAA;AACxB,mEAAkE;AAAzD,wHAAA,kBAAkB,OAAA;AAC3B,+EAA8E;AAArE,oIAAA,wBAAwB,OAAA;AACjC,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BasicTracerProvider } from './BasicTracerProvider';\nexport { BatchSpanProcessor, RandomIdGenerator } from './platform';\nexport { ConsoleSpanExporter } from './export/ConsoleSpanExporter';\nexport { InMemorySpanExporter } from './export/InMemorySpanExporter';\nexport type { ReadableSpan } from './export/ReadableSpan';\nexport { SimpleSpanProcessor } from './export/SimpleSpanProcessor';\nexport type { SpanExporter } from './export/SpanExporter';\nexport { NoopSpanProcessor } from './export/NoopSpanProcessor';\nexport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nexport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nexport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nexport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\nexport { SamplingDecision } from './Sampler';\nexport type { Sampler, SamplingResult } from './Sampler';\nexport type { Span } from './Span';\nexport type { SpanProcessor } from './SpanProcessor';\nexport type { TimedEvent } from './TimedEvent';\nexport type {\n BatchSpanProcessorBrowserConfig,\n BufferConfig,\n GeneralLimits,\n SDKRegistrationConfig,\n SpanLimits,\n TracerConfig,\n} from './types';\nexport type { IdGenerator } from './IdGenerator';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/RandomIdGenerator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/RandomIdGenerator.d.ts new file mode 100644 index 0000000..846240d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/RandomIdGenerator.d.ts @@ -0,0 +1,14 @@ +import { IdGenerator } from '../../IdGenerator'; +export declare class RandomIdGenerator implements IdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId: () => string; + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId: () => string; +} +//# sourceMappingURL=RandomIdGenerator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/RandomIdGenerator.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/RandomIdGenerator.js new file mode 100644 index 0000000..82aab2a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/RandomIdGenerator.js @@ -0,0 +1,47 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RandomIdGenerator = void 0; +const SPAN_ID_BYTES = 8; +const TRACE_ID_BYTES = 16; +class RandomIdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId = getIdGenerator(TRACE_ID_BYTES); + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId = getIdGenerator(SPAN_ID_BYTES); +} +exports.RandomIdGenerator = RandomIdGenerator; +const SHARED_CHAR_CODES_ARRAY = Array(32); +function getIdGenerator(bytes) { + return function generateId() { + for (let i = 0; i < bytes * 2; i++) { + SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48; + // valid hex characters in the range 48-57 and 97-102 + if (SHARED_CHAR_CODES_ARRAY[i] >= 58) { + SHARED_CHAR_CODES_ARRAY[i] += 39; + } + } + return String.fromCharCode.apply(null, SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2)); + }; +} +//# sourceMappingURL=RandomIdGenerator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/RandomIdGenerator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/RandomIdGenerator.js.map new file mode 100644 index 0000000..0cb1d56 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/RandomIdGenerator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RandomIdGenerator.js","sourceRoot":"","sources":["../../../../src/platform/browser/RandomIdGenerator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAAa,iBAAiB;IAC5B;;;OAGG;IACH,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEjD;;;OAGG;IACH,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;CAChD;AAZD,8CAYC;AAED,MAAM,uBAAuB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1C,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,SAAS,UAAU;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,uBAAuB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YACjE,qDAAqD;YACrD,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;gBACpC,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClC;SACF;QACD,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAC9B,IAAI,EACJ,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAC5C,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { IdGenerator } from '../../IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\nexport class RandomIdGenerator implements IdGenerator {\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 /**\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}\n\nconst SHARED_CHAR_CODES_ARRAY = Array(32);\nfunction getIdGenerator(bytes: number): () => string {\n return function generateId() {\n for (let i = 0; i < bytes * 2; i++) {\n SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48;\n // valid hex characters in the range 48-57 and 97-102\n if (SHARED_CHAR_CODES_ARRAY[i] >= 58) {\n SHARED_CHAR_CODES_ARRAY[i] += 39;\n }\n }\n return String.fromCharCode.apply(\n null,\n SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2)\n );\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/export/BatchSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/export/BatchSpanProcessor.d.ts new file mode 100644 index 0000000..6fd5820 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/export/BatchSpanProcessor.d.ts @@ -0,0 +1,11 @@ +import { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase'; +import { SpanExporter } from '../../../export/SpanExporter'; +import { BatchSpanProcessorBrowserConfig } from '../../../types'; +export declare class BatchSpanProcessor extends BatchSpanProcessorBase { + private _visibilityChangeListener?; + private _pageHideListener?; + constructor(_exporter: SpanExporter, config?: BatchSpanProcessorBrowserConfig); + private onInit; + protected onShutdown(): void; +} +//# sourceMappingURL=BatchSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/export/BatchSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/export/BatchSpanProcessor.js new file mode 100644 index 0000000..1186ff0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/export/BatchSpanProcessor.js @@ -0,0 +1,60 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BatchSpanProcessor = void 0; +const BatchSpanProcessorBase_1 = require("../../../export/BatchSpanProcessorBase"); +const core_1 = require("@opentelemetry/core"); +class BatchSpanProcessor extends BatchSpanProcessorBase_1.BatchSpanProcessorBase { + _visibilityChangeListener; + _pageHideListener; + constructor(_exporter, config) { + super(_exporter, config); + this.onInit(config); + } + onInit(config) { + if (config?.disableAutoFlushOnDocumentHide !== true && + typeof document !== 'undefined') { + this._visibilityChangeListener = () => { + if (document.visibilityState === 'hidden') { + this.forceFlush().catch(error => { + (0, core_1.globalErrorHandler)(error); + }); + } + }; + this._pageHideListener = () => { + this.forceFlush().catch(error => { + (0, core_1.globalErrorHandler)(error); + }); + }; + document.addEventListener('visibilitychange', this._visibilityChangeListener); + // use 'pagehide' event as a fallback for Safari; see https://bugs.webkit.org/show_bug.cgi?id=116769 + document.addEventListener('pagehide', this._pageHideListener); + } + } + onShutdown() { + if (typeof document !== 'undefined') { + if (this._visibilityChangeListener) { + document.removeEventListener('visibilitychange', this._visibilityChangeListener); + } + if (this._pageHideListener) { + document.removeEventListener('pagehide', this._pageHideListener); + } + } + } +} +exports.BatchSpanProcessor = BatchSpanProcessor; +//# sourceMappingURL=BatchSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/export/BatchSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/export/BatchSpanProcessor.js.map new file mode 100644 index 0000000..b198e6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/export/BatchSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchSpanProcessor.js","sourceRoot":"","sources":["../../../../../src/platform/browser/export/BatchSpanProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,mFAAgF;AAGhF,8CAAyD;AAEzD,MAAa,kBAAmB,SAAQ,+CAAuD;IACrF,yBAAyB,CAAc;IACvC,iBAAiB,CAAc;IAEvC,YACE,SAAuB,EACvB,MAAwC;QAExC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,MAAwC;QACrD,IACE,MAAM,EAAE,8BAA8B,KAAK,IAAI;YAC/C,OAAO,QAAQ,KAAK,WAAW,EAC/B;YACA,IAAI,CAAC,yBAAyB,GAAG,GAAG,EAAE;gBACpC,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE;oBACzC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBAC9B,IAAA,yBAAkB,EAAC,KAAK,CAAC,CAAC;oBAC5B,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,GAAG,EAAE;gBAC5B,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC9B,IAAA,yBAAkB,EAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,QAAQ,CAAC,gBAAgB,CACvB,kBAAkB,EAClB,IAAI,CAAC,yBAAyB,CAC/B,CAAC;YAEF,oGAAoG;YACpG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC/D;IACH,CAAC;IAES,UAAU;QAClB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,QAAQ,CAAC,mBAAmB,CAC1B,kBAAkB,EAClB,IAAI,CAAC,yBAAyB,CAC/B,CAAC;aACH;YACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAClE;SACF;IACH,CAAC;CACF;AApDD,gDAoDC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase';\nimport { SpanExporter } from '../../../export/SpanExporter';\nimport { BatchSpanProcessorBrowserConfig } from '../../../types';\nimport { globalErrorHandler } from '@opentelemetry/core';\n\nexport class BatchSpanProcessor extends BatchSpanProcessorBase {\n private _visibilityChangeListener?: () => void;\n private _pageHideListener?: () => void;\n\n constructor(\n _exporter: SpanExporter,\n config?: BatchSpanProcessorBrowserConfig\n ) {\n super(_exporter, config);\n this.onInit(config);\n }\n\n private onInit(config?: BatchSpanProcessorBrowserConfig): void {\n if (\n config?.disableAutoFlushOnDocumentHide !== true &&\n typeof document !== 'undefined'\n ) {\n this._visibilityChangeListener = () => {\n if (document.visibilityState === 'hidden') {\n this.forceFlush().catch(error => {\n globalErrorHandler(error);\n });\n }\n };\n this._pageHideListener = () => {\n this.forceFlush().catch(error => {\n globalErrorHandler(error);\n });\n };\n document.addEventListener(\n 'visibilitychange',\n this._visibilityChangeListener\n );\n\n // use 'pagehide' event as a fallback for Safari; see https://bugs.webkit.org/show_bug.cgi?id=116769\n document.addEventListener('pagehide', this._pageHideListener);\n }\n }\n\n protected onShutdown(): void {\n if (typeof document !== 'undefined') {\n if (this._visibilityChangeListener) {\n document.removeEventListener(\n 'visibilitychange',\n this._visibilityChangeListener\n );\n }\n if (this._pageHideListener) {\n document.removeEventListener('pagehide', this._pageHideListener);\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/index.d.ts new file mode 100644 index 0000000..40c4ca6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/index.d.ts @@ -0,0 +1,3 @@ +export { BatchSpanProcessor } from './export/BatchSpanProcessor'; +export { RandomIdGenerator } from './RandomIdGenerator'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/index.js new file mode 100644 index 0000000..ca80efd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/index.js @@ -0,0 +1,23 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RandomIdGenerator = exports.BatchSpanProcessor = void 0; +var BatchSpanProcessor_1 = require("./export/BatchSpanProcessor"); +Object.defineProperty(exports, "BatchSpanProcessor", { enumerable: true, get: function () { return BatchSpanProcessor_1.BatchSpanProcessor; } }); +var RandomIdGenerator_1 = require("./RandomIdGenerator"); +Object.defineProperty(exports, "RandomIdGenerator", { enumerable: true, get: function () { return RandomIdGenerator_1.RandomIdGenerator; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/index.js.map new file mode 100644 index 0000000..43994ad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,kEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAC3B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BatchSpanProcessor } from './export/BatchSpanProcessor';\nexport { RandomIdGenerator } from './RandomIdGenerator';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.d.ts new file mode 100644 index 0000000..d5add34 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.d.ts @@ -0,0 +1,2 @@ +export { BatchSpanProcessor, RandomIdGenerator } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.js new file mode 100644 index 0000000..7357cec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RandomIdGenerator = exports.BatchSpanProcessor = void 0; +var node_1 = require("./node"); +Object.defineProperty(exports, "BatchSpanProcessor", { enumerable: true, get: function () { return node_1.BatchSpanProcessor; } }); +Object.defineProperty(exports, "RandomIdGenerator", { enumerable: true, get: function () { return node_1.RandomIdGenerator; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.js.map new file mode 100644 index 0000000..a418870 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,+BAA+D;AAAtD,0GAAA,kBAAkB,OAAA;AAAE,yGAAA,iBAAiB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BatchSpanProcessor, RandomIdGenerator } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.d.ts new file mode 100644 index 0000000..846240d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.d.ts @@ -0,0 +1,14 @@ +import { IdGenerator } from '../../IdGenerator'; +export declare class RandomIdGenerator implements IdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId: () => string; + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId: () => string; +} +//# sourceMappingURL=RandomIdGenerator.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.js new file mode 100644 index 0000000..4762173 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.js @@ -0,0 +1,54 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RandomIdGenerator = void 0; +const SPAN_ID_BYTES = 8; +const TRACE_ID_BYTES = 16; +class RandomIdGenerator { + /** + * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex + * characters corresponding to 128 bits. + */ + generateTraceId = getIdGenerator(TRACE_ID_BYTES); + /** + * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex + * characters corresponding to 64 bits. + */ + generateSpanId = getIdGenerator(SPAN_ID_BYTES); +} +exports.RandomIdGenerator = RandomIdGenerator; +const SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES); +function getIdGenerator(bytes) { + return function generateId() { + for (let i = 0; i < bytes / 4; i++) { + // unsigned right shift drops decimal part of the number + // 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 + SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4); + } + // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated + for (let i = 0; i < bytes; i++) { + if (SHARED_BUFFER[i] > 0) { + break; + } + else if (i === bytes - 1) { + SHARED_BUFFER[bytes - 1] = 1; + } + } + return SHARED_BUFFER.toString('hex', 0, bytes); + }; +} +//# sourceMappingURL=RandomIdGenerator.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.js.map new file mode 100644 index 0000000..7fdfdce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RandomIdGenerator.js","sourceRoot":"","sources":["../../../../src/platform/node/RandomIdGenerator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAAa,iBAAiB;IAC5B;;;OAGG;IACH,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEjD;;;OAGG;IACH,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;CAChD;AAZD,8CAYC;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACzD,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,SAAS,UAAU;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,wDAAwD;YACxD,gIAAgI;YAChI,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACrE;QAED,sFAAsF;QACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACxB,MAAM;aACP;iBAAM,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE;gBAC1B,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;aAC9B;SACF;QAED,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { IdGenerator } from '../../IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\nexport class RandomIdGenerator implements IdGenerator {\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 /**\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}\n\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes: number): () => string {\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\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 } else if (i === bytes - 1) {\n SHARED_BUFFER[bytes - 1] = 1;\n }\n }\n\n return SHARED_BUFFER.toString('hex', 0, bytes);\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.d.ts new file mode 100644 index 0000000..fc75ac2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.d.ts @@ -0,0 +1,6 @@ +import { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase'; +import { BufferConfig } from '../../../types'; +export declare class BatchSpanProcessor extends BatchSpanProcessorBase { + protected onShutdown(): void; +} +//# sourceMappingURL=BatchSpanProcessor.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.js new file mode 100644 index 0000000..91e47b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.js @@ -0,0 +1,24 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BatchSpanProcessor = void 0; +const BatchSpanProcessorBase_1 = require("../../../export/BatchSpanProcessorBase"); +class BatchSpanProcessor extends BatchSpanProcessorBase_1.BatchSpanProcessorBase { + onShutdown() { } +} +exports.BatchSpanProcessor = BatchSpanProcessor; +//# sourceMappingURL=BatchSpanProcessor.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.js.map new file mode 100644 index 0000000..8a25dd2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchSpanProcessor.js","sourceRoot":"","sources":["../../../../../src/platform/node/export/BatchSpanProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,mFAAgF;AAGhF,MAAa,kBAAmB,SAAQ,+CAAoC;IAChE,UAAU,KAAU,CAAC;CAChC;AAFD,gDAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase';\nimport { BufferConfig } from '../../../types';\n\nexport class BatchSpanProcessor extends BatchSpanProcessorBase {\n protected onShutdown(): void {}\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.d.ts new file mode 100644 index 0000000..40c4ca6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.d.ts @@ -0,0 +1,3 @@ +export { BatchSpanProcessor } from './export/BatchSpanProcessor'; +export { RandomIdGenerator } from './RandomIdGenerator'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.js new file mode 100644 index 0000000..ca80efd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.js @@ -0,0 +1,23 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RandomIdGenerator = exports.BatchSpanProcessor = void 0; +var BatchSpanProcessor_1 = require("./export/BatchSpanProcessor"); +Object.defineProperty(exports, "BatchSpanProcessor", { enumerable: true, get: function () { return BatchSpanProcessor_1.BatchSpanProcessor; } }); +var RandomIdGenerator_1 = require("./RandomIdGenerator"); +Object.defineProperty(exports, "RandomIdGenerator", { enumerable: true, get: function () { return RandomIdGenerator_1.RandomIdGenerator; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.js.map new file mode 100644 index 0000000..066b7d1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,kEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAC3B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { BatchSpanProcessor } from './export/BatchSpanProcessor';\nexport { RandomIdGenerator } from './RandomIdGenerator';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.d.ts new file mode 100644 index 0000000..1dfe8ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.d.ts @@ -0,0 +1,7 @@ +import { Sampler, SamplingResult } from '../Sampler'; +/** Sampler that samples no traces. */ +export declare class AlwaysOffSampler implements Sampler { + shouldSample(): SamplingResult; + toString(): string; +} +//# sourceMappingURL=AlwaysOffSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.js new file mode 100644 index 0000000..7341f10 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.js @@ -0,0 +1,32 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AlwaysOffSampler = void 0; +const Sampler_1 = require("../Sampler"); +/** Sampler that samples no traces. */ +class AlwaysOffSampler { + shouldSample() { + return { + decision: Sampler_1.SamplingDecision.NOT_RECORD, + }; + } + toString() { + return 'AlwaysOffSampler'; + } +} +exports.AlwaysOffSampler = AlwaysOffSampler; +//# sourceMappingURL=AlwaysOffSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.js.map new file mode 100644 index 0000000..d9ae4c2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AlwaysOffSampler.js","sourceRoot":"","sources":["../../../src/sampler/AlwaysOffSampler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,wCAAuE;AAEvE,sCAAsC;AACtC,MAAa,gBAAgB;IAC3B,YAAY;QACV,OAAO;YACL,QAAQ,EAAE,0BAAgB,CAAC,UAAU;SACtC,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF;AAVD,4CAUC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples no traces. */\nexport class AlwaysOffSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return 'AlwaysOffSampler';\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.d.ts new file mode 100644 index 0000000..9a7e914 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.d.ts @@ -0,0 +1,7 @@ +import { Sampler, SamplingResult } from '../Sampler'; +/** Sampler that samples all traces. */ +export declare class AlwaysOnSampler implements Sampler { + shouldSample(): SamplingResult; + toString(): string; +} +//# sourceMappingURL=AlwaysOnSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.js new file mode 100644 index 0000000..223b770 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.js @@ -0,0 +1,32 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AlwaysOnSampler = void 0; +const Sampler_1 = require("../Sampler"); +/** Sampler that samples all traces. */ +class AlwaysOnSampler { + shouldSample() { + return { + decision: Sampler_1.SamplingDecision.RECORD_AND_SAMPLED, + }; + } + toString() { + return 'AlwaysOnSampler'; + } +} +exports.AlwaysOnSampler = AlwaysOnSampler; +//# sourceMappingURL=AlwaysOnSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.js.map new file mode 100644 index 0000000..e3d5aeb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AlwaysOnSampler.js","sourceRoot":"","sources":["../../../src/sampler/AlwaysOnSampler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,wCAAuE;AAEvE,uCAAuC;AACvC,MAAa,eAAe;IAC1B,YAAY;QACV,OAAO;YACL,QAAQ,EAAE,0BAAgB,CAAC,kBAAkB;SAC9C,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AAVD,0CAUC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples all traces. */\nexport class AlwaysOnSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n\n toString(): string {\n return 'AlwaysOnSampler';\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.d.ts new file mode 100644 index 0000000..96c4ef7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.d.ts @@ -0,0 +1,30 @@ +import { Context, Link, Attributes, SpanKind } from '@opentelemetry/api'; +import { Sampler, SamplingResult } from '../Sampler'; +/** + * A composite sampler that either respects the parent span's sampling decision + * or delegates to `delegateSampler` for root spans. + */ +export declare class ParentBasedSampler implements Sampler { + private _root; + private _remoteParentSampled; + private _remoteParentNotSampled; + private _localParentSampled; + private _localParentNotSampled; + constructor(config: ParentBasedSamplerConfig); + shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: Attributes, links: Link[]): SamplingResult; + toString(): string; +} +interface ParentBasedSamplerConfig { + /** Sampler called for spans with no parent */ + root: Sampler; + /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */ + remoteParentSampled?: Sampler; + /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */ + remoteParentNotSampled?: Sampler; + /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */ + localParentSampled?: Sampler; + /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */ + localParentNotSampled?: Sampler; +} +export {}; +//# sourceMappingURL=ParentBasedSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.js new file mode 100644 index 0000000..c77b438 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.js @@ -0,0 +1,69 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ParentBasedSampler = void 0; +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +const AlwaysOffSampler_1 = require("./AlwaysOffSampler"); +const AlwaysOnSampler_1 = require("./AlwaysOnSampler"); +/** + * A composite sampler that either respects the parent span's sampling decision + * or delegates to `delegateSampler` for root spans. + */ +class ParentBasedSampler { + _root; + _remoteParentSampled; + _remoteParentNotSampled; + _localParentSampled; + _localParentNotSampled; + constructor(config) { + this._root = config.root; + if (!this._root) { + (0, core_1.globalErrorHandler)(new Error('ParentBasedSampler must have a root sampler configured')); + this._root = new AlwaysOnSampler_1.AlwaysOnSampler(); + } + this._remoteParentSampled = + config.remoteParentSampled ?? new AlwaysOnSampler_1.AlwaysOnSampler(); + this._remoteParentNotSampled = + config.remoteParentNotSampled ?? new AlwaysOffSampler_1.AlwaysOffSampler(); + this._localParentSampled = + config.localParentSampled ?? new AlwaysOnSampler_1.AlwaysOnSampler(); + this._localParentNotSampled = + config.localParentNotSampled ?? new AlwaysOffSampler_1.AlwaysOffSampler(); + } + shouldSample(context, traceId, spanName, spanKind, attributes, links) { + const parentContext = api_1.trace.getSpanContext(context); + if (!parentContext || !(0, api_1.isSpanContextValid)(parentContext)) { + return this._root.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + if (parentContext.isRemote) { + if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) { + return this._remoteParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + return this._remoteParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) { + return this._localParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + return this._localParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links); + } + toString() { + return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`; + } +} +exports.ParentBasedSampler = ParentBasedSampler; +//# sourceMappingURL=ParentBasedSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.js.map new file mode 100644 index 0000000..bad8902 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ParentBasedSampler.js","sourceRoot":"","sources":["../../../src/sampler/ParentBasedSampler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAQ4B;AAC5B,8CAAyD;AACzD,yDAAsD;AACtD,uDAAoD;AAGpD;;;GAGG;AACH,MAAa,kBAAkB;IACrB,KAAK,CAAU;IACf,oBAAoB,CAAU;IAC9B,uBAAuB,CAAU;IACjC,mBAAmB,CAAU;IAC7B,sBAAsB,CAAU;IAExC,YAAY,MAAgC;QAC1C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,IAAA,yBAAkB,EAChB,IAAI,KAAK,CAAC,wDAAwD,CAAC,CACpE,CAAC;YACF,IAAI,CAAC,KAAK,GAAG,IAAI,iCAAe,EAAE,CAAC;SACpC;QAED,IAAI,CAAC,oBAAoB;YACvB,MAAM,CAAC,mBAAmB,IAAI,IAAI,iCAAe,EAAE,CAAC;QACtD,IAAI,CAAC,uBAAuB;YAC1B,MAAM,CAAC,sBAAsB,IAAI,IAAI,mCAAgB,EAAE,CAAC;QAC1D,IAAI,CAAC,mBAAmB;YACtB,MAAM,CAAC,kBAAkB,IAAI,IAAI,iCAAe,EAAE,CAAC;QACrD,IAAI,CAAC,sBAAsB;YACzB,MAAM,CAAC,qBAAqB,IAAI,IAAI,mCAAgB,EAAE,CAAC;IAC3D,CAAC;IAED,YAAY,CACV,OAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,QAAkB,EAClB,UAAsB,EACtB,KAAa;QAEb,MAAM,aAAa,GAAG,WAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,IAAI,CAAC,IAAA,wBAAkB,EAAC,aAAa,CAAC,EAAE;YACxD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAC5B,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;SACH;QAED,IAAI,aAAa,CAAC,QAAQ,EAAE;YAC1B,IAAI,aAAa,CAAC,UAAU,GAAG,gBAAU,CAAC,OAAO,EAAE;gBACjD,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAC3C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;aACH;YACD,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAC9C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;SACH;QAED,IAAI,aAAa,CAAC,UAAU,GAAG,gBAAU,CAAC,OAAO,EAAE;YACjD,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAC1C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;SACH;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAC7C,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,CACN,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,oBAAoB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,yBAAyB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,4BAA4B,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,wBAAwB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,2BAA2B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC;IAClT,CAAC;CACF;AA7FD,gDA6FC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n Context,\n isSpanContextValid,\n Link,\n Attributes,\n SpanKind,\n TraceFlags,\n trace,\n} from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { AlwaysOffSampler } from './AlwaysOffSampler';\nimport { AlwaysOnSampler } from './AlwaysOnSampler';\nimport { Sampler, SamplingResult } from '../Sampler';\n\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nexport class ParentBasedSampler implements Sampler {\n private _root: Sampler;\n private _remoteParentSampled: Sampler;\n private _remoteParentNotSampled: Sampler;\n private _localParentSampled: Sampler;\n private _localParentNotSampled: Sampler;\n\n constructor(config: ParentBasedSamplerConfig) {\n this._root = config.root;\n\n if (!this._root) {\n globalErrorHandler(\n new Error('ParentBasedSampler must have a root sampler configured')\n );\n this._root = new AlwaysOnSampler();\n }\n\n this._remoteParentSampled =\n config.remoteParentSampled ?? new AlwaysOnSampler();\n this._remoteParentNotSampled =\n config.remoteParentNotSampled ?? new AlwaysOffSampler();\n this._localParentSampled =\n config.localParentSampled ?? new AlwaysOnSampler();\n this._localParentNotSampled =\n config.localParentNotSampled ?? new AlwaysOffSampler();\n }\n\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult {\n const parentContext = trace.getSpanContext(context);\n\n if (!parentContext || !isSpanContextValid(parentContext)) {\n return this._root.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n return this._remoteParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n return this._localParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n toString(): string {\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}\n\ninterface ParentBasedSamplerConfig {\n /** Sampler called for spans with no parent */\n root: Sampler;\n /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */\n remoteParentSampled?: Sampler;\n /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */\n remoteParentNotSampled?: Sampler;\n /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */\n localParentSampled?: Sampler;\n /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */\n localParentNotSampled?: Sampler;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.d.ts new file mode 100644 index 0000000..36ad233 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.d.ts @@ -0,0 +1,12 @@ +import { Sampler, SamplingResult } from '../Sampler'; +/** Sampler that samples a given fraction of traces based of trace id deterministically. */ +export declare class TraceIdRatioBasedSampler implements Sampler { + private readonly _ratio; + private _upperBound; + constructor(ratio?: number); + shouldSample(context: unknown, traceId: string): SamplingResult; + toString(): string; + private _normalize; + private _accumulate; +} +//# sourceMappingURL=TraceIdRatioBasedSampler.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.js new file mode 100644 index 0000000..6737673 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.js @@ -0,0 +1,55 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TraceIdRatioBasedSampler = void 0; +const api_1 = require("@opentelemetry/api"); +const Sampler_1 = require("../Sampler"); +/** Sampler that samples a given fraction of traces based of trace id deterministically. */ +class TraceIdRatioBasedSampler { + _ratio; + _upperBound; + constructor(ratio = 0) { + this._ratio = this._normalize(ratio); + this._upperBound = Math.floor(this._ratio * 0xffffffff); + } + shouldSample(context, traceId) { + return { + decision: (0, api_1.isValidTraceId)(traceId) && this._accumulate(traceId) < this._upperBound + ? Sampler_1.SamplingDecision.RECORD_AND_SAMPLED + : Sampler_1.SamplingDecision.NOT_RECORD, + }; + } + toString() { + return `TraceIdRatioBased{${this._ratio}}`; + } + _normalize(ratio) { + if (typeof ratio !== 'number' || isNaN(ratio)) + return 0; + return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio; + } + _accumulate(traceId) { + let accumulation = 0; + for (let i = 0; i < traceId.length / 8; i++) { + const pos = i * 8; + const part = parseInt(traceId.slice(pos, pos + 8), 16); + accumulation = (accumulation ^ part) >>> 0; + } + return accumulation; + } +} +exports.TraceIdRatioBasedSampler = TraceIdRatioBasedSampler; +//# sourceMappingURL=TraceIdRatioBasedSampler.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.js.map new file mode 100644 index 0000000..14b2bf2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TraceIdRatioBasedSampler.js","sourceRoot":"","sources":["../../../src/sampler/TraceIdRatioBasedSampler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAoD;AACpD,wCAAuE;AAEvE,2FAA2F;AAC3F,MAAa,wBAAwB;IAClB,MAAM,CAAC;IAChB,WAAW,CAAS;IAE5B,YAAY,KAAK,GAAG,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,YAAY,CAAC,OAAgB,EAAE,OAAe;QAC5C,OAAO;YACL,QAAQ,EACN,IAAA,oBAAc,EAAC,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW;gBACrE,CAAC,CAAC,0BAAgB,CAAC,kBAAkB;gBACrC,CAAC,CAAC,0BAAgB,CAAC,UAAU;SAClC,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,qBAAqB,IAAI,CAAC,MAAM,GAAG,CAAC;IAC7C,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACxD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;IAEO,WAAW,CAAC,OAAe;QACjC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,YAAY,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5C;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AApCD,4DAoCC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { isValidTraceId } from '@opentelemetry/api';\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nexport class TraceIdRatioBasedSampler implements Sampler {\n private readonly _ratio;\n private _upperBound: number;\n\n constructor(ratio = 0) {\n this._ratio = this._normalize(ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n\n shouldSample(context: unknown, traceId: string): SamplingResult {\n return {\n decision:\n isValidTraceId(traceId) && this._accumulate(traceId) < this._upperBound\n ? SamplingDecision.RECORD_AND_SAMPLED\n : SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n\n private _normalize(ratio: number): number {\n if (typeof ratio !== 'number' || isNaN(ratio)) return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n\n private _accumulate(traceId: string): number {\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/types.d.ts new file mode 100644 index 0000000..9ae585b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/types.d.ts @@ -0,0 +1,89 @@ +import { ContextManager, TextMapPropagator } from '@opentelemetry/api'; +import { Resource } from '@opentelemetry/resources'; +import { IdGenerator } from './IdGenerator'; +import { Sampler } from './Sampler'; +import { SpanProcessor } from './SpanProcessor'; +/** + * TracerConfig provides an interface for configuring a Basic Tracer. + */ +export interface TracerConfig { + /** + * Sampler determines if a span should be recorded or should be a NoopSpan. + */ + sampler?: Sampler; + /** General Limits */ + generalLimits?: GeneralLimits; + /** Span Limits */ + spanLimits?: SpanLimits; + /** Resource associated with trace telemetry */ + resource?: Resource; + /** + * Generator of trace and span IDs + * The default idGenerator generates random ids + */ + idGenerator?: IdGenerator; + /** + * How long the forceFlush can run before it is cancelled. + * The default value is 30000ms + */ + forceFlushTimeoutMillis?: number; + /** + * List of SpanProcessor for the tracer + */ + spanProcessors?: SpanProcessor[]; +} +/** + * Configuration options for registering the API with the SDK. + * Undefined values may be substituted for defaults, and null + * values will not be registered. + */ +export interface SDKRegistrationConfig { + /** Propagator to register as the global propagator */ + propagator?: TextMapPropagator | null; + /** Context manager to register as the global context manager */ + contextManager?: ContextManager | null; +} +/** Global configuration limits of trace service */ +export interface GeneralLimits { + /** attributeValueLengthLimit is maximum allowed attribute value size */ + attributeValueLengthLimit?: number; + /** attributeCountLimit is number of attributes per trace */ + attributeCountLimit?: number; +} +/** Global configuration of trace service */ +export interface SpanLimits { + /** attributeValueLengthLimit is maximum allowed attribute value size */ + attributeValueLengthLimit?: number; + /** attributeCountLimit is number of attributes per span */ + attributeCountLimit?: number; + /** linkCountLimit is number of links per span */ + linkCountLimit?: number; + /** eventCountLimit is number of message events per span */ + eventCountLimit?: number; + /** attributePerEventCountLimit is the maximum number of attributes allowed per span event */ + attributePerEventCountLimit?: number; + /** attributePerLinkCountLimit is the maximum number of attributes allowed per span link */ + attributePerLinkCountLimit?: number; +} +/** Interface configuration for a buffer. */ +export interface BufferConfig { + /** The maximum batch size of every export. It must be smaller or equal to + * maxQueueSize. The default value is 512. */ + maxExportBatchSize?: number; + /** The delay interval in milliseconds between two consecutive exports. + * The default value is 5000ms. */ + scheduledDelayMillis?: number; + /** How long the export can run before it is cancelled. + * The default value is 30000ms */ + exportTimeoutMillis?: number; + /** The maximum queue size. After the size is reached spans are dropped. + * The default value is 2048. */ + maxQueueSize?: number; +} +/** Interface configuration for BatchSpanProcessor on browser */ +export interface BatchSpanProcessorBrowserConfig extends BufferConfig { + /** Disable flush when a user navigates to a new page, closes the tab or the browser, or, + * on mobile, switches to a different app. Auto flush is enabled by default. */ + disableAutoFlushOnDocumentHide?: boolean; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/types.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/types.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/types.js.map new file mode 100644 index 0000000..3d93254 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ContextManager, TextMapPropagator } from '@opentelemetry/api';\nimport { Resource } from '@opentelemetry/resources';\nimport { IdGenerator } from './IdGenerator';\nimport { Sampler } from './Sampler';\nimport { SpanProcessor } from './SpanProcessor';\n\n/**\n * TracerConfig provides an interface for configuring a Basic Tracer.\n */\nexport interface TracerConfig {\n /**\n * Sampler determines if a span should be recorded or should be a NoopSpan.\n */\n sampler?: Sampler;\n\n /** General Limits */\n generalLimits?: GeneralLimits;\n\n /** Span Limits */\n spanLimits?: SpanLimits;\n\n /** Resource associated with trace telemetry */\n resource?: Resource;\n\n /**\n * Generator of trace and span IDs\n * The default idGenerator generates random ids\n */\n idGenerator?: IdGenerator;\n\n /**\n * How long the forceFlush can run before it is cancelled.\n * The default value is 30000ms\n */\n forceFlushTimeoutMillis?: number;\n\n /**\n * List of SpanProcessor for the tracer\n */\n spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Configuration options for registering the API with the SDK.\n * Undefined values may be substituted for defaults, and null\n * values will not be registered.\n */\nexport interface SDKRegistrationConfig {\n /** Propagator to register as the global propagator */\n propagator?: TextMapPropagator | null;\n\n /** Context manager to register as the global context manager */\n contextManager?: ContextManager | null;\n}\n\n/** Global configuration limits of trace service */\nexport interface GeneralLimits {\n /** attributeValueLengthLimit is maximum allowed attribute value size */\n attributeValueLengthLimit?: number;\n /** attributeCountLimit is number of attributes per trace */\n attributeCountLimit?: number;\n}\n\n/** Global configuration of trace service */\nexport interface SpanLimits {\n /** attributeValueLengthLimit is maximum allowed attribute value size */\n attributeValueLengthLimit?: number;\n /** attributeCountLimit is number of attributes per span */\n attributeCountLimit?: number;\n /** linkCountLimit is number of links per span */\n linkCountLimit?: number;\n /** eventCountLimit is number of message events per span */\n eventCountLimit?: number;\n /** attributePerEventCountLimit is the maximum number of attributes allowed per span event */\n attributePerEventCountLimit?: number;\n /** attributePerLinkCountLimit is the maximum number of attributes allowed per span link */\n attributePerLinkCountLimit?: number;\n}\n\n/** Interface configuration for a buffer. */\nexport interface BufferConfig {\n /** The maximum batch size of every export. It must be smaller or equal to\n * maxQueueSize. The default value is 512. */\n maxExportBatchSize?: number;\n\n /** The delay interval in milliseconds between two consecutive exports.\n * The default value is 5000ms. */\n scheduledDelayMillis?: number;\n\n /** How long the export can run before it is cancelled.\n * The default value is 30000ms */\n exportTimeoutMillis?: number;\n\n /** The maximum queue size. After the size is reached spans are dropped.\n * The default value is 2048. */\n maxQueueSize?: number;\n}\n\n/** Interface configuration for BatchSpanProcessor on browser */\nexport interface BatchSpanProcessorBrowserConfig extends BufferConfig {\n /** Disable flush when a user navigates to a new page, closes the tab or the browser, or,\n * on mobile, switches to a different app. Auto flush is enabled by default. */\n disableAutoFlushOnDocumentHide?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/utility.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/utility.d.ts new file mode 100644 index 0000000..7ec2d28 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/utility.d.ts @@ -0,0 +1,20 @@ +import { Sampler } from './Sampler'; +import { SpanLimits, TracerConfig, GeneralLimits } from './types'; +export declare const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128; +export declare const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT: number; +/** + * Function to merge Default configuration (as specified in './config') with + * user provided configurations. + */ +export declare function mergeConfig(userConfig: TracerConfig): TracerConfig & { + sampler: Sampler; + spanLimits: SpanLimits; + generalLimits: GeneralLimits; +}; +/** + * When general limits are provided and model specific limits are not, + * configures the model specific limits by using the values from the general ones. + * @param userConfig User provided tracer configuration + */ +export declare function reconfigureLimits(userConfig: TracerConfig): TracerConfig; +//# sourceMappingURL=utility.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/utility.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/utility.js new file mode 100644 index 0000000..bd49cca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/utility.js @@ -0,0 +1,66 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.reconfigureLimits = exports.mergeConfig = exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = void 0; +const config_1 = require("./config"); +const core_1 = require("@opentelemetry/core"); +exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128; +exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity; +/** + * Function to merge Default configuration (as specified in './config') with + * user provided configurations. + */ +function mergeConfig(userConfig) { + const perInstanceDefaults = { + sampler: (0, config_1.buildSamplerFromEnv)(), + }; + const DEFAULT_CONFIG = (0, config_1.loadDefaultConfig)(); + const target = Object.assign({}, DEFAULT_CONFIG, perInstanceDefaults, userConfig); + target.generalLimits = Object.assign({}, DEFAULT_CONFIG.generalLimits, userConfig.generalLimits || {}); + target.spanLimits = Object.assign({}, DEFAULT_CONFIG.spanLimits, userConfig.spanLimits || {}); + return target; +} +exports.mergeConfig = mergeConfig; +/** + * When general limits are provided and model specific limits are not, + * configures the model specific limits by using the values from the general ones. + * @param userConfig User provided tracer configuration + */ +function reconfigureLimits(userConfig) { + const spanLimits = Object.assign({}, userConfig.spanLimits); + /** + * Reassign span attribute count limit to use first non null value defined by user or use default value + */ + spanLimits.attributeCountLimit = + userConfig.spanLimits?.attributeCountLimit ?? + userConfig.generalLimits?.attributeCountLimit ?? + (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? + (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? + exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT; + /** + * Reassign span attribute value length limit to use first non null value defined by user or use default value + */ + spanLimits.attributeValueLengthLimit = + userConfig.spanLimits?.attributeValueLengthLimit ?? + userConfig.generalLimits?.attributeValueLengthLimit ?? + (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? + (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? + exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT; + return Object.assign({}, userConfig, { spanLimits }); +} +exports.reconfigureLimits = reconfigureLimits; +//# sourceMappingURL=utility.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/utility.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/utility.js.map new file mode 100644 index 0000000..67082d0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/utility.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/utility.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qCAAkE;AAGlE,8CAAuD;AAE1C,QAAA,6BAA6B,GAAG,GAAG,CAAC;AACpC,QAAA,oCAAoC,GAAG,QAAQ,CAAC;AAE7D;;;GAGG;AACH,SAAgB,WAAW,CAAC,UAAwB;IAKlD,MAAM,mBAAmB,GAA0B;QACjD,OAAO,EAAE,IAAA,4BAAmB,GAAE;KAC/B,CAAC;IAEF,MAAM,cAAc,GAAG,IAAA,0BAAiB,GAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,EAAE,EACF,cAAc,EACd,mBAAmB,EACnB,UAAU,CACX,CAAC;IAEF,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAClC,EAAE,EACF,cAAc,CAAC,aAAa,EAC5B,UAAU,CAAC,aAAa,IAAI,EAAE,CAC/B,CAAC;IAEF,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAC/B,EAAE,EACF,cAAc,CAAC,UAAU,EACzB,UAAU,CAAC,UAAU,IAAI,EAAE,CAC5B,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AA/BD,kCA+BC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,UAAwB;IACxD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAE5D;;OAEG;IACH,UAAU,CAAC,mBAAmB;QAC5B,UAAU,CAAC,UAAU,EAAE,mBAAmB;YAC1C,UAAU,CAAC,aAAa,EAAE,mBAAmB;YAC7C,IAAA,uBAAgB,EAAC,iCAAiC,CAAC;YACnD,IAAA,uBAAgB,EAAC,4BAA4B,CAAC;YAC9C,qCAA6B,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,yBAAyB;QAClC,UAAU,CAAC,UAAU,EAAE,yBAAyB;YAChD,UAAU,CAAC,aAAa,EAAE,yBAAyB;YACnD,IAAA,uBAAgB,EAAC,wCAAwC,CAAC;YAC1D,IAAA,uBAAgB,EAAC,mCAAmC,CAAC;YACrD,4CAAoC,CAAC;IAEvC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AACvD,CAAC;AAxBD,8CAwBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { buildSamplerFromEnv, loadDefaultConfig } from './config';\nimport { Sampler } from './Sampler';\nimport { SpanLimits, TracerConfig, GeneralLimits } from './types';\nimport { getNumberFromEnv } from '@opentelemetry/core';\n\nexport const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\nexport const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\n\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nexport function mergeConfig(userConfig: TracerConfig): TracerConfig & {\n sampler: Sampler;\n spanLimits: SpanLimits;\n generalLimits: GeneralLimits;\n} {\n const perInstanceDefaults: Partial = {\n sampler: buildSamplerFromEnv(),\n };\n\n const DEFAULT_CONFIG = loadDefaultConfig();\n\n const target = Object.assign(\n {},\n DEFAULT_CONFIG,\n perInstanceDefaults,\n userConfig\n );\n\n target.generalLimits = Object.assign(\n {},\n DEFAULT_CONFIG.generalLimits,\n userConfig.generalLimits || {}\n );\n\n target.spanLimits = Object.assign(\n {},\n DEFAULT_CONFIG.spanLimits,\n userConfig.spanLimits || {}\n );\n\n return target;\n}\n\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 */\nexport function reconfigureLimits(userConfig: TracerConfig): TracerConfig {\n const spanLimits = Object.assign({}, userConfig.spanLimits);\n\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 getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ??\n DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n\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 getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n\n return Object.assign({}, userConfig, { spanLimits });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/version.d.ts new file mode 100644 index 0000000..4539690 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "2.5.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/version.js new file mode 100644 index 0000000..b099165 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '2.5.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/version.js.map new file mode 100644 index 0000000..0c15794 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.5.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/package.json new file mode 100644 index 0000000..4b719fa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sdk-trace-base/package.json @@ -0,0 +1,97 @@ +{ + "name": "@opentelemetry/sdk-trace-base", + "version": "2.5.0", + "description": "OpenTelemetry Tracing", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "browser": { + "./src/platform/index.ts": "./src/platform/browser/index.ts", + "./build/esm/platform/index.js": "./build/esm/platform/browser/index.js", + "./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js", + "./build/src/platform/index.js": "./build/src/platform/browser/index.js" + }, + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "test": "nyc mocha 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", + "test:browser": "karma start --single-run", + "test:webworker": "karma start karma.worker.js --single-run", + "test:bench": "node test/performance/benchmark/index.js | tee .benchmark-results.txt", + "tdd": "npm run tdd:node", + "tdd:node": "npm run test -- --watch-extensions ts --watch", + "tdd:browser": "karma start", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "version": "node ../../scripts/version-update.js", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "prewatch": "npm run precompile", + "peer-api-check": "node ../../scripts/peer-api-check.js", + "align-api-deps": "node ../../scripts/align-api-deps.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "tracing", + "profiling", + "metrics", + "stats" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0", + "@types/mocha": "10.0.10", + "@types/node": "18.19.130", + "@types/sinon": "17.0.4", + "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "7.0.1", + "karma": "6.4.4", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-mocha-webworker": "1.3.0", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "mocha": "11.7.5", + "nyc": "17.1.0", + "sinon": "18.0.1", + "ts-loader": "9.5.4", + "typescript": "5.0.4", + "webpack": "5.101.3" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + }, + "dependencies": { + "@opentelemetry/core": "2.5.0", + "@opentelemetry/resources": "2.5.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base", + "sideEffects": false, + "gitHead": "38924cbff2a6e924ce8a2a227d3a72de52fbcd35" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/README.md new file mode 100644 index 0000000..38e0c76 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/README.md @@ -0,0 +1,228 @@ +# OpenTelemetry Semantic Conventions + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +Semantic Convention constants for use with the OpenTelemetry SDK/APIs. [This document][trace-semantic_conventions] defines standard attributes for traces. + +## Installation + +```bash +npm install --save @opentelemetry/semantic-conventions +``` + +## Import Structure + +This package has 2 separate entry-points: + +- The main entry-point, `@opentelemetry/semantic-conventions`, includes only stable semantic conventions. + This entry-point follows semantic versioning 2.0: it will not include breaking changes except with a change in the major version number. +- The "incubating" entry-point, `@opentelemetry/semantic-conventions/incubating`, contains unstable semantic conventions (sometimes called "experimental") and, for convenience, a re-export of the stable semantic conventions. + This entry-point is _NOT_ subject to the restrictions of semantic versioning and _MAY_ contain breaking changes in minor releases. See below for suggested usage of this entry-point. + +Exported constants follow this naming scheme: + +- `ATTR_${attributeName}` for attributes +- `${attributeName}_VALUE_{$enumValue}` for enumerations of attribute values +- `METRIC_${metricName}` for metric names +- `EVENT_${eventName}` for event names + +The `ATTR`, `METRIC`, `EVENT`, and `VALUE` static strings were used to facilitate readability and filtering in auto-complete lists in IDEs. + +## Usage + +### Stable SemConv + +```bash +npm install --save @opentelemetry/semantic-conventions +``` + +```ts +import { + ATTR_NETWORK_PEER_ADDRESS, + ATTR_NETWORK_PEER_PORT, + ATTR_NETWORK_PROTOCOL_NAME, + ATTR_NETWORK_PROTOCOL_VERSION, + NETWORK_TRANSPORT_VALUE_TCP, +} from '@opentelemetry/semantic-conventions'; + +const span = tracer.startSpan(spanName, spanOptions) + .setAttributes({ + [ATTR_NETWORK_PEER_ADDRESS]: 'localhost', + [ATTR_NETWORK_PEER_PORT]: 8080, + [ATTR_NETWORK_PROTOCOL_NAME]: 'http', + [ATTR_NETWORK_PROTOCOL_VERSION]: '1.1', + [ATTR_NETWORK_TRANSPORT]: NETWORK_TRANSPORT_VALUE_TCP, + }); +``` + +### Unstable SemConv + + + +Because the "incubating" entry-point may include breaking changes in minor versions, it is recommended that instrumentation libraries **not** import `@opentelemetry/semantic-conventions/incubating` in runtime code, but instead **copy relevant definitions into their own code base**. (This is the same [recommendation](https://opentelemetry.io/docs/specs/semconv/non-normative/code-generation/#stability-and-versioning) as for other languages.) + +For example, create a "src/semconv.ts" (or "lib/semconv.js" if implementing in JavaScript) file that copies from [experimental_attributes.ts](./src/experimental_attributes.ts) or [experimental_metrics.ts](./src/experimental_metrics.ts): + +```ts +// src/semconv.ts +export const ATTR_DB_NAMESPACE = 'db.namespace'; +export const ATTR_DB_OPERATION_NAME = 'db.operation.name'; +``` + +```ts +// src/instrumentation.ts +import { + ATTR_SERVER_PORT, + ATTR_SERVER_ADDRESS, +} from '@opentelemetry/semantic-conventions'; +import { + ATTR_DB_NAMESPACE, + ATTR_DB_OPERATION_NAME, +} from './semconv'; + +span.setAttributes({ + [ATTR_DB_NAMESPACE]: ..., + [ATTR_DB_OPERATION_NAME]: ..., + [ATTR_SERVER_PORT]: ..., + [ATTR_SERVER_ADDRESS]: ..., +}) +``` + +Occasionally, one should review changes to `@opentelemetry/semantic-conventions` to see if any used unstable conventions have changed or been stabilized. However, an update to a newer minor version of the package will never be breaking. + +#### Why not pin the version? + +A considered alternative for using unstable exports is to **pin** the version. I.e., depend on an exact version, rather than on a version range. + +```bash +npm install --save-exact @opentelemetry/semantic-conventions # Don't do this. +``` + +Then, import directly from `@opentelemetry/semantic-conventions/incubating`. +This is **not** recommended. + +In some languages having multiple versions of a package in a single application is not possible. This _is_ possible in JavaScript. The primary argument against pinning this package is that it can easily lead to many copies being installed in an application's `node_modules/...`, which can cause significant disk usage. In a disk-constrained environment, such as AWS Lambda Layers, that can be a blocker. + +## Deprecations + +There are two main types of deprecations in this package: + +1. "semconv deprecations": The process of defining the OpenTelemetry [Semantic Conventions][semconv-docs] sometimes involves deprecating a particular field name as conventions are [stabilized][semconv-stability]. For example, the [stabilization of HTTP conventions][semconv-http-stabilization] included deprecating the `http.url` span attribute in favor of `url.full`. When using this JS package, that appears as a deprecation of the `ATTR_HTTP_URL` export in favour of `ATTR_URL_FULL`. +2. "JS package deprecations": Independently, this JavaScript package has twice changed how it exports the Semantic Conventions constants, e.g. `ATTR_HTTP_URL` instead of `SEMATTRS_HTTP_URL`. The two older forms are still included in 1.x versions of this package for backwards compatibility. The rest of this section shows how to migrate to the latest form. + +### Migrating from `SEMATTRS_*`, `SEMRESATTRS_*`, ... + +Deprecated as of `@opentelemetry/semantic-conventions@1.26.0`. + +Before v1.26.0, constants for each semconv attribute were exported, prefixed with `SEMRESATTRS_` (if defined as a Resource Attribute) or `SEMATTRS_`. As well, constants were exported for each value in an enumeration, of the form `${attributeName}VALUES_${enumValue}`. For example: + +**Deprecated usage:** + +```js +import { + SEMRESATTRS_SERVICE_NAME, + SEMATTRS_HTTP_ROUTE, + SEMATTRS_DB_SYSTEM, + DBSYSTEMVALUES_POSTGRESQL +} from '@opentelemetry/semantic-conventions'; + +// 'service.name' resource attribute +console.log(SEMRESATTRS_SERVICE_NAME); // migrate to 'ATTR_SERVICE_NAME' + +// 'http.route' attribute +console.log(SEMATTRS_HTTP_ROUTE); // migrate to 'ATTR_HTTP_ROUTE' + +// 'db.system' attribute +console.log(SEMATTRS_DB_SYSTEM); // migrate to 'ATTR_DB_SYSTEM' (in incubating [*]) + +// 'postgresql' enum value for 'db.system' attribute +console.log(DBSYSTEMVALUES_POSTGRESQL); // migrate to 'DB_SYSTEM_VALUE_POSTGRESQL' (in incubating [*]) +``` + +See [Migrated usage](#migrated-usage) below. + +### Migrating from `SemanticAttributes.*`, `SemanticResourceAttributes.*`, ... + +Deprecated as of `@opentelemetry/semantic-conventions@1.0.0`. + +Before v1.0.0, constants were exported in namespace objects `SemanticResourceAttributes` and `SemanticAttributes`, and a namespace object for enumerated values for some fields (e.g. `DbSystemValues` for values of the 'db.system' enum). For example: + +**Deprecated usage:** + +```js +import { + SemanticAttributes, + SemanticResourceAttributes, + DbSystemValues, +} from '@opentelemetry/semantic-conventions'; + +// 'service.name' resource attribute +console.log(SemanticResourceAttributes.SERVICE_NAME); // migrate to 'ATTR_SERVICE_NAME' + +// 'http.route' attribute +console.log(SemanticAttributes.HTTP_ROUTE); // migrate to 'ATTR_HTTP_ROUTE' + +// 'db.system' attribute +console.log(SemanticAttributes.DB_SYSTEM); // migrate to 'ATTR_DB_SYSTEM' (in incubating [*]) + +// 'postgresql' enum value for 'db.system' attribute +console.log(DbSystemValues.POSTGRESQL); // migrate to 'DB_SYSTEM_VALUE_POSTGRESQL' (in incubating [*]) +``` + +See [Migrated usage](#migrated-usage) below. + +### Migrated usage + +If using any unstable conventions, copy the relevant definitions into your code base (e.g. to "src/semconv.ts", see [above](#unstable-semconv)): + +```ts +// src/semconv.ts +export const ATTR_DB_SYSTEM = 'db.system' as const; +export const DB_SYSTEM_VALUE_POSTGRESQL = "postgresql" as const; +``` + +then: + +```js +import { + ATTR_SERVICE_NAME, + ATTR_HTTP_ROUTE, + METRIC_HTTP_CLIENT_REQUEST_DURATION +} from '@opentelemetry/semantic-conventions'; // stable semconv +import { + ATTR_DB_SYSTEM, + DB_SYSTEM_VALUE_POSTGRESQL +} from './semconv'; // unstable semconv + +console.log(ATTR_SERVICE_NAME); // 'service.name' +console.log(ATTR_HTTP_ROUTE); // 'http.route' + +// Bonus: the older exports did not include metric names from semconv. +// 'http.client.request.duration' metric name +console.log(METRIC_HTTP_CLIENT_REQUEST_DURATION); + +console.log(ATTR_DB_SYSTEM); // 'db.system' +// 'postgresql' enum value for 'db.system' attribute +console.log(DB_SYSTEM_VALUE_POSTGRESQL); +``` + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/semantic-conventions +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fsemantic-conventions.svg +[semconv-docs]: https://github.com/open-telemetry/semantic-conventions/blob/main/docs/README.md +[semconv-stability]: https://opentelemetry.io/docs/specs/otel/versioning-and-stability/#semantic-conventions-stability +[semconv-http-stabilization]: https://opentelemetry.io/blog/2023/http-conventions-declared-stable/ +[trace-semantic_conventions]: https://github.com/open-telemetry/semantic-conventions/tree/main/specification/trace/semantic_conventions diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.d.ts new file mode 100644 index 0000000..0343893 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.d.ts @@ -0,0 +1,14443 @@ +/** + * This attribute represents the state of the application. + * + * @example created + * + * @note The Android lifecycle states are defined in [Activity lifecycle callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), and from which the `OS identifiers` are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ANDROID_APP_STATE: "android.app.state"; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_APP_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_APP_STATE_VALUE_CREATED: "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_APP_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found in the [Android API levels documentation](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels). + * + * @example 33 + * @example 32 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ANDROID_OS_API_LEVEL: "android.os.api_level"; +/** + * Deprecated. Use `android.app.state` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `android.app.state`. + */ +export declare const ATTR_ANDROID_STATE: "android.state"; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_STATE_VALUE_CREATED: "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Unique identifier for a particular build or compilation of the application. + * + * @example 6cff0a7e-cefc-4668-96f5-1273d8b334d0 + * @example 9f2b833506aa6973a92fde9733e6271f + * @example my-app-1.0.0-code-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_BUILD_ID: "app.build_id"; +/** + * A unique identifier representing the installation of an application on a specific device + * + * @example 2ab2916d-a51f-4ac8-80ee-45ac31a28092 + * + * @note Its value **SHOULD** persist across launches of the same application installation, including through application upgrades. + * It **SHOULD** change if the application is uninstalled or if all applications of the vendor are uninstalled. + * Additionally, users might be able to reset this value (e.g. by clearing application data). + * If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` **SHOULD** have a different value. + * If multiple OpenTelemetry SDKs are used within the same application, they **SHOULD** use the same value for `app.installation.id`. + * Hardware IDs (e.g. serial number, IMEI, MAC address) **MUST NOT** be used as the `app.installation.id`. + * + * For iOS, this value **SHOULD** be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor). + * + * For Android, examples of `app.installation.id` implementations include: + * + * - [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations). + * - A globally unique UUID which is persisted across sessions in your application. + * - [App set ID](https://developer.android.com/identity/app-set-id). + * - [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID). + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_INSTALLATION_ID: "app.installation.id"; +/** + * A number of frame renders that experienced jank. + * + * @example 9 + * @example 42 + * + * @note Depending on platform limitations, the value provided **MAY** be approximation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_JANK_FRAME_COUNT: "app.jank.frame_count"; +/** + * The time period, in seconds, for which this jank is being reported. + * + * @example 1.0 + * @example 5.0 + * @example 10.24 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_JANK_PERIOD: "app.jank.period"; +/** + * The minimum rendering threshold for this jank, in seconds. + * + * @example 0.016 + * @example 0.7 + * @example 1.024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_JANK_THRESHOLD: "app.jank.threshold"; +/** + * The x (horizontal) coordinate of a screen coordinate, in screen pixels. + * + * @example 0 + * @example 131 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_COORDINATE_X: "app.screen.coordinate.x"; +/** + * The y (vertical) component of a screen coordinate, in screen pixels. + * + * @example 12 + * @example 99 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_COORDINATE_Y: "app.screen.coordinate.y"; +/** + * An identifier that uniquely differentiates this screen from other screens in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example com.example.app.MainActivity + * @example com.example.shop.ProductDetailFragment + * @example MyApp.ProfileView + * @example MyApp.ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_ID: "app.screen.id"; +/** + * The name of an application screen. + * + * @example MainActivity + * @example ProductDetailFragment + * @example ProfileView + * @example ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_NAME: "app.screen.name"; +/** + * An identifier that uniquely differentiates this widget from other widgets in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example submit_order_1829 + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_WIDGET_ID: "app.widget.id"; +/** + * The name of an application widget. + * + * @example submit + * @example attack + * @example Clear Cart + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_WIDGET_NAME: "app.widget.name"; +/** + * The provenance filename of the built attestation which directly relates to the build artifact filename. This filename **SHOULD** accompany the artifact at publish time. See the [SLSA Relationship](https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations) specification for more information. + * + * @example golang-binary-amd64-v0.1.0.attestation + * @example docker-image-amd64-v0.1.0.intoto.json1 + * @example release-1.tar.gz.attestation + * @example file-name-package.tar.gz.intoto.json1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_ATTESTATION_FILENAME: "artifact.attestation.filename"; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the [software attestation space](https://github.com/in-toto/attestation/tree/main/spec) also refer to this as the **digest**. + * + * @example 1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_ATTESTATION_HASH: "artifact.attestation.hash"; +/** + * The id of the build [software attestation](https://slsa.dev/attestation-model). + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_ATTESTATION_ID: "artifact.attestation.id"; +/** + * The human readable file name of the artifact, typically generated during build and release processes. Often includes the package name and version in the file name. + * + * @example golang-binary-amd64-v0.1.0 + * @example docker-image-amd64-v0.1.0 + * @example release-1.tar.gz + * @example file-name-package.tar.gz + * + * @note This file name can also act as the [Package Name](https://slsa.dev/spec/v1.0/terminology#package-model) + * in cases where the package ecosystem maps accordingly. + * Additionally, the artifact [can be published](https://slsa.dev/spec/v1.0/terminology#software-supply-chain) + * for others, but that is not a guarantee. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_FILENAME: "artifact.filename"; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), often found in checksum.txt on a release of the artifact and used to verify package integrity. + * + * @example 9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9 + * + * @note The specific algorithm used to create the cryptographic hash value is + * not defined. In situations where an artifact has multiple + * cryptographic hashes, it is up to the implementer to choose which + * hash value to set here; this should be the most secure hash algorithm + * that is suitable for the situation and consistent with the + * corresponding attestation. The implementer can then provide the other + * hash values through an additional set of attribute extensions as they + * deem necessary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_HASH: "artifact.hash"; +/** + * The [Package URL](https://github.com/package-url/purl-spec) of the [package artifact](https://slsa.dev/spec/v1.0/terminology#package-model) provides a standard way to identify and locate the packaged artifact. + * + * @example pkg:github/package-url/purl-spec@1209109710924 + * @example pkg:npm/foo@12.12.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_PURL: "artifact.purl"; +/** + * The version of the artifact. + * + * @example v0.1.0 + * @example 1.2.1 + * @example 122691-build + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_VERSION: "artifact.version"; +/** + * The result of the authentication operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHENTICATION_RESULT: "aspnetcore.authentication.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "none" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * No authentication information returned. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_NONE: "none"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_SUCCESS: "success"; +/** + * The identifier that names a particular authentication handler. + * + * @example Cookies + * @example Bearer + * @example Identity.Application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHENTICATION_SCHEME: "aspnetcore.authentication.scheme"; +/** + * The name of the authorization policy. + * + * @example RequireAdminRole + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHORIZATION_POLICY: "aspnetcore.authorization.policy"; +/** + * The result of calling the authorization service. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHORIZATION_RESULT: "aspnetcore.authorization.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_SUCCESS: "success"; +/** + * The error code for a failed identity operation. + * + * @example DefaultError + * @example PasswordMismatch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_ERROR_CODE: "aspnetcore.identity.error_code"; +/** + * The result from checking the password. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT: "aspnetcore.identity.password_check_result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "password_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the password was missing from the user. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_PASSWORD_MISSING: "password_missing"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS: "success"; +/** + * Enum value "success_rehash_needed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful however the password was encoded using a deprecated algorithm and should be rehashed and updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS_REHASH_NEEDED: "success_rehash_needed"; +/** + * Enum value "user_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the user was missing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_USER_MISSING: "user_missing"; +/** + * The result of the identity operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_RESULT: "aspnetcore.identity.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_RESULT_VALUE_SUCCESS: "success"; +/** + * Whether the sign in result was success or failure. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT: "aspnetcore.identity.sign_in.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "locked_out" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is locked out. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_LOCKED_OUT: "locked_out"; +/** + * Enum value "not_allowed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is not allowed to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_NOT_ALLOWED: "not_allowed"; +/** + * Enum value "requires_two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User requires two factory authentication to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_REQUIRES_TWO_FACTOR: "requires_two_factor"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_SUCCESS: "success"; +/** + * The authentication type. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE: "aspnetcore.identity.sign_in.type"; +/** + * Enum value "external" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a previously registered third-party login. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_EXTERNAL: "external"; +/** + * Enum value "passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with passkey. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSKEY: "passkey"; +/** + * Enum value "password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSWORD: "password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a two factor provider. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR: "two_factor"; +/** + * Enum value "two_factor_authenticator" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factor authenticator app. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_AUTHENTICATOR: "two_factor_authenticator"; +/** + * Enum value "two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factory recovery code. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_RECOVERY_CODE: "two_factor_recovery_code"; +/** + * What the token will be used for. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE: "aspnetcore.identity.token_purpose"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * Any token purpose that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_OTHER: "_OTHER"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing the user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_EMAIL: "change_email"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing a user phone number. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_PHONE_NUMBER: "change_phone_number"; +/** + * Enum value "email_confirmation" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for confirming user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_EMAIL_CONFIRMATION: "email_confirmation"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for resetting a user password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_RESET_PASSWORD: "reset_password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing user two factor settings. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_TWO_FACTOR: "two_factor"; +/** + * The result of token verification. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED: "aspnetcore.identity.token_verified"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_SUCCESS: "success"; +/** + * The user update type. + * + * @example update + * @example user_name + * @example reset_password + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE: "aspnetcore.identity.user.update_type"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Any update type that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_OTHER: "_OTHER"; +/** + * Enum value "access_failed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure recorded. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ACCESS_FAILED: "access_failed"; +/** + * Enum value "add_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_CLAIMS: "add_claims"; +/** + * Enum value "add_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_LOGIN: "add_login"; +/** + * Enum value "add_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_PASSWORD: "add_password"; +/** + * Enum value "add_to_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user added to roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_TO_ROLES: "add_to_roles"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_EMAIL: "change_email"; +/** + * Enum value "change_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PASSWORD: "change_password"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PHONE_NUMBER: "change_phone_number"; +/** + * Enum value "confirm_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email confirmed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CONFIRM_EMAIL: "confirm_email"; +/** + * Enum value "generate_new_two_factor_recovery_codes" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user new two-factor recovery codes generated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_GENERATE_NEW_TWO_FACTOR_RECOVERY_CODES: "generate_new_two_factor_recovery_codes"; +/** + * Enum value "password_rehash" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password rehashed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_PASSWORD_REHASH: "password_rehash"; +/** + * Enum value "redeem_two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor recovery code redeemed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REDEEM_TWO_FACTOR_RECOVERY_CODE: "redeem_two_factor_recovery_code"; +/** + * Enum value "remove_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_AUTHENTICATION_TOKEN: "remove_authentication_token"; +/** + * Enum value "remove_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_CLAIMS: "remove_claims"; +/** + * Enum value "remove_from_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user removed from roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_FROM_ROLES: "remove_from_roles"; +/** + * Enum value "remove_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_LOGIN: "remove_login"; +/** + * Enum value "remove_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSKEY: "remove_passkey"; +/** + * Enum value "remove_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSWORD: "remove_password"; +/** + * Enum value "replace_claim" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claim replaced. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REPLACE_CLAIM: "replace_claim"; +/** + * Enum value "reset_access_failed_count" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure count reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_ACCESS_FAILED_COUNT: "reset_access_failed_count"; +/** + * Enum value "reset_authenticator_key" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authenticator key reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_AUTHENTICATOR_KEY: "reset_authenticator_key"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_PASSWORD: "reset_password"; +/** + * Enum value "security_stamp" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user security stamp updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SECURITY_STAMP: "security_stamp"; +/** + * Enum value "set_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_AUTHENTICATION_TOKEN: "set_authentication_token"; +/** + * Enum value "set_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_EMAIL: "set_email"; +/** + * Enum value "set_lockout_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_ENABLED: "set_lockout_enabled"; +/** + * Enum value "set_lockout_end_date" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout end date set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_END_DATE: "set_lockout_end_date"; +/** + * Enum value "set_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PASSKEY: "set_passkey"; +/** + * Enum value "set_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PHONE_NUMBER: "set_phone_number"; +/** + * Enum value "set_two_factor_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor authentication enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_TWO_FACTOR_ENABLED: "set_two_factor_enabled"; +/** + * Enum value "update" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_UPDATE: "update"; +/** + * Enum value "user_name" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user name updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_USER_NAME: "user_name"; +/** + * The full name of the identity user type. + * + * @example Contoso.ContosoUser + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_USER_TYPE: "aspnetcore.identity.user_type"; +/** + * The name of the library or subsystem using the memory pool instance. + * + * @example kestrel + * @example iis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_MEMORY_POOL_OWNER: "aspnetcore.memory_pool.owner"; +/** + * A flag indicating whether the sign in is persistent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_SIGN_IN_IS_PERSISTENT: "aspnetcore.sign_in.is_persistent"; +/** + * The unique identifier of the AWS Bedrock Guardrail. A [guardrail](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) helps safeguard and prevent unwanted behavior from model responses or user messages. + * + * @example sgi5gkybzqak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_BEDROCK_GUARDRAIL_ID: "aws.bedrock.guardrail.id"; +/** + * The unique identifier of the AWS Bedrock Knowledge base. A [knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) is a bank of information that can be queried by models to generate more relevant responses and augment prompts. + * + * @example XFWUPB9PAW + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_BEDROCK_KNOWLEDGE_BASE_ID: "aws.bedrock.knowledge_base.id"; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @example ["{ "AttributeName": "string", "AttributeType": "string" }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: "aws.dynamodb.attribute_definitions"; +/** + * The value of the `AttributesToGet` request parameter. + * + * @example ["lives", "id"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET: "aws.dynamodb.attributes_to_get"; +/** + * The value of the `ConsistentRead` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_CONSISTENT_READ: "aws.dynamodb.consistent_read"; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @example ["{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY: "aws.dynamodb.consumed_capacity"; +/** + * The value of the `Count` response parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_COUNT: "aws.dynamodb.count"; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @example Users + * @example CatsTable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE: "aws.dynamodb.exclusive_start_table"; +/** + * The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field. + * + * @example ["{ "Create": { "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: "aws.dynamodb.global_secondary_index_updates"; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field + * + * @example ["{ "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: "aws.dynamodb.global_secondary_indexes"; +/** + * The value of the `IndexName` request parameter. + * + * @example name_to_group + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_INDEX_NAME: "aws.dynamodb.index_name"; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @example { "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] } + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS: "aws.dynamodb.item_collection_metrics"; +/** + * The value of the `Limit` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_LIMIT: "aws.dynamodb.limit"; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @example ["{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: "aws.dynamodb.local_secondary_indexes"; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @example Title + * @example Title, Price, Color + * @example Title, Description, RelatedItems, ProductReviews + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_PROJECTION: "aws.dynamodb.projection"; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: "aws.dynamodb.provisioned_read_capacity"; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: "aws.dynamodb.provisioned_write_capacity"; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SCAN_FORWARD: "aws.dynamodb.scan_forward"; +/** + * The value of the `ScannedCount` response parameter. + * + * @example 50 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SCANNED_COUNT: "aws.dynamodb.scanned_count"; +/** + * The value of the `Segment` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SEGMENT: "aws.dynamodb.segment"; +/** + * The value of the `Select` request parameter. + * + * @example ALL_ATTRIBUTES + * @example COUNT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SELECT: "aws.dynamodb.select"; +/** + * The number of items in the `TableNames` response parameter. + * + * @example 20 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_TABLE_COUNT: "aws.dynamodb.table_count"; +/** + * The keys in the `RequestItems` object field. + * + * @example ["Users", "Cats"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_TABLE_NAMES: "aws.dynamodb.table_names"; +/** + * The value of the `TotalSegments` request parameter. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS: "aws.dynamodb.total_segments"; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_CLUSTER_ARN: "aws.ecs.cluster.arn"; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @example arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_CONTAINER_ARN: "aws.ecs.container.arn"; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_LAUNCHTYPE: "aws.ecs.launchtype"; +/** + * Enum value "ec2" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon EC2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AWS_ECS_LAUNCHTYPE_VALUE_EC2: "ec2"; +/** + * Enum value "fargate" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon Fargate + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AWS_ECS_LAUNCHTYPE_VALUE_FARGATE: "fargate"; +/** + * The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids). + * + * @example arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b + * @example arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_ARN: "aws.ecs.task.arn"; +/** + * The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task. + * + * @example opentelemetry-family + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_FAMILY: "aws.ecs.task.family"; +/** + * The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`. + * + * @example 10838bed-421f-43ef-870a-f43feacbbb5b + * @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_ID: "aws.ecs.task.id"; +/** + * The revision for the task definition used to create the ECS task. + * + * @example 8 + * @example 26 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_REVISION: "aws.ecs.task.revision"; +/** + * The ARN of an EKS cluster. + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_EKS_CLUSTER_ARN: "aws.eks.cluster.arn"; +/** + * The AWS extended request ID as returned in the response header `x-amz-id-2`. + * + * @example wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ= + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_EXTENDED_REQUEST_ID: "aws.extended_request_id"; +/** + * The name of the AWS Kinesis [stream](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) the request refers to. Corresponds to the `--stream-name` parameter of the Kinesis [describe-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html) operation. + * + * @example some-stream-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_KINESIS_STREAM_NAME: "aws.kinesis.stream_name"; +/** + * 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). + * + * @example arn:aws:lambda:us-east-1:123456:function:myfunction:myalias + * + * @note This may be different from `cloud.resource_id` if an alias is involved. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LAMBDA_INVOKED_ARN: "aws.lambda.invoked_arn"; +/** + * The UUID of the [AWS Lambda EvenSource Mapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html). An event source is mapped to a lambda function. It's contents are read by Lambda and used to trigger a function. This isn't available in the lambda execution context or the lambda runtime environtment. This is going to be populated by the AWS SDK for each language when that UUID is present. Some of these operations are Create/Delete/Get/List/Update EventSourceMapping. + * + * @example 587ad24b-03b9-4413-8202-bbd56b36e5b7 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LAMBDA_RESOURCE_MAPPING_ID: "aws.lambda.resource_mapping.id"; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*"] + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_GROUP_ARNS: "aws.log.group.arns"; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * @example ["/aws/lambda/my-function", "opentelemetry-service"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_GROUP_NAMES: "aws.log.group.names"; +/** + * The ARN(s) of the AWS log stream(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_STREAM_ARNS: "aws.log.stream.arns"; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @example ["logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_STREAM_NAMES: "aws.log.stream.names"; +/** + * The AWS request ID as returned in the response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`. + * + * @example 79b9da39-b7ae-508a-a6bc-864b2829c622 + * @example C9ER4AJX75574TDJ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_REQUEST_ID: "aws.request_id"; +/** + * The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example some-bucket-name + * + * @note The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter. + * This applies to almost all S3 operations except `list-buckets`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_BUCKET: "aws.s3.bucket"; +/** + * The source object (in the form `bucket`/`key`) for the copy operation. + * + * @example someFile.yml + * + * @note The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter + * of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html). + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_COPY_SOURCE: "aws.s3.copy_source"; +/** + * The delete request container that specifies the objects to be deleted. + * + * @example Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean + * + * @note The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation. + * The `delete` attribute corresponds to the `--delete` parameter of the + * [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_DELETE: "aws.s3.delete"; +/** + * The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example someFile.yml + * + * @note The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter. + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) + * - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html) + * - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html) + * - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html) + * - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html) + * - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html) + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_KEY: "aws.s3.key"; +/** + * The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000. + * + * @example 3456 + * + * @note The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations. + * The `part_number` attribute corresponds to the `--part-number` parameter of the + * [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_PART_NUMBER: "aws.s3.part_number"; +/** + * Upload ID that identifies the multipart upload. + * + * @example dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ + * + * @note The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter + * of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations. + * This applies in particular to the following operations: + * + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_UPLOAD_ID: "aws.s3.upload_id"; +/** + * The ARN of the Secret stored in the Secrets Mangger + * + * @example arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_SECRETSMANAGER_SECRET_ARN: "aws.secretsmanager.secret.arn"; +/** + * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) is a logical access point that acts as a communication channel. + * + * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_SNS_TOPIC_ARN: "aws.sns.topic.arn"; +/** + * The URL of the AWS SQS Queue. It's a unique identifier for a queue in Amazon Simple Queue Service (SQS) and is used to access the queue and perform actions on it. + * + * @example https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_SQS_QUEUE_URL: "aws.sqs.queue.url"; +/** + * The ARN of the AWS Step Functions Activity. + * + * @example arn:aws:states:us-east-1:123456789012:activity:get-greeting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN: "aws.step_functions.activity.arn"; +/** + * The ARN of the AWS Step Functions State Machine. + * + * @example arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN: "aws.step_functions.state_machine.arn"; +/** + * Deprecated, use `azure.resource_provider.namespace` instead. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource_provider.namespace`. + */ +export declare const ATTR_AZ_NAMESPACE: "az.namespace"; +/** + * Deprecated, use `azure.service.request.id` instead. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.service.request.id`. + */ +export declare const ATTR_AZ_SERVICE_REQUEST_ID: "az.service_request_id"; +/** + * The unique identifier of the client instance. + * + * @example 3ba4827d-4422-483f-b59f-85b74211c11d + * @example storage-client-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_CLIENT_ID: "azure.client.id"; +/** + * Cosmos client connection mode. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_CONNECTION_MODE: "azure.cosmosdb.connection.mode"; +/** + * Enum value "direct" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT: "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY: "gateway"; +/** + * Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL: "azure.cosmosdb.consistency.level"; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Bounded Staleness + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS: "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Consistent Prefix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX: "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Eventual + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL: "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Session + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION: "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Strong + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG: "Strong"; +/** + * List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @note Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS: "azure.cosmosdb.operation.contacted_regions"; +/** + * The number of request units consumed by the operation. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE: "azure.cosmosdb.operation.request_charge"; +/** + * Request payload size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_REQUEST_BODY_SIZE: "azure.cosmosdb.request.body.size"; +/** + * Cosmos DB sub status code. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE: "azure.cosmosdb.response.sub_status_code"; +/** + * [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_RESOURCE_PROVIDER_NAMESPACE: "azure.resource_provider.namespace"; +/** + * The unique identifier of the service request. It's generated by the Azure service and returned with the response. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_SERVICE_REQUEST_ID: "azure.service.request.id"; +/** + * Array of brand name and version separated by a space + * + * @example [" Not A;Brand 99", "Chromium 99", "Chrome 99"] + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_BRANDS: "browser.brands"; +/** + * Preferred language of the user using the browser + * + * @example en + * @example en-US + * @example fr + * @example fr-FR + * + * @note This value is intended to be taken from the Navigator API `navigator.language`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_LANGUAGE: "browser.language"; +/** + * A boolean that is true if the browser is running on a mobile device + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute **SHOULD** be left unset. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_MOBILE: "browser.mobile"; +/** + * The platform on which the browser is running + * + * @example Windows + * @example macOS + * @example Android + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API **SHOULD NOT** be used instead and this attribute **SHOULD** be left unset in order for the values to be consistent. + * The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_PLATFORM: "browser.platform"; +/** + * 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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_CONSISTENCY_LEVEL: "cassandra.consistency.level"; +/** + * Enum value "all" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * All + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL: "all"; +/** + * Enum value "any" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Any + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY: "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Each Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM: "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE: "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM: "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL: "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE: "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM: "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL: "serial"; +/** + * Enum value "three" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Three + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE: "three"; +/** + * Enum value "two" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Two + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO: "two"; +/** + * The data center of the coordinating node for a query. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_COORDINATOR_DC: "cassandra.coordinator.dc"; +/** + * The ID of the coordinating node for a query. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_COORDINATOR_ID: "cassandra.coordinator.id"; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_PAGE_SIZE: "cassandra.page.size"; +/** + * Whether or not the query is idempotent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_QUERY_IDEMPOTENT: "cassandra.query.idempotent"; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: "cassandra.speculative_execution.count"; +/** + * The kind of action a pipeline run is performing. + * + * @example BUILD + * @example RUN + * @example SYNC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_ACTION_NAME: "cicd.pipeline.action.name"; +/** + * Enum value "BUILD" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a build. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_ACTION_NAME_VALUE_BUILD: "BUILD"; +/** + * Enum value "RUN" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_ACTION_NAME_VALUE_RUN: "RUN"; +/** + * Enum value "SYNC" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a sync. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_ACTION_NAME_VALUE_SYNC: "SYNC"; +/** + * The human readable name of the pipeline within a CI/CD system. + * + * @example Build and Test + * @example Lint + * @example Deploy Go Project + * @example deploy_to_environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_NAME: "cicd.pipeline.name"; +/** + * The result of a pipeline run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RESULT: "cicd.pipeline.result"; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_CANCELLATION: "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_ERROR: "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_SKIP: "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_SUCCESS: "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * A timeout caused the pipeline run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_TIMEOUT: "timeout"; +/** + * The unique identifier of a pipeline run within a CI/CD system. + * + * @example 120912 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RUN_ID: "cicd.pipeline.run.id"; +/** + * The pipeline run goes through these states during its lifecycle. + * + * @example pending + * @example executing + * @example finalizing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RUN_STATE: "cicd.pipeline.run.state"; +/** + * Enum value "executing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The executing state spans the execution of any run tasks (eg. build, test). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RUN_STATE_VALUE_EXECUTING: "executing"; +/** + * Enum value "finalizing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The finalizing state spans from when the run has finished executing (eg. cleanup of run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RUN_STATE_VALUE_FINALIZING: "finalizing"; +/** + * Enum value "pending" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RUN_STATE_VALUE_PENDING: "pending"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline run, providing the complete address in order to locate and identify the pipeline run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RUN_URL_FULL: "cicd.pipeline.run.url.full"; +/** + * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures. + * + * @example Run GoLang Linter + * @example Go Build + * @example go-test + * @example deploy_binary + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_NAME: "cicd.pipeline.task.name"; +/** + * The unique identifier of a task run within a pipeline. + * + * @example 12097 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_RUN_ID: "cicd.pipeline.task.run.id"; +/** + * The result of a task run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_RUN_RESULT: "cicd.pipeline.task.run.result"; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was cancelled, eg. by a user manually cancelling the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_CANCELLATION: "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_ERROR: "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SKIP: "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SUCCESS: "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * A timeout caused the task run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_TIMEOUT: "timeout"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline task run, providing the complete address in order to locate and identify the pipeline task run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL: "cicd.pipeline.task.run.url.full"; +/** + * The type of the task within a pipeline. + * + * @example build + * @example test + * @example deploy + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_TYPE: "cicd.pipeline.task.type"; +/** + * Enum value "build" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * build + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_TYPE_VALUE_BUILD: "build"; +/** + * Enum value "deploy" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * deploy + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY: "deploy"; +/** + * Enum value "test" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * test + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_TYPE_VALUE_TEST: "test"; +/** + * The name of a component of the CICD system. + * + * @example controller + * @example scheduler + * @example agent + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_SYSTEM_COMPONENT: "cicd.system.component"; +/** + * The unique identifier of a worker within a CICD system. + * + * @example abc123 + * @example 10.0.1.2 + * @example controller + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_ID: "cicd.worker.id"; +/** + * The name of a worker within a CICD system. + * + * @example agent-abc + * @example controller + * @example Ubuntu LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_NAME: "cicd.worker.name"; +/** + * The state of a CICD worker / agent. + * + * @example idle + * @example busy + * @example down + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_STATE: "cicd.worker.state"; +/** + * Enum value "available" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_WORKER_STATE_VALUE_AVAILABLE: "available"; +/** + * Enum value "busy" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is performing work for the CICD system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_WORKER_STATE_VALUE_BUSY: "busy"; +/** + * Enum value "offline" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not available to the CICD system (disconnected / down). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_WORKER_STATE_VALUE_OFFLINE: "offline"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the worker, providing the complete address in order to locate and identify the worker. + * + * @example https://cicd.example.org/worker/abc123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_URL_FULL: "cicd.worker.url.full"; +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_ACCOUNT_ID: "cloud.account.id"; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_AVAILABILITY_ZONE: "cloud.availability_zone"; +/** + * The cloud platform in use. + * + * @note The prefix of the service **SHOULD** match the one specified in `cloud.provider`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_PLATFORM: "cloud.platform"; +/** + * Enum value "akamai_cloud.compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Akamai Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE: "akamai_cloud.compute"; +/** + * Enum value "alibaba_cloud_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Elastic Compute Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS: "alibaba_cloud_ecs"; +/** + * Enum value "alibaba_cloud_fc" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Function Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC: "alibaba_cloud_fc"; +/** + * Enum value "alibaba_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT: "alibaba_cloud_openshift"; +/** + * Enum value "aws_app_runner" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS App Runner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER: "aws_app_runner"; +/** + * Enum value "aws_ec2" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Compute Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_EC2: "aws_ec2"; +/** + * Enum value "aws_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Container Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_ECS: "aws_ecs"; +/** + * Enum value "aws_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_EKS: "aws_eks"; +/** + * Enum value "aws_elastic_beanstalk" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Beanstalk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK: "aws_elastic_beanstalk"; +/** + * Enum value "aws_lambda" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Lambda + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_LAMBDA: "aws_lambda"; +/** + * Enum value "aws_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on AWS (ROSA) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT: "aws_openshift"; +/** + * Enum value "azure.aks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_AKS: "azure.aks"; +/** + * Enum value "azure.app_service" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure App Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE: "azure.app_service"; +/** + * Enum value "azure.container_apps" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Apps + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS: "azure.container_apps"; +/** + * Enum value "azure.container_instances" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Instances + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES: "azure.container_instances"; +/** + * Enum value "azure.functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Functions + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS: "azure.functions"; +/** + * Enum value "azure.openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Red Hat OpenShift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT: "azure.openshift"; +/** + * Enum value "azure.vm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Virtual Machines + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_VM: "azure.vm"; +/** + * Enum value "gcp.agent_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Vertex AI Agent Engine + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE: "gcp.agent_engine"; +/** + * Enum value "gcp_app_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud App Engine (GAE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE: "gcp_app_engine"; +/** + * Enum value "gcp_bare_metal_solution" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Bare Metal Solution (BMS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION: "gcp_bare_metal_solution"; +/** + * Enum value "gcp_cloud_functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Functions (GCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS: "gcp_cloud_functions"; +/** + * Enum value "gcp_cloud_run" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Run + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN: "gcp_cloud_run"; +/** + * Enum value "gcp_compute_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Compute Engine (GCE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE: "gcp_compute_engine"; +/** + * Enum value "gcp_kubernetes_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Kubernetes Engine (GKE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE: "gcp_kubernetes_engine"; +/** + * Enum value "gcp_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Google Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT: "gcp_openshift"; +/** + * Enum value "hetzner.cloud_server" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Server on Hetzner Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER: "hetzner.cloud_server"; +/** + * Enum value "ibm_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT: "ibm_cloud_openshift"; +/** + * Enum value "oracle_cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Compute on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_COMPUTE: "oracle_cloud_compute"; +/** + * Enum value "oracle_cloud_oke" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_OKE: "oracle_cloud_oke"; +/** + * Enum value "tencent_cloud_cvm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Cloud Virtual Machine (CVM) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM: "tencent_cloud_cvm"; +/** + * Enum value "tencent_cloud_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Elastic Kubernetes Service (EKS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS: "tencent_cloud_eks"; +/** + * Enum value "tencent_cloud_scf" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Serverless Cloud Function (SCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF: "tencent_cloud_scf"; +/** + * Enum value "vultr.cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Vultr Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE: "vultr.cloud_compute"; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_PROVIDER: "cloud.provider"; +/** + * Enum value "akamai_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Akamai Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD: "akamai_cloud"; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD: "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_AWS: "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_AZURE: "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_GCP: "gcp"; +/** + * Enum value "heroku" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Heroku Platform as a Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_HEROKU: "heroku"; +/** + * Enum value "hetzner" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Hetzner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_HETZNER: "hetzner"; +/** + * Enum value "ibm_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_IBM_CLOUD: "ibm_cloud"; +/** + * Enum value "oracle_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_ORACLE_CLOUD: "oracle_cloud"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_TENCENT_CLOUD: "tencent_cloud"; +/** + * Enum value "vultr" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Vultr + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_VULTR: "vultr"; +/** + * The geographical region within a cloud provider. When associated with a resource, this attribute specifies the region where the resource operates. When calling services or APIs deployed on a cloud, this attribute identifies the region where the called destination is deployed. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_REGION: "cloud.region"; +/** + * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://google.aip.dev/122#full-resource-names) on GCP) + * + * @example arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function + * @example //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID + * @example /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/ + * + * @note On some cloud providers, it may not be possible to determine the full ID at startup, + * so it may be necessary to set `cloud.resource_id` as a span attribute instead. + * + * The exact value to use for `cloud.resource_id` depends on the cloud provider. + * The following well-known definitions **MUST** be used if you set this attribute and they apply: + * + * - **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + * Take care not to use the "invoked ARN" directly but replace any + * [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 invocable with + * multiple different aliases. + * - **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) + * - **Azure:** The [Fully Qualified Resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) of the invoked function, + * *not* the function app, having the form + * `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`. + * This means that a span attribute **MUST** be used, as an Azure function app can host multiple functions that would usually share + * a TracerProvider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_RESOURCE_ID: "cloud.resource_id"; +/** + * The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event. + * + * @example 123e4567-e89b-12d3-a456-426614174000 + * @example 0001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_ID: "cloudevents.event_id"; +/** + * The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened. + * + * @example https://github.com/cloudevents + * @example /cloudevents/spec/pull/123 + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_SOURCE: "cloudevents.event_source"; +/** + * The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses. + * + * @example "1.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION: "cloudevents.event_spec_version"; +/** + * The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source). + * + * @example "mynewfile.jpg" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_SUBJECT: "cloudevents.event_subject"; +/** + * The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence. + * + * @example com.github.pull_request.opened + * @example com.example.object.deleted.v2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_TYPE: "cloudevents.event_type"; +/** + * The guid of the application. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_id`. This is the same value as + * reported by `cf app --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_APP_ID: "cloudfoundry.app.id"; +/** + * The index of the application instance. 0 when just one instance is active. + * + * @example 0 + * @example 1 + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the application instance index for applications + * deployed on the runtime. + * + * Application instrumentation should use the value from environment + * variable `CF_INSTANCE_INDEX`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID: "cloudfoundry.app.instance.id"; +/** + * The name of the application. + * + * @example my-app-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_name`. This is the same value + * as reported by `cf apps`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_APP_NAME: "cloudfoundry.app.name"; +/** + * The guid of the CloudFoundry org the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_id`. This is the same value as + * reported by `cf org --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_ORG_ID: "cloudfoundry.org.id"; +/** + * The name of the CloudFoundry organization the app is running in. + * + * @example my-org-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_name`. This is the same value as + * reported by `cf orgs`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_ORG_NAME: "cloudfoundry.org.name"; +/** + * The UID identifying the process. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to + * `VCAP_APPLICATION.app_id` for applications deployed to the runtime. + * For system components, this could be the actual PID. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_PROCESS_ID: "cloudfoundry.process.id"; +/** + * The type of process. + * + * @example web + * + * @note CloudFoundry applications can consist of multiple jobs. Usually the + * main process will be of type `web`. There can be additional background + * tasks or side-cars with different process types. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_PROCESS_TYPE: "cloudfoundry.process.type"; +/** + * The guid of the CloudFoundry space the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_id`. This is the same value as + * reported by `cf space --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SPACE_ID: "cloudfoundry.space.id"; +/** + * The name of the CloudFoundry space the application is running in. + * + * @example my-space-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_name`. This is the same value as + * reported by `cf spaces`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SPACE_NAME: "cloudfoundry.space.name"; +/** + * A guid or another name describing the event source. + * + * @example cf/gorouter + * + * @note CloudFoundry defines the `source_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the component name, e.g. "gorouter", for + * CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.id` should be set to + * `spec.deployment/spec.name`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SYSTEM_ID: "cloudfoundry.system.id"; +/** + * A guid describing the concrete instance of the event source. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the vm id for CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.instance.id` should be set to `spec.id`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID: "cloudfoundry.system.instance.id"; +/** + * Deprecated, use `code.column.number` + * + * @example 16 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.column.number`. + */ +export declare const ATTR_CODE_COLUMN: "code.column"; +/** + * Deprecated, use `code.file.path` instead + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.file.path`. + */ +export declare const ATTR_CODE_FILEPATH: "code.filepath"; +/** + * Deprecated, use `code.function.name` instead + * + * @example "serveRequest" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +export declare const ATTR_CODE_FUNCTION: "code.function"; +/** + * Deprecated, use `code.line.number` instead + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.line.number`. + */ +export declare const ATTR_CODE_LINENO: "code.lineno"; +/** + * Deprecated, namespace is now included into `code.function.name` + * + * @example "com.example.MyHttpService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +export declare const ATTR_CODE_NAMESPACE: "code.namespace"; +/** + * The command used to run the container (i.e. the command name). + * + * @example otelcontribcol + * + * @note If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_COMMAND: "container.command"; +/** + * All the command arguments (including the command/executable itself) run by the container. + * + * @example ["otelcontribcol", "--config", "config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_COMMAND_ARGS: "container.command_args"; +/** + * The full command run by the container as a single string representing the full command. + * + * @example otelcontribcol --config config.yaml + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_COMMAND_LINE: "container.command_line"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example user + * @example kernel + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export declare const ATTR_CONTAINER_CPU_STATE: "container.cpu.state"; +/** + * Enum value "kernel" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CONTAINER_CPU_STATE_VALUE_KERNEL: "kernel"; +/** + * Enum value "system" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When CPU is used by the system (host OS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CONTAINER_CPU_STATE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CONTAINER_CPU_STATE_VALUE_USER: "user"; +/** + * The name of the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin used by the volume. + * + * @example pd.csi.storage.gke.io + * + * @note This can sometimes be referred to as a "driver" in CSI implementations. This should represent the `name` field of the GetPluginInfo RPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_CSI_PLUGIN_NAME: "container.csi.plugin.name"; +/** + * The unique volume ID returned by the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin. + * + * @example projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk + * + * @note This can sometimes be referred to as a "volume handle" in CSI implementations. This should represent the `Volume.volume_id` field in CSI spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_CSI_VOLUME_ID: "container.csi.volume.id"; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_ID: "container.id"; +/** + * Runtime specific image identifier. Usually a hash algorithm followed by a UUID. + * + * @example sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f + * + * @note Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect) endpoint. + * K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. + * The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_ID: "container.image.id"; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_NAME: "container.image.name"; +/** + * Repo digests of the container image as provided by the container runtime. + * + * @example ["example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb", "internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578"] + * + * @note [Docker](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_REPO_DIGESTS: "container.image.repo_digests"; +/** + * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_TAGS: "container.image.tags"; +/** + * Container labels, `` being the label name, the value being the label value. + * + * @example nginx + * + * @note For example, a docker container label `app` with value `nginx` **SHOULD** be recorded as the `container.label.app` attribute with value `"nginx"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_LABEL: (key: string) => string; +/** + * Deprecated, use `container.label` instead. + * + * @example nginx + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.label`. + */ +export declare const ATTR_CONTAINER_LABELS: (key: string) => string; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_NAME: "container.name"; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.runtime.name`. + */ +export declare const ATTR_CONTAINER_RUNTIME: "container.runtime"; +/** + * A description about the runtime which could include, for example details about the CRI/API version being used or other customisations. + * + * @example docker://19.3.1 - CRI: 1.22.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_RUNTIME_DESCRIPTION: "container.runtime.description"; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_RUNTIME_NAME: "container.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "1.0.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_RUNTIME_VERSION: "container.runtime.version"; +/** + * The logical CPU number [0..n-1] + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CPU_LOGICAL_NUMBER: "cpu.logical_number"; +/** + * The mode of the CPU + * + * @example user + * @example system + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CPU_MODE: "cpu.mode"; +/** + * Enum value "idle" for attribute {@link ATTR_CPU_MODE}. + * + * Idle + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_IDLE: "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_CPU_MODE}. + * + * Interrupt + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_INTERRUPT: "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_CPU_MODE}. + * + * IO Wait + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_IOWAIT: "iowait"; +/** + * Enum value "kernel" for attribute {@link ATTR_CPU_MODE}. + * + * Kernel + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_KERNEL: "kernel"; +/** + * Enum value "nice" for attribute {@link ATTR_CPU_MODE}. + * + * Nice + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_NICE: "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_CPU_MODE}. + * + * Steal + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_STEAL: "steal"; +/** + * Enum value "system" for attribute {@link ATTR_CPU_MODE}. + * + * System + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_CPU_MODE}. + * + * User + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_USER: "user"; +/** + * Value of the garbage collector collection generation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CPYTHON_GC_GENERATION: "cpython.gc.generation"; +/** + * Enum value 0 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPYTHON_GC_GENERATION_VALUE_GENERATION_0: 0; +/** + * Enum value 1 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPYTHON_GC_GENERATION_VALUE_GENERATION_1: 1; +/** + * Enum value 2 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPYTHON_GC_GENERATION_VALUE_GENERATION_2: 2; +/** + * Deprecated, use `cassandra.consistency.level` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.consistency.level`. + */ +export declare const ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL: "db.cassandra.consistency_level"; +/** + * Enum value "all" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL: "all"; +/** + * Enum value "any" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY: "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM: "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE: "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM: "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL: "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE: "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM: "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL: "serial"; +/** + * Enum value "three" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE: "three"; +/** + * Enum value "two" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO: "two"; +/** + * Deprecated, use `cassandra.coordinator.dc` instead. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.dc`. + */ +export declare const ATTR_DB_CASSANDRA_COORDINATOR_DC: "db.cassandra.coordinator.dc"; +/** + * Deprecated, use `cassandra.coordinator.id` instead. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.id`. + */ +export declare const ATTR_DB_CASSANDRA_COORDINATOR_ID: "db.cassandra.coordinator.id"; +/** + * Deprecated, use `cassandra.query.idempotent` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.query.idempotent`. + */ +export declare const ATTR_DB_CASSANDRA_IDEMPOTENCE: "db.cassandra.idempotence"; +/** + * Deprecated, use `cassandra.page.size` instead. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.page.size`. + */ +export declare const ATTR_DB_CASSANDRA_PAGE_SIZE: "db.cassandra.page_size"; +/** + * Deprecated, use `cassandra.speculative_execution.count` instead. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.speculative_execution.count`. + */ +export declare const ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: "db.cassandra.speculative_execution_count"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_CASSANDRA_TABLE: "db.cassandra.table"; +/** + * 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. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_CLIENT_CONNECTION_POOL_NAME: "db.client.connection.pool.name"; +/** + * The state of a connection in the pool + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_CLIENT_CONNECTION_STATE: "db.client.connection.state"; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE: "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTION_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +export declare const ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME: "db.client.connections.pool.name"; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +export declare const ATTR_DB_CLIENT_CONNECTIONS_STATE: "db.client.connections.state"; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE: "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTIONS_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export declare const ATTR_DB_CONNECTION_STRING: "db.connection_string"; +/** + * Deprecated, use `azure.client.id` instead. + * + * @example "3ba4827d-4422-483f-b59f-85b74211c11d" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.client.id`. + */ +export declare const ATTR_DB_COSMOSDB_CLIENT_ID: "db.cosmosdb.client_id"; +/** + * Deprecated, use `azure.cosmosdb.connection.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.connection.mode`. + */ +export declare const ATTR_DB_COSMOSDB_CONNECTION_MODE: "db.cosmosdb.connection_mode"; +/** + * Enum value "direct" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT: "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY: "gateway"; +/** + * Deprecated, use `cosmosdb.consistency.level` instead. + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.consistency.level`. + */ +export declare const ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL: "db.cosmosdb.consistency_level"; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS: "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX: "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL: "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION: "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG: "Strong"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_COSMOSDB_CONTAINER: "db.cosmosdb.container"; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_COSMOSDB_OPERATION_TYPE: "db.cosmosdb.operation_type"; +/** + * Enum value "batch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH: "batch"; +/** + * Enum value "create" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE: "create"; +/** + * Enum value "delete" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE: "delete"; +/** + * Enum value "execute" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE: "execute"; +/** + * Enum value "execute_javascript" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT: "execute_javascript"; +/** + * Enum value "head" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD: "head"; +/** + * Enum value "head_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED: "head_feed"; +/** + * Enum value "invalid" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID: "invalid"; +/** + * Enum value "patch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH: "patch"; +/** + * Enum value "query" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY: "query"; +/** + * Enum value "query_plan" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN: "query_plan"; +/** + * Enum value "read" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ: "read"; +/** + * Enum value "read_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED: "read_feed"; +/** + * Enum value "replace" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE: "replace"; +/** + * Enum value "upsert" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT: "upsert"; +/** + * Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.contacted_regions`. + */ +export declare const ATTR_DB_COSMOSDB_REGIONS_CONTACTED: "db.cosmosdb.regions_contacted"; +/** + * Deprecated, use `azure.cosmosdb.operation.request_charge` instead. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.request_charge`. + */ +export declare const ATTR_DB_COSMOSDB_REQUEST_CHARGE: "db.cosmosdb.request_charge"; +/** + * Deprecated, use `azure.cosmosdb.request.body.size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.request.body.size`. + */ +export declare const ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH: "db.cosmosdb.request_content_length"; +/** + * Deprecated, use `db.response.status_code` instead. + * + * @example 200 + * @example 201 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `db.response.status_code` instead. + */ +export declare const ATTR_DB_COSMOSDB_STATUS_CODE: "db.cosmosdb.status_code"; +/** + * Deprecated, use `azure.cosmosdb.response.sub_status_code` instead. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.response.sub_status_code`. + */ +export declare const ATTR_DB_COSMOSDB_SUB_STATUS_CODE: "db.cosmosdb.sub_status_code"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example e9106fc68e3044f0b1475b04bf4ffd5f + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_ELASTICSEARCH_CLUSTER_NAME: "db.elasticsearch.cluster.name"; +/** + * Deprecated, use `elasticsearch.node.name` instead. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `elasticsearch.node.name`. + */ +export declare const ATTR_DB_ELASTICSEARCH_NODE_NAME: "db.elasticsearch.node.name"; +/** + * Deprecated, use `db.operation.parameter` instead. + * + * @example test-index + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.parameter`. + */ +export declare const ATTR_DB_ELASTICSEARCH_PATH_PARTS: (key: string) => string; +/** + * Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + * + * @example "mysql-e26b99z.example.com" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + */ +export declare const ATTR_DB_INSTANCE_ID: "db.instance.id"; +/** + * Removed, no replacement at this time. + * + * @example org.postgresql.Driver + * @example com.microsoft.sqlserver.jdbc.SQLServerDriver + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_JDBC_DRIVER_CLASSNAME: "db.jdbc.driver_classname"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_MONGODB_COLLECTION: "db.mongodb.collection"; +/** + * Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute. + * + * @example "MSSQLSERVER" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_MSSQL_INSTANCE_NAME: "db.mssql.instance_name"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_NAME: "db.name"; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +export declare const ATTR_DB_OPERATION: "db.operation"; +/** + * A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note For example, a client-side maximum number of rows to read from the database + * **MAY** be recorded as the `db.operation.parameter.max_rows` attribute. + * + * `db.query.text` parameters **SHOULD** be captured using `db.query.parameter.` + * instead of `db.operation.parameter.`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_OPERATION_PARAMETER: (key: string) => string; +/** + * A database query parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note If a query parameter has no name and instead is referenced only by index, + * then `` **SHOULD** be the 0-based index. + * + * `db.query.parameter.` **SHOULD** match + * up with the parameterized placeholders present in `db.query.text`. + * + * It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * `db.query.parameter.` **SHOULD NOT** be captured on batch operations. + * + * Examples: + * + * - For a query `SELECT * FROM users where username = %s` with the parameter `"jdoe"`, + * the attribute `db.query.parameter.0` **SHOULD** be set to `"jdoe"`. + * - For a query `"SELECT * FROM users WHERE username = %(userName)s;` with parameter + * `userName = "jdoe"`, the attribute `db.query.parameter.userName` **SHOULD** be set to `"jdoe"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_QUERY_PARAMETER: (key: string) => string; +/** + * Deprecated, use `db.namespace` instead. + * + * @example 0 + * @example 1 + * @example 15 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Uncategorized. + */ +export declare const ATTR_DB_REDIS_DATABASE_INDEX: "db.redis.database_index"; +/** + * Number of rows returned by the operation. + * + * @example 10 + * @example 30 + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_RESPONSE_RETURNED_ROWS: "db.response.returned_rows"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`. + */ +export declare const ATTR_DB_SQL_TABLE: "db.sql.table"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Enum value "adabas" for attribute {@link ATTR_DB_SYSTEM}. + * + * Adabas (Adaptable Database System) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_ADABAS: "adabas"; +/** + * Enum value "cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `intersystems_cache` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `intersystems_cache`. + */ +export declare const DB_SYSTEM_VALUE_CACHE: "cache"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Cassandra + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_CASSANDRA: "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM}. + * + * ClickHouse + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_CLICKHOUSE: "clickhouse"; +/** + * Enum value "cloudscape" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export declare const DB_SYSTEM_VALUE_CLOUDSCAPE: "cloudscape"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CockroachDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COCKROACHDB: "cockroachdb"; +/** + * Enum value "coldfusion" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, no replacement at this time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export declare const DB_SYSTEM_VALUE_COLDFUSION: "coldfusion"; +/** + * Enum value "cosmosdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft Azure Cosmos DB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COSMOSDB: "cosmosdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Couchbase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COUCHBASE: "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CouchDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COUCHDB: "couchdb"; +/** + * Enum value "db2" for attribute {@link ATTR_DB_SYSTEM}. + * + * IBM Db2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_DB2: "db2"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Derby + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_DERBY: "derby"; +/** + * Enum value "dynamodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon DynamoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_DYNAMODB: "dynamodb"; +/** + * Enum value "edb" for attribute {@link ATTR_DB_SYSTEM}. + * + * EnterpriseDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_EDB: "edb"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * Elasticsearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_ELASTICSEARCH: "elasticsearch"; +/** + * Enum value "filemaker" for attribute {@link ATTR_DB_SYSTEM}. + * + * FileMaker + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_FILEMAKER: "filemaker"; +/** + * Enum value "firebird" for attribute {@link ATTR_DB_SYSTEM}. + * + * Firebird + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_FIREBIRD: "firebird"; +/** + * Enum value "firstsql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export declare const DB_SYSTEM_VALUE_FIRSTSQL: "firstsql"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Geode + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_GEODE: "geode"; +/** + * Enum value "h2" for attribute {@link ATTR_DB_SYSTEM}. + * + * H2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_H2: "h2"; +/** + * Enum value "hanadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP HANA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HANADB: "hanadb"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache HBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HBASE: "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Hive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HIVE: "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM}. + * + * HyperSQL DataBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HSQLDB: "hsqldb"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InfluxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INFLUXDB: "influxdb"; +/** + * Enum value "informix" for attribute {@link ATTR_DB_SYSTEM}. + * + * Informix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INFORMIX: "informix"; +/** + * Enum value "ingres" for attribute {@link ATTR_DB_SYSTEM}. + * + * Ingres + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INGRES: "ingres"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InstantDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INSTANTDB: "instantdb"; +/** + * Enum value "interbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INTERBASE: "interbase"; +/** + * Enum value "intersystems_cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterSystems Caché + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE: "intersystems_cache"; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MariaDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MARIADB: "mariadb"; +/** + * Enum value "maxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP MaxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MAXDB: "maxdb"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM}. + * + * Memcached + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MEMCACHED: "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MongoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MONGODB: "mongodb"; +/** + * Enum value "mssql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft SQL Server + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MSSQL: "mssql"; +/** + * Enum value "mssqlcompact" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, Microsoft SQL Server Compact is discontinued. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export declare const DB_SYSTEM_VALUE_MSSQLCOMPACT: "mssqlcompact"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM}. + * + * MySQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MYSQL: "mysql"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM}. + * + * Neo4j + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_NEO4J: "neo4j"; +/** + * Enum value "netezza" for attribute {@link ATTR_DB_SYSTEM}. + * + * Netezza + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_NETEZZA: "netezza"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * OpenSearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_OPENSEARCH: "opensearch"; +/** + * Enum value "oracle" for attribute {@link ATTR_DB_SYSTEM}. + * + * Oracle Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_ORACLE: "oracle"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Some other SQL database. Fallback only. See notes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_OTHER_SQL: "other_sql"; +/** + * Enum value "pervasive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Pervasive PSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_PERVASIVE: "pervasive"; +/** + * Enum value "pointbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * PointBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_POINTBASE: "pointbase"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM}. + * + * PostgreSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_POSTGRESQL: "postgresql"; +/** + * Enum value "progress" for attribute {@link ATTR_DB_SYSTEM}. + * + * Progress Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_PROGRESS: "progress"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM}. + * + * Redis + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_REDIS: "redis"; +/** + * Enum value "redshift" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon Redshift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_REDSHIFT: "redshift"; +/** + * Enum value "spanner" for attribute {@link ATTR_DB_SYSTEM}. + * + * Cloud Spanner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_SPANNER: "spanner"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM}. + * + * SQLite + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_SQLITE: "sqlite"; +/** + * Enum value "sybase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Sybase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_SYBASE: "sybase"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM}. + * + * Teradata + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_TERADATA: "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM}. + * + * Trino + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_TRINO: "trino"; +/** + * Enum value "vertica" for attribute {@link ATTR_DB_SYSTEM}. + * + * Vertica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_VERTICA: "vertica"; +/** + * Enum value "actian.ingres" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Actian Ingres](https://www.actian.com/databases/ingres/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_ACTIAN_INGRES: "actian.ingres"; +/** + * Enum value "aws.dynamodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_AWS_DYNAMODB: "aws.dynamodb"; +/** + * Enum value "aws.redshift" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon Redshift](https://aws.amazon.com/redshift/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_AWS_REDSHIFT: "aws.redshift"; +/** + * Enum value "azure.cosmosdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_AZURE_COSMOSDB: "azure.cosmosdb"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Cassandra](https://cassandra.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_CASSANDRA: "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [ClickHouse](https://clickhouse.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_CLICKHOUSE: "clickhouse"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [CockroachDB](https://www.cockroachlabs.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_COCKROACHDB: "cockroachdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Couchbase](https://www.couchbase.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_COUCHBASE: "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache CouchDB](https://couchdb.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_COUCHDB: "couchdb"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Derby](https://db.apache.org/derby/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_DERBY: "derby"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Elasticsearch](https://www.elastic.co/elasticsearch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_ELASTICSEARCH: "elasticsearch"; +/** + * Enum value "firebirdsql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Firebird](https://www.firebirdsql.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_FIREBIRDSQL: "firebirdsql"; +/** + * Enum value "gcp.spanner" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Google Cloud Spanner](https://cloud.google.com/spanner) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_GCP_SPANNER: "gcp.spanner"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Geode](https://geode.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_GEODE: "geode"; +/** + * Enum value "h2database" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [H2 Database](https://h2database.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_H2DATABASE: "h2database"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache HBase](https://hbase.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_HBASE: "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Hive](https://hive.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_HIVE: "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [HyperSQL Database](https://hsqldb.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_HSQLDB: "hsqldb"; +/** + * Enum value "ibm.db2" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Db2](https://www.ibm.com/db2) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_IBM_DB2: "ibm.db2"; +/** + * Enum value "ibm.informix" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Informix](https://www.ibm.com/products/informix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_IBM_INFORMIX: "ibm.informix"; +/** + * Enum value "ibm.netezza" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Netezza](https://www.ibm.com/products/netezza) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_IBM_NETEZZA: "ibm.netezza"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InfluxDB](https://www.influxdata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_INFLUXDB: "influxdb"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Instant](https://www.instantdb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_INSTANTDB: "instantdb"; +/** + * Enum value "intersystems.cache" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InterSystems Caché](https://www.intersystems.com/products/cache/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_INTERSYSTEMS_CACHE: "intersystems.cache"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Memcached](https://memcached.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_MEMCACHED: "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MongoDB](https://www.mongodb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_MONGODB: "mongodb"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Neo4j](https://neo4j.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_NEO4J: "neo4j"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [OpenSearch](https://opensearch.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_OPENSEARCH: "opensearch"; +/** + * Enum value "oracle.db" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Oracle Database](https://www.oracle.com/database/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_ORACLE_DB: "oracle.db"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * Some other SQL database. Fallback only. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_OTHER_SQL: "other_sql"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Redis](https://redis.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_REDIS: "redis"; +/** + * Enum value "sap.hana" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SAP_HANA: "sap.hana"; +/** + * Enum value "sap.maxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP MaxDB](https://maxdb.sap.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SAP_MAXDB: "sap.maxdb"; +/** + * Enum value "softwareag.adabas" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SOFTWAREAG_ADABAS: "softwareag.adabas"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SQLite](https://www.sqlite.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SQLITE: "sqlite"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Teradata](https://www.teradata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_TERADATA: "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Trino](https://trino.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_TRINO: "trino"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_USER: "db.user"; +/** + * Deprecated, use `deployment.environment.name` instead. + * + * @example staging + * @example production + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `deployment.environment.name`. + */ +export declare const ATTR_DEPLOYMENT_ENVIRONMENT: "deployment.environment"; +/** + * Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @example staging + * @example production + * + * @note `deployment.environment.name` does not affect the uniqueness constraints defined through + * the `service.namespace`, `service.name` and `service.instance.id` resource attributes. + * This implies that resources carrying the following attribute combinations **MUST** be + * considered to be identifying the same service: + * + * - `service.name=frontend`, `deployment.environment.name=production` + * - `service.name=frontend`, `deployment.environment.name=staging`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_ENVIRONMENT_NAME: "deployment.environment.name"; +/** + * The id of the deployment. + * + * @example 1208 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_ID: "deployment.id"; +/** + * The name of the deployment. + * + * @example deploy my app + * @example deploy-frontend + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_NAME: "deployment.name"; +/** + * The status of the deployment. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_STATUS: "deployment.status"; +/** + * Enum value "failed" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DEPLOYMENT_STATUS_VALUE_FAILED: "failed"; +/** + * Enum value "succeeded" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * succeeded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DEPLOYMENT_STATUS_VALUE_SUCCEEDED: "succeeded"; +/** + * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example destination.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the source side, and when communicating through an intermediary, `destination.address` **SHOULD** represent the destination address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DESTINATION_ADDRESS: "destination.address"; +/** + * Destination port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DESTINATION_PORT: "destination.port"; +/** + * A unique identifier representing the device + * + * @example 123456789012345 + * @example 01:23:45:67:89:AB + * + * @note Its value **SHOULD** be identical for all apps on a device and it **SHOULD NOT** change if an app is uninstalled and re-installed. + * However, it might be resettable by the user for all apps on a device. + * Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) **MAY** be used as values. + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * > [!WARNING]> This attribute may contain sensitive (PII) information. 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.> Due to these reasons, this identifier is not recommended for consumer applications and will likely result in rejection from both Google Play and App Store. + * > However, it may be appropriate for specific enterprise scenarios, such as kiosk devices or enterprise-managed devices, with appropriate compliance clearance. + * > Any instrumentation providing this identifier **> MUST**> implement it as an opt-in feature.> See [`app.installation.id`](/docs/registry/attributes/app.md#app-installation-id)> for a more privacy-preserving alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_ID: "device.id"; +/** + * The name of the device manufacturer + * + * @example Apple + * @example Samsung + * + * @note The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps **SHOULD** hardcode the value `Apple`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_MANUFACTURER: "device.manufacturer"; +/** + * The model identifier for the device + * + * @example iPhone3,4 + * @example SM-G920F + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_MODEL_IDENTIFIER: "device.model.identifier"; +/** + * The marketing name for the device model + * + * @example iPhone 6s Plus + * @example Samsung Galaxy S6 + * + * @note It's recommended this value represents a human-readable version of the device model rather than a machine-readable alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_MODEL_NAME: "device.model.name"; +/** + * The disk IO operation direction. + * + * @example read + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DISK_IO_DIRECTION: "disk.io.direction"; +/** + * Enum value "read" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DISK_IO_DIRECTION_VALUE_READ: "read"; +/** + * Enum value "write" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DISK_IO_DIRECTION_VALUE_WRITE: "write"; +/** + * The list of IPv4 or IPv6 addresses resolved during DNS lookup. + * + * @example ["10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DNS_ANSWERS: "dns.answers"; +/** + * The name being queried. + * + * @example www.example.com + * @example opentelemetry.io + * + * @note The name represents the queried domain name as it appears in the DNS query without any additional normalization. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DNS_QUESTION_NAME: "dns.question.name"; +/** + * Represents the human-readable identifier of the node/instance to which a request was routed. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ELASTICSEARCH_NODE_NAME: "elasticsearch.node.name"; +/** + * Unique identifier of an end user in the system. It maybe a username, email address, or other identifier. + * + * @example username + * + * @note Unique identifier of an end user in the system. + * + * > [!Warning] + * > This field contains sensitive (PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ENDUSER_ID: "enduser.id"; +/** + * Pseudonymous identifier of an end user. This identifier should be a random value that is not directly linked or associated with the end user's actual identity. + * + * @example QdH5CAWJgqVT4rOr0qtumf + * + * @note Pseudonymous identifier of an end user. + * + * > [!Warning] + * > This field contains sensitive (linkable PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ENDUSER_PSEUDO_ID: "enduser.pseudo.id"; +/** + * Deprecated, use `user.roles` instead. + * + * @example "admin" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `user.roles` instead. + */ +export declare const ATTR_ENDUSER_ROLE: "enduser.role"; +/** + * Deprecated, no replacement at this time. + * + * @example "read:message, write:files" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_ENDUSER_SCOPE: "enduser.scope"; +/** + * A message providing more detail about an error in human-readable form. + * + * @example Unexpected input type: string + * @example The user has exceeded their storage quota + * + * @note `error.message` should provide additional context and detail about an error. + * It is NOT **RECOMMENDED** to duplicate the value of `error.type` in `error.message`. + * It is also NOT **RECOMMENDED** to duplicate the value of `exception.message` in `error.message`. + * + * `error.message` is NOT **RECOMMENDED** for metrics or spans due to its unbounded cardinality and overlap with span status. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ERROR_MESSAGE: "error.message"; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated The value of this attribute **MUST** now be set as the value of the EventName field on the LogRecord to indicate that the LogRecord represents an Event. + */ +export declare const ATTR_EVENT_NAME: "event.name"; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_COLDSTART: "faas.coldstart"; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @example "0/5 * * * ? *" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_CRON: "faas.cron"; +/** + * 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. + * + * @example myBucketName + * @example myDbName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_COLLECTION: "faas.document.collection"; +/** + * 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. + * + * @example myFile.txt + * @example myTableName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_NAME: "faas.document.name"; +/** + * Describes the type of the operation that was performed on the data. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_OPERATION: "faas.document.operation"; +/** + * Enum value "delete" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is deleted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_DOCUMENT_OPERATION_VALUE_DELETE: "delete"; +/** + * Enum value "edit" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is modified. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_DOCUMENT_OPERATION_VALUE_EDIT: "edit"; +/** + * Enum value "insert" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When a new object is created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_DOCUMENT_OPERATION_VALUE_INSERT: "insert"; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_TIME: "faas.document.time"; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de + * + * @note - **AWS Lambda:** Use the (full) log stream name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INSTANCE: "faas.instance"; +/** + * The invocation ID of the current function invocation. + * + * @example "af9d5aa4-a685-4c5f-a22b-444f80b3cc28" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOCATION_ID: "faas.invocation_id"; +/** + * The name of the invoked function. + * + * @example "my-function" + * + * @note **SHOULD** be equal to the `faas.name` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOKED_NAME: "faas.invoked_name"; +/** + * The cloud provider of the invoked function. + * + * @note **SHOULD** be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOKED_PROVIDER: "faas.invoked_provider"; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD: "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_AWS: "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_AZURE: "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_GCP: "gcp"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD: "tencent_cloud"; +/** + * The cloud region of the invoked function. + * + * @example "eu-central-1" + * + * @note **SHOULD** be equal to the `cloud.region` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOKED_REGION: "faas.invoked_region"; +/** + * The amount of memory available to the serverless function converted to Bytes. + * + * @example 134217728 + * + * @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 (which must be multiplied by 1,048,576). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_MAX_MEMORY: "faas.max_memory"; +/** + * The name of the single function that this runtime instance executes. + * + * @example my-function + * @example myazurefunctionapp/some-function-name + * + * @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.name`](/docs/general/attributes.md#source-code-attributes) + * span attributes). + * + * For some cloud providers, the above definition is ambiguous. The following + * definition of function name **MUST** be used for this attribute + * (and consequently the span name) for the listed cloud providers/products: + * + * - **Azure:** The full name `/`, i.e., function app name + * followed by a forward slash followed by the function name (this form + * can also be seen in the resource JSON for the function). + * This means that a span attribute **MUST** be used, as an Azure function + * app can host multiple functions that would usually share + * a TracerProvider (see also the `cloud.resource_id` attribute). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_NAME: "faas.name"; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_TIME: "faas.time"; +/** + * Type of the trigger which caused this function invocation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_TRIGGER: "faas.trigger"; +/** + * Enum value "datasource" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A response to some data source operation such as a database or filesystem read/write + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_DATASOURCE: "datasource"; +/** + * Enum value "http" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * To provide an answer to an inbound HTTP request + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_HTTP: "http"; +/** + * Enum value "other" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * If none of the others apply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_OTHER: "other"; +/** + * Enum value "pubsub" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is set to be executed when messages are sent to a messaging system + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_PUBSUB: "pubsub"; +/** + * Enum value "timer" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is scheduled to be executed regularly + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_TIMER: "timer"; +/** + * The immutable version of the function being executed. + * + * @example 26 + * @example pinkfroid-00002 + * + * @note Depending on the cloud provider and platform, use: + * + * - **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + * (an integer represented as a decimal string). + * - **Google Cloud Run (Services):** The [revision](https://cloud.google.com/run/docs/managing/revisions) + * (i.e., the function name plus the revision suffix). + * - **Google Cloud Functions:** The value of the + * [`K_REVISION` environment variable](https://cloud.google.com/run/docs/container-contract#services-env-vars). + * - **Azure Functions:** Not applicable. Do not set this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_VERSION: "faas.version"; +/** + * The unique identifier for the flag evaluation context. For example, the targeting key. + * + * @example 5157782b-2203-4c80-a857-dbbd5e7761db + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_CONTEXT_ID: "feature_flag.context.id"; +/** + * Deprecated, use `error.message` instead. + * + * @example Flag `header-color` expected type `string` but found type `number` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `error.message`. + */ +export declare const ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE: "feature_flag.evaluation.error.message"; +/** + * Deprecated, use `feature_flag.result.reason` instead. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.reason`. + */ +export declare const ATTR_FEATURE_FLAG_EVALUATION_REASON: "feature_flag.evaluation.reason"; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED: "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT: "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED: "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR: "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT: "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE: "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC: "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH: "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN: "unknown"; +/** + * The lookup key of the feature flag. + * + * @example logo-color + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_KEY: "feature_flag.key"; +/** + * Identifies the feature flag provider. + * + * @example Flag Manager + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_PROVIDER_NAME: "feature_flag.provider.name"; +/** + * The reason code which shows how a feature flag value was determined. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_RESULT_REASON: "feature_flag.result.reason"; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_CACHED: "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_DEFAULT: "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_DISABLED: "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_ERROR: "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_SPLIT: "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_STALE: "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_STATIC: "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_TARGETING_MATCH: "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_UNKNOWN: "unknown"; +/** + * The evaluated value of the feature flag. + * + * @example #ff0000 + * @example true + * @example 3 + * + * @note With some feature flag providers, feature flag results can be quite large or contain private or sensitive details. + * Because of this, `feature_flag.result.variant` is often the preferred attribute if it is available. + * + * It may be desirable to redact or otherwise limit the size and scope of `feature_flag.result.value` if possible. + * Because the evaluated flag value is unstructured and may be any type, it is left to the instrumentation author to determine how best to achieve this. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_RESULT_VALUE: "feature_flag.result.value"; +/** + * A semantic identifier for an evaluated flag value. + * + * @example red + * @example true + * @example on + * + * @note A semantic identifier, commonly referred to as a variant, provides a means + * for referring to a value without including the value itself. This can + * provide additional context for understanding the meaning behind a value. + * For example, the variant `red` maybe be used for the value `#c05543`. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_RESULT_VARIANT: "feature_flag.result.variant"; +/** + * The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs. + * + * @example proj-1 + * @example ab98sgs + * @example service1/dev + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_SET_ID: "feature_flag.set.id"; +/** + * Deprecated, use `feature_flag.result.variant` instead. + * + * @example red + * @example true + * @example on + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.variant`. + */ +export declare const ATTR_FEATURE_FLAG_VARIANT: "feature_flag.variant"; +/** + * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset. + * + * @example 1 + * @example 01ABCDEF + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_VERSION: "feature_flag.version"; +/** + * Time when the file was last accessed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_ACCESSED: "file.accessed"; +/** + * Array of file attributes. + * + * @example ["readonly", "hidden"] + * + * @note Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected for this attribute: `archive`, `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, `write`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_ATTRIBUTES: "file.attributes"; +/** + * Time when the file attributes or metadata was last changed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note `file.changed` captures the time when any of the file's properties or attributes (including the content) are changed, while `file.modified` captures the timestamp when the file content is modified. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_CHANGED: "file.changed"; +/** + * Time when the file was created, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_CREATED: "file.created"; +/** + * Directory where the file is located. It should include the drive letter, when appropriate. + * + * @example /home/user + * @example C:\\Program Files\\MyApp + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_DIRECTORY: "file.directory"; +/** + * File extension, excluding the leading dot. + * + * @example png + * @example gz + * + * @note When the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_EXTENSION: "file.extension"; +/** + * Name of the fork. A fork is additional data associated with a filesystem object. + * + * @example Zone.Identifier + * + * @note On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. + * On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: C:\\path\\to\\filename.extension:some_fork_name, and some_fork_name is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_FORK_NAME: "file.fork_name"; +/** + * Primary Group ID (GID) of the file. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_GROUP_ID: "file.group.id"; +/** + * Primary group name of the file. + * + * @example users + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_GROUP_NAME: "file.group.name"; +/** + * Inode representing the file in the filesystem. + * + * @example 256383 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_INODE: "file.inode"; +/** + * Mode of the file in octal representation. + * + * @example 0640 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_MODE: "file.mode"; +/** + * Time when the file content was last modified, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_MODIFIED: "file.modified"; +/** + * Name of the file including the extension, without the directory. + * + * @example example.png + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_NAME: "file.name"; +/** + * The user ID (UID) or security identifier (SID) of the file owner. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_OWNER_ID: "file.owner.id"; +/** + * Username of the file owner. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_OWNER_NAME: "file.owner.name"; +/** + * Full path to the file, including the file name. It should include the drive letter, when appropriate. + * + * @example /home/alice/example.png + * @example C:\\Program Files\\MyApp\\myapp.exe + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_PATH: "file.path"; +/** + * File size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_SIZE: "file.size"; +/** + * Path to the target of a symbolic link. + * + * @example /usr/bin/python3 + * + * @note This attribute is only applicable to symbolic links. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH: "file.symbolic_link.target_path"; +/** + * The container within GCP where the AppHub application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_APPLICATION_CONTAINER: "gcp.apphub.application.container"; +/** + * The name of the application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_APPLICATION_ID: "gcp.apphub.application.id"; +/** + * The GCP zone or region where the application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_APPLICATION_LOCATION: "gcp.apphub.application.location"; +/** + * Criticality of a service indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE: "gcp.apphub.service.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Environment of a service is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE: "gcp.apphub.service.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_SERVICE_ID: "gcp.apphub.service.id"; +/** + * Criticality of a workload indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE: "gcp.apphub.workload.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Environment of a workload is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE: "gcp.apphub.workload.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_WORKLOAD_ID: "gcp.apphub.workload.id"; +/** + * The container within GCP where the AppHub destination application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_CONTAINER: "gcp.apphub_destination.application.container"; +/** + * The name of the destination application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_ID: "gcp.apphub_destination.application.id"; +/** + * The GCP zone or region where the destination application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_LOCATION: "gcp.apphub_destination.application.location"; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE: "gcp.apphub_destination.service.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Software lifecycle stage of a destination service as defined [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE: "gcp.apphub_destination.service.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the destination service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ID: "gcp.apphub_destination.service.id"; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE: "gcp.apphub_destination.workload.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Environment of a destination workload is the stage of a software lifecycle as provided in the [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE: "gcp.apphub_destination.workload.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the destination workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ID: "gcp.apphub_destination.workload.id"; +/** + * Identifies the Google Cloud service for which the official client library is intended. + * + * @example appengine + * @example run + * @example firestore + * @example alloydb + * @example spanner + * + * @note Intended to be a stable identifier for Google Cloud client libraries that is uniform across implementation languages. The value should be derived from the canonical service domain for the service; for example, 'foo.googleapis.com' should result in a value of 'foo'. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_CLIENT_SERVICE: "gcp.client.service"; +/** + * The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example job-name-xxxx + * @example sample-job-mdw84 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_CLOUD_RUN_JOB_EXECUTION: "gcp.cloud_run.job.execution"; +/** + * The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example 0 + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX: "gcp.cloud_run.job.task_index"; +/** + * The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm). + * + * @example my-host1234.example.com + * @example sample-vm.us-west1-b.c.my-project.internal + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_GCE_INSTANCE_HOSTNAME: "gcp.gce.instance.hostname"; +/** + * The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names). + * + * @example instance-1 + * @example my-vm-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_GCE_INSTANCE_NAME: "gcp.gce.instance.name"; +/** + * Free-form description of the GenAI agent provided by the application. + * + * @example Helps with math problems + * @example Generates fiction stories + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_AGENT_DESCRIPTION: "gen_ai.agent.description"; +/** + * The unique identifier of the GenAI agent. + * + * @example asst_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_AGENT_ID: "gen_ai.agent.id"; +/** + * Human-readable name of the GenAI agent provided by the application. + * + * @example Math Tutor + * @example Fiction Writer + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_AGENT_NAME: "gen_ai.agent.name"; +/** + * Deprecated, use Event API to report completions contents. + * + * @example [{'role': 'assistant', 'content': 'The capital of France is Paris.'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_GEN_AI_COMPLETION: "gen_ai.completion"; +/** + * The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation. + * + * @example conv_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_CONVERSATION_ID: "gen_ai.conversation.id"; +/** + * The data source identifier. + * + * @example H7STPQYOND + * + * @note Data sources are used by AI agents and RAG applications to store grounding data. A data source may be an external database, object store, document collection, website, or any other storage system used by the GenAI agent or application. The `gen_ai.data_source.id` **SHOULD** match the identifier used by the GenAI system rather than a name specific to the external storage, such as a database or object store. Semantic conventions referencing `gen_ai.data_source.id` **MAY** also leverage additional attributes, such as `db.*`, to further identify and describe the data source. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_DATA_SOURCE_ID: "gen_ai.data_source.id"; +/** + * The number of dimensions the resulting output embeddings should have. + * + * @example 512 + * @example 1024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT: "gen_ai.embeddings.dimension.count"; +/** + * A free-form explanation for the assigned score provided by the evaluator. + * + * @example The response is factually accurate but lacks sufficient detail to fully address the question. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_EXPLANATION: "gen_ai.evaluation.explanation"; +/** + * The name of the evaluation metric used for the GenAI response. + * + * @example Relevance + * @example IntentResolution + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_NAME: "gen_ai.evaluation.name"; +/** + * Human readable label for evaluation. + * + * @example relevant + * @example not_relevant + * @example correct + * @example incorrect + * @example pass + * @example fail + * + * @note This attribute provides a human-readable interpretation of the evaluation score produced by an evaluator. For example, a score value of 1 could mean "relevant" in one evaluation system and "not relevant" in another, depending on the scoring range and evaluator. The label **SHOULD** have low cardinality. Possible values depend on the evaluation metric and evaluator used; implementations **SHOULD** document the possible values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_SCORE_LABEL: "gen_ai.evaluation.score.label"; +/** + * The evaluation score returned by the evaluator. + * + * @example 4.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_SCORE_VALUE: "gen_ai.evaluation.score.value"; +/** + * The chat history provided to the model as an input. + * + * @example [ + * { + * "role": "user", + * "parts": [ + * { + * "type": "text", + * "content": "Weather in Paris?" + * } + * ] + * }, + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "tool_call", + * "id": "call_VSPygqKTWdrhaFErNvMV18Yl", + * "name": "get_weather", + * "arguments": { + * "location": "Paris" + * } + * } + * ] + * }, + * { + * "role": "tool", + * "parts": [ + * { + * "type": "tool_call_response", + * "id": " call_VSPygqKTWdrhaFErNvMV18Yl", + * "result": "rainy, 57°F" + * } + * ] + * } + * ] + * + * @note Instrumentations **MUST** follow [Input messages JSON schema](/docs/gen-ai/gen-ai-input-messages.json). + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Messages **MUST** be provided in the order they were sent to the model. + * Instrumentations **MAY** provide a way for users to filter or truncate + * input messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_INPUT_MESSAGES: "gen_ai.input.messages"; +/** + * Deprecated, use `gen_ai.output.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.output.type`. + */ +export declare const ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT: "gen_ai.openai.request.response_format"; +/** + * Enum value "json_object" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON object response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT: "json_object"; +/** + * Enum value "json_schema" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON schema response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA: "json_schema"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * Text response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT: "text"; +/** + * Deprecated, use `gen_ai.request.seed`. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.request.seed`. + */ +export declare const ATTR_GEN_AI_OPENAI_REQUEST_SEED: "gen_ai.openai.request.seed"; +/** + * Deprecated, use `openai.request.service_tier`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.request.service_tier`. + */ +export declare const ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER: "gen_ai.openai.request.service_tier"; +/** + * Enum value "auto" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO: "auto"; +/** + * Enum value "default" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT: "default"; +/** + * Deprecated, use `openai.response.service_tier`. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.service_tier`. + */ +export declare const ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER: "gen_ai.openai.response.service_tier"; +/** + * Deprecated, use `openai.response.system_fingerprint`. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.system_fingerprint`. + */ +export declare const ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT: "gen_ai.openai.response.system_fingerprint"; +/** + * The name of the operation being performed. + * + * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_OPERATION_NAME: "gen_ai.operation.name"; +/** + * Enum value "chat" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_CHAT: "chat"; +/** + * Enum value "create_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Create GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT: "create_agent"; +/** + * Enum value "embeddings" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS: "embeddings"; +/** + * Enum value "execute_tool" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Execute a tool + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL: "execute_tool"; +/** + * Enum value "generate_content" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_GENERATE_CONTENT: "generate_content"; +/** + * Enum value "invoke_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Invoke GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT: "invoke_agent"; +/** + * Enum value "text_completion" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION: "text_completion"; +/** + * Messages returned by the model where each message represents a specific model response (choice, candidate). + * + * @example [ + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "text", + * "content": "The weather in Paris is currently rainy with a temperature of 57°F." + * } + * ], + * "finish_reason": "stop" + * } + * ] + * + * @note Instrumentations **MUST** follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json) + * + * Each message represents a single output choice/candidate generated by + * the model. Each message corresponds to exactly one generation + * (choice/candidate) and vice versa - one choice cannot be split across + * multiple messages or one message cannot contain parts from multiple choices. + * + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * output messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_OUTPUT_MESSAGES: "gen_ai.output.messages"; +/** + * Represents the content type requested by the client. + * + * @note This attribute **SHOULD** be used when the client requests output of a specific type. The model may return zero or more outputs of this type. + * This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file. + * Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_OUTPUT_TYPE: "gen_ai.output.type"; +/** + * Enum value "image" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Image + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_IMAGE: "image"; +/** + * Enum value "json" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * JSON object with known or unknown schema + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_JSON: "json"; +/** + * Enum value "speech" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Speech + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_SPEECH: "speech"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Plain text + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_TEXT: "text"; +/** + * Deprecated, use Event API to report prompt contents. + * + * @example [{'role': 'user', 'content': 'What is the capital of France?'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_GEN_AI_PROMPT: "gen_ai.prompt"; +/** + * The name of the prompt that uniquely identifies it. + * + * @example analyze-code + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_PROMPT_NAME: "gen_ai.prompt.name"; +/** + * The Generative AI provider as identified by the client or server instrumentation. + * + * @note The attribute **SHOULD** be set based on the instrumentation's best + * knowledge and may differ from the actual model provider. + * + * Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms + * are accessible using the OpenAI REST API and corresponding client libraries, + * but may proxy or host models from different providers. + * + * The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address` + * attributes may help identify the actual system in use. + * + * The `gen_ai.provider.name` attribute acts as a discriminator that + * identifies the GenAI telemetry format flavor specific to that provider + * within GenAI semantic conventions. + * It **SHOULD** be set consistently with provider-specific attributes and signals. + * For example, GenAI spans, metrics, and events related to AWS Bedrock + * should have the `gen_ai.provider.name` set to `aws.bedrock` and include + * applicable `aws.bedrock.*` attributes and are not expected to include + * `openai.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_PROVIDER_NAME: "gen_ai.provider.name"; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Anthropic](https://www.anthropic.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_ANTHROPIC: "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [AWS Bedrock](https://aws.amazon.com/bedrock) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_AWS_BEDROCK: "aws.bedrock"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_INFERENCE: "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_OPENAI: "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Cohere](https://cohere.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_COHERE: "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [DeepSeek](https://www.deepseek.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_DEEPSEEK: "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Gemini](https://cloud.google.com/products/gemini) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEMINI: "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEN_AI: "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Vertex AI](https://cloud.google.com/vertex-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GCP_VERTEX_AI: "gcp.vertex_ai"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Groq](https://groq.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GROQ: "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_IBM_WATSONX_AI: "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Mistral AI](https://mistral.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_MISTRAL_AI: "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [OpenAI](https://openai.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_OPENAI: "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Perplexity](https://www.perplexity.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_PERPLEXITY: "perplexity"; +/** + * Enum value "x_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [xAI](https://x.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_X_AI: "x_ai"; +/** + * The target number of candidate completions to return. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_CHOICE_COUNT: "gen_ai.request.choice.count"; +/** + * The encoding formats requested in an embeddings operation, if specified. + * + * @example ["base64"] + * @example ["float", "binary"] + * + * @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS: "gen_ai.request.encoding_formats"; +/** + * The frequency penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY: "gen_ai.request.frequency_penalty"; +/** + * The maximum number of tokens the model generates for a request. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_MAX_TOKENS: "gen_ai.request.max_tokens"; +/** + * The name of the GenAI model a request is being made to. + * + * @example "gpt-4" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_MODEL: "gen_ai.request.model"; +/** + * The presence penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY: "gen_ai.request.presence_penalty"; +/** + * Requests with same seed value more likely to return same result. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_SEED: "gen_ai.request.seed"; +/** + * List of sequences that the model will use to stop generating further tokens. + * + * @example ["forest", "lived"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES: "gen_ai.request.stop_sequences"; +/** + * The temperature setting for the GenAI request. + * + * @example 0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_TEMPERATURE: "gen_ai.request.temperature"; +/** + * The top_k sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_TOP_K: "gen_ai.request.top_k"; +/** + * The top_p sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_TOP_P: "gen_ai.request.top_p"; +/** + * Array of reasons the model stopped generating tokens, corresponding to each generation received. + * + * @example ["stop"] + * @example ["stop", "length"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_RESPONSE_FINISH_REASONS: "gen_ai.response.finish_reasons"; +/** + * The unique identifier for the completion. + * + * @example chatcmpl-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_RESPONSE_ID: "gen_ai.response.id"; +/** + * The name of the model that generated the response. + * + * @example gpt-4-0613 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_RESPONSE_MODEL: "gen_ai.response.model"; +/** + * Deprecated, use `gen_ai.provider.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.provider.name`. + */ +export declare const ATTR_GEN_AI_SYSTEM: "gen_ai.system"; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Anthropic + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_ANTHROPIC: "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * AWS Bedrock + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AWS_BEDROCK: "aws.bedrock"; +/** + * Enum value "az.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.inference`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE: "az.ai.inference"; +/** + * Enum value "az.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.openai`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI: "az.ai.openai"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZURE_AI_INFERENCE: "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZURE_AI_OPENAI: "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Cohere + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_COHERE: "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * DeepSeek + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_DEEPSEEK: "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GCP_GEMINI: "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GCP_GEN_AI: "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GCP_VERTEX_AI: "gcp.vertex_ai"; +/** + * Enum value "gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.gemini`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GEMINI: "gemini"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Groq + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GROQ: "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * IBM Watsonx AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI: "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Mistral AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_MISTRAL_AI: "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_OPENAI: "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Perplexity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_PERPLEXITY: "perplexity"; +/** + * Enum value "vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.vertex_ai`. + */ +export declare const GEN_AI_SYSTEM_VALUE_VERTEX_AI: "vertex_ai"; +/** + * Enum value "xai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * xAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_XAI: "xai"; +/** + * The system message or instructions provided to the GenAI model separately from the chat history. + * + * @example [ + * { + * "type": "text", + * "content": "You are an Agent that greet users, always use greetings tool to respond" + * } + * ] + * + * @example [ + * { + * "type": "text", + * "content": "You are a language translator." + * }, + * { + * "type": "text", + * "content": "Your mission is to translate text in English to French." + * } + * ] + * + * @note This attribute **SHOULD** be used when the corresponding provider or API + * allows to provide system instructions or messages separately from the + * chat history. + * + * Instructions that are part of the chat history **SHOULD** be recorded in + * `gen_ai.input.messages` attribute instead. + * + * Instrumentations **MUST** follow [System instructions JSON schema](/docs/gen-ai/gen-ai-system-instructions.json). + * + * When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * system instructions. + * + * > [!Warning] + * > This attribute may contain sensitive information. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_SYSTEM_INSTRUCTIONS: "gen_ai.system_instructions"; +/** + * The type of token being counted. + * + * @example input + * @example output + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOKEN_TYPE: "gen_ai.token.type"; +/** + * Enum value "input" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Input tokens (prompt, input, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_TOKEN_TYPE_VALUE_INPUT: "input"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `output`. + */ +export declare const GEN_AI_TOKEN_TYPE_VALUE_COMPLETION: "output"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_TOKEN_TYPE_VALUE_OUTPUT: "output"; +/** + * Parameters passed to the tool call. + * + * @example { + * "location": "San Francisco?", + * "date": "2025-10-01" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_CALL_ARGUMENTS: "gen_ai.tool.call.arguments"; +/** + * The tool call identifier. + * + * @example call_mszuSIzqtI65i1wAUOE8w5H4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_CALL_ID: "gen_ai.tool.call.id"; +/** + * The result returned by the tool call (if any and if execution was successful). + * + * @example { + * "temperature_range": { + * "high": 75, + * "low": 60 + * }, + * "conditions": "sunny" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_CALL_RESULT: "gen_ai.tool.call.result"; +/** + * The list of source system tool definitions available to the GenAI agent or model. + * + * @example [ + * { + * "type": "function", + * "name": "get_current_weather", + * "description": "Get the current weather in a given location", + * "parameters": { + * "type": "object", + * "properties": { + * "location": { + * "type": "string", + * "description": "The city and state, e.g. San Francisco, CA" + * }, + * "unit": { + * "type": "string", + * "enum": [ + * "celsius", + * "fahrenheit" + * ] + * } + * }, + * "required": [ + * "location", + * "unit" + * ] + * } + * } + * ] + * + * @note The value of this attribute matches source system tool definition format. + * + * It's expected to be an array of objects where each object represents a tool definition. In case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an array. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Since this attribute could be large, it's NOT **RECOMMENDED** to populate + * it by default. Instrumentations **MAY** provide a way to enable + * populating this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_DEFINITIONS: "gen_ai.tool.definitions"; +/** + * The tool description. + * + * @example Multiply two numbers + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_DESCRIPTION: "gen_ai.tool.description"; +/** + * Name of the tool utilized by the agent. + * + * @example Flights + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_NAME: "gen_ai.tool.name"; +/** + * Type of the tool utilized by the agent + * + * @example function + * @example extension + * @example datastore + * + * @note Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems. + * Agent-side operations involve actions that are performed by the agent on the server or within the agent's controlled environment. + * Function: A tool executed on the client-side, where the agent generates parameters for a predefined function, and the client executes the logic. + * Client-side operations are actions taken on the user's end or within the client application. + * Datastore: A tool used by the agent to access and query structured or unstructured external data for retrieval-augmented tasks or knowledge updates. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_TYPE: "gen_ai.tool.type"; +/** + * Deprecated, use `gen_ai.usage.output_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.output_tokens`. + */ +export declare const ATTR_GEN_AI_USAGE_COMPLETION_TOKENS: "gen_ai.usage.completion_tokens"; +/** + * The number of tokens used in the GenAI input (prompt). + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_USAGE_INPUT_TOKENS: "gen_ai.usage.input_tokens"; +/** + * The number of tokens used in the GenAI response (completion). + * + * @example 180 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS: "gen_ai.usage.output_tokens"; +/** + * Deprecated, use `gen_ai.usage.input_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.input_tokens`. + */ +export declare const ATTR_GEN_AI_USAGE_PROMPT_TOKENS: "gen_ai.usage.prompt_tokens"; +/** + * Two-letter code representing continent’s name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_CONTINENT_CODE: "geo.continent.code"; +/** + * Enum value "AF" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Africa + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_AF: "AF"; +/** + * Enum value "AN" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Antarctica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_AN: "AN"; +/** + * Enum value "AS" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Asia + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_AS: "AS"; +/** + * Enum value "EU" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Europe + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_EU: "EU"; +/** + * Enum value "NA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * North America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_NA: "NA"; +/** + * Enum value "OC" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Oceania + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_OC: "OC"; +/** + * Enum value "SA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * South America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_SA: "SA"; +/** + * Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)). + * + * @example CA + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_COUNTRY_ISO_CODE: "geo.country.iso_code"; +/** + * Locality name. Represents the name of a city, town, village, or similar populated place. + * + * @example Montreal + * @example Berlin + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_LOCALITY_NAME: "geo.locality.name"; +/** + * Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example 45.505918 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_LOCATION_LAT: "geo.location.lat"; +/** + * Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example -73.61483 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_LOCATION_LON: "geo.location.lon"; +/** + * Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. + * + * @example 94040 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_POSTAL_CODE: "geo.postal_code"; +/** + * Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)). + * + * @example CA-QC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_REGION_ISO_CODE: "geo.region.iso_code"; +/** + * The type of memory. + * + * @example other + * @example stack + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GO_MEMORY_TYPE: "go.memory.type"; +/** + * Enum value "other" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory used by the Go runtime, excluding other categories of memory usage described in this enumeration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GO_MEMORY_TYPE_VALUE_OTHER: "other"; +/** + * Enum value "stack" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GO_MEMORY_TYPE_VALUE_STACK: "stack"; +/** + * The GraphQL document being executed. + * + * @example "query findBookById { bookById(id: ?) { name } }" + * + * @note The value may be sanitized to exclude sensitive information. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GRAPHQL_DOCUMENT: "graphql.document"; +/** + * The name of the operation being executed. + * + * @example "findBookById" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GRAPHQL_OPERATION_NAME: "graphql.operation.name"; +/** + * The type of the operation being executed. + * + * @example query + * @example mutation + * @example subscription + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GRAPHQL_OPERATION_TYPE: "graphql.operation.type"; +/** + * Enum value "mutation" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL mutation + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GRAPHQL_OPERATION_TYPE_VALUE_MUTATION: "mutation"; +/** + * Enum value "query" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL query + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GRAPHQL_OPERATION_TYPE_VALUE_QUERY: "query"; +/** + * Enum value "subscription" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL subscription + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION: "subscription"; +/** + * Unique identifier for the application + * + * @example 2daa2797-e42b-4624-9322-ec3f968df4da + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HEROKU_APP_ID: "heroku.app.id"; +/** + * Commit hash for the current release + * + * @example e6134959463efd8966b20e75b913cafe3f5ec + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HEROKU_RELEASE_COMMIT: "heroku.release.commit"; +/** + * Time and date the release was created + * + * @example 2022-10-23T18:00:42Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP: "heroku.release.creation_timestamp"; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ARCH: "host.arch"; +/** + * Enum value "amd64" for attribute {@link ATTR_HOST_ARCH}. + * + * AMD64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_AMD64: "amd64"; +/** + * Enum value "arm32" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM32 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_ARM32: "arm32"; +/** + * Enum value "arm64" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_ARM64: "arm64"; +/** + * Enum value "ia64" for attribute {@link ATTR_HOST_ARCH}. + * + * Itanium + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_IA64: "ia64"; +/** + * Enum value "ppc32" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_PPC32: "ppc32"; +/** + * Enum value "ppc64" for attribute {@link ATTR_HOST_ARCH}. + * + * 64-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_PPC64: "ppc64"; +/** + * Enum value "s390x" for attribute {@link ATTR_HOST_ARCH}. + * + * IBM z/Architecture + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_S390X: "s390x"; +/** + * Enum value "x86" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit x86 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_X86: "x86"; +/** + * The amount of level 2 memory cache available to the processor (in Bytes). + * + * @example 12288000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_CACHE_L2_SIZE: "host.cpu.cache.l2.size"; +/** + * Family or generation of the CPU. + * + * @example 6 + * @example PA-RISC 1.1e + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_FAMILY: "host.cpu.family"; +/** + * Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family. + * + * @example 6 + * @example 9000/778/B180L + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_MODEL_ID: "host.cpu.model.id"; +/** + * Model designation of the processor. + * + * @example 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_MODEL_NAME: "host.cpu.model.name"; +/** + * Stepping or core revisions. + * + * @example 1 + * @example r1p1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_STEPPING: "host.cpu.stepping"; +/** + * Processor manufacturer identifier. A maximum 12-character string. + * + * @example GenuineIntel + * + * @note [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_VENDOR_ID: "host.cpu.vendor.id"; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ID: "host.id"; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_ID: "host.image.id"; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_NAME: "host.image.name"; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_VERSION: "host.image.version"; +/** + * Available IP addresses of the host, excluding loopback interfaces. + * + * @example ["192.168.1.140", "fe80::abc2:4a28:737a:609e"] + * + * @note IPv4 Addresses **MUST** be specified in dotted-quad notation. IPv6 addresses **MUST** be specified in the [RFC 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IP: "host.ip"; +/** + * Available MAC addresses of the host, excluding loopback interfaces. + * + * @example ["AC-DE-48-23-45-67", "AC-DE-48-23-45-67-01-9F"] + * + * @note MAC Addresses **MUST** be represented in [IEEE RA hexadecimal form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): as hyphen-separated octets in uppercase hexadecimal form from most to least significant. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_MAC: "host.mac"; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_NAME: "host.name"; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_TYPE: "host.type"; +/** + * Deprecated, use `client.address` instead. + * + * @example "83.164.160.102" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `client.address`. + */ +export declare const ATTR_HTTP_CLIENT_IP: "http.client_ip"; +/** + * State of the HTTP connection in the HTTP connection pool. + * + * @example active + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_CONNECTION_STATE: "http.connection.state"; +/** + * Enum value "active" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * active state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_CONNECTION_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "idle" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * idle state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_CONNECTION_STATE_VALUE_IDLE: "idle"; +/** + * Deprecated, use `network.protocol.name` and `network.protocol.version` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split into `network.protocol.name` and `network.protocol.version` + */ +export declare const ATTR_HTTP_FLAVOR: "http.flavor"; +/** + * Enum value "1.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_1_0: "1.0"; +/** + * Enum value "1.1" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_1_1: "1.1"; +/** + * Enum value "2.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_2_0: "2.0"; +/** + * Enum value "3.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/3 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_3_0: "3.0"; +/** + * Enum value "QUIC" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * QUIC protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_QUIC: "QUIC"; +/** + * Enum value "SPDY" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * SPDY protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_SPDY: "SPDY"; +/** + * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage. + * + * @example www.example.org + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage. + */ +export declare const ATTR_HTTP_HOST: "http.host"; +/** + * Deprecated, use `http.request.method` instead. + * + * @example GET + * @example POST + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.method`. + */ +export declare const ATTR_HTTP_METHOD: "http.method"; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_REQUEST_BODY_SIZE: "http.request.body.size"; +/** + * Enum value "QUERY" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * QUERY method. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_QUERY: "QUERY"; +/** + * The total size of the request in bytes. This should be the total number of bytes sent over the wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request body if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_REQUEST_SIZE: "http.request.size"; +/** + * Deprecated, use `http.request.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.header.content-length`. + */ +export declare const ATTR_HTTP_REQUEST_CONTENT_LENGTH: "http.request_content_length"; +/** + * Deprecated, use `http.request.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.body.size`. + */ +export declare const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: "http.request_content_length_uncompressed"; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_RESPONSE_BODY_SIZE: "http.response.body.size"; +/** + * The total size of the response in bytes. This should be the total number of bytes sent over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and response body and trailers if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_RESPONSE_SIZE: "http.response.size"; +/** + * Deprecated, use `http.response.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.header.content-length`. + */ +export declare const ATTR_HTTP_RESPONSE_CONTENT_LENGTH: "http.response_content_length"; +/** + * Deprecated, use `http.response.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.body.size`. + */ +export declare const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: "http.response_content_length_uncompressed"; +/** + * Deprecated, use `url.scheme` instead. + * + * @example http + * @example https + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.scheme`. + */ +export declare const ATTR_HTTP_SCHEME: "http.scheme"; +/** + * Deprecated, use `server.address` instead. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_HTTP_SERVER_NAME: "http.server_name"; +/** + * Deprecated, use `http.response.status_code` instead. + * + * @example 200 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.status_code`. + */ +export declare const ATTR_HTTP_STATUS_CODE: "http.status_code"; +/** + * Deprecated, use `url.path` and `url.query` instead. + * + * @example /search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `url.path` and `url.query`. + */ +export declare const ATTR_HTTP_TARGET: "http.target"; +/** + * Deprecated, use `url.full` instead. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.full`. + */ +export declare const ATTR_HTTP_URL: "http.url"; +/** + * Deprecated, use `user_agent.original` instead. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `user_agent.original`. + */ +export declare const ATTR_HTTP_USER_AGENT: "http.user_agent"; +/** + * Design capacity in Watts-hours or Amper-hours + * + * @example 9.3Ah + * @example 50Wh + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BATTERY_CAPACITY: "hw.battery.capacity"; +/** + * Battery [chemistry](https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html), e.g. Lithium-Ion, Nickel-Cadmium, etc. + * + * @example Li-ion + * @example NiMH + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BATTERY_CHEMISTRY: "hw.battery.chemistry"; +/** + * The current state of the battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BATTERY_STATE: "hw.battery.state"; +/** + * Enum value "charging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Charging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_BATTERY_STATE_VALUE_CHARGING: "charging"; +/** + * Enum value "discharging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Discharging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_BATTERY_STATE_VALUE_DISCHARGING: "discharging"; +/** + * BIOS version of the hardware component + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BIOS_VERSION: "hw.bios_version"; +/** + * Driver version for the hardware component + * + * @example 10.2.1-3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_DRIVER_VERSION: "hw.driver_version"; +/** + * Type of the enclosure (useful for modular systems) + * + * @example Computer + * @example Storage + * @example Switch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_ENCLOSURE_TYPE: "hw.enclosure.type"; +/** + * Firmware version of the hardware component + * + * @example 2.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_FIRMWARE_VERSION: "hw.firmware_version"; +/** + * Type of task the GPU is performing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_GPU_TASK: "hw.gpu.task"; +/** + * Enum value "decoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Decoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_GPU_TASK_VALUE_DECODER: "decoder"; +/** + * Enum value "encoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Encoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_GPU_TASK_VALUE_ENCODER: "encoder"; +/** + * Enum value "general" for attribute {@link ATTR_HW_GPU_TASK}. + * + * General + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_GPU_TASK_VALUE_GENERAL: "general"; +/** + * An identifier for the hardware component, unique within the monitored host + * + * @example win32battery_battery_testsysa33_1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_ID: "hw.id"; +/** + * Type of limit for hardware components + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_LIMIT_TYPE: "hw.limit_type"; +/** + * Enum value "critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_CRITICAL: "critical"; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_DEGRADED: "degraded"; +/** + * Enum value "high.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_HIGH_CRITICAL: "high.critical"; +/** + * Enum value "high.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_HIGH_DEGRADED: "high.degraded"; +/** + * Enum value "low.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_LOW_CRITICAL: "low.critical"; +/** + * Enum value "low.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_LOW_DEGRADED: "low.degraded"; +/** + * Enum value "max" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Maximum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_MAX: "max"; +/** + * Enum value "throttled" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Throttled + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_THROTTLED: "throttled"; +/** + * Enum value "turbo" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Turbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_TURBO: "turbo"; +/** + * RAID Level of the logical disk + * + * @example RAID0+1 + * @example RAID5 + * @example RAID10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_LOGICAL_DISK_RAID_LEVEL: "hw.logical_disk.raid_level"; +/** + * State of the logical disk space usage + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_LOGICAL_DISK_STATE: "hw.logical_disk.state"; +/** + * Enum value "free" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Free + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LOGICAL_DISK_STATE_VALUE_FREE: "free"; +/** + * Enum value "used" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Used + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LOGICAL_DISK_STATE_VALUE_USED: "used"; +/** + * Type of the memory module + * + * @example DDR4 + * @example DDR5 + * @example LPDDR5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_MEMORY_TYPE: "hw.memory.type"; +/** + * Descriptive model name of the hardware component + * + * @example PERC H740P + * @example Intel(R) Core(TM) i7-10700K + * @example Dell XPS 15 Battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_MODEL: "hw.model"; +/** + * An easily-recognizable name for the hardware component + * + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_NAME: "hw.name"; +/** + * Logical addresses of the adapter (e.g. IP address, or WWPN) + * + * @example ["172.16.8.21", "57.11.193.42"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_NETWORK_LOGICAL_ADDRESSES: "hw.network.logical_addresses"; +/** + * Physical address of the adapter (e.g. MAC address, or WWNN) + * + * @example 00-90-F5-E9-7B-36 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_NETWORK_PHYSICAL_ADDRESS: "hw.network.physical_address"; +/** + * Unique identifier of the parent component (typically the `hw.id` attribute of the enclosure, or disk controller) + * + * @example dellStorage_perc_0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PARENT: "hw.parent"; +/** + * [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute of the physical disk + * + * @example Spin Retry Count + * @example Seek Error Rate + * @example Raw Read Error Rate + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PHYSICAL_DISK_SMART_ATTRIBUTE: "hw.physical_disk.smart_attribute"; +/** + * State of the physical disk endurance utilization + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PHYSICAL_DISK_STATE: "hw.physical_disk.state"; +/** + * Enum value "remaining" for attribute {@link ATTR_HW_PHYSICAL_DISK_STATE}. + * + * Remaining + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_PHYSICAL_DISK_STATE_VALUE_REMAINING: "remaining"; +/** + * Type of the physical disk + * + * @example HDD + * @example SSD + * @example 10K + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PHYSICAL_DISK_TYPE: "hw.physical_disk.type"; +/** + * Location of the sensor + * + * @example cpu0 + * @example ps1 + * @example INLET + * @example CPU0_DIE + * @example AMBIENT + * @example MOTHERBOARD + * @example PS0 V3_3 + * @example MAIN_12V + * @example CPU_VCORE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_SENSOR_LOCATION: "hw.sensor_location"; +/** + * Serial number of the hardware component + * + * @example CNFCP0123456789 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_SERIAL_NUMBER: "hw.serial_number"; +/** + * The current state of the component + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_STATE: "hw.state"; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_STATE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_DEGRADED: "degraded"; +/** + * Enum value "failed" for attribute {@link ATTR_HW_STATE}. + * + * Failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_FAILED: "failed"; +/** + * Enum value "needs_cleaning" for attribute {@link ATTR_HW_STATE}. + * + * Needs Cleaning + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_NEEDS_CLEANING: "needs_cleaning"; +/** + * Enum value "ok" for attribute {@link ATTR_HW_STATE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_OK: "ok"; +/** + * Enum value "predicted_failure" for attribute {@link ATTR_HW_STATE}. + * + * Predicted Failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_PREDICTED_FAILURE: "predicted_failure"; +/** + * Type of tape drive operation + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_TAPE_DRIVE_OPERATION_TYPE: "hw.tape_drive.operation_type"; +/** + * Enum value "clean" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Clean + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_CLEAN: "clean"; +/** + * Enum value "mount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Mount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_MOUNT: "mount"; +/** + * Enum value "unmount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Unmount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_UNMOUNT: "unmount"; +/** + * Type of the component + * + * @note Describes the category of the hardware component for which `hw.state` is being reported. For example, `hw.type=temperature` along with `hw.state=degraded` would indicate that the temperature of the hardware component has been reported as `degraded`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_TYPE: "hw.type"; +/** + * Enum value "battery" for attribute {@link ATTR_HW_TYPE}. + * + * Battery + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_BATTERY: "battery"; +/** + * Enum value "cpu" for attribute {@link ATTR_HW_TYPE}. + * + * CPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_CPU: "cpu"; +/** + * Enum value "disk_controller" for attribute {@link ATTR_HW_TYPE}. + * + * Disk controller + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_DISK_CONTROLLER: "disk_controller"; +/** + * Enum value "enclosure" for attribute {@link ATTR_HW_TYPE}. + * + * Enclosure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_ENCLOSURE: "enclosure"; +/** + * Enum value "fan" for attribute {@link ATTR_HW_TYPE}. + * + * Fan + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_FAN: "fan"; +/** + * Enum value "gpu" for attribute {@link ATTR_HW_TYPE}. + * + * GPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_GPU: "gpu"; +/** + * Enum value "logical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Logical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_LOGICAL_DISK: "logical_disk"; +/** + * Enum value "memory" for attribute {@link ATTR_HW_TYPE}. + * + * Memory + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_MEMORY: "memory"; +/** + * Enum value "network" for attribute {@link ATTR_HW_TYPE}. + * + * Network + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_NETWORK: "network"; +/** + * Enum value "physical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Physical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_PHYSICAL_DISK: "physical_disk"; +/** + * Enum value "power_supply" for attribute {@link ATTR_HW_TYPE}. + * + * Power supply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_POWER_SUPPLY: "power_supply"; +/** + * Enum value "tape_drive" for attribute {@link ATTR_HW_TYPE}. + * + * Tape drive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_TAPE_DRIVE: "tape_drive"; +/** + * Enum value "temperature" for attribute {@link ATTR_HW_TYPE}. + * + * Temperature + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_TEMPERATURE: "temperature"; +/** + * Enum value "voltage" for attribute {@link ATTR_HW_TYPE}. + * + * Voltage + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_VOLTAGE: "voltage"; +/** + * Vendor name of the hardware component + * + * @example Dell + * @example HP + * @example Intel + * @example AMD + * @example LSI + * @example Lenovo + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_VENDOR: "hw.vendor"; +/** + * This attribute represents the state of the application. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_IOS_APP_STATE: "ios.app.state"; +/** + * Enum value "active" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_INACTIVE: "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_TERMINATE: "terminate"; +/** + * Deprecated. Use the `ios.app.state` attribute. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `ios.app.state`. + */ +export declare const ATTR_IOS_STATE: "ios.state"; +/** + * Enum value "active" for attribute {@link ATTR_IOS_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_INACTIVE: "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_TERMINATE: "terminate"; +/** + * Protocol version, as specified in the `jsonrpc` property of the request and its corresponding response. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JSONRPC_PROTOCOL_VERSION: "jsonrpc.protocol.version"; +/** + * A string representation of the `id` property of the request and its corresponding response. + * + * @example 10 + * @example request-7 + * + * @note Under the [JSON-RPC specification](https://www.jsonrpc.org/specification), the `id` property may be a string, number, null, or omitted entirely. When omitted, the request is treated as a notification. Using `null` is not equivalent to omitting the `id`, but it is discouraged. + * Instrumentations **SHOULD NOT** capture this attribute when the `id` is `null` or omitted. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JSONRPC_REQUEST_ID: "jsonrpc.request.id"; +/** + * Name of the buffer pool. + * + * @example mapped + * @example direct + * + * @note Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JVM_BUFFER_POOL_NAME: "jvm.buffer.pool.name"; +/** + * Name of the garbage collector cause. + * + * @example System.gc() + * @example Allocation Failure + * + * @note Garbage collector cause is generally obtained via [GarbageCollectionNotificationInfo#getGcCause()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcCause()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JVM_GC_CAUSE: "jvm.gc.cause"; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CLUSTER_NAME: "k8s.cluster.name"; +/** + * A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note K8s doesn't have support for obtaining a cluster ID. If this is ever + * added, we will recommend collecting the `k8s.cluster.uid` through the + * official APIs. In the meantime, we are able to use the `uid` of the + * `kube-system` namespace as a proxy for cluster ID. Read on for the + * rationale. + * + * Every object created in a K8s cluster is assigned a distinct UID. The + * `kube-system` namespace is used by Kubernetes itself and will exist + * for the lifetime of the cluster. Using the `uid` of the `kube-system` + * namespace is a reasonable proxy for the K8s ClusterID as it will only + * change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are + * UUIDs as standardized by + * [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html). + * Which states: + * + * > If generated according to one of the mechanisms defined in Rec. + * > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be + * > different from all other UUIDs generated before 3603 A.D., or is + * > extremely likely to be different (depending on the mechanism chosen). + * + * Therefore, UIDs between clusters should be extremely unlikely to + * conflict. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CLUSTER_UID: "k8s.cluster.uid"; +/** + * The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`). + * + * @example redis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_NAME: "k8s.container.name"; +/** + * Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_RESTART_COUNT: "k8s.container.restart_count"; +/** + * Last terminated reason of the Container. + * + * @example Evicted + * @example Error + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON: "k8s.container.status.last_terminated_reason"; +/** + * The reason for the container state. Corresponds to the `reason` field of the: [K8s ContainerStateWaiting](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core) or [K8s ContainerStateTerminated](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core) + * + * @example ContainerCreating + * @example CrashLoopBackOff + * @example CreateContainerConfigError + * @example ErrImagePull + * @example ImagePullBackOff + * @example OOMKilled + * @example Completed + * @example Error + * @example ContainerCannotRun + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_STATUS_REASON: "k8s.container.status.reason"; +/** + * Enum value "Completed" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container has completed execution. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_COMPLETED: "Completed"; +/** + * Enum value "ContainerCannotRun" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container cannot run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CANNOT_RUN: "ContainerCannotRun"; +/** + * Enum value "ContainerCreating" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is being created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CREATING: "ContainerCreating"; +/** + * Enum value "CrashLoopBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is in a crash loop back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CRASH_LOOP_BACK_OFF: "CrashLoopBackOff"; +/** + * Enum value "CreateContainerConfigError" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error creating the container configuration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CREATE_CONTAINER_CONFIG_ERROR: "CreateContainerConfigError"; +/** + * Enum value "ErrImagePull" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error pulling the container image. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_ERR_IMAGE_PULL: "ErrImagePull"; +/** + * Enum value "Error" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error with the container. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_ERROR: "Error"; +/** + * Enum value "ImagePullBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container image pull is in back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_IMAGE_PULL_BACK_OFF: "ImagePullBackOff"; +/** + * Enum value "OOMKilled" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container was killed due to out of memory. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_OOM_KILLED: "OOMKilled"; +/** + * The state of the container. [K8s ContainerState](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core) + * + * @example terminated + * @example running + * @example waiting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_STATUS_STATE: "k8s.container.status.state"; +/** + * Enum value "running" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_STATE_VALUE_RUNNING: "running"; +/** + * Enum value "terminated" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container has terminated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_STATE_VALUE_TERMINATED: "terminated"; +/** + * Enum value "waiting" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is waiting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_STATE_VALUE_WAITING: "waiting"; +/** + * The cronjob annotation placed on the CronJob, the `` being the annotation name, the value being the annotation value. + * + * @example 4 + * @example + * + * @note Examples: + * + * - An annotation `retries` with value `4` **SHOULD** be recorded as the + * `k8s.cronjob.annotation.retries` attribute with value `"4"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_ANNOTATION: (key: string) => string; +/** + * The label placed on the CronJob, the `` being the label name, the value being the label value. + * + * @example weekly + * @example + * + * @note Examples: + * + * - A label `type` with value `weekly` **SHOULD** be recorded as the + * `k8s.cronjob.label.type` attribute with value `"weekly"`. + * - A label `automated` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_LABEL: (key: string) => string; +/** + * The name of the CronJob. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_NAME: "k8s.cronjob.name"; +/** + * The UID of the CronJob. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_UID: "k8s.cronjob.uid"; +/** + * The annotation placed on the DaemonSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.daemonset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_ANNOTATION: (key: string) => string; +/** + * The label placed on the DaemonSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.daemonset.label.app` attribute with value `"guestbook"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_LABEL: (key: string) => string; +/** + * The name of the DaemonSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_NAME: "k8s.daemonset.name"; +/** + * The UID of the DaemonSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_UID: "k8s.daemonset.uid"; +/** + * The annotation placed on the Deployment, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.deployment.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_ANNOTATION: (key: string) => string; +/** + * The label placed on the Deployment, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.deployment.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_LABEL: (key: string) => string; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_NAME: "k8s.deployment.name"; +/** + * The UID of the Deployment. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_UID: "k8s.deployment.uid"; +/** + * The type of metric source for the horizontal pod autoscaler. + * + * @example Resource + * @example ContainerResource + * + * @note This attribute reflects the `type` field of spec.metrics[] in the HPA. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_METRIC_TYPE: "k8s.hpa.metric.type"; +/** + * The name of the horizontal pod autoscaler. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_NAME: "k8s.hpa.name"; +/** + * The API version of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example apps/v1 + * @example autoscaling/v2 + * + * @note This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_SCALETARGETREF_API_VERSION: "k8s.hpa.scaletargetref.api_version"; +/** + * The kind of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example Deployment + * @example StatefulSet + * + * @note This maps to the `kind` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_SCALETARGETREF_KIND: "k8s.hpa.scaletargetref.kind"; +/** + * The name of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example my-deployment + * @example my-statefulset + * + * @note This maps to the `name` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_SCALETARGETREF_NAME: "k8s.hpa.scaletargetref.name"; +/** + * The UID of the horizontal pod autoscaler. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_UID: "k8s.hpa.uid"; +/** + * The size (identifier) of the K8s huge page. + * + * @example 2Mi + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HUGEPAGE_SIZE: "k8s.hugepage.size"; +/** + * The annotation placed on the Job, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `number` with value `1` **SHOULD** be recorded + * as the `k8s.job.annotation.number` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_ANNOTATION: (key: string) => string; +/** + * The label placed on the Job, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example ci + * @example + * + * @note + * Examples: + * + * - A label `jobtype` with value `ci` **SHOULD** be recorded + * as the `k8s.job.label.jobtype` attribute with value `"ci"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_LABEL: (key: string) => string; +/** + * The name of the Job. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_NAME: "k8s.job.name"; +/** + * The UID of the Job. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_UID: "k8s.job.uid"; +/** + * The annotation placed on the Namespace, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `ttl` with value `0` **SHOULD** be recorded + * as the `k8s.namespace.annotation.ttl` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_ANNOTATION: (key: string) => string; +/** + * The label placed on the Namespace, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example default + * @example + * + * @note + * Examples: + * + * - A label `kubernetes.io/metadata.name` with value `default` **SHOULD** be recorded + * as the `k8s.namespace.label.kubernetes.io/metadata.name` attribute with value `"default"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_LABEL: (key: string) => string; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_NAME: "k8s.namespace.name"; +/** + * The phase of the K8s namespace. + * + * @example active + * @example terminating + * + * @note This attribute aligns with the `phase` field of the + * [K8s NamespaceStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_PHASE: "k8s.namespace.phase"; +/** + * Enum value "active" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Active namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NAMESPACE_PHASE_VALUE_ACTIVE: "active"; +/** + * Enum value "terminating" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Terminating namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NAMESPACE_PHASE_VALUE_TERMINATING: "terminating"; +/** + * The annotation placed on the Node, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note Examples: + * + * - An annotation `node.alpha.kubernetes.io/ttl` with value `0` **SHOULD** be recorded as + * the `k8s.node.annotation.node.alpha.kubernetes.io/ttl` attribute with value `"0"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_ANNOTATION: (key: string) => string; +/** + * The status of the condition, one of True, False, Unknown. + * + * @example true + * @example false + * @example unknown + * + * @note This attribute aligns with the `status` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_CONDITION_STATUS: "k8s.node.condition.status"; +/** + * Enum value "false" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_FALSE: "false"; +/** + * Enum value "true" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_TRUE: "true"; +/** + * Enum value "unknown" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_UNKNOWN: "unknown"; +/** + * The condition type of a K8s Node. + * + * @example Ready + * @example DiskPressure + * + * @note K8s Node conditions as described + * by [K8s documentation](https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition). + * + * This attribute aligns with the `type` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * The set of possible values is not limited to those listed here. Managed Kubernetes environments, + * or custom controllers **MAY** introduce additional node condition types. + * When this occurs, the exact value as reported by the Kubernetes API **SHOULD** be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_CONDITION_TYPE: "k8s.node.condition.type"; +/** + * Enum value "DiskPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the disk size—that is, if the disk capacity is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_DISK_PRESSURE: "DiskPressure"; +/** + * Enum value "MemoryPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the node memory—that is, if the node memory is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_MEMORY_PRESSURE: "MemoryPressure"; +/** + * Enum value "NetworkUnavailable" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The network for the node is not correctly configured + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_NETWORK_UNAVAILABLE: "NetworkUnavailable"; +/** + * Enum value "PIDPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the processes—that is, if there are too many processes on the node + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_PID_PRESSURE: "PIDPressure"; +/** + * Enum value "Ready" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The node is healthy and ready to accept pods + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_READY: "Ready"; +/** + * The label placed on the Node, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example arm64 + * @example + * + * @note Examples: + * + * - A label `kubernetes.io/arch` with value `arm64` **SHOULD** be recorded + * as the `k8s.node.label.kubernetes.io/arch` attribute with value `"arm64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_LABEL: (key: string) => string; +/** + * The name of the Node. + * + * @example node-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_NAME: "k8s.node.name"; +/** + * The UID of the Node. + * + * @example 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_UID: "k8s.node.uid"; +/** + * The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value. + * + * @example true + * @example x64 + * @example + * + * @note Examples: + * + * - An annotation `kubernetes.io/enforce-mountable-secrets` with value `true` **SHOULD** be recorded as + * the `k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets` attribute with value `"true"`. + * - An annotation `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.annotation.mycompany.io/arch` attribute with value `"x64"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_ANNOTATION: (key: string) => string; +/** + * Specifies the hostname of the Pod. + * + * @example collector-gateway + * + * @note The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. + * Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) + * for more information about this field. + * + * This attribute aligns with the `hostname` field of the + * [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_HOSTNAME: "k8s.pod.hostname"; +/** + * IP address allocated to the Pod. + * + * @example 172.18.0.2 + * + * @note This attribute aligns with the `podIP` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_IP: "k8s.pod.ip"; +/** + * The label placed on the Pod, the `` being the label name, the value being the label value. + * + * @example my-app + * @example x64 + * @example + * + * @note Examples: + * + * - A label `app` with value `my-app` **SHOULD** be recorded as + * the `k8s.pod.label.app` attribute with value `"my-app"`. + * - A label `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.label.mycompany.io/arch` attribute with value `"x64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_LABEL: (key: string) => string; +/** + * Deprecated, use `k8s.pod.label` instead. + * + * @example my-app + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.pod.label`. + */ +export declare const ATTR_K8S_POD_LABELS: (key: string) => string; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_NAME: "k8s.pod.name"; +/** + * The start timestamp of the Pod. + * + * @example 2025-12-04T08:41:03Z + * + * @note Date and time at which the object was acknowledged by the Kubelet. + * This is before the Kubelet pulled the container image(s) for the pod. + * + * This attribute aligns with the `startTime` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), + * in ISO 8601 (RFC 3339 compatible) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_START_TIME: "k8s.pod.start_time"; +/** + * The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Pending + * @example Running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_STATUS_PHASE: "k8s.pod.status.phase"; +/** + * Enum value "Failed" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_FAILED: "Failed"; +/** + * Enum value "Pending" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_PENDING: "Pending"; +/** + * Enum value "Running" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_RUNNING: "Running"; +/** + * Enum value "Succeeded" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_SUCCEEDED: "Succeeded"; +/** + * Enum value "Unknown" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_UNKNOWN: "Unknown"; +/** + * The reason for the pod state. Corresponds to the `reason` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Evicted + * @example NodeAffinity + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_STATUS_REASON: "k8s.pod.status.reason"; +/** + * Enum value "Evicted" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is evicted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_EVICTED: "Evicted"; +/** + * Enum value "NodeAffinity" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is in a status because of its node affinity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_NODE_AFFINITY: "NodeAffinity"; +/** + * Enum value "NodeLost" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The reason on a pod when its state cannot be confirmed as kubelet is unresponsive on the node it is (was) running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_NODE_LOST: "NodeLost"; +/** + * Enum value "Shutdown" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The node is shutdown + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_SHUTDOWN: "Shutdown"; +/** + * Enum value "UnexpectedAdmissionError" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod was rejected admission to the node because of an error during admission that could not be categorized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_UNEXPECTED_ADMISSION_ERROR: "UnexpectedAdmissionError"; +/** + * The UID of the Pod. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_UID: "k8s.pod.uid"; +/** + * The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.replicaset.annotation.replicas` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_ANNOTATION: (key: string) => string; +/** + * The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.replicaset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_LABEL: (key: string) => string; +/** + * The name of the ReplicaSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_NAME: "k8s.replicaset.name"; +/** + * The UID of the ReplicaSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_UID: "k8s.replicaset.uid"; +/** + * The name of the replication controller. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICATIONCONTROLLER_NAME: "k8s.replicationcontroller.name"; +/** + * The UID of the replication controller. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICATIONCONTROLLER_UID: "k8s.replicationcontroller.uid"; +/** + * The name of the resource quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_RESOURCEQUOTA_NAME: "k8s.resourcequota.name"; +/** + * The name of the K8s resource a resource quota defines. + * + * @example count/replicationcontrollers + * + * @note The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_RESOURCEQUOTA_RESOURCE_NAME: "k8s.resourcequota.resource_name"; +/** + * The UID of the resource quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_RESOURCEQUOTA_UID: "k8s.resourcequota.uid"; +/** + * The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.statefulset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_ANNOTATION: (key: string) => string; +/** + * The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.statefulset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_LABEL: (key: string) => string; +/** + * The name of the StatefulSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_NAME: "k8s.statefulset.name"; +/** + * The UID of the StatefulSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_UID: "k8s.statefulset.uid"; +/** + * The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object. + * + * @example gold.storageclass.storage.k8s.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STORAGECLASS_NAME: "k8s.storageclass.name"; +/** + * The name of the K8s volume. + * + * @example volume0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_VOLUME_NAME: "k8s.volume.name"; +/** + * The type of the K8s volume. + * + * @example emptyDir + * @example persistentVolumeClaim + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_VOLUME_TYPE: "k8s.volume.type"; +/** + * Enum value "configMap" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [configMap](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_CONFIG_MAP: "configMap"; +/** + * Enum value "downwardAPI" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [downwardAPI](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_DOWNWARD_API: "downwardAPI"; +/** + * Enum value "emptyDir" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * An [emptyDir](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_EMPTY_DIR: "emptyDir"; +/** + * Enum value "local" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [local](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_LOCAL: "local"; +/** + * Enum value "persistentVolumeClaim" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [persistentVolumeClaim](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM: "persistentVolumeClaim"; +/** + * Enum value "secret" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [secret](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_SECRET: "secret"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.state`. + */ +export declare const ATTR_LINUX_MEMORY_SLAB_STATE: "linux.memory.slab.state"; +/** + * Enum value "reclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE: "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE: "unreclaimable"; +/** + * The basename of the file. + * + * @example audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_NAME: "log.file.name"; +/** + * The basename of the file, with symlinks resolved. + * + * @example uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_NAME_RESOLVED: "log.file.name_resolved"; +/** + * The full path to the file. + * + * @example /var/log/mysql/audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_PATH: "log.file.path"; +/** + * The full path to the file, with symlinks resolved. + * + * @example /var/lib/docker/uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_PATH_RESOLVED: "log.file.path_resolved"; +/** + * The stream associated with the log. See below for a list of well-known values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_IOSTREAM: "log.iostream"; +/** + * Enum value "stderr" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Events from stderr stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LOG_IOSTREAM_VALUE_STDERR: "stderr"; +/** + * Enum value "stdout" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Logs from stdout stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LOG_IOSTREAM_VALUE_STDOUT: "stdout"; +/** + * The complete original Log Record. + * + * @example 77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - Something happened + * @example [INFO] 8/3/24 12:34:56 Something happened + * + * @note This value **MAY** be added when processing a Log Record which was originally transmitted as a string or equivalent data type AND the Body field of the Log Record does not contain the same value. (e.g. a syslog or a log record read from a file.) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_RECORD_ORIGINAL: "log.record.original"; +/** + * A unique identifier for the Log Record. + * + * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV + * + * @note If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records **MUST** have different values. + * The id **MAY** be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_RECORD_UID: "log.record.uid"; +/** + * Name of the logical partition that hosts a systems with a mainframe operating system. + * + * @example LPAR01 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MAINFRAME_LPAR_NAME: "mainframe.lpar.name"; +/** + * The name of the request or notification method. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_METHOD_NAME: "mcp.method.name"; +/** + * Enum value "completion/complete" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to complete a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE: "completion/complete"; +/** + * Enum value "elicitation/create" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request from the server to elicit additional information from the user via the client + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_ELICITATION_CREATE: "elicitation/create"; +/** + * Enum value "initialize" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to initialize the MCP client. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_INITIALIZE: "initialize"; +/** + * Enum value "logging/setLevel" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to set the logging level. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL: "logging/setLevel"; +/** + * Enum value "notifications/cancelled" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification cancelling a previously-issued request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED: "notifications/cancelled"; +/** + * Enum value "notifications/initialized" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the MCP client has been initialized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED: "notifications/initialized"; +/** + * Enum value "notifications/message" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a message has been received. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE: "notifications/message"; +/** + * Enum value "notifications/progress" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating the progress for a long-running operation. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS: "notifications/progress"; +/** + * Enum value "notifications/prompts/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of prompts has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED: "notifications/prompts/list_changed"; +/** + * Enum value "notifications/resources/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of resources has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED: "notifications/resources/list_changed"; +/** + * Enum value "notifications/resources/updated" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a resource has been updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED: "notifications/resources/updated"; +/** + * Enum value "notifications/roots/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of roots has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED: "notifications/roots/list_changed"; +/** + * Enum value "notifications/tools/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of tools has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED: "notifications/tools/list_changed"; +/** + * Enum value "ping" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to check that the other party is still alive. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_PING: "ping"; +/** + * Enum value "prompts/get" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to get a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_PROMPTS_GET: "prompts/get"; +/** + * Enum value "prompts/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list prompts available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_PROMPTS_LIST: "prompts/list"; +/** + * Enum value "resources/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resources available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_LIST: "resources/list"; +/** + * Enum value "resources/read" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to read a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_READ: "resources/read"; +/** + * Enum value "resources/subscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to subscribe to a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE: "resources/subscribe"; +/** + * Enum value "resources/templates/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resource templates available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST: "resources/templates/list"; +/** + * Enum value "resources/unsubscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to unsubscribe from resource updates. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE: "resources/unsubscribe"; +/** + * Enum value "roots/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list roots available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_ROOTS_LIST: "roots/list"; +/** + * Enum value "sampling/createMessage" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to create a sampling message. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE: "sampling/createMessage"; +/** + * Enum value "tools/call" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to call a tool. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_TOOLS_CALL: "tools/call"; +/** + * Enum value "tools/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list tools available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_TOOLS_LIST: "tools/list"; +/** + * The [version](https://modelcontextprotocol.io/specification/versioning) of the Model Context Protocol used. + * + * @example 2025-06-18 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_PROTOCOL_VERSION: "mcp.protocol.version"; +/** + * The value of the resource uri. + * + * @example postgres://database/customers/schema + * @example file:///home/user/documents/report.pdf + * + * @note This is a URI of the resource provided in the following requests or notifications: `resources/read`, `resources/subscribe`, `resources/unsubscribe`, or `notifications/resources/updated`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_RESOURCE_URI: "mcp.resource.uri"; +/** + * Identifies [MCP session](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management). + * + * @example 191c4850af6c49e08843a3f6c80e5046 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_SESSION_ID: "mcp.session.id"; +/** + * Deprecated, use `rpc.message.compressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.compressed_size`. + */ +export declare const ATTR_MESSAGE_COMPRESSED_SIZE: "message.compressed_size"; +/** + * Deprecated, use `rpc.message.id` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.id`. + */ +export declare const ATTR_MESSAGE_ID: "message.id"; +/** + * Deprecated, use `rpc.message.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.type`. + */ +export declare const ATTR_MESSAGE_TYPE: "message.type"; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGE_TYPE_VALUE_RECEIVED: "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGE_TYPE_VALUE_SENT: "SENT"; +/** + * Deprecated, use `rpc.message.uncompressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.uncompressed_size`. + */ +export declare const ATTR_MESSAGE_UNCOMPRESSED_SIZE: "message.uncompressed_size"; +/** + * The number of messages sent, received, or processed in the scope of the batching operation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_BATCH_MESSAGE_COUNT: "messaging.batch.message_count"; +/** + * A unique identifier for the client that consumes or produces a message. + * + * @example client-5 + * @example myhost@8742@s8083jm + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_CLIENT_ID: "messaging.client.id"; +/** + * The name of the consumer group with which a consumer is associated. + * + * @example my-group + * @example indexer + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.consumer.group.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_CONSUMER_GROUP_NAME: "messaging.consumer.group.name"; +/** + * A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_ANONYMOUS: "messaging.destination.anonymous"; +/** + * The message destination name + * + * @example MyQueue + * @example MyTopic + * + * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If + * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_NAME: "messaging.destination.name"; +/** + * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`. + * + * @example "1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_PARTITION_ID: "messaging.destination.partition.id"; +/** + * The name of the destination subscription from which a message is consumed. + * + * @example subscription-a + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.destination.subscription.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME: "messaging.destination.subscription.name"; +/** + * Low cardinality representation of the messaging destination name + * + * @example /customers/{customerId} + * + * @note Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_TEMPLATE: "messaging.destination.template"; +/** + * A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_TEMPORARY: "messaging.destination.temporary"; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export declare const ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS: "messaging.destination_publish.anonymous"; +/** + * Deprecated, no replacement at this time. + * + * @example MyQueue + * @example MyTopic + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export declare const ATTR_MESSAGING_DESTINATION_PUBLISH_NAME: "messaging.destination_publish.name"; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "$Default" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +export declare const ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP: "messaging.eventhubs.consumer.group"; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME: "messaging.eventhubs.message.enqueued_time"; +/** + * The ack deadline in seconds set for the modify ack deadline request. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE: "messaging.gcp_pubsub.message.ack_deadline"; +/** + * The ack id for a given message. + * + * @example "ack_id" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID: "messaging.gcp_pubsub.message.ack_id"; +/** + * The delivery attempt for a given message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT: "messaging.gcp_pubsub.message.delivery_attempt"; +/** + * The ordering key for a given message. If the attribute is not present, the message does not have an ordering key. + * + * @example "ordering_key" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY: "messaging.gcp_pubsub.message.ordering_key"; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "my-group" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +export declare const ATTR_MESSAGING_KAFKA_CONSUMER_GROUP: "messaging.kafka.consumer.group"; +/** + * Deprecated, use `messaging.destination.partition.id` instead. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Record string representation of the partition id in `messaging.destination.partition.id` attribute. + */ +export declare const ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION: "messaging.kafka.destination.partition"; +/** + * 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. + * + * @example "myKey" + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_KEY: "messaging.kafka.message.key"; +/** + * Deprecated, use `messaging.kafka.offset` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.kafka.offset`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET: "messaging.kafka.message.offset"; +/** + * A boolean that is true if the message is a tombstone. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE: "messaging.kafka.message.tombstone"; +/** + * The offset of a record in the corresponding Kafka partition. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_OFFSET: "messaging.kafka.offset"; +/** + * The size of the message body in bytes. + * + * @example 1439 + * + * @note This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed + * body size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_BODY_SIZE: "messaging.message.body.size"; +/** + * The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @example "MyConversationId" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_CONVERSATION_ID: "messaging.message.conversation_id"; +/** + * The size of the message body and metadata in bytes. + * + * @example 2738 + * + * @note This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed + * size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE: "messaging.message.envelope.size"; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @example "452a7c7c7c7048c2f887f61572b18fc2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_ID: "messaging.message.id"; +/** + * Deprecated, use `messaging.operation.type` instead. + * + * @example publish + * @example create + * @example process + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.operation.type`. + */ +export declare const ATTR_MESSAGING_OPERATION: "messaging.operation"; +/** + * The system-specific name of the messaging operation. + * + * @example ack + * @example nack + * @example send + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_OPERATION_NAME: "messaging.operation.name"; +/** + * A string identifying the type of the messaging operation. + * + * @note If a custom value is used, it **MUST** be of low cardinality. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_OPERATION_TYPE: "messaging.operation.type"; +/** + * Enum value "create" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * A message is created. "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch sending scenarios. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_CREATE: "create"; +/** + * Enum value "deliver" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `process` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_DELIVER: "deliver"; +/** + * Enum value "process" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are processed by a consumer. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_PROCESS: "process"; +/** + * Enum value "publish" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `send` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `send`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_PUBLISH: "publish"; +/** + * Enum value "receive" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE: "receive"; +/** + * Enum value "send" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are provided for sending to an intermediary. If a single message is sent, the context of the "Send" span can be used as the creation context and no "Create" span needs to be created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_SEND: "send"; +/** + * Enum value "settle" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are settled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_SETTLE: "settle"; +/** + * RabbitMQ message routing key. + * + * @example "myKey" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY: "messaging.rabbitmq.destination.routing_key"; +/** + * RabbitMQ message delivery tag + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG: "messaging.rabbitmq.message.delivery_tag"; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "myConsumerGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name` on the consumer spans. No replacement for producer spans. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP: "messaging.rocketmq.client_group"; +/** + * Model of message consumption. This only applies to consumer spans. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL: "messaging.rocketmq.consumption_model"; +/** + * Enum value "broadcasting" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Broadcasting consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING: "broadcasting"; +/** + * Enum value "clustering" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Clustering consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING: "clustering"; +/** + * The delay time level for delay message, which determines the message delay time. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL: "messaging.rocketmq.message.delay_time_level"; +/** + * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + * + * @example 1665987217045 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP: "messaging.rocketmq.message.delivery_timestamp"; +/** + * It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group. + * + * @example "myMessageGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP: "messaging.rocketmq.message.group"; +/** + * Key(s) of message, another way to mark message besides message id. + * + * @example ["keyA", "keyB"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS: "messaging.rocketmq.message.keys"; +/** + * The secondary classifier of message besides topic. + * + * @example "tagA" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG: "messaging.rocketmq.message.tag"; +/** + * Type of message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE: "messaging.rocketmq.message.type"; +/** + * Enum value "delay" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Delay message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY: "delay"; +/** + * Enum value "fifo" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * FIFO message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO: "fifo"; +/** + * Enum value "normal" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Normal message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL: "normal"; +/** + * Enum value "transaction" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Transaction message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION: "transaction"; +/** + * Namespace of RocketMQ resources, resources in different namespaces are individual. + * + * @example "myNamespace" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_NAMESPACE: "messaging.rocketmq.namespace"; +/** + * Deprecated, use `messaging.destination.subscription.name` instead. + * + * @example "subscription-a" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.destination.subscription.name`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME: "messaging.servicebus.destination.subscription_name"; +/** + * Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS: "messaging.servicebus.disposition_status"; +/** + * Enum value "abandon" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is abandoned + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON: "abandon"; +/** + * Enum value "complete" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is completed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE: "complete"; +/** + * Enum value "dead_letter" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is sent to dead letter queue + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER: "dead_letter"; +/** + * Enum value "defer" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is deferred + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER: "defer"; +/** + * Number of deliveries that have been attempted for this message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT: "messaging.servicebus.message.delivery_count"; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME: "messaging.servicebus.message.enqueued_time"; +/** + * The messaging system as identified by the client instrumentation. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SYSTEM: "messaging.system"; +/** + * Enum value "activemq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache ActiveMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_ACTIVEMQ: "activemq"; +/** + * Enum value "aws.sns" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Notification Service (SNS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_AWS_SNS: "aws.sns"; +/** + * Enum value "aws_sqs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Queue Service (SQS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_AWS_SQS: "aws_sqs"; +/** + * Enum value "eventgrid" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Grid + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_EVENTGRID: "eventgrid"; +/** + * Enum value "eventhubs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Hubs + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_EVENTHUBS: "eventhubs"; +/** + * Enum value "gcp_pubsub" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Google Cloud Pub/Sub + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_GCP_PUBSUB: "gcp_pubsub"; +/** + * Enum value "jms" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Java Message Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_JMS: "jms"; +/** + * Enum value "kafka" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Kafka + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_KAFKA: "kafka"; +/** + * Enum value "pulsar" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Pulsar + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_PULSAR: "pulsar"; +/** + * Enum value "rabbitmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * RabbitMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_RABBITMQ: "rabbitmq"; +/** + * Enum value "rocketmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache RocketMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_ROCKETMQ: "rocketmq"; +/** + * Enum value "servicebus" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Service Bus + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_SERVICEBUS: "servicebus"; +/** + * Deprecated, use `network.local.address`. + * + * @example "192.168.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export declare const ATTR_NET_HOST_IP: "net.host.ip"; +/** + * Deprecated, use `server.address`. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_NET_HOST_NAME: "net.host.name"; +/** + * Deprecated, use `server.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port`. + */ +export declare const ATTR_NET_HOST_PORT: "net.host.port"; +/** + * Deprecated, use `network.peer.address`. + * + * @example "127.0.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export declare const ATTR_NET_PEER_IP: "net.peer.ip"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Deprecated, use `network.protocol.name`. + * + * @example amqp + * @example http + * @example mqtt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.name`. + */ +export declare const ATTR_NET_PROTOCOL_NAME: "net.protocol.name"; +/** + * Deprecated, use `network.protocol.version`. + * + * @example "3.1.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.version`. + */ +export declare const ATTR_NET_PROTOCOL_VERSION: "net.protocol.version"; +/** + * Deprecated, use `network.transport` and `network.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `network.transport` and `network.type`. + */ +export declare const ATTR_NET_SOCK_FAMILY: "net.sock.family"; +/** + * Enum value "inet" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv4 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_SOCK_FAMILY_VALUE_INET: "inet"; +/** + * Enum value "inet6" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv6 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_SOCK_FAMILY_VALUE_INET6: "inet6"; +/** + * Enum value "unix" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * Unix domain socket path + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_SOCK_FAMILY_VALUE_UNIX: "unix"; +/** + * Deprecated, use `network.local.address`. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export declare const ATTR_NET_SOCK_HOST_ADDR: "net.sock.host.addr"; +/** + * Deprecated, use `network.local.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.port`. + */ +export declare const ATTR_NET_SOCK_HOST_PORT: "net.sock.host.port"; +/** + * Deprecated, use `network.peer.address`. + * + * @example 192.168.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export declare const ATTR_NET_SOCK_PEER_ADDR: "net.sock.peer.addr"; +/** + * Deprecated, no replacement at this time. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export declare const ATTR_NET_SOCK_PEER_NAME: "net.sock.peer.name"; +/** + * Deprecated, use `network.peer.port`. + * + * @example 65531 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.port`. + */ +export declare const ATTR_NET_SOCK_PEER_PORT: "net.sock.peer.port"; +/** + * Deprecated, use `network.transport`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.transport`. + */ +export declare const ATTR_NET_TRANSPORT: "net.transport"; +/** + * Enum value "inproc" for attribute {@link ATTR_NET_TRANSPORT}. + * + * In-process communication. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_INPROC: "inproc"; +/** + * Enum value "ip_tcp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_IP_TCP: "ip_tcp"; +/** + * Enum value "ip_udp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_IP_UDP: "ip_udp"; +/** + * Enum value "other" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Something else (non IP-based). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_OTHER: "other"; +/** + * Enum value "pipe" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Named or anonymous pipe. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_PIPE: "pipe"; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @example "DE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_ICC: "network.carrier.icc"; +/** + * The mobile carrier country code. + * + * @example "310" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_MCC: "network.carrier.mcc"; +/** + * The mobile carrier network code. + * + * @example "001" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_MNC: "network.carrier.mnc"; +/** + * The name of the mobile carrier. + * + * @example "sprint" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_NAME: "network.carrier.name"; +/** + * The state of network connection + * + * @example close_wait + * + * @note Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2) + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CONNECTION_STATE: "network.connection.state"; +/** + * Enum value "close_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_CLOSE_WAIT: "close_wait"; +/** + * Enum value "closed" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_CLOSED: "closed"; +/** + * Enum value "closing" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_CLOSING: "closing"; +/** + * Enum value "established" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_ESTABLISHED: "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_1: "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_2: "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_LAST_ACK: "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_LISTEN: "listen"; +/** + * Enum value "syn_received" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_SYN_RECEIVED: "syn_received"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_SYN_SENT: "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_TIME_WAIT: "time_wait"; +/** + * 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. + * + * @example "LTE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CONNECTION_SUBTYPE: "network.connection.subtype"; +/** + * Enum value "cdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA: "cdma"; +/** + * Enum value "cdma2000_1xrtt" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA2000 1XRTT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT: "cdma2000_1xrtt"; +/** + * Enum value "edge" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EDGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE: "edge"; +/** + * Enum value "ehrpd" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EHRPD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD: "ehrpd"; +/** + * Enum value "evdo_0" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rel. 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0: "evdo_0"; +/** + * Enum value "evdo_a" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. A + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A: "evdo_a"; +/** + * Enum value "evdo_b" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. B + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B: "evdo_b"; +/** + * Enum value "gprs" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GPRS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS: "gprs"; +/** + * Enum value "gsm" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GSM + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_GSM: "gsm"; +/** + * Enum value "hsdpa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSDPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA: "hsdpa"; +/** + * Enum value "hspa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA: "hspa"; +/** + * Enum value "hspap" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPAP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP: "hspap"; +/** + * Enum value "hsupa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSUPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA: "hsupa"; +/** + * Enum value "iden" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IDEN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN: "iden"; +/** + * Enum value "iwlan" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IWLAN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN: "iwlan"; +/** + * Enum value "lte" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE: "lte"; +/** + * Enum value "lte_ca" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE CA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA: "lte_ca"; +/** + * Enum value "nr" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NR (New Radio) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_NR: "nr"; +/** + * Enum value "nrnsa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NRNSA (New Radio Non-Standalone) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA: "nrnsa"; +/** + * Enum value "td_scdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * TD-SCDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA: "td_scdma"; +/** + * Enum value "umts" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * UMTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS: "umts"; +/** + * The internet connection type. + * + * @example "wifi" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CONNECTION_TYPE: "network.connection.type"; +/** + * Enum value "cell" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_CELL: "cell"; +/** + * Enum value "unavailable" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE: "unavailable"; +/** + * Enum value "unknown" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN: "unknown"; +/** + * Enum value "wifi" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_WIFI: "wifi"; +/** + * Enum value "wired" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_WIRED: "wired"; +/** + * The network interface name. + * + * @example lo + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_INTERFACE_NAME: "network.interface.name"; +/** + * The network IO operation direction. + * + * @example transmit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_IO_DIRECTION: "network.io.direction"; +/** + * Enum value "receive" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_IO_DIRECTION_VALUE_RECEIVE: "receive"; +/** + * Enum value "transmit" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_IO_DIRECTION_VALUE_TRANSMIT: "transmit"; +/** + * NFSv4+ operation name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NFS_OPERATION_NAME: "nfs.operation.name"; +/** + * Linux: one of "hit" (NFSD_STATS_RC_HITS), "miss" (NFSD_STATS_RC_MISSES), or "nocache" (NFSD_STATS_RC_NOCACHE -- uncacheable) + * + * @example "hit" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NFS_SERVER_REPCACHE_STATUS: "nfs.server.repcache.status"; +/** + * The state of event loop time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NODEJS_EVENTLOOP_STATE: "nodejs.eventloop.state"; +/** + * Enum value "active" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Active time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "idle" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Idle time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NODEJS_EVENTLOOP_STATE_VALUE_IDLE: "idle"; +/** + * The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known. + * + * @example sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4 + * + * @note Follows [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), and specifically the [Digest property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests). + * An example can be found in [Example Image Manifest](https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OCI_MANIFEST_DIGEST: "oci.manifest.digest"; +/** + * ONC/Sun RPC procedure name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_PROCEDURE_NAME: "onc_rpc.procedure.name"; +/** + * ONC/Sun RPC procedure number. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_PROCEDURE_NUMBER: "onc_rpc.procedure.number"; +/** + * ONC/Sun RPC program name. + * + * @example portmapper + * @example nfs + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_PROGRAM_NAME: "onc_rpc.program.name"; +/** + * ONC/Sun RPC program version. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_VERSION: "onc_rpc.version"; +/** + * The service tier requested. May be a specific tier, default, or auto. + * + * @example auto + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENAI_REQUEST_SERVICE_TIER: "openai.request.service_tier"; +/** + * Enum value "auto" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO: "auto"; +/** + * Enum value "default" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT: "default"; +/** + * The service tier used for the response. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENAI_RESPONSE_SERVICE_TIER: "openai.response.service_tier"; +/** + * A fingerprint to track any eventual change in the Generative AI environment. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENAI_RESPONSE_SYSTEM_FINGERPRINT: "openai.response.system_fingerprint"; +/** + * The name of the cluster quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENSHIFT_CLUSTERQUOTA_NAME: "openshift.clusterquota.name"; +/** + * The UID of the cluster quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENSHIFT_CLUSTERQUOTA_UID: "openshift.clusterquota.uid"; +/** + * Parent-child Reference type + * + * @note The causal relationship between a child Span and a parent Span. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENTRACING_REF_TYPE: "opentracing.ref_type"; +/** + * Enum value "child_of" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span depends on the child Span in some capacity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENTRACING_REF_TYPE_VALUE_CHILD_OF: "child_of"; +/** + * Enum value "follows_from" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span doesn't depend in any way on the result of the child Span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM: "follows_from"; +/** + * Unique identifier for a particular build or compilation of the operating system. + * + * @example TQ3C.230805.001.B2 + * @example 20E247 + * @example 22621 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_BUILD_ID: "os.build_id"; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @example Microsoft Windows [Version 10.0.18363.778] + * @example Ubuntu 18.04.1 LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_DESCRIPTION: "os.description"; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_NAME: "os.name"; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_TYPE: "os.type"; +/** + * Enum value "aix" for attribute {@link ATTR_OS_TYPE}. + * + * AIX (Advanced Interactive eXecutive) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_AIX: "aix"; +/** + * Enum value "darwin" for attribute {@link ATTR_OS_TYPE}. + * + * Apple Darwin + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_DARWIN: "darwin"; +/** + * Enum value "dragonflybsd" for attribute {@link ATTR_OS_TYPE}. + * + * DragonFly BSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_DRAGONFLYBSD: "dragonflybsd"; +/** + * Enum value "freebsd" for attribute {@link ATTR_OS_TYPE}. + * + * FreeBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_FREEBSD: "freebsd"; +/** + * Enum value "hpux" for attribute {@link ATTR_OS_TYPE}. + * + * HP-UX (Hewlett Packard Unix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_HPUX: "hpux"; +/** + * Enum value "linux" for attribute {@link ATTR_OS_TYPE}. + * + * Linux + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_LINUX: "linux"; +/** + * Enum value "netbsd" for attribute {@link ATTR_OS_TYPE}. + * + * NetBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_NETBSD: "netbsd"; +/** + * Enum value "openbsd" for attribute {@link ATTR_OS_TYPE}. + * + * OpenBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_OPENBSD: "openbsd"; +/** + * Enum value "solaris" for attribute {@link ATTR_OS_TYPE}. + * + * SunOS, Oracle Solaris + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_SOLARIS: "solaris"; +/** + * Enum value "windows" for attribute {@link ATTR_OS_TYPE}. + * + * Microsoft Windows + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_WINDOWS: "windows"; +/** + * Enum value "z_os" for attribute {@link ATTR_OS_TYPE}. + * + * Deprecated. Use `zos` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `zos`. + */ +export declare const OS_TYPE_VALUE_Z_OS: "z_os"; +/** + * Enum value "zos" for attribute {@link ATTR_OS_TYPE}. + * + * IBM z/OS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_ZOS: "zos"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_VERSION: "os.version"; +/** + * A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. + * + * @example otlp_grpc_span_exporter/0 + * @example custom-name + * + * @note Implementations **SHOULD** ensure a low cardinality for this attribute, even across application or SDK restarts. + * E.g. implementations **MUST NOT** use UUIDs as values for this attribute. + * + * Implementations **MAY** achieve these goals by following a `/` pattern, e.g. `batching_span_processor/0`. + * Hereby `otel.component.type` refers to the corresponding attribute value of the component. + * + * The value of `instance-counter` **MAY** be automatically assigned by the component and uniqueness within the enclosing SDK instance **MUST** be guaranteed. + * For example, `` **MAY** be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an + * instance of the given component type is started. + * + * With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0` + * as `otel.component.name`, the second one `batching_span_processor/1` and so on. + * These values will therefore be reused in the case of an application restart. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_COMPONENT_NAME: "otel.component.name"; +/** + * A name identifying the type of the OpenTelemetry component. + * + * @example batching_span_processor + * @example com.example.MySpanExporter + * + * @note If none of the standardized values apply, implementations **SHOULD** use the language-defined name of the type. + * E.g. for Java the fully qualified classname **SHOULD** be used in this case. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_COMPONENT_TYPE: "otel.component.type"; +/** + * Enum value "batching_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR: "batching_log_processor"; +/** + * Enum value "batching_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR: "batching_span_processor"; +/** + * Enum value "otlp_grpc_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_LOG_EXPORTER: "otlp_grpc_log_exporter"; +/** + * Enum value "otlp_grpc_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_METRIC_EXPORTER: "otlp_grpc_metric_exporter"; +/** + * Enum value "otlp_grpc_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER: "otlp_grpc_span_exporter"; +/** + * Enum value "otlp_http_json_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_LOG_EXPORTER: "otlp_http_json_log_exporter"; +/** + * Enum value "otlp_http_json_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_METRIC_EXPORTER: "otlp_http_json_metric_exporter"; +/** + * Enum value "otlp_http_json_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER: "otlp_http_json_span_exporter"; +/** + * Enum value "otlp_http_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER: "otlp_http_log_exporter"; +/** + * Enum value "otlp_http_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_METRIC_EXPORTER: "otlp_http_metric_exporter"; +/** + * Enum value "otlp_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER: "otlp_http_span_exporter"; +/** + * Enum value "periodic_metric_reader" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK periodically exporting metric reader + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_PERIODIC_METRIC_READER: "periodic_metric_reader"; +/** + * Enum value "prometheus_http_text_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Prometheus metric exporter over HTTP with the default text-based format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_PROMETHEUS_HTTP_TEXT_METRIC_EXPORTER: "prometheus_http_text_metric_exporter"; +/** + * Enum value "simple_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR: "simple_log_processor"; +/** + * Enum value "simple_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR: "simple_span_processor"; +/** + * Enum value "zipkin_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Zipkin span exporter over HTTP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_ZIPKIN_HTTP_SPAN_EXPORTER: "zipkin_http_span_exporter"; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @note This attribute **SHOULD** be used by non-OTLP exporters when destination does not support `EventName` or equivalent field. This attribute **MAY** be used by applications using existing logging libraries so that it can be used to set the `EventName` field by Collector or SDK components. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_EVENT_NAME: "otel.event.name"; +/** + * Deprecated. Use the `otel.scope.name` attribute + * + * @example io.opentelemetry.contrib.mongodb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.name`. + */ +export declare const ATTR_OTEL_LIBRARY_NAME: "otel.library.name"; +/** + * Deprecated. Use the `otel.scope.version` attribute. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.version`. + */ +export declare const ATTR_OTEL_LIBRARY_VERSION: "otel.library.version"; +/** + * The schema URL of the instrumentation scope. + * + * @example https://opentelemetry.io/schemas/1.31.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_SCOPE_SCHEMA_URL: "otel.scope.schema_url"; +/** + * 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) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_SPAN_PARENT_ORIGIN: "otel.span.parent.origin"; +/** + * Enum value "local" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is false + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_PARENT_ORIGIN_VALUE_LOCAL: "local"; +/** + * Enum value "none" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span does not have a parent, it is a root span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_PARENT_ORIGIN_VALUE_NONE: "none"; +/** + * Enum value "remote" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is true + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_PARENT_ORIGIN_VALUE_REMOTE: "remote"; +/** + * The result value of the sampler for this span + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_SPAN_SAMPLING_RESULT: "otel.span.sampling_result"; +/** + * Enum value "DROP" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled and not recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP: "DROP"; +/** + * Enum value "RECORD_AND_SAMPLE" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is sampled and recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE: "RECORD_AND_SAMPLE"; +/** + * Enum value "RECORD_ONLY" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled, but recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY: "RECORD_ONLY"; +/** + * The [`service.name`](/docs/resource/README.md#service) of the remote service. **SHOULD** be equal to the actual `service.name` resource attribute of the remote service if any. + * + * @example "AuthTokenCache" + * + * @note Examples of `peer.service` that users may specify: + * + * - A Redis cache of auth tokens as `peer.service="AuthTokenCache"`. + * - A gRPC service `rpc.service="io.opentelemetry.AuthService"` may be hosted in both a gateway, `peer.service="ExternalApiService"` and a backend, `peer.service="AuthService"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `service.peer.name`. + */ +export declare const ATTR_PEER_SERVICE: "peer.service"; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +export declare const ATTR_POOL_NAME: "pool.name"; +/** + * Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_LOCATION_IS_FOLDED: "pprof.location.is_folded"; +/** + * Indicates that there are filenames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_FILENAMES: "pprof.mapping.has_filenames"; +/** + * Indicates that there are functions related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_FUNCTIONS: "pprof.mapping.has_functions"; +/** + * Indicates that there are inline frames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_INLINE_FRAMES: "pprof.mapping.has_inline_frames"; +/** + * Indicates that there are line numbers related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_LINE_NUMBERS: "pprof.mapping.has_line_numbers"; +/** + * Free-form text associated with the profile. This field should not be used to store any machine-readable information, it is only for human-friendly content. + * + * @example ["hello world", "bazinga"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_COMMENT: "pprof.profile.comment"; +/** + * Documentation link for this profile type. + * + * @example http://pprof.example.com/cpu-profile.html + * + * @note The URL must be absolute and may be missing if the profile was generated by code that did not supply a link + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_DOC_URL: "pprof.profile.doc_url"; +/** + * Frames with Function.function_name fully matching the regexp will be dropped from the samples, along with their successors. + * + * @example /foobar/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_DROP_FRAMES: "pprof.profile.drop_frames"; +/** + * Frames with Function.function_name fully matching the regexp will be kept, even if it matches drop_frames. + * + * @example /bazinga/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_KEEP_FRAMES: "pprof.profile.keep_frames"; +/** + * Length of the process.command_args array + * + * @example 4 + * + * @note This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_ARGS_COUNT: "process.args_count"; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND: "process.command"; +/** + * 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`. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND_ARGS: "process.command_args"; +/** + * 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. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example C:\\cmd\\otecol --config="my directory\\config.yaml" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND_LINE: "process.command_line"; +/** + * Specifies whether the context switches for this data point were voluntary or involuntary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_CONTEXT_SWITCH_TYPE: "process.context_switch.type"; +/** + * Enum value "involuntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY: "involuntary"; +/** + * Enum value "voluntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY: "voluntary"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export declare const ATTR_PROCESS_CPU_STATE: "process.cpu.state"; +/** + * Enum value "system" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CPU_STATE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CPU_STATE_VALUE_USER: "user"; +/** + * Enum value "wait" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CPU_STATE_VALUE_WAIT: "wait"; +/** + * The date and time the process was created, in ISO 8601 format. + * + * @example 2023-11-21T09:25:34.853Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_CREATION_TIME: "process.creation.time"; +/** + * Process environment variables, `` being the environment variable name, the value being the environment variable value. + * + * @example ubuntu + * @example /usr/local/bin:/usr/bin + * + * @note Examples: + * + * - an environment variable `USER` with value `"ubuntu"` **SHOULD** be recorded + * as the `process.environment_variable.USER` attribute with value `"ubuntu"`. + * - an environment variable `PATH` with value `"/usr/local/bin:/usr/bin"` + * **SHOULD** be recorded as the `process.environment_variable.PATH` attribute + * with value `"/usr/local/bin:/usr/bin"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_ENVIRONMENT_VARIABLE: (key: string) => string; +/** + * The GNU build ID as found in the `.note.gnu.build-id` ELF section (hex string). + * + * @example c89b11207f6479603b0d49bf291c092c2b719293 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU: "process.executable.build_id.gnu"; +/** + * The Go build ID as retrieved by `go tool buildid `. + * + * @example foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO: "process.executable.build_id.go"; +/** + * Profiling specific build ID for executables. See the OTel specification for Profiles for more information. + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH: "process.executable.build_id.htlhash"; +/** + * "Deprecated, use `process.executable.build_id.htlhash` instead." + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.executable.build_id.htlhash`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING: "process.executable.build_id.profiling"; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_NAME: "process.executable.name"; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_PATH: "process.executable.path"; +/** + * The exit code of the process. + * + * @example 127 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXIT_CODE: "process.exit.code"; +/** + * The date and time the process exited, in ISO 8601 format. + * + * @example 2023-11-21T09:26:12.315Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXIT_TIME: "process.exit.time"; +/** + * The PID of the process's group leader. This is also the process group ID (PGID) of the process. + * + * @example 23 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_GROUP_LEADER_PID: "process.group_leader.pid"; +/** + * Whether the process is connected to an interactive shell. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_INTERACTIVE: "process.interactive"; +/** + * The control group associated with the process. + * + * @example 1:name=systemd:/user.slice/user-1000.slice/session-3.scope + * @example 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope + * + * @note Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the [/proc/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_LINUX_CGROUP: "process.linux.cgroup"; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_OWNER: "process.owner"; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +export declare const ATTR_PROCESS_PAGING_FAULT_TYPE: "process.paging.fault_type"; +/** + * Enum value "major" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR: "minor"; +/** + * Parent Process identifier (PPID). + * + * @example 111 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_PARENT_PID: "process.parent_pid"; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_PID: "process.pid"; +/** + * The real user ID (RUID) of the process. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_REAL_USER_ID: "process.real_user.id"; +/** + * The username of the real user of the process. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_REAL_USER_NAME: "process.real_user.name"; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_DESCRIPTION: "process.runtime.description"; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_NAME: "process.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_VERSION: "process.runtime.version"; +/** + * The saved user ID (SUID) of the process. + * + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_SAVED_USER_ID: "process.saved_user.id"; +/** + * The username of the saved user. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_SAVED_USER_NAME: "process.saved_user.name"; +/** + * The PID of the process's session leader. This is also the session ID (SID) of the process. + * + * @example 14 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_SESSION_LEADER_PID: "process.session_leader.pid"; +/** + * The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES) + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_STATE: "process.state"; +/** + * Enum value "defunct" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_DEFUNCT: "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_RUNNING: "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_SLEEPING: "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_STOPPED: "stopped"; +/** + * Process title (proctitle) + * + * @example cat /etc/hostname + * @example xfce4-session + * @example bash + * + * @note In many Unix-like systems, process title (proctitle), is the string that represents the name or command line of a running process, displayed by system monitoring tools like ps, top, and htop. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_TITLE: "process.title"; +/** + * The effective user ID (EUID) of the process. + * + * @example 1001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_USER_ID: "process.user.id"; +/** + * The username of the effective user of the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_USER_NAME: "process.user.name"; +/** + * Virtual process identifier. + * + * @example 12 + * + * @note The process ID within a PID namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_VPID: "process.vpid"; +/** + * The working directory of the process. + * + * @example /root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_WORKING_DIRECTORY: "process.working_directory"; +/** + * Describes the interpreter or compiler of a single frame. + * + * @example cpython + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROFILE_FRAME_TYPE: "profile.frame.type"; +/** + * Enum value "beam" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Erlang](https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_BEAM: "beam"; +/** + * Enum value "cpython" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Python](https://wikipedia.org/wiki/Python_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_CPYTHON: "cpython"; +/** + * Enum value "dotnet" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [.NET](https://wikipedia.org/wiki/.NET) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_DOTNET: "dotnet"; +/** + * Enum value "go" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Go](https://wikipedia.org/wiki/Go_(programming_language)), + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_GO: "go"; +/** + * Enum value "jvm" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [JVM](https://wikipedia.org/wiki/Java_virtual_machine) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_JVM: "jvm"; +/** + * Enum value "kernel" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Kernel](https://wikipedia.org/wiki/Kernel_(operating_system)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_KERNEL: "kernel"; +/** + * Enum value "native" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * Can be one of but not limited to [C](https://wikipedia.org/wiki/C_(programming_language)), [C++](https://wikipedia.org/wiki/C%2B%2B), [Go](https://wikipedia.org/wiki/Go_(programming_language)) or [Rust](https://wikipedia.org/wiki/Rust_(programming_language)). If possible, a more precise value **MUST** be used. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_NATIVE: "native"; +/** + * Enum value "perl" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Perl](https://wikipedia.org/wiki/Perl) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_PERL: "perl"; +/** + * Enum value "php" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [PHP](https://wikipedia.org/wiki/PHP) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_PHP: "php"; +/** + * Enum value "ruby" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Ruby](https://wikipedia.org/wiki/Ruby_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_RUBY: "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Rust](https://wikipedia.org/wiki/Rust_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_RUST: "rust"; +/** + * Enum value "v8js" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [V8JS](https://wikipedia.org/wiki/V8_(JavaScript_engine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_V8JS: "v8js"; +/** + * Deprecated, use `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.status_code`. + */ +export declare const ATTR_RPC_CONNECT_RPC_ERROR_CODE: "rpc.connect_rpc.error_code"; +/** + * Enum value "aborted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED: "aborted"; +/** + * Enum value "already_exists" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS: "already_exists"; +/** + * Enum value "cancelled" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED: "cancelled"; +/** + * Enum value "data_loss" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS: "data_loss"; +/** + * Enum value "deadline_exceeded" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED: "deadline_exceeded"; +/** + * Enum value "failed_precondition" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION: "failed_precondition"; +/** + * Enum value "internal" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL: "internal"; +/** + * Enum value "invalid_argument" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT: "invalid_argument"; +/** + * Enum value "not_found" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND: "not_found"; +/** + * Enum value "out_of_range" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE: "out_of_range"; +/** + * Enum value "permission_denied" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED: "permission_denied"; +/** + * Enum value "resource_exhausted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED: "resource_exhausted"; +/** + * Enum value "unauthenticated" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED: "unauthenticated"; +/** + * Enum value "unavailable" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE: "unavailable"; +/** + * Enum value "unimplemented" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED: "unimplemented"; +/** + * Enum value "unknown" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN: "unknown"; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +export declare const ATTR_RPC_CONNECT_RPC_REQUEST_METADATA: (key: string) => string; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +export declare const ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA: (key: string) => string; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +export declare const ATTR_RPC_GRPC_REQUEST_METADATA: (key: string) => string; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +export declare const ATTR_RPC_GRPC_RESPONSE_METADATA: (key: string) => string; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the gRPC status code on the `rpc.response.status_code` attribute. + */ +export declare const ATTR_RPC_GRPC_STATUS_CODE: "rpc.grpc.status_code"; +/** + * Enum value 0 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_OK: 0; +/** + * Enum value 1 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * CANCELLED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_CANCELLED: 1; +/** + * Enum value 2 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNKNOWN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN: 2; +/** + * Enum value 3 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INVALID_ARGUMENT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT: 3; +/** + * Enum value 4 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DEADLINE_EXCEEDED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED: 4; +/** + * Enum value 5 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * NOT_FOUND + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND: 5; +/** + * Enum value 6 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ALREADY_EXISTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS: 6; +/** + * Enum value 7 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * PERMISSION_DENIED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED: 7; +/** + * Enum value 8 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * RESOURCE_EXHAUSTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED: 8; +/** + * Enum value 9 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * FAILED_PRECONDITION + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION: 9; +/** + * Enum value 10 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ABORTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_ABORTED: 10; +/** + * Enum value 11 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OUT_OF_RANGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE: 11; +/** + * Enum value 12 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNIMPLEMENTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED: 12; +/** + * Enum value 13 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INTERNAL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_INTERNAL: 13; +/** + * Enum value 14 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAVAILABLE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE: 14; +/** + * Enum value 15 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DATA_LOSS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS: 15; +/** + * Enum value 16 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAUTHENTICATED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED: 16; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @example -32700 + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the error code on the `rpc.response.status_code` attribute. + */ +export declare const ATTR_RPC_JSONRPC_ERROR_CODE: "rpc.jsonrpc.error_code"; +/** + * Deprecated, use span status description or `error.message` attribute on other signals. + * + * @example Parse error + * @example User already exists + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use the span status description or `error.message` attribute on other signals. + */ +export declare const ATTR_RPC_JSONRPC_ERROR_MESSAGE: "rpc.jsonrpc.error_message"; +/** + * Deprecated, use `jsonrpc.request.id` instead. + * + * @example 10 + * @example request-7 + * @example + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.request.id`. + */ +export declare const ATTR_RPC_JSONRPC_REQUEST_ID: "rpc.jsonrpc.request_id"; +/** + * Deprecated, use `jsonrpc.protocol.version` instead. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.protocol.version`. + */ +export declare const ATTR_RPC_JSONRPC_VERSION: "rpc.jsonrpc.version"; +/** + * Compressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_COMPRESSED_SIZE: "rpc.message.compressed_size"; +/** + * **MUST** be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * @note This way we guarantee that the values will be consistent between different implementations. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_ID: "rpc.message.id"; +/** + * Whether this is a received or sent message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_TYPE: "rpc.message.type"; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_MESSAGE_TYPE_VALUE_RECEIVED: "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_MESSAGE_TYPE_VALUE_SENT: "SENT"; +/** + * Uncompressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE: "rpc.message.uncompressed_size"; +/** + * The fully-qualified logical name of the method from the RPC interface perspective. + * + * @example com.example.ExampleService/exampleMethod + * @example EchoService/Echo + * @example _OTHER + * + * @note The method name **MAY** have unbounded cardinality in edge or error cases. + * + * Some RPC frameworks or libraries provide a fixed set of recognized methods + * for client stubs and server implementations. Instrumentations for such + * frameworks **MUST** set this attribute to the original method name only + * when the method is recognized by the framework or library. + * + * When the method is not recognized, for example, when the server receives + * a request for a method that is not predefined on the server, or when + * instrumentation is not able to reliably detect if the method is predefined, + * the attribute **MUST** be set to `_OTHER`. In such cases, tracing + * instrumentations **MUST** also set `rpc.method_original` attribute to + * the original method value. + * + * If the RPC instrumentation could end up converting valid RPC methods to + * `_OTHER`, then it **SHOULD** provide a way to configure the list of recognized + * RPC methods. + * + * The `rpc.method` can be different from the name of any implementing + * method/function. + * The `code.function.name` attribute may be used to record the fully-qualified + * method actually executing the call on the server side, or the + * RPC client stub method on the client side. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_METHOD: "rpc.method"; +/** + * The original name of the method used by the client. + * + * @example com.myservice.EchoService/catchAll + * @example com.myservice.EchoService/unknownMethod + * @example InvalidMethod + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_METHOD_ORIGINAL: "rpc.method_original"; +/** + * RPC request metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["1.2.3.4", "1.2.3.5"]` **SHOULD** be recorded as + * `rpc.request.metadata.my-custom-key` attribute with value `["1.2.3.4", "1.2.3.5"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_REQUEST_METADATA: (key: string) => string; +/** + * RPC response metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["attribute_value"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["attribute_value"]` **SHOULD** be recorded as + * the `rpc.response.metadata.my-custom-key` attribute with value `["attribute_value"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_RESPONSE_METADATA: (key: string) => string; +/** + * Status code of the RPC returned by the RPC server or generated by the client + * + * @example OK + * @example DEADLINE_EXCEEDED + * @example -32602 + * + * @note Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes. + * Semantic conventions for individual RPC frameworks **SHOULD** document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_RESPONSE_STATUS_CODE: "rpc.response.status_code"; +/** + * Deprecated, use fully-qualified `rpc.method` instead. + * + * @example "myservice.EchoService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `rpc.method` which is expected to be a fully-qualified name. + */ +export declare const ATTR_RPC_SERVICE: "rpc.service"; +/** + * Deprecated, use `rpc.system.name` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.system.name`. + */ +export declare const ATTR_RPC_SYSTEM: "rpc.system"; +/** + * Enum value "apache_dubbo" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Apache Dubbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_APACHE_DUBBO: "apache_dubbo"; +/** + * Enum value "connect_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Connect RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_CONNECT_RPC: "connect_rpc"; +/** + * Enum value "dotnet_wcf" for attribute {@link ATTR_RPC_SYSTEM}. + * + * .NET WCF + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_DOTNET_WCF: "dotnet_wcf"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * gRPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_GRPC: "grpc"; +/** + * Enum value "java_rmi" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Java RMI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_JAVA_RMI: "java_rmi"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * JSON-RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_JSONRPC: "jsonrpc"; +/** + * Enum value "onc_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * [ONC RPC (Sun RPC)](https://datatracker.ietf.org/doc/html/rfc5531) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_ONC_RPC: "onc_rpc"; +/** + * The Remote Procedure Call (RPC) system. + * + * @note The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_SYSTEM_NAME: "rpc.system.name"; +/** + * Enum value "connectrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Connect RPC](https://connectrpc.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_CONNECTRPC: "connectrpc"; +/** + * Enum value "dubbo" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Apache Dubbo](https://dubbo.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_DUBBO: "dubbo"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [gRPC](https://grpc.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_GRPC: "grpc"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [JSON-RPC](https://www.jsonrpc.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_JSONRPC: "jsonrpc"; +/** + * A categorization value keyword used by the entity using the rule for detection of this event + * + * @example Attempted Information Leak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_CATEGORY: "security_rule.category"; +/** + * The description of the rule generating the event. + * + * @example Block requests to public DNS over HTTPS / TLS protocols + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_DESCRIPTION: "security_rule.description"; +/** + * Name of the license under which the rule used to generate this event is made available. + * + * @example Apache 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_LICENSE: "security_rule.license"; +/** + * The name of the rule or signature generating the event. + * + * @example BLOCK_DNS_over_TLS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_NAME: "security_rule.name"; +/** + * Reference URL to additional information about the rule used to generate this event. + * + * @example https://en.wikipedia.org/wiki/DNS_over_TLS + * + * @note The URL can point to the vendor’s documentation about the rule. If that’s not available, it can also be a link to a more general page describing this type of alert. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_REFERENCE: "security_rule.reference"; +/** + * Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. + * + * @example Standard_Protocol_Filters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_RULESET_NAME: "security_rule.ruleset.name"; +/** + * A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. + * + * @example 550e8400-e29b-41d4-a716-446655440000 + * @example 1100110011 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_UUID: "security_rule.uuid"; +/** + * The version / revision of the rule being used for analysis. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_VERSION: "security_rule.version"; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_INSTANCE_ID: "service.instance.id"; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_NAMESPACE: "service.namespace"; +/** + * Logical name of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.name`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example shoppingcart + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_PEER_NAME: "service.peer.name"; +/** + * Logical namespace of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.namespace`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example Shop + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_PEER_NAMESPACE: "service.peer.namespace"; +/** + * A unique id to identify a session. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SESSION_ID: "session.id"; +/** + * The previous `session.id` for this user, when known. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SESSION_PREVIOUS_ID: "session.previous_id"; +/** + * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example source.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the destination side, and when communicating through an intermediary, `source.address` **SHOULD** represent the source address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SOURCE_ADDRESS: "source.address"; +/** + * Source port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SOURCE_PORT: "source.port"; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +export declare const ATTR_STATE: "state"; +/** + * Enum value "idle" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const STATE_VALUE_IDLE: "idle"; +/** + * Enum value "used" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const STATE_VALUE_USED: "used"; +/** + * Deprecated, use `cpu.logical_number` instead. + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.logical_number`. + */ +export declare const ATTR_SYSTEM_CPU_LOGICAL_NUMBER: "system.cpu.logical_number"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example idle + * @example interrupt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export declare const ATTR_SYSTEM_CPU_STATE: "system.cpu.state"; +/** + * Enum value "idle" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_IDLE: "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_INTERRUPT: "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_IOWAIT: "iowait"; +/** + * Enum value "nice" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_NICE: "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_STEAL: "steal"; +/** + * Enum value "system" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_USER: "user"; +/** + * The device identifier + * + * @example (identifier) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_DEVICE: "system.device"; +/** + * The filesystem mode + * + * @example rw, ro + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_MODE: "system.filesystem.mode"; +/** + * The filesystem mount path + * + * @example /mnt/data + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT: "system.filesystem.mountpoint"; +/** + * The filesystem state + * + * @example used + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_STATE: "system.filesystem.state"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_STATE_VALUE_FREE: "free"; +/** + * Enum value "reserved" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED: "reserved"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_STATE_VALUE_USED: "used"; +/** + * The filesystem type + * + * @example ext4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_TYPE: "system.filesystem.type"; +/** + * Enum value "exfat" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT: "exfat"; +/** + * Enum value "ext4" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4: "ext4"; +/** + * Enum value "fat32" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32: "fat32"; +/** + * Enum value "hfsplus" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS: "hfsplus"; +/** + * Enum value "ntfs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS: "ntfs"; +/** + * Enum value "refs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_REFS: "refs"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE: "system.memory.linux.slab.state"; +/** + * Enum value "reclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE: "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE: "unreclaimable"; +/** + * The memory state + * + * @example free + * @example cached + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_MEMORY_STATE: "system.memory.state"; +/** + * Enum value "buffers" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_BUFFERS: "buffers"; +/** + * Enum value "cached" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_CACHED: "cached"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_FREE: "free"; +/** + * Enum value "shared" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, report shared memory usage with `metric.system.memory.shared` metric + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_SHARED: "shared"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * Actual used virtual memory in bytes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `network.connection.state` instead. + * + * @example close_wait + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.connection.state`. + */ +export declare const ATTR_SYSTEM_NETWORK_STATE: "system.network.state"; +/** + * Enum value "close" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_CLOSE: "close"; +/** + * Enum value "close_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT: "close_wait"; +/** + * Enum value "closing" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_CLOSING: "closing"; +/** + * Enum value "delete" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_DELETE: "delete"; +/** + * Enum value "established" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED: "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1: "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2: "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_LAST_ACK: "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_LISTEN: "listen"; +/** + * Enum value "syn_recv" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_SYN_RECV: "syn_recv"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_SYN_SENT: "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT: "time_wait"; +/** + * The paging access direction + * + * @example in + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_PAGING_DIRECTION: "system.paging.direction"; +/** + * Enum value "in" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_DIRECTION_VALUE_IN: "in"; +/** + * Enum value "out" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_DIRECTION_VALUE_OUT: "out"; +/** + * The paging fault type + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_PAGING_FAULT_TYPE: "system.paging.fault.type"; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_FAULT_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_FAULT_TYPE_VALUE_MINOR: "minor"; +/** + * The memory paging state + * + * @example free + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_PAGING_STATE: "system.paging.state"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_STATE_VALUE_FREE: "free"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +export declare const ATTR_SYSTEM_PAGING_TYPE: "system.paging.type"; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_TYPE_VALUE_MINOR: "minor"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +export declare const ATTR_SYSTEM_PROCESS_STATUS: "system.process.status"; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT: "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_RUNNING: "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_SLEEPING: "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_STOPPED: "stopped"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +export declare const ATTR_SYSTEM_PROCESSES_STATUS: "system.processes.status"; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT: "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_RUNNING: "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING: "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_STOPPED: "stopped"; +/** + * The name of the auto instrumentation agent or distribution, if used. + * + * @example parts-unlimited-java + * + * @note Official auto instrumentation agents and distributions **SHOULD** set the `telemetry.distro.name` attribute to + * a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TELEMETRY_DISTRO_NAME: "telemetry.distro.name"; +/** + * The version string of the auto instrumentation agent or distribution, if used. + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TELEMETRY_DISTRO_VERSION: "telemetry.distro.version"; +/** + * The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case). + * + * @example org.example.TestCase1.test1 + * @example example/tests/TestCase1.test1 + * @example ExampleTestCase1_test1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_CASE_NAME: "test.case.name"; +/** + * The status of the actual test case result from test execution. + * + * @example pass + * @example fail + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_CASE_RESULT_STATUS: "test.case.result.status"; +/** + * Enum value "fail" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * fail + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_CASE_RESULT_STATUS_VALUE_FAIL: "fail"; +/** + * Enum value "pass" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * pass + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_CASE_RESULT_STATUS_VALUE_PASS: "pass"; +/** + * The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite). + * + * @example TestSuite1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_SUITE_NAME: "test.suite.name"; +/** + * The status of the test suite run. + * + * @example success + * @example failure + * @example skipped + * @example aborted + * @example timed_out + * @example in_progress + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_SUITE_RUN_STATUS: "test.suite.run.status"; +/** + * Enum value "aborted" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * aborted + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_ABORTED: "aborted"; +/** + * Enum value "failure" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_FAILURE: "failure"; +/** + * Enum value "in_progress" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * in_progress + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS: "in_progress"; +/** + * Enum value "skipped" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * skipped + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_SKIPPED: "skipped"; +/** + * Enum value "success" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * success + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_SUCCESS: "success"; +/** + * Enum value "timed_out" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * timed_out + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT: "timed_out"; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @example 42 + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().threadId()` | + * | .NET | `Thread.CurrentThread.ManagedThreadId` | + * | Python | `threading.current_thread().ident` | + * | Ruby | `Thread.current.object_id` | + * | C++ | `std::this_thread::get_id()` | + * | Erlang | `erlang:self()` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_THREAD_ID: "thread.id"; +/** + * Current thread name. + * + * @example "main" + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().getName()` | + * | .NET | `Thread.CurrentThread.Name` | + * | Python | `threading.current_thread().name` | + * | Ruby | `Thread.current.name` | + * | Erlang | `erlang:process_info(self(), registered_name)` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_THREAD_NAME: "thread.name"; +/** + * String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection. + * + * @example TLS_RSA_WITH_3DES_EDE_CBC_SHA + * @example TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + * + * @note The values allowed for `tls.cipher` **MUST** be one of the `Descriptions` of the [registered TLS Cipher Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CIPHER: "tls.cipher"; +/** + * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_CERTIFICATE: "tls.client.certificate"; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_CERTIFICATE_CHAIN: "tls.client.certificate_chain"; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_HASH_MD5: "tls.client.hash.md5"; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_HASH_SHA1: "tls.client.hash.sha1"; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_HASH_SHA256: "tls.client.hash.sha256"; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_ISSUER: "tls.client.issuer"; +/** + * A hash that identifies clients based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_JA3: "tls.client.ja3"; +/** + * Date/Time indicating when client certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_NOT_AFTER: "tls.client.not_after"; +/** + * Date/Time indicating when client certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_NOT_BEFORE: "tls.client.not_before"; +/** + * Deprecated, use `server.address` instead. + * + * @example opentelemetry.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_TLS_CLIENT_SERVER_NAME: "tls.client.server_name"; +/** + * Distinguished name of subject of the x.509 certificate presented by the client. + * + * @example CN=myclient, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_SUBJECT: "tls.client.subject"; +/** + * Array of ciphers offered by the client during the client hello. + * + * @example ["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_SUPPORTED_CIPHERS: "tls.client.supported_ciphers"; +/** + * String indicating the curve used for the given cipher, when applicable + * + * @example secp256r1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CURVE: "tls.curve"; +/** + * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_ESTABLISHED: "tls.established"; +/** + * String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. + * + * @example http/1.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_NEXT_PROTOCOL: "tls.next_protocol"; +/** + * Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_PROTOCOL_NAME: "tls.protocol.name"; +/** + * Enum value "ssl" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TLS_PROTOCOL_NAME_VALUE_SSL: "ssl"; +/** + * Enum value "tls" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TLS_PROTOCOL_NAME_VALUE_TLS: "tls"; +/** + * Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @example 1.2 + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_PROTOCOL_VERSION: "tls.protocol.version"; +/** + * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_RESUMED: "tls.resumed"; +/** + * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_CERTIFICATE: "tls.server.certificate"; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_CERTIFICATE_CHAIN: "tls.server.certificate_chain"; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_HASH_MD5: "tls.server.hash.md5"; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_HASH_SHA1: "tls.server.hash.sha1"; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_HASH_SHA256: "tls.server.hash.sha256"; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_ISSUER: "tls.server.issuer"; +/** + * A hash that identifies servers based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_JA3S: "tls.server.ja3s"; +/** + * Date/Time indicating when server certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_NOT_AFTER: "tls.server.not_after"; +/** + * Date/Time indicating when server certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_NOT_BEFORE: "tls.server.not_before"; +/** + * Distinguished name of subject of the x.509 certificate presented by the server. + * + * @example CN=myserver, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_SUBJECT: "tls.server.subject"; +/** + * Domain extracted from the `url.full`, such as "opentelemetry.io". + * + * @example www.foo.bar + * @example opentelemetry.io + * @example 3.12.167.2 + * @example [1080:0:0:0:8:800:200C:417A] + * + * @note In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the domain field. If the URL contains a [literal IPv6 address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by `[` and `]`, the `[` and `]` characters should also be captured in the domain field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_DOMAIN: "url.domain"; +/** + * The file extension extracted from the `url.full`, excluding the leading dot. + * + * @example png + * @example gz + * + * @note The file extension is only set if it exists, as not every url has a file extension. When the file name has multiple extensions `example.tar.gz`, only the last one should be captured `gz`, not `tar.gz`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_EXTENSION: "url.extension"; +/** + * Unmodified original URL as seen in the event source. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example search?q=OpenTelemetry + * + * @note In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not. + * `url.original` might contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case password and username **SHOULD NOT** be redacted and attribute's value **SHOULD** remain the same. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_ORIGINAL: "url.original"; +/** + * Port extracted from the `url.full` + * + * @example 443 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_PORT: "url.port"; +/** + * The highest registered url domain, stripped of the subdomain. + * + * @example example.com + * @example foo.co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). For example, the registered domain for `foo.example.com` is `example.com`. Trying to approximate this by simply taking the last two labels will not work well for TLDs such as `co.uk`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_REGISTERED_DOMAIN: "url.registered_domain"; +/** + * The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + * + * @example east + * @example sub2.sub1 + * + * @note The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, with no trailing period. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_SUBDOMAIN: "url.subdomain"; +/** + * The low-cardinality template of an [absolute path reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2). + * + * @example /users/{id} + * @example /users/:id + * @example /users?id={id} + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_TEMPLATE: "url.template"; +/** + * The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is `com`. + * + * @example com + * @example co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_TOP_LEVEL_DOMAIN: "url.top_level_domain"; +/** + * User email address. + * + * @example a.einstein@example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_EMAIL: "user.email"; +/** + * User's full name + * + * @example Albert Einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_FULL_NAME: "user.full_name"; +/** + * Unique user hash to correlate information for a user in anonymized form. + * + * @example 364fc68eaf4c8acec74a4e52d7d1feaa + * + * @note Useful if `user.id` or `user.name` contain confidential information and cannot be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_HASH: "user.hash"; +/** + * Unique identifier of the user. + * + * @example S-1-5-21-202424912787-2692429404-2351956786-1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_ID: "user.id"; +/** + * Short name or login/username of the user. + * + * @example a.einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_NAME: "user.name"; +/** + * Array of user roles at the time of the event. + * + * @example ["admin", "reporting_user"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_ROLES: "user.roles"; +/** + * Name of the user-agent extracted from original. Usually refers to the browser's name. + * + * @example Safari + * @example YourApp + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name **SHOULD** be selected. In such a scenario it should align with `user_agent.version` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_NAME: "user_agent.name"; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @note For mapping user agent strings to OS names, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_OS_NAME: "user_agent.os.name"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @note For mapping user agent strings to OS versions, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_OS_VERSION: "user_agent.os.version"; +/** + * Specifies the category of synthetic traffic, such as tests or bots. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_SYNTHETIC_TYPE: "user_agent.synthetic.type"; +/** + * Enum value "bot" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Bot source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT: "bot"; +/** + * Enum value "test" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Synthetic test source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST: "test"; +/** + * Version of the user-agent extracted from original. Usually refers to the browser's version + * + * @example 14.1.2 + * @example 1.0.0 + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version **SHOULD** be selected. In such a scenario it should align with `user_agent.name` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_VERSION: "user_agent.version"; +/** + * The type of garbage collection. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_V8JS_GC_TYPE: "v8js.gc.type"; +/** + * Enum value "incremental" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Incremental (Incremental Marking). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_INCREMENTAL: "incremental"; +/** + * Enum value "major" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Major (Mark Sweep Compact). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Minor (Scavenge). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_MINOR: "minor"; +/** + * Enum value "weakcb" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Weak Callbacks (Process Weak Callbacks). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_WEAKCB: "weakcb"; +/** + * The name of the space type of heap memory. + * + * @note Value can be retrieved from value `space_name` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_V8JS_HEAP_SPACE_NAME: "v8js.heap.space.name"; +/** + * Enum value "code_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Code memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE: "code_space"; +/** + * Enum value "large_object_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Large object memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE: "large_object_space"; +/** + * Enum value "map_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Map memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE: "map_space"; +/** + * Enum value "new_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * New memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE: "new_space"; +/** + * Enum value "old_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Old memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE: "old_space"; +/** + * The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_CHANGE_ID: "vcs.change.id"; +/** + * The state of the change (pull request/merge request/changelist). + * + * @example open + * @example closed + * @example merged + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_CHANGE_STATE: "vcs.change.state"; +/** + * Enum value "closed" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Closed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_CLOSED: "closed"; +/** + * Enum value "merged" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Merged indicates that the change has been successfully integrated into the target codebase. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_MERGED: "merged"; +/** + * Enum value "open" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Open means the change is currently active and under review. It hasn't been merged into the target branch yet, and it's still possible to make changes or add comments. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_OPEN: "open"; +/** + * Enum value "wip" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * WIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_WIP: "wip"; +/** + * The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_CHANGE_TITLE: "vcs.change.title"; +/** + * The type of line change being measured on a branch or change. + * + * @example added + * @example removed + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_LINE_CHANGE_TYPE: "vcs.line_change.type"; +/** + * Enum value "added" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_LINE_CHANGE_TYPE_VALUE_ADDED: "added"; +/** + * Enum value "removed" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_LINE_CHANGE_TYPE_VALUE_REMOVED: "removed"; +/** + * The group owner within the version control system. + * + * @example my-org + * @example myteam + * @example business-unit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_OWNER_NAME: "vcs.owner.name"; +/** + * The name of the version control system provider. + * + * @example github + * @example gitlab + * @example gitea + * @example bitbucket + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_PROVIDER_NAME: "vcs.provider.name"; +/** + * Enum value "bitbucket" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Bitbucket](https://bitbucket.org) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_BITBUCKET: "bitbucket"; +/** + * Enum value "gitea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Gitea](https://gitea.io) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITEA: "gitea"; +/** + * Enum value "github" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitHub](https://github.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITHUB: "github"; +/** + * Enum value "gitlab" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitLab](https://gitlab.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITLAB: "gitlab"; +/** + * Enum value "gittea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * Deprecated, use `gitea` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gitea`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITTEA: "gittea"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_BASE_NAME: "vcs.ref.base.name"; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. The + * revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.base.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_BASE_REVISION: "vcs.ref.base.revision"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_BASE_TYPE: "vcs.ref.base.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_BASE_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_BASE_TYPE_VALUE_TAG: "tag"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_HEAD_NAME: "vcs.ref.head.name"; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `head` refers to where you are right now; the current reference at a + * given time.The revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.head.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_HEAD_REVISION: "vcs.ref.head.revision"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_HEAD_TYPE: "vcs.ref.head.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_HEAD_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_HEAD_TYPE_VALUE_TAG: "tag"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_TYPE: "vcs.ref.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_TYPE_VALUE_TAG: "tag"; +/** + * Deprecated, use `vcs.change.id` instead. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.id`. + */ +export declare const ATTR_VCS_REPOSITORY_CHANGE_ID: "vcs.repository.change.id"; +/** + * Deprecated, use `vcs.change.title` instead. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.title`. + */ +export declare const ATTR_VCS_REPOSITORY_CHANGE_TITLE: "vcs.repository.change.title"; +/** + * The human readable name of the repository. It **SHOULD NOT** include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. + * + * @example semantic-conventions + * @example my-cool-repo + * + * @note Due to it only being the name, it can clash with forks of the same + * repository if collecting telemetry across multiple orgs or groups in + * the same backends. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REPOSITORY_NAME: "vcs.repository.name"; +/** + * Deprecated, use `vcs.ref.head.name` instead. + * + * @example my-feature-branch + * @example tag-1-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.name`. + */ +export declare const ATTR_VCS_REPOSITORY_REF_NAME: "vcs.repository.ref.name"; +/** + * Deprecated, use `vcs.ref.head.revision` instead. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.revision`. + */ +export declare const ATTR_VCS_REPOSITORY_REF_REVISION: "vcs.repository.ref.revision"; +/** + * Deprecated, use `vcs.ref.head.type` instead. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.type`. + */ +export declare const ATTR_VCS_REPOSITORY_REF_TYPE: "vcs.repository.ref.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REPOSITORY_REF_TYPE_VALUE_TAG: "tag"; +/** + * The [canonical URL](https://support.google.com/webmasters/answer/10347851) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. + * + * @example https://github.com/opentelemetry/open-telemetry-collector-contrib + * @example https://gitlab.com/my-org/my-project/my-projects-project/repo + * + * @note In Git Version Control Systems, the canonical URL **SHOULD NOT** include + * the `.git` extension. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REPOSITORY_URL_FULL: "vcs.repository.url.full"; +/** + * The type of revision comparison. + * + * @example ahead + * @example behind + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REVISION_DELTA_DIRECTION: "vcs.revision_delta.direction"; +/** + * Enum value "ahead" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is ahead of the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD: "ahead"; +/** + * Enum value "behind" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is behind the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND: "behind"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_DESCRIPTION: "webengine.description"; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_NAME: "webengine.name"; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_VERSION: "webengine.version"; +/** + * The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis. + * + * @example SYS1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ZOS_SMF_ID: "zos.smf.id"; +/** + * The name of the SYSPLEX to which the z/OS system belongs too. + * + * @example SYSPLEX1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ZOS_SYSPLEX_NAME: "zos.sysplex.name"; +//# sourceMappingURL=experimental_attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js new file mode 100644 index 0000000..cd4c092 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js @@ -0,0 +1,14461 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * This attribute represents the state of the application. + * + * @example created + * + * @note The Android lifecycle states are defined in [Activity lifecycle callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), and from which the `OS identifiers` are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ANDROID_APP_STATE = 'android.app.state'; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_APP_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_APP_STATE_VALUE_CREATED = "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_APP_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found in the [Android API levels documentation](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels). + * + * @example 33 + * @example 32 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ANDROID_OS_API_LEVEL = 'android.os.api_level'; +/** + * Deprecated. Use `android.app.state` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `android.app.state`. + */ +export const ATTR_ANDROID_STATE = 'android.state'; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_STATE_VALUE_CREATED = "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Unique identifier for a particular build or compilation of the application. + * + * @example 6cff0a7e-cefc-4668-96f5-1273d8b334d0 + * @example 9f2b833506aa6973a92fde9733e6271f + * @example my-app-1.0.0-code-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_BUILD_ID = 'app.build_id'; +/** + * A unique identifier representing the installation of an application on a specific device + * + * @example 2ab2916d-a51f-4ac8-80ee-45ac31a28092 + * + * @note Its value **SHOULD** persist across launches of the same application installation, including through application upgrades. + * It **SHOULD** change if the application is uninstalled or if all applications of the vendor are uninstalled. + * Additionally, users might be able to reset this value (e.g. by clearing application data). + * If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` **SHOULD** have a different value. + * If multiple OpenTelemetry SDKs are used within the same application, they **SHOULD** use the same value for `app.installation.id`. + * Hardware IDs (e.g. serial number, IMEI, MAC address) **MUST NOT** be used as the `app.installation.id`. + * + * For iOS, this value **SHOULD** be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor). + * + * For Android, examples of `app.installation.id` implementations include: + * + * - [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations). + * - A globally unique UUID which is persisted across sessions in your application. + * - [App set ID](https://developer.android.com/identity/app-set-id). + * - [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID). + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_INSTALLATION_ID = 'app.installation.id'; +/** + * A number of frame renders that experienced jank. + * + * @example 9 + * @example 42 + * + * @note Depending on platform limitations, the value provided **MAY** be approximation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_JANK_FRAME_COUNT = 'app.jank.frame_count'; +/** + * The time period, in seconds, for which this jank is being reported. + * + * @example 1.0 + * @example 5.0 + * @example 10.24 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_JANK_PERIOD = 'app.jank.period'; +/** + * The minimum rendering threshold for this jank, in seconds. + * + * @example 0.016 + * @example 0.7 + * @example 1.024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_JANK_THRESHOLD = 'app.jank.threshold'; +/** + * The x (horizontal) coordinate of a screen coordinate, in screen pixels. + * + * @example 0 + * @example 131 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_SCREEN_COORDINATE_X = 'app.screen.coordinate.x'; +/** + * The y (vertical) component of a screen coordinate, in screen pixels. + * + * @example 12 + * @example 99 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_SCREEN_COORDINATE_Y = 'app.screen.coordinate.y'; +/** + * An identifier that uniquely differentiates this screen from other screens in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example com.example.app.MainActivity + * @example com.example.shop.ProductDetailFragment + * @example MyApp.ProfileView + * @example MyApp.ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_SCREEN_ID = 'app.screen.id'; +/** + * The name of an application screen. + * + * @example MainActivity + * @example ProductDetailFragment + * @example ProfileView + * @example ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_SCREEN_NAME = 'app.screen.name'; +/** + * An identifier that uniquely differentiates this widget from other widgets in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example submit_order_1829 + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_WIDGET_ID = 'app.widget.id'; +/** + * The name of an application widget. + * + * @example submit + * @example attack + * @example Clear Cart + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_WIDGET_NAME = 'app.widget.name'; +/** + * The provenance filename of the built attestation which directly relates to the build artifact filename. This filename **SHOULD** accompany the artifact at publish time. See the [SLSA Relationship](https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations) specification for more information. + * + * @example golang-binary-amd64-v0.1.0.attestation + * @example docker-image-amd64-v0.1.0.intoto.json1 + * @example release-1.tar.gz.attestation + * @example file-name-package.tar.gz.intoto.json1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_ATTESTATION_FILENAME = 'artifact.attestation.filename'; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the [software attestation space](https://github.com/in-toto/attestation/tree/main/spec) also refer to this as the **digest**. + * + * @example 1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_ATTESTATION_HASH = 'artifact.attestation.hash'; +/** + * The id of the build [software attestation](https://slsa.dev/attestation-model). + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_ATTESTATION_ID = 'artifact.attestation.id'; +/** + * The human readable file name of the artifact, typically generated during build and release processes. Often includes the package name and version in the file name. + * + * @example golang-binary-amd64-v0.1.0 + * @example docker-image-amd64-v0.1.0 + * @example release-1.tar.gz + * @example file-name-package.tar.gz + * + * @note This file name can also act as the [Package Name](https://slsa.dev/spec/v1.0/terminology#package-model) + * in cases where the package ecosystem maps accordingly. + * Additionally, the artifact [can be published](https://slsa.dev/spec/v1.0/terminology#software-supply-chain) + * for others, but that is not a guarantee. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_FILENAME = 'artifact.filename'; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), often found in checksum.txt on a release of the artifact and used to verify package integrity. + * + * @example 9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9 + * + * @note The specific algorithm used to create the cryptographic hash value is + * not defined. In situations where an artifact has multiple + * cryptographic hashes, it is up to the implementer to choose which + * hash value to set here; this should be the most secure hash algorithm + * that is suitable for the situation and consistent with the + * corresponding attestation. The implementer can then provide the other + * hash values through an additional set of attribute extensions as they + * deem necessary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_HASH = 'artifact.hash'; +/** + * The [Package URL](https://github.com/package-url/purl-spec) of the [package artifact](https://slsa.dev/spec/v1.0/terminology#package-model) provides a standard way to identify and locate the packaged artifact. + * + * @example pkg:github/package-url/purl-spec@1209109710924 + * @example pkg:npm/foo@12.12.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_PURL = 'artifact.purl'; +/** + * The version of the artifact. + * + * @example v0.1.0 + * @example 1.2.1 + * @example 122691-build + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_VERSION = 'artifact.version'; +/** + * The result of the authentication operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_AUTHENTICATION_RESULT = 'aspnetcore.authentication.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "none" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * No authentication information returned. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_NONE = "none"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_SUCCESS = "success"; +/** + * The identifier that names a particular authentication handler. + * + * @example Cookies + * @example Bearer + * @example Identity.Application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_AUTHENTICATION_SCHEME = 'aspnetcore.authentication.scheme'; +/** + * The name of the authorization policy. + * + * @example RequireAdminRole + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_AUTHORIZATION_POLICY = 'aspnetcore.authorization.policy'; +/** + * The result of calling the authorization service. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_AUTHORIZATION_RESULT = 'aspnetcore.authorization.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_SUCCESS = "success"; +/** + * The error code for a failed identity operation. + * + * @example DefaultError + * @example PasswordMismatch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_ERROR_CODE = 'aspnetcore.identity.error_code'; +/** + * The result from checking the password. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT = 'aspnetcore.identity.password_check_result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "password_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the password was missing from the user. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_PASSWORD_MISSING = "password_missing"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS = "success"; +/** + * Enum value "success_rehash_needed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful however the password was encoded using a deprecated algorithm and should be rehashed and updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS_REHASH_NEEDED = "success_rehash_needed"; +/** + * Enum value "user_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the user was missing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_USER_MISSING = "user_missing"; +/** + * The result of the identity operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_RESULT = 'aspnetcore.identity.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_RESULT_VALUE_SUCCESS = "success"; +/** + * Whether the sign in result was success or failure. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT = 'aspnetcore.identity.sign_in.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "locked_out" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is locked out. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_LOCKED_OUT = "locked_out"; +/** + * Enum value "not_allowed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is not allowed to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_NOT_ALLOWED = "not_allowed"; +/** + * Enum value "requires_two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User requires two factory authentication to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_REQUIRES_TWO_FACTOR = "requires_two_factor"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_SUCCESS = "success"; +/** + * The authentication type. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE = 'aspnetcore.identity.sign_in.type'; +/** + * Enum value "external" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a previously registered third-party login. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_EXTERNAL = "external"; +/** + * Enum value "passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with passkey. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSKEY = "passkey"; +/** + * Enum value "password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSWORD = "password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a two factor provider. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR = "two_factor"; +/** + * Enum value "two_factor_authenticator" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factor authenticator app. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_AUTHENTICATOR = "two_factor_authenticator"; +/** + * Enum value "two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factory recovery code. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_RECOVERY_CODE = "two_factor_recovery_code"; +/** + * What the token will be used for. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE = 'aspnetcore.identity.token_purpose'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * Any token purpose that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_OTHER = "_OTHER"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing the user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_EMAIL = "change_email"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing a user phone number. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_PHONE_NUMBER = "change_phone_number"; +/** + * Enum value "email_confirmation" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for confirming user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_EMAIL_CONFIRMATION = "email_confirmation"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for resetting a user password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_RESET_PASSWORD = "reset_password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing user two factor settings. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_TWO_FACTOR = "two_factor"; +/** + * The result of token verification. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED = 'aspnetcore.identity.token_verified'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_SUCCESS = "success"; +/** + * The user update type. + * + * @example update + * @example user_name + * @example reset_password + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE = 'aspnetcore.identity.user.update_type'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Any update type that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_OTHER = "_OTHER"; +/** + * Enum value "access_failed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure recorded. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ACCESS_FAILED = "access_failed"; +/** + * Enum value "add_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_CLAIMS = "add_claims"; +/** + * Enum value "add_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_LOGIN = "add_login"; +/** + * Enum value "add_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_PASSWORD = "add_password"; +/** + * Enum value "add_to_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user added to roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_TO_ROLES = "add_to_roles"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_EMAIL = "change_email"; +/** + * Enum value "change_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PASSWORD = "change_password"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PHONE_NUMBER = "change_phone_number"; +/** + * Enum value "confirm_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email confirmed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CONFIRM_EMAIL = "confirm_email"; +/** + * Enum value "generate_new_two_factor_recovery_codes" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user new two-factor recovery codes generated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_GENERATE_NEW_TWO_FACTOR_RECOVERY_CODES = "generate_new_two_factor_recovery_codes"; +/** + * Enum value "password_rehash" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password rehashed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_PASSWORD_REHASH = "password_rehash"; +/** + * Enum value "redeem_two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor recovery code redeemed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REDEEM_TWO_FACTOR_RECOVERY_CODE = "redeem_two_factor_recovery_code"; +/** + * Enum value "remove_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_AUTHENTICATION_TOKEN = "remove_authentication_token"; +/** + * Enum value "remove_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_CLAIMS = "remove_claims"; +/** + * Enum value "remove_from_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user removed from roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_FROM_ROLES = "remove_from_roles"; +/** + * Enum value "remove_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_LOGIN = "remove_login"; +/** + * Enum value "remove_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSKEY = "remove_passkey"; +/** + * Enum value "remove_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSWORD = "remove_password"; +/** + * Enum value "replace_claim" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claim replaced. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REPLACE_CLAIM = "replace_claim"; +/** + * Enum value "reset_access_failed_count" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure count reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_ACCESS_FAILED_COUNT = "reset_access_failed_count"; +/** + * Enum value "reset_authenticator_key" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authenticator key reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_AUTHENTICATOR_KEY = "reset_authenticator_key"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_PASSWORD = "reset_password"; +/** + * Enum value "security_stamp" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user security stamp updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SECURITY_STAMP = "security_stamp"; +/** + * Enum value "set_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_AUTHENTICATION_TOKEN = "set_authentication_token"; +/** + * Enum value "set_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_EMAIL = "set_email"; +/** + * Enum value "set_lockout_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_ENABLED = "set_lockout_enabled"; +/** + * Enum value "set_lockout_end_date" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout end date set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_END_DATE = "set_lockout_end_date"; +/** + * Enum value "set_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PASSKEY = "set_passkey"; +/** + * Enum value "set_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PHONE_NUMBER = "set_phone_number"; +/** + * Enum value "set_two_factor_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor authentication enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_TWO_FACTOR_ENABLED = "set_two_factor_enabled"; +/** + * Enum value "update" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_UPDATE = "update"; +/** + * Enum value "user_name" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user name updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_USER_NAME = "user_name"; +/** + * The full name of the identity user type. + * + * @example Contoso.ContosoUser + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_USER_TYPE = 'aspnetcore.identity.user_type'; +/** + * The name of the library or subsystem using the memory pool instance. + * + * @example kestrel + * @example iis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_MEMORY_POOL_OWNER = 'aspnetcore.memory_pool.owner'; +/** + * A flag indicating whether the sign in is persistent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_SIGN_IN_IS_PERSISTENT = 'aspnetcore.sign_in.is_persistent'; +/** + * The unique identifier of the AWS Bedrock Guardrail. A [guardrail](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) helps safeguard and prevent unwanted behavior from model responses or user messages. + * + * @example sgi5gkybzqak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_BEDROCK_GUARDRAIL_ID = 'aws.bedrock.guardrail.id'; +/** + * The unique identifier of the AWS Bedrock Knowledge base. A [knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) is a bank of information that can be queried by models to generate more relevant responses and augment prompts. + * + * @example XFWUPB9PAW + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_BEDROCK_KNOWLEDGE_BASE_ID = 'aws.bedrock.knowledge_base.id'; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @example ["{ "AttributeName": "string", "AttributeType": "string" }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions'; +/** + * The value of the `AttributesToGet` request parameter. + * + * @example ["lives", "id"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get'; +/** + * The value of the `ConsistentRead` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read'; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @example ["{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity'; +/** + * The value of the `Count` response parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count'; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @example Users + * @example CatsTable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table'; +/** + * The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field. + * + * @example ["{ "Create": { "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates'; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field + * + * @example ["{ "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes'; +/** + * The value of the `IndexName` request parameter. + * + * @example name_to_group + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name'; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @example { "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] } + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics'; +/** + * The value of the `Limit` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit'; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @example ["{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes'; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @example Title + * @example Title, Price, Color + * @example Title, Description, RelatedItems, ProductReviews + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection'; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity'; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity'; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward'; +/** + * The value of the `ScannedCount` response parameter. + * + * @example 50 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count'; +/** + * The value of the `Segment` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment'; +/** + * The value of the `Select` request parameter. + * + * @example ALL_ATTRIBUTES + * @example COUNT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select'; +/** + * The number of items in the `TableNames` response parameter. + * + * @example 20 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count'; +/** + * The keys in the `RequestItems` object field. + * + * @example ["Users", "Cats"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names'; +/** + * The value of the `TotalSegments` request parameter. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments'; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn'; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @example arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn'; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype'; +/** + * Enum value "ec2" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon EC2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AWS_ECS_LAUNCHTYPE_VALUE_EC2 = "ec2"; +/** + * Enum value "fargate" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon Fargate + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AWS_ECS_LAUNCHTYPE_VALUE_FARGATE = "fargate"; +/** + * The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids). + * + * @example arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b + * @example arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn'; +/** + * The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task. + * + * @example opentelemetry-family + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family'; +/** + * The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`. + * + * @example 10838bed-421f-43ef-870a-f43feacbbb5b + * @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_TASK_ID = 'aws.ecs.task.id'; +/** + * The revision for the task definition used to create the ECS task. + * + * @example 8 + * @example 26 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision'; +/** + * The ARN of an EKS cluster. + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn'; +/** + * The AWS extended request ID as returned in the response header `x-amz-id-2`. + * + * @example wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ= + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_EXTENDED_REQUEST_ID = 'aws.extended_request_id'; +/** + * The name of the AWS Kinesis [stream](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) the request refers to. Corresponds to the `--stream-name` parameter of the Kinesis [describe-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html) operation. + * + * @example some-stream-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_KINESIS_STREAM_NAME = 'aws.kinesis.stream_name'; +/** + * 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). + * + * @example arn:aws:lambda:us-east-1:123456:function:myfunction:myalias + * + * @note This may be different from `cloud.resource_id` if an alias is involved. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn'; +/** + * The UUID of the [AWS Lambda EvenSource Mapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html). An event source is mapped to a lambda function. It's contents are read by Lambda and used to trigger a function. This isn't available in the lambda execution context or the lambda runtime environtment. This is going to be populated by the AWS SDK for each language when that UUID is present. Some of these operations are Create/Delete/Get/List/Update EventSourceMapping. + * + * @example 587ad24b-03b9-4413-8202-bbd56b36e5b7 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LAMBDA_RESOURCE_MAPPING_ID = 'aws.lambda.resource_mapping.id'; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*"] + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns'; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * @example ["/aws/lambda/my-function", "opentelemetry-service"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LOG_GROUP_NAMES = 'aws.log.group.names'; +/** + * The ARN(s) of the AWS log stream(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns'; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @example ["logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names'; +/** + * The AWS request ID as returned in the response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`. + * + * @example 79b9da39-b7ae-508a-a6bc-864b2829c622 + * @example C9ER4AJX75574TDJ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_REQUEST_ID = 'aws.request_id'; +/** + * The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example some-bucket-name + * + * @note The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter. + * This applies to almost all S3 operations except `list-buckets`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_BUCKET = 'aws.s3.bucket'; +/** + * The source object (in the form `bucket`/`key`) for the copy operation. + * + * @example someFile.yml + * + * @note The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter + * of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html). + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_COPY_SOURCE = 'aws.s3.copy_source'; +/** + * The delete request container that specifies the objects to be deleted. + * + * @example Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean + * + * @note The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation. + * The `delete` attribute corresponds to the `--delete` parameter of the + * [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_DELETE = 'aws.s3.delete'; +/** + * The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example someFile.yml + * + * @note The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter. + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) + * - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html) + * - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html) + * - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html) + * - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html) + * - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html) + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_KEY = 'aws.s3.key'; +/** + * The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000. + * + * @example 3456 + * + * @note The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations. + * The `part_number` attribute corresponds to the `--part-number` parameter of the + * [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_PART_NUMBER = 'aws.s3.part_number'; +/** + * Upload ID that identifies the multipart upload. + * + * @example dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ + * + * @note The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter + * of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations. + * This applies in particular to the following operations: + * + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_UPLOAD_ID = 'aws.s3.upload_id'; +/** + * The ARN of the Secret stored in the Secrets Mangger + * + * @example arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_SECRETSMANAGER_SECRET_ARN = 'aws.secretsmanager.secret.arn'; +/** + * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) is a logical access point that acts as a communication channel. + * + * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_SNS_TOPIC_ARN = 'aws.sns.topic.arn'; +/** + * The URL of the AWS SQS Queue. It's a unique identifier for a queue in Amazon Simple Queue Service (SQS) and is used to access the queue and perform actions on it. + * + * @example https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_SQS_QUEUE_URL = 'aws.sqs.queue.url'; +/** + * The ARN of the AWS Step Functions Activity. + * + * @example arn:aws:states:us-east-1:123456789012:activity:get-greeting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN = 'aws.step_functions.activity.arn'; +/** + * The ARN of the AWS Step Functions State Machine. + * + * @example arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN = 'aws.step_functions.state_machine.arn'; +/** + * Deprecated, use `azure.resource_provider.namespace` instead. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource_provider.namespace`. + */ +export const ATTR_AZ_NAMESPACE = 'az.namespace'; +/** + * Deprecated, use `azure.service.request.id` instead. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.service.request.id`. + */ +export const ATTR_AZ_SERVICE_REQUEST_ID = 'az.service_request_id'; +/** + * The unique identifier of the client instance. + * + * @example 3ba4827d-4422-483f-b59f-85b74211c11d + * @example storage-client-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_CLIENT_ID = 'azure.client.id'; +/** + * Cosmos client connection mode. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_CONNECTION_MODE = 'azure.cosmosdb.connection.mode'; +/** + * Enum value "direct" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = "gateway"; +/** + * Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL = 'azure.cosmosdb.consistency.level'; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Bounded Staleness + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Consistent Prefix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Eventual + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Session + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Strong + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = "Strong"; +/** + * List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @note Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS = 'azure.cosmosdb.operation.contacted_regions'; +/** + * The number of request units consumed by the operation. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.operation.request_charge'; +/** + * Request payload size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_REQUEST_BODY_SIZE = 'azure.cosmosdb.request.body.size'; +/** + * Cosmos DB sub status code. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE = 'azure.cosmosdb.response.sub_status_code'; +/** + * [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_RESOURCE_PROVIDER_NAMESPACE = 'azure.resource_provider.namespace'; +/** + * The unique identifier of the service request. It's generated by the Azure service and returned with the response. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_SERVICE_REQUEST_ID = 'azure.service.request.id'; +/** + * Array of brand name and version separated by a space + * + * @example [" Not A;Brand 99", "Chromium 99", "Chrome 99"] + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_BROWSER_BRANDS = 'browser.brands'; +/** + * Preferred language of the user using the browser + * + * @example en + * @example en-US + * @example fr + * @example fr-FR + * + * @note This value is intended to be taken from the Navigator API `navigator.language`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_BROWSER_LANGUAGE = 'browser.language'; +/** + * A boolean that is true if the browser is running on a mobile device + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute **SHOULD** be left unset. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_BROWSER_MOBILE = 'browser.mobile'; +/** + * The platform on which the browser is running + * + * @example Windows + * @example macOS + * @example Android + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API **SHOULD NOT** be used instead and this attribute **SHOULD** be left unset in order for the values to be consistent. + * The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_BROWSER_PLATFORM = 'browser.platform'; +/** + * 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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_CONSISTENCY_LEVEL = 'cassandra.consistency.level'; +/** + * Enum value "all" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * All + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = "all"; +/** + * Enum value "any" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Any + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Each Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = "serial"; +/** + * Enum value "three" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Three + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = "three"; +/** + * Enum value "two" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Two + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = "two"; +/** + * The data center of the coordinating node for a query. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_COORDINATOR_DC = 'cassandra.coordinator.dc'; +/** + * The ID of the coordinating node for a query. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_COORDINATOR_ID = 'cassandra.coordinator.id'; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_PAGE_SIZE = 'cassandra.page.size'; +/** + * Whether or not the query is idempotent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_QUERY_IDEMPOTENT = 'cassandra.query.idempotent'; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'cassandra.speculative_execution.count'; +/** + * The kind of action a pipeline run is performing. + * + * @example BUILD + * @example RUN + * @example SYNC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_ACTION_NAME = 'cicd.pipeline.action.name'; +/** + * Enum value "BUILD" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a build. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_ACTION_NAME_VALUE_BUILD = "BUILD"; +/** + * Enum value "RUN" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_ACTION_NAME_VALUE_RUN = "RUN"; +/** + * Enum value "SYNC" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a sync. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_ACTION_NAME_VALUE_SYNC = "SYNC"; +/** + * The human readable name of the pipeline within a CI/CD system. + * + * @example Build and Test + * @example Lint + * @example Deploy Go Project + * @example deploy_to_environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_NAME = 'cicd.pipeline.name'; +/** + * The result of a pipeline run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_RESULT = 'cicd.pipeline.result'; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_CANCELLATION = "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_ERROR = "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_SKIP = "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_SUCCESS = "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * A timeout caused the pipeline run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_TIMEOUT = "timeout"; +/** + * The unique identifier of a pipeline run within a CI/CD system. + * + * @example 120912 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_RUN_ID = 'cicd.pipeline.run.id'; +/** + * The pipeline run goes through these states during its lifecycle. + * + * @example pending + * @example executing + * @example finalizing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_RUN_STATE = 'cicd.pipeline.run.state'; +/** + * Enum value "executing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The executing state spans the execution of any run tasks (eg. build, test). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RUN_STATE_VALUE_EXECUTING = "executing"; +/** + * Enum value "finalizing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The finalizing state spans from when the run has finished executing (eg. cleanup of run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RUN_STATE_VALUE_FINALIZING = "finalizing"; +/** + * Enum value "pending" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RUN_STATE_VALUE_PENDING = "pending"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline run, providing the complete address in order to locate and identify the pipeline run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_RUN_URL_FULL = 'cicd.pipeline.run.url.full'; +/** + * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures. + * + * @example Run GoLang Linter + * @example Go Build + * @example go-test + * @example deploy_binary + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_TASK_NAME = 'cicd.pipeline.task.name'; +/** + * The unique identifier of a task run within a pipeline. + * + * @example 12097 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_TASK_RUN_ID = 'cicd.pipeline.task.run.id'; +/** + * The result of a task run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_TASK_RUN_RESULT = 'cicd.pipeline.task.run.result'; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was cancelled, eg. by a user manually cancelling the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_CANCELLATION = "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_ERROR = "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SKIP = "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SUCCESS = "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * A timeout caused the task run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_TIMEOUT = "timeout"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline task run, providing the complete address in order to locate and identify the pipeline task run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL = 'cicd.pipeline.task.run.url.full'; +/** + * The type of the task within a pipeline. + * + * @example build + * @example test + * @example deploy + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_TASK_TYPE = 'cicd.pipeline.task.type'; +/** + * Enum value "build" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * build + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_TYPE_VALUE_BUILD = "build"; +/** + * Enum value "deploy" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * deploy + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY = "deploy"; +/** + * Enum value "test" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * test + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_TYPE_VALUE_TEST = "test"; +/** + * The name of a component of the CICD system. + * + * @example controller + * @example scheduler + * @example agent + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_SYSTEM_COMPONENT = 'cicd.system.component'; +/** + * The unique identifier of a worker within a CICD system. + * + * @example abc123 + * @example 10.0.1.2 + * @example controller + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_WORKER_ID = 'cicd.worker.id'; +/** + * The name of a worker within a CICD system. + * + * @example agent-abc + * @example controller + * @example Ubuntu LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_WORKER_NAME = 'cicd.worker.name'; +/** + * The state of a CICD worker / agent. + * + * @example idle + * @example busy + * @example down + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_WORKER_STATE = 'cicd.worker.state'; +/** + * Enum value "available" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_WORKER_STATE_VALUE_AVAILABLE = "available"; +/** + * Enum value "busy" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is performing work for the CICD system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_WORKER_STATE_VALUE_BUSY = "busy"; +/** + * Enum value "offline" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not available to the CICD system (disconnected / down). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_WORKER_STATE_VALUE_OFFLINE = "offline"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the worker, providing the complete address in order to locate and identify the worker. + * + * @example https://cicd.example.org/worker/abc123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_WORKER_URL_FULL = 'cicd.worker.url.full'; +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id'; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone'; +/** + * The cloud platform in use. + * + * @note The prefix of the service **SHOULD** match the one specified in `cloud.provider`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_PLATFORM = 'cloud.platform'; +/** + * Enum value "akamai_cloud.compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Akamai Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE = "akamai_cloud.compute"; +/** + * Enum value "alibaba_cloud_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Elastic Compute Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS = "alibaba_cloud_ecs"; +/** + * Enum value "alibaba_cloud_fc" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Function Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC = "alibaba_cloud_fc"; +/** + * Enum value "alibaba_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT = "alibaba_cloud_openshift"; +/** + * Enum value "aws_app_runner" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS App Runner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER = "aws_app_runner"; +/** + * Enum value "aws_ec2" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Compute Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_EC2 = "aws_ec2"; +/** + * Enum value "aws_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Container Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_ECS = "aws_ecs"; +/** + * Enum value "aws_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_EKS = "aws_eks"; +/** + * Enum value "aws_elastic_beanstalk" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Beanstalk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk"; +/** + * Enum value "aws_lambda" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Lambda + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_LAMBDA = "aws_lambda"; +/** + * Enum value "aws_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on AWS (ROSA) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT = "aws_openshift"; +/** + * Enum value "azure.aks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_AKS = "azure.aks"; +/** + * Enum value "azure.app_service" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure App Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE = "azure.app_service"; +/** + * Enum value "azure.container_apps" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Apps + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS = "azure.container_apps"; +/** + * Enum value "azure.container_instances" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Instances + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES = "azure.container_instances"; +/** + * Enum value "azure.functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Functions + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS = "azure.functions"; +/** + * Enum value "azure.openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Red Hat OpenShift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT = "azure.openshift"; +/** + * Enum value "azure.vm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Virtual Machines + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_VM = "azure.vm"; +/** + * Enum value "gcp.agent_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Vertex AI Agent Engine + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE = "gcp.agent_engine"; +/** + * Enum value "gcp_app_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud App Engine (GAE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE = "gcp_app_engine"; +/** + * Enum value "gcp_bare_metal_solution" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Bare Metal Solution (BMS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION = "gcp_bare_metal_solution"; +/** + * Enum value "gcp_cloud_functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Functions (GCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS = "gcp_cloud_functions"; +/** + * Enum value "gcp_cloud_run" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Run + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN = "gcp_cloud_run"; +/** + * Enum value "gcp_compute_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Compute Engine (GCE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE = "gcp_compute_engine"; +/** + * Enum value "gcp_kubernetes_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Kubernetes Engine (GKE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE = "gcp_kubernetes_engine"; +/** + * Enum value "gcp_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Google Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT = "gcp_openshift"; +/** + * Enum value "hetzner.cloud_server" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Server on Hetzner Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER = "hetzner.cloud_server"; +/** + * Enum value "ibm_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT = "ibm_cloud_openshift"; +/** + * Enum value "oracle_cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Compute on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_COMPUTE = "oracle_cloud_compute"; +/** + * Enum value "oracle_cloud_oke" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_OKE = "oracle_cloud_oke"; +/** + * Enum value "tencent_cloud_cvm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Cloud Virtual Machine (CVM) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM = "tencent_cloud_cvm"; +/** + * Enum value "tencent_cloud_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Elastic Kubernetes Service (EKS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS = "tencent_cloud_eks"; +/** + * Enum value "tencent_cloud_scf" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Serverless Cloud Function (SCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF = "tencent_cloud_scf"; +/** + * Enum value "vultr.cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Vultr Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE = "vultr.cloud_compute"; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_PROVIDER = 'cloud.provider'; +/** + * Enum value "akamai_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Akamai Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD = "akamai_cloud"; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_AWS = "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_AZURE = "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_GCP = "gcp"; +/** + * Enum value "heroku" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Heroku Platform as a Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_HEROKU = "heroku"; +/** + * Enum value "hetzner" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Hetzner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_HETZNER = "hetzner"; +/** + * Enum value "ibm_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_IBM_CLOUD = "ibm_cloud"; +/** + * Enum value "oracle_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_ORACLE_CLOUD = "oracle_cloud"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_TENCENT_CLOUD = "tencent_cloud"; +/** + * Enum value "vultr" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Vultr + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_VULTR = "vultr"; +/** + * The geographical region within a cloud provider. When associated with a resource, this attribute specifies the region where the resource operates. When calling services or APIs deployed on a cloud, this attribute identifies the region where the called destination is deployed. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_REGION = 'cloud.region'; +/** + * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://google.aip.dev/122#full-resource-names) on GCP) + * + * @example arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function + * @example //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID + * @example /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/ + * + * @note On some cloud providers, it may not be possible to determine the full ID at startup, + * so it may be necessary to set `cloud.resource_id` as a span attribute instead. + * + * The exact value to use for `cloud.resource_id` depends on the cloud provider. + * The following well-known definitions **MUST** be used if you set this attribute and they apply: + * + * - **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + * Take care not to use the "invoked ARN" directly but replace any + * [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 invocable with + * multiple different aliases. + * - **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) + * - **Azure:** The [Fully Qualified Resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) of the invoked function, + * *not* the function app, having the form + * `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`. + * This means that a span attribute **MUST** be used, as an Azure function app can host multiple functions that would usually share + * a TracerProvider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_RESOURCE_ID = 'cloud.resource_id'; +/** + * The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event. + * + * @example 123e4567-e89b-12d3-a456-426614174000 + * @example 0001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDEVENTS_EVENT_ID = 'cloudevents.event_id'; +/** + * The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened. + * + * @example https://github.com/cloudevents + * @example /cloudevents/spec/pull/123 + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDEVENTS_EVENT_SOURCE = 'cloudevents.event_source'; +/** + * The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses. + * + * @example "1.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION = 'cloudevents.event_spec_version'; +/** + * The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source). + * + * @example "mynewfile.jpg" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDEVENTS_EVENT_SUBJECT = 'cloudevents.event_subject'; +/** + * The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence. + * + * @example com.github.pull_request.opened + * @example com.example.object.deleted.v2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDEVENTS_EVENT_TYPE = 'cloudevents.event_type'; +/** + * The guid of the application. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_id`. This is the same value as + * reported by `cf app --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_APP_ID = 'cloudfoundry.app.id'; +/** + * The index of the application instance. 0 when just one instance is active. + * + * @example 0 + * @example 1 + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the application instance index for applications + * deployed on the runtime. + * + * Application instrumentation should use the value from environment + * variable `CF_INSTANCE_INDEX`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID = 'cloudfoundry.app.instance.id'; +/** + * The name of the application. + * + * @example my-app-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_name`. This is the same value + * as reported by `cf apps`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_APP_NAME = 'cloudfoundry.app.name'; +/** + * The guid of the CloudFoundry org the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_id`. This is the same value as + * reported by `cf org --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_ORG_ID = 'cloudfoundry.org.id'; +/** + * The name of the CloudFoundry organization the app is running in. + * + * @example my-org-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_name`. This is the same value as + * reported by `cf orgs`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_ORG_NAME = 'cloudfoundry.org.name'; +/** + * The UID identifying the process. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to + * `VCAP_APPLICATION.app_id` for applications deployed to the runtime. + * For system components, this could be the actual PID. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_PROCESS_ID = 'cloudfoundry.process.id'; +/** + * The type of process. + * + * @example web + * + * @note CloudFoundry applications can consist of multiple jobs. Usually the + * main process will be of type `web`. There can be additional background + * tasks or side-cars with different process types. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_PROCESS_TYPE = 'cloudfoundry.process.type'; +/** + * The guid of the CloudFoundry space the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_id`. This is the same value as + * reported by `cf space --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_SPACE_ID = 'cloudfoundry.space.id'; +/** + * The name of the CloudFoundry space the application is running in. + * + * @example my-space-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_name`. This is the same value as + * reported by `cf spaces`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_SPACE_NAME = 'cloudfoundry.space.name'; +/** + * A guid or another name describing the event source. + * + * @example cf/gorouter + * + * @note CloudFoundry defines the `source_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the component name, e.g. "gorouter", for + * CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.id` should be set to + * `spec.deployment/spec.name`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_SYSTEM_ID = 'cloudfoundry.system.id'; +/** + * A guid describing the concrete instance of the event source. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the vm id for CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.instance.id` should be set to `spec.id`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID = 'cloudfoundry.system.instance.id'; +/** + * Deprecated, use `code.column.number` + * + * @example 16 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.column.number`. + */ +export const ATTR_CODE_COLUMN = 'code.column'; +/** + * Deprecated, use `code.file.path` instead + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.file.path`. + */ +export const ATTR_CODE_FILEPATH = 'code.filepath'; +/** + * Deprecated, use `code.function.name` instead + * + * @example "serveRequest" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +export const ATTR_CODE_FUNCTION = 'code.function'; +/** + * Deprecated, use `code.line.number` instead + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.line.number`. + */ +export const ATTR_CODE_LINENO = 'code.lineno'; +/** + * Deprecated, namespace is now included into `code.function.name` + * + * @example "com.example.MyHttpService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +export const ATTR_CODE_NAMESPACE = 'code.namespace'; +/** + * The command used to run the container (i.e. the command name). + * + * @example otelcontribcol + * + * @note If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_COMMAND = 'container.command'; +/** + * All the command arguments (including the command/executable itself) run by the container. + * + * @example ["otelcontribcol", "--config", "config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_COMMAND_ARGS = 'container.command_args'; +/** + * The full command run by the container as a single string representing the full command. + * + * @example otelcontribcol --config config.yaml + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_COMMAND_LINE = 'container.command_line'; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example user + * @example kernel + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export const ATTR_CONTAINER_CPU_STATE = 'container.cpu.state'; +/** + * Enum value "kernel" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CONTAINER_CPU_STATE_VALUE_KERNEL = "kernel"; +/** + * Enum value "system" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When CPU is used by the system (host OS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CONTAINER_CPU_STATE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CONTAINER_CPU_STATE_VALUE_USER = "user"; +/** + * The name of the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin used by the volume. + * + * @example pd.csi.storage.gke.io + * + * @note This can sometimes be referred to as a "driver" in CSI implementations. This should represent the `name` field of the GetPluginInfo RPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_CSI_PLUGIN_NAME = 'container.csi.plugin.name'; +/** + * The unique volume ID returned by the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin. + * + * @example projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk + * + * @note This can sometimes be referred to as a "volume handle" in CSI implementations. This should represent the `Volume.volume_id` field in CSI spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_CSI_VOLUME_ID = 'container.csi.volume.id'; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_ID = 'container.id'; +/** + * Runtime specific image identifier. Usually a hash algorithm followed by a UUID. + * + * @example sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f + * + * @note Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect) endpoint. + * K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. + * The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_ID = 'container.image.id'; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name'; +/** + * Repo digests of the container image as provided by the container runtime. + * + * @example ["example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb", "internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578"] + * + * @note [Docker](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_REPO_DIGESTS = 'container.image.repo_digests'; +/** + * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags'; +/** + * Container labels, `` being the label name, the value being the label value. + * + * @example nginx + * + * @note For example, a docker container label `app` with value `nginx` **SHOULD** be recorded as the `container.label.app` attribute with value `"nginx"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_LABEL = (key) => `container.label.${key}`; +/** + * Deprecated, use `container.label` instead. + * + * @example nginx + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.label`. + */ +export const ATTR_CONTAINER_LABELS = (key) => `container.labels.${key}`; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_NAME = 'container.name'; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.runtime.name`. + */ +export const ATTR_CONTAINER_RUNTIME = 'container.runtime'; +/** + * A description about the runtime which could include, for example details about the CRI/API version being used or other customisations. + * + * @example docker://19.3.1 - CRI: 1.22.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_RUNTIME_DESCRIPTION = 'container.runtime.description'; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_RUNTIME_NAME = 'container.runtime.name'; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "1.0.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_RUNTIME_VERSION = 'container.runtime.version'; +/** + * The logical CPU number [0..n-1] + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CPU_LOGICAL_NUMBER = 'cpu.logical_number'; +/** + * The mode of the CPU + * + * @example user + * @example system + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CPU_MODE = 'cpu.mode'; +/** + * Enum value "idle" for attribute {@link ATTR_CPU_MODE}. + * + * Idle + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_IDLE = "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_CPU_MODE}. + * + * Interrupt + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_INTERRUPT = "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_CPU_MODE}. + * + * IO Wait + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_IOWAIT = "iowait"; +/** + * Enum value "kernel" for attribute {@link ATTR_CPU_MODE}. + * + * Kernel + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_KERNEL = "kernel"; +/** + * Enum value "nice" for attribute {@link ATTR_CPU_MODE}. + * + * Nice + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_NICE = "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_CPU_MODE}. + * + * Steal + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_STEAL = "steal"; +/** + * Enum value "system" for attribute {@link ATTR_CPU_MODE}. + * + * System + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_CPU_MODE}. + * + * User + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_USER = "user"; +/** + * Value of the garbage collector collection generation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CPYTHON_GC_GENERATION = 'cpython.gc.generation'; +/** + * Enum value 0 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPYTHON_GC_GENERATION_VALUE_GENERATION_0 = 0; +/** + * Enum value 1 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPYTHON_GC_GENERATION_VALUE_GENERATION_1 = 1; +/** + * Enum value 2 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPYTHON_GC_GENERATION_VALUE_GENERATION_2 = 2; +/** + * Deprecated, use `cassandra.consistency.level` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.consistency.level`. + */ +export const ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level'; +/** + * Enum value "all" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = "all"; +/** + * Enum value "any" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = "serial"; +/** + * Enum value "three" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = "three"; +/** + * Enum value "two" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = "two"; +/** + * Deprecated, use `cassandra.coordinator.dc` instead. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.dc`. + */ +export const ATTR_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc'; +/** + * Deprecated, use `cassandra.coordinator.id` instead. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.id`. + */ +export const ATTR_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id'; +/** + * Deprecated, use `cassandra.query.idempotent` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.query.idempotent`. + */ +export const ATTR_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence'; +/** + * Deprecated, use `cassandra.page.size` instead. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.page.size`. + */ +export const ATTR_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size'; +/** + * Deprecated, use `cassandra.speculative_execution.count` instead. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.speculative_execution.count`. + */ +export const ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export const ATTR_DB_CASSANDRA_TABLE = 'db.cassandra.table'; +/** + * 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. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name'; +/** + * The state of a connection in the pool + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state'; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CLIENT_CONNECTION_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +export const ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME = 'db.client.connections.pool.name'; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +export const ATTR_DB_CLIENT_CONNECTIONS_STATE = 'db.client.connections.state'; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE = "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CLIENT_CONNECTIONS_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export const ATTR_DB_CONNECTION_STRING = 'db.connection_string'; +/** + * Deprecated, use `azure.client.id` instead. + * + * @example "3ba4827d-4422-483f-b59f-85b74211c11d" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.client.id`. + */ +export const ATTR_DB_COSMOSDB_CLIENT_ID = 'db.cosmosdb.client_id'; +/** + * Deprecated, use `azure.cosmosdb.connection.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.connection.mode`. + */ +export const ATTR_DB_COSMOSDB_CONNECTION_MODE = 'db.cosmosdb.connection_mode'; +/** + * Enum value "direct" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = "gateway"; +/** + * Deprecated, use `cosmosdb.consistency.level` instead. + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.consistency.level`. + */ +export const ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL = 'db.cosmosdb.consistency_level'; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = "Strong"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export const ATTR_DB_COSMOSDB_CONTAINER = 'db.cosmosdb.container'; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_DB_COSMOSDB_OPERATION_TYPE = 'db.cosmosdb.operation_type'; +/** + * Enum value "batch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH = "batch"; +/** + * Enum value "create" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE = "create"; +/** + * Enum value "delete" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE = "delete"; +/** + * Enum value "execute" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE = "execute"; +/** + * Enum value "execute_javascript" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT = "execute_javascript"; +/** + * Enum value "head" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD = "head"; +/** + * Enum value "head_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED = "head_feed"; +/** + * Enum value "invalid" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID = "invalid"; +/** + * Enum value "patch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH = "patch"; +/** + * Enum value "query" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY = "query"; +/** + * Enum value "query_plan" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN = "query_plan"; +/** + * Enum value "read" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ = "read"; +/** + * Enum value "read_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED = "read_feed"; +/** + * Enum value "replace" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE = "replace"; +/** + * Enum value "upsert" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT = "upsert"; +/** + * Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.contacted_regions`. + */ +export const ATTR_DB_COSMOSDB_REGIONS_CONTACTED = 'db.cosmosdb.regions_contacted'; +/** + * Deprecated, use `azure.cosmosdb.operation.request_charge` instead. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.request_charge`. + */ +export const ATTR_DB_COSMOSDB_REQUEST_CHARGE = 'db.cosmosdb.request_charge'; +/** + * Deprecated, use `azure.cosmosdb.request.body.size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.request.body.size`. + */ +export const ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH = 'db.cosmosdb.request_content_length'; +/** + * Deprecated, use `db.response.status_code` instead. + * + * @example 200 + * @example 201 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `db.response.status_code` instead. + */ +export const ATTR_DB_COSMOSDB_STATUS_CODE = 'db.cosmosdb.status_code'; +/** + * Deprecated, use `azure.cosmosdb.response.sub_status_code` instead. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.response.sub_status_code`. + */ +export const ATTR_DB_COSMOSDB_SUB_STATUS_CODE = 'db.cosmosdb.sub_status_code'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example e9106fc68e3044f0b1475b04bf4ffd5f + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export const ATTR_DB_ELASTICSEARCH_CLUSTER_NAME = 'db.elasticsearch.cluster.name'; +/** + * Deprecated, use `elasticsearch.node.name` instead. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `elasticsearch.node.name`. + */ +export const ATTR_DB_ELASTICSEARCH_NODE_NAME = 'db.elasticsearch.node.name'; +/** + * Deprecated, use `db.operation.parameter` instead. + * + * @example test-index + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.parameter`. + */ +export const ATTR_DB_ELASTICSEARCH_PATH_PARTS = (key) => `db.elasticsearch.path_parts.${key}`; +/** + * Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + * + * @example "mysql-e26b99z.example.com" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + */ +export const ATTR_DB_INSTANCE_ID = 'db.instance.id'; +/** + * Removed, no replacement at this time. + * + * @example org.postgresql.Driver + * @example com.microsoft.sqlserver.jdbc.SQLServerDriver + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection'; +/** + * Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute. + * + * @example "MSSQLSERVER" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export const ATTR_DB_NAME = 'db.name'; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +export const ATTR_DB_OPERATION = 'db.operation'; +/** + * A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note For example, a client-side maximum number of rows to read from the database + * **MAY** be recorded as the `db.operation.parameter.max_rows` attribute. + * + * `db.query.text` parameters **SHOULD** be captured using `db.query.parameter.` + * instead of `db.operation.parameter.`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DB_OPERATION_PARAMETER = (key) => `db.operation.parameter.${key}`; +/** + * A database query parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note If a query parameter has no name and instead is referenced only by index, + * then `` **SHOULD** be the 0-based index. + * + * `db.query.parameter.` **SHOULD** match + * up with the parameterized placeholders present in `db.query.text`. + * + * It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * `db.query.parameter.` **SHOULD NOT** be captured on batch operations. + * + * Examples: + * + * - For a query `SELECT * FROM users where username = %s` with the parameter `"jdoe"`, + * the attribute `db.query.parameter.0` **SHOULD** be set to `"jdoe"`. + * - For a query `"SELECT * FROM users WHERE username = %(userName)s;` with parameter + * `userName = "jdoe"`, the attribute `db.query.parameter.userName` **SHOULD** be set to `"jdoe"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DB_QUERY_PARAMETER = (key) => `db.query.parameter.${key}`; +/** + * Deprecated, use `db.namespace` instead. + * + * @example 0 + * @example 1 + * @example 15 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Uncategorized. + */ +export const ATTR_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index'; +/** + * Number of rows returned by the operation. + * + * @example 10 + * @example 30 + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DB_RESPONSE_RETURNED_ROWS = 'db.response.returned_rows'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`. + */ +export const ATTR_DB_SQL_TABLE = 'db.sql.table'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export const ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export const ATTR_DB_SYSTEM = 'db.system'; +/** + * Enum value "adabas" for attribute {@link ATTR_DB_SYSTEM}. + * + * Adabas (Adaptable Database System) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_ADABAS = "adabas"; +/** + * Enum value "cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `intersystems_cache` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `intersystems_cache`. + */ +export const DB_SYSTEM_VALUE_CACHE = "cache"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Cassandra + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_CASSANDRA = "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM}. + * + * ClickHouse + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_CLICKHOUSE = "clickhouse"; +/** + * Enum value "cloudscape" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export const DB_SYSTEM_VALUE_CLOUDSCAPE = "cloudscape"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CockroachDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_COCKROACHDB = "cockroachdb"; +/** + * Enum value "coldfusion" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, no replacement at this time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export const DB_SYSTEM_VALUE_COLDFUSION = "coldfusion"; +/** + * Enum value "cosmosdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft Azure Cosmos DB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_COSMOSDB = "cosmosdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Couchbase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_COUCHBASE = "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CouchDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_COUCHDB = "couchdb"; +/** + * Enum value "db2" for attribute {@link ATTR_DB_SYSTEM}. + * + * IBM Db2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_DB2 = "db2"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Derby + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_DERBY = "derby"; +/** + * Enum value "dynamodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon DynamoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_DYNAMODB = "dynamodb"; +/** + * Enum value "edb" for attribute {@link ATTR_DB_SYSTEM}. + * + * EnterpriseDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_EDB = "edb"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * Elasticsearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_ELASTICSEARCH = "elasticsearch"; +/** + * Enum value "filemaker" for attribute {@link ATTR_DB_SYSTEM}. + * + * FileMaker + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_FILEMAKER = "filemaker"; +/** + * Enum value "firebird" for attribute {@link ATTR_DB_SYSTEM}. + * + * Firebird + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_FIREBIRD = "firebird"; +/** + * Enum value "firstsql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export const DB_SYSTEM_VALUE_FIRSTSQL = "firstsql"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Geode + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_GEODE = "geode"; +/** + * Enum value "h2" for attribute {@link ATTR_DB_SYSTEM}. + * + * H2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_H2 = "h2"; +/** + * Enum value "hanadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP HANA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_HANADB = "hanadb"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache HBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_HBASE = "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Hive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_HIVE = "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM}. + * + * HyperSQL DataBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_HSQLDB = "hsqldb"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InfluxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INFLUXDB = "influxdb"; +/** + * Enum value "informix" for attribute {@link ATTR_DB_SYSTEM}. + * + * Informix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INFORMIX = "informix"; +/** + * Enum value "ingres" for attribute {@link ATTR_DB_SYSTEM}. + * + * Ingres + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INGRES = "ingres"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InstantDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INSTANTDB = "instantdb"; +/** + * Enum value "interbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INTERBASE = "interbase"; +/** + * Enum value "intersystems_cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterSystems Caché + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE = "intersystems_cache"; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MariaDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MARIADB = "mariadb"; +/** + * Enum value "maxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP MaxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MAXDB = "maxdb"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM}. + * + * Memcached + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MEMCACHED = "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MongoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MONGODB = "mongodb"; +/** + * Enum value "mssql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft SQL Server + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MSSQL = "mssql"; +/** + * Enum value "mssqlcompact" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, Microsoft SQL Server Compact is discontinued. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export const DB_SYSTEM_VALUE_MSSQLCOMPACT = "mssqlcompact"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM}. + * + * MySQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MYSQL = "mysql"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM}. + * + * Neo4j + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_NEO4J = "neo4j"; +/** + * Enum value "netezza" for attribute {@link ATTR_DB_SYSTEM}. + * + * Netezza + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_NETEZZA = "netezza"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * OpenSearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_OPENSEARCH = "opensearch"; +/** + * Enum value "oracle" for attribute {@link ATTR_DB_SYSTEM}. + * + * Oracle Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_ORACLE = "oracle"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Some other SQL database. Fallback only. See notes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_OTHER_SQL = "other_sql"; +/** + * Enum value "pervasive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Pervasive PSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_PERVASIVE = "pervasive"; +/** + * Enum value "pointbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * PointBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_POINTBASE = "pointbase"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM}. + * + * PostgreSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_POSTGRESQL = "postgresql"; +/** + * Enum value "progress" for attribute {@link ATTR_DB_SYSTEM}. + * + * Progress Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_PROGRESS = "progress"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM}. + * + * Redis + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_REDIS = "redis"; +/** + * Enum value "redshift" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon Redshift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_REDSHIFT = "redshift"; +/** + * Enum value "spanner" for attribute {@link ATTR_DB_SYSTEM}. + * + * Cloud Spanner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_SPANNER = "spanner"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM}. + * + * SQLite + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_SQLITE = "sqlite"; +/** + * Enum value "sybase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Sybase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_SYBASE = "sybase"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM}. + * + * Teradata + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_TERADATA = "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM}. + * + * Trino + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_TRINO = "trino"; +/** + * Enum value "vertica" for attribute {@link ATTR_DB_SYSTEM}. + * + * Vertica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_VERTICA = "vertica"; +/** + * Enum value "actian.ingres" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Actian Ingres](https://www.actian.com/databases/ingres/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_ACTIAN_INGRES = "actian.ingres"; +/** + * Enum value "aws.dynamodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_AWS_DYNAMODB = "aws.dynamodb"; +/** + * Enum value "aws.redshift" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon Redshift](https://aws.amazon.com/redshift/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_AWS_REDSHIFT = "aws.redshift"; +/** + * Enum value "azure.cosmosdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_AZURE_COSMOSDB = "azure.cosmosdb"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Cassandra](https://cassandra.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_CASSANDRA = "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [ClickHouse](https://clickhouse.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_CLICKHOUSE = "clickhouse"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [CockroachDB](https://www.cockroachlabs.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_COCKROACHDB = "cockroachdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Couchbase](https://www.couchbase.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_COUCHBASE = "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache CouchDB](https://couchdb.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_COUCHDB = "couchdb"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Derby](https://db.apache.org/derby/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_DERBY = "derby"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Elasticsearch](https://www.elastic.co/elasticsearch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_ELASTICSEARCH = "elasticsearch"; +/** + * Enum value "firebirdsql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Firebird](https://www.firebirdsql.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_FIREBIRDSQL = "firebirdsql"; +/** + * Enum value "gcp.spanner" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Google Cloud Spanner](https://cloud.google.com/spanner) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_GCP_SPANNER = "gcp.spanner"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Geode](https://geode.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_GEODE = "geode"; +/** + * Enum value "h2database" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [H2 Database](https://h2database.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_H2DATABASE = "h2database"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache HBase](https://hbase.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_HBASE = "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Hive](https://hive.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_HIVE = "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [HyperSQL Database](https://hsqldb.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_HSQLDB = "hsqldb"; +/** + * Enum value "ibm.db2" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Db2](https://www.ibm.com/db2) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_IBM_DB2 = "ibm.db2"; +/** + * Enum value "ibm.informix" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Informix](https://www.ibm.com/products/informix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_IBM_INFORMIX = "ibm.informix"; +/** + * Enum value "ibm.netezza" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Netezza](https://www.ibm.com/products/netezza) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_IBM_NETEZZA = "ibm.netezza"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InfluxDB](https://www.influxdata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_INFLUXDB = "influxdb"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Instant](https://www.instantdb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_INSTANTDB = "instantdb"; +/** + * Enum value "intersystems.cache" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InterSystems Caché](https://www.intersystems.com/products/cache/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_INTERSYSTEMS_CACHE = "intersystems.cache"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Memcached](https://memcached.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_MEMCACHED = "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MongoDB](https://www.mongodb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_MONGODB = "mongodb"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Neo4j](https://neo4j.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_NEO4J = "neo4j"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [OpenSearch](https://opensearch.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_OPENSEARCH = "opensearch"; +/** + * Enum value "oracle.db" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Oracle Database](https://www.oracle.com/database/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_ORACLE_DB = "oracle.db"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * Some other SQL database. Fallback only. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_OTHER_SQL = "other_sql"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Redis](https://redis.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_REDIS = "redis"; +/** + * Enum value "sap.hana" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_SAP_HANA = "sap.hana"; +/** + * Enum value "sap.maxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP MaxDB](https://maxdb.sap.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_SAP_MAXDB = "sap.maxdb"; +/** + * Enum value "softwareag.adabas" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_SOFTWAREAG_ADABAS = "softwareag.adabas"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SQLite](https://www.sqlite.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_SQLITE = "sqlite"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Teradata](https://www.teradata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_TERADATA = "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Trino](https://trino.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_TRINO = "trino"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_DB_USER = 'db.user'; +/** + * Deprecated, use `deployment.environment.name` instead. + * + * @example staging + * @example production + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `deployment.environment.name`. + */ +export const ATTR_DEPLOYMENT_ENVIRONMENT = 'deployment.environment'; +/** + * Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @example staging + * @example production + * + * @note `deployment.environment.name` does not affect the uniqueness constraints defined through + * the `service.namespace`, `service.name` and `service.instance.id` resource attributes. + * This implies that resources carrying the following attribute combinations **MUST** be + * considered to be identifying the same service: + * + * - `service.name=frontend`, `deployment.environment.name=production` + * - `service.name=frontend`, `deployment.environment.name=staging`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEPLOYMENT_ENVIRONMENT_NAME = 'deployment.environment.name'; +/** + * The id of the deployment. + * + * @example 1208 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEPLOYMENT_ID = 'deployment.id'; +/** + * The name of the deployment. + * + * @example deploy my app + * @example deploy-frontend + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEPLOYMENT_NAME = 'deployment.name'; +/** + * The status of the deployment. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEPLOYMENT_STATUS = 'deployment.status'; +/** + * Enum value "failed" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DEPLOYMENT_STATUS_VALUE_FAILED = "failed"; +/** + * Enum value "succeeded" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * succeeded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DEPLOYMENT_STATUS_VALUE_SUCCEEDED = "succeeded"; +/** + * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example destination.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the source side, and when communicating through an intermediary, `destination.address` **SHOULD** represent the destination address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DESTINATION_ADDRESS = 'destination.address'; +/** + * Destination port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DESTINATION_PORT = 'destination.port'; +/** + * A unique identifier representing the device + * + * @example 123456789012345 + * @example 01:23:45:67:89:AB + * + * @note Its value **SHOULD** be identical for all apps on a device and it **SHOULD NOT** change if an app is uninstalled and re-installed. + * However, it might be resettable by the user for all apps on a device. + * Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) **MAY** be used as values. + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * > [!WARNING]> This attribute may contain sensitive (PII) information. 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.> Due to these reasons, this identifier is not recommended for consumer applications and will likely result in rejection from both Google Play and App Store. + * > However, it may be appropriate for specific enterprise scenarios, such as kiosk devices or enterprise-managed devices, with appropriate compliance clearance. + * > Any instrumentation providing this identifier **> MUST**> implement it as an opt-in feature.> See [`app.installation.id`](/docs/registry/attributes/app.md#app-installation-id)> for a more privacy-preserving alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEVICE_ID = 'device.id'; +/** + * The name of the device manufacturer + * + * @example Apple + * @example Samsung + * + * @note The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps **SHOULD** hardcode the value `Apple`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEVICE_MANUFACTURER = 'device.manufacturer'; +/** + * The model identifier for the device + * + * @example iPhone3,4 + * @example SM-G920F + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier'; +/** + * The marketing name for the device model + * + * @example iPhone 6s Plus + * @example Samsung Galaxy S6 + * + * @note It's recommended this value represents a human-readable version of the device model rather than a machine-readable alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEVICE_MODEL_NAME = 'device.model.name'; +/** + * The disk IO operation direction. + * + * @example read + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DISK_IO_DIRECTION = 'disk.io.direction'; +/** + * Enum value "read" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DISK_IO_DIRECTION_VALUE_READ = "read"; +/** + * Enum value "write" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DISK_IO_DIRECTION_VALUE_WRITE = "write"; +/** + * The list of IPv4 or IPv6 addresses resolved during DNS lookup. + * + * @example ["10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DNS_ANSWERS = 'dns.answers'; +/** + * The name being queried. + * + * @example www.example.com + * @example opentelemetry.io + * + * @note The name represents the queried domain name as it appears in the DNS query without any additional normalization. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DNS_QUESTION_NAME = 'dns.question.name'; +/** + * Represents the human-readable identifier of the node/instance to which a request was routed. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ELASTICSEARCH_NODE_NAME = 'elasticsearch.node.name'; +/** + * Unique identifier of an end user in the system. It maybe a username, email address, or other identifier. + * + * @example username + * + * @note Unique identifier of an end user in the system. + * + * > [!Warning] + * > This field contains sensitive (PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ENDUSER_ID = 'enduser.id'; +/** + * Pseudonymous identifier of an end user. This identifier should be a random value that is not directly linked or associated with the end user's actual identity. + * + * @example QdH5CAWJgqVT4rOr0qtumf + * + * @note Pseudonymous identifier of an end user. + * + * > [!Warning] + * > This field contains sensitive (linkable PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ENDUSER_PSEUDO_ID = 'enduser.pseudo.id'; +/** + * Deprecated, use `user.roles` instead. + * + * @example "admin" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `user.roles` instead. + */ +export const ATTR_ENDUSER_ROLE = 'enduser.role'; +/** + * Deprecated, no replacement at this time. + * + * @example "read:message, write:files" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_ENDUSER_SCOPE = 'enduser.scope'; +/** + * A message providing more detail about an error in human-readable form. + * + * @example Unexpected input type: string + * @example The user has exceeded their storage quota + * + * @note `error.message` should provide additional context and detail about an error. + * It is NOT **RECOMMENDED** to duplicate the value of `error.type` in `error.message`. + * It is also NOT **RECOMMENDED** to duplicate the value of `exception.message` in `error.message`. + * + * `error.message` is NOT **RECOMMENDED** for metrics or spans due to its unbounded cardinality and overlap with span status. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ERROR_MESSAGE = 'error.message'; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated The value of this attribute **MUST** now be set as the value of the EventName field on the LogRecord to indicate that the LogRecord represents an Event. + */ +export const ATTR_EVENT_NAME = 'event.name'; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_COLDSTART = 'faas.coldstart'; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @example "0/5 * * * ? *" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_CRON = 'faas.cron'; +/** + * 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. + * + * @example myBucketName + * @example myDbName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection'; +/** + * 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. + * + * @example myFile.txt + * @example myTableName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_DOCUMENT_NAME = 'faas.document.name'; +/** + * Describes the type of the operation that was performed on the data. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_DOCUMENT_OPERATION = 'faas.document.operation'; +/** + * Enum value "delete" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is deleted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_DOCUMENT_OPERATION_VALUE_DELETE = "delete"; +/** + * Enum value "edit" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is modified. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_DOCUMENT_OPERATION_VALUE_EDIT = "edit"; +/** + * Enum value "insert" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When a new object is created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_DOCUMENT_OPERATION_VALUE_INSERT = "insert"; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_DOCUMENT_TIME = 'faas.document.time'; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de + * + * @note - **AWS Lambda:** Use the (full) log stream name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_INSTANCE = 'faas.instance'; +/** + * The invocation ID of the current function invocation. + * + * @example "af9d5aa4-a685-4c5f-a22b-444f80b3cc28" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_INVOCATION_ID = 'faas.invocation_id'; +/** + * The name of the invoked function. + * + * @example "my-function" + * + * @note **SHOULD** be equal to the `faas.name` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_INVOKED_NAME = 'faas.invoked_name'; +/** + * The cloud provider of the invoked function. + * + * @note **SHOULD** be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider'; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_INVOKED_PROVIDER_VALUE_AWS = "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_INVOKED_PROVIDER_VALUE_AZURE = "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_INVOKED_PROVIDER_VALUE_GCP = "gcp"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD = "tencent_cloud"; +/** + * The cloud region of the invoked function. + * + * @example "eu-central-1" + * + * @note **SHOULD** be equal to the `cloud.region` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_INVOKED_REGION = 'faas.invoked_region'; +/** + * The amount of memory available to the serverless function converted to Bytes. + * + * @example 134217728 + * + * @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 (which must be multiplied by 1,048,576). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_MAX_MEMORY = 'faas.max_memory'; +/** + * The name of the single function that this runtime instance executes. + * + * @example my-function + * @example myazurefunctionapp/some-function-name + * + * @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.name`](/docs/general/attributes.md#source-code-attributes) + * span attributes). + * + * For some cloud providers, the above definition is ambiguous. The following + * definition of function name **MUST** be used for this attribute + * (and consequently the span name) for the listed cloud providers/products: + * + * - **Azure:** The full name `/`, i.e., function app name + * followed by a forward slash followed by the function name (this form + * can also be seen in the resource JSON for the function). + * This means that a span attribute **MUST** be used, as an Azure function + * app can host multiple functions that would usually share + * a TracerProvider (see also the `cloud.resource_id` attribute). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_NAME = 'faas.name'; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_TIME = 'faas.time'; +/** + * Type of the trigger which caused this function invocation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_TRIGGER = 'faas.trigger'; +/** + * Enum value "datasource" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A response to some data source operation such as a database or filesystem read/write + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_TRIGGER_VALUE_DATASOURCE = "datasource"; +/** + * Enum value "http" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * To provide an answer to an inbound HTTP request + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_TRIGGER_VALUE_HTTP = "http"; +/** + * Enum value "other" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * If none of the others apply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_TRIGGER_VALUE_OTHER = "other"; +/** + * Enum value "pubsub" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is set to be executed when messages are sent to a messaging system + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_TRIGGER_VALUE_PUBSUB = "pubsub"; +/** + * Enum value "timer" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is scheduled to be executed regularly + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_TRIGGER_VALUE_TIMER = "timer"; +/** + * The immutable version of the function being executed. + * + * @example 26 + * @example pinkfroid-00002 + * + * @note Depending on the cloud provider and platform, use: + * + * - **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + * (an integer represented as a decimal string). + * - **Google Cloud Run (Services):** The [revision](https://cloud.google.com/run/docs/managing/revisions) + * (i.e., the function name plus the revision suffix). + * - **Google Cloud Functions:** The value of the + * [`K_REVISION` environment variable](https://cloud.google.com/run/docs/container-contract#services-env-vars). + * - **Azure Functions:** Not applicable. Do not set this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_VERSION = 'faas.version'; +/** + * The unique identifier for the flag evaluation context. For example, the targeting key. + * + * @example 5157782b-2203-4c80-a857-dbbd5e7761db + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_CONTEXT_ID = 'feature_flag.context.id'; +/** + * Deprecated, use `error.message` instead. + * + * @example Flag `header-color` expected type `string` but found type `number` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `error.message`. + */ +export const ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE = 'feature_flag.evaluation.error.message'; +/** + * Deprecated, use `feature_flag.result.reason` instead. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.reason`. + */ +export const ATTR_FEATURE_FLAG_EVALUATION_REASON = 'feature_flag.evaluation.reason'; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED = "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT = "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED = "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR = "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT = "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE = "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC = "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH = "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN = "unknown"; +/** + * The lookup key of the feature flag. + * + * @example logo-color + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_KEY = 'feature_flag.key'; +/** + * Identifies the feature flag provider. + * + * @example Flag Manager + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_PROVIDER_NAME = 'feature_flag.provider.name'; +/** + * The reason code which shows how a feature flag value was determined. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_RESULT_REASON = 'feature_flag.result.reason'; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_CACHED = "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_DEFAULT = "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_DISABLED = "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_ERROR = "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_SPLIT = "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_STALE = "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_STATIC = "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_TARGETING_MATCH = "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_UNKNOWN = "unknown"; +/** + * The evaluated value of the feature flag. + * + * @example #ff0000 + * @example true + * @example 3 + * + * @note With some feature flag providers, feature flag results can be quite large or contain private or sensitive details. + * Because of this, `feature_flag.result.variant` is often the preferred attribute if it is available. + * + * It may be desirable to redact or otherwise limit the size and scope of `feature_flag.result.value` if possible. + * Because the evaluated flag value is unstructured and may be any type, it is left to the instrumentation author to determine how best to achieve this. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_RESULT_VALUE = 'feature_flag.result.value'; +/** + * A semantic identifier for an evaluated flag value. + * + * @example red + * @example true + * @example on + * + * @note A semantic identifier, commonly referred to as a variant, provides a means + * for referring to a value without including the value itself. This can + * provide additional context for understanding the meaning behind a value. + * For example, the variant `red` maybe be used for the value `#c05543`. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_RESULT_VARIANT = 'feature_flag.result.variant'; +/** + * The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs. + * + * @example proj-1 + * @example ab98sgs + * @example service1/dev + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_SET_ID = 'feature_flag.set.id'; +/** + * Deprecated, use `feature_flag.result.variant` instead. + * + * @example red + * @example true + * @example on + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.variant`. + */ +export const ATTR_FEATURE_FLAG_VARIANT = 'feature_flag.variant'; +/** + * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset. + * + * @example 1 + * @example 01ABCDEF + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_VERSION = 'feature_flag.version'; +/** + * Time when the file was last accessed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_ACCESSED = 'file.accessed'; +/** + * Array of file attributes. + * + * @example ["readonly", "hidden"] + * + * @note Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected for this attribute: `archive`, `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, `write`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_ATTRIBUTES = 'file.attributes'; +/** + * Time when the file attributes or metadata was last changed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note `file.changed` captures the time when any of the file's properties or attributes (including the content) are changed, while `file.modified` captures the timestamp when the file content is modified. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_CHANGED = 'file.changed'; +/** + * Time when the file was created, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_CREATED = 'file.created'; +/** + * Directory where the file is located. It should include the drive letter, when appropriate. + * + * @example /home/user + * @example C:\\Program Files\\MyApp + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_DIRECTORY = 'file.directory'; +/** + * File extension, excluding the leading dot. + * + * @example png + * @example gz + * + * @note When the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_EXTENSION = 'file.extension'; +/** + * Name of the fork. A fork is additional data associated with a filesystem object. + * + * @example Zone.Identifier + * + * @note On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. + * On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: C:\\path\\to\\filename.extension:some_fork_name, and some_fork_name is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_FORK_NAME = 'file.fork_name'; +/** + * Primary Group ID (GID) of the file. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_GROUP_ID = 'file.group.id'; +/** + * Primary group name of the file. + * + * @example users + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_GROUP_NAME = 'file.group.name'; +/** + * Inode representing the file in the filesystem. + * + * @example 256383 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_INODE = 'file.inode'; +/** + * Mode of the file in octal representation. + * + * @example 0640 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_MODE = 'file.mode'; +/** + * Time when the file content was last modified, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_MODIFIED = 'file.modified'; +/** + * Name of the file including the extension, without the directory. + * + * @example example.png + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_NAME = 'file.name'; +/** + * The user ID (UID) or security identifier (SID) of the file owner. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_OWNER_ID = 'file.owner.id'; +/** + * Username of the file owner. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_OWNER_NAME = 'file.owner.name'; +/** + * Full path to the file, including the file name. It should include the drive letter, when appropriate. + * + * @example /home/alice/example.png + * @example C:\\Program Files\\MyApp\\myapp.exe + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_PATH = 'file.path'; +/** + * File size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_SIZE = 'file.size'; +/** + * Path to the target of a symbolic link. + * + * @example /usr/bin/python3 + * + * @note This attribute is only applicable to symbolic links. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH = 'file.symbolic_link.target_path'; +/** + * The container within GCP where the AppHub application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_APPLICATION_CONTAINER = 'gcp.apphub.application.container'; +/** + * The name of the application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_APPLICATION_ID = 'gcp.apphub.application.id'; +/** + * The GCP zone or region where the application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_APPLICATION_LOCATION = 'gcp.apphub.application.location'; +/** + * Criticality of a service indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE = 'gcp.apphub.service.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Environment of a service is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub.service.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_SERVICE_ID = 'gcp.apphub.service.id'; +/** + * Criticality of a workload indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub.workload.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Environment of a workload is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub.workload.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_WORKLOAD_ID = 'gcp.apphub.workload.id'; +/** + * The container within GCP where the AppHub destination application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_CONTAINER = 'gcp.apphub_destination.application.container'; +/** + * The name of the destination application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_ID = 'gcp.apphub_destination.application.id'; +/** + * The GCP zone or region where the destination application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_LOCATION = 'gcp.apphub_destination.application.location'; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE = 'gcp.apphub_destination.service.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Software lifecycle stage of a destination service as defined [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub_destination.service.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the destination service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ID = 'gcp.apphub_destination.service.id'; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub_destination.workload.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Environment of a destination workload is the stage of a software lifecycle as provided in the [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub_destination.workload.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the destination workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ID = 'gcp.apphub_destination.workload.id'; +/** + * Identifies the Google Cloud service for which the official client library is intended. + * + * @example appengine + * @example run + * @example firestore + * @example alloydb + * @example spanner + * + * @note Intended to be a stable identifier for Google Cloud client libraries that is uniform across implementation languages. The value should be derived from the canonical service domain for the service; for example, 'foo.googleapis.com' should result in a value of 'foo'. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_CLIENT_SERVICE = 'gcp.client.service'; +/** + * The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example job-name-xxxx + * @example sample-job-mdw84 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_CLOUD_RUN_JOB_EXECUTION = 'gcp.cloud_run.job.execution'; +/** + * The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example 0 + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX = 'gcp.cloud_run.job.task_index'; +/** + * The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm). + * + * @example my-host1234.example.com + * @example sample-vm.us-west1-b.c.my-project.internal + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_GCE_INSTANCE_HOSTNAME = 'gcp.gce.instance.hostname'; +/** + * The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names). + * + * @example instance-1 + * @example my-vm-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_GCE_INSTANCE_NAME = 'gcp.gce.instance.name'; +/** + * Free-form description of the GenAI agent provided by the application. + * + * @example Helps with math problems + * @example Generates fiction stories + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_AGENT_DESCRIPTION = 'gen_ai.agent.description'; +/** + * The unique identifier of the GenAI agent. + * + * @example asst_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_AGENT_ID = 'gen_ai.agent.id'; +/** + * Human-readable name of the GenAI agent provided by the application. + * + * @example Math Tutor + * @example Fiction Writer + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_AGENT_NAME = 'gen_ai.agent.name'; +/** + * Deprecated, use Event API to report completions contents. + * + * @example [{'role': 'assistant', 'content': 'The capital of France is Paris.'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_GEN_AI_COMPLETION = 'gen_ai.completion'; +/** + * The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation. + * + * @example conv_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_CONVERSATION_ID = 'gen_ai.conversation.id'; +/** + * The data source identifier. + * + * @example H7STPQYOND + * + * @note Data sources are used by AI agents and RAG applications to store grounding data. A data source may be an external database, object store, document collection, website, or any other storage system used by the GenAI agent or application. The `gen_ai.data_source.id` **SHOULD** match the identifier used by the GenAI system rather than a name specific to the external storage, such as a database or object store. Semantic conventions referencing `gen_ai.data_source.id` **MAY** also leverage additional attributes, such as `db.*`, to further identify and describe the data source. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_DATA_SOURCE_ID = 'gen_ai.data_source.id'; +/** + * The number of dimensions the resulting output embeddings should have. + * + * @example 512 + * @example 1024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT = 'gen_ai.embeddings.dimension.count'; +/** + * A free-form explanation for the assigned score provided by the evaluator. + * + * @example The response is factually accurate but lacks sufficient detail to fully address the question. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_EVALUATION_EXPLANATION = 'gen_ai.evaluation.explanation'; +/** + * The name of the evaluation metric used for the GenAI response. + * + * @example Relevance + * @example IntentResolution + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_EVALUATION_NAME = 'gen_ai.evaluation.name'; +/** + * Human readable label for evaluation. + * + * @example relevant + * @example not_relevant + * @example correct + * @example incorrect + * @example pass + * @example fail + * + * @note This attribute provides a human-readable interpretation of the evaluation score produced by an evaluator. For example, a score value of 1 could mean "relevant" in one evaluation system and "not relevant" in another, depending on the scoring range and evaluator. The label **SHOULD** have low cardinality. Possible values depend on the evaluation metric and evaluator used; implementations **SHOULD** document the possible values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_EVALUATION_SCORE_LABEL = 'gen_ai.evaluation.score.label'; +/** + * The evaluation score returned by the evaluator. + * + * @example 4.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_EVALUATION_SCORE_VALUE = 'gen_ai.evaluation.score.value'; +/** + * The chat history provided to the model as an input. + * + * @example [ + * { + * "role": "user", + * "parts": [ + * { + * "type": "text", + * "content": "Weather in Paris?" + * } + * ] + * }, + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "tool_call", + * "id": "call_VSPygqKTWdrhaFErNvMV18Yl", + * "name": "get_weather", + * "arguments": { + * "location": "Paris" + * } + * } + * ] + * }, + * { + * "role": "tool", + * "parts": [ + * { + * "type": "tool_call_response", + * "id": " call_VSPygqKTWdrhaFErNvMV18Yl", + * "result": "rainy, 57°F" + * } + * ] + * } + * ] + * + * @note Instrumentations **MUST** follow [Input messages JSON schema](/docs/gen-ai/gen-ai-input-messages.json). + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Messages **MUST** be provided in the order they were sent to the model. + * Instrumentations **MAY** provide a way for users to filter or truncate + * input messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_INPUT_MESSAGES = 'gen_ai.input.messages'; +/** + * Deprecated, use `gen_ai.output.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.output.type`. + */ +export const ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT = 'gen_ai.openai.request.response_format'; +/** + * Enum value "json_object" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON object response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT = "json_object"; +/** + * Enum value "json_schema" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON schema response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA = "json_schema"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * Text response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT = "text"; +/** + * Deprecated, use `gen_ai.request.seed`. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.request.seed`. + */ +export const ATTR_GEN_AI_OPENAI_REQUEST_SEED = 'gen_ai.openai.request.seed'; +/** + * Deprecated, use `openai.request.service_tier`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.request.service_tier`. + */ +export const ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER = 'gen_ai.openai.request.service_tier'; +/** + * Enum value "auto" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = "auto"; +/** + * Enum value "default" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = "default"; +/** + * Deprecated, use `openai.response.service_tier`. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.service_tier`. + */ +export const ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER = 'gen_ai.openai.response.service_tier'; +/** + * Deprecated, use `openai.response.system_fingerprint`. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.system_fingerprint`. + */ +export const ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'gen_ai.openai.response.system_fingerprint'; +/** + * The name of the operation being performed. + * + * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name'; +/** + * Enum value "chat" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_CHAT = "chat"; +/** + * Enum value "create_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Create GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT = "create_agent"; +/** + * Enum value "embeddings" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS = "embeddings"; +/** + * Enum value "execute_tool" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Execute a tool + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL = "execute_tool"; +/** + * Enum value "generate_content" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_GENERATE_CONTENT = "generate_content"; +/** + * Enum value "invoke_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Invoke GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT = "invoke_agent"; +/** + * Enum value "text_completion" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION = "text_completion"; +/** + * Messages returned by the model where each message represents a specific model response (choice, candidate). + * + * @example [ + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "text", + * "content": "The weather in Paris is currently rainy with a temperature of 57°F." + * } + * ], + * "finish_reason": "stop" + * } + * ] + * + * @note Instrumentations **MUST** follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json) + * + * Each message represents a single output choice/candidate generated by + * the model. Each message corresponds to exactly one generation + * (choice/candidate) and vice versa - one choice cannot be split across + * multiple messages or one message cannot contain parts from multiple choices. + * + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * output messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_OUTPUT_MESSAGES = 'gen_ai.output.messages'; +/** + * Represents the content type requested by the client. + * + * @note This attribute **SHOULD** be used when the client requests output of a specific type. The model may return zero or more outputs of this type. + * This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file. + * Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_OUTPUT_TYPE = 'gen_ai.output.type'; +/** + * Enum value "image" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Image + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OUTPUT_TYPE_VALUE_IMAGE = "image"; +/** + * Enum value "json" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * JSON object with known or unknown schema + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OUTPUT_TYPE_VALUE_JSON = "json"; +/** + * Enum value "speech" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Speech + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OUTPUT_TYPE_VALUE_SPEECH = "speech"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Plain text + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OUTPUT_TYPE_VALUE_TEXT = "text"; +/** + * Deprecated, use Event API to report prompt contents. + * + * @example [{'role': 'user', 'content': 'What is the capital of France?'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_GEN_AI_PROMPT = 'gen_ai.prompt'; +/** + * The name of the prompt that uniquely identifies it. + * + * @example analyze-code + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_PROMPT_NAME = 'gen_ai.prompt.name'; +/** + * The Generative AI provider as identified by the client or server instrumentation. + * + * @note The attribute **SHOULD** be set based on the instrumentation's best + * knowledge and may differ from the actual model provider. + * + * Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms + * are accessible using the OpenAI REST API and corresponding client libraries, + * but may proxy or host models from different providers. + * + * The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address` + * attributes may help identify the actual system in use. + * + * The `gen_ai.provider.name` attribute acts as a discriminator that + * identifies the GenAI telemetry format flavor specific to that provider + * within GenAI semantic conventions. + * It **SHOULD** be set consistently with provider-specific attributes and signals. + * For example, GenAI spans, metrics, and events related to AWS Bedrock + * should have the `gen_ai.provider.name` set to `aws.bedrock` and include + * applicable `aws.bedrock.*` attributes and are not expected to include + * `openai.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_PROVIDER_NAME = 'gen_ai.provider.name'; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Anthropic](https://www.anthropic.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_ANTHROPIC = "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [AWS Bedrock](https://aws.amazon.com/bedrock) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_AWS_BEDROCK = "aws.bedrock"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_INFERENCE = "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_OPENAI = "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Cohere](https://cohere.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_COHERE = "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [DeepSeek](https://www.deepseek.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_DEEPSEEK = "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Gemini](https://cloud.google.com/products/gemini) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEMINI = "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEN_AI = "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Vertex AI](https://cloud.google.com/vertex-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_GCP_VERTEX_AI = "gcp.vertex_ai"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Groq](https://groq.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_GROQ = "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_IBM_WATSONX_AI = "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Mistral AI](https://mistral.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_MISTRAL_AI = "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [OpenAI](https://openai.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_OPENAI = "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Perplexity](https://www.perplexity.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_PERPLEXITY = "perplexity"; +/** + * Enum value "x_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [xAI](https://x.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_X_AI = "x_ai"; +/** + * The target number of candidate completions to return. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_CHOICE_COUNT = 'gen_ai.request.choice.count'; +/** + * The encoding formats requested in an embeddings operation, if specified. + * + * @example ["base64"] + * @example ["float", "binary"] + * + * @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = 'gen_ai.request.encoding_formats'; +/** + * The frequency penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = 'gen_ai.request.frequency_penalty'; +/** + * The maximum number of tokens the model generates for a request. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_MAX_TOKENS = 'gen_ai.request.max_tokens'; +/** + * The name of the GenAI model a request is being made to. + * + * @example "gpt-4" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model'; +/** + * The presence penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty'; +/** + * Requests with same seed value more likely to return same result. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_SEED = 'gen_ai.request.seed'; +/** + * List of sequences that the model will use to stop generating further tokens. + * + * @example ["forest", "lived"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = 'gen_ai.request.stop_sequences'; +/** + * The temperature setting for the GenAI request. + * + * @example 0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_TEMPERATURE = 'gen_ai.request.temperature'; +/** + * The top_k sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_TOP_K = 'gen_ai.request.top_k'; +/** + * The top_p sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_TOP_P = 'gen_ai.request.top_p'; +/** + * Array of reasons the model stopped generating tokens, corresponding to each generation received. + * + * @example ["stop"] + * @example ["stop", "length"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_RESPONSE_FINISH_REASONS = 'gen_ai.response.finish_reasons'; +/** + * The unique identifier for the completion. + * + * @example chatcmpl-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_RESPONSE_ID = 'gen_ai.response.id'; +/** + * The name of the model that generated the response. + * + * @example gpt-4-0613 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model'; +/** + * Deprecated, use `gen_ai.provider.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.provider.name`. + */ +export const ATTR_GEN_AI_SYSTEM = 'gen_ai.system'; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Anthropic + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_ANTHROPIC = "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * AWS Bedrock + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_AWS_BEDROCK = "aws.bedrock"; +/** + * Enum value "az.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.inference`. + */ +export const GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE = "az.ai.inference"; +/** + * Enum value "az.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.openai`. + */ +export const GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI = "az.ai.openai"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_AZURE_AI_INFERENCE = "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_AZURE_AI_OPENAI = "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Cohere + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_COHERE = "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * DeepSeek + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_DEEPSEEK = "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_GCP_GEMINI = "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_GCP_GEN_AI = "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_GCP_VERTEX_AI = "gcp.vertex_ai"; +/** + * Enum value "gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.gemini`. + */ +export const GEN_AI_SYSTEM_VALUE_GEMINI = "gemini"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Groq + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_GROQ = "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * IBM Watsonx AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI = "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Mistral AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_MISTRAL_AI = "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_OPENAI = "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Perplexity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_PERPLEXITY = "perplexity"; +/** + * Enum value "vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.vertex_ai`. + */ +export const GEN_AI_SYSTEM_VALUE_VERTEX_AI = "vertex_ai"; +/** + * Enum value "xai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * xAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_XAI = "xai"; +/** + * The system message or instructions provided to the GenAI model separately from the chat history. + * + * @example [ + * { + * "type": "text", + * "content": "You are an Agent that greet users, always use greetings tool to respond" + * } + * ] + * + * @example [ + * { + * "type": "text", + * "content": "You are a language translator." + * }, + * { + * "type": "text", + * "content": "Your mission is to translate text in English to French." + * } + * ] + * + * @note This attribute **SHOULD** be used when the corresponding provider or API + * allows to provide system instructions or messages separately from the + * chat history. + * + * Instructions that are part of the chat history **SHOULD** be recorded in + * `gen_ai.input.messages` attribute instead. + * + * Instrumentations **MUST** follow [System instructions JSON schema](/docs/gen-ai/gen-ai-system-instructions.json). + * + * When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * system instructions. + * + * > [!Warning] + * > This attribute may contain sensitive information. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_SYSTEM_INSTRUCTIONS = 'gen_ai.system_instructions'; +/** + * The type of token being counted. + * + * @example input + * @example output + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOKEN_TYPE = 'gen_ai.token.type'; +/** + * Enum value "input" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Input tokens (prompt, input, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_TOKEN_TYPE_VALUE_INPUT = "input"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `output`. + */ +export const GEN_AI_TOKEN_TYPE_VALUE_COMPLETION = "output"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_TOKEN_TYPE_VALUE_OUTPUT = "output"; +/** + * Parameters passed to the tool call. + * + * @example { + * "location": "San Francisco?", + * "date": "2025-10-01" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_CALL_ARGUMENTS = 'gen_ai.tool.call.arguments'; +/** + * The tool call identifier. + * + * @example call_mszuSIzqtI65i1wAUOE8w5H4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_CALL_ID = 'gen_ai.tool.call.id'; +/** + * The result returned by the tool call (if any and if execution was successful). + * + * @example { + * "temperature_range": { + * "high": 75, + * "low": 60 + * }, + * "conditions": "sunny" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_CALL_RESULT = 'gen_ai.tool.call.result'; +/** + * The list of source system tool definitions available to the GenAI agent or model. + * + * @example [ + * { + * "type": "function", + * "name": "get_current_weather", + * "description": "Get the current weather in a given location", + * "parameters": { + * "type": "object", + * "properties": { + * "location": { + * "type": "string", + * "description": "The city and state, e.g. San Francisco, CA" + * }, + * "unit": { + * "type": "string", + * "enum": [ + * "celsius", + * "fahrenheit" + * ] + * } + * }, + * "required": [ + * "location", + * "unit" + * ] + * } + * } + * ] + * + * @note The value of this attribute matches source system tool definition format. + * + * It's expected to be an array of objects where each object represents a tool definition. In case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an array. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Since this attribute could be large, it's NOT **RECOMMENDED** to populate + * it by default. Instrumentations **MAY** provide a way to enable + * populating this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_DEFINITIONS = 'gen_ai.tool.definitions'; +/** + * The tool description. + * + * @example Multiply two numbers + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_DESCRIPTION = 'gen_ai.tool.description'; +/** + * Name of the tool utilized by the agent. + * + * @example Flights + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_NAME = 'gen_ai.tool.name'; +/** + * Type of the tool utilized by the agent + * + * @example function + * @example extension + * @example datastore + * + * @note Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems. + * Agent-side operations involve actions that are performed by the agent on the server or within the agent's controlled environment. + * Function: A tool executed on the client-side, where the agent generates parameters for a predefined function, and the client executes the logic. + * Client-side operations are actions taken on the user's end or within the client application. + * Datastore: A tool used by the agent to access and query structured or unstructured external data for retrieval-augmented tasks or knowledge updates. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_TYPE = 'gen_ai.tool.type'; +/** + * Deprecated, use `gen_ai.usage.output_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.output_tokens`. + */ +export const ATTR_GEN_AI_USAGE_COMPLETION_TOKENS = 'gen_ai.usage.completion_tokens'; +/** + * The number of tokens used in the GenAI input (prompt). + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens'; +/** + * The number of tokens used in the GenAI response (completion). + * + * @example 180 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens'; +/** + * Deprecated, use `gen_ai.usage.input_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.input_tokens`. + */ +export const ATTR_GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens'; +/** + * Two-letter code representing continent’s name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_CONTINENT_CODE = 'geo.continent.code'; +/** + * Enum value "AF" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Africa + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_AF = "AF"; +/** + * Enum value "AN" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Antarctica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_AN = "AN"; +/** + * Enum value "AS" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Asia + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_AS = "AS"; +/** + * Enum value "EU" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Europe + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_EU = "EU"; +/** + * Enum value "NA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * North America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_NA = "NA"; +/** + * Enum value "OC" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Oceania + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_OC = "OC"; +/** + * Enum value "SA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * South America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_SA = "SA"; +/** + * Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)). + * + * @example CA + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_COUNTRY_ISO_CODE = 'geo.country.iso_code'; +/** + * Locality name. Represents the name of a city, town, village, or similar populated place. + * + * @example Montreal + * @example Berlin + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_LOCALITY_NAME = 'geo.locality.name'; +/** + * Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example 45.505918 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_LOCATION_LAT = 'geo.location.lat'; +/** + * Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example -73.61483 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_LOCATION_LON = 'geo.location.lon'; +/** + * Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. + * + * @example 94040 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_POSTAL_CODE = 'geo.postal_code'; +/** + * Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)). + * + * @example CA-QC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_REGION_ISO_CODE = 'geo.region.iso_code'; +/** + * The type of memory. + * + * @example other + * @example stack + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GO_MEMORY_TYPE = 'go.memory.type'; +/** + * Enum value "other" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory used by the Go runtime, excluding other categories of memory usage described in this enumeration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GO_MEMORY_TYPE_VALUE_OTHER = "other"; +/** + * Enum value "stack" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GO_MEMORY_TYPE_VALUE_STACK = "stack"; +/** + * The GraphQL document being executed. + * + * @example "query findBookById { bookById(id: ?) { name } }" + * + * @note The value may be sanitized to exclude sensitive information. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GRAPHQL_DOCUMENT = 'graphql.document'; +/** + * The name of the operation being executed. + * + * @example "findBookById" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GRAPHQL_OPERATION_NAME = 'graphql.operation.name'; +/** + * The type of the operation being executed. + * + * @example query + * @example mutation + * @example subscription + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GRAPHQL_OPERATION_TYPE = 'graphql.operation.type'; +/** + * Enum value "mutation" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL mutation + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GRAPHQL_OPERATION_TYPE_VALUE_MUTATION = "mutation"; +/** + * Enum value "query" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL query + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GRAPHQL_OPERATION_TYPE_VALUE_QUERY = "query"; +/** + * Enum value "subscription" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL subscription + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION = "subscription"; +/** + * Unique identifier for the application + * + * @example 2daa2797-e42b-4624-9322-ec3f968df4da + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HEROKU_APP_ID = 'heroku.app.id'; +/** + * Commit hash for the current release + * + * @example e6134959463efd8966b20e75b913cafe3f5ec + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HEROKU_RELEASE_COMMIT = 'heroku.release.commit'; +/** + * Time and date the release was created + * + * @example 2022-10-23T18:00:42Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP = 'heroku.release.creation_timestamp'; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_ARCH = 'host.arch'; +/** + * Enum value "amd64" for attribute {@link ATTR_HOST_ARCH}. + * + * AMD64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_AMD64 = "amd64"; +/** + * Enum value "arm32" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM32 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_ARM32 = "arm32"; +/** + * Enum value "arm64" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_ARM64 = "arm64"; +/** + * Enum value "ia64" for attribute {@link ATTR_HOST_ARCH}. + * + * Itanium + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_IA64 = "ia64"; +/** + * Enum value "ppc32" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_PPC32 = "ppc32"; +/** + * Enum value "ppc64" for attribute {@link ATTR_HOST_ARCH}. + * + * 64-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_PPC64 = "ppc64"; +/** + * Enum value "s390x" for attribute {@link ATTR_HOST_ARCH}. + * + * IBM z/Architecture + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_S390X = "s390x"; +/** + * Enum value "x86" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit x86 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_X86 = "x86"; +/** + * The amount of level 2 memory cache available to the processor (in Bytes). + * + * @example 12288000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_CACHE_L2_SIZE = 'host.cpu.cache.l2.size'; +/** + * Family or generation of the CPU. + * + * @example 6 + * @example PA-RISC 1.1e + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_FAMILY = 'host.cpu.family'; +/** + * Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family. + * + * @example 6 + * @example 9000/778/B180L + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_MODEL_ID = 'host.cpu.model.id'; +/** + * Model designation of the processor. + * + * @example 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_MODEL_NAME = 'host.cpu.model.name'; +/** + * Stepping or core revisions. + * + * @example 1 + * @example r1p1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_STEPPING = 'host.cpu.stepping'; +/** + * Processor manufacturer identifier. A maximum 12-character string. + * + * @example GenuineIntel + * + * @note [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_VENDOR_ID = 'host.cpu.vendor.id'; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_ID = 'host.id'; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_ID = 'host.image.id'; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_NAME = 'host.image.name'; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_VERSION = 'host.image.version'; +/** + * Available IP addresses of the host, excluding loopback interfaces. + * + * @example ["192.168.1.140", "fe80::abc2:4a28:737a:609e"] + * + * @note IPv4 Addresses **MUST** be specified in dotted-quad notation. IPv6 addresses **MUST** be specified in the [RFC 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IP = 'host.ip'; +/** + * Available MAC addresses of the host, excluding loopback interfaces. + * + * @example ["AC-DE-48-23-45-67", "AC-DE-48-23-45-67-01-9F"] + * + * @note MAC Addresses **MUST** be represented in [IEEE RA hexadecimal form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): as hyphen-separated octets in uppercase hexadecimal form from most to least significant. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_MAC = 'host.mac'; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_NAME = 'host.name'; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_TYPE = 'host.type'; +/** + * Deprecated, use `client.address` instead. + * + * @example "83.164.160.102" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `client.address`. + */ +export const ATTR_HTTP_CLIENT_IP = 'http.client_ip'; +/** + * State of the HTTP connection in the HTTP connection pool. + * + * @example active + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HTTP_CONNECTION_STATE = 'http.connection.state'; +/** + * Enum value "active" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * active state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_CONNECTION_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "idle" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * idle state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_CONNECTION_STATE_VALUE_IDLE = "idle"; +/** + * Deprecated, use `network.protocol.name` and `network.protocol.version` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split into `network.protocol.name` and `network.protocol.version` + */ +export const ATTR_HTTP_FLAVOR = 'http.flavor'; +/** + * Enum value "1.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_HTTP_1_0 = "1.0"; +/** + * Enum value "1.1" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_HTTP_1_1 = "1.1"; +/** + * Enum value "2.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_HTTP_2_0 = "2.0"; +/** + * Enum value "3.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/3 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_HTTP_3_0 = "3.0"; +/** + * Enum value "QUIC" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * QUIC protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_QUIC = "QUIC"; +/** + * Enum value "SPDY" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * SPDY protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_SPDY = "SPDY"; +/** + * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage. + * + * @example www.example.org + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage. + */ +export const ATTR_HTTP_HOST = 'http.host'; +/** + * Deprecated, use `http.request.method` instead. + * + * @example GET + * @example POST + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.method`. + */ +export const ATTR_HTTP_METHOD = 'http.method'; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HTTP_REQUEST_BODY_SIZE = 'http.request.body.size'; +/** + * Enum value "QUERY" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * QUERY method. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_REQUEST_METHOD_VALUE_QUERY = "QUERY"; +/** + * The total size of the request in bytes. This should be the total number of bytes sent over the wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request body if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HTTP_REQUEST_SIZE = 'http.request.size'; +/** + * Deprecated, use `http.request.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.header.content-length`. + */ +export const ATTR_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length'; +/** + * Deprecated, use `http.request.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.body.size`. + */ +export const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed'; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HTTP_RESPONSE_BODY_SIZE = 'http.response.body.size'; +/** + * The total size of the response in bytes. This should be the total number of bytes sent over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and response body and trailers if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HTTP_RESPONSE_SIZE = 'http.response.size'; +/** + * Deprecated, use `http.response.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.header.content-length`. + */ +export const ATTR_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length'; +/** + * Deprecated, use `http.response.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.body.size`. + */ +export const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed'; +/** + * Deprecated, use `url.scheme` instead. + * + * @example http + * @example https + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.scheme`. + */ +export const ATTR_HTTP_SCHEME = 'http.scheme'; +/** + * Deprecated, use `server.address` instead. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export const ATTR_HTTP_SERVER_NAME = 'http.server_name'; +/** + * Deprecated, use `http.response.status_code` instead. + * + * @example 200 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.status_code`. + */ +export const ATTR_HTTP_STATUS_CODE = 'http.status_code'; +/** + * Deprecated, use `url.path` and `url.query` instead. + * + * @example /search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `url.path` and `url.query`. + */ +export const ATTR_HTTP_TARGET = 'http.target'; +/** + * Deprecated, use `url.full` instead. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.full`. + */ +export const ATTR_HTTP_URL = 'http.url'; +/** + * Deprecated, use `user_agent.original` instead. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `user_agent.original`. + */ +export const ATTR_HTTP_USER_AGENT = 'http.user_agent'; +/** + * Design capacity in Watts-hours or Amper-hours + * + * @example 9.3Ah + * @example 50Wh + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_BATTERY_CAPACITY = 'hw.battery.capacity'; +/** + * Battery [chemistry](https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html), e.g. Lithium-Ion, Nickel-Cadmium, etc. + * + * @example Li-ion + * @example NiMH + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_BATTERY_CHEMISTRY = 'hw.battery.chemistry'; +/** + * The current state of the battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_BATTERY_STATE = 'hw.battery.state'; +/** + * Enum value "charging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Charging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_BATTERY_STATE_VALUE_CHARGING = "charging"; +/** + * Enum value "discharging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Discharging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_BATTERY_STATE_VALUE_DISCHARGING = "discharging"; +/** + * BIOS version of the hardware component + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_BIOS_VERSION = 'hw.bios_version'; +/** + * Driver version for the hardware component + * + * @example 10.2.1-3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_DRIVER_VERSION = 'hw.driver_version'; +/** + * Type of the enclosure (useful for modular systems) + * + * @example Computer + * @example Storage + * @example Switch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_ENCLOSURE_TYPE = 'hw.enclosure.type'; +/** + * Firmware version of the hardware component + * + * @example 2.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_FIRMWARE_VERSION = 'hw.firmware_version'; +/** + * Type of task the GPU is performing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_GPU_TASK = 'hw.gpu.task'; +/** + * Enum value "decoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Decoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_GPU_TASK_VALUE_DECODER = "decoder"; +/** + * Enum value "encoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Encoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_GPU_TASK_VALUE_ENCODER = "encoder"; +/** + * Enum value "general" for attribute {@link ATTR_HW_GPU_TASK}. + * + * General + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_GPU_TASK_VALUE_GENERAL = "general"; +/** + * An identifier for the hardware component, unique within the monitored host + * + * @example win32battery_battery_testsysa33_1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_ID = 'hw.id'; +/** + * Type of limit for hardware components + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_LIMIT_TYPE = 'hw.limit_type'; +/** + * Enum value "critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_CRITICAL = "critical"; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_DEGRADED = "degraded"; +/** + * Enum value "high.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_HIGH_CRITICAL = "high.critical"; +/** + * Enum value "high.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_HIGH_DEGRADED = "high.degraded"; +/** + * Enum value "low.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_LOW_CRITICAL = "low.critical"; +/** + * Enum value "low.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_LOW_DEGRADED = "low.degraded"; +/** + * Enum value "max" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Maximum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_MAX = "max"; +/** + * Enum value "throttled" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Throttled + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_THROTTLED = "throttled"; +/** + * Enum value "turbo" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Turbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_TURBO = "turbo"; +/** + * RAID Level of the logical disk + * + * @example RAID0+1 + * @example RAID5 + * @example RAID10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_LOGICAL_DISK_RAID_LEVEL = 'hw.logical_disk.raid_level'; +/** + * State of the logical disk space usage + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_LOGICAL_DISK_STATE = 'hw.logical_disk.state'; +/** + * Enum value "free" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Free + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LOGICAL_DISK_STATE_VALUE_FREE = "free"; +/** + * Enum value "used" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Used + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LOGICAL_DISK_STATE_VALUE_USED = "used"; +/** + * Type of the memory module + * + * @example DDR4 + * @example DDR5 + * @example LPDDR5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_MEMORY_TYPE = 'hw.memory.type'; +/** + * Descriptive model name of the hardware component + * + * @example PERC H740P + * @example Intel(R) Core(TM) i7-10700K + * @example Dell XPS 15 Battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_MODEL = 'hw.model'; +/** + * An easily-recognizable name for the hardware component + * + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_NAME = 'hw.name'; +/** + * Logical addresses of the adapter (e.g. IP address, or WWPN) + * + * @example ["172.16.8.21", "57.11.193.42"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_NETWORK_LOGICAL_ADDRESSES = 'hw.network.logical_addresses'; +/** + * Physical address of the adapter (e.g. MAC address, or WWNN) + * + * @example 00-90-F5-E9-7B-36 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_NETWORK_PHYSICAL_ADDRESS = 'hw.network.physical_address'; +/** + * Unique identifier of the parent component (typically the `hw.id` attribute of the enclosure, or disk controller) + * + * @example dellStorage_perc_0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_PARENT = 'hw.parent'; +/** + * [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute of the physical disk + * + * @example Spin Retry Count + * @example Seek Error Rate + * @example Raw Read Error Rate + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_PHYSICAL_DISK_SMART_ATTRIBUTE = 'hw.physical_disk.smart_attribute'; +/** + * State of the physical disk endurance utilization + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_PHYSICAL_DISK_STATE = 'hw.physical_disk.state'; +/** + * Enum value "remaining" for attribute {@link ATTR_HW_PHYSICAL_DISK_STATE}. + * + * Remaining + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_PHYSICAL_DISK_STATE_VALUE_REMAINING = "remaining"; +/** + * Type of the physical disk + * + * @example HDD + * @example SSD + * @example 10K + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_PHYSICAL_DISK_TYPE = 'hw.physical_disk.type'; +/** + * Location of the sensor + * + * @example cpu0 + * @example ps1 + * @example INLET + * @example CPU0_DIE + * @example AMBIENT + * @example MOTHERBOARD + * @example PS0 V3_3 + * @example MAIN_12V + * @example CPU_VCORE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_SENSOR_LOCATION = 'hw.sensor_location'; +/** + * Serial number of the hardware component + * + * @example CNFCP0123456789 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_SERIAL_NUMBER = 'hw.serial_number'; +/** + * The current state of the component + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_STATE = 'hw.state'; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_STATE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_STATE_VALUE_DEGRADED = "degraded"; +/** + * Enum value "failed" for attribute {@link ATTR_HW_STATE}. + * + * Failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_STATE_VALUE_FAILED = "failed"; +/** + * Enum value "needs_cleaning" for attribute {@link ATTR_HW_STATE}. + * + * Needs Cleaning + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_STATE_VALUE_NEEDS_CLEANING = "needs_cleaning"; +/** + * Enum value "ok" for attribute {@link ATTR_HW_STATE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_STATE_VALUE_OK = "ok"; +/** + * Enum value "predicted_failure" for attribute {@link ATTR_HW_STATE}. + * + * Predicted Failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_STATE_VALUE_PREDICTED_FAILURE = "predicted_failure"; +/** + * Type of tape drive operation + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_TAPE_DRIVE_OPERATION_TYPE = 'hw.tape_drive.operation_type'; +/** + * Enum value "clean" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Clean + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_CLEAN = "clean"; +/** + * Enum value "mount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Mount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_MOUNT = "mount"; +/** + * Enum value "unmount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Unmount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_UNMOUNT = "unmount"; +/** + * Type of the component + * + * @note Describes the category of the hardware component for which `hw.state` is being reported. For example, `hw.type=temperature` along with `hw.state=degraded` would indicate that the temperature of the hardware component has been reported as `degraded`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_TYPE = 'hw.type'; +/** + * Enum value "battery" for attribute {@link ATTR_HW_TYPE}. + * + * Battery + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_BATTERY = "battery"; +/** + * Enum value "cpu" for attribute {@link ATTR_HW_TYPE}. + * + * CPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_CPU = "cpu"; +/** + * Enum value "disk_controller" for attribute {@link ATTR_HW_TYPE}. + * + * Disk controller + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_DISK_CONTROLLER = "disk_controller"; +/** + * Enum value "enclosure" for attribute {@link ATTR_HW_TYPE}. + * + * Enclosure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_ENCLOSURE = "enclosure"; +/** + * Enum value "fan" for attribute {@link ATTR_HW_TYPE}. + * + * Fan + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_FAN = "fan"; +/** + * Enum value "gpu" for attribute {@link ATTR_HW_TYPE}. + * + * GPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_GPU = "gpu"; +/** + * Enum value "logical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Logical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_LOGICAL_DISK = "logical_disk"; +/** + * Enum value "memory" for attribute {@link ATTR_HW_TYPE}. + * + * Memory + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_MEMORY = "memory"; +/** + * Enum value "network" for attribute {@link ATTR_HW_TYPE}. + * + * Network + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_NETWORK = "network"; +/** + * Enum value "physical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Physical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_PHYSICAL_DISK = "physical_disk"; +/** + * Enum value "power_supply" for attribute {@link ATTR_HW_TYPE}. + * + * Power supply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_POWER_SUPPLY = "power_supply"; +/** + * Enum value "tape_drive" for attribute {@link ATTR_HW_TYPE}. + * + * Tape drive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_TAPE_DRIVE = "tape_drive"; +/** + * Enum value "temperature" for attribute {@link ATTR_HW_TYPE}. + * + * Temperature + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_TEMPERATURE = "temperature"; +/** + * Enum value "voltage" for attribute {@link ATTR_HW_TYPE}. + * + * Voltage + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_VOLTAGE = "voltage"; +/** + * Vendor name of the hardware component + * + * @example Dell + * @example HP + * @example Intel + * @example AMD + * @example LSI + * @example Lenovo + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_VENDOR = 'hw.vendor'; +/** + * This attribute represents the state of the application. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_IOS_APP_STATE = 'ios.app.state'; +/** + * Enum value "active" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_APP_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_APP_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_APP_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_APP_STATE_VALUE_INACTIVE = "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_APP_STATE_VALUE_TERMINATE = "terminate"; +/** + * Deprecated. Use the `ios.app.state` attribute. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `ios.app.state`. + */ +export const ATTR_IOS_STATE = 'ios.state'; +/** + * Enum value "active" for attribute {@link ATTR_IOS_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_STATE_VALUE_INACTIVE = "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_STATE_VALUE_TERMINATE = "terminate"; +/** + * Protocol version, as specified in the `jsonrpc` property of the request and its corresponding response. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_JSONRPC_PROTOCOL_VERSION = 'jsonrpc.protocol.version'; +/** + * A string representation of the `id` property of the request and its corresponding response. + * + * @example 10 + * @example request-7 + * + * @note Under the [JSON-RPC specification](https://www.jsonrpc.org/specification), the `id` property may be a string, number, null, or omitted entirely. When omitted, the request is treated as a notification. Using `null` is not equivalent to omitting the `id`, but it is discouraged. + * Instrumentations **SHOULD NOT** capture this attribute when the `id` is `null` or omitted. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_JSONRPC_REQUEST_ID = 'jsonrpc.request.id'; +/** + * Name of the buffer pool. + * + * @example mapped + * @example direct + * + * @note Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_JVM_BUFFER_POOL_NAME = 'jvm.buffer.pool.name'; +/** + * Name of the garbage collector cause. + * + * @example System.gc() + * @example Allocation Failure + * + * @note Garbage collector cause is generally obtained via [GarbageCollectionNotificationInfo#getGcCause()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcCause()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_JVM_GC_CAUSE = 'jvm.gc.cause'; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name'; +/** + * A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note K8s doesn't have support for obtaining a cluster ID. If this is ever + * added, we will recommend collecting the `k8s.cluster.uid` through the + * official APIs. In the meantime, we are able to use the `uid` of the + * `kube-system` namespace as a proxy for cluster ID. Read on for the + * rationale. + * + * Every object created in a K8s cluster is assigned a distinct UID. The + * `kube-system` namespace is used by Kubernetes itself and will exist + * for the lifetime of the cluster. Using the `uid` of the `kube-system` + * namespace is a reasonable proxy for the K8s ClusterID as it will only + * change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are + * UUIDs as standardized by + * [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html). + * Which states: + * + * > If generated according to one of the mechanisms defined in Rec. + * > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be + * > different from all other UUIDs generated before 3603 A.D., or is + * > extremely likely to be different (depending on the mechanism chosen). + * + * Therefore, UIDs between clusters should be extremely unlikely to + * conflict. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CLUSTER_UID = 'k8s.cluster.uid'; +/** + * The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`). + * + * @example redis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CONTAINER_NAME = 'k8s.container.name'; +/** + * Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart_count'; +/** + * Last terminated reason of the Container. + * + * @example Evicted + * @example Error + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON = 'k8s.container.status.last_terminated_reason'; +/** + * The reason for the container state. Corresponds to the `reason` field of the: [K8s ContainerStateWaiting](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core) or [K8s ContainerStateTerminated](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core) + * + * @example ContainerCreating + * @example CrashLoopBackOff + * @example CreateContainerConfigError + * @example ErrImagePull + * @example ImagePullBackOff + * @example OOMKilled + * @example Completed + * @example Error + * @example ContainerCannotRun + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason'; +/** + * Enum value "Completed" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container has completed execution. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_COMPLETED = "Completed"; +/** + * Enum value "ContainerCannotRun" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container cannot run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CANNOT_RUN = "ContainerCannotRun"; +/** + * Enum value "ContainerCreating" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is being created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CREATING = "ContainerCreating"; +/** + * Enum value "CrashLoopBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is in a crash loop back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_CRASH_LOOP_BACK_OFF = "CrashLoopBackOff"; +/** + * Enum value "CreateContainerConfigError" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error creating the container configuration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_CREATE_CONTAINER_CONFIG_ERROR = "CreateContainerConfigError"; +/** + * Enum value "ErrImagePull" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error pulling the container image. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_ERR_IMAGE_PULL = "ErrImagePull"; +/** + * Enum value "Error" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error with the container. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_ERROR = "Error"; +/** + * Enum value "ImagePullBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container image pull is in back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_IMAGE_PULL_BACK_OFF = "ImagePullBackOff"; +/** + * Enum value "OOMKilled" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container was killed due to out of memory. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_OOM_KILLED = "OOMKilled"; +/** + * The state of the container. [K8s ContainerState](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core) + * + * @example terminated + * @example running + * @example waiting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state'; +/** + * Enum value "running" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_STATE_VALUE_RUNNING = "running"; +/** + * Enum value "terminated" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container has terminated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_STATE_VALUE_TERMINATED = "terminated"; +/** + * Enum value "waiting" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is waiting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_STATE_VALUE_WAITING = "waiting"; +/** + * The cronjob annotation placed on the CronJob, the `` being the annotation name, the value being the annotation value. + * + * @example 4 + * @example + * + * @note Examples: + * + * - An annotation `retries` with value `4` **SHOULD** be recorded as the + * `k8s.cronjob.annotation.retries` attribute with value `"4"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CRONJOB_ANNOTATION = (key) => `k8s.cronjob.annotation.${key}`; +/** + * The label placed on the CronJob, the `` being the label name, the value being the label value. + * + * @example weekly + * @example + * + * @note Examples: + * + * - A label `type` with value `weekly` **SHOULD** be recorded as the + * `k8s.cronjob.label.type` attribute with value `"weekly"`. + * - A label `automated` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CRONJOB_LABEL = (key) => `k8s.cronjob.label.${key}`; +/** + * The name of the CronJob. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CRONJOB_NAME = 'k8s.cronjob.name'; +/** + * The UID of the CronJob. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CRONJOB_UID = 'k8s.cronjob.uid'; +/** + * The annotation placed on the DaemonSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.daemonset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DAEMONSET_ANNOTATION = (key) => `k8s.daemonset.annotation.${key}`; +/** + * The label placed on the DaemonSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.daemonset.label.app` attribute with value `"guestbook"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DAEMONSET_LABEL = (key) => `k8s.daemonset.label.${key}`; +/** + * The name of the DaemonSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DAEMONSET_NAME = 'k8s.daemonset.name'; +/** + * The UID of the DaemonSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DAEMONSET_UID = 'k8s.daemonset.uid'; +/** + * The annotation placed on the Deployment, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.deployment.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DEPLOYMENT_ANNOTATION = (key) => `k8s.deployment.annotation.${key}`; +/** + * The label placed on the Deployment, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.deployment.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DEPLOYMENT_LABEL = (key) => `k8s.deployment.label.${key}`; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name'; +/** + * The UID of the Deployment. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid'; +/** + * The type of metric source for the horizontal pod autoscaler. + * + * @example Resource + * @example ContainerResource + * + * @note This attribute reflects the `type` field of spec.metrics[] in the HPA. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_METRIC_TYPE = 'k8s.hpa.metric.type'; +/** + * The name of the horizontal pod autoscaler. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_NAME = 'k8s.hpa.name'; +/** + * The API version of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example apps/v1 + * @example autoscaling/v2 + * + * @note This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_SCALETARGETREF_API_VERSION = 'k8s.hpa.scaletargetref.api_version'; +/** + * The kind of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example Deployment + * @example StatefulSet + * + * @note This maps to the `kind` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_SCALETARGETREF_KIND = 'k8s.hpa.scaletargetref.kind'; +/** + * The name of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example my-deployment + * @example my-statefulset + * + * @note This maps to the `name` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_SCALETARGETREF_NAME = 'k8s.hpa.scaletargetref.name'; +/** + * The UID of the horizontal pod autoscaler. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_UID = 'k8s.hpa.uid'; +/** + * The size (identifier) of the K8s huge page. + * + * @example 2Mi + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HUGEPAGE_SIZE = 'k8s.hugepage.size'; +/** + * The annotation placed on the Job, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `number` with value `1` **SHOULD** be recorded + * as the `k8s.job.annotation.number` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_JOB_ANNOTATION = (key) => `k8s.job.annotation.${key}`; +/** + * The label placed on the Job, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example ci + * @example + * + * @note + * Examples: + * + * - A label `jobtype` with value `ci` **SHOULD** be recorded + * as the `k8s.job.label.jobtype` attribute with value `"ci"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_JOB_LABEL = (key) => `k8s.job.label.${key}`; +/** + * The name of the Job. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_JOB_NAME = 'k8s.job.name'; +/** + * The UID of the Job. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_JOB_UID = 'k8s.job.uid'; +/** + * The annotation placed on the Namespace, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `ttl` with value `0` **SHOULD** be recorded + * as the `k8s.namespace.annotation.ttl` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NAMESPACE_ANNOTATION = (key) => `k8s.namespace.annotation.${key}`; +/** + * The label placed on the Namespace, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example default + * @example + * + * @note + * Examples: + * + * - A label `kubernetes.io/metadata.name` with value `default` **SHOULD** be recorded + * as the `k8s.namespace.label.kubernetes.io/metadata.name` attribute with value `"default"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NAMESPACE_LABEL = (key) => `k8s.namespace.label.${key}`; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name'; +/** + * The phase of the K8s namespace. + * + * @example active + * @example terminating + * + * @note This attribute aligns with the `phase` field of the + * [K8s NamespaceStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase'; +/** + * Enum value "active" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Active namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NAMESPACE_PHASE_VALUE_ACTIVE = "active"; +/** + * Enum value "terminating" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Terminating namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NAMESPACE_PHASE_VALUE_TERMINATING = "terminating"; +/** + * The annotation placed on the Node, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note Examples: + * + * - An annotation `node.alpha.kubernetes.io/ttl` with value `0` **SHOULD** be recorded as + * the `k8s.node.annotation.node.alpha.kubernetes.io/ttl` attribute with value `"0"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_ANNOTATION = (key) => `k8s.node.annotation.${key}`; +/** + * The status of the condition, one of True, False, Unknown. + * + * @example true + * @example false + * @example unknown + * + * @note This attribute aligns with the `status` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status'; +/** + * Enum value "false" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_FALSE = "false"; +/** + * Enum value "true" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_TRUE = "true"; +/** + * Enum value "unknown" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_UNKNOWN = "unknown"; +/** + * The condition type of a K8s Node. + * + * @example Ready + * @example DiskPressure + * + * @note K8s Node conditions as described + * by [K8s documentation](https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition). + * + * This attribute aligns with the `type` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * The set of possible values is not limited to those listed here. Managed Kubernetes environments, + * or custom controllers **MAY** introduce additional node condition types. + * When this occurs, the exact value as reported by the Kubernetes API **SHOULD** be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_CONDITION_TYPE = 'k8s.node.condition.type'; +/** + * Enum value "DiskPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the disk size—that is, if the disk capacity is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_TYPE_VALUE_DISK_PRESSURE = "DiskPressure"; +/** + * Enum value "MemoryPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the node memory—that is, if the node memory is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_TYPE_VALUE_MEMORY_PRESSURE = "MemoryPressure"; +/** + * Enum value "NetworkUnavailable" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The network for the node is not correctly configured + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_TYPE_VALUE_NETWORK_UNAVAILABLE = "NetworkUnavailable"; +/** + * Enum value "PIDPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the processes—that is, if there are too many processes on the node + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_TYPE_VALUE_PID_PRESSURE = "PIDPressure"; +/** + * Enum value "Ready" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The node is healthy and ready to accept pods + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_TYPE_VALUE_READY = "Ready"; +/** + * The label placed on the Node, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example arm64 + * @example + * + * @note Examples: + * + * - A label `kubernetes.io/arch` with value `arm64` **SHOULD** be recorded + * as the `k8s.node.label.kubernetes.io/arch` attribute with value `"arm64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_LABEL = (key) => `k8s.node.label.${key}`; +/** + * The name of the Node. + * + * @example node-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_NAME = 'k8s.node.name'; +/** + * The UID of the Node. + * + * @example 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_UID = 'k8s.node.uid'; +/** + * The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value. + * + * @example true + * @example x64 + * @example + * + * @note Examples: + * + * - An annotation `kubernetes.io/enforce-mountable-secrets` with value `true` **SHOULD** be recorded as + * the `k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets` attribute with value `"true"`. + * - An annotation `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.annotation.mycompany.io/arch` attribute with value `"x64"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_ANNOTATION = (key) => `k8s.pod.annotation.${key}`; +/** + * Specifies the hostname of the Pod. + * + * @example collector-gateway + * + * @note The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. + * Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) + * for more information about this field. + * + * This attribute aligns with the `hostname` field of the + * [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_HOSTNAME = 'k8s.pod.hostname'; +/** + * IP address allocated to the Pod. + * + * @example 172.18.0.2 + * + * @note This attribute aligns with the `podIP` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_IP = 'k8s.pod.ip'; +/** + * The label placed on the Pod, the `` being the label name, the value being the label value. + * + * @example my-app + * @example x64 + * @example + * + * @note Examples: + * + * - A label `app` with value `my-app` **SHOULD** be recorded as + * the `k8s.pod.label.app` attribute with value `"my-app"`. + * - A label `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.label.mycompany.io/arch` attribute with value `"x64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_LABEL = (key) => `k8s.pod.label.${key}`; +/** + * Deprecated, use `k8s.pod.label` instead. + * + * @example my-app + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.pod.label`. + */ +export const ATTR_K8S_POD_LABELS = (key) => `k8s.pod.labels.${key}`; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_NAME = 'k8s.pod.name'; +/** + * The start timestamp of the Pod. + * + * @example 2025-12-04T08:41:03Z + * + * @note Date and time at which the object was acknowledged by the Kubelet. + * This is before the Kubelet pulled the container image(s) for the pod. + * + * This attribute aligns with the `startTime` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), + * in ISO 8601 (RFC 3339 compatible) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_START_TIME = 'k8s.pod.start_time'; +/** + * The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Pending + * @example Running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase'; +/** + * Enum value "Failed" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_PHASE_VALUE_FAILED = "Failed"; +/** + * Enum value "Pending" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_PHASE_VALUE_PENDING = "Pending"; +/** + * Enum value "Running" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_PHASE_VALUE_RUNNING = "Running"; +/** + * Enum value "Succeeded" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_PHASE_VALUE_SUCCEEDED = "Succeeded"; +/** + * Enum value "Unknown" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_PHASE_VALUE_UNKNOWN = "Unknown"; +/** + * The reason for the pod state. Corresponds to the `reason` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Evicted + * @example NodeAffinity + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason'; +/** + * Enum value "Evicted" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is evicted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_REASON_VALUE_EVICTED = "Evicted"; +/** + * Enum value "NodeAffinity" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is in a status because of its node affinity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_REASON_VALUE_NODE_AFFINITY = "NodeAffinity"; +/** + * Enum value "NodeLost" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The reason on a pod when its state cannot be confirmed as kubelet is unresponsive on the node it is (was) running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_REASON_VALUE_NODE_LOST = "NodeLost"; +/** + * Enum value "Shutdown" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The node is shutdown + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_REASON_VALUE_SHUTDOWN = "Shutdown"; +/** + * Enum value "UnexpectedAdmissionError" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod was rejected admission to the node because of an error during admission that could not be categorized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_REASON_VALUE_UNEXPECTED_ADMISSION_ERROR = "UnexpectedAdmissionError"; +/** + * The UID of the Pod. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_UID = 'k8s.pod.uid'; +/** + * The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.replicaset.annotation.replicas` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICASET_ANNOTATION = (key) => `k8s.replicaset.annotation.${key}`; +/** + * The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.replicaset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICASET_LABEL = (key) => `k8s.replicaset.label.${key}`; +/** + * The name of the ReplicaSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICASET_NAME = 'k8s.replicaset.name'; +/** + * The UID of the ReplicaSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICASET_UID = 'k8s.replicaset.uid'; +/** + * The name of the replication controller. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICATIONCONTROLLER_NAME = 'k8s.replicationcontroller.name'; +/** + * The UID of the replication controller. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICATIONCONTROLLER_UID = 'k8s.replicationcontroller.uid'; +/** + * The name of the resource quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_RESOURCEQUOTA_NAME = 'k8s.resourcequota.name'; +/** + * The name of the K8s resource a resource quota defines. + * + * @example count/replicationcontrollers + * + * @note The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_RESOURCEQUOTA_RESOURCE_NAME = 'k8s.resourcequota.resource_name'; +/** + * The UID of the resource quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_RESOURCEQUOTA_UID = 'k8s.resourcequota.uid'; +/** + * The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.statefulset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_STATEFULSET_ANNOTATION = (key) => `k8s.statefulset.annotation.${key}`; +/** + * The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.statefulset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_STATEFULSET_LABEL = (key) => `k8s.statefulset.label.${key}`; +/** + * The name of the StatefulSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_STATEFULSET_NAME = 'k8s.statefulset.name'; +/** + * The UID of the StatefulSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_STATEFULSET_UID = 'k8s.statefulset.uid'; +/** + * The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object. + * + * @example gold.storageclass.storage.k8s.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_STORAGECLASS_NAME = 'k8s.storageclass.name'; +/** + * The name of the K8s volume. + * + * @example volume0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_VOLUME_NAME = 'k8s.volume.name'; +/** + * The type of the K8s volume. + * + * @example emptyDir + * @example persistentVolumeClaim + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_VOLUME_TYPE = 'k8s.volume.type'; +/** + * Enum value "configMap" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [configMap](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_CONFIG_MAP = "configMap"; +/** + * Enum value "downwardAPI" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [downwardAPI](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_DOWNWARD_API = "downwardAPI"; +/** + * Enum value "emptyDir" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * An [emptyDir](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_EMPTY_DIR = "emptyDir"; +/** + * Enum value "local" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [local](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_LOCAL = "local"; +/** + * Enum value "persistentVolumeClaim" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [persistentVolumeClaim](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM = "persistentVolumeClaim"; +/** + * Enum value "secret" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [secret](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_SECRET = "secret"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.state`. + */ +export const ATTR_LINUX_MEMORY_SLAB_STATE = 'linux.memory.slab.state'; +/** + * Enum value "reclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE = "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE = "unreclaimable"; +/** + * The basename of the file. + * + * @example audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_FILE_NAME = 'log.file.name'; +/** + * The basename of the file, with symlinks resolved. + * + * @example uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_FILE_NAME_RESOLVED = 'log.file.name_resolved'; +/** + * The full path to the file. + * + * @example /var/log/mysql/audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_FILE_PATH = 'log.file.path'; +/** + * The full path to the file, with symlinks resolved. + * + * @example /var/lib/docker/uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_FILE_PATH_RESOLVED = 'log.file.path_resolved'; +/** + * The stream associated with the log. See below for a list of well-known values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_IOSTREAM = 'log.iostream'; +/** + * Enum value "stderr" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Events from stderr stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const LOG_IOSTREAM_VALUE_STDERR = "stderr"; +/** + * Enum value "stdout" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Logs from stdout stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const LOG_IOSTREAM_VALUE_STDOUT = "stdout"; +/** + * The complete original Log Record. + * + * @example 77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - Something happened + * @example [INFO] 8/3/24 12:34:56 Something happened + * + * @note This value **MAY** be added when processing a Log Record which was originally transmitted as a string or equivalent data type AND the Body field of the Log Record does not contain the same value. (e.g. a syslog or a log record read from a file.) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_RECORD_ORIGINAL = 'log.record.original'; +/** + * A unique identifier for the Log Record. + * + * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV + * + * @note If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records **MUST** have different values. + * The id **MAY** be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_RECORD_UID = 'log.record.uid'; +/** + * Name of the logical partition that hosts a systems with a mainframe operating system. + * + * @example LPAR01 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MAINFRAME_LPAR_NAME = 'mainframe.lpar.name'; +/** + * The name of the request or notification method. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MCP_METHOD_NAME = 'mcp.method.name'; +/** + * Enum value "completion/complete" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to complete a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE = "completion/complete"; +/** + * Enum value "elicitation/create" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request from the server to elicit additional information from the user via the client + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_ELICITATION_CREATE = "elicitation/create"; +/** + * Enum value "initialize" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to initialize the MCP client. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_INITIALIZE = "initialize"; +/** + * Enum value "logging/setLevel" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to set the logging level. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL = "logging/setLevel"; +/** + * Enum value "notifications/cancelled" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification cancelling a previously-issued request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED = "notifications/cancelled"; +/** + * Enum value "notifications/initialized" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the MCP client has been initialized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED = "notifications/initialized"; +/** + * Enum value "notifications/message" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a message has been received. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE = "notifications/message"; +/** + * Enum value "notifications/progress" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating the progress for a long-running operation. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS = "notifications/progress"; +/** + * Enum value "notifications/prompts/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of prompts has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED = "notifications/prompts/list_changed"; +/** + * Enum value "notifications/resources/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of resources has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED = "notifications/resources/list_changed"; +/** + * Enum value "notifications/resources/updated" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a resource has been updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED = "notifications/resources/updated"; +/** + * Enum value "notifications/roots/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of roots has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED = "notifications/roots/list_changed"; +/** + * Enum value "notifications/tools/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of tools has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED = "notifications/tools/list_changed"; +/** + * Enum value "ping" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to check that the other party is still alive. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_PING = "ping"; +/** + * Enum value "prompts/get" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to get a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_PROMPTS_GET = "prompts/get"; +/** + * Enum value "prompts/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list prompts available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_PROMPTS_LIST = "prompts/list"; +/** + * Enum value "resources/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resources available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_RESOURCES_LIST = "resources/list"; +/** + * Enum value "resources/read" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to read a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_RESOURCES_READ = "resources/read"; +/** + * Enum value "resources/subscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to subscribe to a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE = "resources/subscribe"; +/** + * Enum value "resources/templates/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resource templates available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST = "resources/templates/list"; +/** + * Enum value "resources/unsubscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to unsubscribe from resource updates. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE = "resources/unsubscribe"; +/** + * Enum value "roots/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list roots available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_ROOTS_LIST = "roots/list"; +/** + * Enum value "sampling/createMessage" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to create a sampling message. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE = "sampling/createMessage"; +/** + * Enum value "tools/call" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to call a tool. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_TOOLS_CALL = "tools/call"; +/** + * Enum value "tools/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list tools available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_TOOLS_LIST = "tools/list"; +/** + * The [version](https://modelcontextprotocol.io/specification/versioning) of the Model Context Protocol used. + * + * @example 2025-06-18 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MCP_PROTOCOL_VERSION = 'mcp.protocol.version'; +/** + * The value of the resource uri. + * + * @example postgres://database/customers/schema + * @example file:///home/user/documents/report.pdf + * + * @note This is a URI of the resource provided in the following requests or notifications: `resources/read`, `resources/subscribe`, `resources/unsubscribe`, or `notifications/resources/updated`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MCP_RESOURCE_URI = 'mcp.resource.uri'; +/** + * Identifies [MCP session](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management). + * + * @example 191c4850af6c49e08843a3f6c80e5046 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MCP_SESSION_ID = 'mcp.session.id'; +/** + * Deprecated, use `rpc.message.compressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.compressed_size`. + */ +export const ATTR_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size'; +/** + * Deprecated, use `rpc.message.id` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.id`. + */ +export const ATTR_MESSAGE_ID = 'message.id'; +/** + * Deprecated, use `rpc.message.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.type`. + */ +export const ATTR_MESSAGE_TYPE = 'message.type'; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGE_TYPE_VALUE_RECEIVED = "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGE_TYPE_VALUE_SENT = "SENT"; +/** + * Deprecated, use `rpc.message.uncompressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.uncompressed_size`. + */ +export const ATTR_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size'; +/** + * The number of messages sent, received, or processed in the scope of the batching operation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count'; +/** + * A unique identifier for the client that consumes or produces a message. + * + * @example client-5 + * @example myhost@8742@s8083jm + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_CLIENT_ID = 'messaging.client.id'; +/** + * The name of the consumer group with which a consumer is associated. + * + * @example my-group + * @example indexer + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.consumer.group.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_CONSUMER_GROUP_NAME = 'messaging.consumer.group.name'; +/** + * A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_ANONYMOUS = 'messaging.destination.anonymous'; +/** + * The message destination name + * + * @example MyQueue + * @example MyTopic + * + * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If + * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name'; +/** + * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`. + * + * @example "1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_PARTITION_ID = 'messaging.destination.partition.id'; +/** + * The name of the destination subscription from which a message is consumed. + * + * @example subscription-a + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.destination.subscription.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME = 'messaging.destination.subscription.name'; +/** + * Low cardinality representation of the messaging destination name + * + * @example /customers/{customerId} + * + * @note Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_TEMPLATE = 'messaging.destination.template'; +/** + * A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_TEMPORARY = 'messaging.destination.temporary'; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export const ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS = 'messaging.destination_publish.anonymous'; +/** + * Deprecated, no replacement at this time. + * + * @example MyQueue + * @example MyTopic + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export const ATTR_MESSAGING_DESTINATION_PUBLISH_NAME = 'messaging.destination_publish.name'; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "$Default" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +export const ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP = 'messaging.eventhubs.consumer.group'; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME = 'messaging.eventhubs.message.enqueued_time'; +/** + * The ack deadline in seconds set for the modify ack deadline request. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE = 'messaging.gcp_pubsub.message.ack_deadline'; +/** + * The ack id for a given message. + * + * @example "ack_id" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID = 'messaging.gcp_pubsub.message.ack_id'; +/** + * The delivery attempt for a given message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT = 'messaging.gcp_pubsub.message.delivery_attempt'; +/** + * The ordering key for a given message. If the attribute is not present, the message does not have an ordering key. + * + * @example "ordering_key" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY = 'messaging.gcp_pubsub.message.ordering_key'; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "my-group" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +export const ATTR_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer.group'; +/** + * Deprecated, use `messaging.destination.partition.id` instead. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Record string representation of the partition id in `messaging.destination.partition.id` attribute. + */ +export const ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION = 'messaging.kafka.destination.partition'; +/** + * 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. + * + * @example "myKey" + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message.key'; +/** + * Deprecated, use `messaging.kafka.offset` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.kafka.offset`. + */ +export const ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET = 'messaging.kafka.message.offset'; +/** + * A boolean that is true if the message is a tombstone. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = 'messaging.kafka.message.tombstone'; +/** + * The offset of a record in the corresponding Kafka partition. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset'; +/** + * The size of the message body in bytes. + * + * @example 1439 + * + * @note This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed + * body size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_MESSAGE_BODY_SIZE = 'messaging.message.body.size'; +/** + * The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @example "MyConversationId" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_MESSAGE_CONVERSATION_ID = 'messaging.message.conversation_id'; +/** + * The size of the message body and metadata in bytes. + * + * @example 2738 + * + * @note This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed + * size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE = 'messaging.message.envelope.size'; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @example "452a7c7c7c7048c2f887f61572b18fc2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id'; +/** + * Deprecated, use `messaging.operation.type` instead. + * + * @example publish + * @example create + * @example process + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.operation.type`. + */ +export const ATTR_MESSAGING_OPERATION = 'messaging.operation'; +/** + * The system-specific name of the messaging operation. + * + * @example ack + * @example nack + * @example send + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name'; +/** + * A string identifying the type of the messaging operation. + * + * @note If a custom value is used, it **MUST** be of low cardinality. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_OPERATION_TYPE = 'messaging.operation.type'; +/** + * Enum value "create" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * A message is created. "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch sending scenarios. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_CREATE = "create"; +/** + * Enum value "deliver" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `process` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_DELIVER = "deliver"; +/** + * Enum value "process" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are processed by a consumer. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_PROCESS = "process"; +/** + * Enum value "publish" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `send` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `send`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_PUBLISH = "publish"; +/** + * Enum value "receive" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = "receive"; +/** + * Enum value "send" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are provided for sending to an intermediary. If a single message is sent, the context of the "Send" span can be used as the creation context and no "Create" span needs to be created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_SEND = "send"; +/** + * Enum value "settle" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are settled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_SETTLE = "settle"; +/** + * RabbitMQ message routing key. + * + * @example "myKey" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = 'messaging.rabbitmq.destination.routing_key'; +/** + * RabbitMQ message delivery tag + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG = 'messaging.rabbitmq.message.delivery_tag'; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "myConsumerGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name` on the consumer spans. No replacement for producer spans. + */ +export const ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP = 'messaging.rocketmq.client_group'; +/** + * Model of message consumption. This only applies to consumer spans. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL = 'messaging.rocketmq.consumption_model'; +/** + * Enum value "broadcasting" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Broadcasting consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING = "broadcasting"; +/** + * Enum value "clustering" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Clustering consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING = "clustering"; +/** + * The delay time level for delay message, which determines the message delay time. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL = 'messaging.rocketmq.message.delay_time_level'; +/** + * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + * + * @example 1665987217045 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP = 'messaging.rocketmq.message.delivery_timestamp'; +/** + * It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group. + * + * @example "myMessageGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP = 'messaging.rocketmq.message.group'; +/** + * Key(s) of message, another way to mark message besides message id. + * + * @example ["keyA", "keyB"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS = 'messaging.rocketmq.message.keys'; +/** + * The secondary classifier of message besides topic. + * + * @example "tagA" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG = 'messaging.rocketmq.message.tag'; +/** + * Type of message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE = 'messaging.rocketmq.message.type'; +/** + * Enum value "delay" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Delay message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY = "delay"; +/** + * Enum value "fifo" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * FIFO message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO = "fifo"; +/** + * Enum value "normal" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Normal message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL = "normal"; +/** + * Enum value "transaction" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Transaction message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION = "transaction"; +/** + * Namespace of RocketMQ resources, resources in different namespaces are individual. + * + * @example "myNamespace" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_NAMESPACE = 'messaging.rocketmq.namespace'; +/** + * Deprecated, use `messaging.destination.subscription.name` instead. + * + * @example "subscription-a" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.destination.subscription.name`. + */ +export const ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME = 'messaging.servicebus.destination.subscription_name'; +/** + * Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS = 'messaging.servicebus.disposition_status'; +/** + * Enum value "abandon" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is abandoned + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON = "abandon"; +/** + * Enum value "complete" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is completed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE = "complete"; +/** + * Enum value "dead_letter" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is sent to dead letter queue + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER = "dead_letter"; +/** + * Enum value "defer" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is deferred + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER = "defer"; +/** + * Number of deliveries that have been attempted for this message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT = 'messaging.servicebus.message.delivery_count'; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME = 'messaging.servicebus.message.enqueued_time'; +/** + * The messaging system as identified by the client instrumentation. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_SYSTEM = 'messaging.system'; +/** + * Enum value "activemq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache ActiveMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_ACTIVEMQ = "activemq"; +/** + * Enum value "aws.sns" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Notification Service (SNS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_AWS_SNS = "aws.sns"; +/** + * Enum value "aws_sqs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Queue Service (SQS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_AWS_SQS = "aws_sqs"; +/** + * Enum value "eventgrid" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Grid + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_EVENTGRID = "eventgrid"; +/** + * Enum value "eventhubs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Hubs + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_EVENTHUBS = "eventhubs"; +/** + * Enum value "gcp_pubsub" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Google Cloud Pub/Sub + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_GCP_PUBSUB = "gcp_pubsub"; +/** + * Enum value "jms" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Java Message Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_JMS = "jms"; +/** + * Enum value "kafka" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Kafka + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_KAFKA = "kafka"; +/** + * Enum value "pulsar" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Pulsar + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_PULSAR = "pulsar"; +/** + * Enum value "rabbitmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * RabbitMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_RABBITMQ = "rabbitmq"; +/** + * Enum value "rocketmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache RocketMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_ROCKETMQ = "rocketmq"; +/** + * Enum value "servicebus" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Service Bus + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_SERVICEBUS = "servicebus"; +/** + * Deprecated, use `network.local.address`. + * + * @example "192.168.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export const ATTR_NET_HOST_IP = 'net.host.ip'; +/** + * Deprecated, use `server.address`. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export const ATTR_NET_HOST_NAME = 'net.host.name'; +/** + * Deprecated, use `server.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port`. + */ +export const ATTR_NET_HOST_PORT = 'net.host.port'; +/** + * Deprecated, use `network.peer.address`. + * + * @example "127.0.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export const ATTR_NET_PEER_IP = 'net.peer.ip'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export const ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export const ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Deprecated, use `network.protocol.name`. + * + * @example amqp + * @example http + * @example mqtt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.name`. + */ +export const ATTR_NET_PROTOCOL_NAME = 'net.protocol.name'; +/** + * Deprecated, use `network.protocol.version`. + * + * @example "3.1.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.version`. + */ +export const ATTR_NET_PROTOCOL_VERSION = 'net.protocol.version'; +/** + * Deprecated, use `network.transport` and `network.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `network.transport` and `network.type`. + */ +export const ATTR_NET_SOCK_FAMILY = 'net.sock.family'; +/** + * Enum value "inet" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv4 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_SOCK_FAMILY_VALUE_INET = "inet"; +/** + * Enum value "inet6" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv6 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_SOCK_FAMILY_VALUE_INET6 = "inet6"; +/** + * Enum value "unix" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * Unix domain socket path + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_SOCK_FAMILY_VALUE_UNIX = "unix"; +/** + * Deprecated, use `network.local.address`. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export const ATTR_NET_SOCK_HOST_ADDR = 'net.sock.host.addr'; +/** + * Deprecated, use `network.local.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.port`. + */ +export const ATTR_NET_SOCK_HOST_PORT = 'net.sock.host.port'; +/** + * Deprecated, use `network.peer.address`. + * + * @example 192.168.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export const ATTR_NET_SOCK_PEER_ADDR = 'net.sock.peer.addr'; +/** + * Deprecated, no replacement at this time. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export const ATTR_NET_SOCK_PEER_NAME = 'net.sock.peer.name'; +/** + * Deprecated, use `network.peer.port`. + * + * @example 65531 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.port`. + */ +export const ATTR_NET_SOCK_PEER_PORT = 'net.sock.peer.port'; +/** + * Deprecated, use `network.transport`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.transport`. + */ +export const ATTR_NET_TRANSPORT = 'net.transport'; +/** + * Enum value "inproc" for attribute {@link ATTR_NET_TRANSPORT}. + * + * In-process communication. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_TRANSPORT_VALUE_INPROC = "inproc"; +/** + * Enum value "ip_tcp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_TRANSPORT_VALUE_IP_TCP = "ip_tcp"; +/** + * Enum value "ip_udp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_TRANSPORT_VALUE_IP_UDP = "ip_udp"; +/** + * Enum value "other" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Something else (non IP-based). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_TRANSPORT_VALUE_OTHER = "other"; +/** + * Enum value "pipe" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Named or anonymous pipe. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_TRANSPORT_VALUE_PIPE = "pipe"; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @example "DE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CARRIER_ICC = 'network.carrier.icc'; +/** + * The mobile carrier country code. + * + * @example "310" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CARRIER_MCC = 'network.carrier.mcc'; +/** + * The mobile carrier network code. + * + * @example "001" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CARRIER_MNC = 'network.carrier.mnc'; +/** + * The name of the mobile carrier. + * + * @example "sprint" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CARRIER_NAME = 'network.carrier.name'; +/** + * The state of network connection + * + * @example close_wait + * + * @note Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2) + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CONNECTION_STATE = 'network.connection.state'; +/** + * Enum value "close_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_CLOSE_WAIT = "close_wait"; +/** + * Enum value "closed" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_CLOSED = "closed"; +/** + * Enum value "closing" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_CLOSING = "closing"; +/** + * Enum value "established" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_ESTABLISHED = "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_1 = "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_2 = "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_LAST_ACK = "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_LISTEN = "listen"; +/** + * Enum value "syn_received" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_SYN_RECEIVED = "syn_received"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_SYN_SENT = "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_TIME_WAIT = "time_wait"; +/** + * 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. + * + * @example "LTE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CONNECTION_SUBTYPE = 'network.connection.subtype'; +/** + * Enum value "cdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA = "cdma"; +/** + * Enum value "cdma2000_1xrtt" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA2000 1XRTT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT = "cdma2000_1xrtt"; +/** + * Enum value "edge" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EDGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE = "edge"; +/** + * Enum value "ehrpd" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EHRPD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD = "ehrpd"; +/** + * Enum value "evdo_0" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rel. 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 = "evdo_0"; +/** + * Enum value "evdo_a" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. A + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A = "evdo_a"; +/** + * Enum value "evdo_b" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. B + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B = "evdo_b"; +/** + * Enum value "gprs" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GPRS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS = "gprs"; +/** + * Enum value "gsm" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GSM + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_GSM = "gsm"; +/** + * Enum value "hsdpa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSDPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA = "hsdpa"; +/** + * Enum value "hspa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA = "hspa"; +/** + * Enum value "hspap" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPAP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP = "hspap"; +/** + * Enum value "hsupa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSUPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA = "hsupa"; +/** + * Enum value "iden" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IDEN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN = "iden"; +/** + * Enum value "iwlan" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IWLAN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN = "iwlan"; +/** + * Enum value "lte" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE = "lte"; +/** + * Enum value "lte_ca" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE CA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA = "lte_ca"; +/** + * Enum value "nr" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NR (New Radio) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_NR = "nr"; +/** + * Enum value "nrnsa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NRNSA (New Radio Non-Standalone) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA = "nrnsa"; +/** + * Enum value "td_scdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * TD-SCDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA = "td_scdma"; +/** + * Enum value "umts" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * UMTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS = "umts"; +/** + * The internet connection type. + * + * @example "wifi" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CONNECTION_TYPE = 'network.connection.type'; +/** + * Enum value "cell" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_TYPE_VALUE_CELL = "cell"; +/** + * Enum value "unavailable" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE = "unavailable"; +/** + * Enum value "unknown" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN = "unknown"; +/** + * Enum value "wifi" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_TYPE_VALUE_WIFI = "wifi"; +/** + * Enum value "wired" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_TYPE_VALUE_WIRED = "wired"; +/** + * The network interface name. + * + * @example lo + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_INTERFACE_NAME = 'network.interface.name'; +/** + * The network IO operation direction. + * + * @example transmit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_IO_DIRECTION = 'network.io.direction'; +/** + * Enum value "receive" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_IO_DIRECTION_VALUE_RECEIVE = "receive"; +/** + * Enum value "transmit" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_IO_DIRECTION_VALUE_TRANSMIT = "transmit"; +/** + * NFSv4+ operation name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NFS_OPERATION_NAME = 'nfs.operation.name'; +/** + * Linux: one of "hit" (NFSD_STATS_RC_HITS), "miss" (NFSD_STATS_RC_MISSES), or "nocache" (NFSD_STATS_RC_NOCACHE -- uncacheable) + * + * @example "hit" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NFS_SERVER_REPCACHE_STATUS = 'nfs.server.repcache.status'; +/** + * The state of event loop time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NODEJS_EVENTLOOP_STATE = 'nodejs.eventloop.state'; +/** + * Enum value "active" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Active time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "idle" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Idle time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NODEJS_EVENTLOOP_STATE_VALUE_IDLE = "idle"; +/** + * The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known. + * + * @example sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4 + * + * @note Follows [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), and specifically the [Digest property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests). + * An example can be found in [Example Image Manifest](https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OCI_MANIFEST_DIGEST = 'oci.manifest.digest'; +/** + * ONC/Sun RPC procedure name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ONC_RPC_PROCEDURE_NAME = 'onc_rpc.procedure.name'; +/** + * ONC/Sun RPC procedure number. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ONC_RPC_PROCEDURE_NUMBER = 'onc_rpc.procedure.number'; +/** + * ONC/Sun RPC program name. + * + * @example portmapper + * @example nfs + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ONC_RPC_PROGRAM_NAME = 'onc_rpc.program.name'; +/** + * ONC/Sun RPC program version. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ONC_RPC_VERSION = 'onc_rpc.version'; +/** + * The service tier requested. May be a specific tier, default, or auto. + * + * @example auto + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENAI_REQUEST_SERVICE_TIER = 'openai.request.service_tier'; +/** + * Enum value "auto" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = "auto"; +/** + * Enum value "default" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = "default"; +/** + * The service tier used for the response. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENAI_RESPONSE_SERVICE_TIER = 'openai.response.service_tier'; +/** + * A fingerprint to track any eventual change in the Generative AI environment. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'openai.response.system_fingerprint'; +/** + * The name of the cluster quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENSHIFT_CLUSTERQUOTA_NAME = 'openshift.clusterquota.name'; +/** + * The UID of the cluster quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENSHIFT_CLUSTERQUOTA_UID = 'openshift.clusterquota.uid'; +/** + * Parent-child Reference type + * + * @note The causal relationship between a child Span and a parent Span. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENTRACING_REF_TYPE = 'opentracing.ref_type'; +/** + * Enum value "child_of" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span depends on the child Span in some capacity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OPENTRACING_REF_TYPE_VALUE_CHILD_OF = "child_of"; +/** + * Enum value "follows_from" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span doesn't depend in any way on the result of the child Span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM = "follows_from"; +/** + * Unique identifier for a particular build or compilation of the operating system. + * + * @example TQ3C.230805.001.B2 + * @example 20E247 + * @example 22621 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_BUILD_ID = 'os.build_id'; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @example Microsoft Windows [Version 10.0.18363.778] + * @example Ubuntu 18.04.1 LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_DESCRIPTION = 'os.description'; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_NAME = 'os.name'; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_TYPE = 'os.type'; +/** + * Enum value "aix" for attribute {@link ATTR_OS_TYPE}. + * + * AIX (Advanced Interactive eXecutive) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_AIX = "aix"; +/** + * Enum value "darwin" for attribute {@link ATTR_OS_TYPE}. + * + * Apple Darwin + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_DARWIN = "darwin"; +/** + * Enum value "dragonflybsd" for attribute {@link ATTR_OS_TYPE}. + * + * DragonFly BSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_DRAGONFLYBSD = "dragonflybsd"; +/** + * Enum value "freebsd" for attribute {@link ATTR_OS_TYPE}. + * + * FreeBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_FREEBSD = "freebsd"; +/** + * Enum value "hpux" for attribute {@link ATTR_OS_TYPE}. + * + * HP-UX (Hewlett Packard Unix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_HPUX = "hpux"; +/** + * Enum value "linux" for attribute {@link ATTR_OS_TYPE}. + * + * Linux + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_LINUX = "linux"; +/** + * Enum value "netbsd" for attribute {@link ATTR_OS_TYPE}. + * + * NetBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_NETBSD = "netbsd"; +/** + * Enum value "openbsd" for attribute {@link ATTR_OS_TYPE}. + * + * OpenBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_OPENBSD = "openbsd"; +/** + * Enum value "solaris" for attribute {@link ATTR_OS_TYPE}. + * + * SunOS, Oracle Solaris + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_SOLARIS = "solaris"; +/** + * Enum value "windows" for attribute {@link ATTR_OS_TYPE}. + * + * Microsoft Windows + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_WINDOWS = "windows"; +/** + * Enum value "z_os" for attribute {@link ATTR_OS_TYPE}. + * + * Deprecated. Use `zos` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `zos`. + */ +export const OS_TYPE_VALUE_Z_OS = "z_os"; +/** + * Enum value "zos" for attribute {@link ATTR_OS_TYPE}. + * + * IBM z/OS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_ZOS = "zos"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_VERSION = 'os.version'; +/** + * A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. + * + * @example otlp_grpc_span_exporter/0 + * @example custom-name + * + * @note Implementations **SHOULD** ensure a low cardinality for this attribute, even across application or SDK restarts. + * E.g. implementations **MUST NOT** use UUIDs as values for this attribute. + * + * Implementations **MAY** achieve these goals by following a `/` pattern, e.g. `batching_span_processor/0`. + * Hereby `otel.component.type` refers to the corresponding attribute value of the component. + * + * The value of `instance-counter` **MAY** be automatically assigned by the component and uniqueness within the enclosing SDK instance **MUST** be guaranteed. + * For example, `` **MAY** be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an + * instance of the given component type is started. + * + * With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0` + * as `otel.component.name`, the second one `batching_span_processor/1` and so on. + * These values will therefore be reused in the case of an application restart. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_COMPONENT_NAME = 'otel.component.name'; +/** + * A name identifying the type of the OpenTelemetry component. + * + * @example batching_span_processor + * @example com.example.MySpanExporter + * + * @note If none of the standardized values apply, implementations **SHOULD** use the language-defined name of the type. + * E.g. for Java the fully qualified classname **SHOULD** be used in this case. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_COMPONENT_TYPE = 'otel.component.type'; +/** + * Enum value "batching_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR = "batching_log_processor"; +/** + * Enum value "batching_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR = "batching_span_processor"; +/** + * Enum value "otlp_grpc_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_LOG_EXPORTER = "otlp_grpc_log_exporter"; +/** + * Enum value "otlp_grpc_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_METRIC_EXPORTER = "otlp_grpc_metric_exporter"; +/** + * Enum value "otlp_grpc_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER = "otlp_grpc_span_exporter"; +/** + * Enum value "otlp_http_json_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_LOG_EXPORTER = "otlp_http_json_log_exporter"; +/** + * Enum value "otlp_http_json_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_METRIC_EXPORTER = "otlp_http_json_metric_exporter"; +/** + * Enum value "otlp_http_json_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER = "otlp_http_json_span_exporter"; +/** + * Enum value "otlp_http_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER = "otlp_http_log_exporter"; +/** + * Enum value "otlp_http_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_METRIC_EXPORTER = "otlp_http_metric_exporter"; +/** + * Enum value "otlp_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER = "otlp_http_span_exporter"; +/** + * Enum value "periodic_metric_reader" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK periodically exporting metric reader + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_PERIODIC_METRIC_READER = "periodic_metric_reader"; +/** + * Enum value "prometheus_http_text_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Prometheus metric exporter over HTTP with the default text-based format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_PROMETHEUS_HTTP_TEXT_METRIC_EXPORTER = "prometheus_http_text_metric_exporter"; +/** + * Enum value "simple_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR = "simple_log_processor"; +/** + * Enum value "simple_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR = "simple_span_processor"; +/** + * Enum value "zipkin_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Zipkin span exporter over HTTP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_ZIPKIN_HTTP_SPAN_EXPORTER = "zipkin_http_span_exporter"; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @note This attribute **SHOULD** be used by non-OTLP exporters when destination does not support `EventName` or equivalent field. This attribute **MAY** be used by applications using existing logging libraries so that it can be used to set the `EventName` field by Collector or SDK components. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_EVENT_NAME = 'otel.event.name'; +/** + * Deprecated. Use the `otel.scope.name` attribute + * + * @example io.opentelemetry.contrib.mongodb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.name`. + */ +export const ATTR_OTEL_LIBRARY_NAME = 'otel.library.name'; +/** + * Deprecated. Use the `otel.scope.version` attribute. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.version`. + */ +export const ATTR_OTEL_LIBRARY_VERSION = 'otel.library.version'; +/** + * The schema URL of the instrumentation scope. + * + * @example https://opentelemetry.io/schemas/1.31.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_SCOPE_SCHEMA_URL = 'otel.scope.schema_url'; +/** + * 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) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin'; +/** + * Enum value "local" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is false + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_PARENT_ORIGIN_VALUE_LOCAL = "local"; +/** + * Enum value "none" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span does not have a parent, it is a root span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_PARENT_ORIGIN_VALUE_NONE = "none"; +/** + * Enum value "remote" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is true + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_PARENT_ORIGIN_VALUE_REMOTE = "remote"; +/** + * The result value of the sampler for this span + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_SPAN_SAMPLING_RESULT = 'otel.span.sampling_result'; +/** + * Enum value "DROP" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled and not recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP = "DROP"; +/** + * Enum value "RECORD_AND_SAMPLE" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is sampled and recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE = "RECORD_AND_SAMPLE"; +/** + * Enum value "RECORD_ONLY" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled, but recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY = "RECORD_ONLY"; +/** + * The [`service.name`](/docs/resource/README.md#service) of the remote service. **SHOULD** be equal to the actual `service.name` resource attribute of the remote service if any. + * + * @example "AuthTokenCache" + * + * @note Examples of `peer.service` that users may specify: + * + * - A Redis cache of auth tokens as `peer.service="AuthTokenCache"`. + * - A gRPC service `rpc.service="io.opentelemetry.AuthService"` may be hosted in both a gateway, `peer.service="ExternalApiService"` and a backend, `peer.service="AuthService"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `service.peer.name`. + */ +export const ATTR_PEER_SERVICE = 'peer.service'; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +export const ATTR_POOL_NAME = 'pool.name'; +/** + * Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_LOCATION_IS_FOLDED = 'pprof.location.is_folded'; +/** + * Indicates that there are filenames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_MAPPING_HAS_FILENAMES = 'pprof.mapping.has_filenames'; +/** + * Indicates that there are functions related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_MAPPING_HAS_FUNCTIONS = 'pprof.mapping.has_functions'; +/** + * Indicates that there are inline frames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_MAPPING_HAS_INLINE_FRAMES = 'pprof.mapping.has_inline_frames'; +/** + * Indicates that there are line numbers related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_MAPPING_HAS_LINE_NUMBERS = 'pprof.mapping.has_line_numbers'; +/** + * Free-form text associated with the profile. This field should not be used to store any machine-readable information, it is only for human-friendly content. + * + * @example ["hello world", "bazinga"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_PROFILE_COMMENT = 'pprof.profile.comment'; +/** + * Documentation link for this profile type. + * + * @example http://pprof.example.com/cpu-profile.html + * + * @note The URL must be absolute and may be missing if the profile was generated by code that did not supply a link + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_PROFILE_DOC_URL = 'pprof.profile.doc_url'; +/** + * Frames with Function.function_name fully matching the regexp will be dropped from the samples, along with their successors. + * + * @example /foobar/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_PROFILE_DROP_FRAMES = 'pprof.profile.drop_frames'; +/** + * Frames with Function.function_name fully matching the regexp will be kept, even if it matches drop_frames. + * + * @example /bazinga/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_PROFILE_KEEP_FRAMES = 'pprof.profile.keep_frames'; +/** + * Length of the process.command_args array + * + * @example 4 + * + * @note This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_ARGS_COUNT = 'process.args_count'; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_COMMAND = 'process.command'; +/** + * 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`. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args'; +/** + * 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. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example C:\\cmd\\otecol --config="my directory\\config.yaml" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_COMMAND_LINE = 'process.command_line'; +/** + * Specifies whether the context switches for this data point were voluntary or involuntary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_CONTEXT_SWITCH_TYPE = 'process.context_switch.type'; +/** + * Enum value "involuntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY = "involuntary"; +/** + * Enum value "voluntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY = "voluntary"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export const ATTR_PROCESS_CPU_STATE = 'process.cpu.state'; +/** + * Enum value "system" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_CPU_STATE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_CPU_STATE_VALUE_USER = "user"; +/** + * Enum value "wait" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_CPU_STATE_VALUE_WAIT = "wait"; +/** + * The date and time the process was created, in ISO 8601 format. + * + * @example 2023-11-21T09:25:34.853Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_CREATION_TIME = 'process.creation.time'; +/** + * Process environment variables, `` being the environment variable name, the value being the environment variable value. + * + * @example ubuntu + * @example /usr/local/bin:/usr/bin + * + * @note Examples: + * + * - an environment variable `USER` with value `"ubuntu"` **SHOULD** be recorded + * as the `process.environment_variable.USER` attribute with value `"ubuntu"`. + * - an environment variable `PATH` with value `"/usr/local/bin:/usr/bin"` + * **SHOULD** be recorded as the `process.environment_variable.PATH` attribute + * with value `"/usr/local/bin:/usr/bin"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_ENVIRONMENT_VARIABLE = (key) => `process.environment_variable.${key}`; +/** + * The GNU build ID as found in the `.note.gnu.build-id` ELF section (hex string). + * + * @example c89b11207f6479603b0d49bf291c092c2b719293 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU = 'process.executable.build_id.gnu'; +/** + * The Go build ID as retrieved by `go tool buildid `. + * + * @example foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO = 'process.executable.build_id.go'; +/** + * Profiling specific build ID for executables. See the OTel specification for Profiles for more information. + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH = 'process.executable.build_id.htlhash'; +/** + * "Deprecated, use `process.executable.build_id.htlhash` instead." + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.executable.build_id.htlhash`. + */ +export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING = 'process.executable.build_id.profiling'; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name'; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path'; +/** + * The exit code of the process. + * + * @example 127 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXIT_CODE = 'process.exit.code'; +/** + * The date and time the process exited, in ISO 8601 format. + * + * @example 2023-11-21T09:26:12.315Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXIT_TIME = 'process.exit.time'; +/** + * The PID of the process's group leader. This is also the process group ID (PGID) of the process. + * + * @example 23 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_GROUP_LEADER_PID = 'process.group_leader.pid'; +/** + * Whether the process is connected to an interactive shell. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_INTERACTIVE = 'process.interactive'; +/** + * The control group associated with the process. + * + * @example 1:name=systemd:/user.slice/user-1000.slice/session-3.scope + * @example 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope + * + * @note Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the [/proc/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_LINUX_CGROUP = 'process.linux.cgroup'; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_OWNER = 'process.owner'; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +export const ATTR_PROCESS_PAGING_FAULT_TYPE = 'process.paging.fault_type'; +/** + * Enum value "major" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR = "minor"; +/** + * Parent Process identifier (PPID). + * + * @example 111 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_PARENT_PID = 'process.parent_pid'; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_PID = 'process.pid'; +/** + * The real user ID (RUID) of the process. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_REAL_USER_ID = 'process.real_user.id'; +/** + * The username of the real user of the process. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_REAL_USER_NAME = 'process.real_user.name'; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version'; +/** + * The saved user ID (SUID) of the process. + * + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_SAVED_USER_ID = 'process.saved_user.id'; +/** + * The username of the saved user. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_SAVED_USER_NAME = 'process.saved_user.name'; +/** + * The PID of the process's session leader. This is also the session ID (SID) of the process. + * + * @example 14 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_SESSION_LEADER_PID = 'process.session_leader.pid'; +/** + * The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES) + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_STATE = 'process.state'; +/** + * Enum value "defunct" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_STATE_VALUE_DEFUNCT = "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_STATE_VALUE_RUNNING = "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_STATE_VALUE_SLEEPING = "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_STATE_VALUE_STOPPED = "stopped"; +/** + * Process title (proctitle) + * + * @example cat /etc/hostname + * @example xfce4-session + * @example bash + * + * @note In many Unix-like systems, process title (proctitle), is the string that represents the name or command line of a running process, displayed by system monitoring tools like ps, top, and htop. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_TITLE = 'process.title'; +/** + * The effective user ID (EUID) of the process. + * + * @example 1001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_USER_ID = 'process.user.id'; +/** + * The username of the effective user of the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_USER_NAME = 'process.user.name'; +/** + * Virtual process identifier. + * + * @example 12 + * + * @note The process ID within a PID namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_VPID = 'process.vpid'; +/** + * The working directory of the process. + * + * @example /root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_WORKING_DIRECTORY = 'process.working_directory'; +/** + * Describes the interpreter or compiler of a single frame. + * + * @example cpython + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROFILE_FRAME_TYPE = 'profile.frame.type'; +/** + * Enum value "beam" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Erlang](https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_BEAM = "beam"; +/** + * Enum value "cpython" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Python](https://wikipedia.org/wiki/Python_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_CPYTHON = "cpython"; +/** + * Enum value "dotnet" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [.NET](https://wikipedia.org/wiki/.NET) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_DOTNET = "dotnet"; +/** + * Enum value "go" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Go](https://wikipedia.org/wiki/Go_(programming_language)), + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_GO = "go"; +/** + * Enum value "jvm" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [JVM](https://wikipedia.org/wiki/Java_virtual_machine) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_JVM = "jvm"; +/** + * Enum value "kernel" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Kernel](https://wikipedia.org/wiki/Kernel_(operating_system)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_KERNEL = "kernel"; +/** + * Enum value "native" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * Can be one of but not limited to [C](https://wikipedia.org/wiki/C_(programming_language)), [C++](https://wikipedia.org/wiki/C%2B%2B), [Go](https://wikipedia.org/wiki/Go_(programming_language)) or [Rust](https://wikipedia.org/wiki/Rust_(programming_language)). If possible, a more precise value **MUST** be used. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_NATIVE = "native"; +/** + * Enum value "perl" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Perl](https://wikipedia.org/wiki/Perl) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_PERL = "perl"; +/** + * Enum value "php" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [PHP](https://wikipedia.org/wiki/PHP) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_PHP = "php"; +/** + * Enum value "ruby" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Ruby](https://wikipedia.org/wiki/Ruby_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_RUBY = "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Rust](https://wikipedia.org/wiki/Rust_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_RUST = "rust"; +/** + * Enum value "v8js" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [V8JS](https://wikipedia.org/wiki/V8_(JavaScript_engine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_V8JS = "v8js"; +/** + * Deprecated, use `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.status_code`. + */ +export const ATTR_RPC_CONNECT_RPC_ERROR_CODE = 'rpc.connect_rpc.error_code'; +/** + * Enum value "aborted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED = "aborted"; +/** + * Enum value "already_exists" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS = "already_exists"; +/** + * Enum value "cancelled" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED = "cancelled"; +/** + * Enum value "data_loss" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS = "data_loss"; +/** + * Enum value "deadline_exceeded" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED = "deadline_exceeded"; +/** + * Enum value "failed_precondition" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION = "failed_precondition"; +/** + * Enum value "internal" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL = "internal"; +/** + * Enum value "invalid_argument" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT = "invalid_argument"; +/** + * Enum value "not_found" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND = "not_found"; +/** + * Enum value "out_of_range" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE = "out_of_range"; +/** + * Enum value "permission_denied" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED = "permission_denied"; +/** + * Enum value "resource_exhausted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED = "resource_exhausted"; +/** + * Enum value "unauthenticated" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED = "unauthenticated"; +/** + * Enum value "unavailable" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE = "unavailable"; +/** + * Enum value "unimplemented" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED = "unimplemented"; +/** + * Enum value "unknown" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN = "unknown"; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +export const ATTR_RPC_CONNECT_RPC_REQUEST_METADATA = (key) => `rpc.connect_rpc.request.metadata.${key}`; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +export const ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA = (key) => `rpc.connect_rpc.response.metadata.${key}`; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +export const ATTR_RPC_GRPC_REQUEST_METADATA = (key) => `rpc.grpc.request.metadata.${key}`; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +export const ATTR_RPC_GRPC_RESPONSE_METADATA = (key) => `rpc.grpc.response.metadata.${key}`; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the gRPC status code on the `rpc.response.status_code` attribute. + */ +export const ATTR_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code'; +/** + * Enum value 0 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_OK = 0; +/** + * Enum value 1 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * CANCELLED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_CANCELLED = 1; +/** + * Enum value 2 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNKNOWN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN = 2; +/** + * Enum value 3 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INVALID_ARGUMENT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT = 3; +/** + * Enum value 4 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DEADLINE_EXCEEDED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED = 4; +/** + * Enum value 5 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * NOT_FOUND + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND = 5; +/** + * Enum value 6 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ALREADY_EXISTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS = 6; +/** + * Enum value 7 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * PERMISSION_DENIED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED = 7; +/** + * Enum value 8 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * RESOURCE_EXHAUSTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED = 8; +/** + * Enum value 9 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * FAILED_PRECONDITION + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION = 9; +/** + * Enum value 10 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ABORTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_ABORTED = 10; +/** + * Enum value 11 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OUT_OF_RANGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE = 11; +/** + * Enum value 12 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNIMPLEMENTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED = 12; +/** + * Enum value 13 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INTERNAL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_INTERNAL = 13; +/** + * Enum value 14 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAVAILABLE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE = 14; +/** + * Enum value 15 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DATA_LOSS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS = 15; +/** + * Enum value 16 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAUTHENTICATED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED = 16; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @example -32700 + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the error code on the `rpc.response.status_code` attribute. + */ +export const ATTR_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code'; +/** + * Deprecated, use span status description or `error.message` attribute on other signals. + * + * @example Parse error + * @example User already exists + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use the span status description or `error.message` attribute on other signals. + */ +export const ATTR_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message'; +/** + * Deprecated, use `jsonrpc.request.id` instead. + * + * @example 10 + * @example request-7 + * @example + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.request.id`. + */ +export const ATTR_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id'; +/** + * Deprecated, use `jsonrpc.protocol.version` instead. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.protocol.version`. + */ +export const ATTR_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version'; +/** + * Compressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_MESSAGE_COMPRESSED_SIZE = 'rpc.message.compressed_size'; +/** + * **MUST** be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * @note This way we guarantee that the values will be consistent between different implementations. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_MESSAGE_ID = 'rpc.message.id'; +/** + * Whether this is a received or sent message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_MESSAGE_TYPE = 'rpc.message.type'; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_MESSAGE_TYPE_VALUE_RECEIVED = "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_MESSAGE_TYPE_VALUE_SENT = "SENT"; +/** + * Uncompressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE = 'rpc.message.uncompressed_size'; +/** + * The fully-qualified logical name of the method from the RPC interface perspective. + * + * @example com.example.ExampleService/exampleMethod + * @example EchoService/Echo + * @example _OTHER + * + * @note The method name **MAY** have unbounded cardinality in edge or error cases. + * + * Some RPC frameworks or libraries provide a fixed set of recognized methods + * for client stubs and server implementations. Instrumentations for such + * frameworks **MUST** set this attribute to the original method name only + * when the method is recognized by the framework or library. + * + * When the method is not recognized, for example, when the server receives + * a request for a method that is not predefined on the server, or when + * instrumentation is not able to reliably detect if the method is predefined, + * the attribute **MUST** be set to `_OTHER`. In such cases, tracing + * instrumentations **MUST** also set `rpc.method_original` attribute to + * the original method value. + * + * If the RPC instrumentation could end up converting valid RPC methods to + * `_OTHER`, then it **SHOULD** provide a way to configure the list of recognized + * RPC methods. + * + * The `rpc.method` can be different from the name of any implementing + * method/function. + * The `code.function.name` attribute may be used to record the fully-qualified + * method actually executing the call on the server side, or the + * RPC client stub method on the client side. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_METHOD = 'rpc.method'; +/** + * The original name of the method used by the client. + * + * @example com.myservice.EchoService/catchAll + * @example com.myservice.EchoService/unknownMethod + * @example InvalidMethod + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_METHOD_ORIGINAL = 'rpc.method_original'; +/** + * RPC request metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["1.2.3.4", "1.2.3.5"]` **SHOULD** be recorded as + * `rpc.request.metadata.my-custom-key` attribute with value `["1.2.3.4", "1.2.3.5"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_REQUEST_METADATA = (key) => `rpc.request.metadata.${key}`; +/** + * RPC response metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["attribute_value"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["attribute_value"]` **SHOULD** be recorded as + * the `rpc.response.metadata.my-custom-key` attribute with value `["attribute_value"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_RESPONSE_METADATA = (key) => `rpc.response.metadata.${key}`; +/** + * Status code of the RPC returned by the RPC server or generated by the client + * + * @example OK + * @example DEADLINE_EXCEEDED + * @example -32602 + * + * @note Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes. + * Semantic conventions for individual RPC frameworks **SHOULD** document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_RESPONSE_STATUS_CODE = 'rpc.response.status_code'; +/** + * Deprecated, use fully-qualified `rpc.method` instead. + * + * @example "myservice.EchoService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `rpc.method` which is expected to be a fully-qualified name. + */ +export const ATTR_RPC_SERVICE = 'rpc.service'; +/** + * Deprecated, use `rpc.system.name` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.system.name`. + */ +export const ATTR_RPC_SYSTEM = 'rpc.system'; +/** + * Enum value "apache_dubbo" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Apache Dubbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_APACHE_DUBBO = "apache_dubbo"; +/** + * Enum value "connect_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Connect RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_CONNECT_RPC = "connect_rpc"; +/** + * Enum value "dotnet_wcf" for attribute {@link ATTR_RPC_SYSTEM}. + * + * .NET WCF + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_DOTNET_WCF = "dotnet_wcf"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * gRPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_GRPC = "grpc"; +/** + * Enum value "java_rmi" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Java RMI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_JAVA_RMI = "java_rmi"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * JSON-RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_JSONRPC = "jsonrpc"; +/** + * Enum value "onc_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * [ONC RPC (Sun RPC)](https://datatracker.ietf.org/doc/html/rfc5531) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_ONC_RPC = "onc_rpc"; +/** + * The Remote Procedure Call (RPC) system. + * + * @note The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_SYSTEM_NAME = 'rpc.system.name'; +/** + * Enum value "connectrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Connect RPC](https://connectrpc.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_NAME_VALUE_CONNECTRPC = "connectrpc"; +/** + * Enum value "dubbo" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Apache Dubbo](https://dubbo.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_NAME_VALUE_DUBBO = "dubbo"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [gRPC](https://grpc.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_NAME_VALUE_GRPC = "grpc"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [JSON-RPC](https://www.jsonrpc.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_NAME_VALUE_JSONRPC = "jsonrpc"; +/** + * A categorization value keyword used by the entity using the rule for detection of this event + * + * @example Attempted Information Leak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_CATEGORY = 'security_rule.category'; +/** + * The description of the rule generating the event. + * + * @example Block requests to public DNS over HTTPS / TLS protocols + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_DESCRIPTION = 'security_rule.description'; +/** + * Name of the license under which the rule used to generate this event is made available. + * + * @example Apache 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_LICENSE = 'security_rule.license'; +/** + * The name of the rule or signature generating the event. + * + * @example BLOCK_DNS_over_TLS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_NAME = 'security_rule.name'; +/** + * Reference URL to additional information about the rule used to generate this event. + * + * @example https://en.wikipedia.org/wiki/DNS_over_TLS + * + * @note The URL can point to the vendor’s documentation about the rule. If that’s not available, it can also be a link to a more general page describing this type of alert. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_REFERENCE = 'security_rule.reference'; +/** + * Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. + * + * @example Standard_Protocol_Filters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_RULESET_NAME = 'security_rule.ruleset.name'; +/** + * A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. + * + * @example 550e8400-e29b-41d4-a716-446655440000 + * @example 1100110011 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_UUID = 'security_rule.uuid'; +/** + * The version / revision of the rule being used for analysis. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_VERSION = 'security_rule.version'; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id'; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_NAMESPACE = 'service.namespace'; +/** + * Logical name of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.name`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example shoppingcart + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_PEER_NAME = 'service.peer.name'; +/** + * Logical namespace of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.namespace`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example Shop + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_PEER_NAMESPACE = 'service.peer.namespace'; +/** + * A unique id to identify a session. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SESSION_ID = 'session.id'; +/** + * The previous `session.id` for this user, when known. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SESSION_PREVIOUS_ID = 'session.previous_id'; +/** + * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example source.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the destination side, and when communicating through an intermediary, `source.address` **SHOULD** represent the source address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SOURCE_ADDRESS = 'source.address'; +/** + * Source port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SOURCE_PORT = 'source.port'; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +export const ATTR_STATE = 'state'; +/** + * Enum value "idle" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const STATE_VALUE_IDLE = "idle"; +/** + * Enum value "used" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const STATE_VALUE_USED = "used"; +/** + * Deprecated, use `cpu.logical_number` instead. + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.logical_number`. + */ +export const ATTR_SYSTEM_CPU_LOGICAL_NUMBER = 'system.cpu.logical_number'; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example idle + * @example interrupt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export const ATTR_SYSTEM_CPU_STATE = 'system.cpu.state'; +/** + * Enum value "idle" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_IDLE = "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_INTERRUPT = "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_IOWAIT = "iowait"; +/** + * Enum value "nice" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_NICE = "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_STEAL = "steal"; +/** + * Enum value "system" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_USER = "user"; +/** + * The device identifier + * + * @example (identifier) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_DEVICE = 'system.device'; +/** + * The filesystem mode + * + * @example rw, ro + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_FILESYSTEM_MODE = 'system.filesystem.mode'; +/** + * The filesystem mount path + * + * @example /mnt/data + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT = 'system.filesystem.mountpoint'; +/** + * The filesystem state + * + * @example used + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_FILESYSTEM_STATE = 'system.filesystem.state'; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_STATE_VALUE_FREE = "free"; +/** + * Enum value "reserved" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED = "reserved"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_STATE_VALUE_USED = "used"; +/** + * The filesystem type + * + * @example ext4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_FILESYSTEM_TYPE = 'system.filesystem.type'; +/** + * Enum value "exfat" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT = "exfat"; +/** + * Enum value "ext4" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4 = "ext4"; +/** + * Enum value "fat32" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32 = "fat32"; +/** + * Enum value "hfsplus" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS = "hfsplus"; +/** + * Enum value "ntfs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS = "ntfs"; +/** + * Enum value "refs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_REFS = "refs"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE = 'system.memory.linux.slab.state'; +/** + * Enum value "reclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE = "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE = "unreclaimable"; +/** + * The memory state + * + * @example free + * @example cached + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_MEMORY_STATE = 'system.memory.state'; +/** + * Enum value "buffers" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_STATE_VALUE_BUFFERS = "buffers"; +/** + * Enum value "cached" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_STATE_VALUE_CACHED = "cached"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_STATE_VALUE_FREE = "free"; +/** + * Enum value "shared" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, report shared memory usage with `metric.system.memory.shared` metric + */ +export const SYSTEM_MEMORY_STATE_VALUE_SHARED = "shared"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * Actual used virtual memory in bytes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `network.connection.state` instead. + * + * @example close_wait + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.connection.state`. + */ +export const ATTR_SYSTEM_NETWORK_STATE = 'system.network.state'; +/** + * Enum value "close" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_CLOSE = "close"; +/** + * Enum value "close_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT = "close_wait"; +/** + * Enum value "closing" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_CLOSING = "closing"; +/** + * Enum value "delete" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_DELETE = "delete"; +/** + * Enum value "established" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED = "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1 = "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2 = "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_LAST_ACK = "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_LISTEN = "listen"; +/** + * Enum value "syn_recv" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_SYN_RECV = "syn_recv"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_SYN_SENT = "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT = "time_wait"; +/** + * The paging access direction + * + * @example in + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_PAGING_DIRECTION = 'system.paging.direction'; +/** + * Enum value "in" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_DIRECTION_VALUE_IN = "in"; +/** + * Enum value "out" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_DIRECTION_VALUE_OUT = "out"; +/** + * The paging fault type + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_PAGING_FAULT_TYPE = 'system.paging.fault.type'; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_FAULT_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_FAULT_TYPE_VALUE_MINOR = "minor"; +/** + * The memory paging state + * + * @example free + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_PAGING_STATE = 'system.paging.state'; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_STATE_VALUE_FREE = "free"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +export const ATTR_SYSTEM_PAGING_TYPE = 'system.paging.type'; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_TYPE_VALUE_MINOR = "minor"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +export const ATTR_SYSTEM_PROCESS_STATUS = 'system.process.status'; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT = "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESS_STATUS_VALUE_RUNNING = "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESS_STATUS_VALUE_SLEEPING = "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESS_STATUS_VALUE_STOPPED = "stopped"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +export const ATTR_SYSTEM_PROCESSES_STATUS = 'system.processes.status'; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT = "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESSES_STATUS_VALUE_RUNNING = "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING = "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESSES_STATUS_VALUE_STOPPED = "stopped"; +/** + * The name of the auto instrumentation agent or distribution, if used. + * + * @example parts-unlimited-java + * + * @note Official auto instrumentation agents and distributions **SHOULD** set the `telemetry.distro.name` attribute to + * a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TELEMETRY_DISTRO_NAME = 'telemetry.distro.name'; +/** + * The version string of the auto instrumentation agent or distribution, if used. + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TELEMETRY_DISTRO_VERSION = 'telemetry.distro.version'; +/** + * The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case). + * + * @example org.example.TestCase1.test1 + * @example example/tests/TestCase1.test1 + * @example ExampleTestCase1_test1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TEST_CASE_NAME = 'test.case.name'; +/** + * The status of the actual test case result from test execution. + * + * @example pass + * @example fail + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TEST_CASE_RESULT_STATUS = 'test.case.result.status'; +/** + * Enum value "fail" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * fail + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_CASE_RESULT_STATUS_VALUE_FAIL = "fail"; +/** + * Enum value "pass" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * pass + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_CASE_RESULT_STATUS_VALUE_PASS = "pass"; +/** + * The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite). + * + * @example TestSuite1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TEST_SUITE_NAME = 'test.suite.name'; +/** + * The status of the test suite run. + * + * @example success + * @example failure + * @example skipped + * @example aborted + * @example timed_out + * @example in_progress + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TEST_SUITE_RUN_STATUS = 'test.suite.run.status'; +/** + * Enum value "aborted" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * aborted + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_ABORTED = "aborted"; +/** + * Enum value "failure" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_FAILURE = "failure"; +/** + * Enum value "in_progress" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * in_progress + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS = "in_progress"; +/** + * Enum value "skipped" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * skipped + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_SKIPPED = "skipped"; +/** + * Enum value "success" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * success + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_SUCCESS = "success"; +/** + * Enum value "timed_out" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * timed_out + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT = "timed_out"; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @example 42 + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().threadId()` | + * | .NET | `Thread.CurrentThread.ManagedThreadId` | + * | Python | `threading.current_thread().ident` | + * | Ruby | `Thread.current.object_id` | + * | C++ | `std::this_thread::get_id()` | + * | Erlang | `erlang:self()` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_THREAD_ID = 'thread.id'; +/** + * Current thread name. + * + * @example "main" + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().getName()` | + * | .NET | `Thread.CurrentThread.Name` | + * | Python | `threading.current_thread().name` | + * | Ruby | `Thread.current.name` | + * | Erlang | `erlang:process_info(self(), registered_name)` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_THREAD_NAME = 'thread.name'; +/** + * String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection. + * + * @example TLS_RSA_WITH_3DES_EDE_CBC_SHA + * @example TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + * + * @note The values allowed for `tls.cipher` **MUST** be one of the `Descriptions` of the [registered TLS Cipher Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CIPHER = 'tls.cipher'; +/** + * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_CERTIFICATE = 'tls.client.certificate'; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_CERTIFICATE_CHAIN = 'tls.client.certificate_chain'; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_HASH_MD5 = 'tls.client.hash.md5'; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_HASH_SHA1 = 'tls.client.hash.sha1'; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_HASH_SHA256 = 'tls.client.hash.sha256'; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_ISSUER = 'tls.client.issuer'; +/** + * A hash that identifies clients based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_JA3 = 'tls.client.ja3'; +/** + * Date/Time indicating when client certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_NOT_AFTER = 'tls.client.not_after'; +/** + * Date/Time indicating when client certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_NOT_BEFORE = 'tls.client.not_before'; +/** + * Deprecated, use `server.address` instead. + * + * @example opentelemetry.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export const ATTR_TLS_CLIENT_SERVER_NAME = 'tls.client.server_name'; +/** + * Distinguished name of subject of the x.509 certificate presented by the client. + * + * @example CN=myclient, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_SUBJECT = 'tls.client.subject'; +/** + * Array of ciphers offered by the client during the client hello. + * + * @example ["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_SUPPORTED_CIPHERS = 'tls.client.supported_ciphers'; +/** + * String indicating the curve used for the given cipher, when applicable + * + * @example secp256r1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CURVE = 'tls.curve'; +/** + * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_ESTABLISHED = 'tls.established'; +/** + * String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. + * + * @example http/1.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_NEXT_PROTOCOL = 'tls.next_protocol'; +/** + * Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_PROTOCOL_NAME = 'tls.protocol.name'; +/** + * Enum value "ssl" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TLS_PROTOCOL_NAME_VALUE_SSL = "ssl"; +/** + * Enum value "tls" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TLS_PROTOCOL_NAME_VALUE_TLS = "tls"; +/** + * Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @example 1.2 + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_PROTOCOL_VERSION = 'tls.protocol.version'; +/** + * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_RESUMED = 'tls.resumed'; +/** + * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_CERTIFICATE = 'tls.server.certificate'; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_CERTIFICATE_CHAIN = 'tls.server.certificate_chain'; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_HASH_MD5 = 'tls.server.hash.md5'; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_HASH_SHA1 = 'tls.server.hash.sha1'; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_HASH_SHA256 = 'tls.server.hash.sha256'; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_ISSUER = 'tls.server.issuer'; +/** + * A hash that identifies servers based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_JA3S = 'tls.server.ja3s'; +/** + * Date/Time indicating when server certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_NOT_AFTER = 'tls.server.not_after'; +/** + * Date/Time indicating when server certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_NOT_BEFORE = 'tls.server.not_before'; +/** + * Distinguished name of subject of the x.509 certificate presented by the server. + * + * @example CN=myserver, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_SUBJECT = 'tls.server.subject'; +/** + * Domain extracted from the `url.full`, such as "opentelemetry.io". + * + * @example www.foo.bar + * @example opentelemetry.io + * @example 3.12.167.2 + * @example [1080:0:0:0:8:800:200C:417A] + * + * @note In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the domain field. If the URL contains a [literal IPv6 address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by `[` and `]`, the `[` and `]` characters should also be captured in the domain field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_DOMAIN = 'url.domain'; +/** + * The file extension extracted from the `url.full`, excluding the leading dot. + * + * @example png + * @example gz + * + * @note The file extension is only set if it exists, as not every url has a file extension. When the file name has multiple extensions `example.tar.gz`, only the last one should be captured `gz`, not `tar.gz`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_EXTENSION = 'url.extension'; +/** + * Unmodified original URL as seen in the event source. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example search?q=OpenTelemetry + * + * @note In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not. + * `url.original` might contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case password and username **SHOULD NOT** be redacted and attribute's value **SHOULD** remain the same. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_ORIGINAL = 'url.original'; +/** + * Port extracted from the `url.full` + * + * @example 443 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_PORT = 'url.port'; +/** + * The highest registered url domain, stripped of the subdomain. + * + * @example example.com + * @example foo.co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). For example, the registered domain for `foo.example.com` is `example.com`. Trying to approximate this by simply taking the last two labels will not work well for TLDs such as `co.uk`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_REGISTERED_DOMAIN = 'url.registered_domain'; +/** + * The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + * + * @example east + * @example sub2.sub1 + * + * @note The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, with no trailing period. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_SUBDOMAIN = 'url.subdomain'; +/** + * The low-cardinality template of an [absolute path reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2). + * + * @example /users/{id} + * @example /users/:id + * @example /users?id={id} + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_TEMPLATE = 'url.template'; +/** + * The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is `com`. + * + * @example com + * @example co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_TOP_LEVEL_DOMAIN = 'url.top_level_domain'; +/** + * User email address. + * + * @example a.einstein@example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_EMAIL = 'user.email'; +/** + * User's full name + * + * @example Albert Einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_FULL_NAME = 'user.full_name'; +/** + * Unique user hash to correlate information for a user in anonymized form. + * + * @example 364fc68eaf4c8acec74a4e52d7d1feaa + * + * @note Useful if `user.id` or `user.name` contain confidential information and cannot be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_HASH = 'user.hash'; +/** + * Unique identifier of the user. + * + * @example S-1-5-21-202424912787-2692429404-2351956786-1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_ID = 'user.id'; +/** + * Short name or login/username of the user. + * + * @example a.einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_NAME = 'user.name'; +/** + * Array of user roles at the time of the event. + * + * @example ["admin", "reporting_user"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_ROLES = 'user.roles'; +/** + * Name of the user-agent extracted from original. Usually refers to the browser's name. + * + * @example Safari + * @example YourApp + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name **SHOULD** be selected. In such a scenario it should align with `user_agent.version` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_AGENT_NAME = 'user_agent.name'; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @note For mapping user agent strings to OS names, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_AGENT_OS_NAME = 'user_agent.os.name'; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @note For mapping user agent strings to OS versions, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_AGENT_OS_VERSION = 'user_agent.os.version'; +/** + * Specifies the category of synthetic traffic, such as tests or bots. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type'; +/** + * Enum value "bot" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Bot source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = "bot"; +/** + * Enum value "test" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Synthetic test source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = "test"; +/** + * Version of the user-agent extracted from original. Usually refers to the browser's version + * + * @example 14.1.2 + * @example 1.0.0 + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version **SHOULD** be selected. In such a scenario it should align with `user_agent.name` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_AGENT_VERSION = 'user_agent.version'; +/** + * The type of garbage collection. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_V8JS_GC_TYPE = 'v8js.gc.type'; +/** + * Enum value "incremental" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Incremental (Incremental Marking). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_GC_TYPE_VALUE_INCREMENTAL = "incremental"; +/** + * Enum value "major" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Major (Mark Sweep Compact). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_GC_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Minor (Scavenge). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_GC_TYPE_VALUE_MINOR = "minor"; +/** + * Enum value "weakcb" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Weak Callbacks (Process Weak Callbacks). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_GC_TYPE_VALUE_WEAKCB = "weakcb"; +/** + * The name of the space type of heap memory. + * + * @note Value can be retrieved from value `space_name` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_V8JS_HEAP_SPACE_NAME = 'v8js.heap.space.name'; +/** + * Enum value "code_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Code memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE = "code_space"; +/** + * Enum value "large_object_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Large object memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE = "large_object_space"; +/** + * Enum value "map_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Map memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE = "map_space"; +/** + * Enum value "new_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * New memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE = "new_space"; +/** + * Enum value "old_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Old memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE = "old_space"; +/** + * The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_CHANGE_ID = 'vcs.change.id'; +/** + * The state of the change (pull request/merge request/changelist). + * + * @example open + * @example closed + * @example merged + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_CHANGE_STATE = 'vcs.change.state'; +/** + * Enum value "closed" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Closed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_CHANGE_STATE_VALUE_CLOSED = "closed"; +/** + * Enum value "merged" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Merged indicates that the change has been successfully integrated into the target codebase. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_CHANGE_STATE_VALUE_MERGED = "merged"; +/** + * Enum value "open" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Open means the change is currently active and under review. It hasn't been merged into the target branch yet, and it's still possible to make changes or add comments. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_CHANGE_STATE_VALUE_OPEN = "open"; +/** + * Enum value "wip" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * WIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_CHANGE_STATE_VALUE_WIP = "wip"; +/** + * The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_CHANGE_TITLE = 'vcs.change.title'; +/** + * The type of line change being measured on a branch or change. + * + * @example added + * @example removed + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_LINE_CHANGE_TYPE = 'vcs.line_change.type'; +/** + * Enum value "added" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_LINE_CHANGE_TYPE_VALUE_ADDED = "added"; +/** + * Enum value "removed" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_LINE_CHANGE_TYPE_VALUE_REMOVED = "removed"; +/** + * The group owner within the version control system. + * + * @example my-org + * @example myteam + * @example business-unit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_OWNER_NAME = 'vcs.owner.name'; +/** + * The name of the version control system provider. + * + * @example github + * @example gitlab + * @example gitea + * @example bitbucket + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_PROVIDER_NAME = 'vcs.provider.name'; +/** + * Enum value "bitbucket" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Bitbucket](https://bitbucket.org) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_PROVIDER_NAME_VALUE_BITBUCKET = "bitbucket"; +/** + * Enum value "gitea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Gitea](https://gitea.io) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_PROVIDER_NAME_VALUE_GITEA = "gitea"; +/** + * Enum value "github" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitHub](https://github.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_PROVIDER_NAME_VALUE_GITHUB = "github"; +/** + * Enum value "gitlab" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitLab](https://gitlab.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_PROVIDER_NAME_VALUE_GITLAB = "gitlab"; +/** + * Enum value "gittea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * Deprecated, use `gitea` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gitea`. + */ +export const VCS_PROVIDER_NAME_VALUE_GITTEA = "gittea"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_BASE_NAME = 'vcs.ref.base.name'; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. The + * revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.base.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_BASE_REVISION = 'vcs.ref.base.revision'; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_BASE_TYPE = 'vcs.ref.base.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_BASE_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_BASE_TYPE_VALUE_TAG = "tag"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_HEAD_NAME = 'vcs.ref.head.name'; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `head` refers to where you are right now; the current reference at a + * given time.The revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.head.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_HEAD_REVISION = 'vcs.ref.head.revision'; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_HEAD_TYPE = 'vcs.ref.head.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_HEAD_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_HEAD_TYPE_VALUE_TAG = "tag"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_TYPE = 'vcs.ref.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_TYPE_VALUE_TAG = "tag"; +/** + * Deprecated, use `vcs.change.id` instead. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.id`. + */ +export const ATTR_VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id'; +/** + * Deprecated, use `vcs.change.title` instead. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.title`. + */ +export const ATTR_VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title'; +/** + * The human readable name of the repository. It **SHOULD NOT** include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. + * + * @example semantic-conventions + * @example my-cool-repo + * + * @note Due to it only being the name, it can clash with forks of the same + * repository if collecting telemetry across multiple orgs or groups in + * the same backends. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REPOSITORY_NAME = 'vcs.repository.name'; +/** + * Deprecated, use `vcs.ref.head.name` instead. + * + * @example my-feature-branch + * @example tag-1-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.name`. + */ +export const ATTR_VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name'; +/** + * Deprecated, use `vcs.ref.head.revision` instead. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.revision`. + */ +export const ATTR_VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision'; +/** + * Deprecated, use `vcs.ref.head.type` instead. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.type`. + */ +export const ATTR_VCS_REPOSITORY_REF_TYPE = 'vcs.repository.ref.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REPOSITORY_REF_TYPE_VALUE_TAG = "tag"; +/** + * The [canonical URL](https://support.google.com/webmasters/answer/10347851) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. + * + * @example https://github.com/opentelemetry/open-telemetry-collector-contrib + * @example https://gitlab.com/my-org/my-project/my-projects-project/repo + * + * @note In Git Version Control Systems, the canonical URL **SHOULD NOT** include + * the `.git` extension. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REPOSITORY_URL_FULL = 'vcs.repository.url.full'; +/** + * The type of revision comparison. + * + * @example ahead + * @example behind + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REVISION_DELTA_DIRECTION = 'vcs.revision_delta.direction'; +/** + * Enum value "ahead" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is ahead of the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD = "ahead"; +/** + * Enum value "behind" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is behind the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND = "behind"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description'; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_NAME = 'webengine.name'; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_VERSION = 'webengine.version'; +/** + * The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis. + * + * @example SYS1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ZOS_SMF_ID = 'zos.smf.id'; +/** + * The name of the SYSPLEX to which the z/OS system belongs too. + * + * @example SYSPLEX1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ZOS_SYSPLEX_NAME = 'zos.sysplex.name'; +//# sourceMappingURL=experimental_attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js.map new file mode 100644 index 0000000..bb4bbf2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"experimental_attributes.js","sourceRoot":"","sources":["../../src/experimental_attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4GAA4G;AAC5G,8GAA8G;AAC9G,4GAA4G;AAE5G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,YAAqB,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,SAAkB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,YAAqB,CAAC;AAExE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAkB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,SAAkB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,MAAe,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,SAAkB,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,SAAkB,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,SAAkB,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,SAAkB,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gEAAgE,GAAG,kBAA2B,CAAC;AAE5G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,SAAkB,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qEAAqE,GAAG,uBAAgC,CAAC;AAEtH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4DAA4D,GAAG,cAAuB,CAAC;AAEpG;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,SAAkB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mDAAmD,GAAG,YAAqB,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,aAAsB,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4DAA4D,GAAG,qBAA8B,CAAC;AAE3G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,SAAkB,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,UAAmB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,SAAkB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,UAAmB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,YAAqB,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+DAA+D,GAAG,0BAAmC,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+DAA+D,GAAG,0BAAmC,CAAC;AAEnH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,QAAiB,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,cAAuB,CAAC;AAE5F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2DAA2D,GAAG,qBAA8B,CAAC;AAE1G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,oBAA6B,CAAC;AAExG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,gBAAyB,CAAC;AAEhG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,YAAqB,CAAC;AAExF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,SAAkB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,SAAkB,CAAC;AAEnF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,QAAiB,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wDAAwD,GAAG,eAAwB,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,YAAqB,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,WAAoB,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,cAAuB,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,cAAuB,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,cAAuB,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,iBAA0B,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8DAA8D,GAAG,qBAA8B,CAAC;AAE7G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wDAAwD,GAAG,eAAwB,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iFAAiF,GAAG,wCAAiD,CAAC;AAEnJ;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,iBAA0B,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0EAA0E,GAAG,iCAA0C,CAAC;AAErI;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sEAAsE,GAAG,6BAAsC,CAAC;AAE7H;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wDAAwD,GAAG,eAAwB,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4DAA4D,GAAG,mBAA4B,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,cAAuB,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yDAAyD,GAAG,gBAAyB,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,iBAA0B,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wDAAwD,GAAG,eAAwB,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oEAAoE,GAAG,2BAAoC,CAAC;AAEzH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kEAAkE,GAAG,yBAAkC,CAAC;AAErH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yDAAyD,GAAG,gBAAyB,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yDAAyD,GAAG,gBAAyB,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mEAAmE,GAAG,0BAAmC,CAAC;AAEvH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,WAAoB,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8DAA8D,GAAG,qBAA8B,CAAC;AAE7G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+DAA+D,GAAG,sBAA+B,CAAC;AAE/G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,aAAsB,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2DAA2D,GAAG,kBAA2B,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iEAAiE,GAAG,wBAAiC,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,QAAiB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,WAAoB,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,6CAAsD,CAAC;AAEvH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,wCAAiD,CAAC;AAE7G;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAc,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,SAAkB,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,QAAiB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,SAAkB,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wDAAwD,GAAG,kBAA2B,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wDAAwD,GAAG,kBAA2B,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,UAAmB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,SAAkB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,QAAiB,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,4CAAqD,CAAC;AAErH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,KAAc,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,KAAc,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,aAAsB,CAAC;AAEpF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,WAAoB,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,cAAuB,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,cAAuB,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,KAAc,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,QAAiB,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,QAAiB,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,OAAgB,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,KAAc,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,OAAgB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,KAAc,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,MAAe,CAAC;AAEpE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,cAAuB,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAgB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAe,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,WAAoB,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,YAAqB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,SAAkB,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,cAAuB,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,OAAgB,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,SAAkB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,MAAe,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,SAAkB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,SAAkB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,OAAgB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,QAAiB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,WAAoB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,SAAkB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sBAA+B,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kBAA2B,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,yBAAkC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gBAAyB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,uBAAgC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,YAAqB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sBAA+B,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,2BAAoC,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iBAA0B,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iBAA0B,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAmB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kBAA2B,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gBAAyB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,yBAAkC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,qBAA8B,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oBAA6B,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,uBAAgC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sBAA+B,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,qBAA8B,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sBAA+B,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kBAA2B,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,qBAA8B,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,cAAuB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAc,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAc,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAiB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,cAAuB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAe,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAoB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAiB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAiB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAe,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAgB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAiB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAe,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAU,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAU,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAU,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,KAAc,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,KAAc,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,aAAsB,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,WAAoB,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,cAAuB,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,cAAuB,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,KAAc,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,QAAiB,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,QAAiB,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,OAAgB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,KAAc,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,0CAAmD,CAAC;AAEjH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,MAAe,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,MAAe,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,QAAiB,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,SAAkB,CAAC;AAE5E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,kBAA2B,CAAC;AAEjG;;;;GAIG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,kBAA2B,CAAC;AAEjG;;;;GAIG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,UAAmB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,SAAkB,CAAC;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,QAAiB,CAAC;AAE5E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,mDAAmD,GAAG,oBAA6B,CAAC;AAEjG;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,WAAoB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,YAAqB,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,WAAoB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,+BAA+B,GAAG,EAAE,CAAC;AAEtG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,0BAA0B,GAAG,EAAE,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,sBAAsB,GAAG,EAAE,CAAC;AAEpF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,aAAsB,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAc,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAc,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,eAAwB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAa,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAe,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,oBAA6B,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,cAAuB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,cAAuB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,cAAuB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gBAAyB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,YAAqB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAsB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAsB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAsB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,YAAqB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAe,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAiB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,cAAuB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAsB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAmB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oBAA6B,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,YAAqB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAmB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAiB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAmB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,WAAoB,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAgB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,QAAiB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,QAAiB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,eAAwB,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAc,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,OAAgB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAc,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,eAAwB,CAAC;AAElF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAqB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAe,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAgB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAgB,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,QAAiB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,SAAkB,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,UAAmB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,OAAgB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,OAAgB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,OAAgB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,QAAiB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,iBAA0B,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,SAAkB,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,UAAmB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,iBAA0B,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,MAAe,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,KAAc,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,QAAiB,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,kBAA2B,CAAC;AAEtG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,aAAsB,CAAC;AAE5F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,YAAqB,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,SAAkB,CAAC;AAEpF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,MAAe,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,MAAe,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,KAAc,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,QAAiB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2DAA2D,GAAG,kBAA2B,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,aAAsB,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,YAAqB,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,SAAkB,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,MAAe,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,8CAAuD,CAAC;AAEzH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,6CAAsD,CAAC;AAEvH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,iDAA0D,CAAC;AAE/H;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,MAAe,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yDAAyD,GAAG,KAAc,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4DAA4D,GAAG,QAAiB,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sEAAsE,GAAG,kBAA2B,CAAC;AAElH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,iDAA0D,CAAC;AAE/H;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iEAAiE,GAAG,aAAsB,CAAC;AAExG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gEAAgE,GAAG,YAAqB,CAAC;AAEtG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6DAA6D,GAAG,SAAkB,CAAC;AAEhG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,MAAe,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;GAIG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,kDAA2D,CAAC;AAEjI;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2DAA2D,GAAG,MAAe,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,KAAc,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6DAA6D,GAAG,QAAiB,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uEAAuE,GAAG,kBAA2B,CAAC;AAEnH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,kDAA2D,CAAC;AAEjI;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kEAAkE,GAAG,aAAsB,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iEAAiE,GAAG,YAAqB,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8DAA8D,GAAG,SAAkB,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2DAA2D,GAAG,MAAe,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,aAAsB,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,aAAsB,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,MAAe,CAAC;AAEhF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,MAAe,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,SAAkB,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAe,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,cAAuB,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,YAAqB,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,cAAuB,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,kBAA2B,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,cAAuB,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,iBAA0B,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,OAAgB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,QAAiB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,aAAsB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,oBAA6B,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,iBAA0B,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,QAAiB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,eAAwB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAe,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,gBAAyB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,QAAiB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAe,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,WAAoB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,aAAsB,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,iBAA0B,CAAC;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,cAAuB,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,oBAA6B,CAAC;AAEpF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,iBAA0B,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAmB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,eAAwB,CAAC;AAE1E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAe,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,gBAAyB,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,WAAoB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAc,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAgB,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,QAAiB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,UAAmB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,OAAgB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,cAAuB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAe,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAc,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,QAAiB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAe,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAe,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAe,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,OAAgB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,0CAAmD,CAAC;AAEjH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,aAAsB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAkB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAkB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAkB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAgB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAmB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAmB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,eAAwB,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,eAAwB,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,cAAuB,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,cAAuB,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAc,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,WAAoB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAgB,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAe,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAe,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,WAAoB,CAAC;AAE3E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAmB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAiB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,gBAAyB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAa,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,mBAA4B,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,OAAgB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,OAAgB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,SAAkB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAc,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,iBAA0B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAoB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAc,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAc,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAuB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAiB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,eAAwB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAuB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAqB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAsB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAmB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,WAAoB,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,6CAAsD,CAAC;AAEvH;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,WAAoB,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,oBAA6B,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,mBAA4B,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,kBAA2B,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+DAA+D,GAAG,4BAAqC,CAAC;AAErH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,cAAuB,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,OAAgB,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,kBAA2B,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,WAAoB,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,YAAqB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,0BAA0B,GAAG,EAAE,CAAC;AAE5F;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,qBAAqB,GAAG,EAAE,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,4BAA4B,GAAG,EAAE,CAAC;AAEhG;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,6BAA6B,GAAG,EAAE,CAAC;AAElG;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,sBAAsB,GAAG,EAAE,CAAC;AAEpF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,4BAA4B,GAAG,EAAE,CAAC;AAEhG;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,aAAsB,CAAC;AAE5E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAEtF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,OAAgB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,MAAe,CAAC;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,SAAkB,CAAC;AAEpF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,cAAuB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,gBAAyB,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,oBAA6B,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,aAAsB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,OAAgB,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,sBAAsB,GAAG,EAAE,CAAC;AAEpF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAE1E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,QAAiB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,cAAuB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,UAAmB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,UAAmB,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,0BAAmC,CAAC;AAE1G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,6BAA6B,GAAG,EAAE,CAAC;AAElG;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,8BAA8B,GAAG,EAAE,CAAC;AAEpG;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAyB,GAAG,EAAE,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,WAAoB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,aAAsB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAgB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,uBAAgC,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,QAAiB,CAAC;AAE9D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,aAAsB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,eAAwB,CAAC;AAEpF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAE3D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,qBAA8B,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,oBAA6B,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,YAAqB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kBAA2B,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,yBAAkC,CAAC;AAEhG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,2BAAoC,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,uBAAgC,CAAC;AAE5F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,wBAAiC,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wDAAwD,GAAG,oCAA6C,CAAC;AAEtH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,sCAA+C,CAAC;AAE1H;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,iCAA0C,CAAC;AAEhH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,kCAA2C,CAAC;AAElH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,kCAA2C,CAAC;AAElH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAe,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,aAAsB,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,cAAuB,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,gBAAyB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,gBAAyB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,qBAA8B,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,0BAAmC,CAAC;AAElG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,uBAAgC,CAAC;AAE5F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,YAAqB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wBAAiC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,YAAqB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,YAAqB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAmB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAe,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,+CAAwD,CAAC;AAE3H;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,QAAiB,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAe,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,QAAiB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,4CAAqD,CAAC;AAErH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,cAAuB,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,YAAqB,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,6CAAsD,CAAC;AAEvH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,+CAAwD,CAAC;AAE3H;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,OAAgB,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,MAAe,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,QAAiB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,aAAsB,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,oDAA6D,CAAC;AAErI;;;;GAIG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,SAAkB,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,UAAmB,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yDAAyD,GAAG,aAAsB,CAAC;AAEhG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mDAAmD,GAAG,OAAgB,CAAC;AAEpF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,6CAAsD,CAAC;AAEvH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,4CAAqD,CAAC;AAErH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,SAAkB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,SAAkB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,WAAoB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,WAAoB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,YAAqB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,OAAgB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,QAAiB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,YAAqB,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAe,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAgB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAe,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAgB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAe,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,YAAqB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,QAAiB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,aAAsB,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,YAAqB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,YAAqB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,UAAmB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,QAAiB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,cAAuB,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,UAAmB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,WAAoB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,gBAAyB,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,KAAc,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,KAAc,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAa,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,UAAmB,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,aAAsB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,SAAkB,CAAC;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,OAAgB,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,QAAiB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,MAAe,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,SAAkB,CAAC;AAE5E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,cAAuB,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAc,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAiB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAuB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAe,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAgB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAiB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAe,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAc,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,wBAAiC,CAAC;AAElG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,yBAAkC,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,wBAAiC,CAAC;AAElG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mDAAmD,GAAG,2BAAoC,CAAC;AAExG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,yBAAkC,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,6BAAsC,CAAC;AAE5G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wDAAwD,GAAG,gCAAyC,CAAC;AAElH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,8BAAuC,CAAC;AAE9G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,wBAAiC,CAAC;AAElG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mDAAmD,GAAG,2BAAoC,CAAC;AAExG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,yBAAkC,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,wBAAiC,CAAC;AAElG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8DAA8D,GAAG,sCAA+C,CAAC;AAE9H;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,sBAA+B,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,uBAAgC,CAAC;AAEhG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mDAAmD,GAAG,2BAAoC,CAAC;AAExG;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,OAAgB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,QAAiB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,MAAe,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,mBAA4B,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,aAAsB,CAAC;AAElF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,aAAsB,CAAC;AAEpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,WAAoB,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,gCAAgC,GAAG,EAAE,CAAC;AAExG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,OAAgB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,OAAgB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAkB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAkB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAmB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAkB,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,SAAkB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,QAAiB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAc,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,QAAiB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,QAAiB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAc,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,gBAAyB,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,WAAoB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,WAAoB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,mBAA4B,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,qBAA8B,CAAC;AAEnG;;;;GAIG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,UAAmB,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,kBAA2B,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,WAAoB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,cAAuB,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,mBAA4B,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,mDAAmD,GAAG,oBAA6B,CAAC;AAEjG;;;;GAIG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,iBAA0B,CAAC;AAE3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,aAAsB,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,eAAwB,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,oCAAoC,GAAG,EAAE,CAAC;AAEhH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,qCAAqC,GAAG,EAAE,CAAC;AAElH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,6BAA6B,GAAG,EAAE,CAAC;AAElG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,8BAA8B,GAAG,EAAE,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAU,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAU,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAU,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,CAAU,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAU,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAU,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,CAAU,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAU,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,CAAU,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,CAAU,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAW,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,EAAW,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,EAAW,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,EAAW,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAW,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAW,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,EAAW,CAAC;AAEtE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAe,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC;AAExF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAyB,GAAG,EAAE,CAAC;AAE1F;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,cAAuB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,aAAsB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,YAAqB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAe,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAmB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAkB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAkB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,YAAqB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAgB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAe,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,SAAkB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAgB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAe,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAe,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAe,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,WAAoB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,QAAiB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAe,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,OAAgB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,QAAiB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAe,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,UAAmB,CAAC;AAE1E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,OAAgB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,OAAgB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,SAAkB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,aAAsB,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,eAAwB,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,SAAkB,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAgB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,QAAiB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,aAAsB,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,QAAiB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAa,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAc,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAgB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAgB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,OAAgB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,OAAgB,CAAC;AAE/D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,UAAmB,CAAC;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,SAAkB,CAAC;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,SAAkB,CAAC;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,UAAmB,CAAC;AAE1E;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,SAAkB,CAAC;AAExE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,aAAsB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,WAAoB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAc,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAc,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,KAAc,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,MAAe,CAAC;AAEpE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,aAAsB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAgB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAgB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,oBAA6B,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,QAAiB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,QAAiB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAe,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAgB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,WAAoB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAgB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAc,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAc,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAc,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,QAAiB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAc,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,OAAgB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,QAAiB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * This attribute represents the state of the application.\n *\n * @example created\n *\n * @note The Android lifecycle states are defined in [Activity lifecycle callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), and from which the `OS identifiers` are derived.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ANDROID_APP_STATE = 'android.app.state' as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_ANDROID_APP_STATE}.\n *\n * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_APP_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"created\" for attribute {@link ATTR_ANDROID_APP_STATE}.\n *\n * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_APP_STATE_VALUE_CREATED = \"created\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_ANDROID_APP_STATE}.\n *\n * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_APP_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found in the [Android API levels documentation](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels).\n *\n * @example 33\n * @example 32\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ANDROID_OS_API_LEVEL = 'android.os.api_level' as const;\n\n/**\n * Deprecated. Use `android.app.state` attribute 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 `android.app.state`.\n */\nexport const ATTR_ANDROID_STATE = 'android.state' as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_ANDROID_STATE}.\n *\n * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"created\" for attribute {@link ATTR_ANDROID_STATE}.\n *\n * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_STATE_VALUE_CREATED = \"created\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_ANDROID_STATE}.\n *\n * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Unique identifier for a particular build or compilation of the application.\n *\n * @example 6cff0a7e-cefc-4668-96f5-1273d8b334d0\n * @example 9f2b833506aa6973a92fde9733e6271f\n * @example my-app-1.0.0-code-123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_BUILD_ID = 'app.build_id' as const;\n\n/**\n * A unique identifier representing the installation of an application on a specific device\n *\n * @example 2ab2916d-a51f-4ac8-80ee-45ac31a28092\n *\n * @note Its value **SHOULD** persist across launches of the same application installation, including through application upgrades.\n * It **SHOULD** change if the application is uninstalled or if all applications of the vendor are uninstalled.\n * Additionally, users might be able to reset this value (e.g. by clearing application data).\n * If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` **SHOULD** have a different value.\n * If multiple OpenTelemetry SDKs are used within the same application, they **SHOULD** use the same value for `app.installation.id`.\n * Hardware IDs (e.g. serial number, IMEI, MAC address) **MUST NOT** be used as the `app.installation.id`.\n *\n * For iOS, this value **SHOULD** be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor).\n *\n * For Android, examples of `app.installation.id` implementations include:\n *\n * - [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations).\n * - A globally unique UUID which is persisted across sessions in your application.\n * - [App set ID](https://developer.android.com/identity/app-set-id).\n * - [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID).\n *\n * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_INSTALLATION_ID = 'app.installation.id' as const;\n\n/**\n * A number of frame renders that experienced jank.\n *\n * @example 9\n * @example 42\n *\n * @note Depending on platform limitations, the value provided **MAY** be approximation.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_JANK_FRAME_COUNT = 'app.jank.frame_count' as const;\n\n/**\n * The time period, in seconds, for which this jank is being reported.\n *\n * @example 1.0\n * @example 5.0\n * @example 10.24\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_JANK_PERIOD = 'app.jank.period' as const;\n\n/**\n * The minimum rendering threshold for this jank, in seconds.\n *\n * @example 0.016\n * @example 0.7\n * @example 1.024\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_JANK_THRESHOLD = 'app.jank.threshold' as const;\n\n/**\n * The x (horizontal) coordinate of a screen coordinate, in screen pixels.\n *\n * @example 0\n * @example 131\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_COORDINATE_X = 'app.screen.coordinate.x' as const;\n\n/**\n * The y (vertical) component of a screen coordinate, in screen pixels.\n *\n * @example 12\n * @example 99\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_COORDINATE_Y = 'app.screen.coordinate.y' as const;\n\n/**\n * An identifier that uniquely differentiates this screen from other screens in the same application.\n *\n * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3\n * @example com.example.app.MainActivity\n * @example com.example.shop.ProductDetailFragment\n * @example MyApp.ProfileView\n * @example MyApp.ProfileViewController\n *\n * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_ID = 'app.screen.id' as const;\n\n/**\n * The name of an application screen.\n *\n * @example MainActivity\n * @example ProductDetailFragment\n * @example ProfileView\n * @example ProfileViewController\n *\n * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_NAME = 'app.screen.name' as const;\n\n/**\n * An identifier that uniquely differentiates this widget from other widgets in the same application.\n *\n * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3\n * @example submit_order_1829\n *\n * @note A widget is an application component, typically an on-screen visual GUI element.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_WIDGET_ID = 'app.widget.id' as const;\n\n/**\n * The name of an application widget.\n *\n * @example submit\n * @example attack\n * @example Clear Cart\n *\n * @note A widget is an application component, typically an on-screen visual GUI element.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_WIDGET_NAME = 'app.widget.name' as const;\n\n/**\n * The provenance filename of the built attestation which directly relates to the build artifact filename. This filename **SHOULD** accompany the artifact at publish time. See the [SLSA Relationship](https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations) specification for more information.\n *\n * @example golang-binary-amd64-v0.1.0.attestation\n * @example docker-image-amd64-v0.1.0.intoto.json1\n * @example release-1.tar.gz.attestation\n * @example file-name-package.tar.gz.intoto.json1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_FILENAME = 'artifact.attestation.filename' as const;\n\n/**\n * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the [software attestation space](https://github.com/in-toto/attestation/tree/main/spec) also refer to this as the **digest**.\n *\n * @example 1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_HASH = 'artifact.attestation.hash' as const;\n\n/**\n * The id of the build [software attestation](https://slsa.dev/attestation-model).\n *\n * @example 123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_ID = 'artifact.attestation.id' as const;\n\n/**\n * The human readable file name of the artifact, typically generated during build and release processes. Often includes the package name and version in the file name.\n *\n * @example golang-binary-amd64-v0.1.0\n * @example docker-image-amd64-v0.1.0\n * @example release-1.tar.gz\n * @example file-name-package.tar.gz\n *\n * @note This file name can also act as the [Package Name](https://slsa.dev/spec/v1.0/terminology#package-model)\n * in cases where the package ecosystem maps accordingly.\n * Additionally, the artifact [can be published](https://slsa.dev/spec/v1.0/terminology#software-supply-chain)\n * for others, but that is not a guarantee.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_FILENAME = 'artifact.filename' as const;\n\n/**\n * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), often found in checksum.txt on a release of the artifact and used to verify package integrity.\n *\n * @example 9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9\n *\n * @note The specific algorithm used to create the cryptographic hash value is\n * not defined. In situations where an artifact has multiple\n * cryptographic hashes, it is up to the implementer to choose which\n * hash value to set here; this should be the most secure hash algorithm\n * that is suitable for the situation and consistent with the\n * corresponding attestation. The implementer can then provide the other\n * hash values through an additional set of attribute extensions as they\n * deem necessary.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_HASH = 'artifact.hash' as const;\n\n/**\n * The [Package URL](https://github.com/package-url/purl-spec) of the [package artifact](https://slsa.dev/spec/v1.0/terminology#package-model) provides a standard way to identify and locate the packaged artifact.\n *\n * @example pkg:github/package-url/purl-spec@1209109710924\n * @example pkg:npm/foo@12.12.3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_PURL = 'artifact.purl' as const;\n\n/**\n * The version of the artifact.\n *\n * @example v0.1.0\n * @example 1.2.1\n * @example 122691-build\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_VERSION = 'artifact.version' as const;\n\n/**\n * The result of the authentication operation.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHENTICATION_RESULT = 'aspnetcore.authentication.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}.\n *\n * Authentication failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"none\" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}.\n *\n * No authentication information returned.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_NONE = \"none\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}.\n *\n * Authentication was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The identifier that names a particular authentication handler.\n *\n * @example Cookies\n * @example Bearer\n * @example Identity.Application\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHENTICATION_SCHEME = 'aspnetcore.authentication.scheme' as const;\n\n/**\n * The name of the authorization policy.\n *\n * @example RequireAdminRole\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHORIZATION_POLICY = 'aspnetcore.authorization.policy' as const;\n\n/**\n * The result of calling the authorization service.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHORIZATION_RESULT = 'aspnetcore.authorization.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}.\n *\n * Authorization failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}.\n *\n * Authorization was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The error code for a failed identity operation.\n *\n * @example DefaultError\n * @example PasswordMismatch\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_ERROR_CODE = 'aspnetcore.identity.error_code' as const;\n\n/**\n * The result from checking the password.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT = 'aspnetcore.identity.password_check_result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"password_missing\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check couldn't proceed because the password was missing from the user.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_PASSWORD_MISSING = \"password_missing\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"success_rehash_needed\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check was successful however the password was encoded using a deprecated algorithm and should be rehashed and updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS_REHASH_NEEDED = \"success_rehash_needed\" as const;\n\n/**\n * Enum value \"user_missing\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check couldn't proceed because the user was missing.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_USER_MISSING = \"user_missing\" as const;\n\n/**\n * The result of the identity operation.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_RESULT = 'aspnetcore.identity.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}.\n *\n * Identity operation failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}.\n *\n * Identity operation was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Whether the sign in result was success or failure.\n *\n * @example password\n * @example two_factor\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT = 'aspnetcore.identity.sign_in.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * Sign in failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"locked_out\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * User is locked out.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_LOCKED_OUT = \"locked_out\" as const;\n\n/**\n * Enum value \"not_allowed\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * User is not allowed to sign in.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_NOT_ALLOWED = \"not_allowed\" as const;\n\n/**\n * Enum value \"requires_two_factor\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * User requires two factory authentication to sign in.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_REQUIRES_TWO_FACTOR = \"requires_two_factor\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * Sign in was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The authentication type.\n *\n * @example password\n * @example two_factor\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE = 'aspnetcore.identity.sign_in.type' as const;\n\n/**\n * Enum value \"external\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with a previously registered third-party login.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_EXTERNAL = \"external\" as const;\n\n/**\n * Enum value \"passkey\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with passkey.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSKEY = \"passkey\" as const;\n\n/**\n * Enum value \"password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with password.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSWORD = \"password\" as const;\n\n/**\n * Enum value \"two_factor\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with a two factor provider.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR = \"two_factor\" as const;\n\n/**\n * Enum value \"two_factor_authenticator\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with two factor authenticator app.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_AUTHENTICATOR = \"two_factor_authenticator\" as const;\n\n/**\n * Enum value \"two_factor_recovery_code\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with two factory recovery code.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_RECOVERY_CODE = \"two_factor_recovery_code\" as const;\n\n/**\n * What the token will be used for.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE = 'aspnetcore.identity.token_purpose' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * Any token purpose that the instrumentation has no prior knowledge of.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"change_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for changing the user email address.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_EMAIL = \"change_email\" as const;\n\n/**\n * Enum value \"change_phone_number\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for changing a user phone number.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_PHONE_NUMBER = \"change_phone_number\" as const;\n\n/**\n * Enum value \"email_confirmation\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for confirming user email address.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_EMAIL_CONFIRMATION = \"email_confirmation\" as const;\n\n/**\n * Enum value \"reset_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for resetting a user password.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_RESET_PASSWORD = \"reset_password\" as const;\n\n/**\n * Enum value \"two_factor\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for changing user two factor settings.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_TWO_FACTOR = \"two_factor\" as const;\n\n/**\n * The result of token verification.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED = 'aspnetcore.identity.token_verified' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}.\n *\n * Token verification failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}.\n *\n * Token verification was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The user update type.\n *\n * @example update\n * @example user_name\n * @example reset_password\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE = 'aspnetcore.identity.user.update_type' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Any update type that the instrumentation has no prior knowledge of.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"access_failed\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user access failure recorded.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ACCESS_FAILED = \"access_failed\" as const;\n\n/**\n * Enum value \"add_claims\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user claims added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_CLAIMS = \"add_claims\" as const;\n\n/**\n * Enum value \"add_login\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user login added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_LOGIN = \"add_login\" as const;\n\n/**\n * Enum value \"add_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_PASSWORD = \"add_password\" as const;\n\n/**\n * Enum value \"add_to_roles\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user added to roles.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_TO_ROLES = \"add_to_roles\" as const;\n\n/**\n * Enum value \"change_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user email changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_EMAIL = \"change_email\" as const;\n\n/**\n * Enum value \"change_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PASSWORD = \"change_password\" as const;\n\n/**\n * Enum value \"change_phone_number\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user phone number changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PHONE_NUMBER = \"change_phone_number\" as const;\n\n/**\n * Enum value \"confirm_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user email confirmed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CONFIRM_EMAIL = \"confirm_email\" as const;\n\n/**\n * Enum value \"generate_new_two_factor_recovery_codes\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user new two-factor recovery codes generated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_GENERATE_NEW_TWO_FACTOR_RECOVERY_CODES = \"generate_new_two_factor_recovery_codes\" as const;\n\n/**\n * Enum value \"password_rehash\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password rehashed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_PASSWORD_REHASH = \"password_rehash\" as const;\n\n/**\n * Enum value \"redeem_two_factor_recovery_code\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user two-factor recovery code redeemed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REDEEM_TWO_FACTOR_RECOVERY_CODE = \"redeem_two_factor_recovery_code\" as const;\n\n/**\n * Enum value \"remove_authentication_token\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user authentication token removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_AUTHENTICATION_TOKEN = \"remove_authentication_token\" as const;\n\n/**\n * Enum value \"remove_claims\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user claims removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_CLAIMS = \"remove_claims\" as const;\n\n/**\n * Enum value \"remove_from_roles\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user removed from roles.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_FROM_ROLES = \"remove_from_roles\" as const;\n\n/**\n * Enum value \"remove_login\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user login removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_LOGIN = \"remove_login\" as const;\n\n/**\n * Enum value \"remove_passkey\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user passkey removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSKEY = \"remove_passkey\" as const;\n\n/**\n * Enum value \"remove_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSWORD = \"remove_password\" as const;\n\n/**\n * Enum value \"replace_claim\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user claim replaced.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REPLACE_CLAIM = \"replace_claim\" as const;\n\n/**\n * Enum value \"reset_access_failed_count\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user access failure count reset.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_ACCESS_FAILED_COUNT = \"reset_access_failed_count\" as const;\n\n/**\n * Enum value \"reset_authenticator_key\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user authenticator key reset.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_AUTHENTICATOR_KEY = \"reset_authenticator_key\" as const;\n\n/**\n * Enum value \"reset_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password reset.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_PASSWORD = \"reset_password\" as const;\n\n/**\n * Enum value \"security_stamp\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user security stamp updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SECURITY_STAMP = \"security_stamp\" as const;\n\n/**\n * Enum value \"set_authentication_token\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user authentication token set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_AUTHENTICATION_TOKEN = \"set_authentication_token\" as const;\n\n/**\n * Enum value \"set_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user email set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_EMAIL = \"set_email\" as const;\n\n/**\n * Enum value \"set_lockout_enabled\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user lockout enabled or disabled.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_ENABLED = \"set_lockout_enabled\" as const;\n\n/**\n * Enum value \"set_lockout_end_date\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user lockout end date set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_END_DATE = \"set_lockout_end_date\" as const;\n\n/**\n * Enum value \"set_passkey\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user passkey set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PASSKEY = \"set_passkey\" as const;\n\n/**\n * Enum value \"set_phone_number\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user phone number set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PHONE_NUMBER = \"set_phone_number\" as const;\n\n/**\n * Enum value \"set_two_factor_enabled\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user two-factor authentication enabled or disabled.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_TWO_FACTOR_ENABLED = \"set_two_factor_enabled\" as const;\n\n/**\n * Enum value \"update\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_UPDATE = \"update\" as const;\n\n/**\n * Enum value \"user_name\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user name updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_USER_NAME = \"user_name\" as const;\n\n/**\n * The full name of the identity user type.\n *\n * @example Contoso.ContosoUser\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_USER_TYPE = 'aspnetcore.identity.user_type' as const;\n\n/**\n * The name of the library or subsystem using the memory pool instance.\n *\n * @example kestrel\n * @example iis\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_MEMORY_POOL_OWNER = 'aspnetcore.memory_pool.owner' as const;\n\n/**\n * A flag indicating whether the sign in is persistent.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_SIGN_IN_IS_PERSISTENT = 'aspnetcore.sign_in.is_persistent' as const;\n\n/**\n * The unique identifier of the AWS Bedrock Guardrail. A [guardrail](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) helps safeguard and prevent unwanted behavior from model responses or user messages.\n *\n * @example sgi5gkybzqak\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_BEDROCK_GUARDRAIL_ID = 'aws.bedrock.guardrail.id' as const;\n\n/**\n * The unique identifier of the AWS Bedrock Knowledge base. A [knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) is a bank of information that can be queried by models to generate more relevant responses and augment prompts.\n *\n * @example XFWUPB9PAW\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_BEDROCK_KNOWLEDGE_BASE_ID = 'aws.bedrock.knowledge_base.id' as const;\n\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @example [\"{ \"AttributeName\": \"string\", \"AttributeType\": \"string\" }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions' as const;\n\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @example [\"lives\", \"id\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get' as const;\n\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read' as const;\n\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @example [\"{ \"CapacityUnits\": number, \"GlobalSecondaryIndexes\": { \"string\" : { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }, \"LocalSecondaryIndexes\": { \"string\" : { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }, \"ReadCapacityUnits\": number, \"Table\": { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number }, \"TableName\": \"string\", \"WriteCapacityUnits\": number }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity' as const;\n\n/**\n * The value of the `Count` response parameter.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count' as const;\n\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @example Users\n * @example CatsTable\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table' as const;\n\n/**\n * The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field.\n *\n * @example [\"{ \"Create\": { \"IndexName\": \"string\", \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates' as const;\n\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field\n *\n * @example [\"{ \"IndexName\": \"string\", \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes' as const;\n\n/**\n * The value of the `IndexName` request parameter.\n *\n * @example name_to_group\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name' as const;\n\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @example { \"string\" : [ { \"ItemCollectionKey\": { \"string\" : { \"B\": blob, \"BOOL\": boolean, \"BS\": [ blob ], \"L\": [ \"AttributeValue\" ], \"M\": { \"string\" : \"AttributeValue\" }, \"N\": \"string\", \"NS\": [ \"string\" ], \"NULL\": boolean, \"S\": \"string\", \"SS\": [ \"string\" ] } }, \"SizeEstimateRangeGB\": [ number ] } ] }\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics' as const;\n\n/**\n * The value of the `Limit` request parameter.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit' as const;\n\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @example [\"{ \"IndexArn\": \"string\", \"IndexName\": \"string\", \"IndexSizeBytes\": number, \"ItemCount\": number, \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" } }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes' as const;\n\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @example Title\n * @example Title, Price, Color\n * @example Title, Description, RelatedItems, ProductReviews\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection' as const;\n\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @example 1.0\n * @example 2.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity' as const;\n\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @example 1.0\n * @example 2.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity' as const;\n\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward' as const;\n\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @example 50\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count' as const;\n\n/**\n * The value of the `Segment` request parameter.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment' as const;\n\n/**\n * The value of the `Select` request parameter.\n *\n * @example ALL_ATTRIBUTES\n * @example COUNT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select' as const;\n\n/**\n * The number of items in the `TableNames` response parameter.\n *\n * @example 20\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count' as const;\n\n/**\n * The keys in the `RequestItems` object field.\n *\n * @example [\"Users\", \"Cats\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names' as const;\n\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments' as const;\n\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn' as const;\n\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 * @example arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn' as const;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype' as const;\n\n/**\n * Enum value \"ec2\" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}.\n *\n * Amazon EC2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AWS_ECS_LAUNCHTYPE_VALUE_EC2 = \"ec2\" as const;\n\n/**\n * Enum value \"fargate\" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}.\n *\n * Amazon Fargate\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AWS_ECS_LAUNCHTYPE_VALUE_FARGATE = \"fargate\" as const;\n\n/**\n * The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids).\n *\n * @example arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b\n * @example arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn' as const;\n\n/**\n * The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task.\n *\n * @example opentelemetry-family\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family' as const;\n\n/**\n * The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`.\n *\n * @example 10838bed-421f-43ef-870a-f43feacbbb5b\n * @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_ID = 'aws.ecs.task.id' as const;\n\n/**\n * The revision for the task definition used to create the ECS task.\n *\n * @example 8\n * @example 26\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision' as const;\n\n/**\n * The ARN of an EKS cluster.\n *\n * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn' as const;\n\n/**\n * The AWS extended request ID as returned in the response header `x-amz-id-2`.\n *\n * @example wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ=\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_EXTENDED_REQUEST_ID = 'aws.extended_request_id' as const;\n\n/**\n * The name of the AWS Kinesis [stream](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) the request refers to. Corresponds to the `--stream-name` parameter of the Kinesis [describe-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html) operation.\n *\n * @example some-stream-name\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_KINESIS_STREAM_NAME = 'aws.kinesis.stream_name' as const;\n\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 * @example arn:aws:lambda:us-east-1:123456:function:myfunction:myalias\n *\n * @note This may be different from `cloud.resource_id` if an alias is involved.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn' as const;\n\n/**\n * The UUID of the [AWS Lambda EvenSource Mapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html). An event source is mapped to a lambda function. It's contents are read by Lambda and used to trigger a function. This isn't available in the lambda execution context or the lambda runtime environtment. This is going to be populated by the AWS SDK for each language when that UUID is present. Some of these operations are Create/Delete/Get/List/Update EventSourceMapping.\n *\n * @example 587ad24b-03b9-4413-8202-bbd56b36e5b7\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LAMBDA_RESOURCE_MAPPING_ID = 'aws.lambda.resource_mapping.id' as const;\n\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * @example [\"arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns' as const;\n\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * @example [\"/aws/lambda/my-function\", \"opentelemetry-service\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_GROUP_NAMES = 'aws.log.group.names' as const;\n\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * @example [\"arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns' as const;\n\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @example [\"logs/main/10838bed-421f-43ef-870a-f43feacbbb5b\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names' as const;\n\n/**\n * The AWS request ID as returned in the response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`.\n *\n * @example 79b9da39-b7ae-508a-a6bc-864b2829c622\n * @example C9ER4AJX75574TDJ\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_REQUEST_ID = 'aws.request_id' as const;\n\n/**\n * The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations.\n *\n * @example some-bucket-name\n *\n * @note The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter.\n * This applies to almost all S3 operations except `list-buckets`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_BUCKET = 'aws.s3.bucket' as const;\n\n/**\n * The source object (in the form `bucket`/`key`) for the copy operation.\n *\n * @example someFile.yml\n *\n * @note The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter\n * of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html).\n * This applies in particular to the following operations:\n *\n * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_COPY_SOURCE = 'aws.s3.copy_source' as const;\n\n/**\n * The delete request container that specifies the objects to be deleted.\n *\n * @example Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean\n *\n * @note The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation.\n * The `delete` attribute corresponds to the `--delete` parameter of the\n * [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_DELETE = 'aws.s3.delete' as const;\n\n/**\n * The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations.\n *\n * @example someFile.yml\n *\n * @note The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter.\n * This applies in particular to the following operations:\n *\n * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)\n * - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html)\n * - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html)\n * - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html)\n * - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html)\n * - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html)\n * - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html)\n * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)\n * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)\n * - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html)\n * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)\n * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_KEY = 'aws.s3.key' as const;\n\n/**\n * The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000.\n *\n * @example 3456\n *\n * @note The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations.\n * The `part_number` attribute corresponds to the `--part-number` parameter of the\n * [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_PART_NUMBER = 'aws.s3.part_number' as const;\n\n/**\n * Upload ID that identifies the multipart upload.\n *\n * @example dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ\n *\n * @note The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter\n * of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations.\n * This applies in particular to the following operations:\n *\n * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)\n * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)\n * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)\n * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_UPLOAD_ID = 'aws.s3.upload_id' as const;\n\n/**\n * The ARN of the Secret stored in the Secrets Mangger\n *\n * @example arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_SECRETSMANAGER_SECRET_ARN = 'aws.secretsmanager.secret.arn' as const;\n\n/**\n * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) is a logical access point that acts as a communication channel.\n *\n * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_SNS_TOPIC_ARN = 'aws.sns.topic.arn' as const;\n\n/**\n * The URL of the AWS SQS Queue. It's a unique identifier for a queue in Amazon Simple Queue Service (SQS) and is used to access the queue and perform actions on it.\n *\n * @example https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_SQS_QUEUE_URL = 'aws.sqs.queue.url' as const;\n\n/**\n * The ARN of the AWS Step Functions Activity.\n *\n * @example arn:aws:states:us-east-1:123456789012:activity:get-greeting\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN = 'aws.step_functions.activity.arn' as const;\n\n/**\n * The ARN of the AWS Step Functions State Machine.\n *\n * @example arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN = 'aws.step_functions.state_machine.arn' as const;\n\n/**\n * Deprecated, use `azure.resource_provider.namespace` instead.\n *\n * @example Microsoft.Storage\n * @example Microsoft.KeyVault\n * @example Microsoft.ServiceBus\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 `azure.resource_provider.namespace`.\n */\nexport const ATTR_AZ_NAMESPACE = 'az.namespace' as const;\n\n/**\n * Deprecated, use `azure.service.request.id` instead.\n *\n * @example 00000000-0000-0000-0000-000000000000\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 `azure.service.request.id`.\n */\nexport const ATTR_AZ_SERVICE_REQUEST_ID = 'az.service_request_id' as const;\n\n/**\n * The unique identifier of the client instance.\n *\n * @example 3ba4827d-4422-483f-b59f-85b74211c11d\n * @example storage-client-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_CLIENT_ID = 'azure.client.id' as const;\n\n/**\n * Cosmos client connection mode.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_CONNECTION_MODE = 'azure.cosmosdb.connection.mode' as const;\n\n/**\n * Enum value \"direct\" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}.\n *\n * Direct connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = \"direct\" as const;\n\n/**\n * Enum value \"gateway\" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}.\n *\n * Gateway (HTTP) connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = \"gateway\" as const;\n\n/**\n * Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels).\n *\n * @example Eventual\n * @example ConsistentPrefix\n * @example BoundedStaleness\n * @example Strong\n * @example Session\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL = 'azure.cosmosdb.consistency.level' as const;\n\n/**\n * Enum value \"BoundedStaleness\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Bounded Staleness\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = \"BoundedStaleness\" as const;\n\n/**\n * Enum value \"ConsistentPrefix\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Consistent Prefix\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = \"ConsistentPrefix\" as const;\n\n/**\n * Enum value \"Eventual\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Eventual\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = \"Eventual\" as const;\n\n/**\n * Enum value \"Session\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Session\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = \"Session\" as const;\n\n/**\n * Enum value \"Strong\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Strong\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = \"Strong\" as const;\n\n/**\n * List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call.\n *\n * @example [\"North Central US\", \"Australia East\", \"Australia Southeast\"]\n *\n * @note Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS = 'azure.cosmosdb.operation.contacted_regions' as const;\n\n/**\n * The number of request units consumed by the operation.\n *\n * @example 46.18\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.operation.request_charge' as const;\n\n/**\n * Request payload size in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_REQUEST_BODY_SIZE = 'azure.cosmosdb.request.body.size' as const;\n\n/**\n * Cosmos DB sub status code.\n *\n * @example 1000\n * @example 1002\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE = 'azure.cosmosdb.response.sub_status_code' as const;\n\n/**\n * [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client.\n *\n * @example Microsoft.Storage\n * @example Microsoft.KeyVault\n * @example Microsoft.ServiceBus\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_RESOURCE_PROVIDER_NAMESPACE = 'azure.resource_provider.namespace' as const;\n\n/**\n * The unique identifier of the service request. It's generated by the Azure service and returned with the response.\n *\n * @example 00000000-0000-0000-0000-000000000000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_SERVICE_REQUEST_ID = 'azure.service.request.id' as const;\n\n/**\n * Array of brand name and version separated by a space\n *\n * @example [\" Not A;Brand 99\", \"Chromium 99\", \"Chrome 99\"]\n *\n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_BRANDS = 'browser.brands' as const;\n\n/**\n * Preferred language of the user using the browser\n *\n * @example en\n * @example en-US\n * @example fr\n * @example fr-FR\n *\n * @note This value is intended to be taken from the Navigator API `navigator.language`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_LANGUAGE = 'browser.language' as const;\n\n/**\n * A boolean that is true if the browser is running on a mobile device\n *\n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute **SHOULD** be left unset.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_MOBILE = 'browser.mobile' as const;\n\n/**\n * The platform on which the browser is running\n *\n * @example Windows\n * @example macOS\n * @example Android\n *\n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API **SHOULD NOT** be used instead and this attribute **SHOULD** be left unset in order for the values to be consistent.\n * The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_PLATFORM = 'browser.platform' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_CONSISTENCY_LEVEL = 'cassandra.consistency.level' as const;\n\n/**\n * Enum value \"all\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * All\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = \"all\" as const;\n\n/**\n * Enum value \"any\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Any\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = \"any\" as const;\n\n/**\n * Enum value \"each_quorum\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Each Quorum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = \"each_quorum\" as const;\n\n/**\n * Enum value \"local_one\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Local One\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = \"local_one\" as const;\n\n/**\n * Enum value \"local_quorum\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Local Quorum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = \"local_quorum\" as const;\n\n/**\n * Enum value \"local_serial\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Local Serial\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = \"local_serial\" as const;\n\n/**\n * Enum value \"one\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * One\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = \"one\" as const;\n\n/**\n * Enum value \"quorum\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Quorum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = \"quorum\" as const;\n\n/**\n * Enum value \"serial\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Serial\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = \"serial\" as const;\n\n/**\n * Enum value \"three\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Three\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = \"three\" as const;\n\n/**\n * Enum value \"two\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Two\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = \"two\" as const;\n\n/**\n * The data center of the coordinating node for a query.\n *\n * @example \"us-west-2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_COORDINATOR_DC = 'cassandra.coordinator.dc' as const;\n\n/**\n * The ID of the coordinating node for a query.\n *\n * @example \"be13faa2-8574-4d71-926d-27f16cf8a7af\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_COORDINATOR_ID = 'cassandra.coordinator.id' as const;\n\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @example 5000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_PAGE_SIZE = 'cassandra.page.size' as const;\n\n/**\n * Whether or not the query is idempotent.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_QUERY_IDEMPOTENT = 'cassandra.query.idempotent' as const;\n\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @example 0\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'cassandra.speculative_execution.count' as const;\n\n/**\n * The kind of action a pipeline run is performing.\n *\n * @example BUILD\n * @example RUN\n * @example SYNC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_ACTION_NAME = 'cicd.pipeline.action.name' as const;\n\n/**\n * Enum value \"BUILD\" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}.\n *\n * The pipeline run is executing a build.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_ACTION_NAME_VALUE_BUILD = \"BUILD\" as const;\n\n/**\n * Enum value \"RUN\" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}.\n *\n * The pipeline run is executing.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_ACTION_NAME_VALUE_RUN = \"RUN\" as const;\n\n/**\n * Enum value \"SYNC\" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}.\n *\n * The pipeline run is executing a sync.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_ACTION_NAME_VALUE_SYNC = \"SYNC\" as const;\n\n/**\n * The human readable name of the pipeline within a CI/CD system.\n *\n * @example Build and Test\n * @example Lint\n * @example Deploy Go Project\n * @example deploy_to_environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_NAME = 'cicd.pipeline.name' as const;\n\n/**\n * The result of a pipeline run.\n *\n * @example success\n * @example failure\n * @example timeout\n * @example skipped\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RESULT = 'cicd.pipeline.result' as const;\n\n/**\n * Enum value \"cancellation\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_CANCELLATION = \"cancellation\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"skip\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run was skipped, eg. due to a precondition not being met.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_SKIP = \"skip\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run finished successfully.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * A timeout caused the pipeline run to be interrupted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_TIMEOUT = \"timeout\" as const;\n\n/**\n * The unique identifier of a pipeline run within a CI/CD system.\n *\n * @example 120912\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RUN_ID = 'cicd.pipeline.run.id' as const;\n\n/**\n * The pipeline run goes through these states during its lifecycle.\n *\n * @example pending\n * @example executing\n * @example finalizing\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RUN_STATE = 'cicd.pipeline.run.state' as const;\n\n/**\n * Enum value \"executing\" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}.\n *\n * The executing state spans the execution of any run tasks (eg. build, test).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RUN_STATE_VALUE_EXECUTING = \"executing\" as const;\n\n/**\n * Enum value \"finalizing\" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}.\n *\n * The finalizing state spans from when the run has finished executing (eg. cleanup of run resources).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RUN_STATE_VALUE_FINALIZING = \"finalizing\" as const;\n\n/**\n * Enum value \"pending\" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}.\n *\n * The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RUN_STATE_VALUE_PENDING = \"pending\" as const;\n\n/**\n * The [URL](https://wikipedia.org/wiki/URL) of the pipeline run, providing the complete address in order to locate and identify the pipeline run.\n *\n * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RUN_URL_FULL = 'cicd.pipeline.run.url.full' as const;\n\n/**\n * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures.\n *\n * @example Run GoLang Linter\n * @example Go Build\n * @example go-test\n * @example deploy_binary\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_NAME = 'cicd.pipeline.task.name' as const;\n\n/**\n * The unique identifier of a task run within a pipeline.\n *\n * @example 12097\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_ID = 'cicd.pipeline.task.run.id' as const;\n\n/**\n * The result of a task run.\n *\n * @example success\n * @example failure\n * @example timeout\n * @example skipped\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_RESULT = 'cicd.pipeline.task.run.result' as const;\n\n/**\n * Enum value \"cancellation\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run was cancelled, eg. by a user manually cancelling the task run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_CANCELLATION = \"cancellation\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run failed due to an error in the CICD system, eg. due to the worker being killed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the task run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"skip\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run was skipped, eg. due to a precondition not being met.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SKIP = \"skip\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run finished successfully.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * A timeout caused the task run to be interrupted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_TIMEOUT = \"timeout\" as const;\n\n/**\n * The [URL](https://wikipedia.org/wiki/URL) of the pipeline task run, providing the complete address in order to locate and identify the pipeline task run.\n *\n * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL = 'cicd.pipeline.task.run.url.full' as const;\n\n/**\n * The type of the task within a pipeline.\n *\n * @example build\n * @example test\n * @example deploy\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_TYPE = 'cicd.pipeline.task.type' as const;\n\n/**\n * Enum value \"build\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n *\n * build\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_BUILD = \"build\" as const;\n\n/**\n * Enum value \"deploy\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n *\n * deploy\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY = \"deploy\" as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n *\n * test\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_TEST = \"test\" as const;\n\n/**\n * The name of a component of the CICD system.\n *\n * @example controller\n * @example scheduler\n * @example agent\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_SYSTEM_COMPONENT = 'cicd.system.component' as const;\n\n/**\n * The unique identifier of a worker within a CICD system.\n *\n * @example abc123\n * @example 10.0.1.2\n * @example controller\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_ID = 'cicd.worker.id' as const;\n\n/**\n * The name of a worker within a CICD system.\n *\n * @example agent-abc\n * @example controller\n * @example Ubuntu LTS\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_NAME = 'cicd.worker.name' as const;\n\n/**\n * The state of a CICD worker / agent.\n *\n * @example idle\n * @example busy\n * @example down\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_STATE = 'cicd.worker.state' as const;\n\n/**\n * Enum value \"available\" for attribute {@link ATTR_CICD_WORKER_STATE}.\n *\n * The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_WORKER_STATE_VALUE_AVAILABLE = \"available\" as const;\n\n/**\n * Enum value \"busy\" for attribute {@link ATTR_CICD_WORKER_STATE}.\n *\n * The worker is performing work for the CICD system.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_WORKER_STATE_VALUE_BUSY = \"busy\" as const;\n\n/**\n * Enum value \"offline\" for attribute {@link ATTR_CICD_WORKER_STATE}.\n *\n * The worker is not available to the CICD system (disconnected / down).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_WORKER_STATE_VALUE_OFFLINE = \"offline\" as const;\n\n/**\n * The [URL](https://wikipedia.org/wiki/URL) of the worker, providing the complete address in order to locate and identify the worker.\n *\n * @example https://cicd.example.org/worker/abc123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_URL_FULL = 'cicd.worker.url.full' as const;\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 */\nexport const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id' as const;\n\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 */\nexport const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_PLATFORM = 'cloud.platform' as const;\n\n/**\n * Enum value \"akamai_cloud.compute\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Akamai Cloud Compute\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE = \"akamai_cloud.compute\" as const;\n\n/**\n * Enum value \"alibaba_cloud_ecs\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Alibaba Cloud Elastic Compute Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS = \"alibaba_cloud_ecs\" as const;\n\n/**\n * Enum value \"alibaba_cloud_fc\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Alibaba Cloud Function Compute\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC = \"alibaba_cloud_fc\" as const;\n\n/**\n * Enum value \"alibaba_cloud_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on Alibaba Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT = \"alibaba_cloud_openshift\" as const;\n\n/**\n * Enum value \"aws_app_runner\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS App Runner\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER = \"aws_app_runner\" as const;\n\n/**\n * Enum value \"aws_ec2\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Compute Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_EC2 = \"aws_ec2\" as const;\n\n/**\n * Enum value \"aws_ecs\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Container Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_ECS = \"aws_ecs\" as const;\n\n/**\n * Enum value \"aws_eks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Kubernetes Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_EKS = \"aws_eks\" as const;\n\n/**\n * Enum value \"aws_elastic_beanstalk\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Beanstalk\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK = \"aws_elastic_beanstalk\" as const;\n\n/**\n * Enum value \"aws_lambda\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Lambda\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_LAMBDA = \"aws_lambda\" as const;\n\n/**\n * Enum value \"aws_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on AWS (ROSA)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT = \"aws_openshift\" as const;\n\n/**\n * Enum value \"azure.aks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Kubernetes Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_AKS = \"azure.aks\" as const;\n\n/**\n * Enum value \"azure.app_service\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure App Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE = \"azure.app_service\" as const;\n\n/**\n * Enum value \"azure.container_apps\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Container Apps\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS = \"azure.container_apps\" as const;\n\n/**\n * Enum value \"azure.container_instances\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Container Instances\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES = \"azure.container_instances\" as const;\n\n/**\n * Enum value \"azure.functions\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Functions\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS = \"azure.functions\" as const;\n\n/**\n * Enum value \"azure.openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Red Hat OpenShift\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT = \"azure.openshift\" as const;\n\n/**\n * Enum value \"azure.vm\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Virtual Machines\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_VM = \"azure.vm\" as const;\n\n/**\n * Enum value \"gcp.agent_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Vertex AI Agent Engine\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE = \"gcp.agent_engine\" as const;\n\n/**\n * Enum value \"gcp_app_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud App Engine (GAE)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE = \"gcp_app_engine\" as const;\n\n/**\n * Enum value \"gcp_bare_metal_solution\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Bare Metal Solution (BMS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION = \"gcp_bare_metal_solution\" as const;\n\n/**\n * Enum value \"gcp_cloud_functions\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Functions (GCF)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS = \"gcp_cloud_functions\" as const;\n\n/**\n * Enum value \"gcp_cloud_run\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Run\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN = \"gcp_cloud_run\" as const;\n\n/**\n * Enum value \"gcp_compute_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Compute Engine (GCE)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE = \"gcp_compute_engine\" as const;\n\n/**\n * Enum value \"gcp_kubernetes_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Kubernetes Engine (GKE)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE = \"gcp_kubernetes_engine\" as const;\n\n/**\n * Enum value \"gcp_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on Google Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT = \"gcp_openshift\" as const;\n\n/**\n * Enum value \"hetzner.cloud_server\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Server on Hetzner Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER = \"hetzner.cloud_server\" as const;\n\n/**\n * Enum value \"ibm_cloud_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on IBM Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT = \"ibm_cloud_openshift\" as const;\n\n/**\n * Enum value \"oracle_cloud_compute\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Compute on Oracle Cloud Infrastructure (OCI)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_COMPUTE = \"oracle_cloud_compute\" as const;\n\n/**\n * Enum value \"oracle_cloud_oke\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_OKE = \"oracle_cloud_oke\" as const;\n\n/**\n * Enum value \"tencent_cloud_cvm\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Tencent Cloud Cloud Virtual Machine (CVM)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM = \"tencent_cloud_cvm\" as const;\n\n/**\n * Enum value \"tencent_cloud_eks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Tencent Cloud Elastic Kubernetes Service (EKS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS = \"tencent_cloud_eks\" as const;\n\n/**\n * Enum value \"tencent_cloud_scf\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Tencent Cloud Serverless Cloud Function (SCF)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF = \"tencent_cloud_scf\" as const;\n\n/**\n * Enum value \"vultr.cloud_compute\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Vultr Cloud Compute\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE = \"vultr.cloud_compute\" as const;\n\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 */\nexport const ATTR_CLOUD_PROVIDER = 'cloud.provider' as const;\n\n/**\n * Enum value \"akamai_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Akamai Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD = \"akamai_cloud\" as const;\n\n/**\n * Enum value \"alibaba_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Alibaba Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD = \"alibaba_cloud\" as const;\n\n/**\n * Enum value \"aws\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Amazon Web Services\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_AWS = \"aws\" as const;\n\n/**\n * Enum value \"azure\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Microsoft Azure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_AZURE = \"azure\" as const;\n\n/**\n * Enum value \"gcp\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Google Cloud Platform\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_GCP = \"gcp\" as const;\n\n/**\n * Enum value \"heroku\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Heroku Platform as a Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_HEROKU = \"heroku\" as const;\n\n/**\n * Enum value \"hetzner\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Hetzner\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_HETZNER = \"hetzner\" as const;\n\n/**\n * Enum value \"ibm_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * IBM Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_IBM_CLOUD = \"ibm_cloud\" as const;\n\n/**\n * Enum value \"oracle_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Oracle Cloud Infrastructure (OCI)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_ORACLE_CLOUD = \"oracle_cloud\" as const;\n\n/**\n * Enum value \"tencent_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Tencent Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_TENCENT_CLOUD = \"tencent_cloud\" as const;\n\n/**\n * Enum value \"vultr\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Vultr\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_VULTR = \"vultr\" as const;\n\n/**\n * The geographical region within a cloud provider. When associated with a resource, this attribute specifies the region where the resource operates. When calling services or APIs deployed on a cloud, this attribute identifies the region where the called destination is deployed.\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 */\nexport const ATTR_CLOUD_REGION = 'cloud.region' as const;\n\n/**\n * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://google.aip.dev/122#full-resource-names) on GCP)\n *\n * @example arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function\n * @example //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID\n * @example /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/\n *\n * @note On some cloud providers, it may not be possible to determine the full ID at startup,\n * so it may be necessary to set `cloud.resource_id` as a span attribute instead.\n *\n * The exact value to use for `cloud.resource_id` depends on the cloud provider.\n * The following well-known definitions **MUST** be used if you set this attribute and they apply:\n *\n * - **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\n * Take 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)\n * with the resolved function version, as the same runtime instance may be invocable with\n * multiple different 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://learn.microsoft.com/rest/api/resources/resources/get-by-id) of the invoked function,\n * *not* the function app, having the form\n * `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`.\n * This means that a span attribute **MUST** be used, as an Azure function app can host multiple functions that would usually share\n * a TracerProvider.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_RESOURCE_ID = 'cloud.resource_id' as const;\n\n/**\n * The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event.\n *\n * @example 123e4567-e89b-12d3-a456-426614174000\n * @example 0001\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_ID = 'cloudevents.event_id' as const;\n\n/**\n * The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened.\n *\n * @example https://github.com/cloudevents\n * @example /cloudevents/spec/pull/123\n * @example my-service\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SOURCE = 'cloudevents.event_source' as const;\n\n/**\n * The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses.\n *\n * @example \"1.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION = 'cloudevents.event_spec_version' as const;\n\n/**\n * The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source).\n *\n * @example \"mynewfile.jpg\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SUBJECT = 'cloudevents.event_subject' as const;\n\n/**\n * The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence.\n *\n * @example com.github.pull_request.opened\n * @example com.example.object.deleted.v2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_TYPE = 'cloudevents.event_type' as const;\n\n/**\n * The guid of the application.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.application_id`. This is the same value as\n * reported by `cf app --guid`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_ID = 'cloudfoundry.app.id' as const;\n\n/**\n * The index of the application instance. 0 when just one instance is active.\n *\n * @example 0\n * @example 1\n *\n * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the application instance index for applications\n * deployed on the runtime.\n *\n * Application instrumentation should use the value from environment\n * variable `CF_INSTANCE_INDEX`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID = 'cloudfoundry.app.instance.id' as const;\n\n/**\n * The name of the application.\n *\n * @example my-app-name\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.application_name`. This is the same value\n * as reported by `cf apps`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_NAME = 'cloudfoundry.app.name' as const;\n\n/**\n * The guid of the CloudFoundry org the application is running in.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.org_id`. This is the same value as\n * reported by `cf org --guid`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_ORG_ID = 'cloudfoundry.org.id' as const;\n\n/**\n * The name of the CloudFoundry organization the app is running in.\n *\n * @example my-org-name\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.org_name`. This is the same value as\n * reported by `cf orgs`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_ORG_NAME = 'cloudfoundry.org.name' as const;\n\n/**\n * The UID identifying the process.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to\n * `VCAP_APPLICATION.app_id` for applications deployed to the runtime.\n * For system components, this could be the actual PID.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_PROCESS_ID = 'cloudfoundry.process.id' as const;\n\n/**\n * The type of process.\n *\n * @example web\n *\n * @note CloudFoundry applications can consist of multiple jobs. Usually the\n * main process will be of type `web`. There can be additional background\n * tasks or side-cars with different process types.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_PROCESS_TYPE = 'cloudfoundry.process.type' as const;\n\n/**\n * The guid of the CloudFoundry space the application is running in.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.space_id`. This is the same value as\n * reported by `cf space --guid`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SPACE_ID = 'cloudfoundry.space.id' as const;\n\n/**\n * The name of the CloudFoundry space the application is running in.\n *\n * @example my-space-name\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.space_name`. This is the same value as\n * reported by `cf spaces`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SPACE_NAME = 'cloudfoundry.space.name' as const;\n\n/**\n * A guid or another name describing the event source.\n *\n * @example cf/gorouter\n *\n * @note CloudFoundry defines the `source_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the component name, e.g. \"gorouter\", for\n * CloudFoundry components.\n *\n * When system components are instrumented, values from the\n * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec)\n * should be used. The `system.id` should be set to\n * `spec.deployment/spec.name`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SYSTEM_ID = 'cloudfoundry.system.id' as const;\n\n/**\n * A guid describing the concrete instance of the event source.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the vm id for CloudFoundry components.\n *\n * When system components are instrumented, values from the\n * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec)\n * should be used. The `system.instance.id` should be set to `spec.id`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID = 'cloudfoundry.system.instance.id' as const;\n\n/**\n * Deprecated, use `code.column.number`\n *\n * @example 16\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 `code.column.number`.\n */\nexport const ATTR_CODE_COLUMN = 'code.column' as const;\n\n/**\n * Deprecated, use `code.file.path` instead\n *\n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\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 `code.file.path`.\n */\nexport const ATTR_CODE_FILEPATH = 'code.filepath' as const;\n\n/**\n * Deprecated, use `code.function.name` instead\n *\n * @example \"serveRequest\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name.\n */\nexport const ATTR_CODE_FUNCTION = 'code.function' as const;\n\n/**\n * Deprecated, use `code.line.number` instead\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 *\n * @deprecated Replaced by `code.line.number`.\n */\nexport const ATTR_CODE_LINENO = 'code.lineno' as const;\n\n/**\n * Deprecated, namespace is now included into `code.function.name`\n *\n * @example \"com.example.MyHttpService\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name.\n */\nexport const ATTR_CODE_NAMESPACE = 'code.namespace' as const;\n\n/**\n * The command used to run the container (i.e. the command name).\n *\n * @example otelcontribcol\n *\n * @note If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND = 'container.command' as const;\n\n/**\n * All the command arguments (including the command/executable itself) run by the container.\n *\n * @example [\"otelcontribcol\", \"--config\", \"config.yaml\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND_ARGS = 'container.command_args' as const;\n\n/**\n * The full command run by the container as a single string representing the full command.\n *\n * @example otelcontribcol --config config.yaml\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND_LINE = 'container.command_line' as const;\n\n/**\n * Deprecated, use `cpu.mode` instead.\n *\n * @example user\n * @example kernel\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 `cpu.mode`.\n */\nexport const ATTR_CONTAINER_CPU_STATE = 'container.cpu.state' as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n *\n * When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CONTAINER_CPU_STATE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n *\n * When CPU is used by the system (host OS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CONTAINER_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n *\n * When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CONTAINER_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * The name of the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin used by the volume.\n *\n * @example pd.csi.storage.gke.io\n *\n * @note This can sometimes be referred to as a \"driver\" in CSI implementations. This should represent the `name` field of the GetPluginInfo RPC.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_CSI_PLUGIN_NAME = 'container.csi.plugin.name' as const;\n\n/**\n * The unique volume ID returned by the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin.\n *\n * @example projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk\n *\n * @note This can sometimes be referred to as a \"volume handle\" in CSI implementations. This should represent the `Volume.volume_id` field in CSI spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_CSI_VOLUME_ID = 'container.csi.volume.id' as const;\n\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 */\nexport const ATTR_CONTAINER_ID = 'container.id' as const;\n\n/**\n * Runtime specific image identifier. Usually a hash algorithm followed by a UUID.\n *\n * @example sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f\n *\n * @note Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect) endpoint.\n * K8s defines a link to the container registry repository with digest `\"imageID\": \"registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625\"`.\n * The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_ID = 'container.image.id' as const;\n\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 */\nexport const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name' as const;\n\n/**\n * Repo digests of the container image as provided by the container runtime.\n *\n * @example [\"example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb\", \"internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578\"]\n *\n * @note [Docker](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_REPO_DIGESTS = 'container.image.repo_digests' as const;\n\n/**\n * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.52/#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 */\nexport const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags' as const;\n\n/**\n * Container labels, `` being the label name, the value being the label value.\n *\n * @example nginx\n *\n * @note For example, a docker container label `app` with value `nginx` **SHOULD** be recorded as the `container.label.app` attribute with value `\"nginx\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_LABEL = (key: string) => `container.label.${key}`;\n\n/**\n * Deprecated, use `container.label` instead.\n *\n * @example nginx\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 `container.label`.\n */\nexport const ATTR_CONTAINER_LABELS = (key: string) => `container.labels.${key}`;\n\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 */\nexport const ATTR_CONTAINER_NAME = 'container.name' as const;\n\n/**\n * The container runtime managing this container.\n *\n * @example docker\n * @example containerd\n * @example rkt\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 `container.runtime.name`.\n */\nexport const ATTR_CONTAINER_RUNTIME = 'container.runtime' as const;\n\n/**\n * A description about the runtime which could include, for example details about the CRI/API version being used or other customisations.\n *\n * @example docker://19.3.1 - CRI: 1.22.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_RUNTIME_DESCRIPTION = 'container.runtime.description' as const;\n\n/**\n * The container runtime managing this container.\n *\n * @example docker\n * @example containerd\n * @example rkt\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_RUNTIME_NAME = 'container.runtime.name' as const;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @example \"1.0.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_RUNTIME_VERSION = 'container.runtime.version' as const;\n\n/**\n * The logical CPU number [0..n-1]\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 */\nexport const ATTR_CPU_LOGICAL_NUMBER = 'cpu.logical_number' as const;\n\n/**\n * The mode of the CPU\n *\n * @example user\n * @example system\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CPU_MODE = 'cpu.mode' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Idle\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"interrupt\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Interrupt\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_INTERRUPT = \"interrupt\" as const;\n\n/**\n * Enum value \"iowait\" for attribute {@link ATTR_CPU_MODE}.\n *\n * IO Wait\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_IOWAIT = \"iowait\" as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Kernel\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"nice\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Nice\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_NICE = \"nice\" as const;\n\n/**\n * Enum value \"steal\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Steal\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_STEAL = \"steal\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_CPU_MODE}.\n *\n * System\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_CPU_MODE}.\n *\n * User\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_USER = \"user\" as const;\n\n/**\n * Value of the garbage collector collection generation.\n *\n * @example 0\n * @example 1\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CPYTHON_GC_GENERATION = 'cpython.gc.generation' as const;\n\n/**\n * Enum value 0 for attribute {@link ATTR_CPYTHON_GC_GENERATION}.\n *\n * Generation 0\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPYTHON_GC_GENERATION_VALUE_GENERATION_0 = 0 as const;\n\n/**\n * Enum value 1 for attribute {@link ATTR_CPYTHON_GC_GENERATION}.\n *\n * Generation 1\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPYTHON_GC_GENERATION_VALUE_GENERATION_1 = 1 as const;\n\n/**\n * Enum value 2 for attribute {@link ATTR_CPYTHON_GC_GENERATION}.\n *\n * Generation 2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPYTHON_GC_GENERATION_VALUE_GENERATION_2 = 2 as const;\n\n/**\n * Deprecated, use `cassandra.consistency.level` 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 `cassandra.consistency.level`.\n */\nexport const ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level' as const;\n\n/**\n * Enum value \"all\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = \"all\" as const;\n\n/**\n * Enum value \"any\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = \"any\" as const;\n\n/**\n * Enum value \"each_quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = \"each_quorum\" as const;\n\n/**\n * Enum value \"local_one\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = \"local_one\" as const;\n\n/**\n * Enum value \"local_quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = \"local_quorum\" as const;\n\n/**\n * Enum value \"local_serial\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = \"local_serial\" as const;\n\n/**\n * Enum value \"one\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = \"one\" as const;\n\n/**\n * Enum value \"quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = \"quorum\" as const;\n\n/**\n * Enum value \"serial\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = \"serial\" as const;\n\n/**\n * Enum value \"three\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = \"three\" as const;\n\n/**\n * Enum value \"two\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = \"two\" as const;\n\n/**\n * Deprecated, use `cassandra.coordinator.dc` instead.\n *\n * @example \"us-west-2\"\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 `cassandra.coordinator.dc`.\n */\nexport const ATTR_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc' as const;\n\n/**\n * Deprecated, use `cassandra.coordinator.id` instead.\n *\n * @example \"be13faa2-8574-4d71-926d-27f16cf8a7af\"\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 `cassandra.coordinator.id`.\n */\nexport const ATTR_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id' as const;\n\n/**\n * Deprecated, use `cassandra.query.idempotent` 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 `cassandra.query.idempotent`.\n */\nexport const ATTR_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence' as const;\n\n/**\n * Deprecated, use `cassandra.page.size` instead.\n *\n * @example 5000\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 `cassandra.page.size`.\n */\nexport const ATTR_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size' as const;\n\n/**\n * Deprecated, use `cassandra.speculative_execution.count` instead.\n *\n * @example 0\n * @example 2\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 `cassandra.speculative_execution.count`.\n */\nexport const ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count' as const;\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 */\nexport const ATTR_DB_CASSANDRA_TABLE = 'db.cassandra.table' as const;\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 */\nexport const ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name' as const;\n\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 */\nexport const ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `db.client.connection.pool.name` instead.\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 *\n * @deprecated Replaced by `db.client.connection.pool.name`.\n */\nexport const ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME = 'db.client.connections.pool.name' as const;\n\n/**\n * Deprecated, use `db.client.connection.state` instead.\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 *\n * @deprecated Replaced by `db.client.connection.state`.\n */\nexport const ATTR_DB_CLIENT_CONNECTIONS_STATE = 'db.client.connections.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTIONS_STATE_VALUE_USED = \"used\" as const;\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 */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `azure.client.id` instead.\n *\n * @example \"3ba4827d-4422-483f-b59f-85b74211c11d\"\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 `azure.client.id`.\n */\nexport const ATTR_DB_COSMOSDB_CLIENT_ID = 'db.cosmosdb.client_id' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.connection.mode` 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 `azure.cosmosdb.connection.mode`.\n */\nexport const ATTR_DB_COSMOSDB_CONNECTION_MODE = 'db.cosmosdb.connection_mode' as const;\n\n/**\n * Enum value \"direct\" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}.\n *\n * Direct connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = \"direct\" as const;\n\n/**\n * Enum value \"gateway\" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}.\n *\n * Gateway (HTTP) connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = \"gateway\" as const;\n\n/**\n * Deprecated, use `cosmosdb.consistency.level` instead.\n *\n * @example Eventual\n * @example ConsistentPrefix\n * @example BoundedStaleness\n * @example Strong\n * @example Session\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 `azure.cosmosdb.consistency.level`.\n */\nexport const ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL = 'db.cosmosdb.consistency_level' as const;\n\n/**\n * Enum value \"BoundedStaleness\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = \"BoundedStaleness\" as const;\n\n/**\n * Enum value \"ConsistentPrefix\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = \"ConsistentPrefix\" as const;\n\n/**\n * Enum value \"Eventual\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = \"Eventual\" as const;\n\n/**\n * Enum value \"Session\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = \"Session\" as const;\n\n/**\n * Enum value \"Strong\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = \"Strong\" as const;\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 */\nexport const ATTR_DB_COSMOSDB_CONTAINER = 'db.cosmosdb.container' as const;\n\n/**\n * Deprecated, no replacement at this time.\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 */\nexport const ATTR_DB_COSMOSDB_OPERATION_TYPE = 'db.cosmosdb.operation_type' as const;\n\n/**\n * Enum value \"batch\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH = \"batch\" as const;\n\n/**\n * Enum value \"create\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE = \"create\" as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"execute\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE = \"execute\" as const;\n\n/**\n * Enum value \"execute_javascript\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT = \"execute_javascript\" as const;\n\n/**\n * Enum value \"head\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD = \"head\" as const;\n\n/**\n * Enum value \"head_feed\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED = \"head_feed\" as const;\n\n/**\n * Enum value \"invalid\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID = \"invalid\" as const;\n\n/**\n * Enum value \"patch\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH = \"patch\" as const;\n\n/**\n * Enum value \"query\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY = \"query\" as const;\n\n/**\n * Enum value \"query_plan\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN = \"query_plan\" as const;\n\n/**\n * Enum value \"read\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ = \"read\" as const;\n\n/**\n * Enum value \"read_feed\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED = \"read_feed\" as const;\n\n/**\n * Enum value \"replace\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE = \"replace\" as const;\n\n/**\n * Enum value \"upsert\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT = \"upsert\" as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead.\n *\n * @example [\"North Central US\", \"Australia East\", \"Australia Southeast\"]\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 `azure.cosmosdb.operation.contacted_regions`.\n */\nexport const ATTR_DB_COSMOSDB_REGIONS_CONTACTED = 'db.cosmosdb.regions_contacted' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.operation.request_charge` instead.\n *\n * @example 46.18\n * @example 1.0\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 `azure.cosmosdb.operation.request_charge`.\n */\nexport const ATTR_DB_COSMOSDB_REQUEST_CHARGE = 'db.cosmosdb.request_charge' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.request.body.size` 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 `azure.cosmosdb.request.body.size`.\n */\nexport const ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH = 'db.cosmosdb.request_content_length' as const;\n\n/**\n * Deprecated, use `db.response.status_code` instead.\n *\n * @example 200\n * @example 201\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use `db.response.status_code` instead.\n */\nexport const ATTR_DB_COSMOSDB_STATUS_CODE = 'db.cosmosdb.status_code' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.response.sub_status_code` instead.\n *\n * @example 1000\n * @example 1002\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 `azure.cosmosdb.response.sub_status_code`.\n */\nexport const ATTR_DB_COSMOSDB_SUB_STATUS_CODE = 'db.cosmosdb.sub_status_code' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example e9106fc68e3044f0b1475b04bf4ffd5f\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 */\nexport const ATTR_DB_ELASTICSEARCH_CLUSTER_NAME = 'db.elasticsearch.cluster.name' as const;\n\n/**\n * Deprecated, use `elasticsearch.node.name` instead.\n *\n * @example instance-0000000001\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 `elasticsearch.node.name`.\n */\nexport const ATTR_DB_ELASTICSEARCH_NODE_NAME = 'db.elasticsearch.node.name' as const;\n\n/**\n * Deprecated, use `db.operation.parameter` instead.\n *\n * @example test-index\n * @example 123\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.parameter`.\n */\nexport const ATTR_DB_ELASTICSEARCH_PATH_PARTS = (key: string) => `db.elasticsearch.path_parts.${key}`;\n\n/**\n * Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead.\n *\n * @example \"mysql-e26b99z.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 Removed, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead.\n */\nexport const ATTR_DB_INSTANCE_ID = 'db.instance.id' as const;\n\n/**\n * Removed, no replacement at this time.\n *\n * @example org.postgresql.Driver\n * @example com.microsoft.sqlserver.jdbc.SQLServerDriver\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 */\nexport const ATTR_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname' as const;\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 */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute.\n *\n * @example \"MSSQLSERVER\"\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 */\nexport const ATTR_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name' as const;\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 */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\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 */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value.\n *\n * @example someval\n * @example 55\n *\n * @note For example, a client-side maximum number of rows to read from the database\n * **MAY** be recorded as the `db.operation.parameter.max_rows` attribute.\n *\n * `db.query.text` parameters **SHOULD** be captured using `db.query.parameter.`\n * instead of `db.operation.parameter.`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_OPERATION_PARAMETER = (key: string) => `db.operation.parameter.${key}`;\n\n/**\n * A database query parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value.\n *\n * @example someval\n * @example 55\n *\n * @note If a query parameter has no name and instead is referenced only by index,\n * then `` **SHOULD** be the 0-based index.\n *\n * `db.query.parameter.` **SHOULD** match\n * up with the parameterized placeholders present in `db.query.text`.\n *\n * It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * `db.query.parameter.` **SHOULD NOT** be captured on batch operations.\n *\n * Examples:\n *\n * - For a query `SELECT * FROM users where username = %s` with the parameter `\"jdoe\"`,\n * the attribute `db.query.parameter.0` **SHOULD** be set to `\"jdoe\"`.\n * - For a query `\"SELECT * FROM users WHERE username = %(userName)s;` with parameter\n * `userName = \"jdoe\"`, the attribute `db.query.parameter.userName` **SHOULD** be set to `\"jdoe\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_QUERY_PARAMETER = (key: string) => `db.query.parameter.${key}`;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example 0\n * @example 1\n * @example 15\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Uncategorized.\n */\nexport const ATTR_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index' as const;\n\n/**\n * Number of rows returned by the operation.\n *\n * @example 10\n * @example 30\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_RESPONSE_RETURNED_ROWS = 'db.response.returned_rows' as const;\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`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Enum value \"adabas\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Adabas (Adaptable Database System)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_ADABAS = \"adabas\" as const;\n\n/**\n * Enum value \"cache\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, use `intersystems_cache` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `intersystems_cache`.\n */\nexport const DB_SYSTEM_VALUE_CACHE = \"cache\" as const;\n\n/**\n * Enum value \"cassandra\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Cassandra\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_CASSANDRA = \"cassandra\" as const;\n\n/**\n * Enum value \"clickhouse\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * ClickHouse\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_CLICKHOUSE = \"clickhouse\" as const;\n\n/**\n * Enum value \"cloudscape\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, use `other_sql` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `other_sql`.\n */\nexport const DB_SYSTEM_VALUE_CLOUDSCAPE = \"cloudscape\" as const;\n\n/**\n * Enum value \"cockroachdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * CockroachDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COCKROACHDB = \"cockroachdb\" as const;\n\n/**\n * Enum value \"coldfusion\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, no replacement at this time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Obsoleted.\n */\nexport const DB_SYSTEM_VALUE_COLDFUSION = \"coldfusion\" as const;\n\n/**\n * Enum value \"cosmosdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Microsoft Azure Cosmos DB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COSMOSDB = \"cosmosdb\" as const;\n\n/**\n * Enum value \"couchbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Couchbase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COUCHBASE = \"couchbase\" as const;\n\n/**\n * Enum value \"couchdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * CouchDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COUCHDB = \"couchdb\" as const;\n\n/**\n * Enum value \"db2\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * IBM Db2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_DB2 = \"db2\" as const;\n\n/**\n * Enum value \"derby\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Derby\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_DERBY = \"derby\" as const;\n\n/**\n * Enum value \"dynamodb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Amazon DynamoDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_DYNAMODB = \"dynamodb\" as const;\n\n/**\n * Enum value \"edb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * EnterpriseDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_EDB = \"edb\" as const;\n\n/**\n * Enum value \"elasticsearch\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Elasticsearch\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_ELASTICSEARCH = \"elasticsearch\" as const;\n\n/**\n * Enum value \"filemaker\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * FileMaker\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_FILEMAKER = \"filemaker\" as const;\n\n/**\n * Enum value \"firebird\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Firebird\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_FIREBIRD = \"firebird\" as const;\n\n/**\n * Enum value \"firstsql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, use `other_sql` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `other_sql`.\n */\nexport const DB_SYSTEM_VALUE_FIRSTSQL = \"firstsql\" as const;\n\n/**\n * Enum value \"geode\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Geode\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_GEODE = \"geode\" as const;\n\n/**\n * Enum value \"h2\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * H2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_H2 = \"h2\" as const;\n\n/**\n * Enum value \"hanadb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * SAP HANA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HANADB = \"hanadb\" as const;\n\n/**\n * Enum value \"hbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache HBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HBASE = \"hbase\" as const;\n\n/**\n * Enum value \"hive\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Hive\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HIVE = \"hive\" as const;\n\n/**\n * Enum value \"hsqldb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * HyperSQL DataBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HSQLDB = \"hsqldb\" as const;\n\n/**\n * Enum value \"influxdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InfluxDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INFLUXDB = \"influxdb\" as const;\n\n/**\n * Enum value \"informix\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Informix\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INFORMIX = \"informix\" as const;\n\n/**\n * Enum value \"ingres\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Ingres\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INGRES = \"ingres\" as const;\n\n/**\n * Enum value \"instantdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InstantDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INSTANTDB = \"instantdb\" as const;\n\n/**\n * Enum value \"interbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InterBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INTERBASE = \"interbase\" as const;\n\n/**\n * Enum value \"intersystems_cache\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InterSystems Caché\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE = \"intersystems_cache\" as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MariaDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MARIADB = \"mariadb\" as const;\n\n/**\n * Enum value \"maxdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * SAP MaxDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MAXDB = \"maxdb\" as const;\n\n/**\n * Enum value \"memcached\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Memcached\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MEMCACHED = \"memcached\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MONGODB = \"mongodb\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MSSQL = \"mssql\" as const;\n\n/**\n * Enum value \"mssqlcompact\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, Microsoft SQL Server Compact is discontinued.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `other_sql`.\n */\nexport const DB_SYSTEM_VALUE_MSSQLCOMPACT = \"mssqlcompact\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"neo4j\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Neo4j\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_NEO4J = \"neo4j\" as const;\n\n/**\n * Enum value \"netezza\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Netezza\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_NETEZZA = \"netezza\" as const;\n\n/**\n * Enum value \"opensearch\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * OpenSearch\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_OPENSEARCH = \"opensearch\" as const;\n\n/**\n * Enum value \"oracle\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Oracle Database\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_ORACLE = \"oracle\" as const;\n\n/**\n * Enum value \"other_sql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Some other SQL database. Fallback only. See notes.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_OTHER_SQL = \"other_sql\" as const;\n\n/**\n * Enum value \"pervasive\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Pervasive PSQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_PERVASIVE = \"pervasive\" as const;\n\n/**\n * Enum value \"pointbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * PointBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_POINTBASE = \"pointbase\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * PostgreSQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Enum value \"progress\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Progress Database\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_PROGRESS = \"progress\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_REDIS = \"redis\" as const;\n\n/**\n * Enum value \"redshift\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Amazon Redshift\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_REDSHIFT = \"redshift\" as const;\n\n/**\n * Enum value \"spanner\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Cloud Spanner\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_SPANNER = \"spanner\" as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * SQLite\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_SQLITE = \"sqlite\" as const;\n\n/**\n * Enum value \"sybase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Sybase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_SYBASE = \"sybase\" as const;\n\n/**\n * Enum value \"teradata\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Teradata\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_TERADATA = \"teradata\" as const;\n\n/**\n * Enum value \"trino\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Trino\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_TRINO = \"trino\" as const;\n\n/**\n * Enum value \"vertica\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Vertica\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_VERTICA = \"vertica\" as const;\n\n/**\n * Enum value \"actian.ingres\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Actian Ingres](https://www.actian.com/databases/ingres/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_ACTIAN_INGRES = \"actian.ingres\" as const;\n\n/**\n * Enum value \"aws.dynamodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_AWS_DYNAMODB = \"aws.dynamodb\" as const;\n\n/**\n * Enum value \"aws.redshift\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Amazon Redshift](https://aws.amazon.com/redshift/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_AWS_REDSHIFT = \"aws.redshift\" as const;\n\n/**\n * Enum value \"azure.cosmosdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_AZURE_COSMOSDB = \"azure.cosmosdb\" as const;\n\n/**\n * Enum value \"cassandra\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Cassandra](https://cassandra.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_CASSANDRA = \"cassandra\" as const;\n\n/**\n * Enum value \"clickhouse\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [ClickHouse](https://clickhouse.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_CLICKHOUSE = \"clickhouse\" as const;\n\n/**\n * Enum value \"cockroachdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [CockroachDB](https://www.cockroachlabs.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_COCKROACHDB = \"cockroachdb\" as const;\n\n/**\n * Enum value \"couchbase\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Couchbase](https://www.couchbase.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_COUCHBASE = \"couchbase\" as const;\n\n/**\n * Enum value \"couchdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache CouchDB](https://couchdb.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_COUCHDB = \"couchdb\" as const;\n\n/**\n * Enum value \"derby\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Derby](https://db.apache.org/derby/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_DERBY = \"derby\" as const;\n\n/**\n * Enum value \"elasticsearch\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Elasticsearch](https://www.elastic.co/elasticsearch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_ELASTICSEARCH = \"elasticsearch\" as const;\n\n/**\n * Enum value \"firebirdsql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Firebird](https://www.firebirdsql.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_FIREBIRDSQL = \"firebirdsql\" as const;\n\n/**\n * Enum value \"gcp.spanner\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Google Cloud Spanner](https://cloud.google.com/spanner)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_GCP_SPANNER = \"gcp.spanner\" as const;\n\n/**\n * Enum value \"geode\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Geode](https://geode.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_GEODE = \"geode\" as const;\n\n/**\n * Enum value \"h2database\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [H2 Database](https://h2database.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_H2DATABASE = \"h2database\" as const;\n\n/**\n * Enum value \"hbase\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache HBase](https://hbase.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_HBASE = \"hbase\" as const;\n\n/**\n * Enum value \"hive\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Hive](https://hive.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_HIVE = \"hive\" as const;\n\n/**\n * Enum value \"hsqldb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [HyperSQL Database](https://hsqldb.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_HSQLDB = \"hsqldb\" as const;\n\n/**\n * Enum value \"ibm.db2\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [IBM Db2](https://www.ibm.com/db2)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_IBM_DB2 = \"ibm.db2\" as const;\n\n/**\n * Enum value \"ibm.informix\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [IBM Informix](https://www.ibm.com/products/informix)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_IBM_INFORMIX = \"ibm.informix\" as const;\n\n/**\n * Enum value \"ibm.netezza\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [IBM Netezza](https://www.ibm.com/products/netezza)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_IBM_NETEZZA = \"ibm.netezza\" as const;\n\n/**\n * Enum value \"influxdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [InfluxDB](https://www.influxdata.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_INFLUXDB = \"influxdb\" as const;\n\n/**\n * Enum value \"instantdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Instant](https://www.instantdb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_INSTANTDB = \"instantdb\" as const;\n\n/**\n * Enum value \"intersystems.cache\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [InterSystems Caché](https://www.intersystems.com/products/cache/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_INTERSYSTEMS_CACHE = \"intersystems.cache\" as const;\n\n/**\n * Enum value \"memcached\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Memcached](https://memcached.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_MEMCACHED = \"memcached\" as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = \"mongodb\" as const;\n\n/**\n * Enum value \"neo4j\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Neo4j](https://neo4j.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_NEO4J = \"neo4j\" as const;\n\n/**\n * Enum value \"opensearch\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [OpenSearch](https://opensearch.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_OPENSEARCH = \"opensearch\" as const;\n\n/**\n * Enum value \"oracle.db\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Oracle Database](https://www.oracle.com/database/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_ORACLE_DB = \"oracle.db\" as const;\n\n/**\n * Enum value \"other_sql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * Some other SQL database. Fallback only.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_OTHER_SQL = \"other_sql\" as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = \"redis\" as const;\n\n/**\n * Enum value \"sap.hana\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SAP_HANA = \"sap.hana\" as const;\n\n/**\n * Enum value \"sap.maxdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SAP MaxDB](https://maxdb.sap.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SAP_MAXDB = \"sap.maxdb\" as const;\n\n/**\n * Enum value \"softwareag.adabas\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SOFTWAREAG_ADABAS = \"softwareag.adabas\" as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SQLite](https://www.sqlite.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SQLITE = \"sqlite\" as const;\n\n/**\n * Enum value \"teradata\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Teradata](https://www.teradata.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_TERADATA = \"teradata\" as const;\n\n/**\n * Enum value \"trino\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Trino](https://trino.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_TRINO = \"trino\" as const;\n\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 */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `deployment.environment.name` instead.\n *\n * @example staging\n * @example production\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 `deployment.environment.name`.\n */\nexport const ATTR_DEPLOYMENT_ENVIRONMENT = 'deployment.environment' as const;\n\n/**\n * Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @example staging\n * @example production\n *\n * @note `deployment.environment.name` does not affect the uniqueness constraints defined through\n * the `service.namespace`, `service.name` and `service.instance.id` resource attributes.\n * This implies that resources carrying the following attribute combinations **MUST** be\n * considered to be identifying the same service:\n *\n * - `service.name=frontend`, `deployment.environment.name=production`\n * - `service.name=frontend`, `deployment.environment.name=staging`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_ENVIRONMENT_NAME = 'deployment.environment.name' as const;\n\n/**\n * The id of the deployment.\n *\n * @example 1208\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_ID = 'deployment.id' as const;\n\n/**\n * The name of the deployment.\n *\n * @example deploy my app\n * @example deploy-frontend\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_NAME = 'deployment.name' as const;\n\n/**\n * The status of the deployment.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_STATUS = 'deployment.status' as const;\n\n/**\n * Enum value \"failed\" for attribute {@link ATTR_DEPLOYMENT_STATUS}.\n *\n * failed\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DEPLOYMENT_STATUS_VALUE_FAILED = \"failed\" as const;\n\n/**\n * Enum value \"succeeded\" for attribute {@link ATTR_DEPLOYMENT_STATUS}.\n *\n * succeeded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DEPLOYMENT_STATUS_VALUE_SUCCEEDED = \"succeeded\" as const;\n\n/**\n * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example destination.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the source side, and when communicating through an intermediary, `destination.address` **SHOULD** represent the destination address behind any intermediaries, for example proxies, if it's available.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DESTINATION_ADDRESS = 'destination.address' as const;\n\n/**\n * Destination port number\n *\n * @example 3389\n * @example 2888\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DESTINATION_PORT = 'destination.port' as const;\n\n/**\n * A unique identifier representing the device\n *\n * @example 123456789012345\n * @example 01:23:45:67:89:AB\n *\n * @note Its value **SHOULD** be identical for all apps on a device and it **SHOULD NOT** change if an app is uninstalled and re-installed.\n * However, it might be resettable by the user for all apps on a device.\n * Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) **MAY** be used as values.\n *\n * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids).\n *\n * > [!WARNING]> This attribute may contain sensitive (PII) information. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply,\n * > ensure you do your own due diligence.> Due to these reasons, this identifier is not recommended for consumer applications and will likely result in rejection from both Google Play and App Store.\n * > However, it may be appropriate for specific enterprise scenarios, such as kiosk devices or enterprise-managed devices, with appropriate compliance clearance.\n * > Any instrumentation providing this identifier **> MUST**> implement it as an opt-in feature.> See [`app.installation.id`](/docs/registry/attributes/app.md#app-installation-id)> for a more privacy-preserving alternative.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_ID = 'device.id' as const;\n\n/**\n * The name of the device manufacturer\n *\n * @example Apple\n * @example Samsung\n *\n * @note The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps **SHOULD** hardcode the value `Apple`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MANUFACTURER = 'device.manufacturer' as const;\n\n/**\n * The model identifier for the device\n *\n * @example iPhone3,4\n * @example SM-G920F\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier' as const;\n\n/**\n * The marketing name for the device model\n *\n * @example iPhone 6s Plus\n * @example Samsung Galaxy S6\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MODEL_NAME = 'device.model.name' as const;\n\n/**\n * The disk IO operation direction.\n *\n * @example read\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DISK_IO_DIRECTION = 'disk.io.direction' as const;\n\n/**\n * Enum value \"read\" for attribute {@link ATTR_DISK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DISK_IO_DIRECTION_VALUE_READ = \"read\" as const;\n\n/**\n * Enum value \"write\" for attribute {@link ATTR_DISK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DISK_IO_DIRECTION_VALUE_WRITE = \"write\" as const;\n\n/**\n * The list of IPv4 or IPv6 addresses resolved during DNS lookup.\n *\n * @example [\"10.0.0.1\", \"2001:0db8:85a3:0000:0000:8a2e:0370:7334\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DNS_ANSWERS = 'dns.answers' as const;\n\n/**\n * The name being queried.\n *\n * @example www.example.com\n * @example opentelemetry.io\n *\n * @note The name represents the queried domain name as it appears in the DNS query without any additional normalization.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DNS_QUESTION_NAME = 'dns.question.name' as const;\n\n/**\n * Represents the human-readable identifier of the node/instance to which a request was routed.\n *\n * @example instance-0000000001\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ELASTICSEARCH_NODE_NAME = 'elasticsearch.node.name' as const;\n\n/**\n * Unique identifier of an end user in the system. It maybe a username, email address, or other identifier.\n *\n * @example username\n *\n * @note Unique identifier of an end user in the system.\n *\n * > [!Warning]\n * > This field contains sensitive (PII) information.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ENDUSER_ID = 'enduser.id' as const;\n\n/**\n * Pseudonymous identifier of an end user. This identifier should be a random value that is not directly linked or associated with the end user's actual identity.\n *\n * @example QdH5CAWJgqVT4rOr0qtumf\n *\n * @note Pseudonymous identifier of an end user.\n *\n * > [!Warning]\n * > This field contains sensitive (linkable PII) information.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ENDUSER_PSEUDO_ID = 'enduser.pseudo.id' as const;\n\n/**\n * Deprecated, use `user.roles` instead.\n *\n * @example \"admin\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use `user.roles` instead.\n */\nexport const ATTR_ENDUSER_ROLE = 'enduser.role' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example \"read:message, write:files\"\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 */\nexport const ATTR_ENDUSER_SCOPE = 'enduser.scope' as const;\n\n/**\n * A message providing more detail about an error in human-readable form.\n *\n * @example Unexpected input type: string\n * @example The user has exceeded their storage quota\n *\n * @note `error.message` should provide additional context and detail about an error.\n * It is NOT **RECOMMENDED** to duplicate the value of `error.type` in `error.message`.\n * It is also NOT **RECOMMENDED** to duplicate the value of `exception.message` in `error.message`.\n *\n * `error.message` is NOT **RECOMMENDED** for metrics or spans due to its unbounded cardinality and overlap with span status.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ERROR_MESSAGE = 'error.message' as const;\n\n/**\n * Identifies the class / type of event.\n *\n * @example browser.mouse.click\n * @example device.app.lifecycle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated The value of this attribute **MUST** now be set as the value of the EventName field on the LogRecord to indicate that the LogRecord represents an Event.\n */\nexport const ATTR_EVENT_NAME = 'event.name' as const;\n\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_COLDSTART = 'faas.coldstart' as const;\n\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 * @example \"0/5 * * * ? *\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_CRON = 'faas.cron' as const;\n\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 * @example myBucketName\n * @example myDbName\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection' as const;\n\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 * @example myFile.txt\n * @example myTableName\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_NAME = 'faas.document.name' as const;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_OPERATION = 'faas.document.operation' as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n *\n * When an object is deleted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"edit\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n *\n * When an object is modified.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_EDIT = \"edit\" as const;\n\n/**\n * Enum value \"insert\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n *\n * When a new object is created.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_INSERT = \"insert\" as const;\n\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 * @example \"2020-01-23T13:47:06Z\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_TIME = 'faas.document.time' as const;\n\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 * @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de\n *\n * @note - **AWS Lambda:** Use the (full) log stream name.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INSTANCE = 'faas.instance' as const;\n\n/**\n * The invocation ID of the current function invocation.\n *\n * @example \"af9d5aa4-a685-4c5f-a22b-444f80b3cc28\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOCATION_ID = 'faas.invocation_id' as const;\n\n/**\n * The name of the invoked function.\n *\n * @example \"my-function\"\n *\n * @note **SHOULD** be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_NAME = 'faas.invoked_name' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider' as const;\n\n/**\n * Enum value \"alibaba_cloud\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Alibaba Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD = \"alibaba_cloud\" as const;\n\n/**\n * Enum value \"aws\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Amazon Web Services\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_AWS = \"aws\" as const;\n\n/**\n * Enum value \"azure\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Microsoft Azure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_AZURE = \"azure\" as const;\n\n/**\n * Enum value \"gcp\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Google Cloud Platform\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_GCP = \"gcp\" as const;\n\n/**\n * Enum value \"tencent_cloud\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Tencent Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD = \"tencent_cloud\" as const;\n\n/**\n * The cloud region of the invoked function.\n *\n * @example \"eu-central-1\"\n *\n * @note **SHOULD** be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_REGION = 'faas.invoked_region' as const;\n\n/**\n * The amount of memory available to the serverless function converted to Bytes.\n *\n * @example 134217728\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 (which must be multiplied by 1,048,576).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_MAX_MEMORY = 'faas.max_memory' as const;\n\n/**\n * The name of the single function that this runtime instance executes.\n *\n * @example my-function\n * @example myazurefunctionapp/some-function-name\n *\n * @note This is the name of the function as configured/deployed on the FaaS\n * platform and is usually different from the name of the callback\n * function (which may be stored in the\n * [`code.namespace`/`code.function.name`](/docs/general/attributes.md#source-code-attributes)\n * span attributes).\n *\n * For some cloud providers, the above definition is ambiguous. The following\n * definition of function name **MUST** be used for this attribute\n * (and consequently the span name) for the listed cloud providers/products:\n *\n * - **Azure:** The full name `/`, i.e., function app name\n * followed by a forward slash followed by the function name (this form\n * can also be seen in the resource JSON for the function).\n * This means that a span attribute **MUST** be used, as an Azure function\n * app can host multiple functions that would usually share\n * a TracerProvider (see also the `cloud.resource_id` attribute).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_NAME = 'faas.name' as const;\n\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 * @example \"2020-01-23T13:47:06Z\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_TIME = 'faas.time' as const;\n\n/**\n * Type of the trigger which caused this function invocation.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_TRIGGER = 'faas.trigger' as const;\n\n/**\n * Enum value \"datasource\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * A response to some data source operation such as a database or filesystem read/write\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_DATASOURCE = \"datasource\" as const;\n\n/**\n * Enum value \"http\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * To provide an answer to an inbound HTTP request\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_HTTP = \"http\" as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * If none of the others apply\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"pubsub\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * A function is set to be executed when messages are sent to a messaging system\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_PUBSUB = \"pubsub\" as const;\n\n/**\n * Enum value \"timer\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * A function is scheduled to be executed regularly\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_TIMER = \"timer\" as const;\n\n/**\n * The immutable version of the function being executed.\n *\n * @example 26\n * @example pinkfroid-00002\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 (Services):** 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/run/docs/container-contract#services-env-vars).\n * - **Azure Functions:** Not applicable. Do not set this attribute.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_VERSION = 'faas.version' as const;\n\n/**\n * The unique identifier for the flag evaluation context. For example, the targeting key.\n *\n * @example 5157782b-2203-4c80-a857-dbbd5e7761db\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_CONTEXT_ID = 'feature_flag.context.id' as const;\n\n/**\n * Deprecated, use `error.message` instead.\n *\n * @example Flag `header-color` expected type `string` but found type `number`\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 `error.message`.\n */\nexport const ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE = 'feature_flag.evaluation.error.message' as const;\n\n/**\n * Deprecated, use `feature_flag.result.reason` instead.\n *\n * @example static\n * @example targeting_match\n * @example error\n * @example default\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 `feature_flag.result.reason`.\n */\nexport const ATTR_FEATURE_FLAG_EVALUATION_REASON = 'feature_flag.evaluation.reason' as const;\n\n/**\n * Enum value \"cached\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was retrieved from cache.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED = \"cached\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * Enum value \"disabled\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of the flag being disabled in the management system.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED = \"disabled\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of an error.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"split\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of pseudorandom assignment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT = \"split\" as const;\n\n/**\n * Enum value \"stale\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value is non-authoritative or possibly out of date\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE = \"stale\" as const;\n\n/**\n * Enum value \"static\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value is static (no dynamic evaluation).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC = \"static\" as const;\n\n/**\n * Enum value \"targeting_match\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH = \"targeting_match\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The reason for the resolved value could not be determined.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * The lookup key of the feature flag.\n *\n * @example logo-color\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_KEY = 'feature_flag.key' as const;\n\n/**\n * Identifies the feature flag provider.\n *\n * @example Flag Manager\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_PROVIDER_NAME = 'feature_flag.provider.name' as const;\n\n/**\n * The reason code which shows how a feature flag value was determined.\n *\n * @example static\n * @example targeting_match\n * @example error\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_RESULT_REASON = 'feature_flag.result.reason' as const;\n\n/**\n * Enum value \"cached\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was retrieved from cache.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_CACHED = \"cached\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * Enum value \"disabled\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of the flag being disabled in the management system.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_DISABLED = \"disabled\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of an error.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"split\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of pseudorandom assignment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_SPLIT = \"split\" as const;\n\n/**\n * Enum value \"stale\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value is non-authoritative or possibly out of date\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_STALE = \"stale\" as const;\n\n/**\n * Enum value \"static\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value is static (no dynamic evaluation).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_STATIC = \"static\" as const;\n\n/**\n * Enum value \"targeting_match\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_TARGETING_MATCH = \"targeting_match\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The reason for the resolved value could not be determined.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * The evaluated value of the feature flag.\n *\n * @example #ff0000\n * @example true\n * @example 3\n *\n * @note With some feature flag providers, feature flag results can be quite large or contain private or sensitive details.\n * Because of this, `feature_flag.result.variant` is often the preferred attribute if it is available.\n *\n * It may be desirable to redact or otherwise limit the size and scope of `feature_flag.result.value` if possible.\n * Because the evaluated flag value is unstructured and may be any type, it is left to the instrumentation author to determine how best to achieve this.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_RESULT_VALUE = 'feature_flag.result.value' as const;\n\n/**\n * A semantic identifier for an evaluated flag value.\n *\n * @example red\n * @example true\n * @example on\n *\n * @note A semantic identifier, commonly referred to as a variant, provides a means\n * for referring to a value without including the value itself. This can\n * provide additional context for understanding the meaning behind a value.\n * For example, the variant `red` maybe be used for the value `#c05543`.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_RESULT_VARIANT = 'feature_flag.result.variant' as const;\n\n/**\n * The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs.\n *\n * @example proj-1\n * @example ab98sgs\n * @example service1/dev\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_SET_ID = 'feature_flag.set.id' as const;\n\n/**\n * Deprecated, use `feature_flag.result.variant` instead.\n *\n * @example red\n * @example true\n * @example on\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 `feature_flag.result.variant`.\n */\nexport const ATTR_FEATURE_FLAG_VARIANT = 'feature_flag.variant' as const;\n\n/**\n * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset.\n *\n * @example 1\n * @example 01ABCDEF\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_VERSION = 'feature_flag.version' as const;\n\n/**\n * Time when the file was last accessed, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_ACCESSED = 'file.accessed' as const;\n\n/**\n * Array of file attributes.\n *\n * @example [\"readonly\", \"hidden\"]\n *\n * @note Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected for this attribute: `archive`, `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, `write`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_ATTRIBUTES = 'file.attributes' as const;\n\n/**\n * Time when the file attributes or metadata was last changed, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @note `file.changed` captures the time when any of the file's properties or attributes (including the content) are changed, while `file.modified` captures the timestamp when the file content is modified.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_CHANGED = 'file.changed' as const;\n\n/**\n * Time when the file was created, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_CREATED = 'file.created' as const;\n\n/**\n * Directory where the file is located. It should include the drive letter, when appropriate.\n *\n * @example /home/user\n * @example C:\\\\Program Files\\\\MyApp\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_DIRECTORY = 'file.directory' as const;\n\n/**\n * File extension, excluding the leading dot.\n *\n * @example png\n * @example gz\n *\n * @note When the file name has multiple extensions (example.tar.gz), only the last one should be captured (\"gz\", not \"tar.gz\").\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_EXTENSION = 'file.extension' as const;\n\n/**\n * Name of the fork. A fork is additional data associated with a filesystem object.\n *\n * @example Zone.Identifier\n *\n * @note On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.\n * On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: C:\\\\path\\\\to\\\\filename.extension:some_fork_name, and some_fork_name is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_FORK_NAME = 'file.fork_name' as const;\n\n/**\n * Primary Group ID (GID) of the file.\n *\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_GROUP_ID = 'file.group.id' as const;\n\n/**\n * Primary group name of the file.\n *\n * @example users\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_GROUP_NAME = 'file.group.name' as const;\n\n/**\n * Inode representing the file in the filesystem.\n *\n * @example 256383\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_INODE = 'file.inode' as const;\n\n/**\n * Mode of the file in octal representation.\n *\n * @example 0640\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_MODE = 'file.mode' as const;\n\n/**\n * Time when the file content was last modified, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_MODIFIED = 'file.modified' as const;\n\n/**\n * Name of the file including the extension, without the directory.\n *\n * @example example.png\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_NAME = 'file.name' as const;\n\n/**\n * The user ID (UID) or security identifier (SID) of the file owner.\n *\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_OWNER_ID = 'file.owner.id' as const;\n\n/**\n * Username of the file owner.\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 */\nexport const ATTR_FILE_OWNER_NAME = 'file.owner.name' as const;\n\n/**\n * Full path to the file, including the file name. It should include the drive letter, when appropriate.\n *\n * @example /home/alice/example.png\n * @example C:\\\\Program Files\\\\MyApp\\\\myapp.exe\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_PATH = 'file.path' as const;\n\n/**\n * File size in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_SIZE = 'file.size' as const;\n\n/**\n * Path to the target of a symbolic link.\n *\n * @example /usr/bin/python3\n *\n * @note This attribute is only applicable to symbolic links.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH = 'file.symbolic_link.target_path' as const;\n\n/**\n * The container within GCP where the AppHub application is defined.\n *\n * @example projects/my-container-project\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_APPLICATION_CONTAINER = 'gcp.apphub.application.container' as const;\n\n/**\n * The name of the application as configured in AppHub.\n *\n * @example my-application\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_APPLICATION_ID = 'gcp.apphub.application.id' as const;\n\n/**\n * The GCP zone or region where the application is defined.\n *\n * @example us-central1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_APPLICATION_LOCATION = 'gcp.apphub.application.location' as const;\n\n/**\n * Criticality of a service indicates its importance to the business.\n *\n * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE = 'gcp.apphub.service.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Environment of a service is the stage of a software lifecycle.\n *\n * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub.service.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the service as configured in AppHub.\n *\n * @example my-service\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_SERVICE_ID = 'gcp.apphub.service.id' as const;\n\n/**\n * Criticality of a workload indicates its importance to the business.\n *\n * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub.workload.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Environment of a workload is the stage of a software lifecycle.\n *\n * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub.workload.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the workload as configured in AppHub.\n *\n * @example my-workload\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_WORKLOAD_ID = 'gcp.apphub.workload.id' as const;\n\n/**\n * The container within GCP where the AppHub destination application is defined.\n *\n * @example projects/my-container-project\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_CONTAINER = 'gcp.apphub_destination.application.container' as const;\n\n/**\n * The name of the destination application as configured in AppHub.\n *\n * @example my-application\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_ID = 'gcp.apphub_destination.application.id' as const;\n\n/**\n * The GCP zone or region where the destination application is defined.\n *\n * @example us-central1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_LOCATION = 'gcp.apphub_destination.application.location' as const;\n\n/**\n * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE = 'gcp.apphub_destination.service.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Software lifecycle stage of a destination service as defined [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub_destination.service.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the destination service as configured in AppHub.\n *\n * @example my-service\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ID = 'gcp.apphub_destination.service.id' as const;\n\n/**\n * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub_destination.workload.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Environment of a destination workload is the stage of a software lifecycle as provided in the [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub_destination.workload.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the destination workload as configured in AppHub.\n *\n * @example my-workload\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ID = 'gcp.apphub_destination.workload.id' as const;\n\n/**\n * Identifies the Google Cloud service for which the official client library is intended.\n *\n * @example appengine\n * @example run\n * @example firestore\n * @example alloydb\n * @example spanner\n *\n * @note Intended to be a stable identifier for Google Cloud client libraries that is uniform across implementation languages. The value should be derived from the canonical service domain for the service; for example, 'foo.googleapis.com' should result in a value of 'foo'.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLIENT_SERVICE = 'gcp.client.service' as const;\n\n/**\n * The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.\n *\n * @example job-name-xxxx\n * @example sample-job-mdw84\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLOUD_RUN_JOB_EXECUTION = 'gcp.cloud_run.job.execution' as const;\n\n/**\n * The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.\n *\n * @example 0\n * @example 1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX = 'gcp.cloud_run.job.task_index' as const;\n\n/**\n * The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm).\n *\n * @example my-host1234.example.com\n * @example sample-vm.us-west1-b.c.my-project.internal\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_GCE_INSTANCE_HOSTNAME = 'gcp.gce.instance.hostname' as const;\n\n/**\n * The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names).\n *\n * @example instance-1\n * @example my-vm-name\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_GCE_INSTANCE_NAME = 'gcp.gce.instance.name' as const;\n\n/**\n * Free-form description of the GenAI agent provided by the application.\n *\n * @example Helps with math problems\n * @example Generates fiction stories\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_AGENT_DESCRIPTION = 'gen_ai.agent.description' as const;\n\n/**\n * The unique identifier of the GenAI agent.\n *\n * @example asst_5j66UpCpwteGg4YSxUnt7lPY\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_AGENT_ID = 'gen_ai.agent.id' as const;\n\n/**\n * Human-readable name of the GenAI agent provided by the application.\n *\n * @example Math Tutor\n * @example Fiction Writer\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_AGENT_NAME = 'gen_ai.agent.name' as const;\n\n/**\n * Deprecated, use Event API to report completions contents.\n *\n * @example [{'role': 'assistant', 'content': 'The capital of France is Paris.'}]\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 */\nexport const ATTR_GEN_AI_COMPLETION = 'gen_ai.completion' as const;\n\n/**\n * The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.\n *\n * @example conv_5j66UpCpwteGg4YSxUnt7lPY\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_CONVERSATION_ID = 'gen_ai.conversation.id' as const;\n\n/**\n * The data source identifier.\n *\n * @example H7STPQYOND\n *\n * @note Data sources are used by AI agents and RAG applications to store grounding data. A data source may be an external database, object store, document collection, website, or any other storage system used by the GenAI agent or application. The `gen_ai.data_source.id` **SHOULD** match the identifier used by the GenAI system rather than a name specific to the external storage, such as a database or object store. Semantic conventions referencing `gen_ai.data_source.id` **MAY** also leverage additional attributes, such as `db.*`, to further identify and describe the data source.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_DATA_SOURCE_ID = 'gen_ai.data_source.id' as const;\n\n/**\n * The number of dimensions the resulting output embeddings should have.\n *\n * @example 512\n * @example 1024\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT = 'gen_ai.embeddings.dimension.count' as const;\n\n/**\n * A free-form explanation for the assigned score provided by the evaluator.\n *\n * @example The response is factually accurate but lacks sufficient detail to fully address the question.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_EXPLANATION = 'gen_ai.evaluation.explanation' as const;\n\n/**\n * The name of the evaluation metric used for the GenAI response.\n *\n * @example Relevance\n * @example IntentResolution\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_NAME = 'gen_ai.evaluation.name' as const;\n\n/**\n * Human readable label for evaluation.\n *\n * @example relevant\n * @example not_relevant\n * @example correct\n * @example incorrect\n * @example pass\n * @example fail\n *\n * @note This attribute provides a human-readable interpretation of the evaluation score produced by an evaluator. For example, a score value of 1 could mean \"relevant\" in one evaluation system and \"not relevant\" in another, depending on the scoring range and evaluator. The label **SHOULD** have low cardinality. Possible values depend on the evaluation metric and evaluator used; implementations **SHOULD** document the possible values.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_SCORE_LABEL = 'gen_ai.evaluation.score.label' as const;\n\n/**\n * The evaluation score returned by the evaluator.\n *\n * @example 4.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_SCORE_VALUE = 'gen_ai.evaluation.score.value' as const;\n\n/**\n * The chat history provided to the model as an input.\n *\n * @example [\n * {\n * \"role\": \"user\",\n * \"parts\": [\n * {\n * \"type\": \"text\",\n * \"content\": \"Weather in Paris?\"\n * }\n * ]\n * },\n * {\n * \"role\": \"assistant\",\n * \"parts\": [\n * {\n * \"type\": \"tool_call\",\n * \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\",\n * \"name\": \"get_weather\",\n * \"arguments\": {\n * \"location\": \"Paris\"\n * }\n * }\n * ]\n * },\n * {\n * \"role\": \"tool\",\n * \"parts\": [\n * {\n * \"type\": \"tool_call_response\",\n * \"id\": \" call_VSPygqKTWdrhaFErNvMV18Yl\",\n * \"result\": \"rainy, 57°F\"\n * }\n * ]\n * }\n * ]\n *\n * @note Instrumentations **MUST** follow [Input messages JSON schema](/docs/gen-ai/gen-ai-input-messages.json).\n * When the attribute is recorded on events, it **MUST** be recorded in structured\n * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured\n * format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Messages **MUST** be provided in the order they were sent to the model.\n * Instrumentations **MAY** provide a way for users to filter or truncate\n * input messages.\n *\n * > [!Warning]\n * > This attribute is likely to contain sensitive information including user/PII data.\n *\n * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)\n * section for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_INPUT_MESSAGES = 'gen_ai.input.messages' as const;\n\n/**\n * Deprecated, use `gen_ai.output.type`.\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 `gen_ai.output.type`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT = 'gen_ai.openai.request.response_format' as const;\n\n/**\n * Enum value \"json_object\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n *\n * JSON object response format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT = \"json_object\" as const;\n\n/**\n * Enum value \"json_schema\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n *\n * JSON schema response format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA = \"json_schema\" as const;\n\n/**\n * Enum value \"text\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n *\n * Text response format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT = \"text\" as const;\n\n/**\n * Deprecated, use `gen_ai.request.seed`.\n *\n * @example 100\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 `gen_ai.request.seed`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_SEED = 'gen_ai.openai.request.seed' as const;\n\n/**\n * Deprecated, use `openai.request.service_tier`.\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 `openai.request.service_tier`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER = 'gen_ai.openai.request.service_tier' as const;\n\n/**\n * Enum value \"auto\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize scale tier credits until they are exhausted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = \"auto\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize the default scale tier.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * Deprecated, use `openai.response.service_tier`.\n *\n * @example scale\n * @example default\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 `openai.response.service_tier`.\n */\nexport const ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER = 'gen_ai.openai.response.service_tier' as const;\n\n/**\n * Deprecated, use `openai.response.system_fingerprint`.\n *\n * @example fp_44709d6fcb\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 `openai.response.system_fingerprint`.\n */\nexport const ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'gen_ai.openai.response.system_fingerprint' as const;\n\n/**\n * The name of the operation being performed.\n *\n * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name' as const;\n\n/**\n * Enum value \"chat\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_CHAT = \"chat\" as const;\n\n/**\n * Enum value \"create_agent\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Create GenAI agent\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT = \"create_agent\" as const;\n\n/**\n * Enum value \"embeddings\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS = \"embeddings\" as const;\n\n/**\n * Enum value \"execute_tool\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Execute a tool\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL = \"execute_tool\" as const;\n\n/**\n * Enum value \"generate_content\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_GENERATE_CONTENT = \"generate_content\" as const;\n\n/**\n * Enum value \"invoke_agent\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Invoke GenAI agent\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT = \"invoke_agent\" as const;\n\n/**\n * Enum value \"text_completion\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION = \"text_completion\" as const;\n\n/**\n * Messages returned by the model where each message represents a specific model response (choice, candidate).\n *\n * @example [\n * {\n * \"role\": \"assistant\",\n * \"parts\": [\n * {\n * \"type\": \"text\",\n * \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"\n * }\n * ],\n * \"finish_reason\": \"stop\"\n * }\n * ]\n *\n * @note Instrumentations **MUST** follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json)\n *\n * Each message represents a single output choice/candidate generated by\n * the model. Each message corresponds to exactly one generation\n * (choice/candidate) and vice versa - one choice cannot be split across\n * multiple messages or one message cannot contain parts from multiple choices.\n *\n * When the attribute is recorded on events, it **MUST** be recorded in structured\n * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured\n * format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Instrumentations **MAY** provide a way for users to filter or truncate\n * output messages.\n *\n * > [!Warning]\n * > This attribute is likely to contain sensitive information including user/PII data.\n *\n * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)\n * section for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OUTPUT_MESSAGES = 'gen_ai.output.messages' as const;\n\n/**\n * Represents the content type requested by the client.\n *\n * @note This attribute **SHOULD** be used when the client requests output of a specific type. The model may return zero or more outputs of this type.\n * This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file.\n * Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OUTPUT_TYPE = 'gen_ai.output.type' as const;\n\n/**\n * Enum value \"image\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * Image\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_IMAGE = \"image\" as const;\n\n/**\n * Enum value \"json\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * JSON object with known or unknown schema\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_JSON = \"json\" as const;\n\n/**\n * Enum value \"speech\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * Speech\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_SPEECH = \"speech\" as const;\n\n/**\n * Enum value \"text\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * Plain text\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_TEXT = \"text\" as const;\n\n/**\n * Deprecated, use Event API to report prompt contents.\n *\n * @example [{'role': 'user', 'content': 'What is the capital of France?'}]\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 */\nexport const ATTR_GEN_AI_PROMPT = 'gen_ai.prompt' as const;\n\n/**\n * The name of the prompt that uniquely identifies it.\n *\n * @example analyze-code\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_PROMPT_NAME = 'gen_ai.prompt.name' as const;\n\n/**\n * The Generative AI provider as identified by the client or server instrumentation.\n *\n * @note The attribute **SHOULD** be set based on the instrumentation's best\n * knowledge and may differ from the actual model provider.\n *\n * Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms\n * are accessible using the OpenAI REST API and corresponding client libraries,\n * but may proxy or host models from different providers.\n *\n * The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address`\n * attributes may help identify the actual system in use.\n *\n * The `gen_ai.provider.name` attribute acts as a discriminator that\n * identifies the GenAI telemetry format flavor specific to that provider\n * within GenAI semantic conventions.\n * It **SHOULD** be set consistently with provider-specific attributes and signals.\n * For example, GenAI spans, metrics, and events related to AWS Bedrock\n * should have the `gen_ai.provider.name` set to `aws.bedrock` and include\n * applicable `aws.bedrock.*` attributes and are not expected to include\n * `openai.*` attributes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_PROVIDER_NAME = 'gen_ai.provider.name' as const;\n\n/**\n * Enum value \"anthropic\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Anthropic](https://www.anthropic.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_ANTHROPIC = \"anthropic\" as const;\n\n/**\n * Enum value \"aws.bedrock\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [AWS Bedrock](https://aws.amazon.com/bedrock)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_AWS_BEDROCK = \"aws.bedrock\" as const;\n\n/**\n * Enum value \"azure.ai.inference\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * Azure AI Inference\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_INFERENCE = \"azure.ai.inference\" as const;\n\n/**\n * Enum value \"azure.ai.openai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_OPENAI = \"azure.ai.openai\" as const;\n\n/**\n * Enum value \"cohere\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Cohere](https://cohere.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_COHERE = \"cohere\" as const;\n\n/**\n * Enum value \"deepseek\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [DeepSeek](https://www.deepseek.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_DEEPSEEK = \"deepseek\" as const;\n\n/**\n * Enum value \"gcp.gemini\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Gemini](https://cloud.google.com/products/gemini)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEMINI = \"gcp.gemini\" as const;\n\n/**\n * Enum value \"gcp.gen_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * Any Google generative AI endpoint\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEN_AI = \"gcp.gen_ai\" as const;\n\n/**\n * Enum value \"gcp.vertex_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Vertex AI](https://cloud.google.com/vertex-ai)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GCP_VERTEX_AI = \"gcp.vertex_ai\" as const;\n\n/**\n * Enum value \"groq\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Groq](https://groq.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GROQ = \"groq\" as const;\n\n/**\n * Enum value \"ibm.watsonx.ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_IBM_WATSONX_AI = \"ibm.watsonx.ai\" as const;\n\n/**\n * Enum value \"mistral_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Mistral AI](https://mistral.ai/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_MISTRAL_AI = \"mistral_ai\" as const;\n\n/**\n * Enum value \"openai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [OpenAI](https://openai.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_OPENAI = \"openai\" as const;\n\n/**\n * Enum value \"perplexity\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Perplexity](https://www.perplexity.ai/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_PERPLEXITY = \"perplexity\" as const;\n\n/**\n * Enum value \"x_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [xAI](https://x.ai/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_X_AI = \"x_ai\" as const;\n\n/**\n * The target number of candidate completions to return.\n *\n * @example 3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_CHOICE_COUNT = 'gen_ai.request.choice.count' as const;\n\n/**\n * The encoding formats requested in an embeddings operation, if specified.\n *\n * @example [\"base64\"]\n * @example [\"float\", \"binary\"]\n *\n * @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = 'gen_ai.request.encoding_formats' as const;\n\n/**\n * The frequency penalty setting for the GenAI request.\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 */\nexport const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = 'gen_ai.request.frequency_penalty' as const;\n\n/**\n * The maximum number of tokens the model generates for a request.\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_MAX_TOKENS = 'gen_ai.request.max_tokens' as const;\n\n/**\n * The name of the GenAI model a request is being made to.\n *\n * @example \"gpt-4\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model' as const;\n\n/**\n * The presence penalty setting for the GenAI request.\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 */\nexport const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty' as const;\n\n/**\n * Requests with same seed value more likely to return same result.\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_SEED = 'gen_ai.request.seed' as const;\n\n/**\n * List of sequences that the model will use to stop generating further tokens.\n *\n * @example [\"forest\", \"lived\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = 'gen_ai.request.stop_sequences' as const;\n\n/**\n * The temperature setting for the GenAI request.\n *\n * @example 0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TEMPERATURE = 'gen_ai.request.temperature' as const;\n\n/**\n * The top_k sampling setting for the GenAI request.\n *\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TOP_K = 'gen_ai.request.top_k' as const;\n\n/**\n * The top_p sampling setting for the GenAI request.\n *\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TOP_P = 'gen_ai.request.top_p' as const;\n\n/**\n * Array of reasons the model stopped generating tokens, corresponding to each generation received.\n *\n * @example [\"stop\"]\n * @example [\"stop\", \"length\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_FINISH_REASONS = 'gen_ai.response.finish_reasons' as const;\n\n/**\n * The unique identifier for the completion.\n *\n * @example chatcmpl-123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_ID = 'gen_ai.response.id' as const;\n\n/**\n * The name of the model that generated the response.\n *\n * @example gpt-4-0613\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model' as const;\n\n/**\n * Deprecated, use `gen_ai.provider.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 `gen_ai.provider.name`.\n */\nexport const ATTR_GEN_AI_SYSTEM = 'gen_ai.system' as const;\n\n/**\n * Enum value \"anthropic\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Anthropic\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_ANTHROPIC = \"anthropic\" as const;\n\n/**\n * Enum value \"aws.bedrock\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * AWS Bedrock\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AWS_BEDROCK = \"aws.bedrock\" as const;\n\n/**\n * Enum value \"az.ai.inference\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure AI Inference\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `azure.ai.inference`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE = \"az.ai.inference\" as const;\n\n/**\n * Enum value \"az.ai.openai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure OpenAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `azure.ai.openai`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI = \"az.ai.openai\" as const;\n\n/**\n * Enum value \"azure.ai.inference\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure AI Inference\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZURE_AI_INFERENCE = \"azure.ai.inference\" as const;\n\n/**\n * Enum value \"azure.ai.openai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure OpenAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZURE_AI_OPENAI = \"azure.ai.openai\" as const;\n\n/**\n * Enum value \"cohere\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Cohere\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_COHERE = \"cohere\" as const;\n\n/**\n * Enum value \"deepseek\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * DeepSeek\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_DEEPSEEK = \"deepseek\" as const;\n\n/**\n * Enum value \"gcp.gemini\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Gemini\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GCP_GEMINI = \"gcp.gemini\" as const;\n\n/**\n * Enum value \"gcp.gen_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Any Google generative AI endpoint\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GCP_GEN_AI = \"gcp.gen_ai\" as const;\n\n/**\n * Enum value \"gcp.vertex_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Vertex AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GCP_VERTEX_AI = \"gcp.vertex_ai\" as const;\n\n/**\n * Enum value \"gemini\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Gemini\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `gcp.gemini`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GEMINI = \"gemini\" as const;\n\n/**\n * Enum value \"groq\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Groq\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GROQ = \"groq\" as const;\n\n/**\n * Enum value \"ibm.watsonx.ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * IBM Watsonx AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI = \"ibm.watsonx.ai\" as const;\n\n/**\n * Enum value \"mistral_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Mistral AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_MISTRAL_AI = \"mistral_ai\" as const;\n\n/**\n * Enum value \"openai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * OpenAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_OPENAI = \"openai\" as const;\n\n/**\n * Enum value \"perplexity\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Perplexity\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_PERPLEXITY = \"perplexity\" as const;\n\n/**\n * Enum value \"vertex_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Vertex AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `gcp.vertex_ai`.\n */\nexport const GEN_AI_SYSTEM_VALUE_VERTEX_AI = \"vertex_ai\" as const;\n\n/**\n * Enum value \"xai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * xAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_XAI = \"xai\" as const;\n\n/**\n * The system message or instructions provided to the GenAI model separately from the chat history.\n *\n * @example [\n * {\n * \"type\": \"text\",\n * \"content\": \"You are an Agent that greet users, always use greetings tool to respond\"\n * }\n * ]\n *\n * @example [\n * {\n * \"type\": \"text\",\n * \"content\": \"You are a language translator.\"\n * },\n * {\n * \"type\": \"text\",\n * \"content\": \"Your mission is to translate text in English to French.\"\n * }\n * ]\n *\n * @note This attribute **SHOULD** be used when the corresponding provider or API\n * allows to provide system instructions or messages separately from the\n * chat history.\n *\n * Instructions that are part of the chat history **SHOULD** be recorded in\n * `gen_ai.input.messages` attribute instead.\n *\n * Instrumentations **MUST** follow [System instructions JSON schema](/docs/gen-ai/gen-ai-system-instructions.json).\n *\n * When recorded on spans, it **MAY** be recorded as a JSON string if structured\n * format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Instrumentations **MAY** provide a way for users to filter or truncate\n * system instructions.\n *\n * > [!Warning]\n * > This attribute may contain sensitive information.\n *\n * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)\n * section for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_SYSTEM_INSTRUCTIONS = 'gen_ai.system_instructions' as const;\n\n/**\n * The type of token being counted.\n *\n * @example input\n * @example output\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOKEN_TYPE = 'gen_ai.token.type' as const;\n\n/**\n * Enum value \"input\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n *\n * Input tokens (prompt, input, etc.)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_INPUT = \"input\" as const;\n\n/**\n * Enum value \"output\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n *\n * Output tokens (completion, response, etc.)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `output`.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_COMPLETION = \"output\" as const;\n\n/**\n * Enum value \"output\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n *\n * Output tokens (completion, response, etc.)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_OUTPUT = \"output\" as const;\n\n/**\n * Parameters passed to the tool call.\n *\n * @example {\n * \"location\": \"San Francisco?\",\n * \"date\": \"2025-10-01\"\n * }\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n *\n * It's expected to be an object - in case a serialized string is available\n * to the instrumentation, the instrumentation **SHOULD** do the best effort to\n * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_CALL_ARGUMENTS = 'gen_ai.tool.call.arguments' as const;\n\n/**\n * The tool call identifier.\n *\n * @example call_mszuSIzqtI65i1wAUOE8w5H4\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_CALL_ID = 'gen_ai.tool.call.id' as const;\n\n/**\n * The result returned by the tool call (if any and if execution was successful).\n *\n * @example {\n * \"temperature_range\": {\n * \"high\": 75,\n * \"low\": 60\n * },\n * \"conditions\": \"sunny\"\n * }\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n *\n * It's expected to be an object - in case a serialized string is available\n * to the instrumentation, the instrumentation **SHOULD** do the best effort to\n * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_CALL_RESULT = 'gen_ai.tool.call.result' as const;\n\n/**\n * The list of source system tool definitions available to the GenAI agent or model.\n *\n * @example [\n * {\n * \"type\": \"function\",\n * \"name\": \"get_current_weather\",\n * \"description\": \"Get the current weather in a given location\",\n * \"parameters\": {\n * \"type\": \"object\",\n * \"properties\": {\n * \"location\": {\n * \"type\": \"string\",\n * \"description\": \"The city and state, e.g. San Francisco, CA\"\n * },\n * \"unit\": {\n * \"type\": \"string\",\n * \"enum\": [\n * \"celsius\",\n * \"fahrenheit\"\n * ]\n * }\n * },\n * \"required\": [\n * \"location\",\n * \"unit\"\n * ]\n * }\n * }\n * ]\n *\n * @note The value of this attribute matches source system tool definition format.\n *\n * It's expected to be an array of objects where each object represents a tool definition. In case a serialized string is available\n * to the instrumentation, the instrumentation **SHOULD** do the best effort to\n * deserialize it to an array. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Since this attribute could be large, it's NOT **RECOMMENDED** to populate\n * it by default. Instrumentations **MAY** provide a way to enable\n * populating this attribute.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_DEFINITIONS = 'gen_ai.tool.definitions' as const;\n\n/**\n * The tool description.\n *\n * @example Multiply two numbers\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_DESCRIPTION = 'gen_ai.tool.description' as const;\n\n/**\n * Name of the tool utilized by the agent.\n *\n * @example Flights\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_NAME = 'gen_ai.tool.name' as const;\n\n/**\n * Type of the tool utilized by the agent\n *\n * @example function\n * @example extension\n * @example datastore\n *\n * @note Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems.\n * Agent-side operations involve actions that are performed by the agent on the server or within the agent's controlled environment.\n * Function: A tool executed on the client-side, where the agent generates parameters for a predefined function, and the client executes the logic.\n * Client-side operations are actions taken on the user's end or within the client application.\n * Datastore: A tool used by the agent to access and query structured or unstructured external data for retrieval-augmented tasks or knowledge updates.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_TYPE = 'gen_ai.tool.type' as const;\n\n/**\n * Deprecated, use `gen_ai.usage.output_tokens` instead.\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 *\n * @deprecated Replaced by `gen_ai.usage.output_tokens`.\n */\nexport const ATTR_GEN_AI_USAGE_COMPLETION_TOKENS = 'gen_ai.usage.completion_tokens' as const;\n\n/**\n * The number of tokens used in the GenAI input (prompt).\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens' as const;\n\n/**\n * The number of tokens used in the GenAI response (completion).\n *\n * @example 180\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens' as const;\n\n/**\n * Deprecated, use `gen_ai.usage.input_tokens` instead.\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 *\n * @deprecated Replaced by `gen_ai.usage.input_tokens`.\n */\nexport const ATTR_GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens' as const;\n\n/**\n * Two-letter code representing continent’s name.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_CONTINENT_CODE = 'geo.continent.code' as const;\n\n/**\n * Enum value \"AF\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Africa\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_AF = \"AF\" as const;\n\n/**\n * Enum value \"AN\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Antarctica\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_AN = \"AN\" as const;\n\n/**\n * Enum value \"AS\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Asia\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_AS = \"AS\" as const;\n\n/**\n * Enum value \"EU\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Europe\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_EU = \"EU\" as const;\n\n/**\n * Enum value \"NA\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * North America\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_NA = \"NA\" as const;\n\n/**\n * Enum value \"OC\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Oceania\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_OC = \"OC\" as const;\n\n/**\n * Enum value \"SA\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * South America\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_SA = \"SA\" as const;\n\n/**\n * Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)).\n *\n * @example CA\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_COUNTRY_ISO_CODE = 'geo.country.iso_code' as const;\n\n/**\n * Locality name. Represents the name of a city, town, village, or similar populated place.\n *\n * @example Montreal\n * @example Berlin\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_LOCALITY_NAME = 'geo.locality.name' as const;\n\n/**\n * Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84).\n *\n * @example 45.505918\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_LOCATION_LAT = 'geo.location.lat' as const;\n\n/**\n * Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84).\n *\n * @example -73.61483\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_LOCATION_LON = 'geo.location.lon' as const;\n\n/**\n * Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.\n *\n * @example 94040\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_POSTAL_CODE = 'geo.postal_code' as const;\n\n/**\n * Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)).\n *\n * @example CA-QC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_REGION_ISO_CODE = 'geo.region.iso_code' as const;\n\n/**\n * The type of memory.\n *\n * @example other\n * @example stack\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GO_MEMORY_TYPE = 'go.memory.type' as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_GO_MEMORY_TYPE}.\n *\n * Memory used by the Go runtime, excluding other categories of memory usage described in this enumeration.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GO_MEMORY_TYPE_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"stack\" for attribute {@link ATTR_GO_MEMORY_TYPE}.\n *\n * Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GO_MEMORY_TYPE_VALUE_STACK = \"stack\" as const;\n\n/**\n * The GraphQL document being executed.\n *\n * @example \"query findBookById { bookById(id: ?) { name } }\"\n *\n * @note The value may be sanitized to exclude sensitive information.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_DOCUMENT = 'graphql.document' as const;\n\n/**\n * The name of the operation being executed.\n *\n * @example \"findBookById\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_OPERATION_NAME = 'graphql.operation.name' as const;\n\n/**\n * The type of the operation being executed.\n *\n * @example query\n * @example mutation\n * @example subscription\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_OPERATION_TYPE = 'graphql.operation.type' as const;\n\n/**\n * Enum value \"mutation\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n *\n * GraphQL mutation\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_MUTATION = \"mutation\" as const;\n\n/**\n * Enum value \"query\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n *\n * GraphQL query\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_QUERY = \"query\" as const;\n\n/**\n * Enum value \"subscription\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n *\n * GraphQL subscription\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION = \"subscription\" as const;\n\n/**\n * Unique identifier for the application\n *\n * @example 2daa2797-e42b-4624-9322-ec3f968df4da\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_APP_ID = 'heroku.app.id' as const;\n\n/**\n * Commit hash for the current release\n *\n * @example e6134959463efd8966b20e75b913cafe3f5ec\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_RELEASE_COMMIT = 'heroku.release.commit' as const;\n\n/**\n * Time and date the release was created\n *\n * @example 2022-10-23T18:00:42Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP = 'heroku.release.creation_timestamp' as const;\n\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 */\nexport const ATTR_HOST_ARCH = 'host.arch' as const;\n\n/**\n * Enum value \"amd64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * AMD64\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_AMD64 = \"amd64\" as const;\n\n/**\n * Enum value \"arm32\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * ARM32\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_ARM32 = \"arm32\" as const;\n\n/**\n * Enum value \"arm64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * ARM64\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_ARM64 = \"arm64\" as const;\n\n/**\n * Enum value \"ia64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * Itanium\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_IA64 = \"ia64\" as const;\n\n/**\n * Enum value \"ppc32\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * 32-bit PowerPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_PPC32 = \"ppc32\" as const;\n\n/**\n * Enum value \"ppc64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * 64-bit PowerPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_PPC64 = \"ppc64\" as const;\n\n/**\n * Enum value \"s390x\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * IBM z/Architecture\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_S390X = \"s390x\" as const;\n\n/**\n * Enum value \"x86\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * 32-bit x86\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_X86 = \"x86\" as const;\n\n/**\n * The amount of level 2 memory cache available to the processor (in Bytes).\n *\n * @example 12288000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_CACHE_L2_SIZE = 'host.cpu.cache.l2.size' as const;\n\n/**\n * Family or generation of the CPU.\n *\n * @example 6\n * @example PA-RISC 1.1e\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_FAMILY = 'host.cpu.family' as const;\n\n/**\n * Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family.\n *\n * @example 6\n * @example 9000/778/B180L\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_MODEL_ID = 'host.cpu.model.id' as const;\n\n/**\n * Model designation of the processor.\n *\n * @example 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_MODEL_NAME = 'host.cpu.model.name' as const;\n\n/**\n * Stepping or core revisions.\n *\n * @example 1\n * @example r1p1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_STEPPING = 'host.cpu.stepping' as const;\n\n/**\n * Processor manufacturer identifier. A maximum 12-character string.\n *\n * @example GenuineIntel\n *\n * @note [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_VENDOR_ID = 'host.cpu.vendor.id' as const;\n\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 */\nexport const ATTR_HOST_ID = 'host.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_ID = 'host.image.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_NAME = 'host.image.name' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_VERSION = 'host.image.version' as const;\n\n/**\n * Available IP addresses of the host, excluding loopback interfaces.\n *\n * @example [\"192.168.1.140\", \"fe80::abc2:4a28:737a:609e\"]\n *\n * @note IPv4 Addresses **MUST** be specified in dotted-quad notation. IPv6 addresses **MUST** be specified in the [RFC 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IP = 'host.ip' as const;\n\n/**\n * Available MAC addresses of the host, excluding loopback interfaces.\n *\n * @example [\"AC-DE-48-23-45-67\", \"AC-DE-48-23-45-67-01-9F\"]\n *\n * @note MAC Addresses **MUST** be represented in [IEEE RA hexadecimal form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): as hyphen-separated octets in uppercase hexadecimal form from most to least significant.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_MAC = 'host.mac' as const;\n\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 */\nexport const ATTR_HOST_NAME = 'host.name' as const;\n\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 */\nexport const ATTR_HOST_TYPE = 'host.type' as const;\n\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 */\nexport const ATTR_HTTP_CLIENT_IP = 'http.client_ip' as const;\n\n/**\n * State of the HTTP connection in the HTTP connection pool.\n *\n * @example active\n * @example idle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_CONNECTION_STATE = 'http.connection.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_HTTP_CONNECTION_STATE}.\n *\n * active state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_CONNECTION_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_HTTP_CONNECTION_STATE}.\n *\n * idle state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_CONNECTION_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Deprecated, use `network.protocol.name` and `network.protocol.version` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Split into `network.protocol.name` and `network.protocol.version`\n */\nexport const ATTR_HTTP_FLAVOR = 'http.flavor' as const;\n\n/**\n * Enum value \"1.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/1.0\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_0 = \"1.0\" as const;\n\n/**\n * Enum value \"1.1\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/1.1\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_1 = \"1.1\" as const;\n\n/**\n * Enum value \"2.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_2_0 = \"2.0\" as const;\n\n/**\n * Enum value \"3.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/3\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_3_0 = \"3.0\" as const;\n\n/**\n * Enum value \"QUIC\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * QUIC protocol.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_QUIC = \"QUIC\" as const;\n\n/**\n * Enum value \"SPDY\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * SPDY protocol.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_SPDY = \"SPDY\" as const;\n\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 */\nexport const ATTR_HTTP_HOST = 'http.host' as const;\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 */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n\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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\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 */\nexport const ATTR_HTTP_REQUEST_BODY_SIZE = 'http.request.body.size' as const;\n\n/**\n * Enum value \"QUERY\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * QUERY method.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_QUERY = \"QUERY\" as const;\n\n/**\n * The total size of the request in bytes. This should be the total number of bytes sent over the wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request body if any.\n *\n * @example 1437\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_REQUEST_SIZE = 'http.request.size' as const;\n\n/**\n * Deprecated, use `http.request.header.content-length` 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.content-length`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed' as const;\n\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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\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 */\nexport const ATTR_HTTP_RESPONSE_BODY_SIZE = 'http.response.body.size' as const;\n\n/**\n * The total size of the response in bytes. This should be the total number of bytes sent over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and response body and trailers if any.\n *\n * @example 1437\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_RESPONSE_SIZE = 'http.response.size' as const;\n\n/**\n * Deprecated, use `http.response.header.content-length` 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.content-length`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length' as const;\n\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 Replaced by `http.response.body.size`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed' as const;\n\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`.\n */\nexport const ATTR_HTTP_SCHEME = 'http.scheme' as const;\n\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 */\nexport const ATTR_HTTP_SERVER_NAME = 'http.server_name' as const;\n\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 */\nexport const ATTR_HTTP_STATUS_CODE = 'http.status_code' as const;\n\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 */\nexport const ATTR_HTTP_TARGET = 'http.target' as const;\n\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 */\nexport const ATTR_HTTP_URL = 'http.url' as const;\n\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 */\nexport const ATTR_HTTP_USER_AGENT = 'http.user_agent' as const;\n\n/**\n * Design capacity in Watts-hours or Amper-hours\n *\n * @example 9.3Ah\n * @example 50Wh\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BATTERY_CAPACITY = 'hw.battery.capacity' as const;\n\n/**\n * Battery [chemistry](https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html), e.g. Lithium-Ion, Nickel-Cadmium, etc.\n *\n * @example Li-ion\n * @example NiMH\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BATTERY_CHEMISTRY = 'hw.battery.chemistry' as const;\n\n/**\n * The current state of the battery\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BATTERY_STATE = 'hw.battery.state' as const;\n\n/**\n * Enum value \"charging\" for attribute {@link ATTR_HW_BATTERY_STATE}.\n *\n * Charging\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_BATTERY_STATE_VALUE_CHARGING = \"charging\" as const;\n\n/**\n * Enum value \"discharging\" for attribute {@link ATTR_HW_BATTERY_STATE}.\n *\n * Discharging\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_BATTERY_STATE_VALUE_DISCHARGING = \"discharging\" as const;\n\n/**\n * BIOS version of the hardware component\n *\n * @example 1.2.3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BIOS_VERSION = 'hw.bios_version' as const;\n\n/**\n * Driver version for the hardware component\n *\n * @example 10.2.1-3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_DRIVER_VERSION = 'hw.driver_version' as const;\n\n/**\n * Type of the enclosure (useful for modular systems)\n *\n * @example Computer\n * @example Storage\n * @example Switch\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_ENCLOSURE_TYPE = 'hw.enclosure.type' as const;\n\n/**\n * Firmware version of the hardware component\n *\n * @example 2.0.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_FIRMWARE_VERSION = 'hw.firmware_version' as const;\n\n/**\n * Type of task the GPU is performing\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_GPU_TASK = 'hw.gpu.task' as const;\n\n/**\n * Enum value \"decoder\" for attribute {@link ATTR_HW_GPU_TASK}.\n *\n * Decoder\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_GPU_TASK_VALUE_DECODER = \"decoder\" as const;\n\n/**\n * Enum value \"encoder\" for attribute {@link ATTR_HW_GPU_TASK}.\n *\n * Encoder\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_GPU_TASK_VALUE_ENCODER = \"encoder\" as const;\n\n/**\n * Enum value \"general\" for attribute {@link ATTR_HW_GPU_TASK}.\n *\n * General\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_GPU_TASK_VALUE_GENERAL = \"general\" as const;\n\n/**\n * An identifier for the hardware component, unique within the monitored host\n *\n * @example win32battery_battery_testsysa33_1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_ID = 'hw.id' as const;\n\n/**\n * Type of limit for hardware components\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_LIMIT_TYPE = 'hw.limit_type' as const;\n\n/**\n * Enum value \"critical\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Critical\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_CRITICAL = \"critical\" as const;\n\n/**\n * Enum value \"degraded\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_DEGRADED = \"degraded\" as const;\n\n/**\n * Enum value \"high.critical\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * High Critical\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_HIGH_CRITICAL = \"high.critical\" as const;\n\n/**\n * Enum value \"high.degraded\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * High Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_HIGH_DEGRADED = \"high.degraded\" as const;\n\n/**\n * Enum value \"low.critical\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Low Critical\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_LOW_CRITICAL = \"low.critical\" as const;\n\n/**\n * Enum value \"low.degraded\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Low Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_LOW_DEGRADED = \"low.degraded\" as const;\n\n/**\n * Enum value \"max\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Maximum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_MAX = \"max\" as const;\n\n/**\n * Enum value \"throttled\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Throttled\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_THROTTLED = \"throttled\" as const;\n\n/**\n * Enum value \"turbo\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Turbo\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_TURBO = \"turbo\" as const;\n\n/**\n * RAID Level of the logical disk\n *\n * @example RAID0+1\n * @example RAID5\n * @example RAID10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_LOGICAL_DISK_RAID_LEVEL = 'hw.logical_disk.raid_level' as const;\n\n/**\n * State of the logical disk space usage\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_LOGICAL_DISK_STATE = 'hw.logical_disk.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}.\n *\n * Free\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LOGICAL_DISK_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}.\n *\n * Used\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LOGICAL_DISK_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Type of the memory module\n *\n * @example DDR4\n * @example DDR5\n * @example LPDDR5\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_MEMORY_TYPE = 'hw.memory.type' as const;\n\n/**\n * Descriptive model name of the hardware component\n *\n * @example PERC H740P\n * @example Intel(R) Core(TM) i7-10700K\n * @example Dell XPS 15 Battery\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_MODEL = 'hw.model' as const;\n\n/**\n * An easily-recognizable name for the hardware component\n *\n * @example eth0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_NAME = 'hw.name' as const;\n\n/**\n * Logical addresses of the adapter (e.g. IP address, or WWPN)\n *\n * @example [\"172.16.8.21\", \"57.11.193.42\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_NETWORK_LOGICAL_ADDRESSES = 'hw.network.logical_addresses' as const;\n\n/**\n * Physical address of the adapter (e.g. MAC address, or WWNN)\n *\n * @example 00-90-F5-E9-7B-36\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_NETWORK_PHYSICAL_ADDRESS = 'hw.network.physical_address' as const;\n\n/**\n * Unique identifier of the parent component (typically the `hw.id` attribute of the enclosure, or disk controller)\n *\n * @example dellStorage_perc_0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PARENT = 'hw.parent' as const;\n\n/**\n * [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute of the physical disk\n *\n * @example Spin Retry Count\n * @example Seek Error Rate\n * @example Raw Read Error Rate\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PHYSICAL_DISK_SMART_ATTRIBUTE = 'hw.physical_disk.smart_attribute' as const;\n\n/**\n * State of the physical disk endurance utilization\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PHYSICAL_DISK_STATE = 'hw.physical_disk.state' as const;\n\n/**\n * Enum value \"remaining\" for attribute {@link ATTR_HW_PHYSICAL_DISK_STATE}.\n *\n * Remaining\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_PHYSICAL_DISK_STATE_VALUE_REMAINING = \"remaining\" as const;\n\n/**\n * Type of the physical disk\n *\n * @example HDD\n * @example SSD\n * @example 10K\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PHYSICAL_DISK_TYPE = 'hw.physical_disk.type' as const;\n\n/**\n * Location of the sensor\n *\n * @example cpu0\n * @example ps1\n * @example INLET\n * @example CPU0_DIE\n * @example AMBIENT\n * @example MOTHERBOARD\n * @example PS0 V3_3\n * @example MAIN_12V\n * @example CPU_VCORE\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_SENSOR_LOCATION = 'hw.sensor_location' as const;\n\n/**\n * Serial number of the hardware component\n *\n * @example CNFCP0123456789\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_SERIAL_NUMBER = 'hw.serial_number' as const;\n\n/**\n * The current state of the component\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_STATE = 'hw.state' as const;\n\n/**\n * Enum value \"degraded\" for attribute {@link ATTR_HW_STATE}.\n *\n * Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_DEGRADED = \"degraded\" as const;\n\n/**\n * Enum value \"failed\" for attribute {@link ATTR_HW_STATE}.\n *\n * Failed\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_FAILED = \"failed\" as const;\n\n/**\n * Enum value \"needs_cleaning\" for attribute {@link ATTR_HW_STATE}.\n *\n * Needs Cleaning\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_NEEDS_CLEANING = \"needs_cleaning\" as const;\n\n/**\n * Enum value \"ok\" for attribute {@link ATTR_HW_STATE}.\n *\n * OK\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_OK = \"ok\" as const;\n\n/**\n * Enum value \"predicted_failure\" for attribute {@link ATTR_HW_STATE}.\n *\n * Predicted Failure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_PREDICTED_FAILURE = \"predicted_failure\" as const;\n\n/**\n * Type of tape drive operation\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_TAPE_DRIVE_OPERATION_TYPE = 'hw.tape_drive.operation_type' as const;\n\n/**\n * Enum value \"clean\" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}.\n *\n * Clean\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_CLEAN = \"clean\" as const;\n\n/**\n * Enum value \"mount\" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}.\n *\n * Mount\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_MOUNT = \"mount\" as const;\n\n/**\n * Enum value \"unmount\" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}.\n *\n * Unmount\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_UNMOUNT = \"unmount\" as const;\n\n/**\n * Type of the component\n *\n * @note Describes the category of the hardware component for which `hw.state` is being reported. For example, `hw.type=temperature` along with `hw.state=degraded` would indicate that the temperature of the hardware component has been reported as `degraded`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_TYPE = 'hw.type' as const;\n\n/**\n * Enum value \"battery\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Battery\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_BATTERY = \"battery\" as const;\n\n/**\n * Enum value \"cpu\" for attribute {@link ATTR_HW_TYPE}.\n *\n * CPU\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_CPU = \"cpu\" as const;\n\n/**\n * Enum value \"disk_controller\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Disk controller\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_DISK_CONTROLLER = \"disk_controller\" as const;\n\n/**\n * Enum value \"enclosure\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Enclosure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_ENCLOSURE = \"enclosure\" as const;\n\n/**\n * Enum value \"fan\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Fan\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_FAN = \"fan\" as const;\n\n/**\n * Enum value \"gpu\" for attribute {@link ATTR_HW_TYPE}.\n *\n * GPU\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_GPU = \"gpu\" as const;\n\n/**\n * Enum value \"logical_disk\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Logical disk\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_LOGICAL_DISK = \"logical_disk\" as const;\n\n/**\n * Enum value \"memory\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Memory\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_MEMORY = \"memory\" as const;\n\n/**\n * Enum value \"network\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Network\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_NETWORK = \"network\" as const;\n\n/**\n * Enum value \"physical_disk\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Physical disk\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_PHYSICAL_DISK = \"physical_disk\" as const;\n\n/**\n * Enum value \"power_supply\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Power supply\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_POWER_SUPPLY = \"power_supply\" as const;\n\n/**\n * Enum value \"tape_drive\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Tape drive\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_TAPE_DRIVE = \"tape_drive\" as const;\n\n/**\n * Enum value \"temperature\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Temperature\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_TEMPERATURE = \"temperature\" as const;\n\n/**\n * Enum value \"voltage\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Voltage\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_VOLTAGE = \"voltage\" as const;\n\n/**\n * Vendor name of the hardware component\n *\n * @example Dell\n * @example HP\n * @example Intel\n * @example AMD\n * @example LSI\n * @example Lenovo\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_VENDOR = 'hw.vendor' as const;\n\n/**\n * This attribute represents the state of the application.\n *\n * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_IOS_APP_STATE = 'ios.app.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Enum value \"inactive\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_INACTIVE = \"inactive\" as const;\n\n/**\n * Enum value \"terminate\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_TERMINATE = \"terminate\" as const;\n\n/**\n * Deprecated. Use the `ios.app.state` attribute.\n *\n * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived.\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 `ios.app.state`.\n */\nexport const ATTR_IOS_STATE = 'ios.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Enum value \"inactive\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_INACTIVE = \"inactive\" as const;\n\n/**\n * Enum value \"terminate\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_TERMINATE = \"terminate\" as const;\n\n/**\n * Protocol version, as specified in the `jsonrpc` property of the request and its corresponding response.\n *\n * @example 2.0\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JSONRPC_PROTOCOL_VERSION = 'jsonrpc.protocol.version' as const;\n\n/**\n * A string representation of the `id` property of the request and its corresponding response.\n *\n * @example 10\n * @example request-7\n *\n * @note Under the [JSON-RPC specification](https://www.jsonrpc.org/specification), the `id` property may be a string, number, null, or omitted entirely. When omitted, the request is treated as a notification. Using `null` is not equivalent to omitting the `id`, but it is discouraged.\n * Instrumentations **SHOULD NOT** capture this attribute when the `id` is `null` or omitted.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JSONRPC_REQUEST_ID = 'jsonrpc.request.id' as const;\n\n/**\n * Name of the buffer pool.\n *\n * @example mapped\n * @example direct\n *\n * @note Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JVM_BUFFER_POOL_NAME = 'jvm.buffer.pool.name' as const;\n\n/**\n * Name of the garbage collector cause.\n *\n * @example System.gc()\n * @example Allocation Failure\n *\n * @note Garbage collector cause is generally obtained via [GarbageCollectionNotificationInfo#getGcCause()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcCause()).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JVM_GC_CAUSE = 'jvm.gc.cause' as const;\n\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 */\nexport const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name' as const;\n\n/**\n * A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note K8s doesn't have support for obtaining a cluster ID. If this is ever\n * added, we will recommend collecting the `k8s.cluster.uid` through the\n * official APIs. In the meantime, we are able to use the `uid` of the\n * `kube-system` namespace as a proxy for cluster ID. Read on for the\n * rationale.\n *\n * Every object created in a K8s cluster is assigned a distinct UID. The\n * `kube-system` namespace is used by Kubernetes itself and will exist\n * for the lifetime of the cluster. Using the `uid` of the `kube-system`\n * namespace is a reasonable proxy for the K8s ClusterID as it will only\n * change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are\n * UUIDs as standardized by\n * [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html).\n * Which states:\n *\n * > If generated according to one of the mechanisms defined in Rec.\n * > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be\n * > different from all other UUIDs generated before 3603 A.D., or is\n * > extremely likely to be different (depending on the mechanism chosen).\n *\n * Therefore, UIDs between clusters should be extremely unlikely to\n * conflict.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CLUSTER_UID = 'k8s.cluster.uid' as const;\n\n/**\n * The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`).\n *\n * @example redis\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_NAME = 'k8s.container.name' as const;\n\n/**\n * Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart_count' as const;\n\n/**\n * Last terminated reason of the Container.\n *\n * @example Evicted\n * @example Error\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON = 'k8s.container.status.last_terminated_reason' as const;\n\n/**\n * The reason for the container state. Corresponds to the `reason` field of the: [K8s ContainerStateWaiting](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core) or [K8s ContainerStateTerminated](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core)\n *\n * @example ContainerCreating\n * @example CrashLoopBackOff\n * @example CreateContainerConfigError\n * @example ErrImagePull\n * @example ImagePullBackOff\n * @example OOMKilled\n * @example Completed\n * @example Error\n * @example ContainerCannotRun\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason' as const;\n\n/**\n * Enum value \"Completed\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container has completed execution.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_COMPLETED = \"Completed\" as const;\n\n/**\n * Enum value \"ContainerCannotRun\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container cannot run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CANNOT_RUN = \"ContainerCannotRun\" as const;\n\n/**\n * Enum value \"ContainerCreating\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container is being created.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CREATING = \"ContainerCreating\" as const;\n\n/**\n * Enum value \"CrashLoopBackOff\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container is in a crash loop back off state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CRASH_LOOP_BACK_OFF = \"CrashLoopBackOff\" as const;\n\n/**\n * Enum value \"CreateContainerConfigError\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * There was an error creating the container configuration.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CREATE_CONTAINER_CONFIG_ERROR = \"CreateContainerConfigError\" as const;\n\n/**\n * Enum value \"ErrImagePull\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * There was an error pulling the container image.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_ERR_IMAGE_PULL = \"ErrImagePull\" as const;\n\n/**\n * Enum value \"Error\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * There was an error with the container.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_ERROR = \"Error\" as const;\n\n/**\n * Enum value \"ImagePullBackOff\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container image pull is in back off state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_IMAGE_PULL_BACK_OFF = \"ImagePullBackOff\" as const;\n\n/**\n * Enum value \"OOMKilled\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container was killed due to out of memory.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_OOM_KILLED = \"OOMKilled\" as const;\n\n/**\n * The state of the container. [K8s ContainerState](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core)\n *\n * @example terminated\n * @example running\n * @example waiting\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state' as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}.\n *\n * The container is running.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_STATE_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}.\n *\n * The container has terminated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}.\n *\n * The container is waiting.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_STATE_VALUE_WAITING = \"waiting\" as const;\n\n/**\n * The cronjob annotation placed on the CronJob, the `` being the annotation name, the value being the annotation value.\n *\n * @example 4\n * @example\n *\n * @note Examples:\n *\n * - An annotation `retries` with value `4` **SHOULD** be recorded as the\n * `k8s.cronjob.annotation.retries` attribute with value `\"4\"`.\n * - An annotation `data` with empty string value **SHOULD** be recorded as\n * the `k8s.cronjob.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_ANNOTATION = (key: string) => `k8s.cronjob.annotation.${key}`;\n\n/**\n * The label placed on the CronJob, the `` being the label name, the value being the label value.\n *\n * @example weekly\n * @example\n *\n * @note Examples:\n *\n * - A label `type` with value `weekly` **SHOULD** be recorded as the\n * `k8s.cronjob.label.type` attribute with value `\"weekly\"`.\n * - A label `automated` with empty string value **SHOULD** be recorded as\n * the `k8s.cronjob.label.automated` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_LABEL = (key: string) => `k8s.cronjob.label.${key}`;\n\n/**\n * The name of the CronJob.\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 */\nexport const ATTR_K8S_CRONJOB_NAME = 'k8s.cronjob.name' as const;\n\n/**\n * The UID of the CronJob.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_UID = 'k8s.cronjob.uid' as const;\n\n/**\n * The annotation placed on the DaemonSet, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `1` **SHOULD** be recorded\n * as the `k8s.daemonset.annotation.replicas` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.daemonset.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_ANNOTATION = (key: string) => `k8s.daemonset.annotation.${key}`;\n\n/**\n * The label placed on the DaemonSet, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `app` with value `guestbook` **SHOULD** be recorded\n * as the `k8s.daemonset.label.app` attribute with value `\"guestbook\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.daemonset.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_LABEL = (key: string) => `k8s.daemonset.label.${key}`;\n\n/**\n * The name of the DaemonSet.\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 */\nexport const ATTR_K8S_DAEMONSET_NAME = 'k8s.daemonset.name' as const;\n\n/**\n * The UID of the DaemonSet.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_UID = 'k8s.daemonset.uid' as const;\n\n/**\n * The annotation placed on the Deployment, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `1` **SHOULD** be recorded\n * as the `k8s.deployment.annotation.replicas` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.deployment.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_ANNOTATION = (key: string) => `k8s.deployment.annotation.${key}`;\n\n/**\n * The label placed on the Deployment, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `0` **SHOULD** be recorded\n * as the `k8s.deployment.label.app` attribute with value `\"guestbook\"`.\n * - A label `injected` with empty string value **SHOULD** be recorded as\n * the `k8s.deployment.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_LABEL = (key: string) => `k8s.deployment.label.${key}`;\n\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 */\nexport const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' as const;\n\n/**\n * The UID of the Deployment.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid' as const;\n\n/**\n * The type of metric source for the horizontal pod autoscaler.\n *\n * @example Resource\n * @example ContainerResource\n *\n * @note This attribute reflects the `type` field of spec.metrics[] in the HPA.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_METRIC_TYPE = 'k8s.hpa.metric.type' as const;\n\n/**\n * The name of the horizontal pod autoscaler.\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 */\nexport const ATTR_K8S_HPA_NAME = 'k8s.hpa.name' as const;\n\n/**\n * The API version of the target resource to scale for the HorizontalPodAutoscaler.\n *\n * @example apps/v1\n * @example autoscaling/v2\n *\n * @note This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_SCALETARGETREF_API_VERSION = 'k8s.hpa.scaletargetref.api_version' as const;\n\n/**\n * The kind of the target resource to scale for the HorizontalPodAutoscaler.\n *\n * @example Deployment\n * @example StatefulSet\n *\n * @note This maps to the `kind` field in the `scaleTargetRef` of the HPA spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_SCALETARGETREF_KIND = 'k8s.hpa.scaletargetref.kind' as const;\n\n/**\n * The name of the target resource to scale for the HorizontalPodAutoscaler.\n *\n * @example my-deployment\n * @example my-statefulset\n *\n * @note This maps to the `name` field in the `scaleTargetRef` of the HPA spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_SCALETARGETREF_NAME = 'k8s.hpa.scaletargetref.name' as const;\n\n/**\n * The UID of the horizontal pod autoscaler.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_UID = 'k8s.hpa.uid' as const;\n\n/**\n * The size (identifier) of the K8s huge page.\n *\n * @example 2Mi\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HUGEPAGE_SIZE = 'k8s.hugepage.size' as const;\n\n/**\n * The annotation placed on the Job, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `number` with value `1` **SHOULD** be recorded\n * as the `k8s.job.annotation.number` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.job.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_ANNOTATION = (key: string) => `k8s.job.annotation.${key}`;\n\n/**\n * The label placed on the Job, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example ci\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `jobtype` with value `ci` **SHOULD** be recorded\n * as the `k8s.job.label.jobtype` attribute with value `\"ci\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.job.label.automated` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_LABEL = (key: string) => `k8s.job.label.${key}`;\n\n/**\n * The name of the Job.\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 */\nexport const ATTR_K8S_JOB_NAME = 'k8s.job.name' as const;\n\n/**\n * The UID of the Job.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_UID = 'k8s.job.uid' as const;\n\n/**\n * The annotation placed on the Namespace, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 0\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `ttl` with value `0` **SHOULD** be recorded\n * as the `k8s.namespace.annotation.ttl` attribute with value `\"0\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.namespace.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_ANNOTATION = (key: string) => `k8s.namespace.annotation.${key}`;\n\n/**\n * The label placed on the Namespace, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example default\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `kubernetes.io/metadata.name` with value `default` **SHOULD** be recorded\n * as the `k8s.namespace.label.kubernetes.io/metadata.name` attribute with value `\"default\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.namespace.label.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_LABEL = (key: string) => `k8s.namespace.label.${key}`;\n\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 */\nexport const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name' as const;\n\n/**\n * The phase of the K8s namespace.\n *\n * @example active\n * @example terminating\n *\n * @note This attribute aligns with the `phase` field of the\n * [K8s NamespaceStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}.\n *\n * Active namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NAMESPACE_PHASE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"terminating\" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}.\n *\n * Terminating namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NAMESPACE_PHASE_VALUE_TERMINATING = \"terminating\" as const;\n\n/**\n * The annotation placed on the Node, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 0\n * @example\n *\n * @note Examples:\n *\n * - An annotation `node.alpha.kubernetes.io/ttl` with value `0` **SHOULD** be recorded as\n * the `k8s.node.annotation.node.alpha.kubernetes.io/ttl` attribute with value `\"0\"`.\n * - An annotation `data` with empty string value **SHOULD** be recorded as\n * the `k8s.node.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_ANNOTATION = (key: string) => `k8s.node.annotation.${key}`;\n\n/**\n * The status of the condition, one of True, False, Unknown.\n *\n * @example true\n * @example false\n * @example unknown\n *\n * @note This attribute aligns with the `status` field of the\n * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status' as const;\n\n/**\n * Enum value \"false\" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_FALSE = \"false\" as const;\n\n/**\n * Enum value \"true\" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_TRUE = \"true\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_UNKNOWN = \"unknown\" as const;\n\n/**\n * The condition type of a K8s Node.\n *\n * @example Ready\n * @example DiskPressure\n *\n * @note K8s Node conditions as described\n * by [K8s documentation](https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition).\n *\n * This attribute aligns with the `type` field of the\n * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core)\n *\n * The set of possible values is not limited to those listed here. Managed Kubernetes environments,\n * or custom controllers **MAY** introduce additional node condition types.\n * When this occurs, the exact value as reported by the Kubernetes API **SHOULD** be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_CONDITION_TYPE = 'k8s.node.condition.type' as const;\n\n/**\n * Enum value \"DiskPressure\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * Pressure exists on the disk size—that is, if the disk capacity is low\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_DISK_PRESSURE = \"DiskPressure\" as const;\n\n/**\n * Enum value \"MemoryPressure\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * Pressure exists on the node memory—that is, if the node memory is low\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_MEMORY_PRESSURE = \"MemoryPressure\" as const;\n\n/**\n * Enum value \"NetworkUnavailable\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * The network for the node is not correctly configured\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_NETWORK_UNAVAILABLE = \"NetworkUnavailable\" as const;\n\n/**\n * Enum value \"PIDPressure\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * Pressure exists on the processes—that is, if there are too many processes on the node\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_PID_PRESSURE = \"PIDPressure\" as const;\n\n/**\n * Enum value \"Ready\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * The node is healthy and ready to accept pods\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_READY = \"Ready\" as const;\n\n/**\n * The label placed on the Node, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example arm64\n * @example\n *\n * @note Examples:\n *\n * - A label `kubernetes.io/arch` with value `arm64` **SHOULD** be recorded\n * as the `k8s.node.label.kubernetes.io/arch` attribute with value `\"arm64\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.node.label.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_LABEL = (key: string) => `k8s.node.label.${key}`;\n\n/**\n * The name of the Node.\n *\n * @example node-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_NAME = 'k8s.node.name' as const;\n\n/**\n * The UID of the Node.\n *\n * @example 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_UID = 'k8s.node.uid' as const;\n\n/**\n * The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value.\n *\n * @example true\n * @example x64\n * @example\n *\n * @note Examples:\n *\n * - An annotation `kubernetes.io/enforce-mountable-secrets` with value `true` **SHOULD** be recorded as\n * the `k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets` attribute with value `\"true\"`.\n * - An annotation `mycompany.io/arch` with value `x64` **SHOULD** be recorded as\n * the `k8s.pod.annotation.mycompany.io/arch` attribute with value `\"x64\"`.\n * - An annotation `data` with empty string value **SHOULD** be recorded as\n * the `k8s.pod.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_ANNOTATION = (key: string) => `k8s.pod.annotation.${key}`;\n\n/**\n * Specifies the hostname of the Pod.\n *\n * @example collector-gateway\n *\n * @note The K8s Pod spec has an optional hostname field, which can be used to specify a hostname.\n * Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field)\n * for more information about this field.\n *\n * This attribute aligns with the `hostname` field of the\n * [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_HOSTNAME = 'k8s.pod.hostname' as const;\n\n/**\n * IP address allocated to the Pod.\n *\n * @example 172.18.0.2\n *\n * @note This attribute aligns with the `podIP` field of the\n * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_IP = 'k8s.pod.ip' as const;\n\n/**\n * The label placed on the Pod, the `` being the label name, the value being the label value.\n *\n * @example my-app\n * @example x64\n * @example\n *\n * @note Examples:\n *\n * - A label `app` with value `my-app` **SHOULD** be recorded as\n * the `k8s.pod.label.app` attribute with value `\"my-app\"`.\n * - A label `mycompany.io/arch` with value `x64` **SHOULD** be recorded as\n * the `k8s.pod.label.mycompany.io/arch` attribute with value `\"x64\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.pod.label.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_LABEL = (key: string) => `k8s.pod.label.${key}`;\n\n/**\n * Deprecated, use `k8s.pod.label` instead.\n *\n * @example my-app\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 `k8s.pod.label`.\n */\nexport const ATTR_K8S_POD_LABELS = (key: string) => `k8s.pod.labels.${key}`;\n\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 */\nexport const ATTR_K8S_POD_NAME = 'k8s.pod.name' as const;\n\n/**\n * The start timestamp of the Pod.\n *\n * @example 2025-12-04T08:41:03Z\n *\n * @note Date and time at which the object was acknowledged by the Kubelet.\n * This is before the Kubelet pulled the container image(s) for the pod.\n *\n * This attribute aligns with the `startTime` field of the\n * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core),\n * in ISO 8601 (RFC 3339 compatible) format.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_START_TIME = 'k8s.pod.start_time' as const;\n\n/**\n * The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core)\n *\n * @example Pending\n * @example Running\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase' as const;\n\n/**\n * Enum value \"Failed\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * All containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_FAILED = \"Failed\" as const;\n\n/**\n * Enum value \"Pending\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * The pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_PENDING = \"Pending\" as const;\n\n/**\n * Enum value \"Running\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * The pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_RUNNING = \"Running\" as const;\n\n/**\n * Enum value \"Succeeded\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * All containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_SUCCEEDED = \"Succeeded\" as const;\n\n/**\n * Enum value \"Unknown\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_UNKNOWN = \"Unknown\" as const;\n\n/**\n * The reason for the pod state. Corresponds to the `reason` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core)\n *\n * @example Evicted\n * @example NodeAffinity\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason' as const;\n\n/**\n * Enum value \"Evicted\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The pod is evicted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_EVICTED = \"Evicted\" as const;\n\n/**\n * Enum value \"NodeAffinity\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The pod is in a status because of its node affinity\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_NODE_AFFINITY = \"NodeAffinity\" as const;\n\n/**\n * Enum value \"NodeLost\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The reason on a pod when its state cannot be confirmed as kubelet is unresponsive on the node it is (was) running.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_NODE_LOST = \"NodeLost\" as const;\n\n/**\n * Enum value \"Shutdown\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The node is shutdown\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_SHUTDOWN = \"Shutdown\" as const;\n\n/**\n * Enum value \"UnexpectedAdmissionError\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The pod was rejected admission to the node because of an error during admission that could not be categorized.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_UNEXPECTED_ADMISSION_ERROR = \"UnexpectedAdmissionError\" as const;\n\n/**\n * The UID of the Pod.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_UID = 'k8s.pod.uid' as const;\n\n/**\n * The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 0\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `0` **SHOULD** be recorded\n * as the `k8s.replicaset.annotation.replicas` attribute with value `\"0\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.replicaset.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_ANNOTATION = (key: string) => `k8s.replicaset.annotation.${key}`;\n\n/**\n * The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `app` with value `guestbook` **SHOULD** be recorded\n * as the `k8s.replicaset.label.app` attribute with value `\"guestbook\"`.\n * - A label `injected` with empty string value **SHOULD** be recorded as\n * the `k8s.replicaset.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_LABEL = (key: string) => `k8s.replicaset.label.${key}`;\n\n/**\n * The name of the ReplicaSet.\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 */\nexport const ATTR_K8S_REPLICASET_NAME = 'k8s.replicaset.name' as const;\n\n/**\n * The UID of the ReplicaSet.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_UID = 'k8s.replicaset.uid' as const;\n\n/**\n * The name of the replication controller.\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 */\nexport const ATTR_K8S_REPLICATIONCONTROLLER_NAME = 'k8s.replicationcontroller.name' as const;\n\n/**\n * The UID of the replication controller.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICATIONCONTROLLER_UID = 'k8s.replicationcontroller.uid' as const;\n\n/**\n * The name of the resource quota.\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 */\nexport const ATTR_K8S_RESOURCEQUOTA_NAME = 'k8s.resourcequota.name' as const;\n\n/**\n * The name of the K8s resource a resource quota defines.\n *\n * @example count/replicationcontrollers\n *\n * @note The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_RESOURCEQUOTA_RESOURCE_NAME = 'k8s.resourcequota.resource_name' as const;\n\n/**\n * The UID of the resource quota.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_RESOURCEQUOTA_UID = 'k8s.resourcequota.uid' as const;\n\n/**\n * The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `1` **SHOULD** be recorded\n * as the `k8s.statefulset.annotation.replicas` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.statefulset.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_ANNOTATION = (key: string) => `k8s.statefulset.annotation.${key}`;\n\n/**\n * The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `0` **SHOULD** be recorded\n * as the `k8s.statefulset.label.app` attribute with value `\"guestbook\"`.\n * - A label `injected` with empty string value **SHOULD** be recorded as\n * the `k8s.statefulset.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_LABEL = (key: string) => `k8s.statefulset.label.${key}`;\n\n/**\n * The name of the StatefulSet.\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 */\nexport const ATTR_K8S_STATEFULSET_NAME = 'k8s.statefulset.name' as const;\n\n/**\n * The UID of the StatefulSet.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_UID = 'k8s.statefulset.uid' as const;\n\n/**\n * The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object.\n *\n * @example gold.storageclass.storage.k8s.io\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STORAGECLASS_NAME = 'k8s.storageclass.name' as const;\n\n/**\n * The name of the K8s volume.\n *\n * @example volume0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_VOLUME_NAME = 'k8s.volume.name' as const;\n\n/**\n * The type of the K8s volume.\n *\n * @example emptyDir\n * @example persistentVolumeClaim\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_VOLUME_TYPE = 'k8s.volume.type' as const;\n\n/**\n * Enum value \"configMap\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [configMap](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_CONFIG_MAP = \"configMap\" as const;\n\n/**\n * Enum value \"downwardAPI\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [downwardAPI](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_DOWNWARD_API = \"downwardAPI\" as const;\n\n/**\n * Enum value \"emptyDir\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * An [emptyDir](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_EMPTY_DIR = \"emptyDir\" as const;\n\n/**\n * Enum value \"local\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [local](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_LOCAL = \"local\" as const;\n\n/**\n * Enum value \"persistentVolumeClaim\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [persistentVolumeClaim](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM = \"persistentVolumeClaim\" as const;\n\n/**\n * Enum value \"secret\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [secret](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_SECRET = \"secret\" as const;\n\n/**\n * The Linux Slab memory state\n *\n * @example reclaimable\n * @example unreclaimable\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 `system.memory.linux.slab.state`.\n */\nexport const ATTR_LINUX_MEMORY_SLAB_STATE = 'linux.memory.slab.state' as const;\n\n/**\n * Enum value \"reclaimable\" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE = \"reclaimable\" as const;\n\n/**\n * Enum value \"unreclaimable\" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE = \"unreclaimable\" as const;\n\n/**\n * The basename of the file.\n *\n * @example audit.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_NAME = 'log.file.name' as const;\n\n/**\n * The basename of the file, with symlinks resolved.\n *\n * @example uuid.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_NAME_RESOLVED = 'log.file.name_resolved' as const;\n\n/**\n * The full path to the file.\n *\n * @example /var/log/mysql/audit.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_PATH = 'log.file.path' as const;\n\n/**\n * The full path to the file, with symlinks resolved.\n *\n * @example /var/lib/docker/uuid.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_PATH_RESOLVED = 'log.file.path_resolved' as const;\n\n/**\n * The stream associated with the log. See below for a list of well-known values.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_IOSTREAM = 'log.iostream' as const;\n\n/**\n * Enum value \"stderr\" for attribute {@link ATTR_LOG_IOSTREAM}.\n *\n * Events from stderr stream\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LOG_IOSTREAM_VALUE_STDERR = \"stderr\" as const;\n\n/**\n * Enum value \"stdout\" for attribute {@link ATTR_LOG_IOSTREAM}.\n *\n * Logs from stdout stream\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LOG_IOSTREAM_VALUE_STDOUT = \"stdout\" as const;\n\n/**\n * The complete original Log Record.\n *\n * @example 77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - Something happened\n * @example [INFO] 8/3/24 12:34:56 Something happened\n *\n * @note This value **MAY** be added when processing a Log Record which was originally transmitted as a string or equivalent data type AND the Body field of the Log Record does not contain the same value. (e.g. a syslog or a log record read from a file.)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_RECORD_ORIGINAL = 'log.record.original' as const;\n\n/**\n * A unique identifier for the Log Record.\n *\n * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV\n *\n * @note If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records **MUST** have different values.\n * The id **MAY** be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_RECORD_UID = 'log.record.uid' as const;\n\n/**\n * Name of the logical partition that hosts a systems with a mainframe operating system.\n *\n * @example LPAR01\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MAINFRAME_LPAR_NAME = 'mainframe.lpar.name' as const;\n\n/**\n * The name of the request or notification method.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_METHOD_NAME = 'mcp.method.name' as const;\n\n/**\n * Enum value \"completion/complete\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to complete a prompt.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE = \"completion/complete\" as const;\n\n/**\n * Enum value \"elicitation/create\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request from the server to elicit additional information from the user via the client\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_ELICITATION_CREATE = \"elicitation/create\" as const;\n\n/**\n * Enum value \"initialize\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to initialize the MCP client.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_INITIALIZE = \"initialize\" as const;\n\n/**\n * Enum value \"logging/setLevel\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to set the logging level.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL = \"logging/setLevel\" as const;\n\n/**\n * Enum value \"notifications/cancelled\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification cancelling a previously-issued request.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED = \"notifications/cancelled\" as const;\n\n/**\n * Enum value \"notifications/initialized\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the MCP client has been initialized.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED = \"notifications/initialized\" as const;\n\n/**\n * Enum value \"notifications/message\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that a message has been received.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE = \"notifications/message\" as const;\n\n/**\n * Enum value \"notifications/progress\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating the progress for a long-running operation.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS = \"notifications/progress\" as const;\n\n/**\n * Enum value \"notifications/prompts/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of prompts has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED = \"notifications/prompts/list_changed\" as const;\n\n/**\n * Enum value \"notifications/resources/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of resources has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED = \"notifications/resources/list_changed\" as const;\n\n/**\n * Enum value \"notifications/resources/updated\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that a resource has been updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED = \"notifications/resources/updated\" as const;\n\n/**\n * Enum value \"notifications/roots/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of roots has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED = \"notifications/roots/list_changed\" as const;\n\n/**\n * Enum value \"notifications/tools/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of tools has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED = \"notifications/tools/list_changed\" as const;\n\n/**\n * Enum value \"ping\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to check that the other party is still alive.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_PING = \"ping\" as const;\n\n/**\n * Enum value \"prompts/get\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to get a prompt.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_PROMPTS_GET = \"prompts/get\" as const;\n\n/**\n * Enum value \"prompts/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list prompts available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_PROMPTS_LIST = \"prompts/list\" as const;\n\n/**\n * Enum value \"resources/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list resources available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_LIST = \"resources/list\" as const;\n\n/**\n * Enum value \"resources/read\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to read a resource.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_READ = \"resources/read\" as const;\n\n/**\n * Enum value \"resources/subscribe\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to subscribe to a resource.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE = \"resources/subscribe\" as const;\n\n/**\n * Enum value \"resources/templates/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list resource templates available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST = \"resources/templates/list\" as const;\n\n/**\n * Enum value \"resources/unsubscribe\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to unsubscribe from resource updates.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE = \"resources/unsubscribe\" as const;\n\n/**\n * Enum value \"roots/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list roots available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_ROOTS_LIST = \"roots/list\" as const;\n\n/**\n * Enum value \"sampling/createMessage\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to create a sampling message.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE = \"sampling/createMessage\" as const;\n\n/**\n * Enum value \"tools/call\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to call a tool.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_TOOLS_CALL = \"tools/call\" as const;\n\n/**\n * Enum value \"tools/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list tools available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_TOOLS_LIST = \"tools/list\" as const;\n\n/**\n * The [version](https://modelcontextprotocol.io/specification/versioning) of the Model Context Protocol used.\n *\n * @example 2025-06-18\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_PROTOCOL_VERSION = 'mcp.protocol.version' as const;\n\n/**\n * The value of the resource uri.\n *\n * @example postgres://database/customers/schema\n * @example file:///home/user/documents/report.pdf\n *\n * @note This is a URI of the resource provided in the following requests or notifications: `resources/read`, `resources/subscribe`, `resources/unsubscribe`, or `notifications/resources/updated`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_RESOURCE_URI = 'mcp.resource.uri' as const;\n\n/**\n * Identifies [MCP session](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management).\n *\n * @example 191c4850af6c49e08843a3f6c80e5046\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_SESSION_ID = 'mcp.session.id' as const;\n\n/**\n * Deprecated, use `rpc.message.compressed_size` 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 `rpc.message.compressed_size`.\n */\nexport const ATTR_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size' as const;\n\n/**\n * Deprecated, use `rpc.message.id` 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 `rpc.message.id`.\n */\nexport const ATTR_MESSAGE_ID = 'message.id' as const;\n\n/**\n * Deprecated, use `rpc.message.type` 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 `rpc.message.type`.\n */\nexport const ATTR_MESSAGE_TYPE = 'message.type' as const;\n\n/**\n * Enum value \"RECEIVED\" for attribute {@link ATTR_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGE_TYPE_VALUE_RECEIVED = \"RECEIVED\" as const;\n\n/**\n * Enum value \"SENT\" for attribute {@link ATTR_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGE_TYPE_VALUE_SENT = \"SENT\" as const;\n\n/**\n * Deprecated, use `rpc.message.uncompressed_size` 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 `rpc.message.uncompressed_size`.\n */\nexport const ATTR_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size' as const;\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 */\nexport const ATTR_MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count' as const;\n\n/**\n * A unique identifier for the client that consumes or produces a message.\n *\n * @example client-5\n * @example myhost@8742@s8083jm\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_CLIENT_ID = 'messaging.client.id' as const;\n\n/**\n * The name of the consumer group with which a consumer is associated.\n *\n * @example my-group\n * @example indexer\n *\n * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.consumer.group.name` is applicable and what it means in the context of that system.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_CONSUMER_GROUP_NAME = 'messaging.consumer.group.name' as const;\n\n/**\n * A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_ANONYMOUS = 'messaging.destination.anonymous' as const;\n\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 */\nexport const ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name' as const;\n\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 */\nexport const ATTR_MESSAGING_DESTINATION_PARTITION_ID = 'messaging.destination.partition.id' as const;\n\n/**\n * The name of the destination subscription from which a message is consumed.\n *\n * @example subscription-a\n *\n * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.destination.subscription.name` is applicable and what it means in the context of that system.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME = 'messaging.destination.subscription.name' as const;\n\n/**\n * Low cardinality representation of the messaging destination name\n *\n * @example /customers/{customerId}\n *\n * @note Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_TEMPLATE = 'messaging.destination.template' as const;\n\n/**\n * A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_TEMPORARY = 'messaging.destination.temporary' as const;\n\n/**\n * Deprecated, no replacement at this time.\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 */\nexport const ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS = 'messaging.destination_publish.anonymous' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example MyQueue\n * @example MyTopic\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 */\nexport const ATTR_MESSAGING_DESTINATION_PUBLISH_NAME = 'messaging.destination_publish.name' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\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 *\n * @deprecated Replaced by `messaging.consumer.group.name`.\n */\nexport const ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP = 'messaging.eventhubs.consumer.group' as const;\n\n/**\n * The UTC epoch seconds at which the message has been accepted and stored in the entity.\n *\n * @example 1701393730\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME = 'messaging.eventhubs.message.enqueued_time' as const;\n\n/**\n * The ack deadline in seconds set for the modify ack deadline request.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE = 'messaging.gcp_pubsub.message.ack_deadline' as const;\n\n/**\n * The ack id for a given message.\n *\n * @example \"ack_id\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID = 'messaging.gcp_pubsub.message.ack_id' as const;\n\n/**\n * The delivery attempt for a given message.\n *\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT = 'messaging.gcp_pubsub.message.delivery_attempt' as const;\n\n/**\n * The ordering key for a given message. If the attribute is not present, the message does not have an ordering key.\n *\n * @example \"ordering_key\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY = 'messaging.gcp_pubsub.message.ordering_key' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\n *\n * @example \"my-group\"\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.consumer.group.name`.\n */\nexport const ATTR_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer.group' as const;\n\n/**\n * Deprecated, use `messaging.destination.partition.id` instead.\n *\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Record string representation of the partition id in `messaging.destination.partition.id` attribute.\n */\nexport const ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION = 'messaging.kafka.destination.partition' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message.key' as const;\n\n/**\n * Deprecated, use `messaging.kafka.offset` instead.\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 *\n * @deprecated Replaced by `messaging.kafka.offset`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET = 'messaging.kafka.message.offset' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = 'messaging.kafka.message.tombstone' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset' as const;\n\n/**\n * The size of the message body in bytes.\n *\n * @example 1439\n *\n * @note This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed\n * body size should be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_BODY_SIZE = 'messaging.message.body.size' as const;\n\n/**\n * The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called \"Correlation ID\".\n *\n * @example \"MyConversationId\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_CONVERSATION_ID = 'messaging.message.conversation_id' as const;\n\n/**\n * The size of the message body and metadata in bytes.\n *\n * @example 2738\n *\n * @note This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed\n * size should be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE = 'messaging.message.envelope.size' as const;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @example \"452a7c7c7c7048c2f887f61572b18fc2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id' as const;\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 */\nexport const ATTR_MESSAGING_OPERATION = 'messaging.operation' as const;\n\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 */\nexport const ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name' as const;\n\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 */\nexport const ATTR_MESSAGING_OPERATION_TYPE = 'messaging.operation.type' as const;\n\n/**\n * Enum value \"create\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * A message is created. \"Create\" spans always refer to a single message and are used to provide a unique creation context for messages in batch sending scenarios.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_CREATE = \"create\" as const;\n\n/**\n * Enum value \"deliver\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * Deprecated. Use `process` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `process`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_DELIVER = \"deliver\" as const;\n\n/**\n * Enum value \"process\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are processed by a consumer.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PROCESS = \"process\" as const;\n\n/**\n * Enum value \"publish\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * Deprecated. Use `send` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `send`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PUBLISH = \"publish\" as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = \"receive\" as const;\n\n/**\n * Enum value \"send\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are provided for sending to an intermediary. If a single message is sent, the context of the \"Send\" span can be used as the creation context and no \"Create\" span needs to be created.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SEND = \"send\" as const;\n\n/**\n * Enum value \"settle\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are settled.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SETTLE = \"settle\" as const;\n\n/**\n * RabbitMQ message routing key.\n *\n * @example \"myKey\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = 'messaging.rabbitmq.destination.routing_key' as const;\n\n/**\n * RabbitMQ message delivery tag\n *\n * @example 123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG = 'messaging.rabbitmq.message.delivery_tag' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\n *\n * @example \"myConsumerGroup\"\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.consumer.group.name` on the consumer spans. No replacement for producer spans.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP = 'messaging.rocketmq.client_group' as const;\n\n/**\n * Model of message consumption. This only applies to consumer spans.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL = 'messaging.rocketmq.consumption_model' as const;\n\n/**\n * Enum value \"broadcasting\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}.\n *\n * Broadcasting consumption model\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING = \"broadcasting\" as const;\n\n/**\n * Enum value \"clustering\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}.\n *\n * Clustering consumption model\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING = \"clustering\" as const;\n\n/**\n * The delay time level for delay message, which determines the message delay time.\n *\n * @example 3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL = 'messaging.rocketmq.message.delay_time_level' as const;\n\n/**\n * The timestamp in milliseconds that the delay message is expected to be delivered to consumer.\n *\n * @example 1665987217045\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP = 'messaging.rocketmq.message.delivery_timestamp' as const;\n\n/**\n * It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group.\n *\n * @example \"myMessageGroup\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP = 'messaging.rocketmq.message.group' as const;\n\n/**\n * Key(s) of message, another way to mark message besides message id.\n *\n * @example [\"keyA\", \"keyB\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS = 'messaging.rocketmq.message.keys' as const;\n\n/**\n * The secondary classifier of message besides topic.\n *\n * @example \"tagA\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG = 'messaging.rocketmq.message.tag' as const;\n\n/**\n * Type of message.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE = 'messaging.rocketmq.message.type' as const;\n\n/**\n * Enum value \"delay\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * Delay message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY = \"delay\" as const;\n\n/**\n * Enum value \"fifo\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * FIFO message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO = \"fifo\" as const;\n\n/**\n * Enum value \"normal\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * Normal message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL = \"normal\" as const;\n\n/**\n * Enum value \"transaction\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * Transaction message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION = \"transaction\" as const;\n\n/**\n * Namespace of RocketMQ resources, resources in different namespaces are individual.\n *\n * @example \"myNamespace\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_NAMESPACE = 'messaging.rocketmq.namespace' as const;\n\n/**\n * Deprecated, use `messaging.destination.subscription.name` instead.\n *\n * @example \"subscription-a\"\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.destination.subscription.name`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME = 'messaging.servicebus.destination.subscription_name' as const;\n\n/**\n * Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS = 'messaging.servicebus.disposition_status' as const;\n\n/**\n * Enum value \"abandon\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is abandoned\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON = \"abandon\" as const;\n\n/**\n * Enum value \"complete\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is completed\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE = \"complete\" as const;\n\n/**\n * Enum value \"dead_letter\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is sent to dead letter queue\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER = \"dead_letter\" as const;\n\n/**\n * Enum value \"defer\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is deferred\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER = \"defer\" as const;\n\n/**\n * Number of deliveries that have been attempted for this message.\n *\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT = 'messaging.servicebus.message.delivery_count' as const;\n\n/**\n * The UTC epoch seconds at which the message has been accepted and stored in the entity.\n *\n * @example 1701393730\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME = 'messaging.servicebus.message.enqueued_time' as const;\n\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 */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Enum value \"activemq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache ActiveMQ\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_ACTIVEMQ = \"activemq\" as const;\n\n/**\n * Enum value \"aws.sns\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Amazon Simple Notification Service (SNS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_AWS_SNS = \"aws.sns\" as const;\n\n/**\n * Enum value \"aws_sqs\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Amazon Simple Queue Service (SQS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_AWS_SQS = \"aws_sqs\" as const;\n\n/**\n * Enum value \"eventgrid\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Azure Event Grid\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_EVENTGRID = \"eventgrid\" as const;\n\n/**\n * Enum value \"eventhubs\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Azure Event Hubs\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_EVENTHUBS = \"eventhubs\" as const;\n\n/**\n * Enum value \"gcp_pubsub\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Google Cloud Pub/Sub\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_GCP_PUBSUB = \"gcp_pubsub\" as const;\n\n/**\n * Enum value \"jms\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Java Message Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_JMS = \"jms\" as const;\n\n/**\n * Enum value \"kafka\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache Kafka\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_KAFKA = \"kafka\" as const;\n\n/**\n * Enum value \"pulsar\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache Pulsar\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_PULSAR = \"pulsar\" as const;\n\n/**\n * Enum value \"rabbitmq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * RabbitMQ\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_RABBITMQ = \"rabbitmq\" as const;\n\n/**\n * Enum value \"rocketmq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache RocketMQ\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_ROCKETMQ = \"rocketmq\" as const;\n\n/**\n * Enum value \"servicebus\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Azure Service Bus\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_SERVICEBUS = \"servicebus\" as const;\n\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 */\nexport const ATTR_NET_HOST_IP = 'net.host.ip' as const;\n\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 */\nexport const ATTR_NET_HOST_NAME = 'net.host.name' as const;\n\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 */\nexport const ATTR_NET_HOST_PORT = 'net.host.port' as const;\n\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 */\nexport const ATTR_NET_PEER_IP = 'net.peer.ip' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Deprecated, use `network.protocol.name`.\n *\n * @example amqp\n * @example http\n * @example mqtt\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 */\nexport const ATTR_NET_PROTOCOL_NAME = 'net.protocol.name' as const;\n\n/**\n * Deprecated, use `network.protocol.version`.\n *\n * @example \"3.1.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.protocol.version`.\n */\nexport const ATTR_NET_PROTOCOL_VERSION = 'net.protocol.version' as const;\n\n/**\n * Deprecated, use `network.transport` and `network.type`.\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 `network.transport` and `network.type`.\n */\nexport const ATTR_NET_SOCK_FAMILY = 'net.sock.family' as const;\n\n/**\n * Enum value \"inet\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n *\n * IPv4 address\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_SOCK_FAMILY_VALUE_INET = \"inet\" as const;\n\n/**\n * Enum value \"inet6\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n *\n * IPv6 address\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_SOCK_FAMILY_VALUE_INET6 = \"inet6\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n *\n * Unix domain socket path\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_SOCK_FAMILY_VALUE_UNIX = \"unix\" as const;\n\n/**\n * Deprecated, use `network.local.address`.\n *\n * @example /var/my.sock\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 */\nexport const ATTR_NET_SOCK_HOST_ADDR = 'net.sock.host.addr' as const;\n\n/**\n * Deprecated, use `network.local.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 `network.local.port`.\n */\nexport const ATTR_NET_SOCK_HOST_PORT = 'net.sock.host.port' as const;\n\n/**\n * Deprecated, use `network.peer.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.peer.address`.\n */\nexport const ATTR_NET_SOCK_PEER_ADDR = 'net.sock.peer.addr' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example /var/my.sock\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 */\nexport const ATTR_NET_SOCK_PEER_NAME = 'net.sock.peer.name' as const;\n\n/**\n * Deprecated, use `network.peer.port`.\n *\n * @example 65531\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.port`.\n */\nexport const ATTR_NET_SOCK_PEER_PORT = 'net.sock.peer.port' as const;\n\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 */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"inproc\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * In-process communication.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_INPROC = \"inproc\" as const;\n\n/**\n * Enum value \"ip_tcp\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_IP_TCP = \"ip_tcp\" as const;\n\n/**\n * Enum value \"ip_udp\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_IP_UDP = \"ip_udp\" as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * Something else (non IP-based).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * Named or anonymous pipe.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @example \"DE\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_ICC = 'network.carrier.icc' as const;\n\n/**\n * The mobile carrier country code.\n *\n * @example \"310\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_MCC = 'network.carrier.mcc' as const;\n\n/**\n * The mobile carrier network code.\n *\n * @example \"001\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_MNC = 'network.carrier.mnc' as const;\n\n/**\n * The name of the mobile carrier.\n *\n * @example \"sprint\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_NAME = 'network.carrier.name' as const;\n\n/**\n * The state of network connection\n *\n * @example close_wait\n *\n * @note Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2)\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_STATE = 'network.connection.state' as const;\n\n/**\n * Enum value \"close_wait\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_CLOSE_WAIT = \"close_wait\" as const;\n\n/**\n * Enum value \"closed\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_CLOSED = \"closed\" as const;\n\n/**\n * Enum value \"closing\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_CLOSING = \"closing\" as const;\n\n/**\n * Enum value \"established\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_ESTABLISHED = \"established\" as const;\n\n/**\n * Enum value \"fin_wait_1\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_1 = \"fin_wait_1\" as const;\n\n/**\n * Enum value \"fin_wait_2\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_2 = \"fin_wait_2\" as const;\n\n/**\n * Enum value \"last_ack\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_LAST_ACK = \"last_ack\" as const;\n\n/**\n * Enum value \"listen\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_LISTEN = \"listen\" as const;\n\n/**\n * Enum value \"syn_received\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_SYN_RECEIVED = \"syn_received\" as const;\n\n/**\n * Enum value \"syn_sent\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_SYN_SENT = \"syn_sent\" as const;\n\n/**\n * Enum value \"time_wait\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_TIME_WAIT = \"time_wait\" as const;\n\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 * @example \"LTE\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_SUBTYPE = 'network.connection.subtype' as const;\n\n/**\n * Enum value \"cdma\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * CDMA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA = \"cdma\" as const;\n\n/**\n * Enum value \"cdma2000_1xrtt\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * CDMA2000 1XRTT\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT = \"cdma2000_1xrtt\" as const;\n\n/**\n * Enum value \"edge\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EDGE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE = \"edge\" as const;\n\n/**\n * Enum value \"ehrpd\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EHRPD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD = \"ehrpd\" as const;\n\n/**\n * Enum value \"evdo_0\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EVDO Rel. 0\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 = \"evdo_0\" as const;\n\n/**\n * Enum value \"evdo_a\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EVDO Rev. A\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A = \"evdo_a\" as const;\n\n/**\n * Enum value \"evdo_b\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EVDO Rev. B\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B = \"evdo_b\" as const;\n\n/**\n * Enum value \"gprs\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * GPRS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS = \"gprs\" as const;\n\n/**\n * Enum value \"gsm\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * GSM\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_GSM = \"gsm\" as const;\n\n/**\n * Enum value \"hsdpa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSDPA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA = \"hsdpa\" as const;\n\n/**\n * Enum value \"hspa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSPA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA = \"hspa\" as const;\n\n/**\n * Enum value \"hspap\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSPAP\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP = \"hspap\" as const;\n\n/**\n * Enum value \"hsupa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSUPA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA = \"hsupa\" as const;\n\n/**\n * Enum value \"iden\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * IDEN\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN = \"iden\" as const;\n\n/**\n * Enum value \"iwlan\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * IWLAN\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN = \"iwlan\" as const;\n\n/**\n * Enum value \"lte\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * LTE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE = \"lte\" as const;\n\n/**\n * Enum value \"lte_ca\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * LTE CA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA = \"lte_ca\" as const;\n\n/**\n * Enum value \"nr\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * 5G NR (New Radio)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_NR = \"nr\" as const;\n\n/**\n * Enum value \"nrnsa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * 5G NRNSA (New Radio Non-Standalone)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA = \"nrnsa\" as const;\n\n/**\n * Enum value \"td_scdma\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * TD-SCDMA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA = \"td_scdma\" as const;\n\n/**\n * Enum value \"umts\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * UMTS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS = \"umts\" as const;\n\n/**\n * The internet connection type.\n *\n * @example \"wifi\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_TYPE = 'network.connection.type' as const;\n\n/**\n * Enum value \"cell\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_CELL = \"cell\" as const;\n\n/**\n * Enum value \"unavailable\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE = \"unavailable\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * Enum value \"wifi\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_WIFI = \"wifi\" as const;\n\n/**\n * Enum value \"wired\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_WIRED = \"wired\" as const;\n\n/**\n * The network interface name.\n *\n * @example lo\n * @example eth0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_INTERFACE_NAME = 'network.interface.name' as const;\n\n/**\n * The network IO operation direction.\n *\n * @example transmit\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_IO_DIRECTION = 'network.io.direction' as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_NETWORK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_IO_DIRECTION_VALUE_RECEIVE = \"receive\" as const;\n\n/**\n * Enum value \"transmit\" for attribute {@link ATTR_NETWORK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_IO_DIRECTION_VALUE_TRANSMIT = \"transmit\" as const;\n\n/**\n * NFSv4+ operation name.\n *\n * @example OPEN\n * @example READ\n * @example GETATTR\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NFS_OPERATION_NAME = 'nfs.operation.name' as const;\n\n/**\n * Linux: one of \"hit\" (NFSD_STATS_RC_HITS), \"miss\" (NFSD_STATS_RC_MISSES), or \"nocache\" (NFSD_STATS_RC_NOCACHE -- uncacheable)\n *\n * @example \"hit\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NFS_SERVER_REPCACHE_STATUS = 'nfs.server.repcache.status' as const;\n\n/**\n * The state of event loop time.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NODEJS_EVENTLOOP_STATE = 'nodejs.eventloop.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}.\n *\n * Active time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}.\n *\n * Idle time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NODEJS_EVENTLOOP_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known.\n *\n * @example sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4\n *\n * @note Follows [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), and specifically the [Digest property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests).\n * An example can be found in [Example Image Manifest](https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OCI_MANIFEST_DIGEST = 'oci.manifest.digest' as const;\n\n/**\n * ONC/Sun RPC procedure name.\n *\n * @example OPEN\n * @example READ\n * @example GETATTR\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_PROCEDURE_NAME = 'onc_rpc.procedure.name' as const;\n\n/**\n * ONC/Sun RPC procedure number.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_PROCEDURE_NUMBER = 'onc_rpc.procedure.number' as const;\n\n/**\n * ONC/Sun RPC program name.\n *\n * @example portmapper\n * @example nfs\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_PROGRAM_NAME = 'onc_rpc.program.name' as const;\n\n/**\n * ONC/Sun RPC program version.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_VERSION = 'onc_rpc.version' as const;\n\n/**\n * The service tier requested. May be a specific tier, default, or auto.\n *\n * @example auto\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENAI_REQUEST_SERVICE_TIER = 'openai.request.service_tier' as const;\n\n/**\n * Enum value \"auto\" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize scale tier credits until they are exhausted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = \"auto\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize the default scale tier.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * The service tier used for the response.\n *\n * @example scale\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENAI_RESPONSE_SERVICE_TIER = 'openai.response.service_tier' as const;\n\n/**\n * A fingerprint to track any eventual change in the Generative AI environment.\n *\n * @example fp_44709d6fcb\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'openai.response.system_fingerprint' as const;\n\n/**\n * The name of the cluster quota.\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 */\nexport const ATTR_OPENSHIFT_CLUSTERQUOTA_NAME = 'openshift.clusterquota.name' as const;\n\n/**\n * The UID of the cluster quota.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENSHIFT_CLUSTERQUOTA_UID = 'openshift.clusterquota.uid' as const;\n\n/**\n * Parent-child Reference type\n *\n * @note The causal relationship between a child Span and a parent Span.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENTRACING_REF_TYPE = 'opentracing.ref_type' as const;\n\n/**\n * Enum value \"child_of\" for attribute {@link ATTR_OPENTRACING_REF_TYPE}.\n *\n * The parent Span depends on the child Span in some capacity\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENTRACING_REF_TYPE_VALUE_CHILD_OF = \"child_of\" as const;\n\n/**\n * Enum value \"follows_from\" for attribute {@link ATTR_OPENTRACING_REF_TYPE}.\n *\n * The parent Span doesn't depend in any way on the result of the child Span\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM = \"follows_from\" as const;\n\n/**\n * Unique identifier for a particular build or compilation of the operating system.\n *\n * @example TQ3C.230805.001.B2\n * @example 20E247\n * @example 22621\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_BUILD_ID = 'os.build_id' as const;\n\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 * @example Microsoft Windows [Version 10.0.18363.778]\n * @example Ubuntu 18.04.1 LTS\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_DESCRIPTION = 'os.description' as const;\n\n/**\n * Human readable operating system name.\n *\n * @example iOS\n * @example Android\n * @example Ubuntu\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_NAME = 'os.name' as const;\n\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 */\nexport const ATTR_OS_TYPE = 'os.type' as const;\n\n/**\n * Enum value \"aix\" for attribute {@link ATTR_OS_TYPE}.\n *\n * AIX (Advanced Interactive eXecutive)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_AIX = \"aix\" as const;\n\n/**\n * Enum value \"darwin\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Apple Darwin\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_DARWIN = \"darwin\" as const;\n\n/**\n * Enum value \"dragonflybsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * DragonFly BSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_DRAGONFLYBSD = \"dragonflybsd\" as const;\n\n/**\n * Enum value \"freebsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * FreeBSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_FREEBSD = \"freebsd\" as const;\n\n/**\n * Enum value \"hpux\" for attribute {@link ATTR_OS_TYPE}.\n *\n * HP-UX (Hewlett Packard Unix)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_HPUX = \"hpux\" as const;\n\n/**\n * Enum value \"linux\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Linux\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_LINUX = \"linux\" as const;\n\n/**\n * Enum value \"netbsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * NetBSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_NETBSD = \"netbsd\" as const;\n\n/**\n * Enum value \"openbsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * OpenBSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_OPENBSD = \"openbsd\" as const;\n\n/**\n * Enum value \"solaris\" for attribute {@link ATTR_OS_TYPE}.\n *\n * SunOS, Oracle Solaris\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_SOLARIS = \"solaris\" as const;\n\n/**\n * Enum value \"windows\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Microsoft Windows\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_WINDOWS = \"windows\" as const;\n\n/**\n * Enum value \"z_os\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Deprecated. Use `zos` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `zos`.\n */\nexport const OS_TYPE_VALUE_Z_OS = \"z_os\" as const;\n\n/**\n * Enum value \"zos\" for attribute {@link ATTR_OS_TYPE}.\n *\n * IBM z/OS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_ZOS = \"zos\" as const;\n\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 */\nexport const ATTR_OS_VERSION = 'os.version' as const;\n\n/**\n * A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance.\n *\n * @example otlp_grpc_span_exporter/0\n * @example custom-name\n *\n * @note Implementations **SHOULD** ensure a low cardinality for this attribute, even across application or SDK restarts.\n * E.g. implementations **MUST NOT** use UUIDs as values for this attribute.\n *\n * Implementations **MAY** achieve these goals by following a `/` pattern, e.g. `batching_span_processor/0`.\n * Hereby `otel.component.type` refers to the corresponding attribute value of the component.\n *\n * The value of `instance-counter` **MAY** be automatically assigned by the component and uniqueness within the enclosing SDK instance **MUST** be guaranteed.\n * For example, `` **MAY** be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an\n * instance of the given component type is started.\n *\n * With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`\n * as `otel.component.name`, the second one `batching_span_processor/1` and so on.\n * These values will therefore be reused in the case of an application restart.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_COMPONENT_NAME = 'otel.component.name' as const;\n\n/**\n * A name identifying the type of the OpenTelemetry component.\n *\n * @example batching_span_processor\n * @example com.example.MySpanExporter\n *\n * @note If none of the standardized values apply, implementations **SHOULD** use the language-defined name of the type.\n * E.g. for Java the fully qualified classname **SHOULD** be used in this case.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_COMPONENT_TYPE = 'otel.component.type' as const;\n\n/**\n * Enum value \"batching_log_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK batching log record processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR = \"batching_log_processor\" as const;\n\n/**\n * Enum value \"batching_span_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK batching span processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR = \"batching_span_processor\" as const;\n\n/**\n * Enum value \"otlp_grpc_log_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP log record exporter over gRPC with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_LOG_EXPORTER = \"otlp_grpc_log_exporter\" as const;\n\n/**\n * Enum value \"otlp_grpc_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP metric exporter over gRPC with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_METRIC_EXPORTER = \"otlp_grpc_metric_exporter\" as const;\n\n/**\n * Enum value \"otlp_grpc_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP span exporter over gRPC with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER = \"otlp_grpc_span_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_json_log_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP log record exporter over HTTP with JSON serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_LOG_EXPORTER = \"otlp_http_json_log_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_json_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP metric exporter over HTTP with JSON serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_METRIC_EXPORTER = \"otlp_http_json_metric_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_json_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP span exporter over HTTP with JSON serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER = \"otlp_http_json_span_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_log_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP log record exporter over HTTP with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER = \"otlp_http_log_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP metric exporter over HTTP with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_METRIC_EXPORTER = \"otlp_http_metric_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP span exporter over HTTP with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER = \"otlp_http_span_exporter\" as const;\n\n/**\n * Enum value \"periodic_metric_reader\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK periodically exporting metric reader\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_PERIODIC_METRIC_READER = \"periodic_metric_reader\" as const;\n\n/**\n * Enum value \"prometheus_http_text_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * Prometheus metric exporter over HTTP with the default text-based format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_PROMETHEUS_HTTP_TEXT_METRIC_EXPORTER = \"prometheus_http_text_metric_exporter\" as const;\n\n/**\n * Enum value \"simple_log_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK simple log record processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR = \"simple_log_processor\" as const;\n\n/**\n * Enum value \"simple_span_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK simple span processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR = \"simple_span_processor\" as const;\n\n/**\n * Enum value \"zipkin_http_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * Zipkin span exporter over HTTP\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_ZIPKIN_HTTP_SPAN_EXPORTER = \"zipkin_http_span_exporter\" as const;\n\n/**\n * Identifies the class / type of event.\n *\n * @example browser.mouse.click\n * @example device.app.lifecycle\n *\n * @note This attribute **SHOULD** be used by non-OTLP exporters when destination does not support `EventName` or equivalent field. This attribute **MAY** be used by applications using existing logging libraries so that it can be used to set the `EventName` field by Collector or SDK components.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_EVENT_NAME = 'otel.event.name' as const;\n\n/**\n * Deprecated. Use the `otel.scope.name` attribute\n *\n * @example io.opentelemetry.contrib.mongodb\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 `otel.scope.name`.\n */\nexport const ATTR_OTEL_LIBRARY_NAME = 'otel.library.name' as const;\n\n/**\n * Deprecated. Use the `otel.scope.version` attribute.\n *\n * @example 1.0.0\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 `otel.scope.version`.\n */\nexport const ATTR_OTEL_LIBRARY_VERSION = 'otel.library.version' as const;\n\n/**\n * The schema URL of the instrumentation scope.\n *\n * @example https://opentelemetry.io/schemas/1.31.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_SCOPE_SCHEMA_URL = 'otel.scope.schema_url' as const;\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 */\nexport const ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin' as const;\n\n/**\n * Enum value \"local\" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}.\n *\n * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is false\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_PARENT_ORIGIN_VALUE_LOCAL = \"local\" as const;\n\n/**\n * Enum value \"none\" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}.\n *\n * The span does not have a parent, it is a root span\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_PARENT_ORIGIN_VALUE_NONE = \"none\" as const;\n\n/**\n * Enum value \"remote\" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}.\n *\n * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is true\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_PARENT_ORIGIN_VALUE_REMOTE = \"remote\" as const;\n\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 */\nexport const ATTR_OTEL_SPAN_SAMPLING_RESULT = 'otel.span.sampling_result' as const;\n\n/**\n * Enum value \"DROP\" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}.\n *\n * The span is not sampled and not recording\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP = \"DROP\" as const;\n\n/**\n * Enum value \"RECORD_AND_SAMPLE\" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}.\n *\n * The span is sampled and recording\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE = \"RECORD_AND_SAMPLE\" as const;\n\n/**\n * Enum value \"RECORD_ONLY\" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}.\n *\n * The span is not sampled, but recording\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY = \"RECORD_ONLY\" as const;\n\n/**\n * The [`service.name`](/docs/resource/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 * @example \"AuthTokenCache\"\n *\n * @note Examples of `peer.service` that users may specify:\n *\n * - A Redis cache of auth tokens as `peer.service=\"AuthTokenCache\"`.\n * - A gRPC service `rpc.service=\"io.opentelemetry.AuthService\"` may be hosted in both a gateway, `peer.service=\"ExternalApiService\"` and a backend, `peer.service=\"AuthService\"`.\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 `service.peer.name`.\n */\nexport const ATTR_PEER_SERVICE = 'peer.service' as const;\n\n/**\n * Deprecated, use `db.client.connection.pool.name` instead.\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 *\n * @deprecated Replaced by `db.client.connection.pool.name`.\n */\nexport const ATTR_POOL_NAME = 'pool.name' as const;\n\n/**\n * Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_LOCATION_IS_FOLDED = 'pprof.location.is_folded' as const;\n\n/**\n * Indicates that there are filenames related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_FILENAMES = 'pprof.mapping.has_filenames' as const;\n\n/**\n * Indicates that there are functions related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_FUNCTIONS = 'pprof.mapping.has_functions' as const;\n\n/**\n * Indicates that there are inline frames related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_INLINE_FRAMES = 'pprof.mapping.has_inline_frames' as const;\n\n/**\n * Indicates that there are line numbers related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_LINE_NUMBERS = 'pprof.mapping.has_line_numbers' as const;\n\n/**\n * Free-form text associated with the profile. This field should not be used to store any machine-readable information, it is only for human-friendly content.\n *\n * @example [\"hello world\", \"bazinga\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_COMMENT = 'pprof.profile.comment' as const;\n\n/**\n * Documentation link for this profile type.\n *\n * @example http://pprof.example.com/cpu-profile.html\n *\n * @note The URL must be absolute and may be missing if the profile was generated by code that did not supply a link\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_DOC_URL = 'pprof.profile.doc_url' as const;\n\n/**\n * Frames with Function.function_name fully matching the regexp will be dropped from the samples, along with their successors.\n *\n * @example /foobar/\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_DROP_FRAMES = 'pprof.profile.drop_frames' as const;\n\n/**\n * Frames with Function.function_name fully matching the regexp will be kept, even if it matches drop_frames.\n *\n * @example /bazinga/\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_KEEP_FRAMES = 'pprof.profile.keep_frames' as const;\n\n/**\n * Length of the process.command_args array\n *\n * @example 4\n *\n * @note This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_ARGS_COUNT = 'process.args_count' as const;\n\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 */\nexport const ATTR_PROCESS_COMMAND = 'process.command' as const;\n\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`. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data.\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 */\nexport const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args' as const;\n\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. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data.\n *\n * @example C:\\\\cmd\\\\otecol --config=\"my directory\\\\config.yaml\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND_LINE = 'process.command_line' as const;\n\n/**\n * Specifies whether the context switches for this data point were voluntary or involuntary.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_CONTEXT_SWITCH_TYPE = 'process.context_switch.type' as const;\n\n/**\n * Enum value \"involuntary\" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY = \"involuntary\" as const;\n\n/**\n * Enum value \"voluntary\" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY = \"voluntary\" as const;\n\n/**\n * Deprecated, use `cpu.mode` 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 `cpu.mode`.\n */\nexport const ATTR_PROCESS_CPU_STATE = 'process.cpu.state' as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * Enum value \"wait\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CPU_STATE_VALUE_WAIT = \"wait\" as const;\n\n/**\n * The date and time the process was created, in ISO 8601 format.\n *\n * @example 2023-11-21T09:25:34.853Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_CREATION_TIME = 'process.creation.time' as const;\n\n/**\n * Process environment variables, `` being the environment variable name, the value being the environment variable value.\n *\n * @example ubuntu\n * @example /usr/local/bin:/usr/bin\n *\n * @note Examples:\n *\n * - an environment variable `USER` with value `\"ubuntu\"` **SHOULD** be recorded\n * as the `process.environment_variable.USER` attribute with value `\"ubuntu\"`.\n * - an environment variable `PATH` with value `\"/usr/local/bin:/usr/bin\"`\n * **SHOULD** be recorded as the `process.environment_variable.PATH` attribute\n * with value `\"/usr/local/bin:/usr/bin\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_ENVIRONMENT_VARIABLE = (key: string) => `process.environment_variable.${key}`;\n\n/**\n * The GNU build ID as found in the `.note.gnu.build-id` ELF section (hex string).\n *\n * @example c89b11207f6479603b0d49bf291c092c2b719293\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU = 'process.executable.build_id.gnu' as const;\n\n/**\n * The Go build ID as retrieved by `go tool buildid `.\n *\n * @example foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO = 'process.executable.build_id.go' as const;\n\n/**\n * Profiling specific build ID for executables. See the OTel specification for Profiles for more information.\n *\n * @example 600DCAFE4A110000F2BF38C493F5FB92\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH = 'process.executable.build_id.htlhash' as const;\n\n/**\n * \"Deprecated, use `process.executable.build_id.htlhash` instead.\"\n *\n * @example 600DCAFE4A110000F2BF38C493F5FB92\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 `process.executable.build_id.htlhash`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING = 'process.executable.build_id.profiling' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path' as const;\n\n/**\n * The exit code of the process.\n *\n * @example 127\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXIT_CODE = 'process.exit.code' as const;\n\n/**\n * The date and time the process exited, in ISO 8601 format.\n *\n * @example 2023-11-21T09:26:12.315Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXIT_TIME = 'process.exit.time' as const;\n\n/**\n * The PID of the process's group leader. This is also the process group ID (PGID) of the process.\n *\n * @example 23\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_GROUP_LEADER_PID = 'process.group_leader.pid' as const;\n\n/**\n * Whether the process is connected to an interactive shell.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_INTERACTIVE = 'process.interactive' as const;\n\n/**\n * The control group associated with the process.\n *\n * @example 1:name=systemd:/user.slice/user-1000.slice/session-3.scope\n * @example 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope\n *\n * @note Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the [/proc/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_LINUX_CGROUP = 'process.linux.cgroup' as const;\n\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 */\nexport const ATTR_PROCESS_OWNER = 'process.owner' as const;\n\n/**\n * Deprecated, use `system.paging.fault.type` 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 `system.paging.fault.type`.\n */\nexport const ATTR_PROCESS_PAGING_FAULT_TYPE = 'process.paging.fault_type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Parent Process identifier (PPID).\n *\n * @example 111\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_PARENT_PID = 'process.parent_pid' as const;\n\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 */\nexport const ATTR_PROCESS_PID = 'process.pid' as const;\n\n/**\n * The real user ID (RUID) of the process.\n *\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_REAL_USER_ID = 'process.real_user.id' as const;\n\n/**\n * The username of the real user of the process.\n *\n * @example operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_REAL_USER_NAME = 'process.real_user.name' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description' as const;\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 */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version' as const;\n\n/**\n * The saved user ID (SUID) of the process.\n *\n * @example 1002\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SAVED_USER_ID = 'process.saved_user.id' as const;\n\n/**\n * The username of the saved user.\n *\n * @example operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SAVED_USER_NAME = 'process.saved_user.name' as const;\n\n/**\n * The PID of the process's session leader. This is also the session ID (SID) of the process.\n *\n * @example 14\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SESSION_LEADER_PID = 'process.session_leader.pid' as const;\n\n/**\n * The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES)\n *\n * @example running\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_STATE = 'process.state' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * Process title (proctitle)\n *\n * @example cat /etc/hostname\n * @example xfce4-session\n * @example bash\n *\n * @note In many Unix-like systems, process title (proctitle), is the string that represents the name or command line of a running process, displayed by system monitoring tools like ps, top, and htop.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_TITLE = 'process.title' as const;\n\n/**\n * The effective user ID (EUID) of the process.\n *\n * @example 1001\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_USER_ID = 'process.user.id' as const;\n\n/**\n * The username of the effective user of 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 */\nexport const ATTR_PROCESS_USER_NAME = 'process.user.name' as const;\n\n/**\n * Virtual process identifier.\n *\n * @example 12\n *\n * @note The process ID within a PID namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_VPID = 'process.vpid' as const;\n\n/**\n * The working directory of 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 */\nexport const ATTR_PROCESS_WORKING_DIRECTORY = 'process.working_directory' as const;\n\n/**\n * Describes the interpreter or compiler of a single frame.\n *\n * @example cpython\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROFILE_FRAME_TYPE = 'profile.frame.type' as const;\n\n/**\n * Enum value \"beam\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Erlang](https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_BEAM = \"beam\" as const;\n\n/**\n * Enum value \"cpython\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Python](https://wikipedia.org/wiki/Python_(programming_language))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_CPYTHON = \"cpython\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [.NET](https://wikipedia.org/wiki/.NET)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Go](https://wikipedia.org/wiki/Go_(programming_language)),\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"jvm\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [JVM](https://wikipedia.org/wiki/Java_virtual_machine)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_JVM = \"jvm\" as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Kernel](https://wikipedia.org/wiki/Kernel_(operating_system))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"native\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * Can be one of but not limited to [C](https://wikipedia.org/wiki/C_(programming_language)), [C++](https://wikipedia.org/wiki/C%2B%2B), [Go](https://wikipedia.org/wiki/Go_(programming_language)) or [Rust](https://wikipedia.org/wiki/Rust_(programming_language)). If possible, a more precise value **MUST** be used.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_NATIVE = \"native\" as const;\n\n/**\n * Enum value \"perl\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Perl](https://wikipedia.org/wiki/Perl)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_PERL = \"perl\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [PHP](https://wikipedia.org/wiki/PHP)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Ruby](https://wikipedia.org/wiki/Ruby_(programming_language))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Rust](https://wikipedia.org/wiki/Rust_(programming_language))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"v8js\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [V8JS](https://wikipedia.org/wiki/V8_(JavaScript_engine))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_V8JS = \"v8js\" as const;\n\n/**\n * Deprecated, use `rpc.response.status_code` attribute 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 `rpc.response.status_code`.\n */\nexport const ATTR_RPC_CONNECT_RPC_ERROR_CODE = 'rpc.connect_rpc.error_code' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"already_exists\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS = \"already_exists\" as const;\n\n/**\n * Enum value \"cancelled\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED = \"cancelled\" as const;\n\n/**\n * Enum value \"data_loss\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS = \"data_loss\" as const;\n\n/**\n * Enum value \"deadline_exceeded\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED = \"deadline_exceeded\" as const;\n\n/**\n * Enum value \"failed_precondition\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION = \"failed_precondition\" as const;\n\n/**\n * Enum value \"internal\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL = \"internal\" as const;\n\n/**\n * Enum value \"invalid_argument\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT = \"invalid_argument\" as const;\n\n/**\n * Enum value \"not_found\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND = \"not_found\" as const;\n\n/**\n * Enum value \"out_of_range\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE = \"out_of_range\" as const;\n\n/**\n * Enum value \"permission_denied\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED = \"permission_denied\" as const;\n\n/**\n * Enum value \"resource_exhausted\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED = \"resource_exhausted\" as const;\n\n/**\n * Enum value \"unauthenticated\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED = \"unauthenticated\" as const;\n\n/**\n * Enum value \"unavailable\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE = \"unavailable\" as const;\n\n/**\n * Enum value \"unimplemented\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED = \"unimplemented\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * Deprecated, use `rpc.request.metadata` instead.\n *\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\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 `rpc.request.metadata`.\n */\nexport const ATTR_RPC_CONNECT_RPC_REQUEST_METADATA = (key: string) => `rpc.connect_rpc.request.metadata.${key}`;\n\n/**\n * Deprecated, use `rpc.response.metadata` instead.\n *\n * @example [\"attribute_value\"]\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 `rpc.response.metadata`.\n */\nexport const ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA = (key: string) => `rpc.connect_rpc.response.metadata.${key}`;\n\n/**\n * Deprecated, use `rpc.request.metadata` instead.\n *\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\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 `rpc.request.metadata`.\n */\nexport const ATTR_RPC_GRPC_REQUEST_METADATA = (key: string) => `rpc.grpc.request.metadata.${key}`;\n\n/**\n * Deprecated, use `rpc.response.metadata` instead.\n *\n * @example [\"attribute_value\"]\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 `rpc.response.metadata`.\n */\nexport const ATTR_RPC_GRPC_RESPONSE_METADATA = (key: string) => `rpc.grpc.response.metadata.${key}`;\n\n/**\n * Deprecated, use string representation on the `rpc.response.status_code` attribute instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use string representation of the gRPC status code on the `rpc.response.status_code` attribute.\n */\nexport const ATTR_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code' as const;\n\n/**\n * Enum value 0 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * OK\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_OK = 0 as const;\n\n/**\n * Enum value 1 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * CANCELLED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_CANCELLED = 1 as const;\n\n/**\n * Enum value 2 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNKNOWN\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN = 2 as const;\n\n/**\n * Enum value 3 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * INVALID_ARGUMENT\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT = 3 as const;\n\n/**\n * Enum value 4 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * DEADLINE_EXCEEDED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED = 4 as const;\n\n/**\n * Enum value 5 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * NOT_FOUND\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND = 5 as const;\n\n/**\n * Enum value 6 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * ALREADY_EXISTS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS = 6 as const;\n\n/**\n * Enum value 7 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * PERMISSION_DENIED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED = 7 as const;\n\n/**\n * Enum value 8 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * RESOURCE_EXHAUSTED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED = 8 as const;\n\n/**\n * Enum value 9 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * FAILED_PRECONDITION\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION = 9 as const;\n\n/**\n * Enum value 10 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * ABORTED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_ABORTED = 10 as const;\n\n/**\n * Enum value 11 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * OUT_OF_RANGE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE = 11 as const;\n\n/**\n * Enum value 12 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNIMPLEMENTED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED = 12 as const;\n\n/**\n * Enum value 13 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * INTERNAL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_INTERNAL = 13 as const;\n\n/**\n * Enum value 14 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNAVAILABLE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE = 14 as const;\n\n/**\n * Enum value 15 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * DATA_LOSS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS = 15 as const;\n\n/**\n * Enum value 16 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNAUTHENTICATED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED = 16 as const;\n\n/**\n * Deprecated, use string representation on the `rpc.response.status_code` attribute instead.\n *\n * @example -32700\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use string representation of the error code on the `rpc.response.status_code` attribute.\n */\nexport const ATTR_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code' as const;\n\n/**\n * Deprecated, use span status description or `error.message` attribute on other signals.\n *\n * @example Parse error\n * @example User already exists\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use the span status description or `error.message` attribute on other signals.\n */\nexport const ATTR_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message' as const;\n\n/**\n * Deprecated, use `jsonrpc.request.id` instead.\n *\n * @example 10\n * @example request-7\n * @example\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 `jsonrpc.request.id`.\n */\nexport const ATTR_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id' as const;\n\n/**\n * Deprecated, use `jsonrpc.protocol.version` instead.\n *\n * @example 2.0\n * @example 1.0\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 `jsonrpc.protocol.version`.\n */\nexport const ATTR_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version' as const;\n\n/**\n * Compressed size of the message in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_COMPRESSED_SIZE = 'rpc.message.compressed_size' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_ID = 'rpc.message.id' as const;\n\n/**\n * Whether this is a received or sent message.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_TYPE = 'rpc.message.type' as const;\n\n/**\n * Enum value \"RECEIVED\" for attribute {@link ATTR_RPC_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_MESSAGE_TYPE_VALUE_RECEIVED = \"RECEIVED\" as const;\n\n/**\n * Enum value \"SENT\" for attribute {@link ATTR_RPC_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_MESSAGE_TYPE_VALUE_SENT = \"SENT\" as const;\n\n/**\n * Uncompressed size of the message in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE = 'rpc.message.uncompressed_size' as const;\n\n/**\n * The fully-qualified logical name of the method from the RPC interface perspective.\n *\n * @example com.example.ExampleService/exampleMethod\n * @example EchoService/Echo\n * @example _OTHER\n *\n * @note The method name **MAY** have unbounded cardinality in edge or error cases.\n *\n * Some RPC frameworks or libraries provide a fixed set of recognized methods\n * for client stubs and server implementations. Instrumentations for such\n * frameworks **MUST** set this attribute to the original method name only\n * when the method is recognized by the framework or library.\n *\n * When the method is not recognized, for example, when the server receives\n * a request for a method that is not predefined on the server, or when\n * instrumentation is not able to reliably detect if the method is predefined,\n * the attribute **MUST** be set to `_OTHER`. In such cases, tracing\n * instrumentations **MUST** also set `rpc.method_original` attribute to\n * the original method value.\n *\n * If the RPC instrumentation could end up converting valid RPC methods to\n * `_OTHER`, then it **SHOULD** provide a way to configure the list of recognized\n * RPC methods.\n *\n * The `rpc.method` can be different from the name of any implementing\n * method/function.\n * The `code.function.name` attribute may be used to record the fully-qualified\n * method actually executing the call on the server side, or the\n * RPC client stub method on the client side.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_METHOD = 'rpc.method' as const;\n\n/**\n * The original name of the method used by the client.\n *\n * @example com.myservice.EchoService/catchAll\n * @example com.myservice.EchoService/unknownMethod\n * @example InvalidMethod\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_METHOD_ORIGINAL = 'rpc.method_original' as const;\n\n/**\n * RPC request metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values.\n *\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured.\n * Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * For example, a property `my-custom-key` with value `[\"1.2.3.4\", \"1.2.3.5\"]` **SHOULD** be recorded as\n * `rpc.request.metadata.my-custom-key` attribute with value `[\"1.2.3.4\", \"1.2.3.5\"]`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_REQUEST_METADATA = (key: string) => `rpc.request.metadata.${key}`;\n\n/**\n * RPC response metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values.\n *\n * @example [\"attribute_value\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured.\n * Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * For example, a property `my-custom-key` with value `[\"attribute_value\"]` **SHOULD** be recorded as\n * the `rpc.response.metadata.my-custom-key` attribute with value `[\"attribute_value\"]`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_RESPONSE_METADATA = (key: string) => `rpc.response.metadata.${key}`;\n\n/**\n * Status code of the RPC returned by the RPC server or generated by the client\n *\n * @example OK\n * @example DEADLINE_EXCEEDED\n * @example -32602\n *\n * @note 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 RPC frameworks **SHOULD** document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_RESPONSE_STATUS_CODE = 'rpc.response.status_code' as const;\n\n/**\n * Deprecated, use fully-qualified `rpc.method` instead.\n *\n * @example \"myservice.EchoService\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Value should be included in `rpc.method` which is expected to be a fully-qualified name.\n */\nexport const ATTR_RPC_SERVICE = 'rpc.service' as const;\n\n/**\n * Deprecated, use `rpc.system.name` attribute 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 `rpc.system.name`.\n */\nexport const ATTR_RPC_SYSTEM = 'rpc.system' as const;\n\n/**\n * Enum value \"apache_dubbo\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * Apache Dubbo\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_APACHE_DUBBO = \"apache_dubbo\" as const;\n\n/**\n * Enum value \"connect_rpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * Connect RPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_CONNECT_RPC = \"connect_rpc\" as const;\n\n/**\n * Enum value \"dotnet_wcf\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * .NET WCF\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_DOTNET_WCF = \"dotnet_wcf\" as const;\n\n/**\n * Enum value \"grpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * gRPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_GRPC = \"grpc\" as const;\n\n/**\n * Enum value \"java_rmi\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * Java RMI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_JAVA_RMI = \"java_rmi\" as const;\n\n/**\n * Enum value \"jsonrpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * JSON-RPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_JSONRPC = \"jsonrpc\" as const;\n\n/**\n * Enum value \"onc_rpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * [ONC RPC (Sun RPC)](https://datatracker.ietf.org/doc/html/rfc5531)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_ONC_RPC = \"onc_rpc\" as const;\n\n/**\n * The Remote Procedure Call (RPC) system.\n *\n * @note The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_SYSTEM_NAME = 'rpc.system.name' as const;\n\n/**\n * Enum value \"connectrpc\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [Connect RPC](https://connectrpc.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_CONNECTRPC = \"connectrpc\" as const;\n\n/**\n * Enum value \"dubbo\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [Apache Dubbo](https://dubbo.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_DUBBO = \"dubbo\" as const;\n\n/**\n * Enum value \"grpc\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [gRPC](https://grpc.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_GRPC = \"grpc\" as const;\n\n/**\n * Enum value \"jsonrpc\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [JSON-RPC](https://www.jsonrpc.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_JSONRPC = \"jsonrpc\" as const;\n\n/**\n * A categorization value keyword used by the entity using the rule for detection of this event\n *\n * @example Attempted Information Leak\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_CATEGORY = 'security_rule.category' as const;\n\n/**\n * The description of the rule generating the event.\n *\n * @example Block requests to public DNS over HTTPS / TLS protocols\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_DESCRIPTION = 'security_rule.description' as const;\n\n/**\n * Name of the license under which the rule used to generate this event is made available.\n *\n * @example Apache 2.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_LICENSE = 'security_rule.license' as const;\n\n/**\n * The name of the rule or signature generating the event.\n *\n * @example BLOCK_DNS_over_TLS\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_NAME = 'security_rule.name' as const;\n\n/**\n * Reference URL to additional information about the rule used to generate this event.\n *\n * @example https://en.wikipedia.org/wiki/DNS_over_TLS\n *\n * @note The URL can point to the vendor’s documentation about the rule. If that’s not available, it can also be a link to a more general page describing this type of alert.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_REFERENCE = 'security_rule.reference' as const;\n\n/**\n * Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member.\n *\n * @example Standard_Protocol_Filters\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_RULESET_NAME = 'security_rule.ruleset.name' as const;\n\n/**\n * A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event.\n *\n * @example 550e8400-e29b-41d4-a716-446655440000\n * @example 1100110011\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_UUID = 'security_rule.uuid' as const;\n\n/**\n * The version / revision of the rule being used for analysis.\n *\n * @example 1.0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_VERSION = 'security_rule.version' as const;\n\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 */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\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 */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\n/**\n * Logical name of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.name`](/docs/resource/README.md#service) resource attribute of the remote service if any.\n *\n * @example shoppingcart\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_PEER_NAME = 'service.peer.name' as const;\n\n/**\n * Logical namespace of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.namespace`](/docs/resource/README.md#service) resource attribute of the remote service if any.\n *\n * @example Shop\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_PEER_NAMESPACE = 'service.peer.namespace' as const;\n\n/**\n * A unique id to identify a session.\n *\n * @example \"00112233-4455-6677-8899-aabbccddeeff\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SESSION_ID = 'session.id' as const;\n\n/**\n * The previous `session.id` for this user, when known.\n *\n * @example \"00112233-4455-6677-8899-aabbccddeeff\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SESSION_PREVIOUS_ID = 'session.previous_id' as const;\n\n/**\n * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example source.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the destination side, and when communicating through an intermediary, `source.address` **SHOULD** represent the source address behind any intermediaries, for example proxies, if it's available.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SOURCE_ADDRESS = 'source.address' as const;\n\n/**\n * Source port number\n *\n * @example 3389\n * @example 2888\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SOURCE_PORT = 'source.port' as const;\n\n/**\n * Deprecated, use `db.client.connection.state` instead.\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 *\n * @deprecated Replaced by `db.client.connection.state`.\n */\nexport const ATTR_STATE = 'state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `cpu.logical_number` instead.\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 *\n * @deprecated Replaced by `cpu.logical_number`.\n */\nexport const ATTR_SYSTEM_CPU_LOGICAL_NUMBER = 'system.cpu.logical_number' as const;\n\n/**\n * Deprecated, use `cpu.mode` instead.\n *\n * @example idle\n * @example interrupt\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 `cpu.mode`.\n */\nexport const ATTR_SYSTEM_CPU_STATE = 'system.cpu.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"interrupt\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_INTERRUPT = \"interrupt\" as const;\n\n/**\n * Enum value \"iowait\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_IOWAIT = \"iowait\" as const;\n\n/**\n * Enum value \"nice\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_NICE = \"nice\" as const;\n\n/**\n * Enum value \"steal\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_STEAL = \"steal\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * The device identifier\n *\n * @example (identifier)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_DEVICE = 'system.device' as const;\n\n/**\n * The filesystem mode\n *\n * @example rw, ro\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_MODE = 'system.filesystem.mode' as const;\n\n/**\n * The filesystem mount path\n *\n * @example /mnt/data\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT = 'system.filesystem.mountpoint' as const;\n\n/**\n * The filesystem state\n *\n * @example used\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_STATE = 'system.filesystem.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"reserved\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED = \"reserved\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * The filesystem type\n *\n * @example ext4\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_TYPE = 'system.filesystem.type' as const;\n\n/**\n * Enum value \"exfat\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT = \"exfat\" as const;\n\n/**\n * Enum value \"ext4\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4 = \"ext4\" as const;\n\n/**\n * Enum value \"fat32\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32 = \"fat32\" as const;\n\n/**\n * Enum value \"hfsplus\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS = \"hfsplus\" as const;\n\n/**\n * Enum value \"ntfs\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS = \"ntfs\" as const;\n\n/**\n * Enum value \"refs\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_REFS = \"refs\" as const;\n\n/**\n * The Linux Slab memory state\n *\n * @example reclaimable\n * @example unreclaimable\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE = 'system.memory.linux.slab.state' as const;\n\n/**\n * Enum value \"reclaimable\" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE = \"reclaimable\" as const;\n\n/**\n * Enum value \"unreclaimable\" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE = \"unreclaimable\" as const;\n\n/**\n * The memory state\n *\n * @example free\n * @example cached\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_MEMORY_STATE = 'system.memory.state' as const;\n\n/**\n * Enum value \"buffers\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_BUFFERS = \"buffers\" as const;\n\n/**\n * Enum value \"cached\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_CACHED = \"cached\" as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"shared\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, report shared memory usage with `metric.system.memory.shared` metric\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_SHARED = \"shared\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * Actual used virtual memory in bytes.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `network.connection.state` instead.\n *\n * @example close_wait\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.connection.state`.\n */\nexport const ATTR_SYSTEM_NETWORK_STATE = 'system.network.state' as const;\n\n/**\n * Enum value \"close\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSE = \"close\" as const;\n\n/**\n * Enum value \"close_wait\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT = \"close_wait\" as const;\n\n/**\n * Enum value \"closing\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSING = \"closing\" as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"established\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED = \"established\" as const;\n\n/**\n * Enum value \"fin_wait_1\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1 = \"fin_wait_1\" as const;\n\n/**\n * Enum value \"fin_wait_2\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2 = \"fin_wait_2\" as const;\n\n/**\n * Enum value \"last_ack\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_LAST_ACK = \"last_ack\" as const;\n\n/**\n * Enum value \"listen\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_LISTEN = \"listen\" as const;\n\n/**\n * Enum value \"syn_recv\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_SYN_RECV = \"syn_recv\" as const;\n\n/**\n * Enum value \"syn_sent\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_SYN_SENT = \"syn_sent\" as const;\n\n/**\n * Enum value \"time_wait\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT = \"time_wait\" as const;\n\n/**\n * The paging access direction\n *\n * @example in\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_DIRECTION = 'system.paging.direction' as const;\n\n/**\n * Enum value \"in\" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_DIRECTION_VALUE_IN = \"in\" as const;\n\n/**\n * Enum value \"out\" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_DIRECTION_VALUE_OUT = \"out\" as const;\n\n/**\n * The paging fault type\n *\n * @example minor\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_FAULT_TYPE = 'system.paging.fault.type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_FAULT_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_FAULT_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * The memory paging state\n *\n * @example free\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_STATE = 'system.paging.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_PAGING_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_PAGING_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `system.paging.fault.type` instead.\n *\n * @example minor\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 `system.paging.fault.type`.\n */\nexport const ATTR_SYSTEM_PAGING_TYPE = 'system.paging.type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Deprecated, use `process.state` instead.\n *\n * @example running\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 `process.state`.\n */\nexport const ATTR_SYSTEM_PROCESS_STATUS = 'system.process.status' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * Deprecated, use `process.state` instead.\n *\n * @example running\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 `process.state`.\n */\nexport const ATTR_SYSTEM_PROCESSES_STATUS = 'system.processes.status' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * The name of the auto instrumentation agent or distribution, if used.\n *\n * @example parts-unlimited-java\n *\n * @note Official auto instrumentation agents and distributions **SHOULD** set the `telemetry.distro.name` attribute to\n * a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TELEMETRY_DISTRO_NAME = 'telemetry.distro.name' as const;\n\n/**\n * The version string of the auto instrumentation agent or distribution, if used.\n *\n * @example 1.2.3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TELEMETRY_DISTRO_VERSION = 'telemetry.distro.version' as const;\n\n/**\n * The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case).\n *\n * @example org.example.TestCase1.test1\n * @example example/tests/TestCase1.test1\n * @example ExampleTestCase1_test1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_CASE_NAME = 'test.case.name' as const;\n\n/**\n * The status of the actual test case result from test execution.\n *\n * @example pass\n * @example fail\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_CASE_RESULT_STATUS = 'test.case.result.status' as const;\n\n/**\n * Enum value \"fail\" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}.\n *\n * fail\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_CASE_RESULT_STATUS_VALUE_FAIL = \"fail\" as const;\n\n/**\n * Enum value \"pass\" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}.\n *\n * pass\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_CASE_RESULT_STATUS_VALUE_PASS = \"pass\" as const;\n\n/**\n * The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite).\n *\n * @example TestSuite1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_SUITE_NAME = 'test.suite.name' as const;\n\n/**\n * The status of the test suite run.\n *\n * @example success\n * @example failure\n * @example skipped\n * @example aborted\n * @example timed_out\n * @example in_progress\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_SUITE_RUN_STATUS = 'test.suite.run.status' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * aborted\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * failure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"in_progress\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * in_progress\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS = \"in_progress\" as const;\n\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * skipped\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_SKIPPED = \"skipped\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * success\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"timed_out\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * timed_out\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT = \"timed_out\" as const;\n\n/**\n * Current \"managed\" thread ID (as opposed to OS thread ID).\n *\n * @example 42\n *\n * @note\n * Examples of where the value can be extracted from:\n *\n * | Language or platform | Source |\n * | --- | --- |\n * | JVM | `Thread.currentThread().threadId()` |\n * | .NET | `Thread.CurrentThread.ManagedThreadId` |\n * | Python | `threading.current_thread().ident` |\n * | Ruby | `Thread.current.object_id` |\n * | C++ | `std::this_thread::get_id()` |\n * | Erlang | `erlang:self()` |\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_THREAD_ID = 'thread.id' as const;\n\n/**\n * Current thread name.\n *\n * @example \"main\"\n *\n * @note\n * Examples of where the value can be extracted from:\n *\n * | Language or platform | Source |\n * | --- | --- |\n * | JVM | `Thread.currentThread().getName()` |\n * | .NET | `Thread.CurrentThread.Name` |\n * | Python | `threading.current_thread().name` |\n * | Ruby | `Thread.current.name` |\n * | Erlang | `erlang:process_info(self(), registered_name)` |\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_THREAD_NAME = 'thread.name' as const;\n\n/**\n * String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection.\n *\n * @example TLS_RSA_WITH_3DES_EDE_CBC_SHA\n * @example TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\n *\n * @note The values allowed for `tls.cipher` **MUST** be one of the `Descriptions` of the [registered TLS Cipher Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CIPHER = 'tls.cipher' as const;\n\n/**\n * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list.\n *\n * @example MII...\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_CERTIFICATE = 'tls.client.certificate' as const;\n\n/**\n * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain.\n *\n * @example [\"MII...\", \"MI...\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_CERTIFICATE_CHAIN = 'tls.client.certificate_chain' as const;\n\n/**\n * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_MD5 = 'tls.client.hash.md5' as const;\n\n/**\n * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 9E393D93138888D288266C2D915214D1D1CCEB2A\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_SHA1 = 'tls.client.hash.sha1' as const;\n\n/**\n * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_SHA256 = 'tls.client.hash.sha256' as const;\n\n/**\n * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client.\n *\n * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_ISSUER = 'tls.client.issuer' as const;\n\n/**\n * A hash that identifies clients based on how they perform an SSL/TLS handshake.\n *\n * @example d4e5b18d6b55c71272893221c96ba240\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_JA3 = 'tls.client.ja3' as const;\n\n/**\n * Date/Time indicating when client certificate is no longer considered valid.\n *\n * @example 2021-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_NOT_AFTER = 'tls.client.not_after' as const;\n\n/**\n * Date/Time indicating when client certificate is first considered valid.\n *\n * @example 1970-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_NOT_BEFORE = 'tls.client.not_before' as const;\n\n/**\n * Deprecated, use `server.address` instead.\n *\n * @example opentelemetry.io\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 */\nexport const ATTR_TLS_CLIENT_SERVER_NAME = 'tls.client.server_name' as const;\n\n/**\n * Distinguished name of subject of the x.509 certificate presented by the client.\n *\n * @example CN=myclient, OU=Documentation Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_SUBJECT = 'tls.client.subject' as const;\n\n/**\n * Array of ciphers offered by the client during the client hello.\n *\n * @example [\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_SUPPORTED_CIPHERS = 'tls.client.supported_ciphers' as const;\n\n/**\n * String indicating the curve used for the given cipher, when applicable\n *\n * @example secp256r1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CURVE = 'tls.curve' as const;\n\n/**\n * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel.\n *\n * @example true\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_ESTABLISHED = 'tls.established' as const;\n\n/**\n * String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case.\n *\n * @example http/1.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_NEXT_PROTOCOL = 'tls.next_protocol' as const;\n\n/**\n * Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_PROTOCOL_NAME = 'tls.protocol.name' as const;\n\n/**\n * Enum value \"ssl\" for attribute {@link ATTR_TLS_PROTOCOL_NAME}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TLS_PROTOCOL_NAME_VALUE_SSL = \"ssl\" as const;\n\n/**\n * Enum value \"tls\" for attribute {@link ATTR_TLS_PROTOCOL_NAME}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TLS_PROTOCOL_NAME_VALUE_TLS = \"tls\" as const;\n\n/**\n * Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values)\n *\n * @example 1.2\n * @example 3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_PROTOCOL_VERSION = 'tls.protocol.version' as const;\n\n/**\n * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation.\n *\n * @example true\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_RESUMED = 'tls.resumed' as const;\n\n/**\n * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list.\n *\n * @example MII...\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_CERTIFICATE = 'tls.server.certificate' as const;\n\n/**\n * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain.\n *\n * @example [\"MII...\", \"MI...\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_CERTIFICATE_CHAIN = 'tls.server.certificate_chain' as const;\n\n/**\n * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_MD5 = 'tls.server.hash.md5' as const;\n\n/**\n * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 9E393D93138888D288266C2D915214D1D1CCEB2A\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_SHA1 = 'tls.server.hash.sha1' as const;\n\n/**\n * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_SHA256 = 'tls.server.hash.sha256' as const;\n\n/**\n * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client.\n *\n * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_ISSUER = 'tls.server.issuer' as const;\n\n/**\n * A hash that identifies servers based on how they perform an SSL/TLS handshake.\n *\n * @example d4e5b18d6b55c71272893221c96ba240\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_JA3S = 'tls.server.ja3s' as const;\n\n/**\n * Date/Time indicating when server certificate is no longer considered valid.\n *\n * @example 2021-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_NOT_AFTER = 'tls.server.not_after' as const;\n\n/**\n * Date/Time indicating when server certificate is first considered valid.\n *\n * @example 1970-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_NOT_BEFORE = 'tls.server.not_before' as const;\n\n/**\n * Distinguished name of subject of the x.509 certificate presented by the server.\n *\n * @example CN=myserver, OU=Documentation Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_SUBJECT = 'tls.server.subject' as const;\n\n/**\n * Domain extracted from the `url.full`, such as \"opentelemetry.io\".\n *\n * @example www.foo.bar\n * @example opentelemetry.io\n * @example 3.12.167.2\n * @example [1080:0:0:0:8:800:200C:417A]\n *\n * @note In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the domain field. If the URL contains a [literal IPv6 address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by `[` and `]`, the `[` and `]` characters should also be captured in the domain field.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_DOMAIN = 'url.domain' as const;\n\n/**\n * The file extension extracted from the `url.full`, excluding the leading dot.\n *\n * @example png\n * @example gz\n *\n * @note The file extension is only set if it exists, as not every url has a file extension. When the file name has multiple extensions `example.tar.gz`, only the last one should be captured `gz`, not `tar.gz`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_EXTENSION = 'url.extension' as const;\n\n/**\n * Unmodified original URL as seen in the event source.\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example search?q=OpenTelemetry\n *\n * @note In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not.\n * `url.original` might contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case password and username **SHOULD NOT** be redacted and attribute's value **SHOULD** remain the same.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_ORIGINAL = 'url.original' as const;\n\n/**\n * Port extracted from the `url.full`\n *\n * @example 443\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_PORT = 'url.port' as const;\n\n/**\n * The highest registered url domain, stripped of the subdomain.\n *\n * @example example.com\n * @example foo.co.uk\n *\n * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). For example, the registered domain for `foo.example.com` is `example.com`. Trying to approximate this by simply taking the last two labels will not work well for TLDs such as `co.uk`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_REGISTERED_DOMAIN = 'url.registered_domain' as const;\n\n/**\n * The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\n *\n * @example east\n * @example sub2.sub1\n *\n * @note The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, with no trailing period.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_SUBDOMAIN = 'url.subdomain' as const;\n\n/**\n * The low-cardinality template of an [absolute path reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2).\n *\n * @example /users/{id}\n * @example /users/:id\n * @example /users?id={id}\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_TEMPLATE = 'url.template' as const;\n\n/**\n * The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is `com`.\n *\n * @example com\n * @example co.uk\n *\n * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_TOP_LEVEL_DOMAIN = 'url.top_level_domain' as const;\n\n/**\n * User email address.\n *\n * @example a.einstein@example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_EMAIL = 'user.email' as const;\n\n/**\n * User's full name\n *\n * @example Albert Einstein\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_FULL_NAME = 'user.full_name' as const;\n\n/**\n * Unique user hash to correlate information for a user in anonymized form.\n *\n * @example 364fc68eaf4c8acec74a4e52d7d1feaa\n *\n * @note Useful if `user.id` or `user.name` contain confidential information and cannot be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_HASH = 'user.hash' as const;\n\n/**\n * Unique identifier of the user.\n *\n * @example S-1-5-21-202424912787-2692429404-2351956786-1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_ID = 'user.id' as const;\n\n/**\n * Short name or login/username of the user.\n *\n * @example a.einstein\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_NAME = 'user.name' as const;\n\n/**\n * Array of user roles at the time of the event.\n *\n * @example [\"admin\", \"reporting_user\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_ROLES = 'user.roles' as const;\n\n/**\n * Name of the user-agent extracted from original. Usually refers to the browser's name.\n *\n * @example Safari\n * @example YourApp\n *\n * @note [Example](https://uaparser.dev/#demo) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name **SHOULD** be selected. In such a scenario it should align with `user_agent.version`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_NAME = 'user_agent.name' as const;\n\n/**\n * Human readable operating system name.\n *\n * @example iOS\n * @example Android\n * @example Ubuntu\n *\n * @note For mapping user agent strings to OS names, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_OS_NAME = 'user_agent.os.name' as const;\n\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 * @note For mapping user agent strings to OS versions, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_OS_VERSION = 'user_agent.os.version' as const;\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 */\nexport const ATTR_USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type' as const;\n\n/**\n * Enum value \"bot\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n *\n * Bot source.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = \"bot\" as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n *\n * Synthetic test source.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = \"test\" as const;\n\n/**\n * Version of the user-agent extracted from original. Usually refers to the browser's version\n *\n * @example 14.1.2\n * @example 1.0.0\n *\n * @note [Example](https://uaparser.dev/#demo) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version **SHOULD** be selected. In such a scenario it should align with `user_agent.name`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_VERSION = 'user_agent.version' as const;\n\n/**\n * The type of garbage collection.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_V8JS_GC_TYPE = 'v8js.gc.type' as const;\n\n/**\n * Enum value \"incremental\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Incremental (Incremental Marking).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_INCREMENTAL = \"incremental\" as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Major (Mark Sweep Compact).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Minor (Scavenge).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Enum value \"weakcb\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Weak Callbacks (Process Weak Callbacks).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_WEAKCB = \"weakcb\" as const;\n\n/**\n * The name of the space type of heap memory.\n *\n * @note Value can be retrieved from value `space_name` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_V8JS_HEAP_SPACE_NAME = 'v8js.heap.space.name' as const;\n\n/**\n * Enum value \"code_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Code memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE = \"code_space\" as const;\n\n/**\n * Enum value \"large_object_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Large object memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE = \"large_object_space\" as const;\n\n/**\n * Enum value \"map_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Map memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE = \"map_space\" as const;\n\n/**\n * Enum value \"new_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * New memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE = \"new_space\" as const;\n\n/**\n * Enum value \"old_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Old memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE = \"old_space\" as const;\n\n/**\n * The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system.\n *\n * @example 123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_CHANGE_ID = 'vcs.change.id' as const;\n\n/**\n * The state of the change (pull request/merge request/changelist).\n *\n * @example open\n * @example closed\n * @example merged\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_CHANGE_STATE = 'vcs.change.state' as const;\n\n/**\n * Enum value \"closed\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * Closed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_CLOSED = \"closed\" as const;\n\n/**\n * Enum value \"merged\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * Merged indicates that the change has been successfully integrated into the target codebase.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_MERGED = \"merged\" as const;\n\n/**\n * Enum value \"open\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * Open means the change is currently active and under review. It hasn't been merged into the target branch yet, and it's still possible to make changes or add comments.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_OPEN = \"open\" as const;\n\n/**\n * Enum value \"wip\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * WIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_WIP = \"wip\" as const;\n\n/**\n * The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary.\n *\n * @example Fixes broken thing\n * @example feat: add my new feature\n * @example [chore] update dependency\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_CHANGE_TITLE = 'vcs.change.title' as const;\n\n/**\n * The type of line change being measured on a branch or change.\n *\n * @example added\n * @example removed\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_LINE_CHANGE_TYPE = 'vcs.line_change.type' as const;\n\n/**\n * Enum value \"added\" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}.\n *\n * How many lines were added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_LINE_CHANGE_TYPE_VALUE_ADDED = \"added\" as const;\n\n/**\n * Enum value \"removed\" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}.\n *\n * How many lines were removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_LINE_CHANGE_TYPE_VALUE_REMOVED = \"removed\" as const;\n\n/**\n * The group owner within the version control system.\n *\n * @example my-org\n * @example myteam\n * @example business-unit\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_OWNER_NAME = 'vcs.owner.name' as const;\n\n/**\n * The name of the version control system provider.\n *\n * @example github\n * @example gitlab\n * @example gitea\n * @example bitbucket\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_PROVIDER_NAME = 'vcs.provider.name' as const;\n\n/**\n * Enum value \"bitbucket\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [Bitbucket](https://bitbucket.org)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_BITBUCKET = \"bitbucket\" as const;\n\n/**\n * Enum value \"gitea\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [Gitea](https://gitea.io)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITEA = \"gitea\" as const;\n\n/**\n * Enum value \"github\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [GitHub](https://github.com)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITHUB = \"github\" as const;\n\n/**\n * Enum value \"gitlab\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [GitLab](https://gitlab.com)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITLAB = \"gitlab\" as const;\n\n/**\n * Enum value \"gittea\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * Deprecated, use `gitea` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `gitea`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITTEA = \"gittea\" as const;\n\n/**\n * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository.\n *\n * @example my-feature-branch\n * @example tag-1-test\n *\n * @note `base` refers to the starting point of a change. For example, `main`\n * would be the base reference of type branch if you've created a new\n * reference of type branch from it and created new commits.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_BASE_NAME = 'vcs.ref.base.name' as const;\n\n/**\n * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN.\n *\n * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc\n * @example main\n * @example 123\n * @example HEAD\n *\n * @note `base` refers to the starting point of a change. For example, `main`\n * would be the base reference of type branch if you've created a new\n * reference of type branch from it and created new commits. The\n * revision can be a full [hash value (see\n * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf),\n * of the recorded change to a ref within a repository pointing to a\n * commit [commit](https://git-scm.com/docs/git-commit) object. It does\n * not necessarily have to be a hash; it can simply define a [revision\n * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)\n * which is an integer that is monotonically increasing. In cases where\n * it is identical to the `ref.base.name`, it **SHOULD** still be included.\n * It is up to the implementer to decide which value to set as the\n * revision based on the VCS system and situational context.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_BASE_REVISION = 'vcs.ref.base.revision' as const;\n\n/**\n * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.\n *\n * @example branch\n * @example tag\n *\n * @note `base` refers to the starting point of a change. For example, `main`\n * would be the base reference of type branch if you've created a new\n * reference of type branch from it and created new commits.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_BASE_TYPE = 'vcs.ref.base.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REF_BASE_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_BASE_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REF_BASE_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_BASE_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository.\n *\n * @example my-feature-branch\n * @example tag-1-test\n *\n * @note `head` refers to where you are right now; the current reference at a\n * given time.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_HEAD_NAME = 'vcs.ref.head.name' as const;\n\n/**\n * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN.\n *\n * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc\n * @example main\n * @example 123\n * @example HEAD\n *\n * @note `head` refers to where you are right now; the current reference at a\n * given time.The revision can be a full [hash value (see\n * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf),\n * of the recorded change to a ref within a repository pointing to a\n * commit [commit](https://git-scm.com/docs/git-commit) object. It does\n * not necessarily have to be a hash; it can simply define a [revision\n * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)\n * which is an integer that is monotonically increasing. In cases where\n * it is identical to the `ref.head.name`, it **SHOULD** still be included.\n * It is up to the implementer to decide which value to set as the\n * revision based on the VCS system and situational context.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_HEAD_REVISION = 'vcs.ref.head.revision' as const;\n\n/**\n * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.\n *\n * @example branch\n * @example tag\n *\n * @note `head` refers to where you are right now; the current reference at a\n * given time.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_HEAD_TYPE = 'vcs.ref.head.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_HEAD_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_HEAD_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.\n *\n * @example branch\n * @example tag\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_TYPE = 'vcs.ref.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REF_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REF_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * Deprecated, use `vcs.change.id` instead.\n *\n * @example 123\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 `vcs.change.id`.\n */\nexport const ATTR_VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id' as const;\n\n/**\n * Deprecated, use `vcs.change.title` instead.\n *\n * @example Fixes broken thing\n * @example feat: add my new feature\n * @example [chore] update dependency\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 `vcs.change.title`.\n */\nexport const ATTR_VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title' as const;\n\n/**\n * The human readable name of the repository. It **SHOULD NOT** include any additional identifier like Group/SubGroup in GitLab or organization in GitHub.\n *\n * @example semantic-conventions\n * @example my-cool-repo\n *\n * @note Due to it only being the name, it can clash with forks of the same\n * repository if collecting telemetry across multiple orgs or groups in\n * the same backends.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_NAME = 'vcs.repository.name' as const;\n\n/**\n * Deprecated, use `vcs.ref.head.name` instead.\n *\n * @example my-feature-branch\n * @example tag-1-test\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 `vcs.ref.head.name`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name' as const;\n\n/**\n * Deprecated, use `vcs.ref.head.revision` instead.\n *\n * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc\n * @example main\n * @example 123\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 `vcs.ref.head.revision`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision' as const;\n\n/**\n * Deprecated, use `vcs.ref.head.type` instead.\n *\n * @example branch\n * @example tag\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 `vcs.ref.head.type`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_TYPE = 'vcs.repository.ref.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REPOSITORY_REF_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * The [canonical URL](https://support.google.com/webmasters/answer/10347851) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser.\n *\n * @example https://github.com/opentelemetry/open-telemetry-collector-contrib\n * @example https://gitlab.com/my-org/my-project/my-projects-project/repo\n *\n * @note In Git Version Control Systems, the canonical URL **SHOULD NOT** include\n * the `.git` extension.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_URL_FULL = 'vcs.repository.url.full' as const;\n\n/**\n * The type of revision comparison.\n *\n * @example ahead\n * @example behind\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REVISION_DELTA_DIRECTION = 'vcs.revision_delta.direction' as const;\n\n/**\n * Enum value \"ahead\" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}.\n *\n * How many revisions the change is ahead of the target ref.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD = \"ahead\" as const;\n\n/**\n * Enum value \"behind\" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}.\n *\n * How many revisions the change is behind the target ref.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND = \"behind\" as const;\n\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 */\nexport const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description' as const;\n\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 */\nexport const ATTR_WEBENGINE_NAME = 'webengine.name' as const;\n\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 */\nexport const ATTR_WEBENGINE_VERSION = 'webengine.version' as const;\n\n/**\n * The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis.\n *\n * @example SYS1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ZOS_SMF_ID = 'zos.smf.id' as const;\n\n/**\n * The name of the SYSPLEX to which the z/OS system belongs too.\n *\n * @example SYSPLEX1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ZOS_SYSPLEX_NAME = 'zos.sysplex.name' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.d.ts new file mode 100644 index 0000000..8339e9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.d.ts @@ -0,0 +1,142 @@ +/** + * This event indicates that the application has detected substandard UI rendering performance. + * + * @note Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_APP_JANK: "app.jank"; +/** + * This event represents an instantaneous click on the screen of an application. + * + * @note The `app.screen.click` event can be used to indicate that a user has clicked or tapped on the screen portion of an application. Clicks outside of an application's active area **SHOULD NOT** generate this event. This event does not differentiate between touch/mouse down and touch/mouse up. Implementations **SHOULD** give preference to generating this event at the time the click is complete, typically on touch release or mouse up. The location of the click event **MUST** be provided in absolute screen pixels. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_APP_SCREEN_CLICK: "app.screen.click"; +/** + * This event indicates that an application widget has been clicked. + * + * @note Use this event to indicate that visual application component has been clicked, typically through a user's manual interaction. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_APP_WIDGET_CLICK: "app.widget.click"; +/** + * Deprecated. Use `azure.resource.log` instead. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource.log`. + */ +export declare const EVENT_AZ_RESOURCE_LOG: "az.resource.log"; +/** + * Describes Azure Resource Log event, see [Azure Resource Log Top-level Schema](https://learn.microsoft.com/azure/azure-monitor/essentials/resource-logs-schema#top-level-common-schema) for more details. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_AZURE_RESOURCE_LOG: "azure.resource.log"; +/** + * This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals). + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_BROWSER_WEB_VITAL: "browser.web_vital"; +/** + * This event represents an occurrence of a lifecycle transition on Android or iOS platform. + * + * @note The event body fields **MUST** be used to describe the state of the application at the time of the event. + * This event is meant to be used in conjunction with `os.name` [resource semantic convention](/docs/resource/os.md) to identify the mobile operating system (e.g. Android, iOS). + * The `android.app.state` and `ios.app.state` fields are mutually exclusive and **MUST NOT** be used together, each field **MUST** be used with its corresponding `os.name` value. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_DEVICE_APP_LIFECYCLE: "device.app.lifecycle"; +/** + * Defines feature flag evaluation as an event. + * + * @note A `feature_flag.evaluation` event **SHOULD** be emitted whenever a feature flag value is evaluated, which may happen many times over the course of an application lifecycle. For example, a website A/B testing different animations may evaluate a flag each time a button is clicked. A `feature_flag.evaluation` event is emitted on each evaluation even if the result is the same. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_FEATURE_FLAG_EVALUATION: "feature_flag.evaluation"; +/** + * This event describes the assistant message passed to GenAI system. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_ASSISTANT_MESSAGE: "gen_ai.assistant.message"; +/** + * This event describes the Gen AI response message. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.output.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_CHOICE: "gen_ai.choice"; +/** + * Describes the details of a GenAI completion request including chat history and parameters. + * + * @note This event is opt-in and could be used to store input and output details independently from traces. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS: "gen_ai.client.inference.operation.details"; +/** + * This event captures the result of evaluating GenAI output for quality, accuracy, or other characteristics. This event **SHOULD** be parented to GenAI operation span being evaluated when possible or set `gen_ai.response.id` when span id is not available. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_GEN_AI_EVALUATION_RESULT: "gen_ai.evaluation.result"; +/** + * This event describes the system instructions passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.system_instructions` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_SYSTEM_MESSAGE: "gen_ai.system.message"; +/** + * This event describes the response from a tool or function call passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_TOOL_MESSAGE: "gen_ai.tool.message"; +/** + * This event describes the user message passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_USER_MESSAGE: "gen_ai.user.message"; +/** + * Describes a message sent or received within the context of an RPC call. + * + * @note In the lifetime of an RPC stream, an event for each message sent/received on client and server spans **SHOULD** be created. In case of unary calls message events **SHOULD NOT** be recorded. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_RPC_MESSAGE: "rpc.message"; +/** + * Indicates that a session has ended. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.end` event **SHOULD** be emitted every time a session ends. When a session ends and continues as a new session, this event **SHOULD** be emitted prior to the `session.start` event. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_SESSION_END: "session.end"; +/** + * Indicates that a new session has been started, optionally linking to the prior session. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.start` event **MUST** be emitted every time a session is created. When a new session is created as a continuation of a prior session, the `session.previous_id` **SHOULD** be included in the event. The values of `session.id` and `session.previous_id` **MUST** be different. + * When the `session.start` event contains both `session.id` and `session.previous_id` fields, the event indicates that the previous session has ended. If the session ID in `session.previous_id` has not yet ended via explicit `session.end` event, then the consumer **SHOULD** treat this continuation event as semantically equivalent to `session.end(session.previous_id)` and `session.start(session.id)`. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_SESSION_START: "session.start"; +//# sourceMappingURL=experimental_events.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js new file mode 100644 index 0000000..091a7f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js @@ -0,0 +1,160 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//----------------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-experimental/events.ts.j2 +//----------------------------------------------------------------------------------------------------------------- +/** + * This event indicates that the application has detected substandard UI rendering performance. + * + * @note Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_APP_JANK = 'app.jank'; +/** + * This event represents an instantaneous click on the screen of an application. + * + * @note The `app.screen.click` event can be used to indicate that a user has clicked or tapped on the screen portion of an application. Clicks outside of an application's active area **SHOULD NOT** generate this event. This event does not differentiate between touch/mouse down and touch/mouse up. Implementations **SHOULD** give preference to generating this event at the time the click is complete, typically on touch release or mouse up. The location of the click event **MUST** be provided in absolute screen pixels. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_APP_SCREEN_CLICK = 'app.screen.click'; +/** + * This event indicates that an application widget has been clicked. + * + * @note Use this event to indicate that visual application component has been clicked, typically through a user's manual interaction. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_APP_WIDGET_CLICK = 'app.widget.click'; +/** + * Deprecated. Use `azure.resource.log` instead. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource.log`. + */ +export const EVENT_AZ_RESOURCE_LOG = 'az.resource.log'; +/** + * Describes Azure Resource Log event, see [Azure Resource Log Top-level Schema](https://learn.microsoft.com/azure/azure-monitor/essentials/resource-logs-schema#top-level-common-schema) for more details. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_AZURE_RESOURCE_LOG = 'azure.resource.log'; +/** + * This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals). + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_BROWSER_WEB_VITAL = 'browser.web_vital'; +/** + * This event represents an occurrence of a lifecycle transition on Android or iOS platform. + * + * @note The event body fields **MUST** be used to describe the state of the application at the time of the event. + * This event is meant to be used in conjunction with `os.name` [resource semantic convention](/docs/resource/os.md) to identify the mobile operating system (e.g. Android, iOS). + * The `android.app.state` and `ios.app.state` fields are mutually exclusive and **MUST NOT** be used together, each field **MUST** be used with its corresponding `os.name` value. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_DEVICE_APP_LIFECYCLE = 'device.app.lifecycle'; +/** + * Defines feature flag evaluation as an event. + * + * @note A `feature_flag.evaluation` event **SHOULD** be emitted whenever a feature flag value is evaluated, which may happen many times over the course of an application lifecycle. For example, a website A/B testing different animations may evaluate a flag each time a button is clicked. A `feature_flag.evaluation` event is emitted on each evaluation even if the result is the same. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_FEATURE_FLAG_EVALUATION = 'feature_flag.evaluation'; +/** + * This event describes the assistant message passed to GenAI system. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export const EVENT_GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message'; +/** + * This event describes the Gen AI response message. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.output.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export const EVENT_GEN_AI_CHOICE = 'gen_ai.choice'; +/** + * Describes the details of a GenAI completion request including chat history and parameters. + * + * @note This event is opt-in and could be used to store input and output details independently from traces. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS = 'gen_ai.client.inference.operation.details'; +/** + * This event captures the result of evaluating GenAI output for quality, accuracy, or other characteristics. This event **SHOULD** be parented to GenAI operation span being evaluated when possible or set `gen_ai.response.id` when span id is not available. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_GEN_AI_EVALUATION_RESULT = 'gen_ai.evaluation.result'; +/** + * This event describes the system instructions passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.system_instructions` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export const EVENT_GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message'; +/** + * This event describes the response from a tool or function call passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export const EVENT_GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message'; +/** + * This event describes the user message passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export const EVENT_GEN_AI_USER_MESSAGE = 'gen_ai.user.message'; +/** + * Describes a message sent or received within the context of an RPC call. + * + * @note In the lifetime of an RPC stream, an event for each message sent/received on client and server spans **SHOULD** be created. In case of unary calls message events **SHOULD NOT** be recorded. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_RPC_MESSAGE = 'rpc.message'; +/** + * Indicates that a session has ended. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.end` event **SHOULD** be emitted every time a session ends. When a session ends and continues as a new session, this event **SHOULD** be emitted prior to the `session.start` event. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_SESSION_END = 'session.end'; +/** + * Indicates that a new session has been started, optionally linking to the prior session. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.start` event **MUST** be emitted every time a session is created. When a new session is created as a continuation of a prior session, the `session.previous_id` **SHOULD** be included in the event. The values of `session.id` and `session.previous_id` **MUST** be different. + * When the `session.start` event contains both `session.id` and `session.previous_id` fields, the event indicates that the previous session has ended. If the session ID in `session.previous_id` has not yet ended via explicit `session.end` event, then the consumer **SHOULD** treat this continuation event as semantically equivalent to `session.end(session.previous_id)` and `session.start(session.id)`. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_SESSION_START = 'session.start'; +//# sourceMappingURL=experimental_events.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js.map new file mode 100644 index 0000000..be1e7d0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js.map @@ -0,0 +1 @@ +{"version":3,"file":"experimental_events.js","sourceRoot":"","sources":["../../src/experimental_events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,mHAAmH;AACnH,mHAAmH;AACnH,mHAAmH;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,UAAmB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAA2B,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAA2B,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAA0B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAA6B,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAA4B,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAA+B,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAkC,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAAmC,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAwB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,2CAAoD,CAAC;AAEpH;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAAmC,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAgC,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAA8B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAA8B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAsB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAsB,CAAC;AAExD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-experimental/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------------\n\n/**\n * This event indicates that the application has detected substandard UI rendering performance.\n *\n * @note Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_APP_JANK = 'app.jank' as const;\n\n/**\n * This event represents an instantaneous click on the screen of an application.\n *\n * @note The `app.screen.click` event can be used to indicate that a user has clicked or tapped on the screen portion of an application. Clicks outside of an application's active area **SHOULD NOT** generate this event. This event does not differentiate between touch/mouse down and touch/mouse up. Implementations **SHOULD** give preference to generating this event at the time the click is complete, typically on touch release or mouse up. The location of the click event **MUST** be provided in absolute screen pixels.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_APP_SCREEN_CLICK = 'app.screen.click' as const;\n\n/**\n * This event indicates that an application widget has been clicked.\n *\n * @note Use this event to indicate that visual application component has been clicked, typically through a user's manual interaction.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_APP_WIDGET_CLICK = 'app.widget.click' as const;\n\n/**\n * Deprecated. Use `azure.resource.log` instead.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `azure.resource.log`.\n */\nexport const EVENT_AZ_RESOURCE_LOG = 'az.resource.log' as const;\n\n/**\n * Describes Azure Resource Log event, see [Azure Resource Log Top-level Schema](https://learn.microsoft.com/azure/azure-monitor/essentials/resource-logs-schema#top-level-common-schema) for more details.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_AZURE_RESOURCE_LOG = 'azure.resource.log' as const;\n\n/**\n * This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals).\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_BROWSER_WEB_VITAL = 'browser.web_vital' as const;\n\n/**\n * This event represents an occurrence of a lifecycle transition on Android or iOS platform.\n *\n * @note The event body fields **MUST** be used to describe the state of the application at the time of the event.\n * This event is meant to be used in conjunction with `os.name` [resource semantic convention](/docs/resource/os.md) to identify the mobile operating system (e.g. Android, iOS).\n * The `android.app.state` and `ios.app.state` fields are mutually exclusive and **MUST NOT** be used together, each field **MUST** be used with its corresponding `os.name` value.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_DEVICE_APP_LIFECYCLE = 'device.app.lifecycle' as const;\n\n/**\n * Defines feature flag evaluation as an event.\n *\n * @note A `feature_flag.evaluation` event **SHOULD** be emitted whenever a feature flag value is evaluated, which may happen many times over the course of an application lifecycle. For example, a website A/B testing different animations may evaluate a flag each time a button is clicked. A `feature_flag.evaluation` event is emitted on each evaluation even if the result is the same.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_FEATURE_FLAG_EVALUATION = 'feature_flag.evaluation' as const;\n\n/**\n * This event describes the assistant message passed to GenAI system.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message' as const;\n\n/**\n * This event describes the Gen AI response message.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.output.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_CHOICE = 'gen_ai.choice' as const;\n\n/**\n * Describes the details of a GenAI completion request including chat history and parameters.\n *\n * @note This event is opt-in and could be used to store input and output details independently from traces.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS = 'gen_ai.client.inference.operation.details' as const;\n\n/**\n * This event captures the result of evaluating GenAI output for quality, accuracy, or other characteristics. This event **SHOULD** be parented to GenAI operation span being evaluated when possible or set `gen_ai.response.id` when span id is not available.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_GEN_AI_EVALUATION_RESULT = 'gen_ai.evaluation.result' as const;\n\n/**\n * This event describes the system instructions passed to the GenAI model.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.system_instructions` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message' as const;\n\n/**\n * This event describes the response from a tool or function call passed to the GenAI model.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message' as const;\n\n/**\n * This event describes the user message passed to the GenAI model.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_USER_MESSAGE = 'gen_ai.user.message' as const;\n\n/**\n * Describes a message sent or received within the context of an RPC call.\n *\n * @note In the lifetime of an RPC stream, an event for each message sent/received on client and server spans **SHOULD** be created. In case of unary calls message events **SHOULD NOT** be recorded.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_RPC_MESSAGE = 'rpc.message' as const;\n\n/**\n * Indicates that a session has ended.\n *\n * @note For instrumentation that tracks user behavior during user sessions, a `session.end` event **SHOULD** be emitted every time a session ends. When a session ends and continues as a new session, this event **SHOULD** be emitted prior to the `session.start` event.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_SESSION_END = 'session.end' as const;\n\n/**\n * Indicates that a new session has been started, optionally linking to the prior session.\n *\n * @note For instrumentation that tracks user behavior during user sessions, a `session.start` event **MUST** be emitted every time a session is created. When a new session is created as a continuation of a prior session, the `session.previous_id` **SHOULD** be included in the event. The values of `session.id` and `session.previous_id` **MUST** be different.\n * When the `session.start` event contains both `session.id` and `session.previous_id` fields, the event indicates that the previous session has ended. If the session ID in `session.previous_id` has not yet ended via explicit `session.end` event, then the consumer **SHOULD** treat this continuation event as semantically equivalent to `session.end(session.previous_id)` and `session.start(session.id)`.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_SESSION_START = 'session.start' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.d.ts new file mode 100644 index 0000000..68964a0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.d.ts @@ -0,0 +1,3647 @@ +/** + * The authentication duration for a request. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_AUTHENTICATE_DURATION: "aspnetcore.authentication.authenticate.duration"; +/** + * The total number of times a scheme is challenged. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_CHALLENGES: "aspnetcore.authentication.challenges"; +/** + * The total number of times an authenticated user attempts to access a resource they are not permitted to access. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_FORBIDS: "aspnetcore.authentication.forbids"; +/** + * The total number of times a principal is signed in with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_INS: "aspnetcore.authentication.sign_ins"; +/** + * The total number of times a principal is signed out with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_OUTS: "aspnetcore.authentication.sign_outs"; +/** + * The total number of authorization attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Authorization`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHORIZATION_ATTEMPTS: "aspnetcore.authorization.attempts"; +/** + * The duration of authenticate attempts. The authenticate metrics is recorded by sign in methods such as PasswordSignInAsync and TwoFactorSignInAsync. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_AUTHENTICATE_DURATION: "aspnetcore.identity.sign_in.authenticate.duration"; +/** + * The total number of check password attempts. Checks that the account is in a state that can log in and that the password is valid using the UserManager.CheckPasswordAsync method. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_CHECK_PASSWORD_ATTEMPTS: "aspnetcore.identity.sign_in.check_password_attempts"; +/** + * The total number of calls to sign in user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_INS: "aspnetcore.identity.sign_in.sign_ins"; +/** + * The total number of calls to sign out user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_OUTS: "aspnetcore.identity.sign_in.sign_outs"; +/** + * The total number of two factor clients forgotten. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_FORGOTTEN: "aspnetcore.identity.sign_in.two_factor_clients_forgotten"; +/** + * The total number of two factor clients remembered. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_REMEMBERED: "aspnetcore.identity.sign_in.two_factor_clients_remembered"; +/** + * The number of check password attempts. Only checks whether the password is valid and not whether the user account is in a state that can log in. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_CHECK_PASSWORD_ATTEMPTS: "aspnetcore.identity.user.check_password_attempts"; +/** + * The duration of user creation operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_CREATE_DURATION: "aspnetcore.identity.user.create.duration"; +/** + * The duration of user deletion operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_DELETE_DURATION: "aspnetcore.identity.user.delete.duration"; +/** + * The total number of token generations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_GENERATED_TOKENS: "aspnetcore.identity.user.generated_tokens"; +/** + * The duration of user update operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_UPDATE_DURATION: "aspnetcore.identity.user.update.duration"; +/** + * The total number of token verification attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_VERIFY_TOKEN_ATTEMPTS: "aspnetcore.identity.user.verify_token_attempts"; +/** + * Total number of bytes allocated by the memory pool. Allocation occurs when a memory rental request exceeds the available pooled memory. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_ALLOCATED: "aspnetcore.memory_pool.allocated"; +/** + * Total number of bytes evicted from the memory pool. Eviction occurs when idle pooled memory is reclaimed. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_EVICTED: "aspnetcore.memory_pool.evicted"; +/** + * Number of bytes currently pooled and available for reuse. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_POOLED: "aspnetcore.memory_pool.pooled"; +/** + * Total number of bytes rented from the memory pool. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_RENTED: "aspnetcore.memory_pool.rented"; +/** + * Number of active client instances. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_AZURE_COSMOSDB_CLIENT_ACTIVE_INSTANCE_COUNT: "azure.cosmosdb.client.active_instance.count"; +/** + * [Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_AZURE_COSMOSDB_CLIENT_OPERATION_REQUEST_CHARGE: "azure.cosmosdb.client.operation.request_charge"; +/** + * The number of pipeline runs currently active in the system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_PIPELINE_RUN_ACTIVE: "cicd.pipeline.run.active"; +/** + * Duration of a pipeline run grouped by pipeline, state and result. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_PIPELINE_RUN_DURATION: "cicd.pipeline.run.duration"; +/** + * The number of errors encountered in pipeline runs (eg. compile, test failures). + * + * @note There might be errors in a pipeline run that are non fatal (eg. they are suppressed) or in a parallel stage multiple stages could have a fatal error. + * This means that this error count might not be the same as the count of metric `cicd.pipeline.run.duration` with run result `failure`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_PIPELINE_RUN_ERRORS: "cicd.pipeline.run.errors"; +/** + * The number of errors in a component of the CICD system (eg. controller, scheduler, agent). + * + * @note Errors in pipeline run execution are explicitly excluded. Ie a test failure is not counted in this metric. + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_SYSTEM_ERRORS: "cicd.system.errors"; +/** + * The number of workers on the CICD system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_WORKER_COUNT: "cicd.worker.count"; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific container on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_CPU_TIME: "container.cpu.time"; +/** + * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific container on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_CPU_USAGE: "container.cpu.usage"; +/** + * Disk bytes for the container. + * + * @note The total number of bytes read/written successfully (aggregated from all disks). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_DISK_IO: "container.disk.io"; +/** + * Container filesystem available bytes. + * + * @note In K8s, this metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_FILESYSTEM_AVAILABLE: "container.filesystem.available"; +/** + * Container filesystem capacity. + * + * @note In K8s, this metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_FILESYSTEM_CAPACITY: "container.filesystem.capacity"; +/** + * Container filesystem usage. + * + * @note This may not equal capacity - available. + * + * In K8s, this metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_FILESYSTEM_USAGE: "container.filesystem.usage"; +/** + * Container memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and by subtracting the `container_memory_working_set_bytes` metric from the `container_spec_memory_limit_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_AVAILABLE: "container.memory.available"; +/** + * Container memory paging faults. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_failures_total{failure_type=pgfault, scope=container}` and `container_memory_failures_total{failure_type=pgmajfault, scope=container}`metric. + * In K8s, this metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_PAGING_FAULTS: "container.memory.paging.faults"; +/** + * Container memory RSS. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_rss` metric. + * In K8s, this metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_RSS: "container.memory.rss"; +/** + * Memory usage of the container. + * + * @note Memory usage of the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_USAGE: "container.memory.usage"; +/** + * Container memory working set. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_working_set_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_WORKING_SET: "container.memory.working_set"; +/** + * Network bytes for the container. + * + * @note The number of bytes sent/received on all network interfaces by the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_NETWORK_IO: "container.network.io"; +/** + * The time the container has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_UPTIME: "container.uptime"; +/** + * Deprecated. Use `system.cpu.frequency` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.frequency`. + */ +export declare const METRIC_CPU_FREQUENCY: "cpu.frequency"; +/** + * Deprecated. Use `system.cpu.time` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.time`. + */ +export declare const METRIC_CPU_TIME: "cpu.time"; +/** + * Deprecated. Use `system.cpu.utilization` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.utilization`. + */ +export declare const METRIC_CPU_UTILIZATION: "cpu.utilization"; +/** + * The total number of objects collected inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CPYTHON_GC_COLLECTED_OBJECTS: "cpython.gc.collected_objects"; +/** + * The number of times a generation was collected since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CPYTHON_GC_COLLECTIONS: "cpython.gc.collections"; +/** + * The total number of objects which were found to be uncollectable inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CPYTHON_GC_UNCOLLECTABLE_OBJECTS: "cpython.gc.uncollectable_objects"; +/** + * The number of connections that are currently in state described by the `state` attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_COUNT: "db.client.connection.count"; +/** + * The time it took to create a new connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_CREATE_TIME: "db.client.connection.create_time"; +/** + * The maximum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_IDLE_MAX: "db.client.connection.idle.max"; +/** + * The minimum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_IDLE_MIN: "db.client.connection.idle.min"; +/** + * The maximum number of open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_MAX: "db.client.connection.max"; +/** + * The number of current pending requests for an open connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS: "db.client.connection.pending_requests"; +/** + * The number of connection timeouts that have occurred trying to obtain a connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_TIMEOUTS: "db.client.connection.timeouts"; +/** + * The time between borrowing a connection and returning it to the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_USE_TIME: "db.client.connection.use_time"; +/** + * The time it took to obtain an open connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_WAIT_TIME: "db.client.connection.wait_time"; +/** + * Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.create_time` with unit `s`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME: "db.client.connections.create_time"; +/** + * Deprecated, use `db.client.connection.idle.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.max`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MAX: "db.client.connections.idle.max"; +/** + * Deprecated, use `db.client.connection.idle.min` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.min`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MIN: "db.client.connections.idle.min"; +/** + * Deprecated, use `db.client.connection.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.max`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_MAX: "db.client.connections.max"; +/** + * Deprecated, use `db.client.connection.pending_requests` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pending_requests`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS: "db.client.connections.pending_requests"; +/** + * Deprecated, use `db.client.connection.timeouts` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.timeouts`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_TIMEOUTS: "db.client.connections.timeouts"; +/** + * Deprecated, use `db.client.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.count`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_USAGE: "db.client.connections.usage"; +/** + * Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.use_time` with unit `s`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_USE_TIME: "db.client.connections.use_time"; +/** + * Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.wait_time` with unit `s`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME: "db.client.connections.wait_time"; +/** + * Deprecated, use `azure.cosmosdb.client.active_instance.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.active_instance.count`. + */ +export declare const METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT: "db.client.cosmosdb.active_instance.count"; +/** + * Deprecated, use `azure.cosmosdb.client.operation.request_charge` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.operation.request_charge`. + */ +export declare const METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE: "db.client.cosmosdb.operation.request_charge"; +/** + * The actual number of records returned by the database operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS: "db.client.response.returned_rows"; +/** + * Measures the time taken to perform a DNS lookup. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DNS_LOOKUP_DURATION: "dns.lookup.duration"; +/** + * Number of invocation cold starts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_COLDSTARTS: "faas.coldstarts"; +/** + * Distribution of CPU usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_CPU_USAGE: "faas.cpu_usage"; +/** + * Number of invocation errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_ERRORS: "faas.errors"; +/** + * Measures the duration of the function's initialization, such as a cold start. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_INIT_DURATION: "faas.init_duration"; +/** + * Number of successful invocations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_INVOCATIONS: "faas.invocations"; +/** + * Measures the duration of the function's logic execution. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_INVOKE_DURATION: "faas.invoke_duration"; +/** + * Distribution of max memory usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_MEM_USAGE: "faas.mem_usage"; +/** + * Distribution of net I/O usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_NET_IO: "faas.net_io"; +/** + * Number of invocation timeouts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_TIMEOUTS: "faas.timeouts"; +/** + * GenAI operation duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_CLIENT_OPERATION_DURATION: "gen_ai.client.operation.duration"; +/** + * Number of input and output tokens used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_CLIENT_TOKEN_USAGE: "gen_ai.client.token.usage"; +/** + * Generative AI server request duration such as time-to-last byte or last output token. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_SERVER_REQUEST_DURATION: "gen_ai.server.request.duration"; +/** + * Time per output token generated after the first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN: "gen_ai.server.time_per_output_token"; +/** + * Time to generate first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_SERVER_TIME_TO_FIRST_TOKEN: "gen_ai.server.time_to_first_token"; +/** + * Heap size target percentage configured by the user, otherwise 100. + * + * @note The value range is [0.0,100.0]. Computed from `/gc/gogc:percent`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_CONFIG_GOGC: "go.config.gogc"; +/** + * Count of live goroutines. + * + * @note Computed from `/sched/goroutines:goroutines`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_GOROUTINE_COUNT: "go.goroutine.count"; +/** + * Memory allocated to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_ALLOCATED: "go.memory.allocated"; +/** + * Count of allocations to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:objects`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_ALLOCATIONS: "go.memory.allocations"; +/** + * Heap size target for the end of the GC cycle. + * + * @note Computed from `/gc/heap/goal:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_GC_GOAL: "go.memory.gc.goal"; +/** + * Go runtime memory limit configured by the user, if a limit exists. + * + * @note Computed from `/gc/gomemlimit:bytes`. This metric is excluded if the limit obtained from the Go runtime is math.MaxInt64. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_LIMIT: "go.memory.limit"; +/** + * Memory used by the Go runtime. + * + * @note Computed from `(/memory/classes/total:bytes - /memory/classes/heap/released:bytes)`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_USED: "go.memory.used"; +/** + * The number of OS threads that can execute user-level Go code simultaneously. + * + * @note Computed from `/sched/gomaxprocs:threads`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_PROCESSOR_LIMIT: "go.processor.limit"; +/** + * The time goroutines have spent in the scheduler in a runnable state before actually running. + * + * @note Computed from `/sched/latencies:seconds`. Bucket boundaries are provided by the runtime, and are subject to change. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_SCHEDULE_DURATION: "go.schedule.duration"; +/** + * Number of active HTTP requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_ACTIVE_REQUESTS: "http.client.active_requests"; +/** + * The duration of the successfully established outbound HTTP connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_CONNECTION_DURATION: "http.client.connection.duration"; +/** + * Number of outbound HTTP connections that are currently active or idle on the client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_OPEN_CONNECTIONS: "http.client.open_connections"; +/** + * Size of HTTP client request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_REQUEST_BODY_SIZE: "http.client.request.body.size"; +/** + * Size of HTTP client response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE: "http.client.response.body.size"; +/** + * Number of active HTTP server requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_SERVER_ACTIVE_REQUESTS: "http.server.active_requests"; +/** + * Size of HTTP server request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_SERVER_REQUEST_BODY_SIZE: "http.server.request.body.size"; +/** + * Size of HTTP server response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_SERVER_RESPONSE_BODY_SIZE: "http.server.response.body.size"; +/** + * Remaining fraction of battery charge. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_BATTERY_CHARGE: "hw.battery.charge"; +/** + * Lower limit of battery charge fraction to ensure proper operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_BATTERY_CHARGE_LIMIT: "hw.battery.charge.limit"; +/** + * Time left before battery is completely charged or discharged. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_BATTERY_TIME_LEFT: "hw.battery.time_left"; +/** + * CPU current frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_CPU_SPEED: "hw.cpu.speed"; +/** + * CPU maximum frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_CPU_SPEED_LIMIT: "hw.cpu.speed.limit"; +/** + * Energy consumed by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_ENERGY: "hw.energy"; +/** + * Number of errors encountered by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_ERRORS: "hw.errors"; +/** + * Fan speed in revolutions per minute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_FAN_SPEED: "hw.fan.speed"; +/** + * Speed limit in rpm. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_FAN_SPEED_LIMIT: "hw.fan.speed.limit"; +/** + * Fan speed expressed as a fraction of its maximum speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_FAN_SPEED_RATIO: "hw.fan.speed_ratio"; +/** + * Received and transmitted bytes by the GPU. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_IO: "hw.gpu.io"; +/** + * Size of the GPU memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_MEMORY_LIMIT: "hw.gpu.memory.limit"; +/** + * GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_MEMORY_USAGE: "hw.gpu.memory.usage"; +/** + * Fraction of GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_MEMORY_UTILIZATION: "hw.gpu.memory.utilization"; +/** + * Fraction of time spent in a specific task. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_UTILIZATION: "hw.gpu.utilization"; +/** + * Ambient (external) temperature of the physical host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_AMBIENT_TEMPERATURE: "hw.host.ambient_temperature"; +/** + * Total energy consumed by the entire physical host, in joules. + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_ENERGY: "hw.host.energy"; +/** + * By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_HEATING_MARGIN: "hw.host.heating_margin"; +/** + * Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred). + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_POWER: "hw.host.power"; +/** + * Size of the logical disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_LOGICAL_DISK_LIMIT: "hw.logical_disk.limit"; +/** + * Logical disk space usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_LOGICAL_DISK_USAGE: "hw.logical_disk.usage"; +/** + * Logical disk space utilization as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_LOGICAL_DISK_UTILIZATION: "hw.logical_disk.utilization"; +/** + * Size of the memory module. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_MEMORY_SIZE: "hw.memory.size"; +/** + * Link speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_BANDWIDTH_LIMIT: "hw.network.bandwidth.limit"; +/** + * Utilization of the network bandwidth as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_BANDWIDTH_UTILIZATION: "hw.network.bandwidth.utilization"; +/** + * Received and transmitted network traffic in bytes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_IO: "hw.network.io"; +/** + * Received and transmitted network traffic in packets (or frames). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_PACKETS: "hw.network.packets"; +/** + * Link status: `1` (up) or `0` (down). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_UP: "hw.network.up"; +/** + * Endurance remaining for this SSD disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_PHYSICAL_DISK_ENDURANCE_UTILIZATION: "hw.physical_disk.endurance_utilization"; +/** + * Size of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_PHYSICAL_DISK_SIZE: "hw.physical_disk.size"; +/** + * Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_PHYSICAL_DISK_SMART: "hw.physical_disk.smart"; +/** + * Instantaneous power consumed by the component. + * + * @note It is recommended to report `hw.energy` instead of `hw.power` when possible. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER: "hw.power"; +/** + * Maximum power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER_SUPPLY_LIMIT: "hw.power_supply.limit"; +/** + * Current power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER_SUPPLY_USAGE: "hw.power_supply.usage"; +/** + * Utilization of the power supply as a fraction of its maximum output. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER_SUPPLY_UTILIZATION: "hw.power_supply.utilization"; +/** + * Operational status: `1` (true) or `0` (false) for each of the possible states. + * + * @note `hw.status` is currently specified as an *UpDownCounter* but would ideally be represented using a [*StateSet* as defined in OpenMetrics](https://github.com/prometheus/OpenMetrics/blob/v1.0.0/specification/OpenMetrics.md#stateset). This semantic convention will be updated once *StateSet* is specified in OpenTelemetry. This planned change is not expected to have any consequence on the way users query their timeseries backend to retrieve the values of `hw.status` over time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_STATUS: "hw.status"; +/** + * Operations performed by the tape drive. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_TAPE_DRIVE_OPERATIONS: "hw.tape_drive.operations"; +/** + * Temperature in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_TEMPERATURE: "hw.temperature"; +/** + * Temperature limit in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_TEMPERATURE_LIMIT: "hw.temperature.limit"; +/** + * Voltage measured by the sensor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_VOLTAGE: "hw.voltage"; +/** + * Voltage limit in Volts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_VOLTAGE_LIMIT: "hw.voltage.limit"; +/** + * Nominal (expected) voltage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_VOLTAGE_NOMINAL: "hw.voltage.nominal"; +/** + * Number of buffers in the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_BUFFER_COUNT: "jvm.buffer.count"; +/** + * Measure of total memory capacity of buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_BUFFER_MEMORY_LIMIT: "jvm.buffer.memory.limit"; +/** + * Deprecated, use `jvm.buffer.memory.used` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jvm.buffer.memory.used`. + */ +export declare const METRIC_JVM_BUFFER_MEMORY_USAGE: "jvm.buffer.memory.usage"; +/** + * Measure of memory used by buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_BUFFER_MEMORY_USED: "jvm.buffer.memory.used"; +/** + * Number of open file descriptors as reported by the JVM. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_FILE_DESCRIPTOR_COUNT: "jvm.file_descriptor.count"; +/** + * Measure of initial memory requested. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_MEMORY_INIT: "jvm.memory.init"; +/** + * Average CPU load of the whole system for the last minute as reported by the JVM. + * + * @note The value range is [0,n], where n is the number of CPU cores - or a negative number if the value is not available. 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/java.management/java/lang/management/OperatingSystemMXBean.html#getSystemLoadAverage()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_SYSTEM_CPU_LOAD_1M: "jvm.system.cpu.load_1m"; +/** + * Recent CPU utilization for the whole system as reported by the JVM. + * + * @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#getCpuLoad()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_SYSTEM_CPU_UTILIZATION: "jvm.system.cpu.utilization"; +/** + * Maximum CPU resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_LIMIT: "k8s.container.cpu.limit"; +/** + * The ratio of container CPU usage to its CPU limit. + * + * @note The value range is [0.0,1.0]. A value of 1.0 means the container is using 100% of its CPU limit. If the CPU limit is not set, this metric **SHOULD NOT** be emitted for that container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION: "k8s.container.cpu.limit_utilization"; +/** + * CPU resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_REQUEST: "k8s.container.cpu.request"; +/** + * The ratio of container CPU usage to its CPU request. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION: "k8s.container.cpu.request_utilization"; +/** + * Maximum ephemeral storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_LIMIT: "k8s.container.ephemeral_storage.limit"; +/** + * Ephemeral storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_REQUEST: "k8s.container.ephemeral_storage.request"; +/** + * Maximum memory resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_MEMORY_LIMIT: "k8s.container.memory.limit"; +/** + * Memory resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_MEMORY_REQUEST: "k8s.container.memory.request"; +/** + * Indicates whether the container is currently marked as ready to accept traffic, based on its readiness probe (1 = ready, 0 = not ready). + * + * @note This metric **SHOULD** reflect the value of the `ready` field in the + * [K8s ContainerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_READY: "k8s.container.ready"; +/** + * Describes how many times the container has restarted (since the last counter reset). + * + * @note This value is pulled directly from the K8s API and the value can go indefinitely high and be reset to 0 + * at any time depending on how your kubelet is configured to prune dead containers. + * It is best to not depend too much on the exact value but rather look at it as + * either == 0, in which case you can conclude there were no restarts in the recent past, or > 0, in which case + * you can conclude there were restarts in the recent past, and not try and analyze the value beyond that. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_RESTART_COUNT: "k8s.container.restart.count"; +/** + * Describes the number of K8s containers that are currently in a state for a given reason. + * + * @note All possible container state reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STATUS_REASON: "k8s.container.status.reason"; +/** + * Describes the number of K8s containers that are currently in a given state. + * + * @note All possible container states will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STATUS_STATE: "k8s.container.status.state"; +/** + * Maximum storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STORAGE_LIMIT: "k8s.container.storage.limit"; +/** + * Storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STORAGE_REQUEST: "k8s.container.storage.request"; +/** + * Deprecated, use `k8s.cronjob.job.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.cronjob.job.active`. + */ +export declare const METRIC_K8S_CRONJOB_ACTIVE_JOBS: "k8s.cronjob.active_jobs"; +/** + * The number of actively running jobs for a cronjob. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CRONJOB_JOB_ACTIVE: "k8s.cronjob.job.active"; +/** + * Deprecated, use `k8s.daemonset.node.current_scheduled` instead. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.current_scheduled`. + */ +export declare const METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES: "k8s.daemonset.current_scheduled_nodes"; +/** + * Deprecated, use `k8s.daemonset.node.desired_scheduled` instead. + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.desired_scheduled`. + */ +export declare const METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES: "k8s.daemonset.desired_scheduled_nodes"; +/** + * Deprecated, use `k8s.daemonset.node.misscheduled` instead. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.misscheduled`. + */ +export declare const METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES: "k8s.daemonset.misscheduled_nodes"; +/** + * Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED: "k8s.daemonset.node.current_scheduled"; +/** + * Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod). + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED: "k8s.daemonset.node.desired_scheduled"; +/** + * Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED: "k8s.daemonset.node.misscheduled"; +/** + * Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_READY: "k8s.daemonset.node.ready"; +/** + * Deprecated, use `k8s.daemonset.node.ready` instead. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.ready`. + */ +export declare const METRIC_K8S_DAEMONSET_READY_NODES: "k8s.daemonset.ready_nodes"; +/** + * Deprecated, use `k8s.deployment.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.available`. + */ +export declare const METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS: "k8s.deployment.available_pods"; +/** + * Deprecated, use `k8s.deployment.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.desired`. + */ +export declare const METRIC_K8S_DEPLOYMENT_DESIRED_PODS: "k8s.deployment.desired_pods"; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DEPLOYMENT_POD_AVAILABLE: "k8s.deployment.pod.available"; +/** + * Number of desired replica pods in this deployment. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DEPLOYMENT_POD_DESIRED: "k8s.deployment.pod.desired"; +/** + * Deprecated, use `k8s.hpa.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.current`. + */ +export declare const METRIC_K8S_HPA_CURRENT_PODS: "k8s.hpa.current_pods"; +/** + * Deprecated, use `k8s.hpa.pod.desired` instead. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.desired`. + */ +export declare const METRIC_K8S_HPA_DESIRED_PODS: "k8s.hpa.desired_pods"; +/** + * Deprecated, use `k8s.hpa.pod.max` instead. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.max`. + */ +export declare const METRIC_K8S_HPA_MAX_PODS: "k8s.hpa.max_pods"; +/** + * Target average utilization, in percentage, for CPU resource in HPA config. + * + * @note This metric aligns with the `averageUtilization` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_UTILIZATION: "k8s.hpa.metric.target.cpu.average_utilization"; +/** + * Target average value for CPU resource in HPA config. + * + * @note This metric aligns with the `averageValue` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_VALUE: "k8s.hpa.metric.target.cpu.average_value"; +/** + * Target value for CPU resource in HPA config. + * + * @note This metric aligns with the `value` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_METRIC_TARGET_CPU_VALUE: "k8s.hpa.metric.target.cpu.value"; +/** + * Deprecated, use `k8s.hpa.pod.min` instead. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.min`. + */ +export declare const METRIC_K8S_HPA_MIN_PODS: "k8s.hpa.min_pods"; +/** + * Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_CURRENT: "k8s.hpa.pod.current"; +/** + * Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_DESIRED: "k8s.hpa.pod.desired"; +/** + * The upper limit for the number of replica pods to which the autoscaler can scale up. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_MAX: "k8s.hpa.pod.max"; +/** + * The lower limit for the number of replica pods to which the autoscaler can scale down. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_MIN: "k8s.hpa.pod.min"; +/** + * Deprecated, use `k8s.job.pod.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.active`. + */ +export declare const METRIC_K8S_JOB_ACTIVE_PODS: "k8s.job.active_pods"; +/** + * Deprecated, use `k8s.job.pod.desired_successful` instead. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.desired_successful`. + */ +export declare const METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS: "k8s.job.desired_successful_pods"; +/** + * Deprecated, use `k8s.job.pod.failed` instead. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.failed`. + */ +export declare const METRIC_K8S_JOB_FAILED_PODS: "k8s.job.failed_pods"; +/** + * Deprecated, use `k8s.job.pod.max_parallel` instead. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.max_parallel`. + */ +export declare const METRIC_K8S_JOB_MAX_PARALLEL_PODS: "k8s.job.max_parallel_pods"; +/** + * The number of pending and actively running pods for a job. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_ACTIVE: "k8s.job.pod.active"; +/** + * The desired number of successfully finished pods the job should be run with. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL: "k8s.job.pod.desired_successful"; +/** + * The number of pods which reached phase Failed for a job. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_FAILED: "k8s.job.pod.failed"; +/** + * The max desired number of pods the job should run at any given time. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_MAX_PARALLEL: "k8s.job.pod.max_parallel"; +/** + * The number of pods which reached phase Succeeded for a job. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_SUCCESSFUL: "k8s.job.pod.successful"; +/** + * Deprecated, use `k8s.job.pod.successful` instead. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.successful`. + */ +export declare const METRIC_K8S_JOB_SUCCESSFUL_PODS: "k8s.job.successful_pods"; +/** + * Describes number of K8s namespaces that are currently in a given phase. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NAMESPACE_PHASE: "k8s.namespace.phase"; +/** + * Deprecated, use `k8s.node.cpu.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.cpu.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_CPU: "k8s.node.allocatable.cpu"; +/** + * Deprecated, use `k8s.node.ephemeral_storage.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.ephemeral_storage.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE: "k8s.node.allocatable.ephemeral_storage"; +/** + * Deprecated, use `k8s.node.memory.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.memory.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_MEMORY: "k8s.node.allocatable.memory"; +/** + * Deprecated, use `k8s.node.pod.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.pod.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_PODS: "k8s.node.allocatable.pods"; +/** + * Describes the condition of a particular Node. + * + * @note All possible node condition pairs (type and status) will be reported at each time interval to avoid missing metrics. Condition pairs corresponding to the current conditions' statuses will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CONDITION_STATUS: "k8s.node.condition.status"; +/** + * Amount of cpu allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CPU_ALLOCATABLE: "k8s.node.cpu.allocatable"; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Node on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CPU_TIME: "k8s.node.cpu.time"; +/** + * Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Node on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CPU_USAGE: "k8s.node.cpu.usage"; +/** + * Amount of ephemeral-storage allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE: "k8s.node.ephemeral_storage.allocatable"; +/** + * Node filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_FILESYSTEM_AVAILABLE: "k8s.node.filesystem.available"; +/** + * Node filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_FILESYSTEM_CAPACITY: "k8s.node.filesystem.capacity"; +/** + * Node filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_FILESYSTEM_USAGE: "k8s.node.filesystem.usage"; +/** + * Amount of memory allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_ALLOCATABLE: "k8s.node.memory.allocatable"; +/** + * Node memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_AVAILABLE: "k8s.node.memory.available"; +/** + * Node memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) fields of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_PAGING_FAULTS: "k8s.node.memory.paging.faults"; +/** + * Node memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_RSS: "k8s.node.memory.rss"; +/** + * Memory usage of the Node. + * + * @note Total memory usage of the Node + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_USAGE: "k8s.node.memory.usage"; +/** + * Node memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_WORKING_SET: "k8s.node.memory.working_set"; +/** + * Node network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_NETWORK_ERRORS: "k8s.node.network.errors"; +/** + * Network bytes for the Node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_NETWORK_IO: "k8s.node.network.io"; +/** + * Amount of pods allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_POD_ALLOCATABLE: "k8s.node.pod.allocatable"; +/** + * The time the Node has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_UPTIME: "k8s.node.uptime"; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Pod on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_CPU_TIME: "k8s.pod.cpu.time"; +/** + * Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Pod on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_CPU_USAGE: "k8s.pod.cpu.usage"; +/** + * Pod filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_FILESYSTEM_AVAILABLE: "k8s.pod.filesystem.available"; +/** + * Pod filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_FILESYSTEM_CAPACITY: "k8s.pod.filesystem.capacity"; +/** + * Pod filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_FILESYSTEM_USAGE: "k8s.pod.filesystem.usage"; +/** + * Pod memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_AVAILABLE: "k8s.pod.memory.available"; +/** + * Pod memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_PAGING_FAULTS: "k8s.pod.memory.paging.faults"; +/** + * Pod memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_RSS: "k8s.pod.memory.rss"; +/** + * Memory usage of the Pod. + * + * @note Total memory usage of the Pod + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_USAGE: "k8s.pod.memory.usage"; +/** + * Pod memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_WORKING_SET: "k8s.pod.memory.working_set"; +/** + * Pod network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_NETWORK_ERRORS: "k8s.pod.network.errors"; +/** + * Network bytes for the Pod. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_NETWORK_IO: "k8s.pod.network.io"; +/** + * Describes number of K8s Pods that are currently in a given phase. + * + * @note All possible pod phases will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current phase will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_STATUS_PHASE: "k8s.pod.status.phase"; +/** + * Describes the number of K8s Pods that are currently in a state for a given reason. + * + * @note All possible pod status reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_STATUS_REASON: "k8s.pod.status.reason"; +/** + * The time the Pod has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_UPTIME: "k8s.pod.uptime"; +/** + * Pod volume storage space available. + * + * @note This metric is derived from the + * [VolumeStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_AVAILABLE: "k8s.pod.volume.available"; +/** + * Pod volume total capacity. + * + * @note This metric is derived from the + * [VolumeStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_CAPACITY: "k8s.pod.volume.capacity"; +/** + * The total inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.Inodes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_INODE_COUNT: "k8s.pod.volume.inode.count"; +/** + * The free inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesFree](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_INODE_FREE: "k8s.pod.volume.inode.free"; +/** + * The inodes used by the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesUsed](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * This may not be equal to `inodes - free` because filesystem may share inodes with other filesystems. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_INODE_USED: "k8s.pod.volume.inode.used"; +/** + * Pod volume usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [VolumeStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_USAGE: "k8s.pod.volume.usage"; +/** + * Deprecated, use `k8s.replicaset.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.available`. + */ +export declare const METRIC_K8S_REPLICASET_AVAILABLE_PODS: "k8s.replicaset.available_pods"; +/** + * Deprecated, use `k8s.replicaset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.desired`. + */ +export declare const METRIC_K8S_REPLICASET_DESIRED_PODS: "k8s.replicaset.desired_pods"; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICASET_POD_AVAILABLE: "k8s.replicaset.pod.available"; +/** + * Number of desired replica pods in this replicaset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICASET_POD_DESIRED: "k8s.replicaset.pod.desired"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +export declare const METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS: "k8s.replication_controller.available_pods"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +export declare const METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS: "k8s.replication_controller.desired_pods"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS: "k8s.replicationcontroller.available_pods"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS: "k8s.replicationcontroller.desired_pods"; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicationControllerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerstatus-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE: "k8s.replicationcontroller.pod.available"; +/** + * Number of desired replica pods in this replication controller. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicationControllerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerspec-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED: "k8s.replicationcontroller.pod.desired"; +/** + * The CPU limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_HARD: "k8s.resourcequota.cpu.limit.hard"; +/** + * The CPU limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_USED: "k8s.resourcequota.cpu.limit.used"; +/** + * The CPU requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_HARD: "k8s.resourcequota.cpu.request.hard"; +/** + * The CPU requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_USED: "k8s.resourcequota.cpu.request.used"; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD: "k8s.resourcequota.ephemeral_storage.limit.hard"; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_USED: "k8s.resourcequota.ephemeral_storage.limit.used"; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD: "k8s.resourcequota.ephemeral_storage.request.hard"; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_USED: "k8s.resourcequota.ephemeral_storage.request.used"; +/** + * The huge page requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_HARD: "k8s.resourcequota.hugepage_count.request.hard"; +/** + * The huge page requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_USED: "k8s.resourcequota.hugepage_count.request.used"; +/** + * The memory limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_HARD: "k8s.resourcequota.memory.limit.hard"; +/** + * The memory limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_USED: "k8s.resourcequota.memory.limit.used"; +/** + * The memory requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_HARD: "k8s.resourcequota.memory.request.hard"; +/** + * The memory requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_USED: "k8s.resourcequota.memory.request.used"; +/** + * The object count limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_HARD: "k8s.resourcequota.object_count.hard"; +/** + * The object count limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_USED: "k8s.resourcequota.object_count.used"; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD: "k8s.resourcequota.persistentvolumeclaim_count.hard"; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED: "k8s.resourcequota.persistentvolumeclaim_count.used"; +/** + * The storage requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_HARD: "k8s.resourcequota.storage.request.hard"; +/** + * The storage requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_USED: "k8s.resourcequota.storage.request.used"; +/** + * Deprecated, use `k8s.statefulset.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.current`. + */ +export declare const METRIC_K8S_STATEFULSET_CURRENT_PODS: "k8s.statefulset.current_pods"; +/** + * Deprecated, use `k8s.statefulset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.desired`. + */ +export declare const METRIC_K8S_STATEFULSET_DESIRED_PODS: "k8s.statefulset.desired_pods"; +/** + * The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_CURRENT: "k8s.statefulset.pod.current"; +/** + * Number of desired replica pods in this statefulset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_DESIRED: "k8s.statefulset.pod.desired"; +/** + * The number of replica pods created for this statefulset with a Ready Condition. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_READY: "k8s.statefulset.pod.ready"; +/** + * Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_UPDATED: "k8s.statefulset.pod.updated"; +/** + * Deprecated, use `k8s.statefulset.pod.ready` instead. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.ready`. + */ +export declare const METRIC_K8S_STATEFULSET_READY_PODS: "k8s.statefulset.ready_pods"; +/** + * Deprecated, use `k8s.statefulset.pod.updated` instead. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.updated`. + */ +export declare const METRIC_K8S_STATEFULSET_UPDATED_PODS: "k8s.statefulset.updated_pods"; +/** + * The duration of the MCP request or notification as observed on the sender from the time it was sent until the response or ack is received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_CLIENT_OPERATION_DURATION: "mcp.client.operation.duration"; +/** + * The duration of the MCP session as observed on the MCP client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_CLIENT_SESSION_DURATION: "mcp.client.session.duration"; +/** + * MCP request or notification duration as observed on the receiver from the time it was received until the result or ack is sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_SERVER_OPERATION_DURATION: "mcp.server.operation.duration"; +/** + * The duration of the MCP session as observed on the MCP server. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_SERVER_SESSION_DURATION: "mcp.server.session.duration"; +/** + * Number of messages that were delivered to the application. + * + * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios. + * 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. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES: "messaging.client.consumed.messages"; +/** + * Duration of messaging operation initiated by a producer or consumer client. + * + * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_OPERATION_DURATION: "messaging.client.operation.duration"; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +export declare const METRIC_MESSAGING_CLIENT_PUBLISHED_MESSAGES: "messaging.client.published.messages"; +/** + * Number of messages producer attempted to send to the broker. + * + * @note This metric **MUST NOT** count messages that were created but haven't yet been sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_SENT_MESSAGES: "messaging.client.sent.messages"; +/** + * Duration of processing operation. + * + * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_PROCESS_DURATION: "messaging.process.duration"; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +export declare const METRIC_MESSAGING_PROCESS_MESSAGES: "messaging.process.messages"; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +export declare const METRIC_MESSAGING_PUBLISH_DURATION: "messaging.publish.duration"; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +export declare const METRIC_MESSAGING_PUBLISH_MESSAGES: "messaging.publish.messages"; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +export declare const METRIC_MESSAGING_RECEIVE_DURATION: "messaging.receive.duration"; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +export declare const METRIC_MESSAGING_RECEIVE_MESSAGES: "messaging.receive.messages"; +/** + * Reports the count of kernel NFS client TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.netudpcnt and svc_stat.nettcpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_NET_COUNT: "nfs.client.net.count"; +/** + * Reports the count of kernel NFS client TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_NET_TCP_CONNECTION_ACCEPTED: "nfs.client.net.tcp.connection.accepted"; +/** + * Reports the count of kernel NFSv4+ client operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_OPERATION_COUNT: "nfs.client.operation.count"; +/** + * Reports the count of kernel NFS client procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_PROCEDURE_COUNT: "nfs.client.procedure.count"; +/** + * Reports the count of kernel NFS client RPC authentication refreshes. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcauthrefresh + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_RPC_AUTHREFRESH_COUNT: "nfs.client.rpc.authrefresh.count"; +/** + * Reports the count of kernel NFS client RPCs sent, regardless of whether they're accepted/rejected by the server. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_RPC_COUNT: "nfs.client.rpc.count"; +/** + * Reports the count of kernel NFS client RPC retransmits. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcretrans + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_RPC_RETRANSMIT_COUNT: "nfs.client.rpc.retransmit.count"; +/** + * Reports the count of kernel NFS server stale file handles. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_FH_STALE counter in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_FH_STALE_COUNT: "nfs.server.fh.stale.count"; +/** + * Reports the count of kernel NFS server bytes returned to receive and transmit (read and write) requests. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_IO_READ and NFSD_STATS_IO_WRITE counters in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_IO: "nfs.server.io"; +/** + * Reports the count of kernel NFS server TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpcnt and svc_stat.netudpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_NET_COUNT: "nfs.server.net.count"; +/** + * Reports the count of kernel NFS server TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_NET_TCP_CONNECTION_ACCEPTED: "nfs.server.net.tcp.connection.accepted"; +/** + * Reports the count of kernel NFSv4+ server operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_OPERATION_COUNT: "nfs.server.operation.count"; +/** + * Reports the count of kernel NFS server procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_PROCEDURE_COUNT: "nfs.server.procedure.count"; +/** + * Reports the kernel NFS server reply cache request count by cache hit status. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_REPCACHE_REQUESTS: "nfs.server.repcache.requests"; +/** + * Reports the count of kernel NFS server RPCs handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt, the count of good RPCs. This metric can have + * an error.type of "format", "auth", or "client" for svc_stat.badfmt, svc_stat.badauth, and svc_stat.badclnt. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_RPC_COUNT: "nfs.server.rpc.count"; +/** + * Reports the count of kernel NFS server available threads. + * + * @note Linux: this metric is taken from the Linux kernel nfsd_th_cnt variable + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_THREAD_COUNT: "nfs.server.thread.count"; +/** + * Event loop maximum delay. + * + * @note Value can be retrieved from value `histogram.max` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_MAX: "nodejs.eventloop.delay.max"; +/** + * Event loop mean delay. + * + * @note Value can be retrieved from value `histogram.mean` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_MEAN: "nodejs.eventloop.delay.mean"; +/** + * Event loop minimum delay. + * + * @note Value can be retrieved from value `histogram.min` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_MIN: "nodejs.eventloop.delay.min"; +/** + * Event loop 50 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(50)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_P50: "nodejs.eventloop.delay.p50"; +/** + * Event loop 90 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(90)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_P90: "nodejs.eventloop.delay.p90"; +/** + * Event loop 99 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(99)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_P99: "nodejs.eventloop.delay.p99"; +/** + * Event loop standard deviation delay. + * + * @note Value can be retrieved from value `histogram.stddev` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_STDDEV: "nodejs.eventloop.delay.stddev"; +/** + * Cumulative duration of time the event loop has been in each state. + * + * @note Value can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_TIME: "nodejs.eventloop.time"; +/** + * Event loop utilization. + * + * @note The value range is [0.0, 1.0] and can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_UTILIZATION: "nodejs.eventloop.utilization"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_HARD: "openshift.clusterquota.cpu.limit.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_USED: "openshift.clusterquota.cpu.limit.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_HARD: "openshift.clusterquota.cpu.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_USED: "openshift.clusterquota.cpu.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD: "openshift.clusterquota.ephemeral_storage.limit.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_USED: "openshift.clusterquota.ephemeral_storage.limit.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD: "openshift.clusterquota.ephemeral_storage.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_USED: "openshift.clusterquota.ephemeral_storage.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_HARD: "openshift.clusterquota.hugepage_count.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_USED: "openshift.clusterquota.hugepage_count.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_HARD: "openshift.clusterquota.memory.limit.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_USED: "openshift.clusterquota.memory.limit.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_HARD: "openshift.clusterquota.memory.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_USED: "openshift.clusterquota.memory.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_HARD: "openshift.clusterquota.object_count.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_USED: "openshift.clusterquota.object_count.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD: "openshift.clusterquota.persistentvolumeclaim_count.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED: "openshift.clusterquota.persistentvolumeclaim_count.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_HARD: "openshift.clusterquota.storage.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_USED: "openshift.clusterquota.storage.request.used"; +/** + * The number of log records for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_log_records`), rejected log records **MUST** count as failed and only non-rejected log records count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_LOG_EXPORTED: "otel.sdk.exporter.log.exported"; +/** + * The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_LOG_INFLIGHT: "otel.sdk.exporter.log.inflight"; +/** + * The number of metric data points for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_data_points`), rejected data points **MUST** count as failed and only non-rejected data points count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_EXPORTED: "otel.sdk.exporter.metric_data_point.exported"; +/** + * The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_INFLIGHT: "otel.sdk.exporter.metric_data_point.inflight"; +/** + * The duration of exporting a batch of telemetry records. + * + * @note This metric defines successful operations using the full success definitions for [http](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1) + * and [grpc](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success). Anything else is defined as an unsuccessful operation. For successful + * operations, `error.type` **MUST NOT** be set. For unsuccessful export operations, `error.type` **MUST** contain a relevant failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_OPERATION_DURATION: "otel.sdk.exporter.operation.duration"; +/** + * The number of spans for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans **MUST** count as failed and only non-rejected spans count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED: "otel.sdk.exporter.span.exported"; +/** + * Deprecated, use `otel.sdk.exporter.span.exported` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.exported`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT: "otel.sdk.exporter.span.exported.count"; +/** + * The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT: "otel.sdk.exporter.span.inflight"; +/** + * Deprecated, use `otel.sdk.exporter.span.inflight` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.inflight`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT: "otel.sdk.exporter.span.inflight.count"; +/** + * The number of logs submitted to enabled SDK Loggers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_LOG_CREATED: "otel.sdk.log.created"; +/** + * The duration of the collect operation of the metric reader. + * + * @note For successful collections, `error.type` **MUST NOT** be set. For failed collections, `error.type` **SHOULD** contain the failure cause. + * It can happen that metrics collection is successful for some MetricProducers, while others fail. In that case `error.type` **SHOULD** be set to any of the failure causes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_METRIC_READER_COLLECTION_DURATION: "otel.sdk.metric_reader.collection.duration"; +/** + * The number of log records for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter, + * not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED: "otel.sdk.processor.log.processed"; +/** + * The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold. + * + * @note Only applies to Log Record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY: "otel.sdk.processor.log.queue.capacity"; +/** + * The number of log records in the queue of a given instance of an SDK log processor. + * + * @note Only applies to log record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE: "otel.sdk.processor.log.queue.size"; +/** + * The number of spans for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED: "otel.sdk.processor.span.processed"; +/** + * Deprecated, use `otel.sdk.processor.span.processed` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.processor.span.processed`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT: "otel.sdk.processor.span.processed.count"; +/** + * The maximum number of spans the queue of a given instance of an SDK span processor can hold. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY: "otel.sdk.processor.span.queue.capacity"; +/** + * The number of spans in the queue of a given instance of an SDK span processor. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE: "otel.sdk.processor.span.queue.size"; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export declare const METRIC_OTEL_SDK_SPAN_ENDED: "otel.sdk.span.ended"; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export declare const METRIC_OTEL_SDK_SPAN_ENDED_COUNT: "otel.sdk.span.ended.count"; +/** + * The number of created spans with `recording=true` for which the end operation has not been called yet. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_SPAN_LIVE: "otel.sdk.span.live"; +/** + * Deprecated, use `otel.sdk.span.live` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.span.live`. + */ +export declare const METRIC_OTEL_SDK_SPAN_LIVE_COUNT: "otel.sdk.span.live.count"; +/** + * The number of created spans. + * + * @note Implementations **MUST** record this metric for all spans, even for non-recording ones. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_SPAN_STARTED: "otel.sdk.span.started"; +/** + * Number of times the process has been context switched. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_CONTEXT_SWITCHES: "process.context_switches"; +/** + * Total CPU seconds broken down by different states. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_CPU_TIME: "process.cpu.time"; +/** + * Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_CPU_UTILIZATION: "process.cpu.utilization"; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_DISK_IO: "process.disk.io"; +/** + * The amount of physical memory in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_MEMORY_USAGE: "process.memory.usage"; +/** + * The amount of committed virtual memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_MEMORY_VIRTUAL: "process.memory.virtual"; +/** + * Network bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_NETWORK_IO: "process.network.io"; +/** + * Deprecated, use `process.unix.file_descriptor.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.unix.file_descriptor.count`. + */ +export declare const METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT: "process.open_file_descriptor.count"; +/** + * Number of page faults the process has made. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_PAGING_FAULTS: "process.paging.faults"; +/** + * Process threads count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_THREAD_COUNT: "process.thread.count"; +/** + * Number of unix file descriptors in use by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT: "process.unix.file_descriptor.count"; +/** + * The time the process has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_UPTIME: "process.uptime"; +/** + * Number of handles held by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_WINDOWS_HANDLE_COUNT: "process.windows.handle.count"; +/** + * Measures the duration of outbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC client span, the metric value + * **SHOULD** be the same as the RPC client span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_CLIENT_CALL_DURATION: "rpc.client.call.duration"; +/** + * Deprecated, use `rpc.client.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.client.call.duration` with unit `s`. + */ +export declare const METRIC_RPC_CLIENT_DURATION: "rpc.client.duration"; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_CLIENT_REQUEST_SIZE: "rpc.client.request.size"; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_CLIENT_REQUESTS_PER_RPC: "rpc.client.requests_per_rpc"; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_CLIENT_RESPONSE_SIZE: "rpc.client.response.size"; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_CLIENT_RESPONSES_PER_RPC: "rpc.client.responses_per_rpc"; +/** + * Measures the duration of inbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC server span, the metric value + * **SHOULD** be the same as the RPC server span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_SERVER_CALL_DURATION: "rpc.server.call.duration"; +/** + * Deprecated, use `rpc.server.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.server.call.duration` with unit `s`. + */ +export declare const METRIC_RPC_SERVER_DURATION: "rpc.server.duration"; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_SERVER_REQUEST_SIZE: "rpc.server.request.size"; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming** : This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_SERVER_REQUESTS_PER_RPC: "rpc.server.requests_per_rpc"; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_SERVER_RESPONSE_SIZE: "rpc.server.response.size"; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_SERVER_RESPONSES_PER_RPC: "rpc.server.responses_per_rpc"; +/** + * Operating frequency of the logical CPU in Hertz. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_FREQUENCY: "system.cpu.frequency"; +/** + * Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_LOGICAL_COUNT: "system.cpu.logical.count"; +/** + * Reports the number of actual physical processor cores on the hardware. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_PHYSICAL_COUNT: "system.cpu.physical.count"; +/** + * Seconds each logical CPU spent on each mode. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_TIME: "system.cpu.time"; +/** + * For each logical CPU, the utilization is calculated as the change in cumulative CPU time (cpu.time) over a measurement interval, divided by the elapsed time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_UTILIZATION: "system.cpu.utilization"; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_IO: "system.disk.io"; +/** + * Time disk spent activated. + * + * @note The real elapsed time ("wall clock") used in the I/O path (time from operations running in parallel are not counted). Measured as: + * + * - Linux: Field 13 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: The complement of + * ["Disk% Idle Time"](https://learn.microsoft.com/archive/blogs/askcore/windows-performance-monitor-disk-counters-explained#windows-performance-monitor-disk-counters-explained) + * performance counter: `uptime * (100 - "Disk\% Idle Time") / 100` + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_IO_TIME: "system.disk.io_time"; +/** + * The total storage capacity of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_LIMIT: "system.disk.limit"; +/** + * The number of disk reads/writes merged into single physical disk access operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_MERGED: "system.disk.merged"; +/** + * Sum of the time each operation took to complete. + * + * @note Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as: + * + * - Linux: Fields 7 & 11 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: "Avg. Disk sec/Read" perf counter multiplied by "Disk Reads/sec" perf counter (similar for Writes) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_OPERATION_TIME: "system.disk.operation_time"; +/** + * Disk operations count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_OPERATIONS: "system.disk.operations"; +/** + * The total storage capacity of the filesystem. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_FILESYSTEM_LIMIT: "system.filesystem.limit"; +/** + * Reports a filesystem's space usage across different states. + * + * @note The sum of all `system.filesystem.usage` values over the different `system.filesystem.state` attributes + * **SHOULD** equal the total storage capacity of the filesystem, that is `system.filesystem.limit`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_FILESYSTEM_USAGE: "system.filesystem.usage"; +/** + * Fraction of filesystem bytes used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_FILESYSTEM_UTILIZATION: "system.filesystem.utilization"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.available`. + */ +export declare const METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE: "system.linux.memory.available"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.usage`. + */ +export declare const METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE: "system.linux.memory.slab.usage"; +/** + * Total virtual memory available in the system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_LIMIT: "system.memory.limit"; +/** + * An estimate of how much memory is available for starting new applications, without causing swapping. + * + * @note This is an alternative to `system.memory.usage` metric with `state=free`. + * Linux starting from 3.14 exports "available" memory. It takes "free" memory as a baseline, and then factors in kernel-specific values. + * This is supposed to be more accurate than just "free" memory. + * For reference, see the calculations [here](https://superuser.com/a/980821). + * See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE: "system.memory.linux.available"; +/** + * Reports the memory used by the Linux kernel for managing caches of frequently used objects. + * + * @note The sum over the `reclaimable` and `unreclaimable` state values in `memory.linux.slab.usage` **SHOULD** be equal to the total slab memory available on the system. + * Note that the total slab memory is not constant and may vary over time. + * See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE: "system.memory.linux.slab.usage"; +/** + * Shared memory used (mostly by tmpfs). + * + * @note Equivalent of `shared` from [`free` command](https://man7.org/linux/man-pages/man1/free.1.html) or + * `Shmem` from [`/proc/meminfo`](https://man7.org/linux/man-pages/man5/proc.5.html)" + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_SHARED: "system.memory.shared"; +/** + * Reports memory in use by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_USAGE: "system.memory.usage"; +/** + * Percentage of memory bytes in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_UTILIZATION: "system.memory.utilization"; +/** + * The number of connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_CONNECTION_COUNT: "system.network.connection.count"; +/** + * Deprecated, use `system.network.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.connection.count`. + */ +export declare const METRIC_SYSTEM_NETWORK_CONNECTIONS: "system.network.connections"; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.dropped`. + */ +export declare const METRIC_SYSTEM_NETWORK_DROPPED: "system.network.dropped"; +/** + * Count of network errors detected. + * + * @note Measured as: + * + * - Linux: the `errs` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)). + * - Windows: [`InErrors`/`OutErrors`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_ERRORS: "system.network.errors"; +/** + * The number of bytes transmitted and received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_IO: "system.network.io"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_PACKET_COUNT: "system.network.packet.count"; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_PACKET_DROPPED: "system.network.packet.dropped"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.count`. + */ +export declare const METRIC_SYSTEM_NETWORK_PACKETS: "system.network.packets"; +/** + * The number of page faults. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_FAULTS: "system.paging.faults"; +/** + * The number of paging operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_OPERATIONS: "system.paging.operations"; +/** + * Unix swap or windows pagefile usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_USAGE: "system.paging.usage"; +/** + * Swap (unix) or pagefile (windows) utilization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_UTILIZATION: "system.paging.utilization"; +/** + * Total number of processes in each state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PROCESS_COUNT: "system.process.count"; +/** + * Total number of processes created over uptime of the host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PROCESS_CREATED: "system.process.created"; +/** + * The time the system has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_UPTIME: "system.uptime"; +/** + * Garbage collection duration. + * + * @note The values can be retrieved from [`perf_hooks.PerformanceObserver(...).observe({ entryTypes: ['gc'] })`](https://nodejs.org/api/perf_hooks.html#performanceobserverobserveoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_GC_DURATION: "v8js.gc.duration"; +/** + * Deprecated, use `v8js.memory.heap.space.available_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.available_size`. + */ +export declare const METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE: "v8js.heap.space.available_size"; +/** + * Deprecated, use `v8js.memory.heap.space.physical_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.physical_size`. + */ +export declare const METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE: "v8js.heap.space.physical_size"; +/** + * Total heap memory size pre-allocated. + * + * @note The value can be retrieved from value `space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_LIMIT: "v8js.memory.heap.limit"; +/** + * Heap space available size. + * + * @note Value can be retrieved from value `space_available_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "v8js.memory.heap.space.available_size"; +/** + * Committed size of a heap space. + * + * @note Value can be retrieved from value `physical_space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "v8js.memory.heap.space.physical_size"; +/** + * Heap Memory size allocated. + * + * @note The value can be retrieved from value `space_used_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_USED: "v8js.memory.heap.used"; +/** + * The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_COUNT: "vcs.change.count"; +/** + * The time duration a change (pull request/merge request/changelist) has been in a given state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_DURATION: "vcs.change.duration"; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_TIME_TO_APPROVAL: "vcs.change.time_to_approval"; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get merged into the target(base) ref. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_TIME_TO_MERGE: "vcs.change.time_to_merge"; +/** + * The number of unique contributors to a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CONTRIBUTOR_COUNT: "vcs.contributor.count"; +/** + * The number of refs of type branch or tag in a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_COUNT: "vcs.ref.count"; +/** + * The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.line_change.type` value. For example if a ref added 3 lines and removed 2 lines, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers). + * If number of lines added/removed should be calculated from the start of time, then `vcs.ref.base.name` **SHOULD** be set to an empty string. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_LINES_DELTA: "vcs.ref.lines_delta"; +/** + * The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.revision_delta.direction` value. For example if branch `a` is 3 commits behind and 2 commits ahead of `trunk`, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers) and `vcs.ref.base.name` is set to `trunk`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_REVISIONS_DELTA: "vcs.ref.revisions_delta"; +/** + * Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_TIME: "vcs.ref.time"; +/** + * The number of repositories in an organization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REPOSITORY_COUNT: "vcs.repository.count"; +//# sourceMappingURL=experimental_metrics.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js new file mode 100644 index 0000000..d2c7a3a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js @@ -0,0 +1,3665 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * The authentication duration for a request. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHENTICATION_AUTHENTICATE_DURATION = 'aspnetcore.authentication.authenticate.duration'; +/** + * The total number of times a scheme is challenged. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHENTICATION_CHALLENGES = 'aspnetcore.authentication.challenges'; +/** + * The total number of times an authenticated user attempts to access a resource they are not permitted to access. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHENTICATION_FORBIDS = 'aspnetcore.authentication.forbids'; +/** + * The total number of times a principal is signed in with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_INS = 'aspnetcore.authentication.sign_ins'; +/** + * The total number of times a principal is signed out with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_OUTS = 'aspnetcore.authentication.sign_outs'; +/** + * The total number of authorization attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Authorization`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHORIZATION_ATTEMPTS = 'aspnetcore.authorization.attempts'; +/** + * The duration of authenticate attempts. The authenticate metrics is recorded by sign in methods such as PasswordSignInAsync and TwoFactorSignInAsync. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_AUTHENTICATE_DURATION = 'aspnetcore.identity.sign_in.authenticate.duration'; +/** + * The total number of check password attempts. Checks that the account is in a state that can log in and that the password is valid using the UserManager.CheckPasswordAsync method. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.sign_in.check_password_attempts'; +/** + * The total number of calls to sign in user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_INS = 'aspnetcore.identity.sign_in.sign_ins'; +/** + * The total number of calls to sign out user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_OUTS = 'aspnetcore.identity.sign_in.sign_outs'; +/** + * The total number of two factor clients forgotten. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_FORGOTTEN = 'aspnetcore.identity.sign_in.two_factor_clients_forgotten'; +/** + * The total number of two factor clients remembered. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_REMEMBERED = 'aspnetcore.identity.sign_in.two_factor_clients_remembered'; +/** + * The number of check password attempts. Only checks whether the password is valid and not whether the user account is in a state that can log in. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.user.check_password_attempts'; +/** + * The duration of user creation operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_CREATE_DURATION = 'aspnetcore.identity.user.create.duration'; +/** + * The duration of user deletion operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_DELETE_DURATION = 'aspnetcore.identity.user.delete.duration'; +/** + * The total number of token generations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_GENERATED_TOKENS = 'aspnetcore.identity.user.generated_tokens'; +/** + * The duration of user update operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_UPDATE_DURATION = 'aspnetcore.identity.user.update.duration'; +/** + * The total number of token verification attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_VERIFY_TOKEN_ATTEMPTS = 'aspnetcore.identity.user.verify_token_attempts'; +/** + * Total number of bytes allocated by the memory pool. Allocation occurs when a memory rental request exceeds the available pooled memory. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_MEMORY_POOL_ALLOCATED = 'aspnetcore.memory_pool.allocated'; +/** + * Total number of bytes evicted from the memory pool. Eviction occurs when idle pooled memory is reclaimed. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_MEMORY_POOL_EVICTED = 'aspnetcore.memory_pool.evicted'; +/** + * Number of bytes currently pooled and available for reuse. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_MEMORY_POOL_POOLED = 'aspnetcore.memory_pool.pooled'; +/** + * Total number of bytes rented from the memory pool. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_MEMORY_POOL_RENTED = 'aspnetcore.memory_pool.rented'; +/** + * Number of active client instances. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_AZURE_COSMOSDB_CLIENT_ACTIVE_INSTANCE_COUNT = 'azure.cosmosdb.client.active_instance.count'; +/** + * [Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_AZURE_COSMOSDB_CLIENT_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.client.operation.request_charge'; +/** + * The number of pipeline runs currently active in the system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CICD_PIPELINE_RUN_ACTIVE = 'cicd.pipeline.run.active'; +/** + * Duration of a pipeline run grouped by pipeline, state and result. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CICD_PIPELINE_RUN_DURATION = 'cicd.pipeline.run.duration'; +/** + * The number of errors encountered in pipeline runs (eg. compile, test failures). + * + * @note There might be errors in a pipeline run that are non fatal (eg. they are suppressed) or in a parallel stage multiple stages could have a fatal error. + * This means that this error count might not be the same as the count of metric `cicd.pipeline.run.duration` with run result `failure`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CICD_PIPELINE_RUN_ERRORS = 'cicd.pipeline.run.errors'; +/** + * The number of errors in a component of the CICD system (eg. controller, scheduler, agent). + * + * @note Errors in pipeline run execution are explicitly excluded. Ie a test failure is not counted in this metric. + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CICD_SYSTEM_ERRORS = 'cicd.system.errors'; +/** + * The number of workers on the CICD system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CICD_WORKER_COUNT = 'cicd.worker.count'; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific container on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_CPU_TIME = 'container.cpu.time'; +/** + * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific container on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_CPU_USAGE = 'container.cpu.usage'; +/** + * Disk bytes for the container. + * + * @note The total number of bytes read/written successfully (aggregated from all disks). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_DISK_IO = 'container.disk.io'; +/** + * Container filesystem available bytes. + * + * @note In K8s, this metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_FILESYSTEM_AVAILABLE = 'container.filesystem.available'; +/** + * Container filesystem capacity. + * + * @note In K8s, this metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_FILESYSTEM_CAPACITY = 'container.filesystem.capacity'; +/** + * Container filesystem usage. + * + * @note This may not equal capacity - available. + * + * In K8s, this metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_FILESYSTEM_USAGE = 'container.filesystem.usage'; +/** + * Container memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and by subtracting the `container_memory_working_set_bytes` metric from the `container_spec_memory_limit_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_MEMORY_AVAILABLE = 'container.memory.available'; +/** + * Container memory paging faults. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_failures_total{failure_type=pgfault, scope=container}` and `container_memory_failures_total{failure_type=pgmajfault, scope=container}`metric. + * In K8s, this metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_MEMORY_PAGING_FAULTS = 'container.memory.paging.faults'; +/** + * Container memory RSS. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_rss` metric. + * In K8s, this metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_MEMORY_RSS = 'container.memory.rss'; +/** + * Memory usage of the container. + * + * @note Memory usage of the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_MEMORY_USAGE = 'container.memory.usage'; +/** + * Container memory working set. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_working_set_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_MEMORY_WORKING_SET = 'container.memory.working_set'; +/** + * Network bytes for the container. + * + * @note The number of bytes sent/received on all network interfaces by the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_NETWORK_IO = 'container.network.io'; +/** + * The time the container has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_UPTIME = 'container.uptime'; +/** + * Deprecated. Use `system.cpu.frequency` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.frequency`. + */ +export const METRIC_CPU_FREQUENCY = 'cpu.frequency'; +/** + * Deprecated. Use `system.cpu.time` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.time`. + */ +export const METRIC_CPU_TIME = 'cpu.time'; +/** + * Deprecated. Use `system.cpu.utilization` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.utilization`. + */ +export const METRIC_CPU_UTILIZATION = 'cpu.utilization'; +/** + * The total number of objects collected inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CPYTHON_GC_COLLECTED_OBJECTS = 'cpython.gc.collected_objects'; +/** + * The number of times a generation was collected since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CPYTHON_GC_COLLECTIONS = 'cpython.gc.collections'; +/** + * The total number of objects which were found to be uncollectable inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CPYTHON_GC_UNCOLLECTABLE_OBJECTS = 'cpython.gc.uncollectable_objects'; +/** + * The number of connections that are currently in state described by the `state` attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count'; +/** + * The time it took to create a new connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_CREATE_TIME = 'db.client.connection.create_time'; +/** + * The maximum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_IDLE_MAX = 'db.client.connection.idle.max'; +/** + * The minimum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_IDLE_MIN = 'db.client.connection.idle.min'; +/** + * The maximum number of open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_MAX = 'db.client.connection.max'; +/** + * The number of current pending requests for an open connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests'; +/** + * The number of connection timeouts that have occurred trying to obtain a connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_TIMEOUTS = 'db.client.connection.timeouts'; +/** + * The time between borrowing a connection and returning it to the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_USE_TIME = 'db.client.connection.use_time'; +/** + * The time it took to obtain an open connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_WAIT_TIME = 'db.client.connection.wait_time'; +/** + * Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.create_time` with unit `s`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME = 'db.client.connections.create_time'; +/** + * Deprecated, use `db.client.connection.idle.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.max`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MAX = 'db.client.connections.idle.max'; +/** + * Deprecated, use `db.client.connection.idle.min` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.min`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MIN = 'db.client.connections.idle.min'; +/** + * Deprecated, use `db.client.connection.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.max`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_MAX = 'db.client.connections.max'; +/** + * Deprecated, use `db.client.connection.pending_requests` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pending_requests`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS = 'db.client.connections.pending_requests'; +/** + * Deprecated, use `db.client.connection.timeouts` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.timeouts`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_TIMEOUTS = 'db.client.connections.timeouts'; +/** + * Deprecated, use `db.client.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.count`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage'; +/** + * Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.use_time` with unit `s`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_USE_TIME = 'db.client.connections.use_time'; +/** + * Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.wait_time` with unit `s`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME = 'db.client.connections.wait_time'; +/** + * Deprecated, use `azure.cosmosdb.client.active_instance.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.active_instance.count`. + */ +export const METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT = 'db.client.cosmosdb.active_instance.count'; +/** + * Deprecated, use `azure.cosmosdb.client.operation.request_charge` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.operation.request_charge`. + */ +export const METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE = 'db.client.cosmosdb.operation.request_charge'; +/** + * The actual number of records returned by the database operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS = 'db.client.response.returned_rows'; +/** + * Measures the time taken to perform a DNS lookup. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DNS_LOOKUP_DURATION = 'dns.lookup.duration'; +/** + * Number of invocation cold starts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_COLDSTARTS = 'faas.coldstarts'; +/** + * Distribution of CPU usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_CPU_USAGE = 'faas.cpu_usage'; +/** + * Number of invocation errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_ERRORS = 'faas.errors'; +/** + * Measures the duration of the function's initialization, such as a cold start. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_INIT_DURATION = 'faas.init_duration'; +/** + * Number of successful invocations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_INVOCATIONS = 'faas.invocations'; +/** + * Measures the duration of the function's logic execution. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_INVOKE_DURATION = 'faas.invoke_duration'; +/** + * Distribution of max memory usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_MEM_USAGE = 'faas.mem_usage'; +/** + * Distribution of net I/O usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_NET_IO = 'faas.net_io'; +/** + * Number of invocation timeouts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_TIMEOUTS = 'faas.timeouts'; +/** + * GenAI operation duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_CLIENT_OPERATION_DURATION = 'gen_ai.client.operation.duration'; +/** + * Number of input and output tokens used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_CLIENT_TOKEN_USAGE = 'gen_ai.client.token.usage'; +/** + * Generative AI server request duration such as time-to-last byte or last output token. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_SERVER_REQUEST_DURATION = 'gen_ai.server.request.duration'; +/** + * Time per output token generated after the first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN = 'gen_ai.server.time_per_output_token'; +/** + * Time to generate first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_SERVER_TIME_TO_FIRST_TOKEN = 'gen_ai.server.time_to_first_token'; +/** + * Heap size target percentage configured by the user, otherwise 100. + * + * @note The value range is [0.0,100.0]. Computed from `/gc/gogc:percent`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_CONFIG_GOGC = 'go.config.gogc'; +/** + * Count of live goroutines. + * + * @note Computed from `/sched/goroutines:goroutines`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_GOROUTINE_COUNT = 'go.goroutine.count'; +/** + * Memory allocated to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_MEMORY_ALLOCATED = 'go.memory.allocated'; +/** + * Count of allocations to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:objects`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_MEMORY_ALLOCATIONS = 'go.memory.allocations'; +/** + * Heap size target for the end of the GC cycle. + * + * @note Computed from `/gc/heap/goal:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_MEMORY_GC_GOAL = 'go.memory.gc.goal'; +/** + * Go runtime memory limit configured by the user, if a limit exists. + * + * @note Computed from `/gc/gomemlimit:bytes`. This metric is excluded if the limit obtained from the Go runtime is math.MaxInt64. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_MEMORY_LIMIT = 'go.memory.limit'; +/** + * Memory used by the Go runtime. + * + * @note Computed from `(/memory/classes/total:bytes - /memory/classes/heap/released:bytes)`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_MEMORY_USED = 'go.memory.used'; +/** + * The number of OS threads that can execute user-level Go code simultaneously. + * + * @note Computed from `/sched/gomaxprocs:threads`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_PROCESSOR_LIMIT = 'go.processor.limit'; +/** + * The time goroutines have spent in the scheduler in a runnable state before actually running. + * + * @note Computed from `/sched/latencies:seconds`. Bucket boundaries are provided by the runtime, and are subject to change. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_SCHEDULE_DURATION = 'go.schedule.duration'; +/** + * Number of active HTTP requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_CLIENT_ACTIVE_REQUESTS = 'http.client.active_requests'; +/** + * The duration of the successfully established outbound HTTP connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_CLIENT_CONNECTION_DURATION = 'http.client.connection.duration'; +/** + * Number of outbound HTTP connections that are currently active or idle on the client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_CLIENT_OPEN_CONNECTIONS = 'http.client.open_connections'; +/** + * Size of HTTP client request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_CLIENT_REQUEST_BODY_SIZE = 'http.client.request.body.size'; +/** + * Size of HTTP client response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE = 'http.client.response.body.size'; +/** + * Number of active HTTP server requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_SERVER_ACTIVE_REQUESTS = 'http.server.active_requests'; +/** + * Size of HTTP server request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_SERVER_REQUEST_BODY_SIZE = 'http.server.request.body.size'; +/** + * Size of HTTP server response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_SERVER_RESPONSE_BODY_SIZE = 'http.server.response.body.size'; +/** + * Remaining fraction of battery charge. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_BATTERY_CHARGE = 'hw.battery.charge'; +/** + * Lower limit of battery charge fraction to ensure proper operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_BATTERY_CHARGE_LIMIT = 'hw.battery.charge.limit'; +/** + * Time left before battery is completely charged or discharged. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_BATTERY_TIME_LEFT = 'hw.battery.time_left'; +/** + * CPU current frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_CPU_SPEED = 'hw.cpu.speed'; +/** + * CPU maximum frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_CPU_SPEED_LIMIT = 'hw.cpu.speed.limit'; +/** + * Energy consumed by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_ENERGY = 'hw.energy'; +/** + * Number of errors encountered by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_ERRORS = 'hw.errors'; +/** + * Fan speed in revolutions per minute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_FAN_SPEED = 'hw.fan.speed'; +/** + * Speed limit in rpm. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_FAN_SPEED_LIMIT = 'hw.fan.speed.limit'; +/** + * Fan speed expressed as a fraction of its maximum speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_FAN_SPEED_RATIO = 'hw.fan.speed_ratio'; +/** + * Received and transmitted bytes by the GPU. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_GPU_IO = 'hw.gpu.io'; +/** + * Size of the GPU memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_GPU_MEMORY_LIMIT = 'hw.gpu.memory.limit'; +/** + * GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_GPU_MEMORY_USAGE = 'hw.gpu.memory.usage'; +/** + * Fraction of GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_GPU_MEMORY_UTILIZATION = 'hw.gpu.memory.utilization'; +/** + * Fraction of time spent in a specific task. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_GPU_UTILIZATION = 'hw.gpu.utilization'; +/** + * Ambient (external) temperature of the physical host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_HOST_AMBIENT_TEMPERATURE = 'hw.host.ambient_temperature'; +/** + * Total energy consumed by the entire physical host, in joules. + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_HOST_ENERGY = 'hw.host.energy'; +/** + * By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_HOST_HEATING_MARGIN = 'hw.host.heating_margin'; +/** + * Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred). + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_HOST_POWER = 'hw.host.power'; +/** + * Size of the logical disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_LOGICAL_DISK_LIMIT = 'hw.logical_disk.limit'; +/** + * Logical disk space usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_LOGICAL_DISK_USAGE = 'hw.logical_disk.usage'; +/** + * Logical disk space utilization as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_LOGICAL_DISK_UTILIZATION = 'hw.logical_disk.utilization'; +/** + * Size of the memory module. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_MEMORY_SIZE = 'hw.memory.size'; +/** + * Link speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_NETWORK_BANDWIDTH_LIMIT = 'hw.network.bandwidth.limit'; +/** + * Utilization of the network bandwidth as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_NETWORK_BANDWIDTH_UTILIZATION = 'hw.network.bandwidth.utilization'; +/** + * Received and transmitted network traffic in bytes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_NETWORK_IO = 'hw.network.io'; +/** + * Received and transmitted network traffic in packets (or frames). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_NETWORK_PACKETS = 'hw.network.packets'; +/** + * Link status: `1` (up) or `0` (down). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_NETWORK_UP = 'hw.network.up'; +/** + * Endurance remaining for this SSD disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_PHYSICAL_DISK_ENDURANCE_UTILIZATION = 'hw.physical_disk.endurance_utilization'; +/** + * Size of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_PHYSICAL_DISK_SIZE = 'hw.physical_disk.size'; +/** + * Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_PHYSICAL_DISK_SMART = 'hw.physical_disk.smart'; +/** + * Instantaneous power consumed by the component. + * + * @note It is recommended to report `hw.energy` instead of `hw.power` when possible. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_POWER = 'hw.power'; +/** + * Maximum power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_POWER_SUPPLY_LIMIT = 'hw.power_supply.limit'; +/** + * Current power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_POWER_SUPPLY_USAGE = 'hw.power_supply.usage'; +/** + * Utilization of the power supply as a fraction of its maximum output. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_POWER_SUPPLY_UTILIZATION = 'hw.power_supply.utilization'; +/** + * Operational status: `1` (true) or `0` (false) for each of the possible states. + * + * @note `hw.status` is currently specified as an *UpDownCounter* but would ideally be represented using a [*StateSet* as defined in OpenMetrics](https://github.com/prometheus/OpenMetrics/blob/v1.0.0/specification/OpenMetrics.md#stateset). This semantic convention will be updated once *StateSet* is specified in OpenTelemetry. This planned change is not expected to have any consequence on the way users query their timeseries backend to retrieve the values of `hw.status` over time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_STATUS = 'hw.status'; +/** + * Operations performed by the tape drive. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_TAPE_DRIVE_OPERATIONS = 'hw.tape_drive.operations'; +/** + * Temperature in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_TEMPERATURE = 'hw.temperature'; +/** + * Temperature limit in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_TEMPERATURE_LIMIT = 'hw.temperature.limit'; +/** + * Voltage measured by the sensor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_VOLTAGE = 'hw.voltage'; +/** + * Voltage limit in Volts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_VOLTAGE_LIMIT = 'hw.voltage.limit'; +/** + * Nominal (expected) voltage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_VOLTAGE_NOMINAL = 'hw.voltage.nominal'; +/** + * Number of buffers in the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_BUFFER_COUNT = 'jvm.buffer.count'; +/** + * Measure of total memory capacity of buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_BUFFER_MEMORY_LIMIT = 'jvm.buffer.memory.limit'; +/** + * Deprecated, use `jvm.buffer.memory.used` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jvm.buffer.memory.used`. + */ +export const METRIC_JVM_BUFFER_MEMORY_USAGE = 'jvm.buffer.memory.usage'; +/** + * Measure of memory used by buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_BUFFER_MEMORY_USED = 'jvm.buffer.memory.used'; +/** + * Number of open file descriptors as reported by the JVM. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_FILE_DESCRIPTOR_COUNT = 'jvm.file_descriptor.count'; +/** + * Measure of initial memory requested. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_MEMORY_INIT = 'jvm.memory.init'; +/** + * Average CPU load of the whole system for the last minute as reported by the JVM. + * + * @note The value range is [0,n], where n is the number of CPU cores - or a negative number if the value is not available. 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/java.management/java/lang/management/OperatingSystemMXBean.html#getSystemLoadAverage()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_SYSTEM_CPU_LOAD_1M = 'jvm.system.cpu.load_1m'; +/** + * Recent CPU utilization for the whole system as reported by the JVM. + * + * @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#getCpuLoad()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_SYSTEM_CPU_UTILIZATION = 'jvm.system.cpu.utilization'; +/** + * Maximum CPU resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_CPU_LIMIT = 'k8s.container.cpu.limit'; +/** + * The ratio of container CPU usage to its CPU limit. + * + * @note The value range is [0.0,1.0]. A value of 1.0 means the container is using 100% of its CPU limit. If the CPU limit is not set, this metric **SHOULD NOT** be emitted for that container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION = 'k8s.container.cpu.limit_utilization'; +/** + * CPU resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_CPU_REQUEST = 'k8s.container.cpu.request'; +/** + * The ratio of container CPU usage to its CPU request. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION = 'k8s.container.cpu.request_utilization'; +/** + * Maximum ephemeral storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_LIMIT = 'k8s.container.ephemeral_storage.limit'; +/** + * Ephemeral storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_REQUEST = 'k8s.container.ephemeral_storage.request'; +/** + * Maximum memory resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_MEMORY_LIMIT = 'k8s.container.memory.limit'; +/** + * Memory resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_MEMORY_REQUEST = 'k8s.container.memory.request'; +/** + * Indicates whether the container is currently marked as ready to accept traffic, based on its readiness probe (1 = ready, 0 = not ready). + * + * @note This metric **SHOULD** reflect the value of the `ready` field in the + * [K8s ContainerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_READY = 'k8s.container.ready'; +/** + * Describes how many times the container has restarted (since the last counter reset). + * + * @note This value is pulled directly from the K8s API and the value can go indefinitely high and be reset to 0 + * at any time depending on how your kubelet is configured to prune dead containers. + * It is best to not depend too much on the exact value but rather look at it as + * either == 0, in which case you can conclude there were no restarts in the recent past, or > 0, in which case + * you can conclude there were restarts in the recent past, and not try and analyze the value beyond that. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart.count'; +/** + * Describes the number of K8s containers that are currently in a state for a given reason. + * + * @note All possible container state reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason'; +/** + * Describes the number of K8s containers that are currently in a given state. + * + * @note All possible container states will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state'; +/** + * Maximum storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_STORAGE_LIMIT = 'k8s.container.storage.limit'; +/** + * Storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_STORAGE_REQUEST = 'k8s.container.storage.request'; +/** + * Deprecated, use `k8s.cronjob.job.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.cronjob.job.active`. + */ +export const METRIC_K8S_CRONJOB_ACTIVE_JOBS = 'k8s.cronjob.active_jobs'; +/** + * The number of actively running jobs for a cronjob. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CRONJOB_JOB_ACTIVE = 'k8s.cronjob.job.active'; +/** + * Deprecated, use `k8s.daemonset.node.current_scheduled` instead. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.current_scheduled`. + */ +export const METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES = 'k8s.daemonset.current_scheduled_nodes'; +/** + * Deprecated, use `k8s.daemonset.node.desired_scheduled` instead. + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.desired_scheduled`. + */ +export const METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES = 'k8s.daemonset.desired_scheduled_nodes'; +/** + * Deprecated, use `k8s.daemonset.node.misscheduled` instead. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.misscheduled`. + */ +export const METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES = 'k8s.daemonset.misscheduled_nodes'; +/** + * Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED = 'k8s.daemonset.node.current_scheduled'; +/** + * Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod). + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED = 'k8s.daemonset.node.desired_scheduled'; +/** + * Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED = 'k8s.daemonset.node.misscheduled'; +/** + * Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DAEMONSET_NODE_READY = 'k8s.daemonset.node.ready'; +/** + * Deprecated, use `k8s.daemonset.node.ready` instead. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.ready`. + */ +export const METRIC_K8S_DAEMONSET_READY_NODES = 'k8s.daemonset.ready_nodes'; +/** + * Deprecated, use `k8s.deployment.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.available`. + */ +export const METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS = 'k8s.deployment.available_pods'; +/** + * Deprecated, use `k8s.deployment.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.desired`. + */ +export const METRIC_K8S_DEPLOYMENT_DESIRED_PODS = 'k8s.deployment.desired_pods'; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DEPLOYMENT_POD_AVAILABLE = 'k8s.deployment.pod.available'; +/** + * Number of desired replica pods in this deployment. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DEPLOYMENT_POD_DESIRED = 'k8s.deployment.pod.desired'; +/** + * Deprecated, use `k8s.hpa.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.current`. + */ +export const METRIC_K8S_HPA_CURRENT_PODS = 'k8s.hpa.current_pods'; +/** + * Deprecated, use `k8s.hpa.pod.desired` instead. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.desired`. + */ +export const METRIC_K8S_HPA_DESIRED_PODS = 'k8s.hpa.desired_pods'; +/** + * Deprecated, use `k8s.hpa.pod.max` instead. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.max`. + */ +export const METRIC_K8S_HPA_MAX_PODS = 'k8s.hpa.max_pods'; +/** + * Target average utilization, in percentage, for CPU resource in HPA config. + * + * @note This metric aligns with the `averageUtilization` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_UTILIZATION = 'k8s.hpa.metric.target.cpu.average_utilization'; +/** + * Target average value for CPU resource in HPA config. + * + * @note This metric aligns with the `averageValue` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_VALUE = 'k8s.hpa.metric.target.cpu.average_value'; +/** + * Target value for CPU resource in HPA config. + * + * @note This metric aligns with the `value` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_METRIC_TARGET_CPU_VALUE = 'k8s.hpa.metric.target.cpu.value'; +/** + * Deprecated, use `k8s.hpa.pod.min` instead. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.min`. + */ +export const METRIC_K8S_HPA_MIN_PODS = 'k8s.hpa.min_pods'; +/** + * Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_POD_CURRENT = 'k8s.hpa.pod.current'; +/** + * Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_POD_DESIRED = 'k8s.hpa.pod.desired'; +/** + * The upper limit for the number of replica pods to which the autoscaler can scale up. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_POD_MAX = 'k8s.hpa.pod.max'; +/** + * The lower limit for the number of replica pods to which the autoscaler can scale down. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_POD_MIN = 'k8s.hpa.pod.min'; +/** + * Deprecated, use `k8s.job.pod.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.active`. + */ +export const METRIC_K8S_JOB_ACTIVE_PODS = 'k8s.job.active_pods'; +/** + * Deprecated, use `k8s.job.pod.desired_successful` instead. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.desired_successful`. + */ +export const METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS = 'k8s.job.desired_successful_pods'; +/** + * Deprecated, use `k8s.job.pod.failed` instead. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.failed`. + */ +export const METRIC_K8S_JOB_FAILED_PODS = 'k8s.job.failed_pods'; +/** + * Deprecated, use `k8s.job.pod.max_parallel` instead. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.max_parallel`. + */ +export const METRIC_K8S_JOB_MAX_PARALLEL_PODS = 'k8s.job.max_parallel_pods'; +/** + * The number of pending and actively running pods for a job. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_JOB_POD_ACTIVE = 'k8s.job.pod.active'; +/** + * The desired number of successfully finished pods the job should be run with. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL = 'k8s.job.pod.desired_successful'; +/** + * The number of pods which reached phase Failed for a job. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_JOB_POD_FAILED = 'k8s.job.pod.failed'; +/** + * The max desired number of pods the job should run at any given time. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_JOB_POD_MAX_PARALLEL = 'k8s.job.pod.max_parallel'; +/** + * The number of pods which reached phase Succeeded for a job. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_JOB_POD_SUCCESSFUL = 'k8s.job.pod.successful'; +/** + * Deprecated, use `k8s.job.pod.successful` instead. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.successful`. + */ +export const METRIC_K8S_JOB_SUCCESSFUL_PODS = 'k8s.job.successful_pods'; +/** + * Describes number of K8s namespaces that are currently in a given phase. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase'; +/** + * Deprecated, use `k8s.node.cpu.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.cpu.allocatable`. + */ +export const METRIC_K8S_NODE_ALLOCATABLE_CPU = 'k8s.node.allocatable.cpu'; +/** + * Deprecated, use `k8s.node.ephemeral_storage.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.ephemeral_storage.allocatable`. + */ +export const METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE = 'k8s.node.allocatable.ephemeral_storage'; +/** + * Deprecated, use `k8s.node.memory.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.memory.allocatable`. + */ +export const METRIC_K8S_NODE_ALLOCATABLE_MEMORY = 'k8s.node.allocatable.memory'; +/** + * Deprecated, use `k8s.node.pod.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.pod.allocatable`. + */ +export const METRIC_K8S_NODE_ALLOCATABLE_PODS = 'k8s.node.allocatable.pods'; +/** + * Describes the condition of a particular Node. + * + * @note All possible node condition pairs (type and status) will be reported at each time interval to avoid missing metrics. Condition pairs corresponding to the current conditions' statuses will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status'; +/** + * Amount of cpu allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_CPU_ALLOCATABLE = 'k8s.node.cpu.allocatable'; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Node on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_CPU_TIME = 'k8s.node.cpu.time'; +/** + * Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Node on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_CPU_USAGE = 'k8s.node.cpu.usage'; +/** + * Amount of ephemeral-storage allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE = 'k8s.node.ephemeral_storage.allocatable'; +/** + * Node filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_FILESYSTEM_AVAILABLE = 'k8s.node.filesystem.available'; +/** + * Node filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_FILESYSTEM_CAPACITY = 'k8s.node.filesystem.capacity'; +/** + * Node filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_FILESYSTEM_USAGE = 'k8s.node.filesystem.usage'; +/** + * Amount of memory allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_ALLOCATABLE = 'k8s.node.memory.allocatable'; +/** + * Node memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_AVAILABLE = 'k8s.node.memory.available'; +/** + * Node memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) fields of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_PAGING_FAULTS = 'k8s.node.memory.paging.faults'; +/** + * Node memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_RSS = 'k8s.node.memory.rss'; +/** + * Memory usage of the Node. + * + * @note Total memory usage of the Node + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_USAGE = 'k8s.node.memory.usage'; +/** + * Node memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_WORKING_SET = 'k8s.node.memory.working_set'; +/** + * Node network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_NETWORK_ERRORS = 'k8s.node.network.errors'; +/** + * Network bytes for the Node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_NETWORK_IO = 'k8s.node.network.io'; +/** + * Amount of pods allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_POD_ALLOCATABLE = 'k8s.node.pod.allocatable'; +/** + * The time the Node has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_UPTIME = 'k8s.node.uptime'; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Pod on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_CPU_TIME = 'k8s.pod.cpu.time'; +/** + * Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Pod on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_CPU_USAGE = 'k8s.pod.cpu.usage'; +/** + * Pod filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_FILESYSTEM_AVAILABLE = 'k8s.pod.filesystem.available'; +/** + * Pod filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_FILESYSTEM_CAPACITY = 'k8s.pod.filesystem.capacity'; +/** + * Pod filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_FILESYSTEM_USAGE = 'k8s.pod.filesystem.usage'; +/** + * Pod memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_MEMORY_AVAILABLE = 'k8s.pod.memory.available'; +/** + * Pod memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_MEMORY_PAGING_FAULTS = 'k8s.pod.memory.paging.faults'; +/** + * Pod memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_MEMORY_RSS = 'k8s.pod.memory.rss'; +/** + * Memory usage of the Pod. + * + * @note Total memory usage of the Pod + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_MEMORY_USAGE = 'k8s.pod.memory.usage'; +/** + * Pod memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_MEMORY_WORKING_SET = 'k8s.pod.memory.working_set'; +/** + * Pod network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_NETWORK_ERRORS = 'k8s.pod.network.errors'; +/** + * Network bytes for the Pod. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_NETWORK_IO = 'k8s.pod.network.io'; +/** + * Describes number of K8s Pods that are currently in a given phase. + * + * @note All possible pod phases will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current phase will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase'; +/** + * Describes the number of K8s Pods that are currently in a state for a given reason. + * + * @note All possible pod status reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason'; +/** + * The time the Pod has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_UPTIME = 'k8s.pod.uptime'; +/** + * Pod volume storage space available. + * + * @note This metric is derived from the + * [VolumeStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_AVAILABLE = 'k8s.pod.volume.available'; +/** + * Pod volume total capacity. + * + * @note This metric is derived from the + * [VolumeStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_CAPACITY = 'k8s.pod.volume.capacity'; +/** + * The total inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.Inodes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_INODE_COUNT = 'k8s.pod.volume.inode.count'; +/** + * The free inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesFree](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_INODE_FREE = 'k8s.pod.volume.inode.free'; +/** + * The inodes used by the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesUsed](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * This may not be equal to `inodes - free` because filesystem may share inodes with other filesystems. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_INODE_USED = 'k8s.pod.volume.inode.used'; +/** + * Pod volume usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [VolumeStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_USAGE = 'k8s.pod.volume.usage'; +/** + * Deprecated, use `k8s.replicaset.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.available`. + */ +export const METRIC_K8S_REPLICASET_AVAILABLE_PODS = 'k8s.replicaset.available_pods'; +/** + * Deprecated, use `k8s.replicaset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.desired`. + */ +export const METRIC_K8S_REPLICASET_DESIRED_PODS = 'k8s.replicaset.desired_pods'; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_REPLICASET_POD_AVAILABLE = 'k8s.replicaset.pod.available'; +/** + * Number of desired replica pods in this replicaset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_REPLICASET_POD_DESIRED = 'k8s.replicaset.pod.desired'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +export const METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS = 'k8s.replication_controller.available_pods'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +export const METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS = 'k8s.replication_controller.desired_pods'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +export const METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS = 'k8s.replicationcontroller.available_pods'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +export const METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS = 'k8s.replicationcontroller.desired_pods'; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicationControllerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerstatus-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE = 'k8s.replicationcontroller.pod.available'; +/** + * Number of desired replica pods in this replication controller. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicationControllerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerspec-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED = 'k8s.replicationcontroller.pod.desired'; +/** + * The CPU limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_HARD = 'k8s.resourcequota.cpu.limit.hard'; +/** + * The CPU limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_USED = 'k8s.resourcequota.cpu.limit.used'; +/** + * The CPU requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_HARD = 'k8s.resourcequota.cpu.request.hard'; +/** + * The CPU requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_USED = 'k8s.resourcequota.cpu.request.used'; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'k8s.resourcequota.ephemeral_storage.limit.hard'; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'k8s.resourcequota.ephemeral_storage.limit.used'; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'k8s.resourcequota.ephemeral_storage.request.hard'; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'k8s.resourcequota.ephemeral_storage.request.used'; +/** + * The huge page requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'k8s.resourcequota.hugepage_count.request.hard'; +/** + * The huge page requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'k8s.resourcequota.hugepage_count.request.used'; +/** + * The memory limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_HARD = 'k8s.resourcequota.memory.limit.hard'; +/** + * The memory limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_USED = 'k8s.resourcequota.memory.limit.used'; +/** + * The memory requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_HARD = 'k8s.resourcequota.memory.request.hard'; +/** + * The memory requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_USED = 'k8s.resourcequota.memory.request.used'; +/** + * The object count limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_HARD = 'k8s.resourcequota.object_count.hard'; +/** + * The object count limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_USED = 'k8s.resourcequota.object_count.used'; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'k8s.resourcequota.persistentvolumeclaim_count.hard'; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'k8s.resourcequota.persistentvolumeclaim_count.used'; +/** + * The storage requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_HARD = 'k8s.resourcequota.storage.request.hard'; +/** + * The storage requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_USED = 'k8s.resourcequota.storage.request.used'; +/** + * Deprecated, use `k8s.statefulset.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.current`. + */ +export const METRIC_K8S_STATEFULSET_CURRENT_PODS = 'k8s.statefulset.current_pods'; +/** + * Deprecated, use `k8s.statefulset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.desired`. + */ +export const METRIC_K8S_STATEFULSET_DESIRED_PODS = 'k8s.statefulset.desired_pods'; +/** + * The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_STATEFULSET_POD_CURRENT = 'k8s.statefulset.pod.current'; +/** + * Number of desired replica pods in this statefulset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_STATEFULSET_POD_DESIRED = 'k8s.statefulset.pod.desired'; +/** + * The number of replica pods created for this statefulset with a Ready Condition. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_STATEFULSET_POD_READY = 'k8s.statefulset.pod.ready'; +/** + * Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_STATEFULSET_POD_UPDATED = 'k8s.statefulset.pod.updated'; +/** + * Deprecated, use `k8s.statefulset.pod.ready` instead. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.ready`. + */ +export const METRIC_K8S_STATEFULSET_READY_PODS = 'k8s.statefulset.ready_pods'; +/** + * Deprecated, use `k8s.statefulset.pod.updated` instead. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.updated`. + */ +export const METRIC_K8S_STATEFULSET_UPDATED_PODS = 'k8s.statefulset.updated_pods'; +/** + * The duration of the MCP request or notification as observed on the sender from the time it was sent until the response or ack is received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MCP_CLIENT_OPERATION_DURATION = 'mcp.client.operation.duration'; +/** + * The duration of the MCP session as observed on the MCP client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MCP_CLIENT_SESSION_DURATION = 'mcp.client.session.duration'; +/** + * MCP request or notification duration as observed on the receiver from the time it was received until the result or ack is sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MCP_SERVER_OPERATION_DURATION = 'mcp.server.operation.duration'; +/** + * The duration of the MCP session as observed on the MCP server. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MCP_SERVER_SESSION_DURATION = 'mcp.server.session.duration'; +/** + * Number of messages that were delivered to the application. + * + * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios. + * 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. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = 'messaging.client.consumed.messages'; +/** + * Duration of messaging operation initiated by a producer or consumer client. + * + * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MESSAGING_CLIENT_OPERATION_DURATION = 'messaging.client.operation.duration'; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +export const METRIC_MESSAGING_CLIENT_PUBLISHED_MESSAGES = 'messaging.client.published.messages'; +/** + * Number of messages producer attempted to send to the broker. + * + * @note This metric **MUST NOT** count messages that were created but haven't yet been sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MESSAGING_CLIENT_SENT_MESSAGES = 'messaging.client.sent.messages'; +/** + * Duration of processing operation. + * + * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MESSAGING_PROCESS_DURATION = 'messaging.process.duration'; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +export const METRIC_MESSAGING_PROCESS_MESSAGES = 'messaging.process.messages'; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +export const METRIC_MESSAGING_PUBLISH_DURATION = 'messaging.publish.duration'; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +export const METRIC_MESSAGING_PUBLISH_MESSAGES = 'messaging.publish.messages'; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +export const METRIC_MESSAGING_RECEIVE_DURATION = 'messaging.receive.duration'; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +export const METRIC_MESSAGING_RECEIVE_MESSAGES = 'messaging.receive.messages'; +/** + * Reports the count of kernel NFS client TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.netudpcnt and svc_stat.nettcpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_NET_COUNT = 'nfs.client.net.count'; +/** + * Reports the count of kernel NFS client TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_NET_TCP_CONNECTION_ACCEPTED = 'nfs.client.net.tcp.connection.accepted'; +/** + * Reports the count of kernel NFSv4+ client operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_OPERATION_COUNT = 'nfs.client.operation.count'; +/** + * Reports the count of kernel NFS client procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_PROCEDURE_COUNT = 'nfs.client.procedure.count'; +/** + * Reports the count of kernel NFS client RPC authentication refreshes. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcauthrefresh + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_RPC_AUTHREFRESH_COUNT = 'nfs.client.rpc.authrefresh.count'; +/** + * Reports the count of kernel NFS client RPCs sent, regardless of whether they're accepted/rejected by the server. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_RPC_COUNT = 'nfs.client.rpc.count'; +/** + * Reports the count of kernel NFS client RPC retransmits. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcretrans + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_RPC_RETRANSMIT_COUNT = 'nfs.client.rpc.retransmit.count'; +/** + * Reports the count of kernel NFS server stale file handles. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_FH_STALE counter in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_FH_STALE_COUNT = 'nfs.server.fh.stale.count'; +/** + * Reports the count of kernel NFS server bytes returned to receive and transmit (read and write) requests. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_IO_READ and NFSD_STATS_IO_WRITE counters in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_IO = 'nfs.server.io'; +/** + * Reports the count of kernel NFS server TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpcnt and svc_stat.netudpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_NET_COUNT = 'nfs.server.net.count'; +/** + * Reports the count of kernel NFS server TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_NET_TCP_CONNECTION_ACCEPTED = 'nfs.server.net.tcp.connection.accepted'; +/** + * Reports the count of kernel NFSv4+ server operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_OPERATION_COUNT = 'nfs.server.operation.count'; +/** + * Reports the count of kernel NFS server procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_PROCEDURE_COUNT = 'nfs.server.procedure.count'; +/** + * Reports the kernel NFS server reply cache request count by cache hit status. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_REPCACHE_REQUESTS = 'nfs.server.repcache.requests'; +/** + * Reports the count of kernel NFS server RPCs handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt, the count of good RPCs. This metric can have + * an error.type of "format", "auth", or "client" for svc_stat.badfmt, svc_stat.badauth, and svc_stat.badclnt. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_RPC_COUNT = 'nfs.server.rpc.count'; +/** + * Reports the count of kernel NFS server available threads. + * + * @note Linux: this metric is taken from the Linux kernel nfsd_th_cnt variable + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_THREAD_COUNT = 'nfs.server.thread.count'; +/** + * Event loop maximum delay. + * + * @note Value can be retrieved from value `histogram.max` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_MAX = 'nodejs.eventloop.delay.max'; +/** + * Event loop mean delay. + * + * @note Value can be retrieved from value `histogram.mean` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_MEAN = 'nodejs.eventloop.delay.mean'; +/** + * Event loop minimum delay. + * + * @note Value can be retrieved from value `histogram.min` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_MIN = 'nodejs.eventloop.delay.min'; +/** + * Event loop 50 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(50)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_P50 = 'nodejs.eventloop.delay.p50'; +/** + * Event loop 90 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(90)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_P90 = 'nodejs.eventloop.delay.p90'; +/** + * Event loop 99 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(99)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_P99 = 'nodejs.eventloop.delay.p99'; +/** + * Event loop standard deviation delay. + * + * @note Value can be retrieved from value `histogram.stddev` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_STDDEV = 'nodejs.eventloop.delay.stddev'; +/** + * Cumulative duration of time the event loop has been in each state. + * + * @note Value can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_TIME = 'nodejs.eventloop.time'; +/** + * Event loop utilization. + * + * @note The value range is [0.0, 1.0] and can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_UTILIZATION = 'nodejs.eventloop.utilization'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_HARD = 'openshift.clusterquota.cpu.limit.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_USED = 'openshift.clusterquota.cpu.limit.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_HARD = 'openshift.clusterquota.cpu.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_USED = 'openshift.clusterquota.cpu.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'openshift.clusterquota.ephemeral_storage.limit.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'openshift.clusterquota.ephemeral_storage.limit.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'openshift.clusterquota.ephemeral_storage.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'openshift.clusterquota.ephemeral_storage.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'openshift.clusterquota.hugepage_count.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'openshift.clusterquota.hugepage_count.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_HARD = 'openshift.clusterquota.memory.limit.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_USED = 'openshift.clusterquota.memory.limit.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_HARD = 'openshift.clusterquota.memory.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_USED = 'openshift.clusterquota.memory.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_HARD = 'openshift.clusterquota.object_count.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_USED = 'openshift.clusterquota.object_count.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'openshift.clusterquota.persistentvolumeclaim_count.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'openshift.clusterquota.persistentvolumeclaim_count.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_HARD = 'openshift.clusterquota.storage.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_USED = 'openshift.clusterquota.storage.request.used'; +/** + * The number of log records for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_log_records`), rejected log records **MUST** count as failed and only non-rejected log records count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_LOG_EXPORTED = 'otel.sdk.exporter.log.exported'; +/** + * The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_LOG_INFLIGHT = 'otel.sdk.exporter.log.inflight'; +/** + * The number of metric data points for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_data_points`), rejected data points **MUST** count as failed and only non-rejected data points count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_EXPORTED = 'otel.sdk.exporter.metric_data_point.exported'; +/** + * The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_INFLIGHT = 'otel.sdk.exporter.metric_data_point.inflight'; +/** + * The duration of exporting a batch of telemetry records. + * + * @note This metric defines successful operations using the full success definitions for [http](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1) + * and [grpc](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success). Anything else is defined as an unsuccessful operation. For successful + * operations, `error.type` **MUST NOT** be set. For unsuccessful export operations, `error.type` **MUST** contain a relevant failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_OPERATION_DURATION = 'otel.sdk.exporter.operation.duration'; +/** + * The number of spans for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans **MUST** count as failed and only non-rejected spans count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED = 'otel.sdk.exporter.span.exported'; +/** + * Deprecated, use `otel.sdk.exporter.span.exported` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.exported`. + */ +export const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT = 'otel.sdk.exporter.span.exported.count'; +/** + * The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT = 'otel.sdk.exporter.span.inflight'; +/** + * Deprecated, use `otel.sdk.exporter.span.inflight` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.inflight`. + */ +export const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT = 'otel.sdk.exporter.span.inflight.count'; +/** + * The number of logs submitted to enabled SDK Loggers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_LOG_CREATED = 'otel.sdk.log.created'; +/** + * The duration of the collect operation of the metric reader. + * + * @note For successful collections, `error.type` **MUST NOT** be set. For failed collections, `error.type` **SHOULD** contain the failure cause. + * It can happen that metrics collection is successful for some MetricProducers, while others fail. In that case `error.type` **SHOULD** be set to any of the failure causes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_METRIC_READER_COLLECTION_DURATION = 'otel.sdk.metric_reader.collection.duration'; +/** + * The number of log records for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter, + * not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED = 'otel.sdk.processor.log.processed'; +/** + * The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold. + * + * @note Only applies to Log Record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY = 'otel.sdk.processor.log.queue.capacity'; +/** + * The number of log records in the queue of a given instance of an SDK log processor. + * + * @note Only applies to log record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE = 'otel.sdk.processor.log.queue.size'; +/** + * The number of spans for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED = 'otel.sdk.processor.span.processed'; +/** + * Deprecated, use `otel.sdk.processor.span.processed` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.processor.span.processed`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT = 'otel.sdk.processor.span.processed.count'; +/** + * The maximum number of spans the queue of a given instance of an SDK span processor can hold. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY = 'otel.sdk.processor.span.queue.capacity'; +/** + * The number of spans in the queue of a given instance of an SDK span processor. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE = 'otel.sdk.processor.span.queue.size'; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export const METRIC_OTEL_SDK_SPAN_ENDED = 'otel.sdk.span.ended'; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export const METRIC_OTEL_SDK_SPAN_ENDED_COUNT = 'otel.sdk.span.ended.count'; +/** + * The number of created spans with `recording=true` for which the end operation has not been called yet. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live'; +/** + * Deprecated, use `otel.sdk.span.live` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.span.live`. + */ +export const METRIC_OTEL_SDK_SPAN_LIVE_COUNT = 'otel.sdk.span.live.count'; +/** + * The number of created spans. + * + * @note Implementations **MUST** record this metric for all spans, even for non-recording ones. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started'; +/** + * Number of times the process has been context switched. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_CONTEXT_SWITCHES = 'process.context_switches'; +/** + * Total CPU seconds broken down by different states. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_CPU_TIME = 'process.cpu.time'; +/** + * Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_CPU_UTILIZATION = 'process.cpu.utilization'; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_DISK_IO = 'process.disk.io'; +/** + * The amount of physical memory in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_MEMORY_USAGE = 'process.memory.usage'; +/** + * The amount of committed virtual memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_MEMORY_VIRTUAL = 'process.memory.virtual'; +/** + * Network bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_NETWORK_IO = 'process.network.io'; +/** + * Deprecated, use `process.unix.file_descriptor.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.unix.file_descriptor.count`. + */ +export const METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT = 'process.open_file_descriptor.count'; +/** + * Number of page faults the process has made. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_PAGING_FAULTS = 'process.paging.faults'; +/** + * Process threads count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_THREAD_COUNT = 'process.thread.count'; +/** + * Number of unix file descriptors in use by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT = 'process.unix.file_descriptor.count'; +/** + * The time the process has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_UPTIME = 'process.uptime'; +/** + * Number of handles held by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_WINDOWS_HANDLE_COUNT = 'process.windows.handle.count'; +/** + * Measures the duration of outbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC client span, the metric value + * **SHOULD** be the same as the RPC client span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_CLIENT_CALL_DURATION = 'rpc.client.call.duration'; +/** + * Deprecated, use `rpc.client.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.client.call.duration` with unit `s`. + */ +export const METRIC_RPC_CLIENT_DURATION = 'rpc.client.duration'; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_CLIENT_REQUEST_SIZE = 'rpc.client.request.size'; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const METRIC_RPC_CLIENT_REQUESTS_PER_RPC = 'rpc.client.requests_per_rpc'; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_CLIENT_RESPONSE_SIZE = 'rpc.client.response.size'; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const METRIC_RPC_CLIENT_RESPONSES_PER_RPC = 'rpc.client.responses_per_rpc'; +/** + * Measures the duration of inbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC server span, the metric value + * **SHOULD** be the same as the RPC server span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_SERVER_CALL_DURATION = 'rpc.server.call.duration'; +/** + * Deprecated, use `rpc.server.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.server.call.duration` with unit `s`. + */ +export const METRIC_RPC_SERVER_DURATION = 'rpc.server.duration'; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_SERVER_REQUEST_SIZE = 'rpc.server.request.size'; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming** : This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const METRIC_RPC_SERVER_REQUESTS_PER_RPC = 'rpc.server.requests_per_rpc'; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_SERVER_RESPONSE_SIZE = 'rpc.server.response.size'; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const METRIC_RPC_SERVER_RESPONSES_PER_RPC = 'rpc.server.responses_per_rpc'; +/** + * Operating frequency of the logical CPU in Hertz. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_CPU_FREQUENCY = 'system.cpu.frequency'; +/** + * Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_CPU_LOGICAL_COUNT = 'system.cpu.logical.count'; +/** + * Reports the number of actual physical processor cores on the hardware. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_CPU_PHYSICAL_COUNT = 'system.cpu.physical.count'; +/** + * Seconds each logical CPU spent on each mode. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_CPU_TIME = 'system.cpu.time'; +/** + * For each logical CPU, the utilization is calculated as the change in cumulative CPU time (cpu.time) over a measurement interval, divided by the elapsed time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_CPU_UTILIZATION = 'system.cpu.utilization'; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_IO = 'system.disk.io'; +/** + * Time disk spent activated. + * + * @note The real elapsed time ("wall clock") used in the I/O path (time from operations running in parallel are not counted). Measured as: + * + * - Linux: Field 13 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: The complement of + * ["Disk% Idle Time"](https://learn.microsoft.com/archive/blogs/askcore/windows-performance-monitor-disk-counters-explained#windows-performance-monitor-disk-counters-explained) + * performance counter: `uptime * (100 - "Disk\% Idle Time") / 100` + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_IO_TIME = 'system.disk.io_time'; +/** + * The total storage capacity of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_LIMIT = 'system.disk.limit'; +/** + * The number of disk reads/writes merged into single physical disk access operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_MERGED = 'system.disk.merged'; +/** + * Sum of the time each operation took to complete. + * + * @note Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as: + * + * - Linux: Fields 7 & 11 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: "Avg. Disk sec/Read" perf counter multiplied by "Disk Reads/sec" perf counter (similar for Writes) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_OPERATION_TIME = 'system.disk.operation_time'; +/** + * Disk operations count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_OPERATIONS = 'system.disk.operations'; +/** + * The total storage capacity of the filesystem. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_FILESYSTEM_LIMIT = 'system.filesystem.limit'; +/** + * Reports a filesystem's space usage across different states. + * + * @note The sum of all `system.filesystem.usage` values over the different `system.filesystem.state` attributes + * **SHOULD** equal the total storage capacity of the filesystem, that is `system.filesystem.limit`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_FILESYSTEM_USAGE = 'system.filesystem.usage'; +/** + * Fraction of filesystem bytes used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_FILESYSTEM_UTILIZATION = 'system.filesystem.utilization'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.available`. + */ +export const METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE = 'system.linux.memory.available'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.usage`. + */ +export const METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE = 'system.linux.memory.slab.usage'; +/** + * Total virtual memory available in the system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_LIMIT = 'system.memory.limit'; +/** + * An estimate of how much memory is available for starting new applications, without causing swapping. + * + * @note This is an alternative to `system.memory.usage` metric with `state=free`. + * Linux starting from 3.14 exports "available" memory. It takes "free" memory as a baseline, and then factors in kernel-specific values. + * This is supposed to be more accurate than just "free" memory. + * For reference, see the calculations [here](https://superuser.com/a/980821). + * See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE = 'system.memory.linux.available'; +/** + * Reports the memory used by the Linux kernel for managing caches of frequently used objects. + * + * @note The sum over the `reclaimable` and `unreclaimable` state values in `memory.linux.slab.usage` **SHOULD** be equal to the total slab memory available on the system. + * Note that the total slab memory is not constant and may vary over time. + * See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE = 'system.memory.linux.slab.usage'; +/** + * Shared memory used (mostly by tmpfs). + * + * @note Equivalent of `shared` from [`free` command](https://man7.org/linux/man-pages/man1/free.1.html) or + * `Shmem` from [`/proc/meminfo`](https://man7.org/linux/man-pages/man5/proc.5.html)" + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_SHARED = 'system.memory.shared'; +/** + * Reports memory in use by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_USAGE = 'system.memory.usage'; +/** + * Percentage of memory bytes in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_UTILIZATION = 'system.memory.utilization'; +/** + * The number of connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_NETWORK_CONNECTION_COUNT = 'system.network.connection.count'; +/** + * Deprecated, use `system.network.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.connection.count`. + */ +export const METRIC_SYSTEM_NETWORK_CONNECTIONS = 'system.network.connections'; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.dropped`. + */ +export const METRIC_SYSTEM_NETWORK_DROPPED = 'system.network.dropped'; +/** + * Count of network errors detected. + * + * @note Measured as: + * + * - Linux: the `errs` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)). + * - Windows: [`InErrors`/`OutErrors`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_NETWORK_ERRORS = 'system.network.errors'; +/** + * The number of bytes transmitted and received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_NETWORK_IO = 'system.network.io'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_NETWORK_PACKET_COUNT = 'system.network.packet.count'; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_NETWORK_PACKET_DROPPED = 'system.network.packet.dropped'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.count`. + */ +export const METRIC_SYSTEM_NETWORK_PACKETS = 'system.network.packets'; +/** + * The number of page faults. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PAGING_FAULTS = 'system.paging.faults'; +/** + * The number of paging operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PAGING_OPERATIONS = 'system.paging.operations'; +/** + * Unix swap or windows pagefile usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PAGING_USAGE = 'system.paging.usage'; +/** + * Swap (unix) or pagefile (windows) utilization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PAGING_UTILIZATION = 'system.paging.utilization'; +/** + * Total number of processes in each state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PROCESS_COUNT = 'system.process.count'; +/** + * Total number of processes created over uptime of the host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PROCESS_CREATED = 'system.process.created'; +/** + * The time the system has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_UPTIME = 'system.uptime'; +/** + * Garbage collection duration. + * + * @note The values can be retrieved from [`perf_hooks.PerformanceObserver(...).observe({ entryTypes: ['gc'] })`](https://nodejs.org/api/perf_hooks.html#performanceobserverobserveoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_V8JS_GC_DURATION = 'v8js.gc.duration'; +/** + * Deprecated, use `v8js.memory.heap.space.available_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.available_size`. + */ +export const METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.heap.space.available_size'; +/** + * Deprecated, use `v8js.memory.heap.space.physical_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.physical_size`. + */ +export const METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.heap.space.physical_size'; +/** + * Total heap memory size pre-allocated. + * + * @note The value can be retrieved from value `space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_V8JS_MEMORY_HEAP_LIMIT = 'v8js.memory.heap.limit'; +/** + * Heap space available size. + * + * @note Value can be retrieved from value `space_available_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.memory.heap.space.available_size'; +/** + * Committed size of a heap space. + * + * @note Value can be retrieved from value `physical_space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.memory.heap.space.physical_size'; +/** + * Heap Memory size allocated. + * + * @note The value can be retrieved from value `space_used_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_V8JS_MEMORY_HEAP_USED = 'v8js.memory.heap.used'; +/** + * The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_CHANGE_COUNT = 'vcs.change.count'; +/** + * The time duration a change (pull request/merge request/changelist) has been in a given state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_CHANGE_DURATION = 'vcs.change.duration'; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_CHANGE_TIME_TO_APPROVAL = 'vcs.change.time_to_approval'; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get merged into the target(base) ref. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_CHANGE_TIME_TO_MERGE = 'vcs.change.time_to_merge'; +/** + * The number of unique contributors to a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_CONTRIBUTOR_COUNT = 'vcs.contributor.count'; +/** + * The number of refs of type branch or tag in a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_REF_COUNT = 'vcs.ref.count'; +/** + * The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.line_change.type` value. For example if a ref added 3 lines and removed 2 lines, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers). + * If number of lines added/removed should be calculated from the start of time, then `vcs.ref.base.name` **SHOULD** be set to an empty string. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_REF_LINES_DELTA = 'vcs.ref.lines_delta'; +/** + * The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.revision_delta.direction` value. For example if branch `a` is 3 commits behind and 2 commits ahead of `trunk`, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers) and `vcs.ref.base.name` is set to `trunk`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_REF_REVISIONS_DELTA = 'vcs.ref.revisions_delta'; +/** + * Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_REF_TIME = 'vcs.ref.time'; +/** + * The number of repositories in an organization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_REPOSITORY_COUNT = 'vcs.repository.count'; +//# sourceMappingURL=experimental_metrics.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js.map new file mode 100644 index 0000000..600d0b8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"experimental_metrics.js","sourceRoot":"","sources":["../../src/experimental_metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * The authentication duration for a request.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_AUTHENTICATE_DURATION = 'aspnetcore.authentication.authenticate.duration' as const;\n\n/**\n * The total number of times a scheme is challenged.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_CHALLENGES = 'aspnetcore.authentication.challenges' as const;\n\n/**\n * The total number of times an authenticated user attempts to access a resource they are not permitted to access.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_FORBIDS = 'aspnetcore.authentication.forbids' as const;\n\n/**\n * The total number of times a principal is signed in with a scheme.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_INS = 'aspnetcore.authentication.sign_ins' as const;\n\n/**\n * The total number of times a principal is signed out with a scheme.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_OUTS = 'aspnetcore.authentication.sign_outs' as const;\n\n/**\n * The total number of authorization attempts.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authorization`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHORIZATION_ATTEMPTS = 'aspnetcore.authorization.attempts' as const;\n\n/**\n * The duration of authenticate attempts. The authenticate metrics is recorded by sign in methods such as PasswordSignInAsync and TwoFactorSignInAsync.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_AUTHENTICATE_DURATION = 'aspnetcore.identity.sign_in.authenticate.duration' as const;\n\n/**\n * The total number of check password attempts. Checks that the account is in a state that can log in and that the password is valid using the UserManager.CheckPasswordAsync method.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.sign_in.check_password_attempts' as const;\n\n/**\n * The total number of calls to sign in user principals.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_INS = 'aspnetcore.identity.sign_in.sign_ins' as const;\n\n/**\n * The total number of calls to sign out user principals.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_OUTS = 'aspnetcore.identity.sign_in.sign_outs' as const;\n\n/**\n * The total number of two factor clients forgotten.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_FORGOTTEN = 'aspnetcore.identity.sign_in.two_factor_clients_forgotten' as const;\n\n/**\n * The total number of two factor clients remembered.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_REMEMBERED = 'aspnetcore.identity.sign_in.two_factor_clients_remembered' as const;\n\n/**\n * The number of check password attempts. Only checks whether the password is valid and not whether the user account is in a state that can log in.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.user.check_password_attempts' as const;\n\n/**\n * The duration of user creation operations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_CREATE_DURATION = 'aspnetcore.identity.user.create.duration' as const;\n\n/**\n * The duration of user deletion operations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_DELETE_DURATION = 'aspnetcore.identity.user.delete.duration' as const;\n\n/**\n * The total number of token generations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_GENERATED_TOKENS = 'aspnetcore.identity.user.generated_tokens' as const;\n\n/**\n * The duration of user update operations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_UPDATE_DURATION = 'aspnetcore.identity.user.update.duration' as const;\n\n/**\n * The total number of token verification attempts.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_VERIFY_TOKEN_ATTEMPTS = 'aspnetcore.identity.user.verify_token_attempts' as const;\n\n/**\n * Total number of bytes allocated by the memory pool. Allocation occurs when a memory rental request exceeds the available pooled memory.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_ALLOCATED = 'aspnetcore.memory_pool.allocated' as const;\n\n/**\n * Total number of bytes evicted from the memory pool. Eviction occurs when idle pooled memory is reclaimed.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_EVICTED = 'aspnetcore.memory_pool.evicted' as const;\n\n/**\n * Number of bytes currently pooled and available for reuse.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_POOLED = 'aspnetcore.memory_pool.pooled' as const;\n\n/**\n * Total number of bytes rented from the memory pool.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_RENTED = 'aspnetcore.memory_pool.rented' as const;\n\n/**\n * Number of active client instances.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_AZURE_COSMOSDB_CLIENT_ACTIVE_INSTANCE_COUNT = 'azure.cosmosdb.client.active_instance.count' as const;\n\n/**\n * [Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_AZURE_COSMOSDB_CLIENT_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.client.operation.request_charge' as const;\n\n/**\n * The number of pipeline runs currently active in the system by state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_PIPELINE_RUN_ACTIVE = 'cicd.pipeline.run.active' as const;\n\n/**\n * Duration of a pipeline run grouped by pipeline, state and result.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_PIPELINE_RUN_DURATION = 'cicd.pipeline.run.duration' as const;\n\n/**\n * The number of errors encountered in pipeline runs (eg. compile, test failures).\n *\n * @note There might be errors in a pipeline run that are non fatal (eg. they are suppressed) or in a parallel stage multiple stages could have a fatal error.\n * This means that this error count might not be the same as the count of metric `cicd.pipeline.run.duration` with run result `failure`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_PIPELINE_RUN_ERRORS = 'cicd.pipeline.run.errors' as const;\n\n/**\n * The number of errors in a component of the CICD system (eg. controller, scheduler, agent).\n *\n * @note Errors in pipeline run execution are explicitly excluded. Ie a test failure is not counted in this metric.\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_SYSTEM_ERRORS = 'cicd.system.errors' as const;\n\n/**\n * The number of workers on the CICD system by state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_WORKER_COUNT = 'cicd.worker.count' as const;\n\n/**\n * Total CPU time consumed.\n *\n * @note Total CPU time consumed by the specific container on all available CPU cores\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_CPU_TIME = 'container.cpu.time' as const;\n\n/**\n * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs.\n *\n * @note CPU usage of the specific container on all available CPU cores, averaged over the sample window\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_CPU_USAGE = 'container.cpu.usage' as const;\n\n/**\n * Disk bytes for the container.\n *\n * @note The total number of bytes read/written successfully (aggregated from all disks).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_DISK_IO = 'container.disk.io' as const;\n\n/**\n * Container filesystem available bytes.\n *\n * @note In K8s, this metric is derived from the\n * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_FILESYSTEM_AVAILABLE = 'container.filesystem.available' as const;\n\n/**\n * Container filesystem capacity.\n *\n * @note In K8s, this metric is derived from the\n * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_FILESYSTEM_CAPACITY = 'container.filesystem.capacity' as const;\n\n/**\n * Container filesystem usage.\n *\n * @note This may not equal capacity - available.\n *\n * In K8s, this metric is derived from the\n * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_FILESYSTEM_USAGE = 'container.filesystem.usage' as const;\n\n/**\n * Container memory available.\n *\n * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted.\n * In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and by subtracting the `container_memory_working_set_bytes` metric from the `container_spec_memory_limit_bytes` metric.\n * In K8s, this metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_AVAILABLE = 'container.memory.available' as const;\n\n/**\n * Container memory paging faults.\n *\n * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_failures_total{failure_type=pgfault, scope=container}` and `container_memory_failures_total{failure_type=pgmajfault, scope=container}`metric.\n * In K8s, this metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_PAGING_FAULTS = 'container.memory.paging.faults' as const;\n\n/**\n * Container memory RSS.\n *\n * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_rss` metric.\n * In K8s, this metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_RSS = 'container.memory.rss' as const;\n\n/**\n * Memory usage of the container.\n *\n * @note Memory usage of the container.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_USAGE = 'container.memory.usage' as const;\n\n/**\n * Container memory working set.\n *\n * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_working_set_bytes` metric.\n * In K8s, this metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_WORKING_SET = 'container.memory.working_set' as const;\n\n/**\n * Network bytes for the container.\n *\n * @note The number of bytes sent/received on all network interfaces by the container.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_NETWORK_IO = 'container.network.io' as const;\n\n/**\n * The time the container has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_UPTIME = 'container.uptime' as const;\n\n/**\n * Deprecated. Use `system.cpu.frequency` 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 `system.cpu.frequency`.\n */\nexport const METRIC_CPU_FREQUENCY = 'cpu.frequency' as const;\n\n/**\n * Deprecated. Use `system.cpu.time` 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 `system.cpu.time`.\n */\nexport const METRIC_CPU_TIME = 'cpu.time' as const;\n\n/**\n * Deprecated. Use `system.cpu.utilization` 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 `system.cpu.utilization`.\n */\nexport const METRIC_CPU_UTILIZATION = 'cpu.utilization' as const;\n\n/**\n * The total number of objects collected inside a generation since interpreter start.\n *\n * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CPYTHON_GC_COLLECTED_OBJECTS = 'cpython.gc.collected_objects' as const;\n\n/**\n * The number of times a generation was collected since interpreter start.\n *\n * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CPYTHON_GC_COLLECTIONS = 'cpython.gc.collections' as const;\n\n/**\n * The total number of objects which were found to be uncollectable inside a generation since interpreter start.\n *\n * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CPYTHON_GC_UNCOLLECTABLE_OBJECTS = 'cpython.gc.uncollectable_objects' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count' as const;\n\n/**\n * The time it took to create a new connection.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_CREATE_TIME = 'db.client.connection.create_time' as const;\n\n/**\n * The maximum number of idle open connections allowed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_IDLE_MAX = 'db.client.connection.idle.max' as const;\n\n/**\n * The minimum number of idle open connections allowed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_IDLE_MIN = 'db.client.connection.idle.min' as const;\n\n/**\n * The maximum number of open connections allowed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_MAX = 'db.client.connection.max' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests' as const;\n\n/**\n * The number of connection timeouts that have occurred trying to obtain a connection from the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_TIMEOUTS = 'db.client.connection.timeouts' as const;\n\n/**\n * The time between borrowing a connection and returning it to the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_USE_TIME = 'db.client.connection.use_time' as const;\n\n/**\n * The time it took to obtain an open connection from the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_WAIT_TIME = 'db.client.connection.wait_time' as const;\n\n/**\n * Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`.\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.create_time` with unit `s`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME = 'db.client.connections.create_time' as const;\n\n/**\n * Deprecated, use `db.client.connection.idle.max` 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.idle.max`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MAX = 'db.client.connections.idle.max' as const;\n\n/**\n * Deprecated, use `db.client.connection.idle.min` 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.idle.min`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MIN = 'db.client.connections.idle.min' as const;\n\n/**\n * Deprecated, use `db.client.connection.max` 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.max`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_MAX = 'db.client.connections.max' as const;\n\n/**\n * Deprecated, use `db.client.connection.pending_requests` 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.pending_requests`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS = 'db.client.connections.pending_requests' as const;\n\n/**\n * Deprecated, use `db.client.connection.timeouts` 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.timeouts`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_TIMEOUTS = 'db.client.connections.timeouts' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage' as const;\n\n/**\n * Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`.\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.use_time` with unit `s`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USE_TIME = 'db.client.connections.use_time' as const;\n\n/**\n * Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`.\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.wait_time` with unit `s`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME = 'db.client.connections.wait_time' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.client.active_instance.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 `azure.cosmosdb.client.active_instance.count`.\n */\nexport const METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT = 'db.client.cosmosdb.active_instance.count' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.client.operation.request_charge` 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 `azure.cosmosdb.client.operation.request_charge`.\n */\nexport const METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE = 'db.client.cosmosdb.operation.request_charge' as const;\n\n/**\n * The actual number of records returned by the database operation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS = 'db.client.response.returned_rows' as const;\n\n/**\n * Measures the time taken to perform a DNS lookup.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DNS_LOOKUP_DURATION = 'dns.lookup.duration' as const;\n\n/**\n * Number of invocation cold starts.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_COLDSTARTS = 'faas.coldstarts' as const;\n\n/**\n * Distribution of CPU usage per invocation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_CPU_USAGE = 'faas.cpu_usage' as const;\n\n/**\n * Number of invocation errors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_ERRORS = 'faas.errors' as const;\n\n/**\n * Measures the duration of the function's initialization, such as a cold start.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_INIT_DURATION = 'faas.init_duration' as const;\n\n/**\n * Number of successful invocations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_INVOCATIONS = 'faas.invocations' as const;\n\n/**\n * Measures the duration of the function's logic execution.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_INVOKE_DURATION = 'faas.invoke_duration' as const;\n\n/**\n * Distribution of max memory usage per invocation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_MEM_USAGE = 'faas.mem_usage' as const;\n\n/**\n * Distribution of net I/O usage per invocation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_NET_IO = 'faas.net_io' as const;\n\n/**\n * Number of invocation timeouts.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_TIMEOUTS = 'faas.timeouts' as const;\n\n/**\n * GenAI operation duration.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_CLIENT_OPERATION_DURATION = 'gen_ai.client.operation.duration' as const;\n\n/**\n * Number of input and output tokens used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_CLIENT_TOKEN_USAGE = 'gen_ai.client.token.usage' as const;\n\n/**\n * Generative AI server request duration such as time-to-last byte or last output token.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_SERVER_REQUEST_DURATION = 'gen_ai.server.request.duration' as const;\n\n/**\n * Time per output token generated after the first token for successful responses.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN = 'gen_ai.server.time_per_output_token' as const;\n\n/**\n * Time to generate first token for successful responses.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_SERVER_TIME_TO_FIRST_TOKEN = 'gen_ai.server.time_to_first_token' as const;\n\n/**\n * Heap size target percentage configured by the user, otherwise 100.\n *\n * @note The value range is [0.0,100.0]. Computed from `/gc/gogc:percent`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_CONFIG_GOGC = 'go.config.gogc' as const;\n\n/**\n * Count of live goroutines.\n *\n * @note Computed from `/sched/goroutines:goroutines`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_GOROUTINE_COUNT = 'go.goroutine.count' as const;\n\n/**\n * Memory allocated to the heap by the application.\n *\n * @note Computed from `/gc/heap/allocs:bytes`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_ALLOCATED = 'go.memory.allocated' as const;\n\n/**\n * Count of allocations to the heap by the application.\n *\n * @note Computed from `/gc/heap/allocs:objects`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_ALLOCATIONS = 'go.memory.allocations' as const;\n\n/**\n * Heap size target for the end of the GC cycle.\n *\n * @note Computed from `/gc/heap/goal:bytes`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_GC_GOAL = 'go.memory.gc.goal' as const;\n\n/**\n * Go runtime memory limit configured by the user, if a limit exists.\n *\n * @note Computed from `/gc/gomemlimit:bytes`. This metric is excluded if the limit obtained from the Go runtime is math.MaxInt64.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_LIMIT = 'go.memory.limit' as const;\n\n/**\n * Memory used by the Go runtime.\n *\n * @note Computed from `(/memory/classes/total:bytes - /memory/classes/heap/released:bytes)`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_USED = 'go.memory.used' as const;\n\n/**\n * The number of OS threads that can execute user-level Go code simultaneously.\n *\n * @note Computed from `/sched/gomaxprocs:threads`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_PROCESSOR_LIMIT = 'go.processor.limit' as const;\n\n/**\n * The time goroutines have spent in the scheduler in a runnable state before actually running.\n *\n * @note Computed from `/sched/latencies:seconds`. Bucket boundaries are provided by the runtime, and are subject to change.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_SCHEDULE_DURATION = 'go.schedule.duration' as const;\n\n/**\n * Number of active HTTP requests.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_ACTIVE_REQUESTS = 'http.client.active_requests' as const;\n\n/**\n * The duration of the successfully established outbound HTTP connections.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_CONNECTION_DURATION = 'http.client.connection.duration' as const;\n\n/**\n * Number of outbound HTTP connections that are currently active or idle on the client.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_OPEN_CONNECTIONS = 'http.client.open_connections' as const;\n\n/**\n * Size of HTTP client request bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_REQUEST_BODY_SIZE = 'http.client.request.body.size' as const;\n\n/**\n * Size of HTTP client response bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE = 'http.client.response.body.size' as const;\n\n/**\n * Number of active HTTP server requests.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_SERVER_ACTIVE_REQUESTS = 'http.server.active_requests' as const;\n\n/**\n * Size of HTTP server request bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_SERVER_REQUEST_BODY_SIZE = 'http.server.request.body.size' as const;\n\n/**\n * Size of HTTP server response bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_SERVER_RESPONSE_BODY_SIZE = 'http.server.response.body.size' as const;\n\n/**\n * Remaining fraction of battery charge.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_BATTERY_CHARGE = 'hw.battery.charge' as const;\n\n/**\n * Lower limit of battery charge fraction to ensure proper operation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_BATTERY_CHARGE_LIMIT = 'hw.battery.charge.limit' as const;\n\n/**\n * Time left before battery is completely charged or discharged.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_BATTERY_TIME_LEFT = 'hw.battery.time_left' as const;\n\n/**\n * CPU current frequency.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_CPU_SPEED = 'hw.cpu.speed' as const;\n\n/**\n * CPU maximum frequency.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_CPU_SPEED_LIMIT = 'hw.cpu.speed.limit' as const;\n\n/**\n * Energy consumed by the component.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_ENERGY = 'hw.energy' as const;\n\n/**\n * Number of errors encountered by the component.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_ERRORS = 'hw.errors' as const;\n\n/**\n * Fan speed in revolutions per minute.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_FAN_SPEED = 'hw.fan.speed' as const;\n\n/**\n * Speed limit in rpm.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_FAN_SPEED_LIMIT = 'hw.fan.speed.limit' as const;\n\n/**\n * Fan speed expressed as a fraction of its maximum speed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_FAN_SPEED_RATIO = 'hw.fan.speed_ratio' as const;\n\n/**\n * Received and transmitted bytes by the GPU.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_IO = 'hw.gpu.io' as const;\n\n/**\n * Size of the GPU memory.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_MEMORY_LIMIT = 'hw.gpu.memory.limit' as const;\n\n/**\n * GPU memory used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_MEMORY_USAGE = 'hw.gpu.memory.usage' as const;\n\n/**\n * Fraction of GPU memory used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_MEMORY_UTILIZATION = 'hw.gpu.memory.utilization' as const;\n\n/**\n * Fraction of time spent in a specific task.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_UTILIZATION = 'hw.gpu.utilization' as const;\n\n/**\n * Ambient (external) temperature of the physical host.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_AMBIENT_TEMPERATURE = 'hw.host.ambient_temperature' as const;\n\n/**\n * Total energy consumed by the entire physical host, in joules.\n *\n * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_ENERGY = 'hw.host.energy' as const;\n\n/**\n * By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_HEATING_MARGIN = 'hw.host.heating_margin' as const;\n\n/**\n * Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred).\n *\n * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_POWER = 'hw.host.power' as const;\n\n/**\n * Size of the logical disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_LOGICAL_DISK_LIMIT = 'hw.logical_disk.limit' as const;\n\n/**\n * Logical disk space usage.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_LOGICAL_DISK_USAGE = 'hw.logical_disk.usage' as const;\n\n/**\n * Logical disk space utilization as a fraction.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_LOGICAL_DISK_UTILIZATION = 'hw.logical_disk.utilization' as const;\n\n/**\n * Size of the memory module.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_MEMORY_SIZE = 'hw.memory.size' as const;\n\n/**\n * Link speed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_BANDWIDTH_LIMIT = 'hw.network.bandwidth.limit' as const;\n\n/**\n * Utilization of the network bandwidth as a fraction.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_BANDWIDTH_UTILIZATION = 'hw.network.bandwidth.utilization' as const;\n\n/**\n * Received and transmitted network traffic in bytes.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_IO = 'hw.network.io' as const;\n\n/**\n * Received and transmitted network traffic in packets (or frames).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_PACKETS = 'hw.network.packets' as const;\n\n/**\n * Link status: `1` (up) or `0` (down).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_UP = 'hw.network.up' as const;\n\n/**\n * Endurance remaining for this SSD disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_PHYSICAL_DISK_ENDURANCE_UTILIZATION = 'hw.physical_disk.endurance_utilization' as const;\n\n/**\n * Size of the disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_PHYSICAL_DISK_SIZE = 'hw.physical_disk.size' as const;\n\n/**\n * Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_PHYSICAL_DISK_SMART = 'hw.physical_disk.smart' as const;\n\n/**\n * Instantaneous power consumed by the component.\n *\n * @note It is recommended to report `hw.energy` instead of `hw.power` when possible.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER = 'hw.power' as const;\n\n/**\n * Maximum power output of the power supply.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER_SUPPLY_LIMIT = 'hw.power_supply.limit' as const;\n\n/**\n * Current power output of the power supply.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER_SUPPLY_USAGE = 'hw.power_supply.usage' as const;\n\n/**\n * Utilization of the power supply as a fraction of its maximum output.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER_SUPPLY_UTILIZATION = 'hw.power_supply.utilization' as const;\n\n/**\n * Operational status: `1` (true) or `0` (false) for each of the possible states.\n *\n * @note `hw.status` is currently specified as an *UpDownCounter* but would ideally be represented using a [*StateSet* as defined in OpenMetrics](https://github.com/prometheus/OpenMetrics/blob/v1.0.0/specification/OpenMetrics.md#stateset). This semantic convention will be updated once *StateSet* is specified in OpenTelemetry. This planned change is not expected to have any consequence on the way users query their timeseries backend to retrieve the values of `hw.status` over time.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_STATUS = 'hw.status' as const;\n\n/**\n * Operations performed by the tape drive.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_TAPE_DRIVE_OPERATIONS = 'hw.tape_drive.operations' as const;\n\n/**\n * Temperature in degrees Celsius.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_TEMPERATURE = 'hw.temperature' as const;\n\n/**\n * Temperature limit in degrees Celsius.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_TEMPERATURE_LIMIT = 'hw.temperature.limit' as const;\n\n/**\n * Voltage measured by the sensor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_VOLTAGE = 'hw.voltage' as const;\n\n/**\n * Voltage limit in Volts.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_VOLTAGE_LIMIT = 'hw.voltage.limit' as const;\n\n/**\n * Nominal (expected) voltage.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_VOLTAGE_NOMINAL = 'hw.voltage.nominal' as const;\n\n/**\n * Number of buffers in the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_BUFFER_COUNT = 'jvm.buffer.count' as const;\n\n/**\n * Measure of total memory capacity of buffers.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_BUFFER_MEMORY_LIMIT = 'jvm.buffer.memory.limit' as const;\n\n/**\n * Deprecated, use `jvm.buffer.memory.used` 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 `jvm.buffer.memory.used`.\n */\nexport const METRIC_JVM_BUFFER_MEMORY_USAGE = 'jvm.buffer.memory.usage' as const;\n\n/**\n * Measure of memory used by buffers.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_BUFFER_MEMORY_USED = 'jvm.buffer.memory.used' as const;\n\n/**\n * Number of open file descriptors as reported by the JVM.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_FILE_DESCRIPTOR_COUNT = 'jvm.file_descriptor.count' as const;\n\n/**\n * Measure of initial memory requested.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_MEMORY_INIT = 'jvm.memory.init' as const;\n\n/**\n * Average CPU load of the whole system for the last minute as reported by the JVM.\n *\n * @note The value range is [0,n], where n is the number of CPU cores - or a negative number if the value is not available. 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/java.management/java/lang/management/OperatingSystemMXBean.html#getSystemLoadAverage()).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_SYSTEM_CPU_LOAD_1M = 'jvm.system.cpu.load_1m' as const;\n\n/**\n * Recent CPU utilization for the whole system 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#getCpuLoad()).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_SYSTEM_CPU_UTILIZATION = 'jvm.system.cpu.utilization' as const;\n\n/**\n * Maximum CPU resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_LIMIT = 'k8s.container.cpu.limit' as const;\n\n/**\n * The ratio of container CPU usage to its CPU limit.\n *\n * @note The value range is [0.0,1.0]. A value of 1.0 means the container is using 100% of its CPU limit. If the CPU limit is not set, this metric **SHOULD NOT** be emitted for that container.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION = 'k8s.container.cpu.limit_utilization' as const;\n\n/**\n * CPU resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_REQUEST = 'k8s.container.cpu.request' as const;\n\n/**\n * The ratio of container CPU usage to its CPU request.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION = 'k8s.container.cpu.request_utilization' as const;\n\n/**\n * Maximum ephemeral storage resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_LIMIT = 'k8s.container.ephemeral_storage.limit' as const;\n\n/**\n * Ephemeral storage resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_REQUEST = 'k8s.container.ephemeral_storage.request' as const;\n\n/**\n * Maximum memory resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_MEMORY_LIMIT = 'k8s.container.memory.limit' as const;\n\n/**\n * Memory resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_MEMORY_REQUEST = 'k8s.container.memory.request' as const;\n\n/**\n * Indicates whether the container is currently marked as ready to accept traffic, based on its readiness probe (1 = ready, 0 = not ready).\n *\n * @note This metric **SHOULD** reflect the value of the `ready` field in the\n * [K8s ContainerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_READY = 'k8s.container.ready' as const;\n\n/**\n * Describes how many times the container has restarted (since the last counter reset).\n *\n * @note This value is pulled directly from the K8s API and the value can go indefinitely high and be reset to 0\n * at any time depending on how your kubelet is configured to prune dead containers.\n * It is best to not depend too much on the exact value but rather look at it as\n * either == 0, in which case you can conclude there were no restarts in the recent past, or > 0, in which case\n * you can conclude there were restarts in the recent past, and not try and analyze the value beyond that.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart.count' as const;\n\n/**\n * Describes the number of K8s containers that are currently in a state for a given reason.\n *\n * @note All possible container state reasons will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current state reason will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason' as const;\n\n/**\n * Describes the number of K8s containers that are currently in a given state.\n *\n * @note All possible container states will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current state will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state' as const;\n\n/**\n * Maximum storage resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STORAGE_LIMIT = 'k8s.container.storage.limit' as const;\n\n/**\n * Storage resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STORAGE_REQUEST = 'k8s.container.storage.request' as const;\n\n/**\n * Deprecated, use `k8s.cronjob.job.active` instead.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch).\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 `k8s.cronjob.job.active`.\n */\nexport const METRIC_K8S_CRONJOB_ACTIVE_JOBS = 'k8s.cronjob.active_jobs' as const;\n\n/**\n * The number of actively running jobs for a cronjob.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CRONJOB_JOB_ACTIVE = 'k8s.cronjob.job.active' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.current_scheduled` instead.\n *\n * @note This metric aligns with the `currentNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.current_scheduled`.\n */\nexport const METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES = 'k8s.daemonset.current_scheduled_nodes' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.desired_scheduled` instead.\n *\n * @note This metric aligns with the `desiredNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.desired_scheduled`.\n */\nexport const METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES = 'k8s.daemonset.desired_scheduled_nodes' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.misscheduled` instead.\n *\n * @note This metric aligns with the `numberMisscheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.misscheduled`.\n */\nexport const METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES = 'k8s.daemonset.misscheduled_nodes' as const;\n\n/**\n * Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod.\n *\n * @note This metric aligns with the `currentNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED = 'k8s.daemonset.node.current_scheduled' as const;\n\n/**\n * Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod).\n *\n * @note This metric aligns with the `desiredNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED = 'k8s.daemonset.node.desired_scheduled' as const;\n\n/**\n * Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod.\n *\n * @note This metric aligns with the `numberMisscheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED = 'k8s.daemonset.node.misscheduled' as const;\n\n/**\n * Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.\n *\n * @note This metric aligns with the `numberReady` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_READY = 'k8s.daemonset.node.ready' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.ready` instead.\n *\n * @note This metric aligns with the `numberReady` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.ready`.\n */\nexport const METRIC_K8S_DAEMONSET_READY_NODES = 'k8s.daemonset.ready_nodes' as const;\n\n/**\n * Deprecated, use `k8s.deployment.pod.available` instead.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps).\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 `k8s.deployment.pod.available`.\n */\nexport const METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS = 'k8s.deployment.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.deployment.pod.desired` instead.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps).\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 `k8s.deployment.pod.desired`.\n */\nexport const METRIC_K8S_DEPLOYMENT_DESIRED_PODS = 'k8s.deployment.desired_pods' as const;\n\n/**\n * Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DEPLOYMENT_POD_AVAILABLE = 'k8s.deployment.pod.available' as const;\n\n/**\n * Number of desired replica pods in this deployment.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DEPLOYMENT_POD_DESIRED = 'k8s.deployment.pod.desired' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.current` instead.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\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 `k8s.hpa.pod.current`.\n */\nexport const METRIC_K8S_HPA_CURRENT_PODS = 'k8s.hpa.current_pods' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.desired` instead.\n *\n * @note This metric aligns with the `desiredReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\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 `k8s.hpa.pod.desired`.\n */\nexport const METRIC_K8S_HPA_DESIRED_PODS = 'k8s.hpa.desired_pods' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.max` instead.\n *\n * @note This metric aligns with the `maxReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\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 `k8s.hpa.pod.max`.\n */\nexport const METRIC_K8S_HPA_MAX_PODS = 'k8s.hpa.max_pods' as const;\n\n/**\n * Target average utilization, in percentage, for CPU resource in HPA config.\n *\n * @note This metric aligns with the `averageUtilization` field of the\n * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling).\n * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis),\n * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_UTILIZATION = 'k8s.hpa.metric.target.cpu.average_utilization' as const;\n\n/**\n * Target average value for CPU resource in HPA config.\n *\n * @note This metric aligns with the `averageValue` field of the\n * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling).\n * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis),\n * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_VALUE = 'k8s.hpa.metric.target.cpu.average_value' as const;\n\n/**\n * Target value for CPU resource in HPA config.\n *\n * @note This metric aligns with the `value` field of the\n * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling).\n * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis),\n * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_METRIC_TARGET_CPU_VALUE = 'k8s.hpa.metric.target.cpu.value' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.min` instead.\n *\n * @note This metric aligns with the `minReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\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 `k8s.hpa.pod.min`.\n */\nexport const METRIC_K8S_HPA_MIN_PODS = 'k8s.hpa.min_pods' as const;\n\n/**\n * Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_CURRENT = 'k8s.hpa.pod.current' as const;\n\n/**\n * Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler.\n *\n * @note This metric aligns with the `desiredReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_DESIRED = 'k8s.hpa.pod.desired' as const;\n\n/**\n * The upper limit for the number of replica pods to which the autoscaler can scale up.\n *\n * @note This metric aligns with the `maxReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_MAX = 'k8s.hpa.pod.max' as const;\n\n/**\n * The lower limit for the number of replica pods to which the autoscaler can scale down.\n *\n * @note This metric aligns with the `minReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_MIN = 'k8s.hpa.pod.min' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.active` instead.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\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 `k8s.job.pod.active`.\n */\nexport const METRIC_K8S_JOB_ACTIVE_PODS = 'k8s.job.active_pods' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.desired_successful` instead.\n *\n * @note This metric aligns with the `completions` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch)..\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 `k8s.job.pod.desired_successful`.\n */\nexport const METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS = 'k8s.job.desired_successful_pods' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.failed` instead.\n *\n * @note This metric aligns with the `failed` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\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 `k8s.job.pod.failed`.\n */\nexport const METRIC_K8S_JOB_FAILED_PODS = 'k8s.job.failed_pods' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.max_parallel` instead.\n *\n * @note This metric aligns with the `parallelism` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).\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 `k8s.job.pod.max_parallel`.\n */\nexport const METRIC_K8S_JOB_MAX_PARALLEL_PODS = 'k8s.job.max_parallel_pods' as const;\n\n/**\n * The number of pending and actively running pods for a job.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_ACTIVE = 'k8s.job.pod.active' as const;\n\n/**\n * The desired number of successfully finished pods the job should be run with.\n *\n * @note This metric aligns with the `completions` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch)..\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL = 'k8s.job.pod.desired_successful' as const;\n\n/**\n * The number of pods which reached phase Failed for a job.\n *\n * @note This metric aligns with the `failed` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_FAILED = 'k8s.job.pod.failed' as const;\n\n/**\n * The max desired number of pods the job should run at any given time.\n *\n * @note This metric aligns with the `parallelism` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_MAX_PARALLEL = 'k8s.job.pod.max_parallel' as const;\n\n/**\n * The number of pods which reached phase Succeeded for a job.\n *\n * @note This metric aligns with the `succeeded` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_SUCCESSFUL = 'k8s.job.pod.successful' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.successful` instead.\n *\n * @note This metric aligns with the `succeeded` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\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 `k8s.job.pod.successful`.\n */\nexport const METRIC_K8S_JOB_SUCCESSFUL_PODS = 'k8s.job.successful_pods' as const;\n\n/**\n * Describes number of K8s namespaces that are currently in a given phase.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase' as const;\n\n/**\n * Deprecated, use `k8s.node.cpu.allocatable` 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 `k8s.node.cpu.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_CPU = 'k8s.node.allocatable.cpu' as const;\n\n/**\n * Deprecated, use `k8s.node.ephemeral_storage.allocatable` 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 `k8s.node.ephemeral_storage.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE = 'k8s.node.allocatable.ephemeral_storage' as const;\n\n/**\n * Deprecated, use `k8s.node.memory.allocatable` 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 `k8s.node.memory.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_MEMORY = 'k8s.node.allocatable.memory' as const;\n\n/**\n * Deprecated, use `k8s.node.pod.allocatable` 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 `k8s.node.pod.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_PODS = 'k8s.node.allocatable.pods' as const;\n\n/**\n * Describes the condition of a particular Node.\n *\n * @note All possible node condition pairs (type and status) will be reported at each time interval to avoid missing metrics. Condition pairs corresponding to the current conditions' statuses will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status' as const;\n\n/**\n * Amount of cpu allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CPU_ALLOCATABLE = 'k8s.node.cpu.allocatable' as const;\n\n/**\n * Total CPU time consumed.\n *\n * @note Total CPU time consumed by the specific Node on all available CPU cores\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CPU_TIME = 'k8s.node.cpu.time' as const;\n\n/**\n * Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs.\n *\n * @note CPU usage of the specific Node on all available CPU cores, averaged over the sample window\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CPU_USAGE = 'k8s.node.cpu.usage' as const;\n\n/**\n * Amount of ephemeral-storage allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE = 'k8s.node.ephemeral_storage.allocatable' as const;\n\n/**\n * Node filesystem available bytes.\n *\n * @note This metric is derived from the\n * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_FILESYSTEM_AVAILABLE = 'k8s.node.filesystem.available' as const;\n\n/**\n * Node filesystem capacity.\n *\n * @note This metric is derived from the\n * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_FILESYSTEM_CAPACITY = 'k8s.node.filesystem.capacity' as const;\n\n/**\n * Node filesystem usage.\n *\n * @note This may not equal capacity - available.\n *\n * This metric is derived from the\n * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_FILESYSTEM_USAGE = 'k8s.node.filesystem.usage' as const;\n\n/**\n * Amount of memory allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_ALLOCATABLE = 'k8s.node.memory.allocatable' as const;\n\n/**\n * Node memory available.\n *\n * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted.\n * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_AVAILABLE = 'k8s.node.memory.available' as const;\n\n/**\n * Node memory paging faults.\n *\n * @note Cumulative number of major/minor page faults.\n * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) fields of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_PAGING_FAULTS = 'k8s.node.memory.paging.faults' as const;\n\n/**\n * Node memory RSS.\n *\n * @note The amount of anonymous and swap cache memory (includes transparent hugepages).\n * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_RSS = 'k8s.node.memory.rss' as const;\n\n/**\n * Memory usage of the Node.\n *\n * @note Total memory usage of the Node\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_USAGE = 'k8s.node.memory.usage' as const;\n\n/**\n * Node memory working set.\n *\n * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes.\n * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_WORKING_SET = 'k8s.node.memory.working_set' as const;\n\n/**\n * Node network errors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_NETWORK_ERRORS = 'k8s.node.network.errors' as const;\n\n/**\n * Network bytes for the Node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_NETWORK_IO = 'k8s.node.network.io' as const;\n\n/**\n * Amount of pods allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_POD_ALLOCATABLE = 'k8s.node.pod.allocatable' as const;\n\n/**\n * The time the Node has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_UPTIME = 'k8s.node.uptime' as const;\n\n/**\n * Total CPU time consumed.\n *\n * @note Total CPU time consumed by the specific Pod on all available CPU cores\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_CPU_TIME = 'k8s.pod.cpu.time' as const;\n\n/**\n * Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs.\n *\n * @note CPU usage of the specific Pod on all available CPU cores, averaged over the sample window\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_CPU_USAGE = 'k8s.pod.cpu.usage' as const;\n\n/**\n * Pod filesystem available bytes.\n *\n * @note This metric is derived from the\n * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_FILESYSTEM_AVAILABLE = 'k8s.pod.filesystem.available' as const;\n\n/**\n * Pod filesystem capacity.\n *\n * @note This metric is derived from the\n * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_FILESYSTEM_CAPACITY = 'k8s.pod.filesystem.capacity' as const;\n\n/**\n * Pod filesystem usage.\n *\n * @note This may not equal capacity - available.\n *\n * This metric is derived from the\n * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_FILESYSTEM_USAGE = 'k8s.pod.filesystem.usage' as const;\n\n/**\n * Pod memory available.\n *\n * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted.\n * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_AVAILABLE = 'k8s.pod.memory.available' as const;\n\n/**\n * Pod memory paging faults.\n *\n * @note Cumulative number of major/minor page faults.\n * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_PAGING_FAULTS = 'k8s.pod.memory.paging.faults' as const;\n\n/**\n * Pod memory RSS.\n *\n * @note The amount of anonymous and swap cache memory (includes transparent hugepages).\n * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_RSS = 'k8s.pod.memory.rss' as const;\n\n/**\n * Memory usage of the Pod.\n *\n * @note Total memory usage of the Pod\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_USAGE = 'k8s.pod.memory.usage' as const;\n\n/**\n * Pod memory working set.\n *\n * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes.\n * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_WORKING_SET = 'k8s.pod.memory.working_set' as const;\n\n/**\n * Pod network errors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_NETWORK_ERRORS = 'k8s.pod.network.errors' as const;\n\n/**\n * Network bytes for the Pod.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_NETWORK_IO = 'k8s.pod.network.io' as const;\n\n/**\n * Describes number of K8s Pods that are currently in a given phase.\n *\n * @note All possible pod phases will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current phase will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase' as const;\n\n/**\n * Describes the number of K8s Pods that are currently in a state for a given reason.\n *\n * @note All possible pod status reasons will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current reason will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason' as const;\n\n/**\n * The time the Pod has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_UPTIME = 'k8s.pod.uptime' as const;\n\n/**\n * Pod volume storage space available.\n *\n * @note This metric is derived from the\n * [VolumeStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_AVAILABLE = 'k8s.pod.volume.available' as const;\n\n/**\n * Pod volume total capacity.\n *\n * @note This metric is derived from the\n * [VolumeStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_CAPACITY = 'k8s.pod.volume.capacity' as const;\n\n/**\n * The total inodes in the filesystem of the Pod's volume.\n *\n * @note This metric is derived from the\n * [VolumeStats.Inodes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_INODE_COUNT = 'k8s.pod.volume.inode.count' as const;\n\n/**\n * The free inodes in the filesystem of the Pod's volume.\n *\n * @note This metric is derived from the\n * [VolumeStats.InodesFree](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_INODE_FREE = 'k8s.pod.volume.inode.free' as const;\n\n/**\n * The inodes used by the filesystem of the Pod's volume.\n *\n * @note This metric is derived from the\n * [VolumeStats.InodesUsed](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * This may not be equal to `inodes - free` because filesystem may share inodes with other filesystems.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_INODE_USED = 'k8s.pod.volume.inode.used' as const;\n\n/**\n * Pod volume usage.\n *\n * @note This may not equal capacity - available.\n *\n * This metric is derived from the\n * [VolumeStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_USAGE = 'k8s.pod.volume.usage' as const;\n\n/**\n * Deprecated, use `k8s.replicaset.pod.available` instead.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps).\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 `k8s.replicaset.pod.available`.\n */\nexport const METRIC_K8S_REPLICASET_AVAILABLE_PODS = 'k8s.replicaset.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicaset.pod.desired` instead.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps).\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 `k8s.replicaset.pod.desired`.\n */\nexport const METRIC_K8S_REPLICASET_DESIRED_PODS = 'k8s.replicaset.desired_pods' as const;\n\n/**\n * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICASET_POD_AVAILABLE = 'k8s.replicaset.pod.available' as const;\n\n/**\n * Number of desired replica pods in this replicaset.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICASET_POD_DESIRED = 'k8s.replicaset.pod.desired' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.available` 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 `k8s.replicationcontroller.pod.available`.\n */\nexport const METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS = 'k8s.replication_controller.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.desired` 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 `k8s.replicationcontroller.pod.desired`.\n */\nexport const METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS = 'k8s.replication_controller.desired_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.available` 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 `k8s.replicationcontroller.pod.available`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS = 'k8s.replicationcontroller.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.desired` 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 `k8s.replicationcontroller.pod.desired`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS = 'k8s.replicationcontroller.desired_pods' as const;\n\n/**\n * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s ReplicationControllerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerstatus-v1-core)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE = 'k8s.replicationcontroller.pod.available' as const;\n\n/**\n * Number of desired replica pods in this replication controller.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s ReplicationControllerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerspec-v1-core)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED = 'k8s.replicationcontroller.pod.desired' as const;\n\n/**\n * The CPU limits in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_HARD = 'k8s.resourcequota.cpu.limit.hard' as const;\n\n/**\n * The CPU limits in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_USED = 'k8s.resourcequota.cpu.limit.used' as const;\n\n/**\n * The CPU requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_HARD = 'k8s.resourcequota.cpu.request.hard' as const;\n\n/**\n * The CPU requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_USED = 'k8s.resourcequota.cpu.request.used' as const;\n\n/**\n * The sum of local ephemeral storage limits in the namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'k8s.resourcequota.ephemeral_storage.limit.hard' as const;\n\n/**\n * The sum of local ephemeral storage limits in the namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'k8s.resourcequota.ephemeral_storage.limit.used' as const;\n\n/**\n * The sum of local ephemeral storage requests in the namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'k8s.resourcequota.ephemeral_storage.request.hard' as const;\n\n/**\n * The sum of local ephemeral storage requests in the namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'k8s.resourcequota.ephemeral_storage.request.used' as const;\n\n/**\n * The huge page requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'k8s.resourcequota.hugepage_count.request.hard' as const;\n\n/**\n * The huge page requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'k8s.resourcequota.hugepage_count.request.used' as const;\n\n/**\n * The memory limits in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_HARD = 'k8s.resourcequota.memory.limit.hard' as const;\n\n/**\n * The memory limits in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_USED = 'k8s.resourcequota.memory.limit.used' as const;\n\n/**\n * The memory requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_HARD = 'k8s.resourcequota.memory.request.hard' as const;\n\n/**\n * The memory requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_USED = 'k8s.resourcequota.memory.request.used' as const;\n\n/**\n * The object count limits in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_HARD = 'k8s.resourcequota.object_count.hard' as const;\n\n/**\n * The object count limits in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_USED = 'k8s.resourcequota.object_count.used' as const;\n\n/**\n * The total number of PersistentVolumeClaims that can exist in the namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'k8s.resourcequota.persistentvolumeclaim_count.hard' as const;\n\n/**\n * The total number of PersistentVolumeClaims that can exist in the namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'k8s.resourcequota.persistentvolumeclaim_count.used' as const;\n\n/**\n * The storage requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_HARD = 'k8s.resourcequota.storage.request.hard' as const;\n\n/**\n * The storage requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_USED = 'k8s.resourcequota.storage.request.used' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.current` instead.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\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 `k8s.statefulset.pod.current`.\n */\nexport const METRIC_K8S_STATEFULSET_CURRENT_PODS = 'k8s.statefulset.current_pods' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.desired` instead.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps).\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 `k8s.statefulset.pod.desired`.\n */\nexport const METRIC_K8S_STATEFULSET_DESIRED_PODS = 'k8s.statefulset.desired_pods' as const;\n\n/**\n * The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_CURRENT = 'k8s.statefulset.pod.current' as const;\n\n/**\n * Number of desired replica pods in this statefulset.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_DESIRED = 'k8s.statefulset.pod.desired' as const;\n\n/**\n * The number of replica pods created for this statefulset with a Ready Condition.\n *\n * @note This metric aligns with the `readyReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_READY = 'k8s.statefulset.pod.ready' as const;\n\n/**\n * Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision.\n *\n * @note This metric aligns with the `updatedReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_UPDATED = 'k8s.statefulset.pod.updated' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.ready` instead.\n *\n * @note This metric aligns with the `readyReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\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 `k8s.statefulset.pod.ready`.\n */\nexport const METRIC_K8S_STATEFULSET_READY_PODS = 'k8s.statefulset.ready_pods' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.updated` instead.\n *\n * @note This metric aligns with the `updatedReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\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 `k8s.statefulset.pod.updated`.\n */\nexport const METRIC_K8S_STATEFULSET_UPDATED_PODS = 'k8s.statefulset.updated_pods' as const;\n\n/**\n * The duration of the MCP request or notification as observed on the sender from the time it was sent until the response or ack is received.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_CLIENT_OPERATION_DURATION = 'mcp.client.operation.duration' as const;\n\n/**\n * The duration of the MCP session as observed on the MCP client.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_CLIENT_SESSION_DURATION = 'mcp.client.session.duration' as const;\n\n/**\n * MCP request or notification duration as observed on the receiver from the time it was received until the result or ack is sent.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_SERVER_OPERATION_DURATION = 'mcp.server.operation.duration' as const;\n\n/**\n * The duration of the MCP session as observed on the MCP server.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_SERVER_SESSION_DURATION = 'mcp.server.session.duration' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = 'messaging.client.consumed.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_OPERATION_DURATION = 'messaging.client.operation.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.sent.messages` 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 `messaging.client.sent.messages`.\n */\nexport const METRIC_MESSAGING_CLIENT_PUBLISHED_MESSAGES = 'messaging.client.published.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_SENT_MESSAGES = 'messaging.client.sent.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_PROCESS_DURATION = 'messaging.process.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.consumed.messages` 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 `messaging.client.consumed.messages`.\n */\nexport const METRIC_MESSAGING_PROCESS_MESSAGES = 'messaging.process.messages' as const;\n\n/**\n * Deprecated. Use `messaging.client.operation.duration` 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 `messaging.client.operation.duration`.\n */\nexport const METRIC_MESSAGING_PUBLISH_DURATION = 'messaging.publish.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.sent.messages` 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 `messaging.client.sent.messages`.\n */\nexport const METRIC_MESSAGING_PUBLISH_MESSAGES = 'messaging.publish.messages' as const;\n\n/**\n * Deprecated. Use `messaging.client.operation.duration` 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 `messaging.client.operation.duration`.\n */\nexport const METRIC_MESSAGING_RECEIVE_DURATION = 'messaging.receive.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.consumed.messages` 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 `messaging.client.consumed.messages`.\n */\nexport const METRIC_MESSAGING_RECEIVE_MESSAGES = 'messaging.receive.messages' as const;\n\n/**\n * Reports the count of kernel NFS client TCP segments and UDP datagrams handled.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.netudpcnt and svc_stat.nettcpcnt\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_NET_COUNT = 'nfs.client.net.count' as const;\n\n/**\n * Reports the count of kernel NFS client TCP connections accepted.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_NET_TCP_CONNECTION_ACCEPTED = 'nfs.client.net.tcp.connection.accepted' as const;\n\n/**\n * Reports the count of kernel NFSv4+ client operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_OPERATION_COUNT = 'nfs.client.operation.count' as const;\n\n/**\n * Reports the count of kernel NFS client procedures.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_PROCEDURE_COUNT = 'nfs.client.procedure.count' as const;\n\n/**\n * Reports the count of kernel NFS client RPC authentication refreshes.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcauthrefresh\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_RPC_AUTHREFRESH_COUNT = 'nfs.client.rpc.authrefresh.count' as const;\n\n/**\n * Reports the count of kernel NFS client RPCs sent, regardless of whether they're accepted/rejected by the server.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_RPC_COUNT = 'nfs.client.rpc.count' as const;\n\n/**\n * Reports the count of kernel NFS client RPC retransmits.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcretrans\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_RPC_RETRANSMIT_COUNT = 'nfs.client.rpc.retransmit.count' as const;\n\n/**\n * Reports the count of kernel NFS server stale file handles.\n *\n * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_FH_STALE counter in the nfsd_net struct\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_FH_STALE_COUNT = 'nfs.server.fh.stale.count' as const;\n\n/**\n * Reports the count of kernel NFS server bytes returned to receive and transmit (read and write) requests.\n *\n * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_IO_READ and NFSD_STATS_IO_WRITE counters in the nfsd_net struct\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_IO = 'nfs.server.io' as const;\n\n/**\n * Reports the count of kernel NFS server TCP segments and UDP datagrams handled.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpcnt and svc_stat.netudpcnt\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_NET_COUNT = 'nfs.server.net.count' as const;\n\n/**\n * Reports the count of kernel NFS server TCP connections accepted.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_NET_TCP_CONNECTION_ACCEPTED = 'nfs.server.net.tcp.connection.accepted' as const;\n\n/**\n * Reports the count of kernel NFSv4+ server operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_OPERATION_COUNT = 'nfs.server.operation.count' as const;\n\n/**\n * Reports the count of kernel NFS server procedures.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_PROCEDURE_COUNT = 'nfs.server.procedure.count' as const;\n\n/**\n * Reports the kernel NFS server reply cache request count by cache hit status.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_REPCACHE_REQUESTS = 'nfs.server.repcache.requests' as const;\n\n/**\n * Reports the count of kernel NFS server RPCs handled.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt, the count of good RPCs. This metric can have\n * an error.type of \"format\", \"auth\", or \"client\" for svc_stat.badfmt, svc_stat.badauth, and svc_stat.badclnt.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_RPC_COUNT = 'nfs.server.rpc.count' as const;\n\n/**\n * Reports the count of kernel NFS server available threads.\n *\n * @note Linux: this metric is taken from the Linux kernel nfsd_th_cnt variable\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_THREAD_COUNT = 'nfs.server.thread.count' as const;\n\n/**\n * Event loop maximum delay.\n *\n * @note Value can be retrieved from value `histogram.max` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_MAX = 'nodejs.eventloop.delay.max' as const;\n\n/**\n * Event loop mean delay.\n *\n * @note Value can be retrieved from value `histogram.mean` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_MEAN = 'nodejs.eventloop.delay.mean' as const;\n\n/**\n * Event loop minimum delay.\n *\n * @note Value can be retrieved from value `histogram.min` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_MIN = 'nodejs.eventloop.delay.min' as const;\n\n/**\n * Event loop 50 percentile delay.\n *\n * @note Value can be retrieved from value `histogram.percentile(50)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_P50 = 'nodejs.eventloop.delay.p50' as const;\n\n/**\n * Event loop 90 percentile delay.\n *\n * @note Value can be retrieved from value `histogram.percentile(90)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_P90 = 'nodejs.eventloop.delay.p90' as const;\n\n/**\n * Event loop 99 percentile delay.\n *\n * @note Value can be retrieved from value `histogram.percentile(99)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_P99 = 'nodejs.eventloop.delay.p99' as const;\n\n/**\n * Event loop standard deviation delay.\n *\n * @note Value can be retrieved from value `histogram.stddev` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_STDDEV = 'nodejs.eventloop.delay.stddev' as const;\n\n/**\n * Cumulative duration of time the event loop has been in each state.\n *\n * @note Value can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_TIME = 'nodejs.eventloop.time' as const;\n\n/**\n * Event loop utilization.\n *\n * @note The value range is [0.0, 1.0] and can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_UTILIZATION = 'nodejs.eventloop.utilization' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_HARD = 'openshift.clusterquota.cpu.limit.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_USED = 'openshift.clusterquota.cpu.limit.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_HARD = 'openshift.clusterquota.cpu.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_USED = 'openshift.clusterquota.cpu.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'openshift.clusterquota.ephemeral_storage.limit.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'openshift.clusterquota.ephemeral_storage.limit.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'openshift.clusterquota.ephemeral_storage.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'openshift.clusterquota.ephemeral_storage.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'openshift.clusterquota.hugepage_count.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'openshift.clusterquota.hugepage_count.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_HARD = 'openshift.clusterquota.memory.limit.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_USED = 'openshift.clusterquota.memory.limit.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_HARD = 'openshift.clusterquota.memory.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_USED = 'openshift.clusterquota.memory.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_HARD = 'openshift.clusterquota.object_count.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_USED = 'openshift.clusterquota.object_count.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'openshift.clusterquota.persistentvolumeclaim_count.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'openshift.clusterquota.persistentvolumeclaim_count.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_HARD = 'openshift.clusterquota.storage.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_USED = 'openshift.clusterquota.storage.request.used' as const;\n\n/**\n * The number of log records for which the export has finished, either successful or failed.\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n * For exporters with partial success semantics (e.g. OTLP with `rejected_log_records`), rejected log records **MUST** count as failed and only non-rejected log records count as success.\n * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_LOG_EXPORTED = 'otel.sdk.exporter.log.exported' as const;\n\n/**\n * The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_LOG_INFLIGHT = 'otel.sdk.exporter.log.inflight' as const;\n\n/**\n * The number of metric data points for which the export has finished, either successful or failed.\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n * For exporters with partial success semantics (e.g. OTLP with `rejected_data_points`), rejected data points **MUST** count as failed and only non-rejected data points count as success.\n * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_EXPORTED = 'otel.sdk.exporter.metric_data_point.exported' as const;\n\n/**\n * The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_INFLIGHT = 'otel.sdk.exporter.metric_data_point.inflight' as const;\n\n/**\n * The duration of exporting a batch of telemetry records.\n *\n * @note This metric defines successful operations using the full success definitions for [http](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1)\n * and [grpc](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success). Anything else is defined as an unsuccessful operation. For successful\n * operations, `error.type` **MUST NOT** be set. For unsuccessful export operations, `error.type` **MUST** contain a relevant failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_OPERATION_DURATION = 'otel.sdk.exporter.operation.duration' as const;\n\n/**\n * The number of spans for which the export has finished, either successful or failed.\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n * For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans **MUST** count as failed and only non-rejected spans count as success.\n * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED = 'otel.sdk.exporter.span.exported' as const;\n\n/**\n * Deprecated, use `otel.sdk.exporter.span.exported` 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 `otel.sdk.exporter.span.exported`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT = 'otel.sdk.exporter.span.exported.count' as const;\n\n/**\n * The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT = 'otel.sdk.exporter.span.inflight' as const;\n\n/**\n * Deprecated, use `otel.sdk.exporter.span.inflight` 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 `otel.sdk.exporter.span.inflight`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT = 'otel.sdk.exporter.span.inflight.count' as const;\n\n/**\n * The number of logs submitted to enabled SDK Loggers.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_LOG_CREATED = 'otel.sdk.log.created' as const;\n\n/**\n * The duration of the collect operation of the metric reader.\n *\n * @note For successful collections, `error.type` **MUST NOT** be set. For failed collections, `error.type` **SHOULD** contain the failure cause.\n * It can happen that metrics collection is successful for some MetricProducers, while others fail. In that case `error.type` **SHOULD** be set to any of the failure causes.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_METRIC_READER_COLLECTION_DURATION = 'otel.sdk.metric_reader.collection.duration' as const;\n\n/**\n * The number of log records for which the processing has finished, either successful or failed.\n *\n * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause.\n * For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter,\n * not when the corresponding export call has finished.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED = 'otel.sdk.processor.log.processed' as const;\n\n/**\n * The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold.\n *\n * @note Only applies to Log Record processors which use a queue, e.g. the SDK Batching Log Record Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY = 'otel.sdk.processor.log.queue.capacity' as const;\n\n/**\n * The number of log records in the queue of a given instance of an SDK log processor.\n *\n * @note Only applies to log record processors which use a queue, e.g. the SDK Batching Log Record Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE = 'otel.sdk.processor.log.queue.size' as const;\n\n/**\n * The number of spans for which the processing has finished, either successful or failed.\n *\n * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause.\n * For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED = 'otel.sdk.processor.span.processed' as const;\n\n/**\n * Deprecated, use `otel.sdk.processor.span.processed` 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 `otel.sdk.processor.span.processed`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT = 'otel.sdk.processor.span.processed.count' as const;\n\n/**\n * The maximum number of spans the queue of a given instance of an SDK span processor can hold.\n *\n * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY = 'otel.sdk.processor.span.queue.capacity' as const;\n\n/**\n * The number of spans in the queue of a given instance of an SDK span processor.\n *\n * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE = 'otel.sdk.processor.span.queue.size' as const;\n\n/**\n * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Obsoleted.\n */\nexport const METRIC_OTEL_SDK_SPAN_ENDED = 'otel.sdk.span.ended' as const;\n\n/**\n * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Obsoleted.\n */\nexport const METRIC_OTEL_SDK_SPAN_ENDED_COUNT = 'otel.sdk.span.ended.count' as const;\n\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 */\nexport const METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live' as const;\n\n/**\n * Deprecated, use `otel.sdk.span.live` 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 `otel.sdk.span.live`.\n */\nexport const METRIC_OTEL_SDK_SPAN_LIVE_COUNT = 'otel.sdk.span.live.count' as const;\n\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 */\nexport const METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started' as const;\n\n/**\n * Number of times the process has been context switched.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_CONTEXT_SWITCHES = 'process.context_switches' as const;\n\n/**\n * Total CPU seconds broken down by different states.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_CPU_TIME = 'process.cpu.time' as const;\n\n/**\n * Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_CPU_UTILIZATION = 'process.cpu.utilization' as const;\n\n/**\n * Disk bytes transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_DISK_IO = 'process.disk.io' as const;\n\n/**\n * The amount of physical memory in use.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_MEMORY_USAGE = 'process.memory.usage' as const;\n\n/**\n * The amount of committed virtual memory.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_MEMORY_VIRTUAL = 'process.memory.virtual' as const;\n\n/**\n * Network bytes transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_NETWORK_IO = 'process.network.io' as const;\n\n/**\n * Deprecated, use `process.unix.file_descriptor.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 `process.unix.file_descriptor.count`.\n */\nexport const METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT = 'process.open_file_descriptor.count' as const;\n\n/**\n * Number of page faults the process has made.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_PAGING_FAULTS = 'process.paging.faults' as const;\n\n/**\n * Process threads count.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_THREAD_COUNT = 'process.thread.count' as const;\n\n/**\n * Number of unix file descriptors in use by the process.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT = 'process.unix.file_descriptor.count' as const;\n\n/**\n * The time the process has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_UPTIME = 'process.uptime' as const;\n\n/**\n * Number of handles held by the process.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_WINDOWS_HANDLE_COUNT = 'process.windows.handle.count' as const;\n\n/**\n * Measures the duration of outbound remote procedure calls (RPC).\n *\n * @note When this metric is reported alongside an RPC client span, the metric value\n * **SHOULD** be the same as the RPC client span duration.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_CLIENT_CALL_DURATION = 'rpc.client.call.duration' as const;\n\n/**\n * Deprecated, use `rpc.client.call.duration` instead. Note: the unit also changed from `ms` to `s`.\n *\n * @note While streaming RPCs may record this metric as start-of-batch\n * to end-of-batch, it's hard to interpret in practice.\n *\n * **Streaming**: N/A.\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 `rpc.client.call.duration` with unit `s`.\n */\nexport const METRIC_RPC_CLIENT_DURATION = 'rpc.client.duration' as const;\n\n/**\n * Measures the size of RPC request messages (uncompressed).\n *\n * @note **Streaming**: Recorded per message in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_CLIENT_REQUEST_SIZE = 'rpc.client.request.size' as const;\n\n/**\n * Measures the number of messages received per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming**: This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_CLIENT_REQUESTS_PER_RPC = 'rpc.client.requests_per_rpc' as const;\n\n/**\n * Measures the size of RPC response messages (uncompressed).\n *\n * @note **Streaming**: Recorded per response in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_CLIENT_RESPONSE_SIZE = 'rpc.client.response.size' as const;\n\n/**\n * Measures the number of messages sent per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming**: This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_CLIENT_RESPONSES_PER_RPC = 'rpc.client.responses_per_rpc' as const;\n\n/**\n * Measures the duration of inbound remote procedure calls (RPC).\n *\n * @note When this metric is reported alongside an RPC server span, the metric value\n * **SHOULD** be the same as the RPC server span duration.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_SERVER_CALL_DURATION = 'rpc.server.call.duration' as const;\n\n/**\n * Deprecated, use `rpc.server.call.duration` instead. Note: the unit also changed from `ms` to `s`.\n *\n * @note While streaming RPCs may record this metric as start-of-batch\n * to end-of-batch, it's hard to interpret in practice.\n *\n * **Streaming**: N/A.\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 `rpc.server.call.duration` with unit `s`.\n */\nexport const METRIC_RPC_SERVER_DURATION = 'rpc.server.duration' as const;\n\n/**\n * Measures the size of RPC request messages (uncompressed).\n *\n * @note **Streaming**: Recorded per message in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_SERVER_REQUEST_SIZE = 'rpc.server.request.size' as const;\n\n/**\n * Measures the number of messages received per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming** : This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_SERVER_REQUESTS_PER_RPC = 'rpc.server.requests_per_rpc' as const;\n\n/**\n * Measures the size of RPC response messages (uncompressed).\n *\n * @note **Streaming**: Recorded per response in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_SERVER_RESPONSE_SIZE = 'rpc.server.response.size' as const;\n\n/**\n * Measures the number of messages sent per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming**: This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_SERVER_RESPONSES_PER_RPC = 'rpc.server.responses_per_rpc' as const;\n\n/**\n * Operating frequency of the logical CPU in Hertz.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_FREQUENCY = 'system.cpu.frequency' as const;\n\n/**\n * Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking.\n *\n * @note Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_LOGICAL_COUNT = 'system.cpu.logical.count' as const;\n\n/**\n * Reports the number of actual physical processor cores on the hardware.\n *\n * @note Calculated by multiplying the number of sockets by the number of cores per socket\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_PHYSICAL_COUNT = 'system.cpu.physical.count' as const;\n\n/**\n * Seconds each logical CPU spent on each mode.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_TIME = 'system.cpu.time' as const;\n\n/**\n * For each logical CPU, the utilization is calculated as the change in cumulative CPU time (cpu.time) over a measurement interval, divided by the elapsed time.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_UTILIZATION = 'system.cpu.utilization' as const;\n\n/**\n * Disk bytes transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_IO = 'system.disk.io' as const;\n\n/**\n * Time disk spent activated.\n *\n * @note The real elapsed time (\"wall clock\") used in the I/O path (time from operations running in parallel are not counted). Measured as:\n *\n * - Linux: Field 13 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats)\n * - Windows: The complement of\n * [\"Disk% Idle Time\"](https://learn.microsoft.com/archive/blogs/askcore/windows-performance-monitor-disk-counters-explained#windows-performance-monitor-disk-counters-explained)\n * performance counter: `uptime * (100 - \"Disk\\% Idle Time\") / 100`\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_IO_TIME = 'system.disk.io_time' as const;\n\n/**\n * The total storage capacity of the disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_LIMIT = 'system.disk.limit' as const;\n\n/**\n * The number of disk reads/writes merged into single physical disk access operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_MERGED = 'system.disk.merged' as const;\n\n/**\n * Sum of the time each operation took to complete.\n *\n * @note Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as:\n *\n * - Linux: Fields 7 & 11 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats)\n * - Windows: \"Avg. Disk sec/Read\" perf counter multiplied by \"Disk Reads/sec\" perf counter (similar for Writes)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_OPERATION_TIME = 'system.disk.operation_time' as const;\n\n/**\n * Disk operations count.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_OPERATIONS = 'system.disk.operations' as const;\n\n/**\n * The total storage capacity of the filesystem.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_FILESYSTEM_LIMIT = 'system.filesystem.limit' as const;\n\n/**\n * Reports a filesystem's space usage across different states.\n *\n * @note The sum of all `system.filesystem.usage` values over the different `system.filesystem.state` attributes\n * **SHOULD** equal the total storage capacity of the filesystem, that is `system.filesystem.limit`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_FILESYSTEM_USAGE = 'system.filesystem.usage' as const;\n\n/**\n * Fraction of filesystem bytes used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_FILESYSTEM_UTILIZATION = 'system.filesystem.utilization' as const;\n\n/**\n * The number of packets transferred.\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 `system.memory.linux.available`.\n */\nexport const METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE = 'system.linux.memory.available' as const;\n\n/**\n * The number of packets transferred.\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 `system.memory.linux.slab.usage`.\n */\nexport const METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE = 'system.linux.memory.slab.usage' as const;\n\n/**\n * Total virtual memory available in the system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_LIMIT = 'system.memory.limit' as const;\n\n/**\n * An estimate of how much memory is available for starting new applications, without causing swapping.\n *\n * @note This is an alternative to `system.memory.usage` metric with `state=free`.\n * Linux starting from 3.14 exports \"available\" memory. It takes \"free\" memory as a baseline, and then factors in kernel-specific values.\n * This is supposed to be more accurate than just \"free\" memory.\n * For reference, see the calculations [here](https://superuser.com/a/980821).\n * See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE = 'system.memory.linux.available' as const;\n\n/**\n * Reports the memory used by the Linux kernel for managing caches of frequently used objects.\n *\n * @note The sum over the `reclaimable` and `unreclaimable` state values in `memory.linux.slab.usage` **SHOULD** be equal to the total slab memory available on the system.\n * Note that the total slab memory is not constant and may vary over time.\n * See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE = 'system.memory.linux.slab.usage' as const;\n\n/**\n * Shared memory used (mostly by tmpfs).\n *\n * @note Equivalent of `shared` from [`free` command](https://man7.org/linux/man-pages/man1/free.1.html) or\n * `Shmem` from [`/proc/meminfo`](https://man7.org/linux/man-pages/man5/proc.5.html)\"\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_SHARED = 'system.memory.shared' as const;\n\n/**\n * Reports memory in use by state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_USAGE = 'system.memory.usage' as const;\n\n/**\n * Percentage of memory bytes in use.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_UTILIZATION = 'system.memory.utilization' as const;\n\n/**\n * The number of connections.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_CONNECTION_COUNT = 'system.network.connection.count' as const;\n\n/**\n * Deprecated, use `system.network.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 `system.network.connection.count`.\n */\nexport const METRIC_SYSTEM_NETWORK_CONNECTIONS = 'system.network.connections' as const;\n\n/**\n * Count of packets that are dropped or discarded even though there was no error.\n *\n * @note Measured as:\n *\n * - Linux: the `drop` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html))\n * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2)\n * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2)\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 `system.network.packet.dropped`.\n */\nexport const METRIC_SYSTEM_NETWORK_DROPPED = 'system.network.dropped' as const;\n\n/**\n * Count of network errors detected.\n *\n * @note Measured as:\n *\n * - Linux: the `errs` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)).\n * - Windows: [`InErrors`/`OutErrors`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2)\n * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_ERRORS = 'system.network.errors' as const;\n\n/**\n * The number of bytes transmitted and received.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_IO = 'system.network.io' as const;\n\n/**\n * The number of packets transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_PACKET_COUNT = 'system.network.packet.count' as const;\n\n/**\n * Count of packets that are dropped or discarded even though there was no error.\n *\n * @note Measured as:\n *\n * - Linux: the `drop` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html))\n * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2)\n * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_PACKET_DROPPED = 'system.network.packet.dropped' as const;\n\n/**\n * The number of packets transferred.\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 `system.network.packet.count`.\n */\nexport const METRIC_SYSTEM_NETWORK_PACKETS = 'system.network.packets' as const;\n\n/**\n * The number of page faults.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_FAULTS = 'system.paging.faults' as const;\n\n/**\n * The number of paging operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_OPERATIONS = 'system.paging.operations' as const;\n\n/**\n * Unix swap or windows pagefile usage.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_USAGE = 'system.paging.usage' as const;\n\n/**\n * Swap (unix) or pagefile (windows) utilization.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_UTILIZATION = 'system.paging.utilization' as const;\n\n/**\n * Total number of processes in each state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PROCESS_COUNT = 'system.process.count' as const;\n\n/**\n * Total number of processes created over uptime of the host.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PROCESS_CREATED = 'system.process.created' as const;\n\n/**\n * The time the system has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_UPTIME = 'system.uptime' as const;\n\n/**\n * Garbage collection duration.\n *\n * @note The values can be retrieved from [`perf_hooks.PerformanceObserver(...).observe({ entryTypes: ['gc'] })`](https://nodejs.org/api/perf_hooks.html#performanceobserverobserveoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_GC_DURATION = 'v8js.gc.duration' as const;\n\n/**\n * Deprecated, use `v8js.memory.heap.space.available_size` 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 `v8js.memory.heap.space.available_size`.\n */\nexport const METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.heap.space.available_size' as const;\n\n/**\n * Deprecated, use `v8js.memory.heap.space.physical_size` 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 `v8js.memory.heap.space.physical_size`.\n */\nexport const METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.heap.space.physical_size' as const;\n\n/**\n * Total heap memory size pre-allocated.\n *\n * @note The value can be retrieved from value `space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_LIMIT = 'v8js.memory.heap.limit' as const;\n\n/**\n * Heap space available size.\n *\n * @note Value can be retrieved from value `space_available_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.memory.heap.space.available_size' as const;\n\n/**\n * Committed size of a heap space.\n *\n * @note Value can be retrieved from value `physical_space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.memory.heap.space.physical_size' as const;\n\n/**\n * Heap Memory size allocated.\n *\n * @note The value can be retrieved from value `space_used_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_USED = 'v8js.memory.heap.used' as const;\n\n/**\n * The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_COUNT = 'vcs.change.count' as const;\n\n/**\n * The time duration a change (pull request/merge request/changelist) has been in a given state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_DURATION = 'vcs.change.duration' as const;\n\n/**\n * The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_TIME_TO_APPROVAL = 'vcs.change.time_to_approval' as const;\n\n/**\n * The amount of time since its creation it took a change (pull request/merge request/changelist) to get merged into the target(base) ref.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_TIME_TO_MERGE = 'vcs.change.time_to_merge' as const;\n\n/**\n * The number of unique contributors to a repository.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CONTRIBUTOR_COUNT = 'vcs.contributor.count' as const;\n\n/**\n * The number of refs of type branch or tag in a repository.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_COUNT = 'vcs.ref.count' as const;\n\n/**\n * The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute.\n *\n * @note This metric should be reported for each `vcs.line_change.type` value. For example if a ref added 3 lines and removed 2 lines,\n * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers).\n * If number of lines added/removed should be calculated from the start of time, then `vcs.ref.base.name` **SHOULD** be set to an empty string.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_LINES_DELTA = 'vcs.ref.lines_delta' as const;\n\n/**\n * The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute.\n *\n * @note This metric should be reported for each `vcs.revision_delta.direction` value. For example if branch `a` is 3 commits behind and 2 commits ahead of `trunk`,\n * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers) and `vcs.ref.base.name` is set to `trunk`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_REVISIONS_DELTA = 'vcs.ref.revisions_delta' as const;\n\n/**\n * Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_TIME = 'vcs.ref.time' as const;\n\n/**\n * The number of repositories in an organization.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REPOSITORY_COUNT = 'vcs.repository.count' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.d.ts new file mode 100644 index 0000000..d26f8ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.d.ts @@ -0,0 +1,7 @@ +export * from './stable_attributes'; +export * from './stable_metrics'; +export * from './stable_events'; +export * from './experimental_attributes'; +export * from './experimental_metrics'; +export * from './experimental_events'; +//# sourceMappingURL=index-incubating.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.js new file mode 100644 index 0000000..f57acd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.js @@ -0,0 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Incubating export also contains stable constants in order to maintain +// backward compatibility between minor version releases +export * from './stable_attributes'; +export * from './stable_metrics'; +export * from './stable_events'; +export * from './experimental_attributes'; +export * from './experimental_metrics'; +export * from './experimental_events'; +//# sourceMappingURL=index-incubating.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.js.map new file mode 100644 index 0000000..eab6ee3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-incubating.js","sourceRoot":"","sources":["../../src/index-incubating.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,wEAAwE;AACxE,wDAAwD;AACxD,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Incubating export also contains stable constants in order to maintain\n// backward compatibility between minor version releases\nexport * from './stable_attributes';\nexport * from './stable_metrics';\nexport * from './stable_events';\nexport * from './experimental_attributes';\nexport * from './experimental_metrics';\nexport * from './experimental_events';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index.d.ts new file mode 100644 index 0000000..744217b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index.d.ts @@ -0,0 +1,6 @@ +export * from './trace'; +export * from './resource'; +export * from './stable_attributes'; +export * from './stable_metrics'; +export * from './stable_events'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js new file mode 100644 index 0000000..4a69822 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable no-restricted-syntax -- + * These re-exports are only of constants, only two-levels deep, and + * should not cause problems for tree-shakers. + */ +// Deprecated. These are kept around for compatibility purposes +export * from './trace'; +export * from './resource'; +// Use these instead +export * from './stable_attributes'; +export * from './stable_metrics'; +export * from './stable_events'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js.map new file mode 100644 index 0000000..40be2c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AAEH,+DAA+D;AAC/D,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAE3B,oBAAoB;AACpB,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* 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\n// Deprecated. These are kept around for compatibility purposes\nexport * from './trace';\nexport * from './resource';\n\n// Use these instead\nexport * from './stable_attributes';\nexport * from './stable_metrics';\nexport * from './stable_events';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.d.ts new file mode 100644 index 0000000..d471f2f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.d.ts @@ -0,0 +1,7 @@ +/** + * Creates a const map from the given values + * @param values - An array of values to be used as keys and values in the map. + * @returns A populated version of the map with the values and keys derived from the values. + */ +export declare function createConstMap(values: Array): T; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.js new file mode 100644 index 0000000..4d9a656 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.js @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Creates a const map from the given values + * @param values - An array of values to be used as keys and values in the map. + * @returns A populated version of the map with the values and keys derived from the values. + */ +/*#__NO_SIDE_EFFECTS__*/ +export function createConstMap(values) { + // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any + let res = {}; + const len = values.length; + for (let lp = 0; lp < len; lp++) { + const val = values[lp]; + if (val) { + res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val; + } + } + return res; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.js.map new file mode 100644 index 0000000..c8457b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/internal/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AACH,wBAAwB;AACxB,MAAM,UAAU,cAAc,CAAI,MAAyB;IACzD,4EAA4E;IAC5E,IAAI,GAAG,GAAQ,EAAE,CAAC;IAClB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC5D;KACF;IAED,OAAO,GAAQ,CAAC;AAClB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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__*/\nexport function createConstMap(values: Array): T {\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n let res: any = {};\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\n return res as T;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.d.ts new file mode 100644 index 0000000..c3212f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.d.ts @@ -0,0 +1,1453 @@ +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_PROVIDER = "cloud.provider"; +/** + * The cloud account ID the resource is assigned to. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_ACCOUNT_ID = "cloud.account.id"; +/** + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_REGION = "cloud.region"; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = "cloud.availability_zone"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_PLATFORM = "cloud.platform"; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = "aws.ecs.container.arn"; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = "aws.ecs.cluster.arn"; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = "aws.ecs.launchtype"; +/** + * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_TASK_ARN = "aws.ecs.task.arn"; +/** + * The task definition family this task definition is a member of. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_TASK_FAMILY = "aws.ecs.task.family"; +/** + * The revision for this task definition. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_TASK_REVISION = "aws.ecs.task.revision"; +/** + * The ARN of an EKS cluster. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = "aws.eks.cluster.arn"; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_GROUP_NAMES = "aws.log.group.names"; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_GROUP_ARNS = "aws.log.group.arns"; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_STREAM_NAMES = "aws.log.stream.names"; +/** + * The ARN(s) of the AWS log stream(s). + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_STREAM_ARNS = "aws.log.stream.arns"; +/** + * Container name. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_NAME = "container.name"; +/** + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_ID = "container.id"; +/** + * The container runtime managing this container. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_RUNTIME = "container.runtime"; +/** + * Name of the image the container was built on. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_IMAGE_NAME = "container.image.name"; +/** + * Container image tag. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_IMAGE_TAG = "container.image.tag"; +/** + * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @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}). + */ +export declare const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = "deployment.environment"; +/** + * A unique identifier representing the device. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_DEVICE_ID = "device.id"; +/** + * The model identifier for the device. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = "device.model.identifier"; +/** + * The marketing name for the device model. + * + * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative. + * + * @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}). + */ +export declare const SEMRESATTRS_DEVICE_MODEL_NAME = "device.model.name"; +/** + * The name of the single function that this runtime instance executes. + * + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_FAAS_NAME = "faas.name"; +/** +* The unique ID of the single function that this runtime instance executes. +* +* Note: Depending on the cloud provider, use: + +* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). +Take care not to use the "invoked ARN" directly but replace any +[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 +different aliases. +* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) +* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id). + +On some providers, it may not be possible to determine the full ID at startup, +which is why this field cannot be made required. For example, on AWS the account ID +part of the ARN is not available without calling another AWS API +which may be deemed too slow for a short-running lambda function. +As an alternative, consider setting `faas.id` as a span attribute instead. +* +* @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}). +*/ +export declare const SEMRESATTRS_FAAS_ID = "faas.id"; +/** +* The immutable version of the function being executed. +* +* Note: Depending on the cloud provider and platform, use: + +* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + (an integer represented as a decimal string). +* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions) + (i.e., the function name plus the revision suffix). +* **Google Cloud Functions:** The value of the + [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). +* **Azure Functions:** Not applicable. Do not set this attribute. +* +* @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}). +*/ +export declare const SEMRESATTRS_FAAS_VERSION = "faas.version"; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * Note: * **AWS Lambda:** Use the (full) log stream name. + * + * @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}). + */ +export declare const SEMRESATTRS_FAAS_INSTANCE = "faas.instance"; +/** + * The amount of memory available to the serverless function in MiB. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_FAAS_MAX_MEMORY = "faas.max_memory"; +/** + * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_ID = "host.id"; +/** + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_NAME = "host.name"; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_TYPE = "host.type"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_ARCH = "host.arch"; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_IMAGE_NAME = "host.image.name"; +/** + * VM image ID. For Cloud, this value is from the provider. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_IMAGE_ID = "host.image.id"; +/** + * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes). + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_IMAGE_VERSION = "host.image.version"; +/** + * The name of the cluster. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CLUSTER_NAME = "k8s.cluster.name"; +/** + * The name of the Node. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_NODE_NAME = "k8s.node.name"; +/** + * The UID of the Node. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_NODE_UID = "k8s.node.uid"; +/** + * The name of the namespace that the pod is running in. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_NAMESPACE_NAME = "k8s.namespace.name"; +/** + * The UID of the Pod. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_POD_UID = "k8s.pod.uid"; +/** + * The name of the Pod. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_POD_NAME = "k8s.pod.name"; +/** + * The name of the Container in a Pod template. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CONTAINER_NAME = "k8s.container.name"; +/** + * The UID of the ReplicaSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_REPLICASET_UID = "k8s.replicaset.uid"; +/** + * The name of the ReplicaSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_REPLICASET_NAME = "k8s.replicaset.name"; +/** + * The UID of the Deployment. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DEPLOYMENT_UID = "k8s.deployment.uid"; +/** + * The name of the Deployment. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DEPLOYMENT_NAME = "k8s.deployment.name"; +/** + * The UID of the StatefulSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_STATEFULSET_UID = "k8s.statefulset.uid"; +/** + * The name of the StatefulSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_STATEFULSET_NAME = "k8s.statefulset.name"; +/** + * The UID of the DaemonSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DAEMONSET_UID = "k8s.daemonset.uid"; +/** + * The name of the DaemonSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DAEMONSET_NAME = "k8s.daemonset.name"; +/** + * The UID of the Job. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_JOB_UID = "k8s.job.uid"; +/** + * The name of the Job. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_JOB_NAME = "k8s.job.name"; +/** + * The UID of the CronJob. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CRONJOB_UID = "k8s.cronjob.uid"; +/** + * The name of the CronJob. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CRONJOB_NAME = "k8s.cronjob.name"; +/** + * The operating system type. + * + * @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}). + */ +export declare const SEMRESATTRS_OS_TYPE = "os.type"; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @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}). + */ +export declare const SEMRESATTRS_OS_DESCRIPTION = "os.description"; +/** + * Human readable operating system name. + * + * @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}). + */ +export declare const SEMRESATTRS_OS_NAME = "os.name"; +/** + * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes). + * + * @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}). + */ +export declare const SEMRESATTRS_OS_VERSION = "os.version"; +/** + * Process identifier (PID). + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_PID = "process.pid"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = "process.executable.name"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = "process.executable.path"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_COMMAND = "process.command"; +/** + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_COMMAND_LINE = "process.command_line"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_COMMAND_ARGS = "process.command_args"; +/** + * The username of the user that owns the process. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_OWNER = "process.owner"; +/** + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_RUNTIME_NAME = "process.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_RUNTIME_VERSION = "process.runtime.version"; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = "process.runtime.description"; +/** + * Logical name of the service. + * + * 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`. + * + * @deprecated Use ATTR_SERVICE_NAME. + */ +export declare const SEMRESATTRS_SERVICE_NAME = "service.name"; +/** + * A namespace for `service.name`. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_SERVICE_NAMESPACE = "service.namespace"; +/** + * The string ID of the service instance. + * + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_SERVICE_INSTANCE_ID = "service.instance.id"; +/** + * The version string of the service API or implementation. + * + * @deprecated Use ATTR_SERVICE_VERSION. + */ +export declare const SEMRESATTRS_SERVICE_VERSION = "service.version"; +/** + * The name of the telemetry SDK as defined above. + * + * @deprecated Use ATTR_TELEMETRY_SDK_NAME. + */ +export declare const SEMRESATTRS_TELEMETRY_SDK_NAME = "telemetry.sdk.name"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE. + */ +export declare const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = "telemetry.sdk.language"; +/** + * The version string of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_VERSION. + */ +export declare const SEMRESATTRS_TELEMETRY_SDK_VERSION = "telemetry.sdk.version"; +/** + * The version string of the auto instrumentation agent, if used. + * + * @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}). + */ +export declare const SEMRESATTRS_TELEMETRY_AUTO_VERSION = "telemetry.auto.version"; +/** + * The name of the web engine. + * + * @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}). + */ +export declare const SEMRESATTRS_WEBENGINE_NAME = "webengine.name"; +/** + * The version of the web engine. + * + * @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}). + */ +export declare const SEMRESATTRS_WEBENGINE_VERSION = "webengine.version"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @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}). + */ +export declare const SEMRESATTRS_WEBENGINE_DESCRIPTION = "webengine.description"; +/** + * Definition of available values for SemanticResourceAttributes + * This type is used for backward compatibility, you should use the individual exported + * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference + * to a constant map value will result in all strings being included into your bundle. + * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification. + */ +export type SemanticResourceAttributes = { + /** + * Name of the cloud provider. + */ + CLOUD_PROVIDER: 'cloud.provider'; + /** + * The cloud account ID the resource is assigned to. + */ + CLOUD_ACCOUNT_ID: 'cloud.account.id'; + /** + * 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). + */ + CLOUD_REGION: 'cloud.region'; + /** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + */ + CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone'; + /** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + */ + CLOUD_PLATFORM: 'cloud.platform'; + /** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + */ + AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn'; + /** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + */ + AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn'; + /** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + */ + AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype'; + /** + * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). + */ + AWS_ECS_TASK_ARN: 'aws.ecs.task.arn'; + /** + * The task definition family this task definition is a member of. + */ + AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family'; + /** + * The revision for this task definition. + */ + AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision'; + /** + * The ARN of an EKS cluster. + */ + AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn'; + /** + * The name(s) of the AWS log group(s) an application is writing to. + * + * 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. + */ + AWS_LOG_GROUP_NAMES: 'aws.log.group.names'; + /** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * 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). + */ + AWS_LOG_GROUP_ARNS: 'aws.log.group.arns'; + /** + * The name(s) of the AWS log stream(s) an application is writing to. + */ + AWS_LOG_STREAM_NAMES: 'aws.log.stream.names'; + /** + * The ARN(s) of the AWS log stream(s). + * + * 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. + */ + AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns'; + /** + * Container name. + */ + CONTAINER_NAME: 'container.name'; + /** + * 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. + */ + CONTAINER_ID: 'container.id'; + /** + * The container runtime managing this container. + */ + CONTAINER_RUNTIME: 'container.runtime'; + /** + * Name of the image the container was built on. + */ + CONTAINER_IMAGE_NAME: 'container.image.name'; + /** + * Container image tag. + */ + CONTAINER_IMAGE_TAG: 'container.image.tag'; + /** + * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + */ + DEPLOYMENT_ENVIRONMENT: 'deployment.environment'; + /** + * A unique identifier representing the device. + * + * 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. + */ + DEVICE_ID: 'device.id'; + /** + * The model identifier for the device. + * + * 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. + */ + DEVICE_MODEL_IDENTIFIER: 'device.model.identifier'; + /** + * The marketing name for the device model. + * + * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative. + */ + DEVICE_MODEL_NAME: 'device.model.name'; + /** + * The name of the single function that this runtime instance executes. + * + * 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). + */ + FAAS_NAME: 'faas.name'; + /** + * The unique ID of the single function that this runtime instance executes. + * + * Note: Depending on the cloud provider, use: + + * **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + Take care not to use the "invoked ARN" directly but replace any + [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 + different aliases. + * **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) + * **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id). + + On some providers, it may not be possible to determine the full ID at startup, + which is why this field cannot be made required. For example, on AWS the account ID + part of the ARN is not available without calling another AWS API + which may be deemed too slow for a short-running lambda function. + As an alternative, consider setting `faas.id` as a span attribute instead. + */ + FAAS_ID: 'faas.id'; + /** + * The immutable version of the function being executed. + * + * Note: Depending on the cloud provider and platform, use: + + * **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + (an integer represented as a decimal string). + * **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions) + (i.e., the function name plus the revision suffix). + * **Google Cloud Functions:** The value of the + [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). + * **Azure Functions:** Not applicable. Do not set this attribute. + */ + FAAS_VERSION: 'faas.version'; + /** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * Note: * **AWS Lambda:** Use the (full) log stream name. + */ + FAAS_INSTANCE: 'faas.instance'; + /** + * The amount of memory available to the serverless function in MiB. + * + * 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. + */ + FAAS_MAX_MEMORY: 'faas.max_memory'; + /** + * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. + */ + HOST_ID: 'host.id'; + /** + * 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. + */ + HOST_NAME: 'host.name'; + /** + * Type of host. For Cloud, this must be the machine type. + */ + HOST_TYPE: 'host.type'; + /** + * The CPU architecture the host system is running on. + */ + HOST_ARCH: 'host.arch'; + /** + * Name of the VM image or OS install the host was instantiated from. + */ + HOST_IMAGE_NAME: 'host.image.name'; + /** + * VM image ID. For Cloud, this value is from the provider. + */ + HOST_IMAGE_ID: 'host.image.id'; + /** + * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes). + */ + HOST_IMAGE_VERSION: 'host.image.version'; + /** + * The name of the cluster. + */ + K8S_CLUSTER_NAME: 'k8s.cluster.name'; + /** + * The name of the Node. + */ + K8S_NODE_NAME: 'k8s.node.name'; + /** + * The UID of the Node. + */ + K8S_NODE_UID: 'k8s.node.uid'; + /** + * The name of the namespace that the pod is running in. + */ + K8S_NAMESPACE_NAME: 'k8s.namespace.name'; + /** + * The UID of the Pod. + */ + K8S_POD_UID: 'k8s.pod.uid'; + /** + * The name of the Pod. + */ + K8S_POD_NAME: 'k8s.pod.name'; + /** + * The name of the Container in a Pod template. + */ + K8S_CONTAINER_NAME: 'k8s.container.name'; + /** + * The UID of the ReplicaSet. + */ + K8S_REPLICASET_UID: 'k8s.replicaset.uid'; + /** + * The name of the ReplicaSet. + */ + K8S_REPLICASET_NAME: 'k8s.replicaset.name'; + /** + * The UID of the Deployment. + */ + K8S_DEPLOYMENT_UID: 'k8s.deployment.uid'; + /** + * The name of the Deployment. + */ + K8S_DEPLOYMENT_NAME: 'k8s.deployment.name'; + /** + * The UID of the StatefulSet. + */ + K8S_STATEFULSET_UID: 'k8s.statefulset.uid'; + /** + * The name of the StatefulSet. + */ + K8S_STATEFULSET_NAME: 'k8s.statefulset.name'; + /** + * The UID of the DaemonSet. + */ + K8S_DAEMONSET_UID: 'k8s.daemonset.uid'; + /** + * The name of the DaemonSet. + */ + K8S_DAEMONSET_NAME: 'k8s.daemonset.name'; + /** + * The UID of the Job. + */ + K8S_JOB_UID: 'k8s.job.uid'; + /** + * The name of the Job. + */ + K8S_JOB_NAME: 'k8s.job.name'; + /** + * The UID of the CronJob. + */ + K8S_CRONJOB_UID: 'k8s.cronjob.uid'; + /** + * The name of the CronJob. + */ + K8S_CRONJOB_NAME: 'k8s.cronjob.name'; + /** + * The operating system type. + */ + OS_TYPE: 'os.type'; + /** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + */ + OS_DESCRIPTION: 'os.description'; + /** + * Human readable operating system name. + */ + OS_NAME: 'os.name'; + /** + * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes). + */ + OS_VERSION: 'os.version'; + /** + * Process identifier (PID). + */ + PROCESS_PID: 'process.pid'; + /** + * 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`. + */ + PROCESS_EXECUTABLE_NAME: 'process.executable.name'; + /** + * 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`. + */ + PROCESS_EXECUTABLE_PATH: 'process.executable.path'; + /** + * 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`. + */ + PROCESS_COMMAND: 'process.command'; + /** + * 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. + */ + PROCESS_COMMAND_LINE: 'process.command_line'; + /** + * 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`. + */ + PROCESS_COMMAND_ARGS: 'process.command_args'; + /** + * The username of the user that owns the process. + */ + PROCESS_OWNER: 'process.owner'; + /** + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. + */ + PROCESS_RUNTIME_NAME: 'process.runtime.name'; + /** + * The version of the runtime of this process, as returned by the runtime without modification. + */ + PROCESS_RUNTIME_VERSION: 'process.runtime.version'; + /** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + */ + PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description'; + /** + * Logical name of the service. + * + * 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`. + */ + SERVICE_NAME: 'service.name'; + /** + * A namespace for `service.name`. + * + * 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. + */ + SERVICE_NAMESPACE: 'service.namespace'; + /** + * The string ID of the service instance. + * + * 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). + */ + SERVICE_INSTANCE_ID: 'service.instance.id'; + /** + * The version string of the service API or implementation. + */ + SERVICE_VERSION: 'service.version'; + /** + * The name of the telemetry SDK as defined above. + */ + TELEMETRY_SDK_NAME: 'telemetry.sdk.name'; + /** + * The language of the telemetry SDK. + */ + TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language'; + /** + * The version string of the telemetry SDK. + */ + TELEMETRY_SDK_VERSION: 'telemetry.sdk.version'; + /** + * The version string of the auto instrumentation agent, if used. + */ + TELEMETRY_AUTO_VERSION: 'telemetry.auto.version'; + /** + * The name of the web engine. + */ + WEBENGINE_NAME: 'webengine.name'; + /** + * The version of the web engine. + */ + WEBENGINE_VERSION: 'webengine.version'; + /** + * Additional description of the web engine (e.g. detailed version and edition information). + */ + WEBENGINE_DESCRIPTION: 'webengine.description'; +}; +/** + * Create exported Value Map for SemanticResourceAttributes values + * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification + */ +export declare const SemanticResourceAttributes: SemanticResourceAttributes; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_AWS = "aws"; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_AZURE = "azure"; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_GCP = "gcp"; +/** + * Identifies the Values for CloudProviderValues enum definition + * + * Name of the cloud provider. + * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification. + */ +export type CloudProviderValues = { + /** Alibaba Cloud. */ + ALIBABA_CLOUD: 'alibaba_cloud'; + /** Amazon Web Services. */ + AWS: 'aws'; + /** Microsoft Azure. */ + AZURE: 'azure'; + /** Google Cloud Platform. */ + GCP: 'gcp'; +}; +/** + * The constant map of values for CloudProviderValues. + * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification. + */ +export declare const CloudProviderValues: CloudProviderValues; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = "alibaba_cloud_ecs"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = "alibaba_cloud_fc"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_EC2 = "aws_ec2"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_ECS = "aws_ecs"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_EKS = "aws_eks"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_LAMBDA = "aws_lambda"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_VM = "azure_vm"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = "azure_container_instances"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_AKS = "azure_aks"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = "azure_functions"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = "azure_app_service"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = "gcp_compute_engine"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = "gcp_cloud_run"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = "gcp_kubernetes_engine"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = "gcp_cloud_functions"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_APP_ENGINE = "gcp_app_engine"; +/** + * Identifies the Values for CloudPlatformValues enum definition + * + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification. + */ +export type CloudPlatformValues = { + /** Alibaba Cloud Elastic Compute Service. */ + ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs'; + /** Alibaba Cloud Function Compute. */ + ALIBABA_CLOUD_FC: 'alibaba_cloud_fc'; + /** AWS Elastic Compute Cloud. */ + AWS_EC2: 'aws_ec2'; + /** AWS Elastic Container Service. */ + AWS_ECS: 'aws_ecs'; + /** AWS Elastic Kubernetes Service. */ + AWS_EKS: 'aws_eks'; + /** AWS Lambda. */ + AWS_LAMBDA: 'aws_lambda'; + /** AWS Elastic Beanstalk. */ + AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk'; + /** Azure Virtual Machines. */ + AZURE_VM: 'azure_vm'; + /** Azure Container Instances. */ + AZURE_CONTAINER_INSTANCES: 'azure_container_instances'; + /** Azure Kubernetes Service. */ + AZURE_AKS: 'azure_aks'; + /** Azure Functions. */ + AZURE_FUNCTIONS: 'azure_functions'; + /** Azure App Service. */ + AZURE_APP_SERVICE: 'azure_app_service'; + /** Google Cloud Compute Engine (GCE). */ + GCP_COMPUTE_ENGINE: 'gcp_compute_engine'; + /** Google Cloud Run. */ + GCP_CLOUD_RUN: 'gcp_cloud_run'; + /** Google Cloud Kubernetes Engine (GKE). */ + GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine'; + /** Google Cloud Functions (GCF). */ + GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions'; + /** Google Cloud App Engine (GAE). */ + GCP_APP_ENGINE: 'gcp_app_engine'; +}; +/** + * The constant map of values for CloudPlatformValues. + * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification. + */ +export declare const CloudPlatformValues: CloudPlatformValues; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export declare const AWSECSLAUNCHTYPEVALUES_EC2 = "ec2"; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export declare const AWSECSLAUNCHTYPEVALUES_FARGATE = "fargate"; +/** + * Identifies the Values for AwsEcsLaunchtypeValues enum definition + * + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification. + */ +export type AwsEcsLaunchtypeValues = { + /** ec2. */ + EC2: 'ec2'; + /** fargate. */ + FARGATE: 'fargate'; +}; +/** + * The constant map of values for AwsEcsLaunchtypeValues. + * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification. + */ +export declare const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_AMD64 = "amd64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_ARM32 = "arm32"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_ARM64 = "arm64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_IA64 = "ia64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_PPC32 = "ppc32"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_PPC64 = "ppc64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_X86 = "x86"; +/** + * Identifies the Values for HostArchValues enum definition + * + * The CPU architecture the host system is running on. + * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification. + */ +export type HostArchValues = { + /** AMD64. */ + AMD64: 'amd64'; + /** ARM32. */ + ARM32: 'arm32'; + /** ARM64. */ + ARM64: 'arm64'; + /** Itanium. */ + IA64: 'ia64'; + /** 32-bit PowerPC. */ + PPC32: 'ppc32'; + /** 64-bit PowerPC. */ + PPC64: 'ppc64'; + /** 32-bit x86. */ + X86: 'x86'; +}; +/** + * The constant map of values for HostArchValues. + * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification. + */ +export declare const HostArchValues: HostArchValues; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_WINDOWS = "windows"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_LINUX = "linux"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_DARWIN = "darwin"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_FREEBSD = "freebsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_NETBSD = "netbsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_OPENBSD = "openbsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_DRAGONFLYBSD = "dragonflybsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_HPUX = "hpux"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_AIX = "aix"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_SOLARIS = "solaris"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_Z_OS = "z_os"; +/** + * Identifies the Values for OsTypeValues enum definition + * + * The operating system type. + * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification. + */ +export type OsTypeValues = { + /** Microsoft Windows. */ + WINDOWS: 'windows'; + /** Linux. */ + LINUX: 'linux'; + /** Apple Darwin. */ + DARWIN: 'darwin'; + /** FreeBSD. */ + FREEBSD: 'freebsd'; + /** NetBSD. */ + NETBSD: 'netbsd'; + /** OpenBSD. */ + OPENBSD: 'openbsd'; + /** DragonFly BSD. */ + DRAGONFLYBSD: 'dragonflybsd'; + /** HP-UX (Hewlett Packard Unix). */ + HPUX: 'hpux'; + /** AIX (Advanced Interactive eXecutive). */ + AIX: 'aix'; + /** Oracle Solaris. */ + SOLARIS: 'solaris'; + /** IBM z/OS. */ + Z_OS: 'z_os'; +}; +/** + * The constant map of values for OsTypeValues. + * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification. + */ +export declare const OsTypeValues: OsTypeValues; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_CPP = "cpp"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_DOTNET = "dotnet"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_ERLANG = "erlang"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_GO = "go"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_JAVA = "java"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_NODEJS = "nodejs"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_PHP = "php"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_PYTHON = "python"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_RUBY = "ruby"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_WEBJS = "webjs"; +/** + * Identifies the Values for TelemetrySdkLanguageValues enum definition + * + * The language of the telemetry SDK. + * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification. + */ +export type TelemetrySdkLanguageValues = { + /** cpp. */ + CPP: 'cpp'; + /** dotnet. */ + DOTNET: 'dotnet'; + /** erlang. */ + ERLANG: 'erlang'; + /** go. */ + GO: 'go'; + /** java. */ + JAVA: 'java'; + /** nodejs. */ + NODEJS: 'nodejs'; + /** php. */ + PHP: 'php'; + /** python. */ + PYTHON: 'python'; + /** ruby. */ + RUBY: 'ruby'; + /** webjs. */ + WEBJS: 'webjs'; +}; +/** + * The constant map of values for TelemetrySdkLanguageValues. + * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification. + */ +export declare const TelemetrySdkLanguageValues: TelemetrySdkLanguageValues; +//# sourceMappingURL=SemanticResourceAttributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js new file mode 100644 index 0000000..d5c8208 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js @@ -0,0 +1,1261 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createConstMap } from '../internal/utils'; +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------------------------- +// Constant values for SemanticResourceAttributes +//---------------------------------------------------------------------------------------------------------- +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_CLOUD_PROVIDER = 'cloud.provider'; +const TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id'; +const TMP_CLOUD_REGION = 'cloud.region'; +const TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone'; +const TMP_CLOUD_PLATFORM = 'cloud.platform'; +const TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn'; +const TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn'; +const TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype'; +const TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn'; +const TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family'; +const TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision'; +const TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn'; +const TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names'; +const TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns'; +const TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names'; +const TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns'; +const TMP_CONTAINER_NAME = 'container.name'; +const TMP_CONTAINER_ID = 'container.id'; +const TMP_CONTAINER_RUNTIME = 'container.runtime'; +const TMP_CONTAINER_IMAGE_NAME = 'container.image.name'; +const TMP_CONTAINER_IMAGE_TAG = 'container.image.tag'; +const TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment'; +const TMP_DEVICE_ID = 'device.id'; +const TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier'; +const TMP_DEVICE_MODEL_NAME = 'device.model.name'; +const TMP_FAAS_NAME = 'faas.name'; +const TMP_FAAS_ID = 'faas.id'; +const TMP_FAAS_VERSION = 'faas.version'; +const TMP_FAAS_INSTANCE = 'faas.instance'; +const TMP_FAAS_MAX_MEMORY = 'faas.max_memory'; +const TMP_HOST_ID = 'host.id'; +const TMP_HOST_NAME = 'host.name'; +const TMP_HOST_TYPE = 'host.type'; +const TMP_HOST_ARCH = 'host.arch'; +const TMP_HOST_IMAGE_NAME = 'host.image.name'; +const TMP_HOST_IMAGE_ID = 'host.image.id'; +const TMP_HOST_IMAGE_VERSION = 'host.image.version'; +const TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name'; +const TMP_K8S_NODE_NAME = 'k8s.node.name'; +const TMP_K8S_NODE_UID = 'k8s.node.uid'; +const TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name'; +const TMP_K8S_POD_UID = 'k8s.pod.uid'; +const TMP_K8S_POD_NAME = 'k8s.pod.name'; +const TMP_K8S_CONTAINER_NAME = 'k8s.container.name'; +const TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid'; +const TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name'; +const TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid'; +const TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name'; +const TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid'; +const TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name'; +const TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid'; +const TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name'; +const TMP_K8S_JOB_UID = 'k8s.job.uid'; +const TMP_K8S_JOB_NAME = 'k8s.job.name'; +const TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid'; +const TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name'; +const TMP_OS_TYPE = 'os.type'; +const TMP_OS_DESCRIPTION = 'os.description'; +const TMP_OS_NAME = 'os.name'; +const TMP_OS_VERSION = 'os.version'; +const TMP_PROCESS_PID = 'process.pid'; +const TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name'; +const TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path'; +const TMP_PROCESS_COMMAND = 'process.command'; +const TMP_PROCESS_COMMAND_LINE = 'process.command_line'; +const TMP_PROCESS_COMMAND_ARGS = 'process.command_args'; +const TMP_PROCESS_OWNER = 'process.owner'; +const TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +const TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version'; +const TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'; +const TMP_SERVICE_NAME = 'service.name'; +const TMP_SERVICE_NAMESPACE = 'service.namespace'; +const TMP_SERVICE_INSTANCE_ID = 'service.instance.id'; +const TMP_SERVICE_VERSION = 'service.version'; +const TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name'; +const TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language'; +const TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version'; +const TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version'; +const TMP_WEBENGINE_NAME = 'webengine.name'; +const TMP_WEBENGINE_VERSION = 'webengine.version'; +const TMP_WEBENGINE_DESCRIPTION = 'webengine.description'; +/** + * Name of the cloud provider. + * + * @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}). + */ +export const SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER; +/** + * The cloud account ID the resource is assigned to. + * + * @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}). + */ +export const SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID; +/** + * 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). + * + * @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}). + */ +export const SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @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}). + */ +export const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE; +/** + * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN; +/** + * The task definition family this task definition is a member of. + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY; +/** + * The revision for this task definition. + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION; +/** + * The ARN of an EKS cluster. + * + * @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}). + */ +export const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * 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). + * + * @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}). + */ +export const SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @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}). + */ +export const SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES; +/** + * The ARN(s) of the AWS log stream(s). + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS; +/** + * Container name. + * + * @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}). + */ +export const SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME; +/** + * 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. + * + * @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}). + */ +export const SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID; +/** + * The container runtime managing this container. + * + * @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}). + */ +export const SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME; +/** + * Name of the image the container was built on. + * + * @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}). + */ +export const SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME; +/** + * Container image tag. + * + * @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}). + */ +export const SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG; +/** + * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @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}). + */ +export const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT; +/** + * A unique identifier representing the device. + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID; +/** + * The model identifier for the device. + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER; +/** + * The marketing name for the device model. + * + * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative. + * + * @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}). + */ +export const SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME; +/** + * The name of the single function that this runtime instance executes. + * + * 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). + * + * @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}). + */ +export const SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME; +/** +* The unique ID of the single function that this runtime instance executes. +* +* Note: Depending on the cloud provider, use: + +* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). +Take care not to use the "invoked ARN" directly but replace any +[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 +different aliases. +* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) +* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id). + +On some providers, it may not be possible to determine the full ID at startup, +which is why this field cannot be made required. For example, on AWS the account ID +part of the ARN is not available without calling another AWS API +which may be deemed too slow for a short-running lambda function. +As an alternative, consider setting `faas.id` as a span attribute instead. +* +* @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}). +*/ +export const SEMRESATTRS_FAAS_ID = TMP_FAAS_ID; +/** +* The immutable version of the function being executed. +* +* Note: Depending on the cloud provider and platform, use: + +* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + (an integer represented as a decimal string). +* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions) + (i.e., the function name plus the revision suffix). +* **Google Cloud Functions:** The value of the + [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). +* **Azure Functions:** Not applicable. Do not set this attribute. +* +* @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}). +*/ +export const SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * Note: * **AWS Lambda:** Use the (full) log stream name. + * + * @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}). + */ +export const SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE; +/** + * The amount of memory available to the serverless function in MiB. + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY; +/** + * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. + * + * @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}). + */ +export const SEMRESATTRS_HOST_ID = TMP_HOST_ID; +/** + * 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. + * + * @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}). + */ +export const SEMRESATTRS_HOST_NAME = TMP_HOST_NAME; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @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}). + */ +export const SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @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}). + */ +export const SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME; +/** + * VM image ID. For Cloud, this value is from the provider. + * + * @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}). + */ +export const SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID; +/** + * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes). + * + * @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}). + */ +export const SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION; +/** + * The name of the cluster. + * + * @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}). + */ +export const SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME; +/** + * The name of the Node. + * + * @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}). + */ +export const SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME; +/** + * The UID of the Node. + * + * @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}). + */ +export const SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID; +/** + * The name of the namespace that the pod is running in. + * + * @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}). + */ +export const SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME; +/** + * The UID of the Pod. + * + * @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}). + */ +export const SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID; +/** + * The name of the Pod. + * + * @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}). + */ +export const SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME; +/** + * The name of the Container in a Pod template. + * + * @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}). + */ +export const SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME; +/** + * The UID of the ReplicaSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID; +/** + * The name of the ReplicaSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME; +/** + * The UID of the Deployment. + * + * @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}). + */ +export const SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID; +/** + * The name of the Deployment. + * + * @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}). + */ +export const SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME; +/** + * The UID of the StatefulSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID; +/** + * The name of the StatefulSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME; +/** + * The UID of the DaemonSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID; +/** + * The name of the DaemonSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME; +/** + * The UID of the Job. + * + * @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}). + */ +export const SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID; +/** + * The name of the Job. + * + * @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}). + */ +export const SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME; +/** + * The UID of the CronJob. + * + * @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}). + */ +export const SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID; +/** + * The name of the CronJob. + * + * @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}). + */ +export const SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME; +/** + * The operating system type. + * + * @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}). + */ +export const SEMRESATTRS_OS_TYPE = TMP_OS_TYPE; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @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}). + */ +export const SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION; +/** + * Human readable operating system name. + * + * @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}). + */ +export const SEMRESATTRS_OS_NAME = TMP_OS_NAME; +/** + * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes). + * + * @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}). + */ +export const SEMRESATTRS_OS_VERSION = TMP_OS_VERSION; +/** + * Process identifier (PID). + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID; +/** + * 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`. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME; +/** + * 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`. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH; +/** + * 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`. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND; +/** + * 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. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE; +/** + * 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`. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS; +/** + * The username of the user that owns the process. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER; +/** + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = TMP_PROCESS_RUNTIME_DESCRIPTION; +/** + * Logical name of the service. + * + * 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`. + * + * @deprecated Use ATTR_SERVICE_NAME. + */ +export const SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME; +/** + * A namespace for `service.name`. + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE; +/** + * The string ID of the service instance. + * + * 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). + * + * @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}). + */ +export const SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID; +/** + * The version string of the service API or implementation. + * + * @deprecated Use ATTR_SERVICE_VERSION. + */ +export const SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION; +/** + * The name of the telemetry SDK as defined above. + * + * @deprecated Use ATTR_TELEMETRY_SDK_NAME. + */ +export const SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME; +/** + * The language of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE. + */ +export const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE; +/** + * The version string of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_VERSION. + */ +export const SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION; +/** + * The version string of the auto instrumentation agent, if used. + * + * @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}). + */ +export const SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION; +/** + * The name of the web engine. + * + * @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}). + */ +export const SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME; +/** + * The version of the web engine. + * + * @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}). + */ +export const SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @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}). + */ +export const SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION; +/** + * Create exported Value Map for SemanticResourceAttributes values + * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification + */ +export const SemanticResourceAttributes = +/*#__PURE__*/ createConstMap([ + TMP_CLOUD_PROVIDER, + TMP_CLOUD_ACCOUNT_ID, + TMP_CLOUD_REGION, + TMP_CLOUD_AVAILABILITY_ZONE, + TMP_CLOUD_PLATFORM, + TMP_AWS_ECS_CONTAINER_ARN, + TMP_AWS_ECS_CLUSTER_ARN, + TMP_AWS_ECS_LAUNCHTYPE, + TMP_AWS_ECS_TASK_ARN, + TMP_AWS_ECS_TASK_FAMILY, + TMP_AWS_ECS_TASK_REVISION, + TMP_AWS_EKS_CLUSTER_ARN, + TMP_AWS_LOG_GROUP_NAMES, + TMP_AWS_LOG_GROUP_ARNS, + TMP_AWS_LOG_STREAM_NAMES, + TMP_AWS_LOG_STREAM_ARNS, + TMP_CONTAINER_NAME, + TMP_CONTAINER_ID, + TMP_CONTAINER_RUNTIME, + TMP_CONTAINER_IMAGE_NAME, + TMP_CONTAINER_IMAGE_TAG, + TMP_DEPLOYMENT_ENVIRONMENT, + TMP_DEVICE_ID, + TMP_DEVICE_MODEL_IDENTIFIER, + TMP_DEVICE_MODEL_NAME, + TMP_FAAS_NAME, + TMP_FAAS_ID, + TMP_FAAS_VERSION, + TMP_FAAS_INSTANCE, + TMP_FAAS_MAX_MEMORY, + TMP_HOST_ID, + TMP_HOST_NAME, + TMP_HOST_TYPE, + TMP_HOST_ARCH, + TMP_HOST_IMAGE_NAME, + TMP_HOST_IMAGE_ID, + TMP_HOST_IMAGE_VERSION, + TMP_K8S_CLUSTER_NAME, + TMP_K8S_NODE_NAME, + TMP_K8S_NODE_UID, + TMP_K8S_NAMESPACE_NAME, + TMP_K8S_POD_UID, + TMP_K8S_POD_NAME, + TMP_K8S_CONTAINER_NAME, + TMP_K8S_REPLICASET_UID, + TMP_K8S_REPLICASET_NAME, + TMP_K8S_DEPLOYMENT_UID, + TMP_K8S_DEPLOYMENT_NAME, + TMP_K8S_STATEFULSET_UID, + TMP_K8S_STATEFULSET_NAME, + TMP_K8S_DAEMONSET_UID, + TMP_K8S_DAEMONSET_NAME, + TMP_K8S_JOB_UID, + TMP_K8S_JOB_NAME, + TMP_K8S_CRONJOB_UID, + TMP_K8S_CRONJOB_NAME, + TMP_OS_TYPE, + TMP_OS_DESCRIPTION, + TMP_OS_NAME, + TMP_OS_VERSION, + TMP_PROCESS_PID, + TMP_PROCESS_EXECUTABLE_NAME, + TMP_PROCESS_EXECUTABLE_PATH, + TMP_PROCESS_COMMAND, + TMP_PROCESS_COMMAND_LINE, + TMP_PROCESS_COMMAND_ARGS, + TMP_PROCESS_OWNER, + TMP_PROCESS_RUNTIME_NAME, + TMP_PROCESS_RUNTIME_VERSION, + TMP_PROCESS_RUNTIME_DESCRIPTION, + TMP_SERVICE_NAME, + TMP_SERVICE_NAMESPACE, + TMP_SERVICE_INSTANCE_ID, + TMP_SERVICE_VERSION, + TMP_TELEMETRY_SDK_NAME, + TMP_TELEMETRY_SDK_LANGUAGE, + TMP_TELEMETRY_SDK_VERSION, + TMP_TELEMETRY_AUTO_VERSION, + TMP_WEBENGINE_NAME, + TMP_WEBENGINE_VERSION, + TMP_WEBENGINE_DESCRIPTION, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for CloudProviderValues enum definition + * + * Name of the cloud provider. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud'; +const TMP_CLOUDPROVIDERVALUES_AWS = 'aws'; +const TMP_CLOUDPROVIDERVALUES_AZURE = 'azure'; +const TMP_CLOUDPROVIDERVALUES_GCP = 'gcp'; +/** + * Name of the cloud provider. + * + * @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}). + */ +export const CLOUDPROVIDERVALUES_ALIBABA_CLOUD = TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD; +/** + * Name of the cloud provider. + * + * @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}). + */ +export const CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS; +/** + * Name of the cloud provider. + * + * @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}). + */ +export const CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE; +/** + * Name of the cloud provider. + * + * @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}). + */ +export const CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP; +/** + * The constant map of values for CloudProviderValues. + * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification. + */ +export const CloudProviderValues = +/*#__PURE__*/ createConstMap([ + TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD, + TMP_CLOUDPROVIDERVALUES_AWS, + TMP_CLOUDPROVIDERVALUES_AZURE, + TMP_CLOUDPROVIDERVALUES_GCP, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for CloudPlatformValues enum definition + * + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs'; +const TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc'; +const TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2'; +const TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs'; +const TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks'; +const TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda'; +const TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk'; +const TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm'; +const TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = 'azure_container_instances'; +const TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks'; +const TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions'; +const TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service'; +const TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine'; +const TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run'; +const TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine'; +const TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions'; +const TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine'; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AWS_LAMBDA = TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_GCP_APP_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE; +/** + * The constant map of values for CloudPlatformValues. + * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification. + */ +export const CloudPlatformValues = +/*#__PURE__*/ createConstMap([ + TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS, + TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC, + TMP_CLOUDPLATFORMVALUES_AWS_EC2, + TMP_CLOUDPLATFORMVALUES_AWS_ECS, + TMP_CLOUDPLATFORMVALUES_AWS_EKS, + TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA, + TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK, + TMP_CLOUDPLATFORMVALUES_AZURE_VM, + TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES, + TMP_CLOUDPLATFORMVALUES_AZURE_AKS, + TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS, + TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE, + TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE, + TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN, + TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE, + TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS, + TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for AwsEcsLaunchtypeValues enum definition + * + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2'; +const TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate'; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export const AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export const AWSECSLAUNCHTYPEVALUES_FARGATE = TMP_AWSECSLAUNCHTYPEVALUES_FARGATE; +/** + * The constant map of values for AwsEcsLaunchtypeValues. + * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification. + */ +export const AwsEcsLaunchtypeValues = +/*#__PURE__*/ createConstMap([ + TMP_AWSECSLAUNCHTYPEVALUES_EC2, + TMP_AWSECSLAUNCHTYPEVALUES_FARGATE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for HostArchValues enum definition + * + * The CPU architecture the host system is running on. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_HOSTARCHVALUES_AMD64 = 'amd64'; +const TMP_HOSTARCHVALUES_ARM32 = 'arm32'; +const TMP_HOSTARCHVALUES_ARM64 = 'arm64'; +const TMP_HOSTARCHVALUES_IA64 = 'ia64'; +const TMP_HOSTARCHVALUES_PPC32 = 'ppc32'; +const TMP_HOSTARCHVALUES_PPC64 = 'ppc64'; +const TMP_HOSTARCHVALUES_X86 = 'x86'; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86; +/** + * The constant map of values for HostArchValues. + * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification. + */ +export const HostArchValues = +/*#__PURE__*/ createConstMap([ + TMP_HOSTARCHVALUES_AMD64, + TMP_HOSTARCHVALUES_ARM32, + TMP_HOSTARCHVALUES_ARM64, + TMP_HOSTARCHVALUES_IA64, + TMP_HOSTARCHVALUES_PPC32, + TMP_HOSTARCHVALUES_PPC64, + TMP_HOSTARCHVALUES_X86, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for OsTypeValues enum definition + * + * The operating system type. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_OSTYPEVALUES_WINDOWS = 'windows'; +const TMP_OSTYPEVALUES_LINUX = 'linux'; +const TMP_OSTYPEVALUES_DARWIN = 'darwin'; +const TMP_OSTYPEVALUES_FREEBSD = 'freebsd'; +const TMP_OSTYPEVALUES_NETBSD = 'netbsd'; +const TMP_OSTYPEVALUES_OPENBSD = 'openbsd'; +const TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd'; +const TMP_OSTYPEVALUES_HPUX = 'hpux'; +const TMP_OSTYPEVALUES_AIX = 'aix'; +const TMP_OSTYPEVALUES_SOLARIS = 'solaris'; +const TMP_OSTYPEVALUES_Z_OS = 'z_os'; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS; +/** + * The constant map of values for OsTypeValues. + * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification. + */ +export const OsTypeValues = +/*#__PURE__*/ createConstMap([ + TMP_OSTYPEVALUES_WINDOWS, + TMP_OSTYPEVALUES_LINUX, + TMP_OSTYPEVALUES_DARWIN, + TMP_OSTYPEVALUES_FREEBSD, + TMP_OSTYPEVALUES_NETBSD, + TMP_OSTYPEVALUES_OPENBSD, + TMP_OSTYPEVALUES_DRAGONFLYBSD, + TMP_OSTYPEVALUES_HPUX, + TMP_OSTYPEVALUES_AIX, + TMP_OSTYPEVALUES_SOLARIS, + TMP_OSTYPEVALUES_Z_OS, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for TelemetrySdkLanguageValues enum definition + * + * The language of the telemetry SDK. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs'; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP. + */ +export const TELEMETRYSDKLANGUAGEVALUES_CPP = TMP_TELEMETRYSDKLANGUAGEVALUES_CPP; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET. + */ +export const TELEMETRYSDKLANGUAGEVALUES_DOTNET = TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG. + */ +export const TELEMETRYSDKLANGUAGEVALUES_ERLANG = TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO. + */ +export const TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA. + */ +export const TELEMETRYSDKLANGUAGEVALUES_JAVA = TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS. + */ +export const TELEMETRYSDKLANGUAGEVALUES_NODEJS = TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP. + */ +export const TELEMETRYSDKLANGUAGEVALUES_PHP = TMP_TELEMETRYSDKLANGUAGEVALUES_PHP; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON. + */ +export const TELEMETRYSDKLANGUAGEVALUES_PYTHON = TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY. + */ +export const TELEMETRYSDKLANGUAGEVALUES_RUBY = TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS. + */ +export const TELEMETRYSDKLANGUAGEVALUES_WEBJS = TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS; +/** + * The constant map of values for TelemetrySdkLanguageValues. + * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification. + */ +export const TelemetrySdkLanguageValues = +/*#__PURE__*/ createConstMap([ + TMP_TELEMETRYSDKLANGUAGEVALUES_CPP, + TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET, + TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG, + TMP_TELEMETRYSDKLANGUAGEVALUES_GO, + TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA, + TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS, + TMP_TELEMETRYSDKLANGUAGEVALUES_PHP, + TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON, + TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY, + TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS, +]); +//# sourceMappingURL=SemanticResourceAttributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js.map new file mode 100644 index 0000000..cca1171 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SemanticResourceAttributes.js","sourceRoot":"","sources":["../../../src/resource/SemanticResourceAttributes.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\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/**\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 */\nexport const SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n\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 */\nexport const SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n\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 */\nexport const SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n\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 */\nexport const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n\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 */\nexport const SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n\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 */\nexport const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n\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 */\nexport const SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n\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 */\nexport const SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n\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 */\nexport const SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n\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 */\nexport const SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n\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 */\nexport const SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n\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 */\nexport const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n\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 */\nexport const SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n\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 */\nexport const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n\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 */\nexport const SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n\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 */\nexport const SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n\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*/\nexport const SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n\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*/\nexport const SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n\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 */\nexport const SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n\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 */\nexport const SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n\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 */\nexport const SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n\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 */\nexport const SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n\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 */\nexport const SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n\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 */\nexport const SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n\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 */\nexport const SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n\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 */\nexport const SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n\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 */\nexport const SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n\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 */\nexport const SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n\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 */\nexport const SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n\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 */\nexport const SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n\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 */\nexport const SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n\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 */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n\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 */\nexport const SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n\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 */\nexport const SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n\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 */\nexport const SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n\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 */\nexport const SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n\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 */\nexport const SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n\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 */\nexport const SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n\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 */\nexport const SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n\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 */\nexport const SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n\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 */\nexport const SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n\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 */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n\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 */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n\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 */\nexport const SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n\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 */\nexport const SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n\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 */\nexport const SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n\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 */\nexport const SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n\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 */\nexport const SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n\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 */\nexport const SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n\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 */\nexport const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION =\n TMP_PROCESS_RUNTIME_DESCRIPTION;\n\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 */\nexport const SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n\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 */\nexport const SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n\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 */\nexport const SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport const SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n\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 */\nexport const SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n\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 */\nexport const SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n\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 */\nexport const SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n\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 */\nexport const SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n\n/**\n * Definition of available values for SemanticResourceAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification.\n */\nexport type SemanticResourceAttributes = {\n /**\n * Name of the cloud provider.\n */\n CLOUD_PROVIDER: 'cloud.provider';\n\n /**\n * The cloud account ID the resource is assigned to.\n */\n CLOUD_ACCOUNT_ID: 'cloud.account.id';\n\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 CLOUD_REGION: 'cloud.region';\n\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 CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone';\n\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 CLOUD_PLATFORM: 'cloud.platform';\n\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 AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn';\n\n /**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n */\n AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn';\n\n /**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n */\n AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype';\n\n /**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n */\n AWS_ECS_TASK_ARN: 'aws.ecs.task.arn';\n\n /**\n * The task definition family this task definition is a member of.\n */\n AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family';\n\n /**\n * The revision for this task definition.\n */\n AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision';\n\n /**\n * The ARN of an EKS cluster.\n */\n AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn';\n\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 AWS_LOG_GROUP_NAMES: 'aws.log.group.names';\n\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 AWS_LOG_GROUP_ARNS: 'aws.log.group.arns';\n\n /**\n * The name(s) of the AWS log stream(s) an application is writing to.\n */\n AWS_LOG_STREAM_NAMES: 'aws.log.stream.names';\n\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 AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns';\n\n /**\n * Container name.\n */\n CONTAINER_NAME: 'container.name';\n\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 CONTAINER_ID: 'container.id';\n\n /**\n * The container runtime managing this container.\n */\n CONTAINER_RUNTIME: 'container.runtime';\n\n /**\n * Name of the image the container was built on.\n */\n CONTAINER_IMAGE_NAME: 'container.image.name';\n\n /**\n * Container image tag.\n */\n CONTAINER_IMAGE_TAG: 'container.image.tag';\n\n /**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n */\n DEPLOYMENT_ENVIRONMENT: 'deployment.environment';\n\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 DEVICE_ID: 'device.id';\n\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 DEVICE_MODEL_IDENTIFIER: 'device.model.identifier';\n\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 DEVICE_MODEL_NAME: 'device.model.name';\n\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 FAAS_NAME: 'faas.name';\n\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 FAAS_ID: 'faas.id';\n\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 FAAS_VERSION: 'faas.version';\n\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 FAAS_INSTANCE: 'faas.instance';\n\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 FAAS_MAX_MEMORY: 'faas.max_memory';\n\n /**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n */\n HOST_ID: 'host.id';\n\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 HOST_NAME: 'host.name';\n\n /**\n * Type of host. For Cloud, this must be the machine type.\n */\n HOST_TYPE: 'host.type';\n\n /**\n * The CPU architecture the host system is running on.\n */\n HOST_ARCH: 'host.arch';\n\n /**\n * Name of the VM image or OS install the host was instantiated from.\n */\n HOST_IMAGE_NAME: 'host.image.name';\n\n /**\n * VM image ID. For Cloud, this value is from the provider.\n */\n HOST_IMAGE_ID: 'host.image.id';\n\n /**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n */\n HOST_IMAGE_VERSION: 'host.image.version';\n\n /**\n * The name of the cluster.\n */\n K8S_CLUSTER_NAME: 'k8s.cluster.name';\n\n /**\n * The name of the Node.\n */\n K8S_NODE_NAME: 'k8s.node.name';\n\n /**\n * The UID of the Node.\n */\n K8S_NODE_UID: 'k8s.node.uid';\n\n /**\n * The name of the namespace that the pod is running in.\n */\n K8S_NAMESPACE_NAME: 'k8s.namespace.name';\n\n /**\n * The UID of the Pod.\n */\n K8S_POD_UID: 'k8s.pod.uid';\n\n /**\n * The name of the Pod.\n */\n K8S_POD_NAME: 'k8s.pod.name';\n\n /**\n * The name of the Container in a Pod template.\n */\n K8S_CONTAINER_NAME: 'k8s.container.name';\n\n /**\n * The UID of the ReplicaSet.\n */\n K8S_REPLICASET_UID: 'k8s.replicaset.uid';\n\n /**\n * The name of the ReplicaSet.\n */\n K8S_REPLICASET_NAME: 'k8s.replicaset.name';\n\n /**\n * The UID of the Deployment.\n */\n K8S_DEPLOYMENT_UID: 'k8s.deployment.uid';\n\n /**\n * The name of the Deployment.\n */\n K8S_DEPLOYMENT_NAME: 'k8s.deployment.name';\n\n /**\n * The UID of the StatefulSet.\n */\n K8S_STATEFULSET_UID: 'k8s.statefulset.uid';\n\n /**\n * The name of the StatefulSet.\n */\n K8S_STATEFULSET_NAME: 'k8s.statefulset.name';\n\n /**\n * The UID of the DaemonSet.\n */\n K8S_DAEMONSET_UID: 'k8s.daemonset.uid';\n\n /**\n * The name of the DaemonSet.\n */\n K8S_DAEMONSET_NAME: 'k8s.daemonset.name';\n\n /**\n * The UID of the Job.\n */\n K8S_JOB_UID: 'k8s.job.uid';\n\n /**\n * The name of the Job.\n */\n K8S_JOB_NAME: 'k8s.job.name';\n\n /**\n * The UID of the CronJob.\n */\n K8S_CRONJOB_UID: 'k8s.cronjob.uid';\n\n /**\n * The name of the CronJob.\n */\n K8S_CRONJOB_NAME: 'k8s.cronjob.name';\n\n /**\n * The operating system type.\n */\n OS_TYPE: 'os.type';\n\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 OS_DESCRIPTION: 'os.description';\n\n /**\n * Human readable operating system name.\n */\n OS_NAME: 'os.name';\n\n /**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n */\n OS_VERSION: 'os.version';\n\n /**\n * Process identifier (PID).\n */\n PROCESS_PID: 'process.pid';\n\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 PROCESS_EXECUTABLE_NAME: 'process.executable.name';\n\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 PROCESS_EXECUTABLE_PATH: 'process.executable.path';\n\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 PROCESS_COMMAND: 'process.command';\n\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 PROCESS_COMMAND_LINE: 'process.command_line';\n\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 PROCESS_COMMAND_ARGS: 'process.command_args';\n\n /**\n * The username of the user that owns the process.\n */\n PROCESS_OWNER: 'process.owner';\n\n /**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n */\n PROCESS_RUNTIME_NAME: 'process.runtime.name';\n\n /**\n * The version of the runtime of this process, as returned by the runtime without modification.\n */\n PROCESS_RUNTIME_VERSION: 'process.runtime.version';\n\n /**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n */\n PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description';\n\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 SERVICE_NAME: 'service.name';\n\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 SERVICE_NAMESPACE: 'service.namespace';\n\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 SERVICE_INSTANCE_ID: 'service.instance.id';\n\n /**\n * The version string of the service API or implementation.\n */\n SERVICE_VERSION: 'service.version';\n\n /**\n * The name of the telemetry SDK as defined above.\n */\n TELEMETRY_SDK_NAME: 'telemetry.sdk.name';\n\n /**\n * The language of the telemetry SDK.\n */\n TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language';\n\n /**\n * The version string of the telemetry SDK.\n */\n TELEMETRY_SDK_VERSION: 'telemetry.sdk.version';\n\n /**\n * The version string of the auto instrumentation agent, if used.\n */\n TELEMETRY_AUTO_VERSION: 'telemetry.auto.version';\n\n /**\n * The name of the web engine.\n */\n WEBENGINE_NAME: 'webengine.name';\n\n /**\n * The version of the web engine.\n */\n WEBENGINE_VERSION: 'webengine.version';\n\n /**\n * Additional description of the web engine (e.g. detailed version and edition information).\n */\n WEBENGINE_DESCRIPTION: 'webengine.description';\n};\n\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 */\nexport const SemanticResourceAttributes: SemanticResourceAttributes =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const CLOUDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n\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 */\nexport const CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n\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 */\nexport const CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n\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 */\nexport const CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport type CloudProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\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 */\nexport const CloudProviderValues: CloudProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_CLOUDPROVIDERVALUES_AWS,\n TMP_CLOUDPROVIDERVALUES_AZURE,\n TMP_CLOUDPROVIDERVALUES_GCP,\n ]);\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\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 =\n '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/**\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 */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n\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 */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_LAMBDA =\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK =\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE =\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_APP_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n\n/**\n * Identifies the 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 * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport type CloudPlatformValues = {\n /** Alibaba Cloud Elastic Compute Service. */\n ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs';\n\n /** Alibaba Cloud Function Compute. */\n ALIBABA_CLOUD_FC: 'alibaba_cloud_fc';\n\n /** AWS Elastic Compute Cloud. */\n AWS_EC2: 'aws_ec2';\n\n /** AWS Elastic Container Service. */\n AWS_ECS: 'aws_ecs';\n\n /** AWS Elastic Kubernetes Service. */\n AWS_EKS: 'aws_eks';\n\n /** AWS Lambda. */\n AWS_LAMBDA: 'aws_lambda';\n\n /** AWS Elastic Beanstalk. */\n AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk';\n\n /** Azure Virtual Machines. */\n AZURE_VM: 'azure_vm';\n\n /** Azure Container Instances. */\n AZURE_CONTAINER_INSTANCES: 'azure_container_instances';\n\n /** Azure Kubernetes Service. */\n AZURE_AKS: 'azure_aks';\n\n /** Azure Functions. */\n AZURE_FUNCTIONS: 'azure_functions';\n\n /** Azure App Service. */\n AZURE_APP_SERVICE: 'azure_app_service';\n\n /** Google Cloud Compute Engine (GCE). */\n GCP_COMPUTE_ENGINE: 'gcp_compute_engine';\n\n /** Google Cloud Run. */\n GCP_CLOUD_RUN: 'gcp_cloud_run';\n\n /** Google Cloud Kubernetes Engine (GKE). */\n GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine';\n\n /** Google Cloud Functions (GCF). */\n GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions';\n\n /** Google Cloud App Engine (GAE). */\n GCP_APP_ENGINE: 'gcp_app_engine';\n};\n\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 */\nexport const CloudPlatformValues: CloudPlatformValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n\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 */\nexport const AWSECSLAUNCHTYPEVALUES_FARGATE =\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n\n/**\n * Identifies the 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 * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport type AwsEcsLaunchtypeValues = {\n /** ec2. */\n EC2: 'ec2';\n\n /** fargate. */\n FARGATE: 'fargate';\n};\n\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 */\nexport const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n\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 */\nexport const HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n\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 */\nexport const HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n\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 */\nexport const HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n\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 */\nexport const HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n\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 */\nexport const HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n\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 */\nexport const HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n\n/**\n * Identifies the Values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport type HostArchValues = {\n /** AMD64. */\n AMD64: 'amd64';\n\n /** ARM32. */\n ARM32: 'arm32';\n\n /** ARM64. */\n ARM64: 'arm64';\n\n /** Itanium. */\n IA64: 'ia64';\n\n /** 32-bit PowerPC. */\n PPC32: 'ppc32';\n\n /** 64-bit PowerPC. */\n PPC64: 'ppc64';\n\n /** 32-bit x86. */\n X86: 'x86';\n};\n\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 */\nexport const HostArchValues: HostArchValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n\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 */\nexport const OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n\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 */\nexport const OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n\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 */\nexport const OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n\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 */\nexport const OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n\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 */\nexport const OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n\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 */\nexport const OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n\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 */\nexport const OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n\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 */\nexport const OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n\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 */\nexport const OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n\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 */\nexport const OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n\n/**\n * Identifies the Values for OsTypeValues enum definition\n *\n * The operating system type.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport type OsTypeValues = {\n /** Microsoft Windows. */\n WINDOWS: 'windows';\n\n /** Linux. */\n LINUX: 'linux';\n\n /** Apple Darwin. */\n DARWIN: 'darwin';\n\n /** FreeBSD. */\n FREEBSD: 'freebsd';\n\n /** NetBSD. */\n NETBSD: 'netbsd';\n\n /** OpenBSD. */\n OPENBSD: 'openbsd';\n\n /** DragonFly BSD. */\n DRAGONFLYBSD: 'dragonflybsd';\n\n /** HP-UX (Hewlett Packard Unix). */\n HPUX: 'hpux';\n\n /** AIX (Advanced Interactive eXecutive). */\n AIX: 'aix';\n\n /** Oracle Solaris. */\n SOLARIS: 'solaris';\n\n /** IBM z/OS. */\n Z_OS: 'z_os';\n};\n\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 */\nexport const OsTypeValues: OsTypeValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_CPP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_DOTNET =\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_ERLANG =\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_JAVA =\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_NODEJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PHP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PYTHON =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_RUBY =\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_WEBJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n\n/**\n * Identifies the Values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport type TelemetrySdkLanguageValues = {\n /** cpp. */\n CPP: 'cpp';\n\n /** dotnet. */\n DOTNET: 'dotnet';\n\n /** erlang. */\n ERLANG: 'erlang';\n\n /** go. */\n GO: 'go';\n\n /** java. */\n JAVA: 'java';\n\n /** nodejs. */\n NODEJS: 'nodejs';\n\n /** php. */\n PHP: 'php';\n\n /** python. */\n PYTHON: 'python';\n\n /** ruby. */\n RUBY: 'ruby';\n\n /** webjs. */\n WEBJS: 'webjs';\n};\n\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 */\nexport const TelemetrySdkLanguageValues: TelemetrySdkLanguageValues =\n /*#__PURE__*/ 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"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.d.ts new file mode 100644 index 0000000..300db0a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.d.ts @@ -0,0 +1,2 @@ +export * from './SemanticResourceAttributes'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.js new file mode 100644 index 0000000..691a334 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable no-restricted-syntax -- + * These re-exports are only of constants, only one-level deep at this point, + * and should not cause problems for tree-shakers. + */ +export * from './SemanticResourceAttributes'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.js.map new file mode 100644 index 0000000..06a263d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resource/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,cAAc,8BAA8B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* 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 */\nexport * from './SemanticResourceAttributes';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.d.ts new file mode 100644 index 0000000..f3f6a36 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.d.ts @@ -0,0 +1,1069 @@ +/** + * ASP.NET Core exception middleware handling result. + * + * @example handled + * @example unhandled + */ +export declare const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT: "aspnetcore.diagnostics.exception.result"; +/** + * Enum value "aborted" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling didn't run because the request was aborted. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED: "aborted"; +/** + * Enum value "handled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was handled by the exception handling middleware. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED: "handled"; +/** + * Enum value "skipped" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling was skipped because the response had started. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED: "skipped"; +/** + * Enum value "unhandled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was not handled by the exception handling middleware. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED: "unhandled"; +/** + * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception. + * + * @example Contoso.MyHandler + */ +export declare const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE: "aspnetcore.diagnostics.handler.type"; +/** + * Rate limiting policy name. + * + * @example fixed + * @example sliding + * @example token + */ +export declare const ATTR_ASPNETCORE_RATE_LIMITING_POLICY: "aspnetcore.rate_limiting.policy"; +/** + * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason + * + * @example acquired + * @example request_canceled + */ +export declare const ATTR_ASPNETCORE_RATE_LIMITING_RESULT: "aspnetcore.rate_limiting.result"; +/** + * Enum value "acquired" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease was acquired + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED: "acquired"; +/** + * Enum value "endpoint_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the endpoint limiter + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER: "endpoint_limiter"; +/** + * Enum value "global_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the global limiter + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER: "global_limiter"; +/** + * Enum value "request_canceled" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was canceled + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED: "request_canceled"; +/** + * Flag indicating if request was handled by the application pipeline. + * + * @example true + */ +export declare const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED: "aspnetcore.request.is_unhandled"; +/** + * A value that indicates whether the matched route is a fallback route. + * + * @example true + */ +export declare const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK: "aspnetcore.routing.is_fallback"; +/** + * Match result - success or failure + * + * @example success + * @example failure + */ +export declare const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS: "aspnetcore.routing.match_status"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match failed + */ +export declare const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match succeeded + */ +export declare const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS: "success"; +/** + * A value that indicates whether the user is authenticated. + * + * @example true + */ +export declare const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED: "aspnetcore.user.is_authenticated"; +/** + * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example client.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +export declare const ATTR_CLIENT_ADDRESS: "client.address"; +/** + * Client port number. + * + * @example 65123 + * + * @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. + */ +export declare const ATTR_CLIENT_PORT: "client.port"; +/** + * 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. + * + * @example 16 + */ +export declare const ATTR_CODE_COLUMN_NUMBER: "code.column.number"; +/** + * 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. + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + */ +export declare const ATTR_CODE_FILE_PATH: "code.file.path"; +/** + * 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. + * + * @example com.example.MyHttpService.serveRequest + * @example GuzzleHttp\\Client::transfer + * @example fopen + * + * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples. + * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in + * `code.stacktrace` without information on arguments. + * + * Examples: + * + * - Java method: `com.example.MyHttpService.serveRequest` + * - Java anonymous class method: `com.mycompany.Main$1.myMethod` + * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod` + * - PHP function: `GuzzleHttp\Client::transfer` + * - Go function: `github.com/my/repo/pkg.foo.func5` + * - Elixir: `OpenTelemetry.Ctx.new` + * - Erlang: `opentelemetry_ctx:new` + * - Rust: `playground::my_module::my_cool_func` + * - C function: `fopen` + */ +export declare const ATTR_CODE_FUNCTION_NAME: "code.function.name"; +/** + * 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. + * + * @example 42 + */ +export declare const ATTR_CODE_LINE_NUMBER: "code.line.number"; +/** + * 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. + * + * @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" + */ +export declare const ATTR_CODE_STACKTRACE: "code.stacktrace"; +/** + * The name of a collection (table, container) within the database. + * + * @example public.users + * @example customers + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The collection name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple collections + * in non-batch operations. + * + * For batch operations, if the individual operations are known to have the same + * collection name then that collection name **SHOULD** be used. + */ +export declare const ATTR_DB_COLLECTION_NAME: "db.collection.name"; +/** + * The name of the database, fully qualified within the server address and port. + * + * @example customers + * @example test.users + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system. + * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization. + */ +export declare const ATTR_DB_NAMESPACE: "db.namespace"; +/** + * The number of queries included in a batch operation. + * + * @example 2 + * @example 3 + * @example 4 + * + * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`. + */ +export declare const ATTR_DB_OPERATION_BATCH_SIZE: "db.operation.batch.size"; +/** + * The name of the operation or command being executed. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The operation name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple operations + * in non-batch operations. + * + * If spaces can occur in the operation name, multiple consecutive spaces + * **SHOULD** be normalized to a single space. + * + * For batch operations, if the individual operations are known to have the same operation name + * then that operation name **SHOULD** be used prepended by `BATCH `, + * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database + * system specific term if more applicable. + */ +export declare const ATTR_DB_OPERATION_NAME: "db.operation.name"; +/** + * Low cardinality summary of a database query. + * + * @example SELECT wuser_table + * @example INSERT shipping_details SELECT orders + * @example get user by id + * + * @note The query summary describes a class of database queries and is useful + * as a grouping key, especially when analyzing telemetry for database + * calls involving complex queries. + * + * Summary may be available to the instrumentation through + * instrumentation hooks or other means. If it is not available, instrumentations + * that support query parsing **SHOULD** generate a summary following + * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query) + * section. + */ +export declare const ATTR_DB_QUERY_SUMMARY: "db.query.summary"; +/** + * The database query being executed. + * + * @example SELECT * FROM wuser_table where username = ? + * @example SET mykey ? + * + * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext). + * 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. + * 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. + */ +export declare const ATTR_DB_QUERY_TEXT: "db.query.text"; +/** + * Database response status code. + * + * @example 102 + * @example ORA-17002 + * @example 08P01 + * @example 404 + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system. + */ +export declare const ATTR_DB_RESPONSE_STATUS_CODE: "db.response.status_code"; +/** + * The name of a stored procedure within the database. + * + * @example GetCustomer + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * For batch operations, if the individual operations are known to have the same + * stored procedure name then that stored procedure name **SHOULD** be used. + */ +export declare const ATTR_DB_STORED_PROCEDURE_NAME: "db.stored_procedure.name"; +/** + * The database management system (DBMS) product as identified by the client instrumentation. + * + * @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. + */ +export declare const ATTR_DB_SYSTEM_NAME: "db.system.name"; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MariaDB](https://mariadb.org/) + */ +export declare const DB_SYSTEM_NAME_VALUE_MARIADB: "mariadb"; +/** + * Enum value "microsoft.sql_server" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Microsoft SQL Server](https://www.microsoft.com/sql-server) + */ +export declare const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER: "microsoft.sql_server"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MySQL](https://www.mysql.com/) + */ +export declare const DB_SYSTEM_NAME_VALUE_MYSQL: "mysql"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [PostgreSQL](https://www.postgresql.org/) + */ +export declare const DB_SYSTEM_NAME_VALUE_POSTGRESQL: "postgresql"; +/** + * Name of the garbage collector managed heap generation. + * + * @example gen0 + * @example gen1 + * @example gen2 + */ +export declare const ATTR_DOTNET_GC_HEAP_GENERATION: "dotnet.gc.heap.generation"; +/** + * Enum value "gen0" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 0 + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0: "gen0"; +/** + * Enum value "gen1" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 1 + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1: "gen1"; +/** + * Enum value "gen2" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 2 + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2: "gen2"; +/** + * Enum value "loh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Large Object Heap + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_LOH: "loh"; +/** + * Enum value "poh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Pinned Object Heap + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_POH: "poh"; +/** + * Describes a class of error the operation ended with. + * + * @example timeout + * @example java.net.UnknownHostException + * @example server_certificate_invalid + * @example 500 + * + * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality. + * + * When `error.type` is set to a type (e.g., an exception type), its + * canonical class name identifying the type within the artifact **SHOULD** be used. + * + * Instrumentations **SHOULD** document the list of errors they report. + * + * The cardinality of `error.type` within one instrumentation library **SHOULD** be low. + * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications + * should be prepared for `error.type` to have high cardinality at query time when no + * additional filters are applied. + * + * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`. + * + * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes), + * it's **RECOMMENDED** to: + * + * - Use a domain-specific attribute + * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not. + */ +export declare const ATTR_ERROR_TYPE: "error.type"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ERROR_TYPE}. + * + * A fallback error value to be used when the instrumentation doesn't define a custom value. + */ +export declare const ERROR_TYPE_VALUE_OTHER: "_OTHER"; +/** + * Indicates that the exception is escaping the scope of the span. + * + * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span. + */ +export declare const ATTR_EXCEPTION_ESCAPED: "exception.escaped"; +/** + * The exception message. + * + * @example Division by zero + * @example Can't convert 'int' object to str implicitly + */ +export declare const ATTR_EXCEPTION_MESSAGE: "exception.message"; +/** + * 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. + * + * @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" + */ +export declare const ATTR_EXCEPTION_STACKTRACE: "exception.stacktrace"; +/** + * 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. + * + * @example java.net.ConnectException + * @example OSError + */ +export declare const ATTR_EXCEPTION_TYPE: "exception.type"; +/** + * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * The `User-Agent` header is already captured in the `user_agent.original` attribute. + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type` + * attribute with value `["application/json"]`. + * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for` + * 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. + */ +export declare const ATTR_HTTP_REQUEST_HEADER: (key: string) => string; +/** + * HTTP request method. + * + * @example GET + * @example POST + * @example HEAD + * + * @note HTTP request method value **SHOULD** be "known" to the instrumentation. + * By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods), + * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html) + * 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). + * + * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`. + * + * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override + * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named + * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods + * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults). + * + * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly. + * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent. + * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value. + */ +export declare const ATTR_HTTP_REQUEST_METHOD: "http.request.method"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * Any HTTP method that the instrumentation has no prior knowledge of. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_OTHER: "_OTHER"; +/** + * Enum value "CONNECT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * CONNECT method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_CONNECT: "CONNECT"; +/** + * Enum value "DELETE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * DELETE method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_DELETE: "DELETE"; +/** + * Enum value "GET" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * GET method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_GET: "GET"; +/** + * Enum value "HEAD" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * HEAD method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_HEAD: "HEAD"; +/** + * Enum value "OPTIONS" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * OPTIONS method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_OPTIONS: "OPTIONS"; +/** + * Enum value "PATCH" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PATCH method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_PATCH: "PATCH"; +/** + * Enum value "POST" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * POST method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_POST: "POST"; +/** + * Enum value "PUT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PUT method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_PUT: "PUT"; +/** + * Enum value "TRACE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * TRACE method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_TRACE: "TRACE"; +/** + * Original HTTP method sent by the client in the request line. + * + * @example GeT + * @example ACL + * @example foo + */ +export declare const ATTR_HTTP_REQUEST_METHOD_ORIGINAL: "http.request.method_original"; +/** + * The ordinal number of request resending attempt (for any reason, including redirects). + * + * @example 3 + * + * @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). + */ +export declare const ATTR_HTTP_REQUEST_RESEND_COUNT: "http.request.resend_count"; +/** + * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["abc", "def"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type` + * attribute with value `["application/json"]`. + * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header` + * attribute with value `["abc", "def"]` or `["abc, def"]` depending on the HTTP library. + */ +export declare const ATTR_HTTP_RESPONSE_HEADER: (key: string) => string; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @example 200 + */ +export declare const ATTR_HTTP_RESPONSE_STATUS_CODE: "http.response.status_code"; +/** + * 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. + * + * @example /users/:userID? + * @example my-controller/my-action/{id?} + * + * @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. + * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one. + * + * 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 + * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`. + * + * 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. + * + * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY** + * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string. + */ +export declare const ATTR_HTTP_ROUTE: "http.route"; +/** + * Name of the garbage collector action. + * + * @example end of minor GC + * @example end of major GC + * + * @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()). + */ +export declare const ATTR_JVM_GC_ACTION: "jvm.gc.action"; +/** + * Name of the garbage collector. + * + * @example G1 Young Generation + * @example G1 Old Generation + * + * @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()). + */ +export declare const ATTR_JVM_GC_NAME: "jvm.gc.name"; +/** + * Name of the memory pool. + * + * @example G1 Old Gen + * @example G1 Eden space + * @example G1 Survivor Space + * + * @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()). + */ +export declare const ATTR_JVM_MEMORY_POOL_NAME: "jvm.memory.pool.name"; +/** + * The type of memory. + * + * @example heap + * @example non_heap + */ +export declare const ATTR_JVM_MEMORY_TYPE: "jvm.memory.type"; +/** + * Enum value "heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Heap memory. + */ +export declare const JVM_MEMORY_TYPE_VALUE_HEAP: "heap"; +/** + * Enum value "non_heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Non-heap memory + */ +export declare const JVM_MEMORY_TYPE_VALUE_NON_HEAP: "non_heap"; +/** + * Whether the thread is daemon or not. + */ +export declare const ATTR_JVM_THREAD_DAEMON: "jvm.thread.daemon"; +/** + * State of the thread. + * + * @example runnable + * @example blocked + */ +export declare const ATTR_JVM_THREAD_STATE: "jvm.thread.state"; +/** + * Enum value "blocked" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is blocked waiting for a monitor lock is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_BLOCKED: "blocked"; +/** + * Enum value "new" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has not yet started is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_NEW: "new"; +/** + * Enum value "runnable" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread executing in the Java virtual machine is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_RUNNABLE: "runnable"; +/** + * Enum value "terminated" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has exited is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_TERMINATED: "terminated"; +/** + * Enum value "timed_waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_TIMED_WAITING: "timed_waiting"; +/** + * Enum value "waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting indefinitely for another thread to perform a particular action is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_WAITING: "waiting"; +/** + * Local address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +export declare const ATTR_NETWORK_LOCAL_ADDRESS: "network.local.address"; +/** + * Local port number of the network connection. + * + * @example 65123 + */ +export declare const ATTR_NETWORK_LOCAL_PORT: "network.local.port"; +/** + * Peer address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +export declare const ATTR_NETWORK_PEER_ADDRESS: "network.peer.address"; +/** + * Peer port number of the network connection. + * + * @example 65123 + */ +export declare const ATTR_NETWORK_PEER_PORT: "network.peer.port"; +/** + * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent. + * + * @example amqp + * @example http + * @example mqtt + * + * @note The value **SHOULD** be normalized to lowercase. + */ +export declare const ATTR_NETWORK_PROTOCOL_NAME: "network.protocol.name"; +/** + * The actual version of the protocol used for network communication. + * + * @example 1.1 + * @example 2 + * + * @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. + */ +export declare const ATTR_NETWORK_PROTOCOL_VERSION: "network.protocol.version"; +/** + * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). + * + * @example tcp + * @example udp + * + * @note The value **SHOULD** be normalized to lowercase. + * + * Consider always setting the transport when setting a port number, since + * a port number is ambiguous without knowing the transport. For example + * different processes could be listening on TCP port 12345 and UDP port 12345. + */ +export declare const ATTR_NETWORK_TRANSPORT: "network.transport"; +/** + * Enum value "pipe" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Named or anonymous pipe. + */ +export declare const NETWORK_TRANSPORT_VALUE_PIPE: "pipe"; +/** + * Enum value "quic" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * QUIC + */ +export declare const NETWORK_TRANSPORT_VALUE_QUIC: "quic"; +/** + * Enum value "tcp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * TCP + */ +export declare const NETWORK_TRANSPORT_VALUE_TCP: "tcp"; +/** + * Enum value "udp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * UDP + */ +export declare const NETWORK_TRANSPORT_VALUE_UDP: "udp"; +/** + * Enum value "unix" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Unix domain socket + */ +export declare const NETWORK_TRANSPORT_VALUE_UNIX: "unix"; +/** + * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent. + * + * @example ipv4 + * @example ipv6 + * + * @note The value **SHOULD** be normalized to lowercase. + */ +export declare const ATTR_NETWORK_TYPE: "network.type"; +/** + * Enum value "ipv4" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv4 + */ +export declare const NETWORK_TYPE_VALUE_IPV4: "ipv4"; +/** + * Enum value "ipv6" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv6 + */ +export declare const NETWORK_TYPE_VALUE_IPV6: "ipv6"; +/** + * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP). + * + * @example io.opentelemetry.contrib.mongodb + */ +export declare const ATTR_OTEL_SCOPE_NAME: "otel.scope.name"; +/** + * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP). + * + * @example 1.0.0 + */ +export declare const ATTR_OTEL_SCOPE_VERSION: "otel.scope.version"; +/** + * Name of the code, either "OK" or "ERROR". **MUST NOT** be set if the status code is UNSET. + */ +export declare const ATTR_OTEL_STATUS_CODE: "otel.status_code"; +/** + * Enum value "ERROR" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation contains an error. + */ +export declare const OTEL_STATUS_CODE_VALUE_ERROR: "ERROR"; +/** + * Enum value "OK" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation has been validated by an Application developer or Operator to have completed successfully. + */ +export declare const OTEL_STATUS_CODE_VALUE_OK: "OK"; +/** + * Description of the Status if it has a value, otherwise not set. + * + * @example resource not found + */ +export declare const ATTR_OTEL_STATUS_DESCRIPTION: "otel.status_description"; +/** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +export declare const ATTR_SERVER_ADDRESS: "server.address"; +/** + * Server port number. + * + * @example 80 + * @example 8080 + * @example 443 + * + * @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. + */ +export declare const ATTR_SERVER_PORT: "server.port"; +/** + * Logical name of the service. + * + * @example shoppingcart + * + * @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`. + */ +export declare const ATTR_SERVICE_NAME: "service.name"; +/** + * The version string of the service component. The format is not defined by these conventions. + * + * @example 2.0.0 + * @example a01dbef8a + */ +export declare const ATTR_SERVICE_VERSION: "service.version"; +/** + * SignalR HTTP connection closure status. + * + * @example app_shutdown + * @example timeout + */ +export declare const ATTR_SIGNALR_CONNECTION_STATUS: "signalr.connection.status"; +/** + * Enum value "app_shutdown" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed because the app is shutting down. + */ +export declare const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN: "app_shutdown"; +/** + * Enum value "normal_closure" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed normally. + */ +export declare const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE: "normal_closure"; +/** + * Enum value "timeout" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed due to a timeout. + */ +export declare const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT: "timeout"; +/** + * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md) + * + * @example web_sockets + * @example long_polling + */ +export declare const ATTR_SIGNALR_TRANSPORT: "signalr.transport"; +/** + * Enum value "long_polling" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * LongPolling protocol + */ +export declare const SIGNALR_TRANSPORT_VALUE_LONG_POLLING: "long_polling"; +/** + * Enum value "server_sent_events" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * ServerSentEvents protocol + */ +export declare const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS: "server_sent_events"; +/** + * Enum value "web_sockets" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * WebSockets protocol + */ +export declare const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS: "web_sockets"; +/** + * The language of the telemetry SDK. + */ +export declare const ATTR_TELEMETRY_SDK_LANGUAGE: "telemetry.sdk.language"; +/** + * Enum value "cpp" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_CPP: "cpp"; +/** + * Enum value "dotnet" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET: "dotnet"; +/** + * Enum value "erlang" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG: "erlang"; +/** + * Enum value "go" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_GO: "go"; +/** + * Enum value "java" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA: "java"; +/** + * Enum value "nodejs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS: "nodejs"; +/** + * Enum value "php" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_PHP: "php"; +/** + * Enum value "python" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON: "python"; +/** + * Enum value "ruby" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY: "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_RUST: "rust"; +/** + * Enum value "swift" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT: "swift"; +/** + * Enum value "webjs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS: "webjs"; +/** + * The name of the telemetry SDK as defined above. + * + * @example opentelemetry + * + * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`. + * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the + * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point + * or another suitable identifier depending on the language. + * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case. + * All custom identifiers **SHOULD** be stable across different versions of an implementation. + */ +export declare const ATTR_TELEMETRY_SDK_NAME: "telemetry.sdk.name"; +/** + * The version string of the telemetry SDK. + * + * @example 1.2.3 + */ +export declare const ATTR_TELEMETRY_SDK_VERSION: "telemetry.sdk.version"; +/** + * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component + * + * @example SemConv + */ +export declare const ATTR_URL_FRAGMENT: "url.fragment"; +/** + * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example //localhost + * + * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment + * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless. + * + * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`. + * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`. + * + * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed). + * + * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the + * value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `https://www.example.com/path?color=blue&sig=REDACTED`. + */ +export declare const ATTR_URL_FULL: "url.full"; +/** + * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component + * + * @example /search + * + * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it. + */ +export declare const ATTR_URL_PATH: "url.path"; +/** + * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component + * + * @example q=OpenTelemetry + * + * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `q=OpenTelemetry&sig=REDACTED`. + */ +export declare const ATTR_URL_QUERY: "url.query"; +/** + * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol. + * + * @example https + * @example ftp + * @example telnet + */ +export declare const ATTR_URL_SCHEME: "url.scheme"; +/** + * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2 + */ +export declare const ATTR_USER_AGENT_ORIGINAL: "user_agent.original"; +//# sourceMappingURL=stable_attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js new file mode 100644 index 0000000..3e86430 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js @@ -0,0 +1,1087 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * ASP.NET Core exception middleware handling result. + * + * @example handled + * @example unhandled + */ +export const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result'; +/** + * Enum value "aborted" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling didn't run because the request was aborted. + */ +export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = "aborted"; +/** + * Enum value "handled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was handled by the exception handling middleware. + */ +export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = "handled"; +/** + * Enum value "skipped" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling was skipped because the response had started. + */ +export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = "skipped"; +/** + * Enum value "unhandled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was not handled by the exception handling middleware. + */ +export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = "unhandled"; +/** + * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception. + * + * @example Contoso.MyHandler + */ +export const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type'; +/** + * Rate limiting policy name. + * + * @example fixed + * @example sliding + * @example token + */ +export const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy'; +/** + * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason + * + * @example acquired + * @example request_canceled + */ +export const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result'; +/** + * Enum value "acquired" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease was acquired + */ +export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = "acquired"; +/** + * Enum value "endpoint_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the endpoint limiter + */ +export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = "endpoint_limiter"; +/** + * Enum value "global_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the global limiter + */ +export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = "global_limiter"; +/** + * Enum value "request_canceled" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was canceled + */ +export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = "request_canceled"; +/** + * Flag indicating if request was handled by the application pipeline. + * + * @example true + */ +export const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled'; +/** + * A value that indicates whether the matched route is a fallback route. + * + * @example true + */ +export const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback'; +/** + * Match result - success or failure + * + * @example success + * @example failure + */ +export const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match failed + */ +export const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match succeeded + */ +export const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = "success"; +/** + * A value that indicates whether the user is authenticated. + * + * @example true + */ +export const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated'; +/** + * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example client.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +export const ATTR_CLIENT_ADDRESS = 'client.address'; +/** + * Client port number. + * + * @example 65123 + * + * @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. + */ +export const ATTR_CLIENT_PORT = 'client.port'; +/** + * 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. + * + * @example 16 + */ +export const ATTR_CODE_COLUMN_NUMBER = 'code.column.number'; +/** + * 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. + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + */ +export const ATTR_CODE_FILE_PATH = 'code.file.path'; +/** + * 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. + * + * @example com.example.MyHttpService.serveRequest + * @example GuzzleHttp\\Client::transfer + * @example fopen + * + * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples. + * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in + * `code.stacktrace` without information on arguments. + * + * Examples: + * + * - Java method: `com.example.MyHttpService.serveRequest` + * - Java anonymous class method: `com.mycompany.Main$1.myMethod` + * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod` + * - PHP function: `GuzzleHttp\Client::transfer` + * - Go function: `github.com/my/repo/pkg.foo.func5` + * - Elixir: `OpenTelemetry.Ctx.new` + * - Erlang: `opentelemetry_ctx:new` + * - Rust: `playground::my_module::my_cool_func` + * - C function: `fopen` + */ +export const ATTR_CODE_FUNCTION_NAME = 'code.function.name'; +/** + * 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. + * + * @example 42 + */ +export const ATTR_CODE_LINE_NUMBER = 'code.line.number'; +/** + * 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. + * + * @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" + */ +export const ATTR_CODE_STACKTRACE = 'code.stacktrace'; +/** + * The name of a collection (table, container) within the database. + * + * @example public.users + * @example customers + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The collection name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple collections + * in non-batch operations. + * + * For batch operations, if the individual operations are known to have the same + * collection name then that collection name **SHOULD** be used. + */ +export const ATTR_DB_COLLECTION_NAME = 'db.collection.name'; +/** + * The name of the database, fully qualified within the server address and port. + * + * @example customers + * @example test.users + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system. + * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization. + */ +export const ATTR_DB_NAMESPACE = 'db.namespace'; +/** + * The number of queries included in a batch operation. + * + * @example 2 + * @example 3 + * @example 4 + * + * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`. + */ +export const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size'; +/** + * The name of the operation or command being executed. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The operation name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple operations + * in non-batch operations. + * + * If spaces can occur in the operation name, multiple consecutive spaces + * **SHOULD** be normalized to a single space. + * + * For batch operations, if the individual operations are known to have the same operation name + * then that operation name **SHOULD** be used prepended by `BATCH `, + * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database + * system specific term if more applicable. + */ +export const ATTR_DB_OPERATION_NAME = 'db.operation.name'; +/** + * Low cardinality summary of a database query. + * + * @example SELECT wuser_table + * @example INSERT shipping_details SELECT orders + * @example get user by id + * + * @note The query summary describes a class of database queries and is useful + * as a grouping key, especially when analyzing telemetry for database + * calls involving complex queries. + * + * Summary may be available to the instrumentation through + * instrumentation hooks or other means. If it is not available, instrumentations + * that support query parsing **SHOULD** generate a summary following + * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query) + * section. + */ +export const ATTR_DB_QUERY_SUMMARY = 'db.query.summary'; +/** + * The database query being executed. + * + * @example SELECT * FROM wuser_table where username = ? + * @example SET mykey ? + * + * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext). + * 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. + * 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. + */ +export const ATTR_DB_QUERY_TEXT = 'db.query.text'; +/** + * Database response status code. + * + * @example 102 + * @example ORA-17002 + * @example 08P01 + * @example 404 + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system. + */ +export const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code'; +/** + * The name of a stored procedure within the database. + * + * @example GetCustomer + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * For batch operations, if the individual operations are known to have the same + * stored procedure name then that stored procedure name **SHOULD** be used. + */ +export const ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name'; +/** + * The database management system (DBMS) product as identified by the client instrumentation. + * + * @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. + */ +export const ATTR_DB_SYSTEM_NAME = 'db.system.name'; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MariaDB](https://mariadb.org/) + */ +export const DB_SYSTEM_NAME_VALUE_MARIADB = "mariadb"; +/** + * Enum value "microsoft.sql_server" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Microsoft SQL Server](https://www.microsoft.com/sql-server) + */ +export const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = "microsoft.sql_server"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MySQL](https://www.mysql.com/) + */ +export const DB_SYSTEM_NAME_VALUE_MYSQL = "mysql"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [PostgreSQL](https://www.postgresql.org/) + */ +export const DB_SYSTEM_NAME_VALUE_POSTGRESQL = "postgresql"; +/** + * Name of the garbage collector managed heap generation. + * + * @example gen0 + * @example gen1 + * @example gen2 + */ +export const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation'; +/** + * Enum value "gen0" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 0 + */ +export const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = "gen0"; +/** + * Enum value "gen1" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 1 + */ +export const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = "gen1"; +/** + * Enum value "gen2" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 2 + */ +export const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = "gen2"; +/** + * Enum value "loh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Large Object Heap + */ +export const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = "loh"; +/** + * Enum value "poh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Pinned Object Heap + */ +export const DOTNET_GC_HEAP_GENERATION_VALUE_POH = "poh"; +/** + * Describes a class of error the operation ended with. + * + * @example timeout + * @example java.net.UnknownHostException + * @example server_certificate_invalid + * @example 500 + * + * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality. + * + * When `error.type` is set to a type (e.g., an exception type), its + * canonical class name identifying the type within the artifact **SHOULD** be used. + * + * Instrumentations **SHOULD** document the list of errors they report. + * + * The cardinality of `error.type` within one instrumentation library **SHOULD** be low. + * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications + * should be prepared for `error.type` to have high cardinality at query time when no + * additional filters are applied. + * + * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`. + * + * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes), + * it's **RECOMMENDED** to: + * + * - Use a domain-specific attribute + * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not. + */ +export const ATTR_ERROR_TYPE = 'error.type'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ERROR_TYPE}. + * + * A fallback error value to be used when the instrumentation doesn't define a custom value. + */ +export const ERROR_TYPE_VALUE_OTHER = "_OTHER"; +/** + * Indicates that the exception is escaping the scope of the span. + * + * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span. + */ +export const ATTR_EXCEPTION_ESCAPED = 'exception.escaped'; +/** + * The exception message. + * + * @example Division by zero + * @example Can't convert 'int' object to str implicitly + */ +export const ATTR_EXCEPTION_MESSAGE = 'exception.message'; +/** + * 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. + * + * @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" + */ +export const ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace'; +/** + * 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. + * + * @example java.net.ConnectException + * @example OSError + */ +export const ATTR_EXCEPTION_TYPE = 'exception.type'; +/** + * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * The `User-Agent` header is already captured in the `user_agent.original` attribute. + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type` + * attribute with value `["application/json"]`. + * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for` + * 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. + */ +export const ATTR_HTTP_REQUEST_HEADER = (key) => `http.request.header.${key}`; +/** + * HTTP request method. + * + * @example GET + * @example POST + * @example HEAD + * + * @note HTTP request method value **SHOULD** be "known" to the instrumentation. + * By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods), + * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html) + * 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). + * + * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`. + * + * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override + * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named + * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods + * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults). + * + * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly. + * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent. + * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value. + */ +export const ATTR_HTTP_REQUEST_METHOD = 'http.request.method'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * Any HTTP method that the instrumentation has no prior knowledge of. + */ +export const HTTP_REQUEST_METHOD_VALUE_OTHER = "_OTHER"; +/** + * Enum value "CONNECT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * CONNECT method. + */ +export const HTTP_REQUEST_METHOD_VALUE_CONNECT = "CONNECT"; +/** + * Enum value "DELETE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * DELETE method. + */ +export const HTTP_REQUEST_METHOD_VALUE_DELETE = "DELETE"; +/** + * Enum value "GET" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * GET method. + */ +export const HTTP_REQUEST_METHOD_VALUE_GET = "GET"; +/** + * Enum value "HEAD" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * HEAD method. + */ +export const HTTP_REQUEST_METHOD_VALUE_HEAD = "HEAD"; +/** + * Enum value "OPTIONS" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * OPTIONS method. + */ +export const HTTP_REQUEST_METHOD_VALUE_OPTIONS = "OPTIONS"; +/** + * Enum value "PATCH" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PATCH method. + */ +export const HTTP_REQUEST_METHOD_VALUE_PATCH = "PATCH"; +/** + * Enum value "POST" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * POST method. + */ +export const HTTP_REQUEST_METHOD_VALUE_POST = "POST"; +/** + * Enum value "PUT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PUT method. + */ +export const HTTP_REQUEST_METHOD_VALUE_PUT = "PUT"; +/** + * Enum value "TRACE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * TRACE method. + */ +export const HTTP_REQUEST_METHOD_VALUE_TRACE = "TRACE"; +/** + * Original HTTP method sent by the client in the request line. + * + * @example GeT + * @example ACL + * @example foo + */ +export const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original'; +/** + * The ordinal number of request resending attempt (for any reason, including redirects). + * + * @example 3 + * + * @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). + */ +export const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count'; +/** + * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["abc", "def"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type` + * attribute with value `["application/json"]`. + * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header` + * attribute with value `["abc", "def"]` or `["abc, def"]` depending on the HTTP library. + */ +export const ATTR_HTTP_RESPONSE_HEADER = (key) => `http.response.header.${key}`; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @example 200 + */ +export const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code'; +/** + * 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. + * + * @example /users/:userID? + * @example my-controller/my-action/{id?} + * + * @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. + * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one. + * + * 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 + * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`. + * + * 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. + * + * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY** + * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string. + */ +export const ATTR_HTTP_ROUTE = 'http.route'; +/** + * Name of the garbage collector action. + * + * @example end of minor GC + * @example end of major GC + * + * @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()). + */ +export const ATTR_JVM_GC_ACTION = 'jvm.gc.action'; +/** + * Name of the garbage collector. + * + * @example G1 Young Generation + * @example G1 Old Generation + * + * @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()). + */ +export const ATTR_JVM_GC_NAME = 'jvm.gc.name'; +/** + * Name of the memory pool. + * + * @example G1 Old Gen + * @example G1 Eden space + * @example G1 Survivor Space + * + * @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()). + */ +export const ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name'; +/** + * The type of memory. + * + * @example heap + * @example non_heap + */ +export const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type'; +/** + * Enum value "heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Heap memory. + */ +export const JVM_MEMORY_TYPE_VALUE_HEAP = "heap"; +/** + * Enum value "non_heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Non-heap memory + */ +export const JVM_MEMORY_TYPE_VALUE_NON_HEAP = "non_heap"; +/** + * Whether the thread is daemon or not. + */ +export const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon'; +/** + * State of the thread. + * + * @example runnable + * @example blocked + */ +export const ATTR_JVM_THREAD_STATE = 'jvm.thread.state'; +/** + * Enum value "blocked" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is blocked waiting for a monitor lock is in this state. + */ +export const JVM_THREAD_STATE_VALUE_BLOCKED = "blocked"; +/** + * Enum value "new" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has not yet started is in this state. + */ +export const JVM_THREAD_STATE_VALUE_NEW = "new"; +/** + * Enum value "runnable" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread executing in the Java virtual machine is in this state. + */ +export const JVM_THREAD_STATE_VALUE_RUNNABLE = "runnable"; +/** + * Enum value "terminated" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has exited is in this state. + */ +export const JVM_THREAD_STATE_VALUE_TERMINATED = "terminated"; +/** + * Enum value "timed_waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state. + */ +export const JVM_THREAD_STATE_VALUE_TIMED_WAITING = "timed_waiting"; +/** + * Enum value "waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting indefinitely for another thread to perform a particular action is in this state. + */ +export const JVM_THREAD_STATE_VALUE_WAITING = "waiting"; +/** + * Local address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +export const ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address'; +/** + * Local port number of the network connection. + * + * @example 65123 + */ +export const ATTR_NETWORK_LOCAL_PORT = 'network.local.port'; +/** + * Peer address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +export const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address'; +/** + * Peer port number of the network connection. + * + * @example 65123 + */ +export const ATTR_NETWORK_PEER_PORT = 'network.peer.port'; +/** + * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent. + * + * @example amqp + * @example http + * @example mqtt + * + * @note The value **SHOULD** be normalized to lowercase. + */ +export const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name'; +/** + * The actual version of the protocol used for network communication. + * + * @example 1.1 + * @example 2 + * + * @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. + */ +export const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version'; +/** + * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). + * + * @example tcp + * @example udp + * + * @note The value **SHOULD** be normalized to lowercase. + * + * Consider always setting the transport when setting a port number, since + * a port number is ambiguous without knowing the transport. For example + * different processes could be listening on TCP port 12345 and UDP port 12345. + */ +export const ATTR_NETWORK_TRANSPORT = 'network.transport'; +/** + * Enum value "pipe" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Named or anonymous pipe. + */ +export const NETWORK_TRANSPORT_VALUE_PIPE = "pipe"; +/** + * Enum value "quic" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * QUIC + */ +export const NETWORK_TRANSPORT_VALUE_QUIC = "quic"; +/** + * Enum value "tcp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * TCP + */ +export const NETWORK_TRANSPORT_VALUE_TCP = "tcp"; +/** + * Enum value "udp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * UDP + */ +export const NETWORK_TRANSPORT_VALUE_UDP = "udp"; +/** + * Enum value "unix" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Unix domain socket + */ +export const NETWORK_TRANSPORT_VALUE_UNIX = "unix"; +/** + * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent. + * + * @example ipv4 + * @example ipv6 + * + * @note The value **SHOULD** be normalized to lowercase. + */ +export const ATTR_NETWORK_TYPE = 'network.type'; +/** + * Enum value "ipv4" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv4 + */ +export const NETWORK_TYPE_VALUE_IPV4 = "ipv4"; +/** + * Enum value "ipv6" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv6 + */ +export const NETWORK_TYPE_VALUE_IPV6 = "ipv6"; +/** + * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP). + * + * @example io.opentelemetry.contrib.mongodb + */ +export const ATTR_OTEL_SCOPE_NAME = 'otel.scope.name'; +/** + * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP). + * + * @example 1.0.0 + */ +export const ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version'; +/** + * Name of the code, either "OK" or "ERROR". **MUST NOT** be set if the status code is UNSET. + */ +export const ATTR_OTEL_STATUS_CODE = 'otel.status_code'; +/** + * Enum value "ERROR" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation contains an error. + */ +export const OTEL_STATUS_CODE_VALUE_ERROR = "ERROR"; +/** + * Enum value "OK" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation has been validated by an Application developer or Operator to have completed successfully. + */ +export const OTEL_STATUS_CODE_VALUE_OK = "OK"; +/** + * Description of the Status if it has a value, otherwise not set. + * + * @example resource not found + */ +export const ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description'; +/** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +export const ATTR_SERVER_ADDRESS = 'server.address'; +/** + * Server port number. + * + * @example 80 + * @example 8080 + * @example 443 + * + * @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. + */ +export const ATTR_SERVER_PORT = 'server.port'; +/** + * Logical name of the service. + * + * @example shoppingcart + * + * @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`. + */ +export const ATTR_SERVICE_NAME = 'service.name'; +/** + * The version string of the service component. The format is not defined by these conventions. + * + * @example 2.0.0 + * @example a01dbef8a + */ +export const ATTR_SERVICE_VERSION = 'service.version'; +/** + * SignalR HTTP connection closure status. + * + * @example app_shutdown + * @example timeout + */ +export const ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status'; +/** + * Enum value "app_shutdown" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed because the app is shutting down. + */ +export const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = "app_shutdown"; +/** + * Enum value "normal_closure" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed normally. + */ +export const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = "normal_closure"; +/** + * Enum value "timeout" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed due to a timeout. + */ +export const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = "timeout"; +/** + * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md) + * + * @example web_sockets + * @example long_polling + */ +export const ATTR_SIGNALR_TRANSPORT = 'signalr.transport'; +/** + * Enum value "long_polling" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * LongPolling protocol + */ +export const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = "long_polling"; +/** + * Enum value "server_sent_events" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * ServerSentEvents protocol + */ +export const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = "server_sent_events"; +/** + * Enum value "web_sockets" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * WebSockets protocol + */ +export const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = "web_sockets"; +/** + * The language of the telemetry SDK. + */ +export const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language'; +/** + * Enum value "cpp" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = "cpp"; +/** + * Enum value "dotnet" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = "dotnet"; +/** + * Enum value "erlang" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = "erlang"; +/** + * Enum value "go" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_GO = "go"; +/** + * Enum value "java" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = "java"; +/** + * Enum value "nodejs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = "nodejs"; +/** + * Enum value "php" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = "php"; +/** + * Enum value "python" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = "python"; +/** + * Enum value "ruby" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = "rust"; +/** + * Enum value "swift" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = "swift"; +/** + * Enum value "webjs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = "webjs"; +/** + * The name of the telemetry SDK as defined above. + * + * @example opentelemetry + * + * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`. + * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the + * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point + * or another suitable identifier depending on the language. + * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case. + * All custom identifiers **SHOULD** be stable across different versions of an implementation. + */ +export const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name'; +/** + * The version string of the telemetry SDK. + * + * @example 1.2.3 + */ +export const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version'; +/** + * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component + * + * @example SemConv + */ +export const ATTR_URL_FRAGMENT = 'url.fragment'; +/** + * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example //localhost + * + * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment + * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless. + * + * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`. + * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`. + * + * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed). + * + * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the + * value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `https://www.example.com/path?color=blue&sig=REDACTED`. + */ +export const ATTR_URL_FULL = 'url.full'; +/** + * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component + * + * @example /search + * + * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it. + */ +export const ATTR_URL_PATH = 'url.path'; +/** + * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component + * + * @example q=OpenTelemetry + * + * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `q=OpenTelemetry&sig=REDACTED`. + */ +export const ATTR_URL_QUERY = 'url.query'; +/** + * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol. + * + * @example https + * @example ftp + * @example telnet + */ +export const ATTR_URL_SCHEME = 'url.scheme'; +/** + * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2 + */ +export const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original'; +//# sourceMappingURL=stable_attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map new file mode 100644 index 0000000..9c33474 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stable_attributes.js","sourceRoot":"","sources":["../../src/stable_attributes.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * ASP.NET Core exception middleware handling result.\n *\n * @example handled\n * @example unhandled\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result' as const;\n\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 */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\" as const;\n\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 */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\" as const;\n\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 */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\" as const;\n\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 */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type' as const;\n\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy' as const;\n\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 */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result' as const;\n\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease was acquired\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\" as const;\n\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 */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\" as const;\n\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 */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\" as const;\n\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was canceled\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\" as const;\n\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled' as const;\n\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback' as const;\n\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match failed\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match succeeded\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * A value that indicates whether the user is authenticated.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated' as const;\n\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 */\nexport const ATTR_CLIENT_ADDRESS = 'client.address' as const;\n\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 */\nexport const ATTR_CLIENT_PORT = 'client.port' as const;\n\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 */\nexport const ATTR_CODE_COLUMN_NUMBER = 'code.column.number' as const;\n\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 */\nexport const ATTR_CODE_FILE_PATH = 'code.file.path' as const;\n\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 */\nexport const ATTR_CODE_FUNCTION_NAME = 'code.function.name' as const;\n\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 */\nexport const ATTR_CODE_LINE_NUMBER = 'code.line.number' as const;\n\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 */\nexport const ATTR_CODE_STACKTRACE = 'code.stacktrace' as const;\n\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 */\nexport const ATTR_DB_COLLECTION_NAME = 'db.collection.name' as const;\n\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 */\nexport const ATTR_DB_NAMESPACE = 'db.namespace' as const;\n\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 */\nexport const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size' as const;\n\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 */\nexport const ATTR_DB_OPERATION_NAME = 'db.operation.name' as const;\n\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 */\nexport const ATTR_DB_QUERY_SUMMARY = 'db.query.summary' as const;\n\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 */\nexport const ATTR_DB_QUERY_TEXT = 'db.query.text' as const;\n\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 */\nexport const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code' as const;\n\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 */\nexport const ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name' as const;\n\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 */\nexport const ATTR_DB_SYSTEM_NAME = 'db.system.name' as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MariaDB](https://mariadb.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MARIADB = \"mariadb\" as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = \"microsoft.sql_server\" as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MySQL](https://www.mysql.com/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [PostgreSQL](https://www.postgresql.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Name of the garbage collector managed heap generation.\n *\n * @example gen0\n * @example gen1\n * @example gen2\n */\nexport const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation' as const;\n\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 0\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\" as const;\n\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 1\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\" as const;\n\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 2\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\" as const;\n\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Large Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\" as const;\n\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Pinned Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\" as const;\n\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 */\nexport const ATTR_ERROR_TYPE = 'error.type' as const;\n\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 */\nexport const ERROR_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\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 */\nexport const ATTR_EXCEPTION_ESCAPED = 'exception.escaped' as const;\n\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n */\nexport const ATTR_EXCEPTION_MESSAGE = 'exception.message' as const;\n\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 */\nexport const ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace' as const;\n\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 */\nexport const ATTR_EXCEPTION_TYPE = 'exception.type' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_HEADER = (key: string) => `http.request.header.${key}`;\n\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 * (this list **MUST** be a full override of the default known method, 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 */\nexport const ATTR_HTTP_REQUEST_METHOD = 'http.request.method' as const;\n\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 */\nexport const HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * CONNECT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\" as const;\n\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * DELETE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\" as const;\n\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * GET method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_GET = \"GET\" as const;\n\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * HEAD method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\" as const;\n\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * OPTIONS method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\" as const;\n\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PATCH method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\" as const;\n\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * POST method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_POST = \"POST\" as const;\n\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PUT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\" as const;\n\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * TRACE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\" as const;\n\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count' as const;\n\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 */\nexport const ATTR_HTTP_RESPONSE_HEADER = (key: string) => `http.response.header.${key}`;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code' as const;\n\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 */\nexport const ATTR_HTTP_ROUTE = 'http.route' as const;\n\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 */\nexport const ATTR_JVM_GC_ACTION = 'jvm.gc.action' as const;\n\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 */\nexport const ATTR_JVM_GC_NAME = 'jvm.gc.name' as const;\n\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 */\nexport const ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name' as const;\n\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type' as const;\n\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Heap memory.\n */\nexport const JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\" as const;\n\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Non-heap memory\n */\nexport const JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\" as const;\n\n/**\n * Whether the thread is daemon or not.\n */\nexport const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon' as const;\n\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport const ATTR_JVM_THREAD_STATE = 'jvm.thread.state' as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_NEW = \"new\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has exited is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_WAITING = \"waiting\" as const;\n\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 */\nexport const ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address' as const;\n\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_LOCAL_PORT = 'network.local.port' as const;\n\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 */\nexport const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address' as const;\n\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_PEER_PORT = 'network.peer.port' as const;\n\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 */\nexport const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name' as const;\n\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 */\nexport const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version' as const;\n\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 */\nexport const ATTR_NETWORK_TRANSPORT = 'network.transport' as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Named or anonymous pipe.\n */\nexport const NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * QUIC\n */\nexport const NETWORK_TRANSPORT_VALUE_QUIC = \"quic\" as const;\n\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * TCP\n */\nexport const NETWORK_TRANSPORT_VALUE_TCP = \"tcp\" as const;\n\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * UDP\n */\nexport const NETWORK_TRANSPORT_VALUE_UDP = \"udp\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Unix domain socket\n */\nexport const NETWORK_TRANSPORT_VALUE_UNIX = \"unix\" as const;\n\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 */\nexport const ATTR_NETWORK_TYPE = 'network.type' as const;\n\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv4\n */\nexport const NETWORK_TYPE_VALUE_IPV4 = \"ipv4\" as const;\n\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv6\n */\nexport const NETWORK_TYPE_VALUE_IPV6 = \"ipv6\" as const;\n\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport const ATTR_OTEL_SCOPE_NAME = 'otel.scope.name' as const;\n\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport const ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version' as const;\n\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport const ATTR_OTEL_STATUS_CODE = 'otel.status_code' as const;\n\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation contains an error.\n */\nexport const OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\" as const;\n\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 */\nexport const OTEL_STATUS_CODE_VALUE_OK = \"OK\" as const;\n\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport const ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description' as const;\n\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 */\nexport const ATTR_SERVER_ADDRESS = 'server.address' as const;\n\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 */\nexport const ATTR_SERVER_PORT = 'server.port' as const;\n\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 */\nexport const ATTR_SERVICE_NAME = 'service.name' as const;\n\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 */\nexport const ATTR_SERVICE_VERSION = 'service.version' as const;\n\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport const ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status' as const;\n\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 */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\" as const;\n\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed normally.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed due to a timeout.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\" as const;\n\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 */\nexport const ATTR_SIGNALR_TRANSPORT = 'signalr.transport' as const;\n\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * LongPolling protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\" as const;\n\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * ServerSentEvents protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\" as const;\n\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * WebSockets protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\" as const;\n\n/**\n * The language of the telemetry SDK.\n */\nexport const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language' as const;\n\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\" as const;\n\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\" as const;\n\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\" as const;\n\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 */\nexport const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name' as const;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version' as const;\n\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport const ATTR_URL_FRAGMENT = 'url.fragment' as const;\n\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 * 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 */\nexport const ATTR_URL_FULL = 'url.full' as const;\n\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 */\nexport const ATTR_URL_PATH = 'url.path' as const;\n\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 * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `q=OpenTelemetry&sig=REDACTED`.\n */\nexport const ATTR_URL_QUERY = 'url.query' as const;\n\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 */\nexport const ATTR_URL_SCHEME = 'url.scheme' as const;\n\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 */\nexport const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.d.ts new file mode 100644 index 0000000..271463b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.d.ts @@ -0,0 +1,5 @@ +/** + * This event describes a single exception. + */ +export declare const EVENT_EXCEPTION: "exception"; +//# sourceMappingURL=stable_events.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.js new file mode 100644 index 0000000..e3cc7d8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//----------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2 +//----------------------------------------------------------------------------------------------------------- +/** + * This event describes a single exception. + */ +export const EVENT_EXCEPTION = 'exception'; +//# sourceMappingURL=stable_events.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.js.map new file mode 100644 index 0000000..a501b95 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stable_events.js","sourceRoot":"","sources":["../../src/stable_events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,6GAA6G;AAC7G,6GAA6G;AAC7G,6GAA6G;AAE7G;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,WAAoB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------\n\n/**\n * This event describes a single exception.\n */\nexport const EVENT_EXCEPTION = 'exception' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.d.ts new file mode 100644 index 0000000..ba8f069 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.d.ts @@ -0,0 +1,308 @@ +/** + * Number of exceptions caught by exception handling middleware. + * + * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS: "aspnetcore.diagnostics.exceptions"; +/** + * Number of requests that are currently active on the server that hold a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES: "aspnetcore.rate_limiting.active_request_leases"; +/** + * Number of requests that are currently queued, waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS: "aspnetcore.rate_limiting.queued_requests"; +/** + * The time the request spent in a queue waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE: "aspnetcore.rate_limiting.request.time_in_queue"; +/** + * The duration of rate limiting lease held by requests on the server. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION: "aspnetcore.rate_limiting.request_lease.duration"; +/** + * Number of requests that tried to acquire a rate limiting lease. + * + * @note Requests could be: + * + * - Rejected by global or endpoint rate limiting policies + * - Canceled while waiting for the lease. + * + * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS: "aspnetcore.rate_limiting.requests"; +/** + * Number of requests that were attempted to be matched to an endpoint. + * + * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS: "aspnetcore.routing.match_attempts"; +/** + * Duration of database client operations. + * + * @note Batch operations **SHOULD** be recorded as a single operation. + */ +export declare const METRIC_DB_CLIENT_OPERATION_DURATION: "db.client.operation.duration"; +/** + * The number of .NET assemblies that are currently loaded. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies). + */ +export declare const METRIC_DOTNET_ASSEMBLY_COUNT: "dotnet.assembly.count"; +/** + * The number of exceptions that have been thrown in managed code. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception). + */ +export declare const METRIC_DOTNET_EXCEPTIONS: "dotnet.exceptions"; +/** + * The number of garbage collections that have occurred since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation. + */ +export declare const METRIC_DOTNET_GC_COLLECTIONS: "dotnet.gc.collections"; +/** + * 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. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes). + */ +export declare const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED: "dotnet.gc.heap.total_allocated"; +/** + * The heap fragmentation, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes). + */ +export declare const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE: "dotnet.gc.last_collection.heap.fragmentation.size"; +/** + * The managed GC heap size (including fragmentation), as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes). + */ +export declare const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE: "dotnet.gc.last_collection.heap.size"; +/** + * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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. + */ +export declare const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE: "dotnet.gc.last_collection.memory.committed_size"; +/** + * The total amount of time paused in GC since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration). + */ +export declare const METRIC_DOTNET_GC_PAUSE_TIME: "dotnet.gc.pause.time"; +/** + * The amount of time the JIT compiler has spent compiling methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime). + */ +export declare const METRIC_DOTNET_JIT_COMPILATION_TIME: "dotnet.jit.compilation.time"; +/** + * Count of bytes of intermediate language that have been compiled since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes). + */ +export declare const METRIC_DOTNET_JIT_COMPILED_IL_SIZE: "dotnet.jit.compiled_il.size"; +/** + * The number of times the JIT compiler (re)compiled methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount). + */ +export declare const METRIC_DOTNET_JIT_COMPILED_METHODS: "dotnet.jit.compiled_methods"; +/** + * The number of times there was contention when trying to acquire a monitor lock since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount). + */ +export declare const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS: "dotnet.monitor.lock_contentions"; +/** + * The number of processors available to the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount). + */ +export declare const METRIC_DOTNET_PROCESS_CPU_COUNT: "dotnet.process.cpu.count"; +/** + * CPU time used by the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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). + */ +export declare const METRIC_DOTNET_PROCESS_CPU_TIME: "dotnet.process.cpu.time"; +/** + * The number of bytes of physical memory mapped to the process context. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset). + */ +export declare const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET: "dotnet.process.memory.working_set"; +/** + * The number of work items that are currently queued to be processed by the thread pool. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount). + */ +export declare const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH: "dotnet.thread_pool.queue.length"; +/** + * The number of thread pool threads that currently exist. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount). + */ +export declare const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT: "dotnet.thread_pool.thread.count"; +/** + * The number of work items that the thread pool has completed since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount). + */ +export declare const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT: "dotnet.thread_pool.work_item.count"; +/** + * The number of timer instances that are currently active. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount). + */ +export declare const METRIC_DOTNET_TIMER_COUNT: "dotnet.timer.count"; +/** + * Duration of HTTP client requests. + */ +export declare const METRIC_HTTP_CLIENT_REQUEST_DURATION: "http.client.request.duration"; +/** + * Duration of HTTP server requests. + */ +export declare const METRIC_HTTP_SERVER_REQUEST_DURATION: "http.server.request.duration"; +/** + * Number of classes currently loaded. + */ +export declare const METRIC_JVM_CLASS_COUNT: "jvm.class.count"; +/** + * Number of classes loaded since JVM start. + */ +export declare const METRIC_JVM_CLASS_LOADED: "jvm.class.loaded"; +/** + * Number of classes unloaded since JVM start. + */ +export declare const METRIC_JVM_CLASS_UNLOADED: "jvm.class.unloaded"; +/** + * Number of processors available to the Java virtual machine. + */ +export declare const METRIC_JVM_CPU_COUNT: "jvm.cpu.count"; +/** + * Recent CPU utilization for the process as reported by the JVM. + * + * @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()). + */ +export declare const METRIC_JVM_CPU_RECENT_UTILIZATION: "jvm.cpu.recent_utilization"; +/** + * CPU time used by the process as reported by the JVM. + */ +export declare const METRIC_JVM_CPU_TIME: "jvm.cpu.time"; +/** + * Duration of JVM garbage collection actions. + */ +export declare const METRIC_JVM_GC_DURATION: "jvm.gc.duration"; +/** + * Measure of memory committed. + */ +export declare const METRIC_JVM_MEMORY_COMMITTED: "jvm.memory.committed"; +/** + * Measure of max obtainable memory. + */ +export declare const METRIC_JVM_MEMORY_LIMIT: "jvm.memory.limit"; +/** + * Measure of memory used. + */ +export declare const METRIC_JVM_MEMORY_USED: "jvm.memory.used"; +/** + * Measure of memory used, as measured after the most recent garbage collection event on this pool. + */ +export declare const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC: "jvm.memory.used_after_last_gc"; +/** + * Number of executing platform threads. + */ +export declare const METRIC_JVM_THREAD_COUNT: "jvm.thread.count"; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_ACTIVE_CONNECTIONS: "kestrel.active_connections"; +/** + * Number of TLS handshakes that are currently in progress on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES: "kestrel.active_tls_handshakes"; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_CONNECTION_DURATION: "kestrel.connection.duration"; +/** + * Number of connections that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_QUEUED_CONNECTIONS: "kestrel.queued_connections"; +/** + * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_QUEUED_REQUESTS: "kestrel.queued_requests"; +/** + * Number of connections rejected by the server. + * + * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`. + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_REJECTED_CONNECTIONS: "kestrel.rejected_connections"; +/** + * The duration of TLS handshakes on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_TLS_HANDSHAKE_DURATION: "kestrel.tls_handshake.duration"; +/** + * Number of connections that are currently upgraded (WebSockets). . + * + * @note The counter only tracks HTTP/1.1 connections. + * + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_UPGRADED_CONNECTIONS: "kestrel.upgraded_connections"; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS: "signalr.server.active_connections"; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_SIGNALR_SERVER_CONNECTION_DURATION: "signalr.server.connection.duration"; +//# sourceMappingURL=stable_metrics.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.js new file mode 100644 index 0000000..cad2896 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.js @@ -0,0 +1,326 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * Number of exceptions caught by exception handling middleware. + * + * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions'; +/** + * Number of requests that are currently active on the server that hold a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases'; +/** + * Number of requests that are currently queued, waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests'; +/** + * The time the request spent in a queue waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue'; +/** + * The duration of rate limiting lease held by requests on the server. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration'; +/** + * Number of requests that tried to acquire a rate limiting lease. + * + * @note Requests could be: + * + * - Rejected by global or endpoint rate limiting policies + * - Canceled while waiting for the lease. + * + * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests'; +/** + * Number of requests that were attempted to be matched to an endpoint. + * + * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts'; +/** + * Duration of database client operations. + * + * @note Batch operations **SHOULD** be recorded as a single operation. + */ +export const METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration'; +/** + * The number of .NET assemblies that are currently loaded. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies). + */ +export const METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count'; +/** + * The number of exceptions that have been thrown in managed code. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception). + */ +export const METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions'; +/** + * The number of garbage collections that have occurred since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation. + */ +export const METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections'; +/** + * 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. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes). + */ +export const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated'; +/** + * The heap fragmentation, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes). + */ +export const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size'; +/** + * The managed GC heap size (including fragmentation), as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes). + */ +export const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size'; +/** + * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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. + */ +export const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size'; +/** + * The total amount of time paused in GC since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration). + */ +export const METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time'; +/** + * The amount of time the JIT compiler has spent compiling methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime). + */ +export const METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time'; +/** + * Count of bytes of intermediate language that have been compiled since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes). + */ +export const METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size'; +/** + * The number of times the JIT compiler (re)compiled methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount). + */ +export const METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods'; +/** + * The number of times there was contention when trying to acquire a monitor lock since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount). + */ +export const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions'; +/** + * The number of processors available to the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount). + */ +export const METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count'; +/** + * CPU time used by the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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). + */ +export const METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time'; +/** + * The number of bytes of physical memory mapped to the process context. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset). + */ +export const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set'; +/** + * The number of work items that are currently queued to be processed by the thread pool. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount). + */ +export const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length'; +/** + * The number of thread pool threads that currently exist. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount). + */ +export const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count'; +/** + * The number of work items that the thread pool has completed since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount). + */ +export const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count'; +/** + * The number of timer instances that are currently active. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount). + */ +export const METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count'; +/** + * Duration of HTTP client requests. + */ +export const METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration'; +/** + * Duration of HTTP server requests. + */ +export const METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration'; +/** + * Number of classes currently loaded. + */ +export const METRIC_JVM_CLASS_COUNT = 'jvm.class.count'; +/** + * Number of classes loaded since JVM start. + */ +export const METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded'; +/** + * Number of classes unloaded since JVM start. + */ +export const METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded'; +/** + * Number of processors available to the Java virtual machine. + */ +export const METRIC_JVM_CPU_COUNT = 'jvm.cpu.count'; +/** + * Recent CPU utilization for the process as reported by the JVM. + * + * @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()). + */ +export const METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization'; +/** + * CPU time used by the process as reported by the JVM. + */ +export const METRIC_JVM_CPU_TIME = 'jvm.cpu.time'; +/** + * Duration of JVM garbage collection actions. + */ +export const METRIC_JVM_GC_DURATION = 'jvm.gc.duration'; +/** + * Measure of memory committed. + */ +export const METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed'; +/** + * Measure of max obtainable memory. + */ +export const METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit'; +/** + * Measure of memory used. + */ +export const METRIC_JVM_MEMORY_USED = 'jvm.memory.used'; +/** + * Measure of memory used, as measured after the most recent garbage collection event on this pool. + */ +export const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc'; +/** + * Number of executing platform threads. + */ +export const METRIC_JVM_THREAD_COUNT = 'jvm.thread.count'; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections'; +/** + * Number of TLS handshakes that are currently in progress on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes'; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration'; +/** + * Number of connections that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections'; +/** + * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests'; +/** + * Number of connections rejected by the server. + * + * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`. + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections'; +/** + * The duration of TLS handshakes on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration'; +/** + * Number of connections that are currently upgraded (WebSockets). . + * + * @note The counter only tracks HTTP/1.1 connections. + * + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections'; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections'; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration'; +//# sourceMappingURL=stable_metrics.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.js.map new file mode 100644 index 0000000..02c758b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stable_metrics.js","sourceRoot":"","sources":["../../src/stable_metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\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 */\nexport const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests' as const;\n\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 */\nexport const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts' as const;\n\n/**\n * Duration of database client operations.\n *\n * @note Batch operations **SHOULD** be recorded as a single operation.\n */\nexport const METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration' as const;\n\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 */\nexport const METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count' as const;\n\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 */\nexport const METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions' as const;\n\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 */\nexport const METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections' as const;\n\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 */\nexport const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated' as const;\n\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 */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size' as const;\n\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 */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size' as const;\n\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 */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size' as const;\n\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 */\nexport const METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time' as const;\n\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 */\nexport const METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time' as const;\n\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 */\nexport const METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size' as const;\n\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 */\nexport const METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods' as const;\n\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 */\nexport const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions' as const;\n\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 */\nexport const METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count' as const;\n\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 */\nexport const METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time' as const;\n\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 */\nexport const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set' as const;\n\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 */\nexport const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length' as const;\n\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 */\nexport const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count' as const;\n\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 */\nexport const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count' as const;\n\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 */\nexport const METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count' as const;\n\n/**\n * Duration of HTTP client requests.\n */\nexport const METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration' as const;\n\n/**\n * Duration of HTTP server requests.\n */\nexport const METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration' as const;\n\n/**\n * Number of classes currently loaded.\n */\nexport const METRIC_JVM_CLASS_COUNT = 'jvm.class.count' as const;\n\n/**\n * Number of classes loaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded' as const;\n\n/**\n * Number of classes unloaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded' as const;\n\n/**\n * Number of processors available to the Java virtual machine.\n */\nexport const METRIC_JVM_CPU_COUNT = 'jvm.cpu.count' as const;\n\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 */\nexport const METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization' as const;\n\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexport const METRIC_JVM_CPU_TIME = 'jvm.cpu.time' as const;\n\n/**\n * Duration of JVM garbage collection actions.\n */\nexport const METRIC_JVM_GC_DURATION = 'jvm.gc.duration' as const;\n\n/**\n * Measure of memory committed.\n */\nexport const METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed' as const;\n\n/**\n * Measure of max obtainable memory.\n */\nexport const METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit' as const;\n\n/**\n * Measure of memory used.\n */\nexport const METRIC_JVM_MEMORY_USED = 'jvm.memory.used' as const;\n\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexport const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc' as const;\n\n/**\n * Number of executing platform threads.\n */\nexport const METRIC_JVM_THREAD_COUNT = 'jvm.thread.count' as const;\n\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 */\nexport const METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections' as const;\n\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 */\nexport const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes' as const;\n\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 */\nexport const METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration' as const;\n\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 */\nexport const METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections' as const;\n\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 */\nexport const METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests' as const;\n\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 */\nexport const METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections' as const;\n\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 */\nexport const METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration' as const;\n\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 */\nexport const METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections' as const;\n\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 */\nexport const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections' as const;\n\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 */\nexport const METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.d.ts new file mode 100644 index 0000000..defad8e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.d.ts @@ -0,0 +1,2664 @@ +/** + * 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). + * + * Note: This may be different from `faas.id` if an alias is involved. + * + * @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}). + */ +export declare const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = "aws.lambda.invoked_arn"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const SEMATTRS_DB_SYSTEM = "db.system"; +/** + * The connection string used to connect to the database. It is recommended to remove embedded credentials. + * + * @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}). + */ +export declare const SEMATTRS_DB_CONNECTION_STRING = "db.connection_string"; +/** + * Username for accessing the database. + * + * @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}). + */ +export declare const SEMATTRS_DB_USER = "db.user"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = "db.jdbc.driver_classname"; +/** + * 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). + * + * Note: In some SQL databases, the database name to be used is called "schema name". + * + * @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}). + */ +export declare const SEMATTRS_DB_NAME = "db.name"; +/** + * The database statement being executed. + * + * Note: The value may be sanitized to exclude sensitive information. + * + * @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}). + */ +export declare const SEMATTRS_DB_STATEMENT = "db.statement"; +/** + * 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. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_OPERATION = "db.operation"; +/** + * 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. + * + * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard). + * + * @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}). + */ +export declare const SEMATTRS_DB_MSSQL_INSTANCE_NAME = "db.mssql.instance_name"; +/** + * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_KEYSPACE = "db.cassandra.keyspace"; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = "db.cassandra.page_size"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = "db.cassandra.consistency_level"; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_TABLE = "db.cassandra.table"; +/** + * Whether or not the query is idempotent. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = "db.cassandra.idempotence"; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = "db.cassandra.speculative_execution_count"; +/** + * The ID of the coordinating node for a query. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = "db.cassandra.coordinator.id"; +/** + * The data center of the coordinating node for a query. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = "db.cassandra.coordinator.dc"; +/** + * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +export declare const SEMATTRS_DB_HBASE_NAMESPACE = "db.hbase.namespace"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_REDIS_DATABASE_INDEX = "db.redis.database_index"; +/** + * The collection being accessed within the database stated in `db.name`. + * + * @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}). + */ +export declare const SEMATTRS_DB_MONGODB_COLLECTION = "db.mongodb.collection"; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_SQL_TABLE = "db.sql.table"; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_TYPE. + */ +export declare const SEMATTRS_EXCEPTION_TYPE = "exception.type"; +/** + * The exception message. + * + * @deprecated Use ATTR_EXCEPTION_MESSAGE. + */ +export declare const SEMATTRS_EXCEPTION_MESSAGE = "exception.message"; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_STACKTRACE. + */ +export declare const SEMATTRS_EXCEPTION_STACKTRACE = "exception.stacktrace"; +/** +* 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. +* +* Note: An exception is considered to have escaped (or left) the scope of a span, +if that span is ended while the exception is still logically "in flight". +This may be actually "in flight" in some languages (e.g. if the exception +is passed to a Context manager's `__exit__` method in Python) but will +usually be caught at the point of recording the exception in most languages. + +It is usually not possible to determine at the point where an exception is thrown +whether it will escape the scope of a span. +However, it is trivial to know that an exception +will escape, if one checks for an active exception just before ending the span, +as done in the [example above](#exception-end-example). + +It follows that an exception may still escape the scope of the span +even if the `exception.escaped` attribute was not set or set to false, +since the event might have been recorded at a time where it was not +clear whether the exception will escape. +* +* @deprecated Use ATTR_EXCEPTION_ESCAPED. +*/ +export declare const SEMATTRS_EXCEPTION_ESCAPED = "exception.escaped"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_TRIGGER = "faas.trigger"; +/** + * The execution ID of the current function execution. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_EXECUTION = "faas.execution"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_COLLECTION = "faas.document.collection"; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_OPERATION = "faas.document.operation"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_TIME = "faas.document.time"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_NAME = "faas.document.name"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_TIME = "faas.time"; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_CRON = "faas.cron"; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_COLDSTART = "faas.coldstart"; +/** + * The name of the invoked function. + * + * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_INVOKED_NAME = "faas.invoked_name"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_INVOKED_PROVIDER = "faas.invoked_provider"; +/** + * The cloud region of the invoked function. + * + * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_INVOKED_REGION = "faas.invoked_region"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const SEMATTRS_NET_TRANSPORT = "net.transport"; +/** + * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6). + * + * @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}). + */ +export declare const SEMATTRS_NET_PEER_IP = "net.peer.ip"; +/** + * Remote port number. + * + * @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}). + */ +export declare const SEMATTRS_NET_PEER_PORT = "net.peer.port"; +/** + * Remote hostname or similar, see note below. + * + * @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}). + */ +export declare const SEMATTRS_NET_PEER_NAME = "net.peer.name"; +/** + * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_IP = "net.host.ip"; +/** + * Like `net.peer.port` but for the host port. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_PORT = "net.host.port"; +/** + * Local hostname or similar, see note below. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_NAME = "net.host.name"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CONNECTION_TYPE = "net.host.connection.type"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = "net.host.connection.subtype"; +/** + * The name of the mobile carrier. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_NAME = "net.host.carrier.name"; +/** + * The mobile carrier country code. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_MCC = "net.host.carrier.mcc"; +/** + * The mobile carrier network code. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_MNC = "net.host.carrier.mnc"; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_ICC = "net.host.carrier.icc"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_PEER_SERVICE = "peer.service"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_ENDUSER_ID = "enduser.id"; +/** + * Actual/assumed role the client is making the request under extracted from token or application security context. + * + * @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}). + */ +export declare const SEMATTRS_ENDUSER_ROLE = "enduser.role"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_ENDUSER_SCOPE = "enduser.scope"; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @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}). + */ +export declare const SEMATTRS_THREAD_ID = "thread.id"; +/** + * Current thread name. + * + * @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}). + */ +export declare const SEMATTRS_THREAD_NAME = "thread.name"; +/** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + * + * @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}). + */ +export declare const SEMATTRS_CODE_FUNCTION = "code.function"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_CODE_NAMESPACE = "code.namespace"; +/** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + * + * @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}). + */ +export declare const SEMATTRS_CODE_FILEPATH = "code.filepath"; +/** + * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + * + * @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}). + */ +export declare const SEMATTRS_CODE_LINENO = "code.lineno"; +/** + * HTTP request method. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_METHOD = "http.method"; +/** + * 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. + * + * 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/`. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_URL = "http.url"; +/** + * The full request target as passed in a HTTP request line or equivalent. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_TARGET = "http.target"; +/** + * 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. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_HOST = "http.host"; +/** + * The URI scheme identifying the used protocol. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_SCHEME = "http.scheme"; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @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}). + */ +export declare const SEMATTRS_HTTP_STATUS_CODE = "http.status_code"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_FLAVOR = "http.flavor"; +/** + * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_USER_AGENT = "http.user_agent"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = "http.request_content_length"; +/** + * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = "http.request_content_length_uncompressed"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = "http.response_content_length"; +/** + * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = "http.response_content_length_uncompressed"; +/** + * 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). + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_SERVER_NAME = "http.server_name"; +/** + * The matched route (path template). + * + * @deprecated Use ATTR_HTTP_ROUTE. + */ +export declare const SEMATTRS_HTTP_ROUTE = "http.route"; +/** +* 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)). +* +* Note: This is not necessarily the same as `net.peer.ip`, which would +identify the network-level peer, which may be a proxy. + +This attribute should be set when a source of information different +from the one used for `net.peer.ip`, is available even if that other +source just confirms the same value as `net.peer.ip`. +Rationale: For `net.peer.ip`, one typically does not know if it +comes from a proxy, reverse proxy, or the actual client. Setting +`http.client_ip` when it's the same as `net.peer.ip` means that +one is at least somewhat confident that the address is not that of +the closest proxy. +* +* @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}). +*/ +export declare const SEMATTRS_HTTP_CLIENT_IP = "http.client_ip"; +/** + * The keys in the `RequestItems` object field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = "aws.dynamodb.table_names"; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = "aws.dynamodb.consumed_capacity"; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = "aws.dynamodb.item_collection_metrics"; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = "aws.dynamodb.provisioned_read_capacity"; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = "aws.dynamodb.provisioned_write_capacity"; +/** + * The value of the `ConsistentRead` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = "aws.dynamodb.consistent_read"; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_PROJECTION = "aws.dynamodb.projection"; +/** + * The value of the `Limit` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_LIMIT = "aws.dynamodb.limit"; +/** + * The value of the `AttributesToGet` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = "aws.dynamodb.attributes_to_get"; +/** + * The value of the `IndexName` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = "aws.dynamodb.index_name"; +/** + * The value of the `Select` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SELECT = "aws.dynamodb.select"; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = "aws.dynamodb.global_secondary_indexes"; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = "aws.dynamodb.local_secondary_indexes"; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = "aws.dynamodb.exclusive_start_table"; +/** + * The the number of items in the `TableNames` response parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = "aws.dynamodb.table_count"; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = "aws.dynamodb.scan_forward"; +/** + * The value of the `Segment` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SEGMENT = "aws.dynamodb.segment"; +/** + * The value of the `TotalSegments` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = "aws.dynamodb.total_segments"; +/** + * The value of the `Count` response parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_COUNT = "aws.dynamodb.count"; +/** + * The value of the `ScannedCount` response parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = "aws.dynamodb.scanned_count"; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = "aws.dynamodb.attribute_definitions"; +/** + * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = "aws.dynamodb.global_secondary_index_updates"; +/** + * A string identifying the messaging system. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_SYSTEM = "messaging.system"; +/** + * The message destination name. This might be equal to the span name but is required nevertheless. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_DESTINATION = "messaging.destination"; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const SEMATTRS_MESSAGING_DESTINATION_KIND = "messaging.destination_kind"; +/** + * A boolean that is true if the message destination is temporary. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_TEMP_DESTINATION = "messaging.temp_destination"; +/** + * The name of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME. + */ +export declare const SEMATTRS_MESSAGING_PROTOCOL = "messaging.protocol"; +/** + * The version of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION. + */ +export declare const SEMATTRS_MESSAGING_PROTOCOL_VERSION = "messaging.protocol_version"; +/** + * Connection string. + * + * @deprecated Removed in semconv v1.17.0. + */ +export declare const SEMATTRS_MESSAGING_URL = "messaging.url"; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_MESSAGE_ID = "messaging.message_id"; +/** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_CONVERSATION_ID = "messaging.conversation_id"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = "messaging.message_payload_size_bytes"; +/** + * The compressed size of the message payload in bytes. + * + * @deprecated Removed in semconv v1.22.0. + */ +export declare const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = "messaging.message_payload_compressed_size_bytes"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_OPERATION = "messaging.operation"; +/** + * 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. + * + * @deprecated Removed in semconv v1.21.0. + */ +export declare const SEMATTRS_MESSAGING_CONSUMER_ID = "messaging.consumer_id"; +/** + * RabbitMQ message routing key. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = "messaging.rabbitmq.routing_key"; +/** + * 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. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = "messaging.kafka.message_key"; +/** + * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = "messaging.kafka.consumer_group"; +/** + * Client Id for the Consumer or Producer that is handling the message. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = "messaging.kafka.client_id"; +/** + * Partition the message is sent to. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_PARTITION = "messaging.kafka.partition"; +/** + * A boolean that is true if the message is a tombstone. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = "messaging.kafka.tombstone"; +/** + * A string identifying the remoting system. + * + * @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}). + */ +export declare const SEMATTRS_RPC_SYSTEM = "rpc.system"; +/** + * The full (logical) name of the service being called, including its package name, if applicable. + * + * 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). + * + * @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}). + */ +export declare const SEMATTRS_RPC_SERVICE = "rpc.service"; +/** + * The name of the (logical) method being called, must be equal to the $method part in the span name. + * + * 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). + * + * @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}). + */ +export declare const SEMATTRS_RPC_METHOD = "rpc.method"; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const SEMATTRS_RPC_GRPC_STATUS_CODE = "rpc.grpc.status_code"; +/** + * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_VERSION = "rpc.jsonrpc.version"; +/** + * `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. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_REQUEST_ID = "rpc.jsonrpc.request_id"; +/** + * `error.code` property of response if it is an error response. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_ERROR_CODE = "rpc.jsonrpc.error_code"; +/** + * `error.message` property of response if it is an error response. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = "rpc.jsonrpc.error_message"; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_TYPE = "message.type"; +/** + * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * Note: This way we guarantee that the values will be consistent between different implementations. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_ID = "message.id"; +/** + * Compressed size of the message in bytes. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_COMPRESSED_SIZE = "message.compressed_size"; +/** + * Uncompressed size of the message in bytes. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = "message.uncompressed_size"; +/** + * Definition of available values for SemanticAttributes + * This type is used for backward compatibility, you should use the individual exported + * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference + * to a constant map value will result in all strings being included into your bundle. + * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification. + */ +export type SemanticAttributes = { + /** + * 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). + * + * Note: This may be different from `faas.id` if an alias is involved. + */ + AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn'; + /** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + */ + DB_SYSTEM: 'db.system'; + /** + * The connection string used to connect to the database. It is recommended to remove embedded credentials. + */ + DB_CONNECTION_STRING: 'db.connection_string'; + /** + * Username for accessing the database. + */ + DB_USER: 'db.user'; + /** + * 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. + */ + DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname'; + /** + * 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). + * + * Note: In some SQL databases, the database name to be used is called "schema name". + */ + DB_NAME: 'db.name'; + /** + * The database statement being executed. + * + * Note: The value may be sanitized to exclude sensitive information. + */ + DB_STATEMENT: 'db.statement'; + /** + * 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. + * + * 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. + */ + DB_OPERATION: 'db.operation'; + /** + * 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. + * + * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard). + */ + DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name'; + /** + * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute. + */ + DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace'; + /** + * The fetch size used for paging, i.e. how many rows will be returned at once. + */ + DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size'; + /** + * 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). + */ + DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level'; + /** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + */ + DB_CASSANDRA_TABLE: 'db.cassandra.table'; + /** + * Whether or not the query is idempotent. + */ + DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence'; + /** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + */ + DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count'; + /** + * The ID of the coordinating node for a query. + */ + DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id'; + /** + * The data center of the coordinating node for a query. + */ + DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc'; + /** + * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute. + */ + DB_HBASE_NAMESPACE: 'db.hbase.namespace'; + /** + * 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. + */ + DB_REDIS_DATABASE_INDEX: 'db.redis.database_index'; + /** + * The collection being accessed within the database stated in `db.name`. + */ + DB_MONGODB_COLLECTION: 'db.mongodb.collection'; + /** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + */ + DB_SQL_TABLE: 'db.sql.table'; + /** + * 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. + */ + EXCEPTION_TYPE: 'exception.type'; + /** + * The exception message. + */ + EXCEPTION_MESSAGE: 'exception.message'; + /** + * 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. + */ + EXCEPTION_STACKTRACE: 'exception.stacktrace'; + /** + * 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. + * + * Note: An exception is considered to have escaped (or left) the scope of a span, + if that span is ended while the exception is still logically "in flight". + This may be actually "in flight" in some languages (e.g. if the exception + is passed to a Context manager's `__exit__` method in Python) but will + usually be caught at the point of recording the exception in most languages. + + It is usually not possible to determine at the point where an exception is thrown + whether it will escape the scope of a span. + However, it is trivial to know that an exception + will escape, if one checks for an active exception just before ending the span, + as done in the [example above](#exception-end-example). + + It follows that an exception may still escape the scope of the span + even if the `exception.escaped` attribute was not set or set to false, + since the event might have been recorded at a time where it was not + clear whether the exception will escape. + */ + EXCEPTION_ESCAPED: 'exception.escaped'; + /** + * Type of the trigger on which the function is executed. + */ + FAAS_TRIGGER: 'faas.trigger'; + /** + * The execution ID of the current function execution. + */ + FAAS_EXECUTION: 'faas.execution'; + /** + * 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. + */ + FAAS_DOCUMENT_COLLECTION: 'faas.document.collection'; + /** + * Describes the type of the operation that was performed on the data. + */ + FAAS_DOCUMENT_OPERATION: 'faas.document.operation'; + /** + * 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). + */ + FAAS_DOCUMENT_TIME: 'faas.document.time'; + /** + * 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. + */ + FAAS_DOCUMENT_NAME: 'faas.document.name'; + /** + * 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). + */ + FAAS_TIME: 'faas.time'; + /** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + */ + FAAS_CRON: 'faas.cron'; + /** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + */ + FAAS_COLDSTART: 'faas.coldstart'; + /** + * The name of the invoked function. + * + * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function. + */ + FAAS_INVOKED_NAME: 'faas.invoked_name'; + /** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + */ + FAAS_INVOKED_PROVIDER: 'faas.invoked_provider'; + /** + * The cloud region of the invoked function. + * + * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function. + */ + FAAS_INVOKED_REGION: 'faas.invoked_region'; + /** + * Transport protocol used. See note below. + */ + NET_TRANSPORT: 'net.transport'; + /** + * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6). + */ + NET_PEER_IP: 'net.peer.ip'; + /** + * Remote port number. + */ + NET_PEER_PORT: 'net.peer.port'; + /** + * Remote hostname or similar, see note below. + */ + NET_PEER_NAME: 'net.peer.name'; + /** + * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host. + */ + NET_HOST_IP: 'net.host.ip'; + /** + * Like `net.peer.port` but for the host port. + */ + NET_HOST_PORT: 'net.host.port'; + /** + * Local hostname or similar, see note below. + */ + NET_HOST_NAME: 'net.host.name'; + /** + * The internet connection type currently being used by the host. + */ + NET_HOST_CONNECTION_TYPE: 'net.host.connection.type'; + /** + * 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. + */ + NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype'; + /** + * The name of the mobile carrier. + */ + NET_HOST_CARRIER_NAME: 'net.host.carrier.name'; + /** + * The mobile carrier country code. + */ + NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc'; + /** + * The mobile carrier network code. + */ + NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc'; + /** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + */ + NET_HOST_CARRIER_ICC: 'net.host.carrier.icc'; + /** + * 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. + */ + PEER_SERVICE: 'peer.service'; + /** + * 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. + */ + ENDUSER_ID: 'enduser.id'; + /** + * Actual/assumed role the client is making the request under extracted from token or application security context. + */ + ENDUSER_ROLE: 'enduser.role'; + /** + * 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). + */ + ENDUSER_SCOPE: 'enduser.scope'; + /** + * Current "managed" thread ID (as opposed to OS thread ID). + */ + THREAD_ID: 'thread.id'; + /** + * Current thread name. + */ + THREAD_NAME: 'thread.name'; + /** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + */ + CODE_FUNCTION: 'code.function'; + /** + * 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. + */ + CODE_NAMESPACE: 'code.namespace'; + /** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + */ + CODE_FILEPATH: 'code.filepath'; + /** + * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + */ + CODE_LINENO: 'code.lineno'; + /** + * HTTP request method. + */ + HTTP_METHOD: 'http.method'; + /** + * 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. + * + * 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/`. + */ + HTTP_URL: 'http.url'; + /** + * The full request target as passed in a HTTP request line or equivalent. + */ + HTTP_TARGET: 'http.target'; + /** + * 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. + * + * 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. + */ + HTTP_HOST: 'http.host'; + /** + * The URI scheme identifying the used protocol. + */ + HTTP_SCHEME: 'http.scheme'; + /** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + */ + HTTP_STATUS_CODE: 'http.status_code'; + /** + * Kind of HTTP protocol used. + * + * 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. + */ + HTTP_FLAVOR: 'http.flavor'; + /** + * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client. + */ + HTTP_USER_AGENT: 'http.user_agent'; + /** + * 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. + */ + HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length'; + /** + * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used. + */ + HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed'; + /** + * 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. + */ + HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length'; + /** + * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used. + */ + HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed'; + /** + * 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). + * + * 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. + */ + HTTP_SERVER_NAME: 'http.server_name'; + /** + * The matched route (path template). + */ + HTTP_ROUTE: 'http.route'; + /** + * 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)). + * + * Note: This is not necessarily the same as `net.peer.ip`, which would + identify the network-level peer, which may be a proxy. + + This attribute should be set when a source of information different + from the one used for `net.peer.ip`, is available even if that other + source just confirms the same value as `net.peer.ip`. + Rationale: For `net.peer.ip`, one typically does not know if it + comes from a proxy, reverse proxy, or the actual client. Setting + `http.client_ip` when it's the same as `net.peer.ip` means that + one is at least somewhat confident that the address is not that of + the closest proxy. + */ + HTTP_CLIENT_IP: 'http.client_ip'; + /** + * The keys in the `RequestItems` object field. + */ + AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names'; + /** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + */ + AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity'; + /** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + */ + AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics'; + /** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + */ + AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity'; + /** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + */ + AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity'; + /** + * The value of the `ConsistentRead` request parameter. + */ + AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read'; + /** + * The value of the `ProjectionExpression` request parameter. + */ + AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection'; + /** + * The value of the `Limit` request parameter. + */ + AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit'; + /** + * The value of the `AttributesToGet` request parameter. + */ + AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get'; + /** + * The value of the `IndexName` request parameter. + */ + AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name'; + /** + * The value of the `Select` request parameter. + */ + AWS_DYNAMODB_SELECT: 'aws.dynamodb.select'; + /** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. + */ + AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes'; + /** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + */ + AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes'; + /** + * The value of the `ExclusiveStartTableName` request parameter. + */ + AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table'; + /** + * The the number of items in the `TableNames` response parameter. + */ + AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count'; + /** + * The value of the `ScanIndexForward` request parameter. + */ + AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward'; + /** + * The value of the `Segment` request parameter. + */ + AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment'; + /** + * The value of the `TotalSegments` request parameter. + */ + AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments'; + /** + * The value of the `Count` response parameter. + */ + AWS_DYNAMODB_COUNT: 'aws.dynamodb.count'; + /** + * The value of the `ScannedCount` response parameter. + */ + AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count'; + /** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + */ + AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions'; + /** + * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. + */ + AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates'; + /** + * A string identifying the messaging system. + */ + MESSAGING_SYSTEM: 'messaging.system'; + /** + * The message destination name. This might be equal to the span name but is required nevertheless. + */ + MESSAGING_DESTINATION: 'messaging.destination'; + /** + * The kind of message destination. + */ + MESSAGING_DESTINATION_KIND: 'messaging.destination_kind'; + /** + * A boolean that is true if the message destination is temporary. + */ + MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination'; + /** + * The name of the transport protocol. + */ + MESSAGING_PROTOCOL: 'messaging.protocol'; + /** + * The version of the transport protocol. + */ + MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version'; + /** + * Connection string. + */ + MESSAGING_URL: 'messaging.url'; + /** + * A value used by the messaging system as an identifier for the message, represented as a string. + */ + MESSAGING_MESSAGE_ID: 'messaging.message_id'; + /** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + */ + MESSAGING_CONVERSATION_ID: 'messaging.conversation_id'; + /** + * 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. + */ + MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes'; + /** + * The compressed size of the message payload in bytes. + */ + MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes'; + /** + * 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. + */ + MESSAGING_OPERATION: 'messaging.operation'; + /** + * 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. + */ + MESSAGING_CONSUMER_ID: 'messaging.consumer_id'; + /** + * RabbitMQ message routing key. + */ + MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key'; + /** + * 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. + * + * 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. + */ + MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key'; + /** + * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. + */ + MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group'; + /** + * Client Id for the Consumer or Producer that is handling the message. + */ + MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id'; + /** + * Partition the message is sent to. + */ + MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition'; + /** + * A boolean that is true if the message is a tombstone. + */ + MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone'; + /** + * A string identifying the remoting system. + */ + RPC_SYSTEM: 'rpc.system'; + /** + * The full (logical) name of the service being called, including its package name, if applicable. + * + * 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). + */ + RPC_SERVICE: 'rpc.service'; + /** + * The name of the (logical) method being called, must be equal to the $method part in the span name. + * + * 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). + */ + RPC_METHOD: 'rpc.method'; + /** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + */ + RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code'; + /** + * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted. + */ + RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version'; + /** + * `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. + */ + RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id'; + /** + * `error.code` property of response if it is an error response. + */ + RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code'; + /** + * `error.message` property of response if it is an error response. + */ + RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message'; + /** + * Whether this is a received or sent message. + */ + MESSAGE_TYPE: 'message.type'; + /** + * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * Note: This way we guarantee that the values will be consistent between different implementations. + */ + MESSAGE_ID: 'message.id'; + /** + * Compressed size of the message in bytes. + */ + MESSAGE_COMPRESSED_SIZE: 'message.compressed_size'; + /** + * Uncompressed size of the message in bytes. + */ + MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size'; +}; +/** + * Create exported Value Map for SemanticAttributes values + * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification + */ +export declare const SemanticAttributes: SemanticAttributes; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_OTHER_SQL = "other_sql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MSSQL = "mssql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MYSQL = "mysql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_ORACLE = "oracle"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_DB2 = "db2"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_POSTGRESQL = "postgresql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_REDSHIFT = "redshift"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HIVE = "hive"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_CLOUDSCAPE = "cloudscape"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HSQLDB = "hsqldb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_PROGRESS = "progress"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MAXDB = "maxdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HANADB = "hanadb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INGRES = "ingres"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_FIRSTSQL = "firstsql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_EDB = "edb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_CACHE = "cache"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_ADABAS = "adabas"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_FIREBIRD = "firebird"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_DERBY = "derby"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_FILEMAKER = "filemaker"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INFORMIX = "informix"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INSTANTDB = "instantdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INTERBASE = "interbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MARIADB = "mariadb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_NETEZZA = "netezza"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_PERVASIVE = "pervasive"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_POINTBASE = "pointbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_SQLITE = "sqlite"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_SYBASE = "sybase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_TERADATA = "teradata"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_VERTICA = "vertica"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_H2 = "h2"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COLDFUSION = "coldfusion"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_CASSANDRA = "cassandra"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HBASE = "hbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MONGODB = "mongodb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_REDIS = "redis"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COUCHBASE = "couchbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COUCHDB = "couchdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COSMOSDB = "cosmosdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_DYNAMODB = "dynamodb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_NEO4J = "neo4j"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_GEODE = "geode"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_ELASTICSEARCH = "elasticsearch"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MEMCACHED = "memcached"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COCKROACHDB = "cockroachdb"; +/** + * Identifies the Values for DbSystemValues enum definition + * + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification. + */ +export type DbSystemValues = { + /** Some other SQL database. Fallback only. See notes. */ + OTHER_SQL: 'other_sql'; + /** Microsoft SQL Server. */ + MSSQL: 'mssql'; + /** MySQL. */ + MYSQL: 'mysql'; + /** Oracle Database. */ + ORACLE: 'oracle'; + /** IBM Db2. */ + DB2: 'db2'; + /** PostgreSQL. */ + POSTGRESQL: 'postgresql'; + /** Amazon Redshift. */ + REDSHIFT: 'redshift'; + /** Apache Hive. */ + HIVE: 'hive'; + /** Cloudscape. */ + CLOUDSCAPE: 'cloudscape'; + /** HyperSQL DataBase. */ + HSQLDB: 'hsqldb'; + /** Progress Database. */ + PROGRESS: 'progress'; + /** SAP MaxDB. */ + MAXDB: 'maxdb'; + /** SAP HANA. */ + HANADB: 'hanadb'; + /** Ingres. */ + INGRES: 'ingres'; + /** FirstSQL. */ + FIRSTSQL: 'firstsql'; + /** EnterpriseDB. */ + EDB: 'edb'; + /** InterSystems Caché. */ + CACHE: 'cache'; + /** Adabas (Adaptable Database System). */ + ADABAS: 'adabas'; + /** Firebird. */ + FIREBIRD: 'firebird'; + /** Apache Derby. */ + DERBY: 'derby'; + /** FileMaker. */ + FILEMAKER: 'filemaker'; + /** Informix. */ + INFORMIX: 'informix'; + /** InstantDB. */ + INSTANTDB: 'instantdb'; + /** InterBase. */ + INTERBASE: 'interbase'; + /** MariaDB. */ + MARIADB: 'mariadb'; + /** Netezza. */ + NETEZZA: 'netezza'; + /** Pervasive PSQL. */ + PERVASIVE: 'pervasive'; + /** PointBase. */ + POINTBASE: 'pointbase'; + /** SQLite. */ + SQLITE: 'sqlite'; + /** Sybase. */ + SYBASE: 'sybase'; + /** Teradata. */ + TERADATA: 'teradata'; + /** Vertica. */ + VERTICA: 'vertica'; + /** H2. */ + H2: 'h2'; + /** ColdFusion IMQ. */ + COLDFUSION: 'coldfusion'; + /** Apache Cassandra. */ + CASSANDRA: 'cassandra'; + /** Apache HBase. */ + HBASE: 'hbase'; + /** MongoDB. */ + MONGODB: 'mongodb'; + /** Redis. */ + REDIS: 'redis'; + /** Couchbase. */ + COUCHBASE: 'couchbase'; + /** CouchDB. */ + COUCHDB: 'couchdb'; + /** Microsoft Azure Cosmos DB. */ + COSMOSDB: 'cosmosdb'; + /** Amazon DynamoDB. */ + DYNAMODB: 'dynamodb'; + /** Neo4j. */ + NEO4J: 'neo4j'; + /** Apache Geode. */ + GEODE: 'geode'; + /** Elasticsearch. */ + ELASTICSEARCH: 'elasticsearch'; + /** Memcached. */ + MEMCACHED: 'memcached'; + /** CockroachDB. */ + COCKROACHDB: 'cockroachdb'; +}; +/** + * The constant map of values for DbSystemValues. + * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification. + */ +export declare const DbSystemValues: DbSystemValues; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_ALL = "all"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = "each_quorum"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = "quorum"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = "local_quorum"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_ONE = "one"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_TWO = "two"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_THREE = "three"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = "local_one"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_ANY = "any"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = "serial"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = "local_serial"; +/** + * Identifies the Values for DbCassandraConsistencyLevelValues enum definition + * + * 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). + * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification. + */ +export type DbCassandraConsistencyLevelValues = { + /** all. */ + ALL: 'all'; + /** each_quorum. */ + EACH_QUORUM: 'each_quorum'; + /** quorum. */ + QUORUM: 'quorum'; + /** local_quorum. */ + LOCAL_QUORUM: 'local_quorum'; + /** one. */ + ONE: 'one'; + /** two. */ + TWO: 'two'; + /** three. */ + THREE: 'three'; + /** local_one. */ + LOCAL_ONE: 'local_one'; + /** any. */ + ANY: 'any'; + /** serial. */ + SERIAL: 'serial'; + /** local_serial. */ + LOCAL_SERIAL: 'local_serial'; +}; +/** + * The constant map of values for DbCassandraConsistencyLevelValues. + * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification. + */ +export declare const DbCassandraConsistencyLevelValues: DbCassandraConsistencyLevelValues; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_DATASOURCE = "datasource"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_HTTP = "http"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_PUBSUB = "pubsub"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_TIMER = "timer"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_OTHER = "other"; +/** + * Identifies the Values for FaasTriggerValues enum definition + * + * Type of the trigger on which the function is executed. + * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification. + */ +export type FaasTriggerValues = { + /** A response to some data source operation such as a database or filesystem read/write. */ + DATASOURCE: 'datasource'; + /** To provide an answer to an inbound HTTP request. */ + HTTP: 'http'; + /** A function is set to be executed when messages are sent to a messaging system. */ + PUBSUB: 'pubsub'; + /** A function is scheduled to be executed regularly. */ + TIMER: 'timer'; + /** If none of the others apply. */ + OTHER: 'other'; +}; +/** + * The constant map of values for FaasTriggerValues. + * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification. + */ +export declare const FaasTriggerValues: FaasTriggerValues; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const FAASDOCUMENTOPERATIONVALUES_INSERT = "insert"; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const FAASDOCUMENTOPERATIONVALUES_EDIT = "edit"; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const FAASDOCUMENTOPERATIONVALUES_DELETE = "delete"; +/** + * Identifies the Values for FaasDocumentOperationValues enum definition + * + * Describes the type of the operation that was performed on the data. + * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification. + */ +export type FaasDocumentOperationValues = { + /** When a new object is created. */ + INSERT: 'insert'; + /** When an object is modified. */ + EDIT: 'edit'; + /** When an object is deleted. */ + DELETE: 'delete'; +}; +/** + * The constant map of values for FaasDocumentOperationValues. + * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification. + */ +export declare const FaasDocumentOperationValues: FaasDocumentOperationValues; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_AWS = "aws"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_AZURE = "azure"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_GCP = "gcp"; +/** + * Identifies the Values for FaasInvokedProviderValues enum definition + * + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification. + */ +export type FaasInvokedProviderValues = { + /** Alibaba Cloud. */ + ALIBABA_CLOUD: 'alibaba_cloud'; + /** Amazon Web Services. */ + AWS: 'aws'; + /** Microsoft Azure. */ + AZURE: 'azure'; + /** Google Cloud Platform. */ + GCP: 'gcp'; +}; +/** + * The constant map of values for FaasInvokedProviderValues. + * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification. + */ +export declare const FaasInvokedProviderValues: FaasInvokedProviderValues; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_IP_TCP = "ip_tcp"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_IP_UDP = "ip_udp"; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +export declare const NETTRANSPORTVALUES_IP = "ip"; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +export declare const NETTRANSPORTVALUES_UNIX = "unix"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_PIPE = "pipe"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_INPROC = "inproc"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_OTHER = "other"; +/** + * Identifies the Values for NetTransportValues enum definition + * + * Transport protocol used. See note below. + * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification. + */ +export type NetTransportValues = { + /** ip_tcp. */ + IP_TCP: 'ip_tcp'; + /** ip_udp. */ + IP_UDP: 'ip_udp'; + /** Another IP-based protocol. */ + IP: 'ip'; + /** Unix Domain socket. See below. */ + UNIX: 'unix'; + /** Named or anonymous pipe. See note below. */ + PIPE: 'pipe'; + /** In-process communication. */ + INPROC: 'inproc'; + /** Something else (non IP-based). */ + OTHER: 'other'; +}; +/** + * The constant map of values for NetTransportValues. + * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification. + */ +export declare const NetTransportValues: NetTransportValues; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_WIFI = "wifi"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_WIRED = "wired"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_CELL = "cell"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = "unavailable"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = "unknown"; +/** + * Identifies the Values for NetHostConnectionTypeValues enum definition + * + * The internet connection type currently being used by the host. + * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification. + */ +export type NetHostConnectionTypeValues = { + /** wifi. */ + WIFI: 'wifi'; + /** wired. */ + WIRED: 'wired'; + /** cell. */ + CELL: 'cell'; + /** unavailable. */ + UNAVAILABLE: 'unavailable'; + /** unknown. */ + UNKNOWN: 'unknown'; +}; +/** + * The constant map of values for NetHostConnectionTypeValues. + * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification. + */ +export declare const NetHostConnectionTypeValues: NetHostConnectionTypeValues; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = "gprs"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = "edge"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = "umts"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = "cdma"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = "evdo_0"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = "evdo_a"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = "cdma2000_1xrtt"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = "hsdpa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = "hsupa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = "hspa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = "iden"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = "evdo_b"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_LTE = "lte"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = "ehrpd"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = "hspap"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_GSM = "gsm"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = "td_scdma"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = "iwlan"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_NR = "nr"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = "nrnsa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = "lte_ca"; +/** + * Identifies the Values for NetHostConnectionSubtypeValues enum definition + * + * 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. + * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification. + */ +export type NetHostConnectionSubtypeValues = { + /** GPRS. */ + GPRS: 'gprs'; + /** EDGE. */ + EDGE: 'edge'; + /** UMTS. */ + UMTS: 'umts'; + /** CDMA. */ + CDMA: 'cdma'; + /** EVDO Rel. 0. */ + EVDO_0: 'evdo_0'; + /** EVDO Rev. A. */ + EVDO_A: 'evdo_a'; + /** CDMA2000 1XRTT. */ + CDMA2000_1XRTT: 'cdma2000_1xrtt'; + /** HSDPA. */ + HSDPA: 'hsdpa'; + /** HSUPA. */ + HSUPA: 'hsupa'; + /** HSPA. */ + HSPA: 'hspa'; + /** IDEN. */ + IDEN: 'iden'; + /** EVDO Rev. B. */ + EVDO_B: 'evdo_b'; + /** LTE. */ + LTE: 'lte'; + /** EHRPD. */ + EHRPD: 'ehrpd'; + /** HSPAP. */ + HSPAP: 'hspap'; + /** GSM. */ + GSM: 'gsm'; + /** TD-SCDMA. */ + TD_SCDMA: 'td_scdma'; + /** IWLAN. */ + IWLAN: 'iwlan'; + /** 5G NR (New Radio). */ + NR: 'nr'; + /** 5G NRNSA (New Radio Non-Standalone). */ + NRNSA: 'nrnsa'; + /** LTE CA. */ + LTE_CA: 'lte_ca'; +}; +/** + * The constant map of values for NetHostConnectionSubtypeValues. + * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification. + */ +export declare const NetHostConnectionSubtypeValues: NetHostConnectionSubtypeValues; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_HTTP_1_0 = "1.0"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_HTTP_1_1 = "1.1"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_HTTP_2_0 = "2.0"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_SPDY = "SPDY"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_QUIC = "QUIC"; +/** + * Identifies the Values for HttpFlavorValues enum definition + * + * Kind of HTTP protocol used. + * + * 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. + * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification. + */ +export type HttpFlavorValues = { + /** HTTP 1.0. */ + HTTP_1_0: '1.0'; + /** HTTP 1.1. */ + HTTP_1_1: '1.1'; + /** HTTP 2. */ + HTTP_2_0: '2.0'; + /** SPDY protocol. */ + SPDY: 'SPDY'; + /** QUIC protocol. */ + QUIC: 'QUIC'; +}; +/** + * The constant map of values for HttpFlavorValues. + * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification. + */ +export declare const HttpFlavorValues: HttpFlavorValues; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const MESSAGINGDESTINATIONKINDVALUES_QUEUE = "queue"; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const MESSAGINGDESTINATIONKINDVALUES_TOPIC = "topic"; +/** + * Identifies the Values for MessagingDestinationKindValues enum definition + * + * The kind of message destination. + * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification. + */ +export type MessagingDestinationKindValues = { + /** A message sent to a queue. */ + QUEUE: 'queue'; + /** A message sent to a topic. */ + TOPIC: 'topic'; +}; +/** + * The constant map of values for MessagingDestinationKindValues. + * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification. + */ +export declare const MessagingDestinationKindValues: MessagingDestinationKindValues; +/** + * 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. + * + * @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}). + */ +export declare const MESSAGINGOPERATIONVALUES_RECEIVE = "receive"; +/** + * 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. + * + * @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}). + */ +export declare const MESSAGINGOPERATIONVALUES_PROCESS = "process"; +/** + * Identifies the Values for MessagingOperationValues enum definition + * + * 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. + * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification. + */ +export type MessagingOperationValues = { + /** receive. */ + RECEIVE: 'receive'; + /** process. */ + PROCESS: 'process'; +}; +/** + * The constant map of values for MessagingOperationValues. + * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification. + */ +export declare const MessagingOperationValues: MessagingOperationValues; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_OK = 0; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_CANCELLED = 1; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_ABORTED = 10; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_INTERNAL = 13; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16; +/** + * Identifies the Values for RpcGrpcStatusCodeValues enum definition + * + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification. + */ +export type RpcGrpcStatusCodeValues = { + /** OK. */ + OK: 0; + /** CANCELLED. */ + CANCELLED: 1; + /** UNKNOWN. */ + UNKNOWN: 2; + /** INVALID_ARGUMENT. */ + INVALID_ARGUMENT: 3; + /** DEADLINE_EXCEEDED. */ + DEADLINE_EXCEEDED: 4; + /** NOT_FOUND. */ + NOT_FOUND: 5; + /** ALREADY_EXISTS. */ + ALREADY_EXISTS: 6; + /** PERMISSION_DENIED. */ + PERMISSION_DENIED: 7; + /** RESOURCE_EXHAUSTED. */ + RESOURCE_EXHAUSTED: 8; + /** FAILED_PRECONDITION. */ + FAILED_PRECONDITION: 9; + /** ABORTED. */ + ABORTED: 10; + /** OUT_OF_RANGE. */ + OUT_OF_RANGE: 11; + /** UNIMPLEMENTED. */ + UNIMPLEMENTED: 12; + /** INTERNAL. */ + INTERNAL: 13; + /** UNAVAILABLE. */ + UNAVAILABLE: 14; + /** DATA_LOSS. */ + DATA_LOSS: 15; + /** UNAUTHENTICATED. */ + UNAUTHENTICATED: 16; +}; +/** + * The constant map of values for RpcGrpcStatusCodeValues. + * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification. + */ +export declare const RpcGrpcStatusCodeValues: RpcGrpcStatusCodeValues; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export declare const MESSAGETYPEVALUES_SENT = "SENT"; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export declare const MESSAGETYPEVALUES_RECEIVED = "RECEIVED"; +/** + * Identifies the Values for MessageTypeValues enum definition + * + * Whether this is a received or sent message. + * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification. + */ +export type MessageTypeValues = { + /** sent. */ + SENT: 'SENT'; + /** received. */ + RECEIVED: 'RECEIVED'; +}; +/** + * The constant map of values for MessageTypeValues. + * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification. + */ +export declare const MessageTypeValues: MessageTypeValues; +//# sourceMappingURL=SemanticAttributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.js new file mode 100644 index 0000000..95eaeae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.js @@ -0,0 +1,2371 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createConstMap } from '../internal/utils'; +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------------------------- +// Constant values for SemanticAttributes +//---------------------------------------------------------------------------------------------------------- +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn'; +const TMP_DB_SYSTEM = 'db.system'; +const TMP_DB_CONNECTION_STRING = 'db.connection_string'; +const TMP_DB_USER = 'db.user'; +const TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname'; +const TMP_DB_NAME = 'db.name'; +const TMP_DB_STATEMENT = 'db.statement'; +const TMP_DB_OPERATION = 'db.operation'; +const TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name'; +const TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace'; +const TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size'; +const TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level'; +const TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table'; +const TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence'; +const TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count'; +const TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id'; +const TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc'; +const TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace'; +const TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index'; +const TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection'; +const TMP_DB_SQL_TABLE = 'db.sql.table'; +const TMP_EXCEPTION_TYPE = 'exception.type'; +const TMP_EXCEPTION_MESSAGE = 'exception.message'; +const TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace'; +const TMP_EXCEPTION_ESCAPED = 'exception.escaped'; +const TMP_FAAS_TRIGGER = 'faas.trigger'; +const TMP_FAAS_EXECUTION = 'faas.execution'; +const TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection'; +const TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation'; +const TMP_FAAS_DOCUMENT_TIME = 'faas.document.time'; +const TMP_FAAS_DOCUMENT_NAME = 'faas.document.name'; +const TMP_FAAS_TIME = 'faas.time'; +const TMP_FAAS_CRON = 'faas.cron'; +const TMP_FAAS_COLDSTART = 'faas.coldstart'; +const TMP_FAAS_INVOKED_NAME = 'faas.invoked_name'; +const TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider'; +const TMP_FAAS_INVOKED_REGION = 'faas.invoked_region'; +const TMP_NET_TRANSPORT = 'net.transport'; +const TMP_NET_PEER_IP = 'net.peer.ip'; +const TMP_NET_PEER_PORT = 'net.peer.port'; +const TMP_NET_PEER_NAME = 'net.peer.name'; +const TMP_NET_HOST_IP = 'net.host.ip'; +const TMP_NET_HOST_PORT = 'net.host.port'; +const TMP_NET_HOST_NAME = 'net.host.name'; +const TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type'; +const TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype'; +const TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name'; +const TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc'; +const TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc'; +const TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc'; +const TMP_PEER_SERVICE = 'peer.service'; +const TMP_ENDUSER_ID = 'enduser.id'; +const TMP_ENDUSER_ROLE = 'enduser.role'; +const TMP_ENDUSER_SCOPE = 'enduser.scope'; +const TMP_THREAD_ID = 'thread.id'; +const TMP_THREAD_NAME = 'thread.name'; +const TMP_CODE_FUNCTION = 'code.function'; +const TMP_CODE_NAMESPACE = 'code.namespace'; +const TMP_CODE_FILEPATH = 'code.filepath'; +const TMP_CODE_LINENO = 'code.lineno'; +const TMP_HTTP_METHOD = 'http.method'; +const TMP_HTTP_URL = 'http.url'; +const TMP_HTTP_TARGET = 'http.target'; +const TMP_HTTP_HOST = 'http.host'; +const TMP_HTTP_SCHEME = 'http.scheme'; +const TMP_HTTP_STATUS_CODE = 'http.status_code'; +const TMP_HTTP_FLAVOR = 'http.flavor'; +const TMP_HTTP_USER_AGENT = 'http.user_agent'; +const TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length'; +const TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed'; +const TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length'; +const TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed'; +const TMP_HTTP_SERVER_NAME = 'http.server_name'; +const TMP_HTTP_ROUTE = 'http.route'; +const TMP_HTTP_CLIENT_IP = 'http.client_ip'; +const TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names'; +const TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity'; +const TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics'; +const TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity'; +const TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity'; +const TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read'; +const TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection'; +const TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit'; +const TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get'; +const TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name'; +const TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select'; +const TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes'; +const TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes'; +const TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table'; +const TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count'; +const TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward'; +const TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment'; +const TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments'; +const TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count'; +const TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count'; +const TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions'; +const TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates'; +const TMP_MESSAGING_SYSTEM = 'messaging.system'; +const TMP_MESSAGING_DESTINATION = 'messaging.destination'; +const TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind'; +const TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination'; +const TMP_MESSAGING_PROTOCOL = 'messaging.protocol'; +const TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version'; +const TMP_MESSAGING_URL = 'messaging.url'; +const TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id'; +const TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id'; +const TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = 'messaging.message_payload_size_bytes'; +const TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = 'messaging.message_payload_compressed_size_bytes'; +const TMP_MESSAGING_OPERATION = 'messaging.operation'; +const TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id'; +const TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key'; +const TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key'; +const TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group'; +const TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id'; +const TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition'; +const TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone'; +const TMP_RPC_SYSTEM = 'rpc.system'; +const TMP_RPC_SERVICE = 'rpc.service'; +const TMP_RPC_METHOD = 'rpc.method'; +const TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code'; +const TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version'; +const TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id'; +const TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code'; +const TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message'; +const TMP_MESSAGE_TYPE = 'message.type'; +const TMP_MESSAGE_ID = 'message.id'; +const TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size'; +const TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size'; +/** + * 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). + * + * Note: This may be different from `faas.id` if an alias is involved. + * + * @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}). + */ +export const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM; +/** + * The connection string used to connect to the database. It is recommended to remove embedded credentials. + * + * @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}). + */ +export const SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING; +/** + * Username for accessing the database. + * + * @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}). + */ +export const SEMATTRS_DB_USER = TMP_DB_USER; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME; +/** + * 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). + * + * Note: In some SQL databases, the database name to be used is called "schema name". + * + * @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}). + */ +export const SEMATTRS_DB_NAME = TMP_DB_NAME; +/** + * The database statement being executed. + * + * Note: The value may be sanitized to exclude sensitive information. + * + * @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}). + */ +export const SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT; +/** + * 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. + * + * 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. + * + * @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}). + */ +export const SEMATTRS_DB_OPERATION = TMP_DB_OPERATION; +/** + * 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. + * + * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard). + * + * @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}). + */ +export const SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME; +/** + * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE; +/** + * 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). + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = TMP_DB_CASSANDRA_CONSISTENCY_LEVEL; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE; +/** + * Whether or not the query is idempotent. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT; +/** + * The ID of the coordinating node for a query. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = TMP_DB_CASSANDRA_COORDINATOR_ID; +/** + * The data center of the coordinating node for a query. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = TMP_DB_CASSANDRA_COORDINATOR_DC; +/** + * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +export const SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX; +/** + * The collection being accessed within the database stated in `db.name`. + * + * @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}). + */ +export const SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +export const SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_TYPE. + */ +export const SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE; +/** + * The exception message. + * + * @deprecated Use ATTR_EXCEPTION_MESSAGE. + */ +export const SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_STACKTRACE. + */ +export const SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE; +/** +* 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. +* +* Note: An exception is considered to have escaped (or left) the scope of a span, +if that span is ended while the exception is still logically "in flight". +This may be actually "in flight" in some languages (e.g. if the exception +is passed to a Context manager's `__exit__` method in Python) but will +usually be caught at the point of recording the exception in most languages. + +It is usually not possible to determine at the point where an exception is thrown +whether it will escape the scope of a span. +However, it is trivial to know that an exception +will escape, if one checks for an active exception just before ending the span, +as done in the [example above](#exception-end-example). + +It follows that an exception may still escape the scope of the span +even if the `exception.escaped` attribute was not set or set to false, +since the event might have been recorded at a time where it was not +clear whether the exception will escape. +* +* @deprecated Use ATTR_EXCEPTION_ESCAPED. +*/ +export const SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER; +/** + * The execution ID of the current function execution. + * + * @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}). + */ +export const SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export const SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION; +/** + * 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). + * + * @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}). + */ +export const SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME; +/** + * 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). + * + * @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}). + */ +export const SEMATTRS_FAAS_TIME = TMP_FAAS_TIME; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @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}). + */ +export const SEMATTRS_FAAS_CRON = TMP_FAAS_CRON; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @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}). + */ +export const SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART; +/** + * The name of the invoked function. + * + * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function. + * + * @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}). + */ +export const SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export const SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER; +/** + * The cloud region of the invoked function. + * + * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function. + * + * @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}). + */ +export const SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT; +/** + * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6). + * + * @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}). + */ +export const SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP; +/** + * Remote port number. + * + * @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}). + */ +export const SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT; +/** + * Remote hostname or similar, see note below. + * + * @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}). + */ +export const SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME; +/** + * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP; +/** + * Like `net.peer.port` but for the host port. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT; +/** + * Local hostname or similar, see note below. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = TMP_NET_HOST_CONNECTION_SUBTYPE; +/** + * The name of the mobile carrier. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME; +/** + * The mobile carrier country code. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC; +/** + * The mobile carrier network code. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID; +/** + * Actual/assumed role the client is making the request under extracted from token or application security context. + * + * @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}). + */ +export const SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE; +/** + * 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). + * + * @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}). + */ +export const SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @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}). + */ +export const SEMATTRS_THREAD_ID = TMP_THREAD_ID; +/** + * Current thread name. + * + * @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}). + */ +export const SEMATTRS_THREAD_NAME = TMP_THREAD_NAME; +/** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + * + * @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}). + */ +export const SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE; +/** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + * + * @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}). + */ +export const SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH; +/** + * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + * + * @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}). + */ +export const SEMATTRS_CODE_LINENO = TMP_CODE_LINENO; +/** + * HTTP request method. + * + * @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}). + */ +export const SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD; +/** + * 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. + * + * 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/`. + * + * @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}). + */ +export const SEMATTRS_HTTP_URL = TMP_HTTP_URL; +/** + * The full request target as passed in a HTTP request line or equivalent. + * + * @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}). + */ +export const SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET; +/** + * 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. + * + * 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. + * + * @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}). + */ +export const SEMATTRS_HTTP_HOST = TMP_HTTP_HOST; +/** + * The URI scheme identifying the used protocol. + * + * @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}). + */ +export const SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @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}). + */ +export const SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR; +/** + * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client. + * + * @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}). + */ +export const SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = TMP_HTTP_REQUEST_CONTENT_LENGTH; +/** + * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +export const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = TMP_HTTP_RESPONSE_CONTENT_LENGTH; +/** + * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +export const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED; +/** + * 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). + * + * 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. + * + * @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}). + */ +export const SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME; +/** + * The matched route (path template). + * + * @deprecated Use ATTR_HTTP_ROUTE. + */ +export const SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE; +/** +* 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)). +* +* Note: This is not necessarily the same as `net.peer.ip`, which would +identify the network-level peer, which may be a proxy. + +This attribute should be set when a source of information different +from the one used for `net.peer.ip`, is available even if that other +source just confirms the same value as `net.peer.ip`. +Rationale: For `net.peer.ip`, one typically does not know if it +comes from a proxy, reverse proxy, or the actual client. Setting +`http.client_ip` when it's the same as `net.peer.ip` means that +one is at least somewhat confident that the address is not that of +the closest proxy. +* +* @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}). +*/ +export const SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP; +/** + * The keys in the `RequestItems` object field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = TMP_AWS_DYNAMODB_CONSUMED_CAPACITY; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY; +/** + * The value of the `ConsistentRead` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = TMP_AWS_DYNAMODB_CONSISTENT_READ; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION; +/** + * The value of the `Limit` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT; +/** + * The value of the `AttributesToGet` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET; +/** + * The value of the `IndexName` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME; +/** + * The value of the `Select` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE; +/** + * The the number of items in the `TableNames` response parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD; +/** + * The value of the `Segment` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT; +/** + * The value of the `TotalSegments` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = TMP_AWS_DYNAMODB_TOTAL_SEGMENTS; +/** + * The value of the `Count` response parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT; +/** + * The value of the `ScannedCount` response parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = TMP_AWS_DYNAMODB_SCANNED_COUNT; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS; +/** + * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES; +/** + * A string identifying the messaging system. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM; +/** + * The message destination name. This might be equal to the span name but is required nevertheless. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export const SEMATTRS_MESSAGING_DESTINATION_KIND = TMP_MESSAGING_DESTINATION_KIND; +/** + * A boolean that is true if the message destination is temporary. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_TEMP_DESTINATION = TMP_MESSAGING_TEMP_DESTINATION; +/** + * The name of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME. + */ +export const SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL; +/** + * The version of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION. + */ +export const SEMATTRS_MESSAGING_PROTOCOL_VERSION = TMP_MESSAGING_PROTOCOL_VERSION; +/** + * Connection string. + * + * @deprecated Removed in semconv v1.17.0. + */ +export const SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID; +/** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @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}). + */ +export const SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES; +/** + * The compressed size of the message payload in bytes. + * + * @deprecated Removed in semconv v1.22.0. + */ +export const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION; +/** + * 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. + * + * @deprecated Removed in semconv v1.21.0. + */ +export const SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID; +/** + * RabbitMQ message routing key. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = TMP_MESSAGING_RABBITMQ_ROUTING_KEY; +/** + * 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. + * + * 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. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = TMP_MESSAGING_KAFKA_MESSAGE_KEY; +/** + * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = TMP_MESSAGING_KAFKA_CONSUMER_GROUP; +/** + * Client Id for the Consumer or Producer that is handling the message. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID; +/** + * Partition the message is sent to. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION; +/** + * A boolean that is true if the message is a tombstone. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE; +/** + * A string identifying the remoting system. + * + * @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}). + */ +export const SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM; +/** + * The full (logical) name of the service being called, including its package name, if applicable. + * + * 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). + * + * @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}). + */ +export const SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE; +/** + * The name of the (logical) method being called, must be equal to the $method part in the span name. + * + * 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). + * + * @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}). + */ +export const SEMATTRS_RPC_METHOD = TMP_RPC_METHOD; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE; +/** + * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted. + * + * @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}). + */ +export const SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION; +/** + * `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. + * + * @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}). + */ +export const SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID; +/** + * `error.code` property of response if it is an error response. + * + * @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}). + */ +export const SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE; +/** + * `error.message` property of response if it is an error response. + * + * @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}). + */ +export const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export const SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE; +/** + * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * Note: This way we guarantee that the values will be consistent between different implementations. + * + * @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}). + */ +export const SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID; +/** + * Compressed size of the message in bytes. + * + * @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}). + */ +export const SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE; +/** + * Uncompressed size of the message in bytes. + * + * @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}). + */ +export const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE; +/** + * Create exported Value Map for SemanticAttributes values + * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification + */ +export const SemanticAttributes = +/*#__PURE__*/ createConstMap([ + TMP_AWS_LAMBDA_INVOKED_ARN, + TMP_DB_SYSTEM, + TMP_DB_CONNECTION_STRING, + TMP_DB_USER, + TMP_DB_JDBC_DRIVER_CLASSNAME, + TMP_DB_NAME, + TMP_DB_STATEMENT, + TMP_DB_OPERATION, + TMP_DB_MSSQL_INSTANCE_NAME, + TMP_DB_CASSANDRA_KEYSPACE, + TMP_DB_CASSANDRA_PAGE_SIZE, + TMP_DB_CASSANDRA_CONSISTENCY_LEVEL, + TMP_DB_CASSANDRA_TABLE, + TMP_DB_CASSANDRA_IDEMPOTENCE, + TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, + TMP_DB_CASSANDRA_COORDINATOR_ID, + TMP_DB_CASSANDRA_COORDINATOR_DC, + TMP_DB_HBASE_NAMESPACE, + TMP_DB_REDIS_DATABASE_INDEX, + TMP_DB_MONGODB_COLLECTION, + TMP_DB_SQL_TABLE, + TMP_EXCEPTION_TYPE, + TMP_EXCEPTION_MESSAGE, + TMP_EXCEPTION_STACKTRACE, + TMP_EXCEPTION_ESCAPED, + TMP_FAAS_TRIGGER, + TMP_FAAS_EXECUTION, + TMP_FAAS_DOCUMENT_COLLECTION, + TMP_FAAS_DOCUMENT_OPERATION, + TMP_FAAS_DOCUMENT_TIME, + TMP_FAAS_DOCUMENT_NAME, + TMP_FAAS_TIME, + TMP_FAAS_CRON, + TMP_FAAS_COLDSTART, + TMP_FAAS_INVOKED_NAME, + TMP_FAAS_INVOKED_PROVIDER, + TMP_FAAS_INVOKED_REGION, + TMP_NET_TRANSPORT, + TMP_NET_PEER_IP, + TMP_NET_PEER_PORT, + TMP_NET_PEER_NAME, + TMP_NET_HOST_IP, + TMP_NET_HOST_PORT, + TMP_NET_HOST_NAME, + TMP_NET_HOST_CONNECTION_TYPE, + TMP_NET_HOST_CONNECTION_SUBTYPE, + TMP_NET_HOST_CARRIER_NAME, + TMP_NET_HOST_CARRIER_MCC, + TMP_NET_HOST_CARRIER_MNC, + TMP_NET_HOST_CARRIER_ICC, + TMP_PEER_SERVICE, + TMP_ENDUSER_ID, + TMP_ENDUSER_ROLE, + TMP_ENDUSER_SCOPE, + TMP_THREAD_ID, + TMP_THREAD_NAME, + TMP_CODE_FUNCTION, + TMP_CODE_NAMESPACE, + TMP_CODE_FILEPATH, + TMP_CODE_LINENO, + TMP_HTTP_METHOD, + TMP_HTTP_URL, + TMP_HTTP_TARGET, + TMP_HTTP_HOST, + TMP_HTTP_SCHEME, + TMP_HTTP_STATUS_CODE, + TMP_HTTP_FLAVOR, + TMP_HTTP_USER_AGENT, + TMP_HTTP_REQUEST_CONTENT_LENGTH, + TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED, + TMP_HTTP_RESPONSE_CONTENT_LENGTH, + TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED, + TMP_HTTP_SERVER_NAME, + TMP_HTTP_ROUTE, + TMP_HTTP_CLIENT_IP, + TMP_AWS_DYNAMODB_TABLE_NAMES, + TMP_AWS_DYNAMODB_CONSUMED_CAPACITY, + TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS, + TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY, + TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY, + TMP_AWS_DYNAMODB_CONSISTENT_READ, + TMP_AWS_DYNAMODB_PROJECTION, + TMP_AWS_DYNAMODB_LIMIT, + TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET, + TMP_AWS_DYNAMODB_INDEX_NAME, + TMP_AWS_DYNAMODB_SELECT, + TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES, + TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES, + TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE, + TMP_AWS_DYNAMODB_TABLE_COUNT, + TMP_AWS_DYNAMODB_SCAN_FORWARD, + TMP_AWS_DYNAMODB_SEGMENT, + TMP_AWS_DYNAMODB_TOTAL_SEGMENTS, + TMP_AWS_DYNAMODB_COUNT, + TMP_AWS_DYNAMODB_SCANNED_COUNT, + TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS, + TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES, + TMP_MESSAGING_SYSTEM, + TMP_MESSAGING_DESTINATION, + TMP_MESSAGING_DESTINATION_KIND, + TMP_MESSAGING_TEMP_DESTINATION, + TMP_MESSAGING_PROTOCOL, + TMP_MESSAGING_PROTOCOL_VERSION, + TMP_MESSAGING_URL, + TMP_MESSAGING_MESSAGE_ID, + TMP_MESSAGING_CONVERSATION_ID, + TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES, + TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES, + TMP_MESSAGING_OPERATION, + TMP_MESSAGING_CONSUMER_ID, + TMP_MESSAGING_RABBITMQ_ROUTING_KEY, + TMP_MESSAGING_KAFKA_MESSAGE_KEY, + TMP_MESSAGING_KAFKA_CONSUMER_GROUP, + TMP_MESSAGING_KAFKA_CLIENT_ID, + TMP_MESSAGING_KAFKA_PARTITION, + TMP_MESSAGING_KAFKA_TOMBSTONE, + TMP_RPC_SYSTEM, + TMP_RPC_SERVICE, + TMP_RPC_METHOD, + TMP_RPC_GRPC_STATUS_CODE, + TMP_RPC_JSONRPC_VERSION, + TMP_RPC_JSONRPC_REQUEST_ID, + TMP_RPC_JSONRPC_ERROR_CODE, + TMP_RPC_JSONRPC_ERROR_MESSAGE, + TMP_MESSAGE_TYPE, + TMP_MESSAGE_ID, + TMP_MESSAGE_COMPRESSED_SIZE, + TMP_MESSAGE_UNCOMPRESSED_SIZE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for DbSystemValues enum definition + * + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql'; +const TMP_DBSYSTEMVALUES_MSSQL = 'mssql'; +const TMP_DBSYSTEMVALUES_MYSQL = 'mysql'; +const TMP_DBSYSTEMVALUES_ORACLE = 'oracle'; +const TMP_DBSYSTEMVALUES_DB2 = 'db2'; +const TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql'; +const TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift'; +const TMP_DBSYSTEMVALUES_HIVE = 'hive'; +const TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape'; +const TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb'; +const TMP_DBSYSTEMVALUES_PROGRESS = 'progress'; +const TMP_DBSYSTEMVALUES_MAXDB = 'maxdb'; +const TMP_DBSYSTEMVALUES_HANADB = 'hanadb'; +const TMP_DBSYSTEMVALUES_INGRES = 'ingres'; +const TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql'; +const TMP_DBSYSTEMVALUES_EDB = 'edb'; +const TMP_DBSYSTEMVALUES_CACHE = 'cache'; +const TMP_DBSYSTEMVALUES_ADABAS = 'adabas'; +const TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird'; +const TMP_DBSYSTEMVALUES_DERBY = 'derby'; +const TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker'; +const TMP_DBSYSTEMVALUES_INFORMIX = 'informix'; +const TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb'; +const TMP_DBSYSTEMVALUES_INTERBASE = 'interbase'; +const TMP_DBSYSTEMVALUES_MARIADB = 'mariadb'; +const TMP_DBSYSTEMVALUES_NETEZZA = 'netezza'; +const TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive'; +const TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase'; +const TMP_DBSYSTEMVALUES_SQLITE = 'sqlite'; +const TMP_DBSYSTEMVALUES_SYBASE = 'sybase'; +const TMP_DBSYSTEMVALUES_TERADATA = 'teradata'; +const TMP_DBSYSTEMVALUES_VERTICA = 'vertica'; +const TMP_DBSYSTEMVALUES_H2 = 'h2'; +const TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion'; +const TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra'; +const TMP_DBSYSTEMVALUES_HBASE = 'hbase'; +const TMP_DBSYSTEMVALUES_MONGODB = 'mongodb'; +const TMP_DBSYSTEMVALUES_REDIS = 'redis'; +const TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase'; +const TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb'; +const TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb'; +const TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb'; +const TMP_DBSYSTEMVALUES_NEO4J = 'neo4j'; +const TMP_DBSYSTEMVALUES_GEODE = 'geode'; +const TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch'; +const TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached'; +const TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb'; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB; +/** + * The constant map of values for DbSystemValues. + * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification. + */ +export const DbSystemValues = +/*#__PURE__*/ createConstMap([ + TMP_DBSYSTEMVALUES_OTHER_SQL, + TMP_DBSYSTEMVALUES_MSSQL, + TMP_DBSYSTEMVALUES_MYSQL, + TMP_DBSYSTEMVALUES_ORACLE, + TMP_DBSYSTEMVALUES_DB2, + TMP_DBSYSTEMVALUES_POSTGRESQL, + TMP_DBSYSTEMVALUES_REDSHIFT, + TMP_DBSYSTEMVALUES_HIVE, + TMP_DBSYSTEMVALUES_CLOUDSCAPE, + TMP_DBSYSTEMVALUES_HSQLDB, + TMP_DBSYSTEMVALUES_PROGRESS, + TMP_DBSYSTEMVALUES_MAXDB, + TMP_DBSYSTEMVALUES_HANADB, + TMP_DBSYSTEMVALUES_INGRES, + TMP_DBSYSTEMVALUES_FIRSTSQL, + TMP_DBSYSTEMVALUES_EDB, + TMP_DBSYSTEMVALUES_CACHE, + TMP_DBSYSTEMVALUES_ADABAS, + TMP_DBSYSTEMVALUES_FIREBIRD, + TMP_DBSYSTEMVALUES_DERBY, + TMP_DBSYSTEMVALUES_FILEMAKER, + TMP_DBSYSTEMVALUES_INFORMIX, + TMP_DBSYSTEMVALUES_INSTANTDB, + TMP_DBSYSTEMVALUES_INTERBASE, + TMP_DBSYSTEMVALUES_MARIADB, + TMP_DBSYSTEMVALUES_NETEZZA, + TMP_DBSYSTEMVALUES_PERVASIVE, + TMP_DBSYSTEMVALUES_POINTBASE, + TMP_DBSYSTEMVALUES_SQLITE, + TMP_DBSYSTEMVALUES_SYBASE, + TMP_DBSYSTEMVALUES_TERADATA, + TMP_DBSYSTEMVALUES_VERTICA, + TMP_DBSYSTEMVALUES_H2, + TMP_DBSYSTEMVALUES_COLDFUSION, + TMP_DBSYSTEMVALUES_CASSANDRA, + TMP_DBSYSTEMVALUES_HBASE, + TMP_DBSYSTEMVALUES_MONGODB, + TMP_DBSYSTEMVALUES_REDIS, + TMP_DBSYSTEMVALUES_COUCHBASE, + TMP_DBSYSTEMVALUES_COUCHDB, + TMP_DBSYSTEMVALUES_COSMOSDB, + TMP_DBSYSTEMVALUES_DYNAMODB, + TMP_DBSYSTEMVALUES_NEO4J, + TMP_DBSYSTEMVALUES_GEODE, + TMP_DBSYSTEMVALUES_ELASTICSEARCH, + TMP_DBSYSTEMVALUES_MEMCACHED, + TMP_DBSYSTEMVALUES_COCKROACHDB, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for DbCassandraConsistencyLevelValues enum definition + * + * 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). + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial'; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_ALL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_TWO = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_THREE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_ANY = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL; +/** + * The constant map of values for DbCassandraConsistencyLevelValues. + * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification. + */ +export const DbCassandraConsistencyLevelValues = +/*#__PURE__*/ createConstMap([ + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for FaasTriggerValues enum definition + * + * Type of the trigger on which the function is executed. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource'; +const TMP_FAASTRIGGERVALUES_HTTP = 'http'; +const TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub'; +const TMP_FAASTRIGGERVALUES_TIMER = 'timer'; +const TMP_FAASTRIGGERVALUES_OTHER = 'other'; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER; +/** + * The constant map of values for FaasTriggerValues. + * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification. + */ +export const FaasTriggerValues = +/*#__PURE__*/ createConstMap([ + TMP_FAASTRIGGERVALUES_DATASOURCE, + TMP_FAASTRIGGERVALUES_HTTP, + TMP_FAASTRIGGERVALUES_PUBSUB, + TMP_FAASTRIGGERVALUES_TIMER, + TMP_FAASTRIGGERVALUES_OTHER, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for FaasDocumentOperationValues enum definition + * + * Describes the type of the operation that was performed on the data. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert'; +const TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit'; +const TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete'; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export const FAASDOCUMENTOPERATIONVALUES_INSERT = TMP_FAASDOCUMENTOPERATIONVALUES_INSERT; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export const FAASDOCUMENTOPERATIONVALUES_EDIT = TMP_FAASDOCUMENTOPERATIONVALUES_EDIT; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export const FAASDOCUMENTOPERATIONVALUES_DELETE = TMP_FAASDOCUMENTOPERATIONVALUES_DELETE; +/** + * The constant map of values for FaasDocumentOperationValues. + * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification. + */ +export const FaasDocumentOperationValues = +/*#__PURE__*/ createConstMap([ + TMP_FAASDOCUMENTOPERATIONVALUES_INSERT, + TMP_FAASDOCUMENTOPERATIONVALUES_EDIT, + TMP_FAASDOCUMENTOPERATIONVALUES_DELETE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for FaasInvokedProviderValues enum definition + * + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud'; +const TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws'; +const TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure'; +const TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp'; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export const FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export const FAASINVOKEDPROVIDERVALUES_AZURE = TMP_FAASINVOKEDPROVIDERVALUES_AZURE; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export const FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP; +/** + * The constant map of values for FaasInvokedProviderValues. + * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification. + */ +export const FaasInvokedProviderValues = +/*#__PURE__*/ createConstMap([ + TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD, + TMP_FAASINVOKEDPROVIDERVALUES_AWS, + TMP_FAASINVOKEDPROVIDERVALUES_AZURE, + TMP_FAASINVOKEDPROVIDERVALUES_GCP, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for NetTransportValues enum definition + * + * Transport protocol used. See note below. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp'; +const TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp'; +const TMP_NETTRANSPORTVALUES_IP = 'ip'; +const TMP_NETTRANSPORTVALUES_UNIX = 'unix'; +const TMP_NETTRANSPORTVALUES_PIPE = 'pipe'; +const TMP_NETTRANSPORTVALUES_INPROC = 'inproc'; +const TMP_NETTRANSPORTVALUES_OTHER = 'other'; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +export const NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +export const NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER; +/** + * The constant map of values for NetTransportValues. + * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification. + */ +export const NetTransportValues = +/*#__PURE__*/ createConstMap([ + TMP_NETTRANSPORTVALUES_IP_TCP, + TMP_NETTRANSPORTVALUES_IP_UDP, + TMP_NETTRANSPORTVALUES_IP, + TMP_NETTRANSPORTVALUES_UNIX, + TMP_NETTRANSPORTVALUES_PIPE, + TMP_NETTRANSPORTVALUES_INPROC, + TMP_NETTRANSPORTVALUES_OTHER, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for NetHostConnectionTypeValues enum definition + * + * The internet connection type currently being used by the host. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown'; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const NETHOSTCONNECTIONTYPEVALUES_WIFI = TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const NETHOSTCONNECTIONTYPEVALUES_WIRED = TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const NETHOSTCONNECTIONTYPEVALUES_CELL = TMP_NETHOSTCONNECTIONTYPEVALUES_CELL; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN; +/** + * The constant map of values for NetHostConnectionTypeValues. + * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification. + */ +export const NetHostConnectionTypeValues = +/*#__PURE__*/ createConstMap([ + TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI, + TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED, + TMP_NETHOSTCONNECTIONTYPEVALUES_CELL, + TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE, + TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for NetHostConnectionSubtypeValues enum definition + * + * 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. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca'; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_LTE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_GSM = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_NR = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA; +/** + * The constant map of values for NetHostConnectionSubtypeValues. + * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification. + */ +export const NetHostConnectionSubtypeValues = +/*#__PURE__*/ createConstMap([ + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for HttpFlavorValues enum definition + * + * Kind of HTTP protocol used. + * + * 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. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0'; +const TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1'; +const TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0'; +const TMP_HTTPFLAVORVALUES_SPDY = 'SPDY'; +const TMP_HTTPFLAVORVALUES_QUIC = 'QUIC'; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC; +/** + * The constant map of values for HttpFlavorValues. + * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification. + */ +export const HttpFlavorValues = { + HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0, + HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1, + HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0, + SPDY: TMP_HTTPFLAVORVALUES_SPDY, + QUIC: TMP_HTTPFLAVORVALUES_QUIC, +}; +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for MessagingDestinationKindValues enum definition + * + * The kind of message destination. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue'; +const TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic'; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export const MESSAGINGDESTINATIONKINDVALUES_QUEUE = TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export const MESSAGINGDESTINATIONKINDVALUES_TOPIC = TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC; +/** + * The constant map of values for MessagingDestinationKindValues. + * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification. + */ +export const MessagingDestinationKindValues = +/*#__PURE__*/ createConstMap([ + TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE, + TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for MessagingOperationValues enum definition + * + * 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. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive'; +const TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process'; +/** + * 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. + * + * @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}). + */ +export const MESSAGINGOPERATIONVALUES_RECEIVE = TMP_MESSAGINGOPERATIONVALUES_RECEIVE; +/** + * 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. + * + * @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}). + */ +export const MESSAGINGOPERATIONVALUES_PROCESS = TMP_MESSAGINGOPERATIONVALUES_PROCESS; +/** + * The constant map of values for MessagingOperationValues. + * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification. + */ +export const MessagingOperationValues = +/*#__PURE__*/ createConstMap([ + TMP_MESSAGINGOPERATIONVALUES_RECEIVE, + TMP_MESSAGINGOPERATIONVALUES_PROCESS, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for RpcGrpcStatusCodeValues enum definition + * + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_RPCGRPCSTATUSCODEVALUES_OK = 0; +const TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1; +const TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2; +const TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3; +const TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4; +const TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5; +const TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6; +const TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7; +const TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8; +const TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9; +const TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10; +const TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11; +const TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12; +const TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13; +const TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14; +const TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15; +const TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_CANCELLED = TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_UNKNOWN = TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_NOT_FOUND = TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_ABORTED = TMP_RPCGRPCSTATUSCODEVALUES_ABORTED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_INTERNAL = TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_DATA_LOSS = TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED; +/** + * The constant map of values for RpcGrpcStatusCodeValues. + * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification. + */ +export const RpcGrpcStatusCodeValues = { + OK: TMP_RPCGRPCSTATUSCODEVALUES_OK, + CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED, + UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN, + INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT, + DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED, + NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND, + ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS, + PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED, + RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED, + FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION, + ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED, + OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE, + UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED, + INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL, + UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE, + DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS, + UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED, +}; +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for MessageTypeValues enum definition + * + * Whether this is a received or sent message. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_MESSAGETYPEVALUES_SENT = 'SENT'; +const TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED'; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export const MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export const MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED; +/** + * The constant map of values for MessageTypeValues. + * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification. + */ +export const MessageTypeValues = +/*#__PURE__*/ createConstMap([ + TMP_MESSAGETYPEVALUES_SENT, + TMP_MESSAGETYPEVALUES_RECEIVED, +]); +//# sourceMappingURL=SemanticAttributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.js.map new file mode 100644 index 0000000..d65593e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SemanticAttributes.js","sourceRoot":"","sources":["../../../src/trace/SemanticAttributes.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\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 =\n '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 =\n 'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n '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 =\n 'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n 'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n '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 =\n 'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n 'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n '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 =\n 'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n '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 =\n 'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n '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/**\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 */\nexport const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n\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 */\nexport const SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n\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 */\nexport const SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n\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 */\nexport const SEMATTRS_DB_USER = TMP_DB_USER;\n\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 */\nexport const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n\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 */\nexport const SEMATTRS_DB_NAME = TMP_DB_NAME;\n\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 */\nexport const SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n\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 */\nexport const SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n\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 */\nexport const SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL =\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID =\n TMP_DB_CASSANDRA_COORDINATOR_ID;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC =\n TMP_DB_CASSANDRA_COORDINATOR_DC;\n\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 */\nexport const SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n\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 */\nexport const SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n\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 */\nexport const SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n\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 */\nexport const SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n\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 */\nexport const SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport const SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n\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 */\nexport const SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n\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*/\nexport const SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n\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 */\nexport const SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n\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 */\nexport const SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n\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 */\nexport const SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n\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 */\nexport const SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n\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 */\nexport const SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n\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 */\nexport const SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n\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 */\nexport const SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n\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 */\nexport const SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n\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 */\nexport const SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n\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 */\nexport const SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n\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 */\nexport const SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n\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 */\nexport const SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n\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 */\nexport const SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n\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 */\nexport const SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n\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 */\nexport const SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n\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 */\nexport const SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n\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 */\nexport const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE =\n TMP_NET_HOST_CONNECTION_SUBTYPE;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n\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 */\nexport const SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n\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 */\nexport const SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n\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 */\nexport const SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n\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 */\nexport const SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n\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 */\nexport const SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n\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 */\nexport const SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n\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 */\nexport const SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n\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 */\nexport const SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n\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 */\nexport const SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n\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 */\nexport const SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n\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 */\nexport const SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n\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 */\nexport const SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n\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 */\nexport const SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n\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 */\nexport const SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n\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 */\nexport const SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n\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 */\nexport const SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n\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 */\nexport const SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n\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 */\nexport const SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n\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 */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH =\n TMP_HTTP_REQUEST_CONTENT_LENGTH;\n\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 */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n\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 */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n\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 */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n\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 */\nexport const SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport const SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n\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*/\nexport const SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY =\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ =\n TMP_AWS_DYNAMODB_CONSISTENT_READ;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET =\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS =\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT =\n TMP_AWS_DYNAMODB_SCANNED_COUNT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n\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 */\nexport const SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\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 */\nexport const SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const SEMATTRS_MESSAGING_DESTINATION_KIND =\n TMP_MESSAGING_DESTINATION_KIND;\n\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 */\nexport const SEMATTRS_MESSAGING_TEMP_DESTINATION =\n TMP_MESSAGING_TEMP_DESTINATION;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL_VERSION =\n TMP_MESSAGING_PROTOCOL_VERSION;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n\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 */\nexport const SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n\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 */\nexport const SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n\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 */\nexport const SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY =\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY =\n TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP =\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n\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 */\nexport const SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n\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 */\nexport const SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n\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 */\nexport const SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n\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 */\nexport const SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n\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 */\nexport const SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n\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 */\nexport const SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n\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 */\nexport const SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n\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 */\nexport const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n\n/**\n * Definition of available values for SemanticAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification.\n */\nexport type SemanticAttributes = {\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 AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn';\n\n /**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\n DB_SYSTEM: 'db.system';\n\n /**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n */\n DB_CONNECTION_STRING: 'db.connection_string';\n\n /**\n * Username for accessing the database.\n */\n DB_USER: 'db.user';\n\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 DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname';\n\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 DB_NAME: 'db.name';\n\n /**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n */\n DB_STATEMENT: 'db.statement';\n\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 DB_OPERATION: 'db.operation';\n\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 DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name';\n\n /**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n */\n DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace';\n\n /**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n */\n DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size';\n\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 DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level';\n\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 DB_CASSANDRA_TABLE: 'db.cassandra.table';\n\n /**\n * Whether or not the query is idempotent.\n */\n DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence';\n\n /**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n */\n DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count';\n\n /**\n * The ID of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id';\n\n /**\n * The data center of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc';\n\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 DB_HBASE_NAMESPACE: 'db.hbase.namespace';\n\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 DB_REDIS_DATABASE_INDEX: 'db.redis.database_index';\n\n /**\n * The collection being accessed within the database stated in `db.name`.\n */\n DB_MONGODB_COLLECTION: 'db.mongodb.collection';\n\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 DB_SQL_TABLE: 'db.sql.table';\n\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 EXCEPTION_TYPE: 'exception.type';\n\n /**\n * The exception message.\n */\n EXCEPTION_MESSAGE: 'exception.message';\n\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 EXCEPTION_STACKTRACE: 'exception.stacktrace';\n\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 EXCEPTION_ESCAPED: 'exception.escaped';\n\n /**\n * Type of the trigger on which the function is executed.\n */\n FAAS_TRIGGER: 'faas.trigger';\n\n /**\n * The execution ID of the current function execution.\n */\n FAAS_EXECUTION: 'faas.execution';\n\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 FAAS_DOCUMENT_COLLECTION: 'faas.document.collection';\n\n /**\n * Describes the type of the operation that was performed on the data.\n */\n FAAS_DOCUMENT_OPERATION: 'faas.document.operation';\n\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 FAAS_DOCUMENT_TIME: 'faas.document.time';\n\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 FAAS_DOCUMENT_NAME: 'faas.document.name';\n\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 FAAS_TIME: 'faas.time';\n\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 FAAS_CRON: 'faas.cron';\n\n /**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n */\n FAAS_COLDSTART: 'faas.coldstart';\n\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 FAAS_INVOKED_NAME: 'faas.invoked_name';\n\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 FAAS_INVOKED_PROVIDER: 'faas.invoked_provider';\n\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 FAAS_INVOKED_REGION: 'faas.invoked_region';\n\n /**\n * Transport protocol used. See note below.\n */\n NET_TRANSPORT: 'net.transport';\n\n /**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n */\n NET_PEER_IP: 'net.peer.ip';\n\n /**\n * Remote port number.\n */\n NET_PEER_PORT: 'net.peer.port';\n\n /**\n * Remote hostname or similar, see note below.\n */\n NET_PEER_NAME: 'net.peer.name';\n\n /**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n */\n NET_HOST_IP: 'net.host.ip';\n\n /**\n * Like `net.peer.port` but for the host port.\n */\n NET_HOST_PORT: 'net.host.port';\n\n /**\n * Local hostname or similar, see note below.\n */\n NET_HOST_NAME: 'net.host.name';\n\n /**\n * The internet connection type currently being used by the host.\n */\n NET_HOST_CONNECTION_TYPE: 'net.host.connection.type';\n\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 NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype';\n\n /**\n * The name of the mobile carrier.\n */\n NET_HOST_CARRIER_NAME: 'net.host.carrier.name';\n\n /**\n * The mobile carrier country code.\n */\n NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc';\n\n /**\n * The mobile carrier network code.\n */\n NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc';\n\n /**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n */\n NET_HOST_CARRIER_ICC: 'net.host.carrier.icc';\n\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 PEER_SERVICE: 'peer.service';\n\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 ENDUSER_ID: 'enduser.id';\n\n /**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n */\n ENDUSER_ROLE: 'enduser.role';\n\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 ENDUSER_SCOPE: 'enduser.scope';\n\n /**\n * Current "managed" thread ID (as opposed to OS thread ID).\n */\n THREAD_ID: 'thread.id';\n\n /**\n * Current thread name.\n */\n THREAD_NAME: 'thread.name';\n\n /**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n */\n CODE_FUNCTION: 'code.function';\n\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 CODE_NAMESPACE: 'code.namespace';\n\n /**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n */\n CODE_FILEPATH: 'code.filepath';\n\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 CODE_LINENO: 'code.lineno';\n\n /**\n * HTTP request method.\n */\n HTTP_METHOD: 'http.method';\n\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 HTTP_URL: 'http.url';\n\n /**\n * The full request target as passed in a HTTP request line or equivalent.\n */\n HTTP_TARGET: 'http.target';\n\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 HTTP_HOST: 'http.host';\n\n /**\n * The URI scheme identifying the used protocol.\n */\n HTTP_SCHEME: 'http.scheme';\n\n /**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n */\n HTTP_STATUS_CODE: 'http.status_code';\n\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 HTTP_FLAVOR: 'http.flavor';\n\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 HTTP_USER_AGENT: 'http.user_agent';\n\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 HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length';\n\n /**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed';\n\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 HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length';\n\n /**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed';\n\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 HTTP_SERVER_NAME: 'http.server_name';\n\n /**\n * The matched route (path template).\n */\n HTTP_ROUTE: 'http.route';\n\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 HTTP_CLIENT_IP: 'http.client_ip';\n\n /**\n * The keys in the `RequestItems` object field.\n */\n AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names';\n\n /**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n */\n AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity';\n\n /**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n */\n AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics';\n\n /**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity';\n\n /**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity';\n\n /**\n * The value of the `ConsistentRead` request parameter.\n */\n AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read';\n\n /**\n * The value of the `ProjectionExpression` request parameter.\n */\n AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection';\n\n /**\n * The value of the `Limit` request parameter.\n */\n AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit';\n\n /**\n * The value of the `AttributesToGet` request parameter.\n */\n AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get';\n\n /**\n * The value of the `IndexName` request parameter.\n */\n AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name';\n\n /**\n * The value of the `Select` request parameter.\n */\n AWS_DYNAMODB_SELECT: 'aws.dynamodb.select';\n\n /**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes';\n\n /**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes';\n\n /**\n * The value of the `ExclusiveStartTableName` request parameter.\n */\n AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table';\n\n /**\n * The the number of items in the `TableNames` response parameter.\n */\n AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count';\n\n /**\n * The value of the `ScanIndexForward` request parameter.\n */\n AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward';\n\n /**\n * The value of the `Segment` request parameter.\n */\n AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment';\n\n /**\n * The value of the `TotalSegments` request parameter.\n */\n AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments';\n\n /**\n * The value of the `Count` response parameter.\n */\n AWS_DYNAMODB_COUNT: 'aws.dynamodb.count';\n\n /**\n * The value of the `ScannedCount` response parameter.\n */\n AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count';\n\n /**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n */\n AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions';\n\n /**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates';\n\n /**\n * A string identifying the messaging system.\n */\n MESSAGING_SYSTEM: 'messaging.system';\n\n /**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n */\n MESSAGING_DESTINATION: 'messaging.destination';\n\n /**\n * The kind of message destination.\n */\n MESSAGING_DESTINATION_KIND: 'messaging.destination_kind';\n\n /**\n * A boolean that is true if the message destination is temporary.\n */\n MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination';\n\n /**\n * The name of the transport protocol.\n */\n MESSAGING_PROTOCOL: 'messaging.protocol';\n\n /**\n * The version of the transport protocol.\n */\n MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version';\n\n /**\n * Connection string.\n */\n MESSAGING_URL: 'messaging.url';\n\n /**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n */\n MESSAGING_MESSAGE_ID: 'messaging.message_id';\n\n /**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n */\n MESSAGING_CONVERSATION_ID: 'messaging.conversation_id';\n\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 MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes';\n\n /**\n * The compressed size of the message payload in bytes.\n */\n MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes';\n\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 MESSAGING_OPERATION: 'messaging.operation';\n\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 MESSAGING_CONSUMER_ID: 'messaging.consumer_id';\n\n /**\n * RabbitMQ message routing key.\n */\n MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key';\n\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 MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key';\n\n /**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n */\n MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group';\n\n /**\n * Client Id for the Consumer or Producer that is handling the message.\n */\n MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id';\n\n /**\n * Partition the message is sent to.\n */\n MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition';\n\n /**\n * A boolean that is true if the message is a tombstone.\n */\n MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone';\n\n /**\n * A string identifying the remoting system.\n */\n RPC_SYSTEM: 'rpc.system';\n\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 RPC_SERVICE: 'rpc.service';\n\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 RPC_METHOD: 'rpc.method';\n\n /**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\n RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code';\n\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 RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version';\n\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 RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id';\n\n /**\n * `error.code` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code';\n\n /**\n * `error.message` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message';\n\n /**\n * Whether this is a received or sent message.\n */\n MESSAGE_TYPE: 'message.type';\n\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 MESSAGE_ID: 'message.id';\n\n /**\n * Compressed size of the message in bytes.\n */\n MESSAGE_COMPRESSED_SIZE: 'message.compressed_size';\n\n /**\n * Uncompressed size of the message in bytes.\n */\n MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size';\n};\n\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 */\nexport const SemanticAttributes: SemanticAttributes =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n\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 */\nexport const DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n\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 */\nexport const DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n\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 */\nexport const DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n\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 */\nexport const DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n\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 */\nexport const DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n\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 */\nexport const DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n\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 */\nexport const DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n\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 */\nexport const DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n\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 */\nexport const DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n\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 */\nexport const DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n\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 */\nexport const DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n\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 */\nexport const DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n\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 */\nexport const DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n\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 */\nexport const DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n\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 */\nexport const DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n\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 */\nexport const DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n\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 */\nexport const DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n\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 */\nexport const DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n\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 */\nexport const DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n\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 */\nexport const DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n\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 */\nexport const DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n\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 */\nexport const DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n\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 */\nexport const DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n\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 */\nexport const DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n\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 */\nexport const DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n\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 */\nexport const DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n\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 */\nexport const DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n\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 */\nexport const DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n\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 */\nexport const DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n\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 */\nexport const DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n\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 */\nexport const DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n\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 */\nexport const DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n\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 */\nexport const DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n\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 */\nexport const DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n\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 */\nexport const DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n\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 */\nexport const DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n\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 */\nexport const DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n\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 */\nexport const DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n\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 */\nexport const DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n\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 */\nexport const DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n\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 */\nexport const DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n\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 */\nexport const DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n\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 */\nexport const DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n\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 */\nexport const DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n\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 */\nexport const DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n\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 */\nexport const DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n\n/**\n * Identifies the 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 * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport type DbSystemValues = {\n /** Some other SQL database. Fallback only. See notes. */\n OTHER_SQL: 'other_sql';\n\n /** Microsoft SQL Server. */\n MSSQL: 'mssql';\n\n /** MySQL. */\n MYSQL: 'mysql';\n\n /** Oracle Database. */\n ORACLE: 'oracle';\n\n /** IBM Db2. */\n DB2: 'db2';\n\n /** PostgreSQL. */\n POSTGRESQL: 'postgresql';\n\n /** Amazon Redshift. */\n REDSHIFT: 'redshift';\n\n /** Apache Hive. */\n HIVE: 'hive';\n\n /** Cloudscape. */\n CLOUDSCAPE: 'cloudscape';\n\n /** HyperSQL DataBase. */\n HSQLDB: 'hsqldb';\n\n /** Progress Database. */\n PROGRESS: 'progress';\n\n /** SAP MaxDB. */\n MAXDB: 'maxdb';\n\n /** SAP HANA. */\n HANADB: 'hanadb';\n\n /** Ingres. */\n INGRES: 'ingres';\n\n /** FirstSQL. */\n FIRSTSQL: 'firstsql';\n\n /** EnterpriseDB. */\n EDB: 'edb';\n\n /** InterSystems Caché. */\n CACHE: 'cache';\n\n /** Adabas (Adaptable Database System). */\n ADABAS: 'adabas';\n\n /** Firebird. */\n FIREBIRD: 'firebird';\n\n /** Apache Derby. */\n DERBY: 'derby';\n\n /** FileMaker. */\n FILEMAKER: 'filemaker';\n\n /** Informix. */\n INFORMIX: 'informix';\n\n /** InstantDB. */\n INSTANTDB: 'instantdb';\n\n /** InterBase. */\n INTERBASE: 'interbase';\n\n /** MariaDB. */\n MARIADB: 'mariadb';\n\n /** Netezza. */\n NETEZZA: 'netezza';\n\n /** Pervasive PSQL. */\n PERVASIVE: 'pervasive';\n\n /** PointBase. */\n POINTBASE: 'pointbase';\n\n /** SQLite. */\n SQLITE: 'sqlite';\n\n /** Sybase. */\n SYBASE: 'sybase';\n\n /** Teradata. */\n TERADATA: 'teradata';\n\n /** Vertica. */\n VERTICA: 'vertica';\n\n /** H2. */\n H2: 'h2';\n\n /** ColdFusion IMQ. */\n COLDFUSION: 'coldfusion';\n\n /** Apache Cassandra. */\n CASSANDRA: 'cassandra';\n\n /** Apache HBase. */\n HBASE: 'hbase';\n\n /** MongoDB. */\n MONGODB: 'mongodb';\n\n /** Redis. */\n REDIS: 'redis';\n\n /** Couchbase. */\n COUCHBASE: 'couchbase';\n\n /** CouchDB. */\n COUCHDB: 'couchdb';\n\n /** Microsoft Azure Cosmos DB. */\n COSMOSDB: 'cosmosdb';\n\n /** Amazon DynamoDB. */\n DYNAMODB: 'dynamodb';\n\n /** Neo4j. */\n NEO4J: 'neo4j';\n\n /** Apache Geode. */\n GEODE: 'geode';\n\n /** Elasticsearch. */\n ELASTICSEARCH: 'elasticsearch';\n\n /** Memcached. */\n MEMCACHED: 'memcached';\n\n /** CockroachDB. */\n COCKROACHDB: 'cockroachdb';\n};\n\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 */\nexport const DbSystemValues: DbSystemValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ALL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_TWO =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_THREE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ANY =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n\n/**\n * Identifies the 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 * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport type DbCassandraConsistencyLevelValues = {\n /** all. */\n ALL: 'all';\n\n /** each_quorum. */\n EACH_QUORUM: 'each_quorum';\n\n /** quorum. */\n QUORUM: 'quorum';\n\n /** local_quorum. */\n LOCAL_QUORUM: 'local_quorum';\n\n /** one. */\n ONE: 'one';\n\n /** two. */\n TWO: 'two';\n\n /** three. */\n THREE: 'three';\n\n /** local_one. */\n LOCAL_ONE: 'local_one';\n\n /** any. */\n ANY: 'any';\n\n /** serial. */\n SERIAL: 'serial';\n\n /** local_serial. */\n LOCAL_SERIAL: 'local_serial';\n};\n\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 */\nexport const DbCassandraConsistencyLevelValues: DbCassandraConsistencyLevelValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n\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 */\nexport const FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n\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 */\nexport const FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n\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 */\nexport const FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n\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 */\nexport const FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n\n/**\n * Identifies the Values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport type FaasTriggerValues = {\n /** A response to some data source operation such as a database or filesystem read/write. */\n DATASOURCE: 'datasource';\n\n /** To provide an answer to an inbound HTTP request. */\n HTTP: 'http';\n\n /** A function is set to be executed when messages are sent to a messaging system. */\n PUBSUB: 'pubsub';\n\n /** A function is scheduled to be executed regularly. */\n TIMER: 'timer';\n\n /** If none of the others apply. */\n OTHER: 'other';\n};\n\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 */\nexport const FaasTriggerValues: FaasTriggerValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASTRIGGERVALUES_DATASOURCE,\n TMP_FAASTRIGGERVALUES_HTTP,\n TMP_FAASTRIGGERVALUES_PUBSUB,\n TMP_FAASTRIGGERVALUES_TIMER,\n TMP_FAASTRIGGERVALUES_OTHER,\n ]);\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\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/**\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 */\nexport const FAASDOCUMENTOPERATIONVALUES_INSERT =\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n\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 */\nexport const FAASDOCUMENTOPERATIONVALUES_EDIT =\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n\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 */\nexport const FAASDOCUMENTOPERATIONVALUES_DELETE =\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n\n/**\n * Identifies the Values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport type FaasDocumentOperationValues = {\n /** When a new object is created. */\n INSERT: 'insert';\n\n /** When an object is modified. */\n EDIT: 'edit';\n\n /** When an object is deleted. */\n DELETE: 'delete';\n};\n\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 */\nexport const FaasDocumentOperationValues: FaasDocumentOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n ]);\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\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/**\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 */\nexport const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n\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 */\nexport const FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n\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 */\nexport const FAASINVOKEDPROVIDERVALUES_AZURE =\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n\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 */\nexport const FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the 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 * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport type FaasInvokedProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\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 */\nexport const FaasInvokedProviderValues: FaasInvokedProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n\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 */\nexport const NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n\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 */\nexport const NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n\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 */\nexport const NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n\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 */\nexport const NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n\n/**\n * Identifies the Values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport type NetTransportValues = {\n /** ip_tcp. */\n IP_TCP: 'ip_tcp';\n\n /** ip_udp. */\n IP_UDP: 'ip_udp';\n\n /** Another IP-based protocol. */\n IP: 'ip';\n\n /** Unix Domain socket. See below. */\n UNIX: 'unix';\n\n /** Named or anonymous pipe. See note below. */\n PIPE: 'pipe';\n\n /** In-process communication. */\n INPROC: 'inproc';\n\n /** Something else (non IP-based). */\n OTHER: 'other';\n};\n\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 */\nexport const NetTransportValues: NetTransportValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIFI =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIRED =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_CELL =\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n\n/**\n * Identifies the Values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionTypeValues = {\n /** wifi. */\n WIFI: 'wifi';\n\n /** wired. */\n WIRED: 'wired';\n\n /** cell. */\n CELL: 'cell';\n\n /** unavailable. */\n UNAVAILABLE: 'unavailable';\n\n /** unknown. */\n UNKNOWN: 'unknown';\n};\n\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 */\nexport const NetHostConnectionTypeValues: NetHostConnectionTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n ]);\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\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/**\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GSM =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NR =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n\n/**\n * Identifies the 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 * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionSubtypeValues = {\n /** GPRS. */\n GPRS: 'gprs';\n\n /** EDGE. */\n EDGE: 'edge';\n\n /** UMTS. */\n UMTS: 'umts';\n\n /** CDMA. */\n CDMA: 'cdma';\n\n /** EVDO Rel. 0. */\n EVDO_0: 'evdo_0';\n\n /** EVDO Rev. A. */\n EVDO_A: 'evdo_a';\n\n /** CDMA2000 1XRTT. */\n CDMA2000_1XRTT: 'cdma2000_1xrtt';\n\n /** HSDPA. */\n HSDPA: 'hsdpa';\n\n /** HSUPA. */\n HSUPA: 'hsupa';\n\n /** HSPA. */\n HSPA: 'hspa';\n\n /** IDEN. */\n IDEN: 'iden';\n\n /** EVDO Rev. B. */\n EVDO_B: 'evdo_b';\n\n /** LTE. */\n LTE: 'lte';\n\n /** EHRPD. */\n EHRPD: 'ehrpd';\n\n /** HSPAP. */\n HSPAP: 'hspap';\n\n /** GSM. */\n GSM: 'gsm';\n\n /** TD-SCDMA. */\n TD_SCDMA: 'td_scdma';\n\n /** IWLAN. */\n IWLAN: 'iwlan';\n\n /** 5G NR (New Radio). */\n NR: 'nr';\n\n /** 5G NRNSA (New Radio Non-Standalone). */\n NRNSA: 'nrnsa';\n\n /** LTE CA. */\n LTE_CA: 'lte_ca';\n};\n\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 */\nexport const NetHostConnectionSubtypeValues: NetHostConnectionSubtypeValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n\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 */\nexport const HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n\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 */\nexport const HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n\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 */\nexport const HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n\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 */\nexport const HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n\n/**\n * Identifies the 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 * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport type HttpFlavorValues = {\n /** HTTP 1.0. */\n HTTP_1_0: '1.0';\n\n /** HTTP 1.1. */\n HTTP_1_1: '1.1';\n\n /** HTTP 2. */\n HTTP_2_0: '2.0';\n\n /** SPDY protocol. */\n SPDY: 'SPDY';\n\n /** QUIC protocol. */\n QUIC: 'QUIC';\n};\n\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 */\nexport const HttpFlavorValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_QUEUE =\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_TOPIC =\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n\n/**\n * Identifies the Values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport type MessagingDestinationKindValues = {\n /** A message sent to a queue. */\n QUEUE: 'queue';\n\n /** A message sent to a topic. */\n TOPIC: 'topic';\n};\n\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 */\nexport const MessagingDestinationKindValues: MessagingDestinationKindValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n ]);\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\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/**\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 */\nexport const MESSAGINGOPERATIONVALUES_RECEIVE =\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n\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 */\nexport const MESSAGINGOPERATIONVALUES_PROCESS =\n TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n\n/**\n * Identifies the 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 * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport type MessagingOperationValues = {\n /** receive. */\n RECEIVE: 'receive';\n\n /** process. */\n PROCESS: 'process';\n};\n\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 */\nexport const MessagingOperationValues: MessagingOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n ]);\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\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/**\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 */\nexport const RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_CANCELLED =\n TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNKNOWN =\n TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT =\n TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED =\n TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_NOT_FOUND =\n TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS =\n TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED =\n TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED =\n TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION =\n TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_ABORTED =\n TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE =\n TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_INTERNAL =\n TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_DATA_LOSS =\n TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n\n/**\n * Identifies the 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 * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport type RpcGrpcStatusCodeValues = {\n /** OK. */\n OK: 0;\n\n /** CANCELLED. */\n CANCELLED: 1;\n\n /** UNKNOWN. */\n UNKNOWN: 2;\n\n /** INVALID_ARGUMENT. */\n INVALID_ARGUMENT: 3;\n\n /** DEADLINE_EXCEEDED. */\n DEADLINE_EXCEEDED: 4;\n\n /** NOT_FOUND. */\n NOT_FOUND: 5;\n\n /** ALREADY_EXISTS. */\n ALREADY_EXISTS: 6;\n\n /** PERMISSION_DENIED. */\n PERMISSION_DENIED: 7;\n\n /** RESOURCE_EXHAUSTED. */\n RESOURCE_EXHAUSTED: 8;\n\n /** FAILED_PRECONDITION. */\n FAILED_PRECONDITION: 9;\n\n /** ABORTED. */\n ABORTED: 10;\n\n /** OUT_OF_RANGE. */\n OUT_OF_RANGE: 11;\n\n /** UNIMPLEMENTED. */\n UNIMPLEMENTED: 12;\n\n /** INTERNAL. */\n INTERNAL: 13;\n\n /** UNAVAILABLE. */\n UNAVAILABLE: 14;\n\n /** DATA_LOSS. */\n DATA_LOSS: 15;\n\n /** UNAUTHENTICATED. */\n UNAUTHENTICATED: 16;\n};\n\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 */\nexport const RpcGrpcStatusCodeValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n\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 */\nexport const MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n\n/**\n * Identifies the Values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport type MessageTypeValues = {\n /** sent. */\n SENT: 'SENT';\n\n /** received. */\n RECEIVED: 'RECEIVED';\n};\n\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 */\nexport const MessageTypeValues: MessageTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGETYPEVALUES_SENT,\n TMP_MESSAGETYPEVALUES_RECEIVED,\n ]);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.d.ts new file mode 100644 index 0000000..6fc2d4d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.d.ts @@ -0,0 +1,2 @@ +export * from './SemanticAttributes'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.js new file mode 100644 index 0000000..fa8474a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable no-restricted-syntax -- + * These re-exports are only of constants, only one-level deep at this point, + * and should not cause problems for tree-shakers. + */ +export * from './SemanticAttributes'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.js.map new file mode 100644 index 0000000..eb6178a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/trace/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,cAAc,sBAAsB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* 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 */\nexport * from './SemanticAttributes';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/version.d.ts new file mode 100644 index 0000000..3b14ba2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "1.39.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js new file mode 100644 index 0000000..40569ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '1.39.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js.map new file mode 100644 index 0000000..2e5e9f8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.39.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.d.ts new file mode 100644 index 0000000..0343893 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.d.ts @@ -0,0 +1,14443 @@ +/** + * This attribute represents the state of the application. + * + * @example created + * + * @note The Android lifecycle states are defined in [Activity lifecycle callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), and from which the `OS identifiers` are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ANDROID_APP_STATE: "android.app.state"; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_APP_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_APP_STATE_VALUE_CREATED: "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_APP_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found in the [Android API levels documentation](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels). + * + * @example 33 + * @example 32 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ANDROID_OS_API_LEVEL: "android.os.api_level"; +/** + * Deprecated. Use `android.app.state` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `android.app.state`. + */ +export declare const ATTR_ANDROID_STATE: "android.state"; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_STATE_VALUE_CREATED: "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Unique identifier for a particular build or compilation of the application. + * + * @example 6cff0a7e-cefc-4668-96f5-1273d8b334d0 + * @example 9f2b833506aa6973a92fde9733e6271f + * @example my-app-1.0.0-code-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_BUILD_ID: "app.build_id"; +/** + * A unique identifier representing the installation of an application on a specific device + * + * @example 2ab2916d-a51f-4ac8-80ee-45ac31a28092 + * + * @note Its value **SHOULD** persist across launches of the same application installation, including through application upgrades. + * It **SHOULD** change if the application is uninstalled or if all applications of the vendor are uninstalled. + * Additionally, users might be able to reset this value (e.g. by clearing application data). + * If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` **SHOULD** have a different value. + * If multiple OpenTelemetry SDKs are used within the same application, they **SHOULD** use the same value for `app.installation.id`. + * Hardware IDs (e.g. serial number, IMEI, MAC address) **MUST NOT** be used as the `app.installation.id`. + * + * For iOS, this value **SHOULD** be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor). + * + * For Android, examples of `app.installation.id` implementations include: + * + * - [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations). + * - A globally unique UUID which is persisted across sessions in your application. + * - [App set ID](https://developer.android.com/identity/app-set-id). + * - [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID). + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_INSTALLATION_ID: "app.installation.id"; +/** + * A number of frame renders that experienced jank. + * + * @example 9 + * @example 42 + * + * @note Depending on platform limitations, the value provided **MAY** be approximation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_JANK_FRAME_COUNT: "app.jank.frame_count"; +/** + * The time period, in seconds, for which this jank is being reported. + * + * @example 1.0 + * @example 5.0 + * @example 10.24 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_JANK_PERIOD: "app.jank.period"; +/** + * The minimum rendering threshold for this jank, in seconds. + * + * @example 0.016 + * @example 0.7 + * @example 1.024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_JANK_THRESHOLD: "app.jank.threshold"; +/** + * The x (horizontal) coordinate of a screen coordinate, in screen pixels. + * + * @example 0 + * @example 131 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_COORDINATE_X: "app.screen.coordinate.x"; +/** + * The y (vertical) component of a screen coordinate, in screen pixels. + * + * @example 12 + * @example 99 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_COORDINATE_Y: "app.screen.coordinate.y"; +/** + * An identifier that uniquely differentiates this screen from other screens in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example com.example.app.MainActivity + * @example com.example.shop.ProductDetailFragment + * @example MyApp.ProfileView + * @example MyApp.ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_ID: "app.screen.id"; +/** + * The name of an application screen. + * + * @example MainActivity + * @example ProductDetailFragment + * @example ProfileView + * @example ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_NAME: "app.screen.name"; +/** + * An identifier that uniquely differentiates this widget from other widgets in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example submit_order_1829 + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_WIDGET_ID: "app.widget.id"; +/** + * The name of an application widget. + * + * @example submit + * @example attack + * @example Clear Cart + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_WIDGET_NAME: "app.widget.name"; +/** + * The provenance filename of the built attestation which directly relates to the build artifact filename. This filename **SHOULD** accompany the artifact at publish time. See the [SLSA Relationship](https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations) specification for more information. + * + * @example golang-binary-amd64-v0.1.0.attestation + * @example docker-image-amd64-v0.1.0.intoto.json1 + * @example release-1.tar.gz.attestation + * @example file-name-package.tar.gz.intoto.json1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_ATTESTATION_FILENAME: "artifact.attestation.filename"; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the [software attestation space](https://github.com/in-toto/attestation/tree/main/spec) also refer to this as the **digest**. + * + * @example 1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_ATTESTATION_HASH: "artifact.attestation.hash"; +/** + * The id of the build [software attestation](https://slsa.dev/attestation-model). + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_ATTESTATION_ID: "artifact.attestation.id"; +/** + * The human readable file name of the artifact, typically generated during build and release processes. Often includes the package name and version in the file name. + * + * @example golang-binary-amd64-v0.1.0 + * @example docker-image-amd64-v0.1.0 + * @example release-1.tar.gz + * @example file-name-package.tar.gz + * + * @note This file name can also act as the [Package Name](https://slsa.dev/spec/v1.0/terminology#package-model) + * in cases where the package ecosystem maps accordingly. + * Additionally, the artifact [can be published](https://slsa.dev/spec/v1.0/terminology#software-supply-chain) + * for others, but that is not a guarantee. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_FILENAME: "artifact.filename"; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), often found in checksum.txt on a release of the artifact and used to verify package integrity. + * + * @example 9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9 + * + * @note The specific algorithm used to create the cryptographic hash value is + * not defined. In situations where an artifact has multiple + * cryptographic hashes, it is up to the implementer to choose which + * hash value to set here; this should be the most secure hash algorithm + * that is suitable for the situation and consistent with the + * corresponding attestation. The implementer can then provide the other + * hash values through an additional set of attribute extensions as they + * deem necessary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_HASH: "artifact.hash"; +/** + * The [Package URL](https://github.com/package-url/purl-spec) of the [package artifact](https://slsa.dev/spec/v1.0/terminology#package-model) provides a standard way to identify and locate the packaged artifact. + * + * @example pkg:github/package-url/purl-spec@1209109710924 + * @example pkg:npm/foo@12.12.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_PURL: "artifact.purl"; +/** + * The version of the artifact. + * + * @example v0.1.0 + * @example 1.2.1 + * @example 122691-build + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_VERSION: "artifact.version"; +/** + * The result of the authentication operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHENTICATION_RESULT: "aspnetcore.authentication.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "none" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * No authentication information returned. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_NONE: "none"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_SUCCESS: "success"; +/** + * The identifier that names a particular authentication handler. + * + * @example Cookies + * @example Bearer + * @example Identity.Application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHENTICATION_SCHEME: "aspnetcore.authentication.scheme"; +/** + * The name of the authorization policy. + * + * @example RequireAdminRole + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHORIZATION_POLICY: "aspnetcore.authorization.policy"; +/** + * The result of calling the authorization service. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHORIZATION_RESULT: "aspnetcore.authorization.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_SUCCESS: "success"; +/** + * The error code for a failed identity operation. + * + * @example DefaultError + * @example PasswordMismatch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_ERROR_CODE: "aspnetcore.identity.error_code"; +/** + * The result from checking the password. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT: "aspnetcore.identity.password_check_result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "password_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the password was missing from the user. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_PASSWORD_MISSING: "password_missing"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS: "success"; +/** + * Enum value "success_rehash_needed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful however the password was encoded using a deprecated algorithm and should be rehashed and updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS_REHASH_NEEDED: "success_rehash_needed"; +/** + * Enum value "user_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the user was missing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_USER_MISSING: "user_missing"; +/** + * The result of the identity operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_RESULT: "aspnetcore.identity.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_RESULT_VALUE_SUCCESS: "success"; +/** + * Whether the sign in result was success or failure. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT: "aspnetcore.identity.sign_in.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "locked_out" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is locked out. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_LOCKED_OUT: "locked_out"; +/** + * Enum value "not_allowed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is not allowed to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_NOT_ALLOWED: "not_allowed"; +/** + * Enum value "requires_two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User requires two factory authentication to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_REQUIRES_TWO_FACTOR: "requires_two_factor"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_SUCCESS: "success"; +/** + * The authentication type. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE: "aspnetcore.identity.sign_in.type"; +/** + * Enum value "external" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a previously registered third-party login. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_EXTERNAL: "external"; +/** + * Enum value "passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with passkey. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSKEY: "passkey"; +/** + * Enum value "password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSWORD: "password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a two factor provider. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR: "two_factor"; +/** + * Enum value "two_factor_authenticator" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factor authenticator app. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_AUTHENTICATOR: "two_factor_authenticator"; +/** + * Enum value "two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factory recovery code. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_RECOVERY_CODE: "two_factor_recovery_code"; +/** + * What the token will be used for. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE: "aspnetcore.identity.token_purpose"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * Any token purpose that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_OTHER: "_OTHER"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing the user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_EMAIL: "change_email"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing a user phone number. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_PHONE_NUMBER: "change_phone_number"; +/** + * Enum value "email_confirmation" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for confirming user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_EMAIL_CONFIRMATION: "email_confirmation"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for resetting a user password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_RESET_PASSWORD: "reset_password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing user two factor settings. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_TWO_FACTOR: "two_factor"; +/** + * The result of token verification. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED: "aspnetcore.identity.token_verified"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_SUCCESS: "success"; +/** + * The user update type. + * + * @example update + * @example user_name + * @example reset_password + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE: "aspnetcore.identity.user.update_type"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Any update type that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_OTHER: "_OTHER"; +/** + * Enum value "access_failed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure recorded. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ACCESS_FAILED: "access_failed"; +/** + * Enum value "add_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_CLAIMS: "add_claims"; +/** + * Enum value "add_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_LOGIN: "add_login"; +/** + * Enum value "add_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_PASSWORD: "add_password"; +/** + * Enum value "add_to_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user added to roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_TO_ROLES: "add_to_roles"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_EMAIL: "change_email"; +/** + * Enum value "change_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PASSWORD: "change_password"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PHONE_NUMBER: "change_phone_number"; +/** + * Enum value "confirm_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email confirmed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CONFIRM_EMAIL: "confirm_email"; +/** + * Enum value "generate_new_two_factor_recovery_codes" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user new two-factor recovery codes generated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_GENERATE_NEW_TWO_FACTOR_RECOVERY_CODES: "generate_new_two_factor_recovery_codes"; +/** + * Enum value "password_rehash" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password rehashed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_PASSWORD_REHASH: "password_rehash"; +/** + * Enum value "redeem_two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor recovery code redeemed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REDEEM_TWO_FACTOR_RECOVERY_CODE: "redeem_two_factor_recovery_code"; +/** + * Enum value "remove_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_AUTHENTICATION_TOKEN: "remove_authentication_token"; +/** + * Enum value "remove_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_CLAIMS: "remove_claims"; +/** + * Enum value "remove_from_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user removed from roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_FROM_ROLES: "remove_from_roles"; +/** + * Enum value "remove_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_LOGIN: "remove_login"; +/** + * Enum value "remove_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSKEY: "remove_passkey"; +/** + * Enum value "remove_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSWORD: "remove_password"; +/** + * Enum value "replace_claim" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claim replaced. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REPLACE_CLAIM: "replace_claim"; +/** + * Enum value "reset_access_failed_count" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure count reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_ACCESS_FAILED_COUNT: "reset_access_failed_count"; +/** + * Enum value "reset_authenticator_key" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authenticator key reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_AUTHENTICATOR_KEY: "reset_authenticator_key"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_PASSWORD: "reset_password"; +/** + * Enum value "security_stamp" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user security stamp updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SECURITY_STAMP: "security_stamp"; +/** + * Enum value "set_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_AUTHENTICATION_TOKEN: "set_authentication_token"; +/** + * Enum value "set_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_EMAIL: "set_email"; +/** + * Enum value "set_lockout_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_ENABLED: "set_lockout_enabled"; +/** + * Enum value "set_lockout_end_date" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout end date set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_END_DATE: "set_lockout_end_date"; +/** + * Enum value "set_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PASSKEY: "set_passkey"; +/** + * Enum value "set_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PHONE_NUMBER: "set_phone_number"; +/** + * Enum value "set_two_factor_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor authentication enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_TWO_FACTOR_ENABLED: "set_two_factor_enabled"; +/** + * Enum value "update" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_UPDATE: "update"; +/** + * Enum value "user_name" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user name updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_USER_NAME: "user_name"; +/** + * The full name of the identity user type. + * + * @example Contoso.ContosoUser + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_USER_TYPE: "aspnetcore.identity.user_type"; +/** + * The name of the library or subsystem using the memory pool instance. + * + * @example kestrel + * @example iis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_MEMORY_POOL_OWNER: "aspnetcore.memory_pool.owner"; +/** + * A flag indicating whether the sign in is persistent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_SIGN_IN_IS_PERSISTENT: "aspnetcore.sign_in.is_persistent"; +/** + * The unique identifier of the AWS Bedrock Guardrail. A [guardrail](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) helps safeguard and prevent unwanted behavior from model responses or user messages. + * + * @example sgi5gkybzqak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_BEDROCK_GUARDRAIL_ID: "aws.bedrock.guardrail.id"; +/** + * The unique identifier of the AWS Bedrock Knowledge base. A [knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) is a bank of information that can be queried by models to generate more relevant responses and augment prompts. + * + * @example XFWUPB9PAW + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_BEDROCK_KNOWLEDGE_BASE_ID: "aws.bedrock.knowledge_base.id"; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @example ["{ "AttributeName": "string", "AttributeType": "string" }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: "aws.dynamodb.attribute_definitions"; +/** + * The value of the `AttributesToGet` request parameter. + * + * @example ["lives", "id"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET: "aws.dynamodb.attributes_to_get"; +/** + * The value of the `ConsistentRead` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_CONSISTENT_READ: "aws.dynamodb.consistent_read"; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @example ["{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY: "aws.dynamodb.consumed_capacity"; +/** + * The value of the `Count` response parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_COUNT: "aws.dynamodb.count"; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @example Users + * @example CatsTable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE: "aws.dynamodb.exclusive_start_table"; +/** + * The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field. + * + * @example ["{ "Create": { "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: "aws.dynamodb.global_secondary_index_updates"; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field + * + * @example ["{ "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: "aws.dynamodb.global_secondary_indexes"; +/** + * The value of the `IndexName` request parameter. + * + * @example name_to_group + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_INDEX_NAME: "aws.dynamodb.index_name"; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @example { "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] } + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS: "aws.dynamodb.item_collection_metrics"; +/** + * The value of the `Limit` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_LIMIT: "aws.dynamodb.limit"; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @example ["{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: "aws.dynamodb.local_secondary_indexes"; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @example Title + * @example Title, Price, Color + * @example Title, Description, RelatedItems, ProductReviews + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_PROJECTION: "aws.dynamodb.projection"; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: "aws.dynamodb.provisioned_read_capacity"; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: "aws.dynamodb.provisioned_write_capacity"; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SCAN_FORWARD: "aws.dynamodb.scan_forward"; +/** + * The value of the `ScannedCount` response parameter. + * + * @example 50 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SCANNED_COUNT: "aws.dynamodb.scanned_count"; +/** + * The value of the `Segment` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SEGMENT: "aws.dynamodb.segment"; +/** + * The value of the `Select` request parameter. + * + * @example ALL_ATTRIBUTES + * @example COUNT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SELECT: "aws.dynamodb.select"; +/** + * The number of items in the `TableNames` response parameter. + * + * @example 20 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_TABLE_COUNT: "aws.dynamodb.table_count"; +/** + * The keys in the `RequestItems` object field. + * + * @example ["Users", "Cats"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_TABLE_NAMES: "aws.dynamodb.table_names"; +/** + * The value of the `TotalSegments` request parameter. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS: "aws.dynamodb.total_segments"; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_CLUSTER_ARN: "aws.ecs.cluster.arn"; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @example arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_CONTAINER_ARN: "aws.ecs.container.arn"; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_LAUNCHTYPE: "aws.ecs.launchtype"; +/** + * Enum value "ec2" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon EC2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AWS_ECS_LAUNCHTYPE_VALUE_EC2: "ec2"; +/** + * Enum value "fargate" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon Fargate + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AWS_ECS_LAUNCHTYPE_VALUE_FARGATE: "fargate"; +/** + * The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids). + * + * @example arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b + * @example arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_ARN: "aws.ecs.task.arn"; +/** + * The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task. + * + * @example opentelemetry-family + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_FAMILY: "aws.ecs.task.family"; +/** + * The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`. + * + * @example 10838bed-421f-43ef-870a-f43feacbbb5b + * @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_ID: "aws.ecs.task.id"; +/** + * The revision for the task definition used to create the ECS task. + * + * @example 8 + * @example 26 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_REVISION: "aws.ecs.task.revision"; +/** + * The ARN of an EKS cluster. + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_EKS_CLUSTER_ARN: "aws.eks.cluster.arn"; +/** + * The AWS extended request ID as returned in the response header `x-amz-id-2`. + * + * @example wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ= + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_EXTENDED_REQUEST_ID: "aws.extended_request_id"; +/** + * The name of the AWS Kinesis [stream](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) the request refers to. Corresponds to the `--stream-name` parameter of the Kinesis [describe-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html) operation. + * + * @example some-stream-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_KINESIS_STREAM_NAME: "aws.kinesis.stream_name"; +/** + * 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). + * + * @example arn:aws:lambda:us-east-1:123456:function:myfunction:myalias + * + * @note This may be different from `cloud.resource_id` if an alias is involved. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LAMBDA_INVOKED_ARN: "aws.lambda.invoked_arn"; +/** + * The UUID of the [AWS Lambda EvenSource Mapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html). An event source is mapped to a lambda function. It's contents are read by Lambda and used to trigger a function. This isn't available in the lambda execution context or the lambda runtime environtment. This is going to be populated by the AWS SDK for each language when that UUID is present. Some of these operations are Create/Delete/Get/List/Update EventSourceMapping. + * + * @example 587ad24b-03b9-4413-8202-bbd56b36e5b7 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LAMBDA_RESOURCE_MAPPING_ID: "aws.lambda.resource_mapping.id"; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*"] + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_GROUP_ARNS: "aws.log.group.arns"; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * @example ["/aws/lambda/my-function", "opentelemetry-service"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_GROUP_NAMES: "aws.log.group.names"; +/** + * The ARN(s) of the AWS log stream(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_STREAM_ARNS: "aws.log.stream.arns"; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @example ["logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_STREAM_NAMES: "aws.log.stream.names"; +/** + * The AWS request ID as returned in the response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`. + * + * @example 79b9da39-b7ae-508a-a6bc-864b2829c622 + * @example C9ER4AJX75574TDJ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_REQUEST_ID: "aws.request_id"; +/** + * The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example some-bucket-name + * + * @note The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter. + * This applies to almost all S3 operations except `list-buckets`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_BUCKET: "aws.s3.bucket"; +/** + * The source object (in the form `bucket`/`key`) for the copy operation. + * + * @example someFile.yml + * + * @note The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter + * of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html). + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_COPY_SOURCE: "aws.s3.copy_source"; +/** + * The delete request container that specifies the objects to be deleted. + * + * @example Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean + * + * @note The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation. + * The `delete` attribute corresponds to the `--delete` parameter of the + * [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_DELETE: "aws.s3.delete"; +/** + * The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example someFile.yml + * + * @note The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter. + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) + * - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html) + * - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html) + * - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html) + * - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html) + * - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html) + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_KEY: "aws.s3.key"; +/** + * The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000. + * + * @example 3456 + * + * @note The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations. + * The `part_number` attribute corresponds to the `--part-number` parameter of the + * [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_PART_NUMBER: "aws.s3.part_number"; +/** + * Upload ID that identifies the multipart upload. + * + * @example dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ + * + * @note The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter + * of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations. + * This applies in particular to the following operations: + * + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_UPLOAD_ID: "aws.s3.upload_id"; +/** + * The ARN of the Secret stored in the Secrets Mangger + * + * @example arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_SECRETSMANAGER_SECRET_ARN: "aws.secretsmanager.secret.arn"; +/** + * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) is a logical access point that acts as a communication channel. + * + * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_SNS_TOPIC_ARN: "aws.sns.topic.arn"; +/** + * The URL of the AWS SQS Queue. It's a unique identifier for a queue in Amazon Simple Queue Service (SQS) and is used to access the queue and perform actions on it. + * + * @example https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_SQS_QUEUE_URL: "aws.sqs.queue.url"; +/** + * The ARN of the AWS Step Functions Activity. + * + * @example arn:aws:states:us-east-1:123456789012:activity:get-greeting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN: "aws.step_functions.activity.arn"; +/** + * The ARN of the AWS Step Functions State Machine. + * + * @example arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN: "aws.step_functions.state_machine.arn"; +/** + * Deprecated, use `azure.resource_provider.namespace` instead. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource_provider.namespace`. + */ +export declare const ATTR_AZ_NAMESPACE: "az.namespace"; +/** + * Deprecated, use `azure.service.request.id` instead. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.service.request.id`. + */ +export declare const ATTR_AZ_SERVICE_REQUEST_ID: "az.service_request_id"; +/** + * The unique identifier of the client instance. + * + * @example 3ba4827d-4422-483f-b59f-85b74211c11d + * @example storage-client-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_CLIENT_ID: "azure.client.id"; +/** + * Cosmos client connection mode. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_CONNECTION_MODE: "azure.cosmosdb.connection.mode"; +/** + * Enum value "direct" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT: "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY: "gateway"; +/** + * Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL: "azure.cosmosdb.consistency.level"; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Bounded Staleness + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS: "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Consistent Prefix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX: "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Eventual + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL: "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Session + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION: "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Strong + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG: "Strong"; +/** + * List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @note Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS: "azure.cosmosdb.operation.contacted_regions"; +/** + * The number of request units consumed by the operation. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE: "azure.cosmosdb.operation.request_charge"; +/** + * Request payload size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_REQUEST_BODY_SIZE: "azure.cosmosdb.request.body.size"; +/** + * Cosmos DB sub status code. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE: "azure.cosmosdb.response.sub_status_code"; +/** + * [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_RESOURCE_PROVIDER_NAMESPACE: "azure.resource_provider.namespace"; +/** + * The unique identifier of the service request. It's generated by the Azure service and returned with the response. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_SERVICE_REQUEST_ID: "azure.service.request.id"; +/** + * Array of brand name and version separated by a space + * + * @example [" Not A;Brand 99", "Chromium 99", "Chrome 99"] + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_BRANDS: "browser.brands"; +/** + * Preferred language of the user using the browser + * + * @example en + * @example en-US + * @example fr + * @example fr-FR + * + * @note This value is intended to be taken from the Navigator API `navigator.language`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_LANGUAGE: "browser.language"; +/** + * A boolean that is true if the browser is running on a mobile device + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute **SHOULD** be left unset. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_MOBILE: "browser.mobile"; +/** + * The platform on which the browser is running + * + * @example Windows + * @example macOS + * @example Android + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API **SHOULD NOT** be used instead and this attribute **SHOULD** be left unset in order for the values to be consistent. + * The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_PLATFORM: "browser.platform"; +/** + * 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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_CONSISTENCY_LEVEL: "cassandra.consistency.level"; +/** + * Enum value "all" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * All + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL: "all"; +/** + * Enum value "any" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Any + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY: "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Each Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM: "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE: "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM: "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL: "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE: "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM: "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL: "serial"; +/** + * Enum value "three" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Three + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE: "three"; +/** + * Enum value "two" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Two + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO: "two"; +/** + * The data center of the coordinating node for a query. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_COORDINATOR_DC: "cassandra.coordinator.dc"; +/** + * The ID of the coordinating node for a query. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_COORDINATOR_ID: "cassandra.coordinator.id"; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_PAGE_SIZE: "cassandra.page.size"; +/** + * Whether or not the query is idempotent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_QUERY_IDEMPOTENT: "cassandra.query.idempotent"; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: "cassandra.speculative_execution.count"; +/** + * The kind of action a pipeline run is performing. + * + * @example BUILD + * @example RUN + * @example SYNC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_ACTION_NAME: "cicd.pipeline.action.name"; +/** + * Enum value "BUILD" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a build. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_ACTION_NAME_VALUE_BUILD: "BUILD"; +/** + * Enum value "RUN" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_ACTION_NAME_VALUE_RUN: "RUN"; +/** + * Enum value "SYNC" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a sync. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_ACTION_NAME_VALUE_SYNC: "SYNC"; +/** + * The human readable name of the pipeline within a CI/CD system. + * + * @example Build and Test + * @example Lint + * @example Deploy Go Project + * @example deploy_to_environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_NAME: "cicd.pipeline.name"; +/** + * The result of a pipeline run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RESULT: "cicd.pipeline.result"; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_CANCELLATION: "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_ERROR: "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_SKIP: "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_SUCCESS: "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * A timeout caused the pipeline run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_TIMEOUT: "timeout"; +/** + * The unique identifier of a pipeline run within a CI/CD system. + * + * @example 120912 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RUN_ID: "cicd.pipeline.run.id"; +/** + * The pipeline run goes through these states during its lifecycle. + * + * @example pending + * @example executing + * @example finalizing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RUN_STATE: "cicd.pipeline.run.state"; +/** + * Enum value "executing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The executing state spans the execution of any run tasks (eg. build, test). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RUN_STATE_VALUE_EXECUTING: "executing"; +/** + * Enum value "finalizing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The finalizing state spans from when the run has finished executing (eg. cleanup of run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RUN_STATE_VALUE_FINALIZING: "finalizing"; +/** + * Enum value "pending" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RUN_STATE_VALUE_PENDING: "pending"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline run, providing the complete address in order to locate and identify the pipeline run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RUN_URL_FULL: "cicd.pipeline.run.url.full"; +/** + * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures. + * + * @example Run GoLang Linter + * @example Go Build + * @example go-test + * @example deploy_binary + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_NAME: "cicd.pipeline.task.name"; +/** + * The unique identifier of a task run within a pipeline. + * + * @example 12097 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_RUN_ID: "cicd.pipeline.task.run.id"; +/** + * The result of a task run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_RUN_RESULT: "cicd.pipeline.task.run.result"; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was cancelled, eg. by a user manually cancelling the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_CANCELLATION: "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_ERROR: "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SKIP: "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SUCCESS: "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * A timeout caused the task run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_TIMEOUT: "timeout"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline task run, providing the complete address in order to locate and identify the pipeline task run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL: "cicd.pipeline.task.run.url.full"; +/** + * The type of the task within a pipeline. + * + * @example build + * @example test + * @example deploy + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_TYPE: "cicd.pipeline.task.type"; +/** + * Enum value "build" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * build + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_TYPE_VALUE_BUILD: "build"; +/** + * Enum value "deploy" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * deploy + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY: "deploy"; +/** + * Enum value "test" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * test + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_TYPE_VALUE_TEST: "test"; +/** + * The name of a component of the CICD system. + * + * @example controller + * @example scheduler + * @example agent + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_SYSTEM_COMPONENT: "cicd.system.component"; +/** + * The unique identifier of a worker within a CICD system. + * + * @example abc123 + * @example 10.0.1.2 + * @example controller + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_ID: "cicd.worker.id"; +/** + * The name of a worker within a CICD system. + * + * @example agent-abc + * @example controller + * @example Ubuntu LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_NAME: "cicd.worker.name"; +/** + * The state of a CICD worker / agent. + * + * @example idle + * @example busy + * @example down + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_STATE: "cicd.worker.state"; +/** + * Enum value "available" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_WORKER_STATE_VALUE_AVAILABLE: "available"; +/** + * Enum value "busy" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is performing work for the CICD system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_WORKER_STATE_VALUE_BUSY: "busy"; +/** + * Enum value "offline" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not available to the CICD system (disconnected / down). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_WORKER_STATE_VALUE_OFFLINE: "offline"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the worker, providing the complete address in order to locate and identify the worker. + * + * @example https://cicd.example.org/worker/abc123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_URL_FULL: "cicd.worker.url.full"; +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_ACCOUNT_ID: "cloud.account.id"; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_AVAILABILITY_ZONE: "cloud.availability_zone"; +/** + * The cloud platform in use. + * + * @note The prefix of the service **SHOULD** match the one specified in `cloud.provider`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_PLATFORM: "cloud.platform"; +/** + * Enum value "akamai_cloud.compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Akamai Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE: "akamai_cloud.compute"; +/** + * Enum value "alibaba_cloud_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Elastic Compute Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS: "alibaba_cloud_ecs"; +/** + * Enum value "alibaba_cloud_fc" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Function Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC: "alibaba_cloud_fc"; +/** + * Enum value "alibaba_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT: "alibaba_cloud_openshift"; +/** + * Enum value "aws_app_runner" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS App Runner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER: "aws_app_runner"; +/** + * Enum value "aws_ec2" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Compute Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_EC2: "aws_ec2"; +/** + * Enum value "aws_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Container Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_ECS: "aws_ecs"; +/** + * Enum value "aws_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_EKS: "aws_eks"; +/** + * Enum value "aws_elastic_beanstalk" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Beanstalk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK: "aws_elastic_beanstalk"; +/** + * Enum value "aws_lambda" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Lambda + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_LAMBDA: "aws_lambda"; +/** + * Enum value "aws_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on AWS (ROSA) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT: "aws_openshift"; +/** + * Enum value "azure.aks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_AKS: "azure.aks"; +/** + * Enum value "azure.app_service" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure App Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE: "azure.app_service"; +/** + * Enum value "azure.container_apps" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Apps + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS: "azure.container_apps"; +/** + * Enum value "azure.container_instances" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Instances + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES: "azure.container_instances"; +/** + * Enum value "azure.functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Functions + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS: "azure.functions"; +/** + * Enum value "azure.openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Red Hat OpenShift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT: "azure.openshift"; +/** + * Enum value "azure.vm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Virtual Machines + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_VM: "azure.vm"; +/** + * Enum value "gcp.agent_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Vertex AI Agent Engine + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE: "gcp.agent_engine"; +/** + * Enum value "gcp_app_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud App Engine (GAE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE: "gcp_app_engine"; +/** + * Enum value "gcp_bare_metal_solution" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Bare Metal Solution (BMS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION: "gcp_bare_metal_solution"; +/** + * Enum value "gcp_cloud_functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Functions (GCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS: "gcp_cloud_functions"; +/** + * Enum value "gcp_cloud_run" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Run + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN: "gcp_cloud_run"; +/** + * Enum value "gcp_compute_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Compute Engine (GCE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE: "gcp_compute_engine"; +/** + * Enum value "gcp_kubernetes_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Kubernetes Engine (GKE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE: "gcp_kubernetes_engine"; +/** + * Enum value "gcp_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Google Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT: "gcp_openshift"; +/** + * Enum value "hetzner.cloud_server" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Server on Hetzner Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER: "hetzner.cloud_server"; +/** + * Enum value "ibm_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT: "ibm_cloud_openshift"; +/** + * Enum value "oracle_cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Compute on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_COMPUTE: "oracle_cloud_compute"; +/** + * Enum value "oracle_cloud_oke" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_OKE: "oracle_cloud_oke"; +/** + * Enum value "tencent_cloud_cvm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Cloud Virtual Machine (CVM) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM: "tencent_cloud_cvm"; +/** + * Enum value "tencent_cloud_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Elastic Kubernetes Service (EKS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS: "tencent_cloud_eks"; +/** + * Enum value "tencent_cloud_scf" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Serverless Cloud Function (SCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF: "tencent_cloud_scf"; +/** + * Enum value "vultr.cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Vultr Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE: "vultr.cloud_compute"; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_PROVIDER: "cloud.provider"; +/** + * Enum value "akamai_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Akamai Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD: "akamai_cloud"; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD: "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_AWS: "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_AZURE: "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_GCP: "gcp"; +/** + * Enum value "heroku" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Heroku Platform as a Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_HEROKU: "heroku"; +/** + * Enum value "hetzner" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Hetzner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_HETZNER: "hetzner"; +/** + * Enum value "ibm_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_IBM_CLOUD: "ibm_cloud"; +/** + * Enum value "oracle_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_ORACLE_CLOUD: "oracle_cloud"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_TENCENT_CLOUD: "tencent_cloud"; +/** + * Enum value "vultr" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Vultr + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_VULTR: "vultr"; +/** + * The geographical region within a cloud provider. When associated with a resource, this attribute specifies the region where the resource operates. When calling services or APIs deployed on a cloud, this attribute identifies the region where the called destination is deployed. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_REGION: "cloud.region"; +/** + * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://google.aip.dev/122#full-resource-names) on GCP) + * + * @example arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function + * @example //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID + * @example /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/ + * + * @note On some cloud providers, it may not be possible to determine the full ID at startup, + * so it may be necessary to set `cloud.resource_id` as a span attribute instead. + * + * The exact value to use for `cloud.resource_id` depends on the cloud provider. + * The following well-known definitions **MUST** be used if you set this attribute and they apply: + * + * - **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + * Take care not to use the "invoked ARN" directly but replace any + * [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 invocable with + * multiple different aliases. + * - **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) + * - **Azure:** The [Fully Qualified Resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) of the invoked function, + * *not* the function app, having the form + * `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`. + * This means that a span attribute **MUST** be used, as an Azure function app can host multiple functions that would usually share + * a TracerProvider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_RESOURCE_ID: "cloud.resource_id"; +/** + * The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event. + * + * @example 123e4567-e89b-12d3-a456-426614174000 + * @example 0001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_ID: "cloudevents.event_id"; +/** + * The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened. + * + * @example https://github.com/cloudevents + * @example /cloudevents/spec/pull/123 + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_SOURCE: "cloudevents.event_source"; +/** + * The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses. + * + * @example "1.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION: "cloudevents.event_spec_version"; +/** + * The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source). + * + * @example "mynewfile.jpg" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_SUBJECT: "cloudevents.event_subject"; +/** + * The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence. + * + * @example com.github.pull_request.opened + * @example com.example.object.deleted.v2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_TYPE: "cloudevents.event_type"; +/** + * The guid of the application. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_id`. This is the same value as + * reported by `cf app --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_APP_ID: "cloudfoundry.app.id"; +/** + * The index of the application instance. 0 when just one instance is active. + * + * @example 0 + * @example 1 + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the application instance index for applications + * deployed on the runtime. + * + * Application instrumentation should use the value from environment + * variable `CF_INSTANCE_INDEX`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID: "cloudfoundry.app.instance.id"; +/** + * The name of the application. + * + * @example my-app-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_name`. This is the same value + * as reported by `cf apps`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_APP_NAME: "cloudfoundry.app.name"; +/** + * The guid of the CloudFoundry org the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_id`. This is the same value as + * reported by `cf org --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_ORG_ID: "cloudfoundry.org.id"; +/** + * The name of the CloudFoundry organization the app is running in. + * + * @example my-org-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_name`. This is the same value as + * reported by `cf orgs`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_ORG_NAME: "cloudfoundry.org.name"; +/** + * The UID identifying the process. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to + * `VCAP_APPLICATION.app_id` for applications deployed to the runtime. + * For system components, this could be the actual PID. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_PROCESS_ID: "cloudfoundry.process.id"; +/** + * The type of process. + * + * @example web + * + * @note CloudFoundry applications can consist of multiple jobs. Usually the + * main process will be of type `web`. There can be additional background + * tasks or side-cars with different process types. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_PROCESS_TYPE: "cloudfoundry.process.type"; +/** + * The guid of the CloudFoundry space the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_id`. This is the same value as + * reported by `cf space --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SPACE_ID: "cloudfoundry.space.id"; +/** + * The name of the CloudFoundry space the application is running in. + * + * @example my-space-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_name`. This is the same value as + * reported by `cf spaces`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SPACE_NAME: "cloudfoundry.space.name"; +/** + * A guid or another name describing the event source. + * + * @example cf/gorouter + * + * @note CloudFoundry defines the `source_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the component name, e.g. "gorouter", for + * CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.id` should be set to + * `spec.deployment/spec.name`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SYSTEM_ID: "cloudfoundry.system.id"; +/** + * A guid describing the concrete instance of the event source. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the vm id for CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.instance.id` should be set to `spec.id`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID: "cloudfoundry.system.instance.id"; +/** + * Deprecated, use `code.column.number` + * + * @example 16 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.column.number`. + */ +export declare const ATTR_CODE_COLUMN: "code.column"; +/** + * Deprecated, use `code.file.path` instead + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.file.path`. + */ +export declare const ATTR_CODE_FILEPATH: "code.filepath"; +/** + * Deprecated, use `code.function.name` instead + * + * @example "serveRequest" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +export declare const ATTR_CODE_FUNCTION: "code.function"; +/** + * Deprecated, use `code.line.number` instead + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.line.number`. + */ +export declare const ATTR_CODE_LINENO: "code.lineno"; +/** + * Deprecated, namespace is now included into `code.function.name` + * + * @example "com.example.MyHttpService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +export declare const ATTR_CODE_NAMESPACE: "code.namespace"; +/** + * The command used to run the container (i.e. the command name). + * + * @example otelcontribcol + * + * @note If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_COMMAND: "container.command"; +/** + * All the command arguments (including the command/executable itself) run by the container. + * + * @example ["otelcontribcol", "--config", "config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_COMMAND_ARGS: "container.command_args"; +/** + * The full command run by the container as a single string representing the full command. + * + * @example otelcontribcol --config config.yaml + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_COMMAND_LINE: "container.command_line"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example user + * @example kernel + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export declare const ATTR_CONTAINER_CPU_STATE: "container.cpu.state"; +/** + * Enum value "kernel" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CONTAINER_CPU_STATE_VALUE_KERNEL: "kernel"; +/** + * Enum value "system" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When CPU is used by the system (host OS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CONTAINER_CPU_STATE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CONTAINER_CPU_STATE_VALUE_USER: "user"; +/** + * The name of the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin used by the volume. + * + * @example pd.csi.storage.gke.io + * + * @note This can sometimes be referred to as a "driver" in CSI implementations. This should represent the `name` field of the GetPluginInfo RPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_CSI_PLUGIN_NAME: "container.csi.plugin.name"; +/** + * The unique volume ID returned by the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin. + * + * @example projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk + * + * @note This can sometimes be referred to as a "volume handle" in CSI implementations. This should represent the `Volume.volume_id` field in CSI spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_CSI_VOLUME_ID: "container.csi.volume.id"; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_ID: "container.id"; +/** + * Runtime specific image identifier. Usually a hash algorithm followed by a UUID. + * + * @example sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f + * + * @note Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect) endpoint. + * K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. + * The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_ID: "container.image.id"; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_NAME: "container.image.name"; +/** + * Repo digests of the container image as provided by the container runtime. + * + * @example ["example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb", "internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578"] + * + * @note [Docker](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_REPO_DIGESTS: "container.image.repo_digests"; +/** + * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_TAGS: "container.image.tags"; +/** + * Container labels, `` being the label name, the value being the label value. + * + * @example nginx + * + * @note For example, a docker container label `app` with value `nginx` **SHOULD** be recorded as the `container.label.app` attribute with value `"nginx"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_LABEL: (key: string) => string; +/** + * Deprecated, use `container.label` instead. + * + * @example nginx + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.label`. + */ +export declare const ATTR_CONTAINER_LABELS: (key: string) => string; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_NAME: "container.name"; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.runtime.name`. + */ +export declare const ATTR_CONTAINER_RUNTIME: "container.runtime"; +/** + * A description about the runtime which could include, for example details about the CRI/API version being used or other customisations. + * + * @example docker://19.3.1 - CRI: 1.22.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_RUNTIME_DESCRIPTION: "container.runtime.description"; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_RUNTIME_NAME: "container.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "1.0.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_RUNTIME_VERSION: "container.runtime.version"; +/** + * The logical CPU number [0..n-1] + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CPU_LOGICAL_NUMBER: "cpu.logical_number"; +/** + * The mode of the CPU + * + * @example user + * @example system + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CPU_MODE: "cpu.mode"; +/** + * Enum value "idle" for attribute {@link ATTR_CPU_MODE}. + * + * Idle + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_IDLE: "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_CPU_MODE}. + * + * Interrupt + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_INTERRUPT: "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_CPU_MODE}. + * + * IO Wait + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_IOWAIT: "iowait"; +/** + * Enum value "kernel" for attribute {@link ATTR_CPU_MODE}. + * + * Kernel + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_KERNEL: "kernel"; +/** + * Enum value "nice" for attribute {@link ATTR_CPU_MODE}. + * + * Nice + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_NICE: "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_CPU_MODE}. + * + * Steal + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_STEAL: "steal"; +/** + * Enum value "system" for attribute {@link ATTR_CPU_MODE}. + * + * System + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_CPU_MODE}. + * + * User + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_USER: "user"; +/** + * Value of the garbage collector collection generation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CPYTHON_GC_GENERATION: "cpython.gc.generation"; +/** + * Enum value 0 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPYTHON_GC_GENERATION_VALUE_GENERATION_0: 0; +/** + * Enum value 1 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPYTHON_GC_GENERATION_VALUE_GENERATION_1: 1; +/** + * Enum value 2 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPYTHON_GC_GENERATION_VALUE_GENERATION_2: 2; +/** + * Deprecated, use `cassandra.consistency.level` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.consistency.level`. + */ +export declare const ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL: "db.cassandra.consistency_level"; +/** + * Enum value "all" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL: "all"; +/** + * Enum value "any" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY: "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM: "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE: "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM: "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL: "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE: "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM: "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL: "serial"; +/** + * Enum value "three" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE: "three"; +/** + * Enum value "two" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO: "two"; +/** + * Deprecated, use `cassandra.coordinator.dc` instead. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.dc`. + */ +export declare const ATTR_DB_CASSANDRA_COORDINATOR_DC: "db.cassandra.coordinator.dc"; +/** + * Deprecated, use `cassandra.coordinator.id` instead. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.id`. + */ +export declare const ATTR_DB_CASSANDRA_COORDINATOR_ID: "db.cassandra.coordinator.id"; +/** + * Deprecated, use `cassandra.query.idempotent` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.query.idempotent`. + */ +export declare const ATTR_DB_CASSANDRA_IDEMPOTENCE: "db.cassandra.idempotence"; +/** + * Deprecated, use `cassandra.page.size` instead. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.page.size`. + */ +export declare const ATTR_DB_CASSANDRA_PAGE_SIZE: "db.cassandra.page_size"; +/** + * Deprecated, use `cassandra.speculative_execution.count` instead. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.speculative_execution.count`. + */ +export declare const ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: "db.cassandra.speculative_execution_count"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_CASSANDRA_TABLE: "db.cassandra.table"; +/** + * 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. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_CLIENT_CONNECTION_POOL_NAME: "db.client.connection.pool.name"; +/** + * The state of a connection in the pool + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_CLIENT_CONNECTION_STATE: "db.client.connection.state"; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE: "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTION_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +export declare const ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME: "db.client.connections.pool.name"; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +export declare const ATTR_DB_CLIENT_CONNECTIONS_STATE: "db.client.connections.state"; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE: "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTIONS_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export declare const ATTR_DB_CONNECTION_STRING: "db.connection_string"; +/** + * Deprecated, use `azure.client.id` instead. + * + * @example "3ba4827d-4422-483f-b59f-85b74211c11d" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.client.id`. + */ +export declare const ATTR_DB_COSMOSDB_CLIENT_ID: "db.cosmosdb.client_id"; +/** + * Deprecated, use `azure.cosmosdb.connection.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.connection.mode`. + */ +export declare const ATTR_DB_COSMOSDB_CONNECTION_MODE: "db.cosmosdb.connection_mode"; +/** + * Enum value "direct" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT: "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY: "gateway"; +/** + * Deprecated, use `cosmosdb.consistency.level` instead. + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.consistency.level`. + */ +export declare const ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL: "db.cosmosdb.consistency_level"; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS: "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX: "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL: "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION: "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG: "Strong"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_COSMOSDB_CONTAINER: "db.cosmosdb.container"; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_COSMOSDB_OPERATION_TYPE: "db.cosmosdb.operation_type"; +/** + * Enum value "batch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH: "batch"; +/** + * Enum value "create" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE: "create"; +/** + * Enum value "delete" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE: "delete"; +/** + * Enum value "execute" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE: "execute"; +/** + * Enum value "execute_javascript" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT: "execute_javascript"; +/** + * Enum value "head" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD: "head"; +/** + * Enum value "head_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED: "head_feed"; +/** + * Enum value "invalid" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID: "invalid"; +/** + * Enum value "patch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH: "patch"; +/** + * Enum value "query" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY: "query"; +/** + * Enum value "query_plan" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN: "query_plan"; +/** + * Enum value "read" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ: "read"; +/** + * Enum value "read_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED: "read_feed"; +/** + * Enum value "replace" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE: "replace"; +/** + * Enum value "upsert" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT: "upsert"; +/** + * Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.contacted_regions`. + */ +export declare const ATTR_DB_COSMOSDB_REGIONS_CONTACTED: "db.cosmosdb.regions_contacted"; +/** + * Deprecated, use `azure.cosmosdb.operation.request_charge` instead. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.request_charge`. + */ +export declare const ATTR_DB_COSMOSDB_REQUEST_CHARGE: "db.cosmosdb.request_charge"; +/** + * Deprecated, use `azure.cosmosdb.request.body.size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.request.body.size`. + */ +export declare const ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH: "db.cosmosdb.request_content_length"; +/** + * Deprecated, use `db.response.status_code` instead. + * + * @example 200 + * @example 201 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `db.response.status_code` instead. + */ +export declare const ATTR_DB_COSMOSDB_STATUS_CODE: "db.cosmosdb.status_code"; +/** + * Deprecated, use `azure.cosmosdb.response.sub_status_code` instead. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.response.sub_status_code`. + */ +export declare const ATTR_DB_COSMOSDB_SUB_STATUS_CODE: "db.cosmosdb.sub_status_code"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example e9106fc68e3044f0b1475b04bf4ffd5f + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_ELASTICSEARCH_CLUSTER_NAME: "db.elasticsearch.cluster.name"; +/** + * Deprecated, use `elasticsearch.node.name` instead. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `elasticsearch.node.name`. + */ +export declare const ATTR_DB_ELASTICSEARCH_NODE_NAME: "db.elasticsearch.node.name"; +/** + * Deprecated, use `db.operation.parameter` instead. + * + * @example test-index + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.parameter`. + */ +export declare const ATTR_DB_ELASTICSEARCH_PATH_PARTS: (key: string) => string; +/** + * Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + * + * @example "mysql-e26b99z.example.com" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + */ +export declare const ATTR_DB_INSTANCE_ID: "db.instance.id"; +/** + * Removed, no replacement at this time. + * + * @example org.postgresql.Driver + * @example com.microsoft.sqlserver.jdbc.SQLServerDriver + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_JDBC_DRIVER_CLASSNAME: "db.jdbc.driver_classname"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_MONGODB_COLLECTION: "db.mongodb.collection"; +/** + * Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute. + * + * @example "MSSQLSERVER" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_MSSQL_INSTANCE_NAME: "db.mssql.instance_name"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_NAME: "db.name"; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +export declare const ATTR_DB_OPERATION: "db.operation"; +/** + * A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note For example, a client-side maximum number of rows to read from the database + * **MAY** be recorded as the `db.operation.parameter.max_rows` attribute. + * + * `db.query.text` parameters **SHOULD** be captured using `db.query.parameter.` + * instead of `db.operation.parameter.`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_OPERATION_PARAMETER: (key: string) => string; +/** + * A database query parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note If a query parameter has no name and instead is referenced only by index, + * then `` **SHOULD** be the 0-based index. + * + * `db.query.parameter.` **SHOULD** match + * up with the parameterized placeholders present in `db.query.text`. + * + * It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * `db.query.parameter.` **SHOULD NOT** be captured on batch operations. + * + * Examples: + * + * - For a query `SELECT * FROM users where username = %s` with the parameter `"jdoe"`, + * the attribute `db.query.parameter.0` **SHOULD** be set to `"jdoe"`. + * - For a query `"SELECT * FROM users WHERE username = %(userName)s;` with parameter + * `userName = "jdoe"`, the attribute `db.query.parameter.userName` **SHOULD** be set to `"jdoe"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_QUERY_PARAMETER: (key: string) => string; +/** + * Deprecated, use `db.namespace` instead. + * + * @example 0 + * @example 1 + * @example 15 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Uncategorized. + */ +export declare const ATTR_DB_REDIS_DATABASE_INDEX: "db.redis.database_index"; +/** + * Number of rows returned by the operation. + * + * @example 10 + * @example 30 + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_RESPONSE_RETURNED_ROWS: "db.response.returned_rows"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`. + */ +export declare const ATTR_DB_SQL_TABLE: "db.sql.table"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Enum value "adabas" for attribute {@link ATTR_DB_SYSTEM}. + * + * Adabas (Adaptable Database System) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_ADABAS: "adabas"; +/** + * Enum value "cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `intersystems_cache` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `intersystems_cache`. + */ +export declare const DB_SYSTEM_VALUE_CACHE: "cache"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Cassandra + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_CASSANDRA: "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM}. + * + * ClickHouse + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_CLICKHOUSE: "clickhouse"; +/** + * Enum value "cloudscape" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export declare const DB_SYSTEM_VALUE_CLOUDSCAPE: "cloudscape"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CockroachDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COCKROACHDB: "cockroachdb"; +/** + * Enum value "coldfusion" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, no replacement at this time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export declare const DB_SYSTEM_VALUE_COLDFUSION: "coldfusion"; +/** + * Enum value "cosmosdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft Azure Cosmos DB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COSMOSDB: "cosmosdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Couchbase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COUCHBASE: "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CouchDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COUCHDB: "couchdb"; +/** + * Enum value "db2" for attribute {@link ATTR_DB_SYSTEM}. + * + * IBM Db2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_DB2: "db2"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Derby + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_DERBY: "derby"; +/** + * Enum value "dynamodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon DynamoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_DYNAMODB: "dynamodb"; +/** + * Enum value "edb" for attribute {@link ATTR_DB_SYSTEM}. + * + * EnterpriseDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_EDB: "edb"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * Elasticsearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_ELASTICSEARCH: "elasticsearch"; +/** + * Enum value "filemaker" for attribute {@link ATTR_DB_SYSTEM}. + * + * FileMaker + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_FILEMAKER: "filemaker"; +/** + * Enum value "firebird" for attribute {@link ATTR_DB_SYSTEM}. + * + * Firebird + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_FIREBIRD: "firebird"; +/** + * Enum value "firstsql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export declare const DB_SYSTEM_VALUE_FIRSTSQL: "firstsql"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Geode + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_GEODE: "geode"; +/** + * Enum value "h2" for attribute {@link ATTR_DB_SYSTEM}. + * + * H2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_H2: "h2"; +/** + * Enum value "hanadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP HANA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HANADB: "hanadb"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache HBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HBASE: "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Hive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HIVE: "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM}. + * + * HyperSQL DataBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HSQLDB: "hsqldb"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InfluxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INFLUXDB: "influxdb"; +/** + * Enum value "informix" for attribute {@link ATTR_DB_SYSTEM}. + * + * Informix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INFORMIX: "informix"; +/** + * Enum value "ingres" for attribute {@link ATTR_DB_SYSTEM}. + * + * Ingres + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INGRES: "ingres"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InstantDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INSTANTDB: "instantdb"; +/** + * Enum value "interbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INTERBASE: "interbase"; +/** + * Enum value "intersystems_cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterSystems Caché + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE: "intersystems_cache"; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MariaDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MARIADB: "mariadb"; +/** + * Enum value "maxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP MaxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MAXDB: "maxdb"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM}. + * + * Memcached + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MEMCACHED: "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MongoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MONGODB: "mongodb"; +/** + * Enum value "mssql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft SQL Server + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MSSQL: "mssql"; +/** + * Enum value "mssqlcompact" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, Microsoft SQL Server Compact is discontinued. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export declare const DB_SYSTEM_VALUE_MSSQLCOMPACT: "mssqlcompact"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM}. + * + * MySQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MYSQL: "mysql"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM}. + * + * Neo4j + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_NEO4J: "neo4j"; +/** + * Enum value "netezza" for attribute {@link ATTR_DB_SYSTEM}. + * + * Netezza + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_NETEZZA: "netezza"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * OpenSearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_OPENSEARCH: "opensearch"; +/** + * Enum value "oracle" for attribute {@link ATTR_DB_SYSTEM}. + * + * Oracle Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_ORACLE: "oracle"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Some other SQL database. Fallback only. See notes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_OTHER_SQL: "other_sql"; +/** + * Enum value "pervasive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Pervasive PSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_PERVASIVE: "pervasive"; +/** + * Enum value "pointbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * PointBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_POINTBASE: "pointbase"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM}. + * + * PostgreSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_POSTGRESQL: "postgresql"; +/** + * Enum value "progress" for attribute {@link ATTR_DB_SYSTEM}. + * + * Progress Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_PROGRESS: "progress"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM}. + * + * Redis + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_REDIS: "redis"; +/** + * Enum value "redshift" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon Redshift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_REDSHIFT: "redshift"; +/** + * Enum value "spanner" for attribute {@link ATTR_DB_SYSTEM}. + * + * Cloud Spanner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_SPANNER: "spanner"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM}. + * + * SQLite + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_SQLITE: "sqlite"; +/** + * Enum value "sybase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Sybase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_SYBASE: "sybase"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM}. + * + * Teradata + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_TERADATA: "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM}. + * + * Trino + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_TRINO: "trino"; +/** + * Enum value "vertica" for attribute {@link ATTR_DB_SYSTEM}. + * + * Vertica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_VERTICA: "vertica"; +/** + * Enum value "actian.ingres" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Actian Ingres](https://www.actian.com/databases/ingres/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_ACTIAN_INGRES: "actian.ingres"; +/** + * Enum value "aws.dynamodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_AWS_DYNAMODB: "aws.dynamodb"; +/** + * Enum value "aws.redshift" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon Redshift](https://aws.amazon.com/redshift/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_AWS_REDSHIFT: "aws.redshift"; +/** + * Enum value "azure.cosmosdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_AZURE_COSMOSDB: "azure.cosmosdb"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Cassandra](https://cassandra.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_CASSANDRA: "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [ClickHouse](https://clickhouse.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_CLICKHOUSE: "clickhouse"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [CockroachDB](https://www.cockroachlabs.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_COCKROACHDB: "cockroachdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Couchbase](https://www.couchbase.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_COUCHBASE: "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache CouchDB](https://couchdb.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_COUCHDB: "couchdb"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Derby](https://db.apache.org/derby/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_DERBY: "derby"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Elasticsearch](https://www.elastic.co/elasticsearch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_ELASTICSEARCH: "elasticsearch"; +/** + * Enum value "firebirdsql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Firebird](https://www.firebirdsql.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_FIREBIRDSQL: "firebirdsql"; +/** + * Enum value "gcp.spanner" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Google Cloud Spanner](https://cloud.google.com/spanner) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_GCP_SPANNER: "gcp.spanner"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Geode](https://geode.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_GEODE: "geode"; +/** + * Enum value "h2database" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [H2 Database](https://h2database.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_H2DATABASE: "h2database"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache HBase](https://hbase.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_HBASE: "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Hive](https://hive.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_HIVE: "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [HyperSQL Database](https://hsqldb.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_HSQLDB: "hsqldb"; +/** + * Enum value "ibm.db2" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Db2](https://www.ibm.com/db2) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_IBM_DB2: "ibm.db2"; +/** + * Enum value "ibm.informix" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Informix](https://www.ibm.com/products/informix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_IBM_INFORMIX: "ibm.informix"; +/** + * Enum value "ibm.netezza" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Netezza](https://www.ibm.com/products/netezza) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_IBM_NETEZZA: "ibm.netezza"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InfluxDB](https://www.influxdata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_INFLUXDB: "influxdb"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Instant](https://www.instantdb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_INSTANTDB: "instantdb"; +/** + * Enum value "intersystems.cache" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InterSystems Caché](https://www.intersystems.com/products/cache/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_INTERSYSTEMS_CACHE: "intersystems.cache"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Memcached](https://memcached.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_MEMCACHED: "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MongoDB](https://www.mongodb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_MONGODB: "mongodb"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Neo4j](https://neo4j.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_NEO4J: "neo4j"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [OpenSearch](https://opensearch.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_OPENSEARCH: "opensearch"; +/** + * Enum value "oracle.db" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Oracle Database](https://www.oracle.com/database/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_ORACLE_DB: "oracle.db"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * Some other SQL database. Fallback only. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_OTHER_SQL: "other_sql"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Redis](https://redis.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_REDIS: "redis"; +/** + * Enum value "sap.hana" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SAP_HANA: "sap.hana"; +/** + * Enum value "sap.maxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP MaxDB](https://maxdb.sap.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SAP_MAXDB: "sap.maxdb"; +/** + * Enum value "softwareag.adabas" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SOFTWAREAG_ADABAS: "softwareag.adabas"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SQLite](https://www.sqlite.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SQLITE: "sqlite"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Teradata](https://www.teradata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_TERADATA: "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Trino](https://trino.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_TRINO: "trino"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_USER: "db.user"; +/** + * Deprecated, use `deployment.environment.name` instead. + * + * @example staging + * @example production + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `deployment.environment.name`. + */ +export declare const ATTR_DEPLOYMENT_ENVIRONMENT: "deployment.environment"; +/** + * Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @example staging + * @example production + * + * @note `deployment.environment.name` does not affect the uniqueness constraints defined through + * the `service.namespace`, `service.name` and `service.instance.id` resource attributes. + * This implies that resources carrying the following attribute combinations **MUST** be + * considered to be identifying the same service: + * + * - `service.name=frontend`, `deployment.environment.name=production` + * - `service.name=frontend`, `deployment.environment.name=staging`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_ENVIRONMENT_NAME: "deployment.environment.name"; +/** + * The id of the deployment. + * + * @example 1208 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_ID: "deployment.id"; +/** + * The name of the deployment. + * + * @example deploy my app + * @example deploy-frontend + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_NAME: "deployment.name"; +/** + * The status of the deployment. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_STATUS: "deployment.status"; +/** + * Enum value "failed" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DEPLOYMENT_STATUS_VALUE_FAILED: "failed"; +/** + * Enum value "succeeded" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * succeeded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DEPLOYMENT_STATUS_VALUE_SUCCEEDED: "succeeded"; +/** + * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example destination.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the source side, and when communicating through an intermediary, `destination.address` **SHOULD** represent the destination address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DESTINATION_ADDRESS: "destination.address"; +/** + * Destination port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DESTINATION_PORT: "destination.port"; +/** + * A unique identifier representing the device + * + * @example 123456789012345 + * @example 01:23:45:67:89:AB + * + * @note Its value **SHOULD** be identical for all apps on a device and it **SHOULD NOT** change if an app is uninstalled and re-installed. + * However, it might be resettable by the user for all apps on a device. + * Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) **MAY** be used as values. + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * > [!WARNING]> This attribute may contain sensitive (PII) information. 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.> Due to these reasons, this identifier is not recommended for consumer applications and will likely result in rejection from both Google Play and App Store. + * > However, it may be appropriate for specific enterprise scenarios, such as kiosk devices or enterprise-managed devices, with appropriate compliance clearance. + * > Any instrumentation providing this identifier **> MUST**> implement it as an opt-in feature.> See [`app.installation.id`](/docs/registry/attributes/app.md#app-installation-id)> for a more privacy-preserving alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_ID: "device.id"; +/** + * The name of the device manufacturer + * + * @example Apple + * @example Samsung + * + * @note The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps **SHOULD** hardcode the value `Apple`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_MANUFACTURER: "device.manufacturer"; +/** + * The model identifier for the device + * + * @example iPhone3,4 + * @example SM-G920F + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_MODEL_IDENTIFIER: "device.model.identifier"; +/** + * The marketing name for the device model + * + * @example iPhone 6s Plus + * @example Samsung Galaxy S6 + * + * @note It's recommended this value represents a human-readable version of the device model rather than a machine-readable alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_MODEL_NAME: "device.model.name"; +/** + * The disk IO operation direction. + * + * @example read + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DISK_IO_DIRECTION: "disk.io.direction"; +/** + * Enum value "read" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DISK_IO_DIRECTION_VALUE_READ: "read"; +/** + * Enum value "write" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DISK_IO_DIRECTION_VALUE_WRITE: "write"; +/** + * The list of IPv4 or IPv6 addresses resolved during DNS lookup. + * + * @example ["10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DNS_ANSWERS: "dns.answers"; +/** + * The name being queried. + * + * @example www.example.com + * @example opentelemetry.io + * + * @note The name represents the queried domain name as it appears in the DNS query without any additional normalization. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DNS_QUESTION_NAME: "dns.question.name"; +/** + * Represents the human-readable identifier of the node/instance to which a request was routed. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ELASTICSEARCH_NODE_NAME: "elasticsearch.node.name"; +/** + * Unique identifier of an end user in the system. It maybe a username, email address, or other identifier. + * + * @example username + * + * @note Unique identifier of an end user in the system. + * + * > [!Warning] + * > This field contains sensitive (PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ENDUSER_ID: "enduser.id"; +/** + * Pseudonymous identifier of an end user. This identifier should be a random value that is not directly linked or associated with the end user's actual identity. + * + * @example QdH5CAWJgqVT4rOr0qtumf + * + * @note Pseudonymous identifier of an end user. + * + * > [!Warning] + * > This field contains sensitive (linkable PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ENDUSER_PSEUDO_ID: "enduser.pseudo.id"; +/** + * Deprecated, use `user.roles` instead. + * + * @example "admin" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `user.roles` instead. + */ +export declare const ATTR_ENDUSER_ROLE: "enduser.role"; +/** + * Deprecated, no replacement at this time. + * + * @example "read:message, write:files" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_ENDUSER_SCOPE: "enduser.scope"; +/** + * A message providing more detail about an error in human-readable form. + * + * @example Unexpected input type: string + * @example The user has exceeded their storage quota + * + * @note `error.message` should provide additional context and detail about an error. + * It is NOT **RECOMMENDED** to duplicate the value of `error.type` in `error.message`. + * It is also NOT **RECOMMENDED** to duplicate the value of `exception.message` in `error.message`. + * + * `error.message` is NOT **RECOMMENDED** for metrics or spans due to its unbounded cardinality and overlap with span status. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ERROR_MESSAGE: "error.message"; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated The value of this attribute **MUST** now be set as the value of the EventName field on the LogRecord to indicate that the LogRecord represents an Event. + */ +export declare const ATTR_EVENT_NAME: "event.name"; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_COLDSTART: "faas.coldstart"; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @example "0/5 * * * ? *" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_CRON: "faas.cron"; +/** + * 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. + * + * @example myBucketName + * @example myDbName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_COLLECTION: "faas.document.collection"; +/** + * 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. + * + * @example myFile.txt + * @example myTableName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_NAME: "faas.document.name"; +/** + * Describes the type of the operation that was performed on the data. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_OPERATION: "faas.document.operation"; +/** + * Enum value "delete" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is deleted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_DOCUMENT_OPERATION_VALUE_DELETE: "delete"; +/** + * Enum value "edit" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is modified. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_DOCUMENT_OPERATION_VALUE_EDIT: "edit"; +/** + * Enum value "insert" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When a new object is created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_DOCUMENT_OPERATION_VALUE_INSERT: "insert"; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_TIME: "faas.document.time"; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de + * + * @note - **AWS Lambda:** Use the (full) log stream name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INSTANCE: "faas.instance"; +/** + * The invocation ID of the current function invocation. + * + * @example "af9d5aa4-a685-4c5f-a22b-444f80b3cc28" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOCATION_ID: "faas.invocation_id"; +/** + * The name of the invoked function. + * + * @example "my-function" + * + * @note **SHOULD** be equal to the `faas.name` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOKED_NAME: "faas.invoked_name"; +/** + * The cloud provider of the invoked function. + * + * @note **SHOULD** be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOKED_PROVIDER: "faas.invoked_provider"; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD: "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_AWS: "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_AZURE: "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_GCP: "gcp"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD: "tencent_cloud"; +/** + * The cloud region of the invoked function. + * + * @example "eu-central-1" + * + * @note **SHOULD** be equal to the `cloud.region` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOKED_REGION: "faas.invoked_region"; +/** + * The amount of memory available to the serverless function converted to Bytes. + * + * @example 134217728 + * + * @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 (which must be multiplied by 1,048,576). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_MAX_MEMORY: "faas.max_memory"; +/** + * The name of the single function that this runtime instance executes. + * + * @example my-function + * @example myazurefunctionapp/some-function-name + * + * @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.name`](/docs/general/attributes.md#source-code-attributes) + * span attributes). + * + * For some cloud providers, the above definition is ambiguous. The following + * definition of function name **MUST** be used for this attribute + * (and consequently the span name) for the listed cloud providers/products: + * + * - **Azure:** The full name `/`, i.e., function app name + * followed by a forward slash followed by the function name (this form + * can also be seen in the resource JSON for the function). + * This means that a span attribute **MUST** be used, as an Azure function + * app can host multiple functions that would usually share + * a TracerProvider (see also the `cloud.resource_id` attribute). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_NAME: "faas.name"; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_TIME: "faas.time"; +/** + * Type of the trigger which caused this function invocation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_TRIGGER: "faas.trigger"; +/** + * Enum value "datasource" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A response to some data source operation such as a database or filesystem read/write + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_DATASOURCE: "datasource"; +/** + * Enum value "http" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * To provide an answer to an inbound HTTP request + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_HTTP: "http"; +/** + * Enum value "other" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * If none of the others apply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_OTHER: "other"; +/** + * Enum value "pubsub" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is set to be executed when messages are sent to a messaging system + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_PUBSUB: "pubsub"; +/** + * Enum value "timer" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is scheduled to be executed regularly + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_TIMER: "timer"; +/** + * The immutable version of the function being executed. + * + * @example 26 + * @example pinkfroid-00002 + * + * @note Depending on the cloud provider and platform, use: + * + * - **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + * (an integer represented as a decimal string). + * - **Google Cloud Run (Services):** The [revision](https://cloud.google.com/run/docs/managing/revisions) + * (i.e., the function name plus the revision suffix). + * - **Google Cloud Functions:** The value of the + * [`K_REVISION` environment variable](https://cloud.google.com/run/docs/container-contract#services-env-vars). + * - **Azure Functions:** Not applicable. Do not set this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_VERSION: "faas.version"; +/** + * The unique identifier for the flag evaluation context. For example, the targeting key. + * + * @example 5157782b-2203-4c80-a857-dbbd5e7761db + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_CONTEXT_ID: "feature_flag.context.id"; +/** + * Deprecated, use `error.message` instead. + * + * @example Flag `header-color` expected type `string` but found type `number` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `error.message`. + */ +export declare const ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE: "feature_flag.evaluation.error.message"; +/** + * Deprecated, use `feature_flag.result.reason` instead. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.reason`. + */ +export declare const ATTR_FEATURE_FLAG_EVALUATION_REASON: "feature_flag.evaluation.reason"; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED: "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT: "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED: "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR: "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT: "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE: "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC: "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH: "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN: "unknown"; +/** + * The lookup key of the feature flag. + * + * @example logo-color + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_KEY: "feature_flag.key"; +/** + * Identifies the feature flag provider. + * + * @example Flag Manager + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_PROVIDER_NAME: "feature_flag.provider.name"; +/** + * The reason code which shows how a feature flag value was determined. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_RESULT_REASON: "feature_flag.result.reason"; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_CACHED: "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_DEFAULT: "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_DISABLED: "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_ERROR: "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_SPLIT: "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_STALE: "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_STATIC: "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_TARGETING_MATCH: "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_UNKNOWN: "unknown"; +/** + * The evaluated value of the feature flag. + * + * @example #ff0000 + * @example true + * @example 3 + * + * @note With some feature flag providers, feature flag results can be quite large or contain private or sensitive details. + * Because of this, `feature_flag.result.variant` is often the preferred attribute if it is available. + * + * It may be desirable to redact or otherwise limit the size and scope of `feature_flag.result.value` if possible. + * Because the evaluated flag value is unstructured and may be any type, it is left to the instrumentation author to determine how best to achieve this. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_RESULT_VALUE: "feature_flag.result.value"; +/** + * A semantic identifier for an evaluated flag value. + * + * @example red + * @example true + * @example on + * + * @note A semantic identifier, commonly referred to as a variant, provides a means + * for referring to a value without including the value itself. This can + * provide additional context for understanding the meaning behind a value. + * For example, the variant `red` maybe be used for the value `#c05543`. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_RESULT_VARIANT: "feature_flag.result.variant"; +/** + * The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs. + * + * @example proj-1 + * @example ab98sgs + * @example service1/dev + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_SET_ID: "feature_flag.set.id"; +/** + * Deprecated, use `feature_flag.result.variant` instead. + * + * @example red + * @example true + * @example on + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.variant`. + */ +export declare const ATTR_FEATURE_FLAG_VARIANT: "feature_flag.variant"; +/** + * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset. + * + * @example 1 + * @example 01ABCDEF + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_VERSION: "feature_flag.version"; +/** + * Time when the file was last accessed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_ACCESSED: "file.accessed"; +/** + * Array of file attributes. + * + * @example ["readonly", "hidden"] + * + * @note Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected for this attribute: `archive`, `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, `write`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_ATTRIBUTES: "file.attributes"; +/** + * Time when the file attributes or metadata was last changed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note `file.changed` captures the time when any of the file's properties or attributes (including the content) are changed, while `file.modified` captures the timestamp when the file content is modified. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_CHANGED: "file.changed"; +/** + * Time when the file was created, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_CREATED: "file.created"; +/** + * Directory where the file is located. It should include the drive letter, when appropriate. + * + * @example /home/user + * @example C:\\Program Files\\MyApp + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_DIRECTORY: "file.directory"; +/** + * File extension, excluding the leading dot. + * + * @example png + * @example gz + * + * @note When the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_EXTENSION: "file.extension"; +/** + * Name of the fork. A fork is additional data associated with a filesystem object. + * + * @example Zone.Identifier + * + * @note On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. + * On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: C:\\path\\to\\filename.extension:some_fork_name, and some_fork_name is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_FORK_NAME: "file.fork_name"; +/** + * Primary Group ID (GID) of the file. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_GROUP_ID: "file.group.id"; +/** + * Primary group name of the file. + * + * @example users + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_GROUP_NAME: "file.group.name"; +/** + * Inode representing the file in the filesystem. + * + * @example 256383 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_INODE: "file.inode"; +/** + * Mode of the file in octal representation. + * + * @example 0640 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_MODE: "file.mode"; +/** + * Time when the file content was last modified, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_MODIFIED: "file.modified"; +/** + * Name of the file including the extension, without the directory. + * + * @example example.png + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_NAME: "file.name"; +/** + * The user ID (UID) or security identifier (SID) of the file owner. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_OWNER_ID: "file.owner.id"; +/** + * Username of the file owner. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_OWNER_NAME: "file.owner.name"; +/** + * Full path to the file, including the file name. It should include the drive letter, when appropriate. + * + * @example /home/alice/example.png + * @example C:\\Program Files\\MyApp\\myapp.exe + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_PATH: "file.path"; +/** + * File size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_SIZE: "file.size"; +/** + * Path to the target of a symbolic link. + * + * @example /usr/bin/python3 + * + * @note This attribute is only applicable to symbolic links. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH: "file.symbolic_link.target_path"; +/** + * The container within GCP where the AppHub application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_APPLICATION_CONTAINER: "gcp.apphub.application.container"; +/** + * The name of the application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_APPLICATION_ID: "gcp.apphub.application.id"; +/** + * The GCP zone or region where the application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_APPLICATION_LOCATION: "gcp.apphub.application.location"; +/** + * Criticality of a service indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE: "gcp.apphub.service.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Environment of a service is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE: "gcp.apphub.service.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_SERVICE_ID: "gcp.apphub.service.id"; +/** + * Criticality of a workload indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE: "gcp.apphub.workload.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Environment of a workload is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE: "gcp.apphub.workload.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_WORKLOAD_ID: "gcp.apphub.workload.id"; +/** + * The container within GCP where the AppHub destination application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_CONTAINER: "gcp.apphub_destination.application.container"; +/** + * The name of the destination application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_ID: "gcp.apphub_destination.application.id"; +/** + * The GCP zone or region where the destination application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_LOCATION: "gcp.apphub_destination.application.location"; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE: "gcp.apphub_destination.service.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Software lifecycle stage of a destination service as defined [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE: "gcp.apphub_destination.service.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the destination service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ID: "gcp.apphub_destination.service.id"; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE: "gcp.apphub_destination.workload.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Environment of a destination workload is the stage of a software lifecycle as provided in the [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE: "gcp.apphub_destination.workload.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the destination workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ID: "gcp.apphub_destination.workload.id"; +/** + * Identifies the Google Cloud service for which the official client library is intended. + * + * @example appengine + * @example run + * @example firestore + * @example alloydb + * @example spanner + * + * @note Intended to be a stable identifier for Google Cloud client libraries that is uniform across implementation languages. The value should be derived from the canonical service domain for the service; for example, 'foo.googleapis.com' should result in a value of 'foo'. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_CLIENT_SERVICE: "gcp.client.service"; +/** + * The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example job-name-xxxx + * @example sample-job-mdw84 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_CLOUD_RUN_JOB_EXECUTION: "gcp.cloud_run.job.execution"; +/** + * The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example 0 + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX: "gcp.cloud_run.job.task_index"; +/** + * The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm). + * + * @example my-host1234.example.com + * @example sample-vm.us-west1-b.c.my-project.internal + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_GCE_INSTANCE_HOSTNAME: "gcp.gce.instance.hostname"; +/** + * The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names). + * + * @example instance-1 + * @example my-vm-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_GCE_INSTANCE_NAME: "gcp.gce.instance.name"; +/** + * Free-form description of the GenAI agent provided by the application. + * + * @example Helps with math problems + * @example Generates fiction stories + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_AGENT_DESCRIPTION: "gen_ai.agent.description"; +/** + * The unique identifier of the GenAI agent. + * + * @example asst_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_AGENT_ID: "gen_ai.agent.id"; +/** + * Human-readable name of the GenAI agent provided by the application. + * + * @example Math Tutor + * @example Fiction Writer + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_AGENT_NAME: "gen_ai.agent.name"; +/** + * Deprecated, use Event API to report completions contents. + * + * @example [{'role': 'assistant', 'content': 'The capital of France is Paris.'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_GEN_AI_COMPLETION: "gen_ai.completion"; +/** + * The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation. + * + * @example conv_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_CONVERSATION_ID: "gen_ai.conversation.id"; +/** + * The data source identifier. + * + * @example H7STPQYOND + * + * @note Data sources are used by AI agents and RAG applications to store grounding data. A data source may be an external database, object store, document collection, website, or any other storage system used by the GenAI agent or application. The `gen_ai.data_source.id` **SHOULD** match the identifier used by the GenAI system rather than a name specific to the external storage, such as a database or object store. Semantic conventions referencing `gen_ai.data_source.id` **MAY** also leverage additional attributes, such as `db.*`, to further identify and describe the data source. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_DATA_SOURCE_ID: "gen_ai.data_source.id"; +/** + * The number of dimensions the resulting output embeddings should have. + * + * @example 512 + * @example 1024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT: "gen_ai.embeddings.dimension.count"; +/** + * A free-form explanation for the assigned score provided by the evaluator. + * + * @example The response is factually accurate but lacks sufficient detail to fully address the question. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_EXPLANATION: "gen_ai.evaluation.explanation"; +/** + * The name of the evaluation metric used for the GenAI response. + * + * @example Relevance + * @example IntentResolution + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_NAME: "gen_ai.evaluation.name"; +/** + * Human readable label for evaluation. + * + * @example relevant + * @example not_relevant + * @example correct + * @example incorrect + * @example pass + * @example fail + * + * @note This attribute provides a human-readable interpretation of the evaluation score produced by an evaluator. For example, a score value of 1 could mean "relevant" in one evaluation system and "not relevant" in another, depending on the scoring range and evaluator. The label **SHOULD** have low cardinality. Possible values depend on the evaluation metric and evaluator used; implementations **SHOULD** document the possible values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_SCORE_LABEL: "gen_ai.evaluation.score.label"; +/** + * The evaluation score returned by the evaluator. + * + * @example 4.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_SCORE_VALUE: "gen_ai.evaluation.score.value"; +/** + * The chat history provided to the model as an input. + * + * @example [ + * { + * "role": "user", + * "parts": [ + * { + * "type": "text", + * "content": "Weather in Paris?" + * } + * ] + * }, + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "tool_call", + * "id": "call_VSPygqKTWdrhaFErNvMV18Yl", + * "name": "get_weather", + * "arguments": { + * "location": "Paris" + * } + * } + * ] + * }, + * { + * "role": "tool", + * "parts": [ + * { + * "type": "tool_call_response", + * "id": " call_VSPygqKTWdrhaFErNvMV18Yl", + * "result": "rainy, 57°F" + * } + * ] + * } + * ] + * + * @note Instrumentations **MUST** follow [Input messages JSON schema](/docs/gen-ai/gen-ai-input-messages.json). + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Messages **MUST** be provided in the order they were sent to the model. + * Instrumentations **MAY** provide a way for users to filter or truncate + * input messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_INPUT_MESSAGES: "gen_ai.input.messages"; +/** + * Deprecated, use `gen_ai.output.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.output.type`. + */ +export declare const ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT: "gen_ai.openai.request.response_format"; +/** + * Enum value "json_object" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON object response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT: "json_object"; +/** + * Enum value "json_schema" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON schema response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA: "json_schema"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * Text response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT: "text"; +/** + * Deprecated, use `gen_ai.request.seed`. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.request.seed`. + */ +export declare const ATTR_GEN_AI_OPENAI_REQUEST_SEED: "gen_ai.openai.request.seed"; +/** + * Deprecated, use `openai.request.service_tier`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.request.service_tier`. + */ +export declare const ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER: "gen_ai.openai.request.service_tier"; +/** + * Enum value "auto" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO: "auto"; +/** + * Enum value "default" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT: "default"; +/** + * Deprecated, use `openai.response.service_tier`. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.service_tier`. + */ +export declare const ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER: "gen_ai.openai.response.service_tier"; +/** + * Deprecated, use `openai.response.system_fingerprint`. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.system_fingerprint`. + */ +export declare const ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT: "gen_ai.openai.response.system_fingerprint"; +/** + * The name of the operation being performed. + * + * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_OPERATION_NAME: "gen_ai.operation.name"; +/** + * Enum value "chat" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_CHAT: "chat"; +/** + * Enum value "create_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Create GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT: "create_agent"; +/** + * Enum value "embeddings" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS: "embeddings"; +/** + * Enum value "execute_tool" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Execute a tool + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL: "execute_tool"; +/** + * Enum value "generate_content" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_GENERATE_CONTENT: "generate_content"; +/** + * Enum value "invoke_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Invoke GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT: "invoke_agent"; +/** + * Enum value "text_completion" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION: "text_completion"; +/** + * Messages returned by the model where each message represents a specific model response (choice, candidate). + * + * @example [ + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "text", + * "content": "The weather in Paris is currently rainy with a temperature of 57°F." + * } + * ], + * "finish_reason": "stop" + * } + * ] + * + * @note Instrumentations **MUST** follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json) + * + * Each message represents a single output choice/candidate generated by + * the model. Each message corresponds to exactly one generation + * (choice/candidate) and vice versa - one choice cannot be split across + * multiple messages or one message cannot contain parts from multiple choices. + * + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * output messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_OUTPUT_MESSAGES: "gen_ai.output.messages"; +/** + * Represents the content type requested by the client. + * + * @note This attribute **SHOULD** be used when the client requests output of a specific type. The model may return zero or more outputs of this type. + * This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file. + * Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_OUTPUT_TYPE: "gen_ai.output.type"; +/** + * Enum value "image" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Image + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_IMAGE: "image"; +/** + * Enum value "json" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * JSON object with known or unknown schema + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_JSON: "json"; +/** + * Enum value "speech" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Speech + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_SPEECH: "speech"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Plain text + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_TEXT: "text"; +/** + * Deprecated, use Event API to report prompt contents. + * + * @example [{'role': 'user', 'content': 'What is the capital of France?'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_GEN_AI_PROMPT: "gen_ai.prompt"; +/** + * The name of the prompt that uniquely identifies it. + * + * @example analyze-code + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_PROMPT_NAME: "gen_ai.prompt.name"; +/** + * The Generative AI provider as identified by the client or server instrumentation. + * + * @note The attribute **SHOULD** be set based on the instrumentation's best + * knowledge and may differ from the actual model provider. + * + * Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms + * are accessible using the OpenAI REST API and corresponding client libraries, + * but may proxy or host models from different providers. + * + * The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address` + * attributes may help identify the actual system in use. + * + * The `gen_ai.provider.name` attribute acts as a discriminator that + * identifies the GenAI telemetry format flavor specific to that provider + * within GenAI semantic conventions. + * It **SHOULD** be set consistently with provider-specific attributes and signals. + * For example, GenAI spans, metrics, and events related to AWS Bedrock + * should have the `gen_ai.provider.name` set to `aws.bedrock` and include + * applicable `aws.bedrock.*` attributes and are not expected to include + * `openai.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_PROVIDER_NAME: "gen_ai.provider.name"; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Anthropic](https://www.anthropic.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_ANTHROPIC: "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [AWS Bedrock](https://aws.amazon.com/bedrock) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_AWS_BEDROCK: "aws.bedrock"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_INFERENCE: "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_OPENAI: "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Cohere](https://cohere.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_COHERE: "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [DeepSeek](https://www.deepseek.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_DEEPSEEK: "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Gemini](https://cloud.google.com/products/gemini) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEMINI: "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEN_AI: "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Vertex AI](https://cloud.google.com/vertex-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GCP_VERTEX_AI: "gcp.vertex_ai"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Groq](https://groq.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GROQ: "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_IBM_WATSONX_AI: "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Mistral AI](https://mistral.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_MISTRAL_AI: "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [OpenAI](https://openai.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_OPENAI: "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Perplexity](https://www.perplexity.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_PERPLEXITY: "perplexity"; +/** + * Enum value "x_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [xAI](https://x.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_X_AI: "x_ai"; +/** + * The target number of candidate completions to return. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_CHOICE_COUNT: "gen_ai.request.choice.count"; +/** + * The encoding formats requested in an embeddings operation, if specified. + * + * @example ["base64"] + * @example ["float", "binary"] + * + * @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS: "gen_ai.request.encoding_formats"; +/** + * The frequency penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY: "gen_ai.request.frequency_penalty"; +/** + * The maximum number of tokens the model generates for a request. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_MAX_TOKENS: "gen_ai.request.max_tokens"; +/** + * The name of the GenAI model a request is being made to. + * + * @example "gpt-4" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_MODEL: "gen_ai.request.model"; +/** + * The presence penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY: "gen_ai.request.presence_penalty"; +/** + * Requests with same seed value more likely to return same result. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_SEED: "gen_ai.request.seed"; +/** + * List of sequences that the model will use to stop generating further tokens. + * + * @example ["forest", "lived"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES: "gen_ai.request.stop_sequences"; +/** + * The temperature setting for the GenAI request. + * + * @example 0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_TEMPERATURE: "gen_ai.request.temperature"; +/** + * The top_k sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_TOP_K: "gen_ai.request.top_k"; +/** + * The top_p sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_TOP_P: "gen_ai.request.top_p"; +/** + * Array of reasons the model stopped generating tokens, corresponding to each generation received. + * + * @example ["stop"] + * @example ["stop", "length"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_RESPONSE_FINISH_REASONS: "gen_ai.response.finish_reasons"; +/** + * The unique identifier for the completion. + * + * @example chatcmpl-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_RESPONSE_ID: "gen_ai.response.id"; +/** + * The name of the model that generated the response. + * + * @example gpt-4-0613 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_RESPONSE_MODEL: "gen_ai.response.model"; +/** + * Deprecated, use `gen_ai.provider.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.provider.name`. + */ +export declare const ATTR_GEN_AI_SYSTEM: "gen_ai.system"; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Anthropic + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_ANTHROPIC: "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * AWS Bedrock + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AWS_BEDROCK: "aws.bedrock"; +/** + * Enum value "az.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.inference`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE: "az.ai.inference"; +/** + * Enum value "az.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.openai`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI: "az.ai.openai"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZURE_AI_INFERENCE: "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZURE_AI_OPENAI: "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Cohere + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_COHERE: "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * DeepSeek + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_DEEPSEEK: "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GCP_GEMINI: "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GCP_GEN_AI: "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GCP_VERTEX_AI: "gcp.vertex_ai"; +/** + * Enum value "gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.gemini`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GEMINI: "gemini"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Groq + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GROQ: "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * IBM Watsonx AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI: "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Mistral AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_MISTRAL_AI: "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_OPENAI: "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Perplexity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_PERPLEXITY: "perplexity"; +/** + * Enum value "vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.vertex_ai`. + */ +export declare const GEN_AI_SYSTEM_VALUE_VERTEX_AI: "vertex_ai"; +/** + * Enum value "xai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * xAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_XAI: "xai"; +/** + * The system message or instructions provided to the GenAI model separately from the chat history. + * + * @example [ + * { + * "type": "text", + * "content": "You are an Agent that greet users, always use greetings tool to respond" + * } + * ] + * + * @example [ + * { + * "type": "text", + * "content": "You are a language translator." + * }, + * { + * "type": "text", + * "content": "Your mission is to translate text in English to French." + * } + * ] + * + * @note This attribute **SHOULD** be used when the corresponding provider or API + * allows to provide system instructions or messages separately from the + * chat history. + * + * Instructions that are part of the chat history **SHOULD** be recorded in + * `gen_ai.input.messages` attribute instead. + * + * Instrumentations **MUST** follow [System instructions JSON schema](/docs/gen-ai/gen-ai-system-instructions.json). + * + * When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * system instructions. + * + * > [!Warning] + * > This attribute may contain sensitive information. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_SYSTEM_INSTRUCTIONS: "gen_ai.system_instructions"; +/** + * The type of token being counted. + * + * @example input + * @example output + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOKEN_TYPE: "gen_ai.token.type"; +/** + * Enum value "input" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Input tokens (prompt, input, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_TOKEN_TYPE_VALUE_INPUT: "input"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `output`. + */ +export declare const GEN_AI_TOKEN_TYPE_VALUE_COMPLETION: "output"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_TOKEN_TYPE_VALUE_OUTPUT: "output"; +/** + * Parameters passed to the tool call. + * + * @example { + * "location": "San Francisco?", + * "date": "2025-10-01" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_CALL_ARGUMENTS: "gen_ai.tool.call.arguments"; +/** + * The tool call identifier. + * + * @example call_mszuSIzqtI65i1wAUOE8w5H4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_CALL_ID: "gen_ai.tool.call.id"; +/** + * The result returned by the tool call (if any and if execution was successful). + * + * @example { + * "temperature_range": { + * "high": 75, + * "low": 60 + * }, + * "conditions": "sunny" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_CALL_RESULT: "gen_ai.tool.call.result"; +/** + * The list of source system tool definitions available to the GenAI agent or model. + * + * @example [ + * { + * "type": "function", + * "name": "get_current_weather", + * "description": "Get the current weather in a given location", + * "parameters": { + * "type": "object", + * "properties": { + * "location": { + * "type": "string", + * "description": "The city and state, e.g. San Francisco, CA" + * }, + * "unit": { + * "type": "string", + * "enum": [ + * "celsius", + * "fahrenheit" + * ] + * } + * }, + * "required": [ + * "location", + * "unit" + * ] + * } + * } + * ] + * + * @note The value of this attribute matches source system tool definition format. + * + * It's expected to be an array of objects where each object represents a tool definition. In case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an array. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Since this attribute could be large, it's NOT **RECOMMENDED** to populate + * it by default. Instrumentations **MAY** provide a way to enable + * populating this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_DEFINITIONS: "gen_ai.tool.definitions"; +/** + * The tool description. + * + * @example Multiply two numbers + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_DESCRIPTION: "gen_ai.tool.description"; +/** + * Name of the tool utilized by the agent. + * + * @example Flights + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_NAME: "gen_ai.tool.name"; +/** + * Type of the tool utilized by the agent + * + * @example function + * @example extension + * @example datastore + * + * @note Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems. + * Agent-side operations involve actions that are performed by the agent on the server or within the agent's controlled environment. + * Function: A tool executed on the client-side, where the agent generates parameters for a predefined function, and the client executes the logic. + * Client-side operations are actions taken on the user's end or within the client application. + * Datastore: A tool used by the agent to access and query structured or unstructured external data for retrieval-augmented tasks or knowledge updates. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_TYPE: "gen_ai.tool.type"; +/** + * Deprecated, use `gen_ai.usage.output_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.output_tokens`. + */ +export declare const ATTR_GEN_AI_USAGE_COMPLETION_TOKENS: "gen_ai.usage.completion_tokens"; +/** + * The number of tokens used in the GenAI input (prompt). + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_USAGE_INPUT_TOKENS: "gen_ai.usage.input_tokens"; +/** + * The number of tokens used in the GenAI response (completion). + * + * @example 180 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS: "gen_ai.usage.output_tokens"; +/** + * Deprecated, use `gen_ai.usage.input_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.input_tokens`. + */ +export declare const ATTR_GEN_AI_USAGE_PROMPT_TOKENS: "gen_ai.usage.prompt_tokens"; +/** + * Two-letter code representing continent’s name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_CONTINENT_CODE: "geo.continent.code"; +/** + * Enum value "AF" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Africa + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_AF: "AF"; +/** + * Enum value "AN" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Antarctica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_AN: "AN"; +/** + * Enum value "AS" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Asia + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_AS: "AS"; +/** + * Enum value "EU" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Europe + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_EU: "EU"; +/** + * Enum value "NA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * North America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_NA: "NA"; +/** + * Enum value "OC" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Oceania + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_OC: "OC"; +/** + * Enum value "SA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * South America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_SA: "SA"; +/** + * Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)). + * + * @example CA + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_COUNTRY_ISO_CODE: "geo.country.iso_code"; +/** + * Locality name. Represents the name of a city, town, village, or similar populated place. + * + * @example Montreal + * @example Berlin + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_LOCALITY_NAME: "geo.locality.name"; +/** + * Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example 45.505918 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_LOCATION_LAT: "geo.location.lat"; +/** + * Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example -73.61483 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_LOCATION_LON: "geo.location.lon"; +/** + * Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. + * + * @example 94040 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_POSTAL_CODE: "geo.postal_code"; +/** + * Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)). + * + * @example CA-QC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_REGION_ISO_CODE: "geo.region.iso_code"; +/** + * The type of memory. + * + * @example other + * @example stack + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GO_MEMORY_TYPE: "go.memory.type"; +/** + * Enum value "other" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory used by the Go runtime, excluding other categories of memory usage described in this enumeration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GO_MEMORY_TYPE_VALUE_OTHER: "other"; +/** + * Enum value "stack" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GO_MEMORY_TYPE_VALUE_STACK: "stack"; +/** + * The GraphQL document being executed. + * + * @example "query findBookById { bookById(id: ?) { name } }" + * + * @note The value may be sanitized to exclude sensitive information. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GRAPHQL_DOCUMENT: "graphql.document"; +/** + * The name of the operation being executed. + * + * @example "findBookById" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GRAPHQL_OPERATION_NAME: "graphql.operation.name"; +/** + * The type of the operation being executed. + * + * @example query + * @example mutation + * @example subscription + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GRAPHQL_OPERATION_TYPE: "graphql.operation.type"; +/** + * Enum value "mutation" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL mutation + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GRAPHQL_OPERATION_TYPE_VALUE_MUTATION: "mutation"; +/** + * Enum value "query" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL query + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GRAPHQL_OPERATION_TYPE_VALUE_QUERY: "query"; +/** + * Enum value "subscription" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL subscription + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION: "subscription"; +/** + * Unique identifier for the application + * + * @example 2daa2797-e42b-4624-9322-ec3f968df4da + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HEROKU_APP_ID: "heroku.app.id"; +/** + * Commit hash for the current release + * + * @example e6134959463efd8966b20e75b913cafe3f5ec + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HEROKU_RELEASE_COMMIT: "heroku.release.commit"; +/** + * Time and date the release was created + * + * @example 2022-10-23T18:00:42Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP: "heroku.release.creation_timestamp"; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ARCH: "host.arch"; +/** + * Enum value "amd64" for attribute {@link ATTR_HOST_ARCH}. + * + * AMD64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_AMD64: "amd64"; +/** + * Enum value "arm32" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM32 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_ARM32: "arm32"; +/** + * Enum value "arm64" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_ARM64: "arm64"; +/** + * Enum value "ia64" for attribute {@link ATTR_HOST_ARCH}. + * + * Itanium + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_IA64: "ia64"; +/** + * Enum value "ppc32" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_PPC32: "ppc32"; +/** + * Enum value "ppc64" for attribute {@link ATTR_HOST_ARCH}. + * + * 64-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_PPC64: "ppc64"; +/** + * Enum value "s390x" for attribute {@link ATTR_HOST_ARCH}. + * + * IBM z/Architecture + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_S390X: "s390x"; +/** + * Enum value "x86" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit x86 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_X86: "x86"; +/** + * The amount of level 2 memory cache available to the processor (in Bytes). + * + * @example 12288000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_CACHE_L2_SIZE: "host.cpu.cache.l2.size"; +/** + * Family or generation of the CPU. + * + * @example 6 + * @example PA-RISC 1.1e + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_FAMILY: "host.cpu.family"; +/** + * Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family. + * + * @example 6 + * @example 9000/778/B180L + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_MODEL_ID: "host.cpu.model.id"; +/** + * Model designation of the processor. + * + * @example 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_MODEL_NAME: "host.cpu.model.name"; +/** + * Stepping or core revisions. + * + * @example 1 + * @example r1p1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_STEPPING: "host.cpu.stepping"; +/** + * Processor manufacturer identifier. A maximum 12-character string. + * + * @example GenuineIntel + * + * @note [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_VENDOR_ID: "host.cpu.vendor.id"; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ID: "host.id"; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_ID: "host.image.id"; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_NAME: "host.image.name"; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_VERSION: "host.image.version"; +/** + * Available IP addresses of the host, excluding loopback interfaces. + * + * @example ["192.168.1.140", "fe80::abc2:4a28:737a:609e"] + * + * @note IPv4 Addresses **MUST** be specified in dotted-quad notation. IPv6 addresses **MUST** be specified in the [RFC 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IP: "host.ip"; +/** + * Available MAC addresses of the host, excluding loopback interfaces. + * + * @example ["AC-DE-48-23-45-67", "AC-DE-48-23-45-67-01-9F"] + * + * @note MAC Addresses **MUST** be represented in [IEEE RA hexadecimal form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): as hyphen-separated octets in uppercase hexadecimal form from most to least significant. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_MAC: "host.mac"; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_NAME: "host.name"; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_TYPE: "host.type"; +/** + * Deprecated, use `client.address` instead. + * + * @example "83.164.160.102" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `client.address`. + */ +export declare const ATTR_HTTP_CLIENT_IP: "http.client_ip"; +/** + * State of the HTTP connection in the HTTP connection pool. + * + * @example active + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_CONNECTION_STATE: "http.connection.state"; +/** + * Enum value "active" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * active state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_CONNECTION_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "idle" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * idle state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_CONNECTION_STATE_VALUE_IDLE: "idle"; +/** + * Deprecated, use `network.protocol.name` and `network.protocol.version` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split into `network.protocol.name` and `network.protocol.version` + */ +export declare const ATTR_HTTP_FLAVOR: "http.flavor"; +/** + * Enum value "1.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_1_0: "1.0"; +/** + * Enum value "1.1" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_1_1: "1.1"; +/** + * Enum value "2.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_2_0: "2.0"; +/** + * Enum value "3.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/3 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_3_0: "3.0"; +/** + * Enum value "QUIC" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * QUIC protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_QUIC: "QUIC"; +/** + * Enum value "SPDY" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * SPDY protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_SPDY: "SPDY"; +/** + * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage. + * + * @example www.example.org + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage. + */ +export declare const ATTR_HTTP_HOST: "http.host"; +/** + * Deprecated, use `http.request.method` instead. + * + * @example GET + * @example POST + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.method`. + */ +export declare const ATTR_HTTP_METHOD: "http.method"; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_REQUEST_BODY_SIZE: "http.request.body.size"; +/** + * Enum value "QUERY" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * QUERY method. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_QUERY: "QUERY"; +/** + * The total size of the request in bytes. This should be the total number of bytes sent over the wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request body if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_REQUEST_SIZE: "http.request.size"; +/** + * Deprecated, use `http.request.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.header.content-length`. + */ +export declare const ATTR_HTTP_REQUEST_CONTENT_LENGTH: "http.request_content_length"; +/** + * Deprecated, use `http.request.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.body.size`. + */ +export declare const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: "http.request_content_length_uncompressed"; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_RESPONSE_BODY_SIZE: "http.response.body.size"; +/** + * The total size of the response in bytes. This should be the total number of bytes sent over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and response body and trailers if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_RESPONSE_SIZE: "http.response.size"; +/** + * Deprecated, use `http.response.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.header.content-length`. + */ +export declare const ATTR_HTTP_RESPONSE_CONTENT_LENGTH: "http.response_content_length"; +/** + * Deprecated, use `http.response.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.body.size`. + */ +export declare const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: "http.response_content_length_uncompressed"; +/** + * Deprecated, use `url.scheme` instead. + * + * @example http + * @example https + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.scheme`. + */ +export declare const ATTR_HTTP_SCHEME: "http.scheme"; +/** + * Deprecated, use `server.address` instead. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_HTTP_SERVER_NAME: "http.server_name"; +/** + * Deprecated, use `http.response.status_code` instead. + * + * @example 200 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.status_code`. + */ +export declare const ATTR_HTTP_STATUS_CODE: "http.status_code"; +/** + * Deprecated, use `url.path` and `url.query` instead. + * + * @example /search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `url.path` and `url.query`. + */ +export declare const ATTR_HTTP_TARGET: "http.target"; +/** + * Deprecated, use `url.full` instead. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.full`. + */ +export declare const ATTR_HTTP_URL: "http.url"; +/** + * Deprecated, use `user_agent.original` instead. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `user_agent.original`. + */ +export declare const ATTR_HTTP_USER_AGENT: "http.user_agent"; +/** + * Design capacity in Watts-hours or Amper-hours + * + * @example 9.3Ah + * @example 50Wh + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BATTERY_CAPACITY: "hw.battery.capacity"; +/** + * Battery [chemistry](https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html), e.g. Lithium-Ion, Nickel-Cadmium, etc. + * + * @example Li-ion + * @example NiMH + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BATTERY_CHEMISTRY: "hw.battery.chemistry"; +/** + * The current state of the battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BATTERY_STATE: "hw.battery.state"; +/** + * Enum value "charging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Charging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_BATTERY_STATE_VALUE_CHARGING: "charging"; +/** + * Enum value "discharging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Discharging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_BATTERY_STATE_VALUE_DISCHARGING: "discharging"; +/** + * BIOS version of the hardware component + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BIOS_VERSION: "hw.bios_version"; +/** + * Driver version for the hardware component + * + * @example 10.2.1-3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_DRIVER_VERSION: "hw.driver_version"; +/** + * Type of the enclosure (useful for modular systems) + * + * @example Computer + * @example Storage + * @example Switch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_ENCLOSURE_TYPE: "hw.enclosure.type"; +/** + * Firmware version of the hardware component + * + * @example 2.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_FIRMWARE_VERSION: "hw.firmware_version"; +/** + * Type of task the GPU is performing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_GPU_TASK: "hw.gpu.task"; +/** + * Enum value "decoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Decoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_GPU_TASK_VALUE_DECODER: "decoder"; +/** + * Enum value "encoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Encoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_GPU_TASK_VALUE_ENCODER: "encoder"; +/** + * Enum value "general" for attribute {@link ATTR_HW_GPU_TASK}. + * + * General + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_GPU_TASK_VALUE_GENERAL: "general"; +/** + * An identifier for the hardware component, unique within the monitored host + * + * @example win32battery_battery_testsysa33_1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_ID: "hw.id"; +/** + * Type of limit for hardware components + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_LIMIT_TYPE: "hw.limit_type"; +/** + * Enum value "critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_CRITICAL: "critical"; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_DEGRADED: "degraded"; +/** + * Enum value "high.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_HIGH_CRITICAL: "high.critical"; +/** + * Enum value "high.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_HIGH_DEGRADED: "high.degraded"; +/** + * Enum value "low.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_LOW_CRITICAL: "low.critical"; +/** + * Enum value "low.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_LOW_DEGRADED: "low.degraded"; +/** + * Enum value "max" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Maximum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_MAX: "max"; +/** + * Enum value "throttled" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Throttled + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_THROTTLED: "throttled"; +/** + * Enum value "turbo" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Turbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_TURBO: "turbo"; +/** + * RAID Level of the logical disk + * + * @example RAID0+1 + * @example RAID5 + * @example RAID10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_LOGICAL_DISK_RAID_LEVEL: "hw.logical_disk.raid_level"; +/** + * State of the logical disk space usage + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_LOGICAL_DISK_STATE: "hw.logical_disk.state"; +/** + * Enum value "free" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Free + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LOGICAL_DISK_STATE_VALUE_FREE: "free"; +/** + * Enum value "used" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Used + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LOGICAL_DISK_STATE_VALUE_USED: "used"; +/** + * Type of the memory module + * + * @example DDR4 + * @example DDR5 + * @example LPDDR5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_MEMORY_TYPE: "hw.memory.type"; +/** + * Descriptive model name of the hardware component + * + * @example PERC H740P + * @example Intel(R) Core(TM) i7-10700K + * @example Dell XPS 15 Battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_MODEL: "hw.model"; +/** + * An easily-recognizable name for the hardware component + * + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_NAME: "hw.name"; +/** + * Logical addresses of the adapter (e.g. IP address, or WWPN) + * + * @example ["172.16.8.21", "57.11.193.42"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_NETWORK_LOGICAL_ADDRESSES: "hw.network.logical_addresses"; +/** + * Physical address of the adapter (e.g. MAC address, or WWNN) + * + * @example 00-90-F5-E9-7B-36 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_NETWORK_PHYSICAL_ADDRESS: "hw.network.physical_address"; +/** + * Unique identifier of the parent component (typically the `hw.id` attribute of the enclosure, or disk controller) + * + * @example dellStorage_perc_0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PARENT: "hw.parent"; +/** + * [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute of the physical disk + * + * @example Spin Retry Count + * @example Seek Error Rate + * @example Raw Read Error Rate + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PHYSICAL_DISK_SMART_ATTRIBUTE: "hw.physical_disk.smart_attribute"; +/** + * State of the physical disk endurance utilization + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PHYSICAL_DISK_STATE: "hw.physical_disk.state"; +/** + * Enum value "remaining" for attribute {@link ATTR_HW_PHYSICAL_DISK_STATE}. + * + * Remaining + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_PHYSICAL_DISK_STATE_VALUE_REMAINING: "remaining"; +/** + * Type of the physical disk + * + * @example HDD + * @example SSD + * @example 10K + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PHYSICAL_DISK_TYPE: "hw.physical_disk.type"; +/** + * Location of the sensor + * + * @example cpu0 + * @example ps1 + * @example INLET + * @example CPU0_DIE + * @example AMBIENT + * @example MOTHERBOARD + * @example PS0 V3_3 + * @example MAIN_12V + * @example CPU_VCORE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_SENSOR_LOCATION: "hw.sensor_location"; +/** + * Serial number of the hardware component + * + * @example CNFCP0123456789 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_SERIAL_NUMBER: "hw.serial_number"; +/** + * The current state of the component + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_STATE: "hw.state"; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_STATE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_DEGRADED: "degraded"; +/** + * Enum value "failed" for attribute {@link ATTR_HW_STATE}. + * + * Failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_FAILED: "failed"; +/** + * Enum value "needs_cleaning" for attribute {@link ATTR_HW_STATE}. + * + * Needs Cleaning + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_NEEDS_CLEANING: "needs_cleaning"; +/** + * Enum value "ok" for attribute {@link ATTR_HW_STATE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_OK: "ok"; +/** + * Enum value "predicted_failure" for attribute {@link ATTR_HW_STATE}. + * + * Predicted Failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_PREDICTED_FAILURE: "predicted_failure"; +/** + * Type of tape drive operation + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_TAPE_DRIVE_OPERATION_TYPE: "hw.tape_drive.operation_type"; +/** + * Enum value "clean" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Clean + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_CLEAN: "clean"; +/** + * Enum value "mount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Mount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_MOUNT: "mount"; +/** + * Enum value "unmount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Unmount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_UNMOUNT: "unmount"; +/** + * Type of the component + * + * @note Describes the category of the hardware component for which `hw.state` is being reported. For example, `hw.type=temperature` along with `hw.state=degraded` would indicate that the temperature of the hardware component has been reported as `degraded`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_TYPE: "hw.type"; +/** + * Enum value "battery" for attribute {@link ATTR_HW_TYPE}. + * + * Battery + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_BATTERY: "battery"; +/** + * Enum value "cpu" for attribute {@link ATTR_HW_TYPE}. + * + * CPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_CPU: "cpu"; +/** + * Enum value "disk_controller" for attribute {@link ATTR_HW_TYPE}. + * + * Disk controller + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_DISK_CONTROLLER: "disk_controller"; +/** + * Enum value "enclosure" for attribute {@link ATTR_HW_TYPE}. + * + * Enclosure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_ENCLOSURE: "enclosure"; +/** + * Enum value "fan" for attribute {@link ATTR_HW_TYPE}. + * + * Fan + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_FAN: "fan"; +/** + * Enum value "gpu" for attribute {@link ATTR_HW_TYPE}. + * + * GPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_GPU: "gpu"; +/** + * Enum value "logical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Logical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_LOGICAL_DISK: "logical_disk"; +/** + * Enum value "memory" for attribute {@link ATTR_HW_TYPE}. + * + * Memory + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_MEMORY: "memory"; +/** + * Enum value "network" for attribute {@link ATTR_HW_TYPE}. + * + * Network + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_NETWORK: "network"; +/** + * Enum value "physical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Physical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_PHYSICAL_DISK: "physical_disk"; +/** + * Enum value "power_supply" for attribute {@link ATTR_HW_TYPE}. + * + * Power supply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_POWER_SUPPLY: "power_supply"; +/** + * Enum value "tape_drive" for attribute {@link ATTR_HW_TYPE}. + * + * Tape drive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_TAPE_DRIVE: "tape_drive"; +/** + * Enum value "temperature" for attribute {@link ATTR_HW_TYPE}. + * + * Temperature + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_TEMPERATURE: "temperature"; +/** + * Enum value "voltage" for attribute {@link ATTR_HW_TYPE}. + * + * Voltage + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_VOLTAGE: "voltage"; +/** + * Vendor name of the hardware component + * + * @example Dell + * @example HP + * @example Intel + * @example AMD + * @example LSI + * @example Lenovo + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_VENDOR: "hw.vendor"; +/** + * This attribute represents the state of the application. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_IOS_APP_STATE: "ios.app.state"; +/** + * Enum value "active" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_INACTIVE: "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_TERMINATE: "terminate"; +/** + * Deprecated. Use the `ios.app.state` attribute. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `ios.app.state`. + */ +export declare const ATTR_IOS_STATE: "ios.state"; +/** + * Enum value "active" for attribute {@link ATTR_IOS_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_INACTIVE: "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_TERMINATE: "terminate"; +/** + * Protocol version, as specified in the `jsonrpc` property of the request and its corresponding response. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JSONRPC_PROTOCOL_VERSION: "jsonrpc.protocol.version"; +/** + * A string representation of the `id` property of the request and its corresponding response. + * + * @example 10 + * @example request-7 + * + * @note Under the [JSON-RPC specification](https://www.jsonrpc.org/specification), the `id` property may be a string, number, null, or omitted entirely. When omitted, the request is treated as a notification. Using `null` is not equivalent to omitting the `id`, but it is discouraged. + * Instrumentations **SHOULD NOT** capture this attribute when the `id` is `null` or omitted. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JSONRPC_REQUEST_ID: "jsonrpc.request.id"; +/** + * Name of the buffer pool. + * + * @example mapped + * @example direct + * + * @note Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JVM_BUFFER_POOL_NAME: "jvm.buffer.pool.name"; +/** + * Name of the garbage collector cause. + * + * @example System.gc() + * @example Allocation Failure + * + * @note Garbage collector cause is generally obtained via [GarbageCollectionNotificationInfo#getGcCause()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcCause()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JVM_GC_CAUSE: "jvm.gc.cause"; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CLUSTER_NAME: "k8s.cluster.name"; +/** + * A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note K8s doesn't have support for obtaining a cluster ID. If this is ever + * added, we will recommend collecting the `k8s.cluster.uid` through the + * official APIs. In the meantime, we are able to use the `uid` of the + * `kube-system` namespace as a proxy for cluster ID. Read on for the + * rationale. + * + * Every object created in a K8s cluster is assigned a distinct UID. The + * `kube-system` namespace is used by Kubernetes itself and will exist + * for the lifetime of the cluster. Using the `uid` of the `kube-system` + * namespace is a reasonable proxy for the K8s ClusterID as it will only + * change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are + * UUIDs as standardized by + * [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html). + * Which states: + * + * > If generated according to one of the mechanisms defined in Rec. + * > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be + * > different from all other UUIDs generated before 3603 A.D., or is + * > extremely likely to be different (depending on the mechanism chosen). + * + * Therefore, UIDs between clusters should be extremely unlikely to + * conflict. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CLUSTER_UID: "k8s.cluster.uid"; +/** + * The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`). + * + * @example redis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_NAME: "k8s.container.name"; +/** + * Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_RESTART_COUNT: "k8s.container.restart_count"; +/** + * Last terminated reason of the Container. + * + * @example Evicted + * @example Error + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON: "k8s.container.status.last_terminated_reason"; +/** + * The reason for the container state. Corresponds to the `reason` field of the: [K8s ContainerStateWaiting](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core) or [K8s ContainerStateTerminated](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core) + * + * @example ContainerCreating + * @example CrashLoopBackOff + * @example CreateContainerConfigError + * @example ErrImagePull + * @example ImagePullBackOff + * @example OOMKilled + * @example Completed + * @example Error + * @example ContainerCannotRun + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_STATUS_REASON: "k8s.container.status.reason"; +/** + * Enum value "Completed" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container has completed execution. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_COMPLETED: "Completed"; +/** + * Enum value "ContainerCannotRun" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container cannot run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CANNOT_RUN: "ContainerCannotRun"; +/** + * Enum value "ContainerCreating" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is being created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CREATING: "ContainerCreating"; +/** + * Enum value "CrashLoopBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is in a crash loop back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CRASH_LOOP_BACK_OFF: "CrashLoopBackOff"; +/** + * Enum value "CreateContainerConfigError" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error creating the container configuration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CREATE_CONTAINER_CONFIG_ERROR: "CreateContainerConfigError"; +/** + * Enum value "ErrImagePull" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error pulling the container image. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_ERR_IMAGE_PULL: "ErrImagePull"; +/** + * Enum value "Error" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error with the container. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_ERROR: "Error"; +/** + * Enum value "ImagePullBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container image pull is in back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_IMAGE_PULL_BACK_OFF: "ImagePullBackOff"; +/** + * Enum value "OOMKilled" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container was killed due to out of memory. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_OOM_KILLED: "OOMKilled"; +/** + * The state of the container. [K8s ContainerState](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core) + * + * @example terminated + * @example running + * @example waiting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_STATUS_STATE: "k8s.container.status.state"; +/** + * Enum value "running" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_STATE_VALUE_RUNNING: "running"; +/** + * Enum value "terminated" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container has terminated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_STATE_VALUE_TERMINATED: "terminated"; +/** + * Enum value "waiting" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is waiting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_STATE_VALUE_WAITING: "waiting"; +/** + * The cronjob annotation placed on the CronJob, the `` being the annotation name, the value being the annotation value. + * + * @example 4 + * @example + * + * @note Examples: + * + * - An annotation `retries` with value `4` **SHOULD** be recorded as the + * `k8s.cronjob.annotation.retries` attribute with value `"4"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_ANNOTATION: (key: string) => string; +/** + * The label placed on the CronJob, the `` being the label name, the value being the label value. + * + * @example weekly + * @example + * + * @note Examples: + * + * - A label `type` with value `weekly` **SHOULD** be recorded as the + * `k8s.cronjob.label.type` attribute with value `"weekly"`. + * - A label `automated` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_LABEL: (key: string) => string; +/** + * The name of the CronJob. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_NAME: "k8s.cronjob.name"; +/** + * The UID of the CronJob. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_UID: "k8s.cronjob.uid"; +/** + * The annotation placed on the DaemonSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.daemonset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_ANNOTATION: (key: string) => string; +/** + * The label placed on the DaemonSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.daemonset.label.app` attribute with value `"guestbook"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_LABEL: (key: string) => string; +/** + * The name of the DaemonSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_NAME: "k8s.daemonset.name"; +/** + * The UID of the DaemonSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_UID: "k8s.daemonset.uid"; +/** + * The annotation placed on the Deployment, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.deployment.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_ANNOTATION: (key: string) => string; +/** + * The label placed on the Deployment, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.deployment.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_LABEL: (key: string) => string; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_NAME: "k8s.deployment.name"; +/** + * The UID of the Deployment. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_UID: "k8s.deployment.uid"; +/** + * The type of metric source for the horizontal pod autoscaler. + * + * @example Resource + * @example ContainerResource + * + * @note This attribute reflects the `type` field of spec.metrics[] in the HPA. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_METRIC_TYPE: "k8s.hpa.metric.type"; +/** + * The name of the horizontal pod autoscaler. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_NAME: "k8s.hpa.name"; +/** + * The API version of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example apps/v1 + * @example autoscaling/v2 + * + * @note This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_SCALETARGETREF_API_VERSION: "k8s.hpa.scaletargetref.api_version"; +/** + * The kind of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example Deployment + * @example StatefulSet + * + * @note This maps to the `kind` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_SCALETARGETREF_KIND: "k8s.hpa.scaletargetref.kind"; +/** + * The name of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example my-deployment + * @example my-statefulset + * + * @note This maps to the `name` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_SCALETARGETREF_NAME: "k8s.hpa.scaletargetref.name"; +/** + * The UID of the horizontal pod autoscaler. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_UID: "k8s.hpa.uid"; +/** + * The size (identifier) of the K8s huge page. + * + * @example 2Mi + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HUGEPAGE_SIZE: "k8s.hugepage.size"; +/** + * The annotation placed on the Job, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `number` with value `1` **SHOULD** be recorded + * as the `k8s.job.annotation.number` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_ANNOTATION: (key: string) => string; +/** + * The label placed on the Job, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example ci + * @example + * + * @note + * Examples: + * + * - A label `jobtype` with value `ci` **SHOULD** be recorded + * as the `k8s.job.label.jobtype` attribute with value `"ci"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_LABEL: (key: string) => string; +/** + * The name of the Job. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_NAME: "k8s.job.name"; +/** + * The UID of the Job. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_UID: "k8s.job.uid"; +/** + * The annotation placed on the Namespace, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `ttl` with value `0` **SHOULD** be recorded + * as the `k8s.namespace.annotation.ttl` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_ANNOTATION: (key: string) => string; +/** + * The label placed on the Namespace, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example default + * @example + * + * @note + * Examples: + * + * - A label `kubernetes.io/metadata.name` with value `default` **SHOULD** be recorded + * as the `k8s.namespace.label.kubernetes.io/metadata.name` attribute with value `"default"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_LABEL: (key: string) => string; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_NAME: "k8s.namespace.name"; +/** + * The phase of the K8s namespace. + * + * @example active + * @example terminating + * + * @note This attribute aligns with the `phase` field of the + * [K8s NamespaceStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_PHASE: "k8s.namespace.phase"; +/** + * Enum value "active" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Active namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NAMESPACE_PHASE_VALUE_ACTIVE: "active"; +/** + * Enum value "terminating" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Terminating namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NAMESPACE_PHASE_VALUE_TERMINATING: "terminating"; +/** + * The annotation placed on the Node, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note Examples: + * + * - An annotation `node.alpha.kubernetes.io/ttl` with value `0` **SHOULD** be recorded as + * the `k8s.node.annotation.node.alpha.kubernetes.io/ttl` attribute with value `"0"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_ANNOTATION: (key: string) => string; +/** + * The status of the condition, one of True, False, Unknown. + * + * @example true + * @example false + * @example unknown + * + * @note This attribute aligns with the `status` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_CONDITION_STATUS: "k8s.node.condition.status"; +/** + * Enum value "false" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_FALSE: "false"; +/** + * Enum value "true" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_TRUE: "true"; +/** + * Enum value "unknown" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_UNKNOWN: "unknown"; +/** + * The condition type of a K8s Node. + * + * @example Ready + * @example DiskPressure + * + * @note K8s Node conditions as described + * by [K8s documentation](https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition). + * + * This attribute aligns with the `type` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * The set of possible values is not limited to those listed here. Managed Kubernetes environments, + * or custom controllers **MAY** introduce additional node condition types. + * When this occurs, the exact value as reported by the Kubernetes API **SHOULD** be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_CONDITION_TYPE: "k8s.node.condition.type"; +/** + * Enum value "DiskPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the disk size—that is, if the disk capacity is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_DISK_PRESSURE: "DiskPressure"; +/** + * Enum value "MemoryPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the node memory—that is, if the node memory is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_MEMORY_PRESSURE: "MemoryPressure"; +/** + * Enum value "NetworkUnavailable" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The network for the node is not correctly configured + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_NETWORK_UNAVAILABLE: "NetworkUnavailable"; +/** + * Enum value "PIDPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the processes—that is, if there are too many processes on the node + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_PID_PRESSURE: "PIDPressure"; +/** + * Enum value "Ready" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The node is healthy and ready to accept pods + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_READY: "Ready"; +/** + * The label placed on the Node, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example arm64 + * @example + * + * @note Examples: + * + * - A label `kubernetes.io/arch` with value `arm64` **SHOULD** be recorded + * as the `k8s.node.label.kubernetes.io/arch` attribute with value `"arm64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_LABEL: (key: string) => string; +/** + * The name of the Node. + * + * @example node-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_NAME: "k8s.node.name"; +/** + * The UID of the Node. + * + * @example 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_UID: "k8s.node.uid"; +/** + * The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value. + * + * @example true + * @example x64 + * @example + * + * @note Examples: + * + * - An annotation `kubernetes.io/enforce-mountable-secrets` with value `true` **SHOULD** be recorded as + * the `k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets` attribute with value `"true"`. + * - An annotation `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.annotation.mycompany.io/arch` attribute with value `"x64"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_ANNOTATION: (key: string) => string; +/** + * Specifies the hostname of the Pod. + * + * @example collector-gateway + * + * @note The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. + * Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) + * for more information about this field. + * + * This attribute aligns with the `hostname` field of the + * [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_HOSTNAME: "k8s.pod.hostname"; +/** + * IP address allocated to the Pod. + * + * @example 172.18.0.2 + * + * @note This attribute aligns with the `podIP` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_IP: "k8s.pod.ip"; +/** + * The label placed on the Pod, the `` being the label name, the value being the label value. + * + * @example my-app + * @example x64 + * @example + * + * @note Examples: + * + * - A label `app` with value `my-app` **SHOULD** be recorded as + * the `k8s.pod.label.app` attribute with value `"my-app"`. + * - A label `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.label.mycompany.io/arch` attribute with value `"x64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_LABEL: (key: string) => string; +/** + * Deprecated, use `k8s.pod.label` instead. + * + * @example my-app + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.pod.label`. + */ +export declare const ATTR_K8S_POD_LABELS: (key: string) => string; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_NAME: "k8s.pod.name"; +/** + * The start timestamp of the Pod. + * + * @example 2025-12-04T08:41:03Z + * + * @note Date and time at which the object was acknowledged by the Kubelet. + * This is before the Kubelet pulled the container image(s) for the pod. + * + * This attribute aligns with the `startTime` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), + * in ISO 8601 (RFC 3339 compatible) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_START_TIME: "k8s.pod.start_time"; +/** + * The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Pending + * @example Running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_STATUS_PHASE: "k8s.pod.status.phase"; +/** + * Enum value "Failed" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_FAILED: "Failed"; +/** + * Enum value "Pending" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_PENDING: "Pending"; +/** + * Enum value "Running" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_RUNNING: "Running"; +/** + * Enum value "Succeeded" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_SUCCEEDED: "Succeeded"; +/** + * Enum value "Unknown" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_UNKNOWN: "Unknown"; +/** + * The reason for the pod state. Corresponds to the `reason` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Evicted + * @example NodeAffinity + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_STATUS_REASON: "k8s.pod.status.reason"; +/** + * Enum value "Evicted" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is evicted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_EVICTED: "Evicted"; +/** + * Enum value "NodeAffinity" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is in a status because of its node affinity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_NODE_AFFINITY: "NodeAffinity"; +/** + * Enum value "NodeLost" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The reason on a pod when its state cannot be confirmed as kubelet is unresponsive on the node it is (was) running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_NODE_LOST: "NodeLost"; +/** + * Enum value "Shutdown" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The node is shutdown + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_SHUTDOWN: "Shutdown"; +/** + * Enum value "UnexpectedAdmissionError" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod was rejected admission to the node because of an error during admission that could not be categorized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_UNEXPECTED_ADMISSION_ERROR: "UnexpectedAdmissionError"; +/** + * The UID of the Pod. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_UID: "k8s.pod.uid"; +/** + * The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.replicaset.annotation.replicas` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_ANNOTATION: (key: string) => string; +/** + * The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.replicaset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_LABEL: (key: string) => string; +/** + * The name of the ReplicaSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_NAME: "k8s.replicaset.name"; +/** + * The UID of the ReplicaSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_UID: "k8s.replicaset.uid"; +/** + * The name of the replication controller. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICATIONCONTROLLER_NAME: "k8s.replicationcontroller.name"; +/** + * The UID of the replication controller. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICATIONCONTROLLER_UID: "k8s.replicationcontroller.uid"; +/** + * The name of the resource quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_RESOURCEQUOTA_NAME: "k8s.resourcequota.name"; +/** + * The name of the K8s resource a resource quota defines. + * + * @example count/replicationcontrollers + * + * @note The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_RESOURCEQUOTA_RESOURCE_NAME: "k8s.resourcequota.resource_name"; +/** + * The UID of the resource quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_RESOURCEQUOTA_UID: "k8s.resourcequota.uid"; +/** + * The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.statefulset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_ANNOTATION: (key: string) => string; +/** + * The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.statefulset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_LABEL: (key: string) => string; +/** + * The name of the StatefulSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_NAME: "k8s.statefulset.name"; +/** + * The UID of the StatefulSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_UID: "k8s.statefulset.uid"; +/** + * The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object. + * + * @example gold.storageclass.storage.k8s.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STORAGECLASS_NAME: "k8s.storageclass.name"; +/** + * The name of the K8s volume. + * + * @example volume0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_VOLUME_NAME: "k8s.volume.name"; +/** + * The type of the K8s volume. + * + * @example emptyDir + * @example persistentVolumeClaim + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_VOLUME_TYPE: "k8s.volume.type"; +/** + * Enum value "configMap" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [configMap](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_CONFIG_MAP: "configMap"; +/** + * Enum value "downwardAPI" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [downwardAPI](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_DOWNWARD_API: "downwardAPI"; +/** + * Enum value "emptyDir" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * An [emptyDir](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_EMPTY_DIR: "emptyDir"; +/** + * Enum value "local" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [local](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_LOCAL: "local"; +/** + * Enum value "persistentVolumeClaim" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [persistentVolumeClaim](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM: "persistentVolumeClaim"; +/** + * Enum value "secret" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [secret](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_SECRET: "secret"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.state`. + */ +export declare const ATTR_LINUX_MEMORY_SLAB_STATE: "linux.memory.slab.state"; +/** + * Enum value "reclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE: "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE: "unreclaimable"; +/** + * The basename of the file. + * + * @example audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_NAME: "log.file.name"; +/** + * The basename of the file, with symlinks resolved. + * + * @example uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_NAME_RESOLVED: "log.file.name_resolved"; +/** + * The full path to the file. + * + * @example /var/log/mysql/audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_PATH: "log.file.path"; +/** + * The full path to the file, with symlinks resolved. + * + * @example /var/lib/docker/uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_PATH_RESOLVED: "log.file.path_resolved"; +/** + * The stream associated with the log. See below for a list of well-known values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_IOSTREAM: "log.iostream"; +/** + * Enum value "stderr" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Events from stderr stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LOG_IOSTREAM_VALUE_STDERR: "stderr"; +/** + * Enum value "stdout" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Logs from stdout stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LOG_IOSTREAM_VALUE_STDOUT: "stdout"; +/** + * The complete original Log Record. + * + * @example 77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - Something happened + * @example [INFO] 8/3/24 12:34:56 Something happened + * + * @note This value **MAY** be added when processing a Log Record which was originally transmitted as a string or equivalent data type AND the Body field of the Log Record does not contain the same value. (e.g. a syslog or a log record read from a file.) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_RECORD_ORIGINAL: "log.record.original"; +/** + * A unique identifier for the Log Record. + * + * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV + * + * @note If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records **MUST** have different values. + * The id **MAY** be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_RECORD_UID: "log.record.uid"; +/** + * Name of the logical partition that hosts a systems with a mainframe operating system. + * + * @example LPAR01 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MAINFRAME_LPAR_NAME: "mainframe.lpar.name"; +/** + * The name of the request or notification method. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_METHOD_NAME: "mcp.method.name"; +/** + * Enum value "completion/complete" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to complete a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE: "completion/complete"; +/** + * Enum value "elicitation/create" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request from the server to elicit additional information from the user via the client + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_ELICITATION_CREATE: "elicitation/create"; +/** + * Enum value "initialize" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to initialize the MCP client. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_INITIALIZE: "initialize"; +/** + * Enum value "logging/setLevel" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to set the logging level. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL: "logging/setLevel"; +/** + * Enum value "notifications/cancelled" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification cancelling a previously-issued request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED: "notifications/cancelled"; +/** + * Enum value "notifications/initialized" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the MCP client has been initialized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED: "notifications/initialized"; +/** + * Enum value "notifications/message" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a message has been received. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE: "notifications/message"; +/** + * Enum value "notifications/progress" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating the progress for a long-running operation. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS: "notifications/progress"; +/** + * Enum value "notifications/prompts/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of prompts has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED: "notifications/prompts/list_changed"; +/** + * Enum value "notifications/resources/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of resources has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED: "notifications/resources/list_changed"; +/** + * Enum value "notifications/resources/updated" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a resource has been updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED: "notifications/resources/updated"; +/** + * Enum value "notifications/roots/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of roots has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED: "notifications/roots/list_changed"; +/** + * Enum value "notifications/tools/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of tools has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED: "notifications/tools/list_changed"; +/** + * Enum value "ping" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to check that the other party is still alive. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_PING: "ping"; +/** + * Enum value "prompts/get" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to get a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_PROMPTS_GET: "prompts/get"; +/** + * Enum value "prompts/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list prompts available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_PROMPTS_LIST: "prompts/list"; +/** + * Enum value "resources/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resources available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_LIST: "resources/list"; +/** + * Enum value "resources/read" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to read a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_READ: "resources/read"; +/** + * Enum value "resources/subscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to subscribe to a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE: "resources/subscribe"; +/** + * Enum value "resources/templates/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resource templates available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST: "resources/templates/list"; +/** + * Enum value "resources/unsubscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to unsubscribe from resource updates. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE: "resources/unsubscribe"; +/** + * Enum value "roots/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list roots available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_ROOTS_LIST: "roots/list"; +/** + * Enum value "sampling/createMessage" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to create a sampling message. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE: "sampling/createMessage"; +/** + * Enum value "tools/call" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to call a tool. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_TOOLS_CALL: "tools/call"; +/** + * Enum value "tools/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list tools available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_TOOLS_LIST: "tools/list"; +/** + * The [version](https://modelcontextprotocol.io/specification/versioning) of the Model Context Protocol used. + * + * @example 2025-06-18 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_PROTOCOL_VERSION: "mcp.protocol.version"; +/** + * The value of the resource uri. + * + * @example postgres://database/customers/schema + * @example file:///home/user/documents/report.pdf + * + * @note This is a URI of the resource provided in the following requests or notifications: `resources/read`, `resources/subscribe`, `resources/unsubscribe`, or `notifications/resources/updated`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_RESOURCE_URI: "mcp.resource.uri"; +/** + * Identifies [MCP session](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management). + * + * @example 191c4850af6c49e08843a3f6c80e5046 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_SESSION_ID: "mcp.session.id"; +/** + * Deprecated, use `rpc.message.compressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.compressed_size`. + */ +export declare const ATTR_MESSAGE_COMPRESSED_SIZE: "message.compressed_size"; +/** + * Deprecated, use `rpc.message.id` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.id`. + */ +export declare const ATTR_MESSAGE_ID: "message.id"; +/** + * Deprecated, use `rpc.message.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.type`. + */ +export declare const ATTR_MESSAGE_TYPE: "message.type"; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGE_TYPE_VALUE_RECEIVED: "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGE_TYPE_VALUE_SENT: "SENT"; +/** + * Deprecated, use `rpc.message.uncompressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.uncompressed_size`. + */ +export declare const ATTR_MESSAGE_UNCOMPRESSED_SIZE: "message.uncompressed_size"; +/** + * The number of messages sent, received, or processed in the scope of the batching operation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_BATCH_MESSAGE_COUNT: "messaging.batch.message_count"; +/** + * A unique identifier for the client that consumes or produces a message. + * + * @example client-5 + * @example myhost@8742@s8083jm + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_CLIENT_ID: "messaging.client.id"; +/** + * The name of the consumer group with which a consumer is associated. + * + * @example my-group + * @example indexer + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.consumer.group.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_CONSUMER_GROUP_NAME: "messaging.consumer.group.name"; +/** + * A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_ANONYMOUS: "messaging.destination.anonymous"; +/** + * The message destination name + * + * @example MyQueue + * @example MyTopic + * + * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If + * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_NAME: "messaging.destination.name"; +/** + * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`. + * + * @example "1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_PARTITION_ID: "messaging.destination.partition.id"; +/** + * The name of the destination subscription from which a message is consumed. + * + * @example subscription-a + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.destination.subscription.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME: "messaging.destination.subscription.name"; +/** + * Low cardinality representation of the messaging destination name + * + * @example /customers/{customerId} + * + * @note Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_TEMPLATE: "messaging.destination.template"; +/** + * A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_TEMPORARY: "messaging.destination.temporary"; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export declare const ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS: "messaging.destination_publish.anonymous"; +/** + * Deprecated, no replacement at this time. + * + * @example MyQueue + * @example MyTopic + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export declare const ATTR_MESSAGING_DESTINATION_PUBLISH_NAME: "messaging.destination_publish.name"; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "$Default" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +export declare const ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP: "messaging.eventhubs.consumer.group"; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME: "messaging.eventhubs.message.enqueued_time"; +/** + * The ack deadline in seconds set for the modify ack deadline request. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE: "messaging.gcp_pubsub.message.ack_deadline"; +/** + * The ack id for a given message. + * + * @example "ack_id" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID: "messaging.gcp_pubsub.message.ack_id"; +/** + * The delivery attempt for a given message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT: "messaging.gcp_pubsub.message.delivery_attempt"; +/** + * The ordering key for a given message. If the attribute is not present, the message does not have an ordering key. + * + * @example "ordering_key" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY: "messaging.gcp_pubsub.message.ordering_key"; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "my-group" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +export declare const ATTR_MESSAGING_KAFKA_CONSUMER_GROUP: "messaging.kafka.consumer.group"; +/** + * Deprecated, use `messaging.destination.partition.id` instead. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Record string representation of the partition id in `messaging.destination.partition.id` attribute. + */ +export declare const ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION: "messaging.kafka.destination.partition"; +/** + * 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. + * + * @example "myKey" + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_KEY: "messaging.kafka.message.key"; +/** + * Deprecated, use `messaging.kafka.offset` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.kafka.offset`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET: "messaging.kafka.message.offset"; +/** + * A boolean that is true if the message is a tombstone. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE: "messaging.kafka.message.tombstone"; +/** + * The offset of a record in the corresponding Kafka partition. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_OFFSET: "messaging.kafka.offset"; +/** + * The size of the message body in bytes. + * + * @example 1439 + * + * @note This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed + * body size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_BODY_SIZE: "messaging.message.body.size"; +/** + * The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @example "MyConversationId" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_CONVERSATION_ID: "messaging.message.conversation_id"; +/** + * The size of the message body and metadata in bytes. + * + * @example 2738 + * + * @note This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed + * size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE: "messaging.message.envelope.size"; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @example "452a7c7c7c7048c2f887f61572b18fc2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_ID: "messaging.message.id"; +/** + * Deprecated, use `messaging.operation.type` instead. + * + * @example publish + * @example create + * @example process + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.operation.type`. + */ +export declare const ATTR_MESSAGING_OPERATION: "messaging.operation"; +/** + * The system-specific name of the messaging operation. + * + * @example ack + * @example nack + * @example send + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_OPERATION_NAME: "messaging.operation.name"; +/** + * A string identifying the type of the messaging operation. + * + * @note If a custom value is used, it **MUST** be of low cardinality. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_OPERATION_TYPE: "messaging.operation.type"; +/** + * Enum value "create" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * A message is created. "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch sending scenarios. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_CREATE: "create"; +/** + * Enum value "deliver" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `process` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_DELIVER: "deliver"; +/** + * Enum value "process" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are processed by a consumer. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_PROCESS: "process"; +/** + * Enum value "publish" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `send` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `send`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_PUBLISH: "publish"; +/** + * Enum value "receive" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE: "receive"; +/** + * Enum value "send" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are provided for sending to an intermediary. If a single message is sent, the context of the "Send" span can be used as the creation context and no "Create" span needs to be created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_SEND: "send"; +/** + * Enum value "settle" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are settled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_SETTLE: "settle"; +/** + * RabbitMQ message routing key. + * + * @example "myKey" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY: "messaging.rabbitmq.destination.routing_key"; +/** + * RabbitMQ message delivery tag + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG: "messaging.rabbitmq.message.delivery_tag"; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "myConsumerGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name` on the consumer spans. No replacement for producer spans. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP: "messaging.rocketmq.client_group"; +/** + * Model of message consumption. This only applies to consumer spans. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL: "messaging.rocketmq.consumption_model"; +/** + * Enum value "broadcasting" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Broadcasting consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING: "broadcasting"; +/** + * Enum value "clustering" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Clustering consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING: "clustering"; +/** + * The delay time level for delay message, which determines the message delay time. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL: "messaging.rocketmq.message.delay_time_level"; +/** + * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + * + * @example 1665987217045 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP: "messaging.rocketmq.message.delivery_timestamp"; +/** + * It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group. + * + * @example "myMessageGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP: "messaging.rocketmq.message.group"; +/** + * Key(s) of message, another way to mark message besides message id. + * + * @example ["keyA", "keyB"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS: "messaging.rocketmq.message.keys"; +/** + * The secondary classifier of message besides topic. + * + * @example "tagA" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG: "messaging.rocketmq.message.tag"; +/** + * Type of message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE: "messaging.rocketmq.message.type"; +/** + * Enum value "delay" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Delay message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY: "delay"; +/** + * Enum value "fifo" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * FIFO message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO: "fifo"; +/** + * Enum value "normal" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Normal message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL: "normal"; +/** + * Enum value "transaction" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Transaction message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION: "transaction"; +/** + * Namespace of RocketMQ resources, resources in different namespaces are individual. + * + * @example "myNamespace" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_NAMESPACE: "messaging.rocketmq.namespace"; +/** + * Deprecated, use `messaging.destination.subscription.name` instead. + * + * @example "subscription-a" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.destination.subscription.name`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME: "messaging.servicebus.destination.subscription_name"; +/** + * Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS: "messaging.servicebus.disposition_status"; +/** + * Enum value "abandon" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is abandoned + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON: "abandon"; +/** + * Enum value "complete" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is completed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE: "complete"; +/** + * Enum value "dead_letter" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is sent to dead letter queue + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER: "dead_letter"; +/** + * Enum value "defer" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is deferred + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER: "defer"; +/** + * Number of deliveries that have been attempted for this message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT: "messaging.servicebus.message.delivery_count"; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME: "messaging.servicebus.message.enqueued_time"; +/** + * The messaging system as identified by the client instrumentation. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SYSTEM: "messaging.system"; +/** + * Enum value "activemq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache ActiveMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_ACTIVEMQ: "activemq"; +/** + * Enum value "aws.sns" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Notification Service (SNS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_AWS_SNS: "aws.sns"; +/** + * Enum value "aws_sqs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Queue Service (SQS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_AWS_SQS: "aws_sqs"; +/** + * Enum value "eventgrid" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Grid + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_EVENTGRID: "eventgrid"; +/** + * Enum value "eventhubs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Hubs + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_EVENTHUBS: "eventhubs"; +/** + * Enum value "gcp_pubsub" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Google Cloud Pub/Sub + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_GCP_PUBSUB: "gcp_pubsub"; +/** + * Enum value "jms" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Java Message Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_JMS: "jms"; +/** + * Enum value "kafka" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Kafka + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_KAFKA: "kafka"; +/** + * Enum value "pulsar" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Pulsar + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_PULSAR: "pulsar"; +/** + * Enum value "rabbitmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * RabbitMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_RABBITMQ: "rabbitmq"; +/** + * Enum value "rocketmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache RocketMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_ROCKETMQ: "rocketmq"; +/** + * Enum value "servicebus" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Service Bus + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_SERVICEBUS: "servicebus"; +/** + * Deprecated, use `network.local.address`. + * + * @example "192.168.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export declare const ATTR_NET_HOST_IP: "net.host.ip"; +/** + * Deprecated, use `server.address`. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_NET_HOST_NAME: "net.host.name"; +/** + * Deprecated, use `server.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port`. + */ +export declare const ATTR_NET_HOST_PORT: "net.host.port"; +/** + * Deprecated, use `network.peer.address`. + * + * @example "127.0.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export declare const ATTR_NET_PEER_IP: "net.peer.ip"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Deprecated, use `network.protocol.name`. + * + * @example amqp + * @example http + * @example mqtt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.name`. + */ +export declare const ATTR_NET_PROTOCOL_NAME: "net.protocol.name"; +/** + * Deprecated, use `network.protocol.version`. + * + * @example "3.1.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.version`. + */ +export declare const ATTR_NET_PROTOCOL_VERSION: "net.protocol.version"; +/** + * Deprecated, use `network.transport` and `network.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `network.transport` and `network.type`. + */ +export declare const ATTR_NET_SOCK_FAMILY: "net.sock.family"; +/** + * Enum value "inet" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv4 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_SOCK_FAMILY_VALUE_INET: "inet"; +/** + * Enum value "inet6" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv6 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_SOCK_FAMILY_VALUE_INET6: "inet6"; +/** + * Enum value "unix" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * Unix domain socket path + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_SOCK_FAMILY_VALUE_UNIX: "unix"; +/** + * Deprecated, use `network.local.address`. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export declare const ATTR_NET_SOCK_HOST_ADDR: "net.sock.host.addr"; +/** + * Deprecated, use `network.local.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.port`. + */ +export declare const ATTR_NET_SOCK_HOST_PORT: "net.sock.host.port"; +/** + * Deprecated, use `network.peer.address`. + * + * @example 192.168.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export declare const ATTR_NET_SOCK_PEER_ADDR: "net.sock.peer.addr"; +/** + * Deprecated, no replacement at this time. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export declare const ATTR_NET_SOCK_PEER_NAME: "net.sock.peer.name"; +/** + * Deprecated, use `network.peer.port`. + * + * @example 65531 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.port`. + */ +export declare const ATTR_NET_SOCK_PEER_PORT: "net.sock.peer.port"; +/** + * Deprecated, use `network.transport`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.transport`. + */ +export declare const ATTR_NET_TRANSPORT: "net.transport"; +/** + * Enum value "inproc" for attribute {@link ATTR_NET_TRANSPORT}. + * + * In-process communication. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_INPROC: "inproc"; +/** + * Enum value "ip_tcp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_IP_TCP: "ip_tcp"; +/** + * Enum value "ip_udp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_IP_UDP: "ip_udp"; +/** + * Enum value "other" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Something else (non IP-based). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_OTHER: "other"; +/** + * Enum value "pipe" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Named or anonymous pipe. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_PIPE: "pipe"; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @example "DE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_ICC: "network.carrier.icc"; +/** + * The mobile carrier country code. + * + * @example "310" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_MCC: "network.carrier.mcc"; +/** + * The mobile carrier network code. + * + * @example "001" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_MNC: "network.carrier.mnc"; +/** + * The name of the mobile carrier. + * + * @example "sprint" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_NAME: "network.carrier.name"; +/** + * The state of network connection + * + * @example close_wait + * + * @note Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2) + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CONNECTION_STATE: "network.connection.state"; +/** + * Enum value "close_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_CLOSE_WAIT: "close_wait"; +/** + * Enum value "closed" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_CLOSED: "closed"; +/** + * Enum value "closing" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_CLOSING: "closing"; +/** + * Enum value "established" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_ESTABLISHED: "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_1: "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_2: "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_LAST_ACK: "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_LISTEN: "listen"; +/** + * Enum value "syn_received" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_SYN_RECEIVED: "syn_received"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_SYN_SENT: "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_TIME_WAIT: "time_wait"; +/** + * 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. + * + * @example "LTE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CONNECTION_SUBTYPE: "network.connection.subtype"; +/** + * Enum value "cdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA: "cdma"; +/** + * Enum value "cdma2000_1xrtt" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA2000 1XRTT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT: "cdma2000_1xrtt"; +/** + * Enum value "edge" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EDGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE: "edge"; +/** + * Enum value "ehrpd" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EHRPD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD: "ehrpd"; +/** + * Enum value "evdo_0" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rel. 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0: "evdo_0"; +/** + * Enum value "evdo_a" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. A + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A: "evdo_a"; +/** + * Enum value "evdo_b" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. B + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B: "evdo_b"; +/** + * Enum value "gprs" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GPRS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS: "gprs"; +/** + * Enum value "gsm" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GSM + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_GSM: "gsm"; +/** + * Enum value "hsdpa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSDPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA: "hsdpa"; +/** + * Enum value "hspa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA: "hspa"; +/** + * Enum value "hspap" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPAP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP: "hspap"; +/** + * Enum value "hsupa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSUPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA: "hsupa"; +/** + * Enum value "iden" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IDEN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN: "iden"; +/** + * Enum value "iwlan" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IWLAN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN: "iwlan"; +/** + * Enum value "lte" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE: "lte"; +/** + * Enum value "lte_ca" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE CA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA: "lte_ca"; +/** + * Enum value "nr" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NR (New Radio) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_NR: "nr"; +/** + * Enum value "nrnsa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NRNSA (New Radio Non-Standalone) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA: "nrnsa"; +/** + * Enum value "td_scdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * TD-SCDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA: "td_scdma"; +/** + * Enum value "umts" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * UMTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS: "umts"; +/** + * The internet connection type. + * + * @example "wifi" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CONNECTION_TYPE: "network.connection.type"; +/** + * Enum value "cell" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_CELL: "cell"; +/** + * Enum value "unavailable" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE: "unavailable"; +/** + * Enum value "unknown" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN: "unknown"; +/** + * Enum value "wifi" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_WIFI: "wifi"; +/** + * Enum value "wired" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_WIRED: "wired"; +/** + * The network interface name. + * + * @example lo + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_INTERFACE_NAME: "network.interface.name"; +/** + * The network IO operation direction. + * + * @example transmit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_IO_DIRECTION: "network.io.direction"; +/** + * Enum value "receive" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_IO_DIRECTION_VALUE_RECEIVE: "receive"; +/** + * Enum value "transmit" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_IO_DIRECTION_VALUE_TRANSMIT: "transmit"; +/** + * NFSv4+ operation name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NFS_OPERATION_NAME: "nfs.operation.name"; +/** + * Linux: one of "hit" (NFSD_STATS_RC_HITS), "miss" (NFSD_STATS_RC_MISSES), or "nocache" (NFSD_STATS_RC_NOCACHE -- uncacheable) + * + * @example "hit" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NFS_SERVER_REPCACHE_STATUS: "nfs.server.repcache.status"; +/** + * The state of event loop time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NODEJS_EVENTLOOP_STATE: "nodejs.eventloop.state"; +/** + * Enum value "active" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Active time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "idle" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Idle time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NODEJS_EVENTLOOP_STATE_VALUE_IDLE: "idle"; +/** + * The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known. + * + * @example sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4 + * + * @note Follows [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), and specifically the [Digest property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests). + * An example can be found in [Example Image Manifest](https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OCI_MANIFEST_DIGEST: "oci.manifest.digest"; +/** + * ONC/Sun RPC procedure name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_PROCEDURE_NAME: "onc_rpc.procedure.name"; +/** + * ONC/Sun RPC procedure number. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_PROCEDURE_NUMBER: "onc_rpc.procedure.number"; +/** + * ONC/Sun RPC program name. + * + * @example portmapper + * @example nfs + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_PROGRAM_NAME: "onc_rpc.program.name"; +/** + * ONC/Sun RPC program version. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_VERSION: "onc_rpc.version"; +/** + * The service tier requested. May be a specific tier, default, or auto. + * + * @example auto + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENAI_REQUEST_SERVICE_TIER: "openai.request.service_tier"; +/** + * Enum value "auto" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO: "auto"; +/** + * Enum value "default" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT: "default"; +/** + * The service tier used for the response. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENAI_RESPONSE_SERVICE_TIER: "openai.response.service_tier"; +/** + * A fingerprint to track any eventual change in the Generative AI environment. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENAI_RESPONSE_SYSTEM_FINGERPRINT: "openai.response.system_fingerprint"; +/** + * The name of the cluster quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENSHIFT_CLUSTERQUOTA_NAME: "openshift.clusterquota.name"; +/** + * The UID of the cluster quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENSHIFT_CLUSTERQUOTA_UID: "openshift.clusterquota.uid"; +/** + * Parent-child Reference type + * + * @note The causal relationship between a child Span and a parent Span. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENTRACING_REF_TYPE: "opentracing.ref_type"; +/** + * Enum value "child_of" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span depends on the child Span in some capacity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENTRACING_REF_TYPE_VALUE_CHILD_OF: "child_of"; +/** + * Enum value "follows_from" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span doesn't depend in any way on the result of the child Span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM: "follows_from"; +/** + * Unique identifier for a particular build or compilation of the operating system. + * + * @example TQ3C.230805.001.B2 + * @example 20E247 + * @example 22621 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_BUILD_ID: "os.build_id"; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @example Microsoft Windows [Version 10.0.18363.778] + * @example Ubuntu 18.04.1 LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_DESCRIPTION: "os.description"; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_NAME: "os.name"; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_TYPE: "os.type"; +/** + * Enum value "aix" for attribute {@link ATTR_OS_TYPE}. + * + * AIX (Advanced Interactive eXecutive) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_AIX: "aix"; +/** + * Enum value "darwin" for attribute {@link ATTR_OS_TYPE}. + * + * Apple Darwin + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_DARWIN: "darwin"; +/** + * Enum value "dragonflybsd" for attribute {@link ATTR_OS_TYPE}. + * + * DragonFly BSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_DRAGONFLYBSD: "dragonflybsd"; +/** + * Enum value "freebsd" for attribute {@link ATTR_OS_TYPE}. + * + * FreeBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_FREEBSD: "freebsd"; +/** + * Enum value "hpux" for attribute {@link ATTR_OS_TYPE}. + * + * HP-UX (Hewlett Packard Unix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_HPUX: "hpux"; +/** + * Enum value "linux" for attribute {@link ATTR_OS_TYPE}. + * + * Linux + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_LINUX: "linux"; +/** + * Enum value "netbsd" for attribute {@link ATTR_OS_TYPE}. + * + * NetBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_NETBSD: "netbsd"; +/** + * Enum value "openbsd" for attribute {@link ATTR_OS_TYPE}. + * + * OpenBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_OPENBSD: "openbsd"; +/** + * Enum value "solaris" for attribute {@link ATTR_OS_TYPE}. + * + * SunOS, Oracle Solaris + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_SOLARIS: "solaris"; +/** + * Enum value "windows" for attribute {@link ATTR_OS_TYPE}. + * + * Microsoft Windows + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_WINDOWS: "windows"; +/** + * Enum value "z_os" for attribute {@link ATTR_OS_TYPE}. + * + * Deprecated. Use `zos` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `zos`. + */ +export declare const OS_TYPE_VALUE_Z_OS: "z_os"; +/** + * Enum value "zos" for attribute {@link ATTR_OS_TYPE}. + * + * IBM z/OS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_ZOS: "zos"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_VERSION: "os.version"; +/** + * A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. + * + * @example otlp_grpc_span_exporter/0 + * @example custom-name + * + * @note Implementations **SHOULD** ensure a low cardinality for this attribute, even across application or SDK restarts. + * E.g. implementations **MUST NOT** use UUIDs as values for this attribute. + * + * Implementations **MAY** achieve these goals by following a `/` pattern, e.g. `batching_span_processor/0`. + * Hereby `otel.component.type` refers to the corresponding attribute value of the component. + * + * The value of `instance-counter` **MAY** be automatically assigned by the component and uniqueness within the enclosing SDK instance **MUST** be guaranteed. + * For example, `` **MAY** be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an + * instance of the given component type is started. + * + * With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0` + * as `otel.component.name`, the second one `batching_span_processor/1` and so on. + * These values will therefore be reused in the case of an application restart. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_COMPONENT_NAME: "otel.component.name"; +/** + * A name identifying the type of the OpenTelemetry component. + * + * @example batching_span_processor + * @example com.example.MySpanExporter + * + * @note If none of the standardized values apply, implementations **SHOULD** use the language-defined name of the type. + * E.g. for Java the fully qualified classname **SHOULD** be used in this case. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_COMPONENT_TYPE: "otel.component.type"; +/** + * Enum value "batching_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR: "batching_log_processor"; +/** + * Enum value "batching_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR: "batching_span_processor"; +/** + * Enum value "otlp_grpc_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_LOG_EXPORTER: "otlp_grpc_log_exporter"; +/** + * Enum value "otlp_grpc_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_METRIC_EXPORTER: "otlp_grpc_metric_exporter"; +/** + * Enum value "otlp_grpc_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER: "otlp_grpc_span_exporter"; +/** + * Enum value "otlp_http_json_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_LOG_EXPORTER: "otlp_http_json_log_exporter"; +/** + * Enum value "otlp_http_json_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_METRIC_EXPORTER: "otlp_http_json_metric_exporter"; +/** + * Enum value "otlp_http_json_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER: "otlp_http_json_span_exporter"; +/** + * Enum value "otlp_http_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER: "otlp_http_log_exporter"; +/** + * Enum value "otlp_http_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_METRIC_EXPORTER: "otlp_http_metric_exporter"; +/** + * Enum value "otlp_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER: "otlp_http_span_exporter"; +/** + * Enum value "periodic_metric_reader" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK periodically exporting metric reader + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_PERIODIC_METRIC_READER: "periodic_metric_reader"; +/** + * Enum value "prometheus_http_text_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Prometheus metric exporter over HTTP with the default text-based format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_PROMETHEUS_HTTP_TEXT_METRIC_EXPORTER: "prometheus_http_text_metric_exporter"; +/** + * Enum value "simple_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR: "simple_log_processor"; +/** + * Enum value "simple_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR: "simple_span_processor"; +/** + * Enum value "zipkin_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Zipkin span exporter over HTTP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_ZIPKIN_HTTP_SPAN_EXPORTER: "zipkin_http_span_exporter"; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @note This attribute **SHOULD** be used by non-OTLP exporters when destination does not support `EventName` or equivalent field. This attribute **MAY** be used by applications using existing logging libraries so that it can be used to set the `EventName` field by Collector or SDK components. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_EVENT_NAME: "otel.event.name"; +/** + * Deprecated. Use the `otel.scope.name` attribute + * + * @example io.opentelemetry.contrib.mongodb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.name`. + */ +export declare const ATTR_OTEL_LIBRARY_NAME: "otel.library.name"; +/** + * Deprecated. Use the `otel.scope.version` attribute. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.version`. + */ +export declare const ATTR_OTEL_LIBRARY_VERSION: "otel.library.version"; +/** + * The schema URL of the instrumentation scope. + * + * @example https://opentelemetry.io/schemas/1.31.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_SCOPE_SCHEMA_URL: "otel.scope.schema_url"; +/** + * 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) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_SPAN_PARENT_ORIGIN: "otel.span.parent.origin"; +/** + * Enum value "local" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is false + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_PARENT_ORIGIN_VALUE_LOCAL: "local"; +/** + * Enum value "none" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span does not have a parent, it is a root span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_PARENT_ORIGIN_VALUE_NONE: "none"; +/** + * Enum value "remote" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is true + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_PARENT_ORIGIN_VALUE_REMOTE: "remote"; +/** + * The result value of the sampler for this span + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_SPAN_SAMPLING_RESULT: "otel.span.sampling_result"; +/** + * Enum value "DROP" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled and not recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP: "DROP"; +/** + * Enum value "RECORD_AND_SAMPLE" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is sampled and recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE: "RECORD_AND_SAMPLE"; +/** + * Enum value "RECORD_ONLY" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled, but recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY: "RECORD_ONLY"; +/** + * The [`service.name`](/docs/resource/README.md#service) of the remote service. **SHOULD** be equal to the actual `service.name` resource attribute of the remote service if any. + * + * @example "AuthTokenCache" + * + * @note Examples of `peer.service` that users may specify: + * + * - A Redis cache of auth tokens as `peer.service="AuthTokenCache"`. + * - A gRPC service `rpc.service="io.opentelemetry.AuthService"` may be hosted in both a gateway, `peer.service="ExternalApiService"` and a backend, `peer.service="AuthService"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `service.peer.name`. + */ +export declare const ATTR_PEER_SERVICE: "peer.service"; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +export declare const ATTR_POOL_NAME: "pool.name"; +/** + * Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_LOCATION_IS_FOLDED: "pprof.location.is_folded"; +/** + * Indicates that there are filenames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_FILENAMES: "pprof.mapping.has_filenames"; +/** + * Indicates that there are functions related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_FUNCTIONS: "pprof.mapping.has_functions"; +/** + * Indicates that there are inline frames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_INLINE_FRAMES: "pprof.mapping.has_inline_frames"; +/** + * Indicates that there are line numbers related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_LINE_NUMBERS: "pprof.mapping.has_line_numbers"; +/** + * Free-form text associated with the profile. This field should not be used to store any machine-readable information, it is only for human-friendly content. + * + * @example ["hello world", "bazinga"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_COMMENT: "pprof.profile.comment"; +/** + * Documentation link for this profile type. + * + * @example http://pprof.example.com/cpu-profile.html + * + * @note The URL must be absolute and may be missing if the profile was generated by code that did not supply a link + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_DOC_URL: "pprof.profile.doc_url"; +/** + * Frames with Function.function_name fully matching the regexp will be dropped from the samples, along with their successors. + * + * @example /foobar/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_DROP_FRAMES: "pprof.profile.drop_frames"; +/** + * Frames with Function.function_name fully matching the regexp will be kept, even if it matches drop_frames. + * + * @example /bazinga/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_KEEP_FRAMES: "pprof.profile.keep_frames"; +/** + * Length of the process.command_args array + * + * @example 4 + * + * @note This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_ARGS_COUNT: "process.args_count"; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND: "process.command"; +/** + * 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`. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND_ARGS: "process.command_args"; +/** + * 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. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example C:\\cmd\\otecol --config="my directory\\config.yaml" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND_LINE: "process.command_line"; +/** + * Specifies whether the context switches for this data point were voluntary or involuntary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_CONTEXT_SWITCH_TYPE: "process.context_switch.type"; +/** + * Enum value "involuntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY: "involuntary"; +/** + * Enum value "voluntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY: "voluntary"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export declare const ATTR_PROCESS_CPU_STATE: "process.cpu.state"; +/** + * Enum value "system" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CPU_STATE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CPU_STATE_VALUE_USER: "user"; +/** + * Enum value "wait" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CPU_STATE_VALUE_WAIT: "wait"; +/** + * The date and time the process was created, in ISO 8601 format. + * + * @example 2023-11-21T09:25:34.853Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_CREATION_TIME: "process.creation.time"; +/** + * Process environment variables, `` being the environment variable name, the value being the environment variable value. + * + * @example ubuntu + * @example /usr/local/bin:/usr/bin + * + * @note Examples: + * + * - an environment variable `USER` with value `"ubuntu"` **SHOULD** be recorded + * as the `process.environment_variable.USER` attribute with value `"ubuntu"`. + * - an environment variable `PATH` with value `"/usr/local/bin:/usr/bin"` + * **SHOULD** be recorded as the `process.environment_variable.PATH` attribute + * with value `"/usr/local/bin:/usr/bin"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_ENVIRONMENT_VARIABLE: (key: string) => string; +/** + * The GNU build ID as found in the `.note.gnu.build-id` ELF section (hex string). + * + * @example c89b11207f6479603b0d49bf291c092c2b719293 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU: "process.executable.build_id.gnu"; +/** + * The Go build ID as retrieved by `go tool buildid `. + * + * @example foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO: "process.executable.build_id.go"; +/** + * Profiling specific build ID for executables. See the OTel specification for Profiles for more information. + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH: "process.executable.build_id.htlhash"; +/** + * "Deprecated, use `process.executable.build_id.htlhash` instead." + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.executable.build_id.htlhash`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING: "process.executable.build_id.profiling"; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_NAME: "process.executable.name"; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_PATH: "process.executable.path"; +/** + * The exit code of the process. + * + * @example 127 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXIT_CODE: "process.exit.code"; +/** + * The date and time the process exited, in ISO 8601 format. + * + * @example 2023-11-21T09:26:12.315Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXIT_TIME: "process.exit.time"; +/** + * The PID of the process's group leader. This is also the process group ID (PGID) of the process. + * + * @example 23 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_GROUP_LEADER_PID: "process.group_leader.pid"; +/** + * Whether the process is connected to an interactive shell. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_INTERACTIVE: "process.interactive"; +/** + * The control group associated with the process. + * + * @example 1:name=systemd:/user.slice/user-1000.slice/session-3.scope + * @example 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope + * + * @note Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the [/proc/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_LINUX_CGROUP: "process.linux.cgroup"; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_OWNER: "process.owner"; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +export declare const ATTR_PROCESS_PAGING_FAULT_TYPE: "process.paging.fault_type"; +/** + * Enum value "major" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR: "minor"; +/** + * Parent Process identifier (PPID). + * + * @example 111 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_PARENT_PID: "process.parent_pid"; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_PID: "process.pid"; +/** + * The real user ID (RUID) of the process. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_REAL_USER_ID: "process.real_user.id"; +/** + * The username of the real user of the process. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_REAL_USER_NAME: "process.real_user.name"; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_DESCRIPTION: "process.runtime.description"; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_NAME: "process.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_VERSION: "process.runtime.version"; +/** + * The saved user ID (SUID) of the process. + * + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_SAVED_USER_ID: "process.saved_user.id"; +/** + * The username of the saved user. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_SAVED_USER_NAME: "process.saved_user.name"; +/** + * The PID of the process's session leader. This is also the session ID (SID) of the process. + * + * @example 14 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_SESSION_LEADER_PID: "process.session_leader.pid"; +/** + * The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES) + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_STATE: "process.state"; +/** + * Enum value "defunct" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_DEFUNCT: "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_RUNNING: "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_SLEEPING: "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_STOPPED: "stopped"; +/** + * Process title (proctitle) + * + * @example cat /etc/hostname + * @example xfce4-session + * @example bash + * + * @note In many Unix-like systems, process title (proctitle), is the string that represents the name or command line of a running process, displayed by system monitoring tools like ps, top, and htop. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_TITLE: "process.title"; +/** + * The effective user ID (EUID) of the process. + * + * @example 1001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_USER_ID: "process.user.id"; +/** + * The username of the effective user of the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_USER_NAME: "process.user.name"; +/** + * Virtual process identifier. + * + * @example 12 + * + * @note The process ID within a PID namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_VPID: "process.vpid"; +/** + * The working directory of the process. + * + * @example /root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_WORKING_DIRECTORY: "process.working_directory"; +/** + * Describes the interpreter or compiler of a single frame. + * + * @example cpython + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROFILE_FRAME_TYPE: "profile.frame.type"; +/** + * Enum value "beam" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Erlang](https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_BEAM: "beam"; +/** + * Enum value "cpython" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Python](https://wikipedia.org/wiki/Python_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_CPYTHON: "cpython"; +/** + * Enum value "dotnet" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [.NET](https://wikipedia.org/wiki/.NET) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_DOTNET: "dotnet"; +/** + * Enum value "go" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Go](https://wikipedia.org/wiki/Go_(programming_language)), + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_GO: "go"; +/** + * Enum value "jvm" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [JVM](https://wikipedia.org/wiki/Java_virtual_machine) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_JVM: "jvm"; +/** + * Enum value "kernel" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Kernel](https://wikipedia.org/wiki/Kernel_(operating_system)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_KERNEL: "kernel"; +/** + * Enum value "native" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * Can be one of but not limited to [C](https://wikipedia.org/wiki/C_(programming_language)), [C++](https://wikipedia.org/wiki/C%2B%2B), [Go](https://wikipedia.org/wiki/Go_(programming_language)) or [Rust](https://wikipedia.org/wiki/Rust_(programming_language)). If possible, a more precise value **MUST** be used. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_NATIVE: "native"; +/** + * Enum value "perl" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Perl](https://wikipedia.org/wiki/Perl) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_PERL: "perl"; +/** + * Enum value "php" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [PHP](https://wikipedia.org/wiki/PHP) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_PHP: "php"; +/** + * Enum value "ruby" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Ruby](https://wikipedia.org/wiki/Ruby_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_RUBY: "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Rust](https://wikipedia.org/wiki/Rust_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_RUST: "rust"; +/** + * Enum value "v8js" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [V8JS](https://wikipedia.org/wiki/V8_(JavaScript_engine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_V8JS: "v8js"; +/** + * Deprecated, use `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.status_code`. + */ +export declare const ATTR_RPC_CONNECT_RPC_ERROR_CODE: "rpc.connect_rpc.error_code"; +/** + * Enum value "aborted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED: "aborted"; +/** + * Enum value "already_exists" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS: "already_exists"; +/** + * Enum value "cancelled" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED: "cancelled"; +/** + * Enum value "data_loss" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS: "data_loss"; +/** + * Enum value "deadline_exceeded" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED: "deadline_exceeded"; +/** + * Enum value "failed_precondition" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION: "failed_precondition"; +/** + * Enum value "internal" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL: "internal"; +/** + * Enum value "invalid_argument" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT: "invalid_argument"; +/** + * Enum value "not_found" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND: "not_found"; +/** + * Enum value "out_of_range" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE: "out_of_range"; +/** + * Enum value "permission_denied" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED: "permission_denied"; +/** + * Enum value "resource_exhausted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED: "resource_exhausted"; +/** + * Enum value "unauthenticated" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED: "unauthenticated"; +/** + * Enum value "unavailable" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE: "unavailable"; +/** + * Enum value "unimplemented" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED: "unimplemented"; +/** + * Enum value "unknown" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN: "unknown"; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +export declare const ATTR_RPC_CONNECT_RPC_REQUEST_METADATA: (key: string) => string; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +export declare const ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA: (key: string) => string; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +export declare const ATTR_RPC_GRPC_REQUEST_METADATA: (key: string) => string; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +export declare const ATTR_RPC_GRPC_RESPONSE_METADATA: (key: string) => string; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the gRPC status code on the `rpc.response.status_code` attribute. + */ +export declare const ATTR_RPC_GRPC_STATUS_CODE: "rpc.grpc.status_code"; +/** + * Enum value 0 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_OK: 0; +/** + * Enum value 1 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * CANCELLED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_CANCELLED: 1; +/** + * Enum value 2 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNKNOWN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN: 2; +/** + * Enum value 3 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INVALID_ARGUMENT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT: 3; +/** + * Enum value 4 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DEADLINE_EXCEEDED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED: 4; +/** + * Enum value 5 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * NOT_FOUND + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND: 5; +/** + * Enum value 6 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ALREADY_EXISTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS: 6; +/** + * Enum value 7 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * PERMISSION_DENIED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED: 7; +/** + * Enum value 8 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * RESOURCE_EXHAUSTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED: 8; +/** + * Enum value 9 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * FAILED_PRECONDITION + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION: 9; +/** + * Enum value 10 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ABORTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_ABORTED: 10; +/** + * Enum value 11 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OUT_OF_RANGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE: 11; +/** + * Enum value 12 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNIMPLEMENTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED: 12; +/** + * Enum value 13 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INTERNAL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_INTERNAL: 13; +/** + * Enum value 14 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAVAILABLE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE: 14; +/** + * Enum value 15 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DATA_LOSS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS: 15; +/** + * Enum value 16 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAUTHENTICATED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED: 16; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @example -32700 + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the error code on the `rpc.response.status_code` attribute. + */ +export declare const ATTR_RPC_JSONRPC_ERROR_CODE: "rpc.jsonrpc.error_code"; +/** + * Deprecated, use span status description or `error.message` attribute on other signals. + * + * @example Parse error + * @example User already exists + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use the span status description or `error.message` attribute on other signals. + */ +export declare const ATTR_RPC_JSONRPC_ERROR_MESSAGE: "rpc.jsonrpc.error_message"; +/** + * Deprecated, use `jsonrpc.request.id` instead. + * + * @example 10 + * @example request-7 + * @example + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.request.id`. + */ +export declare const ATTR_RPC_JSONRPC_REQUEST_ID: "rpc.jsonrpc.request_id"; +/** + * Deprecated, use `jsonrpc.protocol.version` instead. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.protocol.version`. + */ +export declare const ATTR_RPC_JSONRPC_VERSION: "rpc.jsonrpc.version"; +/** + * Compressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_COMPRESSED_SIZE: "rpc.message.compressed_size"; +/** + * **MUST** be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * @note This way we guarantee that the values will be consistent between different implementations. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_ID: "rpc.message.id"; +/** + * Whether this is a received or sent message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_TYPE: "rpc.message.type"; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_MESSAGE_TYPE_VALUE_RECEIVED: "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_MESSAGE_TYPE_VALUE_SENT: "SENT"; +/** + * Uncompressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE: "rpc.message.uncompressed_size"; +/** + * The fully-qualified logical name of the method from the RPC interface perspective. + * + * @example com.example.ExampleService/exampleMethod + * @example EchoService/Echo + * @example _OTHER + * + * @note The method name **MAY** have unbounded cardinality in edge or error cases. + * + * Some RPC frameworks or libraries provide a fixed set of recognized methods + * for client stubs and server implementations. Instrumentations for such + * frameworks **MUST** set this attribute to the original method name only + * when the method is recognized by the framework or library. + * + * When the method is not recognized, for example, when the server receives + * a request for a method that is not predefined on the server, or when + * instrumentation is not able to reliably detect if the method is predefined, + * the attribute **MUST** be set to `_OTHER`. In such cases, tracing + * instrumentations **MUST** also set `rpc.method_original` attribute to + * the original method value. + * + * If the RPC instrumentation could end up converting valid RPC methods to + * `_OTHER`, then it **SHOULD** provide a way to configure the list of recognized + * RPC methods. + * + * The `rpc.method` can be different from the name of any implementing + * method/function. + * The `code.function.name` attribute may be used to record the fully-qualified + * method actually executing the call on the server side, or the + * RPC client stub method on the client side. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_METHOD: "rpc.method"; +/** + * The original name of the method used by the client. + * + * @example com.myservice.EchoService/catchAll + * @example com.myservice.EchoService/unknownMethod + * @example InvalidMethod + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_METHOD_ORIGINAL: "rpc.method_original"; +/** + * RPC request metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["1.2.3.4", "1.2.3.5"]` **SHOULD** be recorded as + * `rpc.request.metadata.my-custom-key` attribute with value `["1.2.3.4", "1.2.3.5"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_REQUEST_METADATA: (key: string) => string; +/** + * RPC response metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["attribute_value"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["attribute_value"]` **SHOULD** be recorded as + * the `rpc.response.metadata.my-custom-key` attribute with value `["attribute_value"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_RESPONSE_METADATA: (key: string) => string; +/** + * Status code of the RPC returned by the RPC server or generated by the client + * + * @example OK + * @example DEADLINE_EXCEEDED + * @example -32602 + * + * @note Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes. + * Semantic conventions for individual RPC frameworks **SHOULD** document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_RESPONSE_STATUS_CODE: "rpc.response.status_code"; +/** + * Deprecated, use fully-qualified `rpc.method` instead. + * + * @example "myservice.EchoService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `rpc.method` which is expected to be a fully-qualified name. + */ +export declare const ATTR_RPC_SERVICE: "rpc.service"; +/** + * Deprecated, use `rpc.system.name` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.system.name`. + */ +export declare const ATTR_RPC_SYSTEM: "rpc.system"; +/** + * Enum value "apache_dubbo" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Apache Dubbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_APACHE_DUBBO: "apache_dubbo"; +/** + * Enum value "connect_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Connect RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_CONNECT_RPC: "connect_rpc"; +/** + * Enum value "dotnet_wcf" for attribute {@link ATTR_RPC_SYSTEM}. + * + * .NET WCF + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_DOTNET_WCF: "dotnet_wcf"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * gRPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_GRPC: "grpc"; +/** + * Enum value "java_rmi" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Java RMI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_JAVA_RMI: "java_rmi"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * JSON-RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_JSONRPC: "jsonrpc"; +/** + * Enum value "onc_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * [ONC RPC (Sun RPC)](https://datatracker.ietf.org/doc/html/rfc5531) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_ONC_RPC: "onc_rpc"; +/** + * The Remote Procedure Call (RPC) system. + * + * @note The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_SYSTEM_NAME: "rpc.system.name"; +/** + * Enum value "connectrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Connect RPC](https://connectrpc.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_CONNECTRPC: "connectrpc"; +/** + * Enum value "dubbo" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Apache Dubbo](https://dubbo.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_DUBBO: "dubbo"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [gRPC](https://grpc.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_GRPC: "grpc"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [JSON-RPC](https://www.jsonrpc.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_JSONRPC: "jsonrpc"; +/** + * A categorization value keyword used by the entity using the rule for detection of this event + * + * @example Attempted Information Leak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_CATEGORY: "security_rule.category"; +/** + * The description of the rule generating the event. + * + * @example Block requests to public DNS over HTTPS / TLS protocols + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_DESCRIPTION: "security_rule.description"; +/** + * Name of the license under which the rule used to generate this event is made available. + * + * @example Apache 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_LICENSE: "security_rule.license"; +/** + * The name of the rule or signature generating the event. + * + * @example BLOCK_DNS_over_TLS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_NAME: "security_rule.name"; +/** + * Reference URL to additional information about the rule used to generate this event. + * + * @example https://en.wikipedia.org/wiki/DNS_over_TLS + * + * @note The URL can point to the vendor’s documentation about the rule. If that’s not available, it can also be a link to a more general page describing this type of alert. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_REFERENCE: "security_rule.reference"; +/** + * Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. + * + * @example Standard_Protocol_Filters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_RULESET_NAME: "security_rule.ruleset.name"; +/** + * A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. + * + * @example 550e8400-e29b-41d4-a716-446655440000 + * @example 1100110011 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_UUID: "security_rule.uuid"; +/** + * The version / revision of the rule being used for analysis. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_VERSION: "security_rule.version"; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_INSTANCE_ID: "service.instance.id"; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_NAMESPACE: "service.namespace"; +/** + * Logical name of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.name`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example shoppingcart + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_PEER_NAME: "service.peer.name"; +/** + * Logical namespace of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.namespace`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example Shop + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_PEER_NAMESPACE: "service.peer.namespace"; +/** + * A unique id to identify a session. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SESSION_ID: "session.id"; +/** + * The previous `session.id` for this user, when known. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SESSION_PREVIOUS_ID: "session.previous_id"; +/** + * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example source.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the destination side, and when communicating through an intermediary, `source.address` **SHOULD** represent the source address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SOURCE_ADDRESS: "source.address"; +/** + * Source port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SOURCE_PORT: "source.port"; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +export declare const ATTR_STATE: "state"; +/** + * Enum value "idle" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const STATE_VALUE_IDLE: "idle"; +/** + * Enum value "used" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const STATE_VALUE_USED: "used"; +/** + * Deprecated, use `cpu.logical_number` instead. + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.logical_number`. + */ +export declare const ATTR_SYSTEM_CPU_LOGICAL_NUMBER: "system.cpu.logical_number"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example idle + * @example interrupt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export declare const ATTR_SYSTEM_CPU_STATE: "system.cpu.state"; +/** + * Enum value "idle" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_IDLE: "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_INTERRUPT: "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_IOWAIT: "iowait"; +/** + * Enum value "nice" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_NICE: "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_STEAL: "steal"; +/** + * Enum value "system" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_USER: "user"; +/** + * The device identifier + * + * @example (identifier) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_DEVICE: "system.device"; +/** + * The filesystem mode + * + * @example rw, ro + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_MODE: "system.filesystem.mode"; +/** + * The filesystem mount path + * + * @example /mnt/data + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT: "system.filesystem.mountpoint"; +/** + * The filesystem state + * + * @example used + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_STATE: "system.filesystem.state"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_STATE_VALUE_FREE: "free"; +/** + * Enum value "reserved" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED: "reserved"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_STATE_VALUE_USED: "used"; +/** + * The filesystem type + * + * @example ext4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_TYPE: "system.filesystem.type"; +/** + * Enum value "exfat" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT: "exfat"; +/** + * Enum value "ext4" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4: "ext4"; +/** + * Enum value "fat32" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32: "fat32"; +/** + * Enum value "hfsplus" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS: "hfsplus"; +/** + * Enum value "ntfs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS: "ntfs"; +/** + * Enum value "refs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_REFS: "refs"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE: "system.memory.linux.slab.state"; +/** + * Enum value "reclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE: "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE: "unreclaimable"; +/** + * The memory state + * + * @example free + * @example cached + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_MEMORY_STATE: "system.memory.state"; +/** + * Enum value "buffers" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_BUFFERS: "buffers"; +/** + * Enum value "cached" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_CACHED: "cached"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_FREE: "free"; +/** + * Enum value "shared" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, report shared memory usage with `metric.system.memory.shared` metric + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_SHARED: "shared"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * Actual used virtual memory in bytes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `network.connection.state` instead. + * + * @example close_wait + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.connection.state`. + */ +export declare const ATTR_SYSTEM_NETWORK_STATE: "system.network.state"; +/** + * Enum value "close" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_CLOSE: "close"; +/** + * Enum value "close_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT: "close_wait"; +/** + * Enum value "closing" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_CLOSING: "closing"; +/** + * Enum value "delete" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_DELETE: "delete"; +/** + * Enum value "established" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED: "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1: "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2: "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_LAST_ACK: "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_LISTEN: "listen"; +/** + * Enum value "syn_recv" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_SYN_RECV: "syn_recv"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_SYN_SENT: "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT: "time_wait"; +/** + * The paging access direction + * + * @example in + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_PAGING_DIRECTION: "system.paging.direction"; +/** + * Enum value "in" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_DIRECTION_VALUE_IN: "in"; +/** + * Enum value "out" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_DIRECTION_VALUE_OUT: "out"; +/** + * The paging fault type + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_PAGING_FAULT_TYPE: "system.paging.fault.type"; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_FAULT_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_FAULT_TYPE_VALUE_MINOR: "minor"; +/** + * The memory paging state + * + * @example free + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_PAGING_STATE: "system.paging.state"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_STATE_VALUE_FREE: "free"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +export declare const ATTR_SYSTEM_PAGING_TYPE: "system.paging.type"; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_TYPE_VALUE_MINOR: "minor"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +export declare const ATTR_SYSTEM_PROCESS_STATUS: "system.process.status"; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT: "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_RUNNING: "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_SLEEPING: "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_STOPPED: "stopped"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +export declare const ATTR_SYSTEM_PROCESSES_STATUS: "system.processes.status"; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT: "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_RUNNING: "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING: "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_STOPPED: "stopped"; +/** + * The name of the auto instrumentation agent or distribution, if used. + * + * @example parts-unlimited-java + * + * @note Official auto instrumentation agents and distributions **SHOULD** set the `telemetry.distro.name` attribute to + * a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TELEMETRY_DISTRO_NAME: "telemetry.distro.name"; +/** + * The version string of the auto instrumentation agent or distribution, if used. + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TELEMETRY_DISTRO_VERSION: "telemetry.distro.version"; +/** + * The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case). + * + * @example org.example.TestCase1.test1 + * @example example/tests/TestCase1.test1 + * @example ExampleTestCase1_test1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_CASE_NAME: "test.case.name"; +/** + * The status of the actual test case result from test execution. + * + * @example pass + * @example fail + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_CASE_RESULT_STATUS: "test.case.result.status"; +/** + * Enum value "fail" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * fail + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_CASE_RESULT_STATUS_VALUE_FAIL: "fail"; +/** + * Enum value "pass" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * pass + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_CASE_RESULT_STATUS_VALUE_PASS: "pass"; +/** + * The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite). + * + * @example TestSuite1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_SUITE_NAME: "test.suite.name"; +/** + * The status of the test suite run. + * + * @example success + * @example failure + * @example skipped + * @example aborted + * @example timed_out + * @example in_progress + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_SUITE_RUN_STATUS: "test.suite.run.status"; +/** + * Enum value "aborted" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * aborted + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_ABORTED: "aborted"; +/** + * Enum value "failure" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_FAILURE: "failure"; +/** + * Enum value "in_progress" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * in_progress + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS: "in_progress"; +/** + * Enum value "skipped" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * skipped + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_SKIPPED: "skipped"; +/** + * Enum value "success" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * success + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_SUCCESS: "success"; +/** + * Enum value "timed_out" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * timed_out + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT: "timed_out"; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @example 42 + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().threadId()` | + * | .NET | `Thread.CurrentThread.ManagedThreadId` | + * | Python | `threading.current_thread().ident` | + * | Ruby | `Thread.current.object_id` | + * | C++ | `std::this_thread::get_id()` | + * | Erlang | `erlang:self()` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_THREAD_ID: "thread.id"; +/** + * Current thread name. + * + * @example "main" + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().getName()` | + * | .NET | `Thread.CurrentThread.Name` | + * | Python | `threading.current_thread().name` | + * | Ruby | `Thread.current.name` | + * | Erlang | `erlang:process_info(self(), registered_name)` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_THREAD_NAME: "thread.name"; +/** + * String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection. + * + * @example TLS_RSA_WITH_3DES_EDE_CBC_SHA + * @example TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + * + * @note The values allowed for `tls.cipher` **MUST** be one of the `Descriptions` of the [registered TLS Cipher Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CIPHER: "tls.cipher"; +/** + * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_CERTIFICATE: "tls.client.certificate"; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_CERTIFICATE_CHAIN: "tls.client.certificate_chain"; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_HASH_MD5: "tls.client.hash.md5"; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_HASH_SHA1: "tls.client.hash.sha1"; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_HASH_SHA256: "tls.client.hash.sha256"; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_ISSUER: "tls.client.issuer"; +/** + * A hash that identifies clients based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_JA3: "tls.client.ja3"; +/** + * Date/Time indicating when client certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_NOT_AFTER: "tls.client.not_after"; +/** + * Date/Time indicating when client certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_NOT_BEFORE: "tls.client.not_before"; +/** + * Deprecated, use `server.address` instead. + * + * @example opentelemetry.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_TLS_CLIENT_SERVER_NAME: "tls.client.server_name"; +/** + * Distinguished name of subject of the x.509 certificate presented by the client. + * + * @example CN=myclient, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_SUBJECT: "tls.client.subject"; +/** + * Array of ciphers offered by the client during the client hello. + * + * @example ["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_SUPPORTED_CIPHERS: "tls.client.supported_ciphers"; +/** + * String indicating the curve used for the given cipher, when applicable + * + * @example secp256r1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CURVE: "tls.curve"; +/** + * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_ESTABLISHED: "tls.established"; +/** + * String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. + * + * @example http/1.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_NEXT_PROTOCOL: "tls.next_protocol"; +/** + * Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_PROTOCOL_NAME: "tls.protocol.name"; +/** + * Enum value "ssl" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TLS_PROTOCOL_NAME_VALUE_SSL: "ssl"; +/** + * Enum value "tls" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TLS_PROTOCOL_NAME_VALUE_TLS: "tls"; +/** + * Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @example 1.2 + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_PROTOCOL_VERSION: "tls.protocol.version"; +/** + * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_RESUMED: "tls.resumed"; +/** + * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_CERTIFICATE: "tls.server.certificate"; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_CERTIFICATE_CHAIN: "tls.server.certificate_chain"; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_HASH_MD5: "tls.server.hash.md5"; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_HASH_SHA1: "tls.server.hash.sha1"; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_HASH_SHA256: "tls.server.hash.sha256"; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_ISSUER: "tls.server.issuer"; +/** + * A hash that identifies servers based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_JA3S: "tls.server.ja3s"; +/** + * Date/Time indicating when server certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_NOT_AFTER: "tls.server.not_after"; +/** + * Date/Time indicating when server certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_NOT_BEFORE: "tls.server.not_before"; +/** + * Distinguished name of subject of the x.509 certificate presented by the server. + * + * @example CN=myserver, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_SUBJECT: "tls.server.subject"; +/** + * Domain extracted from the `url.full`, such as "opentelemetry.io". + * + * @example www.foo.bar + * @example opentelemetry.io + * @example 3.12.167.2 + * @example [1080:0:0:0:8:800:200C:417A] + * + * @note In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the domain field. If the URL contains a [literal IPv6 address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by `[` and `]`, the `[` and `]` characters should also be captured in the domain field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_DOMAIN: "url.domain"; +/** + * The file extension extracted from the `url.full`, excluding the leading dot. + * + * @example png + * @example gz + * + * @note The file extension is only set if it exists, as not every url has a file extension. When the file name has multiple extensions `example.tar.gz`, only the last one should be captured `gz`, not `tar.gz`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_EXTENSION: "url.extension"; +/** + * Unmodified original URL as seen in the event source. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example search?q=OpenTelemetry + * + * @note In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not. + * `url.original` might contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case password and username **SHOULD NOT** be redacted and attribute's value **SHOULD** remain the same. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_ORIGINAL: "url.original"; +/** + * Port extracted from the `url.full` + * + * @example 443 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_PORT: "url.port"; +/** + * The highest registered url domain, stripped of the subdomain. + * + * @example example.com + * @example foo.co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). For example, the registered domain for `foo.example.com` is `example.com`. Trying to approximate this by simply taking the last two labels will not work well for TLDs such as `co.uk`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_REGISTERED_DOMAIN: "url.registered_domain"; +/** + * The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + * + * @example east + * @example sub2.sub1 + * + * @note The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, with no trailing period. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_SUBDOMAIN: "url.subdomain"; +/** + * The low-cardinality template of an [absolute path reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2). + * + * @example /users/{id} + * @example /users/:id + * @example /users?id={id} + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_TEMPLATE: "url.template"; +/** + * The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is `com`. + * + * @example com + * @example co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_TOP_LEVEL_DOMAIN: "url.top_level_domain"; +/** + * User email address. + * + * @example a.einstein@example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_EMAIL: "user.email"; +/** + * User's full name + * + * @example Albert Einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_FULL_NAME: "user.full_name"; +/** + * Unique user hash to correlate information for a user in anonymized form. + * + * @example 364fc68eaf4c8acec74a4e52d7d1feaa + * + * @note Useful if `user.id` or `user.name` contain confidential information and cannot be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_HASH: "user.hash"; +/** + * Unique identifier of the user. + * + * @example S-1-5-21-202424912787-2692429404-2351956786-1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_ID: "user.id"; +/** + * Short name or login/username of the user. + * + * @example a.einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_NAME: "user.name"; +/** + * Array of user roles at the time of the event. + * + * @example ["admin", "reporting_user"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_ROLES: "user.roles"; +/** + * Name of the user-agent extracted from original. Usually refers to the browser's name. + * + * @example Safari + * @example YourApp + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name **SHOULD** be selected. In such a scenario it should align with `user_agent.version` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_NAME: "user_agent.name"; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @note For mapping user agent strings to OS names, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_OS_NAME: "user_agent.os.name"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @note For mapping user agent strings to OS versions, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_OS_VERSION: "user_agent.os.version"; +/** + * Specifies the category of synthetic traffic, such as tests or bots. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_SYNTHETIC_TYPE: "user_agent.synthetic.type"; +/** + * Enum value "bot" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Bot source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT: "bot"; +/** + * Enum value "test" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Synthetic test source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST: "test"; +/** + * Version of the user-agent extracted from original. Usually refers to the browser's version + * + * @example 14.1.2 + * @example 1.0.0 + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version **SHOULD** be selected. In such a scenario it should align with `user_agent.name` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_VERSION: "user_agent.version"; +/** + * The type of garbage collection. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_V8JS_GC_TYPE: "v8js.gc.type"; +/** + * Enum value "incremental" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Incremental (Incremental Marking). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_INCREMENTAL: "incremental"; +/** + * Enum value "major" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Major (Mark Sweep Compact). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Minor (Scavenge). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_MINOR: "minor"; +/** + * Enum value "weakcb" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Weak Callbacks (Process Weak Callbacks). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_WEAKCB: "weakcb"; +/** + * The name of the space type of heap memory. + * + * @note Value can be retrieved from value `space_name` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_V8JS_HEAP_SPACE_NAME: "v8js.heap.space.name"; +/** + * Enum value "code_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Code memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE: "code_space"; +/** + * Enum value "large_object_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Large object memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE: "large_object_space"; +/** + * Enum value "map_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Map memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE: "map_space"; +/** + * Enum value "new_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * New memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE: "new_space"; +/** + * Enum value "old_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Old memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE: "old_space"; +/** + * The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_CHANGE_ID: "vcs.change.id"; +/** + * The state of the change (pull request/merge request/changelist). + * + * @example open + * @example closed + * @example merged + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_CHANGE_STATE: "vcs.change.state"; +/** + * Enum value "closed" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Closed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_CLOSED: "closed"; +/** + * Enum value "merged" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Merged indicates that the change has been successfully integrated into the target codebase. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_MERGED: "merged"; +/** + * Enum value "open" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Open means the change is currently active and under review. It hasn't been merged into the target branch yet, and it's still possible to make changes or add comments. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_OPEN: "open"; +/** + * Enum value "wip" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * WIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_WIP: "wip"; +/** + * The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_CHANGE_TITLE: "vcs.change.title"; +/** + * The type of line change being measured on a branch or change. + * + * @example added + * @example removed + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_LINE_CHANGE_TYPE: "vcs.line_change.type"; +/** + * Enum value "added" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_LINE_CHANGE_TYPE_VALUE_ADDED: "added"; +/** + * Enum value "removed" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_LINE_CHANGE_TYPE_VALUE_REMOVED: "removed"; +/** + * The group owner within the version control system. + * + * @example my-org + * @example myteam + * @example business-unit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_OWNER_NAME: "vcs.owner.name"; +/** + * The name of the version control system provider. + * + * @example github + * @example gitlab + * @example gitea + * @example bitbucket + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_PROVIDER_NAME: "vcs.provider.name"; +/** + * Enum value "bitbucket" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Bitbucket](https://bitbucket.org) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_BITBUCKET: "bitbucket"; +/** + * Enum value "gitea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Gitea](https://gitea.io) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITEA: "gitea"; +/** + * Enum value "github" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitHub](https://github.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITHUB: "github"; +/** + * Enum value "gitlab" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitLab](https://gitlab.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITLAB: "gitlab"; +/** + * Enum value "gittea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * Deprecated, use `gitea` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gitea`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITTEA: "gittea"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_BASE_NAME: "vcs.ref.base.name"; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. The + * revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.base.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_BASE_REVISION: "vcs.ref.base.revision"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_BASE_TYPE: "vcs.ref.base.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_BASE_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_BASE_TYPE_VALUE_TAG: "tag"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_HEAD_NAME: "vcs.ref.head.name"; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `head` refers to where you are right now; the current reference at a + * given time.The revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.head.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_HEAD_REVISION: "vcs.ref.head.revision"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_HEAD_TYPE: "vcs.ref.head.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_HEAD_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_HEAD_TYPE_VALUE_TAG: "tag"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_TYPE: "vcs.ref.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_TYPE_VALUE_TAG: "tag"; +/** + * Deprecated, use `vcs.change.id` instead. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.id`. + */ +export declare const ATTR_VCS_REPOSITORY_CHANGE_ID: "vcs.repository.change.id"; +/** + * Deprecated, use `vcs.change.title` instead. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.title`. + */ +export declare const ATTR_VCS_REPOSITORY_CHANGE_TITLE: "vcs.repository.change.title"; +/** + * The human readable name of the repository. It **SHOULD NOT** include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. + * + * @example semantic-conventions + * @example my-cool-repo + * + * @note Due to it only being the name, it can clash with forks of the same + * repository if collecting telemetry across multiple orgs or groups in + * the same backends. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REPOSITORY_NAME: "vcs.repository.name"; +/** + * Deprecated, use `vcs.ref.head.name` instead. + * + * @example my-feature-branch + * @example tag-1-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.name`. + */ +export declare const ATTR_VCS_REPOSITORY_REF_NAME: "vcs.repository.ref.name"; +/** + * Deprecated, use `vcs.ref.head.revision` instead. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.revision`. + */ +export declare const ATTR_VCS_REPOSITORY_REF_REVISION: "vcs.repository.ref.revision"; +/** + * Deprecated, use `vcs.ref.head.type` instead. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.type`. + */ +export declare const ATTR_VCS_REPOSITORY_REF_TYPE: "vcs.repository.ref.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REPOSITORY_REF_TYPE_VALUE_TAG: "tag"; +/** + * The [canonical URL](https://support.google.com/webmasters/answer/10347851) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. + * + * @example https://github.com/opentelemetry/open-telemetry-collector-contrib + * @example https://gitlab.com/my-org/my-project/my-projects-project/repo + * + * @note In Git Version Control Systems, the canonical URL **SHOULD NOT** include + * the `.git` extension. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REPOSITORY_URL_FULL: "vcs.repository.url.full"; +/** + * The type of revision comparison. + * + * @example ahead + * @example behind + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REVISION_DELTA_DIRECTION: "vcs.revision_delta.direction"; +/** + * Enum value "ahead" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is ahead of the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD: "ahead"; +/** + * Enum value "behind" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is behind the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND: "behind"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_DESCRIPTION: "webengine.description"; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_NAME: "webengine.name"; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_VERSION: "webengine.version"; +/** + * The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis. + * + * @example SYS1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ZOS_SMF_ID: "zos.smf.id"; +/** + * The name of the SYSPLEX to which the z/OS system belongs too. + * + * @example SYSPLEX1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ZOS_SYSPLEX_NAME: "zos.sysplex.name"; +//# sourceMappingURL=experimental_attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js new file mode 100644 index 0000000..cd4c092 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js @@ -0,0 +1,14461 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * This attribute represents the state of the application. + * + * @example created + * + * @note The Android lifecycle states are defined in [Activity lifecycle callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), and from which the `OS identifiers` are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ANDROID_APP_STATE = 'android.app.state'; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_APP_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_APP_STATE_VALUE_CREATED = "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_APP_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found in the [Android API levels documentation](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels). + * + * @example 33 + * @example 32 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ANDROID_OS_API_LEVEL = 'android.os.api_level'; +/** + * Deprecated. Use `android.app.state` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `android.app.state`. + */ +export const ATTR_ANDROID_STATE = 'android.state'; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_STATE_VALUE_CREATED = "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ANDROID_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Unique identifier for a particular build or compilation of the application. + * + * @example 6cff0a7e-cefc-4668-96f5-1273d8b334d0 + * @example 9f2b833506aa6973a92fde9733e6271f + * @example my-app-1.0.0-code-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_BUILD_ID = 'app.build_id'; +/** + * A unique identifier representing the installation of an application on a specific device + * + * @example 2ab2916d-a51f-4ac8-80ee-45ac31a28092 + * + * @note Its value **SHOULD** persist across launches of the same application installation, including through application upgrades. + * It **SHOULD** change if the application is uninstalled or if all applications of the vendor are uninstalled. + * Additionally, users might be able to reset this value (e.g. by clearing application data). + * If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` **SHOULD** have a different value. + * If multiple OpenTelemetry SDKs are used within the same application, they **SHOULD** use the same value for `app.installation.id`. + * Hardware IDs (e.g. serial number, IMEI, MAC address) **MUST NOT** be used as the `app.installation.id`. + * + * For iOS, this value **SHOULD** be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor). + * + * For Android, examples of `app.installation.id` implementations include: + * + * - [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations). + * - A globally unique UUID which is persisted across sessions in your application. + * - [App set ID](https://developer.android.com/identity/app-set-id). + * - [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID). + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_INSTALLATION_ID = 'app.installation.id'; +/** + * A number of frame renders that experienced jank. + * + * @example 9 + * @example 42 + * + * @note Depending on platform limitations, the value provided **MAY** be approximation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_JANK_FRAME_COUNT = 'app.jank.frame_count'; +/** + * The time period, in seconds, for which this jank is being reported. + * + * @example 1.0 + * @example 5.0 + * @example 10.24 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_JANK_PERIOD = 'app.jank.period'; +/** + * The minimum rendering threshold for this jank, in seconds. + * + * @example 0.016 + * @example 0.7 + * @example 1.024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_JANK_THRESHOLD = 'app.jank.threshold'; +/** + * The x (horizontal) coordinate of a screen coordinate, in screen pixels. + * + * @example 0 + * @example 131 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_SCREEN_COORDINATE_X = 'app.screen.coordinate.x'; +/** + * The y (vertical) component of a screen coordinate, in screen pixels. + * + * @example 12 + * @example 99 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_SCREEN_COORDINATE_Y = 'app.screen.coordinate.y'; +/** + * An identifier that uniquely differentiates this screen from other screens in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example com.example.app.MainActivity + * @example com.example.shop.ProductDetailFragment + * @example MyApp.ProfileView + * @example MyApp.ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_SCREEN_ID = 'app.screen.id'; +/** + * The name of an application screen. + * + * @example MainActivity + * @example ProductDetailFragment + * @example ProfileView + * @example ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_SCREEN_NAME = 'app.screen.name'; +/** + * An identifier that uniquely differentiates this widget from other widgets in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example submit_order_1829 + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_WIDGET_ID = 'app.widget.id'; +/** + * The name of an application widget. + * + * @example submit + * @example attack + * @example Clear Cart + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_APP_WIDGET_NAME = 'app.widget.name'; +/** + * The provenance filename of the built attestation which directly relates to the build artifact filename. This filename **SHOULD** accompany the artifact at publish time. See the [SLSA Relationship](https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations) specification for more information. + * + * @example golang-binary-amd64-v0.1.0.attestation + * @example docker-image-amd64-v0.1.0.intoto.json1 + * @example release-1.tar.gz.attestation + * @example file-name-package.tar.gz.intoto.json1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_ATTESTATION_FILENAME = 'artifact.attestation.filename'; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the [software attestation space](https://github.com/in-toto/attestation/tree/main/spec) also refer to this as the **digest**. + * + * @example 1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_ATTESTATION_HASH = 'artifact.attestation.hash'; +/** + * The id of the build [software attestation](https://slsa.dev/attestation-model). + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_ATTESTATION_ID = 'artifact.attestation.id'; +/** + * The human readable file name of the artifact, typically generated during build and release processes. Often includes the package name and version in the file name. + * + * @example golang-binary-amd64-v0.1.0 + * @example docker-image-amd64-v0.1.0 + * @example release-1.tar.gz + * @example file-name-package.tar.gz + * + * @note This file name can also act as the [Package Name](https://slsa.dev/spec/v1.0/terminology#package-model) + * in cases where the package ecosystem maps accordingly. + * Additionally, the artifact [can be published](https://slsa.dev/spec/v1.0/terminology#software-supply-chain) + * for others, but that is not a guarantee. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_FILENAME = 'artifact.filename'; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), often found in checksum.txt on a release of the artifact and used to verify package integrity. + * + * @example 9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9 + * + * @note The specific algorithm used to create the cryptographic hash value is + * not defined. In situations where an artifact has multiple + * cryptographic hashes, it is up to the implementer to choose which + * hash value to set here; this should be the most secure hash algorithm + * that is suitable for the situation and consistent with the + * corresponding attestation. The implementer can then provide the other + * hash values through an additional set of attribute extensions as they + * deem necessary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_HASH = 'artifact.hash'; +/** + * The [Package URL](https://github.com/package-url/purl-spec) of the [package artifact](https://slsa.dev/spec/v1.0/terminology#package-model) provides a standard way to identify and locate the packaged artifact. + * + * @example pkg:github/package-url/purl-spec@1209109710924 + * @example pkg:npm/foo@12.12.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_PURL = 'artifact.purl'; +/** + * The version of the artifact. + * + * @example v0.1.0 + * @example 1.2.1 + * @example 122691-build + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ARTIFACT_VERSION = 'artifact.version'; +/** + * The result of the authentication operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_AUTHENTICATION_RESULT = 'aspnetcore.authentication.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "none" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * No authentication information returned. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_NONE = "none"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_SUCCESS = "success"; +/** + * The identifier that names a particular authentication handler. + * + * @example Cookies + * @example Bearer + * @example Identity.Application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_AUTHENTICATION_SCHEME = 'aspnetcore.authentication.scheme'; +/** + * The name of the authorization policy. + * + * @example RequireAdminRole + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_AUTHORIZATION_POLICY = 'aspnetcore.authorization.policy'; +/** + * The result of calling the authorization service. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_AUTHORIZATION_RESULT = 'aspnetcore.authorization.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_SUCCESS = "success"; +/** + * The error code for a failed identity operation. + * + * @example DefaultError + * @example PasswordMismatch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_ERROR_CODE = 'aspnetcore.identity.error_code'; +/** + * The result from checking the password. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT = 'aspnetcore.identity.password_check_result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "password_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the password was missing from the user. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_PASSWORD_MISSING = "password_missing"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS = "success"; +/** + * Enum value "success_rehash_needed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful however the password was encoded using a deprecated algorithm and should be rehashed and updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS_REHASH_NEEDED = "success_rehash_needed"; +/** + * Enum value "user_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the user was missing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_USER_MISSING = "user_missing"; +/** + * The result of the identity operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_RESULT = 'aspnetcore.identity.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_RESULT_VALUE_SUCCESS = "success"; +/** + * Whether the sign in result was success or failure. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT = 'aspnetcore.identity.sign_in.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "locked_out" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is locked out. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_LOCKED_OUT = "locked_out"; +/** + * Enum value "not_allowed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is not allowed to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_NOT_ALLOWED = "not_allowed"; +/** + * Enum value "requires_two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User requires two factory authentication to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_REQUIRES_TWO_FACTOR = "requires_two_factor"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_SUCCESS = "success"; +/** + * The authentication type. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE = 'aspnetcore.identity.sign_in.type'; +/** + * Enum value "external" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a previously registered third-party login. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_EXTERNAL = "external"; +/** + * Enum value "passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with passkey. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSKEY = "passkey"; +/** + * Enum value "password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSWORD = "password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a two factor provider. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR = "two_factor"; +/** + * Enum value "two_factor_authenticator" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factor authenticator app. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_AUTHENTICATOR = "two_factor_authenticator"; +/** + * Enum value "two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factory recovery code. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_RECOVERY_CODE = "two_factor_recovery_code"; +/** + * What the token will be used for. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE = 'aspnetcore.identity.token_purpose'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * Any token purpose that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_OTHER = "_OTHER"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing the user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_EMAIL = "change_email"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing a user phone number. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_PHONE_NUMBER = "change_phone_number"; +/** + * Enum value "email_confirmation" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for confirming user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_EMAIL_CONFIRMATION = "email_confirmation"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for resetting a user password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_RESET_PASSWORD = "reset_password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing user two factor settings. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_TWO_FACTOR = "two_factor"; +/** + * The result of token verification. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED = 'aspnetcore.identity.token_verified'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_SUCCESS = "success"; +/** + * The user update type. + * + * @example update + * @example user_name + * @example reset_password + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE = 'aspnetcore.identity.user.update_type'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Any update type that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_OTHER = "_OTHER"; +/** + * Enum value "access_failed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure recorded. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ACCESS_FAILED = "access_failed"; +/** + * Enum value "add_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_CLAIMS = "add_claims"; +/** + * Enum value "add_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_LOGIN = "add_login"; +/** + * Enum value "add_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_PASSWORD = "add_password"; +/** + * Enum value "add_to_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user added to roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_TO_ROLES = "add_to_roles"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_EMAIL = "change_email"; +/** + * Enum value "change_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PASSWORD = "change_password"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PHONE_NUMBER = "change_phone_number"; +/** + * Enum value "confirm_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email confirmed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CONFIRM_EMAIL = "confirm_email"; +/** + * Enum value "generate_new_two_factor_recovery_codes" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user new two-factor recovery codes generated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_GENERATE_NEW_TWO_FACTOR_RECOVERY_CODES = "generate_new_two_factor_recovery_codes"; +/** + * Enum value "password_rehash" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password rehashed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_PASSWORD_REHASH = "password_rehash"; +/** + * Enum value "redeem_two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor recovery code redeemed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REDEEM_TWO_FACTOR_RECOVERY_CODE = "redeem_two_factor_recovery_code"; +/** + * Enum value "remove_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_AUTHENTICATION_TOKEN = "remove_authentication_token"; +/** + * Enum value "remove_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_CLAIMS = "remove_claims"; +/** + * Enum value "remove_from_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user removed from roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_FROM_ROLES = "remove_from_roles"; +/** + * Enum value "remove_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_LOGIN = "remove_login"; +/** + * Enum value "remove_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSKEY = "remove_passkey"; +/** + * Enum value "remove_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSWORD = "remove_password"; +/** + * Enum value "replace_claim" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claim replaced. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REPLACE_CLAIM = "replace_claim"; +/** + * Enum value "reset_access_failed_count" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure count reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_ACCESS_FAILED_COUNT = "reset_access_failed_count"; +/** + * Enum value "reset_authenticator_key" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authenticator key reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_AUTHENTICATOR_KEY = "reset_authenticator_key"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_PASSWORD = "reset_password"; +/** + * Enum value "security_stamp" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user security stamp updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SECURITY_STAMP = "security_stamp"; +/** + * Enum value "set_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_AUTHENTICATION_TOKEN = "set_authentication_token"; +/** + * Enum value "set_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_EMAIL = "set_email"; +/** + * Enum value "set_lockout_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_ENABLED = "set_lockout_enabled"; +/** + * Enum value "set_lockout_end_date" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout end date set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_END_DATE = "set_lockout_end_date"; +/** + * Enum value "set_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PASSKEY = "set_passkey"; +/** + * Enum value "set_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PHONE_NUMBER = "set_phone_number"; +/** + * Enum value "set_two_factor_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor authentication enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_TWO_FACTOR_ENABLED = "set_two_factor_enabled"; +/** + * Enum value "update" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_UPDATE = "update"; +/** + * Enum value "user_name" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user name updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_USER_NAME = "user_name"; +/** + * The full name of the identity user type. + * + * @example Contoso.ContosoUser + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_IDENTITY_USER_TYPE = 'aspnetcore.identity.user_type'; +/** + * The name of the library or subsystem using the memory pool instance. + * + * @example kestrel + * @example iis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_MEMORY_POOL_OWNER = 'aspnetcore.memory_pool.owner'; +/** + * A flag indicating whether the sign in is persistent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ASPNETCORE_SIGN_IN_IS_PERSISTENT = 'aspnetcore.sign_in.is_persistent'; +/** + * The unique identifier of the AWS Bedrock Guardrail. A [guardrail](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) helps safeguard and prevent unwanted behavior from model responses or user messages. + * + * @example sgi5gkybzqak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_BEDROCK_GUARDRAIL_ID = 'aws.bedrock.guardrail.id'; +/** + * The unique identifier of the AWS Bedrock Knowledge base. A [knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) is a bank of information that can be queried by models to generate more relevant responses and augment prompts. + * + * @example XFWUPB9PAW + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_BEDROCK_KNOWLEDGE_BASE_ID = 'aws.bedrock.knowledge_base.id'; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @example ["{ "AttributeName": "string", "AttributeType": "string" }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions'; +/** + * The value of the `AttributesToGet` request parameter. + * + * @example ["lives", "id"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get'; +/** + * The value of the `ConsistentRead` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read'; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @example ["{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity'; +/** + * The value of the `Count` response parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count'; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @example Users + * @example CatsTable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table'; +/** + * The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field. + * + * @example ["{ "Create": { "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates'; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field + * + * @example ["{ "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes'; +/** + * The value of the `IndexName` request parameter. + * + * @example name_to_group + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name'; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @example { "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] } + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics'; +/** + * The value of the `Limit` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit'; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @example ["{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes'; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @example Title + * @example Title, Price, Color + * @example Title, Description, RelatedItems, ProductReviews + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection'; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity'; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity'; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward'; +/** + * The value of the `ScannedCount` response parameter. + * + * @example 50 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count'; +/** + * The value of the `Segment` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment'; +/** + * The value of the `Select` request parameter. + * + * @example ALL_ATTRIBUTES + * @example COUNT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select'; +/** + * The number of items in the `TableNames` response parameter. + * + * @example 20 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count'; +/** + * The keys in the `RequestItems` object field. + * + * @example ["Users", "Cats"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names'; +/** + * The value of the `TotalSegments` request parameter. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments'; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn'; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @example arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn'; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype'; +/** + * Enum value "ec2" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon EC2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AWS_ECS_LAUNCHTYPE_VALUE_EC2 = "ec2"; +/** + * Enum value "fargate" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon Fargate + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AWS_ECS_LAUNCHTYPE_VALUE_FARGATE = "fargate"; +/** + * The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids). + * + * @example arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b + * @example arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn'; +/** + * The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task. + * + * @example opentelemetry-family + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family'; +/** + * The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`. + * + * @example 10838bed-421f-43ef-870a-f43feacbbb5b + * @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_TASK_ID = 'aws.ecs.task.id'; +/** + * The revision for the task definition used to create the ECS task. + * + * @example 8 + * @example 26 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision'; +/** + * The ARN of an EKS cluster. + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn'; +/** + * The AWS extended request ID as returned in the response header `x-amz-id-2`. + * + * @example wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ= + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_EXTENDED_REQUEST_ID = 'aws.extended_request_id'; +/** + * The name of the AWS Kinesis [stream](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) the request refers to. Corresponds to the `--stream-name` parameter of the Kinesis [describe-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html) operation. + * + * @example some-stream-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_KINESIS_STREAM_NAME = 'aws.kinesis.stream_name'; +/** + * 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). + * + * @example arn:aws:lambda:us-east-1:123456:function:myfunction:myalias + * + * @note This may be different from `cloud.resource_id` if an alias is involved. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn'; +/** + * The UUID of the [AWS Lambda EvenSource Mapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html). An event source is mapped to a lambda function. It's contents are read by Lambda and used to trigger a function. This isn't available in the lambda execution context or the lambda runtime environtment. This is going to be populated by the AWS SDK for each language when that UUID is present. Some of these operations are Create/Delete/Get/List/Update EventSourceMapping. + * + * @example 587ad24b-03b9-4413-8202-bbd56b36e5b7 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LAMBDA_RESOURCE_MAPPING_ID = 'aws.lambda.resource_mapping.id'; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*"] + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns'; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * @example ["/aws/lambda/my-function", "opentelemetry-service"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LOG_GROUP_NAMES = 'aws.log.group.names'; +/** + * The ARN(s) of the AWS log stream(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns'; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @example ["logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names'; +/** + * The AWS request ID as returned in the response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`. + * + * @example 79b9da39-b7ae-508a-a6bc-864b2829c622 + * @example C9ER4AJX75574TDJ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_REQUEST_ID = 'aws.request_id'; +/** + * The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example some-bucket-name + * + * @note The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter. + * This applies to almost all S3 operations except `list-buckets`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_BUCKET = 'aws.s3.bucket'; +/** + * The source object (in the form `bucket`/`key`) for the copy operation. + * + * @example someFile.yml + * + * @note The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter + * of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html). + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_COPY_SOURCE = 'aws.s3.copy_source'; +/** + * The delete request container that specifies the objects to be deleted. + * + * @example Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean + * + * @note The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation. + * The `delete` attribute corresponds to the `--delete` parameter of the + * [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_DELETE = 'aws.s3.delete'; +/** + * The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example someFile.yml + * + * @note The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter. + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) + * - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html) + * - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html) + * - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html) + * - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html) + * - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html) + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_KEY = 'aws.s3.key'; +/** + * The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000. + * + * @example 3456 + * + * @note The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations. + * The `part_number` attribute corresponds to the `--part-number` parameter of the + * [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_PART_NUMBER = 'aws.s3.part_number'; +/** + * Upload ID that identifies the multipart upload. + * + * @example dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ + * + * @note The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter + * of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations. + * This applies in particular to the following operations: + * + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_S3_UPLOAD_ID = 'aws.s3.upload_id'; +/** + * The ARN of the Secret stored in the Secrets Mangger + * + * @example arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_SECRETSMANAGER_SECRET_ARN = 'aws.secretsmanager.secret.arn'; +/** + * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) is a logical access point that acts as a communication channel. + * + * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_SNS_TOPIC_ARN = 'aws.sns.topic.arn'; +/** + * The URL of the AWS SQS Queue. It's a unique identifier for a queue in Amazon Simple Queue Service (SQS) and is used to access the queue and perform actions on it. + * + * @example https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_SQS_QUEUE_URL = 'aws.sqs.queue.url'; +/** + * The ARN of the AWS Step Functions Activity. + * + * @example arn:aws:states:us-east-1:123456789012:activity:get-greeting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN = 'aws.step_functions.activity.arn'; +/** + * The ARN of the AWS Step Functions State Machine. + * + * @example arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN = 'aws.step_functions.state_machine.arn'; +/** + * Deprecated, use `azure.resource_provider.namespace` instead. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource_provider.namespace`. + */ +export const ATTR_AZ_NAMESPACE = 'az.namespace'; +/** + * Deprecated, use `azure.service.request.id` instead. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.service.request.id`. + */ +export const ATTR_AZ_SERVICE_REQUEST_ID = 'az.service_request_id'; +/** + * The unique identifier of the client instance. + * + * @example 3ba4827d-4422-483f-b59f-85b74211c11d + * @example storage-client-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_CLIENT_ID = 'azure.client.id'; +/** + * Cosmos client connection mode. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_CONNECTION_MODE = 'azure.cosmosdb.connection.mode'; +/** + * Enum value "direct" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = "gateway"; +/** + * Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL = 'azure.cosmosdb.consistency.level'; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Bounded Staleness + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Consistent Prefix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Eventual + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Session + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Strong + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = "Strong"; +/** + * List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @note Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS = 'azure.cosmosdb.operation.contacted_regions'; +/** + * The number of request units consumed by the operation. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.operation.request_charge'; +/** + * Request payload size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_REQUEST_BODY_SIZE = 'azure.cosmosdb.request.body.size'; +/** + * Cosmos DB sub status code. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE = 'azure.cosmosdb.response.sub_status_code'; +/** + * [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_RESOURCE_PROVIDER_NAMESPACE = 'azure.resource_provider.namespace'; +/** + * The unique identifier of the service request. It's generated by the Azure service and returned with the response. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AZURE_SERVICE_REQUEST_ID = 'azure.service.request.id'; +/** + * Array of brand name and version separated by a space + * + * @example [" Not A;Brand 99", "Chromium 99", "Chrome 99"] + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_BROWSER_BRANDS = 'browser.brands'; +/** + * Preferred language of the user using the browser + * + * @example en + * @example en-US + * @example fr + * @example fr-FR + * + * @note This value is intended to be taken from the Navigator API `navigator.language`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_BROWSER_LANGUAGE = 'browser.language'; +/** + * A boolean that is true if the browser is running on a mobile device + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute **SHOULD** be left unset. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_BROWSER_MOBILE = 'browser.mobile'; +/** + * The platform on which the browser is running + * + * @example Windows + * @example macOS + * @example Android + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API **SHOULD NOT** be used instead and this attribute **SHOULD** be left unset in order for the values to be consistent. + * The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_BROWSER_PLATFORM = 'browser.platform'; +/** + * 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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_CONSISTENCY_LEVEL = 'cassandra.consistency.level'; +/** + * Enum value "all" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * All + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = "all"; +/** + * Enum value "any" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Any + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Each Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = "serial"; +/** + * Enum value "three" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Three + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = "three"; +/** + * Enum value "two" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Two + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = "two"; +/** + * The data center of the coordinating node for a query. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_COORDINATOR_DC = 'cassandra.coordinator.dc'; +/** + * The ID of the coordinating node for a query. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_COORDINATOR_ID = 'cassandra.coordinator.id'; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_PAGE_SIZE = 'cassandra.page.size'; +/** + * Whether or not the query is idempotent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_QUERY_IDEMPOTENT = 'cassandra.query.idempotent'; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'cassandra.speculative_execution.count'; +/** + * The kind of action a pipeline run is performing. + * + * @example BUILD + * @example RUN + * @example SYNC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_ACTION_NAME = 'cicd.pipeline.action.name'; +/** + * Enum value "BUILD" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a build. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_ACTION_NAME_VALUE_BUILD = "BUILD"; +/** + * Enum value "RUN" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_ACTION_NAME_VALUE_RUN = "RUN"; +/** + * Enum value "SYNC" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a sync. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_ACTION_NAME_VALUE_SYNC = "SYNC"; +/** + * The human readable name of the pipeline within a CI/CD system. + * + * @example Build and Test + * @example Lint + * @example Deploy Go Project + * @example deploy_to_environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_NAME = 'cicd.pipeline.name'; +/** + * The result of a pipeline run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_RESULT = 'cicd.pipeline.result'; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_CANCELLATION = "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_ERROR = "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_SKIP = "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_SUCCESS = "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * A timeout caused the pipeline run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RESULT_VALUE_TIMEOUT = "timeout"; +/** + * The unique identifier of a pipeline run within a CI/CD system. + * + * @example 120912 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_RUN_ID = 'cicd.pipeline.run.id'; +/** + * The pipeline run goes through these states during its lifecycle. + * + * @example pending + * @example executing + * @example finalizing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_RUN_STATE = 'cicd.pipeline.run.state'; +/** + * Enum value "executing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The executing state spans the execution of any run tasks (eg. build, test). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RUN_STATE_VALUE_EXECUTING = "executing"; +/** + * Enum value "finalizing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The finalizing state spans from when the run has finished executing (eg. cleanup of run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RUN_STATE_VALUE_FINALIZING = "finalizing"; +/** + * Enum value "pending" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_RUN_STATE_VALUE_PENDING = "pending"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline run, providing the complete address in order to locate and identify the pipeline run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_RUN_URL_FULL = 'cicd.pipeline.run.url.full'; +/** + * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures. + * + * @example Run GoLang Linter + * @example Go Build + * @example go-test + * @example deploy_binary + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_TASK_NAME = 'cicd.pipeline.task.name'; +/** + * The unique identifier of a task run within a pipeline. + * + * @example 12097 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_TASK_RUN_ID = 'cicd.pipeline.task.run.id'; +/** + * The result of a task run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_TASK_RUN_RESULT = 'cicd.pipeline.task.run.result'; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was cancelled, eg. by a user manually cancelling the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_CANCELLATION = "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_ERROR = "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SKIP = "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SUCCESS = "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * A timeout caused the task run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_TIMEOUT = "timeout"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline task run, providing the complete address in order to locate and identify the pipeline task run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL = 'cicd.pipeline.task.run.url.full'; +/** + * The type of the task within a pipeline. + * + * @example build + * @example test + * @example deploy + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_PIPELINE_TASK_TYPE = 'cicd.pipeline.task.type'; +/** + * Enum value "build" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * build + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_TYPE_VALUE_BUILD = "build"; +/** + * Enum value "deploy" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * deploy + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY = "deploy"; +/** + * Enum value "test" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * test + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_PIPELINE_TASK_TYPE_VALUE_TEST = "test"; +/** + * The name of a component of the CICD system. + * + * @example controller + * @example scheduler + * @example agent + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_SYSTEM_COMPONENT = 'cicd.system.component'; +/** + * The unique identifier of a worker within a CICD system. + * + * @example abc123 + * @example 10.0.1.2 + * @example controller + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_WORKER_ID = 'cicd.worker.id'; +/** + * The name of a worker within a CICD system. + * + * @example agent-abc + * @example controller + * @example Ubuntu LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_WORKER_NAME = 'cicd.worker.name'; +/** + * The state of a CICD worker / agent. + * + * @example idle + * @example busy + * @example down + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_WORKER_STATE = 'cicd.worker.state'; +/** + * Enum value "available" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_WORKER_STATE_VALUE_AVAILABLE = "available"; +/** + * Enum value "busy" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is performing work for the CICD system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_WORKER_STATE_VALUE_BUSY = "busy"; +/** + * Enum value "offline" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not available to the CICD system (disconnected / down). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CICD_WORKER_STATE_VALUE_OFFLINE = "offline"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the worker, providing the complete address in order to locate and identify the worker. + * + * @example https://cicd.example.org/worker/abc123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CICD_WORKER_URL_FULL = 'cicd.worker.url.full'; +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id'; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone'; +/** + * The cloud platform in use. + * + * @note The prefix of the service **SHOULD** match the one specified in `cloud.provider`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_PLATFORM = 'cloud.platform'; +/** + * Enum value "akamai_cloud.compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Akamai Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE = "akamai_cloud.compute"; +/** + * Enum value "alibaba_cloud_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Elastic Compute Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS = "alibaba_cloud_ecs"; +/** + * Enum value "alibaba_cloud_fc" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Function Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC = "alibaba_cloud_fc"; +/** + * Enum value "alibaba_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT = "alibaba_cloud_openshift"; +/** + * Enum value "aws_app_runner" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS App Runner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER = "aws_app_runner"; +/** + * Enum value "aws_ec2" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Compute Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_EC2 = "aws_ec2"; +/** + * Enum value "aws_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Container Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_ECS = "aws_ecs"; +/** + * Enum value "aws_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_EKS = "aws_eks"; +/** + * Enum value "aws_elastic_beanstalk" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Beanstalk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk"; +/** + * Enum value "aws_lambda" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Lambda + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_LAMBDA = "aws_lambda"; +/** + * Enum value "aws_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on AWS (ROSA) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT = "aws_openshift"; +/** + * Enum value "azure.aks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_AKS = "azure.aks"; +/** + * Enum value "azure.app_service" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure App Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE = "azure.app_service"; +/** + * Enum value "azure.container_apps" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Apps + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS = "azure.container_apps"; +/** + * Enum value "azure.container_instances" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Instances + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES = "azure.container_instances"; +/** + * Enum value "azure.functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Functions + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS = "azure.functions"; +/** + * Enum value "azure.openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Red Hat OpenShift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT = "azure.openshift"; +/** + * Enum value "azure.vm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Virtual Machines + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_AZURE_VM = "azure.vm"; +/** + * Enum value "gcp.agent_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Vertex AI Agent Engine + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE = "gcp.agent_engine"; +/** + * Enum value "gcp_app_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud App Engine (GAE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE = "gcp_app_engine"; +/** + * Enum value "gcp_bare_metal_solution" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Bare Metal Solution (BMS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION = "gcp_bare_metal_solution"; +/** + * Enum value "gcp_cloud_functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Functions (GCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS = "gcp_cloud_functions"; +/** + * Enum value "gcp_cloud_run" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Run + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN = "gcp_cloud_run"; +/** + * Enum value "gcp_compute_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Compute Engine (GCE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE = "gcp_compute_engine"; +/** + * Enum value "gcp_kubernetes_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Kubernetes Engine (GKE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE = "gcp_kubernetes_engine"; +/** + * Enum value "gcp_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Google Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT = "gcp_openshift"; +/** + * Enum value "hetzner.cloud_server" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Server on Hetzner Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER = "hetzner.cloud_server"; +/** + * Enum value "ibm_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT = "ibm_cloud_openshift"; +/** + * Enum value "oracle_cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Compute on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_COMPUTE = "oracle_cloud_compute"; +/** + * Enum value "oracle_cloud_oke" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_OKE = "oracle_cloud_oke"; +/** + * Enum value "tencent_cloud_cvm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Cloud Virtual Machine (CVM) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM = "tencent_cloud_cvm"; +/** + * Enum value "tencent_cloud_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Elastic Kubernetes Service (EKS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS = "tencent_cloud_eks"; +/** + * Enum value "tencent_cloud_scf" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Serverless Cloud Function (SCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF = "tencent_cloud_scf"; +/** + * Enum value "vultr.cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Vultr Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE = "vultr.cloud_compute"; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_PROVIDER = 'cloud.provider'; +/** + * Enum value "akamai_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Akamai Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD = "akamai_cloud"; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_AWS = "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_AZURE = "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_GCP = "gcp"; +/** + * Enum value "heroku" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Heroku Platform as a Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_HEROKU = "heroku"; +/** + * Enum value "hetzner" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Hetzner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_HETZNER = "hetzner"; +/** + * Enum value "ibm_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_IBM_CLOUD = "ibm_cloud"; +/** + * Enum value "oracle_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_ORACLE_CLOUD = "oracle_cloud"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_TENCENT_CLOUD = "tencent_cloud"; +/** + * Enum value "vultr" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Vultr + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CLOUD_PROVIDER_VALUE_VULTR = "vultr"; +/** + * The geographical region within a cloud provider. When associated with a resource, this attribute specifies the region where the resource operates. When calling services or APIs deployed on a cloud, this attribute identifies the region where the called destination is deployed. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_REGION = 'cloud.region'; +/** + * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://google.aip.dev/122#full-resource-names) on GCP) + * + * @example arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function + * @example //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID + * @example /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/ + * + * @note On some cloud providers, it may not be possible to determine the full ID at startup, + * so it may be necessary to set `cloud.resource_id` as a span attribute instead. + * + * The exact value to use for `cloud.resource_id` depends on the cloud provider. + * The following well-known definitions **MUST** be used if you set this attribute and they apply: + * + * - **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + * Take care not to use the "invoked ARN" directly but replace any + * [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 invocable with + * multiple different aliases. + * - **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) + * - **Azure:** The [Fully Qualified Resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) of the invoked function, + * *not* the function app, having the form + * `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`. + * This means that a span attribute **MUST** be used, as an Azure function app can host multiple functions that would usually share + * a TracerProvider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUD_RESOURCE_ID = 'cloud.resource_id'; +/** + * The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event. + * + * @example 123e4567-e89b-12d3-a456-426614174000 + * @example 0001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDEVENTS_EVENT_ID = 'cloudevents.event_id'; +/** + * The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened. + * + * @example https://github.com/cloudevents + * @example /cloudevents/spec/pull/123 + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDEVENTS_EVENT_SOURCE = 'cloudevents.event_source'; +/** + * The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses. + * + * @example "1.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION = 'cloudevents.event_spec_version'; +/** + * The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source). + * + * @example "mynewfile.jpg" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDEVENTS_EVENT_SUBJECT = 'cloudevents.event_subject'; +/** + * The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence. + * + * @example com.github.pull_request.opened + * @example com.example.object.deleted.v2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDEVENTS_EVENT_TYPE = 'cloudevents.event_type'; +/** + * The guid of the application. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_id`. This is the same value as + * reported by `cf app --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_APP_ID = 'cloudfoundry.app.id'; +/** + * The index of the application instance. 0 when just one instance is active. + * + * @example 0 + * @example 1 + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the application instance index for applications + * deployed on the runtime. + * + * Application instrumentation should use the value from environment + * variable `CF_INSTANCE_INDEX`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID = 'cloudfoundry.app.instance.id'; +/** + * The name of the application. + * + * @example my-app-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_name`. This is the same value + * as reported by `cf apps`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_APP_NAME = 'cloudfoundry.app.name'; +/** + * The guid of the CloudFoundry org the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_id`. This is the same value as + * reported by `cf org --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_ORG_ID = 'cloudfoundry.org.id'; +/** + * The name of the CloudFoundry organization the app is running in. + * + * @example my-org-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_name`. This is the same value as + * reported by `cf orgs`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_ORG_NAME = 'cloudfoundry.org.name'; +/** + * The UID identifying the process. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to + * `VCAP_APPLICATION.app_id` for applications deployed to the runtime. + * For system components, this could be the actual PID. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_PROCESS_ID = 'cloudfoundry.process.id'; +/** + * The type of process. + * + * @example web + * + * @note CloudFoundry applications can consist of multiple jobs. Usually the + * main process will be of type `web`. There can be additional background + * tasks or side-cars with different process types. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_PROCESS_TYPE = 'cloudfoundry.process.type'; +/** + * The guid of the CloudFoundry space the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_id`. This is the same value as + * reported by `cf space --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_SPACE_ID = 'cloudfoundry.space.id'; +/** + * The name of the CloudFoundry space the application is running in. + * + * @example my-space-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_name`. This is the same value as + * reported by `cf spaces`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_SPACE_NAME = 'cloudfoundry.space.name'; +/** + * A guid or another name describing the event source. + * + * @example cf/gorouter + * + * @note CloudFoundry defines the `source_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the component name, e.g. "gorouter", for + * CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.id` should be set to + * `spec.deployment/spec.name`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_SYSTEM_ID = 'cloudfoundry.system.id'; +/** + * A guid describing the concrete instance of the event source. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the vm id for CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.instance.id` should be set to `spec.id`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID = 'cloudfoundry.system.instance.id'; +/** + * Deprecated, use `code.column.number` + * + * @example 16 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.column.number`. + */ +export const ATTR_CODE_COLUMN = 'code.column'; +/** + * Deprecated, use `code.file.path` instead + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.file.path`. + */ +export const ATTR_CODE_FILEPATH = 'code.filepath'; +/** + * Deprecated, use `code.function.name` instead + * + * @example "serveRequest" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +export const ATTR_CODE_FUNCTION = 'code.function'; +/** + * Deprecated, use `code.line.number` instead + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.line.number`. + */ +export const ATTR_CODE_LINENO = 'code.lineno'; +/** + * Deprecated, namespace is now included into `code.function.name` + * + * @example "com.example.MyHttpService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +export const ATTR_CODE_NAMESPACE = 'code.namespace'; +/** + * The command used to run the container (i.e. the command name). + * + * @example otelcontribcol + * + * @note If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_COMMAND = 'container.command'; +/** + * All the command arguments (including the command/executable itself) run by the container. + * + * @example ["otelcontribcol", "--config", "config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_COMMAND_ARGS = 'container.command_args'; +/** + * The full command run by the container as a single string representing the full command. + * + * @example otelcontribcol --config config.yaml + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_COMMAND_LINE = 'container.command_line'; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example user + * @example kernel + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export const ATTR_CONTAINER_CPU_STATE = 'container.cpu.state'; +/** + * Enum value "kernel" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CONTAINER_CPU_STATE_VALUE_KERNEL = "kernel"; +/** + * Enum value "system" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When CPU is used by the system (host OS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CONTAINER_CPU_STATE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CONTAINER_CPU_STATE_VALUE_USER = "user"; +/** + * The name of the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin used by the volume. + * + * @example pd.csi.storage.gke.io + * + * @note This can sometimes be referred to as a "driver" in CSI implementations. This should represent the `name` field of the GetPluginInfo RPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_CSI_PLUGIN_NAME = 'container.csi.plugin.name'; +/** + * The unique volume ID returned by the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin. + * + * @example projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk + * + * @note This can sometimes be referred to as a "volume handle" in CSI implementations. This should represent the `Volume.volume_id` field in CSI spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_CSI_VOLUME_ID = 'container.csi.volume.id'; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_ID = 'container.id'; +/** + * Runtime specific image identifier. Usually a hash algorithm followed by a UUID. + * + * @example sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f + * + * @note Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect) endpoint. + * K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. + * The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_ID = 'container.image.id'; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name'; +/** + * Repo digests of the container image as provided by the container runtime. + * + * @example ["example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb", "internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578"] + * + * @note [Docker](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_REPO_DIGESTS = 'container.image.repo_digests'; +/** + * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags'; +/** + * Container labels, `` being the label name, the value being the label value. + * + * @example nginx + * + * @note For example, a docker container label `app` with value `nginx` **SHOULD** be recorded as the `container.label.app` attribute with value `"nginx"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_LABEL = (key) => `container.label.${key}`; +/** + * Deprecated, use `container.label` instead. + * + * @example nginx + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.label`. + */ +export const ATTR_CONTAINER_LABELS = (key) => `container.labels.${key}`; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_NAME = 'container.name'; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.runtime.name`. + */ +export const ATTR_CONTAINER_RUNTIME = 'container.runtime'; +/** + * A description about the runtime which could include, for example details about the CRI/API version being used or other customisations. + * + * @example docker://19.3.1 - CRI: 1.22.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_RUNTIME_DESCRIPTION = 'container.runtime.description'; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_RUNTIME_NAME = 'container.runtime.name'; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "1.0.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CONTAINER_RUNTIME_VERSION = 'container.runtime.version'; +/** + * The logical CPU number [0..n-1] + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CPU_LOGICAL_NUMBER = 'cpu.logical_number'; +/** + * The mode of the CPU + * + * @example user + * @example system + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CPU_MODE = 'cpu.mode'; +/** + * Enum value "idle" for attribute {@link ATTR_CPU_MODE}. + * + * Idle + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_IDLE = "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_CPU_MODE}. + * + * Interrupt + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_INTERRUPT = "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_CPU_MODE}. + * + * IO Wait + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_IOWAIT = "iowait"; +/** + * Enum value "kernel" for attribute {@link ATTR_CPU_MODE}. + * + * Kernel + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_KERNEL = "kernel"; +/** + * Enum value "nice" for attribute {@link ATTR_CPU_MODE}. + * + * Nice + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_NICE = "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_CPU_MODE}. + * + * Steal + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_STEAL = "steal"; +/** + * Enum value "system" for attribute {@link ATTR_CPU_MODE}. + * + * System + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_CPU_MODE}. + * + * User + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPU_MODE_VALUE_USER = "user"; +/** + * Value of the garbage collector collection generation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_CPYTHON_GC_GENERATION = 'cpython.gc.generation'; +/** + * Enum value 0 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPYTHON_GC_GENERATION_VALUE_GENERATION_0 = 0; +/** + * Enum value 1 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPYTHON_GC_GENERATION_VALUE_GENERATION_1 = 1; +/** + * Enum value 2 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const CPYTHON_GC_GENERATION_VALUE_GENERATION_2 = 2; +/** + * Deprecated, use `cassandra.consistency.level` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.consistency.level`. + */ +export const ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level'; +/** + * Enum value "all" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = "all"; +/** + * Enum value "any" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = "serial"; +/** + * Enum value "three" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = "three"; +/** + * Enum value "two" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = "two"; +/** + * Deprecated, use `cassandra.coordinator.dc` instead. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.dc`. + */ +export const ATTR_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc'; +/** + * Deprecated, use `cassandra.coordinator.id` instead. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.id`. + */ +export const ATTR_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id'; +/** + * Deprecated, use `cassandra.query.idempotent` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.query.idempotent`. + */ +export const ATTR_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence'; +/** + * Deprecated, use `cassandra.page.size` instead. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.page.size`. + */ +export const ATTR_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size'; +/** + * Deprecated, use `cassandra.speculative_execution.count` instead. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.speculative_execution.count`. + */ +export const ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export const ATTR_DB_CASSANDRA_TABLE = 'db.cassandra.table'; +/** + * 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. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name'; +/** + * The state of a connection in the pool + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state'; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CLIENT_CONNECTION_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +export const ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME = 'db.client.connections.pool.name'; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +export const ATTR_DB_CLIENT_CONNECTIONS_STATE = 'db.client.connections.state'; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE = "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_CLIENT_CONNECTIONS_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export const ATTR_DB_CONNECTION_STRING = 'db.connection_string'; +/** + * Deprecated, use `azure.client.id` instead. + * + * @example "3ba4827d-4422-483f-b59f-85b74211c11d" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.client.id`. + */ +export const ATTR_DB_COSMOSDB_CLIENT_ID = 'db.cosmosdb.client_id'; +/** + * Deprecated, use `azure.cosmosdb.connection.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.connection.mode`. + */ +export const ATTR_DB_COSMOSDB_CONNECTION_MODE = 'db.cosmosdb.connection_mode'; +/** + * Enum value "direct" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = "gateway"; +/** + * Deprecated, use `cosmosdb.consistency.level` instead. + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.consistency.level`. + */ +export const ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL = 'db.cosmosdb.consistency_level'; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = "Strong"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export const ATTR_DB_COSMOSDB_CONTAINER = 'db.cosmosdb.container'; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_DB_COSMOSDB_OPERATION_TYPE = 'db.cosmosdb.operation_type'; +/** + * Enum value "batch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH = "batch"; +/** + * Enum value "create" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE = "create"; +/** + * Enum value "delete" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE = "delete"; +/** + * Enum value "execute" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE = "execute"; +/** + * Enum value "execute_javascript" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT = "execute_javascript"; +/** + * Enum value "head" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD = "head"; +/** + * Enum value "head_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED = "head_feed"; +/** + * Enum value "invalid" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID = "invalid"; +/** + * Enum value "patch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH = "patch"; +/** + * Enum value "query" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY = "query"; +/** + * Enum value "query_plan" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN = "query_plan"; +/** + * Enum value "read" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ = "read"; +/** + * Enum value "read_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED = "read_feed"; +/** + * Enum value "replace" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE = "replace"; +/** + * Enum value "upsert" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT = "upsert"; +/** + * Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.contacted_regions`. + */ +export const ATTR_DB_COSMOSDB_REGIONS_CONTACTED = 'db.cosmosdb.regions_contacted'; +/** + * Deprecated, use `azure.cosmosdb.operation.request_charge` instead. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.request_charge`. + */ +export const ATTR_DB_COSMOSDB_REQUEST_CHARGE = 'db.cosmosdb.request_charge'; +/** + * Deprecated, use `azure.cosmosdb.request.body.size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.request.body.size`. + */ +export const ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH = 'db.cosmosdb.request_content_length'; +/** + * Deprecated, use `db.response.status_code` instead. + * + * @example 200 + * @example 201 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `db.response.status_code` instead. + */ +export const ATTR_DB_COSMOSDB_STATUS_CODE = 'db.cosmosdb.status_code'; +/** + * Deprecated, use `azure.cosmosdb.response.sub_status_code` instead. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.response.sub_status_code`. + */ +export const ATTR_DB_COSMOSDB_SUB_STATUS_CODE = 'db.cosmosdb.sub_status_code'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example e9106fc68e3044f0b1475b04bf4ffd5f + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export const ATTR_DB_ELASTICSEARCH_CLUSTER_NAME = 'db.elasticsearch.cluster.name'; +/** + * Deprecated, use `elasticsearch.node.name` instead. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `elasticsearch.node.name`. + */ +export const ATTR_DB_ELASTICSEARCH_NODE_NAME = 'db.elasticsearch.node.name'; +/** + * Deprecated, use `db.operation.parameter` instead. + * + * @example test-index + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.parameter`. + */ +export const ATTR_DB_ELASTICSEARCH_PATH_PARTS = (key) => `db.elasticsearch.path_parts.${key}`; +/** + * Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + * + * @example "mysql-e26b99z.example.com" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + */ +export const ATTR_DB_INSTANCE_ID = 'db.instance.id'; +/** + * Removed, no replacement at this time. + * + * @example org.postgresql.Driver + * @example com.microsoft.sqlserver.jdbc.SQLServerDriver + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection'; +/** + * Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute. + * + * @example "MSSQLSERVER" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export const ATTR_DB_NAME = 'db.name'; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +export const ATTR_DB_OPERATION = 'db.operation'; +/** + * A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note For example, a client-side maximum number of rows to read from the database + * **MAY** be recorded as the `db.operation.parameter.max_rows` attribute. + * + * `db.query.text` parameters **SHOULD** be captured using `db.query.parameter.` + * instead of `db.operation.parameter.`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DB_OPERATION_PARAMETER = (key) => `db.operation.parameter.${key}`; +/** + * A database query parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note If a query parameter has no name and instead is referenced only by index, + * then `` **SHOULD** be the 0-based index. + * + * `db.query.parameter.` **SHOULD** match + * up with the parameterized placeholders present in `db.query.text`. + * + * It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * `db.query.parameter.` **SHOULD NOT** be captured on batch operations. + * + * Examples: + * + * - For a query `SELECT * FROM users where username = %s` with the parameter `"jdoe"`, + * the attribute `db.query.parameter.0` **SHOULD** be set to `"jdoe"`. + * - For a query `"SELECT * FROM users WHERE username = %(userName)s;` with parameter + * `userName = "jdoe"`, the attribute `db.query.parameter.userName` **SHOULD** be set to `"jdoe"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DB_QUERY_PARAMETER = (key) => `db.query.parameter.${key}`; +/** + * Deprecated, use `db.namespace` instead. + * + * @example 0 + * @example 1 + * @example 15 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Uncategorized. + */ +export const ATTR_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index'; +/** + * Number of rows returned by the operation. + * + * @example 10 + * @example 30 + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DB_RESPONSE_RETURNED_ROWS = 'db.response.returned_rows'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`. + */ +export const ATTR_DB_SQL_TABLE = 'db.sql.table'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export const ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export const ATTR_DB_SYSTEM = 'db.system'; +/** + * Enum value "adabas" for attribute {@link ATTR_DB_SYSTEM}. + * + * Adabas (Adaptable Database System) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_ADABAS = "adabas"; +/** + * Enum value "cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `intersystems_cache` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `intersystems_cache`. + */ +export const DB_SYSTEM_VALUE_CACHE = "cache"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Cassandra + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_CASSANDRA = "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM}. + * + * ClickHouse + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_CLICKHOUSE = "clickhouse"; +/** + * Enum value "cloudscape" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export const DB_SYSTEM_VALUE_CLOUDSCAPE = "cloudscape"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CockroachDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_COCKROACHDB = "cockroachdb"; +/** + * Enum value "coldfusion" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, no replacement at this time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export const DB_SYSTEM_VALUE_COLDFUSION = "coldfusion"; +/** + * Enum value "cosmosdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft Azure Cosmos DB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_COSMOSDB = "cosmosdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Couchbase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_COUCHBASE = "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CouchDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_COUCHDB = "couchdb"; +/** + * Enum value "db2" for attribute {@link ATTR_DB_SYSTEM}. + * + * IBM Db2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_DB2 = "db2"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Derby + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_DERBY = "derby"; +/** + * Enum value "dynamodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon DynamoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_DYNAMODB = "dynamodb"; +/** + * Enum value "edb" for attribute {@link ATTR_DB_SYSTEM}. + * + * EnterpriseDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_EDB = "edb"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * Elasticsearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_ELASTICSEARCH = "elasticsearch"; +/** + * Enum value "filemaker" for attribute {@link ATTR_DB_SYSTEM}. + * + * FileMaker + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_FILEMAKER = "filemaker"; +/** + * Enum value "firebird" for attribute {@link ATTR_DB_SYSTEM}. + * + * Firebird + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_FIREBIRD = "firebird"; +/** + * Enum value "firstsql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export const DB_SYSTEM_VALUE_FIRSTSQL = "firstsql"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Geode + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_GEODE = "geode"; +/** + * Enum value "h2" for attribute {@link ATTR_DB_SYSTEM}. + * + * H2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_H2 = "h2"; +/** + * Enum value "hanadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP HANA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_HANADB = "hanadb"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache HBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_HBASE = "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Hive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_HIVE = "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM}. + * + * HyperSQL DataBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_HSQLDB = "hsqldb"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InfluxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INFLUXDB = "influxdb"; +/** + * Enum value "informix" for attribute {@link ATTR_DB_SYSTEM}. + * + * Informix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INFORMIX = "informix"; +/** + * Enum value "ingres" for attribute {@link ATTR_DB_SYSTEM}. + * + * Ingres + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INGRES = "ingres"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InstantDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INSTANTDB = "instantdb"; +/** + * Enum value "interbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INTERBASE = "interbase"; +/** + * Enum value "intersystems_cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterSystems Caché + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE = "intersystems_cache"; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MariaDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MARIADB = "mariadb"; +/** + * Enum value "maxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP MaxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MAXDB = "maxdb"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM}. + * + * Memcached + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MEMCACHED = "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MongoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MONGODB = "mongodb"; +/** + * Enum value "mssql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft SQL Server + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MSSQL = "mssql"; +/** + * Enum value "mssqlcompact" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, Microsoft SQL Server Compact is discontinued. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export const DB_SYSTEM_VALUE_MSSQLCOMPACT = "mssqlcompact"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM}. + * + * MySQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_MYSQL = "mysql"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM}. + * + * Neo4j + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_NEO4J = "neo4j"; +/** + * Enum value "netezza" for attribute {@link ATTR_DB_SYSTEM}. + * + * Netezza + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_NETEZZA = "netezza"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * OpenSearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_OPENSEARCH = "opensearch"; +/** + * Enum value "oracle" for attribute {@link ATTR_DB_SYSTEM}. + * + * Oracle Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_ORACLE = "oracle"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Some other SQL database. Fallback only. See notes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_OTHER_SQL = "other_sql"; +/** + * Enum value "pervasive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Pervasive PSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_PERVASIVE = "pervasive"; +/** + * Enum value "pointbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * PointBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_POINTBASE = "pointbase"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM}. + * + * PostgreSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_POSTGRESQL = "postgresql"; +/** + * Enum value "progress" for attribute {@link ATTR_DB_SYSTEM}. + * + * Progress Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_PROGRESS = "progress"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM}. + * + * Redis + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_REDIS = "redis"; +/** + * Enum value "redshift" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon Redshift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_REDSHIFT = "redshift"; +/** + * Enum value "spanner" for attribute {@link ATTR_DB_SYSTEM}. + * + * Cloud Spanner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_SPANNER = "spanner"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM}. + * + * SQLite + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_SQLITE = "sqlite"; +/** + * Enum value "sybase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Sybase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_SYBASE = "sybase"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM}. + * + * Teradata + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_TERADATA = "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM}. + * + * Trino + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_TRINO = "trino"; +/** + * Enum value "vertica" for attribute {@link ATTR_DB_SYSTEM}. + * + * Vertica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_VALUE_VERTICA = "vertica"; +/** + * Enum value "actian.ingres" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Actian Ingres](https://www.actian.com/databases/ingres/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_ACTIAN_INGRES = "actian.ingres"; +/** + * Enum value "aws.dynamodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_AWS_DYNAMODB = "aws.dynamodb"; +/** + * Enum value "aws.redshift" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon Redshift](https://aws.amazon.com/redshift/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_AWS_REDSHIFT = "aws.redshift"; +/** + * Enum value "azure.cosmosdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_AZURE_COSMOSDB = "azure.cosmosdb"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Cassandra](https://cassandra.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_CASSANDRA = "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [ClickHouse](https://clickhouse.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_CLICKHOUSE = "clickhouse"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [CockroachDB](https://www.cockroachlabs.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_COCKROACHDB = "cockroachdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Couchbase](https://www.couchbase.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_COUCHBASE = "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache CouchDB](https://couchdb.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_COUCHDB = "couchdb"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Derby](https://db.apache.org/derby/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_DERBY = "derby"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Elasticsearch](https://www.elastic.co/elasticsearch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_ELASTICSEARCH = "elasticsearch"; +/** + * Enum value "firebirdsql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Firebird](https://www.firebirdsql.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_FIREBIRDSQL = "firebirdsql"; +/** + * Enum value "gcp.spanner" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Google Cloud Spanner](https://cloud.google.com/spanner) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_GCP_SPANNER = "gcp.spanner"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Geode](https://geode.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_GEODE = "geode"; +/** + * Enum value "h2database" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [H2 Database](https://h2database.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_H2DATABASE = "h2database"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache HBase](https://hbase.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_HBASE = "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Hive](https://hive.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_HIVE = "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [HyperSQL Database](https://hsqldb.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_HSQLDB = "hsqldb"; +/** + * Enum value "ibm.db2" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Db2](https://www.ibm.com/db2) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_IBM_DB2 = "ibm.db2"; +/** + * Enum value "ibm.informix" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Informix](https://www.ibm.com/products/informix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_IBM_INFORMIX = "ibm.informix"; +/** + * Enum value "ibm.netezza" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Netezza](https://www.ibm.com/products/netezza) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_IBM_NETEZZA = "ibm.netezza"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InfluxDB](https://www.influxdata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_INFLUXDB = "influxdb"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Instant](https://www.instantdb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_INSTANTDB = "instantdb"; +/** + * Enum value "intersystems.cache" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InterSystems Caché](https://www.intersystems.com/products/cache/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_INTERSYSTEMS_CACHE = "intersystems.cache"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Memcached](https://memcached.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_MEMCACHED = "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MongoDB](https://www.mongodb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_MONGODB = "mongodb"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Neo4j](https://neo4j.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_NEO4J = "neo4j"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [OpenSearch](https://opensearch.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_OPENSEARCH = "opensearch"; +/** + * Enum value "oracle.db" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Oracle Database](https://www.oracle.com/database/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_ORACLE_DB = "oracle.db"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * Some other SQL database. Fallback only. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_OTHER_SQL = "other_sql"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Redis](https://redis.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_REDIS = "redis"; +/** + * Enum value "sap.hana" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_SAP_HANA = "sap.hana"; +/** + * Enum value "sap.maxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP MaxDB](https://maxdb.sap.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_SAP_MAXDB = "sap.maxdb"; +/** + * Enum value "softwareag.adabas" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_SOFTWAREAG_ADABAS = "softwareag.adabas"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SQLite](https://www.sqlite.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_SQLITE = "sqlite"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Teradata](https://www.teradata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_TERADATA = "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Trino](https://trino.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DB_SYSTEM_NAME_VALUE_TRINO = "trino"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_DB_USER = 'db.user'; +/** + * Deprecated, use `deployment.environment.name` instead. + * + * @example staging + * @example production + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `deployment.environment.name`. + */ +export const ATTR_DEPLOYMENT_ENVIRONMENT = 'deployment.environment'; +/** + * Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @example staging + * @example production + * + * @note `deployment.environment.name` does not affect the uniqueness constraints defined through + * the `service.namespace`, `service.name` and `service.instance.id` resource attributes. + * This implies that resources carrying the following attribute combinations **MUST** be + * considered to be identifying the same service: + * + * - `service.name=frontend`, `deployment.environment.name=production` + * - `service.name=frontend`, `deployment.environment.name=staging`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEPLOYMENT_ENVIRONMENT_NAME = 'deployment.environment.name'; +/** + * The id of the deployment. + * + * @example 1208 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEPLOYMENT_ID = 'deployment.id'; +/** + * The name of the deployment. + * + * @example deploy my app + * @example deploy-frontend + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEPLOYMENT_NAME = 'deployment.name'; +/** + * The status of the deployment. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEPLOYMENT_STATUS = 'deployment.status'; +/** + * Enum value "failed" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DEPLOYMENT_STATUS_VALUE_FAILED = "failed"; +/** + * Enum value "succeeded" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * succeeded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DEPLOYMENT_STATUS_VALUE_SUCCEEDED = "succeeded"; +/** + * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example destination.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the source side, and when communicating through an intermediary, `destination.address` **SHOULD** represent the destination address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DESTINATION_ADDRESS = 'destination.address'; +/** + * Destination port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DESTINATION_PORT = 'destination.port'; +/** + * A unique identifier representing the device + * + * @example 123456789012345 + * @example 01:23:45:67:89:AB + * + * @note Its value **SHOULD** be identical for all apps on a device and it **SHOULD NOT** change if an app is uninstalled and re-installed. + * However, it might be resettable by the user for all apps on a device. + * Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) **MAY** be used as values. + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * > [!WARNING]> This attribute may contain sensitive (PII) information. 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.> Due to these reasons, this identifier is not recommended for consumer applications and will likely result in rejection from both Google Play and App Store. + * > However, it may be appropriate for specific enterprise scenarios, such as kiosk devices or enterprise-managed devices, with appropriate compliance clearance. + * > Any instrumentation providing this identifier **> MUST**> implement it as an opt-in feature.> See [`app.installation.id`](/docs/registry/attributes/app.md#app-installation-id)> for a more privacy-preserving alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEVICE_ID = 'device.id'; +/** + * The name of the device manufacturer + * + * @example Apple + * @example Samsung + * + * @note The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps **SHOULD** hardcode the value `Apple`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEVICE_MANUFACTURER = 'device.manufacturer'; +/** + * The model identifier for the device + * + * @example iPhone3,4 + * @example SM-G920F + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier'; +/** + * The marketing name for the device model + * + * @example iPhone 6s Plus + * @example Samsung Galaxy S6 + * + * @note It's recommended this value represents a human-readable version of the device model rather than a machine-readable alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DEVICE_MODEL_NAME = 'device.model.name'; +/** + * The disk IO operation direction. + * + * @example read + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DISK_IO_DIRECTION = 'disk.io.direction'; +/** + * Enum value "read" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DISK_IO_DIRECTION_VALUE_READ = "read"; +/** + * Enum value "write" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const DISK_IO_DIRECTION_VALUE_WRITE = "write"; +/** + * The list of IPv4 or IPv6 addresses resolved during DNS lookup. + * + * @example ["10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DNS_ANSWERS = 'dns.answers'; +/** + * The name being queried. + * + * @example www.example.com + * @example opentelemetry.io + * + * @note The name represents the queried domain name as it appears in the DNS query without any additional normalization. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_DNS_QUESTION_NAME = 'dns.question.name'; +/** + * Represents the human-readable identifier of the node/instance to which a request was routed. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ELASTICSEARCH_NODE_NAME = 'elasticsearch.node.name'; +/** + * Unique identifier of an end user in the system. It maybe a username, email address, or other identifier. + * + * @example username + * + * @note Unique identifier of an end user in the system. + * + * > [!Warning] + * > This field contains sensitive (PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ENDUSER_ID = 'enduser.id'; +/** + * Pseudonymous identifier of an end user. This identifier should be a random value that is not directly linked or associated with the end user's actual identity. + * + * @example QdH5CAWJgqVT4rOr0qtumf + * + * @note Pseudonymous identifier of an end user. + * + * > [!Warning] + * > This field contains sensitive (linkable PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ENDUSER_PSEUDO_ID = 'enduser.pseudo.id'; +/** + * Deprecated, use `user.roles` instead. + * + * @example "admin" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `user.roles` instead. + */ +export const ATTR_ENDUSER_ROLE = 'enduser.role'; +/** + * Deprecated, no replacement at this time. + * + * @example "read:message, write:files" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_ENDUSER_SCOPE = 'enduser.scope'; +/** + * A message providing more detail about an error in human-readable form. + * + * @example Unexpected input type: string + * @example The user has exceeded their storage quota + * + * @note `error.message` should provide additional context and detail about an error. + * It is NOT **RECOMMENDED** to duplicate the value of `error.type` in `error.message`. + * It is also NOT **RECOMMENDED** to duplicate the value of `exception.message` in `error.message`. + * + * `error.message` is NOT **RECOMMENDED** for metrics or spans due to its unbounded cardinality and overlap with span status. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ERROR_MESSAGE = 'error.message'; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated The value of this attribute **MUST** now be set as the value of the EventName field on the LogRecord to indicate that the LogRecord represents an Event. + */ +export const ATTR_EVENT_NAME = 'event.name'; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_COLDSTART = 'faas.coldstart'; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @example "0/5 * * * ? *" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_CRON = 'faas.cron'; +/** + * 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. + * + * @example myBucketName + * @example myDbName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection'; +/** + * 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. + * + * @example myFile.txt + * @example myTableName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_DOCUMENT_NAME = 'faas.document.name'; +/** + * Describes the type of the operation that was performed on the data. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_DOCUMENT_OPERATION = 'faas.document.operation'; +/** + * Enum value "delete" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is deleted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_DOCUMENT_OPERATION_VALUE_DELETE = "delete"; +/** + * Enum value "edit" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is modified. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_DOCUMENT_OPERATION_VALUE_EDIT = "edit"; +/** + * Enum value "insert" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When a new object is created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_DOCUMENT_OPERATION_VALUE_INSERT = "insert"; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_DOCUMENT_TIME = 'faas.document.time'; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de + * + * @note - **AWS Lambda:** Use the (full) log stream name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_INSTANCE = 'faas.instance'; +/** + * The invocation ID of the current function invocation. + * + * @example "af9d5aa4-a685-4c5f-a22b-444f80b3cc28" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_INVOCATION_ID = 'faas.invocation_id'; +/** + * The name of the invoked function. + * + * @example "my-function" + * + * @note **SHOULD** be equal to the `faas.name` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_INVOKED_NAME = 'faas.invoked_name'; +/** + * The cloud provider of the invoked function. + * + * @note **SHOULD** be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider'; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_INVOKED_PROVIDER_VALUE_AWS = "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_INVOKED_PROVIDER_VALUE_AZURE = "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_INVOKED_PROVIDER_VALUE_GCP = "gcp"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD = "tencent_cloud"; +/** + * The cloud region of the invoked function. + * + * @example "eu-central-1" + * + * @note **SHOULD** be equal to the `cloud.region` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_INVOKED_REGION = 'faas.invoked_region'; +/** + * The amount of memory available to the serverless function converted to Bytes. + * + * @example 134217728 + * + * @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 (which must be multiplied by 1,048,576). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_MAX_MEMORY = 'faas.max_memory'; +/** + * The name of the single function that this runtime instance executes. + * + * @example my-function + * @example myazurefunctionapp/some-function-name + * + * @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.name`](/docs/general/attributes.md#source-code-attributes) + * span attributes). + * + * For some cloud providers, the above definition is ambiguous. The following + * definition of function name **MUST** be used for this attribute + * (and consequently the span name) for the listed cloud providers/products: + * + * - **Azure:** The full name `/`, i.e., function app name + * followed by a forward slash followed by the function name (this form + * can also be seen in the resource JSON for the function). + * This means that a span attribute **MUST** be used, as an Azure function + * app can host multiple functions that would usually share + * a TracerProvider (see also the `cloud.resource_id` attribute). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_NAME = 'faas.name'; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_TIME = 'faas.time'; +/** + * Type of the trigger which caused this function invocation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_TRIGGER = 'faas.trigger'; +/** + * Enum value "datasource" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A response to some data source operation such as a database or filesystem read/write + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_TRIGGER_VALUE_DATASOURCE = "datasource"; +/** + * Enum value "http" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * To provide an answer to an inbound HTTP request + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_TRIGGER_VALUE_HTTP = "http"; +/** + * Enum value "other" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * If none of the others apply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_TRIGGER_VALUE_OTHER = "other"; +/** + * Enum value "pubsub" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is set to be executed when messages are sent to a messaging system + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_TRIGGER_VALUE_PUBSUB = "pubsub"; +/** + * Enum value "timer" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is scheduled to be executed regularly + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FAAS_TRIGGER_VALUE_TIMER = "timer"; +/** + * The immutable version of the function being executed. + * + * @example 26 + * @example pinkfroid-00002 + * + * @note Depending on the cloud provider and platform, use: + * + * - **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + * (an integer represented as a decimal string). + * - **Google Cloud Run (Services):** The [revision](https://cloud.google.com/run/docs/managing/revisions) + * (i.e., the function name plus the revision suffix). + * - **Google Cloud Functions:** The value of the + * [`K_REVISION` environment variable](https://cloud.google.com/run/docs/container-contract#services-env-vars). + * - **Azure Functions:** Not applicable. Do not set this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FAAS_VERSION = 'faas.version'; +/** + * The unique identifier for the flag evaluation context. For example, the targeting key. + * + * @example 5157782b-2203-4c80-a857-dbbd5e7761db + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_CONTEXT_ID = 'feature_flag.context.id'; +/** + * Deprecated, use `error.message` instead. + * + * @example Flag `header-color` expected type `string` but found type `number` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `error.message`. + */ +export const ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE = 'feature_flag.evaluation.error.message'; +/** + * Deprecated, use `feature_flag.result.reason` instead. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.reason`. + */ +export const ATTR_FEATURE_FLAG_EVALUATION_REASON = 'feature_flag.evaluation.reason'; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED = "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT = "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED = "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR = "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT = "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE = "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC = "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH = "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN = "unknown"; +/** + * The lookup key of the feature flag. + * + * @example logo-color + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_KEY = 'feature_flag.key'; +/** + * Identifies the feature flag provider. + * + * @example Flag Manager + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_PROVIDER_NAME = 'feature_flag.provider.name'; +/** + * The reason code which shows how a feature flag value was determined. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_RESULT_REASON = 'feature_flag.result.reason'; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_CACHED = "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_DEFAULT = "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_DISABLED = "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_ERROR = "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_SPLIT = "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_STALE = "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_STATIC = "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_TARGETING_MATCH = "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const FEATURE_FLAG_RESULT_REASON_VALUE_UNKNOWN = "unknown"; +/** + * The evaluated value of the feature flag. + * + * @example #ff0000 + * @example true + * @example 3 + * + * @note With some feature flag providers, feature flag results can be quite large or contain private or sensitive details. + * Because of this, `feature_flag.result.variant` is often the preferred attribute if it is available. + * + * It may be desirable to redact or otherwise limit the size and scope of `feature_flag.result.value` if possible. + * Because the evaluated flag value is unstructured and may be any type, it is left to the instrumentation author to determine how best to achieve this. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_RESULT_VALUE = 'feature_flag.result.value'; +/** + * A semantic identifier for an evaluated flag value. + * + * @example red + * @example true + * @example on + * + * @note A semantic identifier, commonly referred to as a variant, provides a means + * for referring to a value without including the value itself. This can + * provide additional context for understanding the meaning behind a value. + * For example, the variant `red` maybe be used for the value `#c05543`. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_RESULT_VARIANT = 'feature_flag.result.variant'; +/** + * The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs. + * + * @example proj-1 + * @example ab98sgs + * @example service1/dev + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_SET_ID = 'feature_flag.set.id'; +/** + * Deprecated, use `feature_flag.result.variant` instead. + * + * @example red + * @example true + * @example on + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.variant`. + */ +export const ATTR_FEATURE_FLAG_VARIANT = 'feature_flag.variant'; +/** + * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset. + * + * @example 1 + * @example 01ABCDEF + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FEATURE_FLAG_VERSION = 'feature_flag.version'; +/** + * Time when the file was last accessed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_ACCESSED = 'file.accessed'; +/** + * Array of file attributes. + * + * @example ["readonly", "hidden"] + * + * @note Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected for this attribute: `archive`, `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, `write`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_ATTRIBUTES = 'file.attributes'; +/** + * Time when the file attributes or metadata was last changed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note `file.changed` captures the time when any of the file's properties or attributes (including the content) are changed, while `file.modified` captures the timestamp when the file content is modified. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_CHANGED = 'file.changed'; +/** + * Time when the file was created, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_CREATED = 'file.created'; +/** + * Directory where the file is located. It should include the drive letter, when appropriate. + * + * @example /home/user + * @example C:\\Program Files\\MyApp + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_DIRECTORY = 'file.directory'; +/** + * File extension, excluding the leading dot. + * + * @example png + * @example gz + * + * @note When the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_EXTENSION = 'file.extension'; +/** + * Name of the fork. A fork is additional data associated with a filesystem object. + * + * @example Zone.Identifier + * + * @note On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. + * On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: C:\\path\\to\\filename.extension:some_fork_name, and some_fork_name is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_FORK_NAME = 'file.fork_name'; +/** + * Primary Group ID (GID) of the file. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_GROUP_ID = 'file.group.id'; +/** + * Primary group name of the file. + * + * @example users + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_GROUP_NAME = 'file.group.name'; +/** + * Inode representing the file in the filesystem. + * + * @example 256383 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_INODE = 'file.inode'; +/** + * Mode of the file in octal representation. + * + * @example 0640 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_MODE = 'file.mode'; +/** + * Time when the file content was last modified, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_MODIFIED = 'file.modified'; +/** + * Name of the file including the extension, without the directory. + * + * @example example.png + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_NAME = 'file.name'; +/** + * The user ID (UID) or security identifier (SID) of the file owner. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_OWNER_ID = 'file.owner.id'; +/** + * Username of the file owner. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_OWNER_NAME = 'file.owner.name'; +/** + * Full path to the file, including the file name. It should include the drive letter, when appropriate. + * + * @example /home/alice/example.png + * @example C:\\Program Files\\MyApp\\myapp.exe + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_PATH = 'file.path'; +/** + * File size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_SIZE = 'file.size'; +/** + * Path to the target of a symbolic link. + * + * @example /usr/bin/python3 + * + * @note This attribute is only applicable to symbolic links. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH = 'file.symbolic_link.target_path'; +/** + * The container within GCP where the AppHub application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_APPLICATION_CONTAINER = 'gcp.apphub.application.container'; +/** + * The name of the application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_APPLICATION_ID = 'gcp.apphub.application.id'; +/** + * The GCP zone or region where the application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_APPLICATION_LOCATION = 'gcp.apphub.application.location'; +/** + * Criticality of a service indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE = 'gcp.apphub.service.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Environment of a service is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub.service.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_SERVICE_ID = 'gcp.apphub.service.id'; +/** + * Criticality of a workload indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub.workload.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Environment of a workload is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub.workload.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_WORKLOAD_ID = 'gcp.apphub.workload.id'; +/** + * The container within GCP where the AppHub destination application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_CONTAINER = 'gcp.apphub_destination.application.container'; +/** + * The name of the destination application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_ID = 'gcp.apphub_destination.application.id'; +/** + * The GCP zone or region where the destination application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_LOCATION = 'gcp.apphub_destination.application.location'; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE = 'gcp.apphub_destination.service.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Software lifecycle stage of a destination service as defined [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub_destination.service.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the destination service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ID = 'gcp.apphub_destination.service.id'; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub_destination.workload.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Environment of a destination workload is the stage of a software lifecycle as provided in the [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub_destination.workload.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the destination workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ID = 'gcp.apphub_destination.workload.id'; +/** + * Identifies the Google Cloud service for which the official client library is intended. + * + * @example appengine + * @example run + * @example firestore + * @example alloydb + * @example spanner + * + * @note Intended to be a stable identifier for Google Cloud client libraries that is uniform across implementation languages. The value should be derived from the canonical service domain for the service; for example, 'foo.googleapis.com' should result in a value of 'foo'. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_CLIENT_SERVICE = 'gcp.client.service'; +/** + * The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example job-name-xxxx + * @example sample-job-mdw84 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_CLOUD_RUN_JOB_EXECUTION = 'gcp.cloud_run.job.execution'; +/** + * The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example 0 + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX = 'gcp.cloud_run.job.task_index'; +/** + * The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm). + * + * @example my-host1234.example.com + * @example sample-vm.us-west1-b.c.my-project.internal + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_GCE_INSTANCE_HOSTNAME = 'gcp.gce.instance.hostname'; +/** + * The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names). + * + * @example instance-1 + * @example my-vm-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GCP_GCE_INSTANCE_NAME = 'gcp.gce.instance.name'; +/** + * Free-form description of the GenAI agent provided by the application. + * + * @example Helps with math problems + * @example Generates fiction stories + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_AGENT_DESCRIPTION = 'gen_ai.agent.description'; +/** + * The unique identifier of the GenAI agent. + * + * @example asst_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_AGENT_ID = 'gen_ai.agent.id'; +/** + * Human-readable name of the GenAI agent provided by the application. + * + * @example Math Tutor + * @example Fiction Writer + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_AGENT_NAME = 'gen_ai.agent.name'; +/** + * Deprecated, use Event API to report completions contents. + * + * @example [{'role': 'assistant', 'content': 'The capital of France is Paris.'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_GEN_AI_COMPLETION = 'gen_ai.completion'; +/** + * The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation. + * + * @example conv_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_CONVERSATION_ID = 'gen_ai.conversation.id'; +/** + * The data source identifier. + * + * @example H7STPQYOND + * + * @note Data sources are used by AI agents and RAG applications to store grounding data. A data source may be an external database, object store, document collection, website, or any other storage system used by the GenAI agent or application. The `gen_ai.data_source.id` **SHOULD** match the identifier used by the GenAI system rather than a name specific to the external storage, such as a database or object store. Semantic conventions referencing `gen_ai.data_source.id` **MAY** also leverage additional attributes, such as `db.*`, to further identify and describe the data source. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_DATA_SOURCE_ID = 'gen_ai.data_source.id'; +/** + * The number of dimensions the resulting output embeddings should have. + * + * @example 512 + * @example 1024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT = 'gen_ai.embeddings.dimension.count'; +/** + * A free-form explanation for the assigned score provided by the evaluator. + * + * @example The response is factually accurate but lacks sufficient detail to fully address the question. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_EVALUATION_EXPLANATION = 'gen_ai.evaluation.explanation'; +/** + * The name of the evaluation metric used for the GenAI response. + * + * @example Relevance + * @example IntentResolution + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_EVALUATION_NAME = 'gen_ai.evaluation.name'; +/** + * Human readable label for evaluation. + * + * @example relevant + * @example not_relevant + * @example correct + * @example incorrect + * @example pass + * @example fail + * + * @note This attribute provides a human-readable interpretation of the evaluation score produced by an evaluator. For example, a score value of 1 could mean "relevant" in one evaluation system and "not relevant" in another, depending on the scoring range and evaluator. The label **SHOULD** have low cardinality. Possible values depend on the evaluation metric and evaluator used; implementations **SHOULD** document the possible values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_EVALUATION_SCORE_LABEL = 'gen_ai.evaluation.score.label'; +/** + * The evaluation score returned by the evaluator. + * + * @example 4.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_EVALUATION_SCORE_VALUE = 'gen_ai.evaluation.score.value'; +/** + * The chat history provided to the model as an input. + * + * @example [ + * { + * "role": "user", + * "parts": [ + * { + * "type": "text", + * "content": "Weather in Paris?" + * } + * ] + * }, + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "tool_call", + * "id": "call_VSPygqKTWdrhaFErNvMV18Yl", + * "name": "get_weather", + * "arguments": { + * "location": "Paris" + * } + * } + * ] + * }, + * { + * "role": "tool", + * "parts": [ + * { + * "type": "tool_call_response", + * "id": " call_VSPygqKTWdrhaFErNvMV18Yl", + * "result": "rainy, 57°F" + * } + * ] + * } + * ] + * + * @note Instrumentations **MUST** follow [Input messages JSON schema](/docs/gen-ai/gen-ai-input-messages.json). + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Messages **MUST** be provided in the order they were sent to the model. + * Instrumentations **MAY** provide a way for users to filter or truncate + * input messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_INPUT_MESSAGES = 'gen_ai.input.messages'; +/** + * Deprecated, use `gen_ai.output.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.output.type`. + */ +export const ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT = 'gen_ai.openai.request.response_format'; +/** + * Enum value "json_object" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON object response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT = "json_object"; +/** + * Enum value "json_schema" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON schema response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA = "json_schema"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * Text response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT = "text"; +/** + * Deprecated, use `gen_ai.request.seed`. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.request.seed`. + */ +export const ATTR_GEN_AI_OPENAI_REQUEST_SEED = 'gen_ai.openai.request.seed'; +/** + * Deprecated, use `openai.request.service_tier`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.request.service_tier`. + */ +export const ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER = 'gen_ai.openai.request.service_tier'; +/** + * Enum value "auto" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = "auto"; +/** + * Enum value "default" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = "default"; +/** + * Deprecated, use `openai.response.service_tier`. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.service_tier`. + */ +export const ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER = 'gen_ai.openai.response.service_tier'; +/** + * Deprecated, use `openai.response.system_fingerprint`. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.system_fingerprint`. + */ +export const ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'gen_ai.openai.response.system_fingerprint'; +/** + * The name of the operation being performed. + * + * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name'; +/** + * Enum value "chat" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_CHAT = "chat"; +/** + * Enum value "create_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Create GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT = "create_agent"; +/** + * Enum value "embeddings" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS = "embeddings"; +/** + * Enum value "execute_tool" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Execute a tool + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL = "execute_tool"; +/** + * Enum value "generate_content" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_GENERATE_CONTENT = "generate_content"; +/** + * Enum value "invoke_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Invoke GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT = "invoke_agent"; +/** + * Enum value "text_completion" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION = "text_completion"; +/** + * Messages returned by the model where each message represents a specific model response (choice, candidate). + * + * @example [ + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "text", + * "content": "The weather in Paris is currently rainy with a temperature of 57°F." + * } + * ], + * "finish_reason": "stop" + * } + * ] + * + * @note Instrumentations **MUST** follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json) + * + * Each message represents a single output choice/candidate generated by + * the model. Each message corresponds to exactly one generation + * (choice/candidate) and vice versa - one choice cannot be split across + * multiple messages or one message cannot contain parts from multiple choices. + * + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * output messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_OUTPUT_MESSAGES = 'gen_ai.output.messages'; +/** + * Represents the content type requested by the client. + * + * @note This attribute **SHOULD** be used when the client requests output of a specific type. The model may return zero or more outputs of this type. + * This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file. + * Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_OUTPUT_TYPE = 'gen_ai.output.type'; +/** + * Enum value "image" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Image + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OUTPUT_TYPE_VALUE_IMAGE = "image"; +/** + * Enum value "json" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * JSON object with known or unknown schema + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OUTPUT_TYPE_VALUE_JSON = "json"; +/** + * Enum value "speech" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Speech + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OUTPUT_TYPE_VALUE_SPEECH = "speech"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Plain text + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_OUTPUT_TYPE_VALUE_TEXT = "text"; +/** + * Deprecated, use Event API to report prompt contents. + * + * @example [{'role': 'user', 'content': 'What is the capital of France?'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const ATTR_GEN_AI_PROMPT = 'gen_ai.prompt'; +/** + * The name of the prompt that uniquely identifies it. + * + * @example analyze-code + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_PROMPT_NAME = 'gen_ai.prompt.name'; +/** + * The Generative AI provider as identified by the client or server instrumentation. + * + * @note The attribute **SHOULD** be set based on the instrumentation's best + * knowledge and may differ from the actual model provider. + * + * Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms + * are accessible using the OpenAI REST API and corresponding client libraries, + * but may proxy or host models from different providers. + * + * The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address` + * attributes may help identify the actual system in use. + * + * The `gen_ai.provider.name` attribute acts as a discriminator that + * identifies the GenAI telemetry format flavor specific to that provider + * within GenAI semantic conventions. + * It **SHOULD** be set consistently with provider-specific attributes and signals. + * For example, GenAI spans, metrics, and events related to AWS Bedrock + * should have the `gen_ai.provider.name` set to `aws.bedrock` and include + * applicable `aws.bedrock.*` attributes and are not expected to include + * `openai.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_PROVIDER_NAME = 'gen_ai.provider.name'; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Anthropic](https://www.anthropic.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_ANTHROPIC = "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [AWS Bedrock](https://aws.amazon.com/bedrock) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_AWS_BEDROCK = "aws.bedrock"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_INFERENCE = "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_OPENAI = "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Cohere](https://cohere.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_COHERE = "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [DeepSeek](https://www.deepseek.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_DEEPSEEK = "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Gemini](https://cloud.google.com/products/gemini) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEMINI = "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEN_AI = "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Vertex AI](https://cloud.google.com/vertex-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_GCP_VERTEX_AI = "gcp.vertex_ai"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Groq](https://groq.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_GROQ = "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_IBM_WATSONX_AI = "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Mistral AI](https://mistral.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_MISTRAL_AI = "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [OpenAI](https://openai.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_OPENAI = "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Perplexity](https://www.perplexity.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_PERPLEXITY = "perplexity"; +/** + * Enum value "x_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [xAI](https://x.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_PROVIDER_NAME_VALUE_X_AI = "x_ai"; +/** + * The target number of candidate completions to return. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_CHOICE_COUNT = 'gen_ai.request.choice.count'; +/** + * The encoding formats requested in an embeddings operation, if specified. + * + * @example ["base64"] + * @example ["float", "binary"] + * + * @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = 'gen_ai.request.encoding_formats'; +/** + * The frequency penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = 'gen_ai.request.frequency_penalty'; +/** + * The maximum number of tokens the model generates for a request. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_MAX_TOKENS = 'gen_ai.request.max_tokens'; +/** + * The name of the GenAI model a request is being made to. + * + * @example "gpt-4" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model'; +/** + * The presence penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty'; +/** + * Requests with same seed value more likely to return same result. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_SEED = 'gen_ai.request.seed'; +/** + * List of sequences that the model will use to stop generating further tokens. + * + * @example ["forest", "lived"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = 'gen_ai.request.stop_sequences'; +/** + * The temperature setting for the GenAI request. + * + * @example 0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_TEMPERATURE = 'gen_ai.request.temperature'; +/** + * The top_k sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_TOP_K = 'gen_ai.request.top_k'; +/** + * The top_p sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_TOP_P = 'gen_ai.request.top_p'; +/** + * Array of reasons the model stopped generating tokens, corresponding to each generation received. + * + * @example ["stop"] + * @example ["stop", "length"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_RESPONSE_FINISH_REASONS = 'gen_ai.response.finish_reasons'; +/** + * The unique identifier for the completion. + * + * @example chatcmpl-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_RESPONSE_ID = 'gen_ai.response.id'; +/** + * The name of the model that generated the response. + * + * @example gpt-4-0613 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model'; +/** + * Deprecated, use `gen_ai.provider.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.provider.name`. + */ +export const ATTR_GEN_AI_SYSTEM = 'gen_ai.system'; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Anthropic + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_ANTHROPIC = "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * AWS Bedrock + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_AWS_BEDROCK = "aws.bedrock"; +/** + * Enum value "az.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.inference`. + */ +export const GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE = "az.ai.inference"; +/** + * Enum value "az.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.openai`. + */ +export const GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI = "az.ai.openai"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_AZURE_AI_INFERENCE = "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_AZURE_AI_OPENAI = "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Cohere + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_COHERE = "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * DeepSeek + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_DEEPSEEK = "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_GCP_GEMINI = "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_GCP_GEN_AI = "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_GCP_VERTEX_AI = "gcp.vertex_ai"; +/** + * Enum value "gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.gemini`. + */ +export const GEN_AI_SYSTEM_VALUE_GEMINI = "gemini"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Groq + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_GROQ = "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * IBM Watsonx AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI = "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Mistral AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_MISTRAL_AI = "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_OPENAI = "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Perplexity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_PERPLEXITY = "perplexity"; +/** + * Enum value "vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.vertex_ai`. + */ +export const GEN_AI_SYSTEM_VALUE_VERTEX_AI = "vertex_ai"; +/** + * Enum value "xai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * xAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_SYSTEM_VALUE_XAI = "xai"; +/** + * The system message or instructions provided to the GenAI model separately from the chat history. + * + * @example [ + * { + * "type": "text", + * "content": "You are an Agent that greet users, always use greetings tool to respond" + * } + * ] + * + * @example [ + * { + * "type": "text", + * "content": "You are a language translator." + * }, + * { + * "type": "text", + * "content": "Your mission is to translate text in English to French." + * } + * ] + * + * @note This attribute **SHOULD** be used when the corresponding provider or API + * allows to provide system instructions or messages separately from the + * chat history. + * + * Instructions that are part of the chat history **SHOULD** be recorded in + * `gen_ai.input.messages` attribute instead. + * + * Instrumentations **MUST** follow [System instructions JSON schema](/docs/gen-ai/gen-ai-system-instructions.json). + * + * When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * system instructions. + * + * > [!Warning] + * > This attribute may contain sensitive information. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_SYSTEM_INSTRUCTIONS = 'gen_ai.system_instructions'; +/** + * The type of token being counted. + * + * @example input + * @example output + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOKEN_TYPE = 'gen_ai.token.type'; +/** + * Enum value "input" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Input tokens (prompt, input, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_TOKEN_TYPE_VALUE_INPUT = "input"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `output`. + */ +export const GEN_AI_TOKEN_TYPE_VALUE_COMPLETION = "output"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEN_AI_TOKEN_TYPE_VALUE_OUTPUT = "output"; +/** + * Parameters passed to the tool call. + * + * @example { + * "location": "San Francisco?", + * "date": "2025-10-01" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_CALL_ARGUMENTS = 'gen_ai.tool.call.arguments'; +/** + * The tool call identifier. + * + * @example call_mszuSIzqtI65i1wAUOE8w5H4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_CALL_ID = 'gen_ai.tool.call.id'; +/** + * The result returned by the tool call (if any and if execution was successful). + * + * @example { + * "temperature_range": { + * "high": 75, + * "low": 60 + * }, + * "conditions": "sunny" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_CALL_RESULT = 'gen_ai.tool.call.result'; +/** + * The list of source system tool definitions available to the GenAI agent or model. + * + * @example [ + * { + * "type": "function", + * "name": "get_current_weather", + * "description": "Get the current weather in a given location", + * "parameters": { + * "type": "object", + * "properties": { + * "location": { + * "type": "string", + * "description": "The city and state, e.g. San Francisco, CA" + * }, + * "unit": { + * "type": "string", + * "enum": [ + * "celsius", + * "fahrenheit" + * ] + * } + * }, + * "required": [ + * "location", + * "unit" + * ] + * } + * } + * ] + * + * @note The value of this attribute matches source system tool definition format. + * + * It's expected to be an array of objects where each object represents a tool definition. In case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an array. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Since this attribute could be large, it's NOT **RECOMMENDED** to populate + * it by default. Instrumentations **MAY** provide a way to enable + * populating this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_DEFINITIONS = 'gen_ai.tool.definitions'; +/** + * The tool description. + * + * @example Multiply two numbers + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_DESCRIPTION = 'gen_ai.tool.description'; +/** + * Name of the tool utilized by the agent. + * + * @example Flights + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_NAME = 'gen_ai.tool.name'; +/** + * Type of the tool utilized by the agent + * + * @example function + * @example extension + * @example datastore + * + * @note Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems. + * Agent-side operations involve actions that are performed by the agent on the server or within the agent's controlled environment. + * Function: A tool executed on the client-side, where the agent generates parameters for a predefined function, and the client executes the logic. + * Client-side operations are actions taken on the user's end or within the client application. + * Datastore: A tool used by the agent to access and query structured or unstructured external data for retrieval-augmented tasks or knowledge updates. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOOL_TYPE = 'gen_ai.tool.type'; +/** + * Deprecated, use `gen_ai.usage.output_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.output_tokens`. + */ +export const ATTR_GEN_AI_USAGE_COMPLETION_TOKENS = 'gen_ai.usage.completion_tokens'; +/** + * The number of tokens used in the GenAI input (prompt). + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens'; +/** + * The number of tokens used in the GenAI response (completion). + * + * @example 180 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens'; +/** + * Deprecated, use `gen_ai.usage.input_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.input_tokens`. + */ +export const ATTR_GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens'; +/** + * Two-letter code representing continent’s name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_CONTINENT_CODE = 'geo.continent.code'; +/** + * Enum value "AF" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Africa + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_AF = "AF"; +/** + * Enum value "AN" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Antarctica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_AN = "AN"; +/** + * Enum value "AS" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Asia + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_AS = "AS"; +/** + * Enum value "EU" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Europe + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_EU = "EU"; +/** + * Enum value "NA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * North America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_NA = "NA"; +/** + * Enum value "OC" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Oceania + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_OC = "OC"; +/** + * Enum value "SA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * South America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GEO_CONTINENT_CODE_VALUE_SA = "SA"; +/** + * Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)). + * + * @example CA + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_COUNTRY_ISO_CODE = 'geo.country.iso_code'; +/** + * Locality name. Represents the name of a city, town, village, or similar populated place. + * + * @example Montreal + * @example Berlin + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_LOCALITY_NAME = 'geo.locality.name'; +/** + * Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example 45.505918 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_LOCATION_LAT = 'geo.location.lat'; +/** + * Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example -73.61483 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_LOCATION_LON = 'geo.location.lon'; +/** + * Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. + * + * @example 94040 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_POSTAL_CODE = 'geo.postal_code'; +/** + * Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)). + * + * @example CA-QC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEO_REGION_ISO_CODE = 'geo.region.iso_code'; +/** + * The type of memory. + * + * @example other + * @example stack + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GO_MEMORY_TYPE = 'go.memory.type'; +/** + * Enum value "other" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory used by the Go runtime, excluding other categories of memory usage described in this enumeration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GO_MEMORY_TYPE_VALUE_OTHER = "other"; +/** + * Enum value "stack" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GO_MEMORY_TYPE_VALUE_STACK = "stack"; +/** + * The GraphQL document being executed. + * + * @example "query findBookById { bookById(id: ?) { name } }" + * + * @note The value may be sanitized to exclude sensitive information. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GRAPHQL_DOCUMENT = 'graphql.document'; +/** + * The name of the operation being executed. + * + * @example "findBookById" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GRAPHQL_OPERATION_NAME = 'graphql.operation.name'; +/** + * The type of the operation being executed. + * + * @example query + * @example mutation + * @example subscription + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GRAPHQL_OPERATION_TYPE = 'graphql.operation.type'; +/** + * Enum value "mutation" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL mutation + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GRAPHQL_OPERATION_TYPE_VALUE_MUTATION = "mutation"; +/** + * Enum value "query" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL query + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GRAPHQL_OPERATION_TYPE_VALUE_QUERY = "query"; +/** + * Enum value "subscription" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL subscription + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION = "subscription"; +/** + * Unique identifier for the application + * + * @example 2daa2797-e42b-4624-9322-ec3f968df4da + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HEROKU_APP_ID = 'heroku.app.id'; +/** + * Commit hash for the current release + * + * @example e6134959463efd8966b20e75b913cafe3f5ec + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HEROKU_RELEASE_COMMIT = 'heroku.release.commit'; +/** + * Time and date the release was created + * + * @example 2022-10-23T18:00:42Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP = 'heroku.release.creation_timestamp'; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_ARCH = 'host.arch'; +/** + * Enum value "amd64" for attribute {@link ATTR_HOST_ARCH}. + * + * AMD64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_AMD64 = "amd64"; +/** + * Enum value "arm32" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM32 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_ARM32 = "arm32"; +/** + * Enum value "arm64" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_ARM64 = "arm64"; +/** + * Enum value "ia64" for attribute {@link ATTR_HOST_ARCH}. + * + * Itanium + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_IA64 = "ia64"; +/** + * Enum value "ppc32" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_PPC32 = "ppc32"; +/** + * Enum value "ppc64" for attribute {@link ATTR_HOST_ARCH}. + * + * 64-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_PPC64 = "ppc64"; +/** + * Enum value "s390x" for attribute {@link ATTR_HOST_ARCH}. + * + * IBM z/Architecture + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_S390X = "s390x"; +/** + * Enum value "x86" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit x86 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HOST_ARCH_VALUE_X86 = "x86"; +/** + * The amount of level 2 memory cache available to the processor (in Bytes). + * + * @example 12288000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_CACHE_L2_SIZE = 'host.cpu.cache.l2.size'; +/** + * Family or generation of the CPU. + * + * @example 6 + * @example PA-RISC 1.1e + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_FAMILY = 'host.cpu.family'; +/** + * Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family. + * + * @example 6 + * @example 9000/778/B180L + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_MODEL_ID = 'host.cpu.model.id'; +/** + * Model designation of the processor. + * + * @example 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_MODEL_NAME = 'host.cpu.model.name'; +/** + * Stepping or core revisions. + * + * @example 1 + * @example r1p1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_STEPPING = 'host.cpu.stepping'; +/** + * Processor manufacturer identifier. A maximum 12-character string. + * + * @example GenuineIntel + * + * @note [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_CPU_VENDOR_ID = 'host.cpu.vendor.id'; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_ID = 'host.id'; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_ID = 'host.image.id'; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_NAME = 'host.image.name'; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IMAGE_VERSION = 'host.image.version'; +/** + * Available IP addresses of the host, excluding loopback interfaces. + * + * @example ["192.168.1.140", "fe80::abc2:4a28:737a:609e"] + * + * @note IPv4 Addresses **MUST** be specified in dotted-quad notation. IPv6 addresses **MUST** be specified in the [RFC 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_IP = 'host.ip'; +/** + * Available MAC addresses of the host, excluding loopback interfaces. + * + * @example ["AC-DE-48-23-45-67", "AC-DE-48-23-45-67-01-9F"] + * + * @note MAC Addresses **MUST** be represented in [IEEE RA hexadecimal form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): as hyphen-separated octets in uppercase hexadecimal form from most to least significant. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_MAC = 'host.mac'; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_NAME = 'host.name'; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HOST_TYPE = 'host.type'; +/** + * Deprecated, use `client.address` instead. + * + * @example "83.164.160.102" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `client.address`. + */ +export const ATTR_HTTP_CLIENT_IP = 'http.client_ip'; +/** + * State of the HTTP connection in the HTTP connection pool. + * + * @example active + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HTTP_CONNECTION_STATE = 'http.connection.state'; +/** + * Enum value "active" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * active state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_CONNECTION_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "idle" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * idle state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_CONNECTION_STATE_VALUE_IDLE = "idle"; +/** + * Deprecated, use `network.protocol.name` and `network.protocol.version` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split into `network.protocol.name` and `network.protocol.version` + */ +export const ATTR_HTTP_FLAVOR = 'http.flavor'; +/** + * Enum value "1.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_HTTP_1_0 = "1.0"; +/** + * Enum value "1.1" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_HTTP_1_1 = "1.1"; +/** + * Enum value "2.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_HTTP_2_0 = "2.0"; +/** + * Enum value "3.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/3 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_HTTP_3_0 = "3.0"; +/** + * Enum value "QUIC" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * QUIC protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_QUIC = "QUIC"; +/** + * Enum value "SPDY" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * SPDY protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_FLAVOR_VALUE_SPDY = "SPDY"; +/** + * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage. + * + * @example www.example.org + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage. + */ +export const ATTR_HTTP_HOST = 'http.host'; +/** + * Deprecated, use `http.request.method` instead. + * + * @example GET + * @example POST + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.method`. + */ +export const ATTR_HTTP_METHOD = 'http.method'; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HTTP_REQUEST_BODY_SIZE = 'http.request.body.size'; +/** + * Enum value "QUERY" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * QUERY method. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HTTP_REQUEST_METHOD_VALUE_QUERY = "QUERY"; +/** + * The total size of the request in bytes. This should be the total number of bytes sent over the wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request body if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HTTP_REQUEST_SIZE = 'http.request.size'; +/** + * Deprecated, use `http.request.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.header.content-length`. + */ +export const ATTR_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length'; +/** + * Deprecated, use `http.request.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.body.size`. + */ +export const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed'; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HTTP_RESPONSE_BODY_SIZE = 'http.response.body.size'; +/** + * The total size of the response in bytes. This should be the total number of bytes sent over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and response body and trailers if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HTTP_RESPONSE_SIZE = 'http.response.size'; +/** + * Deprecated, use `http.response.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.header.content-length`. + */ +export const ATTR_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length'; +/** + * Deprecated, use `http.response.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.body.size`. + */ +export const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed'; +/** + * Deprecated, use `url.scheme` instead. + * + * @example http + * @example https + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.scheme`. + */ +export const ATTR_HTTP_SCHEME = 'http.scheme'; +/** + * Deprecated, use `server.address` instead. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export const ATTR_HTTP_SERVER_NAME = 'http.server_name'; +/** + * Deprecated, use `http.response.status_code` instead. + * + * @example 200 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.status_code`. + */ +export const ATTR_HTTP_STATUS_CODE = 'http.status_code'; +/** + * Deprecated, use `url.path` and `url.query` instead. + * + * @example /search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `url.path` and `url.query`. + */ +export const ATTR_HTTP_TARGET = 'http.target'; +/** + * Deprecated, use `url.full` instead. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.full`. + */ +export const ATTR_HTTP_URL = 'http.url'; +/** + * Deprecated, use `user_agent.original` instead. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `user_agent.original`. + */ +export const ATTR_HTTP_USER_AGENT = 'http.user_agent'; +/** + * Design capacity in Watts-hours or Amper-hours + * + * @example 9.3Ah + * @example 50Wh + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_BATTERY_CAPACITY = 'hw.battery.capacity'; +/** + * Battery [chemistry](https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html), e.g. Lithium-Ion, Nickel-Cadmium, etc. + * + * @example Li-ion + * @example NiMH + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_BATTERY_CHEMISTRY = 'hw.battery.chemistry'; +/** + * The current state of the battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_BATTERY_STATE = 'hw.battery.state'; +/** + * Enum value "charging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Charging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_BATTERY_STATE_VALUE_CHARGING = "charging"; +/** + * Enum value "discharging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Discharging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_BATTERY_STATE_VALUE_DISCHARGING = "discharging"; +/** + * BIOS version of the hardware component + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_BIOS_VERSION = 'hw.bios_version'; +/** + * Driver version for the hardware component + * + * @example 10.2.1-3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_DRIVER_VERSION = 'hw.driver_version'; +/** + * Type of the enclosure (useful for modular systems) + * + * @example Computer + * @example Storage + * @example Switch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_ENCLOSURE_TYPE = 'hw.enclosure.type'; +/** + * Firmware version of the hardware component + * + * @example 2.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_FIRMWARE_VERSION = 'hw.firmware_version'; +/** + * Type of task the GPU is performing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_GPU_TASK = 'hw.gpu.task'; +/** + * Enum value "decoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Decoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_GPU_TASK_VALUE_DECODER = "decoder"; +/** + * Enum value "encoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Encoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_GPU_TASK_VALUE_ENCODER = "encoder"; +/** + * Enum value "general" for attribute {@link ATTR_HW_GPU_TASK}. + * + * General + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_GPU_TASK_VALUE_GENERAL = "general"; +/** + * An identifier for the hardware component, unique within the monitored host + * + * @example win32battery_battery_testsysa33_1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_ID = 'hw.id'; +/** + * Type of limit for hardware components + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_LIMIT_TYPE = 'hw.limit_type'; +/** + * Enum value "critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_CRITICAL = "critical"; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_DEGRADED = "degraded"; +/** + * Enum value "high.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_HIGH_CRITICAL = "high.critical"; +/** + * Enum value "high.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_HIGH_DEGRADED = "high.degraded"; +/** + * Enum value "low.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_LOW_CRITICAL = "low.critical"; +/** + * Enum value "low.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_LOW_DEGRADED = "low.degraded"; +/** + * Enum value "max" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Maximum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_MAX = "max"; +/** + * Enum value "throttled" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Throttled + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_THROTTLED = "throttled"; +/** + * Enum value "turbo" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Turbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LIMIT_TYPE_VALUE_TURBO = "turbo"; +/** + * RAID Level of the logical disk + * + * @example RAID0+1 + * @example RAID5 + * @example RAID10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_LOGICAL_DISK_RAID_LEVEL = 'hw.logical_disk.raid_level'; +/** + * State of the logical disk space usage + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_LOGICAL_DISK_STATE = 'hw.logical_disk.state'; +/** + * Enum value "free" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Free + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LOGICAL_DISK_STATE_VALUE_FREE = "free"; +/** + * Enum value "used" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Used + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_LOGICAL_DISK_STATE_VALUE_USED = "used"; +/** + * Type of the memory module + * + * @example DDR4 + * @example DDR5 + * @example LPDDR5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_MEMORY_TYPE = 'hw.memory.type'; +/** + * Descriptive model name of the hardware component + * + * @example PERC H740P + * @example Intel(R) Core(TM) i7-10700K + * @example Dell XPS 15 Battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_MODEL = 'hw.model'; +/** + * An easily-recognizable name for the hardware component + * + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_NAME = 'hw.name'; +/** + * Logical addresses of the adapter (e.g. IP address, or WWPN) + * + * @example ["172.16.8.21", "57.11.193.42"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_NETWORK_LOGICAL_ADDRESSES = 'hw.network.logical_addresses'; +/** + * Physical address of the adapter (e.g. MAC address, or WWNN) + * + * @example 00-90-F5-E9-7B-36 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_NETWORK_PHYSICAL_ADDRESS = 'hw.network.physical_address'; +/** + * Unique identifier of the parent component (typically the `hw.id` attribute of the enclosure, or disk controller) + * + * @example dellStorage_perc_0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_PARENT = 'hw.parent'; +/** + * [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute of the physical disk + * + * @example Spin Retry Count + * @example Seek Error Rate + * @example Raw Read Error Rate + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_PHYSICAL_DISK_SMART_ATTRIBUTE = 'hw.physical_disk.smart_attribute'; +/** + * State of the physical disk endurance utilization + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_PHYSICAL_DISK_STATE = 'hw.physical_disk.state'; +/** + * Enum value "remaining" for attribute {@link ATTR_HW_PHYSICAL_DISK_STATE}. + * + * Remaining + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_PHYSICAL_DISK_STATE_VALUE_REMAINING = "remaining"; +/** + * Type of the physical disk + * + * @example HDD + * @example SSD + * @example 10K + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_PHYSICAL_DISK_TYPE = 'hw.physical_disk.type'; +/** + * Location of the sensor + * + * @example cpu0 + * @example ps1 + * @example INLET + * @example CPU0_DIE + * @example AMBIENT + * @example MOTHERBOARD + * @example PS0 V3_3 + * @example MAIN_12V + * @example CPU_VCORE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_SENSOR_LOCATION = 'hw.sensor_location'; +/** + * Serial number of the hardware component + * + * @example CNFCP0123456789 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_SERIAL_NUMBER = 'hw.serial_number'; +/** + * The current state of the component + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_STATE = 'hw.state'; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_STATE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_STATE_VALUE_DEGRADED = "degraded"; +/** + * Enum value "failed" for attribute {@link ATTR_HW_STATE}. + * + * Failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_STATE_VALUE_FAILED = "failed"; +/** + * Enum value "needs_cleaning" for attribute {@link ATTR_HW_STATE}. + * + * Needs Cleaning + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_STATE_VALUE_NEEDS_CLEANING = "needs_cleaning"; +/** + * Enum value "ok" for attribute {@link ATTR_HW_STATE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_STATE_VALUE_OK = "ok"; +/** + * Enum value "predicted_failure" for attribute {@link ATTR_HW_STATE}. + * + * Predicted Failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_STATE_VALUE_PREDICTED_FAILURE = "predicted_failure"; +/** + * Type of tape drive operation + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_TAPE_DRIVE_OPERATION_TYPE = 'hw.tape_drive.operation_type'; +/** + * Enum value "clean" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Clean + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_CLEAN = "clean"; +/** + * Enum value "mount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Mount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_MOUNT = "mount"; +/** + * Enum value "unmount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Unmount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_UNMOUNT = "unmount"; +/** + * Type of the component + * + * @note Describes the category of the hardware component for which `hw.state` is being reported. For example, `hw.type=temperature` along with `hw.state=degraded` would indicate that the temperature of the hardware component has been reported as `degraded`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_TYPE = 'hw.type'; +/** + * Enum value "battery" for attribute {@link ATTR_HW_TYPE}. + * + * Battery + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_BATTERY = "battery"; +/** + * Enum value "cpu" for attribute {@link ATTR_HW_TYPE}. + * + * CPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_CPU = "cpu"; +/** + * Enum value "disk_controller" for attribute {@link ATTR_HW_TYPE}. + * + * Disk controller + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_DISK_CONTROLLER = "disk_controller"; +/** + * Enum value "enclosure" for attribute {@link ATTR_HW_TYPE}. + * + * Enclosure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_ENCLOSURE = "enclosure"; +/** + * Enum value "fan" for attribute {@link ATTR_HW_TYPE}. + * + * Fan + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_FAN = "fan"; +/** + * Enum value "gpu" for attribute {@link ATTR_HW_TYPE}. + * + * GPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_GPU = "gpu"; +/** + * Enum value "logical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Logical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_LOGICAL_DISK = "logical_disk"; +/** + * Enum value "memory" for attribute {@link ATTR_HW_TYPE}. + * + * Memory + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_MEMORY = "memory"; +/** + * Enum value "network" for attribute {@link ATTR_HW_TYPE}. + * + * Network + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_NETWORK = "network"; +/** + * Enum value "physical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Physical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_PHYSICAL_DISK = "physical_disk"; +/** + * Enum value "power_supply" for attribute {@link ATTR_HW_TYPE}. + * + * Power supply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_POWER_SUPPLY = "power_supply"; +/** + * Enum value "tape_drive" for attribute {@link ATTR_HW_TYPE}. + * + * Tape drive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_TAPE_DRIVE = "tape_drive"; +/** + * Enum value "temperature" for attribute {@link ATTR_HW_TYPE}. + * + * Temperature + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_TEMPERATURE = "temperature"; +/** + * Enum value "voltage" for attribute {@link ATTR_HW_TYPE}. + * + * Voltage + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const HW_TYPE_VALUE_VOLTAGE = "voltage"; +/** + * Vendor name of the hardware component + * + * @example Dell + * @example HP + * @example Intel + * @example AMD + * @example LSI + * @example Lenovo + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_HW_VENDOR = 'hw.vendor'; +/** + * This attribute represents the state of the application. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_IOS_APP_STATE = 'ios.app.state'; +/** + * Enum value "active" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_APP_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_APP_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_APP_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_APP_STATE_VALUE_INACTIVE = "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_APP_STATE_VALUE_TERMINATE = "terminate"; +/** + * Deprecated. Use the `ios.app.state` attribute. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `ios.app.state`. + */ +export const ATTR_IOS_STATE = 'ios.state'; +/** + * Enum value "active" for attribute {@link ATTR_IOS_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_STATE_VALUE_INACTIVE = "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const IOS_STATE_VALUE_TERMINATE = "terminate"; +/** + * Protocol version, as specified in the `jsonrpc` property of the request and its corresponding response. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_JSONRPC_PROTOCOL_VERSION = 'jsonrpc.protocol.version'; +/** + * A string representation of the `id` property of the request and its corresponding response. + * + * @example 10 + * @example request-7 + * + * @note Under the [JSON-RPC specification](https://www.jsonrpc.org/specification), the `id` property may be a string, number, null, or omitted entirely. When omitted, the request is treated as a notification. Using `null` is not equivalent to omitting the `id`, but it is discouraged. + * Instrumentations **SHOULD NOT** capture this attribute when the `id` is `null` or omitted. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_JSONRPC_REQUEST_ID = 'jsonrpc.request.id'; +/** + * Name of the buffer pool. + * + * @example mapped + * @example direct + * + * @note Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_JVM_BUFFER_POOL_NAME = 'jvm.buffer.pool.name'; +/** + * Name of the garbage collector cause. + * + * @example System.gc() + * @example Allocation Failure + * + * @note Garbage collector cause is generally obtained via [GarbageCollectionNotificationInfo#getGcCause()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcCause()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_JVM_GC_CAUSE = 'jvm.gc.cause'; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name'; +/** + * A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note K8s doesn't have support for obtaining a cluster ID. If this is ever + * added, we will recommend collecting the `k8s.cluster.uid` through the + * official APIs. In the meantime, we are able to use the `uid` of the + * `kube-system` namespace as a proxy for cluster ID. Read on for the + * rationale. + * + * Every object created in a K8s cluster is assigned a distinct UID. The + * `kube-system` namespace is used by Kubernetes itself and will exist + * for the lifetime of the cluster. Using the `uid` of the `kube-system` + * namespace is a reasonable proxy for the K8s ClusterID as it will only + * change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are + * UUIDs as standardized by + * [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html). + * Which states: + * + * > If generated according to one of the mechanisms defined in Rec. + * > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be + * > different from all other UUIDs generated before 3603 A.D., or is + * > extremely likely to be different (depending on the mechanism chosen). + * + * Therefore, UIDs between clusters should be extremely unlikely to + * conflict. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CLUSTER_UID = 'k8s.cluster.uid'; +/** + * The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`). + * + * @example redis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CONTAINER_NAME = 'k8s.container.name'; +/** + * Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart_count'; +/** + * Last terminated reason of the Container. + * + * @example Evicted + * @example Error + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON = 'k8s.container.status.last_terminated_reason'; +/** + * The reason for the container state. Corresponds to the `reason` field of the: [K8s ContainerStateWaiting](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core) or [K8s ContainerStateTerminated](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core) + * + * @example ContainerCreating + * @example CrashLoopBackOff + * @example CreateContainerConfigError + * @example ErrImagePull + * @example ImagePullBackOff + * @example OOMKilled + * @example Completed + * @example Error + * @example ContainerCannotRun + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason'; +/** + * Enum value "Completed" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container has completed execution. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_COMPLETED = "Completed"; +/** + * Enum value "ContainerCannotRun" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container cannot run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CANNOT_RUN = "ContainerCannotRun"; +/** + * Enum value "ContainerCreating" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is being created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CREATING = "ContainerCreating"; +/** + * Enum value "CrashLoopBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is in a crash loop back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_CRASH_LOOP_BACK_OFF = "CrashLoopBackOff"; +/** + * Enum value "CreateContainerConfigError" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error creating the container configuration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_CREATE_CONTAINER_CONFIG_ERROR = "CreateContainerConfigError"; +/** + * Enum value "ErrImagePull" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error pulling the container image. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_ERR_IMAGE_PULL = "ErrImagePull"; +/** + * Enum value "Error" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error with the container. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_ERROR = "Error"; +/** + * Enum value "ImagePullBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container image pull is in back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_IMAGE_PULL_BACK_OFF = "ImagePullBackOff"; +/** + * Enum value "OOMKilled" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container was killed due to out of memory. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_REASON_VALUE_OOM_KILLED = "OOMKilled"; +/** + * The state of the container. [K8s ContainerState](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core) + * + * @example terminated + * @example running + * @example waiting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state'; +/** + * Enum value "running" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_STATE_VALUE_RUNNING = "running"; +/** + * Enum value "terminated" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container has terminated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_STATE_VALUE_TERMINATED = "terminated"; +/** + * Enum value "waiting" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is waiting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_CONTAINER_STATUS_STATE_VALUE_WAITING = "waiting"; +/** + * The cronjob annotation placed on the CronJob, the `` being the annotation name, the value being the annotation value. + * + * @example 4 + * @example + * + * @note Examples: + * + * - An annotation `retries` with value `4` **SHOULD** be recorded as the + * `k8s.cronjob.annotation.retries` attribute with value `"4"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CRONJOB_ANNOTATION = (key) => `k8s.cronjob.annotation.${key}`; +/** + * The label placed on the CronJob, the `` being the label name, the value being the label value. + * + * @example weekly + * @example + * + * @note Examples: + * + * - A label `type` with value `weekly` **SHOULD** be recorded as the + * `k8s.cronjob.label.type` attribute with value `"weekly"`. + * - A label `automated` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CRONJOB_LABEL = (key) => `k8s.cronjob.label.${key}`; +/** + * The name of the CronJob. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CRONJOB_NAME = 'k8s.cronjob.name'; +/** + * The UID of the CronJob. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_CRONJOB_UID = 'k8s.cronjob.uid'; +/** + * The annotation placed on the DaemonSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.daemonset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DAEMONSET_ANNOTATION = (key) => `k8s.daemonset.annotation.${key}`; +/** + * The label placed on the DaemonSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.daemonset.label.app` attribute with value `"guestbook"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DAEMONSET_LABEL = (key) => `k8s.daemonset.label.${key}`; +/** + * The name of the DaemonSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DAEMONSET_NAME = 'k8s.daemonset.name'; +/** + * The UID of the DaemonSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DAEMONSET_UID = 'k8s.daemonset.uid'; +/** + * The annotation placed on the Deployment, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.deployment.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DEPLOYMENT_ANNOTATION = (key) => `k8s.deployment.annotation.${key}`; +/** + * The label placed on the Deployment, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.deployment.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DEPLOYMENT_LABEL = (key) => `k8s.deployment.label.${key}`; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name'; +/** + * The UID of the Deployment. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid'; +/** + * The type of metric source for the horizontal pod autoscaler. + * + * @example Resource + * @example ContainerResource + * + * @note This attribute reflects the `type` field of spec.metrics[] in the HPA. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_METRIC_TYPE = 'k8s.hpa.metric.type'; +/** + * The name of the horizontal pod autoscaler. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_NAME = 'k8s.hpa.name'; +/** + * The API version of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example apps/v1 + * @example autoscaling/v2 + * + * @note This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_SCALETARGETREF_API_VERSION = 'k8s.hpa.scaletargetref.api_version'; +/** + * The kind of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example Deployment + * @example StatefulSet + * + * @note This maps to the `kind` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_SCALETARGETREF_KIND = 'k8s.hpa.scaletargetref.kind'; +/** + * The name of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example my-deployment + * @example my-statefulset + * + * @note This maps to the `name` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_SCALETARGETREF_NAME = 'k8s.hpa.scaletargetref.name'; +/** + * The UID of the horizontal pod autoscaler. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HPA_UID = 'k8s.hpa.uid'; +/** + * The size (identifier) of the K8s huge page. + * + * @example 2Mi + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_HUGEPAGE_SIZE = 'k8s.hugepage.size'; +/** + * The annotation placed on the Job, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `number` with value `1` **SHOULD** be recorded + * as the `k8s.job.annotation.number` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_JOB_ANNOTATION = (key) => `k8s.job.annotation.${key}`; +/** + * The label placed on the Job, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example ci + * @example + * + * @note + * Examples: + * + * - A label `jobtype` with value `ci` **SHOULD** be recorded + * as the `k8s.job.label.jobtype` attribute with value `"ci"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_JOB_LABEL = (key) => `k8s.job.label.${key}`; +/** + * The name of the Job. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_JOB_NAME = 'k8s.job.name'; +/** + * The UID of the Job. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_JOB_UID = 'k8s.job.uid'; +/** + * The annotation placed on the Namespace, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `ttl` with value `0` **SHOULD** be recorded + * as the `k8s.namespace.annotation.ttl` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NAMESPACE_ANNOTATION = (key) => `k8s.namespace.annotation.${key}`; +/** + * The label placed on the Namespace, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example default + * @example + * + * @note + * Examples: + * + * - A label `kubernetes.io/metadata.name` with value `default` **SHOULD** be recorded + * as the `k8s.namespace.label.kubernetes.io/metadata.name` attribute with value `"default"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NAMESPACE_LABEL = (key) => `k8s.namespace.label.${key}`; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name'; +/** + * The phase of the K8s namespace. + * + * @example active + * @example terminating + * + * @note This attribute aligns with the `phase` field of the + * [K8s NamespaceStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase'; +/** + * Enum value "active" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Active namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NAMESPACE_PHASE_VALUE_ACTIVE = "active"; +/** + * Enum value "terminating" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Terminating namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NAMESPACE_PHASE_VALUE_TERMINATING = "terminating"; +/** + * The annotation placed on the Node, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note Examples: + * + * - An annotation `node.alpha.kubernetes.io/ttl` with value `0` **SHOULD** be recorded as + * the `k8s.node.annotation.node.alpha.kubernetes.io/ttl` attribute with value `"0"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_ANNOTATION = (key) => `k8s.node.annotation.${key}`; +/** + * The status of the condition, one of True, False, Unknown. + * + * @example true + * @example false + * @example unknown + * + * @note This attribute aligns with the `status` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status'; +/** + * Enum value "false" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_FALSE = "false"; +/** + * Enum value "true" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_TRUE = "true"; +/** + * Enum value "unknown" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_UNKNOWN = "unknown"; +/** + * The condition type of a K8s Node. + * + * @example Ready + * @example DiskPressure + * + * @note K8s Node conditions as described + * by [K8s documentation](https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition). + * + * This attribute aligns with the `type` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * The set of possible values is not limited to those listed here. Managed Kubernetes environments, + * or custom controllers **MAY** introduce additional node condition types. + * When this occurs, the exact value as reported by the Kubernetes API **SHOULD** be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_CONDITION_TYPE = 'k8s.node.condition.type'; +/** + * Enum value "DiskPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the disk size—that is, if the disk capacity is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_TYPE_VALUE_DISK_PRESSURE = "DiskPressure"; +/** + * Enum value "MemoryPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the node memory—that is, if the node memory is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_TYPE_VALUE_MEMORY_PRESSURE = "MemoryPressure"; +/** + * Enum value "NetworkUnavailable" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The network for the node is not correctly configured + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_TYPE_VALUE_NETWORK_UNAVAILABLE = "NetworkUnavailable"; +/** + * Enum value "PIDPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the processes—that is, if there are too many processes on the node + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_TYPE_VALUE_PID_PRESSURE = "PIDPressure"; +/** + * Enum value "Ready" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The node is healthy and ready to accept pods + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_NODE_CONDITION_TYPE_VALUE_READY = "Ready"; +/** + * The label placed on the Node, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example arm64 + * @example + * + * @note Examples: + * + * - A label `kubernetes.io/arch` with value `arm64` **SHOULD** be recorded + * as the `k8s.node.label.kubernetes.io/arch` attribute with value `"arm64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_LABEL = (key) => `k8s.node.label.${key}`; +/** + * The name of the Node. + * + * @example node-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_NAME = 'k8s.node.name'; +/** + * The UID of the Node. + * + * @example 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_NODE_UID = 'k8s.node.uid'; +/** + * The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value. + * + * @example true + * @example x64 + * @example + * + * @note Examples: + * + * - An annotation `kubernetes.io/enforce-mountable-secrets` with value `true` **SHOULD** be recorded as + * the `k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets` attribute with value `"true"`. + * - An annotation `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.annotation.mycompany.io/arch` attribute with value `"x64"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_ANNOTATION = (key) => `k8s.pod.annotation.${key}`; +/** + * Specifies the hostname of the Pod. + * + * @example collector-gateway + * + * @note The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. + * Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) + * for more information about this field. + * + * This attribute aligns with the `hostname` field of the + * [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_HOSTNAME = 'k8s.pod.hostname'; +/** + * IP address allocated to the Pod. + * + * @example 172.18.0.2 + * + * @note This attribute aligns with the `podIP` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_IP = 'k8s.pod.ip'; +/** + * The label placed on the Pod, the `` being the label name, the value being the label value. + * + * @example my-app + * @example x64 + * @example + * + * @note Examples: + * + * - A label `app` with value `my-app` **SHOULD** be recorded as + * the `k8s.pod.label.app` attribute with value `"my-app"`. + * - A label `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.label.mycompany.io/arch` attribute with value `"x64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_LABEL = (key) => `k8s.pod.label.${key}`; +/** + * Deprecated, use `k8s.pod.label` instead. + * + * @example my-app + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.pod.label`. + */ +export const ATTR_K8S_POD_LABELS = (key) => `k8s.pod.labels.${key}`; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_NAME = 'k8s.pod.name'; +/** + * The start timestamp of the Pod. + * + * @example 2025-12-04T08:41:03Z + * + * @note Date and time at which the object was acknowledged by the Kubelet. + * This is before the Kubelet pulled the container image(s) for the pod. + * + * This attribute aligns with the `startTime` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), + * in ISO 8601 (RFC 3339 compatible) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_START_TIME = 'k8s.pod.start_time'; +/** + * The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Pending + * @example Running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase'; +/** + * Enum value "Failed" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_PHASE_VALUE_FAILED = "Failed"; +/** + * Enum value "Pending" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_PHASE_VALUE_PENDING = "Pending"; +/** + * Enum value "Running" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_PHASE_VALUE_RUNNING = "Running"; +/** + * Enum value "Succeeded" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_PHASE_VALUE_SUCCEEDED = "Succeeded"; +/** + * Enum value "Unknown" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_PHASE_VALUE_UNKNOWN = "Unknown"; +/** + * The reason for the pod state. Corresponds to the `reason` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Evicted + * @example NodeAffinity + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason'; +/** + * Enum value "Evicted" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is evicted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_REASON_VALUE_EVICTED = "Evicted"; +/** + * Enum value "NodeAffinity" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is in a status because of its node affinity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_REASON_VALUE_NODE_AFFINITY = "NodeAffinity"; +/** + * Enum value "NodeLost" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The reason on a pod when its state cannot be confirmed as kubelet is unresponsive on the node it is (was) running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_REASON_VALUE_NODE_LOST = "NodeLost"; +/** + * Enum value "Shutdown" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The node is shutdown + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_REASON_VALUE_SHUTDOWN = "Shutdown"; +/** + * Enum value "UnexpectedAdmissionError" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod was rejected admission to the node because of an error during admission that could not be categorized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_POD_STATUS_REASON_VALUE_UNEXPECTED_ADMISSION_ERROR = "UnexpectedAdmissionError"; +/** + * The UID of the Pod. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_POD_UID = 'k8s.pod.uid'; +/** + * The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.replicaset.annotation.replicas` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICASET_ANNOTATION = (key) => `k8s.replicaset.annotation.${key}`; +/** + * The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.replicaset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICASET_LABEL = (key) => `k8s.replicaset.label.${key}`; +/** + * The name of the ReplicaSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICASET_NAME = 'k8s.replicaset.name'; +/** + * The UID of the ReplicaSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICASET_UID = 'k8s.replicaset.uid'; +/** + * The name of the replication controller. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICATIONCONTROLLER_NAME = 'k8s.replicationcontroller.name'; +/** + * The UID of the replication controller. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_REPLICATIONCONTROLLER_UID = 'k8s.replicationcontroller.uid'; +/** + * The name of the resource quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_RESOURCEQUOTA_NAME = 'k8s.resourcequota.name'; +/** + * The name of the K8s resource a resource quota defines. + * + * @example count/replicationcontrollers + * + * @note The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_RESOURCEQUOTA_RESOURCE_NAME = 'k8s.resourcequota.resource_name'; +/** + * The UID of the resource quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_RESOURCEQUOTA_UID = 'k8s.resourcequota.uid'; +/** + * The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.statefulset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_STATEFULSET_ANNOTATION = (key) => `k8s.statefulset.annotation.${key}`; +/** + * The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.statefulset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_STATEFULSET_LABEL = (key) => `k8s.statefulset.label.${key}`; +/** + * The name of the StatefulSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_STATEFULSET_NAME = 'k8s.statefulset.name'; +/** + * The UID of the StatefulSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_STATEFULSET_UID = 'k8s.statefulset.uid'; +/** + * The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object. + * + * @example gold.storageclass.storage.k8s.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_STORAGECLASS_NAME = 'k8s.storageclass.name'; +/** + * The name of the K8s volume. + * + * @example volume0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_VOLUME_NAME = 'k8s.volume.name'; +/** + * The type of the K8s volume. + * + * @example emptyDir + * @example persistentVolumeClaim + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_K8S_VOLUME_TYPE = 'k8s.volume.type'; +/** + * Enum value "configMap" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [configMap](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_CONFIG_MAP = "configMap"; +/** + * Enum value "downwardAPI" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [downwardAPI](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_DOWNWARD_API = "downwardAPI"; +/** + * Enum value "emptyDir" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * An [emptyDir](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_EMPTY_DIR = "emptyDir"; +/** + * Enum value "local" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [local](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_LOCAL = "local"; +/** + * Enum value "persistentVolumeClaim" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [persistentVolumeClaim](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM = "persistentVolumeClaim"; +/** + * Enum value "secret" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [secret](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const K8S_VOLUME_TYPE_VALUE_SECRET = "secret"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.state`. + */ +export const ATTR_LINUX_MEMORY_SLAB_STATE = 'linux.memory.slab.state'; +/** + * Enum value "reclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE = "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE = "unreclaimable"; +/** + * The basename of the file. + * + * @example audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_FILE_NAME = 'log.file.name'; +/** + * The basename of the file, with symlinks resolved. + * + * @example uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_FILE_NAME_RESOLVED = 'log.file.name_resolved'; +/** + * The full path to the file. + * + * @example /var/log/mysql/audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_FILE_PATH = 'log.file.path'; +/** + * The full path to the file, with symlinks resolved. + * + * @example /var/lib/docker/uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_FILE_PATH_RESOLVED = 'log.file.path_resolved'; +/** + * The stream associated with the log. See below for a list of well-known values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_IOSTREAM = 'log.iostream'; +/** + * Enum value "stderr" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Events from stderr stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const LOG_IOSTREAM_VALUE_STDERR = "stderr"; +/** + * Enum value "stdout" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Logs from stdout stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const LOG_IOSTREAM_VALUE_STDOUT = "stdout"; +/** + * The complete original Log Record. + * + * @example 77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - Something happened + * @example [INFO] 8/3/24 12:34:56 Something happened + * + * @note This value **MAY** be added when processing a Log Record which was originally transmitted as a string or equivalent data type AND the Body field of the Log Record does not contain the same value. (e.g. a syslog or a log record read from a file.) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_RECORD_ORIGINAL = 'log.record.original'; +/** + * A unique identifier for the Log Record. + * + * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV + * + * @note If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records **MUST** have different values. + * The id **MAY** be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_LOG_RECORD_UID = 'log.record.uid'; +/** + * Name of the logical partition that hosts a systems with a mainframe operating system. + * + * @example LPAR01 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MAINFRAME_LPAR_NAME = 'mainframe.lpar.name'; +/** + * The name of the request or notification method. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MCP_METHOD_NAME = 'mcp.method.name'; +/** + * Enum value "completion/complete" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to complete a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE = "completion/complete"; +/** + * Enum value "elicitation/create" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request from the server to elicit additional information from the user via the client + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_ELICITATION_CREATE = "elicitation/create"; +/** + * Enum value "initialize" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to initialize the MCP client. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_INITIALIZE = "initialize"; +/** + * Enum value "logging/setLevel" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to set the logging level. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL = "logging/setLevel"; +/** + * Enum value "notifications/cancelled" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification cancelling a previously-issued request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED = "notifications/cancelled"; +/** + * Enum value "notifications/initialized" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the MCP client has been initialized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED = "notifications/initialized"; +/** + * Enum value "notifications/message" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a message has been received. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE = "notifications/message"; +/** + * Enum value "notifications/progress" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating the progress for a long-running operation. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS = "notifications/progress"; +/** + * Enum value "notifications/prompts/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of prompts has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED = "notifications/prompts/list_changed"; +/** + * Enum value "notifications/resources/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of resources has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED = "notifications/resources/list_changed"; +/** + * Enum value "notifications/resources/updated" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a resource has been updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED = "notifications/resources/updated"; +/** + * Enum value "notifications/roots/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of roots has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED = "notifications/roots/list_changed"; +/** + * Enum value "notifications/tools/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of tools has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED = "notifications/tools/list_changed"; +/** + * Enum value "ping" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to check that the other party is still alive. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_PING = "ping"; +/** + * Enum value "prompts/get" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to get a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_PROMPTS_GET = "prompts/get"; +/** + * Enum value "prompts/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list prompts available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_PROMPTS_LIST = "prompts/list"; +/** + * Enum value "resources/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resources available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_RESOURCES_LIST = "resources/list"; +/** + * Enum value "resources/read" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to read a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_RESOURCES_READ = "resources/read"; +/** + * Enum value "resources/subscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to subscribe to a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE = "resources/subscribe"; +/** + * Enum value "resources/templates/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resource templates available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST = "resources/templates/list"; +/** + * Enum value "resources/unsubscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to unsubscribe from resource updates. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE = "resources/unsubscribe"; +/** + * Enum value "roots/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list roots available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_ROOTS_LIST = "roots/list"; +/** + * Enum value "sampling/createMessage" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to create a sampling message. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE = "sampling/createMessage"; +/** + * Enum value "tools/call" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to call a tool. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_TOOLS_CALL = "tools/call"; +/** + * Enum value "tools/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list tools available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MCP_METHOD_NAME_VALUE_TOOLS_LIST = "tools/list"; +/** + * The [version](https://modelcontextprotocol.io/specification/versioning) of the Model Context Protocol used. + * + * @example 2025-06-18 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MCP_PROTOCOL_VERSION = 'mcp.protocol.version'; +/** + * The value of the resource uri. + * + * @example postgres://database/customers/schema + * @example file:///home/user/documents/report.pdf + * + * @note This is a URI of the resource provided in the following requests or notifications: `resources/read`, `resources/subscribe`, `resources/unsubscribe`, or `notifications/resources/updated`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MCP_RESOURCE_URI = 'mcp.resource.uri'; +/** + * Identifies [MCP session](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management). + * + * @example 191c4850af6c49e08843a3f6c80e5046 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MCP_SESSION_ID = 'mcp.session.id'; +/** + * Deprecated, use `rpc.message.compressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.compressed_size`. + */ +export const ATTR_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size'; +/** + * Deprecated, use `rpc.message.id` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.id`. + */ +export const ATTR_MESSAGE_ID = 'message.id'; +/** + * Deprecated, use `rpc.message.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.type`. + */ +export const ATTR_MESSAGE_TYPE = 'message.type'; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGE_TYPE_VALUE_RECEIVED = "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGE_TYPE_VALUE_SENT = "SENT"; +/** + * Deprecated, use `rpc.message.uncompressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.uncompressed_size`. + */ +export const ATTR_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size'; +/** + * The number of messages sent, received, or processed in the scope of the batching operation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count'; +/** + * A unique identifier for the client that consumes or produces a message. + * + * @example client-5 + * @example myhost@8742@s8083jm + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_CLIENT_ID = 'messaging.client.id'; +/** + * The name of the consumer group with which a consumer is associated. + * + * @example my-group + * @example indexer + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.consumer.group.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_CONSUMER_GROUP_NAME = 'messaging.consumer.group.name'; +/** + * A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_ANONYMOUS = 'messaging.destination.anonymous'; +/** + * The message destination name + * + * @example MyQueue + * @example MyTopic + * + * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If + * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name'; +/** + * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`. + * + * @example "1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_PARTITION_ID = 'messaging.destination.partition.id'; +/** + * The name of the destination subscription from which a message is consumed. + * + * @example subscription-a + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.destination.subscription.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME = 'messaging.destination.subscription.name'; +/** + * Low cardinality representation of the messaging destination name + * + * @example /customers/{customerId} + * + * @note Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_TEMPLATE = 'messaging.destination.template'; +/** + * A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_TEMPORARY = 'messaging.destination.temporary'; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export const ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS = 'messaging.destination_publish.anonymous'; +/** + * Deprecated, no replacement at this time. + * + * @example MyQueue + * @example MyTopic + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export const ATTR_MESSAGING_DESTINATION_PUBLISH_NAME = 'messaging.destination_publish.name'; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "$Default" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +export const ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP = 'messaging.eventhubs.consumer.group'; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME = 'messaging.eventhubs.message.enqueued_time'; +/** + * The ack deadline in seconds set for the modify ack deadline request. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE = 'messaging.gcp_pubsub.message.ack_deadline'; +/** + * The ack id for a given message. + * + * @example "ack_id" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID = 'messaging.gcp_pubsub.message.ack_id'; +/** + * The delivery attempt for a given message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT = 'messaging.gcp_pubsub.message.delivery_attempt'; +/** + * The ordering key for a given message. If the attribute is not present, the message does not have an ordering key. + * + * @example "ordering_key" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY = 'messaging.gcp_pubsub.message.ordering_key'; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "my-group" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +export const ATTR_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer.group'; +/** + * Deprecated, use `messaging.destination.partition.id` instead. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Record string representation of the partition id in `messaging.destination.partition.id` attribute. + */ +export const ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION = 'messaging.kafka.destination.partition'; +/** + * 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. + * + * @example "myKey" + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message.key'; +/** + * Deprecated, use `messaging.kafka.offset` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.kafka.offset`. + */ +export const ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET = 'messaging.kafka.message.offset'; +/** + * A boolean that is true if the message is a tombstone. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = 'messaging.kafka.message.tombstone'; +/** + * The offset of a record in the corresponding Kafka partition. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset'; +/** + * The size of the message body in bytes. + * + * @example 1439 + * + * @note This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed + * body size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_MESSAGE_BODY_SIZE = 'messaging.message.body.size'; +/** + * The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @example "MyConversationId" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_MESSAGE_CONVERSATION_ID = 'messaging.message.conversation_id'; +/** + * The size of the message body and metadata in bytes. + * + * @example 2738 + * + * @note This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed + * size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE = 'messaging.message.envelope.size'; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @example "452a7c7c7c7048c2f887f61572b18fc2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id'; +/** + * Deprecated, use `messaging.operation.type` instead. + * + * @example publish + * @example create + * @example process + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.operation.type`. + */ +export const ATTR_MESSAGING_OPERATION = 'messaging.operation'; +/** + * The system-specific name of the messaging operation. + * + * @example ack + * @example nack + * @example send + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name'; +/** + * A string identifying the type of the messaging operation. + * + * @note If a custom value is used, it **MUST** be of low cardinality. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_OPERATION_TYPE = 'messaging.operation.type'; +/** + * Enum value "create" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * A message is created. "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch sending scenarios. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_CREATE = "create"; +/** + * Enum value "deliver" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `process` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_DELIVER = "deliver"; +/** + * Enum value "process" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are processed by a consumer. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_PROCESS = "process"; +/** + * Enum value "publish" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `send` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `send`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_PUBLISH = "publish"; +/** + * Enum value "receive" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = "receive"; +/** + * Enum value "send" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are provided for sending to an intermediary. If a single message is sent, the context of the "Send" span can be used as the creation context and no "Create" span needs to be created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_SEND = "send"; +/** + * Enum value "settle" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are settled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_OPERATION_TYPE_VALUE_SETTLE = "settle"; +/** + * RabbitMQ message routing key. + * + * @example "myKey" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = 'messaging.rabbitmq.destination.routing_key'; +/** + * RabbitMQ message delivery tag + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG = 'messaging.rabbitmq.message.delivery_tag'; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "myConsumerGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name` on the consumer spans. No replacement for producer spans. + */ +export const ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP = 'messaging.rocketmq.client_group'; +/** + * Model of message consumption. This only applies to consumer spans. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL = 'messaging.rocketmq.consumption_model'; +/** + * Enum value "broadcasting" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Broadcasting consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING = "broadcasting"; +/** + * Enum value "clustering" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Clustering consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING = "clustering"; +/** + * The delay time level for delay message, which determines the message delay time. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL = 'messaging.rocketmq.message.delay_time_level'; +/** + * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + * + * @example 1665987217045 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP = 'messaging.rocketmq.message.delivery_timestamp'; +/** + * It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group. + * + * @example "myMessageGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP = 'messaging.rocketmq.message.group'; +/** + * Key(s) of message, another way to mark message besides message id. + * + * @example ["keyA", "keyB"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS = 'messaging.rocketmq.message.keys'; +/** + * The secondary classifier of message besides topic. + * + * @example "tagA" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG = 'messaging.rocketmq.message.tag'; +/** + * Type of message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE = 'messaging.rocketmq.message.type'; +/** + * Enum value "delay" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Delay message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY = "delay"; +/** + * Enum value "fifo" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * FIFO message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO = "fifo"; +/** + * Enum value "normal" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Normal message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL = "normal"; +/** + * Enum value "transaction" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Transaction message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION = "transaction"; +/** + * Namespace of RocketMQ resources, resources in different namespaces are individual. + * + * @example "myNamespace" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_ROCKETMQ_NAMESPACE = 'messaging.rocketmq.namespace'; +/** + * Deprecated, use `messaging.destination.subscription.name` instead. + * + * @example "subscription-a" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.destination.subscription.name`. + */ +export const ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME = 'messaging.servicebus.destination.subscription_name'; +/** + * Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS = 'messaging.servicebus.disposition_status'; +/** + * Enum value "abandon" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is abandoned + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON = "abandon"; +/** + * Enum value "complete" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is completed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE = "complete"; +/** + * Enum value "dead_letter" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is sent to dead letter queue + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER = "dead_letter"; +/** + * Enum value "defer" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is deferred + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER = "defer"; +/** + * Number of deliveries that have been attempted for this message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT = 'messaging.servicebus.message.delivery_count'; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME = 'messaging.servicebus.message.enqueued_time'; +/** + * The messaging system as identified by the client instrumentation. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_SYSTEM = 'messaging.system'; +/** + * Enum value "activemq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache ActiveMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_ACTIVEMQ = "activemq"; +/** + * Enum value "aws.sns" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Notification Service (SNS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_AWS_SNS = "aws.sns"; +/** + * Enum value "aws_sqs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Queue Service (SQS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_AWS_SQS = "aws_sqs"; +/** + * Enum value "eventgrid" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Grid + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_EVENTGRID = "eventgrid"; +/** + * Enum value "eventhubs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Hubs + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_EVENTHUBS = "eventhubs"; +/** + * Enum value "gcp_pubsub" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Google Cloud Pub/Sub + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_GCP_PUBSUB = "gcp_pubsub"; +/** + * Enum value "jms" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Java Message Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_JMS = "jms"; +/** + * Enum value "kafka" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Kafka + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_KAFKA = "kafka"; +/** + * Enum value "pulsar" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Pulsar + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_PULSAR = "pulsar"; +/** + * Enum value "rabbitmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * RabbitMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_RABBITMQ = "rabbitmq"; +/** + * Enum value "rocketmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache RocketMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_ROCKETMQ = "rocketmq"; +/** + * Enum value "servicebus" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Service Bus + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const MESSAGING_SYSTEM_VALUE_SERVICEBUS = "servicebus"; +/** + * Deprecated, use `network.local.address`. + * + * @example "192.168.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export const ATTR_NET_HOST_IP = 'net.host.ip'; +/** + * Deprecated, use `server.address`. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export const ATTR_NET_HOST_NAME = 'net.host.name'; +/** + * Deprecated, use `server.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port`. + */ +export const ATTR_NET_HOST_PORT = 'net.host.port'; +/** + * Deprecated, use `network.peer.address`. + * + * @example "127.0.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export const ATTR_NET_PEER_IP = 'net.peer.ip'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export const ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export const ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Deprecated, use `network.protocol.name`. + * + * @example amqp + * @example http + * @example mqtt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.name`. + */ +export const ATTR_NET_PROTOCOL_NAME = 'net.protocol.name'; +/** + * Deprecated, use `network.protocol.version`. + * + * @example "3.1.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.version`. + */ +export const ATTR_NET_PROTOCOL_VERSION = 'net.protocol.version'; +/** + * Deprecated, use `network.transport` and `network.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `network.transport` and `network.type`. + */ +export const ATTR_NET_SOCK_FAMILY = 'net.sock.family'; +/** + * Enum value "inet" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv4 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_SOCK_FAMILY_VALUE_INET = "inet"; +/** + * Enum value "inet6" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv6 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_SOCK_FAMILY_VALUE_INET6 = "inet6"; +/** + * Enum value "unix" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * Unix domain socket path + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_SOCK_FAMILY_VALUE_UNIX = "unix"; +/** + * Deprecated, use `network.local.address`. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export const ATTR_NET_SOCK_HOST_ADDR = 'net.sock.host.addr'; +/** + * Deprecated, use `network.local.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.port`. + */ +export const ATTR_NET_SOCK_HOST_PORT = 'net.sock.host.port'; +/** + * Deprecated, use `network.peer.address`. + * + * @example 192.168.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export const ATTR_NET_SOCK_PEER_ADDR = 'net.sock.peer.addr'; +/** + * Deprecated, no replacement at this time. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export const ATTR_NET_SOCK_PEER_NAME = 'net.sock.peer.name'; +/** + * Deprecated, use `network.peer.port`. + * + * @example 65531 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.port`. + */ +export const ATTR_NET_SOCK_PEER_PORT = 'net.sock.peer.port'; +/** + * Deprecated, use `network.transport`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.transport`. + */ +export const ATTR_NET_TRANSPORT = 'net.transport'; +/** + * Enum value "inproc" for attribute {@link ATTR_NET_TRANSPORT}. + * + * In-process communication. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_TRANSPORT_VALUE_INPROC = "inproc"; +/** + * Enum value "ip_tcp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_TRANSPORT_VALUE_IP_TCP = "ip_tcp"; +/** + * Enum value "ip_udp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_TRANSPORT_VALUE_IP_UDP = "ip_udp"; +/** + * Enum value "other" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Something else (non IP-based). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_TRANSPORT_VALUE_OTHER = "other"; +/** + * Enum value "pipe" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Named or anonymous pipe. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NET_TRANSPORT_VALUE_PIPE = "pipe"; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @example "DE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CARRIER_ICC = 'network.carrier.icc'; +/** + * The mobile carrier country code. + * + * @example "310" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CARRIER_MCC = 'network.carrier.mcc'; +/** + * The mobile carrier network code. + * + * @example "001" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CARRIER_MNC = 'network.carrier.mnc'; +/** + * The name of the mobile carrier. + * + * @example "sprint" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CARRIER_NAME = 'network.carrier.name'; +/** + * The state of network connection + * + * @example close_wait + * + * @note Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2) + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CONNECTION_STATE = 'network.connection.state'; +/** + * Enum value "close_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_CLOSE_WAIT = "close_wait"; +/** + * Enum value "closed" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_CLOSED = "closed"; +/** + * Enum value "closing" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_CLOSING = "closing"; +/** + * Enum value "established" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_ESTABLISHED = "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_1 = "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_2 = "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_LAST_ACK = "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_LISTEN = "listen"; +/** + * Enum value "syn_received" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_SYN_RECEIVED = "syn_received"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_SYN_SENT = "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_STATE_VALUE_TIME_WAIT = "time_wait"; +/** + * 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. + * + * @example "LTE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CONNECTION_SUBTYPE = 'network.connection.subtype'; +/** + * Enum value "cdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA = "cdma"; +/** + * Enum value "cdma2000_1xrtt" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA2000 1XRTT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT = "cdma2000_1xrtt"; +/** + * Enum value "edge" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EDGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE = "edge"; +/** + * Enum value "ehrpd" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EHRPD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD = "ehrpd"; +/** + * Enum value "evdo_0" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rel. 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 = "evdo_0"; +/** + * Enum value "evdo_a" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. A + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A = "evdo_a"; +/** + * Enum value "evdo_b" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. B + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B = "evdo_b"; +/** + * Enum value "gprs" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GPRS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS = "gprs"; +/** + * Enum value "gsm" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GSM + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_GSM = "gsm"; +/** + * Enum value "hsdpa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSDPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA = "hsdpa"; +/** + * Enum value "hspa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA = "hspa"; +/** + * Enum value "hspap" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPAP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP = "hspap"; +/** + * Enum value "hsupa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSUPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA = "hsupa"; +/** + * Enum value "iden" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IDEN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN = "iden"; +/** + * Enum value "iwlan" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IWLAN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN = "iwlan"; +/** + * Enum value "lte" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE = "lte"; +/** + * Enum value "lte_ca" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE CA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA = "lte_ca"; +/** + * Enum value "nr" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NR (New Radio) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_NR = "nr"; +/** + * Enum value "nrnsa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NRNSA (New Radio Non-Standalone) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA = "nrnsa"; +/** + * Enum value "td_scdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * TD-SCDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA = "td_scdma"; +/** + * Enum value "umts" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * UMTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS = "umts"; +/** + * The internet connection type. + * + * @example "wifi" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_CONNECTION_TYPE = 'network.connection.type'; +/** + * Enum value "cell" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_TYPE_VALUE_CELL = "cell"; +/** + * Enum value "unavailable" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE = "unavailable"; +/** + * Enum value "unknown" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN = "unknown"; +/** + * Enum value "wifi" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_TYPE_VALUE_WIFI = "wifi"; +/** + * Enum value "wired" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_CONNECTION_TYPE_VALUE_WIRED = "wired"; +/** + * The network interface name. + * + * @example lo + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_INTERFACE_NAME = 'network.interface.name'; +/** + * The network IO operation direction. + * + * @example transmit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NETWORK_IO_DIRECTION = 'network.io.direction'; +/** + * Enum value "receive" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_IO_DIRECTION_VALUE_RECEIVE = "receive"; +/** + * Enum value "transmit" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NETWORK_IO_DIRECTION_VALUE_TRANSMIT = "transmit"; +/** + * NFSv4+ operation name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NFS_OPERATION_NAME = 'nfs.operation.name'; +/** + * Linux: one of "hit" (NFSD_STATS_RC_HITS), "miss" (NFSD_STATS_RC_MISSES), or "nocache" (NFSD_STATS_RC_NOCACHE -- uncacheable) + * + * @example "hit" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NFS_SERVER_REPCACHE_STATUS = 'nfs.server.repcache.status'; +/** + * The state of event loop time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_NODEJS_EVENTLOOP_STATE = 'nodejs.eventloop.state'; +/** + * Enum value "active" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Active time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "idle" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Idle time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const NODEJS_EVENTLOOP_STATE_VALUE_IDLE = "idle"; +/** + * The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known. + * + * @example sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4 + * + * @note Follows [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), and specifically the [Digest property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests). + * An example can be found in [Example Image Manifest](https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OCI_MANIFEST_DIGEST = 'oci.manifest.digest'; +/** + * ONC/Sun RPC procedure name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ONC_RPC_PROCEDURE_NAME = 'onc_rpc.procedure.name'; +/** + * ONC/Sun RPC procedure number. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ONC_RPC_PROCEDURE_NUMBER = 'onc_rpc.procedure.number'; +/** + * ONC/Sun RPC program name. + * + * @example portmapper + * @example nfs + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ONC_RPC_PROGRAM_NAME = 'onc_rpc.program.name'; +/** + * ONC/Sun RPC program version. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ONC_RPC_VERSION = 'onc_rpc.version'; +/** + * The service tier requested. May be a specific tier, default, or auto. + * + * @example auto + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENAI_REQUEST_SERVICE_TIER = 'openai.request.service_tier'; +/** + * Enum value "auto" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = "auto"; +/** + * Enum value "default" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = "default"; +/** + * The service tier used for the response. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENAI_RESPONSE_SERVICE_TIER = 'openai.response.service_tier'; +/** + * A fingerprint to track any eventual change in the Generative AI environment. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'openai.response.system_fingerprint'; +/** + * The name of the cluster quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENSHIFT_CLUSTERQUOTA_NAME = 'openshift.clusterquota.name'; +/** + * The UID of the cluster quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENSHIFT_CLUSTERQUOTA_UID = 'openshift.clusterquota.uid'; +/** + * Parent-child Reference type + * + * @note The causal relationship between a child Span and a parent Span. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OPENTRACING_REF_TYPE = 'opentracing.ref_type'; +/** + * Enum value "child_of" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span depends on the child Span in some capacity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OPENTRACING_REF_TYPE_VALUE_CHILD_OF = "child_of"; +/** + * Enum value "follows_from" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span doesn't depend in any way on the result of the child Span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM = "follows_from"; +/** + * Unique identifier for a particular build or compilation of the operating system. + * + * @example TQ3C.230805.001.B2 + * @example 20E247 + * @example 22621 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_BUILD_ID = 'os.build_id'; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @example Microsoft Windows [Version 10.0.18363.778] + * @example Ubuntu 18.04.1 LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_DESCRIPTION = 'os.description'; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_NAME = 'os.name'; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_TYPE = 'os.type'; +/** + * Enum value "aix" for attribute {@link ATTR_OS_TYPE}. + * + * AIX (Advanced Interactive eXecutive) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_AIX = "aix"; +/** + * Enum value "darwin" for attribute {@link ATTR_OS_TYPE}. + * + * Apple Darwin + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_DARWIN = "darwin"; +/** + * Enum value "dragonflybsd" for attribute {@link ATTR_OS_TYPE}. + * + * DragonFly BSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_DRAGONFLYBSD = "dragonflybsd"; +/** + * Enum value "freebsd" for attribute {@link ATTR_OS_TYPE}. + * + * FreeBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_FREEBSD = "freebsd"; +/** + * Enum value "hpux" for attribute {@link ATTR_OS_TYPE}. + * + * HP-UX (Hewlett Packard Unix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_HPUX = "hpux"; +/** + * Enum value "linux" for attribute {@link ATTR_OS_TYPE}. + * + * Linux + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_LINUX = "linux"; +/** + * Enum value "netbsd" for attribute {@link ATTR_OS_TYPE}. + * + * NetBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_NETBSD = "netbsd"; +/** + * Enum value "openbsd" for attribute {@link ATTR_OS_TYPE}. + * + * OpenBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_OPENBSD = "openbsd"; +/** + * Enum value "solaris" for attribute {@link ATTR_OS_TYPE}. + * + * SunOS, Oracle Solaris + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_SOLARIS = "solaris"; +/** + * Enum value "windows" for attribute {@link ATTR_OS_TYPE}. + * + * Microsoft Windows + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_WINDOWS = "windows"; +/** + * Enum value "z_os" for attribute {@link ATTR_OS_TYPE}. + * + * Deprecated. Use `zos` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `zos`. + */ +export const OS_TYPE_VALUE_Z_OS = "z_os"; +/** + * Enum value "zos" for attribute {@link ATTR_OS_TYPE}. + * + * IBM z/OS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OS_TYPE_VALUE_ZOS = "zos"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OS_VERSION = 'os.version'; +/** + * A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. + * + * @example otlp_grpc_span_exporter/0 + * @example custom-name + * + * @note Implementations **SHOULD** ensure a low cardinality for this attribute, even across application or SDK restarts. + * E.g. implementations **MUST NOT** use UUIDs as values for this attribute. + * + * Implementations **MAY** achieve these goals by following a `/` pattern, e.g. `batching_span_processor/0`. + * Hereby `otel.component.type` refers to the corresponding attribute value of the component. + * + * The value of `instance-counter` **MAY** be automatically assigned by the component and uniqueness within the enclosing SDK instance **MUST** be guaranteed. + * For example, `` **MAY** be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an + * instance of the given component type is started. + * + * With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0` + * as `otel.component.name`, the second one `batching_span_processor/1` and so on. + * These values will therefore be reused in the case of an application restart. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_COMPONENT_NAME = 'otel.component.name'; +/** + * A name identifying the type of the OpenTelemetry component. + * + * @example batching_span_processor + * @example com.example.MySpanExporter + * + * @note If none of the standardized values apply, implementations **SHOULD** use the language-defined name of the type. + * E.g. for Java the fully qualified classname **SHOULD** be used in this case. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_COMPONENT_TYPE = 'otel.component.type'; +/** + * Enum value "batching_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR = "batching_log_processor"; +/** + * Enum value "batching_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR = "batching_span_processor"; +/** + * Enum value "otlp_grpc_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_LOG_EXPORTER = "otlp_grpc_log_exporter"; +/** + * Enum value "otlp_grpc_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_METRIC_EXPORTER = "otlp_grpc_metric_exporter"; +/** + * Enum value "otlp_grpc_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER = "otlp_grpc_span_exporter"; +/** + * Enum value "otlp_http_json_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_LOG_EXPORTER = "otlp_http_json_log_exporter"; +/** + * Enum value "otlp_http_json_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_METRIC_EXPORTER = "otlp_http_json_metric_exporter"; +/** + * Enum value "otlp_http_json_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER = "otlp_http_json_span_exporter"; +/** + * Enum value "otlp_http_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER = "otlp_http_log_exporter"; +/** + * Enum value "otlp_http_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_METRIC_EXPORTER = "otlp_http_metric_exporter"; +/** + * Enum value "otlp_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER = "otlp_http_span_exporter"; +/** + * Enum value "periodic_metric_reader" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK periodically exporting metric reader + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_PERIODIC_METRIC_READER = "periodic_metric_reader"; +/** + * Enum value "prometheus_http_text_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Prometheus metric exporter over HTTP with the default text-based format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_PROMETHEUS_HTTP_TEXT_METRIC_EXPORTER = "prometheus_http_text_metric_exporter"; +/** + * Enum value "simple_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR = "simple_log_processor"; +/** + * Enum value "simple_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR = "simple_span_processor"; +/** + * Enum value "zipkin_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Zipkin span exporter over HTTP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_COMPONENT_TYPE_VALUE_ZIPKIN_HTTP_SPAN_EXPORTER = "zipkin_http_span_exporter"; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @note This attribute **SHOULD** be used by non-OTLP exporters when destination does not support `EventName` or equivalent field. This attribute **MAY** be used by applications using existing logging libraries so that it can be used to set the `EventName` field by Collector or SDK components. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_EVENT_NAME = 'otel.event.name'; +/** + * Deprecated. Use the `otel.scope.name` attribute + * + * @example io.opentelemetry.contrib.mongodb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.name`. + */ +export const ATTR_OTEL_LIBRARY_NAME = 'otel.library.name'; +/** + * Deprecated. Use the `otel.scope.version` attribute. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.version`. + */ +export const ATTR_OTEL_LIBRARY_VERSION = 'otel.library.version'; +/** + * The schema URL of the instrumentation scope. + * + * @example https://opentelemetry.io/schemas/1.31.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_SCOPE_SCHEMA_URL = 'otel.scope.schema_url'; +/** + * 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) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin'; +/** + * Enum value "local" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is false + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_PARENT_ORIGIN_VALUE_LOCAL = "local"; +/** + * Enum value "none" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span does not have a parent, it is a root span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_PARENT_ORIGIN_VALUE_NONE = "none"; +/** + * Enum value "remote" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is true + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_PARENT_ORIGIN_VALUE_REMOTE = "remote"; +/** + * The result value of the sampler for this span + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_OTEL_SPAN_SAMPLING_RESULT = 'otel.span.sampling_result'; +/** + * Enum value "DROP" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled and not recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP = "DROP"; +/** + * Enum value "RECORD_AND_SAMPLE" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is sampled and recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE = "RECORD_AND_SAMPLE"; +/** + * Enum value "RECORD_ONLY" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled, but recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY = "RECORD_ONLY"; +/** + * The [`service.name`](/docs/resource/README.md#service) of the remote service. **SHOULD** be equal to the actual `service.name` resource attribute of the remote service if any. + * + * @example "AuthTokenCache" + * + * @note Examples of `peer.service` that users may specify: + * + * - A Redis cache of auth tokens as `peer.service="AuthTokenCache"`. + * - A gRPC service `rpc.service="io.opentelemetry.AuthService"` may be hosted in both a gateway, `peer.service="ExternalApiService"` and a backend, `peer.service="AuthService"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `service.peer.name`. + */ +export const ATTR_PEER_SERVICE = 'peer.service'; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +export const ATTR_POOL_NAME = 'pool.name'; +/** + * Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_LOCATION_IS_FOLDED = 'pprof.location.is_folded'; +/** + * Indicates that there are filenames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_MAPPING_HAS_FILENAMES = 'pprof.mapping.has_filenames'; +/** + * Indicates that there are functions related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_MAPPING_HAS_FUNCTIONS = 'pprof.mapping.has_functions'; +/** + * Indicates that there are inline frames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_MAPPING_HAS_INLINE_FRAMES = 'pprof.mapping.has_inline_frames'; +/** + * Indicates that there are line numbers related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_MAPPING_HAS_LINE_NUMBERS = 'pprof.mapping.has_line_numbers'; +/** + * Free-form text associated with the profile. This field should not be used to store any machine-readable information, it is only for human-friendly content. + * + * @example ["hello world", "bazinga"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_PROFILE_COMMENT = 'pprof.profile.comment'; +/** + * Documentation link for this profile type. + * + * @example http://pprof.example.com/cpu-profile.html + * + * @note The URL must be absolute and may be missing if the profile was generated by code that did not supply a link + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_PROFILE_DOC_URL = 'pprof.profile.doc_url'; +/** + * Frames with Function.function_name fully matching the regexp will be dropped from the samples, along with their successors. + * + * @example /foobar/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_PROFILE_DROP_FRAMES = 'pprof.profile.drop_frames'; +/** + * Frames with Function.function_name fully matching the regexp will be kept, even if it matches drop_frames. + * + * @example /bazinga/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PPROF_PROFILE_KEEP_FRAMES = 'pprof.profile.keep_frames'; +/** + * Length of the process.command_args array + * + * @example 4 + * + * @note This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_ARGS_COUNT = 'process.args_count'; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_COMMAND = 'process.command'; +/** + * 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`. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args'; +/** + * 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. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example C:\\cmd\\otecol --config="my directory\\config.yaml" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_COMMAND_LINE = 'process.command_line'; +/** + * Specifies whether the context switches for this data point were voluntary or involuntary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_CONTEXT_SWITCH_TYPE = 'process.context_switch.type'; +/** + * Enum value "involuntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY = "involuntary"; +/** + * Enum value "voluntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY = "voluntary"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export const ATTR_PROCESS_CPU_STATE = 'process.cpu.state'; +/** + * Enum value "system" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_CPU_STATE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_CPU_STATE_VALUE_USER = "user"; +/** + * Enum value "wait" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_CPU_STATE_VALUE_WAIT = "wait"; +/** + * The date and time the process was created, in ISO 8601 format. + * + * @example 2023-11-21T09:25:34.853Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_CREATION_TIME = 'process.creation.time'; +/** + * Process environment variables, `` being the environment variable name, the value being the environment variable value. + * + * @example ubuntu + * @example /usr/local/bin:/usr/bin + * + * @note Examples: + * + * - an environment variable `USER` with value `"ubuntu"` **SHOULD** be recorded + * as the `process.environment_variable.USER` attribute with value `"ubuntu"`. + * - an environment variable `PATH` with value `"/usr/local/bin:/usr/bin"` + * **SHOULD** be recorded as the `process.environment_variable.PATH` attribute + * with value `"/usr/local/bin:/usr/bin"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_ENVIRONMENT_VARIABLE = (key) => `process.environment_variable.${key}`; +/** + * The GNU build ID as found in the `.note.gnu.build-id` ELF section (hex string). + * + * @example c89b11207f6479603b0d49bf291c092c2b719293 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU = 'process.executable.build_id.gnu'; +/** + * The Go build ID as retrieved by `go tool buildid `. + * + * @example foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO = 'process.executable.build_id.go'; +/** + * Profiling specific build ID for executables. See the OTel specification for Profiles for more information. + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH = 'process.executable.build_id.htlhash'; +/** + * "Deprecated, use `process.executable.build_id.htlhash` instead." + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.executable.build_id.htlhash`. + */ +export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING = 'process.executable.build_id.profiling'; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name'; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path'; +/** + * The exit code of the process. + * + * @example 127 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXIT_CODE = 'process.exit.code'; +/** + * The date and time the process exited, in ISO 8601 format. + * + * @example 2023-11-21T09:26:12.315Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_EXIT_TIME = 'process.exit.time'; +/** + * The PID of the process's group leader. This is also the process group ID (PGID) of the process. + * + * @example 23 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_GROUP_LEADER_PID = 'process.group_leader.pid'; +/** + * Whether the process is connected to an interactive shell. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_INTERACTIVE = 'process.interactive'; +/** + * The control group associated with the process. + * + * @example 1:name=systemd:/user.slice/user-1000.slice/session-3.scope + * @example 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope + * + * @note Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the [/proc/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_LINUX_CGROUP = 'process.linux.cgroup'; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_OWNER = 'process.owner'; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +export const ATTR_PROCESS_PAGING_FAULT_TYPE = 'process.paging.fault_type'; +/** + * Enum value "major" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR = "minor"; +/** + * Parent Process identifier (PPID). + * + * @example 111 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_PARENT_PID = 'process.parent_pid'; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_PID = 'process.pid'; +/** + * The real user ID (RUID) of the process. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_REAL_USER_ID = 'process.real_user.id'; +/** + * The username of the real user of the process. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_REAL_USER_NAME = 'process.real_user.name'; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version'; +/** + * The saved user ID (SUID) of the process. + * + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_SAVED_USER_ID = 'process.saved_user.id'; +/** + * The username of the saved user. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_SAVED_USER_NAME = 'process.saved_user.name'; +/** + * The PID of the process's session leader. This is also the session ID (SID) of the process. + * + * @example 14 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_SESSION_LEADER_PID = 'process.session_leader.pid'; +/** + * The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES) + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_STATE = 'process.state'; +/** + * Enum value "defunct" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_STATE_VALUE_DEFUNCT = "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_STATE_VALUE_RUNNING = "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_STATE_VALUE_SLEEPING = "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROCESS_STATE_VALUE_STOPPED = "stopped"; +/** + * Process title (proctitle) + * + * @example cat /etc/hostname + * @example xfce4-session + * @example bash + * + * @note In many Unix-like systems, process title (proctitle), is the string that represents the name or command line of a running process, displayed by system monitoring tools like ps, top, and htop. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_TITLE = 'process.title'; +/** + * The effective user ID (EUID) of the process. + * + * @example 1001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_USER_ID = 'process.user.id'; +/** + * The username of the effective user of the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_USER_NAME = 'process.user.name'; +/** + * Virtual process identifier. + * + * @example 12 + * + * @note The process ID within a PID namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_VPID = 'process.vpid'; +/** + * The working directory of the process. + * + * @example /root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROCESS_WORKING_DIRECTORY = 'process.working_directory'; +/** + * Describes the interpreter or compiler of a single frame. + * + * @example cpython + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_PROFILE_FRAME_TYPE = 'profile.frame.type'; +/** + * Enum value "beam" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Erlang](https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_BEAM = "beam"; +/** + * Enum value "cpython" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Python](https://wikipedia.org/wiki/Python_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_CPYTHON = "cpython"; +/** + * Enum value "dotnet" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [.NET](https://wikipedia.org/wiki/.NET) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_DOTNET = "dotnet"; +/** + * Enum value "go" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Go](https://wikipedia.org/wiki/Go_(programming_language)), + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_GO = "go"; +/** + * Enum value "jvm" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [JVM](https://wikipedia.org/wiki/Java_virtual_machine) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_JVM = "jvm"; +/** + * Enum value "kernel" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Kernel](https://wikipedia.org/wiki/Kernel_(operating_system)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_KERNEL = "kernel"; +/** + * Enum value "native" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * Can be one of but not limited to [C](https://wikipedia.org/wiki/C_(programming_language)), [C++](https://wikipedia.org/wiki/C%2B%2B), [Go](https://wikipedia.org/wiki/Go_(programming_language)) or [Rust](https://wikipedia.org/wiki/Rust_(programming_language)). If possible, a more precise value **MUST** be used. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_NATIVE = "native"; +/** + * Enum value "perl" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Perl](https://wikipedia.org/wiki/Perl) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_PERL = "perl"; +/** + * Enum value "php" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [PHP](https://wikipedia.org/wiki/PHP) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_PHP = "php"; +/** + * Enum value "ruby" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Ruby](https://wikipedia.org/wiki/Ruby_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_RUBY = "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Rust](https://wikipedia.org/wiki/Rust_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_RUST = "rust"; +/** + * Enum value "v8js" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [V8JS](https://wikipedia.org/wiki/V8_(JavaScript_engine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const PROFILE_FRAME_TYPE_VALUE_V8JS = "v8js"; +/** + * Deprecated, use `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.status_code`. + */ +export const ATTR_RPC_CONNECT_RPC_ERROR_CODE = 'rpc.connect_rpc.error_code'; +/** + * Enum value "aborted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED = "aborted"; +/** + * Enum value "already_exists" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS = "already_exists"; +/** + * Enum value "cancelled" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED = "cancelled"; +/** + * Enum value "data_loss" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS = "data_loss"; +/** + * Enum value "deadline_exceeded" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED = "deadline_exceeded"; +/** + * Enum value "failed_precondition" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION = "failed_precondition"; +/** + * Enum value "internal" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL = "internal"; +/** + * Enum value "invalid_argument" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT = "invalid_argument"; +/** + * Enum value "not_found" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND = "not_found"; +/** + * Enum value "out_of_range" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE = "out_of_range"; +/** + * Enum value "permission_denied" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED = "permission_denied"; +/** + * Enum value "resource_exhausted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED = "resource_exhausted"; +/** + * Enum value "unauthenticated" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED = "unauthenticated"; +/** + * Enum value "unavailable" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE = "unavailable"; +/** + * Enum value "unimplemented" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED = "unimplemented"; +/** + * Enum value "unknown" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN = "unknown"; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +export const ATTR_RPC_CONNECT_RPC_REQUEST_METADATA = (key) => `rpc.connect_rpc.request.metadata.${key}`; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +export const ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA = (key) => `rpc.connect_rpc.response.metadata.${key}`; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +export const ATTR_RPC_GRPC_REQUEST_METADATA = (key) => `rpc.grpc.request.metadata.${key}`; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +export const ATTR_RPC_GRPC_RESPONSE_METADATA = (key) => `rpc.grpc.response.metadata.${key}`; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the gRPC status code on the `rpc.response.status_code` attribute. + */ +export const ATTR_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code'; +/** + * Enum value 0 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_OK = 0; +/** + * Enum value 1 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * CANCELLED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_CANCELLED = 1; +/** + * Enum value 2 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNKNOWN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN = 2; +/** + * Enum value 3 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INVALID_ARGUMENT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT = 3; +/** + * Enum value 4 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DEADLINE_EXCEEDED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED = 4; +/** + * Enum value 5 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * NOT_FOUND + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND = 5; +/** + * Enum value 6 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ALREADY_EXISTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS = 6; +/** + * Enum value 7 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * PERMISSION_DENIED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED = 7; +/** + * Enum value 8 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * RESOURCE_EXHAUSTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED = 8; +/** + * Enum value 9 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * FAILED_PRECONDITION + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION = 9; +/** + * Enum value 10 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ABORTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_ABORTED = 10; +/** + * Enum value 11 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OUT_OF_RANGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE = 11; +/** + * Enum value 12 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNIMPLEMENTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED = 12; +/** + * Enum value 13 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INTERNAL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_INTERNAL = 13; +/** + * Enum value 14 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAVAILABLE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE = 14; +/** + * Enum value 15 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DATA_LOSS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS = 15; +/** + * Enum value 16 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAUTHENTICATED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED = 16; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @example -32700 + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the error code on the `rpc.response.status_code` attribute. + */ +export const ATTR_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code'; +/** + * Deprecated, use span status description or `error.message` attribute on other signals. + * + * @example Parse error + * @example User already exists + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use the span status description or `error.message` attribute on other signals. + */ +export const ATTR_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message'; +/** + * Deprecated, use `jsonrpc.request.id` instead. + * + * @example 10 + * @example request-7 + * @example + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.request.id`. + */ +export const ATTR_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id'; +/** + * Deprecated, use `jsonrpc.protocol.version` instead. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.protocol.version`. + */ +export const ATTR_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version'; +/** + * Compressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_MESSAGE_COMPRESSED_SIZE = 'rpc.message.compressed_size'; +/** + * **MUST** be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * @note This way we guarantee that the values will be consistent between different implementations. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_MESSAGE_ID = 'rpc.message.id'; +/** + * Whether this is a received or sent message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_MESSAGE_TYPE = 'rpc.message.type'; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_MESSAGE_TYPE_VALUE_RECEIVED = "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_MESSAGE_TYPE_VALUE_SENT = "SENT"; +/** + * Uncompressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE = 'rpc.message.uncompressed_size'; +/** + * The fully-qualified logical name of the method from the RPC interface perspective. + * + * @example com.example.ExampleService/exampleMethod + * @example EchoService/Echo + * @example _OTHER + * + * @note The method name **MAY** have unbounded cardinality in edge or error cases. + * + * Some RPC frameworks or libraries provide a fixed set of recognized methods + * for client stubs and server implementations. Instrumentations for such + * frameworks **MUST** set this attribute to the original method name only + * when the method is recognized by the framework or library. + * + * When the method is not recognized, for example, when the server receives + * a request for a method that is not predefined on the server, or when + * instrumentation is not able to reliably detect if the method is predefined, + * the attribute **MUST** be set to `_OTHER`. In such cases, tracing + * instrumentations **MUST** also set `rpc.method_original` attribute to + * the original method value. + * + * If the RPC instrumentation could end up converting valid RPC methods to + * `_OTHER`, then it **SHOULD** provide a way to configure the list of recognized + * RPC methods. + * + * The `rpc.method` can be different from the name of any implementing + * method/function. + * The `code.function.name` attribute may be used to record the fully-qualified + * method actually executing the call on the server side, or the + * RPC client stub method on the client side. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_METHOD = 'rpc.method'; +/** + * The original name of the method used by the client. + * + * @example com.myservice.EchoService/catchAll + * @example com.myservice.EchoService/unknownMethod + * @example InvalidMethod + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_METHOD_ORIGINAL = 'rpc.method_original'; +/** + * RPC request metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["1.2.3.4", "1.2.3.5"]` **SHOULD** be recorded as + * `rpc.request.metadata.my-custom-key` attribute with value `["1.2.3.4", "1.2.3.5"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_REQUEST_METADATA = (key) => `rpc.request.metadata.${key}`; +/** + * RPC response metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["attribute_value"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["attribute_value"]` **SHOULD** be recorded as + * the `rpc.response.metadata.my-custom-key` attribute with value `["attribute_value"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_RESPONSE_METADATA = (key) => `rpc.response.metadata.${key}`; +/** + * Status code of the RPC returned by the RPC server or generated by the client + * + * @example OK + * @example DEADLINE_EXCEEDED + * @example -32602 + * + * @note Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes. + * Semantic conventions for individual RPC frameworks **SHOULD** document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_RESPONSE_STATUS_CODE = 'rpc.response.status_code'; +/** + * Deprecated, use fully-qualified `rpc.method` instead. + * + * @example "myservice.EchoService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `rpc.method` which is expected to be a fully-qualified name. + */ +export const ATTR_RPC_SERVICE = 'rpc.service'; +/** + * Deprecated, use `rpc.system.name` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.system.name`. + */ +export const ATTR_RPC_SYSTEM = 'rpc.system'; +/** + * Enum value "apache_dubbo" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Apache Dubbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_APACHE_DUBBO = "apache_dubbo"; +/** + * Enum value "connect_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Connect RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_CONNECT_RPC = "connect_rpc"; +/** + * Enum value "dotnet_wcf" for attribute {@link ATTR_RPC_SYSTEM}. + * + * .NET WCF + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_DOTNET_WCF = "dotnet_wcf"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * gRPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_GRPC = "grpc"; +/** + * Enum value "java_rmi" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Java RMI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_JAVA_RMI = "java_rmi"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * JSON-RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_JSONRPC = "jsonrpc"; +/** + * Enum value "onc_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * [ONC RPC (Sun RPC)](https://datatracker.ietf.org/doc/html/rfc5531) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_VALUE_ONC_RPC = "onc_rpc"; +/** + * The Remote Procedure Call (RPC) system. + * + * @note The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_RPC_SYSTEM_NAME = 'rpc.system.name'; +/** + * Enum value "connectrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Connect RPC](https://connectrpc.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_NAME_VALUE_CONNECTRPC = "connectrpc"; +/** + * Enum value "dubbo" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Apache Dubbo](https://dubbo.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_NAME_VALUE_DUBBO = "dubbo"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [gRPC](https://grpc.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_NAME_VALUE_GRPC = "grpc"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [JSON-RPC](https://www.jsonrpc.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const RPC_SYSTEM_NAME_VALUE_JSONRPC = "jsonrpc"; +/** + * A categorization value keyword used by the entity using the rule for detection of this event + * + * @example Attempted Information Leak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_CATEGORY = 'security_rule.category'; +/** + * The description of the rule generating the event. + * + * @example Block requests to public DNS over HTTPS / TLS protocols + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_DESCRIPTION = 'security_rule.description'; +/** + * Name of the license under which the rule used to generate this event is made available. + * + * @example Apache 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_LICENSE = 'security_rule.license'; +/** + * The name of the rule or signature generating the event. + * + * @example BLOCK_DNS_over_TLS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_NAME = 'security_rule.name'; +/** + * Reference URL to additional information about the rule used to generate this event. + * + * @example https://en.wikipedia.org/wiki/DNS_over_TLS + * + * @note The URL can point to the vendor’s documentation about the rule. If that’s not available, it can also be a link to a more general page describing this type of alert. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_REFERENCE = 'security_rule.reference'; +/** + * Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. + * + * @example Standard_Protocol_Filters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_RULESET_NAME = 'security_rule.ruleset.name'; +/** + * A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. + * + * @example 550e8400-e29b-41d4-a716-446655440000 + * @example 1100110011 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_UUID = 'security_rule.uuid'; +/** + * The version / revision of the rule being used for analysis. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SECURITY_RULE_VERSION = 'security_rule.version'; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id'; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_NAMESPACE = 'service.namespace'; +/** + * Logical name of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.name`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example shoppingcart + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_PEER_NAME = 'service.peer.name'; +/** + * Logical namespace of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.namespace`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example Shop + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SERVICE_PEER_NAMESPACE = 'service.peer.namespace'; +/** + * A unique id to identify a session. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SESSION_ID = 'session.id'; +/** + * The previous `session.id` for this user, when known. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SESSION_PREVIOUS_ID = 'session.previous_id'; +/** + * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example source.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the destination side, and when communicating through an intermediary, `source.address` **SHOULD** represent the source address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SOURCE_ADDRESS = 'source.address'; +/** + * Source port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SOURCE_PORT = 'source.port'; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +export const ATTR_STATE = 'state'; +/** + * Enum value "idle" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const STATE_VALUE_IDLE = "idle"; +/** + * Enum value "used" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const STATE_VALUE_USED = "used"; +/** + * Deprecated, use `cpu.logical_number` instead. + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.logical_number`. + */ +export const ATTR_SYSTEM_CPU_LOGICAL_NUMBER = 'system.cpu.logical_number'; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example idle + * @example interrupt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export const ATTR_SYSTEM_CPU_STATE = 'system.cpu.state'; +/** + * Enum value "idle" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_IDLE = "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_INTERRUPT = "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_IOWAIT = "iowait"; +/** + * Enum value "nice" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_NICE = "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_STEAL = "steal"; +/** + * Enum value "system" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_CPU_STATE_VALUE_USER = "user"; +/** + * The device identifier + * + * @example (identifier) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_DEVICE = 'system.device'; +/** + * The filesystem mode + * + * @example rw, ro + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_FILESYSTEM_MODE = 'system.filesystem.mode'; +/** + * The filesystem mount path + * + * @example /mnt/data + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT = 'system.filesystem.mountpoint'; +/** + * The filesystem state + * + * @example used + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_FILESYSTEM_STATE = 'system.filesystem.state'; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_STATE_VALUE_FREE = "free"; +/** + * Enum value "reserved" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED = "reserved"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_STATE_VALUE_USED = "used"; +/** + * The filesystem type + * + * @example ext4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_FILESYSTEM_TYPE = 'system.filesystem.type'; +/** + * Enum value "exfat" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT = "exfat"; +/** + * Enum value "ext4" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4 = "ext4"; +/** + * Enum value "fat32" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32 = "fat32"; +/** + * Enum value "hfsplus" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS = "hfsplus"; +/** + * Enum value "ntfs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS = "ntfs"; +/** + * Enum value "refs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_FILESYSTEM_TYPE_VALUE_REFS = "refs"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE = 'system.memory.linux.slab.state'; +/** + * Enum value "reclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE = "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE = "unreclaimable"; +/** + * The memory state + * + * @example free + * @example cached + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_MEMORY_STATE = 'system.memory.state'; +/** + * Enum value "buffers" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_STATE_VALUE_BUFFERS = "buffers"; +/** + * Enum value "cached" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_STATE_VALUE_CACHED = "cached"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_STATE_VALUE_FREE = "free"; +/** + * Enum value "shared" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, report shared memory usage with `metric.system.memory.shared` metric + */ +export const SYSTEM_MEMORY_STATE_VALUE_SHARED = "shared"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * Actual used virtual memory in bytes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_MEMORY_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `network.connection.state` instead. + * + * @example close_wait + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.connection.state`. + */ +export const ATTR_SYSTEM_NETWORK_STATE = 'system.network.state'; +/** + * Enum value "close" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_CLOSE = "close"; +/** + * Enum value "close_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT = "close_wait"; +/** + * Enum value "closing" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_CLOSING = "closing"; +/** + * Enum value "delete" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_DELETE = "delete"; +/** + * Enum value "established" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED = "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1 = "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2 = "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_LAST_ACK = "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_LISTEN = "listen"; +/** + * Enum value "syn_recv" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_SYN_RECV = "syn_recv"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_SYN_SENT = "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT = "time_wait"; +/** + * The paging access direction + * + * @example in + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_PAGING_DIRECTION = 'system.paging.direction'; +/** + * Enum value "in" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_DIRECTION_VALUE_IN = "in"; +/** + * Enum value "out" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_DIRECTION_VALUE_OUT = "out"; +/** + * The paging fault type + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_PAGING_FAULT_TYPE = 'system.paging.fault.type'; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_FAULT_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_FAULT_TYPE_VALUE_MINOR = "minor"; +/** + * The memory paging state + * + * @example free + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_SYSTEM_PAGING_STATE = 'system.paging.state'; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_STATE_VALUE_FREE = "free"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +export const ATTR_SYSTEM_PAGING_TYPE = 'system.paging.type'; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PAGING_TYPE_VALUE_MINOR = "minor"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +export const ATTR_SYSTEM_PROCESS_STATUS = 'system.process.status'; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT = "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESS_STATUS_VALUE_RUNNING = "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESS_STATUS_VALUE_SLEEPING = "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESS_STATUS_VALUE_STOPPED = "stopped"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +export const ATTR_SYSTEM_PROCESSES_STATUS = 'system.processes.status'; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT = "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESSES_STATUS_VALUE_RUNNING = "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING = "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const SYSTEM_PROCESSES_STATUS_VALUE_STOPPED = "stopped"; +/** + * The name of the auto instrumentation agent or distribution, if used. + * + * @example parts-unlimited-java + * + * @note Official auto instrumentation agents and distributions **SHOULD** set the `telemetry.distro.name` attribute to + * a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TELEMETRY_DISTRO_NAME = 'telemetry.distro.name'; +/** + * The version string of the auto instrumentation agent or distribution, if used. + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TELEMETRY_DISTRO_VERSION = 'telemetry.distro.version'; +/** + * The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case). + * + * @example org.example.TestCase1.test1 + * @example example/tests/TestCase1.test1 + * @example ExampleTestCase1_test1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TEST_CASE_NAME = 'test.case.name'; +/** + * The status of the actual test case result from test execution. + * + * @example pass + * @example fail + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TEST_CASE_RESULT_STATUS = 'test.case.result.status'; +/** + * Enum value "fail" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * fail + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_CASE_RESULT_STATUS_VALUE_FAIL = "fail"; +/** + * Enum value "pass" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * pass + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_CASE_RESULT_STATUS_VALUE_PASS = "pass"; +/** + * The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite). + * + * @example TestSuite1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TEST_SUITE_NAME = 'test.suite.name'; +/** + * The status of the test suite run. + * + * @example success + * @example failure + * @example skipped + * @example aborted + * @example timed_out + * @example in_progress + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TEST_SUITE_RUN_STATUS = 'test.suite.run.status'; +/** + * Enum value "aborted" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * aborted + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_ABORTED = "aborted"; +/** + * Enum value "failure" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_FAILURE = "failure"; +/** + * Enum value "in_progress" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * in_progress + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS = "in_progress"; +/** + * Enum value "skipped" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * skipped + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_SKIPPED = "skipped"; +/** + * Enum value "success" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * success + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_SUCCESS = "success"; +/** + * Enum value "timed_out" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * timed_out + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT = "timed_out"; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @example 42 + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().threadId()` | + * | .NET | `Thread.CurrentThread.ManagedThreadId` | + * | Python | `threading.current_thread().ident` | + * | Ruby | `Thread.current.object_id` | + * | C++ | `std::this_thread::get_id()` | + * | Erlang | `erlang:self()` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_THREAD_ID = 'thread.id'; +/** + * Current thread name. + * + * @example "main" + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().getName()` | + * | .NET | `Thread.CurrentThread.Name` | + * | Python | `threading.current_thread().name` | + * | Ruby | `Thread.current.name` | + * | Erlang | `erlang:process_info(self(), registered_name)` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_THREAD_NAME = 'thread.name'; +/** + * String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection. + * + * @example TLS_RSA_WITH_3DES_EDE_CBC_SHA + * @example TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + * + * @note The values allowed for `tls.cipher` **MUST** be one of the `Descriptions` of the [registered TLS Cipher Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CIPHER = 'tls.cipher'; +/** + * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_CERTIFICATE = 'tls.client.certificate'; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_CERTIFICATE_CHAIN = 'tls.client.certificate_chain'; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_HASH_MD5 = 'tls.client.hash.md5'; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_HASH_SHA1 = 'tls.client.hash.sha1'; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_HASH_SHA256 = 'tls.client.hash.sha256'; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_ISSUER = 'tls.client.issuer'; +/** + * A hash that identifies clients based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_JA3 = 'tls.client.ja3'; +/** + * Date/Time indicating when client certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_NOT_AFTER = 'tls.client.not_after'; +/** + * Date/Time indicating when client certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_NOT_BEFORE = 'tls.client.not_before'; +/** + * Deprecated, use `server.address` instead. + * + * @example opentelemetry.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export const ATTR_TLS_CLIENT_SERVER_NAME = 'tls.client.server_name'; +/** + * Distinguished name of subject of the x.509 certificate presented by the client. + * + * @example CN=myclient, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_SUBJECT = 'tls.client.subject'; +/** + * Array of ciphers offered by the client during the client hello. + * + * @example ["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CLIENT_SUPPORTED_CIPHERS = 'tls.client.supported_ciphers'; +/** + * String indicating the curve used for the given cipher, when applicable + * + * @example secp256r1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_CURVE = 'tls.curve'; +/** + * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_ESTABLISHED = 'tls.established'; +/** + * String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. + * + * @example http/1.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_NEXT_PROTOCOL = 'tls.next_protocol'; +/** + * Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_PROTOCOL_NAME = 'tls.protocol.name'; +/** + * Enum value "ssl" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TLS_PROTOCOL_NAME_VALUE_SSL = "ssl"; +/** + * Enum value "tls" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const TLS_PROTOCOL_NAME_VALUE_TLS = "tls"; +/** + * Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @example 1.2 + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_PROTOCOL_VERSION = 'tls.protocol.version'; +/** + * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_RESUMED = 'tls.resumed'; +/** + * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_CERTIFICATE = 'tls.server.certificate'; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_CERTIFICATE_CHAIN = 'tls.server.certificate_chain'; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_HASH_MD5 = 'tls.server.hash.md5'; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_HASH_SHA1 = 'tls.server.hash.sha1'; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_HASH_SHA256 = 'tls.server.hash.sha256'; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_ISSUER = 'tls.server.issuer'; +/** + * A hash that identifies servers based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_JA3S = 'tls.server.ja3s'; +/** + * Date/Time indicating when server certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_NOT_AFTER = 'tls.server.not_after'; +/** + * Date/Time indicating when server certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_NOT_BEFORE = 'tls.server.not_before'; +/** + * Distinguished name of subject of the x.509 certificate presented by the server. + * + * @example CN=myserver, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_TLS_SERVER_SUBJECT = 'tls.server.subject'; +/** + * Domain extracted from the `url.full`, such as "opentelemetry.io". + * + * @example www.foo.bar + * @example opentelemetry.io + * @example 3.12.167.2 + * @example [1080:0:0:0:8:800:200C:417A] + * + * @note In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the domain field. If the URL contains a [literal IPv6 address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by `[` and `]`, the `[` and `]` characters should also be captured in the domain field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_DOMAIN = 'url.domain'; +/** + * The file extension extracted from the `url.full`, excluding the leading dot. + * + * @example png + * @example gz + * + * @note The file extension is only set if it exists, as not every url has a file extension. When the file name has multiple extensions `example.tar.gz`, only the last one should be captured `gz`, not `tar.gz`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_EXTENSION = 'url.extension'; +/** + * Unmodified original URL as seen in the event source. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example search?q=OpenTelemetry + * + * @note In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not. + * `url.original` might contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case password and username **SHOULD NOT** be redacted and attribute's value **SHOULD** remain the same. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_ORIGINAL = 'url.original'; +/** + * Port extracted from the `url.full` + * + * @example 443 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_PORT = 'url.port'; +/** + * The highest registered url domain, stripped of the subdomain. + * + * @example example.com + * @example foo.co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). For example, the registered domain for `foo.example.com` is `example.com`. Trying to approximate this by simply taking the last two labels will not work well for TLDs such as `co.uk`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_REGISTERED_DOMAIN = 'url.registered_domain'; +/** + * The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + * + * @example east + * @example sub2.sub1 + * + * @note The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, with no trailing period. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_SUBDOMAIN = 'url.subdomain'; +/** + * The low-cardinality template of an [absolute path reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2). + * + * @example /users/{id} + * @example /users/:id + * @example /users?id={id} + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_TEMPLATE = 'url.template'; +/** + * The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is `com`. + * + * @example com + * @example co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_URL_TOP_LEVEL_DOMAIN = 'url.top_level_domain'; +/** + * User email address. + * + * @example a.einstein@example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_EMAIL = 'user.email'; +/** + * User's full name + * + * @example Albert Einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_FULL_NAME = 'user.full_name'; +/** + * Unique user hash to correlate information for a user in anonymized form. + * + * @example 364fc68eaf4c8acec74a4e52d7d1feaa + * + * @note Useful if `user.id` or `user.name` contain confidential information and cannot be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_HASH = 'user.hash'; +/** + * Unique identifier of the user. + * + * @example S-1-5-21-202424912787-2692429404-2351956786-1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_ID = 'user.id'; +/** + * Short name or login/username of the user. + * + * @example a.einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_NAME = 'user.name'; +/** + * Array of user roles at the time of the event. + * + * @example ["admin", "reporting_user"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_ROLES = 'user.roles'; +/** + * Name of the user-agent extracted from original. Usually refers to the browser's name. + * + * @example Safari + * @example YourApp + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name **SHOULD** be selected. In such a scenario it should align with `user_agent.version` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_AGENT_NAME = 'user_agent.name'; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @note For mapping user agent strings to OS names, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_AGENT_OS_NAME = 'user_agent.os.name'; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @note For mapping user agent strings to OS versions, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_AGENT_OS_VERSION = 'user_agent.os.version'; +/** + * Specifies the category of synthetic traffic, such as tests or bots. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type'; +/** + * Enum value "bot" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Bot source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = "bot"; +/** + * Enum value "test" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Synthetic test source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = "test"; +/** + * Version of the user-agent extracted from original. Usually refers to the browser's version + * + * @example 14.1.2 + * @example 1.0.0 + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version **SHOULD** be selected. In such a scenario it should align with `user_agent.name` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_USER_AGENT_VERSION = 'user_agent.version'; +/** + * The type of garbage collection. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_V8JS_GC_TYPE = 'v8js.gc.type'; +/** + * Enum value "incremental" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Incremental (Incremental Marking). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_GC_TYPE_VALUE_INCREMENTAL = "incremental"; +/** + * Enum value "major" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Major (Mark Sweep Compact). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_GC_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Minor (Scavenge). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_GC_TYPE_VALUE_MINOR = "minor"; +/** + * Enum value "weakcb" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Weak Callbacks (Process Weak Callbacks). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_GC_TYPE_VALUE_WEAKCB = "weakcb"; +/** + * The name of the space type of heap memory. + * + * @note Value can be retrieved from value `space_name` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_V8JS_HEAP_SPACE_NAME = 'v8js.heap.space.name'; +/** + * Enum value "code_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Code memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE = "code_space"; +/** + * Enum value "large_object_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Large object memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE = "large_object_space"; +/** + * Enum value "map_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Map memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE = "map_space"; +/** + * Enum value "new_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * New memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE = "new_space"; +/** + * Enum value "old_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Old memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE = "old_space"; +/** + * The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_CHANGE_ID = 'vcs.change.id'; +/** + * The state of the change (pull request/merge request/changelist). + * + * @example open + * @example closed + * @example merged + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_CHANGE_STATE = 'vcs.change.state'; +/** + * Enum value "closed" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Closed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_CHANGE_STATE_VALUE_CLOSED = "closed"; +/** + * Enum value "merged" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Merged indicates that the change has been successfully integrated into the target codebase. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_CHANGE_STATE_VALUE_MERGED = "merged"; +/** + * Enum value "open" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Open means the change is currently active and under review. It hasn't been merged into the target branch yet, and it's still possible to make changes or add comments. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_CHANGE_STATE_VALUE_OPEN = "open"; +/** + * Enum value "wip" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * WIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_CHANGE_STATE_VALUE_WIP = "wip"; +/** + * The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_CHANGE_TITLE = 'vcs.change.title'; +/** + * The type of line change being measured on a branch or change. + * + * @example added + * @example removed + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_LINE_CHANGE_TYPE = 'vcs.line_change.type'; +/** + * Enum value "added" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_LINE_CHANGE_TYPE_VALUE_ADDED = "added"; +/** + * Enum value "removed" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_LINE_CHANGE_TYPE_VALUE_REMOVED = "removed"; +/** + * The group owner within the version control system. + * + * @example my-org + * @example myteam + * @example business-unit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_OWNER_NAME = 'vcs.owner.name'; +/** + * The name of the version control system provider. + * + * @example github + * @example gitlab + * @example gitea + * @example bitbucket + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_PROVIDER_NAME = 'vcs.provider.name'; +/** + * Enum value "bitbucket" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Bitbucket](https://bitbucket.org) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_PROVIDER_NAME_VALUE_BITBUCKET = "bitbucket"; +/** + * Enum value "gitea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Gitea](https://gitea.io) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_PROVIDER_NAME_VALUE_GITEA = "gitea"; +/** + * Enum value "github" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitHub](https://github.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_PROVIDER_NAME_VALUE_GITHUB = "github"; +/** + * Enum value "gitlab" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitLab](https://gitlab.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_PROVIDER_NAME_VALUE_GITLAB = "gitlab"; +/** + * Enum value "gittea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * Deprecated, use `gitea` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gitea`. + */ +export const VCS_PROVIDER_NAME_VALUE_GITTEA = "gittea"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_BASE_NAME = 'vcs.ref.base.name'; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. The + * revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.base.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_BASE_REVISION = 'vcs.ref.base.revision'; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_BASE_TYPE = 'vcs.ref.base.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_BASE_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_BASE_TYPE_VALUE_TAG = "tag"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_HEAD_NAME = 'vcs.ref.head.name'; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `head` refers to where you are right now; the current reference at a + * given time.The revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.head.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_HEAD_REVISION = 'vcs.ref.head.revision'; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_HEAD_TYPE = 'vcs.ref.head.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_HEAD_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_HEAD_TYPE_VALUE_TAG = "tag"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REF_TYPE = 'vcs.ref.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REF_TYPE_VALUE_TAG = "tag"; +/** + * Deprecated, use `vcs.change.id` instead. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.id`. + */ +export const ATTR_VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id'; +/** + * Deprecated, use `vcs.change.title` instead. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.title`. + */ +export const ATTR_VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title'; +/** + * The human readable name of the repository. It **SHOULD NOT** include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. + * + * @example semantic-conventions + * @example my-cool-repo + * + * @note Due to it only being the name, it can clash with forks of the same + * repository if collecting telemetry across multiple orgs or groups in + * the same backends. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REPOSITORY_NAME = 'vcs.repository.name'; +/** + * Deprecated, use `vcs.ref.head.name` instead. + * + * @example my-feature-branch + * @example tag-1-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.name`. + */ +export const ATTR_VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name'; +/** + * Deprecated, use `vcs.ref.head.revision` instead. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.revision`. + */ +export const ATTR_VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision'; +/** + * Deprecated, use `vcs.ref.head.type` instead. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.type`. + */ +export const ATTR_VCS_REPOSITORY_REF_TYPE = 'vcs.repository.ref.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REPOSITORY_REF_TYPE_VALUE_TAG = "tag"; +/** + * The [canonical URL](https://support.google.com/webmasters/answer/10347851) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. + * + * @example https://github.com/opentelemetry/open-telemetry-collector-contrib + * @example https://gitlab.com/my-org/my-project/my-projects-project/repo + * + * @note In Git Version Control Systems, the canonical URL **SHOULD NOT** include + * the `.git` extension. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REPOSITORY_URL_FULL = 'vcs.repository.url.full'; +/** + * The type of revision comparison. + * + * @example ahead + * @example behind + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_VCS_REVISION_DELTA_DIRECTION = 'vcs.revision_delta.direction'; +/** + * Enum value "ahead" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is ahead of the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD = "ahead"; +/** + * Enum value "behind" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is behind the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND = "behind"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description'; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_NAME = 'webengine.name'; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_WEBENGINE_VERSION = 'webengine.version'; +/** + * The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis. + * + * @example SYS1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ZOS_SMF_ID = 'zos.smf.id'; +/** + * The name of the SYSPLEX to which the z/OS system belongs too. + * + * @example SYSPLEX1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_ZOS_SYSPLEX_NAME = 'zos.sysplex.name'; +//# sourceMappingURL=experimental_attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js.map new file mode 100644 index 0000000..bb4bbf2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"experimental_attributes.js","sourceRoot":"","sources":["../../src/experimental_attributes.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * This attribute represents the state of the application.\n *\n * @example created\n *\n * @note The Android lifecycle states are defined in [Activity lifecycle callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), and from which the `OS identifiers` are derived.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ANDROID_APP_STATE = 'android.app.state' as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_ANDROID_APP_STATE}.\n *\n * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_APP_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"created\" for attribute {@link ATTR_ANDROID_APP_STATE}.\n *\n * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_APP_STATE_VALUE_CREATED = \"created\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_ANDROID_APP_STATE}.\n *\n * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_APP_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found in the [Android API levels documentation](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels).\n *\n * @example 33\n * @example 32\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ANDROID_OS_API_LEVEL = 'android.os.api_level' as const;\n\n/**\n * Deprecated. Use `android.app.state` attribute 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 `android.app.state`.\n */\nexport const ATTR_ANDROID_STATE = 'android.state' as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_ANDROID_STATE}.\n *\n * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"created\" for attribute {@link ATTR_ANDROID_STATE}.\n *\n * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_STATE_VALUE_CREATED = \"created\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_ANDROID_STATE}.\n *\n * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Unique identifier for a particular build or compilation of the application.\n *\n * @example 6cff0a7e-cefc-4668-96f5-1273d8b334d0\n * @example 9f2b833506aa6973a92fde9733e6271f\n * @example my-app-1.0.0-code-123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_BUILD_ID = 'app.build_id' as const;\n\n/**\n * A unique identifier representing the installation of an application on a specific device\n *\n * @example 2ab2916d-a51f-4ac8-80ee-45ac31a28092\n *\n * @note Its value **SHOULD** persist across launches of the same application installation, including through application upgrades.\n * It **SHOULD** change if the application is uninstalled or if all applications of the vendor are uninstalled.\n * Additionally, users might be able to reset this value (e.g. by clearing application data).\n * If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` **SHOULD** have a different value.\n * If multiple OpenTelemetry SDKs are used within the same application, they **SHOULD** use the same value for `app.installation.id`.\n * Hardware IDs (e.g. serial number, IMEI, MAC address) **MUST NOT** be used as the `app.installation.id`.\n *\n * For iOS, this value **SHOULD** be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor).\n *\n * For Android, examples of `app.installation.id` implementations include:\n *\n * - [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations).\n * - A globally unique UUID which is persisted across sessions in your application.\n * - [App set ID](https://developer.android.com/identity/app-set-id).\n * - [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID).\n *\n * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_INSTALLATION_ID = 'app.installation.id' as const;\n\n/**\n * A number of frame renders that experienced jank.\n *\n * @example 9\n * @example 42\n *\n * @note Depending on platform limitations, the value provided **MAY** be approximation.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_JANK_FRAME_COUNT = 'app.jank.frame_count' as const;\n\n/**\n * The time period, in seconds, for which this jank is being reported.\n *\n * @example 1.0\n * @example 5.0\n * @example 10.24\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_JANK_PERIOD = 'app.jank.period' as const;\n\n/**\n * The minimum rendering threshold for this jank, in seconds.\n *\n * @example 0.016\n * @example 0.7\n * @example 1.024\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_JANK_THRESHOLD = 'app.jank.threshold' as const;\n\n/**\n * The x (horizontal) coordinate of a screen coordinate, in screen pixels.\n *\n * @example 0\n * @example 131\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_COORDINATE_X = 'app.screen.coordinate.x' as const;\n\n/**\n * The y (vertical) component of a screen coordinate, in screen pixels.\n *\n * @example 12\n * @example 99\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_COORDINATE_Y = 'app.screen.coordinate.y' as const;\n\n/**\n * An identifier that uniquely differentiates this screen from other screens in the same application.\n *\n * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3\n * @example com.example.app.MainActivity\n * @example com.example.shop.ProductDetailFragment\n * @example MyApp.ProfileView\n * @example MyApp.ProfileViewController\n *\n * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_ID = 'app.screen.id' as const;\n\n/**\n * The name of an application screen.\n *\n * @example MainActivity\n * @example ProductDetailFragment\n * @example ProfileView\n * @example ProfileViewController\n *\n * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_NAME = 'app.screen.name' as const;\n\n/**\n * An identifier that uniquely differentiates this widget from other widgets in the same application.\n *\n * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3\n * @example submit_order_1829\n *\n * @note A widget is an application component, typically an on-screen visual GUI element.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_WIDGET_ID = 'app.widget.id' as const;\n\n/**\n * The name of an application widget.\n *\n * @example submit\n * @example attack\n * @example Clear Cart\n *\n * @note A widget is an application component, typically an on-screen visual GUI element.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_WIDGET_NAME = 'app.widget.name' as const;\n\n/**\n * The provenance filename of the built attestation which directly relates to the build artifact filename. This filename **SHOULD** accompany the artifact at publish time. See the [SLSA Relationship](https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations) specification for more information.\n *\n * @example golang-binary-amd64-v0.1.0.attestation\n * @example docker-image-amd64-v0.1.0.intoto.json1\n * @example release-1.tar.gz.attestation\n * @example file-name-package.tar.gz.intoto.json1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_FILENAME = 'artifact.attestation.filename' as const;\n\n/**\n * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the [software attestation space](https://github.com/in-toto/attestation/tree/main/spec) also refer to this as the **digest**.\n *\n * @example 1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_HASH = 'artifact.attestation.hash' as const;\n\n/**\n * The id of the build [software attestation](https://slsa.dev/attestation-model).\n *\n * @example 123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_ID = 'artifact.attestation.id' as const;\n\n/**\n * The human readable file name of the artifact, typically generated during build and release processes. Often includes the package name and version in the file name.\n *\n * @example golang-binary-amd64-v0.1.0\n * @example docker-image-amd64-v0.1.0\n * @example release-1.tar.gz\n * @example file-name-package.tar.gz\n *\n * @note This file name can also act as the [Package Name](https://slsa.dev/spec/v1.0/terminology#package-model)\n * in cases where the package ecosystem maps accordingly.\n * Additionally, the artifact [can be published](https://slsa.dev/spec/v1.0/terminology#software-supply-chain)\n * for others, but that is not a guarantee.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_FILENAME = 'artifact.filename' as const;\n\n/**\n * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), often found in checksum.txt on a release of the artifact and used to verify package integrity.\n *\n * @example 9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9\n *\n * @note The specific algorithm used to create the cryptographic hash value is\n * not defined. In situations where an artifact has multiple\n * cryptographic hashes, it is up to the implementer to choose which\n * hash value to set here; this should be the most secure hash algorithm\n * that is suitable for the situation and consistent with the\n * corresponding attestation. The implementer can then provide the other\n * hash values through an additional set of attribute extensions as they\n * deem necessary.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_HASH = 'artifact.hash' as const;\n\n/**\n * The [Package URL](https://github.com/package-url/purl-spec) of the [package artifact](https://slsa.dev/spec/v1.0/terminology#package-model) provides a standard way to identify and locate the packaged artifact.\n *\n * @example pkg:github/package-url/purl-spec@1209109710924\n * @example pkg:npm/foo@12.12.3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_PURL = 'artifact.purl' as const;\n\n/**\n * The version of the artifact.\n *\n * @example v0.1.0\n * @example 1.2.1\n * @example 122691-build\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_VERSION = 'artifact.version' as const;\n\n/**\n * The result of the authentication operation.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHENTICATION_RESULT = 'aspnetcore.authentication.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}.\n *\n * Authentication failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"none\" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}.\n *\n * No authentication information returned.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_NONE = \"none\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}.\n *\n * Authentication was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The identifier that names a particular authentication handler.\n *\n * @example Cookies\n * @example Bearer\n * @example Identity.Application\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHENTICATION_SCHEME = 'aspnetcore.authentication.scheme' as const;\n\n/**\n * The name of the authorization policy.\n *\n * @example RequireAdminRole\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHORIZATION_POLICY = 'aspnetcore.authorization.policy' as const;\n\n/**\n * The result of calling the authorization service.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHORIZATION_RESULT = 'aspnetcore.authorization.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}.\n *\n * Authorization failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}.\n *\n * Authorization was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The error code for a failed identity operation.\n *\n * @example DefaultError\n * @example PasswordMismatch\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_ERROR_CODE = 'aspnetcore.identity.error_code' as const;\n\n/**\n * The result from checking the password.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT = 'aspnetcore.identity.password_check_result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"password_missing\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check couldn't proceed because the password was missing from the user.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_PASSWORD_MISSING = \"password_missing\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"success_rehash_needed\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check was successful however the password was encoded using a deprecated algorithm and should be rehashed and updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS_REHASH_NEEDED = \"success_rehash_needed\" as const;\n\n/**\n * Enum value \"user_missing\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check couldn't proceed because the user was missing.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_USER_MISSING = \"user_missing\" as const;\n\n/**\n * The result of the identity operation.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_RESULT = 'aspnetcore.identity.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}.\n *\n * Identity operation failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}.\n *\n * Identity operation was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Whether the sign in result was success or failure.\n *\n * @example password\n * @example two_factor\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT = 'aspnetcore.identity.sign_in.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * Sign in failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"locked_out\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * User is locked out.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_LOCKED_OUT = \"locked_out\" as const;\n\n/**\n * Enum value \"not_allowed\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * User is not allowed to sign in.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_NOT_ALLOWED = \"not_allowed\" as const;\n\n/**\n * Enum value \"requires_two_factor\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * User requires two factory authentication to sign in.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_REQUIRES_TWO_FACTOR = \"requires_two_factor\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * Sign in was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The authentication type.\n *\n * @example password\n * @example two_factor\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE = 'aspnetcore.identity.sign_in.type' as const;\n\n/**\n * Enum value \"external\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with a previously registered third-party login.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_EXTERNAL = \"external\" as const;\n\n/**\n * Enum value \"passkey\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with passkey.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSKEY = \"passkey\" as const;\n\n/**\n * Enum value \"password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with password.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSWORD = \"password\" as const;\n\n/**\n * Enum value \"two_factor\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with a two factor provider.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR = \"two_factor\" as const;\n\n/**\n * Enum value \"two_factor_authenticator\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with two factor authenticator app.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_AUTHENTICATOR = \"two_factor_authenticator\" as const;\n\n/**\n * Enum value \"two_factor_recovery_code\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with two factory recovery code.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_RECOVERY_CODE = \"two_factor_recovery_code\" as const;\n\n/**\n * What the token will be used for.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE = 'aspnetcore.identity.token_purpose' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * Any token purpose that the instrumentation has no prior knowledge of.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"change_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for changing the user email address.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_EMAIL = \"change_email\" as const;\n\n/**\n * Enum value \"change_phone_number\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for changing a user phone number.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_PHONE_NUMBER = \"change_phone_number\" as const;\n\n/**\n * Enum value \"email_confirmation\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for confirming user email address.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_EMAIL_CONFIRMATION = \"email_confirmation\" as const;\n\n/**\n * Enum value \"reset_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for resetting a user password.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_RESET_PASSWORD = \"reset_password\" as const;\n\n/**\n * Enum value \"two_factor\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for changing user two factor settings.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_TWO_FACTOR = \"two_factor\" as const;\n\n/**\n * The result of token verification.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED = 'aspnetcore.identity.token_verified' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}.\n *\n * Token verification failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}.\n *\n * Token verification was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The user update type.\n *\n * @example update\n * @example user_name\n * @example reset_password\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE = 'aspnetcore.identity.user.update_type' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Any update type that the instrumentation has no prior knowledge of.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"access_failed\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user access failure recorded.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ACCESS_FAILED = \"access_failed\" as const;\n\n/**\n * Enum value \"add_claims\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user claims added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_CLAIMS = \"add_claims\" as const;\n\n/**\n * Enum value \"add_login\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user login added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_LOGIN = \"add_login\" as const;\n\n/**\n * Enum value \"add_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_PASSWORD = \"add_password\" as const;\n\n/**\n * Enum value \"add_to_roles\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user added to roles.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_TO_ROLES = \"add_to_roles\" as const;\n\n/**\n * Enum value \"change_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user email changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_EMAIL = \"change_email\" as const;\n\n/**\n * Enum value \"change_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PASSWORD = \"change_password\" as const;\n\n/**\n * Enum value \"change_phone_number\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user phone number changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PHONE_NUMBER = \"change_phone_number\" as const;\n\n/**\n * Enum value \"confirm_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user email confirmed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CONFIRM_EMAIL = \"confirm_email\" as const;\n\n/**\n * Enum value \"generate_new_two_factor_recovery_codes\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user new two-factor recovery codes generated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_GENERATE_NEW_TWO_FACTOR_RECOVERY_CODES = \"generate_new_two_factor_recovery_codes\" as const;\n\n/**\n * Enum value \"password_rehash\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password rehashed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_PASSWORD_REHASH = \"password_rehash\" as const;\n\n/**\n * Enum value \"redeem_two_factor_recovery_code\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user two-factor recovery code redeemed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REDEEM_TWO_FACTOR_RECOVERY_CODE = \"redeem_two_factor_recovery_code\" as const;\n\n/**\n * Enum value \"remove_authentication_token\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user authentication token removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_AUTHENTICATION_TOKEN = \"remove_authentication_token\" as const;\n\n/**\n * Enum value \"remove_claims\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user claims removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_CLAIMS = \"remove_claims\" as const;\n\n/**\n * Enum value \"remove_from_roles\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user removed from roles.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_FROM_ROLES = \"remove_from_roles\" as const;\n\n/**\n * Enum value \"remove_login\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user login removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_LOGIN = \"remove_login\" as const;\n\n/**\n * Enum value \"remove_passkey\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user passkey removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSKEY = \"remove_passkey\" as const;\n\n/**\n * Enum value \"remove_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSWORD = \"remove_password\" as const;\n\n/**\n * Enum value \"replace_claim\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user claim replaced.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REPLACE_CLAIM = \"replace_claim\" as const;\n\n/**\n * Enum value \"reset_access_failed_count\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user access failure count reset.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_ACCESS_FAILED_COUNT = \"reset_access_failed_count\" as const;\n\n/**\n * Enum value \"reset_authenticator_key\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user authenticator key reset.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_AUTHENTICATOR_KEY = \"reset_authenticator_key\" as const;\n\n/**\n * Enum value \"reset_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password reset.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_PASSWORD = \"reset_password\" as const;\n\n/**\n * Enum value \"security_stamp\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user security stamp updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SECURITY_STAMP = \"security_stamp\" as const;\n\n/**\n * Enum value \"set_authentication_token\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user authentication token set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_AUTHENTICATION_TOKEN = \"set_authentication_token\" as const;\n\n/**\n * Enum value \"set_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user email set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_EMAIL = \"set_email\" as const;\n\n/**\n * Enum value \"set_lockout_enabled\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user lockout enabled or disabled.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_ENABLED = \"set_lockout_enabled\" as const;\n\n/**\n * Enum value \"set_lockout_end_date\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user lockout end date set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_END_DATE = \"set_lockout_end_date\" as const;\n\n/**\n * Enum value \"set_passkey\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user passkey set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PASSKEY = \"set_passkey\" as const;\n\n/**\n * Enum value \"set_phone_number\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user phone number set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PHONE_NUMBER = \"set_phone_number\" as const;\n\n/**\n * Enum value \"set_two_factor_enabled\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user two-factor authentication enabled or disabled.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_TWO_FACTOR_ENABLED = \"set_two_factor_enabled\" as const;\n\n/**\n * Enum value \"update\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_UPDATE = \"update\" as const;\n\n/**\n * Enum value \"user_name\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user name updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_USER_NAME = \"user_name\" as const;\n\n/**\n * The full name of the identity user type.\n *\n * @example Contoso.ContosoUser\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_USER_TYPE = 'aspnetcore.identity.user_type' as const;\n\n/**\n * The name of the library or subsystem using the memory pool instance.\n *\n * @example kestrel\n * @example iis\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_MEMORY_POOL_OWNER = 'aspnetcore.memory_pool.owner' as const;\n\n/**\n * A flag indicating whether the sign in is persistent.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_SIGN_IN_IS_PERSISTENT = 'aspnetcore.sign_in.is_persistent' as const;\n\n/**\n * The unique identifier of the AWS Bedrock Guardrail. A [guardrail](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) helps safeguard and prevent unwanted behavior from model responses or user messages.\n *\n * @example sgi5gkybzqak\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_BEDROCK_GUARDRAIL_ID = 'aws.bedrock.guardrail.id' as const;\n\n/**\n * The unique identifier of the AWS Bedrock Knowledge base. A [knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) is a bank of information that can be queried by models to generate more relevant responses and augment prompts.\n *\n * @example XFWUPB9PAW\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_BEDROCK_KNOWLEDGE_BASE_ID = 'aws.bedrock.knowledge_base.id' as const;\n\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @example [\"{ \"AttributeName\": \"string\", \"AttributeType\": \"string\" }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions' as const;\n\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @example [\"lives\", \"id\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get' as const;\n\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read' as const;\n\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @example [\"{ \"CapacityUnits\": number, \"GlobalSecondaryIndexes\": { \"string\" : { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }, \"LocalSecondaryIndexes\": { \"string\" : { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }, \"ReadCapacityUnits\": number, \"Table\": { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number }, \"TableName\": \"string\", \"WriteCapacityUnits\": number }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity' as const;\n\n/**\n * The value of the `Count` response parameter.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count' as const;\n\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @example Users\n * @example CatsTable\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table' as const;\n\n/**\n * The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field.\n *\n * @example [\"{ \"Create\": { \"IndexName\": \"string\", \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates' as const;\n\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field\n *\n * @example [\"{ \"IndexName\": \"string\", \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes' as const;\n\n/**\n * The value of the `IndexName` request parameter.\n *\n * @example name_to_group\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name' as const;\n\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @example { \"string\" : [ { \"ItemCollectionKey\": { \"string\" : { \"B\": blob, \"BOOL\": boolean, \"BS\": [ blob ], \"L\": [ \"AttributeValue\" ], \"M\": { \"string\" : \"AttributeValue\" }, \"N\": \"string\", \"NS\": [ \"string\" ], \"NULL\": boolean, \"S\": \"string\", \"SS\": [ \"string\" ] } }, \"SizeEstimateRangeGB\": [ number ] } ] }\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics' as const;\n\n/**\n * The value of the `Limit` request parameter.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit' as const;\n\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @example [\"{ \"IndexArn\": \"string\", \"IndexName\": \"string\", \"IndexSizeBytes\": number, \"ItemCount\": number, \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" } }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes' as const;\n\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @example Title\n * @example Title, Price, Color\n * @example Title, Description, RelatedItems, ProductReviews\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection' as const;\n\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @example 1.0\n * @example 2.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity' as const;\n\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @example 1.0\n * @example 2.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity' as const;\n\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward' as const;\n\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @example 50\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count' as const;\n\n/**\n * The value of the `Segment` request parameter.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment' as const;\n\n/**\n * The value of the `Select` request parameter.\n *\n * @example ALL_ATTRIBUTES\n * @example COUNT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select' as const;\n\n/**\n * The number of items in the `TableNames` response parameter.\n *\n * @example 20\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count' as const;\n\n/**\n * The keys in the `RequestItems` object field.\n *\n * @example [\"Users\", \"Cats\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names' as const;\n\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments' as const;\n\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn' as const;\n\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 * @example arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn' as const;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype' as const;\n\n/**\n * Enum value \"ec2\" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}.\n *\n * Amazon EC2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AWS_ECS_LAUNCHTYPE_VALUE_EC2 = \"ec2\" as const;\n\n/**\n * Enum value \"fargate\" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}.\n *\n * Amazon Fargate\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AWS_ECS_LAUNCHTYPE_VALUE_FARGATE = \"fargate\" as const;\n\n/**\n * The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids).\n *\n * @example arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b\n * @example arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn' as const;\n\n/**\n * The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task.\n *\n * @example opentelemetry-family\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family' as const;\n\n/**\n * The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`.\n *\n * @example 10838bed-421f-43ef-870a-f43feacbbb5b\n * @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_ID = 'aws.ecs.task.id' as const;\n\n/**\n * The revision for the task definition used to create the ECS task.\n *\n * @example 8\n * @example 26\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision' as const;\n\n/**\n * The ARN of an EKS cluster.\n *\n * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn' as const;\n\n/**\n * The AWS extended request ID as returned in the response header `x-amz-id-2`.\n *\n * @example wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ=\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_EXTENDED_REQUEST_ID = 'aws.extended_request_id' as const;\n\n/**\n * The name of the AWS Kinesis [stream](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) the request refers to. Corresponds to the `--stream-name` parameter of the Kinesis [describe-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html) operation.\n *\n * @example some-stream-name\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_KINESIS_STREAM_NAME = 'aws.kinesis.stream_name' as const;\n\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 * @example arn:aws:lambda:us-east-1:123456:function:myfunction:myalias\n *\n * @note This may be different from `cloud.resource_id` if an alias is involved.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn' as const;\n\n/**\n * The UUID of the [AWS Lambda EvenSource Mapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html). An event source is mapped to a lambda function. It's contents are read by Lambda and used to trigger a function. This isn't available in the lambda execution context or the lambda runtime environtment. This is going to be populated by the AWS SDK for each language when that UUID is present. Some of these operations are Create/Delete/Get/List/Update EventSourceMapping.\n *\n * @example 587ad24b-03b9-4413-8202-bbd56b36e5b7\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LAMBDA_RESOURCE_MAPPING_ID = 'aws.lambda.resource_mapping.id' as const;\n\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * @example [\"arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns' as const;\n\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * @example [\"/aws/lambda/my-function\", \"opentelemetry-service\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_GROUP_NAMES = 'aws.log.group.names' as const;\n\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * @example [\"arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns' as const;\n\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @example [\"logs/main/10838bed-421f-43ef-870a-f43feacbbb5b\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names' as const;\n\n/**\n * The AWS request ID as returned in the response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`.\n *\n * @example 79b9da39-b7ae-508a-a6bc-864b2829c622\n * @example C9ER4AJX75574TDJ\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_REQUEST_ID = 'aws.request_id' as const;\n\n/**\n * The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations.\n *\n * @example some-bucket-name\n *\n * @note The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter.\n * This applies to almost all S3 operations except `list-buckets`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_BUCKET = 'aws.s3.bucket' as const;\n\n/**\n * The source object (in the form `bucket`/`key`) for the copy operation.\n *\n * @example someFile.yml\n *\n * @note The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter\n * of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html).\n * This applies in particular to the following operations:\n *\n * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_COPY_SOURCE = 'aws.s3.copy_source' as const;\n\n/**\n * The delete request container that specifies the objects to be deleted.\n *\n * @example Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean\n *\n * @note The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation.\n * The `delete` attribute corresponds to the `--delete` parameter of the\n * [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_DELETE = 'aws.s3.delete' as const;\n\n/**\n * The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations.\n *\n * @example someFile.yml\n *\n * @note The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter.\n * This applies in particular to the following operations:\n *\n * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)\n * - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html)\n * - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html)\n * - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html)\n * - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html)\n * - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html)\n * - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html)\n * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)\n * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)\n * - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html)\n * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)\n * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_KEY = 'aws.s3.key' as const;\n\n/**\n * The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000.\n *\n * @example 3456\n *\n * @note The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations.\n * The `part_number` attribute corresponds to the `--part-number` parameter of the\n * [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_PART_NUMBER = 'aws.s3.part_number' as const;\n\n/**\n * Upload ID that identifies the multipart upload.\n *\n * @example dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ\n *\n * @note The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter\n * of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations.\n * This applies in particular to the following operations:\n *\n * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)\n * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)\n * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)\n * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_UPLOAD_ID = 'aws.s3.upload_id' as const;\n\n/**\n * The ARN of the Secret stored in the Secrets Mangger\n *\n * @example arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_SECRETSMANAGER_SECRET_ARN = 'aws.secretsmanager.secret.arn' as const;\n\n/**\n * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) is a logical access point that acts as a communication channel.\n *\n * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_SNS_TOPIC_ARN = 'aws.sns.topic.arn' as const;\n\n/**\n * The URL of the AWS SQS Queue. It's a unique identifier for a queue in Amazon Simple Queue Service (SQS) and is used to access the queue and perform actions on it.\n *\n * @example https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_SQS_QUEUE_URL = 'aws.sqs.queue.url' as const;\n\n/**\n * The ARN of the AWS Step Functions Activity.\n *\n * @example arn:aws:states:us-east-1:123456789012:activity:get-greeting\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN = 'aws.step_functions.activity.arn' as const;\n\n/**\n * The ARN of the AWS Step Functions State Machine.\n *\n * @example arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN = 'aws.step_functions.state_machine.arn' as const;\n\n/**\n * Deprecated, use `azure.resource_provider.namespace` instead.\n *\n * @example Microsoft.Storage\n * @example Microsoft.KeyVault\n * @example Microsoft.ServiceBus\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 `azure.resource_provider.namespace`.\n */\nexport const ATTR_AZ_NAMESPACE = 'az.namespace' as const;\n\n/**\n * Deprecated, use `azure.service.request.id` instead.\n *\n * @example 00000000-0000-0000-0000-000000000000\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 `azure.service.request.id`.\n */\nexport const ATTR_AZ_SERVICE_REQUEST_ID = 'az.service_request_id' as const;\n\n/**\n * The unique identifier of the client instance.\n *\n * @example 3ba4827d-4422-483f-b59f-85b74211c11d\n * @example storage-client-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_CLIENT_ID = 'azure.client.id' as const;\n\n/**\n * Cosmos client connection mode.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_CONNECTION_MODE = 'azure.cosmosdb.connection.mode' as const;\n\n/**\n * Enum value \"direct\" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}.\n *\n * Direct connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = \"direct\" as const;\n\n/**\n * Enum value \"gateway\" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}.\n *\n * Gateway (HTTP) connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = \"gateway\" as const;\n\n/**\n * Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels).\n *\n * @example Eventual\n * @example ConsistentPrefix\n * @example BoundedStaleness\n * @example Strong\n * @example Session\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL = 'azure.cosmosdb.consistency.level' as const;\n\n/**\n * Enum value \"BoundedStaleness\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Bounded Staleness\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = \"BoundedStaleness\" as const;\n\n/**\n * Enum value \"ConsistentPrefix\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Consistent Prefix\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = \"ConsistentPrefix\" as const;\n\n/**\n * Enum value \"Eventual\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Eventual\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = \"Eventual\" as const;\n\n/**\n * Enum value \"Session\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Session\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = \"Session\" as const;\n\n/**\n * Enum value \"Strong\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Strong\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = \"Strong\" as const;\n\n/**\n * List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call.\n *\n * @example [\"North Central US\", \"Australia East\", \"Australia Southeast\"]\n *\n * @note Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS = 'azure.cosmosdb.operation.contacted_regions' as const;\n\n/**\n * The number of request units consumed by the operation.\n *\n * @example 46.18\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.operation.request_charge' as const;\n\n/**\n * Request payload size in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_REQUEST_BODY_SIZE = 'azure.cosmosdb.request.body.size' as const;\n\n/**\n * Cosmos DB sub status code.\n *\n * @example 1000\n * @example 1002\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE = 'azure.cosmosdb.response.sub_status_code' as const;\n\n/**\n * [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client.\n *\n * @example Microsoft.Storage\n * @example Microsoft.KeyVault\n * @example Microsoft.ServiceBus\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_RESOURCE_PROVIDER_NAMESPACE = 'azure.resource_provider.namespace' as const;\n\n/**\n * The unique identifier of the service request. It's generated by the Azure service and returned with the response.\n *\n * @example 00000000-0000-0000-0000-000000000000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_SERVICE_REQUEST_ID = 'azure.service.request.id' as const;\n\n/**\n * Array of brand name and version separated by a space\n *\n * @example [\" Not A;Brand 99\", \"Chromium 99\", \"Chrome 99\"]\n *\n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_BRANDS = 'browser.brands' as const;\n\n/**\n * Preferred language of the user using the browser\n *\n * @example en\n * @example en-US\n * @example fr\n * @example fr-FR\n *\n * @note This value is intended to be taken from the Navigator API `navigator.language`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_LANGUAGE = 'browser.language' as const;\n\n/**\n * A boolean that is true if the browser is running on a mobile device\n *\n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute **SHOULD** be left unset.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_MOBILE = 'browser.mobile' as const;\n\n/**\n * The platform on which the browser is running\n *\n * @example Windows\n * @example macOS\n * @example Android\n *\n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API **SHOULD NOT** be used instead and this attribute **SHOULD** be left unset in order for the values to be consistent.\n * The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_PLATFORM = 'browser.platform' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_CONSISTENCY_LEVEL = 'cassandra.consistency.level' as const;\n\n/**\n * Enum value \"all\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * All\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = \"all\" as const;\n\n/**\n * Enum value \"any\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Any\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = \"any\" as const;\n\n/**\n * Enum value \"each_quorum\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Each Quorum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = \"each_quorum\" as const;\n\n/**\n * Enum value \"local_one\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Local One\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = \"local_one\" as const;\n\n/**\n * Enum value \"local_quorum\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Local Quorum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = \"local_quorum\" as const;\n\n/**\n * Enum value \"local_serial\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Local Serial\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = \"local_serial\" as const;\n\n/**\n * Enum value \"one\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * One\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = \"one\" as const;\n\n/**\n * Enum value \"quorum\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Quorum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = \"quorum\" as const;\n\n/**\n * Enum value \"serial\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Serial\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = \"serial\" as const;\n\n/**\n * Enum value \"three\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Three\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = \"three\" as const;\n\n/**\n * Enum value \"two\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Two\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = \"two\" as const;\n\n/**\n * The data center of the coordinating node for a query.\n *\n * @example \"us-west-2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_COORDINATOR_DC = 'cassandra.coordinator.dc' as const;\n\n/**\n * The ID of the coordinating node for a query.\n *\n * @example \"be13faa2-8574-4d71-926d-27f16cf8a7af\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_COORDINATOR_ID = 'cassandra.coordinator.id' as const;\n\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @example 5000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_PAGE_SIZE = 'cassandra.page.size' as const;\n\n/**\n * Whether or not the query is idempotent.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_QUERY_IDEMPOTENT = 'cassandra.query.idempotent' as const;\n\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @example 0\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'cassandra.speculative_execution.count' as const;\n\n/**\n * The kind of action a pipeline run is performing.\n *\n * @example BUILD\n * @example RUN\n * @example SYNC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_ACTION_NAME = 'cicd.pipeline.action.name' as const;\n\n/**\n * Enum value \"BUILD\" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}.\n *\n * The pipeline run is executing a build.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_ACTION_NAME_VALUE_BUILD = \"BUILD\" as const;\n\n/**\n * Enum value \"RUN\" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}.\n *\n * The pipeline run is executing.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_ACTION_NAME_VALUE_RUN = \"RUN\" as const;\n\n/**\n * Enum value \"SYNC\" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}.\n *\n * The pipeline run is executing a sync.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_ACTION_NAME_VALUE_SYNC = \"SYNC\" as const;\n\n/**\n * The human readable name of the pipeline within a CI/CD system.\n *\n * @example Build and Test\n * @example Lint\n * @example Deploy Go Project\n * @example deploy_to_environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_NAME = 'cicd.pipeline.name' as const;\n\n/**\n * The result of a pipeline run.\n *\n * @example success\n * @example failure\n * @example timeout\n * @example skipped\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RESULT = 'cicd.pipeline.result' as const;\n\n/**\n * Enum value \"cancellation\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_CANCELLATION = \"cancellation\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"skip\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run was skipped, eg. due to a precondition not being met.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_SKIP = \"skip\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run finished successfully.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * A timeout caused the pipeline run to be interrupted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_TIMEOUT = \"timeout\" as const;\n\n/**\n * The unique identifier of a pipeline run within a CI/CD system.\n *\n * @example 120912\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RUN_ID = 'cicd.pipeline.run.id' as const;\n\n/**\n * The pipeline run goes through these states during its lifecycle.\n *\n * @example pending\n * @example executing\n * @example finalizing\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RUN_STATE = 'cicd.pipeline.run.state' as const;\n\n/**\n * Enum value \"executing\" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}.\n *\n * The executing state spans the execution of any run tasks (eg. build, test).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RUN_STATE_VALUE_EXECUTING = \"executing\" as const;\n\n/**\n * Enum value \"finalizing\" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}.\n *\n * The finalizing state spans from when the run has finished executing (eg. cleanup of run resources).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RUN_STATE_VALUE_FINALIZING = \"finalizing\" as const;\n\n/**\n * Enum value \"pending\" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}.\n *\n * The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RUN_STATE_VALUE_PENDING = \"pending\" as const;\n\n/**\n * The [URL](https://wikipedia.org/wiki/URL) of the pipeline run, providing the complete address in order to locate and identify the pipeline run.\n *\n * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RUN_URL_FULL = 'cicd.pipeline.run.url.full' as const;\n\n/**\n * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures.\n *\n * @example Run GoLang Linter\n * @example Go Build\n * @example go-test\n * @example deploy_binary\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_NAME = 'cicd.pipeline.task.name' as const;\n\n/**\n * The unique identifier of a task run within a pipeline.\n *\n * @example 12097\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_ID = 'cicd.pipeline.task.run.id' as const;\n\n/**\n * The result of a task run.\n *\n * @example success\n * @example failure\n * @example timeout\n * @example skipped\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_RESULT = 'cicd.pipeline.task.run.result' as const;\n\n/**\n * Enum value \"cancellation\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run was cancelled, eg. by a user manually cancelling the task run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_CANCELLATION = \"cancellation\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run failed due to an error in the CICD system, eg. due to the worker being killed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the task run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"skip\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run was skipped, eg. due to a precondition not being met.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SKIP = \"skip\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run finished successfully.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * A timeout caused the task run to be interrupted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_TIMEOUT = \"timeout\" as const;\n\n/**\n * The [URL](https://wikipedia.org/wiki/URL) of the pipeline task run, providing the complete address in order to locate and identify the pipeline task run.\n *\n * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL = 'cicd.pipeline.task.run.url.full' as const;\n\n/**\n * The type of the task within a pipeline.\n *\n * @example build\n * @example test\n * @example deploy\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_TYPE = 'cicd.pipeline.task.type' as const;\n\n/**\n * Enum value \"build\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n *\n * build\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_BUILD = \"build\" as const;\n\n/**\n * Enum value \"deploy\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n *\n * deploy\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY = \"deploy\" as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n *\n * test\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_TEST = \"test\" as const;\n\n/**\n * The name of a component of the CICD system.\n *\n * @example controller\n * @example scheduler\n * @example agent\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_SYSTEM_COMPONENT = 'cicd.system.component' as const;\n\n/**\n * The unique identifier of a worker within a CICD system.\n *\n * @example abc123\n * @example 10.0.1.2\n * @example controller\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_ID = 'cicd.worker.id' as const;\n\n/**\n * The name of a worker within a CICD system.\n *\n * @example agent-abc\n * @example controller\n * @example Ubuntu LTS\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_NAME = 'cicd.worker.name' as const;\n\n/**\n * The state of a CICD worker / agent.\n *\n * @example idle\n * @example busy\n * @example down\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_STATE = 'cicd.worker.state' as const;\n\n/**\n * Enum value \"available\" for attribute {@link ATTR_CICD_WORKER_STATE}.\n *\n * The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_WORKER_STATE_VALUE_AVAILABLE = \"available\" as const;\n\n/**\n * Enum value \"busy\" for attribute {@link ATTR_CICD_WORKER_STATE}.\n *\n * The worker is performing work for the CICD system.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_WORKER_STATE_VALUE_BUSY = \"busy\" as const;\n\n/**\n * Enum value \"offline\" for attribute {@link ATTR_CICD_WORKER_STATE}.\n *\n * The worker is not available to the CICD system (disconnected / down).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_WORKER_STATE_VALUE_OFFLINE = \"offline\" as const;\n\n/**\n * The [URL](https://wikipedia.org/wiki/URL) of the worker, providing the complete address in order to locate and identify the worker.\n *\n * @example https://cicd.example.org/worker/abc123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_URL_FULL = 'cicd.worker.url.full' as const;\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 */\nexport const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id' as const;\n\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 */\nexport const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_PLATFORM = 'cloud.platform' as const;\n\n/**\n * Enum value \"akamai_cloud.compute\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Akamai Cloud Compute\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE = \"akamai_cloud.compute\" as const;\n\n/**\n * Enum value \"alibaba_cloud_ecs\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Alibaba Cloud Elastic Compute Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS = \"alibaba_cloud_ecs\" as const;\n\n/**\n * Enum value \"alibaba_cloud_fc\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Alibaba Cloud Function Compute\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC = \"alibaba_cloud_fc\" as const;\n\n/**\n * Enum value \"alibaba_cloud_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on Alibaba Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT = \"alibaba_cloud_openshift\" as const;\n\n/**\n * Enum value \"aws_app_runner\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS App Runner\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER = \"aws_app_runner\" as const;\n\n/**\n * Enum value \"aws_ec2\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Compute Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_EC2 = \"aws_ec2\" as const;\n\n/**\n * Enum value \"aws_ecs\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Container Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_ECS = \"aws_ecs\" as const;\n\n/**\n * Enum value \"aws_eks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Kubernetes Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_EKS = \"aws_eks\" as const;\n\n/**\n * Enum value \"aws_elastic_beanstalk\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Beanstalk\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK = \"aws_elastic_beanstalk\" as const;\n\n/**\n * Enum value \"aws_lambda\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Lambda\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_LAMBDA = \"aws_lambda\" as const;\n\n/**\n * Enum value \"aws_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on AWS (ROSA)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT = \"aws_openshift\" as const;\n\n/**\n * Enum value \"azure.aks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Kubernetes Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_AKS = \"azure.aks\" as const;\n\n/**\n * Enum value \"azure.app_service\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure App Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE = \"azure.app_service\" as const;\n\n/**\n * Enum value \"azure.container_apps\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Container Apps\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS = \"azure.container_apps\" as const;\n\n/**\n * Enum value \"azure.container_instances\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Container Instances\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES = \"azure.container_instances\" as const;\n\n/**\n * Enum value \"azure.functions\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Functions\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS = \"azure.functions\" as const;\n\n/**\n * Enum value \"azure.openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Red Hat OpenShift\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT = \"azure.openshift\" as const;\n\n/**\n * Enum value \"azure.vm\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Virtual Machines\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_VM = \"azure.vm\" as const;\n\n/**\n * Enum value \"gcp.agent_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Vertex AI Agent Engine\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE = \"gcp.agent_engine\" as const;\n\n/**\n * Enum value \"gcp_app_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud App Engine (GAE)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE = \"gcp_app_engine\" as const;\n\n/**\n * Enum value \"gcp_bare_metal_solution\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Bare Metal Solution (BMS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION = \"gcp_bare_metal_solution\" as const;\n\n/**\n * Enum value \"gcp_cloud_functions\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Functions (GCF)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS = \"gcp_cloud_functions\" as const;\n\n/**\n * Enum value \"gcp_cloud_run\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Run\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN = \"gcp_cloud_run\" as const;\n\n/**\n * Enum value \"gcp_compute_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Compute Engine (GCE)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE = \"gcp_compute_engine\" as const;\n\n/**\n * Enum value \"gcp_kubernetes_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Kubernetes Engine (GKE)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE = \"gcp_kubernetes_engine\" as const;\n\n/**\n * Enum value \"gcp_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on Google Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT = \"gcp_openshift\" as const;\n\n/**\n * Enum value \"hetzner.cloud_server\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Server on Hetzner Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER = \"hetzner.cloud_server\" as const;\n\n/**\n * Enum value \"ibm_cloud_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on IBM Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT = \"ibm_cloud_openshift\" as const;\n\n/**\n * Enum value \"oracle_cloud_compute\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Compute on Oracle Cloud Infrastructure (OCI)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_COMPUTE = \"oracle_cloud_compute\" as const;\n\n/**\n * Enum value \"oracle_cloud_oke\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_OKE = \"oracle_cloud_oke\" as const;\n\n/**\n * Enum value \"tencent_cloud_cvm\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Tencent Cloud Cloud Virtual Machine (CVM)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM = \"tencent_cloud_cvm\" as const;\n\n/**\n * Enum value \"tencent_cloud_eks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Tencent Cloud Elastic Kubernetes Service (EKS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS = \"tencent_cloud_eks\" as const;\n\n/**\n * Enum value \"tencent_cloud_scf\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Tencent Cloud Serverless Cloud Function (SCF)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF = \"tencent_cloud_scf\" as const;\n\n/**\n * Enum value \"vultr.cloud_compute\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Vultr Cloud Compute\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE = \"vultr.cloud_compute\" as const;\n\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 */\nexport const ATTR_CLOUD_PROVIDER = 'cloud.provider' as const;\n\n/**\n * Enum value \"akamai_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Akamai Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD = \"akamai_cloud\" as const;\n\n/**\n * Enum value \"alibaba_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Alibaba Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD = \"alibaba_cloud\" as const;\n\n/**\n * Enum value \"aws\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Amazon Web Services\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_AWS = \"aws\" as const;\n\n/**\n * Enum value \"azure\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Microsoft Azure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_AZURE = \"azure\" as const;\n\n/**\n * Enum value \"gcp\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Google Cloud Platform\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_GCP = \"gcp\" as const;\n\n/**\n * Enum value \"heroku\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Heroku Platform as a Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_HEROKU = \"heroku\" as const;\n\n/**\n * Enum value \"hetzner\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Hetzner\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_HETZNER = \"hetzner\" as const;\n\n/**\n * Enum value \"ibm_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * IBM Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_IBM_CLOUD = \"ibm_cloud\" as const;\n\n/**\n * Enum value \"oracle_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Oracle Cloud Infrastructure (OCI)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_ORACLE_CLOUD = \"oracle_cloud\" as const;\n\n/**\n * Enum value \"tencent_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Tencent Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_TENCENT_CLOUD = \"tencent_cloud\" as const;\n\n/**\n * Enum value \"vultr\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Vultr\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_VULTR = \"vultr\" as const;\n\n/**\n * The geographical region within a cloud provider. When associated with a resource, this attribute specifies the region where the resource operates. When calling services or APIs deployed on a cloud, this attribute identifies the region where the called destination is deployed.\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 */\nexport const ATTR_CLOUD_REGION = 'cloud.region' as const;\n\n/**\n * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://google.aip.dev/122#full-resource-names) on GCP)\n *\n * @example arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function\n * @example //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID\n * @example /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/\n *\n * @note On some cloud providers, it may not be possible to determine the full ID at startup,\n * so it may be necessary to set `cloud.resource_id` as a span attribute instead.\n *\n * The exact value to use for `cloud.resource_id` depends on the cloud provider.\n * The following well-known definitions **MUST** be used if you set this attribute and they apply:\n *\n * - **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\n * Take 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)\n * with the resolved function version, as the same runtime instance may be invocable with\n * multiple different 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://learn.microsoft.com/rest/api/resources/resources/get-by-id) of the invoked function,\n * *not* the function app, having the form\n * `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`.\n * This means that a span attribute **MUST** be used, as an Azure function app can host multiple functions that would usually share\n * a TracerProvider.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_RESOURCE_ID = 'cloud.resource_id' as const;\n\n/**\n * The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event.\n *\n * @example 123e4567-e89b-12d3-a456-426614174000\n * @example 0001\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_ID = 'cloudevents.event_id' as const;\n\n/**\n * The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened.\n *\n * @example https://github.com/cloudevents\n * @example /cloudevents/spec/pull/123\n * @example my-service\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SOURCE = 'cloudevents.event_source' as const;\n\n/**\n * The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses.\n *\n * @example \"1.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION = 'cloudevents.event_spec_version' as const;\n\n/**\n * The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source).\n *\n * @example \"mynewfile.jpg\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SUBJECT = 'cloudevents.event_subject' as const;\n\n/**\n * The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence.\n *\n * @example com.github.pull_request.opened\n * @example com.example.object.deleted.v2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_TYPE = 'cloudevents.event_type' as const;\n\n/**\n * The guid of the application.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.application_id`. This is the same value as\n * reported by `cf app --guid`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_ID = 'cloudfoundry.app.id' as const;\n\n/**\n * The index of the application instance. 0 when just one instance is active.\n *\n * @example 0\n * @example 1\n *\n * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the application instance index for applications\n * deployed on the runtime.\n *\n * Application instrumentation should use the value from environment\n * variable `CF_INSTANCE_INDEX`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID = 'cloudfoundry.app.instance.id' as const;\n\n/**\n * The name of the application.\n *\n * @example my-app-name\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.application_name`. This is the same value\n * as reported by `cf apps`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_NAME = 'cloudfoundry.app.name' as const;\n\n/**\n * The guid of the CloudFoundry org the application is running in.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.org_id`. This is the same value as\n * reported by `cf org --guid`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_ORG_ID = 'cloudfoundry.org.id' as const;\n\n/**\n * The name of the CloudFoundry organization the app is running in.\n *\n * @example my-org-name\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.org_name`. This is the same value as\n * reported by `cf orgs`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_ORG_NAME = 'cloudfoundry.org.name' as const;\n\n/**\n * The UID identifying the process.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to\n * `VCAP_APPLICATION.app_id` for applications deployed to the runtime.\n * For system components, this could be the actual PID.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_PROCESS_ID = 'cloudfoundry.process.id' as const;\n\n/**\n * The type of process.\n *\n * @example web\n *\n * @note CloudFoundry applications can consist of multiple jobs. Usually the\n * main process will be of type `web`. There can be additional background\n * tasks or side-cars with different process types.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_PROCESS_TYPE = 'cloudfoundry.process.type' as const;\n\n/**\n * The guid of the CloudFoundry space the application is running in.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.space_id`. This is the same value as\n * reported by `cf space --guid`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SPACE_ID = 'cloudfoundry.space.id' as const;\n\n/**\n * The name of the CloudFoundry space the application is running in.\n *\n * @example my-space-name\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.space_name`. This is the same value as\n * reported by `cf spaces`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SPACE_NAME = 'cloudfoundry.space.name' as const;\n\n/**\n * A guid or another name describing the event source.\n *\n * @example cf/gorouter\n *\n * @note CloudFoundry defines the `source_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the component name, e.g. \"gorouter\", for\n * CloudFoundry components.\n *\n * When system components are instrumented, values from the\n * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec)\n * should be used. The `system.id` should be set to\n * `spec.deployment/spec.name`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SYSTEM_ID = 'cloudfoundry.system.id' as const;\n\n/**\n * A guid describing the concrete instance of the event source.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the vm id for CloudFoundry components.\n *\n * When system components are instrumented, values from the\n * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec)\n * should be used. The `system.instance.id` should be set to `spec.id`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID = 'cloudfoundry.system.instance.id' as const;\n\n/**\n * Deprecated, use `code.column.number`\n *\n * @example 16\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 `code.column.number`.\n */\nexport const ATTR_CODE_COLUMN = 'code.column' as const;\n\n/**\n * Deprecated, use `code.file.path` instead\n *\n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\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 `code.file.path`.\n */\nexport const ATTR_CODE_FILEPATH = 'code.filepath' as const;\n\n/**\n * Deprecated, use `code.function.name` instead\n *\n * @example \"serveRequest\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name.\n */\nexport const ATTR_CODE_FUNCTION = 'code.function' as const;\n\n/**\n * Deprecated, use `code.line.number` instead\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 *\n * @deprecated Replaced by `code.line.number`.\n */\nexport const ATTR_CODE_LINENO = 'code.lineno' as const;\n\n/**\n * Deprecated, namespace is now included into `code.function.name`\n *\n * @example \"com.example.MyHttpService\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name.\n */\nexport const ATTR_CODE_NAMESPACE = 'code.namespace' as const;\n\n/**\n * The command used to run the container (i.e. the command name).\n *\n * @example otelcontribcol\n *\n * @note If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND = 'container.command' as const;\n\n/**\n * All the command arguments (including the command/executable itself) run by the container.\n *\n * @example [\"otelcontribcol\", \"--config\", \"config.yaml\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND_ARGS = 'container.command_args' as const;\n\n/**\n * The full command run by the container as a single string representing the full command.\n *\n * @example otelcontribcol --config config.yaml\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND_LINE = 'container.command_line' as const;\n\n/**\n * Deprecated, use `cpu.mode` instead.\n *\n * @example user\n * @example kernel\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 `cpu.mode`.\n */\nexport const ATTR_CONTAINER_CPU_STATE = 'container.cpu.state' as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n *\n * When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CONTAINER_CPU_STATE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n *\n * When CPU is used by the system (host OS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CONTAINER_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n *\n * When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CONTAINER_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * The name of the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin used by the volume.\n *\n * @example pd.csi.storage.gke.io\n *\n * @note This can sometimes be referred to as a \"driver\" in CSI implementations. This should represent the `name` field of the GetPluginInfo RPC.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_CSI_PLUGIN_NAME = 'container.csi.plugin.name' as const;\n\n/**\n * The unique volume ID returned by the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin.\n *\n * @example projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk\n *\n * @note This can sometimes be referred to as a \"volume handle\" in CSI implementations. This should represent the `Volume.volume_id` field in CSI spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_CSI_VOLUME_ID = 'container.csi.volume.id' as const;\n\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 */\nexport const ATTR_CONTAINER_ID = 'container.id' as const;\n\n/**\n * Runtime specific image identifier. Usually a hash algorithm followed by a UUID.\n *\n * @example sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f\n *\n * @note Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect) endpoint.\n * K8s defines a link to the container registry repository with digest `\"imageID\": \"registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625\"`.\n * The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_ID = 'container.image.id' as const;\n\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 */\nexport const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name' as const;\n\n/**\n * Repo digests of the container image as provided by the container runtime.\n *\n * @example [\"example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb\", \"internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578\"]\n *\n * @note [Docker](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_REPO_DIGESTS = 'container.image.repo_digests' as const;\n\n/**\n * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.52/#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 */\nexport const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags' as const;\n\n/**\n * Container labels, `` being the label name, the value being the label value.\n *\n * @example nginx\n *\n * @note For example, a docker container label `app` with value `nginx` **SHOULD** be recorded as the `container.label.app` attribute with value `\"nginx\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_LABEL = (key: string) => `container.label.${key}`;\n\n/**\n * Deprecated, use `container.label` instead.\n *\n * @example nginx\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 `container.label`.\n */\nexport const ATTR_CONTAINER_LABELS = (key: string) => `container.labels.${key}`;\n\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 */\nexport const ATTR_CONTAINER_NAME = 'container.name' as const;\n\n/**\n * The container runtime managing this container.\n *\n * @example docker\n * @example containerd\n * @example rkt\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 `container.runtime.name`.\n */\nexport const ATTR_CONTAINER_RUNTIME = 'container.runtime' as const;\n\n/**\n * A description about the runtime which could include, for example details about the CRI/API version being used or other customisations.\n *\n * @example docker://19.3.1 - CRI: 1.22.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_RUNTIME_DESCRIPTION = 'container.runtime.description' as const;\n\n/**\n * The container runtime managing this container.\n *\n * @example docker\n * @example containerd\n * @example rkt\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_RUNTIME_NAME = 'container.runtime.name' as const;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @example \"1.0.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_RUNTIME_VERSION = 'container.runtime.version' as const;\n\n/**\n * The logical CPU number [0..n-1]\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 */\nexport const ATTR_CPU_LOGICAL_NUMBER = 'cpu.logical_number' as const;\n\n/**\n * The mode of the CPU\n *\n * @example user\n * @example system\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CPU_MODE = 'cpu.mode' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Idle\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"interrupt\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Interrupt\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_INTERRUPT = \"interrupt\" as const;\n\n/**\n * Enum value \"iowait\" for attribute {@link ATTR_CPU_MODE}.\n *\n * IO Wait\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_IOWAIT = \"iowait\" as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Kernel\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"nice\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Nice\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_NICE = \"nice\" as const;\n\n/**\n * Enum value \"steal\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Steal\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_STEAL = \"steal\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_CPU_MODE}.\n *\n * System\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_CPU_MODE}.\n *\n * User\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_USER = \"user\" as const;\n\n/**\n * Value of the garbage collector collection generation.\n *\n * @example 0\n * @example 1\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CPYTHON_GC_GENERATION = 'cpython.gc.generation' as const;\n\n/**\n * Enum value 0 for attribute {@link ATTR_CPYTHON_GC_GENERATION}.\n *\n * Generation 0\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPYTHON_GC_GENERATION_VALUE_GENERATION_0 = 0 as const;\n\n/**\n * Enum value 1 for attribute {@link ATTR_CPYTHON_GC_GENERATION}.\n *\n * Generation 1\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPYTHON_GC_GENERATION_VALUE_GENERATION_1 = 1 as const;\n\n/**\n * Enum value 2 for attribute {@link ATTR_CPYTHON_GC_GENERATION}.\n *\n * Generation 2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPYTHON_GC_GENERATION_VALUE_GENERATION_2 = 2 as const;\n\n/**\n * Deprecated, use `cassandra.consistency.level` 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 `cassandra.consistency.level`.\n */\nexport const ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level' as const;\n\n/**\n * Enum value \"all\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = \"all\" as const;\n\n/**\n * Enum value \"any\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = \"any\" as const;\n\n/**\n * Enum value \"each_quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = \"each_quorum\" as const;\n\n/**\n * Enum value \"local_one\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = \"local_one\" as const;\n\n/**\n * Enum value \"local_quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = \"local_quorum\" as const;\n\n/**\n * Enum value \"local_serial\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = \"local_serial\" as const;\n\n/**\n * Enum value \"one\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = \"one\" as const;\n\n/**\n * Enum value \"quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = \"quorum\" as const;\n\n/**\n * Enum value \"serial\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = \"serial\" as const;\n\n/**\n * Enum value \"three\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = \"three\" as const;\n\n/**\n * Enum value \"two\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = \"two\" as const;\n\n/**\n * Deprecated, use `cassandra.coordinator.dc` instead.\n *\n * @example \"us-west-2\"\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 `cassandra.coordinator.dc`.\n */\nexport const ATTR_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc' as const;\n\n/**\n * Deprecated, use `cassandra.coordinator.id` instead.\n *\n * @example \"be13faa2-8574-4d71-926d-27f16cf8a7af\"\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 `cassandra.coordinator.id`.\n */\nexport const ATTR_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id' as const;\n\n/**\n * Deprecated, use `cassandra.query.idempotent` 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 `cassandra.query.idempotent`.\n */\nexport const ATTR_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence' as const;\n\n/**\n * Deprecated, use `cassandra.page.size` instead.\n *\n * @example 5000\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 `cassandra.page.size`.\n */\nexport const ATTR_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size' as const;\n\n/**\n * Deprecated, use `cassandra.speculative_execution.count` instead.\n *\n * @example 0\n * @example 2\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 `cassandra.speculative_execution.count`.\n */\nexport const ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count' as const;\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 */\nexport const ATTR_DB_CASSANDRA_TABLE = 'db.cassandra.table' as const;\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 */\nexport const ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name' as const;\n\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 */\nexport const ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `db.client.connection.pool.name` instead.\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 *\n * @deprecated Replaced by `db.client.connection.pool.name`.\n */\nexport const ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME = 'db.client.connections.pool.name' as const;\n\n/**\n * Deprecated, use `db.client.connection.state` instead.\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 *\n * @deprecated Replaced by `db.client.connection.state`.\n */\nexport const ATTR_DB_CLIENT_CONNECTIONS_STATE = 'db.client.connections.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTIONS_STATE_VALUE_USED = \"used\" as const;\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 */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `azure.client.id` instead.\n *\n * @example \"3ba4827d-4422-483f-b59f-85b74211c11d\"\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 `azure.client.id`.\n */\nexport const ATTR_DB_COSMOSDB_CLIENT_ID = 'db.cosmosdb.client_id' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.connection.mode` 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 `azure.cosmosdb.connection.mode`.\n */\nexport const ATTR_DB_COSMOSDB_CONNECTION_MODE = 'db.cosmosdb.connection_mode' as const;\n\n/**\n * Enum value \"direct\" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}.\n *\n * Direct connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = \"direct\" as const;\n\n/**\n * Enum value \"gateway\" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}.\n *\n * Gateway (HTTP) connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = \"gateway\" as const;\n\n/**\n * Deprecated, use `cosmosdb.consistency.level` instead.\n *\n * @example Eventual\n * @example ConsistentPrefix\n * @example BoundedStaleness\n * @example Strong\n * @example Session\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 `azure.cosmosdb.consistency.level`.\n */\nexport const ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL = 'db.cosmosdb.consistency_level' as const;\n\n/**\n * Enum value \"BoundedStaleness\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = \"BoundedStaleness\" as const;\n\n/**\n * Enum value \"ConsistentPrefix\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = \"ConsistentPrefix\" as const;\n\n/**\n * Enum value \"Eventual\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = \"Eventual\" as const;\n\n/**\n * Enum value \"Session\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = \"Session\" as const;\n\n/**\n * Enum value \"Strong\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = \"Strong\" as const;\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 */\nexport const ATTR_DB_COSMOSDB_CONTAINER = 'db.cosmosdb.container' as const;\n\n/**\n * Deprecated, no replacement at this time.\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 */\nexport const ATTR_DB_COSMOSDB_OPERATION_TYPE = 'db.cosmosdb.operation_type' as const;\n\n/**\n * Enum value \"batch\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH = \"batch\" as const;\n\n/**\n * Enum value \"create\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE = \"create\" as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"execute\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE = \"execute\" as const;\n\n/**\n * Enum value \"execute_javascript\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT = \"execute_javascript\" as const;\n\n/**\n * Enum value \"head\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD = \"head\" as const;\n\n/**\n * Enum value \"head_feed\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED = \"head_feed\" as const;\n\n/**\n * Enum value \"invalid\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID = \"invalid\" as const;\n\n/**\n * Enum value \"patch\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH = \"patch\" as const;\n\n/**\n * Enum value \"query\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY = \"query\" as const;\n\n/**\n * Enum value \"query_plan\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN = \"query_plan\" as const;\n\n/**\n * Enum value \"read\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ = \"read\" as const;\n\n/**\n * Enum value \"read_feed\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED = \"read_feed\" as const;\n\n/**\n * Enum value \"replace\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE = \"replace\" as const;\n\n/**\n * Enum value \"upsert\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT = \"upsert\" as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead.\n *\n * @example [\"North Central US\", \"Australia East\", \"Australia Southeast\"]\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 `azure.cosmosdb.operation.contacted_regions`.\n */\nexport const ATTR_DB_COSMOSDB_REGIONS_CONTACTED = 'db.cosmosdb.regions_contacted' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.operation.request_charge` instead.\n *\n * @example 46.18\n * @example 1.0\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 `azure.cosmosdb.operation.request_charge`.\n */\nexport const ATTR_DB_COSMOSDB_REQUEST_CHARGE = 'db.cosmosdb.request_charge' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.request.body.size` 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 `azure.cosmosdb.request.body.size`.\n */\nexport const ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH = 'db.cosmosdb.request_content_length' as const;\n\n/**\n * Deprecated, use `db.response.status_code` instead.\n *\n * @example 200\n * @example 201\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use `db.response.status_code` instead.\n */\nexport const ATTR_DB_COSMOSDB_STATUS_CODE = 'db.cosmosdb.status_code' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.response.sub_status_code` instead.\n *\n * @example 1000\n * @example 1002\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 `azure.cosmosdb.response.sub_status_code`.\n */\nexport const ATTR_DB_COSMOSDB_SUB_STATUS_CODE = 'db.cosmosdb.sub_status_code' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example e9106fc68e3044f0b1475b04bf4ffd5f\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 */\nexport const ATTR_DB_ELASTICSEARCH_CLUSTER_NAME = 'db.elasticsearch.cluster.name' as const;\n\n/**\n * Deprecated, use `elasticsearch.node.name` instead.\n *\n * @example instance-0000000001\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 `elasticsearch.node.name`.\n */\nexport const ATTR_DB_ELASTICSEARCH_NODE_NAME = 'db.elasticsearch.node.name' as const;\n\n/**\n * Deprecated, use `db.operation.parameter` instead.\n *\n * @example test-index\n * @example 123\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.parameter`.\n */\nexport const ATTR_DB_ELASTICSEARCH_PATH_PARTS = (key: string) => `db.elasticsearch.path_parts.${key}`;\n\n/**\n * Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead.\n *\n * @example \"mysql-e26b99z.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 Removed, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead.\n */\nexport const ATTR_DB_INSTANCE_ID = 'db.instance.id' as const;\n\n/**\n * Removed, no replacement at this time.\n *\n * @example org.postgresql.Driver\n * @example com.microsoft.sqlserver.jdbc.SQLServerDriver\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 */\nexport const ATTR_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname' as const;\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 */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute.\n *\n * @example \"MSSQLSERVER\"\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 */\nexport const ATTR_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name' as const;\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 */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\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 */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value.\n *\n * @example someval\n * @example 55\n *\n * @note For example, a client-side maximum number of rows to read from the database\n * **MAY** be recorded as the `db.operation.parameter.max_rows` attribute.\n *\n * `db.query.text` parameters **SHOULD** be captured using `db.query.parameter.`\n * instead of `db.operation.parameter.`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_OPERATION_PARAMETER = (key: string) => `db.operation.parameter.${key}`;\n\n/**\n * A database query parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value.\n *\n * @example someval\n * @example 55\n *\n * @note If a query parameter has no name and instead is referenced only by index,\n * then `` **SHOULD** be the 0-based index.\n *\n * `db.query.parameter.` **SHOULD** match\n * up with the parameterized placeholders present in `db.query.text`.\n *\n * It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * `db.query.parameter.` **SHOULD NOT** be captured on batch operations.\n *\n * Examples:\n *\n * - For a query `SELECT * FROM users where username = %s` with the parameter `\"jdoe\"`,\n * the attribute `db.query.parameter.0` **SHOULD** be set to `\"jdoe\"`.\n * - For a query `\"SELECT * FROM users WHERE username = %(userName)s;` with parameter\n * `userName = \"jdoe\"`, the attribute `db.query.parameter.userName` **SHOULD** be set to `\"jdoe\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_QUERY_PARAMETER = (key: string) => `db.query.parameter.${key}`;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example 0\n * @example 1\n * @example 15\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Uncategorized.\n */\nexport const ATTR_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index' as const;\n\n/**\n * Number of rows returned by the operation.\n *\n * @example 10\n * @example 30\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_RESPONSE_RETURNED_ROWS = 'db.response.returned_rows' as const;\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`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Enum value \"adabas\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Adabas (Adaptable Database System)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_ADABAS = \"adabas\" as const;\n\n/**\n * Enum value \"cache\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, use `intersystems_cache` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `intersystems_cache`.\n */\nexport const DB_SYSTEM_VALUE_CACHE = \"cache\" as const;\n\n/**\n * Enum value \"cassandra\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Cassandra\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_CASSANDRA = \"cassandra\" as const;\n\n/**\n * Enum value \"clickhouse\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * ClickHouse\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_CLICKHOUSE = \"clickhouse\" as const;\n\n/**\n * Enum value \"cloudscape\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, use `other_sql` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `other_sql`.\n */\nexport const DB_SYSTEM_VALUE_CLOUDSCAPE = \"cloudscape\" as const;\n\n/**\n * Enum value \"cockroachdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * CockroachDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COCKROACHDB = \"cockroachdb\" as const;\n\n/**\n * Enum value \"coldfusion\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, no replacement at this time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Obsoleted.\n */\nexport const DB_SYSTEM_VALUE_COLDFUSION = \"coldfusion\" as const;\n\n/**\n * Enum value \"cosmosdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Microsoft Azure Cosmos DB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COSMOSDB = \"cosmosdb\" as const;\n\n/**\n * Enum value \"couchbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Couchbase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COUCHBASE = \"couchbase\" as const;\n\n/**\n * Enum value \"couchdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * CouchDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COUCHDB = \"couchdb\" as const;\n\n/**\n * Enum value \"db2\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * IBM Db2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_DB2 = \"db2\" as const;\n\n/**\n * Enum value \"derby\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Derby\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_DERBY = \"derby\" as const;\n\n/**\n * Enum value \"dynamodb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Amazon DynamoDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_DYNAMODB = \"dynamodb\" as const;\n\n/**\n * Enum value \"edb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * EnterpriseDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_EDB = \"edb\" as const;\n\n/**\n * Enum value \"elasticsearch\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Elasticsearch\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_ELASTICSEARCH = \"elasticsearch\" as const;\n\n/**\n * Enum value \"filemaker\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * FileMaker\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_FILEMAKER = \"filemaker\" as const;\n\n/**\n * Enum value \"firebird\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Firebird\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_FIREBIRD = \"firebird\" as const;\n\n/**\n * Enum value \"firstsql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, use `other_sql` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `other_sql`.\n */\nexport const DB_SYSTEM_VALUE_FIRSTSQL = \"firstsql\" as const;\n\n/**\n * Enum value \"geode\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Geode\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_GEODE = \"geode\" as const;\n\n/**\n * Enum value \"h2\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * H2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_H2 = \"h2\" as const;\n\n/**\n * Enum value \"hanadb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * SAP HANA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HANADB = \"hanadb\" as const;\n\n/**\n * Enum value \"hbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache HBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HBASE = \"hbase\" as const;\n\n/**\n * Enum value \"hive\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Hive\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HIVE = \"hive\" as const;\n\n/**\n * Enum value \"hsqldb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * HyperSQL DataBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HSQLDB = \"hsqldb\" as const;\n\n/**\n * Enum value \"influxdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InfluxDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INFLUXDB = \"influxdb\" as const;\n\n/**\n * Enum value \"informix\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Informix\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INFORMIX = \"informix\" as const;\n\n/**\n * Enum value \"ingres\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Ingres\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INGRES = \"ingres\" as const;\n\n/**\n * Enum value \"instantdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InstantDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INSTANTDB = \"instantdb\" as const;\n\n/**\n * Enum value \"interbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InterBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INTERBASE = \"interbase\" as const;\n\n/**\n * Enum value \"intersystems_cache\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InterSystems Caché\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE = \"intersystems_cache\" as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MariaDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MARIADB = \"mariadb\" as const;\n\n/**\n * Enum value \"maxdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * SAP MaxDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MAXDB = \"maxdb\" as const;\n\n/**\n * Enum value \"memcached\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Memcached\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MEMCACHED = \"memcached\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MONGODB = \"mongodb\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MSSQL = \"mssql\" as const;\n\n/**\n * Enum value \"mssqlcompact\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, Microsoft SQL Server Compact is discontinued.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `other_sql`.\n */\nexport const DB_SYSTEM_VALUE_MSSQLCOMPACT = \"mssqlcompact\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"neo4j\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Neo4j\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_NEO4J = \"neo4j\" as const;\n\n/**\n * Enum value \"netezza\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Netezza\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_NETEZZA = \"netezza\" as const;\n\n/**\n * Enum value \"opensearch\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * OpenSearch\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_OPENSEARCH = \"opensearch\" as const;\n\n/**\n * Enum value \"oracle\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Oracle Database\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_ORACLE = \"oracle\" as const;\n\n/**\n * Enum value \"other_sql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Some other SQL database. Fallback only. See notes.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_OTHER_SQL = \"other_sql\" as const;\n\n/**\n * Enum value \"pervasive\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Pervasive PSQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_PERVASIVE = \"pervasive\" as const;\n\n/**\n * Enum value \"pointbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * PointBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_POINTBASE = \"pointbase\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * PostgreSQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Enum value \"progress\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Progress Database\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_PROGRESS = \"progress\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_REDIS = \"redis\" as const;\n\n/**\n * Enum value \"redshift\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Amazon Redshift\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_REDSHIFT = \"redshift\" as const;\n\n/**\n * Enum value \"spanner\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Cloud Spanner\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_SPANNER = \"spanner\" as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * SQLite\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_SQLITE = \"sqlite\" as const;\n\n/**\n * Enum value \"sybase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Sybase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_SYBASE = \"sybase\" as const;\n\n/**\n * Enum value \"teradata\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Teradata\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_TERADATA = \"teradata\" as const;\n\n/**\n * Enum value \"trino\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Trino\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_TRINO = \"trino\" as const;\n\n/**\n * Enum value \"vertica\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Vertica\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_VERTICA = \"vertica\" as const;\n\n/**\n * Enum value \"actian.ingres\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Actian Ingres](https://www.actian.com/databases/ingres/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_ACTIAN_INGRES = \"actian.ingres\" as const;\n\n/**\n * Enum value \"aws.dynamodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_AWS_DYNAMODB = \"aws.dynamodb\" as const;\n\n/**\n * Enum value \"aws.redshift\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Amazon Redshift](https://aws.amazon.com/redshift/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_AWS_REDSHIFT = \"aws.redshift\" as const;\n\n/**\n * Enum value \"azure.cosmosdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_AZURE_COSMOSDB = \"azure.cosmosdb\" as const;\n\n/**\n * Enum value \"cassandra\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Cassandra](https://cassandra.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_CASSANDRA = \"cassandra\" as const;\n\n/**\n * Enum value \"clickhouse\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [ClickHouse](https://clickhouse.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_CLICKHOUSE = \"clickhouse\" as const;\n\n/**\n * Enum value \"cockroachdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [CockroachDB](https://www.cockroachlabs.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_COCKROACHDB = \"cockroachdb\" as const;\n\n/**\n * Enum value \"couchbase\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Couchbase](https://www.couchbase.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_COUCHBASE = \"couchbase\" as const;\n\n/**\n * Enum value \"couchdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache CouchDB](https://couchdb.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_COUCHDB = \"couchdb\" as const;\n\n/**\n * Enum value \"derby\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Derby](https://db.apache.org/derby/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_DERBY = \"derby\" as const;\n\n/**\n * Enum value \"elasticsearch\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Elasticsearch](https://www.elastic.co/elasticsearch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_ELASTICSEARCH = \"elasticsearch\" as const;\n\n/**\n * Enum value \"firebirdsql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Firebird](https://www.firebirdsql.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_FIREBIRDSQL = \"firebirdsql\" as const;\n\n/**\n * Enum value \"gcp.spanner\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Google Cloud Spanner](https://cloud.google.com/spanner)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_GCP_SPANNER = \"gcp.spanner\" as const;\n\n/**\n * Enum value \"geode\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Geode](https://geode.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_GEODE = \"geode\" as const;\n\n/**\n * Enum value \"h2database\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [H2 Database](https://h2database.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_H2DATABASE = \"h2database\" as const;\n\n/**\n * Enum value \"hbase\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache HBase](https://hbase.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_HBASE = \"hbase\" as const;\n\n/**\n * Enum value \"hive\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Hive](https://hive.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_HIVE = \"hive\" as const;\n\n/**\n * Enum value \"hsqldb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [HyperSQL Database](https://hsqldb.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_HSQLDB = \"hsqldb\" as const;\n\n/**\n * Enum value \"ibm.db2\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [IBM Db2](https://www.ibm.com/db2)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_IBM_DB2 = \"ibm.db2\" as const;\n\n/**\n * Enum value \"ibm.informix\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [IBM Informix](https://www.ibm.com/products/informix)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_IBM_INFORMIX = \"ibm.informix\" as const;\n\n/**\n * Enum value \"ibm.netezza\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [IBM Netezza](https://www.ibm.com/products/netezza)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_IBM_NETEZZA = \"ibm.netezza\" as const;\n\n/**\n * Enum value \"influxdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [InfluxDB](https://www.influxdata.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_INFLUXDB = \"influxdb\" as const;\n\n/**\n * Enum value \"instantdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Instant](https://www.instantdb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_INSTANTDB = \"instantdb\" as const;\n\n/**\n * Enum value \"intersystems.cache\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [InterSystems Caché](https://www.intersystems.com/products/cache/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_INTERSYSTEMS_CACHE = \"intersystems.cache\" as const;\n\n/**\n * Enum value \"memcached\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Memcached](https://memcached.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_MEMCACHED = \"memcached\" as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = \"mongodb\" as const;\n\n/**\n * Enum value \"neo4j\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Neo4j](https://neo4j.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_NEO4J = \"neo4j\" as const;\n\n/**\n * Enum value \"opensearch\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [OpenSearch](https://opensearch.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_OPENSEARCH = \"opensearch\" as const;\n\n/**\n * Enum value \"oracle.db\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Oracle Database](https://www.oracle.com/database/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_ORACLE_DB = \"oracle.db\" as const;\n\n/**\n * Enum value \"other_sql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * Some other SQL database. Fallback only.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_OTHER_SQL = \"other_sql\" as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = \"redis\" as const;\n\n/**\n * Enum value \"sap.hana\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SAP_HANA = \"sap.hana\" as const;\n\n/**\n * Enum value \"sap.maxdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SAP MaxDB](https://maxdb.sap.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SAP_MAXDB = \"sap.maxdb\" as const;\n\n/**\n * Enum value \"softwareag.adabas\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SOFTWAREAG_ADABAS = \"softwareag.adabas\" as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SQLite](https://www.sqlite.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SQLITE = \"sqlite\" as const;\n\n/**\n * Enum value \"teradata\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Teradata](https://www.teradata.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_TERADATA = \"teradata\" as const;\n\n/**\n * Enum value \"trino\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Trino](https://trino.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_TRINO = \"trino\" as const;\n\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 */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `deployment.environment.name` instead.\n *\n * @example staging\n * @example production\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 `deployment.environment.name`.\n */\nexport const ATTR_DEPLOYMENT_ENVIRONMENT = 'deployment.environment' as const;\n\n/**\n * Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @example staging\n * @example production\n *\n * @note `deployment.environment.name` does not affect the uniqueness constraints defined through\n * the `service.namespace`, `service.name` and `service.instance.id` resource attributes.\n * This implies that resources carrying the following attribute combinations **MUST** be\n * considered to be identifying the same service:\n *\n * - `service.name=frontend`, `deployment.environment.name=production`\n * - `service.name=frontend`, `deployment.environment.name=staging`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_ENVIRONMENT_NAME = 'deployment.environment.name' as const;\n\n/**\n * The id of the deployment.\n *\n * @example 1208\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_ID = 'deployment.id' as const;\n\n/**\n * The name of the deployment.\n *\n * @example deploy my app\n * @example deploy-frontend\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_NAME = 'deployment.name' as const;\n\n/**\n * The status of the deployment.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_STATUS = 'deployment.status' as const;\n\n/**\n * Enum value \"failed\" for attribute {@link ATTR_DEPLOYMENT_STATUS}.\n *\n * failed\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DEPLOYMENT_STATUS_VALUE_FAILED = \"failed\" as const;\n\n/**\n * Enum value \"succeeded\" for attribute {@link ATTR_DEPLOYMENT_STATUS}.\n *\n * succeeded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DEPLOYMENT_STATUS_VALUE_SUCCEEDED = \"succeeded\" as const;\n\n/**\n * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example destination.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the source side, and when communicating through an intermediary, `destination.address` **SHOULD** represent the destination address behind any intermediaries, for example proxies, if it's available.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DESTINATION_ADDRESS = 'destination.address' as const;\n\n/**\n * Destination port number\n *\n * @example 3389\n * @example 2888\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DESTINATION_PORT = 'destination.port' as const;\n\n/**\n * A unique identifier representing the device\n *\n * @example 123456789012345\n * @example 01:23:45:67:89:AB\n *\n * @note Its value **SHOULD** be identical for all apps on a device and it **SHOULD NOT** change if an app is uninstalled and re-installed.\n * However, it might be resettable by the user for all apps on a device.\n * Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) **MAY** be used as values.\n *\n * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids).\n *\n * > [!WARNING]> This attribute may contain sensitive (PII) information. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply,\n * > ensure you do your own due diligence.> Due to these reasons, this identifier is not recommended for consumer applications and will likely result in rejection from both Google Play and App Store.\n * > However, it may be appropriate for specific enterprise scenarios, such as kiosk devices or enterprise-managed devices, with appropriate compliance clearance.\n * > Any instrumentation providing this identifier **> MUST**> implement it as an opt-in feature.> See [`app.installation.id`](/docs/registry/attributes/app.md#app-installation-id)> for a more privacy-preserving alternative.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_ID = 'device.id' as const;\n\n/**\n * The name of the device manufacturer\n *\n * @example Apple\n * @example Samsung\n *\n * @note The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps **SHOULD** hardcode the value `Apple`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MANUFACTURER = 'device.manufacturer' as const;\n\n/**\n * The model identifier for the device\n *\n * @example iPhone3,4\n * @example SM-G920F\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier' as const;\n\n/**\n * The marketing name for the device model\n *\n * @example iPhone 6s Plus\n * @example Samsung Galaxy S6\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MODEL_NAME = 'device.model.name' as const;\n\n/**\n * The disk IO operation direction.\n *\n * @example read\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DISK_IO_DIRECTION = 'disk.io.direction' as const;\n\n/**\n * Enum value \"read\" for attribute {@link ATTR_DISK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DISK_IO_DIRECTION_VALUE_READ = \"read\" as const;\n\n/**\n * Enum value \"write\" for attribute {@link ATTR_DISK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DISK_IO_DIRECTION_VALUE_WRITE = \"write\" as const;\n\n/**\n * The list of IPv4 or IPv6 addresses resolved during DNS lookup.\n *\n * @example [\"10.0.0.1\", \"2001:0db8:85a3:0000:0000:8a2e:0370:7334\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DNS_ANSWERS = 'dns.answers' as const;\n\n/**\n * The name being queried.\n *\n * @example www.example.com\n * @example opentelemetry.io\n *\n * @note The name represents the queried domain name as it appears in the DNS query without any additional normalization.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DNS_QUESTION_NAME = 'dns.question.name' as const;\n\n/**\n * Represents the human-readable identifier of the node/instance to which a request was routed.\n *\n * @example instance-0000000001\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ELASTICSEARCH_NODE_NAME = 'elasticsearch.node.name' as const;\n\n/**\n * Unique identifier of an end user in the system. It maybe a username, email address, or other identifier.\n *\n * @example username\n *\n * @note Unique identifier of an end user in the system.\n *\n * > [!Warning]\n * > This field contains sensitive (PII) information.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ENDUSER_ID = 'enduser.id' as const;\n\n/**\n * Pseudonymous identifier of an end user. This identifier should be a random value that is not directly linked or associated with the end user's actual identity.\n *\n * @example QdH5CAWJgqVT4rOr0qtumf\n *\n * @note Pseudonymous identifier of an end user.\n *\n * > [!Warning]\n * > This field contains sensitive (linkable PII) information.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ENDUSER_PSEUDO_ID = 'enduser.pseudo.id' as const;\n\n/**\n * Deprecated, use `user.roles` instead.\n *\n * @example \"admin\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use `user.roles` instead.\n */\nexport const ATTR_ENDUSER_ROLE = 'enduser.role' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example \"read:message, write:files\"\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 */\nexport const ATTR_ENDUSER_SCOPE = 'enduser.scope' as const;\n\n/**\n * A message providing more detail about an error in human-readable form.\n *\n * @example Unexpected input type: string\n * @example The user has exceeded their storage quota\n *\n * @note `error.message` should provide additional context and detail about an error.\n * It is NOT **RECOMMENDED** to duplicate the value of `error.type` in `error.message`.\n * It is also NOT **RECOMMENDED** to duplicate the value of `exception.message` in `error.message`.\n *\n * `error.message` is NOT **RECOMMENDED** for metrics or spans due to its unbounded cardinality and overlap with span status.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ERROR_MESSAGE = 'error.message' as const;\n\n/**\n * Identifies the class / type of event.\n *\n * @example browser.mouse.click\n * @example device.app.lifecycle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated The value of this attribute **MUST** now be set as the value of the EventName field on the LogRecord to indicate that the LogRecord represents an Event.\n */\nexport const ATTR_EVENT_NAME = 'event.name' as const;\n\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_COLDSTART = 'faas.coldstart' as const;\n\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 * @example \"0/5 * * * ? *\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_CRON = 'faas.cron' as const;\n\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 * @example myBucketName\n * @example myDbName\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection' as const;\n\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 * @example myFile.txt\n * @example myTableName\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_NAME = 'faas.document.name' as const;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_OPERATION = 'faas.document.operation' as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n *\n * When an object is deleted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"edit\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n *\n * When an object is modified.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_EDIT = \"edit\" as const;\n\n/**\n * Enum value \"insert\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n *\n * When a new object is created.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_INSERT = \"insert\" as const;\n\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 * @example \"2020-01-23T13:47:06Z\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_TIME = 'faas.document.time' as const;\n\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 * @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de\n *\n * @note - **AWS Lambda:** Use the (full) log stream name.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INSTANCE = 'faas.instance' as const;\n\n/**\n * The invocation ID of the current function invocation.\n *\n * @example \"af9d5aa4-a685-4c5f-a22b-444f80b3cc28\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOCATION_ID = 'faas.invocation_id' as const;\n\n/**\n * The name of the invoked function.\n *\n * @example \"my-function\"\n *\n * @note **SHOULD** be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_NAME = 'faas.invoked_name' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider' as const;\n\n/**\n * Enum value \"alibaba_cloud\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Alibaba Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD = \"alibaba_cloud\" as const;\n\n/**\n * Enum value \"aws\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Amazon Web Services\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_AWS = \"aws\" as const;\n\n/**\n * Enum value \"azure\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Microsoft Azure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_AZURE = \"azure\" as const;\n\n/**\n * Enum value \"gcp\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Google Cloud Platform\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_GCP = \"gcp\" as const;\n\n/**\n * Enum value \"tencent_cloud\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Tencent Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD = \"tencent_cloud\" as const;\n\n/**\n * The cloud region of the invoked function.\n *\n * @example \"eu-central-1\"\n *\n * @note **SHOULD** be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_REGION = 'faas.invoked_region' as const;\n\n/**\n * The amount of memory available to the serverless function converted to Bytes.\n *\n * @example 134217728\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 (which must be multiplied by 1,048,576).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_MAX_MEMORY = 'faas.max_memory' as const;\n\n/**\n * The name of the single function that this runtime instance executes.\n *\n * @example my-function\n * @example myazurefunctionapp/some-function-name\n *\n * @note This is the name of the function as configured/deployed on the FaaS\n * platform and is usually different from the name of the callback\n * function (which may be stored in the\n * [`code.namespace`/`code.function.name`](/docs/general/attributes.md#source-code-attributes)\n * span attributes).\n *\n * For some cloud providers, the above definition is ambiguous. The following\n * definition of function name **MUST** be used for this attribute\n * (and consequently the span name) for the listed cloud providers/products:\n *\n * - **Azure:** The full name `/`, i.e., function app name\n * followed by a forward slash followed by the function name (this form\n * can also be seen in the resource JSON for the function).\n * This means that a span attribute **MUST** be used, as an Azure function\n * app can host multiple functions that would usually share\n * a TracerProvider (see also the `cloud.resource_id` attribute).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_NAME = 'faas.name' as const;\n\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 * @example \"2020-01-23T13:47:06Z\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_TIME = 'faas.time' as const;\n\n/**\n * Type of the trigger which caused this function invocation.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_TRIGGER = 'faas.trigger' as const;\n\n/**\n * Enum value \"datasource\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * A response to some data source operation such as a database or filesystem read/write\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_DATASOURCE = \"datasource\" as const;\n\n/**\n * Enum value \"http\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * To provide an answer to an inbound HTTP request\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_HTTP = \"http\" as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * If none of the others apply\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"pubsub\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * A function is set to be executed when messages are sent to a messaging system\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_PUBSUB = \"pubsub\" as const;\n\n/**\n * Enum value \"timer\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * A function is scheduled to be executed regularly\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_TIMER = \"timer\" as const;\n\n/**\n * The immutable version of the function being executed.\n *\n * @example 26\n * @example pinkfroid-00002\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 (Services):** 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/run/docs/container-contract#services-env-vars).\n * - **Azure Functions:** Not applicable. Do not set this attribute.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_VERSION = 'faas.version' as const;\n\n/**\n * The unique identifier for the flag evaluation context. For example, the targeting key.\n *\n * @example 5157782b-2203-4c80-a857-dbbd5e7761db\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_CONTEXT_ID = 'feature_flag.context.id' as const;\n\n/**\n * Deprecated, use `error.message` instead.\n *\n * @example Flag `header-color` expected type `string` but found type `number`\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 `error.message`.\n */\nexport const ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE = 'feature_flag.evaluation.error.message' as const;\n\n/**\n * Deprecated, use `feature_flag.result.reason` instead.\n *\n * @example static\n * @example targeting_match\n * @example error\n * @example default\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 `feature_flag.result.reason`.\n */\nexport const ATTR_FEATURE_FLAG_EVALUATION_REASON = 'feature_flag.evaluation.reason' as const;\n\n/**\n * Enum value \"cached\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was retrieved from cache.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED = \"cached\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * Enum value \"disabled\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of the flag being disabled in the management system.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED = \"disabled\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of an error.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"split\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of pseudorandom assignment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT = \"split\" as const;\n\n/**\n * Enum value \"stale\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value is non-authoritative or possibly out of date\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE = \"stale\" as const;\n\n/**\n * Enum value \"static\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value is static (no dynamic evaluation).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC = \"static\" as const;\n\n/**\n * Enum value \"targeting_match\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH = \"targeting_match\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The reason for the resolved value could not be determined.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * The lookup key of the feature flag.\n *\n * @example logo-color\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_KEY = 'feature_flag.key' as const;\n\n/**\n * Identifies the feature flag provider.\n *\n * @example Flag Manager\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_PROVIDER_NAME = 'feature_flag.provider.name' as const;\n\n/**\n * The reason code which shows how a feature flag value was determined.\n *\n * @example static\n * @example targeting_match\n * @example error\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_RESULT_REASON = 'feature_flag.result.reason' as const;\n\n/**\n * Enum value \"cached\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was retrieved from cache.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_CACHED = \"cached\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * Enum value \"disabled\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of the flag being disabled in the management system.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_DISABLED = \"disabled\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of an error.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"split\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of pseudorandom assignment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_SPLIT = \"split\" as const;\n\n/**\n * Enum value \"stale\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value is non-authoritative or possibly out of date\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_STALE = \"stale\" as const;\n\n/**\n * Enum value \"static\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value is static (no dynamic evaluation).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_STATIC = \"static\" as const;\n\n/**\n * Enum value \"targeting_match\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_TARGETING_MATCH = \"targeting_match\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The reason for the resolved value could not be determined.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * The evaluated value of the feature flag.\n *\n * @example #ff0000\n * @example true\n * @example 3\n *\n * @note With some feature flag providers, feature flag results can be quite large or contain private or sensitive details.\n * Because of this, `feature_flag.result.variant` is often the preferred attribute if it is available.\n *\n * It may be desirable to redact or otherwise limit the size and scope of `feature_flag.result.value` if possible.\n * Because the evaluated flag value is unstructured and may be any type, it is left to the instrumentation author to determine how best to achieve this.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_RESULT_VALUE = 'feature_flag.result.value' as const;\n\n/**\n * A semantic identifier for an evaluated flag value.\n *\n * @example red\n * @example true\n * @example on\n *\n * @note A semantic identifier, commonly referred to as a variant, provides a means\n * for referring to a value without including the value itself. This can\n * provide additional context for understanding the meaning behind a value.\n * For example, the variant `red` maybe be used for the value `#c05543`.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_RESULT_VARIANT = 'feature_flag.result.variant' as const;\n\n/**\n * The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs.\n *\n * @example proj-1\n * @example ab98sgs\n * @example service1/dev\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_SET_ID = 'feature_flag.set.id' as const;\n\n/**\n * Deprecated, use `feature_flag.result.variant` instead.\n *\n * @example red\n * @example true\n * @example on\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 `feature_flag.result.variant`.\n */\nexport const ATTR_FEATURE_FLAG_VARIANT = 'feature_flag.variant' as const;\n\n/**\n * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset.\n *\n * @example 1\n * @example 01ABCDEF\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_VERSION = 'feature_flag.version' as const;\n\n/**\n * Time when the file was last accessed, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_ACCESSED = 'file.accessed' as const;\n\n/**\n * Array of file attributes.\n *\n * @example [\"readonly\", \"hidden\"]\n *\n * @note Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected for this attribute: `archive`, `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, `write`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_ATTRIBUTES = 'file.attributes' as const;\n\n/**\n * Time when the file attributes or metadata was last changed, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @note `file.changed` captures the time when any of the file's properties or attributes (including the content) are changed, while `file.modified` captures the timestamp when the file content is modified.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_CHANGED = 'file.changed' as const;\n\n/**\n * Time when the file was created, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_CREATED = 'file.created' as const;\n\n/**\n * Directory where the file is located. It should include the drive letter, when appropriate.\n *\n * @example /home/user\n * @example C:\\\\Program Files\\\\MyApp\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_DIRECTORY = 'file.directory' as const;\n\n/**\n * File extension, excluding the leading dot.\n *\n * @example png\n * @example gz\n *\n * @note When the file name has multiple extensions (example.tar.gz), only the last one should be captured (\"gz\", not \"tar.gz\").\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_EXTENSION = 'file.extension' as const;\n\n/**\n * Name of the fork. A fork is additional data associated with a filesystem object.\n *\n * @example Zone.Identifier\n *\n * @note On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.\n * On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: C:\\\\path\\\\to\\\\filename.extension:some_fork_name, and some_fork_name is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_FORK_NAME = 'file.fork_name' as const;\n\n/**\n * Primary Group ID (GID) of the file.\n *\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_GROUP_ID = 'file.group.id' as const;\n\n/**\n * Primary group name of the file.\n *\n * @example users\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_GROUP_NAME = 'file.group.name' as const;\n\n/**\n * Inode representing the file in the filesystem.\n *\n * @example 256383\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_INODE = 'file.inode' as const;\n\n/**\n * Mode of the file in octal representation.\n *\n * @example 0640\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_MODE = 'file.mode' as const;\n\n/**\n * Time when the file content was last modified, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_MODIFIED = 'file.modified' as const;\n\n/**\n * Name of the file including the extension, without the directory.\n *\n * @example example.png\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_NAME = 'file.name' as const;\n\n/**\n * The user ID (UID) or security identifier (SID) of the file owner.\n *\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_OWNER_ID = 'file.owner.id' as const;\n\n/**\n * Username of the file owner.\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 */\nexport const ATTR_FILE_OWNER_NAME = 'file.owner.name' as const;\n\n/**\n * Full path to the file, including the file name. It should include the drive letter, when appropriate.\n *\n * @example /home/alice/example.png\n * @example C:\\\\Program Files\\\\MyApp\\\\myapp.exe\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_PATH = 'file.path' as const;\n\n/**\n * File size in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_SIZE = 'file.size' as const;\n\n/**\n * Path to the target of a symbolic link.\n *\n * @example /usr/bin/python3\n *\n * @note This attribute is only applicable to symbolic links.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH = 'file.symbolic_link.target_path' as const;\n\n/**\n * The container within GCP where the AppHub application is defined.\n *\n * @example projects/my-container-project\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_APPLICATION_CONTAINER = 'gcp.apphub.application.container' as const;\n\n/**\n * The name of the application as configured in AppHub.\n *\n * @example my-application\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_APPLICATION_ID = 'gcp.apphub.application.id' as const;\n\n/**\n * The GCP zone or region where the application is defined.\n *\n * @example us-central1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_APPLICATION_LOCATION = 'gcp.apphub.application.location' as const;\n\n/**\n * Criticality of a service indicates its importance to the business.\n *\n * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE = 'gcp.apphub.service.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Environment of a service is the stage of a software lifecycle.\n *\n * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub.service.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the service as configured in AppHub.\n *\n * @example my-service\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_SERVICE_ID = 'gcp.apphub.service.id' as const;\n\n/**\n * Criticality of a workload indicates its importance to the business.\n *\n * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub.workload.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Environment of a workload is the stage of a software lifecycle.\n *\n * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub.workload.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the workload as configured in AppHub.\n *\n * @example my-workload\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_WORKLOAD_ID = 'gcp.apphub.workload.id' as const;\n\n/**\n * The container within GCP where the AppHub destination application is defined.\n *\n * @example projects/my-container-project\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_CONTAINER = 'gcp.apphub_destination.application.container' as const;\n\n/**\n * The name of the destination application as configured in AppHub.\n *\n * @example my-application\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_ID = 'gcp.apphub_destination.application.id' as const;\n\n/**\n * The GCP zone or region where the destination application is defined.\n *\n * @example us-central1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_LOCATION = 'gcp.apphub_destination.application.location' as const;\n\n/**\n * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE = 'gcp.apphub_destination.service.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Software lifecycle stage of a destination service as defined [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub_destination.service.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the destination service as configured in AppHub.\n *\n * @example my-service\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ID = 'gcp.apphub_destination.service.id' as const;\n\n/**\n * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub_destination.workload.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Environment of a destination workload is the stage of a software lifecycle as provided in the [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub_destination.workload.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the destination workload as configured in AppHub.\n *\n * @example my-workload\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ID = 'gcp.apphub_destination.workload.id' as const;\n\n/**\n * Identifies the Google Cloud service for which the official client library is intended.\n *\n * @example appengine\n * @example run\n * @example firestore\n * @example alloydb\n * @example spanner\n *\n * @note Intended to be a stable identifier for Google Cloud client libraries that is uniform across implementation languages. The value should be derived from the canonical service domain for the service; for example, 'foo.googleapis.com' should result in a value of 'foo'.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLIENT_SERVICE = 'gcp.client.service' as const;\n\n/**\n * The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.\n *\n * @example job-name-xxxx\n * @example sample-job-mdw84\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLOUD_RUN_JOB_EXECUTION = 'gcp.cloud_run.job.execution' as const;\n\n/**\n * The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.\n *\n * @example 0\n * @example 1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX = 'gcp.cloud_run.job.task_index' as const;\n\n/**\n * The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm).\n *\n * @example my-host1234.example.com\n * @example sample-vm.us-west1-b.c.my-project.internal\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_GCE_INSTANCE_HOSTNAME = 'gcp.gce.instance.hostname' as const;\n\n/**\n * The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names).\n *\n * @example instance-1\n * @example my-vm-name\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_GCE_INSTANCE_NAME = 'gcp.gce.instance.name' as const;\n\n/**\n * Free-form description of the GenAI agent provided by the application.\n *\n * @example Helps with math problems\n * @example Generates fiction stories\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_AGENT_DESCRIPTION = 'gen_ai.agent.description' as const;\n\n/**\n * The unique identifier of the GenAI agent.\n *\n * @example asst_5j66UpCpwteGg4YSxUnt7lPY\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_AGENT_ID = 'gen_ai.agent.id' as const;\n\n/**\n * Human-readable name of the GenAI agent provided by the application.\n *\n * @example Math Tutor\n * @example Fiction Writer\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_AGENT_NAME = 'gen_ai.agent.name' as const;\n\n/**\n * Deprecated, use Event API to report completions contents.\n *\n * @example [{'role': 'assistant', 'content': 'The capital of France is Paris.'}]\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 */\nexport const ATTR_GEN_AI_COMPLETION = 'gen_ai.completion' as const;\n\n/**\n * The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.\n *\n * @example conv_5j66UpCpwteGg4YSxUnt7lPY\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_CONVERSATION_ID = 'gen_ai.conversation.id' as const;\n\n/**\n * The data source identifier.\n *\n * @example H7STPQYOND\n *\n * @note Data sources are used by AI agents and RAG applications to store grounding data. A data source may be an external database, object store, document collection, website, or any other storage system used by the GenAI agent or application. The `gen_ai.data_source.id` **SHOULD** match the identifier used by the GenAI system rather than a name specific to the external storage, such as a database or object store. Semantic conventions referencing `gen_ai.data_source.id` **MAY** also leverage additional attributes, such as `db.*`, to further identify and describe the data source.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_DATA_SOURCE_ID = 'gen_ai.data_source.id' as const;\n\n/**\n * The number of dimensions the resulting output embeddings should have.\n *\n * @example 512\n * @example 1024\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT = 'gen_ai.embeddings.dimension.count' as const;\n\n/**\n * A free-form explanation for the assigned score provided by the evaluator.\n *\n * @example The response is factually accurate but lacks sufficient detail to fully address the question.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_EXPLANATION = 'gen_ai.evaluation.explanation' as const;\n\n/**\n * The name of the evaluation metric used for the GenAI response.\n *\n * @example Relevance\n * @example IntentResolution\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_NAME = 'gen_ai.evaluation.name' as const;\n\n/**\n * Human readable label for evaluation.\n *\n * @example relevant\n * @example not_relevant\n * @example correct\n * @example incorrect\n * @example pass\n * @example fail\n *\n * @note This attribute provides a human-readable interpretation of the evaluation score produced by an evaluator. For example, a score value of 1 could mean \"relevant\" in one evaluation system and \"not relevant\" in another, depending on the scoring range and evaluator. The label **SHOULD** have low cardinality. Possible values depend on the evaluation metric and evaluator used; implementations **SHOULD** document the possible values.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_SCORE_LABEL = 'gen_ai.evaluation.score.label' as const;\n\n/**\n * The evaluation score returned by the evaluator.\n *\n * @example 4.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_SCORE_VALUE = 'gen_ai.evaluation.score.value' as const;\n\n/**\n * The chat history provided to the model as an input.\n *\n * @example [\n * {\n * \"role\": \"user\",\n * \"parts\": [\n * {\n * \"type\": \"text\",\n * \"content\": \"Weather in Paris?\"\n * }\n * ]\n * },\n * {\n * \"role\": \"assistant\",\n * \"parts\": [\n * {\n * \"type\": \"tool_call\",\n * \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\",\n * \"name\": \"get_weather\",\n * \"arguments\": {\n * \"location\": \"Paris\"\n * }\n * }\n * ]\n * },\n * {\n * \"role\": \"tool\",\n * \"parts\": [\n * {\n * \"type\": \"tool_call_response\",\n * \"id\": \" call_VSPygqKTWdrhaFErNvMV18Yl\",\n * \"result\": \"rainy, 57°F\"\n * }\n * ]\n * }\n * ]\n *\n * @note Instrumentations **MUST** follow [Input messages JSON schema](/docs/gen-ai/gen-ai-input-messages.json).\n * When the attribute is recorded on events, it **MUST** be recorded in structured\n * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured\n * format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Messages **MUST** be provided in the order they were sent to the model.\n * Instrumentations **MAY** provide a way for users to filter or truncate\n * input messages.\n *\n * > [!Warning]\n * > This attribute is likely to contain sensitive information including user/PII data.\n *\n * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)\n * section for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_INPUT_MESSAGES = 'gen_ai.input.messages' as const;\n\n/**\n * Deprecated, use `gen_ai.output.type`.\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 `gen_ai.output.type`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT = 'gen_ai.openai.request.response_format' as const;\n\n/**\n * Enum value \"json_object\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n *\n * JSON object response format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT = \"json_object\" as const;\n\n/**\n * Enum value \"json_schema\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n *\n * JSON schema response format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA = \"json_schema\" as const;\n\n/**\n * Enum value \"text\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n *\n * Text response format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT = \"text\" as const;\n\n/**\n * Deprecated, use `gen_ai.request.seed`.\n *\n * @example 100\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 `gen_ai.request.seed`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_SEED = 'gen_ai.openai.request.seed' as const;\n\n/**\n * Deprecated, use `openai.request.service_tier`.\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 `openai.request.service_tier`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER = 'gen_ai.openai.request.service_tier' as const;\n\n/**\n * Enum value \"auto\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize scale tier credits until they are exhausted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = \"auto\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize the default scale tier.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * Deprecated, use `openai.response.service_tier`.\n *\n * @example scale\n * @example default\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 `openai.response.service_tier`.\n */\nexport const ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER = 'gen_ai.openai.response.service_tier' as const;\n\n/**\n * Deprecated, use `openai.response.system_fingerprint`.\n *\n * @example fp_44709d6fcb\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 `openai.response.system_fingerprint`.\n */\nexport const ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'gen_ai.openai.response.system_fingerprint' as const;\n\n/**\n * The name of the operation being performed.\n *\n * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name' as const;\n\n/**\n * Enum value \"chat\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_CHAT = \"chat\" as const;\n\n/**\n * Enum value \"create_agent\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Create GenAI agent\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT = \"create_agent\" as const;\n\n/**\n * Enum value \"embeddings\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS = \"embeddings\" as const;\n\n/**\n * Enum value \"execute_tool\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Execute a tool\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL = \"execute_tool\" as const;\n\n/**\n * Enum value \"generate_content\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_GENERATE_CONTENT = \"generate_content\" as const;\n\n/**\n * Enum value \"invoke_agent\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Invoke GenAI agent\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT = \"invoke_agent\" as const;\n\n/**\n * Enum value \"text_completion\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION = \"text_completion\" as const;\n\n/**\n * Messages returned by the model where each message represents a specific model response (choice, candidate).\n *\n * @example [\n * {\n * \"role\": \"assistant\",\n * \"parts\": [\n * {\n * \"type\": \"text\",\n * \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"\n * }\n * ],\n * \"finish_reason\": \"stop\"\n * }\n * ]\n *\n * @note Instrumentations **MUST** follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json)\n *\n * Each message represents a single output choice/candidate generated by\n * the model. Each message corresponds to exactly one generation\n * (choice/candidate) and vice versa - one choice cannot be split across\n * multiple messages or one message cannot contain parts from multiple choices.\n *\n * When the attribute is recorded on events, it **MUST** be recorded in structured\n * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured\n * format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Instrumentations **MAY** provide a way for users to filter or truncate\n * output messages.\n *\n * > [!Warning]\n * > This attribute is likely to contain sensitive information including user/PII data.\n *\n * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)\n * section for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OUTPUT_MESSAGES = 'gen_ai.output.messages' as const;\n\n/**\n * Represents the content type requested by the client.\n *\n * @note This attribute **SHOULD** be used when the client requests output of a specific type. The model may return zero or more outputs of this type.\n * This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file.\n * Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OUTPUT_TYPE = 'gen_ai.output.type' as const;\n\n/**\n * Enum value \"image\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * Image\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_IMAGE = \"image\" as const;\n\n/**\n * Enum value \"json\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * JSON object with known or unknown schema\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_JSON = \"json\" as const;\n\n/**\n * Enum value \"speech\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * Speech\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_SPEECH = \"speech\" as const;\n\n/**\n * Enum value \"text\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * Plain text\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_TEXT = \"text\" as const;\n\n/**\n * Deprecated, use Event API to report prompt contents.\n *\n * @example [{'role': 'user', 'content': 'What is the capital of France?'}]\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 */\nexport const ATTR_GEN_AI_PROMPT = 'gen_ai.prompt' as const;\n\n/**\n * The name of the prompt that uniquely identifies it.\n *\n * @example analyze-code\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_PROMPT_NAME = 'gen_ai.prompt.name' as const;\n\n/**\n * The Generative AI provider as identified by the client or server instrumentation.\n *\n * @note The attribute **SHOULD** be set based on the instrumentation's best\n * knowledge and may differ from the actual model provider.\n *\n * Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms\n * are accessible using the OpenAI REST API and corresponding client libraries,\n * but may proxy or host models from different providers.\n *\n * The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address`\n * attributes may help identify the actual system in use.\n *\n * The `gen_ai.provider.name` attribute acts as a discriminator that\n * identifies the GenAI telemetry format flavor specific to that provider\n * within GenAI semantic conventions.\n * It **SHOULD** be set consistently with provider-specific attributes and signals.\n * For example, GenAI spans, metrics, and events related to AWS Bedrock\n * should have the `gen_ai.provider.name` set to `aws.bedrock` and include\n * applicable `aws.bedrock.*` attributes and are not expected to include\n * `openai.*` attributes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_PROVIDER_NAME = 'gen_ai.provider.name' as const;\n\n/**\n * Enum value \"anthropic\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Anthropic](https://www.anthropic.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_ANTHROPIC = \"anthropic\" as const;\n\n/**\n * Enum value \"aws.bedrock\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [AWS Bedrock](https://aws.amazon.com/bedrock)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_AWS_BEDROCK = \"aws.bedrock\" as const;\n\n/**\n * Enum value \"azure.ai.inference\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * Azure AI Inference\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_INFERENCE = \"azure.ai.inference\" as const;\n\n/**\n * Enum value \"azure.ai.openai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_OPENAI = \"azure.ai.openai\" as const;\n\n/**\n * Enum value \"cohere\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Cohere](https://cohere.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_COHERE = \"cohere\" as const;\n\n/**\n * Enum value \"deepseek\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [DeepSeek](https://www.deepseek.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_DEEPSEEK = \"deepseek\" as const;\n\n/**\n * Enum value \"gcp.gemini\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Gemini](https://cloud.google.com/products/gemini)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEMINI = \"gcp.gemini\" as const;\n\n/**\n * Enum value \"gcp.gen_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * Any Google generative AI endpoint\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEN_AI = \"gcp.gen_ai\" as const;\n\n/**\n * Enum value \"gcp.vertex_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Vertex AI](https://cloud.google.com/vertex-ai)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GCP_VERTEX_AI = \"gcp.vertex_ai\" as const;\n\n/**\n * Enum value \"groq\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Groq](https://groq.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GROQ = \"groq\" as const;\n\n/**\n * Enum value \"ibm.watsonx.ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_IBM_WATSONX_AI = \"ibm.watsonx.ai\" as const;\n\n/**\n * Enum value \"mistral_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Mistral AI](https://mistral.ai/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_MISTRAL_AI = \"mistral_ai\" as const;\n\n/**\n * Enum value \"openai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [OpenAI](https://openai.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_OPENAI = \"openai\" as const;\n\n/**\n * Enum value \"perplexity\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Perplexity](https://www.perplexity.ai/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_PERPLEXITY = \"perplexity\" as const;\n\n/**\n * Enum value \"x_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [xAI](https://x.ai/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_X_AI = \"x_ai\" as const;\n\n/**\n * The target number of candidate completions to return.\n *\n * @example 3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_CHOICE_COUNT = 'gen_ai.request.choice.count' as const;\n\n/**\n * The encoding formats requested in an embeddings operation, if specified.\n *\n * @example [\"base64\"]\n * @example [\"float\", \"binary\"]\n *\n * @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = 'gen_ai.request.encoding_formats' as const;\n\n/**\n * The frequency penalty setting for the GenAI request.\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 */\nexport const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = 'gen_ai.request.frequency_penalty' as const;\n\n/**\n * The maximum number of tokens the model generates for a request.\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_MAX_TOKENS = 'gen_ai.request.max_tokens' as const;\n\n/**\n * The name of the GenAI model a request is being made to.\n *\n * @example \"gpt-4\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model' as const;\n\n/**\n * The presence penalty setting for the GenAI request.\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 */\nexport const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty' as const;\n\n/**\n * Requests with same seed value more likely to return same result.\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_SEED = 'gen_ai.request.seed' as const;\n\n/**\n * List of sequences that the model will use to stop generating further tokens.\n *\n * @example [\"forest\", \"lived\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = 'gen_ai.request.stop_sequences' as const;\n\n/**\n * The temperature setting for the GenAI request.\n *\n * @example 0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TEMPERATURE = 'gen_ai.request.temperature' as const;\n\n/**\n * The top_k sampling setting for the GenAI request.\n *\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TOP_K = 'gen_ai.request.top_k' as const;\n\n/**\n * The top_p sampling setting for the GenAI request.\n *\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TOP_P = 'gen_ai.request.top_p' as const;\n\n/**\n * Array of reasons the model stopped generating tokens, corresponding to each generation received.\n *\n * @example [\"stop\"]\n * @example [\"stop\", \"length\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_FINISH_REASONS = 'gen_ai.response.finish_reasons' as const;\n\n/**\n * The unique identifier for the completion.\n *\n * @example chatcmpl-123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_ID = 'gen_ai.response.id' as const;\n\n/**\n * The name of the model that generated the response.\n *\n * @example gpt-4-0613\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model' as const;\n\n/**\n * Deprecated, use `gen_ai.provider.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 `gen_ai.provider.name`.\n */\nexport const ATTR_GEN_AI_SYSTEM = 'gen_ai.system' as const;\n\n/**\n * Enum value \"anthropic\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Anthropic\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_ANTHROPIC = \"anthropic\" as const;\n\n/**\n * Enum value \"aws.bedrock\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * AWS Bedrock\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AWS_BEDROCK = \"aws.bedrock\" as const;\n\n/**\n * Enum value \"az.ai.inference\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure AI Inference\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `azure.ai.inference`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE = \"az.ai.inference\" as const;\n\n/**\n * Enum value \"az.ai.openai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure OpenAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `azure.ai.openai`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI = \"az.ai.openai\" as const;\n\n/**\n * Enum value \"azure.ai.inference\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure AI Inference\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZURE_AI_INFERENCE = \"azure.ai.inference\" as const;\n\n/**\n * Enum value \"azure.ai.openai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure OpenAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZURE_AI_OPENAI = \"azure.ai.openai\" as const;\n\n/**\n * Enum value \"cohere\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Cohere\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_COHERE = \"cohere\" as const;\n\n/**\n * Enum value \"deepseek\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * DeepSeek\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_DEEPSEEK = \"deepseek\" as const;\n\n/**\n * Enum value \"gcp.gemini\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Gemini\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GCP_GEMINI = \"gcp.gemini\" as const;\n\n/**\n * Enum value \"gcp.gen_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Any Google generative AI endpoint\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GCP_GEN_AI = \"gcp.gen_ai\" as const;\n\n/**\n * Enum value \"gcp.vertex_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Vertex AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GCP_VERTEX_AI = \"gcp.vertex_ai\" as const;\n\n/**\n * Enum value \"gemini\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Gemini\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `gcp.gemini`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GEMINI = \"gemini\" as const;\n\n/**\n * Enum value \"groq\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Groq\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GROQ = \"groq\" as const;\n\n/**\n * Enum value \"ibm.watsonx.ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * IBM Watsonx AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI = \"ibm.watsonx.ai\" as const;\n\n/**\n * Enum value \"mistral_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Mistral AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_MISTRAL_AI = \"mistral_ai\" as const;\n\n/**\n * Enum value \"openai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * OpenAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_OPENAI = \"openai\" as const;\n\n/**\n * Enum value \"perplexity\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Perplexity\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_PERPLEXITY = \"perplexity\" as const;\n\n/**\n * Enum value \"vertex_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Vertex AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `gcp.vertex_ai`.\n */\nexport const GEN_AI_SYSTEM_VALUE_VERTEX_AI = \"vertex_ai\" as const;\n\n/**\n * Enum value \"xai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * xAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_XAI = \"xai\" as const;\n\n/**\n * The system message or instructions provided to the GenAI model separately from the chat history.\n *\n * @example [\n * {\n * \"type\": \"text\",\n * \"content\": \"You are an Agent that greet users, always use greetings tool to respond\"\n * }\n * ]\n *\n * @example [\n * {\n * \"type\": \"text\",\n * \"content\": \"You are a language translator.\"\n * },\n * {\n * \"type\": \"text\",\n * \"content\": \"Your mission is to translate text in English to French.\"\n * }\n * ]\n *\n * @note This attribute **SHOULD** be used when the corresponding provider or API\n * allows to provide system instructions or messages separately from the\n * chat history.\n *\n * Instructions that are part of the chat history **SHOULD** be recorded in\n * `gen_ai.input.messages` attribute instead.\n *\n * Instrumentations **MUST** follow [System instructions JSON schema](/docs/gen-ai/gen-ai-system-instructions.json).\n *\n * When recorded on spans, it **MAY** be recorded as a JSON string if structured\n * format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Instrumentations **MAY** provide a way for users to filter or truncate\n * system instructions.\n *\n * > [!Warning]\n * > This attribute may contain sensitive information.\n *\n * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)\n * section for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_SYSTEM_INSTRUCTIONS = 'gen_ai.system_instructions' as const;\n\n/**\n * The type of token being counted.\n *\n * @example input\n * @example output\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOKEN_TYPE = 'gen_ai.token.type' as const;\n\n/**\n * Enum value \"input\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n *\n * Input tokens (prompt, input, etc.)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_INPUT = \"input\" as const;\n\n/**\n * Enum value \"output\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n *\n * Output tokens (completion, response, etc.)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `output`.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_COMPLETION = \"output\" as const;\n\n/**\n * Enum value \"output\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n *\n * Output tokens (completion, response, etc.)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_OUTPUT = \"output\" as const;\n\n/**\n * Parameters passed to the tool call.\n *\n * @example {\n * \"location\": \"San Francisco?\",\n * \"date\": \"2025-10-01\"\n * }\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n *\n * It's expected to be an object - in case a serialized string is available\n * to the instrumentation, the instrumentation **SHOULD** do the best effort to\n * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_CALL_ARGUMENTS = 'gen_ai.tool.call.arguments' as const;\n\n/**\n * The tool call identifier.\n *\n * @example call_mszuSIzqtI65i1wAUOE8w5H4\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_CALL_ID = 'gen_ai.tool.call.id' as const;\n\n/**\n * The result returned by the tool call (if any and if execution was successful).\n *\n * @example {\n * \"temperature_range\": {\n * \"high\": 75,\n * \"low\": 60\n * },\n * \"conditions\": \"sunny\"\n * }\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n *\n * It's expected to be an object - in case a serialized string is available\n * to the instrumentation, the instrumentation **SHOULD** do the best effort to\n * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_CALL_RESULT = 'gen_ai.tool.call.result' as const;\n\n/**\n * The list of source system tool definitions available to the GenAI agent or model.\n *\n * @example [\n * {\n * \"type\": \"function\",\n * \"name\": \"get_current_weather\",\n * \"description\": \"Get the current weather in a given location\",\n * \"parameters\": {\n * \"type\": \"object\",\n * \"properties\": {\n * \"location\": {\n * \"type\": \"string\",\n * \"description\": \"The city and state, e.g. San Francisco, CA\"\n * },\n * \"unit\": {\n * \"type\": \"string\",\n * \"enum\": [\n * \"celsius\",\n * \"fahrenheit\"\n * ]\n * }\n * },\n * \"required\": [\n * \"location\",\n * \"unit\"\n * ]\n * }\n * }\n * ]\n *\n * @note The value of this attribute matches source system tool definition format.\n *\n * It's expected to be an array of objects where each object represents a tool definition. In case a serialized string is available\n * to the instrumentation, the instrumentation **SHOULD** do the best effort to\n * deserialize it to an array. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Since this attribute could be large, it's NOT **RECOMMENDED** to populate\n * it by default. Instrumentations **MAY** provide a way to enable\n * populating this attribute.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_DEFINITIONS = 'gen_ai.tool.definitions' as const;\n\n/**\n * The tool description.\n *\n * @example Multiply two numbers\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_DESCRIPTION = 'gen_ai.tool.description' as const;\n\n/**\n * Name of the tool utilized by the agent.\n *\n * @example Flights\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_NAME = 'gen_ai.tool.name' as const;\n\n/**\n * Type of the tool utilized by the agent\n *\n * @example function\n * @example extension\n * @example datastore\n *\n * @note Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems.\n * Agent-side operations involve actions that are performed by the agent on the server or within the agent's controlled environment.\n * Function: A tool executed on the client-side, where the agent generates parameters for a predefined function, and the client executes the logic.\n * Client-side operations are actions taken on the user's end or within the client application.\n * Datastore: A tool used by the agent to access and query structured or unstructured external data for retrieval-augmented tasks or knowledge updates.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_TYPE = 'gen_ai.tool.type' as const;\n\n/**\n * Deprecated, use `gen_ai.usage.output_tokens` instead.\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 *\n * @deprecated Replaced by `gen_ai.usage.output_tokens`.\n */\nexport const ATTR_GEN_AI_USAGE_COMPLETION_TOKENS = 'gen_ai.usage.completion_tokens' as const;\n\n/**\n * The number of tokens used in the GenAI input (prompt).\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens' as const;\n\n/**\n * The number of tokens used in the GenAI response (completion).\n *\n * @example 180\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens' as const;\n\n/**\n * Deprecated, use `gen_ai.usage.input_tokens` instead.\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 *\n * @deprecated Replaced by `gen_ai.usage.input_tokens`.\n */\nexport const ATTR_GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens' as const;\n\n/**\n * Two-letter code representing continent’s name.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_CONTINENT_CODE = 'geo.continent.code' as const;\n\n/**\n * Enum value \"AF\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Africa\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_AF = \"AF\" as const;\n\n/**\n * Enum value \"AN\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Antarctica\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_AN = \"AN\" as const;\n\n/**\n * Enum value \"AS\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Asia\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_AS = \"AS\" as const;\n\n/**\n * Enum value \"EU\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Europe\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_EU = \"EU\" as const;\n\n/**\n * Enum value \"NA\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * North America\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_NA = \"NA\" as const;\n\n/**\n * Enum value \"OC\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Oceania\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_OC = \"OC\" as const;\n\n/**\n * Enum value \"SA\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * South America\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_SA = \"SA\" as const;\n\n/**\n * Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)).\n *\n * @example CA\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_COUNTRY_ISO_CODE = 'geo.country.iso_code' as const;\n\n/**\n * Locality name. Represents the name of a city, town, village, or similar populated place.\n *\n * @example Montreal\n * @example Berlin\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_LOCALITY_NAME = 'geo.locality.name' as const;\n\n/**\n * Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84).\n *\n * @example 45.505918\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_LOCATION_LAT = 'geo.location.lat' as const;\n\n/**\n * Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84).\n *\n * @example -73.61483\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_LOCATION_LON = 'geo.location.lon' as const;\n\n/**\n * Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.\n *\n * @example 94040\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_POSTAL_CODE = 'geo.postal_code' as const;\n\n/**\n * Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)).\n *\n * @example CA-QC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_REGION_ISO_CODE = 'geo.region.iso_code' as const;\n\n/**\n * The type of memory.\n *\n * @example other\n * @example stack\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GO_MEMORY_TYPE = 'go.memory.type' as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_GO_MEMORY_TYPE}.\n *\n * Memory used by the Go runtime, excluding other categories of memory usage described in this enumeration.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GO_MEMORY_TYPE_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"stack\" for attribute {@link ATTR_GO_MEMORY_TYPE}.\n *\n * Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GO_MEMORY_TYPE_VALUE_STACK = \"stack\" as const;\n\n/**\n * The GraphQL document being executed.\n *\n * @example \"query findBookById { bookById(id: ?) { name } }\"\n *\n * @note The value may be sanitized to exclude sensitive information.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_DOCUMENT = 'graphql.document' as const;\n\n/**\n * The name of the operation being executed.\n *\n * @example \"findBookById\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_OPERATION_NAME = 'graphql.operation.name' as const;\n\n/**\n * The type of the operation being executed.\n *\n * @example query\n * @example mutation\n * @example subscription\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_OPERATION_TYPE = 'graphql.operation.type' as const;\n\n/**\n * Enum value \"mutation\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n *\n * GraphQL mutation\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_MUTATION = \"mutation\" as const;\n\n/**\n * Enum value \"query\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n *\n * GraphQL query\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_QUERY = \"query\" as const;\n\n/**\n * Enum value \"subscription\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n *\n * GraphQL subscription\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION = \"subscription\" as const;\n\n/**\n * Unique identifier for the application\n *\n * @example 2daa2797-e42b-4624-9322-ec3f968df4da\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_APP_ID = 'heroku.app.id' as const;\n\n/**\n * Commit hash for the current release\n *\n * @example e6134959463efd8966b20e75b913cafe3f5ec\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_RELEASE_COMMIT = 'heroku.release.commit' as const;\n\n/**\n * Time and date the release was created\n *\n * @example 2022-10-23T18:00:42Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP = 'heroku.release.creation_timestamp' as const;\n\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 */\nexport const ATTR_HOST_ARCH = 'host.arch' as const;\n\n/**\n * Enum value \"amd64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * AMD64\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_AMD64 = \"amd64\" as const;\n\n/**\n * Enum value \"arm32\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * ARM32\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_ARM32 = \"arm32\" as const;\n\n/**\n * Enum value \"arm64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * ARM64\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_ARM64 = \"arm64\" as const;\n\n/**\n * Enum value \"ia64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * Itanium\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_IA64 = \"ia64\" as const;\n\n/**\n * Enum value \"ppc32\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * 32-bit PowerPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_PPC32 = \"ppc32\" as const;\n\n/**\n * Enum value \"ppc64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * 64-bit PowerPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_PPC64 = \"ppc64\" as const;\n\n/**\n * Enum value \"s390x\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * IBM z/Architecture\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_S390X = \"s390x\" as const;\n\n/**\n * Enum value \"x86\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * 32-bit x86\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_X86 = \"x86\" as const;\n\n/**\n * The amount of level 2 memory cache available to the processor (in Bytes).\n *\n * @example 12288000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_CACHE_L2_SIZE = 'host.cpu.cache.l2.size' as const;\n\n/**\n * Family or generation of the CPU.\n *\n * @example 6\n * @example PA-RISC 1.1e\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_FAMILY = 'host.cpu.family' as const;\n\n/**\n * Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family.\n *\n * @example 6\n * @example 9000/778/B180L\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_MODEL_ID = 'host.cpu.model.id' as const;\n\n/**\n * Model designation of the processor.\n *\n * @example 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_MODEL_NAME = 'host.cpu.model.name' as const;\n\n/**\n * Stepping or core revisions.\n *\n * @example 1\n * @example r1p1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_STEPPING = 'host.cpu.stepping' as const;\n\n/**\n * Processor manufacturer identifier. A maximum 12-character string.\n *\n * @example GenuineIntel\n *\n * @note [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_VENDOR_ID = 'host.cpu.vendor.id' as const;\n\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 */\nexport const ATTR_HOST_ID = 'host.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_ID = 'host.image.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_NAME = 'host.image.name' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_VERSION = 'host.image.version' as const;\n\n/**\n * Available IP addresses of the host, excluding loopback interfaces.\n *\n * @example [\"192.168.1.140\", \"fe80::abc2:4a28:737a:609e\"]\n *\n * @note IPv4 Addresses **MUST** be specified in dotted-quad notation. IPv6 addresses **MUST** be specified in the [RFC 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IP = 'host.ip' as const;\n\n/**\n * Available MAC addresses of the host, excluding loopback interfaces.\n *\n * @example [\"AC-DE-48-23-45-67\", \"AC-DE-48-23-45-67-01-9F\"]\n *\n * @note MAC Addresses **MUST** be represented in [IEEE RA hexadecimal form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): as hyphen-separated octets in uppercase hexadecimal form from most to least significant.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_MAC = 'host.mac' as const;\n\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 */\nexport const ATTR_HOST_NAME = 'host.name' as const;\n\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 */\nexport const ATTR_HOST_TYPE = 'host.type' as const;\n\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 */\nexport const ATTR_HTTP_CLIENT_IP = 'http.client_ip' as const;\n\n/**\n * State of the HTTP connection in the HTTP connection pool.\n *\n * @example active\n * @example idle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_CONNECTION_STATE = 'http.connection.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_HTTP_CONNECTION_STATE}.\n *\n * active state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_CONNECTION_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_HTTP_CONNECTION_STATE}.\n *\n * idle state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_CONNECTION_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Deprecated, use `network.protocol.name` and `network.protocol.version` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Split into `network.protocol.name` and `network.protocol.version`\n */\nexport const ATTR_HTTP_FLAVOR = 'http.flavor' as const;\n\n/**\n * Enum value \"1.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/1.0\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_0 = \"1.0\" as const;\n\n/**\n * Enum value \"1.1\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/1.1\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_1 = \"1.1\" as const;\n\n/**\n * Enum value \"2.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_2_0 = \"2.0\" as const;\n\n/**\n * Enum value \"3.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/3\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_3_0 = \"3.0\" as const;\n\n/**\n * Enum value \"QUIC\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * QUIC protocol.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_QUIC = \"QUIC\" as const;\n\n/**\n * Enum value \"SPDY\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * SPDY protocol.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_SPDY = \"SPDY\" as const;\n\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 */\nexport const ATTR_HTTP_HOST = 'http.host' as const;\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 */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n\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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\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 */\nexport const ATTR_HTTP_REQUEST_BODY_SIZE = 'http.request.body.size' as const;\n\n/**\n * Enum value \"QUERY\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * QUERY method.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_QUERY = \"QUERY\" as const;\n\n/**\n * The total size of the request in bytes. This should be the total number of bytes sent over the wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request body if any.\n *\n * @example 1437\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_REQUEST_SIZE = 'http.request.size' as const;\n\n/**\n * Deprecated, use `http.request.header.content-length` 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.content-length`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed' as const;\n\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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\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 */\nexport const ATTR_HTTP_RESPONSE_BODY_SIZE = 'http.response.body.size' as const;\n\n/**\n * The total size of the response in bytes. This should be the total number of bytes sent over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and response body and trailers if any.\n *\n * @example 1437\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_RESPONSE_SIZE = 'http.response.size' as const;\n\n/**\n * Deprecated, use `http.response.header.content-length` 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.content-length`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length' as const;\n\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 Replaced by `http.response.body.size`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed' as const;\n\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`.\n */\nexport const ATTR_HTTP_SCHEME = 'http.scheme' as const;\n\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 */\nexport const ATTR_HTTP_SERVER_NAME = 'http.server_name' as const;\n\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 */\nexport const ATTR_HTTP_STATUS_CODE = 'http.status_code' as const;\n\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 */\nexport const ATTR_HTTP_TARGET = 'http.target' as const;\n\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 */\nexport const ATTR_HTTP_URL = 'http.url' as const;\n\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 */\nexport const ATTR_HTTP_USER_AGENT = 'http.user_agent' as const;\n\n/**\n * Design capacity in Watts-hours or Amper-hours\n *\n * @example 9.3Ah\n * @example 50Wh\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BATTERY_CAPACITY = 'hw.battery.capacity' as const;\n\n/**\n * Battery [chemistry](https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html), e.g. Lithium-Ion, Nickel-Cadmium, etc.\n *\n * @example Li-ion\n * @example NiMH\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BATTERY_CHEMISTRY = 'hw.battery.chemistry' as const;\n\n/**\n * The current state of the battery\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BATTERY_STATE = 'hw.battery.state' as const;\n\n/**\n * Enum value \"charging\" for attribute {@link ATTR_HW_BATTERY_STATE}.\n *\n * Charging\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_BATTERY_STATE_VALUE_CHARGING = \"charging\" as const;\n\n/**\n * Enum value \"discharging\" for attribute {@link ATTR_HW_BATTERY_STATE}.\n *\n * Discharging\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_BATTERY_STATE_VALUE_DISCHARGING = \"discharging\" as const;\n\n/**\n * BIOS version of the hardware component\n *\n * @example 1.2.3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BIOS_VERSION = 'hw.bios_version' as const;\n\n/**\n * Driver version for the hardware component\n *\n * @example 10.2.1-3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_DRIVER_VERSION = 'hw.driver_version' as const;\n\n/**\n * Type of the enclosure (useful for modular systems)\n *\n * @example Computer\n * @example Storage\n * @example Switch\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_ENCLOSURE_TYPE = 'hw.enclosure.type' as const;\n\n/**\n * Firmware version of the hardware component\n *\n * @example 2.0.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_FIRMWARE_VERSION = 'hw.firmware_version' as const;\n\n/**\n * Type of task the GPU is performing\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_GPU_TASK = 'hw.gpu.task' as const;\n\n/**\n * Enum value \"decoder\" for attribute {@link ATTR_HW_GPU_TASK}.\n *\n * Decoder\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_GPU_TASK_VALUE_DECODER = \"decoder\" as const;\n\n/**\n * Enum value \"encoder\" for attribute {@link ATTR_HW_GPU_TASK}.\n *\n * Encoder\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_GPU_TASK_VALUE_ENCODER = \"encoder\" as const;\n\n/**\n * Enum value \"general\" for attribute {@link ATTR_HW_GPU_TASK}.\n *\n * General\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_GPU_TASK_VALUE_GENERAL = \"general\" as const;\n\n/**\n * An identifier for the hardware component, unique within the monitored host\n *\n * @example win32battery_battery_testsysa33_1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_ID = 'hw.id' as const;\n\n/**\n * Type of limit for hardware components\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_LIMIT_TYPE = 'hw.limit_type' as const;\n\n/**\n * Enum value \"critical\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Critical\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_CRITICAL = \"critical\" as const;\n\n/**\n * Enum value \"degraded\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_DEGRADED = \"degraded\" as const;\n\n/**\n * Enum value \"high.critical\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * High Critical\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_HIGH_CRITICAL = \"high.critical\" as const;\n\n/**\n * Enum value \"high.degraded\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * High Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_HIGH_DEGRADED = \"high.degraded\" as const;\n\n/**\n * Enum value \"low.critical\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Low Critical\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_LOW_CRITICAL = \"low.critical\" as const;\n\n/**\n * Enum value \"low.degraded\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Low Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_LOW_DEGRADED = \"low.degraded\" as const;\n\n/**\n * Enum value \"max\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Maximum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_MAX = \"max\" as const;\n\n/**\n * Enum value \"throttled\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Throttled\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_THROTTLED = \"throttled\" as const;\n\n/**\n * Enum value \"turbo\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Turbo\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_TURBO = \"turbo\" as const;\n\n/**\n * RAID Level of the logical disk\n *\n * @example RAID0+1\n * @example RAID5\n * @example RAID10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_LOGICAL_DISK_RAID_LEVEL = 'hw.logical_disk.raid_level' as const;\n\n/**\n * State of the logical disk space usage\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_LOGICAL_DISK_STATE = 'hw.logical_disk.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}.\n *\n * Free\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LOGICAL_DISK_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}.\n *\n * Used\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LOGICAL_DISK_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Type of the memory module\n *\n * @example DDR4\n * @example DDR5\n * @example LPDDR5\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_MEMORY_TYPE = 'hw.memory.type' as const;\n\n/**\n * Descriptive model name of the hardware component\n *\n * @example PERC H740P\n * @example Intel(R) Core(TM) i7-10700K\n * @example Dell XPS 15 Battery\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_MODEL = 'hw.model' as const;\n\n/**\n * An easily-recognizable name for the hardware component\n *\n * @example eth0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_NAME = 'hw.name' as const;\n\n/**\n * Logical addresses of the adapter (e.g. IP address, or WWPN)\n *\n * @example [\"172.16.8.21\", \"57.11.193.42\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_NETWORK_LOGICAL_ADDRESSES = 'hw.network.logical_addresses' as const;\n\n/**\n * Physical address of the adapter (e.g. MAC address, or WWNN)\n *\n * @example 00-90-F5-E9-7B-36\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_NETWORK_PHYSICAL_ADDRESS = 'hw.network.physical_address' as const;\n\n/**\n * Unique identifier of the parent component (typically the `hw.id` attribute of the enclosure, or disk controller)\n *\n * @example dellStorage_perc_0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PARENT = 'hw.parent' as const;\n\n/**\n * [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute of the physical disk\n *\n * @example Spin Retry Count\n * @example Seek Error Rate\n * @example Raw Read Error Rate\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PHYSICAL_DISK_SMART_ATTRIBUTE = 'hw.physical_disk.smart_attribute' as const;\n\n/**\n * State of the physical disk endurance utilization\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PHYSICAL_DISK_STATE = 'hw.physical_disk.state' as const;\n\n/**\n * Enum value \"remaining\" for attribute {@link ATTR_HW_PHYSICAL_DISK_STATE}.\n *\n * Remaining\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_PHYSICAL_DISK_STATE_VALUE_REMAINING = \"remaining\" as const;\n\n/**\n * Type of the physical disk\n *\n * @example HDD\n * @example SSD\n * @example 10K\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PHYSICAL_DISK_TYPE = 'hw.physical_disk.type' as const;\n\n/**\n * Location of the sensor\n *\n * @example cpu0\n * @example ps1\n * @example INLET\n * @example CPU0_DIE\n * @example AMBIENT\n * @example MOTHERBOARD\n * @example PS0 V3_3\n * @example MAIN_12V\n * @example CPU_VCORE\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_SENSOR_LOCATION = 'hw.sensor_location' as const;\n\n/**\n * Serial number of the hardware component\n *\n * @example CNFCP0123456789\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_SERIAL_NUMBER = 'hw.serial_number' as const;\n\n/**\n * The current state of the component\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_STATE = 'hw.state' as const;\n\n/**\n * Enum value \"degraded\" for attribute {@link ATTR_HW_STATE}.\n *\n * Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_DEGRADED = \"degraded\" as const;\n\n/**\n * Enum value \"failed\" for attribute {@link ATTR_HW_STATE}.\n *\n * Failed\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_FAILED = \"failed\" as const;\n\n/**\n * Enum value \"needs_cleaning\" for attribute {@link ATTR_HW_STATE}.\n *\n * Needs Cleaning\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_NEEDS_CLEANING = \"needs_cleaning\" as const;\n\n/**\n * Enum value \"ok\" for attribute {@link ATTR_HW_STATE}.\n *\n * OK\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_OK = \"ok\" as const;\n\n/**\n * Enum value \"predicted_failure\" for attribute {@link ATTR_HW_STATE}.\n *\n * Predicted Failure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_PREDICTED_FAILURE = \"predicted_failure\" as const;\n\n/**\n * Type of tape drive operation\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_TAPE_DRIVE_OPERATION_TYPE = 'hw.tape_drive.operation_type' as const;\n\n/**\n * Enum value \"clean\" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}.\n *\n * Clean\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_CLEAN = \"clean\" as const;\n\n/**\n * Enum value \"mount\" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}.\n *\n * Mount\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_MOUNT = \"mount\" as const;\n\n/**\n * Enum value \"unmount\" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}.\n *\n * Unmount\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_UNMOUNT = \"unmount\" as const;\n\n/**\n * Type of the component\n *\n * @note Describes the category of the hardware component for which `hw.state` is being reported. For example, `hw.type=temperature` along with `hw.state=degraded` would indicate that the temperature of the hardware component has been reported as `degraded`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_TYPE = 'hw.type' as const;\n\n/**\n * Enum value \"battery\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Battery\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_BATTERY = \"battery\" as const;\n\n/**\n * Enum value \"cpu\" for attribute {@link ATTR_HW_TYPE}.\n *\n * CPU\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_CPU = \"cpu\" as const;\n\n/**\n * Enum value \"disk_controller\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Disk controller\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_DISK_CONTROLLER = \"disk_controller\" as const;\n\n/**\n * Enum value \"enclosure\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Enclosure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_ENCLOSURE = \"enclosure\" as const;\n\n/**\n * Enum value \"fan\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Fan\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_FAN = \"fan\" as const;\n\n/**\n * Enum value \"gpu\" for attribute {@link ATTR_HW_TYPE}.\n *\n * GPU\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_GPU = \"gpu\" as const;\n\n/**\n * Enum value \"logical_disk\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Logical disk\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_LOGICAL_DISK = \"logical_disk\" as const;\n\n/**\n * Enum value \"memory\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Memory\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_MEMORY = \"memory\" as const;\n\n/**\n * Enum value \"network\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Network\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_NETWORK = \"network\" as const;\n\n/**\n * Enum value \"physical_disk\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Physical disk\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_PHYSICAL_DISK = \"physical_disk\" as const;\n\n/**\n * Enum value \"power_supply\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Power supply\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_POWER_SUPPLY = \"power_supply\" as const;\n\n/**\n * Enum value \"tape_drive\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Tape drive\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_TAPE_DRIVE = \"tape_drive\" as const;\n\n/**\n * Enum value \"temperature\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Temperature\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_TEMPERATURE = \"temperature\" as const;\n\n/**\n * Enum value \"voltage\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Voltage\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_VOLTAGE = \"voltage\" as const;\n\n/**\n * Vendor name of the hardware component\n *\n * @example Dell\n * @example HP\n * @example Intel\n * @example AMD\n * @example LSI\n * @example Lenovo\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_VENDOR = 'hw.vendor' as const;\n\n/**\n * This attribute represents the state of the application.\n *\n * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_IOS_APP_STATE = 'ios.app.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Enum value \"inactive\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_INACTIVE = \"inactive\" as const;\n\n/**\n * Enum value \"terminate\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_TERMINATE = \"terminate\" as const;\n\n/**\n * Deprecated. Use the `ios.app.state` attribute.\n *\n * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived.\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 `ios.app.state`.\n */\nexport const ATTR_IOS_STATE = 'ios.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Enum value \"inactive\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_INACTIVE = \"inactive\" as const;\n\n/**\n * Enum value \"terminate\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_TERMINATE = \"terminate\" as const;\n\n/**\n * Protocol version, as specified in the `jsonrpc` property of the request and its corresponding response.\n *\n * @example 2.0\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JSONRPC_PROTOCOL_VERSION = 'jsonrpc.protocol.version' as const;\n\n/**\n * A string representation of the `id` property of the request and its corresponding response.\n *\n * @example 10\n * @example request-7\n *\n * @note Under the [JSON-RPC specification](https://www.jsonrpc.org/specification), the `id` property may be a string, number, null, or omitted entirely. When omitted, the request is treated as a notification. Using `null` is not equivalent to omitting the `id`, but it is discouraged.\n * Instrumentations **SHOULD NOT** capture this attribute when the `id` is `null` or omitted.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JSONRPC_REQUEST_ID = 'jsonrpc.request.id' as const;\n\n/**\n * Name of the buffer pool.\n *\n * @example mapped\n * @example direct\n *\n * @note Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JVM_BUFFER_POOL_NAME = 'jvm.buffer.pool.name' as const;\n\n/**\n * Name of the garbage collector cause.\n *\n * @example System.gc()\n * @example Allocation Failure\n *\n * @note Garbage collector cause is generally obtained via [GarbageCollectionNotificationInfo#getGcCause()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcCause()).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JVM_GC_CAUSE = 'jvm.gc.cause' as const;\n\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 */\nexport const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name' as const;\n\n/**\n * A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note K8s doesn't have support for obtaining a cluster ID. If this is ever\n * added, we will recommend collecting the `k8s.cluster.uid` through the\n * official APIs. In the meantime, we are able to use the `uid` of the\n * `kube-system` namespace as a proxy for cluster ID. Read on for the\n * rationale.\n *\n * Every object created in a K8s cluster is assigned a distinct UID. The\n * `kube-system` namespace is used by Kubernetes itself and will exist\n * for the lifetime of the cluster. Using the `uid` of the `kube-system`\n * namespace is a reasonable proxy for the K8s ClusterID as it will only\n * change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are\n * UUIDs as standardized by\n * [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html).\n * Which states:\n *\n * > If generated according to one of the mechanisms defined in Rec.\n * > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be\n * > different from all other UUIDs generated before 3603 A.D., or is\n * > extremely likely to be different (depending on the mechanism chosen).\n *\n * Therefore, UIDs between clusters should be extremely unlikely to\n * conflict.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CLUSTER_UID = 'k8s.cluster.uid' as const;\n\n/**\n * The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`).\n *\n * @example redis\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_NAME = 'k8s.container.name' as const;\n\n/**\n * Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart_count' as const;\n\n/**\n * Last terminated reason of the Container.\n *\n * @example Evicted\n * @example Error\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON = 'k8s.container.status.last_terminated_reason' as const;\n\n/**\n * The reason for the container state. Corresponds to the `reason` field of the: [K8s ContainerStateWaiting](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core) or [K8s ContainerStateTerminated](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core)\n *\n * @example ContainerCreating\n * @example CrashLoopBackOff\n * @example CreateContainerConfigError\n * @example ErrImagePull\n * @example ImagePullBackOff\n * @example OOMKilled\n * @example Completed\n * @example Error\n * @example ContainerCannotRun\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason' as const;\n\n/**\n * Enum value \"Completed\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container has completed execution.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_COMPLETED = \"Completed\" as const;\n\n/**\n * Enum value \"ContainerCannotRun\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container cannot run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CANNOT_RUN = \"ContainerCannotRun\" as const;\n\n/**\n * Enum value \"ContainerCreating\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container is being created.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CREATING = \"ContainerCreating\" as const;\n\n/**\n * Enum value \"CrashLoopBackOff\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container is in a crash loop back off state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CRASH_LOOP_BACK_OFF = \"CrashLoopBackOff\" as const;\n\n/**\n * Enum value \"CreateContainerConfigError\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * There was an error creating the container configuration.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CREATE_CONTAINER_CONFIG_ERROR = \"CreateContainerConfigError\" as const;\n\n/**\n * Enum value \"ErrImagePull\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * There was an error pulling the container image.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_ERR_IMAGE_PULL = \"ErrImagePull\" as const;\n\n/**\n * Enum value \"Error\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * There was an error with the container.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_ERROR = \"Error\" as const;\n\n/**\n * Enum value \"ImagePullBackOff\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container image pull is in back off state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_IMAGE_PULL_BACK_OFF = \"ImagePullBackOff\" as const;\n\n/**\n * Enum value \"OOMKilled\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container was killed due to out of memory.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_OOM_KILLED = \"OOMKilled\" as const;\n\n/**\n * The state of the container. [K8s ContainerState](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core)\n *\n * @example terminated\n * @example running\n * @example waiting\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state' as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}.\n *\n * The container is running.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_STATE_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}.\n *\n * The container has terminated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}.\n *\n * The container is waiting.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_STATE_VALUE_WAITING = \"waiting\" as const;\n\n/**\n * The cronjob annotation placed on the CronJob, the `` being the annotation name, the value being the annotation value.\n *\n * @example 4\n * @example\n *\n * @note Examples:\n *\n * - An annotation `retries` with value `4` **SHOULD** be recorded as the\n * `k8s.cronjob.annotation.retries` attribute with value `\"4\"`.\n * - An annotation `data` with empty string value **SHOULD** be recorded as\n * the `k8s.cronjob.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_ANNOTATION = (key: string) => `k8s.cronjob.annotation.${key}`;\n\n/**\n * The label placed on the CronJob, the `` being the label name, the value being the label value.\n *\n * @example weekly\n * @example\n *\n * @note Examples:\n *\n * - A label `type` with value `weekly` **SHOULD** be recorded as the\n * `k8s.cronjob.label.type` attribute with value `\"weekly\"`.\n * - A label `automated` with empty string value **SHOULD** be recorded as\n * the `k8s.cronjob.label.automated` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_LABEL = (key: string) => `k8s.cronjob.label.${key}`;\n\n/**\n * The name of the CronJob.\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 */\nexport const ATTR_K8S_CRONJOB_NAME = 'k8s.cronjob.name' as const;\n\n/**\n * The UID of the CronJob.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_UID = 'k8s.cronjob.uid' as const;\n\n/**\n * The annotation placed on the DaemonSet, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `1` **SHOULD** be recorded\n * as the `k8s.daemonset.annotation.replicas` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.daemonset.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_ANNOTATION = (key: string) => `k8s.daemonset.annotation.${key}`;\n\n/**\n * The label placed on the DaemonSet, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `app` with value `guestbook` **SHOULD** be recorded\n * as the `k8s.daemonset.label.app` attribute with value `\"guestbook\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.daemonset.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_LABEL = (key: string) => `k8s.daemonset.label.${key}`;\n\n/**\n * The name of the DaemonSet.\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 */\nexport const ATTR_K8S_DAEMONSET_NAME = 'k8s.daemonset.name' as const;\n\n/**\n * The UID of the DaemonSet.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_UID = 'k8s.daemonset.uid' as const;\n\n/**\n * The annotation placed on the Deployment, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `1` **SHOULD** be recorded\n * as the `k8s.deployment.annotation.replicas` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.deployment.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_ANNOTATION = (key: string) => `k8s.deployment.annotation.${key}`;\n\n/**\n * The label placed on the Deployment, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `0` **SHOULD** be recorded\n * as the `k8s.deployment.label.app` attribute with value `\"guestbook\"`.\n * - A label `injected` with empty string value **SHOULD** be recorded as\n * the `k8s.deployment.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_LABEL = (key: string) => `k8s.deployment.label.${key}`;\n\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 */\nexport const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' as const;\n\n/**\n * The UID of the Deployment.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid' as const;\n\n/**\n * The type of metric source for the horizontal pod autoscaler.\n *\n * @example Resource\n * @example ContainerResource\n *\n * @note This attribute reflects the `type` field of spec.metrics[] in the HPA.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_METRIC_TYPE = 'k8s.hpa.metric.type' as const;\n\n/**\n * The name of the horizontal pod autoscaler.\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 */\nexport const ATTR_K8S_HPA_NAME = 'k8s.hpa.name' as const;\n\n/**\n * The API version of the target resource to scale for the HorizontalPodAutoscaler.\n *\n * @example apps/v1\n * @example autoscaling/v2\n *\n * @note This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_SCALETARGETREF_API_VERSION = 'k8s.hpa.scaletargetref.api_version' as const;\n\n/**\n * The kind of the target resource to scale for the HorizontalPodAutoscaler.\n *\n * @example Deployment\n * @example StatefulSet\n *\n * @note This maps to the `kind` field in the `scaleTargetRef` of the HPA spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_SCALETARGETREF_KIND = 'k8s.hpa.scaletargetref.kind' as const;\n\n/**\n * The name of the target resource to scale for the HorizontalPodAutoscaler.\n *\n * @example my-deployment\n * @example my-statefulset\n *\n * @note This maps to the `name` field in the `scaleTargetRef` of the HPA spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_SCALETARGETREF_NAME = 'k8s.hpa.scaletargetref.name' as const;\n\n/**\n * The UID of the horizontal pod autoscaler.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_UID = 'k8s.hpa.uid' as const;\n\n/**\n * The size (identifier) of the K8s huge page.\n *\n * @example 2Mi\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HUGEPAGE_SIZE = 'k8s.hugepage.size' as const;\n\n/**\n * The annotation placed on the Job, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `number` with value `1` **SHOULD** be recorded\n * as the `k8s.job.annotation.number` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.job.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_ANNOTATION = (key: string) => `k8s.job.annotation.${key}`;\n\n/**\n * The label placed on the Job, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example ci\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `jobtype` with value `ci` **SHOULD** be recorded\n * as the `k8s.job.label.jobtype` attribute with value `\"ci\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.job.label.automated` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_LABEL = (key: string) => `k8s.job.label.${key}`;\n\n/**\n * The name of the Job.\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 */\nexport const ATTR_K8S_JOB_NAME = 'k8s.job.name' as const;\n\n/**\n * The UID of the Job.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_UID = 'k8s.job.uid' as const;\n\n/**\n * The annotation placed on the Namespace, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 0\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `ttl` with value `0` **SHOULD** be recorded\n * as the `k8s.namespace.annotation.ttl` attribute with value `\"0\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.namespace.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_ANNOTATION = (key: string) => `k8s.namespace.annotation.${key}`;\n\n/**\n * The label placed on the Namespace, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example default\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `kubernetes.io/metadata.name` with value `default` **SHOULD** be recorded\n * as the `k8s.namespace.label.kubernetes.io/metadata.name` attribute with value `\"default\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.namespace.label.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_LABEL = (key: string) => `k8s.namespace.label.${key}`;\n\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 */\nexport const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name' as const;\n\n/**\n * The phase of the K8s namespace.\n *\n * @example active\n * @example terminating\n *\n * @note This attribute aligns with the `phase` field of the\n * [K8s NamespaceStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}.\n *\n * Active namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NAMESPACE_PHASE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"terminating\" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}.\n *\n * Terminating namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NAMESPACE_PHASE_VALUE_TERMINATING = \"terminating\" as const;\n\n/**\n * The annotation placed on the Node, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 0\n * @example\n *\n * @note Examples:\n *\n * - An annotation `node.alpha.kubernetes.io/ttl` with value `0` **SHOULD** be recorded as\n * the `k8s.node.annotation.node.alpha.kubernetes.io/ttl` attribute with value `\"0\"`.\n * - An annotation `data` with empty string value **SHOULD** be recorded as\n * the `k8s.node.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_ANNOTATION = (key: string) => `k8s.node.annotation.${key}`;\n\n/**\n * The status of the condition, one of True, False, Unknown.\n *\n * @example true\n * @example false\n * @example unknown\n *\n * @note This attribute aligns with the `status` field of the\n * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status' as const;\n\n/**\n * Enum value \"false\" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_FALSE = \"false\" as const;\n\n/**\n * Enum value \"true\" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_TRUE = \"true\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_UNKNOWN = \"unknown\" as const;\n\n/**\n * The condition type of a K8s Node.\n *\n * @example Ready\n * @example DiskPressure\n *\n * @note K8s Node conditions as described\n * by [K8s documentation](https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition).\n *\n * This attribute aligns with the `type` field of the\n * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core)\n *\n * The set of possible values is not limited to those listed here. Managed Kubernetes environments,\n * or custom controllers **MAY** introduce additional node condition types.\n * When this occurs, the exact value as reported by the Kubernetes API **SHOULD** be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_CONDITION_TYPE = 'k8s.node.condition.type' as const;\n\n/**\n * Enum value \"DiskPressure\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * Pressure exists on the disk size—that is, if the disk capacity is low\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_DISK_PRESSURE = \"DiskPressure\" as const;\n\n/**\n * Enum value \"MemoryPressure\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * Pressure exists on the node memory—that is, if the node memory is low\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_MEMORY_PRESSURE = \"MemoryPressure\" as const;\n\n/**\n * Enum value \"NetworkUnavailable\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * The network for the node is not correctly configured\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_NETWORK_UNAVAILABLE = \"NetworkUnavailable\" as const;\n\n/**\n * Enum value \"PIDPressure\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * Pressure exists on the processes—that is, if there are too many processes on the node\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_PID_PRESSURE = \"PIDPressure\" as const;\n\n/**\n * Enum value \"Ready\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * The node is healthy and ready to accept pods\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_READY = \"Ready\" as const;\n\n/**\n * The label placed on the Node, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example arm64\n * @example\n *\n * @note Examples:\n *\n * - A label `kubernetes.io/arch` with value `arm64` **SHOULD** be recorded\n * as the `k8s.node.label.kubernetes.io/arch` attribute with value `\"arm64\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.node.label.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_LABEL = (key: string) => `k8s.node.label.${key}`;\n\n/**\n * The name of the Node.\n *\n * @example node-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_NAME = 'k8s.node.name' as const;\n\n/**\n * The UID of the Node.\n *\n * @example 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_UID = 'k8s.node.uid' as const;\n\n/**\n * The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value.\n *\n * @example true\n * @example x64\n * @example\n *\n * @note Examples:\n *\n * - An annotation `kubernetes.io/enforce-mountable-secrets` with value `true` **SHOULD** be recorded as\n * the `k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets` attribute with value `\"true\"`.\n * - An annotation `mycompany.io/arch` with value `x64` **SHOULD** be recorded as\n * the `k8s.pod.annotation.mycompany.io/arch` attribute with value `\"x64\"`.\n * - An annotation `data` with empty string value **SHOULD** be recorded as\n * the `k8s.pod.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_ANNOTATION = (key: string) => `k8s.pod.annotation.${key}`;\n\n/**\n * Specifies the hostname of the Pod.\n *\n * @example collector-gateway\n *\n * @note The K8s Pod spec has an optional hostname field, which can be used to specify a hostname.\n * Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field)\n * for more information about this field.\n *\n * This attribute aligns with the `hostname` field of the\n * [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_HOSTNAME = 'k8s.pod.hostname' as const;\n\n/**\n * IP address allocated to the Pod.\n *\n * @example 172.18.0.2\n *\n * @note This attribute aligns with the `podIP` field of the\n * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_IP = 'k8s.pod.ip' as const;\n\n/**\n * The label placed on the Pod, the `` being the label name, the value being the label value.\n *\n * @example my-app\n * @example x64\n * @example\n *\n * @note Examples:\n *\n * - A label `app` with value `my-app` **SHOULD** be recorded as\n * the `k8s.pod.label.app` attribute with value `\"my-app\"`.\n * - A label `mycompany.io/arch` with value `x64` **SHOULD** be recorded as\n * the `k8s.pod.label.mycompany.io/arch` attribute with value `\"x64\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.pod.label.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_LABEL = (key: string) => `k8s.pod.label.${key}`;\n\n/**\n * Deprecated, use `k8s.pod.label` instead.\n *\n * @example my-app\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 `k8s.pod.label`.\n */\nexport const ATTR_K8S_POD_LABELS = (key: string) => `k8s.pod.labels.${key}`;\n\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 */\nexport const ATTR_K8S_POD_NAME = 'k8s.pod.name' as const;\n\n/**\n * The start timestamp of the Pod.\n *\n * @example 2025-12-04T08:41:03Z\n *\n * @note Date and time at which the object was acknowledged by the Kubelet.\n * This is before the Kubelet pulled the container image(s) for the pod.\n *\n * This attribute aligns with the `startTime` field of the\n * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core),\n * in ISO 8601 (RFC 3339 compatible) format.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_START_TIME = 'k8s.pod.start_time' as const;\n\n/**\n * The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core)\n *\n * @example Pending\n * @example Running\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase' as const;\n\n/**\n * Enum value \"Failed\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * All containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_FAILED = \"Failed\" as const;\n\n/**\n * Enum value \"Pending\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * The pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_PENDING = \"Pending\" as const;\n\n/**\n * Enum value \"Running\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * The pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_RUNNING = \"Running\" as const;\n\n/**\n * Enum value \"Succeeded\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * All containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_SUCCEEDED = \"Succeeded\" as const;\n\n/**\n * Enum value \"Unknown\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_UNKNOWN = \"Unknown\" as const;\n\n/**\n * The reason for the pod state. Corresponds to the `reason` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core)\n *\n * @example Evicted\n * @example NodeAffinity\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason' as const;\n\n/**\n * Enum value \"Evicted\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The pod is evicted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_EVICTED = \"Evicted\" as const;\n\n/**\n * Enum value \"NodeAffinity\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The pod is in a status because of its node affinity\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_NODE_AFFINITY = \"NodeAffinity\" as const;\n\n/**\n * Enum value \"NodeLost\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The reason on a pod when its state cannot be confirmed as kubelet is unresponsive on the node it is (was) running.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_NODE_LOST = \"NodeLost\" as const;\n\n/**\n * Enum value \"Shutdown\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The node is shutdown\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_SHUTDOWN = \"Shutdown\" as const;\n\n/**\n * Enum value \"UnexpectedAdmissionError\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The pod was rejected admission to the node because of an error during admission that could not be categorized.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_UNEXPECTED_ADMISSION_ERROR = \"UnexpectedAdmissionError\" as const;\n\n/**\n * The UID of the Pod.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_UID = 'k8s.pod.uid' as const;\n\n/**\n * The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 0\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `0` **SHOULD** be recorded\n * as the `k8s.replicaset.annotation.replicas` attribute with value `\"0\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.replicaset.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_ANNOTATION = (key: string) => `k8s.replicaset.annotation.${key}`;\n\n/**\n * The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `app` with value `guestbook` **SHOULD** be recorded\n * as the `k8s.replicaset.label.app` attribute with value `\"guestbook\"`.\n * - A label `injected` with empty string value **SHOULD** be recorded as\n * the `k8s.replicaset.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_LABEL = (key: string) => `k8s.replicaset.label.${key}`;\n\n/**\n * The name of the ReplicaSet.\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 */\nexport const ATTR_K8S_REPLICASET_NAME = 'k8s.replicaset.name' as const;\n\n/**\n * The UID of the ReplicaSet.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_UID = 'k8s.replicaset.uid' as const;\n\n/**\n * The name of the replication controller.\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 */\nexport const ATTR_K8S_REPLICATIONCONTROLLER_NAME = 'k8s.replicationcontroller.name' as const;\n\n/**\n * The UID of the replication controller.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICATIONCONTROLLER_UID = 'k8s.replicationcontroller.uid' as const;\n\n/**\n * The name of the resource quota.\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 */\nexport const ATTR_K8S_RESOURCEQUOTA_NAME = 'k8s.resourcequota.name' as const;\n\n/**\n * The name of the K8s resource a resource quota defines.\n *\n * @example count/replicationcontrollers\n *\n * @note The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_RESOURCEQUOTA_RESOURCE_NAME = 'k8s.resourcequota.resource_name' as const;\n\n/**\n * The UID of the resource quota.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_RESOURCEQUOTA_UID = 'k8s.resourcequota.uid' as const;\n\n/**\n * The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `1` **SHOULD** be recorded\n * as the `k8s.statefulset.annotation.replicas` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.statefulset.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_ANNOTATION = (key: string) => `k8s.statefulset.annotation.${key}`;\n\n/**\n * The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `0` **SHOULD** be recorded\n * as the `k8s.statefulset.label.app` attribute with value `\"guestbook\"`.\n * - A label `injected` with empty string value **SHOULD** be recorded as\n * the `k8s.statefulset.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_LABEL = (key: string) => `k8s.statefulset.label.${key}`;\n\n/**\n * The name of the StatefulSet.\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 */\nexport const ATTR_K8S_STATEFULSET_NAME = 'k8s.statefulset.name' as const;\n\n/**\n * The UID of the StatefulSet.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_UID = 'k8s.statefulset.uid' as const;\n\n/**\n * The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object.\n *\n * @example gold.storageclass.storage.k8s.io\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STORAGECLASS_NAME = 'k8s.storageclass.name' as const;\n\n/**\n * The name of the K8s volume.\n *\n * @example volume0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_VOLUME_NAME = 'k8s.volume.name' as const;\n\n/**\n * The type of the K8s volume.\n *\n * @example emptyDir\n * @example persistentVolumeClaim\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_VOLUME_TYPE = 'k8s.volume.type' as const;\n\n/**\n * Enum value \"configMap\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [configMap](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_CONFIG_MAP = \"configMap\" as const;\n\n/**\n * Enum value \"downwardAPI\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [downwardAPI](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_DOWNWARD_API = \"downwardAPI\" as const;\n\n/**\n * Enum value \"emptyDir\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * An [emptyDir](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_EMPTY_DIR = \"emptyDir\" as const;\n\n/**\n * Enum value \"local\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [local](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_LOCAL = \"local\" as const;\n\n/**\n * Enum value \"persistentVolumeClaim\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [persistentVolumeClaim](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM = \"persistentVolumeClaim\" as const;\n\n/**\n * Enum value \"secret\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [secret](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_SECRET = \"secret\" as const;\n\n/**\n * The Linux Slab memory state\n *\n * @example reclaimable\n * @example unreclaimable\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 `system.memory.linux.slab.state`.\n */\nexport const ATTR_LINUX_MEMORY_SLAB_STATE = 'linux.memory.slab.state' as const;\n\n/**\n * Enum value \"reclaimable\" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE = \"reclaimable\" as const;\n\n/**\n * Enum value \"unreclaimable\" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE = \"unreclaimable\" as const;\n\n/**\n * The basename of the file.\n *\n * @example audit.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_NAME = 'log.file.name' as const;\n\n/**\n * The basename of the file, with symlinks resolved.\n *\n * @example uuid.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_NAME_RESOLVED = 'log.file.name_resolved' as const;\n\n/**\n * The full path to the file.\n *\n * @example /var/log/mysql/audit.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_PATH = 'log.file.path' as const;\n\n/**\n * The full path to the file, with symlinks resolved.\n *\n * @example /var/lib/docker/uuid.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_PATH_RESOLVED = 'log.file.path_resolved' as const;\n\n/**\n * The stream associated with the log. See below for a list of well-known values.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_IOSTREAM = 'log.iostream' as const;\n\n/**\n * Enum value \"stderr\" for attribute {@link ATTR_LOG_IOSTREAM}.\n *\n * Events from stderr stream\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LOG_IOSTREAM_VALUE_STDERR = \"stderr\" as const;\n\n/**\n * Enum value \"stdout\" for attribute {@link ATTR_LOG_IOSTREAM}.\n *\n * Logs from stdout stream\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LOG_IOSTREAM_VALUE_STDOUT = \"stdout\" as const;\n\n/**\n * The complete original Log Record.\n *\n * @example 77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - Something happened\n * @example [INFO] 8/3/24 12:34:56 Something happened\n *\n * @note This value **MAY** be added when processing a Log Record which was originally transmitted as a string or equivalent data type AND the Body field of the Log Record does not contain the same value. (e.g. a syslog or a log record read from a file.)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_RECORD_ORIGINAL = 'log.record.original' as const;\n\n/**\n * A unique identifier for the Log Record.\n *\n * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV\n *\n * @note If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records **MUST** have different values.\n * The id **MAY** be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_RECORD_UID = 'log.record.uid' as const;\n\n/**\n * Name of the logical partition that hosts a systems with a mainframe operating system.\n *\n * @example LPAR01\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MAINFRAME_LPAR_NAME = 'mainframe.lpar.name' as const;\n\n/**\n * The name of the request or notification method.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_METHOD_NAME = 'mcp.method.name' as const;\n\n/**\n * Enum value \"completion/complete\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to complete a prompt.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE = \"completion/complete\" as const;\n\n/**\n * Enum value \"elicitation/create\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request from the server to elicit additional information from the user via the client\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_ELICITATION_CREATE = \"elicitation/create\" as const;\n\n/**\n * Enum value \"initialize\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to initialize the MCP client.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_INITIALIZE = \"initialize\" as const;\n\n/**\n * Enum value \"logging/setLevel\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to set the logging level.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL = \"logging/setLevel\" as const;\n\n/**\n * Enum value \"notifications/cancelled\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification cancelling a previously-issued request.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED = \"notifications/cancelled\" as const;\n\n/**\n * Enum value \"notifications/initialized\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the MCP client has been initialized.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED = \"notifications/initialized\" as const;\n\n/**\n * Enum value \"notifications/message\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that a message has been received.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE = \"notifications/message\" as const;\n\n/**\n * Enum value \"notifications/progress\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating the progress for a long-running operation.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS = \"notifications/progress\" as const;\n\n/**\n * Enum value \"notifications/prompts/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of prompts has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED = \"notifications/prompts/list_changed\" as const;\n\n/**\n * Enum value \"notifications/resources/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of resources has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED = \"notifications/resources/list_changed\" as const;\n\n/**\n * Enum value \"notifications/resources/updated\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that a resource has been updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED = \"notifications/resources/updated\" as const;\n\n/**\n * Enum value \"notifications/roots/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of roots has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED = \"notifications/roots/list_changed\" as const;\n\n/**\n * Enum value \"notifications/tools/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of tools has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED = \"notifications/tools/list_changed\" as const;\n\n/**\n * Enum value \"ping\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to check that the other party is still alive.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_PING = \"ping\" as const;\n\n/**\n * Enum value \"prompts/get\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to get a prompt.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_PROMPTS_GET = \"prompts/get\" as const;\n\n/**\n * Enum value \"prompts/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list prompts available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_PROMPTS_LIST = \"prompts/list\" as const;\n\n/**\n * Enum value \"resources/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list resources available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_LIST = \"resources/list\" as const;\n\n/**\n * Enum value \"resources/read\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to read a resource.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_READ = \"resources/read\" as const;\n\n/**\n * Enum value \"resources/subscribe\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to subscribe to a resource.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE = \"resources/subscribe\" as const;\n\n/**\n * Enum value \"resources/templates/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list resource templates available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST = \"resources/templates/list\" as const;\n\n/**\n * Enum value \"resources/unsubscribe\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to unsubscribe from resource updates.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE = \"resources/unsubscribe\" as const;\n\n/**\n * Enum value \"roots/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list roots available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_ROOTS_LIST = \"roots/list\" as const;\n\n/**\n * Enum value \"sampling/createMessage\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to create a sampling message.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE = \"sampling/createMessage\" as const;\n\n/**\n * Enum value \"tools/call\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to call a tool.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_TOOLS_CALL = \"tools/call\" as const;\n\n/**\n * Enum value \"tools/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list tools available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_TOOLS_LIST = \"tools/list\" as const;\n\n/**\n * The [version](https://modelcontextprotocol.io/specification/versioning) of the Model Context Protocol used.\n *\n * @example 2025-06-18\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_PROTOCOL_VERSION = 'mcp.protocol.version' as const;\n\n/**\n * The value of the resource uri.\n *\n * @example postgres://database/customers/schema\n * @example file:///home/user/documents/report.pdf\n *\n * @note This is a URI of the resource provided in the following requests or notifications: `resources/read`, `resources/subscribe`, `resources/unsubscribe`, or `notifications/resources/updated`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_RESOURCE_URI = 'mcp.resource.uri' as const;\n\n/**\n * Identifies [MCP session](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management).\n *\n * @example 191c4850af6c49e08843a3f6c80e5046\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_SESSION_ID = 'mcp.session.id' as const;\n\n/**\n * Deprecated, use `rpc.message.compressed_size` 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 `rpc.message.compressed_size`.\n */\nexport const ATTR_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size' as const;\n\n/**\n * Deprecated, use `rpc.message.id` 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 `rpc.message.id`.\n */\nexport const ATTR_MESSAGE_ID = 'message.id' as const;\n\n/**\n * Deprecated, use `rpc.message.type` 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 `rpc.message.type`.\n */\nexport const ATTR_MESSAGE_TYPE = 'message.type' as const;\n\n/**\n * Enum value \"RECEIVED\" for attribute {@link ATTR_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGE_TYPE_VALUE_RECEIVED = \"RECEIVED\" as const;\n\n/**\n * Enum value \"SENT\" for attribute {@link ATTR_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGE_TYPE_VALUE_SENT = \"SENT\" as const;\n\n/**\n * Deprecated, use `rpc.message.uncompressed_size` 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 `rpc.message.uncompressed_size`.\n */\nexport const ATTR_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size' as const;\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 */\nexport const ATTR_MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count' as const;\n\n/**\n * A unique identifier for the client that consumes or produces a message.\n *\n * @example client-5\n * @example myhost@8742@s8083jm\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_CLIENT_ID = 'messaging.client.id' as const;\n\n/**\n * The name of the consumer group with which a consumer is associated.\n *\n * @example my-group\n * @example indexer\n *\n * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.consumer.group.name` is applicable and what it means in the context of that system.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_CONSUMER_GROUP_NAME = 'messaging.consumer.group.name' as const;\n\n/**\n * A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_ANONYMOUS = 'messaging.destination.anonymous' as const;\n\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 */\nexport const ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name' as const;\n\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 */\nexport const ATTR_MESSAGING_DESTINATION_PARTITION_ID = 'messaging.destination.partition.id' as const;\n\n/**\n * The name of the destination subscription from which a message is consumed.\n *\n * @example subscription-a\n *\n * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.destination.subscription.name` is applicable and what it means in the context of that system.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME = 'messaging.destination.subscription.name' as const;\n\n/**\n * Low cardinality representation of the messaging destination name\n *\n * @example /customers/{customerId}\n *\n * @note Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_TEMPLATE = 'messaging.destination.template' as const;\n\n/**\n * A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_TEMPORARY = 'messaging.destination.temporary' as const;\n\n/**\n * Deprecated, no replacement at this time.\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 */\nexport const ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS = 'messaging.destination_publish.anonymous' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example MyQueue\n * @example MyTopic\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 */\nexport const ATTR_MESSAGING_DESTINATION_PUBLISH_NAME = 'messaging.destination_publish.name' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\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 *\n * @deprecated Replaced by `messaging.consumer.group.name`.\n */\nexport const ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP = 'messaging.eventhubs.consumer.group' as const;\n\n/**\n * The UTC epoch seconds at which the message has been accepted and stored in the entity.\n *\n * @example 1701393730\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME = 'messaging.eventhubs.message.enqueued_time' as const;\n\n/**\n * The ack deadline in seconds set for the modify ack deadline request.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE = 'messaging.gcp_pubsub.message.ack_deadline' as const;\n\n/**\n * The ack id for a given message.\n *\n * @example \"ack_id\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID = 'messaging.gcp_pubsub.message.ack_id' as const;\n\n/**\n * The delivery attempt for a given message.\n *\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT = 'messaging.gcp_pubsub.message.delivery_attempt' as const;\n\n/**\n * The ordering key for a given message. If the attribute is not present, the message does not have an ordering key.\n *\n * @example \"ordering_key\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY = 'messaging.gcp_pubsub.message.ordering_key' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\n *\n * @example \"my-group\"\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.consumer.group.name`.\n */\nexport const ATTR_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer.group' as const;\n\n/**\n * Deprecated, use `messaging.destination.partition.id` instead.\n *\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Record string representation of the partition id in `messaging.destination.partition.id` attribute.\n */\nexport const ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION = 'messaging.kafka.destination.partition' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message.key' as const;\n\n/**\n * Deprecated, use `messaging.kafka.offset` instead.\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 *\n * @deprecated Replaced by `messaging.kafka.offset`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET = 'messaging.kafka.message.offset' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = 'messaging.kafka.message.tombstone' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset' as const;\n\n/**\n * The size of the message body in bytes.\n *\n * @example 1439\n *\n * @note This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed\n * body size should be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_BODY_SIZE = 'messaging.message.body.size' as const;\n\n/**\n * The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called \"Correlation ID\".\n *\n * @example \"MyConversationId\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_CONVERSATION_ID = 'messaging.message.conversation_id' as const;\n\n/**\n * The size of the message body and metadata in bytes.\n *\n * @example 2738\n *\n * @note This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed\n * size should be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE = 'messaging.message.envelope.size' as const;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @example \"452a7c7c7c7048c2f887f61572b18fc2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id' as const;\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 */\nexport const ATTR_MESSAGING_OPERATION = 'messaging.operation' as const;\n\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 */\nexport const ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name' as const;\n\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 */\nexport const ATTR_MESSAGING_OPERATION_TYPE = 'messaging.operation.type' as const;\n\n/**\n * Enum value \"create\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * A message is created. \"Create\" spans always refer to a single message and are used to provide a unique creation context for messages in batch sending scenarios.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_CREATE = \"create\" as const;\n\n/**\n * Enum value \"deliver\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * Deprecated. Use `process` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `process`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_DELIVER = \"deliver\" as const;\n\n/**\n * Enum value \"process\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are processed by a consumer.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PROCESS = \"process\" as const;\n\n/**\n * Enum value \"publish\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * Deprecated. Use `send` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `send`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PUBLISH = \"publish\" as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = \"receive\" as const;\n\n/**\n * Enum value \"send\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are provided for sending to an intermediary. If a single message is sent, the context of the \"Send\" span can be used as the creation context and no \"Create\" span needs to be created.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SEND = \"send\" as const;\n\n/**\n * Enum value \"settle\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are settled.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SETTLE = \"settle\" as const;\n\n/**\n * RabbitMQ message routing key.\n *\n * @example \"myKey\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = 'messaging.rabbitmq.destination.routing_key' as const;\n\n/**\n * RabbitMQ message delivery tag\n *\n * @example 123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG = 'messaging.rabbitmq.message.delivery_tag' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\n *\n * @example \"myConsumerGroup\"\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.consumer.group.name` on the consumer spans. No replacement for producer spans.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP = 'messaging.rocketmq.client_group' as const;\n\n/**\n * Model of message consumption. This only applies to consumer spans.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL = 'messaging.rocketmq.consumption_model' as const;\n\n/**\n * Enum value \"broadcasting\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}.\n *\n * Broadcasting consumption model\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING = \"broadcasting\" as const;\n\n/**\n * Enum value \"clustering\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}.\n *\n * Clustering consumption model\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING = \"clustering\" as const;\n\n/**\n * The delay time level for delay message, which determines the message delay time.\n *\n * @example 3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL = 'messaging.rocketmq.message.delay_time_level' as const;\n\n/**\n * The timestamp in milliseconds that the delay message is expected to be delivered to consumer.\n *\n * @example 1665987217045\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP = 'messaging.rocketmq.message.delivery_timestamp' as const;\n\n/**\n * It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group.\n *\n * @example \"myMessageGroup\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP = 'messaging.rocketmq.message.group' as const;\n\n/**\n * Key(s) of message, another way to mark message besides message id.\n *\n * @example [\"keyA\", \"keyB\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS = 'messaging.rocketmq.message.keys' as const;\n\n/**\n * The secondary classifier of message besides topic.\n *\n * @example \"tagA\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG = 'messaging.rocketmq.message.tag' as const;\n\n/**\n * Type of message.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE = 'messaging.rocketmq.message.type' as const;\n\n/**\n * Enum value \"delay\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * Delay message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY = \"delay\" as const;\n\n/**\n * Enum value \"fifo\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * FIFO message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO = \"fifo\" as const;\n\n/**\n * Enum value \"normal\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * Normal message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL = \"normal\" as const;\n\n/**\n * Enum value \"transaction\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * Transaction message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION = \"transaction\" as const;\n\n/**\n * Namespace of RocketMQ resources, resources in different namespaces are individual.\n *\n * @example \"myNamespace\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_NAMESPACE = 'messaging.rocketmq.namespace' as const;\n\n/**\n * Deprecated, use `messaging.destination.subscription.name` instead.\n *\n * @example \"subscription-a\"\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.destination.subscription.name`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME = 'messaging.servicebus.destination.subscription_name' as const;\n\n/**\n * Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS = 'messaging.servicebus.disposition_status' as const;\n\n/**\n * Enum value \"abandon\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is abandoned\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON = \"abandon\" as const;\n\n/**\n * Enum value \"complete\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is completed\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE = \"complete\" as const;\n\n/**\n * Enum value \"dead_letter\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is sent to dead letter queue\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER = \"dead_letter\" as const;\n\n/**\n * Enum value \"defer\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is deferred\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER = \"defer\" as const;\n\n/**\n * Number of deliveries that have been attempted for this message.\n *\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT = 'messaging.servicebus.message.delivery_count' as const;\n\n/**\n * The UTC epoch seconds at which the message has been accepted and stored in the entity.\n *\n * @example 1701393730\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME = 'messaging.servicebus.message.enqueued_time' as const;\n\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 */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Enum value \"activemq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache ActiveMQ\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_ACTIVEMQ = \"activemq\" as const;\n\n/**\n * Enum value \"aws.sns\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Amazon Simple Notification Service (SNS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_AWS_SNS = \"aws.sns\" as const;\n\n/**\n * Enum value \"aws_sqs\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Amazon Simple Queue Service (SQS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_AWS_SQS = \"aws_sqs\" as const;\n\n/**\n * Enum value \"eventgrid\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Azure Event Grid\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_EVENTGRID = \"eventgrid\" as const;\n\n/**\n * Enum value \"eventhubs\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Azure Event Hubs\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_EVENTHUBS = \"eventhubs\" as const;\n\n/**\n * Enum value \"gcp_pubsub\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Google Cloud Pub/Sub\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_GCP_PUBSUB = \"gcp_pubsub\" as const;\n\n/**\n * Enum value \"jms\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Java Message Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_JMS = \"jms\" as const;\n\n/**\n * Enum value \"kafka\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache Kafka\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_KAFKA = \"kafka\" as const;\n\n/**\n * Enum value \"pulsar\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache Pulsar\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_PULSAR = \"pulsar\" as const;\n\n/**\n * Enum value \"rabbitmq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * RabbitMQ\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_RABBITMQ = \"rabbitmq\" as const;\n\n/**\n * Enum value \"rocketmq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache RocketMQ\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_ROCKETMQ = \"rocketmq\" as const;\n\n/**\n * Enum value \"servicebus\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Azure Service Bus\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_SERVICEBUS = \"servicebus\" as const;\n\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 */\nexport const ATTR_NET_HOST_IP = 'net.host.ip' as const;\n\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 */\nexport const ATTR_NET_HOST_NAME = 'net.host.name' as const;\n\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 */\nexport const ATTR_NET_HOST_PORT = 'net.host.port' as const;\n\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 */\nexport const ATTR_NET_PEER_IP = 'net.peer.ip' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Deprecated, use `network.protocol.name`.\n *\n * @example amqp\n * @example http\n * @example mqtt\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 */\nexport const ATTR_NET_PROTOCOL_NAME = 'net.protocol.name' as const;\n\n/**\n * Deprecated, use `network.protocol.version`.\n *\n * @example \"3.1.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.protocol.version`.\n */\nexport const ATTR_NET_PROTOCOL_VERSION = 'net.protocol.version' as const;\n\n/**\n * Deprecated, use `network.transport` and `network.type`.\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 `network.transport` and `network.type`.\n */\nexport const ATTR_NET_SOCK_FAMILY = 'net.sock.family' as const;\n\n/**\n * Enum value \"inet\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n *\n * IPv4 address\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_SOCK_FAMILY_VALUE_INET = \"inet\" as const;\n\n/**\n * Enum value \"inet6\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n *\n * IPv6 address\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_SOCK_FAMILY_VALUE_INET6 = \"inet6\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n *\n * Unix domain socket path\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_SOCK_FAMILY_VALUE_UNIX = \"unix\" as const;\n\n/**\n * Deprecated, use `network.local.address`.\n *\n * @example /var/my.sock\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 */\nexport const ATTR_NET_SOCK_HOST_ADDR = 'net.sock.host.addr' as const;\n\n/**\n * Deprecated, use `network.local.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 `network.local.port`.\n */\nexport const ATTR_NET_SOCK_HOST_PORT = 'net.sock.host.port' as const;\n\n/**\n * Deprecated, use `network.peer.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.peer.address`.\n */\nexport const ATTR_NET_SOCK_PEER_ADDR = 'net.sock.peer.addr' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example /var/my.sock\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 */\nexport const ATTR_NET_SOCK_PEER_NAME = 'net.sock.peer.name' as const;\n\n/**\n * Deprecated, use `network.peer.port`.\n *\n * @example 65531\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.port`.\n */\nexport const ATTR_NET_SOCK_PEER_PORT = 'net.sock.peer.port' as const;\n\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 */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"inproc\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * In-process communication.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_INPROC = \"inproc\" as const;\n\n/**\n * Enum value \"ip_tcp\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_IP_TCP = \"ip_tcp\" as const;\n\n/**\n * Enum value \"ip_udp\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_IP_UDP = \"ip_udp\" as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * Something else (non IP-based).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * Named or anonymous pipe.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @example \"DE\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_ICC = 'network.carrier.icc' as const;\n\n/**\n * The mobile carrier country code.\n *\n * @example \"310\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_MCC = 'network.carrier.mcc' as const;\n\n/**\n * The mobile carrier network code.\n *\n * @example \"001\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_MNC = 'network.carrier.mnc' as const;\n\n/**\n * The name of the mobile carrier.\n *\n * @example \"sprint\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_NAME = 'network.carrier.name' as const;\n\n/**\n * The state of network connection\n *\n * @example close_wait\n *\n * @note Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2)\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_STATE = 'network.connection.state' as const;\n\n/**\n * Enum value \"close_wait\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_CLOSE_WAIT = \"close_wait\" as const;\n\n/**\n * Enum value \"closed\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_CLOSED = \"closed\" as const;\n\n/**\n * Enum value \"closing\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_CLOSING = \"closing\" as const;\n\n/**\n * Enum value \"established\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_ESTABLISHED = \"established\" as const;\n\n/**\n * Enum value \"fin_wait_1\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_1 = \"fin_wait_1\" as const;\n\n/**\n * Enum value \"fin_wait_2\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_2 = \"fin_wait_2\" as const;\n\n/**\n * Enum value \"last_ack\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_LAST_ACK = \"last_ack\" as const;\n\n/**\n * Enum value \"listen\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_LISTEN = \"listen\" as const;\n\n/**\n * Enum value \"syn_received\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_SYN_RECEIVED = \"syn_received\" as const;\n\n/**\n * Enum value \"syn_sent\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_SYN_SENT = \"syn_sent\" as const;\n\n/**\n * Enum value \"time_wait\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_TIME_WAIT = \"time_wait\" as const;\n\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 * @example \"LTE\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_SUBTYPE = 'network.connection.subtype' as const;\n\n/**\n * Enum value \"cdma\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * CDMA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA = \"cdma\" as const;\n\n/**\n * Enum value \"cdma2000_1xrtt\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * CDMA2000 1XRTT\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT = \"cdma2000_1xrtt\" as const;\n\n/**\n * Enum value \"edge\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EDGE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE = \"edge\" as const;\n\n/**\n * Enum value \"ehrpd\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EHRPD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD = \"ehrpd\" as const;\n\n/**\n * Enum value \"evdo_0\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EVDO Rel. 0\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 = \"evdo_0\" as const;\n\n/**\n * Enum value \"evdo_a\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EVDO Rev. A\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A = \"evdo_a\" as const;\n\n/**\n * Enum value \"evdo_b\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EVDO Rev. B\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B = \"evdo_b\" as const;\n\n/**\n * Enum value \"gprs\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * GPRS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS = \"gprs\" as const;\n\n/**\n * Enum value \"gsm\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * GSM\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_GSM = \"gsm\" as const;\n\n/**\n * Enum value \"hsdpa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSDPA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA = \"hsdpa\" as const;\n\n/**\n * Enum value \"hspa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSPA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA = \"hspa\" as const;\n\n/**\n * Enum value \"hspap\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSPAP\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP = \"hspap\" as const;\n\n/**\n * Enum value \"hsupa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSUPA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA = \"hsupa\" as const;\n\n/**\n * Enum value \"iden\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * IDEN\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN = \"iden\" as const;\n\n/**\n * Enum value \"iwlan\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * IWLAN\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN = \"iwlan\" as const;\n\n/**\n * Enum value \"lte\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * LTE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE = \"lte\" as const;\n\n/**\n * Enum value \"lte_ca\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * LTE CA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA = \"lte_ca\" as const;\n\n/**\n * Enum value \"nr\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * 5G NR (New Radio)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_NR = \"nr\" as const;\n\n/**\n * Enum value \"nrnsa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * 5G NRNSA (New Radio Non-Standalone)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA = \"nrnsa\" as const;\n\n/**\n * Enum value \"td_scdma\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * TD-SCDMA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA = \"td_scdma\" as const;\n\n/**\n * Enum value \"umts\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * UMTS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS = \"umts\" as const;\n\n/**\n * The internet connection type.\n *\n * @example \"wifi\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_TYPE = 'network.connection.type' as const;\n\n/**\n * Enum value \"cell\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_CELL = \"cell\" as const;\n\n/**\n * Enum value \"unavailable\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE = \"unavailable\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * Enum value \"wifi\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_WIFI = \"wifi\" as const;\n\n/**\n * Enum value \"wired\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_WIRED = \"wired\" as const;\n\n/**\n * The network interface name.\n *\n * @example lo\n * @example eth0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_INTERFACE_NAME = 'network.interface.name' as const;\n\n/**\n * The network IO operation direction.\n *\n * @example transmit\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_IO_DIRECTION = 'network.io.direction' as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_NETWORK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_IO_DIRECTION_VALUE_RECEIVE = \"receive\" as const;\n\n/**\n * Enum value \"transmit\" for attribute {@link ATTR_NETWORK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_IO_DIRECTION_VALUE_TRANSMIT = \"transmit\" as const;\n\n/**\n * NFSv4+ operation name.\n *\n * @example OPEN\n * @example READ\n * @example GETATTR\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NFS_OPERATION_NAME = 'nfs.operation.name' as const;\n\n/**\n * Linux: one of \"hit\" (NFSD_STATS_RC_HITS), \"miss\" (NFSD_STATS_RC_MISSES), or \"nocache\" (NFSD_STATS_RC_NOCACHE -- uncacheable)\n *\n * @example \"hit\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NFS_SERVER_REPCACHE_STATUS = 'nfs.server.repcache.status' as const;\n\n/**\n * The state of event loop time.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NODEJS_EVENTLOOP_STATE = 'nodejs.eventloop.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}.\n *\n * Active time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}.\n *\n * Idle time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NODEJS_EVENTLOOP_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known.\n *\n * @example sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4\n *\n * @note Follows [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), and specifically the [Digest property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests).\n * An example can be found in [Example Image Manifest](https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OCI_MANIFEST_DIGEST = 'oci.manifest.digest' as const;\n\n/**\n * ONC/Sun RPC procedure name.\n *\n * @example OPEN\n * @example READ\n * @example GETATTR\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_PROCEDURE_NAME = 'onc_rpc.procedure.name' as const;\n\n/**\n * ONC/Sun RPC procedure number.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_PROCEDURE_NUMBER = 'onc_rpc.procedure.number' as const;\n\n/**\n * ONC/Sun RPC program name.\n *\n * @example portmapper\n * @example nfs\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_PROGRAM_NAME = 'onc_rpc.program.name' as const;\n\n/**\n * ONC/Sun RPC program version.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_VERSION = 'onc_rpc.version' as const;\n\n/**\n * The service tier requested. May be a specific tier, default, or auto.\n *\n * @example auto\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENAI_REQUEST_SERVICE_TIER = 'openai.request.service_tier' as const;\n\n/**\n * Enum value \"auto\" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize scale tier credits until they are exhausted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = \"auto\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize the default scale tier.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * The service tier used for the response.\n *\n * @example scale\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENAI_RESPONSE_SERVICE_TIER = 'openai.response.service_tier' as const;\n\n/**\n * A fingerprint to track any eventual change in the Generative AI environment.\n *\n * @example fp_44709d6fcb\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'openai.response.system_fingerprint' as const;\n\n/**\n * The name of the cluster quota.\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 */\nexport const ATTR_OPENSHIFT_CLUSTERQUOTA_NAME = 'openshift.clusterquota.name' as const;\n\n/**\n * The UID of the cluster quota.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENSHIFT_CLUSTERQUOTA_UID = 'openshift.clusterquota.uid' as const;\n\n/**\n * Parent-child Reference type\n *\n * @note The causal relationship between a child Span and a parent Span.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENTRACING_REF_TYPE = 'opentracing.ref_type' as const;\n\n/**\n * Enum value \"child_of\" for attribute {@link ATTR_OPENTRACING_REF_TYPE}.\n *\n * The parent Span depends on the child Span in some capacity\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENTRACING_REF_TYPE_VALUE_CHILD_OF = \"child_of\" as const;\n\n/**\n * Enum value \"follows_from\" for attribute {@link ATTR_OPENTRACING_REF_TYPE}.\n *\n * The parent Span doesn't depend in any way on the result of the child Span\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM = \"follows_from\" as const;\n\n/**\n * Unique identifier for a particular build or compilation of the operating system.\n *\n * @example TQ3C.230805.001.B2\n * @example 20E247\n * @example 22621\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_BUILD_ID = 'os.build_id' as const;\n\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 * @example Microsoft Windows [Version 10.0.18363.778]\n * @example Ubuntu 18.04.1 LTS\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_DESCRIPTION = 'os.description' as const;\n\n/**\n * Human readable operating system name.\n *\n * @example iOS\n * @example Android\n * @example Ubuntu\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_NAME = 'os.name' as const;\n\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 */\nexport const ATTR_OS_TYPE = 'os.type' as const;\n\n/**\n * Enum value \"aix\" for attribute {@link ATTR_OS_TYPE}.\n *\n * AIX (Advanced Interactive eXecutive)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_AIX = \"aix\" as const;\n\n/**\n * Enum value \"darwin\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Apple Darwin\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_DARWIN = \"darwin\" as const;\n\n/**\n * Enum value \"dragonflybsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * DragonFly BSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_DRAGONFLYBSD = \"dragonflybsd\" as const;\n\n/**\n * Enum value \"freebsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * FreeBSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_FREEBSD = \"freebsd\" as const;\n\n/**\n * Enum value \"hpux\" for attribute {@link ATTR_OS_TYPE}.\n *\n * HP-UX (Hewlett Packard Unix)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_HPUX = \"hpux\" as const;\n\n/**\n * Enum value \"linux\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Linux\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_LINUX = \"linux\" as const;\n\n/**\n * Enum value \"netbsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * NetBSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_NETBSD = \"netbsd\" as const;\n\n/**\n * Enum value \"openbsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * OpenBSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_OPENBSD = \"openbsd\" as const;\n\n/**\n * Enum value \"solaris\" for attribute {@link ATTR_OS_TYPE}.\n *\n * SunOS, Oracle Solaris\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_SOLARIS = \"solaris\" as const;\n\n/**\n * Enum value \"windows\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Microsoft Windows\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_WINDOWS = \"windows\" as const;\n\n/**\n * Enum value \"z_os\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Deprecated. Use `zos` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `zos`.\n */\nexport const OS_TYPE_VALUE_Z_OS = \"z_os\" as const;\n\n/**\n * Enum value \"zos\" for attribute {@link ATTR_OS_TYPE}.\n *\n * IBM z/OS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_ZOS = \"zos\" as const;\n\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 */\nexport const ATTR_OS_VERSION = 'os.version' as const;\n\n/**\n * A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance.\n *\n * @example otlp_grpc_span_exporter/0\n * @example custom-name\n *\n * @note Implementations **SHOULD** ensure a low cardinality for this attribute, even across application or SDK restarts.\n * E.g. implementations **MUST NOT** use UUIDs as values for this attribute.\n *\n * Implementations **MAY** achieve these goals by following a `/` pattern, e.g. `batching_span_processor/0`.\n * Hereby `otel.component.type` refers to the corresponding attribute value of the component.\n *\n * The value of `instance-counter` **MAY** be automatically assigned by the component and uniqueness within the enclosing SDK instance **MUST** be guaranteed.\n * For example, `` **MAY** be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an\n * instance of the given component type is started.\n *\n * With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`\n * as `otel.component.name`, the second one `batching_span_processor/1` and so on.\n * These values will therefore be reused in the case of an application restart.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_COMPONENT_NAME = 'otel.component.name' as const;\n\n/**\n * A name identifying the type of the OpenTelemetry component.\n *\n * @example batching_span_processor\n * @example com.example.MySpanExporter\n *\n * @note If none of the standardized values apply, implementations **SHOULD** use the language-defined name of the type.\n * E.g. for Java the fully qualified classname **SHOULD** be used in this case.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_COMPONENT_TYPE = 'otel.component.type' as const;\n\n/**\n * Enum value \"batching_log_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK batching log record processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR = \"batching_log_processor\" as const;\n\n/**\n * Enum value \"batching_span_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK batching span processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR = \"batching_span_processor\" as const;\n\n/**\n * Enum value \"otlp_grpc_log_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP log record exporter over gRPC with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_LOG_EXPORTER = \"otlp_grpc_log_exporter\" as const;\n\n/**\n * Enum value \"otlp_grpc_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP metric exporter over gRPC with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_METRIC_EXPORTER = \"otlp_grpc_metric_exporter\" as const;\n\n/**\n * Enum value \"otlp_grpc_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP span exporter over gRPC with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER = \"otlp_grpc_span_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_json_log_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP log record exporter over HTTP with JSON serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_LOG_EXPORTER = \"otlp_http_json_log_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_json_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP metric exporter over HTTP with JSON serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_METRIC_EXPORTER = \"otlp_http_json_metric_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_json_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP span exporter over HTTP with JSON serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER = \"otlp_http_json_span_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_log_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP log record exporter over HTTP with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER = \"otlp_http_log_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP metric exporter over HTTP with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_METRIC_EXPORTER = \"otlp_http_metric_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP span exporter over HTTP with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER = \"otlp_http_span_exporter\" as const;\n\n/**\n * Enum value \"periodic_metric_reader\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK periodically exporting metric reader\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_PERIODIC_METRIC_READER = \"periodic_metric_reader\" as const;\n\n/**\n * Enum value \"prometheus_http_text_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * Prometheus metric exporter over HTTP with the default text-based format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_PROMETHEUS_HTTP_TEXT_METRIC_EXPORTER = \"prometheus_http_text_metric_exporter\" as const;\n\n/**\n * Enum value \"simple_log_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK simple log record processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR = \"simple_log_processor\" as const;\n\n/**\n * Enum value \"simple_span_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK simple span processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR = \"simple_span_processor\" as const;\n\n/**\n * Enum value \"zipkin_http_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * Zipkin span exporter over HTTP\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_ZIPKIN_HTTP_SPAN_EXPORTER = \"zipkin_http_span_exporter\" as const;\n\n/**\n * Identifies the class / type of event.\n *\n * @example browser.mouse.click\n * @example device.app.lifecycle\n *\n * @note This attribute **SHOULD** be used by non-OTLP exporters when destination does not support `EventName` or equivalent field. This attribute **MAY** be used by applications using existing logging libraries so that it can be used to set the `EventName` field by Collector or SDK components.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_EVENT_NAME = 'otel.event.name' as const;\n\n/**\n * Deprecated. Use the `otel.scope.name` attribute\n *\n * @example io.opentelemetry.contrib.mongodb\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 `otel.scope.name`.\n */\nexport const ATTR_OTEL_LIBRARY_NAME = 'otel.library.name' as const;\n\n/**\n * Deprecated. Use the `otel.scope.version` attribute.\n *\n * @example 1.0.0\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 `otel.scope.version`.\n */\nexport const ATTR_OTEL_LIBRARY_VERSION = 'otel.library.version' as const;\n\n/**\n * The schema URL of the instrumentation scope.\n *\n * @example https://opentelemetry.io/schemas/1.31.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_SCOPE_SCHEMA_URL = 'otel.scope.schema_url' as const;\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 */\nexport const ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin' as const;\n\n/**\n * Enum value \"local\" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}.\n *\n * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is false\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_PARENT_ORIGIN_VALUE_LOCAL = \"local\" as const;\n\n/**\n * Enum value \"none\" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}.\n *\n * The span does not have a parent, it is a root span\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_PARENT_ORIGIN_VALUE_NONE = \"none\" as const;\n\n/**\n * Enum value \"remote\" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}.\n *\n * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is true\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_PARENT_ORIGIN_VALUE_REMOTE = \"remote\" as const;\n\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 */\nexport const ATTR_OTEL_SPAN_SAMPLING_RESULT = 'otel.span.sampling_result' as const;\n\n/**\n * Enum value \"DROP\" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}.\n *\n * The span is not sampled and not recording\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP = \"DROP\" as const;\n\n/**\n * Enum value \"RECORD_AND_SAMPLE\" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}.\n *\n * The span is sampled and recording\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE = \"RECORD_AND_SAMPLE\" as const;\n\n/**\n * Enum value \"RECORD_ONLY\" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}.\n *\n * The span is not sampled, but recording\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY = \"RECORD_ONLY\" as const;\n\n/**\n * The [`service.name`](/docs/resource/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 * @example \"AuthTokenCache\"\n *\n * @note Examples of `peer.service` that users may specify:\n *\n * - A Redis cache of auth tokens as `peer.service=\"AuthTokenCache\"`.\n * - A gRPC service `rpc.service=\"io.opentelemetry.AuthService\"` may be hosted in both a gateway, `peer.service=\"ExternalApiService\"` and a backend, `peer.service=\"AuthService\"`.\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 `service.peer.name`.\n */\nexport const ATTR_PEER_SERVICE = 'peer.service' as const;\n\n/**\n * Deprecated, use `db.client.connection.pool.name` instead.\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 *\n * @deprecated Replaced by `db.client.connection.pool.name`.\n */\nexport const ATTR_POOL_NAME = 'pool.name' as const;\n\n/**\n * Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_LOCATION_IS_FOLDED = 'pprof.location.is_folded' as const;\n\n/**\n * Indicates that there are filenames related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_FILENAMES = 'pprof.mapping.has_filenames' as const;\n\n/**\n * Indicates that there are functions related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_FUNCTIONS = 'pprof.mapping.has_functions' as const;\n\n/**\n * Indicates that there are inline frames related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_INLINE_FRAMES = 'pprof.mapping.has_inline_frames' as const;\n\n/**\n * Indicates that there are line numbers related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_LINE_NUMBERS = 'pprof.mapping.has_line_numbers' as const;\n\n/**\n * Free-form text associated with the profile. This field should not be used to store any machine-readable information, it is only for human-friendly content.\n *\n * @example [\"hello world\", \"bazinga\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_COMMENT = 'pprof.profile.comment' as const;\n\n/**\n * Documentation link for this profile type.\n *\n * @example http://pprof.example.com/cpu-profile.html\n *\n * @note The URL must be absolute and may be missing if the profile was generated by code that did not supply a link\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_DOC_URL = 'pprof.profile.doc_url' as const;\n\n/**\n * Frames with Function.function_name fully matching the regexp will be dropped from the samples, along with their successors.\n *\n * @example /foobar/\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_DROP_FRAMES = 'pprof.profile.drop_frames' as const;\n\n/**\n * Frames with Function.function_name fully matching the regexp will be kept, even if it matches drop_frames.\n *\n * @example /bazinga/\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_KEEP_FRAMES = 'pprof.profile.keep_frames' as const;\n\n/**\n * Length of the process.command_args array\n *\n * @example 4\n *\n * @note This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_ARGS_COUNT = 'process.args_count' as const;\n\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 */\nexport const ATTR_PROCESS_COMMAND = 'process.command' as const;\n\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`. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data.\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 */\nexport const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args' as const;\n\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. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data.\n *\n * @example C:\\\\cmd\\\\otecol --config=\"my directory\\\\config.yaml\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND_LINE = 'process.command_line' as const;\n\n/**\n * Specifies whether the context switches for this data point were voluntary or involuntary.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_CONTEXT_SWITCH_TYPE = 'process.context_switch.type' as const;\n\n/**\n * Enum value \"involuntary\" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY = \"involuntary\" as const;\n\n/**\n * Enum value \"voluntary\" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY = \"voluntary\" as const;\n\n/**\n * Deprecated, use `cpu.mode` 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 `cpu.mode`.\n */\nexport const ATTR_PROCESS_CPU_STATE = 'process.cpu.state' as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * Enum value \"wait\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CPU_STATE_VALUE_WAIT = \"wait\" as const;\n\n/**\n * The date and time the process was created, in ISO 8601 format.\n *\n * @example 2023-11-21T09:25:34.853Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_CREATION_TIME = 'process.creation.time' as const;\n\n/**\n * Process environment variables, `` being the environment variable name, the value being the environment variable value.\n *\n * @example ubuntu\n * @example /usr/local/bin:/usr/bin\n *\n * @note Examples:\n *\n * - an environment variable `USER` with value `\"ubuntu\"` **SHOULD** be recorded\n * as the `process.environment_variable.USER` attribute with value `\"ubuntu\"`.\n * - an environment variable `PATH` with value `\"/usr/local/bin:/usr/bin\"`\n * **SHOULD** be recorded as the `process.environment_variable.PATH` attribute\n * with value `\"/usr/local/bin:/usr/bin\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_ENVIRONMENT_VARIABLE = (key: string) => `process.environment_variable.${key}`;\n\n/**\n * The GNU build ID as found in the `.note.gnu.build-id` ELF section (hex string).\n *\n * @example c89b11207f6479603b0d49bf291c092c2b719293\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU = 'process.executable.build_id.gnu' as const;\n\n/**\n * The Go build ID as retrieved by `go tool buildid `.\n *\n * @example foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO = 'process.executable.build_id.go' as const;\n\n/**\n * Profiling specific build ID for executables. See the OTel specification for Profiles for more information.\n *\n * @example 600DCAFE4A110000F2BF38C493F5FB92\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH = 'process.executable.build_id.htlhash' as const;\n\n/**\n * \"Deprecated, use `process.executable.build_id.htlhash` instead.\"\n *\n * @example 600DCAFE4A110000F2BF38C493F5FB92\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 `process.executable.build_id.htlhash`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING = 'process.executable.build_id.profiling' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path' as const;\n\n/**\n * The exit code of the process.\n *\n * @example 127\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXIT_CODE = 'process.exit.code' as const;\n\n/**\n * The date and time the process exited, in ISO 8601 format.\n *\n * @example 2023-11-21T09:26:12.315Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXIT_TIME = 'process.exit.time' as const;\n\n/**\n * The PID of the process's group leader. This is also the process group ID (PGID) of the process.\n *\n * @example 23\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_GROUP_LEADER_PID = 'process.group_leader.pid' as const;\n\n/**\n * Whether the process is connected to an interactive shell.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_INTERACTIVE = 'process.interactive' as const;\n\n/**\n * The control group associated with the process.\n *\n * @example 1:name=systemd:/user.slice/user-1000.slice/session-3.scope\n * @example 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope\n *\n * @note Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the [/proc/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_LINUX_CGROUP = 'process.linux.cgroup' as const;\n\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 */\nexport const ATTR_PROCESS_OWNER = 'process.owner' as const;\n\n/**\n * Deprecated, use `system.paging.fault.type` 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 `system.paging.fault.type`.\n */\nexport const ATTR_PROCESS_PAGING_FAULT_TYPE = 'process.paging.fault_type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Parent Process identifier (PPID).\n *\n * @example 111\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_PARENT_PID = 'process.parent_pid' as const;\n\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 */\nexport const ATTR_PROCESS_PID = 'process.pid' as const;\n\n/**\n * The real user ID (RUID) of the process.\n *\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_REAL_USER_ID = 'process.real_user.id' as const;\n\n/**\n * The username of the real user of the process.\n *\n * @example operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_REAL_USER_NAME = 'process.real_user.name' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description' as const;\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 */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version' as const;\n\n/**\n * The saved user ID (SUID) of the process.\n *\n * @example 1002\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SAVED_USER_ID = 'process.saved_user.id' as const;\n\n/**\n * The username of the saved user.\n *\n * @example operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SAVED_USER_NAME = 'process.saved_user.name' as const;\n\n/**\n * The PID of the process's session leader. This is also the session ID (SID) of the process.\n *\n * @example 14\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SESSION_LEADER_PID = 'process.session_leader.pid' as const;\n\n/**\n * The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES)\n *\n * @example running\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_STATE = 'process.state' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * Process title (proctitle)\n *\n * @example cat /etc/hostname\n * @example xfce4-session\n * @example bash\n *\n * @note In many Unix-like systems, process title (proctitle), is the string that represents the name or command line of a running process, displayed by system monitoring tools like ps, top, and htop.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_TITLE = 'process.title' as const;\n\n/**\n * The effective user ID (EUID) of the process.\n *\n * @example 1001\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_USER_ID = 'process.user.id' as const;\n\n/**\n * The username of the effective user of 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 */\nexport const ATTR_PROCESS_USER_NAME = 'process.user.name' as const;\n\n/**\n * Virtual process identifier.\n *\n * @example 12\n *\n * @note The process ID within a PID namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_VPID = 'process.vpid' as const;\n\n/**\n * The working directory of 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 */\nexport const ATTR_PROCESS_WORKING_DIRECTORY = 'process.working_directory' as const;\n\n/**\n * Describes the interpreter or compiler of a single frame.\n *\n * @example cpython\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROFILE_FRAME_TYPE = 'profile.frame.type' as const;\n\n/**\n * Enum value \"beam\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Erlang](https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_BEAM = \"beam\" as const;\n\n/**\n * Enum value \"cpython\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Python](https://wikipedia.org/wiki/Python_(programming_language))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_CPYTHON = \"cpython\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [.NET](https://wikipedia.org/wiki/.NET)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Go](https://wikipedia.org/wiki/Go_(programming_language)),\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"jvm\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [JVM](https://wikipedia.org/wiki/Java_virtual_machine)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_JVM = \"jvm\" as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Kernel](https://wikipedia.org/wiki/Kernel_(operating_system))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"native\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * Can be one of but not limited to [C](https://wikipedia.org/wiki/C_(programming_language)), [C++](https://wikipedia.org/wiki/C%2B%2B), [Go](https://wikipedia.org/wiki/Go_(programming_language)) or [Rust](https://wikipedia.org/wiki/Rust_(programming_language)). If possible, a more precise value **MUST** be used.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_NATIVE = \"native\" as const;\n\n/**\n * Enum value \"perl\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Perl](https://wikipedia.org/wiki/Perl)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_PERL = \"perl\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [PHP](https://wikipedia.org/wiki/PHP)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Ruby](https://wikipedia.org/wiki/Ruby_(programming_language))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Rust](https://wikipedia.org/wiki/Rust_(programming_language))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"v8js\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [V8JS](https://wikipedia.org/wiki/V8_(JavaScript_engine))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_V8JS = \"v8js\" as const;\n\n/**\n * Deprecated, use `rpc.response.status_code` attribute 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 `rpc.response.status_code`.\n */\nexport const ATTR_RPC_CONNECT_RPC_ERROR_CODE = 'rpc.connect_rpc.error_code' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"already_exists\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS = \"already_exists\" as const;\n\n/**\n * Enum value \"cancelled\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED = \"cancelled\" as const;\n\n/**\n * Enum value \"data_loss\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS = \"data_loss\" as const;\n\n/**\n * Enum value \"deadline_exceeded\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED = \"deadline_exceeded\" as const;\n\n/**\n * Enum value \"failed_precondition\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION = \"failed_precondition\" as const;\n\n/**\n * Enum value \"internal\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL = \"internal\" as const;\n\n/**\n * Enum value \"invalid_argument\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT = \"invalid_argument\" as const;\n\n/**\n * Enum value \"not_found\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND = \"not_found\" as const;\n\n/**\n * Enum value \"out_of_range\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE = \"out_of_range\" as const;\n\n/**\n * Enum value \"permission_denied\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED = \"permission_denied\" as const;\n\n/**\n * Enum value \"resource_exhausted\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED = \"resource_exhausted\" as const;\n\n/**\n * Enum value \"unauthenticated\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED = \"unauthenticated\" as const;\n\n/**\n * Enum value \"unavailable\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE = \"unavailable\" as const;\n\n/**\n * Enum value \"unimplemented\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED = \"unimplemented\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * Deprecated, use `rpc.request.metadata` instead.\n *\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\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 `rpc.request.metadata`.\n */\nexport const ATTR_RPC_CONNECT_RPC_REQUEST_METADATA = (key: string) => `rpc.connect_rpc.request.metadata.${key}`;\n\n/**\n * Deprecated, use `rpc.response.metadata` instead.\n *\n * @example [\"attribute_value\"]\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 `rpc.response.metadata`.\n */\nexport const ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA = (key: string) => `rpc.connect_rpc.response.metadata.${key}`;\n\n/**\n * Deprecated, use `rpc.request.metadata` instead.\n *\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\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 `rpc.request.metadata`.\n */\nexport const ATTR_RPC_GRPC_REQUEST_METADATA = (key: string) => `rpc.grpc.request.metadata.${key}`;\n\n/**\n * Deprecated, use `rpc.response.metadata` instead.\n *\n * @example [\"attribute_value\"]\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 `rpc.response.metadata`.\n */\nexport const ATTR_RPC_GRPC_RESPONSE_METADATA = (key: string) => `rpc.grpc.response.metadata.${key}`;\n\n/**\n * Deprecated, use string representation on the `rpc.response.status_code` attribute instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use string representation of the gRPC status code on the `rpc.response.status_code` attribute.\n */\nexport const ATTR_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code' as const;\n\n/**\n * Enum value 0 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * OK\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_OK = 0 as const;\n\n/**\n * Enum value 1 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * CANCELLED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_CANCELLED = 1 as const;\n\n/**\n * Enum value 2 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNKNOWN\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN = 2 as const;\n\n/**\n * Enum value 3 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * INVALID_ARGUMENT\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT = 3 as const;\n\n/**\n * Enum value 4 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * DEADLINE_EXCEEDED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED = 4 as const;\n\n/**\n * Enum value 5 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * NOT_FOUND\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND = 5 as const;\n\n/**\n * Enum value 6 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * ALREADY_EXISTS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS = 6 as const;\n\n/**\n * Enum value 7 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * PERMISSION_DENIED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED = 7 as const;\n\n/**\n * Enum value 8 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * RESOURCE_EXHAUSTED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED = 8 as const;\n\n/**\n * Enum value 9 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * FAILED_PRECONDITION\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION = 9 as const;\n\n/**\n * Enum value 10 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * ABORTED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_ABORTED = 10 as const;\n\n/**\n * Enum value 11 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * OUT_OF_RANGE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE = 11 as const;\n\n/**\n * Enum value 12 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNIMPLEMENTED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED = 12 as const;\n\n/**\n * Enum value 13 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * INTERNAL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_INTERNAL = 13 as const;\n\n/**\n * Enum value 14 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNAVAILABLE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE = 14 as const;\n\n/**\n * Enum value 15 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * DATA_LOSS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS = 15 as const;\n\n/**\n * Enum value 16 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNAUTHENTICATED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED = 16 as const;\n\n/**\n * Deprecated, use string representation on the `rpc.response.status_code` attribute instead.\n *\n * @example -32700\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use string representation of the error code on the `rpc.response.status_code` attribute.\n */\nexport const ATTR_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code' as const;\n\n/**\n * Deprecated, use span status description or `error.message` attribute on other signals.\n *\n * @example Parse error\n * @example User already exists\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use the span status description or `error.message` attribute on other signals.\n */\nexport const ATTR_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message' as const;\n\n/**\n * Deprecated, use `jsonrpc.request.id` instead.\n *\n * @example 10\n * @example request-7\n * @example\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 `jsonrpc.request.id`.\n */\nexport const ATTR_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id' as const;\n\n/**\n * Deprecated, use `jsonrpc.protocol.version` instead.\n *\n * @example 2.0\n * @example 1.0\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 `jsonrpc.protocol.version`.\n */\nexport const ATTR_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version' as const;\n\n/**\n * Compressed size of the message in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_COMPRESSED_SIZE = 'rpc.message.compressed_size' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_ID = 'rpc.message.id' as const;\n\n/**\n * Whether this is a received or sent message.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_TYPE = 'rpc.message.type' as const;\n\n/**\n * Enum value \"RECEIVED\" for attribute {@link ATTR_RPC_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_MESSAGE_TYPE_VALUE_RECEIVED = \"RECEIVED\" as const;\n\n/**\n * Enum value \"SENT\" for attribute {@link ATTR_RPC_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_MESSAGE_TYPE_VALUE_SENT = \"SENT\" as const;\n\n/**\n * Uncompressed size of the message in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE = 'rpc.message.uncompressed_size' as const;\n\n/**\n * The fully-qualified logical name of the method from the RPC interface perspective.\n *\n * @example com.example.ExampleService/exampleMethod\n * @example EchoService/Echo\n * @example _OTHER\n *\n * @note The method name **MAY** have unbounded cardinality in edge or error cases.\n *\n * Some RPC frameworks or libraries provide a fixed set of recognized methods\n * for client stubs and server implementations. Instrumentations for such\n * frameworks **MUST** set this attribute to the original method name only\n * when the method is recognized by the framework or library.\n *\n * When the method is not recognized, for example, when the server receives\n * a request for a method that is not predefined on the server, or when\n * instrumentation is not able to reliably detect if the method is predefined,\n * the attribute **MUST** be set to `_OTHER`. In such cases, tracing\n * instrumentations **MUST** also set `rpc.method_original` attribute to\n * the original method value.\n *\n * If the RPC instrumentation could end up converting valid RPC methods to\n * `_OTHER`, then it **SHOULD** provide a way to configure the list of recognized\n * RPC methods.\n *\n * The `rpc.method` can be different from the name of any implementing\n * method/function.\n * The `code.function.name` attribute may be used to record the fully-qualified\n * method actually executing the call on the server side, or the\n * RPC client stub method on the client side.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_METHOD = 'rpc.method' as const;\n\n/**\n * The original name of the method used by the client.\n *\n * @example com.myservice.EchoService/catchAll\n * @example com.myservice.EchoService/unknownMethod\n * @example InvalidMethod\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_METHOD_ORIGINAL = 'rpc.method_original' as const;\n\n/**\n * RPC request metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values.\n *\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured.\n * Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * For example, a property `my-custom-key` with value `[\"1.2.3.4\", \"1.2.3.5\"]` **SHOULD** be recorded as\n * `rpc.request.metadata.my-custom-key` attribute with value `[\"1.2.3.4\", \"1.2.3.5\"]`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_REQUEST_METADATA = (key: string) => `rpc.request.metadata.${key}`;\n\n/**\n * RPC response metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values.\n *\n * @example [\"attribute_value\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured.\n * Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * For example, a property `my-custom-key` with value `[\"attribute_value\"]` **SHOULD** be recorded as\n * the `rpc.response.metadata.my-custom-key` attribute with value `[\"attribute_value\"]`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_RESPONSE_METADATA = (key: string) => `rpc.response.metadata.${key}`;\n\n/**\n * Status code of the RPC returned by the RPC server or generated by the client\n *\n * @example OK\n * @example DEADLINE_EXCEEDED\n * @example -32602\n *\n * @note 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 RPC frameworks **SHOULD** document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_RESPONSE_STATUS_CODE = 'rpc.response.status_code' as const;\n\n/**\n * Deprecated, use fully-qualified `rpc.method` instead.\n *\n * @example \"myservice.EchoService\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Value should be included in `rpc.method` which is expected to be a fully-qualified name.\n */\nexport const ATTR_RPC_SERVICE = 'rpc.service' as const;\n\n/**\n * Deprecated, use `rpc.system.name` attribute 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 `rpc.system.name`.\n */\nexport const ATTR_RPC_SYSTEM = 'rpc.system' as const;\n\n/**\n * Enum value \"apache_dubbo\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * Apache Dubbo\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_APACHE_DUBBO = \"apache_dubbo\" as const;\n\n/**\n * Enum value \"connect_rpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * Connect RPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_CONNECT_RPC = \"connect_rpc\" as const;\n\n/**\n * Enum value \"dotnet_wcf\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * .NET WCF\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_DOTNET_WCF = \"dotnet_wcf\" as const;\n\n/**\n * Enum value \"grpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * gRPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_GRPC = \"grpc\" as const;\n\n/**\n * Enum value \"java_rmi\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * Java RMI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_JAVA_RMI = \"java_rmi\" as const;\n\n/**\n * Enum value \"jsonrpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * JSON-RPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_JSONRPC = \"jsonrpc\" as const;\n\n/**\n * Enum value \"onc_rpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * [ONC RPC (Sun RPC)](https://datatracker.ietf.org/doc/html/rfc5531)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_ONC_RPC = \"onc_rpc\" as const;\n\n/**\n * The Remote Procedure Call (RPC) system.\n *\n * @note The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_SYSTEM_NAME = 'rpc.system.name' as const;\n\n/**\n * Enum value \"connectrpc\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [Connect RPC](https://connectrpc.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_CONNECTRPC = \"connectrpc\" as const;\n\n/**\n * Enum value \"dubbo\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [Apache Dubbo](https://dubbo.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_DUBBO = \"dubbo\" as const;\n\n/**\n * Enum value \"grpc\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [gRPC](https://grpc.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_GRPC = \"grpc\" as const;\n\n/**\n * Enum value \"jsonrpc\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [JSON-RPC](https://www.jsonrpc.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_JSONRPC = \"jsonrpc\" as const;\n\n/**\n * A categorization value keyword used by the entity using the rule for detection of this event\n *\n * @example Attempted Information Leak\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_CATEGORY = 'security_rule.category' as const;\n\n/**\n * The description of the rule generating the event.\n *\n * @example Block requests to public DNS over HTTPS / TLS protocols\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_DESCRIPTION = 'security_rule.description' as const;\n\n/**\n * Name of the license under which the rule used to generate this event is made available.\n *\n * @example Apache 2.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_LICENSE = 'security_rule.license' as const;\n\n/**\n * The name of the rule or signature generating the event.\n *\n * @example BLOCK_DNS_over_TLS\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_NAME = 'security_rule.name' as const;\n\n/**\n * Reference URL to additional information about the rule used to generate this event.\n *\n * @example https://en.wikipedia.org/wiki/DNS_over_TLS\n *\n * @note The URL can point to the vendor’s documentation about the rule. If that’s not available, it can also be a link to a more general page describing this type of alert.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_REFERENCE = 'security_rule.reference' as const;\n\n/**\n * Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member.\n *\n * @example Standard_Protocol_Filters\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_RULESET_NAME = 'security_rule.ruleset.name' as const;\n\n/**\n * A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event.\n *\n * @example 550e8400-e29b-41d4-a716-446655440000\n * @example 1100110011\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_UUID = 'security_rule.uuid' as const;\n\n/**\n * The version / revision of the rule being used for analysis.\n *\n * @example 1.0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_VERSION = 'security_rule.version' as const;\n\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 */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\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 */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\n/**\n * Logical name of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.name`](/docs/resource/README.md#service) resource attribute of the remote service if any.\n *\n * @example shoppingcart\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_PEER_NAME = 'service.peer.name' as const;\n\n/**\n * Logical namespace of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.namespace`](/docs/resource/README.md#service) resource attribute of the remote service if any.\n *\n * @example Shop\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_PEER_NAMESPACE = 'service.peer.namespace' as const;\n\n/**\n * A unique id to identify a session.\n *\n * @example \"00112233-4455-6677-8899-aabbccddeeff\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SESSION_ID = 'session.id' as const;\n\n/**\n * The previous `session.id` for this user, when known.\n *\n * @example \"00112233-4455-6677-8899-aabbccddeeff\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SESSION_PREVIOUS_ID = 'session.previous_id' as const;\n\n/**\n * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example source.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the destination side, and when communicating through an intermediary, `source.address` **SHOULD** represent the source address behind any intermediaries, for example proxies, if it's available.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SOURCE_ADDRESS = 'source.address' as const;\n\n/**\n * Source port number\n *\n * @example 3389\n * @example 2888\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SOURCE_PORT = 'source.port' as const;\n\n/**\n * Deprecated, use `db.client.connection.state` instead.\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 *\n * @deprecated Replaced by `db.client.connection.state`.\n */\nexport const ATTR_STATE = 'state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `cpu.logical_number` instead.\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 *\n * @deprecated Replaced by `cpu.logical_number`.\n */\nexport const ATTR_SYSTEM_CPU_LOGICAL_NUMBER = 'system.cpu.logical_number' as const;\n\n/**\n * Deprecated, use `cpu.mode` instead.\n *\n * @example idle\n * @example interrupt\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 `cpu.mode`.\n */\nexport const ATTR_SYSTEM_CPU_STATE = 'system.cpu.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"interrupt\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_INTERRUPT = \"interrupt\" as const;\n\n/**\n * Enum value \"iowait\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_IOWAIT = \"iowait\" as const;\n\n/**\n * Enum value \"nice\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_NICE = \"nice\" as const;\n\n/**\n * Enum value \"steal\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_STEAL = \"steal\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * The device identifier\n *\n * @example (identifier)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_DEVICE = 'system.device' as const;\n\n/**\n * The filesystem mode\n *\n * @example rw, ro\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_MODE = 'system.filesystem.mode' as const;\n\n/**\n * The filesystem mount path\n *\n * @example /mnt/data\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT = 'system.filesystem.mountpoint' as const;\n\n/**\n * The filesystem state\n *\n * @example used\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_STATE = 'system.filesystem.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"reserved\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED = \"reserved\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * The filesystem type\n *\n * @example ext4\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_TYPE = 'system.filesystem.type' as const;\n\n/**\n * Enum value \"exfat\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT = \"exfat\" as const;\n\n/**\n * Enum value \"ext4\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4 = \"ext4\" as const;\n\n/**\n * Enum value \"fat32\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32 = \"fat32\" as const;\n\n/**\n * Enum value \"hfsplus\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS = \"hfsplus\" as const;\n\n/**\n * Enum value \"ntfs\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS = \"ntfs\" as const;\n\n/**\n * Enum value \"refs\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_REFS = \"refs\" as const;\n\n/**\n * The Linux Slab memory state\n *\n * @example reclaimable\n * @example unreclaimable\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE = 'system.memory.linux.slab.state' as const;\n\n/**\n * Enum value \"reclaimable\" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE = \"reclaimable\" as const;\n\n/**\n * Enum value \"unreclaimable\" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE = \"unreclaimable\" as const;\n\n/**\n * The memory state\n *\n * @example free\n * @example cached\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_MEMORY_STATE = 'system.memory.state' as const;\n\n/**\n * Enum value \"buffers\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_BUFFERS = \"buffers\" as const;\n\n/**\n * Enum value \"cached\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_CACHED = \"cached\" as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"shared\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, report shared memory usage with `metric.system.memory.shared` metric\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_SHARED = \"shared\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * Actual used virtual memory in bytes.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `network.connection.state` instead.\n *\n * @example close_wait\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.connection.state`.\n */\nexport const ATTR_SYSTEM_NETWORK_STATE = 'system.network.state' as const;\n\n/**\n * Enum value \"close\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSE = \"close\" as const;\n\n/**\n * Enum value \"close_wait\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT = \"close_wait\" as const;\n\n/**\n * Enum value \"closing\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSING = \"closing\" as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"established\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED = \"established\" as const;\n\n/**\n * Enum value \"fin_wait_1\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1 = \"fin_wait_1\" as const;\n\n/**\n * Enum value \"fin_wait_2\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2 = \"fin_wait_2\" as const;\n\n/**\n * Enum value \"last_ack\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_LAST_ACK = \"last_ack\" as const;\n\n/**\n * Enum value \"listen\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_LISTEN = \"listen\" as const;\n\n/**\n * Enum value \"syn_recv\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_SYN_RECV = \"syn_recv\" as const;\n\n/**\n * Enum value \"syn_sent\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_SYN_SENT = \"syn_sent\" as const;\n\n/**\n * Enum value \"time_wait\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT = \"time_wait\" as const;\n\n/**\n * The paging access direction\n *\n * @example in\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_DIRECTION = 'system.paging.direction' as const;\n\n/**\n * Enum value \"in\" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_DIRECTION_VALUE_IN = \"in\" as const;\n\n/**\n * Enum value \"out\" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_DIRECTION_VALUE_OUT = \"out\" as const;\n\n/**\n * The paging fault type\n *\n * @example minor\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_FAULT_TYPE = 'system.paging.fault.type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_FAULT_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_FAULT_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * The memory paging state\n *\n * @example free\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_STATE = 'system.paging.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_PAGING_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_PAGING_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `system.paging.fault.type` instead.\n *\n * @example minor\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 `system.paging.fault.type`.\n */\nexport const ATTR_SYSTEM_PAGING_TYPE = 'system.paging.type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Deprecated, use `process.state` instead.\n *\n * @example running\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 `process.state`.\n */\nexport const ATTR_SYSTEM_PROCESS_STATUS = 'system.process.status' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * Deprecated, use `process.state` instead.\n *\n * @example running\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 `process.state`.\n */\nexport const ATTR_SYSTEM_PROCESSES_STATUS = 'system.processes.status' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * The name of the auto instrumentation agent or distribution, if used.\n *\n * @example parts-unlimited-java\n *\n * @note Official auto instrumentation agents and distributions **SHOULD** set the `telemetry.distro.name` attribute to\n * a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TELEMETRY_DISTRO_NAME = 'telemetry.distro.name' as const;\n\n/**\n * The version string of the auto instrumentation agent or distribution, if used.\n *\n * @example 1.2.3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TELEMETRY_DISTRO_VERSION = 'telemetry.distro.version' as const;\n\n/**\n * The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case).\n *\n * @example org.example.TestCase1.test1\n * @example example/tests/TestCase1.test1\n * @example ExampleTestCase1_test1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_CASE_NAME = 'test.case.name' as const;\n\n/**\n * The status of the actual test case result from test execution.\n *\n * @example pass\n * @example fail\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_CASE_RESULT_STATUS = 'test.case.result.status' as const;\n\n/**\n * Enum value \"fail\" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}.\n *\n * fail\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_CASE_RESULT_STATUS_VALUE_FAIL = \"fail\" as const;\n\n/**\n * Enum value \"pass\" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}.\n *\n * pass\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_CASE_RESULT_STATUS_VALUE_PASS = \"pass\" as const;\n\n/**\n * The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite).\n *\n * @example TestSuite1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_SUITE_NAME = 'test.suite.name' as const;\n\n/**\n * The status of the test suite run.\n *\n * @example success\n * @example failure\n * @example skipped\n * @example aborted\n * @example timed_out\n * @example in_progress\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_SUITE_RUN_STATUS = 'test.suite.run.status' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * aborted\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * failure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"in_progress\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * in_progress\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS = \"in_progress\" as const;\n\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * skipped\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_SKIPPED = \"skipped\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * success\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"timed_out\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * timed_out\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT = \"timed_out\" as const;\n\n/**\n * Current \"managed\" thread ID (as opposed to OS thread ID).\n *\n * @example 42\n *\n * @note\n * Examples of where the value can be extracted from:\n *\n * | Language or platform | Source |\n * | --- | --- |\n * | JVM | `Thread.currentThread().threadId()` |\n * | .NET | `Thread.CurrentThread.ManagedThreadId` |\n * | Python | `threading.current_thread().ident` |\n * | Ruby | `Thread.current.object_id` |\n * | C++ | `std::this_thread::get_id()` |\n * | Erlang | `erlang:self()` |\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_THREAD_ID = 'thread.id' as const;\n\n/**\n * Current thread name.\n *\n * @example \"main\"\n *\n * @note\n * Examples of where the value can be extracted from:\n *\n * | Language or platform | Source |\n * | --- | --- |\n * | JVM | `Thread.currentThread().getName()` |\n * | .NET | `Thread.CurrentThread.Name` |\n * | Python | `threading.current_thread().name` |\n * | Ruby | `Thread.current.name` |\n * | Erlang | `erlang:process_info(self(), registered_name)` |\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_THREAD_NAME = 'thread.name' as const;\n\n/**\n * String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection.\n *\n * @example TLS_RSA_WITH_3DES_EDE_CBC_SHA\n * @example TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\n *\n * @note The values allowed for `tls.cipher` **MUST** be one of the `Descriptions` of the [registered TLS Cipher Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CIPHER = 'tls.cipher' as const;\n\n/**\n * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list.\n *\n * @example MII...\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_CERTIFICATE = 'tls.client.certificate' as const;\n\n/**\n * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain.\n *\n * @example [\"MII...\", \"MI...\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_CERTIFICATE_CHAIN = 'tls.client.certificate_chain' as const;\n\n/**\n * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_MD5 = 'tls.client.hash.md5' as const;\n\n/**\n * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 9E393D93138888D288266C2D915214D1D1CCEB2A\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_SHA1 = 'tls.client.hash.sha1' as const;\n\n/**\n * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_SHA256 = 'tls.client.hash.sha256' as const;\n\n/**\n * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client.\n *\n * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_ISSUER = 'tls.client.issuer' as const;\n\n/**\n * A hash that identifies clients based on how they perform an SSL/TLS handshake.\n *\n * @example d4e5b18d6b55c71272893221c96ba240\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_JA3 = 'tls.client.ja3' as const;\n\n/**\n * Date/Time indicating when client certificate is no longer considered valid.\n *\n * @example 2021-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_NOT_AFTER = 'tls.client.not_after' as const;\n\n/**\n * Date/Time indicating when client certificate is first considered valid.\n *\n * @example 1970-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_NOT_BEFORE = 'tls.client.not_before' as const;\n\n/**\n * Deprecated, use `server.address` instead.\n *\n * @example opentelemetry.io\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 */\nexport const ATTR_TLS_CLIENT_SERVER_NAME = 'tls.client.server_name' as const;\n\n/**\n * Distinguished name of subject of the x.509 certificate presented by the client.\n *\n * @example CN=myclient, OU=Documentation Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_SUBJECT = 'tls.client.subject' as const;\n\n/**\n * Array of ciphers offered by the client during the client hello.\n *\n * @example [\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_SUPPORTED_CIPHERS = 'tls.client.supported_ciphers' as const;\n\n/**\n * String indicating the curve used for the given cipher, when applicable\n *\n * @example secp256r1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CURVE = 'tls.curve' as const;\n\n/**\n * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel.\n *\n * @example true\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_ESTABLISHED = 'tls.established' as const;\n\n/**\n * String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case.\n *\n * @example http/1.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_NEXT_PROTOCOL = 'tls.next_protocol' as const;\n\n/**\n * Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_PROTOCOL_NAME = 'tls.protocol.name' as const;\n\n/**\n * Enum value \"ssl\" for attribute {@link ATTR_TLS_PROTOCOL_NAME}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TLS_PROTOCOL_NAME_VALUE_SSL = \"ssl\" as const;\n\n/**\n * Enum value \"tls\" for attribute {@link ATTR_TLS_PROTOCOL_NAME}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TLS_PROTOCOL_NAME_VALUE_TLS = \"tls\" as const;\n\n/**\n * Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values)\n *\n * @example 1.2\n * @example 3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_PROTOCOL_VERSION = 'tls.protocol.version' as const;\n\n/**\n * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation.\n *\n * @example true\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_RESUMED = 'tls.resumed' as const;\n\n/**\n * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list.\n *\n * @example MII...\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_CERTIFICATE = 'tls.server.certificate' as const;\n\n/**\n * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain.\n *\n * @example [\"MII...\", \"MI...\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_CERTIFICATE_CHAIN = 'tls.server.certificate_chain' as const;\n\n/**\n * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_MD5 = 'tls.server.hash.md5' as const;\n\n/**\n * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 9E393D93138888D288266C2D915214D1D1CCEB2A\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_SHA1 = 'tls.server.hash.sha1' as const;\n\n/**\n * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_SHA256 = 'tls.server.hash.sha256' as const;\n\n/**\n * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client.\n *\n * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_ISSUER = 'tls.server.issuer' as const;\n\n/**\n * A hash that identifies servers based on how they perform an SSL/TLS handshake.\n *\n * @example d4e5b18d6b55c71272893221c96ba240\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_JA3S = 'tls.server.ja3s' as const;\n\n/**\n * Date/Time indicating when server certificate is no longer considered valid.\n *\n * @example 2021-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_NOT_AFTER = 'tls.server.not_after' as const;\n\n/**\n * Date/Time indicating when server certificate is first considered valid.\n *\n * @example 1970-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_NOT_BEFORE = 'tls.server.not_before' as const;\n\n/**\n * Distinguished name of subject of the x.509 certificate presented by the server.\n *\n * @example CN=myserver, OU=Documentation Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_SUBJECT = 'tls.server.subject' as const;\n\n/**\n * Domain extracted from the `url.full`, such as \"opentelemetry.io\".\n *\n * @example www.foo.bar\n * @example opentelemetry.io\n * @example 3.12.167.2\n * @example [1080:0:0:0:8:800:200C:417A]\n *\n * @note In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the domain field. If the URL contains a [literal IPv6 address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by `[` and `]`, the `[` and `]` characters should also be captured in the domain field.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_DOMAIN = 'url.domain' as const;\n\n/**\n * The file extension extracted from the `url.full`, excluding the leading dot.\n *\n * @example png\n * @example gz\n *\n * @note The file extension is only set if it exists, as not every url has a file extension. When the file name has multiple extensions `example.tar.gz`, only the last one should be captured `gz`, not `tar.gz`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_EXTENSION = 'url.extension' as const;\n\n/**\n * Unmodified original URL as seen in the event source.\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example search?q=OpenTelemetry\n *\n * @note In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not.\n * `url.original` might contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case password and username **SHOULD NOT** be redacted and attribute's value **SHOULD** remain the same.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_ORIGINAL = 'url.original' as const;\n\n/**\n * Port extracted from the `url.full`\n *\n * @example 443\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_PORT = 'url.port' as const;\n\n/**\n * The highest registered url domain, stripped of the subdomain.\n *\n * @example example.com\n * @example foo.co.uk\n *\n * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). For example, the registered domain for `foo.example.com` is `example.com`. Trying to approximate this by simply taking the last two labels will not work well for TLDs such as `co.uk`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_REGISTERED_DOMAIN = 'url.registered_domain' as const;\n\n/**\n * The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\n *\n * @example east\n * @example sub2.sub1\n *\n * @note The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, with no trailing period.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_SUBDOMAIN = 'url.subdomain' as const;\n\n/**\n * The low-cardinality template of an [absolute path reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2).\n *\n * @example /users/{id}\n * @example /users/:id\n * @example /users?id={id}\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_TEMPLATE = 'url.template' as const;\n\n/**\n * The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is `com`.\n *\n * @example com\n * @example co.uk\n *\n * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_TOP_LEVEL_DOMAIN = 'url.top_level_domain' as const;\n\n/**\n * User email address.\n *\n * @example a.einstein@example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_EMAIL = 'user.email' as const;\n\n/**\n * User's full name\n *\n * @example Albert Einstein\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_FULL_NAME = 'user.full_name' as const;\n\n/**\n * Unique user hash to correlate information for a user in anonymized form.\n *\n * @example 364fc68eaf4c8acec74a4e52d7d1feaa\n *\n * @note Useful if `user.id` or `user.name` contain confidential information and cannot be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_HASH = 'user.hash' as const;\n\n/**\n * Unique identifier of the user.\n *\n * @example S-1-5-21-202424912787-2692429404-2351956786-1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_ID = 'user.id' as const;\n\n/**\n * Short name or login/username of the user.\n *\n * @example a.einstein\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_NAME = 'user.name' as const;\n\n/**\n * Array of user roles at the time of the event.\n *\n * @example [\"admin\", \"reporting_user\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_ROLES = 'user.roles' as const;\n\n/**\n * Name of the user-agent extracted from original. Usually refers to the browser's name.\n *\n * @example Safari\n * @example YourApp\n *\n * @note [Example](https://uaparser.dev/#demo) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name **SHOULD** be selected. In such a scenario it should align with `user_agent.version`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_NAME = 'user_agent.name' as const;\n\n/**\n * Human readable operating system name.\n *\n * @example iOS\n * @example Android\n * @example Ubuntu\n *\n * @note For mapping user agent strings to OS names, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_OS_NAME = 'user_agent.os.name' as const;\n\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 * @note For mapping user agent strings to OS versions, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_OS_VERSION = 'user_agent.os.version' as const;\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 */\nexport const ATTR_USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type' as const;\n\n/**\n * Enum value \"bot\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n *\n * Bot source.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = \"bot\" as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n *\n * Synthetic test source.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = \"test\" as const;\n\n/**\n * Version of the user-agent extracted from original. Usually refers to the browser's version\n *\n * @example 14.1.2\n * @example 1.0.0\n *\n * @note [Example](https://uaparser.dev/#demo) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version **SHOULD** be selected. In such a scenario it should align with `user_agent.name`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_VERSION = 'user_agent.version' as const;\n\n/**\n * The type of garbage collection.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_V8JS_GC_TYPE = 'v8js.gc.type' as const;\n\n/**\n * Enum value \"incremental\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Incremental (Incremental Marking).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_INCREMENTAL = \"incremental\" as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Major (Mark Sweep Compact).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Minor (Scavenge).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Enum value \"weakcb\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Weak Callbacks (Process Weak Callbacks).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_WEAKCB = \"weakcb\" as const;\n\n/**\n * The name of the space type of heap memory.\n *\n * @note Value can be retrieved from value `space_name` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_V8JS_HEAP_SPACE_NAME = 'v8js.heap.space.name' as const;\n\n/**\n * Enum value \"code_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Code memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE = \"code_space\" as const;\n\n/**\n * Enum value \"large_object_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Large object memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE = \"large_object_space\" as const;\n\n/**\n * Enum value \"map_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Map memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE = \"map_space\" as const;\n\n/**\n * Enum value \"new_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * New memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE = \"new_space\" as const;\n\n/**\n * Enum value \"old_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Old memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE = \"old_space\" as const;\n\n/**\n * The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system.\n *\n * @example 123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_CHANGE_ID = 'vcs.change.id' as const;\n\n/**\n * The state of the change (pull request/merge request/changelist).\n *\n * @example open\n * @example closed\n * @example merged\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_CHANGE_STATE = 'vcs.change.state' as const;\n\n/**\n * Enum value \"closed\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * Closed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_CLOSED = \"closed\" as const;\n\n/**\n * Enum value \"merged\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * Merged indicates that the change has been successfully integrated into the target codebase.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_MERGED = \"merged\" as const;\n\n/**\n * Enum value \"open\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * Open means the change is currently active and under review. It hasn't been merged into the target branch yet, and it's still possible to make changes or add comments.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_OPEN = \"open\" as const;\n\n/**\n * Enum value \"wip\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * WIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_WIP = \"wip\" as const;\n\n/**\n * The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary.\n *\n * @example Fixes broken thing\n * @example feat: add my new feature\n * @example [chore] update dependency\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_CHANGE_TITLE = 'vcs.change.title' as const;\n\n/**\n * The type of line change being measured on a branch or change.\n *\n * @example added\n * @example removed\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_LINE_CHANGE_TYPE = 'vcs.line_change.type' as const;\n\n/**\n * Enum value \"added\" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}.\n *\n * How many lines were added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_LINE_CHANGE_TYPE_VALUE_ADDED = \"added\" as const;\n\n/**\n * Enum value \"removed\" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}.\n *\n * How many lines were removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_LINE_CHANGE_TYPE_VALUE_REMOVED = \"removed\" as const;\n\n/**\n * The group owner within the version control system.\n *\n * @example my-org\n * @example myteam\n * @example business-unit\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_OWNER_NAME = 'vcs.owner.name' as const;\n\n/**\n * The name of the version control system provider.\n *\n * @example github\n * @example gitlab\n * @example gitea\n * @example bitbucket\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_PROVIDER_NAME = 'vcs.provider.name' as const;\n\n/**\n * Enum value \"bitbucket\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [Bitbucket](https://bitbucket.org)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_BITBUCKET = \"bitbucket\" as const;\n\n/**\n * Enum value \"gitea\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [Gitea](https://gitea.io)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITEA = \"gitea\" as const;\n\n/**\n * Enum value \"github\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [GitHub](https://github.com)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITHUB = \"github\" as const;\n\n/**\n * Enum value \"gitlab\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [GitLab](https://gitlab.com)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITLAB = \"gitlab\" as const;\n\n/**\n * Enum value \"gittea\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * Deprecated, use `gitea` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `gitea`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITTEA = \"gittea\" as const;\n\n/**\n * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository.\n *\n * @example my-feature-branch\n * @example tag-1-test\n *\n * @note `base` refers to the starting point of a change. For example, `main`\n * would be the base reference of type branch if you've created a new\n * reference of type branch from it and created new commits.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_BASE_NAME = 'vcs.ref.base.name' as const;\n\n/**\n * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN.\n *\n * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc\n * @example main\n * @example 123\n * @example HEAD\n *\n * @note `base` refers to the starting point of a change. For example, `main`\n * would be the base reference of type branch if you've created a new\n * reference of type branch from it and created new commits. The\n * revision can be a full [hash value (see\n * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf),\n * of the recorded change to a ref within a repository pointing to a\n * commit [commit](https://git-scm.com/docs/git-commit) object. It does\n * not necessarily have to be a hash; it can simply define a [revision\n * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)\n * which is an integer that is monotonically increasing. In cases where\n * it is identical to the `ref.base.name`, it **SHOULD** still be included.\n * It is up to the implementer to decide which value to set as the\n * revision based on the VCS system and situational context.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_BASE_REVISION = 'vcs.ref.base.revision' as const;\n\n/**\n * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.\n *\n * @example branch\n * @example tag\n *\n * @note `base` refers to the starting point of a change. For example, `main`\n * would be the base reference of type branch if you've created a new\n * reference of type branch from it and created new commits.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_BASE_TYPE = 'vcs.ref.base.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REF_BASE_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_BASE_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REF_BASE_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_BASE_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository.\n *\n * @example my-feature-branch\n * @example tag-1-test\n *\n * @note `head` refers to where you are right now; the current reference at a\n * given time.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_HEAD_NAME = 'vcs.ref.head.name' as const;\n\n/**\n * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN.\n *\n * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc\n * @example main\n * @example 123\n * @example HEAD\n *\n * @note `head` refers to where you are right now; the current reference at a\n * given time.The revision can be a full [hash value (see\n * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf),\n * of the recorded change to a ref within a repository pointing to a\n * commit [commit](https://git-scm.com/docs/git-commit) object. It does\n * not necessarily have to be a hash; it can simply define a [revision\n * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)\n * which is an integer that is monotonically increasing. In cases where\n * it is identical to the `ref.head.name`, it **SHOULD** still be included.\n * It is up to the implementer to decide which value to set as the\n * revision based on the VCS system and situational context.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_HEAD_REVISION = 'vcs.ref.head.revision' as const;\n\n/**\n * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.\n *\n * @example branch\n * @example tag\n *\n * @note `head` refers to where you are right now; the current reference at a\n * given time.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_HEAD_TYPE = 'vcs.ref.head.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_HEAD_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_HEAD_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.\n *\n * @example branch\n * @example tag\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_TYPE = 'vcs.ref.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REF_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REF_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * Deprecated, use `vcs.change.id` instead.\n *\n * @example 123\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 `vcs.change.id`.\n */\nexport const ATTR_VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id' as const;\n\n/**\n * Deprecated, use `vcs.change.title` instead.\n *\n * @example Fixes broken thing\n * @example feat: add my new feature\n * @example [chore] update dependency\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 `vcs.change.title`.\n */\nexport const ATTR_VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title' as const;\n\n/**\n * The human readable name of the repository. It **SHOULD NOT** include any additional identifier like Group/SubGroup in GitLab or organization in GitHub.\n *\n * @example semantic-conventions\n * @example my-cool-repo\n *\n * @note Due to it only being the name, it can clash with forks of the same\n * repository if collecting telemetry across multiple orgs or groups in\n * the same backends.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_NAME = 'vcs.repository.name' as const;\n\n/**\n * Deprecated, use `vcs.ref.head.name` instead.\n *\n * @example my-feature-branch\n * @example tag-1-test\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 `vcs.ref.head.name`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name' as const;\n\n/**\n * Deprecated, use `vcs.ref.head.revision` instead.\n *\n * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc\n * @example main\n * @example 123\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 `vcs.ref.head.revision`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision' as const;\n\n/**\n * Deprecated, use `vcs.ref.head.type` instead.\n *\n * @example branch\n * @example tag\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 `vcs.ref.head.type`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_TYPE = 'vcs.repository.ref.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REPOSITORY_REF_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * The [canonical URL](https://support.google.com/webmasters/answer/10347851) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser.\n *\n * @example https://github.com/opentelemetry/open-telemetry-collector-contrib\n * @example https://gitlab.com/my-org/my-project/my-projects-project/repo\n *\n * @note In Git Version Control Systems, the canonical URL **SHOULD NOT** include\n * the `.git` extension.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_URL_FULL = 'vcs.repository.url.full' as const;\n\n/**\n * The type of revision comparison.\n *\n * @example ahead\n * @example behind\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REVISION_DELTA_DIRECTION = 'vcs.revision_delta.direction' as const;\n\n/**\n * Enum value \"ahead\" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}.\n *\n * How many revisions the change is ahead of the target ref.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD = \"ahead\" as const;\n\n/**\n * Enum value \"behind\" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}.\n *\n * How many revisions the change is behind the target ref.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND = \"behind\" as const;\n\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 */\nexport const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description' as const;\n\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 */\nexport const ATTR_WEBENGINE_NAME = 'webengine.name' as const;\n\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 */\nexport const ATTR_WEBENGINE_VERSION = 'webengine.version' as const;\n\n/**\n * The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis.\n *\n * @example SYS1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ZOS_SMF_ID = 'zos.smf.id' as const;\n\n/**\n * The name of the SYSPLEX to which the z/OS system belongs too.\n *\n * @example SYSPLEX1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ZOS_SYSPLEX_NAME = 'zos.sysplex.name' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.d.ts new file mode 100644 index 0000000..8339e9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.d.ts @@ -0,0 +1,142 @@ +/** + * This event indicates that the application has detected substandard UI rendering performance. + * + * @note Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_APP_JANK: "app.jank"; +/** + * This event represents an instantaneous click on the screen of an application. + * + * @note The `app.screen.click` event can be used to indicate that a user has clicked or tapped on the screen portion of an application. Clicks outside of an application's active area **SHOULD NOT** generate this event. This event does not differentiate between touch/mouse down and touch/mouse up. Implementations **SHOULD** give preference to generating this event at the time the click is complete, typically on touch release or mouse up. The location of the click event **MUST** be provided in absolute screen pixels. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_APP_SCREEN_CLICK: "app.screen.click"; +/** + * This event indicates that an application widget has been clicked. + * + * @note Use this event to indicate that visual application component has been clicked, typically through a user's manual interaction. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_APP_WIDGET_CLICK: "app.widget.click"; +/** + * Deprecated. Use `azure.resource.log` instead. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource.log`. + */ +export declare const EVENT_AZ_RESOURCE_LOG: "az.resource.log"; +/** + * Describes Azure Resource Log event, see [Azure Resource Log Top-level Schema](https://learn.microsoft.com/azure/azure-monitor/essentials/resource-logs-schema#top-level-common-schema) for more details. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_AZURE_RESOURCE_LOG: "azure.resource.log"; +/** + * This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals). + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_BROWSER_WEB_VITAL: "browser.web_vital"; +/** + * This event represents an occurrence of a lifecycle transition on Android or iOS platform. + * + * @note The event body fields **MUST** be used to describe the state of the application at the time of the event. + * This event is meant to be used in conjunction with `os.name` [resource semantic convention](/docs/resource/os.md) to identify the mobile operating system (e.g. Android, iOS). + * The `android.app.state` and `ios.app.state` fields are mutually exclusive and **MUST NOT** be used together, each field **MUST** be used with its corresponding `os.name` value. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_DEVICE_APP_LIFECYCLE: "device.app.lifecycle"; +/** + * Defines feature flag evaluation as an event. + * + * @note A `feature_flag.evaluation` event **SHOULD** be emitted whenever a feature flag value is evaluated, which may happen many times over the course of an application lifecycle. For example, a website A/B testing different animations may evaluate a flag each time a button is clicked. A `feature_flag.evaluation` event is emitted on each evaluation even if the result is the same. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_FEATURE_FLAG_EVALUATION: "feature_flag.evaluation"; +/** + * This event describes the assistant message passed to GenAI system. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_ASSISTANT_MESSAGE: "gen_ai.assistant.message"; +/** + * This event describes the Gen AI response message. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.output.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_CHOICE: "gen_ai.choice"; +/** + * Describes the details of a GenAI completion request including chat history and parameters. + * + * @note This event is opt-in and could be used to store input and output details independently from traces. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS: "gen_ai.client.inference.operation.details"; +/** + * This event captures the result of evaluating GenAI output for quality, accuracy, or other characteristics. This event **SHOULD** be parented to GenAI operation span being evaluated when possible or set `gen_ai.response.id` when span id is not available. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_GEN_AI_EVALUATION_RESULT: "gen_ai.evaluation.result"; +/** + * This event describes the system instructions passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.system_instructions` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_SYSTEM_MESSAGE: "gen_ai.system.message"; +/** + * This event describes the response from a tool or function call passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_TOOL_MESSAGE: "gen_ai.tool.message"; +/** + * This event describes the user message passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_USER_MESSAGE: "gen_ai.user.message"; +/** + * Describes a message sent or received within the context of an RPC call. + * + * @note In the lifetime of an RPC stream, an event for each message sent/received on client and server spans **SHOULD** be created. In case of unary calls message events **SHOULD NOT** be recorded. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_RPC_MESSAGE: "rpc.message"; +/** + * Indicates that a session has ended. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.end` event **SHOULD** be emitted every time a session ends. When a session ends and continues as a new session, this event **SHOULD** be emitted prior to the `session.start` event. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_SESSION_END: "session.end"; +/** + * Indicates that a new session has been started, optionally linking to the prior session. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.start` event **MUST** be emitted every time a session is created. When a new session is created as a continuation of a prior session, the `session.previous_id` **SHOULD** be included in the event. The values of `session.id` and `session.previous_id` **MUST** be different. + * When the `session.start` event contains both `session.id` and `session.previous_id` fields, the event indicates that the previous session has ended. If the session ID in `session.previous_id` has not yet ended via explicit `session.end` event, then the consumer **SHOULD** treat this continuation event as semantically equivalent to `session.end(session.previous_id)` and `session.start(session.id)`. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_SESSION_START: "session.start"; +//# sourceMappingURL=experimental_events.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js new file mode 100644 index 0000000..091a7f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js @@ -0,0 +1,160 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//----------------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-experimental/events.ts.j2 +//----------------------------------------------------------------------------------------------------------------- +/** + * This event indicates that the application has detected substandard UI rendering performance. + * + * @note Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_APP_JANK = 'app.jank'; +/** + * This event represents an instantaneous click on the screen of an application. + * + * @note The `app.screen.click` event can be used to indicate that a user has clicked or tapped on the screen portion of an application. Clicks outside of an application's active area **SHOULD NOT** generate this event. This event does not differentiate between touch/mouse down and touch/mouse up. Implementations **SHOULD** give preference to generating this event at the time the click is complete, typically on touch release or mouse up. The location of the click event **MUST** be provided in absolute screen pixels. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_APP_SCREEN_CLICK = 'app.screen.click'; +/** + * This event indicates that an application widget has been clicked. + * + * @note Use this event to indicate that visual application component has been clicked, typically through a user's manual interaction. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_APP_WIDGET_CLICK = 'app.widget.click'; +/** + * Deprecated. Use `azure.resource.log` instead. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource.log`. + */ +export const EVENT_AZ_RESOURCE_LOG = 'az.resource.log'; +/** + * Describes Azure Resource Log event, see [Azure Resource Log Top-level Schema](https://learn.microsoft.com/azure/azure-monitor/essentials/resource-logs-schema#top-level-common-schema) for more details. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_AZURE_RESOURCE_LOG = 'azure.resource.log'; +/** + * This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals). + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_BROWSER_WEB_VITAL = 'browser.web_vital'; +/** + * This event represents an occurrence of a lifecycle transition on Android or iOS platform. + * + * @note The event body fields **MUST** be used to describe the state of the application at the time of the event. + * This event is meant to be used in conjunction with `os.name` [resource semantic convention](/docs/resource/os.md) to identify the mobile operating system (e.g. Android, iOS). + * The `android.app.state` and `ios.app.state` fields are mutually exclusive and **MUST NOT** be used together, each field **MUST** be used with its corresponding `os.name` value. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_DEVICE_APP_LIFECYCLE = 'device.app.lifecycle'; +/** + * Defines feature flag evaluation as an event. + * + * @note A `feature_flag.evaluation` event **SHOULD** be emitted whenever a feature flag value is evaluated, which may happen many times over the course of an application lifecycle. For example, a website A/B testing different animations may evaluate a flag each time a button is clicked. A `feature_flag.evaluation` event is emitted on each evaluation even if the result is the same. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_FEATURE_FLAG_EVALUATION = 'feature_flag.evaluation'; +/** + * This event describes the assistant message passed to GenAI system. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export const EVENT_GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message'; +/** + * This event describes the Gen AI response message. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.output.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export const EVENT_GEN_AI_CHOICE = 'gen_ai.choice'; +/** + * Describes the details of a GenAI completion request including chat history and parameters. + * + * @note This event is opt-in and could be used to store input and output details independently from traces. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS = 'gen_ai.client.inference.operation.details'; +/** + * This event captures the result of evaluating GenAI output for quality, accuracy, or other characteristics. This event **SHOULD** be parented to GenAI operation span being evaluated when possible or set `gen_ai.response.id` when span id is not available. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_GEN_AI_EVALUATION_RESULT = 'gen_ai.evaluation.result'; +/** + * This event describes the system instructions passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.system_instructions` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export const EVENT_GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message'; +/** + * This event describes the response from a tool or function call passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export const EVENT_GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message'; +/** + * This event describes the user message passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export const EVENT_GEN_AI_USER_MESSAGE = 'gen_ai.user.message'; +/** + * Describes a message sent or received within the context of an RPC call. + * + * @note In the lifetime of an RPC stream, an event for each message sent/received on client and server spans **SHOULD** be created. In case of unary calls message events **SHOULD NOT** be recorded. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_RPC_MESSAGE = 'rpc.message'; +/** + * Indicates that a session has ended. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.end` event **SHOULD** be emitted every time a session ends. When a session ends and continues as a new session, this event **SHOULD** be emitted prior to the `session.start` event. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_SESSION_END = 'session.end'; +/** + * Indicates that a new session has been started, optionally linking to the prior session. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.start` event **MUST** be emitted every time a session is created. When a new session is created as a continuation of a prior session, the `session.previous_id` **SHOULD** be included in the event. The values of `session.id` and `session.previous_id` **MUST** be different. + * When the `session.start` event contains both `session.id` and `session.previous_id` fields, the event indicates that the previous session has ended. If the session ID in `session.previous_id` has not yet ended via explicit `session.end` event, then the consumer **SHOULD** treat this continuation event as semantically equivalent to `session.end(session.previous_id)` and `session.start(session.id)`. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const EVENT_SESSION_START = 'session.start'; +//# sourceMappingURL=experimental_events.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js.map new file mode 100644 index 0000000..be1e7d0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js.map @@ -0,0 +1 @@ +{"version":3,"file":"experimental_events.js","sourceRoot":"","sources":["../../src/experimental_events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,mHAAmH;AACnH,mHAAmH;AACnH,mHAAmH;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,UAAmB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAA2B,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAA2B,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAA0B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAA6B,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAA4B,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAA+B,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAkC,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAAmC,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAwB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,2CAAoD,CAAC;AAEpH;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAAmC,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAgC,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAA8B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAA8B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAsB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAsB,CAAC;AAExD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-experimental/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------------\n\n/**\n * This event indicates that the application has detected substandard UI rendering performance.\n *\n * @note Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_APP_JANK = 'app.jank' as const;\n\n/**\n * This event represents an instantaneous click on the screen of an application.\n *\n * @note The `app.screen.click` event can be used to indicate that a user has clicked or tapped on the screen portion of an application. Clicks outside of an application's active area **SHOULD NOT** generate this event. This event does not differentiate between touch/mouse down and touch/mouse up. Implementations **SHOULD** give preference to generating this event at the time the click is complete, typically on touch release or mouse up. The location of the click event **MUST** be provided in absolute screen pixels.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_APP_SCREEN_CLICK = 'app.screen.click' as const;\n\n/**\n * This event indicates that an application widget has been clicked.\n *\n * @note Use this event to indicate that visual application component has been clicked, typically through a user's manual interaction.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_APP_WIDGET_CLICK = 'app.widget.click' as const;\n\n/**\n * Deprecated. Use `azure.resource.log` instead.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `azure.resource.log`.\n */\nexport const EVENT_AZ_RESOURCE_LOG = 'az.resource.log' as const;\n\n/**\n * Describes Azure Resource Log event, see [Azure Resource Log Top-level Schema](https://learn.microsoft.com/azure/azure-monitor/essentials/resource-logs-schema#top-level-common-schema) for more details.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_AZURE_RESOURCE_LOG = 'azure.resource.log' as const;\n\n/**\n * This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals).\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_BROWSER_WEB_VITAL = 'browser.web_vital' as const;\n\n/**\n * This event represents an occurrence of a lifecycle transition on Android or iOS platform.\n *\n * @note The event body fields **MUST** be used to describe the state of the application at the time of the event.\n * This event is meant to be used in conjunction with `os.name` [resource semantic convention](/docs/resource/os.md) to identify the mobile operating system (e.g. Android, iOS).\n * The `android.app.state` and `ios.app.state` fields are mutually exclusive and **MUST NOT** be used together, each field **MUST** be used with its corresponding `os.name` value.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_DEVICE_APP_LIFECYCLE = 'device.app.lifecycle' as const;\n\n/**\n * Defines feature flag evaluation as an event.\n *\n * @note A `feature_flag.evaluation` event **SHOULD** be emitted whenever a feature flag value is evaluated, which may happen many times over the course of an application lifecycle. For example, a website A/B testing different animations may evaluate a flag each time a button is clicked. A `feature_flag.evaluation` event is emitted on each evaluation even if the result is the same.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_FEATURE_FLAG_EVALUATION = 'feature_flag.evaluation' as const;\n\n/**\n * This event describes the assistant message passed to GenAI system.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message' as const;\n\n/**\n * This event describes the Gen AI response message.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.output.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_CHOICE = 'gen_ai.choice' as const;\n\n/**\n * Describes the details of a GenAI completion request including chat history and parameters.\n *\n * @note This event is opt-in and could be used to store input and output details independently from traces.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS = 'gen_ai.client.inference.operation.details' as const;\n\n/**\n * This event captures the result of evaluating GenAI output for quality, accuracy, or other characteristics. This event **SHOULD** be parented to GenAI operation span being evaluated when possible or set `gen_ai.response.id` when span id is not available.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_GEN_AI_EVALUATION_RESULT = 'gen_ai.evaluation.result' as const;\n\n/**\n * This event describes the system instructions passed to the GenAI model.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.system_instructions` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message' as const;\n\n/**\n * This event describes the response from a tool or function call passed to the GenAI model.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message' as const;\n\n/**\n * This event describes the user message passed to the GenAI model.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_USER_MESSAGE = 'gen_ai.user.message' as const;\n\n/**\n * Describes a message sent or received within the context of an RPC call.\n *\n * @note In the lifetime of an RPC stream, an event for each message sent/received on client and server spans **SHOULD** be created. In case of unary calls message events **SHOULD NOT** be recorded.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_RPC_MESSAGE = 'rpc.message' as const;\n\n/**\n * Indicates that a session has ended.\n *\n * @note For instrumentation that tracks user behavior during user sessions, a `session.end` event **SHOULD** be emitted every time a session ends. When a session ends and continues as a new session, this event **SHOULD** be emitted prior to the `session.start` event.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_SESSION_END = 'session.end' as const;\n\n/**\n * Indicates that a new session has been started, optionally linking to the prior session.\n *\n * @note For instrumentation that tracks user behavior during user sessions, a `session.start` event **MUST** be emitted every time a session is created. When a new session is created as a continuation of a prior session, the `session.previous_id` **SHOULD** be included in the event. The values of `session.id` and `session.previous_id` **MUST** be different.\n * When the `session.start` event contains both `session.id` and `session.previous_id` fields, the event indicates that the previous session has ended. If the session ID in `session.previous_id` has not yet ended via explicit `session.end` event, then the consumer **SHOULD** treat this continuation event as semantically equivalent to `session.end(session.previous_id)` and `session.start(session.id)`.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_SESSION_START = 'session.start' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.d.ts new file mode 100644 index 0000000..68964a0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.d.ts @@ -0,0 +1,3647 @@ +/** + * The authentication duration for a request. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_AUTHENTICATE_DURATION: "aspnetcore.authentication.authenticate.duration"; +/** + * The total number of times a scheme is challenged. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_CHALLENGES: "aspnetcore.authentication.challenges"; +/** + * The total number of times an authenticated user attempts to access a resource they are not permitted to access. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_FORBIDS: "aspnetcore.authentication.forbids"; +/** + * The total number of times a principal is signed in with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_INS: "aspnetcore.authentication.sign_ins"; +/** + * The total number of times a principal is signed out with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_OUTS: "aspnetcore.authentication.sign_outs"; +/** + * The total number of authorization attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Authorization`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHORIZATION_ATTEMPTS: "aspnetcore.authorization.attempts"; +/** + * The duration of authenticate attempts. The authenticate metrics is recorded by sign in methods such as PasswordSignInAsync and TwoFactorSignInAsync. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_AUTHENTICATE_DURATION: "aspnetcore.identity.sign_in.authenticate.duration"; +/** + * The total number of check password attempts. Checks that the account is in a state that can log in and that the password is valid using the UserManager.CheckPasswordAsync method. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_CHECK_PASSWORD_ATTEMPTS: "aspnetcore.identity.sign_in.check_password_attempts"; +/** + * The total number of calls to sign in user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_INS: "aspnetcore.identity.sign_in.sign_ins"; +/** + * The total number of calls to sign out user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_OUTS: "aspnetcore.identity.sign_in.sign_outs"; +/** + * The total number of two factor clients forgotten. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_FORGOTTEN: "aspnetcore.identity.sign_in.two_factor_clients_forgotten"; +/** + * The total number of two factor clients remembered. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_REMEMBERED: "aspnetcore.identity.sign_in.two_factor_clients_remembered"; +/** + * The number of check password attempts. Only checks whether the password is valid and not whether the user account is in a state that can log in. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_CHECK_PASSWORD_ATTEMPTS: "aspnetcore.identity.user.check_password_attempts"; +/** + * The duration of user creation operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_CREATE_DURATION: "aspnetcore.identity.user.create.duration"; +/** + * The duration of user deletion operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_DELETE_DURATION: "aspnetcore.identity.user.delete.duration"; +/** + * The total number of token generations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_GENERATED_TOKENS: "aspnetcore.identity.user.generated_tokens"; +/** + * The duration of user update operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_UPDATE_DURATION: "aspnetcore.identity.user.update.duration"; +/** + * The total number of token verification attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_VERIFY_TOKEN_ATTEMPTS: "aspnetcore.identity.user.verify_token_attempts"; +/** + * Total number of bytes allocated by the memory pool. Allocation occurs when a memory rental request exceeds the available pooled memory. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_ALLOCATED: "aspnetcore.memory_pool.allocated"; +/** + * Total number of bytes evicted from the memory pool. Eviction occurs when idle pooled memory is reclaimed. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_EVICTED: "aspnetcore.memory_pool.evicted"; +/** + * Number of bytes currently pooled and available for reuse. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_POOLED: "aspnetcore.memory_pool.pooled"; +/** + * Total number of bytes rented from the memory pool. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_RENTED: "aspnetcore.memory_pool.rented"; +/** + * Number of active client instances. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_AZURE_COSMOSDB_CLIENT_ACTIVE_INSTANCE_COUNT: "azure.cosmosdb.client.active_instance.count"; +/** + * [Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_AZURE_COSMOSDB_CLIENT_OPERATION_REQUEST_CHARGE: "azure.cosmosdb.client.operation.request_charge"; +/** + * The number of pipeline runs currently active in the system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_PIPELINE_RUN_ACTIVE: "cicd.pipeline.run.active"; +/** + * Duration of a pipeline run grouped by pipeline, state and result. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_PIPELINE_RUN_DURATION: "cicd.pipeline.run.duration"; +/** + * The number of errors encountered in pipeline runs (eg. compile, test failures). + * + * @note There might be errors in a pipeline run that are non fatal (eg. they are suppressed) or in a parallel stage multiple stages could have a fatal error. + * This means that this error count might not be the same as the count of metric `cicd.pipeline.run.duration` with run result `failure`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_PIPELINE_RUN_ERRORS: "cicd.pipeline.run.errors"; +/** + * The number of errors in a component of the CICD system (eg. controller, scheduler, agent). + * + * @note Errors in pipeline run execution are explicitly excluded. Ie a test failure is not counted in this metric. + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_SYSTEM_ERRORS: "cicd.system.errors"; +/** + * The number of workers on the CICD system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_WORKER_COUNT: "cicd.worker.count"; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific container on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_CPU_TIME: "container.cpu.time"; +/** + * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific container on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_CPU_USAGE: "container.cpu.usage"; +/** + * Disk bytes for the container. + * + * @note The total number of bytes read/written successfully (aggregated from all disks). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_DISK_IO: "container.disk.io"; +/** + * Container filesystem available bytes. + * + * @note In K8s, this metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_FILESYSTEM_AVAILABLE: "container.filesystem.available"; +/** + * Container filesystem capacity. + * + * @note In K8s, this metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_FILESYSTEM_CAPACITY: "container.filesystem.capacity"; +/** + * Container filesystem usage. + * + * @note This may not equal capacity - available. + * + * In K8s, this metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_FILESYSTEM_USAGE: "container.filesystem.usage"; +/** + * Container memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and by subtracting the `container_memory_working_set_bytes` metric from the `container_spec_memory_limit_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_AVAILABLE: "container.memory.available"; +/** + * Container memory paging faults. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_failures_total{failure_type=pgfault, scope=container}` and `container_memory_failures_total{failure_type=pgmajfault, scope=container}`metric. + * In K8s, this metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_PAGING_FAULTS: "container.memory.paging.faults"; +/** + * Container memory RSS. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_rss` metric. + * In K8s, this metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_RSS: "container.memory.rss"; +/** + * Memory usage of the container. + * + * @note Memory usage of the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_USAGE: "container.memory.usage"; +/** + * Container memory working set. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_working_set_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_WORKING_SET: "container.memory.working_set"; +/** + * Network bytes for the container. + * + * @note The number of bytes sent/received on all network interfaces by the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_NETWORK_IO: "container.network.io"; +/** + * The time the container has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_UPTIME: "container.uptime"; +/** + * Deprecated. Use `system.cpu.frequency` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.frequency`. + */ +export declare const METRIC_CPU_FREQUENCY: "cpu.frequency"; +/** + * Deprecated. Use `system.cpu.time` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.time`. + */ +export declare const METRIC_CPU_TIME: "cpu.time"; +/** + * Deprecated. Use `system.cpu.utilization` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.utilization`. + */ +export declare const METRIC_CPU_UTILIZATION: "cpu.utilization"; +/** + * The total number of objects collected inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CPYTHON_GC_COLLECTED_OBJECTS: "cpython.gc.collected_objects"; +/** + * The number of times a generation was collected since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CPYTHON_GC_COLLECTIONS: "cpython.gc.collections"; +/** + * The total number of objects which were found to be uncollectable inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CPYTHON_GC_UNCOLLECTABLE_OBJECTS: "cpython.gc.uncollectable_objects"; +/** + * The number of connections that are currently in state described by the `state` attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_COUNT: "db.client.connection.count"; +/** + * The time it took to create a new connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_CREATE_TIME: "db.client.connection.create_time"; +/** + * The maximum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_IDLE_MAX: "db.client.connection.idle.max"; +/** + * The minimum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_IDLE_MIN: "db.client.connection.idle.min"; +/** + * The maximum number of open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_MAX: "db.client.connection.max"; +/** + * The number of current pending requests for an open connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS: "db.client.connection.pending_requests"; +/** + * The number of connection timeouts that have occurred trying to obtain a connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_TIMEOUTS: "db.client.connection.timeouts"; +/** + * The time between borrowing a connection and returning it to the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_USE_TIME: "db.client.connection.use_time"; +/** + * The time it took to obtain an open connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_WAIT_TIME: "db.client.connection.wait_time"; +/** + * Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.create_time` with unit `s`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME: "db.client.connections.create_time"; +/** + * Deprecated, use `db.client.connection.idle.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.max`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MAX: "db.client.connections.idle.max"; +/** + * Deprecated, use `db.client.connection.idle.min` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.min`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MIN: "db.client.connections.idle.min"; +/** + * Deprecated, use `db.client.connection.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.max`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_MAX: "db.client.connections.max"; +/** + * Deprecated, use `db.client.connection.pending_requests` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pending_requests`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS: "db.client.connections.pending_requests"; +/** + * Deprecated, use `db.client.connection.timeouts` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.timeouts`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_TIMEOUTS: "db.client.connections.timeouts"; +/** + * Deprecated, use `db.client.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.count`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_USAGE: "db.client.connections.usage"; +/** + * Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.use_time` with unit `s`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_USE_TIME: "db.client.connections.use_time"; +/** + * Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.wait_time` with unit `s`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME: "db.client.connections.wait_time"; +/** + * Deprecated, use `azure.cosmosdb.client.active_instance.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.active_instance.count`. + */ +export declare const METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT: "db.client.cosmosdb.active_instance.count"; +/** + * Deprecated, use `azure.cosmosdb.client.operation.request_charge` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.operation.request_charge`. + */ +export declare const METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE: "db.client.cosmosdb.operation.request_charge"; +/** + * The actual number of records returned by the database operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS: "db.client.response.returned_rows"; +/** + * Measures the time taken to perform a DNS lookup. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DNS_LOOKUP_DURATION: "dns.lookup.duration"; +/** + * Number of invocation cold starts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_COLDSTARTS: "faas.coldstarts"; +/** + * Distribution of CPU usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_CPU_USAGE: "faas.cpu_usage"; +/** + * Number of invocation errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_ERRORS: "faas.errors"; +/** + * Measures the duration of the function's initialization, such as a cold start. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_INIT_DURATION: "faas.init_duration"; +/** + * Number of successful invocations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_INVOCATIONS: "faas.invocations"; +/** + * Measures the duration of the function's logic execution. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_INVOKE_DURATION: "faas.invoke_duration"; +/** + * Distribution of max memory usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_MEM_USAGE: "faas.mem_usage"; +/** + * Distribution of net I/O usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_NET_IO: "faas.net_io"; +/** + * Number of invocation timeouts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_TIMEOUTS: "faas.timeouts"; +/** + * GenAI operation duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_CLIENT_OPERATION_DURATION: "gen_ai.client.operation.duration"; +/** + * Number of input and output tokens used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_CLIENT_TOKEN_USAGE: "gen_ai.client.token.usage"; +/** + * Generative AI server request duration such as time-to-last byte or last output token. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_SERVER_REQUEST_DURATION: "gen_ai.server.request.duration"; +/** + * Time per output token generated after the first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN: "gen_ai.server.time_per_output_token"; +/** + * Time to generate first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_SERVER_TIME_TO_FIRST_TOKEN: "gen_ai.server.time_to_first_token"; +/** + * Heap size target percentage configured by the user, otherwise 100. + * + * @note The value range is [0.0,100.0]. Computed from `/gc/gogc:percent`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_CONFIG_GOGC: "go.config.gogc"; +/** + * Count of live goroutines. + * + * @note Computed from `/sched/goroutines:goroutines`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_GOROUTINE_COUNT: "go.goroutine.count"; +/** + * Memory allocated to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_ALLOCATED: "go.memory.allocated"; +/** + * Count of allocations to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:objects`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_ALLOCATIONS: "go.memory.allocations"; +/** + * Heap size target for the end of the GC cycle. + * + * @note Computed from `/gc/heap/goal:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_GC_GOAL: "go.memory.gc.goal"; +/** + * Go runtime memory limit configured by the user, if a limit exists. + * + * @note Computed from `/gc/gomemlimit:bytes`. This metric is excluded if the limit obtained from the Go runtime is math.MaxInt64. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_LIMIT: "go.memory.limit"; +/** + * Memory used by the Go runtime. + * + * @note Computed from `(/memory/classes/total:bytes - /memory/classes/heap/released:bytes)`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_USED: "go.memory.used"; +/** + * The number of OS threads that can execute user-level Go code simultaneously. + * + * @note Computed from `/sched/gomaxprocs:threads`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_PROCESSOR_LIMIT: "go.processor.limit"; +/** + * The time goroutines have spent in the scheduler in a runnable state before actually running. + * + * @note Computed from `/sched/latencies:seconds`. Bucket boundaries are provided by the runtime, and are subject to change. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_SCHEDULE_DURATION: "go.schedule.duration"; +/** + * Number of active HTTP requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_ACTIVE_REQUESTS: "http.client.active_requests"; +/** + * The duration of the successfully established outbound HTTP connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_CONNECTION_DURATION: "http.client.connection.duration"; +/** + * Number of outbound HTTP connections that are currently active or idle on the client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_OPEN_CONNECTIONS: "http.client.open_connections"; +/** + * Size of HTTP client request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_REQUEST_BODY_SIZE: "http.client.request.body.size"; +/** + * Size of HTTP client response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE: "http.client.response.body.size"; +/** + * Number of active HTTP server requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_SERVER_ACTIVE_REQUESTS: "http.server.active_requests"; +/** + * Size of HTTP server request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_SERVER_REQUEST_BODY_SIZE: "http.server.request.body.size"; +/** + * Size of HTTP server response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_SERVER_RESPONSE_BODY_SIZE: "http.server.response.body.size"; +/** + * Remaining fraction of battery charge. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_BATTERY_CHARGE: "hw.battery.charge"; +/** + * Lower limit of battery charge fraction to ensure proper operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_BATTERY_CHARGE_LIMIT: "hw.battery.charge.limit"; +/** + * Time left before battery is completely charged or discharged. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_BATTERY_TIME_LEFT: "hw.battery.time_left"; +/** + * CPU current frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_CPU_SPEED: "hw.cpu.speed"; +/** + * CPU maximum frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_CPU_SPEED_LIMIT: "hw.cpu.speed.limit"; +/** + * Energy consumed by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_ENERGY: "hw.energy"; +/** + * Number of errors encountered by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_ERRORS: "hw.errors"; +/** + * Fan speed in revolutions per minute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_FAN_SPEED: "hw.fan.speed"; +/** + * Speed limit in rpm. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_FAN_SPEED_LIMIT: "hw.fan.speed.limit"; +/** + * Fan speed expressed as a fraction of its maximum speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_FAN_SPEED_RATIO: "hw.fan.speed_ratio"; +/** + * Received and transmitted bytes by the GPU. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_IO: "hw.gpu.io"; +/** + * Size of the GPU memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_MEMORY_LIMIT: "hw.gpu.memory.limit"; +/** + * GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_MEMORY_USAGE: "hw.gpu.memory.usage"; +/** + * Fraction of GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_MEMORY_UTILIZATION: "hw.gpu.memory.utilization"; +/** + * Fraction of time spent in a specific task. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_UTILIZATION: "hw.gpu.utilization"; +/** + * Ambient (external) temperature of the physical host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_AMBIENT_TEMPERATURE: "hw.host.ambient_temperature"; +/** + * Total energy consumed by the entire physical host, in joules. + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_ENERGY: "hw.host.energy"; +/** + * By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_HEATING_MARGIN: "hw.host.heating_margin"; +/** + * Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred). + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_POWER: "hw.host.power"; +/** + * Size of the logical disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_LOGICAL_DISK_LIMIT: "hw.logical_disk.limit"; +/** + * Logical disk space usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_LOGICAL_DISK_USAGE: "hw.logical_disk.usage"; +/** + * Logical disk space utilization as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_LOGICAL_DISK_UTILIZATION: "hw.logical_disk.utilization"; +/** + * Size of the memory module. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_MEMORY_SIZE: "hw.memory.size"; +/** + * Link speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_BANDWIDTH_LIMIT: "hw.network.bandwidth.limit"; +/** + * Utilization of the network bandwidth as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_BANDWIDTH_UTILIZATION: "hw.network.bandwidth.utilization"; +/** + * Received and transmitted network traffic in bytes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_IO: "hw.network.io"; +/** + * Received and transmitted network traffic in packets (or frames). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_PACKETS: "hw.network.packets"; +/** + * Link status: `1` (up) or `0` (down). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_UP: "hw.network.up"; +/** + * Endurance remaining for this SSD disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_PHYSICAL_DISK_ENDURANCE_UTILIZATION: "hw.physical_disk.endurance_utilization"; +/** + * Size of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_PHYSICAL_DISK_SIZE: "hw.physical_disk.size"; +/** + * Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_PHYSICAL_DISK_SMART: "hw.physical_disk.smart"; +/** + * Instantaneous power consumed by the component. + * + * @note It is recommended to report `hw.energy` instead of `hw.power` when possible. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER: "hw.power"; +/** + * Maximum power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER_SUPPLY_LIMIT: "hw.power_supply.limit"; +/** + * Current power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER_SUPPLY_USAGE: "hw.power_supply.usage"; +/** + * Utilization of the power supply as a fraction of its maximum output. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER_SUPPLY_UTILIZATION: "hw.power_supply.utilization"; +/** + * Operational status: `1` (true) or `0` (false) for each of the possible states. + * + * @note `hw.status` is currently specified as an *UpDownCounter* but would ideally be represented using a [*StateSet* as defined in OpenMetrics](https://github.com/prometheus/OpenMetrics/blob/v1.0.0/specification/OpenMetrics.md#stateset). This semantic convention will be updated once *StateSet* is specified in OpenTelemetry. This planned change is not expected to have any consequence on the way users query their timeseries backend to retrieve the values of `hw.status` over time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_STATUS: "hw.status"; +/** + * Operations performed by the tape drive. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_TAPE_DRIVE_OPERATIONS: "hw.tape_drive.operations"; +/** + * Temperature in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_TEMPERATURE: "hw.temperature"; +/** + * Temperature limit in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_TEMPERATURE_LIMIT: "hw.temperature.limit"; +/** + * Voltage measured by the sensor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_VOLTAGE: "hw.voltage"; +/** + * Voltage limit in Volts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_VOLTAGE_LIMIT: "hw.voltage.limit"; +/** + * Nominal (expected) voltage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_VOLTAGE_NOMINAL: "hw.voltage.nominal"; +/** + * Number of buffers in the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_BUFFER_COUNT: "jvm.buffer.count"; +/** + * Measure of total memory capacity of buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_BUFFER_MEMORY_LIMIT: "jvm.buffer.memory.limit"; +/** + * Deprecated, use `jvm.buffer.memory.used` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jvm.buffer.memory.used`. + */ +export declare const METRIC_JVM_BUFFER_MEMORY_USAGE: "jvm.buffer.memory.usage"; +/** + * Measure of memory used by buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_BUFFER_MEMORY_USED: "jvm.buffer.memory.used"; +/** + * Number of open file descriptors as reported by the JVM. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_FILE_DESCRIPTOR_COUNT: "jvm.file_descriptor.count"; +/** + * Measure of initial memory requested. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_MEMORY_INIT: "jvm.memory.init"; +/** + * Average CPU load of the whole system for the last minute as reported by the JVM. + * + * @note The value range is [0,n], where n is the number of CPU cores - or a negative number if the value is not available. 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/java.management/java/lang/management/OperatingSystemMXBean.html#getSystemLoadAverage()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_SYSTEM_CPU_LOAD_1M: "jvm.system.cpu.load_1m"; +/** + * Recent CPU utilization for the whole system as reported by the JVM. + * + * @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#getCpuLoad()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_SYSTEM_CPU_UTILIZATION: "jvm.system.cpu.utilization"; +/** + * Maximum CPU resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_LIMIT: "k8s.container.cpu.limit"; +/** + * The ratio of container CPU usage to its CPU limit. + * + * @note The value range is [0.0,1.0]. A value of 1.0 means the container is using 100% of its CPU limit. If the CPU limit is not set, this metric **SHOULD NOT** be emitted for that container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION: "k8s.container.cpu.limit_utilization"; +/** + * CPU resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_REQUEST: "k8s.container.cpu.request"; +/** + * The ratio of container CPU usage to its CPU request. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION: "k8s.container.cpu.request_utilization"; +/** + * Maximum ephemeral storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_LIMIT: "k8s.container.ephemeral_storage.limit"; +/** + * Ephemeral storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_REQUEST: "k8s.container.ephemeral_storage.request"; +/** + * Maximum memory resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_MEMORY_LIMIT: "k8s.container.memory.limit"; +/** + * Memory resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_MEMORY_REQUEST: "k8s.container.memory.request"; +/** + * Indicates whether the container is currently marked as ready to accept traffic, based on its readiness probe (1 = ready, 0 = not ready). + * + * @note This metric **SHOULD** reflect the value of the `ready` field in the + * [K8s ContainerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_READY: "k8s.container.ready"; +/** + * Describes how many times the container has restarted (since the last counter reset). + * + * @note This value is pulled directly from the K8s API and the value can go indefinitely high and be reset to 0 + * at any time depending on how your kubelet is configured to prune dead containers. + * It is best to not depend too much on the exact value but rather look at it as + * either == 0, in which case you can conclude there were no restarts in the recent past, or > 0, in which case + * you can conclude there were restarts in the recent past, and not try and analyze the value beyond that. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_RESTART_COUNT: "k8s.container.restart.count"; +/** + * Describes the number of K8s containers that are currently in a state for a given reason. + * + * @note All possible container state reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STATUS_REASON: "k8s.container.status.reason"; +/** + * Describes the number of K8s containers that are currently in a given state. + * + * @note All possible container states will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STATUS_STATE: "k8s.container.status.state"; +/** + * Maximum storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STORAGE_LIMIT: "k8s.container.storage.limit"; +/** + * Storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STORAGE_REQUEST: "k8s.container.storage.request"; +/** + * Deprecated, use `k8s.cronjob.job.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.cronjob.job.active`. + */ +export declare const METRIC_K8S_CRONJOB_ACTIVE_JOBS: "k8s.cronjob.active_jobs"; +/** + * The number of actively running jobs for a cronjob. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CRONJOB_JOB_ACTIVE: "k8s.cronjob.job.active"; +/** + * Deprecated, use `k8s.daemonset.node.current_scheduled` instead. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.current_scheduled`. + */ +export declare const METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES: "k8s.daemonset.current_scheduled_nodes"; +/** + * Deprecated, use `k8s.daemonset.node.desired_scheduled` instead. + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.desired_scheduled`. + */ +export declare const METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES: "k8s.daemonset.desired_scheduled_nodes"; +/** + * Deprecated, use `k8s.daemonset.node.misscheduled` instead. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.misscheduled`. + */ +export declare const METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES: "k8s.daemonset.misscheduled_nodes"; +/** + * Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED: "k8s.daemonset.node.current_scheduled"; +/** + * Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod). + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED: "k8s.daemonset.node.desired_scheduled"; +/** + * Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED: "k8s.daemonset.node.misscheduled"; +/** + * Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_READY: "k8s.daemonset.node.ready"; +/** + * Deprecated, use `k8s.daemonset.node.ready` instead. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.ready`. + */ +export declare const METRIC_K8S_DAEMONSET_READY_NODES: "k8s.daemonset.ready_nodes"; +/** + * Deprecated, use `k8s.deployment.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.available`. + */ +export declare const METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS: "k8s.deployment.available_pods"; +/** + * Deprecated, use `k8s.deployment.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.desired`. + */ +export declare const METRIC_K8S_DEPLOYMENT_DESIRED_PODS: "k8s.deployment.desired_pods"; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DEPLOYMENT_POD_AVAILABLE: "k8s.deployment.pod.available"; +/** + * Number of desired replica pods in this deployment. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DEPLOYMENT_POD_DESIRED: "k8s.deployment.pod.desired"; +/** + * Deprecated, use `k8s.hpa.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.current`. + */ +export declare const METRIC_K8S_HPA_CURRENT_PODS: "k8s.hpa.current_pods"; +/** + * Deprecated, use `k8s.hpa.pod.desired` instead. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.desired`. + */ +export declare const METRIC_K8S_HPA_DESIRED_PODS: "k8s.hpa.desired_pods"; +/** + * Deprecated, use `k8s.hpa.pod.max` instead. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.max`. + */ +export declare const METRIC_K8S_HPA_MAX_PODS: "k8s.hpa.max_pods"; +/** + * Target average utilization, in percentage, for CPU resource in HPA config. + * + * @note This metric aligns with the `averageUtilization` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_UTILIZATION: "k8s.hpa.metric.target.cpu.average_utilization"; +/** + * Target average value for CPU resource in HPA config. + * + * @note This metric aligns with the `averageValue` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_VALUE: "k8s.hpa.metric.target.cpu.average_value"; +/** + * Target value for CPU resource in HPA config. + * + * @note This metric aligns with the `value` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_METRIC_TARGET_CPU_VALUE: "k8s.hpa.metric.target.cpu.value"; +/** + * Deprecated, use `k8s.hpa.pod.min` instead. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.min`. + */ +export declare const METRIC_K8S_HPA_MIN_PODS: "k8s.hpa.min_pods"; +/** + * Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_CURRENT: "k8s.hpa.pod.current"; +/** + * Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_DESIRED: "k8s.hpa.pod.desired"; +/** + * The upper limit for the number of replica pods to which the autoscaler can scale up. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_MAX: "k8s.hpa.pod.max"; +/** + * The lower limit for the number of replica pods to which the autoscaler can scale down. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_MIN: "k8s.hpa.pod.min"; +/** + * Deprecated, use `k8s.job.pod.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.active`. + */ +export declare const METRIC_K8S_JOB_ACTIVE_PODS: "k8s.job.active_pods"; +/** + * Deprecated, use `k8s.job.pod.desired_successful` instead. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.desired_successful`. + */ +export declare const METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS: "k8s.job.desired_successful_pods"; +/** + * Deprecated, use `k8s.job.pod.failed` instead. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.failed`. + */ +export declare const METRIC_K8S_JOB_FAILED_PODS: "k8s.job.failed_pods"; +/** + * Deprecated, use `k8s.job.pod.max_parallel` instead. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.max_parallel`. + */ +export declare const METRIC_K8S_JOB_MAX_PARALLEL_PODS: "k8s.job.max_parallel_pods"; +/** + * The number of pending and actively running pods for a job. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_ACTIVE: "k8s.job.pod.active"; +/** + * The desired number of successfully finished pods the job should be run with. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL: "k8s.job.pod.desired_successful"; +/** + * The number of pods which reached phase Failed for a job. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_FAILED: "k8s.job.pod.failed"; +/** + * The max desired number of pods the job should run at any given time. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_MAX_PARALLEL: "k8s.job.pod.max_parallel"; +/** + * The number of pods which reached phase Succeeded for a job. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_SUCCESSFUL: "k8s.job.pod.successful"; +/** + * Deprecated, use `k8s.job.pod.successful` instead. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.successful`. + */ +export declare const METRIC_K8S_JOB_SUCCESSFUL_PODS: "k8s.job.successful_pods"; +/** + * Describes number of K8s namespaces that are currently in a given phase. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NAMESPACE_PHASE: "k8s.namespace.phase"; +/** + * Deprecated, use `k8s.node.cpu.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.cpu.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_CPU: "k8s.node.allocatable.cpu"; +/** + * Deprecated, use `k8s.node.ephemeral_storage.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.ephemeral_storage.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE: "k8s.node.allocatable.ephemeral_storage"; +/** + * Deprecated, use `k8s.node.memory.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.memory.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_MEMORY: "k8s.node.allocatable.memory"; +/** + * Deprecated, use `k8s.node.pod.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.pod.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_PODS: "k8s.node.allocatable.pods"; +/** + * Describes the condition of a particular Node. + * + * @note All possible node condition pairs (type and status) will be reported at each time interval to avoid missing metrics. Condition pairs corresponding to the current conditions' statuses will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CONDITION_STATUS: "k8s.node.condition.status"; +/** + * Amount of cpu allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CPU_ALLOCATABLE: "k8s.node.cpu.allocatable"; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Node on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CPU_TIME: "k8s.node.cpu.time"; +/** + * Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Node on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CPU_USAGE: "k8s.node.cpu.usage"; +/** + * Amount of ephemeral-storage allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE: "k8s.node.ephemeral_storage.allocatable"; +/** + * Node filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_FILESYSTEM_AVAILABLE: "k8s.node.filesystem.available"; +/** + * Node filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_FILESYSTEM_CAPACITY: "k8s.node.filesystem.capacity"; +/** + * Node filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_FILESYSTEM_USAGE: "k8s.node.filesystem.usage"; +/** + * Amount of memory allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_ALLOCATABLE: "k8s.node.memory.allocatable"; +/** + * Node memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_AVAILABLE: "k8s.node.memory.available"; +/** + * Node memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) fields of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_PAGING_FAULTS: "k8s.node.memory.paging.faults"; +/** + * Node memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_RSS: "k8s.node.memory.rss"; +/** + * Memory usage of the Node. + * + * @note Total memory usage of the Node + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_USAGE: "k8s.node.memory.usage"; +/** + * Node memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_WORKING_SET: "k8s.node.memory.working_set"; +/** + * Node network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_NETWORK_ERRORS: "k8s.node.network.errors"; +/** + * Network bytes for the Node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_NETWORK_IO: "k8s.node.network.io"; +/** + * Amount of pods allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_POD_ALLOCATABLE: "k8s.node.pod.allocatable"; +/** + * The time the Node has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_UPTIME: "k8s.node.uptime"; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Pod on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_CPU_TIME: "k8s.pod.cpu.time"; +/** + * Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Pod on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_CPU_USAGE: "k8s.pod.cpu.usage"; +/** + * Pod filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_FILESYSTEM_AVAILABLE: "k8s.pod.filesystem.available"; +/** + * Pod filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_FILESYSTEM_CAPACITY: "k8s.pod.filesystem.capacity"; +/** + * Pod filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_FILESYSTEM_USAGE: "k8s.pod.filesystem.usage"; +/** + * Pod memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_AVAILABLE: "k8s.pod.memory.available"; +/** + * Pod memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_PAGING_FAULTS: "k8s.pod.memory.paging.faults"; +/** + * Pod memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_RSS: "k8s.pod.memory.rss"; +/** + * Memory usage of the Pod. + * + * @note Total memory usage of the Pod + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_USAGE: "k8s.pod.memory.usage"; +/** + * Pod memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_WORKING_SET: "k8s.pod.memory.working_set"; +/** + * Pod network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_NETWORK_ERRORS: "k8s.pod.network.errors"; +/** + * Network bytes for the Pod. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_NETWORK_IO: "k8s.pod.network.io"; +/** + * Describes number of K8s Pods that are currently in a given phase. + * + * @note All possible pod phases will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current phase will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_STATUS_PHASE: "k8s.pod.status.phase"; +/** + * Describes the number of K8s Pods that are currently in a state for a given reason. + * + * @note All possible pod status reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_STATUS_REASON: "k8s.pod.status.reason"; +/** + * The time the Pod has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_UPTIME: "k8s.pod.uptime"; +/** + * Pod volume storage space available. + * + * @note This metric is derived from the + * [VolumeStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_AVAILABLE: "k8s.pod.volume.available"; +/** + * Pod volume total capacity. + * + * @note This metric is derived from the + * [VolumeStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_CAPACITY: "k8s.pod.volume.capacity"; +/** + * The total inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.Inodes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_INODE_COUNT: "k8s.pod.volume.inode.count"; +/** + * The free inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesFree](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_INODE_FREE: "k8s.pod.volume.inode.free"; +/** + * The inodes used by the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesUsed](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * This may not be equal to `inodes - free` because filesystem may share inodes with other filesystems. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_INODE_USED: "k8s.pod.volume.inode.used"; +/** + * Pod volume usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [VolumeStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_USAGE: "k8s.pod.volume.usage"; +/** + * Deprecated, use `k8s.replicaset.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.available`. + */ +export declare const METRIC_K8S_REPLICASET_AVAILABLE_PODS: "k8s.replicaset.available_pods"; +/** + * Deprecated, use `k8s.replicaset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.desired`. + */ +export declare const METRIC_K8S_REPLICASET_DESIRED_PODS: "k8s.replicaset.desired_pods"; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICASET_POD_AVAILABLE: "k8s.replicaset.pod.available"; +/** + * Number of desired replica pods in this replicaset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICASET_POD_DESIRED: "k8s.replicaset.pod.desired"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +export declare const METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS: "k8s.replication_controller.available_pods"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +export declare const METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS: "k8s.replication_controller.desired_pods"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS: "k8s.replicationcontroller.available_pods"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS: "k8s.replicationcontroller.desired_pods"; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicationControllerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerstatus-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE: "k8s.replicationcontroller.pod.available"; +/** + * Number of desired replica pods in this replication controller. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicationControllerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerspec-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED: "k8s.replicationcontroller.pod.desired"; +/** + * The CPU limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_HARD: "k8s.resourcequota.cpu.limit.hard"; +/** + * The CPU limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_USED: "k8s.resourcequota.cpu.limit.used"; +/** + * The CPU requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_HARD: "k8s.resourcequota.cpu.request.hard"; +/** + * The CPU requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_USED: "k8s.resourcequota.cpu.request.used"; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD: "k8s.resourcequota.ephemeral_storage.limit.hard"; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_USED: "k8s.resourcequota.ephemeral_storage.limit.used"; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD: "k8s.resourcequota.ephemeral_storage.request.hard"; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_USED: "k8s.resourcequota.ephemeral_storage.request.used"; +/** + * The huge page requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_HARD: "k8s.resourcequota.hugepage_count.request.hard"; +/** + * The huge page requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_USED: "k8s.resourcequota.hugepage_count.request.used"; +/** + * The memory limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_HARD: "k8s.resourcequota.memory.limit.hard"; +/** + * The memory limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_USED: "k8s.resourcequota.memory.limit.used"; +/** + * The memory requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_HARD: "k8s.resourcequota.memory.request.hard"; +/** + * The memory requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_USED: "k8s.resourcequota.memory.request.used"; +/** + * The object count limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_HARD: "k8s.resourcequota.object_count.hard"; +/** + * The object count limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_USED: "k8s.resourcequota.object_count.used"; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD: "k8s.resourcequota.persistentvolumeclaim_count.hard"; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED: "k8s.resourcequota.persistentvolumeclaim_count.used"; +/** + * The storage requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_HARD: "k8s.resourcequota.storage.request.hard"; +/** + * The storage requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_USED: "k8s.resourcequota.storage.request.used"; +/** + * Deprecated, use `k8s.statefulset.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.current`. + */ +export declare const METRIC_K8S_STATEFULSET_CURRENT_PODS: "k8s.statefulset.current_pods"; +/** + * Deprecated, use `k8s.statefulset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.desired`. + */ +export declare const METRIC_K8S_STATEFULSET_DESIRED_PODS: "k8s.statefulset.desired_pods"; +/** + * The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_CURRENT: "k8s.statefulset.pod.current"; +/** + * Number of desired replica pods in this statefulset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_DESIRED: "k8s.statefulset.pod.desired"; +/** + * The number of replica pods created for this statefulset with a Ready Condition. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_READY: "k8s.statefulset.pod.ready"; +/** + * Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_UPDATED: "k8s.statefulset.pod.updated"; +/** + * Deprecated, use `k8s.statefulset.pod.ready` instead. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.ready`. + */ +export declare const METRIC_K8S_STATEFULSET_READY_PODS: "k8s.statefulset.ready_pods"; +/** + * Deprecated, use `k8s.statefulset.pod.updated` instead. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.updated`. + */ +export declare const METRIC_K8S_STATEFULSET_UPDATED_PODS: "k8s.statefulset.updated_pods"; +/** + * The duration of the MCP request or notification as observed on the sender from the time it was sent until the response or ack is received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_CLIENT_OPERATION_DURATION: "mcp.client.operation.duration"; +/** + * The duration of the MCP session as observed on the MCP client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_CLIENT_SESSION_DURATION: "mcp.client.session.duration"; +/** + * MCP request or notification duration as observed on the receiver from the time it was received until the result or ack is sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_SERVER_OPERATION_DURATION: "mcp.server.operation.duration"; +/** + * The duration of the MCP session as observed on the MCP server. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_SERVER_SESSION_DURATION: "mcp.server.session.duration"; +/** + * Number of messages that were delivered to the application. + * + * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios. + * 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. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES: "messaging.client.consumed.messages"; +/** + * Duration of messaging operation initiated by a producer or consumer client. + * + * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_OPERATION_DURATION: "messaging.client.operation.duration"; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +export declare const METRIC_MESSAGING_CLIENT_PUBLISHED_MESSAGES: "messaging.client.published.messages"; +/** + * Number of messages producer attempted to send to the broker. + * + * @note This metric **MUST NOT** count messages that were created but haven't yet been sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_SENT_MESSAGES: "messaging.client.sent.messages"; +/** + * Duration of processing operation. + * + * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_PROCESS_DURATION: "messaging.process.duration"; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +export declare const METRIC_MESSAGING_PROCESS_MESSAGES: "messaging.process.messages"; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +export declare const METRIC_MESSAGING_PUBLISH_DURATION: "messaging.publish.duration"; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +export declare const METRIC_MESSAGING_PUBLISH_MESSAGES: "messaging.publish.messages"; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +export declare const METRIC_MESSAGING_RECEIVE_DURATION: "messaging.receive.duration"; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +export declare const METRIC_MESSAGING_RECEIVE_MESSAGES: "messaging.receive.messages"; +/** + * Reports the count of kernel NFS client TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.netudpcnt and svc_stat.nettcpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_NET_COUNT: "nfs.client.net.count"; +/** + * Reports the count of kernel NFS client TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_NET_TCP_CONNECTION_ACCEPTED: "nfs.client.net.tcp.connection.accepted"; +/** + * Reports the count of kernel NFSv4+ client operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_OPERATION_COUNT: "nfs.client.operation.count"; +/** + * Reports the count of kernel NFS client procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_PROCEDURE_COUNT: "nfs.client.procedure.count"; +/** + * Reports the count of kernel NFS client RPC authentication refreshes. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcauthrefresh + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_RPC_AUTHREFRESH_COUNT: "nfs.client.rpc.authrefresh.count"; +/** + * Reports the count of kernel NFS client RPCs sent, regardless of whether they're accepted/rejected by the server. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_RPC_COUNT: "nfs.client.rpc.count"; +/** + * Reports the count of kernel NFS client RPC retransmits. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcretrans + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_RPC_RETRANSMIT_COUNT: "nfs.client.rpc.retransmit.count"; +/** + * Reports the count of kernel NFS server stale file handles. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_FH_STALE counter in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_FH_STALE_COUNT: "nfs.server.fh.stale.count"; +/** + * Reports the count of kernel NFS server bytes returned to receive and transmit (read and write) requests. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_IO_READ and NFSD_STATS_IO_WRITE counters in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_IO: "nfs.server.io"; +/** + * Reports the count of kernel NFS server TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpcnt and svc_stat.netudpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_NET_COUNT: "nfs.server.net.count"; +/** + * Reports the count of kernel NFS server TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_NET_TCP_CONNECTION_ACCEPTED: "nfs.server.net.tcp.connection.accepted"; +/** + * Reports the count of kernel NFSv4+ server operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_OPERATION_COUNT: "nfs.server.operation.count"; +/** + * Reports the count of kernel NFS server procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_PROCEDURE_COUNT: "nfs.server.procedure.count"; +/** + * Reports the kernel NFS server reply cache request count by cache hit status. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_REPCACHE_REQUESTS: "nfs.server.repcache.requests"; +/** + * Reports the count of kernel NFS server RPCs handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt, the count of good RPCs. This metric can have + * an error.type of "format", "auth", or "client" for svc_stat.badfmt, svc_stat.badauth, and svc_stat.badclnt. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_RPC_COUNT: "nfs.server.rpc.count"; +/** + * Reports the count of kernel NFS server available threads. + * + * @note Linux: this metric is taken from the Linux kernel nfsd_th_cnt variable + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_THREAD_COUNT: "nfs.server.thread.count"; +/** + * Event loop maximum delay. + * + * @note Value can be retrieved from value `histogram.max` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_MAX: "nodejs.eventloop.delay.max"; +/** + * Event loop mean delay. + * + * @note Value can be retrieved from value `histogram.mean` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_MEAN: "nodejs.eventloop.delay.mean"; +/** + * Event loop minimum delay. + * + * @note Value can be retrieved from value `histogram.min` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_MIN: "nodejs.eventloop.delay.min"; +/** + * Event loop 50 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(50)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_P50: "nodejs.eventloop.delay.p50"; +/** + * Event loop 90 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(90)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_P90: "nodejs.eventloop.delay.p90"; +/** + * Event loop 99 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(99)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_P99: "nodejs.eventloop.delay.p99"; +/** + * Event loop standard deviation delay. + * + * @note Value can be retrieved from value `histogram.stddev` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_STDDEV: "nodejs.eventloop.delay.stddev"; +/** + * Cumulative duration of time the event loop has been in each state. + * + * @note Value can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_TIME: "nodejs.eventloop.time"; +/** + * Event loop utilization. + * + * @note The value range is [0.0, 1.0] and can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_UTILIZATION: "nodejs.eventloop.utilization"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_HARD: "openshift.clusterquota.cpu.limit.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_USED: "openshift.clusterquota.cpu.limit.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_HARD: "openshift.clusterquota.cpu.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_USED: "openshift.clusterquota.cpu.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD: "openshift.clusterquota.ephemeral_storage.limit.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_USED: "openshift.clusterquota.ephemeral_storage.limit.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD: "openshift.clusterquota.ephemeral_storage.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_USED: "openshift.clusterquota.ephemeral_storage.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_HARD: "openshift.clusterquota.hugepage_count.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_USED: "openshift.clusterquota.hugepage_count.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_HARD: "openshift.clusterquota.memory.limit.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_USED: "openshift.clusterquota.memory.limit.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_HARD: "openshift.clusterquota.memory.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_USED: "openshift.clusterquota.memory.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_HARD: "openshift.clusterquota.object_count.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_USED: "openshift.clusterquota.object_count.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD: "openshift.clusterquota.persistentvolumeclaim_count.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED: "openshift.clusterquota.persistentvolumeclaim_count.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_HARD: "openshift.clusterquota.storage.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_USED: "openshift.clusterquota.storage.request.used"; +/** + * The number of log records for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_log_records`), rejected log records **MUST** count as failed and only non-rejected log records count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_LOG_EXPORTED: "otel.sdk.exporter.log.exported"; +/** + * The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_LOG_INFLIGHT: "otel.sdk.exporter.log.inflight"; +/** + * The number of metric data points for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_data_points`), rejected data points **MUST** count as failed and only non-rejected data points count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_EXPORTED: "otel.sdk.exporter.metric_data_point.exported"; +/** + * The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_INFLIGHT: "otel.sdk.exporter.metric_data_point.inflight"; +/** + * The duration of exporting a batch of telemetry records. + * + * @note This metric defines successful operations using the full success definitions for [http](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1) + * and [grpc](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success). Anything else is defined as an unsuccessful operation. For successful + * operations, `error.type` **MUST NOT** be set. For unsuccessful export operations, `error.type` **MUST** contain a relevant failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_OPERATION_DURATION: "otel.sdk.exporter.operation.duration"; +/** + * The number of spans for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans **MUST** count as failed and only non-rejected spans count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED: "otel.sdk.exporter.span.exported"; +/** + * Deprecated, use `otel.sdk.exporter.span.exported` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.exported`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT: "otel.sdk.exporter.span.exported.count"; +/** + * The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT: "otel.sdk.exporter.span.inflight"; +/** + * Deprecated, use `otel.sdk.exporter.span.inflight` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.inflight`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT: "otel.sdk.exporter.span.inflight.count"; +/** + * The number of logs submitted to enabled SDK Loggers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_LOG_CREATED: "otel.sdk.log.created"; +/** + * The duration of the collect operation of the metric reader. + * + * @note For successful collections, `error.type` **MUST NOT** be set. For failed collections, `error.type` **SHOULD** contain the failure cause. + * It can happen that metrics collection is successful for some MetricProducers, while others fail. In that case `error.type` **SHOULD** be set to any of the failure causes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_METRIC_READER_COLLECTION_DURATION: "otel.sdk.metric_reader.collection.duration"; +/** + * The number of log records for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter, + * not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED: "otel.sdk.processor.log.processed"; +/** + * The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold. + * + * @note Only applies to Log Record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY: "otel.sdk.processor.log.queue.capacity"; +/** + * The number of log records in the queue of a given instance of an SDK log processor. + * + * @note Only applies to log record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE: "otel.sdk.processor.log.queue.size"; +/** + * The number of spans for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED: "otel.sdk.processor.span.processed"; +/** + * Deprecated, use `otel.sdk.processor.span.processed` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.processor.span.processed`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT: "otel.sdk.processor.span.processed.count"; +/** + * The maximum number of spans the queue of a given instance of an SDK span processor can hold. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY: "otel.sdk.processor.span.queue.capacity"; +/** + * The number of spans in the queue of a given instance of an SDK span processor. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE: "otel.sdk.processor.span.queue.size"; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export declare const METRIC_OTEL_SDK_SPAN_ENDED: "otel.sdk.span.ended"; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export declare const METRIC_OTEL_SDK_SPAN_ENDED_COUNT: "otel.sdk.span.ended.count"; +/** + * The number of created spans with `recording=true` for which the end operation has not been called yet. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_SPAN_LIVE: "otel.sdk.span.live"; +/** + * Deprecated, use `otel.sdk.span.live` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.span.live`. + */ +export declare const METRIC_OTEL_SDK_SPAN_LIVE_COUNT: "otel.sdk.span.live.count"; +/** + * The number of created spans. + * + * @note Implementations **MUST** record this metric for all spans, even for non-recording ones. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_SPAN_STARTED: "otel.sdk.span.started"; +/** + * Number of times the process has been context switched. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_CONTEXT_SWITCHES: "process.context_switches"; +/** + * Total CPU seconds broken down by different states. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_CPU_TIME: "process.cpu.time"; +/** + * Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_CPU_UTILIZATION: "process.cpu.utilization"; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_DISK_IO: "process.disk.io"; +/** + * The amount of physical memory in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_MEMORY_USAGE: "process.memory.usage"; +/** + * The amount of committed virtual memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_MEMORY_VIRTUAL: "process.memory.virtual"; +/** + * Network bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_NETWORK_IO: "process.network.io"; +/** + * Deprecated, use `process.unix.file_descriptor.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.unix.file_descriptor.count`. + */ +export declare const METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT: "process.open_file_descriptor.count"; +/** + * Number of page faults the process has made. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_PAGING_FAULTS: "process.paging.faults"; +/** + * Process threads count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_THREAD_COUNT: "process.thread.count"; +/** + * Number of unix file descriptors in use by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT: "process.unix.file_descriptor.count"; +/** + * The time the process has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_UPTIME: "process.uptime"; +/** + * Number of handles held by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_WINDOWS_HANDLE_COUNT: "process.windows.handle.count"; +/** + * Measures the duration of outbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC client span, the metric value + * **SHOULD** be the same as the RPC client span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_CLIENT_CALL_DURATION: "rpc.client.call.duration"; +/** + * Deprecated, use `rpc.client.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.client.call.duration` with unit `s`. + */ +export declare const METRIC_RPC_CLIENT_DURATION: "rpc.client.duration"; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_CLIENT_REQUEST_SIZE: "rpc.client.request.size"; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_CLIENT_REQUESTS_PER_RPC: "rpc.client.requests_per_rpc"; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_CLIENT_RESPONSE_SIZE: "rpc.client.response.size"; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_CLIENT_RESPONSES_PER_RPC: "rpc.client.responses_per_rpc"; +/** + * Measures the duration of inbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC server span, the metric value + * **SHOULD** be the same as the RPC server span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_SERVER_CALL_DURATION: "rpc.server.call.duration"; +/** + * Deprecated, use `rpc.server.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.server.call.duration` with unit `s`. + */ +export declare const METRIC_RPC_SERVER_DURATION: "rpc.server.duration"; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_SERVER_REQUEST_SIZE: "rpc.server.request.size"; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming** : This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_SERVER_REQUESTS_PER_RPC: "rpc.server.requests_per_rpc"; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_SERVER_RESPONSE_SIZE: "rpc.server.response.size"; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_SERVER_RESPONSES_PER_RPC: "rpc.server.responses_per_rpc"; +/** + * Operating frequency of the logical CPU in Hertz. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_FREQUENCY: "system.cpu.frequency"; +/** + * Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_LOGICAL_COUNT: "system.cpu.logical.count"; +/** + * Reports the number of actual physical processor cores on the hardware. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_PHYSICAL_COUNT: "system.cpu.physical.count"; +/** + * Seconds each logical CPU spent on each mode. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_TIME: "system.cpu.time"; +/** + * For each logical CPU, the utilization is calculated as the change in cumulative CPU time (cpu.time) over a measurement interval, divided by the elapsed time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_UTILIZATION: "system.cpu.utilization"; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_IO: "system.disk.io"; +/** + * Time disk spent activated. + * + * @note The real elapsed time ("wall clock") used in the I/O path (time from operations running in parallel are not counted). Measured as: + * + * - Linux: Field 13 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: The complement of + * ["Disk% Idle Time"](https://learn.microsoft.com/archive/blogs/askcore/windows-performance-monitor-disk-counters-explained#windows-performance-monitor-disk-counters-explained) + * performance counter: `uptime * (100 - "Disk\% Idle Time") / 100` + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_IO_TIME: "system.disk.io_time"; +/** + * The total storage capacity of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_LIMIT: "system.disk.limit"; +/** + * The number of disk reads/writes merged into single physical disk access operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_MERGED: "system.disk.merged"; +/** + * Sum of the time each operation took to complete. + * + * @note Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as: + * + * - Linux: Fields 7 & 11 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: "Avg. Disk sec/Read" perf counter multiplied by "Disk Reads/sec" perf counter (similar for Writes) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_OPERATION_TIME: "system.disk.operation_time"; +/** + * Disk operations count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_OPERATIONS: "system.disk.operations"; +/** + * The total storage capacity of the filesystem. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_FILESYSTEM_LIMIT: "system.filesystem.limit"; +/** + * Reports a filesystem's space usage across different states. + * + * @note The sum of all `system.filesystem.usage` values over the different `system.filesystem.state` attributes + * **SHOULD** equal the total storage capacity of the filesystem, that is `system.filesystem.limit`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_FILESYSTEM_USAGE: "system.filesystem.usage"; +/** + * Fraction of filesystem bytes used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_FILESYSTEM_UTILIZATION: "system.filesystem.utilization"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.available`. + */ +export declare const METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE: "system.linux.memory.available"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.usage`. + */ +export declare const METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE: "system.linux.memory.slab.usage"; +/** + * Total virtual memory available in the system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_LIMIT: "system.memory.limit"; +/** + * An estimate of how much memory is available for starting new applications, without causing swapping. + * + * @note This is an alternative to `system.memory.usage` metric with `state=free`. + * Linux starting from 3.14 exports "available" memory. It takes "free" memory as a baseline, and then factors in kernel-specific values. + * This is supposed to be more accurate than just "free" memory. + * For reference, see the calculations [here](https://superuser.com/a/980821). + * See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE: "system.memory.linux.available"; +/** + * Reports the memory used by the Linux kernel for managing caches of frequently used objects. + * + * @note The sum over the `reclaimable` and `unreclaimable` state values in `memory.linux.slab.usage` **SHOULD** be equal to the total slab memory available on the system. + * Note that the total slab memory is not constant and may vary over time. + * See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE: "system.memory.linux.slab.usage"; +/** + * Shared memory used (mostly by tmpfs). + * + * @note Equivalent of `shared` from [`free` command](https://man7.org/linux/man-pages/man1/free.1.html) or + * `Shmem` from [`/proc/meminfo`](https://man7.org/linux/man-pages/man5/proc.5.html)" + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_SHARED: "system.memory.shared"; +/** + * Reports memory in use by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_USAGE: "system.memory.usage"; +/** + * Percentage of memory bytes in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_UTILIZATION: "system.memory.utilization"; +/** + * The number of connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_CONNECTION_COUNT: "system.network.connection.count"; +/** + * Deprecated, use `system.network.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.connection.count`. + */ +export declare const METRIC_SYSTEM_NETWORK_CONNECTIONS: "system.network.connections"; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.dropped`. + */ +export declare const METRIC_SYSTEM_NETWORK_DROPPED: "system.network.dropped"; +/** + * Count of network errors detected. + * + * @note Measured as: + * + * - Linux: the `errs` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)). + * - Windows: [`InErrors`/`OutErrors`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_ERRORS: "system.network.errors"; +/** + * The number of bytes transmitted and received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_IO: "system.network.io"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_PACKET_COUNT: "system.network.packet.count"; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_PACKET_DROPPED: "system.network.packet.dropped"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.count`. + */ +export declare const METRIC_SYSTEM_NETWORK_PACKETS: "system.network.packets"; +/** + * The number of page faults. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_FAULTS: "system.paging.faults"; +/** + * The number of paging operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_OPERATIONS: "system.paging.operations"; +/** + * Unix swap or windows pagefile usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_USAGE: "system.paging.usage"; +/** + * Swap (unix) or pagefile (windows) utilization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_UTILIZATION: "system.paging.utilization"; +/** + * Total number of processes in each state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PROCESS_COUNT: "system.process.count"; +/** + * Total number of processes created over uptime of the host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PROCESS_CREATED: "system.process.created"; +/** + * The time the system has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_UPTIME: "system.uptime"; +/** + * Garbage collection duration. + * + * @note The values can be retrieved from [`perf_hooks.PerformanceObserver(...).observe({ entryTypes: ['gc'] })`](https://nodejs.org/api/perf_hooks.html#performanceobserverobserveoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_GC_DURATION: "v8js.gc.duration"; +/** + * Deprecated, use `v8js.memory.heap.space.available_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.available_size`. + */ +export declare const METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE: "v8js.heap.space.available_size"; +/** + * Deprecated, use `v8js.memory.heap.space.physical_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.physical_size`. + */ +export declare const METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE: "v8js.heap.space.physical_size"; +/** + * Total heap memory size pre-allocated. + * + * @note The value can be retrieved from value `space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_LIMIT: "v8js.memory.heap.limit"; +/** + * Heap space available size. + * + * @note Value can be retrieved from value `space_available_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "v8js.memory.heap.space.available_size"; +/** + * Committed size of a heap space. + * + * @note Value can be retrieved from value `physical_space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "v8js.memory.heap.space.physical_size"; +/** + * Heap Memory size allocated. + * + * @note The value can be retrieved from value `space_used_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_USED: "v8js.memory.heap.used"; +/** + * The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_COUNT: "vcs.change.count"; +/** + * The time duration a change (pull request/merge request/changelist) has been in a given state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_DURATION: "vcs.change.duration"; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_TIME_TO_APPROVAL: "vcs.change.time_to_approval"; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get merged into the target(base) ref. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_TIME_TO_MERGE: "vcs.change.time_to_merge"; +/** + * The number of unique contributors to a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CONTRIBUTOR_COUNT: "vcs.contributor.count"; +/** + * The number of refs of type branch or tag in a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_COUNT: "vcs.ref.count"; +/** + * The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.line_change.type` value. For example if a ref added 3 lines and removed 2 lines, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers). + * If number of lines added/removed should be calculated from the start of time, then `vcs.ref.base.name` **SHOULD** be set to an empty string. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_LINES_DELTA: "vcs.ref.lines_delta"; +/** + * The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.revision_delta.direction` value. For example if branch `a` is 3 commits behind and 2 commits ahead of `trunk`, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers) and `vcs.ref.base.name` is set to `trunk`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_REVISIONS_DELTA: "vcs.ref.revisions_delta"; +/** + * Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_TIME: "vcs.ref.time"; +/** + * The number of repositories in an organization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REPOSITORY_COUNT: "vcs.repository.count"; +//# sourceMappingURL=experimental_metrics.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js new file mode 100644 index 0000000..d2c7a3a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js @@ -0,0 +1,3665 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * The authentication duration for a request. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHENTICATION_AUTHENTICATE_DURATION = 'aspnetcore.authentication.authenticate.duration'; +/** + * The total number of times a scheme is challenged. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHENTICATION_CHALLENGES = 'aspnetcore.authentication.challenges'; +/** + * The total number of times an authenticated user attempts to access a resource they are not permitted to access. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHENTICATION_FORBIDS = 'aspnetcore.authentication.forbids'; +/** + * The total number of times a principal is signed in with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_INS = 'aspnetcore.authentication.sign_ins'; +/** + * The total number of times a principal is signed out with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_OUTS = 'aspnetcore.authentication.sign_outs'; +/** + * The total number of authorization attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Authorization`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_AUTHORIZATION_ATTEMPTS = 'aspnetcore.authorization.attempts'; +/** + * The duration of authenticate attempts. The authenticate metrics is recorded by sign in methods such as PasswordSignInAsync and TwoFactorSignInAsync. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_AUTHENTICATE_DURATION = 'aspnetcore.identity.sign_in.authenticate.duration'; +/** + * The total number of check password attempts. Checks that the account is in a state that can log in and that the password is valid using the UserManager.CheckPasswordAsync method. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.sign_in.check_password_attempts'; +/** + * The total number of calls to sign in user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_INS = 'aspnetcore.identity.sign_in.sign_ins'; +/** + * The total number of calls to sign out user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_OUTS = 'aspnetcore.identity.sign_in.sign_outs'; +/** + * The total number of two factor clients forgotten. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_FORGOTTEN = 'aspnetcore.identity.sign_in.two_factor_clients_forgotten'; +/** + * The total number of two factor clients remembered. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_REMEMBERED = 'aspnetcore.identity.sign_in.two_factor_clients_remembered'; +/** + * The number of check password attempts. Only checks whether the password is valid and not whether the user account is in a state that can log in. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.user.check_password_attempts'; +/** + * The duration of user creation operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_CREATE_DURATION = 'aspnetcore.identity.user.create.duration'; +/** + * The duration of user deletion operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_DELETE_DURATION = 'aspnetcore.identity.user.delete.duration'; +/** + * The total number of token generations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_GENERATED_TOKENS = 'aspnetcore.identity.user.generated_tokens'; +/** + * The duration of user update operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_UPDATE_DURATION = 'aspnetcore.identity.user.update.duration'; +/** + * The total number of token verification attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_IDENTITY_USER_VERIFY_TOKEN_ATTEMPTS = 'aspnetcore.identity.user.verify_token_attempts'; +/** + * Total number of bytes allocated by the memory pool. Allocation occurs when a memory rental request exceeds the available pooled memory. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_MEMORY_POOL_ALLOCATED = 'aspnetcore.memory_pool.allocated'; +/** + * Total number of bytes evicted from the memory pool. Eviction occurs when idle pooled memory is reclaimed. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_MEMORY_POOL_EVICTED = 'aspnetcore.memory_pool.evicted'; +/** + * Number of bytes currently pooled and available for reuse. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_MEMORY_POOL_POOLED = 'aspnetcore.memory_pool.pooled'; +/** + * Total number of bytes rented from the memory pool. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_ASPNETCORE_MEMORY_POOL_RENTED = 'aspnetcore.memory_pool.rented'; +/** + * Number of active client instances. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_AZURE_COSMOSDB_CLIENT_ACTIVE_INSTANCE_COUNT = 'azure.cosmosdb.client.active_instance.count'; +/** + * [Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_AZURE_COSMOSDB_CLIENT_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.client.operation.request_charge'; +/** + * The number of pipeline runs currently active in the system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CICD_PIPELINE_RUN_ACTIVE = 'cicd.pipeline.run.active'; +/** + * Duration of a pipeline run grouped by pipeline, state and result. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CICD_PIPELINE_RUN_DURATION = 'cicd.pipeline.run.duration'; +/** + * The number of errors encountered in pipeline runs (eg. compile, test failures). + * + * @note There might be errors in a pipeline run that are non fatal (eg. they are suppressed) or in a parallel stage multiple stages could have a fatal error. + * This means that this error count might not be the same as the count of metric `cicd.pipeline.run.duration` with run result `failure`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CICD_PIPELINE_RUN_ERRORS = 'cicd.pipeline.run.errors'; +/** + * The number of errors in a component of the CICD system (eg. controller, scheduler, agent). + * + * @note Errors in pipeline run execution are explicitly excluded. Ie a test failure is not counted in this metric. + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CICD_SYSTEM_ERRORS = 'cicd.system.errors'; +/** + * The number of workers on the CICD system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CICD_WORKER_COUNT = 'cicd.worker.count'; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific container on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_CPU_TIME = 'container.cpu.time'; +/** + * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific container on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_CPU_USAGE = 'container.cpu.usage'; +/** + * Disk bytes for the container. + * + * @note The total number of bytes read/written successfully (aggregated from all disks). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_DISK_IO = 'container.disk.io'; +/** + * Container filesystem available bytes. + * + * @note In K8s, this metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_FILESYSTEM_AVAILABLE = 'container.filesystem.available'; +/** + * Container filesystem capacity. + * + * @note In K8s, this metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_FILESYSTEM_CAPACITY = 'container.filesystem.capacity'; +/** + * Container filesystem usage. + * + * @note This may not equal capacity - available. + * + * In K8s, this metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_FILESYSTEM_USAGE = 'container.filesystem.usage'; +/** + * Container memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and by subtracting the `container_memory_working_set_bytes` metric from the `container_spec_memory_limit_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_MEMORY_AVAILABLE = 'container.memory.available'; +/** + * Container memory paging faults. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_failures_total{failure_type=pgfault, scope=container}` and `container_memory_failures_total{failure_type=pgmajfault, scope=container}`metric. + * In K8s, this metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_MEMORY_PAGING_FAULTS = 'container.memory.paging.faults'; +/** + * Container memory RSS. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_rss` metric. + * In K8s, this metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_MEMORY_RSS = 'container.memory.rss'; +/** + * Memory usage of the container. + * + * @note Memory usage of the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_MEMORY_USAGE = 'container.memory.usage'; +/** + * Container memory working set. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_working_set_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_MEMORY_WORKING_SET = 'container.memory.working_set'; +/** + * Network bytes for the container. + * + * @note The number of bytes sent/received on all network interfaces by the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_NETWORK_IO = 'container.network.io'; +/** + * The time the container has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CONTAINER_UPTIME = 'container.uptime'; +/** + * Deprecated. Use `system.cpu.frequency` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.frequency`. + */ +export const METRIC_CPU_FREQUENCY = 'cpu.frequency'; +/** + * Deprecated. Use `system.cpu.time` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.time`. + */ +export const METRIC_CPU_TIME = 'cpu.time'; +/** + * Deprecated. Use `system.cpu.utilization` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.utilization`. + */ +export const METRIC_CPU_UTILIZATION = 'cpu.utilization'; +/** + * The total number of objects collected inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CPYTHON_GC_COLLECTED_OBJECTS = 'cpython.gc.collected_objects'; +/** + * The number of times a generation was collected since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CPYTHON_GC_COLLECTIONS = 'cpython.gc.collections'; +/** + * The total number of objects which were found to be uncollectable inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_CPYTHON_GC_UNCOLLECTABLE_OBJECTS = 'cpython.gc.uncollectable_objects'; +/** + * The number of connections that are currently in state described by the `state` attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count'; +/** + * The time it took to create a new connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_CREATE_TIME = 'db.client.connection.create_time'; +/** + * The maximum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_IDLE_MAX = 'db.client.connection.idle.max'; +/** + * The minimum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_IDLE_MIN = 'db.client.connection.idle.min'; +/** + * The maximum number of open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_MAX = 'db.client.connection.max'; +/** + * The number of current pending requests for an open connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests'; +/** + * The number of connection timeouts that have occurred trying to obtain a connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_TIMEOUTS = 'db.client.connection.timeouts'; +/** + * The time between borrowing a connection and returning it to the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_USE_TIME = 'db.client.connection.use_time'; +/** + * The time it took to obtain an open connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_CONNECTION_WAIT_TIME = 'db.client.connection.wait_time'; +/** + * Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.create_time` with unit `s`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME = 'db.client.connections.create_time'; +/** + * Deprecated, use `db.client.connection.idle.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.max`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MAX = 'db.client.connections.idle.max'; +/** + * Deprecated, use `db.client.connection.idle.min` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.min`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MIN = 'db.client.connections.idle.min'; +/** + * Deprecated, use `db.client.connection.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.max`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_MAX = 'db.client.connections.max'; +/** + * Deprecated, use `db.client.connection.pending_requests` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pending_requests`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS = 'db.client.connections.pending_requests'; +/** + * Deprecated, use `db.client.connection.timeouts` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.timeouts`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_TIMEOUTS = 'db.client.connections.timeouts'; +/** + * Deprecated, use `db.client.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.count`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage'; +/** + * Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.use_time` with unit `s`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_USE_TIME = 'db.client.connections.use_time'; +/** + * Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.wait_time` with unit `s`. + */ +export const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME = 'db.client.connections.wait_time'; +/** + * Deprecated, use `azure.cosmosdb.client.active_instance.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.active_instance.count`. + */ +export const METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT = 'db.client.cosmosdb.active_instance.count'; +/** + * Deprecated, use `azure.cosmosdb.client.operation.request_charge` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.operation.request_charge`. + */ +export const METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE = 'db.client.cosmosdb.operation.request_charge'; +/** + * The actual number of records returned by the database operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS = 'db.client.response.returned_rows'; +/** + * Measures the time taken to perform a DNS lookup. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_DNS_LOOKUP_DURATION = 'dns.lookup.duration'; +/** + * Number of invocation cold starts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_COLDSTARTS = 'faas.coldstarts'; +/** + * Distribution of CPU usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_CPU_USAGE = 'faas.cpu_usage'; +/** + * Number of invocation errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_ERRORS = 'faas.errors'; +/** + * Measures the duration of the function's initialization, such as a cold start. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_INIT_DURATION = 'faas.init_duration'; +/** + * Number of successful invocations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_INVOCATIONS = 'faas.invocations'; +/** + * Measures the duration of the function's logic execution. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_INVOKE_DURATION = 'faas.invoke_duration'; +/** + * Distribution of max memory usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_MEM_USAGE = 'faas.mem_usage'; +/** + * Distribution of net I/O usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_NET_IO = 'faas.net_io'; +/** + * Number of invocation timeouts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_FAAS_TIMEOUTS = 'faas.timeouts'; +/** + * GenAI operation duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_CLIENT_OPERATION_DURATION = 'gen_ai.client.operation.duration'; +/** + * Number of input and output tokens used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_CLIENT_TOKEN_USAGE = 'gen_ai.client.token.usage'; +/** + * Generative AI server request duration such as time-to-last byte or last output token. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_SERVER_REQUEST_DURATION = 'gen_ai.server.request.duration'; +/** + * Time per output token generated after the first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN = 'gen_ai.server.time_per_output_token'; +/** + * Time to generate first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_SERVER_TIME_TO_FIRST_TOKEN = 'gen_ai.server.time_to_first_token'; +/** + * Heap size target percentage configured by the user, otherwise 100. + * + * @note The value range is [0.0,100.0]. Computed from `/gc/gogc:percent`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_CONFIG_GOGC = 'go.config.gogc'; +/** + * Count of live goroutines. + * + * @note Computed from `/sched/goroutines:goroutines`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_GOROUTINE_COUNT = 'go.goroutine.count'; +/** + * Memory allocated to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_MEMORY_ALLOCATED = 'go.memory.allocated'; +/** + * Count of allocations to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:objects`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_MEMORY_ALLOCATIONS = 'go.memory.allocations'; +/** + * Heap size target for the end of the GC cycle. + * + * @note Computed from `/gc/heap/goal:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_MEMORY_GC_GOAL = 'go.memory.gc.goal'; +/** + * Go runtime memory limit configured by the user, if a limit exists. + * + * @note Computed from `/gc/gomemlimit:bytes`. This metric is excluded if the limit obtained from the Go runtime is math.MaxInt64. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_MEMORY_LIMIT = 'go.memory.limit'; +/** + * Memory used by the Go runtime. + * + * @note Computed from `(/memory/classes/total:bytes - /memory/classes/heap/released:bytes)`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_MEMORY_USED = 'go.memory.used'; +/** + * The number of OS threads that can execute user-level Go code simultaneously. + * + * @note Computed from `/sched/gomaxprocs:threads`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_PROCESSOR_LIMIT = 'go.processor.limit'; +/** + * The time goroutines have spent in the scheduler in a runnable state before actually running. + * + * @note Computed from `/sched/latencies:seconds`. Bucket boundaries are provided by the runtime, and are subject to change. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GO_SCHEDULE_DURATION = 'go.schedule.duration'; +/** + * Number of active HTTP requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_CLIENT_ACTIVE_REQUESTS = 'http.client.active_requests'; +/** + * The duration of the successfully established outbound HTTP connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_CLIENT_CONNECTION_DURATION = 'http.client.connection.duration'; +/** + * Number of outbound HTTP connections that are currently active or idle on the client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_CLIENT_OPEN_CONNECTIONS = 'http.client.open_connections'; +/** + * Size of HTTP client request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_CLIENT_REQUEST_BODY_SIZE = 'http.client.request.body.size'; +/** + * Size of HTTP client response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE = 'http.client.response.body.size'; +/** + * Number of active HTTP server requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_SERVER_ACTIVE_REQUESTS = 'http.server.active_requests'; +/** + * Size of HTTP server request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_SERVER_REQUEST_BODY_SIZE = 'http.server.request.body.size'; +/** + * Size of HTTP server response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HTTP_SERVER_RESPONSE_BODY_SIZE = 'http.server.response.body.size'; +/** + * Remaining fraction of battery charge. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_BATTERY_CHARGE = 'hw.battery.charge'; +/** + * Lower limit of battery charge fraction to ensure proper operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_BATTERY_CHARGE_LIMIT = 'hw.battery.charge.limit'; +/** + * Time left before battery is completely charged or discharged. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_BATTERY_TIME_LEFT = 'hw.battery.time_left'; +/** + * CPU current frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_CPU_SPEED = 'hw.cpu.speed'; +/** + * CPU maximum frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_CPU_SPEED_LIMIT = 'hw.cpu.speed.limit'; +/** + * Energy consumed by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_ENERGY = 'hw.energy'; +/** + * Number of errors encountered by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_ERRORS = 'hw.errors'; +/** + * Fan speed in revolutions per minute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_FAN_SPEED = 'hw.fan.speed'; +/** + * Speed limit in rpm. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_FAN_SPEED_LIMIT = 'hw.fan.speed.limit'; +/** + * Fan speed expressed as a fraction of its maximum speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_FAN_SPEED_RATIO = 'hw.fan.speed_ratio'; +/** + * Received and transmitted bytes by the GPU. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_GPU_IO = 'hw.gpu.io'; +/** + * Size of the GPU memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_GPU_MEMORY_LIMIT = 'hw.gpu.memory.limit'; +/** + * GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_GPU_MEMORY_USAGE = 'hw.gpu.memory.usage'; +/** + * Fraction of GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_GPU_MEMORY_UTILIZATION = 'hw.gpu.memory.utilization'; +/** + * Fraction of time spent in a specific task. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_GPU_UTILIZATION = 'hw.gpu.utilization'; +/** + * Ambient (external) temperature of the physical host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_HOST_AMBIENT_TEMPERATURE = 'hw.host.ambient_temperature'; +/** + * Total energy consumed by the entire physical host, in joules. + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_HOST_ENERGY = 'hw.host.energy'; +/** + * By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_HOST_HEATING_MARGIN = 'hw.host.heating_margin'; +/** + * Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred). + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_HOST_POWER = 'hw.host.power'; +/** + * Size of the logical disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_LOGICAL_DISK_LIMIT = 'hw.logical_disk.limit'; +/** + * Logical disk space usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_LOGICAL_DISK_USAGE = 'hw.logical_disk.usage'; +/** + * Logical disk space utilization as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_LOGICAL_DISK_UTILIZATION = 'hw.logical_disk.utilization'; +/** + * Size of the memory module. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_MEMORY_SIZE = 'hw.memory.size'; +/** + * Link speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_NETWORK_BANDWIDTH_LIMIT = 'hw.network.bandwidth.limit'; +/** + * Utilization of the network bandwidth as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_NETWORK_BANDWIDTH_UTILIZATION = 'hw.network.bandwidth.utilization'; +/** + * Received and transmitted network traffic in bytes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_NETWORK_IO = 'hw.network.io'; +/** + * Received and transmitted network traffic in packets (or frames). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_NETWORK_PACKETS = 'hw.network.packets'; +/** + * Link status: `1` (up) or `0` (down). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_NETWORK_UP = 'hw.network.up'; +/** + * Endurance remaining for this SSD disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_PHYSICAL_DISK_ENDURANCE_UTILIZATION = 'hw.physical_disk.endurance_utilization'; +/** + * Size of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_PHYSICAL_DISK_SIZE = 'hw.physical_disk.size'; +/** + * Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_PHYSICAL_DISK_SMART = 'hw.physical_disk.smart'; +/** + * Instantaneous power consumed by the component. + * + * @note It is recommended to report `hw.energy` instead of `hw.power` when possible. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_POWER = 'hw.power'; +/** + * Maximum power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_POWER_SUPPLY_LIMIT = 'hw.power_supply.limit'; +/** + * Current power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_POWER_SUPPLY_USAGE = 'hw.power_supply.usage'; +/** + * Utilization of the power supply as a fraction of its maximum output. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_POWER_SUPPLY_UTILIZATION = 'hw.power_supply.utilization'; +/** + * Operational status: `1` (true) or `0` (false) for each of the possible states. + * + * @note `hw.status` is currently specified as an *UpDownCounter* but would ideally be represented using a [*StateSet* as defined in OpenMetrics](https://github.com/prometheus/OpenMetrics/blob/v1.0.0/specification/OpenMetrics.md#stateset). This semantic convention will be updated once *StateSet* is specified in OpenTelemetry. This planned change is not expected to have any consequence on the way users query their timeseries backend to retrieve the values of `hw.status` over time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_STATUS = 'hw.status'; +/** + * Operations performed by the tape drive. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_TAPE_DRIVE_OPERATIONS = 'hw.tape_drive.operations'; +/** + * Temperature in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_TEMPERATURE = 'hw.temperature'; +/** + * Temperature limit in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_TEMPERATURE_LIMIT = 'hw.temperature.limit'; +/** + * Voltage measured by the sensor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_VOLTAGE = 'hw.voltage'; +/** + * Voltage limit in Volts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_VOLTAGE_LIMIT = 'hw.voltage.limit'; +/** + * Nominal (expected) voltage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_HW_VOLTAGE_NOMINAL = 'hw.voltage.nominal'; +/** + * Number of buffers in the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_BUFFER_COUNT = 'jvm.buffer.count'; +/** + * Measure of total memory capacity of buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_BUFFER_MEMORY_LIMIT = 'jvm.buffer.memory.limit'; +/** + * Deprecated, use `jvm.buffer.memory.used` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jvm.buffer.memory.used`. + */ +export const METRIC_JVM_BUFFER_MEMORY_USAGE = 'jvm.buffer.memory.usage'; +/** + * Measure of memory used by buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_BUFFER_MEMORY_USED = 'jvm.buffer.memory.used'; +/** + * Number of open file descriptors as reported by the JVM. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_FILE_DESCRIPTOR_COUNT = 'jvm.file_descriptor.count'; +/** + * Measure of initial memory requested. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_MEMORY_INIT = 'jvm.memory.init'; +/** + * Average CPU load of the whole system for the last minute as reported by the JVM. + * + * @note The value range is [0,n], where n is the number of CPU cores - or a negative number if the value is not available. 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/java.management/java/lang/management/OperatingSystemMXBean.html#getSystemLoadAverage()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_SYSTEM_CPU_LOAD_1M = 'jvm.system.cpu.load_1m'; +/** + * Recent CPU utilization for the whole system as reported by the JVM. + * + * @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#getCpuLoad()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_JVM_SYSTEM_CPU_UTILIZATION = 'jvm.system.cpu.utilization'; +/** + * Maximum CPU resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_CPU_LIMIT = 'k8s.container.cpu.limit'; +/** + * The ratio of container CPU usage to its CPU limit. + * + * @note The value range is [0.0,1.0]. A value of 1.0 means the container is using 100% of its CPU limit. If the CPU limit is not set, this metric **SHOULD NOT** be emitted for that container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION = 'k8s.container.cpu.limit_utilization'; +/** + * CPU resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_CPU_REQUEST = 'k8s.container.cpu.request'; +/** + * The ratio of container CPU usage to its CPU request. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION = 'k8s.container.cpu.request_utilization'; +/** + * Maximum ephemeral storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_LIMIT = 'k8s.container.ephemeral_storage.limit'; +/** + * Ephemeral storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_REQUEST = 'k8s.container.ephemeral_storage.request'; +/** + * Maximum memory resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_MEMORY_LIMIT = 'k8s.container.memory.limit'; +/** + * Memory resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_MEMORY_REQUEST = 'k8s.container.memory.request'; +/** + * Indicates whether the container is currently marked as ready to accept traffic, based on its readiness probe (1 = ready, 0 = not ready). + * + * @note This metric **SHOULD** reflect the value of the `ready` field in the + * [K8s ContainerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_READY = 'k8s.container.ready'; +/** + * Describes how many times the container has restarted (since the last counter reset). + * + * @note This value is pulled directly from the K8s API and the value can go indefinitely high and be reset to 0 + * at any time depending on how your kubelet is configured to prune dead containers. + * It is best to not depend too much on the exact value but rather look at it as + * either == 0, in which case you can conclude there were no restarts in the recent past, or > 0, in which case + * you can conclude there were restarts in the recent past, and not try and analyze the value beyond that. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart.count'; +/** + * Describes the number of K8s containers that are currently in a state for a given reason. + * + * @note All possible container state reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason'; +/** + * Describes the number of K8s containers that are currently in a given state. + * + * @note All possible container states will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state'; +/** + * Maximum storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_STORAGE_LIMIT = 'k8s.container.storage.limit'; +/** + * Storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CONTAINER_STORAGE_REQUEST = 'k8s.container.storage.request'; +/** + * Deprecated, use `k8s.cronjob.job.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.cronjob.job.active`. + */ +export const METRIC_K8S_CRONJOB_ACTIVE_JOBS = 'k8s.cronjob.active_jobs'; +/** + * The number of actively running jobs for a cronjob. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_CRONJOB_JOB_ACTIVE = 'k8s.cronjob.job.active'; +/** + * Deprecated, use `k8s.daemonset.node.current_scheduled` instead. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.current_scheduled`. + */ +export const METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES = 'k8s.daemonset.current_scheduled_nodes'; +/** + * Deprecated, use `k8s.daemonset.node.desired_scheduled` instead. + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.desired_scheduled`. + */ +export const METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES = 'k8s.daemonset.desired_scheduled_nodes'; +/** + * Deprecated, use `k8s.daemonset.node.misscheduled` instead. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.misscheduled`. + */ +export const METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES = 'k8s.daemonset.misscheduled_nodes'; +/** + * Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED = 'k8s.daemonset.node.current_scheduled'; +/** + * Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod). + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED = 'k8s.daemonset.node.desired_scheduled'; +/** + * Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED = 'k8s.daemonset.node.misscheduled'; +/** + * Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DAEMONSET_NODE_READY = 'k8s.daemonset.node.ready'; +/** + * Deprecated, use `k8s.daemonset.node.ready` instead. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.ready`. + */ +export const METRIC_K8S_DAEMONSET_READY_NODES = 'k8s.daemonset.ready_nodes'; +/** + * Deprecated, use `k8s.deployment.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.available`. + */ +export const METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS = 'k8s.deployment.available_pods'; +/** + * Deprecated, use `k8s.deployment.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.desired`. + */ +export const METRIC_K8S_DEPLOYMENT_DESIRED_PODS = 'k8s.deployment.desired_pods'; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DEPLOYMENT_POD_AVAILABLE = 'k8s.deployment.pod.available'; +/** + * Number of desired replica pods in this deployment. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_DEPLOYMENT_POD_DESIRED = 'k8s.deployment.pod.desired'; +/** + * Deprecated, use `k8s.hpa.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.current`. + */ +export const METRIC_K8S_HPA_CURRENT_PODS = 'k8s.hpa.current_pods'; +/** + * Deprecated, use `k8s.hpa.pod.desired` instead. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.desired`. + */ +export const METRIC_K8S_HPA_DESIRED_PODS = 'k8s.hpa.desired_pods'; +/** + * Deprecated, use `k8s.hpa.pod.max` instead. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.max`. + */ +export const METRIC_K8S_HPA_MAX_PODS = 'k8s.hpa.max_pods'; +/** + * Target average utilization, in percentage, for CPU resource in HPA config. + * + * @note This metric aligns with the `averageUtilization` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_UTILIZATION = 'k8s.hpa.metric.target.cpu.average_utilization'; +/** + * Target average value for CPU resource in HPA config. + * + * @note This metric aligns with the `averageValue` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_VALUE = 'k8s.hpa.metric.target.cpu.average_value'; +/** + * Target value for CPU resource in HPA config. + * + * @note This metric aligns with the `value` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_METRIC_TARGET_CPU_VALUE = 'k8s.hpa.metric.target.cpu.value'; +/** + * Deprecated, use `k8s.hpa.pod.min` instead. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.min`. + */ +export const METRIC_K8S_HPA_MIN_PODS = 'k8s.hpa.min_pods'; +/** + * Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_POD_CURRENT = 'k8s.hpa.pod.current'; +/** + * Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_POD_DESIRED = 'k8s.hpa.pod.desired'; +/** + * The upper limit for the number of replica pods to which the autoscaler can scale up. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_POD_MAX = 'k8s.hpa.pod.max'; +/** + * The lower limit for the number of replica pods to which the autoscaler can scale down. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_HPA_POD_MIN = 'k8s.hpa.pod.min'; +/** + * Deprecated, use `k8s.job.pod.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.active`. + */ +export const METRIC_K8S_JOB_ACTIVE_PODS = 'k8s.job.active_pods'; +/** + * Deprecated, use `k8s.job.pod.desired_successful` instead. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.desired_successful`. + */ +export const METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS = 'k8s.job.desired_successful_pods'; +/** + * Deprecated, use `k8s.job.pod.failed` instead. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.failed`. + */ +export const METRIC_K8S_JOB_FAILED_PODS = 'k8s.job.failed_pods'; +/** + * Deprecated, use `k8s.job.pod.max_parallel` instead. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.max_parallel`. + */ +export const METRIC_K8S_JOB_MAX_PARALLEL_PODS = 'k8s.job.max_parallel_pods'; +/** + * The number of pending and actively running pods for a job. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_JOB_POD_ACTIVE = 'k8s.job.pod.active'; +/** + * The desired number of successfully finished pods the job should be run with. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL = 'k8s.job.pod.desired_successful'; +/** + * The number of pods which reached phase Failed for a job. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_JOB_POD_FAILED = 'k8s.job.pod.failed'; +/** + * The max desired number of pods the job should run at any given time. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_JOB_POD_MAX_PARALLEL = 'k8s.job.pod.max_parallel'; +/** + * The number of pods which reached phase Succeeded for a job. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_JOB_POD_SUCCESSFUL = 'k8s.job.pod.successful'; +/** + * Deprecated, use `k8s.job.pod.successful` instead. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.successful`. + */ +export const METRIC_K8S_JOB_SUCCESSFUL_PODS = 'k8s.job.successful_pods'; +/** + * Describes number of K8s namespaces that are currently in a given phase. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase'; +/** + * Deprecated, use `k8s.node.cpu.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.cpu.allocatable`. + */ +export const METRIC_K8S_NODE_ALLOCATABLE_CPU = 'k8s.node.allocatable.cpu'; +/** + * Deprecated, use `k8s.node.ephemeral_storage.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.ephemeral_storage.allocatable`. + */ +export const METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE = 'k8s.node.allocatable.ephemeral_storage'; +/** + * Deprecated, use `k8s.node.memory.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.memory.allocatable`. + */ +export const METRIC_K8S_NODE_ALLOCATABLE_MEMORY = 'k8s.node.allocatable.memory'; +/** + * Deprecated, use `k8s.node.pod.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.pod.allocatable`. + */ +export const METRIC_K8S_NODE_ALLOCATABLE_PODS = 'k8s.node.allocatable.pods'; +/** + * Describes the condition of a particular Node. + * + * @note All possible node condition pairs (type and status) will be reported at each time interval to avoid missing metrics. Condition pairs corresponding to the current conditions' statuses will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status'; +/** + * Amount of cpu allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_CPU_ALLOCATABLE = 'k8s.node.cpu.allocatable'; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Node on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_CPU_TIME = 'k8s.node.cpu.time'; +/** + * Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Node on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_CPU_USAGE = 'k8s.node.cpu.usage'; +/** + * Amount of ephemeral-storage allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE = 'k8s.node.ephemeral_storage.allocatable'; +/** + * Node filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_FILESYSTEM_AVAILABLE = 'k8s.node.filesystem.available'; +/** + * Node filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_FILESYSTEM_CAPACITY = 'k8s.node.filesystem.capacity'; +/** + * Node filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_FILESYSTEM_USAGE = 'k8s.node.filesystem.usage'; +/** + * Amount of memory allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_ALLOCATABLE = 'k8s.node.memory.allocatable'; +/** + * Node memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_AVAILABLE = 'k8s.node.memory.available'; +/** + * Node memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) fields of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_PAGING_FAULTS = 'k8s.node.memory.paging.faults'; +/** + * Node memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_RSS = 'k8s.node.memory.rss'; +/** + * Memory usage of the Node. + * + * @note Total memory usage of the Node + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_USAGE = 'k8s.node.memory.usage'; +/** + * Node memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_MEMORY_WORKING_SET = 'k8s.node.memory.working_set'; +/** + * Node network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_NETWORK_ERRORS = 'k8s.node.network.errors'; +/** + * Network bytes for the Node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_NETWORK_IO = 'k8s.node.network.io'; +/** + * Amount of pods allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_POD_ALLOCATABLE = 'k8s.node.pod.allocatable'; +/** + * The time the Node has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_NODE_UPTIME = 'k8s.node.uptime'; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Pod on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_CPU_TIME = 'k8s.pod.cpu.time'; +/** + * Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Pod on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_CPU_USAGE = 'k8s.pod.cpu.usage'; +/** + * Pod filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_FILESYSTEM_AVAILABLE = 'k8s.pod.filesystem.available'; +/** + * Pod filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_FILESYSTEM_CAPACITY = 'k8s.pod.filesystem.capacity'; +/** + * Pod filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_FILESYSTEM_USAGE = 'k8s.pod.filesystem.usage'; +/** + * Pod memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_MEMORY_AVAILABLE = 'k8s.pod.memory.available'; +/** + * Pod memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_MEMORY_PAGING_FAULTS = 'k8s.pod.memory.paging.faults'; +/** + * Pod memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_MEMORY_RSS = 'k8s.pod.memory.rss'; +/** + * Memory usage of the Pod. + * + * @note Total memory usage of the Pod + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_MEMORY_USAGE = 'k8s.pod.memory.usage'; +/** + * Pod memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_MEMORY_WORKING_SET = 'k8s.pod.memory.working_set'; +/** + * Pod network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_NETWORK_ERRORS = 'k8s.pod.network.errors'; +/** + * Network bytes for the Pod. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_NETWORK_IO = 'k8s.pod.network.io'; +/** + * Describes number of K8s Pods that are currently in a given phase. + * + * @note All possible pod phases will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current phase will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase'; +/** + * Describes the number of K8s Pods that are currently in a state for a given reason. + * + * @note All possible pod status reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason'; +/** + * The time the Pod has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_UPTIME = 'k8s.pod.uptime'; +/** + * Pod volume storage space available. + * + * @note This metric is derived from the + * [VolumeStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_AVAILABLE = 'k8s.pod.volume.available'; +/** + * Pod volume total capacity. + * + * @note This metric is derived from the + * [VolumeStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_CAPACITY = 'k8s.pod.volume.capacity'; +/** + * The total inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.Inodes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_INODE_COUNT = 'k8s.pod.volume.inode.count'; +/** + * The free inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesFree](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_INODE_FREE = 'k8s.pod.volume.inode.free'; +/** + * The inodes used by the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesUsed](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * This may not be equal to `inodes - free` because filesystem may share inodes with other filesystems. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_INODE_USED = 'k8s.pod.volume.inode.used'; +/** + * Pod volume usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [VolumeStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_POD_VOLUME_USAGE = 'k8s.pod.volume.usage'; +/** + * Deprecated, use `k8s.replicaset.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.available`. + */ +export const METRIC_K8S_REPLICASET_AVAILABLE_PODS = 'k8s.replicaset.available_pods'; +/** + * Deprecated, use `k8s.replicaset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.desired`. + */ +export const METRIC_K8S_REPLICASET_DESIRED_PODS = 'k8s.replicaset.desired_pods'; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_REPLICASET_POD_AVAILABLE = 'k8s.replicaset.pod.available'; +/** + * Number of desired replica pods in this replicaset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_REPLICASET_POD_DESIRED = 'k8s.replicaset.pod.desired'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +export const METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS = 'k8s.replication_controller.available_pods'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +export const METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS = 'k8s.replication_controller.desired_pods'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +export const METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS = 'k8s.replicationcontroller.available_pods'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +export const METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS = 'k8s.replicationcontroller.desired_pods'; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicationControllerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerstatus-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE = 'k8s.replicationcontroller.pod.available'; +/** + * Number of desired replica pods in this replication controller. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicationControllerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerspec-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED = 'k8s.replicationcontroller.pod.desired'; +/** + * The CPU limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_HARD = 'k8s.resourcequota.cpu.limit.hard'; +/** + * The CPU limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_USED = 'k8s.resourcequota.cpu.limit.used'; +/** + * The CPU requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_HARD = 'k8s.resourcequota.cpu.request.hard'; +/** + * The CPU requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_USED = 'k8s.resourcequota.cpu.request.used'; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'k8s.resourcequota.ephemeral_storage.limit.hard'; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'k8s.resourcequota.ephemeral_storage.limit.used'; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'k8s.resourcequota.ephemeral_storage.request.hard'; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'k8s.resourcequota.ephemeral_storage.request.used'; +/** + * The huge page requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'k8s.resourcequota.hugepage_count.request.hard'; +/** + * The huge page requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'k8s.resourcequota.hugepage_count.request.used'; +/** + * The memory limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_HARD = 'k8s.resourcequota.memory.limit.hard'; +/** + * The memory limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_USED = 'k8s.resourcequota.memory.limit.used'; +/** + * The memory requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_HARD = 'k8s.resourcequota.memory.request.hard'; +/** + * The memory requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_USED = 'k8s.resourcequota.memory.request.used'; +/** + * The object count limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_HARD = 'k8s.resourcequota.object_count.hard'; +/** + * The object count limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_USED = 'k8s.resourcequota.object_count.used'; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'k8s.resourcequota.persistentvolumeclaim_count.hard'; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'k8s.resourcequota.persistentvolumeclaim_count.used'; +/** + * The storage requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_HARD = 'k8s.resourcequota.storage.request.hard'; +/** + * The storage requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_USED = 'k8s.resourcequota.storage.request.used'; +/** + * Deprecated, use `k8s.statefulset.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.current`. + */ +export const METRIC_K8S_STATEFULSET_CURRENT_PODS = 'k8s.statefulset.current_pods'; +/** + * Deprecated, use `k8s.statefulset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.desired`. + */ +export const METRIC_K8S_STATEFULSET_DESIRED_PODS = 'k8s.statefulset.desired_pods'; +/** + * The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_STATEFULSET_POD_CURRENT = 'k8s.statefulset.pod.current'; +/** + * Number of desired replica pods in this statefulset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_STATEFULSET_POD_DESIRED = 'k8s.statefulset.pod.desired'; +/** + * The number of replica pods created for this statefulset with a Ready Condition. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_STATEFULSET_POD_READY = 'k8s.statefulset.pod.ready'; +/** + * Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_K8S_STATEFULSET_POD_UPDATED = 'k8s.statefulset.pod.updated'; +/** + * Deprecated, use `k8s.statefulset.pod.ready` instead. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.ready`. + */ +export const METRIC_K8S_STATEFULSET_READY_PODS = 'k8s.statefulset.ready_pods'; +/** + * Deprecated, use `k8s.statefulset.pod.updated` instead. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.updated`. + */ +export const METRIC_K8S_STATEFULSET_UPDATED_PODS = 'k8s.statefulset.updated_pods'; +/** + * The duration of the MCP request or notification as observed on the sender from the time it was sent until the response or ack is received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MCP_CLIENT_OPERATION_DURATION = 'mcp.client.operation.duration'; +/** + * The duration of the MCP session as observed on the MCP client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MCP_CLIENT_SESSION_DURATION = 'mcp.client.session.duration'; +/** + * MCP request or notification duration as observed on the receiver from the time it was received until the result or ack is sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MCP_SERVER_OPERATION_DURATION = 'mcp.server.operation.duration'; +/** + * The duration of the MCP session as observed on the MCP server. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MCP_SERVER_SESSION_DURATION = 'mcp.server.session.duration'; +/** + * Number of messages that were delivered to the application. + * + * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios. + * 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. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = 'messaging.client.consumed.messages'; +/** + * Duration of messaging operation initiated by a producer or consumer client. + * + * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MESSAGING_CLIENT_OPERATION_DURATION = 'messaging.client.operation.duration'; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +export const METRIC_MESSAGING_CLIENT_PUBLISHED_MESSAGES = 'messaging.client.published.messages'; +/** + * Number of messages producer attempted to send to the broker. + * + * @note This metric **MUST NOT** count messages that were created but haven't yet been sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MESSAGING_CLIENT_SENT_MESSAGES = 'messaging.client.sent.messages'; +/** + * Duration of processing operation. + * + * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_MESSAGING_PROCESS_DURATION = 'messaging.process.duration'; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +export const METRIC_MESSAGING_PROCESS_MESSAGES = 'messaging.process.messages'; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +export const METRIC_MESSAGING_PUBLISH_DURATION = 'messaging.publish.duration'; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +export const METRIC_MESSAGING_PUBLISH_MESSAGES = 'messaging.publish.messages'; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +export const METRIC_MESSAGING_RECEIVE_DURATION = 'messaging.receive.duration'; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +export const METRIC_MESSAGING_RECEIVE_MESSAGES = 'messaging.receive.messages'; +/** + * Reports the count of kernel NFS client TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.netudpcnt and svc_stat.nettcpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_NET_COUNT = 'nfs.client.net.count'; +/** + * Reports the count of kernel NFS client TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_NET_TCP_CONNECTION_ACCEPTED = 'nfs.client.net.tcp.connection.accepted'; +/** + * Reports the count of kernel NFSv4+ client operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_OPERATION_COUNT = 'nfs.client.operation.count'; +/** + * Reports the count of kernel NFS client procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_PROCEDURE_COUNT = 'nfs.client.procedure.count'; +/** + * Reports the count of kernel NFS client RPC authentication refreshes. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcauthrefresh + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_RPC_AUTHREFRESH_COUNT = 'nfs.client.rpc.authrefresh.count'; +/** + * Reports the count of kernel NFS client RPCs sent, regardless of whether they're accepted/rejected by the server. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_RPC_COUNT = 'nfs.client.rpc.count'; +/** + * Reports the count of kernel NFS client RPC retransmits. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcretrans + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_CLIENT_RPC_RETRANSMIT_COUNT = 'nfs.client.rpc.retransmit.count'; +/** + * Reports the count of kernel NFS server stale file handles. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_FH_STALE counter in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_FH_STALE_COUNT = 'nfs.server.fh.stale.count'; +/** + * Reports the count of kernel NFS server bytes returned to receive and transmit (read and write) requests. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_IO_READ and NFSD_STATS_IO_WRITE counters in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_IO = 'nfs.server.io'; +/** + * Reports the count of kernel NFS server TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpcnt and svc_stat.netudpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_NET_COUNT = 'nfs.server.net.count'; +/** + * Reports the count of kernel NFS server TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_NET_TCP_CONNECTION_ACCEPTED = 'nfs.server.net.tcp.connection.accepted'; +/** + * Reports the count of kernel NFSv4+ server operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_OPERATION_COUNT = 'nfs.server.operation.count'; +/** + * Reports the count of kernel NFS server procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_PROCEDURE_COUNT = 'nfs.server.procedure.count'; +/** + * Reports the kernel NFS server reply cache request count by cache hit status. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_REPCACHE_REQUESTS = 'nfs.server.repcache.requests'; +/** + * Reports the count of kernel NFS server RPCs handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt, the count of good RPCs. This metric can have + * an error.type of "format", "auth", or "client" for svc_stat.badfmt, svc_stat.badauth, and svc_stat.badclnt. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_RPC_COUNT = 'nfs.server.rpc.count'; +/** + * Reports the count of kernel NFS server available threads. + * + * @note Linux: this metric is taken from the Linux kernel nfsd_th_cnt variable + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NFS_SERVER_THREAD_COUNT = 'nfs.server.thread.count'; +/** + * Event loop maximum delay. + * + * @note Value can be retrieved from value `histogram.max` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_MAX = 'nodejs.eventloop.delay.max'; +/** + * Event loop mean delay. + * + * @note Value can be retrieved from value `histogram.mean` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_MEAN = 'nodejs.eventloop.delay.mean'; +/** + * Event loop minimum delay. + * + * @note Value can be retrieved from value `histogram.min` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_MIN = 'nodejs.eventloop.delay.min'; +/** + * Event loop 50 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(50)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_P50 = 'nodejs.eventloop.delay.p50'; +/** + * Event loop 90 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(90)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_P90 = 'nodejs.eventloop.delay.p90'; +/** + * Event loop 99 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(99)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_P99 = 'nodejs.eventloop.delay.p99'; +/** + * Event loop standard deviation delay. + * + * @note Value can be retrieved from value `histogram.stddev` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_DELAY_STDDEV = 'nodejs.eventloop.delay.stddev'; +/** + * Cumulative duration of time the event loop has been in each state. + * + * @note Value can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_TIME = 'nodejs.eventloop.time'; +/** + * Event loop utilization. + * + * @note The value range is [0.0, 1.0] and can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_NODEJS_EVENTLOOP_UTILIZATION = 'nodejs.eventloop.utilization'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_HARD = 'openshift.clusterquota.cpu.limit.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_USED = 'openshift.clusterquota.cpu.limit.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_HARD = 'openshift.clusterquota.cpu.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_USED = 'openshift.clusterquota.cpu.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'openshift.clusterquota.ephemeral_storage.limit.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'openshift.clusterquota.ephemeral_storage.limit.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'openshift.clusterquota.ephemeral_storage.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'openshift.clusterquota.ephemeral_storage.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'openshift.clusterquota.hugepage_count.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'openshift.clusterquota.hugepage_count.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_HARD = 'openshift.clusterquota.memory.limit.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_USED = 'openshift.clusterquota.memory.limit.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_HARD = 'openshift.clusterquota.memory.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_USED = 'openshift.clusterquota.memory.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_HARD = 'openshift.clusterquota.object_count.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_USED = 'openshift.clusterquota.object_count.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'openshift.clusterquota.persistentvolumeclaim_count.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'openshift.clusterquota.persistentvolumeclaim_count.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_HARD = 'openshift.clusterquota.storage.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_USED = 'openshift.clusterquota.storage.request.used'; +/** + * The number of log records for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_log_records`), rejected log records **MUST** count as failed and only non-rejected log records count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_LOG_EXPORTED = 'otel.sdk.exporter.log.exported'; +/** + * The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_LOG_INFLIGHT = 'otel.sdk.exporter.log.inflight'; +/** + * The number of metric data points for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_data_points`), rejected data points **MUST** count as failed and only non-rejected data points count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_EXPORTED = 'otel.sdk.exporter.metric_data_point.exported'; +/** + * The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_INFLIGHT = 'otel.sdk.exporter.metric_data_point.inflight'; +/** + * The duration of exporting a batch of telemetry records. + * + * @note This metric defines successful operations using the full success definitions for [http](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1) + * and [grpc](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success). Anything else is defined as an unsuccessful operation. For successful + * operations, `error.type` **MUST NOT** be set. For unsuccessful export operations, `error.type` **MUST** contain a relevant failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_OPERATION_DURATION = 'otel.sdk.exporter.operation.duration'; +/** + * The number of spans for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans **MUST** count as failed and only non-rejected spans count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED = 'otel.sdk.exporter.span.exported'; +/** + * Deprecated, use `otel.sdk.exporter.span.exported` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.exported`. + */ +export const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT = 'otel.sdk.exporter.span.exported.count'; +/** + * The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT = 'otel.sdk.exporter.span.inflight'; +/** + * Deprecated, use `otel.sdk.exporter.span.inflight` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.inflight`. + */ +export const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT = 'otel.sdk.exporter.span.inflight.count'; +/** + * The number of logs submitted to enabled SDK Loggers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_LOG_CREATED = 'otel.sdk.log.created'; +/** + * The duration of the collect operation of the metric reader. + * + * @note For successful collections, `error.type` **MUST NOT** be set. For failed collections, `error.type` **SHOULD** contain the failure cause. + * It can happen that metrics collection is successful for some MetricProducers, while others fail. In that case `error.type` **SHOULD** be set to any of the failure causes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_METRIC_READER_COLLECTION_DURATION = 'otel.sdk.metric_reader.collection.duration'; +/** + * The number of log records for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter, + * not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED = 'otel.sdk.processor.log.processed'; +/** + * The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold. + * + * @note Only applies to Log Record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY = 'otel.sdk.processor.log.queue.capacity'; +/** + * The number of log records in the queue of a given instance of an SDK log processor. + * + * @note Only applies to log record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE = 'otel.sdk.processor.log.queue.size'; +/** + * The number of spans for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED = 'otel.sdk.processor.span.processed'; +/** + * Deprecated, use `otel.sdk.processor.span.processed` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.processor.span.processed`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT = 'otel.sdk.processor.span.processed.count'; +/** + * The maximum number of spans the queue of a given instance of an SDK span processor can hold. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY = 'otel.sdk.processor.span.queue.capacity'; +/** + * The number of spans in the queue of a given instance of an SDK span processor. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE = 'otel.sdk.processor.span.queue.size'; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export const METRIC_OTEL_SDK_SPAN_ENDED = 'otel.sdk.span.ended'; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export const METRIC_OTEL_SDK_SPAN_ENDED_COUNT = 'otel.sdk.span.ended.count'; +/** + * The number of created spans with `recording=true` for which the end operation has not been called yet. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live'; +/** + * Deprecated, use `otel.sdk.span.live` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.span.live`. + */ +export const METRIC_OTEL_SDK_SPAN_LIVE_COUNT = 'otel.sdk.span.live.count'; +/** + * The number of created spans. + * + * @note Implementations **MUST** record this metric for all spans, even for non-recording ones. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started'; +/** + * Number of times the process has been context switched. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_CONTEXT_SWITCHES = 'process.context_switches'; +/** + * Total CPU seconds broken down by different states. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_CPU_TIME = 'process.cpu.time'; +/** + * Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_CPU_UTILIZATION = 'process.cpu.utilization'; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_DISK_IO = 'process.disk.io'; +/** + * The amount of physical memory in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_MEMORY_USAGE = 'process.memory.usage'; +/** + * The amount of committed virtual memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_MEMORY_VIRTUAL = 'process.memory.virtual'; +/** + * Network bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_NETWORK_IO = 'process.network.io'; +/** + * Deprecated, use `process.unix.file_descriptor.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.unix.file_descriptor.count`. + */ +export const METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT = 'process.open_file_descriptor.count'; +/** + * Number of page faults the process has made. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_PAGING_FAULTS = 'process.paging.faults'; +/** + * Process threads count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_THREAD_COUNT = 'process.thread.count'; +/** + * Number of unix file descriptors in use by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT = 'process.unix.file_descriptor.count'; +/** + * The time the process has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_UPTIME = 'process.uptime'; +/** + * Number of handles held by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_PROCESS_WINDOWS_HANDLE_COUNT = 'process.windows.handle.count'; +/** + * Measures the duration of outbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC client span, the metric value + * **SHOULD** be the same as the RPC client span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_CLIENT_CALL_DURATION = 'rpc.client.call.duration'; +/** + * Deprecated, use `rpc.client.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.client.call.duration` with unit `s`. + */ +export const METRIC_RPC_CLIENT_DURATION = 'rpc.client.duration'; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_CLIENT_REQUEST_SIZE = 'rpc.client.request.size'; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const METRIC_RPC_CLIENT_REQUESTS_PER_RPC = 'rpc.client.requests_per_rpc'; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_CLIENT_RESPONSE_SIZE = 'rpc.client.response.size'; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const METRIC_RPC_CLIENT_RESPONSES_PER_RPC = 'rpc.client.responses_per_rpc'; +/** + * Measures the duration of inbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC server span, the metric value + * **SHOULD** be the same as the RPC server span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_SERVER_CALL_DURATION = 'rpc.server.call.duration'; +/** + * Deprecated, use `rpc.server.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.server.call.duration` with unit `s`. + */ +export const METRIC_RPC_SERVER_DURATION = 'rpc.server.duration'; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_SERVER_REQUEST_SIZE = 'rpc.server.request.size'; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming** : This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const METRIC_RPC_SERVER_REQUESTS_PER_RPC = 'rpc.server.requests_per_rpc'; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_RPC_SERVER_RESPONSE_SIZE = 'rpc.server.response.size'; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export const METRIC_RPC_SERVER_RESPONSES_PER_RPC = 'rpc.server.responses_per_rpc'; +/** + * Operating frequency of the logical CPU in Hertz. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_CPU_FREQUENCY = 'system.cpu.frequency'; +/** + * Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_CPU_LOGICAL_COUNT = 'system.cpu.logical.count'; +/** + * Reports the number of actual physical processor cores on the hardware. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_CPU_PHYSICAL_COUNT = 'system.cpu.physical.count'; +/** + * Seconds each logical CPU spent on each mode. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_CPU_TIME = 'system.cpu.time'; +/** + * For each logical CPU, the utilization is calculated as the change in cumulative CPU time (cpu.time) over a measurement interval, divided by the elapsed time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_CPU_UTILIZATION = 'system.cpu.utilization'; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_IO = 'system.disk.io'; +/** + * Time disk spent activated. + * + * @note The real elapsed time ("wall clock") used in the I/O path (time from operations running in parallel are not counted). Measured as: + * + * - Linux: Field 13 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: The complement of + * ["Disk% Idle Time"](https://learn.microsoft.com/archive/blogs/askcore/windows-performance-monitor-disk-counters-explained#windows-performance-monitor-disk-counters-explained) + * performance counter: `uptime * (100 - "Disk\% Idle Time") / 100` + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_IO_TIME = 'system.disk.io_time'; +/** + * The total storage capacity of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_LIMIT = 'system.disk.limit'; +/** + * The number of disk reads/writes merged into single physical disk access operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_MERGED = 'system.disk.merged'; +/** + * Sum of the time each operation took to complete. + * + * @note Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as: + * + * - Linux: Fields 7 & 11 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: "Avg. Disk sec/Read" perf counter multiplied by "Disk Reads/sec" perf counter (similar for Writes) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_OPERATION_TIME = 'system.disk.operation_time'; +/** + * Disk operations count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_DISK_OPERATIONS = 'system.disk.operations'; +/** + * The total storage capacity of the filesystem. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_FILESYSTEM_LIMIT = 'system.filesystem.limit'; +/** + * Reports a filesystem's space usage across different states. + * + * @note The sum of all `system.filesystem.usage` values over the different `system.filesystem.state` attributes + * **SHOULD** equal the total storage capacity of the filesystem, that is `system.filesystem.limit`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_FILESYSTEM_USAGE = 'system.filesystem.usage'; +/** + * Fraction of filesystem bytes used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_FILESYSTEM_UTILIZATION = 'system.filesystem.utilization'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.available`. + */ +export const METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE = 'system.linux.memory.available'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.usage`. + */ +export const METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE = 'system.linux.memory.slab.usage'; +/** + * Total virtual memory available in the system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_LIMIT = 'system.memory.limit'; +/** + * An estimate of how much memory is available for starting new applications, without causing swapping. + * + * @note This is an alternative to `system.memory.usage` metric with `state=free`. + * Linux starting from 3.14 exports "available" memory. It takes "free" memory as a baseline, and then factors in kernel-specific values. + * This is supposed to be more accurate than just "free" memory. + * For reference, see the calculations [here](https://superuser.com/a/980821). + * See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE = 'system.memory.linux.available'; +/** + * Reports the memory used by the Linux kernel for managing caches of frequently used objects. + * + * @note The sum over the `reclaimable` and `unreclaimable` state values in `memory.linux.slab.usage` **SHOULD** be equal to the total slab memory available on the system. + * Note that the total slab memory is not constant and may vary over time. + * See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE = 'system.memory.linux.slab.usage'; +/** + * Shared memory used (mostly by tmpfs). + * + * @note Equivalent of `shared` from [`free` command](https://man7.org/linux/man-pages/man1/free.1.html) or + * `Shmem` from [`/proc/meminfo`](https://man7.org/linux/man-pages/man5/proc.5.html)" + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_SHARED = 'system.memory.shared'; +/** + * Reports memory in use by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_USAGE = 'system.memory.usage'; +/** + * Percentage of memory bytes in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_MEMORY_UTILIZATION = 'system.memory.utilization'; +/** + * The number of connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_NETWORK_CONNECTION_COUNT = 'system.network.connection.count'; +/** + * Deprecated, use `system.network.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.connection.count`. + */ +export const METRIC_SYSTEM_NETWORK_CONNECTIONS = 'system.network.connections'; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.dropped`. + */ +export const METRIC_SYSTEM_NETWORK_DROPPED = 'system.network.dropped'; +/** + * Count of network errors detected. + * + * @note Measured as: + * + * - Linux: the `errs` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)). + * - Windows: [`InErrors`/`OutErrors`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_NETWORK_ERRORS = 'system.network.errors'; +/** + * The number of bytes transmitted and received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_NETWORK_IO = 'system.network.io'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_NETWORK_PACKET_COUNT = 'system.network.packet.count'; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_NETWORK_PACKET_DROPPED = 'system.network.packet.dropped'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.count`. + */ +export const METRIC_SYSTEM_NETWORK_PACKETS = 'system.network.packets'; +/** + * The number of page faults. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PAGING_FAULTS = 'system.paging.faults'; +/** + * The number of paging operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PAGING_OPERATIONS = 'system.paging.operations'; +/** + * Unix swap or windows pagefile usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PAGING_USAGE = 'system.paging.usage'; +/** + * Swap (unix) or pagefile (windows) utilization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PAGING_UTILIZATION = 'system.paging.utilization'; +/** + * Total number of processes in each state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PROCESS_COUNT = 'system.process.count'; +/** + * Total number of processes created over uptime of the host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_PROCESS_CREATED = 'system.process.created'; +/** + * The time the system has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_SYSTEM_UPTIME = 'system.uptime'; +/** + * Garbage collection duration. + * + * @note The values can be retrieved from [`perf_hooks.PerformanceObserver(...).observe({ entryTypes: ['gc'] })`](https://nodejs.org/api/perf_hooks.html#performanceobserverobserveoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_V8JS_GC_DURATION = 'v8js.gc.duration'; +/** + * Deprecated, use `v8js.memory.heap.space.available_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.available_size`. + */ +export const METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.heap.space.available_size'; +/** + * Deprecated, use `v8js.memory.heap.space.physical_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.physical_size`. + */ +export const METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.heap.space.physical_size'; +/** + * Total heap memory size pre-allocated. + * + * @note The value can be retrieved from value `space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_V8JS_MEMORY_HEAP_LIMIT = 'v8js.memory.heap.limit'; +/** + * Heap space available size. + * + * @note Value can be retrieved from value `space_available_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.memory.heap.space.available_size'; +/** + * Committed size of a heap space. + * + * @note Value can be retrieved from value `physical_space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.memory.heap.space.physical_size'; +/** + * Heap Memory size allocated. + * + * @note The value can be retrieved from value `space_used_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_V8JS_MEMORY_HEAP_USED = 'v8js.memory.heap.used'; +/** + * The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_CHANGE_COUNT = 'vcs.change.count'; +/** + * The time duration a change (pull request/merge request/changelist) has been in a given state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_CHANGE_DURATION = 'vcs.change.duration'; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_CHANGE_TIME_TO_APPROVAL = 'vcs.change.time_to_approval'; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get merged into the target(base) ref. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_CHANGE_TIME_TO_MERGE = 'vcs.change.time_to_merge'; +/** + * The number of unique contributors to a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_CONTRIBUTOR_COUNT = 'vcs.contributor.count'; +/** + * The number of refs of type branch or tag in a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_REF_COUNT = 'vcs.ref.count'; +/** + * The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.line_change.type` value. For example if a ref added 3 lines and removed 2 lines, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers). + * If number of lines added/removed should be calculated from the start of time, then `vcs.ref.base.name` **SHOULD** be set to an empty string. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_REF_LINES_DELTA = 'vcs.ref.lines_delta'; +/** + * The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.revision_delta.direction` value. For example if branch `a` is 3 commits behind and 2 commits ahead of `trunk`, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers) and `vcs.ref.base.name` is set to `trunk`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_REF_REVISIONS_DELTA = 'vcs.ref.revisions_delta'; +/** + * Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_REF_TIME = 'vcs.ref.time'; +/** + * The number of repositories in an organization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_VCS_REPOSITORY_COUNT = 'vcs.repository.count'; +//# sourceMappingURL=experimental_metrics.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js.map new file mode 100644 index 0000000..600d0b8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"experimental_metrics.js","sourceRoot":"","sources":["../../src/experimental_metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4GAA4G;AAC5G,2GAA2G;AAC3G,4GAA4G;AAE5G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,iDAA0D,CAAC;AAEjI;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,sCAA+C,CAAC;AAE3G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,mCAA4C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,oCAA6C,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,qCAA8C,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,mCAA4C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wDAAwD,GAAG,mDAA4D,CAAC;AAErI;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,qDAA8D,CAAC;AAEzI;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,sCAA+C,CAAC;AAE3G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+DAA+D,GAAG,0DAAmE,CAAC;AAEnJ;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gEAAgE,GAAG,2DAAoE,CAAC;AAErJ;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,kDAA2D,CAAC;AAEnI;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,0CAAmD,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,0CAAmD,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,2CAAoD,CAAC;AAErH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,0CAAmD,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,gDAAyD,CAAC;AAE/H;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,6CAAsD,CAAC;AAEzH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,gDAAyD,CAAC;AAE/H;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAA4B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAA4B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAA2B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAwB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAmB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,mCAA4C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wCAAiD,CAAC;AAE/G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,iCAA0C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,0CAAmD,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,6CAAsD,CAAC;AAEzH;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAyB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAsB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAA2B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAyB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAsB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,qCAA8C,CAAC;AAEzG;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,mCAA4C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAyB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAA4B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAyB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,iCAA0C,CAAC;AAEjG;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAA4B,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAuB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAoB,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAoB,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAuB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAoB,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAyB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAyB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wCAAiD,CAAC;AAE/G;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAmB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAoB,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAyB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAqB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAA2B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAA2B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,qCAA8C,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,yCAAkD,CAAC;AAEjH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,sCAA+C,CAAC;AAE3G;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,sCAA+C,CAAC;AAE3G;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,iCAA0C,CAAC;AAEjG;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAA2B,CAAC;AAEnE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,+CAAwD,CAAC;AAE7H;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,yCAAkD,CAAC;AAEjH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,iCAA0C,CAAC;AAEjG;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAA2B,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,iCAA0C,CAAC;AAEjG;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wCAAiD,CAAC;AAE/G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAA4B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wCAAiD,CAAC;AAE/G;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAA2B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAA4B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAyB,CAAC;AAE/D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gDAAgD,GAAG,2CAAoD,CAAC;AAErH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,yCAAkD,CAAC;AAEjH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,0CAAmD,CAAC;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wCAAiD,CAAC;AAE/G;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,yCAAkD,CAAC;AAEjH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,oCAA6C,CAAC;AAEvG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,oCAA6C,CAAC;AAEvG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,gDAAyD,CAAC;AAE/H;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,gDAAyD,CAAC;AAE/H;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,kDAA2D,CAAC;AAEnI;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,kDAA2D,CAAC;AAEnI;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,+CAAwD,CAAC;AAE7H;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,+CAAwD,CAAC;AAE7H;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,qCAA8C,CAAC;AAEzG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,qCAA8C,CAAC;AAEzG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,qCAA8C,CAAC;AAEzG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,qCAA8C,CAAC;AAEzG;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,yDAAyD,GAAG,oDAA6D,CAAC;AAEvI;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,yDAAyD,GAAG,oDAA6D,CAAC;AAEvI;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wCAAiD,CAAC;AAE/G;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wCAAiD,CAAC;AAE/G;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,oCAA6C,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,qCAA8C,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,qCAA8C,CAAC;AAEzG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wCAAiD,CAAC;AAE/G;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,iCAA0C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAwB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wCAAiD,CAAC;AAE/G;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,yCAAkD,CAAC;AAEjH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,yCAAkD,CAAC;AAEjH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,qDAA8D,CAAC;AAEzI;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0DAA0D,GAAG,qDAA8D,CAAC;AAEzI;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4DAA4D,GAAG,uDAAgE,CAAC;AAE7I;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4DAA4D,GAAG,uDAAgE,CAAC;AAE7I;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yDAAyD,GAAG,oDAA6D,CAAC;AAEvI;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yDAAyD,GAAG,oDAA6D,CAAC;AAEvI;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,0CAAmD,CAAC;AAEnH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,0CAAmD,CAAC;AAEnH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,4CAAqD,CAAC;AAEvH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,4CAAqD,CAAC;AAEvH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,0CAAmD,CAAC;AAEnH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,0CAAmD,CAAC;AAEnH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,8DAA8D,GAAG,yDAAkE,CAAC;AAEjJ;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,8DAA8D,GAAG,yDAAkE,CAAC;AAEjJ;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,6CAAsD,CAAC;AAEzH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kDAAkD,GAAG,6CAAsD,CAAC;AAEzH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mDAAmD,GAAG,8CAAuD,CAAC;AAE3H;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mDAAmD,GAAG,8CAAuD,CAAC;AAE3H;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,sCAA+C,CAAC;AAE3G;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,iCAA0C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,iCAA0C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,4CAAqD,CAAC;AAEvH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,kCAA2C,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,mCAA4C,CAAC;AAErG;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,mCAA4C,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,yCAAkD,CAAC;AAEjH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,wCAAiD,CAAC;AAE/G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,oCAA6C,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAA2B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,oCAA6C,CAAC;AAEvG;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,oCAA6C,CAAC;AAEvG;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAyB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,8BAAuC,CAAC;AAE3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAyB,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAA4B,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAA6B,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,iCAA0C,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAAqC,CAAC;AAEvF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAA4B,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAAoC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAwB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAA2B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAyC,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,+BAAwC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAiC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,uCAAgD,CAAC;AAE7G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,sCAA+C,CAAC;AAE3G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAA2B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAAsC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAwB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAuB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * The authentication duration for a request.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_AUTHENTICATE_DURATION = 'aspnetcore.authentication.authenticate.duration' as const;\n\n/**\n * The total number of times a scheme is challenged.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_CHALLENGES = 'aspnetcore.authentication.challenges' as const;\n\n/**\n * The total number of times an authenticated user attempts to access a resource they are not permitted to access.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_FORBIDS = 'aspnetcore.authentication.forbids' as const;\n\n/**\n * The total number of times a principal is signed in with a scheme.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_INS = 'aspnetcore.authentication.sign_ins' as const;\n\n/**\n * The total number of times a principal is signed out with a scheme.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_OUTS = 'aspnetcore.authentication.sign_outs' as const;\n\n/**\n * The total number of authorization attempts.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authorization`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHORIZATION_ATTEMPTS = 'aspnetcore.authorization.attempts' as const;\n\n/**\n * The duration of authenticate attempts. The authenticate metrics is recorded by sign in methods such as PasswordSignInAsync and TwoFactorSignInAsync.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_AUTHENTICATE_DURATION = 'aspnetcore.identity.sign_in.authenticate.duration' as const;\n\n/**\n * The total number of check password attempts. Checks that the account is in a state that can log in and that the password is valid using the UserManager.CheckPasswordAsync method.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.sign_in.check_password_attempts' as const;\n\n/**\n * The total number of calls to sign in user principals.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_INS = 'aspnetcore.identity.sign_in.sign_ins' as const;\n\n/**\n * The total number of calls to sign out user principals.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_OUTS = 'aspnetcore.identity.sign_in.sign_outs' as const;\n\n/**\n * The total number of two factor clients forgotten.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_FORGOTTEN = 'aspnetcore.identity.sign_in.two_factor_clients_forgotten' as const;\n\n/**\n * The total number of two factor clients remembered.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_REMEMBERED = 'aspnetcore.identity.sign_in.two_factor_clients_remembered' as const;\n\n/**\n * The number of check password attempts. Only checks whether the password is valid and not whether the user account is in a state that can log in.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.user.check_password_attempts' as const;\n\n/**\n * The duration of user creation operations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_CREATE_DURATION = 'aspnetcore.identity.user.create.duration' as const;\n\n/**\n * The duration of user deletion operations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_DELETE_DURATION = 'aspnetcore.identity.user.delete.duration' as const;\n\n/**\n * The total number of token generations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_GENERATED_TOKENS = 'aspnetcore.identity.user.generated_tokens' as const;\n\n/**\n * The duration of user update operations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_UPDATE_DURATION = 'aspnetcore.identity.user.update.duration' as const;\n\n/**\n * The total number of token verification attempts.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_VERIFY_TOKEN_ATTEMPTS = 'aspnetcore.identity.user.verify_token_attempts' as const;\n\n/**\n * Total number of bytes allocated by the memory pool. Allocation occurs when a memory rental request exceeds the available pooled memory.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_ALLOCATED = 'aspnetcore.memory_pool.allocated' as const;\n\n/**\n * Total number of bytes evicted from the memory pool. Eviction occurs when idle pooled memory is reclaimed.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_EVICTED = 'aspnetcore.memory_pool.evicted' as const;\n\n/**\n * Number of bytes currently pooled and available for reuse.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_POOLED = 'aspnetcore.memory_pool.pooled' as const;\n\n/**\n * Total number of bytes rented from the memory pool.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_RENTED = 'aspnetcore.memory_pool.rented' as const;\n\n/**\n * Number of active client instances.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_AZURE_COSMOSDB_CLIENT_ACTIVE_INSTANCE_COUNT = 'azure.cosmosdb.client.active_instance.count' as const;\n\n/**\n * [Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_AZURE_COSMOSDB_CLIENT_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.client.operation.request_charge' as const;\n\n/**\n * The number of pipeline runs currently active in the system by state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_PIPELINE_RUN_ACTIVE = 'cicd.pipeline.run.active' as const;\n\n/**\n * Duration of a pipeline run grouped by pipeline, state and result.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_PIPELINE_RUN_DURATION = 'cicd.pipeline.run.duration' as const;\n\n/**\n * The number of errors encountered in pipeline runs (eg. compile, test failures).\n *\n * @note There might be errors in a pipeline run that are non fatal (eg. they are suppressed) or in a parallel stage multiple stages could have a fatal error.\n * This means that this error count might not be the same as the count of metric `cicd.pipeline.run.duration` with run result `failure`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_PIPELINE_RUN_ERRORS = 'cicd.pipeline.run.errors' as const;\n\n/**\n * The number of errors in a component of the CICD system (eg. controller, scheduler, agent).\n *\n * @note Errors in pipeline run execution are explicitly excluded. Ie a test failure is not counted in this metric.\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_SYSTEM_ERRORS = 'cicd.system.errors' as const;\n\n/**\n * The number of workers on the CICD system by state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_WORKER_COUNT = 'cicd.worker.count' as const;\n\n/**\n * Total CPU time consumed.\n *\n * @note Total CPU time consumed by the specific container on all available CPU cores\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_CPU_TIME = 'container.cpu.time' as const;\n\n/**\n * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs.\n *\n * @note CPU usage of the specific container on all available CPU cores, averaged over the sample window\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_CPU_USAGE = 'container.cpu.usage' as const;\n\n/**\n * Disk bytes for the container.\n *\n * @note The total number of bytes read/written successfully (aggregated from all disks).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_DISK_IO = 'container.disk.io' as const;\n\n/**\n * Container filesystem available bytes.\n *\n * @note In K8s, this metric is derived from the\n * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_FILESYSTEM_AVAILABLE = 'container.filesystem.available' as const;\n\n/**\n * Container filesystem capacity.\n *\n * @note In K8s, this metric is derived from the\n * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_FILESYSTEM_CAPACITY = 'container.filesystem.capacity' as const;\n\n/**\n * Container filesystem usage.\n *\n * @note This may not equal capacity - available.\n *\n * In K8s, this metric is derived from the\n * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_FILESYSTEM_USAGE = 'container.filesystem.usage' as const;\n\n/**\n * Container memory available.\n *\n * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted.\n * In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and by subtracting the `container_memory_working_set_bytes` metric from the `container_spec_memory_limit_bytes` metric.\n * In K8s, this metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_AVAILABLE = 'container.memory.available' as const;\n\n/**\n * Container memory paging faults.\n *\n * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_failures_total{failure_type=pgfault, scope=container}` and `container_memory_failures_total{failure_type=pgmajfault, scope=container}`metric.\n * In K8s, this metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_PAGING_FAULTS = 'container.memory.paging.faults' as const;\n\n/**\n * Container memory RSS.\n *\n * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_rss` metric.\n * In K8s, this metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_RSS = 'container.memory.rss' as const;\n\n/**\n * Memory usage of the container.\n *\n * @note Memory usage of the container.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_USAGE = 'container.memory.usage' as const;\n\n/**\n * Container memory working set.\n *\n * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_working_set_bytes` metric.\n * In K8s, this metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_WORKING_SET = 'container.memory.working_set' as const;\n\n/**\n * Network bytes for the container.\n *\n * @note The number of bytes sent/received on all network interfaces by the container.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_NETWORK_IO = 'container.network.io' as const;\n\n/**\n * The time the container has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_UPTIME = 'container.uptime' as const;\n\n/**\n * Deprecated. Use `system.cpu.frequency` 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 `system.cpu.frequency`.\n */\nexport const METRIC_CPU_FREQUENCY = 'cpu.frequency' as const;\n\n/**\n * Deprecated. Use `system.cpu.time` 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 `system.cpu.time`.\n */\nexport const METRIC_CPU_TIME = 'cpu.time' as const;\n\n/**\n * Deprecated. Use `system.cpu.utilization` 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 `system.cpu.utilization`.\n */\nexport const METRIC_CPU_UTILIZATION = 'cpu.utilization' as const;\n\n/**\n * The total number of objects collected inside a generation since interpreter start.\n *\n * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CPYTHON_GC_COLLECTED_OBJECTS = 'cpython.gc.collected_objects' as const;\n\n/**\n * The number of times a generation was collected since interpreter start.\n *\n * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CPYTHON_GC_COLLECTIONS = 'cpython.gc.collections' as const;\n\n/**\n * The total number of objects which were found to be uncollectable inside a generation since interpreter start.\n *\n * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CPYTHON_GC_UNCOLLECTABLE_OBJECTS = 'cpython.gc.uncollectable_objects' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count' as const;\n\n/**\n * The time it took to create a new connection.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_CREATE_TIME = 'db.client.connection.create_time' as const;\n\n/**\n * The maximum number of idle open connections allowed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_IDLE_MAX = 'db.client.connection.idle.max' as const;\n\n/**\n * The minimum number of idle open connections allowed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_IDLE_MIN = 'db.client.connection.idle.min' as const;\n\n/**\n * The maximum number of open connections allowed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_MAX = 'db.client.connection.max' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests' as const;\n\n/**\n * The number of connection timeouts that have occurred trying to obtain a connection from the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_TIMEOUTS = 'db.client.connection.timeouts' as const;\n\n/**\n * The time between borrowing a connection and returning it to the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_USE_TIME = 'db.client.connection.use_time' as const;\n\n/**\n * The time it took to obtain an open connection from the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_WAIT_TIME = 'db.client.connection.wait_time' as const;\n\n/**\n * Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`.\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.create_time` with unit `s`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME = 'db.client.connections.create_time' as const;\n\n/**\n * Deprecated, use `db.client.connection.idle.max` 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.idle.max`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MAX = 'db.client.connections.idle.max' as const;\n\n/**\n * Deprecated, use `db.client.connection.idle.min` 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.idle.min`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MIN = 'db.client.connections.idle.min' as const;\n\n/**\n * Deprecated, use `db.client.connection.max` 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.max`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_MAX = 'db.client.connections.max' as const;\n\n/**\n * Deprecated, use `db.client.connection.pending_requests` 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.pending_requests`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS = 'db.client.connections.pending_requests' as const;\n\n/**\n * Deprecated, use `db.client.connection.timeouts` 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.timeouts`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_TIMEOUTS = 'db.client.connections.timeouts' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage' as const;\n\n/**\n * Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`.\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.use_time` with unit `s`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USE_TIME = 'db.client.connections.use_time' as const;\n\n/**\n * Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`.\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.wait_time` with unit `s`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME = 'db.client.connections.wait_time' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.client.active_instance.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 `azure.cosmosdb.client.active_instance.count`.\n */\nexport const METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT = 'db.client.cosmosdb.active_instance.count' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.client.operation.request_charge` 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 `azure.cosmosdb.client.operation.request_charge`.\n */\nexport const METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE = 'db.client.cosmosdb.operation.request_charge' as const;\n\n/**\n * The actual number of records returned by the database operation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS = 'db.client.response.returned_rows' as const;\n\n/**\n * Measures the time taken to perform a DNS lookup.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DNS_LOOKUP_DURATION = 'dns.lookup.duration' as const;\n\n/**\n * Number of invocation cold starts.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_COLDSTARTS = 'faas.coldstarts' as const;\n\n/**\n * Distribution of CPU usage per invocation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_CPU_USAGE = 'faas.cpu_usage' as const;\n\n/**\n * Number of invocation errors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_ERRORS = 'faas.errors' as const;\n\n/**\n * Measures the duration of the function's initialization, such as a cold start.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_INIT_DURATION = 'faas.init_duration' as const;\n\n/**\n * Number of successful invocations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_INVOCATIONS = 'faas.invocations' as const;\n\n/**\n * Measures the duration of the function's logic execution.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_INVOKE_DURATION = 'faas.invoke_duration' as const;\n\n/**\n * Distribution of max memory usage per invocation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_MEM_USAGE = 'faas.mem_usage' as const;\n\n/**\n * Distribution of net I/O usage per invocation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_NET_IO = 'faas.net_io' as const;\n\n/**\n * Number of invocation timeouts.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_TIMEOUTS = 'faas.timeouts' as const;\n\n/**\n * GenAI operation duration.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_CLIENT_OPERATION_DURATION = 'gen_ai.client.operation.duration' as const;\n\n/**\n * Number of input and output tokens used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_CLIENT_TOKEN_USAGE = 'gen_ai.client.token.usage' as const;\n\n/**\n * Generative AI server request duration such as time-to-last byte or last output token.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_SERVER_REQUEST_DURATION = 'gen_ai.server.request.duration' as const;\n\n/**\n * Time per output token generated after the first token for successful responses.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN = 'gen_ai.server.time_per_output_token' as const;\n\n/**\n * Time to generate first token for successful responses.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_SERVER_TIME_TO_FIRST_TOKEN = 'gen_ai.server.time_to_first_token' as const;\n\n/**\n * Heap size target percentage configured by the user, otherwise 100.\n *\n * @note The value range is [0.0,100.0]. Computed from `/gc/gogc:percent`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_CONFIG_GOGC = 'go.config.gogc' as const;\n\n/**\n * Count of live goroutines.\n *\n * @note Computed from `/sched/goroutines:goroutines`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_GOROUTINE_COUNT = 'go.goroutine.count' as const;\n\n/**\n * Memory allocated to the heap by the application.\n *\n * @note Computed from `/gc/heap/allocs:bytes`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_ALLOCATED = 'go.memory.allocated' as const;\n\n/**\n * Count of allocations to the heap by the application.\n *\n * @note Computed from `/gc/heap/allocs:objects`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_ALLOCATIONS = 'go.memory.allocations' as const;\n\n/**\n * Heap size target for the end of the GC cycle.\n *\n * @note Computed from `/gc/heap/goal:bytes`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_GC_GOAL = 'go.memory.gc.goal' as const;\n\n/**\n * Go runtime memory limit configured by the user, if a limit exists.\n *\n * @note Computed from `/gc/gomemlimit:bytes`. This metric is excluded if the limit obtained from the Go runtime is math.MaxInt64.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_LIMIT = 'go.memory.limit' as const;\n\n/**\n * Memory used by the Go runtime.\n *\n * @note Computed from `(/memory/classes/total:bytes - /memory/classes/heap/released:bytes)`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_USED = 'go.memory.used' as const;\n\n/**\n * The number of OS threads that can execute user-level Go code simultaneously.\n *\n * @note Computed from `/sched/gomaxprocs:threads`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_PROCESSOR_LIMIT = 'go.processor.limit' as const;\n\n/**\n * The time goroutines have spent in the scheduler in a runnable state before actually running.\n *\n * @note Computed from `/sched/latencies:seconds`. Bucket boundaries are provided by the runtime, and are subject to change.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_SCHEDULE_DURATION = 'go.schedule.duration' as const;\n\n/**\n * Number of active HTTP requests.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_ACTIVE_REQUESTS = 'http.client.active_requests' as const;\n\n/**\n * The duration of the successfully established outbound HTTP connections.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_CONNECTION_DURATION = 'http.client.connection.duration' as const;\n\n/**\n * Number of outbound HTTP connections that are currently active or idle on the client.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_OPEN_CONNECTIONS = 'http.client.open_connections' as const;\n\n/**\n * Size of HTTP client request bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_REQUEST_BODY_SIZE = 'http.client.request.body.size' as const;\n\n/**\n * Size of HTTP client response bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE = 'http.client.response.body.size' as const;\n\n/**\n * Number of active HTTP server requests.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_SERVER_ACTIVE_REQUESTS = 'http.server.active_requests' as const;\n\n/**\n * Size of HTTP server request bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_SERVER_REQUEST_BODY_SIZE = 'http.server.request.body.size' as const;\n\n/**\n * Size of HTTP server response bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_SERVER_RESPONSE_BODY_SIZE = 'http.server.response.body.size' as const;\n\n/**\n * Remaining fraction of battery charge.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_BATTERY_CHARGE = 'hw.battery.charge' as const;\n\n/**\n * Lower limit of battery charge fraction to ensure proper operation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_BATTERY_CHARGE_LIMIT = 'hw.battery.charge.limit' as const;\n\n/**\n * Time left before battery is completely charged or discharged.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_BATTERY_TIME_LEFT = 'hw.battery.time_left' as const;\n\n/**\n * CPU current frequency.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_CPU_SPEED = 'hw.cpu.speed' as const;\n\n/**\n * CPU maximum frequency.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_CPU_SPEED_LIMIT = 'hw.cpu.speed.limit' as const;\n\n/**\n * Energy consumed by the component.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_ENERGY = 'hw.energy' as const;\n\n/**\n * Number of errors encountered by the component.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_ERRORS = 'hw.errors' as const;\n\n/**\n * Fan speed in revolutions per minute.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_FAN_SPEED = 'hw.fan.speed' as const;\n\n/**\n * Speed limit in rpm.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_FAN_SPEED_LIMIT = 'hw.fan.speed.limit' as const;\n\n/**\n * Fan speed expressed as a fraction of its maximum speed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_FAN_SPEED_RATIO = 'hw.fan.speed_ratio' as const;\n\n/**\n * Received and transmitted bytes by the GPU.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_IO = 'hw.gpu.io' as const;\n\n/**\n * Size of the GPU memory.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_MEMORY_LIMIT = 'hw.gpu.memory.limit' as const;\n\n/**\n * GPU memory used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_MEMORY_USAGE = 'hw.gpu.memory.usage' as const;\n\n/**\n * Fraction of GPU memory used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_MEMORY_UTILIZATION = 'hw.gpu.memory.utilization' as const;\n\n/**\n * Fraction of time spent in a specific task.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_UTILIZATION = 'hw.gpu.utilization' as const;\n\n/**\n * Ambient (external) temperature of the physical host.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_AMBIENT_TEMPERATURE = 'hw.host.ambient_temperature' as const;\n\n/**\n * Total energy consumed by the entire physical host, in joules.\n *\n * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_ENERGY = 'hw.host.energy' as const;\n\n/**\n * By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_HEATING_MARGIN = 'hw.host.heating_margin' as const;\n\n/**\n * Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred).\n *\n * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_POWER = 'hw.host.power' as const;\n\n/**\n * Size of the logical disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_LOGICAL_DISK_LIMIT = 'hw.logical_disk.limit' as const;\n\n/**\n * Logical disk space usage.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_LOGICAL_DISK_USAGE = 'hw.logical_disk.usage' as const;\n\n/**\n * Logical disk space utilization as a fraction.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_LOGICAL_DISK_UTILIZATION = 'hw.logical_disk.utilization' as const;\n\n/**\n * Size of the memory module.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_MEMORY_SIZE = 'hw.memory.size' as const;\n\n/**\n * Link speed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_BANDWIDTH_LIMIT = 'hw.network.bandwidth.limit' as const;\n\n/**\n * Utilization of the network bandwidth as a fraction.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_BANDWIDTH_UTILIZATION = 'hw.network.bandwidth.utilization' as const;\n\n/**\n * Received and transmitted network traffic in bytes.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_IO = 'hw.network.io' as const;\n\n/**\n * Received and transmitted network traffic in packets (or frames).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_PACKETS = 'hw.network.packets' as const;\n\n/**\n * Link status: `1` (up) or `0` (down).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_UP = 'hw.network.up' as const;\n\n/**\n * Endurance remaining for this SSD disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_PHYSICAL_DISK_ENDURANCE_UTILIZATION = 'hw.physical_disk.endurance_utilization' as const;\n\n/**\n * Size of the disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_PHYSICAL_DISK_SIZE = 'hw.physical_disk.size' as const;\n\n/**\n * Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_PHYSICAL_DISK_SMART = 'hw.physical_disk.smart' as const;\n\n/**\n * Instantaneous power consumed by the component.\n *\n * @note It is recommended to report `hw.energy` instead of `hw.power` when possible.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER = 'hw.power' as const;\n\n/**\n * Maximum power output of the power supply.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER_SUPPLY_LIMIT = 'hw.power_supply.limit' as const;\n\n/**\n * Current power output of the power supply.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER_SUPPLY_USAGE = 'hw.power_supply.usage' as const;\n\n/**\n * Utilization of the power supply as a fraction of its maximum output.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER_SUPPLY_UTILIZATION = 'hw.power_supply.utilization' as const;\n\n/**\n * Operational status: `1` (true) or `0` (false) for each of the possible states.\n *\n * @note `hw.status` is currently specified as an *UpDownCounter* but would ideally be represented using a [*StateSet* as defined in OpenMetrics](https://github.com/prometheus/OpenMetrics/blob/v1.0.0/specification/OpenMetrics.md#stateset). This semantic convention will be updated once *StateSet* is specified in OpenTelemetry. This planned change is not expected to have any consequence on the way users query their timeseries backend to retrieve the values of `hw.status` over time.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_STATUS = 'hw.status' as const;\n\n/**\n * Operations performed by the tape drive.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_TAPE_DRIVE_OPERATIONS = 'hw.tape_drive.operations' as const;\n\n/**\n * Temperature in degrees Celsius.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_TEMPERATURE = 'hw.temperature' as const;\n\n/**\n * Temperature limit in degrees Celsius.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_TEMPERATURE_LIMIT = 'hw.temperature.limit' as const;\n\n/**\n * Voltage measured by the sensor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_VOLTAGE = 'hw.voltage' as const;\n\n/**\n * Voltage limit in Volts.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_VOLTAGE_LIMIT = 'hw.voltage.limit' as const;\n\n/**\n * Nominal (expected) voltage.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_VOLTAGE_NOMINAL = 'hw.voltage.nominal' as const;\n\n/**\n * Number of buffers in the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_BUFFER_COUNT = 'jvm.buffer.count' as const;\n\n/**\n * Measure of total memory capacity of buffers.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_BUFFER_MEMORY_LIMIT = 'jvm.buffer.memory.limit' as const;\n\n/**\n * Deprecated, use `jvm.buffer.memory.used` 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 `jvm.buffer.memory.used`.\n */\nexport const METRIC_JVM_BUFFER_MEMORY_USAGE = 'jvm.buffer.memory.usage' as const;\n\n/**\n * Measure of memory used by buffers.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_BUFFER_MEMORY_USED = 'jvm.buffer.memory.used' as const;\n\n/**\n * Number of open file descriptors as reported by the JVM.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_FILE_DESCRIPTOR_COUNT = 'jvm.file_descriptor.count' as const;\n\n/**\n * Measure of initial memory requested.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_MEMORY_INIT = 'jvm.memory.init' as const;\n\n/**\n * Average CPU load of the whole system for the last minute as reported by the JVM.\n *\n * @note The value range is [0,n], where n is the number of CPU cores - or a negative number if the value is not available. 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/java.management/java/lang/management/OperatingSystemMXBean.html#getSystemLoadAverage()).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_SYSTEM_CPU_LOAD_1M = 'jvm.system.cpu.load_1m' as const;\n\n/**\n * Recent CPU utilization for the whole system 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#getCpuLoad()).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_SYSTEM_CPU_UTILIZATION = 'jvm.system.cpu.utilization' as const;\n\n/**\n * Maximum CPU resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_LIMIT = 'k8s.container.cpu.limit' as const;\n\n/**\n * The ratio of container CPU usage to its CPU limit.\n *\n * @note The value range is [0.0,1.0]. A value of 1.0 means the container is using 100% of its CPU limit. If the CPU limit is not set, this metric **SHOULD NOT** be emitted for that container.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION = 'k8s.container.cpu.limit_utilization' as const;\n\n/**\n * CPU resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_REQUEST = 'k8s.container.cpu.request' as const;\n\n/**\n * The ratio of container CPU usage to its CPU request.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION = 'k8s.container.cpu.request_utilization' as const;\n\n/**\n * Maximum ephemeral storage resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_LIMIT = 'k8s.container.ephemeral_storage.limit' as const;\n\n/**\n * Ephemeral storage resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_REQUEST = 'k8s.container.ephemeral_storage.request' as const;\n\n/**\n * Maximum memory resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_MEMORY_LIMIT = 'k8s.container.memory.limit' as const;\n\n/**\n * Memory resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_MEMORY_REQUEST = 'k8s.container.memory.request' as const;\n\n/**\n * Indicates whether the container is currently marked as ready to accept traffic, based on its readiness probe (1 = ready, 0 = not ready).\n *\n * @note This metric **SHOULD** reflect the value of the `ready` field in the\n * [K8s ContainerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_READY = 'k8s.container.ready' as const;\n\n/**\n * Describes how many times the container has restarted (since the last counter reset).\n *\n * @note This value is pulled directly from the K8s API and the value can go indefinitely high and be reset to 0\n * at any time depending on how your kubelet is configured to prune dead containers.\n * It is best to not depend too much on the exact value but rather look at it as\n * either == 0, in which case you can conclude there were no restarts in the recent past, or > 0, in which case\n * you can conclude there were restarts in the recent past, and not try and analyze the value beyond that.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart.count' as const;\n\n/**\n * Describes the number of K8s containers that are currently in a state for a given reason.\n *\n * @note All possible container state reasons will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current state reason will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason' as const;\n\n/**\n * Describes the number of K8s containers that are currently in a given state.\n *\n * @note All possible container states will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current state will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state' as const;\n\n/**\n * Maximum storage resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STORAGE_LIMIT = 'k8s.container.storage.limit' as const;\n\n/**\n * Storage resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STORAGE_REQUEST = 'k8s.container.storage.request' as const;\n\n/**\n * Deprecated, use `k8s.cronjob.job.active` instead.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch).\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 `k8s.cronjob.job.active`.\n */\nexport const METRIC_K8S_CRONJOB_ACTIVE_JOBS = 'k8s.cronjob.active_jobs' as const;\n\n/**\n * The number of actively running jobs for a cronjob.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CRONJOB_JOB_ACTIVE = 'k8s.cronjob.job.active' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.current_scheduled` instead.\n *\n * @note This metric aligns with the `currentNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.current_scheduled`.\n */\nexport const METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES = 'k8s.daemonset.current_scheduled_nodes' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.desired_scheduled` instead.\n *\n * @note This metric aligns with the `desiredNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.desired_scheduled`.\n */\nexport const METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES = 'k8s.daemonset.desired_scheduled_nodes' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.misscheduled` instead.\n *\n * @note This metric aligns with the `numberMisscheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.misscheduled`.\n */\nexport const METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES = 'k8s.daemonset.misscheduled_nodes' as const;\n\n/**\n * Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod.\n *\n * @note This metric aligns with the `currentNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED = 'k8s.daemonset.node.current_scheduled' as const;\n\n/**\n * Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod).\n *\n * @note This metric aligns with the `desiredNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED = 'k8s.daemonset.node.desired_scheduled' as const;\n\n/**\n * Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod.\n *\n * @note This metric aligns with the `numberMisscheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED = 'k8s.daemonset.node.misscheduled' as const;\n\n/**\n * Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.\n *\n * @note This metric aligns with the `numberReady` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_READY = 'k8s.daemonset.node.ready' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.ready` instead.\n *\n * @note This metric aligns with the `numberReady` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.ready`.\n */\nexport const METRIC_K8S_DAEMONSET_READY_NODES = 'k8s.daemonset.ready_nodes' as const;\n\n/**\n * Deprecated, use `k8s.deployment.pod.available` instead.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps).\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 `k8s.deployment.pod.available`.\n */\nexport const METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS = 'k8s.deployment.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.deployment.pod.desired` instead.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps).\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 `k8s.deployment.pod.desired`.\n */\nexport const METRIC_K8S_DEPLOYMENT_DESIRED_PODS = 'k8s.deployment.desired_pods' as const;\n\n/**\n * Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DEPLOYMENT_POD_AVAILABLE = 'k8s.deployment.pod.available' as const;\n\n/**\n * Number of desired replica pods in this deployment.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DEPLOYMENT_POD_DESIRED = 'k8s.deployment.pod.desired' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.current` instead.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\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 `k8s.hpa.pod.current`.\n */\nexport const METRIC_K8S_HPA_CURRENT_PODS = 'k8s.hpa.current_pods' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.desired` instead.\n *\n * @note This metric aligns with the `desiredReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\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 `k8s.hpa.pod.desired`.\n */\nexport const METRIC_K8S_HPA_DESIRED_PODS = 'k8s.hpa.desired_pods' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.max` instead.\n *\n * @note This metric aligns with the `maxReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\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 `k8s.hpa.pod.max`.\n */\nexport const METRIC_K8S_HPA_MAX_PODS = 'k8s.hpa.max_pods' as const;\n\n/**\n * Target average utilization, in percentage, for CPU resource in HPA config.\n *\n * @note This metric aligns with the `averageUtilization` field of the\n * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling).\n * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis),\n * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_UTILIZATION = 'k8s.hpa.metric.target.cpu.average_utilization' as const;\n\n/**\n * Target average value for CPU resource in HPA config.\n *\n * @note This metric aligns with the `averageValue` field of the\n * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling).\n * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis),\n * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_VALUE = 'k8s.hpa.metric.target.cpu.average_value' as const;\n\n/**\n * Target value for CPU resource in HPA config.\n *\n * @note This metric aligns with the `value` field of the\n * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling).\n * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis),\n * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_METRIC_TARGET_CPU_VALUE = 'k8s.hpa.metric.target.cpu.value' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.min` instead.\n *\n * @note This metric aligns with the `minReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\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 `k8s.hpa.pod.min`.\n */\nexport const METRIC_K8S_HPA_MIN_PODS = 'k8s.hpa.min_pods' as const;\n\n/**\n * Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_CURRENT = 'k8s.hpa.pod.current' as const;\n\n/**\n * Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler.\n *\n * @note This metric aligns with the `desiredReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_DESIRED = 'k8s.hpa.pod.desired' as const;\n\n/**\n * The upper limit for the number of replica pods to which the autoscaler can scale up.\n *\n * @note This metric aligns with the `maxReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_MAX = 'k8s.hpa.pod.max' as const;\n\n/**\n * The lower limit for the number of replica pods to which the autoscaler can scale down.\n *\n * @note This metric aligns with the `minReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_MIN = 'k8s.hpa.pod.min' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.active` instead.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\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 `k8s.job.pod.active`.\n */\nexport const METRIC_K8S_JOB_ACTIVE_PODS = 'k8s.job.active_pods' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.desired_successful` instead.\n *\n * @note This metric aligns with the `completions` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch)..\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 `k8s.job.pod.desired_successful`.\n */\nexport const METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS = 'k8s.job.desired_successful_pods' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.failed` instead.\n *\n * @note This metric aligns with the `failed` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\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 `k8s.job.pod.failed`.\n */\nexport const METRIC_K8S_JOB_FAILED_PODS = 'k8s.job.failed_pods' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.max_parallel` instead.\n *\n * @note This metric aligns with the `parallelism` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).\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 `k8s.job.pod.max_parallel`.\n */\nexport const METRIC_K8S_JOB_MAX_PARALLEL_PODS = 'k8s.job.max_parallel_pods' as const;\n\n/**\n * The number of pending and actively running pods for a job.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_ACTIVE = 'k8s.job.pod.active' as const;\n\n/**\n * The desired number of successfully finished pods the job should be run with.\n *\n * @note This metric aligns with the `completions` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch)..\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL = 'k8s.job.pod.desired_successful' as const;\n\n/**\n * The number of pods which reached phase Failed for a job.\n *\n * @note This metric aligns with the `failed` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_FAILED = 'k8s.job.pod.failed' as const;\n\n/**\n * The max desired number of pods the job should run at any given time.\n *\n * @note This metric aligns with the `parallelism` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_MAX_PARALLEL = 'k8s.job.pod.max_parallel' as const;\n\n/**\n * The number of pods which reached phase Succeeded for a job.\n *\n * @note This metric aligns with the `succeeded` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_SUCCESSFUL = 'k8s.job.pod.successful' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.successful` instead.\n *\n * @note This metric aligns with the `succeeded` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\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 `k8s.job.pod.successful`.\n */\nexport const METRIC_K8S_JOB_SUCCESSFUL_PODS = 'k8s.job.successful_pods' as const;\n\n/**\n * Describes number of K8s namespaces that are currently in a given phase.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase' as const;\n\n/**\n * Deprecated, use `k8s.node.cpu.allocatable` 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 `k8s.node.cpu.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_CPU = 'k8s.node.allocatable.cpu' as const;\n\n/**\n * Deprecated, use `k8s.node.ephemeral_storage.allocatable` 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 `k8s.node.ephemeral_storage.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE = 'k8s.node.allocatable.ephemeral_storage' as const;\n\n/**\n * Deprecated, use `k8s.node.memory.allocatable` 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 `k8s.node.memory.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_MEMORY = 'k8s.node.allocatable.memory' as const;\n\n/**\n * Deprecated, use `k8s.node.pod.allocatable` 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 `k8s.node.pod.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_PODS = 'k8s.node.allocatable.pods' as const;\n\n/**\n * Describes the condition of a particular Node.\n *\n * @note All possible node condition pairs (type and status) will be reported at each time interval to avoid missing metrics. Condition pairs corresponding to the current conditions' statuses will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status' as const;\n\n/**\n * Amount of cpu allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CPU_ALLOCATABLE = 'k8s.node.cpu.allocatable' as const;\n\n/**\n * Total CPU time consumed.\n *\n * @note Total CPU time consumed by the specific Node on all available CPU cores\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CPU_TIME = 'k8s.node.cpu.time' as const;\n\n/**\n * Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs.\n *\n * @note CPU usage of the specific Node on all available CPU cores, averaged over the sample window\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CPU_USAGE = 'k8s.node.cpu.usage' as const;\n\n/**\n * Amount of ephemeral-storage allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE = 'k8s.node.ephemeral_storage.allocatable' as const;\n\n/**\n * Node filesystem available bytes.\n *\n * @note This metric is derived from the\n * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_FILESYSTEM_AVAILABLE = 'k8s.node.filesystem.available' as const;\n\n/**\n * Node filesystem capacity.\n *\n * @note This metric is derived from the\n * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_FILESYSTEM_CAPACITY = 'k8s.node.filesystem.capacity' as const;\n\n/**\n * Node filesystem usage.\n *\n * @note This may not equal capacity - available.\n *\n * This metric is derived from the\n * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_FILESYSTEM_USAGE = 'k8s.node.filesystem.usage' as const;\n\n/**\n * Amount of memory allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_ALLOCATABLE = 'k8s.node.memory.allocatable' as const;\n\n/**\n * Node memory available.\n *\n * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted.\n * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_AVAILABLE = 'k8s.node.memory.available' as const;\n\n/**\n * Node memory paging faults.\n *\n * @note Cumulative number of major/minor page faults.\n * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) fields of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_PAGING_FAULTS = 'k8s.node.memory.paging.faults' as const;\n\n/**\n * Node memory RSS.\n *\n * @note The amount of anonymous and swap cache memory (includes transparent hugepages).\n * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_RSS = 'k8s.node.memory.rss' as const;\n\n/**\n * Memory usage of the Node.\n *\n * @note Total memory usage of the Node\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_USAGE = 'k8s.node.memory.usage' as const;\n\n/**\n * Node memory working set.\n *\n * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes.\n * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_WORKING_SET = 'k8s.node.memory.working_set' as const;\n\n/**\n * Node network errors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_NETWORK_ERRORS = 'k8s.node.network.errors' as const;\n\n/**\n * Network bytes for the Node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_NETWORK_IO = 'k8s.node.network.io' as const;\n\n/**\n * Amount of pods allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_POD_ALLOCATABLE = 'k8s.node.pod.allocatable' as const;\n\n/**\n * The time the Node has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_UPTIME = 'k8s.node.uptime' as const;\n\n/**\n * Total CPU time consumed.\n *\n * @note Total CPU time consumed by the specific Pod on all available CPU cores\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_CPU_TIME = 'k8s.pod.cpu.time' as const;\n\n/**\n * Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs.\n *\n * @note CPU usage of the specific Pod on all available CPU cores, averaged over the sample window\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_CPU_USAGE = 'k8s.pod.cpu.usage' as const;\n\n/**\n * Pod filesystem available bytes.\n *\n * @note This metric is derived from the\n * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_FILESYSTEM_AVAILABLE = 'k8s.pod.filesystem.available' as const;\n\n/**\n * Pod filesystem capacity.\n *\n * @note This metric is derived from the\n * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_FILESYSTEM_CAPACITY = 'k8s.pod.filesystem.capacity' as const;\n\n/**\n * Pod filesystem usage.\n *\n * @note This may not equal capacity - available.\n *\n * This metric is derived from the\n * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_FILESYSTEM_USAGE = 'k8s.pod.filesystem.usage' as const;\n\n/**\n * Pod memory available.\n *\n * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted.\n * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_AVAILABLE = 'k8s.pod.memory.available' as const;\n\n/**\n * Pod memory paging faults.\n *\n * @note Cumulative number of major/minor page faults.\n * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_PAGING_FAULTS = 'k8s.pod.memory.paging.faults' as const;\n\n/**\n * Pod memory RSS.\n *\n * @note The amount of anonymous and swap cache memory (includes transparent hugepages).\n * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_RSS = 'k8s.pod.memory.rss' as const;\n\n/**\n * Memory usage of the Pod.\n *\n * @note Total memory usage of the Pod\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_USAGE = 'k8s.pod.memory.usage' as const;\n\n/**\n * Pod memory working set.\n *\n * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes.\n * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_WORKING_SET = 'k8s.pod.memory.working_set' as const;\n\n/**\n * Pod network errors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_NETWORK_ERRORS = 'k8s.pod.network.errors' as const;\n\n/**\n * Network bytes for the Pod.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_NETWORK_IO = 'k8s.pod.network.io' as const;\n\n/**\n * Describes number of K8s Pods that are currently in a given phase.\n *\n * @note All possible pod phases will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current phase will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase' as const;\n\n/**\n * Describes the number of K8s Pods that are currently in a state for a given reason.\n *\n * @note All possible pod status reasons will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current reason will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason' as const;\n\n/**\n * The time the Pod has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_UPTIME = 'k8s.pod.uptime' as const;\n\n/**\n * Pod volume storage space available.\n *\n * @note This metric is derived from the\n * [VolumeStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_AVAILABLE = 'k8s.pod.volume.available' as const;\n\n/**\n * Pod volume total capacity.\n *\n * @note This metric is derived from the\n * [VolumeStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_CAPACITY = 'k8s.pod.volume.capacity' as const;\n\n/**\n * The total inodes in the filesystem of the Pod's volume.\n *\n * @note This metric is derived from the\n * [VolumeStats.Inodes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_INODE_COUNT = 'k8s.pod.volume.inode.count' as const;\n\n/**\n * The free inodes in the filesystem of the Pod's volume.\n *\n * @note This metric is derived from the\n * [VolumeStats.InodesFree](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_INODE_FREE = 'k8s.pod.volume.inode.free' as const;\n\n/**\n * The inodes used by the filesystem of the Pod's volume.\n *\n * @note This metric is derived from the\n * [VolumeStats.InodesUsed](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * This may not be equal to `inodes - free` because filesystem may share inodes with other filesystems.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_INODE_USED = 'k8s.pod.volume.inode.used' as const;\n\n/**\n * Pod volume usage.\n *\n * @note This may not equal capacity - available.\n *\n * This metric is derived from the\n * [VolumeStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_USAGE = 'k8s.pod.volume.usage' as const;\n\n/**\n * Deprecated, use `k8s.replicaset.pod.available` instead.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps).\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 `k8s.replicaset.pod.available`.\n */\nexport const METRIC_K8S_REPLICASET_AVAILABLE_PODS = 'k8s.replicaset.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicaset.pod.desired` instead.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps).\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 `k8s.replicaset.pod.desired`.\n */\nexport const METRIC_K8S_REPLICASET_DESIRED_PODS = 'k8s.replicaset.desired_pods' as const;\n\n/**\n * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICASET_POD_AVAILABLE = 'k8s.replicaset.pod.available' as const;\n\n/**\n * Number of desired replica pods in this replicaset.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICASET_POD_DESIRED = 'k8s.replicaset.pod.desired' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.available` 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 `k8s.replicationcontroller.pod.available`.\n */\nexport const METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS = 'k8s.replication_controller.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.desired` 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 `k8s.replicationcontroller.pod.desired`.\n */\nexport const METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS = 'k8s.replication_controller.desired_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.available` 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 `k8s.replicationcontroller.pod.available`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS = 'k8s.replicationcontroller.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.desired` 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 `k8s.replicationcontroller.pod.desired`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS = 'k8s.replicationcontroller.desired_pods' as const;\n\n/**\n * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s ReplicationControllerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerstatus-v1-core)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE = 'k8s.replicationcontroller.pod.available' as const;\n\n/**\n * Number of desired replica pods in this replication controller.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s ReplicationControllerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerspec-v1-core)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED = 'k8s.replicationcontroller.pod.desired' as const;\n\n/**\n * The CPU limits in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_HARD = 'k8s.resourcequota.cpu.limit.hard' as const;\n\n/**\n * The CPU limits in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_USED = 'k8s.resourcequota.cpu.limit.used' as const;\n\n/**\n * The CPU requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_HARD = 'k8s.resourcequota.cpu.request.hard' as const;\n\n/**\n * The CPU requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_USED = 'k8s.resourcequota.cpu.request.used' as const;\n\n/**\n * The sum of local ephemeral storage limits in the namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'k8s.resourcequota.ephemeral_storage.limit.hard' as const;\n\n/**\n * The sum of local ephemeral storage limits in the namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'k8s.resourcequota.ephemeral_storage.limit.used' as const;\n\n/**\n * The sum of local ephemeral storage requests in the namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'k8s.resourcequota.ephemeral_storage.request.hard' as const;\n\n/**\n * The sum of local ephemeral storage requests in the namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'k8s.resourcequota.ephemeral_storage.request.used' as const;\n\n/**\n * The huge page requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'k8s.resourcequota.hugepage_count.request.hard' as const;\n\n/**\n * The huge page requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'k8s.resourcequota.hugepage_count.request.used' as const;\n\n/**\n * The memory limits in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_HARD = 'k8s.resourcequota.memory.limit.hard' as const;\n\n/**\n * The memory limits in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_USED = 'k8s.resourcequota.memory.limit.used' as const;\n\n/**\n * The memory requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_HARD = 'k8s.resourcequota.memory.request.hard' as const;\n\n/**\n * The memory requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_USED = 'k8s.resourcequota.memory.request.used' as const;\n\n/**\n * The object count limits in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_HARD = 'k8s.resourcequota.object_count.hard' as const;\n\n/**\n * The object count limits in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_USED = 'k8s.resourcequota.object_count.used' as const;\n\n/**\n * The total number of PersistentVolumeClaims that can exist in the namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'k8s.resourcequota.persistentvolumeclaim_count.hard' as const;\n\n/**\n * The total number of PersistentVolumeClaims that can exist in the namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'k8s.resourcequota.persistentvolumeclaim_count.used' as const;\n\n/**\n * The storage requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_HARD = 'k8s.resourcequota.storage.request.hard' as const;\n\n/**\n * The storage requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_USED = 'k8s.resourcequota.storage.request.used' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.current` instead.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\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 `k8s.statefulset.pod.current`.\n */\nexport const METRIC_K8S_STATEFULSET_CURRENT_PODS = 'k8s.statefulset.current_pods' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.desired` instead.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps).\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 `k8s.statefulset.pod.desired`.\n */\nexport const METRIC_K8S_STATEFULSET_DESIRED_PODS = 'k8s.statefulset.desired_pods' as const;\n\n/**\n * The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_CURRENT = 'k8s.statefulset.pod.current' as const;\n\n/**\n * Number of desired replica pods in this statefulset.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_DESIRED = 'k8s.statefulset.pod.desired' as const;\n\n/**\n * The number of replica pods created for this statefulset with a Ready Condition.\n *\n * @note This metric aligns with the `readyReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_READY = 'k8s.statefulset.pod.ready' as const;\n\n/**\n * Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision.\n *\n * @note This metric aligns with the `updatedReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_UPDATED = 'k8s.statefulset.pod.updated' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.ready` instead.\n *\n * @note This metric aligns with the `readyReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\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 `k8s.statefulset.pod.ready`.\n */\nexport const METRIC_K8S_STATEFULSET_READY_PODS = 'k8s.statefulset.ready_pods' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.updated` instead.\n *\n * @note This metric aligns with the `updatedReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\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 `k8s.statefulset.pod.updated`.\n */\nexport const METRIC_K8S_STATEFULSET_UPDATED_PODS = 'k8s.statefulset.updated_pods' as const;\n\n/**\n * The duration of the MCP request or notification as observed on the sender from the time it was sent until the response or ack is received.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_CLIENT_OPERATION_DURATION = 'mcp.client.operation.duration' as const;\n\n/**\n * The duration of the MCP session as observed on the MCP client.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_CLIENT_SESSION_DURATION = 'mcp.client.session.duration' as const;\n\n/**\n * MCP request or notification duration as observed on the receiver from the time it was received until the result or ack is sent.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_SERVER_OPERATION_DURATION = 'mcp.server.operation.duration' as const;\n\n/**\n * The duration of the MCP session as observed on the MCP server.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_SERVER_SESSION_DURATION = 'mcp.server.session.duration' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = 'messaging.client.consumed.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_OPERATION_DURATION = 'messaging.client.operation.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.sent.messages` 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 `messaging.client.sent.messages`.\n */\nexport const METRIC_MESSAGING_CLIENT_PUBLISHED_MESSAGES = 'messaging.client.published.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_SENT_MESSAGES = 'messaging.client.sent.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_PROCESS_DURATION = 'messaging.process.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.consumed.messages` 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 `messaging.client.consumed.messages`.\n */\nexport const METRIC_MESSAGING_PROCESS_MESSAGES = 'messaging.process.messages' as const;\n\n/**\n * Deprecated. Use `messaging.client.operation.duration` 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 `messaging.client.operation.duration`.\n */\nexport const METRIC_MESSAGING_PUBLISH_DURATION = 'messaging.publish.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.sent.messages` 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 `messaging.client.sent.messages`.\n */\nexport const METRIC_MESSAGING_PUBLISH_MESSAGES = 'messaging.publish.messages' as const;\n\n/**\n * Deprecated. Use `messaging.client.operation.duration` 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 `messaging.client.operation.duration`.\n */\nexport const METRIC_MESSAGING_RECEIVE_DURATION = 'messaging.receive.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.consumed.messages` 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 `messaging.client.consumed.messages`.\n */\nexport const METRIC_MESSAGING_RECEIVE_MESSAGES = 'messaging.receive.messages' as const;\n\n/**\n * Reports the count of kernel NFS client TCP segments and UDP datagrams handled.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.netudpcnt and svc_stat.nettcpcnt\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_NET_COUNT = 'nfs.client.net.count' as const;\n\n/**\n * Reports the count of kernel NFS client TCP connections accepted.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_NET_TCP_CONNECTION_ACCEPTED = 'nfs.client.net.tcp.connection.accepted' as const;\n\n/**\n * Reports the count of kernel NFSv4+ client operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_OPERATION_COUNT = 'nfs.client.operation.count' as const;\n\n/**\n * Reports the count of kernel NFS client procedures.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_PROCEDURE_COUNT = 'nfs.client.procedure.count' as const;\n\n/**\n * Reports the count of kernel NFS client RPC authentication refreshes.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcauthrefresh\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_RPC_AUTHREFRESH_COUNT = 'nfs.client.rpc.authrefresh.count' as const;\n\n/**\n * Reports the count of kernel NFS client RPCs sent, regardless of whether they're accepted/rejected by the server.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_RPC_COUNT = 'nfs.client.rpc.count' as const;\n\n/**\n * Reports the count of kernel NFS client RPC retransmits.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcretrans\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_RPC_RETRANSMIT_COUNT = 'nfs.client.rpc.retransmit.count' as const;\n\n/**\n * Reports the count of kernel NFS server stale file handles.\n *\n * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_FH_STALE counter in the nfsd_net struct\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_FH_STALE_COUNT = 'nfs.server.fh.stale.count' as const;\n\n/**\n * Reports the count of kernel NFS server bytes returned to receive and transmit (read and write) requests.\n *\n * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_IO_READ and NFSD_STATS_IO_WRITE counters in the nfsd_net struct\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_IO = 'nfs.server.io' as const;\n\n/**\n * Reports the count of kernel NFS server TCP segments and UDP datagrams handled.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpcnt and svc_stat.netudpcnt\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_NET_COUNT = 'nfs.server.net.count' as const;\n\n/**\n * Reports the count of kernel NFS server TCP connections accepted.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_NET_TCP_CONNECTION_ACCEPTED = 'nfs.server.net.tcp.connection.accepted' as const;\n\n/**\n * Reports the count of kernel NFSv4+ server operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_OPERATION_COUNT = 'nfs.server.operation.count' as const;\n\n/**\n * Reports the count of kernel NFS server procedures.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_PROCEDURE_COUNT = 'nfs.server.procedure.count' as const;\n\n/**\n * Reports the kernel NFS server reply cache request count by cache hit status.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_REPCACHE_REQUESTS = 'nfs.server.repcache.requests' as const;\n\n/**\n * Reports the count of kernel NFS server RPCs handled.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt, the count of good RPCs. This metric can have\n * an error.type of \"format\", \"auth\", or \"client\" for svc_stat.badfmt, svc_stat.badauth, and svc_stat.badclnt.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_RPC_COUNT = 'nfs.server.rpc.count' as const;\n\n/**\n * Reports the count of kernel NFS server available threads.\n *\n * @note Linux: this metric is taken from the Linux kernel nfsd_th_cnt variable\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_THREAD_COUNT = 'nfs.server.thread.count' as const;\n\n/**\n * Event loop maximum delay.\n *\n * @note Value can be retrieved from value `histogram.max` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_MAX = 'nodejs.eventloop.delay.max' as const;\n\n/**\n * Event loop mean delay.\n *\n * @note Value can be retrieved from value `histogram.mean` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_MEAN = 'nodejs.eventloop.delay.mean' as const;\n\n/**\n * Event loop minimum delay.\n *\n * @note Value can be retrieved from value `histogram.min` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_MIN = 'nodejs.eventloop.delay.min' as const;\n\n/**\n * Event loop 50 percentile delay.\n *\n * @note Value can be retrieved from value `histogram.percentile(50)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_P50 = 'nodejs.eventloop.delay.p50' as const;\n\n/**\n * Event loop 90 percentile delay.\n *\n * @note Value can be retrieved from value `histogram.percentile(90)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_P90 = 'nodejs.eventloop.delay.p90' as const;\n\n/**\n * Event loop 99 percentile delay.\n *\n * @note Value can be retrieved from value `histogram.percentile(99)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_P99 = 'nodejs.eventloop.delay.p99' as const;\n\n/**\n * Event loop standard deviation delay.\n *\n * @note Value can be retrieved from value `histogram.stddev` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_STDDEV = 'nodejs.eventloop.delay.stddev' as const;\n\n/**\n * Cumulative duration of time the event loop has been in each state.\n *\n * @note Value can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_TIME = 'nodejs.eventloop.time' as const;\n\n/**\n * Event loop utilization.\n *\n * @note The value range is [0.0, 1.0] and can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_UTILIZATION = 'nodejs.eventloop.utilization' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_HARD = 'openshift.clusterquota.cpu.limit.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_USED = 'openshift.clusterquota.cpu.limit.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_HARD = 'openshift.clusterquota.cpu.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_USED = 'openshift.clusterquota.cpu.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'openshift.clusterquota.ephemeral_storage.limit.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'openshift.clusterquota.ephemeral_storage.limit.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'openshift.clusterquota.ephemeral_storage.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'openshift.clusterquota.ephemeral_storage.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'openshift.clusterquota.hugepage_count.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'openshift.clusterquota.hugepage_count.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_HARD = 'openshift.clusterquota.memory.limit.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_USED = 'openshift.clusterquota.memory.limit.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_HARD = 'openshift.clusterquota.memory.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_USED = 'openshift.clusterquota.memory.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_HARD = 'openshift.clusterquota.object_count.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_USED = 'openshift.clusterquota.object_count.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'openshift.clusterquota.persistentvolumeclaim_count.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'openshift.clusterquota.persistentvolumeclaim_count.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_HARD = 'openshift.clusterquota.storage.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_USED = 'openshift.clusterquota.storage.request.used' as const;\n\n/**\n * The number of log records for which the export has finished, either successful or failed.\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n * For exporters with partial success semantics (e.g. OTLP with `rejected_log_records`), rejected log records **MUST** count as failed and only non-rejected log records count as success.\n * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_LOG_EXPORTED = 'otel.sdk.exporter.log.exported' as const;\n\n/**\n * The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_LOG_INFLIGHT = 'otel.sdk.exporter.log.inflight' as const;\n\n/**\n * The number of metric data points for which the export has finished, either successful or failed.\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n * For exporters with partial success semantics (e.g. OTLP with `rejected_data_points`), rejected data points **MUST** count as failed and only non-rejected data points count as success.\n * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_EXPORTED = 'otel.sdk.exporter.metric_data_point.exported' as const;\n\n/**\n * The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_INFLIGHT = 'otel.sdk.exporter.metric_data_point.inflight' as const;\n\n/**\n * The duration of exporting a batch of telemetry records.\n *\n * @note This metric defines successful operations using the full success definitions for [http](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1)\n * and [grpc](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success). Anything else is defined as an unsuccessful operation. For successful\n * operations, `error.type` **MUST NOT** be set. For unsuccessful export operations, `error.type` **MUST** contain a relevant failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_OPERATION_DURATION = 'otel.sdk.exporter.operation.duration' as const;\n\n/**\n * The number of spans for which the export has finished, either successful or failed.\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n * For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans **MUST** count as failed and only non-rejected spans count as success.\n * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED = 'otel.sdk.exporter.span.exported' as const;\n\n/**\n * Deprecated, use `otel.sdk.exporter.span.exported` 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 `otel.sdk.exporter.span.exported`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT = 'otel.sdk.exporter.span.exported.count' as const;\n\n/**\n * The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT = 'otel.sdk.exporter.span.inflight' as const;\n\n/**\n * Deprecated, use `otel.sdk.exporter.span.inflight` 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 `otel.sdk.exporter.span.inflight`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT = 'otel.sdk.exporter.span.inflight.count' as const;\n\n/**\n * The number of logs submitted to enabled SDK Loggers.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_LOG_CREATED = 'otel.sdk.log.created' as const;\n\n/**\n * The duration of the collect operation of the metric reader.\n *\n * @note For successful collections, `error.type` **MUST NOT** be set. For failed collections, `error.type` **SHOULD** contain the failure cause.\n * It can happen that metrics collection is successful for some MetricProducers, while others fail. In that case `error.type` **SHOULD** be set to any of the failure causes.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_METRIC_READER_COLLECTION_DURATION = 'otel.sdk.metric_reader.collection.duration' as const;\n\n/**\n * The number of log records for which the processing has finished, either successful or failed.\n *\n * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause.\n * For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter,\n * not when the corresponding export call has finished.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED = 'otel.sdk.processor.log.processed' as const;\n\n/**\n * The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold.\n *\n * @note Only applies to Log Record processors which use a queue, e.g. the SDK Batching Log Record Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY = 'otel.sdk.processor.log.queue.capacity' as const;\n\n/**\n * The number of log records in the queue of a given instance of an SDK log processor.\n *\n * @note Only applies to log record processors which use a queue, e.g. the SDK Batching Log Record Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE = 'otel.sdk.processor.log.queue.size' as const;\n\n/**\n * The number of spans for which the processing has finished, either successful or failed.\n *\n * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause.\n * For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED = 'otel.sdk.processor.span.processed' as const;\n\n/**\n * Deprecated, use `otel.sdk.processor.span.processed` 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 `otel.sdk.processor.span.processed`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT = 'otel.sdk.processor.span.processed.count' as const;\n\n/**\n * The maximum number of spans the queue of a given instance of an SDK span processor can hold.\n *\n * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY = 'otel.sdk.processor.span.queue.capacity' as const;\n\n/**\n * The number of spans in the queue of a given instance of an SDK span processor.\n *\n * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE = 'otel.sdk.processor.span.queue.size' as const;\n\n/**\n * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Obsoleted.\n */\nexport const METRIC_OTEL_SDK_SPAN_ENDED = 'otel.sdk.span.ended' as const;\n\n/**\n * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Obsoleted.\n */\nexport const METRIC_OTEL_SDK_SPAN_ENDED_COUNT = 'otel.sdk.span.ended.count' as const;\n\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 */\nexport const METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live' as const;\n\n/**\n * Deprecated, use `otel.sdk.span.live` 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 `otel.sdk.span.live`.\n */\nexport const METRIC_OTEL_SDK_SPAN_LIVE_COUNT = 'otel.sdk.span.live.count' as const;\n\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 */\nexport const METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started' as const;\n\n/**\n * Number of times the process has been context switched.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_CONTEXT_SWITCHES = 'process.context_switches' as const;\n\n/**\n * Total CPU seconds broken down by different states.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_CPU_TIME = 'process.cpu.time' as const;\n\n/**\n * Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_CPU_UTILIZATION = 'process.cpu.utilization' as const;\n\n/**\n * Disk bytes transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_DISK_IO = 'process.disk.io' as const;\n\n/**\n * The amount of physical memory in use.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_MEMORY_USAGE = 'process.memory.usage' as const;\n\n/**\n * The amount of committed virtual memory.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_MEMORY_VIRTUAL = 'process.memory.virtual' as const;\n\n/**\n * Network bytes transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_NETWORK_IO = 'process.network.io' as const;\n\n/**\n * Deprecated, use `process.unix.file_descriptor.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 `process.unix.file_descriptor.count`.\n */\nexport const METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT = 'process.open_file_descriptor.count' as const;\n\n/**\n * Number of page faults the process has made.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_PAGING_FAULTS = 'process.paging.faults' as const;\n\n/**\n * Process threads count.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_THREAD_COUNT = 'process.thread.count' as const;\n\n/**\n * Number of unix file descriptors in use by the process.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT = 'process.unix.file_descriptor.count' as const;\n\n/**\n * The time the process has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_UPTIME = 'process.uptime' as const;\n\n/**\n * Number of handles held by the process.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_WINDOWS_HANDLE_COUNT = 'process.windows.handle.count' as const;\n\n/**\n * Measures the duration of outbound remote procedure calls (RPC).\n *\n * @note When this metric is reported alongside an RPC client span, the metric value\n * **SHOULD** be the same as the RPC client span duration.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_CLIENT_CALL_DURATION = 'rpc.client.call.duration' as const;\n\n/**\n * Deprecated, use `rpc.client.call.duration` instead. Note: the unit also changed from `ms` to `s`.\n *\n * @note While streaming RPCs may record this metric as start-of-batch\n * to end-of-batch, it's hard to interpret in practice.\n *\n * **Streaming**: N/A.\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 `rpc.client.call.duration` with unit `s`.\n */\nexport const METRIC_RPC_CLIENT_DURATION = 'rpc.client.duration' as const;\n\n/**\n * Measures the size of RPC request messages (uncompressed).\n *\n * @note **Streaming**: Recorded per message in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_CLIENT_REQUEST_SIZE = 'rpc.client.request.size' as const;\n\n/**\n * Measures the number of messages received per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming**: This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_CLIENT_REQUESTS_PER_RPC = 'rpc.client.requests_per_rpc' as const;\n\n/**\n * Measures the size of RPC response messages (uncompressed).\n *\n * @note **Streaming**: Recorded per response in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_CLIENT_RESPONSE_SIZE = 'rpc.client.response.size' as const;\n\n/**\n * Measures the number of messages sent per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming**: This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_CLIENT_RESPONSES_PER_RPC = 'rpc.client.responses_per_rpc' as const;\n\n/**\n * Measures the duration of inbound remote procedure calls (RPC).\n *\n * @note When this metric is reported alongside an RPC server span, the metric value\n * **SHOULD** be the same as the RPC server span duration.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_SERVER_CALL_DURATION = 'rpc.server.call.duration' as const;\n\n/**\n * Deprecated, use `rpc.server.call.duration` instead. Note: the unit also changed from `ms` to `s`.\n *\n * @note While streaming RPCs may record this metric as start-of-batch\n * to end-of-batch, it's hard to interpret in practice.\n *\n * **Streaming**: N/A.\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 `rpc.server.call.duration` with unit `s`.\n */\nexport const METRIC_RPC_SERVER_DURATION = 'rpc.server.duration' as const;\n\n/**\n * Measures the size of RPC request messages (uncompressed).\n *\n * @note **Streaming**: Recorded per message in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_SERVER_REQUEST_SIZE = 'rpc.server.request.size' as const;\n\n/**\n * Measures the number of messages received per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming** : This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_SERVER_REQUESTS_PER_RPC = 'rpc.server.requests_per_rpc' as const;\n\n/**\n * Measures the size of RPC response messages (uncompressed).\n *\n * @note **Streaming**: Recorded per response in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_SERVER_RESPONSE_SIZE = 'rpc.server.response.size' as const;\n\n/**\n * Measures the number of messages sent per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming**: This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_SERVER_RESPONSES_PER_RPC = 'rpc.server.responses_per_rpc' as const;\n\n/**\n * Operating frequency of the logical CPU in Hertz.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_FREQUENCY = 'system.cpu.frequency' as const;\n\n/**\n * Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking.\n *\n * @note Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_LOGICAL_COUNT = 'system.cpu.logical.count' as const;\n\n/**\n * Reports the number of actual physical processor cores on the hardware.\n *\n * @note Calculated by multiplying the number of sockets by the number of cores per socket\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_PHYSICAL_COUNT = 'system.cpu.physical.count' as const;\n\n/**\n * Seconds each logical CPU spent on each mode.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_TIME = 'system.cpu.time' as const;\n\n/**\n * For each logical CPU, the utilization is calculated as the change in cumulative CPU time (cpu.time) over a measurement interval, divided by the elapsed time.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_UTILIZATION = 'system.cpu.utilization' as const;\n\n/**\n * Disk bytes transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_IO = 'system.disk.io' as const;\n\n/**\n * Time disk spent activated.\n *\n * @note The real elapsed time (\"wall clock\") used in the I/O path (time from operations running in parallel are not counted). Measured as:\n *\n * - Linux: Field 13 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats)\n * - Windows: The complement of\n * [\"Disk% Idle Time\"](https://learn.microsoft.com/archive/blogs/askcore/windows-performance-monitor-disk-counters-explained#windows-performance-monitor-disk-counters-explained)\n * performance counter: `uptime * (100 - \"Disk\\% Idle Time\") / 100`\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_IO_TIME = 'system.disk.io_time' as const;\n\n/**\n * The total storage capacity of the disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_LIMIT = 'system.disk.limit' as const;\n\n/**\n * The number of disk reads/writes merged into single physical disk access operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_MERGED = 'system.disk.merged' as const;\n\n/**\n * Sum of the time each operation took to complete.\n *\n * @note Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as:\n *\n * - Linux: Fields 7 & 11 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats)\n * - Windows: \"Avg. Disk sec/Read\" perf counter multiplied by \"Disk Reads/sec\" perf counter (similar for Writes)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_OPERATION_TIME = 'system.disk.operation_time' as const;\n\n/**\n * Disk operations count.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_OPERATIONS = 'system.disk.operations' as const;\n\n/**\n * The total storage capacity of the filesystem.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_FILESYSTEM_LIMIT = 'system.filesystem.limit' as const;\n\n/**\n * Reports a filesystem's space usage across different states.\n *\n * @note The sum of all `system.filesystem.usage` values over the different `system.filesystem.state` attributes\n * **SHOULD** equal the total storage capacity of the filesystem, that is `system.filesystem.limit`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_FILESYSTEM_USAGE = 'system.filesystem.usage' as const;\n\n/**\n * Fraction of filesystem bytes used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_FILESYSTEM_UTILIZATION = 'system.filesystem.utilization' as const;\n\n/**\n * The number of packets transferred.\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 `system.memory.linux.available`.\n */\nexport const METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE = 'system.linux.memory.available' as const;\n\n/**\n * The number of packets transferred.\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 `system.memory.linux.slab.usage`.\n */\nexport const METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE = 'system.linux.memory.slab.usage' as const;\n\n/**\n * Total virtual memory available in the system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_LIMIT = 'system.memory.limit' as const;\n\n/**\n * An estimate of how much memory is available for starting new applications, without causing swapping.\n *\n * @note This is an alternative to `system.memory.usage` metric with `state=free`.\n * Linux starting from 3.14 exports \"available\" memory. It takes \"free\" memory as a baseline, and then factors in kernel-specific values.\n * This is supposed to be more accurate than just \"free\" memory.\n * For reference, see the calculations [here](https://superuser.com/a/980821).\n * See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE = 'system.memory.linux.available' as const;\n\n/**\n * Reports the memory used by the Linux kernel for managing caches of frequently used objects.\n *\n * @note The sum over the `reclaimable` and `unreclaimable` state values in `memory.linux.slab.usage` **SHOULD** be equal to the total slab memory available on the system.\n * Note that the total slab memory is not constant and may vary over time.\n * See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE = 'system.memory.linux.slab.usage' as const;\n\n/**\n * Shared memory used (mostly by tmpfs).\n *\n * @note Equivalent of `shared` from [`free` command](https://man7.org/linux/man-pages/man1/free.1.html) or\n * `Shmem` from [`/proc/meminfo`](https://man7.org/linux/man-pages/man5/proc.5.html)\"\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_SHARED = 'system.memory.shared' as const;\n\n/**\n * Reports memory in use by state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_USAGE = 'system.memory.usage' as const;\n\n/**\n * Percentage of memory bytes in use.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_UTILIZATION = 'system.memory.utilization' as const;\n\n/**\n * The number of connections.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_CONNECTION_COUNT = 'system.network.connection.count' as const;\n\n/**\n * Deprecated, use `system.network.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 `system.network.connection.count`.\n */\nexport const METRIC_SYSTEM_NETWORK_CONNECTIONS = 'system.network.connections' as const;\n\n/**\n * Count of packets that are dropped or discarded even though there was no error.\n *\n * @note Measured as:\n *\n * - Linux: the `drop` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html))\n * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2)\n * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2)\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 `system.network.packet.dropped`.\n */\nexport const METRIC_SYSTEM_NETWORK_DROPPED = 'system.network.dropped' as const;\n\n/**\n * Count of network errors detected.\n *\n * @note Measured as:\n *\n * - Linux: the `errs` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)).\n * - Windows: [`InErrors`/`OutErrors`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2)\n * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_ERRORS = 'system.network.errors' as const;\n\n/**\n * The number of bytes transmitted and received.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_IO = 'system.network.io' as const;\n\n/**\n * The number of packets transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_PACKET_COUNT = 'system.network.packet.count' as const;\n\n/**\n * Count of packets that are dropped or discarded even though there was no error.\n *\n * @note Measured as:\n *\n * - Linux: the `drop` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html))\n * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2)\n * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_PACKET_DROPPED = 'system.network.packet.dropped' as const;\n\n/**\n * The number of packets transferred.\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 `system.network.packet.count`.\n */\nexport const METRIC_SYSTEM_NETWORK_PACKETS = 'system.network.packets' as const;\n\n/**\n * The number of page faults.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_FAULTS = 'system.paging.faults' as const;\n\n/**\n * The number of paging operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_OPERATIONS = 'system.paging.operations' as const;\n\n/**\n * Unix swap or windows pagefile usage.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_USAGE = 'system.paging.usage' as const;\n\n/**\n * Swap (unix) or pagefile (windows) utilization.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_UTILIZATION = 'system.paging.utilization' as const;\n\n/**\n * Total number of processes in each state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PROCESS_COUNT = 'system.process.count' as const;\n\n/**\n * Total number of processes created over uptime of the host.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PROCESS_CREATED = 'system.process.created' as const;\n\n/**\n * The time the system has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_UPTIME = 'system.uptime' as const;\n\n/**\n * Garbage collection duration.\n *\n * @note The values can be retrieved from [`perf_hooks.PerformanceObserver(...).observe({ entryTypes: ['gc'] })`](https://nodejs.org/api/perf_hooks.html#performanceobserverobserveoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_GC_DURATION = 'v8js.gc.duration' as const;\n\n/**\n * Deprecated, use `v8js.memory.heap.space.available_size` 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 `v8js.memory.heap.space.available_size`.\n */\nexport const METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.heap.space.available_size' as const;\n\n/**\n * Deprecated, use `v8js.memory.heap.space.physical_size` 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 `v8js.memory.heap.space.physical_size`.\n */\nexport const METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.heap.space.physical_size' as const;\n\n/**\n * Total heap memory size pre-allocated.\n *\n * @note The value can be retrieved from value `space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_LIMIT = 'v8js.memory.heap.limit' as const;\n\n/**\n * Heap space available size.\n *\n * @note Value can be retrieved from value `space_available_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.memory.heap.space.available_size' as const;\n\n/**\n * Committed size of a heap space.\n *\n * @note Value can be retrieved from value `physical_space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.memory.heap.space.physical_size' as const;\n\n/**\n * Heap Memory size allocated.\n *\n * @note The value can be retrieved from value `space_used_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_USED = 'v8js.memory.heap.used' as const;\n\n/**\n * The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_COUNT = 'vcs.change.count' as const;\n\n/**\n * The time duration a change (pull request/merge request/changelist) has been in a given state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_DURATION = 'vcs.change.duration' as const;\n\n/**\n * The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_TIME_TO_APPROVAL = 'vcs.change.time_to_approval' as const;\n\n/**\n * The amount of time since its creation it took a change (pull request/merge request/changelist) to get merged into the target(base) ref.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_TIME_TO_MERGE = 'vcs.change.time_to_merge' as const;\n\n/**\n * The number of unique contributors to a repository.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CONTRIBUTOR_COUNT = 'vcs.contributor.count' as const;\n\n/**\n * The number of refs of type branch or tag in a repository.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_COUNT = 'vcs.ref.count' as const;\n\n/**\n * The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute.\n *\n * @note This metric should be reported for each `vcs.line_change.type` value. For example if a ref added 3 lines and removed 2 lines,\n * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers).\n * If number of lines added/removed should be calculated from the start of time, then `vcs.ref.base.name` **SHOULD** be set to an empty string.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_LINES_DELTA = 'vcs.ref.lines_delta' as const;\n\n/**\n * The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute.\n *\n * @note This metric should be reported for each `vcs.revision_delta.direction` value. For example if branch `a` is 3 commits behind and 2 commits ahead of `trunk`,\n * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers) and `vcs.ref.base.name` is set to `trunk`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_REVISIONS_DELTA = 'vcs.ref.revisions_delta' as const;\n\n/**\n * Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_TIME = 'vcs.ref.time' as const;\n\n/**\n * The number of repositories in an organization.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REPOSITORY_COUNT = 'vcs.repository.count' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.d.ts new file mode 100644 index 0000000..d26f8ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.d.ts @@ -0,0 +1,7 @@ +export * from './stable_attributes'; +export * from './stable_metrics'; +export * from './stable_events'; +export * from './experimental_attributes'; +export * from './experimental_metrics'; +export * from './experimental_events'; +//# sourceMappingURL=index-incubating.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.js new file mode 100644 index 0000000..f57acd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.js @@ -0,0 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Incubating export also contains stable constants in order to maintain +// backward compatibility between minor version releases +export * from './stable_attributes'; +export * from './stable_metrics'; +export * from './stable_events'; +export * from './experimental_attributes'; +export * from './experimental_metrics'; +export * from './experimental_events'; +//# sourceMappingURL=index-incubating.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.js.map new file mode 100644 index 0000000..eab6ee3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-incubating.js","sourceRoot":"","sources":["../../src/index-incubating.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,wEAAwE;AACxE,wDAAwD;AACxD,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Incubating export also contains stable constants in order to maintain\n// backward compatibility between minor version releases\nexport * from './stable_attributes';\nexport * from './stable_metrics';\nexport * from './stable_events';\nexport * from './experimental_attributes';\nexport * from './experimental_metrics';\nexport * from './experimental_events';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.d.ts new file mode 100644 index 0000000..744217b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.d.ts @@ -0,0 +1,6 @@ +export * from './trace'; +export * from './resource'; +export * from './stable_attributes'; +export * from './stable_metrics'; +export * from './stable_events'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.js new file mode 100644 index 0000000..4a69822 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.js @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable no-restricted-syntax -- + * These re-exports are only of constants, only two-levels deep, and + * should not cause problems for tree-shakers. + */ +// Deprecated. These are kept around for compatibility purposes +export * from './trace'; +export * from './resource'; +// Use these instead +export * from './stable_attributes'; +export * from './stable_metrics'; +export * from './stable_events'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.js.map new file mode 100644 index 0000000..40be2c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AAEH,+DAA+D;AAC/D,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAE3B,oBAAoB;AACpB,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* 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\n// Deprecated. These are kept around for compatibility purposes\nexport * from './trace';\nexport * from './resource';\n\n// Use these instead\nexport * from './stable_attributes';\nexport * from './stable_metrics';\nexport * from './stable_events';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/internal/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/internal/utils.d.ts new file mode 100644 index 0000000..d471f2f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/internal/utils.d.ts @@ -0,0 +1,7 @@ +/** + * Creates a const map from the given values + * @param values - An array of values to be used as keys and values in the map. + * @returns A populated version of the map with the values and keys derived from the values. + */ +export declare function createConstMap(values: Array): T; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/internal/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/internal/utils.js new file mode 100644 index 0000000..4d9a656 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/internal/utils.js @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Creates a const map from the given values + * @param values - An array of values to be used as keys and values in the map. + * @returns A populated version of the map with the values and keys derived from the values. + */ +/*#__NO_SIDE_EFFECTS__*/ +export function createConstMap(values) { + // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any + let res = {}; + const len = values.length; + for (let lp = 0; lp < len; lp++) { + const val = values[lp]; + if (val) { + res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val; + } + } + return res; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/internal/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/internal/utils.js.map new file mode 100644 index 0000000..c8457b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/internal/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/internal/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AACH,wBAAwB;AACxB,MAAM,UAAU,cAAc,CAAI,MAAyB;IACzD,4EAA4E;IAC5E,IAAI,GAAG,GAAQ,EAAE,CAAC;IAClB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC5D;KACF;IAED,OAAO,GAAQ,CAAC;AAClB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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__*/\nexport function createConstMap(values: Array): T {\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n let res: any = {};\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\n return res as T;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/SemanticResourceAttributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/SemanticResourceAttributes.d.ts new file mode 100644 index 0000000..c3212f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/SemanticResourceAttributes.d.ts @@ -0,0 +1,1453 @@ +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_PROVIDER = "cloud.provider"; +/** + * The cloud account ID the resource is assigned to. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_ACCOUNT_ID = "cloud.account.id"; +/** + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_REGION = "cloud.region"; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = "cloud.availability_zone"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_PLATFORM = "cloud.platform"; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = "aws.ecs.container.arn"; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = "aws.ecs.cluster.arn"; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = "aws.ecs.launchtype"; +/** + * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_TASK_ARN = "aws.ecs.task.arn"; +/** + * The task definition family this task definition is a member of. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_TASK_FAMILY = "aws.ecs.task.family"; +/** + * The revision for this task definition. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_TASK_REVISION = "aws.ecs.task.revision"; +/** + * The ARN of an EKS cluster. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = "aws.eks.cluster.arn"; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_GROUP_NAMES = "aws.log.group.names"; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_GROUP_ARNS = "aws.log.group.arns"; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_STREAM_NAMES = "aws.log.stream.names"; +/** + * The ARN(s) of the AWS log stream(s). + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_STREAM_ARNS = "aws.log.stream.arns"; +/** + * Container name. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_NAME = "container.name"; +/** + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_ID = "container.id"; +/** + * The container runtime managing this container. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_RUNTIME = "container.runtime"; +/** + * Name of the image the container was built on. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_IMAGE_NAME = "container.image.name"; +/** + * Container image tag. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_IMAGE_TAG = "container.image.tag"; +/** + * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @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}). + */ +export declare const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = "deployment.environment"; +/** + * A unique identifier representing the device. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_DEVICE_ID = "device.id"; +/** + * The model identifier for the device. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = "device.model.identifier"; +/** + * The marketing name for the device model. + * + * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative. + * + * @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}). + */ +export declare const SEMRESATTRS_DEVICE_MODEL_NAME = "device.model.name"; +/** + * The name of the single function that this runtime instance executes. + * + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_FAAS_NAME = "faas.name"; +/** +* The unique ID of the single function that this runtime instance executes. +* +* Note: Depending on the cloud provider, use: + +* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). +Take care not to use the "invoked ARN" directly but replace any +[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 +different aliases. +* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) +* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id). + +On some providers, it may not be possible to determine the full ID at startup, +which is why this field cannot be made required. For example, on AWS the account ID +part of the ARN is not available without calling another AWS API +which may be deemed too slow for a short-running lambda function. +As an alternative, consider setting `faas.id` as a span attribute instead. +* +* @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}). +*/ +export declare const SEMRESATTRS_FAAS_ID = "faas.id"; +/** +* The immutable version of the function being executed. +* +* Note: Depending on the cloud provider and platform, use: + +* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + (an integer represented as a decimal string). +* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions) + (i.e., the function name plus the revision suffix). +* **Google Cloud Functions:** The value of the + [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). +* **Azure Functions:** Not applicable. Do not set this attribute. +* +* @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}). +*/ +export declare const SEMRESATTRS_FAAS_VERSION = "faas.version"; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * Note: * **AWS Lambda:** Use the (full) log stream name. + * + * @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}). + */ +export declare const SEMRESATTRS_FAAS_INSTANCE = "faas.instance"; +/** + * The amount of memory available to the serverless function in MiB. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_FAAS_MAX_MEMORY = "faas.max_memory"; +/** + * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_ID = "host.id"; +/** + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_NAME = "host.name"; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_TYPE = "host.type"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_ARCH = "host.arch"; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_IMAGE_NAME = "host.image.name"; +/** + * VM image ID. For Cloud, this value is from the provider. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_IMAGE_ID = "host.image.id"; +/** + * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes). + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_IMAGE_VERSION = "host.image.version"; +/** + * The name of the cluster. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CLUSTER_NAME = "k8s.cluster.name"; +/** + * The name of the Node. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_NODE_NAME = "k8s.node.name"; +/** + * The UID of the Node. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_NODE_UID = "k8s.node.uid"; +/** + * The name of the namespace that the pod is running in. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_NAMESPACE_NAME = "k8s.namespace.name"; +/** + * The UID of the Pod. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_POD_UID = "k8s.pod.uid"; +/** + * The name of the Pod. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_POD_NAME = "k8s.pod.name"; +/** + * The name of the Container in a Pod template. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CONTAINER_NAME = "k8s.container.name"; +/** + * The UID of the ReplicaSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_REPLICASET_UID = "k8s.replicaset.uid"; +/** + * The name of the ReplicaSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_REPLICASET_NAME = "k8s.replicaset.name"; +/** + * The UID of the Deployment. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DEPLOYMENT_UID = "k8s.deployment.uid"; +/** + * The name of the Deployment. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DEPLOYMENT_NAME = "k8s.deployment.name"; +/** + * The UID of the StatefulSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_STATEFULSET_UID = "k8s.statefulset.uid"; +/** + * The name of the StatefulSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_STATEFULSET_NAME = "k8s.statefulset.name"; +/** + * The UID of the DaemonSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DAEMONSET_UID = "k8s.daemonset.uid"; +/** + * The name of the DaemonSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DAEMONSET_NAME = "k8s.daemonset.name"; +/** + * The UID of the Job. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_JOB_UID = "k8s.job.uid"; +/** + * The name of the Job. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_JOB_NAME = "k8s.job.name"; +/** + * The UID of the CronJob. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CRONJOB_UID = "k8s.cronjob.uid"; +/** + * The name of the CronJob. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CRONJOB_NAME = "k8s.cronjob.name"; +/** + * The operating system type. + * + * @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}). + */ +export declare const SEMRESATTRS_OS_TYPE = "os.type"; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @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}). + */ +export declare const SEMRESATTRS_OS_DESCRIPTION = "os.description"; +/** + * Human readable operating system name. + * + * @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}). + */ +export declare const SEMRESATTRS_OS_NAME = "os.name"; +/** + * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes). + * + * @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}). + */ +export declare const SEMRESATTRS_OS_VERSION = "os.version"; +/** + * Process identifier (PID). + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_PID = "process.pid"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = "process.executable.name"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = "process.executable.path"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_COMMAND = "process.command"; +/** + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_COMMAND_LINE = "process.command_line"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_COMMAND_ARGS = "process.command_args"; +/** + * The username of the user that owns the process. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_OWNER = "process.owner"; +/** + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_RUNTIME_NAME = "process.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_RUNTIME_VERSION = "process.runtime.version"; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = "process.runtime.description"; +/** + * Logical name of the service. + * + * 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`. + * + * @deprecated Use ATTR_SERVICE_NAME. + */ +export declare const SEMRESATTRS_SERVICE_NAME = "service.name"; +/** + * A namespace for `service.name`. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_SERVICE_NAMESPACE = "service.namespace"; +/** + * The string ID of the service instance. + * + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_SERVICE_INSTANCE_ID = "service.instance.id"; +/** + * The version string of the service API or implementation. + * + * @deprecated Use ATTR_SERVICE_VERSION. + */ +export declare const SEMRESATTRS_SERVICE_VERSION = "service.version"; +/** + * The name of the telemetry SDK as defined above. + * + * @deprecated Use ATTR_TELEMETRY_SDK_NAME. + */ +export declare const SEMRESATTRS_TELEMETRY_SDK_NAME = "telemetry.sdk.name"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE. + */ +export declare const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = "telemetry.sdk.language"; +/** + * The version string of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_VERSION. + */ +export declare const SEMRESATTRS_TELEMETRY_SDK_VERSION = "telemetry.sdk.version"; +/** + * The version string of the auto instrumentation agent, if used. + * + * @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}). + */ +export declare const SEMRESATTRS_TELEMETRY_AUTO_VERSION = "telemetry.auto.version"; +/** + * The name of the web engine. + * + * @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}). + */ +export declare const SEMRESATTRS_WEBENGINE_NAME = "webengine.name"; +/** + * The version of the web engine. + * + * @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}). + */ +export declare const SEMRESATTRS_WEBENGINE_VERSION = "webengine.version"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @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}). + */ +export declare const SEMRESATTRS_WEBENGINE_DESCRIPTION = "webengine.description"; +/** + * Definition of available values for SemanticResourceAttributes + * This type is used for backward compatibility, you should use the individual exported + * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference + * to a constant map value will result in all strings being included into your bundle. + * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification. + */ +export type SemanticResourceAttributes = { + /** + * Name of the cloud provider. + */ + CLOUD_PROVIDER: 'cloud.provider'; + /** + * The cloud account ID the resource is assigned to. + */ + CLOUD_ACCOUNT_ID: 'cloud.account.id'; + /** + * 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). + */ + CLOUD_REGION: 'cloud.region'; + /** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + */ + CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone'; + /** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + */ + CLOUD_PLATFORM: 'cloud.platform'; + /** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + */ + AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn'; + /** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + */ + AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn'; + /** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + */ + AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype'; + /** + * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). + */ + AWS_ECS_TASK_ARN: 'aws.ecs.task.arn'; + /** + * The task definition family this task definition is a member of. + */ + AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family'; + /** + * The revision for this task definition. + */ + AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision'; + /** + * The ARN of an EKS cluster. + */ + AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn'; + /** + * The name(s) of the AWS log group(s) an application is writing to. + * + * 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. + */ + AWS_LOG_GROUP_NAMES: 'aws.log.group.names'; + /** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * 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). + */ + AWS_LOG_GROUP_ARNS: 'aws.log.group.arns'; + /** + * The name(s) of the AWS log stream(s) an application is writing to. + */ + AWS_LOG_STREAM_NAMES: 'aws.log.stream.names'; + /** + * The ARN(s) of the AWS log stream(s). + * + * 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. + */ + AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns'; + /** + * Container name. + */ + CONTAINER_NAME: 'container.name'; + /** + * 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. + */ + CONTAINER_ID: 'container.id'; + /** + * The container runtime managing this container. + */ + CONTAINER_RUNTIME: 'container.runtime'; + /** + * Name of the image the container was built on. + */ + CONTAINER_IMAGE_NAME: 'container.image.name'; + /** + * Container image tag. + */ + CONTAINER_IMAGE_TAG: 'container.image.tag'; + /** + * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + */ + DEPLOYMENT_ENVIRONMENT: 'deployment.environment'; + /** + * A unique identifier representing the device. + * + * 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. + */ + DEVICE_ID: 'device.id'; + /** + * The model identifier for the device. + * + * 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. + */ + DEVICE_MODEL_IDENTIFIER: 'device.model.identifier'; + /** + * The marketing name for the device model. + * + * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative. + */ + DEVICE_MODEL_NAME: 'device.model.name'; + /** + * The name of the single function that this runtime instance executes. + * + * 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). + */ + FAAS_NAME: 'faas.name'; + /** + * The unique ID of the single function that this runtime instance executes. + * + * Note: Depending on the cloud provider, use: + + * **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + Take care not to use the "invoked ARN" directly but replace any + [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 + different aliases. + * **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) + * **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id). + + On some providers, it may not be possible to determine the full ID at startup, + which is why this field cannot be made required. For example, on AWS the account ID + part of the ARN is not available without calling another AWS API + which may be deemed too slow for a short-running lambda function. + As an alternative, consider setting `faas.id` as a span attribute instead. + */ + FAAS_ID: 'faas.id'; + /** + * The immutable version of the function being executed. + * + * Note: Depending on the cloud provider and platform, use: + + * **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + (an integer represented as a decimal string). + * **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions) + (i.e., the function name plus the revision suffix). + * **Google Cloud Functions:** The value of the + [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). + * **Azure Functions:** Not applicable. Do not set this attribute. + */ + FAAS_VERSION: 'faas.version'; + /** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * Note: * **AWS Lambda:** Use the (full) log stream name. + */ + FAAS_INSTANCE: 'faas.instance'; + /** + * The amount of memory available to the serverless function in MiB. + * + * 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. + */ + FAAS_MAX_MEMORY: 'faas.max_memory'; + /** + * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. + */ + HOST_ID: 'host.id'; + /** + * 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. + */ + HOST_NAME: 'host.name'; + /** + * Type of host. For Cloud, this must be the machine type. + */ + HOST_TYPE: 'host.type'; + /** + * The CPU architecture the host system is running on. + */ + HOST_ARCH: 'host.arch'; + /** + * Name of the VM image or OS install the host was instantiated from. + */ + HOST_IMAGE_NAME: 'host.image.name'; + /** + * VM image ID. For Cloud, this value is from the provider. + */ + HOST_IMAGE_ID: 'host.image.id'; + /** + * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes). + */ + HOST_IMAGE_VERSION: 'host.image.version'; + /** + * The name of the cluster. + */ + K8S_CLUSTER_NAME: 'k8s.cluster.name'; + /** + * The name of the Node. + */ + K8S_NODE_NAME: 'k8s.node.name'; + /** + * The UID of the Node. + */ + K8S_NODE_UID: 'k8s.node.uid'; + /** + * The name of the namespace that the pod is running in. + */ + K8S_NAMESPACE_NAME: 'k8s.namespace.name'; + /** + * The UID of the Pod. + */ + K8S_POD_UID: 'k8s.pod.uid'; + /** + * The name of the Pod. + */ + K8S_POD_NAME: 'k8s.pod.name'; + /** + * The name of the Container in a Pod template. + */ + K8S_CONTAINER_NAME: 'k8s.container.name'; + /** + * The UID of the ReplicaSet. + */ + K8S_REPLICASET_UID: 'k8s.replicaset.uid'; + /** + * The name of the ReplicaSet. + */ + K8S_REPLICASET_NAME: 'k8s.replicaset.name'; + /** + * The UID of the Deployment. + */ + K8S_DEPLOYMENT_UID: 'k8s.deployment.uid'; + /** + * The name of the Deployment. + */ + K8S_DEPLOYMENT_NAME: 'k8s.deployment.name'; + /** + * The UID of the StatefulSet. + */ + K8S_STATEFULSET_UID: 'k8s.statefulset.uid'; + /** + * The name of the StatefulSet. + */ + K8S_STATEFULSET_NAME: 'k8s.statefulset.name'; + /** + * The UID of the DaemonSet. + */ + K8S_DAEMONSET_UID: 'k8s.daemonset.uid'; + /** + * The name of the DaemonSet. + */ + K8S_DAEMONSET_NAME: 'k8s.daemonset.name'; + /** + * The UID of the Job. + */ + K8S_JOB_UID: 'k8s.job.uid'; + /** + * The name of the Job. + */ + K8S_JOB_NAME: 'k8s.job.name'; + /** + * The UID of the CronJob. + */ + K8S_CRONJOB_UID: 'k8s.cronjob.uid'; + /** + * The name of the CronJob. + */ + K8S_CRONJOB_NAME: 'k8s.cronjob.name'; + /** + * The operating system type. + */ + OS_TYPE: 'os.type'; + /** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + */ + OS_DESCRIPTION: 'os.description'; + /** + * Human readable operating system name. + */ + OS_NAME: 'os.name'; + /** + * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes). + */ + OS_VERSION: 'os.version'; + /** + * Process identifier (PID). + */ + PROCESS_PID: 'process.pid'; + /** + * 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`. + */ + PROCESS_EXECUTABLE_NAME: 'process.executable.name'; + /** + * 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`. + */ + PROCESS_EXECUTABLE_PATH: 'process.executable.path'; + /** + * 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`. + */ + PROCESS_COMMAND: 'process.command'; + /** + * 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. + */ + PROCESS_COMMAND_LINE: 'process.command_line'; + /** + * 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`. + */ + PROCESS_COMMAND_ARGS: 'process.command_args'; + /** + * The username of the user that owns the process. + */ + PROCESS_OWNER: 'process.owner'; + /** + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. + */ + PROCESS_RUNTIME_NAME: 'process.runtime.name'; + /** + * The version of the runtime of this process, as returned by the runtime without modification. + */ + PROCESS_RUNTIME_VERSION: 'process.runtime.version'; + /** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + */ + PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description'; + /** + * Logical name of the service. + * + * 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`. + */ + SERVICE_NAME: 'service.name'; + /** + * A namespace for `service.name`. + * + * 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. + */ + SERVICE_NAMESPACE: 'service.namespace'; + /** + * The string ID of the service instance. + * + * 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). + */ + SERVICE_INSTANCE_ID: 'service.instance.id'; + /** + * The version string of the service API or implementation. + */ + SERVICE_VERSION: 'service.version'; + /** + * The name of the telemetry SDK as defined above. + */ + TELEMETRY_SDK_NAME: 'telemetry.sdk.name'; + /** + * The language of the telemetry SDK. + */ + TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language'; + /** + * The version string of the telemetry SDK. + */ + TELEMETRY_SDK_VERSION: 'telemetry.sdk.version'; + /** + * The version string of the auto instrumentation agent, if used. + */ + TELEMETRY_AUTO_VERSION: 'telemetry.auto.version'; + /** + * The name of the web engine. + */ + WEBENGINE_NAME: 'webengine.name'; + /** + * The version of the web engine. + */ + WEBENGINE_VERSION: 'webengine.version'; + /** + * Additional description of the web engine (e.g. detailed version and edition information). + */ + WEBENGINE_DESCRIPTION: 'webengine.description'; +}; +/** + * Create exported Value Map for SemanticResourceAttributes values + * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification + */ +export declare const SemanticResourceAttributes: SemanticResourceAttributes; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_AWS = "aws"; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_AZURE = "azure"; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_GCP = "gcp"; +/** + * Identifies the Values for CloudProviderValues enum definition + * + * Name of the cloud provider. + * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification. + */ +export type CloudProviderValues = { + /** Alibaba Cloud. */ + ALIBABA_CLOUD: 'alibaba_cloud'; + /** Amazon Web Services. */ + AWS: 'aws'; + /** Microsoft Azure. */ + AZURE: 'azure'; + /** Google Cloud Platform. */ + GCP: 'gcp'; +}; +/** + * The constant map of values for CloudProviderValues. + * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification. + */ +export declare const CloudProviderValues: CloudProviderValues; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = "alibaba_cloud_ecs"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = "alibaba_cloud_fc"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_EC2 = "aws_ec2"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_ECS = "aws_ecs"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_EKS = "aws_eks"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_LAMBDA = "aws_lambda"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_VM = "azure_vm"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = "azure_container_instances"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_AKS = "azure_aks"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = "azure_functions"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = "azure_app_service"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = "gcp_compute_engine"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = "gcp_cloud_run"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = "gcp_kubernetes_engine"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = "gcp_cloud_functions"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_APP_ENGINE = "gcp_app_engine"; +/** + * Identifies the Values for CloudPlatformValues enum definition + * + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification. + */ +export type CloudPlatformValues = { + /** Alibaba Cloud Elastic Compute Service. */ + ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs'; + /** Alibaba Cloud Function Compute. */ + ALIBABA_CLOUD_FC: 'alibaba_cloud_fc'; + /** AWS Elastic Compute Cloud. */ + AWS_EC2: 'aws_ec2'; + /** AWS Elastic Container Service. */ + AWS_ECS: 'aws_ecs'; + /** AWS Elastic Kubernetes Service. */ + AWS_EKS: 'aws_eks'; + /** AWS Lambda. */ + AWS_LAMBDA: 'aws_lambda'; + /** AWS Elastic Beanstalk. */ + AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk'; + /** Azure Virtual Machines. */ + AZURE_VM: 'azure_vm'; + /** Azure Container Instances. */ + AZURE_CONTAINER_INSTANCES: 'azure_container_instances'; + /** Azure Kubernetes Service. */ + AZURE_AKS: 'azure_aks'; + /** Azure Functions. */ + AZURE_FUNCTIONS: 'azure_functions'; + /** Azure App Service. */ + AZURE_APP_SERVICE: 'azure_app_service'; + /** Google Cloud Compute Engine (GCE). */ + GCP_COMPUTE_ENGINE: 'gcp_compute_engine'; + /** Google Cloud Run. */ + GCP_CLOUD_RUN: 'gcp_cloud_run'; + /** Google Cloud Kubernetes Engine (GKE). */ + GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine'; + /** Google Cloud Functions (GCF). */ + GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions'; + /** Google Cloud App Engine (GAE). */ + GCP_APP_ENGINE: 'gcp_app_engine'; +}; +/** + * The constant map of values for CloudPlatformValues. + * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification. + */ +export declare const CloudPlatformValues: CloudPlatformValues; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export declare const AWSECSLAUNCHTYPEVALUES_EC2 = "ec2"; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export declare const AWSECSLAUNCHTYPEVALUES_FARGATE = "fargate"; +/** + * Identifies the Values for AwsEcsLaunchtypeValues enum definition + * + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification. + */ +export type AwsEcsLaunchtypeValues = { + /** ec2. */ + EC2: 'ec2'; + /** fargate. */ + FARGATE: 'fargate'; +}; +/** + * The constant map of values for AwsEcsLaunchtypeValues. + * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification. + */ +export declare const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_AMD64 = "amd64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_ARM32 = "arm32"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_ARM64 = "arm64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_IA64 = "ia64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_PPC32 = "ppc32"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_PPC64 = "ppc64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_X86 = "x86"; +/** + * Identifies the Values for HostArchValues enum definition + * + * The CPU architecture the host system is running on. + * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification. + */ +export type HostArchValues = { + /** AMD64. */ + AMD64: 'amd64'; + /** ARM32. */ + ARM32: 'arm32'; + /** ARM64. */ + ARM64: 'arm64'; + /** Itanium. */ + IA64: 'ia64'; + /** 32-bit PowerPC. */ + PPC32: 'ppc32'; + /** 64-bit PowerPC. */ + PPC64: 'ppc64'; + /** 32-bit x86. */ + X86: 'x86'; +}; +/** + * The constant map of values for HostArchValues. + * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification. + */ +export declare const HostArchValues: HostArchValues; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_WINDOWS = "windows"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_LINUX = "linux"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_DARWIN = "darwin"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_FREEBSD = "freebsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_NETBSD = "netbsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_OPENBSD = "openbsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_DRAGONFLYBSD = "dragonflybsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_HPUX = "hpux"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_AIX = "aix"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_SOLARIS = "solaris"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_Z_OS = "z_os"; +/** + * Identifies the Values for OsTypeValues enum definition + * + * The operating system type. + * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification. + */ +export type OsTypeValues = { + /** Microsoft Windows. */ + WINDOWS: 'windows'; + /** Linux. */ + LINUX: 'linux'; + /** Apple Darwin. */ + DARWIN: 'darwin'; + /** FreeBSD. */ + FREEBSD: 'freebsd'; + /** NetBSD. */ + NETBSD: 'netbsd'; + /** OpenBSD. */ + OPENBSD: 'openbsd'; + /** DragonFly BSD. */ + DRAGONFLYBSD: 'dragonflybsd'; + /** HP-UX (Hewlett Packard Unix). */ + HPUX: 'hpux'; + /** AIX (Advanced Interactive eXecutive). */ + AIX: 'aix'; + /** Oracle Solaris. */ + SOLARIS: 'solaris'; + /** IBM z/OS. */ + Z_OS: 'z_os'; +}; +/** + * The constant map of values for OsTypeValues. + * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification. + */ +export declare const OsTypeValues: OsTypeValues; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_CPP = "cpp"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_DOTNET = "dotnet"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_ERLANG = "erlang"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_GO = "go"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_JAVA = "java"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_NODEJS = "nodejs"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_PHP = "php"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_PYTHON = "python"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_RUBY = "ruby"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_WEBJS = "webjs"; +/** + * Identifies the Values for TelemetrySdkLanguageValues enum definition + * + * The language of the telemetry SDK. + * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification. + */ +export type TelemetrySdkLanguageValues = { + /** cpp. */ + CPP: 'cpp'; + /** dotnet. */ + DOTNET: 'dotnet'; + /** erlang. */ + ERLANG: 'erlang'; + /** go. */ + GO: 'go'; + /** java. */ + JAVA: 'java'; + /** nodejs. */ + NODEJS: 'nodejs'; + /** php. */ + PHP: 'php'; + /** python. */ + PYTHON: 'python'; + /** ruby. */ + RUBY: 'ruby'; + /** webjs. */ + WEBJS: 'webjs'; +}; +/** + * The constant map of values for TelemetrySdkLanguageValues. + * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification. + */ +export declare const TelemetrySdkLanguageValues: TelemetrySdkLanguageValues; +//# sourceMappingURL=SemanticResourceAttributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/SemanticResourceAttributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/SemanticResourceAttributes.js new file mode 100644 index 0000000..d5c8208 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/SemanticResourceAttributes.js @@ -0,0 +1,1261 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createConstMap } from '../internal/utils'; +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------------------------- +// Constant values for SemanticResourceAttributes +//---------------------------------------------------------------------------------------------------------- +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_CLOUD_PROVIDER = 'cloud.provider'; +const TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id'; +const TMP_CLOUD_REGION = 'cloud.region'; +const TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone'; +const TMP_CLOUD_PLATFORM = 'cloud.platform'; +const TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn'; +const TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn'; +const TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype'; +const TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn'; +const TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family'; +const TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision'; +const TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn'; +const TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names'; +const TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns'; +const TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names'; +const TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns'; +const TMP_CONTAINER_NAME = 'container.name'; +const TMP_CONTAINER_ID = 'container.id'; +const TMP_CONTAINER_RUNTIME = 'container.runtime'; +const TMP_CONTAINER_IMAGE_NAME = 'container.image.name'; +const TMP_CONTAINER_IMAGE_TAG = 'container.image.tag'; +const TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment'; +const TMP_DEVICE_ID = 'device.id'; +const TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier'; +const TMP_DEVICE_MODEL_NAME = 'device.model.name'; +const TMP_FAAS_NAME = 'faas.name'; +const TMP_FAAS_ID = 'faas.id'; +const TMP_FAAS_VERSION = 'faas.version'; +const TMP_FAAS_INSTANCE = 'faas.instance'; +const TMP_FAAS_MAX_MEMORY = 'faas.max_memory'; +const TMP_HOST_ID = 'host.id'; +const TMP_HOST_NAME = 'host.name'; +const TMP_HOST_TYPE = 'host.type'; +const TMP_HOST_ARCH = 'host.arch'; +const TMP_HOST_IMAGE_NAME = 'host.image.name'; +const TMP_HOST_IMAGE_ID = 'host.image.id'; +const TMP_HOST_IMAGE_VERSION = 'host.image.version'; +const TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name'; +const TMP_K8S_NODE_NAME = 'k8s.node.name'; +const TMP_K8S_NODE_UID = 'k8s.node.uid'; +const TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name'; +const TMP_K8S_POD_UID = 'k8s.pod.uid'; +const TMP_K8S_POD_NAME = 'k8s.pod.name'; +const TMP_K8S_CONTAINER_NAME = 'k8s.container.name'; +const TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid'; +const TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name'; +const TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid'; +const TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name'; +const TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid'; +const TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name'; +const TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid'; +const TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name'; +const TMP_K8S_JOB_UID = 'k8s.job.uid'; +const TMP_K8S_JOB_NAME = 'k8s.job.name'; +const TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid'; +const TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name'; +const TMP_OS_TYPE = 'os.type'; +const TMP_OS_DESCRIPTION = 'os.description'; +const TMP_OS_NAME = 'os.name'; +const TMP_OS_VERSION = 'os.version'; +const TMP_PROCESS_PID = 'process.pid'; +const TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name'; +const TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path'; +const TMP_PROCESS_COMMAND = 'process.command'; +const TMP_PROCESS_COMMAND_LINE = 'process.command_line'; +const TMP_PROCESS_COMMAND_ARGS = 'process.command_args'; +const TMP_PROCESS_OWNER = 'process.owner'; +const TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +const TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version'; +const TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'; +const TMP_SERVICE_NAME = 'service.name'; +const TMP_SERVICE_NAMESPACE = 'service.namespace'; +const TMP_SERVICE_INSTANCE_ID = 'service.instance.id'; +const TMP_SERVICE_VERSION = 'service.version'; +const TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name'; +const TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language'; +const TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version'; +const TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version'; +const TMP_WEBENGINE_NAME = 'webengine.name'; +const TMP_WEBENGINE_VERSION = 'webengine.version'; +const TMP_WEBENGINE_DESCRIPTION = 'webengine.description'; +/** + * Name of the cloud provider. + * + * @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}). + */ +export const SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER; +/** + * The cloud account ID the resource is assigned to. + * + * @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}). + */ +export const SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID; +/** + * 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). + * + * @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}). + */ +export const SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @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}). + */ +export const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE; +/** + * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN; +/** + * The task definition family this task definition is a member of. + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY; +/** + * The revision for this task definition. + * + * @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}). + */ +export const SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION; +/** + * The ARN of an EKS cluster. + * + * @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}). + */ +export const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * 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). + * + * @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}). + */ +export const SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @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}). + */ +export const SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES; +/** + * The ARN(s) of the AWS log stream(s). + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS; +/** + * Container name. + * + * @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}). + */ +export const SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME; +/** + * 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. + * + * @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}). + */ +export const SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID; +/** + * The container runtime managing this container. + * + * @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}). + */ +export const SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME; +/** + * Name of the image the container was built on. + * + * @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}). + */ +export const SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME; +/** + * Container image tag. + * + * @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}). + */ +export const SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG; +/** + * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @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}). + */ +export const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT; +/** + * A unique identifier representing the device. + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID; +/** + * The model identifier for the device. + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER; +/** + * The marketing name for the device model. + * + * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative. + * + * @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}). + */ +export const SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME; +/** + * The name of the single function that this runtime instance executes. + * + * 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). + * + * @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}). + */ +export const SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME; +/** +* The unique ID of the single function that this runtime instance executes. +* +* Note: Depending on the cloud provider, use: + +* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). +Take care not to use the "invoked ARN" directly but replace any +[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 +different aliases. +* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) +* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id). + +On some providers, it may not be possible to determine the full ID at startup, +which is why this field cannot be made required. For example, on AWS the account ID +part of the ARN is not available without calling another AWS API +which may be deemed too slow for a short-running lambda function. +As an alternative, consider setting `faas.id` as a span attribute instead. +* +* @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}). +*/ +export const SEMRESATTRS_FAAS_ID = TMP_FAAS_ID; +/** +* The immutable version of the function being executed. +* +* Note: Depending on the cloud provider and platform, use: + +* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + (an integer represented as a decimal string). +* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions) + (i.e., the function name plus the revision suffix). +* **Google Cloud Functions:** The value of the + [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). +* **Azure Functions:** Not applicable. Do not set this attribute. +* +* @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}). +*/ +export const SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * Note: * **AWS Lambda:** Use the (full) log stream name. + * + * @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}). + */ +export const SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE; +/** + * The amount of memory available to the serverless function in MiB. + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY; +/** + * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. + * + * @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}). + */ +export const SEMRESATTRS_HOST_ID = TMP_HOST_ID; +/** + * 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. + * + * @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}). + */ +export const SEMRESATTRS_HOST_NAME = TMP_HOST_NAME; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @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}). + */ +export const SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @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}). + */ +export const SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME; +/** + * VM image ID. For Cloud, this value is from the provider. + * + * @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}). + */ +export const SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID; +/** + * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes). + * + * @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}). + */ +export const SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION; +/** + * The name of the cluster. + * + * @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}). + */ +export const SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME; +/** + * The name of the Node. + * + * @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}). + */ +export const SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME; +/** + * The UID of the Node. + * + * @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}). + */ +export const SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID; +/** + * The name of the namespace that the pod is running in. + * + * @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}). + */ +export const SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME; +/** + * The UID of the Pod. + * + * @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}). + */ +export const SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID; +/** + * The name of the Pod. + * + * @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}). + */ +export const SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME; +/** + * The name of the Container in a Pod template. + * + * @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}). + */ +export const SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME; +/** + * The UID of the ReplicaSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID; +/** + * The name of the ReplicaSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME; +/** + * The UID of the Deployment. + * + * @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}). + */ +export const SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID; +/** + * The name of the Deployment. + * + * @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}). + */ +export const SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME; +/** + * The UID of the StatefulSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID; +/** + * The name of the StatefulSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME; +/** + * The UID of the DaemonSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID; +/** + * The name of the DaemonSet. + * + * @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}). + */ +export const SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME; +/** + * The UID of the Job. + * + * @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}). + */ +export const SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID; +/** + * The name of the Job. + * + * @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}). + */ +export const SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME; +/** + * The UID of the CronJob. + * + * @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}). + */ +export const SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID; +/** + * The name of the CronJob. + * + * @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}). + */ +export const SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME; +/** + * The operating system type. + * + * @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}). + */ +export const SEMRESATTRS_OS_TYPE = TMP_OS_TYPE; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @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}). + */ +export const SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION; +/** + * Human readable operating system name. + * + * @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}). + */ +export const SEMRESATTRS_OS_NAME = TMP_OS_NAME; +/** + * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes). + * + * @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}). + */ +export const SEMRESATTRS_OS_VERSION = TMP_OS_VERSION; +/** + * Process identifier (PID). + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID; +/** + * 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`. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME; +/** + * 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`. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH; +/** + * 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`. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND; +/** + * 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. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE; +/** + * 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`. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS; +/** + * The username of the user that owns the process. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER; +/** + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @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}). + */ +export const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = TMP_PROCESS_RUNTIME_DESCRIPTION; +/** + * Logical name of the service. + * + * 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`. + * + * @deprecated Use ATTR_SERVICE_NAME. + */ +export const SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME; +/** + * A namespace for `service.name`. + * + * 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. + * + * @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}). + */ +export const SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE; +/** + * The string ID of the service instance. + * + * 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). + * + * @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}). + */ +export const SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID; +/** + * The version string of the service API or implementation. + * + * @deprecated Use ATTR_SERVICE_VERSION. + */ +export const SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION; +/** + * The name of the telemetry SDK as defined above. + * + * @deprecated Use ATTR_TELEMETRY_SDK_NAME. + */ +export const SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME; +/** + * The language of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE. + */ +export const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE; +/** + * The version string of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_VERSION. + */ +export const SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION; +/** + * The version string of the auto instrumentation agent, if used. + * + * @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}). + */ +export const SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION; +/** + * The name of the web engine. + * + * @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}). + */ +export const SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME; +/** + * The version of the web engine. + * + * @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}). + */ +export const SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @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}). + */ +export const SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION; +/** + * Create exported Value Map for SemanticResourceAttributes values + * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification + */ +export const SemanticResourceAttributes = +/*#__PURE__*/ createConstMap([ + TMP_CLOUD_PROVIDER, + TMP_CLOUD_ACCOUNT_ID, + TMP_CLOUD_REGION, + TMP_CLOUD_AVAILABILITY_ZONE, + TMP_CLOUD_PLATFORM, + TMP_AWS_ECS_CONTAINER_ARN, + TMP_AWS_ECS_CLUSTER_ARN, + TMP_AWS_ECS_LAUNCHTYPE, + TMP_AWS_ECS_TASK_ARN, + TMP_AWS_ECS_TASK_FAMILY, + TMP_AWS_ECS_TASK_REVISION, + TMP_AWS_EKS_CLUSTER_ARN, + TMP_AWS_LOG_GROUP_NAMES, + TMP_AWS_LOG_GROUP_ARNS, + TMP_AWS_LOG_STREAM_NAMES, + TMP_AWS_LOG_STREAM_ARNS, + TMP_CONTAINER_NAME, + TMP_CONTAINER_ID, + TMP_CONTAINER_RUNTIME, + TMP_CONTAINER_IMAGE_NAME, + TMP_CONTAINER_IMAGE_TAG, + TMP_DEPLOYMENT_ENVIRONMENT, + TMP_DEVICE_ID, + TMP_DEVICE_MODEL_IDENTIFIER, + TMP_DEVICE_MODEL_NAME, + TMP_FAAS_NAME, + TMP_FAAS_ID, + TMP_FAAS_VERSION, + TMP_FAAS_INSTANCE, + TMP_FAAS_MAX_MEMORY, + TMP_HOST_ID, + TMP_HOST_NAME, + TMP_HOST_TYPE, + TMP_HOST_ARCH, + TMP_HOST_IMAGE_NAME, + TMP_HOST_IMAGE_ID, + TMP_HOST_IMAGE_VERSION, + TMP_K8S_CLUSTER_NAME, + TMP_K8S_NODE_NAME, + TMP_K8S_NODE_UID, + TMP_K8S_NAMESPACE_NAME, + TMP_K8S_POD_UID, + TMP_K8S_POD_NAME, + TMP_K8S_CONTAINER_NAME, + TMP_K8S_REPLICASET_UID, + TMP_K8S_REPLICASET_NAME, + TMP_K8S_DEPLOYMENT_UID, + TMP_K8S_DEPLOYMENT_NAME, + TMP_K8S_STATEFULSET_UID, + TMP_K8S_STATEFULSET_NAME, + TMP_K8S_DAEMONSET_UID, + TMP_K8S_DAEMONSET_NAME, + TMP_K8S_JOB_UID, + TMP_K8S_JOB_NAME, + TMP_K8S_CRONJOB_UID, + TMP_K8S_CRONJOB_NAME, + TMP_OS_TYPE, + TMP_OS_DESCRIPTION, + TMP_OS_NAME, + TMP_OS_VERSION, + TMP_PROCESS_PID, + TMP_PROCESS_EXECUTABLE_NAME, + TMP_PROCESS_EXECUTABLE_PATH, + TMP_PROCESS_COMMAND, + TMP_PROCESS_COMMAND_LINE, + TMP_PROCESS_COMMAND_ARGS, + TMP_PROCESS_OWNER, + TMP_PROCESS_RUNTIME_NAME, + TMP_PROCESS_RUNTIME_VERSION, + TMP_PROCESS_RUNTIME_DESCRIPTION, + TMP_SERVICE_NAME, + TMP_SERVICE_NAMESPACE, + TMP_SERVICE_INSTANCE_ID, + TMP_SERVICE_VERSION, + TMP_TELEMETRY_SDK_NAME, + TMP_TELEMETRY_SDK_LANGUAGE, + TMP_TELEMETRY_SDK_VERSION, + TMP_TELEMETRY_AUTO_VERSION, + TMP_WEBENGINE_NAME, + TMP_WEBENGINE_VERSION, + TMP_WEBENGINE_DESCRIPTION, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for CloudProviderValues enum definition + * + * Name of the cloud provider. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud'; +const TMP_CLOUDPROVIDERVALUES_AWS = 'aws'; +const TMP_CLOUDPROVIDERVALUES_AZURE = 'azure'; +const TMP_CLOUDPROVIDERVALUES_GCP = 'gcp'; +/** + * Name of the cloud provider. + * + * @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}). + */ +export const CLOUDPROVIDERVALUES_ALIBABA_CLOUD = TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD; +/** + * Name of the cloud provider. + * + * @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}). + */ +export const CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS; +/** + * Name of the cloud provider. + * + * @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}). + */ +export const CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE; +/** + * Name of the cloud provider. + * + * @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}). + */ +export const CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP; +/** + * The constant map of values for CloudProviderValues. + * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification. + */ +export const CloudProviderValues = +/*#__PURE__*/ createConstMap([ + TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD, + TMP_CLOUDPROVIDERVALUES_AWS, + TMP_CLOUDPROVIDERVALUES_AZURE, + TMP_CLOUDPROVIDERVALUES_GCP, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for CloudPlatformValues enum definition + * + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs'; +const TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc'; +const TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2'; +const TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs'; +const TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks'; +const TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda'; +const TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk'; +const TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm'; +const TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = 'azure_container_instances'; +const TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks'; +const TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions'; +const TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service'; +const TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine'; +const TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run'; +const TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine'; +const TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions'; +const TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine'; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AWS_LAMBDA = TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export const CLOUDPLATFORMVALUES_GCP_APP_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE; +/** + * The constant map of values for CloudPlatformValues. + * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification. + */ +export const CloudPlatformValues = +/*#__PURE__*/ createConstMap([ + TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS, + TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC, + TMP_CLOUDPLATFORMVALUES_AWS_EC2, + TMP_CLOUDPLATFORMVALUES_AWS_ECS, + TMP_CLOUDPLATFORMVALUES_AWS_EKS, + TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA, + TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK, + TMP_CLOUDPLATFORMVALUES_AZURE_VM, + TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES, + TMP_CLOUDPLATFORMVALUES_AZURE_AKS, + TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS, + TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE, + TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE, + TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN, + TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE, + TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS, + TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for AwsEcsLaunchtypeValues enum definition + * + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2'; +const TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate'; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export const AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export const AWSECSLAUNCHTYPEVALUES_FARGATE = TMP_AWSECSLAUNCHTYPEVALUES_FARGATE; +/** + * The constant map of values for AwsEcsLaunchtypeValues. + * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification. + */ +export const AwsEcsLaunchtypeValues = +/*#__PURE__*/ createConstMap([ + TMP_AWSECSLAUNCHTYPEVALUES_EC2, + TMP_AWSECSLAUNCHTYPEVALUES_FARGATE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for HostArchValues enum definition + * + * The CPU architecture the host system is running on. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_HOSTARCHVALUES_AMD64 = 'amd64'; +const TMP_HOSTARCHVALUES_ARM32 = 'arm32'; +const TMP_HOSTARCHVALUES_ARM64 = 'arm64'; +const TMP_HOSTARCHVALUES_IA64 = 'ia64'; +const TMP_HOSTARCHVALUES_PPC32 = 'ppc32'; +const TMP_HOSTARCHVALUES_PPC64 = 'ppc64'; +const TMP_HOSTARCHVALUES_X86 = 'x86'; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export const HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86; +/** + * The constant map of values for HostArchValues. + * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification. + */ +export const HostArchValues = +/*#__PURE__*/ createConstMap([ + TMP_HOSTARCHVALUES_AMD64, + TMP_HOSTARCHVALUES_ARM32, + TMP_HOSTARCHVALUES_ARM64, + TMP_HOSTARCHVALUES_IA64, + TMP_HOSTARCHVALUES_PPC32, + TMP_HOSTARCHVALUES_PPC64, + TMP_HOSTARCHVALUES_X86, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for OsTypeValues enum definition + * + * The operating system type. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_OSTYPEVALUES_WINDOWS = 'windows'; +const TMP_OSTYPEVALUES_LINUX = 'linux'; +const TMP_OSTYPEVALUES_DARWIN = 'darwin'; +const TMP_OSTYPEVALUES_FREEBSD = 'freebsd'; +const TMP_OSTYPEVALUES_NETBSD = 'netbsd'; +const TMP_OSTYPEVALUES_OPENBSD = 'openbsd'; +const TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd'; +const TMP_OSTYPEVALUES_HPUX = 'hpux'; +const TMP_OSTYPEVALUES_AIX = 'aix'; +const TMP_OSTYPEVALUES_SOLARIS = 'solaris'; +const TMP_OSTYPEVALUES_Z_OS = 'z_os'; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS; +/** + * The operating system type. + * + * @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}). + */ +export const OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS; +/** + * The constant map of values for OsTypeValues. + * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification. + */ +export const OsTypeValues = +/*#__PURE__*/ createConstMap([ + TMP_OSTYPEVALUES_WINDOWS, + TMP_OSTYPEVALUES_LINUX, + TMP_OSTYPEVALUES_DARWIN, + TMP_OSTYPEVALUES_FREEBSD, + TMP_OSTYPEVALUES_NETBSD, + TMP_OSTYPEVALUES_OPENBSD, + TMP_OSTYPEVALUES_DRAGONFLYBSD, + TMP_OSTYPEVALUES_HPUX, + TMP_OSTYPEVALUES_AIX, + TMP_OSTYPEVALUES_SOLARIS, + TMP_OSTYPEVALUES_Z_OS, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for TelemetrySdkLanguageValues enum definition + * + * The language of the telemetry SDK. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs'; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP. + */ +export const TELEMETRYSDKLANGUAGEVALUES_CPP = TMP_TELEMETRYSDKLANGUAGEVALUES_CPP; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET. + */ +export const TELEMETRYSDKLANGUAGEVALUES_DOTNET = TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG. + */ +export const TELEMETRYSDKLANGUAGEVALUES_ERLANG = TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO. + */ +export const TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA. + */ +export const TELEMETRYSDKLANGUAGEVALUES_JAVA = TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS. + */ +export const TELEMETRYSDKLANGUAGEVALUES_NODEJS = TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP. + */ +export const TELEMETRYSDKLANGUAGEVALUES_PHP = TMP_TELEMETRYSDKLANGUAGEVALUES_PHP; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON. + */ +export const TELEMETRYSDKLANGUAGEVALUES_PYTHON = TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY. + */ +export const TELEMETRYSDKLANGUAGEVALUES_RUBY = TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS. + */ +export const TELEMETRYSDKLANGUAGEVALUES_WEBJS = TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS; +/** + * The constant map of values for TelemetrySdkLanguageValues. + * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification. + */ +export const TelemetrySdkLanguageValues = +/*#__PURE__*/ createConstMap([ + TMP_TELEMETRYSDKLANGUAGEVALUES_CPP, + TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET, + TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG, + TMP_TELEMETRYSDKLANGUAGEVALUES_GO, + TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA, + TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS, + TMP_TELEMETRYSDKLANGUAGEVALUES_PHP, + TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON, + TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY, + TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS, +]); +//# sourceMappingURL=SemanticResourceAttributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/SemanticResourceAttributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/SemanticResourceAttributes.js.map new file mode 100644 index 0000000..cca1171 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/SemanticResourceAttributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SemanticResourceAttributes.js","sourceRoot":"","sources":["../../../src/resource/SemanticResourceAttributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,4GAA4G;AAC5G,iHAAiH;AACjH,4GAA4G;AAE5G,4GAA4G;AAC5G,iDAAiD;AACjD,4GAA4G;AAE5G,2FAA2F;AAC3F,qGAAqG;AACrG,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAC5C,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAChD,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAC9D,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAC5C,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAC1D,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAChD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAC1D,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AACxD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAC5C,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAClD,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AACxD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAC5D,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAC9D,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAClD,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAC1C,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAC9C,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAC9C,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAC1C,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAChD,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAC1C,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AACxD,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAClD,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAC9C,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAChD,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAC5C,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,cAAc,GAAG,YAAY,CAAC;AACpC,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAC9D,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAC9D,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAC9C,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AACxD,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AACxD,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAC1C,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AACxD,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAC9D,MAAM,+BAA+B,GAAG,6BAA6B,CAAC;AACtE,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAClD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAC9C,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAC5D,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAC1D,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAC5D,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAC5C,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAClD,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,2BAA2B,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,yBAAyB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,yBAAyB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,wBAAwB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,wBAAwB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,0BAA0B,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,2BAA2B,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;EAmBE;AACF,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C;;;;;;;;;;;;;;EAcE;AACF,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,wBAAwB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,2BAA2B,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,2BAA2B,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,wBAAwB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,wBAAwB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,wBAAwB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,2BAA2B,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAClD,+BAA+B,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,0BAA0B,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,yBAAyB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,0BAA0B,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,yBAAyB,CAAC;AAqd3E;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B;AACrC,aAAa,CAAC,cAAc,CAA6B;IACvD,kBAAkB;IAClB,oBAAoB;IACpB,gBAAgB;IAChB,2BAA2B;IAC3B,kBAAkB;IAClB,yBAAyB;IACzB,uBAAuB;IACvB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,yBAAyB;IACzB,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,wBAAwB;IACxB,uBAAuB;IACvB,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;IACrB,wBAAwB;IACxB,uBAAuB;IACvB,0BAA0B;IAC1B,aAAa;IACb,2BAA2B;IAC3B,qBAAqB;IACrB,aAAa;IACb,WAAW;IACX,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,aAAa;IACb,aAAa;IACb,aAAa;IACb,mBAAmB;IACnB,iBAAiB;IACjB,sBAAsB;IACtB,oBAAoB;IACpB,iBAAiB;IACjB,gBAAgB;IAChB,sBAAsB;IACtB,eAAe;IACf,gBAAgB;IAChB,sBAAsB;IACtB,sBAAsB;IACtB,uBAAuB;IACvB,sBAAsB;IACtB,uBAAuB;IACvB,uBAAuB;IACvB,wBAAwB;IACxB,qBAAqB;IACrB,sBAAsB;IACtB,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IACnB,oBAAoB;IACpB,WAAW;IACX,kBAAkB;IAClB,WAAW;IACX,cAAc;IACd,eAAe;IACf,2BAA2B;IAC3B,2BAA2B;IAC3B,mBAAmB;IACnB,wBAAwB;IACxB,wBAAwB;IACxB,iBAAiB;IACjB,wBAAwB;IACxB,2BAA2B;IAC3B,+BAA+B;IAC/B,gBAAgB;IAChB,qBAAqB;IACrB,uBAAuB;IACvB,mBAAmB;IACnB,sBAAsB;IACtB,0BAA0B;IAC1B,yBAAyB;IACzB,0BAA0B;IAC1B,kBAAkB;IAClB,qBAAqB;IACrB,yBAAyB;CAC1B,CAAC,CAAC;AAEL;;;;gHAIgH;AAEhH,2FAA2F;AAC3F,qGAAqG;AACrG,MAAM,qCAAqC,GAAG,eAAe,CAAC;AAC9D,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAC1C,MAAM,6BAA6B,GAAG,OAAO,CAAC;AAC9C,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAE1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAC5C,qCAAqC,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAsBnE;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB;AAC9B,aAAa,CAAC,cAAc,CAAsB;IAChD,qCAAqC;IACrC,2BAA2B;IAC3B,6BAA6B;IAC7B,2BAA2B;CAC5B,CAAC,CAAC;AAEL;;;;;;gHAMgH;AAEhH,2FAA2F;AAC3F,qGAAqG;AACrG,MAAM,yCAAyC,GAAG,mBAAmB,CAAC;AACtE,MAAM,wCAAwC,GAAG,kBAAkB,CAAC;AACpE,MAAM,+BAA+B,GAAG,SAAS,CAAC;AAClD,MAAM,+BAA+B,GAAG,SAAS,CAAC;AAClD,MAAM,+BAA+B,GAAG,SAAS,CAAC;AAClD,MAAM,kCAAkC,GAAG,YAAY,CAAC;AACxD,MAAM,6CAA6C,GAAG,uBAAuB,CAAC;AAC9E,MAAM,gCAAgC,GAAG,UAAU,CAAC;AACpD,MAAM,iDAAiD,GACrD,2BAA2B,CAAC;AAC9B,MAAM,iCAAiC,GAAG,WAAW,CAAC;AACtD,MAAM,uCAAuC,GAAG,iBAAiB,CAAC;AAClE,MAAM,yCAAyC,GAAG,mBAAmB,CAAC;AACtE,MAAM,0CAA0C,GAAG,oBAAoB,CAAC;AACxE,MAAM,qCAAqC,GAAG,eAAe,CAAC;AAC9D,MAAM,6CAA6C,GAAG,uBAAuB,CAAC;AAC9E,MAAM,2CAA2C,GAAG,qBAAqB,CAAC;AAC1E,MAAM,sCAAsC,GAAG,gBAAgB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAChD,yCAAyC,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAC/C,wCAAwC,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,+BAA+B,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,+BAA+B,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,+BAA+B,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GACzC,kCAAkC,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GACpD,6CAA6C,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,gCAAgC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GACxD,iDAAiD,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,iCAAiC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAC9C,uCAAuC,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAChD,yCAAyC,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GACjD,0CAA0C,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAC5C,qCAAqC,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GACpD,6CAA6C,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAClD,2CAA2C,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAC7C,sCAAsC,CAAC;AA+DzC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB;AAC9B,aAAa,CAAC,cAAc,CAAsB;IAChD,yCAAyC;IACzC,wCAAwC;IACxC,+BAA+B;IAC/B,+BAA+B;IAC/B,+BAA+B;IAC/B,kCAAkC;IAClC,6CAA6C;IAC7C,gCAAgC;IAChC,iDAAiD;IACjD,iCAAiC;IACjC,uCAAuC;IACvC,yCAAyC;IACzC,0CAA0C;IAC1C,qCAAqC;IACrC,6CAA6C;IAC7C,2CAA2C;IAC3C,sCAAsC;CACvC,CAAC,CAAC;AAEL;;;;gHAIgH;AAEhH,2FAA2F;AAC3F,qGAAqG;AACrG,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAC7C,MAAM,kCAAkC,GAAG,SAAS,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,8BAA8B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GACzC,kCAAkC,CAAC;AAgBrC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB;AACjC,aAAa,CAAC,cAAc,CAAyB;IACnD,8BAA8B;IAC9B,kCAAkC;CACnC,CAAC,CAAC;AAEL;;;;gHAIgH;AAEhH,2FAA2F;AAC3F,qGAAqG;AACrG,MAAM,wBAAwB,GAAG,OAAO,CAAC;AACzC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AACzC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AACzC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AACzC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AACzC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AA+BzD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc;AACzB,aAAa,CAAC,cAAc,CAAiB;IAC3C,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,sBAAsB;CACvB,CAAC,CAAC;AAEL;;;;gHAIgH;AAEhH,2FAA2F;AAC3F,qGAAqG;AACrG,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAC3C,MAAM,sBAAsB,GAAG,OAAO,CAAC;AACvC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AACzC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAC3C,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AACzC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAC3C,MAAM,6BAA6B,GAAG,cAAc,CAAC;AACrD,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAC3C,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AA2CvD;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY;AACvB,aAAa,CAAC,cAAc,CAAe;IACzC,wBAAwB;IACxB,sBAAsB;IACtB,uBAAuB;IACvB,wBAAwB;IACxB,uBAAuB;IACvB,wBAAwB;IACxB,6BAA6B;IAC7B,qBAAqB;IACrB,oBAAoB;IACpB,wBAAwB;IACxB,qBAAqB;CACtB,CAAC,CAAC;AAEL;;;;gHAIgH;AAEhH,2FAA2F;AAC3F,qGAAqG;AACrG,MAAM,kCAAkC,GAAG,KAAK,CAAC;AACjD,MAAM,qCAAqC,GAAG,QAAQ,CAAC;AACvD,MAAM,qCAAqC,GAAG,QAAQ,CAAC;AACvD,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAC/C,MAAM,mCAAmC,GAAG,MAAM,CAAC;AACnD,MAAM,qCAAqC,GAAG,QAAQ,CAAC;AACvD,MAAM,kCAAkC,GAAG,KAAK,CAAC;AACjD,MAAM,qCAAqC,GAAG,QAAQ,CAAC;AACvD,MAAM,mCAAmC,GAAG,MAAM,CAAC;AACnD,MAAM,oCAAoC,GAAG,OAAO,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GACzC,kCAAkC,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAC5C,qCAAqC,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAC5C,qCAAqC,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,iCAAiC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,mCAAmC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAC5C,qCAAqC,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GACzC,kCAAkC,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAC5C,qCAAqC,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,mCAAmC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAC3C,oCAAoC,CAAC;AAwCvC;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B;AACrC,aAAa,CAAC,cAAc,CAA6B;IACvD,kCAAkC;IAClC,qCAAqC;IACrC,qCAAqC;IACrC,iCAAiC;IACjC,mCAAmC;IACnC,qCAAqC;IACrC,kCAAkC;IAClC,qCAAqC;IACrC,mCAAmC;IACnC,oCAAoC;CACrC,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\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/**\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 */\nexport const SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n\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 */\nexport const SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n\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 */\nexport const SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n\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 */\nexport const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n\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 */\nexport const SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n\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 */\nexport const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n\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 */\nexport const SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n\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 */\nexport const SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n\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 */\nexport const SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n\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 */\nexport const SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n\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 */\nexport const SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n\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 */\nexport const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n\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 */\nexport const SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n\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 */\nexport const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n\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 */\nexport const SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n\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 */\nexport const SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n\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*/\nexport const SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n\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*/\nexport const SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n\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 */\nexport const SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n\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 */\nexport const SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n\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 */\nexport const SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n\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 */\nexport const SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n\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 */\nexport const SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n\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 */\nexport const SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n\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 */\nexport const SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n\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 */\nexport const SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n\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 */\nexport const SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n\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 */\nexport const SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n\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 */\nexport const SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n\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 */\nexport const SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n\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 */\nexport const SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n\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 */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n\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 */\nexport const SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n\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 */\nexport const SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n\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 */\nexport const SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n\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 */\nexport const SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n\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 */\nexport const SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n\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 */\nexport const SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n\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 */\nexport const SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n\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 */\nexport const SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n\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 */\nexport const SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n\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 */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n\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 */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n\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 */\nexport const SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n\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 */\nexport const SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n\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 */\nexport const SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n\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 */\nexport const SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n\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 */\nexport const SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n\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 */\nexport const SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n\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 */\nexport const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION =\n TMP_PROCESS_RUNTIME_DESCRIPTION;\n\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 */\nexport const SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n\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 */\nexport const SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n\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 */\nexport const SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport const SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n\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 */\nexport const SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n\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 */\nexport const SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n\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 */\nexport const SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n\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 */\nexport const SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n\n/**\n * Definition of available values for SemanticResourceAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification.\n */\nexport type SemanticResourceAttributes = {\n /**\n * Name of the cloud provider.\n */\n CLOUD_PROVIDER: 'cloud.provider';\n\n /**\n * The cloud account ID the resource is assigned to.\n */\n CLOUD_ACCOUNT_ID: 'cloud.account.id';\n\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 CLOUD_REGION: 'cloud.region';\n\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 CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone';\n\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 CLOUD_PLATFORM: 'cloud.platform';\n\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 AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn';\n\n /**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n */\n AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn';\n\n /**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n */\n AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype';\n\n /**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n */\n AWS_ECS_TASK_ARN: 'aws.ecs.task.arn';\n\n /**\n * The task definition family this task definition is a member of.\n */\n AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family';\n\n /**\n * The revision for this task definition.\n */\n AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision';\n\n /**\n * The ARN of an EKS cluster.\n */\n AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn';\n\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 AWS_LOG_GROUP_NAMES: 'aws.log.group.names';\n\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 AWS_LOG_GROUP_ARNS: 'aws.log.group.arns';\n\n /**\n * The name(s) of the AWS log stream(s) an application is writing to.\n */\n AWS_LOG_STREAM_NAMES: 'aws.log.stream.names';\n\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 AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns';\n\n /**\n * Container name.\n */\n CONTAINER_NAME: 'container.name';\n\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 CONTAINER_ID: 'container.id';\n\n /**\n * The container runtime managing this container.\n */\n CONTAINER_RUNTIME: 'container.runtime';\n\n /**\n * Name of the image the container was built on.\n */\n CONTAINER_IMAGE_NAME: 'container.image.name';\n\n /**\n * Container image tag.\n */\n CONTAINER_IMAGE_TAG: 'container.image.tag';\n\n /**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n */\n DEPLOYMENT_ENVIRONMENT: 'deployment.environment';\n\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 DEVICE_ID: 'device.id';\n\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 DEVICE_MODEL_IDENTIFIER: 'device.model.identifier';\n\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 DEVICE_MODEL_NAME: 'device.model.name';\n\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 FAAS_NAME: 'faas.name';\n\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 FAAS_ID: 'faas.id';\n\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 FAAS_VERSION: 'faas.version';\n\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 FAAS_INSTANCE: 'faas.instance';\n\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 FAAS_MAX_MEMORY: 'faas.max_memory';\n\n /**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n */\n HOST_ID: 'host.id';\n\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 HOST_NAME: 'host.name';\n\n /**\n * Type of host. For Cloud, this must be the machine type.\n */\n HOST_TYPE: 'host.type';\n\n /**\n * The CPU architecture the host system is running on.\n */\n HOST_ARCH: 'host.arch';\n\n /**\n * Name of the VM image or OS install the host was instantiated from.\n */\n HOST_IMAGE_NAME: 'host.image.name';\n\n /**\n * VM image ID. For Cloud, this value is from the provider.\n */\n HOST_IMAGE_ID: 'host.image.id';\n\n /**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n */\n HOST_IMAGE_VERSION: 'host.image.version';\n\n /**\n * The name of the cluster.\n */\n K8S_CLUSTER_NAME: 'k8s.cluster.name';\n\n /**\n * The name of the Node.\n */\n K8S_NODE_NAME: 'k8s.node.name';\n\n /**\n * The UID of the Node.\n */\n K8S_NODE_UID: 'k8s.node.uid';\n\n /**\n * The name of the namespace that the pod is running in.\n */\n K8S_NAMESPACE_NAME: 'k8s.namespace.name';\n\n /**\n * The UID of the Pod.\n */\n K8S_POD_UID: 'k8s.pod.uid';\n\n /**\n * The name of the Pod.\n */\n K8S_POD_NAME: 'k8s.pod.name';\n\n /**\n * The name of the Container in a Pod template.\n */\n K8S_CONTAINER_NAME: 'k8s.container.name';\n\n /**\n * The UID of the ReplicaSet.\n */\n K8S_REPLICASET_UID: 'k8s.replicaset.uid';\n\n /**\n * The name of the ReplicaSet.\n */\n K8S_REPLICASET_NAME: 'k8s.replicaset.name';\n\n /**\n * The UID of the Deployment.\n */\n K8S_DEPLOYMENT_UID: 'k8s.deployment.uid';\n\n /**\n * The name of the Deployment.\n */\n K8S_DEPLOYMENT_NAME: 'k8s.deployment.name';\n\n /**\n * The UID of the StatefulSet.\n */\n K8S_STATEFULSET_UID: 'k8s.statefulset.uid';\n\n /**\n * The name of the StatefulSet.\n */\n K8S_STATEFULSET_NAME: 'k8s.statefulset.name';\n\n /**\n * The UID of the DaemonSet.\n */\n K8S_DAEMONSET_UID: 'k8s.daemonset.uid';\n\n /**\n * The name of the DaemonSet.\n */\n K8S_DAEMONSET_NAME: 'k8s.daemonset.name';\n\n /**\n * The UID of the Job.\n */\n K8S_JOB_UID: 'k8s.job.uid';\n\n /**\n * The name of the Job.\n */\n K8S_JOB_NAME: 'k8s.job.name';\n\n /**\n * The UID of the CronJob.\n */\n K8S_CRONJOB_UID: 'k8s.cronjob.uid';\n\n /**\n * The name of the CronJob.\n */\n K8S_CRONJOB_NAME: 'k8s.cronjob.name';\n\n /**\n * The operating system type.\n */\n OS_TYPE: 'os.type';\n\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 OS_DESCRIPTION: 'os.description';\n\n /**\n * Human readable operating system name.\n */\n OS_NAME: 'os.name';\n\n /**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n */\n OS_VERSION: 'os.version';\n\n /**\n * Process identifier (PID).\n */\n PROCESS_PID: 'process.pid';\n\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 PROCESS_EXECUTABLE_NAME: 'process.executable.name';\n\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 PROCESS_EXECUTABLE_PATH: 'process.executable.path';\n\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 PROCESS_COMMAND: 'process.command';\n\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 PROCESS_COMMAND_LINE: 'process.command_line';\n\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 PROCESS_COMMAND_ARGS: 'process.command_args';\n\n /**\n * The username of the user that owns the process.\n */\n PROCESS_OWNER: 'process.owner';\n\n /**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n */\n PROCESS_RUNTIME_NAME: 'process.runtime.name';\n\n /**\n * The version of the runtime of this process, as returned by the runtime without modification.\n */\n PROCESS_RUNTIME_VERSION: 'process.runtime.version';\n\n /**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n */\n PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description';\n\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 SERVICE_NAME: 'service.name';\n\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 SERVICE_NAMESPACE: 'service.namespace';\n\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 SERVICE_INSTANCE_ID: 'service.instance.id';\n\n /**\n * The version string of the service API or implementation.\n */\n SERVICE_VERSION: 'service.version';\n\n /**\n * The name of the telemetry SDK as defined above.\n */\n TELEMETRY_SDK_NAME: 'telemetry.sdk.name';\n\n /**\n * The language of the telemetry SDK.\n */\n TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language';\n\n /**\n * The version string of the telemetry SDK.\n */\n TELEMETRY_SDK_VERSION: 'telemetry.sdk.version';\n\n /**\n * The version string of the auto instrumentation agent, if used.\n */\n TELEMETRY_AUTO_VERSION: 'telemetry.auto.version';\n\n /**\n * The name of the web engine.\n */\n WEBENGINE_NAME: 'webengine.name';\n\n /**\n * The version of the web engine.\n */\n WEBENGINE_VERSION: 'webengine.version';\n\n /**\n * Additional description of the web engine (e.g. detailed version and edition information).\n */\n WEBENGINE_DESCRIPTION: 'webengine.description';\n};\n\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 */\nexport const SemanticResourceAttributes: SemanticResourceAttributes =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const CLOUDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n\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 */\nexport const CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n\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 */\nexport const CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n\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 */\nexport const CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport type CloudProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\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 */\nexport const CloudProviderValues: CloudProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_CLOUDPROVIDERVALUES_AWS,\n TMP_CLOUDPROVIDERVALUES_AZURE,\n TMP_CLOUDPROVIDERVALUES_GCP,\n ]);\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\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 =\n '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/**\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 */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n\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 */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_LAMBDA =\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK =\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE =\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_APP_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n\n/**\n * Identifies the 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 * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport type CloudPlatformValues = {\n /** Alibaba Cloud Elastic Compute Service. */\n ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs';\n\n /** Alibaba Cloud Function Compute. */\n ALIBABA_CLOUD_FC: 'alibaba_cloud_fc';\n\n /** AWS Elastic Compute Cloud. */\n AWS_EC2: 'aws_ec2';\n\n /** AWS Elastic Container Service. */\n AWS_ECS: 'aws_ecs';\n\n /** AWS Elastic Kubernetes Service. */\n AWS_EKS: 'aws_eks';\n\n /** AWS Lambda. */\n AWS_LAMBDA: 'aws_lambda';\n\n /** AWS Elastic Beanstalk. */\n AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk';\n\n /** Azure Virtual Machines. */\n AZURE_VM: 'azure_vm';\n\n /** Azure Container Instances. */\n AZURE_CONTAINER_INSTANCES: 'azure_container_instances';\n\n /** Azure Kubernetes Service. */\n AZURE_AKS: 'azure_aks';\n\n /** Azure Functions. */\n AZURE_FUNCTIONS: 'azure_functions';\n\n /** Azure App Service. */\n AZURE_APP_SERVICE: 'azure_app_service';\n\n /** Google Cloud Compute Engine (GCE). */\n GCP_COMPUTE_ENGINE: 'gcp_compute_engine';\n\n /** Google Cloud Run. */\n GCP_CLOUD_RUN: 'gcp_cloud_run';\n\n /** Google Cloud Kubernetes Engine (GKE). */\n GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine';\n\n /** Google Cloud Functions (GCF). */\n GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions';\n\n /** Google Cloud App Engine (GAE). */\n GCP_APP_ENGINE: 'gcp_app_engine';\n};\n\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 */\nexport const CloudPlatformValues: CloudPlatformValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n\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 */\nexport const AWSECSLAUNCHTYPEVALUES_FARGATE =\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n\n/**\n * Identifies the 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 * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport type AwsEcsLaunchtypeValues = {\n /** ec2. */\n EC2: 'ec2';\n\n /** fargate. */\n FARGATE: 'fargate';\n};\n\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 */\nexport const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n\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 */\nexport const HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n\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 */\nexport const HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n\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 */\nexport const HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n\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 */\nexport const HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n\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 */\nexport const HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n\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 */\nexport const HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n\n/**\n * Identifies the Values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport type HostArchValues = {\n /** AMD64. */\n AMD64: 'amd64';\n\n /** ARM32. */\n ARM32: 'arm32';\n\n /** ARM64. */\n ARM64: 'arm64';\n\n /** Itanium. */\n IA64: 'ia64';\n\n /** 32-bit PowerPC. */\n PPC32: 'ppc32';\n\n /** 64-bit PowerPC. */\n PPC64: 'ppc64';\n\n /** 32-bit x86. */\n X86: 'x86';\n};\n\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 */\nexport const HostArchValues: HostArchValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n\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 */\nexport const OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n\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 */\nexport const OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n\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 */\nexport const OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n\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 */\nexport const OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n\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 */\nexport const OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n\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 */\nexport const OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n\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 */\nexport const OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n\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 */\nexport const OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n\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 */\nexport const OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n\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 */\nexport const OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n\n/**\n * Identifies the Values for OsTypeValues enum definition\n *\n * The operating system type.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport type OsTypeValues = {\n /** Microsoft Windows. */\n WINDOWS: 'windows';\n\n /** Linux. */\n LINUX: 'linux';\n\n /** Apple Darwin. */\n DARWIN: 'darwin';\n\n /** FreeBSD. */\n FREEBSD: 'freebsd';\n\n /** NetBSD. */\n NETBSD: 'netbsd';\n\n /** OpenBSD. */\n OPENBSD: 'openbsd';\n\n /** DragonFly BSD. */\n DRAGONFLYBSD: 'dragonflybsd';\n\n /** HP-UX (Hewlett Packard Unix). */\n HPUX: 'hpux';\n\n /** AIX (Advanced Interactive eXecutive). */\n AIX: 'aix';\n\n /** Oracle Solaris. */\n SOLARIS: 'solaris';\n\n /** IBM z/OS. */\n Z_OS: 'z_os';\n};\n\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 */\nexport const OsTypeValues: OsTypeValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_CPP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_DOTNET =\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_ERLANG =\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_JAVA =\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_NODEJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PHP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PYTHON =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_RUBY =\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_WEBJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n\n/**\n * Identifies the Values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport type TelemetrySdkLanguageValues = {\n /** cpp. */\n CPP: 'cpp';\n\n /** dotnet. */\n DOTNET: 'dotnet';\n\n /** erlang. */\n ERLANG: 'erlang';\n\n /** go. */\n GO: 'go';\n\n /** java. */\n JAVA: 'java';\n\n /** nodejs. */\n NODEJS: 'nodejs';\n\n /** php. */\n PHP: 'php';\n\n /** python. */\n PYTHON: 'python';\n\n /** ruby. */\n RUBY: 'ruby';\n\n /** webjs. */\n WEBJS: 'webjs';\n};\n\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 */\nexport const TelemetrySdkLanguageValues: TelemetrySdkLanguageValues =\n /*#__PURE__*/ 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"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/index.d.ts new file mode 100644 index 0000000..300db0a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/index.d.ts @@ -0,0 +1,2 @@ +export * from './SemanticResourceAttributes'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/index.js new file mode 100644 index 0000000..691a334 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/index.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable no-restricted-syntax -- + * These re-exports are only of constants, only one-level deep at this point, + * and should not cause problems for tree-shakers. + */ +export * from './SemanticResourceAttributes'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/index.js.map new file mode 100644 index 0000000..06a263d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/resource/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resource/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,cAAc,8BAA8B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* 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 */\nexport * from './SemanticResourceAttributes';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.d.ts new file mode 100644 index 0000000..f3f6a36 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.d.ts @@ -0,0 +1,1069 @@ +/** + * ASP.NET Core exception middleware handling result. + * + * @example handled + * @example unhandled + */ +export declare const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT: "aspnetcore.diagnostics.exception.result"; +/** + * Enum value "aborted" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling didn't run because the request was aborted. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED: "aborted"; +/** + * Enum value "handled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was handled by the exception handling middleware. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED: "handled"; +/** + * Enum value "skipped" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling was skipped because the response had started. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED: "skipped"; +/** + * Enum value "unhandled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was not handled by the exception handling middleware. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED: "unhandled"; +/** + * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception. + * + * @example Contoso.MyHandler + */ +export declare const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE: "aspnetcore.diagnostics.handler.type"; +/** + * Rate limiting policy name. + * + * @example fixed + * @example sliding + * @example token + */ +export declare const ATTR_ASPNETCORE_RATE_LIMITING_POLICY: "aspnetcore.rate_limiting.policy"; +/** + * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason + * + * @example acquired + * @example request_canceled + */ +export declare const ATTR_ASPNETCORE_RATE_LIMITING_RESULT: "aspnetcore.rate_limiting.result"; +/** + * Enum value "acquired" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease was acquired + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED: "acquired"; +/** + * Enum value "endpoint_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the endpoint limiter + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER: "endpoint_limiter"; +/** + * Enum value "global_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the global limiter + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER: "global_limiter"; +/** + * Enum value "request_canceled" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was canceled + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED: "request_canceled"; +/** + * Flag indicating if request was handled by the application pipeline. + * + * @example true + */ +export declare const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED: "aspnetcore.request.is_unhandled"; +/** + * A value that indicates whether the matched route is a fallback route. + * + * @example true + */ +export declare const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK: "aspnetcore.routing.is_fallback"; +/** + * Match result - success or failure + * + * @example success + * @example failure + */ +export declare const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS: "aspnetcore.routing.match_status"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match failed + */ +export declare const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match succeeded + */ +export declare const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS: "success"; +/** + * A value that indicates whether the user is authenticated. + * + * @example true + */ +export declare const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED: "aspnetcore.user.is_authenticated"; +/** + * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example client.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +export declare const ATTR_CLIENT_ADDRESS: "client.address"; +/** + * Client port number. + * + * @example 65123 + * + * @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. + */ +export declare const ATTR_CLIENT_PORT: "client.port"; +/** + * 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. + * + * @example 16 + */ +export declare const ATTR_CODE_COLUMN_NUMBER: "code.column.number"; +/** + * 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. + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + */ +export declare const ATTR_CODE_FILE_PATH: "code.file.path"; +/** + * 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. + * + * @example com.example.MyHttpService.serveRequest + * @example GuzzleHttp\\Client::transfer + * @example fopen + * + * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples. + * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in + * `code.stacktrace` without information on arguments. + * + * Examples: + * + * - Java method: `com.example.MyHttpService.serveRequest` + * - Java anonymous class method: `com.mycompany.Main$1.myMethod` + * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod` + * - PHP function: `GuzzleHttp\Client::transfer` + * - Go function: `github.com/my/repo/pkg.foo.func5` + * - Elixir: `OpenTelemetry.Ctx.new` + * - Erlang: `opentelemetry_ctx:new` + * - Rust: `playground::my_module::my_cool_func` + * - C function: `fopen` + */ +export declare const ATTR_CODE_FUNCTION_NAME: "code.function.name"; +/** + * 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. + * + * @example 42 + */ +export declare const ATTR_CODE_LINE_NUMBER: "code.line.number"; +/** + * 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. + * + * @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" + */ +export declare const ATTR_CODE_STACKTRACE: "code.stacktrace"; +/** + * The name of a collection (table, container) within the database. + * + * @example public.users + * @example customers + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The collection name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple collections + * in non-batch operations. + * + * For batch operations, if the individual operations are known to have the same + * collection name then that collection name **SHOULD** be used. + */ +export declare const ATTR_DB_COLLECTION_NAME: "db.collection.name"; +/** + * The name of the database, fully qualified within the server address and port. + * + * @example customers + * @example test.users + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system. + * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization. + */ +export declare const ATTR_DB_NAMESPACE: "db.namespace"; +/** + * The number of queries included in a batch operation. + * + * @example 2 + * @example 3 + * @example 4 + * + * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`. + */ +export declare const ATTR_DB_OPERATION_BATCH_SIZE: "db.operation.batch.size"; +/** + * The name of the operation or command being executed. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The operation name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple operations + * in non-batch operations. + * + * If spaces can occur in the operation name, multiple consecutive spaces + * **SHOULD** be normalized to a single space. + * + * For batch operations, if the individual operations are known to have the same operation name + * then that operation name **SHOULD** be used prepended by `BATCH `, + * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database + * system specific term if more applicable. + */ +export declare const ATTR_DB_OPERATION_NAME: "db.operation.name"; +/** + * Low cardinality summary of a database query. + * + * @example SELECT wuser_table + * @example INSERT shipping_details SELECT orders + * @example get user by id + * + * @note The query summary describes a class of database queries and is useful + * as a grouping key, especially when analyzing telemetry for database + * calls involving complex queries. + * + * Summary may be available to the instrumentation through + * instrumentation hooks or other means. If it is not available, instrumentations + * that support query parsing **SHOULD** generate a summary following + * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query) + * section. + */ +export declare const ATTR_DB_QUERY_SUMMARY: "db.query.summary"; +/** + * The database query being executed. + * + * @example SELECT * FROM wuser_table where username = ? + * @example SET mykey ? + * + * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext). + * 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. + * 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. + */ +export declare const ATTR_DB_QUERY_TEXT: "db.query.text"; +/** + * Database response status code. + * + * @example 102 + * @example ORA-17002 + * @example 08P01 + * @example 404 + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system. + */ +export declare const ATTR_DB_RESPONSE_STATUS_CODE: "db.response.status_code"; +/** + * The name of a stored procedure within the database. + * + * @example GetCustomer + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * For batch operations, if the individual operations are known to have the same + * stored procedure name then that stored procedure name **SHOULD** be used. + */ +export declare const ATTR_DB_STORED_PROCEDURE_NAME: "db.stored_procedure.name"; +/** + * The database management system (DBMS) product as identified by the client instrumentation. + * + * @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. + */ +export declare const ATTR_DB_SYSTEM_NAME: "db.system.name"; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MariaDB](https://mariadb.org/) + */ +export declare const DB_SYSTEM_NAME_VALUE_MARIADB: "mariadb"; +/** + * Enum value "microsoft.sql_server" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Microsoft SQL Server](https://www.microsoft.com/sql-server) + */ +export declare const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER: "microsoft.sql_server"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MySQL](https://www.mysql.com/) + */ +export declare const DB_SYSTEM_NAME_VALUE_MYSQL: "mysql"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [PostgreSQL](https://www.postgresql.org/) + */ +export declare const DB_SYSTEM_NAME_VALUE_POSTGRESQL: "postgresql"; +/** + * Name of the garbage collector managed heap generation. + * + * @example gen0 + * @example gen1 + * @example gen2 + */ +export declare const ATTR_DOTNET_GC_HEAP_GENERATION: "dotnet.gc.heap.generation"; +/** + * Enum value "gen0" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 0 + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0: "gen0"; +/** + * Enum value "gen1" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 1 + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1: "gen1"; +/** + * Enum value "gen2" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 2 + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2: "gen2"; +/** + * Enum value "loh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Large Object Heap + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_LOH: "loh"; +/** + * Enum value "poh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Pinned Object Heap + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_POH: "poh"; +/** + * Describes a class of error the operation ended with. + * + * @example timeout + * @example java.net.UnknownHostException + * @example server_certificate_invalid + * @example 500 + * + * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality. + * + * When `error.type` is set to a type (e.g., an exception type), its + * canonical class name identifying the type within the artifact **SHOULD** be used. + * + * Instrumentations **SHOULD** document the list of errors they report. + * + * The cardinality of `error.type` within one instrumentation library **SHOULD** be low. + * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications + * should be prepared for `error.type` to have high cardinality at query time when no + * additional filters are applied. + * + * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`. + * + * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes), + * it's **RECOMMENDED** to: + * + * - Use a domain-specific attribute + * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not. + */ +export declare const ATTR_ERROR_TYPE: "error.type"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ERROR_TYPE}. + * + * A fallback error value to be used when the instrumentation doesn't define a custom value. + */ +export declare const ERROR_TYPE_VALUE_OTHER: "_OTHER"; +/** + * Indicates that the exception is escaping the scope of the span. + * + * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span. + */ +export declare const ATTR_EXCEPTION_ESCAPED: "exception.escaped"; +/** + * The exception message. + * + * @example Division by zero + * @example Can't convert 'int' object to str implicitly + */ +export declare const ATTR_EXCEPTION_MESSAGE: "exception.message"; +/** + * 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. + * + * @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" + */ +export declare const ATTR_EXCEPTION_STACKTRACE: "exception.stacktrace"; +/** + * 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. + * + * @example java.net.ConnectException + * @example OSError + */ +export declare const ATTR_EXCEPTION_TYPE: "exception.type"; +/** + * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * The `User-Agent` header is already captured in the `user_agent.original` attribute. + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type` + * attribute with value `["application/json"]`. + * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for` + * 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. + */ +export declare const ATTR_HTTP_REQUEST_HEADER: (key: string) => string; +/** + * HTTP request method. + * + * @example GET + * @example POST + * @example HEAD + * + * @note HTTP request method value **SHOULD** be "known" to the instrumentation. + * By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods), + * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html) + * 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). + * + * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`. + * + * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override + * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named + * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods + * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults). + * + * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly. + * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent. + * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value. + */ +export declare const ATTR_HTTP_REQUEST_METHOD: "http.request.method"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * Any HTTP method that the instrumentation has no prior knowledge of. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_OTHER: "_OTHER"; +/** + * Enum value "CONNECT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * CONNECT method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_CONNECT: "CONNECT"; +/** + * Enum value "DELETE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * DELETE method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_DELETE: "DELETE"; +/** + * Enum value "GET" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * GET method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_GET: "GET"; +/** + * Enum value "HEAD" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * HEAD method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_HEAD: "HEAD"; +/** + * Enum value "OPTIONS" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * OPTIONS method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_OPTIONS: "OPTIONS"; +/** + * Enum value "PATCH" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PATCH method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_PATCH: "PATCH"; +/** + * Enum value "POST" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * POST method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_POST: "POST"; +/** + * Enum value "PUT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PUT method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_PUT: "PUT"; +/** + * Enum value "TRACE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * TRACE method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_TRACE: "TRACE"; +/** + * Original HTTP method sent by the client in the request line. + * + * @example GeT + * @example ACL + * @example foo + */ +export declare const ATTR_HTTP_REQUEST_METHOD_ORIGINAL: "http.request.method_original"; +/** + * The ordinal number of request resending attempt (for any reason, including redirects). + * + * @example 3 + * + * @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). + */ +export declare const ATTR_HTTP_REQUEST_RESEND_COUNT: "http.request.resend_count"; +/** + * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["abc", "def"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type` + * attribute with value `["application/json"]`. + * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header` + * attribute with value `["abc", "def"]` or `["abc, def"]` depending on the HTTP library. + */ +export declare const ATTR_HTTP_RESPONSE_HEADER: (key: string) => string; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @example 200 + */ +export declare const ATTR_HTTP_RESPONSE_STATUS_CODE: "http.response.status_code"; +/** + * 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. + * + * @example /users/:userID? + * @example my-controller/my-action/{id?} + * + * @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. + * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one. + * + * 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 + * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`. + * + * 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. + * + * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY** + * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string. + */ +export declare const ATTR_HTTP_ROUTE: "http.route"; +/** + * Name of the garbage collector action. + * + * @example end of minor GC + * @example end of major GC + * + * @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()). + */ +export declare const ATTR_JVM_GC_ACTION: "jvm.gc.action"; +/** + * Name of the garbage collector. + * + * @example G1 Young Generation + * @example G1 Old Generation + * + * @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()). + */ +export declare const ATTR_JVM_GC_NAME: "jvm.gc.name"; +/** + * Name of the memory pool. + * + * @example G1 Old Gen + * @example G1 Eden space + * @example G1 Survivor Space + * + * @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()). + */ +export declare const ATTR_JVM_MEMORY_POOL_NAME: "jvm.memory.pool.name"; +/** + * The type of memory. + * + * @example heap + * @example non_heap + */ +export declare const ATTR_JVM_MEMORY_TYPE: "jvm.memory.type"; +/** + * Enum value "heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Heap memory. + */ +export declare const JVM_MEMORY_TYPE_VALUE_HEAP: "heap"; +/** + * Enum value "non_heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Non-heap memory + */ +export declare const JVM_MEMORY_TYPE_VALUE_NON_HEAP: "non_heap"; +/** + * Whether the thread is daemon or not. + */ +export declare const ATTR_JVM_THREAD_DAEMON: "jvm.thread.daemon"; +/** + * State of the thread. + * + * @example runnable + * @example blocked + */ +export declare const ATTR_JVM_THREAD_STATE: "jvm.thread.state"; +/** + * Enum value "blocked" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is blocked waiting for a monitor lock is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_BLOCKED: "blocked"; +/** + * Enum value "new" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has not yet started is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_NEW: "new"; +/** + * Enum value "runnable" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread executing in the Java virtual machine is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_RUNNABLE: "runnable"; +/** + * Enum value "terminated" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has exited is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_TERMINATED: "terminated"; +/** + * Enum value "timed_waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_TIMED_WAITING: "timed_waiting"; +/** + * Enum value "waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting indefinitely for another thread to perform a particular action is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_WAITING: "waiting"; +/** + * Local address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +export declare const ATTR_NETWORK_LOCAL_ADDRESS: "network.local.address"; +/** + * Local port number of the network connection. + * + * @example 65123 + */ +export declare const ATTR_NETWORK_LOCAL_PORT: "network.local.port"; +/** + * Peer address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +export declare const ATTR_NETWORK_PEER_ADDRESS: "network.peer.address"; +/** + * Peer port number of the network connection. + * + * @example 65123 + */ +export declare const ATTR_NETWORK_PEER_PORT: "network.peer.port"; +/** + * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent. + * + * @example amqp + * @example http + * @example mqtt + * + * @note The value **SHOULD** be normalized to lowercase. + */ +export declare const ATTR_NETWORK_PROTOCOL_NAME: "network.protocol.name"; +/** + * The actual version of the protocol used for network communication. + * + * @example 1.1 + * @example 2 + * + * @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. + */ +export declare const ATTR_NETWORK_PROTOCOL_VERSION: "network.protocol.version"; +/** + * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). + * + * @example tcp + * @example udp + * + * @note The value **SHOULD** be normalized to lowercase. + * + * Consider always setting the transport when setting a port number, since + * a port number is ambiguous without knowing the transport. For example + * different processes could be listening on TCP port 12345 and UDP port 12345. + */ +export declare const ATTR_NETWORK_TRANSPORT: "network.transport"; +/** + * Enum value "pipe" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Named or anonymous pipe. + */ +export declare const NETWORK_TRANSPORT_VALUE_PIPE: "pipe"; +/** + * Enum value "quic" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * QUIC + */ +export declare const NETWORK_TRANSPORT_VALUE_QUIC: "quic"; +/** + * Enum value "tcp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * TCP + */ +export declare const NETWORK_TRANSPORT_VALUE_TCP: "tcp"; +/** + * Enum value "udp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * UDP + */ +export declare const NETWORK_TRANSPORT_VALUE_UDP: "udp"; +/** + * Enum value "unix" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Unix domain socket + */ +export declare const NETWORK_TRANSPORT_VALUE_UNIX: "unix"; +/** + * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent. + * + * @example ipv4 + * @example ipv6 + * + * @note The value **SHOULD** be normalized to lowercase. + */ +export declare const ATTR_NETWORK_TYPE: "network.type"; +/** + * Enum value "ipv4" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv4 + */ +export declare const NETWORK_TYPE_VALUE_IPV4: "ipv4"; +/** + * Enum value "ipv6" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv6 + */ +export declare const NETWORK_TYPE_VALUE_IPV6: "ipv6"; +/** + * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP). + * + * @example io.opentelemetry.contrib.mongodb + */ +export declare const ATTR_OTEL_SCOPE_NAME: "otel.scope.name"; +/** + * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP). + * + * @example 1.0.0 + */ +export declare const ATTR_OTEL_SCOPE_VERSION: "otel.scope.version"; +/** + * Name of the code, either "OK" or "ERROR". **MUST NOT** be set if the status code is UNSET. + */ +export declare const ATTR_OTEL_STATUS_CODE: "otel.status_code"; +/** + * Enum value "ERROR" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation contains an error. + */ +export declare const OTEL_STATUS_CODE_VALUE_ERROR: "ERROR"; +/** + * Enum value "OK" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation has been validated by an Application developer or Operator to have completed successfully. + */ +export declare const OTEL_STATUS_CODE_VALUE_OK: "OK"; +/** + * Description of the Status if it has a value, otherwise not set. + * + * @example resource not found + */ +export declare const ATTR_OTEL_STATUS_DESCRIPTION: "otel.status_description"; +/** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +export declare const ATTR_SERVER_ADDRESS: "server.address"; +/** + * Server port number. + * + * @example 80 + * @example 8080 + * @example 443 + * + * @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. + */ +export declare const ATTR_SERVER_PORT: "server.port"; +/** + * Logical name of the service. + * + * @example shoppingcart + * + * @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`. + */ +export declare const ATTR_SERVICE_NAME: "service.name"; +/** + * The version string of the service component. The format is not defined by these conventions. + * + * @example 2.0.0 + * @example a01dbef8a + */ +export declare const ATTR_SERVICE_VERSION: "service.version"; +/** + * SignalR HTTP connection closure status. + * + * @example app_shutdown + * @example timeout + */ +export declare const ATTR_SIGNALR_CONNECTION_STATUS: "signalr.connection.status"; +/** + * Enum value "app_shutdown" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed because the app is shutting down. + */ +export declare const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN: "app_shutdown"; +/** + * Enum value "normal_closure" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed normally. + */ +export declare const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE: "normal_closure"; +/** + * Enum value "timeout" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed due to a timeout. + */ +export declare const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT: "timeout"; +/** + * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md) + * + * @example web_sockets + * @example long_polling + */ +export declare const ATTR_SIGNALR_TRANSPORT: "signalr.transport"; +/** + * Enum value "long_polling" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * LongPolling protocol + */ +export declare const SIGNALR_TRANSPORT_VALUE_LONG_POLLING: "long_polling"; +/** + * Enum value "server_sent_events" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * ServerSentEvents protocol + */ +export declare const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS: "server_sent_events"; +/** + * Enum value "web_sockets" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * WebSockets protocol + */ +export declare const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS: "web_sockets"; +/** + * The language of the telemetry SDK. + */ +export declare const ATTR_TELEMETRY_SDK_LANGUAGE: "telemetry.sdk.language"; +/** + * Enum value "cpp" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_CPP: "cpp"; +/** + * Enum value "dotnet" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET: "dotnet"; +/** + * Enum value "erlang" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG: "erlang"; +/** + * Enum value "go" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_GO: "go"; +/** + * Enum value "java" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA: "java"; +/** + * Enum value "nodejs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS: "nodejs"; +/** + * Enum value "php" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_PHP: "php"; +/** + * Enum value "python" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON: "python"; +/** + * Enum value "ruby" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY: "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_RUST: "rust"; +/** + * Enum value "swift" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT: "swift"; +/** + * Enum value "webjs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS: "webjs"; +/** + * The name of the telemetry SDK as defined above. + * + * @example opentelemetry + * + * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`. + * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the + * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point + * or another suitable identifier depending on the language. + * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case. + * All custom identifiers **SHOULD** be stable across different versions of an implementation. + */ +export declare const ATTR_TELEMETRY_SDK_NAME: "telemetry.sdk.name"; +/** + * The version string of the telemetry SDK. + * + * @example 1.2.3 + */ +export declare const ATTR_TELEMETRY_SDK_VERSION: "telemetry.sdk.version"; +/** + * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component + * + * @example SemConv + */ +export declare const ATTR_URL_FRAGMENT: "url.fragment"; +/** + * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example //localhost + * + * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment + * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless. + * + * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`. + * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`. + * + * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed). + * + * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the + * value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `https://www.example.com/path?color=blue&sig=REDACTED`. + */ +export declare const ATTR_URL_FULL: "url.full"; +/** + * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component + * + * @example /search + * + * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it. + */ +export declare const ATTR_URL_PATH: "url.path"; +/** + * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component + * + * @example q=OpenTelemetry + * + * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `q=OpenTelemetry&sig=REDACTED`. + */ +export declare const ATTR_URL_QUERY: "url.query"; +/** + * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol. + * + * @example https + * @example ftp + * @example telnet + */ +export declare const ATTR_URL_SCHEME: "url.scheme"; +/** + * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2 + */ +export declare const ATTR_USER_AGENT_ORIGINAL: "user_agent.original"; +//# sourceMappingURL=stable_attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js new file mode 100644 index 0000000..3e86430 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js @@ -0,0 +1,1087 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * ASP.NET Core exception middleware handling result. + * + * @example handled + * @example unhandled + */ +export const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result'; +/** + * Enum value "aborted" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling didn't run because the request was aborted. + */ +export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = "aborted"; +/** + * Enum value "handled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was handled by the exception handling middleware. + */ +export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = "handled"; +/** + * Enum value "skipped" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling was skipped because the response had started. + */ +export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = "skipped"; +/** + * Enum value "unhandled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was not handled by the exception handling middleware. + */ +export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = "unhandled"; +/** + * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception. + * + * @example Contoso.MyHandler + */ +export const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type'; +/** + * Rate limiting policy name. + * + * @example fixed + * @example sliding + * @example token + */ +export const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy'; +/** + * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason + * + * @example acquired + * @example request_canceled + */ +export const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result'; +/** + * Enum value "acquired" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease was acquired + */ +export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = "acquired"; +/** + * Enum value "endpoint_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the endpoint limiter + */ +export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = "endpoint_limiter"; +/** + * Enum value "global_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the global limiter + */ +export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = "global_limiter"; +/** + * Enum value "request_canceled" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was canceled + */ +export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = "request_canceled"; +/** + * Flag indicating if request was handled by the application pipeline. + * + * @example true + */ +export const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled'; +/** + * A value that indicates whether the matched route is a fallback route. + * + * @example true + */ +export const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback'; +/** + * Match result - success or failure + * + * @example success + * @example failure + */ +export const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match failed + */ +export const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match succeeded + */ +export const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = "success"; +/** + * A value that indicates whether the user is authenticated. + * + * @example true + */ +export const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated'; +/** + * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example client.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +export const ATTR_CLIENT_ADDRESS = 'client.address'; +/** + * Client port number. + * + * @example 65123 + * + * @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. + */ +export const ATTR_CLIENT_PORT = 'client.port'; +/** + * 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. + * + * @example 16 + */ +export const ATTR_CODE_COLUMN_NUMBER = 'code.column.number'; +/** + * 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. + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + */ +export const ATTR_CODE_FILE_PATH = 'code.file.path'; +/** + * 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. + * + * @example com.example.MyHttpService.serveRequest + * @example GuzzleHttp\\Client::transfer + * @example fopen + * + * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples. + * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in + * `code.stacktrace` without information on arguments. + * + * Examples: + * + * - Java method: `com.example.MyHttpService.serveRequest` + * - Java anonymous class method: `com.mycompany.Main$1.myMethod` + * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod` + * - PHP function: `GuzzleHttp\Client::transfer` + * - Go function: `github.com/my/repo/pkg.foo.func5` + * - Elixir: `OpenTelemetry.Ctx.new` + * - Erlang: `opentelemetry_ctx:new` + * - Rust: `playground::my_module::my_cool_func` + * - C function: `fopen` + */ +export const ATTR_CODE_FUNCTION_NAME = 'code.function.name'; +/** + * 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. + * + * @example 42 + */ +export const ATTR_CODE_LINE_NUMBER = 'code.line.number'; +/** + * 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. + * + * @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" + */ +export const ATTR_CODE_STACKTRACE = 'code.stacktrace'; +/** + * The name of a collection (table, container) within the database. + * + * @example public.users + * @example customers + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The collection name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple collections + * in non-batch operations. + * + * For batch operations, if the individual operations are known to have the same + * collection name then that collection name **SHOULD** be used. + */ +export const ATTR_DB_COLLECTION_NAME = 'db.collection.name'; +/** + * The name of the database, fully qualified within the server address and port. + * + * @example customers + * @example test.users + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system. + * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization. + */ +export const ATTR_DB_NAMESPACE = 'db.namespace'; +/** + * The number of queries included in a batch operation. + * + * @example 2 + * @example 3 + * @example 4 + * + * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`. + */ +export const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size'; +/** + * The name of the operation or command being executed. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The operation name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple operations + * in non-batch operations. + * + * If spaces can occur in the operation name, multiple consecutive spaces + * **SHOULD** be normalized to a single space. + * + * For batch operations, if the individual operations are known to have the same operation name + * then that operation name **SHOULD** be used prepended by `BATCH `, + * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database + * system specific term if more applicable. + */ +export const ATTR_DB_OPERATION_NAME = 'db.operation.name'; +/** + * Low cardinality summary of a database query. + * + * @example SELECT wuser_table + * @example INSERT shipping_details SELECT orders + * @example get user by id + * + * @note The query summary describes a class of database queries and is useful + * as a grouping key, especially when analyzing telemetry for database + * calls involving complex queries. + * + * Summary may be available to the instrumentation through + * instrumentation hooks or other means. If it is not available, instrumentations + * that support query parsing **SHOULD** generate a summary following + * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query) + * section. + */ +export const ATTR_DB_QUERY_SUMMARY = 'db.query.summary'; +/** + * The database query being executed. + * + * @example SELECT * FROM wuser_table where username = ? + * @example SET mykey ? + * + * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext). + * 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. + * 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. + */ +export const ATTR_DB_QUERY_TEXT = 'db.query.text'; +/** + * Database response status code. + * + * @example 102 + * @example ORA-17002 + * @example 08P01 + * @example 404 + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system. + */ +export const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code'; +/** + * The name of a stored procedure within the database. + * + * @example GetCustomer + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * For batch operations, if the individual operations are known to have the same + * stored procedure name then that stored procedure name **SHOULD** be used. + */ +export const ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name'; +/** + * The database management system (DBMS) product as identified by the client instrumentation. + * + * @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. + */ +export const ATTR_DB_SYSTEM_NAME = 'db.system.name'; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MariaDB](https://mariadb.org/) + */ +export const DB_SYSTEM_NAME_VALUE_MARIADB = "mariadb"; +/** + * Enum value "microsoft.sql_server" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Microsoft SQL Server](https://www.microsoft.com/sql-server) + */ +export const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = "microsoft.sql_server"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MySQL](https://www.mysql.com/) + */ +export const DB_SYSTEM_NAME_VALUE_MYSQL = "mysql"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [PostgreSQL](https://www.postgresql.org/) + */ +export const DB_SYSTEM_NAME_VALUE_POSTGRESQL = "postgresql"; +/** + * Name of the garbage collector managed heap generation. + * + * @example gen0 + * @example gen1 + * @example gen2 + */ +export const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation'; +/** + * Enum value "gen0" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 0 + */ +export const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = "gen0"; +/** + * Enum value "gen1" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 1 + */ +export const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = "gen1"; +/** + * Enum value "gen2" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 2 + */ +export const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = "gen2"; +/** + * Enum value "loh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Large Object Heap + */ +export const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = "loh"; +/** + * Enum value "poh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Pinned Object Heap + */ +export const DOTNET_GC_HEAP_GENERATION_VALUE_POH = "poh"; +/** + * Describes a class of error the operation ended with. + * + * @example timeout + * @example java.net.UnknownHostException + * @example server_certificate_invalid + * @example 500 + * + * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality. + * + * When `error.type` is set to a type (e.g., an exception type), its + * canonical class name identifying the type within the artifact **SHOULD** be used. + * + * Instrumentations **SHOULD** document the list of errors they report. + * + * The cardinality of `error.type` within one instrumentation library **SHOULD** be low. + * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications + * should be prepared for `error.type` to have high cardinality at query time when no + * additional filters are applied. + * + * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`. + * + * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes), + * it's **RECOMMENDED** to: + * + * - Use a domain-specific attribute + * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not. + */ +export const ATTR_ERROR_TYPE = 'error.type'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ERROR_TYPE}. + * + * A fallback error value to be used when the instrumentation doesn't define a custom value. + */ +export const ERROR_TYPE_VALUE_OTHER = "_OTHER"; +/** + * Indicates that the exception is escaping the scope of the span. + * + * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span. + */ +export const ATTR_EXCEPTION_ESCAPED = 'exception.escaped'; +/** + * The exception message. + * + * @example Division by zero + * @example Can't convert 'int' object to str implicitly + */ +export const ATTR_EXCEPTION_MESSAGE = 'exception.message'; +/** + * 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. + * + * @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" + */ +export const ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace'; +/** + * 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. + * + * @example java.net.ConnectException + * @example OSError + */ +export const ATTR_EXCEPTION_TYPE = 'exception.type'; +/** + * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * The `User-Agent` header is already captured in the `user_agent.original` attribute. + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type` + * attribute with value `["application/json"]`. + * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for` + * 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. + */ +export const ATTR_HTTP_REQUEST_HEADER = (key) => `http.request.header.${key}`; +/** + * HTTP request method. + * + * @example GET + * @example POST + * @example HEAD + * + * @note HTTP request method value **SHOULD** be "known" to the instrumentation. + * By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods), + * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html) + * 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). + * + * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`. + * + * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override + * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named + * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods + * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults). + * + * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly. + * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent. + * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value. + */ +export const ATTR_HTTP_REQUEST_METHOD = 'http.request.method'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * Any HTTP method that the instrumentation has no prior knowledge of. + */ +export const HTTP_REQUEST_METHOD_VALUE_OTHER = "_OTHER"; +/** + * Enum value "CONNECT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * CONNECT method. + */ +export const HTTP_REQUEST_METHOD_VALUE_CONNECT = "CONNECT"; +/** + * Enum value "DELETE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * DELETE method. + */ +export const HTTP_REQUEST_METHOD_VALUE_DELETE = "DELETE"; +/** + * Enum value "GET" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * GET method. + */ +export const HTTP_REQUEST_METHOD_VALUE_GET = "GET"; +/** + * Enum value "HEAD" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * HEAD method. + */ +export const HTTP_REQUEST_METHOD_VALUE_HEAD = "HEAD"; +/** + * Enum value "OPTIONS" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * OPTIONS method. + */ +export const HTTP_REQUEST_METHOD_VALUE_OPTIONS = "OPTIONS"; +/** + * Enum value "PATCH" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PATCH method. + */ +export const HTTP_REQUEST_METHOD_VALUE_PATCH = "PATCH"; +/** + * Enum value "POST" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * POST method. + */ +export const HTTP_REQUEST_METHOD_VALUE_POST = "POST"; +/** + * Enum value "PUT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PUT method. + */ +export const HTTP_REQUEST_METHOD_VALUE_PUT = "PUT"; +/** + * Enum value "TRACE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * TRACE method. + */ +export const HTTP_REQUEST_METHOD_VALUE_TRACE = "TRACE"; +/** + * Original HTTP method sent by the client in the request line. + * + * @example GeT + * @example ACL + * @example foo + */ +export const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original'; +/** + * The ordinal number of request resending attempt (for any reason, including redirects). + * + * @example 3 + * + * @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). + */ +export const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count'; +/** + * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["abc", "def"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type` + * attribute with value `["application/json"]`. + * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header` + * attribute with value `["abc", "def"]` or `["abc, def"]` depending on the HTTP library. + */ +export const ATTR_HTTP_RESPONSE_HEADER = (key) => `http.response.header.${key}`; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @example 200 + */ +export const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code'; +/** + * 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. + * + * @example /users/:userID? + * @example my-controller/my-action/{id?} + * + * @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. + * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one. + * + * 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 + * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`. + * + * 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. + * + * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY** + * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string. + */ +export const ATTR_HTTP_ROUTE = 'http.route'; +/** + * Name of the garbage collector action. + * + * @example end of minor GC + * @example end of major GC + * + * @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()). + */ +export const ATTR_JVM_GC_ACTION = 'jvm.gc.action'; +/** + * Name of the garbage collector. + * + * @example G1 Young Generation + * @example G1 Old Generation + * + * @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()). + */ +export const ATTR_JVM_GC_NAME = 'jvm.gc.name'; +/** + * Name of the memory pool. + * + * @example G1 Old Gen + * @example G1 Eden space + * @example G1 Survivor Space + * + * @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()). + */ +export const ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name'; +/** + * The type of memory. + * + * @example heap + * @example non_heap + */ +export const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type'; +/** + * Enum value "heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Heap memory. + */ +export const JVM_MEMORY_TYPE_VALUE_HEAP = "heap"; +/** + * Enum value "non_heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Non-heap memory + */ +export const JVM_MEMORY_TYPE_VALUE_NON_HEAP = "non_heap"; +/** + * Whether the thread is daemon or not. + */ +export const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon'; +/** + * State of the thread. + * + * @example runnable + * @example blocked + */ +export const ATTR_JVM_THREAD_STATE = 'jvm.thread.state'; +/** + * Enum value "blocked" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is blocked waiting for a monitor lock is in this state. + */ +export const JVM_THREAD_STATE_VALUE_BLOCKED = "blocked"; +/** + * Enum value "new" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has not yet started is in this state. + */ +export const JVM_THREAD_STATE_VALUE_NEW = "new"; +/** + * Enum value "runnable" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread executing in the Java virtual machine is in this state. + */ +export const JVM_THREAD_STATE_VALUE_RUNNABLE = "runnable"; +/** + * Enum value "terminated" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has exited is in this state. + */ +export const JVM_THREAD_STATE_VALUE_TERMINATED = "terminated"; +/** + * Enum value "timed_waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state. + */ +export const JVM_THREAD_STATE_VALUE_TIMED_WAITING = "timed_waiting"; +/** + * Enum value "waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting indefinitely for another thread to perform a particular action is in this state. + */ +export const JVM_THREAD_STATE_VALUE_WAITING = "waiting"; +/** + * Local address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +export const ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address'; +/** + * Local port number of the network connection. + * + * @example 65123 + */ +export const ATTR_NETWORK_LOCAL_PORT = 'network.local.port'; +/** + * Peer address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +export const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address'; +/** + * Peer port number of the network connection. + * + * @example 65123 + */ +export const ATTR_NETWORK_PEER_PORT = 'network.peer.port'; +/** + * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent. + * + * @example amqp + * @example http + * @example mqtt + * + * @note The value **SHOULD** be normalized to lowercase. + */ +export const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name'; +/** + * The actual version of the protocol used for network communication. + * + * @example 1.1 + * @example 2 + * + * @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. + */ +export const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version'; +/** + * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). + * + * @example tcp + * @example udp + * + * @note The value **SHOULD** be normalized to lowercase. + * + * Consider always setting the transport when setting a port number, since + * a port number is ambiguous without knowing the transport. For example + * different processes could be listening on TCP port 12345 and UDP port 12345. + */ +export const ATTR_NETWORK_TRANSPORT = 'network.transport'; +/** + * Enum value "pipe" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Named or anonymous pipe. + */ +export const NETWORK_TRANSPORT_VALUE_PIPE = "pipe"; +/** + * Enum value "quic" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * QUIC + */ +export const NETWORK_TRANSPORT_VALUE_QUIC = "quic"; +/** + * Enum value "tcp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * TCP + */ +export const NETWORK_TRANSPORT_VALUE_TCP = "tcp"; +/** + * Enum value "udp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * UDP + */ +export const NETWORK_TRANSPORT_VALUE_UDP = "udp"; +/** + * Enum value "unix" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Unix domain socket + */ +export const NETWORK_TRANSPORT_VALUE_UNIX = "unix"; +/** + * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent. + * + * @example ipv4 + * @example ipv6 + * + * @note The value **SHOULD** be normalized to lowercase. + */ +export const ATTR_NETWORK_TYPE = 'network.type'; +/** + * Enum value "ipv4" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv4 + */ +export const NETWORK_TYPE_VALUE_IPV4 = "ipv4"; +/** + * Enum value "ipv6" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv6 + */ +export const NETWORK_TYPE_VALUE_IPV6 = "ipv6"; +/** + * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP). + * + * @example io.opentelemetry.contrib.mongodb + */ +export const ATTR_OTEL_SCOPE_NAME = 'otel.scope.name'; +/** + * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP). + * + * @example 1.0.0 + */ +export const ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version'; +/** + * Name of the code, either "OK" or "ERROR". **MUST NOT** be set if the status code is UNSET. + */ +export const ATTR_OTEL_STATUS_CODE = 'otel.status_code'; +/** + * Enum value "ERROR" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation contains an error. + */ +export const OTEL_STATUS_CODE_VALUE_ERROR = "ERROR"; +/** + * Enum value "OK" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation has been validated by an Application developer or Operator to have completed successfully. + */ +export const OTEL_STATUS_CODE_VALUE_OK = "OK"; +/** + * Description of the Status if it has a value, otherwise not set. + * + * @example resource not found + */ +export const ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description'; +/** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +export const ATTR_SERVER_ADDRESS = 'server.address'; +/** + * Server port number. + * + * @example 80 + * @example 8080 + * @example 443 + * + * @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. + */ +export const ATTR_SERVER_PORT = 'server.port'; +/** + * Logical name of the service. + * + * @example shoppingcart + * + * @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`. + */ +export const ATTR_SERVICE_NAME = 'service.name'; +/** + * The version string of the service component. The format is not defined by these conventions. + * + * @example 2.0.0 + * @example a01dbef8a + */ +export const ATTR_SERVICE_VERSION = 'service.version'; +/** + * SignalR HTTP connection closure status. + * + * @example app_shutdown + * @example timeout + */ +export const ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status'; +/** + * Enum value "app_shutdown" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed because the app is shutting down. + */ +export const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = "app_shutdown"; +/** + * Enum value "normal_closure" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed normally. + */ +export const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = "normal_closure"; +/** + * Enum value "timeout" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed due to a timeout. + */ +export const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = "timeout"; +/** + * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md) + * + * @example web_sockets + * @example long_polling + */ +export const ATTR_SIGNALR_TRANSPORT = 'signalr.transport'; +/** + * Enum value "long_polling" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * LongPolling protocol + */ +export const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = "long_polling"; +/** + * Enum value "server_sent_events" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * ServerSentEvents protocol + */ +export const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = "server_sent_events"; +/** + * Enum value "web_sockets" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * WebSockets protocol + */ +export const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = "web_sockets"; +/** + * The language of the telemetry SDK. + */ +export const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language'; +/** + * Enum value "cpp" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = "cpp"; +/** + * Enum value "dotnet" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = "dotnet"; +/** + * Enum value "erlang" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = "erlang"; +/** + * Enum value "go" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_GO = "go"; +/** + * Enum value "java" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = "java"; +/** + * Enum value "nodejs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = "nodejs"; +/** + * Enum value "php" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = "php"; +/** + * Enum value "python" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = "python"; +/** + * Enum value "ruby" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = "rust"; +/** + * Enum value "swift" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = "swift"; +/** + * Enum value "webjs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = "webjs"; +/** + * The name of the telemetry SDK as defined above. + * + * @example opentelemetry + * + * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`. + * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the + * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point + * or another suitable identifier depending on the language. + * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case. + * All custom identifiers **SHOULD** be stable across different versions of an implementation. + */ +export const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name'; +/** + * The version string of the telemetry SDK. + * + * @example 1.2.3 + */ +export const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version'; +/** + * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component + * + * @example SemConv + */ +export const ATTR_URL_FRAGMENT = 'url.fragment'; +/** + * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example //localhost + * + * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment + * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless. + * + * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`. + * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`. + * + * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed). + * + * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the + * value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `https://www.example.com/path?color=blue&sig=REDACTED`. + */ +export const ATTR_URL_FULL = 'url.full'; +/** + * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component + * + * @example /search + * + * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it. + */ +export const ATTR_URL_PATH = 'url.path'; +/** + * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component + * + * @example q=OpenTelemetry + * + * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `q=OpenTelemetry&sig=REDACTED`. + */ +export const ATTR_URL_QUERY = 'url.query'; +/** + * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol. + * + * @example https + * @example ftp + * @example telnet + */ +export const ATTR_URL_SCHEME = 'url.scheme'; +/** + * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2 + */ +export const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original'; +//# sourceMappingURL=stable_attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js.map new file mode 100644 index 0000000..9c33474 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stable_attributes.js","sourceRoot":"","sources":["../../src/stable_attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4GAA4G;AAC5G,8GAA8G;AAC9G,4GAA4G;AAE5G;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;GAIG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,SAAkB,CAAC;AAExF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,SAAkB,CAAC;AAExF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG,SAAkB,CAAC;AAExF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAAG,WAAoB,CAAC;AAE5F;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,UAAmB,CAAC;AAElF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,kBAA2B,CAAC;AAElG;;;;GAIG;AACH,MAAM,CAAC,MAAM,oDAAoD,GAAG,gBAAyB,CAAC;AAE9F;;;;GAIG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,kBAA2B,CAAC;AAElG;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,SAAkB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,SAAkB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,sBAA+B,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,YAAqB,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,MAAe,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,MAAe,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,MAAe,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,KAAc,CAAC;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,KAAc,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,QAAiB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,SAAkB,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAc,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,SAAkB,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,OAAgB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAc,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,OAAgB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC;AAExF;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAe,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,UAAmB,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,SAAkB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,YAAqB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,eAAwB,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,SAAkB,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAc,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAc,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAe,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAe,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,OAAgB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAa,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,cAAuB,CAAC;AAEpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,8CAA8C,GAAG,gBAAyB,CAAC;AAExF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,SAAkB,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,cAAuB,CAAC;AAE5E;;;;GAIG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,oBAA6B,CAAC;AAExF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,aAAsB,CAAC;AAE1E;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAc,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,QAAiB,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,QAAiB,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAa,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,QAAiB,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAc,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,QAAiB,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,OAAgB,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,OAAgB,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAA8B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * ASP.NET Core exception middleware handling result.\n *\n * @example handled\n * @example unhandled\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result' as const;\n\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 */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\" as const;\n\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 */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\" as const;\n\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 */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\" as const;\n\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 */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type' as const;\n\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy' as const;\n\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 */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result' as const;\n\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease was acquired\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\" as const;\n\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 */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\" as const;\n\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 */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\" as const;\n\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was canceled\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\" as const;\n\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled' as const;\n\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback' as const;\n\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match failed\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match succeeded\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * A value that indicates whether the user is authenticated.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated' as const;\n\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 */\nexport const ATTR_CLIENT_ADDRESS = 'client.address' as const;\n\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 */\nexport const ATTR_CLIENT_PORT = 'client.port' as const;\n\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 */\nexport const ATTR_CODE_COLUMN_NUMBER = 'code.column.number' as const;\n\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 */\nexport const ATTR_CODE_FILE_PATH = 'code.file.path' as const;\n\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 */\nexport const ATTR_CODE_FUNCTION_NAME = 'code.function.name' as const;\n\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 */\nexport const ATTR_CODE_LINE_NUMBER = 'code.line.number' as const;\n\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 */\nexport const ATTR_CODE_STACKTRACE = 'code.stacktrace' as const;\n\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 */\nexport const ATTR_DB_COLLECTION_NAME = 'db.collection.name' as const;\n\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 */\nexport const ATTR_DB_NAMESPACE = 'db.namespace' as const;\n\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 */\nexport const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size' as const;\n\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 */\nexport const ATTR_DB_OPERATION_NAME = 'db.operation.name' as const;\n\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 */\nexport const ATTR_DB_QUERY_SUMMARY = 'db.query.summary' as const;\n\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 */\nexport const ATTR_DB_QUERY_TEXT = 'db.query.text' as const;\n\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 */\nexport const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code' as const;\n\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 */\nexport const ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name' as const;\n\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 */\nexport const ATTR_DB_SYSTEM_NAME = 'db.system.name' as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MariaDB](https://mariadb.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MARIADB = \"mariadb\" as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = \"microsoft.sql_server\" as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MySQL](https://www.mysql.com/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [PostgreSQL](https://www.postgresql.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Name of the garbage collector managed heap generation.\n *\n * @example gen0\n * @example gen1\n * @example gen2\n */\nexport const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation' as const;\n\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 0\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\" as const;\n\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 1\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\" as const;\n\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 2\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\" as const;\n\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Large Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\" as const;\n\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Pinned Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\" as const;\n\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 */\nexport const ATTR_ERROR_TYPE = 'error.type' as const;\n\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 */\nexport const ERROR_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\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 */\nexport const ATTR_EXCEPTION_ESCAPED = 'exception.escaped' as const;\n\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n */\nexport const ATTR_EXCEPTION_MESSAGE = 'exception.message' as const;\n\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 */\nexport const ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace' as const;\n\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 */\nexport const ATTR_EXCEPTION_TYPE = 'exception.type' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_HEADER = (key: string) => `http.request.header.${key}`;\n\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 * (this list **MUST** be a full override of the default known method, 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 */\nexport const ATTR_HTTP_REQUEST_METHOD = 'http.request.method' as const;\n\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 */\nexport const HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * CONNECT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\" as const;\n\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * DELETE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\" as const;\n\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * GET method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_GET = \"GET\" as const;\n\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * HEAD method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\" as const;\n\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * OPTIONS method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\" as const;\n\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PATCH method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\" as const;\n\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * POST method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_POST = \"POST\" as const;\n\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PUT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\" as const;\n\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * TRACE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\" as const;\n\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count' as const;\n\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 */\nexport const ATTR_HTTP_RESPONSE_HEADER = (key: string) => `http.response.header.${key}`;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code' as const;\n\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 */\nexport const ATTR_HTTP_ROUTE = 'http.route' as const;\n\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 */\nexport const ATTR_JVM_GC_ACTION = 'jvm.gc.action' as const;\n\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 */\nexport const ATTR_JVM_GC_NAME = 'jvm.gc.name' as const;\n\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 */\nexport const ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name' as const;\n\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type' as const;\n\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Heap memory.\n */\nexport const JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\" as const;\n\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Non-heap memory\n */\nexport const JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\" as const;\n\n/**\n * Whether the thread is daemon or not.\n */\nexport const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon' as const;\n\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport const ATTR_JVM_THREAD_STATE = 'jvm.thread.state' as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_NEW = \"new\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has exited is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_WAITING = \"waiting\" as const;\n\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 */\nexport const ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address' as const;\n\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_LOCAL_PORT = 'network.local.port' as const;\n\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 */\nexport const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address' as const;\n\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_PEER_PORT = 'network.peer.port' as const;\n\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 */\nexport const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name' as const;\n\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 */\nexport const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version' as const;\n\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 */\nexport const ATTR_NETWORK_TRANSPORT = 'network.transport' as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Named or anonymous pipe.\n */\nexport const NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * QUIC\n */\nexport const NETWORK_TRANSPORT_VALUE_QUIC = \"quic\" as const;\n\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * TCP\n */\nexport const NETWORK_TRANSPORT_VALUE_TCP = \"tcp\" as const;\n\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * UDP\n */\nexport const NETWORK_TRANSPORT_VALUE_UDP = \"udp\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Unix domain socket\n */\nexport const NETWORK_TRANSPORT_VALUE_UNIX = \"unix\" as const;\n\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 */\nexport const ATTR_NETWORK_TYPE = 'network.type' as const;\n\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv4\n */\nexport const NETWORK_TYPE_VALUE_IPV4 = \"ipv4\" as const;\n\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv6\n */\nexport const NETWORK_TYPE_VALUE_IPV6 = \"ipv6\" as const;\n\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport const ATTR_OTEL_SCOPE_NAME = 'otel.scope.name' as const;\n\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport const ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version' as const;\n\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport const ATTR_OTEL_STATUS_CODE = 'otel.status_code' as const;\n\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation contains an error.\n */\nexport const OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\" as const;\n\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 */\nexport const OTEL_STATUS_CODE_VALUE_OK = \"OK\" as const;\n\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport const ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description' as const;\n\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 */\nexport const ATTR_SERVER_ADDRESS = 'server.address' as const;\n\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 */\nexport const ATTR_SERVER_PORT = 'server.port' as const;\n\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 */\nexport const ATTR_SERVICE_NAME = 'service.name' as const;\n\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 */\nexport const ATTR_SERVICE_VERSION = 'service.version' as const;\n\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport const ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status' as const;\n\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 */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\" as const;\n\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed normally.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed due to a timeout.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\" as const;\n\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 */\nexport const ATTR_SIGNALR_TRANSPORT = 'signalr.transport' as const;\n\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * LongPolling protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\" as const;\n\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * ServerSentEvents protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\" as const;\n\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * WebSockets protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\" as const;\n\n/**\n * The language of the telemetry SDK.\n */\nexport const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language' as const;\n\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\" as const;\n\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\" as const;\n\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\" as const;\n\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 */\nexport const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name' as const;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version' as const;\n\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport const ATTR_URL_FRAGMENT = 'url.fragment' as const;\n\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 * 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 */\nexport const ATTR_URL_FULL = 'url.full' as const;\n\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 */\nexport const ATTR_URL_PATH = 'url.path' as const;\n\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 * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `q=OpenTelemetry&sig=REDACTED`.\n */\nexport const ATTR_URL_QUERY = 'url.query' as const;\n\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 */\nexport const ATTR_URL_SCHEME = 'url.scheme' as const;\n\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 */\nexport const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.d.ts new file mode 100644 index 0000000..271463b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.d.ts @@ -0,0 +1,5 @@ +/** + * This event describes a single exception. + */ +export declare const EVENT_EXCEPTION: "exception"; +//# sourceMappingURL=stable_events.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.js new file mode 100644 index 0000000..e3cc7d8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//----------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2 +//----------------------------------------------------------------------------------------------------------- +/** + * This event describes a single exception. + */ +export const EVENT_EXCEPTION = 'exception'; +//# sourceMappingURL=stable_events.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.js.map new file mode 100644 index 0000000..a501b95 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stable_events.js","sourceRoot":"","sources":["../../src/stable_events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,6GAA6G;AAC7G,6GAA6G;AAC7G,6GAA6G;AAE7G;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,WAAoB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------\n\n/**\n * This event describes a single exception.\n */\nexport const EVENT_EXCEPTION = 'exception' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_metrics.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_metrics.d.ts new file mode 100644 index 0000000..ba8f069 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_metrics.d.ts @@ -0,0 +1,308 @@ +/** + * Number of exceptions caught by exception handling middleware. + * + * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS: "aspnetcore.diagnostics.exceptions"; +/** + * Number of requests that are currently active on the server that hold a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES: "aspnetcore.rate_limiting.active_request_leases"; +/** + * Number of requests that are currently queued, waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS: "aspnetcore.rate_limiting.queued_requests"; +/** + * The time the request spent in a queue waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE: "aspnetcore.rate_limiting.request.time_in_queue"; +/** + * The duration of rate limiting lease held by requests on the server. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION: "aspnetcore.rate_limiting.request_lease.duration"; +/** + * Number of requests that tried to acquire a rate limiting lease. + * + * @note Requests could be: + * + * - Rejected by global or endpoint rate limiting policies + * - Canceled while waiting for the lease. + * + * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS: "aspnetcore.rate_limiting.requests"; +/** + * Number of requests that were attempted to be matched to an endpoint. + * + * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS: "aspnetcore.routing.match_attempts"; +/** + * Duration of database client operations. + * + * @note Batch operations **SHOULD** be recorded as a single operation. + */ +export declare const METRIC_DB_CLIENT_OPERATION_DURATION: "db.client.operation.duration"; +/** + * The number of .NET assemblies that are currently loaded. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies). + */ +export declare const METRIC_DOTNET_ASSEMBLY_COUNT: "dotnet.assembly.count"; +/** + * The number of exceptions that have been thrown in managed code. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception). + */ +export declare const METRIC_DOTNET_EXCEPTIONS: "dotnet.exceptions"; +/** + * The number of garbage collections that have occurred since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation. + */ +export declare const METRIC_DOTNET_GC_COLLECTIONS: "dotnet.gc.collections"; +/** + * 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. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes). + */ +export declare const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED: "dotnet.gc.heap.total_allocated"; +/** + * The heap fragmentation, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes). + */ +export declare const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE: "dotnet.gc.last_collection.heap.fragmentation.size"; +/** + * The managed GC heap size (including fragmentation), as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes). + */ +export declare const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE: "dotnet.gc.last_collection.heap.size"; +/** + * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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. + */ +export declare const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE: "dotnet.gc.last_collection.memory.committed_size"; +/** + * The total amount of time paused in GC since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration). + */ +export declare const METRIC_DOTNET_GC_PAUSE_TIME: "dotnet.gc.pause.time"; +/** + * The amount of time the JIT compiler has spent compiling methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime). + */ +export declare const METRIC_DOTNET_JIT_COMPILATION_TIME: "dotnet.jit.compilation.time"; +/** + * Count of bytes of intermediate language that have been compiled since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes). + */ +export declare const METRIC_DOTNET_JIT_COMPILED_IL_SIZE: "dotnet.jit.compiled_il.size"; +/** + * The number of times the JIT compiler (re)compiled methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount). + */ +export declare const METRIC_DOTNET_JIT_COMPILED_METHODS: "dotnet.jit.compiled_methods"; +/** + * The number of times there was contention when trying to acquire a monitor lock since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount). + */ +export declare const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS: "dotnet.monitor.lock_contentions"; +/** + * The number of processors available to the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount). + */ +export declare const METRIC_DOTNET_PROCESS_CPU_COUNT: "dotnet.process.cpu.count"; +/** + * CPU time used by the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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). + */ +export declare const METRIC_DOTNET_PROCESS_CPU_TIME: "dotnet.process.cpu.time"; +/** + * The number of bytes of physical memory mapped to the process context. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset). + */ +export declare const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET: "dotnet.process.memory.working_set"; +/** + * The number of work items that are currently queued to be processed by the thread pool. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount). + */ +export declare const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH: "dotnet.thread_pool.queue.length"; +/** + * The number of thread pool threads that currently exist. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount). + */ +export declare const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT: "dotnet.thread_pool.thread.count"; +/** + * The number of work items that the thread pool has completed since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount). + */ +export declare const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT: "dotnet.thread_pool.work_item.count"; +/** + * The number of timer instances that are currently active. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount). + */ +export declare const METRIC_DOTNET_TIMER_COUNT: "dotnet.timer.count"; +/** + * Duration of HTTP client requests. + */ +export declare const METRIC_HTTP_CLIENT_REQUEST_DURATION: "http.client.request.duration"; +/** + * Duration of HTTP server requests. + */ +export declare const METRIC_HTTP_SERVER_REQUEST_DURATION: "http.server.request.duration"; +/** + * Number of classes currently loaded. + */ +export declare const METRIC_JVM_CLASS_COUNT: "jvm.class.count"; +/** + * Number of classes loaded since JVM start. + */ +export declare const METRIC_JVM_CLASS_LOADED: "jvm.class.loaded"; +/** + * Number of classes unloaded since JVM start. + */ +export declare const METRIC_JVM_CLASS_UNLOADED: "jvm.class.unloaded"; +/** + * Number of processors available to the Java virtual machine. + */ +export declare const METRIC_JVM_CPU_COUNT: "jvm.cpu.count"; +/** + * Recent CPU utilization for the process as reported by the JVM. + * + * @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()). + */ +export declare const METRIC_JVM_CPU_RECENT_UTILIZATION: "jvm.cpu.recent_utilization"; +/** + * CPU time used by the process as reported by the JVM. + */ +export declare const METRIC_JVM_CPU_TIME: "jvm.cpu.time"; +/** + * Duration of JVM garbage collection actions. + */ +export declare const METRIC_JVM_GC_DURATION: "jvm.gc.duration"; +/** + * Measure of memory committed. + */ +export declare const METRIC_JVM_MEMORY_COMMITTED: "jvm.memory.committed"; +/** + * Measure of max obtainable memory. + */ +export declare const METRIC_JVM_MEMORY_LIMIT: "jvm.memory.limit"; +/** + * Measure of memory used. + */ +export declare const METRIC_JVM_MEMORY_USED: "jvm.memory.used"; +/** + * Measure of memory used, as measured after the most recent garbage collection event on this pool. + */ +export declare const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC: "jvm.memory.used_after_last_gc"; +/** + * Number of executing platform threads. + */ +export declare const METRIC_JVM_THREAD_COUNT: "jvm.thread.count"; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_ACTIVE_CONNECTIONS: "kestrel.active_connections"; +/** + * Number of TLS handshakes that are currently in progress on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES: "kestrel.active_tls_handshakes"; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_CONNECTION_DURATION: "kestrel.connection.duration"; +/** + * Number of connections that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_QUEUED_CONNECTIONS: "kestrel.queued_connections"; +/** + * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_QUEUED_REQUESTS: "kestrel.queued_requests"; +/** + * Number of connections rejected by the server. + * + * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`. + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_REJECTED_CONNECTIONS: "kestrel.rejected_connections"; +/** + * The duration of TLS handshakes on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_TLS_HANDSHAKE_DURATION: "kestrel.tls_handshake.duration"; +/** + * Number of connections that are currently upgraded (WebSockets). . + * + * @note The counter only tracks HTTP/1.1 connections. + * + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_UPGRADED_CONNECTIONS: "kestrel.upgraded_connections"; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS: "signalr.server.active_connections"; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_SIGNALR_SERVER_CONNECTION_DURATION: "signalr.server.connection.duration"; +//# sourceMappingURL=stable_metrics.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_metrics.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_metrics.js new file mode 100644 index 0000000..cad2896 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_metrics.js @@ -0,0 +1,326 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * Number of exceptions caught by exception handling middleware. + * + * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions'; +/** + * Number of requests that are currently active on the server that hold a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases'; +/** + * Number of requests that are currently queued, waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests'; +/** + * The time the request spent in a queue waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue'; +/** + * The duration of rate limiting lease held by requests on the server. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration'; +/** + * Number of requests that tried to acquire a rate limiting lease. + * + * @note Requests could be: + * + * - Rejected by global or endpoint rate limiting policies + * - Canceled while waiting for the lease. + * + * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests'; +/** + * Number of requests that were attempted to be matched to an endpoint. + * + * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts'; +/** + * Duration of database client operations. + * + * @note Batch operations **SHOULD** be recorded as a single operation. + */ +export const METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration'; +/** + * The number of .NET assemblies that are currently loaded. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies). + */ +export const METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count'; +/** + * The number of exceptions that have been thrown in managed code. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception). + */ +export const METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions'; +/** + * The number of garbage collections that have occurred since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation. + */ +export const METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections'; +/** + * 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. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes). + */ +export const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated'; +/** + * The heap fragmentation, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes). + */ +export const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size'; +/** + * The managed GC heap size (including fragmentation), as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes). + */ +export const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size'; +/** + * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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. + */ +export const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size'; +/** + * The total amount of time paused in GC since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration). + */ +export const METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time'; +/** + * The amount of time the JIT compiler has spent compiling methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime). + */ +export const METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time'; +/** + * Count of bytes of intermediate language that have been compiled since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes). + */ +export const METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size'; +/** + * The number of times the JIT compiler (re)compiled methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount). + */ +export const METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods'; +/** + * The number of times there was contention when trying to acquire a monitor lock since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount). + */ +export const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions'; +/** + * The number of processors available to the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount). + */ +export const METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count'; +/** + * CPU time used by the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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). + */ +export const METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time'; +/** + * The number of bytes of physical memory mapped to the process context. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset). + */ +export const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set'; +/** + * The number of work items that are currently queued to be processed by the thread pool. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount). + */ +export const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length'; +/** + * The number of thread pool threads that currently exist. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount). + */ +export const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count'; +/** + * The number of work items that the thread pool has completed since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount). + */ +export const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count'; +/** + * The number of timer instances that are currently active. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount). + */ +export const METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count'; +/** + * Duration of HTTP client requests. + */ +export const METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration'; +/** + * Duration of HTTP server requests. + */ +export const METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration'; +/** + * Number of classes currently loaded. + */ +export const METRIC_JVM_CLASS_COUNT = 'jvm.class.count'; +/** + * Number of classes loaded since JVM start. + */ +export const METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded'; +/** + * Number of classes unloaded since JVM start. + */ +export const METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded'; +/** + * Number of processors available to the Java virtual machine. + */ +export const METRIC_JVM_CPU_COUNT = 'jvm.cpu.count'; +/** + * Recent CPU utilization for the process as reported by the JVM. + * + * @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()). + */ +export const METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization'; +/** + * CPU time used by the process as reported by the JVM. + */ +export const METRIC_JVM_CPU_TIME = 'jvm.cpu.time'; +/** + * Duration of JVM garbage collection actions. + */ +export const METRIC_JVM_GC_DURATION = 'jvm.gc.duration'; +/** + * Measure of memory committed. + */ +export const METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed'; +/** + * Measure of max obtainable memory. + */ +export const METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit'; +/** + * Measure of memory used. + */ +export const METRIC_JVM_MEMORY_USED = 'jvm.memory.used'; +/** + * Measure of memory used, as measured after the most recent garbage collection event on this pool. + */ +export const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc'; +/** + * Number of executing platform threads. + */ +export const METRIC_JVM_THREAD_COUNT = 'jvm.thread.count'; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections'; +/** + * Number of TLS handshakes that are currently in progress on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes'; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration'; +/** + * Number of connections that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections'; +/** + * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests'; +/** + * Number of connections rejected by the server. + * + * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`. + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections'; +/** + * The duration of TLS handshakes on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration'; +/** + * Number of connections that are currently upgraded (WebSockets). . + * + * @note The counter only tracks HTTP/1.1 connections. + * + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections'; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections'; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +export const METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration'; +//# sourceMappingURL=stable_metrics.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_metrics.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_metrics.js.map new file mode 100644 index 0000000..02c758b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_metrics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stable_metrics.js","sourceRoot":"","sources":["../../src/stable_metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\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 */\nexport const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests' as const;\n\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 */\nexport const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts' as const;\n\n/**\n * Duration of database client operations.\n *\n * @note Batch operations **SHOULD** be recorded as a single operation.\n */\nexport const METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration' as const;\n\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 */\nexport const METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count' as const;\n\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 */\nexport const METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions' as const;\n\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 */\nexport const METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections' as const;\n\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 */\nexport const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated' as const;\n\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 */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size' as const;\n\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 */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size' as const;\n\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 */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size' as const;\n\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 */\nexport const METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time' as const;\n\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 */\nexport const METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time' as const;\n\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 */\nexport const METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size' as const;\n\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 */\nexport const METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods' as const;\n\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 */\nexport const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions' as const;\n\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 */\nexport const METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count' as const;\n\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 */\nexport const METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time' as const;\n\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 */\nexport const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set' as const;\n\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 */\nexport const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length' as const;\n\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 */\nexport const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count' as const;\n\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 */\nexport const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count' as const;\n\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 */\nexport const METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count' as const;\n\n/**\n * Duration of HTTP client requests.\n */\nexport const METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration' as const;\n\n/**\n * Duration of HTTP server requests.\n */\nexport const METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration' as const;\n\n/**\n * Number of classes currently loaded.\n */\nexport const METRIC_JVM_CLASS_COUNT = 'jvm.class.count' as const;\n\n/**\n * Number of classes loaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded' as const;\n\n/**\n * Number of classes unloaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded' as const;\n\n/**\n * Number of processors available to the Java virtual machine.\n */\nexport const METRIC_JVM_CPU_COUNT = 'jvm.cpu.count' as const;\n\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 */\nexport const METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization' as const;\n\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexport const METRIC_JVM_CPU_TIME = 'jvm.cpu.time' as const;\n\n/**\n * Duration of JVM garbage collection actions.\n */\nexport const METRIC_JVM_GC_DURATION = 'jvm.gc.duration' as const;\n\n/**\n * Measure of memory committed.\n */\nexport const METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed' as const;\n\n/**\n * Measure of max obtainable memory.\n */\nexport const METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit' as const;\n\n/**\n * Measure of memory used.\n */\nexport const METRIC_JVM_MEMORY_USED = 'jvm.memory.used' as const;\n\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexport const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc' as const;\n\n/**\n * Number of executing platform threads.\n */\nexport const METRIC_JVM_THREAD_COUNT = 'jvm.thread.count' as const;\n\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 */\nexport const METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections' as const;\n\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 */\nexport const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes' as const;\n\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 */\nexport const METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration' as const;\n\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 */\nexport const METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections' as const;\n\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 */\nexport const METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests' as const;\n\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 */\nexport const METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections' as const;\n\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 */\nexport const METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration' as const;\n\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 */\nexport const METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections' as const;\n\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 */\nexport const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections' as const;\n\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 */\nexport const METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/SemanticAttributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/SemanticAttributes.d.ts new file mode 100644 index 0000000..defad8e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/SemanticAttributes.d.ts @@ -0,0 +1,2664 @@ +/** + * 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). + * + * Note: This may be different from `faas.id` if an alias is involved. + * + * @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}). + */ +export declare const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = "aws.lambda.invoked_arn"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const SEMATTRS_DB_SYSTEM = "db.system"; +/** + * The connection string used to connect to the database. It is recommended to remove embedded credentials. + * + * @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}). + */ +export declare const SEMATTRS_DB_CONNECTION_STRING = "db.connection_string"; +/** + * Username for accessing the database. + * + * @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}). + */ +export declare const SEMATTRS_DB_USER = "db.user"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = "db.jdbc.driver_classname"; +/** + * 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). + * + * Note: In some SQL databases, the database name to be used is called "schema name". + * + * @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}). + */ +export declare const SEMATTRS_DB_NAME = "db.name"; +/** + * The database statement being executed. + * + * Note: The value may be sanitized to exclude sensitive information. + * + * @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}). + */ +export declare const SEMATTRS_DB_STATEMENT = "db.statement"; +/** + * 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. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_OPERATION = "db.operation"; +/** + * 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. + * + * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard). + * + * @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}). + */ +export declare const SEMATTRS_DB_MSSQL_INSTANCE_NAME = "db.mssql.instance_name"; +/** + * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_KEYSPACE = "db.cassandra.keyspace"; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = "db.cassandra.page_size"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = "db.cassandra.consistency_level"; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_TABLE = "db.cassandra.table"; +/** + * Whether or not the query is idempotent. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = "db.cassandra.idempotence"; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = "db.cassandra.speculative_execution_count"; +/** + * The ID of the coordinating node for a query. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = "db.cassandra.coordinator.id"; +/** + * The data center of the coordinating node for a query. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = "db.cassandra.coordinator.dc"; +/** + * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +export declare const SEMATTRS_DB_HBASE_NAMESPACE = "db.hbase.namespace"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_REDIS_DATABASE_INDEX = "db.redis.database_index"; +/** + * The collection being accessed within the database stated in `db.name`. + * + * @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}). + */ +export declare const SEMATTRS_DB_MONGODB_COLLECTION = "db.mongodb.collection"; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_SQL_TABLE = "db.sql.table"; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_TYPE. + */ +export declare const SEMATTRS_EXCEPTION_TYPE = "exception.type"; +/** + * The exception message. + * + * @deprecated Use ATTR_EXCEPTION_MESSAGE. + */ +export declare const SEMATTRS_EXCEPTION_MESSAGE = "exception.message"; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_STACKTRACE. + */ +export declare const SEMATTRS_EXCEPTION_STACKTRACE = "exception.stacktrace"; +/** +* 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. +* +* Note: An exception is considered to have escaped (or left) the scope of a span, +if that span is ended while the exception is still logically "in flight". +This may be actually "in flight" in some languages (e.g. if the exception +is passed to a Context manager's `__exit__` method in Python) but will +usually be caught at the point of recording the exception in most languages. + +It is usually not possible to determine at the point where an exception is thrown +whether it will escape the scope of a span. +However, it is trivial to know that an exception +will escape, if one checks for an active exception just before ending the span, +as done in the [example above](#exception-end-example). + +It follows that an exception may still escape the scope of the span +even if the `exception.escaped` attribute was not set or set to false, +since the event might have been recorded at a time where it was not +clear whether the exception will escape. +* +* @deprecated Use ATTR_EXCEPTION_ESCAPED. +*/ +export declare const SEMATTRS_EXCEPTION_ESCAPED = "exception.escaped"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_TRIGGER = "faas.trigger"; +/** + * The execution ID of the current function execution. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_EXECUTION = "faas.execution"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_COLLECTION = "faas.document.collection"; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_OPERATION = "faas.document.operation"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_TIME = "faas.document.time"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_NAME = "faas.document.name"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_TIME = "faas.time"; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_CRON = "faas.cron"; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_COLDSTART = "faas.coldstart"; +/** + * The name of the invoked function. + * + * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_INVOKED_NAME = "faas.invoked_name"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_INVOKED_PROVIDER = "faas.invoked_provider"; +/** + * The cloud region of the invoked function. + * + * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_INVOKED_REGION = "faas.invoked_region"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const SEMATTRS_NET_TRANSPORT = "net.transport"; +/** + * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6). + * + * @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}). + */ +export declare const SEMATTRS_NET_PEER_IP = "net.peer.ip"; +/** + * Remote port number. + * + * @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}). + */ +export declare const SEMATTRS_NET_PEER_PORT = "net.peer.port"; +/** + * Remote hostname or similar, see note below. + * + * @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}). + */ +export declare const SEMATTRS_NET_PEER_NAME = "net.peer.name"; +/** + * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_IP = "net.host.ip"; +/** + * Like `net.peer.port` but for the host port. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_PORT = "net.host.port"; +/** + * Local hostname or similar, see note below. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_NAME = "net.host.name"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CONNECTION_TYPE = "net.host.connection.type"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = "net.host.connection.subtype"; +/** + * The name of the mobile carrier. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_NAME = "net.host.carrier.name"; +/** + * The mobile carrier country code. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_MCC = "net.host.carrier.mcc"; +/** + * The mobile carrier network code. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_MNC = "net.host.carrier.mnc"; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_ICC = "net.host.carrier.icc"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_PEER_SERVICE = "peer.service"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_ENDUSER_ID = "enduser.id"; +/** + * Actual/assumed role the client is making the request under extracted from token or application security context. + * + * @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}). + */ +export declare const SEMATTRS_ENDUSER_ROLE = "enduser.role"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_ENDUSER_SCOPE = "enduser.scope"; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @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}). + */ +export declare const SEMATTRS_THREAD_ID = "thread.id"; +/** + * Current thread name. + * + * @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}). + */ +export declare const SEMATTRS_THREAD_NAME = "thread.name"; +/** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + * + * @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}). + */ +export declare const SEMATTRS_CODE_FUNCTION = "code.function"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_CODE_NAMESPACE = "code.namespace"; +/** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + * + * @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}). + */ +export declare const SEMATTRS_CODE_FILEPATH = "code.filepath"; +/** + * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + * + * @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}). + */ +export declare const SEMATTRS_CODE_LINENO = "code.lineno"; +/** + * HTTP request method. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_METHOD = "http.method"; +/** + * 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. + * + * 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/`. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_URL = "http.url"; +/** + * The full request target as passed in a HTTP request line or equivalent. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_TARGET = "http.target"; +/** + * 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. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_HOST = "http.host"; +/** + * The URI scheme identifying the used protocol. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_SCHEME = "http.scheme"; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @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}). + */ +export declare const SEMATTRS_HTTP_STATUS_CODE = "http.status_code"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_FLAVOR = "http.flavor"; +/** + * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_USER_AGENT = "http.user_agent"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = "http.request_content_length"; +/** + * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = "http.request_content_length_uncompressed"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = "http.response_content_length"; +/** + * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = "http.response_content_length_uncompressed"; +/** + * 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). + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_SERVER_NAME = "http.server_name"; +/** + * The matched route (path template). + * + * @deprecated Use ATTR_HTTP_ROUTE. + */ +export declare const SEMATTRS_HTTP_ROUTE = "http.route"; +/** +* 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)). +* +* Note: This is not necessarily the same as `net.peer.ip`, which would +identify the network-level peer, which may be a proxy. + +This attribute should be set when a source of information different +from the one used for `net.peer.ip`, is available even if that other +source just confirms the same value as `net.peer.ip`. +Rationale: For `net.peer.ip`, one typically does not know if it +comes from a proxy, reverse proxy, or the actual client. Setting +`http.client_ip` when it's the same as `net.peer.ip` means that +one is at least somewhat confident that the address is not that of +the closest proxy. +* +* @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}). +*/ +export declare const SEMATTRS_HTTP_CLIENT_IP = "http.client_ip"; +/** + * The keys in the `RequestItems` object field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = "aws.dynamodb.table_names"; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = "aws.dynamodb.consumed_capacity"; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = "aws.dynamodb.item_collection_metrics"; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = "aws.dynamodb.provisioned_read_capacity"; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = "aws.dynamodb.provisioned_write_capacity"; +/** + * The value of the `ConsistentRead` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = "aws.dynamodb.consistent_read"; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_PROJECTION = "aws.dynamodb.projection"; +/** + * The value of the `Limit` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_LIMIT = "aws.dynamodb.limit"; +/** + * The value of the `AttributesToGet` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = "aws.dynamodb.attributes_to_get"; +/** + * The value of the `IndexName` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = "aws.dynamodb.index_name"; +/** + * The value of the `Select` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SELECT = "aws.dynamodb.select"; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = "aws.dynamodb.global_secondary_indexes"; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = "aws.dynamodb.local_secondary_indexes"; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = "aws.dynamodb.exclusive_start_table"; +/** + * The the number of items in the `TableNames` response parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = "aws.dynamodb.table_count"; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = "aws.dynamodb.scan_forward"; +/** + * The value of the `Segment` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SEGMENT = "aws.dynamodb.segment"; +/** + * The value of the `TotalSegments` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = "aws.dynamodb.total_segments"; +/** + * The value of the `Count` response parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_COUNT = "aws.dynamodb.count"; +/** + * The value of the `ScannedCount` response parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = "aws.dynamodb.scanned_count"; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = "aws.dynamodb.attribute_definitions"; +/** + * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = "aws.dynamodb.global_secondary_index_updates"; +/** + * A string identifying the messaging system. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_SYSTEM = "messaging.system"; +/** + * The message destination name. This might be equal to the span name but is required nevertheless. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_DESTINATION = "messaging.destination"; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const SEMATTRS_MESSAGING_DESTINATION_KIND = "messaging.destination_kind"; +/** + * A boolean that is true if the message destination is temporary. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_TEMP_DESTINATION = "messaging.temp_destination"; +/** + * The name of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME. + */ +export declare const SEMATTRS_MESSAGING_PROTOCOL = "messaging.protocol"; +/** + * The version of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION. + */ +export declare const SEMATTRS_MESSAGING_PROTOCOL_VERSION = "messaging.protocol_version"; +/** + * Connection string. + * + * @deprecated Removed in semconv v1.17.0. + */ +export declare const SEMATTRS_MESSAGING_URL = "messaging.url"; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_MESSAGE_ID = "messaging.message_id"; +/** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_CONVERSATION_ID = "messaging.conversation_id"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = "messaging.message_payload_size_bytes"; +/** + * The compressed size of the message payload in bytes. + * + * @deprecated Removed in semconv v1.22.0. + */ +export declare const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = "messaging.message_payload_compressed_size_bytes"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_OPERATION = "messaging.operation"; +/** + * 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. + * + * @deprecated Removed in semconv v1.21.0. + */ +export declare const SEMATTRS_MESSAGING_CONSUMER_ID = "messaging.consumer_id"; +/** + * RabbitMQ message routing key. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = "messaging.rabbitmq.routing_key"; +/** + * 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. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = "messaging.kafka.message_key"; +/** + * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = "messaging.kafka.consumer_group"; +/** + * Client Id for the Consumer or Producer that is handling the message. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = "messaging.kafka.client_id"; +/** + * Partition the message is sent to. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_PARTITION = "messaging.kafka.partition"; +/** + * A boolean that is true if the message is a tombstone. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = "messaging.kafka.tombstone"; +/** + * A string identifying the remoting system. + * + * @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}). + */ +export declare const SEMATTRS_RPC_SYSTEM = "rpc.system"; +/** + * The full (logical) name of the service being called, including its package name, if applicable. + * + * 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). + * + * @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}). + */ +export declare const SEMATTRS_RPC_SERVICE = "rpc.service"; +/** + * The name of the (logical) method being called, must be equal to the $method part in the span name. + * + * 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). + * + * @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}). + */ +export declare const SEMATTRS_RPC_METHOD = "rpc.method"; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const SEMATTRS_RPC_GRPC_STATUS_CODE = "rpc.grpc.status_code"; +/** + * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_VERSION = "rpc.jsonrpc.version"; +/** + * `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. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_REQUEST_ID = "rpc.jsonrpc.request_id"; +/** + * `error.code` property of response if it is an error response. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_ERROR_CODE = "rpc.jsonrpc.error_code"; +/** + * `error.message` property of response if it is an error response. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = "rpc.jsonrpc.error_message"; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_TYPE = "message.type"; +/** + * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * Note: This way we guarantee that the values will be consistent between different implementations. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_ID = "message.id"; +/** + * Compressed size of the message in bytes. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_COMPRESSED_SIZE = "message.compressed_size"; +/** + * Uncompressed size of the message in bytes. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = "message.uncompressed_size"; +/** + * Definition of available values for SemanticAttributes + * This type is used for backward compatibility, you should use the individual exported + * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference + * to a constant map value will result in all strings being included into your bundle. + * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification. + */ +export type SemanticAttributes = { + /** + * 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). + * + * Note: This may be different from `faas.id` if an alias is involved. + */ + AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn'; + /** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + */ + DB_SYSTEM: 'db.system'; + /** + * The connection string used to connect to the database. It is recommended to remove embedded credentials. + */ + DB_CONNECTION_STRING: 'db.connection_string'; + /** + * Username for accessing the database. + */ + DB_USER: 'db.user'; + /** + * 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. + */ + DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname'; + /** + * 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). + * + * Note: In some SQL databases, the database name to be used is called "schema name". + */ + DB_NAME: 'db.name'; + /** + * The database statement being executed. + * + * Note: The value may be sanitized to exclude sensitive information. + */ + DB_STATEMENT: 'db.statement'; + /** + * 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. + * + * 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. + */ + DB_OPERATION: 'db.operation'; + /** + * 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. + * + * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard). + */ + DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name'; + /** + * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute. + */ + DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace'; + /** + * The fetch size used for paging, i.e. how many rows will be returned at once. + */ + DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size'; + /** + * 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). + */ + DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level'; + /** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + */ + DB_CASSANDRA_TABLE: 'db.cassandra.table'; + /** + * Whether or not the query is idempotent. + */ + DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence'; + /** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + */ + DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count'; + /** + * The ID of the coordinating node for a query. + */ + DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id'; + /** + * The data center of the coordinating node for a query. + */ + DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc'; + /** + * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute. + */ + DB_HBASE_NAMESPACE: 'db.hbase.namespace'; + /** + * 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. + */ + DB_REDIS_DATABASE_INDEX: 'db.redis.database_index'; + /** + * The collection being accessed within the database stated in `db.name`. + */ + DB_MONGODB_COLLECTION: 'db.mongodb.collection'; + /** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + */ + DB_SQL_TABLE: 'db.sql.table'; + /** + * 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. + */ + EXCEPTION_TYPE: 'exception.type'; + /** + * The exception message. + */ + EXCEPTION_MESSAGE: 'exception.message'; + /** + * 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. + */ + EXCEPTION_STACKTRACE: 'exception.stacktrace'; + /** + * 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. + * + * Note: An exception is considered to have escaped (or left) the scope of a span, + if that span is ended while the exception is still logically "in flight". + This may be actually "in flight" in some languages (e.g. if the exception + is passed to a Context manager's `__exit__` method in Python) but will + usually be caught at the point of recording the exception in most languages. + + It is usually not possible to determine at the point where an exception is thrown + whether it will escape the scope of a span. + However, it is trivial to know that an exception + will escape, if one checks for an active exception just before ending the span, + as done in the [example above](#exception-end-example). + + It follows that an exception may still escape the scope of the span + even if the `exception.escaped` attribute was not set or set to false, + since the event might have been recorded at a time where it was not + clear whether the exception will escape. + */ + EXCEPTION_ESCAPED: 'exception.escaped'; + /** + * Type of the trigger on which the function is executed. + */ + FAAS_TRIGGER: 'faas.trigger'; + /** + * The execution ID of the current function execution. + */ + FAAS_EXECUTION: 'faas.execution'; + /** + * 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. + */ + FAAS_DOCUMENT_COLLECTION: 'faas.document.collection'; + /** + * Describes the type of the operation that was performed on the data. + */ + FAAS_DOCUMENT_OPERATION: 'faas.document.operation'; + /** + * 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). + */ + FAAS_DOCUMENT_TIME: 'faas.document.time'; + /** + * 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. + */ + FAAS_DOCUMENT_NAME: 'faas.document.name'; + /** + * 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). + */ + FAAS_TIME: 'faas.time'; + /** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + */ + FAAS_CRON: 'faas.cron'; + /** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + */ + FAAS_COLDSTART: 'faas.coldstart'; + /** + * The name of the invoked function. + * + * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function. + */ + FAAS_INVOKED_NAME: 'faas.invoked_name'; + /** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + */ + FAAS_INVOKED_PROVIDER: 'faas.invoked_provider'; + /** + * The cloud region of the invoked function. + * + * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function. + */ + FAAS_INVOKED_REGION: 'faas.invoked_region'; + /** + * Transport protocol used. See note below. + */ + NET_TRANSPORT: 'net.transport'; + /** + * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6). + */ + NET_PEER_IP: 'net.peer.ip'; + /** + * Remote port number. + */ + NET_PEER_PORT: 'net.peer.port'; + /** + * Remote hostname or similar, see note below. + */ + NET_PEER_NAME: 'net.peer.name'; + /** + * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host. + */ + NET_HOST_IP: 'net.host.ip'; + /** + * Like `net.peer.port` but for the host port. + */ + NET_HOST_PORT: 'net.host.port'; + /** + * Local hostname or similar, see note below. + */ + NET_HOST_NAME: 'net.host.name'; + /** + * The internet connection type currently being used by the host. + */ + NET_HOST_CONNECTION_TYPE: 'net.host.connection.type'; + /** + * 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. + */ + NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype'; + /** + * The name of the mobile carrier. + */ + NET_HOST_CARRIER_NAME: 'net.host.carrier.name'; + /** + * The mobile carrier country code. + */ + NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc'; + /** + * The mobile carrier network code. + */ + NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc'; + /** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + */ + NET_HOST_CARRIER_ICC: 'net.host.carrier.icc'; + /** + * 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. + */ + PEER_SERVICE: 'peer.service'; + /** + * 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. + */ + ENDUSER_ID: 'enduser.id'; + /** + * Actual/assumed role the client is making the request under extracted from token or application security context. + */ + ENDUSER_ROLE: 'enduser.role'; + /** + * 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). + */ + ENDUSER_SCOPE: 'enduser.scope'; + /** + * Current "managed" thread ID (as opposed to OS thread ID). + */ + THREAD_ID: 'thread.id'; + /** + * Current thread name. + */ + THREAD_NAME: 'thread.name'; + /** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + */ + CODE_FUNCTION: 'code.function'; + /** + * 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. + */ + CODE_NAMESPACE: 'code.namespace'; + /** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + */ + CODE_FILEPATH: 'code.filepath'; + /** + * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + */ + CODE_LINENO: 'code.lineno'; + /** + * HTTP request method. + */ + HTTP_METHOD: 'http.method'; + /** + * 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. + * + * 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/`. + */ + HTTP_URL: 'http.url'; + /** + * The full request target as passed in a HTTP request line or equivalent. + */ + HTTP_TARGET: 'http.target'; + /** + * 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. + * + * 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. + */ + HTTP_HOST: 'http.host'; + /** + * The URI scheme identifying the used protocol. + */ + HTTP_SCHEME: 'http.scheme'; + /** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + */ + HTTP_STATUS_CODE: 'http.status_code'; + /** + * Kind of HTTP protocol used. + * + * 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. + */ + HTTP_FLAVOR: 'http.flavor'; + /** + * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client. + */ + HTTP_USER_AGENT: 'http.user_agent'; + /** + * 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. + */ + HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length'; + /** + * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used. + */ + HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed'; + /** + * 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. + */ + HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length'; + /** + * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used. + */ + HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed'; + /** + * 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). + * + * 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. + */ + HTTP_SERVER_NAME: 'http.server_name'; + /** + * The matched route (path template). + */ + HTTP_ROUTE: 'http.route'; + /** + * 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)). + * + * Note: This is not necessarily the same as `net.peer.ip`, which would + identify the network-level peer, which may be a proxy. + + This attribute should be set when a source of information different + from the one used for `net.peer.ip`, is available even if that other + source just confirms the same value as `net.peer.ip`. + Rationale: For `net.peer.ip`, one typically does not know if it + comes from a proxy, reverse proxy, or the actual client. Setting + `http.client_ip` when it's the same as `net.peer.ip` means that + one is at least somewhat confident that the address is not that of + the closest proxy. + */ + HTTP_CLIENT_IP: 'http.client_ip'; + /** + * The keys in the `RequestItems` object field. + */ + AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names'; + /** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + */ + AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity'; + /** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + */ + AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics'; + /** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + */ + AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity'; + /** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + */ + AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity'; + /** + * The value of the `ConsistentRead` request parameter. + */ + AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read'; + /** + * The value of the `ProjectionExpression` request parameter. + */ + AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection'; + /** + * The value of the `Limit` request parameter. + */ + AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit'; + /** + * The value of the `AttributesToGet` request parameter. + */ + AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get'; + /** + * The value of the `IndexName` request parameter. + */ + AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name'; + /** + * The value of the `Select` request parameter. + */ + AWS_DYNAMODB_SELECT: 'aws.dynamodb.select'; + /** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. + */ + AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes'; + /** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + */ + AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes'; + /** + * The value of the `ExclusiveStartTableName` request parameter. + */ + AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table'; + /** + * The the number of items in the `TableNames` response parameter. + */ + AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count'; + /** + * The value of the `ScanIndexForward` request parameter. + */ + AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward'; + /** + * The value of the `Segment` request parameter. + */ + AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment'; + /** + * The value of the `TotalSegments` request parameter. + */ + AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments'; + /** + * The value of the `Count` response parameter. + */ + AWS_DYNAMODB_COUNT: 'aws.dynamodb.count'; + /** + * The value of the `ScannedCount` response parameter. + */ + AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count'; + /** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + */ + AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions'; + /** + * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. + */ + AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates'; + /** + * A string identifying the messaging system. + */ + MESSAGING_SYSTEM: 'messaging.system'; + /** + * The message destination name. This might be equal to the span name but is required nevertheless. + */ + MESSAGING_DESTINATION: 'messaging.destination'; + /** + * The kind of message destination. + */ + MESSAGING_DESTINATION_KIND: 'messaging.destination_kind'; + /** + * A boolean that is true if the message destination is temporary. + */ + MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination'; + /** + * The name of the transport protocol. + */ + MESSAGING_PROTOCOL: 'messaging.protocol'; + /** + * The version of the transport protocol. + */ + MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version'; + /** + * Connection string. + */ + MESSAGING_URL: 'messaging.url'; + /** + * A value used by the messaging system as an identifier for the message, represented as a string. + */ + MESSAGING_MESSAGE_ID: 'messaging.message_id'; + /** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + */ + MESSAGING_CONVERSATION_ID: 'messaging.conversation_id'; + /** + * 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. + */ + MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes'; + /** + * The compressed size of the message payload in bytes. + */ + MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes'; + /** + * 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. + */ + MESSAGING_OPERATION: 'messaging.operation'; + /** + * 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. + */ + MESSAGING_CONSUMER_ID: 'messaging.consumer_id'; + /** + * RabbitMQ message routing key. + */ + MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key'; + /** + * 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. + * + * 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. + */ + MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key'; + /** + * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. + */ + MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group'; + /** + * Client Id for the Consumer or Producer that is handling the message. + */ + MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id'; + /** + * Partition the message is sent to. + */ + MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition'; + /** + * A boolean that is true if the message is a tombstone. + */ + MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone'; + /** + * A string identifying the remoting system. + */ + RPC_SYSTEM: 'rpc.system'; + /** + * The full (logical) name of the service being called, including its package name, if applicable. + * + * 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). + */ + RPC_SERVICE: 'rpc.service'; + /** + * The name of the (logical) method being called, must be equal to the $method part in the span name. + * + * 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). + */ + RPC_METHOD: 'rpc.method'; + /** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + */ + RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code'; + /** + * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted. + */ + RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version'; + /** + * `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. + */ + RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id'; + /** + * `error.code` property of response if it is an error response. + */ + RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code'; + /** + * `error.message` property of response if it is an error response. + */ + RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message'; + /** + * Whether this is a received or sent message. + */ + MESSAGE_TYPE: 'message.type'; + /** + * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * Note: This way we guarantee that the values will be consistent between different implementations. + */ + MESSAGE_ID: 'message.id'; + /** + * Compressed size of the message in bytes. + */ + MESSAGE_COMPRESSED_SIZE: 'message.compressed_size'; + /** + * Uncompressed size of the message in bytes. + */ + MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size'; +}; +/** + * Create exported Value Map for SemanticAttributes values + * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification + */ +export declare const SemanticAttributes: SemanticAttributes; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_OTHER_SQL = "other_sql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MSSQL = "mssql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MYSQL = "mysql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_ORACLE = "oracle"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_DB2 = "db2"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_POSTGRESQL = "postgresql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_REDSHIFT = "redshift"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HIVE = "hive"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_CLOUDSCAPE = "cloudscape"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HSQLDB = "hsqldb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_PROGRESS = "progress"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MAXDB = "maxdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HANADB = "hanadb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INGRES = "ingres"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_FIRSTSQL = "firstsql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_EDB = "edb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_CACHE = "cache"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_ADABAS = "adabas"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_FIREBIRD = "firebird"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_DERBY = "derby"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_FILEMAKER = "filemaker"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INFORMIX = "informix"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INSTANTDB = "instantdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INTERBASE = "interbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MARIADB = "mariadb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_NETEZZA = "netezza"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_PERVASIVE = "pervasive"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_POINTBASE = "pointbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_SQLITE = "sqlite"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_SYBASE = "sybase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_TERADATA = "teradata"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_VERTICA = "vertica"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_H2 = "h2"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COLDFUSION = "coldfusion"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_CASSANDRA = "cassandra"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HBASE = "hbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MONGODB = "mongodb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_REDIS = "redis"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COUCHBASE = "couchbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COUCHDB = "couchdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COSMOSDB = "cosmosdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_DYNAMODB = "dynamodb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_NEO4J = "neo4j"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_GEODE = "geode"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_ELASTICSEARCH = "elasticsearch"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MEMCACHED = "memcached"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COCKROACHDB = "cockroachdb"; +/** + * Identifies the Values for DbSystemValues enum definition + * + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification. + */ +export type DbSystemValues = { + /** Some other SQL database. Fallback only. See notes. */ + OTHER_SQL: 'other_sql'; + /** Microsoft SQL Server. */ + MSSQL: 'mssql'; + /** MySQL. */ + MYSQL: 'mysql'; + /** Oracle Database. */ + ORACLE: 'oracle'; + /** IBM Db2. */ + DB2: 'db2'; + /** PostgreSQL. */ + POSTGRESQL: 'postgresql'; + /** Amazon Redshift. */ + REDSHIFT: 'redshift'; + /** Apache Hive. */ + HIVE: 'hive'; + /** Cloudscape. */ + CLOUDSCAPE: 'cloudscape'; + /** HyperSQL DataBase. */ + HSQLDB: 'hsqldb'; + /** Progress Database. */ + PROGRESS: 'progress'; + /** SAP MaxDB. */ + MAXDB: 'maxdb'; + /** SAP HANA. */ + HANADB: 'hanadb'; + /** Ingres. */ + INGRES: 'ingres'; + /** FirstSQL. */ + FIRSTSQL: 'firstsql'; + /** EnterpriseDB. */ + EDB: 'edb'; + /** InterSystems Caché. */ + CACHE: 'cache'; + /** Adabas (Adaptable Database System). */ + ADABAS: 'adabas'; + /** Firebird. */ + FIREBIRD: 'firebird'; + /** Apache Derby. */ + DERBY: 'derby'; + /** FileMaker. */ + FILEMAKER: 'filemaker'; + /** Informix. */ + INFORMIX: 'informix'; + /** InstantDB. */ + INSTANTDB: 'instantdb'; + /** InterBase. */ + INTERBASE: 'interbase'; + /** MariaDB. */ + MARIADB: 'mariadb'; + /** Netezza. */ + NETEZZA: 'netezza'; + /** Pervasive PSQL. */ + PERVASIVE: 'pervasive'; + /** PointBase. */ + POINTBASE: 'pointbase'; + /** SQLite. */ + SQLITE: 'sqlite'; + /** Sybase. */ + SYBASE: 'sybase'; + /** Teradata. */ + TERADATA: 'teradata'; + /** Vertica. */ + VERTICA: 'vertica'; + /** H2. */ + H2: 'h2'; + /** ColdFusion IMQ. */ + COLDFUSION: 'coldfusion'; + /** Apache Cassandra. */ + CASSANDRA: 'cassandra'; + /** Apache HBase. */ + HBASE: 'hbase'; + /** MongoDB. */ + MONGODB: 'mongodb'; + /** Redis. */ + REDIS: 'redis'; + /** Couchbase. */ + COUCHBASE: 'couchbase'; + /** CouchDB. */ + COUCHDB: 'couchdb'; + /** Microsoft Azure Cosmos DB. */ + COSMOSDB: 'cosmosdb'; + /** Amazon DynamoDB. */ + DYNAMODB: 'dynamodb'; + /** Neo4j. */ + NEO4J: 'neo4j'; + /** Apache Geode. */ + GEODE: 'geode'; + /** Elasticsearch. */ + ELASTICSEARCH: 'elasticsearch'; + /** Memcached. */ + MEMCACHED: 'memcached'; + /** CockroachDB. */ + COCKROACHDB: 'cockroachdb'; +}; +/** + * The constant map of values for DbSystemValues. + * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification. + */ +export declare const DbSystemValues: DbSystemValues; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_ALL = "all"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = "each_quorum"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = "quorum"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = "local_quorum"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_ONE = "one"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_TWO = "two"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_THREE = "three"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = "local_one"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_ANY = "any"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = "serial"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = "local_serial"; +/** + * Identifies the Values for DbCassandraConsistencyLevelValues enum definition + * + * 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). + * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification. + */ +export type DbCassandraConsistencyLevelValues = { + /** all. */ + ALL: 'all'; + /** each_quorum. */ + EACH_QUORUM: 'each_quorum'; + /** quorum. */ + QUORUM: 'quorum'; + /** local_quorum. */ + LOCAL_QUORUM: 'local_quorum'; + /** one. */ + ONE: 'one'; + /** two. */ + TWO: 'two'; + /** three. */ + THREE: 'three'; + /** local_one. */ + LOCAL_ONE: 'local_one'; + /** any. */ + ANY: 'any'; + /** serial. */ + SERIAL: 'serial'; + /** local_serial. */ + LOCAL_SERIAL: 'local_serial'; +}; +/** + * The constant map of values for DbCassandraConsistencyLevelValues. + * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification. + */ +export declare const DbCassandraConsistencyLevelValues: DbCassandraConsistencyLevelValues; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_DATASOURCE = "datasource"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_HTTP = "http"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_PUBSUB = "pubsub"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_TIMER = "timer"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_OTHER = "other"; +/** + * Identifies the Values for FaasTriggerValues enum definition + * + * Type of the trigger on which the function is executed. + * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification. + */ +export type FaasTriggerValues = { + /** A response to some data source operation such as a database or filesystem read/write. */ + DATASOURCE: 'datasource'; + /** To provide an answer to an inbound HTTP request. */ + HTTP: 'http'; + /** A function is set to be executed when messages are sent to a messaging system. */ + PUBSUB: 'pubsub'; + /** A function is scheduled to be executed regularly. */ + TIMER: 'timer'; + /** If none of the others apply. */ + OTHER: 'other'; +}; +/** + * The constant map of values for FaasTriggerValues. + * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification. + */ +export declare const FaasTriggerValues: FaasTriggerValues; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const FAASDOCUMENTOPERATIONVALUES_INSERT = "insert"; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const FAASDOCUMENTOPERATIONVALUES_EDIT = "edit"; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const FAASDOCUMENTOPERATIONVALUES_DELETE = "delete"; +/** + * Identifies the Values for FaasDocumentOperationValues enum definition + * + * Describes the type of the operation that was performed on the data. + * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification. + */ +export type FaasDocumentOperationValues = { + /** When a new object is created. */ + INSERT: 'insert'; + /** When an object is modified. */ + EDIT: 'edit'; + /** When an object is deleted. */ + DELETE: 'delete'; +}; +/** + * The constant map of values for FaasDocumentOperationValues. + * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification. + */ +export declare const FaasDocumentOperationValues: FaasDocumentOperationValues; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_AWS = "aws"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_AZURE = "azure"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_GCP = "gcp"; +/** + * Identifies the Values for FaasInvokedProviderValues enum definition + * + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification. + */ +export type FaasInvokedProviderValues = { + /** Alibaba Cloud. */ + ALIBABA_CLOUD: 'alibaba_cloud'; + /** Amazon Web Services. */ + AWS: 'aws'; + /** Microsoft Azure. */ + AZURE: 'azure'; + /** Google Cloud Platform. */ + GCP: 'gcp'; +}; +/** + * The constant map of values for FaasInvokedProviderValues. + * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification. + */ +export declare const FaasInvokedProviderValues: FaasInvokedProviderValues; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_IP_TCP = "ip_tcp"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_IP_UDP = "ip_udp"; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +export declare const NETTRANSPORTVALUES_IP = "ip"; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +export declare const NETTRANSPORTVALUES_UNIX = "unix"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_PIPE = "pipe"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_INPROC = "inproc"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_OTHER = "other"; +/** + * Identifies the Values for NetTransportValues enum definition + * + * Transport protocol used. See note below. + * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification. + */ +export type NetTransportValues = { + /** ip_tcp. */ + IP_TCP: 'ip_tcp'; + /** ip_udp. */ + IP_UDP: 'ip_udp'; + /** Another IP-based protocol. */ + IP: 'ip'; + /** Unix Domain socket. See below. */ + UNIX: 'unix'; + /** Named or anonymous pipe. See note below. */ + PIPE: 'pipe'; + /** In-process communication. */ + INPROC: 'inproc'; + /** Something else (non IP-based). */ + OTHER: 'other'; +}; +/** + * The constant map of values for NetTransportValues. + * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification. + */ +export declare const NetTransportValues: NetTransportValues; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_WIFI = "wifi"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_WIRED = "wired"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_CELL = "cell"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = "unavailable"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = "unknown"; +/** + * Identifies the Values for NetHostConnectionTypeValues enum definition + * + * The internet connection type currently being used by the host. + * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification. + */ +export type NetHostConnectionTypeValues = { + /** wifi. */ + WIFI: 'wifi'; + /** wired. */ + WIRED: 'wired'; + /** cell. */ + CELL: 'cell'; + /** unavailable. */ + UNAVAILABLE: 'unavailable'; + /** unknown. */ + UNKNOWN: 'unknown'; +}; +/** + * The constant map of values for NetHostConnectionTypeValues. + * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification. + */ +export declare const NetHostConnectionTypeValues: NetHostConnectionTypeValues; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = "gprs"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = "edge"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = "umts"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = "cdma"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = "evdo_0"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = "evdo_a"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = "cdma2000_1xrtt"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = "hsdpa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = "hsupa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = "hspa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = "iden"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = "evdo_b"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_LTE = "lte"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = "ehrpd"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = "hspap"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_GSM = "gsm"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = "td_scdma"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = "iwlan"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_NR = "nr"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = "nrnsa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = "lte_ca"; +/** + * Identifies the Values for NetHostConnectionSubtypeValues enum definition + * + * 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. + * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification. + */ +export type NetHostConnectionSubtypeValues = { + /** GPRS. */ + GPRS: 'gprs'; + /** EDGE. */ + EDGE: 'edge'; + /** UMTS. */ + UMTS: 'umts'; + /** CDMA. */ + CDMA: 'cdma'; + /** EVDO Rel. 0. */ + EVDO_0: 'evdo_0'; + /** EVDO Rev. A. */ + EVDO_A: 'evdo_a'; + /** CDMA2000 1XRTT. */ + CDMA2000_1XRTT: 'cdma2000_1xrtt'; + /** HSDPA. */ + HSDPA: 'hsdpa'; + /** HSUPA. */ + HSUPA: 'hsupa'; + /** HSPA. */ + HSPA: 'hspa'; + /** IDEN. */ + IDEN: 'iden'; + /** EVDO Rev. B. */ + EVDO_B: 'evdo_b'; + /** LTE. */ + LTE: 'lte'; + /** EHRPD. */ + EHRPD: 'ehrpd'; + /** HSPAP. */ + HSPAP: 'hspap'; + /** GSM. */ + GSM: 'gsm'; + /** TD-SCDMA. */ + TD_SCDMA: 'td_scdma'; + /** IWLAN. */ + IWLAN: 'iwlan'; + /** 5G NR (New Radio). */ + NR: 'nr'; + /** 5G NRNSA (New Radio Non-Standalone). */ + NRNSA: 'nrnsa'; + /** LTE CA. */ + LTE_CA: 'lte_ca'; +}; +/** + * The constant map of values for NetHostConnectionSubtypeValues. + * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification. + */ +export declare const NetHostConnectionSubtypeValues: NetHostConnectionSubtypeValues; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_HTTP_1_0 = "1.0"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_HTTP_1_1 = "1.1"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_HTTP_2_0 = "2.0"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_SPDY = "SPDY"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_QUIC = "QUIC"; +/** + * Identifies the Values for HttpFlavorValues enum definition + * + * Kind of HTTP protocol used. + * + * 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. + * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification. + */ +export type HttpFlavorValues = { + /** HTTP 1.0. */ + HTTP_1_0: '1.0'; + /** HTTP 1.1. */ + HTTP_1_1: '1.1'; + /** HTTP 2. */ + HTTP_2_0: '2.0'; + /** SPDY protocol. */ + SPDY: 'SPDY'; + /** QUIC protocol. */ + QUIC: 'QUIC'; +}; +/** + * The constant map of values for HttpFlavorValues. + * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification. + */ +export declare const HttpFlavorValues: HttpFlavorValues; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const MESSAGINGDESTINATIONKINDVALUES_QUEUE = "queue"; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const MESSAGINGDESTINATIONKINDVALUES_TOPIC = "topic"; +/** + * Identifies the Values for MessagingDestinationKindValues enum definition + * + * The kind of message destination. + * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification. + */ +export type MessagingDestinationKindValues = { + /** A message sent to a queue. */ + QUEUE: 'queue'; + /** A message sent to a topic. */ + TOPIC: 'topic'; +}; +/** + * The constant map of values for MessagingDestinationKindValues. + * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification. + */ +export declare const MessagingDestinationKindValues: MessagingDestinationKindValues; +/** + * 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. + * + * @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}). + */ +export declare const MESSAGINGOPERATIONVALUES_RECEIVE = "receive"; +/** + * 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. + * + * @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}). + */ +export declare const MESSAGINGOPERATIONVALUES_PROCESS = "process"; +/** + * Identifies the Values for MessagingOperationValues enum definition + * + * 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. + * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification. + */ +export type MessagingOperationValues = { + /** receive. */ + RECEIVE: 'receive'; + /** process. */ + PROCESS: 'process'; +}; +/** + * The constant map of values for MessagingOperationValues. + * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification. + */ +export declare const MessagingOperationValues: MessagingOperationValues; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_OK = 0; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_CANCELLED = 1; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_ABORTED = 10; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_INTERNAL = 13; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16; +/** + * Identifies the Values for RpcGrpcStatusCodeValues enum definition + * + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification. + */ +export type RpcGrpcStatusCodeValues = { + /** OK. */ + OK: 0; + /** CANCELLED. */ + CANCELLED: 1; + /** UNKNOWN. */ + UNKNOWN: 2; + /** INVALID_ARGUMENT. */ + INVALID_ARGUMENT: 3; + /** DEADLINE_EXCEEDED. */ + DEADLINE_EXCEEDED: 4; + /** NOT_FOUND. */ + NOT_FOUND: 5; + /** ALREADY_EXISTS. */ + ALREADY_EXISTS: 6; + /** PERMISSION_DENIED. */ + PERMISSION_DENIED: 7; + /** RESOURCE_EXHAUSTED. */ + RESOURCE_EXHAUSTED: 8; + /** FAILED_PRECONDITION. */ + FAILED_PRECONDITION: 9; + /** ABORTED. */ + ABORTED: 10; + /** OUT_OF_RANGE. */ + OUT_OF_RANGE: 11; + /** UNIMPLEMENTED. */ + UNIMPLEMENTED: 12; + /** INTERNAL. */ + INTERNAL: 13; + /** UNAVAILABLE. */ + UNAVAILABLE: 14; + /** DATA_LOSS. */ + DATA_LOSS: 15; + /** UNAUTHENTICATED. */ + UNAUTHENTICATED: 16; +}; +/** + * The constant map of values for RpcGrpcStatusCodeValues. + * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification. + */ +export declare const RpcGrpcStatusCodeValues: RpcGrpcStatusCodeValues; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export declare const MESSAGETYPEVALUES_SENT = "SENT"; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export declare const MESSAGETYPEVALUES_RECEIVED = "RECEIVED"; +/** + * Identifies the Values for MessageTypeValues enum definition + * + * Whether this is a received or sent message. + * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification. + */ +export type MessageTypeValues = { + /** sent. */ + SENT: 'SENT'; + /** received. */ + RECEIVED: 'RECEIVED'; +}; +/** + * The constant map of values for MessageTypeValues. + * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification. + */ +export declare const MessageTypeValues: MessageTypeValues; +//# sourceMappingURL=SemanticAttributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/SemanticAttributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/SemanticAttributes.js new file mode 100644 index 0000000..95eaeae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/SemanticAttributes.js @@ -0,0 +1,2371 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createConstMap } from '../internal/utils'; +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------------------------- +// Constant values for SemanticAttributes +//---------------------------------------------------------------------------------------------------------- +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn'; +const TMP_DB_SYSTEM = 'db.system'; +const TMP_DB_CONNECTION_STRING = 'db.connection_string'; +const TMP_DB_USER = 'db.user'; +const TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname'; +const TMP_DB_NAME = 'db.name'; +const TMP_DB_STATEMENT = 'db.statement'; +const TMP_DB_OPERATION = 'db.operation'; +const TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name'; +const TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace'; +const TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size'; +const TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level'; +const TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table'; +const TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence'; +const TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count'; +const TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id'; +const TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc'; +const TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace'; +const TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index'; +const TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection'; +const TMP_DB_SQL_TABLE = 'db.sql.table'; +const TMP_EXCEPTION_TYPE = 'exception.type'; +const TMP_EXCEPTION_MESSAGE = 'exception.message'; +const TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace'; +const TMP_EXCEPTION_ESCAPED = 'exception.escaped'; +const TMP_FAAS_TRIGGER = 'faas.trigger'; +const TMP_FAAS_EXECUTION = 'faas.execution'; +const TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection'; +const TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation'; +const TMP_FAAS_DOCUMENT_TIME = 'faas.document.time'; +const TMP_FAAS_DOCUMENT_NAME = 'faas.document.name'; +const TMP_FAAS_TIME = 'faas.time'; +const TMP_FAAS_CRON = 'faas.cron'; +const TMP_FAAS_COLDSTART = 'faas.coldstart'; +const TMP_FAAS_INVOKED_NAME = 'faas.invoked_name'; +const TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider'; +const TMP_FAAS_INVOKED_REGION = 'faas.invoked_region'; +const TMP_NET_TRANSPORT = 'net.transport'; +const TMP_NET_PEER_IP = 'net.peer.ip'; +const TMP_NET_PEER_PORT = 'net.peer.port'; +const TMP_NET_PEER_NAME = 'net.peer.name'; +const TMP_NET_HOST_IP = 'net.host.ip'; +const TMP_NET_HOST_PORT = 'net.host.port'; +const TMP_NET_HOST_NAME = 'net.host.name'; +const TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type'; +const TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype'; +const TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name'; +const TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc'; +const TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc'; +const TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc'; +const TMP_PEER_SERVICE = 'peer.service'; +const TMP_ENDUSER_ID = 'enduser.id'; +const TMP_ENDUSER_ROLE = 'enduser.role'; +const TMP_ENDUSER_SCOPE = 'enduser.scope'; +const TMP_THREAD_ID = 'thread.id'; +const TMP_THREAD_NAME = 'thread.name'; +const TMP_CODE_FUNCTION = 'code.function'; +const TMP_CODE_NAMESPACE = 'code.namespace'; +const TMP_CODE_FILEPATH = 'code.filepath'; +const TMP_CODE_LINENO = 'code.lineno'; +const TMP_HTTP_METHOD = 'http.method'; +const TMP_HTTP_URL = 'http.url'; +const TMP_HTTP_TARGET = 'http.target'; +const TMP_HTTP_HOST = 'http.host'; +const TMP_HTTP_SCHEME = 'http.scheme'; +const TMP_HTTP_STATUS_CODE = 'http.status_code'; +const TMP_HTTP_FLAVOR = 'http.flavor'; +const TMP_HTTP_USER_AGENT = 'http.user_agent'; +const TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length'; +const TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed'; +const TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length'; +const TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed'; +const TMP_HTTP_SERVER_NAME = 'http.server_name'; +const TMP_HTTP_ROUTE = 'http.route'; +const TMP_HTTP_CLIENT_IP = 'http.client_ip'; +const TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names'; +const TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity'; +const TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics'; +const TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity'; +const TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity'; +const TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read'; +const TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection'; +const TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit'; +const TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get'; +const TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name'; +const TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select'; +const TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes'; +const TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes'; +const TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table'; +const TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count'; +const TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward'; +const TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment'; +const TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments'; +const TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count'; +const TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count'; +const TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions'; +const TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates'; +const TMP_MESSAGING_SYSTEM = 'messaging.system'; +const TMP_MESSAGING_DESTINATION = 'messaging.destination'; +const TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind'; +const TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination'; +const TMP_MESSAGING_PROTOCOL = 'messaging.protocol'; +const TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version'; +const TMP_MESSAGING_URL = 'messaging.url'; +const TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id'; +const TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id'; +const TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = 'messaging.message_payload_size_bytes'; +const TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = 'messaging.message_payload_compressed_size_bytes'; +const TMP_MESSAGING_OPERATION = 'messaging.operation'; +const TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id'; +const TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key'; +const TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key'; +const TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group'; +const TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id'; +const TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition'; +const TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone'; +const TMP_RPC_SYSTEM = 'rpc.system'; +const TMP_RPC_SERVICE = 'rpc.service'; +const TMP_RPC_METHOD = 'rpc.method'; +const TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code'; +const TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version'; +const TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id'; +const TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code'; +const TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message'; +const TMP_MESSAGE_TYPE = 'message.type'; +const TMP_MESSAGE_ID = 'message.id'; +const TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size'; +const TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size'; +/** + * 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). + * + * Note: This may be different from `faas.id` if an alias is involved. + * + * @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}). + */ +export const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM; +/** + * The connection string used to connect to the database. It is recommended to remove embedded credentials. + * + * @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}). + */ +export const SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING; +/** + * Username for accessing the database. + * + * @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}). + */ +export const SEMATTRS_DB_USER = TMP_DB_USER; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME; +/** + * 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). + * + * Note: In some SQL databases, the database name to be used is called "schema name". + * + * @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}). + */ +export const SEMATTRS_DB_NAME = TMP_DB_NAME; +/** + * The database statement being executed. + * + * Note: The value may be sanitized to exclude sensitive information. + * + * @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}). + */ +export const SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT; +/** + * 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. + * + * 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. + * + * @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}). + */ +export const SEMATTRS_DB_OPERATION = TMP_DB_OPERATION; +/** + * 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. + * + * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard). + * + * @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}). + */ +export const SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME; +/** + * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE; +/** + * 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). + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = TMP_DB_CASSANDRA_CONSISTENCY_LEVEL; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE; +/** + * Whether or not the query is idempotent. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT; +/** + * The ID of the coordinating node for a query. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = TMP_DB_CASSANDRA_COORDINATOR_ID; +/** + * The data center of the coordinating node for a query. + * + * @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}). + */ +export const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = TMP_DB_CASSANDRA_COORDINATOR_DC; +/** + * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +export const SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX; +/** + * The collection being accessed within the database stated in `db.name`. + * + * @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}). + */ +export const SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +export const SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_TYPE. + */ +export const SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE; +/** + * The exception message. + * + * @deprecated Use ATTR_EXCEPTION_MESSAGE. + */ +export const SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_STACKTRACE. + */ +export const SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE; +/** +* 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. +* +* Note: An exception is considered to have escaped (or left) the scope of a span, +if that span is ended while the exception is still logically "in flight". +This may be actually "in flight" in some languages (e.g. if the exception +is passed to a Context manager's `__exit__` method in Python) but will +usually be caught at the point of recording the exception in most languages. + +It is usually not possible to determine at the point where an exception is thrown +whether it will escape the scope of a span. +However, it is trivial to know that an exception +will escape, if one checks for an active exception just before ending the span, +as done in the [example above](#exception-end-example). + +It follows that an exception may still escape the scope of the span +even if the `exception.escaped` attribute was not set or set to false, +since the event might have been recorded at a time where it was not +clear whether the exception will escape. +* +* @deprecated Use ATTR_EXCEPTION_ESCAPED. +*/ +export const SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER; +/** + * The execution ID of the current function execution. + * + * @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}). + */ +export const SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export const SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION; +/** + * 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). + * + * @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}). + */ +export const SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME; +/** + * 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). + * + * @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}). + */ +export const SEMATTRS_FAAS_TIME = TMP_FAAS_TIME; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @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}). + */ +export const SEMATTRS_FAAS_CRON = TMP_FAAS_CRON; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @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}). + */ +export const SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART; +/** + * The name of the invoked function. + * + * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function. + * + * @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}). + */ +export const SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export const SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER; +/** + * The cloud region of the invoked function. + * + * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function. + * + * @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}). + */ +export const SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT; +/** + * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6). + * + * @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}). + */ +export const SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP; +/** + * Remote port number. + * + * @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}). + */ +export const SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT; +/** + * Remote hostname or similar, see note below. + * + * @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}). + */ +export const SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME; +/** + * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP; +/** + * Like `net.peer.port` but for the host port. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT; +/** + * Local hostname or similar, see note below. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = TMP_NET_HOST_CONNECTION_SUBTYPE; +/** + * The name of the mobile carrier. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME; +/** + * The mobile carrier country code. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC; +/** + * The mobile carrier network code. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @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}). + */ +export const SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID; +/** + * Actual/assumed role the client is making the request under extracted from token or application security context. + * + * @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}). + */ +export const SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE; +/** + * 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). + * + * @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}). + */ +export const SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @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}). + */ +export const SEMATTRS_THREAD_ID = TMP_THREAD_ID; +/** + * Current thread name. + * + * @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}). + */ +export const SEMATTRS_THREAD_NAME = TMP_THREAD_NAME; +/** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + * + * @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}). + */ +export const SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE; +/** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + * + * @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}). + */ +export const SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH; +/** + * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + * + * @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}). + */ +export const SEMATTRS_CODE_LINENO = TMP_CODE_LINENO; +/** + * HTTP request method. + * + * @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}). + */ +export const SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD; +/** + * 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. + * + * 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/`. + * + * @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}). + */ +export const SEMATTRS_HTTP_URL = TMP_HTTP_URL; +/** + * The full request target as passed in a HTTP request line or equivalent. + * + * @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}). + */ +export const SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET; +/** + * 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. + * + * 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. + * + * @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}). + */ +export const SEMATTRS_HTTP_HOST = TMP_HTTP_HOST; +/** + * The URI scheme identifying the used protocol. + * + * @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}). + */ +export const SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @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}). + */ +export const SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR; +/** + * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client. + * + * @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}). + */ +export const SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = TMP_HTTP_REQUEST_CONTENT_LENGTH; +/** + * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +export const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = TMP_HTTP_RESPONSE_CONTENT_LENGTH; +/** + * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +export const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED; +/** + * 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). + * + * 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. + * + * @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}). + */ +export const SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME; +/** + * The matched route (path template). + * + * @deprecated Use ATTR_HTTP_ROUTE. + */ +export const SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE; +/** +* 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)). +* +* Note: This is not necessarily the same as `net.peer.ip`, which would +identify the network-level peer, which may be a proxy. + +This attribute should be set when a source of information different +from the one used for `net.peer.ip`, is available even if that other +source just confirms the same value as `net.peer.ip`. +Rationale: For `net.peer.ip`, one typically does not know if it +comes from a proxy, reverse proxy, or the actual client. Setting +`http.client_ip` when it's the same as `net.peer.ip` means that +one is at least somewhat confident that the address is not that of +the closest proxy. +* +* @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}). +*/ +export const SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP; +/** + * The keys in the `RequestItems` object field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = TMP_AWS_DYNAMODB_CONSUMED_CAPACITY; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY; +/** + * The value of the `ConsistentRead` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = TMP_AWS_DYNAMODB_CONSISTENT_READ; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION; +/** + * The value of the `Limit` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT; +/** + * The value of the `AttributesToGet` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET; +/** + * The value of the `IndexName` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME; +/** + * The value of the `Select` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE; +/** + * The the number of items in the `TableNames` response parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD; +/** + * The value of the `Segment` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT; +/** + * The value of the `TotalSegments` request parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = TMP_AWS_DYNAMODB_TOTAL_SEGMENTS; +/** + * The value of the `Count` response parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT; +/** + * The value of the `ScannedCount` response parameter. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = TMP_AWS_DYNAMODB_SCANNED_COUNT; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS; +/** + * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. + * + * @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}). + */ +export const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES; +/** + * A string identifying the messaging system. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM; +/** + * The message destination name. This might be equal to the span name but is required nevertheless. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export const SEMATTRS_MESSAGING_DESTINATION_KIND = TMP_MESSAGING_DESTINATION_KIND; +/** + * A boolean that is true if the message destination is temporary. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_TEMP_DESTINATION = TMP_MESSAGING_TEMP_DESTINATION; +/** + * The name of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME. + */ +export const SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL; +/** + * The version of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION. + */ +export const SEMATTRS_MESSAGING_PROTOCOL_VERSION = TMP_MESSAGING_PROTOCOL_VERSION; +/** + * Connection string. + * + * @deprecated Removed in semconv v1.17.0. + */ +export const SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID; +/** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @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}). + */ +export const SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES; +/** + * The compressed size of the message payload in bytes. + * + * @deprecated Removed in semconv v1.22.0. + */ +export const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES; +/** + * 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. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION; +/** + * 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. + * + * @deprecated Removed in semconv v1.21.0. + */ +export const SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID; +/** + * RabbitMQ message routing key. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = TMP_MESSAGING_RABBITMQ_ROUTING_KEY; +/** + * 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. + * + * 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. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = TMP_MESSAGING_KAFKA_MESSAGE_KEY; +/** + * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = TMP_MESSAGING_KAFKA_CONSUMER_GROUP; +/** + * Client Id for the Consumer or Producer that is handling the message. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID; +/** + * Partition the message is sent to. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION; +/** + * A boolean that is true if the message is a tombstone. + * + * @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}). + */ +export const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE; +/** + * A string identifying the remoting system. + * + * @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}). + */ +export const SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM; +/** + * The full (logical) name of the service being called, including its package name, if applicable. + * + * 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). + * + * @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}). + */ +export const SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE; +/** + * The name of the (logical) method being called, must be equal to the $method part in the span name. + * + * 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). + * + * @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}). + */ +export const SEMATTRS_RPC_METHOD = TMP_RPC_METHOD; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE; +/** + * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted. + * + * @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}). + */ +export const SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION; +/** + * `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. + * + * @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}). + */ +export const SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID; +/** + * `error.code` property of response if it is an error response. + * + * @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}). + */ +export const SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE; +/** + * `error.message` property of response if it is an error response. + * + * @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}). + */ +export const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export const SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE; +/** + * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * Note: This way we guarantee that the values will be consistent between different implementations. + * + * @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}). + */ +export const SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID; +/** + * Compressed size of the message in bytes. + * + * @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}). + */ +export const SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE; +/** + * Uncompressed size of the message in bytes. + * + * @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}). + */ +export const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE; +/** + * Create exported Value Map for SemanticAttributes values + * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification + */ +export const SemanticAttributes = +/*#__PURE__*/ createConstMap([ + TMP_AWS_LAMBDA_INVOKED_ARN, + TMP_DB_SYSTEM, + TMP_DB_CONNECTION_STRING, + TMP_DB_USER, + TMP_DB_JDBC_DRIVER_CLASSNAME, + TMP_DB_NAME, + TMP_DB_STATEMENT, + TMP_DB_OPERATION, + TMP_DB_MSSQL_INSTANCE_NAME, + TMP_DB_CASSANDRA_KEYSPACE, + TMP_DB_CASSANDRA_PAGE_SIZE, + TMP_DB_CASSANDRA_CONSISTENCY_LEVEL, + TMP_DB_CASSANDRA_TABLE, + TMP_DB_CASSANDRA_IDEMPOTENCE, + TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, + TMP_DB_CASSANDRA_COORDINATOR_ID, + TMP_DB_CASSANDRA_COORDINATOR_DC, + TMP_DB_HBASE_NAMESPACE, + TMP_DB_REDIS_DATABASE_INDEX, + TMP_DB_MONGODB_COLLECTION, + TMP_DB_SQL_TABLE, + TMP_EXCEPTION_TYPE, + TMP_EXCEPTION_MESSAGE, + TMP_EXCEPTION_STACKTRACE, + TMP_EXCEPTION_ESCAPED, + TMP_FAAS_TRIGGER, + TMP_FAAS_EXECUTION, + TMP_FAAS_DOCUMENT_COLLECTION, + TMP_FAAS_DOCUMENT_OPERATION, + TMP_FAAS_DOCUMENT_TIME, + TMP_FAAS_DOCUMENT_NAME, + TMP_FAAS_TIME, + TMP_FAAS_CRON, + TMP_FAAS_COLDSTART, + TMP_FAAS_INVOKED_NAME, + TMP_FAAS_INVOKED_PROVIDER, + TMP_FAAS_INVOKED_REGION, + TMP_NET_TRANSPORT, + TMP_NET_PEER_IP, + TMP_NET_PEER_PORT, + TMP_NET_PEER_NAME, + TMP_NET_HOST_IP, + TMP_NET_HOST_PORT, + TMP_NET_HOST_NAME, + TMP_NET_HOST_CONNECTION_TYPE, + TMP_NET_HOST_CONNECTION_SUBTYPE, + TMP_NET_HOST_CARRIER_NAME, + TMP_NET_HOST_CARRIER_MCC, + TMP_NET_HOST_CARRIER_MNC, + TMP_NET_HOST_CARRIER_ICC, + TMP_PEER_SERVICE, + TMP_ENDUSER_ID, + TMP_ENDUSER_ROLE, + TMP_ENDUSER_SCOPE, + TMP_THREAD_ID, + TMP_THREAD_NAME, + TMP_CODE_FUNCTION, + TMP_CODE_NAMESPACE, + TMP_CODE_FILEPATH, + TMP_CODE_LINENO, + TMP_HTTP_METHOD, + TMP_HTTP_URL, + TMP_HTTP_TARGET, + TMP_HTTP_HOST, + TMP_HTTP_SCHEME, + TMP_HTTP_STATUS_CODE, + TMP_HTTP_FLAVOR, + TMP_HTTP_USER_AGENT, + TMP_HTTP_REQUEST_CONTENT_LENGTH, + TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED, + TMP_HTTP_RESPONSE_CONTENT_LENGTH, + TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED, + TMP_HTTP_SERVER_NAME, + TMP_HTTP_ROUTE, + TMP_HTTP_CLIENT_IP, + TMP_AWS_DYNAMODB_TABLE_NAMES, + TMP_AWS_DYNAMODB_CONSUMED_CAPACITY, + TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS, + TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY, + TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY, + TMP_AWS_DYNAMODB_CONSISTENT_READ, + TMP_AWS_DYNAMODB_PROJECTION, + TMP_AWS_DYNAMODB_LIMIT, + TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET, + TMP_AWS_DYNAMODB_INDEX_NAME, + TMP_AWS_DYNAMODB_SELECT, + TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES, + TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES, + TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE, + TMP_AWS_DYNAMODB_TABLE_COUNT, + TMP_AWS_DYNAMODB_SCAN_FORWARD, + TMP_AWS_DYNAMODB_SEGMENT, + TMP_AWS_DYNAMODB_TOTAL_SEGMENTS, + TMP_AWS_DYNAMODB_COUNT, + TMP_AWS_DYNAMODB_SCANNED_COUNT, + TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS, + TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES, + TMP_MESSAGING_SYSTEM, + TMP_MESSAGING_DESTINATION, + TMP_MESSAGING_DESTINATION_KIND, + TMP_MESSAGING_TEMP_DESTINATION, + TMP_MESSAGING_PROTOCOL, + TMP_MESSAGING_PROTOCOL_VERSION, + TMP_MESSAGING_URL, + TMP_MESSAGING_MESSAGE_ID, + TMP_MESSAGING_CONVERSATION_ID, + TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES, + TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES, + TMP_MESSAGING_OPERATION, + TMP_MESSAGING_CONSUMER_ID, + TMP_MESSAGING_RABBITMQ_ROUTING_KEY, + TMP_MESSAGING_KAFKA_MESSAGE_KEY, + TMP_MESSAGING_KAFKA_CONSUMER_GROUP, + TMP_MESSAGING_KAFKA_CLIENT_ID, + TMP_MESSAGING_KAFKA_PARTITION, + TMP_MESSAGING_KAFKA_TOMBSTONE, + TMP_RPC_SYSTEM, + TMP_RPC_SERVICE, + TMP_RPC_METHOD, + TMP_RPC_GRPC_STATUS_CODE, + TMP_RPC_JSONRPC_VERSION, + TMP_RPC_JSONRPC_REQUEST_ID, + TMP_RPC_JSONRPC_ERROR_CODE, + TMP_RPC_JSONRPC_ERROR_MESSAGE, + TMP_MESSAGE_TYPE, + TMP_MESSAGE_ID, + TMP_MESSAGE_COMPRESSED_SIZE, + TMP_MESSAGE_UNCOMPRESSED_SIZE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for DbSystemValues enum definition + * + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql'; +const TMP_DBSYSTEMVALUES_MSSQL = 'mssql'; +const TMP_DBSYSTEMVALUES_MYSQL = 'mysql'; +const TMP_DBSYSTEMVALUES_ORACLE = 'oracle'; +const TMP_DBSYSTEMVALUES_DB2 = 'db2'; +const TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql'; +const TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift'; +const TMP_DBSYSTEMVALUES_HIVE = 'hive'; +const TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape'; +const TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb'; +const TMP_DBSYSTEMVALUES_PROGRESS = 'progress'; +const TMP_DBSYSTEMVALUES_MAXDB = 'maxdb'; +const TMP_DBSYSTEMVALUES_HANADB = 'hanadb'; +const TMP_DBSYSTEMVALUES_INGRES = 'ingres'; +const TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql'; +const TMP_DBSYSTEMVALUES_EDB = 'edb'; +const TMP_DBSYSTEMVALUES_CACHE = 'cache'; +const TMP_DBSYSTEMVALUES_ADABAS = 'adabas'; +const TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird'; +const TMP_DBSYSTEMVALUES_DERBY = 'derby'; +const TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker'; +const TMP_DBSYSTEMVALUES_INFORMIX = 'informix'; +const TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb'; +const TMP_DBSYSTEMVALUES_INTERBASE = 'interbase'; +const TMP_DBSYSTEMVALUES_MARIADB = 'mariadb'; +const TMP_DBSYSTEMVALUES_NETEZZA = 'netezza'; +const TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive'; +const TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase'; +const TMP_DBSYSTEMVALUES_SQLITE = 'sqlite'; +const TMP_DBSYSTEMVALUES_SYBASE = 'sybase'; +const TMP_DBSYSTEMVALUES_TERADATA = 'teradata'; +const TMP_DBSYSTEMVALUES_VERTICA = 'vertica'; +const TMP_DBSYSTEMVALUES_H2 = 'h2'; +const TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion'; +const TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra'; +const TMP_DBSYSTEMVALUES_HBASE = 'hbase'; +const TMP_DBSYSTEMVALUES_MONGODB = 'mongodb'; +const TMP_DBSYSTEMVALUES_REDIS = 'redis'; +const TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase'; +const TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb'; +const TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb'; +const TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb'; +const TMP_DBSYSTEMVALUES_NEO4J = 'neo4j'; +const TMP_DBSYSTEMVALUES_GEODE = 'geode'; +const TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch'; +const TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached'; +const TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb'; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export const DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB; +/** + * The constant map of values for DbSystemValues. + * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification. + */ +export const DbSystemValues = +/*#__PURE__*/ createConstMap([ + TMP_DBSYSTEMVALUES_OTHER_SQL, + TMP_DBSYSTEMVALUES_MSSQL, + TMP_DBSYSTEMVALUES_MYSQL, + TMP_DBSYSTEMVALUES_ORACLE, + TMP_DBSYSTEMVALUES_DB2, + TMP_DBSYSTEMVALUES_POSTGRESQL, + TMP_DBSYSTEMVALUES_REDSHIFT, + TMP_DBSYSTEMVALUES_HIVE, + TMP_DBSYSTEMVALUES_CLOUDSCAPE, + TMP_DBSYSTEMVALUES_HSQLDB, + TMP_DBSYSTEMVALUES_PROGRESS, + TMP_DBSYSTEMVALUES_MAXDB, + TMP_DBSYSTEMVALUES_HANADB, + TMP_DBSYSTEMVALUES_INGRES, + TMP_DBSYSTEMVALUES_FIRSTSQL, + TMP_DBSYSTEMVALUES_EDB, + TMP_DBSYSTEMVALUES_CACHE, + TMP_DBSYSTEMVALUES_ADABAS, + TMP_DBSYSTEMVALUES_FIREBIRD, + TMP_DBSYSTEMVALUES_DERBY, + TMP_DBSYSTEMVALUES_FILEMAKER, + TMP_DBSYSTEMVALUES_INFORMIX, + TMP_DBSYSTEMVALUES_INSTANTDB, + TMP_DBSYSTEMVALUES_INTERBASE, + TMP_DBSYSTEMVALUES_MARIADB, + TMP_DBSYSTEMVALUES_NETEZZA, + TMP_DBSYSTEMVALUES_PERVASIVE, + TMP_DBSYSTEMVALUES_POINTBASE, + TMP_DBSYSTEMVALUES_SQLITE, + TMP_DBSYSTEMVALUES_SYBASE, + TMP_DBSYSTEMVALUES_TERADATA, + TMP_DBSYSTEMVALUES_VERTICA, + TMP_DBSYSTEMVALUES_H2, + TMP_DBSYSTEMVALUES_COLDFUSION, + TMP_DBSYSTEMVALUES_CASSANDRA, + TMP_DBSYSTEMVALUES_HBASE, + TMP_DBSYSTEMVALUES_MONGODB, + TMP_DBSYSTEMVALUES_REDIS, + TMP_DBSYSTEMVALUES_COUCHBASE, + TMP_DBSYSTEMVALUES_COUCHDB, + TMP_DBSYSTEMVALUES_COSMOSDB, + TMP_DBSYSTEMVALUES_DYNAMODB, + TMP_DBSYSTEMVALUES_NEO4J, + TMP_DBSYSTEMVALUES_GEODE, + TMP_DBSYSTEMVALUES_ELASTICSEARCH, + TMP_DBSYSTEMVALUES_MEMCACHED, + TMP_DBSYSTEMVALUES_COCKROACHDB, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for DbCassandraConsistencyLevelValues enum definition + * + * 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). + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial'; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_ALL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_TWO = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_THREE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_ANY = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL; +/** + * 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). + * + * @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}). + */ +export const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL; +/** + * The constant map of values for DbCassandraConsistencyLevelValues. + * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification. + */ +export const DbCassandraConsistencyLevelValues = +/*#__PURE__*/ createConstMap([ + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for FaasTriggerValues enum definition + * + * Type of the trigger on which the function is executed. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource'; +const TMP_FAASTRIGGERVALUES_HTTP = 'http'; +const TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub'; +const TMP_FAASTRIGGERVALUES_TIMER = 'timer'; +const TMP_FAASTRIGGERVALUES_OTHER = 'other'; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export const FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER; +/** + * The constant map of values for FaasTriggerValues. + * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification. + */ +export const FaasTriggerValues = +/*#__PURE__*/ createConstMap([ + TMP_FAASTRIGGERVALUES_DATASOURCE, + TMP_FAASTRIGGERVALUES_HTTP, + TMP_FAASTRIGGERVALUES_PUBSUB, + TMP_FAASTRIGGERVALUES_TIMER, + TMP_FAASTRIGGERVALUES_OTHER, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for FaasDocumentOperationValues enum definition + * + * Describes the type of the operation that was performed on the data. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert'; +const TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit'; +const TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete'; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export const FAASDOCUMENTOPERATIONVALUES_INSERT = TMP_FAASDOCUMENTOPERATIONVALUES_INSERT; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export const FAASDOCUMENTOPERATIONVALUES_EDIT = TMP_FAASDOCUMENTOPERATIONVALUES_EDIT; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export const FAASDOCUMENTOPERATIONVALUES_DELETE = TMP_FAASDOCUMENTOPERATIONVALUES_DELETE; +/** + * The constant map of values for FaasDocumentOperationValues. + * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification. + */ +export const FaasDocumentOperationValues = +/*#__PURE__*/ createConstMap([ + TMP_FAASDOCUMENTOPERATIONVALUES_INSERT, + TMP_FAASDOCUMENTOPERATIONVALUES_EDIT, + TMP_FAASDOCUMENTOPERATIONVALUES_DELETE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for FaasInvokedProviderValues enum definition + * + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud'; +const TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws'; +const TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure'; +const TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp'; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export const FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export const FAASINVOKEDPROVIDERVALUES_AZURE = TMP_FAASINVOKEDPROVIDERVALUES_AZURE; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export const FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP; +/** + * The constant map of values for FaasInvokedProviderValues. + * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification. + */ +export const FaasInvokedProviderValues = +/*#__PURE__*/ createConstMap([ + TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD, + TMP_FAASINVOKEDPROVIDERVALUES_AWS, + TMP_FAASINVOKEDPROVIDERVALUES_AZURE, + TMP_FAASINVOKEDPROVIDERVALUES_GCP, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for NetTransportValues enum definition + * + * Transport protocol used. See note below. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp'; +const TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp'; +const TMP_NETTRANSPORTVALUES_IP = 'ip'; +const TMP_NETTRANSPORTVALUES_UNIX = 'unix'; +const TMP_NETTRANSPORTVALUES_PIPE = 'pipe'; +const TMP_NETTRANSPORTVALUES_INPROC = 'inproc'; +const TMP_NETTRANSPORTVALUES_OTHER = 'other'; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +export const NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +export const NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export const NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER; +/** + * The constant map of values for NetTransportValues. + * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification. + */ +export const NetTransportValues = +/*#__PURE__*/ createConstMap([ + TMP_NETTRANSPORTVALUES_IP_TCP, + TMP_NETTRANSPORTVALUES_IP_UDP, + TMP_NETTRANSPORTVALUES_IP, + TMP_NETTRANSPORTVALUES_UNIX, + TMP_NETTRANSPORTVALUES_PIPE, + TMP_NETTRANSPORTVALUES_INPROC, + TMP_NETTRANSPORTVALUES_OTHER, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for NetHostConnectionTypeValues enum definition + * + * The internet connection type currently being used by the host. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown'; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const NETHOSTCONNECTIONTYPEVALUES_WIFI = TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const NETHOSTCONNECTIONTYPEVALUES_WIRED = TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const NETHOSTCONNECTIONTYPEVALUES_CELL = TMP_NETHOSTCONNECTIONTYPEVALUES_CELL; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN; +/** + * The constant map of values for NetHostConnectionTypeValues. + * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification. + */ +export const NetHostConnectionTypeValues = +/*#__PURE__*/ createConstMap([ + TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI, + TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED, + TMP_NETHOSTCONNECTIONTYPEVALUES_CELL, + TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE, + TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for NetHostConnectionSubtypeValues enum definition + * + * 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. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca'; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_LTE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_GSM = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_NR = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA; +/** + * 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. + * + * @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}). + */ +export const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA; +/** + * The constant map of values for NetHostConnectionSubtypeValues. + * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification. + */ +export const NetHostConnectionSubtypeValues = +/*#__PURE__*/ createConstMap([ + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for HttpFlavorValues enum definition + * + * Kind of HTTP protocol used. + * + * 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. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0'; +const TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1'; +const TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0'; +const TMP_HTTPFLAVORVALUES_SPDY = 'SPDY'; +const TMP_HTTPFLAVORVALUES_QUIC = 'QUIC'; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export const HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC; +/** + * The constant map of values for HttpFlavorValues. + * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification. + */ +export const HttpFlavorValues = { + HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0, + HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1, + HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0, + SPDY: TMP_HTTPFLAVORVALUES_SPDY, + QUIC: TMP_HTTPFLAVORVALUES_QUIC, +}; +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for MessagingDestinationKindValues enum definition + * + * The kind of message destination. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue'; +const TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic'; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export const MESSAGINGDESTINATIONKINDVALUES_QUEUE = TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export const MESSAGINGDESTINATIONKINDVALUES_TOPIC = TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC; +/** + * The constant map of values for MessagingDestinationKindValues. + * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification. + */ +export const MessagingDestinationKindValues = +/*#__PURE__*/ createConstMap([ + TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE, + TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for MessagingOperationValues enum definition + * + * 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. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive'; +const TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process'; +/** + * 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. + * + * @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}). + */ +export const MESSAGINGOPERATIONVALUES_RECEIVE = TMP_MESSAGINGOPERATIONVALUES_RECEIVE; +/** + * 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. + * + * @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}). + */ +export const MESSAGINGOPERATIONVALUES_PROCESS = TMP_MESSAGINGOPERATIONVALUES_PROCESS; +/** + * The constant map of values for MessagingOperationValues. + * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification. + */ +export const MessagingOperationValues = +/*#__PURE__*/ createConstMap([ + TMP_MESSAGINGOPERATIONVALUES_RECEIVE, + TMP_MESSAGINGOPERATIONVALUES_PROCESS, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for RpcGrpcStatusCodeValues enum definition + * + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_RPCGRPCSTATUSCODEVALUES_OK = 0; +const TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1; +const TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2; +const TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3; +const TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4; +const TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5; +const TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6; +const TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7; +const TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8; +const TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9; +const TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10; +const TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11; +const TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12; +const TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13; +const TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14; +const TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15; +const TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_CANCELLED = TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_UNKNOWN = TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_NOT_FOUND = TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_ABORTED = TMP_RPCGRPCSTATUSCODEVALUES_ABORTED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_INTERNAL = TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_DATA_LOSS = TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED; +/** + * The constant map of values for RpcGrpcStatusCodeValues. + * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification. + */ +export const RpcGrpcStatusCodeValues = { + OK: TMP_RPCGRPCSTATUSCODEVALUES_OK, + CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED, + UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN, + INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT, + DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED, + NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND, + ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS, + PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED, + RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED, + FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION, + ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED, + OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE, + UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED, + INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL, + UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE, + DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS, + UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED, +}; +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for MessageTypeValues enum definition + * + * Whether this is a received or sent message. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_MESSAGETYPEVALUES_SENT = 'SENT'; +const TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED'; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export const MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export const MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED; +/** + * The constant map of values for MessageTypeValues. + * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification. + */ +export const MessageTypeValues = +/*#__PURE__*/ createConstMap([ + TMP_MESSAGETYPEVALUES_SENT, + TMP_MESSAGETYPEVALUES_RECEIVED, +]); +//# sourceMappingURL=SemanticAttributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/SemanticAttributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/SemanticAttributes.js.map new file mode 100644 index 0000000..d65593e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/SemanticAttributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SemanticAttributes.js","sourceRoot":"","sources":["../../../src/trace/SemanticAttributes.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\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 =\n '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 =\n 'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n '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 =\n 'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n 'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n '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 =\n 'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n 'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n '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 =\n 'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n '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 =\n 'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n '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/**\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 */\nexport const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n\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 */\nexport const SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n\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 */\nexport const SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n\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 */\nexport const SEMATTRS_DB_USER = TMP_DB_USER;\n\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 */\nexport const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n\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 */\nexport const SEMATTRS_DB_NAME = TMP_DB_NAME;\n\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 */\nexport const SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n\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 */\nexport const SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n\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 */\nexport const SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL =\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID =\n TMP_DB_CASSANDRA_COORDINATOR_ID;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC =\n TMP_DB_CASSANDRA_COORDINATOR_DC;\n\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 */\nexport const SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n\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 */\nexport const SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n\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 */\nexport const SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n\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 */\nexport const SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n\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 */\nexport const SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport const SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n\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 */\nexport const SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n\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*/\nexport const SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n\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 */\nexport const SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n\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 */\nexport const SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n\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 */\nexport const SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n\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 */\nexport const SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n\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 */\nexport const SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n\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 */\nexport const SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n\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 */\nexport const SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n\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 */\nexport const SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n\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 */\nexport const SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n\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 */\nexport const SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n\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 */\nexport const SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n\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 */\nexport const SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n\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 */\nexport const SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n\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 */\nexport const SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n\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 */\nexport const SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n\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 */\nexport const SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n\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 */\nexport const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE =\n TMP_NET_HOST_CONNECTION_SUBTYPE;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n\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 */\nexport const SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n\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 */\nexport const SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n\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 */\nexport const SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n\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 */\nexport const SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n\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 */\nexport const SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n\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 */\nexport const SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n\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 */\nexport const SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n\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 */\nexport const SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n\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 */\nexport const SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n\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 */\nexport const SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n\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 */\nexport const SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n\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 */\nexport const SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n\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 */\nexport const SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n\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 */\nexport const SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n\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 */\nexport const SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n\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 */\nexport const SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n\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 */\nexport const SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n\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 */\nexport const SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n\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 */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH =\n TMP_HTTP_REQUEST_CONTENT_LENGTH;\n\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 */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n\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 */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n\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 */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n\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 */\nexport const SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport const SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n\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*/\nexport const SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY =\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ =\n TMP_AWS_DYNAMODB_CONSISTENT_READ;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET =\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS =\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT =\n TMP_AWS_DYNAMODB_SCANNED_COUNT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n\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 */\nexport const SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\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 */\nexport const SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const SEMATTRS_MESSAGING_DESTINATION_KIND =\n TMP_MESSAGING_DESTINATION_KIND;\n\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 */\nexport const SEMATTRS_MESSAGING_TEMP_DESTINATION =\n TMP_MESSAGING_TEMP_DESTINATION;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL_VERSION =\n TMP_MESSAGING_PROTOCOL_VERSION;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n\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 */\nexport const SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n\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 */\nexport const SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n\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 */\nexport const SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY =\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY =\n TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP =\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n\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 */\nexport const SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n\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 */\nexport const SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n\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 */\nexport const SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n\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 */\nexport const SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n\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 */\nexport const SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n\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 */\nexport const SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n\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 */\nexport const SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n\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 */\nexport const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n\n/**\n * Definition of available values for SemanticAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification.\n */\nexport type SemanticAttributes = {\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 AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn';\n\n /**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\n DB_SYSTEM: 'db.system';\n\n /**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n */\n DB_CONNECTION_STRING: 'db.connection_string';\n\n /**\n * Username for accessing the database.\n */\n DB_USER: 'db.user';\n\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 DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname';\n\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 DB_NAME: 'db.name';\n\n /**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n */\n DB_STATEMENT: 'db.statement';\n\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 DB_OPERATION: 'db.operation';\n\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 DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name';\n\n /**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n */\n DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace';\n\n /**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n */\n DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size';\n\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 DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level';\n\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 DB_CASSANDRA_TABLE: 'db.cassandra.table';\n\n /**\n * Whether or not the query is idempotent.\n */\n DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence';\n\n /**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n */\n DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count';\n\n /**\n * The ID of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id';\n\n /**\n * The data center of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc';\n\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 DB_HBASE_NAMESPACE: 'db.hbase.namespace';\n\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 DB_REDIS_DATABASE_INDEX: 'db.redis.database_index';\n\n /**\n * The collection being accessed within the database stated in `db.name`.\n */\n DB_MONGODB_COLLECTION: 'db.mongodb.collection';\n\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 DB_SQL_TABLE: 'db.sql.table';\n\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 EXCEPTION_TYPE: 'exception.type';\n\n /**\n * The exception message.\n */\n EXCEPTION_MESSAGE: 'exception.message';\n\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 EXCEPTION_STACKTRACE: 'exception.stacktrace';\n\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 EXCEPTION_ESCAPED: 'exception.escaped';\n\n /**\n * Type of the trigger on which the function is executed.\n */\n FAAS_TRIGGER: 'faas.trigger';\n\n /**\n * The execution ID of the current function execution.\n */\n FAAS_EXECUTION: 'faas.execution';\n\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 FAAS_DOCUMENT_COLLECTION: 'faas.document.collection';\n\n /**\n * Describes the type of the operation that was performed on the data.\n */\n FAAS_DOCUMENT_OPERATION: 'faas.document.operation';\n\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 FAAS_DOCUMENT_TIME: 'faas.document.time';\n\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 FAAS_DOCUMENT_NAME: 'faas.document.name';\n\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 FAAS_TIME: 'faas.time';\n\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 FAAS_CRON: 'faas.cron';\n\n /**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n */\n FAAS_COLDSTART: 'faas.coldstart';\n\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 FAAS_INVOKED_NAME: 'faas.invoked_name';\n\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 FAAS_INVOKED_PROVIDER: 'faas.invoked_provider';\n\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 FAAS_INVOKED_REGION: 'faas.invoked_region';\n\n /**\n * Transport protocol used. See note below.\n */\n NET_TRANSPORT: 'net.transport';\n\n /**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n */\n NET_PEER_IP: 'net.peer.ip';\n\n /**\n * Remote port number.\n */\n NET_PEER_PORT: 'net.peer.port';\n\n /**\n * Remote hostname or similar, see note below.\n */\n NET_PEER_NAME: 'net.peer.name';\n\n /**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n */\n NET_HOST_IP: 'net.host.ip';\n\n /**\n * Like `net.peer.port` but for the host port.\n */\n NET_HOST_PORT: 'net.host.port';\n\n /**\n * Local hostname or similar, see note below.\n */\n NET_HOST_NAME: 'net.host.name';\n\n /**\n * The internet connection type currently being used by the host.\n */\n NET_HOST_CONNECTION_TYPE: 'net.host.connection.type';\n\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 NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype';\n\n /**\n * The name of the mobile carrier.\n */\n NET_HOST_CARRIER_NAME: 'net.host.carrier.name';\n\n /**\n * The mobile carrier country code.\n */\n NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc';\n\n /**\n * The mobile carrier network code.\n */\n NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc';\n\n /**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n */\n NET_HOST_CARRIER_ICC: 'net.host.carrier.icc';\n\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 PEER_SERVICE: 'peer.service';\n\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 ENDUSER_ID: 'enduser.id';\n\n /**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n */\n ENDUSER_ROLE: 'enduser.role';\n\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 ENDUSER_SCOPE: 'enduser.scope';\n\n /**\n * Current "managed" thread ID (as opposed to OS thread ID).\n */\n THREAD_ID: 'thread.id';\n\n /**\n * Current thread name.\n */\n THREAD_NAME: 'thread.name';\n\n /**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n */\n CODE_FUNCTION: 'code.function';\n\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 CODE_NAMESPACE: 'code.namespace';\n\n /**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n */\n CODE_FILEPATH: 'code.filepath';\n\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 CODE_LINENO: 'code.lineno';\n\n /**\n * HTTP request method.\n */\n HTTP_METHOD: 'http.method';\n\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 HTTP_URL: 'http.url';\n\n /**\n * The full request target as passed in a HTTP request line or equivalent.\n */\n HTTP_TARGET: 'http.target';\n\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 HTTP_HOST: 'http.host';\n\n /**\n * The URI scheme identifying the used protocol.\n */\n HTTP_SCHEME: 'http.scheme';\n\n /**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n */\n HTTP_STATUS_CODE: 'http.status_code';\n\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 HTTP_FLAVOR: 'http.flavor';\n\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 HTTP_USER_AGENT: 'http.user_agent';\n\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 HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length';\n\n /**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed';\n\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 HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length';\n\n /**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed';\n\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 HTTP_SERVER_NAME: 'http.server_name';\n\n /**\n * The matched route (path template).\n */\n HTTP_ROUTE: 'http.route';\n\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 HTTP_CLIENT_IP: 'http.client_ip';\n\n /**\n * The keys in the `RequestItems` object field.\n */\n AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names';\n\n /**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n */\n AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity';\n\n /**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n */\n AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics';\n\n /**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity';\n\n /**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity';\n\n /**\n * The value of the `ConsistentRead` request parameter.\n */\n AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read';\n\n /**\n * The value of the `ProjectionExpression` request parameter.\n */\n AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection';\n\n /**\n * The value of the `Limit` request parameter.\n */\n AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit';\n\n /**\n * The value of the `AttributesToGet` request parameter.\n */\n AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get';\n\n /**\n * The value of the `IndexName` request parameter.\n */\n AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name';\n\n /**\n * The value of the `Select` request parameter.\n */\n AWS_DYNAMODB_SELECT: 'aws.dynamodb.select';\n\n /**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes';\n\n /**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes';\n\n /**\n * The value of the `ExclusiveStartTableName` request parameter.\n */\n AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table';\n\n /**\n * The the number of items in the `TableNames` response parameter.\n */\n AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count';\n\n /**\n * The value of the `ScanIndexForward` request parameter.\n */\n AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward';\n\n /**\n * The value of the `Segment` request parameter.\n */\n AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment';\n\n /**\n * The value of the `TotalSegments` request parameter.\n */\n AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments';\n\n /**\n * The value of the `Count` response parameter.\n */\n AWS_DYNAMODB_COUNT: 'aws.dynamodb.count';\n\n /**\n * The value of the `ScannedCount` response parameter.\n */\n AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count';\n\n /**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n */\n AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions';\n\n /**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates';\n\n /**\n * A string identifying the messaging system.\n */\n MESSAGING_SYSTEM: 'messaging.system';\n\n /**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n */\n MESSAGING_DESTINATION: 'messaging.destination';\n\n /**\n * The kind of message destination.\n */\n MESSAGING_DESTINATION_KIND: 'messaging.destination_kind';\n\n /**\n * A boolean that is true if the message destination is temporary.\n */\n MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination';\n\n /**\n * The name of the transport protocol.\n */\n MESSAGING_PROTOCOL: 'messaging.protocol';\n\n /**\n * The version of the transport protocol.\n */\n MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version';\n\n /**\n * Connection string.\n */\n MESSAGING_URL: 'messaging.url';\n\n /**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n */\n MESSAGING_MESSAGE_ID: 'messaging.message_id';\n\n /**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n */\n MESSAGING_CONVERSATION_ID: 'messaging.conversation_id';\n\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 MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes';\n\n /**\n * The compressed size of the message payload in bytes.\n */\n MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes';\n\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 MESSAGING_OPERATION: 'messaging.operation';\n\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 MESSAGING_CONSUMER_ID: 'messaging.consumer_id';\n\n /**\n * RabbitMQ message routing key.\n */\n MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key';\n\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 MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key';\n\n /**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n */\n MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group';\n\n /**\n * Client Id for the Consumer or Producer that is handling the message.\n */\n MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id';\n\n /**\n * Partition the message is sent to.\n */\n MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition';\n\n /**\n * A boolean that is true if the message is a tombstone.\n */\n MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone';\n\n /**\n * A string identifying the remoting system.\n */\n RPC_SYSTEM: 'rpc.system';\n\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 RPC_SERVICE: 'rpc.service';\n\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 RPC_METHOD: 'rpc.method';\n\n /**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\n RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code';\n\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 RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version';\n\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 RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id';\n\n /**\n * `error.code` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code';\n\n /**\n * `error.message` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message';\n\n /**\n * Whether this is a received or sent message.\n */\n MESSAGE_TYPE: 'message.type';\n\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 MESSAGE_ID: 'message.id';\n\n /**\n * Compressed size of the message in bytes.\n */\n MESSAGE_COMPRESSED_SIZE: 'message.compressed_size';\n\n /**\n * Uncompressed size of the message in bytes.\n */\n MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size';\n};\n\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 */\nexport const SemanticAttributes: SemanticAttributes =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n\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 */\nexport const DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n\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 */\nexport const DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n\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 */\nexport const DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n\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 */\nexport const DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n\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 */\nexport const DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n\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 */\nexport const DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n\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 */\nexport const DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n\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 */\nexport const DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n\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 */\nexport const DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n\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 */\nexport const DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n\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 */\nexport const DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n\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 */\nexport const DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n\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 */\nexport const DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n\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 */\nexport const DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n\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 */\nexport const DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n\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 */\nexport const DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n\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 */\nexport const DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n\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 */\nexport const DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n\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 */\nexport const DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n\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 */\nexport const DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n\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 */\nexport const DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n\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 */\nexport const DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n\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 */\nexport const DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n\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 */\nexport const DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n\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 */\nexport const DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n\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 */\nexport const DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n\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 */\nexport const DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n\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 */\nexport const DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n\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 */\nexport const DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n\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 */\nexport const DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n\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 */\nexport const DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n\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 */\nexport const DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n\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 */\nexport const DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n\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 */\nexport const DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n\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 */\nexport const DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n\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 */\nexport const DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n\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 */\nexport const DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n\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 */\nexport const DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n\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 */\nexport const DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n\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 */\nexport const DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n\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 */\nexport const DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n\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 */\nexport const DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n\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 */\nexport const DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n\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 */\nexport const DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n\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 */\nexport const DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n\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 */\nexport const DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n\n/**\n * Identifies the 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 * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport type DbSystemValues = {\n /** Some other SQL database. Fallback only. See notes. */\n OTHER_SQL: 'other_sql';\n\n /** Microsoft SQL Server. */\n MSSQL: 'mssql';\n\n /** MySQL. */\n MYSQL: 'mysql';\n\n /** Oracle Database. */\n ORACLE: 'oracle';\n\n /** IBM Db2. */\n DB2: 'db2';\n\n /** PostgreSQL. */\n POSTGRESQL: 'postgresql';\n\n /** Amazon Redshift. */\n REDSHIFT: 'redshift';\n\n /** Apache Hive. */\n HIVE: 'hive';\n\n /** Cloudscape. */\n CLOUDSCAPE: 'cloudscape';\n\n /** HyperSQL DataBase. */\n HSQLDB: 'hsqldb';\n\n /** Progress Database. */\n PROGRESS: 'progress';\n\n /** SAP MaxDB. */\n MAXDB: 'maxdb';\n\n /** SAP HANA. */\n HANADB: 'hanadb';\n\n /** Ingres. */\n INGRES: 'ingres';\n\n /** FirstSQL. */\n FIRSTSQL: 'firstsql';\n\n /** EnterpriseDB. */\n EDB: 'edb';\n\n /** InterSystems Caché. */\n CACHE: 'cache';\n\n /** Adabas (Adaptable Database System). */\n ADABAS: 'adabas';\n\n /** Firebird. */\n FIREBIRD: 'firebird';\n\n /** Apache Derby. */\n DERBY: 'derby';\n\n /** FileMaker. */\n FILEMAKER: 'filemaker';\n\n /** Informix. */\n INFORMIX: 'informix';\n\n /** InstantDB. */\n INSTANTDB: 'instantdb';\n\n /** InterBase. */\n INTERBASE: 'interbase';\n\n /** MariaDB. */\n MARIADB: 'mariadb';\n\n /** Netezza. */\n NETEZZA: 'netezza';\n\n /** Pervasive PSQL. */\n PERVASIVE: 'pervasive';\n\n /** PointBase. */\n POINTBASE: 'pointbase';\n\n /** SQLite. */\n SQLITE: 'sqlite';\n\n /** Sybase. */\n SYBASE: 'sybase';\n\n /** Teradata. */\n TERADATA: 'teradata';\n\n /** Vertica. */\n VERTICA: 'vertica';\n\n /** H2. */\n H2: 'h2';\n\n /** ColdFusion IMQ. */\n COLDFUSION: 'coldfusion';\n\n /** Apache Cassandra. */\n CASSANDRA: 'cassandra';\n\n /** Apache HBase. */\n HBASE: 'hbase';\n\n /** MongoDB. */\n MONGODB: 'mongodb';\n\n /** Redis. */\n REDIS: 'redis';\n\n /** Couchbase. */\n COUCHBASE: 'couchbase';\n\n /** CouchDB. */\n COUCHDB: 'couchdb';\n\n /** Microsoft Azure Cosmos DB. */\n COSMOSDB: 'cosmosdb';\n\n /** Amazon DynamoDB. */\n DYNAMODB: 'dynamodb';\n\n /** Neo4j. */\n NEO4J: 'neo4j';\n\n /** Apache Geode. */\n GEODE: 'geode';\n\n /** Elasticsearch. */\n ELASTICSEARCH: 'elasticsearch';\n\n /** Memcached. */\n MEMCACHED: 'memcached';\n\n /** CockroachDB. */\n COCKROACHDB: 'cockroachdb';\n};\n\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 */\nexport const DbSystemValues: DbSystemValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ALL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_TWO =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_THREE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ANY =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n\n/**\n * Identifies the 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 * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport type DbCassandraConsistencyLevelValues = {\n /** all. */\n ALL: 'all';\n\n /** each_quorum. */\n EACH_QUORUM: 'each_quorum';\n\n /** quorum. */\n QUORUM: 'quorum';\n\n /** local_quorum. */\n LOCAL_QUORUM: 'local_quorum';\n\n /** one. */\n ONE: 'one';\n\n /** two. */\n TWO: 'two';\n\n /** three. */\n THREE: 'three';\n\n /** local_one. */\n LOCAL_ONE: 'local_one';\n\n /** any. */\n ANY: 'any';\n\n /** serial. */\n SERIAL: 'serial';\n\n /** local_serial. */\n LOCAL_SERIAL: 'local_serial';\n};\n\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 */\nexport const DbCassandraConsistencyLevelValues: DbCassandraConsistencyLevelValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n\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 */\nexport const FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n\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 */\nexport const FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n\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 */\nexport const FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n\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 */\nexport const FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n\n/**\n * Identifies the Values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport type FaasTriggerValues = {\n /** A response to some data source operation such as a database or filesystem read/write. */\n DATASOURCE: 'datasource';\n\n /** To provide an answer to an inbound HTTP request. */\n HTTP: 'http';\n\n /** A function is set to be executed when messages are sent to a messaging system. */\n PUBSUB: 'pubsub';\n\n /** A function is scheduled to be executed regularly. */\n TIMER: 'timer';\n\n /** If none of the others apply. */\n OTHER: 'other';\n};\n\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 */\nexport const FaasTriggerValues: FaasTriggerValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASTRIGGERVALUES_DATASOURCE,\n TMP_FAASTRIGGERVALUES_HTTP,\n TMP_FAASTRIGGERVALUES_PUBSUB,\n TMP_FAASTRIGGERVALUES_TIMER,\n TMP_FAASTRIGGERVALUES_OTHER,\n ]);\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\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/**\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 */\nexport const FAASDOCUMENTOPERATIONVALUES_INSERT =\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n\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 */\nexport const FAASDOCUMENTOPERATIONVALUES_EDIT =\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n\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 */\nexport const FAASDOCUMENTOPERATIONVALUES_DELETE =\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n\n/**\n * Identifies the Values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport type FaasDocumentOperationValues = {\n /** When a new object is created. */\n INSERT: 'insert';\n\n /** When an object is modified. */\n EDIT: 'edit';\n\n /** When an object is deleted. */\n DELETE: 'delete';\n};\n\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 */\nexport const FaasDocumentOperationValues: FaasDocumentOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n ]);\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\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/**\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 */\nexport const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n\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 */\nexport const FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n\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 */\nexport const FAASINVOKEDPROVIDERVALUES_AZURE =\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n\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 */\nexport const FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the 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 * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport type FaasInvokedProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\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 */\nexport const FaasInvokedProviderValues: FaasInvokedProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n\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 */\nexport const NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n\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 */\nexport const NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n\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 */\nexport const NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n\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 */\nexport const NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n\n/**\n * Identifies the Values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport type NetTransportValues = {\n /** ip_tcp. */\n IP_TCP: 'ip_tcp';\n\n /** ip_udp. */\n IP_UDP: 'ip_udp';\n\n /** Another IP-based protocol. */\n IP: 'ip';\n\n /** Unix Domain socket. See below. */\n UNIX: 'unix';\n\n /** Named or anonymous pipe. See note below. */\n PIPE: 'pipe';\n\n /** In-process communication. */\n INPROC: 'inproc';\n\n /** Something else (non IP-based). */\n OTHER: 'other';\n};\n\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 */\nexport const NetTransportValues: NetTransportValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIFI =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIRED =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_CELL =\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n\n/**\n * Identifies the Values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionTypeValues = {\n /** wifi. */\n WIFI: 'wifi';\n\n /** wired. */\n WIRED: 'wired';\n\n /** cell. */\n CELL: 'cell';\n\n /** unavailable. */\n UNAVAILABLE: 'unavailable';\n\n /** unknown. */\n UNKNOWN: 'unknown';\n};\n\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 */\nexport const NetHostConnectionTypeValues: NetHostConnectionTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n ]);\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\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/**\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GSM =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NR =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n\n/**\n * Identifies the 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 * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionSubtypeValues = {\n /** GPRS. */\n GPRS: 'gprs';\n\n /** EDGE. */\n EDGE: 'edge';\n\n /** UMTS. */\n UMTS: 'umts';\n\n /** CDMA. */\n CDMA: 'cdma';\n\n /** EVDO Rel. 0. */\n EVDO_0: 'evdo_0';\n\n /** EVDO Rev. A. */\n EVDO_A: 'evdo_a';\n\n /** CDMA2000 1XRTT. */\n CDMA2000_1XRTT: 'cdma2000_1xrtt';\n\n /** HSDPA. */\n HSDPA: 'hsdpa';\n\n /** HSUPA. */\n HSUPA: 'hsupa';\n\n /** HSPA. */\n HSPA: 'hspa';\n\n /** IDEN. */\n IDEN: 'iden';\n\n /** EVDO Rev. B. */\n EVDO_B: 'evdo_b';\n\n /** LTE. */\n LTE: 'lte';\n\n /** EHRPD. */\n EHRPD: 'ehrpd';\n\n /** HSPAP. */\n HSPAP: 'hspap';\n\n /** GSM. */\n GSM: 'gsm';\n\n /** TD-SCDMA. */\n TD_SCDMA: 'td_scdma';\n\n /** IWLAN. */\n IWLAN: 'iwlan';\n\n /** 5G NR (New Radio). */\n NR: 'nr';\n\n /** 5G NRNSA (New Radio Non-Standalone). */\n NRNSA: 'nrnsa';\n\n /** LTE CA. */\n LTE_CA: 'lte_ca';\n};\n\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 */\nexport const NetHostConnectionSubtypeValues: NetHostConnectionSubtypeValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n\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 */\nexport const HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n\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 */\nexport const HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n\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 */\nexport const HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n\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 */\nexport const HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n\n/**\n * Identifies the 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 * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport type HttpFlavorValues = {\n /** HTTP 1.0. */\n HTTP_1_0: '1.0';\n\n /** HTTP 1.1. */\n HTTP_1_1: '1.1';\n\n /** HTTP 2. */\n HTTP_2_0: '2.0';\n\n /** SPDY protocol. */\n SPDY: 'SPDY';\n\n /** QUIC protocol. */\n QUIC: 'QUIC';\n};\n\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 */\nexport const HttpFlavorValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_QUEUE =\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_TOPIC =\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n\n/**\n * Identifies the Values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport type MessagingDestinationKindValues = {\n /** A message sent to a queue. */\n QUEUE: 'queue';\n\n /** A message sent to a topic. */\n TOPIC: 'topic';\n};\n\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 */\nexport const MessagingDestinationKindValues: MessagingDestinationKindValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n ]);\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\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/**\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 */\nexport const MESSAGINGOPERATIONVALUES_RECEIVE =\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n\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 */\nexport const MESSAGINGOPERATIONVALUES_PROCESS =\n TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n\n/**\n * Identifies the 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 * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport type MessagingOperationValues = {\n /** receive. */\n RECEIVE: 'receive';\n\n /** process. */\n PROCESS: 'process';\n};\n\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 */\nexport const MessagingOperationValues: MessagingOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n ]);\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\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/**\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 */\nexport const RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_CANCELLED =\n TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNKNOWN =\n TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT =\n TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED =\n TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_NOT_FOUND =\n TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS =\n TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED =\n TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED =\n TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION =\n TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_ABORTED =\n TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE =\n TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_INTERNAL =\n TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_DATA_LOSS =\n TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n\n/**\n * Identifies the 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 * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport type RpcGrpcStatusCodeValues = {\n /** OK. */\n OK: 0;\n\n /** CANCELLED. */\n CANCELLED: 1;\n\n /** UNKNOWN. */\n UNKNOWN: 2;\n\n /** INVALID_ARGUMENT. */\n INVALID_ARGUMENT: 3;\n\n /** DEADLINE_EXCEEDED. */\n DEADLINE_EXCEEDED: 4;\n\n /** NOT_FOUND. */\n NOT_FOUND: 5;\n\n /** ALREADY_EXISTS. */\n ALREADY_EXISTS: 6;\n\n /** PERMISSION_DENIED. */\n PERMISSION_DENIED: 7;\n\n /** RESOURCE_EXHAUSTED. */\n RESOURCE_EXHAUSTED: 8;\n\n /** FAILED_PRECONDITION. */\n FAILED_PRECONDITION: 9;\n\n /** ABORTED. */\n ABORTED: 10;\n\n /** OUT_OF_RANGE. */\n OUT_OF_RANGE: 11;\n\n /** UNIMPLEMENTED. */\n UNIMPLEMENTED: 12;\n\n /** INTERNAL. */\n INTERNAL: 13;\n\n /** UNAVAILABLE. */\n UNAVAILABLE: 14;\n\n /** DATA_LOSS. */\n DATA_LOSS: 15;\n\n /** UNAUTHENTICATED. */\n UNAUTHENTICATED: 16;\n};\n\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 */\nexport const RpcGrpcStatusCodeValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n\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 */\nexport const MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n\n/**\n * Identifies the Values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport type MessageTypeValues = {\n /** sent. */\n SENT: 'SENT';\n\n /** received. */\n RECEIVED: 'RECEIVED';\n};\n\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 */\nexport const MessageTypeValues: MessageTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGETYPEVALUES_SENT,\n TMP_MESSAGETYPEVALUES_RECEIVED,\n ]);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/index.d.ts new file mode 100644 index 0000000..6fc2d4d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/index.d.ts @@ -0,0 +1,2 @@ +export * from './SemanticAttributes'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/index.js new file mode 100644 index 0000000..fa8474a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/index.js @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable no-restricted-syntax -- + * These re-exports are only of constants, only one-level deep at this point, + * and should not cause problems for tree-shakers. + */ +export * from './SemanticAttributes'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/index.js.map new file mode 100644 index 0000000..eb6178a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/trace/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/trace/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,cAAc,sBAAsB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* 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 */\nexport * from './SemanticAttributes';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.d.ts new file mode 100644 index 0000000..3b14ba2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "1.39.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js new file mode 100644 index 0000000..40569ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '1.39.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js.map new file mode 100644 index 0000000..2e5e9f8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.39.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.d.ts new file mode 100644 index 0000000..0343893 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.d.ts @@ -0,0 +1,14443 @@ +/** + * This attribute represents the state of the application. + * + * @example created + * + * @note The Android lifecycle states are defined in [Activity lifecycle callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), and from which the `OS identifiers` are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ANDROID_APP_STATE: "android.app.state"; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_APP_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_APP_STATE_VALUE_CREATED: "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_APP_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found in the [Android API levels documentation](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels). + * + * @example 33 + * @example 32 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ANDROID_OS_API_LEVEL: "android.os.api_level"; +/** + * Deprecated. Use `android.app.state` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `android.app.state`. + */ +export declare const ATTR_ANDROID_STATE: "android.state"; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_STATE_VALUE_CREATED: "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ANDROID_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Unique identifier for a particular build or compilation of the application. + * + * @example 6cff0a7e-cefc-4668-96f5-1273d8b334d0 + * @example 9f2b833506aa6973a92fde9733e6271f + * @example my-app-1.0.0-code-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_BUILD_ID: "app.build_id"; +/** + * A unique identifier representing the installation of an application on a specific device + * + * @example 2ab2916d-a51f-4ac8-80ee-45ac31a28092 + * + * @note Its value **SHOULD** persist across launches of the same application installation, including through application upgrades. + * It **SHOULD** change if the application is uninstalled or if all applications of the vendor are uninstalled. + * Additionally, users might be able to reset this value (e.g. by clearing application data). + * If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` **SHOULD** have a different value. + * If multiple OpenTelemetry SDKs are used within the same application, they **SHOULD** use the same value for `app.installation.id`. + * Hardware IDs (e.g. serial number, IMEI, MAC address) **MUST NOT** be used as the `app.installation.id`. + * + * For iOS, this value **SHOULD** be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor). + * + * For Android, examples of `app.installation.id` implementations include: + * + * - [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations). + * - A globally unique UUID which is persisted across sessions in your application. + * - [App set ID](https://developer.android.com/identity/app-set-id). + * - [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID). + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_INSTALLATION_ID: "app.installation.id"; +/** + * A number of frame renders that experienced jank. + * + * @example 9 + * @example 42 + * + * @note Depending on platform limitations, the value provided **MAY** be approximation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_JANK_FRAME_COUNT: "app.jank.frame_count"; +/** + * The time period, in seconds, for which this jank is being reported. + * + * @example 1.0 + * @example 5.0 + * @example 10.24 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_JANK_PERIOD: "app.jank.period"; +/** + * The minimum rendering threshold for this jank, in seconds. + * + * @example 0.016 + * @example 0.7 + * @example 1.024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_JANK_THRESHOLD: "app.jank.threshold"; +/** + * The x (horizontal) coordinate of a screen coordinate, in screen pixels. + * + * @example 0 + * @example 131 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_COORDINATE_X: "app.screen.coordinate.x"; +/** + * The y (vertical) component of a screen coordinate, in screen pixels. + * + * @example 12 + * @example 99 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_COORDINATE_Y: "app.screen.coordinate.y"; +/** + * An identifier that uniquely differentiates this screen from other screens in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example com.example.app.MainActivity + * @example com.example.shop.ProductDetailFragment + * @example MyApp.ProfileView + * @example MyApp.ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_ID: "app.screen.id"; +/** + * The name of an application screen. + * + * @example MainActivity + * @example ProductDetailFragment + * @example ProfileView + * @example ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_SCREEN_NAME: "app.screen.name"; +/** + * An identifier that uniquely differentiates this widget from other widgets in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example submit_order_1829 + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_WIDGET_ID: "app.widget.id"; +/** + * The name of an application widget. + * + * @example submit + * @example attack + * @example Clear Cart + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_APP_WIDGET_NAME: "app.widget.name"; +/** + * The provenance filename of the built attestation which directly relates to the build artifact filename. This filename **SHOULD** accompany the artifact at publish time. See the [SLSA Relationship](https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations) specification for more information. + * + * @example golang-binary-amd64-v0.1.0.attestation + * @example docker-image-amd64-v0.1.0.intoto.json1 + * @example release-1.tar.gz.attestation + * @example file-name-package.tar.gz.intoto.json1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_ATTESTATION_FILENAME: "artifact.attestation.filename"; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the [software attestation space](https://github.com/in-toto/attestation/tree/main/spec) also refer to this as the **digest**. + * + * @example 1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_ATTESTATION_HASH: "artifact.attestation.hash"; +/** + * The id of the build [software attestation](https://slsa.dev/attestation-model). + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_ATTESTATION_ID: "artifact.attestation.id"; +/** + * The human readable file name of the artifact, typically generated during build and release processes. Often includes the package name and version in the file name. + * + * @example golang-binary-amd64-v0.1.0 + * @example docker-image-amd64-v0.1.0 + * @example release-1.tar.gz + * @example file-name-package.tar.gz + * + * @note This file name can also act as the [Package Name](https://slsa.dev/spec/v1.0/terminology#package-model) + * in cases where the package ecosystem maps accordingly. + * Additionally, the artifact [can be published](https://slsa.dev/spec/v1.0/terminology#software-supply-chain) + * for others, but that is not a guarantee. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_FILENAME: "artifact.filename"; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), often found in checksum.txt on a release of the artifact and used to verify package integrity. + * + * @example 9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9 + * + * @note The specific algorithm used to create the cryptographic hash value is + * not defined. In situations where an artifact has multiple + * cryptographic hashes, it is up to the implementer to choose which + * hash value to set here; this should be the most secure hash algorithm + * that is suitable for the situation and consistent with the + * corresponding attestation. The implementer can then provide the other + * hash values through an additional set of attribute extensions as they + * deem necessary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_HASH: "artifact.hash"; +/** + * The [Package URL](https://github.com/package-url/purl-spec) of the [package artifact](https://slsa.dev/spec/v1.0/terminology#package-model) provides a standard way to identify and locate the packaged artifact. + * + * @example pkg:github/package-url/purl-spec@1209109710924 + * @example pkg:npm/foo@12.12.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_PURL: "artifact.purl"; +/** + * The version of the artifact. + * + * @example v0.1.0 + * @example 1.2.1 + * @example 122691-build + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ARTIFACT_VERSION: "artifact.version"; +/** + * The result of the authentication operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHENTICATION_RESULT: "aspnetcore.authentication.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "none" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * No authentication information returned. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_NONE: "none"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_SUCCESS: "success"; +/** + * The identifier that names a particular authentication handler. + * + * @example Cookies + * @example Bearer + * @example Identity.Application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHENTICATION_SCHEME: "aspnetcore.authentication.scheme"; +/** + * The name of the authorization policy. + * + * @example RequireAdminRole + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHORIZATION_POLICY: "aspnetcore.authorization.policy"; +/** + * The result of calling the authorization service. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_AUTHORIZATION_RESULT: "aspnetcore.authorization.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_SUCCESS: "success"; +/** + * The error code for a failed identity operation. + * + * @example DefaultError + * @example PasswordMismatch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_ERROR_CODE: "aspnetcore.identity.error_code"; +/** + * The result from checking the password. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT: "aspnetcore.identity.password_check_result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "password_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the password was missing from the user. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_PASSWORD_MISSING: "password_missing"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS: "success"; +/** + * Enum value "success_rehash_needed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful however the password was encoded using a deprecated algorithm and should be rehashed and updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS_REHASH_NEEDED: "success_rehash_needed"; +/** + * Enum value "user_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the user was missing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_USER_MISSING: "user_missing"; +/** + * The result of the identity operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_RESULT: "aspnetcore.identity.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_RESULT_VALUE_SUCCESS: "success"; +/** + * Whether the sign in result was success or failure. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT: "aspnetcore.identity.sign_in.result"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "locked_out" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is locked out. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_LOCKED_OUT: "locked_out"; +/** + * Enum value "not_allowed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is not allowed to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_NOT_ALLOWED: "not_allowed"; +/** + * Enum value "requires_two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User requires two factory authentication to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_REQUIRES_TWO_FACTOR: "requires_two_factor"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_SUCCESS: "success"; +/** + * The authentication type. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE: "aspnetcore.identity.sign_in.type"; +/** + * Enum value "external" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a previously registered third-party login. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_EXTERNAL: "external"; +/** + * Enum value "passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with passkey. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSKEY: "passkey"; +/** + * Enum value "password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSWORD: "password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a two factor provider. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR: "two_factor"; +/** + * Enum value "two_factor_authenticator" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factor authenticator app. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_AUTHENTICATOR: "two_factor_authenticator"; +/** + * Enum value "two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factory recovery code. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_RECOVERY_CODE: "two_factor_recovery_code"; +/** + * What the token will be used for. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE: "aspnetcore.identity.token_purpose"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * Any token purpose that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_OTHER: "_OTHER"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing the user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_EMAIL: "change_email"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing a user phone number. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_PHONE_NUMBER: "change_phone_number"; +/** + * Enum value "email_confirmation" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for confirming user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_EMAIL_CONFIRMATION: "email_confirmation"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for resetting a user password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_RESET_PASSWORD: "reset_password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing user two factor settings. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_TWO_FACTOR: "two_factor"; +/** + * The result of token verification. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED: "aspnetcore.identity.token_verified"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_SUCCESS: "success"; +/** + * The user update type. + * + * @example update + * @example user_name + * @example reset_password + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE: "aspnetcore.identity.user.update_type"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Any update type that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_OTHER: "_OTHER"; +/** + * Enum value "access_failed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure recorded. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ACCESS_FAILED: "access_failed"; +/** + * Enum value "add_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_CLAIMS: "add_claims"; +/** + * Enum value "add_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_LOGIN: "add_login"; +/** + * Enum value "add_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_PASSWORD: "add_password"; +/** + * Enum value "add_to_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user added to roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_TO_ROLES: "add_to_roles"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_EMAIL: "change_email"; +/** + * Enum value "change_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PASSWORD: "change_password"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PHONE_NUMBER: "change_phone_number"; +/** + * Enum value "confirm_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email confirmed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CONFIRM_EMAIL: "confirm_email"; +/** + * Enum value "generate_new_two_factor_recovery_codes" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user new two-factor recovery codes generated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_GENERATE_NEW_TWO_FACTOR_RECOVERY_CODES: "generate_new_two_factor_recovery_codes"; +/** + * Enum value "password_rehash" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password rehashed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_PASSWORD_REHASH: "password_rehash"; +/** + * Enum value "redeem_two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor recovery code redeemed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REDEEM_TWO_FACTOR_RECOVERY_CODE: "redeem_two_factor_recovery_code"; +/** + * Enum value "remove_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_AUTHENTICATION_TOKEN: "remove_authentication_token"; +/** + * Enum value "remove_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_CLAIMS: "remove_claims"; +/** + * Enum value "remove_from_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user removed from roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_FROM_ROLES: "remove_from_roles"; +/** + * Enum value "remove_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_LOGIN: "remove_login"; +/** + * Enum value "remove_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSKEY: "remove_passkey"; +/** + * Enum value "remove_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSWORD: "remove_password"; +/** + * Enum value "replace_claim" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claim replaced. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REPLACE_CLAIM: "replace_claim"; +/** + * Enum value "reset_access_failed_count" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure count reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_ACCESS_FAILED_COUNT: "reset_access_failed_count"; +/** + * Enum value "reset_authenticator_key" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authenticator key reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_AUTHENTICATOR_KEY: "reset_authenticator_key"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_PASSWORD: "reset_password"; +/** + * Enum value "security_stamp" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user security stamp updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SECURITY_STAMP: "security_stamp"; +/** + * Enum value "set_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_AUTHENTICATION_TOKEN: "set_authentication_token"; +/** + * Enum value "set_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_EMAIL: "set_email"; +/** + * Enum value "set_lockout_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_ENABLED: "set_lockout_enabled"; +/** + * Enum value "set_lockout_end_date" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout end date set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_END_DATE: "set_lockout_end_date"; +/** + * Enum value "set_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PASSKEY: "set_passkey"; +/** + * Enum value "set_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PHONE_NUMBER: "set_phone_number"; +/** + * Enum value "set_two_factor_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor authentication enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_TWO_FACTOR_ENABLED: "set_two_factor_enabled"; +/** + * Enum value "update" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_UPDATE: "update"; +/** + * Enum value "user_name" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user name updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_USER_NAME: "user_name"; +/** + * The full name of the identity user type. + * + * @example Contoso.ContosoUser + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_IDENTITY_USER_TYPE: "aspnetcore.identity.user_type"; +/** + * The name of the library or subsystem using the memory pool instance. + * + * @example kestrel + * @example iis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_MEMORY_POOL_OWNER: "aspnetcore.memory_pool.owner"; +/** + * A flag indicating whether the sign in is persistent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ASPNETCORE_SIGN_IN_IS_PERSISTENT: "aspnetcore.sign_in.is_persistent"; +/** + * The unique identifier of the AWS Bedrock Guardrail. A [guardrail](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) helps safeguard and prevent unwanted behavior from model responses or user messages. + * + * @example sgi5gkybzqak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_BEDROCK_GUARDRAIL_ID: "aws.bedrock.guardrail.id"; +/** + * The unique identifier of the AWS Bedrock Knowledge base. A [knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) is a bank of information that can be queried by models to generate more relevant responses and augment prompts. + * + * @example XFWUPB9PAW + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_BEDROCK_KNOWLEDGE_BASE_ID: "aws.bedrock.knowledge_base.id"; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @example ["{ "AttributeName": "string", "AttributeType": "string" }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: "aws.dynamodb.attribute_definitions"; +/** + * The value of the `AttributesToGet` request parameter. + * + * @example ["lives", "id"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET: "aws.dynamodb.attributes_to_get"; +/** + * The value of the `ConsistentRead` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_CONSISTENT_READ: "aws.dynamodb.consistent_read"; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @example ["{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY: "aws.dynamodb.consumed_capacity"; +/** + * The value of the `Count` response parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_COUNT: "aws.dynamodb.count"; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @example Users + * @example CatsTable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE: "aws.dynamodb.exclusive_start_table"; +/** + * The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field. + * + * @example ["{ "Create": { "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: "aws.dynamodb.global_secondary_index_updates"; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field + * + * @example ["{ "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: "aws.dynamodb.global_secondary_indexes"; +/** + * The value of the `IndexName` request parameter. + * + * @example name_to_group + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_INDEX_NAME: "aws.dynamodb.index_name"; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @example { "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] } + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS: "aws.dynamodb.item_collection_metrics"; +/** + * The value of the `Limit` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_LIMIT: "aws.dynamodb.limit"; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @example ["{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: "aws.dynamodb.local_secondary_indexes"; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @example Title + * @example Title, Price, Color + * @example Title, Description, RelatedItems, ProductReviews + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_PROJECTION: "aws.dynamodb.projection"; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: "aws.dynamodb.provisioned_read_capacity"; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: "aws.dynamodb.provisioned_write_capacity"; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SCAN_FORWARD: "aws.dynamodb.scan_forward"; +/** + * The value of the `ScannedCount` response parameter. + * + * @example 50 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SCANNED_COUNT: "aws.dynamodb.scanned_count"; +/** + * The value of the `Segment` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SEGMENT: "aws.dynamodb.segment"; +/** + * The value of the `Select` request parameter. + * + * @example ALL_ATTRIBUTES + * @example COUNT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_SELECT: "aws.dynamodb.select"; +/** + * The number of items in the `TableNames` response parameter. + * + * @example 20 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_TABLE_COUNT: "aws.dynamodb.table_count"; +/** + * The keys in the `RequestItems` object field. + * + * @example ["Users", "Cats"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_TABLE_NAMES: "aws.dynamodb.table_names"; +/** + * The value of the `TotalSegments` request parameter. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS: "aws.dynamodb.total_segments"; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_CLUSTER_ARN: "aws.ecs.cluster.arn"; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @example arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_CONTAINER_ARN: "aws.ecs.container.arn"; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_LAUNCHTYPE: "aws.ecs.launchtype"; +/** + * Enum value "ec2" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon EC2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AWS_ECS_LAUNCHTYPE_VALUE_EC2: "ec2"; +/** + * Enum value "fargate" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon Fargate + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AWS_ECS_LAUNCHTYPE_VALUE_FARGATE: "fargate"; +/** + * The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids). + * + * @example arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b + * @example arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_ARN: "aws.ecs.task.arn"; +/** + * The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task. + * + * @example opentelemetry-family + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_FAMILY: "aws.ecs.task.family"; +/** + * The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`. + * + * @example 10838bed-421f-43ef-870a-f43feacbbb5b + * @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_ID: "aws.ecs.task.id"; +/** + * The revision for the task definition used to create the ECS task. + * + * @example 8 + * @example 26 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_ECS_TASK_REVISION: "aws.ecs.task.revision"; +/** + * The ARN of an EKS cluster. + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_EKS_CLUSTER_ARN: "aws.eks.cluster.arn"; +/** + * The AWS extended request ID as returned in the response header `x-amz-id-2`. + * + * @example wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ= + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_EXTENDED_REQUEST_ID: "aws.extended_request_id"; +/** + * The name of the AWS Kinesis [stream](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) the request refers to. Corresponds to the `--stream-name` parameter of the Kinesis [describe-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html) operation. + * + * @example some-stream-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_KINESIS_STREAM_NAME: "aws.kinesis.stream_name"; +/** + * 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). + * + * @example arn:aws:lambda:us-east-1:123456:function:myfunction:myalias + * + * @note This may be different from `cloud.resource_id` if an alias is involved. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LAMBDA_INVOKED_ARN: "aws.lambda.invoked_arn"; +/** + * The UUID of the [AWS Lambda EvenSource Mapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html). An event source is mapped to a lambda function. It's contents are read by Lambda and used to trigger a function. This isn't available in the lambda execution context or the lambda runtime environtment. This is going to be populated by the AWS SDK for each language when that UUID is present. Some of these operations are Create/Delete/Get/List/Update EventSourceMapping. + * + * @example 587ad24b-03b9-4413-8202-bbd56b36e5b7 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LAMBDA_RESOURCE_MAPPING_ID: "aws.lambda.resource_mapping.id"; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*"] + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_GROUP_ARNS: "aws.log.group.arns"; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * @example ["/aws/lambda/my-function", "opentelemetry-service"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_GROUP_NAMES: "aws.log.group.names"; +/** + * The ARN(s) of the AWS log stream(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_STREAM_ARNS: "aws.log.stream.arns"; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @example ["logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_LOG_STREAM_NAMES: "aws.log.stream.names"; +/** + * The AWS request ID as returned in the response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`. + * + * @example 79b9da39-b7ae-508a-a6bc-864b2829c622 + * @example C9ER4AJX75574TDJ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_REQUEST_ID: "aws.request_id"; +/** + * The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example some-bucket-name + * + * @note The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter. + * This applies to almost all S3 operations except `list-buckets`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_BUCKET: "aws.s3.bucket"; +/** + * The source object (in the form `bucket`/`key`) for the copy operation. + * + * @example someFile.yml + * + * @note The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter + * of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html). + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_COPY_SOURCE: "aws.s3.copy_source"; +/** + * The delete request container that specifies the objects to be deleted. + * + * @example Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean + * + * @note The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation. + * The `delete` attribute corresponds to the `--delete` parameter of the + * [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_DELETE: "aws.s3.delete"; +/** + * The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example someFile.yml + * + * @note The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter. + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) + * - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html) + * - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html) + * - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html) + * - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html) + * - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html) + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_KEY: "aws.s3.key"; +/** + * The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000. + * + * @example 3456 + * + * @note The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations. + * The `part_number` attribute corresponds to the `--part-number` parameter of the + * [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_PART_NUMBER: "aws.s3.part_number"; +/** + * Upload ID that identifies the multipart upload. + * + * @example dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ + * + * @note The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter + * of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations. + * This applies in particular to the following operations: + * + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_S3_UPLOAD_ID: "aws.s3.upload_id"; +/** + * The ARN of the Secret stored in the Secrets Mangger + * + * @example arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_SECRETSMANAGER_SECRET_ARN: "aws.secretsmanager.secret.arn"; +/** + * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) is a logical access point that acts as a communication channel. + * + * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_SNS_TOPIC_ARN: "aws.sns.topic.arn"; +/** + * The URL of the AWS SQS Queue. It's a unique identifier for a queue in Amazon Simple Queue Service (SQS) and is used to access the queue and perform actions on it. + * + * @example https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_SQS_QUEUE_URL: "aws.sqs.queue.url"; +/** + * The ARN of the AWS Step Functions Activity. + * + * @example arn:aws:states:us-east-1:123456789012:activity:get-greeting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN: "aws.step_functions.activity.arn"; +/** + * The ARN of the AWS Step Functions State Machine. + * + * @example arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN: "aws.step_functions.state_machine.arn"; +/** + * Deprecated, use `azure.resource_provider.namespace` instead. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource_provider.namespace`. + */ +export declare const ATTR_AZ_NAMESPACE: "az.namespace"; +/** + * Deprecated, use `azure.service.request.id` instead. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.service.request.id`. + */ +export declare const ATTR_AZ_SERVICE_REQUEST_ID: "az.service_request_id"; +/** + * The unique identifier of the client instance. + * + * @example 3ba4827d-4422-483f-b59f-85b74211c11d + * @example storage-client-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_CLIENT_ID: "azure.client.id"; +/** + * Cosmos client connection mode. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_CONNECTION_MODE: "azure.cosmosdb.connection.mode"; +/** + * Enum value "direct" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT: "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY: "gateway"; +/** + * Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL: "azure.cosmosdb.consistency.level"; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Bounded Staleness + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS: "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Consistent Prefix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX: "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Eventual + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL: "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Session + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION: "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Strong + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG: "Strong"; +/** + * List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @note Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS: "azure.cosmosdb.operation.contacted_regions"; +/** + * The number of request units consumed by the operation. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE: "azure.cosmosdb.operation.request_charge"; +/** + * Request payload size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_REQUEST_BODY_SIZE: "azure.cosmosdb.request.body.size"; +/** + * Cosmos DB sub status code. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE: "azure.cosmosdb.response.sub_status_code"; +/** + * [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_RESOURCE_PROVIDER_NAMESPACE: "azure.resource_provider.namespace"; +/** + * The unique identifier of the service request. It's generated by the Azure service and returned with the response. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_AZURE_SERVICE_REQUEST_ID: "azure.service.request.id"; +/** + * Array of brand name and version separated by a space + * + * @example [" Not A;Brand 99", "Chromium 99", "Chrome 99"] + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_BRANDS: "browser.brands"; +/** + * Preferred language of the user using the browser + * + * @example en + * @example en-US + * @example fr + * @example fr-FR + * + * @note This value is intended to be taken from the Navigator API `navigator.language`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_LANGUAGE: "browser.language"; +/** + * A boolean that is true if the browser is running on a mobile device + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute **SHOULD** be left unset. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_MOBILE: "browser.mobile"; +/** + * The platform on which the browser is running + * + * @example Windows + * @example macOS + * @example Android + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API **SHOULD NOT** be used instead and this attribute **SHOULD** be left unset in order for the values to be consistent. + * The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_BROWSER_PLATFORM: "browser.platform"; +/** + * 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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_CONSISTENCY_LEVEL: "cassandra.consistency.level"; +/** + * Enum value "all" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * All + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL: "all"; +/** + * Enum value "any" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Any + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY: "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Each Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM: "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE: "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM: "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL: "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE: "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM: "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL: "serial"; +/** + * Enum value "three" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Three + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE: "three"; +/** + * Enum value "two" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Two + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO: "two"; +/** + * The data center of the coordinating node for a query. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_COORDINATOR_DC: "cassandra.coordinator.dc"; +/** + * The ID of the coordinating node for a query. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_COORDINATOR_ID: "cassandra.coordinator.id"; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_PAGE_SIZE: "cassandra.page.size"; +/** + * Whether or not the query is idempotent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_QUERY_IDEMPOTENT: "cassandra.query.idempotent"; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: "cassandra.speculative_execution.count"; +/** + * The kind of action a pipeline run is performing. + * + * @example BUILD + * @example RUN + * @example SYNC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_ACTION_NAME: "cicd.pipeline.action.name"; +/** + * Enum value "BUILD" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a build. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_ACTION_NAME_VALUE_BUILD: "BUILD"; +/** + * Enum value "RUN" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_ACTION_NAME_VALUE_RUN: "RUN"; +/** + * Enum value "SYNC" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a sync. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_ACTION_NAME_VALUE_SYNC: "SYNC"; +/** + * The human readable name of the pipeline within a CI/CD system. + * + * @example Build and Test + * @example Lint + * @example Deploy Go Project + * @example deploy_to_environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_NAME: "cicd.pipeline.name"; +/** + * The result of a pipeline run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RESULT: "cicd.pipeline.result"; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_CANCELLATION: "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_ERROR: "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_SKIP: "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_SUCCESS: "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * A timeout caused the pipeline run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RESULT_VALUE_TIMEOUT: "timeout"; +/** + * The unique identifier of a pipeline run within a CI/CD system. + * + * @example 120912 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RUN_ID: "cicd.pipeline.run.id"; +/** + * The pipeline run goes through these states during its lifecycle. + * + * @example pending + * @example executing + * @example finalizing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RUN_STATE: "cicd.pipeline.run.state"; +/** + * Enum value "executing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The executing state spans the execution of any run tasks (eg. build, test). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RUN_STATE_VALUE_EXECUTING: "executing"; +/** + * Enum value "finalizing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The finalizing state spans from when the run has finished executing (eg. cleanup of run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RUN_STATE_VALUE_FINALIZING: "finalizing"; +/** + * Enum value "pending" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_RUN_STATE_VALUE_PENDING: "pending"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline run, providing the complete address in order to locate and identify the pipeline run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_RUN_URL_FULL: "cicd.pipeline.run.url.full"; +/** + * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures. + * + * @example Run GoLang Linter + * @example Go Build + * @example go-test + * @example deploy_binary + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_NAME: "cicd.pipeline.task.name"; +/** + * The unique identifier of a task run within a pipeline. + * + * @example 12097 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_RUN_ID: "cicd.pipeline.task.run.id"; +/** + * The result of a task run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_RUN_RESULT: "cicd.pipeline.task.run.result"; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was cancelled, eg. by a user manually cancelling the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_CANCELLATION: "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_ERROR: "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_FAILURE: "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SKIP: "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SUCCESS: "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * A timeout caused the task run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_TIMEOUT: "timeout"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline task run, providing the complete address in order to locate and identify the pipeline task run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL: "cicd.pipeline.task.run.url.full"; +/** + * The type of the task within a pipeline. + * + * @example build + * @example test + * @example deploy + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_PIPELINE_TASK_TYPE: "cicd.pipeline.task.type"; +/** + * Enum value "build" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * build + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_TYPE_VALUE_BUILD: "build"; +/** + * Enum value "deploy" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * deploy + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY: "deploy"; +/** + * Enum value "test" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * test + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_PIPELINE_TASK_TYPE_VALUE_TEST: "test"; +/** + * The name of a component of the CICD system. + * + * @example controller + * @example scheduler + * @example agent + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_SYSTEM_COMPONENT: "cicd.system.component"; +/** + * The unique identifier of a worker within a CICD system. + * + * @example abc123 + * @example 10.0.1.2 + * @example controller + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_ID: "cicd.worker.id"; +/** + * The name of a worker within a CICD system. + * + * @example agent-abc + * @example controller + * @example Ubuntu LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_NAME: "cicd.worker.name"; +/** + * The state of a CICD worker / agent. + * + * @example idle + * @example busy + * @example down + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_STATE: "cicd.worker.state"; +/** + * Enum value "available" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_WORKER_STATE_VALUE_AVAILABLE: "available"; +/** + * Enum value "busy" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is performing work for the CICD system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_WORKER_STATE_VALUE_BUSY: "busy"; +/** + * Enum value "offline" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not available to the CICD system (disconnected / down). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CICD_WORKER_STATE_VALUE_OFFLINE: "offline"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the worker, providing the complete address in order to locate and identify the worker. + * + * @example https://cicd.example.org/worker/abc123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CICD_WORKER_URL_FULL: "cicd.worker.url.full"; +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_ACCOUNT_ID: "cloud.account.id"; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_AVAILABILITY_ZONE: "cloud.availability_zone"; +/** + * The cloud platform in use. + * + * @note The prefix of the service **SHOULD** match the one specified in `cloud.provider`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_PLATFORM: "cloud.platform"; +/** + * Enum value "akamai_cloud.compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Akamai Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE: "akamai_cloud.compute"; +/** + * Enum value "alibaba_cloud_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Elastic Compute Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS: "alibaba_cloud_ecs"; +/** + * Enum value "alibaba_cloud_fc" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Function Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC: "alibaba_cloud_fc"; +/** + * Enum value "alibaba_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT: "alibaba_cloud_openshift"; +/** + * Enum value "aws_app_runner" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS App Runner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER: "aws_app_runner"; +/** + * Enum value "aws_ec2" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Compute Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_EC2: "aws_ec2"; +/** + * Enum value "aws_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Container Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_ECS: "aws_ecs"; +/** + * Enum value "aws_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_EKS: "aws_eks"; +/** + * Enum value "aws_elastic_beanstalk" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Beanstalk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK: "aws_elastic_beanstalk"; +/** + * Enum value "aws_lambda" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Lambda + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_LAMBDA: "aws_lambda"; +/** + * Enum value "aws_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on AWS (ROSA) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT: "aws_openshift"; +/** + * Enum value "azure.aks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_AKS: "azure.aks"; +/** + * Enum value "azure.app_service" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure App Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE: "azure.app_service"; +/** + * Enum value "azure.container_apps" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Apps + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS: "azure.container_apps"; +/** + * Enum value "azure.container_instances" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Instances + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES: "azure.container_instances"; +/** + * Enum value "azure.functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Functions + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS: "azure.functions"; +/** + * Enum value "azure.openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Red Hat OpenShift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT: "azure.openshift"; +/** + * Enum value "azure.vm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Virtual Machines + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_AZURE_VM: "azure.vm"; +/** + * Enum value "gcp.agent_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Vertex AI Agent Engine + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE: "gcp.agent_engine"; +/** + * Enum value "gcp_app_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud App Engine (GAE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE: "gcp_app_engine"; +/** + * Enum value "gcp_bare_metal_solution" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Bare Metal Solution (BMS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION: "gcp_bare_metal_solution"; +/** + * Enum value "gcp_cloud_functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Functions (GCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS: "gcp_cloud_functions"; +/** + * Enum value "gcp_cloud_run" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Run + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN: "gcp_cloud_run"; +/** + * Enum value "gcp_compute_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Compute Engine (GCE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE: "gcp_compute_engine"; +/** + * Enum value "gcp_kubernetes_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Kubernetes Engine (GKE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE: "gcp_kubernetes_engine"; +/** + * Enum value "gcp_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Google Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT: "gcp_openshift"; +/** + * Enum value "hetzner.cloud_server" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Server on Hetzner Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER: "hetzner.cloud_server"; +/** + * Enum value "ibm_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT: "ibm_cloud_openshift"; +/** + * Enum value "oracle_cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Compute on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_COMPUTE: "oracle_cloud_compute"; +/** + * Enum value "oracle_cloud_oke" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_OKE: "oracle_cloud_oke"; +/** + * Enum value "tencent_cloud_cvm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Cloud Virtual Machine (CVM) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM: "tencent_cloud_cvm"; +/** + * Enum value "tencent_cloud_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Elastic Kubernetes Service (EKS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS: "tencent_cloud_eks"; +/** + * Enum value "tencent_cloud_scf" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Serverless Cloud Function (SCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF: "tencent_cloud_scf"; +/** + * Enum value "vultr.cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Vultr Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE: "vultr.cloud_compute"; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_PROVIDER: "cloud.provider"; +/** + * Enum value "akamai_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Akamai Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD: "akamai_cloud"; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD: "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_AWS: "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_AZURE: "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_GCP: "gcp"; +/** + * Enum value "heroku" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Heroku Platform as a Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_HEROKU: "heroku"; +/** + * Enum value "hetzner" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Hetzner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_HETZNER: "hetzner"; +/** + * Enum value "ibm_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_IBM_CLOUD: "ibm_cloud"; +/** + * Enum value "oracle_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_ORACLE_CLOUD: "oracle_cloud"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_TENCENT_CLOUD: "tencent_cloud"; +/** + * Enum value "vultr" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Vultr + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CLOUD_PROVIDER_VALUE_VULTR: "vultr"; +/** + * The geographical region within a cloud provider. When associated with a resource, this attribute specifies the region where the resource operates. When calling services or APIs deployed on a cloud, this attribute identifies the region where the called destination is deployed. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_REGION: "cloud.region"; +/** + * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://google.aip.dev/122#full-resource-names) on GCP) + * + * @example arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function + * @example //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID + * @example /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/ + * + * @note On some cloud providers, it may not be possible to determine the full ID at startup, + * so it may be necessary to set `cloud.resource_id` as a span attribute instead. + * + * The exact value to use for `cloud.resource_id` depends on the cloud provider. + * The following well-known definitions **MUST** be used if you set this attribute and they apply: + * + * - **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + * Take care not to use the "invoked ARN" directly but replace any + * [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 invocable with + * multiple different aliases. + * - **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) + * - **Azure:** The [Fully Qualified Resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) of the invoked function, + * *not* the function app, having the form + * `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`. + * This means that a span attribute **MUST** be used, as an Azure function app can host multiple functions that would usually share + * a TracerProvider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUD_RESOURCE_ID: "cloud.resource_id"; +/** + * The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event. + * + * @example 123e4567-e89b-12d3-a456-426614174000 + * @example 0001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_ID: "cloudevents.event_id"; +/** + * The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened. + * + * @example https://github.com/cloudevents + * @example /cloudevents/spec/pull/123 + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_SOURCE: "cloudevents.event_source"; +/** + * The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses. + * + * @example "1.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION: "cloudevents.event_spec_version"; +/** + * The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source). + * + * @example "mynewfile.jpg" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_SUBJECT: "cloudevents.event_subject"; +/** + * The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence. + * + * @example com.github.pull_request.opened + * @example com.example.object.deleted.v2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDEVENTS_EVENT_TYPE: "cloudevents.event_type"; +/** + * The guid of the application. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_id`. This is the same value as + * reported by `cf app --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_APP_ID: "cloudfoundry.app.id"; +/** + * The index of the application instance. 0 when just one instance is active. + * + * @example 0 + * @example 1 + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the application instance index for applications + * deployed on the runtime. + * + * Application instrumentation should use the value from environment + * variable `CF_INSTANCE_INDEX`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID: "cloudfoundry.app.instance.id"; +/** + * The name of the application. + * + * @example my-app-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_name`. This is the same value + * as reported by `cf apps`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_APP_NAME: "cloudfoundry.app.name"; +/** + * The guid of the CloudFoundry org the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_id`. This is the same value as + * reported by `cf org --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_ORG_ID: "cloudfoundry.org.id"; +/** + * The name of the CloudFoundry organization the app is running in. + * + * @example my-org-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_name`. This is the same value as + * reported by `cf orgs`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_ORG_NAME: "cloudfoundry.org.name"; +/** + * The UID identifying the process. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to + * `VCAP_APPLICATION.app_id` for applications deployed to the runtime. + * For system components, this could be the actual PID. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_PROCESS_ID: "cloudfoundry.process.id"; +/** + * The type of process. + * + * @example web + * + * @note CloudFoundry applications can consist of multiple jobs. Usually the + * main process will be of type `web`. There can be additional background + * tasks or side-cars with different process types. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_PROCESS_TYPE: "cloudfoundry.process.type"; +/** + * The guid of the CloudFoundry space the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_id`. This is the same value as + * reported by `cf space --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SPACE_ID: "cloudfoundry.space.id"; +/** + * The name of the CloudFoundry space the application is running in. + * + * @example my-space-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_name`. This is the same value as + * reported by `cf spaces`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SPACE_NAME: "cloudfoundry.space.name"; +/** + * A guid or another name describing the event source. + * + * @example cf/gorouter + * + * @note CloudFoundry defines the `source_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the component name, e.g. "gorouter", for + * CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.id` should be set to + * `spec.deployment/spec.name`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SYSTEM_ID: "cloudfoundry.system.id"; +/** + * A guid describing the concrete instance of the event source. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the vm id for CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.instance.id` should be set to `spec.id`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID: "cloudfoundry.system.instance.id"; +/** + * Deprecated, use `code.column.number` + * + * @example 16 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.column.number`. + */ +export declare const ATTR_CODE_COLUMN: "code.column"; +/** + * Deprecated, use `code.file.path` instead + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.file.path`. + */ +export declare const ATTR_CODE_FILEPATH: "code.filepath"; +/** + * Deprecated, use `code.function.name` instead + * + * @example "serveRequest" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +export declare const ATTR_CODE_FUNCTION: "code.function"; +/** + * Deprecated, use `code.line.number` instead + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.line.number`. + */ +export declare const ATTR_CODE_LINENO: "code.lineno"; +/** + * Deprecated, namespace is now included into `code.function.name` + * + * @example "com.example.MyHttpService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +export declare const ATTR_CODE_NAMESPACE: "code.namespace"; +/** + * The command used to run the container (i.e. the command name). + * + * @example otelcontribcol + * + * @note If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_COMMAND: "container.command"; +/** + * All the command arguments (including the command/executable itself) run by the container. + * + * @example ["otelcontribcol", "--config", "config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_COMMAND_ARGS: "container.command_args"; +/** + * The full command run by the container as a single string representing the full command. + * + * @example otelcontribcol --config config.yaml + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_COMMAND_LINE: "container.command_line"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example user + * @example kernel + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export declare const ATTR_CONTAINER_CPU_STATE: "container.cpu.state"; +/** + * Enum value "kernel" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CONTAINER_CPU_STATE_VALUE_KERNEL: "kernel"; +/** + * Enum value "system" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When CPU is used by the system (host OS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CONTAINER_CPU_STATE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CONTAINER_CPU_STATE_VALUE_USER: "user"; +/** + * The name of the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin used by the volume. + * + * @example pd.csi.storage.gke.io + * + * @note This can sometimes be referred to as a "driver" in CSI implementations. This should represent the `name` field of the GetPluginInfo RPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_CSI_PLUGIN_NAME: "container.csi.plugin.name"; +/** + * The unique volume ID returned by the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin. + * + * @example projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk + * + * @note This can sometimes be referred to as a "volume handle" in CSI implementations. This should represent the `Volume.volume_id` field in CSI spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_CSI_VOLUME_ID: "container.csi.volume.id"; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_ID: "container.id"; +/** + * Runtime specific image identifier. Usually a hash algorithm followed by a UUID. + * + * @example sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f + * + * @note Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect) endpoint. + * K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. + * The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_ID: "container.image.id"; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_NAME: "container.image.name"; +/** + * Repo digests of the container image as provided by the container runtime. + * + * @example ["example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb", "internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578"] + * + * @note [Docker](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_REPO_DIGESTS: "container.image.repo_digests"; +/** + * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_IMAGE_TAGS: "container.image.tags"; +/** + * Container labels, `` being the label name, the value being the label value. + * + * @example nginx + * + * @note For example, a docker container label `app` with value `nginx` **SHOULD** be recorded as the `container.label.app` attribute with value `"nginx"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_LABEL: (key: string) => string; +/** + * Deprecated, use `container.label` instead. + * + * @example nginx + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.label`. + */ +export declare const ATTR_CONTAINER_LABELS: (key: string) => string; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_NAME: "container.name"; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.runtime.name`. + */ +export declare const ATTR_CONTAINER_RUNTIME: "container.runtime"; +/** + * A description about the runtime which could include, for example details about the CRI/API version being used or other customisations. + * + * @example docker://19.3.1 - CRI: 1.22.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_RUNTIME_DESCRIPTION: "container.runtime.description"; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_RUNTIME_NAME: "container.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "1.0.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CONTAINER_RUNTIME_VERSION: "container.runtime.version"; +/** + * The logical CPU number [0..n-1] + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CPU_LOGICAL_NUMBER: "cpu.logical_number"; +/** + * The mode of the CPU + * + * @example user + * @example system + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CPU_MODE: "cpu.mode"; +/** + * Enum value "idle" for attribute {@link ATTR_CPU_MODE}. + * + * Idle + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_IDLE: "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_CPU_MODE}. + * + * Interrupt + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_INTERRUPT: "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_CPU_MODE}. + * + * IO Wait + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_IOWAIT: "iowait"; +/** + * Enum value "kernel" for attribute {@link ATTR_CPU_MODE}. + * + * Kernel + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_KERNEL: "kernel"; +/** + * Enum value "nice" for attribute {@link ATTR_CPU_MODE}. + * + * Nice + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_NICE: "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_CPU_MODE}. + * + * Steal + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_STEAL: "steal"; +/** + * Enum value "system" for attribute {@link ATTR_CPU_MODE}. + * + * System + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_CPU_MODE}. + * + * User + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPU_MODE_VALUE_USER: "user"; +/** + * Value of the garbage collector collection generation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_CPYTHON_GC_GENERATION: "cpython.gc.generation"; +/** + * Enum value 0 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPYTHON_GC_GENERATION_VALUE_GENERATION_0: 0; +/** + * Enum value 1 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPYTHON_GC_GENERATION_VALUE_GENERATION_1: 1; +/** + * Enum value 2 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const CPYTHON_GC_GENERATION_VALUE_GENERATION_2: 2; +/** + * Deprecated, use `cassandra.consistency.level` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.consistency.level`. + */ +export declare const ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL: "db.cassandra.consistency_level"; +/** + * Enum value "all" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL: "all"; +/** + * Enum value "any" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY: "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM: "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE: "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM: "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL: "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE: "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM: "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL: "serial"; +/** + * Enum value "three" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE: "three"; +/** + * Enum value "two" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO: "two"; +/** + * Deprecated, use `cassandra.coordinator.dc` instead. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.dc`. + */ +export declare const ATTR_DB_CASSANDRA_COORDINATOR_DC: "db.cassandra.coordinator.dc"; +/** + * Deprecated, use `cassandra.coordinator.id` instead. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.id`. + */ +export declare const ATTR_DB_CASSANDRA_COORDINATOR_ID: "db.cassandra.coordinator.id"; +/** + * Deprecated, use `cassandra.query.idempotent` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.query.idempotent`. + */ +export declare const ATTR_DB_CASSANDRA_IDEMPOTENCE: "db.cassandra.idempotence"; +/** + * Deprecated, use `cassandra.page.size` instead. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.page.size`. + */ +export declare const ATTR_DB_CASSANDRA_PAGE_SIZE: "db.cassandra.page_size"; +/** + * Deprecated, use `cassandra.speculative_execution.count` instead. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.speculative_execution.count`. + */ +export declare const ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: "db.cassandra.speculative_execution_count"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_CASSANDRA_TABLE: "db.cassandra.table"; +/** + * 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. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_CLIENT_CONNECTION_POOL_NAME: "db.client.connection.pool.name"; +/** + * The state of a connection in the pool + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_CLIENT_CONNECTION_STATE: "db.client.connection.state"; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE: "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTION_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +export declare const ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME: "db.client.connections.pool.name"; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +export declare const ATTR_DB_CLIENT_CONNECTIONS_STATE: "db.client.connections.state"; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE: "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_CLIENT_CONNECTIONS_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export declare const ATTR_DB_CONNECTION_STRING: "db.connection_string"; +/** + * Deprecated, use `azure.client.id` instead. + * + * @example "3ba4827d-4422-483f-b59f-85b74211c11d" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.client.id`. + */ +export declare const ATTR_DB_COSMOSDB_CLIENT_ID: "db.cosmosdb.client_id"; +/** + * Deprecated, use `azure.cosmosdb.connection.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.connection.mode`. + */ +export declare const ATTR_DB_COSMOSDB_CONNECTION_MODE: "db.cosmosdb.connection_mode"; +/** + * Enum value "direct" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT: "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY: "gateway"; +/** + * Deprecated, use `cosmosdb.consistency.level` instead. + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.consistency.level`. + */ +export declare const ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL: "db.cosmosdb.consistency_level"; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS: "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX: "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL: "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION: "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG: "Strong"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_COSMOSDB_CONTAINER: "db.cosmosdb.container"; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_COSMOSDB_OPERATION_TYPE: "db.cosmosdb.operation_type"; +/** + * Enum value "batch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH: "batch"; +/** + * Enum value "create" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE: "create"; +/** + * Enum value "delete" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE: "delete"; +/** + * Enum value "execute" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE: "execute"; +/** + * Enum value "execute_javascript" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT: "execute_javascript"; +/** + * Enum value "head" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD: "head"; +/** + * Enum value "head_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED: "head_feed"; +/** + * Enum value "invalid" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID: "invalid"; +/** + * Enum value "patch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH: "patch"; +/** + * Enum value "query" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY: "query"; +/** + * Enum value "query_plan" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN: "query_plan"; +/** + * Enum value "read" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ: "read"; +/** + * Enum value "read_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED: "read_feed"; +/** + * Enum value "replace" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE: "replace"; +/** + * Enum value "upsert" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT: "upsert"; +/** + * Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.contacted_regions`. + */ +export declare const ATTR_DB_COSMOSDB_REGIONS_CONTACTED: "db.cosmosdb.regions_contacted"; +/** + * Deprecated, use `azure.cosmosdb.operation.request_charge` instead. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.request_charge`. + */ +export declare const ATTR_DB_COSMOSDB_REQUEST_CHARGE: "db.cosmosdb.request_charge"; +/** + * Deprecated, use `azure.cosmosdb.request.body.size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.request.body.size`. + */ +export declare const ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH: "db.cosmosdb.request_content_length"; +/** + * Deprecated, use `db.response.status_code` instead. + * + * @example 200 + * @example 201 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `db.response.status_code` instead. + */ +export declare const ATTR_DB_COSMOSDB_STATUS_CODE: "db.cosmosdb.status_code"; +/** + * Deprecated, use `azure.cosmosdb.response.sub_status_code` instead. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.response.sub_status_code`. + */ +export declare const ATTR_DB_COSMOSDB_SUB_STATUS_CODE: "db.cosmosdb.sub_status_code"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example e9106fc68e3044f0b1475b04bf4ffd5f + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_ELASTICSEARCH_CLUSTER_NAME: "db.elasticsearch.cluster.name"; +/** + * Deprecated, use `elasticsearch.node.name` instead. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `elasticsearch.node.name`. + */ +export declare const ATTR_DB_ELASTICSEARCH_NODE_NAME: "db.elasticsearch.node.name"; +/** + * Deprecated, use `db.operation.parameter` instead. + * + * @example test-index + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.parameter`. + */ +export declare const ATTR_DB_ELASTICSEARCH_PATH_PARTS: (key: string) => string; +/** + * Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + * + * @example "mysql-e26b99z.example.com" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + */ +export declare const ATTR_DB_INSTANCE_ID: "db.instance.id"; +/** + * Removed, no replacement at this time. + * + * @example org.postgresql.Driver + * @example com.microsoft.sqlserver.jdbc.SQLServerDriver + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_JDBC_DRIVER_CLASSNAME: "db.jdbc.driver_classname"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +export declare const ATTR_DB_MONGODB_COLLECTION: "db.mongodb.collection"; +/** + * Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute. + * + * @example "MSSQLSERVER" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_MSSQL_INSTANCE_NAME: "db.mssql.instance_name"; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +export declare const ATTR_DB_NAME: "db.name"; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +export declare const ATTR_DB_OPERATION: "db.operation"; +/** + * A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note For example, a client-side maximum number of rows to read from the database + * **MAY** be recorded as the `db.operation.parameter.max_rows` attribute. + * + * `db.query.text` parameters **SHOULD** be captured using `db.query.parameter.` + * instead of `db.operation.parameter.`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_OPERATION_PARAMETER: (key: string) => string; +/** + * A database query parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note If a query parameter has no name and instead is referenced only by index, + * then `` **SHOULD** be the 0-based index. + * + * `db.query.parameter.` **SHOULD** match + * up with the parameterized placeholders present in `db.query.text`. + * + * It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * `db.query.parameter.` **SHOULD NOT** be captured on batch operations. + * + * Examples: + * + * - For a query `SELECT * FROM users where username = %s` with the parameter `"jdoe"`, + * the attribute `db.query.parameter.0` **SHOULD** be set to `"jdoe"`. + * - For a query `"SELECT * FROM users WHERE username = %(userName)s;` with parameter + * `userName = "jdoe"`, the attribute `db.query.parameter.userName` **SHOULD** be set to `"jdoe"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_QUERY_PARAMETER: (key: string) => string; +/** + * Deprecated, use `db.namespace` instead. + * + * @example 0 + * @example 1 + * @example 15 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Uncategorized. + */ +export declare const ATTR_DB_REDIS_DATABASE_INDEX: "db.redis.database_index"; +/** + * Number of rows returned by the operation. + * + * @example 10 + * @example 30 + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DB_RESPONSE_RETURNED_ROWS: "db.response.returned_rows"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`. + */ +export declare const ATTR_DB_SQL_TABLE: "db.sql.table"; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +export declare const ATTR_DB_STATEMENT: "db.statement"; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +export declare const ATTR_DB_SYSTEM: "db.system"; +/** + * Enum value "adabas" for attribute {@link ATTR_DB_SYSTEM}. + * + * Adabas (Adaptable Database System) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_ADABAS: "adabas"; +/** + * Enum value "cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `intersystems_cache` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `intersystems_cache`. + */ +export declare const DB_SYSTEM_VALUE_CACHE: "cache"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Cassandra + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_CASSANDRA: "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM}. + * + * ClickHouse + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_CLICKHOUSE: "clickhouse"; +/** + * Enum value "cloudscape" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export declare const DB_SYSTEM_VALUE_CLOUDSCAPE: "cloudscape"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CockroachDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COCKROACHDB: "cockroachdb"; +/** + * Enum value "coldfusion" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, no replacement at this time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export declare const DB_SYSTEM_VALUE_COLDFUSION: "coldfusion"; +/** + * Enum value "cosmosdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft Azure Cosmos DB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COSMOSDB: "cosmosdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Couchbase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COUCHBASE: "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CouchDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_COUCHDB: "couchdb"; +/** + * Enum value "db2" for attribute {@link ATTR_DB_SYSTEM}. + * + * IBM Db2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_DB2: "db2"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Derby + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_DERBY: "derby"; +/** + * Enum value "dynamodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon DynamoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_DYNAMODB: "dynamodb"; +/** + * Enum value "edb" for attribute {@link ATTR_DB_SYSTEM}. + * + * EnterpriseDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_EDB: "edb"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * Elasticsearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_ELASTICSEARCH: "elasticsearch"; +/** + * Enum value "filemaker" for attribute {@link ATTR_DB_SYSTEM}. + * + * FileMaker + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_FILEMAKER: "filemaker"; +/** + * Enum value "firebird" for attribute {@link ATTR_DB_SYSTEM}. + * + * Firebird + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_FIREBIRD: "firebird"; +/** + * Enum value "firstsql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export declare const DB_SYSTEM_VALUE_FIRSTSQL: "firstsql"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Geode + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_GEODE: "geode"; +/** + * Enum value "h2" for attribute {@link ATTR_DB_SYSTEM}. + * + * H2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_H2: "h2"; +/** + * Enum value "hanadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP HANA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HANADB: "hanadb"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache HBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HBASE: "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Hive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HIVE: "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM}. + * + * HyperSQL DataBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_HSQLDB: "hsqldb"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InfluxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INFLUXDB: "influxdb"; +/** + * Enum value "informix" for attribute {@link ATTR_DB_SYSTEM}. + * + * Informix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INFORMIX: "informix"; +/** + * Enum value "ingres" for attribute {@link ATTR_DB_SYSTEM}. + * + * Ingres + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INGRES: "ingres"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InstantDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INSTANTDB: "instantdb"; +/** + * Enum value "interbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INTERBASE: "interbase"; +/** + * Enum value "intersystems_cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterSystems Caché + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE: "intersystems_cache"; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MariaDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MARIADB: "mariadb"; +/** + * Enum value "maxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP MaxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MAXDB: "maxdb"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM}. + * + * Memcached + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MEMCACHED: "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MongoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MONGODB: "mongodb"; +/** + * Enum value "mssql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft SQL Server + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MSSQL: "mssql"; +/** + * Enum value "mssqlcompact" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, Microsoft SQL Server Compact is discontinued. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +export declare const DB_SYSTEM_VALUE_MSSQLCOMPACT: "mssqlcompact"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM}. + * + * MySQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_MYSQL: "mysql"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM}. + * + * Neo4j + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_NEO4J: "neo4j"; +/** + * Enum value "netezza" for attribute {@link ATTR_DB_SYSTEM}. + * + * Netezza + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_NETEZZA: "netezza"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * OpenSearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_OPENSEARCH: "opensearch"; +/** + * Enum value "oracle" for attribute {@link ATTR_DB_SYSTEM}. + * + * Oracle Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_ORACLE: "oracle"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Some other SQL database. Fallback only. See notes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_OTHER_SQL: "other_sql"; +/** + * Enum value "pervasive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Pervasive PSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_PERVASIVE: "pervasive"; +/** + * Enum value "pointbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * PointBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_POINTBASE: "pointbase"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM}. + * + * PostgreSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_POSTGRESQL: "postgresql"; +/** + * Enum value "progress" for attribute {@link ATTR_DB_SYSTEM}. + * + * Progress Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_PROGRESS: "progress"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM}. + * + * Redis + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_REDIS: "redis"; +/** + * Enum value "redshift" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon Redshift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_REDSHIFT: "redshift"; +/** + * Enum value "spanner" for attribute {@link ATTR_DB_SYSTEM}. + * + * Cloud Spanner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_SPANNER: "spanner"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM}. + * + * SQLite + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_SQLITE: "sqlite"; +/** + * Enum value "sybase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Sybase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_SYBASE: "sybase"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM}. + * + * Teradata + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_TERADATA: "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM}. + * + * Trino + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_TRINO: "trino"; +/** + * Enum value "vertica" for attribute {@link ATTR_DB_SYSTEM}. + * + * Vertica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_VALUE_VERTICA: "vertica"; +/** + * Enum value "actian.ingres" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Actian Ingres](https://www.actian.com/databases/ingres/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_ACTIAN_INGRES: "actian.ingres"; +/** + * Enum value "aws.dynamodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_AWS_DYNAMODB: "aws.dynamodb"; +/** + * Enum value "aws.redshift" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon Redshift](https://aws.amazon.com/redshift/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_AWS_REDSHIFT: "aws.redshift"; +/** + * Enum value "azure.cosmosdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_AZURE_COSMOSDB: "azure.cosmosdb"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Cassandra](https://cassandra.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_CASSANDRA: "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [ClickHouse](https://clickhouse.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_CLICKHOUSE: "clickhouse"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [CockroachDB](https://www.cockroachlabs.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_COCKROACHDB: "cockroachdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Couchbase](https://www.couchbase.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_COUCHBASE: "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache CouchDB](https://couchdb.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_COUCHDB: "couchdb"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Derby](https://db.apache.org/derby/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_DERBY: "derby"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Elasticsearch](https://www.elastic.co/elasticsearch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_ELASTICSEARCH: "elasticsearch"; +/** + * Enum value "firebirdsql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Firebird](https://www.firebirdsql.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_FIREBIRDSQL: "firebirdsql"; +/** + * Enum value "gcp.spanner" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Google Cloud Spanner](https://cloud.google.com/spanner) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_GCP_SPANNER: "gcp.spanner"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Geode](https://geode.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_GEODE: "geode"; +/** + * Enum value "h2database" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [H2 Database](https://h2database.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_H2DATABASE: "h2database"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache HBase](https://hbase.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_HBASE: "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Hive](https://hive.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_HIVE: "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [HyperSQL Database](https://hsqldb.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_HSQLDB: "hsqldb"; +/** + * Enum value "ibm.db2" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Db2](https://www.ibm.com/db2) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_IBM_DB2: "ibm.db2"; +/** + * Enum value "ibm.informix" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Informix](https://www.ibm.com/products/informix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_IBM_INFORMIX: "ibm.informix"; +/** + * Enum value "ibm.netezza" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Netezza](https://www.ibm.com/products/netezza) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_IBM_NETEZZA: "ibm.netezza"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InfluxDB](https://www.influxdata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_INFLUXDB: "influxdb"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Instant](https://www.instantdb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_INSTANTDB: "instantdb"; +/** + * Enum value "intersystems.cache" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InterSystems Caché](https://www.intersystems.com/products/cache/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_INTERSYSTEMS_CACHE: "intersystems.cache"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Memcached](https://memcached.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_MEMCACHED: "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MongoDB](https://www.mongodb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_MONGODB: "mongodb"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Neo4j](https://neo4j.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_NEO4J: "neo4j"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [OpenSearch](https://opensearch.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_OPENSEARCH: "opensearch"; +/** + * Enum value "oracle.db" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Oracle Database](https://www.oracle.com/database/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_ORACLE_DB: "oracle.db"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * Some other SQL database. Fallback only. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_OTHER_SQL: "other_sql"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Redis](https://redis.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_REDIS: "redis"; +/** + * Enum value "sap.hana" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SAP_HANA: "sap.hana"; +/** + * Enum value "sap.maxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP MaxDB](https://maxdb.sap.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SAP_MAXDB: "sap.maxdb"; +/** + * Enum value "softwareag.adabas" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SOFTWAREAG_ADABAS: "softwareag.adabas"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SQLite](https://www.sqlite.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_SQLITE: "sqlite"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Teradata](https://www.teradata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_TERADATA: "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Trino](https://trino.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DB_SYSTEM_NAME_VALUE_TRINO: "trino"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_DB_USER: "db.user"; +/** + * Deprecated, use `deployment.environment.name` instead. + * + * @example staging + * @example production + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `deployment.environment.name`. + */ +export declare const ATTR_DEPLOYMENT_ENVIRONMENT: "deployment.environment"; +/** + * Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @example staging + * @example production + * + * @note `deployment.environment.name` does not affect the uniqueness constraints defined through + * the `service.namespace`, `service.name` and `service.instance.id` resource attributes. + * This implies that resources carrying the following attribute combinations **MUST** be + * considered to be identifying the same service: + * + * - `service.name=frontend`, `deployment.environment.name=production` + * - `service.name=frontend`, `deployment.environment.name=staging`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_ENVIRONMENT_NAME: "deployment.environment.name"; +/** + * The id of the deployment. + * + * @example 1208 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_ID: "deployment.id"; +/** + * The name of the deployment. + * + * @example deploy my app + * @example deploy-frontend + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_NAME: "deployment.name"; +/** + * The status of the deployment. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEPLOYMENT_STATUS: "deployment.status"; +/** + * Enum value "failed" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DEPLOYMENT_STATUS_VALUE_FAILED: "failed"; +/** + * Enum value "succeeded" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * succeeded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DEPLOYMENT_STATUS_VALUE_SUCCEEDED: "succeeded"; +/** + * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example destination.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the source side, and when communicating through an intermediary, `destination.address` **SHOULD** represent the destination address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DESTINATION_ADDRESS: "destination.address"; +/** + * Destination port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DESTINATION_PORT: "destination.port"; +/** + * A unique identifier representing the device + * + * @example 123456789012345 + * @example 01:23:45:67:89:AB + * + * @note Its value **SHOULD** be identical for all apps on a device and it **SHOULD NOT** change if an app is uninstalled and re-installed. + * However, it might be resettable by the user for all apps on a device. + * Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) **MAY** be used as values. + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * > [!WARNING]> This attribute may contain sensitive (PII) information. 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.> Due to these reasons, this identifier is not recommended for consumer applications and will likely result in rejection from both Google Play and App Store. + * > However, it may be appropriate for specific enterprise scenarios, such as kiosk devices or enterprise-managed devices, with appropriate compliance clearance. + * > Any instrumentation providing this identifier **> MUST**> implement it as an opt-in feature.> See [`app.installation.id`](/docs/registry/attributes/app.md#app-installation-id)> for a more privacy-preserving alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_ID: "device.id"; +/** + * The name of the device manufacturer + * + * @example Apple + * @example Samsung + * + * @note The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps **SHOULD** hardcode the value `Apple`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_MANUFACTURER: "device.manufacturer"; +/** + * The model identifier for the device + * + * @example iPhone3,4 + * @example SM-G920F + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_MODEL_IDENTIFIER: "device.model.identifier"; +/** + * The marketing name for the device model + * + * @example iPhone 6s Plus + * @example Samsung Galaxy S6 + * + * @note It's recommended this value represents a human-readable version of the device model rather than a machine-readable alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DEVICE_MODEL_NAME: "device.model.name"; +/** + * The disk IO operation direction. + * + * @example read + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DISK_IO_DIRECTION: "disk.io.direction"; +/** + * Enum value "read" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DISK_IO_DIRECTION_VALUE_READ: "read"; +/** + * Enum value "write" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const DISK_IO_DIRECTION_VALUE_WRITE: "write"; +/** + * The list of IPv4 or IPv6 addresses resolved during DNS lookup. + * + * @example ["10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DNS_ANSWERS: "dns.answers"; +/** + * The name being queried. + * + * @example www.example.com + * @example opentelemetry.io + * + * @note The name represents the queried domain name as it appears in the DNS query without any additional normalization. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_DNS_QUESTION_NAME: "dns.question.name"; +/** + * Represents the human-readable identifier of the node/instance to which a request was routed. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ELASTICSEARCH_NODE_NAME: "elasticsearch.node.name"; +/** + * Unique identifier of an end user in the system. It maybe a username, email address, or other identifier. + * + * @example username + * + * @note Unique identifier of an end user in the system. + * + * > [!Warning] + * > This field contains sensitive (PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ENDUSER_ID: "enduser.id"; +/** + * Pseudonymous identifier of an end user. This identifier should be a random value that is not directly linked or associated with the end user's actual identity. + * + * @example QdH5CAWJgqVT4rOr0qtumf + * + * @note Pseudonymous identifier of an end user. + * + * > [!Warning] + * > This field contains sensitive (linkable PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ENDUSER_PSEUDO_ID: "enduser.pseudo.id"; +/** + * Deprecated, use `user.roles` instead. + * + * @example "admin" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `user.roles` instead. + */ +export declare const ATTR_ENDUSER_ROLE: "enduser.role"; +/** + * Deprecated, no replacement at this time. + * + * @example "read:message, write:files" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_ENDUSER_SCOPE: "enduser.scope"; +/** + * A message providing more detail about an error in human-readable form. + * + * @example Unexpected input type: string + * @example The user has exceeded their storage quota + * + * @note `error.message` should provide additional context and detail about an error. + * It is NOT **RECOMMENDED** to duplicate the value of `error.type` in `error.message`. + * It is also NOT **RECOMMENDED** to duplicate the value of `exception.message` in `error.message`. + * + * `error.message` is NOT **RECOMMENDED** for metrics or spans due to its unbounded cardinality and overlap with span status. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ERROR_MESSAGE: "error.message"; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated The value of this attribute **MUST** now be set as the value of the EventName field on the LogRecord to indicate that the LogRecord represents an Event. + */ +export declare const ATTR_EVENT_NAME: "event.name"; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_COLDSTART: "faas.coldstart"; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @example "0/5 * * * ? *" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_CRON: "faas.cron"; +/** + * 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. + * + * @example myBucketName + * @example myDbName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_COLLECTION: "faas.document.collection"; +/** + * 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. + * + * @example myFile.txt + * @example myTableName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_NAME: "faas.document.name"; +/** + * Describes the type of the operation that was performed on the data. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_OPERATION: "faas.document.operation"; +/** + * Enum value "delete" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is deleted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_DOCUMENT_OPERATION_VALUE_DELETE: "delete"; +/** + * Enum value "edit" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is modified. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_DOCUMENT_OPERATION_VALUE_EDIT: "edit"; +/** + * Enum value "insert" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When a new object is created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_DOCUMENT_OPERATION_VALUE_INSERT: "insert"; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_DOCUMENT_TIME: "faas.document.time"; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de + * + * @note - **AWS Lambda:** Use the (full) log stream name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INSTANCE: "faas.instance"; +/** + * The invocation ID of the current function invocation. + * + * @example "af9d5aa4-a685-4c5f-a22b-444f80b3cc28" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOCATION_ID: "faas.invocation_id"; +/** + * The name of the invoked function. + * + * @example "my-function" + * + * @note **SHOULD** be equal to the `faas.name` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOKED_NAME: "faas.invoked_name"; +/** + * The cloud provider of the invoked function. + * + * @note **SHOULD** be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOKED_PROVIDER: "faas.invoked_provider"; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD: "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_AWS: "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_AZURE: "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_GCP: "gcp"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD: "tencent_cloud"; +/** + * The cloud region of the invoked function. + * + * @example "eu-central-1" + * + * @note **SHOULD** be equal to the `cloud.region` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_INVOKED_REGION: "faas.invoked_region"; +/** + * The amount of memory available to the serverless function converted to Bytes. + * + * @example 134217728 + * + * @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 (which must be multiplied by 1,048,576). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_MAX_MEMORY: "faas.max_memory"; +/** + * The name of the single function that this runtime instance executes. + * + * @example my-function + * @example myazurefunctionapp/some-function-name + * + * @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.name`](/docs/general/attributes.md#source-code-attributes) + * span attributes). + * + * For some cloud providers, the above definition is ambiguous. The following + * definition of function name **MUST** be used for this attribute + * (and consequently the span name) for the listed cloud providers/products: + * + * - **Azure:** The full name `/`, i.e., function app name + * followed by a forward slash followed by the function name (this form + * can also be seen in the resource JSON for the function). + * This means that a span attribute **MUST** be used, as an Azure function + * app can host multiple functions that would usually share + * a TracerProvider (see also the `cloud.resource_id` attribute). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_NAME: "faas.name"; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_TIME: "faas.time"; +/** + * Type of the trigger which caused this function invocation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_TRIGGER: "faas.trigger"; +/** + * Enum value "datasource" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A response to some data source operation such as a database or filesystem read/write + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_DATASOURCE: "datasource"; +/** + * Enum value "http" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * To provide an answer to an inbound HTTP request + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_HTTP: "http"; +/** + * Enum value "other" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * If none of the others apply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_OTHER: "other"; +/** + * Enum value "pubsub" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is set to be executed when messages are sent to a messaging system + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_PUBSUB: "pubsub"; +/** + * Enum value "timer" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is scheduled to be executed regularly + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FAAS_TRIGGER_VALUE_TIMER: "timer"; +/** + * The immutable version of the function being executed. + * + * @example 26 + * @example pinkfroid-00002 + * + * @note Depending on the cloud provider and platform, use: + * + * - **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + * (an integer represented as a decimal string). + * - **Google Cloud Run (Services):** The [revision](https://cloud.google.com/run/docs/managing/revisions) + * (i.e., the function name plus the revision suffix). + * - **Google Cloud Functions:** The value of the + * [`K_REVISION` environment variable](https://cloud.google.com/run/docs/container-contract#services-env-vars). + * - **Azure Functions:** Not applicable. Do not set this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FAAS_VERSION: "faas.version"; +/** + * The unique identifier for the flag evaluation context. For example, the targeting key. + * + * @example 5157782b-2203-4c80-a857-dbbd5e7761db + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_CONTEXT_ID: "feature_flag.context.id"; +/** + * Deprecated, use `error.message` instead. + * + * @example Flag `header-color` expected type `string` but found type `number` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `error.message`. + */ +export declare const ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE: "feature_flag.evaluation.error.message"; +/** + * Deprecated, use `feature_flag.result.reason` instead. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.reason`. + */ +export declare const ATTR_FEATURE_FLAG_EVALUATION_REASON: "feature_flag.evaluation.reason"; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED: "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT: "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED: "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR: "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT: "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE: "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC: "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH: "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN: "unknown"; +/** + * The lookup key of the feature flag. + * + * @example logo-color + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_KEY: "feature_flag.key"; +/** + * Identifies the feature flag provider. + * + * @example Flag Manager + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_PROVIDER_NAME: "feature_flag.provider.name"; +/** + * The reason code which shows how a feature flag value was determined. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_RESULT_REASON: "feature_flag.result.reason"; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_CACHED: "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_DEFAULT: "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_DISABLED: "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_ERROR: "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_SPLIT: "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_STALE: "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_STATIC: "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_TARGETING_MATCH: "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const FEATURE_FLAG_RESULT_REASON_VALUE_UNKNOWN: "unknown"; +/** + * The evaluated value of the feature flag. + * + * @example #ff0000 + * @example true + * @example 3 + * + * @note With some feature flag providers, feature flag results can be quite large or contain private or sensitive details. + * Because of this, `feature_flag.result.variant` is often the preferred attribute if it is available. + * + * It may be desirable to redact or otherwise limit the size and scope of `feature_flag.result.value` if possible. + * Because the evaluated flag value is unstructured and may be any type, it is left to the instrumentation author to determine how best to achieve this. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_RESULT_VALUE: "feature_flag.result.value"; +/** + * A semantic identifier for an evaluated flag value. + * + * @example red + * @example true + * @example on + * + * @note A semantic identifier, commonly referred to as a variant, provides a means + * for referring to a value without including the value itself. This can + * provide additional context for understanding the meaning behind a value. + * For example, the variant `red` maybe be used for the value `#c05543`. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_RESULT_VARIANT: "feature_flag.result.variant"; +/** + * The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs. + * + * @example proj-1 + * @example ab98sgs + * @example service1/dev + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_SET_ID: "feature_flag.set.id"; +/** + * Deprecated, use `feature_flag.result.variant` instead. + * + * @example red + * @example true + * @example on + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.variant`. + */ +export declare const ATTR_FEATURE_FLAG_VARIANT: "feature_flag.variant"; +/** + * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset. + * + * @example 1 + * @example 01ABCDEF + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FEATURE_FLAG_VERSION: "feature_flag.version"; +/** + * Time when the file was last accessed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_ACCESSED: "file.accessed"; +/** + * Array of file attributes. + * + * @example ["readonly", "hidden"] + * + * @note Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected for this attribute: `archive`, `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, `write`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_ATTRIBUTES: "file.attributes"; +/** + * Time when the file attributes or metadata was last changed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note `file.changed` captures the time when any of the file's properties or attributes (including the content) are changed, while `file.modified` captures the timestamp when the file content is modified. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_CHANGED: "file.changed"; +/** + * Time when the file was created, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_CREATED: "file.created"; +/** + * Directory where the file is located. It should include the drive letter, when appropriate. + * + * @example /home/user + * @example C:\\Program Files\\MyApp + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_DIRECTORY: "file.directory"; +/** + * File extension, excluding the leading dot. + * + * @example png + * @example gz + * + * @note When the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_EXTENSION: "file.extension"; +/** + * Name of the fork. A fork is additional data associated with a filesystem object. + * + * @example Zone.Identifier + * + * @note On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. + * On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: C:\\path\\to\\filename.extension:some_fork_name, and some_fork_name is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_FORK_NAME: "file.fork_name"; +/** + * Primary Group ID (GID) of the file. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_GROUP_ID: "file.group.id"; +/** + * Primary group name of the file. + * + * @example users + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_GROUP_NAME: "file.group.name"; +/** + * Inode representing the file in the filesystem. + * + * @example 256383 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_INODE: "file.inode"; +/** + * Mode of the file in octal representation. + * + * @example 0640 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_MODE: "file.mode"; +/** + * Time when the file content was last modified, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_MODIFIED: "file.modified"; +/** + * Name of the file including the extension, without the directory. + * + * @example example.png + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_NAME: "file.name"; +/** + * The user ID (UID) or security identifier (SID) of the file owner. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_OWNER_ID: "file.owner.id"; +/** + * Username of the file owner. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_OWNER_NAME: "file.owner.name"; +/** + * Full path to the file, including the file name. It should include the drive letter, when appropriate. + * + * @example /home/alice/example.png + * @example C:\\Program Files\\MyApp\\myapp.exe + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_PATH: "file.path"; +/** + * File size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_SIZE: "file.size"; +/** + * Path to the target of a symbolic link. + * + * @example /usr/bin/python3 + * + * @note This attribute is only applicable to symbolic links. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH: "file.symbolic_link.target_path"; +/** + * The container within GCP where the AppHub application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_APPLICATION_CONTAINER: "gcp.apphub.application.container"; +/** + * The name of the application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_APPLICATION_ID: "gcp.apphub.application.id"; +/** + * The GCP zone or region where the application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_APPLICATION_LOCATION: "gcp.apphub.application.location"; +/** + * Criticality of a service indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE: "gcp.apphub.service.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Environment of a service is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE: "gcp.apphub.service.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_SERVICE_ID: "gcp.apphub.service.id"; +/** + * Criticality of a workload indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE: "gcp.apphub.workload.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Environment of a workload is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE: "gcp.apphub.workload.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_WORKLOAD_ID: "gcp.apphub.workload.id"; +/** + * The container within GCP where the AppHub destination application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_CONTAINER: "gcp.apphub_destination.application.container"; +/** + * The name of the destination application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_ID: "gcp.apphub_destination.application.id"; +/** + * The GCP zone or region where the destination application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_LOCATION: "gcp.apphub_destination.application.location"; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE: "gcp.apphub_destination.service.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Software lifecycle stage of a destination service as defined [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE: "gcp.apphub_destination.service.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the destination service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ID: "gcp.apphub_destination.service.id"; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE: "gcp.apphub_destination.workload.criticality_type"; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH: "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW: "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM: "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL: "MISSION_CRITICAL"; +/** + * Environment of a destination workload is the stage of a software lifecycle as provided in the [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE: "gcp.apphub_destination.workload.environment_type"; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT: "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION: "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING: "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST: "TEST"; +/** + * The name of the destination workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ID: "gcp.apphub_destination.workload.id"; +/** + * Identifies the Google Cloud service for which the official client library is intended. + * + * @example appengine + * @example run + * @example firestore + * @example alloydb + * @example spanner + * + * @note Intended to be a stable identifier for Google Cloud client libraries that is uniform across implementation languages. The value should be derived from the canonical service domain for the service; for example, 'foo.googleapis.com' should result in a value of 'foo'. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_CLIENT_SERVICE: "gcp.client.service"; +/** + * The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example job-name-xxxx + * @example sample-job-mdw84 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_CLOUD_RUN_JOB_EXECUTION: "gcp.cloud_run.job.execution"; +/** + * The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example 0 + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX: "gcp.cloud_run.job.task_index"; +/** + * The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm). + * + * @example my-host1234.example.com + * @example sample-vm.us-west1-b.c.my-project.internal + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_GCE_INSTANCE_HOSTNAME: "gcp.gce.instance.hostname"; +/** + * The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names). + * + * @example instance-1 + * @example my-vm-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GCP_GCE_INSTANCE_NAME: "gcp.gce.instance.name"; +/** + * Free-form description of the GenAI agent provided by the application. + * + * @example Helps with math problems + * @example Generates fiction stories + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_AGENT_DESCRIPTION: "gen_ai.agent.description"; +/** + * The unique identifier of the GenAI agent. + * + * @example asst_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_AGENT_ID: "gen_ai.agent.id"; +/** + * Human-readable name of the GenAI agent provided by the application. + * + * @example Math Tutor + * @example Fiction Writer + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_AGENT_NAME: "gen_ai.agent.name"; +/** + * Deprecated, use Event API to report completions contents. + * + * @example [{'role': 'assistant', 'content': 'The capital of France is Paris.'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_GEN_AI_COMPLETION: "gen_ai.completion"; +/** + * The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation. + * + * @example conv_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_CONVERSATION_ID: "gen_ai.conversation.id"; +/** + * The data source identifier. + * + * @example H7STPQYOND + * + * @note Data sources are used by AI agents and RAG applications to store grounding data. A data source may be an external database, object store, document collection, website, or any other storage system used by the GenAI agent or application. The `gen_ai.data_source.id` **SHOULD** match the identifier used by the GenAI system rather than a name specific to the external storage, such as a database or object store. Semantic conventions referencing `gen_ai.data_source.id` **MAY** also leverage additional attributes, such as `db.*`, to further identify and describe the data source. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_DATA_SOURCE_ID: "gen_ai.data_source.id"; +/** + * The number of dimensions the resulting output embeddings should have. + * + * @example 512 + * @example 1024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT: "gen_ai.embeddings.dimension.count"; +/** + * A free-form explanation for the assigned score provided by the evaluator. + * + * @example The response is factually accurate but lacks sufficient detail to fully address the question. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_EXPLANATION: "gen_ai.evaluation.explanation"; +/** + * The name of the evaluation metric used for the GenAI response. + * + * @example Relevance + * @example IntentResolution + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_NAME: "gen_ai.evaluation.name"; +/** + * Human readable label for evaluation. + * + * @example relevant + * @example not_relevant + * @example correct + * @example incorrect + * @example pass + * @example fail + * + * @note This attribute provides a human-readable interpretation of the evaluation score produced by an evaluator. For example, a score value of 1 could mean "relevant" in one evaluation system and "not relevant" in another, depending on the scoring range and evaluator. The label **SHOULD** have low cardinality. Possible values depend on the evaluation metric and evaluator used; implementations **SHOULD** document the possible values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_SCORE_LABEL: "gen_ai.evaluation.score.label"; +/** + * The evaluation score returned by the evaluator. + * + * @example 4.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_EVALUATION_SCORE_VALUE: "gen_ai.evaluation.score.value"; +/** + * The chat history provided to the model as an input. + * + * @example [ + * { + * "role": "user", + * "parts": [ + * { + * "type": "text", + * "content": "Weather in Paris?" + * } + * ] + * }, + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "tool_call", + * "id": "call_VSPygqKTWdrhaFErNvMV18Yl", + * "name": "get_weather", + * "arguments": { + * "location": "Paris" + * } + * } + * ] + * }, + * { + * "role": "tool", + * "parts": [ + * { + * "type": "tool_call_response", + * "id": " call_VSPygqKTWdrhaFErNvMV18Yl", + * "result": "rainy, 57°F" + * } + * ] + * } + * ] + * + * @note Instrumentations **MUST** follow [Input messages JSON schema](/docs/gen-ai/gen-ai-input-messages.json). + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Messages **MUST** be provided in the order they were sent to the model. + * Instrumentations **MAY** provide a way for users to filter or truncate + * input messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_INPUT_MESSAGES: "gen_ai.input.messages"; +/** + * Deprecated, use `gen_ai.output.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.output.type`. + */ +export declare const ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT: "gen_ai.openai.request.response_format"; +/** + * Enum value "json_object" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON object response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT: "json_object"; +/** + * Enum value "json_schema" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON schema response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA: "json_schema"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * Text response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT: "text"; +/** + * Deprecated, use `gen_ai.request.seed`. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.request.seed`. + */ +export declare const ATTR_GEN_AI_OPENAI_REQUEST_SEED: "gen_ai.openai.request.seed"; +/** + * Deprecated, use `openai.request.service_tier`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.request.service_tier`. + */ +export declare const ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER: "gen_ai.openai.request.service_tier"; +/** + * Enum value "auto" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO: "auto"; +/** + * Enum value "default" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT: "default"; +/** + * Deprecated, use `openai.response.service_tier`. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.service_tier`. + */ +export declare const ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER: "gen_ai.openai.response.service_tier"; +/** + * Deprecated, use `openai.response.system_fingerprint`. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.system_fingerprint`. + */ +export declare const ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT: "gen_ai.openai.response.system_fingerprint"; +/** + * The name of the operation being performed. + * + * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_OPERATION_NAME: "gen_ai.operation.name"; +/** + * Enum value "chat" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_CHAT: "chat"; +/** + * Enum value "create_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Create GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT: "create_agent"; +/** + * Enum value "embeddings" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS: "embeddings"; +/** + * Enum value "execute_tool" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Execute a tool + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL: "execute_tool"; +/** + * Enum value "generate_content" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_GENERATE_CONTENT: "generate_content"; +/** + * Enum value "invoke_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Invoke GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT: "invoke_agent"; +/** + * Enum value "text_completion" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION: "text_completion"; +/** + * Messages returned by the model where each message represents a specific model response (choice, candidate). + * + * @example [ + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "text", + * "content": "The weather in Paris is currently rainy with a temperature of 57°F." + * } + * ], + * "finish_reason": "stop" + * } + * ] + * + * @note Instrumentations **MUST** follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json) + * + * Each message represents a single output choice/candidate generated by + * the model. Each message corresponds to exactly one generation + * (choice/candidate) and vice versa - one choice cannot be split across + * multiple messages or one message cannot contain parts from multiple choices. + * + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * output messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_OUTPUT_MESSAGES: "gen_ai.output.messages"; +/** + * Represents the content type requested by the client. + * + * @note This attribute **SHOULD** be used when the client requests output of a specific type. The model may return zero or more outputs of this type. + * This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file. + * Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_OUTPUT_TYPE: "gen_ai.output.type"; +/** + * Enum value "image" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Image + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_IMAGE: "image"; +/** + * Enum value "json" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * JSON object with known or unknown schema + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_JSON: "json"; +/** + * Enum value "speech" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Speech + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_SPEECH: "speech"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Plain text + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_OUTPUT_TYPE_VALUE_TEXT: "text"; +/** + * Deprecated, use Event API to report prompt contents. + * + * @example [{'role': 'user', 'content': 'What is the capital of France?'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const ATTR_GEN_AI_PROMPT: "gen_ai.prompt"; +/** + * The name of the prompt that uniquely identifies it. + * + * @example analyze-code + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_PROMPT_NAME: "gen_ai.prompt.name"; +/** + * The Generative AI provider as identified by the client or server instrumentation. + * + * @note The attribute **SHOULD** be set based on the instrumentation's best + * knowledge and may differ from the actual model provider. + * + * Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms + * are accessible using the OpenAI REST API and corresponding client libraries, + * but may proxy or host models from different providers. + * + * The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address` + * attributes may help identify the actual system in use. + * + * The `gen_ai.provider.name` attribute acts as a discriminator that + * identifies the GenAI telemetry format flavor specific to that provider + * within GenAI semantic conventions. + * It **SHOULD** be set consistently with provider-specific attributes and signals. + * For example, GenAI spans, metrics, and events related to AWS Bedrock + * should have the `gen_ai.provider.name` set to `aws.bedrock` and include + * applicable `aws.bedrock.*` attributes and are not expected to include + * `openai.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_PROVIDER_NAME: "gen_ai.provider.name"; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Anthropic](https://www.anthropic.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_ANTHROPIC: "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [AWS Bedrock](https://aws.amazon.com/bedrock) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_AWS_BEDROCK: "aws.bedrock"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_INFERENCE: "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_OPENAI: "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Cohere](https://cohere.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_COHERE: "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [DeepSeek](https://www.deepseek.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_DEEPSEEK: "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Gemini](https://cloud.google.com/products/gemini) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEMINI: "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEN_AI: "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Vertex AI](https://cloud.google.com/vertex-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GCP_VERTEX_AI: "gcp.vertex_ai"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Groq](https://groq.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_GROQ: "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_IBM_WATSONX_AI: "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Mistral AI](https://mistral.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_MISTRAL_AI: "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [OpenAI](https://openai.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_OPENAI: "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Perplexity](https://www.perplexity.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_PERPLEXITY: "perplexity"; +/** + * Enum value "x_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [xAI](https://x.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_PROVIDER_NAME_VALUE_X_AI: "x_ai"; +/** + * The target number of candidate completions to return. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_CHOICE_COUNT: "gen_ai.request.choice.count"; +/** + * The encoding formats requested in an embeddings operation, if specified. + * + * @example ["base64"] + * @example ["float", "binary"] + * + * @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS: "gen_ai.request.encoding_formats"; +/** + * The frequency penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY: "gen_ai.request.frequency_penalty"; +/** + * The maximum number of tokens the model generates for a request. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_MAX_TOKENS: "gen_ai.request.max_tokens"; +/** + * The name of the GenAI model a request is being made to. + * + * @example "gpt-4" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_MODEL: "gen_ai.request.model"; +/** + * The presence penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY: "gen_ai.request.presence_penalty"; +/** + * Requests with same seed value more likely to return same result. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_SEED: "gen_ai.request.seed"; +/** + * List of sequences that the model will use to stop generating further tokens. + * + * @example ["forest", "lived"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES: "gen_ai.request.stop_sequences"; +/** + * The temperature setting for the GenAI request. + * + * @example 0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_TEMPERATURE: "gen_ai.request.temperature"; +/** + * The top_k sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_TOP_K: "gen_ai.request.top_k"; +/** + * The top_p sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_REQUEST_TOP_P: "gen_ai.request.top_p"; +/** + * Array of reasons the model stopped generating tokens, corresponding to each generation received. + * + * @example ["stop"] + * @example ["stop", "length"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_RESPONSE_FINISH_REASONS: "gen_ai.response.finish_reasons"; +/** + * The unique identifier for the completion. + * + * @example chatcmpl-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_RESPONSE_ID: "gen_ai.response.id"; +/** + * The name of the model that generated the response. + * + * @example gpt-4-0613 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_RESPONSE_MODEL: "gen_ai.response.model"; +/** + * Deprecated, use `gen_ai.provider.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.provider.name`. + */ +export declare const ATTR_GEN_AI_SYSTEM: "gen_ai.system"; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Anthropic + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_ANTHROPIC: "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * AWS Bedrock + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AWS_BEDROCK: "aws.bedrock"; +/** + * Enum value "az.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.inference`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE: "az.ai.inference"; +/** + * Enum value "az.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.openai`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI: "az.ai.openai"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZURE_AI_INFERENCE: "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_AZURE_AI_OPENAI: "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Cohere + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_COHERE: "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * DeepSeek + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_DEEPSEEK: "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GCP_GEMINI: "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GCP_GEN_AI: "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GCP_VERTEX_AI: "gcp.vertex_ai"; +/** + * Enum value "gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.gemini`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GEMINI: "gemini"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Groq + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_GROQ: "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * IBM Watsonx AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI: "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Mistral AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_MISTRAL_AI: "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_OPENAI: "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Perplexity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_PERPLEXITY: "perplexity"; +/** + * Enum value "vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.vertex_ai`. + */ +export declare const GEN_AI_SYSTEM_VALUE_VERTEX_AI: "vertex_ai"; +/** + * Enum value "xai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * xAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_SYSTEM_VALUE_XAI: "xai"; +/** + * The system message or instructions provided to the GenAI model separately from the chat history. + * + * @example [ + * { + * "type": "text", + * "content": "You are an Agent that greet users, always use greetings tool to respond" + * } + * ] + * + * @example [ + * { + * "type": "text", + * "content": "You are a language translator." + * }, + * { + * "type": "text", + * "content": "Your mission is to translate text in English to French." + * } + * ] + * + * @note This attribute **SHOULD** be used when the corresponding provider or API + * allows to provide system instructions or messages separately from the + * chat history. + * + * Instructions that are part of the chat history **SHOULD** be recorded in + * `gen_ai.input.messages` attribute instead. + * + * Instrumentations **MUST** follow [System instructions JSON schema](/docs/gen-ai/gen-ai-system-instructions.json). + * + * When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * system instructions. + * + * > [!Warning] + * > This attribute may contain sensitive information. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_SYSTEM_INSTRUCTIONS: "gen_ai.system_instructions"; +/** + * The type of token being counted. + * + * @example input + * @example output + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOKEN_TYPE: "gen_ai.token.type"; +/** + * Enum value "input" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Input tokens (prompt, input, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_TOKEN_TYPE_VALUE_INPUT: "input"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `output`. + */ +export declare const GEN_AI_TOKEN_TYPE_VALUE_COMPLETION: "output"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEN_AI_TOKEN_TYPE_VALUE_OUTPUT: "output"; +/** + * Parameters passed to the tool call. + * + * @example { + * "location": "San Francisco?", + * "date": "2025-10-01" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_CALL_ARGUMENTS: "gen_ai.tool.call.arguments"; +/** + * The tool call identifier. + * + * @example call_mszuSIzqtI65i1wAUOE8w5H4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_CALL_ID: "gen_ai.tool.call.id"; +/** + * The result returned by the tool call (if any and if execution was successful). + * + * @example { + * "temperature_range": { + * "high": 75, + * "low": 60 + * }, + * "conditions": "sunny" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_CALL_RESULT: "gen_ai.tool.call.result"; +/** + * The list of source system tool definitions available to the GenAI agent or model. + * + * @example [ + * { + * "type": "function", + * "name": "get_current_weather", + * "description": "Get the current weather in a given location", + * "parameters": { + * "type": "object", + * "properties": { + * "location": { + * "type": "string", + * "description": "The city and state, e.g. San Francisco, CA" + * }, + * "unit": { + * "type": "string", + * "enum": [ + * "celsius", + * "fahrenheit" + * ] + * } + * }, + * "required": [ + * "location", + * "unit" + * ] + * } + * } + * ] + * + * @note The value of this attribute matches source system tool definition format. + * + * It's expected to be an array of objects where each object represents a tool definition. In case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an array. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Since this attribute could be large, it's NOT **RECOMMENDED** to populate + * it by default. Instrumentations **MAY** provide a way to enable + * populating this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_DEFINITIONS: "gen_ai.tool.definitions"; +/** + * The tool description. + * + * @example Multiply two numbers + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_DESCRIPTION: "gen_ai.tool.description"; +/** + * Name of the tool utilized by the agent. + * + * @example Flights + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_NAME: "gen_ai.tool.name"; +/** + * Type of the tool utilized by the agent + * + * @example function + * @example extension + * @example datastore + * + * @note Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems. + * Agent-side operations involve actions that are performed by the agent on the server or within the agent's controlled environment. + * Function: A tool executed on the client-side, where the agent generates parameters for a predefined function, and the client executes the logic. + * Client-side operations are actions taken on the user's end or within the client application. + * Datastore: A tool used by the agent to access and query structured or unstructured external data for retrieval-augmented tasks or knowledge updates. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_TOOL_TYPE: "gen_ai.tool.type"; +/** + * Deprecated, use `gen_ai.usage.output_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.output_tokens`. + */ +export declare const ATTR_GEN_AI_USAGE_COMPLETION_TOKENS: "gen_ai.usage.completion_tokens"; +/** + * The number of tokens used in the GenAI input (prompt). + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_USAGE_INPUT_TOKENS: "gen_ai.usage.input_tokens"; +/** + * The number of tokens used in the GenAI response (completion). + * + * @example 180 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS: "gen_ai.usage.output_tokens"; +/** + * Deprecated, use `gen_ai.usage.input_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.input_tokens`. + */ +export declare const ATTR_GEN_AI_USAGE_PROMPT_TOKENS: "gen_ai.usage.prompt_tokens"; +/** + * Two-letter code representing continent’s name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_CONTINENT_CODE: "geo.continent.code"; +/** + * Enum value "AF" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Africa + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_AF: "AF"; +/** + * Enum value "AN" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Antarctica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_AN: "AN"; +/** + * Enum value "AS" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Asia + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_AS: "AS"; +/** + * Enum value "EU" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Europe + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_EU: "EU"; +/** + * Enum value "NA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * North America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_NA: "NA"; +/** + * Enum value "OC" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Oceania + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_OC: "OC"; +/** + * Enum value "SA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * South America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GEO_CONTINENT_CODE_VALUE_SA: "SA"; +/** + * Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)). + * + * @example CA + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_COUNTRY_ISO_CODE: "geo.country.iso_code"; +/** + * Locality name. Represents the name of a city, town, village, or similar populated place. + * + * @example Montreal + * @example Berlin + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_LOCALITY_NAME: "geo.locality.name"; +/** + * Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example 45.505918 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_LOCATION_LAT: "geo.location.lat"; +/** + * Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example -73.61483 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_LOCATION_LON: "geo.location.lon"; +/** + * Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. + * + * @example 94040 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_POSTAL_CODE: "geo.postal_code"; +/** + * Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)). + * + * @example CA-QC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GEO_REGION_ISO_CODE: "geo.region.iso_code"; +/** + * The type of memory. + * + * @example other + * @example stack + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GO_MEMORY_TYPE: "go.memory.type"; +/** + * Enum value "other" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory used by the Go runtime, excluding other categories of memory usage described in this enumeration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GO_MEMORY_TYPE_VALUE_OTHER: "other"; +/** + * Enum value "stack" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GO_MEMORY_TYPE_VALUE_STACK: "stack"; +/** + * The GraphQL document being executed. + * + * @example "query findBookById { bookById(id: ?) { name } }" + * + * @note The value may be sanitized to exclude sensitive information. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GRAPHQL_DOCUMENT: "graphql.document"; +/** + * The name of the operation being executed. + * + * @example "findBookById" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GRAPHQL_OPERATION_NAME: "graphql.operation.name"; +/** + * The type of the operation being executed. + * + * @example query + * @example mutation + * @example subscription + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_GRAPHQL_OPERATION_TYPE: "graphql.operation.type"; +/** + * Enum value "mutation" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL mutation + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GRAPHQL_OPERATION_TYPE_VALUE_MUTATION: "mutation"; +/** + * Enum value "query" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL query + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GRAPHQL_OPERATION_TYPE_VALUE_QUERY: "query"; +/** + * Enum value "subscription" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL subscription + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION: "subscription"; +/** + * Unique identifier for the application + * + * @example 2daa2797-e42b-4624-9322-ec3f968df4da + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HEROKU_APP_ID: "heroku.app.id"; +/** + * Commit hash for the current release + * + * @example e6134959463efd8966b20e75b913cafe3f5ec + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HEROKU_RELEASE_COMMIT: "heroku.release.commit"; +/** + * Time and date the release was created + * + * @example 2022-10-23T18:00:42Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP: "heroku.release.creation_timestamp"; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ARCH: "host.arch"; +/** + * Enum value "amd64" for attribute {@link ATTR_HOST_ARCH}. + * + * AMD64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_AMD64: "amd64"; +/** + * Enum value "arm32" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM32 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_ARM32: "arm32"; +/** + * Enum value "arm64" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_ARM64: "arm64"; +/** + * Enum value "ia64" for attribute {@link ATTR_HOST_ARCH}. + * + * Itanium + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_IA64: "ia64"; +/** + * Enum value "ppc32" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_PPC32: "ppc32"; +/** + * Enum value "ppc64" for attribute {@link ATTR_HOST_ARCH}. + * + * 64-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_PPC64: "ppc64"; +/** + * Enum value "s390x" for attribute {@link ATTR_HOST_ARCH}. + * + * IBM z/Architecture + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_S390X: "s390x"; +/** + * Enum value "x86" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit x86 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HOST_ARCH_VALUE_X86: "x86"; +/** + * The amount of level 2 memory cache available to the processor (in Bytes). + * + * @example 12288000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_CACHE_L2_SIZE: "host.cpu.cache.l2.size"; +/** + * Family or generation of the CPU. + * + * @example 6 + * @example PA-RISC 1.1e + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_FAMILY: "host.cpu.family"; +/** + * Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family. + * + * @example 6 + * @example 9000/778/B180L + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_MODEL_ID: "host.cpu.model.id"; +/** + * Model designation of the processor. + * + * @example 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_MODEL_NAME: "host.cpu.model.name"; +/** + * Stepping or core revisions. + * + * @example 1 + * @example r1p1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_STEPPING: "host.cpu.stepping"; +/** + * Processor manufacturer identifier. A maximum 12-character string. + * + * @example GenuineIntel + * + * @note [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_CPU_VENDOR_ID: "host.cpu.vendor.id"; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_ID: "host.id"; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_ID: "host.image.id"; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_NAME: "host.image.name"; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IMAGE_VERSION: "host.image.version"; +/** + * Available IP addresses of the host, excluding loopback interfaces. + * + * @example ["192.168.1.140", "fe80::abc2:4a28:737a:609e"] + * + * @note IPv4 Addresses **MUST** be specified in dotted-quad notation. IPv6 addresses **MUST** be specified in the [RFC 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_IP: "host.ip"; +/** + * Available MAC addresses of the host, excluding loopback interfaces. + * + * @example ["AC-DE-48-23-45-67", "AC-DE-48-23-45-67-01-9F"] + * + * @note MAC Addresses **MUST** be represented in [IEEE RA hexadecimal form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): as hyphen-separated octets in uppercase hexadecimal form from most to least significant. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_MAC: "host.mac"; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_NAME: "host.name"; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HOST_TYPE: "host.type"; +/** + * Deprecated, use `client.address` instead. + * + * @example "83.164.160.102" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `client.address`. + */ +export declare const ATTR_HTTP_CLIENT_IP: "http.client_ip"; +/** + * State of the HTTP connection in the HTTP connection pool. + * + * @example active + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_CONNECTION_STATE: "http.connection.state"; +/** + * Enum value "active" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * active state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_CONNECTION_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "idle" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * idle state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_CONNECTION_STATE_VALUE_IDLE: "idle"; +/** + * Deprecated, use `network.protocol.name` and `network.protocol.version` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split into `network.protocol.name` and `network.protocol.version` + */ +export declare const ATTR_HTTP_FLAVOR: "http.flavor"; +/** + * Enum value "1.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_1_0: "1.0"; +/** + * Enum value "1.1" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_1_1: "1.1"; +/** + * Enum value "2.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_2_0: "2.0"; +/** + * Enum value "3.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/3 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_HTTP_3_0: "3.0"; +/** + * Enum value "QUIC" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * QUIC protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_QUIC: "QUIC"; +/** + * Enum value "SPDY" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * SPDY protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_FLAVOR_VALUE_SPDY: "SPDY"; +/** + * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage. + * + * @example www.example.org + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage. + */ +export declare const ATTR_HTTP_HOST: "http.host"; +/** + * Deprecated, use `http.request.method` instead. + * + * @example GET + * @example POST + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.method`. + */ +export declare const ATTR_HTTP_METHOD: "http.method"; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_REQUEST_BODY_SIZE: "http.request.body.size"; +/** + * Enum value "QUERY" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * QUERY method. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_QUERY: "QUERY"; +/** + * The total size of the request in bytes. This should be the total number of bytes sent over the wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request body if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_REQUEST_SIZE: "http.request.size"; +/** + * Deprecated, use `http.request.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.header.content-length`. + */ +export declare const ATTR_HTTP_REQUEST_CONTENT_LENGTH: "http.request_content_length"; +/** + * Deprecated, use `http.request.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.body.size`. + */ +export declare const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: "http.request_content_length_uncompressed"; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_RESPONSE_BODY_SIZE: "http.response.body.size"; +/** + * The total size of the response in bytes. This should be the total number of bytes sent over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and response body and trailers if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HTTP_RESPONSE_SIZE: "http.response.size"; +/** + * Deprecated, use `http.response.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.header.content-length`. + */ +export declare const ATTR_HTTP_RESPONSE_CONTENT_LENGTH: "http.response_content_length"; +/** + * Deprecated, use `http.response.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.body.size`. + */ +export declare const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: "http.response_content_length_uncompressed"; +/** + * Deprecated, use `url.scheme` instead. + * + * @example http + * @example https + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.scheme`. + */ +export declare const ATTR_HTTP_SCHEME: "http.scheme"; +/** + * Deprecated, use `server.address` instead. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_HTTP_SERVER_NAME: "http.server_name"; +/** + * Deprecated, use `http.response.status_code` instead. + * + * @example 200 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.status_code`. + */ +export declare const ATTR_HTTP_STATUS_CODE: "http.status_code"; +/** + * Deprecated, use `url.path` and `url.query` instead. + * + * @example /search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `url.path` and `url.query`. + */ +export declare const ATTR_HTTP_TARGET: "http.target"; +/** + * Deprecated, use `url.full` instead. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.full`. + */ +export declare const ATTR_HTTP_URL: "http.url"; +/** + * Deprecated, use `user_agent.original` instead. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `user_agent.original`. + */ +export declare const ATTR_HTTP_USER_AGENT: "http.user_agent"; +/** + * Design capacity in Watts-hours or Amper-hours + * + * @example 9.3Ah + * @example 50Wh + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BATTERY_CAPACITY: "hw.battery.capacity"; +/** + * Battery [chemistry](https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html), e.g. Lithium-Ion, Nickel-Cadmium, etc. + * + * @example Li-ion + * @example NiMH + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BATTERY_CHEMISTRY: "hw.battery.chemistry"; +/** + * The current state of the battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BATTERY_STATE: "hw.battery.state"; +/** + * Enum value "charging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Charging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_BATTERY_STATE_VALUE_CHARGING: "charging"; +/** + * Enum value "discharging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Discharging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_BATTERY_STATE_VALUE_DISCHARGING: "discharging"; +/** + * BIOS version of the hardware component + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_BIOS_VERSION: "hw.bios_version"; +/** + * Driver version for the hardware component + * + * @example 10.2.1-3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_DRIVER_VERSION: "hw.driver_version"; +/** + * Type of the enclosure (useful for modular systems) + * + * @example Computer + * @example Storage + * @example Switch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_ENCLOSURE_TYPE: "hw.enclosure.type"; +/** + * Firmware version of the hardware component + * + * @example 2.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_FIRMWARE_VERSION: "hw.firmware_version"; +/** + * Type of task the GPU is performing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_GPU_TASK: "hw.gpu.task"; +/** + * Enum value "decoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Decoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_GPU_TASK_VALUE_DECODER: "decoder"; +/** + * Enum value "encoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Encoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_GPU_TASK_VALUE_ENCODER: "encoder"; +/** + * Enum value "general" for attribute {@link ATTR_HW_GPU_TASK}. + * + * General + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_GPU_TASK_VALUE_GENERAL: "general"; +/** + * An identifier for the hardware component, unique within the monitored host + * + * @example win32battery_battery_testsysa33_1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_ID: "hw.id"; +/** + * Type of limit for hardware components + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_LIMIT_TYPE: "hw.limit_type"; +/** + * Enum value "critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_CRITICAL: "critical"; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_DEGRADED: "degraded"; +/** + * Enum value "high.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_HIGH_CRITICAL: "high.critical"; +/** + * Enum value "high.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_HIGH_DEGRADED: "high.degraded"; +/** + * Enum value "low.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_LOW_CRITICAL: "low.critical"; +/** + * Enum value "low.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_LOW_DEGRADED: "low.degraded"; +/** + * Enum value "max" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Maximum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_MAX: "max"; +/** + * Enum value "throttled" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Throttled + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_THROTTLED: "throttled"; +/** + * Enum value "turbo" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Turbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LIMIT_TYPE_VALUE_TURBO: "turbo"; +/** + * RAID Level of the logical disk + * + * @example RAID0+1 + * @example RAID5 + * @example RAID10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_LOGICAL_DISK_RAID_LEVEL: "hw.logical_disk.raid_level"; +/** + * State of the logical disk space usage + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_LOGICAL_DISK_STATE: "hw.logical_disk.state"; +/** + * Enum value "free" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Free + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LOGICAL_DISK_STATE_VALUE_FREE: "free"; +/** + * Enum value "used" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Used + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_LOGICAL_DISK_STATE_VALUE_USED: "used"; +/** + * Type of the memory module + * + * @example DDR4 + * @example DDR5 + * @example LPDDR5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_MEMORY_TYPE: "hw.memory.type"; +/** + * Descriptive model name of the hardware component + * + * @example PERC H740P + * @example Intel(R) Core(TM) i7-10700K + * @example Dell XPS 15 Battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_MODEL: "hw.model"; +/** + * An easily-recognizable name for the hardware component + * + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_NAME: "hw.name"; +/** + * Logical addresses of the adapter (e.g. IP address, or WWPN) + * + * @example ["172.16.8.21", "57.11.193.42"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_NETWORK_LOGICAL_ADDRESSES: "hw.network.logical_addresses"; +/** + * Physical address of the adapter (e.g. MAC address, or WWNN) + * + * @example 00-90-F5-E9-7B-36 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_NETWORK_PHYSICAL_ADDRESS: "hw.network.physical_address"; +/** + * Unique identifier of the parent component (typically the `hw.id` attribute of the enclosure, or disk controller) + * + * @example dellStorage_perc_0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PARENT: "hw.parent"; +/** + * [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute of the physical disk + * + * @example Spin Retry Count + * @example Seek Error Rate + * @example Raw Read Error Rate + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PHYSICAL_DISK_SMART_ATTRIBUTE: "hw.physical_disk.smart_attribute"; +/** + * State of the physical disk endurance utilization + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PHYSICAL_DISK_STATE: "hw.physical_disk.state"; +/** + * Enum value "remaining" for attribute {@link ATTR_HW_PHYSICAL_DISK_STATE}. + * + * Remaining + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_PHYSICAL_DISK_STATE_VALUE_REMAINING: "remaining"; +/** + * Type of the physical disk + * + * @example HDD + * @example SSD + * @example 10K + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_PHYSICAL_DISK_TYPE: "hw.physical_disk.type"; +/** + * Location of the sensor + * + * @example cpu0 + * @example ps1 + * @example INLET + * @example CPU0_DIE + * @example AMBIENT + * @example MOTHERBOARD + * @example PS0 V3_3 + * @example MAIN_12V + * @example CPU_VCORE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_SENSOR_LOCATION: "hw.sensor_location"; +/** + * Serial number of the hardware component + * + * @example CNFCP0123456789 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_SERIAL_NUMBER: "hw.serial_number"; +/** + * The current state of the component + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_STATE: "hw.state"; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_STATE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_DEGRADED: "degraded"; +/** + * Enum value "failed" for attribute {@link ATTR_HW_STATE}. + * + * Failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_FAILED: "failed"; +/** + * Enum value "needs_cleaning" for attribute {@link ATTR_HW_STATE}. + * + * Needs Cleaning + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_NEEDS_CLEANING: "needs_cleaning"; +/** + * Enum value "ok" for attribute {@link ATTR_HW_STATE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_OK: "ok"; +/** + * Enum value "predicted_failure" for attribute {@link ATTR_HW_STATE}. + * + * Predicted Failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_STATE_VALUE_PREDICTED_FAILURE: "predicted_failure"; +/** + * Type of tape drive operation + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_TAPE_DRIVE_OPERATION_TYPE: "hw.tape_drive.operation_type"; +/** + * Enum value "clean" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Clean + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_CLEAN: "clean"; +/** + * Enum value "mount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Mount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_MOUNT: "mount"; +/** + * Enum value "unmount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Unmount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_UNMOUNT: "unmount"; +/** + * Type of the component + * + * @note Describes the category of the hardware component for which `hw.state` is being reported. For example, `hw.type=temperature` along with `hw.state=degraded` would indicate that the temperature of the hardware component has been reported as `degraded`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_TYPE: "hw.type"; +/** + * Enum value "battery" for attribute {@link ATTR_HW_TYPE}. + * + * Battery + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_BATTERY: "battery"; +/** + * Enum value "cpu" for attribute {@link ATTR_HW_TYPE}. + * + * CPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_CPU: "cpu"; +/** + * Enum value "disk_controller" for attribute {@link ATTR_HW_TYPE}. + * + * Disk controller + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_DISK_CONTROLLER: "disk_controller"; +/** + * Enum value "enclosure" for attribute {@link ATTR_HW_TYPE}. + * + * Enclosure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_ENCLOSURE: "enclosure"; +/** + * Enum value "fan" for attribute {@link ATTR_HW_TYPE}. + * + * Fan + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_FAN: "fan"; +/** + * Enum value "gpu" for attribute {@link ATTR_HW_TYPE}. + * + * GPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_GPU: "gpu"; +/** + * Enum value "logical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Logical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_LOGICAL_DISK: "logical_disk"; +/** + * Enum value "memory" for attribute {@link ATTR_HW_TYPE}. + * + * Memory + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_MEMORY: "memory"; +/** + * Enum value "network" for attribute {@link ATTR_HW_TYPE}. + * + * Network + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_NETWORK: "network"; +/** + * Enum value "physical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Physical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_PHYSICAL_DISK: "physical_disk"; +/** + * Enum value "power_supply" for attribute {@link ATTR_HW_TYPE}. + * + * Power supply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_POWER_SUPPLY: "power_supply"; +/** + * Enum value "tape_drive" for attribute {@link ATTR_HW_TYPE}. + * + * Tape drive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_TAPE_DRIVE: "tape_drive"; +/** + * Enum value "temperature" for attribute {@link ATTR_HW_TYPE}. + * + * Temperature + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_TEMPERATURE: "temperature"; +/** + * Enum value "voltage" for attribute {@link ATTR_HW_TYPE}. + * + * Voltage + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const HW_TYPE_VALUE_VOLTAGE: "voltage"; +/** + * Vendor name of the hardware component + * + * @example Dell + * @example HP + * @example Intel + * @example AMD + * @example LSI + * @example Lenovo + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_HW_VENDOR: "hw.vendor"; +/** + * This attribute represents the state of the application. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_IOS_APP_STATE: "ios.app.state"; +/** + * Enum value "active" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_INACTIVE: "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_APP_STATE_VALUE_TERMINATE: "terminate"; +/** + * Deprecated. Use the `ios.app.state` attribute. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `ios.app.state`. + */ +export declare const ATTR_IOS_STATE: "ios.state"; +/** + * Enum value "active" for attribute {@link ATTR_IOS_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_BACKGROUND: "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_FOREGROUND: "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_INACTIVE: "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const IOS_STATE_VALUE_TERMINATE: "terminate"; +/** + * Protocol version, as specified in the `jsonrpc` property of the request and its corresponding response. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JSONRPC_PROTOCOL_VERSION: "jsonrpc.protocol.version"; +/** + * A string representation of the `id` property of the request and its corresponding response. + * + * @example 10 + * @example request-7 + * + * @note Under the [JSON-RPC specification](https://www.jsonrpc.org/specification), the `id` property may be a string, number, null, or omitted entirely. When omitted, the request is treated as a notification. Using `null` is not equivalent to omitting the `id`, but it is discouraged. + * Instrumentations **SHOULD NOT** capture this attribute when the `id` is `null` or omitted. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JSONRPC_REQUEST_ID: "jsonrpc.request.id"; +/** + * Name of the buffer pool. + * + * @example mapped + * @example direct + * + * @note Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JVM_BUFFER_POOL_NAME: "jvm.buffer.pool.name"; +/** + * Name of the garbage collector cause. + * + * @example System.gc() + * @example Allocation Failure + * + * @note Garbage collector cause is generally obtained via [GarbageCollectionNotificationInfo#getGcCause()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcCause()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_JVM_GC_CAUSE: "jvm.gc.cause"; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CLUSTER_NAME: "k8s.cluster.name"; +/** + * A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note K8s doesn't have support for obtaining a cluster ID. If this is ever + * added, we will recommend collecting the `k8s.cluster.uid` through the + * official APIs. In the meantime, we are able to use the `uid` of the + * `kube-system` namespace as a proxy for cluster ID. Read on for the + * rationale. + * + * Every object created in a K8s cluster is assigned a distinct UID. The + * `kube-system` namespace is used by Kubernetes itself and will exist + * for the lifetime of the cluster. Using the `uid` of the `kube-system` + * namespace is a reasonable proxy for the K8s ClusterID as it will only + * change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are + * UUIDs as standardized by + * [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html). + * Which states: + * + * > If generated according to one of the mechanisms defined in Rec. + * > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be + * > different from all other UUIDs generated before 3603 A.D., or is + * > extremely likely to be different (depending on the mechanism chosen). + * + * Therefore, UIDs between clusters should be extremely unlikely to + * conflict. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CLUSTER_UID: "k8s.cluster.uid"; +/** + * The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`). + * + * @example redis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_NAME: "k8s.container.name"; +/** + * Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_RESTART_COUNT: "k8s.container.restart_count"; +/** + * Last terminated reason of the Container. + * + * @example Evicted + * @example Error + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON: "k8s.container.status.last_terminated_reason"; +/** + * The reason for the container state. Corresponds to the `reason` field of the: [K8s ContainerStateWaiting](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core) or [K8s ContainerStateTerminated](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core) + * + * @example ContainerCreating + * @example CrashLoopBackOff + * @example CreateContainerConfigError + * @example ErrImagePull + * @example ImagePullBackOff + * @example OOMKilled + * @example Completed + * @example Error + * @example ContainerCannotRun + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_STATUS_REASON: "k8s.container.status.reason"; +/** + * Enum value "Completed" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container has completed execution. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_COMPLETED: "Completed"; +/** + * Enum value "ContainerCannotRun" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container cannot run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CANNOT_RUN: "ContainerCannotRun"; +/** + * Enum value "ContainerCreating" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is being created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CREATING: "ContainerCreating"; +/** + * Enum value "CrashLoopBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is in a crash loop back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CRASH_LOOP_BACK_OFF: "CrashLoopBackOff"; +/** + * Enum value "CreateContainerConfigError" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error creating the container configuration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_CREATE_CONTAINER_CONFIG_ERROR: "CreateContainerConfigError"; +/** + * Enum value "ErrImagePull" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error pulling the container image. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_ERR_IMAGE_PULL: "ErrImagePull"; +/** + * Enum value "Error" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error with the container. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_ERROR: "Error"; +/** + * Enum value "ImagePullBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container image pull is in back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_IMAGE_PULL_BACK_OFF: "ImagePullBackOff"; +/** + * Enum value "OOMKilled" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container was killed due to out of memory. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_REASON_VALUE_OOM_KILLED: "OOMKilled"; +/** + * The state of the container. [K8s ContainerState](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core) + * + * @example terminated + * @example running + * @example waiting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CONTAINER_STATUS_STATE: "k8s.container.status.state"; +/** + * Enum value "running" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_STATE_VALUE_RUNNING: "running"; +/** + * Enum value "terminated" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container has terminated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_STATE_VALUE_TERMINATED: "terminated"; +/** + * Enum value "waiting" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is waiting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_CONTAINER_STATUS_STATE_VALUE_WAITING: "waiting"; +/** + * The cronjob annotation placed on the CronJob, the `` being the annotation name, the value being the annotation value. + * + * @example 4 + * @example + * + * @note Examples: + * + * - An annotation `retries` with value `4` **SHOULD** be recorded as the + * `k8s.cronjob.annotation.retries` attribute with value `"4"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_ANNOTATION: (key: string) => string; +/** + * The label placed on the CronJob, the `` being the label name, the value being the label value. + * + * @example weekly + * @example + * + * @note Examples: + * + * - A label `type` with value `weekly` **SHOULD** be recorded as the + * `k8s.cronjob.label.type` attribute with value `"weekly"`. + * - A label `automated` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_LABEL: (key: string) => string; +/** + * The name of the CronJob. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_NAME: "k8s.cronjob.name"; +/** + * The UID of the CronJob. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_CRONJOB_UID: "k8s.cronjob.uid"; +/** + * The annotation placed on the DaemonSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.daemonset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_ANNOTATION: (key: string) => string; +/** + * The label placed on the DaemonSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.daemonset.label.app` attribute with value `"guestbook"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_LABEL: (key: string) => string; +/** + * The name of the DaemonSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_NAME: "k8s.daemonset.name"; +/** + * The UID of the DaemonSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DAEMONSET_UID: "k8s.daemonset.uid"; +/** + * The annotation placed on the Deployment, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.deployment.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_ANNOTATION: (key: string) => string; +/** + * The label placed on the Deployment, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.deployment.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_LABEL: (key: string) => string; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_NAME: "k8s.deployment.name"; +/** + * The UID of the Deployment. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_DEPLOYMENT_UID: "k8s.deployment.uid"; +/** + * The type of metric source for the horizontal pod autoscaler. + * + * @example Resource + * @example ContainerResource + * + * @note This attribute reflects the `type` field of spec.metrics[] in the HPA. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_METRIC_TYPE: "k8s.hpa.metric.type"; +/** + * The name of the horizontal pod autoscaler. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_NAME: "k8s.hpa.name"; +/** + * The API version of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example apps/v1 + * @example autoscaling/v2 + * + * @note This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_SCALETARGETREF_API_VERSION: "k8s.hpa.scaletargetref.api_version"; +/** + * The kind of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example Deployment + * @example StatefulSet + * + * @note This maps to the `kind` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_SCALETARGETREF_KIND: "k8s.hpa.scaletargetref.kind"; +/** + * The name of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example my-deployment + * @example my-statefulset + * + * @note This maps to the `name` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_SCALETARGETREF_NAME: "k8s.hpa.scaletargetref.name"; +/** + * The UID of the horizontal pod autoscaler. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HPA_UID: "k8s.hpa.uid"; +/** + * The size (identifier) of the K8s huge page. + * + * @example 2Mi + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_HUGEPAGE_SIZE: "k8s.hugepage.size"; +/** + * The annotation placed on the Job, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `number` with value `1` **SHOULD** be recorded + * as the `k8s.job.annotation.number` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_ANNOTATION: (key: string) => string; +/** + * The label placed on the Job, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example ci + * @example + * + * @note + * Examples: + * + * - A label `jobtype` with value `ci` **SHOULD** be recorded + * as the `k8s.job.label.jobtype` attribute with value `"ci"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_LABEL: (key: string) => string; +/** + * The name of the Job. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_NAME: "k8s.job.name"; +/** + * The UID of the Job. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_JOB_UID: "k8s.job.uid"; +/** + * The annotation placed on the Namespace, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `ttl` with value `0` **SHOULD** be recorded + * as the `k8s.namespace.annotation.ttl` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_ANNOTATION: (key: string) => string; +/** + * The label placed on the Namespace, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example default + * @example + * + * @note + * Examples: + * + * - A label `kubernetes.io/metadata.name` with value `default` **SHOULD** be recorded + * as the `k8s.namespace.label.kubernetes.io/metadata.name` attribute with value `"default"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_LABEL: (key: string) => string; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_NAME: "k8s.namespace.name"; +/** + * The phase of the K8s namespace. + * + * @example active + * @example terminating + * + * @note This attribute aligns with the `phase` field of the + * [K8s NamespaceStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NAMESPACE_PHASE: "k8s.namespace.phase"; +/** + * Enum value "active" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Active namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NAMESPACE_PHASE_VALUE_ACTIVE: "active"; +/** + * Enum value "terminating" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Terminating namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NAMESPACE_PHASE_VALUE_TERMINATING: "terminating"; +/** + * The annotation placed on the Node, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note Examples: + * + * - An annotation `node.alpha.kubernetes.io/ttl` with value `0` **SHOULD** be recorded as + * the `k8s.node.annotation.node.alpha.kubernetes.io/ttl` attribute with value `"0"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_ANNOTATION: (key: string) => string; +/** + * The status of the condition, one of True, False, Unknown. + * + * @example true + * @example false + * @example unknown + * + * @note This attribute aligns with the `status` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_CONDITION_STATUS: "k8s.node.condition.status"; +/** + * Enum value "false" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_FALSE: "false"; +/** + * Enum value "true" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_TRUE: "true"; +/** + * Enum value "unknown" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_UNKNOWN: "unknown"; +/** + * The condition type of a K8s Node. + * + * @example Ready + * @example DiskPressure + * + * @note K8s Node conditions as described + * by [K8s documentation](https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition). + * + * This attribute aligns with the `type` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * The set of possible values is not limited to those listed here. Managed Kubernetes environments, + * or custom controllers **MAY** introduce additional node condition types. + * When this occurs, the exact value as reported by the Kubernetes API **SHOULD** be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_CONDITION_TYPE: "k8s.node.condition.type"; +/** + * Enum value "DiskPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the disk size—that is, if the disk capacity is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_DISK_PRESSURE: "DiskPressure"; +/** + * Enum value "MemoryPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the node memory—that is, if the node memory is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_MEMORY_PRESSURE: "MemoryPressure"; +/** + * Enum value "NetworkUnavailable" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The network for the node is not correctly configured + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_NETWORK_UNAVAILABLE: "NetworkUnavailable"; +/** + * Enum value "PIDPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the processes—that is, if there are too many processes on the node + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_PID_PRESSURE: "PIDPressure"; +/** + * Enum value "Ready" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The node is healthy and ready to accept pods + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_NODE_CONDITION_TYPE_VALUE_READY: "Ready"; +/** + * The label placed on the Node, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example arm64 + * @example + * + * @note Examples: + * + * - A label `kubernetes.io/arch` with value `arm64` **SHOULD** be recorded + * as the `k8s.node.label.kubernetes.io/arch` attribute with value `"arm64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_LABEL: (key: string) => string; +/** + * The name of the Node. + * + * @example node-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_NAME: "k8s.node.name"; +/** + * The UID of the Node. + * + * @example 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_NODE_UID: "k8s.node.uid"; +/** + * The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value. + * + * @example true + * @example x64 + * @example + * + * @note Examples: + * + * - An annotation `kubernetes.io/enforce-mountable-secrets` with value `true` **SHOULD** be recorded as + * the `k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets` attribute with value `"true"`. + * - An annotation `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.annotation.mycompany.io/arch` attribute with value `"x64"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_ANNOTATION: (key: string) => string; +/** + * Specifies the hostname of the Pod. + * + * @example collector-gateway + * + * @note The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. + * Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) + * for more information about this field. + * + * This attribute aligns with the `hostname` field of the + * [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_HOSTNAME: "k8s.pod.hostname"; +/** + * IP address allocated to the Pod. + * + * @example 172.18.0.2 + * + * @note This attribute aligns with the `podIP` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_IP: "k8s.pod.ip"; +/** + * The label placed on the Pod, the `` being the label name, the value being the label value. + * + * @example my-app + * @example x64 + * @example + * + * @note Examples: + * + * - A label `app` with value `my-app` **SHOULD** be recorded as + * the `k8s.pod.label.app` attribute with value `"my-app"`. + * - A label `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.label.mycompany.io/arch` attribute with value `"x64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_LABEL: (key: string) => string; +/** + * Deprecated, use `k8s.pod.label` instead. + * + * @example my-app + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.pod.label`. + */ +export declare const ATTR_K8S_POD_LABELS: (key: string) => string; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_NAME: "k8s.pod.name"; +/** + * The start timestamp of the Pod. + * + * @example 2025-12-04T08:41:03Z + * + * @note Date and time at which the object was acknowledged by the Kubelet. + * This is before the Kubelet pulled the container image(s) for the pod. + * + * This attribute aligns with the `startTime` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), + * in ISO 8601 (RFC 3339 compatible) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_START_TIME: "k8s.pod.start_time"; +/** + * The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Pending + * @example Running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_STATUS_PHASE: "k8s.pod.status.phase"; +/** + * Enum value "Failed" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_FAILED: "Failed"; +/** + * Enum value "Pending" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_PENDING: "Pending"; +/** + * Enum value "Running" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_RUNNING: "Running"; +/** + * Enum value "Succeeded" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_SUCCEEDED: "Succeeded"; +/** + * Enum value "Unknown" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_PHASE_VALUE_UNKNOWN: "Unknown"; +/** + * The reason for the pod state. Corresponds to the `reason` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Evicted + * @example NodeAffinity + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_STATUS_REASON: "k8s.pod.status.reason"; +/** + * Enum value "Evicted" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is evicted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_EVICTED: "Evicted"; +/** + * Enum value "NodeAffinity" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is in a status because of its node affinity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_NODE_AFFINITY: "NodeAffinity"; +/** + * Enum value "NodeLost" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The reason on a pod when its state cannot be confirmed as kubelet is unresponsive on the node it is (was) running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_NODE_LOST: "NodeLost"; +/** + * Enum value "Shutdown" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The node is shutdown + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_SHUTDOWN: "Shutdown"; +/** + * Enum value "UnexpectedAdmissionError" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod was rejected admission to the node because of an error during admission that could not be categorized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_POD_STATUS_REASON_VALUE_UNEXPECTED_ADMISSION_ERROR: "UnexpectedAdmissionError"; +/** + * The UID of the Pod. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_POD_UID: "k8s.pod.uid"; +/** + * The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.replicaset.annotation.replicas` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_ANNOTATION: (key: string) => string; +/** + * The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.replicaset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_LABEL: (key: string) => string; +/** + * The name of the ReplicaSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_NAME: "k8s.replicaset.name"; +/** + * The UID of the ReplicaSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICASET_UID: "k8s.replicaset.uid"; +/** + * The name of the replication controller. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICATIONCONTROLLER_NAME: "k8s.replicationcontroller.name"; +/** + * The UID of the replication controller. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_REPLICATIONCONTROLLER_UID: "k8s.replicationcontroller.uid"; +/** + * The name of the resource quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_RESOURCEQUOTA_NAME: "k8s.resourcequota.name"; +/** + * The name of the K8s resource a resource quota defines. + * + * @example count/replicationcontrollers + * + * @note The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_RESOURCEQUOTA_RESOURCE_NAME: "k8s.resourcequota.resource_name"; +/** + * The UID of the resource quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_RESOURCEQUOTA_UID: "k8s.resourcequota.uid"; +/** + * The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.statefulset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_ANNOTATION: (key: string) => string; +/** + * The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.statefulset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_LABEL: (key: string) => string; +/** + * The name of the StatefulSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_NAME: "k8s.statefulset.name"; +/** + * The UID of the StatefulSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STATEFULSET_UID: "k8s.statefulset.uid"; +/** + * The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object. + * + * @example gold.storageclass.storage.k8s.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_STORAGECLASS_NAME: "k8s.storageclass.name"; +/** + * The name of the K8s volume. + * + * @example volume0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_VOLUME_NAME: "k8s.volume.name"; +/** + * The type of the K8s volume. + * + * @example emptyDir + * @example persistentVolumeClaim + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_K8S_VOLUME_TYPE: "k8s.volume.type"; +/** + * Enum value "configMap" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [configMap](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_CONFIG_MAP: "configMap"; +/** + * Enum value "downwardAPI" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [downwardAPI](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_DOWNWARD_API: "downwardAPI"; +/** + * Enum value "emptyDir" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * An [emptyDir](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_EMPTY_DIR: "emptyDir"; +/** + * Enum value "local" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [local](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_LOCAL: "local"; +/** + * Enum value "persistentVolumeClaim" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [persistentVolumeClaim](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM: "persistentVolumeClaim"; +/** + * Enum value "secret" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [secret](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const K8S_VOLUME_TYPE_VALUE_SECRET: "secret"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.state`. + */ +export declare const ATTR_LINUX_MEMORY_SLAB_STATE: "linux.memory.slab.state"; +/** + * Enum value "reclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE: "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE: "unreclaimable"; +/** + * The basename of the file. + * + * @example audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_NAME: "log.file.name"; +/** + * The basename of the file, with symlinks resolved. + * + * @example uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_NAME_RESOLVED: "log.file.name_resolved"; +/** + * The full path to the file. + * + * @example /var/log/mysql/audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_PATH: "log.file.path"; +/** + * The full path to the file, with symlinks resolved. + * + * @example /var/lib/docker/uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_FILE_PATH_RESOLVED: "log.file.path_resolved"; +/** + * The stream associated with the log. See below for a list of well-known values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_IOSTREAM: "log.iostream"; +/** + * Enum value "stderr" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Events from stderr stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LOG_IOSTREAM_VALUE_STDERR: "stderr"; +/** + * Enum value "stdout" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Logs from stdout stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const LOG_IOSTREAM_VALUE_STDOUT: "stdout"; +/** + * The complete original Log Record. + * + * @example 77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - Something happened + * @example [INFO] 8/3/24 12:34:56 Something happened + * + * @note This value **MAY** be added when processing a Log Record which was originally transmitted as a string or equivalent data type AND the Body field of the Log Record does not contain the same value. (e.g. a syslog or a log record read from a file.) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_RECORD_ORIGINAL: "log.record.original"; +/** + * A unique identifier for the Log Record. + * + * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV + * + * @note If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records **MUST** have different values. + * The id **MAY** be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_LOG_RECORD_UID: "log.record.uid"; +/** + * Name of the logical partition that hosts a systems with a mainframe operating system. + * + * @example LPAR01 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MAINFRAME_LPAR_NAME: "mainframe.lpar.name"; +/** + * The name of the request or notification method. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_METHOD_NAME: "mcp.method.name"; +/** + * Enum value "completion/complete" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to complete a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE: "completion/complete"; +/** + * Enum value "elicitation/create" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request from the server to elicit additional information from the user via the client + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_ELICITATION_CREATE: "elicitation/create"; +/** + * Enum value "initialize" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to initialize the MCP client. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_INITIALIZE: "initialize"; +/** + * Enum value "logging/setLevel" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to set the logging level. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL: "logging/setLevel"; +/** + * Enum value "notifications/cancelled" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification cancelling a previously-issued request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED: "notifications/cancelled"; +/** + * Enum value "notifications/initialized" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the MCP client has been initialized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED: "notifications/initialized"; +/** + * Enum value "notifications/message" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a message has been received. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE: "notifications/message"; +/** + * Enum value "notifications/progress" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating the progress for a long-running operation. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS: "notifications/progress"; +/** + * Enum value "notifications/prompts/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of prompts has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED: "notifications/prompts/list_changed"; +/** + * Enum value "notifications/resources/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of resources has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED: "notifications/resources/list_changed"; +/** + * Enum value "notifications/resources/updated" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a resource has been updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED: "notifications/resources/updated"; +/** + * Enum value "notifications/roots/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of roots has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED: "notifications/roots/list_changed"; +/** + * Enum value "notifications/tools/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of tools has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED: "notifications/tools/list_changed"; +/** + * Enum value "ping" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to check that the other party is still alive. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_PING: "ping"; +/** + * Enum value "prompts/get" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to get a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_PROMPTS_GET: "prompts/get"; +/** + * Enum value "prompts/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list prompts available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_PROMPTS_LIST: "prompts/list"; +/** + * Enum value "resources/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resources available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_LIST: "resources/list"; +/** + * Enum value "resources/read" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to read a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_READ: "resources/read"; +/** + * Enum value "resources/subscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to subscribe to a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE: "resources/subscribe"; +/** + * Enum value "resources/templates/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resource templates available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST: "resources/templates/list"; +/** + * Enum value "resources/unsubscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to unsubscribe from resource updates. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE: "resources/unsubscribe"; +/** + * Enum value "roots/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list roots available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_ROOTS_LIST: "roots/list"; +/** + * Enum value "sampling/createMessage" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to create a sampling message. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE: "sampling/createMessage"; +/** + * Enum value "tools/call" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to call a tool. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_TOOLS_CALL: "tools/call"; +/** + * Enum value "tools/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list tools available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MCP_METHOD_NAME_VALUE_TOOLS_LIST: "tools/list"; +/** + * The [version](https://modelcontextprotocol.io/specification/versioning) of the Model Context Protocol used. + * + * @example 2025-06-18 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_PROTOCOL_VERSION: "mcp.protocol.version"; +/** + * The value of the resource uri. + * + * @example postgres://database/customers/schema + * @example file:///home/user/documents/report.pdf + * + * @note This is a URI of the resource provided in the following requests or notifications: `resources/read`, `resources/subscribe`, `resources/unsubscribe`, or `notifications/resources/updated`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_RESOURCE_URI: "mcp.resource.uri"; +/** + * Identifies [MCP session](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management). + * + * @example 191c4850af6c49e08843a3f6c80e5046 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MCP_SESSION_ID: "mcp.session.id"; +/** + * Deprecated, use `rpc.message.compressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.compressed_size`. + */ +export declare const ATTR_MESSAGE_COMPRESSED_SIZE: "message.compressed_size"; +/** + * Deprecated, use `rpc.message.id` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.id`. + */ +export declare const ATTR_MESSAGE_ID: "message.id"; +/** + * Deprecated, use `rpc.message.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.type`. + */ +export declare const ATTR_MESSAGE_TYPE: "message.type"; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGE_TYPE_VALUE_RECEIVED: "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGE_TYPE_VALUE_SENT: "SENT"; +/** + * Deprecated, use `rpc.message.uncompressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.uncompressed_size`. + */ +export declare const ATTR_MESSAGE_UNCOMPRESSED_SIZE: "message.uncompressed_size"; +/** + * The number of messages sent, received, or processed in the scope of the batching operation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_BATCH_MESSAGE_COUNT: "messaging.batch.message_count"; +/** + * A unique identifier for the client that consumes or produces a message. + * + * @example client-5 + * @example myhost@8742@s8083jm + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_CLIENT_ID: "messaging.client.id"; +/** + * The name of the consumer group with which a consumer is associated. + * + * @example my-group + * @example indexer + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.consumer.group.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_CONSUMER_GROUP_NAME: "messaging.consumer.group.name"; +/** + * A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_ANONYMOUS: "messaging.destination.anonymous"; +/** + * The message destination name + * + * @example MyQueue + * @example MyTopic + * + * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If + * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_NAME: "messaging.destination.name"; +/** + * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`. + * + * @example "1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_PARTITION_ID: "messaging.destination.partition.id"; +/** + * The name of the destination subscription from which a message is consumed. + * + * @example subscription-a + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.destination.subscription.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME: "messaging.destination.subscription.name"; +/** + * Low cardinality representation of the messaging destination name + * + * @example /customers/{customerId} + * + * @note Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_TEMPLATE: "messaging.destination.template"; +/** + * A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_DESTINATION_TEMPORARY: "messaging.destination.temporary"; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export declare const ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS: "messaging.destination_publish.anonymous"; +/** + * Deprecated, no replacement at this time. + * + * @example MyQueue + * @example MyTopic + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export declare const ATTR_MESSAGING_DESTINATION_PUBLISH_NAME: "messaging.destination_publish.name"; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "$Default" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +export declare const ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP: "messaging.eventhubs.consumer.group"; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME: "messaging.eventhubs.message.enqueued_time"; +/** + * The ack deadline in seconds set for the modify ack deadline request. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE: "messaging.gcp_pubsub.message.ack_deadline"; +/** + * The ack id for a given message. + * + * @example "ack_id" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID: "messaging.gcp_pubsub.message.ack_id"; +/** + * The delivery attempt for a given message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT: "messaging.gcp_pubsub.message.delivery_attempt"; +/** + * The ordering key for a given message. If the attribute is not present, the message does not have an ordering key. + * + * @example "ordering_key" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY: "messaging.gcp_pubsub.message.ordering_key"; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "my-group" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +export declare const ATTR_MESSAGING_KAFKA_CONSUMER_GROUP: "messaging.kafka.consumer.group"; +/** + * Deprecated, use `messaging.destination.partition.id` instead. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Record string representation of the partition id in `messaging.destination.partition.id` attribute. + */ +export declare const ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION: "messaging.kafka.destination.partition"; +/** + * 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. + * + * @example "myKey" + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_KEY: "messaging.kafka.message.key"; +/** + * Deprecated, use `messaging.kafka.offset` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.kafka.offset`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET: "messaging.kafka.message.offset"; +/** + * A boolean that is true if the message is a tombstone. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE: "messaging.kafka.message.tombstone"; +/** + * The offset of a record in the corresponding Kafka partition. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_KAFKA_OFFSET: "messaging.kafka.offset"; +/** + * The size of the message body in bytes. + * + * @example 1439 + * + * @note This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed + * body size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_BODY_SIZE: "messaging.message.body.size"; +/** + * The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @example "MyConversationId" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_CONVERSATION_ID: "messaging.message.conversation_id"; +/** + * The size of the message body and metadata in bytes. + * + * @example 2738 + * + * @note This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed + * size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE: "messaging.message.envelope.size"; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @example "452a7c7c7c7048c2f887f61572b18fc2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_MESSAGE_ID: "messaging.message.id"; +/** + * Deprecated, use `messaging.operation.type` instead. + * + * @example publish + * @example create + * @example process + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.operation.type`. + */ +export declare const ATTR_MESSAGING_OPERATION: "messaging.operation"; +/** + * The system-specific name of the messaging operation. + * + * @example ack + * @example nack + * @example send + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_OPERATION_NAME: "messaging.operation.name"; +/** + * A string identifying the type of the messaging operation. + * + * @note If a custom value is used, it **MUST** be of low cardinality. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_OPERATION_TYPE: "messaging.operation.type"; +/** + * Enum value "create" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * A message is created. "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch sending scenarios. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_CREATE: "create"; +/** + * Enum value "deliver" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `process` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_DELIVER: "deliver"; +/** + * Enum value "process" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are processed by a consumer. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_PROCESS: "process"; +/** + * Enum value "publish" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `send` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `send`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_PUBLISH: "publish"; +/** + * Enum value "receive" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE: "receive"; +/** + * Enum value "send" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are provided for sending to an intermediary. If a single message is sent, the context of the "Send" span can be used as the creation context and no "Create" span needs to be created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_SEND: "send"; +/** + * Enum value "settle" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are settled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_OPERATION_TYPE_VALUE_SETTLE: "settle"; +/** + * RabbitMQ message routing key. + * + * @example "myKey" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY: "messaging.rabbitmq.destination.routing_key"; +/** + * RabbitMQ message delivery tag + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG: "messaging.rabbitmq.message.delivery_tag"; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "myConsumerGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name` on the consumer spans. No replacement for producer spans. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP: "messaging.rocketmq.client_group"; +/** + * Model of message consumption. This only applies to consumer spans. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL: "messaging.rocketmq.consumption_model"; +/** + * Enum value "broadcasting" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Broadcasting consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING: "broadcasting"; +/** + * Enum value "clustering" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Clustering consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING: "clustering"; +/** + * The delay time level for delay message, which determines the message delay time. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL: "messaging.rocketmq.message.delay_time_level"; +/** + * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + * + * @example 1665987217045 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP: "messaging.rocketmq.message.delivery_timestamp"; +/** + * It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group. + * + * @example "myMessageGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP: "messaging.rocketmq.message.group"; +/** + * Key(s) of message, another way to mark message besides message id. + * + * @example ["keyA", "keyB"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS: "messaging.rocketmq.message.keys"; +/** + * The secondary classifier of message besides topic. + * + * @example "tagA" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG: "messaging.rocketmq.message.tag"; +/** + * Type of message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE: "messaging.rocketmq.message.type"; +/** + * Enum value "delay" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Delay message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY: "delay"; +/** + * Enum value "fifo" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * FIFO message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO: "fifo"; +/** + * Enum value "normal" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Normal message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL: "normal"; +/** + * Enum value "transaction" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Transaction message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION: "transaction"; +/** + * Namespace of RocketMQ resources, resources in different namespaces are individual. + * + * @example "myNamespace" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_ROCKETMQ_NAMESPACE: "messaging.rocketmq.namespace"; +/** + * Deprecated, use `messaging.destination.subscription.name` instead. + * + * @example "subscription-a" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.destination.subscription.name`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME: "messaging.servicebus.destination.subscription_name"; +/** + * Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS: "messaging.servicebus.disposition_status"; +/** + * Enum value "abandon" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is abandoned + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON: "abandon"; +/** + * Enum value "complete" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is completed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE: "complete"; +/** + * Enum value "dead_letter" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is sent to dead letter queue + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER: "dead_letter"; +/** + * Enum value "defer" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is deferred + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER: "defer"; +/** + * Number of deliveries that have been attempted for this message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT: "messaging.servicebus.message.delivery_count"; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME: "messaging.servicebus.message.enqueued_time"; +/** + * The messaging system as identified by the client instrumentation. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_MESSAGING_SYSTEM: "messaging.system"; +/** + * Enum value "activemq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache ActiveMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_ACTIVEMQ: "activemq"; +/** + * Enum value "aws.sns" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Notification Service (SNS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_AWS_SNS: "aws.sns"; +/** + * Enum value "aws_sqs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Queue Service (SQS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_AWS_SQS: "aws_sqs"; +/** + * Enum value "eventgrid" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Grid + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_EVENTGRID: "eventgrid"; +/** + * Enum value "eventhubs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Hubs + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_EVENTHUBS: "eventhubs"; +/** + * Enum value "gcp_pubsub" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Google Cloud Pub/Sub + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_GCP_PUBSUB: "gcp_pubsub"; +/** + * Enum value "jms" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Java Message Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_JMS: "jms"; +/** + * Enum value "kafka" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Kafka + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_KAFKA: "kafka"; +/** + * Enum value "pulsar" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Pulsar + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_PULSAR: "pulsar"; +/** + * Enum value "rabbitmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * RabbitMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_RABBITMQ: "rabbitmq"; +/** + * Enum value "rocketmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache RocketMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_ROCKETMQ: "rocketmq"; +/** + * Enum value "servicebus" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Service Bus + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const MESSAGING_SYSTEM_VALUE_SERVICEBUS: "servicebus"; +/** + * Deprecated, use `network.local.address`. + * + * @example "192.168.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export declare const ATTR_NET_HOST_IP: "net.host.ip"; +/** + * Deprecated, use `server.address`. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_NET_HOST_NAME: "net.host.name"; +/** + * Deprecated, use `server.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port`. + */ +export declare const ATTR_NET_HOST_PORT: "net.host.port"; +/** + * Deprecated, use `network.peer.address`. + * + * @example "127.0.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export declare const ATTR_NET_PEER_IP: "net.peer.ip"; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export declare const ATTR_NET_PEER_NAME: "net.peer.name"; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +export declare const ATTR_NET_PEER_PORT: "net.peer.port"; +/** + * Deprecated, use `network.protocol.name`. + * + * @example amqp + * @example http + * @example mqtt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.name`. + */ +export declare const ATTR_NET_PROTOCOL_NAME: "net.protocol.name"; +/** + * Deprecated, use `network.protocol.version`. + * + * @example "3.1.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.version`. + */ +export declare const ATTR_NET_PROTOCOL_VERSION: "net.protocol.version"; +/** + * Deprecated, use `network.transport` and `network.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `network.transport` and `network.type`. + */ +export declare const ATTR_NET_SOCK_FAMILY: "net.sock.family"; +/** + * Enum value "inet" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv4 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_SOCK_FAMILY_VALUE_INET: "inet"; +/** + * Enum value "inet6" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv6 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_SOCK_FAMILY_VALUE_INET6: "inet6"; +/** + * Enum value "unix" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * Unix domain socket path + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_SOCK_FAMILY_VALUE_UNIX: "unix"; +/** + * Deprecated, use `network.local.address`. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +export declare const ATTR_NET_SOCK_HOST_ADDR: "net.sock.host.addr"; +/** + * Deprecated, use `network.local.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.port`. + */ +export declare const ATTR_NET_SOCK_HOST_PORT: "net.sock.host.port"; +/** + * Deprecated, use `network.peer.address`. + * + * @example 192.168.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +export declare const ATTR_NET_SOCK_PEER_ADDR: "net.sock.peer.addr"; +/** + * Deprecated, no replacement at this time. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +export declare const ATTR_NET_SOCK_PEER_NAME: "net.sock.peer.name"; +/** + * Deprecated, use `network.peer.port`. + * + * @example 65531 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.port`. + */ +export declare const ATTR_NET_SOCK_PEER_PORT: "net.sock.peer.port"; +/** + * Deprecated, use `network.transport`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.transport`. + */ +export declare const ATTR_NET_TRANSPORT: "net.transport"; +/** + * Enum value "inproc" for attribute {@link ATTR_NET_TRANSPORT}. + * + * In-process communication. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_INPROC: "inproc"; +/** + * Enum value "ip_tcp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_IP_TCP: "ip_tcp"; +/** + * Enum value "ip_udp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_IP_UDP: "ip_udp"; +/** + * Enum value "other" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Something else (non IP-based). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_OTHER: "other"; +/** + * Enum value "pipe" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Named or anonymous pipe. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NET_TRANSPORT_VALUE_PIPE: "pipe"; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @example "DE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_ICC: "network.carrier.icc"; +/** + * The mobile carrier country code. + * + * @example "310" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_MCC: "network.carrier.mcc"; +/** + * The mobile carrier network code. + * + * @example "001" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_MNC: "network.carrier.mnc"; +/** + * The name of the mobile carrier. + * + * @example "sprint" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CARRIER_NAME: "network.carrier.name"; +/** + * The state of network connection + * + * @example close_wait + * + * @note Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2) + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CONNECTION_STATE: "network.connection.state"; +/** + * Enum value "close_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_CLOSE_WAIT: "close_wait"; +/** + * Enum value "closed" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_CLOSED: "closed"; +/** + * Enum value "closing" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_CLOSING: "closing"; +/** + * Enum value "established" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_ESTABLISHED: "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_1: "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_2: "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_LAST_ACK: "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_LISTEN: "listen"; +/** + * Enum value "syn_received" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_SYN_RECEIVED: "syn_received"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_SYN_SENT: "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_STATE_VALUE_TIME_WAIT: "time_wait"; +/** + * 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. + * + * @example "LTE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CONNECTION_SUBTYPE: "network.connection.subtype"; +/** + * Enum value "cdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA: "cdma"; +/** + * Enum value "cdma2000_1xrtt" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA2000 1XRTT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT: "cdma2000_1xrtt"; +/** + * Enum value "edge" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EDGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE: "edge"; +/** + * Enum value "ehrpd" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EHRPD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD: "ehrpd"; +/** + * Enum value "evdo_0" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rel. 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0: "evdo_0"; +/** + * Enum value "evdo_a" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. A + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A: "evdo_a"; +/** + * Enum value "evdo_b" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. B + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B: "evdo_b"; +/** + * Enum value "gprs" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GPRS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS: "gprs"; +/** + * Enum value "gsm" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GSM + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_GSM: "gsm"; +/** + * Enum value "hsdpa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSDPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA: "hsdpa"; +/** + * Enum value "hspa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA: "hspa"; +/** + * Enum value "hspap" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPAP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP: "hspap"; +/** + * Enum value "hsupa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSUPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA: "hsupa"; +/** + * Enum value "iden" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IDEN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN: "iden"; +/** + * Enum value "iwlan" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IWLAN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN: "iwlan"; +/** + * Enum value "lte" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE: "lte"; +/** + * Enum value "lte_ca" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE CA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA: "lte_ca"; +/** + * Enum value "nr" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NR (New Radio) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_NR: "nr"; +/** + * Enum value "nrnsa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NRNSA (New Radio Non-Standalone) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA: "nrnsa"; +/** + * Enum value "td_scdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * TD-SCDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA: "td_scdma"; +/** + * Enum value "umts" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * UMTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS: "umts"; +/** + * The internet connection type. + * + * @example "wifi" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_CONNECTION_TYPE: "network.connection.type"; +/** + * Enum value "cell" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_CELL: "cell"; +/** + * Enum value "unavailable" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE: "unavailable"; +/** + * Enum value "unknown" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN: "unknown"; +/** + * Enum value "wifi" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_WIFI: "wifi"; +/** + * Enum value "wired" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_CONNECTION_TYPE_VALUE_WIRED: "wired"; +/** + * The network interface name. + * + * @example lo + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_INTERFACE_NAME: "network.interface.name"; +/** + * The network IO operation direction. + * + * @example transmit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NETWORK_IO_DIRECTION: "network.io.direction"; +/** + * Enum value "receive" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_IO_DIRECTION_VALUE_RECEIVE: "receive"; +/** + * Enum value "transmit" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NETWORK_IO_DIRECTION_VALUE_TRANSMIT: "transmit"; +/** + * NFSv4+ operation name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NFS_OPERATION_NAME: "nfs.operation.name"; +/** + * Linux: one of "hit" (NFSD_STATS_RC_HITS), "miss" (NFSD_STATS_RC_MISSES), or "nocache" (NFSD_STATS_RC_NOCACHE -- uncacheable) + * + * @example "hit" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NFS_SERVER_REPCACHE_STATUS: "nfs.server.repcache.status"; +/** + * The state of event loop time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_NODEJS_EVENTLOOP_STATE: "nodejs.eventloop.state"; +/** + * Enum value "active" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Active time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE: "active"; +/** + * Enum value "idle" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Idle time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const NODEJS_EVENTLOOP_STATE_VALUE_IDLE: "idle"; +/** + * The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known. + * + * @example sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4 + * + * @note Follows [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), and specifically the [Digest property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests). + * An example can be found in [Example Image Manifest](https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OCI_MANIFEST_DIGEST: "oci.manifest.digest"; +/** + * ONC/Sun RPC procedure name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_PROCEDURE_NAME: "onc_rpc.procedure.name"; +/** + * ONC/Sun RPC procedure number. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_PROCEDURE_NUMBER: "onc_rpc.procedure.number"; +/** + * ONC/Sun RPC program name. + * + * @example portmapper + * @example nfs + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_PROGRAM_NAME: "onc_rpc.program.name"; +/** + * ONC/Sun RPC program version. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ONC_RPC_VERSION: "onc_rpc.version"; +/** + * The service tier requested. May be a specific tier, default, or auto. + * + * @example auto + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENAI_REQUEST_SERVICE_TIER: "openai.request.service_tier"; +/** + * Enum value "auto" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO: "auto"; +/** + * Enum value "default" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT: "default"; +/** + * The service tier used for the response. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENAI_RESPONSE_SERVICE_TIER: "openai.response.service_tier"; +/** + * A fingerprint to track any eventual change in the Generative AI environment. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENAI_RESPONSE_SYSTEM_FINGERPRINT: "openai.response.system_fingerprint"; +/** + * The name of the cluster quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENSHIFT_CLUSTERQUOTA_NAME: "openshift.clusterquota.name"; +/** + * The UID of the cluster quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENSHIFT_CLUSTERQUOTA_UID: "openshift.clusterquota.uid"; +/** + * Parent-child Reference type + * + * @note The causal relationship between a child Span and a parent Span. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OPENTRACING_REF_TYPE: "opentracing.ref_type"; +/** + * Enum value "child_of" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span depends on the child Span in some capacity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENTRACING_REF_TYPE_VALUE_CHILD_OF: "child_of"; +/** + * Enum value "follows_from" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span doesn't depend in any way on the result of the child Span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM: "follows_from"; +/** + * Unique identifier for a particular build or compilation of the operating system. + * + * @example TQ3C.230805.001.B2 + * @example 20E247 + * @example 22621 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_BUILD_ID: "os.build_id"; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @example Microsoft Windows [Version 10.0.18363.778] + * @example Ubuntu 18.04.1 LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_DESCRIPTION: "os.description"; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_NAME: "os.name"; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_TYPE: "os.type"; +/** + * Enum value "aix" for attribute {@link ATTR_OS_TYPE}. + * + * AIX (Advanced Interactive eXecutive) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_AIX: "aix"; +/** + * Enum value "darwin" for attribute {@link ATTR_OS_TYPE}. + * + * Apple Darwin + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_DARWIN: "darwin"; +/** + * Enum value "dragonflybsd" for attribute {@link ATTR_OS_TYPE}. + * + * DragonFly BSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_DRAGONFLYBSD: "dragonflybsd"; +/** + * Enum value "freebsd" for attribute {@link ATTR_OS_TYPE}. + * + * FreeBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_FREEBSD: "freebsd"; +/** + * Enum value "hpux" for attribute {@link ATTR_OS_TYPE}. + * + * HP-UX (Hewlett Packard Unix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_HPUX: "hpux"; +/** + * Enum value "linux" for attribute {@link ATTR_OS_TYPE}. + * + * Linux + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_LINUX: "linux"; +/** + * Enum value "netbsd" for attribute {@link ATTR_OS_TYPE}. + * + * NetBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_NETBSD: "netbsd"; +/** + * Enum value "openbsd" for attribute {@link ATTR_OS_TYPE}. + * + * OpenBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_OPENBSD: "openbsd"; +/** + * Enum value "solaris" for attribute {@link ATTR_OS_TYPE}. + * + * SunOS, Oracle Solaris + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_SOLARIS: "solaris"; +/** + * Enum value "windows" for attribute {@link ATTR_OS_TYPE}. + * + * Microsoft Windows + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_WINDOWS: "windows"; +/** + * Enum value "z_os" for attribute {@link ATTR_OS_TYPE}. + * + * Deprecated. Use `zos` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `zos`. + */ +export declare const OS_TYPE_VALUE_Z_OS: "z_os"; +/** + * Enum value "zos" for attribute {@link ATTR_OS_TYPE}. + * + * IBM z/OS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OS_TYPE_VALUE_ZOS: "zos"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OS_VERSION: "os.version"; +/** + * A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. + * + * @example otlp_grpc_span_exporter/0 + * @example custom-name + * + * @note Implementations **SHOULD** ensure a low cardinality for this attribute, even across application or SDK restarts. + * E.g. implementations **MUST NOT** use UUIDs as values for this attribute. + * + * Implementations **MAY** achieve these goals by following a `/` pattern, e.g. `batching_span_processor/0`. + * Hereby `otel.component.type` refers to the corresponding attribute value of the component. + * + * The value of `instance-counter` **MAY** be automatically assigned by the component and uniqueness within the enclosing SDK instance **MUST** be guaranteed. + * For example, `` **MAY** be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an + * instance of the given component type is started. + * + * With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0` + * as `otel.component.name`, the second one `batching_span_processor/1` and so on. + * These values will therefore be reused in the case of an application restart. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_COMPONENT_NAME: "otel.component.name"; +/** + * A name identifying the type of the OpenTelemetry component. + * + * @example batching_span_processor + * @example com.example.MySpanExporter + * + * @note If none of the standardized values apply, implementations **SHOULD** use the language-defined name of the type. + * E.g. for Java the fully qualified classname **SHOULD** be used in this case. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_COMPONENT_TYPE: "otel.component.type"; +/** + * Enum value "batching_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR: "batching_log_processor"; +/** + * Enum value "batching_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR: "batching_span_processor"; +/** + * Enum value "otlp_grpc_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_LOG_EXPORTER: "otlp_grpc_log_exporter"; +/** + * Enum value "otlp_grpc_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_METRIC_EXPORTER: "otlp_grpc_metric_exporter"; +/** + * Enum value "otlp_grpc_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER: "otlp_grpc_span_exporter"; +/** + * Enum value "otlp_http_json_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_LOG_EXPORTER: "otlp_http_json_log_exporter"; +/** + * Enum value "otlp_http_json_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_METRIC_EXPORTER: "otlp_http_json_metric_exporter"; +/** + * Enum value "otlp_http_json_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER: "otlp_http_json_span_exporter"; +/** + * Enum value "otlp_http_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER: "otlp_http_log_exporter"; +/** + * Enum value "otlp_http_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_METRIC_EXPORTER: "otlp_http_metric_exporter"; +/** + * Enum value "otlp_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER: "otlp_http_span_exporter"; +/** + * Enum value "periodic_metric_reader" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK periodically exporting metric reader + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_PERIODIC_METRIC_READER: "periodic_metric_reader"; +/** + * Enum value "prometheus_http_text_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Prometheus metric exporter over HTTP with the default text-based format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_PROMETHEUS_HTTP_TEXT_METRIC_EXPORTER: "prometheus_http_text_metric_exporter"; +/** + * Enum value "simple_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR: "simple_log_processor"; +/** + * Enum value "simple_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR: "simple_span_processor"; +/** + * Enum value "zipkin_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Zipkin span exporter over HTTP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_COMPONENT_TYPE_VALUE_ZIPKIN_HTTP_SPAN_EXPORTER: "zipkin_http_span_exporter"; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @note This attribute **SHOULD** be used by non-OTLP exporters when destination does not support `EventName` or equivalent field. This attribute **MAY** be used by applications using existing logging libraries so that it can be used to set the `EventName` field by Collector or SDK components. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_EVENT_NAME: "otel.event.name"; +/** + * Deprecated. Use the `otel.scope.name` attribute + * + * @example io.opentelemetry.contrib.mongodb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.name`. + */ +export declare const ATTR_OTEL_LIBRARY_NAME: "otel.library.name"; +/** + * Deprecated. Use the `otel.scope.version` attribute. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.version`. + */ +export declare const ATTR_OTEL_LIBRARY_VERSION: "otel.library.version"; +/** + * The schema URL of the instrumentation scope. + * + * @example https://opentelemetry.io/schemas/1.31.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_SCOPE_SCHEMA_URL: "otel.scope.schema_url"; +/** + * 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) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_SPAN_PARENT_ORIGIN: "otel.span.parent.origin"; +/** + * Enum value "local" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is false + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_PARENT_ORIGIN_VALUE_LOCAL: "local"; +/** + * Enum value "none" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span does not have a parent, it is a root span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_PARENT_ORIGIN_VALUE_NONE: "none"; +/** + * Enum value "remote" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is true + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_PARENT_ORIGIN_VALUE_REMOTE: "remote"; +/** + * The result value of the sampler for this span + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_OTEL_SPAN_SAMPLING_RESULT: "otel.span.sampling_result"; +/** + * Enum value "DROP" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled and not recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP: "DROP"; +/** + * Enum value "RECORD_AND_SAMPLE" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is sampled and recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE: "RECORD_AND_SAMPLE"; +/** + * Enum value "RECORD_ONLY" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled, but recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY: "RECORD_ONLY"; +/** + * The [`service.name`](/docs/resource/README.md#service) of the remote service. **SHOULD** be equal to the actual `service.name` resource attribute of the remote service if any. + * + * @example "AuthTokenCache" + * + * @note Examples of `peer.service` that users may specify: + * + * - A Redis cache of auth tokens as `peer.service="AuthTokenCache"`. + * - A gRPC service `rpc.service="io.opentelemetry.AuthService"` may be hosted in both a gateway, `peer.service="ExternalApiService"` and a backend, `peer.service="AuthService"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `service.peer.name`. + */ +export declare const ATTR_PEER_SERVICE: "peer.service"; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +export declare const ATTR_POOL_NAME: "pool.name"; +/** + * Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_LOCATION_IS_FOLDED: "pprof.location.is_folded"; +/** + * Indicates that there are filenames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_FILENAMES: "pprof.mapping.has_filenames"; +/** + * Indicates that there are functions related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_FUNCTIONS: "pprof.mapping.has_functions"; +/** + * Indicates that there are inline frames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_INLINE_FRAMES: "pprof.mapping.has_inline_frames"; +/** + * Indicates that there are line numbers related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_MAPPING_HAS_LINE_NUMBERS: "pprof.mapping.has_line_numbers"; +/** + * Free-form text associated with the profile. This field should not be used to store any machine-readable information, it is only for human-friendly content. + * + * @example ["hello world", "bazinga"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_COMMENT: "pprof.profile.comment"; +/** + * Documentation link for this profile type. + * + * @example http://pprof.example.com/cpu-profile.html + * + * @note The URL must be absolute and may be missing if the profile was generated by code that did not supply a link + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_DOC_URL: "pprof.profile.doc_url"; +/** + * Frames with Function.function_name fully matching the regexp will be dropped from the samples, along with their successors. + * + * @example /foobar/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_DROP_FRAMES: "pprof.profile.drop_frames"; +/** + * Frames with Function.function_name fully matching the regexp will be kept, even if it matches drop_frames. + * + * @example /bazinga/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PPROF_PROFILE_KEEP_FRAMES: "pprof.profile.keep_frames"; +/** + * Length of the process.command_args array + * + * @example 4 + * + * @note This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_ARGS_COUNT: "process.args_count"; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND: "process.command"; +/** + * 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`. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND_ARGS: "process.command_args"; +/** + * 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. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example C:\\cmd\\otecol --config="my directory\\config.yaml" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_COMMAND_LINE: "process.command_line"; +/** + * Specifies whether the context switches for this data point were voluntary or involuntary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_CONTEXT_SWITCH_TYPE: "process.context_switch.type"; +/** + * Enum value "involuntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY: "involuntary"; +/** + * Enum value "voluntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY: "voluntary"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export declare const ATTR_PROCESS_CPU_STATE: "process.cpu.state"; +/** + * Enum value "system" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CPU_STATE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CPU_STATE_VALUE_USER: "user"; +/** + * Enum value "wait" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_CPU_STATE_VALUE_WAIT: "wait"; +/** + * The date and time the process was created, in ISO 8601 format. + * + * @example 2023-11-21T09:25:34.853Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_CREATION_TIME: "process.creation.time"; +/** + * Process environment variables, `` being the environment variable name, the value being the environment variable value. + * + * @example ubuntu + * @example /usr/local/bin:/usr/bin + * + * @note Examples: + * + * - an environment variable `USER` with value `"ubuntu"` **SHOULD** be recorded + * as the `process.environment_variable.USER` attribute with value `"ubuntu"`. + * - an environment variable `PATH` with value `"/usr/local/bin:/usr/bin"` + * **SHOULD** be recorded as the `process.environment_variable.PATH` attribute + * with value `"/usr/local/bin:/usr/bin"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_ENVIRONMENT_VARIABLE: (key: string) => string; +/** + * The GNU build ID as found in the `.note.gnu.build-id` ELF section (hex string). + * + * @example c89b11207f6479603b0d49bf291c092c2b719293 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU: "process.executable.build_id.gnu"; +/** + * The Go build ID as retrieved by `go tool buildid `. + * + * @example foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO: "process.executable.build_id.go"; +/** + * Profiling specific build ID for executables. See the OTel specification for Profiles for more information. + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH: "process.executable.build_id.htlhash"; +/** + * "Deprecated, use `process.executable.build_id.htlhash` instead." + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.executable.build_id.htlhash`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING: "process.executable.build_id.profiling"; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_NAME: "process.executable.name"; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXECUTABLE_PATH: "process.executable.path"; +/** + * The exit code of the process. + * + * @example 127 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXIT_CODE: "process.exit.code"; +/** + * The date and time the process exited, in ISO 8601 format. + * + * @example 2023-11-21T09:26:12.315Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_EXIT_TIME: "process.exit.time"; +/** + * The PID of the process's group leader. This is also the process group ID (PGID) of the process. + * + * @example 23 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_GROUP_LEADER_PID: "process.group_leader.pid"; +/** + * Whether the process is connected to an interactive shell. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_INTERACTIVE: "process.interactive"; +/** + * The control group associated with the process. + * + * @example 1:name=systemd:/user.slice/user-1000.slice/session-3.scope + * @example 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope + * + * @note Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the [/proc/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_LINUX_CGROUP: "process.linux.cgroup"; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_OWNER: "process.owner"; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +export declare const ATTR_PROCESS_PAGING_FAULT_TYPE: "process.paging.fault_type"; +/** + * Enum value "major" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR: "minor"; +/** + * Parent Process identifier (PPID). + * + * @example 111 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_PARENT_PID: "process.parent_pid"; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_PID: "process.pid"; +/** + * The real user ID (RUID) of the process. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_REAL_USER_ID: "process.real_user.id"; +/** + * The username of the real user of the process. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_REAL_USER_NAME: "process.real_user.name"; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_DESCRIPTION: "process.runtime.description"; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_NAME: "process.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_RUNTIME_VERSION: "process.runtime.version"; +/** + * The saved user ID (SUID) of the process. + * + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_SAVED_USER_ID: "process.saved_user.id"; +/** + * The username of the saved user. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_SAVED_USER_NAME: "process.saved_user.name"; +/** + * The PID of the process's session leader. This is also the session ID (SID) of the process. + * + * @example 14 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_SESSION_LEADER_PID: "process.session_leader.pid"; +/** + * The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES) + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_STATE: "process.state"; +/** + * Enum value "defunct" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_DEFUNCT: "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_RUNNING: "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_SLEEPING: "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROCESS_STATE_VALUE_STOPPED: "stopped"; +/** + * Process title (proctitle) + * + * @example cat /etc/hostname + * @example xfce4-session + * @example bash + * + * @note In many Unix-like systems, process title (proctitle), is the string that represents the name or command line of a running process, displayed by system monitoring tools like ps, top, and htop. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_TITLE: "process.title"; +/** + * The effective user ID (EUID) of the process. + * + * @example 1001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_USER_ID: "process.user.id"; +/** + * The username of the effective user of the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_USER_NAME: "process.user.name"; +/** + * Virtual process identifier. + * + * @example 12 + * + * @note The process ID within a PID namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_VPID: "process.vpid"; +/** + * The working directory of the process. + * + * @example /root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROCESS_WORKING_DIRECTORY: "process.working_directory"; +/** + * Describes the interpreter or compiler of a single frame. + * + * @example cpython + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_PROFILE_FRAME_TYPE: "profile.frame.type"; +/** + * Enum value "beam" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Erlang](https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_BEAM: "beam"; +/** + * Enum value "cpython" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Python](https://wikipedia.org/wiki/Python_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_CPYTHON: "cpython"; +/** + * Enum value "dotnet" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [.NET](https://wikipedia.org/wiki/.NET) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_DOTNET: "dotnet"; +/** + * Enum value "go" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Go](https://wikipedia.org/wiki/Go_(programming_language)), + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_GO: "go"; +/** + * Enum value "jvm" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [JVM](https://wikipedia.org/wiki/Java_virtual_machine) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_JVM: "jvm"; +/** + * Enum value "kernel" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Kernel](https://wikipedia.org/wiki/Kernel_(operating_system)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_KERNEL: "kernel"; +/** + * Enum value "native" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * Can be one of but not limited to [C](https://wikipedia.org/wiki/C_(programming_language)), [C++](https://wikipedia.org/wiki/C%2B%2B), [Go](https://wikipedia.org/wiki/Go_(programming_language)) or [Rust](https://wikipedia.org/wiki/Rust_(programming_language)). If possible, a more precise value **MUST** be used. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_NATIVE: "native"; +/** + * Enum value "perl" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Perl](https://wikipedia.org/wiki/Perl) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_PERL: "perl"; +/** + * Enum value "php" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [PHP](https://wikipedia.org/wiki/PHP) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_PHP: "php"; +/** + * Enum value "ruby" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Ruby](https://wikipedia.org/wiki/Ruby_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_RUBY: "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Rust](https://wikipedia.org/wiki/Rust_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_RUST: "rust"; +/** + * Enum value "v8js" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [V8JS](https://wikipedia.org/wiki/V8_(JavaScript_engine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const PROFILE_FRAME_TYPE_VALUE_V8JS: "v8js"; +/** + * Deprecated, use `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.status_code`. + */ +export declare const ATTR_RPC_CONNECT_RPC_ERROR_CODE: "rpc.connect_rpc.error_code"; +/** + * Enum value "aborted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED: "aborted"; +/** + * Enum value "already_exists" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS: "already_exists"; +/** + * Enum value "cancelled" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED: "cancelled"; +/** + * Enum value "data_loss" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS: "data_loss"; +/** + * Enum value "deadline_exceeded" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED: "deadline_exceeded"; +/** + * Enum value "failed_precondition" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION: "failed_precondition"; +/** + * Enum value "internal" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL: "internal"; +/** + * Enum value "invalid_argument" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT: "invalid_argument"; +/** + * Enum value "not_found" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND: "not_found"; +/** + * Enum value "out_of_range" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE: "out_of_range"; +/** + * Enum value "permission_denied" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED: "permission_denied"; +/** + * Enum value "resource_exhausted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED: "resource_exhausted"; +/** + * Enum value "unauthenticated" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED: "unauthenticated"; +/** + * Enum value "unavailable" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE: "unavailable"; +/** + * Enum value "unimplemented" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED: "unimplemented"; +/** + * Enum value "unknown" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN: "unknown"; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +export declare const ATTR_RPC_CONNECT_RPC_REQUEST_METADATA: (key: string) => string; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +export declare const ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA: (key: string) => string; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +export declare const ATTR_RPC_GRPC_REQUEST_METADATA: (key: string) => string; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +export declare const ATTR_RPC_GRPC_RESPONSE_METADATA: (key: string) => string; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the gRPC status code on the `rpc.response.status_code` attribute. + */ +export declare const ATTR_RPC_GRPC_STATUS_CODE: "rpc.grpc.status_code"; +/** + * Enum value 0 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_OK: 0; +/** + * Enum value 1 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * CANCELLED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_CANCELLED: 1; +/** + * Enum value 2 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNKNOWN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN: 2; +/** + * Enum value 3 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INVALID_ARGUMENT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT: 3; +/** + * Enum value 4 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DEADLINE_EXCEEDED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED: 4; +/** + * Enum value 5 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * NOT_FOUND + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND: 5; +/** + * Enum value 6 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ALREADY_EXISTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS: 6; +/** + * Enum value 7 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * PERMISSION_DENIED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED: 7; +/** + * Enum value 8 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * RESOURCE_EXHAUSTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED: 8; +/** + * Enum value 9 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * FAILED_PRECONDITION + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION: 9; +/** + * Enum value 10 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ABORTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_ABORTED: 10; +/** + * Enum value 11 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OUT_OF_RANGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE: 11; +/** + * Enum value 12 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNIMPLEMENTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED: 12; +/** + * Enum value 13 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INTERNAL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_INTERNAL: 13; +/** + * Enum value 14 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAVAILABLE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE: 14; +/** + * Enum value 15 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DATA_LOSS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS: 15; +/** + * Enum value 16 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAUTHENTICATED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED: 16; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @example -32700 + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the error code on the `rpc.response.status_code` attribute. + */ +export declare const ATTR_RPC_JSONRPC_ERROR_CODE: "rpc.jsonrpc.error_code"; +/** + * Deprecated, use span status description or `error.message` attribute on other signals. + * + * @example Parse error + * @example User already exists + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use the span status description or `error.message` attribute on other signals. + */ +export declare const ATTR_RPC_JSONRPC_ERROR_MESSAGE: "rpc.jsonrpc.error_message"; +/** + * Deprecated, use `jsonrpc.request.id` instead. + * + * @example 10 + * @example request-7 + * @example + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.request.id`. + */ +export declare const ATTR_RPC_JSONRPC_REQUEST_ID: "rpc.jsonrpc.request_id"; +/** + * Deprecated, use `jsonrpc.protocol.version` instead. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.protocol.version`. + */ +export declare const ATTR_RPC_JSONRPC_VERSION: "rpc.jsonrpc.version"; +/** + * Compressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_COMPRESSED_SIZE: "rpc.message.compressed_size"; +/** + * **MUST** be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * @note This way we guarantee that the values will be consistent between different implementations. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_ID: "rpc.message.id"; +/** + * Whether this is a received or sent message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_TYPE: "rpc.message.type"; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_MESSAGE_TYPE_VALUE_RECEIVED: "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_MESSAGE_TYPE_VALUE_SENT: "SENT"; +/** + * Uncompressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE: "rpc.message.uncompressed_size"; +/** + * The fully-qualified logical name of the method from the RPC interface perspective. + * + * @example com.example.ExampleService/exampleMethod + * @example EchoService/Echo + * @example _OTHER + * + * @note The method name **MAY** have unbounded cardinality in edge or error cases. + * + * Some RPC frameworks or libraries provide a fixed set of recognized methods + * for client stubs and server implementations. Instrumentations for such + * frameworks **MUST** set this attribute to the original method name only + * when the method is recognized by the framework or library. + * + * When the method is not recognized, for example, when the server receives + * a request for a method that is not predefined on the server, or when + * instrumentation is not able to reliably detect if the method is predefined, + * the attribute **MUST** be set to `_OTHER`. In such cases, tracing + * instrumentations **MUST** also set `rpc.method_original` attribute to + * the original method value. + * + * If the RPC instrumentation could end up converting valid RPC methods to + * `_OTHER`, then it **SHOULD** provide a way to configure the list of recognized + * RPC methods. + * + * The `rpc.method` can be different from the name of any implementing + * method/function. + * The `code.function.name` attribute may be used to record the fully-qualified + * method actually executing the call on the server side, or the + * RPC client stub method on the client side. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_METHOD: "rpc.method"; +/** + * The original name of the method used by the client. + * + * @example com.myservice.EchoService/catchAll + * @example com.myservice.EchoService/unknownMethod + * @example InvalidMethod + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_METHOD_ORIGINAL: "rpc.method_original"; +/** + * RPC request metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["1.2.3.4", "1.2.3.5"]` **SHOULD** be recorded as + * `rpc.request.metadata.my-custom-key` attribute with value `["1.2.3.4", "1.2.3.5"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_REQUEST_METADATA: (key: string) => string; +/** + * RPC response metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["attribute_value"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["attribute_value"]` **SHOULD** be recorded as + * the `rpc.response.metadata.my-custom-key` attribute with value `["attribute_value"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_RESPONSE_METADATA: (key: string) => string; +/** + * Status code of the RPC returned by the RPC server or generated by the client + * + * @example OK + * @example DEADLINE_EXCEEDED + * @example -32602 + * + * @note Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes. + * Semantic conventions for individual RPC frameworks **SHOULD** document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_RESPONSE_STATUS_CODE: "rpc.response.status_code"; +/** + * Deprecated, use fully-qualified `rpc.method` instead. + * + * @example "myservice.EchoService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `rpc.method` which is expected to be a fully-qualified name. + */ +export declare const ATTR_RPC_SERVICE: "rpc.service"; +/** + * Deprecated, use `rpc.system.name` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.system.name`. + */ +export declare const ATTR_RPC_SYSTEM: "rpc.system"; +/** + * Enum value "apache_dubbo" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Apache Dubbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_APACHE_DUBBO: "apache_dubbo"; +/** + * Enum value "connect_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Connect RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_CONNECT_RPC: "connect_rpc"; +/** + * Enum value "dotnet_wcf" for attribute {@link ATTR_RPC_SYSTEM}. + * + * .NET WCF + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_DOTNET_WCF: "dotnet_wcf"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * gRPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_GRPC: "grpc"; +/** + * Enum value "java_rmi" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Java RMI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_JAVA_RMI: "java_rmi"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * JSON-RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_JSONRPC: "jsonrpc"; +/** + * Enum value "onc_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * [ONC RPC (Sun RPC)](https://datatracker.ietf.org/doc/html/rfc5531) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_VALUE_ONC_RPC: "onc_rpc"; +/** + * The Remote Procedure Call (RPC) system. + * + * @note The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_RPC_SYSTEM_NAME: "rpc.system.name"; +/** + * Enum value "connectrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Connect RPC](https://connectrpc.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_CONNECTRPC: "connectrpc"; +/** + * Enum value "dubbo" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Apache Dubbo](https://dubbo.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_DUBBO: "dubbo"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [gRPC](https://grpc.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_GRPC: "grpc"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [JSON-RPC](https://www.jsonrpc.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const RPC_SYSTEM_NAME_VALUE_JSONRPC: "jsonrpc"; +/** + * A categorization value keyword used by the entity using the rule for detection of this event + * + * @example Attempted Information Leak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_CATEGORY: "security_rule.category"; +/** + * The description of the rule generating the event. + * + * @example Block requests to public DNS over HTTPS / TLS protocols + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_DESCRIPTION: "security_rule.description"; +/** + * Name of the license under which the rule used to generate this event is made available. + * + * @example Apache 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_LICENSE: "security_rule.license"; +/** + * The name of the rule or signature generating the event. + * + * @example BLOCK_DNS_over_TLS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_NAME: "security_rule.name"; +/** + * Reference URL to additional information about the rule used to generate this event. + * + * @example https://en.wikipedia.org/wiki/DNS_over_TLS + * + * @note The URL can point to the vendor’s documentation about the rule. If that’s not available, it can also be a link to a more general page describing this type of alert. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_REFERENCE: "security_rule.reference"; +/** + * Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. + * + * @example Standard_Protocol_Filters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_RULESET_NAME: "security_rule.ruleset.name"; +/** + * A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. + * + * @example 550e8400-e29b-41d4-a716-446655440000 + * @example 1100110011 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_UUID: "security_rule.uuid"; +/** + * The version / revision of the rule being used for analysis. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SECURITY_RULE_VERSION: "security_rule.version"; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_INSTANCE_ID: "service.instance.id"; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_NAMESPACE: "service.namespace"; +/** + * Logical name of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.name`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example shoppingcart + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_PEER_NAME: "service.peer.name"; +/** + * Logical namespace of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.namespace`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example Shop + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SERVICE_PEER_NAMESPACE: "service.peer.namespace"; +/** + * A unique id to identify a session. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SESSION_ID: "session.id"; +/** + * The previous `session.id` for this user, when known. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SESSION_PREVIOUS_ID: "session.previous_id"; +/** + * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example source.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the destination side, and when communicating through an intermediary, `source.address` **SHOULD** represent the source address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SOURCE_ADDRESS: "source.address"; +/** + * Source port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SOURCE_PORT: "source.port"; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +export declare const ATTR_STATE: "state"; +/** + * Enum value "idle" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const STATE_VALUE_IDLE: "idle"; +/** + * Enum value "used" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const STATE_VALUE_USED: "used"; +/** + * Deprecated, use `cpu.logical_number` instead. + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.logical_number`. + */ +export declare const ATTR_SYSTEM_CPU_LOGICAL_NUMBER: "system.cpu.logical_number"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example idle + * @example interrupt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +export declare const ATTR_SYSTEM_CPU_STATE: "system.cpu.state"; +/** + * Enum value "idle" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_IDLE: "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_INTERRUPT: "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_IOWAIT: "iowait"; +/** + * Enum value "nice" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_NICE: "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_STEAL: "steal"; +/** + * Enum value "system" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_SYSTEM: "system"; +/** + * Enum value "user" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_CPU_STATE_VALUE_USER: "user"; +/** + * The device identifier + * + * @example (identifier) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_DEVICE: "system.device"; +/** + * The filesystem mode + * + * @example rw, ro + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_MODE: "system.filesystem.mode"; +/** + * The filesystem mount path + * + * @example /mnt/data + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT: "system.filesystem.mountpoint"; +/** + * The filesystem state + * + * @example used + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_STATE: "system.filesystem.state"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_STATE_VALUE_FREE: "free"; +/** + * Enum value "reserved" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED: "reserved"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_STATE_VALUE_USED: "used"; +/** + * The filesystem type + * + * @example ext4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_FILESYSTEM_TYPE: "system.filesystem.type"; +/** + * Enum value "exfat" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT: "exfat"; +/** + * Enum value "ext4" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4: "ext4"; +/** + * Enum value "fat32" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32: "fat32"; +/** + * Enum value "hfsplus" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS: "hfsplus"; +/** + * Enum value "ntfs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS: "ntfs"; +/** + * Enum value "refs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_FILESYSTEM_TYPE_VALUE_REFS: "refs"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE: "system.memory.linux.slab.state"; +/** + * Enum value "reclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE: "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE: "unreclaimable"; +/** + * The memory state + * + * @example free + * @example cached + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_MEMORY_STATE: "system.memory.state"; +/** + * Enum value "buffers" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_BUFFERS: "buffers"; +/** + * Enum value "cached" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_CACHED: "cached"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_FREE: "free"; +/** + * Enum value "shared" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, report shared memory usage with `metric.system.memory.shared` metric + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_SHARED: "shared"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * Actual used virtual memory in bytes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_MEMORY_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `network.connection.state` instead. + * + * @example close_wait + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.connection.state`. + */ +export declare const ATTR_SYSTEM_NETWORK_STATE: "system.network.state"; +/** + * Enum value "close" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_CLOSE: "close"; +/** + * Enum value "close_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT: "close_wait"; +/** + * Enum value "closing" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_CLOSING: "closing"; +/** + * Enum value "delete" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_DELETE: "delete"; +/** + * Enum value "established" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED: "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1: "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2: "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_LAST_ACK: "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_LISTEN: "listen"; +/** + * Enum value "syn_recv" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_SYN_RECV: "syn_recv"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_SYN_SENT: "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT: "time_wait"; +/** + * The paging access direction + * + * @example in + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_PAGING_DIRECTION: "system.paging.direction"; +/** + * Enum value "in" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_DIRECTION_VALUE_IN: "in"; +/** + * Enum value "out" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_DIRECTION_VALUE_OUT: "out"; +/** + * The paging fault type + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_PAGING_FAULT_TYPE: "system.paging.fault.type"; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_FAULT_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_FAULT_TYPE_VALUE_MINOR: "minor"; +/** + * The memory paging state + * + * @example free + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_SYSTEM_PAGING_STATE: "system.paging.state"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_STATE_VALUE_FREE: "free"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_STATE_VALUE_USED: "used"; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +export declare const ATTR_SYSTEM_PAGING_TYPE: "system.paging.type"; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PAGING_TYPE_VALUE_MINOR: "minor"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +export declare const ATTR_SYSTEM_PROCESS_STATUS: "system.process.status"; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT: "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_RUNNING: "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_SLEEPING: "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESS_STATUS_VALUE_STOPPED: "stopped"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +export declare const ATTR_SYSTEM_PROCESSES_STATUS: "system.processes.status"; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT: "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_RUNNING: "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING: "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const SYSTEM_PROCESSES_STATUS_VALUE_STOPPED: "stopped"; +/** + * The name of the auto instrumentation agent or distribution, if used. + * + * @example parts-unlimited-java + * + * @note Official auto instrumentation agents and distributions **SHOULD** set the `telemetry.distro.name` attribute to + * a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TELEMETRY_DISTRO_NAME: "telemetry.distro.name"; +/** + * The version string of the auto instrumentation agent or distribution, if used. + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TELEMETRY_DISTRO_VERSION: "telemetry.distro.version"; +/** + * The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case). + * + * @example org.example.TestCase1.test1 + * @example example/tests/TestCase1.test1 + * @example ExampleTestCase1_test1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_CASE_NAME: "test.case.name"; +/** + * The status of the actual test case result from test execution. + * + * @example pass + * @example fail + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_CASE_RESULT_STATUS: "test.case.result.status"; +/** + * Enum value "fail" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * fail + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_CASE_RESULT_STATUS_VALUE_FAIL: "fail"; +/** + * Enum value "pass" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * pass + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_CASE_RESULT_STATUS_VALUE_PASS: "pass"; +/** + * The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite). + * + * @example TestSuite1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_SUITE_NAME: "test.suite.name"; +/** + * The status of the test suite run. + * + * @example success + * @example failure + * @example skipped + * @example aborted + * @example timed_out + * @example in_progress + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TEST_SUITE_RUN_STATUS: "test.suite.run.status"; +/** + * Enum value "aborted" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * aborted + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_ABORTED: "aborted"; +/** + * Enum value "failure" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_FAILURE: "failure"; +/** + * Enum value "in_progress" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * in_progress + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS: "in_progress"; +/** + * Enum value "skipped" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * skipped + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_SKIPPED: "skipped"; +/** + * Enum value "success" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * success + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_SUCCESS: "success"; +/** + * Enum value "timed_out" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * timed_out + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT: "timed_out"; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @example 42 + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().threadId()` | + * | .NET | `Thread.CurrentThread.ManagedThreadId` | + * | Python | `threading.current_thread().ident` | + * | Ruby | `Thread.current.object_id` | + * | C++ | `std::this_thread::get_id()` | + * | Erlang | `erlang:self()` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_THREAD_ID: "thread.id"; +/** + * Current thread name. + * + * @example "main" + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().getName()` | + * | .NET | `Thread.CurrentThread.Name` | + * | Python | `threading.current_thread().name` | + * | Ruby | `Thread.current.name` | + * | Erlang | `erlang:process_info(self(), registered_name)` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_THREAD_NAME: "thread.name"; +/** + * String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection. + * + * @example TLS_RSA_WITH_3DES_EDE_CBC_SHA + * @example TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + * + * @note The values allowed for `tls.cipher` **MUST** be one of the `Descriptions` of the [registered TLS Cipher Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CIPHER: "tls.cipher"; +/** + * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_CERTIFICATE: "tls.client.certificate"; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_CERTIFICATE_CHAIN: "tls.client.certificate_chain"; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_HASH_MD5: "tls.client.hash.md5"; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_HASH_SHA1: "tls.client.hash.sha1"; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_HASH_SHA256: "tls.client.hash.sha256"; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_ISSUER: "tls.client.issuer"; +/** + * A hash that identifies clients based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_JA3: "tls.client.ja3"; +/** + * Date/Time indicating when client certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_NOT_AFTER: "tls.client.not_after"; +/** + * Date/Time indicating when client certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_NOT_BEFORE: "tls.client.not_before"; +/** + * Deprecated, use `server.address` instead. + * + * @example opentelemetry.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +export declare const ATTR_TLS_CLIENT_SERVER_NAME: "tls.client.server_name"; +/** + * Distinguished name of subject of the x.509 certificate presented by the client. + * + * @example CN=myclient, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_SUBJECT: "tls.client.subject"; +/** + * Array of ciphers offered by the client during the client hello. + * + * @example ["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CLIENT_SUPPORTED_CIPHERS: "tls.client.supported_ciphers"; +/** + * String indicating the curve used for the given cipher, when applicable + * + * @example secp256r1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_CURVE: "tls.curve"; +/** + * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_ESTABLISHED: "tls.established"; +/** + * String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. + * + * @example http/1.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_NEXT_PROTOCOL: "tls.next_protocol"; +/** + * Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_PROTOCOL_NAME: "tls.protocol.name"; +/** + * Enum value "ssl" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TLS_PROTOCOL_NAME_VALUE_SSL: "ssl"; +/** + * Enum value "tls" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const TLS_PROTOCOL_NAME_VALUE_TLS: "tls"; +/** + * Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @example 1.2 + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_PROTOCOL_VERSION: "tls.protocol.version"; +/** + * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_RESUMED: "tls.resumed"; +/** + * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_CERTIFICATE: "tls.server.certificate"; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_CERTIFICATE_CHAIN: "tls.server.certificate_chain"; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_HASH_MD5: "tls.server.hash.md5"; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_HASH_SHA1: "tls.server.hash.sha1"; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_HASH_SHA256: "tls.server.hash.sha256"; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_ISSUER: "tls.server.issuer"; +/** + * A hash that identifies servers based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_JA3S: "tls.server.ja3s"; +/** + * Date/Time indicating when server certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_NOT_AFTER: "tls.server.not_after"; +/** + * Date/Time indicating when server certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_NOT_BEFORE: "tls.server.not_before"; +/** + * Distinguished name of subject of the x.509 certificate presented by the server. + * + * @example CN=myserver, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_TLS_SERVER_SUBJECT: "tls.server.subject"; +/** + * Domain extracted from the `url.full`, such as "opentelemetry.io". + * + * @example www.foo.bar + * @example opentelemetry.io + * @example 3.12.167.2 + * @example [1080:0:0:0:8:800:200C:417A] + * + * @note In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the domain field. If the URL contains a [literal IPv6 address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by `[` and `]`, the `[` and `]` characters should also be captured in the domain field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_DOMAIN: "url.domain"; +/** + * The file extension extracted from the `url.full`, excluding the leading dot. + * + * @example png + * @example gz + * + * @note The file extension is only set if it exists, as not every url has a file extension. When the file name has multiple extensions `example.tar.gz`, only the last one should be captured `gz`, not `tar.gz`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_EXTENSION: "url.extension"; +/** + * Unmodified original URL as seen in the event source. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example search?q=OpenTelemetry + * + * @note In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not. + * `url.original` might contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case password and username **SHOULD NOT** be redacted and attribute's value **SHOULD** remain the same. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_ORIGINAL: "url.original"; +/** + * Port extracted from the `url.full` + * + * @example 443 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_PORT: "url.port"; +/** + * The highest registered url domain, stripped of the subdomain. + * + * @example example.com + * @example foo.co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). For example, the registered domain for `foo.example.com` is `example.com`. Trying to approximate this by simply taking the last two labels will not work well for TLDs such as `co.uk`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_REGISTERED_DOMAIN: "url.registered_domain"; +/** + * The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + * + * @example east + * @example sub2.sub1 + * + * @note The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, with no trailing period. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_SUBDOMAIN: "url.subdomain"; +/** + * The low-cardinality template of an [absolute path reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2). + * + * @example /users/{id} + * @example /users/:id + * @example /users?id={id} + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_TEMPLATE: "url.template"; +/** + * The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is `com`. + * + * @example com + * @example co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_URL_TOP_LEVEL_DOMAIN: "url.top_level_domain"; +/** + * User email address. + * + * @example a.einstein@example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_EMAIL: "user.email"; +/** + * User's full name + * + * @example Albert Einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_FULL_NAME: "user.full_name"; +/** + * Unique user hash to correlate information for a user in anonymized form. + * + * @example 364fc68eaf4c8acec74a4e52d7d1feaa + * + * @note Useful if `user.id` or `user.name` contain confidential information and cannot be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_HASH: "user.hash"; +/** + * Unique identifier of the user. + * + * @example S-1-5-21-202424912787-2692429404-2351956786-1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_ID: "user.id"; +/** + * Short name or login/username of the user. + * + * @example a.einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_NAME: "user.name"; +/** + * Array of user roles at the time of the event. + * + * @example ["admin", "reporting_user"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_ROLES: "user.roles"; +/** + * Name of the user-agent extracted from original. Usually refers to the browser's name. + * + * @example Safari + * @example YourApp + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name **SHOULD** be selected. In such a scenario it should align with `user_agent.version` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_NAME: "user_agent.name"; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @note For mapping user agent strings to OS names, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_OS_NAME: "user_agent.os.name"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @note For mapping user agent strings to OS versions, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_OS_VERSION: "user_agent.os.version"; +/** + * Specifies the category of synthetic traffic, such as tests or bots. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_SYNTHETIC_TYPE: "user_agent.synthetic.type"; +/** + * Enum value "bot" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Bot source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT: "bot"; +/** + * Enum value "test" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Synthetic test source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST: "test"; +/** + * Version of the user-agent extracted from original. Usually refers to the browser's version + * + * @example 14.1.2 + * @example 1.0.0 + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version **SHOULD** be selected. In such a scenario it should align with `user_agent.name` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_USER_AGENT_VERSION: "user_agent.version"; +/** + * The type of garbage collection. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_V8JS_GC_TYPE: "v8js.gc.type"; +/** + * Enum value "incremental" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Incremental (Incremental Marking). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_INCREMENTAL: "incremental"; +/** + * Enum value "major" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Major (Mark Sweep Compact). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_MAJOR: "major"; +/** + * Enum value "minor" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Minor (Scavenge). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_MINOR: "minor"; +/** + * Enum value "weakcb" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Weak Callbacks (Process Weak Callbacks). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_GC_TYPE_VALUE_WEAKCB: "weakcb"; +/** + * The name of the space type of heap memory. + * + * @note Value can be retrieved from value `space_name` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_V8JS_HEAP_SPACE_NAME: "v8js.heap.space.name"; +/** + * Enum value "code_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Code memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE: "code_space"; +/** + * Enum value "large_object_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Large object memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE: "large_object_space"; +/** + * Enum value "map_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Map memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE: "map_space"; +/** + * Enum value "new_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * New memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE: "new_space"; +/** + * Enum value "old_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Old memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE: "old_space"; +/** + * The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_CHANGE_ID: "vcs.change.id"; +/** + * The state of the change (pull request/merge request/changelist). + * + * @example open + * @example closed + * @example merged + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_CHANGE_STATE: "vcs.change.state"; +/** + * Enum value "closed" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Closed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_CLOSED: "closed"; +/** + * Enum value "merged" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Merged indicates that the change has been successfully integrated into the target codebase. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_MERGED: "merged"; +/** + * Enum value "open" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Open means the change is currently active and under review. It hasn't been merged into the target branch yet, and it's still possible to make changes or add comments. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_OPEN: "open"; +/** + * Enum value "wip" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * WIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_CHANGE_STATE_VALUE_WIP: "wip"; +/** + * The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_CHANGE_TITLE: "vcs.change.title"; +/** + * The type of line change being measured on a branch or change. + * + * @example added + * @example removed + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_LINE_CHANGE_TYPE: "vcs.line_change.type"; +/** + * Enum value "added" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_LINE_CHANGE_TYPE_VALUE_ADDED: "added"; +/** + * Enum value "removed" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_LINE_CHANGE_TYPE_VALUE_REMOVED: "removed"; +/** + * The group owner within the version control system. + * + * @example my-org + * @example myteam + * @example business-unit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_OWNER_NAME: "vcs.owner.name"; +/** + * The name of the version control system provider. + * + * @example github + * @example gitlab + * @example gitea + * @example bitbucket + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_PROVIDER_NAME: "vcs.provider.name"; +/** + * Enum value "bitbucket" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Bitbucket](https://bitbucket.org) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_BITBUCKET: "bitbucket"; +/** + * Enum value "gitea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Gitea](https://gitea.io) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITEA: "gitea"; +/** + * Enum value "github" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitHub](https://github.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITHUB: "github"; +/** + * Enum value "gitlab" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitLab](https://gitlab.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITLAB: "gitlab"; +/** + * Enum value "gittea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * Deprecated, use `gitea` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gitea`. + */ +export declare const VCS_PROVIDER_NAME_VALUE_GITTEA: "gittea"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_BASE_NAME: "vcs.ref.base.name"; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. The + * revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.base.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_BASE_REVISION: "vcs.ref.base.revision"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_BASE_TYPE: "vcs.ref.base.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_BASE_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_BASE_TYPE_VALUE_TAG: "tag"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_HEAD_NAME: "vcs.ref.head.name"; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `head` refers to where you are right now; the current reference at a + * given time.The revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.head.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_HEAD_REVISION: "vcs.ref.head.revision"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_HEAD_TYPE: "vcs.ref.head.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_HEAD_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_HEAD_TYPE_VALUE_TAG: "tag"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REF_TYPE: "vcs.ref.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REF_TYPE_VALUE_TAG: "tag"; +/** + * Deprecated, use `vcs.change.id` instead. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.id`. + */ +export declare const ATTR_VCS_REPOSITORY_CHANGE_ID: "vcs.repository.change.id"; +/** + * Deprecated, use `vcs.change.title` instead. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.title`. + */ +export declare const ATTR_VCS_REPOSITORY_CHANGE_TITLE: "vcs.repository.change.title"; +/** + * The human readable name of the repository. It **SHOULD NOT** include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. + * + * @example semantic-conventions + * @example my-cool-repo + * + * @note Due to it only being the name, it can clash with forks of the same + * repository if collecting telemetry across multiple orgs or groups in + * the same backends. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REPOSITORY_NAME: "vcs.repository.name"; +/** + * Deprecated, use `vcs.ref.head.name` instead. + * + * @example my-feature-branch + * @example tag-1-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.name`. + */ +export declare const ATTR_VCS_REPOSITORY_REF_NAME: "vcs.repository.ref.name"; +/** + * Deprecated, use `vcs.ref.head.revision` instead. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.revision`. + */ +export declare const ATTR_VCS_REPOSITORY_REF_REVISION: "vcs.repository.ref.revision"; +/** + * Deprecated, use `vcs.ref.head.type` instead. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.type`. + */ +export declare const ATTR_VCS_REPOSITORY_REF_TYPE: "vcs.repository.ref.type"; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH: "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REPOSITORY_REF_TYPE_VALUE_TAG: "tag"; +/** + * The [canonical URL](https://support.google.com/webmasters/answer/10347851) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. + * + * @example https://github.com/opentelemetry/open-telemetry-collector-contrib + * @example https://gitlab.com/my-org/my-project/my-projects-project/repo + * + * @note In Git Version Control Systems, the canonical URL **SHOULD NOT** include + * the `.git` extension. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REPOSITORY_URL_FULL: "vcs.repository.url.full"; +/** + * The type of revision comparison. + * + * @example ahead + * @example behind + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_VCS_REVISION_DELTA_DIRECTION: "vcs.revision_delta.direction"; +/** + * Enum value "ahead" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is ahead of the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD: "ahead"; +/** + * Enum value "behind" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is behind the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND: "behind"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_DESCRIPTION: "webengine.description"; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_NAME: "webengine.name"; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_WEBENGINE_VERSION: "webengine.version"; +/** + * The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis. + * + * @example SYS1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ZOS_SMF_ID: "zos.smf.id"; +/** + * The name of the SYSPLEX to which the z/OS system belongs too. + * + * @example SYSPLEX1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const ATTR_ZOS_SYSPLEX_NAME: "zos.sysplex.name"; +//# sourceMappingURL=experimental_attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js new file mode 100644 index 0000000..72d7956 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js @@ -0,0 +1,14527 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_NOT_ALLOWED = exports.ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_LOCKED_OUT = exports.ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_FAILURE = exports.ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT = exports.ASPNETCORE_IDENTITY_RESULT_VALUE_SUCCESS = exports.ASPNETCORE_IDENTITY_RESULT_VALUE_FAILURE = exports.ATTR_ASPNETCORE_IDENTITY_RESULT = exports.ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_USER_MISSING = exports.ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS_REHASH_NEEDED = exports.ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS = exports.ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_PASSWORD_MISSING = exports.ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_FAILURE = exports.ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT = exports.ATTR_ASPNETCORE_IDENTITY_ERROR_CODE = exports.ASPNETCORE_AUTHORIZATION_RESULT_VALUE_SUCCESS = exports.ASPNETCORE_AUTHORIZATION_RESULT_VALUE_FAILURE = exports.ATTR_ASPNETCORE_AUTHORIZATION_RESULT = exports.ATTR_ASPNETCORE_AUTHORIZATION_POLICY = exports.ATTR_ASPNETCORE_AUTHENTICATION_SCHEME = exports.ASPNETCORE_AUTHENTICATION_RESULT_VALUE_SUCCESS = exports.ASPNETCORE_AUTHENTICATION_RESULT_VALUE_NONE = exports.ASPNETCORE_AUTHENTICATION_RESULT_VALUE_FAILURE = exports.ATTR_ASPNETCORE_AUTHENTICATION_RESULT = exports.ATTR_ARTIFACT_VERSION = exports.ATTR_ARTIFACT_PURL = exports.ATTR_ARTIFACT_HASH = exports.ATTR_ARTIFACT_FILENAME = exports.ATTR_ARTIFACT_ATTESTATION_ID = exports.ATTR_ARTIFACT_ATTESTATION_HASH = exports.ATTR_ARTIFACT_ATTESTATION_FILENAME = exports.ATTR_APP_WIDGET_NAME = exports.ATTR_APP_WIDGET_ID = exports.ATTR_APP_SCREEN_NAME = exports.ATTR_APP_SCREEN_ID = exports.ATTR_APP_SCREEN_COORDINATE_Y = exports.ATTR_APP_SCREEN_COORDINATE_X = exports.ATTR_APP_JANK_THRESHOLD = exports.ATTR_APP_JANK_PERIOD = exports.ATTR_APP_JANK_FRAME_COUNT = exports.ATTR_APP_INSTALLATION_ID = exports.ATTR_APP_BUILD_ID = exports.ANDROID_STATE_VALUE_FOREGROUND = exports.ANDROID_STATE_VALUE_CREATED = exports.ANDROID_STATE_VALUE_BACKGROUND = exports.ATTR_ANDROID_STATE = exports.ATTR_ANDROID_OS_API_LEVEL = exports.ANDROID_APP_STATE_VALUE_FOREGROUND = exports.ANDROID_APP_STATE_VALUE_CREATED = exports.ANDROID_APP_STATE_VALUE_BACKGROUND = exports.ATTR_ANDROID_APP_STATE = void 0; +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PHONE_NUMBER = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PASSKEY = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_END_DATE = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_ENABLED = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_EMAIL = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_AUTHENTICATION_TOKEN = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SECURITY_STAMP = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_PASSWORD = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_AUTHENTICATOR_KEY = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_ACCESS_FAILED_COUNT = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REPLACE_CLAIM = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSWORD = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSKEY = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_LOGIN = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_FROM_ROLES = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_CLAIMS = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_AUTHENTICATION_TOKEN = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REDEEM_TWO_FACTOR_RECOVERY_CODE = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_PASSWORD_REHASH = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_GENERATE_NEW_TWO_FACTOR_RECOVERY_CODES = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CONFIRM_EMAIL = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PHONE_NUMBER = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PASSWORD = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_EMAIL = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_TO_ROLES = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_PASSWORD = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_LOGIN = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_CLAIMS = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ACCESS_FAILED = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_OTHER = exports.ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE = exports.ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_SUCCESS = exports.ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_FAILURE = exports.ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED = exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_TWO_FACTOR = exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_RESET_PASSWORD = exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_EMAIL_CONFIRMATION = exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_PHONE_NUMBER = exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_EMAIL = exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_OTHER = exports.ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE = exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_RECOVERY_CODE = exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_AUTHENTICATOR = exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR = exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSWORD = exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSKEY = exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_EXTERNAL = exports.ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE = exports.ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_SUCCESS = exports.ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_REQUIRES_TWO_FACTOR = void 0; +exports.ATTR_AWS_S3_BUCKET = exports.ATTR_AWS_REQUEST_ID = exports.ATTR_AWS_LOG_STREAM_NAMES = exports.ATTR_AWS_LOG_STREAM_ARNS = exports.ATTR_AWS_LOG_GROUP_NAMES = exports.ATTR_AWS_LOG_GROUP_ARNS = exports.ATTR_AWS_LAMBDA_RESOURCE_MAPPING_ID = exports.ATTR_AWS_LAMBDA_INVOKED_ARN = exports.ATTR_AWS_KINESIS_STREAM_NAME = exports.ATTR_AWS_EXTENDED_REQUEST_ID = exports.ATTR_AWS_EKS_CLUSTER_ARN = exports.ATTR_AWS_ECS_TASK_REVISION = exports.ATTR_AWS_ECS_TASK_ID = exports.ATTR_AWS_ECS_TASK_FAMILY = exports.ATTR_AWS_ECS_TASK_ARN = exports.AWS_ECS_LAUNCHTYPE_VALUE_FARGATE = exports.AWS_ECS_LAUNCHTYPE_VALUE_EC2 = exports.ATTR_AWS_ECS_LAUNCHTYPE = exports.ATTR_AWS_ECS_CONTAINER_ARN = exports.ATTR_AWS_ECS_CLUSTER_ARN = exports.ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS = exports.ATTR_AWS_DYNAMODB_TABLE_NAMES = exports.ATTR_AWS_DYNAMODB_TABLE_COUNT = exports.ATTR_AWS_DYNAMODB_SELECT = exports.ATTR_AWS_DYNAMODB_SEGMENT = exports.ATTR_AWS_DYNAMODB_SCANNED_COUNT = exports.ATTR_AWS_DYNAMODB_SCAN_FORWARD = exports.ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = exports.ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = exports.ATTR_AWS_DYNAMODB_PROJECTION = exports.ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = exports.ATTR_AWS_DYNAMODB_LIMIT = exports.ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = exports.ATTR_AWS_DYNAMODB_INDEX_NAME = exports.ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = exports.ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = exports.ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = exports.ATTR_AWS_DYNAMODB_COUNT = exports.ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY = exports.ATTR_AWS_DYNAMODB_CONSISTENT_READ = exports.ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET = exports.ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = exports.ATTR_AWS_BEDROCK_KNOWLEDGE_BASE_ID = exports.ATTR_AWS_BEDROCK_GUARDRAIL_ID = exports.ATTR_ASPNETCORE_SIGN_IN_IS_PERSISTENT = exports.ATTR_ASPNETCORE_MEMORY_POOL_OWNER = exports.ATTR_ASPNETCORE_IDENTITY_USER_TYPE = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_USER_NAME = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_UPDATE = exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_TWO_FACTOR_ENABLED = void 0; +exports.ATTR_CICD_PIPELINE_ACTION_NAME = exports.ATTR_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = exports.ATTR_CASSANDRA_QUERY_IDEMPOTENT = exports.ATTR_CASSANDRA_PAGE_SIZE = exports.ATTR_CASSANDRA_COORDINATOR_ID = exports.ATTR_CASSANDRA_COORDINATOR_DC = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = exports.ATTR_CASSANDRA_CONSISTENCY_LEVEL = exports.ATTR_BROWSER_PLATFORM = exports.ATTR_BROWSER_MOBILE = exports.ATTR_BROWSER_LANGUAGE = exports.ATTR_BROWSER_BRANDS = exports.ATTR_AZURE_SERVICE_REQUEST_ID = exports.ATTR_AZURE_RESOURCE_PROVIDER_NAMESPACE = exports.ATTR_AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE = exports.ATTR_AZURE_COSMOSDB_REQUEST_BODY_SIZE = exports.ATTR_AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE = exports.ATTR_AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS = exports.AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = exports.AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = exports.AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = exports.AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = exports.AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = exports.ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL = exports.AZURE_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = exports.AZURE_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = exports.ATTR_AZURE_COSMOSDB_CONNECTION_MODE = exports.ATTR_AZURE_CLIENT_ID = exports.ATTR_AZ_SERVICE_REQUEST_ID = exports.ATTR_AZ_NAMESPACE = exports.ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN = exports.ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN = exports.ATTR_AWS_SQS_QUEUE_URL = exports.ATTR_AWS_SNS_TOPIC_ARN = exports.ATTR_AWS_SECRETSMANAGER_SECRET_ARN = exports.ATTR_AWS_S3_UPLOAD_ID = exports.ATTR_AWS_S3_PART_NUMBER = exports.ATTR_AWS_S3_KEY = exports.ATTR_AWS_S3_DELETE = exports.ATTR_AWS_S3_COPY_SOURCE = void 0; +exports.CLOUD_PLATFORM_VALUE_AWS_EKS = exports.CLOUD_PLATFORM_VALUE_AWS_ECS = exports.CLOUD_PLATFORM_VALUE_AWS_EC2 = exports.CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER = exports.CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT = exports.CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC = exports.CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS = exports.CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE = exports.ATTR_CLOUD_PLATFORM = exports.ATTR_CLOUD_AVAILABILITY_ZONE = exports.ATTR_CLOUD_ACCOUNT_ID = exports.ATTR_CICD_WORKER_URL_FULL = exports.CICD_WORKER_STATE_VALUE_OFFLINE = exports.CICD_WORKER_STATE_VALUE_BUSY = exports.CICD_WORKER_STATE_VALUE_AVAILABLE = exports.ATTR_CICD_WORKER_STATE = exports.ATTR_CICD_WORKER_NAME = exports.ATTR_CICD_WORKER_ID = exports.ATTR_CICD_SYSTEM_COMPONENT = exports.CICD_PIPELINE_TASK_TYPE_VALUE_TEST = exports.CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY = exports.CICD_PIPELINE_TASK_TYPE_VALUE_BUILD = exports.ATTR_CICD_PIPELINE_TASK_TYPE = exports.ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL = exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_TIMEOUT = exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SUCCESS = exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SKIP = exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_FAILURE = exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_ERROR = exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_CANCELLATION = exports.ATTR_CICD_PIPELINE_TASK_RUN_RESULT = exports.ATTR_CICD_PIPELINE_TASK_RUN_ID = exports.ATTR_CICD_PIPELINE_TASK_NAME = exports.ATTR_CICD_PIPELINE_RUN_URL_FULL = exports.CICD_PIPELINE_RUN_STATE_VALUE_PENDING = exports.CICD_PIPELINE_RUN_STATE_VALUE_FINALIZING = exports.CICD_PIPELINE_RUN_STATE_VALUE_EXECUTING = exports.ATTR_CICD_PIPELINE_RUN_STATE = exports.ATTR_CICD_PIPELINE_RUN_ID = exports.CICD_PIPELINE_RESULT_VALUE_TIMEOUT = exports.CICD_PIPELINE_RESULT_VALUE_SUCCESS = exports.CICD_PIPELINE_RESULT_VALUE_SKIP = exports.CICD_PIPELINE_RESULT_VALUE_FAILURE = exports.CICD_PIPELINE_RESULT_VALUE_ERROR = exports.CICD_PIPELINE_RESULT_VALUE_CANCELLATION = exports.ATTR_CICD_PIPELINE_RESULT = exports.ATTR_CICD_PIPELINE_NAME = exports.CICD_PIPELINE_ACTION_NAME_VALUE_SYNC = exports.CICD_PIPELINE_ACTION_NAME_VALUE_RUN = exports.CICD_PIPELINE_ACTION_NAME_VALUE_BUILD = void 0; +exports.ATTR_CLOUDFOUNDRY_ORG_NAME = exports.ATTR_CLOUDFOUNDRY_ORG_ID = exports.ATTR_CLOUDFOUNDRY_APP_NAME = exports.ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID = exports.ATTR_CLOUDFOUNDRY_APP_ID = exports.ATTR_CLOUDEVENTS_EVENT_TYPE = exports.ATTR_CLOUDEVENTS_EVENT_SUBJECT = exports.ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION = exports.ATTR_CLOUDEVENTS_EVENT_SOURCE = exports.ATTR_CLOUDEVENTS_EVENT_ID = exports.ATTR_CLOUD_RESOURCE_ID = exports.ATTR_CLOUD_REGION = exports.CLOUD_PROVIDER_VALUE_VULTR = exports.CLOUD_PROVIDER_VALUE_TENCENT_CLOUD = exports.CLOUD_PROVIDER_VALUE_ORACLE_CLOUD = exports.CLOUD_PROVIDER_VALUE_IBM_CLOUD = exports.CLOUD_PROVIDER_VALUE_HETZNER = exports.CLOUD_PROVIDER_VALUE_HEROKU = exports.CLOUD_PROVIDER_VALUE_GCP = exports.CLOUD_PROVIDER_VALUE_AZURE = exports.CLOUD_PROVIDER_VALUE_AWS = exports.CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD = exports.CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD = exports.ATTR_CLOUD_PROVIDER = exports.CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE = exports.CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF = exports.CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS = exports.CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM = exports.CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_OKE = exports.CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_COMPUTE = exports.CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT = exports.CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER = exports.CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT = exports.CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE = exports.CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE = exports.CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN = exports.CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS = exports.CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION = exports.CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE = exports.CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE = exports.CLOUD_PLATFORM_VALUE_AZURE_VM = exports.CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT = exports.CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS = exports.CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES = exports.CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS = exports.CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE = exports.CLOUD_PLATFORM_VALUE_AZURE_AKS = exports.CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT = exports.CLOUD_PLATFORM_VALUE_AWS_LAMBDA = exports.CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK = void 0; +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = exports.ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL = exports.CPYTHON_GC_GENERATION_VALUE_GENERATION_2 = exports.CPYTHON_GC_GENERATION_VALUE_GENERATION_1 = exports.CPYTHON_GC_GENERATION_VALUE_GENERATION_0 = exports.ATTR_CPYTHON_GC_GENERATION = exports.CPU_MODE_VALUE_USER = exports.CPU_MODE_VALUE_SYSTEM = exports.CPU_MODE_VALUE_STEAL = exports.CPU_MODE_VALUE_NICE = exports.CPU_MODE_VALUE_KERNEL = exports.CPU_MODE_VALUE_IOWAIT = exports.CPU_MODE_VALUE_INTERRUPT = exports.CPU_MODE_VALUE_IDLE = exports.ATTR_CPU_MODE = exports.ATTR_CPU_LOGICAL_NUMBER = exports.ATTR_CONTAINER_RUNTIME_VERSION = exports.ATTR_CONTAINER_RUNTIME_NAME = exports.ATTR_CONTAINER_RUNTIME_DESCRIPTION = exports.ATTR_CONTAINER_RUNTIME = exports.ATTR_CONTAINER_NAME = exports.ATTR_CONTAINER_LABELS = exports.ATTR_CONTAINER_LABEL = exports.ATTR_CONTAINER_IMAGE_TAGS = exports.ATTR_CONTAINER_IMAGE_REPO_DIGESTS = exports.ATTR_CONTAINER_IMAGE_NAME = exports.ATTR_CONTAINER_IMAGE_ID = exports.ATTR_CONTAINER_ID = exports.ATTR_CONTAINER_CSI_VOLUME_ID = exports.ATTR_CONTAINER_CSI_PLUGIN_NAME = exports.CONTAINER_CPU_STATE_VALUE_USER = exports.CONTAINER_CPU_STATE_VALUE_SYSTEM = exports.CONTAINER_CPU_STATE_VALUE_KERNEL = exports.ATTR_CONTAINER_CPU_STATE = exports.ATTR_CONTAINER_COMMAND_LINE = exports.ATTR_CONTAINER_COMMAND_ARGS = exports.ATTR_CONTAINER_COMMAND = exports.ATTR_CODE_NAMESPACE = exports.ATTR_CODE_LINENO = exports.ATTR_CODE_FUNCTION = exports.ATTR_CODE_FILEPATH = exports.ATTR_CODE_COLUMN = exports.ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID = exports.ATTR_CLOUDFOUNDRY_SYSTEM_ID = exports.ATTR_CLOUDFOUNDRY_SPACE_NAME = exports.ATTR_CLOUDFOUNDRY_SPACE_ID = exports.ATTR_CLOUDFOUNDRY_PROCESS_TYPE = exports.ATTR_CLOUDFOUNDRY_PROCESS_ID = void 0; +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_READ = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE = exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH = exports.ATTR_DB_COSMOSDB_OPERATION_TYPE = exports.ATTR_DB_COSMOSDB_CONTAINER = exports.DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = exports.DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = exports.DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = exports.DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = exports.DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = exports.ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL = exports.DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = exports.DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = exports.ATTR_DB_COSMOSDB_CONNECTION_MODE = exports.ATTR_DB_COSMOSDB_CLIENT_ID = exports.ATTR_DB_CONNECTION_STRING = exports.DB_CLIENT_CONNECTIONS_STATE_VALUE_USED = exports.DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE = exports.ATTR_DB_CLIENT_CONNECTIONS_STATE = exports.ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME = exports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = exports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = exports.ATTR_DB_CLIENT_CONNECTION_STATE = exports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = exports.ATTR_DB_CASSANDRA_TABLE = exports.ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = exports.ATTR_DB_CASSANDRA_PAGE_SIZE = exports.ATTR_DB_CASSANDRA_IDEMPOTENCE = exports.ATTR_DB_CASSANDRA_COORDINATOR_ID = exports.ATTR_DB_CASSANDRA_COORDINATOR_DC = exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = void 0; +exports.DB_SYSTEM_VALUE_INTERBASE = exports.DB_SYSTEM_VALUE_INSTANTDB = exports.DB_SYSTEM_VALUE_INGRES = exports.DB_SYSTEM_VALUE_INFORMIX = exports.DB_SYSTEM_VALUE_INFLUXDB = exports.DB_SYSTEM_VALUE_HSQLDB = exports.DB_SYSTEM_VALUE_HIVE = exports.DB_SYSTEM_VALUE_HBASE = exports.DB_SYSTEM_VALUE_HANADB = exports.DB_SYSTEM_VALUE_H2 = exports.DB_SYSTEM_VALUE_GEODE = exports.DB_SYSTEM_VALUE_FIRSTSQL = exports.DB_SYSTEM_VALUE_FIREBIRD = exports.DB_SYSTEM_VALUE_FILEMAKER = exports.DB_SYSTEM_VALUE_ELASTICSEARCH = exports.DB_SYSTEM_VALUE_EDB = exports.DB_SYSTEM_VALUE_DYNAMODB = exports.DB_SYSTEM_VALUE_DERBY = exports.DB_SYSTEM_VALUE_DB2 = exports.DB_SYSTEM_VALUE_COUCHDB = exports.DB_SYSTEM_VALUE_COUCHBASE = exports.DB_SYSTEM_VALUE_COSMOSDB = exports.DB_SYSTEM_VALUE_COLDFUSION = exports.DB_SYSTEM_VALUE_COCKROACHDB = exports.DB_SYSTEM_VALUE_CLOUDSCAPE = exports.DB_SYSTEM_VALUE_CLICKHOUSE = exports.DB_SYSTEM_VALUE_CASSANDRA = exports.DB_SYSTEM_VALUE_CACHE = exports.DB_SYSTEM_VALUE_ADABAS = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_SQL_TABLE = exports.ATTR_DB_RESPONSE_RETURNED_ROWS = exports.ATTR_DB_REDIS_DATABASE_INDEX = exports.ATTR_DB_QUERY_PARAMETER = exports.ATTR_DB_OPERATION_PARAMETER = exports.ATTR_DB_OPERATION = exports.ATTR_DB_NAME = exports.ATTR_DB_MSSQL_INSTANCE_NAME = exports.ATTR_DB_MONGODB_COLLECTION = exports.ATTR_DB_JDBC_DRIVER_CLASSNAME = exports.ATTR_DB_INSTANCE_ID = exports.ATTR_DB_ELASTICSEARCH_PATH_PARTS = exports.ATTR_DB_ELASTICSEARCH_NODE_NAME = exports.ATTR_DB_ELASTICSEARCH_CLUSTER_NAME = exports.ATTR_DB_COSMOSDB_SUB_STATUS_CODE = exports.ATTR_DB_COSMOSDB_STATUS_CODE = exports.ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH = exports.ATTR_DB_COSMOSDB_REQUEST_CHARGE = exports.ATTR_DB_COSMOSDB_REGIONS_CONTACTED = void 0; +exports.DB_SYSTEM_NAME_VALUE_MEMCACHED = exports.DB_SYSTEM_NAME_VALUE_INTERSYSTEMS_CACHE = exports.DB_SYSTEM_NAME_VALUE_INSTANTDB = exports.DB_SYSTEM_NAME_VALUE_INFLUXDB = exports.DB_SYSTEM_NAME_VALUE_IBM_NETEZZA = exports.DB_SYSTEM_NAME_VALUE_IBM_INFORMIX = exports.DB_SYSTEM_NAME_VALUE_IBM_DB2 = exports.DB_SYSTEM_NAME_VALUE_HSQLDB = exports.DB_SYSTEM_NAME_VALUE_HIVE = exports.DB_SYSTEM_NAME_VALUE_HBASE = exports.DB_SYSTEM_NAME_VALUE_H2DATABASE = exports.DB_SYSTEM_NAME_VALUE_GEODE = exports.DB_SYSTEM_NAME_VALUE_GCP_SPANNER = exports.DB_SYSTEM_NAME_VALUE_FIREBIRDSQL = exports.DB_SYSTEM_NAME_VALUE_ELASTICSEARCH = exports.DB_SYSTEM_NAME_VALUE_DERBY = exports.DB_SYSTEM_NAME_VALUE_COUCHDB = exports.DB_SYSTEM_NAME_VALUE_COUCHBASE = exports.DB_SYSTEM_NAME_VALUE_COCKROACHDB = exports.DB_SYSTEM_NAME_VALUE_CLICKHOUSE = exports.DB_SYSTEM_NAME_VALUE_CASSANDRA = exports.DB_SYSTEM_NAME_VALUE_AZURE_COSMOSDB = exports.DB_SYSTEM_NAME_VALUE_AWS_REDSHIFT = exports.DB_SYSTEM_NAME_VALUE_AWS_DYNAMODB = exports.DB_SYSTEM_NAME_VALUE_ACTIAN_INGRES = exports.DB_SYSTEM_VALUE_VERTICA = exports.DB_SYSTEM_VALUE_TRINO = exports.DB_SYSTEM_VALUE_TERADATA = exports.DB_SYSTEM_VALUE_SYBASE = exports.DB_SYSTEM_VALUE_SQLITE = exports.DB_SYSTEM_VALUE_SPANNER = exports.DB_SYSTEM_VALUE_REDSHIFT = exports.DB_SYSTEM_VALUE_REDIS = exports.DB_SYSTEM_VALUE_PROGRESS = exports.DB_SYSTEM_VALUE_POSTGRESQL = exports.DB_SYSTEM_VALUE_POINTBASE = exports.DB_SYSTEM_VALUE_PERVASIVE = exports.DB_SYSTEM_VALUE_OTHER_SQL = exports.DB_SYSTEM_VALUE_ORACLE = exports.DB_SYSTEM_VALUE_OPENSEARCH = exports.DB_SYSTEM_VALUE_NETEZZA = exports.DB_SYSTEM_VALUE_NEO4J = exports.DB_SYSTEM_VALUE_MYSQL = exports.DB_SYSTEM_VALUE_MSSQLCOMPACT = exports.DB_SYSTEM_VALUE_MSSQL = exports.DB_SYSTEM_VALUE_MONGODB = exports.DB_SYSTEM_VALUE_MEMCACHED = exports.DB_SYSTEM_VALUE_MAXDB = exports.DB_SYSTEM_VALUE_MARIADB = exports.DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE = void 0; +exports.ATTR_FAAS_INVOKED_NAME = exports.ATTR_FAAS_INVOCATION_ID = exports.ATTR_FAAS_INSTANCE = exports.ATTR_FAAS_DOCUMENT_TIME = exports.FAAS_DOCUMENT_OPERATION_VALUE_INSERT = exports.FAAS_DOCUMENT_OPERATION_VALUE_EDIT = exports.FAAS_DOCUMENT_OPERATION_VALUE_DELETE = exports.ATTR_FAAS_DOCUMENT_OPERATION = exports.ATTR_FAAS_DOCUMENT_NAME = exports.ATTR_FAAS_DOCUMENT_COLLECTION = exports.ATTR_FAAS_CRON = exports.ATTR_FAAS_COLDSTART = exports.ATTR_EVENT_NAME = exports.ATTR_ERROR_MESSAGE = exports.ATTR_ENDUSER_SCOPE = exports.ATTR_ENDUSER_ROLE = exports.ATTR_ENDUSER_PSEUDO_ID = exports.ATTR_ENDUSER_ID = exports.ATTR_ELASTICSEARCH_NODE_NAME = exports.ATTR_DNS_QUESTION_NAME = exports.ATTR_DNS_ANSWERS = exports.DISK_IO_DIRECTION_VALUE_WRITE = exports.DISK_IO_DIRECTION_VALUE_READ = exports.ATTR_DISK_IO_DIRECTION = exports.ATTR_DEVICE_MODEL_NAME = exports.ATTR_DEVICE_MODEL_IDENTIFIER = exports.ATTR_DEVICE_MANUFACTURER = exports.ATTR_DEVICE_ID = exports.ATTR_DESTINATION_PORT = exports.ATTR_DESTINATION_ADDRESS = exports.DEPLOYMENT_STATUS_VALUE_SUCCEEDED = exports.DEPLOYMENT_STATUS_VALUE_FAILED = exports.ATTR_DEPLOYMENT_STATUS = exports.ATTR_DEPLOYMENT_NAME = exports.ATTR_DEPLOYMENT_ID = exports.ATTR_DEPLOYMENT_ENVIRONMENT_NAME = exports.ATTR_DEPLOYMENT_ENVIRONMENT = exports.ATTR_DB_USER = exports.DB_SYSTEM_NAME_VALUE_TRINO = exports.DB_SYSTEM_NAME_VALUE_TERADATA = exports.DB_SYSTEM_NAME_VALUE_SQLITE = exports.DB_SYSTEM_NAME_VALUE_SOFTWAREAG_ADABAS = exports.DB_SYSTEM_NAME_VALUE_SAP_MAXDB = exports.DB_SYSTEM_NAME_VALUE_SAP_HANA = exports.DB_SYSTEM_NAME_VALUE_REDIS = exports.DB_SYSTEM_NAME_VALUE_OTHER_SQL = exports.DB_SYSTEM_NAME_VALUE_ORACLE_DB = exports.DB_SYSTEM_NAME_VALUE_OPENSEARCH = exports.DB_SYSTEM_NAME_VALUE_NEO4J = exports.DB_SYSTEM_NAME_VALUE_MONGODB = void 0; +exports.ATTR_FILE_CREATED = exports.ATTR_FILE_CHANGED = exports.ATTR_FILE_ATTRIBUTES = exports.ATTR_FILE_ACCESSED = exports.ATTR_FEATURE_FLAG_VERSION = exports.ATTR_FEATURE_FLAG_VARIANT = exports.ATTR_FEATURE_FLAG_SET_ID = exports.ATTR_FEATURE_FLAG_RESULT_VARIANT = exports.ATTR_FEATURE_FLAG_RESULT_VALUE = exports.FEATURE_FLAG_RESULT_REASON_VALUE_UNKNOWN = exports.FEATURE_FLAG_RESULT_REASON_VALUE_TARGETING_MATCH = exports.FEATURE_FLAG_RESULT_REASON_VALUE_STATIC = exports.FEATURE_FLAG_RESULT_REASON_VALUE_STALE = exports.FEATURE_FLAG_RESULT_REASON_VALUE_SPLIT = exports.FEATURE_FLAG_RESULT_REASON_VALUE_ERROR = exports.FEATURE_FLAG_RESULT_REASON_VALUE_DISABLED = exports.FEATURE_FLAG_RESULT_REASON_VALUE_DEFAULT = exports.FEATURE_FLAG_RESULT_REASON_VALUE_CACHED = exports.ATTR_FEATURE_FLAG_RESULT_REASON = exports.ATTR_FEATURE_FLAG_PROVIDER_NAME = exports.ATTR_FEATURE_FLAG_KEY = exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN = exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH = exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC = exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE = exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT = exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR = exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED = exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT = exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED = exports.ATTR_FEATURE_FLAG_EVALUATION_REASON = exports.ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE = exports.ATTR_FEATURE_FLAG_CONTEXT_ID = exports.ATTR_FAAS_VERSION = exports.FAAS_TRIGGER_VALUE_TIMER = exports.FAAS_TRIGGER_VALUE_PUBSUB = exports.FAAS_TRIGGER_VALUE_OTHER = exports.FAAS_TRIGGER_VALUE_HTTP = exports.FAAS_TRIGGER_VALUE_DATASOURCE = exports.ATTR_FAAS_TRIGGER = exports.ATTR_FAAS_TIME = exports.ATTR_FAAS_NAME = exports.ATTR_FAAS_MAX_MEMORY = exports.ATTR_FAAS_INVOKED_REGION = exports.FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD = exports.FAAS_INVOKED_PROVIDER_VALUE_GCP = exports.FAAS_INVOKED_PROVIDER_VALUE_AZURE = exports.FAAS_INVOKED_PROVIDER_VALUE_AWS = exports.FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD = exports.ATTR_FAAS_INVOKED_PROVIDER = void 0; +exports.GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = exports.GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = exports.ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE = exports.GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = exports.GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = exports.GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_LOW = exports.GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = exports.ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE = exports.ATTR_GCP_APPHUB_DESTINATION_APPLICATION_LOCATION = exports.ATTR_GCP_APPHUB_DESTINATION_APPLICATION_ID = exports.ATTR_GCP_APPHUB_DESTINATION_APPLICATION_CONTAINER = exports.ATTR_GCP_APPHUB_WORKLOAD_ID = exports.GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = exports.GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = exports.GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = exports.GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = exports.ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE = exports.GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = exports.GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = exports.GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = exports.GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = exports.ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE = exports.ATTR_GCP_APPHUB_SERVICE_ID = exports.GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = exports.GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = exports.GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = exports.GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = exports.ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE = exports.GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = exports.GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = exports.GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_LOW = exports.GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = exports.ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE = exports.ATTR_GCP_APPHUB_APPLICATION_LOCATION = exports.ATTR_GCP_APPHUB_APPLICATION_ID = exports.ATTR_GCP_APPHUB_APPLICATION_CONTAINER = exports.ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH = exports.ATTR_FILE_SIZE = exports.ATTR_FILE_PATH = exports.ATTR_FILE_OWNER_NAME = exports.ATTR_FILE_OWNER_ID = exports.ATTR_FILE_NAME = exports.ATTR_FILE_MODIFIED = exports.ATTR_FILE_MODE = exports.ATTR_FILE_INODE = exports.ATTR_FILE_GROUP_NAME = exports.ATTR_FILE_GROUP_ID = exports.ATTR_FILE_FORK_NAME = exports.ATTR_FILE_EXTENSION = exports.ATTR_FILE_DIRECTORY = void 0; +exports.ATTR_GEN_AI_OUTPUT_MESSAGES = exports.GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION = exports.GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT = exports.GEN_AI_OPERATION_NAME_VALUE_GENERATE_CONTENT = exports.GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL = exports.GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS = exports.GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT = exports.GEN_AI_OPERATION_NAME_VALUE_CHAT = exports.ATTR_GEN_AI_OPERATION_NAME = exports.ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = exports.ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER = exports.GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = exports.GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = exports.ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER = exports.ATTR_GEN_AI_OPENAI_REQUEST_SEED = exports.GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT = exports.GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA = exports.GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT = exports.ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT = exports.ATTR_GEN_AI_INPUT_MESSAGES = exports.ATTR_GEN_AI_EVALUATION_SCORE_VALUE = exports.ATTR_GEN_AI_EVALUATION_SCORE_LABEL = exports.ATTR_GEN_AI_EVALUATION_NAME = exports.ATTR_GEN_AI_EVALUATION_EXPLANATION = exports.ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT = exports.ATTR_GEN_AI_DATA_SOURCE_ID = exports.ATTR_GEN_AI_CONVERSATION_ID = exports.ATTR_GEN_AI_COMPLETION = exports.ATTR_GEN_AI_AGENT_NAME = exports.ATTR_GEN_AI_AGENT_ID = exports.ATTR_GEN_AI_AGENT_DESCRIPTION = exports.ATTR_GCP_GCE_INSTANCE_NAME = exports.ATTR_GCP_GCE_INSTANCE_HOSTNAME = exports.ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX = exports.ATTR_GCP_CLOUD_RUN_JOB_EXECUTION = exports.ATTR_GCP_CLIENT_SERVICE = exports.ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ID = exports.GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = exports.GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = exports.GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = exports.GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = exports.ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE = exports.GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = exports.GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = exports.GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = exports.GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = exports.ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE = exports.ATTR_GCP_APPHUB_DESTINATION_SERVICE_ID = exports.GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = exports.GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = void 0; +exports.GEN_AI_SYSTEM_VALUE_GEMINI = exports.GEN_AI_SYSTEM_VALUE_GCP_VERTEX_AI = exports.GEN_AI_SYSTEM_VALUE_GCP_GEN_AI = exports.GEN_AI_SYSTEM_VALUE_GCP_GEMINI = exports.GEN_AI_SYSTEM_VALUE_DEEPSEEK = exports.GEN_AI_SYSTEM_VALUE_COHERE = exports.GEN_AI_SYSTEM_VALUE_AZURE_AI_OPENAI = exports.GEN_AI_SYSTEM_VALUE_AZURE_AI_INFERENCE = exports.GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI = exports.GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE = exports.GEN_AI_SYSTEM_VALUE_AWS_BEDROCK = exports.GEN_AI_SYSTEM_VALUE_ANTHROPIC = exports.ATTR_GEN_AI_SYSTEM = exports.ATTR_GEN_AI_RESPONSE_MODEL = exports.ATTR_GEN_AI_RESPONSE_ID = exports.ATTR_GEN_AI_RESPONSE_FINISH_REASONS = exports.ATTR_GEN_AI_REQUEST_TOP_P = exports.ATTR_GEN_AI_REQUEST_TOP_K = exports.ATTR_GEN_AI_REQUEST_TEMPERATURE = exports.ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = exports.ATTR_GEN_AI_REQUEST_SEED = exports.ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = exports.ATTR_GEN_AI_REQUEST_MODEL = exports.ATTR_GEN_AI_REQUEST_MAX_TOKENS = exports.ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = exports.ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = exports.ATTR_GEN_AI_REQUEST_CHOICE_COUNT = exports.GEN_AI_PROVIDER_NAME_VALUE_X_AI = exports.GEN_AI_PROVIDER_NAME_VALUE_PERPLEXITY = exports.GEN_AI_PROVIDER_NAME_VALUE_OPENAI = exports.GEN_AI_PROVIDER_NAME_VALUE_MISTRAL_AI = exports.GEN_AI_PROVIDER_NAME_VALUE_IBM_WATSONX_AI = exports.GEN_AI_PROVIDER_NAME_VALUE_GROQ = exports.GEN_AI_PROVIDER_NAME_VALUE_GCP_VERTEX_AI = exports.GEN_AI_PROVIDER_NAME_VALUE_GCP_GEN_AI = exports.GEN_AI_PROVIDER_NAME_VALUE_GCP_GEMINI = exports.GEN_AI_PROVIDER_NAME_VALUE_DEEPSEEK = exports.GEN_AI_PROVIDER_NAME_VALUE_COHERE = exports.GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_OPENAI = exports.GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_INFERENCE = exports.GEN_AI_PROVIDER_NAME_VALUE_AWS_BEDROCK = exports.GEN_AI_PROVIDER_NAME_VALUE_ANTHROPIC = exports.ATTR_GEN_AI_PROVIDER_NAME = exports.ATTR_GEN_AI_PROMPT_NAME = exports.ATTR_GEN_AI_PROMPT = exports.GEN_AI_OUTPUT_TYPE_VALUE_TEXT = exports.GEN_AI_OUTPUT_TYPE_VALUE_SPEECH = exports.GEN_AI_OUTPUT_TYPE_VALUE_JSON = exports.GEN_AI_OUTPUT_TYPE_VALUE_IMAGE = exports.ATTR_GEN_AI_OUTPUT_TYPE = void 0; +exports.ATTR_HOST_ARCH = exports.ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP = exports.ATTR_HEROKU_RELEASE_COMMIT = exports.ATTR_HEROKU_APP_ID = exports.GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION = exports.GRAPHQL_OPERATION_TYPE_VALUE_QUERY = exports.GRAPHQL_OPERATION_TYPE_VALUE_MUTATION = exports.ATTR_GRAPHQL_OPERATION_TYPE = exports.ATTR_GRAPHQL_OPERATION_NAME = exports.ATTR_GRAPHQL_DOCUMENT = exports.GO_MEMORY_TYPE_VALUE_STACK = exports.GO_MEMORY_TYPE_VALUE_OTHER = exports.ATTR_GO_MEMORY_TYPE = exports.ATTR_GEO_REGION_ISO_CODE = exports.ATTR_GEO_POSTAL_CODE = exports.ATTR_GEO_LOCATION_LON = exports.ATTR_GEO_LOCATION_LAT = exports.ATTR_GEO_LOCALITY_NAME = exports.ATTR_GEO_COUNTRY_ISO_CODE = exports.GEO_CONTINENT_CODE_VALUE_SA = exports.GEO_CONTINENT_CODE_VALUE_OC = exports.GEO_CONTINENT_CODE_VALUE_NA = exports.GEO_CONTINENT_CODE_VALUE_EU = exports.GEO_CONTINENT_CODE_VALUE_AS = exports.GEO_CONTINENT_CODE_VALUE_AN = exports.GEO_CONTINENT_CODE_VALUE_AF = exports.ATTR_GEO_CONTINENT_CODE = exports.ATTR_GEN_AI_USAGE_PROMPT_TOKENS = exports.ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = exports.ATTR_GEN_AI_USAGE_INPUT_TOKENS = exports.ATTR_GEN_AI_USAGE_COMPLETION_TOKENS = exports.ATTR_GEN_AI_TOOL_TYPE = exports.ATTR_GEN_AI_TOOL_NAME = exports.ATTR_GEN_AI_TOOL_DESCRIPTION = exports.ATTR_GEN_AI_TOOL_DEFINITIONS = exports.ATTR_GEN_AI_TOOL_CALL_RESULT = exports.ATTR_GEN_AI_TOOL_CALL_ID = exports.ATTR_GEN_AI_TOOL_CALL_ARGUMENTS = exports.GEN_AI_TOKEN_TYPE_VALUE_OUTPUT = exports.GEN_AI_TOKEN_TYPE_VALUE_COMPLETION = exports.GEN_AI_TOKEN_TYPE_VALUE_INPUT = exports.ATTR_GEN_AI_TOKEN_TYPE = exports.ATTR_GEN_AI_SYSTEM_INSTRUCTIONS = exports.GEN_AI_SYSTEM_VALUE_XAI = exports.GEN_AI_SYSTEM_VALUE_VERTEX_AI = exports.GEN_AI_SYSTEM_VALUE_PERPLEXITY = exports.GEN_AI_SYSTEM_VALUE_OPENAI = exports.GEN_AI_SYSTEM_VALUE_MISTRAL_AI = exports.GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI = exports.GEN_AI_SYSTEM_VALUE_GROQ = void 0; +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_RESPONSE_SIZE = exports.ATTR_HTTP_RESPONSE_BODY_SIZE = exports.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = exports.ATTR_HTTP_REQUEST_CONTENT_LENGTH = exports.ATTR_HTTP_REQUEST_SIZE = exports.HTTP_REQUEST_METHOD_VALUE_QUERY = exports.ATTR_HTTP_REQUEST_BODY_SIZE = exports.ATTR_HTTP_METHOD = exports.ATTR_HTTP_HOST = exports.HTTP_FLAVOR_VALUE_SPDY = exports.HTTP_FLAVOR_VALUE_QUIC = exports.HTTP_FLAVOR_VALUE_HTTP_3_0 = exports.HTTP_FLAVOR_VALUE_HTTP_2_0 = exports.HTTP_FLAVOR_VALUE_HTTP_1_1 = exports.HTTP_FLAVOR_VALUE_HTTP_1_0 = exports.ATTR_HTTP_FLAVOR = exports.HTTP_CONNECTION_STATE_VALUE_IDLE = exports.HTTP_CONNECTION_STATE_VALUE_ACTIVE = exports.ATTR_HTTP_CONNECTION_STATE = exports.ATTR_HTTP_CLIENT_IP = exports.ATTR_HOST_TYPE = exports.ATTR_HOST_NAME = exports.ATTR_HOST_MAC = exports.ATTR_HOST_IP = exports.ATTR_HOST_IMAGE_VERSION = exports.ATTR_HOST_IMAGE_NAME = exports.ATTR_HOST_IMAGE_ID = exports.ATTR_HOST_ID = exports.ATTR_HOST_CPU_VENDOR_ID = exports.ATTR_HOST_CPU_STEPPING = exports.ATTR_HOST_CPU_MODEL_NAME = exports.ATTR_HOST_CPU_MODEL_ID = exports.ATTR_HOST_CPU_FAMILY = exports.ATTR_HOST_CPU_CACHE_L2_SIZE = exports.HOST_ARCH_VALUE_X86 = exports.HOST_ARCH_VALUE_S390X = exports.HOST_ARCH_VALUE_PPC64 = exports.HOST_ARCH_VALUE_PPC32 = exports.HOST_ARCH_VALUE_IA64 = exports.HOST_ARCH_VALUE_ARM64 = exports.HOST_ARCH_VALUE_ARM32 = exports.HOST_ARCH_VALUE_AMD64 = void 0; +exports.HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_UNMOUNT = exports.HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_MOUNT = exports.HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_CLEAN = exports.ATTR_HW_TAPE_DRIVE_OPERATION_TYPE = exports.HW_STATE_VALUE_PREDICTED_FAILURE = exports.HW_STATE_VALUE_OK = exports.HW_STATE_VALUE_NEEDS_CLEANING = exports.HW_STATE_VALUE_FAILED = exports.HW_STATE_VALUE_DEGRADED = exports.ATTR_HW_STATE = exports.ATTR_HW_SERIAL_NUMBER = exports.ATTR_HW_SENSOR_LOCATION = exports.ATTR_HW_PHYSICAL_DISK_TYPE = exports.HW_PHYSICAL_DISK_STATE_VALUE_REMAINING = exports.ATTR_HW_PHYSICAL_DISK_STATE = exports.ATTR_HW_PHYSICAL_DISK_SMART_ATTRIBUTE = exports.ATTR_HW_PARENT = exports.ATTR_HW_NETWORK_PHYSICAL_ADDRESS = exports.ATTR_HW_NETWORK_LOGICAL_ADDRESSES = exports.ATTR_HW_NAME = exports.ATTR_HW_MODEL = exports.ATTR_HW_MEMORY_TYPE = exports.HW_LOGICAL_DISK_STATE_VALUE_USED = exports.HW_LOGICAL_DISK_STATE_VALUE_FREE = exports.ATTR_HW_LOGICAL_DISK_STATE = exports.ATTR_HW_LOGICAL_DISK_RAID_LEVEL = exports.HW_LIMIT_TYPE_VALUE_TURBO = exports.HW_LIMIT_TYPE_VALUE_THROTTLED = exports.HW_LIMIT_TYPE_VALUE_MAX = exports.HW_LIMIT_TYPE_VALUE_LOW_DEGRADED = exports.HW_LIMIT_TYPE_VALUE_LOW_CRITICAL = exports.HW_LIMIT_TYPE_VALUE_HIGH_DEGRADED = exports.HW_LIMIT_TYPE_VALUE_HIGH_CRITICAL = exports.HW_LIMIT_TYPE_VALUE_DEGRADED = exports.HW_LIMIT_TYPE_VALUE_CRITICAL = exports.ATTR_HW_LIMIT_TYPE = exports.ATTR_HW_ID = exports.HW_GPU_TASK_VALUE_GENERAL = exports.HW_GPU_TASK_VALUE_ENCODER = exports.HW_GPU_TASK_VALUE_DECODER = exports.ATTR_HW_GPU_TASK = exports.ATTR_HW_FIRMWARE_VERSION = exports.ATTR_HW_ENCLOSURE_TYPE = exports.ATTR_HW_DRIVER_VERSION = exports.ATTR_HW_BIOS_VERSION = exports.HW_BATTERY_STATE_VALUE_DISCHARGING = exports.HW_BATTERY_STATE_VALUE_CHARGING = exports.ATTR_HW_BATTERY_STATE = exports.ATTR_HW_BATTERY_CHEMISTRY = exports.ATTR_HW_BATTERY_CAPACITY = void 0; +exports.K8S_CONTAINER_STATUS_STATE_VALUE_TERMINATED = exports.K8S_CONTAINER_STATUS_STATE_VALUE_RUNNING = exports.ATTR_K8S_CONTAINER_STATUS_STATE = exports.K8S_CONTAINER_STATUS_REASON_VALUE_OOM_KILLED = exports.K8S_CONTAINER_STATUS_REASON_VALUE_IMAGE_PULL_BACK_OFF = exports.K8S_CONTAINER_STATUS_REASON_VALUE_ERROR = exports.K8S_CONTAINER_STATUS_REASON_VALUE_ERR_IMAGE_PULL = exports.K8S_CONTAINER_STATUS_REASON_VALUE_CREATE_CONTAINER_CONFIG_ERROR = exports.K8S_CONTAINER_STATUS_REASON_VALUE_CRASH_LOOP_BACK_OFF = exports.K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CREATING = exports.K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CANNOT_RUN = exports.K8S_CONTAINER_STATUS_REASON_VALUE_COMPLETED = exports.ATTR_K8S_CONTAINER_STATUS_REASON = exports.ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON = exports.ATTR_K8S_CONTAINER_RESTART_COUNT = exports.ATTR_K8S_CONTAINER_NAME = exports.ATTR_K8S_CLUSTER_UID = exports.ATTR_K8S_CLUSTER_NAME = exports.ATTR_JVM_GC_CAUSE = exports.ATTR_JVM_BUFFER_POOL_NAME = exports.ATTR_JSONRPC_REQUEST_ID = exports.ATTR_JSONRPC_PROTOCOL_VERSION = exports.IOS_STATE_VALUE_TERMINATE = exports.IOS_STATE_VALUE_INACTIVE = exports.IOS_STATE_VALUE_FOREGROUND = exports.IOS_STATE_VALUE_BACKGROUND = exports.IOS_STATE_VALUE_ACTIVE = exports.ATTR_IOS_STATE = exports.IOS_APP_STATE_VALUE_TERMINATE = exports.IOS_APP_STATE_VALUE_INACTIVE = exports.IOS_APP_STATE_VALUE_FOREGROUND = exports.IOS_APP_STATE_VALUE_BACKGROUND = exports.IOS_APP_STATE_VALUE_ACTIVE = exports.ATTR_IOS_APP_STATE = exports.ATTR_HW_VENDOR = exports.HW_TYPE_VALUE_VOLTAGE = exports.HW_TYPE_VALUE_TEMPERATURE = exports.HW_TYPE_VALUE_TAPE_DRIVE = exports.HW_TYPE_VALUE_POWER_SUPPLY = exports.HW_TYPE_VALUE_PHYSICAL_DISK = exports.HW_TYPE_VALUE_NETWORK = exports.HW_TYPE_VALUE_MEMORY = exports.HW_TYPE_VALUE_LOGICAL_DISK = exports.HW_TYPE_VALUE_GPU = exports.HW_TYPE_VALUE_FAN = exports.HW_TYPE_VALUE_ENCLOSURE = exports.HW_TYPE_VALUE_DISK_CONTROLLER = exports.HW_TYPE_VALUE_CPU = exports.HW_TYPE_VALUE_BATTERY = exports.ATTR_HW_TYPE = void 0; +exports.ATTR_K8S_POD_NAME = exports.ATTR_K8S_POD_LABELS = exports.ATTR_K8S_POD_LABEL = exports.ATTR_K8S_POD_IP = exports.ATTR_K8S_POD_HOSTNAME = exports.ATTR_K8S_POD_ANNOTATION = exports.ATTR_K8S_NODE_UID = exports.ATTR_K8S_NODE_NAME = exports.ATTR_K8S_NODE_LABEL = exports.K8S_NODE_CONDITION_TYPE_VALUE_READY = exports.K8S_NODE_CONDITION_TYPE_VALUE_PID_PRESSURE = exports.K8S_NODE_CONDITION_TYPE_VALUE_NETWORK_UNAVAILABLE = exports.K8S_NODE_CONDITION_TYPE_VALUE_MEMORY_PRESSURE = exports.K8S_NODE_CONDITION_TYPE_VALUE_DISK_PRESSURE = exports.ATTR_K8S_NODE_CONDITION_TYPE = exports.K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_UNKNOWN = exports.K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_TRUE = exports.K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_FALSE = exports.ATTR_K8S_NODE_CONDITION_STATUS = exports.ATTR_K8S_NODE_ANNOTATION = exports.K8S_NAMESPACE_PHASE_VALUE_TERMINATING = exports.K8S_NAMESPACE_PHASE_VALUE_ACTIVE = exports.ATTR_K8S_NAMESPACE_PHASE = exports.ATTR_K8S_NAMESPACE_NAME = exports.ATTR_K8S_NAMESPACE_LABEL = exports.ATTR_K8S_NAMESPACE_ANNOTATION = exports.ATTR_K8S_JOB_UID = exports.ATTR_K8S_JOB_NAME = exports.ATTR_K8S_JOB_LABEL = exports.ATTR_K8S_JOB_ANNOTATION = exports.ATTR_K8S_HUGEPAGE_SIZE = exports.ATTR_K8S_HPA_UID = exports.ATTR_K8S_HPA_SCALETARGETREF_NAME = exports.ATTR_K8S_HPA_SCALETARGETREF_KIND = exports.ATTR_K8S_HPA_SCALETARGETREF_API_VERSION = exports.ATTR_K8S_HPA_NAME = exports.ATTR_K8S_HPA_METRIC_TYPE = exports.ATTR_K8S_DEPLOYMENT_UID = exports.ATTR_K8S_DEPLOYMENT_NAME = exports.ATTR_K8S_DEPLOYMENT_LABEL = exports.ATTR_K8S_DEPLOYMENT_ANNOTATION = exports.ATTR_K8S_DAEMONSET_UID = exports.ATTR_K8S_DAEMONSET_NAME = exports.ATTR_K8S_DAEMONSET_LABEL = exports.ATTR_K8S_DAEMONSET_ANNOTATION = exports.ATTR_K8S_CRONJOB_UID = exports.ATTR_K8S_CRONJOB_NAME = exports.ATTR_K8S_CRONJOB_LABEL = exports.ATTR_K8S_CRONJOB_ANNOTATION = exports.K8S_CONTAINER_STATUS_STATE_VALUE_WAITING = void 0; +exports.ATTR_MCP_METHOD_NAME = exports.ATTR_MAINFRAME_LPAR_NAME = exports.ATTR_LOG_RECORD_UID = exports.ATTR_LOG_RECORD_ORIGINAL = exports.LOG_IOSTREAM_VALUE_STDOUT = exports.LOG_IOSTREAM_VALUE_STDERR = exports.ATTR_LOG_IOSTREAM = exports.ATTR_LOG_FILE_PATH_RESOLVED = exports.ATTR_LOG_FILE_PATH = exports.ATTR_LOG_FILE_NAME_RESOLVED = exports.ATTR_LOG_FILE_NAME = exports.LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE = exports.LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE = exports.ATTR_LINUX_MEMORY_SLAB_STATE = exports.K8S_VOLUME_TYPE_VALUE_SECRET = exports.K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM = exports.K8S_VOLUME_TYPE_VALUE_LOCAL = exports.K8S_VOLUME_TYPE_VALUE_EMPTY_DIR = exports.K8S_VOLUME_TYPE_VALUE_DOWNWARD_API = exports.K8S_VOLUME_TYPE_VALUE_CONFIG_MAP = exports.ATTR_K8S_VOLUME_TYPE = exports.ATTR_K8S_VOLUME_NAME = exports.ATTR_K8S_STORAGECLASS_NAME = exports.ATTR_K8S_STATEFULSET_UID = exports.ATTR_K8S_STATEFULSET_NAME = exports.ATTR_K8S_STATEFULSET_LABEL = exports.ATTR_K8S_STATEFULSET_ANNOTATION = exports.ATTR_K8S_RESOURCEQUOTA_UID = exports.ATTR_K8S_RESOURCEQUOTA_RESOURCE_NAME = exports.ATTR_K8S_RESOURCEQUOTA_NAME = exports.ATTR_K8S_REPLICATIONCONTROLLER_UID = exports.ATTR_K8S_REPLICATIONCONTROLLER_NAME = exports.ATTR_K8S_REPLICASET_UID = exports.ATTR_K8S_REPLICASET_NAME = exports.ATTR_K8S_REPLICASET_LABEL = exports.ATTR_K8S_REPLICASET_ANNOTATION = exports.ATTR_K8S_POD_UID = exports.K8S_POD_STATUS_REASON_VALUE_UNEXPECTED_ADMISSION_ERROR = exports.K8S_POD_STATUS_REASON_VALUE_SHUTDOWN = exports.K8S_POD_STATUS_REASON_VALUE_NODE_LOST = exports.K8S_POD_STATUS_REASON_VALUE_NODE_AFFINITY = exports.K8S_POD_STATUS_REASON_VALUE_EVICTED = exports.ATTR_K8S_POD_STATUS_REASON = exports.K8S_POD_STATUS_PHASE_VALUE_UNKNOWN = exports.K8S_POD_STATUS_PHASE_VALUE_SUCCEEDED = exports.K8S_POD_STATUS_PHASE_VALUE_RUNNING = exports.K8S_POD_STATUS_PHASE_VALUE_PENDING = exports.K8S_POD_STATUS_PHASE_VALUE_FAILED = exports.ATTR_K8S_POD_STATUS_PHASE = exports.ATTR_K8S_POD_START_TIME = void 0; +exports.ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT = exports.ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID = exports.ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE = exports.ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME = exports.ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP = exports.ATTR_MESSAGING_DESTINATION_PUBLISH_NAME = exports.ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS = exports.ATTR_MESSAGING_DESTINATION_TEMPORARY = exports.ATTR_MESSAGING_DESTINATION_TEMPLATE = exports.ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME = exports.ATTR_MESSAGING_DESTINATION_PARTITION_ID = exports.ATTR_MESSAGING_DESTINATION_NAME = exports.ATTR_MESSAGING_DESTINATION_ANONYMOUS = exports.ATTR_MESSAGING_CONSUMER_GROUP_NAME = exports.ATTR_MESSAGING_CLIENT_ID = exports.ATTR_MESSAGING_BATCH_MESSAGE_COUNT = exports.ATTR_MESSAGE_UNCOMPRESSED_SIZE = exports.MESSAGE_TYPE_VALUE_SENT = exports.MESSAGE_TYPE_VALUE_RECEIVED = exports.ATTR_MESSAGE_TYPE = exports.ATTR_MESSAGE_ID = exports.ATTR_MESSAGE_COMPRESSED_SIZE = exports.ATTR_MCP_SESSION_ID = exports.ATTR_MCP_RESOURCE_URI = exports.ATTR_MCP_PROTOCOL_VERSION = exports.MCP_METHOD_NAME_VALUE_TOOLS_LIST = exports.MCP_METHOD_NAME_VALUE_TOOLS_CALL = exports.MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE = exports.MCP_METHOD_NAME_VALUE_ROOTS_LIST = exports.MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE = exports.MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST = exports.MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE = exports.MCP_METHOD_NAME_VALUE_RESOURCES_READ = exports.MCP_METHOD_NAME_VALUE_RESOURCES_LIST = exports.MCP_METHOD_NAME_VALUE_PROMPTS_LIST = exports.MCP_METHOD_NAME_VALUE_PROMPTS_GET = exports.MCP_METHOD_NAME_VALUE_PING = exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED = exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED = exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED = exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED = exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED = exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS = exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE = exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED = exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED = exports.MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL = exports.MCP_METHOD_NAME_VALUE_INITIALIZE = exports.MCP_METHOD_NAME_VALUE_ELICITATION_CREATE = exports.MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE = void 0; +exports.MESSAGING_SYSTEM_VALUE_AWS_SQS = exports.MESSAGING_SYSTEM_VALUE_AWS_SNS = exports.MESSAGING_SYSTEM_VALUE_ACTIVEMQ = exports.ATTR_MESSAGING_SYSTEM = exports.ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME = exports.ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT = exports.MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER = exports.MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER = exports.MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE = exports.MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON = exports.ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS = exports.ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME = exports.ATTR_MESSAGING_ROCKETMQ_NAMESPACE = exports.MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION = exports.MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL = exports.MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO = exports.MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY = exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE = exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG = exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS = exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP = exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP = exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL = exports.MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING = exports.MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING = exports.ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL = exports.ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP = exports.ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG = exports.ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = exports.MESSAGING_OPERATION_TYPE_VALUE_SETTLE = exports.MESSAGING_OPERATION_TYPE_VALUE_SEND = exports.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = exports.MESSAGING_OPERATION_TYPE_VALUE_PUBLISH = exports.MESSAGING_OPERATION_TYPE_VALUE_PROCESS = exports.MESSAGING_OPERATION_TYPE_VALUE_DELIVER = exports.MESSAGING_OPERATION_TYPE_VALUE_CREATE = exports.ATTR_MESSAGING_OPERATION_TYPE = exports.ATTR_MESSAGING_OPERATION_NAME = exports.ATTR_MESSAGING_OPERATION = exports.ATTR_MESSAGING_MESSAGE_ID = exports.ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE = exports.ATTR_MESSAGING_MESSAGE_CONVERSATION_ID = exports.ATTR_MESSAGING_MESSAGE_BODY_SIZE = exports.ATTR_MESSAGING_KAFKA_OFFSET = exports.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = exports.ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET = exports.ATTR_MESSAGING_KAFKA_MESSAGE_KEY = exports.ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION = exports.ATTR_MESSAGING_KAFKA_CONSUMER_GROUP = exports.ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY = void 0; +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA = exports.ATTR_NETWORK_CONNECTION_SUBTYPE = exports.NETWORK_CONNECTION_STATE_VALUE_TIME_WAIT = exports.NETWORK_CONNECTION_STATE_VALUE_SYN_SENT = exports.NETWORK_CONNECTION_STATE_VALUE_SYN_RECEIVED = exports.NETWORK_CONNECTION_STATE_VALUE_LISTEN = exports.NETWORK_CONNECTION_STATE_VALUE_LAST_ACK = exports.NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_2 = exports.NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_1 = exports.NETWORK_CONNECTION_STATE_VALUE_ESTABLISHED = exports.NETWORK_CONNECTION_STATE_VALUE_CLOSING = exports.NETWORK_CONNECTION_STATE_VALUE_CLOSED = exports.NETWORK_CONNECTION_STATE_VALUE_CLOSE_WAIT = exports.ATTR_NETWORK_CONNECTION_STATE = exports.ATTR_NETWORK_CARRIER_NAME = exports.ATTR_NETWORK_CARRIER_MNC = exports.ATTR_NETWORK_CARRIER_MCC = exports.ATTR_NETWORK_CARRIER_ICC = exports.NET_TRANSPORT_VALUE_PIPE = exports.NET_TRANSPORT_VALUE_OTHER = exports.NET_TRANSPORT_VALUE_IP_UDP = exports.NET_TRANSPORT_VALUE_IP_TCP = exports.NET_TRANSPORT_VALUE_INPROC = exports.ATTR_NET_TRANSPORT = exports.ATTR_NET_SOCK_PEER_PORT = exports.ATTR_NET_SOCK_PEER_NAME = exports.ATTR_NET_SOCK_PEER_ADDR = exports.ATTR_NET_SOCK_HOST_PORT = exports.ATTR_NET_SOCK_HOST_ADDR = exports.NET_SOCK_FAMILY_VALUE_UNIX = exports.NET_SOCK_FAMILY_VALUE_INET6 = exports.NET_SOCK_FAMILY_VALUE_INET = exports.ATTR_NET_SOCK_FAMILY = exports.ATTR_NET_PROTOCOL_VERSION = exports.ATTR_NET_PROTOCOL_NAME = 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.MESSAGING_SYSTEM_VALUE_SERVICEBUS = exports.MESSAGING_SYSTEM_VALUE_ROCKETMQ = exports.MESSAGING_SYSTEM_VALUE_RABBITMQ = exports.MESSAGING_SYSTEM_VALUE_PULSAR = exports.MESSAGING_SYSTEM_VALUE_KAFKA = exports.MESSAGING_SYSTEM_VALUE_JMS = exports.MESSAGING_SYSTEM_VALUE_GCP_PUBSUB = exports.MESSAGING_SYSTEM_VALUE_EVENTHUBS = exports.MESSAGING_SYSTEM_VALUE_EVENTGRID = void 0; +exports.OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM = exports.OPENTRACING_REF_TYPE_VALUE_CHILD_OF = exports.ATTR_OPENTRACING_REF_TYPE = exports.ATTR_OPENSHIFT_CLUSTERQUOTA_UID = exports.ATTR_OPENSHIFT_CLUSTERQUOTA_NAME = exports.ATTR_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = exports.ATTR_OPENAI_RESPONSE_SERVICE_TIER = exports.OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = exports.OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = exports.ATTR_OPENAI_REQUEST_SERVICE_TIER = exports.ATTR_ONC_RPC_VERSION = exports.ATTR_ONC_RPC_PROGRAM_NAME = exports.ATTR_ONC_RPC_PROCEDURE_NUMBER = exports.ATTR_ONC_RPC_PROCEDURE_NAME = exports.ATTR_OCI_MANIFEST_DIGEST = exports.NODEJS_EVENTLOOP_STATE_VALUE_IDLE = exports.NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE = exports.ATTR_NODEJS_EVENTLOOP_STATE = exports.ATTR_NFS_SERVER_REPCACHE_STATUS = exports.ATTR_NFS_OPERATION_NAME = exports.NETWORK_IO_DIRECTION_VALUE_TRANSMIT = exports.NETWORK_IO_DIRECTION_VALUE_RECEIVE = exports.ATTR_NETWORK_IO_DIRECTION = exports.ATTR_NETWORK_INTERFACE_NAME = exports.NETWORK_CONNECTION_TYPE_VALUE_WIRED = exports.NETWORK_CONNECTION_TYPE_VALUE_WIFI = exports.NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN = exports.NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE = exports.NETWORK_CONNECTION_TYPE_VALUE_CELL = exports.ATTR_NETWORK_CONNECTION_TYPE = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_NR = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_LTE = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_GSM = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE = exports.NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT = void 0; +exports.ATTR_PPROF_LOCATION_IS_FOLDED = exports.ATTR_POOL_NAME = exports.ATTR_PEER_SERVICE = exports.OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY = exports.OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE = exports.OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP = exports.ATTR_OTEL_SPAN_SAMPLING_RESULT = exports.OTEL_SPAN_PARENT_ORIGIN_VALUE_REMOTE = exports.OTEL_SPAN_PARENT_ORIGIN_VALUE_NONE = exports.OTEL_SPAN_PARENT_ORIGIN_VALUE_LOCAL = exports.ATTR_OTEL_SPAN_PARENT_ORIGIN = exports.ATTR_OTEL_SCOPE_SCHEMA_URL = exports.ATTR_OTEL_LIBRARY_VERSION = exports.ATTR_OTEL_LIBRARY_NAME = exports.ATTR_OTEL_EVENT_NAME = exports.OTEL_COMPONENT_TYPE_VALUE_ZIPKIN_HTTP_SPAN_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR = exports.OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR = exports.OTEL_COMPONENT_TYPE_VALUE_PROMETHEUS_HTTP_TEXT_METRIC_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_PERIODIC_METRIC_READER = exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_METRIC_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_METRIC_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_LOG_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_METRIC_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_LOG_EXPORTER = exports.OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR = exports.OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR = exports.ATTR_OTEL_COMPONENT_TYPE = exports.ATTR_OTEL_COMPONENT_NAME = exports.ATTR_OS_VERSION = exports.OS_TYPE_VALUE_ZOS = exports.OS_TYPE_VALUE_Z_OS = exports.OS_TYPE_VALUE_WINDOWS = exports.OS_TYPE_VALUE_SOLARIS = exports.OS_TYPE_VALUE_OPENBSD = exports.OS_TYPE_VALUE_NETBSD = exports.OS_TYPE_VALUE_LINUX = exports.OS_TYPE_VALUE_HPUX = exports.OS_TYPE_VALUE_FREEBSD = exports.OS_TYPE_VALUE_DRAGONFLYBSD = exports.OS_TYPE_VALUE_DARWIN = exports.OS_TYPE_VALUE_AIX = exports.ATTR_OS_TYPE = exports.ATTR_OS_NAME = exports.ATTR_OS_DESCRIPTION = exports.ATTR_OS_BUILD_ID = void 0; +exports.PROCESS_STATE_VALUE_SLEEPING = exports.PROCESS_STATE_VALUE_RUNNING = exports.PROCESS_STATE_VALUE_DEFUNCT = exports.ATTR_PROCESS_STATE = exports.ATTR_PROCESS_SESSION_LEADER_PID = exports.ATTR_PROCESS_SAVED_USER_NAME = exports.ATTR_PROCESS_SAVED_USER_ID = exports.ATTR_PROCESS_RUNTIME_VERSION = exports.ATTR_PROCESS_RUNTIME_NAME = exports.ATTR_PROCESS_RUNTIME_DESCRIPTION = exports.ATTR_PROCESS_REAL_USER_NAME = exports.ATTR_PROCESS_REAL_USER_ID = exports.ATTR_PROCESS_PID = exports.ATTR_PROCESS_PARENT_PID = exports.PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR = exports.PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR = exports.ATTR_PROCESS_PAGING_FAULT_TYPE = exports.ATTR_PROCESS_OWNER = exports.ATTR_PROCESS_LINUX_CGROUP = exports.ATTR_PROCESS_INTERACTIVE = exports.ATTR_PROCESS_GROUP_LEADER_PID = exports.ATTR_PROCESS_EXIT_TIME = exports.ATTR_PROCESS_EXIT_CODE = exports.ATTR_PROCESS_EXECUTABLE_PATH = exports.ATTR_PROCESS_EXECUTABLE_NAME = exports.ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING = exports.ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH = exports.ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO = exports.ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU = exports.ATTR_PROCESS_ENVIRONMENT_VARIABLE = exports.ATTR_PROCESS_CREATION_TIME = exports.PROCESS_CPU_STATE_VALUE_WAIT = exports.PROCESS_CPU_STATE_VALUE_USER = exports.PROCESS_CPU_STATE_VALUE_SYSTEM = exports.ATTR_PROCESS_CPU_STATE = exports.PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY = exports.PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY = exports.ATTR_PROCESS_CONTEXT_SWITCH_TYPE = exports.ATTR_PROCESS_COMMAND_LINE = exports.ATTR_PROCESS_COMMAND_ARGS = exports.ATTR_PROCESS_COMMAND = exports.ATTR_PROCESS_ARGS_COUNT = exports.ATTR_PPROF_PROFILE_KEEP_FRAMES = exports.ATTR_PPROF_PROFILE_DROP_FRAMES = exports.ATTR_PPROF_PROFILE_DOC_URL = exports.ATTR_PPROF_PROFILE_COMMENT = exports.ATTR_PPROF_MAPPING_HAS_LINE_NUMBERS = exports.ATTR_PPROF_MAPPING_HAS_INLINE_FRAMES = exports.ATTR_PPROF_MAPPING_HAS_FUNCTIONS = exports.ATTR_PPROF_MAPPING_HAS_FILENAMES = void 0; +exports.RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED = exports.RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED = exports.RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS = exports.RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND = exports.RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED = exports.RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT = exports.RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN = exports.RPC_GRPC_STATUS_CODE_VALUE_CANCELLED = exports.RPC_GRPC_STATUS_CODE_VALUE_OK = exports.ATTR_RPC_GRPC_STATUS_CODE = exports.ATTR_RPC_GRPC_RESPONSE_METADATA = exports.ATTR_RPC_GRPC_REQUEST_METADATA = exports.ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA = exports.ATTR_RPC_CONNECT_RPC_REQUEST_METADATA = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS = exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED = exports.ATTR_RPC_CONNECT_RPC_ERROR_CODE = exports.PROFILE_FRAME_TYPE_VALUE_V8JS = exports.PROFILE_FRAME_TYPE_VALUE_RUST = exports.PROFILE_FRAME_TYPE_VALUE_RUBY = exports.PROFILE_FRAME_TYPE_VALUE_PHP = exports.PROFILE_FRAME_TYPE_VALUE_PERL = exports.PROFILE_FRAME_TYPE_VALUE_NATIVE = exports.PROFILE_FRAME_TYPE_VALUE_KERNEL = exports.PROFILE_FRAME_TYPE_VALUE_JVM = exports.PROFILE_FRAME_TYPE_VALUE_GO = exports.PROFILE_FRAME_TYPE_VALUE_DOTNET = exports.PROFILE_FRAME_TYPE_VALUE_CPYTHON = exports.PROFILE_FRAME_TYPE_VALUE_BEAM = exports.ATTR_PROFILE_FRAME_TYPE = exports.ATTR_PROCESS_WORKING_DIRECTORY = exports.ATTR_PROCESS_VPID = exports.ATTR_PROCESS_USER_NAME = exports.ATTR_PROCESS_USER_ID = exports.ATTR_PROCESS_TITLE = exports.PROCESS_STATE_VALUE_STOPPED = void 0; +exports.ATTR_SESSION_ID = exports.ATTR_SERVICE_PEER_NAMESPACE = exports.ATTR_SERVICE_PEER_NAME = exports.ATTR_SERVICE_NAMESPACE = exports.ATTR_SERVICE_INSTANCE_ID = exports.ATTR_SECURITY_RULE_VERSION = exports.ATTR_SECURITY_RULE_UUID = exports.ATTR_SECURITY_RULE_RULESET_NAME = exports.ATTR_SECURITY_RULE_REFERENCE = exports.ATTR_SECURITY_RULE_NAME = exports.ATTR_SECURITY_RULE_LICENSE = exports.ATTR_SECURITY_RULE_DESCRIPTION = exports.ATTR_SECURITY_RULE_CATEGORY = exports.RPC_SYSTEM_NAME_VALUE_JSONRPC = exports.RPC_SYSTEM_NAME_VALUE_GRPC = exports.RPC_SYSTEM_NAME_VALUE_DUBBO = exports.RPC_SYSTEM_NAME_VALUE_CONNECTRPC = exports.ATTR_RPC_SYSTEM_NAME = exports.RPC_SYSTEM_VALUE_ONC_RPC = exports.RPC_SYSTEM_VALUE_JSONRPC = exports.RPC_SYSTEM_VALUE_JAVA_RMI = exports.RPC_SYSTEM_VALUE_GRPC = exports.RPC_SYSTEM_VALUE_DOTNET_WCF = exports.RPC_SYSTEM_VALUE_CONNECT_RPC = exports.RPC_SYSTEM_VALUE_APACHE_DUBBO = exports.ATTR_RPC_SYSTEM = exports.ATTR_RPC_SERVICE = exports.ATTR_RPC_RESPONSE_STATUS_CODE = exports.ATTR_RPC_RESPONSE_METADATA = exports.ATTR_RPC_REQUEST_METADATA = exports.ATTR_RPC_METHOD_ORIGINAL = exports.ATTR_RPC_METHOD = exports.ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE = exports.RPC_MESSAGE_TYPE_VALUE_SENT = exports.RPC_MESSAGE_TYPE_VALUE_RECEIVED = exports.ATTR_RPC_MESSAGE_TYPE = exports.ATTR_RPC_MESSAGE_ID = exports.ATTR_RPC_MESSAGE_COMPRESSED_SIZE = exports.ATTR_RPC_JSONRPC_VERSION = exports.ATTR_RPC_JSONRPC_REQUEST_ID = exports.ATTR_RPC_JSONRPC_ERROR_MESSAGE = exports.ATTR_RPC_JSONRPC_ERROR_CODE = exports.RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED = exports.RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS = exports.RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE = exports.RPC_GRPC_STATUS_CODE_VALUE_INTERNAL = exports.RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED = exports.RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE = exports.RPC_GRPC_STATUS_CODE_VALUE_ABORTED = exports.RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION = void 0; +exports.SYSTEM_NETWORK_STATE_VALUE_SYN_SENT = exports.SYSTEM_NETWORK_STATE_VALUE_SYN_RECV = exports.SYSTEM_NETWORK_STATE_VALUE_LISTEN = exports.SYSTEM_NETWORK_STATE_VALUE_LAST_ACK = exports.SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2 = exports.SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1 = exports.SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED = exports.SYSTEM_NETWORK_STATE_VALUE_DELETE = exports.SYSTEM_NETWORK_STATE_VALUE_CLOSING = exports.SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT = exports.SYSTEM_NETWORK_STATE_VALUE_CLOSE = exports.ATTR_SYSTEM_NETWORK_STATE = exports.SYSTEM_MEMORY_STATE_VALUE_USED = exports.SYSTEM_MEMORY_STATE_VALUE_SHARED = exports.SYSTEM_MEMORY_STATE_VALUE_FREE = exports.SYSTEM_MEMORY_STATE_VALUE_CACHED = exports.SYSTEM_MEMORY_STATE_VALUE_BUFFERS = exports.ATTR_SYSTEM_MEMORY_STATE = exports.SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE = exports.SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE = exports.ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE = exports.SYSTEM_FILESYSTEM_TYPE_VALUE_REFS = exports.SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS = exports.SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS = exports.SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32 = exports.SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4 = exports.SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT = exports.ATTR_SYSTEM_FILESYSTEM_TYPE = exports.SYSTEM_FILESYSTEM_STATE_VALUE_USED = exports.SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED = exports.SYSTEM_FILESYSTEM_STATE_VALUE_FREE = exports.ATTR_SYSTEM_FILESYSTEM_STATE = exports.ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT = exports.ATTR_SYSTEM_FILESYSTEM_MODE = exports.ATTR_SYSTEM_DEVICE = exports.SYSTEM_CPU_STATE_VALUE_USER = exports.SYSTEM_CPU_STATE_VALUE_SYSTEM = exports.SYSTEM_CPU_STATE_VALUE_STEAL = exports.SYSTEM_CPU_STATE_VALUE_NICE = exports.SYSTEM_CPU_STATE_VALUE_IOWAIT = exports.SYSTEM_CPU_STATE_VALUE_INTERRUPT = exports.SYSTEM_CPU_STATE_VALUE_IDLE = exports.ATTR_SYSTEM_CPU_STATE = exports.ATTR_SYSTEM_CPU_LOGICAL_NUMBER = exports.STATE_VALUE_USED = exports.STATE_VALUE_IDLE = exports.ATTR_STATE = exports.ATTR_SOURCE_PORT = exports.ATTR_SOURCE_ADDRESS = exports.ATTR_SESSION_PREVIOUS_ID = void 0; +exports.ATTR_TLS_CLIENT_SERVER_NAME = exports.ATTR_TLS_CLIENT_NOT_BEFORE = exports.ATTR_TLS_CLIENT_NOT_AFTER = exports.ATTR_TLS_CLIENT_JA3 = exports.ATTR_TLS_CLIENT_ISSUER = exports.ATTR_TLS_CLIENT_HASH_SHA256 = exports.ATTR_TLS_CLIENT_HASH_SHA1 = exports.ATTR_TLS_CLIENT_HASH_MD5 = exports.ATTR_TLS_CLIENT_CERTIFICATE_CHAIN = exports.ATTR_TLS_CLIENT_CERTIFICATE = exports.ATTR_TLS_CIPHER = exports.ATTR_THREAD_NAME = exports.ATTR_THREAD_ID = exports.TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT = exports.TEST_SUITE_RUN_STATUS_VALUE_SUCCESS = exports.TEST_SUITE_RUN_STATUS_VALUE_SKIPPED = exports.TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS = exports.TEST_SUITE_RUN_STATUS_VALUE_FAILURE = exports.TEST_SUITE_RUN_STATUS_VALUE_ABORTED = exports.ATTR_TEST_SUITE_RUN_STATUS = exports.ATTR_TEST_SUITE_NAME = exports.TEST_CASE_RESULT_STATUS_VALUE_PASS = exports.TEST_CASE_RESULT_STATUS_VALUE_FAIL = exports.ATTR_TEST_CASE_RESULT_STATUS = exports.ATTR_TEST_CASE_NAME = exports.ATTR_TELEMETRY_DISTRO_VERSION = exports.ATTR_TELEMETRY_DISTRO_NAME = exports.SYSTEM_PROCESSES_STATUS_VALUE_STOPPED = exports.SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING = exports.SYSTEM_PROCESSES_STATUS_VALUE_RUNNING = exports.SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT = exports.ATTR_SYSTEM_PROCESSES_STATUS = exports.SYSTEM_PROCESS_STATUS_VALUE_STOPPED = exports.SYSTEM_PROCESS_STATUS_VALUE_SLEEPING = exports.SYSTEM_PROCESS_STATUS_VALUE_RUNNING = exports.SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT = exports.ATTR_SYSTEM_PROCESS_STATUS = exports.SYSTEM_PAGING_TYPE_VALUE_MINOR = exports.SYSTEM_PAGING_TYPE_VALUE_MAJOR = exports.ATTR_SYSTEM_PAGING_TYPE = exports.SYSTEM_PAGING_STATE_VALUE_USED = exports.SYSTEM_PAGING_STATE_VALUE_FREE = exports.ATTR_SYSTEM_PAGING_STATE = exports.SYSTEM_PAGING_FAULT_TYPE_VALUE_MINOR = exports.SYSTEM_PAGING_FAULT_TYPE_VALUE_MAJOR = exports.ATTR_SYSTEM_PAGING_FAULT_TYPE = exports.SYSTEM_PAGING_DIRECTION_VALUE_OUT = exports.SYSTEM_PAGING_DIRECTION_VALUE_IN = exports.ATTR_SYSTEM_PAGING_DIRECTION = exports.SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT = void 0; +exports.V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE = exports.V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE = exports.V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE = exports.ATTR_V8JS_HEAP_SPACE_NAME = exports.V8JS_GC_TYPE_VALUE_WEAKCB = exports.V8JS_GC_TYPE_VALUE_MINOR = exports.V8JS_GC_TYPE_VALUE_MAJOR = exports.V8JS_GC_TYPE_VALUE_INCREMENTAL = exports.ATTR_V8JS_GC_TYPE = exports.ATTR_USER_AGENT_VERSION = exports.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = exports.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = exports.ATTR_USER_AGENT_SYNTHETIC_TYPE = exports.ATTR_USER_AGENT_OS_VERSION = exports.ATTR_USER_AGENT_OS_NAME = exports.ATTR_USER_AGENT_NAME = exports.ATTR_USER_ROLES = exports.ATTR_USER_NAME = exports.ATTR_USER_ID = exports.ATTR_USER_HASH = exports.ATTR_USER_FULL_NAME = exports.ATTR_USER_EMAIL = exports.ATTR_URL_TOP_LEVEL_DOMAIN = exports.ATTR_URL_TEMPLATE = exports.ATTR_URL_SUBDOMAIN = exports.ATTR_URL_REGISTERED_DOMAIN = exports.ATTR_URL_PORT = exports.ATTR_URL_ORIGINAL = exports.ATTR_URL_EXTENSION = exports.ATTR_URL_DOMAIN = exports.ATTR_TLS_SERVER_SUBJECT = exports.ATTR_TLS_SERVER_NOT_BEFORE = exports.ATTR_TLS_SERVER_NOT_AFTER = exports.ATTR_TLS_SERVER_JA3S = exports.ATTR_TLS_SERVER_ISSUER = exports.ATTR_TLS_SERVER_HASH_SHA256 = exports.ATTR_TLS_SERVER_HASH_SHA1 = exports.ATTR_TLS_SERVER_HASH_MD5 = exports.ATTR_TLS_SERVER_CERTIFICATE_CHAIN = exports.ATTR_TLS_SERVER_CERTIFICATE = exports.ATTR_TLS_RESUMED = exports.ATTR_TLS_PROTOCOL_VERSION = exports.TLS_PROTOCOL_NAME_VALUE_TLS = exports.TLS_PROTOCOL_NAME_VALUE_SSL = exports.ATTR_TLS_PROTOCOL_NAME = exports.ATTR_TLS_NEXT_PROTOCOL = exports.ATTR_TLS_ESTABLISHED = exports.ATTR_TLS_CURVE = exports.ATTR_TLS_CLIENT_SUPPORTED_CIPHERS = exports.ATTR_TLS_CLIENT_SUBJECT = void 0; +exports.ATTR_ZOS_SYSPLEX_NAME = exports.ATTR_ZOS_SMF_ID = exports.ATTR_WEBENGINE_VERSION = exports.ATTR_WEBENGINE_NAME = exports.ATTR_WEBENGINE_DESCRIPTION = exports.VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND = exports.VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD = exports.ATTR_VCS_REVISION_DELTA_DIRECTION = exports.ATTR_VCS_REPOSITORY_URL_FULL = exports.VCS_REPOSITORY_REF_TYPE_VALUE_TAG = exports.VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH = exports.ATTR_VCS_REPOSITORY_REF_TYPE = exports.ATTR_VCS_REPOSITORY_REF_REVISION = exports.ATTR_VCS_REPOSITORY_REF_NAME = exports.ATTR_VCS_REPOSITORY_NAME = exports.ATTR_VCS_REPOSITORY_CHANGE_TITLE = exports.ATTR_VCS_REPOSITORY_CHANGE_ID = exports.VCS_REF_TYPE_VALUE_TAG = exports.VCS_REF_TYPE_VALUE_BRANCH = exports.ATTR_VCS_REF_TYPE = exports.VCS_REF_HEAD_TYPE_VALUE_TAG = exports.VCS_REF_HEAD_TYPE_VALUE_BRANCH = exports.ATTR_VCS_REF_HEAD_TYPE = exports.ATTR_VCS_REF_HEAD_REVISION = exports.ATTR_VCS_REF_HEAD_NAME = exports.VCS_REF_BASE_TYPE_VALUE_TAG = exports.VCS_REF_BASE_TYPE_VALUE_BRANCH = exports.ATTR_VCS_REF_BASE_TYPE = exports.ATTR_VCS_REF_BASE_REVISION = exports.ATTR_VCS_REF_BASE_NAME = exports.VCS_PROVIDER_NAME_VALUE_GITTEA = exports.VCS_PROVIDER_NAME_VALUE_GITLAB = exports.VCS_PROVIDER_NAME_VALUE_GITHUB = exports.VCS_PROVIDER_NAME_VALUE_GITEA = exports.VCS_PROVIDER_NAME_VALUE_BITBUCKET = exports.ATTR_VCS_PROVIDER_NAME = exports.ATTR_VCS_OWNER_NAME = exports.VCS_LINE_CHANGE_TYPE_VALUE_REMOVED = exports.VCS_LINE_CHANGE_TYPE_VALUE_ADDED = exports.ATTR_VCS_LINE_CHANGE_TYPE = exports.ATTR_VCS_CHANGE_TITLE = exports.VCS_CHANGE_STATE_VALUE_WIP = exports.VCS_CHANGE_STATE_VALUE_OPEN = exports.VCS_CHANGE_STATE_VALUE_MERGED = exports.VCS_CHANGE_STATE_VALUE_CLOSED = exports.ATTR_VCS_CHANGE_STATE = exports.ATTR_VCS_CHANGE_ID = exports.V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE = exports.V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE = void 0; +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * This attribute represents the state of the application. + * + * @example created + * + * @note The Android lifecycle states are defined in [Activity lifecycle callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), and from which the `OS identifiers` are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ANDROID_APP_STATE = 'android.app.state'; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ANDROID_APP_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ANDROID_APP_STATE_VALUE_CREATED = "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_APP_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ANDROID_APP_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found in the [Android API levels documentation](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels). + * + * @example 33 + * @example 32 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ANDROID_OS_API_LEVEL = 'android.os.api_level'; +/** + * Deprecated. Use `android.app.state` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `android.app.state`. + */ +exports.ATTR_ANDROID_STATE = 'android.state'; +/** + * Enum value "background" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ANDROID_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "created" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ANDROID_STATE_VALUE_CREATED = "created"; +/** + * Enum value "foreground" for attribute {@link ATTR_ANDROID_STATE}. + * + * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ANDROID_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Unique identifier for a particular build or compilation of the application. + * + * @example 6cff0a7e-cefc-4668-96f5-1273d8b334d0 + * @example 9f2b833506aa6973a92fde9733e6271f + * @example my-app-1.0.0-code-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_BUILD_ID = 'app.build_id'; +/** + * A unique identifier representing the installation of an application on a specific device + * + * @example 2ab2916d-a51f-4ac8-80ee-45ac31a28092 + * + * @note Its value **SHOULD** persist across launches of the same application installation, including through application upgrades. + * It **SHOULD** change if the application is uninstalled or if all applications of the vendor are uninstalled. + * Additionally, users might be able to reset this value (e.g. by clearing application data). + * If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` **SHOULD** have a different value. + * If multiple OpenTelemetry SDKs are used within the same application, they **SHOULD** use the same value for `app.installation.id`. + * Hardware IDs (e.g. serial number, IMEI, MAC address) **MUST NOT** be used as the `app.installation.id`. + * + * For iOS, this value **SHOULD** be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor). + * + * For Android, examples of `app.installation.id` implementations include: + * + * - [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations). + * - A globally unique UUID which is persisted across sessions in your application. + * - [App set ID](https://developer.android.com/identity/app-set-id). + * - [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID). + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_INSTALLATION_ID = 'app.installation.id'; +/** + * A number of frame renders that experienced jank. + * + * @example 9 + * @example 42 + * + * @note Depending on platform limitations, the value provided **MAY** be approximation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_JANK_FRAME_COUNT = 'app.jank.frame_count'; +/** + * The time period, in seconds, for which this jank is being reported. + * + * @example 1.0 + * @example 5.0 + * @example 10.24 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_JANK_PERIOD = 'app.jank.period'; +/** + * The minimum rendering threshold for this jank, in seconds. + * + * @example 0.016 + * @example 0.7 + * @example 1.024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_JANK_THRESHOLD = 'app.jank.threshold'; +/** + * The x (horizontal) coordinate of a screen coordinate, in screen pixels. + * + * @example 0 + * @example 131 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_SCREEN_COORDINATE_X = 'app.screen.coordinate.x'; +/** + * The y (vertical) component of a screen coordinate, in screen pixels. + * + * @example 12 + * @example 99 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_SCREEN_COORDINATE_Y = 'app.screen.coordinate.y'; +/** + * An identifier that uniquely differentiates this screen from other screens in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example com.example.app.MainActivity + * @example com.example.shop.ProductDetailFragment + * @example MyApp.ProfileView + * @example MyApp.ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_SCREEN_ID = 'app.screen.id'; +/** + * The name of an application screen. + * + * @example MainActivity + * @example ProductDetailFragment + * @example ProfileView + * @example ProfileViewController + * + * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_SCREEN_NAME = 'app.screen.name'; +/** + * An identifier that uniquely differentiates this widget from other widgets in the same application. + * + * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3 + * @example submit_order_1829 + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_WIDGET_ID = 'app.widget.id'; +/** + * The name of an application widget. + * + * @example submit + * @example attack + * @example Clear Cart + * + * @note A widget is an application component, typically an on-screen visual GUI element. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_APP_WIDGET_NAME = 'app.widget.name'; +/** + * The provenance filename of the built attestation which directly relates to the build artifact filename. This filename **SHOULD** accompany the artifact at publish time. See the [SLSA Relationship](https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations) specification for more information. + * + * @example golang-binary-amd64-v0.1.0.attestation + * @example docker-image-amd64-v0.1.0.intoto.json1 + * @example release-1.tar.gz.attestation + * @example file-name-package.tar.gz.intoto.json1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ARTIFACT_ATTESTATION_FILENAME = 'artifact.attestation.filename'; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the [software attestation space](https://github.com/in-toto/attestation/tree/main/spec) also refer to this as the **digest**. + * + * @example 1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ARTIFACT_ATTESTATION_HASH = 'artifact.attestation.hash'; +/** + * The id of the build [software attestation](https://slsa.dev/attestation-model). + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ARTIFACT_ATTESTATION_ID = 'artifact.attestation.id'; +/** + * The human readable file name of the artifact, typically generated during build and release processes. Often includes the package name and version in the file name. + * + * @example golang-binary-amd64-v0.1.0 + * @example docker-image-amd64-v0.1.0 + * @example release-1.tar.gz + * @example file-name-package.tar.gz + * + * @note This file name can also act as the [Package Name](https://slsa.dev/spec/v1.0/terminology#package-model) + * in cases where the package ecosystem maps accordingly. + * Additionally, the artifact [can be published](https://slsa.dev/spec/v1.0/terminology#software-supply-chain) + * for others, but that is not a guarantee. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ARTIFACT_FILENAME = 'artifact.filename'; +/** + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), often found in checksum.txt on a release of the artifact and used to verify package integrity. + * + * @example 9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9 + * + * @note The specific algorithm used to create the cryptographic hash value is + * not defined. In situations where an artifact has multiple + * cryptographic hashes, it is up to the implementer to choose which + * hash value to set here; this should be the most secure hash algorithm + * that is suitable for the situation and consistent with the + * corresponding attestation. The implementer can then provide the other + * hash values through an additional set of attribute extensions as they + * deem necessary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ARTIFACT_HASH = 'artifact.hash'; +/** + * The [Package URL](https://github.com/package-url/purl-spec) of the [package artifact](https://slsa.dev/spec/v1.0/terminology#package-model) provides a standard way to identify and locate the packaged artifact. + * + * @example pkg:github/package-url/purl-spec@1209109710924 + * @example pkg:npm/foo@12.12.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ARTIFACT_PURL = 'artifact.purl'; +/** + * The version of the artifact. + * + * @example v0.1.0 + * @example 1.2.1 + * @example 122691-build + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ARTIFACT_VERSION = 'artifact.version'; +/** + * The result of the authentication operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_AUTHENTICATION_RESULT = 'aspnetcore.authentication.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_AUTHENTICATION_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "none" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * No authentication information returned. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_AUTHENTICATION_RESULT_VALUE_NONE = "none"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}. + * + * Authentication was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_AUTHENTICATION_RESULT_VALUE_SUCCESS = "success"; +/** + * The identifier that names a particular authentication handler. + * + * @example Cookies + * @example Bearer + * @example Identity.Application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_AUTHENTICATION_SCHEME = 'aspnetcore.authentication.scheme'; +/** + * The name of the authorization policy. + * + * @example RequireAdminRole + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_AUTHORIZATION_POLICY = 'aspnetcore.authorization.policy'; +/** + * The result of calling the authorization service. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_AUTHORIZATION_RESULT = 'aspnetcore.authorization.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_AUTHORIZATION_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}. + * + * Authorization was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_AUTHORIZATION_RESULT_VALUE_SUCCESS = "success"; +/** + * The error code for a failed identity operation. + * + * @example DefaultError + * @example PasswordMismatch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_IDENTITY_ERROR_CODE = 'aspnetcore.identity.error_code'; +/** + * The result from checking the password. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT = 'aspnetcore.identity.password_check_result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "password_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the password was missing from the user. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_PASSWORD_MISSING = "password_missing"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS = "success"; +/** + * Enum value "success_rehash_needed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check was successful however the password was encoded using a deprecated algorithm and should be rehashed and updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS_REHASH_NEEDED = "success_rehash_needed"; +/** + * Enum value "user_missing" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}. + * + * Password check couldn't proceed because the user was missing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_USER_MISSING = "user_missing"; +/** + * The result of the identity operation. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_IDENTITY_RESULT = 'aspnetcore.identity.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}. + * + * Identity operation was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_RESULT_VALUE_SUCCESS = "success"; +/** + * Whether the sign in result was success or failure. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT = 'aspnetcore.identity.sign_in.result'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "locked_out" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is locked out. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_LOCKED_OUT = "locked_out"; +/** + * Enum value "not_allowed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User is not allowed to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_NOT_ALLOWED = "not_allowed"; +/** + * Enum value "requires_two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * User requires two factory authentication to sign in. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_REQUIRES_TWO_FACTOR = "requires_two_factor"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}. + * + * Sign in was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_SUCCESS = "success"; +/** + * The authentication type. + * + * @example password + * @example two_factor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE = 'aspnetcore.identity.sign_in.type'; +/** + * Enum value "external" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a previously registered third-party login. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_EXTERNAL = "external"; +/** + * Enum value "passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with passkey. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSKEY = "passkey"; +/** + * Enum value "password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSWORD = "password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with a two factor provider. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR = "two_factor"; +/** + * Enum value "two_factor_authenticator" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factor authenticator app. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_AUTHENTICATOR = "two_factor_authenticator"; +/** + * Enum value "two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}. + * + * Sign in with two factory recovery code. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_RECOVERY_CODE = "two_factor_recovery_code"; +/** + * What the token will be used for. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE = 'aspnetcore.identity.token_purpose'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * Any token purpose that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_OTHER = "_OTHER"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing the user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_EMAIL = "change_email"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing a user phone number. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_PHONE_NUMBER = "change_phone_number"; +/** + * Enum value "email_confirmation" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for confirming user email address. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_EMAIL_CONFIRMATION = "email_confirmation"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for resetting a user password. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_RESET_PASSWORD = "reset_password"; +/** + * Enum value "two_factor" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}. + * + * The token is for changing user two factor settings. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_TWO_FACTOR = "two_factor"; +/** + * The result of token verification. + * + * @example success + * @example failure + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED = 'aspnetcore.identity.token_verified'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification failed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}. + * + * Token verification was successful. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_SUCCESS = "success"; +/** + * The user update type. + * + * @example update + * @example user_name + * @example reset_password + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE = 'aspnetcore.identity.user.update_type'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Any update type that the instrumentation has no prior knowledge of. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_OTHER = "_OTHER"; +/** + * Enum value "access_failed" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure recorded. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ACCESS_FAILED = "access_failed"; +/** + * Enum value "add_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_CLAIMS = "add_claims"; +/** + * Enum value "add_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_LOGIN = "add_login"; +/** + * Enum value "add_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_PASSWORD = "add_password"; +/** + * Enum value "add_to_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user added to roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_TO_ROLES = "add_to_roles"; +/** + * Enum value "change_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_EMAIL = "change_email"; +/** + * Enum value "change_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PASSWORD = "change_password"; +/** + * Enum value "change_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PHONE_NUMBER = "change_phone_number"; +/** + * Enum value "confirm_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email confirmed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CONFIRM_EMAIL = "confirm_email"; +/** + * Enum value "generate_new_two_factor_recovery_codes" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user new two-factor recovery codes generated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_GENERATE_NEW_TWO_FACTOR_RECOVERY_CODES = "generate_new_two_factor_recovery_codes"; +/** + * Enum value "password_rehash" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password rehashed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_PASSWORD_REHASH = "password_rehash"; +/** + * Enum value "redeem_two_factor_recovery_code" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor recovery code redeemed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REDEEM_TWO_FACTOR_RECOVERY_CODE = "redeem_two_factor_recovery_code"; +/** + * Enum value "remove_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_AUTHENTICATION_TOKEN = "remove_authentication_token"; +/** + * Enum value "remove_claims" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claims removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_CLAIMS = "remove_claims"; +/** + * Enum value "remove_from_roles" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user removed from roles. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_FROM_ROLES = "remove_from_roles"; +/** + * Enum value "remove_login" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user login removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_LOGIN = "remove_login"; +/** + * Enum value "remove_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSKEY = "remove_passkey"; +/** + * Enum value "remove_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSWORD = "remove_password"; +/** + * Enum value "replace_claim" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user claim replaced. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REPLACE_CLAIM = "replace_claim"; +/** + * Enum value "reset_access_failed_count" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user access failure count reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_ACCESS_FAILED_COUNT = "reset_access_failed_count"; +/** + * Enum value "reset_authenticator_key" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authenticator key reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_AUTHENTICATOR_KEY = "reset_authenticator_key"; +/** + * Enum value "reset_password" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user password reset. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_PASSWORD = "reset_password"; +/** + * Enum value "security_stamp" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user security stamp updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SECURITY_STAMP = "security_stamp"; +/** + * Enum value "set_authentication_token" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user authentication token set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_AUTHENTICATION_TOKEN = "set_authentication_token"; +/** + * Enum value "set_email" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user email set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_EMAIL = "set_email"; +/** + * Enum value "set_lockout_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_ENABLED = "set_lockout_enabled"; +/** + * Enum value "set_lockout_end_date" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user lockout end date set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_END_DATE = "set_lockout_end_date"; +/** + * Enum value "set_passkey" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user passkey set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PASSKEY = "set_passkey"; +/** + * Enum value "set_phone_number" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user phone number set. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PHONE_NUMBER = "set_phone_number"; +/** + * Enum value "set_two_factor_enabled" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user two-factor authentication enabled or disabled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_TWO_FACTOR_ENABLED = "set_two_factor_enabled"; +/** + * Enum value "update" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_UPDATE = "update"; +/** + * Enum value "user_name" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}. + * + * Identity user name updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_USER_NAME = "user_name"; +/** + * The full name of the identity user type. + * + * @example Contoso.ContosoUser + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_IDENTITY_USER_TYPE = 'aspnetcore.identity.user_type'; +/** + * The name of the library or subsystem using the memory pool instance. + * + * @example kestrel + * @example iis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_MEMORY_POOL_OWNER = 'aspnetcore.memory_pool.owner'; +/** + * A flag indicating whether the sign in is persistent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ASPNETCORE_SIGN_IN_IS_PERSISTENT = 'aspnetcore.sign_in.is_persistent'; +/** + * The unique identifier of the AWS Bedrock Guardrail. A [guardrail](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) helps safeguard and prevent unwanted behavior from model responses or user messages. + * + * @example sgi5gkybzqak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_BEDROCK_GUARDRAIL_ID = 'aws.bedrock.guardrail.id'; +/** + * The unique identifier of the AWS Bedrock Knowledge base. A [knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) is a bank of information that can be queried by models to generate more relevant responses and augment prompts. + * + * @example XFWUPB9PAW + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_BEDROCK_KNOWLEDGE_BASE_ID = 'aws.bedrock.knowledge_base.id'; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @example ["{ "AttributeName": "string", "AttributeType": "string" }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions'; +/** + * The value of the `AttributesToGet` request parameter. + * + * @example ["lives", "id"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get'; +/** + * The value of the `ConsistentRead` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read'; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @example ["{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity'; +/** + * The value of the `Count` response parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count'; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @example Users + * @example CatsTable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table'; +/** + * The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field. + * + * @example ["{ "Create": { "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates'; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field + * + * @example ["{ "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes'; +/** + * The value of the `IndexName` request parameter. + * + * @example name_to_group + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name'; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @example { "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] } + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics'; +/** + * The value of the `Limit` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit'; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @example ["{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes'; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @example Title + * @example Title, Price, Color + * @example Title, Description, RelatedItems, ProductReviews + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection'; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity'; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @example 1.0 + * @example 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity'; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward'; +/** + * The value of the `ScannedCount` response parameter. + * + * @example 50 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count'; +/** + * The value of the `Segment` request parameter. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment'; +/** + * The value of the `Select` request parameter. + * + * @example ALL_ATTRIBUTES + * @example COUNT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select'; +/** + * The number of items in the `TableNames` response parameter. + * + * @example 20 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count'; +/** + * The keys in the `RequestItems` object field. + * + * @example ["Users", "Cats"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names'; +/** + * The value of the `TotalSegments` request parameter. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments'; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn'; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @example arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn'; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype'; +/** + * Enum value "ec2" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon EC2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.AWS_ECS_LAUNCHTYPE_VALUE_EC2 = "ec2"; +/** + * Enum value "fargate" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}. + * + * Amazon Fargate + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.AWS_ECS_LAUNCHTYPE_VALUE_FARGATE = "fargate"; +/** + * The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids). + * + * @example arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b + * @example arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn'; +/** + * The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task. + * + * @example opentelemetry-family + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family'; +/** + * The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`. + * + * @example 10838bed-421f-43ef-870a-f43feacbbb5b + * @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_ECS_TASK_ID = 'aws.ecs.task.id'; +/** + * The revision for the task definition used to create the ECS task. + * + * @example 8 + * @example 26 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision'; +/** + * The ARN of an EKS cluster. + * + * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn'; +/** + * The AWS extended request ID as returned in the response header `x-amz-id-2`. + * + * @example wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ= + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_EXTENDED_REQUEST_ID = 'aws.extended_request_id'; +/** + * The name of the AWS Kinesis [stream](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) the request refers to. Corresponds to the `--stream-name` parameter of the Kinesis [describe-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html) operation. + * + * @example some-stream-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_KINESIS_STREAM_NAME = 'aws.kinesis.stream_name'; +/** + * 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). + * + * @example arn:aws:lambda:us-east-1:123456:function:myfunction:myalias + * + * @note This may be different from `cloud.resource_id` if an alias is involved. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn'; +/** + * The UUID of the [AWS Lambda EvenSource Mapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html). An event source is mapped to a lambda function. It's contents are read by Lambda and used to trigger a function. This isn't available in the lambda execution context or the lambda runtime environtment. This is going to be populated by the AWS SDK for each language when that UUID is present. Some of these operations are Create/Delete/Get/List/Update EventSourceMapping. + * + * @example 587ad24b-03b9-4413-8202-bbd56b36e5b7 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_LAMBDA_RESOURCE_MAPPING_ID = 'aws.lambda.resource_mapping.id'; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*"] + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns'; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * @example ["/aws/lambda/my-function", "opentelemetry-service"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_LOG_GROUP_NAMES = 'aws.log.group.names'; +/** + * The ARN(s) of the AWS log stream(s). + * + * @example ["arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns'; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @example ["logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names'; +/** + * The AWS request ID as returned in the response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`. + * + * @example 79b9da39-b7ae-508a-a6bc-864b2829c622 + * @example C9ER4AJX75574TDJ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_REQUEST_ID = 'aws.request_id'; +/** + * The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example some-bucket-name + * + * @note The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter. + * This applies to almost all S3 operations except `list-buckets`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_S3_BUCKET = 'aws.s3.bucket'; +/** + * The source object (in the form `bucket`/`key`) for the copy operation. + * + * @example someFile.yml + * + * @note The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter + * of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html). + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_S3_COPY_SOURCE = 'aws.s3.copy_source'; +/** + * The delete request container that specifies the objects to be deleted. + * + * @example Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean + * + * @note The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation. + * The `delete` attribute corresponds to the `--delete` parameter of the + * [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_S3_DELETE = 'aws.s3.delete'; +/** + * The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. + * + * @example someFile.yml + * + * @note The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter. + * This applies in particular to the following operations: + * + * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + * - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) + * - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html) + * - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html) + * - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html) + * - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html) + * - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html) + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_S3_KEY = 'aws.s3.key'; +/** + * The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000. + * + * @example 3456 + * + * @note The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations. + * The `part_number` attribute corresponds to the `--part-number` parameter of the + * [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_S3_PART_NUMBER = 'aws.s3.part_number'; +/** + * Upload ID that identifies the multipart upload. + * + * @example dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ + * + * @note The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter + * of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations. + * This applies in particular to the following operations: + * + * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_S3_UPLOAD_ID = 'aws.s3.upload_id'; +/** + * The ARN of the Secret stored in the Secrets Mangger + * + * @example arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_SECRETSMANAGER_SECRET_ARN = 'aws.secretsmanager.secret.arn'; +/** + * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) is a logical access point that acts as a communication channel. + * + * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_SNS_TOPIC_ARN = 'aws.sns.topic.arn'; +/** + * The URL of the AWS SQS Queue. It's a unique identifier for a queue in Amazon Simple Queue Service (SQS) and is used to access the queue and perform actions on it. + * + * @example https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_SQS_QUEUE_URL = 'aws.sqs.queue.url'; +/** + * The ARN of the AWS Step Functions Activity. + * + * @example arn:aws:states:us-east-1:123456789012:activity:get-greeting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN = 'aws.step_functions.activity.arn'; +/** + * The ARN of the AWS Step Functions State Machine. + * + * @example arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN = 'aws.step_functions.state_machine.arn'; +/** + * Deprecated, use `azure.resource_provider.namespace` instead. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource_provider.namespace`. + */ +exports.ATTR_AZ_NAMESPACE = 'az.namespace'; +/** + * Deprecated, use `azure.service.request.id` instead. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.service.request.id`. + */ +exports.ATTR_AZ_SERVICE_REQUEST_ID = 'az.service_request_id'; +/** + * The unique identifier of the client instance. + * + * @example 3ba4827d-4422-483f-b59f-85b74211c11d + * @example storage-client-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AZURE_CLIENT_ID = 'azure.client.id'; +/** + * Cosmos client connection mode. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AZURE_COSMOSDB_CONNECTION_MODE = 'azure.cosmosdb.connection.mode'; +/** + * Enum value "direct" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.AZURE_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.AZURE_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = "gateway"; +/** + * Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL = 'azure.cosmosdb.consistency.level'; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Bounded Staleness + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Consistent Prefix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Eventual + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Session + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}. + * + * Strong + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = "Strong"; +/** + * List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @note Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS = 'azure.cosmosdb.operation.contacted_regions'; +/** + * The number of request units consumed by the operation. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.operation.request_charge'; +/** + * Request payload size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AZURE_COSMOSDB_REQUEST_BODY_SIZE = 'azure.cosmosdb.request.body.size'; +/** + * Cosmos DB sub status code. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE = 'azure.cosmosdb.response.sub_status_code'; +/** + * [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. + * + * @example Microsoft.Storage + * @example Microsoft.KeyVault + * @example Microsoft.ServiceBus + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AZURE_RESOURCE_PROVIDER_NAMESPACE = 'azure.resource_provider.namespace'; +/** + * The unique identifier of the service request. It's generated by the Azure service and returned with the response. + * + * @example 00000000-0000-0000-0000-000000000000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_AZURE_SERVICE_REQUEST_ID = 'azure.service.request.id'; +/** + * Array of brand name and version separated by a space + * + * @example [" Not A;Brand 99", "Chromium 99", "Chrome 99"] + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_BROWSER_BRANDS = 'browser.brands'; +/** + * Preferred language of the user using the browser + * + * @example en + * @example en-US + * @example fr + * @example fr-FR + * + * @note This value is intended to be taken from the Navigator API `navigator.language`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_BROWSER_LANGUAGE = 'browser.language'; +/** + * A boolean that is true if the browser is running on a mobile device + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute **SHOULD** be left unset. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_BROWSER_MOBILE = 'browser.mobile'; +/** + * The platform on which the browser is running + * + * @example Windows + * @example macOS + * @example Android + * + * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API **SHOULD NOT** be used instead and this attribute **SHOULD** be left unset in order for the values to be consistent. + * The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_BROWSER_PLATFORM = 'browser.platform'; +/** + * 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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CASSANDRA_CONSISTENCY_LEVEL = 'cassandra.consistency.level'; +/** + * Enum value "all" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * All + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = "all"; +/** + * Enum value "any" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Any + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Each Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Local Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * One + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Quorum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Serial + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = "serial"; +/** + * Enum value "three" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Three + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = "three"; +/** + * Enum value "two" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}. + * + * Two + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = "two"; +/** + * The data center of the coordinating node for a query. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CASSANDRA_COORDINATOR_DC = 'cassandra.coordinator.dc'; +/** + * The ID of the coordinating node for a query. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CASSANDRA_COORDINATOR_ID = 'cassandra.coordinator.id'; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CASSANDRA_PAGE_SIZE = 'cassandra.page.size'; +/** + * Whether or not the query is idempotent. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CASSANDRA_QUERY_IDEMPOTENT = 'cassandra.query.idempotent'; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'cassandra.speculative_execution.count'; +/** + * The kind of action a pipeline run is performing. + * + * @example BUILD + * @example RUN + * @example SYNC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_ACTION_NAME = 'cicd.pipeline.action.name'; +/** + * Enum value "BUILD" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a build. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_ACTION_NAME_VALUE_BUILD = "BUILD"; +/** + * Enum value "RUN" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_ACTION_NAME_VALUE_RUN = "RUN"; +/** + * Enum value "SYNC" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}. + * + * The pipeline run is executing a sync. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_ACTION_NAME_VALUE_SYNC = "SYNC"; +/** + * The human readable name of the pipeline within a CI/CD system. + * + * @example Build and Test + * @example Lint + * @example Deploy Go Project + * @example deploy_to_environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_NAME = 'cicd.pipeline.name'; +/** + * The result of a pipeline run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_RESULT = 'cicd.pipeline.result'; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_RESULT_VALUE_CANCELLATION = "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_RESULT_VALUE_ERROR = "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_RESULT_VALUE_SKIP = "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * The pipeline run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_RESULT_VALUE_SUCCESS = "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_RESULT}. + * + * A timeout caused the pipeline run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_RESULT_VALUE_TIMEOUT = "timeout"; +/** + * The unique identifier of a pipeline run within a CI/CD system. + * + * @example 120912 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_RUN_ID = 'cicd.pipeline.run.id'; +/** + * The pipeline run goes through these states during its lifecycle. + * + * @example pending + * @example executing + * @example finalizing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_RUN_STATE = 'cicd.pipeline.run.state'; +/** + * Enum value "executing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The executing state spans the execution of any run tasks (eg. build, test). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_RUN_STATE_VALUE_EXECUTING = "executing"; +/** + * Enum value "finalizing" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The finalizing state spans from when the run has finished executing (eg. cleanup of run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_RUN_STATE_VALUE_FINALIZING = "finalizing"; +/** + * Enum value "pending" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}. + * + * The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_RUN_STATE_VALUE_PENDING = "pending"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline run, providing the complete address in order to locate and identify the pipeline run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_RUN_URL_FULL = 'cicd.pipeline.run.url.full'; +/** + * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures. + * + * @example Run GoLang Linter + * @example Go Build + * @example go-test + * @example deploy_binary + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_TASK_NAME = 'cicd.pipeline.task.name'; +/** + * The unique identifier of a task run within a pipeline. + * + * @example 12097 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_TASK_RUN_ID = 'cicd.pipeline.task.run.id'; +/** + * The result of a task run. + * + * @example success + * @example failure + * @example timeout + * @example skipped + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_TASK_RUN_RESULT = 'cicd.pipeline.task.run.result'; +/** + * Enum value "cancellation" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was cancelled, eg. by a user manually cancelling the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_CANCELLATION = "cancellation"; +/** + * Enum value "error" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_ERROR = "error"; +/** + * Enum value "failure" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the task run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_FAILURE = "failure"; +/** + * Enum value "skip" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run was skipped, eg. due to a precondition not being met. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SKIP = "skip"; +/** + * Enum value "success" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * The task run finished successfully. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SUCCESS = "success"; +/** + * Enum value "timeout" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}. + * + * A timeout caused the task run to be interrupted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_TASK_RUN_RESULT_VALUE_TIMEOUT = "timeout"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline task run, providing the complete address in order to locate and identify the pipeline task run. + * + * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL = 'cicd.pipeline.task.run.url.full'; +/** + * The type of the task within a pipeline. + * + * @example build + * @example test + * @example deploy + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_PIPELINE_TASK_TYPE = 'cicd.pipeline.task.type'; +/** + * Enum value "build" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * build + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_TASK_TYPE_VALUE_BUILD = "build"; +/** + * Enum value "deploy" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * deploy + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY = "deploy"; +/** + * Enum value "test" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}. + * + * test + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_PIPELINE_TASK_TYPE_VALUE_TEST = "test"; +/** + * The name of a component of the CICD system. + * + * @example controller + * @example scheduler + * @example agent + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_SYSTEM_COMPONENT = 'cicd.system.component'; +/** + * The unique identifier of a worker within a CICD system. + * + * @example abc123 + * @example 10.0.1.2 + * @example controller + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_WORKER_ID = 'cicd.worker.id'; +/** + * The name of a worker within a CICD system. + * + * @example agent-abc + * @example controller + * @example Ubuntu LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_WORKER_NAME = 'cicd.worker.name'; +/** + * The state of a CICD worker / agent. + * + * @example idle + * @example busy + * @example down + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_WORKER_STATE = 'cicd.worker.state'; +/** + * Enum value "available" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_WORKER_STATE_VALUE_AVAILABLE = "available"; +/** + * Enum value "busy" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is performing work for the CICD system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_WORKER_STATE_VALUE_BUSY = "busy"; +/** + * Enum value "offline" for attribute {@link ATTR_CICD_WORKER_STATE}. + * + * The worker is not available to the CICD system (disconnected / down). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CICD_WORKER_STATE_VALUE_OFFLINE = "offline"; +/** + * The [URL](https://wikipedia.org/wiki/URL) of the worker, providing the complete address in order to locate and identify the worker. + * + * @example https://cicd.example.org/worker/abc123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CICD_WORKER_URL_FULL = 'cicd.worker.url.full'; +/** + * The cloud account ID the resource is assigned to. + * + * @example 111111111111 + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id'; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * @example us-east-1c + * + * @note Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone'; +/** + * The cloud platform in use. + * + * @note The prefix of the service **SHOULD** match the one specified in `cloud.provider`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUD_PLATFORM = 'cloud.platform'; +/** + * Enum value "akamai_cloud.compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Akamai Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE = "akamai_cloud.compute"; +/** + * Enum value "alibaba_cloud_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Elastic Compute Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS = "alibaba_cloud_ecs"; +/** + * Enum value "alibaba_cloud_fc" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Alibaba Cloud Function Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC = "alibaba_cloud_fc"; +/** + * Enum value "alibaba_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT = "alibaba_cloud_openshift"; +/** + * Enum value "aws_app_runner" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS App Runner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER = "aws_app_runner"; +/** + * Enum value "aws_ec2" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Compute Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AWS_EC2 = "aws_ec2"; +/** + * Enum value "aws_ecs" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Container Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AWS_ECS = "aws_ecs"; +/** + * Enum value "aws_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AWS_EKS = "aws_eks"; +/** + * Enum value "aws_elastic_beanstalk" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Elastic Beanstalk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk"; +/** + * Enum value "aws_lambda" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * AWS Lambda + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AWS_LAMBDA = "aws_lambda"; +/** + * Enum value "aws_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on AWS (ROSA) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT = "aws_openshift"; +/** + * Enum value "azure.aks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Kubernetes Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AZURE_AKS = "azure.aks"; +/** + * Enum value "azure.app_service" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure App Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE = "azure.app_service"; +/** + * Enum value "azure.container_apps" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Apps + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS = "azure.container_apps"; +/** + * Enum value "azure.container_instances" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Container Instances + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES = "azure.container_instances"; +/** + * Enum value "azure.functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Functions + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS = "azure.functions"; +/** + * Enum value "azure.openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Red Hat OpenShift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT = "azure.openshift"; +/** + * Enum value "azure.vm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Azure Virtual Machines + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_AZURE_VM = "azure.vm"; +/** + * Enum value "gcp.agent_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Vertex AI Agent Engine + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE = "gcp.agent_engine"; +/** + * Enum value "gcp_app_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud App Engine (GAE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE = "gcp_app_engine"; +/** + * Enum value "gcp_bare_metal_solution" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Bare Metal Solution (BMS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION = "gcp_bare_metal_solution"; +/** + * Enum value "gcp_cloud_functions" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Functions (GCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS = "gcp_cloud_functions"; +/** + * Enum value "gcp_cloud_run" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Run + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN = "gcp_cloud_run"; +/** + * Enum value "gcp_compute_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Compute Engine (GCE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE = "gcp_compute_engine"; +/** + * Enum value "gcp_kubernetes_engine" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Google Cloud Kubernetes Engine (GKE) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE = "gcp_kubernetes_engine"; +/** + * Enum value "gcp_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on Google Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT = "gcp_openshift"; +/** + * Enum value "hetzner.cloud_server" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Server on Hetzner Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER = "hetzner.cloud_server"; +/** + * Enum value "ibm_cloud_openshift" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Red Hat OpenShift on IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT = "ibm_cloud_openshift"; +/** + * Enum value "oracle_cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Compute on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_COMPUTE = "oracle_cloud_compute"; +/** + * Enum value "oracle_cloud_oke" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_OKE = "oracle_cloud_oke"; +/** + * Enum value "tencent_cloud_cvm" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Cloud Virtual Machine (CVM) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM = "tencent_cloud_cvm"; +/** + * Enum value "tencent_cloud_eks" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Elastic Kubernetes Service (EKS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS = "tencent_cloud_eks"; +/** + * Enum value "tencent_cloud_scf" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Tencent Cloud Serverless Cloud Function (SCF) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF = "tencent_cloud_scf"; +/** + * Enum value "vultr.cloud_compute" for attribute {@link ATTR_CLOUD_PLATFORM}. + * + * Vultr Cloud Compute + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE = "vultr.cloud_compute"; +/** + * Name of the cloud provider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUD_PROVIDER = 'cloud.provider'; +/** + * Enum value "akamai_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Akamai Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD = "akamai_cloud"; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_AWS = "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_AZURE = "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_GCP = "gcp"; +/** + * Enum value "heroku" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Heroku Platform as a Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_HEROKU = "heroku"; +/** + * Enum value "hetzner" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Hetzner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_HETZNER = "hetzner"; +/** + * Enum value "ibm_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * IBM Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_IBM_CLOUD = "ibm_cloud"; +/** + * Enum value "oracle_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Oracle Cloud Infrastructure (OCI) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_ORACLE_CLOUD = "oracle_cloud"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_TENCENT_CLOUD = "tencent_cloud"; +/** + * Enum value "vultr" for attribute {@link ATTR_CLOUD_PROVIDER}. + * + * Vultr + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CLOUD_PROVIDER_VALUE_VULTR = "vultr"; +/** + * The geographical region within a cloud provider. When associated with a resource, this attribute specifies the region where the resource operates. When calling services or APIs deployed on a cloud, this attribute identifies the region where the called destination is deployed. + * + * @example us-central1 + * @example us-east-1 + * + * @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). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUD_REGION = 'cloud.region'; +/** + * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://google.aip.dev/122#full-resource-names) on GCP) + * + * @example arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function + * @example //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID + * @example /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/ + * + * @note On some cloud providers, it may not be possible to determine the full ID at startup, + * so it may be necessary to set `cloud.resource_id` as a span attribute instead. + * + * The exact value to use for `cloud.resource_id` depends on the cloud provider. + * The following well-known definitions **MUST** be used if you set this attribute and they apply: + * + * - **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + * Take care not to use the "invoked ARN" directly but replace any + * [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 invocable with + * multiple different aliases. + * - **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) + * - **Azure:** The [Fully Qualified Resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) of the invoked function, + * *not* the function app, having the form + * `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`. + * This means that a span attribute **MUST** be used, as an Azure function app can host multiple functions that would usually share + * a TracerProvider. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUD_RESOURCE_ID = 'cloud.resource_id'; +/** + * The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event. + * + * @example 123e4567-e89b-12d3-a456-426614174000 + * @example 0001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDEVENTS_EVENT_ID = 'cloudevents.event_id'; +/** + * The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened. + * + * @example https://github.com/cloudevents + * @example /cloudevents/spec/pull/123 + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDEVENTS_EVENT_SOURCE = 'cloudevents.event_source'; +/** + * The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses. + * + * @example "1.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION = 'cloudevents.event_spec_version'; +/** + * The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source). + * + * @example "mynewfile.jpg" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDEVENTS_EVENT_SUBJECT = 'cloudevents.event_subject'; +/** + * The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence. + * + * @example com.github.pull_request.opened + * @example com.example.object.deleted.v2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDEVENTS_EVENT_TYPE = 'cloudevents.event_type'; +/** + * The guid of the application. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_id`. This is the same value as + * reported by `cf app --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_APP_ID = 'cloudfoundry.app.id'; +/** + * The index of the application instance. 0 when just one instance is active. + * + * @example 0 + * @example 1 + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the application instance index for applications + * deployed on the runtime. + * + * Application instrumentation should use the value from environment + * variable `CF_INSTANCE_INDEX`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID = 'cloudfoundry.app.instance.id'; +/** + * The name of the application. + * + * @example my-app-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.application_name`. This is the same value + * as reported by `cf apps`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_APP_NAME = 'cloudfoundry.app.name'; +/** + * The guid of the CloudFoundry org the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_id`. This is the same value as + * reported by `cf org --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_ORG_ID = 'cloudfoundry.org.id'; +/** + * The name of the CloudFoundry organization the app is running in. + * + * @example my-org-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.org_name`. This is the same value as + * reported by `cf orgs`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_ORG_NAME = 'cloudfoundry.org.name'; +/** + * The UID identifying the process. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to + * `VCAP_APPLICATION.app_id` for applications deployed to the runtime. + * For system components, this could be the actual PID. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_PROCESS_ID = 'cloudfoundry.process.id'; +/** + * The type of process. + * + * @example web + * + * @note CloudFoundry applications can consist of multiple jobs. Usually the + * main process will be of type `web`. There can be additional background + * tasks or side-cars with different process types. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_PROCESS_TYPE = 'cloudfoundry.process.type'; +/** + * The guid of the CloudFoundry space the application is running in. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_id`. This is the same value as + * reported by `cf space --guid`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_SPACE_ID = 'cloudfoundry.space.id'; +/** + * The name of the CloudFoundry space the application is running in. + * + * @example my-space-name + * + * @note Application instrumentation should use the value from environment + * variable `VCAP_APPLICATION.space_name`. This is the same value as + * reported by `cf spaces`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_SPACE_NAME = 'cloudfoundry.space.name'; +/** + * A guid or another name describing the event source. + * + * @example cf/gorouter + * + * @note CloudFoundry defines the `source_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the component name, e.g. "gorouter", for + * CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.id` should be set to + * `spec.deployment/spec.name`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_SYSTEM_ID = 'cloudfoundry.system.id'; +/** + * A guid describing the concrete instance of the event source. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope). + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the vm id for CloudFoundry components. + * + * When system components are instrumented, values from the + * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec) + * should be used. The `system.instance.id` should be set to `spec.id`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID = 'cloudfoundry.system.instance.id'; +/** + * Deprecated, use `code.column.number` + * + * @example 16 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.column.number`. + */ +exports.ATTR_CODE_COLUMN = 'code.column'; +/** + * Deprecated, use `code.file.path` instead + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.file.path`. + */ +exports.ATTR_CODE_FILEPATH = 'code.filepath'; +/** + * Deprecated, use `code.function.name` instead + * + * @example "serveRequest" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +exports.ATTR_CODE_FUNCTION = 'code.function'; +/** + * Deprecated, use `code.line.number` instead + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `code.line.number`. + */ +exports.ATTR_CODE_LINENO = 'code.lineno'; +/** + * Deprecated, namespace is now included into `code.function.name` + * + * @example "com.example.MyHttpService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name. + */ +exports.ATTR_CODE_NAMESPACE = 'code.namespace'; +/** + * The command used to run the container (i.e. the command name). + * + * @example otelcontribcol + * + * @note If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_COMMAND = 'container.command'; +/** + * All the command arguments (including the command/executable itself) run by the container. + * + * @example ["otelcontribcol", "--config", "config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_COMMAND_ARGS = 'container.command_args'; +/** + * The full command run by the container as a single string representing the full command. + * + * @example otelcontribcol --config config.yaml + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_COMMAND_LINE = 'container.command_line'; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example user + * @example kernel + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +exports.ATTR_CONTAINER_CPU_STATE = 'container.cpu.state'; +/** + * Enum value "kernel" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CONTAINER_CPU_STATE_VALUE_KERNEL = "kernel"; +/** + * Enum value "system" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When CPU is used by the system (host OS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CONTAINER_CPU_STATE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_CONTAINER_CPU_STATE}. + * + * When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CONTAINER_CPU_STATE_VALUE_USER = "user"; +/** + * The name of the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin used by the volume. + * + * @example pd.csi.storage.gke.io + * + * @note This can sometimes be referred to as a "driver" in CSI implementations. This should represent the `name` field of the GetPluginInfo RPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_CSI_PLUGIN_NAME = 'container.csi.plugin.name'; +/** + * The unique volume ID returned by the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin. + * + * @example projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk + * + * @note This can sometimes be referred to as a "volume handle" in CSI implementations. This should represent the `Volume.volume_id` field in CSI spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_CSI_VOLUME_ID = 'container.csi.volume.id'; +/** + * 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. + * + * @example a3bf90e006b2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_ID = 'container.id'; +/** + * Runtime specific image identifier. Usually a hash algorithm followed by a UUID. + * + * @example sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f + * + * @note Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect) endpoint. + * K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. + * The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_IMAGE_ID = 'container.image.id'; +/** + * Name of the image the container was built on. + * + * @example gcr.io/opentelemetry/operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_IMAGE_NAME = 'container.image.name'; +/** + * Repo digests of the container image as provided by the container runtime. + * + * @example ["example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb", "internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578"] + * + * @note [Docker](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_IMAGE_REPO_DIGESTS = 'container.image.repo_digests'; +/** + * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`. + * + * @example ["v1.27.1", "3.5.7-0"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags'; +/** + * Container labels, `` being the label name, the value being the label value. + * + * @example nginx + * + * @note For example, a docker container label `app` with value `nginx` **SHOULD** be recorded as the `container.label.app` attribute with value `"nginx"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_CONTAINER_LABEL = (key) => `container.label.${key}`; +exports.ATTR_CONTAINER_LABEL = ATTR_CONTAINER_LABEL; +/** + * Deprecated, use `container.label` instead. + * + * @example nginx + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.label`. + */ +const ATTR_CONTAINER_LABELS = (key) => `container.labels.${key}`; +exports.ATTR_CONTAINER_LABELS = ATTR_CONTAINER_LABELS; +/** + * Container name used by container runtime. + * + * @example opentelemetry-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_NAME = 'container.name'; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `container.runtime.name`. + */ +exports.ATTR_CONTAINER_RUNTIME = 'container.runtime'; +/** + * A description about the runtime which could include, for example details about the CRI/API version being used or other customisations. + * + * @example docker://19.3.1 - CRI: 1.22.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_RUNTIME_DESCRIPTION = 'container.runtime.description'; +/** + * The container runtime managing this container. + * + * @example docker + * @example containerd + * @example rkt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_RUNTIME_NAME = 'container.runtime.name'; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "1.0.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CONTAINER_RUNTIME_VERSION = 'container.runtime.version'; +/** + * The logical CPU number [0..n-1] + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CPU_LOGICAL_NUMBER = 'cpu.logical_number'; +/** + * The mode of the CPU + * + * @example user + * @example system + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CPU_MODE = 'cpu.mode'; +/** + * Enum value "idle" for attribute {@link ATTR_CPU_MODE}. + * + * Idle + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPU_MODE_VALUE_IDLE = "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_CPU_MODE}. + * + * Interrupt + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPU_MODE_VALUE_INTERRUPT = "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_CPU_MODE}. + * + * IO Wait + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPU_MODE_VALUE_IOWAIT = "iowait"; +/** + * Enum value "kernel" for attribute {@link ATTR_CPU_MODE}. + * + * Kernel + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPU_MODE_VALUE_KERNEL = "kernel"; +/** + * Enum value "nice" for attribute {@link ATTR_CPU_MODE}. + * + * Nice + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPU_MODE_VALUE_NICE = "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_CPU_MODE}. + * + * Steal + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPU_MODE_VALUE_STEAL = "steal"; +/** + * Enum value "system" for attribute {@link ATTR_CPU_MODE}. + * + * System + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPU_MODE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_CPU_MODE}. + * + * User + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPU_MODE_VALUE_USER = "user"; +/** + * Value of the garbage collector collection generation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_CPYTHON_GC_GENERATION = 'cpython.gc.generation'; +/** + * Enum value 0 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPYTHON_GC_GENERATION_VALUE_GENERATION_0 = 0; +/** + * Enum value 1 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPYTHON_GC_GENERATION_VALUE_GENERATION_1 = 1; +/** + * Enum value 2 for attribute {@link ATTR_CPYTHON_GC_GENERATION}. + * + * Generation 2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.CPYTHON_GC_GENERATION_VALUE_GENERATION_2 = 2; +/** + * Deprecated, use `cassandra.consistency.level` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.consistency.level`. + */ +exports.ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level'; +/** + * Enum value "all" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = "all"; +/** + * Enum value "any" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = "any"; +/** + * Enum value "each_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = "each_quorum"; +/** + * Enum value "local_one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = "local_one"; +/** + * Enum value "local_quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = "local_quorum"; +/** + * Enum value "local_serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = "local_serial"; +/** + * Enum value "one" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = "one"; +/** + * Enum value "quorum" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = "quorum"; +/** + * Enum value "serial" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = "serial"; +/** + * Enum value "three" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = "three"; +/** + * Enum value "two" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = "two"; +/** + * Deprecated, use `cassandra.coordinator.dc` instead. + * + * @example "us-west-2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.dc`. + */ +exports.ATTR_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc'; +/** + * Deprecated, use `cassandra.coordinator.id` instead. + * + * @example "be13faa2-8574-4d71-926d-27f16cf8a7af" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.coordinator.id`. + */ +exports.ATTR_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id'; +/** + * Deprecated, use `cassandra.query.idempotent` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.query.idempotent`. + */ +exports.ATTR_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence'; +/** + * Deprecated, use `cassandra.page.size` instead. + * + * @example 5000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.page.size`. + */ +exports.ATTR_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size'; +/** + * Deprecated, use `cassandra.speculative_execution.count` instead. + * + * @example 0 + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cassandra.speculative_execution.count`. + */ +exports.ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +exports.ATTR_DB_CASSANDRA_TABLE = 'db.cassandra.table'; +/** + * 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. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name'; +/** + * The state of a connection in the pool + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state'; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +exports.ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME = 'db.client.connections.pool.name'; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +exports.ATTR_DB_CLIENT_CONNECTIONS_STATE = 'db.client.connections.state'; +/** + * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE = "idle"; +/** + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_CLIENT_CONNECTIONS_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +exports.ATTR_DB_CONNECTION_STRING = 'db.connection_string'; +/** + * Deprecated, use `azure.client.id` instead. + * + * @example "3ba4827d-4422-483f-b59f-85b74211c11d" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.client.id`. + */ +exports.ATTR_DB_COSMOSDB_CLIENT_ID = 'db.cosmosdb.client_id'; +/** + * Deprecated, use `azure.cosmosdb.connection.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.connection.mode`. + */ +exports.ATTR_DB_COSMOSDB_CONNECTION_MODE = 'db.cosmosdb.connection_mode'; +/** + * Enum value "direct" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Direct connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = "direct"; +/** + * Enum value "gateway" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}. + * + * Gateway (HTTP) connection. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = "gateway"; +/** + * Deprecated, use `cosmosdb.consistency.level` instead. + * + * @example Eventual + * @example ConsistentPrefix + * @example BoundedStaleness + * @example Strong + * @example Session + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.consistency.level`. + */ +exports.ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL = 'db.cosmosdb.consistency_level'; +/** + * Enum value "BoundedStaleness" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = "BoundedStaleness"; +/** + * Enum value "ConsistentPrefix" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = "ConsistentPrefix"; +/** + * Enum value "Eventual" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = "Eventual"; +/** + * Enum value "Session" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = "Session"; +/** + * Enum value "Strong" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = "Strong"; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +exports.ATTR_DB_COSMOSDB_CONTAINER = 'db.cosmosdb.container'; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_DB_COSMOSDB_OPERATION_TYPE = 'db.cosmosdb.operation_type'; +/** + * Enum value "batch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH = "batch"; +/** + * Enum value "create" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE = "create"; +/** + * Enum value "delete" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE = "delete"; +/** + * Enum value "execute" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE = "execute"; +/** + * Enum value "execute_javascript" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT = "execute_javascript"; +/** + * Enum value "head" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD = "head"; +/** + * Enum value "head_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED = "head_feed"; +/** + * Enum value "invalid" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID = "invalid"; +/** + * Enum value "patch" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH = "patch"; +/** + * Enum value "query" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY = "query"; +/** + * Enum value "query_plan" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN = "query_plan"; +/** + * Enum value "read" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_READ = "read"; +/** + * Enum value "read_feed" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED = "read_feed"; +/** + * Enum value "replace" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE = "replace"; +/** + * Enum value "upsert" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT = "upsert"; +/** + * Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead. + * + * @example ["North Central US", "Australia East", "Australia Southeast"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.contacted_regions`. + */ +exports.ATTR_DB_COSMOSDB_REGIONS_CONTACTED = 'db.cosmosdb.regions_contacted'; +/** + * Deprecated, use `azure.cosmosdb.operation.request_charge` instead. + * + * @example 46.18 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.operation.request_charge`. + */ +exports.ATTR_DB_COSMOSDB_REQUEST_CHARGE = 'db.cosmosdb.request_charge'; +/** + * Deprecated, use `azure.cosmosdb.request.body.size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.request.body.size`. + */ +exports.ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH = 'db.cosmosdb.request_content_length'; +/** + * Deprecated, use `db.response.status_code` instead. + * + * @example 200 + * @example 201 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `db.response.status_code` instead. + */ +exports.ATTR_DB_COSMOSDB_STATUS_CODE = 'db.cosmosdb.status_code'; +/** + * Deprecated, use `azure.cosmosdb.response.sub_status_code` instead. + * + * @example 1000 + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.response.sub_status_code`. + */ +exports.ATTR_DB_COSMOSDB_SUB_STATUS_CODE = 'db.cosmosdb.sub_status_code'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example e9106fc68e3044f0b1475b04bf4ffd5f + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +exports.ATTR_DB_ELASTICSEARCH_CLUSTER_NAME = 'db.elasticsearch.cluster.name'; +/** + * Deprecated, use `elasticsearch.node.name` instead. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `elasticsearch.node.name`. + */ +exports.ATTR_DB_ELASTICSEARCH_NODE_NAME = 'db.elasticsearch.node.name'; +/** + * Deprecated, use `db.operation.parameter` instead. + * + * @example test-index + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.parameter`. + */ +const ATTR_DB_ELASTICSEARCH_PATH_PARTS = (key) => `db.elasticsearch.path_parts.${key}`; +exports.ATTR_DB_ELASTICSEARCH_PATH_PARTS = ATTR_DB_ELASTICSEARCH_PATH_PARTS; +/** + * Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + * + * @example "mysql-e26b99z.example.com" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. + */ +exports.ATTR_DB_INSTANCE_ID = 'db.instance.id'; +/** + * Removed, no replacement at this time. + * + * @example org.postgresql.Driver + * @example com.microsoft.sqlserver.jdbc.SQLServerDriver + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`. + */ +exports.ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection'; +/** + * Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute. + * + * @example "MSSQLSERVER" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name'; +/** + * Deprecated, use `db.namespace` instead. + * + * @example customers + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.namespace`. + */ +exports.ATTR_DB_NAME = 'db.name'; +/** + * Deprecated, use `db.operation.name` instead. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.operation.name`. + */ +exports.ATTR_DB_OPERATION = 'db.operation'; +/** + * A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note For example, a client-side maximum number of rows to read from the database + * **MAY** be recorded as the `db.operation.parameter.max_rows` attribute. + * + * `db.query.text` parameters **SHOULD** be captured using `db.query.parameter.` + * instead of `db.operation.parameter.`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_DB_OPERATION_PARAMETER = (key) => `db.operation.parameter.${key}`; +exports.ATTR_DB_OPERATION_PARAMETER = ATTR_DB_OPERATION_PARAMETER; +/** + * A database query parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @example someval + * @example 55 + * + * @note If a query parameter has no name and instead is referenced only by index, + * then `` **SHOULD** be the 0-based index. + * + * `db.query.parameter.` **SHOULD** match + * up with the parameterized placeholders present in `db.query.text`. + * + * It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * `db.query.parameter.` **SHOULD NOT** be captured on batch operations. + * + * Examples: + * + * - For a query `SELECT * FROM users where username = %s` with the parameter `"jdoe"`, + * the attribute `db.query.parameter.0` **SHOULD** be set to `"jdoe"`. + * - For a query `"SELECT * FROM users WHERE username = %(userName)s;` with parameter + * `userName = "jdoe"`, the attribute `db.query.parameter.userName` **SHOULD** be set to `"jdoe"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_DB_QUERY_PARAMETER = (key) => `db.query.parameter.${key}`; +exports.ATTR_DB_QUERY_PARAMETER = ATTR_DB_QUERY_PARAMETER; +/** + * Deprecated, use `db.namespace` instead. + * + * @example 0 + * @example 1 + * @example 15 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Uncategorized. + */ +exports.ATTR_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index'; +/** + * Number of rows returned by the operation. + * + * @example 10 + * @example 30 + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DB_RESPONSE_RETURNED_ROWS = 'db.response.returned_rows'; +/** + * Deprecated, use `db.collection.name` instead. + * + * @example "mytable" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`. + */ +exports.ATTR_DB_SQL_TABLE = 'db.sql.table'; +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. + */ +exports.ATTR_DB_STATEMENT = 'db.statement'; +/** + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.system.name`. + */ +exports.ATTR_DB_SYSTEM = 'db.system'; +/** + * Enum value "adabas" for attribute {@link ATTR_DB_SYSTEM}. + * + * Adabas (Adaptable Database System) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_ADABAS = "adabas"; +/** + * Enum value "cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `intersystems_cache` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `intersystems_cache`. + */ +exports.DB_SYSTEM_VALUE_CACHE = "cache"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Cassandra + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_CASSANDRA = "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM}. + * + * ClickHouse + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_CLICKHOUSE = "clickhouse"; +/** + * Enum value "cloudscape" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +exports.DB_SYSTEM_VALUE_CLOUDSCAPE = "cloudscape"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CockroachDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_COCKROACHDB = "cockroachdb"; +/** + * Enum value "coldfusion" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, no replacement at this time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +exports.DB_SYSTEM_VALUE_COLDFUSION = "coldfusion"; +/** + * Enum value "cosmosdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft Azure Cosmos DB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_COSMOSDB = "cosmosdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Couchbase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_COUCHBASE = "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * CouchDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_COUCHDB = "couchdb"; +/** + * Enum value "db2" for attribute {@link ATTR_DB_SYSTEM}. + * + * IBM Db2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_DB2 = "db2"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Derby + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_DERBY = "derby"; +/** + * Enum value "dynamodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon DynamoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_DYNAMODB = "dynamodb"; +/** + * Enum value "edb" for attribute {@link ATTR_DB_SYSTEM}. + * + * EnterpriseDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_EDB = "edb"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * Elasticsearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_ELASTICSEARCH = "elasticsearch"; +/** + * Enum value "filemaker" for attribute {@link ATTR_DB_SYSTEM}. + * + * FileMaker + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_FILEMAKER = "filemaker"; +/** + * Enum value "firebird" for attribute {@link ATTR_DB_SYSTEM}. + * + * Firebird + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_FIREBIRD = "firebird"; +/** + * Enum value "firstsql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, use `other_sql` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +exports.DB_SYSTEM_VALUE_FIRSTSQL = "firstsql"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Geode + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_GEODE = "geode"; +/** + * Enum value "h2" for attribute {@link ATTR_DB_SYSTEM}. + * + * H2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_H2 = "h2"; +/** + * Enum value "hanadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP HANA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_HANADB = "hanadb"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache HBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_HBASE = "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Apache Hive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_HIVE = "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM}. + * + * HyperSQL DataBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_HSQLDB = "hsqldb"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InfluxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_INFLUXDB = "influxdb"; +/** + * Enum value "informix" for attribute {@link ATTR_DB_SYSTEM}. + * + * Informix + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_INFORMIX = "informix"; +/** + * Enum value "ingres" for attribute {@link ATTR_DB_SYSTEM}. + * + * Ingres + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_INGRES = "ingres"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * InstantDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_INSTANTDB = "instantdb"; +/** + * Enum value "interbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_INTERBASE = "interbase"; +/** + * Enum value "intersystems_cache" for attribute {@link ATTR_DB_SYSTEM}. + * + * InterSystems Caché + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE = "intersystems_cache"; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MariaDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_MARIADB = "mariadb"; +/** + * Enum value "maxdb" for attribute {@link ATTR_DB_SYSTEM}. + * + * SAP MaxDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_MAXDB = "maxdb"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM}. + * + * Memcached + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_MEMCACHED = "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM}. + * + * MongoDB + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_MONGODB = "mongodb"; +/** + * Enum value "mssql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Microsoft SQL Server + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_MSSQL = "mssql"; +/** + * Enum value "mssqlcompact" for attribute {@link ATTR_DB_SYSTEM}. + * + * Deprecated, Microsoft SQL Server Compact is discontinued. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `other_sql`. + */ +exports.DB_SYSTEM_VALUE_MSSQLCOMPACT = "mssqlcompact"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM}. + * + * MySQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_MYSQL = "mysql"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM}. + * + * Neo4j + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_NEO4J = "neo4j"; +/** + * Enum value "netezza" for attribute {@link ATTR_DB_SYSTEM}. + * + * Netezza + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_NETEZZA = "netezza"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM}. + * + * OpenSearch + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_OPENSEARCH = "opensearch"; +/** + * Enum value "oracle" for attribute {@link ATTR_DB_SYSTEM}. + * + * Oracle Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_ORACLE = "oracle"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM}. + * + * Some other SQL database. Fallback only. See notes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_OTHER_SQL = "other_sql"; +/** + * Enum value "pervasive" for attribute {@link ATTR_DB_SYSTEM}. + * + * Pervasive PSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_PERVASIVE = "pervasive"; +/** + * Enum value "pointbase" for attribute {@link ATTR_DB_SYSTEM}. + * + * PointBase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_POINTBASE = "pointbase"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM}. + * + * PostgreSQL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_POSTGRESQL = "postgresql"; +/** + * Enum value "progress" for attribute {@link ATTR_DB_SYSTEM}. + * + * Progress Database + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_PROGRESS = "progress"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM}. + * + * Redis + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_REDIS = "redis"; +/** + * Enum value "redshift" for attribute {@link ATTR_DB_SYSTEM}. + * + * Amazon Redshift + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_REDSHIFT = "redshift"; +/** + * Enum value "spanner" for attribute {@link ATTR_DB_SYSTEM}. + * + * Cloud Spanner + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_SPANNER = "spanner"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM}. + * + * SQLite + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_SQLITE = "sqlite"; +/** + * Enum value "sybase" for attribute {@link ATTR_DB_SYSTEM}. + * + * Sybase + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_SYBASE = "sybase"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM}. + * + * Teradata + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_TERADATA = "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM}. + * + * Trino + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_TRINO = "trino"; +/** + * Enum value "vertica" for attribute {@link ATTR_DB_SYSTEM}. + * + * Vertica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_VALUE_VERTICA = "vertica"; +/** + * Enum value "actian.ingres" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Actian Ingres](https://www.actian.com/databases/ingres/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_ACTIAN_INGRES = "actian.ingres"; +/** + * Enum value "aws.dynamodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_AWS_DYNAMODB = "aws.dynamodb"; +/** + * Enum value "aws.redshift" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Amazon Redshift](https://aws.amazon.com/redshift/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_AWS_REDSHIFT = "aws.redshift"; +/** + * Enum value "azure.cosmosdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_AZURE_COSMOSDB = "azure.cosmosdb"; +/** + * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Cassandra](https://cassandra.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_CASSANDRA = "cassandra"; +/** + * Enum value "clickhouse" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [ClickHouse](https://clickhouse.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_CLICKHOUSE = "clickhouse"; +/** + * Enum value "cockroachdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [CockroachDB](https://www.cockroachlabs.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_COCKROACHDB = "cockroachdb"; +/** + * Enum value "couchbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Couchbase](https://www.couchbase.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_COUCHBASE = "couchbase"; +/** + * Enum value "couchdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache CouchDB](https://couchdb.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_COUCHDB = "couchdb"; +/** + * Enum value "derby" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Derby](https://db.apache.org/derby/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_DERBY = "derby"; +/** + * Enum value "elasticsearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Elasticsearch](https://www.elastic.co/elasticsearch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_ELASTICSEARCH = "elasticsearch"; +/** + * Enum value "firebirdsql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Firebird](https://www.firebirdsql.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_FIREBIRDSQL = "firebirdsql"; +/** + * Enum value "gcp.spanner" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Google Cloud Spanner](https://cloud.google.com/spanner) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_GCP_SPANNER = "gcp.spanner"; +/** + * Enum value "geode" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Geode](https://geode.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_GEODE = "geode"; +/** + * Enum value "h2database" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [H2 Database](https://h2database.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_H2DATABASE = "h2database"; +/** + * Enum value "hbase" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache HBase](https://hbase.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_HBASE = "hbase"; +/** + * Enum value "hive" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Apache Hive](https://hive.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_HIVE = "hive"; +/** + * Enum value "hsqldb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [HyperSQL Database](https://hsqldb.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_HSQLDB = "hsqldb"; +/** + * Enum value "ibm.db2" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Db2](https://www.ibm.com/db2) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_IBM_DB2 = "ibm.db2"; +/** + * Enum value "ibm.informix" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Informix](https://www.ibm.com/products/informix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_IBM_INFORMIX = "ibm.informix"; +/** + * Enum value "ibm.netezza" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [IBM Netezza](https://www.ibm.com/products/netezza) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_IBM_NETEZZA = "ibm.netezza"; +/** + * Enum value "influxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InfluxDB](https://www.influxdata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_INFLUXDB = "influxdb"; +/** + * Enum value "instantdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Instant](https://www.instantdb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_INSTANTDB = "instantdb"; +/** + * Enum value "intersystems.cache" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [InterSystems Caché](https://www.intersystems.com/products/cache/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_INTERSYSTEMS_CACHE = "intersystems.cache"; +/** + * Enum value "memcached" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Memcached](https://memcached.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_MEMCACHED = "memcached"; +/** + * Enum value "mongodb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MongoDB](https://www.mongodb.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_MONGODB = "mongodb"; +/** + * Enum value "neo4j" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Neo4j](https://neo4j.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_NEO4J = "neo4j"; +/** + * Enum value "opensearch" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [OpenSearch](https://opensearch.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_OPENSEARCH = "opensearch"; +/** + * Enum value "oracle.db" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Oracle Database](https://www.oracle.com/database/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_ORACLE_DB = "oracle.db"; +/** + * Enum value "other_sql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * Some other SQL database. Fallback only. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_OTHER_SQL = "other_sql"; +/** + * Enum value "redis" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Redis](https://redis.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_REDIS = "redis"; +/** + * Enum value "sap.hana" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_SAP_HANA = "sap.hana"; +/** + * Enum value "sap.maxdb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SAP MaxDB](https://maxdb.sap.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_SAP_MAXDB = "sap.maxdb"; +/** + * Enum value "softwareag.adabas" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_SOFTWAREAG_ADABAS = "softwareag.adabas"; +/** + * Enum value "sqlite" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [SQLite](https://www.sqlite.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_SQLITE = "sqlite"; +/** + * Enum value "teradata" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Teradata](https://www.teradata.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_TERADATA = "teradata"; +/** + * Enum value "trino" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Trino](https://trino.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DB_SYSTEM_NAME_VALUE_TRINO = "trino"; +/** + * Deprecated, no replacement at this time. + * + * @example readonly_user + * @example reporting_user + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_DB_USER = 'db.user'; +/** + * Deprecated, use `deployment.environment.name` instead. + * + * @example staging + * @example production + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `deployment.environment.name`. + */ +exports.ATTR_DEPLOYMENT_ENVIRONMENT = 'deployment.environment'; +/** + * Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @example staging + * @example production + * + * @note `deployment.environment.name` does not affect the uniqueness constraints defined through + * the `service.namespace`, `service.name` and `service.instance.id` resource attributes. + * This implies that resources carrying the following attribute combinations **MUST** be + * considered to be identifying the same service: + * + * - `service.name=frontend`, `deployment.environment.name=production` + * - `service.name=frontend`, `deployment.environment.name=staging`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DEPLOYMENT_ENVIRONMENT_NAME = 'deployment.environment.name'; +/** + * The id of the deployment. + * + * @example 1208 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DEPLOYMENT_ID = 'deployment.id'; +/** + * The name of the deployment. + * + * @example deploy my app + * @example deploy-frontend + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DEPLOYMENT_NAME = 'deployment.name'; +/** + * The status of the deployment. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DEPLOYMENT_STATUS = 'deployment.status'; +/** + * Enum value "failed" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DEPLOYMENT_STATUS_VALUE_FAILED = "failed"; +/** + * Enum value "succeeded" for attribute {@link ATTR_DEPLOYMENT_STATUS}. + * + * succeeded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DEPLOYMENT_STATUS_VALUE_SUCCEEDED = "succeeded"; +/** + * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example destination.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the source side, and when communicating through an intermediary, `destination.address` **SHOULD** represent the destination address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DESTINATION_ADDRESS = 'destination.address'; +/** + * Destination port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DESTINATION_PORT = 'destination.port'; +/** + * A unique identifier representing the device + * + * @example 123456789012345 + * @example 01:23:45:67:89:AB + * + * @note Its value **SHOULD** be identical for all apps on a device and it **SHOULD NOT** change if an app is uninstalled and re-installed. + * However, it might be resettable by the user for all apps on a device. + * Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) **MAY** be used as values. + * + * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). + * + * > [!WARNING]> This attribute may contain sensitive (PII) information. 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.> Due to these reasons, this identifier is not recommended for consumer applications and will likely result in rejection from both Google Play and App Store. + * > However, it may be appropriate for specific enterprise scenarios, such as kiosk devices or enterprise-managed devices, with appropriate compliance clearance. + * > Any instrumentation providing this identifier **> MUST**> implement it as an opt-in feature.> See [`app.installation.id`](/docs/registry/attributes/app.md#app-installation-id)> for a more privacy-preserving alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DEVICE_ID = 'device.id'; +/** + * The name of the device manufacturer + * + * @example Apple + * @example Samsung + * + * @note The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps **SHOULD** hardcode the value `Apple`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DEVICE_MANUFACTURER = 'device.manufacturer'; +/** + * The model identifier for the device + * + * @example iPhone3,4 + * @example SM-G920F + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier'; +/** + * The marketing name for the device model + * + * @example iPhone 6s Plus + * @example Samsung Galaxy S6 + * + * @note It's recommended this value represents a human-readable version of the device model rather than a machine-readable alternative. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DEVICE_MODEL_NAME = 'device.model.name'; +/** + * The disk IO operation direction. + * + * @example read + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DISK_IO_DIRECTION = 'disk.io.direction'; +/** + * Enum value "read" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DISK_IO_DIRECTION_VALUE_READ = "read"; +/** + * Enum value "write" for attribute {@link ATTR_DISK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.DISK_IO_DIRECTION_VALUE_WRITE = "write"; +/** + * The list of IPv4 or IPv6 addresses resolved during DNS lookup. + * + * @example ["10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DNS_ANSWERS = 'dns.answers'; +/** + * The name being queried. + * + * @example www.example.com + * @example opentelemetry.io + * + * @note The name represents the queried domain name as it appears in the DNS query without any additional normalization. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_DNS_QUESTION_NAME = 'dns.question.name'; +/** + * Represents the human-readable identifier of the node/instance to which a request was routed. + * + * @example instance-0000000001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ELASTICSEARCH_NODE_NAME = 'elasticsearch.node.name'; +/** + * Unique identifier of an end user in the system. It maybe a username, email address, or other identifier. + * + * @example username + * + * @note Unique identifier of an end user in the system. + * + * > [!Warning] + * > This field contains sensitive (PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ENDUSER_ID = 'enduser.id'; +/** + * Pseudonymous identifier of an end user. This identifier should be a random value that is not directly linked or associated with the end user's actual identity. + * + * @example QdH5CAWJgqVT4rOr0qtumf + * + * @note Pseudonymous identifier of an end user. + * + * > [!Warning] + * > This field contains sensitive (linkable PII) information. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ENDUSER_PSEUDO_ID = 'enduser.pseudo.id'; +/** + * Deprecated, use `user.roles` instead. + * + * @example "admin" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use `user.roles` instead. + */ +exports.ATTR_ENDUSER_ROLE = 'enduser.role'; +/** + * Deprecated, no replacement at this time. + * + * @example "read:message, write:files" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_ENDUSER_SCOPE = 'enduser.scope'; +/** + * A message providing more detail about an error in human-readable form. + * + * @example Unexpected input type: string + * @example The user has exceeded their storage quota + * + * @note `error.message` should provide additional context and detail about an error. + * It is NOT **RECOMMENDED** to duplicate the value of `error.type` in `error.message`. + * It is also NOT **RECOMMENDED** to duplicate the value of `exception.message` in `error.message`. + * + * `error.message` is NOT **RECOMMENDED** for metrics or spans due to its unbounded cardinality and overlap with span status. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ERROR_MESSAGE = 'error.message'; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated The value of this attribute **MUST** now be set as the value of the EventName field on the LogRecord to indicate that the LogRecord represents an Event. + */ +exports.ATTR_EVENT_NAME = 'event.name'; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_COLDSTART = 'faas.coldstart'; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @example "0/5 * * * ? *" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_CRON = 'faas.cron'; +/** + * 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. + * + * @example myBucketName + * @example myDbName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection'; +/** + * 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. + * + * @example myFile.txt + * @example myTableName + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_DOCUMENT_NAME = 'faas.document.name'; +/** + * Describes the type of the operation that was performed on the data. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_DOCUMENT_OPERATION = 'faas.document.operation'; +/** + * Enum value "delete" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is deleted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_DOCUMENT_OPERATION_VALUE_DELETE = "delete"; +/** + * Enum value "edit" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When an object is modified. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_DOCUMENT_OPERATION_VALUE_EDIT = "edit"; +/** + * Enum value "insert" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}. + * + * When a new object is created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_DOCUMENT_OPERATION_VALUE_INSERT = "insert"; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_DOCUMENT_TIME = 'faas.document.time'; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de + * + * @note - **AWS Lambda:** Use the (full) log stream name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_INSTANCE = 'faas.instance'; +/** + * The invocation ID of the current function invocation. + * + * @example "af9d5aa4-a685-4c5f-a22b-444f80b3cc28" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_INVOCATION_ID = 'faas.invocation_id'; +/** + * The name of the invoked function. + * + * @example "my-function" + * + * @note **SHOULD** be equal to the `faas.name` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_INVOKED_NAME = 'faas.invoked_name'; +/** + * The cloud provider of the invoked function. + * + * @note **SHOULD** be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider'; +/** + * Enum value "alibaba_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Alibaba Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * Enum value "aws" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Amazon Web Services + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_INVOKED_PROVIDER_VALUE_AWS = "aws"; +/** + * Enum value "azure" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Microsoft Azure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_INVOKED_PROVIDER_VALUE_AZURE = "azure"; +/** + * Enum value "gcp" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Google Cloud Platform + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_INVOKED_PROVIDER_VALUE_GCP = "gcp"; +/** + * Enum value "tencent_cloud" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}. + * + * Tencent Cloud + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD = "tencent_cloud"; +/** + * The cloud region of the invoked function. + * + * @example "eu-central-1" + * + * @note **SHOULD** be equal to the `cloud.region` resource attribute of the invoked function. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_INVOKED_REGION = 'faas.invoked_region'; +/** + * The amount of memory available to the serverless function converted to Bytes. + * + * @example 134217728 + * + * @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 (which must be multiplied by 1,048,576). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_MAX_MEMORY = 'faas.max_memory'; +/** + * The name of the single function that this runtime instance executes. + * + * @example my-function + * @example myazurefunctionapp/some-function-name + * + * @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.name`](/docs/general/attributes.md#source-code-attributes) + * span attributes). + * + * For some cloud providers, the above definition is ambiguous. The following + * definition of function name **MUST** be used for this attribute + * (and consequently the span name) for the listed cloud providers/products: + * + * - **Azure:** The full name `/`, i.e., function app name + * followed by a forward slash followed by the function name (this form + * can also be seen in the resource JSON for the function). + * This means that a span attribute **MUST** be used, as an Azure function + * app can host multiple functions that would usually share + * a TracerProvider (see also the `cloud.resource_id` attribute). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_NAME = 'faas.name'; +/** + * 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). + * + * @example "2020-01-23T13:47:06Z" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_TIME = 'faas.time'; +/** + * Type of the trigger which caused this function invocation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_TRIGGER = 'faas.trigger'; +/** + * Enum value "datasource" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A response to some data source operation such as a database or filesystem read/write + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_TRIGGER_VALUE_DATASOURCE = "datasource"; +/** + * Enum value "http" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * To provide an answer to an inbound HTTP request + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_TRIGGER_VALUE_HTTP = "http"; +/** + * Enum value "other" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * If none of the others apply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_TRIGGER_VALUE_OTHER = "other"; +/** + * Enum value "pubsub" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is set to be executed when messages are sent to a messaging system + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_TRIGGER_VALUE_PUBSUB = "pubsub"; +/** + * Enum value "timer" for attribute {@link ATTR_FAAS_TRIGGER}. + * + * A function is scheduled to be executed regularly + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FAAS_TRIGGER_VALUE_TIMER = "timer"; +/** + * The immutable version of the function being executed. + * + * @example 26 + * @example pinkfroid-00002 + * + * @note Depending on the cloud provider and platform, use: + * + * - **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + * (an integer represented as a decimal string). + * - **Google Cloud Run (Services):** The [revision](https://cloud.google.com/run/docs/managing/revisions) + * (i.e., the function name plus the revision suffix). + * - **Google Cloud Functions:** The value of the + * [`K_REVISION` environment variable](https://cloud.google.com/run/docs/container-contract#services-env-vars). + * - **Azure Functions:** Not applicable. Do not set this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FAAS_VERSION = 'faas.version'; +/** + * The unique identifier for the flag evaluation context. For example, the targeting key. + * + * @example 5157782b-2203-4c80-a857-dbbd5e7761db + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FEATURE_FLAG_CONTEXT_ID = 'feature_flag.context.id'; +/** + * Deprecated, use `error.message` instead. + * + * @example Flag `header-color` expected type `string` but found type `number` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `error.message`. + */ +exports.ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE = 'feature_flag.evaluation.error.message'; +/** + * Deprecated, use `feature_flag.result.reason` instead. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.reason`. + */ +exports.ATTR_FEATURE_FLAG_EVALUATION_REASON = 'feature_flag.evaluation.reason'; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED = "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT = "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED = "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR = "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT = "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE = "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC = "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH = "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN = "unknown"; +/** + * The lookup key of the feature flag. + * + * @example logo-color + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FEATURE_FLAG_KEY = 'feature_flag.key'; +/** + * Identifies the feature flag provider. + * + * @example Flag Manager + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FEATURE_FLAG_PROVIDER_NAME = 'feature_flag.provider.name'; +/** + * The reason code which shows how a feature flag value was determined. + * + * @example static + * @example targeting_match + * @example error + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FEATURE_FLAG_RESULT_REASON = 'feature_flag.result.reason'; +/** + * Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was retrieved from cache. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_RESULT_REASON_VALUE_CACHED = "cached"; +/** + * Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_RESULT_REASON_VALUE_DEFAULT = "default"; +/** + * Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of the flag being disabled in the management system. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_RESULT_REASON_VALUE_DISABLED = "disabled"; +/** + * Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of an error. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_RESULT_REASON_VALUE_ERROR = "error"; +/** + * Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of pseudorandom assignment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_RESULT_REASON_VALUE_SPLIT = "split"; +/** + * Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is non-authoritative or possibly out of date + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_RESULT_REASON_VALUE_STALE = "stale"; +/** + * Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value is static (no dynamic evaluation). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_RESULT_REASON_VALUE_STATIC = "static"; +/** + * Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_RESULT_REASON_VALUE_TARGETING_MATCH = "targeting_match"; +/** + * Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}. + * + * The reason for the resolved value could not be determined. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.FEATURE_FLAG_RESULT_REASON_VALUE_UNKNOWN = "unknown"; +/** + * The evaluated value of the feature flag. + * + * @example #ff0000 + * @example true + * @example 3 + * + * @note With some feature flag providers, feature flag results can be quite large or contain private or sensitive details. + * Because of this, `feature_flag.result.variant` is often the preferred attribute if it is available. + * + * It may be desirable to redact or otherwise limit the size and scope of `feature_flag.result.value` if possible. + * Because the evaluated flag value is unstructured and may be any type, it is left to the instrumentation author to determine how best to achieve this. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FEATURE_FLAG_RESULT_VALUE = 'feature_flag.result.value'; +/** + * A semantic identifier for an evaluated flag value. + * + * @example red + * @example true + * @example on + * + * @note A semantic identifier, commonly referred to as a variant, provides a means + * for referring to a value without including the value itself. This can + * provide additional context for understanding the meaning behind a value. + * For example, the variant `red` maybe be used for the value `#c05543`. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FEATURE_FLAG_RESULT_VARIANT = 'feature_flag.result.variant'; +/** + * The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs. + * + * @example proj-1 + * @example ab98sgs + * @example service1/dev + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FEATURE_FLAG_SET_ID = 'feature_flag.set.id'; +/** + * Deprecated, use `feature_flag.result.variant` instead. + * + * @example red + * @example true + * @example on + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `feature_flag.result.variant`. + */ +exports.ATTR_FEATURE_FLAG_VARIANT = 'feature_flag.variant'; +/** + * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset. + * + * @example 1 + * @example 01ABCDEF + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FEATURE_FLAG_VERSION = 'feature_flag.version'; +/** + * Time when the file was last accessed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_ACCESSED = 'file.accessed'; +/** + * Array of file attributes. + * + * @example ["readonly", "hidden"] + * + * @note Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected for this attribute: `archive`, `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, `write`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_ATTRIBUTES = 'file.attributes'; +/** + * Time when the file attributes or metadata was last changed, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note `file.changed` captures the time when any of the file's properties or attributes (including the content) are changed, while `file.modified` captures the timestamp when the file content is modified. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_CHANGED = 'file.changed'; +/** + * Time when the file was created, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_CREATED = 'file.created'; +/** + * Directory where the file is located. It should include the drive letter, when appropriate. + * + * @example /home/user + * @example C:\\Program Files\\MyApp + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_DIRECTORY = 'file.directory'; +/** + * File extension, excluding the leading dot. + * + * @example png + * @example gz + * + * @note When the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_EXTENSION = 'file.extension'; +/** + * Name of the fork. A fork is additional data associated with a filesystem object. + * + * @example Zone.Identifier + * + * @note On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. + * On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: C:\\path\\to\\filename.extension:some_fork_name, and some_fork_name is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_FORK_NAME = 'file.fork_name'; +/** + * Primary Group ID (GID) of the file. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_GROUP_ID = 'file.group.id'; +/** + * Primary group name of the file. + * + * @example users + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_GROUP_NAME = 'file.group.name'; +/** + * Inode representing the file in the filesystem. + * + * @example 256383 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_INODE = 'file.inode'; +/** + * Mode of the file in octal representation. + * + * @example 0640 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_MODE = 'file.mode'; +/** + * Time when the file content was last modified, in ISO 8601 format. + * + * @example 2021-01-01T12:00:00Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_MODIFIED = 'file.modified'; +/** + * Name of the file including the extension, without the directory. + * + * @example example.png + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_NAME = 'file.name'; +/** + * The user ID (UID) or security identifier (SID) of the file owner. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_OWNER_ID = 'file.owner.id'; +/** + * Username of the file owner. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_OWNER_NAME = 'file.owner.name'; +/** + * Full path to the file, including the file name. It should include the drive letter, when appropriate. + * + * @example /home/alice/example.png + * @example C:\\Program Files\\MyApp\\myapp.exe + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_PATH = 'file.path'; +/** + * File size in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_SIZE = 'file.size'; +/** + * Path to the target of a symbolic link. + * + * @example /usr/bin/python3 + * + * @note This attribute is only applicable to symbolic links. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH = 'file.symbolic_link.target_path'; +/** + * The container within GCP where the AppHub application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_APPLICATION_CONTAINER = 'gcp.apphub.application.container'; +/** + * The name of the application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_APPLICATION_ID = 'gcp.apphub.application.id'; +/** + * The GCP zone or region where the application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_APPLICATION_LOCATION = 'gcp.apphub.application.location'; +/** + * Criticality of a service indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE = 'gcp.apphub.service.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Environment of a service is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub.service.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_SERVICE_ID = 'gcp.apphub.service.id'; +/** + * Criticality of a workload indicates its importance to the business. + * + * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub.workload.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Environment of a workload is the stage of a software lifecycle. + * + * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub.workload.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_WORKLOAD_ID = 'gcp.apphub.workload.id'; +/** + * The container within GCP where the AppHub destination application is defined. + * + * @example projects/my-container-project + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_DESTINATION_APPLICATION_CONTAINER = 'gcp.apphub_destination.application.container'; +/** + * The name of the destination application as configured in AppHub. + * + * @example my-application + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_DESTINATION_APPLICATION_ID = 'gcp.apphub_destination.application.id'; +/** + * The GCP zone or region where the destination application is defined. + * + * @example us-central1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_DESTINATION_APPLICATION_LOCATION = 'gcp.apphub_destination.application.location'; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE = 'gcp.apphub_destination.service.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Software lifecycle stage of a destination service as defined [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub_destination.service.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the destination service as configured in AppHub. + * + * @example my-service + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_DESTINATION_SERVICE_ID = 'gcp.apphub_destination.service.id'; +/** + * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub_destination.workload.criticality_type'; +/** + * Enum value "HIGH" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * High impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = "HIGH"; +/** + * Enum value "LOW" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Low impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = "LOW"; +/** + * Enum value "MEDIUM" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Medium impact. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = "MEDIUM"; +/** + * Enum value "MISSION_CRITICAL" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}. + * + * Mission critical service. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = "MISSION_CRITICAL"; +/** + * Environment of a destination workload is the stage of a software lifecycle as provided in the [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub_destination.workload.environment_type'; +/** + * Enum value "DEVELOPMENT" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Development environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = "DEVELOPMENT"; +/** + * Enum value "PRODUCTION" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Production environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = "PRODUCTION"; +/** + * Enum value "STAGING" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Staging environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = "STAGING"; +/** + * Enum value "TEST" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}. + * + * Test environment. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = "TEST"; +/** + * The name of the destination workload as configured in AppHub. + * + * @example my-workload + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ID = 'gcp.apphub_destination.workload.id'; +/** + * Identifies the Google Cloud service for which the official client library is intended. + * + * @example appengine + * @example run + * @example firestore + * @example alloydb + * @example spanner + * + * @note Intended to be a stable identifier for Google Cloud client libraries that is uniform across implementation languages. The value should be derived from the canonical service domain for the service; for example, 'foo.googleapis.com' should result in a value of 'foo'. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_CLIENT_SERVICE = 'gcp.client.service'; +/** + * The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example job-name-xxxx + * @example sample-job-mdw84 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_CLOUD_RUN_JOB_EXECUTION = 'gcp.cloud_run.job.execution'; +/** + * The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. + * + * @example 0 + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX = 'gcp.cloud_run.job.task_index'; +/** + * The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm). + * + * @example my-host1234.example.com + * @example sample-vm.us-west1-b.c.my-project.internal + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_GCE_INSTANCE_HOSTNAME = 'gcp.gce.instance.hostname'; +/** + * The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names). + * + * @example instance-1 + * @example my-vm-name + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GCP_GCE_INSTANCE_NAME = 'gcp.gce.instance.name'; +/** + * Free-form description of the GenAI agent provided by the application. + * + * @example Helps with math problems + * @example Generates fiction stories + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_AGENT_DESCRIPTION = 'gen_ai.agent.description'; +/** + * The unique identifier of the GenAI agent. + * + * @example asst_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_AGENT_ID = 'gen_ai.agent.id'; +/** + * Human-readable name of the GenAI agent provided by the application. + * + * @example Math Tutor + * @example Fiction Writer + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_AGENT_NAME = 'gen_ai.agent.name'; +/** + * Deprecated, use Event API to report completions contents. + * + * @example [{'role': 'assistant', 'content': 'The capital of France is Paris.'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_GEN_AI_COMPLETION = 'gen_ai.completion'; +/** + * The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation. + * + * @example conv_5j66UpCpwteGg4YSxUnt7lPY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_CONVERSATION_ID = 'gen_ai.conversation.id'; +/** + * The data source identifier. + * + * @example H7STPQYOND + * + * @note Data sources are used by AI agents and RAG applications to store grounding data. A data source may be an external database, object store, document collection, website, or any other storage system used by the GenAI agent or application. The `gen_ai.data_source.id` **SHOULD** match the identifier used by the GenAI system rather than a name specific to the external storage, such as a database or object store. Semantic conventions referencing `gen_ai.data_source.id` **MAY** also leverage additional attributes, such as `db.*`, to further identify and describe the data source. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_DATA_SOURCE_ID = 'gen_ai.data_source.id'; +/** + * The number of dimensions the resulting output embeddings should have. + * + * @example 512 + * @example 1024 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT = 'gen_ai.embeddings.dimension.count'; +/** + * A free-form explanation for the assigned score provided by the evaluator. + * + * @example The response is factually accurate but lacks sufficient detail to fully address the question. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_EVALUATION_EXPLANATION = 'gen_ai.evaluation.explanation'; +/** + * The name of the evaluation metric used for the GenAI response. + * + * @example Relevance + * @example IntentResolution + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_EVALUATION_NAME = 'gen_ai.evaluation.name'; +/** + * Human readable label for evaluation. + * + * @example relevant + * @example not_relevant + * @example correct + * @example incorrect + * @example pass + * @example fail + * + * @note This attribute provides a human-readable interpretation of the evaluation score produced by an evaluator. For example, a score value of 1 could mean "relevant" in one evaluation system and "not relevant" in another, depending on the scoring range and evaluator. The label **SHOULD** have low cardinality. Possible values depend on the evaluation metric and evaluator used; implementations **SHOULD** document the possible values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_EVALUATION_SCORE_LABEL = 'gen_ai.evaluation.score.label'; +/** + * The evaluation score returned by the evaluator. + * + * @example 4.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_EVALUATION_SCORE_VALUE = 'gen_ai.evaluation.score.value'; +/** + * The chat history provided to the model as an input. + * + * @example [ + * { + * "role": "user", + * "parts": [ + * { + * "type": "text", + * "content": "Weather in Paris?" + * } + * ] + * }, + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "tool_call", + * "id": "call_VSPygqKTWdrhaFErNvMV18Yl", + * "name": "get_weather", + * "arguments": { + * "location": "Paris" + * } + * } + * ] + * }, + * { + * "role": "tool", + * "parts": [ + * { + * "type": "tool_call_response", + * "id": " call_VSPygqKTWdrhaFErNvMV18Yl", + * "result": "rainy, 57°F" + * } + * ] + * } + * ] + * + * @note Instrumentations **MUST** follow [Input messages JSON schema](/docs/gen-ai/gen-ai-input-messages.json). + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Messages **MUST** be provided in the order they were sent to the model. + * Instrumentations **MAY** provide a way for users to filter or truncate + * input messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_INPUT_MESSAGES = 'gen_ai.input.messages'; +/** + * Deprecated, use `gen_ai.output.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.output.type`. + */ +exports.ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT = 'gen_ai.openai.request.response_format'; +/** + * Enum value "json_object" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON object response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT = "json_object"; +/** + * Enum value "json_schema" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * JSON schema response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA = "json_schema"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}. + * + * Text response format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT = "text"; +/** + * Deprecated, use `gen_ai.request.seed`. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.request.seed`. + */ +exports.ATTR_GEN_AI_OPENAI_REQUEST_SEED = 'gen_ai.openai.request.seed'; +/** + * Deprecated, use `openai.request.service_tier`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.request.service_tier`. + */ +exports.ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER = 'gen_ai.openai.request.service_tier'; +/** + * Enum value "auto" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = "auto"; +/** + * Enum value "default" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = "default"; +/** + * Deprecated, use `openai.response.service_tier`. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.service_tier`. + */ +exports.ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER = 'gen_ai.openai.response.service_tier'; +/** + * Deprecated, use `openai.response.system_fingerprint`. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `openai.response.system_fingerprint`. + */ +exports.ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'gen_ai.openai.response.system_fingerprint'; +/** + * The name of the operation being performed. + * + * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name'; +/** + * Enum value "chat" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPERATION_NAME_VALUE_CHAT = "chat"; +/** + * Enum value "create_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Create GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT = "create_agent"; +/** + * Enum value "embeddings" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS = "embeddings"; +/** + * Enum value "execute_tool" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Execute a tool + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL = "execute_tool"; +/** + * Enum value "generate_content" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPERATION_NAME_VALUE_GENERATE_CONTENT = "generate_content"; +/** + * Enum value "invoke_agent" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Invoke GenAI agent + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT = "invoke_agent"; +/** + * Enum value "text_completion" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION = "text_completion"; +/** + * Messages returned by the model where each message represents a specific model response (choice, candidate). + * + * @example [ + * { + * "role": "assistant", + * "parts": [ + * { + * "type": "text", + * "content": "The weather in Paris is currently rainy with a temperature of 57°F." + * } + * ], + * "finish_reason": "stop" + * } + * ] + * + * @note Instrumentations **MUST** follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json) + * + * Each message represents a single output choice/candidate generated by + * the model. Each message corresponds to exactly one generation + * (choice/candidate) and vice versa - one choice cannot be split across + * multiple messages or one message cannot contain parts from multiple choices. + * + * When the attribute is recorded on events, it **MUST** be recorded in structured + * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * output messages. + * + * > [!Warning] + * > This attribute is likely to contain sensitive information including user/PII data. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_OUTPUT_MESSAGES = 'gen_ai.output.messages'; +/** + * Represents the content type requested by the client. + * + * @note This attribute **SHOULD** be used when the client requests output of a specific type. The model may return zero or more outputs of this type. + * This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file. + * Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_OUTPUT_TYPE = 'gen_ai.output.type'; +/** + * Enum value "image" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Image + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OUTPUT_TYPE_VALUE_IMAGE = "image"; +/** + * Enum value "json" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * JSON object with known or unknown schema + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OUTPUT_TYPE_VALUE_JSON = "json"; +/** + * Enum value "speech" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Speech + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OUTPUT_TYPE_VALUE_SPEECH = "speech"; +/** + * Enum value "text" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}. + * + * Plain text + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_OUTPUT_TYPE_VALUE_TEXT = "text"; +/** + * Deprecated, use Event API to report prompt contents. + * + * @example [{'role': 'user', 'content': 'What is the capital of France?'}] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.ATTR_GEN_AI_PROMPT = 'gen_ai.prompt'; +/** + * The name of the prompt that uniquely identifies it. + * + * @example analyze-code + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_PROMPT_NAME = 'gen_ai.prompt.name'; +/** + * The Generative AI provider as identified by the client or server instrumentation. + * + * @note The attribute **SHOULD** be set based on the instrumentation's best + * knowledge and may differ from the actual model provider. + * + * Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms + * are accessible using the OpenAI REST API and corresponding client libraries, + * but may proxy or host models from different providers. + * + * The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address` + * attributes may help identify the actual system in use. + * + * The `gen_ai.provider.name` attribute acts as a discriminator that + * identifies the GenAI telemetry format flavor specific to that provider + * within GenAI semantic conventions. + * It **SHOULD** be set consistently with provider-specific attributes and signals. + * For example, GenAI spans, metrics, and events related to AWS Bedrock + * should have the `gen_ai.provider.name` set to `aws.bedrock` and include + * applicable `aws.bedrock.*` attributes and are not expected to include + * `openai.*` attributes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_PROVIDER_NAME = 'gen_ai.provider.name'; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Anthropic](https://www.anthropic.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_ANTHROPIC = "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [AWS Bedrock](https://aws.amazon.com/bedrock) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_AWS_BEDROCK = "aws.bedrock"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_INFERENCE = "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_OPENAI = "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Cohere](https://cohere.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_COHERE = "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [DeepSeek](https://www.deepseek.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_DEEPSEEK = "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Gemini](https://cloud.google.com/products/gemini) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_GCP_GEMINI = "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_GCP_GEN_AI = "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Vertex AI](https://cloud.google.com/vertex-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_GCP_VERTEX_AI = "gcp.vertex_ai"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Groq](https://groq.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_GROQ = "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_IBM_WATSONX_AI = "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Mistral AI](https://mistral.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_MISTRAL_AI = "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [OpenAI](https://openai.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_OPENAI = "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [Perplexity](https://www.perplexity.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_PERPLEXITY = "perplexity"; +/** + * Enum value "x_ai" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}. + * + * [xAI](https://x.ai/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_PROVIDER_NAME_VALUE_X_AI = "x_ai"; +/** + * The target number of candidate completions to return. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_CHOICE_COUNT = 'gen_ai.request.choice.count'; +/** + * The encoding formats requested in an embeddings operation, if specified. + * + * @example ["base64"] + * @example ["float", "binary"] + * + * @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = 'gen_ai.request.encoding_formats'; +/** + * The frequency penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = 'gen_ai.request.frequency_penalty'; +/** + * The maximum number of tokens the model generates for a request. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_MAX_TOKENS = 'gen_ai.request.max_tokens'; +/** + * The name of the GenAI model a request is being made to. + * + * @example "gpt-4" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model'; +/** + * The presence penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty'; +/** + * Requests with same seed value more likely to return same result. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_SEED = 'gen_ai.request.seed'; +/** + * List of sequences that the model will use to stop generating further tokens. + * + * @example ["forest", "lived"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = 'gen_ai.request.stop_sequences'; +/** + * The temperature setting for the GenAI request. + * + * @example 0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_TEMPERATURE = 'gen_ai.request.temperature'; +/** + * The top_k sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_TOP_K = 'gen_ai.request.top_k'; +/** + * The top_p sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_REQUEST_TOP_P = 'gen_ai.request.top_p'; +/** + * Array of reasons the model stopped generating tokens, corresponding to each generation received. + * + * @example ["stop"] + * @example ["stop", "length"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_RESPONSE_FINISH_REASONS = 'gen_ai.response.finish_reasons'; +/** + * The unique identifier for the completion. + * + * @example chatcmpl-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_RESPONSE_ID = 'gen_ai.response.id'; +/** + * The name of the model that generated the response. + * + * @example gpt-4-0613 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model'; +/** + * Deprecated, use `gen_ai.provider.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.provider.name`. + */ +exports.ATTR_GEN_AI_SYSTEM = 'gen_ai.system'; +/** + * Enum value "anthropic" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Anthropic + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_ANTHROPIC = "anthropic"; +/** + * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * AWS Bedrock + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_AWS_BEDROCK = "aws.bedrock"; +/** + * Enum value "az.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.inference`. + */ +exports.GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE = "az.ai.inference"; +/** + * Enum value "az.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.ai.openai`. + */ +exports.GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI = "az.ai.openai"; +/** + * Enum value "azure.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure AI Inference + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_AZURE_AI_INFERENCE = "azure.ai.inference"; +/** + * Enum value "azure.ai.openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Azure OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_AZURE_AI_OPENAI = "azure.ai.openai"; +/** + * Enum value "cohere" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Cohere + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_COHERE = "cohere"; +/** + * Enum value "deepseek" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * DeepSeek + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_DEEPSEEK = "deepseek"; +/** + * Enum value "gcp.gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_GCP_GEMINI = "gcp.gemini"; +/** + * Enum value "gcp.gen_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Any Google generative AI endpoint + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_GCP_GEN_AI = "gcp.gen_ai"; +/** + * Enum value "gcp.vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_GCP_VERTEX_AI = "gcp.vertex_ai"; +/** + * Enum value "gemini" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Gemini + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.gemini`. + */ +exports.GEN_AI_SYSTEM_VALUE_GEMINI = "gemini"; +/** + * Enum value "groq" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Groq + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_GROQ = "groq"; +/** + * Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * IBM Watsonx AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI = "ibm.watsonx.ai"; +/** + * Enum value "mistral_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Mistral AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_MISTRAL_AI = "mistral_ai"; +/** + * Enum value "openai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * OpenAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_OPENAI = "openai"; +/** + * Enum value "perplexity" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Perplexity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_PERPLEXITY = "perplexity"; +/** + * Enum value "vertex_ai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * Vertex AI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gcp.vertex_ai`. + */ +exports.GEN_AI_SYSTEM_VALUE_VERTEX_AI = "vertex_ai"; +/** + * Enum value "xai" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * xAI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_SYSTEM_VALUE_XAI = "xai"; +/** + * The system message or instructions provided to the GenAI model separately from the chat history. + * + * @example [ + * { + * "type": "text", + * "content": "You are an Agent that greet users, always use greetings tool to respond" + * } + * ] + * + * @example [ + * { + * "type": "text", + * "content": "You are a language translator." + * }, + * { + * "type": "text", + * "content": "Your mission is to translate text in English to French." + * } + * ] + * + * @note This attribute **SHOULD** be used when the corresponding provider or API + * allows to provide system instructions or messages separately from the + * chat history. + * + * Instructions that are part of the chat history **SHOULD** be recorded in + * `gen_ai.input.messages` attribute instead. + * + * Instrumentations **MUST** follow [System instructions JSON schema](/docs/gen-ai/gen-ai-system-instructions.json). + * + * When recorded on spans, it **MAY** be recorded as a JSON string if structured + * format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Instrumentations **MAY** provide a way for users to filter or truncate + * system instructions. + * + * > [!Warning] + * > This attribute may contain sensitive information. + * + * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes) + * section for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_SYSTEM_INSTRUCTIONS = 'gen_ai.system_instructions'; +/** + * The type of token being counted. + * + * @example input + * @example output + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_TOKEN_TYPE = 'gen_ai.token.type'; +/** + * Enum value "input" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Input tokens (prompt, input, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_TOKEN_TYPE_VALUE_INPUT = "input"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `output`. + */ +exports.GEN_AI_TOKEN_TYPE_VALUE_COMPLETION = "output"; +/** + * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEN_AI_TOKEN_TYPE_VALUE_OUTPUT = "output"; +/** + * Parameters passed to the tool call. + * + * @example { + * "location": "San Francisco?", + * "date": "2025-10-01" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_TOOL_CALL_ARGUMENTS = 'gen_ai.tool.call.arguments'; +/** + * The tool call identifier. + * + * @example call_mszuSIzqtI65i1wAUOE8w5H4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_TOOL_CALL_ID = 'gen_ai.tool.call.id'; +/** + * The result returned by the tool call (if any and if execution was successful). + * + * @example { + * "temperature_range": { + * "high": 75, + * "low": 60 + * }, + * "conditions": "sunny" + * } + * + * @note > [!WARNING] + * + * > This attribute may contain sensitive information. + * + * It's expected to be an object - in case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_TOOL_CALL_RESULT = 'gen_ai.tool.call.result'; +/** + * The list of source system tool definitions available to the GenAI agent or model. + * + * @example [ + * { + * "type": "function", + * "name": "get_current_weather", + * "description": "Get the current weather in a given location", + * "parameters": { + * "type": "object", + * "properties": { + * "location": { + * "type": "string", + * "description": "The city and state, e.g. San Francisco, CA" + * }, + * "unit": { + * "type": "string", + * "enum": [ + * "celsius", + * "fahrenheit" + * ] + * } + * }, + * "required": [ + * "location", + * "unit" + * ] + * } + * } + * ] + * + * @note The value of this attribute matches source system tool definition format. + * + * It's expected to be an array of objects where each object represents a tool definition. In case a serialized string is available + * to the instrumentation, the instrumentation **SHOULD** do the best effort to + * deserialize it to an array. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise. + * + * Since this attribute could be large, it's NOT **RECOMMENDED** to populate + * it by default. Instrumentations **MAY** provide a way to enable + * populating this attribute. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_TOOL_DEFINITIONS = 'gen_ai.tool.definitions'; +/** + * The tool description. + * + * @example Multiply two numbers + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_TOOL_DESCRIPTION = 'gen_ai.tool.description'; +/** + * Name of the tool utilized by the agent. + * + * @example Flights + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_TOOL_NAME = 'gen_ai.tool.name'; +/** + * Type of the tool utilized by the agent + * + * @example function + * @example extension + * @example datastore + * + * @note Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems. + * Agent-side operations involve actions that are performed by the agent on the server or within the agent's controlled environment. + * Function: A tool executed on the client-side, where the agent generates parameters for a predefined function, and the client executes the logic. + * Client-side operations are actions taken on the user's end or within the client application. + * Datastore: A tool used by the agent to access and query structured or unstructured external data for retrieval-augmented tasks or knowledge updates. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_TOOL_TYPE = 'gen_ai.tool.type'; +/** + * Deprecated, use `gen_ai.usage.output_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.output_tokens`. + */ +exports.ATTR_GEN_AI_USAGE_COMPLETION_TOKENS = 'gen_ai.usage.completion_tokens'; +/** + * The number of tokens used in the GenAI input (prompt). + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens'; +/** + * The number of tokens used in the GenAI response (completion). + * + * @example 180 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens'; +/** + * Deprecated, use `gen_ai.usage.input_tokens` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gen_ai.usage.input_tokens`. + */ +exports.ATTR_GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens'; +/** + * Two-letter code representing continent’s name. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEO_CONTINENT_CODE = 'geo.continent.code'; +/** + * Enum value "AF" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Africa + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEO_CONTINENT_CODE_VALUE_AF = "AF"; +/** + * Enum value "AN" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Antarctica + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEO_CONTINENT_CODE_VALUE_AN = "AN"; +/** + * Enum value "AS" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Asia + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEO_CONTINENT_CODE_VALUE_AS = "AS"; +/** + * Enum value "EU" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Europe + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEO_CONTINENT_CODE_VALUE_EU = "EU"; +/** + * Enum value "NA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * North America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEO_CONTINENT_CODE_VALUE_NA = "NA"; +/** + * Enum value "OC" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * Oceania + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEO_CONTINENT_CODE_VALUE_OC = "OC"; +/** + * Enum value "SA" for attribute {@link ATTR_GEO_CONTINENT_CODE}. + * + * South America + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GEO_CONTINENT_CODE_VALUE_SA = "SA"; +/** + * Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)). + * + * @example CA + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEO_COUNTRY_ISO_CODE = 'geo.country.iso_code'; +/** + * Locality name. Represents the name of a city, town, village, or similar populated place. + * + * @example Montreal + * @example Berlin + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEO_LOCALITY_NAME = 'geo.locality.name'; +/** + * Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example 45.505918 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEO_LOCATION_LAT = 'geo.location.lat'; +/** + * Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + * + * @example -73.61483 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEO_LOCATION_LON = 'geo.location.lon'; +/** + * Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. + * + * @example 94040 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEO_POSTAL_CODE = 'geo.postal_code'; +/** + * Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)). + * + * @example CA-QC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GEO_REGION_ISO_CODE = 'geo.region.iso_code'; +/** + * The type of memory. + * + * @example other + * @example stack + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GO_MEMORY_TYPE = 'go.memory.type'; +/** + * Enum value "other" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory used by the Go runtime, excluding other categories of memory usage described in this enumeration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GO_MEMORY_TYPE_VALUE_OTHER = "other"; +/** + * Enum value "stack" for attribute {@link ATTR_GO_MEMORY_TYPE}. + * + * Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GO_MEMORY_TYPE_VALUE_STACK = "stack"; +/** + * The GraphQL document being executed. + * + * @example "query findBookById { bookById(id: ?) { name } }" + * + * @note The value may be sanitized to exclude sensitive information. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GRAPHQL_DOCUMENT = 'graphql.document'; +/** + * The name of the operation being executed. + * + * @example "findBookById" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GRAPHQL_OPERATION_NAME = 'graphql.operation.name'; +/** + * The type of the operation being executed. + * + * @example query + * @example mutation + * @example subscription + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_GRAPHQL_OPERATION_TYPE = 'graphql.operation.type'; +/** + * Enum value "mutation" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL mutation + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GRAPHQL_OPERATION_TYPE_VALUE_MUTATION = "mutation"; +/** + * Enum value "query" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL query + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GRAPHQL_OPERATION_TYPE_VALUE_QUERY = "query"; +/** + * Enum value "subscription" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}. + * + * GraphQL subscription + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION = "subscription"; +/** + * Unique identifier for the application + * + * @example 2daa2797-e42b-4624-9322-ec3f968df4da + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HEROKU_APP_ID = 'heroku.app.id'; +/** + * Commit hash for the current release + * + * @example e6134959463efd8966b20e75b913cafe3f5ec + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HEROKU_RELEASE_COMMIT = 'heroku.release.commit'; +/** + * Time and date the release was created + * + * @example 2022-10-23T18:00:42Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP = 'heroku.release.creation_timestamp'; +/** + * The CPU architecture the host system is running on. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_ARCH = 'host.arch'; +/** + * Enum value "amd64" for attribute {@link ATTR_HOST_ARCH}. + * + * AMD64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HOST_ARCH_VALUE_AMD64 = "amd64"; +/** + * Enum value "arm32" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM32 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HOST_ARCH_VALUE_ARM32 = "arm32"; +/** + * Enum value "arm64" for attribute {@link ATTR_HOST_ARCH}. + * + * ARM64 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HOST_ARCH_VALUE_ARM64 = "arm64"; +/** + * Enum value "ia64" for attribute {@link ATTR_HOST_ARCH}. + * + * Itanium + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HOST_ARCH_VALUE_IA64 = "ia64"; +/** + * Enum value "ppc32" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HOST_ARCH_VALUE_PPC32 = "ppc32"; +/** + * Enum value "ppc64" for attribute {@link ATTR_HOST_ARCH}. + * + * 64-bit PowerPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HOST_ARCH_VALUE_PPC64 = "ppc64"; +/** + * Enum value "s390x" for attribute {@link ATTR_HOST_ARCH}. + * + * IBM z/Architecture + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HOST_ARCH_VALUE_S390X = "s390x"; +/** + * Enum value "x86" for attribute {@link ATTR_HOST_ARCH}. + * + * 32-bit x86 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HOST_ARCH_VALUE_X86 = "x86"; +/** + * The amount of level 2 memory cache available to the processor (in Bytes). + * + * @example 12288000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_CPU_CACHE_L2_SIZE = 'host.cpu.cache.l2.size'; +/** + * Family or generation of the CPU. + * + * @example 6 + * @example PA-RISC 1.1e + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_CPU_FAMILY = 'host.cpu.family'; +/** + * Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family. + * + * @example 6 + * @example 9000/778/B180L + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_CPU_MODEL_ID = 'host.cpu.model.id'; +/** + * Model designation of the processor. + * + * @example 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_CPU_MODEL_NAME = 'host.cpu.model.name'; +/** + * Stepping or core revisions. + * + * @example 1 + * @example r1p1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_CPU_STEPPING = 'host.cpu.stepping'; +/** + * Processor manufacturer identifier. A maximum 12-character string. + * + * @example GenuineIntel + * + * @note [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_CPU_VENDOR_ID = 'host.cpu.vendor.id'; +/** + * 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. + * + * @example fdbf79e8af94cb7f9e8df36789187052 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_ID = 'host.id'; +/** + * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * + * @example ami-07b06b442921831e5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_IMAGE_ID = 'host.image.id'; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @example infra-ami-eks-worker-node-7d4ec78312 + * @example CentOS-8-x86_64-1905 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_IMAGE_NAME = 'host.image.name'; +/** + * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_IMAGE_VERSION = 'host.image.version'; +/** + * Available IP addresses of the host, excluding loopback interfaces. + * + * @example ["192.168.1.140", "fe80::abc2:4a28:737a:609e"] + * + * @note IPv4 Addresses **MUST** be specified in dotted-quad notation. IPv6 addresses **MUST** be specified in the [RFC 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_IP = 'host.ip'; +/** + * Available MAC addresses of the host, excluding loopback interfaces. + * + * @example ["AC-DE-48-23-45-67", "AC-DE-48-23-45-67-01-9F"] + * + * @note MAC Addresses **MUST** be represented in [IEEE RA hexadecimal form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): as hyphen-separated octets in uppercase hexadecimal form from most to least significant. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_MAC = 'host.mac'; +/** + * 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. + * + * @example opentelemetry-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_NAME = 'host.name'; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @example n1-standard-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HOST_TYPE = 'host.type'; +/** + * Deprecated, use `client.address` instead. + * + * @example "83.164.160.102" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `client.address`. + */ +exports.ATTR_HTTP_CLIENT_IP = 'http.client_ip'; +/** + * State of the HTTP connection in the HTTP connection pool. + * + * @example active + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HTTP_CONNECTION_STATE = 'http.connection.state'; +/** + * Enum value "active" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * active state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HTTP_CONNECTION_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "idle" for attribute {@link ATTR_HTTP_CONNECTION_STATE}. + * + * idle state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HTTP_CONNECTION_STATE_VALUE_IDLE = "idle"; +/** + * Deprecated, use `network.protocol.name` and `network.protocol.version` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split into `network.protocol.name` and `network.protocol.version` + */ +exports.ATTR_HTTP_FLAVOR = 'http.flavor'; +/** + * Enum value "1.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HTTP_FLAVOR_VALUE_HTTP_1_0 = "1.0"; +/** + * Enum value "1.1" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/1.1 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HTTP_FLAVOR_VALUE_HTTP_1_1 = "1.1"; +/** + * Enum value "2.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/2 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HTTP_FLAVOR_VALUE_HTTP_2_0 = "2.0"; +/** + * Enum value "3.0" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * HTTP/3 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HTTP_FLAVOR_VALUE_HTTP_3_0 = "3.0"; +/** + * Enum value "QUIC" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * QUIC protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HTTP_FLAVOR_VALUE_QUIC = "QUIC"; +/** + * Enum value "SPDY" for attribute {@link ATTR_HTTP_FLAVOR}. + * + * SPDY protocol. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HTTP_FLAVOR_VALUE_SPDY = "SPDY"; +/** + * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage. + * + * @example www.example.org + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage. + */ +exports.ATTR_HTTP_HOST = 'http.host'; +/** + * Deprecated, use `http.request.method` instead. + * + * @example GET + * @example POST + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.method`. + */ +exports.ATTR_HTTP_METHOD = 'http.method'; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HTTP_REQUEST_BODY_SIZE = 'http.request.body.size'; +/** + * Enum value "QUERY" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * QUERY method. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HTTP_REQUEST_METHOD_VALUE_QUERY = "QUERY"; +/** + * The total size of the request in bytes. This should be the total number of bytes sent over the wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request body if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HTTP_REQUEST_SIZE = 'http.request.size'; +/** + * Deprecated, use `http.request.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.header.content-length`. + */ +exports.ATTR_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length'; +/** + * Deprecated, use `http.request.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.request.body.size`. + */ +exports.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed'; +/** + * 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HTTP_RESPONSE_BODY_SIZE = 'http.response.body.size'; +/** + * The total size of the response in bytes. This should be the total number of bytes sent over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and response body and trailers if any. + * + * @example 1437 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HTTP_RESPONSE_SIZE = 'http.response.size'; +/** + * Deprecated, use `http.response.header.content-length` instead. + * + * @example 3495 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.header.content-length`. + */ +exports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length'; +/** + * Deprecated, use `http.response.body.size` instead. + * + * @example 5493 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.body.size`. + */ +exports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed'; +/** + * Deprecated, use `url.scheme` instead. + * + * @example http + * @example https + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.scheme`. + */ +exports.ATTR_HTTP_SCHEME = 'http.scheme'; +/** + * Deprecated, use `server.address` instead. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +exports.ATTR_HTTP_SERVER_NAME = 'http.server_name'; +/** + * Deprecated, use `http.response.status_code` instead. + * + * @example 200 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `http.response.status_code`. + */ +exports.ATTR_HTTP_STATUS_CODE = 'http.status_code'; +/** + * Deprecated, use `url.path` and `url.query` instead. + * + * @example /search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `url.path` and `url.query`. + */ +exports.ATTR_HTTP_TARGET = 'http.target'; +/** + * Deprecated, use `url.full` instead. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `url.full`. + */ +exports.ATTR_HTTP_URL = 'http.url'; +/** + * Deprecated, use `user_agent.original` instead. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `user_agent.original`. + */ +exports.ATTR_HTTP_USER_AGENT = 'http.user_agent'; +/** + * Design capacity in Watts-hours or Amper-hours + * + * @example 9.3Ah + * @example 50Wh + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_BATTERY_CAPACITY = 'hw.battery.capacity'; +/** + * Battery [chemistry](https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html), e.g. Lithium-Ion, Nickel-Cadmium, etc. + * + * @example Li-ion + * @example NiMH + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_BATTERY_CHEMISTRY = 'hw.battery.chemistry'; +/** + * The current state of the battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_BATTERY_STATE = 'hw.battery.state'; +/** + * Enum value "charging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Charging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_BATTERY_STATE_VALUE_CHARGING = "charging"; +/** + * Enum value "discharging" for attribute {@link ATTR_HW_BATTERY_STATE}. + * + * Discharging + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_BATTERY_STATE_VALUE_DISCHARGING = "discharging"; +/** + * BIOS version of the hardware component + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_BIOS_VERSION = 'hw.bios_version'; +/** + * Driver version for the hardware component + * + * @example 10.2.1-3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_DRIVER_VERSION = 'hw.driver_version'; +/** + * Type of the enclosure (useful for modular systems) + * + * @example Computer + * @example Storage + * @example Switch + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_ENCLOSURE_TYPE = 'hw.enclosure.type'; +/** + * Firmware version of the hardware component + * + * @example 2.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_FIRMWARE_VERSION = 'hw.firmware_version'; +/** + * Type of task the GPU is performing + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_GPU_TASK = 'hw.gpu.task'; +/** + * Enum value "decoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Decoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_GPU_TASK_VALUE_DECODER = "decoder"; +/** + * Enum value "encoder" for attribute {@link ATTR_HW_GPU_TASK}. + * + * Encoder + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_GPU_TASK_VALUE_ENCODER = "encoder"; +/** + * Enum value "general" for attribute {@link ATTR_HW_GPU_TASK}. + * + * General + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_GPU_TASK_VALUE_GENERAL = "general"; +/** + * An identifier for the hardware component, unique within the monitored host + * + * @example win32battery_battery_testsysa33_1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_ID = 'hw.id'; +/** + * Type of limit for hardware components + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_LIMIT_TYPE = 'hw.limit_type'; +/** + * Enum value "critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LIMIT_TYPE_VALUE_CRITICAL = "critical"; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LIMIT_TYPE_VALUE_DEGRADED = "degraded"; +/** + * Enum value "high.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LIMIT_TYPE_VALUE_HIGH_CRITICAL = "high.critical"; +/** + * Enum value "high.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * High Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LIMIT_TYPE_VALUE_HIGH_DEGRADED = "high.degraded"; +/** + * Enum value "low.critical" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Critical + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LIMIT_TYPE_VALUE_LOW_CRITICAL = "low.critical"; +/** + * Enum value "low.degraded" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Low Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LIMIT_TYPE_VALUE_LOW_DEGRADED = "low.degraded"; +/** + * Enum value "max" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Maximum + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LIMIT_TYPE_VALUE_MAX = "max"; +/** + * Enum value "throttled" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Throttled + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LIMIT_TYPE_VALUE_THROTTLED = "throttled"; +/** + * Enum value "turbo" for attribute {@link ATTR_HW_LIMIT_TYPE}. + * + * Turbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LIMIT_TYPE_VALUE_TURBO = "turbo"; +/** + * RAID Level of the logical disk + * + * @example RAID0+1 + * @example RAID5 + * @example RAID10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_LOGICAL_DISK_RAID_LEVEL = 'hw.logical_disk.raid_level'; +/** + * State of the logical disk space usage + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_LOGICAL_DISK_STATE = 'hw.logical_disk.state'; +/** + * Enum value "free" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Free + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LOGICAL_DISK_STATE_VALUE_FREE = "free"; +/** + * Enum value "used" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}. + * + * Used + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_LOGICAL_DISK_STATE_VALUE_USED = "used"; +/** + * Type of the memory module + * + * @example DDR4 + * @example DDR5 + * @example LPDDR5 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_MEMORY_TYPE = 'hw.memory.type'; +/** + * Descriptive model name of the hardware component + * + * @example PERC H740P + * @example Intel(R) Core(TM) i7-10700K + * @example Dell XPS 15 Battery + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_MODEL = 'hw.model'; +/** + * An easily-recognizable name for the hardware component + * + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_NAME = 'hw.name'; +/** + * Logical addresses of the adapter (e.g. IP address, or WWPN) + * + * @example ["172.16.8.21", "57.11.193.42"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_NETWORK_LOGICAL_ADDRESSES = 'hw.network.logical_addresses'; +/** + * Physical address of the adapter (e.g. MAC address, or WWNN) + * + * @example 00-90-F5-E9-7B-36 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_NETWORK_PHYSICAL_ADDRESS = 'hw.network.physical_address'; +/** + * Unique identifier of the parent component (typically the `hw.id` attribute of the enclosure, or disk controller) + * + * @example dellStorage_perc_0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_PARENT = 'hw.parent'; +/** + * [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute of the physical disk + * + * @example Spin Retry Count + * @example Seek Error Rate + * @example Raw Read Error Rate + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_PHYSICAL_DISK_SMART_ATTRIBUTE = 'hw.physical_disk.smart_attribute'; +/** + * State of the physical disk endurance utilization + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_PHYSICAL_DISK_STATE = 'hw.physical_disk.state'; +/** + * Enum value "remaining" for attribute {@link ATTR_HW_PHYSICAL_DISK_STATE}. + * + * Remaining + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_PHYSICAL_DISK_STATE_VALUE_REMAINING = "remaining"; +/** + * Type of the physical disk + * + * @example HDD + * @example SSD + * @example 10K + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_PHYSICAL_DISK_TYPE = 'hw.physical_disk.type'; +/** + * Location of the sensor + * + * @example cpu0 + * @example ps1 + * @example INLET + * @example CPU0_DIE + * @example AMBIENT + * @example MOTHERBOARD + * @example PS0 V3_3 + * @example MAIN_12V + * @example CPU_VCORE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_SENSOR_LOCATION = 'hw.sensor_location'; +/** + * Serial number of the hardware component + * + * @example CNFCP0123456789 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_SERIAL_NUMBER = 'hw.serial_number'; +/** + * The current state of the component + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_STATE = 'hw.state'; +/** + * Enum value "degraded" for attribute {@link ATTR_HW_STATE}. + * + * Degraded + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_STATE_VALUE_DEGRADED = "degraded"; +/** + * Enum value "failed" for attribute {@link ATTR_HW_STATE}. + * + * Failed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_STATE_VALUE_FAILED = "failed"; +/** + * Enum value "needs_cleaning" for attribute {@link ATTR_HW_STATE}. + * + * Needs Cleaning + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_STATE_VALUE_NEEDS_CLEANING = "needs_cleaning"; +/** + * Enum value "ok" for attribute {@link ATTR_HW_STATE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_STATE_VALUE_OK = "ok"; +/** + * Enum value "predicted_failure" for attribute {@link ATTR_HW_STATE}. + * + * Predicted Failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_STATE_VALUE_PREDICTED_FAILURE = "predicted_failure"; +/** + * Type of tape drive operation + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_TAPE_DRIVE_OPERATION_TYPE = 'hw.tape_drive.operation_type'; +/** + * Enum value "clean" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Clean + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_CLEAN = "clean"; +/** + * Enum value "mount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Mount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_MOUNT = "mount"; +/** + * Enum value "unmount" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}. + * + * Unmount + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_UNMOUNT = "unmount"; +/** + * Type of the component + * + * @note Describes the category of the hardware component for which `hw.state` is being reported. For example, `hw.type=temperature` along with `hw.state=degraded` would indicate that the temperature of the hardware component has been reported as `degraded`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_TYPE = 'hw.type'; +/** + * Enum value "battery" for attribute {@link ATTR_HW_TYPE}. + * + * Battery + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_BATTERY = "battery"; +/** + * Enum value "cpu" for attribute {@link ATTR_HW_TYPE}. + * + * CPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_CPU = "cpu"; +/** + * Enum value "disk_controller" for attribute {@link ATTR_HW_TYPE}. + * + * Disk controller + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_DISK_CONTROLLER = "disk_controller"; +/** + * Enum value "enclosure" for attribute {@link ATTR_HW_TYPE}. + * + * Enclosure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_ENCLOSURE = "enclosure"; +/** + * Enum value "fan" for attribute {@link ATTR_HW_TYPE}. + * + * Fan + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_FAN = "fan"; +/** + * Enum value "gpu" for attribute {@link ATTR_HW_TYPE}. + * + * GPU + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_GPU = "gpu"; +/** + * Enum value "logical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Logical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_LOGICAL_DISK = "logical_disk"; +/** + * Enum value "memory" for attribute {@link ATTR_HW_TYPE}. + * + * Memory + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_MEMORY = "memory"; +/** + * Enum value "network" for attribute {@link ATTR_HW_TYPE}. + * + * Network + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_NETWORK = "network"; +/** + * Enum value "physical_disk" for attribute {@link ATTR_HW_TYPE}. + * + * Physical disk + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_PHYSICAL_DISK = "physical_disk"; +/** + * Enum value "power_supply" for attribute {@link ATTR_HW_TYPE}. + * + * Power supply + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_POWER_SUPPLY = "power_supply"; +/** + * Enum value "tape_drive" for attribute {@link ATTR_HW_TYPE}. + * + * Tape drive + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_TAPE_DRIVE = "tape_drive"; +/** + * Enum value "temperature" for attribute {@link ATTR_HW_TYPE}. + * + * Temperature + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_TEMPERATURE = "temperature"; +/** + * Enum value "voltage" for attribute {@link ATTR_HW_TYPE}. + * + * Voltage + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.HW_TYPE_VALUE_VOLTAGE = "voltage"; +/** + * Vendor name of the hardware component + * + * @example Dell + * @example HP + * @example Intel + * @example AMD + * @example LSI + * @example Lenovo + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_HW_VENDOR = 'hw.vendor'; +/** + * This attribute represents the state of the application. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_IOS_APP_STATE = 'ios.app.state'; +/** + * Enum value "active" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.IOS_APP_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.IOS_APP_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.IOS_APP_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.IOS_APP_STATE_VALUE_INACTIVE = "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_APP_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.IOS_APP_STATE_VALUE_TERMINATE = "terminate"; +/** + * Deprecated. Use the `ios.app.state` attribute. + * + * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `ios.app.state`. + */ +exports.ATTR_IOS_STATE = 'ios.state'; +/** + * Enum value "active" for attribute {@link ATTR_IOS_STATE}. + * + * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.IOS_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "background" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.IOS_STATE_VALUE_BACKGROUND = "background"; +/** + * Enum value "foreground" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.IOS_STATE_VALUE_FOREGROUND = "foreground"; +/** + * Enum value "inactive" for attribute {@link ATTR_IOS_STATE}. + * + * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.IOS_STATE_VALUE_INACTIVE = "inactive"; +/** + * Enum value "terminate" for attribute {@link ATTR_IOS_STATE}. + * + * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.IOS_STATE_VALUE_TERMINATE = "terminate"; +/** + * Protocol version, as specified in the `jsonrpc` property of the request and its corresponding response. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_JSONRPC_PROTOCOL_VERSION = 'jsonrpc.protocol.version'; +/** + * A string representation of the `id` property of the request and its corresponding response. + * + * @example 10 + * @example request-7 + * + * @note Under the [JSON-RPC specification](https://www.jsonrpc.org/specification), the `id` property may be a string, number, null, or omitted entirely. When omitted, the request is treated as a notification. Using `null` is not equivalent to omitting the `id`, but it is discouraged. + * Instrumentations **SHOULD NOT** capture this attribute when the `id` is `null` or omitted. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_JSONRPC_REQUEST_ID = 'jsonrpc.request.id'; +/** + * Name of the buffer pool. + * + * @example mapped + * @example direct + * + * @note Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_JVM_BUFFER_POOL_NAME = 'jvm.buffer.pool.name'; +/** + * Name of the garbage collector cause. + * + * @example System.gc() + * @example Allocation Failure + * + * @note Garbage collector cause is generally obtained via [GarbageCollectionNotificationInfo#getGcCause()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcCause()). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_JVM_GC_CAUSE = 'jvm.gc.cause'; +/** + * The name of the cluster. + * + * @example opentelemetry-cluster + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name'; +/** + * A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace. + * + * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d + * + * @note K8s doesn't have support for obtaining a cluster ID. If this is ever + * added, we will recommend collecting the `k8s.cluster.uid` through the + * official APIs. In the meantime, we are able to use the `uid` of the + * `kube-system` namespace as a proxy for cluster ID. Read on for the + * rationale. + * + * Every object created in a K8s cluster is assigned a distinct UID. The + * `kube-system` namespace is used by Kubernetes itself and will exist + * for the lifetime of the cluster. Using the `uid` of the `kube-system` + * namespace is a reasonable proxy for the K8s ClusterID as it will only + * change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are + * UUIDs as standardized by + * [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html). + * Which states: + * + * > If generated according to one of the mechanisms defined in Rec. + * > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be + * > different from all other UUIDs generated before 3603 A.D., or is + * > extremely likely to be different (depending on the mechanism chosen). + * + * Therefore, UIDs between clusters should be extremely unlikely to + * conflict. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_CLUSTER_UID = 'k8s.cluster.uid'; +/** + * The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`). + * + * @example redis + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_CONTAINER_NAME = 'k8s.container.name'; +/** + * Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart_count'; +/** + * Last terminated reason of the Container. + * + * @example Evicted + * @example Error + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON = 'k8s.container.status.last_terminated_reason'; +/** + * The reason for the container state. Corresponds to the `reason` field of the: [K8s ContainerStateWaiting](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core) or [K8s ContainerStateTerminated](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core) + * + * @example ContainerCreating + * @example CrashLoopBackOff + * @example CreateContainerConfigError + * @example ErrImagePull + * @example ImagePullBackOff + * @example OOMKilled + * @example Completed + * @example Error + * @example ContainerCannotRun + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason'; +/** + * Enum value "Completed" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container has completed execution. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_REASON_VALUE_COMPLETED = "Completed"; +/** + * Enum value "ContainerCannotRun" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container cannot run. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CANNOT_RUN = "ContainerCannotRun"; +/** + * Enum value "ContainerCreating" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is being created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CREATING = "ContainerCreating"; +/** + * Enum value "CrashLoopBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container is in a crash loop back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_REASON_VALUE_CRASH_LOOP_BACK_OFF = "CrashLoopBackOff"; +/** + * Enum value "CreateContainerConfigError" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error creating the container configuration. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_REASON_VALUE_CREATE_CONTAINER_CONFIG_ERROR = "CreateContainerConfigError"; +/** + * Enum value "ErrImagePull" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error pulling the container image. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_REASON_VALUE_ERR_IMAGE_PULL = "ErrImagePull"; +/** + * Enum value "Error" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * There was an error with the container. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_REASON_VALUE_ERROR = "Error"; +/** + * Enum value "ImagePullBackOff" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container image pull is in back off state. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_REASON_VALUE_IMAGE_PULL_BACK_OFF = "ImagePullBackOff"; +/** + * Enum value "OOMKilled" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}. + * + * The container was killed due to out of memory. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_REASON_VALUE_OOM_KILLED = "OOMKilled"; +/** + * The state of the container. [K8s ContainerState](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core) + * + * @example terminated + * @example running + * @example waiting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state'; +/** + * Enum value "running" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_STATE_VALUE_RUNNING = "running"; +/** + * Enum value "terminated" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container has terminated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_STATE_VALUE_TERMINATED = "terminated"; +/** + * Enum value "waiting" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}. + * + * The container is waiting. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_CONTAINER_STATUS_STATE_VALUE_WAITING = "waiting"; +/** + * The cronjob annotation placed on the CronJob, the `` being the annotation name, the value being the annotation value. + * + * @example 4 + * @example + * + * @note Examples: + * + * - An annotation `retries` with value `4` **SHOULD** be recorded as the + * `k8s.cronjob.annotation.retries` attribute with value `"4"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_CRONJOB_ANNOTATION = (key) => `k8s.cronjob.annotation.${key}`; +exports.ATTR_K8S_CRONJOB_ANNOTATION = ATTR_K8S_CRONJOB_ANNOTATION; +/** + * The label placed on the CronJob, the `` being the label name, the value being the label value. + * + * @example weekly + * @example + * + * @note Examples: + * + * - A label `type` with value `weekly` **SHOULD** be recorded as the + * `k8s.cronjob.label.type` attribute with value `"weekly"`. + * - A label `automated` with empty string value **SHOULD** be recorded as + * the `k8s.cronjob.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_CRONJOB_LABEL = (key) => `k8s.cronjob.label.${key}`; +exports.ATTR_K8S_CRONJOB_LABEL = ATTR_K8S_CRONJOB_LABEL; +/** + * The name of the CronJob. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_CRONJOB_NAME = 'k8s.cronjob.name'; +/** + * The UID of the CronJob. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_CRONJOB_UID = 'k8s.cronjob.uid'; +/** + * The annotation placed on the DaemonSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.daemonset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_DAEMONSET_ANNOTATION = (key) => `k8s.daemonset.annotation.${key}`; +exports.ATTR_K8S_DAEMONSET_ANNOTATION = ATTR_K8S_DAEMONSET_ANNOTATION; +/** + * The label placed on the DaemonSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.daemonset.label.app` attribute with value `"guestbook"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.daemonset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_DAEMONSET_LABEL = (key) => `k8s.daemonset.label.${key}`; +exports.ATTR_K8S_DAEMONSET_LABEL = ATTR_K8S_DAEMONSET_LABEL; +/** + * The name of the DaemonSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_DAEMONSET_NAME = 'k8s.daemonset.name'; +/** + * The UID of the DaemonSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_DAEMONSET_UID = 'k8s.daemonset.uid'; +/** + * The annotation placed on the Deployment, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.deployment.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_DEPLOYMENT_ANNOTATION = (key) => `k8s.deployment.annotation.${key}`; +exports.ATTR_K8S_DEPLOYMENT_ANNOTATION = ATTR_K8S_DEPLOYMENT_ANNOTATION; +/** + * The label placed on the Deployment, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.deployment.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.deployment.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_DEPLOYMENT_LABEL = (key) => `k8s.deployment.label.${key}`; +exports.ATTR_K8S_DEPLOYMENT_LABEL = ATTR_K8S_DEPLOYMENT_LABEL; +/** + * The name of the Deployment. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name'; +/** + * The UID of the Deployment. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid'; +/** + * The type of metric source for the horizontal pod autoscaler. + * + * @example Resource + * @example ContainerResource + * + * @note This attribute reflects the `type` field of spec.metrics[] in the HPA. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_HPA_METRIC_TYPE = 'k8s.hpa.metric.type'; +/** + * The name of the horizontal pod autoscaler. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_HPA_NAME = 'k8s.hpa.name'; +/** + * The API version of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example apps/v1 + * @example autoscaling/v2 + * + * @note This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_HPA_SCALETARGETREF_API_VERSION = 'k8s.hpa.scaletargetref.api_version'; +/** + * The kind of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example Deployment + * @example StatefulSet + * + * @note This maps to the `kind` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_HPA_SCALETARGETREF_KIND = 'k8s.hpa.scaletargetref.kind'; +/** + * The name of the target resource to scale for the HorizontalPodAutoscaler. + * + * @example my-deployment + * @example my-statefulset + * + * @note This maps to the `name` field in the `scaleTargetRef` of the HPA spec. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_HPA_SCALETARGETREF_NAME = 'k8s.hpa.scaletargetref.name'; +/** + * The UID of the horizontal pod autoscaler. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_HPA_UID = 'k8s.hpa.uid'; +/** + * The size (identifier) of the K8s huge page. + * + * @example 2Mi + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_HUGEPAGE_SIZE = 'k8s.hugepage.size'; +/** + * The annotation placed on the Job, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `number` with value `1` **SHOULD** be recorded + * as the `k8s.job.annotation.number` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_JOB_ANNOTATION = (key) => `k8s.job.annotation.${key}`; +exports.ATTR_K8S_JOB_ANNOTATION = ATTR_K8S_JOB_ANNOTATION; +/** + * The label placed on the Job, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example ci + * @example + * + * @note + * Examples: + * + * - A label `jobtype` with value `ci` **SHOULD** be recorded + * as the `k8s.job.label.jobtype` attribute with value `"ci"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.job.label.automated` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_JOB_LABEL = (key) => `k8s.job.label.${key}`; +exports.ATTR_K8S_JOB_LABEL = ATTR_K8S_JOB_LABEL; +/** + * The name of the Job. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_JOB_NAME = 'k8s.job.name'; +/** + * The UID of the Job. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_JOB_UID = 'k8s.job.uid'; +/** + * The annotation placed on the Namespace, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `ttl` with value `0` **SHOULD** be recorded + * as the `k8s.namespace.annotation.ttl` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_NAMESPACE_ANNOTATION = (key) => `k8s.namespace.annotation.${key}`; +exports.ATTR_K8S_NAMESPACE_ANNOTATION = ATTR_K8S_NAMESPACE_ANNOTATION; +/** + * The label placed on the Namespace, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example default + * @example + * + * @note + * Examples: + * + * - A label `kubernetes.io/metadata.name` with value `default` **SHOULD** be recorded + * as the `k8s.namespace.label.kubernetes.io/metadata.name` attribute with value `"default"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.namespace.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_NAMESPACE_LABEL = (key) => `k8s.namespace.label.${key}`; +exports.ATTR_K8S_NAMESPACE_LABEL = ATTR_K8S_NAMESPACE_LABEL; +/** + * The name of the namespace that the pod is running in. + * + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name'; +/** + * The phase of the K8s namespace. + * + * @example active + * @example terminating + * + * @note This attribute aligns with the `phase` field of the + * [K8s NamespaceStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase'; +/** + * Enum value "active" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Active namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_NAMESPACE_PHASE_VALUE_ACTIVE = "active"; +/** + * Enum value "terminating" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}. + * + * Terminating namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_NAMESPACE_PHASE_VALUE_TERMINATING = "terminating"; +/** + * The annotation placed on the Node, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note Examples: + * + * - An annotation `node.alpha.kubernetes.io/ttl` with value `0` **SHOULD** be recorded as + * the `k8s.node.annotation.node.alpha.kubernetes.io/ttl` attribute with value `"0"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_NODE_ANNOTATION = (key) => `k8s.node.annotation.${key}`; +exports.ATTR_K8S_NODE_ANNOTATION = ATTR_K8S_NODE_ANNOTATION; +/** + * The status of the condition, one of True, False, Unknown. + * + * @example true + * @example false + * @example unknown + * + * @note This attribute aligns with the `status` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status'; +/** + * Enum value "false" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_FALSE = "false"; +/** + * Enum value "true" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_TRUE = "true"; +/** + * Enum value "unknown" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_UNKNOWN = "unknown"; +/** + * The condition type of a K8s Node. + * + * @example Ready + * @example DiskPressure + * + * @note K8s Node conditions as described + * by [K8s documentation](https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition). + * + * This attribute aligns with the `type` field of the + * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core) + * + * The set of possible values is not limited to those listed here. Managed Kubernetes environments, + * or custom controllers **MAY** introduce additional node condition types. + * When this occurs, the exact value as reported by the Kubernetes API **SHOULD** be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_NODE_CONDITION_TYPE = 'k8s.node.condition.type'; +/** + * Enum value "DiskPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the disk size—that is, if the disk capacity is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_NODE_CONDITION_TYPE_VALUE_DISK_PRESSURE = "DiskPressure"; +/** + * Enum value "MemoryPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the node memory—that is, if the node memory is low + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_NODE_CONDITION_TYPE_VALUE_MEMORY_PRESSURE = "MemoryPressure"; +/** + * Enum value "NetworkUnavailable" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The network for the node is not correctly configured + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_NODE_CONDITION_TYPE_VALUE_NETWORK_UNAVAILABLE = "NetworkUnavailable"; +/** + * Enum value "PIDPressure" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * Pressure exists on the processes—that is, if there are too many processes on the node + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_NODE_CONDITION_TYPE_VALUE_PID_PRESSURE = "PIDPressure"; +/** + * Enum value "Ready" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}. + * + * The node is healthy and ready to accept pods + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_NODE_CONDITION_TYPE_VALUE_READY = "Ready"; +/** + * The label placed on the Node, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example arm64 + * @example + * + * @note Examples: + * + * - A label `kubernetes.io/arch` with value `arm64` **SHOULD** be recorded + * as the `k8s.node.label.kubernetes.io/arch` attribute with value `"arm64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.node.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_NODE_LABEL = (key) => `k8s.node.label.${key}`; +exports.ATTR_K8S_NODE_LABEL = ATTR_K8S_NODE_LABEL; +/** + * The name of the Node. + * + * @example node-1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_NODE_NAME = 'k8s.node.name'; +/** + * The UID of the Node. + * + * @example 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_NODE_UID = 'k8s.node.uid'; +/** + * The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value. + * + * @example true + * @example x64 + * @example + * + * @note Examples: + * + * - An annotation `kubernetes.io/enforce-mountable-secrets` with value `true` **SHOULD** be recorded as + * the `k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets` attribute with value `"true"`. + * - An annotation `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.annotation.mycompany.io/arch` attribute with value `"x64"`. + * - An annotation `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_POD_ANNOTATION = (key) => `k8s.pod.annotation.${key}`; +exports.ATTR_K8S_POD_ANNOTATION = ATTR_K8S_POD_ANNOTATION; +/** + * Specifies the hostname of the Pod. + * + * @example collector-gateway + * + * @note The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. + * Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) + * for more information about this field. + * + * This attribute aligns with the `hostname` field of the + * [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_POD_HOSTNAME = 'k8s.pod.hostname'; +/** + * IP address allocated to the Pod. + * + * @example 172.18.0.2 + * + * @note This attribute aligns with the `podIP` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_POD_IP = 'k8s.pod.ip'; +/** + * The label placed on the Pod, the `` being the label name, the value being the label value. + * + * @example my-app + * @example x64 + * @example + * + * @note Examples: + * + * - A label `app` with value `my-app` **SHOULD** be recorded as + * the `k8s.pod.label.app` attribute with value `"my-app"`. + * - A label `mycompany.io/arch` with value `x64` **SHOULD** be recorded as + * the `k8s.pod.label.mycompany.io/arch` attribute with value `"x64"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.pod.label.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_POD_LABEL = (key) => `k8s.pod.label.${key}`; +exports.ATTR_K8S_POD_LABEL = ATTR_K8S_POD_LABEL; +/** + * Deprecated, use `k8s.pod.label` instead. + * + * @example my-app + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.pod.label`. + */ +const ATTR_K8S_POD_LABELS = (key) => `k8s.pod.labels.${key}`; +exports.ATTR_K8S_POD_LABELS = ATTR_K8S_POD_LABELS; +/** + * The name of the Pod. + * + * @example opentelemetry-pod-autoconf + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_POD_NAME = 'k8s.pod.name'; +/** + * The start timestamp of the Pod. + * + * @example 2025-12-04T08:41:03Z + * + * @note Date and time at which the object was acknowledged by the Kubelet. + * This is before the Kubelet pulled the container image(s) for the pod. + * + * This attribute aligns with the `startTime` field of the + * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), + * in ISO 8601 (RFC 3339 compatible) format. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_POD_START_TIME = 'k8s.pod.start_time'; +/** + * The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Pending + * @example Running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase'; +/** + * Enum value "Failed" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_POD_STATUS_PHASE_VALUE_FAILED = "Failed"; +/** + * Enum value "Pending" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_POD_STATUS_PHASE_VALUE_PENDING = "Pending"; +/** + * Enum value "Running" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * The pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_POD_STATUS_PHASE_VALUE_RUNNING = "Running"; +/** + * Enum value "Succeeded" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * All containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_POD_STATUS_PHASE_VALUE_SUCCEEDED = "Succeeded"; +/** + * Enum value "Unknown" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}. + * + * For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_POD_STATUS_PHASE_VALUE_UNKNOWN = "Unknown"; +/** + * The reason for the pod state. Corresponds to the `reason` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) + * + * @example Evicted + * @example NodeAffinity + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason'; +/** + * Enum value "Evicted" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is evicted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_POD_STATUS_REASON_VALUE_EVICTED = "Evicted"; +/** + * Enum value "NodeAffinity" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod is in a status because of its node affinity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_POD_STATUS_REASON_VALUE_NODE_AFFINITY = "NodeAffinity"; +/** + * Enum value "NodeLost" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The reason on a pod when its state cannot be confirmed as kubelet is unresponsive on the node it is (was) running. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_POD_STATUS_REASON_VALUE_NODE_LOST = "NodeLost"; +/** + * Enum value "Shutdown" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The node is shutdown + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_POD_STATUS_REASON_VALUE_SHUTDOWN = "Shutdown"; +/** + * Enum value "UnexpectedAdmissionError" for attribute {@link ATTR_K8S_POD_STATUS_REASON}. + * + * The pod was rejected admission to the node because of an error during admission that could not be categorized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_POD_STATUS_REASON_VALUE_UNEXPECTED_ADMISSION_ERROR = "UnexpectedAdmissionError"; +/** + * The UID of the Pod. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_POD_UID = 'k8s.pod.uid'; +/** + * The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 0 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.replicaset.annotation.replicas` attribute with value `"0"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_REPLICASET_ANNOTATION = (key) => `k8s.replicaset.annotation.${key}`; +exports.ATTR_K8S_REPLICASET_ANNOTATION = ATTR_K8S_REPLICASET_ANNOTATION; +/** + * The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `app` with value `guestbook` **SHOULD** be recorded + * as the `k8s.replicaset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.replicaset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_REPLICASET_LABEL = (key) => `k8s.replicaset.label.${key}`; +exports.ATTR_K8S_REPLICASET_LABEL = ATTR_K8S_REPLICASET_LABEL; +/** + * The name of the ReplicaSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_REPLICASET_NAME = 'k8s.replicaset.name'; +/** + * The UID of the ReplicaSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_REPLICASET_UID = 'k8s.replicaset.uid'; +/** + * The name of the replication controller. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_REPLICATIONCONTROLLER_NAME = 'k8s.replicationcontroller.name'; +/** + * The UID of the replication controller. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_REPLICATIONCONTROLLER_UID = 'k8s.replicationcontroller.uid'; +/** + * The name of the resource quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_RESOURCEQUOTA_NAME = 'k8s.resourcequota.name'; +/** + * The name of the K8s resource a resource quota defines. + * + * @example count/replicationcontrollers + * + * @note The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_RESOURCEQUOTA_RESOURCE_NAME = 'k8s.resourcequota.resource_name'; +/** + * The UID of the resource quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_RESOURCEQUOTA_UID = 'k8s.resourcequota.uid'; +/** + * The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. + * + * @example 1 + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `1` **SHOULD** be recorded + * as the `k8s.statefulset.annotation.replicas` attribute with value `"1"`. + * - A label `data` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.annotation.data` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_STATEFULSET_ANNOTATION = (key) => `k8s.statefulset.annotation.${key}`; +exports.ATTR_K8S_STATEFULSET_ANNOTATION = ATTR_K8S_STATEFULSET_ANNOTATION; +/** + * The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty. + * + * @example guestbook + * @example + * + * @note + * Examples: + * + * - A label `replicas` with value `0` **SHOULD** be recorded + * as the `k8s.statefulset.label.app` attribute with value `"guestbook"`. + * - A label `injected` with empty string value **SHOULD** be recorded as + * the `k8s.statefulset.label.injected` attribute with value `""`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_K8S_STATEFULSET_LABEL = (key) => `k8s.statefulset.label.${key}`; +exports.ATTR_K8S_STATEFULSET_LABEL = ATTR_K8S_STATEFULSET_LABEL; +/** + * The name of the StatefulSet. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_STATEFULSET_NAME = 'k8s.statefulset.name'; +/** + * The UID of the StatefulSet. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_STATEFULSET_UID = 'k8s.statefulset.uid'; +/** + * The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object. + * + * @example gold.storageclass.storage.k8s.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_STORAGECLASS_NAME = 'k8s.storageclass.name'; +/** + * The name of the K8s volume. + * + * @example volume0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_VOLUME_NAME = 'k8s.volume.name'; +/** + * The type of the K8s volume. + * + * @example emptyDir + * @example persistentVolumeClaim + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_K8S_VOLUME_TYPE = 'k8s.volume.type'; +/** + * Enum value "configMap" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [configMap](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_VOLUME_TYPE_VALUE_CONFIG_MAP = "configMap"; +/** + * Enum value "downwardAPI" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [downwardAPI](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_VOLUME_TYPE_VALUE_DOWNWARD_API = "downwardAPI"; +/** + * Enum value "emptyDir" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * An [emptyDir](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_VOLUME_TYPE_VALUE_EMPTY_DIR = "emptyDir"; +/** + * Enum value "local" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [local](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_VOLUME_TYPE_VALUE_LOCAL = "local"; +/** + * Enum value "persistentVolumeClaim" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [persistentVolumeClaim](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM = "persistentVolumeClaim"; +/** + * Enum value "secret" for attribute {@link ATTR_K8S_VOLUME_TYPE}. + * + * A [secret](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.K8S_VOLUME_TYPE_VALUE_SECRET = "secret"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.state`. + */ +exports.ATTR_LINUX_MEMORY_SLAB_STATE = 'linux.memory.slab.state'; +/** + * Enum value "reclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE = "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE = "unreclaimable"; +/** + * The basename of the file. + * + * @example audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_LOG_FILE_NAME = 'log.file.name'; +/** + * The basename of the file, with symlinks resolved. + * + * @example uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_LOG_FILE_NAME_RESOLVED = 'log.file.name_resolved'; +/** + * The full path to the file. + * + * @example /var/log/mysql/audit.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_LOG_FILE_PATH = 'log.file.path'; +/** + * The full path to the file, with symlinks resolved. + * + * @example /var/lib/docker/uuid.log + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_LOG_FILE_PATH_RESOLVED = 'log.file.path_resolved'; +/** + * The stream associated with the log. See below for a list of well-known values. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_LOG_IOSTREAM = 'log.iostream'; +/** + * Enum value "stderr" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Events from stderr stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.LOG_IOSTREAM_VALUE_STDERR = "stderr"; +/** + * Enum value "stdout" for attribute {@link ATTR_LOG_IOSTREAM}. + * + * Logs from stdout stream + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.LOG_IOSTREAM_VALUE_STDOUT = "stdout"; +/** + * The complete original Log Record. + * + * @example 77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - Something happened + * @example [INFO] 8/3/24 12:34:56 Something happened + * + * @note This value **MAY** be added when processing a Log Record which was originally transmitted as a string or equivalent data type AND the Body field of the Log Record does not contain the same value. (e.g. a syslog or a log record read from a file.) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_LOG_RECORD_ORIGINAL = 'log.record.original'; +/** + * A unique identifier for the Log Record. + * + * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV + * + * @note If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records **MUST** have different values. + * The id **MAY** be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_LOG_RECORD_UID = 'log.record.uid'; +/** + * Name of the logical partition that hosts a systems with a mainframe operating system. + * + * @example LPAR01 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MAINFRAME_LPAR_NAME = 'mainframe.lpar.name'; +/** + * The name of the request or notification method. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MCP_METHOD_NAME = 'mcp.method.name'; +/** + * Enum value "completion/complete" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to complete a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE = "completion/complete"; +/** + * Enum value "elicitation/create" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request from the server to elicit additional information from the user via the client + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_ELICITATION_CREATE = "elicitation/create"; +/** + * Enum value "initialize" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to initialize the MCP client. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_INITIALIZE = "initialize"; +/** + * Enum value "logging/setLevel" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to set the logging level. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL = "logging/setLevel"; +/** + * Enum value "notifications/cancelled" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification cancelling a previously-issued request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED = "notifications/cancelled"; +/** + * Enum value "notifications/initialized" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the MCP client has been initialized. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED = "notifications/initialized"; +/** + * Enum value "notifications/message" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a message has been received. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE = "notifications/message"; +/** + * Enum value "notifications/progress" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating the progress for a long-running operation. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS = "notifications/progress"; +/** + * Enum value "notifications/prompts/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of prompts has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED = "notifications/prompts/list_changed"; +/** + * Enum value "notifications/resources/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of resources has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED = "notifications/resources/list_changed"; +/** + * Enum value "notifications/resources/updated" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that a resource has been updated. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED = "notifications/resources/updated"; +/** + * Enum value "notifications/roots/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of roots has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED = "notifications/roots/list_changed"; +/** + * Enum value "notifications/tools/list_changed" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Notification indicating that the list of tools has changed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED = "notifications/tools/list_changed"; +/** + * Enum value "ping" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to check that the other party is still alive. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_PING = "ping"; +/** + * Enum value "prompts/get" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to get a prompt. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_PROMPTS_GET = "prompts/get"; +/** + * Enum value "prompts/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list prompts available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_PROMPTS_LIST = "prompts/list"; +/** + * Enum value "resources/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resources available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_RESOURCES_LIST = "resources/list"; +/** + * Enum value "resources/read" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to read a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_RESOURCES_READ = "resources/read"; +/** + * Enum value "resources/subscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to subscribe to a resource. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE = "resources/subscribe"; +/** + * Enum value "resources/templates/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list resource templates available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST = "resources/templates/list"; +/** + * Enum value "resources/unsubscribe" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to unsubscribe from resource updates. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE = "resources/unsubscribe"; +/** + * Enum value "roots/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list roots available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_ROOTS_LIST = "roots/list"; +/** + * Enum value "sampling/createMessage" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to create a sampling message. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE = "sampling/createMessage"; +/** + * Enum value "tools/call" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to call a tool. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_TOOLS_CALL = "tools/call"; +/** + * Enum value "tools/list" for attribute {@link ATTR_MCP_METHOD_NAME}. + * + * Request to list tools available on server. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MCP_METHOD_NAME_VALUE_TOOLS_LIST = "tools/list"; +/** + * The [version](https://modelcontextprotocol.io/specification/versioning) of the Model Context Protocol used. + * + * @example 2025-06-18 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MCP_PROTOCOL_VERSION = 'mcp.protocol.version'; +/** + * The value of the resource uri. + * + * @example postgres://database/customers/schema + * @example file:///home/user/documents/report.pdf + * + * @note This is a URI of the resource provided in the following requests or notifications: `resources/read`, `resources/subscribe`, `resources/unsubscribe`, or `notifications/resources/updated`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MCP_RESOURCE_URI = 'mcp.resource.uri'; +/** + * Identifies [MCP session](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management). + * + * @example 191c4850af6c49e08843a3f6c80e5046 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MCP_SESSION_ID = 'mcp.session.id'; +/** + * Deprecated, use `rpc.message.compressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.compressed_size`. + */ +exports.ATTR_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size'; +/** + * Deprecated, use `rpc.message.id` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.id`. + */ +exports.ATTR_MESSAGE_ID = 'message.id'; +/** + * Deprecated, use `rpc.message.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.type`. + */ +exports.ATTR_MESSAGE_TYPE = 'message.type'; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGE_TYPE_VALUE_RECEIVED = "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGE_TYPE_VALUE_SENT = "SENT"; +/** + * Deprecated, use `rpc.message.uncompressed_size` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.message.uncompressed_size`. + */ +exports.ATTR_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size'; +/** + * The number of messages sent, received, or processed in the scope of the batching operation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count'; +/** + * A unique identifier for the client that consumes or produces a message. + * + * @example client-5 + * @example myhost@8742@s8083jm + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_CLIENT_ID = 'messaging.client.id'; +/** + * The name of the consumer group with which a consumer is associated. + * + * @example my-group + * @example indexer + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.consumer.group.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_CONSUMER_GROUP_NAME = 'messaging.consumer.group.name'; +/** + * A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_DESTINATION_ANONYMOUS = 'messaging.destination.anonymous'; +/** + * The message destination name + * + * @example MyQueue + * @example MyTopic + * + * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If + * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name'; +/** + * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`. + * + * @example "1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_DESTINATION_PARTITION_ID = 'messaging.destination.partition.id'; +/** + * The name of the destination subscription from which a message is consumed. + * + * @example subscription-a + * + * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.destination.subscription.name` is applicable and what it means in the context of that system. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME = 'messaging.destination.subscription.name'; +/** + * Low cardinality representation of the messaging destination name + * + * @example /customers/{customerId} + * + * @note Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_DESTINATION_TEMPLATE = 'messaging.destination.template'; +/** + * A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_DESTINATION_TEMPORARY = 'messaging.destination.temporary'; +/** + * Deprecated, no replacement at this time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +exports.ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS = 'messaging.destination_publish.anonymous'; +/** + * Deprecated, no replacement at this time. + * + * @example MyQueue + * @example MyTopic + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +exports.ATTR_MESSAGING_DESTINATION_PUBLISH_NAME = 'messaging.destination_publish.name'; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "$Default" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +exports.ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP = 'messaging.eventhubs.consumer.group'; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME = 'messaging.eventhubs.message.enqueued_time'; +/** + * The ack deadline in seconds set for the modify ack deadline request. + * + * @example 10 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE = 'messaging.gcp_pubsub.message.ack_deadline'; +/** + * The ack id for a given message. + * + * @example "ack_id" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID = 'messaging.gcp_pubsub.message.ack_id'; +/** + * The delivery attempt for a given message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT = 'messaging.gcp_pubsub.message.delivery_attempt'; +/** + * The ordering key for a given message. If the attribute is not present, the message does not have an ordering key. + * + * @example "ordering_key" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY = 'messaging.gcp_pubsub.message.ordering_key'; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "my-group" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name`. + */ +exports.ATTR_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer.group'; +/** + * Deprecated, use `messaging.destination.partition.id` instead. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Record string representation of the partition id in `messaging.destination.partition.id` attribute. + */ +exports.ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION = 'messaging.kafka.destination.partition'; +/** + * 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. + * + * @example "myKey" + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message.key'; +/** + * Deprecated, use `messaging.kafka.offset` instead. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.kafka.offset`. + */ +exports.ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET = 'messaging.kafka.message.offset'; +/** + * A boolean that is true if the message is a tombstone. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = 'messaging.kafka.message.tombstone'; +/** + * The offset of a record in the corresponding Kafka partition. + * + * @example 42 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset'; +/** + * The size of the message body in bytes. + * + * @example 1439 + * + * @note This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed + * body size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_MESSAGE_BODY_SIZE = 'messaging.message.body.size'; +/** + * The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @example "MyConversationId" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_MESSAGE_CONVERSATION_ID = 'messaging.message.conversation_id'; +/** + * The size of the message body and metadata in bytes. + * + * @example 2738 + * + * @note This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed + * size should be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE = 'messaging.message.envelope.size'; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @example "452a7c7c7c7048c2f887f61572b18fc2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id'; +/** + * Deprecated, use `messaging.operation.type` instead. + * + * @example publish + * @example create + * @example process + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.operation.type`. + */ +exports.ATTR_MESSAGING_OPERATION = 'messaging.operation'; +/** + * The system-specific name of the messaging operation. + * + * @example ack + * @example nack + * @example send + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name'; +/** + * A string identifying the type of the messaging operation. + * + * @note If a custom value is used, it **MUST** be of low cardinality. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_OPERATION_TYPE = 'messaging.operation.type'; +/** + * Enum value "create" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * A message is created. "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch sending scenarios. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_OPERATION_TYPE_VALUE_CREATE = "create"; +/** + * Enum value "deliver" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `process` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process`. + */ +exports.MESSAGING_OPERATION_TYPE_VALUE_DELIVER = "deliver"; +/** + * Enum value "process" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are processed by a consumer. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_OPERATION_TYPE_VALUE_PROCESS = "process"; +/** + * Enum value "publish" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * Deprecated. Use `send` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `send`. + */ +exports.MESSAGING_OPERATION_TYPE_VALUE_PUBLISH = "publish"; +/** + * Enum value "receive" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = "receive"; +/** + * Enum value "send" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are provided for sending to an intermediary. If a single message is sent, the context of the "Send" span can be used as the creation context and no "Create" span needs to be created. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_OPERATION_TYPE_VALUE_SEND = "send"; +/** + * Enum value "settle" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}. + * + * One or more messages are settled. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_OPERATION_TYPE_VALUE_SETTLE = "settle"; +/** + * RabbitMQ message routing key. + * + * @example "myKey" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = 'messaging.rabbitmq.destination.routing_key'; +/** + * RabbitMQ message delivery tag + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG = 'messaging.rabbitmq.message.delivery_tag'; +/** + * Deprecated, use `messaging.consumer.group.name` instead. + * + * @example "myConsumerGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.consumer.group.name` on the consumer spans. No replacement for producer spans. + */ +exports.ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP = 'messaging.rocketmq.client_group'; +/** + * Model of message consumption. This only applies to consumer spans. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL = 'messaging.rocketmq.consumption_model'; +/** + * Enum value "broadcasting" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Broadcasting consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING = "broadcasting"; +/** + * Enum value "clustering" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. + * + * Clustering consumption model + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING = "clustering"; +/** + * The delay time level for delay message, which determines the message delay time. + * + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL = 'messaging.rocketmq.message.delay_time_level'; +/** + * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + * + * @example 1665987217045 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP = 'messaging.rocketmq.message.delivery_timestamp'; +/** + * It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group. + * + * @example "myMessageGroup" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP = 'messaging.rocketmq.message.group'; +/** + * Key(s) of message, another way to mark message besides message id. + * + * @example ["keyA", "keyB"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS = 'messaging.rocketmq.message.keys'; +/** + * The secondary classifier of message besides topic. + * + * @example "tagA" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG = 'messaging.rocketmq.message.tag'; +/** + * Type of message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE = 'messaging.rocketmq.message.type'; +/** + * Enum value "delay" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Delay message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY = "delay"; +/** + * Enum value "fifo" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * FIFO message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO = "fifo"; +/** + * Enum value "normal" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Normal message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL = "normal"; +/** + * Enum value "transaction" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}. + * + * Transaction message + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION = "transaction"; +/** + * Namespace of RocketMQ resources, resources in different namespaces are individual. + * + * @example "myNamespace" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_ROCKETMQ_NAMESPACE = 'messaging.rocketmq.namespace'; +/** + * Deprecated, use `messaging.destination.subscription.name` instead. + * + * @example "subscription-a" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.destination.subscription.name`. + */ +exports.ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME = 'messaging.servicebus.destination.subscription_name'; +/** + * Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS = 'messaging.servicebus.disposition_status'; +/** + * Enum value "abandon" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is abandoned + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON = "abandon"; +/** + * Enum value "complete" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is completed + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE = "complete"; +/** + * Enum value "dead_letter" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is sent to dead letter queue + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER = "dead_letter"; +/** + * Enum value "defer" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. + * + * Message is deferred + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER = "defer"; +/** + * Number of deliveries that have been attempted for this message. + * + * @example 2 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT = 'messaging.servicebus.message.delivery_count'; +/** + * The UTC epoch seconds at which the message has been accepted and stored in the entity. + * + * @example 1701393730 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME = 'messaging.servicebus.message.enqueued_time'; +/** + * The messaging system as identified by the client instrumentation. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_MESSAGING_SYSTEM = 'messaging.system'; +/** + * Enum value "activemq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache ActiveMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_ACTIVEMQ = "activemq"; +/** + * Enum value "aws.sns" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Notification Service (SNS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_AWS_SNS = "aws.sns"; +/** + * Enum value "aws_sqs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Amazon Simple Queue Service (SQS) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_AWS_SQS = "aws_sqs"; +/** + * Enum value "eventgrid" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Grid + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_EVENTGRID = "eventgrid"; +/** + * Enum value "eventhubs" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Event Hubs + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_EVENTHUBS = "eventhubs"; +/** + * Enum value "gcp_pubsub" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Google Cloud Pub/Sub + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_GCP_PUBSUB = "gcp_pubsub"; +/** + * Enum value "jms" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Java Message Service + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_JMS = "jms"; +/** + * Enum value "kafka" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Kafka + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_KAFKA = "kafka"; +/** + * Enum value "pulsar" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache Pulsar + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_PULSAR = "pulsar"; +/** + * Enum value "rabbitmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * RabbitMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_RABBITMQ = "rabbitmq"; +/** + * Enum value "rocketmq" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Apache RocketMQ + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_ROCKETMQ = "rocketmq"; +/** + * Enum value "servicebus" for attribute {@link ATTR_MESSAGING_SYSTEM}. + * + * Azure Service Bus + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.MESSAGING_SYSTEM_VALUE_SERVICEBUS = "servicebus"; +/** + * Deprecated, use `network.local.address`. + * + * @example "192.168.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +exports.ATTR_NET_HOST_IP = 'net.host.ip'; +/** + * Deprecated, use `server.address`. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +exports.ATTR_NET_HOST_NAME = 'net.host.name'; +/** + * Deprecated, use `server.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port`. + */ +exports.ATTR_NET_HOST_PORT = 'net.host.port'; +/** + * Deprecated, use `network.peer.address`. + * + * @example "127.0.0.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +exports.ATTR_NET_PEER_IP = 'net.peer.ip'; +/** + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +exports.ATTR_NET_PEER_NAME = 'net.peer.name'; +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. + */ +exports.ATTR_NET_PEER_PORT = 'net.peer.port'; +/** + * Deprecated, use `network.protocol.name`. + * + * @example amqp + * @example http + * @example mqtt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.name`. + */ +exports.ATTR_NET_PROTOCOL_NAME = 'net.protocol.name'; +/** + * Deprecated, use `network.protocol.version`. + * + * @example "3.1.1" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.protocol.version`. + */ +exports.ATTR_NET_PROTOCOL_VERSION = 'net.protocol.version'; +/** + * Deprecated, use `network.transport` and `network.type`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Split to `network.transport` and `network.type`. + */ +exports.ATTR_NET_SOCK_FAMILY = 'net.sock.family'; +/** + * Enum value "inet" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv4 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NET_SOCK_FAMILY_VALUE_INET = "inet"; +/** + * Enum value "inet6" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * IPv6 address + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NET_SOCK_FAMILY_VALUE_INET6 = "inet6"; +/** + * Enum value "unix" for attribute {@link ATTR_NET_SOCK_FAMILY}. + * + * Unix domain socket path + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NET_SOCK_FAMILY_VALUE_UNIX = "unix"; +/** + * Deprecated, use `network.local.address`. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.address`. + */ +exports.ATTR_NET_SOCK_HOST_ADDR = 'net.sock.host.addr'; +/** + * Deprecated, use `network.local.port`. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.local.port`. + */ +exports.ATTR_NET_SOCK_HOST_PORT = 'net.sock.host.port'; +/** + * Deprecated, use `network.peer.address`. + * + * @example 192.168.0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.address`. + */ +exports.ATTR_NET_SOCK_PEER_ADDR = 'net.sock.peer.addr'; +/** + * Deprecated, no replacement at this time. + * + * @example /var/my.sock + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed. No replacement at this time. + */ +exports.ATTR_NET_SOCK_PEER_NAME = 'net.sock.peer.name'; +/** + * Deprecated, use `network.peer.port`. + * + * @example 65531 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.peer.port`. + */ +exports.ATTR_NET_SOCK_PEER_PORT = 'net.sock.peer.port'; +/** + * Deprecated, use `network.transport`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.transport`. + */ +exports.ATTR_NET_TRANSPORT = 'net.transport'; +/** + * Enum value "inproc" for attribute {@link ATTR_NET_TRANSPORT}. + * + * In-process communication. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NET_TRANSPORT_VALUE_INPROC = "inproc"; +/** + * Enum value "ip_tcp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NET_TRANSPORT_VALUE_IP_TCP = "ip_tcp"; +/** + * Enum value "ip_udp" for attribute {@link ATTR_NET_TRANSPORT}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NET_TRANSPORT_VALUE_IP_UDP = "ip_udp"; +/** + * Enum value "other" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Something else (non IP-based). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NET_TRANSPORT_VALUE_OTHER = "other"; +/** + * Enum value "pipe" for attribute {@link ATTR_NET_TRANSPORT}. + * + * Named or anonymous pipe. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NET_TRANSPORT_VALUE_PIPE = "pipe"; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @example "DE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NETWORK_CARRIER_ICC = 'network.carrier.icc'; +/** + * The mobile carrier country code. + * + * @example "310" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NETWORK_CARRIER_MCC = 'network.carrier.mcc'; +/** + * The mobile carrier network code. + * + * @example "001" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NETWORK_CARRIER_MNC = 'network.carrier.mnc'; +/** + * The name of the mobile carrier. + * + * @example "sprint" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NETWORK_CARRIER_NAME = 'network.carrier.name'; +/** + * The state of network connection + * + * @example close_wait + * + * @note Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2) + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NETWORK_CONNECTION_STATE = 'network.connection.state'; +/** + * Enum value "close_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_CLOSE_WAIT = "close_wait"; +/** + * Enum value "closed" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_CLOSED = "closed"; +/** + * Enum value "closing" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_CLOSING = "closing"; +/** + * Enum value "established" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_ESTABLISHED = "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_1 = "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_2 = "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_LAST_ACK = "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_LISTEN = "listen"; +/** + * Enum value "syn_received" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_SYN_RECEIVED = "syn_received"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_SYN_SENT = "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_STATE_VALUE_TIME_WAIT = "time_wait"; +/** + * 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. + * + * @example "LTE" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NETWORK_CONNECTION_SUBTYPE = 'network.connection.subtype'; +/** + * Enum value "cdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA = "cdma"; +/** + * Enum value "cdma2000_1xrtt" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * CDMA2000 1XRTT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT = "cdma2000_1xrtt"; +/** + * Enum value "edge" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EDGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE = "edge"; +/** + * Enum value "ehrpd" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EHRPD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD = "ehrpd"; +/** + * Enum value "evdo_0" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rel. 0 + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 = "evdo_0"; +/** + * Enum value "evdo_a" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. A + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A = "evdo_a"; +/** + * Enum value "evdo_b" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * EVDO Rev. B + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B = "evdo_b"; +/** + * Enum value "gprs" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GPRS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS = "gprs"; +/** + * Enum value "gsm" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * GSM + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_GSM = "gsm"; +/** + * Enum value "hsdpa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSDPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA = "hsdpa"; +/** + * Enum value "hspa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA = "hspa"; +/** + * Enum value "hspap" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSPAP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP = "hspap"; +/** + * Enum value "hsupa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * HSUPA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA = "hsupa"; +/** + * Enum value "iden" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IDEN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN = "iden"; +/** + * Enum value "iwlan" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * IWLAN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN = "iwlan"; +/** + * Enum value "lte" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_LTE = "lte"; +/** + * Enum value "lte_ca" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * LTE CA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA = "lte_ca"; +/** + * Enum value "nr" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NR (New Radio) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_NR = "nr"; +/** + * Enum value "nrnsa" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * 5G NRNSA (New Radio Non-Standalone) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA = "nrnsa"; +/** + * Enum value "td_scdma" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * TD-SCDMA + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA = "td_scdma"; +/** + * Enum value "umts" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}. + * + * UMTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS = "umts"; +/** + * The internet connection type. + * + * @example "wifi" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NETWORK_CONNECTION_TYPE = 'network.connection.type'; +/** + * Enum value "cell" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_TYPE_VALUE_CELL = "cell"; +/** + * Enum value "unavailable" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE = "unavailable"; +/** + * Enum value "unknown" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN = "unknown"; +/** + * Enum value "wifi" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_TYPE_VALUE_WIFI = "wifi"; +/** + * Enum value "wired" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_CONNECTION_TYPE_VALUE_WIRED = "wired"; +/** + * The network interface name. + * + * @example lo + * @example eth0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NETWORK_INTERFACE_NAME = 'network.interface.name'; +/** + * The network IO operation direction. + * + * @example transmit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NETWORK_IO_DIRECTION = 'network.io.direction'; +/** + * Enum value "receive" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_IO_DIRECTION_VALUE_RECEIVE = "receive"; +/** + * Enum value "transmit" for attribute {@link ATTR_NETWORK_IO_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NETWORK_IO_DIRECTION_VALUE_TRANSMIT = "transmit"; +/** + * NFSv4+ operation name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NFS_OPERATION_NAME = 'nfs.operation.name'; +/** + * Linux: one of "hit" (NFSD_STATS_RC_HITS), "miss" (NFSD_STATS_RC_MISSES), or "nocache" (NFSD_STATS_RC_NOCACHE -- uncacheable) + * + * @example "hit" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NFS_SERVER_REPCACHE_STATUS = 'nfs.server.repcache.status'; +/** + * The state of event loop time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_NODEJS_EVENTLOOP_STATE = 'nodejs.eventloop.state'; +/** + * Enum value "active" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Active time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE = "active"; +/** + * Enum value "idle" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}. + * + * Idle time. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.NODEJS_EVENTLOOP_STATE_VALUE_IDLE = "idle"; +/** + * The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known. + * + * @example sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4 + * + * @note Follows [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), and specifically the [Digest property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests). + * An example can be found in [Example Image Manifest](https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OCI_MANIFEST_DIGEST = 'oci.manifest.digest'; +/** + * ONC/Sun RPC procedure name. + * + * @example OPEN + * @example READ + * @example GETATTR + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ONC_RPC_PROCEDURE_NAME = 'onc_rpc.procedure.name'; +/** + * ONC/Sun RPC procedure number. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ONC_RPC_PROCEDURE_NUMBER = 'onc_rpc.procedure.number'; +/** + * ONC/Sun RPC program name. + * + * @example portmapper + * @example nfs + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ONC_RPC_PROGRAM_NAME = 'onc_rpc.program.name'; +/** + * ONC/Sun RPC program version. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ONC_RPC_VERSION = 'onc_rpc.version'; +/** + * The service tier requested. May be a specific tier, default, or auto. + * + * @example auto + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OPENAI_REQUEST_SERVICE_TIER = 'openai.request.service_tier'; +/** + * Enum value "auto" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize scale tier credits until they are exhausted. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = "auto"; +/** + * Enum value "default" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}. + * + * The system will utilize the default scale tier. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = "default"; +/** + * The service tier used for the response. + * + * @example scale + * @example default + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OPENAI_RESPONSE_SERVICE_TIER = 'openai.response.service_tier'; +/** + * A fingerprint to track any eventual change in the Generative AI environment. + * + * @example fp_44709d6fcb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'openai.response.system_fingerprint'; +/** + * The name of the cluster quota. + * + * @example opentelemetry + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OPENSHIFT_CLUSTERQUOTA_NAME = 'openshift.clusterquota.name'; +/** + * The UID of the cluster quota. + * + * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OPENSHIFT_CLUSTERQUOTA_UID = 'openshift.clusterquota.uid'; +/** + * Parent-child Reference type + * + * @note The causal relationship between a child Span and a parent Span. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OPENTRACING_REF_TYPE = 'opentracing.ref_type'; +/** + * Enum value "child_of" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span depends on the child Span in some capacity + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OPENTRACING_REF_TYPE_VALUE_CHILD_OF = "child_of"; +/** + * Enum value "follows_from" for attribute {@link ATTR_OPENTRACING_REF_TYPE}. + * + * The parent Span doesn't depend in any way on the result of the child Span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM = "follows_from"; +/** + * Unique identifier for a particular build or compilation of the operating system. + * + * @example TQ3C.230805.001.B2 + * @example 20E247 + * @example 22621 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OS_BUILD_ID = 'os.build_id'; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @example Microsoft Windows [Version 10.0.18363.778] + * @example Ubuntu 18.04.1 LTS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OS_DESCRIPTION = 'os.description'; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OS_NAME = 'os.name'; +/** + * The operating system type. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OS_TYPE = 'os.type'; +/** + * Enum value "aix" for attribute {@link ATTR_OS_TYPE}. + * + * AIX (Advanced Interactive eXecutive) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_AIX = "aix"; +/** + * Enum value "darwin" for attribute {@link ATTR_OS_TYPE}. + * + * Apple Darwin + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_DARWIN = "darwin"; +/** + * Enum value "dragonflybsd" for attribute {@link ATTR_OS_TYPE}. + * + * DragonFly BSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_DRAGONFLYBSD = "dragonflybsd"; +/** + * Enum value "freebsd" for attribute {@link ATTR_OS_TYPE}. + * + * FreeBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_FREEBSD = "freebsd"; +/** + * Enum value "hpux" for attribute {@link ATTR_OS_TYPE}. + * + * HP-UX (Hewlett Packard Unix) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_HPUX = "hpux"; +/** + * Enum value "linux" for attribute {@link ATTR_OS_TYPE}. + * + * Linux + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_LINUX = "linux"; +/** + * Enum value "netbsd" for attribute {@link ATTR_OS_TYPE}. + * + * NetBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_NETBSD = "netbsd"; +/** + * Enum value "openbsd" for attribute {@link ATTR_OS_TYPE}. + * + * OpenBSD + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_OPENBSD = "openbsd"; +/** + * Enum value "solaris" for attribute {@link ATTR_OS_TYPE}. + * + * SunOS, Oracle Solaris + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_SOLARIS = "solaris"; +/** + * Enum value "windows" for attribute {@link ATTR_OS_TYPE}. + * + * Microsoft Windows + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_WINDOWS = "windows"; +/** + * Enum value "z_os" for attribute {@link ATTR_OS_TYPE}. + * + * Deprecated. Use `zos` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `zos`. + */ +exports.OS_TYPE_VALUE_Z_OS = "z_os"; +/** + * Enum value "zos" for attribute {@link ATTR_OS_TYPE}. + * + * IBM z/OS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OS_TYPE_VALUE_ZOS = "zos"; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OS_VERSION = 'os.version'; +/** + * A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. + * + * @example otlp_grpc_span_exporter/0 + * @example custom-name + * + * @note Implementations **SHOULD** ensure a low cardinality for this attribute, even across application or SDK restarts. + * E.g. implementations **MUST NOT** use UUIDs as values for this attribute. + * + * Implementations **MAY** achieve these goals by following a `/` pattern, e.g. `batching_span_processor/0`. + * Hereby `otel.component.type` refers to the corresponding attribute value of the component. + * + * The value of `instance-counter` **MAY** be automatically assigned by the component and uniqueness within the enclosing SDK instance **MUST** be guaranteed. + * For example, `` **MAY** be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an + * instance of the given component type is started. + * + * With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0` + * as `otel.component.name`, the second one `batching_span_processor/1` and so on. + * These values will therefore be reused in the case of an application restart. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OTEL_COMPONENT_NAME = 'otel.component.name'; +/** + * A name identifying the type of the OpenTelemetry component. + * + * @example batching_span_processor + * @example com.example.MySpanExporter + * + * @note If none of the standardized values apply, implementations **SHOULD** use the language-defined name of the type. + * E.g. for Java the fully qualified classname **SHOULD** be used in this case. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OTEL_COMPONENT_TYPE = 'otel.component.type'; +/** + * Enum value "batching_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR = "batching_log_processor"; +/** + * Enum value "batching_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK batching span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR = "batching_span_processor"; +/** + * Enum value "otlp_grpc_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_LOG_EXPORTER = "otlp_grpc_log_exporter"; +/** + * Enum value "otlp_grpc_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_METRIC_EXPORTER = "otlp_grpc_metric_exporter"; +/** + * Enum value "otlp_grpc_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over gRPC with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER = "otlp_grpc_span_exporter"; +/** + * Enum value "otlp_http_json_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_LOG_EXPORTER = "otlp_http_json_log_exporter"; +/** + * Enum value "otlp_http_json_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_METRIC_EXPORTER = "otlp_http_json_metric_exporter"; +/** + * Enum value "otlp_http_json_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with JSON serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER = "otlp_http_json_span_exporter"; +/** + * Enum value "otlp_http_log_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP log record exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER = "otlp_http_log_exporter"; +/** + * Enum value "otlp_http_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP metric exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_METRIC_EXPORTER = "otlp_http_metric_exporter"; +/** + * Enum value "otlp_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * OTLP span exporter over HTTP with protobuf serialization + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER = "otlp_http_span_exporter"; +/** + * Enum value "periodic_metric_reader" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK periodically exporting metric reader + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_PERIODIC_METRIC_READER = "periodic_metric_reader"; +/** + * Enum value "prometheus_http_text_metric_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Prometheus metric exporter over HTTP with the default text-based format + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_PROMETHEUS_HTTP_TEXT_METRIC_EXPORTER = "prometheus_http_text_metric_exporter"; +/** + * Enum value "simple_log_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple log record processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR = "simple_log_processor"; +/** + * Enum value "simple_span_processor" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * The builtin SDK simple span processor + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR = "simple_span_processor"; +/** + * Enum value "zipkin_http_span_exporter" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}. + * + * Zipkin span exporter over HTTP + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_COMPONENT_TYPE_VALUE_ZIPKIN_HTTP_SPAN_EXPORTER = "zipkin_http_span_exporter"; +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @note This attribute **SHOULD** be used by non-OTLP exporters when destination does not support `EventName` or equivalent field. This attribute **MAY** be used by applications using existing logging libraries so that it can be used to set the `EventName` field by Collector or SDK components. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OTEL_EVENT_NAME = 'otel.event.name'; +/** + * Deprecated. Use the `otel.scope.name` attribute + * + * @example io.opentelemetry.contrib.mongodb + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.name`. + */ +exports.ATTR_OTEL_LIBRARY_NAME = 'otel.library.name'; +/** + * Deprecated. Use the `otel.scope.version` attribute. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.scope.version`. + */ +exports.ATTR_OTEL_LIBRARY_VERSION = 'otel.library.version'; +/** + * The schema URL of the instrumentation scope. + * + * @example https://opentelemetry.io/schemas/1.31.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OTEL_SCOPE_SCHEMA_URL = 'otel.scope.schema_url'; +/** + * 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) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin'; +/** + * Enum value "local" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is false + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_SPAN_PARENT_ORIGIN_VALUE_LOCAL = "local"; +/** + * Enum value "none" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span does not have a parent, it is a root span + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_SPAN_PARENT_ORIGIN_VALUE_NONE = "none"; +/** + * Enum value "remote" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}. + * + * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is true + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_SPAN_PARENT_ORIGIN_VALUE_REMOTE = "remote"; +/** + * The result value of the sampler for this span + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_OTEL_SPAN_SAMPLING_RESULT = 'otel.span.sampling_result'; +/** + * Enum value "DROP" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled and not recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP = "DROP"; +/** + * Enum value "RECORD_AND_SAMPLE" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is sampled and recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE = "RECORD_AND_SAMPLE"; +/** + * Enum value "RECORD_ONLY" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}. + * + * The span is not sampled, but recording + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY = "RECORD_ONLY"; +/** + * The [`service.name`](/docs/resource/README.md#service) of the remote service. **SHOULD** be equal to the actual `service.name` resource attribute of the remote service if any. + * + * @example "AuthTokenCache" + * + * @note Examples of `peer.service` that users may specify: + * + * - A Redis cache of auth tokens as `peer.service="AuthTokenCache"`. + * - A gRPC service `rpc.service="io.opentelemetry.AuthService"` may be hosted in both a gateway, `peer.service="ExternalApiService"` and a backend, `peer.service="AuthService"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `service.peer.name`. + */ +exports.ATTR_PEER_SERVICE = 'peer.service'; +/** + * Deprecated, use `db.client.connection.pool.name` instead. + * + * @example myDataSource + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pool.name`. + */ +exports.ATTR_POOL_NAME = 'pool.name'; +/** + * Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PPROF_LOCATION_IS_FOLDED = 'pprof.location.is_folded'; +/** + * Indicates that there are filenames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PPROF_MAPPING_HAS_FILENAMES = 'pprof.mapping.has_filenames'; +/** + * Indicates that there are functions related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PPROF_MAPPING_HAS_FUNCTIONS = 'pprof.mapping.has_functions'; +/** + * Indicates that there are inline frames related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PPROF_MAPPING_HAS_INLINE_FRAMES = 'pprof.mapping.has_inline_frames'; +/** + * Indicates that there are line numbers related to this mapping. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PPROF_MAPPING_HAS_LINE_NUMBERS = 'pprof.mapping.has_line_numbers'; +/** + * Free-form text associated with the profile. This field should not be used to store any machine-readable information, it is only for human-friendly content. + * + * @example ["hello world", "bazinga"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PPROF_PROFILE_COMMENT = 'pprof.profile.comment'; +/** + * Documentation link for this profile type. + * + * @example http://pprof.example.com/cpu-profile.html + * + * @note The URL must be absolute and may be missing if the profile was generated by code that did not supply a link + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PPROF_PROFILE_DOC_URL = 'pprof.profile.doc_url'; +/** + * Frames with Function.function_name fully matching the regexp will be dropped from the samples, along with their successors. + * + * @example /foobar/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PPROF_PROFILE_DROP_FRAMES = 'pprof.profile.drop_frames'; +/** + * Frames with Function.function_name fully matching the regexp will be kept, even if it matches drop_frames. + * + * @example /bazinga/ + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PPROF_PROFILE_KEEP_FRAMES = 'pprof.profile.keep_frames'; +/** + * Length of the process.command_args array + * + * @example 4 + * + * @note This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_ARGS_COUNT = 'process.args_count'; +/** + * 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`. + * + * @example cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_COMMAND = 'process.command'; +/** + * 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`. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example ["cmd/otecol", "--config=config.yaml"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_COMMAND_ARGS = 'process.command_args'; +/** + * 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. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data. + * + * @example C:\\cmd\\otecol --config="my directory\\config.yaml" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_COMMAND_LINE = 'process.command_line'; +/** + * Specifies whether the context switches for this data point were voluntary or involuntary. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_CONTEXT_SWITCH_TYPE = 'process.context_switch.type'; +/** + * Enum value "involuntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY = "involuntary"; +/** + * Enum value "voluntary" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY = "voluntary"; +/** + * Deprecated, use `cpu.mode` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +exports.ATTR_PROCESS_CPU_STATE = 'process.cpu.state'; +/** + * Enum value "system" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_CPU_STATE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_CPU_STATE_VALUE_USER = "user"; +/** + * Enum value "wait" for attribute {@link ATTR_PROCESS_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_CPU_STATE_VALUE_WAIT = "wait"; +/** + * The date and time the process was created, in ISO 8601 format. + * + * @example 2023-11-21T09:25:34.853Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_CREATION_TIME = 'process.creation.time'; +/** + * Process environment variables, `` being the environment variable name, the value being the environment variable value. + * + * @example ubuntu + * @example /usr/local/bin:/usr/bin + * + * @note Examples: + * + * - an environment variable `USER` with value `"ubuntu"` **SHOULD** be recorded + * as the `process.environment_variable.USER` attribute with value `"ubuntu"`. + * - an environment variable `PATH` with value `"/usr/local/bin:/usr/bin"` + * **SHOULD** be recorded as the `process.environment_variable.PATH` attribute + * with value `"/usr/local/bin:/usr/bin"`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_PROCESS_ENVIRONMENT_VARIABLE = (key) => `process.environment_variable.${key}`; +exports.ATTR_PROCESS_ENVIRONMENT_VARIABLE = ATTR_PROCESS_ENVIRONMENT_VARIABLE; +/** + * The GNU build ID as found in the `.note.gnu.build-id` ELF section (hex string). + * + * @example c89b11207f6479603b0d49bf291c092c2b719293 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU = 'process.executable.build_id.gnu'; +/** + * The Go build ID as retrieved by `go tool buildid `. + * + * @example foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO = 'process.executable.build_id.go'; +/** + * Profiling specific build ID for executables. See the OTel specification for Profiles for more information. + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH = 'process.executable.build_id.htlhash'; +/** + * "Deprecated, use `process.executable.build_id.htlhash` instead." + * + * @example 600DCAFE4A110000F2BF38C493F5FB92 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.executable.build_id.htlhash`. + */ +exports.ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING = 'process.executable.build_id.profiling'; +/** + * 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`. + * + * @example otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name'; +/** + * 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`. + * + * @example /usr/bin/cmd/otelcol + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path'; +/** + * The exit code of the process. + * + * @example 127 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_EXIT_CODE = 'process.exit.code'; +/** + * The date and time the process exited, in ISO 8601 format. + * + * @example 2023-11-21T09:26:12.315Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_EXIT_TIME = 'process.exit.time'; +/** + * The PID of the process's group leader. This is also the process group ID (PGID) of the process. + * + * @example 23 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_GROUP_LEADER_PID = 'process.group_leader.pid'; +/** + * Whether the process is connected to an interactive shell. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_INTERACTIVE = 'process.interactive'; +/** + * The control group associated with the process. + * + * @example 1:name=systemd:/user.slice/user-1000.slice/session-3.scope + * @example 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope + * + * @note Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the [/proc/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_LINUX_CGROUP = 'process.linux.cgroup'; +/** + * The username of the user that owns the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_OWNER = 'process.owner'; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +exports.ATTR_PROCESS_PAGING_FAULT_TYPE = 'process.paging.fault_type'; +/** + * Enum value "major" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR = "minor"; +/** + * Parent Process identifier (PPID). + * + * @example 111 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_PARENT_PID = 'process.parent_pid'; +/** + * Process identifier (PID). + * + * @example 1234 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_PID = 'process.pid'; +/** + * The real user ID (RUID) of the process. + * + * @example 1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_REAL_USER_ID = 'process.real_user.id'; +/** + * The username of the real user of the process. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_REAL_USER_NAME = 'process.real_user.name'; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @example "Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'; +/** + * The name of the runtime of this process. + * + * @example OpenJDK Runtime Environment + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @example "14.0.2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version'; +/** + * The saved user ID (SUID) of the process. + * + * @example 1002 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_SAVED_USER_ID = 'process.saved_user.id'; +/** + * The username of the saved user. + * + * @example operator + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_SAVED_USER_NAME = 'process.saved_user.name'; +/** + * The PID of the process's session leader. This is also the session ID (SID) of the process. + * + * @example 14 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_SESSION_LEADER_PID = 'process.session_leader.pid'; +/** + * The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES) + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_STATE = 'process.state'; +/** + * Enum value "defunct" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_STATE_VALUE_DEFUNCT = "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_STATE_VALUE_RUNNING = "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_STATE_VALUE_SLEEPING = "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_PROCESS_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROCESS_STATE_VALUE_STOPPED = "stopped"; +/** + * Process title (proctitle) + * + * @example cat /etc/hostname + * @example xfce4-session + * @example bash + * + * @note In many Unix-like systems, process title (proctitle), is the string that represents the name or command line of a running process, displayed by system monitoring tools like ps, top, and htop. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_TITLE = 'process.title'; +/** + * The effective user ID (EUID) of the process. + * + * @example 1001 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_USER_ID = 'process.user.id'; +/** + * The username of the effective user of the process. + * + * @example root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_USER_NAME = 'process.user.name'; +/** + * Virtual process identifier. + * + * @example 12 + * + * @note The process ID within a PID namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_VPID = 'process.vpid'; +/** + * The working directory of the process. + * + * @example /root + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROCESS_WORKING_DIRECTORY = 'process.working_directory'; +/** + * Describes the interpreter or compiler of a single frame. + * + * @example cpython + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_PROFILE_FRAME_TYPE = 'profile.frame.type'; +/** + * Enum value "beam" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Erlang](https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_BEAM = "beam"; +/** + * Enum value "cpython" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Python](https://wikipedia.org/wiki/Python_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_CPYTHON = "cpython"; +/** + * Enum value "dotnet" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [.NET](https://wikipedia.org/wiki/.NET) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_DOTNET = "dotnet"; +/** + * Enum value "go" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Go](https://wikipedia.org/wiki/Go_(programming_language)), + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_GO = "go"; +/** + * Enum value "jvm" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [JVM](https://wikipedia.org/wiki/Java_virtual_machine) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_JVM = "jvm"; +/** + * Enum value "kernel" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Kernel](https://wikipedia.org/wiki/Kernel_(operating_system)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_KERNEL = "kernel"; +/** + * Enum value "native" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * Can be one of but not limited to [C](https://wikipedia.org/wiki/C_(programming_language)), [C++](https://wikipedia.org/wiki/C%2B%2B), [Go](https://wikipedia.org/wiki/Go_(programming_language)) or [Rust](https://wikipedia.org/wiki/Rust_(programming_language)). If possible, a more precise value **MUST** be used. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_NATIVE = "native"; +/** + * Enum value "perl" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Perl](https://wikipedia.org/wiki/Perl) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_PERL = "perl"; +/** + * Enum value "php" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [PHP](https://wikipedia.org/wiki/PHP) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_PHP = "php"; +/** + * Enum value "ruby" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Ruby](https://wikipedia.org/wiki/Ruby_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_RUBY = "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [Rust](https://wikipedia.org/wiki/Rust_(programming_language)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_RUST = "rust"; +/** + * Enum value "v8js" for attribute {@link ATTR_PROFILE_FRAME_TYPE}. + * + * [V8JS](https://wikipedia.org/wiki/V8_(JavaScript_engine)) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.PROFILE_FRAME_TYPE_VALUE_V8JS = "v8js"; +/** + * Deprecated, use `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.status_code`. + */ +exports.ATTR_RPC_CONNECT_RPC_ERROR_CODE = 'rpc.connect_rpc.error_code'; +/** + * Enum value "aborted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED = "aborted"; +/** + * Enum value "already_exists" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS = "already_exists"; +/** + * Enum value "cancelled" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED = "cancelled"; +/** + * Enum value "data_loss" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS = "data_loss"; +/** + * Enum value "deadline_exceeded" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED = "deadline_exceeded"; +/** + * Enum value "failed_precondition" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION = "failed_precondition"; +/** + * Enum value "internal" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL = "internal"; +/** + * Enum value "invalid_argument" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT = "invalid_argument"; +/** + * Enum value "not_found" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND = "not_found"; +/** + * Enum value "out_of_range" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE = "out_of_range"; +/** + * Enum value "permission_denied" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED = "permission_denied"; +/** + * Enum value "resource_exhausted" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED = "resource_exhausted"; +/** + * Enum value "unauthenticated" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED = "unauthenticated"; +/** + * Enum value "unavailable" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE = "unavailable"; +/** + * Enum value "unimplemented" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED = "unimplemented"; +/** + * Enum value "unknown" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN = "unknown"; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +const ATTR_RPC_CONNECT_RPC_REQUEST_METADATA = (key) => `rpc.connect_rpc.request.metadata.${key}`; +exports.ATTR_RPC_CONNECT_RPC_REQUEST_METADATA = ATTR_RPC_CONNECT_RPC_REQUEST_METADATA; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +const ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA = (key) => `rpc.connect_rpc.response.metadata.${key}`; +exports.ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA = ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA; +/** + * Deprecated, use `rpc.request.metadata` instead. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.request.metadata`. + */ +const ATTR_RPC_GRPC_REQUEST_METADATA = (key) => `rpc.grpc.request.metadata.${key}`; +exports.ATTR_RPC_GRPC_REQUEST_METADATA = ATTR_RPC_GRPC_REQUEST_METADATA; +/** + * Deprecated, use `rpc.response.metadata` instead. + * + * @example ["attribute_value"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.response.metadata`. + */ +const ATTR_RPC_GRPC_RESPONSE_METADATA = (key) => `rpc.grpc.response.metadata.${key}`; +exports.ATTR_RPC_GRPC_RESPONSE_METADATA = ATTR_RPC_GRPC_RESPONSE_METADATA; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the gRPC status code on the `rpc.response.status_code` attribute. + */ +exports.ATTR_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code'; +/** + * Enum value 0 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OK + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_OK = 0; +/** + * Enum value 1 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * CANCELLED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_CANCELLED = 1; +/** + * Enum value 2 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNKNOWN + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN = 2; +/** + * Enum value 3 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INVALID_ARGUMENT + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT = 3; +/** + * Enum value 4 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DEADLINE_EXCEEDED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED = 4; +/** + * Enum value 5 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * NOT_FOUND + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND = 5; +/** + * Enum value 6 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ALREADY_EXISTS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS = 6; +/** + * Enum value 7 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * PERMISSION_DENIED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED = 7; +/** + * Enum value 8 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * RESOURCE_EXHAUSTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED = 8; +/** + * Enum value 9 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * FAILED_PRECONDITION + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION = 9; +/** + * Enum value 10 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * ABORTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_ABORTED = 10; +/** + * Enum value 11 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * OUT_OF_RANGE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE = 11; +/** + * Enum value 12 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNIMPLEMENTED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED = 12; +/** + * Enum value 13 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * INTERNAL + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_INTERNAL = 13; +/** + * Enum value 14 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAVAILABLE + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE = 14; +/** + * Enum value 15 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * DATA_LOSS + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS = 15; +/** + * Enum value 16 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}. + * + * UNAUTHENTICATED + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED = 16; +/** + * Deprecated, use string representation on the `rpc.response.status_code` attribute instead. + * + * @example -32700 + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use string representation of the error code on the `rpc.response.status_code` attribute. + */ +exports.ATTR_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code'; +/** + * Deprecated, use span status description or `error.message` attribute on other signals. + * + * @example Parse error + * @example User already exists + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Use the span status description or `error.message` attribute on other signals. + */ +exports.ATTR_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message'; +/** + * Deprecated, use `jsonrpc.request.id` instead. + * + * @example 10 + * @example request-7 + * @example + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.request.id`. + */ +exports.ATTR_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id'; +/** + * Deprecated, use `jsonrpc.protocol.version` instead. + * + * @example 2.0 + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jsonrpc.protocol.version`. + */ +exports.ATTR_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version'; +/** + * Compressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_RPC_MESSAGE_COMPRESSED_SIZE = 'rpc.message.compressed_size'; +/** + * **MUST** be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * @note This way we guarantee that the values will be consistent between different implementations. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_RPC_MESSAGE_ID = 'rpc.message.id'; +/** + * Whether this is a received or sent message. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_RPC_MESSAGE_TYPE = 'rpc.message.type'; +/** + * Enum value "RECEIVED" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_MESSAGE_TYPE_VALUE_RECEIVED = "RECEIVED"; +/** + * Enum value "SENT" for attribute {@link ATTR_RPC_MESSAGE_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_MESSAGE_TYPE_VALUE_SENT = "SENT"; +/** + * Uncompressed size of the message in bytes. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE = 'rpc.message.uncompressed_size'; +/** + * The fully-qualified logical name of the method from the RPC interface perspective. + * + * @example com.example.ExampleService/exampleMethod + * @example EchoService/Echo + * @example _OTHER + * + * @note The method name **MAY** have unbounded cardinality in edge or error cases. + * + * Some RPC frameworks or libraries provide a fixed set of recognized methods + * for client stubs and server implementations. Instrumentations for such + * frameworks **MUST** set this attribute to the original method name only + * when the method is recognized by the framework or library. + * + * When the method is not recognized, for example, when the server receives + * a request for a method that is not predefined on the server, or when + * instrumentation is not able to reliably detect if the method is predefined, + * the attribute **MUST** be set to `_OTHER`. In such cases, tracing + * instrumentations **MUST** also set `rpc.method_original` attribute to + * the original method value. + * + * If the RPC instrumentation could end up converting valid RPC methods to + * `_OTHER`, then it **SHOULD** provide a way to configure the list of recognized + * RPC methods. + * + * The `rpc.method` can be different from the name of any implementing + * method/function. + * The `code.function.name` attribute may be used to record the fully-qualified + * method actually executing the call on the server side, or the + * RPC client stub method on the client side. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_RPC_METHOD = 'rpc.method'; +/** + * The original name of the method used by the client. + * + * @example com.myservice.EchoService/catchAll + * @example com.myservice.EchoService/unknownMethod + * @example InvalidMethod + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_RPC_METHOD_ORIGINAL = 'rpc.method_original'; +/** + * RPC request metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["1.2.3.4", "1.2.3.5"]` **SHOULD** be recorded as + * `rpc.request.metadata.my-custom-key` attribute with value `["1.2.3.4", "1.2.3.5"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_RPC_REQUEST_METADATA = (key) => `rpc.request.metadata.${key}`; +exports.ATTR_RPC_REQUEST_METADATA = ATTR_RPC_REQUEST_METADATA; +/** + * RPC response metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + * + * @example ["attribute_value"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. + * Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * For example, a property `my-custom-key` with value `["attribute_value"]` **SHOULD** be recorded as + * the `rpc.response.metadata.my-custom-key` attribute with value `["attribute_value"]` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +const ATTR_RPC_RESPONSE_METADATA = (key) => `rpc.response.metadata.${key}`; +exports.ATTR_RPC_RESPONSE_METADATA = ATTR_RPC_RESPONSE_METADATA; +/** + * Status code of the RPC returned by the RPC server or generated by the client + * + * @example OK + * @example DEADLINE_EXCEEDED + * @example -32602 + * + * @note Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes. + * Semantic conventions for individual RPC frameworks **SHOULD** document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_RPC_RESPONSE_STATUS_CODE = 'rpc.response.status_code'; +/** + * Deprecated, use fully-qualified `rpc.method` instead. + * + * @example "myservice.EchoService" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Value should be included in `rpc.method` which is expected to be a fully-qualified name. + */ +exports.ATTR_RPC_SERVICE = 'rpc.service'; +/** + * Deprecated, use `rpc.system.name` attribute instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.system.name`. + */ +exports.ATTR_RPC_SYSTEM = 'rpc.system'; +/** + * Enum value "apache_dubbo" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Apache Dubbo + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_VALUE_APACHE_DUBBO = "apache_dubbo"; +/** + * Enum value "connect_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Connect RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_VALUE_CONNECT_RPC = "connect_rpc"; +/** + * Enum value "dotnet_wcf" for attribute {@link ATTR_RPC_SYSTEM}. + * + * .NET WCF + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_VALUE_DOTNET_WCF = "dotnet_wcf"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * gRPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_VALUE_GRPC = "grpc"; +/** + * Enum value "java_rmi" for attribute {@link ATTR_RPC_SYSTEM}. + * + * Java RMI + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_VALUE_JAVA_RMI = "java_rmi"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * JSON-RPC + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_VALUE_JSONRPC = "jsonrpc"; +/** + * Enum value "onc_rpc" for attribute {@link ATTR_RPC_SYSTEM}. + * + * [ONC RPC (Sun RPC)](https://datatracker.ietf.org/doc/html/rfc5531) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_VALUE_ONC_RPC = "onc_rpc"; +/** + * The Remote Procedure Call (RPC) system. + * + * @note The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_RPC_SYSTEM_NAME = 'rpc.system.name'; +/** + * Enum value "connectrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Connect RPC](https://connectrpc.com/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_NAME_VALUE_CONNECTRPC = "connectrpc"; +/** + * Enum value "dubbo" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [Apache Dubbo](https://dubbo.apache.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_NAME_VALUE_DUBBO = "dubbo"; +/** + * Enum value "grpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [gRPC](https://grpc.io/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_NAME_VALUE_GRPC = "grpc"; +/** + * Enum value "jsonrpc" for attribute {@link ATTR_RPC_SYSTEM_NAME}. + * + * [JSON-RPC](https://www.jsonrpc.org/) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.RPC_SYSTEM_NAME_VALUE_JSONRPC = "jsonrpc"; +/** + * A categorization value keyword used by the entity using the rule for detection of this event + * + * @example Attempted Information Leak + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SECURITY_RULE_CATEGORY = 'security_rule.category'; +/** + * The description of the rule generating the event. + * + * @example Block requests to public DNS over HTTPS / TLS protocols + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SECURITY_RULE_DESCRIPTION = 'security_rule.description'; +/** + * Name of the license under which the rule used to generate this event is made available. + * + * @example Apache 2.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SECURITY_RULE_LICENSE = 'security_rule.license'; +/** + * The name of the rule or signature generating the event. + * + * @example BLOCK_DNS_over_TLS + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SECURITY_RULE_NAME = 'security_rule.name'; +/** + * Reference URL to additional information about the rule used to generate this event. + * + * @example https://en.wikipedia.org/wiki/DNS_over_TLS + * + * @note The URL can point to the vendor’s documentation about the rule. If that’s not available, it can also be a link to a more general page describing this type of alert. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SECURITY_RULE_REFERENCE = 'security_rule.reference'; +/** + * Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. + * + * @example Standard_Protocol_Filters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SECURITY_RULE_RULESET_NAME = 'security_rule.ruleset.name'; +/** + * A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. + * + * @example 550e8400-e29b-41d4-a716-446655440000 + * @example 1100110011 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SECURITY_RULE_UUID = 'security_rule.uuid'; +/** + * The version / revision of the rule being used for analysis. + * + * @example 1.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SECURITY_RULE_VERSION = 'security_rule.version'; +/** + * The string ID of the service instance. + * + * @example 627cc493-f310-47de-96bd-71410b7dec09 + * + * @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). + * + * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC + * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of + * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and + * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + * + * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is + * needed. Similar to what can be seen in the man page for the + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying + * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it + * or not via another resource attribute. + * + * For applications running behind an application server (like unicorn), we do not recommend using one identifier + * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker + * thread in unicorn) to have its own instance.id. + * + * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the + * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will + * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated. + * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance + * for that telemetry. This is typically the case for scraping receivers, as they know the target address and + * port. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SERVICE_INSTANCE_ID = 'service.instance.id'; +/** + * A namespace for `service.name`. + * + * @example Shop + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SERVICE_NAMESPACE = 'service.namespace'; +/** + * Logical name of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.name`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example shoppingcart + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SERVICE_PEER_NAME = 'service.peer.name'; +/** + * Logical namespace of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.namespace`](/docs/resource/README.md#service) resource attribute of the remote service if any. + * + * @example Shop + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SERVICE_PEER_NAMESPACE = 'service.peer.namespace'; +/** + * A unique id to identify a session. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SESSION_ID = 'session.id'; +/** + * The previous `session.id` for this user, when known. + * + * @example "00112233-4455-6677-8899-aabbccddeeff" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SESSION_PREVIOUS_ID = 'session.previous_id'; +/** + * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example source.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @note When observed from the destination side, and when communicating through an intermediary, `source.address` **SHOULD** represent the source address behind any intermediaries, for example proxies, if it's available. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SOURCE_ADDRESS = 'source.address'; +/** + * Source port number + * + * @example 3389 + * @example 2888 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SOURCE_PORT = 'source.port'; +/** + * Deprecated, use `db.client.connection.state` instead. + * + * @example idle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.state`. + */ +exports.ATTR_STATE = 'state'; +/** + * Enum value "idle" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.STATE_VALUE_IDLE = "idle"; +/** + * Enum value "used" for attribute {@link ATTR_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.STATE_VALUE_USED = "used"; +/** + * Deprecated, use `cpu.logical_number` instead. + * + * @example 1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.logical_number`. + */ +exports.ATTR_SYSTEM_CPU_LOGICAL_NUMBER = 'system.cpu.logical_number'; +/** + * Deprecated, use `cpu.mode` instead. + * + * @example idle + * @example interrupt + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `cpu.mode`. + */ +exports.ATTR_SYSTEM_CPU_STATE = 'system.cpu.state'; +/** + * Enum value "idle" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_CPU_STATE_VALUE_IDLE = "idle"; +/** + * Enum value "interrupt" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_CPU_STATE_VALUE_INTERRUPT = "interrupt"; +/** + * Enum value "iowait" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_CPU_STATE_VALUE_IOWAIT = "iowait"; +/** + * Enum value "nice" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_CPU_STATE_VALUE_NICE = "nice"; +/** + * Enum value "steal" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_CPU_STATE_VALUE_STEAL = "steal"; +/** + * Enum value "system" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_CPU_STATE_VALUE_SYSTEM = "system"; +/** + * Enum value "user" for attribute {@link ATTR_SYSTEM_CPU_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_CPU_STATE_VALUE_USER = "user"; +/** + * The device identifier + * + * @example (identifier) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SYSTEM_DEVICE = 'system.device'; +/** + * The filesystem mode + * + * @example rw, ro + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SYSTEM_FILESYSTEM_MODE = 'system.filesystem.mode'; +/** + * The filesystem mount path + * + * @example /mnt/data + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT = 'system.filesystem.mountpoint'; +/** + * The filesystem state + * + * @example used + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SYSTEM_FILESYSTEM_STATE = 'system.filesystem.state'; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_FILESYSTEM_STATE_VALUE_FREE = "free"; +/** + * Enum value "reserved" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED = "reserved"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_FILESYSTEM_STATE_VALUE_USED = "used"; +/** + * The filesystem type + * + * @example ext4 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SYSTEM_FILESYSTEM_TYPE = 'system.filesystem.type'; +/** + * Enum value "exfat" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT = "exfat"; +/** + * Enum value "ext4" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4 = "ext4"; +/** + * Enum value "fat32" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32 = "fat32"; +/** + * Enum value "hfsplus" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS = "hfsplus"; +/** + * Enum value "ntfs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS = "ntfs"; +/** + * Enum value "refs" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_FILESYSTEM_TYPE_VALUE_REFS = "refs"; +/** + * The Linux Slab memory state + * + * @example reclaimable + * @example unreclaimable + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE = 'system.memory.linux.slab.state'; +/** + * Enum value "reclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE = "reclaimable"; +/** + * Enum value "unreclaimable" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE = "unreclaimable"; +/** + * The memory state + * + * @example free + * @example cached + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SYSTEM_MEMORY_STATE = 'system.memory.state'; +/** + * Enum value "buffers" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_MEMORY_STATE_VALUE_BUFFERS = "buffers"; +/** + * Enum value "cached" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_MEMORY_STATE_VALUE_CACHED = "cached"; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_MEMORY_STATE_VALUE_FREE = "free"; +/** + * Enum value "shared" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, report shared memory usage with `metric.system.memory.shared` metric + */ +exports.SYSTEM_MEMORY_STATE_VALUE_SHARED = "shared"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}. + * + * Actual used virtual memory in bytes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_MEMORY_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `network.connection.state` instead. + * + * @example close_wait + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `network.connection.state`. + */ +exports.ATTR_SYSTEM_NETWORK_STATE = 'system.network.state'; +/** + * Enum value "close" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_CLOSE = "close"; +/** + * Enum value "close_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT = "close_wait"; +/** + * Enum value "closing" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_CLOSING = "closing"; +/** + * Enum value "delete" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_DELETE = "delete"; +/** + * Enum value "established" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED = "established"; +/** + * Enum value "fin_wait_1" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1 = "fin_wait_1"; +/** + * Enum value "fin_wait_2" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2 = "fin_wait_2"; +/** + * Enum value "last_ack" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_LAST_ACK = "last_ack"; +/** + * Enum value "listen" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_LISTEN = "listen"; +/** + * Enum value "syn_recv" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_SYN_RECV = "syn_recv"; +/** + * Enum value "syn_sent" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_SYN_SENT = "syn_sent"; +/** + * Enum value "time_wait" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT = "time_wait"; +/** + * The paging access direction + * + * @example in + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SYSTEM_PAGING_DIRECTION = 'system.paging.direction'; +/** + * Enum value "in" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PAGING_DIRECTION_VALUE_IN = "in"; +/** + * Enum value "out" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PAGING_DIRECTION_VALUE_OUT = "out"; +/** + * The paging fault type + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SYSTEM_PAGING_FAULT_TYPE = 'system.paging.fault.type'; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PAGING_FAULT_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PAGING_FAULT_TYPE_VALUE_MINOR = "minor"; +/** + * The memory paging state + * + * @example free + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_SYSTEM_PAGING_STATE = 'system.paging.state'; +/** + * Enum value "free" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PAGING_STATE_VALUE_FREE = "free"; +/** + * Enum value "used" for attribute {@link ATTR_SYSTEM_PAGING_STATE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PAGING_STATE_VALUE_USED = "used"; +/** + * Deprecated, use `system.paging.fault.type` instead. + * + * @example minor + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.paging.fault.type`. + */ +exports.ATTR_SYSTEM_PAGING_TYPE = 'system.paging.type'; +/** + * Enum value "major" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PAGING_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PAGING_TYPE_VALUE_MINOR = "minor"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +exports.ATTR_SYSTEM_PROCESS_STATUS = 'system.process.status'; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT = "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PROCESS_STATUS_VALUE_RUNNING = "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PROCESS_STATUS_VALUE_SLEEPING = "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PROCESS_STATUS_VALUE_STOPPED = "stopped"; +/** + * Deprecated, use `process.state` instead. + * + * @example running + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.state`. + */ +exports.ATTR_SYSTEM_PROCESSES_STATUS = 'system.processes.status'; +/** + * Enum value "defunct" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT = "defunct"; +/** + * Enum value "running" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PROCESSES_STATUS_VALUE_RUNNING = "running"; +/** + * Enum value "sleeping" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING = "sleeping"; +/** + * Enum value "stopped" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.SYSTEM_PROCESSES_STATUS_VALUE_STOPPED = "stopped"; +/** + * The name of the auto instrumentation agent or distribution, if used. + * + * @example parts-unlimited-java + * + * @note Official auto instrumentation agents and distributions **SHOULD** set the `telemetry.distro.name` attribute to + * a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TELEMETRY_DISTRO_NAME = 'telemetry.distro.name'; +/** + * The version string of the auto instrumentation agent or distribution, if used. + * + * @example 1.2.3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TELEMETRY_DISTRO_VERSION = 'telemetry.distro.version'; +/** + * The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case). + * + * @example org.example.TestCase1.test1 + * @example example/tests/TestCase1.test1 + * @example ExampleTestCase1_test1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TEST_CASE_NAME = 'test.case.name'; +/** + * The status of the actual test case result from test execution. + * + * @example pass + * @example fail + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TEST_CASE_RESULT_STATUS = 'test.case.result.status'; +/** + * Enum value "fail" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * fail + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.TEST_CASE_RESULT_STATUS_VALUE_FAIL = "fail"; +/** + * Enum value "pass" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}. + * + * pass + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.TEST_CASE_RESULT_STATUS_VALUE_PASS = "pass"; +/** + * The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite). + * + * @example TestSuite1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TEST_SUITE_NAME = 'test.suite.name'; +/** + * The status of the test suite run. + * + * @example success + * @example failure + * @example skipped + * @example aborted + * @example timed_out + * @example in_progress + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TEST_SUITE_RUN_STATUS = 'test.suite.run.status'; +/** + * Enum value "aborted" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * aborted + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.TEST_SUITE_RUN_STATUS_VALUE_ABORTED = "aborted"; +/** + * Enum value "failure" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * failure + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.TEST_SUITE_RUN_STATUS_VALUE_FAILURE = "failure"; +/** + * Enum value "in_progress" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * in_progress + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS = "in_progress"; +/** + * Enum value "skipped" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * skipped + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.TEST_SUITE_RUN_STATUS_VALUE_SKIPPED = "skipped"; +/** + * Enum value "success" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * success + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.TEST_SUITE_RUN_STATUS_VALUE_SUCCESS = "success"; +/** + * Enum value "timed_out" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}. + * + * timed_out + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT = "timed_out"; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @example 42 + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().threadId()` | + * | .NET | `Thread.CurrentThread.ManagedThreadId` | + * | Python | `threading.current_thread().ident` | + * | Ruby | `Thread.current.object_id` | + * | C++ | `std::this_thread::get_id()` | + * | Erlang | `erlang:self()` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_THREAD_ID = 'thread.id'; +/** + * Current thread name. + * + * @example "main" + * + * @note + * Examples of where the value can be extracted from: + * + * | Language or platform | Source | + * | --- | --- | + * | JVM | `Thread.currentThread().getName()` | + * | .NET | `Thread.CurrentThread.Name` | + * | Python | `threading.current_thread().name` | + * | Ruby | `Thread.current.name` | + * | Erlang | `erlang:process_info(self(), registered_name)` | + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_THREAD_NAME = 'thread.name'; +/** + * String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection. + * + * @example TLS_RSA_WITH_3DES_EDE_CBC_SHA + * @example TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + * + * @note The values allowed for `tls.cipher` **MUST** be one of the `Descriptions` of the [registered TLS Cipher Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CIPHER = 'tls.cipher'; +/** + * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_CERTIFICATE = 'tls.client.certificate'; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_CERTIFICATE_CHAIN = 'tls.client.certificate_chain'; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_HASH_MD5 = 'tls.client.hash.md5'; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_HASH_SHA1 = 'tls.client.hash.sha1'; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_HASH_SHA256 = 'tls.client.hash.sha256'; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_ISSUER = 'tls.client.issuer'; +/** + * A hash that identifies clients based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_JA3 = 'tls.client.ja3'; +/** + * Date/Time indicating when client certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_NOT_AFTER = 'tls.client.not_after'; +/** + * Date/Time indicating when client certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_NOT_BEFORE = 'tls.client.not_before'; +/** + * Deprecated, use `server.address` instead. + * + * @example opentelemetry.io + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address`. + */ +exports.ATTR_TLS_CLIENT_SERVER_NAME = 'tls.client.server_name'; +/** + * Distinguished name of subject of the x.509 certificate presented by the client. + * + * @example CN=myclient, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_SUBJECT = 'tls.client.subject'; +/** + * Array of ciphers offered by the client during the client hello. + * + * @example ["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CLIENT_SUPPORTED_CIPHERS = 'tls.client.supported_ciphers'; +/** + * String indicating the curve used for the given cipher, when applicable + * + * @example secp256r1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_CURVE = 'tls.curve'; +/** + * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_ESTABLISHED = 'tls.established'; +/** + * String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. + * + * @example http/1.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_NEXT_PROTOCOL = 'tls.next_protocol'; +/** + * Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_PROTOCOL_NAME = 'tls.protocol.name'; +/** + * Enum value "ssl" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.TLS_PROTOCOL_NAME_VALUE_SSL = "ssl"; +/** + * Enum value "tls" for attribute {@link ATTR_TLS_PROTOCOL_NAME}. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.TLS_PROTOCOL_NAME_VALUE_TLS = "tls"; +/** + * Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values) + * + * @example 1.2 + * @example 3 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_PROTOCOL_VERSION = 'tls.protocol.version'; +/** + * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. + * + * @example true + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_RESUMED = 'tls.resumed'; +/** + * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. + * + * @example MII... + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_SERVER_CERTIFICATE = 'tls.server.certificate'; +/** + * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + * + * @example ["MII...", "MI..."] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_SERVER_CERTIFICATE_CHAIN = 'tls.server.certificate_chain'; +/** + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_SERVER_HASH_MD5 = 'tls.server.hash.md5'; +/** + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 9E393D93138888D288266C2D915214D1D1CCEB2A + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_SERVER_HASH_SHA1 = 'tls.server.hash.sha1'; +/** + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + * + * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_SERVER_HASH_SHA256 = 'tls.server.hash.sha256'; +/** + * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client. + * + * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_SERVER_ISSUER = 'tls.server.issuer'; +/** + * A hash that identifies servers based on how they perform an SSL/TLS handshake. + * + * @example d4e5b18d6b55c71272893221c96ba240 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_SERVER_JA3S = 'tls.server.ja3s'; +/** + * Date/Time indicating when server certificate is no longer considered valid. + * + * @example 2021-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_SERVER_NOT_AFTER = 'tls.server.not_after'; +/** + * Date/Time indicating when server certificate is first considered valid. + * + * @example 1970-01-01T00:00:00.000Z + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_SERVER_NOT_BEFORE = 'tls.server.not_before'; +/** + * Distinguished name of subject of the x.509 certificate presented by the server. + * + * @example CN=myserver, OU=Documentation Team, DC=example, DC=com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_TLS_SERVER_SUBJECT = 'tls.server.subject'; +/** + * Domain extracted from the `url.full`, such as "opentelemetry.io". + * + * @example www.foo.bar + * @example opentelemetry.io + * @example 3.12.167.2 + * @example [1080:0:0:0:8:800:200C:417A] + * + * @note In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the domain field. If the URL contains a [literal IPv6 address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by `[` and `]`, the `[` and `]` characters should also be captured in the domain field. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_URL_DOMAIN = 'url.domain'; +/** + * The file extension extracted from the `url.full`, excluding the leading dot. + * + * @example png + * @example gz + * + * @note The file extension is only set if it exists, as not every url has a file extension. When the file name has multiple extensions `example.tar.gz`, only the last one should be captured `gz`, not `tar.gz`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_URL_EXTENSION = 'url.extension'; +/** + * Unmodified original URL as seen in the event source. + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example search?q=OpenTelemetry + * + * @note In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not. + * `url.original` might contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case password and username **SHOULD NOT** be redacted and attribute's value **SHOULD** remain the same. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_URL_ORIGINAL = 'url.original'; +/** + * Port extracted from the `url.full` + * + * @example 443 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_URL_PORT = 'url.port'; +/** + * The highest registered url domain, stripped of the subdomain. + * + * @example example.com + * @example foo.co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). For example, the registered domain for `foo.example.com` is `example.com`. Trying to approximate this by simply taking the last two labels will not work well for TLDs such as `co.uk`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_URL_REGISTERED_DOMAIN = 'url.registered_domain'; +/** + * The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + * + * @example east + * @example sub2.sub1 + * + * @note The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, with no trailing period. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_URL_SUBDOMAIN = 'url.subdomain'; +/** + * The low-cardinality template of an [absolute path reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2). + * + * @example /users/{id} + * @example /users/:id + * @example /users?id={id} + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_URL_TEMPLATE = 'url.template'; +/** + * The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is `com`. + * + * @example com + * @example co.uk + * + * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_URL_TOP_LEVEL_DOMAIN = 'url.top_level_domain'; +/** + * User email address. + * + * @example a.einstein@example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_EMAIL = 'user.email'; +/** + * User's full name + * + * @example Albert Einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_FULL_NAME = 'user.full_name'; +/** + * Unique user hash to correlate information for a user in anonymized form. + * + * @example 364fc68eaf4c8acec74a4e52d7d1feaa + * + * @note Useful if `user.id` or `user.name` contain confidential information and cannot be used. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_HASH = 'user.hash'; +/** + * Unique identifier of the user. + * + * @example S-1-5-21-202424912787-2692429404-2351956786-1000 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_ID = 'user.id'; +/** + * Short name or login/username of the user. + * + * @example a.einstein + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_NAME = 'user.name'; +/** + * Array of user roles at the time of the event. + * + * @example ["admin", "reporting_user"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_ROLES = 'user.roles'; +/** + * Name of the user-agent extracted from original. Usually refers to the browser's name. + * + * @example Safari + * @example YourApp + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name **SHOULD** be selected. In such a scenario it should align with `user_agent.version` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_AGENT_NAME = 'user_agent.name'; +/** + * Human readable operating system name. + * + * @example iOS + * @example Android + * @example Ubuntu + * + * @note For mapping user agent strings to OS names, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_AGENT_OS_NAME = 'user_agent.os.name'; +/** + * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). + * + * @example 14.2.1 + * @example 18.04.1 + * + * @note For mapping user agent strings to OS versions, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_AGENT_OS_VERSION = 'user_agent.os.version'; +/** + * Specifies the category of synthetic traffic, such as tests or bots. + * + * @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. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type'; +/** + * Enum value "bot" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Bot source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = "bot"; +/** + * Enum value "test" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}. + * + * Synthetic test source. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = "test"; +/** + * Version of the user-agent extracted from original. Usually refers to the browser's version + * + * @example 14.1.2 + * @example 1.0.0 + * + * @note [Example](https://uaparser.dev/#demo) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version **SHOULD** be selected. In such a scenario it should align with `user_agent.name` + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_USER_AGENT_VERSION = 'user_agent.version'; +/** + * The type of garbage collection. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_V8JS_GC_TYPE = 'v8js.gc.type'; +/** + * Enum value "incremental" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Incremental (Incremental Marking). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.V8JS_GC_TYPE_VALUE_INCREMENTAL = "incremental"; +/** + * Enum value "major" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Major (Mark Sweep Compact). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.V8JS_GC_TYPE_VALUE_MAJOR = "major"; +/** + * Enum value "minor" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Minor (Scavenge). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.V8JS_GC_TYPE_VALUE_MINOR = "minor"; +/** + * Enum value "weakcb" for attribute {@link ATTR_V8JS_GC_TYPE}. + * + * Weak Callbacks (Process Weak Callbacks). + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.V8JS_GC_TYPE_VALUE_WEAKCB = "weakcb"; +/** + * The name of the space type of heap memory. + * + * @note Value can be retrieved from value `space_name` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_V8JS_HEAP_SPACE_NAME = 'v8js.heap.space.name'; +/** + * Enum value "code_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Code memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE = "code_space"; +/** + * Enum value "large_object_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Large object memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE = "large_object_space"; +/** + * Enum value "map_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Map memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE = "map_space"; +/** + * Enum value "new_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * New memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE = "new_space"; +/** + * Enum value "old_space" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}. + * + * Old memory space. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE = "old_space"; +/** + * The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_CHANGE_ID = 'vcs.change.id'; +/** + * The state of the change (pull request/merge request/changelist). + * + * @example open + * @example closed + * @example merged + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_CHANGE_STATE = 'vcs.change.state'; +/** + * Enum value "closed" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Closed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_CHANGE_STATE_VALUE_CLOSED = "closed"; +/** + * Enum value "merged" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Merged indicates that the change has been successfully integrated into the target codebase. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_CHANGE_STATE_VALUE_MERGED = "merged"; +/** + * Enum value "open" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * Open means the change is currently active and under review. It hasn't been merged into the target branch yet, and it's still possible to make changes or add comments. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_CHANGE_STATE_VALUE_OPEN = "open"; +/** + * Enum value "wip" for attribute {@link ATTR_VCS_CHANGE_STATE}. + * + * WIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_CHANGE_STATE_VALUE_WIP = "wip"; +/** + * The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_CHANGE_TITLE = 'vcs.change.title'; +/** + * The type of line change being measured on a branch or change. + * + * @example added + * @example removed + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_LINE_CHANGE_TYPE = 'vcs.line_change.type'; +/** + * Enum value "added" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were added. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_LINE_CHANGE_TYPE_VALUE_ADDED = "added"; +/** + * Enum value "removed" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}. + * + * How many lines were removed. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_LINE_CHANGE_TYPE_VALUE_REMOVED = "removed"; +/** + * The group owner within the version control system. + * + * @example my-org + * @example myteam + * @example business-unit + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_OWNER_NAME = 'vcs.owner.name'; +/** + * The name of the version control system provider. + * + * @example github + * @example gitlab + * @example gitea + * @example bitbucket + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_PROVIDER_NAME = 'vcs.provider.name'; +/** + * Enum value "bitbucket" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Bitbucket](https://bitbucket.org) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_PROVIDER_NAME_VALUE_BITBUCKET = "bitbucket"; +/** + * Enum value "gitea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [Gitea](https://gitea.io) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_PROVIDER_NAME_VALUE_GITEA = "gitea"; +/** + * Enum value "github" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitHub](https://github.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_PROVIDER_NAME_VALUE_GITHUB = "github"; +/** + * Enum value "gitlab" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * [GitLab](https://gitlab.com) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_PROVIDER_NAME_VALUE_GITLAB = "gitlab"; +/** + * Enum value "gittea" for attribute {@link ATTR_VCS_PROVIDER_NAME}. + * + * Deprecated, use `gitea` instead. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `gitea`. + */ +exports.VCS_PROVIDER_NAME_VALUE_GITTEA = "gittea"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_REF_BASE_NAME = 'vcs.ref.base.name'; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. The + * revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.base.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_REF_BASE_REVISION = 'vcs.ref.base.revision'; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_REF_BASE_TYPE = 'vcs.ref.base.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_REF_BASE_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_BASE_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_REF_BASE_TYPE_VALUE_TAG = "tag"; +/** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * @example my-feature-branch + * @example tag-1-test + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_REF_HEAD_NAME = 'vcs.ref.head.name'; +/** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @note `head` refers to where you are right now; the current reference at a + * given time.The revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.head.name`, it **SHOULD** still be included. + * It is up to the implementer to decide which value to set as the + * revision based on the VCS system and situational context. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_REF_HEAD_REVISION = 'vcs.ref.head.revision'; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @note `head` refers to where you are right now; the current reference at a + * given time. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_REF_HEAD_TYPE = 'vcs.ref.head.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_REF_HEAD_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_REF_HEAD_TYPE_VALUE_TAG = "tag"; +/** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_REF_TYPE = 'vcs.ref.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_REF_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_REF_TYPE_VALUE_TAG = "tag"; +/** + * Deprecated, use `vcs.change.id` instead. + * + * @example 123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.id`. + */ +exports.ATTR_VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id'; +/** + * Deprecated, use `vcs.change.title` instead. + * + * @example Fixes broken thing + * @example feat: add my new feature + * @example [chore] update dependency + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.change.title`. + */ +exports.ATTR_VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title'; +/** + * The human readable name of the repository. It **SHOULD NOT** include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. + * + * @example semantic-conventions + * @example my-cool-repo + * + * @note Due to it only being the name, it can clash with forks of the same + * repository if collecting telemetry across multiple orgs or groups in + * the same backends. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_REPOSITORY_NAME = 'vcs.repository.name'; +/** + * Deprecated, use `vcs.ref.head.name` instead. + * + * @example my-feature-branch + * @example tag-1-test + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.name`. + */ +exports.ATTR_VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name'; +/** + * Deprecated, use `vcs.ref.head.revision` instead. + * + * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc + * @example main + * @example 123 + * @example HEAD + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.revision`. + */ +exports.ATTR_VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision'; +/** + * Deprecated, use `vcs.ref.head.type` instead. + * + * @example branch + * @example tag + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `vcs.ref.head.type`. + */ +exports.ATTR_VCS_REPOSITORY_REF_TYPE = 'vcs.repository.ref.type'; +/** + * Enum value "branch" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH = "branch"; +/** + * Enum value "tag" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}. + * + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_REPOSITORY_REF_TYPE_VALUE_TAG = "tag"; +/** + * The [canonical URL](https://support.google.com/webmasters/answer/10347851) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. + * + * @example https://github.com/opentelemetry/open-telemetry-collector-contrib + * @example https://gitlab.com/my-org/my-project/my-projects-project/repo + * + * @note In Git Version Control Systems, the canonical URL **SHOULD NOT** include + * the `.git` extension. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_REPOSITORY_URL_FULL = 'vcs.repository.url.full'; +/** + * The type of revision comparison. + * + * @example ahead + * @example behind + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_VCS_REVISION_DELTA_DIRECTION = 'vcs.revision_delta.direction'; +/** + * Enum value "ahead" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is ahead of the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD = "ahead"; +/** + * Enum value "behind" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}. + * + * How many revisions the change is behind the target ref. + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND = "behind"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_WEBENGINE_DESCRIPTION = 'webengine.description'; +/** + * The name of the web engine. + * + * @example WildFly + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_WEBENGINE_NAME = 'webengine.name'; +/** + * The version of the web engine. + * + * @example 21.0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_WEBENGINE_VERSION = 'webengine.version'; +/** + * The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis. + * + * @example SYS1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ZOS_SMF_ID = 'zos.smf.id'; +/** + * The name of the SYSPLEX to which the z/OS system belongs too. + * + * @example SYSPLEX1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.ATTR_ZOS_SYSPLEX_NAME = 'zos.sysplex.name'; +//# sourceMappingURL=experimental_attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js.map new file mode 100644 index 0000000..047a5f5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"experimental_attributes.js","sourceRoot":"","sources":["../../src/experimental_attributes.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,4GAA4G;AAC5G,8GAA8G;AAC9G,4GAA4G;AAE5G;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,YAAqB,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,SAAkB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,YAAqB,CAAC;AAExE;;;;;;;GAOG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,SAAkB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;GAOG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;GAOG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;;GAWG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;GASG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;GAUG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;GASG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;;;;GAcG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;GAeG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;GAOG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;GAOG;AACU,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,SAAkB,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,MAAe,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,SAAkB,CAAC;AAEjF;;;;;;;;GAQG;AACU,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;;GAOG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,SAAkB,CAAC;AAEhF;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,SAAkB,CAAC;AAEhF;;;;;;;GAOG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;;GAOG;AACU,QAAA,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;GAMG;AACU,QAAA,uDAAuD,GAAG,SAAkB,CAAC;AAE1F;;;;;;GAMG;AACU,QAAA,gEAAgE,GAAG,kBAA2B,CAAC;AAE5G;;;;;;GAMG;AACU,QAAA,uDAAuD,GAAG,SAAkB,CAAC;AAE1F;;;;;;GAMG;AACU,QAAA,qEAAqE,GAAG,uBAAgC,CAAC;AAEtH;;;;;;GAMG;AACU,QAAA,4DAA4D,GAAG,cAAuB,CAAC;AAEpG;;;;;;;GAOG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;;GAOG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,SAAkB,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,mDAAmD,GAAG,YAAqB,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,oDAAoD,GAAG,aAAsB,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,4DAA4D,GAAG,qBAA8B,CAAC;AAE3G;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,SAAkB,CAAC;AAEnF;;;;;;;GAOG;AACU,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,UAAmB,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,SAAkB,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,UAAmB,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,YAAqB,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,+DAA+D,GAAG,0BAAmC,CAAC;AAEnH;;;;;;GAMG;AACU,QAAA,+DAA+D,GAAG,0BAAmC,CAAC;AAEnH;;;;;;;GAOG;AACU,QAAA,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,QAAiB,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,oDAAoD,GAAG,cAAuB,CAAC;AAE5F;;;;;;GAMG;AACU,QAAA,2DAA2D,GAAG,qBAA8B,CAAC;AAE1G;;;;;;GAMG;AACU,QAAA,0DAA0D,GAAG,oBAA6B,CAAC;AAExG;;;;;;GAMG;AACU,QAAA,sDAAsD,GAAG,gBAAyB,CAAC;AAEhG;;;;;;GAMG;AACU,QAAA,kDAAkD,GAAG,YAAqB,CAAC;AAExF;;;;;;;GAOG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,SAAkB,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,SAAkB,CAAC;AAEnF;;;;;;;;GAQG;AACU,QAAA,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,QAAiB,CAAC;AAElF;;;;;;GAMG;AACU,QAAA,wDAAwD,GAAG,eAAwB,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,qDAAqD,GAAG,YAAqB,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,oDAAoD,GAAG,WAAoB,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,uDAAuD,GAAG,cAAuB,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,uDAAuD,GAAG,cAAuB,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,uDAAuD,GAAG,cAAuB,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,0DAA0D,GAAG,iBAA0B,CAAC;AAErG;;;;;;GAMG;AACU,QAAA,8DAA8D,GAAG,qBAA8B,CAAC;AAE7G;;;;;;GAMG;AACU,QAAA,wDAAwD,GAAG,eAAwB,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,iFAAiF,GAAG,wCAAiD,CAAC;AAEnJ;;;;;;GAMG;AACU,QAAA,0DAA0D,GAAG,iBAA0B,CAAC;AAErG;;;;;;GAMG;AACU,QAAA,0EAA0E,GAAG,iCAA0C,CAAC;AAErI;;;;;;GAMG;AACU,QAAA,sEAAsE,GAAG,6BAAsC,CAAC;AAE7H;;;;;;GAMG;AACU,QAAA,wDAAwD,GAAG,eAAwB,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,4DAA4D,GAAG,mBAA4B,CAAC;AAEzG;;;;;;GAMG;AACU,QAAA,uDAAuD,GAAG,cAAuB,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,yDAAyD,GAAG,gBAAyB,CAAC;AAEnG;;;;;;GAMG;AACU,QAAA,0DAA0D,GAAG,iBAA0B,CAAC;AAErG;;;;;;GAMG;AACU,QAAA,wDAAwD,GAAG,eAAwB,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,oEAAoE,GAAG,2BAAoC,CAAC;AAEzH;;;;;;GAMG;AACU,QAAA,kEAAkE,GAAG,yBAAkC,CAAC;AAErH;;;;;;GAMG;AACU,QAAA,yDAAyD,GAAG,gBAAyB,CAAC;AAEnG;;;;;;GAMG;AACU,QAAA,yDAAyD,GAAG,gBAAyB,CAAC;AAEnG;;;;;;GAMG;AACU,QAAA,mEAAmE,GAAG,0BAAmC,CAAC;AAEvH;;;;;;GAMG;AACU,QAAA,oDAAoD,GAAG,WAAoB,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,8DAA8D,GAAG,qBAA8B,CAAC;AAE7G;;;;;;GAMG;AACU,QAAA,+DAA+D,GAAG,sBAA+B,CAAC;AAE/G;;;;;;GAMG;AACU,QAAA,sDAAsD,GAAG,aAAsB,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,2DAA2D,GAAG,kBAA2B,CAAC;AAEvG;;;;;;GAMG;AACU,QAAA,iEAAiE,GAAG,wBAAiC,CAAC;AAEnH;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,QAAiB,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,oDAAoD,GAAG,WAAoB,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;GAOG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;GAOG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,6CAAsD,CAAC;AAEvH;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;;;GAQG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;GAOG;AACU,QAAA,2CAA2C,GAAG,wCAAiD,CAAC;AAE7G;;;;;;;GAOG;AACU,QAAA,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;GAIG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;GAIG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,KAAc,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,SAAkB,CAAC;AAEnE;;;;;;;GAOG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;GAOG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;;GAUG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;;;GAWG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;GAIG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,QAAiB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,SAAkB,CAAC;AAE/E;;;;;;;;;;GAUG;AACU,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,wDAAwD,GAAG,kBAA2B,CAAC;AAEpG;;;;;;GAMG;AACU,QAAA,wDAAwD,GAAG,kBAA2B,CAAC;AAEpG;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,UAAmB,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,SAAkB,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,QAAiB,CAAC;AAE/E;;;;;;;;GAQG;AACU,QAAA,+CAA+C,GAAG,4CAAqD,CAAC;AAErH;;;;;;;GAOG;AACU,QAAA,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;;GAOG;AACU,QAAA,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;;;;;GAQG;AACU,QAAA,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;GAQG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;;;GAWG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;;;GAWG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,KAAc,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,KAAc,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,aAAsB,CAAC;AAEpF;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,WAAoB,CAAC;AAEhF;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,cAAuB,CAAC;AAEtF;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,cAAuB,CAAC;AAEtF;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,KAAc,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,QAAiB,CAAC;AAE1E;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,QAAiB,CAAC;AAE1E;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,OAAgB,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,KAAc,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;GAOG;AACU,QAAA,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;;;GAQG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,OAAgB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,KAAc,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,MAAe,CAAC;AAEpE;;;;;;;;;GASG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;GASG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,cAAuB,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,OAAgB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,MAAe,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,WAAoB,CAAC;AAE5E;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,YAAqB,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,SAAkB,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;;;GASG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;GASG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,cAAuB,CAAC;AAExF;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,OAAgB,CAAC;AAE1E;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,SAAkB,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,MAAe,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,SAAkB,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,SAAkB,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;;;GAQG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,OAAgB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,QAAiB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;GAQG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,WAAoB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,SAAkB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,sBAA+B,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,kBAA2B,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,yBAAkC,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gBAAyB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,uBAAgC,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,YAAqB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,sBAA+B,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,2BAAoC,CAAC;AAEnG;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,iBAA0B,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,iBAA0B,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,UAAmB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,kBAA2B,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gBAAyB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,yBAAkC,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,qBAA8B,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,oBAA6B,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,uBAAgC,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,sBAA+B,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,qBAA8B,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,sBAA+B,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,kBAA2B,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,qBAA8B,CAAC;AAEvF;;;;GAIG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,cAAuB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,KAAc,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,KAAc,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,QAAiB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,cAAuB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;GAOG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;GAOG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;;GAUG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;;;;;;GAeG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;;;;;GAUG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;GAUG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;GAUG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;GAWG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;GAUG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;;GAUG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;GAUG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;;;;;;GAcG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;;;GAQG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;;;;;GAQG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;GAQG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;GAUG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACI,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAAjE,QAAA,oBAAoB,wBAA6C;AAE9E;;;;;;;;GAQG;AACI,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAAnE,QAAA,qBAAqB,yBAA8C;AAEhF;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;;GAUG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;;GAQG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;GAOG;AACU,QAAA,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,MAAe,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,WAAoB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,QAAiB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,QAAiB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,MAAe,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,OAAgB,CAAC;AAErD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,QAAiB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,MAAe,CAAC;AAEnD;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,CAAU,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,CAAU,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,CAAU,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACU,QAAA,wCAAwC,GAAG,KAAc,CAAC;AAEvE;;;;GAIG;AACU,QAAA,wCAAwC,GAAG,KAAc,CAAC;AAEvE;;;;GAIG;AACU,QAAA,gDAAgD,GAAG,aAAsB,CAAC;AAEvF;;;;GAIG;AACU,QAAA,8CAA8C,GAAG,WAAoB,CAAC;AAEnF;;;;GAIG;AACU,QAAA,iDAAiD,GAAG,cAAuB,CAAC;AAEzF;;;;GAIG;AACU,QAAA,iDAAiD,GAAG,cAAuB,CAAC;AAEzF;;;;GAIG;AACU,QAAA,wCAAwC,GAAG,KAAc,CAAC;AAEvE;;;;GAIG;AACU,QAAA,2CAA2C,GAAG,QAAiB,CAAC;AAE7E;;;;GAIG;AACU,QAAA,2CAA2C,GAAG,QAAiB,CAAC;AAE7E;;;;GAIG;AACU,QAAA,0CAA0C,GAAG,OAAgB,CAAC;AAE3E;;;;GAIG;AACU,QAAA,wCAAwC,GAAG,KAAc,CAAC;AAEvE;;;;;;;;GAQG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;GAQG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;GAQG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACU,QAAA,6CAA6C,GAAG,0CAAmD,CAAC;AAEjH;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;;;GAQG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,MAAe,CAAC;AAEtE;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,MAAe,CAAC;AAEtE;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,QAAiB,CAAC;AAE1E;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,SAAkB,CAAC;AAE5E;;;;;;;;;;;;GAYG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;GAIG;AACU,QAAA,qDAAqD,GAAG,kBAA2B,CAAC;AAEjG;;;;GAIG;AACU,QAAA,qDAAqD,GAAG,kBAA2B,CAAC;AAEjG;;;;GAIG;AACU,QAAA,4CAA4C,GAAG,UAAmB,CAAC;AAEhF;;;;GAIG;AACU,QAAA,2CAA2C,GAAG,SAAkB,CAAC;AAE9E;;;;GAIG;AACU,QAAA,0CAA0C,GAAG,QAAiB,CAAC;AAE5E;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;GAIG;AACU,QAAA,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;GAIG;AACU,QAAA,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;GAIG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;GAIG;AACU,QAAA,mDAAmD,GAAG,oBAA6B,CAAC;AAEjG;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;GAIG;AACU,QAAA,0CAA0C,GAAG,WAAoB,CAAC;AAE/E;;;;GAIG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;GAIG;AACU,QAAA,2CAA2C,GAAG,YAAqB,CAAC;AAEjF;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;GAIG;AACU,QAAA,0CAA0C,GAAG,WAAoB,CAAC;AAE/E;;;;GAIG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;GAIG;AACU,QAAA,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;;;GAQG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;;;GASG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;;;;GASG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;GASG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;GAQG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;;GAQG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;;;GASG;AACI,MAAM,gCAAgC,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,+BAA+B,GAAG,EAAE,CAAC;AAAzF,QAAA,gCAAgC,oCAAyD;AAEtG;;;;;;;;GAQG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;GAQG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACI,MAAM,2BAA2B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,0BAA0B,GAAG,EAAE,CAAC;AAA/E,QAAA,2BAA2B,+BAAoD;AAE5F;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,sBAAsB,GAAG,EAAE,CAAC;AAAvE,QAAA,uBAAuB,2BAAgD;AAEpF;;;;;;;;;;GAUG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;GAQG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,aAAsB,CAAC;AAElE;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,KAAc,CAAC;AAElD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,KAAc,CAAC;AAElD;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,eAAwB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;;;GAQG;AACU,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,IAAa,CAAC;AAEhD;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,MAAe,CAAC;AAEpD;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,oBAA6B,CAAC;AAEhF;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;;;GAQG;AACU,QAAA,4BAA4B,GAAG,cAAuB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,SAAkB,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,cAAuB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,cAAuB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gBAAyB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,YAAqB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,aAAsB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,aAAsB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,aAAsB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,YAAqB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,MAAe,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,QAAiB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,cAAuB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,aAAsB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,UAAmB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,oBAA6B,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,SAAkB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,YAAqB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,UAAmB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,WAAoB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,mBAA4B,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,QAAiB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,UAAmB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;GASG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;;;;;;;GAeG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;GAIG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,WAAoB,CAAC;AAEtE;;;;;;;;;;GAUG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;GAOG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;GASG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;GASG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACU,QAAA,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;GAIG;AACU,QAAA,6BAA6B,GAAG,OAAgB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;;GASG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;GAWG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;;;GAWG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;GASG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;GAIG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;GAOG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;GAOG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,QAAiB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,QAAiB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,eAAwB,CAAC;AAElF;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,KAAc,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,OAAgB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,KAAc,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,eAAwB,CAAC;AAElF;;;;;;;;GAQG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,YAAqB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,MAAe,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,OAAgB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,QAAiB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,OAAgB,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;GAQG;AACU,QAAA,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;;;;;;GAWG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,QAAiB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,SAAkB,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,UAAmB,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,OAAgB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,OAAgB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,OAAgB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,QAAiB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,oDAAoD,GAAG,iBAA0B,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,SAAkB,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;;;GASG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,UAAmB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,iBAA0B,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;;;;;;;;;GAcG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;;;;GAYG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;GAQG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;GAUG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;GAOG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;GAIG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,MAAe,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,KAAc,CAAC;AAE5E;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,QAAiB,CAAC;AAElF;;;;;;GAMG;AACU,QAAA,0DAA0D,GAAG,kBAA2B,CAAC;AAEtG;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;GAMG;AACU,QAAA,qDAAqD,GAAG,aAAsB,CAAC;AAE5F;;;;;;GAMG;AACU,QAAA,oDAAoD,GAAG,YAAqB,CAAC;AAE1F;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,SAAkB,CAAC;AAEpF;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,MAAe,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,MAAe,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,KAAc,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,QAAiB,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,2DAA2D,GAAG,kBAA2B,CAAC;AAEvG;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;GAMG;AACU,QAAA,sDAAsD,GAAG,aAAsB,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,qDAAqD,GAAG,YAAqB,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,kDAAkD,GAAG,SAAkB,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,MAAe,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,8CAAuD,CAAC;AAEzH;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,6CAAsD,CAAC;AAEvH;;;;GAIG;AACU,QAAA,oDAAoD,GAAG,iDAA0D,CAAC;AAE/H;;;;;;GAMG;AACU,QAAA,0DAA0D,GAAG,MAAe,CAAC;AAE1F;;;;;;GAMG;AACU,QAAA,yDAAyD,GAAG,KAAc,CAAC;AAExF;;;;;;GAMG;AACU,QAAA,4DAA4D,GAAG,QAAiB,CAAC;AAE9F;;;;;;GAMG;AACU,QAAA,sEAAsE,GAAG,kBAA2B,CAAC;AAElH;;;;GAIG;AACU,QAAA,oDAAoD,GAAG,iDAA0D,CAAC;AAE/H;;;;;;GAMG;AACU,QAAA,iEAAiE,GAAG,aAAsB,CAAC;AAExG;;;;;;GAMG;AACU,QAAA,gEAAgE,GAAG,YAAqB,CAAC;AAEtG;;;;;;GAMG;AACU,QAAA,6DAA6D,GAAG,SAAkB,CAAC;AAEhG;;;;;;GAMG;AACU,QAAA,0DAA0D,GAAG,MAAe,CAAC;AAE1F;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;GAIG;AACU,QAAA,qDAAqD,GAAG,kDAA2D,CAAC;AAEjI;;;;;;GAMG;AACU,QAAA,2DAA2D,GAAG,MAAe,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,0DAA0D,GAAG,KAAc,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,6DAA6D,GAAG,QAAiB,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,uEAAuE,GAAG,kBAA2B,CAAC;AAEnH;;;;GAIG;AACU,QAAA,qDAAqD,GAAG,kDAA2D,CAAC;AAEjI;;;;;;GAMG;AACU,QAAA,kEAAkE,GAAG,aAAsB,CAAC;AAEzG;;;;;;GAMG;AACU,QAAA,iEAAiE,GAAG,YAAqB,CAAC;AAEvG;;;;;;GAMG;AACU,QAAA,8DAA8D,GAAG,SAAkB,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,2DAA2D,GAAG,MAAe,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;;;;;;;GAYG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;GAOG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;GAOG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;;GAOG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;GAOG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;GAOG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;GAOG;AACU,QAAA,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;GAOG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;;;;;GAaG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;GAMG;AACU,QAAA,uDAAuD,GAAG,aAAsB,CAAC;AAE9F;;;;;;GAMG;AACU,QAAA,uDAAuD,GAAG,aAAsB,CAAC;AAE9F;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,MAAe,CAAC;AAEhF;;;;;;;;GAQG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,MAAe,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,SAAkB,CAAC;AAEnF;;;;;;;;;GASG;AACU,QAAA,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;;;GAQG;AACU,QAAA,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,MAAe,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,cAAuB,CAAC;AAEhF;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,YAAqB,CAAC;AAE5E;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,cAAuB,CAAC;AAEhF;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,kBAA2B,CAAC;AAExF;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,cAAuB,CAAC;AAEhF;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,iBAA0B,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,OAAgB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,QAAiB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,aAAsB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,oBAA6B,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,iBAA0B,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,QAAiB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,eAAwB,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,MAAe,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,gBAAyB,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,QAAiB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,MAAe,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;;GASG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,WAAoB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,aAAsB,CAAC;AAEtE;;;;;;;;GAQG;AACU,QAAA,mCAAmC,GAAG,iBAA0B,CAAC;AAE9E;;;;;;;;GAQG;AACU,QAAA,gCAAgC,GAAG,cAAuB,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,oBAA6B,CAAC;AAEpF;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,iBAA0B,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,UAAmB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,eAAwB,CAAC;AAE1E;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,MAAe,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,gBAAyB,CAAC;AAE5E;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;;;GAQG;AACU,QAAA,6BAA6B,GAAG,WAAoB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,KAAc,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;GAOG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,OAAgB,CAAC;AAE9D;;;;;;;;GAQG;AACU,QAAA,kCAAkC,GAAG,QAAiB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;;;;;;;;;;;;GAiBG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;;;;;;;GAcG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;;GAQG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;GAOG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,OAAgB,CAAC;AAE3D;;;;;;;GAOG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;GAQG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,UAAmB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,OAAgB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,cAAuB,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;GAIG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,MAAe,CAAC;AAEpD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,OAAgB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,KAAc,CAAC;AAElD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;GAOG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACU,QAAA,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;GAOG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,QAAiB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,MAAe,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,MAAe,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,MAAe,CAAC;AAEtD;;;;;;;;GAQG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;;GAUG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,OAAgB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;GAQG;AACU,QAAA,6CAA6C,GAAG,0CAAmD,CAAC;AAEjH;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;;;GAQG;AACU,QAAA,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;;;;GASG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;GAQG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;;;;GASG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;GAOG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,aAAsB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,SAAkB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,SAAkB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,SAAkB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,UAAU,GAAG,OAAgB,CAAC;AAE3C;;;;GAIG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,UAAmB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,UAAmB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,eAAwB,CAAC;AAE1E;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,eAAwB,CAAC;AAE1E;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,cAAuB,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,cAAuB,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,KAAc,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,WAAoB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,OAAgB,CAAC;AAE1D;;;;;;;;GAQG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,MAAe,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,MAAe,CAAC;AAEhE;;;;;;;;GAQG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACU,QAAA,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;GAMG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACU,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,WAAoB,CAAC;AAE3E;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;;;;GAcG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACU,QAAA,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,UAAmB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,QAAiB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,gBAAyB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,IAAa,CAAC;AAE/C;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,mBAA4B,CAAC;AAE7E;;;;GAIG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,OAAgB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,OAAgB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,SAAkB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,KAAc,CAAC;AAEhD;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,iBAA0B,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,WAAoB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,KAAc,CAAC;AAEhD;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,KAAc,CAAC;AAEhD;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,cAAuB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,QAAiB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,eAAwB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,cAAuB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,YAAqB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,aAAsB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;;;;;;GAWG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,YAAqB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,UAAmB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,WAAoB,CAAC;AAElE;;;;;;;;GAQG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,QAAiB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,YAAqB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC;AAE9D;;;;;;;GAOG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;;;GAUG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;GASG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;GAOG;AACU,QAAA,gDAAgD,GAAG,6CAAsD,CAAC;AAEvH;;;;;;;;;;;;;;GAcG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,WAAoB,CAAC;AAEhF;;;;;;GAMG;AACU,QAAA,sDAAsD,GAAG,oBAA6B,CAAC;AAEpG;;;;;;GAMG;AACU,QAAA,oDAAoD,GAAG,mBAA4B,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,qDAAqD,GAAG,kBAA2B,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,+DAA+D,GAAG,4BAAqC,CAAC;AAErH;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,cAAuB,CAAC;AAExF;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,OAAgB,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,qDAAqD,GAAG,kBAA2B,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,WAAoB,CAAC;AAEjF;;;;;;;;GAQG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,YAAqB,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;;;;;;;;;GAcG;AACI,MAAM,2BAA2B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,0BAA0B,GAAG,EAAE,CAAC;AAA/E,QAAA,2BAA2B,+BAAoD;AAE5F;;;;;;;;;;;;;;GAcG;AACI,MAAM,sBAAsB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,qBAAqB,GAAG,EAAE,CAAC;AAArE,QAAA,sBAAsB,0BAA+C;AAElF;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;;;;;;;GAeG;AACI,MAAM,6BAA6B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,4BAA4B,GAAG,EAAE,CAAC;AAAnF,QAAA,6BAA6B,iCAAsD;AAEhG;;;;;;;;;;;;;;;GAeG;AACI,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAAzE,QAAA,wBAAwB,4BAAiD;AAEtF;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;GAeG;AACI,MAAM,8BAA8B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,6BAA6B,GAAG,EAAE,CAAC;AAArF,QAAA,8BAA8B,kCAAuD;AAElG;;;;;;;;;;;;;;;GAeG;AACI,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC;AAA3E,QAAA,yBAAyB,6BAAkD;AAExF;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;GASG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;;;;GASG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;;GASG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;GAeG;AACI,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,sBAAsB,GAAG,EAAE,CAAC;AAAvE,QAAA,uBAAuB,2BAAgD;AAEpF;;;;;;;;;;;;;;;GAeG;AACI,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAA7D,QAAA,kBAAkB,sBAA2C;AAE1E;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AACI,MAAM,6BAA6B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,4BAA4B,GAAG,EAAE,CAAC;AAAnF,QAAA,6BAA6B,iCAAsD;AAEhG;;;;;;;;;;;;;;;GAeG;AACI,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAAzE,QAAA,wBAAwB,4BAAiD;AAEtF;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;;GAUG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,aAAsB,CAAC;AAE5E;;;;;;;;;;;;;;GAcG;AACI,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAAzE,QAAA,wBAAwB,4BAAiD;AAEtF;;;;;;;;;;;GAWG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;GAIG;AACU,QAAA,+CAA+C,GAAG,OAAgB,CAAC;AAEhF;;;;GAIG;AACU,QAAA,8CAA8C,GAAG,MAAe,CAAC;AAE9E;;;;GAIG;AACU,QAAA,iDAAiD,GAAG,SAAkB,CAAC;AAEpF;;;;;;;;;;;;;;;;;GAiBG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,cAAuB,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,gBAAyB,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,oBAA6B,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,aAAsB,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,OAAgB,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACI,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAA/D,QAAA,mBAAmB,uBAA4C;AAE5E;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,sBAAsB,GAAG,EAAE,CAAC;AAAvE,QAAA,uBAAuB,2BAAgD;AAEpF;;;;;;;;;;;;;GAaG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;;;GASG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAA7D,QAAA,kBAAkB,sBAA2C;AAE1E;;;;;;;;GAQG;AACI,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAA/D,QAAA,mBAAmB,uBAA4C;AAE5E;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;GAOG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,QAAiB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;;GAOG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,cAAuB,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,UAAmB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,UAAmB,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,sDAAsD,GAAG,0BAAmC,CAAC;AAE1G;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AACI,MAAM,8BAA8B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,6BAA6B,GAAG,EAAE,CAAC;AAArF,QAAA,8BAA8B,kCAAuD;AAElG;;;;;;;;;;;;;;;GAeG;AACI,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC;AAA3E,QAAA,yBAAyB,6BAAkD;AAExF;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;GAQG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;;;;;GAeG;AACI,MAAM,+BAA+B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,8BAA8B,GAAG,EAAE,CAAC;AAAvF,QAAA,+BAA+B,mCAAwD;AAEpG;;;;;;;;;;;;;;;GAeG;AACI,MAAM,0BAA0B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAyB,GAAG,EAAE,CAAC;AAA7E,QAAA,0BAA0B,8BAAmD;AAE1F;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,WAAoB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,aAAsB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,OAAgB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,uBAAgC,CAAC;AAE9F;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,QAAiB,CAAC;AAE9D;;;;;;;;;GASG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACU,QAAA,yCAAyC,GAAG,aAAsB,CAAC;AAEhF;;;;GAIG;AACU,QAAA,2CAA2C,GAAG,eAAwB,CAAC;AAEpF;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,QAAiB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,QAAiB,CAAC;AAE3D;;;;;;;;;GASG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,qBAA8B,CAAC;AAExF;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,oBAA6B,CAAC;AAEtF;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,YAAqB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,kBAA2B,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,yBAAkC,CAAC;AAEhG;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,2BAAoC,CAAC;AAEpG;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,uBAAgC,CAAC;AAE5F;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,wBAAiC,CAAC;AAE9F;;;;;;GAMG;AACU,QAAA,wDAAwD,GAAG,oCAA6C,CAAC;AAEtH;;;;;;GAMG;AACU,QAAA,0DAA0D,GAAG,sCAA+C,CAAC;AAE1H;;;;;;GAMG;AACU,QAAA,qDAAqD,GAAG,iCAA0C,CAAC;AAEhH;;;;;;GAMG;AACU,QAAA,sDAAsD,GAAG,kCAA2C,CAAC;AAElH;;;;;;GAMG;AACU,QAAA,sDAAsD,GAAG,kCAA2C,CAAC;AAElH;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,MAAe,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,aAAsB,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,cAAuB,CAAC;AAE1E;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,gBAAyB,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,gBAAyB,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,qBAA8B,CAAC;AAExF;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,0BAAmC,CAAC;AAElG;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,uBAAgC,CAAC;AAE5F;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,YAAqB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,wBAAiC,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,YAAqB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,YAAqB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;GASG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,UAAmB,CAAC;AAE/D;;;;GAIG;AACU,QAAA,uBAAuB,GAAG,MAAe,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;;GAUG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;GAOG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;;;;;GAUG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;;;GAQG;AACU,QAAA,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;;;;;GAQG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;;;;;;GASG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;;;GAQG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;GAMG;AACU,QAAA,kDAAkD,GAAG,+CAAwD,CAAC;AAE3H;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,2CAAoD,CAAC;AAEnH;;;;;;;;GAQG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;;;GAQG;AACU,QAAA,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;;;GAQG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;GAQG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,mCAA4C,CAAC;AAEnG;;;;;;;;;GASG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;;;;GAUG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;GAKG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,QAAiB,CAAC;AAEvE;;;;;;;;GAQG;AACU,QAAA,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;;;;;;;GAQG;AACU,QAAA,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,MAAe,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,QAAiB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,4CAAqD,CAAC;AAErH;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;;;;;GAQG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;GAIG;AACU,QAAA,yCAAyC,GAAG,sCAA+C,CAAC;AAEzG;;;;;;GAMG;AACU,QAAA,uDAAuD,GAAG,cAAuB,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,qDAAqD,GAAG,YAAqB,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,6CAAsD,CAAC;AAEvH;;;;;;GAMG;AACU,QAAA,kDAAkD,GAAG,+CAAwD,CAAC;AAE3H;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AAEjG;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,OAAgB,CAAC;AAE5E;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,MAAe,CAAC;AAE1E;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,QAAiB,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,aAAsB,CAAC;AAExF;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;;;GAQG;AACU,QAAA,uDAAuD,GAAG,oDAA6D,CAAC;AAErI;;;;GAIG;AACU,QAAA,4CAA4C,GAAG,yCAAkD,CAAC;AAE/G;;;;;;GAMG;AACU,QAAA,qDAAqD,GAAG,SAAkB,CAAC;AAExF;;;;;;GAMG;AACU,QAAA,sDAAsD,GAAG,UAAmB,CAAC;AAE1F;;;;;;GAMG;AACU,QAAA,yDAAyD,GAAG,aAAsB,CAAC;AAEhG;;;;;;GAMG;AACU,QAAA,mDAAmD,GAAG,OAAgB,CAAC;AAEpF;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,6CAAsD,CAAC;AAEvH;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,4CAAqD,CAAC;AAErH;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,SAAkB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,SAAkB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,WAAoB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,WAAoB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,YAAqB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,OAAgB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,QAAiB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,YAAqB,CAAC;AAEvE;;;;;;;;GAQG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;GAUG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,MAAe,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,OAAgB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,MAAe,CAAC;AAE1D;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;GAIG;AACU,QAAA,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;GAIG;AACU,QAAA,0BAA0B,GAAG,QAAiB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,OAAgB,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,MAAe,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;;GAOG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;GAIG;AACU,QAAA,yCAAyC,GAAG,YAAqB,CAAC;AAE/E;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,QAAiB,CAAC;AAEvE;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,SAAkB,CAAC;AAEzE;;;;GAIG;AACU,QAAA,0CAA0C,GAAG,aAAsB,CAAC;AAEjF;;;;GAIG;AACU,QAAA,yCAAyC,GAAG,YAAqB,CAAC;AAE/E;;;;GAIG;AACU,QAAA,yCAAyC,GAAG,YAAqB,CAAC;AAE/E;;;;GAIG;AACU,QAAA,uCAAuC,GAAG,UAAmB,CAAC;AAE3E;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,QAAiB,CAAC;AAEvE;;;;GAIG;AACU,QAAA,2CAA2C,GAAG,cAAuB,CAAC;AAEnF;;;;GAIG;AACU,QAAA,uCAAuC,GAAG,UAAmB,CAAC;AAE3E;;;;GAIG;AACU,QAAA,wCAAwC,GAAG,WAAoB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,gBAAyB,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,KAAc,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,KAAc,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,QAAiB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,IAAa,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,OAAgB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,UAAmB,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,MAAe,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACU,QAAA,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;GAIG;AACU,QAAA,yCAAyC,GAAG,aAAsB,CAAC;AAEhF;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,SAAkB,CAAC;AAExE;;;;GAIG;AACU,QAAA,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;GAIG;AACU,QAAA,mCAAmC,GAAG,OAAgB,CAAC;AAEpE;;;;;;;GAOG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACU,QAAA,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;GAIG;AACU,QAAA,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,QAAiB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;;;;;;;;GASG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;GAIG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;GAOG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;GAOG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,MAAe,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,SAAkB,CAAC;AAE5E;;;;;;;GAOG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,oCAA6C,CAAC;AAErG;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,cAAuB,CAAC;AAE/E;;;;;;;;GAQG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;GAOG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;GAIG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,KAAc,CAAC;AAEhD;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,QAAiB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,cAAuB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,MAAe,CAAC;AAElD;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,OAAgB,CAAC;AAEpD;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,QAAiB,CAAC;AAEtD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,MAAe,CAAC;AAElD;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,KAAc,CAAC;AAEhD;;;;;;;GAOG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;GAUG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,wBAAiC,CAAC;AAElG;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,yBAAkC,CAAC;AAEpG;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,wBAAiC,CAAC;AAElG;;;;;;GAMG;AACU,QAAA,mDAAmD,GAAG,2BAAoC,CAAC;AAExG;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,yBAAkC,CAAC;AAEpG;;;;;;GAMG;AACU,QAAA,qDAAqD,GAAG,6BAAsC,CAAC;AAE5G;;;;;;GAMG;AACU,QAAA,wDAAwD,GAAG,gCAAyC,CAAC;AAElH;;;;;;GAMG;AACU,QAAA,sDAAsD,GAAG,8BAAuC,CAAC;AAE9G;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,wBAAiC,CAAC;AAElG;;;;;;GAMG;AACU,QAAA,mDAAmD,GAAG,2BAAoC,CAAC;AAExG;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,yBAAkC,CAAC;AAEpG;;;;;;GAMG;AACU,QAAA,gDAAgD,GAAG,wBAAiC,CAAC;AAElG;;;;;;GAMG;AACU,QAAA,8DAA8D,GAAG,sCAA+C,CAAC;AAE9H;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,sBAA+B,CAAC;AAE9F;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,uBAAgC,CAAC;AAEhG;;;;;;GAMG;AACU,QAAA,mDAAmD,GAAG,2BAAoC,CAAC;AAExG;;;;;;;;;GASG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;GAIG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,OAAgB,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,QAAiB,CAAC;AAEtE;;;;GAIG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,MAAe,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,iDAAiD,GAAG,mBAA4B,CAAC;AAE9F;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,aAAsB,CAAC;AAElF;;;;;;;;;;;;;GAaG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;GAQG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;GAIG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;GAIG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;GAIG;AACU,QAAA,6CAA6C,GAAG,aAAsB,CAAC;AAEpF;;;;GAIG;AACU,QAAA,2CAA2C,GAAG,WAAoB,CAAC;AAEhF;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACU,QAAA,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;GAIG;AACU,QAAA,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;GAIG;AACU,QAAA,4BAA4B,GAAG,MAAe,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;;;;;GAeG;AACI,MAAM,iCAAiC,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,gCAAgC,GAAG,EAAE,CAAC;AAA3F,QAAA,iCAAiC,qCAA0D;AAExG;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAE/F;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,qCAA8C,CAAC;AAEvG;;;;;;;;GAQG;AACU,QAAA,0CAA0C,GAAG,uCAAgD,CAAC;AAE3G;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;GAIG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,OAAgB,CAAC;AAEtE;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,OAAgB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,SAAkB,CAAC;AAE9D;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,SAAkB,CAAC;AAE9D;;;;GAIG;AACU,QAAA,4BAA4B,GAAG,UAAmB,CAAC;AAEhE;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,SAAkB,CAAC;AAE9D;;;;;;;;;;GAUG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,SAAkB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,QAAiB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,IAAa,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,KAAc,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,QAAiB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,QAAiB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,KAAc,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,MAAe,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;GAIG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;GAIG;AACU,QAAA,+CAA+C,GAAG,gBAAyB,CAAC;AAEzF;;;;GAIG;AACU,QAAA,0CAA0C,GAAG,WAAoB,CAAC;AAE/E;;;;GAIG;AACU,QAAA,0CAA0C,GAAG,WAAoB,CAAC;AAE/E;;;;GAIG;AACU,QAAA,kDAAkD,GAAG,mBAA4B,CAAC;AAE/F;;;;GAIG;AACU,QAAA,oDAAoD,GAAG,qBAA8B,CAAC;AAEnG;;;;GAIG;AACU,QAAA,yCAAyC,GAAG,UAAmB,CAAC;AAE7E;;;;GAIG;AACU,QAAA,iDAAiD,GAAG,kBAA2B,CAAC;AAE7F;;;;GAIG;AACU,QAAA,0CAA0C,GAAG,WAAoB,CAAC;AAE/E;;;;GAIG;AACU,QAAA,6CAA6C,GAAG,cAAuB,CAAC;AAErF;;;;GAIG;AACU,QAAA,kDAAkD,GAAG,mBAA4B,CAAC;AAE/F;;;;GAIG;AACU,QAAA,mDAAmD,GAAG,oBAA6B,CAAC;AAEjG;;;;GAIG;AACU,QAAA,gDAAgD,GAAG,iBAA0B,CAAC;AAE3F;;;;GAIG;AACU,QAAA,4CAA4C,GAAG,aAAsB,CAAC;AAEnF;;;;GAIG;AACU,QAAA,8CAA8C,GAAG,eAAwB,CAAC;AAEvF;;;;GAIG;AACU,QAAA,wCAAwC,GAAG,SAAkB,CAAC;AAE3E;;;;;;;;GAQG;AACI,MAAM,qCAAqC,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,oCAAoC,GAAG,EAAE,CAAC;AAAnG,QAAA,qCAAqC,yCAA8D;AAEhH;;;;;;;;GAQG;AACI,MAAM,sCAAsC,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,qCAAqC,GAAG,EAAE,CAAC;AAArG,QAAA,sCAAsC,0CAA+D;AAElH;;;;;;;;GAQG;AACI,MAAM,8BAA8B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,6BAA6B,GAAG,EAAE,CAAC;AAArF,QAAA,8BAA8B,kCAAuD;AAElG;;;;;;;;GAQG;AACI,MAAM,+BAA+B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,8BAA8B,GAAG,EAAE,CAAC;AAAvF,QAAA,+BAA+B,mCAAwD;AAEpG;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,CAAU,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,CAAU,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,CAAU,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,2CAA2C,GAAG,CAAU,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,CAAU,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,CAAU,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,CAAU,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,4CAA4C,GAAG,CAAU,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,CAAU,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,8CAA8C,GAAG,CAAU,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,EAAW,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,EAAW,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,EAAW,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,EAAW,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,sCAAsC,GAAG,EAAW,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,EAAW,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,0CAA0C,GAAG,EAAW,CAAC;AAEtE;;;;;;;;;GASG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;;GAUG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;GAKG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;GAIG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACU,QAAA,+BAA+B,GAAG,UAAmB,CAAC;AAEnE;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,MAAe,CAAC;AAE3D;;;;GAIG;AACU,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;GAQG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACI,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC;AAA3E,QAAA,yBAAyB,6BAAkD;AAExF;;;;;;;;;;;;GAYG;AACI,MAAM,0BAA0B,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAyB,GAAG,EAAE,CAAC;AAA7E,QAAA,0BAA0B,8BAAmD;AAE1F;;;;;;;;;;;GAWG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;GAQG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,cAAuB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,aAAsB,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,YAAqB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,MAAe,CAAC;AAErD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,UAAmB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,SAAkB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,SAAkB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,YAAqB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,OAAgB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,MAAe,CAAC;AAE1D;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,SAAkB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAErF;;;;;;;GAOG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;;GAUG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;GAOG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,UAAU,GAAG,OAAgB,CAAC;AAE3C;;;;GAIG;AACU,QAAA,gBAAgB,GAAG,MAAe,CAAC;AAEhD;;;;GAIG;AACU,QAAA,gBAAgB,GAAG,MAAe,CAAC;AAEhD;;;;;;;;GAQG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;;;;GASG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,MAAe,CAAC;AAE3D;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,WAAoB,CAAC;AAErE;;;;GAIG;AACU,QAAA,6BAA6B,GAAG,QAAiB,CAAC;AAE/D;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,MAAe,CAAC;AAE3D;;;;GAIG;AACU,QAAA,4BAA4B,GAAG,OAAgB,CAAC;AAE7D;;;;GAIG;AACU,QAAA,6BAA6B,GAAG,QAAiB,CAAC;AAE/D;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,MAAe,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACU,QAAA,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,UAAmB,CAAC;AAE1E;;;;GAIG;AACU,QAAA,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;GAIG;AACU,QAAA,kCAAkC,GAAG,OAAgB,CAAC;AAEnE;;;;GAIG;AACU,QAAA,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;;;GAIG;AACU,QAAA,kCAAkC,GAAG,OAAgB,CAAC;AAEnE;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,SAAkB,CAAC;AAEvE;;;;GAIG;AACU,QAAA,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;;;GAIG;AACU,QAAA,iCAAiC,GAAG,MAAe,CAAC;AAEjE;;;;;;;GAOG;AACU,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAE7F;;;;GAIG;AACU,QAAA,gDAAgD,GAAG,aAAsB,CAAC;AAEvF;;;;GAIG;AACU,QAAA,kDAAkD,GAAG,eAAwB,CAAC;AAE3F;;;;;;;GAOG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACU,QAAA,iCAAiC,GAAG,SAAkB,CAAC;AAEpE;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;GAIG;AACU,QAAA,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,QAAiB,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,OAAgB,CAAC;AAEjE;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;GAIG;AACU,QAAA,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;GAIG;AACU,QAAA,iCAAiC,GAAG,QAAiB,CAAC;AAEnE;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,aAAsB,CAAC;AAE7E;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;GAIG;AACU,QAAA,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;GAIG;AACU,QAAA,iCAAiC,GAAG,QAAiB,CAAC;AAEnE;;;;GAIG;AACU,QAAA,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;GAIG;AACU,QAAA,mCAAmC,GAAG,UAAmB,CAAC;AAEvE;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,IAAa,CAAC;AAE9D;;;;GAIG;AACU,QAAA,iCAAiC,GAAG,KAAc,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,OAAgB,CAAC;AAErE;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,OAAgB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;GAIG;AACU,QAAA,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;GAIG;AACU,QAAA,8BAA8B,GAAG,MAAe,CAAC;AAE9D;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACU,QAAA,8BAA8B,GAAG,OAAgB,CAAC;AAE/D;;;;GAIG;AACU,QAAA,8BAA8B,GAAG,OAAgB,CAAC;AAE/D;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;GAIG;AACU,QAAA,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;GAIG;AACU,QAAA,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,UAAmB,CAAC;AAExE;;;;GAIG;AACU,QAAA,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;;;GAQG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,SAAkB,CAAC;AAExE;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,SAAkB,CAAC;AAExE;;;;GAIG;AACU,QAAA,sCAAsC,GAAG,UAAmB,CAAC;AAE1E;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,SAAkB,CAAC;AAExE;;;;;;;;;GASG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;GAQG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;GAOG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,MAAe,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,uCAAuC,GAAG,aAAsB,CAAC;AAE9E;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,SAAkB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,WAAoB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;;;;;;;;;GAiBG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;;;;GASG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;GAQG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,KAAc,CAAC;AAE1D;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,KAAc,CAAC;AAE1D;;;;;;;GAOG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,aAAsB,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;;;GAWG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;GASG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,aAAa,GAAG,UAAmB,CAAC;AAEjD;;;;;;;;;GASG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;GASG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;GAMG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;;;;GASG;AACU,QAAA,oBAAoB,GAAG,iBAA0B,CAAC;AAE/D;;;;;;;;;;GAUG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;;;;;;GASG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAEnF;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,KAAc,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,MAAe,CAAC;AAEpE;;;;;;;;;GASG;AACU,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AAErE;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,aAAsB,CAAC;AAErE;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,OAAgB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG,OAAgB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,QAAiB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,qCAAqC,GAAG,YAAqB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,6CAA6C,GAAG,oBAA6B,CAAC;AAE3F;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,WAAoB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,QAAiB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,QAAiB,CAAC;AAE/D;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,MAAe,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,KAAc,CAAC;AAEzD;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE;;;;;;;GAOG;AACU,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,gCAAgC,GAAG,OAAgB,CAAC;AAEjE;;;;;;GAMG;AACU,QAAA,kCAAkC,GAAG,SAAkB,CAAC;AAErE;;;;;;;;GAQG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,WAAoB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,OAAgB,CAAC;AAE9D;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;;;GAQG;AACU,QAAA,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;;;;;;GAWG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;;GAWG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,KAAc,CAAC;AAE1D;;;;;;;;;;GAUG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;;;;;GAUG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,QAAiB,CAAC;AAEhE;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,KAAc,CAAC;AAE1D;;;;;;;GAOG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,QAAiB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,KAAc,CAAC;AAErD;;;;;;;;GAQG;AACU,QAAA,6BAA6B,GAAG,0BAAmC,CAAC;AAEjF;;;;;;;;;;GAUG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;;;;GAWG;AACU,QAAA,wBAAwB,GAAG,qBAA8B,CAAC;AAEvE;;;;;;;;;GASG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;;;;;GAWG;AACU,QAAA,gCAAgC,GAAG,6BAAsC,CAAC;AAEvF;;;;;;;;;GASG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;GAMG;AACU,QAAA,oCAAoC,GAAG,QAAiB,CAAC;AAEtE;;;;;;GAMG;AACU,QAAA,iCAAiC,GAAG,KAAc,CAAC;AAEhE;;;;;;;;;;GAUG;AACU,QAAA,4BAA4B,GAAG,yBAAkC,CAAC;AAE/E;;;;;;;GAOG;AACU,QAAA,iCAAiC,GAAG,8BAAuC,CAAC;AAEzF;;;;;;GAMG;AACU,QAAA,wCAAwC,GAAG,OAAgB,CAAC;AAEzE;;;;;;GAMG;AACU,QAAA,yCAAyC,GAAG,QAAiB,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,gBAAyB,CAAC;AAE7D;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,eAAe,GAAG,YAAqB,CAAC;AAErD;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,kBAA2B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * This attribute represents the state of the application.\n *\n * @example created\n *\n * @note The Android lifecycle states are defined in [Activity lifecycle callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), and from which the `OS identifiers` are derived.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ANDROID_APP_STATE = 'android.app.state' as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_ANDROID_APP_STATE}.\n *\n * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_APP_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"created\" for attribute {@link ATTR_ANDROID_APP_STATE}.\n *\n * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_APP_STATE_VALUE_CREATED = \"created\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_ANDROID_APP_STATE}.\n *\n * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_APP_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found in the [Android API levels documentation](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels).\n *\n * @example 33\n * @example 32\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ANDROID_OS_API_LEVEL = 'android.os.api_level' as const;\n\n/**\n * Deprecated. Use `android.app.state` attribute 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 `android.app.state`.\n */\nexport const ATTR_ANDROID_STATE = 'android.state' as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_ANDROID_STATE}.\n *\n * Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"created\" for attribute {@link ATTR_ANDROID_STATE}.\n *\n * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_STATE_VALUE_CREATED = \"created\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_ANDROID_STATE}.\n *\n * Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ANDROID_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Unique identifier for a particular build or compilation of the application.\n *\n * @example 6cff0a7e-cefc-4668-96f5-1273d8b334d0\n * @example 9f2b833506aa6973a92fde9733e6271f\n * @example my-app-1.0.0-code-123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_BUILD_ID = 'app.build_id' as const;\n\n/**\n * A unique identifier representing the installation of an application on a specific device\n *\n * @example 2ab2916d-a51f-4ac8-80ee-45ac31a28092\n *\n * @note Its value **SHOULD** persist across launches of the same application installation, including through application upgrades.\n * It **SHOULD** change if the application is uninstalled or if all applications of the vendor are uninstalled.\n * Additionally, users might be able to reset this value (e.g. by clearing application data).\n * If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` **SHOULD** have a different value.\n * If multiple OpenTelemetry SDKs are used within the same application, they **SHOULD** use the same value for `app.installation.id`.\n * Hardware IDs (e.g. serial number, IMEI, MAC address) **MUST NOT** be used as the `app.installation.id`.\n *\n * For iOS, this value **SHOULD** be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor).\n *\n * For Android, examples of `app.installation.id` implementations include:\n *\n * - [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations).\n * - A globally unique UUID which is persisted across sessions in your application.\n * - [App set ID](https://developer.android.com/identity/app-set-id).\n * - [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID).\n *\n * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_INSTALLATION_ID = 'app.installation.id' as const;\n\n/**\n * A number of frame renders that experienced jank.\n *\n * @example 9\n * @example 42\n *\n * @note Depending on platform limitations, the value provided **MAY** be approximation.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_JANK_FRAME_COUNT = 'app.jank.frame_count' as const;\n\n/**\n * The time period, in seconds, for which this jank is being reported.\n *\n * @example 1.0\n * @example 5.0\n * @example 10.24\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_JANK_PERIOD = 'app.jank.period' as const;\n\n/**\n * The minimum rendering threshold for this jank, in seconds.\n *\n * @example 0.016\n * @example 0.7\n * @example 1.024\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_JANK_THRESHOLD = 'app.jank.threshold' as const;\n\n/**\n * The x (horizontal) coordinate of a screen coordinate, in screen pixels.\n *\n * @example 0\n * @example 131\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_COORDINATE_X = 'app.screen.coordinate.x' as const;\n\n/**\n * The y (vertical) component of a screen coordinate, in screen pixels.\n *\n * @example 12\n * @example 99\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_COORDINATE_Y = 'app.screen.coordinate.y' as const;\n\n/**\n * An identifier that uniquely differentiates this screen from other screens in the same application.\n *\n * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3\n * @example com.example.app.MainActivity\n * @example com.example.shop.ProductDetailFragment\n * @example MyApp.ProfileView\n * @example MyApp.ProfileViewController\n *\n * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_ID = 'app.screen.id' as const;\n\n/**\n * The name of an application screen.\n *\n * @example MainActivity\n * @example ProductDetailFragment\n * @example ProfileView\n * @example ProfileViewController\n *\n * @note A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_SCREEN_NAME = 'app.screen.name' as const;\n\n/**\n * An identifier that uniquely differentiates this widget from other widgets in the same application.\n *\n * @example f9bc787d-ff05-48ad-90e1-fca1d46130b3\n * @example submit_order_1829\n *\n * @note A widget is an application component, typically an on-screen visual GUI element.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_WIDGET_ID = 'app.widget.id' as const;\n\n/**\n * The name of an application widget.\n *\n * @example submit\n * @example attack\n * @example Clear Cart\n *\n * @note A widget is an application component, typically an on-screen visual GUI element.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_APP_WIDGET_NAME = 'app.widget.name' as const;\n\n/**\n * The provenance filename of the built attestation which directly relates to the build artifact filename. This filename **SHOULD** accompany the artifact at publish time. See the [SLSA Relationship](https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations) specification for more information.\n *\n * @example golang-binary-amd64-v0.1.0.attestation\n * @example docker-image-amd64-v0.1.0.intoto.json1\n * @example release-1.tar.gz.attestation\n * @example file-name-package.tar.gz.intoto.json1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_FILENAME = 'artifact.attestation.filename' as const;\n\n/**\n * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the [software attestation space](https://github.com/in-toto/attestation/tree/main/spec) also refer to this as the **digest**.\n *\n * @example 1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_HASH = 'artifact.attestation.hash' as const;\n\n/**\n * The id of the build [software attestation](https://slsa.dev/attestation-model).\n *\n * @example 123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_ID = 'artifact.attestation.id' as const;\n\n/**\n * The human readable file name of the artifact, typically generated during build and release processes. Often includes the package name and version in the file name.\n *\n * @example golang-binary-amd64-v0.1.0\n * @example docker-image-amd64-v0.1.0\n * @example release-1.tar.gz\n * @example file-name-package.tar.gz\n *\n * @note This file name can also act as the [Package Name](https://slsa.dev/spec/v1.0/terminology#package-model)\n * in cases where the package ecosystem maps accordingly.\n * Additionally, the artifact [can be published](https://slsa.dev/spec/v1.0/terminology#software-supply-chain)\n * for others, but that is not a guarantee.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_FILENAME = 'artifact.filename' as const;\n\n/**\n * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), often found in checksum.txt on a release of the artifact and used to verify package integrity.\n *\n * @example 9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9\n *\n * @note The specific algorithm used to create the cryptographic hash value is\n * not defined. In situations where an artifact has multiple\n * cryptographic hashes, it is up to the implementer to choose which\n * hash value to set here; this should be the most secure hash algorithm\n * that is suitable for the situation and consistent with the\n * corresponding attestation. The implementer can then provide the other\n * hash values through an additional set of attribute extensions as they\n * deem necessary.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_HASH = 'artifact.hash' as const;\n\n/**\n * The [Package URL](https://github.com/package-url/purl-spec) of the [package artifact](https://slsa.dev/spec/v1.0/terminology#package-model) provides a standard way to identify and locate the packaged artifact.\n *\n * @example pkg:github/package-url/purl-spec@1209109710924\n * @example pkg:npm/foo@12.12.3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_PURL = 'artifact.purl' as const;\n\n/**\n * The version of the artifact.\n *\n * @example v0.1.0\n * @example 1.2.1\n * @example 122691-build\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_VERSION = 'artifact.version' as const;\n\n/**\n * The result of the authentication operation.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHENTICATION_RESULT = 'aspnetcore.authentication.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}.\n *\n * Authentication failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"none\" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}.\n *\n * No authentication information returned.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_NONE = \"none\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_AUTHENTICATION_RESULT}.\n *\n * Authentication was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHENTICATION_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The identifier that names a particular authentication handler.\n *\n * @example Cookies\n * @example Bearer\n * @example Identity.Application\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHENTICATION_SCHEME = 'aspnetcore.authentication.scheme' as const;\n\n/**\n * The name of the authorization policy.\n *\n * @example RequireAdminRole\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHORIZATION_POLICY = 'aspnetcore.authorization.policy' as const;\n\n/**\n * The result of calling the authorization service.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_AUTHORIZATION_RESULT = 'aspnetcore.authorization.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}.\n *\n * Authorization failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_AUTHORIZATION_RESULT}.\n *\n * Authorization was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_AUTHORIZATION_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The error code for a failed identity operation.\n *\n * @example DefaultError\n * @example PasswordMismatch\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_ERROR_CODE = 'aspnetcore.identity.error_code' as const;\n\n/**\n * The result from checking the password.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT = 'aspnetcore.identity.password_check_result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"password_missing\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check couldn't proceed because the password was missing from the user.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_PASSWORD_MISSING = \"password_missing\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"success_rehash_needed\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check was successful however the password was encoded using a deprecated algorithm and should be rehashed and updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_SUCCESS_REHASH_NEEDED = \"success_rehash_needed\" as const;\n\n/**\n * Enum value \"user_missing\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT}.\n *\n * Password check couldn't proceed because the user was missing.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_PASSWORD_CHECK_RESULT_VALUE_USER_MISSING = \"user_missing\" as const;\n\n/**\n * The result of the identity operation.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_RESULT = 'aspnetcore.identity.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}.\n *\n * Identity operation failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_RESULT}.\n *\n * Identity operation was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Whether the sign in result was success or failure.\n *\n * @example password\n * @example two_factor\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT = 'aspnetcore.identity.sign_in.result' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * Sign in failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"locked_out\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * User is locked out.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_LOCKED_OUT = \"locked_out\" as const;\n\n/**\n * Enum value \"not_allowed\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * User is not allowed to sign in.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_NOT_ALLOWED = \"not_allowed\" as const;\n\n/**\n * Enum value \"requires_two_factor\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * User requires two factory authentication to sign in.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_REQUIRES_TWO_FACTOR = \"requires_two_factor\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_RESULT}.\n *\n * Sign in was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The authentication type.\n *\n * @example password\n * @example two_factor\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE = 'aspnetcore.identity.sign_in.type' as const;\n\n/**\n * Enum value \"external\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with a previously registered third-party login.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_EXTERNAL = \"external\" as const;\n\n/**\n * Enum value \"passkey\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with passkey.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSKEY = \"passkey\" as const;\n\n/**\n * Enum value \"password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with password.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_PASSWORD = \"password\" as const;\n\n/**\n * Enum value \"two_factor\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with a two factor provider.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR = \"two_factor\" as const;\n\n/**\n * Enum value \"two_factor_authenticator\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with two factor authenticator app.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_AUTHENTICATOR = \"two_factor_authenticator\" as const;\n\n/**\n * Enum value \"two_factor_recovery_code\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_SIGN_IN_TYPE}.\n *\n * Sign in with two factory recovery code.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_SIGN_IN_TYPE_VALUE_TWO_FACTOR_RECOVERY_CODE = \"two_factor_recovery_code\" as const;\n\n/**\n * What the token will be used for.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE = 'aspnetcore.identity.token_purpose' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * Any token purpose that the instrumentation has no prior knowledge of.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"change_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for changing the user email address.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_EMAIL = \"change_email\" as const;\n\n/**\n * Enum value \"change_phone_number\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for changing a user phone number.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_CHANGE_PHONE_NUMBER = \"change_phone_number\" as const;\n\n/**\n * Enum value \"email_confirmation\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for confirming user email address.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_EMAIL_CONFIRMATION = \"email_confirmation\" as const;\n\n/**\n * Enum value \"reset_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for resetting a user password.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_RESET_PASSWORD = \"reset_password\" as const;\n\n/**\n * Enum value \"two_factor\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_PURPOSE}.\n *\n * The token is for changing user two factor settings.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_PURPOSE_VALUE_TWO_FACTOR = \"two_factor\" as const;\n\n/**\n * The result of token verification.\n *\n * @example success\n * @example failure\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED = 'aspnetcore.identity.token_verified' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}.\n *\n * Token verification failed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_TOKEN_VERIFIED}.\n *\n * Token verification was successful.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_TOKEN_VERIFIED_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * The user update type.\n *\n * @example update\n * @example user_name\n * @example reset_password\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE = 'aspnetcore.identity.user.update_type' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Any update type that the instrumentation has no prior knowledge of.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"access_failed\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user access failure recorded.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ACCESS_FAILED = \"access_failed\" as const;\n\n/**\n * Enum value \"add_claims\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user claims added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_CLAIMS = \"add_claims\" as const;\n\n/**\n * Enum value \"add_login\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user login added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_LOGIN = \"add_login\" as const;\n\n/**\n * Enum value \"add_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_PASSWORD = \"add_password\" as const;\n\n/**\n * Enum value \"add_to_roles\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user added to roles.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_ADD_TO_ROLES = \"add_to_roles\" as const;\n\n/**\n * Enum value \"change_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user email changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_EMAIL = \"change_email\" as const;\n\n/**\n * Enum value \"change_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PASSWORD = \"change_password\" as const;\n\n/**\n * Enum value \"change_phone_number\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user phone number changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CHANGE_PHONE_NUMBER = \"change_phone_number\" as const;\n\n/**\n * Enum value \"confirm_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user email confirmed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_CONFIRM_EMAIL = \"confirm_email\" as const;\n\n/**\n * Enum value \"generate_new_two_factor_recovery_codes\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user new two-factor recovery codes generated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_GENERATE_NEW_TWO_FACTOR_RECOVERY_CODES = \"generate_new_two_factor_recovery_codes\" as const;\n\n/**\n * Enum value \"password_rehash\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password rehashed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_PASSWORD_REHASH = \"password_rehash\" as const;\n\n/**\n * Enum value \"redeem_two_factor_recovery_code\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user two-factor recovery code redeemed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REDEEM_TWO_FACTOR_RECOVERY_CODE = \"redeem_two_factor_recovery_code\" as const;\n\n/**\n * Enum value \"remove_authentication_token\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user authentication token removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_AUTHENTICATION_TOKEN = \"remove_authentication_token\" as const;\n\n/**\n * Enum value \"remove_claims\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user claims removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_CLAIMS = \"remove_claims\" as const;\n\n/**\n * Enum value \"remove_from_roles\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user removed from roles.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_FROM_ROLES = \"remove_from_roles\" as const;\n\n/**\n * Enum value \"remove_login\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user login removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_LOGIN = \"remove_login\" as const;\n\n/**\n * Enum value \"remove_passkey\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user passkey removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSKEY = \"remove_passkey\" as const;\n\n/**\n * Enum value \"remove_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REMOVE_PASSWORD = \"remove_password\" as const;\n\n/**\n * Enum value \"replace_claim\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user claim replaced.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_REPLACE_CLAIM = \"replace_claim\" as const;\n\n/**\n * Enum value \"reset_access_failed_count\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user access failure count reset.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_ACCESS_FAILED_COUNT = \"reset_access_failed_count\" as const;\n\n/**\n * Enum value \"reset_authenticator_key\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user authenticator key reset.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_AUTHENTICATOR_KEY = \"reset_authenticator_key\" as const;\n\n/**\n * Enum value \"reset_password\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user password reset.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_RESET_PASSWORD = \"reset_password\" as const;\n\n/**\n * Enum value \"security_stamp\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user security stamp updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SECURITY_STAMP = \"security_stamp\" as const;\n\n/**\n * Enum value \"set_authentication_token\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user authentication token set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_AUTHENTICATION_TOKEN = \"set_authentication_token\" as const;\n\n/**\n * Enum value \"set_email\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user email set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_EMAIL = \"set_email\" as const;\n\n/**\n * Enum value \"set_lockout_enabled\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user lockout enabled or disabled.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_ENABLED = \"set_lockout_enabled\" as const;\n\n/**\n * Enum value \"set_lockout_end_date\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user lockout end date set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_LOCKOUT_END_DATE = \"set_lockout_end_date\" as const;\n\n/**\n * Enum value \"set_passkey\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user passkey set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PASSKEY = \"set_passkey\" as const;\n\n/**\n * Enum value \"set_phone_number\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user phone number set.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_PHONE_NUMBER = \"set_phone_number\" as const;\n\n/**\n * Enum value \"set_two_factor_enabled\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user two-factor authentication enabled or disabled.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_SET_TWO_FACTOR_ENABLED = \"set_two_factor_enabled\" as const;\n\n/**\n * Enum value \"update\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_UPDATE = \"update\" as const;\n\n/**\n * Enum value \"user_name\" for attribute {@link ATTR_ASPNETCORE_IDENTITY_USER_UPDATE_TYPE}.\n *\n * Identity user name updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ASPNETCORE_IDENTITY_USER_UPDATE_TYPE_VALUE_USER_NAME = \"user_name\" as const;\n\n/**\n * The full name of the identity user type.\n *\n * @example Contoso.ContosoUser\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_IDENTITY_USER_TYPE = 'aspnetcore.identity.user_type' as const;\n\n/**\n * The name of the library or subsystem using the memory pool instance.\n *\n * @example kestrel\n * @example iis\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_MEMORY_POOL_OWNER = 'aspnetcore.memory_pool.owner' as const;\n\n/**\n * A flag indicating whether the sign in is persistent.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ASPNETCORE_SIGN_IN_IS_PERSISTENT = 'aspnetcore.sign_in.is_persistent' as const;\n\n/**\n * The unique identifier of the AWS Bedrock Guardrail. A [guardrail](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) helps safeguard and prevent unwanted behavior from model responses or user messages.\n *\n * @example sgi5gkybzqak\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_BEDROCK_GUARDRAIL_ID = 'aws.bedrock.guardrail.id' as const;\n\n/**\n * The unique identifier of the AWS Bedrock Knowledge base. A [knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) is a bank of information that can be queried by models to generate more relevant responses and augment prompts.\n *\n * @example XFWUPB9PAW\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_BEDROCK_KNOWLEDGE_BASE_ID = 'aws.bedrock.knowledge_base.id' as const;\n\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @example [\"{ \"AttributeName\": \"string\", \"AttributeType\": \"string\" }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions' as const;\n\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @example [\"lives\", \"id\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get' as const;\n\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read' as const;\n\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @example [\"{ \"CapacityUnits\": number, \"GlobalSecondaryIndexes\": { \"string\" : { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }, \"LocalSecondaryIndexes\": { \"string\" : { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }, \"ReadCapacityUnits\": number, \"Table\": { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number }, \"TableName\": \"string\", \"WriteCapacityUnits\": number }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity' as const;\n\n/**\n * The value of the `Count` response parameter.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count' as const;\n\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @example Users\n * @example CatsTable\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table' as const;\n\n/**\n * The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field.\n *\n * @example [\"{ \"Create\": { \"IndexName\": \"string\", \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates' as const;\n\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field\n *\n * @example [\"{ \"IndexName\": \"string\", \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes' as const;\n\n/**\n * The value of the `IndexName` request parameter.\n *\n * @example name_to_group\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name' as const;\n\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @example { \"string\" : [ { \"ItemCollectionKey\": { \"string\" : { \"B\": blob, \"BOOL\": boolean, \"BS\": [ blob ], \"L\": [ \"AttributeValue\" ], \"M\": { \"string\" : \"AttributeValue\" }, \"N\": \"string\", \"NS\": [ \"string\" ], \"NULL\": boolean, \"S\": \"string\", \"SS\": [ \"string\" ] } }, \"SizeEstimateRangeGB\": [ number ] } ] }\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics' as const;\n\n/**\n * The value of the `Limit` request parameter.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit' as const;\n\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @example [\"{ \"IndexArn\": \"string\", \"IndexName\": \"string\", \"IndexSizeBytes\": number, \"ItemCount\": number, \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" } }\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes' as const;\n\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @example Title\n * @example Title, Price, Color\n * @example Title, Description, RelatedItems, ProductReviews\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection' as const;\n\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @example 1.0\n * @example 2.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity' as const;\n\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @example 1.0\n * @example 2.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity' as const;\n\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward' as const;\n\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @example 50\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count' as const;\n\n/**\n * The value of the `Segment` request parameter.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment' as const;\n\n/**\n * The value of the `Select` request parameter.\n *\n * @example ALL_ATTRIBUTES\n * @example COUNT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select' as const;\n\n/**\n * The number of items in the `TableNames` response parameter.\n *\n * @example 20\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count' as const;\n\n/**\n * The keys in the `RequestItems` object field.\n *\n * @example [\"Users\", \"Cats\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names' as const;\n\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments' as const;\n\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn' as const;\n\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 * @example arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn' as const;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype' as const;\n\n/**\n * Enum value \"ec2\" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}.\n *\n * Amazon EC2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AWS_ECS_LAUNCHTYPE_VALUE_EC2 = \"ec2\" as const;\n\n/**\n * Enum value \"fargate\" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}.\n *\n * Amazon Fargate\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AWS_ECS_LAUNCHTYPE_VALUE_FARGATE = \"fargate\" as const;\n\n/**\n * The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids).\n *\n * @example arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b\n * @example arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn' as const;\n\n/**\n * The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task.\n *\n * @example opentelemetry-family\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family' as const;\n\n/**\n * The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`.\n *\n * @example 10838bed-421f-43ef-870a-f43feacbbb5b\n * @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_ID = 'aws.ecs.task.id' as const;\n\n/**\n * The revision for the task definition used to create the ECS task.\n *\n * @example 8\n * @example 26\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision' as const;\n\n/**\n * The ARN of an EKS cluster.\n *\n * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn' as const;\n\n/**\n * The AWS extended request ID as returned in the response header `x-amz-id-2`.\n *\n * @example wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ=\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_EXTENDED_REQUEST_ID = 'aws.extended_request_id' as const;\n\n/**\n * The name of the AWS Kinesis [stream](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) the request refers to. Corresponds to the `--stream-name` parameter of the Kinesis [describe-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html) operation.\n *\n * @example some-stream-name\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_KINESIS_STREAM_NAME = 'aws.kinesis.stream_name' as const;\n\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 * @example arn:aws:lambda:us-east-1:123456:function:myfunction:myalias\n *\n * @note This may be different from `cloud.resource_id` if an alias is involved.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn' as const;\n\n/**\n * The UUID of the [AWS Lambda EvenSource Mapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html). An event source is mapped to a lambda function. It's contents are read by Lambda and used to trigger a function. This isn't available in the lambda execution context or the lambda runtime environtment. This is going to be populated by the AWS SDK for each language when that UUID is present. Some of these operations are Create/Delete/Get/List/Update EventSourceMapping.\n *\n * @example 587ad24b-03b9-4413-8202-bbd56b36e5b7\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LAMBDA_RESOURCE_MAPPING_ID = 'aws.lambda.resource_mapping.id' as const;\n\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * @example [\"arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns' as const;\n\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * @example [\"/aws/lambda/my-function\", \"opentelemetry-service\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_GROUP_NAMES = 'aws.log.group.names' as const;\n\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * @example [\"arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns' as const;\n\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @example [\"logs/main/10838bed-421f-43ef-870a-f43feacbbb5b\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names' as const;\n\n/**\n * The AWS request ID as returned in the response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`.\n *\n * @example 79b9da39-b7ae-508a-a6bc-864b2829c622\n * @example C9ER4AJX75574TDJ\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_REQUEST_ID = 'aws.request_id' as const;\n\n/**\n * The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations.\n *\n * @example some-bucket-name\n *\n * @note The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter.\n * This applies to almost all S3 operations except `list-buckets`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_BUCKET = 'aws.s3.bucket' as const;\n\n/**\n * The source object (in the form `bucket`/`key`) for the copy operation.\n *\n * @example someFile.yml\n *\n * @note The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter\n * of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html).\n * This applies in particular to the following operations:\n *\n * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_COPY_SOURCE = 'aws.s3.copy_source' as const;\n\n/**\n * The delete request container that specifies the objects to be deleted.\n *\n * @example Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean\n *\n * @note The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation.\n * The `delete` attribute corresponds to the `--delete` parameter of the\n * [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_DELETE = 'aws.s3.delete' as const;\n\n/**\n * The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations.\n *\n * @example someFile.yml\n *\n * @note The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter.\n * This applies in particular to the following operations:\n *\n * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)\n * - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html)\n * - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html)\n * - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html)\n * - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html)\n * - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html)\n * - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html)\n * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)\n * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)\n * - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html)\n * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)\n * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_KEY = 'aws.s3.key' as const;\n\n/**\n * The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000.\n *\n * @example 3456\n *\n * @note The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations.\n * The `part_number` attribute corresponds to the `--part-number` parameter of the\n * [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_PART_NUMBER = 'aws.s3.part_number' as const;\n\n/**\n * Upload ID that identifies the multipart upload.\n *\n * @example dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ\n *\n * @note The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter\n * of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations.\n * This applies in particular to the following operations:\n *\n * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)\n * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)\n * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)\n * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_UPLOAD_ID = 'aws.s3.upload_id' as const;\n\n/**\n * The ARN of the Secret stored in the Secrets Mangger\n *\n * @example arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_SECRETSMANAGER_SECRET_ARN = 'aws.secretsmanager.secret.arn' as const;\n\n/**\n * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) is a logical access point that acts as a communication channel.\n *\n * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_SNS_TOPIC_ARN = 'aws.sns.topic.arn' as const;\n\n/**\n * The URL of the AWS SQS Queue. It's a unique identifier for a queue in Amazon Simple Queue Service (SQS) and is used to access the queue and perform actions on it.\n *\n * @example https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_SQS_QUEUE_URL = 'aws.sqs.queue.url' as const;\n\n/**\n * The ARN of the AWS Step Functions Activity.\n *\n * @example arn:aws:states:us-east-1:123456789012:activity:get-greeting\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN = 'aws.step_functions.activity.arn' as const;\n\n/**\n * The ARN of the AWS Step Functions State Machine.\n *\n * @example arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN = 'aws.step_functions.state_machine.arn' as const;\n\n/**\n * Deprecated, use `azure.resource_provider.namespace` instead.\n *\n * @example Microsoft.Storage\n * @example Microsoft.KeyVault\n * @example Microsoft.ServiceBus\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 `azure.resource_provider.namespace`.\n */\nexport const ATTR_AZ_NAMESPACE = 'az.namespace' as const;\n\n/**\n * Deprecated, use `azure.service.request.id` instead.\n *\n * @example 00000000-0000-0000-0000-000000000000\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 `azure.service.request.id`.\n */\nexport const ATTR_AZ_SERVICE_REQUEST_ID = 'az.service_request_id' as const;\n\n/**\n * The unique identifier of the client instance.\n *\n * @example 3ba4827d-4422-483f-b59f-85b74211c11d\n * @example storage-client-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_CLIENT_ID = 'azure.client.id' as const;\n\n/**\n * Cosmos client connection mode.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_CONNECTION_MODE = 'azure.cosmosdb.connection.mode' as const;\n\n/**\n * Enum value \"direct\" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}.\n *\n * Direct connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = \"direct\" as const;\n\n/**\n * Enum value \"gateway\" for attribute {@link ATTR_AZURE_COSMOSDB_CONNECTION_MODE}.\n *\n * Gateway (HTTP) connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = \"gateway\" as const;\n\n/**\n * Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels).\n *\n * @example Eventual\n * @example ConsistentPrefix\n * @example BoundedStaleness\n * @example Strong\n * @example Session\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL = 'azure.cosmosdb.consistency.level' as const;\n\n/**\n * Enum value \"BoundedStaleness\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Bounded Staleness\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = \"BoundedStaleness\" as const;\n\n/**\n * Enum value \"ConsistentPrefix\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Consistent Prefix\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = \"ConsistentPrefix\" as const;\n\n/**\n * Enum value \"Eventual\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Eventual\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = \"Eventual\" as const;\n\n/**\n * Enum value \"Session\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Session\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = \"Session\" as const;\n\n/**\n * Enum value \"Strong\" for attribute {@link ATTR_AZURE_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * Strong\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const AZURE_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = \"Strong\" as const;\n\n/**\n * List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call.\n *\n * @example [\"North Central US\", \"Australia East\", \"Australia Southeast\"]\n *\n * @note Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS = 'azure.cosmosdb.operation.contacted_regions' as const;\n\n/**\n * The number of request units consumed by the operation.\n *\n * @example 46.18\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.operation.request_charge' as const;\n\n/**\n * Request payload size in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_REQUEST_BODY_SIZE = 'azure.cosmosdb.request.body.size' as const;\n\n/**\n * Cosmos DB sub status code.\n *\n * @example 1000\n * @example 1002\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE = 'azure.cosmosdb.response.sub_status_code' as const;\n\n/**\n * [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client.\n *\n * @example Microsoft.Storage\n * @example Microsoft.KeyVault\n * @example Microsoft.ServiceBus\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_RESOURCE_PROVIDER_NAMESPACE = 'azure.resource_provider.namespace' as const;\n\n/**\n * The unique identifier of the service request. It's generated by the Azure service and returned with the response.\n *\n * @example 00000000-0000-0000-0000-000000000000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZURE_SERVICE_REQUEST_ID = 'azure.service.request.id' as const;\n\n/**\n * Array of brand name and version separated by a space\n *\n * @example [\" Not A;Brand 99\", \"Chromium 99\", \"Chrome 99\"]\n *\n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_BRANDS = 'browser.brands' as const;\n\n/**\n * Preferred language of the user using the browser\n *\n * @example en\n * @example en-US\n * @example fr\n * @example fr-FR\n *\n * @note This value is intended to be taken from the Navigator API `navigator.language`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_LANGUAGE = 'browser.language' as const;\n\n/**\n * A boolean that is true if the browser is running on a mobile device\n *\n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute **SHOULD** be left unset.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_MOBILE = 'browser.mobile' as const;\n\n/**\n * The platform on which the browser is running\n *\n * @example Windows\n * @example macOS\n * @example Android\n *\n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API **SHOULD NOT** be used instead and this attribute **SHOULD** be left unset in order for the values to be consistent.\n * The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_PLATFORM = 'browser.platform' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_CONSISTENCY_LEVEL = 'cassandra.consistency.level' as const;\n\n/**\n * Enum value \"all\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * All\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = \"all\" as const;\n\n/**\n * Enum value \"any\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Any\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = \"any\" as const;\n\n/**\n * Enum value \"each_quorum\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Each Quorum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = \"each_quorum\" as const;\n\n/**\n * Enum value \"local_one\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Local One\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = \"local_one\" as const;\n\n/**\n * Enum value \"local_quorum\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Local Quorum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = \"local_quorum\" as const;\n\n/**\n * Enum value \"local_serial\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Local Serial\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = \"local_serial\" as const;\n\n/**\n * Enum value \"one\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * One\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = \"one\" as const;\n\n/**\n * Enum value \"quorum\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Quorum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = \"quorum\" as const;\n\n/**\n * Enum value \"serial\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Serial\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = \"serial\" as const;\n\n/**\n * Enum value \"three\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Three\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = \"three\" as const;\n\n/**\n * Enum value \"two\" for attribute {@link ATTR_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * Two\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = \"two\" as const;\n\n/**\n * The data center of the coordinating node for a query.\n *\n * @example \"us-west-2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_COORDINATOR_DC = 'cassandra.coordinator.dc' as const;\n\n/**\n * The ID of the coordinating node for a query.\n *\n * @example \"be13faa2-8574-4d71-926d-27f16cf8a7af\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_COORDINATOR_ID = 'cassandra.coordinator.id' as const;\n\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @example 5000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_PAGE_SIZE = 'cassandra.page.size' as const;\n\n/**\n * Whether or not the query is idempotent.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_QUERY_IDEMPOTENT = 'cassandra.query.idempotent' as const;\n\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @example 0\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'cassandra.speculative_execution.count' as const;\n\n/**\n * The kind of action a pipeline run is performing.\n *\n * @example BUILD\n * @example RUN\n * @example SYNC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_ACTION_NAME = 'cicd.pipeline.action.name' as const;\n\n/**\n * Enum value \"BUILD\" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}.\n *\n * The pipeline run is executing a build.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_ACTION_NAME_VALUE_BUILD = \"BUILD\" as const;\n\n/**\n * Enum value \"RUN\" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}.\n *\n * The pipeline run is executing.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_ACTION_NAME_VALUE_RUN = \"RUN\" as const;\n\n/**\n * Enum value \"SYNC\" for attribute {@link ATTR_CICD_PIPELINE_ACTION_NAME}.\n *\n * The pipeline run is executing a sync.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_ACTION_NAME_VALUE_SYNC = \"SYNC\" as const;\n\n/**\n * The human readable name of the pipeline within a CI/CD system.\n *\n * @example Build and Test\n * @example Lint\n * @example Deploy Go Project\n * @example deploy_to_environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_NAME = 'cicd.pipeline.name' as const;\n\n/**\n * The result of a pipeline run.\n *\n * @example success\n * @example failure\n * @example timeout\n * @example skipped\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RESULT = 'cicd.pipeline.result' as const;\n\n/**\n * Enum value \"cancellation\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_CANCELLATION = \"cancellation\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"skip\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run was skipped, eg. due to a precondition not being met.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_SKIP = \"skip\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * The pipeline run finished successfully.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_CICD_PIPELINE_RESULT}.\n *\n * A timeout caused the pipeline run to be interrupted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RESULT_VALUE_TIMEOUT = \"timeout\" as const;\n\n/**\n * The unique identifier of a pipeline run within a CI/CD system.\n *\n * @example 120912\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RUN_ID = 'cicd.pipeline.run.id' as const;\n\n/**\n * The pipeline run goes through these states during its lifecycle.\n *\n * @example pending\n * @example executing\n * @example finalizing\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RUN_STATE = 'cicd.pipeline.run.state' as const;\n\n/**\n * Enum value \"executing\" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}.\n *\n * The executing state spans the execution of any run tasks (eg. build, test).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RUN_STATE_VALUE_EXECUTING = \"executing\" as const;\n\n/**\n * Enum value \"finalizing\" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}.\n *\n * The finalizing state spans from when the run has finished executing (eg. cleanup of run resources).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RUN_STATE_VALUE_FINALIZING = \"finalizing\" as const;\n\n/**\n * Enum value \"pending\" for attribute {@link ATTR_CICD_PIPELINE_RUN_STATE}.\n *\n * The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_RUN_STATE_VALUE_PENDING = \"pending\" as const;\n\n/**\n * The [URL](https://wikipedia.org/wiki/URL) of the pipeline run, providing the complete address in order to locate and identify the pipeline run.\n *\n * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RUN_URL_FULL = 'cicd.pipeline.run.url.full' as const;\n\n/**\n * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures.\n *\n * @example Run GoLang Linter\n * @example Go Build\n * @example go-test\n * @example deploy_binary\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_NAME = 'cicd.pipeline.task.name' as const;\n\n/**\n * The unique identifier of a task run within a pipeline.\n *\n * @example 12097\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_ID = 'cicd.pipeline.task.run.id' as const;\n\n/**\n * The result of a task run.\n *\n * @example success\n * @example failure\n * @example timeout\n * @example skipped\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_RESULT = 'cicd.pipeline.task.run.result' as const;\n\n/**\n * Enum value \"cancellation\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run was cancelled, eg. by a user manually cancelling the task run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_CANCELLATION = \"cancellation\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run failed due to an error in the CICD system, eg. due to the worker being killed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the task run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"skip\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run was skipped, eg. due to a precondition not being met.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SKIP = \"skip\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * The task run finished successfully.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_CICD_PIPELINE_TASK_RUN_RESULT}.\n *\n * A timeout caused the task run to be interrupted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_RUN_RESULT_VALUE_TIMEOUT = \"timeout\" as const;\n\n/**\n * The [URL](https://wikipedia.org/wiki/URL) of the pipeline task run, providing the complete address in order to locate and identify the pipeline task run.\n *\n * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL = 'cicd.pipeline.task.run.url.full' as const;\n\n/**\n * The type of the task within a pipeline.\n *\n * @example build\n * @example test\n * @example deploy\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_TYPE = 'cicd.pipeline.task.type' as const;\n\n/**\n * Enum value \"build\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n *\n * build\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_BUILD = \"build\" as const;\n\n/**\n * Enum value \"deploy\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n *\n * deploy\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY = \"deploy\" as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n *\n * test\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_TEST = \"test\" as const;\n\n/**\n * The name of a component of the CICD system.\n *\n * @example controller\n * @example scheduler\n * @example agent\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_SYSTEM_COMPONENT = 'cicd.system.component' as const;\n\n/**\n * The unique identifier of a worker within a CICD system.\n *\n * @example abc123\n * @example 10.0.1.2\n * @example controller\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_ID = 'cicd.worker.id' as const;\n\n/**\n * The name of a worker within a CICD system.\n *\n * @example agent-abc\n * @example controller\n * @example Ubuntu LTS\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_NAME = 'cicd.worker.name' as const;\n\n/**\n * The state of a CICD worker / agent.\n *\n * @example idle\n * @example busy\n * @example down\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_STATE = 'cicd.worker.state' as const;\n\n/**\n * Enum value \"available\" for attribute {@link ATTR_CICD_WORKER_STATE}.\n *\n * The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_WORKER_STATE_VALUE_AVAILABLE = \"available\" as const;\n\n/**\n * Enum value \"busy\" for attribute {@link ATTR_CICD_WORKER_STATE}.\n *\n * The worker is performing work for the CICD system.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_WORKER_STATE_VALUE_BUSY = \"busy\" as const;\n\n/**\n * Enum value \"offline\" for attribute {@link ATTR_CICD_WORKER_STATE}.\n *\n * The worker is not available to the CICD system (disconnected / down).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CICD_WORKER_STATE_VALUE_OFFLINE = \"offline\" as const;\n\n/**\n * The [URL](https://wikipedia.org/wiki/URL) of the worker, providing the complete address in order to locate and identify the worker.\n *\n * @example https://cicd.example.org/worker/abc123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_WORKER_URL_FULL = 'cicd.worker.url.full' as const;\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 */\nexport const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id' as const;\n\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 */\nexport const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_PLATFORM = 'cloud.platform' as const;\n\n/**\n * Enum value \"akamai_cloud.compute\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Akamai Cloud Compute\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE = \"akamai_cloud.compute\" as const;\n\n/**\n * Enum value \"alibaba_cloud_ecs\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Alibaba Cloud Elastic Compute Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS = \"alibaba_cloud_ecs\" as const;\n\n/**\n * Enum value \"alibaba_cloud_fc\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Alibaba Cloud Function Compute\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC = \"alibaba_cloud_fc\" as const;\n\n/**\n * Enum value \"alibaba_cloud_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on Alibaba Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT = \"alibaba_cloud_openshift\" as const;\n\n/**\n * Enum value \"aws_app_runner\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS App Runner\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER = \"aws_app_runner\" as const;\n\n/**\n * Enum value \"aws_ec2\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Compute Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_EC2 = \"aws_ec2\" as const;\n\n/**\n * Enum value \"aws_ecs\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Container Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_ECS = \"aws_ecs\" as const;\n\n/**\n * Enum value \"aws_eks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Kubernetes Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_EKS = \"aws_eks\" as const;\n\n/**\n * Enum value \"aws_elastic_beanstalk\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Elastic Beanstalk\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK = \"aws_elastic_beanstalk\" as const;\n\n/**\n * Enum value \"aws_lambda\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * AWS Lambda\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_LAMBDA = \"aws_lambda\" as const;\n\n/**\n * Enum value \"aws_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on AWS (ROSA)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT = \"aws_openshift\" as const;\n\n/**\n * Enum value \"azure.aks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Kubernetes Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_AKS = \"azure.aks\" as const;\n\n/**\n * Enum value \"azure.app_service\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure App Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE = \"azure.app_service\" as const;\n\n/**\n * Enum value \"azure.container_apps\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Container Apps\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS = \"azure.container_apps\" as const;\n\n/**\n * Enum value \"azure.container_instances\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Container Instances\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES = \"azure.container_instances\" as const;\n\n/**\n * Enum value \"azure.functions\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Functions\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS = \"azure.functions\" as const;\n\n/**\n * Enum value \"azure.openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Red Hat OpenShift\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT = \"azure.openshift\" as const;\n\n/**\n * Enum value \"azure.vm\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Azure Virtual Machines\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_VM = \"azure.vm\" as const;\n\n/**\n * Enum value \"gcp.agent_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Vertex AI Agent Engine\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE = \"gcp.agent_engine\" as const;\n\n/**\n * Enum value \"gcp_app_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud App Engine (GAE)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE = \"gcp_app_engine\" as const;\n\n/**\n * Enum value \"gcp_bare_metal_solution\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Bare Metal Solution (BMS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION = \"gcp_bare_metal_solution\" as const;\n\n/**\n * Enum value \"gcp_cloud_functions\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Functions (GCF)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS = \"gcp_cloud_functions\" as const;\n\n/**\n * Enum value \"gcp_cloud_run\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Run\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN = \"gcp_cloud_run\" as const;\n\n/**\n * Enum value \"gcp_compute_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Compute Engine (GCE)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE = \"gcp_compute_engine\" as const;\n\n/**\n * Enum value \"gcp_kubernetes_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Google Cloud Kubernetes Engine (GKE)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE = \"gcp_kubernetes_engine\" as const;\n\n/**\n * Enum value \"gcp_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on Google Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT = \"gcp_openshift\" as const;\n\n/**\n * Enum value \"hetzner.cloud_server\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Server on Hetzner Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER = \"hetzner.cloud_server\" as const;\n\n/**\n * Enum value \"ibm_cloud_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Red Hat OpenShift on IBM Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT = \"ibm_cloud_openshift\" as const;\n\n/**\n * Enum value \"oracle_cloud_compute\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Compute on Oracle Cloud Infrastructure (OCI)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_COMPUTE = \"oracle_cloud_compute\" as const;\n\n/**\n * Enum value \"oracle_cloud_oke\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_ORACLE_CLOUD_OKE = \"oracle_cloud_oke\" as const;\n\n/**\n * Enum value \"tencent_cloud_cvm\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Tencent Cloud Cloud Virtual Machine (CVM)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM = \"tencent_cloud_cvm\" as const;\n\n/**\n * Enum value \"tencent_cloud_eks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Tencent Cloud Elastic Kubernetes Service (EKS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS = \"tencent_cloud_eks\" as const;\n\n/**\n * Enum value \"tencent_cloud_scf\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Tencent Cloud Serverless Cloud Function (SCF)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF = \"tencent_cloud_scf\" as const;\n\n/**\n * Enum value \"vultr.cloud_compute\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n *\n * Vultr Cloud Compute\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE = \"vultr.cloud_compute\" as const;\n\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 */\nexport const ATTR_CLOUD_PROVIDER = 'cloud.provider' as const;\n\n/**\n * Enum value \"akamai_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Akamai Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD = \"akamai_cloud\" as const;\n\n/**\n * Enum value \"alibaba_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Alibaba Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD = \"alibaba_cloud\" as const;\n\n/**\n * Enum value \"aws\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Amazon Web Services\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_AWS = \"aws\" as const;\n\n/**\n * Enum value \"azure\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Microsoft Azure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_AZURE = \"azure\" as const;\n\n/**\n * Enum value \"gcp\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Google Cloud Platform\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_GCP = \"gcp\" as const;\n\n/**\n * Enum value \"heroku\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Heroku Platform as a Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_HEROKU = \"heroku\" as const;\n\n/**\n * Enum value \"hetzner\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Hetzner\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_HETZNER = \"hetzner\" as const;\n\n/**\n * Enum value \"ibm_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * IBM Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_IBM_CLOUD = \"ibm_cloud\" as const;\n\n/**\n * Enum value \"oracle_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Oracle Cloud Infrastructure (OCI)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_ORACLE_CLOUD = \"oracle_cloud\" as const;\n\n/**\n * Enum value \"tencent_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Tencent Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_TENCENT_CLOUD = \"tencent_cloud\" as const;\n\n/**\n * Enum value \"vultr\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n *\n * Vultr\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CLOUD_PROVIDER_VALUE_VULTR = \"vultr\" as const;\n\n/**\n * The geographical region within a cloud provider. When associated with a resource, this attribute specifies the region where the resource operates. When calling services or APIs deployed on a cloud, this attribute identifies the region where the called destination is deployed.\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 */\nexport const ATTR_CLOUD_REGION = 'cloud.region' as const;\n\n/**\n * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://google.aip.dev/122#full-resource-names) on GCP)\n *\n * @example arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function\n * @example //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID\n * @example /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/\n *\n * @note On some cloud providers, it may not be possible to determine the full ID at startup,\n * so it may be necessary to set `cloud.resource_id` as a span attribute instead.\n *\n * The exact value to use for `cloud.resource_id` depends on the cloud provider.\n * The following well-known definitions **MUST** be used if you set this attribute and they apply:\n *\n * - **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\n * Take 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)\n * with the resolved function version, as the same runtime instance may be invocable with\n * multiple different 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://learn.microsoft.com/rest/api/resources/resources/get-by-id) of the invoked function,\n * *not* the function app, having the form\n * `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`.\n * This means that a span attribute **MUST** be used, as an Azure function app can host multiple functions that would usually share\n * a TracerProvider.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_RESOURCE_ID = 'cloud.resource_id' as const;\n\n/**\n * The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event.\n *\n * @example 123e4567-e89b-12d3-a456-426614174000\n * @example 0001\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_ID = 'cloudevents.event_id' as const;\n\n/**\n * The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened.\n *\n * @example https://github.com/cloudevents\n * @example /cloudevents/spec/pull/123\n * @example my-service\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SOURCE = 'cloudevents.event_source' as const;\n\n/**\n * The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses.\n *\n * @example \"1.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION = 'cloudevents.event_spec_version' as const;\n\n/**\n * The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source).\n *\n * @example \"mynewfile.jpg\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SUBJECT = 'cloudevents.event_subject' as const;\n\n/**\n * The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence.\n *\n * @example com.github.pull_request.opened\n * @example com.example.object.deleted.v2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_TYPE = 'cloudevents.event_type' as const;\n\n/**\n * The guid of the application.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.application_id`. This is the same value as\n * reported by `cf app --guid`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_ID = 'cloudfoundry.app.id' as const;\n\n/**\n * The index of the application instance. 0 when just one instance is active.\n *\n * @example 0\n * @example 1\n *\n * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the application instance index for applications\n * deployed on the runtime.\n *\n * Application instrumentation should use the value from environment\n * variable `CF_INSTANCE_INDEX`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID = 'cloudfoundry.app.instance.id' as const;\n\n/**\n * The name of the application.\n *\n * @example my-app-name\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.application_name`. This is the same value\n * as reported by `cf apps`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_NAME = 'cloudfoundry.app.name' as const;\n\n/**\n * The guid of the CloudFoundry org the application is running in.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.org_id`. This is the same value as\n * reported by `cf org --guid`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_ORG_ID = 'cloudfoundry.org.id' as const;\n\n/**\n * The name of the CloudFoundry organization the app is running in.\n *\n * @example my-org-name\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.org_name`. This is the same value as\n * reported by `cf orgs`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_ORG_NAME = 'cloudfoundry.org.name' as const;\n\n/**\n * The UID identifying the process.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to\n * `VCAP_APPLICATION.app_id` for applications deployed to the runtime.\n * For system components, this could be the actual PID.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_PROCESS_ID = 'cloudfoundry.process.id' as const;\n\n/**\n * The type of process.\n *\n * @example web\n *\n * @note CloudFoundry applications can consist of multiple jobs. Usually the\n * main process will be of type `web`. There can be additional background\n * tasks or side-cars with different process types.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_PROCESS_TYPE = 'cloudfoundry.process.type' as const;\n\n/**\n * The guid of the CloudFoundry space the application is running in.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.space_id`. This is the same value as\n * reported by `cf space --guid`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SPACE_ID = 'cloudfoundry.space.id' as const;\n\n/**\n * The name of the CloudFoundry space the application is running in.\n *\n * @example my-space-name\n *\n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.space_name`. This is the same value as\n * reported by `cf spaces`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SPACE_NAME = 'cloudfoundry.space.name' as const;\n\n/**\n * A guid or another name describing the event source.\n *\n * @example cf/gorouter\n *\n * @note CloudFoundry defines the `source_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the component name, e.g. \"gorouter\", for\n * CloudFoundry components.\n *\n * When system components are instrumented, values from the\n * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec)\n * should be used. The `system.id` should be set to\n * `spec.deployment/spec.name`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SYSTEM_ID = 'cloudfoundry.system.id' as const;\n\n/**\n * A guid describing the concrete instance of the event source.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the vm id for CloudFoundry components.\n *\n * When system components are instrumented, values from the\n * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec)\n * should be used. The `system.instance.id` should be set to `spec.id`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID = 'cloudfoundry.system.instance.id' as const;\n\n/**\n * Deprecated, use `code.column.number`\n *\n * @example 16\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 `code.column.number`.\n */\nexport const ATTR_CODE_COLUMN = 'code.column' as const;\n\n/**\n * Deprecated, use `code.file.path` instead\n *\n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\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 `code.file.path`.\n */\nexport const ATTR_CODE_FILEPATH = 'code.filepath' as const;\n\n/**\n * Deprecated, use `code.function.name` instead\n *\n * @example \"serveRequest\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name.\n */\nexport const ATTR_CODE_FUNCTION = 'code.function' as const;\n\n/**\n * Deprecated, use `code.line.number` instead\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 *\n * @deprecated Replaced by `code.line.number`.\n */\nexport const ATTR_CODE_LINENO = 'code.lineno' as const;\n\n/**\n * Deprecated, namespace is now included into `code.function.name`\n *\n * @example \"com.example.MyHttpService\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Value should be included in `code.function.name` which is expected to be a fully-qualified name.\n */\nexport const ATTR_CODE_NAMESPACE = 'code.namespace' as const;\n\n/**\n * The command used to run the container (i.e. the command name).\n *\n * @example otelcontribcol\n *\n * @note If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND = 'container.command' as const;\n\n/**\n * All the command arguments (including the command/executable itself) run by the container.\n *\n * @example [\"otelcontribcol\", \"--config\", \"config.yaml\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND_ARGS = 'container.command_args' as const;\n\n/**\n * The full command run by the container as a single string representing the full command.\n *\n * @example otelcontribcol --config config.yaml\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND_LINE = 'container.command_line' as const;\n\n/**\n * Deprecated, use `cpu.mode` instead.\n *\n * @example user\n * @example kernel\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 `cpu.mode`.\n */\nexport const ATTR_CONTAINER_CPU_STATE = 'container.cpu.state' as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n *\n * When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CONTAINER_CPU_STATE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n *\n * When CPU is used by the system (host OS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CONTAINER_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n *\n * When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CONTAINER_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * The name of the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin used by the volume.\n *\n * @example pd.csi.storage.gke.io\n *\n * @note This can sometimes be referred to as a \"driver\" in CSI implementations. This should represent the `name` field of the GetPluginInfo RPC.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_CSI_PLUGIN_NAME = 'container.csi.plugin.name' as const;\n\n/**\n * The unique volume ID returned by the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin.\n *\n * @example projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk\n *\n * @note This can sometimes be referred to as a \"volume handle\" in CSI implementations. This should represent the `Volume.volume_id` field in CSI spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_CSI_VOLUME_ID = 'container.csi.volume.id' as const;\n\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 */\nexport const ATTR_CONTAINER_ID = 'container.id' as const;\n\n/**\n * Runtime specific image identifier. Usually a hash algorithm followed by a UUID.\n *\n * @example sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f\n *\n * @note Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect) endpoint.\n * K8s defines a link to the container registry repository with digest `\"imageID\": \"registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625\"`.\n * The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_ID = 'container.image.id' as const;\n\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 */\nexport const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name' as const;\n\n/**\n * Repo digests of the container image as provided by the container runtime.\n *\n * @example [\"example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb\", \"internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578\"]\n *\n * @note [Docker](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_REPO_DIGESTS = 'container.image.repo_digests' as const;\n\n/**\n * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.52/#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 */\nexport const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags' as const;\n\n/**\n * Container labels, `` being the label name, the value being the label value.\n *\n * @example nginx\n *\n * @note For example, a docker container label `app` with value `nginx` **SHOULD** be recorded as the `container.label.app` attribute with value `\"nginx\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_LABEL = (key: string) => `container.label.${key}`;\n\n/**\n * Deprecated, use `container.label` instead.\n *\n * @example nginx\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 `container.label`.\n */\nexport const ATTR_CONTAINER_LABELS = (key: string) => `container.labels.${key}`;\n\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 */\nexport const ATTR_CONTAINER_NAME = 'container.name' as const;\n\n/**\n * The container runtime managing this container.\n *\n * @example docker\n * @example containerd\n * @example rkt\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 `container.runtime.name`.\n */\nexport const ATTR_CONTAINER_RUNTIME = 'container.runtime' as const;\n\n/**\n * A description about the runtime which could include, for example details about the CRI/API version being used or other customisations.\n *\n * @example docker://19.3.1 - CRI: 1.22.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_RUNTIME_DESCRIPTION = 'container.runtime.description' as const;\n\n/**\n * The container runtime managing this container.\n *\n * @example docker\n * @example containerd\n * @example rkt\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_RUNTIME_NAME = 'container.runtime.name' as const;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @example \"1.0.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_RUNTIME_VERSION = 'container.runtime.version' as const;\n\n/**\n * The logical CPU number [0..n-1]\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 */\nexport const ATTR_CPU_LOGICAL_NUMBER = 'cpu.logical_number' as const;\n\n/**\n * The mode of the CPU\n *\n * @example user\n * @example system\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CPU_MODE = 'cpu.mode' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Idle\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"interrupt\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Interrupt\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_INTERRUPT = \"interrupt\" as const;\n\n/**\n * Enum value \"iowait\" for attribute {@link ATTR_CPU_MODE}.\n *\n * IO Wait\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_IOWAIT = \"iowait\" as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Kernel\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"nice\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Nice\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_NICE = \"nice\" as const;\n\n/**\n * Enum value \"steal\" for attribute {@link ATTR_CPU_MODE}.\n *\n * Steal\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_STEAL = \"steal\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_CPU_MODE}.\n *\n * System\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_CPU_MODE}.\n *\n * User\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPU_MODE_VALUE_USER = \"user\" as const;\n\n/**\n * Value of the garbage collector collection generation.\n *\n * @example 0\n * @example 1\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CPYTHON_GC_GENERATION = 'cpython.gc.generation' as const;\n\n/**\n * Enum value 0 for attribute {@link ATTR_CPYTHON_GC_GENERATION}.\n *\n * Generation 0\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPYTHON_GC_GENERATION_VALUE_GENERATION_0 = 0 as const;\n\n/**\n * Enum value 1 for attribute {@link ATTR_CPYTHON_GC_GENERATION}.\n *\n * Generation 1\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPYTHON_GC_GENERATION_VALUE_GENERATION_1 = 1 as const;\n\n/**\n * Enum value 2 for attribute {@link ATTR_CPYTHON_GC_GENERATION}.\n *\n * Generation 2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const CPYTHON_GC_GENERATION_VALUE_GENERATION_2 = 2 as const;\n\n/**\n * Deprecated, use `cassandra.consistency.level` 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 `cassandra.consistency.level`.\n */\nexport const ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level' as const;\n\n/**\n * Enum value \"all\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = \"all\" as const;\n\n/**\n * Enum value \"any\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = \"any\" as const;\n\n/**\n * Enum value \"each_quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = \"each_quorum\" as const;\n\n/**\n * Enum value \"local_one\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = \"local_one\" as const;\n\n/**\n * Enum value \"local_quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = \"local_quorum\" as const;\n\n/**\n * Enum value \"local_serial\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = \"local_serial\" as const;\n\n/**\n * Enum value \"one\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = \"one\" as const;\n\n/**\n * Enum value \"quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = \"quorum\" as const;\n\n/**\n * Enum value \"serial\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = \"serial\" as const;\n\n/**\n * Enum value \"three\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = \"three\" as const;\n\n/**\n * Enum value \"two\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = \"two\" as const;\n\n/**\n * Deprecated, use `cassandra.coordinator.dc` instead.\n *\n * @example \"us-west-2\"\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 `cassandra.coordinator.dc`.\n */\nexport const ATTR_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc' as const;\n\n/**\n * Deprecated, use `cassandra.coordinator.id` instead.\n *\n * @example \"be13faa2-8574-4d71-926d-27f16cf8a7af\"\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 `cassandra.coordinator.id`.\n */\nexport const ATTR_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id' as const;\n\n/**\n * Deprecated, use `cassandra.query.idempotent` 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 `cassandra.query.idempotent`.\n */\nexport const ATTR_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence' as const;\n\n/**\n * Deprecated, use `cassandra.page.size` instead.\n *\n * @example 5000\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 `cassandra.page.size`.\n */\nexport const ATTR_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size' as const;\n\n/**\n * Deprecated, use `cassandra.speculative_execution.count` instead.\n *\n * @example 0\n * @example 2\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 `cassandra.speculative_execution.count`.\n */\nexport const ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count' as const;\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 */\nexport const ATTR_DB_CASSANDRA_TABLE = 'db.cassandra.table' as const;\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 */\nexport const ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name' as const;\n\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 */\nexport const ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `db.client.connection.pool.name` instead.\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 *\n * @deprecated Replaced by `db.client.connection.pool.name`.\n */\nexport const ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME = 'db.client.connections.pool.name' as const;\n\n/**\n * Deprecated, use `db.client.connection.state` instead.\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 *\n * @deprecated Replaced by `db.client.connection.state`.\n */\nexport const ATTR_DB_CLIENT_CONNECTIONS_STATE = 'db.client.connections.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_CLIENT_CONNECTIONS_STATE_VALUE_USED = \"used\" as const;\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 */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `azure.client.id` instead.\n *\n * @example \"3ba4827d-4422-483f-b59f-85b74211c11d\"\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 `azure.client.id`.\n */\nexport const ATTR_DB_COSMOSDB_CLIENT_ID = 'db.cosmosdb.client_id' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.connection.mode` 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 `azure.cosmosdb.connection.mode`.\n */\nexport const ATTR_DB_COSMOSDB_CONNECTION_MODE = 'db.cosmosdb.connection_mode' as const;\n\n/**\n * Enum value \"direct\" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}.\n *\n * Direct connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = \"direct\" as const;\n\n/**\n * Enum value \"gateway\" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}.\n *\n * Gateway (HTTP) connection.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = \"gateway\" as const;\n\n/**\n * Deprecated, use `cosmosdb.consistency.level` instead.\n *\n * @example Eventual\n * @example ConsistentPrefix\n * @example BoundedStaleness\n * @example Strong\n * @example Session\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 `azure.cosmosdb.consistency.level`.\n */\nexport const ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL = 'db.cosmosdb.consistency_level' as const;\n\n/**\n * Enum value \"BoundedStaleness\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = \"BoundedStaleness\" as const;\n\n/**\n * Enum value \"ConsistentPrefix\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = \"ConsistentPrefix\" as const;\n\n/**\n * Enum value \"Eventual\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = \"Eventual\" as const;\n\n/**\n * Enum value \"Session\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = \"Session\" as const;\n\n/**\n * Enum value \"Strong\" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = \"Strong\" as const;\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 */\nexport const ATTR_DB_COSMOSDB_CONTAINER = 'db.cosmosdb.container' as const;\n\n/**\n * Deprecated, no replacement at this time.\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 */\nexport const ATTR_DB_COSMOSDB_OPERATION_TYPE = 'db.cosmosdb.operation_type' as const;\n\n/**\n * Enum value \"batch\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH = \"batch\" as const;\n\n/**\n * Enum value \"create\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE = \"create\" as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"execute\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE = \"execute\" as const;\n\n/**\n * Enum value \"execute_javascript\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT = \"execute_javascript\" as const;\n\n/**\n * Enum value \"head\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD = \"head\" as const;\n\n/**\n * Enum value \"head_feed\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED = \"head_feed\" as const;\n\n/**\n * Enum value \"invalid\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID = \"invalid\" as const;\n\n/**\n * Enum value \"patch\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH = \"patch\" as const;\n\n/**\n * Enum value \"query\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY = \"query\" as const;\n\n/**\n * Enum value \"query_plan\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN = \"query_plan\" as const;\n\n/**\n * Enum value \"read\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ = \"read\" as const;\n\n/**\n * Enum value \"read_feed\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED = \"read_feed\" as const;\n\n/**\n * Enum value \"replace\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE = \"replace\" as const;\n\n/**\n * Enum value \"upsert\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT = \"upsert\" as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead.\n *\n * @example [\"North Central US\", \"Australia East\", \"Australia Southeast\"]\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 `azure.cosmosdb.operation.contacted_regions`.\n */\nexport const ATTR_DB_COSMOSDB_REGIONS_CONTACTED = 'db.cosmosdb.regions_contacted' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.operation.request_charge` instead.\n *\n * @example 46.18\n * @example 1.0\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 `azure.cosmosdb.operation.request_charge`.\n */\nexport const ATTR_DB_COSMOSDB_REQUEST_CHARGE = 'db.cosmosdb.request_charge' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.request.body.size` 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 `azure.cosmosdb.request.body.size`.\n */\nexport const ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH = 'db.cosmosdb.request_content_length' as const;\n\n/**\n * Deprecated, use `db.response.status_code` instead.\n *\n * @example 200\n * @example 201\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use `db.response.status_code` instead.\n */\nexport const ATTR_DB_COSMOSDB_STATUS_CODE = 'db.cosmosdb.status_code' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.response.sub_status_code` instead.\n *\n * @example 1000\n * @example 1002\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 `azure.cosmosdb.response.sub_status_code`.\n */\nexport const ATTR_DB_COSMOSDB_SUB_STATUS_CODE = 'db.cosmosdb.sub_status_code' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example e9106fc68e3044f0b1475b04bf4ffd5f\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 */\nexport const ATTR_DB_ELASTICSEARCH_CLUSTER_NAME = 'db.elasticsearch.cluster.name' as const;\n\n/**\n * Deprecated, use `elasticsearch.node.name` instead.\n *\n * @example instance-0000000001\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 `elasticsearch.node.name`.\n */\nexport const ATTR_DB_ELASTICSEARCH_NODE_NAME = 'db.elasticsearch.node.name' as const;\n\n/**\n * Deprecated, use `db.operation.parameter` instead.\n *\n * @example test-index\n * @example 123\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.parameter`.\n */\nexport const ATTR_DB_ELASTICSEARCH_PATH_PARTS = (key: string) => `db.elasticsearch.path_parts.${key}`;\n\n/**\n * Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead.\n *\n * @example \"mysql-e26b99z.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 Removed, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead.\n */\nexport const ATTR_DB_INSTANCE_ID = 'db.instance.id' as const;\n\n/**\n * Removed, no replacement at this time.\n *\n * @example org.postgresql.Driver\n * @example com.microsoft.sqlserver.jdbc.SQLServerDriver\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 */\nexport const ATTR_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname' as const;\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 */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute.\n *\n * @example \"MSSQLSERVER\"\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 */\nexport const ATTR_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name' as const;\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 */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\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 */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value.\n *\n * @example someval\n * @example 55\n *\n * @note For example, a client-side maximum number of rows to read from the database\n * **MAY** be recorded as the `db.operation.parameter.max_rows` attribute.\n *\n * `db.query.text` parameters **SHOULD** be captured using `db.query.parameter.`\n * instead of `db.operation.parameter.`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_OPERATION_PARAMETER = (key: string) => `db.operation.parameter.${key}`;\n\n/**\n * A database query parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value.\n *\n * @example someval\n * @example 55\n *\n * @note If a query parameter has no name and instead is referenced only by index,\n * then `` **SHOULD** be the 0-based index.\n *\n * `db.query.parameter.` **SHOULD** match\n * up with the parameterized placeholders present in `db.query.text`.\n *\n * It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * `db.query.parameter.` **SHOULD NOT** be captured on batch operations.\n *\n * Examples:\n *\n * - For a query `SELECT * FROM users where username = %s` with the parameter `\"jdoe\"`,\n * the attribute `db.query.parameter.0` **SHOULD** be set to `\"jdoe\"`.\n * - For a query `\"SELECT * FROM users WHERE username = %(userName)s;` with parameter\n * `userName = \"jdoe\"`, the attribute `db.query.parameter.userName` **SHOULD** be set to `\"jdoe\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_QUERY_PARAMETER = (key: string) => `db.query.parameter.${key}`;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example 0\n * @example 1\n * @example 15\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Uncategorized.\n */\nexport const ATTR_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index' as const;\n\n/**\n * Number of rows returned by the operation.\n *\n * @example 10\n * @example 30\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_RESPONSE_RETURNED_ROWS = 'db.response.returned_rows' as const;\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`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\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 */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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 */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Enum value \"adabas\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Adabas (Adaptable Database System)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_ADABAS = \"adabas\" as const;\n\n/**\n * Enum value \"cache\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, use `intersystems_cache` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `intersystems_cache`.\n */\nexport const DB_SYSTEM_VALUE_CACHE = \"cache\" as const;\n\n/**\n * Enum value \"cassandra\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Cassandra\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_CASSANDRA = \"cassandra\" as const;\n\n/**\n * Enum value \"clickhouse\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * ClickHouse\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_CLICKHOUSE = \"clickhouse\" as const;\n\n/**\n * Enum value \"cloudscape\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, use `other_sql` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `other_sql`.\n */\nexport const DB_SYSTEM_VALUE_CLOUDSCAPE = \"cloudscape\" as const;\n\n/**\n * Enum value \"cockroachdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * CockroachDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COCKROACHDB = \"cockroachdb\" as const;\n\n/**\n * Enum value \"coldfusion\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, no replacement at this time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Obsoleted.\n */\nexport const DB_SYSTEM_VALUE_COLDFUSION = \"coldfusion\" as const;\n\n/**\n * Enum value \"cosmosdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Microsoft Azure Cosmos DB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COSMOSDB = \"cosmosdb\" as const;\n\n/**\n * Enum value \"couchbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Couchbase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COUCHBASE = \"couchbase\" as const;\n\n/**\n * Enum value \"couchdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * CouchDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_COUCHDB = \"couchdb\" as const;\n\n/**\n * Enum value \"db2\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * IBM Db2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_DB2 = \"db2\" as const;\n\n/**\n * Enum value \"derby\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Derby\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_DERBY = \"derby\" as const;\n\n/**\n * Enum value \"dynamodb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Amazon DynamoDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_DYNAMODB = \"dynamodb\" as const;\n\n/**\n * Enum value \"edb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * EnterpriseDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_EDB = \"edb\" as const;\n\n/**\n * Enum value \"elasticsearch\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Elasticsearch\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_ELASTICSEARCH = \"elasticsearch\" as const;\n\n/**\n * Enum value \"filemaker\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * FileMaker\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_FILEMAKER = \"filemaker\" as const;\n\n/**\n * Enum value \"firebird\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Firebird\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_FIREBIRD = \"firebird\" as const;\n\n/**\n * Enum value \"firstsql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, use `other_sql` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `other_sql`.\n */\nexport const DB_SYSTEM_VALUE_FIRSTSQL = \"firstsql\" as const;\n\n/**\n * Enum value \"geode\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Geode\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_GEODE = \"geode\" as const;\n\n/**\n * Enum value \"h2\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * H2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_H2 = \"h2\" as const;\n\n/**\n * Enum value \"hanadb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * SAP HANA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HANADB = \"hanadb\" as const;\n\n/**\n * Enum value \"hbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache HBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HBASE = \"hbase\" as const;\n\n/**\n * Enum value \"hive\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Hive\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HIVE = \"hive\" as const;\n\n/**\n * Enum value \"hsqldb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * HyperSQL DataBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_HSQLDB = \"hsqldb\" as const;\n\n/**\n * Enum value \"influxdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InfluxDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INFLUXDB = \"influxdb\" as const;\n\n/**\n * Enum value \"informix\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Informix\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INFORMIX = \"informix\" as const;\n\n/**\n * Enum value \"ingres\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Ingres\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INGRES = \"ingres\" as const;\n\n/**\n * Enum value \"instantdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InstantDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INSTANTDB = \"instantdb\" as const;\n\n/**\n * Enum value \"interbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InterBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INTERBASE = \"interbase\" as const;\n\n/**\n * Enum value \"intersystems_cache\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * InterSystems Caché\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE = \"intersystems_cache\" as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MariaDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MARIADB = \"mariadb\" as const;\n\n/**\n * Enum value \"maxdb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * SAP MaxDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MAXDB = \"maxdb\" as const;\n\n/**\n * Enum value \"memcached\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Memcached\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MEMCACHED = \"memcached\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MONGODB = \"mongodb\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MSSQL = \"mssql\" as const;\n\n/**\n * Enum value \"mssqlcompact\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Deprecated, Microsoft SQL Server Compact is discontinued.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `other_sql`.\n */\nexport const DB_SYSTEM_VALUE_MSSQLCOMPACT = \"mssqlcompact\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"neo4j\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Neo4j\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_NEO4J = \"neo4j\" as const;\n\n/**\n * Enum value \"netezza\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Netezza\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_NETEZZA = \"netezza\" as const;\n\n/**\n * Enum value \"opensearch\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * OpenSearch\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_OPENSEARCH = \"opensearch\" as const;\n\n/**\n * Enum value \"oracle\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Oracle Database\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_ORACLE = \"oracle\" as const;\n\n/**\n * Enum value \"other_sql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Some other SQL database. Fallback only. See notes.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_OTHER_SQL = \"other_sql\" as const;\n\n/**\n * Enum value \"pervasive\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Pervasive PSQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_PERVASIVE = \"pervasive\" as const;\n\n/**\n * Enum value \"pointbase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * PointBase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_POINTBASE = \"pointbase\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * PostgreSQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Enum value \"progress\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Progress Database\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_PROGRESS = \"progress\" as const;\n\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 */\nexport const DB_SYSTEM_VALUE_REDIS = \"redis\" as const;\n\n/**\n * Enum value \"redshift\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Amazon Redshift\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_REDSHIFT = \"redshift\" as const;\n\n/**\n * Enum value \"spanner\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Cloud Spanner\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_SPANNER = \"spanner\" as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * SQLite\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_SQLITE = \"sqlite\" as const;\n\n/**\n * Enum value \"sybase\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Sybase\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_SYBASE = \"sybase\" as const;\n\n/**\n * Enum value \"teradata\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Teradata\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_TERADATA = \"teradata\" as const;\n\n/**\n * Enum value \"trino\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Trino\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_TRINO = \"trino\" as const;\n\n/**\n * Enum value \"vertica\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Vertica\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_VERTICA = \"vertica\" as const;\n\n/**\n * Enum value \"actian.ingres\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Actian Ingres](https://www.actian.com/databases/ingres/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_ACTIAN_INGRES = \"actian.ingres\" as const;\n\n/**\n * Enum value \"aws.dynamodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_AWS_DYNAMODB = \"aws.dynamodb\" as const;\n\n/**\n * Enum value \"aws.redshift\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Amazon Redshift](https://aws.amazon.com/redshift/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_AWS_REDSHIFT = \"aws.redshift\" as const;\n\n/**\n * Enum value \"azure.cosmosdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_AZURE_COSMOSDB = \"azure.cosmosdb\" as const;\n\n/**\n * Enum value \"cassandra\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Cassandra](https://cassandra.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_CASSANDRA = \"cassandra\" as const;\n\n/**\n * Enum value \"clickhouse\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [ClickHouse](https://clickhouse.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_CLICKHOUSE = \"clickhouse\" as const;\n\n/**\n * Enum value \"cockroachdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [CockroachDB](https://www.cockroachlabs.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_COCKROACHDB = \"cockroachdb\" as const;\n\n/**\n * Enum value \"couchbase\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Couchbase](https://www.couchbase.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_COUCHBASE = \"couchbase\" as const;\n\n/**\n * Enum value \"couchdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache CouchDB](https://couchdb.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_COUCHDB = \"couchdb\" as const;\n\n/**\n * Enum value \"derby\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Derby](https://db.apache.org/derby/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_DERBY = \"derby\" as const;\n\n/**\n * Enum value \"elasticsearch\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Elasticsearch](https://www.elastic.co/elasticsearch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_ELASTICSEARCH = \"elasticsearch\" as const;\n\n/**\n * Enum value \"firebirdsql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Firebird](https://www.firebirdsql.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_FIREBIRDSQL = \"firebirdsql\" as const;\n\n/**\n * Enum value \"gcp.spanner\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Google Cloud Spanner](https://cloud.google.com/spanner)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_GCP_SPANNER = \"gcp.spanner\" as const;\n\n/**\n * Enum value \"geode\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Geode](https://geode.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_GEODE = \"geode\" as const;\n\n/**\n * Enum value \"h2database\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [H2 Database](https://h2database.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_H2DATABASE = \"h2database\" as const;\n\n/**\n * Enum value \"hbase\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache HBase](https://hbase.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_HBASE = \"hbase\" as const;\n\n/**\n * Enum value \"hive\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Apache Hive](https://hive.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_HIVE = \"hive\" as const;\n\n/**\n * Enum value \"hsqldb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [HyperSQL Database](https://hsqldb.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_HSQLDB = \"hsqldb\" as const;\n\n/**\n * Enum value \"ibm.db2\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [IBM Db2](https://www.ibm.com/db2)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_IBM_DB2 = \"ibm.db2\" as const;\n\n/**\n * Enum value \"ibm.informix\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [IBM Informix](https://www.ibm.com/products/informix)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_IBM_INFORMIX = \"ibm.informix\" as const;\n\n/**\n * Enum value \"ibm.netezza\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [IBM Netezza](https://www.ibm.com/products/netezza)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_IBM_NETEZZA = \"ibm.netezza\" as const;\n\n/**\n * Enum value \"influxdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [InfluxDB](https://www.influxdata.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_INFLUXDB = \"influxdb\" as const;\n\n/**\n * Enum value \"instantdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Instant](https://www.instantdb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_INSTANTDB = \"instantdb\" as const;\n\n/**\n * Enum value \"intersystems.cache\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [InterSystems Caché](https://www.intersystems.com/products/cache/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_INTERSYSTEMS_CACHE = \"intersystems.cache\" as const;\n\n/**\n * Enum value \"memcached\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Memcached](https://memcached.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_MEMCACHED = \"memcached\" as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = \"mongodb\" as const;\n\n/**\n * Enum value \"neo4j\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Neo4j](https://neo4j.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_NEO4J = \"neo4j\" as const;\n\n/**\n * Enum value \"opensearch\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [OpenSearch](https://opensearch.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_OPENSEARCH = \"opensearch\" as const;\n\n/**\n * Enum value \"oracle.db\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Oracle Database](https://www.oracle.com/database/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_ORACLE_DB = \"oracle.db\" as const;\n\n/**\n * Enum value \"other_sql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * Some other SQL database. Fallback only.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_OTHER_SQL = \"other_sql\" as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = \"redis\" as const;\n\n/**\n * Enum value \"sap.hana\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SAP_HANA = \"sap.hana\" as const;\n\n/**\n * Enum value \"sap.maxdb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SAP MaxDB](https://maxdb.sap.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SAP_MAXDB = \"sap.maxdb\" as const;\n\n/**\n * Enum value \"softwareag.adabas\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SOFTWAREAG_ADABAS = \"softwareag.adabas\" as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SQLite](https://www.sqlite.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SQLITE = \"sqlite\" as const;\n\n/**\n * Enum value \"teradata\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Teradata](https://www.teradata.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_TERADATA = \"teradata\" as const;\n\n/**\n * Enum value \"trino\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Trino](https://trino.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_TRINO = \"trino\" as const;\n\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 */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `deployment.environment.name` instead.\n *\n * @example staging\n * @example production\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 `deployment.environment.name`.\n */\nexport const ATTR_DEPLOYMENT_ENVIRONMENT = 'deployment.environment' as const;\n\n/**\n * Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @example staging\n * @example production\n *\n * @note `deployment.environment.name` does not affect the uniqueness constraints defined through\n * the `service.namespace`, `service.name` and `service.instance.id` resource attributes.\n * This implies that resources carrying the following attribute combinations **MUST** be\n * considered to be identifying the same service:\n *\n * - `service.name=frontend`, `deployment.environment.name=production`\n * - `service.name=frontend`, `deployment.environment.name=staging`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_ENVIRONMENT_NAME = 'deployment.environment.name' as const;\n\n/**\n * The id of the deployment.\n *\n * @example 1208\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_ID = 'deployment.id' as const;\n\n/**\n * The name of the deployment.\n *\n * @example deploy my app\n * @example deploy-frontend\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_NAME = 'deployment.name' as const;\n\n/**\n * The status of the deployment.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_STATUS = 'deployment.status' as const;\n\n/**\n * Enum value \"failed\" for attribute {@link ATTR_DEPLOYMENT_STATUS}.\n *\n * failed\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DEPLOYMENT_STATUS_VALUE_FAILED = \"failed\" as const;\n\n/**\n * Enum value \"succeeded\" for attribute {@link ATTR_DEPLOYMENT_STATUS}.\n *\n * succeeded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DEPLOYMENT_STATUS_VALUE_SUCCEEDED = \"succeeded\" as const;\n\n/**\n * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example destination.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the source side, and when communicating through an intermediary, `destination.address` **SHOULD** represent the destination address behind any intermediaries, for example proxies, if it's available.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DESTINATION_ADDRESS = 'destination.address' as const;\n\n/**\n * Destination port number\n *\n * @example 3389\n * @example 2888\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DESTINATION_PORT = 'destination.port' as const;\n\n/**\n * A unique identifier representing the device\n *\n * @example 123456789012345\n * @example 01:23:45:67:89:AB\n *\n * @note Its value **SHOULD** be identical for all apps on a device and it **SHOULD NOT** change if an app is uninstalled and re-installed.\n * However, it might be resettable by the user for all apps on a device.\n * Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) **MAY** be used as values.\n *\n * More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids).\n *\n * > [!WARNING]> This attribute may contain sensitive (PII) information. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply,\n * > ensure you do your own due diligence.> Due to these reasons, this identifier is not recommended for consumer applications and will likely result in rejection from both Google Play and App Store.\n * > However, it may be appropriate for specific enterprise scenarios, such as kiosk devices or enterprise-managed devices, with appropriate compliance clearance.\n * > Any instrumentation providing this identifier **> MUST**> implement it as an opt-in feature.> See [`app.installation.id`](/docs/registry/attributes/app.md#app-installation-id)> for a more privacy-preserving alternative.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_ID = 'device.id' as const;\n\n/**\n * The name of the device manufacturer\n *\n * @example Apple\n * @example Samsung\n *\n * @note The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps **SHOULD** hardcode the value `Apple`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MANUFACTURER = 'device.manufacturer' as const;\n\n/**\n * The model identifier for the device\n *\n * @example iPhone3,4\n * @example SM-G920F\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier' as const;\n\n/**\n * The marketing name for the device model\n *\n * @example iPhone 6s Plus\n * @example Samsung Galaxy S6\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MODEL_NAME = 'device.model.name' as const;\n\n/**\n * The disk IO operation direction.\n *\n * @example read\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DISK_IO_DIRECTION = 'disk.io.direction' as const;\n\n/**\n * Enum value \"read\" for attribute {@link ATTR_DISK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DISK_IO_DIRECTION_VALUE_READ = \"read\" as const;\n\n/**\n * Enum value \"write\" for attribute {@link ATTR_DISK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DISK_IO_DIRECTION_VALUE_WRITE = \"write\" as const;\n\n/**\n * The list of IPv4 or IPv6 addresses resolved during DNS lookup.\n *\n * @example [\"10.0.0.1\", \"2001:0db8:85a3:0000:0000:8a2e:0370:7334\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DNS_ANSWERS = 'dns.answers' as const;\n\n/**\n * The name being queried.\n *\n * @example www.example.com\n * @example opentelemetry.io\n *\n * @note The name represents the queried domain name as it appears in the DNS query without any additional normalization.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DNS_QUESTION_NAME = 'dns.question.name' as const;\n\n/**\n * Represents the human-readable identifier of the node/instance to which a request was routed.\n *\n * @example instance-0000000001\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ELASTICSEARCH_NODE_NAME = 'elasticsearch.node.name' as const;\n\n/**\n * Unique identifier of an end user in the system. It maybe a username, email address, or other identifier.\n *\n * @example username\n *\n * @note Unique identifier of an end user in the system.\n *\n * > [!Warning]\n * > This field contains sensitive (PII) information.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ENDUSER_ID = 'enduser.id' as const;\n\n/**\n * Pseudonymous identifier of an end user. This identifier should be a random value that is not directly linked or associated with the end user's actual identity.\n *\n * @example QdH5CAWJgqVT4rOr0qtumf\n *\n * @note Pseudonymous identifier of an end user.\n *\n * > [!Warning]\n * > This field contains sensitive (linkable PII) information.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ENDUSER_PSEUDO_ID = 'enduser.pseudo.id' as const;\n\n/**\n * Deprecated, use `user.roles` instead.\n *\n * @example \"admin\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use `user.roles` instead.\n */\nexport const ATTR_ENDUSER_ROLE = 'enduser.role' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example \"read:message, write:files\"\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 */\nexport const ATTR_ENDUSER_SCOPE = 'enduser.scope' as const;\n\n/**\n * A message providing more detail about an error in human-readable form.\n *\n * @example Unexpected input type: string\n * @example The user has exceeded their storage quota\n *\n * @note `error.message` should provide additional context and detail about an error.\n * It is NOT **RECOMMENDED** to duplicate the value of `error.type` in `error.message`.\n * It is also NOT **RECOMMENDED** to duplicate the value of `exception.message` in `error.message`.\n *\n * `error.message` is NOT **RECOMMENDED** for metrics or spans due to its unbounded cardinality and overlap with span status.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ERROR_MESSAGE = 'error.message' as const;\n\n/**\n * Identifies the class / type of event.\n *\n * @example browser.mouse.click\n * @example device.app.lifecycle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated The value of this attribute **MUST** now be set as the value of the EventName field on the LogRecord to indicate that the LogRecord represents an Event.\n */\nexport const ATTR_EVENT_NAME = 'event.name' as const;\n\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_COLDSTART = 'faas.coldstart' as const;\n\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 * @example \"0/5 * * * ? *\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_CRON = 'faas.cron' as const;\n\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 * @example myBucketName\n * @example myDbName\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection' as const;\n\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 * @example myFile.txt\n * @example myTableName\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_NAME = 'faas.document.name' as const;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_OPERATION = 'faas.document.operation' as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n *\n * When an object is deleted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"edit\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n *\n * When an object is modified.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_EDIT = \"edit\" as const;\n\n/**\n * Enum value \"insert\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n *\n * When a new object is created.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_INSERT = \"insert\" as const;\n\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 * @example \"2020-01-23T13:47:06Z\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_TIME = 'faas.document.time' as const;\n\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 * @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de\n *\n * @note - **AWS Lambda:** Use the (full) log stream name.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INSTANCE = 'faas.instance' as const;\n\n/**\n * The invocation ID of the current function invocation.\n *\n * @example \"af9d5aa4-a685-4c5f-a22b-444f80b3cc28\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOCATION_ID = 'faas.invocation_id' as const;\n\n/**\n * The name of the invoked function.\n *\n * @example \"my-function\"\n *\n * @note **SHOULD** be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_NAME = 'faas.invoked_name' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider' as const;\n\n/**\n * Enum value \"alibaba_cloud\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Alibaba Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD = \"alibaba_cloud\" as const;\n\n/**\n * Enum value \"aws\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Amazon Web Services\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_AWS = \"aws\" as const;\n\n/**\n * Enum value \"azure\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Microsoft Azure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_AZURE = \"azure\" as const;\n\n/**\n * Enum value \"gcp\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Google Cloud Platform\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_GCP = \"gcp\" as const;\n\n/**\n * Enum value \"tencent_cloud\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n *\n * Tencent Cloud\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD = \"tencent_cloud\" as const;\n\n/**\n * The cloud region of the invoked function.\n *\n * @example \"eu-central-1\"\n *\n * @note **SHOULD** be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_REGION = 'faas.invoked_region' as const;\n\n/**\n * The amount of memory available to the serverless function converted to Bytes.\n *\n * @example 134217728\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 (which must be multiplied by 1,048,576).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_MAX_MEMORY = 'faas.max_memory' as const;\n\n/**\n * The name of the single function that this runtime instance executes.\n *\n * @example my-function\n * @example myazurefunctionapp/some-function-name\n *\n * @note This is the name of the function as configured/deployed on the FaaS\n * platform and is usually different from the name of the callback\n * function (which may be stored in the\n * [`code.namespace`/`code.function.name`](/docs/general/attributes.md#source-code-attributes)\n * span attributes).\n *\n * For some cloud providers, the above definition is ambiguous. The following\n * definition of function name **MUST** be used for this attribute\n * (and consequently the span name) for the listed cloud providers/products:\n *\n * - **Azure:** The full name `/`, i.e., function app name\n * followed by a forward slash followed by the function name (this form\n * can also be seen in the resource JSON for the function).\n * This means that a span attribute **MUST** be used, as an Azure function\n * app can host multiple functions that would usually share\n * a TracerProvider (see also the `cloud.resource_id` attribute).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_NAME = 'faas.name' as const;\n\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 * @example \"2020-01-23T13:47:06Z\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_TIME = 'faas.time' as const;\n\n/**\n * Type of the trigger which caused this function invocation.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_TRIGGER = 'faas.trigger' as const;\n\n/**\n * Enum value \"datasource\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * A response to some data source operation such as a database or filesystem read/write\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_DATASOURCE = \"datasource\" as const;\n\n/**\n * Enum value \"http\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * To provide an answer to an inbound HTTP request\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_HTTP = \"http\" as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * If none of the others apply\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"pubsub\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * A function is set to be executed when messages are sent to a messaging system\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_PUBSUB = \"pubsub\" as const;\n\n/**\n * Enum value \"timer\" for attribute {@link ATTR_FAAS_TRIGGER}.\n *\n * A function is scheduled to be executed regularly\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FAAS_TRIGGER_VALUE_TIMER = \"timer\" as const;\n\n/**\n * The immutable version of the function being executed.\n *\n * @example 26\n * @example pinkfroid-00002\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 (Services):** 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/run/docs/container-contract#services-env-vars).\n * - **Azure Functions:** Not applicable. Do not set this attribute.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_VERSION = 'faas.version' as const;\n\n/**\n * The unique identifier for the flag evaluation context. For example, the targeting key.\n *\n * @example 5157782b-2203-4c80-a857-dbbd5e7761db\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_CONTEXT_ID = 'feature_flag.context.id' as const;\n\n/**\n * Deprecated, use `error.message` instead.\n *\n * @example Flag `header-color` expected type `string` but found type `number`\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 `error.message`.\n */\nexport const ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE = 'feature_flag.evaluation.error.message' as const;\n\n/**\n * Deprecated, use `feature_flag.result.reason` instead.\n *\n * @example static\n * @example targeting_match\n * @example error\n * @example default\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 `feature_flag.result.reason`.\n */\nexport const ATTR_FEATURE_FLAG_EVALUATION_REASON = 'feature_flag.evaluation.reason' as const;\n\n/**\n * Enum value \"cached\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was retrieved from cache.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED = \"cached\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * Enum value \"disabled\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of the flag being disabled in the management system.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED = \"disabled\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of an error.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"split\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of pseudorandom assignment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT = \"split\" as const;\n\n/**\n * Enum value \"stale\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value is non-authoritative or possibly out of date\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE = \"stale\" as const;\n\n/**\n * Enum value \"static\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value is static (no dynamic evaluation).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC = \"static\" as const;\n\n/**\n * Enum value \"targeting_match\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH = \"targeting_match\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.\n *\n * The reason for the resolved value could not be determined.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * The lookup key of the feature flag.\n *\n * @example logo-color\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_KEY = 'feature_flag.key' as const;\n\n/**\n * Identifies the feature flag provider.\n *\n * @example Flag Manager\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_PROVIDER_NAME = 'feature_flag.provider.name' as const;\n\n/**\n * The reason code which shows how a feature flag value was determined.\n *\n * @example static\n * @example targeting_match\n * @example error\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_RESULT_REASON = 'feature_flag.result.reason' as const;\n\n/**\n * Enum value \"cached\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was retrieved from cache.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_CACHED = \"cached\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * Enum value \"disabled\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of the flag being disabled in the management system.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_DISABLED = \"disabled\" as const;\n\n/**\n * Enum value \"error\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of an error.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_ERROR = \"error\" as const;\n\n/**\n * Enum value \"split\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of pseudorandom assignment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_SPLIT = \"split\" as const;\n\n/**\n * Enum value \"stale\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value is non-authoritative or possibly out of date\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_STALE = \"stale\" as const;\n\n/**\n * Enum value \"static\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value is static (no dynamic evaluation).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_STATIC = \"static\" as const;\n\n/**\n * Enum value \"targeting_match\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_TARGETING_MATCH = \"targeting_match\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_FEATURE_FLAG_RESULT_REASON}.\n *\n * The reason for the resolved value could not be determined.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const FEATURE_FLAG_RESULT_REASON_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * The evaluated value of the feature flag.\n *\n * @example #ff0000\n * @example true\n * @example 3\n *\n * @note With some feature flag providers, feature flag results can be quite large or contain private or sensitive details.\n * Because of this, `feature_flag.result.variant` is often the preferred attribute if it is available.\n *\n * It may be desirable to redact or otherwise limit the size and scope of `feature_flag.result.value` if possible.\n * Because the evaluated flag value is unstructured and may be any type, it is left to the instrumentation author to determine how best to achieve this.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_RESULT_VALUE = 'feature_flag.result.value' as const;\n\n/**\n * A semantic identifier for an evaluated flag value.\n *\n * @example red\n * @example true\n * @example on\n *\n * @note A semantic identifier, commonly referred to as a variant, provides a means\n * for referring to a value without including the value itself. This can\n * provide additional context for understanding the meaning behind a value.\n * For example, the variant `red` maybe be used for the value `#c05543`.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_RESULT_VARIANT = 'feature_flag.result.variant' as const;\n\n/**\n * The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs.\n *\n * @example proj-1\n * @example ab98sgs\n * @example service1/dev\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_SET_ID = 'feature_flag.set.id' as const;\n\n/**\n * Deprecated, use `feature_flag.result.variant` instead.\n *\n * @example red\n * @example true\n * @example on\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 `feature_flag.result.variant`.\n */\nexport const ATTR_FEATURE_FLAG_VARIANT = 'feature_flag.variant' as const;\n\n/**\n * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset.\n *\n * @example 1\n * @example 01ABCDEF\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_VERSION = 'feature_flag.version' as const;\n\n/**\n * Time when the file was last accessed, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_ACCESSED = 'file.accessed' as const;\n\n/**\n * Array of file attributes.\n *\n * @example [\"readonly\", \"hidden\"]\n *\n * @note Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected for this attribute: `archive`, `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, `write`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_ATTRIBUTES = 'file.attributes' as const;\n\n/**\n * Time when the file attributes or metadata was last changed, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @note `file.changed` captures the time when any of the file's properties or attributes (including the content) are changed, while `file.modified` captures the timestamp when the file content is modified.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_CHANGED = 'file.changed' as const;\n\n/**\n * Time when the file was created, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_CREATED = 'file.created' as const;\n\n/**\n * Directory where the file is located. It should include the drive letter, when appropriate.\n *\n * @example /home/user\n * @example C:\\\\Program Files\\\\MyApp\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_DIRECTORY = 'file.directory' as const;\n\n/**\n * File extension, excluding the leading dot.\n *\n * @example png\n * @example gz\n *\n * @note When the file name has multiple extensions (example.tar.gz), only the last one should be captured (\"gz\", not \"tar.gz\").\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_EXTENSION = 'file.extension' as const;\n\n/**\n * Name of the fork. A fork is additional data associated with a filesystem object.\n *\n * @example Zone.Identifier\n *\n * @note On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.\n * On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: C:\\\\path\\\\to\\\\filename.extension:some_fork_name, and some_fork_name is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_FORK_NAME = 'file.fork_name' as const;\n\n/**\n * Primary Group ID (GID) of the file.\n *\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_GROUP_ID = 'file.group.id' as const;\n\n/**\n * Primary group name of the file.\n *\n * @example users\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_GROUP_NAME = 'file.group.name' as const;\n\n/**\n * Inode representing the file in the filesystem.\n *\n * @example 256383\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_INODE = 'file.inode' as const;\n\n/**\n * Mode of the file in octal representation.\n *\n * @example 0640\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_MODE = 'file.mode' as const;\n\n/**\n * Time when the file content was last modified, in ISO 8601 format.\n *\n * @example 2021-01-01T12:00:00Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_MODIFIED = 'file.modified' as const;\n\n/**\n * Name of the file including the extension, without the directory.\n *\n * @example example.png\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_NAME = 'file.name' as const;\n\n/**\n * The user ID (UID) or security identifier (SID) of the file owner.\n *\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_OWNER_ID = 'file.owner.id' as const;\n\n/**\n * Username of the file owner.\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 */\nexport const ATTR_FILE_OWNER_NAME = 'file.owner.name' as const;\n\n/**\n * Full path to the file, including the file name. It should include the drive letter, when appropriate.\n *\n * @example /home/alice/example.png\n * @example C:\\\\Program Files\\\\MyApp\\\\myapp.exe\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_PATH = 'file.path' as const;\n\n/**\n * File size in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_SIZE = 'file.size' as const;\n\n/**\n * Path to the target of a symbolic link.\n *\n * @example /usr/bin/python3\n *\n * @note This attribute is only applicable to symbolic links.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH = 'file.symbolic_link.target_path' as const;\n\n/**\n * The container within GCP where the AppHub application is defined.\n *\n * @example projects/my-container-project\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_APPLICATION_CONTAINER = 'gcp.apphub.application.container' as const;\n\n/**\n * The name of the application as configured in AppHub.\n *\n * @example my-application\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_APPLICATION_ID = 'gcp.apphub.application.id' as const;\n\n/**\n * The GCP zone or region where the application is defined.\n *\n * @example us-central1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_APPLICATION_LOCATION = 'gcp.apphub.application.location' as const;\n\n/**\n * Criticality of a service indicates its importance to the business.\n *\n * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE = 'gcp.apphub.service.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Environment of a service is the stage of a software lifecycle.\n *\n * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub.service.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the service as configured in AppHub.\n *\n * @example my-service\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_SERVICE_ID = 'gcp.apphub.service.id' as const;\n\n/**\n * Criticality of a workload indicates its importance to the business.\n *\n * @note [See AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub.workload.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Environment of a workload is the stage of a software lifecycle.\n *\n * @note [See AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub.workload.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the workload as configured in AppHub.\n *\n * @example my-workload\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_WORKLOAD_ID = 'gcp.apphub.workload.id' as const;\n\n/**\n * The container within GCP where the AppHub destination application is defined.\n *\n * @example projects/my-container-project\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_CONTAINER = 'gcp.apphub_destination.application.container' as const;\n\n/**\n * The name of the destination application as configured in AppHub.\n *\n * @example my-application\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_ID = 'gcp.apphub_destination.application.id' as const;\n\n/**\n * The GCP zone or region where the destination application is defined.\n *\n * @example us-central1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_APPLICATION_LOCATION = 'gcp.apphub_destination.application.location' as const;\n\n/**\n * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE = 'gcp.apphub_destination.service.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Software lifecycle stage of a destination service as defined [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE = 'gcp.apphub_destination.service.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_SERVICE_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the destination service as configured in AppHub.\n *\n * @example my-service\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_SERVICE_ID = 'gcp.apphub_destination.service.id' as const;\n\n/**\n * Criticality of a destination workload indicates its importance to the business as specified in [AppHub type enum](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE = 'gcp.apphub_destination.workload.criticality_type' as const;\n\n/**\n * Enum value \"HIGH\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * High impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_HIGH = \"HIGH\" as const;\n\n/**\n * Enum value \"LOW\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Low impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_LOW = \"LOW\" as const;\n\n/**\n * Enum value \"MEDIUM\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Medium impact.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MEDIUM = \"MEDIUM\" as const;\n\n/**\n * Enum value \"MISSION_CRITICAL\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE}.\n *\n * Mission critical service.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_CRITICALITY_TYPE_VALUE_MISSION_CRITICAL = \"MISSION_CRITICAL\" as const;\n\n/**\n * Environment of a destination workload is the stage of a software lifecycle as provided in the [AppHub environment type](https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE = 'gcp.apphub_destination.workload.environment_type' as const;\n\n/**\n * Enum value \"DEVELOPMENT\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Development environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_DEVELOPMENT = \"DEVELOPMENT\" as const;\n\n/**\n * Enum value \"PRODUCTION\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Production environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_PRODUCTION = \"PRODUCTION\" as const;\n\n/**\n * Enum value \"STAGING\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Staging environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_STAGING = \"STAGING\" as const;\n\n/**\n * Enum value \"TEST\" for attribute {@link ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE}.\n *\n * Test environment.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GCP_APPHUB_DESTINATION_WORKLOAD_ENVIRONMENT_TYPE_VALUE_TEST = \"TEST\" as const;\n\n/**\n * The name of the destination workload as configured in AppHub.\n *\n * @example my-workload\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_APPHUB_DESTINATION_WORKLOAD_ID = 'gcp.apphub_destination.workload.id' as const;\n\n/**\n * Identifies the Google Cloud service for which the official client library is intended.\n *\n * @example appengine\n * @example run\n * @example firestore\n * @example alloydb\n * @example spanner\n *\n * @note Intended to be a stable identifier for Google Cloud client libraries that is uniform across implementation languages. The value should be derived from the canonical service domain for the service; for example, 'foo.googleapis.com' should result in a value of 'foo'.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLIENT_SERVICE = 'gcp.client.service' as const;\n\n/**\n * The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.\n *\n * @example job-name-xxxx\n * @example sample-job-mdw84\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLOUD_RUN_JOB_EXECUTION = 'gcp.cloud_run.job.execution' as const;\n\n/**\n * The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.\n *\n * @example 0\n * @example 1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX = 'gcp.cloud_run.job.task_index' as const;\n\n/**\n * The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm).\n *\n * @example my-host1234.example.com\n * @example sample-vm.us-west1-b.c.my-project.internal\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_GCE_INSTANCE_HOSTNAME = 'gcp.gce.instance.hostname' as const;\n\n/**\n * The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names).\n *\n * @example instance-1\n * @example my-vm-name\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_GCE_INSTANCE_NAME = 'gcp.gce.instance.name' as const;\n\n/**\n * Free-form description of the GenAI agent provided by the application.\n *\n * @example Helps with math problems\n * @example Generates fiction stories\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_AGENT_DESCRIPTION = 'gen_ai.agent.description' as const;\n\n/**\n * The unique identifier of the GenAI agent.\n *\n * @example asst_5j66UpCpwteGg4YSxUnt7lPY\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_AGENT_ID = 'gen_ai.agent.id' as const;\n\n/**\n * Human-readable name of the GenAI agent provided by the application.\n *\n * @example Math Tutor\n * @example Fiction Writer\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_AGENT_NAME = 'gen_ai.agent.name' as const;\n\n/**\n * Deprecated, use Event API to report completions contents.\n *\n * @example [{'role': 'assistant', 'content': 'The capital of France is Paris.'}]\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 */\nexport const ATTR_GEN_AI_COMPLETION = 'gen_ai.completion' as const;\n\n/**\n * The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.\n *\n * @example conv_5j66UpCpwteGg4YSxUnt7lPY\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_CONVERSATION_ID = 'gen_ai.conversation.id' as const;\n\n/**\n * The data source identifier.\n *\n * @example H7STPQYOND\n *\n * @note Data sources are used by AI agents and RAG applications to store grounding data. A data source may be an external database, object store, document collection, website, or any other storage system used by the GenAI agent or application. The `gen_ai.data_source.id` **SHOULD** match the identifier used by the GenAI system rather than a name specific to the external storage, such as a database or object store. Semantic conventions referencing `gen_ai.data_source.id` **MAY** also leverage additional attributes, such as `db.*`, to further identify and describe the data source.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_DATA_SOURCE_ID = 'gen_ai.data_source.id' as const;\n\n/**\n * The number of dimensions the resulting output embeddings should have.\n *\n * @example 512\n * @example 1024\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT = 'gen_ai.embeddings.dimension.count' as const;\n\n/**\n * A free-form explanation for the assigned score provided by the evaluator.\n *\n * @example The response is factually accurate but lacks sufficient detail to fully address the question.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_EXPLANATION = 'gen_ai.evaluation.explanation' as const;\n\n/**\n * The name of the evaluation metric used for the GenAI response.\n *\n * @example Relevance\n * @example IntentResolution\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_NAME = 'gen_ai.evaluation.name' as const;\n\n/**\n * Human readable label for evaluation.\n *\n * @example relevant\n * @example not_relevant\n * @example correct\n * @example incorrect\n * @example pass\n * @example fail\n *\n * @note This attribute provides a human-readable interpretation of the evaluation score produced by an evaluator. For example, a score value of 1 could mean \"relevant\" in one evaluation system and \"not relevant\" in another, depending on the scoring range and evaluator. The label **SHOULD** have low cardinality. Possible values depend on the evaluation metric and evaluator used; implementations **SHOULD** document the possible values.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_SCORE_LABEL = 'gen_ai.evaluation.score.label' as const;\n\n/**\n * The evaluation score returned by the evaluator.\n *\n * @example 4.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_EVALUATION_SCORE_VALUE = 'gen_ai.evaluation.score.value' as const;\n\n/**\n * The chat history provided to the model as an input.\n *\n * @example [\n * {\n * \"role\": \"user\",\n * \"parts\": [\n * {\n * \"type\": \"text\",\n * \"content\": \"Weather in Paris?\"\n * }\n * ]\n * },\n * {\n * \"role\": \"assistant\",\n * \"parts\": [\n * {\n * \"type\": \"tool_call\",\n * \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\",\n * \"name\": \"get_weather\",\n * \"arguments\": {\n * \"location\": \"Paris\"\n * }\n * }\n * ]\n * },\n * {\n * \"role\": \"tool\",\n * \"parts\": [\n * {\n * \"type\": \"tool_call_response\",\n * \"id\": \" call_VSPygqKTWdrhaFErNvMV18Yl\",\n * \"result\": \"rainy, 57°F\"\n * }\n * ]\n * }\n * ]\n *\n * @note Instrumentations **MUST** follow [Input messages JSON schema](/docs/gen-ai/gen-ai-input-messages.json).\n * When the attribute is recorded on events, it **MUST** be recorded in structured\n * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured\n * format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Messages **MUST** be provided in the order they were sent to the model.\n * Instrumentations **MAY** provide a way for users to filter or truncate\n * input messages.\n *\n * > [!Warning]\n * > This attribute is likely to contain sensitive information including user/PII data.\n *\n * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)\n * section for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_INPUT_MESSAGES = 'gen_ai.input.messages' as const;\n\n/**\n * Deprecated, use `gen_ai.output.type`.\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 `gen_ai.output.type`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT = 'gen_ai.openai.request.response_format' as const;\n\n/**\n * Enum value \"json_object\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n *\n * JSON object response format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT = \"json_object\" as const;\n\n/**\n * Enum value \"json_schema\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n *\n * JSON schema response format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA = \"json_schema\" as const;\n\n/**\n * Enum value \"text\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n *\n * Text response format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT = \"text\" as const;\n\n/**\n * Deprecated, use `gen_ai.request.seed`.\n *\n * @example 100\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 `gen_ai.request.seed`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_SEED = 'gen_ai.openai.request.seed' as const;\n\n/**\n * Deprecated, use `openai.request.service_tier`.\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 `openai.request.service_tier`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER = 'gen_ai.openai.request.service_tier' as const;\n\n/**\n * Enum value \"auto\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize scale tier credits until they are exhausted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = \"auto\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize the default scale tier.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * Deprecated, use `openai.response.service_tier`.\n *\n * @example scale\n * @example default\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 `openai.response.service_tier`.\n */\nexport const ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER = 'gen_ai.openai.response.service_tier' as const;\n\n/**\n * Deprecated, use `openai.response.system_fingerprint`.\n *\n * @example fp_44709d6fcb\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 `openai.response.system_fingerprint`.\n */\nexport const ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'gen_ai.openai.response.system_fingerprint' as const;\n\n/**\n * The name of the operation being performed.\n *\n * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name' as const;\n\n/**\n * Enum value \"chat\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_CHAT = \"chat\" as const;\n\n/**\n * Enum value \"create_agent\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Create GenAI agent\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT = \"create_agent\" as const;\n\n/**\n * Enum value \"embeddings\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS = \"embeddings\" as const;\n\n/**\n * Enum value \"execute_tool\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Execute a tool\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL = \"execute_tool\" as const;\n\n/**\n * Enum value \"generate_content\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_GENERATE_CONTENT = \"generate_content\" as const;\n\n/**\n * Enum value \"invoke_agent\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Invoke GenAI agent\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT = \"invoke_agent\" as const;\n\n/**\n * Enum value \"text_completion\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n *\n * Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION = \"text_completion\" as const;\n\n/**\n * Messages returned by the model where each message represents a specific model response (choice, candidate).\n *\n * @example [\n * {\n * \"role\": \"assistant\",\n * \"parts\": [\n * {\n * \"type\": \"text\",\n * \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"\n * }\n * ],\n * \"finish_reason\": \"stop\"\n * }\n * ]\n *\n * @note Instrumentations **MUST** follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json)\n *\n * Each message represents a single output choice/candidate generated by\n * the model. Each message corresponds to exactly one generation\n * (choice/candidate) and vice versa - one choice cannot be split across\n * multiple messages or one message cannot contain parts from multiple choices.\n *\n * When the attribute is recorded on events, it **MUST** be recorded in structured\n * form. When recorded on spans, it **MAY** be recorded as a JSON string if structured\n * format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Instrumentations **MAY** provide a way for users to filter or truncate\n * output messages.\n *\n * > [!Warning]\n * > This attribute is likely to contain sensitive information including user/PII data.\n *\n * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)\n * section for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OUTPUT_MESSAGES = 'gen_ai.output.messages' as const;\n\n/**\n * Represents the content type requested by the client.\n *\n * @note This attribute **SHOULD** be used when the client requests output of a specific type. The model may return zero or more outputs of this type.\n * This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file.\n * Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OUTPUT_TYPE = 'gen_ai.output.type' as const;\n\n/**\n * Enum value \"image\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * Image\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_IMAGE = \"image\" as const;\n\n/**\n * Enum value \"json\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * JSON object with known or unknown schema\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_JSON = \"json\" as const;\n\n/**\n * Enum value \"speech\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * Speech\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_SPEECH = \"speech\" as const;\n\n/**\n * Enum value \"text\" for attribute {@link ATTR_GEN_AI_OUTPUT_TYPE}.\n *\n * Plain text\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_OUTPUT_TYPE_VALUE_TEXT = \"text\" as const;\n\n/**\n * Deprecated, use Event API to report prompt contents.\n *\n * @example [{'role': 'user', 'content': 'What is the capital of France?'}]\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 */\nexport const ATTR_GEN_AI_PROMPT = 'gen_ai.prompt' as const;\n\n/**\n * The name of the prompt that uniquely identifies it.\n *\n * @example analyze-code\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_PROMPT_NAME = 'gen_ai.prompt.name' as const;\n\n/**\n * The Generative AI provider as identified by the client or server instrumentation.\n *\n * @note The attribute **SHOULD** be set based on the instrumentation's best\n * knowledge and may differ from the actual model provider.\n *\n * Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms\n * are accessible using the OpenAI REST API and corresponding client libraries,\n * but may proxy or host models from different providers.\n *\n * The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address`\n * attributes may help identify the actual system in use.\n *\n * The `gen_ai.provider.name` attribute acts as a discriminator that\n * identifies the GenAI telemetry format flavor specific to that provider\n * within GenAI semantic conventions.\n * It **SHOULD** be set consistently with provider-specific attributes and signals.\n * For example, GenAI spans, metrics, and events related to AWS Bedrock\n * should have the `gen_ai.provider.name` set to `aws.bedrock` and include\n * applicable `aws.bedrock.*` attributes and are not expected to include\n * `openai.*` attributes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_PROVIDER_NAME = 'gen_ai.provider.name' as const;\n\n/**\n * Enum value \"anthropic\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Anthropic](https://www.anthropic.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_ANTHROPIC = \"anthropic\" as const;\n\n/**\n * Enum value \"aws.bedrock\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [AWS Bedrock](https://aws.amazon.com/bedrock)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_AWS_BEDROCK = \"aws.bedrock\" as const;\n\n/**\n * Enum value \"azure.ai.inference\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * Azure AI Inference\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_INFERENCE = \"azure.ai.inference\" as const;\n\n/**\n * Enum value \"azure.ai.openai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_AZURE_AI_OPENAI = \"azure.ai.openai\" as const;\n\n/**\n * Enum value \"cohere\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Cohere](https://cohere.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_COHERE = \"cohere\" as const;\n\n/**\n * Enum value \"deepseek\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [DeepSeek](https://www.deepseek.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_DEEPSEEK = \"deepseek\" as const;\n\n/**\n * Enum value \"gcp.gemini\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Gemini](https://cloud.google.com/products/gemini)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEMINI = \"gcp.gemini\" as const;\n\n/**\n * Enum value \"gcp.gen_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * Any Google generative AI endpoint\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GCP_GEN_AI = \"gcp.gen_ai\" as const;\n\n/**\n * Enum value \"gcp.vertex_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Vertex AI](https://cloud.google.com/vertex-ai)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GCP_VERTEX_AI = \"gcp.vertex_ai\" as const;\n\n/**\n * Enum value \"groq\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Groq](https://groq.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_GROQ = \"groq\" as const;\n\n/**\n * Enum value \"ibm.watsonx.ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_IBM_WATSONX_AI = \"ibm.watsonx.ai\" as const;\n\n/**\n * Enum value \"mistral_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Mistral AI](https://mistral.ai/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_MISTRAL_AI = \"mistral_ai\" as const;\n\n/**\n * Enum value \"openai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [OpenAI](https://openai.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_OPENAI = \"openai\" as const;\n\n/**\n * Enum value \"perplexity\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [Perplexity](https://www.perplexity.ai/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_PERPLEXITY = \"perplexity\" as const;\n\n/**\n * Enum value \"x_ai\" for attribute {@link ATTR_GEN_AI_PROVIDER_NAME}.\n *\n * [xAI](https://x.ai/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_PROVIDER_NAME_VALUE_X_AI = \"x_ai\" as const;\n\n/**\n * The target number of candidate completions to return.\n *\n * @example 3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_CHOICE_COUNT = 'gen_ai.request.choice.count' as const;\n\n/**\n * The encoding formats requested in an embeddings operation, if specified.\n *\n * @example [\"base64\"]\n * @example [\"float\", \"binary\"]\n *\n * @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = 'gen_ai.request.encoding_formats' as const;\n\n/**\n * The frequency penalty setting for the GenAI request.\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 */\nexport const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = 'gen_ai.request.frequency_penalty' as const;\n\n/**\n * The maximum number of tokens the model generates for a request.\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_MAX_TOKENS = 'gen_ai.request.max_tokens' as const;\n\n/**\n * The name of the GenAI model a request is being made to.\n *\n * @example \"gpt-4\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model' as const;\n\n/**\n * The presence penalty setting for the GenAI request.\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 */\nexport const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty' as const;\n\n/**\n * Requests with same seed value more likely to return same result.\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_SEED = 'gen_ai.request.seed' as const;\n\n/**\n * List of sequences that the model will use to stop generating further tokens.\n *\n * @example [\"forest\", \"lived\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = 'gen_ai.request.stop_sequences' as const;\n\n/**\n * The temperature setting for the GenAI request.\n *\n * @example 0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TEMPERATURE = 'gen_ai.request.temperature' as const;\n\n/**\n * The top_k sampling setting for the GenAI request.\n *\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TOP_K = 'gen_ai.request.top_k' as const;\n\n/**\n * The top_p sampling setting for the GenAI request.\n *\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TOP_P = 'gen_ai.request.top_p' as const;\n\n/**\n * Array of reasons the model stopped generating tokens, corresponding to each generation received.\n *\n * @example [\"stop\"]\n * @example [\"stop\", \"length\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_FINISH_REASONS = 'gen_ai.response.finish_reasons' as const;\n\n/**\n * The unique identifier for the completion.\n *\n * @example chatcmpl-123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_ID = 'gen_ai.response.id' as const;\n\n/**\n * The name of the model that generated the response.\n *\n * @example gpt-4-0613\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model' as const;\n\n/**\n * Deprecated, use `gen_ai.provider.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 `gen_ai.provider.name`.\n */\nexport const ATTR_GEN_AI_SYSTEM = 'gen_ai.system' as const;\n\n/**\n * Enum value \"anthropic\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Anthropic\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_ANTHROPIC = \"anthropic\" as const;\n\n/**\n * Enum value \"aws.bedrock\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * AWS Bedrock\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AWS_BEDROCK = \"aws.bedrock\" as const;\n\n/**\n * Enum value \"az.ai.inference\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure AI Inference\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `azure.ai.inference`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE = \"az.ai.inference\" as const;\n\n/**\n * Enum value \"az.ai.openai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure OpenAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `azure.ai.openai`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI = \"az.ai.openai\" as const;\n\n/**\n * Enum value \"azure.ai.inference\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure AI Inference\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZURE_AI_INFERENCE = \"azure.ai.inference\" as const;\n\n/**\n * Enum value \"azure.ai.openai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Azure OpenAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_AZURE_AI_OPENAI = \"azure.ai.openai\" as const;\n\n/**\n * Enum value \"cohere\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Cohere\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_COHERE = \"cohere\" as const;\n\n/**\n * Enum value \"deepseek\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * DeepSeek\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_DEEPSEEK = \"deepseek\" as const;\n\n/**\n * Enum value \"gcp.gemini\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Gemini\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GCP_GEMINI = \"gcp.gemini\" as const;\n\n/**\n * Enum value \"gcp.gen_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Any Google generative AI endpoint\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GCP_GEN_AI = \"gcp.gen_ai\" as const;\n\n/**\n * Enum value \"gcp.vertex_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Vertex AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GCP_VERTEX_AI = \"gcp.vertex_ai\" as const;\n\n/**\n * Enum value \"gemini\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Gemini\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `gcp.gemini`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GEMINI = \"gemini\" as const;\n\n/**\n * Enum value \"groq\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Groq\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_GROQ = \"groq\" as const;\n\n/**\n * Enum value \"ibm.watsonx.ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * IBM Watsonx AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI = \"ibm.watsonx.ai\" as const;\n\n/**\n * Enum value \"mistral_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Mistral AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_MISTRAL_AI = \"mistral_ai\" as const;\n\n/**\n * Enum value \"openai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * OpenAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_OPENAI = \"openai\" as const;\n\n/**\n * Enum value \"perplexity\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Perplexity\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_PERPLEXITY = \"perplexity\" as const;\n\n/**\n * Enum value \"vertex_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * Vertex AI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `gcp.vertex_ai`.\n */\nexport const GEN_AI_SYSTEM_VALUE_VERTEX_AI = \"vertex_ai\" as const;\n\n/**\n * Enum value \"xai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n *\n * xAI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_SYSTEM_VALUE_XAI = \"xai\" as const;\n\n/**\n * The system message or instructions provided to the GenAI model separately from the chat history.\n *\n * @example [\n * {\n * \"type\": \"text\",\n * \"content\": \"You are an Agent that greet users, always use greetings tool to respond\"\n * }\n * ]\n *\n * @example [\n * {\n * \"type\": \"text\",\n * \"content\": \"You are a language translator.\"\n * },\n * {\n * \"type\": \"text\",\n * \"content\": \"Your mission is to translate text in English to French.\"\n * }\n * ]\n *\n * @note This attribute **SHOULD** be used when the corresponding provider or API\n * allows to provide system instructions or messages separately from the\n * chat history.\n *\n * Instructions that are part of the chat history **SHOULD** be recorded in\n * `gen_ai.input.messages` attribute instead.\n *\n * Instrumentations **MUST** follow [System instructions JSON schema](/docs/gen-ai/gen-ai-system-instructions.json).\n *\n * When recorded on spans, it **MAY** be recorded as a JSON string if structured\n * format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Instrumentations **MAY** provide a way for users to filter or truncate\n * system instructions.\n *\n * > [!Warning]\n * > This attribute may contain sensitive information.\n *\n * See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)\n * section for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_SYSTEM_INSTRUCTIONS = 'gen_ai.system_instructions' as const;\n\n/**\n * The type of token being counted.\n *\n * @example input\n * @example output\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOKEN_TYPE = 'gen_ai.token.type' as const;\n\n/**\n * Enum value \"input\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n *\n * Input tokens (prompt, input, etc.)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_INPUT = \"input\" as const;\n\n/**\n * Enum value \"output\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n *\n * Output tokens (completion, response, etc.)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `output`.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_COMPLETION = \"output\" as const;\n\n/**\n * Enum value \"output\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n *\n * Output tokens (completion, response, etc.)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_OUTPUT = \"output\" as const;\n\n/**\n * Parameters passed to the tool call.\n *\n * @example {\n * \"location\": \"San Francisco?\",\n * \"date\": \"2025-10-01\"\n * }\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n *\n * It's expected to be an object - in case a serialized string is available\n * to the instrumentation, the instrumentation **SHOULD** do the best effort to\n * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_CALL_ARGUMENTS = 'gen_ai.tool.call.arguments' as const;\n\n/**\n * The tool call identifier.\n *\n * @example call_mszuSIzqtI65i1wAUOE8w5H4\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_CALL_ID = 'gen_ai.tool.call.id' as const;\n\n/**\n * The result returned by the tool call (if any and if execution was successful).\n *\n * @example {\n * \"temperature_range\": {\n * \"high\": 75,\n * \"low\": 60\n * },\n * \"conditions\": \"sunny\"\n * }\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n *\n * It's expected to be an object - in case a serialized string is available\n * to the instrumentation, the instrumentation **SHOULD** do the best effort to\n * deserialize it to an object. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_CALL_RESULT = 'gen_ai.tool.call.result' as const;\n\n/**\n * The list of source system tool definitions available to the GenAI agent or model.\n *\n * @example [\n * {\n * \"type\": \"function\",\n * \"name\": \"get_current_weather\",\n * \"description\": \"Get the current weather in a given location\",\n * \"parameters\": {\n * \"type\": \"object\",\n * \"properties\": {\n * \"location\": {\n * \"type\": \"string\",\n * \"description\": \"The city and state, e.g. San Francisco, CA\"\n * },\n * \"unit\": {\n * \"type\": \"string\",\n * \"enum\": [\n * \"celsius\",\n * \"fahrenheit\"\n * ]\n * }\n * },\n * \"required\": [\n * \"location\",\n * \"unit\"\n * ]\n * }\n * }\n * ]\n *\n * @note The value of this attribute matches source system tool definition format.\n *\n * It's expected to be an array of objects where each object represents a tool definition. In case a serialized string is available\n * to the instrumentation, the instrumentation **SHOULD** do the best effort to\n * deserialize it to an array. When recorded on spans, it **MAY** be recorded as a JSON string if structured format is not supported and **SHOULD** be recorded in structured form otherwise.\n *\n * Since this attribute could be large, it's NOT **RECOMMENDED** to populate\n * it by default. Instrumentations **MAY** provide a way to enable\n * populating this attribute.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_DEFINITIONS = 'gen_ai.tool.definitions' as const;\n\n/**\n * The tool description.\n *\n * @example Multiply two numbers\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_DESCRIPTION = 'gen_ai.tool.description' as const;\n\n/**\n * Name of the tool utilized by the agent.\n *\n * @example Flights\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_NAME = 'gen_ai.tool.name' as const;\n\n/**\n * Type of the tool utilized by the agent\n *\n * @example function\n * @example extension\n * @example datastore\n *\n * @note Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems.\n * Agent-side operations involve actions that are performed by the agent on the server or within the agent's controlled environment.\n * Function: A tool executed on the client-side, where the agent generates parameters for a predefined function, and the client executes the logic.\n * Client-side operations are actions taken on the user's end or within the client application.\n * Datastore: A tool used by the agent to access and query structured or unstructured external data for retrieval-augmented tasks or knowledge updates.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOOL_TYPE = 'gen_ai.tool.type' as const;\n\n/**\n * Deprecated, use `gen_ai.usage.output_tokens` instead.\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 *\n * @deprecated Replaced by `gen_ai.usage.output_tokens`.\n */\nexport const ATTR_GEN_AI_USAGE_COMPLETION_TOKENS = 'gen_ai.usage.completion_tokens' as const;\n\n/**\n * The number of tokens used in the GenAI input (prompt).\n *\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens' as const;\n\n/**\n * The number of tokens used in the GenAI response (completion).\n *\n * @example 180\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens' as const;\n\n/**\n * Deprecated, use `gen_ai.usage.input_tokens` instead.\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 *\n * @deprecated Replaced by `gen_ai.usage.input_tokens`.\n */\nexport const ATTR_GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens' as const;\n\n/**\n * Two-letter code representing continent’s name.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_CONTINENT_CODE = 'geo.continent.code' as const;\n\n/**\n * Enum value \"AF\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Africa\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_AF = \"AF\" as const;\n\n/**\n * Enum value \"AN\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Antarctica\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_AN = \"AN\" as const;\n\n/**\n * Enum value \"AS\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Asia\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_AS = \"AS\" as const;\n\n/**\n * Enum value \"EU\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Europe\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_EU = \"EU\" as const;\n\n/**\n * Enum value \"NA\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * North America\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_NA = \"NA\" as const;\n\n/**\n * Enum value \"OC\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * Oceania\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_OC = \"OC\" as const;\n\n/**\n * Enum value \"SA\" for attribute {@link ATTR_GEO_CONTINENT_CODE}.\n *\n * South America\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GEO_CONTINENT_CODE_VALUE_SA = \"SA\" as const;\n\n/**\n * Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)).\n *\n * @example CA\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_COUNTRY_ISO_CODE = 'geo.country.iso_code' as const;\n\n/**\n * Locality name. Represents the name of a city, town, village, or similar populated place.\n *\n * @example Montreal\n * @example Berlin\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_LOCALITY_NAME = 'geo.locality.name' as const;\n\n/**\n * Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84).\n *\n * @example 45.505918\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_LOCATION_LAT = 'geo.location.lat' as const;\n\n/**\n * Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84).\n *\n * @example -73.61483\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_LOCATION_LON = 'geo.location.lon' as const;\n\n/**\n * Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.\n *\n * @example 94040\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_POSTAL_CODE = 'geo.postal_code' as const;\n\n/**\n * Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)).\n *\n * @example CA-QC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEO_REGION_ISO_CODE = 'geo.region.iso_code' as const;\n\n/**\n * The type of memory.\n *\n * @example other\n * @example stack\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GO_MEMORY_TYPE = 'go.memory.type' as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_GO_MEMORY_TYPE}.\n *\n * Memory used by the Go runtime, excluding other categories of memory usage described in this enumeration.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GO_MEMORY_TYPE_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"stack\" for attribute {@link ATTR_GO_MEMORY_TYPE}.\n *\n * Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GO_MEMORY_TYPE_VALUE_STACK = \"stack\" as const;\n\n/**\n * The GraphQL document being executed.\n *\n * @example \"query findBookById { bookById(id: ?) { name } }\"\n *\n * @note The value may be sanitized to exclude sensitive information.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_DOCUMENT = 'graphql.document' as const;\n\n/**\n * The name of the operation being executed.\n *\n * @example \"findBookById\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_OPERATION_NAME = 'graphql.operation.name' as const;\n\n/**\n * The type of the operation being executed.\n *\n * @example query\n * @example mutation\n * @example subscription\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_OPERATION_TYPE = 'graphql.operation.type' as const;\n\n/**\n * Enum value \"mutation\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n *\n * GraphQL mutation\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_MUTATION = \"mutation\" as const;\n\n/**\n * Enum value \"query\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n *\n * GraphQL query\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_QUERY = \"query\" as const;\n\n/**\n * Enum value \"subscription\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n *\n * GraphQL subscription\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION = \"subscription\" as const;\n\n/**\n * Unique identifier for the application\n *\n * @example 2daa2797-e42b-4624-9322-ec3f968df4da\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_APP_ID = 'heroku.app.id' as const;\n\n/**\n * Commit hash for the current release\n *\n * @example e6134959463efd8966b20e75b913cafe3f5ec\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_RELEASE_COMMIT = 'heroku.release.commit' as const;\n\n/**\n * Time and date the release was created\n *\n * @example 2022-10-23T18:00:42Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP = 'heroku.release.creation_timestamp' as const;\n\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 */\nexport const ATTR_HOST_ARCH = 'host.arch' as const;\n\n/**\n * Enum value \"amd64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * AMD64\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_AMD64 = \"amd64\" as const;\n\n/**\n * Enum value \"arm32\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * ARM32\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_ARM32 = \"arm32\" as const;\n\n/**\n * Enum value \"arm64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * ARM64\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_ARM64 = \"arm64\" as const;\n\n/**\n * Enum value \"ia64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * Itanium\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_IA64 = \"ia64\" as const;\n\n/**\n * Enum value \"ppc32\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * 32-bit PowerPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_PPC32 = \"ppc32\" as const;\n\n/**\n * Enum value \"ppc64\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * 64-bit PowerPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_PPC64 = \"ppc64\" as const;\n\n/**\n * Enum value \"s390x\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * IBM z/Architecture\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_S390X = \"s390x\" as const;\n\n/**\n * Enum value \"x86\" for attribute {@link ATTR_HOST_ARCH}.\n *\n * 32-bit x86\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HOST_ARCH_VALUE_X86 = \"x86\" as const;\n\n/**\n * The amount of level 2 memory cache available to the processor (in Bytes).\n *\n * @example 12288000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_CACHE_L2_SIZE = 'host.cpu.cache.l2.size' as const;\n\n/**\n * Family or generation of the CPU.\n *\n * @example 6\n * @example PA-RISC 1.1e\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_FAMILY = 'host.cpu.family' as const;\n\n/**\n * Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family.\n *\n * @example 6\n * @example 9000/778/B180L\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_MODEL_ID = 'host.cpu.model.id' as const;\n\n/**\n * Model designation of the processor.\n *\n * @example 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_MODEL_NAME = 'host.cpu.model.name' as const;\n\n/**\n * Stepping or core revisions.\n *\n * @example 1\n * @example r1p1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_STEPPING = 'host.cpu.stepping' as const;\n\n/**\n * Processor manufacturer identifier. A maximum 12-character string.\n *\n * @example GenuineIntel\n *\n * @note [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_VENDOR_ID = 'host.cpu.vendor.id' as const;\n\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 */\nexport const ATTR_HOST_ID = 'host.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_ID = 'host.image.id' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_NAME = 'host.image.name' as const;\n\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 */\nexport const ATTR_HOST_IMAGE_VERSION = 'host.image.version' as const;\n\n/**\n * Available IP addresses of the host, excluding loopback interfaces.\n *\n * @example [\"192.168.1.140\", \"fe80::abc2:4a28:737a:609e\"]\n *\n * @note IPv4 Addresses **MUST** be specified in dotted-quad notation. IPv6 addresses **MUST** be specified in the [RFC 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IP = 'host.ip' as const;\n\n/**\n * Available MAC addresses of the host, excluding loopback interfaces.\n *\n * @example [\"AC-DE-48-23-45-67\", \"AC-DE-48-23-45-67-01-9F\"]\n *\n * @note MAC Addresses **MUST** be represented in [IEEE RA hexadecimal form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): as hyphen-separated octets in uppercase hexadecimal form from most to least significant.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_MAC = 'host.mac' as const;\n\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 */\nexport const ATTR_HOST_NAME = 'host.name' as const;\n\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 */\nexport const ATTR_HOST_TYPE = 'host.type' as const;\n\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 */\nexport const ATTR_HTTP_CLIENT_IP = 'http.client_ip' as const;\n\n/**\n * State of the HTTP connection in the HTTP connection pool.\n *\n * @example active\n * @example idle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_CONNECTION_STATE = 'http.connection.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_HTTP_CONNECTION_STATE}.\n *\n * active state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_CONNECTION_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_HTTP_CONNECTION_STATE}.\n *\n * idle state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_CONNECTION_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Deprecated, use `network.protocol.name` and `network.protocol.version` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Split into `network.protocol.name` and `network.protocol.version`\n */\nexport const ATTR_HTTP_FLAVOR = 'http.flavor' as const;\n\n/**\n * Enum value \"1.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/1.0\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_0 = \"1.0\" as const;\n\n/**\n * Enum value \"1.1\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/1.1\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_1 = \"1.1\" as const;\n\n/**\n * Enum value \"2.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/2\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_2_0 = \"2.0\" as const;\n\n/**\n * Enum value \"3.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * HTTP/3\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_3_0 = \"3.0\" as const;\n\n/**\n * Enum value \"QUIC\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * QUIC protocol.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_QUIC = \"QUIC\" as const;\n\n/**\n * Enum value \"SPDY\" for attribute {@link ATTR_HTTP_FLAVOR}.\n *\n * SPDY protocol.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_FLAVOR_VALUE_SPDY = \"SPDY\" as const;\n\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 */\nexport const ATTR_HTTP_HOST = 'http.host' as const;\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 */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n\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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\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 */\nexport const ATTR_HTTP_REQUEST_BODY_SIZE = 'http.request.body.size' as const;\n\n/**\n * Enum value \"QUERY\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * QUERY method.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_QUERY = \"QUERY\" as const;\n\n/**\n * The total size of the request in bytes. This should be the total number of bytes sent over the wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request body if any.\n *\n * @example 1437\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_REQUEST_SIZE = 'http.request.size' as const;\n\n/**\n * Deprecated, use `http.request.header.content-length` 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.content-length`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed' as const;\n\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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\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 */\nexport const ATTR_HTTP_RESPONSE_BODY_SIZE = 'http.response.body.size' as const;\n\n/**\n * The total size of the response in bytes. This should be the total number of bytes sent over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and response body and trailers if any.\n *\n * @example 1437\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_RESPONSE_SIZE = 'http.response.size' as const;\n\n/**\n * Deprecated, use `http.response.header.content-length` 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.content-length`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length' as const;\n\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 Replaced by `http.response.body.size`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed' as const;\n\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`.\n */\nexport const ATTR_HTTP_SCHEME = 'http.scheme' as const;\n\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 */\nexport const ATTR_HTTP_SERVER_NAME = 'http.server_name' as const;\n\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 */\nexport const ATTR_HTTP_STATUS_CODE = 'http.status_code' as const;\n\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 */\nexport const ATTR_HTTP_TARGET = 'http.target' as const;\n\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 */\nexport const ATTR_HTTP_URL = 'http.url' as const;\n\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 */\nexport const ATTR_HTTP_USER_AGENT = 'http.user_agent' as const;\n\n/**\n * Design capacity in Watts-hours or Amper-hours\n *\n * @example 9.3Ah\n * @example 50Wh\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BATTERY_CAPACITY = 'hw.battery.capacity' as const;\n\n/**\n * Battery [chemistry](https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html), e.g. Lithium-Ion, Nickel-Cadmium, etc.\n *\n * @example Li-ion\n * @example NiMH\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BATTERY_CHEMISTRY = 'hw.battery.chemistry' as const;\n\n/**\n * The current state of the battery\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BATTERY_STATE = 'hw.battery.state' as const;\n\n/**\n * Enum value \"charging\" for attribute {@link ATTR_HW_BATTERY_STATE}.\n *\n * Charging\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_BATTERY_STATE_VALUE_CHARGING = \"charging\" as const;\n\n/**\n * Enum value \"discharging\" for attribute {@link ATTR_HW_BATTERY_STATE}.\n *\n * Discharging\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_BATTERY_STATE_VALUE_DISCHARGING = \"discharging\" as const;\n\n/**\n * BIOS version of the hardware component\n *\n * @example 1.2.3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_BIOS_VERSION = 'hw.bios_version' as const;\n\n/**\n * Driver version for the hardware component\n *\n * @example 10.2.1-3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_DRIVER_VERSION = 'hw.driver_version' as const;\n\n/**\n * Type of the enclosure (useful for modular systems)\n *\n * @example Computer\n * @example Storage\n * @example Switch\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_ENCLOSURE_TYPE = 'hw.enclosure.type' as const;\n\n/**\n * Firmware version of the hardware component\n *\n * @example 2.0.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_FIRMWARE_VERSION = 'hw.firmware_version' as const;\n\n/**\n * Type of task the GPU is performing\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_GPU_TASK = 'hw.gpu.task' as const;\n\n/**\n * Enum value \"decoder\" for attribute {@link ATTR_HW_GPU_TASK}.\n *\n * Decoder\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_GPU_TASK_VALUE_DECODER = \"decoder\" as const;\n\n/**\n * Enum value \"encoder\" for attribute {@link ATTR_HW_GPU_TASK}.\n *\n * Encoder\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_GPU_TASK_VALUE_ENCODER = \"encoder\" as const;\n\n/**\n * Enum value \"general\" for attribute {@link ATTR_HW_GPU_TASK}.\n *\n * General\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_GPU_TASK_VALUE_GENERAL = \"general\" as const;\n\n/**\n * An identifier for the hardware component, unique within the monitored host\n *\n * @example win32battery_battery_testsysa33_1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_ID = 'hw.id' as const;\n\n/**\n * Type of limit for hardware components\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_LIMIT_TYPE = 'hw.limit_type' as const;\n\n/**\n * Enum value \"critical\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Critical\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_CRITICAL = \"critical\" as const;\n\n/**\n * Enum value \"degraded\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_DEGRADED = \"degraded\" as const;\n\n/**\n * Enum value \"high.critical\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * High Critical\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_HIGH_CRITICAL = \"high.critical\" as const;\n\n/**\n * Enum value \"high.degraded\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * High Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_HIGH_DEGRADED = \"high.degraded\" as const;\n\n/**\n * Enum value \"low.critical\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Low Critical\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_LOW_CRITICAL = \"low.critical\" as const;\n\n/**\n * Enum value \"low.degraded\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Low Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_LOW_DEGRADED = \"low.degraded\" as const;\n\n/**\n * Enum value \"max\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Maximum\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_MAX = \"max\" as const;\n\n/**\n * Enum value \"throttled\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Throttled\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_THROTTLED = \"throttled\" as const;\n\n/**\n * Enum value \"turbo\" for attribute {@link ATTR_HW_LIMIT_TYPE}.\n *\n * Turbo\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LIMIT_TYPE_VALUE_TURBO = \"turbo\" as const;\n\n/**\n * RAID Level of the logical disk\n *\n * @example RAID0+1\n * @example RAID5\n * @example RAID10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_LOGICAL_DISK_RAID_LEVEL = 'hw.logical_disk.raid_level' as const;\n\n/**\n * State of the logical disk space usage\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_LOGICAL_DISK_STATE = 'hw.logical_disk.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}.\n *\n * Free\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LOGICAL_DISK_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_HW_LOGICAL_DISK_STATE}.\n *\n * Used\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_LOGICAL_DISK_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Type of the memory module\n *\n * @example DDR4\n * @example DDR5\n * @example LPDDR5\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_MEMORY_TYPE = 'hw.memory.type' as const;\n\n/**\n * Descriptive model name of the hardware component\n *\n * @example PERC H740P\n * @example Intel(R) Core(TM) i7-10700K\n * @example Dell XPS 15 Battery\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_MODEL = 'hw.model' as const;\n\n/**\n * An easily-recognizable name for the hardware component\n *\n * @example eth0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_NAME = 'hw.name' as const;\n\n/**\n * Logical addresses of the adapter (e.g. IP address, or WWPN)\n *\n * @example [\"172.16.8.21\", \"57.11.193.42\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_NETWORK_LOGICAL_ADDRESSES = 'hw.network.logical_addresses' as const;\n\n/**\n * Physical address of the adapter (e.g. MAC address, or WWNN)\n *\n * @example 00-90-F5-E9-7B-36\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_NETWORK_PHYSICAL_ADDRESS = 'hw.network.physical_address' as const;\n\n/**\n * Unique identifier of the parent component (typically the `hw.id` attribute of the enclosure, or disk controller)\n *\n * @example dellStorage_perc_0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PARENT = 'hw.parent' as const;\n\n/**\n * [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute of the physical disk\n *\n * @example Spin Retry Count\n * @example Seek Error Rate\n * @example Raw Read Error Rate\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PHYSICAL_DISK_SMART_ATTRIBUTE = 'hw.physical_disk.smart_attribute' as const;\n\n/**\n * State of the physical disk endurance utilization\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PHYSICAL_DISK_STATE = 'hw.physical_disk.state' as const;\n\n/**\n * Enum value \"remaining\" for attribute {@link ATTR_HW_PHYSICAL_DISK_STATE}.\n *\n * Remaining\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_PHYSICAL_DISK_STATE_VALUE_REMAINING = \"remaining\" as const;\n\n/**\n * Type of the physical disk\n *\n * @example HDD\n * @example SSD\n * @example 10K\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PHYSICAL_DISK_TYPE = 'hw.physical_disk.type' as const;\n\n/**\n * Location of the sensor\n *\n * @example cpu0\n * @example ps1\n * @example INLET\n * @example CPU0_DIE\n * @example AMBIENT\n * @example MOTHERBOARD\n * @example PS0 V3_3\n * @example MAIN_12V\n * @example CPU_VCORE\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_SENSOR_LOCATION = 'hw.sensor_location' as const;\n\n/**\n * Serial number of the hardware component\n *\n * @example CNFCP0123456789\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_SERIAL_NUMBER = 'hw.serial_number' as const;\n\n/**\n * The current state of the component\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_STATE = 'hw.state' as const;\n\n/**\n * Enum value \"degraded\" for attribute {@link ATTR_HW_STATE}.\n *\n * Degraded\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_DEGRADED = \"degraded\" as const;\n\n/**\n * Enum value \"failed\" for attribute {@link ATTR_HW_STATE}.\n *\n * Failed\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_FAILED = \"failed\" as const;\n\n/**\n * Enum value \"needs_cleaning\" for attribute {@link ATTR_HW_STATE}.\n *\n * Needs Cleaning\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_NEEDS_CLEANING = \"needs_cleaning\" as const;\n\n/**\n * Enum value \"ok\" for attribute {@link ATTR_HW_STATE}.\n *\n * OK\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_OK = \"ok\" as const;\n\n/**\n * Enum value \"predicted_failure\" for attribute {@link ATTR_HW_STATE}.\n *\n * Predicted Failure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_STATE_VALUE_PREDICTED_FAILURE = \"predicted_failure\" as const;\n\n/**\n * Type of tape drive operation\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_TAPE_DRIVE_OPERATION_TYPE = 'hw.tape_drive.operation_type' as const;\n\n/**\n * Enum value \"clean\" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}.\n *\n * Clean\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_CLEAN = \"clean\" as const;\n\n/**\n * Enum value \"mount\" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}.\n *\n * Mount\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_MOUNT = \"mount\" as const;\n\n/**\n * Enum value \"unmount\" for attribute {@link ATTR_HW_TAPE_DRIVE_OPERATION_TYPE}.\n *\n * Unmount\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TAPE_DRIVE_OPERATION_TYPE_VALUE_UNMOUNT = \"unmount\" as const;\n\n/**\n * Type of the component\n *\n * @note Describes the category of the hardware component for which `hw.state` is being reported. For example, `hw.type=temperature` along with `hw.state=degraded` would indicate that the temperature of the hardware component has been reported as `degraded`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_TYPE = 'hw.type' as const;\n\n/**\n * Enum value \"battery\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Battery\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_BATTERY = \"battery\" as const;\n\n/**\n * Enum value \"cpu\" for attribute {@link ATTR_HW_TYPE}.\n *\n * CPU\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_CPU = \"cpu\" as const;\n\n/**\n * Enum value \"disk_controller\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Disk controller\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_DISK_CONTROLLER = \"disk_controller\" as const;\n\n/**\n * Enum value \"enclosure\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Enclosure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_ENCLOSURE = \"enclosure\" as const;\n\n/**\n * Enum value \"fan\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Fan\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_FAN = \"fan\" as const;\n\n/**\n * Enum value \"gpu\" for attribute {@link ATTR_HW_TYPE}.\n *\n * GPU\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_GPU = \"gpu\" as const;\n\n/**\n * Enum value \"logical_disk\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Logical disk\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_LOGICAL_DISK = \"logical_disk\" as const;\n\n/**\n * Enum value \"memory\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Memory\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_MEMORY = \"memory\" as const;\n\n/**\n * Enum value \"network\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Network\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_NETWORK = \"network\" as const;\n\n/**\n * Enum value \"physical_disk\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Physical disk\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_PHYSICAL_DISK = \"physical_disk\" as const;\n\n/**\n * Enum value \"power_supply\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Power supply\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_POWER_SUPPLY = \"power_supply\" as const;\n\n/**\n * Enum value \"tape_drive\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Tape drive\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_TAPE_DRIVE = \"tape_drive\" as const;\n\n/**\n * Enum value \"temperature\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Temperature\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_TEMPERATURE = \"temperature\" as const;\n\n/**\n * Enum value \"voltage\" for attribute {@link ATTR_HW_TYPE}.\n *\n * Voltage\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const HW_TYPE_VALUE_VOLTAGE = \"voltage\" as const;\n\n/**\n * Vendor name of the hardware component\n *\n * @example Dell\n * @example HP\n * @example Intel\n * @example AMD\n * @example LSI\n * @example Lenovo\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_VENDOR = 'hw.vendor' as const;\n\n/**\n * This attribute represents the state of the application.\n *\n * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_IOS_APP_STATE = 'ios.app.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Enum value \"inactive\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_INACTIVE = \"inactive\" as const;\n\n/**\n * Enum value \"terminate\" for attribute {@link ATTR_IOS_APP_STATE}.\n *\n * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_APP_STATE_VALUE_TERMINATE = \"terminate\" as const;\n\n/**\n * Deprecated. Use the `ios.app.state` attribute.\n *\n * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate), and from which the `OS terminology` column values are derived.\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 `ios.app.state`.\n */\nexport const ATTR_IOS_STATE = 'ios.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is now in the background. This value is associated with UIKit notification `applicationDidEnterBackground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is now in the foreground. This value is associated with UIKit notification `applicationWillEnterForeground`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Enum value \"inactive\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_INACTIVE = \"inactive\" as const;\n\n/**\n * Enum value \"terminate\" for attribute {@link ATTR_IOS_STATE}.\n *\n * The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const IOS_STATE_VALUE_TERMINATE = \"terminate\" as const;\n\n/**\n * Protocol version, as specified in the `jsonrpc` property of the request and its corresponding response.\n *\n * @example 2.0\n * @example 1.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JSONRPC_PROTOCOL_VERSION = 'jsonrpc.protocol.version' as const;\n\n/**\n * A string representation of the `id` property of the request and its corresponding response.\n *\n * @example 10\n * @example request-7\n *\n * @note Under the [JSON-RPC specification](https://www.jsonrpc.org/specification), the `id` property may be a string, number, null, or omitted entirely. When omitted, the request is treated as a notification. Using `null` is not equivalent to omitting the `id`, but it is discouraged.\n * Instrumentations **SHOULD NOT** capture this attribute when the `id` is `null` or omitted.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JSONRPC_REQUEST_ID = 'jsonrpc.request.id' as const;\n\n/**\n * Name of the buffer pool.\n *\n * @example mapped\n * @example direct\n *\n * @note Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JVM_BUFFER_POOL_NAME = 'jvm.buffer.pool.name' as const;\n\n/**\n * Name of the garbage collector cause.\n *\n * @example System.gc()\n * @example Allocation Failure\n *\n * @note Garbage collector cause is generally obtained via [GarbageCollectionNotificationInfo#getGcCause()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcCause()).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JVM_GC_CAUSE = 'jvm.gc.cause' as const;\n\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 */\nexport const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name' as const;\n\n/**\n * A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace.\n *\n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n *\n * @note K8s doesn't have support for obtaining a cluster ID. If this is ever\n * added, we will recommend collecting the `k8s.cluster.uid` through the\n * official APIs. In the meantime, we are able to use the `uid` of the\n * `kube-system` namespace as a proxy for cluster ID. Read on for the\n * rationale.\n *\n * Every object created in a K8s cluster is assigned a distinct UID. The\n * `kube-system` namespace is used by Kubernetes itself and will exist\n * for the lifetime of the cluster. Using the `uid` of the `kube-system`\n * namespace is a reasonable proxy for the K8s ClusterID as it will only\n * change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are\n * UUIDs as standardized by\n * [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html).\n * Which states:\n *\n * > If generated according to one of the mechanisms defined in Rec.\n * > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be\n * > different from all other UUIDs generated before 3603 A.D., or is\n * > extremely likely to be different (depending on the mechanism chosen).\n *\n * Therefore, UIDs between clusters should be extremely unlikely to\n * conflict.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CLUSTER_UID = 'k8s.cluster.uid' as const;\n\n/**\n * The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`).\n *\n * @example redis\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_NAME = 'k8s.container.name' as const;\n\n/**\n * Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart_count' as const;\n\n/**\n * Last terminated reason of the Container.\n *\n * @example Evicted\n * @example Error\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON = 'k8s.container.status.last_terminated_reason' as const;\n\n/**\n * The reason for the container state. Corresponds to the `reason` field of the: [K8s ContainerStateWaiting](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core) or [K8s ContainerStateTerminated](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core)\n *\n * @example ContainerCreating\n * @example CrashLoopBackOff\n * @example CreateContainerConfigError\n * @example ErrImagePull\n * @example ImagePullBackOff\n * @example OOMKilled\n * @example Completed\n * @example Error\n * @example ContainerCannotRun\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason' as const;\n\n/**\n * Enum value \"Completed\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container has completed execution.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_COMPLETED = \"Completed\" as const;\n\n/**\n * Enum value \"ContainerCannotRun\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container cannot run.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CANNOT_RUN = \"ContainerCannotRun\" as const;\n\n/**\n * Enum value \"ContainerCreating\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container is being created.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CONTAINER_CREATING = \"ContainerCreating\" as const;\n\n/**\n * Enum value \"CrashLoopBackOff\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container is in a crash loop back off state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CRASH_LOOP_BACK_OFF = \"CrashLoopBackOff\" as const;\n\n/**\n * Enum value \"CreateContainerConfigError\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * There was an error creating the container configuration.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_CREATE_CONTAINER_CONFIG_ERROR = \"CreateContainerConfigError\" as const;\n\n/**\n * Enum value \"ErrImagePull\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * There was an error pulling the container image.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_ERR_IMAGE_PULL = \"ErrImagePull\" as const;\n\n/**\n * Enum value \"Error\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * There was an error with the container.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_ERROR = \"Error\" as const;\n\n/**\n * Enum value \"ImagePullBackOff\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container image pull is in back off state.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_IMAGE_PULL_BACK_OFF = \"ImagePullBackOff\" as const;\n\n/**\n * Enum value \"OOMKilled\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_REASON}.\n *\n * The container was killed due to out of memory.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_REASON_VALUE_OOM_KILLED = \"OOMKilled\" as const;\n\n/**\n * The state of the container. [K8s ContainerState](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core)\n *\n * @example terminated\n * @example running\n * @example waiting\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state' as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}.\n *\n * The container is running.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_STATE_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}.\n *\n * The container has terminated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_K8S_CONTAINER_STATUS_STATE}.\n *\n * The container is waiting.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_CONTAINER_STATUS_STATE_VALUE_WAITING = \"waiting\" as const;\n\n/**\n * The cronjob annotation placed on the CronJob, the `` being the annotation name, the value being the annotation value.\n *\n * @example 4\n * @example\n *\n * @note Examples:\n *\n * - An annotation `retries` with value `4` **SHOULD** be recorded as the\n * `k8s.cronjob.annotation.retries` attribute with value `\"4\"`.\n * - An annotation `data` with empty string value **SHOULD** be recorded as\n * the `k8s.cronjob.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_ANNOTATION = (key: string) => `k8s.cronjob.annotation.${key}`;\n\n/**\n * The label placed on the CronJob, the `` being the label name, the value being the label value.\n *\n * @example weekly\n * @example\n *\n * @note Examples:\n *\n * - A label `type` with value `weekly` **SHOULD** be recorded as the\n * `k8s.cronjob.label.type` attribute with value `\"weekly\"`.\n * - A label `automated` with empty string value **SHOULD** be recorded as\n * the `k8s.cronjob.label.automated` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_LABEL = (key: string) => `k8s.cronjob.label.${key}`;\n\n/**\n * The name of the CronJob.\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 */\nexport const ATTR_K8S_CRONJOB_NAME = 'k8s.cronjob.name' as const;\n\n/**\n * The UID of the CronJob.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_UID = 'k8s.cronjob.uid' as const;\n\n/**\n * The annotation placed on the DaemonSet, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `1` **SHOULD** be recorded\n * as the `k8s.daemonset.annotation.replicas` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.daemonset.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_ANNOTATION = (key: string) => `k8s.daemonset.annotation.${key}`;\n\n/**\n * The label placed on the DaemonSet, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `app` with value `guestbook` **SHOULD** be recorded\n * as the `k8s.daemonset.label.app` attribute with value `\"guestbook\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.daemonset.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_LABEL = (key: string) => `k8s.daemonset.label.${key}`;\n\n/**\n * The name of the DaemonSet.\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 */\nexport const ATTR_K8S_DAEMONSET_NAME = 'k8s.daemonset.name' as const;\n\n/**\n * The UID of the DaemonSet.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_UID = 'k8s.daemonset.uid' as const;\n\n/**\n * The annotation placed on the Deployment, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `1` **SHOULD** be recorded\n * as the `k8s.deployment.annotation.replicas` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.deployment.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_ANNOTATION = (key: string) => `k8s.deployment.annotation.${key}`;\n\n/**\n * The label placed on the Deployment, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `0` **SHOULD** be recorded\n * as the `k8s.deployment.label.app` attribute with value `\"guestbook\"`.\n * - A label `injected` with empty string value **SHOULD** be recorded as\n * the `k8s.deployment.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_LABEL = (key: string) => `k8s.deployment.label.${key}`;\n\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 */\nexport const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' as const;\n\n/**\n * The UID of the Deployment.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid' as const;\n\n/**\n * The type of metric source for the horizontal pod autoscaler.\n *\n * @example Resource\n * @example ContainerResource\n *\n * @note This attribute reflects the `type` field of spec.metrics[] in the HPA.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_METRIC_TYPE = 'k8s.hpa.metric.type' as const;\n\n/**\n * The name of the horizontal pod autoscaler.\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 */\nexport const ATTR_K8S_HPA_NAME = 'k8s.hpa.name' as const;\n\n/**\n * The API version of the target resource to scale for the HorizontalPodAutoscaler.\n *\n * @example apps/v1\n * @example autoscaling/v2\n *\n * @note This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_SCALETARGETREF_API_VERSION = 'k8s.hpa.scaletargetref.api_version' as const;\n\n/**\n * The kind of the target resource to scale for the HorizontalPodAutoscaler.\n *\n * @example Deployment\n * @example StatefulSet\n *\n * @note This maps to the `kind` field in the `scaleTargetRef` of the HPA spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_SCALETARGETREF_KIND = 'k8s.hpa.scaletargetref.kind' as const;\n\n/**\n * The name of the target resource to scale for the HorizontalPodAutoscaler.\n *\n * @example my-deployment\n * @example my-statefulset\n *\n * @note This maps to the `name` field in the `scaleTargetRef` of the HPA spec.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_SCALETARGETREF_NAME = 'k8s.hpa.scaletargetref.name' as const;\n\n/**\n * The UID of the horizontal pod autoscaler.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HPA_UID = 'k8s.hpa.uid' as const;\n\n/**\n * The size (identifier) of the K8s huge page.\n *\n * @example 2Mi\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_HUGEPAGE_SIZE = 'k8s.hugepage.size' as const;\n\n/**\n * The annotation placed on the Job, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `number` with value `1` **SHOULD** be recorded\n * as the `k8s.job.annotation.number` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.job.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_ANNOTATION = (key: string) => `k8s.job.annotation.${key}`;\n\n/**\n * The label placed on the Job, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example ci\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `jobtype` with value `ci` **SHOULD** be recorded\n * as the `k8s.job.label.jobtype` attribute with value `\"ci\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.job.label.automated` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_LABEL = (key: string) => `k8s.job.label.${key}`;\n\n/**\n * The name of the Job.\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 */\nexport const ATTR_K8S_JOB_NAME = 'k8s.job.name' as const;\n\n/**\n * The UID of the Job.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_UID = 'k8s.job.uid' as const;\n\n/**\n * The annotation placed on the Namespace, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 0\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `ttl` with value `0` **SHOULD** be recorded\n * as the `k8s.namespace.annotation.ttl` attribute with value `\"0\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.namespace.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_ANNOTATION = (key: string) => `k8s.namespace.annotation.${key}`;\n\n/**\n * The label placed on the Namespace, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example default\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `kubernetes.io/metadata.name` with value `default` **SHOULD** be recorded\n * as the `k8s.namespace.label.kubernetes.io/metadata.name` attribute with value `\"default\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.namespace.label.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_LABEL = (key: string) => `k8s.namespace.label.${key}`;\n\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 */\nexport const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name' as const;\n\n/**\n * The phase of the K8s namespace.\n *\n * @example active\n * @example terminating\n *\n * @note This attribute aligns with the `phase` field of the\n * [K8s NamespaceStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}.\n *\n * Active namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NAMESPACE_PHASE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"terminating\" for attribute {@link ATTR_K8S_NAMESPACE_PHASE}.\n *\n * Terminating namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NAMESPACE_PHASE_VALUE_TERMINATING = \"terminating\" as const;\n\n/**\n * The annotation placed on the Node, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 0\n * @example\n *\n * @note Examples:\n *\n * - An annotation `node.alpha.kubernetes.io/ttl` with value `0` **SHOULD** be recorded as\n * the `k8s.node.annotation.node.alpha.kubernetes.io/ttl` attribute with value `\"0\"`.\n * - An annotation `data` with empty string value **SHOULD** be recorded as\n * the `k8s.node.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_ANNOTATION = (key: string) => `k8s.node.annotation.${key}`;\n\n/**\n * The status of the condition, one of True, False, Unknown.\n *\n * @example true\n * @example false\n * @example unknown\n *\n * @note This attribute aligns with the `status` field of the\n * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status' as const;\n\n/**\n * Enum value \"false\" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_FALSE = \"false\" as const;\n\n/**\n * Enum value \"true\" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_TRUE = \"true\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_K8S_NODE_CONDITION_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_STATUS_VALUE_CONDITION_UNKNOWN = \"unknown\" as const;\n\n/**\n * The condition type of a K8s Node.\n *\n * @example Ready\n * @example DiskPressure\n *\n * @note K8s Node conditions as described\n * by [K8s documentation](https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition).\n *\n * This attribute aligns with the `type` field of the\n * [NodeCondition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core)\n *\n * The set of possible values is not limited to those listed here. Managed Kubernetes environments,\n * or custom controllers **MAY** introduce additional node condition types.\n * When this occurs, the exact value as reported by the Kubernetes API **SHOULD** be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_CONDITION_TYPE = 'k8s.node.condition.type' as const;\n\n/**\n * Enum value \"DiskPressure\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * Pressure exists on the disk size—that is, if the disk capacity is low\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_DISK_PRESSURE = \"DiskPressure\" as const;\n\n/**\n * Enum value \"MemoryPressure\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * Pressure exists on the node memory—that is, if the node memory is low\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_MEMORY_PRESSURE = \"MemoryPressure\" as const;\n\n/**\n * Enum value \"NetworkUnavailable\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * The network for the node is not correctly configured\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_NETWORK_UNAVAILABLE = \"NetworkUnavailable\" as const;\n\n/**\n * Enum value \"PIDPressure\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * Pressure exists on the processes—that is, if there are too many processes on the node\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_PID_PRESSURE = \"PIDPressure\" as const;\n\n/**\n * Enum value \"Ready\" for attribute {@link ATTR_K8S_NODE_CONDITION_TYPE}.\n *\n * The node is healthy and ready to accept pods\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_NODE_CONDITION_TYPE_VALUE_READY = \"Ready\" as const;\n\n/**\n * The label placed on the Node, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example arm64\n * @example\n *\n * @note Examples:\n *\n * - A label `kubernetes.io/arch` with value `arm64` **SHOULD** be recorded\n * as the `k8s.node.label.kubernetes.io/arch` attribute with value `\"arm64\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.node.label.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_LABEL = (key: string) => `k8s.node.label.${key}`;\n\n/**\n * The name of the Node.\n *\n * @example node-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_NAME = 'k8s.node.name' as const;\n\n/**\n * The UID of the Node.\n *\n * @example 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_UID = 'k8s.node.uid' as const;\n\n/**\n * The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value.\n *\n * @example true\n * @example x64\n * @example\n *\n * @note Examples:\n *\n * - An annotation `kubernetes.io/enforce-mountable-secrets` with value `true` **SHOULD** be recorded as\n * the `k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets` attribute with value `\"true\"`.\n * - An annotation `mycompany.io/arch` with value `x64` **SHOULD** be recorded as\n * the `k8s.pod.annotation.mycompany.io/arch` attribute with value `\"x64\"`.\n * - An annotation `data` with empty string value **SHOULD** be recorded as\n * the `k8s.pod.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_ANNOTATION = (key: string) => `k8s.pod.annotation.${key}`;\n\n/**\n * Specifies the hostname of the Pod.\n *\n * @example collector-gateway\n *\n * @note The K8s Pod spec has an optional hostname field, which can be used to specify a hostname.\n * Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field)\n * for more information about this field.\n *\n * This attribute aligns with the `hostname` field of the\n * [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_HOSTNAME = 'k8s.pod.hostname' as const;\n\n/**\n * IP address allocated to the Pod.\n *\n * @example 172.18.0.2\n *\n * @note This attribute aligns with the `podIP` field of the\n * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_IP = 'k8s.pod.ip' as const;\n\n/**\n * The label placed on the Pod, the `` being the label name, the value being the label value.\n *\n * @example my-app\n * @example x64\n * @example\n *\n * @note Examples:\n *\n * - A label `app` with value `my-app` **SHOULD** be recorded as\n * the `k8s.pod.label.app` attribute with value `\"my-app\"`.\n * - A label `mycompany.io/arch` with value `x64` **SHOULD** be recorded as\n * the `k8s.pod.label.mycompany.io/arch` attribute with value `\"x64\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.pod.label.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_LABEL = (key: string) => `k8s.pod.label.${key}`;\n\n/**\n * Deprecated, use `k8s.pod.label` instead.\n *\n * @example my-app\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 `k8s.pod.label`.\n */\nexport const ATTR_K8S_POD_LABELS = (key: string) => `k8s.pod.labels.${key}`;\n\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 */\nexport const ATTR_K8S_POD_NAME = 'k8s.pod.name' as const;\n\n/**\n * The start timestamp of the Pod.\n *\n * @example 2025-12-04T08:41:03Z\n *\n * @note Date and time at which the object was acknowledged by the Kubelet.\n * This is before the Kubelet pulled the container image(s) for the pod.\n *\n * This attribute aligns with the `startTime` field of the\n * [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core),\n * in ISO 8601 (RFC 3339 compatible) format.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_START_TIME = 'k8s.pod.start_time' as const;\n\n/**\n * The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core)\n *\n * @example Pending\n * @example Running\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase' as const;\n\n/**\n * Enum value \"Failed\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * All containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_FAILED = \"Failed\" as const;\n\n/**\n * Enum value \"Pending\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * The pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_PENDING = \"Pending\" as const;\n\n/**\n * Enum value \"Running\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * The pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_RUNNING = \"Running\" as const;\n\n/**\n * Enum value \"Succeeded\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * All containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_SUCCEEDED = \"Succeeded\" as const;\n\n/**\n * Enum value \"Unknown\" for attribute {@link ATTR_K8S_POD_STATUS_PHASE}.\n *\n * For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_PHASE_VALUE_UNKNOWN = \"Unknown\" as const;\n\n/**\n * The reason for the pod state. Corresponds to the `reason` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core)\n *\n * @example Evicted\n * @example NodeAffinity\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason' as const;\n\n/**\n * Enum value \"Evicted\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The pod is evicted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_EVICTED = \"Evicted\" as const;\n\n/**\n * Enum value \"NodeAffinity\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The pod is in a status because of its node affinity\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_NODE_AFFINITY = \"NodeAffinity\" as const;\n\n/**\n * Enum value \"NodeLost\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The reason on a pod when its state cannot be confirmed as kubelet is unresponsive on the node it is (was) running.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_NODE_LOST = \"NodeLost\" as const;\n\n/**\n * Enum value \"Shutdown\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The node is shutdown\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_SHUTDOWN = \"Shutdown\" as const;\n\n/**\n * Enum value \"UnexpectedAdmissionError\" for attribute {@link ATTR_K8S_POD_STATUS_REASON}.\n *\n * The pod was rejected admission to the node because of an error during admission that could not be categorized.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_POD_STATUS_REASON_VALUE_UNEXPECTED_ADMISSION_ERROR = \"UnexpectedAdmissionError\" as const;\n\n/**\n * The UID of the Pod.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_UID = 'k8s.pod.uid' as const;\n\n/**\n * The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 0\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `0` **SHOULD** be recorded\n * as the `k8s.replicaset.annotation.replicas` attribute with value `\"0\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.replicaset.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_ANNOTATION = (key: string) => `k8s.replicaset.annotation.${key}`;\n\n/**\n * The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `app` with value `guestbook` **SHOULD** be recorded\n * as the `k8s.replicaset.label.app` attribute with value `\"guestbook\"`.\n * - A label `injected` with empty string value **SHOULD** be recorded as\n * the `k8s.replicaset.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_LABEL = (key: string) => `k8s.replicaset.label.${key}`;\n\n/**\n * The name of the ReplicaSet.\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 */\nexport const ATTR_K8S_REPLICASET_NAME = 'k8s.replicaset.name' as const;\n\n/**\n * The UID of the ReplicaSet.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_UID = 'k8s.replicaset.uid' as const;\n\n/**\n * The name of the replication controller.\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 */\nexport const ATTR_K8S_REPLICATIONCONTROLLER_NAME = 'k8s.replicationcontroller.name' as const;\n\n/**\n * The UID of the replication controller.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICATIONCONTROLLER_UID = 'k8s.replicationcontroller.uid' as const;\n\n/**\n * The name of the resource quota.\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 */\nexport const ATTR_K8S_RESOURCEQUOTA_NAME = 'k8s.resourcequota.name' as const;\n\n/**\n * The name of the K8s resource a resource quota defines.\n *\n * @example count/replicationcontrollers\n *\n * @note The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_RESOURCEQUOTA_RESOURCE_NAME = 'k8s.resourcequota.resource_name' as const;\n\n/**\n * The UID of the resource quota.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_RESOURCEQUOTA_UID = 'k8s.resourcequota.uid' as const;\n\n/**\n * The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty.\n *\n * @example 1\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `1` **SHOULD** be recorded\n * as the `k8s.statefulset.annotation.replicas` attribute with value `\"1\"`.\n * - A label `data` with empty string value **SHOULD** be recorded as\n * the `k8s.statefulset.annotation.data` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_ANNOTATION = (key: string) => `k8s.statefulset.annotation.${key}`;\n\n/**\n * The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty.\n *\n * @example guestbook\n * @example\n *\n * @note\n * Examples:\n *\n * - A label `replicas` with value `0` **SHOULD** be recorded\n * as the `k8s.statefulset.label.app` attribute with value `\"guestbook\"`.\n * - A label `injected` with empty string value **SHOULD** be recorded as\n * the `k8s.statefulset.label.injected` attribute with value `\"\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_LABEL = (key: string) => `k8s.statefulset.label.${key}`;\n\n/**\n * The name of the StatefulSet.\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 */\nexport const ATTR_K8S_STATEFULSET_NAME = 'k8s.statefulset.name' as const;\n\n/**\n * The UID of the StatefulSet.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_UID = 'k8s.statefulset.uid' as const;\n\n/**\n * The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object.\n *\n * @example gold.storageclass.storage.k8s.io\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STORAGECLASS_NAME = 'k8s.storageclass.name' as const;\n\n/**\n * The name of the K8s volume.\n *\n * @example volume0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_VOLUME_NAME = 'k8s.volume.name' as const;\n\n/**\n * The type of the K8s volume.\n *\n * @example emptyDir\n * @example persistentVolumeClaim\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_VOLUME_TYPE = 'k8s.volume.type' as const;\n\n/**\n * Enum value \"configMap\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [configMap](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_CONFIG_MAP = \"configMap\" as const;\n\n/**\n * Enum value \"downwardAPI\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [downwardAPI](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_DOWNWARD_API = \"downwardAPI\" as const;\n\n/**\n * Enum value \"emptyDir\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * An [emptyDir](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_EMPTY_DIR = \"emptyDir\" as const;\n\n/**\n * Enum value \"local\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [local](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_LOCAL = \"local\" as const;\n\n/**\n * Enum value \"persistentVolumeClaim\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [persistentVolumeClaim](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM = \"persistentVolumeClaim\" as const;\n\n/**\n * Enum value \"secret\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n *\n * A [secret](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const K8S_VOLUME_TYPE_VALUE_SECRET = \"secret\" as const;\n\n/**\n * The Linux Slab memory state\n *\n * @example reclaimable\n * @example unreclaimable\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 `system.memory.linux.slab.state`.\n */\nexport const ATTR_LINUX_MEMORY_SLAB_STATE = 'linux.memory.slab.state' as const;\n\n/**\n * Enum value \"reclaimable\" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE = \"reclaimable\" as const;\n\n/**\n * Enum value \"unreclaimable\" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE = \"unreclaimable\" as const;\n\n/**\n * The basename of the file.\n *\n * @example audit.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_NAME = 'log.file.name' as const;\n\n/**\n * The basename of the file, with symlinks resolved.\n *\n * @example uuid.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_NAME_RESOLVED = 'log.file.name_resolved' as const;\n\n/**\n * The full path to the file.\n *\n * @example /var/log/mysql/audit.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_PATH = 'log.file.path' as const;\n\n/**\n * The full path to the file, with symlinks resolved.\n *\n * @example /var/lib/docker/uuid.log\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_PATH_RESOLVED = 'log.file.path_resolved' as const;\n\n/**\n * The stream associated with the log. See below for a list of well-known values.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_IOSTREAM = 'log.iostream' as const;\n\n/**\n * Enum value \"stderr\" for attribute {@link ATTR_LOG_IOSTREAM}.\n *\n * Events from stderr stream\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LOG_IOSTREAM_VALUE_STDERR = \"stderr\" as const;\n\n/**\n * Enum value \"stdout\" for attribute {@link ATTR_LOG_IOSTREAM}.\n *\n * Logs from stdout stream\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const LOG_IOSTREAM_VALUE_STDOUT = \"stdout\" as const;\n\n/**\n * The complete original Log Record.\n *\n * @example 77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - Something happened\n * @example [INFO] 8/3/24 12:34:56 Something happened\n *\n * @note This value **MAY** be added when processing a Log Record which was originally transmitted as a string or equivalent data type AND the Body field of the Log Record does not contain the same value. (e.g. a syslog or a log record read from a file.)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_RECORD_ORIGINAL = 'log.record.original' as const;\n\n/**\n * A unique identifier for the Log Record.\n *\n * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV\n *\n * @note If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records **MUST** have different values.\n * The id **MAY** be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_RECORD_UID = 'log.record.uid' as const;\n\n/**\n * Name of the logical partition that hosts a systems with a mainframe operating system.\n *\n * @example LPAR01\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MAINFRAME_LPAR_NAME = 'mainframe.lpar.name' as const;\n\n/**\n * The name of the request or notification method.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_METHOD_NAME = 'mcp.method.name' as const;\n\n/**\n * Enum value \"completion/complete\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to complete a prompt.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE = \"completion/complete\" as const;\n\n/**\n * Enum value \"elicitation/create\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request from the server to elicit additional information from the user via the client\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_ELICITATION_CREATE = \"elicitation/create\" as const;\n\n/**\n * Enum value \"initialize\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to initialize the MCP client.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_INITIALIZE = \"initialize\" as const;\n\n/**\n * Enum value \"logging/setLevel\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to set the logging level.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL = \"logging/setLevel\" as const;\n\n/**\n * Enum value \"notifications/cancelled\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification cancelling a previously-issued request.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED = \"notifications/cancelled\" as const;\n\n/**\n * Enum value \"notifications/initialized\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the MCP client has been initialized.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED = \"notifications/initialized\" as const;\n\n/**\n * Enum value \"notifications/message\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that a message has been received.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE = \"notifications/message\" as const;\n\n/**\n * Enum value \"notifications/progress\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating the progress for a long-running operation.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS = \"notifications/progress\" as const;\n\n/**\n * Enum value \"notifications/prompts/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of prompts has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED = \"notifications/prompts/list_changed\" as const;\n\n/**\n * Enum value \"notifications/resources/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of resources has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED = \"notifications/resources/list_changed\" as const;\n\n/**\n * Enum value \"notifications/resources/updated\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that a resource has been updated.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED = \"notifications/resources/updated\" as const;\n\n/**\n * Enum value \"notifications/roots/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of roots has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED = \"notifications/roots/list_changed\" as const;\n\n/**\n * Enum value \"notifications/tools/list_changed\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Notification indicating that the list of tools has changed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED = \"notifications/tools/list_changed\" as const;\n\n/**\n * Enum value \"ping\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to check that the other party is still alive.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_PING = \"ping\" as const;\n\n/**\n * Enum value \"prompts/get\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to get a prompt.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_PROMPTS_GET = \"prompts/get\" as const;\n\n/**\n * Enum value \"prompts/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list prompts available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_PROMPTS_LIST = \"prompts/list\" as const;\n\n/**\n * Enum value \"resources/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list resources available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_LIST = \"resources/list\" as const;\n\n/**\n * Enum value \"resources/read\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to read a resource.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_READ = \"resources/read\" as const;\n\n/**\n * Enum value \"resources/subscribe\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to subscribe to a resource.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE = \"resources/subscribe\" as const;\n\n/**\n * Enum value \"resources/templates/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list resource templates available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST = \"resources/templates/list\" as const;\n\n/**\n * Enum value \"resources/unsubscribe\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to unsubscribe from resource updates.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE = \"resources/unsubscribe\" as const;\n\n/**\n * Enum value \"roots/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list roots available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_ROOTS_LIST = \"roots/list\" as const;\n\n/**\n * Enum value \"sampling/createMessage\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to create a sampling message.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE = \"sampling/createMessage\" as const;\n\n/**\n * Enum value \"tools/call\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to call a tool.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_TOOLS_CALL = \"tools/call\" as const;\n\n/**\n * Enum value \"tools/list\" for attribute {@link ATTR_MCP_METHOD_NAME}.\n *\n * Request to list tools available on server.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MCP_METHOD_NAME_VALUE_TOOLS_LIST = \"tools/list\" as const;\n\n/**\n * The [version](https://modelcontextprotocol.io/specification/versioning) of the Model Context Protocol used.\n *\n * @example 2025-06-18\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_PROTOCOL_VERSION = 'mcp.protocol.version' as const;\n\n/**\n * The value of the resource uri.\n *\n * @example postgres://database/customers/schema\n * @example file:///home/user/documents/report.pdf\n *\n * @note This is a URI of the resource provided in the following requests or notifications: `resources/read`, `resources/subscribe`, `resources/unsubscribe`, or `notifications/resources/updated`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_RESOURCE_URI = 'mcp.resource.uri' as const;\n\n/**\n * Identifies [MCP session](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management).\n *\n * @example 191c4850af6c49e08843a3f6c80e5046\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MCP_SESSION_ID = 'mcp.session.id' as const;\n\n/**\n * Deprecated, use `rpc.message.compressed_size` 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 `rpc.message.compressed_size`.\n */\nexport const ATTR_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size' as const;\n\n/**\n * Deprecated, use `rpc.message.id` 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 `rpc.message.id`.\n */\nexport const ATTR_MESSAGE_ID = 'message.id' as const;\n\n/**\n * Deprecated, use `rpc.message.type` 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 `rpc.message.type`.\n */\nexport const ATTR_MESSAGE_TYPE = 'message.type' as const;\n\n/**\n * Enum value \"RECEIVED\" for attribute {@link ATTR_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGE_TYPE_VALUE_RECEIVED = \"RECEIVED\" as const;\n\n/**\n * Enum value \"SENT\" for attribute {@link ATTR_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGE_TYPE_VALUE_SENT = \"SENT\" as const;\n\n/**\n * Deprecated, use `rpc.message.uncompressed_size` 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 `rpc.message.uncompressed_size`.\n */\nexport const ATTR_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size' as const;\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 */\nexport const ATTR_MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count' as const;\n\n/**\n * A unique identifier for the client that consumes or produces a message.\n *\n * @example client-5\n * @example myhost@8742@s8083jm\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_CLIENT_ID = 'messaging.client.id' as const;\n\n/**\n * The name of the consumer group with which a consumer is associated.\n *\n * @example my-group\n * @example indexer\n *\n * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.consumer.group.name` is applicable and what it means in the context of that system.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_CONSUMER_GROUP_NAME = 'messaging.consumer.group.name' as const;\n\n/**\n * A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_ANONYMOUS = 'messaging.destination.anonymous' as const;\n\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 */\nexport const ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name' as const;\n\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 */\nexport const ATTR_MESSAGING_DESTINATION_PARTITION_ID = 'messaging.destination.partition.id' as const;\n\n/**\n * The name of the destination subscription from which a message is consumed.\n *\n * @example subscription-a\n *\n * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.destination.subscription.name` is applicable and what it means in the context of that system.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME = 'messaging.destination.subscription.name' as const;\n\n/**\n * Low cardinality representation of the messaging destination name\n *\n * @example /customers/{customerId}\n *\n * @note Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_TEMPLATE = 'messaging.destination.template' as const;\n\n/**\n * A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_TEMPORARY = 'messaging.destination.temporary' as const;\n\n/**\n * Deprecated, no replacement at this time.\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 */\nexport const ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS = 'messaging.destination_publish.anonymous' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example MyQueue\n * @example MyTopic\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 */\nexport const ATTR_MESSAGING_DESTINATION_PUBLISH_NAME = 'messaging.destination_publish.name' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\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 *\n * @deprecated Replaced by `messaging.consumer.group.name`.\n */\nexport const ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP = 'messaging.eventhubs.consumer.group' as const;\n\n/**\n * The UTC epoch seconds at which the message has been accepted and stored in the entity.\n *\n * @example 1701393730\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME = 'messaging.eventhubs.message.enqueued_time' as const;\n\n/**\n * The ack deadline in seconds set for the modify ack deadline request.\n *\n * @example 10\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE = 'messaging.gcp_pubsub.message.ack_deadline' as const;\n\n/**\n * The ack id for a given message.\n *\n * @example \"ack_id\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID = 'messaging.gcp_pubsub.message.ack_id' as const;\n\n/**\n * The delivery attempt for a given message.\n *\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT = 'messaging.gcp_pubsub.message.delivery_attempt' as const;\n\n/**\n * The ordering key for a given message. If the attribute is not present, the message does not have an ordering key.\n *\n * @example \"ordering_key\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY = 'messaging.gcp_pubsub.message.ordering_key' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\n *\n * @example \"my-group\"\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.consumer.group.name`.\n */\nexport const ATTR_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer.group' as const;\n\n/**\n * Deprecated, use `messaging.destination.partition.id` instead.\n *\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Record string representation of the partition id in `messaging.destination.partition.id` attribute.\n */\nexport const ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION = 'messaging.kafka.destination.partition' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message.key' as const;\n\n/**\n * Deprecated, use `messaging.kafka.offset` instead.\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 *\n * @deprecated Replaced by `messaging.kafka.offset`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET = 'messaging.kafka.message.offset' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = 'messaging.kafka.message.tombstone' as const;\n\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 */\nexport const ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset' as const;\n\n/**\n * The size of the message body in bytes.\n *\n * @example 1439\n *\n * @note This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed\n * body size should be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_BODY_SIZE = 'messaging.message.body.size' as const;\n\n/**\n * The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called \"Correlation ID\".\n *\n * @example \"MyConversationId\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_CONVERSATION_ID = 'messaging.message.conversation_id' as const;\n\n/**\n * The size of the message body and metadata in bytes.\n *\n * @example 2738\n *\n * @note This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed\n * size should be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE = 'messaging.message.envelope.size' as const;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @example \"452a7c7c7c7048c2f887f61572b18fc2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id' as const;\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 */\nexport const ATTR_MESSAGING_OPERATION = 'messaging.operation' as const;\n\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 */\nexport const ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name' as const;\n\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 */\nexport const ATTR_MESSAGING_OPERATION_TYPE = 'messaging.operation.type' as const;\n\n/**\n * Enum value \"create\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * A message is created. \"Create\" spans always refer to a single message and are used to provide a unique creation context for messages in batch sending scenarios.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_CREATE = \"create\" as const;\n\n/**\n * Enum value \"deliver\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * Deprecated. Use `process` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `process`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_DELIVER = \"deliver\" as const;\n\n/**\n * Enum value \"process\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are processed by a consumer.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PROCESS = \"process\" as const;\n\n/**\n * Enum value \"publish\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * Deprecated. Use `send` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `send`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PUBLISH = \"publish\" as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = \"receive\" as const;\n\n/**\n * Enum value \"send\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are provided for sending to an intermediary. If a single message is sent, the context of the \"Send\" span can be used as the creation context and no \"Create\" span needs to be created.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SEND = \"send\" as const;\n\n/**\n * Enum value \"settle\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n *\n * One or more messages are settled.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SETTLE = \"settle\" as const;\n\n/**\n * RabbitMQ message routing key.\n *\n * @example \"myKey\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = 'messaging.rabbitmq.destination.routing_key' as const;\n\n/**\n * RabbitMQ message delivery tag\n *\n * @example 123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG = 'messaging.rabbitmq.message.delivery_tag' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\n *\n * @example \"myConsumerGroup\"\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.consumer.group.name` on the consumer spans. No replacement for producer spans.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP = 'messaging.rocketmq.client_group' as const;\n\n/**\n * Model of message consumption. This only applies to consumer spans.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL = 'messaging.rocketmq.consumption_model' as const;\n\n/**\n * Enum value \"broadcasting\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}.\n *\n * Broadcasting consumption model\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING = \"broadcasting\" as const;\n\n/**\n * Enum value \"clustering\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}.\n *\n * Clustering consumption model\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING = \"clustering\" as const;\n\n/**\n * The delay time level for delay message, which determines the message delay time.\n *\n * @example 3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL = 'messaging.rocketmq.message.delay_time_level' as const;\n\n/**\n * The timestamp in milliseconds that the delay message is expected to be delivered to consumer.\n *\n * @example 1665987217045\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP = 'messaging.rocketmq.message.delivery_timestamp' as const;\n\n/**\n * It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group.\n *\n * @example \"myMessageGroup\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP = 'messaging.rocketmq.message.group' as const;\n\n/**\n * Key(s) of message, another way to mark message besides message id.\n *\n * @example [\"keyA\", \"keyB\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS = 'messaging.rocketmq.message.keys' as const;\n\n/**\n * The secondary classifier of message besides topic.\n *\n * @example \"tagA\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG = 'messaging.rocketmq.message.tag' as const;\n\n/**\n * Type of message.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE = 'messaging.rocketmq.message.type' as const;\n\n/**\n * Enum value \"delay\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * Delay message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY = \"delay\" as const;\n\n/**\n * Enum value \"fifo\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * FIFO message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO = \"fifo\" as const;\n\n/**\n * Enum value \"normal\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * Normal message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL = \"normal\" as const;\n\n/**\n * Enum value \"transaction\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n *\n * Transaction message\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION = \"transaction\" as const;\n\n/**\n * Namespace of RocketMQ resources, resources in different namespaces are individual.\n *\n * @example \"myNamespace\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_NAMESPACE = 'messaging.rocketmq.namespace' as const;\n\n/**\n * Deprecated, use `messaging.destination.subscription.name` instead.\n *\n * @example \"subscription-a\"\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.destination.subscription.name`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME = 'messaging.servicebus.destination.subscription_name' as const;\n\n/**\n * Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS = 'messaging.servicebus.disposition_status' as const;\n\n/**\n * Enum value \"abandon\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is abandoned\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON = \"abandon\" as const;\n\n/**\n * Enum value \"complete\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is completed\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE = \"complete\" as const;\n\n/**\n * Enum value \"dead_letter\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is sent to dead letter queue\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER = \"dead_letter\" as const;\n\n/**\n * Enum value \"defer\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n *\n * Message is deferred\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER = \"defer\" as const;\n\n/**\n * Number of deliveries that have been attempted for this message.\n *\n * @example 2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT = 'messaging.servicebus.message.delivery_count' as const;\n\n/**\n * The UTC epoch seconds at which the message has been accepted and stored in the entity.\n *\n * @example 1701393730\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME = 'messaging.servicebus.message.enqueued_time' as const;\n\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 */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Enum value \"activemq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache ActiveMQ\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_ACTIVEMQ = \"activemq\" as const;\n\n/**\n * Enum value \"aws.sns\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Amazon Simple Notification Service (SNS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_AWS_SNS = \"aws.sns\" as const;\n\n/**\n * Enum value \"aws_sqs\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Amazon Simple Queue Service (SQS)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_AWS_SQS = \"aws_sqs\" as const;\n\n/**\n * Enum value \"eventgrid\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Azure Event Grid\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_EVENTGRID = \"eventgrid\" as const;\n\n/**\n * Enum value \"eventhubs\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Azure Event Hubs\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_EVENTHUBS = \"eventhubs\" as const;\n\n/**\n * Enum value \"gcp_pubsub\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Google Cloud Pub/Sub\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_GCP_PUBSUB = \"gcp_pubsub\" as const;\n\n/**\n * Enum value \"jms\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Java Message Service\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_JMS = \"jms\" as const;\n\n/**\n * Enum value \"kafka\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache Kafka\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_KAFKA = \"kafka\" as const;\n\n/**\n * Enum value \"pulsar\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache Pulsar\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_PULSAR = \"pulsar\" as const;\n\n/**\n * Enum value \"rabbitmq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * RabbitMQ\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_RABBITMQ = \"rabbitmq\" as const;\n\n/**\n * Enum value \"rocketmq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Apache RocketMQ\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_ROCKETMQ = \"rocketmq\" as const;\n\n/**\n * Enum value \"servicebus\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n *\n * Azure Service Bus\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const MESSAGING_SYSTEM_VALUE_SERVICEBUS = \"servicebus\" as const;\n\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 */\nexport const ATTR_NET_HOST_IP = 'net.host.ip' as const;\n\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 */\nexport const ATTR_NET_HOST_NAME = 'net.host.name' as const;\n\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 */\nexport const ATTR_NET_HOST_PORT = 'net.host.port' as const;\n\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 */\nexport const ATTR_NET_PEER_IP = 'net.peer.ip' as const;\n\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 */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\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 */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Deprecated, use `network.protocol.name`.\n *\n * @example amqp\n * @example http\n * @example mqtt\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 */\nexport const ATTR_NET_PROTOCOL_NAME = 'net.protocol.name' as const;\n\n/**\n * Deprecated, use `network.protocol.version`.\n *\n * @example \"3.1.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.protocol.version`.\n */\nexport const ATTR_NET_PROTOCOL_VERSION = 'net.protocol.version' as const;\n\n/**\n * Deprecated, use `network.transport` and `network.type`.\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 `network.transport` and `network.type`.\n */\nexport const ATTR_NET_SOCK_FAMILY = 'net.sock.family' as const;\n\n/**\n * Enum value \"inet\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n *\n * IPv4 address\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_SOCK_FAMILY_VALUE_INET = \"inet\" as const;\n\n/**\n * Enum value \"inet6\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n *\n * IPv6 address\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_SOCK_FAMILY_VALUE_INET6 = \"inet6\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n *\n * Unix domain socket path\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_SOCK_FAMILY_VALUE_UNIX = \"unix\" as const;\n\n/**\n * Deprecated, use `network.local.address`.\n *\n * @example /var/my.sock\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 */\nexport const ATTR_NET_SOCK_HOST_ADDR = 'net.sock.host.addr' as const;\n\n/**\n * Deprecated, use `network.local.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 `network.local.port`.\n */\nexport const ATTR_NET_SOCK_HOST_PORT = 'net.sock.host.port' as const;\n\n/**\n * Deprecated, use `network.peer.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.peer.address`.\n */\nexport const ATTR_NET_SOCK_PEER_ADDR = 'net.sock.peer.addr' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example /var/my.sock\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 */\nexport const ATTR_NET_SOCK_PEER_NAME = 'net.sock.peer.name' as const;\n\n/**\n * Deprecated, use `network.peer.port`.\n *\n * @example 65531\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.port`.\n */\nexport const ATTR_NET_SOCK_PEER_PORT = 'net.sock.peer.port' as const;\n\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 */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"inproc\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * In-process communication.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_INPROC = \"inproc\" as const;\n\n/**\n * Enum value \"ip_tcp\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_IP_TCP = \"ip_tcp\" as const;\n\n/**\n * Enum value \"ip_udp\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_IP_UDP = \"ip_udp\" as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * Something else (non IP-based).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NET_TRANSPORT}.\n *\n * Named or anonymous pipe.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NET_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @example \"DE\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_ICC = 'network.carrier.icc' as const;\n\n/**\n * The mobile carrier country code.\n *\n * @example \"310\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_MCC = 'network.carrier.mcc' as const;\n\n/**\n * The mobile carrier network code.\n *\n * @example \"001\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_MNC = 'network.carrier.mnc' as const;\n\n/**\n * The name of the mobile carrier.\n *\n * @example \"sprint\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_NAME = 'network.carrier.name' as const;\n\n/**\n * The state of network connection\n *\n * @example close_wait\n *\n * @note Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2)\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_STATE = 'network.connection.state' as const;\n\n/**\n * Enum value \"close_wait\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_CLOSE_WAIT = \"close_wait\" as const;\n\n/**\n * Enum value \"closed\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_CLOSED = \"closed\" as const;\n\n/**\n * Enum value \"closing\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_CLOSING = \"closing\" as const;\n\n/**\n * Enum value \"established\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_ESTABLISHED = \"established\" as const;\n\n/**\n * Enum value \"fin_wait_1\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_1 = \"fin_wait_1\" as const;\n\n/**\n * Enum value \"fin_wait_2\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_FIN_WAIT_2 = \"fin_wait_2\" as const;\n\n/**\n * Enum value \"last_ack\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_LAST_ACK = \"last_ack\" as const;\n\n/**\n * Enum value \"listen\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_LISTEN = \"listen\" as const;\n\n/**\n * Enum value \"syn_received\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_SYN_RECEIVED = \"syn_received\" as const;\n\n/**\n * Enum value \"syn_sent\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_SYN_SENT = \"syn_sent\" as const;\n\n/**\n * Enum value \"time_wait\" for attribute {@link ATTR_NETWORK_CONNECTION_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_STATE_VALUE_TIME_WAIT = \"time_wait\" as const;\n\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 * @example \"LTE\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_SUBTYPE = 'network.connection.subtype' as const;\n\n/**\n * Enum value \"cdma\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * CDMA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA = \"cdma\" as const;\n\n/**\n * Enum value \"cdma2000_1xrtt\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * CDMA2000 1XRTT\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT = \"cdma2000_1xrtt\" as const;\n\n/**\n * Enum value \"edge\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EDGE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE = \"edge\" as const;\n\n/**\n * Enum value \"ehrpd\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EHRPD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD = \"ehrpd\" as const;\n\n/**\n * Enum value \"evdo_0\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EVDO Rel. 0\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 = \"evdo_0\" as const;\n\n/**\n * Enum value \"evdo_a\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EVDO Rev. A\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A = \"evdo_a\" as const;\n\n/**\n * Enum value \"evdo_b\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * EVDO Rev. B\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B = \"evdo_b\" as const;\n\n/**\n * Enum value \"gprs\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * GPRS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS = \"gprs\" as const;\n\n/**\n * Enum value \"gsm\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * GSM\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_GSM = \"gsm\" as const;\n\n/**\n * Enum value \"hsdpa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSDPA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA = \"hsdpa\" as const;\n\n/**\n * Enum value \"hspa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSPA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA = \"hspa\" as const;\n\n/**\n * Enum value \"hspap\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSPAP\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP = \"hspap\" as const;\n\n/**\n * Enum value \"hsupa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * HSUPA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA = \"hsupa\" as const;\n\n/**\n * Enum value \"iden\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * IDEN\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN = \"iden\" as const;\n\n/**\n * Enum value \"iwlan\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * IWLAN\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN = \"iwlan\" as const;\n\n/**\n * Enum value \"lte\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * LTE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE = \"lte\" as const;\n\n/**\n * Enum value \"lte_ca\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * LTE CA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA = \"lte_ca\" as const;\n\n/**\n * Enum value \"nr\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * 5G NR (New Radio)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_NR = \"nr\" as const;\n\n/**\n * Enum value \"nrnsa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * 5G NRNSA (New Radio Non-Standalone)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA = \"nrnsa\" as const;\n\n/**\n * Enum value \"td_scdma\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * TD-SCDMA\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA = \"td_scdma\" as const;\n\n/**\n * Enum value \"umts\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n *\n * UMTS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS = \"umts\" as const;\n\n/**\n * The internet connection type.\n *\n * @example \"wifi\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_TYPE = 'network.connection.type' as const;\n\n/**\n * Enum value \"cell\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_CELL = \"cell\" as const;\n\n/**\n * Enum value \"unavailable\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE = \"unavailable\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * Enum value \"wifi\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_WIFI = \"wifi\" as const;\n\n/**\n * Enum value \"wired\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_WIRED = \"wired\" as const;\n\n/**\n * The network interface name.\n *\n * @example lo\n * @example eth0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_INTERFACE_NAME = 'network.interface.name' as const;\n\n/**\n * The network IO operation direction.\n *\n * @example transmit\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_IO_DIRECTION = 'network.io.direction' as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_NETWORK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_IO_DIRECTION_VALUE_RECEIVE = \"receive\" as const;\n\n/**\n * Enum value \"transmit\" for attribute {@link ATTR_NETWORK_IO_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NETWORK_IO_DIRECTION_VALUE_TRANSMIT = \"transmit\" as const;\n\n/**\n * NFSv4+ operation name.\n *\n * @example OPEN\n * @example READ\n * @example GETATTR\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NFS_OPERATION_NAME = 'nfs.operation.name' as const;\n\n/**\n * Linux: one of \"hit\" (NFSD_STATS_RC_HITS), \"miss\" (NFSD_STATS_RC_MISSES), or \"nocache\" (NFSD_STATS_RC_NOCACHE -- uncacheable)\n *\n * @example \"hit\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NFS_SERVER_REPCACHE_STATUS = 'nfs.server.repcache.status' as const;\n\n/**\n * The state of event loop time.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NODEJS_EVENTLOOP_STATE = 'nodejs.eventloop.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}.\n *\n * Active time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}.\n *\n * Idle time.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const NODEJS_EVENTLOOP_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known.\n *\n * @example sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4\n *\n * @note Follows [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), and specifically the [Digest property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests).\n * An example can be found in [Example Image Manifest](https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OCI_MANIFEST_DIGEST = 'oci.manifest.digest' as const;\n\n/**\n * ONC/Sun RPC procedure name.\n *\n * @example OPEN\n * @example READ\n * @example GETATTR\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_PROCEDURE_NAME = 'onc_rpc.procedure.name' as const;\n\n/**\n * ONC/Sun RPC procedure number.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_PROCEDURE_NUMBER = 'onc_rpc.procedure.number' as const;\n\n/**\n * ONC/Sun RPC program name.\n *\n * @example portmapper\n * @example nfs\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_PROGRAM_NAME = 'onc_rpc.program.name' as const;\n\n/**\n * ONC/Sun RPC program version.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ONC_RPC_VERSION = 'onc_rpc.version' as const;\n\n/**\n * The service tier requested. May be a specific tier, default, or auto.\n *\n * @example auto\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENAI_REQUEST_SERVICE_TIER = 'openai.request.service_tier' as const;\n\n/**\n * Enum value \"auto\" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize scale tier credits until they are exhausted.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = \"auto\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_OPENAI_REQUEST_SERVICE_TIER}.\n *\n * The system will utilize the default scale tier.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * The service tier used for the response.\n *\n * @example scale\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENAI_RESPONSE_SERVICE_TIER = 'openai.response.service_tier' as const;\n\n/**\n * A fingerprint to track any eventual change in the Generative AI environment.\n *\n * @example fp_44709d6fcb\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'openai.response.system_fingerprint' as const;\n\n/**\n * The name of the cluster quota.\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 */\nexport const ATTR_OPENSHIFT_CLUSTERQUOTA_NAME = 'openshift.clusterquota.name' as const;\n\n/**\n * The UID of the cluster quota.\n *\n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENSHIFT_CLUSTERQUOTA_UID = 'openshift.clusterquota.uid' as const;\n\n/**\n * Parent-child Reference type\n *\n * @note The causal relationship between a child Span and a parent Span.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENTRACING_REF_TYPE = 'opentracing.ref_type' as const;\n\n/**\n * Enum value \"child_of\" for attribute {@link ATTR_OPENTRACING_REF_TYPE}.\n *\n * The parent Span depends on the child Span in some capacity\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENTRACING_REF_TYPE_VALUE_CHILD_OF = \"child_of\" as const;\n\n/**\n * Enum value \"follows_from\" for attribute {@link ATTR_OPENTRACING_REF_TYPE}.\n *\n * The parent Span doesn't depend in any way on the result of the child Span\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM = \"follows_from\" as const;\n\n/**\n * Unique identifier for a particular build or compilation of the operating system.\n *\n * @example TQ3C.230805.001.B2\n * @example 20E247\n * @example 22621\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_BUILD_ID = 'os.build_id' as const;\n\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 * @example Microsoft Windows [Version 10.0.18363.778]\n * @example Ubuntu 18.04.1 LTS\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_DESCRIPTION = 'os.description' as const;\n\n/**\n * Human readable operating system name.\n *\n * @example iOS\n * @example Android\n * @example Ubuntu\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_NAME = 'os.name' as const;\n\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 */\nexport const ATTR_OS_TYPE = 'os.type' as const;\n\n/**\n * Enum value \"aix\" for attribute {@link ATTR_OS_TYPE}.\n *\n * AIX (Advanced Interactive eXecutive)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_AIX = \"aix\" as const;\n\n/**\n * Enum value \"darwin\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Apple Darwin\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_DARWIN = \"darwin\" as const;\n\n/**\n * Enum value \"dragonflybsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * DragonFly BSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_DRAGONFLYBSD = \"dragonflybsd\" as const;\n\n/**\n * Enum value \"freebsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * FreeBSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_FREEBSD = \"freebsd\" as const;\n\n/**\n * Enum value \"hpux\" for attribute {@link ATTR_OS_TYPE}.\n *\n * HP-UX (Hewlett Packard Unix)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_HPUX = \"hpux\" as const;\n\n/**\n * Enum value \"linux\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Linux\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_LINUX = \"linux\" as const;\n\n/**\n * Enum value \"netbsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * NetBSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_NETBSD = \"netbsd\" as const;\n\n/**\n * Enum value \"openbsd\" for attribute {@link ATTR_OS_TYPE}.\n *\n * OpenBSD\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_OPENBSD = \"openbsd\" as const;\n\n/**\n * Enum value \"solaris\" for attribute {@link ATTR_OS_TYPE}.\n *\n * SunOS, Oracle Solaris\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_SOLARIS = \"solaris\" as const;\n\n/**\n * Enum value \"windows\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Microsoft Windows\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_WINDOWS = \"windows\" as const;\n\n/**\n * Enum value \"z_os\" for attribute {@link ATTR_OS_TYPE}.\n *\n * Deprecated. Use `zos` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `zos`.\n */\nexport const OS_TYPE_VALUE_Z_OS = \"z_os\" as const;\n\n/**\n * Enum value \"zos\" for attribute {@link ATTR_OS_TYPE}.\n *\n * IBM z/OS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OS_TYPE_VALUE_ZOS = \"zos\" as const;\n\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 */\nexport const ATTR_OS_VERSION = 'os.version' as const;\n\n/**\n * A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance.\n *\n * @example otlp_grpc_span_exporter/0\n * @example custom-name\n *\n * @note Implementations **SHOULD** ensure a low cardinality for this attribute, even across application or SDK restarts.\n * E.g. implementations **MUST NOT** use UUIDs as values for this attribute.\n *\n * Implementations **MAY** achieve these goals by following a `/` pattern, e.g. `batching_span_processor/0`.\n * Hereby `otel.component.type` refers to the corresponding attribute value of the component.\n *\n * The value of `instance-counter` **MAY** be automatically assigned by the component and uniqueness within the enclosing SDK instance **MUST** be guaranteed.\n * For example, `` **MAY** be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an\n * instance of the given component type is started.\n *\n * With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`\n * as `otel.component.name`, the second one `batching_span_processor/1` and so on.\n * These values will therefore be reused in the case of an application restart.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_COMPONENT_NAME = 'otel.component.name' as const;\n\n/**\n * A name identifying the type of the OpenTelemetry component.\n *\n * @example batching_span_processor\n * @example com.example.MySpanExporter\n *\n * @note If none of the standardized values apply, implementations **SHOULD** use the language-defined name of the type.\n * E.g. for Java the fully qualified classname **SHOULD** be used in this case.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_COMPONENT_TYPE = 'otel.component.type' as const;\n\n/**\n * Enum value \"batching_log_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK batching log record processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR = \"batching_log_processor\" as const;\n\n/**\n * Enum value \"batching_span_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK batching span processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR = \"batching_span_processor\" as const;\n\n/**\n * Enum value \"otlp_grpc_log_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP log record exporter over gRPC with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_LOG_EXPORTER = \"otlp_grpc_log_exporter\" as const;\n\n/**\n * Enum value \"otlp_grpc_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP metric exporter over gRPC with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_METRIC_EXPORTER = \"otlp_grpc_metric_exporter\" as const;\n\n/**\n * Enum value \"otlp_grpc_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP span exporter over gRPC with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER = \"otlp_grpc_span_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_json_log_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP log record exporter over HTTP with JSON serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_LOG_EXPORTER = \"otlp_http_json_log_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_json_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP metric exporter over HTTP with JSON serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_METRIC_EXPORTER = \"otlp_http_json_metric_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_json_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP span exporter over HTTP with JSON serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER = \"otlp_http_json_span_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_log_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP log record exporter over HTTP with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER = \"otlp_http_log_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP metric exporter over HTTP with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_METRIC_EXPORTER = \"otlp_http_metric_exporter\" as const;\n\n/**\n * Enum value \"otlp_http_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP span exporter over HTTP with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER = \"otlp_http_span_exporter\" as const;\n\n/**\n * Enum value \"periodic_metric_reader\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK periodically exporting metric reader\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_PERIODIC_METRIC_READER = \"periodic_metric_reader\" as const;\n\n/**\n * Enum value \"prometheus_http_text_metric_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * Prometheus metric exporter over HTTP with the default text-based format\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_PROMETHEUS_HTTP_TEXT_METRIC_EXPORTER = \"prometheus_http_text_metric_exporter\" as const;\n\n/**\n * Enum value \"simple_log_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK simple log record processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR = \"simple_log_processor\" as const;\n\n/**\n * Enum value \"simple_span_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK simple span processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR = \"simple_span_processor\" as const;\n\n/**\n * Enum value \"zipkin_http_span_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * Zipkin span exporter over HTTP\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_ZIPKIN_HTTP_SPAN_EXPORTER = \"zipkin_http_span_exporter\" as const;\n\n/**\n * Identifies the class / type of event.\n *\n * @example browser.mouse.click\n * @example device.app.lifecycle\n *\n * @note This attribute **SHOULD** be used by non-OTLP exporters when destination does not support `EventName` or equivalent field. This attribute **MAY** be used by applications using existing logging libraries so that it can be used to set the `EventName` field by Collector or SDK components.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_EVENT_NAME = 'otel.event.name' as const;\n\n/**\n * Deprecated. Use the `otel.scope.name` attribute\n *\n * @example io.opentelemetry.contrib.mongodb\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 `otel.scope.name`.\n */\nexport const ATTR_OTEL_LIBRARY_NAME = 'otel.library.name' as const;\n\n/**\n * Deprecated. Use the `otel.scope.version` attribute.\n *\n * @example 1.0.0\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 `otel.scope.version`.\n */\nexport const ATTR_OTEL_LIBRARY_VERSION = 'otel.library.version' as const;\n\n/**\n * The schema URL of the instrumentation scope.\n *\n * @example https://opentelemetry.io/schemas/1.31.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_SCOPE_SCHEMA_URL = 'otel.scope.schema_url' as const;\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 */\nexport const ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin' as const;\n\n/**\n * Enum value \"local\" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}.\n *\n * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is false\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_PARENT_ORIGIN_VALUE_LOCAL = \"local\" as const;\n\n/**\n * Enum value \"none\" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}.\n *\n * The span does not have a parent, it is a root span\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_PARENT_ORIGIN_VALUE_NONE = \"none\" as const;\n\n/**\n * Enum value \"remote\" for attribute {@link ATTR_OTEL_SPAN_PARENT_ORIGIN}.\n *\n * The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is true\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_PARENT_ORIGIN_VALUE_REMOTE = \"remote\" as const;\n\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 */\nexport const ATTR_OTEL_SPAN_SAMPLING_RESULT = 'otel.span.sampling_result' as const;\n\n/**\n * Enum value \"DROP\" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}.\n *\n * The span is not sampled and not recording\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP = \"DROP\" as const;\n\n/**\n * Enum value \"RECORD_AND_SAMPLE\" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}.\n *\n * The span is sampled and recording\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE = \"RECORD_AND_SAMPLE\" as const;\n\n/**\n * Enum value \"RECORD_ONLY\" for attribute {@link ATTR_OTEL_SPAN_SAMPLING_RESULT}.\n *\n * The span is not sampled, but recording\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY = \"RECORD_ONLY\" as const;\n\n/**\n * The [`service.name`](/docs/resource/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 * @example \"AuthTokenCache\"\n *\n * @note Examples of `peer.service` that users may specify:\n *\n * - A Redis cache of auth tokens as `peer.service=\"AuthTokenCache\"`.\n * - A gRPC service `rpc.service=\"io.opentelemetry.AuthService\"` may be hosted in both a gateway, `peer.service=\"ExternalApiService\"` and a backend, `peer.service=\"AuthService\"`.\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 `service.peer.name`.\n */\nexport const ATTR_PEER_SERVICE = 'peer.service' as const;\n\n/**\n * Deprecated, use `db.client.connection.pool.name` instead.\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 *\n * @deprecated Replaced by `db.client.connection.pool.name`.\n */\nexport const ATTR_POOL_NAME = 'pool.name' as const;\n\n/**\n * Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_LOCATION_IS_FOLDED = 'pprof.location.is_folded' as const;\n\n/**\n * Indicates that there are filenames related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_FILENAMES = 'pprof.mapping.has_filenames' as const;\n\n/**\n * Indicates that there are functions related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_FUNCTIONS = 'pprof.mapping.has_functions' as const;\n\n/**\n * Indicates that there are inline frames related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_INLINE_FRAMES = 'pprof.mapping.has_inline_frames' as const;\n\n/**\n * Indicates that there are line numbers related to this mapping.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_MAPPING_HAS_LINE_NUMBERS = 'pprof.mapping.has_line_numbers' as const;\n\n/**\n * Free-form text associated with the profile. This field should not be used to store any machine-readable information, it is only for human-friendly content.\n *\n * @example [\"hello world\", \"bazinga\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_COMMENT = 'pprof.profile.comment' as const;\n\n/**\n * Documentation link for this profile type.\n *\n * @example http://pprof.example.com/cpu-profile.html\n *\n * @note The URL must be absolute and may be missing if the profile was generated by code that did not supply a link\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_DOC_URL = 'pprof.profile.doc_url' as const;\n\n/**\n * Frames with Function.function_name fully matching the regexp will be dropped from the samples, along with their successors.\n *\n * @example /foobar/\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_DROP_FRAMES = 'pprof.profile.drop_frames' as const;\n\n/**\n * Frames with Function.function_name fully matching the regexp will be kept, even if it matches drop_frames.\n *\n * @example /bazinga/\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PPROF_PROFILE_KEEP_FRAMES = 'pprof.profile.keep_frames' as const;\n\n/**\n * Length of the process.command_args array\n *\n * @example 4\n *\n * @note This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_ARGS_COUNT = 'process.args_count' as const;\n\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 */\nexport const ATTR_PROCESS_COMMAND = 'process.command' as const;\n\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`. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data.\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 */\nexport const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args' as const;\n\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. **SHOULD NOT** be collected by default unless there is sanitization that excludes sensitive data.\n *\n * @example C:\\\\cmd\\\\otecol --config=\"my directory\\\\config.yaml\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND_LINE = 'process.command_line' as const;\n\n/**\n * Specifies whether the context switches for this data point were voluntary or involuntary.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_CONTEXT_SWITCH_TYPE = 'process.context_switch.type' as const;\n\n/**\n * Enum value \"involuntary\" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY = \"involuntary\" as const;\n\n/**\n * Enum value \"voluntary\" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY = \"voluntary\" as const;\n\n/**\n * Deprecated, use `cpu.mode` 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 `cpu.mode`.\n */\nexport const ATTR_PROCESS_CPU_STATE = 'process.cpu.state' as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * Enum value \"wait\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_CPU_STATE_VALUE_WAIT = \"wait\" as const;\n\n/**\n * The date and time the process was created, in ISO 8601 format.\n *\n * @example 2023-11-21T09:25:34.853Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_CREATION_TIME = 'process.creation.time' as const;\n\n/**\n * Process environment variables, `` being the environment variable name, the value being the environment variable value.\n *\n * @example ubuntu\n * @example /usr/local/bin:/usr/bin\n *\n * @note Examples:\n *\n * - an environment variable `USER` with value `\"ubuntu\"` **SHOULD** be recorded\n * as the `process.environment_variable.USER` attribute with value `\"ubuntu\"`.\n * - an environment variable `PATH` with value `\"/usr/local/bin:/usr/bin\"`\n * **SHOULD** be recorded as the `process.environment_variable.PATH` attribute\n * with value `\"/usr/local/bin:/usr/bin\"`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_ENVIRONMENT_VARIABLE = (key: string) => `process.environment_variable.${key}`;\n\n/**\n * The GNU build ID as found in the `.note.gnu.build-id` ELF section (hex string).\n *\n * @example c89b11207f6479603b0d49bf291c092c2b719293\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU = 'process.executable.build_id.gnu' as const;\n\n/**\n * The Go build ID as retrieved by `go tool buildid `.\n *\n * @example foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO = 'process.executable.build_id.go' as const;\n\n/**\n * Profiling specific build ID for executables. See the OTel specification for Profiles for more information.\n *\n * @example 600DCAFE4A110000F2BF38C493F5FB92\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH = 'process.executable.build_id.htlhash' as const;\n\n/**\n * \"Deprecated, use `process.executable.build_id.htlhash` instead.\"\n *\n * @example 600DCAFE4A110000F2BF38C493F5FB92\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 `process.executable.build_id.htlhash`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING = 'process.executable.build_id.profiling' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name' as const;\n\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 */\nexport const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path' as const;\n\n/**\n * The exit code of the process.\n *\n * @example 127\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXIT_CODE = 'process.exit.code' as const;\n\n/**\n * The date and time the process exited, in ISO 8601 format.\n *\n * @example 2023-11-21T09:26:12.315Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXIT_TIME = 'process.exit.time' as const;\n\n/**\n * The PID of the process's group leader. This is also the process group ID (PGID) of the process.\n *\n * @example 23\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_GROUP_LEADER_PID = 'process.group_leader.pid' as const;\n\n/**\n * Whether the process is connected to an interactive shell.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_INTERACTIVE = 'process.interactive' as const;\n\n/**\n * The control group associated with the process.\n *\n * @example 1:name=systemd:/user.slice/user-1000.slice/session-3.scope\n * @example 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope\n *\n * @note Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the [/proc/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_LINUX_CGROUP = 'process.linux.cgroup' as const;\n\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 */\nexport const ATTR_PROCESS_OWNER = 'process.owner' as const;\n\n/**\n * Deprecated, use `system.paging.fault.type` 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 `system.paging.fault.type`.\n */\nexport const ATTR_PROCESS_PAGING_FAULT_TYPE = 'process.paging.fault_type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Parent Process identifier (PPID).\n *\n * @example 111\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_PARENT_PID = 'process.parent_pid' as const;\n\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 */\nexport const ATTR_PROCESS_PID = 'process.pid' as const;\n\n/**\n * The real user ID (RUID) of the process.\n *\n * @example 1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_REAL_USER_ID = 'process.real_user.id' as const;\n\n/**\n * The username of the real user of the process.\n *\n * @example operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_REAL_USER_NAME = 'process.real_user.name' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description' as const;\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 */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n\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 */\nexport const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version' as const;\n\n/**\n * The saved user ID (SUID) of the process.\n *\n * @example 1002\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SAVED_USER_ID = 'process.saved_user.id' as const;\n\n/**\n * The username of the saved user.\n *\n * @example operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SAVED_USER_NAME = 'process.saved_user.name' as const;\n\n/**\n * The PID of the process's session leader. This is also the session ID (SID) of the process.\n *\n * @example 14\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SESSION_LEADER_PID = 'process.session_leader.pid' as const;\n\n/**\n * The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES)\n *\n * @example running\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_STATE = 'process.state' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_PROCESS_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROCESS_STATE_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * Process title (proctitle)\n *\n * @example cat /etc/hostname\n * @example xfce4-session\n * @example bash\n *\n * @note In many Unix-like systems, process title (proctitle), is the string that represents the name or command line of a running process, displayed by system monitoring tools like ps, top, and htop.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_TITLE = 'process.title' as const;\n\n/**\n * The effective user ID (EUID) of the process.\n *\n * @example 1001\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_USER_ID = 'process.user.id' as const;\n\n/**\n * The username of the effective user of 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 */\nexport const ATTR_PROCESS_USER_NAME = 'process.user.name' as const;\n\n/**\n * Virtual process identifier.\n *\n * @example 12\n *\n * @note The process ID within a PID namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_VPID = 'process.vpid' as const;\n\n/**\n * The working directory of 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 */\nexport const ATTR_PROCESS_WORKING_DIRECTORY = 'process.working_directory' as const;\n\n/**\n * Describes the interpreter or compiler of a single frame.\n *\n * @example cpython\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROFILE_FRAME_TYPE = 'profile.frame.type' as const;\n\n/**\n * Enum value \"beam\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Erlang](https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_BEAM = \"beam\" as const;\n\n/**\n * Enum value \"cpython\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Python](https://wikipedia.org/wiki/Python_(programming_language))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_CPYTHON = \"cpython\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [.NET](https://wikipedia.org/wiki/.NET)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Go](https://wikipedia.org/wiki/Go_(programming_language)),\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"jvm\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [JVM](https://wikipedia.org/wiki/Java_virtual_machine)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_JVM = \"jvm\" as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Kernel](https://wikipedia.org/wiki/Kernel_(operating_system))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"native\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * Can be one of but not limited to [C](https://wikipedia.org/wiki/C_(programming_language)), [C++](https://wikipedia.org/wiki/C%2B%2B), [Go](https://wikipedia.org/wiki/Go_(programming_language)) or [Rust](https://wikipedia.org/wiki/Rust_(programming_language)). If possible, a more precise value **MUST** be used.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_NATIVE = \"native\" as const;\n\n/**\n * Enum value \"perl\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Perl](https://wikipedia.org/wiki/Perl)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_PERL = \"perl\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [PHP](https://wikipedia.org/wiki/PHP)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Ruby](https://wikipedia.org/wiki/Ruby_(programming_language))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [Rust](https://wikipedia.org/wiki/Rust_(programming_language))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"v8js\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n *\n * [V8JS](https://wikipedia.org/wiki/V8_(JavaScript_engine))\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_V8JS = \"v8js\" as const;\n\n/**\n * Deprecated, use `rpc.response.status_code` attribute 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 `rpc.response.status_code`.\n */\nexport const ATTR_RPC_CONNECT_RPC_ERROR_CODE = 'rpc.connect_rpc.error_code' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"already_exists\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS = \"already_exists\" as const;\n\n/**\n * Enum value \"cancelled\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED = \"cancelled\" as const;\n\n/**\n * Enum value \"data_loss\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS = \"data_loss\" as const;\n\n/**\n * Enum value \"deadline_exceeded\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED = \"deadline_exceeded\" as const;\n\n/**\n * Enum value \"failed_precondition\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION = \"failed_precondition\" as const;\n\n/**\n * Enum value \"internal\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL = \"internal\" as const;\n\n/**\n * Enum value \"invalid_argument\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT = \"invalid_argument\" as const;\n\n/**\n * Enum value \"not_found\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND = \"not_found\" as const;\n\n/**\n * Enum value \"out_of_range\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE = \"out_of_range\" as const;\n\n/**\n * Enum value \"permission_denied\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED = \"permission_denied\" as const;\n\n/**\n * Enum value \"resource_exhausted\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED = \"resource_exhausted\" as const;\n\n/**\n * Enum value \"unauthenticated\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED = \"unauthenticated\" as const;\n\n/**\n * Enum value \"unavailable\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE = \"unavailable\" as const;\n\n/**\n * Enum value \"unimplemented\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED = \"unimplemented\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * Deprecated, use `rpc.request.metadata` instead.\n *\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\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 `rpc.request.metadata`.\n */\nexport const ATTR_RPC_CONNECT_RPC_REQUEST_METADATA = (key: string) => `rpc.connect_rpc.request.metadata.${key}`;\n\n/**\n * Deprecated, use `rpc.response.metadata` instead.\n *\n * @example [\"attribute_value\"]\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 `rpc.response.metadata`.\n */\nexport const ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA = (key: string) => `rpc.connect_rpc.response.metadata.${key}`;\n\n/**\n * Deprecated, use `rpc.request.metadata` instead.\n *\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\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 `rpc.request.metadata`.\n */\nexport const ATTR_RPC_GRPC_REQUEST_METADATA = (key: string) => `rpc.grpc.request.metadata.${key}`;\n\n/**\n * Deprecated, use `rpc.response.metadata` instead.\n *\n * @example [\"attribute_value\"]\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 `rpc.response.metadata`.\n */\nexport const ATTR_RPC_GRPC_RESPONSE_METADATA = (key: string) => `rpc.grpc.response.metadata.${key}`;\n\n/**\n * Deprecated, use string representation on the `rpc.response.status_code` attribute instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use string representation of the gRPC status code on the `rpc.response.status_code` attribute.\n */\nexport const ATTR_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code' as const;\n\n/**\n * Enum value 0 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * OK\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_OK = 0 as const;\n\n/**\n * Enum value 1 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * CANCELLED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_CANCELLED = 1 as const;\n\n/**\n * Enum value 2 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNKNOWN\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN = 2 as const;\n\n/**\n * Enum value 3 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * INVALID_ARGUMENT\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT = 3 as const;\n\n/**\n * Enum value 4 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * DEADLINE_EXCEEDED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED = 4 as const;\n\n/**\n * Enum value 5 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * NOT_FOUND\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND = 5 as const;\n\n/**\n * Enum value 6 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * ALREADY_EXISTS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS = 6 as const;\n\n/**\n * Enum value 7 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * PERMISSION_DENIED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED = 7 as const;\n\n/**\n * Enum value 8 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * RESOURCE_EXHAUSTED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED = 8 as const;\n\n/**\n * Enum value 9 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * FAILED_PRECONDITION\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION = 9 as const;\n\n/**\n * Enum value 10 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * ABORTED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_ABORTED = 10 as const;\n\n/**\n * Enum value 11 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * OUT_OF_RANGE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE = 11 as const;\n\n/**\n * Enum value 12 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNIMPLEMENTED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED = 12 as const;\n\n/**\n * Enum value 13 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * INTERNAL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_INTERNAL = 13 as const;\n\n/**\n * Enum value 14 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNAVAILABLE\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE = 14 as const;\n\n/**\n * Enum value 15 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * DATA_LOSS\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS = 15 as const;\n\n/**\n * Enum value 16 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n *\n * UNAUTHENTICATED\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED = 16 as const;\n\n/**\n * Deprecated, use string representation on the `rpc.response.status_code` attribute instead.\n *\n * @example -32700\n * @example 100\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use string representation of the error code on the `rpc.response.status_code` attribute.\n */\nexport const ATTR_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code' as const;\n\n/**\n * Deprecated, use span status description or `error.message` attribute on other signals.\n *\n * @example Parse error\n * @example User already exists\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Use the span status description or `error.message` attribute on other signals.\n */\nexport const ATTR_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message' as const;\n\n/**\n * Deprecated, use `jsonrpc.request.id` instead.\n *\n * @example 10\n * @example request-7\n * @example\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 `jsonrpc.request.id`.\n */\nexport const ATTR_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id' as const;\n\n/**\n * Deprecated, use `jsonrpc.protocol.version` instead.\n *\n * @example 2.0\n * @example 1.0\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 `jsonrpc.protocol.version`.\n */\nexport const ATTR_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version' as const;\n\n/**\n * Compressed size of the message in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_COMPRESSED_SIZE = 'rpc.message.compressed_size' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_ID = 'rpc.message.id' as const;\n\n/**\n * Whether this is a received or sent message.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_TYPE = 'rpc.message.type' as const;\n\n/**\n * Enum value \"RECEIVED\" for attribute {@link ATTR_RPC_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_MESSAGE_TYPE_VALUE_RECEIVED = \"RECEIVED\" as const;\n\n/**\n * Enum value \"SENT\" for attribute {@link ATTR_RPC_MESSAGE_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_MESSAGE_TYPE_VALUE_SENT = \"SENT\" as const;\n\n/**\n * Uncompressed size of the message in bytes.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE = 'rpc.message.uncompressed_size' as const;\n\n/**\n * The fully-qualified logical name of the method from the RPC interface perspective.\n *\n * @example com.example.ExampleService/exampleMethod\n * @example EchoService/Echo\n * @example _OTHER\n *\n * @note The method name **MAY** have unbounded cardinality in edge or error cases.\n *\n * Some RPC frameworks or libraries provide a fixed set of recognized methods\n * for client stubs and server implementations. Instrumentations for such\n * frameworks **MUST** set this attribute to the original method name only\n * when the method is recognized by the framework or library.\n *\n * When the method is not recognized, for example, when the server receives\n * a request for a method that is not predefined on the server, or when\n * instrumentation is not able to reliably detect if the method is predefined,\n * the attribute **MUST** be set to `_OTHER`. In such cases, tracing\n * instrumentations **MUST** also set `rpc.method_original` attribute to\n * the original method value.\n *\n * If the RPC instrumentation could end up converting valid RPC methods to\n * `_OTHER`, then it **SHOULD** provide a way to configure the list of recognized\n * RPC methods.\n *\n * The `rpc.method` can be different from the name of any implementing\n * method/function.\n * The `code.function.name` attribute may be used to record the fully-qualified\n * method actually executing the call on the server side, or the\n * RPC client stub method on the client side.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_METHOD = 'rpc.method' as const;\n\n/**\n * The original name of the method used by the client.\n *\n * @example com.myservice.EchoService/catchAll\n * @example com.myservice.EchoService/unknownMethod\n * @example InvalidMethod\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_METHOD_ORIGINAL = 'rpc.method_original' as const;\n\n/**\n * RPC request metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values.\n *\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured.\n * Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * For example, a property `my-custom-key` with value `[\"1.2.3.4\", \"1.2.3.5\"]` **SHOULD** be recorded as\n * `rpc.request.metadata.my-custom-key` attribute with value `[\"1.2.3.4\", \"1.2.3.5\"]`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_REQUEST_METADATA = (key: string) => `rpc.request.metadata.${key}`;\n\n/**\n * RPC response metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values.\n *\n * @example [\"attribute_value\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured.\n * Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * For example, a property `my-custom-key` with value `[\"attribute_value\"]` **SHOULD** be recorded as\n * the `rpc.response.metadata.my-custom-key` attribute with value `[\"attribute_value\"]`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_RESPONSE_METADATA = (key: string) => `rpc.response.metadata.${key}`;\n\n/**\n * Status code of the RPC returned by the RPC server or generated by the client\n *\n * @example OK\n * @example DEADLINE_EXCEEDED\n * @example -32602\n *\n * @note 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 RPC frameworks **SHOULD** document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_RESPONSE_STATUS_CODE = 'rpc.response.status_code' as const;\n\n/**\n * Deprecated, use fully-qualified `rpc.method` instead.\n *\n * @example \"myservice.EchoService\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Value should be included in `rpc.method` which is expected to be a fully-qualified name.\n */\nexport const ATTR_RPC_SERVICE = 'rpc.service' as const;\n\n/**\n * Deprecated, use `rpc.system.name` attribute 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 `rpc.system.name`.\n */\nexport const ATTR_RPC_SYSTEM = 'rpc.system' as const;\n\n/**\n * Enum value \"apache_dubbo\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * Apache Dubbo\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_APACHE_DUBBO = \"apache_dubbo\" as const;\n\n/**\n * Enum value \"connect_rpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * Connect RPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_CONNECT_RPC = \"connect_rpc\" as const;\n\n/**\n * Enum value \"dotnet_wcf\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * .NET WCF\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_DOTNET_WCF = \"dotnet_wcf\" as const;\n\n/**\n * Enum value \"grpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * gRPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_GRPC = \"grpc\" as const;\n\n/**\n * Enum value \"java_rmi\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * Java RMI\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_JAVA_RMI = \"java_rmi\" as const;\n\n/**\n * Enum value \"jsonrpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * JSON-RPC\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_JSONRPC = \"jsonrpc\" as const;\n\n/**\n * Enum value \"onc_rpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n *\n * [ONC RPC (Sun RPC)](https://datatracker.ietf.org/doc/html/rfc5531)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_VALUE_ONC_RPC = \"onc_rpc\" as const;\n\n/**\n * The Remote Procedure Call (RPC) system.\n *\n * @note The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_SYSTEM_NAME = 'rpc.system.name' as const;\n\n/**\n * Enum value \"connectrpc\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [Connect RPC](https://connectrpc.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_CONNECTRPC = \"connectrpc\" as const;\n\n/**\n * Enum value \"dubbo\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [Apache Dubbo](https://dubbo.apache.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_DUBBO = \"dubbo\" as const;\n\n/**\n * Enum value \"grpc\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [gRPC](https://grpc.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_GRPC = \"grpc\" as const;\n\n/**\n * Enum value \"jsonrpc\" for attribute {@link ATTR_RPC_SYSTEM_NAME}.\n *\n * [JSON-RPC](https://www.jsonrpc.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const RPC_SYSTEM_NAME_VALUE_JSONRPC = \"jsonrpc\" as const;\n\n/**\n * A categorization value keyword used by the entity using the rule for detection of this event\n *\n * @example Attempted Information Leak\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_CATEGORY = 'security_rule.category' as const;\n\n/**\n * The description of the rule generating the event.\n *\n * @example Block requests to public DNS over HTTPS / TLS protocols\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_DESCRIPTION = 'security_rule.description' as const;\n\n/**\n * Name of the license under which the rule used to generate this event is made available.\n *\n * @example Apache 2.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_LICENSE = 'security_rule.license' as const;\n\n/**\n * The name of the rule or signature generating the event.\n *\n * @example BLOCK_DNS_over_TLS\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_NAME = 'security_rule.name' as const;\n\n/**\n * Reference URL to additional information about the rule used to generate this event.\n *\n * @example https://en.wikipedia.org/wiki/DNS_over_TLS\n *\n * @note The URL can point to the vendor’s documentation about the rule. If that’s not available, it can also be a link to a more general page describing this type of alert.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_REFERENCE = 'security_rule.reference' as const;\n\n/**\n * Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member.\n *\n * @example Standard_Protocol_Filters\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_RULESET_NAME = 'security_rule.ruleset.name' as const;\n\n/**\n * A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event.\n *\n * @example 550e8400-e29b-41d4-a716-446655440000\n * @example 1100110011\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_UUID = 'security_rule.uuid' as const;\n\n/**\n * The version / revision of the rule being used for analysis.\n *\n * @example 1.0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SECURITY_RULE_VERSION = 'security_rule.version' as const;\n\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 */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\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 */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\n/**\n * Logical name of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.name`](/docs/resource/README.md#service) resource attribute of the remote service if any.\n *\n * @example shoppingcart\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_PEER_NAME = 'service.peer.name' as const;\n\n/**\n * Logical namespace of the service on the other side of the connection. **SHOULD** be equal to the actual [`service.namespace`](/docs/resource/README.md#service) resource attribute of the remote service if any.\n *\n * @example Shop\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_PEER_NAMESPACE = 'service.peer.namespace' as const;\n\n/**\n * A unique id to identify a session.\n *\n * @example \"00112233-4455-6677-8899-aabbccddeeff\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SESSION_ID = 'session.id' as const;\n\n/**\n * The previous `session.id` for this user, when known.\n *\n * @example \"00112233-4455-6677-8899-aabbccddeeff\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SESSION_PREVIOUS_ID = 'session.previous_id' as const;\n\n/**\n * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example source.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the destination side, and when communicating through an intermediary, `source.address` **SHOULD** represent the source address behind any intermediaries, for example proxies, if it's available.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SOURCE_ADDRESS = 'source.address' as const;\n\n/**\n * Source port number\n *\n * @example 3389\n * @example 2888\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SOURCE_PORT = 'source.port' as const;\n\n/**\n * Deprecated, use `db.client.connection.state` instead.\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 *\n * @deprecated Replaced by `db.client.connection.state`.\n */\nexport const ATTR_STATE = 'state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `cpu.logical_number` instead.\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 *\n * @deprecated Replaced by `cpu.logical_number`.\n */\nexport const ATTR_SYSTEM_CPU_LOGICAL_NUMBER = 'system.cpu.logical_number' as const;\n\n/**\n * Deprecated, use `cpu.mode` instead.\n *\n * @example idle\n * @example interrupt\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 `cpu.mode`.\n */\nexport const ATTR_SYSTEM_CPU_STATE = 'system.cpu.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"interrupt\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_INTERRUPT = \"interrupt\" as const;\n\n/**\n * Enum value \"iowait\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_IOWAIT = \"iowait\" as const;\n\n/**\n * Enum value \"nice\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_NICE = \"nice\" as const;\n\n/**\n * Enum value \"steal\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_STEAL = \"steal\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * The device identifier\n *\n * @example (identifier)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_DEVICE = 'system.device' as const;\n\n/**\n * The filesystem mode\n *\n * @example rw, ro\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_MODE = 'system.filesystem.mode' as const;\n\n/**\n * The filesystem mount path\n *\n * @example /mnt/data\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT = 'system.filesystem.mountpoint' as const;\n\n/**\n * The filesystem state\n *\n * @example used\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_STATE = 'system.filesystem.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"reserved\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED = \"reserved\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * The filesystem type\n *\n * @example ext4\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_TYPE = 'system.filesystem.type' as const;\n\n/**\n * Enum value \"exfat\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT = \"exfat\" as const;\n\n/**\n * Enum value \"ext4\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4 = \"ext4\" as const;\n\n/**\n * Enum value \"fat32\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32 = \"fat32\" as const;\n\n/**\n * Enum value \"hfsplus\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS = \"hfsplus\" as const;\n\n/**\n * Enum value \"ntfs\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS = \"ntfs\" as const;\n\n/**\n * Enum value \"refs\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_REFS = \"refs\" as const;\n\n/**\n * The Linux Slab memory state\n *\n * @example reclaimable\n * @example unreclaimable\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE = 'system.memory.linux.slab.state' as const;\n\n/**\n * Enum value \"reclaimable\" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE = \"reclaimable\" as const;\n\n/**\n * Enum value \"unreclaimable\" for attribute {@link ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE = \"unreclaimable\" as const;\n\n/**\n * The memory state\n *\n * @example free\n * @example cached\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_MEMORY_STATE = 'system.memory.state' as const;\n\n/**\n * Enum value \"buffers\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_BUFFERS = \"buffers\" as const;\n\n/**\n * Enum value \"cached\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_CACHED = \"cached\" as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"shared\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, report shared memory usage with `metric.system.memory.shared` metric\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_SHARED = \"shared\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n *\n * Actual used virtual memory in bytes.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `network.connection.state` instead.\n *\n * @example close_wait\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.connection.state`.\n */\nexport const ATTR_SYSTEM_NETWORK_STATE = 'system.network.state' as const;\n\n/**\n * Enum value \"close\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSE = \"close\" as const;\n\n/**\n * Enum value \"close_wait\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT = \"close_wait\" as const;\n\n/**\n * Enum value \"closing\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSING = \"closing\" as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"established\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED = \"established\" as const;\n\n/**\n * Enum value \"fin_wait_1\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1 = \"fin_wait_1\" as const;\n\n/**\n * Enum value \"fin_wait_2\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2 = \"fin_wait_2\" as const;\n\n/**\n * Enum value \"last_ack\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_LAST_ACK = \"last_ack\" as const;\n\n/**\n * Enum value \"listen\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_LISTEN = \"listen\" as const;\n\n/**\n * Enum value \"syn_recv\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_SYN_RECV = \"syn_recv\" as const;\n\n/**\n * Enum value \"syn_sent\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_SYN_SENT = \"syn_sent\" as const;\n\n/**\n * Enum value \"time_wait\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT = \"time_wait\" as const;\n\n/**\n * The paging access direction\n *\n * @example in\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_DIRECTION = 'system.paging.direction' as const;\n\n/**\n * Enum value \"in\" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_DIRECTION_VALUE_IN = \"in\" as const;\n\n/**\n * Enum value \"out\" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_DIRECTION_VALUE_OUT = \"out\" as const;\n\n/**\n * The paging fault type\n *\n * @example minor\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_FAULT_TYPE = 'system.paging.fault.type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_FAULT_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_SYSTEM_PAGING_FAULT_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_FAULT_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * The memory paging state\n *\n * @example free\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_STATE = 'system.paging.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_PAGING_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_PAGING_STATE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `system.paging.fault.type` instead.\n *\n * @example minor\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 `system.paging.fault.type`.\n */\nexport const ATTR_SYSTEM_PAGING_TYPE = 'system.paging.type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PAGING_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Deprecated, use `process.state` instead.\n *\n * @example running\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 `process.state`.\n */\nexport const ATTR_SYSTEM_PROCESS_STATUS = 'system.process.status' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * Deprecated, use `process.state` instead.\n *\n * @example running\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 `process.state`.\n */\nexport const ATTR_SYSTEM_PROCESSES_STATUS = 'system.processes.status' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * The name of the auto instrumentation agent or distribution, if used.\n *\n * @example parts-unlimited-java\n *\n * @note Official auto instrumentation agents and distributions **SHOULD** set the `telemetry.distro.name` attribute to\n * a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TELEMETRY_DISTRO_NAME = 'telemetry.distro.name' as const;\n\n/**\n * The version string of the auto instrumentation agent or distribution, if used.\n *\n * @example 1.2.3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TELEMETRY_DISTRO_VERSION = 'telemetry.distro.version' as const;\n\n/**\n * The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case).\n *\n * @example org.example.TestCase1.test1\n * @example example/tests/TestCase1.test1\n * @example ExampleTestCase1_test1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_CASE_NAME = 'test.case.name' as const;\n\n/**\n * The status of the actual test case result from test execution.\n *\n * @example pass\n * @example fail\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_CASE_RESULT_STATUS = 'test.case.result.status' as const;\n\n/**\n * Enum value \"fail\" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}.\n *\n * fail\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_CASE_RESULT_STATUS_VALUE_FAIL = \"fail\" as const;\n\n/**\n * Enum value \"pass\" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}.\n *\n * pass\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_CASE_RESULT_STATUS_VALUE_PASS = \"pass\" as const;\n\n/**\n * The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite).\n *\n * @example TestSuite1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_SUITE_NAME = 'test.suite.name' as const;\n\n/**\n * The status of the test suite run.\n *\n * @example success\n * @example failure\n * @example skipped\n * @example aborted\n * @example timed_out\n * @example in_progress\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_SUITE_RUN_STATUS = 'test.suite.run.status' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * aborted\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * failure\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"in_progress\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * in_progress\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS = \"in_progress\" as const;\n\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * skipped\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_SKIPPED = \"skipped\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * success\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"timed_out\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n *\n * timed_out\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT = \"timed_out\" as const;\n\n/**\n * Current \"managed\" thread ID (as opposed to OS thread ID).\n *\n * @example 42\n *\n * @note\n * Examples of where the value can be extracted from:\n *\n * | Language or platform | Source |\n * | --- | --- |\n * | JVM | `Thread.currentThread().threadId()` |\n * | .NET | `Thread.CurrentThread.ManagedThreadId` |\n * | Python | `threading.current_thread().ident` |\n * | Ruby | `Thread.current.object_id` |\n * | C++ | `std::this_thread::get_id()` |\n * | Erlang | `erlang:self()` |\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_THREAD_ID = 'thread.id' as const;\n\n/**\n * Current thread name.\n *\n * @example \"main\"\n *\n * @note\n * Examples of where the value can be extracted from:\n *\n * | Language or platform | Source |\n * | --- | --- |\n * | JVM | `Thread.currentThread().getName()` |\n * | .NET | `Thread.CurrentThread.Name` |\n * | Python | `threading.current_thread().name` |\n * | Ruby | `Thread.current.name` |\n * | Erlang | `erlang:process_info(self(), registered_name)` |\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_THREAD_NAME = 'thread.name' as const;\n\n/**\n * String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection.\n *\n * @example TLS_RSA_WITH_3DES_EDE_CBC_SHA\n * @example TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\n *\n * @note The values allowed for `tls.cipher` **MUST** be one of the `Descriptions` of the [registered TLS Cipher Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CIPHER = 'tls.cipher' as const;\n\n/**\n * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list.\n *\n * @example MII...\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_CERTIFICATE = 'tls.client.certificate' as const;\n\n/**\n * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain.\n *\n * @example [\"MII...\", \"MI...\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_CERTIFICATE_CHAIN = 'tls.client.certificate_chain' as const;\n\n/**\n * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_MD5 = 'tls.client.hash.md5' as const;\n\n/**\n * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 9E393D93138888D288266C2D915214D1D1CCEB2A\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_SHA1 = 'tls.client.hash.sha1' as const;\n\n/**\n * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_SHA256 = 'tls.client.hash.sha256' as const;\n\n/**\n * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client.\n *\n * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_ISSUER = 'tls.client.issuer' as const;\n\n/**\n * A hash that identifies clients based on how they perform an SSL/TLS handshake.\n *\n * @example d4e5b18d6b55c71272893221c96ba240\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_JA3 = 'tls.client.ja3' as const;\n\n/**\n * Date/Time indicating when client certificate is no longer considered valid.\n *\n * @example 2021-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_NOT_AFTER = 'tls.client.not_after' as const;\n\n/**\n * Date/Time indicating when client certificate is first considered valid.\n *\n * @example 1970-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_NOT_BEFORE = 'tls.client.not_before' as const;\n\n/**\n * Deprecated, use `server.address` instead.\n *\n * @example opentelemetry.io\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 */\nexport const ATTR_TLS_CLIENT_SERVER_NAME = 'tls.client.server_name' as const;\n\n/**\n * Distinguished name of subject of the x.509 certificate presented by the client.\n *\n * @example CN=myclient, OU=Documentation Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_SUBJECT = 'tls.client.subject' as const;\n\n/**\n * Array of ciphers offered by the client during the client hello.\n *\n * @example [\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_SUPPORTED_CIPHERS = 'tls.client.supported_ciphers' as const;\n\n/**\n * String indicating the curve used for the given cipher, when applicable\n *\n * @example secp256r1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CURVE = 'tls.curve' as const;\n\n/**\n * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel.\n *\n * @example true\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_ESTABLISHED = 'tls.established' as const;\n\n/**\n * String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case.\n *\n * @example http/1.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_NEXT_PROTOCOL = 'tls.next_protocol' as const;\n\n/**\n * Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_PROTOCOL_NAME = 'tls.protocol.name' as const;\n\n/**\n * Enum value \"ssl\" for attribute {@link ATTR_TLS_PROTOCOL_NAME}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TLS_PROTOCOL_NAME_VALUE_SSL = \"ssl\" as const;\n\n/**\n * Enum value \"tls\" for attribute {@link ATTR_TLS_PROTOCOL_NAME}.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const TLS_PROTOCOL_NAME_VALUE_TLS = \"tls\" as const;\n\n/**\n * Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values)\n *\n * @example 1.2\n * @example 3\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_PROTOCOL_VERSION = 'tls.protocol.version' as const;\n\n/**\n * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation.\n *\n * @example true\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_RESUMED = 'tls.resumed' as const;\n\n/**\n * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list.\n *\n * @example MII...\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_CERTIFICATE = 'tls.server.certificate' as const;\n\n/**\n * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain.\n *\n * @example [\"MII...\", \"MI...\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_CERTIFICATE_CHAIN = 'tls.server.certificate_chain' as const;\n\n/**\n * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_MD5 = 'tls.server.hash.md5' as const;\n\n/**\n * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 9E393D93138888D288266C2D915214D1D1CCEB2A\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_SHA1 = 'tls.server.hash.sha1' as const;\n\n/**\n * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n *\n * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_SHA256 = 'tls.server.hash.sha256' as const;\n\n/**\n * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client.\n *\n * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_ISSUER = 'tls.server.issuer' as const;\n\n/**\n * A hash that identifies servers based on how they perform an SSL/TLS handshake.\n *\n * @example d4e5b18d6b55c71272893221c96ba240\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_JA3S = 'tls.server.ja3s' as const;\n\n/**\n * Date/Time indicating when server certificate is no longer considered valid.\n *\n * @example 2021-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_NOT_AFTER = 'tls.server.not_after' as const;\n\n/**\n * Date/Time indicating when server certificate is first considered valid.\n *\n * @example 1970-01-01T00:00:00.000Z\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_NOT_BEFORE = 'tls.server.not_before' as const;\n\n/**\n * Distinguished name of subject of the x.509 certificate presented by the server.\n *\n * @example CN=myserver, OU=Documentation Team, DC=example, DC=com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_SUBJECT = 'tls.server.subject' as const;\n\n/**\n * Domain extracted from the `url.full`, such as \"opentelemetry.io\".\n *\n * @example www.foo.bar\n * @example opentelemetry.io\n * @example 3.12.167.2\n * @example [1080:0:0:0:8:800:200C:417A]\n *\n * @note In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the domain field. If the URL contains a [literal IPv6 address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by `[` and `]`, the `[` and `]` characters should also be captured in the domain field.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_DOMAIN = 'url.domain' as const;\n\n/**\n * The file extension extracted from the `url.full`, excluding the leading dot.\n *\n * @example png\n * @example gz\n *\n * @note The file extension is only set if it exists, as not every url has a file extension. When the file name has multiple extensions `example.tar.gz`, only the last one should be captured `gz`, not `tar.gz`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_EXTENSION = 'url.extension' as const;\n\n/**\n * Unmodified original URL as seen in the event source.\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example search?q=OpenTelemetry\n *\n * @note In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not.\n * `url.original` might contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case password and username **SHOULD NOT** be redacted and attribute's value **SHOULD** remain the same.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_ORIGINAL = 'url.original' as const;\n\n/**\n * Port extracted from the `url.full`\n *\n * @example 443\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_PORT = 'url.port' as const;\n\n/**\n * The highest registered url domain, stripped of the subdomain.\n *\n * @example example.com\n * @example foo.co.uk\n *\n * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/). For example, the registered domain for `foo.example.com` is `example.com`. Trying to approximate this by simply taking the last two labels will not work well for TLDs such as `co.uk`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_REGISTERED_DOMAIN = 'url.registered_domain' as const;\n\n/**\n * The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\n *\n * @example east\n * @example sub2.sub1\n *\n * @note The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, with no trailing period.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_SUBDOMAIN = 'url.subdomain' as const;\n\n/**\n * The low-cardinality template of an [absolute path reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2).\n *\n * @example /users/{id}\n * @example /users/:id\n * @example /users?id={id}\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_TEMPLATE = 'url.template' as const;\n\n/**\n * The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is `com`.\n *\n * @example com\n * @example co.uk\n *\n * @note This value can be determined precisely with the [public suffix list](https://publicsuffix.org/).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_TOP_LEVEL_DOMAIN = 'url.top_level_domain' as const;\n\n/**\n * User email address.\n *\n * @example a.einstein@example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_EMAIL = 'user.email' as const;\n\n/**\n * User's full name\n *\n * @example Albert Einstein\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_FULL_NAME = 'user.full_name' as const;\n\n/**\n * Unique user hash to correlate information for a user in anonymized form.\n *\n * @example 364fc68eaf4c8acec74a4e52d7d1feaa\n *\n * @note Useful if `user.id` or `user.name` contain confidential information and cannot be used.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_HASH = 'user.hash' as const;\n\n/**\n * Unique identifier of the user.\n *\n * @example S-1-5-21-202424912787-2692429404-2351956786-1000\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_ID = 'user.id' as const;\n\n/**\n * Short name or login/username of the user.\n *\n * @example a.einstein\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_NAME = 'user.name' as const;\n\n/**\n * Array of user roles at the time of the event.\n *\n * @example [\"admin\", \"reporting_user\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_ROLES = 'user.roles' as const;\n\n/**\n * Name of the user-agent extracted from original. Usually refers to the browser's name.\n *\n * @example Safari\n * @example YourApp\n *\n * @note [Example](https://uaparser.dev/#demo) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name **SHOULD** be selected. In such a scenario it should align with `user_agent.version`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_NAME = 'user_agent.name' as const;\n\n/**\n * Human readable operating system name.\n *\n * @example iOS\n * @example Android\n * @example Ubuntu\n *\n * @note For mapping user agent strings to OS names, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_OS_NAME = 'user_agent.os.name' as const;\n\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 * @note For mapping user agent strings to OS versions, libraries such as [ua-parser](https://github.com/ua-parser) can be utilized.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_OS_VERSION = 'user_agent.os.version' as const;\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 */\nexport const ATTR_USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type' as const;\n\n/**\n * Enum value \"bot\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n *\n * Bot source.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = \"bot\" as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n *\n * Synthetic test source.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = \"test\" as const;\n\n/**\n * Version of the user-agent extracted from original. Usually refers to the browser's version\n *\n * @example 14.1.2\n * @example 1.0.0\n *\n * @note [Example](https://uaparser.dev/#demo) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version **SHOULD** be selected. In such a scenario it should align with `user_agent.name`\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_VERSION = 'user_agent.version' as const;\n\n/**\n * The type of garbage collection.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_V8JS_GC_TYPE = 'v8js.gc.type' as const;\n\n/**\n * Enum value \"incremental\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Incremental (Incremental Marking).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_INCREMENTAL = \"incremental\" as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Major (Mark Sweep Compact).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Minor (Scavenge).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Enum value \"weakcb\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n *\n * Weak Callbacks (Process Weak Callbacks).\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_GC_TYPE_VALUE_WEAKCB = \"weakcb\" as const;\n\n/**\n * The name of the space type of heap memory.\n *\n * @note Value can be retrieved from value `space_name` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_V8JS_HEAP_SPACE_NAME = 'v8js.heap.space.name' as const;\n\n/**\n * Enum value \"code_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Code memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE = \"code_space\" as const;\n\n/**\n * Enum value \"large_object_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Large object memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE = \"large_object_space\" as const;\n\n/**\n * Enum value \"map_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Map memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE = \"map_space\" as const;\n\n/**\n * Enum value \"new_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * New memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE = \"new_space\" as const;\n\n/**\n * Enum value \"old_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n *\n * Old memory space.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE = \"old_space\" as const;\n\n/**\n * The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system.\n *\n * @example 123\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_CHANGE_ID = 'vcs.change.id' as const;\n\n/**\n * The state of the change (pull request/merge request/changelist).\n *\n * @example open\n * @example closed\n * @example merged\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_CHANGE_STATE = 'vcs.change.state' as const;\n\n/**\n * Enum value \"closed\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * Closed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_CLOSED = \"closed\" as const;\n\n/**\n * Enum value \"merged\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * Merged indicates that the change has been successfully integrated into the target codebase.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_MERGED = \"merged\" as const;\n\n/**\n * Enum value \"open\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * Open means the change is currently active and under review. It hasn't been merged into the target branch yet, and it's still possible to make changes or add comments.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_OPEN = \"open\" as const;\n\n/**\n * Enum value \"wip\" for attribute {@link ATTR_VCS_CHANGE_STATE}.\n *\n * WIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_CHANGE_STATE_VALUE_WIP = \"wip\" as const;\n\n/**\n * The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary.\n *\n * @example Fixes broken thing\n * @example feat: add my new feature\n * @example [chore] update dependency\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_CHANGE_TITLE = 'vcs.change.title' as const;\n\n/**\n * The type of line change being measured on a branch or change.\n *\n * @example added\n * @example removed\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_LINE_CHANGE_TYPE = 'vcs.line_change.type' as const;\n\n/**\n * Enum value \"added\" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}.\n *\n * How many lines were added.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_LINE_CHANGE_TYPE_VALUE_ADDED = \"added\" as const;\n\n/**\n * Enum value \"removed\" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}.\n *\n * How many lines were removed.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_LINE_CHANGE_TYPE_VALUE_REMOVED = \"removed\" as const;\n\n/**\n * The group owner within the version control system.\n *\n * @example my-org\n * @example myteam\n * @example business-unit\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_OWNER_NAME = 'vcs.owner.name' as const;\n\n/**\n * The name of the version control system provider.\n *\n * @example github\n * @example gitlab\n * @example gitea\n * @example bitbucket\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_PROVIDER_NAME = 'vcs.provider.name' as const;\n\n/**\n * Enum value \"bitbucket\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [Bitbucket](https://bitbucket.org)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_BITBUCKET = \"bitbucket\" as const;\n\n/**\n * Enum value \"gitea\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [Gitea](https://gitea.io)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITEA = \"gitea\" as const;\n\n/**\n * Enum value \"github\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [GitHub](https://github.com)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITHUB = \"github\" as const;\n\n/**\n * Enum value \"gitlab\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * [GitLab](https://gitlab.com)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITLAB = \"gitlab\" as const;\n\n/**\n * Enum value \"gittea\" for attribute {@link ATTR_VCS_PROVIDER_NAME}.\n *\n * Deprecated, use `gitea` instead.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `gitea`.\n */\nexport const VCS_PROVIDER_NAME_VALUE_GITTEA = \"gittea\" as const;\n\n/**\n * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository.\n *\n * @example my-feature-branch\n * @example tag-1-test\n *\n * @note `base` refers to the starting point of a change. For example, `main`\n * would be the base reference of type branch if you've created a new\n * reference of type branch from it and created new commits.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_BASE_NAME = 'vcs.ref.base.name' as const;\n\n/**\n * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN.\n *\n * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc\n * @example main\n * @example 123\n * @example HEAD\n *\n * @note `base` refers to the starting point of a change. For example, `main`\n * would be the base reference of type branch if you've created a new\n * reference of type branch from it and created new commits. The\n * revision can be a full [hash value (see\n * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf),\n * of the recorded change to a ref within a repository pointing to a\n * commit [commit](https://git-scm.com/docs/git-commit) object. It does\n * not necessarily have to be a hash; it can simply define a [revision\n * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)\n * which is an integer that is monotonically increasing. In cases where\n * it is identical to the `ref.base.name`, it **SHOULD** still be included.\n * It is up to the implementer to decide which value to set as the\n * revision based on the VCS system and situational context.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_BASE_REVISION = 'vcs.ref.base.revision' as const;\n\n/**\n * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.\n *\n * @example branch\n * @example tag\n *\n * @note `base` refers to the starting point of a change. For example, `main`\n * would be the base reference of type branch if you've created a new\n * reference of type branch from it and created new commits.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_BASE_TYPE = 'vcs.ref.base.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REF_BASE_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_BASE_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REF_BASE_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_BASE_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository.\n *\n * @example my-feature-branch\n * @example tag-1-test\n *\n * @note `head` refers to where you are right now; the current reference at a\n * given time.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_HEAD_NAME = 'vcs.ref.head.name' as const;\n\n/**\n * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN.\n *\n * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc\n * @example main\n * @example 123\n * @example HEAD\n *\n * @note `head` refers to where you are right now; the current reference at a\n * given time.The revision can be a full [hash value (see\n * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf),\n * of the recorded change to a ref within a repository pointing to a\n * commit [commit](https://git-scm.com/docs/git-commit) object. It does\n * not necessarily have to be a hash; it can simply define a [revision\n * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)\n * which is an integer that is monotonically increasing. In cases where\n * it is identical to the `ref.head.name`, it **SHOULD** still be included.\n * It is up to the implementer to decide which value to set as the\n * revision based on the VCS system and situational context.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_HEAD_REVISION = 'vcs.ref.head.revision' as const;\n\n/**\n * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.\n *\n * @example branch\n * @example tag\n *\n * @note `head` refers to where you are right now; the current reference at a\n * given time.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_HEAD_TYPE = 'vcs.ref.head.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_HEAD_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_HEAD_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.\n *\n * @example branch\n * @example tag\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REF_TYPE = 'vcs.ref.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REF_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REF_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REF_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * Deprecated, use `vcs.change.id` instead.\n *\n * @example 123\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 `vcs.change.id`.\n */\nexport const ATTR_VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id' as const;\n\n/**\n * Deprecated, use `vcs.change.title` instead.\n *\n * @example Fixes broken thing\n * @example feat: add my new feature\n * @example [chore] update dependency\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 `vcs.change.title`.\n */\nexport const ATTR_VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title' as const;\n\n/**\n * The human readable name of the repository. It **SHOULD NOT** include any additional identifier like Group/SubGroup in GitLab or organization in GitHub.\n *\n * @example semantic-conventions\n * @example my-cool-repo\n *\n * @note Due to it only being the name, it can clash with forks of the same\n * repository if collecting telemetry across multiple orgs or groups in\n * the same backends.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_NAME = 'vcs.repository.name' as const;\n\n/**\n * Deprecated, use `vcs.ref.head.name` instead.\n *\n * @example my-feature-branch\n * @example tag-1-test\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 `vcs.ref.head.name`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name' as const;\n\n/**\n * Deprecated, use `vcs.ref.head.revision` instead.\n *\n * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc\n * @example main\n * @example 123\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 `vcs.ref.head.revision`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision' as const;\n\n/**\n * Deprecated, use `vcs.ref.head.type` instead.\n *\n * @example branch\n * @example tag\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 `vcs.ref.head.type`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_TYPE = 'vcs.repository.ref.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}.\n *\n * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}.\n *\n * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REPOSITORY_REF_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * The [canonical URL](https://support.google.com/webmasters/answer/10347851) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser.\n *\n * @example https://github.com/opentelemetry/open-telemetry-collector-contrib\n * @example https://gitlab.com/my-org/my-project/my-projects-project/repo\n *\n * @note In Git Version Control Systems, the canonical URL **SHOULD NOT** include\n * the `.git` extension.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_URL_FULL = 'vcs.repository.url.full' as const;\n\n/**\n * The type of revision comparison.\n *\n * @example ahead\n * @example behind\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REVISION_DELTA_DIRECTION = 'vcs.revision_delta.direction' as const;\n\n/**\n * Enum value \"ahead\" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}.\n *\n * How many revisions the change is ahead of the target ref.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD = \"ahead\" as const;\n\n/**\n * Enum value \"behind\" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}.\n *\n * How many revisions the change is behind the target ref.\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND = \"behind\" as const;\n\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 */\nexport const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description' as const;\n\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 */\nexport const ATTR_WEBENGINE_NAME = 'webengine.name' as const;\n\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 */\nexport const ATTR_WEBENGINE_VERSION = 'webengine.version' as const;\n\n/**\n * The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis.\n *\n * @example SYS1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ZOS_SMF_ID = 'zos.smf.id' as const;\n\n/**\n * The name of the SYSPLEX to which the z/OS system belongs too.\n *\n * @example SYSPLEX1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ZOS_SYSPLEX_NAME = 'zos.sysplex.name' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.d.ts new file mode 100644 index 0000000..8339e9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.d.ts @@ -0,0 +1,142 @@ +/** + * This event indicates that the application has detected substandard UI rendering performance. + * + * @note Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_APP_JANK: "app.jank"; +/** + * This event represents an instantaneous click on the screen of an application. + * + * @note The `app.screen.click` event can be used to indicate that a user has clicked or tapped on the screen portion of an application. Clicks outside of an application's active area **SHOULD NOT** generate this event. This event does not differentiate between touch/mouse down and touch/mouse up. Implementations **SHOULD** give preference to generating this event at the time the click is complete, typically on touch release or mouse up. The location of the click event **MUST** be provided in absolute screen pixels. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_APP_SCREEN_CLICK: "app.screen.click"; +/** + * This event indicates that an application widget has been clicked. + * + * @note Use this event to indicate that visual application component has been clicked, typically through a user's manual interaction. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_APP_WIDGET_CLICK: "app.widget.click"; +/** + * Deprecated. Use `azure.resource.log` instead. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource.log`. + */ +export declare const EVENT_AZ_RESOURCE_LOG: "az.resource.log"; +/** + * Describes Azure Resource Log event, see [Azure Resource Log Top-level Schema](https://learn.microsoft.com/azure/azure-monitor/essentials/resource-logs-schema#top-level-common-schema) for more details. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_AZURE_RESOURCE_LOG: "azure.resource.log"; +/** + * This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals). + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_BROWSER_WEB_VITAL: "browser.web_vital"; +/** + * This event represents an occurrence of a lifecycle transition on Android or iOS platform. + * + * @note The event body fields **MUST** be used to describe the state of the application at the time of the event. + * This event is meant to be used in conjunction with `os.name` [resource semantic convention](/docs/resource/os.md) to identify the mobile operating system (e.g. Android, iOS). + * The `android.app.state` and `ios.app.state` fields are mutually exclusive and **MUST NOT** be used together, each field **MUST** be used with its corresponding `os.name` value. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_DEVICE_APP_LIFECYCLE: "device.app.lifecycle"; +/** + * Defines feature flag evaluation as an event. + * + * @note A `feature_flag.evaluation` event **SHOULD** be emitted whenever a feature flag value is evaluated, which may happen many times over the course of an application lifecycle. For example, a website A/B testing different animations may evaluate a flag each time a button is clicked. A `feature_flag.evaluation` event is emitted on each evaluation even if the result is the same. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_FEATURE_FLAG_EVALUATION: "feature_flag.evaluation"; +/** + * This event describes the assistant message passed to GenAI system. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_ASSISTANT_MESSAGE: "gen_ai.assistant.message"; +/** + * This event describes the Gen AI response message. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.output.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_CHOICE: "gen_ai.choice"; +/** + * Describes the details of a GenAI completion request including chat history and parameters. + * + * @note This event is opt-in and could be used to store input and output details independently from traces. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS: "gen_ai.client.inference.operation.details"; +/** + * This event captures the result of evaluating GenAI output for quality, accuracy, or other characteristics. This event **SHOULD** be parented to GenAI operation span being evaluated when possible or set `gen_ai.response.id` when span id is not available. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_GEN_AI_EVALUATION_RESULT: "gen_ai.evaluation.result"; +/** + * This event describes the system instructions passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.system_instructions` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_SYSTEM_MESSAGE: "gen_ai.system.message"; +/** + * This event describes the response from a tool or function call passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_TOOL_MESSAGE: "gen_ai.tool.message"; +/** + * This event describes the user message passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +export declare const EVENT_GEN_AI_USER_MESSAGE: "gen_ai.user.message"; +/** + * Describes a message sent or received within the context of an RPC call. + * + * @note In the lifetime of an RPC stream, an event for each message sent/received on client and server spans **SHOULD** be created. In case of unary calls message events **SHOULD NOT** be recorded. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_RPC_MESSAGE: "rpc.message"; +/** + * Indicates that a session has ended. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.end` event **SHOULD** be emitted every time a session ends. When a session ends and continues as a new session, this event **SHOULD** be emitted prior to the `session.start` event. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_SESSION_END: "session.end"; +/** + * Indicates that a new session has been started, optionally linking to the prior session. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.start` event **MUST** be emitted every time a session is created. When a new session is created as a continuation of a prior session, the `session.previous_id` **SHOULD** be included in the event. The values of `session.id` and `session.previous_id` **MUST** be different. + * When the `session.start` event contains both `session.id` and `session.previous_id` fields, the event indicates that the previous session has ended. If the session ID in `session.previous_id` has not yet ended via explicit `session.end` event, then the consumer **SHOULD** treat this continuation event as semantically equivalent to `session.end(session.previous_id)` and `session.start(session.id)`. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const EVENT_SESSION_START: "session.start"; +//# sourceMappingURL=experimental_events.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js new file mode 100644 index 0000000..0b5e3e0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js @@ -0,0 +1,163 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EVENT_SESSION_START = exports.EVENT_SESSION_END = exports.EVENT_RPC_MESSAGE = exports.EVENT_GEN_AI_USER_MESSAGE = exports.EVENT_GEN_AI_TOOL_MESSAGE = exports.EVENT_GEN_AI_SYSTEM_MESSAGE = exports.EVENT_GEN_AI_EVALUATION_RESULT = exports.EVENT_GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS = exports.EVENT_GEN_AI_CHOICE = exports.EVENT_GEN_AI_ASSISTANT_MESSAGE = exports.EVENT_FEATURE_FLAG_EVALUATION = exports.EVENT_DEVICE_APP_LIFECYCLE = exports.EVENT_BROWSER_WEB_VITAL = exports.EVENT_AZURE_RESOURCE_LOG = exports.EVENT_AZ_RESOURCE_LOG = exports.EVENT_APP_WIDGET_CLICK = exports.EVENT_APP_SCREEN_CLICK = exports.EVENT_APP_JANK = void 0; +//----------------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-experimental/events.ts.j2 +//----------------------------------------------------------------------------------------------------------------- +/** + * This event indicates that the application has detected substandard UI rendering performance. + * + * @note Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_APP_JANK = 'app.jank'; +/** + * This event represents an instantaneous click on the screen of an application. + * + * @note The `app.screen.click` event can be used to indicate that a user has clicked or tapped on the screen portion of an application. Clicks outside of an application's active area **SHOULD NOT** generate this event. This event does not differentiate between touch/mouse down and touch/mouse up. Implementations **SHOULD** give preference to generating this event at the time the click is complete, typically on touch release or mouse up. The location of the click event **MUST** be provided in absolute screen pixels. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_APP_SCREEN_CLICK = 'app.screen.click'; +/** + * This event indicates that an application widget has been clicked. + * + * @note Use this event to indicate that visual application component has been clicked, typically through a user's manual interaction. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_APP_WIDGET_CLICK = 'app.widget.click'; +/** + * Deprecated. Use `azure.resource.log` instead. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.resource.log`. + */ +exports.EVENT_AZ_RESOURCE_LOG = 'az.resource.log'; +/** + * Describes Azure Resource Log event, see [Azure Resource Log Top-level Schema](https://learn.microsoft.com/azure/azure-monitor/essentials/resource-logs-schema#top-level-common-schema) for more details. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_AZURE_RESOURCE_LOG = 'azure.resource.log'; +/** + * This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals). + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_BROWSER_WEB_VITAL = 'browser.web_vital'; +/** + * This event represents an occurrence of a lifecycle transition on Android or iOS platform. + * + * @note The event body fields **MUST** be used to describe the state of the application at the time of the event. + * This event is meant to be used in conjunction with `os.name` [resource semantic convention](/docs/resource/os.md) to identify the mobile operating system (e.g. Android, iOS). + * The `android.app.state` and `ios.app.state` fields are mutually exclusive and **MUST NOT** be used together, each field **MUST** be used with its corresponding `os.name` value. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_DEVICE_APP_LIFECYCLE = 'device.app.lifecycle'; +/** + * Defines feature flag evaluation as an event. + * + * @note A `feature_flag.evaluation` event **SHOULD** be emitted whenever a feature flag value is evaluated, which may happen many times over the course of an application lifecycle. For example, a website A/B testing different animations may evaluate a flag each time a button is clicked. A `feature_flag.evaluation` event is emitted on each evaluation even if the result is the same. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_FEATURE_FLAG_EVALUATION = 'feature_flag.evaluation'; +/** + * This event describes the assistant message passed to GenAI system. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +exports.EVENT_GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message'; +/** + * This event describes the Gen AI response message. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.output.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +exports.EVENT_GEN_AI_CHOICE = 'gen_ai.choice'; +/** + * Describes the details of a GenAI completion request including chat history and parameters. + * + * @note This event is opt-in and could be used to store input and output details independently from traces. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS = 'gen_ai.client.inference.operation.details'; +/** + * This event captures the result of evaluating GenAI output for quality, accuracy, or other characteristics. This event **SHOULD** be parented to GenAI operation span being evaluated when possible or set `gen_ai.response.id` when span id is not available. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_GEN_AI_EVALUATION_RESULT = 'gen_ai.evaluation.result'; +/** + * This event describes the system instructions passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.system_instructions` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +exports.EVENT_GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message'; +/** + * This event describes the response from a tool or function call passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +exports.EVENT_GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message'; +/** + * This event describes the user message passed to the GenAI model. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event. + */ +exports.EVENT_GEN_AI_USER_MESSAGE = 'gen_ai.user.message'; +/** + * Describes a message sent or received within the context of an RPC call. + * + * @note In the lifetime of an RPC stream, an event for each message sent/received on client and server spans **SHOULD** be created. In case of unary calls message events **SHOULD NOT** be recorded. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_RPC_MESSAGE = 'rpc.message'; +/** + * Indicates that a session has ended. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.end` event **SHOULD** be emitted every time a session ends. When a session ends and continues as a new session, this event **SHOULD** be emitted prior to the `session.start` event. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_SESSION_END = 'session.end'; +/** + * Indicates that a new session has been started, optionally linking to the prior session. + * + * @note For instrumentation that tracks user behavior during user sessions, a `session.start` event **MUST** be emitted every time a session is created. When a new session is created as a continuation of a prior session, the `session.previous_id` **SHOULD** be included in the event. The values of `session.id` and `session.previous_id` **MUST** be different. + * When the `session.start` event contains both `session.id` and `session.previous_id` fields, the event indicates that the previous session has ended. If the session ID in `session.previous_id` has not yet ended via explicit `session.end` event, then the consumer **SHOULD** treat this continuation event as semantically equivalent to `session.end(session.previous_id)` and `session.start(session.id)`. + * + * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.EVENT_SESSION_START = 'session.start'; +//# sourceMappingURL=experimental_events.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js.map new file mode 100644 index 0000000..06c3143 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js.map @@ -0,0 +1 @@ +{"version":3,"file":"experimental_events.js","sourceRoot":"","sources":["../../src/experimental_events.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,mHAAmH;AACnH,mHAAmH;AACnH,mHAAmH;AAEnH;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,UAAmB,CAAC;AAElD;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,kBAA2B,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,kBAA2B,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,iBAA0B,CAAC;AAEhE;;;;GAIG;AACU,QAAA,wBAAwB,GAAG,oBAA6B,CAAC;AAEtE;;;;GAIG;AACU,QAAA,uBAAuB,GAAG,mBAA4B,CAAC;AAEpE;;;;;;;;GAQG;AACU,QAAA,0BAA0B,GAAG,sBAA+B,CAAC;AAE1E;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,yBAAkC,CAAC;AAEhF;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAG,0BAAmC,CAAC;AAElF;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,eAAwB,CAAC;AAE5D;;;;;;GAMG;AACU,QAAA,+CAA+C,GAAG,2CAAoD,CAAC;AAEpH;;;;GAIG;AACU,QAAA,8BAA8B,GAAG,0BAAmC,CAAC;AAElF;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAG,uBAAgC,CAAC;AAE5E;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,qBAA8B,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,qBAA8B,CAAC;AAExE;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,aAAsB,CAAC;AAExD;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,aAAsB,CAAC;AAExD;;;;;;;GAOG;AACU,QAAA,mBAAmB,GAAG,eAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-experimental/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------------\n\n/**\n * This event indicates that the application has detected substandard UI rendering performance.\n *\n * @note Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_APP_JANK = 'app.jank' as const;\n\n/**\n * This event represents an instantaneous click on the screen of an application.\n *\n * @note The `app.screen.click` event can be used to indicate that a user has clicked or tapped on the screen portion of an application. Clicks outside of an application's active area **SHOULD NOT** generate this event. This event does not differentiate between touch/mouse down and touch/mouse up. Implementations **SHOULD** give preference to generating this event at the time the click is complete, typically on touch release or mouse up. The location of the click event **MUST** be provided in absolute screen pixels.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_APP_SCREEN_CLICK = 'app.screen.click' as const;\n\n/**\n * This event indicates that an application widget has been clicked.\n *\n * @note Use this event to indicate that visual application component has been clicked, typically through a user's manual interaction.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_APP_WIDGET_CLICK = 'app.widget.click' as const;\n\n/**\n * Deprecated. Use `azure.resource.log` instead.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `azure.resource.log`.\n */\nexport const EVENT_AZ_RESOURCE_LOG = 'az.resource.log' as const;\n\n/**\n * Describes Azure Resource Log event, see [Azure Resource Log Top-level Schema](https://learn.microsoft.com/azure/azure-monitor/essentials/resource-logs-schema#top-level-common-schema) for more details.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_AZURE_RESOURCE_LOG = 'azure.resource.log' as const;\n\n/**\n * This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals).\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_BROWSER_WEB_VITAL = 'browser.web_vital' as const;\n\n/**\n * This event represents an occurrence of a lifecycle transition on Android or iOS platform.\n *\n * @note The event body fields **MUST** be used to describe the state of the application at the time of the event.\n * This event is meant to be used in conjunction with `os.name` [resource semantic convention](/docs/resource/os.md) to identify the mobile operating system (e.g. Android, iOS).\n * The `android.app.state` and `ios.app.state` fields are mutually exclusive and **MUST NOT** be used together, each field **MUST** be used with its corresponding `os.name` value.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_DEVICE_APP_LIFECYCLE = 'device.app.lifecycle' as const;\n\n/**\n * Defines feature flag evaluation as an event.\n *\n * @note A `feature_flag.evaluation` event **SHOULD** be emitted whenever a feature flag value is evaluated, which may happen many times over the course of an application lifecycle. For example, a website A/B testing different animations may evaluate a flag each time a button is clicked. A `feature_flag.evaluation` event is emitted on each evaluation even if the result is the same.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_FEATURE_FLAG_EVALUATION = 'feature_flag.evaluation' as const;\n\n/**\n * This event describes the assistant message passed to GenAI system.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message' as const;\n\n/**\n * This event describes the Gen AI response message.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.output.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_CHOICE = 'gen_ai.choice' as const;\n\n/**\n * Describes the details of a GenAI completion request including chat history and parameters.\n *\n * @note This event is opt-in and could be used to store input and output details independently from traces.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS = 'gen_ai.client.inference.operation.details' as const;\n\n/**\n * This event captures the result of evaluating GenAI output for quality, accuracy, or other characteristics. This event **SHOULD** be parented to GenAI operation span being evaluated when possible or set `gen_ai.response.id` when span id is not available.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_GEN_AI_EVALUATION_RESULT = 'gen_ai.evaluation.result' as const;\n\n/**\n * This event describes the system instructions passed to the GenAI model.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.system_instructions` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message' as const;\n\n/**\n * This event describes the response from a tool or function call passed to the GenAI model.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message' as const;\n\n/**\n * This event describes the user message passed to the GenAI model.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Chat history is reported on `gen_ai.input.messages` attribute on spans or `gen_ai.client.inference.operation.details` event.\n */\nexport const EVENT_GEN_AI_USER_MESSAGE = 'gen_ai.user.message' as const;\n\n/**\n * Describes a message sent or received within the context of an RPC call.\n *\n * @note In the lifetime of an RPC stream, an event for each message sent/received on client and server spans **SHOULD** be created. In case of unary calls message events **SHOULD NOT** be recorded.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_RPC_MESSAGE = 'rpc.message' as const;\n\n/**\n * Indicates that a session has ended.\n *\n * @note For instrumentation that tracks user behavior during user sessions, a `session.end` event **SHOULD** be emitted every time a session ends. When a session ends and continues as a new session, this event **SHOULD** be emitted prior to the `session.start` event.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_SESSION_END = 'session.end' as const;\n\n/**\n * Indicates that a new session has been started, optionally linking to the prior session.\n *\n * @note For instrumentation that tracks user behavior during user sessions, a `session.start` event **MUST** be emitted every time a session is created. When a new session is created as a continuation of a prior session, the `session.previous_id` **SHOULD** be included in the event. The values of `session.id` and `session.previous_id` **MUST** be different.\n * When the `session.start` event contains both `session.id` and `session.previous_id` fields, the event indicates that the previous session has ended. If the session ID in `session.previous_id` has not yet ended via explicit `session.end` event, then the consumer **SHOULD** treat this continuation event as semantically equivalent to `session.end(session.previous_id)` and `session.start(session.id)`.\n *\n * @experimental This event is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const EVENT_SESSION_START = 'session.start' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.d.ts new file mode 100644 index 0000000..68964a0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.d.ts @@ -0,0 +1,3647 @@ +/** + * The authentication duration for a request. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_AUTHENTICATE_DURATION: "aspnetcore.authentication.authenticate.duration"; +/** + * The total number of times a scheme is challenged. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_CHALLENGES: "aspnetcore.authentication.challenges"; +/** + * The total number of times an authenticated user attempts to access a resource they are not permitted to access. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_FORBIDS: "aspnetcore.authentication.forbids"; +/** + * The total number of times a principal is signed in with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_INS: "aspnetcore.authentication.sign_ins"; +/** + * The total number of times a principal is signed out with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_OUTS: "aspnetcore.authentication.sign_outs"; +/** + * The total number of authorization attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Authorization`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_AUTHORIZATION_ATTEMPTS: "aspnetcore.authorization.attempts"; +/** + * The duration of authenticate attempts. The authenticate metrics is recorded by sign in methods such as PasswordSignInAsync and TwoFactorSignInAsync. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_AUTHENTICATE_DURATION: "aspnetcore.identity.sign_in.authenticate.duration"; +/** + * The total number of check password attempts. Checks that the account is in a state that can log in and that the password is valid using the UserManager.CheckPasswordAsync method. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_CHECK_PASSWORD_ATTEMPTS: "aspnetcore.identity.sign_in.check_password_attempts"; +/** + * The total number of calls to sign in user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_INS: "aspnetcore.identity.sign_in.sign_ins"; +/** + * The total number of calls to sign out user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_OUTS: "aspnetcore.identity.sign_in.sign_outs"; +/** + * The total number of two factor clients forgotten. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_FORGOTTEN: "aspnetcore.identity.sign_in.two_factor_clients_forgotten"; +/** + * The total number of two factor clients remembered. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_REMEMBERED: "aspnetcore.identity.sign_in.two_factor_clients_remembered"; +/** + * The number of check password attempts. Only checks whether the password is valid and not whether the user account is in a state that can log in. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_CHECK_PASSWORD_ATTEMPTS: "aspnetcore.identity.user.check_password_attempts"; +/** + * The duration of user creation operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_CREATE_DURATION: "aspnetcore.identity.user.create.duration"; +/** + * The duration of user deletion operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_DELETE_DURATION: "aspnetcore.identity.user.delete.duration"; +/** + * The total number of token generations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_GENERATED_TOKENS: "aspnetcore.identity.user.generated_tokens"; +/** + * The duration of user update operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_UPDATE_DURATION: "aspnetcore.identity.user.update.duration"; +/** + * The total number of token verification attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_IDENTITY_USER_VERIFY_TOKEN_ATTEMPTS: "aspnetcore.identity.user.verify_token_attempts"; +/** + * Total number of bytes allocated by the memory pool. Allocation occurs when a memory rental request exceeds the available pooled memory. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_ALLOCATED: "aspnetcore.memory_pool.allocated"; +/** + * Total number of bytes evicted from the memory pool. Eviction occurs when idle pooled memory is reclaimed. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_EVICTED: "aspnetcore.memory_pool.evicted"; +/** + * Number of bytes currently pooled and available for reuse. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_POOLED: "aspnetcore.memory_pool.pooled"; +/** + * Total number of bytes rented from the memory pool. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_ASPNETCORE_MEMORY_POOL_RENTED: "aspnetcore.memory_pool.rented"; +/** + * Number of active client instances. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_AZURE_COSMOSDB_CLIENT_ACTIVE_INSTANCE_COUNT: "azure.cosmosdb.client.active_instance.count"; +/** + * [Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_AZURE_COSMOSDB_CLIENT_OPERATION_REQUEST_CHARGE: "azure.cosmosdb.client.operation.request_charge"; +/** + * The number of pipeline runs currently active in the system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_PIPELINE_RUN_ACTIVE: "cicd.pipeline.run.active"; +/** + * Duration of a pipeline run grouped by pipeline, state and result. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_PIPELINE_RUN_DURATION: "cicd.pipeline.run.duration"; +/** + * The number of errors encountered in pipeline runs (eg. compile, test failures). + * + * @note There might be errors in a pipeline run that are non fatal (eg. they are suppressed) or in a parallel stage multiple stages could have a fatal error. + * This means that this error count might not be the same as the count of metric `cicd.pipeline.run.duration` with run result `failure`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_PIPELINE_RUN_ERRORS: "cicd.pipeline.run.errors"; +/** + * The number of errors in a component of the CICD system (eg. controller, scheduler, agent). + * + * @note Errors in pipeline run execution are explicitly excluded. Ie a test failure is not counted in this metric. + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_SYSTEM_ERRORS: "cicd.system.errors"; +/** + * The number of workers on the CICD system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CICD_WORKER_COUNT: "cicd.worker.count"; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific container on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_CPU_TIME: "container.cpu.time"; +/** + * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific container on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_CPU_USAGE: "container.cpu.usage"; +/** + * Disk bytes for the container. + * + * @note The total number of bytes read/written successfully (aggregated from all disks). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_DISK_IO: "container.disk.io"; +/** + * Container filesystem available bytes. + * + * @note In K8s, this metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_FILESYSTEM_AVAILABLE: "container.filesystem.available"; +/** + * Container filesystem capacity. + * + * @note In K8s, this metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_FILESYSTEM_CAPACITY: "container.filesystem.capacity"; +/** + * Container filesystem usage. + * + * @note This may not equal capacity - available. + * + * In K8s, this metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_FILESYSTEM_USAGE: "container.filesystem.usage"; +/** + * Container memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and by subtracting the `container_memory_working_set_bytes` metric from the `container_spec_memory_limit_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_AVAILABLE: "container.memory.available"; +/** + * Container memory paging faults. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_failures_total{failure_type=pgfault, scope=container}` and `container_memory_failures_total{failure_type=pgmajfault, scope=container}`metric. + * In K8s, this metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_PAGING_FAULTS: "container.memory.paging.faults"; +/** + * Container memory RSS. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_rss` metric. + * In K8s, this metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_RSS: "container.memory.rss"; +/** + * Memory usage of the container. + * + * @note Memory usage of the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_USAGE: "container.memory.usage"; +/** + * Container memory working set. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_working_set_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_MEMORY_WORKING_SET: "container.memory.working_set"; +/** + * Network bytes for the container. + * + * @note The number of bytes sent/received on all network interfaces by the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_NETWORK_IO: "container.network.io"; +/** + * The time the container has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CONTAINER_UPTIME: "container.uptime"; +/** + * Deprecated. Use `system.cpu.frequency` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.frequency`. + */ +export declare const METRIC_CPU_FREQUENCY: "cpu.frequency"; +/** + * Deprecated. Use `system.cpu.time` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.time`. + */ +export declare const METRIC_CPU_TIME: "cpu.time"; +/** + * Deprecated. Use `system.cpu.utilization` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.utilization`. + */ +export declare const METRIC_CPU_UTILIZATION: "cpu.utilization"; +/** + * The total number of objects collected inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CPYTHON_GC_COLLECTED_OBJECTS: "cpython.gc.collected_objects"; +/** + * The number of times a generation was collected since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CPYTHON_GC_COLLECTIONS: "cpython.gc.collections"; +/** + * The total number of objects which were found to be uncollectable inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_CPYTHON_GC_UNCOLLECTABLE_OBJECTS: "cpython.gc.uncollectable_objects"; +/** + * The number of connections that are currently in state described by the `state` attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_COUNT: "db.client.connection.count"; +/** + * The time it took to create a new connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_CREATE_TIME: "db.client.connection.create_time"; +/** + * The maximum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_IDLE_MAX: "db.client.connection.idle.max"; +/** + * The minimum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_IDLE_MIN: "db.client.connection.idle.min"; +/** + * The maximum number of open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_MAX: "db.client.connection.max"; +/** + * The number of current pending requests for an open connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS: "db.client.connection.pending_requests"; +/** + * The number of connection timeouts that have occurred trying to obtain a connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_TIMEOUTS: "db.client.connection.timeouts"; +/** + * The time between borrowing a connection and returning it to the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_USE_TIME: "db.client.connection.use_time"; +/** + * The time it took to obtain an open connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_CONNECTION_WAIT_TIME: "db.client.connection.wait_time"; +/** + * Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.create_time` with unit `s`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME: "db.client.connections.create_time"; +/** + * Deprecated, use `db.client.connection.idle.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.max`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MAX: "db.client.connections.idle.max"; +/** + * Deprecated, use `db.client.connection.idle.min` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.min`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MIN: "db.client.connections.idle.min"; +/** + * Deprecated, use `db.client.connection.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.max`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_MAX: "db.client.connections.max"; +/** + * Deprecated, use `db.client.connection.pending_requests` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pending_requests`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS: "db.client.connections.pending_requests"; +/** + * Deprecated, use `db.client.connection.timeouts` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.timeouts`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_TIMEOUTS: "db.client.connections.timeouts"; +/** + * Deprecated, use `db.client.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.count`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_USAGE: "db.client.connections.usage"; +/** + * Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.use_time` with unit `s`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_USE_TIME: "db.client.connections.use_time"; +/** + * Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.wait_time` with unit `s`. + */ +export declare const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME: "db.client.connections.wait_time"; +/** + * Deprecated, use `azure.cosmosdb.client.active_instance.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.active_instance.count`. + */ +export declare const METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT: "db.client.cosmosdb.active_instance.count"; +/** + * Deprecated, use `azure.cosmosdb.client.operation.request_charge` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.operation.request_charge`. + */ +export declare const METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE: "db.client.cosmosdb.operation.request_charge"; +/** + * The actual number of records returned by the database operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS: "db.client.response.returned_rows"; +/** + * Measures the time taken to perform a DNS lookup. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_DNS_LOOKUP_DURATION: "dns.lookup.duration"; +/** + * Number of invocation cold starts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_COLDSTARTS: "faas.coldstarts"; +/** + * Distribution of CPU usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_CPU_USAGE: "faas.cpu_usage"; +/** + * Number of invocation errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_ERRORS: "faas.errors"; +/** + * Measures the duration of the function's initialization, such as a cold start. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_INIT_DURATION: "faas.init_duration"; +/** + * Number of successful invocations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_INVOCATIONS: "faas.invocations"; +/** + * Measures the duration of the function's logic execution. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_INVOKE_DURATION: "faas.invoke_duration"; +/** + * Distribution of max memory usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_MEM_USAGE: "faas.mem_usage"; +/** + * Distribution of net I/O usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_NET_IO: "faas.net_io"; +/** + * Number of invocation timeouts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_FAAS_TIMEOUTS: "faas.timeouts"; +/** + * GenAI operation duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_CLIENT_OPERATION_DURATION: "gen_ai.client.operation.duration"; +/** + * Number of input and output tokens used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_CLIENT_TOKEN_USAGE: "gen_ai.client.token.usage"; +/** + * Generative AI server request duration such as time-to-last byte or last output token. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_SERVER_REQUEST_DURATION: "gen_ai.server.request.duration"; +/** + * Time per output token generated after the first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN: "gen_ai.server.time_per_output_token"; +/** + * Time to generate first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GEN_AI_SERVER_TIME_TO_FIRST_TOKEN: "gen_ai.server.time_to_first_token"; +/** + * Heap size target percentage configured by the user, otherwise 100. + * + * @note The value range is [0.0,100.0]. Computed from `/gc/gogc:percent`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_CONFIG_GOGC: "go.config.gogc"; +/** + * Count of live goroutines. + * + * @note Computed from `/sched/goroutines:goroutines`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_GOROUTINE_COUNT: "go.goroutine.count"; +/** + * Memory allocated to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_ALLOCATED: "go.memory.allocated"; +/** + * Count of allocations to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:objects`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_ALLOCATIONS: "go.memory.allocations"; +/** + * Heap size target for the end of the GC cycle. + * + * @note Computed from `/gc/heap/goal:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_GC_GOAL: "go.memory.gc.goal"; +/** + * Go runtime memory limit configured by the user, if a limit exists. + * + * @note Computed from `/gc/gomemlimit:bytes`. This metric is excluded if the limit obtained from the Go runtime is math.MaxInt64. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_LIMIT: "go.memory.limit"; +/** + * Memory used by the Go runtime. + * + * @note Computed from `(/memory/classes/total:bytes - /memory/classes/heap/released:bytes)`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_MEMORY_USED: "go.memory.used"; +/** + * The number of OS threads that can execute user-level Go code simultaneously. + * + * @note Computed from `/sched/gomaxprocs:threads`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_PROCESSOR_LIMIT: "go.processor.limit"; +/** + * The time goroutines have spent in the scheduler in a runnable state before actually running. + * + * @note Computed from `/sched/latencies:seconds`. Bucket boundaries are provided by the runtime, and are subject to change. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_GO_SCHEDULE_DURATION: "go.schedule.duration"; +/** + * Number of active HTTP requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_ACTIVE_REQUESTS: "http.client.active_requests"; +/** + * The duration of the successfully established outbound HTTP connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_CONNECTION_DURATION: "http.client.connection.duration"; +/** + * Number of outbound HTTP connections that are currently active or idle on the client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_OPEN_CONNECTIONS: "http.client.open_connections"; +/** + * Size of HTTP client request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_REQUEST_BODY_SIZE: "http.client.request.body.size"; +/** + * Size of HTTP client response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE: "http.client.response.body.size"; +/** + * Number of active HTTP server requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_SERVER_ACTIVE_REQUESTS: "http.server.active_requests"; +/** + * Size of HTTP server request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_SERVER_REQUEST_BODY_SIZE: "http.server.request.body.size"; +/** + * Size of HTTP server response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HTTP_SERVER_RESPONSE_BODY_SIZE: "http.server.response.body.size"; +/** + * Remaining fraction of battery charge. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_BATTERY_CHARGE: "hw.battery.charge"; +/** + * Lower limit of battery charge fraction to ensure proper operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_BATTERY_CHARGE_LIMIT: "hw.battery.charge.limit"; +/** + * Time left before battery is completely charged or discharged. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_BATTERY_TIME_LEFT: "hw.battery.time_left"; +/** + * CPU current frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_CPU_SPEED: "hw.cpu.speed"; +/** + * CPU maximum frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_CPU_SPEED_LIMIT: "hw.cpu.speed.limit"; +/** + * Energy consumed by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_ENERGY: "hw.energy"; +/** + * Number of errors encountered by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_ERRORS: "hw.errors"; +/** + * Fan speed in revolutions per minute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_FAN_SPEED: "hw.fan.speed"; +/** + * Speed limit in rpm. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_FAN_SPEED_LIMIT: "hw.fan.speed.limit"; +/** + * Fan speed expressed as a fraction of its maximum speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_FAN_SPEED_RATIO: "hw.fan.speed_ratio"; +/** + * Received and transmitted bytes by the GPU. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_IO: "hw.gpu.io"; +/** + * Size of the GPU memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_MEMORY_LIMIT: "hw.gpu.memory.limit"; +/** + * GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_MEMORY_USAGE: "hw.gpu.memory.usage"; +/** + * Fraction of GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_MEMORY_UTILIZATION: "hw.gpu.memory.utilization"; +/** + * Fraction of time spent in a specific task. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_GPU_UTILIZATION: "hw.gpu.utilization"; +/** + * Ambient (external) temperature of the physical host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_AMBIENT_TEMPERATURE: "hw.host.ambient_temperature"; +/** + * Total energy consumed by the entire physical host, in joules. + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_ENERGY: "hw.host.energy"; +/** + * By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_HEATING_MARGIN: "hw.host.heating_margin"; +/** + * Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred). + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_HOST_POWER: "hw.host.power"; +/** + * Size of the logical disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_LOGICAL_DISK_LIMIT: "hw.logical_disk.limit"; +/** + * Logical disk space usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_LOGICAL_DISK_USAGE: "hw.logical_disk.usage"; +/** + * Logical disk space utilization as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_LOGICAL_DISK_UTILIZATION: "hw.logical_disk.utilization"; +/** + * Size of the memory module. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_MEMORY_SIZE: "hw.memory.size"; +/** + * Link speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_BANDWIDTH_LIMIT: "hw.network.bandwidth.limit"; +/** + * Utilization of the network bandwidth as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_BANDWIDTH_UTILIZATION: "hw.network.bandwidth.utilization"; +/** + * Received and transmitted network traffic in bytes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_IO: "hw.network.io"; +/** + * Received and transmitted network traffic in packets (or frames). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_PACKETS: "hw.network.packets"; +/** + * Link status: `1` (up) or `0` (down). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_NETWORK_UP: "hw.network.up"; +/** + * Endurance remaining for this SSD disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_PHYSICAL_DISK_ENDURANCE_UTILIZATION: "hw.physical_disk.endurance_utilization"; +/** + * Size of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_PHYSICAL_DISK_SIZE: "hw.physical_disk.size"; +/** + * Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_PHYSICAL_DISK_SMART: "hw.physical_disk.smart"; +/** + * Instantaneous power consumed by the component. + * + * @note It is recommended to report `hw.energy` instead of `hw.power` when possible. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER: "hw.power"; +/** + * Maximum power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER_SUPPLY_LIMIT: "hw.power_supply.limit"; +/** + * Current power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER_SUPPLY_USAGE: "hw.power_supply.usage"; +/** + * Utilization of the power supply as a fraction of its maximum output. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_POWER_SUPPLY_UTILIZATION: "hw.power_supply.utilization"; +/** + * Operational status: `1` (true) or `0` (false) for each of the possible states. + * + * @note `hw.status` is currently specified as an *UpDownCounter* but would ideally be represented using a [*StateSet* as defined in OpenMetrics](https://github.com/prometheus/OpenMetrics/blob/v1.0.0/specification/OpenMetrics.md#stateset). This semantic convention will be updated once *StateSet* is specified in OpenTelemetry. This planned change is not expected to have any consequence on the way users query their timeseries backend to retrieve the values of `hw.status` over time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_STATUS: "hw.status"; +/** + * Operations performed by the tape drive. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_TAPE_DRIVE_OPERATIONS: "hw.tape_drive.operations"; +/** + * Temperature in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_TEMPERATURE: "hw.temperature"; +/** + * Temperature limit in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_TEMPERATURE_LIMIT: "hw.temperature.limit"; +/** + * Voltage measured by the sensor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_VOLTAGE: "hw.voltage"; +/** + * Voltage limit in Volts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_VOLTAGE_LIMIT: "hw.voltage.limit"; +/** + * Nominal (expected) voltage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_HW_VOLTAGE_NOMINAL: "hw.voltage.nominal"; +/** + * Number of buffers in the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_BUFFER_COUNT: "jvm.buffer.count"; +/** + * Measure of total memory capacity of buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_BUFFER_MEMORY_LIMIT: "jvm.buffer.memory.limit"; +/** + * Deprecated, use `jvm.buffer.memory.used` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jvm.buffer.memory.used`. + */ +export declare const METRIC_JVM_BUFFER_MEMORY_USAGE: "jvm.buffer.memory.usage"; +/** + * Measure of memory used by buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_BUFFER_MEMORY_USED: "jvm.buffer.memory.used"; +/** + * Number of open file descriptors as reported by the JVM. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_FILE_DESCRIPTOR_COUNT: "jvm.file_descriptor.count"; +/** + * Measure of initial memory requested. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_MEMORY_INIT: "jvm.memory.init"; +/** + * Average CPU load of the whole system for the last minute as reported by the JVM. + * + * @note The value range is [0,n], where n is the number of CPU cores - or a negative number if the value is not available. 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/java.management/java/lang/management/OperatingSystemMXBean.html#getSystemLoadAverage()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_SYSTEM_CPU_LOAD_1M: "jvm.system.cpu.load_1m"; +/** + * Recent CPU utilization for the whole system as reported by the JVM. + * + * @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#getCpuLoad()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_JVM_SYSTEM_CPU_UTILIZATION: "jvm.system.cpu.utilization"; +/** + * Maximum CPU resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_LIMIT: "k8s.container.cpu.limit"; +/** + * The ratio of container CPU usage to its CPU limit. + * + * @note The value range is [0.0,1.0]. A value of 1.0 means the container is using 100% of its CPU limit. If the CPU limit is not set, this metric **SHOULD NOT** be emitted for that container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION: "k8s.container.cpu.limit_utilization"; +/** + * CPU resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_REQUEST: "k8s.container.cpu.request"; +/** + * The ratio of container CPU usage to its CPU request. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION: "k8s.container.cpu.request_utilization"; +/** + * Maximum ephemeral storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_LIMIT: "k8s.container.ephemeral_storage.limit"; +/** + * Ephemeral storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_REQUEST: "k8s.container.ephemeral_storage.request"; +/** + * Maximum memory resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_MEMORY_LIMIT: "k8s.container.memory.limit"; +/** + * Memory resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_MEMORY_REQUEST: "k8s.container.memory.request"; +/** + * Indicates whether the container is currently marked as ready to accept traffic, based on its readiness probe (1 = ready, 0 = not ready). + * + * @note This metric **SHOULD** reflect the value of the `ready` field in the + * [K8s ContainerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_READY: "k8s.container.ready"; +/** + * Describes how many times the container has restarted (since the last counter reset). + * + * @note This value is pulled directly from the K8s API and the value can go indefinitely high and be reset to 0 + * at any time depending on how your kubelet is configured to prune dead containers. + * It is best to not depend too much on the exact value but rather look at it as + * either == 0, in which case you can conclude there were no restarts in the recent past, or > 0, in which case + * you can conclude there were restarts in the recent past, and not try and analyze the value beyond that. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_RESTART_COUNT: "k8s.container.restart.count"; +/** + * Describes the number of K8s containers that are currently in a state for a given reason. + * + * @note All possible container state reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STATUS_REASON: "k8s.container.status.reason"; +/** + * Describes the number of K8s containers that are currently in a given state. + * + * @note All possible container states will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STATUS_STATE: "k8s.container.status.state"; +/** + * Maximum storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STORAGE_LIMIT: "k8s.container.storage.limit"; +/** + * Storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CONTAINER_STORAGE_REQUEST: "k8s.container.storage.request"; +/** + * Deprecated, use `k8s.cronjob.job.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.cronjob.job.active`. + */ +export declare const METRIC_K8S_CRONJOB_ACTIVE_JOBS: "k8s.cronjob.active_jobs"; +/** + * The number of actively running jobs for a cronjob. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_CRONJOB_JOB_ACTIVE: "k8s.cronjob.job.active"; +/** + * Deprecated, use `k8s.daemonset.node.current_scheduled` instead. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.current_scheduled`. + */ +export declare const METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES: "k8s.daemonset.current_scheduled_nodes"; +/** + * Deprecated, use `k8s.daemonset.node.desired_scheduled` instead. + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.desired_scheduled`. + */ +export declare const METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES: "k8s.daemonset.desired_scheduled_nodes"; +/** + * Deprecated, use `k8s.daemonset.node.misscheduled` instead. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.misscheduled`. + */ +export declare const METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES: "k8s.daemonset.misscheduled_nodes"; +/** + * Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED: "k8s.daemonset.node.current_scheduled"; +/** + * Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod). + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED: "k8s.daemonset.node.desired_scheduled"; +/** + * Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED: "k8s.daemonset.node.misscheduled"; +/** + * Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DAEMONSET_NODE_READY: "k8s.daemonset.node.ready"; +/** + * Deprecated, use `k8s.daemonset.node.ready` instead. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.ready`. + */ +export declare const METRIC_K8S_DAEMONSET_READY_NODES: "k8s.daemonset.ready_nodes"; +/** + * Deprecated, use `k8s.deployment.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.available`. + */ +export declare const METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS: "k8s.deployment.available_pods"; +/** + * Deprecated, use `k8s.deployment.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.desired`. + */ +export declare const METRIC_K8S_DEPLOYMENT_DESIRED_PODS: "k8s.deployment.desired_pods"; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DEPLOYMENT_POD_AVAILABLE: "k8s.deployment.pod.available"; +/** + * Number of desired replica pods in this deployment. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_DEPLOYMENT_POD_DESIRED: "k8s.deployment.pod.desired"; +/** + * Deprecated, use `k8s.hpa.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.current`. + */ +export declare const METRIC_K8S_HPA_CURRENT_PODS: "k8s.hpa.current_pods"; +/** + * Deprecated, use `k8s.hpa.pod.desired` instead. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.desired`. + */ +export declare const METRIC_K8S_HPA_DESIRED_PODS: "k8s.hpa.desired_pods"; +/** + * Deprecated, use `k8s.hpa.pod.max` instead. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.max`. + */ +export declare const METRIC_K8S_HPA_MAX_PODS: "k8s.hpa.max_pods"; +/** + * Target average utilization, in percentage, for CPU resource in HPA config. + * + * @note This metric aligns with the `averageUtilization` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_UTILIZATION: "k8s.hpa.metric.target.cpu.average_utilization"; +/** + * Target average value for CPU resource in HPA config. + * + * @note This metric aligns with the `averageValue` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_VALUE: "k8s.hpa.metric.target.cpu.average_value"; +/** + * Target value for CPU resource in HPA config. + * + * @note This metric aligns with the `value` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_METRIC_TARGET_CPU_VALUE: "k8s.hpa.metric.target.cpu.value"; +/** + * Deprecated, use `k8s.hpa.pod.min` instead. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.min`. + */ +export declare const METRIC_K8S_HPA_MIN_PODS: "k8s.hpa.min_pods"; +/** + * Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_CURRENT: "k8s.hpa.pod.current"; +/** + * Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_DESIRED: "k8s.hpa.pod.desired"; +/** + * The upper limit for the number of replica pods to which the autoscaler can scale up. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_MAX: "k8s.hpa.pod.max"; +/** + * The lower limit for the number of replica pods to which the autoscaler can scale down. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_HPA_POD_MIN: "k8s.hpa.pod.min"; +/** + * Deprecated, use `k8s.job.pod.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.active`. + */ +export declare const METRIC_K8S_JOB_ACTIVE_PODS: "k8s.job.active_pods"; +/** + * Deprecated, use `k8s.job.pod.desired_successful` instead. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.desired_successful`. + */ +export declare const METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS: "k8s.job.desired_successful_pods"; +/** + * Deprecated, use `k8s.job.pod.failed` instead. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.failed`. + */ +export declare const METRIC_K8S_JOB_FAILED_PODS: "k8s.job.failed_pods"; +/** + * Deprecated, use `k8s.job.pod.max_parallel` instead. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.max_parallel`. + */ +export declare const METRIC_K8S_JOB_MAX_PARALLEL_PODS: "k8s.job.max_parallel_pods"; +/** + * The number of pending and actively running pods for a job. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_ACTIVE: "k8s.job.pod.active"; +/** + * The desired number of successfully finished pods the job should be run with. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL: "k8s.job.pod.desired_successful"; +/** + * The number of pods which reached phase Failed for a job. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_FAILED: "k8s.job.pod.failed"; +/** + * The max desired number of pods the job should run at any given time. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_MAX_PARALLEL: "k8s.job.pod.max_parallel"; +/** + * The number of pods which reached phase Succeeded for a job. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_JOB_POD_SUCCESSFUL: "k8s.job.pod.successful"; +/** + * Deprecated, use `k8s.job.pod.successful` instead. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.successful`. + */ +export declare const METRIC_K8S_JOB_SUCCESSFUL_PODS: "k8s.job.successful_pods"; +/** + * Describes number of K8s namespaces that are currently in a given phase. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NAMESPACE_PHASE: "k8s.namespace.phase"; +/** + * Deprecated, use `k8s.node.cpu.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.cpu.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_CPU: "k8s.node.allocatable.cpu"; +/** + * Deprecated, use `k8s.node.ephemeral_storage.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.ephemeral_storage.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE: "k8s.node.allocatable.ephemeral_storage"; +/** + * Deprecated, use `k8s.node.memory.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.memory.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_MEMORY: "k8s.node.allocatable.memory"; +/** + * Deprecated, use `k8s.node.pod.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.pod.allocatable`. + */ +export declare const METRIC_K8S_NODE_ALLOCATABLE_PODS: "k8s.node.allocatable.pods"; +/** + * Describes the condition of a particular Node. + * + * @note All possible node condition pairs (type and status) will be reported at each time interval to avoid missing metrics. Condition pairs corresponding to the current conditions' statuses will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CONDITION_STATUS: "k8s.node.condition.status"; +/** + * Amount of cpu allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CPU_ALLOCATABLE: "k8s.node.cpu.allocatable"; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Node on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CPU_TIME: "k8s.node.cpu.time"; +/** + * Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Node on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_CPU_USAGE: "k8s.node.cpu.usage"; +/** + * Amount of ephemeral-storage allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE: "k8s.node.ephemeral_storage.allocatable"; +/** + * Node filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_FILESYSTEM_AVAILABLE: "k8s.node.filesystem.available"; +/** + * Node filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_FILESYSTEM_CAPACITY: "k8s.node.filesystem.capacity"; +/** + * Node filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_FILESYSTEM_USAGE: "k8s.node.filesystem.usage"; +/** + * Amount of memory allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_ALLOCATABLE: "k8s.node.memory.allocatable"; +/** + * Node memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_AVAILABLE: "k8s.node.memory.available"; +/** + * Node memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) fields of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_PAGING_FAULTS: "k8s.node.memory.paging.faults"; +/** + * Node memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_RSS: "k8s.node.memory.rss"; +/** + * Memory usage of the Node. + * + * @note Total memory usage of the Node + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_USAGE: "k8s.node.memory.usage"; +/** + * Node memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_MEMORY_WORKING_SET: "k8s.node.memory.working_set"; +/** + * Node network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_NETWORK_ERRORS: "k8s.node.network.errors"; +/** + * Network bytes for the Node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_NETWORK_IO: "k8s.node.network.io"; +/** + * Amount of pods allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_POD_ALLOCATABLE: "k8s.node.pod.allocatable"; +/** + * The time the Node has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_NODE_UPTIME: "k8s.node.uptime"; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Pod on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_CPU_TIME: "k8s.pod.cpu.time"; +/** + * Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Pod on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_CPU_USAGE: "k8s.pod.cpu.usage"; +/** + * Pod filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_FILESYSTEM_AVAILABLE: "k8s.pod.filesystem.available"; +/** + * Pod filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_FILESYSTEM_CAPACITY: "k8s.pod.filesystem.capacity"; +/** + * Pod filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_FILESYSTEM_USAGE: "k8s.pod.filesystem.usage"; +/** + * Pod memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_AVAILABLE: "k8s.pod.memory.available"; +/** + * Pod memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_PAGING_FAULTS: "k8s.pod.memory.paging.faults"; +/** + * Pod memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_RSS: "k8s.pod.memory.rss"; +/** + * Memory usage of the Pod. + * + * @note Total memory usage of the Pod + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_USAGE: "k8s.pod.memory.usage"; +/** + * Pod memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_MEMORY_WORKING_SET: "k8s.pod.memory.working_set"; +/** + * Pod network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_NETWORK_ERRORS: "k8s.pod.network.errors"; +/** + * Network bytes for the Pod. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_NETWORK_IO: "k8s.pod.network.io"; +/** + * Describes number of K8s Pods that are currently in a given phase. + * + * @note All possible pod phases will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current phase will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_STATUS_PHASE: "k8s.pod.status.phase"; +/** + * Describes the number of K8s Pods that are currently in a state for a given reason. + * + * @note All possible pod status reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_STATUS_REASON: "k8s.pod.status.reason"; +/** + * The time the Pod has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_UPTIME: "k8s.pod.uptime"; +/** + * Pod volume storage space available. + * + * @note This metric is derived from the + * [VolumeStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_AVAILABLE: "k8s.pod.volume.available"; +/** + * Pod volume total capacity. + * + * @note This metric is derived from the + * [VolumeStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_CAPACITY: "k8s.pod.volume.capacity"; +/** + * The total inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.Inodes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_INODE_COUNT: "k8s.pod.volume.inode.count"; +/** + * The free inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesFree](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_INODE_FREE: "k8s.pod.volume.inode.free"; +/** + * The inodes used by the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesUsed](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * This may not be equal to `inodes - free` because filesystem may share inodes with other filesystems. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_INODE_USED: "k8s.pod.volume.inode.used"; +/** + * Pod volume usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [VolumeStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_POD_VOLUME_USAGE: "k8s.pod.volume.usage"; +/** + * Deprecated, use `k8s.replicaset.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.available`. + */ +export declare const METRIC_K8S_REPLICASET_AVAILABLE_PODS: "k8s.replicaset.available_pods"; +/** + * Deprecated, use `k8s.replicaset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.desired`. + */ +export declare const METRIC_K8S_REPLICASET_DESIRED_PODS: "k8s.replicaset.desired_pods"; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICASET_POD_AVAILABLE: "k8s.replicaset.pod.available"; +/** + * Number of desired replica pods in this replicaset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICASET_POD_DESIRED: "k8s.replicaset.pod.desired"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +export declare const METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS: "k8s.replication_controller.available_pods"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +export declare const METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS: "k8s.replication_controller.desired_pods"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS: "k8s.replicationcontroller.available_pods"; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS: "k8s.replicationcontroller.desired_pods"; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicationControllerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerstatus-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE: "k8s.replicationcontroller.pod.available"; +/** + * Number of desired replica pods in this replication controller. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicationControllerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerspec-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED: "k8s.replicationcontroller.pod.desired"; +/** + * The CPU limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_HARD: "k8s.resourcequota.cpu.limit.hard"; +/** + * The CPU limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_USED: "k8s.resourcequota.cpu.limit.used"; +/** + * The CPU requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_HARD: "k8s.resourcequota.cpu.request.hard"; +/** + * The CPU requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_USED: "k8s.resourcequota.cpu.request.used"; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD: "k8s.resourcequota.ephemeral_storage.limit.hard"; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_USED: "k8s.resourcequota.ephemeral_storage.limit.used"; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD: "k8s.resourcequota.ephemeral_storage.request.hard"; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_USED: "k8s.resourcequota.ephemeral_storage.request.used"; +/** + * The huge page requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_HARD: "k8s.resourcequota.hugepage_count.request.hard"; +/** + * The huge page requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_USED: "k8s.resourcequota.hugepage_count.request.used"; +/** + * The memory limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_HARD: "k8s.resourcequota.memory.limit.hard"; +/** + * The memory limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_USED: "k8s.resourcequota.memory.limit.used"; +/** + * The memory requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_HARD: "k8s.resourcequota.memory.request.hard"; +/** + * The memory requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_USED: "k8s.resourcequota.memory.request.used"; +/** + * The object count limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_HARD: "k8s.resourcequota.object_count.hard"; +/** + * The object count limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_USED: "k8s.resourcequota.object_count.used"; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD: "k8s.resourcequota.persistentvolumeclaim_count.hard"; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED: "k8s.resourcequota.persistentvolumeclaim_count.used"; +/** + * The storage requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_HARD: "k8s.resourcequota.storage.request.hard"; +/** + * The storage requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_USED: "k8s.resourcequota.storage.request.used"; +/** + * Deprecated, use `k8s.statefulset.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.current`. + */ +export declare const METRIC_K8S_STATEFULSET_CURRENT_PODS: "k8s.statefulset.current_pods"; +/** + * Deprecated, use `k8s.statefulset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.desired`. + */ +export declare const METRIC_K8S_STATEFULSET_DESIRED_PODS: "k8s.statefulset.desired_pods"; +/** + * The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_CURRENT: "k8s.statefulset.pod.current"; +/** + * Number of desired replica pods in this statefulset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_DESIRED: "k8s.statefulset.pod.desired"; +/** + * The number of replica pods created for this statefulset with a Ready Condition. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_READY: "k8s.statefulset.pod.ready"; +/** + * Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_K8S_STATEFULSET_POD_UPDATED: "k8s.statefulset.pod.updated"; +/** + * Deprecated, use `k8s.statefulset.pod.ready` instead. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.ready`. + */ +export declare const METRIC_K8S_STATEFULSET_READY_PODS: "k8s.statefulset.ready_pods"; +/** + * Deprecated, use `k8s.statefulset.pod.updated` instead. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.updated`. + */ +export declare const METRIC_K8S_STATEFULSET_UPDATED_PODS: "k8s.statefulset.updated_pods"; +/** + * The duration of the MCP request or notification as observed on the sender from the time it was sent until the response or ack is received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_CLIENT_OPERATION_DURATION: "mcp.client.operation.duration"; +/** + * The duration of the MCP session as observed on the MCP client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_CLIENT_SESSION_DURATION: "mcp.client.session.duration"; +/** + * MCP request or notification duration as observed on the receiver from the time it was received until the result or ack is sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_SERVER_OPERATION_DURATION: "mcp.server.operation.duration"; +/** + * The duration of the MCP session as observed on the MCP server. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MCP_SERVER_SESSION_DURATION: "mcp.server.session.duration"; +/** + * Number of messages that were delivered to the application. + * + * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios. + * 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. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES: "messaging.client.consumed.messages"; +/** + * Duration of messaging operation initiated by a producer or consumer client. + * + * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_OPERATION_DURATION: "messaging.client.operation.duration"; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +export declare const METRIC_MESSAGING_CLIENT_PUBLISHED_MESSAGES: "messaging.client.published.messages"; +/** + * Number of messages producer attempted to send to the broker. + * + * @note This metric **MUST NOT** count messages that were created but haven't yet been sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_CLIENT_SENT_MESSAGES: "messaging.client.sent.messages"; +/** + * Duration of processing operation. + * + * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_MESSAGING_PROCESS_DURATION: "messaging.process.duration"; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +export declare const METRIC_MESSAGING_PROCESS_MESSAGES: "messaging.process.messages"; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +export declare const METRIC_MESSAGING_PUBLISH_DURATION: "messaging.publish.duration"; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +export declare const METRIC_MESSAGING_PUBLISH_MESSAGES: "messaging.publish.messages"; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +export declare const METRIC_MESSAGING_RECEIVE_DURATION: "messaging.receive.duration"; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +export declare const METRIC_MESSAGING_RECEIVE_MESSAGES: "messaging.receive.messages"; +/** + * Reports the count of kernel NFS client TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.netudpcnt and svc_stat.nettcpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_NET_COUNT: "nfs.client.net.count"; +/** + * Reports the count of kernel NFS client TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_NET_TCP_CONNECTION_ACCEPTED: "nfs.client.net.tcp.connection.accepted"; +/** + * Reports the count of kernel NFSv4+ client operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_OPERATION_COUNT: "nfs.client.operation.count"; +/** + * Reports the count of kernel NFS client procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_PROCEDURE_COUNT: "nfs.client.procedure.count"; +/** + * Reports the count of kernel NFS client RPC authentication refreshes. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcauthrefresh + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_RPC_AUTHREFRESH_COUNT: "nfs.client.rpc.authrefresh.count"; +/** + * Reports the count of kernel NFS client RPCs sent, regardless of whether they're accepted/rejected by the server. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_RPC_COUNT: "nfs.client.rpc.count"; +/** + * Reports the count of kernel NFS client RPC retransmits. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcretrans + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_CLIENT_RPC_RETRANSMIT_COUNT: "nfs.client.rpc.retransmit.count"; +/** + * Reports the count of kernel NFS server stale file handles. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_FH_STALE counter in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_FH_STALE_COUNT: "nfs.server.fh.stale.count"; +/** + * Reports the count of kernel NFS server bytes returned to receive and transmit (read and write) requests. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_IO_READ and NFSD_STATS_IO_WRITE counters in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_IO: "nfs.server.io"; +/** + * Reports the count of kernel NFS server TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpcnt and svc_stat.netudpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_NET_COUNT: "nfs.server.net.count"; +/** + * Reports the count of kernel NFS server TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_NET_TCP_CONNECTION_ACCEPTED: "nfs.server.net.tcp.connection.accepted"; +/** + * Reports the count of kernel NFSv4+ server operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_OPERATION_COUNT: "nfs.server.operation.count"; +/** + * Reports the count of kernel NFS server procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_PROCEDURE_COUNT: "nfs.server.procedure.count"; +/** + * Reports the kernel NFS server reply cache request count by cache hit status. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_REPCACHE_REQUESTS: "nfs.server.repcache.requests"; +/** + * Reports the count of kernel NFS server RPCs handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt, the count of good RPCs. This metric can have + * an error.type of "format", "auth", or "client" for svc_stat.badfmt, svc_stat.badauth, and svc_stat.badclnt. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_RPC_COUNT: "nfs.server.rpc.count"; +/** + * Reports the count of kernel NFS server available threads. + * + * @note Linux: this metric is taken from the Linux kernel nfsd_th_cnt variable + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NFS_SERVER_THREAD_COUNT: "nfs.server.thread.count"; +/** + * Event loop maximum delay. + * + * @note Value can be retrieved from value `histogram.max` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_MAX: "nodejs.eventloop.delay.max"; +/** + * Event loop mean delay. + * + * @note Value can be retrieved from value `histogram.mean` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_MEAN: "nodejs.eventloop.delay.mean"; +/** + * Event loop minimum delay. + * + * @note Value can be retrieved from value `histogram.min` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_MIN: "nodejs.eventloop.delay.min"; +/** + * Event loop 50 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(50)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_P50: "nodejs.eventloop.delay.p50"; +/** + * Event loop 90 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(90)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_P90: "nodejs.eventloop.delay.p90"; +/** + * Event loop 99 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(99)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_P99: "nodejs.eventloop.delay.p99"; +/** + * Event loop standard deviation delay. + * + * @note Value can be retrieved from value `histogram.stddev` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_DELAY_STDDEV: "nodejs.eventloop.delay.stddev"; +/** + * Cumulative duration of time the event loop has been in each state. + * + * @note Value can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_TIME: "nodejs.eventloop.time"; +/** + * Event loop utilization. + * + * @note The value range is [0.0, 1.0] and can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_NODEJS_EVENTLOOP_UTILIZATION: "nodejs.eventloop.utilization"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_HARD: "openshift.clusterquota.cpu.limit.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_USED: "openshift.clusterquota.cpu.limit.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_HARD: "openshift.clusterquota.cpu.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_USED: "openshift.clusterquota.cpu.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD: "openshift.clusterquota.ephemeral_storage.limit.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_USED: "openshift.clusterquota.ephemeral_storage.limit.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD: "openshift.clusterquota.ephemeral_storage.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_USED: "openshift.clusterquota.ephemeral_storage.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_HARD: "openshift.clusterquota.hugepage_count.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_USED: "openshift.clusterquota.hugepage_count.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_HARD: "openshift.clusterquota.memory.limit.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_USED: "openshift.clusterquota.memory.limit.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_HARD: "openshift.clusterquota.memory.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_USED: "openshift.clusterquota.memory.request.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_HARD: "openshift.clusterquota.object_count.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_USED: "openshift.clusterquota.object_count.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD: "openshift.clusterquota.persistentvolumeclaim_count.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED: "openshift.clusterquota.persistentvolumeclaim_count.used"; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_HARD: "openshift.clusterquota.storage.request.hard"; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_USED: "openshift.clusterquota.storage.request.used"; +/** + * The number of log records for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_log_records`), rejected log records **MUST** count as failed and only non-rejected log records count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_LOG_EXPORTED: "otel.sdk.exporter.log.exported"; +/** + * The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_LOG_INFLIGHT: "otel.sdk.exporter.log.inflight"; +/** + * The number of metric data points for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_data_points`), rejected data points **MUST** count as failed and only non-rejected data points count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_EXPORTED: "otel.sdk.exporter.metric_data_point.exported"; +/** + * The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_INFLIGHT: "otel.sdk.exporter.metric_data_point.inflight"; +/** + * The duration of exporting a batch of telemetry records. + * + * @note This metric defines successful operations using the full success definitions for [http](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1) + * and [grpc](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success). Anything else is defined as an unsuccessful operation. For successful + * operations, `error.type` **MUST NOT** be set. For unsuccessful export operations, `error.type` **MUST** contain a relevant failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_OPERATION_DURATION: "otel.sdk.exporter.operation.duration"; +/** + * The number of spans for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans **MUST** count as failed and only non-rejected spans count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED: "otel.sdk.exporter.span.exported"; +/** + * Deprecated, use `otel.sdk.exporter.span.exported` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.exported`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT: "otel.sdk.exporter.span.exported.count"; +/** + * The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT: "otel.sdk.exporter.span.inflight"; +/** + * Deprecated, use `otel.sdk.exporter.span.inflight` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.inflight`. + */ +export declare const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT: "otel.sdk.exporter.span.inflight.count"; +/** + * The number of logs submitted to enabled SDK Loggers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_LOG_CREATED: "otel.sdk.log.created"; +/** + * The duration of the collect operation of the metric reader. + * + * @note For successful collections, `error.type` **MUST NOT** be set. For failed collections, `error.type` **SHOULD** contain the failure cause. + * It can happen that metrics collection is successful for some MetricProducers, while others fail. In that case `error.type` **SHOULD** be set to any of the failure causes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_METRIC_READER_COLLECTION_DURATION: "otel.sdk.metric_reader.collection.duration"; +/** + * The number of log records for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter, + * not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED: "otel.sdk.processor.log.processed"; +/** + * The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold. + * + * @note Only applies to Log Record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY: "otel.sdk.processor.log.queue.capacity"; +/** + * The number of log records in the queue of a given instance of an SDK log processor. + * + * @note Only applies to log record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE: "otel.sdk.processor.log.queue.size"; +/** + * The number of spans for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED: "otel.sdk.processor.span.processed"; +/** + * Deprecated, use `otel.sdk.processor.span.processed` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.processor.span.processed`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT: "otel.sdk.processor.span.processed.count"; +/** + * The maximum number of spans the queue of a given instance of an SDK span processor can hold. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY: "otel.sdk.processor.span.queue.capacity"; +/** + * The number of spans in the queue of a given instance of an SDK span processor. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE: "otel.sdk.processor.span.queue.size"; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export declare const METRIC_OTEL_SDK_SPAN_ENDED: "otel.sdk.span.ended"; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +export declare const METRIC_OTEL_SDK_SPAN_ENDED_COUNT: "otel.sdk.span.ended.count"; +/** + * The number of created spans with `recording=true` for which the end operation has not been called yet. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_SPAN_LIVE: "otel.sdk.span.live"; +/** + * Deprecated, use `otel.sdk.span.live` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.span.live`. + */ +export declare const METRIC_OTEL_SDK_SPAN_LIVE_COUNT: "otel.sdk.span.live.count"; +/** + * The number of created spans. + * + * @note Implementations **MUST** record this metric for all spans, even for non-recording ones. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_OTEL_SDK_SPAN_STARTED: "otel.sdk.span.started"; +/** + * Number of times the process has been context switched. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_CONTEXT_SWITCHES: "process.context_switches"; +/** + * Total CPU seconds broken down by different states. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_CPU_TIME: "process.cpu.time"; +/** + * Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_CPU_UTILIZATION: "process.cpu.utilization"; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_DISK_IO: "process.disk.io"; +/** + * The amount of physical memory in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_MEMORY_USAGE: "process.memory.usage"; +/** + * The amount of committed virtual memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_MEMORY_VIRTUAL: "process.memory.virtual"; +/** + * Network bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_NETWORK_IO: "process.network.io"; +/** + * Deprecated, use `process.unix.file_descriptor.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.unix.file_descriptor.count`. + */ +export declare const METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT: "process.open_file_descriptor.count"; +/** + * Number of page faults the process has made. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_PAGING_FAULTS: "process.paging.faults"; +/** + * Process threads count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_THREAD_COUNT: "process.thread.count"; +/** + * Number of unix file descriptors in use by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT: "process.unix.file_descriptor.count"; +/** + * The time the process has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_UPTIME: "process.uptime"; +/** + * Number of handles held by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_PROCESS_WINDOWS_HANDLE_COUNT: "process.windows.handle.count"; +/** + * Measures the duration of outbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC client span, the metric value + * **SHOULD** be the same as the RPC client span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_CLIENT_CALL_DURATION: "rpc.client.call.duration"; +/** + * Deprecated, use `rpc.client.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.client.call.duration` with unit `s`. + */ +export declare const METRIC_RPC_CLIENT_DURATION: "rpc.client.duration"; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_CLIENT_REQUEST_SIZE: "rpc.client.request.size"; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_CLIENT_REQUESTS_PER_RPC: "rpc.client.requests_per_rpc"; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_CLIENT_RESPONSE_SIZE: "rpc.client.response.size"; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_CLIENT_RESPONSES_PER_RPC: "rpc.client.responses_per_rpc"; +/** + * Measures the duration of inbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC server span, the metric value + * **SHOULD** be the same as the RPC server span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_SERVER_CALL_DURATION: "rpc.server.call.duration"; +/** + * Deprecated, use `rpc.server.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.server.call.duration` with unit `s`. + */ +export declare const METRIC_RPC_SERVER_DURATION: "rpc.server.duration"; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_SERVER_REQUEST_SIZE: "rpc.server.request.size"; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming** : This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_SERVER_REQUESTS_PER_RPC: "rpc.server.requests_per_rpc"; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_RPC_SERVER_RESPONSE_SIZE: "rpc.server.response.size"; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +export declare const METRIC_RPC_SERVER_RESPONSES_PER_RPC: "rpc.server.responses_per_rpc"; +/** + * Operating frequency of the logical CPU in Hertz. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_FREQUENCY: "system.cpu.frequency"; +/** + * Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_LOGICAL_COUNT: "system.cpu.logical.count"; +/** + * Reports the number of actual physical processor cores on the hardware. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_PHYSICAL_COUNT: "system.cpu.physical.count"; +/** + * Seconds each logical CPU spent on each mode. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_TIME: "system.cpu.time"; +/** + * For each logical CPU, the utilization is calculated as the change in cumulative CPU time (cpu.time) over a measurement interval, divided by the elapsed time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_CPU_UTILIZATION: "system.cpu.utilization"; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_IO: "system.disk.io"; +/** + * Time disk spent activated. + * + * @note The real elapsed time ("wall clock") used in the I/O path (time from operations running in parallel are not counted). Measured as: + * + * - Linux: Field 13 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: The complement of + * ["Disk% Idle Time"](https://learn.microsoft.com/archive/blogs/askcore/windows-performance-monitor-disk-counters-explained#windows-performance-monitor-disk-counters-explained) + * performance counter: `uptime * (100 - "Disk\% Idle Time") / 100` + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_IO_TIME: "system.disk.io_time"; +/** + * The total storage capacity of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_LIMIT: "system.disk.limit"; +/** + * The number of disk reads/writes merged into single physical disk access operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_MERGED: "system.disk.merged"; +/** + * Sum of the time each operation took to complete. + * + * @note Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as: + * + * - Linux: Fields 7 & 11 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: "Avg. Disk sec/Read" perf counter multiplied by "Disk Reads/sec" perf counter (similar for Writes) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_OPERATION_TIME: "system.disk.operation_time"; +/** + * Disk operations count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_DISK_OPERATIONS: "system.disk.operations"; +/** + * The total storage capacity of the filesystem. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_FILESYSTEM_LIMIT: "system.filesystem.limit"; +/** + * Reports a filesystem's space usage across different states. + * + * @note The sum of all `system.filesystem.usage` values over the different `system.filesystem.state` attributes + * **SHOULD** equal the total storage capacity of the filesystem, that is `system.filesystem.limit`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_FILESYSTEM_USAGE: "system.filesystem.usage"; +/** + * Fraction of filesystem bytes used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_FILESYSTEM_UTILIZATION: "system.filesystem.utilization"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.available`. + */ +export declare const METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE: "system.linux.memory.available"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.usage`. + */ +export declare const METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE: "system.linux.memory.slab.usage"; +/** + * Total virtual memory available in the system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_LIMIT: "system.memory.limit"; +/** + * An estimate of how much memory is available for starting new applications, without causing swapping. + * + * @note This is an alternative to `system.memory.usage` metric with `state=free`. + * Linux starting from 3.14 exports "available" memory. It takes "free" memory as a baseline, and then factors in kernel-specific values. + * This is supposed to be more accurate than just "free" memory. + * For reference, see the calculations [here](https://superuser.com/a/980821). + * See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE: "system.memory.linux.available"; +/** + * Reports the memory used by the Linux kernel for managing caches of frequently used objects. + * + * @note The sum over the `reclaimable` and `unreclaimable` state values in `memory.linux.slab.usage` **SHOULD** be equal to the total slab memory available on the system. + * Note that the total slab memory is not constant and may vary over time. + * See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE: "system.memory.linux.slab.usage"; +/** + * Shared memory used (mostly by tmpfs). + * + * @note Equivalent of `shared` from [`free` command](https://man7.org/linux/man-pages/man1/free.1.html) or + * `Shmem` from [`/proc/meminfo`](https://man7.org/linux/man-pages/man5/proc.5.html)" + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_SHARED: "system.memory.shared"; +/** + * Reports memory in use by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_USAGE: "system.memory.usage"; +/** + * Percentage of memory bytes in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_MEMORY_UTILIZATION: "system.memory.utilization"; +/** + * The number of connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_CONNECTION_COUNT: "system.network.connection.count"; +/** + * Deprecated, use `system.network.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.connection.count`. + */ +export declare const METRIC_SYSTEM_NETWORK_CONNECTIONS: "system.network.connections"; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.dropped`. + */ +export declare const METRIC_SYSTEM_NETWORK_DROPPED: "system.network.dropped"; +/** + * Count of network errors detected. + * + * @note Measured as: + * + * - Linux: the `errs` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)). + * - Windows: [`InErrors`/`OutErrors`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_ERRORS: "system.network.errors"; +/** + * The number of bytes transmitted and received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_IO: "system.network.io"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_PACKET_COUNT: "system.network.packet.count"; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_NETWORK_PACKET_DROPPED: "system.network.packet.dropped"; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.count`. + */ +export declare const METRIC_SYSTEM_NETWORK_PACKETS: "system.network.packets"; +/** + * The number of page faults. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_FAULTS: "system.paging.faults"; +/** + * The number of paging operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_OPERATIONS: "system.paging.operations"; +/** + * Unix swap or windows pagefile usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_USAGE: "system.paging.usage"; +/** + * Swap (unix) or pagefile (windows) utilization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PAGING_UTILIZATION: "system.paging.utilization"; +/** + * Total number of processes in each state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PROCESS_COUNT: "system.process.count"; +/** + * Total number of processes created over uptime of the host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_PROCESS_CREATED: "system.process.created"; +/** + * The time the system has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_SYSTEM_UPTIME: "system.uptime"; +/** + * Garbage collection duration. + * + * @note The values can be retrieved from [`perf_hooks.PerformanceObserver(...).observe({ entryTypes: ['gc'] })`](https://nodejs.org/api/perf_hooks.html#performanceobserverobserveoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_GC_DURATION: "v8js.gc.duration"; +/** + * Deprecated, use `v8js.memory.heap.space.available_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.available_size`. + */ +export declare const METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE: "v8js.heap.space.available_size"; +/** + * Deprecated, use `v8js.memory.heap.space.physical_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.physical_size`. + */ +export declare const METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE: "v8js.heap.space.physical_size"; +/** + * Total heap memory size pre-allocated. + * + * @note The value can be retrieved from value `space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_LIMIT: "v8js.memory.heap.limit"; +/** + * Heap space available size. + * + * @note Value can be retrieved from value `space_available_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "v8js.memory.heap.space.available_size"; +/** + * Committed size of a heap space. + * + * @note Value can be retrieved from value `physical_space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "v8js.memory.heap.space.physical_size"; +/** + * Heap Memory size allocated. + * + * @note The value can be retrieved from value `space_used_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_V8JS_MEMORY_HEAP_USED: "v8js.memory.heap.used"; +/** + * The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_COUNT: "vcs.change.count"; +/** + * The time duration a change (pull request/merge request/changelist) has been in a given state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_DURATION: "vcs.change.duration"; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_TIME_TO_APPROVAL: "vcs.change.time_to_approval"; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get merged into the target(base) ref. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CHANGE_TIME_TO_MERGE: "vcs.change.time_to_merge"; +/** + * The number of unique contributors to a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_CONTRIBUTOR_COUNT: "vcs.contributor.count"; +/** + * The number of refs of type branch or tag in a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_COUNT: "vcs.ref.count"; +/** + * The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.line_change.type` value. For example if a ref added 3 lines and removed 2 lines, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers). + * If number of lines added/removed should be calculated from the start of time, then `vcs.ref.base.name` **SHOULD** be set to an empty string. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_LINES_DELTA: "vcs.ref.lines_delta"; +/** + * The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.revision_delta.direction` value. For example if branch `a` is 3 commits behind and 2 commits ahead of `trunk`, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers) and `vcs.ref.base.name` is set to `trunk`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_REVISIONS_DELTA: "vcs.ref.revisions_delta"; +/** + * Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REF_TIME: "vcs.ref.time"; +/** + * The number of repositories in an organization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export declare const METRIC_VCS_REPOSITORY_COUNT: "vcs.repository.count"; +//# sourceMappingURL=experimental_metrics.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js new file mode 100644 index 0000000..0f6ed22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js @@ -0,0 +1,3676 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.METRIC_DB_CLIENT_CONNECTION_CREATE_TIME = exports.METRIC_DB_CLIENT_CONNECTION_COUNT = exports.METRIC_CPYTHON_GC_UNCOLLECTABLE_OBJECTS = exports.METRIC_CPYTHON_GC_COLLECTIONS = exports.METRIC_CPYTHON_GC_COLLECTED_OBJECTS = exports.METRIC_CPU_UTILIZATION = exports.METRIC_CPU_TIME = exports.METRIC_CPU_FREQUENCY = exports.METRIC_CONTAINER_UPTIME = exports.METRIC_CONTAINER_NETWORK_IO = exports.METRIC_CONTAINER_MEMORY_WORKING_SET = exports.METRIC_CONTAINER_MEMORY_USAGE = exports.METRIC_CONTAINER_MEMORY_RSS = exports.METRIC_CONTAINER_MEMORY_PAGING_FAULTS = exports.METRIC_CONTAINER_MEMORY_AVAILABLE = exports.METRIC_CONTAINER_FILESYSTEM_USAGE = exports.METRIC_CONTAINER_FILESYSTEM_CAPACITY = exports.METRIC_CONTAINER_FILESYSTEM_AVAILABLE = exports.METRIC_CONTAINER_DISK_IO = exports.METRIC_CONTAINER_CPU_USAGE = exports.METRIC_CONTAINER_CPU_TIME = exports.METRIC_CICD_WORKER_COUNT = exports.METRIC_CICD_SYSTEM_ERRORS = exports.METRIC_CICD_PIPELINE_RUN_ERRORS = exports.METRIC_CICD_PIPELINE_RUN_DURATION = exports.METRIC_CICD_PIPELINE_RUN_ACTIVE = exports.METRIC_AZURE_COSMOSDB_CLIENT_OPERATION_REQUEST_CHARGE = exports.METRIC_AZURE_COSMOSDB_CLIENT_ACTIVE_INSTANCE_COUNT = exports.METRIC_ASPNETCORE_MEMORY_POOL_RENTED = exports.METRIC_ASPNETCORE_MEMORY_POOL_POOLED = exports.METRIC_ASPNETCORE_MEMORY_POOL_EVICTED = exports.METRIC_ASPNETCORE_MEMORY_POOL_ALLOCATED = exports.METRIC_ASPNETCORE_IDENTITY_USER_VERIFY_TOKEN_ATTEMPTS = exports.METRIC_ASPNETCORE_IDENTITY_USER_UPDATE_DURATION = exports.METRIC_ASPNETCORE_IDENTITY_USER_GENERATED_TOKENS = exports.METRIC_ASPNETCORE_IDENTITY_USER_DELETE_DURATION = exports.METRIC_ASPNETCORE_IDENTITY_USER_CREATE_DURATION = exports.METRIC_ASPNETCORE_IDENTITY_USER_CHECK_PASSWORD_ATTEMPTS = exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_REMEMBERED = exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_FORGOTTEN = exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_OUTS = exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_INS = exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_CHECK_PASSWORD_ATTEMPTS = exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_AUTHENTICATE_DURATION = exports.METRIC_ASPNETCORE_AUTHORIZATION_ATTEMPTS = exports.METRIC_ASPNETCORE_AUTHENTICATION_SIGN_OUTS = exports.METRIC_ASPNETCORE_AUTHENTICATION_SIGN_INS = exports.METRIC_ASPNETCORE_AUTHENTICATION_FORBIDS = exports.METRIC_ASPNETCORE_AUTHENTICATION_CHALLENGES = exports.METRIC_ASPNETCORE_AUTHENTICATION_AUTHENTICATE_DURATION = void 0; +exports.METRIC_HTTP_SERVER_REQUEST_BODY_SIZE = exports.METRIC_HTTP_SERVER_ACTIVE_REQUESTS = exports.METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE = exports.METRIC_HTTP_CLIENT_REQUEST_BODY_SIZE = exports.METRIC_HTTP_CLIENT_OPEN_CONNECTIONS = exports.METRIC_HTTP_CLIENT_CONNECTION_DURATION = exports.METRIC_HTTP_CLIENT_ACTIVE_REQUESTS = exports.METRIC_GO_SCHEDULE_DURATION = exports.METRIC_GO_PROCESSOR_LIMIT = exports.METRIC_GO_MEMORY_USED = exports.METRIC_GO_MEMORY_LIMIT = exports.METRIC_GO_MEMORY_GC_GOAL = exports.METRIC_GO_MEMORY_ALLOCATIONS = exports.METRIC_GO_MEMORY_ALLOCATED = exports.METRIC_GO_GOROUTINE_COUNT = exports.METRIC_GO_CONFIG_GOGC = exports.METRIC_GEN_AI_SERVER_TIME_TO_FIRST_TOKEN = exports.METRIC_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN = exports.METRIC_GEN_AI_SERVER_REQUEST_DURATION = exports.METRIC_GEN_AI_CLIENT_TOKEN_USAGE = exports.METRIC_GEN_AI_CLIENT_OPERATION_DURATION = exports.METRIC_FAAS_TIMEOUTS = exports.METRIC_FAAS_NET_IO = exports.METRIC_FAAS_MEM_USAGE = exports.METRIC_FAAS_INVOKE_DURATION = exports.METRIC_FAAS_INVOCATIONS = exports.METRIC_FAAS_INIT_DURATION = exports.METRIC_FAAS_ERRORS = exports.METRIC_FAAS_CPU_USAGE = exports.METRIC_FAAS_COLDSTARTS = exports.METRIC_DNS_LOOKUP_DURATION = exports.METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS = exports.METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE = exports.METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT = exports.METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME = exports.METRIC_DB_CLIENT_CONNECTIONS_USE_TIME = exports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = exports.METRIC_DB_CLIENT_CONNECTIONS_TIMEOUTS = exports.METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS = exports.METRIC_DB_CLIENT_CONNECTIONS_MAX = exports.METRIC_DB_CLIENT_CONNECTIONS_IDLE_MIN = exports.METRIC_DB_CLIENT_CONNECTIONS_IDLE_MAX = exports.METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME = exports.METRIC_DB_CLIENT_CONNECTION_WAIT_TIME = exports.METRIC_DB_CLIENT_CONNECTION_USE_TIME = exports.METRIC_DB_CLIENT_CONNECTION_TIMEOUTS = exports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = exports.METRIC_DB_CLIENT_CONNECTION_MAX = exports.METRIC_DB_CLIENT_CONNECTION_IDLE_MIN = exports.METRIC_DB_CLIENT_CONNECTION_IDLE_MAX = void 0; +exports.METRIC_JVM_SYSTEM_CPU_LOAD_1M = exports.METRIC_JVM_MEMORY_INIT = exports.METRIC_JVM_FILE_DESCRIPTOR_COUNT = exports.METRIC_JVM_BUFFER_MEMORY_USED = exports.METRIC_JVM_BUFFER_MEMORY_USAGE = exports.METRIC_JVM_BUFFER_MEMORY_LIMIT = exports.METRIC_JVM_BUFFER_COUNT = exports.METRIC_HW_VOLTAGE_NOMINAL = exports.METRIC_HW_VOLTAGE_LIMIT = exports.METRIC_HW_VOLTAGE = exports.METRIC_HW_TEMPERATURE_LIMIT = exports.METRIC_HW_TEMPERATURE = exports.METRIC_HW_TAPE_DRIVE_OPERATIONS = exports.METRIC_HW_STATUS = exports.METRIC_HW_POWER_SUPPLY_UTILIZATION = exports.METRIC_HW_POWER_SUPPLY_USAGE = exports.METRIC_HW_POWER_SUPPLY_LIMIT = exports.METRIC_HW_POWER = exports.METRIC_HW_PHYSICAL_DISK_SMART = exports.METRIC_HW_PHYSICAL_DISK_SIZE = exports.METRIC_HW_PHYSICAL_DISK_ENDURANCE_UTILIZATION = exports.METRIC_HW_NETWORK_UP = exports.METRIC_HW_NETWORK_PACKETS = exports.METRIC_HW_NETWORK_IO = exports.METRIC_HW_NETWORK_BANDWIDTH_UTILIZATION = exports.METRIC_HW_NETWORK_BANDWIDTH_LIMIT = exports.METRIC_HW_MEMORY_SIZE = exports.METRIC_HW_LOGICAL_DISK_UTILIZATION = exports.METRIC_HW_LOGICAL_DISK_USAGE = exports.METRIC_HW_LOGICAL_DISK_LIMIT = exports.METRIC_HW_HOST_POWER = exports.METRIC_HW_HOST_HEATING_MARGIN = exports.METRIC_HW_HOST_ENERGY = exports.METRIC_HW_HOST_AMBIENT_TEMPERATURE = exports.METRIC_HW_GPU_UTILIZATION = exports.METRIC_HW_GPU_MEMORY_UTILIZATION = exports.METRIC_HW_GPU_MEMORY_USAGE = exports.METRIC_HW_GPU_MEMORY_LIMIT = exports.METRIC_HW_GPU_IO = exports.METRIC_HW_FAN_SPEED_RATIO = exports.METRIC_HW_FAN_SPEED_LIMIT = exports.METRIC_HW_FAN_SPEED = exports.METRIC_HW_ERRORS = exports.METRIC_HW_ENERGY = exports.METRIC_HW_CPU_SPEED_LIMIT = exports.METRIC_HW_CPU_SPEED = exports.METRIC_HW_BATTERY_TIME_LEFT = exports.METRIC_HW_BATTERY_CHARGE_LIMIT = exports.METRIC_HW_BATTERY_CHARGE = exports.METRIC_HTTP_SERVER_RESPONSE_BODY_SIZE = void 0; +exports.METRIC_K8S_JOB_SUCCESSFUL_PODS = exports.METRIC_K8S_JOB_POD_SUCCESSFUL = exports.METRIC_K8S_JOB_POD_MAX_PARALLEL = exports.METRIC_K8S_JOB_POD_FAILED = exports.METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL = exports.METRIC_K8S_JOB_POD_ACTIVE = exports.METRIC_K8S_JOB_MAX_PARALLEL_PODS = exports.METRIC_K8S_JOB_FAILED_PODS = exports.METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS = exports.METRIC_K8S_JOB_ACTIVE_PODS = exports.METRIC_K8S_HPA_POD_MIN = exports.METRIC_K8S_HPA_POD_MAX = exports.METRIC_K8S_HPA_POD_DESIRED = exports.METRIC_K8S_HPA_POD_CURRENT = exports.METRIC_K8S_HPA_MIN_PODS = exports.METRIC_K8S_HPA_METRIC_TARGET_CPU_VALUE = exports.METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_VALUE = exports.METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_UTILIZATION = exports.METRIC_K8S_HPA_MAX_PODS = exports.METRIC_K8S_HPA_DESIRED_PODS = exports.METRIC_K8S_HPA_CURRENT_PODS = exports.METRIC_K8S_DEPLOYMENT_POD_DESIRED = exports.METRIC_K8S_DEPLOYMENT_POD_AVAILABLE = exports.METRIC_K8S_DEPLOYMENT_DESIRED_PODS = exports.METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS = exports.METRIC_K8S_DAEMONSET_READY_NODES = exports.METRIC_K8S_DAEMONSET_NODE_READY = exports.METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED = exports.METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED = exports.METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED = exports.METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES = exports.METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES = exports.METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES = exports.METRIC_K8S_CRONJOB_JOB_ACTIVE = exports.METRIC_K8S_CRONJOB_ACTIVE_JOBS = exports.METRIC_K8S_CONTAINER_STORAGE_REQUEST = exports.METRIC_K8S_CONTAINER_STORAGE_LIMIT = exports.METRIC_K8S_CONTAINER_STATUS_STATE = exports.METRIC_K8S_CONTAINER_STATUS_REASON = exports.METRIC_K8S_CONTAINER_RESTART_COUNT = exports.METRIC_K8S_CONTAINER_READY = exports.METRIC_K8S_CONTAINER_MEMORY_REQUEST = exports.METRIC_K8S_CONTAINER_MEMORY_LIMIT = exports.METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_REQUEST = exports.METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_LIMIT = exports.METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION = exports.METRIC_K8S_CONTAINER_CPU_REQUEST = exports.METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION = exports.METRIC_K8S_CONTAINER_CPU_LIMIT = exports.METRIC_JVM_SYSTEM_CPU_UTILIZATION = void 0; +exports.METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS = exports.METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS = exports.METRIC_K8S_REPLICASET_POD_DESIRED = exports.METRIC_K8S_REPLICASET_POD_AVAILABLE = exports.METRIC_K8S_REPLICASET_DESIRED_PODS = exports.METRIC_K8S_REPLICASET_AVAILABLE_PODS = exports.METRIC_K8S_POD_VOLUME_USAGE = exports.METRIC_K8S_POD_VOLUME_INODE_USED = exports.METRIC_K8S_POD_VOLUME_INODE_FREE = exports.METRIC_K8S_POD_VOLUME_INODE_COUNT = exports.METRIC_K8S_POD_VOLUME_CAPACITY = exports.METRIC_K8S_POD_VOLUME_AVAILABLE = exports.METRIC_K8S_POD_UPTIME = exports.METRIC_K8S_POD_STATUS_REASON = exports.METRIC_K8S_POD_STATUS_PHASE = exports.METRIC_K8S_POD_NETWORK_IO = exports.METRIC_K8S_POD_NETWORK_ERRORS = exports.METRIC_K8S_POD_MEMORY_WORKING_SET = exports.METRIC_K8S_POD_MEMORY_USAGE = exports.METRIC_K8S_POD_MEMORY_RSS = exports.METRIC_K8S_POD_MEMORY_PAGING_FAULTS = exports.METRIC_K8S_POD_MEMORY_AVAILABLE = exports.METRIC_K8S_POD_FILESYSTEM_USAGE = exports.METRIC_K8S_POD_FILESYSTEM_CAPACITY = exports.METRIC_K8S_POD_FILESYSTEM_AVAILABLE = exports.METRIC_K8S_POD_CPU_USAGE = exports.METRIC_K8S_POD_CPU_TIME = exports.METRIC_K8S_NODE_UPTIME = exports.METRIC_K8S_NODE_POD_ALLOCATABLE = exports.METRIC_K8S_NODE_NETWORK_IO = exports.METRIC_K8S_NODE_NETWORK_ERRORS = exports.METRIC_K8S_NODE_MEMORY_WORKING_SET = exports.METRIC_K8S_NODE_MEMORY_USAGE = exports.METRIC_K8S_NODE_MEMORY_RSS = exports.METRIC_K8S_NODE_MEMORY_PAGING_FAULTS = exports.METRIC_K8S_NODE_MEMORY_AVAILABLE = exports.METRIC_K8S_NODE_MEMORY_ALLOCATABLE = exports.METRIC_K8S_NODE_FILESYSTEM_USAGE = exports.METRIC_K8S_NODE_FILESYSTEM_CAPACITY = exports.METRIC_K8S_NODE_FILESYSTEM_AVAILABLE = exports.METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE = exports.METRIC_K8S_NODE_CPU_USAGE = exports.METRIC_K8S_NODE_CPU_TIME = exports.METRIC_K8S_NODE_CPU_ALLOCATABLE = exports.METRIC_K8S_NODE_CONDITION_STATUS = exports.METRIC_K8S_NODE_ALLOCATABLE_PODS = exports.METRIC_K8S_NODE_ALLOCATABLE_MEMORY = exports.METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE = exports.METRIC_K8S_NODE_ALLOCATABLE_CPU = exports.METRIC_K8S_NAMESPACE_PHASE = void 0; +exports.METRIC_NFS_CLIENT_PROCEDURE_COUNT = exports.METRIC_NFS_CLIENT_OPERATION_COUNT = exports.METRIC_NFS_CLIENT_NET_TCP_CONNECTION_ACCEPTED = exports.METRIC_NFS_CLIENT_NET_COUNT = exports.METRIC_MESSAGING_RECEIVE_MESSAGES = exports.METRIC_MESSAGING_RECEIVE_DURATION = exports.METRIC_MESSAGING_PUBLISH_MESSAGES = exports.METRIC_MESSAGING_PUBLISH_DURATION = exports.METRIC_MESSAGING_PROCESS_MESSAGES = exports.METRIC_MESSAGING_PROCESS_DURATION = exports.METRIC_MESSAGING_CLIENT_SENT_MESSAGES = exports.METRIC_MESSAGING_CLIENT_PUBLISHED_MESSAGES = exports.METRIC_MESSAGING_CLIENT_OPERATION_DURATION = exports.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = exports.METRIC_MCP_SERVER_SESSION_DURATION = exports.METRIC_MCP_SERVER_OPERATION_DURATION = exports.METRIC_MCP_CLIENT_SESSION_DURATION = exports.METRIC_MCP_CLIENT_OPERATION_DURATION = exports.METRIC_K8S_STATEFULSET_UPDATED_PODS = exports.METRIC_K8S_STATEFULSET_READY_PODS = exports.METRIC_K8S_STATEFULSET_POD_UPDATED = exports.METRIC_K8S_STATEFULSET_POD_READY = exports.METRIC_K8S_STATEFULSET_POD_DESIRED = exports.METRIC_K8S_STATEFULSET_POD_CURRENT = exports.METRIC_K8S_STATEFULSET_DESIRED_PODS = exports.METRIC_K8S_STATEFULSET_CURRENT_PODS = exports.METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_USED = exports.METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_HARD = exports.METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = exports.METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = exports.METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_USED = exports.METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_HARD = exports.METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_USED = exports.METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_HARD = exports.METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_USED = exports.METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_HARD = exports.METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_USED = exports.METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = exports.METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = exports.METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = exports.METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = exports.METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = exports.METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_USED = exports.METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_HARD = exports.METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_USED = exports.METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_HARD = exports.METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED = exports.METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE = exports.METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS = exports.METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS = void 0; +exports.METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT = exports.METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT = exports.METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT = exports.METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED = exports.METRIC_OTEL_SDK_EXPORTER_OPERATION_DURATION = exports.METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_INFLIGHT = exports.METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_EXPORTED = exports.METRIC_OTEL_SDK_EXPORTER_LOG_INFLIGHT = exports.METRIC_OTEL_SDK_EXPORTER_LOG_EXPORTED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_USED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_HARD = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_USED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_HARD = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_USED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_HARD = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_USED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_HARD = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_USED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_USED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_HARD = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_USED = exports.METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_HARD = exports.METRIC_NODEJS_EVENTLOOP_UTILIZATION = exports.METRIC_NODEJS_EVENTLOOP_TIME = exports.METRIC_NODEJS_EVENTLOOP_DELAY_STDDEV = exports.METRIC_NODEJS_EVENTLOOP_DELAY_P99 = exports.METRIC_NODEJS_EVENTLOOP_DELAY_P90 = exports.METRIC_NODEJS_EVENTLOOP_DELAY_P50 = exports.METRIC_NODEJS_EVENTLOOP_DELAY_MIN = exports.METRIC_NODEJS_EVENTLOOP_DELAY_MEAN = exports.METRIC_NODEJS_EVENTLOOP_DELAY_MAX = exports.METRIC_NFS_SERVER_THREAD_COUNT = exports.METRIC_NFS_SERVER_RPC_COUNT = exports.METRIC_NFS_SERVER_REPCACHE_REQUESTS = exports.METRIC_NFS_SERVER_PROCEDURE_COUNT = exports.METRIC_NFS_SERVER_OPERATION_COUNT = exports.METRIC_NFS_SERVER_NET_TCP_CONNECTION_ACCEPTED = exports.METRIC_NFS_SERVER_NET_COUNT = exports.METRIC_NFS_SERVER_IO = exports.METRIC_NFS_SERVER_FH_STALE_COUNT = exports.METRIC_NFS_CLIENT_RPC_RETRANSMIT_COUNT = exports.METRIC_NFS_CLIENT_RPC_COUNT = exports.METRIC_NFS_CLIENT_RPC_AUTHREFRESH_COUNT = void 0; +exports.METRIC_SYSTEM_DISK_OPERATIONS = exports.METRIC_SYSTEM_DISK_OPERATION_TIME = exports.METRIC_SYSTEM_DISK_MERGED = exports.METRIC_SYSTEM_DISK_LIMIT = exports.METRIC_SYSTEM_DISK_IO_TIME = exports.METRIC_SYSTEM_DISK_IO = exports.METRIC_SYSTEM_CPU_UTILIZATION = exports.METRIC_SYSTEM_CPU_TIME = exports.METRIC_SYSTEM_CPU_PHYSICAL_COUNT = exports.METRIC_SYSTEM_CPU_LOGICAL_COUNT = exports.METRIC_SYSTEM_CPU_FREQUENCY = exports.METRIC_RPC_SERVER_RESPONSES_PER_RPC = exports.METRIC_RPC_SERVER_RESPONSE_SIZE = exports.METRIC_RPC_SERVER_REQUESTS_PER_RPC = exports.METRIC_RPC_SERVER_REQUEST_SIZE = exports.METRIC_RPC_SERVER_DURATION = exports.METRIC_RPC_SERVER_CALL_DURATION = exports.METRIC_RPC_CLIENT_RESPONSES_PER_RPC = exports.METRIC_RPC_CLIENT_RESPONSE_SIZE = exports.METRIC_RPC_CLIENT_REQUESTS_PER_RPC = exports.METRIC_RPC_CLIENT_REQUEST_SIZE = exports.METRIC_RPC_CLIENT_DURATION = exports.METRIC_RPC_CLIENT_CALL_DURATION = exports.METRIC_PROCESS_WINDOWS_HANDLE_COUNT = exports.METRIC_PROCESS_UPTIME = exports.METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT = exports.METRIC_PROCESS_THREAD_COUNT = exports.METRIC_PROCESS_PAGING_FAULTS = exports.METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT = exports.METRIC_PROCESS_NETWORK_IO = exports.METRIC_PROCESS_MEMORY_VIRTUAL = exports.METRIC_PROCESS_MEMORY_USAGE = exports.METRIC_PROCESS_DISK_IO = exports.METRIC_PROCESS_CPU_UTILIZATION = exports.METRIC_PROCESS_CPU_TIME = exports.METRIC_PROCESS_CONTEXT_SWITCHES = exports.METRIC_OTEL_SDK_SPAN_STARTED = exports.METRIC_OTEL_SDK_SPAN_LIVE_COUNT = exports.METRIC_OTEL_SDK_SPAN_LIVE = exports.METRIC_OTEL_SDK_SPAN_ENDED_COUNT = exports.METRIC_OTEL_SDK_SPAN_ENDED = exports.METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE = exports.METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY = exports.METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT = exports.METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED = exports.METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE = exports.METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY = exports.METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED = exports.METRIC_OTEL_SDK_METRIC_READER_COLLECTION_DURATION = exports.METRIC_OTEL_SDK_LOG_CREATED = void 0; +exports.METRIC_VCS_REPOSITORY_COUNT = exports.METRIC_VCS_REF_TIME = exports.METRIC_VCS_REF_REVISIONS_DELTA = exports.METRIC_VCS_REF_LINES_DELTA = exports.METRIC_VCS_REF_COUNT = exports.METRIC_VCS_CONTRIBUTOR_COUNT = exports.METRIC_VCS_CHANGE_TIME_TO_MERGE = exports.METRIC_VCS_CHANGE_TIME_TO_APPROVAL = exports.METRIC_VCS_CHANGE_DURATION = exports.METRIC_VCS_CHANGE_COUNT = exports.METRIC_V8JS_MEMORY_HEAP_USED = exports.METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE = exports.METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE = exports.METRIC_V8JS_MEMORY_HEAP_LIMIT = exports.METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE = exports.METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE = exports.METRIC_V8JS_GC_DURATION = exports.METRIC_SYSTEM_UPTIME = exports.METRIC_SYSTEM_PROCESS_CREATED = exports.METRIC_SYSTEM_PROCESS_COUNT = exports.METRIC_SYSTEM_PAGING_UTILIZATION = exports.METRIC_SYSTEM_PAGING_USAGE = exports.METRIC_SYSTEM_PAGING_OPERATIONS = exports.METRIC_SYSTEM_PAGING_FAULTS = exports.METRIC_SYSTEM_NETWORK_PACKETS = exports.METRIC_SYSTEM_NETWORK_PACKET_DROPPED = exports.METRIC_SYSTEM_NETWORK_PACKET_COUNT = exports.METRIC_SYSTEM_NETWORK_IO = exports.METRIC_SYSTEM_NETWORK_ERRORS = exports.METRIC_SYSTEM_NETWORK_DROPPED = exports.METRIC_SYSTEM_NETWORK_CONNECTIONS = exports.METRIC_SYSTEM_NETWORK_CONNECTION_COUNT = exports.METRIC_SYSTEM_MEMORY_UTILIZATION = exports.METRIC_SYSTEM_MEMORY_USAGE = exports.METRIC_SYSTEM_MEMORY_SHARED = exports.METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE = exports.METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE = exports.METRIC_SYSTEM_MEMORY_LIMIT = exports.METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE = exports.METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE = exports.METRIC_SYSTEM_FILESYSTEM_UTILIZATION = exports.METRIC_SYSTEM_FILESYSTEM_USAGE = exports.METRIC_SYSTEM_FILESYSTEM_LIMIT = void 0; +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * The authentication duration for a request. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_AUTHENTICATION_AUTHENTICATE_DURATION = 'aspnetcore.authentication.authenticate.duration'; +/** + * The total number of times a scheme is challenged. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_AUTHENTICATION_CHALLENGES = 'aspnetcore.authentication.challenges'; +/** + * The total number of times an authenticated user attempts to access a resource they are not permitted to access. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_AUTHENTICATION_FORBIDS = 'aspnetcore.authentication.forbids'; +/** + * The total number of times a principal is signed in with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_AUTHENTICATION_SIGN_INS = 'aspnetcore.authentication.sign_ins'; +/** + * The total number of times a principal is signed out with a scheme. + * + * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_AUTHENTICATION_SIGN_OUTS = 'aspnetcore.authentication.sign_outs'; +/** + * The total number of authorization attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Authorization`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_AUTHORIZATION_ATTEMPTS = 'aspnetcore.authorization.attempts'; +/** + * The duration of authenticate attempts. The authenticate metrics is recorded by sign in methods such as PasswordSignInAsync and TwoFactorSignInAsync. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_AUTHENTICATE_DURATION = 'aspnetcore.identity.sign_in.authenticate.duration'; +/** + * The total number of check password attempts. Checks that the account is in a state that can log in and that the password is valid using the UserManager.CheckPasswordAsync method. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.sign_in.check_password_attempts'; +/** + * The total number of calls to sign in user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_INS = 'aspnetcore.identity.sign_in.sign_ins'; +/** + * The total number of calls to sign out user principals. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_OUTS = 'aspnetcore.identity.sign_in.sign_outs'; +/** + * The total number of two factor clients forgotten. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_FORGOTTEN = 'aspnetcore.identity.sign_in.two_factor_clients_forgotten'; +/** + * The total number of two factor clients remembered. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_REMEMBERED = 'aspnetcore.identity.sign_in.two_factor_clients_remembered'; +/** + * The number of check password attempts. Only checks whether the password is valid and not whether the user account is in a state that can log in. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_USER_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.user.check_password_attempts'; +/** + * The duration of user creation operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_USER_CREATE_DURATION = 'aspnetcore.identity.user.create.duration'; +/** + * The duration of user deletion operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_USER_DELETE_DURATION = 'aspnetcore.identity.user.delete.duration'; +/** + * The total number of token generations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_USER_GENERATED_TOKENS = 'aspnetcore.identity.user.generated_tokens'; +/** + * The duration of user update operations. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_USER_UPDATE_DURATION = 'aspnetcore.identity.user.update.duration'; +/** + * The total number of token verification attempts. + * + * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_IDENTITY_USER_VERIFY_TOKEN_ATTEMPTS = 'aspnetcore.identity.user.verify_token_attempts'; +/** + * Total number of bytes allocated by the memory pool. Allocation occurs when a memory rental request exceeds the available pooled memory. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_MEMORY_POOL_ALLOCATED = 'aspnetcore.memory_pool.allocated'; +/** + * Total number of bytes evicted from the memory pool. Eviction occurs when idle pooled memory is reclaimed. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_MEMORY_POOL_EVICTED = 'aspnetcore.memory_pool.evicted'; +/** + * Number of bytes currently pooled and available for reuse. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_MEMORY_POOL_POOLED = 'aspnetcore.memory_pool.pooled'; +/** + * Total number of bytes rented from the memory pool. + * + * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0 + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_ASPNETCORE_MEMORY_POOL_RENTED = 'aspnetcore.memory_pool.rented'; +/** + * Number of active client instances. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_AZURE_COSMOSDB_CLIENT_ACTIVE_INSTANCE_COUNT = 'azure.cosmosdb.client.active_instance.count'; +/** + * [Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_AZURE_COSMOSDB_CLIENT_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.client.operation.request_charge'; +/** + * The number of pipeline runs currently active in the system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CICD_PIPELINE_RUN_ACTIVE = 'cicd.pipeline.run.active'; +/** + * Duration of a pipeline run grouped by pipeline, state and result. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CICD_PIPELINE_RUN_DURATION = 'cicd.pipeline.run.duration'; +/** + * The number of errors encountered in pipeline runs (eg. compile, test failures). + * + * @note There might be errors in a pipeline run that are non fatal (eg. they are suppressed) or in a parallel stage multiple stages could have a fatal error. + * This means that this error count might not be the same as the count of metric `cicd.pipeline.run.duration` with run result `failure`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CICD_PIPELINE_RUN_ERRORS = 'cicd.pipeline.run.errors'; +/** + * The number of errors in a component of the CICD system (eg. controller, scheduler, agent). + * + * @note Errors in pipeline run execution are explicitly excluded. Ie a test failure is not counted in this metric. + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CICD_SYSTEM_ERRORS = 'cicd.system.errors'; +/** + * The number of workers on the CICD system by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CICD_WORKER_COUNT = 'cicd.worker.count'; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific container on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_CPU_TIME = 'container.cpu.time'; +/** + * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific container on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_CPU_USAGE = 'container.cpu.usage'; +/** + * Disk bytes for the container. + * + * @note The total number of bytes read/written successfully (aggregated from all disks). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_DISK_IO = 'container.disk.io'; +/** + * Container filesystem available bytes. + * + * @note In K8s, this metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_FILESYSTEM_AVAILABLE = 'container.filesystem.available'; +/** + * Container filesystem capacity. + * + * @note In K8s, this metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_FILESYSTEM_CAPACITY = 'container.filesystem.capacity'; +/** + * Container filesystem usage. + * + * @note This may not equal capacity - available. + * + * In K8s, this metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_FILESYSTEM_USAGE = 'container.filesystem.usage'; +/** + * Container memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and by subtracting the `container_memory_working_set_bytes` metric from the `container_spec_memory_limit_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_MEMORY_AVAILABLE = 'container.memory.available'; +/** + * Container memory paging faults. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_failures_total{failure_type=pgfault, scope=container}` and `container_memory_failures_total{failure_type=pgmajfault, scope=container}`metric. + * In K8s, this metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_MEMORY_PAGING_FAULTS = 'container.memory.paging.faults'; +/** + * Container memory RSS. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_rss` metric. + * In K8s, this metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_MEMORY_RSS = 'container.memory.rss'; +/** + * Memory usage of the container. + * + * @note Memory usage of the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_MEMORY_USAGE = 'container.memory.usage'; +/** + * Container memory working set. + * + * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_working_set_bytes` metric. + * In K8s, this metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_MEMORY_WORKING_SET = 'container.memory.working_set'; +/** + * Network bytes for the container. + * + * @note The number of bytes sent/received on all network interfaces by the container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_NETWORK_IO = 'container.network.io'; +/** + * The time the container has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CONTAINER_UPTIME = 'container.uptime'; +/** + * Deprecated. Use `system.cpu.frequency` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.frequency`. + */ +exports.METRIC_CPU_FREQUENCY = 'cpu.frequency'; +/** + * Deprecated. Use `system.cpu.time` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.time`. + */ +exports.METRIC_CPU_TIME = 'cpu.time'; +/** + * Deprecated. Use `system.cpu.utilization` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.cpu.utilization`. + */ +exports.METRIC_CPU_UTILIZATION = 'cpu.utilization'; +/** + * The total number of objects collected inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CPYTHON_GC_COLLECTED_OBJECTS = 'cpython.gc.collected_objects'; +/** + * The number of times a generation was collected since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CPYTHON_GC_COLLECTIONS = 'cpython.gc.collections'; +/** + * The total number of objects which were found to be uncollectable inside a generation since interpreter start. + * + * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_CPYTHON_GC_UNCOLLECTABLE_OBJECTS = 'cpython.gc.uncollectable_objects'; +/** + * The number of connections that are currently in state described by the `state` attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count'; +/** + * The time it took to create a new connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_CREATE_TIME = 'db.client.connection.create_time'; +/** + * The maximum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_IDLE_MAX = 'db.client.connection.idle.max'; +/** + * The minimum number of idle open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_IDLE_MIN = 'db.client.connection.idle.min'; +/** + * The maximum number of open connections allowed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_MAX = 'db.client.connection.max'; +/** + * The number of current pending requests for an open connection. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests'; +/** + * The number of connection timeouts that have occurred trying to obtain a connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_TIMEOUTS = 'db.client.connection.timeouts'; +/** + * The time between borrowing a connection and returning it to the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_USE_TIME = 'db.client.connection.use_time'; +/** + * The time it took to obtain an open connection from the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_CONNECTION_WAIT_TIME = 'db.client.connection.wait_time'; +/** + * Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.create_time` with unit `s`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME = 'db.client.connections.create_time'; +/** + * Deprecated, use `db.client.connection.idle.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.max`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_IDLE_MAX = 'db.client.connections.idle.max'; +/** + * Deprecated, use `db.client.connection.idle.min` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.idle.min`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_IDLE_MIN = 'db.client.connections.idle.min'; +/** + * Deprecated, use `db.client.connection.max` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.max`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_MAX = 'db.client.connections.max'; +/** + * Deprecated, use `db.client.connection.pending_requests` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.pending_requests`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS = 'db.client.connections.pending_requests'; +/** + * Deprecated, use `db.client.connection.timeouts` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.timeouts`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_TIMEOUTS = 'db.client.connections.timeouts'; +/** + * Deprecated, use `db.client.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.count`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage'; +/** + * Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.use_time` with unit `s`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_USE_TIME = 'db.client.connections.use_time'; +/** + * Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.client.connection.wait_time` with unit `s`. + */ +exports.METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME = 'db.client.connections.wait_time'; +/** + * Deprecated, use `azure.cosmosdb.client.active_instance.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.active_instance.count`. + */ +exports.METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT = 'db.client.cosmosdb.active_instance.count'; +/** + * Deprecated, use `azure.cosmosdb.client.operation.request_charge` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `azure.cosmosdb.client.operation.request_charge`. + */ +exports.METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE = 'db.client.cosmosdb.operation.request_charge'; +/** + * The actual number of records returned by the database operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS = 'db.client.response.returned_rows'; +/** + * Measures the time taken to perform a DNS lookup. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_DNS_LOOKUP_DURATION = 'dns.lookup.duration'; +/** + * Number of invocation cold starts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_FAAS_COLDSTARTS = 'faas.coldstarts'; +/** + * Distribution of CPU usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_FAAS_CPU_USAGE = 'faas.cpu_usage'; +/** + * Number of invocation errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_FAAS_ERRORS = 'faas.errors'; +/** + * Measures the duration of the function's initialization, such as a cold start. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_FAAS_INIT_DURATION = 'faas.init_duration'; +/** + * Number of successful invocations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_FAAS_INVOCATIONS = 'faas.invocations'; +/** + * Measures the duration of the function's logic execution. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_FAAS_INVOKE_DURATION = 'faas.invoke_duration'; +/** + * Distribution of max memory usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_FAAS_MEM_USAGE = 'faas.mem_usage'; +/** + * Distribution of net I/O usage per invocation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_FAAS_NET_IO = 'faas.net_io'; +/** + * Number of invocation timeouts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_FAAS_TIMEOUTS = 'faas.timeouts'; +/** + * GenAI operation duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GEN_AI_CLIENT_OPERATION_DURATION = 'gen_ai.client.operation.duration'; +/** + * Number of input and output tokens used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GEN_AI_CLIENT_TOKEN_USAGE = 'gen_ai.client.token.usage'; +/** + * Generative AI server request duration such as time-to-last byte or last output token. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GEN_AI_SERVER_REQUEST_DURATION = 'gen_ai.server.request.duration'; +/** + * Time per output token generated after the first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN = 'gen_ai.server.time_per_output_token'; +/** + * Time to generate first token for successful responses. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GEN_AI_SERVER_TIME_TO_FIRST_TOKEN = 'gen_ai.server.time_to_first_token'; +/** + * Heap size target percentage configured by the user, otherwise 100. + * + * @note The value range is [0.0,100.0]. Computed from `/gc/gogc:percent`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GO_CONFIG_GOGC = 'go.config.gogc'; +/** + * Count of live goroutines. + * + * @note Computed from `/sched/goroutines:goroutines`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GO_GOROUTINE_COUNT = 'go.goroutine.count'; +/** + * Memory allocated to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GO_MEMORY_ALLOCATED = 'go.memory.allocated'; +/** + * Count of allocations to the heap by the application. + * + * @note Computed from `/gc/heap/allocs:objects`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GO_MEMORY_ALLOCATIONS = 'go.memory.allocations'; +/** + * Heap size target for the end of the GC cycle. + * + * @note Computed from `/gc/heap/goal:bytes`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GO_MEMORY_GC_GOAL = 'go.memory.gc.goal'; +/** + * Go runtime memory limit configured by the user, if a limit exists. + * + * @note Computed from `/gc/gomemlimit:bytes`. This metric is excluded if the limit obtained from the Go runtime is math.MaxInt64. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GO_MEMORY_LIMIT = 'go.memory.limit'; +/** + * Memory used by the Go runtime. + * + * @note Computed from `(/memory/classes/total:bytes - /memory/classes/heap/released:bytes)`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GO_MEMORY_USED = 'go.memory.used'; +/** + * The number of OS threads that can execute user-level Go code simultaneously. + * + * @note Computed from `/sched/gomaxprocs:threads`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GO_PROCESSOR_LIMIT = 'go.processor.limit'; +/** + * The time goroutines have spent in the scheduler in a runnable state before actually running. + * + * @note Computed from `/sched/latencies:seconds`. Bucket boundaries are provided by the runtime, and are subject to change. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_GO_SCHEDULE_DURATION = 'go.schedule.duration'; +/** + * Number of active HTTP requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HTTP_CLIENT_ACTIVE_REQUESTS = 'http.client.active_requests'; +/** + * The duration of the successfully established outbound HTTP connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HTTP_CLIENT_CONNECTION_DURATION = 'http.client.connection.duration'; +/** + * Number of outbound HTTP connections that are currently active or idle on the client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HTTP_CLIENT_OPEN_CONNECTIONS = 'http.client.open_connections'; +/** + * Size of HTTP client request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HTTP_CLIENT_REQUEST_BODY_SIZE = 'http.client.request.body.size'; +/** + * Size of HTTP client response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE = 'http.client.response.body.size'; +/** + * Number of active HTTP server requests. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HTTP_SERVER_ACTIVE_REQUESTS = 'http.server.active_requests'; +/** + * Size of HTTP server request bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HTTP_SERVER_REQUEST_BODY_SIZE = 'http.server.request.body.size'; +/** + * Size of HTTP server response bodies. + * + * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HTTP_SERVER_RESPONSE_BODY_SIZE = 'http.server.response.body.size'; +/** + * Remaining fraction of battery charge. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_BATTERY_CHARGE = 'hw.battery.charge'; +/** + * Lower limit of battery charge fraction to ensure proper operation. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_BATTERY_CHARGE_LIMIT = 'hw.battery.charge.limit'; +/** + * Time left before battery is completely charged or discharged. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_BATTERY_TIME_LEFT = 'hw.battery.time_left'; +/** + * CPU current frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_CPU_SPEED = 'hw.cpu.speed'; +/** + * CPU maximum frequency. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_CPU_SPEED_LIMIT = 'hw.cpu.speed.limit'; +/** + * Energy consumed by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_ENERGY = 'hw.energy'; +/** + * Number of errors encountered by the component. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_ERRORS = 'hw.errors'; +/** + * Fan speed in revolutions per minute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_FAN_SPEED = 'hw.fan.speed'; +/** + * Speed limit in rpm. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_FAN_SPEED_LIMIT = 'hw.fan.speed.limit'; +/** + * Fan speed expressed as a fraction of its maximum speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_FAN_SPEED_RATIO = 'hw.fan.speed_ratio'; +/** + * Received and transmitted bytes by the GPU. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_GPU_IO = 'hw.gpu.io'; +/** + * Size of the GPU memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_GPU_MEMORY_LIMIT = 'hw.gpu.memory.limit'; +/** + * GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_GPU_MEMORY_USAGE = 'hw.gpu.memory.usage'; +/** + * Fraction of GPU memory used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_GPU_MEMORY_UTILIZATION = 'hw.gpu.memory.utilization'; +/** + * Fraction of time spent in a specific task. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_GPU_UTILIZATION = 'hw.gpu.utilization'; +/** + * Ambient (external) temperature of the physical host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_HOST_AMBIENT_TEMPERATURE = 'hw.host.ambient_temperature'; +/** + * Total energy consumed by the entire physical host, in joules. + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_HOST_ENERGY = 'hw.host.energy'; +/** + * By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_HOST_HEATING_MARGIN = 'hw.host.heating_margin'; +/** + * Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred). + * + * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_HOST_POWER = 'hw.host.power'; +/** + * Size of the logical disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_LOGICAL_DISK_LIMIT = 'hw.logical_disk.limit'; +/** + * Logical disk space usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_LOGICAL_DISK_USAGE = 'hw.logical_disk.usage'; +/** + * Logical disk space utilization as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_LOGICAL_DISK_UTILIZATION = 'hw.logical_disk.utilization'; +/** + * Size of the memory module. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_MEMORY_SIZE = 'hw.memory.size'; +/** + * Link speed. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_NETWORK_BANDWIDTH_LIMIT = 'hw.network.bandwidth.limit'; +/** + * Utilization of the network bandwidth as a fraction. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_NETWORK_BANDWIDTH_UTILIZATION = 'hw.network.bandwidth.utilization'; +/** + * Received and transmitted network traffic in bytes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_NETWORK_IO = 'hw.network.io'; +/** + * Received and transmitted network traffic in packets (or frames). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_NETWORK_PACKETS = 'hw.network.packets'; +/** + * Link status: `1` (up) or `0` (down). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_NETWORK_UP = 'hw.network.up'; +/** + * Endurance remaining for this SSD disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_PHYSICAL_DISK_ENDURANCE_UTILIZATION = 'hw.physical_disk.endurance_utilization'; +/** + * Size of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_PHYSICAL_DISK_SIZE = 'hw.physical_disk.size'; +/** + * Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_PHYSICAL_DISK_SMART = 'hw.physical_disk.smart'; +/** + * Instantaneous power consumed by the component. + * + * @note It is recommended to report `hw.energy` instead of `hw.power` when possible. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_POWER = 'hw.power'; +/** + * Maximum power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_POWER_SUPPLY_LIMIT = 'hw.power_supply.limit'; +/** + * Current power output of the power supply. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_POWER_SUPPLY_USAGE = 'hw.power_supply.usage'; +/** + * Utilization of the power supply as a fraction of its maximum output. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_POWER_SUPPLY_UTILIZATION = 'hw.power_supply.utilization'; +/** + * Operational status: `1` (true) or `0` (false) for each of the possible states. + * + * @note `hw.status` is currently specified as an *UpDownCounter* but would ideally be represented using a [*StateSet* as defined in OpenMetrics](https://github.com/prometheus/OpenMetrics/blob/v1.0.0/specification/OpenMetrics.md#stateset). This semantic convention will be updated once *StateSet* is specified in OpenTelemetry. This planned change is not expected to have any consequence on the way users query their timeseries backend to retrieve the values of `hw.status` over time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_STATUS = 'hw.status'; +/** + * Operations performed by the tape drive. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_TAPE_DRIVE_OPERATIONS = 'hw.tape_drive.operations'; +/** + * Temperature in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_TEMPERATURE = 'hw.temperature'; +/** + * Temperature limit in degrees Celsius. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_TEMPERATURE_LIMIT = 'hw.temperature.limit'; +/** + * Voltage measured by the sensor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_VOLTAGE = 'hw.voltage'; +/** + * Voltage limit in Volts. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_VOLTAGE_LIMIT = 'hw.voltage.limit'; +/** + * Nominal (expected) voltage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_HW_VOLTAGE_NOMINAL = 'hw.voltage.nominal'; +/** + * Number of buffers in the pool. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_JVM_BUFFER_COUNT = 'jvm.buffer.count'; +/** + * Measure of total memory capacity of buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_JVM_BUFFER_MEMORY_LIMIT = 'jvm.buffer.memory.limit'; +/** + * Deprecated, use `jvm.buffer.memory.used` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `jvm.buffer.memory.used`. + */ +exports.METRIC_JVM_BUFFER_MEMORY_USAGE = 'jvm.buffer.memory.usage'; +/** + * Measure of memory used by buffers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_JVM_BUFFER_MEMORY_USED = 'jvm.buffer.memory.used'; +/** + * Number of open file descriptors as reported by the JVM. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_JVM_FILE_DESCRIPTOR_COUNT = 'jvm.file_descriptor.count'; +/** + * Measure of initial memory requested. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_JVM_MEMORY_INIT = 'jvm.memory.init'; +/** + * Average CPU load of the whole system for the last minute as reported by the JVM. + * + * @note The value range is [0,n], where n is the number of CPU cores - or a negative number if the value is not available. 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/java.management/java/lang/management/OperatingSystemMXBean.html#getSystemLoadAverage()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_JVM_SYSTEM_CPU_LOAD_1M = 'jvm.system.cpu.load_1m'; +/** + * Recent CPU utilization for the whole system as reported by the JVM. + * + * @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#getCpuLoad()). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_JVM_SYSTEM_CPU_UTILIZATION = 'jvm.system.cpu.utilization'; +/** + * Maximum CPU resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_CPU_LIMIT = 'k8s.container.cpu.limit'; +/** + * The ratio of container CPU usage to its CPU limit. + * + * @note The value range is [0.0,1.0]. A value of 1.0 means the container is using 100% of its CPU limit. If the CPU limit is not set, this metric **SHOULD NOT** be emitted for that container. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION = 'k8s.container.cpu.limit_utilization'; +/** + * CPU resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_CPU_REQUEST = 'k8s.container.cpu.request'; +/** + * The ratio of container CPU usage to its CPU request. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION = 'k8s.container.cpu.request_utilization'; +/** + * Maximum ephemeral storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_LIMIT = 'k8s.container.ephemeral_storage.limit'; +/** + * Ephemeral storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_REQUEST = 'k8s.container.ephemeral_storage.request'; +/** + * Maximum memory resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_MEMORY_LIMIT = 'k8s.container.memory.limit'; +/** + * Memory resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_MEMORY_REQUEST = 'k8s.container.memory.request'; +/** + * Indicates whether the container is currently marked as ready to accept traffic, based on its readiness probe (1 = ready, 0 = not ready). + * + * @note This metric **SHOULD** reflect the value of the `ready` field in the + * [K8s ContainerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_READY = 'k8s.container.ready'; +/** + * Describes how many times the container has restarted (since the last counter reset). + * + * @note This value is pulled directly from the K8s API and the value can go indefinitely high and be reset to 0 + * at any time depending on how your kubelet is configured to prune dead containers. + * It is best to not depend too much on the exact value but rather look at it as + * either == 0, in which case you can conclude there were no restarts in the recent past, or > 0, in which case + * you can conclude there were restarts in the recent past, and not try and analyze the value beyond that. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart.count'; +/** + * Describes the number of K8s containers that are currently in a state for a given reason. + * + * @note All possible container state reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason'; +/** + * Describes the number of K8s containers that are currently in a given state. + * + * @note All possible container states will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current state will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state'; +/** + * Maximum storage resource limit set for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_STORAGE_LIMIT = 'k8s.container.storage.limit'; +/** + * Storage resource requested for the container. + * + * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CONTAINER_STORAGE_REQUEST = 'k8s.container.storage.request'; +/** + * Deprecated, use `k8s.cronjob.job.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.cronjob.job.active`. + */ +exports.METRIC_K8S_CRONJOB_ACTIVE_JOBS = 'k8s.cronjob.active_jobs'; +/** + * The number of actively running jobs for a cronjob. + * + * @note This metric aligns with the `active` field of the + * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_CRONJOB_JOB_ACTIVE = 'k8s.cronjob.job.active'; +/** + * Deprecated, use `k8s.daemonset.node.current_scheduled` instead. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.current_scheduled`. + */ +exports.METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES = 'k8s.daemonset.current_scheduled_nodes'; +/** + * Deprecated, use `k8s.daemonset.node.desired_scheduled` instead. + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.desired_scheduled`. + */ +exports.METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES = 'k8s.daemonset.desired_scheduled_nodes'; +/** + * Deprecated, use `k8s.daemonset.node.misscheduled` instead. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.misscheduled`. + */ +exports.METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES = 'k8s.daemonset.misscheduled_nodes'; +/** + * Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. + * + * @note This metric aligns with the `currentNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED = 'k8s.daemonset.node.current_scheduled'; +/** + * Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod). + * + * @note This metric aligns with the `desiredNumberScheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED = 'k8s.daemonset.node.desired_scheduled'; +/** + * Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. + * + * @note This metric aligns with the `numberMisscheduled` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED = 'k8s.daemonset.node.misscheduled'; +/** + * Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_DAEMONSET_NODE_READY = 'k8s.daemonset.node.ready'; +/** + * Deprecated, use `k8s.daemonset.node.ready` instead. + * + * @note This metric aligns with the `numberReady` field of the + * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.daemonset.node.ready`. + */ +exports.METRIC_K8S_DAEMONSET_READY_NODES = 'k8s.daemonset.ready_nodes'; +/** + * Deprecated, use `k8s.deployment.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.available`. + */ +exports.METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS = 'k8s.deployment.available_pods'; +/** + * Deprecated, use `k8s.deployment.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.deployment.pod.desired`. + */ +exports.METRIC_K8S_DEPLOYMENT_DESIRED_PODS = 'k8s.deployment.desired_pods'; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_DEPLOYMENT_POD_AVAILABLE = 'k8s.deployment.pod.available'; +/** + * Number of desired replica pods in this deployment. + * + * @note This metric aligns with the `replicas` field of the + * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_DEPLOYMENT_POD_DESIRED = 'k8s.deployment.pod.desired'; +/** + * Deprecated, use `k8s.hpa.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.current`. + */ +exports.METRIC_K8S_HPA_CURRENT_PODS = 'k8s.hpa.current_pods'; +/** + * Deprecated, use `k8s.hpa.pod.desired` instead. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.desired`. + */ +exports.METRIC_K8S_HPA_DESIRED_PODS = 'k8s.hpa.desired_pods'; +/** + * Deprecated, use `k8s.hpa.pod.max` instead. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.max`. + */ +exports.METRIC_K8S_HPA_MAX_PODS = 'k8s.hpa.max_pods'; +/** + * Target average utilization, in percentage, for CPU resource in HPA config. + * + * @note This metric aligns with the `averageUtilization` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_UTILIZATION = 'k8s.hpa.metric.target.cpu.average_utilization'; +/** + * Target average value for CPU resource in HPA config. + * + * @note This metric aligns with the `averageValue` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_VALUE = 'k8s.hpa.metric.target.cpu.average_value'; +/** + * Target value for CPU resource in HPA config. + * + * @note This metric aligns with the `value` field of the + * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling). + * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis), + * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_HPA_METRIC_TARGET_CPU_VALUE = 'k8s.hpa.metric.target.cpu.value'; +/** + * Deprecated, use `k8s.hpa.pod.min` instead. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.hpa.pod.min`. + */ +exports.METRIC_K8S_HPA_MIN_PODS = 'k8s.hpa.min_pods'; +/** + * Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_HPA_POD_CURRENT = 'k8s.hpa.pod.current'; +/** + * Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler. + * + * @note This metric aligns with the `desiredReplicas` field of the + * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_HPA_POD_DESIRED = 'k8s.hpa.pod.desired'; +/** + * The upper limit for the number of replica pods to which the autoscaler can scale up. + * + * @note This metric aligns with the `maxReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_HPA_POD_MAX = 'k8s.hpa.pod.max'; +/** + * The lower limit for the number of replica pods to which the autoscaler can scale down. + * + * @note This metric aligns with the `minReplicas` field of the + * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_HPA_POD_MIN = 'k8s.hpa.pod.min'; +/** + * Deprecated, use `k8s.job.pod.active` instead. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.active`. + */ +exports.METRIC_K8S_JOB_ACTIVE_PODS = 'k8s.job.active_pods'; +/** + * Deprecated, use `k8s.job.pod.desired_successful` instead. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.desired_successful`. + */ +exports.METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS = 'k8s.job.desired_successful_pods'; +/** + * Deprecated, use `k8s.job.pod.failed` instead. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.failed`. + */ +exports.METRIC_K8S_JOB_FAILED_PODS = 'k8s.job.failed_pods'; +/** + * Deprecated, use `k8s.job.pod.max_parallel` instead. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.max_parallel`. + */ +exports.METRIC_K8S_JOB_MAX_PARALLEL_PODS = 'k8s.job.max_parallel_pods'; +/** + * The number of pending and actively running pods for a job. + * + * @note This metric aligns with the `active` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_JOB_POD_ACTIVE = 'k8s.job.pod.active'; +/** + * The desired number of successfully finished pods the job should be run with. + * + * @note This metric aligns with the `completions` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL = 'k8s.job.pod.desired_successful'; +/** + * The number of pods which reached phase Failed for a job. + * + * @note This metric aligns with the `failed` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_JOB_POD_FAILED = 'k8s.job.pod.failed'; +/** + * The max desired number of pods the job should run at any given time. + * + * @note This metric aligns with the `parallelism` field of the + * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_JOB_POD_MAX_PARALLEL = 'k8s.job.pod.max_parallel'; +/** + * The number of pods which reached phase Succeeded for a job. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_JOB_POD_SUCCESSFUL = 'k8s.job.pod.successful'; +/** + * Deprecated, use `k8s.job.pod.successful` instead. + * + * @note This metric aligns with the `succeeded` field of the + * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.job.pod.successful`. + */ +exports.METRIC_K8S_JOB_SUCCESSFUL_PODS = 'k8s.job.successful_pods'; +/** + * Describes number of K8s namespaces that are currently in a given phase. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase'; +/** + * Deprecated, use `k8s.node.cpu.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.cpu.allocatable`. + */ +exports.METRIC_K8S_NODE_ALLOCATABLE_CPU = 'k8s.node.allocatable.cpu'; +/** + * Deprecated, use `k8s.node.ephemeral_storage.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.ephemeral_storage.allocatable`. + */ +exports.METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE = 'k8s.node.allocatable.ephemeral_storage'; +/** + * Deprecated, use `k8s.node.memory.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.memory.allocatable`. + */ +exports.METRIC_K8S_NODE_ALLOCATABLE_MEMORY = 'k8s.node.allocatable.memory'; +/** + * Deprecated, use `k8s.node.pod.allocatable` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.node.pod.allocatable`. + */ +exports.METRIC_K8S_NODE_ALLOCATABLE_PODS = 'k8s.node.allocatable.pods'; +/** + * Describes the condition of a particular Node. + * + * @note All possible node condition pairs (type and status) will be reported at each time interval to avoid missing metrics. Condition pairs corresponding to the current conditions' statuses will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status'; +/** + * Amount of cpu allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_CPU_ALLOCATABLE = 'k8s.node.cpu.allocatable'; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Node on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_CPU_TIME = 'k8s.node.cpu.time'; +/** + * Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Node on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_CPU_USAGE = 'k8s.node.cpu.usage'; +/** + * Amount of ephemeral-storage allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE = 'k8s.node.ephemeral_storage.allocatable'; +/** + * Node filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_FILESYSTEM_AVAILABLE = 'k8s.node.filesystem.available'; +/** + * Node filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_FILESYSTEM_CAPACITY = 'k8s.node.filesystem.capacity'; +/** + * Node filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_FILESYSTEM_USAGE = 'k8s.node.filesystem.usage'; +/** + * Amount of memory allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_MEMORY_ALLOCATABLE = 'k8s.node.memory.allocatable'; +/** + * Node memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_MEMORY_AVAILABLE = 'k8s.node.memory.available'; +/** + * Node memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) fields of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_MEMORY_PAGING_FAULTS = 'k8s.node.memory.paging.faults'; +/** + * Node memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_MEMORY_RSS = 'k8s.node.memory.rss'; +/** + * Memory usage of the Node. + * + * @note Total memory usage of the Node + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_MEMORY_USAGE = 'k8s.node.memory.usage'; +/** + * Node memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_MEMORY_WORKING_SET = 'k8s.node.memory.working_set'; +/** + * Node network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_NETWORK_ERRORS = 'k8s.node.network.errors'; +/** + * Network bytes for the Node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_NETWORK_IO = 'k8s.node.network.io'; +/** + * Amount of pods allocatable on the node. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_POD_ALLOCATABLE = 'k8s.node.pod.allocatable'; +/** + * The time the Node has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_NODE_UPTIME = 'k8s.node.uptime'; +/** + * Total CPU time consumed. + * + * @note Total CPU time consumed by the specific Pod on all available CPU cores + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_CPU_TIME = 'k8s.pod.cpu.time'; +/** + * Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs. + * + * @note CPU usage of the specific Pod on all available CPU cores, averaged over the sample window + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_CPU_USAGE = 'k8s.pod.cpu.usage'; +/** + * Pod filesystem available bytes. + * + * @note This metric is derived from the + * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_FILESYSTEM_AVAILABLE = 'k8s.pod.filesystem.available'; +/** + * Pod filesystem capacity. + * + * @note This metric is derived from the + * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_FILESYSTEM_CAPACITY = 'k8s.pod.filesystem.capacity'; +/** + * Pod filesystem usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field + * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) + * of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_FILESYSTEM_USAGE = 'k8s.pod.filesystem.usage'; +/** + * Pod memory available. + * + * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted. + * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_MEMORY_AVAILABLE = 'k8s.pod.memory.available'; +/** + * Pod memory paging faults. + * + * @note Cumulative number of major/minor page faults. + * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_MEMORY_PAGING_FAULTS = 'k8s.pod.memory.paging.faults'; +/** + * Pod memory RSS. + * + * @note The amount of anonymous and swap cache memory (includes transparent hugepages). + * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_MEMORY_RSS = 'k8s.pod.memory.rss'; +/** + * Memory usage of the Pod. + * + * @note Total memory usage of the Pod + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_MEMORY_USAGE = 'k8s.pod.memory.usage'; +/** + * Pod memory working set. + * + * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes. + * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_MEMORY_WORKING_SET = 'k8s.pod.memory.working_set'; +/** + * Pod network errors. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_NETWORK_ERRORS = 'k8s.pod.network.errors'; +/** + * Network bytes for the Pod. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_NETWORK_IO = 'k8s.pod.network.io'; +/** + * Describes number of K8s Pods that are currently in a given phase. + * + * @note All possible pod phases will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current phase will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase'; +/** + * Describes the number of K8s Pods that are currently in a state for a given reason. + * + * @note All possible pod status reasons will be reported at each time interval to avoid missing metrics. + * Only the value corresponding to the current reason will be non-zero. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason'; +/** + * The time the Pod has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_UPTIME = 'k8s.pod.uptime'; +/** + * Pod volume storage space available. + * + * @note This metric is derived from the + * [VolumeStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_VOLUME_AVAILABLE = 'k8s.pod.volume.available'; +/** + * Pod volume total capacity. + * + * @note This metric is derived from the + * [VolumeStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_VOLUME_CAPACITY = 'k8s.pod.volume.capacity'; +/** + * The total inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.Inodes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_VOLUME_INODE_COUNT = 'k8s.pod.volume.inode.count'; +/** + * The free inodes in the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesFree](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_VOLUME_INODE_FREE = 'k8s.pod.volume.inode.free'; +/** + * The inodes used by the filesystem of the Pod's volume. + * + * @note This metric is derived from the + * [VolumeStats.InodesUsed](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * This may not be equal to `inodes - free` because filesystem may share inodes with other filesystems. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_VOLUME_INODE_USED = 'k8s.pod.volume.inode.used'; +/** + * Pod volume usage. + * + * @note This may not equal capacity - available. + * + * This metric is derived from the + * [VolumeStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field + * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the + * Kubelet's stats API. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_POD_VOLUME_USAGE = 'k8s.pod.volume.usage'; +/** + * Deprecated, use `k8s.replicaset.pod.available` instead. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.available`. + */ +exports.METRIC_K8S_REPLICASET_AVAILABLE_PODS = 'k8s.replicaset.available_pods'; +/** + * Deprecated, use `k8s.replicaset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicaset.pod.desired`. + */ +exports.METRIC_K8S_REPLICASET_DESIRED_PODS = 'k8s.replicaset.desired_pods'; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_REPLICASET_POD_AVAILABLE = 'k8s.replicaset.pod.available'; +/** + * Number of desired replica pods in this replicaset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_REPLICASET_POD_DESIRED = 'k8s.replicaset.pod.desired'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +exports.METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS = 'k8s.replication_controller.available_pods'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +exports.METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS = 'k8s.replication_controller.desired_pods'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.available` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.available`. + */ +exports.METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS = 'k8s.replicationcontroller.available_pods'; +/** + * Deprecated, use `k8s.replicationcontroller.pod.desired` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.replicationcontroller.pod.desired`. + */ +exports.METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS = 'k8s.replicationcontroller.desired_pods'; +/** + * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller. + * + * @note This metric aligns with the `availableReplicas` field of the + * [K8s ReplicationControllerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerstatus-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE = 'k8s.replicationcontroller.pod.available'; +/** + * Number of desired replica pods in this replication controller. + * + * @note This metric aligns with the `replicas` field of the + * [K8s ReplicationControllerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerspec-v1-core) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED = 'k8s.replicationcontroller.pod.desired'; +/** + * The CPU limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_HARD = 'k8s.resourcequota.cpu.limit.hard'; +/** + * The CPU limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_USED = 'k8s.resourcequota.cpu.limit.used'; +/** + * The CPU requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_HARD = 'k8s.resourcequota.cpu.request.hard'; +/** + * The CPU requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_USED = 'k8s.resourcequota.cpu.request.used'; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'k8s.resourcequota.ephemeral_storage.limit.hard'; +/** + * The sum of local ephemeral storage limits in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'k8s.resourcequota.ephemeral_storage.limit.used'; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'k8s.resourcequota.ephemeral_storage.request.hard'; +/** + * The sum of local ephemeral storage requests in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'k8s.resourcequota.ephemeral_storage.request.used'; +/** + * The huge page requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'k8s.resourcequota.hugepage_count.request.hard'; +/** + * The huge page requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'k8s.resourcequota.hugepage_count.request.used'; +/** + * The memory limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_HARD = 'k8s.resourcequota.memory.limit.hard'; +/** + * The memory limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_USED = 'k8s.resourcequota.memory.limit.used'; +/** + * The memory requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_HARD = 'k8s.resourcequota.memory.request.hard'; +/** + * The memory requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_USED = 'k8s.resourcequota.memory.request.used'; +/** + * The object count limits in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_HARD = 'k8s.resourcequota.object_count.hard'; +/** + * The object count limits in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_USED = 'k8s.resourcequota.object_count.used'; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'k8s.resourcequota.persistentvolumeclaim_count.hard'; +/** + * The total number of PersistentVolumeClaims that can exist in the namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'k8s.resourcequota.persistentvolumeclaim_count.used'; +/** + * The storage requests in a specific namespace. + * The value represents the configured quota limit of the resource in the namespace. + * + * @note This metric is retrieved from the `hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_HARD = 'k8s.resourcequota.storage.request.hard'; +/** + * The storage requests in a specific namespace. + * The value represents the current observed total usage of the resource in the namespace. + * + * @note This metric is retrieved from the `used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_USED = 'k8s.resourcequota.storage.request.used'; +/** + * Deprecated, use `k8s.statefulset.pod.current` instead. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.current`. + */ +exports.METRIC_K8S_STATEFULSET_CURRENT_PODS = 'k8s.statefulset.current_pods'; +/** + * Deprecated, use `k8s.statefulset.pod.desired` instead. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.desired`. + */ +exports.METRIC_K8S_STATEFULSET_DESIRED_PODS = 'k8s.statefulset.desired_pods'; +/** + * The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision. + * + * @note This metric aligns with the `currentReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_STATEFULSET_POD_CURRENT = 'k8s.statefulset.pod.current'; +/** + * Number of desired replica pods in this statefulset. + * + * @note This metric aligns with the `replicas` field of the + * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_STATEFULSET_POD_DESIRED = 'k8s.statefulset.pod.desired'; +/** + * The number of replica pods created for this statefulset with a Ready Condition. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_STATEFULSET_POD_READY = 'k8s.statefulset.pod.ready'; +/** + * Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_K8S_STATEFULSET_POD_UPDATED = 'k8s.statefulset.pod.updated'; +/** + * Deprecated, use `k8s.statefulset.pod.ready` instead. + * + * @note This metric aligns with the `readyReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.ready`. + */ +exports.METRIC_K8S_STATEFULSET_READY_PODS = 'k8s.statefulset.ready_pods'; +/** + * Deprecated, use `k8s.statefulset.pod.updated` instead. + * + * @note This metric aligns with the `updatedReplicas` field of the + * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `k8s.statefulset.pod.updated`. + */ +exports.METRIC_K8S_STATEFULSET_UPDATED_PODS = 'k8s.statefulset.updated_pods'; +/** + * The duration of the MCP request or notification as observed on the sender from the time it was sent until the response or ack is received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MCP_CLIENT_OPERATION_DURATION = 'mcp.client.operation.duration'; +/** + * The duration of the MCP session as observed on the MCP client. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MCP_CLIENT_SESSION_DURATION = 'mcp.client.session.duration'; +/** + * MCP request or notification duration as observed on the receiver from the time it was received until the result or ack is sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MCP_SERVER_OPERATION_DURATION = 'mcp.server.operation.duration'; +/** + * The duration of the MCP session as observed on the MCP server. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MCP_SERVER_SESSION_DURATION = 'mcp.server.session.duration'; +/** + * Number of messages that were delivered to the application. + * + * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios. + * 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. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = 'messaging.client.consumed.messages'; +/** + * Duration of messaging operation initiated by a producer or consumer client. + * + * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MESSAGING_CLIENT_OPERATION_DURATION = 'messaging.client.operation.duration'; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +exports.METRIC_MESSAGING_CLIENT_PUBLISHED_MESSAGES = 'messaging.client.published.messages'; +/** + * Number of messages producer attempted to send to the broker. + * + * @note This metric **MUST NOT** count messages that were created but haven't yet been sent. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MESSAGING_CLIENT_SENT_MESSAGES = 'messaging.client.sent.messages'; +/** + * Duration of processing operation. + * + * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_MESSAGING_PROCESS_DURATION = 'messaging.process.duration'; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +exports.METRIC_MESSAGING_PROCESS_MESSAGES = 'messaging.process.messages'; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +exports.METRIC_MESSAGING_PUBLISH_DURATION = 'messaging.publish.duration'; +/** + * Deprecated. Use `messaging.client.sent.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.sent.messages`. + */ +exports.METRIC_MESSAGING_PUBLISH_MESSAGES = 'messaging.publish.messages'; +/** + * Deprecated. Use `messaging.client.operation.duration` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.operation.duration`. + */ +exports.METRIC_MESSAGING_RECEIVE_DURATION = 'messaging.receive.duration'; +/** + * Deprecated. Use `messaging.client.consumed.messages` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `messaging.client.consumed.messages`. + */ +exports.METRIC_MESSAGING_RECEIVE_MESSAGES = 'messaging.receive.messages'; +/** + * Reports the count of kernel NFS client TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.netudpcnt and svc_stat.nettcpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_CLIENT_NET_COUNT = 'nfs.client.net.count'; +/** + * Reports the count of kernel NFS client TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_CLIENT_NET_TCP_CONNECTION_ACCEPTED = 'nfs.client.net.tcp.connection.accepted'; +/** + * Reports the count of kernel NFSv4+ client operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_CLIENT_OPERATION_COUNT = 'nfs.client.operation.count'; +/** + * Reports the count of kernel NFS client procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_CLIENT_PROCEDURE_COUNT = 'nfs.client.procedure.count'; +/** + * Reports the count of kernel NFS client RPC authentication refreshes. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcauthrefresh + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_CLIENT_RPC_AUTHREFRESH_COUNT = 'nfs.client.rpc.authrefresh.count'; +/** + * Reports the count of kernel NFS client RPCs sent, regardless of whether they're accepted/rejected by the server. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_CLIENT_RPC_COUNT = 'nfs.client.rpc.count'; +/** + * Reports the count of kernel NFS client RPC retransmits. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcretrans + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_CLIENT_RPC_RETRANSMIT_COUNT = 'nfs.client.rpc.retransmit.count'; +/** + * Reports the count of kernel NFS server stale file handles. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_FH_STALE counter in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_SERVER_FH_STALE_COUNT = 'nfs.server.fh.stale.count'; +/** + * Reports the count of kernel NFS server bytes returned to receive and transmit (read and write) requests. + * + * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_IO_READ and NFSD_STATS_IO_WRITE counters in the nfsd_net struct + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_SERVER_IO = 'nfs.server.io'; +/** + * Reports the count of kernel NFS server TCP segments and UDP datagrams handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpcnt and svc_stat.netudpcnt + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_SERVER_NET_COUNT = 'nfs.server.net.count'; +/** + * Reports the count of kernel NFS server TCP connections accepted. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_SERVER_NET_TCP_CONNECTION_ACCEPTED = 'nfs.server.net.tcp.connection.accepted'; +/** + * Reports the count of kernel NFSv4+ server operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_SERVER_OPERATION_COUNT = 'nfs.server.operation.count'; +/** + * Reports the count of kernel NFS server procedures. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_SERVER_PROCEDURE_COUNT = 'nfs.server.procedure.count'; +/** + * Reports the kernel NFS server reply cache request count by cache hit status. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_SERVER_REPCACHE_REQUESTS = 'nfs.server.repcache.requests'; +/** + * Reports the count of kernel NFS server RPCs handled. + * + * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt, the count of good RPCs. This metric can have + * an error.type of "format", "auth", or "client" for svc_stat.badfmt, svc_stat.badauth, and svc_stat.badclnt. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_SERVER_RPC_COUNT = 'nfs.server.rpc.count'; +/** + * Reports the count of kernel NFS server available threads. + * + * @note Linux: this metric is taken from the Linux kernel nfsd_th_cnt variable + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NFS_SERVER_THREAD_COUNT = 'nfs.server.thread.count'; +/** + * Event loop maximum delay. + * + * @note Value can be retrieved from value `histogram.max` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NODEJS_EVENTLOOP_DELAY_MAX = 'nodejs.eventloop.delay.max'; +/** + * Event loop mean delay. + * + * @note Value can be retrieved from value `histogram.mean` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NODEJS_EVENTLOOP_DELAY_MEAN = 'nodejs.eventloop.delay.mean'; +/** + * Event loop minimum delay. + * + * @note Value can be retrieved from value `histogram.min` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NODEJS_EVENTLOOP_DELAY_MIN = 'nodejs.eventloop.delay.min'; +/** + * Event loop 50 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(50)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NODEJS_EVENTLOOP_DELAY_P50 = 'nodejs.eventloop.delay.p50'; +/** + * Event loop 90 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(90)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NODEJS_EVENTLOOP_DELAY_P90 = 'nodejs.eventloop.delay.p90'; +/** + * Event loop 99 percentile delay. + * + * @note Value can be retrieved from value `histogram.percentile(99)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NODEJS_EVENTLOOP_DELAY_P99 = 'nodejs.eventloop.delay.p99'; +/** + * Event loop standard deviation delay. + * + * @note Value can be retrieved from value `histogram.stddev` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NODEJS_EVENTLOOP_DELAY_STDDEV = 'nodejs.eventloop.delay.stddev'; +/** + * Cumulative duration of time the event loop has been in each state. + * + * @note Value can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NODEJS_EVENTLOOP_TIME = 'nodejs.eventloop.time'; +/** + * Event loop utilization. + * + * @note The value range is [0.0, 1.0] and can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_NODEJS_EVENTLOOP_UTILIZATION = 'nodejs.eventloop.utilization'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_HARD = 'openshift.clusterquota.cpu.limit.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_USED = 'openshift.clusterquota.cpu.limit.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_HARD = 'openshift.clusterquota.cpu.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_USED = 'openshift.clusterquota.cpu.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'openshift.clusterquota.ephemeral_storage.limit.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'openshift.clusterquota.ephemeral_storage.limit.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'openshift.clusterquota.ephemeral_storage.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'openshift.clusterquota.ephemeral_storage.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'openshift.clusterquota.hugepage_count.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'openshift.clusterquota.hugepage_count.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_HARD = 'openshift.clusterquota.memory.limit.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_USED = 'openshift.clusterquota.memory.limit.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_HARD = 'openshift.clusterquota.memory.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_USED = 'openshift.clusterquota.memory.request.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_HARD = 'openshift.clusterquota.object_count.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_USED = 'openshift.clusterquota.object_count.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'openshift.clusterquota.persistentvolumeclaim_count.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'openshift.clusterquota.persistentvolumeclaim_count.used'; +/** + * The enforced hard limit of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Hard` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_HARD = 'openshift.clusterquota.storage.request.hard'; +/** + * The current observed total usage of the resource across all projects. + * + * @note This metric is retrieved from the `Status.Total.Used` field of the + * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core) + * of the + * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total). + * + * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific + * storage class. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_USED = 'openshift.clusterquota.storage.request.used'; +/** + * The number of log records for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_log_records`), rejected log records **MUST** count as failed and only non-rejected log records count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_EXPORTER_LOG_EXPORTED = 'otel.sdk.exporter.log.exported'; +/** + * The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_EXPORTER_LOG_INFLIGHT = 'otel.sdk.exporter.log.inflight'; +/** + * The number of metric data points for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_data_points`), rejected data points **MUST** count as failed and only non-rejected data points count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_EXPORTED = 'otel.sdk.exporter.metric_data_point.exported'; +/** + * The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_INFLIGHT = 'otel.sdk.exporter.metric_data_point.inflight'; +/** + * The duration of exporting a batch of telemetry records. + * + * @note This metric defines successful operations using the full success definitions for [http](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1) + * and [grpc](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success). Anything else is defined as an unsuccessful operation. For successful + * operations, `error.type` **MUST NOT** be set. For unsuccessful export operations, `error.type` **MUST** contain a relevant failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_EXPORTER_OPERATION_DURATION = 'otel.sdk.exporter.operation.duration'; +/** + * The number of spans for which the export has finished, either successful or failed. + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans **MUST** count as failed and only non-rejected spans count as success. + * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED = 'otel.sdk.exporter.span.exported'; +/** + * Deprecated, use `otel.sdk.exporter.span.exported` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.exported`. + */ +exports.METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT = 'otel.sdk.exporter.span.exported.count'; +/** + * The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed). + * + * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT = 'otel.sdk.exporter.span.inflight'; +/** + * Deprecated, use `otel.sdk.exporter.span.inflight` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.exporter.span.inflight`. + */ +exports.METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT = 'otel.sdk.exporter.span.inflight.count'; +/** + * The number of logs submitted to enabled SDK Loggers. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_LOG_CREATED = 'otel.sdk.log.created'; +/** + * The duration of the collect operation of the metric reader. + * + * @note For successful collections, `error.type` **MUST NOT** be set. For failed collections, `error.type` **SHOULD** contain the failure cause. + * It can happen that metrics collection is successful for some MetricProducers, while others fail. In that case `error.type` **SHOULD** be set to any of the failure causes. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_METRIC_READER_COLLECTION_DURATION = 'otel.sdk.metric_reader.collection.duration'; +/** + * The number of log records for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter, + * not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED = 'otel.sdk.processor.log.processed'; +/** + * The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold. + * + * @note Only applies to Log Record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY = 'otel.sdk.processor.log.queue.capacity'; +/** + * The number of log records in the queue of a given instance of an SDK log processor. + * + * @note Only applies to log record processors which use a queue, e.g. the SDK Batching Log Record Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE = 'otel.sdk.processor.log.queue.size'; +/** + * The number of spans for which the processing has finished, either successful or failed. + * + * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause. + * For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED = 'otel.sdk.processor.span.processed'; +/** + * Deprecated, use `otel.sdk.processor.span.processed` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.processor.span.processed`. + */ +exports.METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT = 'otel.sdk.processor.span.processed.count'; +/** + * The maximum number of spans the queue of a given instance of an SDK span processor can hold. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY = 'otel.sdk.processor.span.queue.capacity'; +/** + * The number of spans in the queue of a given instance of an SDK span processor. + * + * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE = 'otel.sdk.processor.span.queue.size'; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +exports.METRIC_OTEL_SDK_SPAN_ENDED = 'otel.sdk.span.ended'; +/** + * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Obsoleted. + */ +exports.METRIC_OTEL_SDK_SPAN_ENDED_COUNT = 'otel.sdk.span.ended.count'; +/** + * The number of created spans with `recording=true` for which the end operation has not been called yet. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live'; +/** + * Deprecated, use `otel.sdk.span.live` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `otel.sdk.span.live`. + */ +exports.METRIC_OTEL_SDK_SPAN_LIVE_COUNT = 'otel.sdk.span.live.count'; +/** + * The number of created spans. + * + * @note Implementations **MUST** record this metric for all spans, even for non-recording ones. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started'; +/** + * Number of times the process has been context switched. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_CONTEXT_SWITCHES = 'process.context_switches'; +/** + * Total CPU seconds broken down by different states. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_CPU_TIME = 'process.cpu.time'; +/** + * Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_CPU_UTILIZATION = 'process.cpu.utilization'; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_DISK_IO = 'process.disk.io'; +/** + * The amount of physical memory in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_MEMORY_USAGE = 'process.memory.usage'; +/** + * The amount of committed virtual memory. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_MEMORY_VIRTUAL = 'process.memory.virtual'; +/** + * Network bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_NETWORK_IO = 'process.network.io'; +/** + * Deprecated, use `process.unix.file_descriptor.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `process.unix.file_descriptor.count`. + */ +exports.METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT = 'process.open_file_descriptor.count'; +/** + * Number of page faults the process has made. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_PAGING_FAULTS = 'process.paging.faults'; +/** + * Process threads count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_THREAD_COUNT = 'process.thread.count'; +/** + * Number of unix file descriptors in use by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT = 'process.unix.file_descriptor.count'; +/** + * The time the process has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_UPTIME = 'process.uptime'; +/** + * Number of handles held by the process. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_PROCESS_WINDOWS_HANDLE_COUNT = 'process.windows.handle.count'; +/** + * Measures the duration of outbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC client span, the metric value + * **SHOULD** be the same as the RPC client span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_RPC_CLIENT_CALL_DURATION = 'rpc.client.call.duration'; +/** + * Deprecated, use `rpc.client.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.client.call.duration` with unit `s`. + */ +exports.METRIC_RPC_CLIENT_DURATION = 'rpc.client.duration'; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_RPC_CLIENT_REQUEST_SIZE = 'rpc.client.request.size'; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.METRIC_RPC_CLIENT_REQUESTS_PER_RPC = 'rpc.client.requests_per_rpc'; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_RPC_CLIENT_RESPONSE_SIZE = 'rpc.client.response.size'; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.METRIC_RPC_CLIENT_RESPONSES_PER_RPC = 'rpc.client.responses_per_rpc'; +/** + * Measures the duration of inbound remote procedure calls (RPC). + * + * @note When this metric is reported alongside an RPC server span, the metric value + * **SHOULD** be the same as the RPC server span duration. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_RPC_SERVER_CALL_DURATION = 'rpc.server.call.duration'; +/** + * Deprecated, use `rpc.server.call.duration` instead. Note: the unit also changed from `ms` to `s`. + * + * @note While streaming RPCs may record this metric as start-of-batch + * to end-of-batch, it's hard to interpret in practice. + * + * **Streaming**: N/A. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `rpc.server.call.duration` with unit `s`. + */ +exports.METRIC_RPC_SERVER_DURATION = 'rpc.server.duration'; +/** + * Measures the size of RPC request messages (uncompressed). + * + * @note **Streaming**: Recorded per message in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_RPC_SERVER_REQUEST_SIZE = 'rpc.server.request.size'; +/** + * Measures the number of messages received per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming** : This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.METRIC_RPC_SERVER_REQUESTS_PER_RPC = 'rpc.server.requests_per_rpc'; +/** + * Measures the size of RPC response messages (uncompressed). + * + * @note **Streaming**: Recorded per response in a streaming batch + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_RPC_SERVER_RESPONSE_SIZE = 'rpc.server.response.size'; +/** + * Measures the number of messages sent per RPC. + * + * @note Should be 1 for all non-streaming RPCs. + * + * **Streaming**: This metric is required for server and client streaming RPCs + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. + */ +exports.METRIC_RPC_SERVER_RESPONSES_PER_RPC = 'rpc.server.responses_per_rpc'; +/** + * Operating frequency of the logical CPU in Hertz. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_CPU_FREQUENCY = 'system.cpu.frequency'; +/** + * Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_CPU_LOGICAL_COUNT = 'system.cpu.logical.count'; +/** + * Reports the number of actual physical processor cores on the hardware. + * + * @note Calculated by multiplying the number of sockets by the number of cores per socket + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_CPU_PHYSICAL_COUNT = 'system.cpu.physical.count'; +/** + * Seconds each logical CPU spent on each mode. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_CPU_TIME = 'system.cpu.time'; +/** + * For each logical CPU, the utilization is calculated as the change in cumulative CPU time (cpu.time) over a measurement interval, divided by the elapsed time. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_CPU_UTILIZATION = 'system.cpu.utilization'; +/** + * Disk bytes transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_DISK_IO = 'system.disk.io'; +/** + * Time disk spent activated. + * + * @note The real elapsed time ("wall clock") used in the I/O path (time from operations running in parallel are not counted). Measured as: + * + * - Linux: Field 13 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: The complement of + * ["Disk% Idle Time"](https://learn.microsoft.com/archive/blogs/askcore/windows-performance-monitor-disk-counters-explained#windows-performance-monitor-disk-counters-explained) + * performance counter: `uptime * (100 - "Disk\% Idle Time") / 100` + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_DISK_IO_TIME = 'system.disk.io_time'; +/** + * The total storage capacity of the disk. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_DISK_LIMIT = 'system.disk.limit'; +/** + * The number of disk reads/writes merged into single physical disk access operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_DISK_MERGED = 'system.disk.merged'; +/** + * Sum of the time each operation took to complete. + * + * @note Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as: + * + * - Linux: Fields 7 & 11 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) + * - Windows: "Avg. Disk sec/Read" perf counter multiplied by "Disk Reads/sec" perf counter (similar for Writes) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_DISK_OPERATION_TIME = 'system.disk.operation_time'; +/** + * Disk operations count. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_DISK_OPERATIONS = 'system.disk.operations'; +/** + * The total storage capacity of the filesystem. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_FILESYSTEM_LIMIT = 'system.filesystem.limit'; +/** + * Reports a filesystem's space usage across different states. + * + * @note The sum of all `system.filesystem.usage` values over the different `system.filesystem.state` attributes + * **SHOULD** equal the total storage capacity of the filesystem, that is `system.filesystem.limit`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_FILESYSTEM_USAGE = 'system.filesystem.usage'; +/** + * Fraction of filesystem bytes used. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_FILESYSTEM_UTILIZATION = 'system.filesystem.utilization'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.available`. + */ +exports.METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE = 'system.linux.memory.available'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.memory.linux.slab.usage`. + */ +exports.METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE = 'system.linux.memory.slab.usage'; +/** + * Total virtual memory available in the system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_MEMORY_LIMIT = 'system.memory.limit'; +/** + * An estimate of how much memory is available for starting new applications, without causing swapping. + * + * @note This is an alternative to `system.memory.usage` metric with `state=free`. + * Linux starting from 3.14 exports "available" memory. It takes "free" memory as a baseline, and then factors in kernel-specific values. + * This is supposed to be more accurate than just "free" memory. + * For reference, see the calculations [here](https://superuser.com/a/980821). + * See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE = 'system.memory.linux.available'; +/** + * Reports the memory used by the Linux kernel for managing caches of frequently used objects. + * + * @note The sum over the `reclaimable` and `unreclaimable` state values in `memory.linux.slab.usage` **SHOULD** be equal to the total slab memory available on the system. + * Note that the total slab memory is not constant and may vary over time. + * See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE = 'system.memory.linux.slab.usage'; +/** + * Shared memory used (mostly by tmpfs). + * + * @note Equivalent of `shared` from [`free` command](https://man7.org/linux/man-pages/man1/free.1.html) or + * `Shmem` from [`/proc/meminfo`](https://man7.org/linux/man-pages/man5/proc.5.html)" + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_MEMORY_SHARED = 'system.memory.shared'; +/** + * Reports memory in use by state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_MEMORY_USAGE = 'system.memory.usage'; +/** + * Percentage of memory bytes in use. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_MEMORY_UTILIZATION = 'system.memory.utilization'; +/** + * The number of connections. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_NETWORK_CONNECTION_COUNT = 'system.network.connection.count'; +/** + * Deprecated, use `system.network.connection.count` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.connection.count`. + */ +exports.METRIC_SYSTEM_NETWORK_CONNECTIONS = 'system.network.connections'; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.dropped`. + */ +exports.METRIC_SYSTEM_NETWORK_DROPPED = 'system.network.dropped'; +/** + * Count of network errors detected. + * + * @note Measured as: + * + * - Linux: the `errs` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)). + * - Windows: [`InErrors`/`OutErrors`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_NETWORK_ERRORS = 'system.network.errors'; +/** + * The number of bytes transmitted and received. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_NETWORK_IO = 'system.network.io'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_NETWORK_PACKET_COUNT = 'system.network.packet.count'; +/** + * Count of packets that are dropped or discarded even though there was no error. + * + * @note Measured as: + * + * - Linux: the `drop` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) + * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) + * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_NETWORK_PACKET_DROPPED = 'system.network.packet.dropped'; +/** + * The number of packets transferred. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `system.network.packet.count`. + */ +exports.METRIC_SYSTEM_NETWORK_PACKETS = 'system.network.packets'; +/** + * The number of page faults. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_PAGING_FAULTS = 'system.paging.faults'; +/** + * The number of paging operations. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_PAGING_OPERATIONS = 'system.paging.operations'; +/** + * Unix swap or windows pagefile usage. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_PAGING_USAGE = 'system.paging.usage'; +/** + * Swap (unix) or pagefile (windows) utilization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_PAGING_UTILIZATION = 'system.paging.utilization'; +/** + * Total number of processes in each state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_PROCESS_COUNT = 'system.process.count'; +/** + * Total number of processes created over uptime of the host. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_PROCESS_CREATED = 'system.process.created'; +/** + * The time the system has been running. + * + * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. + * The actual accuracy would depend on the instrumentation and operating system. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_SYSTEM_UPTIME = 'system.uptime'; +/** + * Garbage collection duration. + * + * @note The values can be retrieved from [`perf_hooks.PerformanceObserver(...).observe({ entryTypes: ['gc'] })`](https://nodejs.org/api/perf_hooks.html#performanceobserverobserveoptions) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_V8JS_GC_DURATION = 'v8js.gc.duration'; +/** + * Deprecated, use `v8js.memory.heap.space.available_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.available_size`. + */ +exports.METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.heap.space.available_size'; +/** + * Deprecated, use `v8js.memory.heap.space.physical_size` instead. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `v8js.memory.heap.space.physical_size`. + */ +exports.METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.heap.space.physical_size'; +/** + * Total heap memory size pre-allocated. + * + * @note The value can be retrieved from value `space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_V8JS_MEMORY_HEAP_LIMIT = 'v8js.memory.heap.limit'; +/** + * Heap space available size. + * + * @note Value can be retrieved from value `space_available_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.memory.heap.space.available_size'; +/** + * Committed size of a heap space. + * + * @note Value can be retrieved from value `physical_space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.memory.heap.space.physical_size'; +/** + * Heap Memory size allocated. + * + * @note The value can be retrieved from value `space_used_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics) + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_V8JS_MEMORY_HEAP_USED = 'v8js.memory.heap.used'; +/** + * The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged). + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_VCS_CHANGE_COUNT = 'vcs.change.count'; +/** + * The time duration a change (pull request/merge request/changelist) has been in a given state. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_VCS_CHANGE_DURATION = 'vcs.change.duration'; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_VCS_CHANGE_TIME_TO_APPROVAL = 'vcs.change.time_to_approval'; +/** + * The amount of time since its creation it took a change (pull request/merge request/changelist) to get merged into the target(base) ref. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_VCS_CHANGE_TIME_TO_MERGE = 'vcs.change.time_to_merge'; +/** + * The number of unique contributors to a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_VCS_CONTRIBUTOR_COUNT = 'vcs.contributor.count'; +/** + * The number of refs of type branch or tag in a repository. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_VCS_REF_COUNT = 'vcs.ref.count'; +/** + * The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.line_change.type` value. For example if a ref added 3 lines and removed 2 lines, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers). + * If number of lines added/removed should be calculated from the start of time, then `vcs.ref.base.name` **SHOULD** be set to an empty string. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_VCS_REF_LINES_DELTA = 'vcs.ref.lines_delta'; +/** + * The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute. + * + * @note This metric should be reported for each `vcs.revision_delta.direction` value. For example if branch `a` is 3 commits behind and 2 commits ahead of `trunk`, + * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers) and `vcs.ref.base.name` is set to `trunk`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_VCS_REF_REVISIONS_DELTA = 'vcs.ref.revisions_delta'; +/** + * Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_VCS_REF_TIME = 'vcs.ref.time'; +/** + * The number of repositories in an organization. + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +exports.METRIC_VCS_REPOSITORY_COUNT = 'vcs.repository.count'; +//# sourceMappingURL=experimental_metrics.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js.map new file mode 100644 index 0000000..c5676b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"experimental_metrics.js","sourceRoot":"","sources":["../../src/experimental_metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * The authentication duration for a request.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_AUTHENTICATE_DURATION = 'aspnetcore.authentication.authenticate.duration' as const;\n\n/**\n * The total number of times a scheme is challenged.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_CHALLENGES = 'aspnetcore.authentication.challenges' as const;\n\n/**\n * The total number of times an authenticated user attempts to access a resource they are not permitted to access.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_FORBIDS = 'aspnetcore.authentication.forbids' as const;\n\n/**\n * The total number of times a principal is signed in with a scheme.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_INS = 'aspnetcore.authentication.sign_ins' as const;\n\n/**\n * The total number of times a principal is signed out with a scheme.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authentication`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHENTICATION_SIGN_OUTS = 'aspnetcore.authentication.sign_outs' as const;\n\n/**\n * The total number of authorization attempts.\n *\n * @note Meter name: `Microsoft.AspNetCore.Authorization`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_AUTHORIZATION_ATTEMPTS = 'aspnetcore.authorization.attempts' as const;\n\n/**\n * The duration of authenticate attempts. The authenticate metrics is recorded by sign in methods such as PasswordSignInAsync and TwoFactorSignInAsync.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_AUTHENTICATE_DURATION = 'aspnetcore.identity.sign_in.authenticate.duration' as const;\n\n/**\n * The total number of check password attempts. Checks that the account is in a state that can log in and that the password is valid using the UserManager.CheckPasswordAsync method.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.sign_in.check_password_attempts' as const;\n\n/**\n * The total number of calls to sign in user principals.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_INS = 'aspnetcore.identity.sign_in.sign_ins' as const;\n\n/**\n * The total number of calls to sign out user principals.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_SIGN_OUTS = 'aspnetcore.identity.sign_in.sign_outs' as const;\n\n/**\n * The total number of two factor clients forgotten.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_FORGOTTEN = 'aspnetcore.identity.sign_in.two_factor_clients_forgotten' as const;\n\n/**\n * The total number of two factor clients remembered.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_SIGN_IN_TWO_FACTOR_CLIENTS_REMEMBERED = 'aspnetcore.identity.sign_in.two_factor_clients_remembered' as const;\n\n/**\n * The number of check password attempts. Only checks whether the password is valid and not whether the user account is in a state that can log in.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_CHECK_PASSWORD_ATTEMPTS = 'aspnetcore.identity.user.check_password_attempts' as const;\n\n/**\n * The duration of user creation operations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_CREATE_DURATION = 'aspnetcore.identity.user.create.duration' as const;\n\n/**\n * The duration of user deletion operations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_DELETE_DURATION = 'aspnetcore.identity.user.delete.duration' as const;\n\n/**\n * The total number of token generations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_GENERATED_TOKENS = 'aspnetcore.identity.user.generated_tokens' as const;\n\n/**\n * The duration of user update operations.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_UPDATE_DURATION = 'aspnetcore.identity.user.update.duration' as const;\n\n/**\n * The total number of token verification attempts.\n *\n * @note Meter name: `Microsoft.AspNetCore.Identity`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_IDENTITY_USER_VERIFY_TOKEN_ATTEMPTS = 'aspnetcore.identity.user.verify_token_attempts' as const;\n\n/**\n * Total number of bytes allocated by the memory pool. Allocation occurs when a memory rental request exceeds the available pooled memory.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_ALLOCATED = 'aspnetcore.memory_pool.allocated' as const;\n\n/**\n * Total number of bytes evicted from the memory pool. Eviction occurs when idle pooled memory is reclaimed.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_EVICTED = 'aspnetcore.memory_pool.evicted' as const;\n\n/**\n * Number of bytes currently pooled and available for reuse.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_POOLED = 'aspnetcore.memory_pool.pooled' as const;\n\n/**\n * Total number of bytes rented from the memory pool.\n *\n * @note Meter name: `Microsoft.AspNetCore.MemoryPool`; Added in: ASP.NET Core 10.0\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_ASPNETCORE_MEMORY_POOL_RENTED = 'aspnetcore.memory_pool.rented' as const;\n\n/**\n * Number of active client instances.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_AZURE_COSMOSDB_CLIENT_ACTIVE_INSTANCE_COUNT = 'azure.cosmosdb.client.active_instance.count' as const;\n\n/**\n * [Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_AZURE_COSMOSDB_CLIENT_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.client.operation.request_charge' as const;\n\n/**\n * The number of pipeline runs currently active in the system by state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_PIPELINE_RUN_ACTIVE = 'cicd.pipeline.run.active' as const;\n\n/**\n * Duration of a pipeline run grouped by pipeline, state and result.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_PIPELINE_RUN_DURATION = 'cicd.pipeline.run.duration' as const;\n\n/**\n * The number of errors encountered in pipeline runs (eg. compile, test failures).\n *\n * @note There might be errors in a pipeline run that are non fatal (eg. they are suppressed) or in a parallel stage multiple stages could have a fatal error.\n * This means that this error count might not be the same as the count of metric `cicd.pipeline.run.duration` with run result `failure`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_PIPELINE_RUN_ERRORS = 'cicd.pipeline.run.errors' as const;\n\n/**\n * The number of errors in a component of the CICD system (eg. controller, scheduler, agent).\n *\n * @note Errors in pipeline run execution are explicitly excluded. Ie a test failure is not counted in this metric.\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_SYSTEM_ERRORS = 'cicd.system.errors' as const;\n\n/**\n * The number of workers on the CICD system by state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CICD_WORKER_COUNT = 'cicd.worker.count' as const;\n\n/**\n * Total CPU time consumed.\n *\n * @note Total CPU time consumed by the specific container on all available CPU cores\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_CPU_TIME = 'container.cpu.time' as const;\n\n/**\n * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs.\n *\n * @note CPU usage of the specific container on all available CPU cores, averaged over the sample window\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_CPU_USAGE = 'container.cpu.usage' as const;\n\n/**\n * Disk bytes for the container.\n *\n * @note The total number of bytes read/written successfully (aggregated from all disks).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_DISK_IO = 'container.disk.io' as const;\n\n/**\n * Container filesystem available bytes.\n *\n * @note In K8s, this metric is derived from the\n * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_FILESYSTEM_AVAILABLE = 'container.filesystem.available' as const;\n\n/**\n * Container filesystem capacity.\n *\n * @note In K8s, this metric is derived from the\n * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_FILESYSTEM_CAPACITY = 'container.filesystem.capacity' as const;\n\n/**\n * Container filesystem usage.\n *\n * @note This may not equal capacity - available.\n *\n * In K8s, this metric is derived from the\n * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [ContainerStats.Rootfs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#ContainerStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_FILESYSTEM_USAGE = 'container.filesystem.usage' as const;\n\n/**\n * Container memory available.\n *\n * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted.\n * In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and by subtracting the `container_memory_working_set_bytes` metric from the `container_spec_memory_limit_bytes` metric.\n * In K8s, this metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_AVAILABLE = 'container.memory.available' as const;\n\n/**\n * Container memory paging faults.\n *\n * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_failures_total{failure_type=pgfault, scope=container}` and `container_memory_failures_total{failure_type=pgmajfault, scope=container}`metric.\n * In K8s, this metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_PAGING_FAULTS = 'container.memory.paging.faults' as const;\n\n/**\n * Container memory RSS.\n *\n * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_rss` metric.\n * In K8s, this metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_RSS = 'container.memory.rss' as const;\n\n/**\n * Memory usage of the container.\n *\n * @note Memory usage of the container.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_USAGE = 'container.memory.usage' as const;\n\n/**\n * Container memory working set.\n *\n * @note In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_working_set_bytes` metric.\n * In K8s, this metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_MEMORY_WORKING_SET = 'container.memory.working_set' as const;\n\n/**\n * Network bytes for the container.\n *\n * @note The number of bytes sent/received on all network interfaces by the container.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_NETWORK_IO = 'container.network.io' as const;\n\n/**\n * The time the container has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CONTAINER_UPTIME = 'container.uptime' as const;\n\n/**\n * Deprecated. Use `system.cpu.frequency` 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 `system.cpu.frequency`.\n */\nexport const METRIC_CPU_FREQUENCY = 'cpu.frequency' as const;\n\n/**\n * Deprecated. Use `system.cpu.time` 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 `system.cpu.time`.\n */\nexport const METRIC_CPU_TIME = 'cpu.time' as const;\n\n/**\n * Deprecated. Use `system.cpu.utilization` 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 `system.cpu.utilization`.\n */\nexport const METRIC_CPU_UTILIZATION = 'cpu.utilization' as const;\n\n/**\n * The total number of objects collected inside a generation since interpreter start.\n *\n * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CPYTHON_GC_COLLECTED_OBJECTS = 'cpython.gc.collected_objects' as const;\n\n/**\n * The number of times a generation was collected since interpreter start.\n *\n * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CPYTHON_GC_COLLECTIONS = 'cpython.gc.collections' as const;\n\n/**\n * The total number of objects which were found to be uncollectable inside a generation since interpreter start.\n *\n * @note This metric reports data from [`gc.stats()`](https://docs.python.org/3/library/gc.html#gc.get_stats).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_CPYTHON_GC_UNCOLLECTABLE_OBJECTS = 'cpython.gc.uncollectable_objects' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count' as const;\n\n/**\n * The time it took to create a new connection.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_CREATE_TIME = 'db.client.connection.create_time' as const;\n\n/**\n * The maximum number of idle open connections allowed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_IDLE_MAX = 'db.client.connection.idle.max' as const;\n\n/**\n * The minimum number of idle open connections allowed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_IDLE_MIN = 'db.client.connection.idle.min' as const;\n\n/**\n * The maximum number of open connections allowed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_MAX = 'db.client.connection.max' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests' as const;\n\n/**\n * The number of connection timeouts that have occurred trying to obtain a connection from the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_TIMEOUTS = 'db.client.connection.timeouts' as const;\n\n/**\n * The time between borrowing a connection and returning it to the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_USE_TIME = 'db.client.connection.use_time' as const;\n\n/**\n * The time it took to obtain an open connection from the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_WAIT_TIME = 'db.client.connection.wait_time' as const;\n\n/**\n * Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`.\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.create_time` with unit `s`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME = 'db.client.connections.create_time' as const;\n\n/**\n * Deprecated, use `db.client.connection.idle.max` 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.idle.max`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MAX = 'db.client.connections.idle.max' as const;\n\n/**\n * Deprecated, use `db.client.connection.idle.min` 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.idle.min`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_IDLE_MIN = 'db.client.connections.idle.min' as const;\n\n/**\n * Deprecated, use `db.client.connection.max` 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.max`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_MAX = 'db.client.connections.max' as const;\n\n/**\n * Deprecated, use `db.client.connection.pending_requests` 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.pending_requests`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS = 'db.client.connections.pending_requests' as const;\n\n/**\n * Deprecated, use `db.client.connection.timeouts` 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.timeouts`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_TIMEOUTS = 'db.client.connections.timeouts' as const;\n\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 */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage' as const;\n\n/**\n * Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`.\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.use_time` with unit `s`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USE_TIME = 'db.client.connections.use_time' as const;\n\n/**\n * Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`.\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.wait_time` with unit `s`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME = 'db.client.connections.wait_time' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.client.active_instance.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 `azure.cosmosdb.client.active_instance.count`.\n */\nexport const METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT = 'db.client.cosmosdb.active_instance.count' as const;\n\n/**\n * Deprecated, use `azure.cosmosdb.client.operation.request_charge` 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 `azure.cosmosdb.client.operation.request_charge`.\n */\nexport const METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE = 'db.client.cosmosdb.operation.request_charge' as const;\n\n/**\n * The actual number of records returned by the database operation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS = 'db.client.response.returned_rows' as const;\n\n/**\n * Measures the time taken to perform a DNS lookup.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DNS_LOOKUP_DURATION = 'dns.lookup.duration' as const;\n\n/**\n * Number of invocation cold starts.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_COLDSTARTS = 'faas.coldstarts' as const;\n\n/**\n * Distribution of CPU usage per invocation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_CPU_USAGE = 'faas.cpu_usage' as const;\n\n/**\n * Number of invocation errors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_ERRORS = 'faas.errors' as const;\n\n/**\n * Measures the duration of the function's initialization, such as a cold start.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_INIT_DURATION = 'faas.init_duration' as const;\n\n/**\n * Number of successful invocations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_INVOCATIONS = 'faas.invocations' as const;\n\n/**\n * Measures the duration of the function's logic execution.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_INVOKE_DURATION = 'faas.invoke_duration' as const;\n\n/**\n * Distribution of max memory usage per invocation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_MEM_USAGE = 'faas.mem_usage' as const;\n\n/**\n * Distribution of net I/O usage per invocation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_NET_IO = 'faas.net_io' as const;\n\n/**\n * Number of invocation timeouts.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_FAAS_TIMEOUTS = 'faas.timeouts' as const;\n\n/**\n * GenAI operation duration.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_CLIENT_OPERATION_DURATION = 'gen_ai.client.operation.duration' as const;\n\n/**\n * Number of input and output tokens used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_CLIENT_TOKEN_USAGE = 'gen_ai.client.token.usage' as const;\n\n/**\n * Generative AI server request duration such as time-to-last byte or last output token.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_SERVER_REQUEST_DURATION = 'gen_ai.server.request.duration' as const;\n\n/**\n * Time per output token generated after the first token for successful responses.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN = 'gen_ai.server.time_per_output_token' as const;\n\n/**\n * Time to generate first token for successful responses.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GEN_AI_SERVER_TIME_TO_FIRST_TOKEN = 'gen_ai.server.time_to_first_token' as const;\n\n/**\n * Heap size target percentage configured by the user, otherwise 100.\n *\n * @note The value range is [0.0,100.0]. Computed from `/gc/gogc:percent`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_CONFIG_GOGC = 'go.config.gogc' as const;\n\n/**\n * Count of live goroutines.\n *\n * @note Computed from `/sched/goroutines:goroutines`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_GOROUTINE_COUNT = 'go.goroutine.count' as const;\n\n/**\n * Memory allocated to the heap by the application.\n *\n * @note Computed from `/gc/heap/allocs:bytes`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_ALLOCATED = 'go.memory.allocated' as const;\n\n/**\n * Count of allocations to the heap by the application.\n *\n * @note Computed from `/gc/heap/allocs:objects`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_ALLOCATIONS = 'go.memory.allocations' as const;\n\n/**\n * Heap size target for the end of the GC cycle.\n *\n * @note Computed from `/gc/heap/goal:bytes`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_GC_GOAL = 'go.memory.gc.goal' as const;\n\n/**\n * Go runtime memory limit configured by the user, if a limit exists.\n *\n * @note Computed from `/gc/gomemlimit:bytes`. This metric is excluded if the limit obtained from the Go runtime is math.MaxInt64.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_LIMIT = 'go.memory.limit' as const;\n\n/**\n * Memory used by the Go runtime.\n *\n * @note Computed from `(/memory/classes/total:bytes - /memory/classes/heap/released:bytes)`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_MEMORY_USED = 'go.memory.used' as const;\n\n/**\n * The number of OS threads that can execute user-level Go code simultaneously.\n *\n * @note Computed from `/sched/gomaxprocs:threads`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_PROCESSOR_LIMIT = 'go.processor.limit' as const;\n\n/**\n * The time goroutines have spent in the scheduler in a runnable state before actually running.\n *\n * @note Computed from `/sched/latencies:seconds`. Bucket boundaries are provided by the runtime, and are subject to change.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_GO_SCHEDULE_DURATION = 'go.schedule.duration' as const;\n\n/**\n * Number of active HTTP requests.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_ACTIVE_REQUESTS = 'http.client.active_requests' as const;\n\n/**\n * The duration of the successfully established outbound HTTP connections.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_CONNECTION_DURATION = 'http.client.connection.duration' as const;\n\n/**\n * Number of outbound HTTP connections that are currently active or idle on the client.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_OPEN_CONNECTIONS = 'http.client.open_connections' as const;\n\n/**\n * Size of HTTP client request bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_REQUEST_BODY_SIZE = 'http.client.request.body.size' as const;\n\n/**\n * Size of HTTP client response bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE = 'http.client.response.body.size' as const;\n\n/**\n * Number of active HTTP server requests.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_SERVER_ACTIVE_REQUESTS = 'http.server.active_requests' as const;\n\n/**\n * Size of HTTP server request bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_SERVER_REQUEST_BODY_SIZE = 'http.server.request.body.size' as const;\n\n/**\n * Size of HTTP server response bodies.\n *\n * @note 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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HTTP_SERVER_RESPONSE_BODY_SIZE = 'http.server.response.body.size' as const;\n\n/**\n * Remaining fraction of battery charge.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_BATTERY_CHARGE = 'hw.battery.charge' as const;\n\n/**\n * Lower limit of battery charge fraction to ensure proper operation.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_BATTERY_CHARGE_LIMIT = 'hw.battery.charge.limit' as const;\n\n/**\n * Time left before battery is completely charged or discharged.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_BATTERY_TIME_LEFT = 'hw.battery.time_left' as const;\n\n/**\n * CPU current frequency.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_CPU_SPEED = 'hw.cpu.speed' as const;\n\n/**\n * CPU maximum frequency.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_CPU_SPEED_LIMIT = 'hw.cpu.speed.limit' as const;\n\n/**\n * Energy consumed by the component.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_ENERGY = 'hw.energy' as const;\n\n/**\n * Number of errors encountered by the component.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_ERRORS = 'hw.errors' as const;\n\n/**\n * Fan speed in revolutions per minute.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_FAN_SPEED = 'hw.fan.speed' as const;\n\n/**\n * Speed limit in rpm.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_FAN_SPEED_LIMIT = 'hw.fan.speed.limit' as const;\n\n/**\n * Fan speed expressed as a fraction of its maximum speed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_FAN_SPEED_RATIO = 'hw.fan.speed_ratio' as const;\n\n/**\n * Received and transmitted bytes by the GPU.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_IO = 'hw.gpu.io' as const;\n\n/**\n * Size of the GPU memory.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_MEMORY_LIMIT = 'hw.gpu.memory.limit' as const;\n\n/**\n * GPU memory used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_MEMORY_USAGE = 'hw.gpu.memory.usage' as const;\n\n/**\n * Fraction of GPU memory used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_MEMORY_UTILIZATION = 'hw.gpu.memory.utilization' as const;\n\n/**\n * Fraction of time spent in a specific task.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_GPU_UTILIZATION = 'hw.gpu.utilization' as const;\n\n/**\n * Ambient (external) temperature of the physical host.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_AMBIENT_TEMPERATURE = 'hw.host.ambient_temperature' as const;\n\n/**\n * Total energy consumed by the entire physical host, in joules.\n *\n * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_ENERGY = 'hw.host.energy' as const;\n\n/**\n * By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_HEATING_MARGIN = 'hw.host.heating_margin' as const;\n\n/**\n * Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred).\n *\n * @note The overall energy usage of a host **MUST** be reported using the specific `hw.host.energy` and `hw.host.power` metrics **only**, instead of the generic `hw.energy` and `hw.power` described in the previous section, to prevent summing up overlapping values.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_HOST_POWER = 'hw.host.power' as const;\n\n/**\n * Size of the logical disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_LOGICAL_DISK_LIMIT = 'hw.logical_disk.limit' as const;\n\n/**\n * Logical disk space usage.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_LOGICAL_DISK_USAGE = 'hw.logical_disk.usage' as const;\n\n/**\n * Logical disk space utilization as a fraction.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_LOGICAL_DISK_UTILIZATION = 'hw.logical_disk.utilization' as const;\n\n/**\n * Size of the memory module.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_MEMORY_SIZE = 'hw.memory.size' as const;\n\n/**\n * Link speed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_BANDWIDTH_LIMIT = 'hw.network.bandwidth.limit' as const;\n\n/**\n * Utilization of the network bandwidth as a fraction.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_BANDWIDTH_UTILIZATION = 'hw.network.bandwidth.utilization' as const;\n\n/**\n * Received and transmitted network traffic in bytes.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_IO = 'hw.network.io' as const;\n\n/**\n * Received and transmitted network traffic in packets (or frames).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_PACKETS = 'hw.network.packets' as const;\n\n/**\n * Link status: `1` (up) or `0` (down).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_NETWORK_UP = 'hw.network.up' as const;\n\n/**\n * Endurance remaining for this SSD disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_PHYSICAL_DISK_ENDURANCE_UTILIZATION = 'hw.physical_disk.endurance_utilization' as const;\n\n/**\n * Size of the disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_PHYSICAL_DISK_SIZE = 'hw.physical_disk.size' as const;\n\n/**\n * Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_PHYSICAL_DISK_SMART = 'hw.physical_disk.smart' as const;\n\n/**\n * Instantaneous power consumed by the component.\n *\n * @note It is recommended to report `hw.energy` instead of `hw.power` when possible.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER = 'hw.power' as const;\n\n/**\n * Maximum power output of the power supply.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER_SUPPLY_LIMIT = 'hw.power_supply.limit' as const;\n\n/**\n * Current power output of the power supply.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER_SUPPLY_USAGE = 'hw.power_supply.usage' as const;\n\n/**\n * Utilization of the power supply as a fraction of its maximum output.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_POWER_SUPPLY_UTILIZATION = 'hw.power_supply.utilization' as const;\n\n/**\n * Operational status: `1` (true) or `0` (false) for each of the possible states.\n *\n * @note `hw.status` is currently specified as an *UpDownCounter* but would ideally be represented using a [*StateSet* as defined in OpenMetrics](https://github.com/prometheus/OpenMetrics/blob/v1.0.0/specification/OpenMetrics.md#stateset). This semantic convention will be updated once *StateSet* is specified in OpenTelemetry. This planned change is not expected to have any consequence on the way users query their timeseries backend to retrieve the values of `hw.status` over time.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_STATUS = 'hw.status' as const;\n\n/**\n * Operations performed by the tape drive.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_TAPE_DRIVE_OPERATIONS = 'hw.tape_drive.operations' as const;\n\n/**\n * Temperature in degrees Celsius.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_TEMPERATURE = 'hw.temperature' as const;\n\n/**\n * Temperature limit in degrees Celsius.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_TEMPERATURE_LIMIT = 'hw.temperature.limit' as const;\n\n/**\n * Voltage measured by the sensor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_VOLTAGE = 'hw.voltage' as const;\n\n/**\n * Voltage limit in Volts.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_VOLTAGE_LIMIT = 'hw.voltage.limit' as const;\n\n/**\n * Nominal (expected) voltage.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_HW_VOLTAGE_NOMINAL = 'hw.voltage.nominal' as const;\n\n/**\n * Number of buffers in the pool.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_BUFFER_COUNT = 'jvm.buffer.count' as const;\n\n/**\n * Measure of total memory capacity of buffers.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_BUFFER_MEMORY_LIMIT = 'jvm.buffer.memory.limit' as const;\n\n/**\n * Deprecated, use `jvm.buffer.memory.used` 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 `jvm.buffer.memory.used`.\n */\nexport const METRIC_JVM_BUFFER_MEMORY_USAGE = 'jvm.buffer.memory.usage' as const;\n\n/**\n * Measure of memory used by buffers.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_BUFFER_MEMORY_USED = 'jvm.buffer.memory.used' as const;\n\n/**\n * Number of open file descriptors as reported by the JVM.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_FILE_DESCRIPTOR_COUNT = 'jvm.file_descriptor.count' as const;\n\n/**\n * Measure of initial memory requested.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_MEMORY_INIT = 'jvm.memory.init' as const;\n\n/**\n * Average CPU load of the whole system for the last minute as reported by the JVM.\n *\n * @note The value range is [0,n], where n is the number of CPU cores - or a negative number if the value is not available. 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/java.management/java/lang/management/OperatingSystemMXBean.html#getSystemLoadAverage()).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_SYSTEM_CPU_LOAD_1M = 'jvm.system.cpu.load_1m' as const;\n\n/**\n * Recent CPU utilization for the whole system 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#getCpuLoad()).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_JVM_SYSTEM_CPU_UTILIZATION = 'jvm.system.cpu.utilization' as const;\n\n/**\n * Maximum CPU resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_LIMIT = 'k8s.container.cpu.limit' as const;\n\n/**\n * The ratio of container CPU usage to its CPU limit.\n *\n * @note The value range is [0.0,1.0]. A value of 1.0 means the container is using 100% of its CPU limit. If the CPU limit is not set, this metric **SHOULD NOT** be emitted for that container.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION = 'k8s.container.cpu.limit_utilization' as const;\n\n/**\n * CPU resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_REQUEST = 'k8s.container.cpu.request' as const;\n\n/**\n * The ratio of container CPU usage to its CPU request.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION = 'k8s.container.cpu.request_utilization' as const;\n\n/**\n * Maximum ephemeral storage resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_LIMIT = 'k8s.container.ephemeral_storage.limit' as const;\n\n/**\n * Ephemeral storage resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_EPHEMERAL_STORAGE_REQUEST = 'k8s.container.ephemeral_storage.request' as const;\n\n/**\n * Maximum memory resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_MEMORY_LIMIT = 'k8s.container.memory.limit' as const;\n\n/**\n * Memory resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_MEMORY_REQUEST = 'k8s.container.memory.request' as const;\n\n/**\n * Indicates whether the container is currently marked as ready to accept traffic, based on its readiness probe (1 = ready, 0 = not ready).\n *\n * @note This metric **SHOULD** reflect the value of the `ready` field in the\n * [K8s ContainerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_READY = 'k8s.container.ready' as const;\n\n/**\n * Describes how many times the container has restarted (since the last counter reset).\n *\n * @note This value is pulled directly from the K8s API and the value can go indefinitely high and be reset to 0\n * at any time depending on how your kubelet is configured to prune dead containers.\n * It is best to not depend too much on the exact value but rather look at it as\n * either == 0, in which case you can conclude there were no restarts in the recent past, or > 0, in which case\n * you can conclude there were restarts in the recent past, and not try and analyze the value beyond that.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart.count' as const;\n\n/**\n * Describes the number of K8s containers that are currently in a state for a given reason.\n *\n * @note All possible container state reasons will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current state reason will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STATUS_REASON = 'k8s.container.status.reason' as const;\n\n/**\n * Describes the number of K8s containers that are currently in a given state.\n *\n * @note All possible container states will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current state will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STATUS_STATE = 'k8s.container.status.state' as const;\n\n/**\n * Maximum storage resource limit set for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STORAGE_LIMIT = 'k8s.container.storage.limit' as const;\n\n/**\n * Storage resource requested for the container.\n *\n * @note See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core for details.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CONTAINER_STORAGE_REQUEST = 'k8s.container.storage.request' as const;\n\n/**\n * Deprecated, use `k8s.cronjob.job.active` instead.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch).\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 `k8s.cronjob.job.active`.\n */\nexport const METRIC_K8S_CRONJOB_ACTIVE_JOBS = 'k8s.cronjob.active_jobs' as const;\n\n/**\n * The number of actively running jobs for a cronjob.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s CronJobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#cronjobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_CRONJOB_JOB_ACTIVE = 'k8s.cronjob.job.active' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.current_scheduled` instead.\n *\n * @note This metric aligns with the `currentNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.current_scheduled`.\n */\nexport const METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES = 'k8s.daemonset.current_scheduled_nodes' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.desired_scheduled` instead.\n *\n * @note This metric aligns with the `desiredNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.desired_scheduled`.\n */\nexport const METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES = 'k8s.daemonset.desired_scheduled_nodes' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.misscheduled` instead.\n *\n * @note This metric aligns with the `numberMisscheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.misscheduled`.\n */\nexport const METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES = 'k8s.daemonset.misscheduled_nodes' as const;\n\n/**\n * Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod.\n *\n * @note This metric aligns with the `currentNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED = 'k8s.daemonset.node.current_scheduled' as const;\n\n/**\n * Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod).\n *\n * @note This metric aligns with the `desiredNumberScheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED = 'k8s.daemonset.node.desired_scheduled' as const;\n\n/**\n * Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod.\n *\n * @note This metric aligns with the `numberMisscheduled` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED = 'k8s.daemonset.node.misscheduled' as const;\n\n/**\n * Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.\n *\n * @note This metric aligns with the `numberReady` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DAEMONSET_NODE_READY = 'k8s.daemonset.node.ready' as const;\n\n/**\n * Deprecated, use `k8s.daemonset.node.ready` instead.\n *\n * @note This metric aligns with the `numberReady` field of the\n * [K8s DaemonSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#daemonsetstatus-v1-apps).\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 `k8s.daemonset.node.ready`.\n */\nexport const METRIC_K8S_DAEMONSET_READY_NODES = 'k8s.daemonset.ready_nodes' as const;\n\n/**\n * Deprecated, use `k8s.deployment.pod.available` instead.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps).\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 `k8s.deployment.pod.available`.\n */\nexport const METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS = 'k8s.deployment.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.deployment.pod.desired` instead.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps).\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 `k8s.deployment.pod.desired`.\n */\nexport const METRIC_K8S_DEPLOYMENT_DESIRED_PODS = 'k8s.deployment.desired_pods' as const;\n\n/**\n * Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s DeploymentStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DEPLOYMENT_POD_AVAILABLE = 'k8s.deployment.pod.available' as const;\n\n/**\n * Number of desired replica pods in this deployment.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s DeploymentSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#deploymentspec-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_DEPLOYMENT_POD_DESIRED = 'k8s.deployment.pod.desired' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.current` instead.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\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 `k8s.hpa.pod.current`.\n */\nexport const METRIC_K8S_HPA_CURRENT_PODS = 'k8s.hpa.current_pods' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.desired` instead.\n *\n * @note This metric aligns with the `desiredReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\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 `k8s.hpa.pod.desired`.\n */\nexport const METRIC_K8S_HPA_DESIRED_PODS = 'k8s.hpa.desired_pods' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.max` instead.\n *\n * @note This metric aligns with the `maxReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\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 `k8s.hpa.pod.max`.\n */\nexport const METRIC_K8S_HPA_MAX_PODS = 'k8s.hpa.max_pods' as const;\n\n/**\n * Target average utilization, in percentage, for CPU resource in HPA config.\n *\n * @note This metric aligns with the `averageUtilization` field of the\n * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling).\n * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis),\n * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_UTILIZATION = 'k8s.hpa.metric.target.cpu.average_utilization' as const;\n\n/**\n * Target average value for CPU resource in HPA config.\n *\n * @note This metric aligns with the `averageValue` field of the\n * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling).\n * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis),\n * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_METRIC_TARGET_CPU_AVERAGE_VALUE = 'k8s.hpa.metric.target.cpu.average_value' as const;\n\n/**\n * Target value for CPU resource in HPA config.\n *\n * @note This metric aligns with the `value` field of the\n * [K8s HPA MetricTarget](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#metrictarget-v2-autoscaling).\n * If the type of the metric is [`ContainerResource`](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis),\n * the `k8s.container.name` attribute **MUST** be set to identify the specific container within the pod to which the metric applies.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_METRIC_TARGET_CPU_VALUE = 'k8s.hpa.metric.target.cpu.value' as const;\n\n/**\n * Deprecated, use `k8s.hpa.pod.min` instead.\n *\n * @note This metric aligns with the `minReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\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 `k8s.hpa.pod.min`.\n */\nexport const METRIC_K8S_HPA_MIN_PODS = 'k8s.hpa.min_pods' as const;\n\n/**\n * Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_CURRENT = 'k8s.hpa.pod.current' as const;\n\n/**\n * Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler.\n *\n * @note This metric aligns with the `desiredReplicas` field of the\n * [K8s HorizontalPodAutoscalerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerstatus-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_DESIRED = 'k8s.hpa.pod.desired' as const;\n\n/**\n * The upper limit for the number of replica pods to which the autoscaler can scale up.\n *\n * @note This metric aligns with the `maxReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_MAX = 'k8s.hpa.pod.max' as const;\n\n/**\n * The lower limit for the number of replica pods to which the autoscaler can scale down.\n *\n * @note This metric aligns with the `minReplicas` field of the\n * [K8s HorizontalPodAutoscalerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#horizontalpodautoscalerspec-v2-autoscaling)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_HPA_POD_MIN = 'k8s.hpa.pod.min' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.active` instead.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\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 `k8s.job.pod.active`.\n */\nexport const METRIC_K8S_JOB_ACTIVE_PODS = 'k8s.job.active_pods' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.desired_successful` instead.\n *\n * @note This metric aligns with the `completions` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch)..\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 `k8s.job.pod.desired_successful`.\n */\nexport const METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS = 'k8s.job.desired_successful_pods' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.failed` instead.\n *\n * @note This metric aligns with the `failed` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\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 `k8s.job.pod.failed`.\n */\nexport const METRIC_K8S_JOB_FAILED_PODS = 'k8s.job.failed_pods' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.max_parallel` instead.\n *\n * @note This metric aligns with the `parallelism` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).\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 `k8s.job.pod.max_parallel`.\n */\nexport const METRIC_K8S_JOB_MAX_PARALLEL_PODS = 'k8s.job.max_parallel_pods' as const;\n\n/**\n * The number of pending and actively running pods for a job.\n *\n * @note This metric aligns with the `active` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_ACTIVE = 'k8s.job.pod.active' as const;\n\n/**\n * The desired number of successfully finished pods the job should be run with.\n *\n * @note This metric aligns with the `completions` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch)..\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL = 'k8s.job.pod.desired_successful' as const;\n\n/**\n * The number of pods which reached phase Failed for a job.\n *\n * @note This metric aligns with the `failed` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_FAILED = 'k8s.job.pod.failed' as const;\n\n/**\n * The max desired number of pods the job should run at any given time.\n *\n * @note This metric aligns with the `parallelism` field of the\n * [K8s JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_MAX_PARALLEL = 'k8s.job.pod.max_parallel' as const;\n\n/**\n * The number of pods which reached phase Succeeded for a job.\n *\n * @note This metric aligns with the `succeeded` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_JOB_POD_SUCCESSFUL = 'k8s.job.pod.successful' as const;\n\n/**\n * Deprecated, use `k8s.job.pod.successful` instead.\n *\n * @note This metric aligns with the `succeeded` field of the\n * [K8s JobStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobstatus-v1-batch).\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 `k8s.job.pod.successful`.\n */\nexport const METRIC_K8S_JOB_SUCCESSFUL_PODS = 'k8s.job.successful_pods' as const;\n\n/**\n * Describes number of K8s namespaces that are currently in a given phase.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NAMESPACE_PHASE = 'k8s.namespace.phase' as const;\n\n/**\n * Deprecated, use `k8s.node.cpu.allocatable` 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 `k8s.node.cpu.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_CPU = 'k8s.node.allocatable.cpu' as const;\n\n/**\n * Deprecated, use `k8s.node.ephemeral_storage.allocatable` 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 `k8s.node.ephemeral_storage.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE = 'k8s.node.allocatable.ephemeral_storage' as const;\n\n/**\n * Deprecated, use `k8s.node.memory.allocatable` 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 `k8s.node.memory.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_MEMORY = 'k8s.node.allocatable.memory' as const;\n\n/**\n * Deprecated, use `k8s.node.pod.allocatable` 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 `k8s.node.pod.allocatable`.\n */\nexport const METRIC_K8S_NODE_ALLOCATABLE_PODS = 'k8s.node.allocatable.pods' as const;\n\n/**\n * Describes the condition of a particular Node.\n *\n * @note All possible node condition pairs (type and status) will be reported at each time interval to avoid missing metrics. Condition pairs corresponding to the current conditions' statuses will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CONDITION_STATUS = 'k8s.node.condition.status' as const;\n\n/**\n * Amount of cpu allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CPU_ALLOCATABLE = 'k8s.node.cpu.allocatable' as const;\n\n/**\n * Total CPU time consumed.\n *\n * @note Total CPU time consumed by the specific Node on all available CPU cores\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CPU_TIME = 'k8s.node.cpu.time' as const;\n\n/**\n * Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs.\n *\n * @note CPU usage of the specific Node on all available CPU cores, averaged over the sample window\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_CPU_USAGE = 'k8s.node.cpu.usage' as const;\n\n/**\n * Amount of ephemeral-storage allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE = 'k8s.node.ephemeral_storage.allocatable' as const;\n\n/**\n * Node filesystem available bytes.\n *\n * @note This metric is derived from the\n * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_FILESYSTEM_AVAILABLE = 'k8s.node.filesystem.available' as const;\n\n/**\n * Node filesystem capacity.\n *\n * @note This metric is derived from the\n * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_FILESYSTEM_CAPACITY = 'k8s.node.filesystem.capacity' as const;\n\n/**\n * Node filesystem usage.\n *\n * @note This may not equal capacity - available.\n *\n * This metric is derived from the\n * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [NodeStats.Fs](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#NodeStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_FILESYSTEM_USAGE = 'k8s.node.filesystem.usage' as const;\n\n/**\n * Amount of memory allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_ALLOCATABLE = 'k8s.node.memory.allocatable' as const;\n\n/**\n * Node memory available.\n *\n * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted.\n * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_AVAILABLE = 'k8s.node.memory.available' as const;\n\n/**\n * Node memory paging faults.\n *\n * @note Cumulative number of major/minor page faults.\n * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) fields of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_PAGING_FAULTS = 'k8s.node.memory.paging.faults' as const;\n\n/**\n * Node memory RSS.\n *\n * @note The amount of anonymous and swap cache memory (includes transparent hugepages).\n * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_RSS = 'k8s.node.memory.rss' as const;\n\n/**\n * Memory usage of the Node.\n *\n * @note Total memory usage of the Node\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_USAGE = 'k8s.node.memory.usage' as const;\n\n/**\n * Node memory working set.\n *\n * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes.\n * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [NodeStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#NodeStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_MEMORY_WORKING_SET = 'k8s.node.memory.working_set' as const;\n\n/**\n * Node network errors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_NETWORK_ERRORS = 'k8s.node.network.errors' as const;\n\n/**\n * Network bytes for the Node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_NETWORK_IO = 'k8s.node.network.io' as const;\n\n/**\n * Amount of pods allocatable on the node.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_POD_ALLOCATABLE = 'k8s.node.pod.allocatable' as const;\n\n/**\n * The time the Node has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_NODE_UPTIME = 'k8s.node.uptime' as const;\n\n/**\n * Total CPU time consumed.\n *\n * @note Total CPU time consumed by the specific Pod on all available CPU cores\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_CPU_TIME = 'k8s.pod.cpu.time' as const;\n\n/**\n * Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs.\n *\n * @note CPU usage of the specific Pod on all available CPU cores, averaged over the sample window\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_CPU_USAGE = 'k8s.pod.cpu.usage' as const;\n\n/**\n * Pod filesystem available bytes.\n *\n * @note This metric is derived from the\n * [FsStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_FILESYSTEM_AVAILABLE = 'k8s.pod.filesystem.available' as const;\n\n/**\n * Pod filesystem capacity.\n *\n * @note This metric is derived from the\n * [FsStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_FILESYSTEM_CAPACITY = 'k8s.pod.filesystem.capacity' as const;\n\n/**\n * Pod filesystem usage.\n *\n * @note This may not equal capacity - available.\n *\n * This metric is derived from the\n * [FsStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#FsStats) field\n * of the [PodStats.EphemeralStorage](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats)\n * of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_FILESYSTEM_USAGE = 'k8s.pod.filesystem.usage' as const;\n\n/**\n * Pod memory available.\n *\n * @note Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted.\n * This metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_AVAILABLE = 'k8s.pod.memory.available' as const;\n\n/**\n * Pod memory paging faults.\n *\n * @note Cumulative number of major/minor page faults.\n * This metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_PAGING_FAULTS = 'k8s.pod.memory.paging.faults' as const;\n\n/**\n * Pod memory RSS.\n *\n * @note The amount of anonymous and swap cache memory (includes transparent hugepages).\n * This metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_RSS = 'k8s.pod.memory.rss' as const;\n\n/**\n * Memory usage of the Pod.\n *\n * @note Total memory usage of the Pod\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_USAGE = 'k8s.pod.memory.usage' as const;\n\n/**\n * Pod memory working set.\n *\n * @note The amount of working set memory. This includes recently accessed memory, dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes.\n * This metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_MEMORY_WORKING_SET = 'k8s.pod.memory.working_set' as const;\n\n/**\n * Pod network errors.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_NETWORK_ERRORS = 'k8s.pod.network.errors' as const;\n\n/**\n * Network bytes for the Pod.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_NETWORK_IO = 'k8s.pod.network.io' as const;\n\n/**\n * Describes number of K8s Pods that are currently in a given phase.\n *\n * @note All possible pod phases will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current phase will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_STATUS_PHASE = 'k8s.pod.status.phase' as const;\n\n/**\n * Describes the number of K8s Pods that are currently in a state for a given reason.\n *\n * @note All possible pod status reasons will be reported at each time interval to avoid missing metrics.\n * Only the value corresponding to the current reason will be non-zero.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_STATUS_REASON = 'k8s.pod.status.reason' as const;\n\n/**\n * The time the Pod has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_UPTIME = 'k8s.pod.uptime' as const;\n\n/**\n * Pod volume storage space available.\n *\n * @note This metric is derived from the\n * [VolumeStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_AVAILABLE = 'k8s.pod.volume.available' as const;\n\n/**\n * Pod volume total capacity.\n *\n * @note This metric is derived from the\n * [VolumeStats.CapacityBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_CAPACITY = 'k8s.pod.volume.capacity' as const;\n\n/**\n * The total inodes in the filesystem of the Pod's volume.\n *\n * @note This metric is derived from the\n * [VolumeStats.Inodes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_INODE_COUNT = 'k8s.pod.volume.inode.count' as const;\n\n/**\n * The free inodes in the filesystem of the Pod's volume.\n *\n * @note This metric is derived from the\n * [VolumeStats.InodesFree](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_INODE_FREE = 'k8s.pod.volume.inode.free' as const;\n\n/**\n * The inodes used by the filesystem of the Pod's volume.\n *\n * @note This metric is derived from the\n * [VolumeStats.InodesUsed](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * This may not be equal to `inodes - free` because filesystem may share inodes with other filesystems.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_INODE_USED = 'k8s.pod.volume.inode.used' as const;\n\n/**\n * Pod volume usage.\n *\n * @note This may not equal capacity - available.\n *\n * This metric is derived from the\n * [VolumeStats.UsedBytes](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#VolumeStats) field\n * of the [PodStats](https://pkg.go.dev/k8s.io/kubelet@v0.33.0/pkg/apis/stats/v1alpha1#PodStats) of the\n * Kubelet's stats API.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_POD_VOLUME_USAGE = 'k8s.pod.volume.usage' as const;\n\n/**\n * Deprecated, use `k8s.replicaset.pod.available` instead.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps).\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 `k8s.replicaset.pod.available`.\n */\nexport const METRIC_K8S_REPLICASET_AVAILABLE_PODS = 'k8s.replicaset.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicaset.pod.desired` instead.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps).\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 `k8s.replicaset.pod.desired`.\n */\nexport const METRIC_K8S_REPLICASET_DESIRED_PODS = 'k8s.replicaset.desired_pods' as const;\n\n/**\n * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s ReplicaSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICASET_POD_AVAILABLE = 'k8s.replicaset.pod.available' as const;\n\n/**\n * Number of desired replica pods in this replicaset.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s ReplicaSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicasetspec-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICASET_POD_DESIRED = 'k8s.replicaset.pod.desired' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.available` 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 `k8s.replicationcontroller.pod.available`.\n */\nexport const METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS = 'k8s.replication_controller.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.desired` 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 `k8s.replicationcontroller.pod.desired`.\n */\nexport const METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS = 'k8s.replication_controller.desired_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.available` 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 `k8s.replicationcontroller.pod.available`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS = 'k8s.replicationcontroller.available_pods' as const;\n\n/**\n * Deprecated, use `k8s.replicationcontroller.pod.desired` 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 `k8s.replicationcontroller.pod.desired`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS = 'k8s.replicationcontroller.desired_pods' as const;\n\n/**\n * Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller.\n *\n * @note This metric aligns with the `availableReplicas` field of the\n * [K8s ReplicationControllerStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerstatus-v1-core)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE = 'k8s.replicationcontroller.pod.available' as const;\n\n/**\n * Number of desired replica pods in this replication controller.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s ReplicationControllerSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#replicationcontrollerspec-v1-core)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED = 'k8s.replicationcontroller.pod.desired' as const;\n\n/**\n * The CPU limits in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_HARD = 'k8s.resourcequota.cpu.limit.hard' as const;\n\n/**\n * The CPU limits in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_LIMIT_USED = 'k8s.resourcequota.cpu.limit.used' as const;\n\n/**\n * The CPU requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_HARD = 'k8s.resourcequota.cpu.request.hard' as const;\n\n/**\n * The CPU requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_CPU_REQUEST_USED = 'k8s.resourcequota.cpu.request.used' as const;\n\n/**\n * The sum of local ephemeral storage limits in the namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'k8s.resourcequota.ephemeral_storage.limit.hard' as const;\n\n/**\n * The sum of local ephemeral storage limits in the namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'k8s.resourcequota.ephemeral_storage.limit.used' as const;\n\n/**\n * The sum of local ephemeral storage requests in the namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'k8s.resourcequota.ephemeral_storage.request.hard' as const;\n\n/**\n * The sum of local ephemeral storage requests in the namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'k8s.resourcequota.ephemeral_storage.request.used' as const;\n\n/**\n * The huge page requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'k8s.resourcequota.hugepage_count.request.hard' as const;\n\n/**\n * The huge page requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'k8s.resourcequota.hugepage_count.request.used' as const;\n\n/**\n * The memory limits in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_HARD = 'k8s.resourcequota.memory.limit.hard' as const;\n\n/**\n * The memory limits in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_LIMIT_USED = 'k8s.resourcequota.memory.limit.used' as const;\n\n/**\n * The memory requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_HARD = 'k8s.resourcequota.memory.request.hard' as const;\n\n/**\n * The memory requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_MEMORY_REQUEST_USED = 'k8s.resourcequota.memory.request.used' as const;\n\n/**\n * The object count limits in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_HARD = 'k8s.resourcequota.object_count.hard' as const;\n\n/**\n * The object count limits in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_OBJECT_COUNT_USED = 'k8s.resourcequota.object_count.used' as const;\n\n/**\n * The total number of PersistentVolumeClaims that can exist in the namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'k8s.resourcequota.persistentvolumeclaim_count.hard' as const;\n\n/**\n * The total number of PersistentVolumeClaims that can exist in the namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'k8s.resourcequota.persistentvolumeclaim_count.used' as const;\n\n/**\n * The storage requests in a specific namespace.\n * The value represents the configured quota limit of the resource in the namespace.\n *\n * @note This metric is retrieved from the `hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_HARD = 'k8s.resourcequota.storage.request.hard' as const;\n\n/**\n * The storage requests in a specific namespace.\n * The value represents the current observed total usage of the resource in the namespace.\n *\n * @note This metric is retrieved from the `used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_RESOURCEQUOTA_STORAGE_REQUEST_USED = 'k8s.resourcequota.storage.request.used' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.current` instead.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\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 `k8s.statefulset.pod.current`.\n */\nexport const METRIC_K8S_STATEFULSET_CURRENT_PODS = 'k8s.statefulset.current_pods' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.desired` instead.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps).\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 `k8s.statefulset.pod.desired`.\n */\nexport const METRIC_K8S_STATEFULSET_DESIRED_PODS = 'k8s.statefulset.desired_pods' as const;\n\n/**\n * The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision.\n *\n * @note This metric aligns with the `currentReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_CURRENT = 'k8s.statefulset.pod.current' as const;\n\n/**\n * Number of desired replica pods in this statefulset.\n *\n * @note This metric aligns with the `replicas` field of the\n * [K8s StatefulSetSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetspec-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_DESIRED = 'k8s.statefulset.pod.desired' as const;\n\n/**\n * The number of replica pods created for this statefulset with a Ready Condition.\n *\n * @note This metric aligns with the `readyReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_READY = 'k8s.statefulset.pod.ready' as const;\n\n/**\n * Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision.\n *\n * @note This metric aligns with the `updatedReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_K8S_STATEFULSET_POD_UPDATED = 'k8s.statefulset.pod.updated' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.ready` instead.\n *\n * @note This metric aligns with the `readyReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\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 `k8s.statefulset.pod.ready`.\n */\nexport const METRIC_K8S_STATEFULSET_READY_PODS = 'k8s.statefulset.ready_pods' as const;\n\n/**\n * Deprecated, use `k8s.statefulset.pod.updated` instead.\n *\n * @note This metric aligns with the `updatedReplicas` field of the\n * [K8s StatefulSetStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#statefulsetstatus-v1-apps).\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 `k8s.statefulset.pod.updated`.\n */\nexport const METRIC_K8S_STATEFULSET_UPDATED_PODS = 'k8s.statefulset.updated_pods' as const;\n\n/**\n * The duration of the MCP request or notification as observed on the sender from the time it was sent until the response or ack is received.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_CLIENT_OPERATION_DURATION = 'mcp.client.operation.duration' as const;\n\n/**\n * The duration of the MCP session as observed on the MCP client.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_CLIENT_SESSION_DURATION = 'mcp.client.session.duration' as const;\n\n/**\n * MCP request or notification duration as observed on the receiver from the time it was received until the result or ack is sent.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_SERVER_OPERATION_DURATION = 'mcp.server.operation.duration' as const;\n\n/**\n * The duration of the MCP session as observed on the MCP server.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MCP_SERVER_SESSION_DURATION = 'mcp.server.session.duration' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = 'messaging.client.consumed.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_OPERATION_DURATION = 'messaging.client.operation.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.sent.messages` 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 `messaging.client.sent.messages`.\n */\nexport const METRIC_MESSAGING_CLIENT_PUBLISHED_MESSAGES = 'messaging.client.published.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_CLIENT_SENT_MESSAGES = 'messaging.client.sent.messages' as const;\n\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 */\nexport const METRIC_MESSAGING_PROCESS_DURATION = 'messaging.process.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.consumed.messages` 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 `messaging.client.consumed.messages`.\n */\nexport const METRIC_MESSAGING_PROCESS_MESSAGES = 'messaging.process.messages' as const;\n\n/**\n * Deprecated. Use `messaging.client.operation.duration` 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 `messaging.client.operation.duration`.\n */\nexport const METRIC_MESSAGING_PUBLISH_DURATION = 'messaging.publish.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.sent.messages` 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 `messaging.client.sent.messages`.\n */\nexport const METRIC_MESSAGING_PUBLISH_MESSAGES = 'messaging.publish.messages' as const;\n\n/**\n * Deprecated. Use `messaging.client.operation.duration` 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 `messaging.client.operation.duration`.\n */\nexport const METRIC_MESSAGING_RECEIVE_DURATION = 'messaging.receive.duration' as const;\n\n/**\n * Deprecated. Use `messaging.client.consumed.messages` 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 `messaging.client.consumed.messages`.\n */\nexport const METRIC_MESSAGING_RECEIVE_MESSAGES = 'messaging.receive.messages' as const;\n\n/**\n * Reports the count of kernel NFS client TCP segments and UDP datagrams handled.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.netudpcnt and svc_stat.nettcpcnt\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_NET_COUNT = 'nfs.client.net.count' as const;\n\n/**\n * Reports the count of kernel NFS client TCP connections accepted.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_NET_TCP_CONNECTION_ACCEPTED = 'nfs.client.net.tcp.connection.accepted' as const;\n\n/**\n * Reports the count of kernel NFSv4+ client operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_OPERATION_COUNT = 'nfs.client.operation.count' as const;\n\n/**\n * Reports the count of kernel NFS client procedures.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_PROCEDURE_COUNT = 'nfs.client.procedure.count' as const;\n\n/**\n * Reports the count of kernel NFS client RPC authentication refreshes.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcauthrefresh\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_RPC_AUTHREFRESH_COUNT = 'nfs.client.rpc.authrefresh.count' as const;\n\n/**\n * Reports the count of kernel NFS client RPCs sent, regardless of whether they're accepted/rejected by the server.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_RPC_COUNT = 'nfs.client.rpc.count' as const;\n\n/**\n * Reports the count of kernel NFS client RPC retransmits.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpcretrans\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_CLIENT_RPC_RETRANSMIT_COUNT = 'nfs.client.rpc.retransmit.count' as const;\n\n/**\n * Reports the count of kernel NFS server stale file handles.\n *\n * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_FH_STALE counter in the nfsd_net struct\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_FH_STALE_COUNT = 'nfs.server.fh.stale.count' as const;\n\n/**\n * Reports the count of kernel NFS server bytes returned to receive and transmit (read and write) requests.\n *\n * @note Linux: this metric is taken from the Linux kernel NFSD_STATS_IO_READ and NFSD_STATS_IO_WRITE counters in the nfsd_net struct\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_IO = 'nfs.server.io' as const;\n\n/**\n * Reports the count of kernel NFS server TCP segments and UDP datagrams handled.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpcnt and svc_stat.netudpcnt\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_NET_COUNT = 'nfs.server.net.count' as const;\n\n/**\n * Reports the count of kernel NFS server TCP connections accepted.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.nettcpconn\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_NET_TCP_CONNECTION_ACCEPTED = 'nfs.server.net.tcp.connection.accepted' as const;\n\n/**\n * Reports the count of kernel NFSv4+ server operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_OPERATION_COUNT = 'nfs.server.operation.count' as const;\n\n/**\n * Reports the count of kernel NFS server procedures.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_PROCEDURE_COUNT = 'nfs.server.procedure.count' as const;\n\n/**\n * Reports the kernel NFS server reply cache request count by cache hit status.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_REPCACHE_REQUESTS = 'nfs.server.repcache.requests' as const;\n\n/**\n * Reports the count of kernel NFS server RPCs handled.\n *\n * @note Linux: this metric is taken from the Linux kernel's svc_stat.rpccnt, the count of good RPCs. This metric can have\n * an error.type of \"format\", \"auth\", or \"client\" for svc_stat.badfmt, svc_stat.badauth, and svc_stat.badclnt.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_RPC_COUNT = 'nfs.server.rpc.count' as const;\n\n/**\n * Reports the count of kernel NFS server available threads.\n *\n * @note Linux: this metric is taken from the Linux kernel nfsd_th_cnt variable\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NFS_SERVER_THREAD_COUNT = 'nfs.server.thread.count' as const;\n\n/**\n * Event loop maximum delay.\n *\n * @note Value can be retrieved from value `histogram.max` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_MAX = 'nodejs.eventloop.delay.max' as const;\n\n/**\n * Event loop mean delay.\n *\n * @note Value can be retrieved from value `histogram.mean` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_MEAN = 'nodejs.eventloop.delay.mean' as const;\n\n/**\n * Event loop minimum delay.\n *\n * @note Value can be retrieved from value `histogram.min` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_MIN = 'nodejs.eventloop.delay.min' as const;\n\n/**\n * Event loop 50 percentile delay.\n *\n * @note Value can be retrieved from value `histogram.percentile(50)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_P50 = 'nodejs.eventloop.delay.p50' as const;\n\n/**\n * Event loop 90 percentile delay.\n *\n * @note Value can be retrieved from value `histogram.percentile(90)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_P90 = 'nodejs.eventloop.delay.p90' as const;\n\n/**\n * Event loop 99 percentile delay.\n *\n * @note Value can be retrieved from value `histogram.percentile(99)` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_P99 = 'nodejs.eventloop.delay.p99' as const;\n\n/**\n * Event loop standard deviation delay.\n *\n * @note Value can be retrieved from value `histogram.stddev` of [`perf_hooks.monitorEventLoopDelay([options])`](https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_DELAY_STDDEV = 'nodejs.eventloop.delay.stddev' as const;\n\n/**\n * Cumulative duration of time the event loop has been in each state.\n *\n * @note Value can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_TIME = 'nodejs.eventloop.time' as const;\n\n/**\n * Event loop utilization.\n *\n * @note The value range is [0.0, 1.0] and can be retrieved from [`performance.eventLoopUtilization([utilization1[, utilization2]])`](https://nodejs.org/api/perf_hooks.html#performanceeventlooputilizationutilization1-utilization2)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_NODEJS_EVENTLOOP_UTILIZATION = 'nodejs.eventloop.utilization' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_HARD = 'openshift.clusterquota.cpu.limit.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_LIMIT_USED = 'openshift.clusterquota.cpu.limit.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_HARD = 'openshift.clusterquota.cpu.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_CPU_REQUEST_USED = 'openshift.clusterquota.cpu.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_HARD = 'openshift.clusterquota.ephemeral_storage.limit.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_LIMIT_USED = 'openshift.clusterquota.ephemeral_storage.limit.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_HARD = 'openshift.clusterquota.ephemeral_storage.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_EPHEMERAL_STORAGE_REQUEST_USED = 'openshift.clusterquota.ephemeral_storage.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_HARD = 'openshift.clusterquota.hugepage_count.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_HUGEPAGE_COUNT_REQUEST_USED = 'openshift.clusterquota.hugepage_count.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_HARD = 'openshift.clusterquota.memory.limit.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_LIMIT_USED = 'openshift.clusterquota.memory.limit.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_HARD = 'openshift.clusterquota.memory.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_MEMORY_REQUEST_USED = 'openshift.clusterquota.memory.request.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_HARD = 'openshift.clusterquota.object_count.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_OBJECT_COUNT_USED = 'openshift.clusterquota.object_count.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_HARD = 'openshift.clusterquota.persistentvolumeclaim_count.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_PERSISTENTVOLUMECLAIM_COUNT_USED = 'openshift.clusterquota.persistentvolumeclaim_count.used' as const;\n\n/**\n * The enforced hard limit of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Hard` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_HARD = 'openshift.clusterquota.storage.request.hard' as const;\n\n/**\n * The current observed total usage of the resource across all projects.\n *\n * @note This metric is retrieved from the `Status.Total.Used` field of the\n * [K8s ResourceQuotaStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcequotastatus-v1-core)\n * of the\n * [ClusterResourceQuota](https://docs.redhat.com/en/documentation/openshift_container_platform/4.19/html/schedule_and_quota_apis/clusterresourcequota-quota-openshift-io-v1#status-total).\n *\n * The `k8s.storageclass.name` should be required when a resource quota is defined for a specific\n * storage class.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OPENSHIFT_CLUSTERQUOTA_STORAGE_REQUEST_USED = 'openshift.clusterquota.storage.request.used' as const;\n\n/**\n * The number of log records for which the export has finished, either successful or failed.\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n * For exporters with partial success semantics (e.g. OTLP with `rejected_log_records`), rejected log records **MUST** count as failed and only non-rejected log records count as success.\n * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_LOG_EXPORTED = 'otel.sdk.exporter.log.exported' as const;\n\n/**\n * The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_LOG_INFLIGHT = 'otel.sdk.exporter.log.inflight' as const;\n\n/**\n * The number of metric data points for which the export has finished, either successful or failed.\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n * For exporters with partial success semantics (e.g. OTLP with `rejected_data_points`), rejected data points **MUST** count as failed and only non-rejected data points count as success.\n * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_EXPORTED = 'otel.sdk.exporter.metric_data_point.exported' as const;\n\n/**\n * The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_METRIC_DATA_POINT_INFLIGHT = 'otel.sdk.exporter.metric_data_point.inflight' as const;\n\n/**\n * The duration of exporting a batch of telemetry records.\n *\n * @note This metric defines successful operations using the full success definitions for [http](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1)\n * and [grpc](https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success). Anything else is defined as an unsuccessful operation. For successful\n * operations, `error.type` **MUST NOT** be set. For unsuccessful export operations, `error.type` **MUST** contain a relevant failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_OPERATION_DURATION = 'otel.sdk.exporter.operation.duration' as const;\n\n/**\n * The number of spans for which the export has finished, either successful or failed.\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n * For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans **MUST** count as failed and only non-rejected spans count as success.\n * If no rejection reason is available, `rejected` **SHOULD** be used as value for `error.type`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED = 'otel.sdk.exporter.span.exported' as const;\n\n/**\n * Deprecated, use `otel.sdk.exporter.span.exported` 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 `otel.sdk.exporter.span.exported`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT = 'otel.sdk.exporter.span.exported.count' as const;\n\n/**\n * The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).\n *\n * @note For successful exports, `error.type` **MUST NOT** be set. For failed exports, `error.type` **MUST** contain the failure cause.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT = 'otel.sdk.exporter.span.inflight' as const;\n\n/**\n * Deprecated, use `otel.sdk.exporter.span.inflight` 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 `otel.sdk.exporter.span.inflight`.\n */\nexport const METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT = 'otel.sdk.exporter.span.inflight.count' as const;\n\n/**\n * The number of logs submitted to enabled SDK Loggers.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_LOG_CREATED = 'otel.sdk.log.created' as const;\n\n/**\n * The duration of the collect operation of the metric reader.\n *\n * @note For successful collections, `error.type` **MUST NOT** be set. For failed collections, `error.type` **SHOULD** contain the failure cause.\n * It can happen that metrics collection is successful for some MetricProducers, while others fail. In that case `error.type` **SHOULD** be set to any of the failure causes.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_METRIC_READER_COLLECTION_DURATION = 'otel.sdk.metric_reader.collection.duration' as const;\n\n/**\n * The number of log records for which the processing has finished, either successful or failed.\n *\n * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause.\n * For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter,\n * not when the corresponding export call has finished.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED = 'otel.sdk.processor.log.processed' as const;\n\n/**\n * The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold.\n *\n * @note Only applies to Log Record processors which use a queue, e.g. the SDK Batching Log Record Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY = 'otel.sdk.processor.log.queue.capacity' as const;\n\n/**\n * The number of log records in the queue of a given instance of an SDK log processor.\n *\n * @note Only applies to log record processors which use a queue, e.g. the SDK Batching Log Record Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE = 'otel.sdk.processor.log.queue.size' as const;\n\n/**\n * The number of spans for which the processing has finished, either successful or failed.\n *\n * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause.\n * For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED = 'otel.sdk.processor.span.processed' as const;\n\n/**\n * Deprecated, use `otel.sdk.processor.span.processed` 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 `otel.sdk.processor.span.processed`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT = 'otel.sdk.processor.span.processed.count' as const;\n\n/**\n * The maximum number of spans the queue of a given instance of an SDK span processor can hold.\n *\n * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY = 'otel.sdk.processor.span.queue.capacity' as const;\n\n/**\n * The number of spans in the queue of a given instance of an SDK span processor.\n *\n * @note Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE = 'otel.sdk.processor.span.queue.size' as const;\n\n/**\n * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Obsoleted.\n */\nexport const METRIC_OTEL_SDK_SPAN_ENDED = 'otel.sdk.span.ended' as const;\n\n/**\n * Use `otel.sdk.span.started` minus `otel.sdk.span.live` to derive this value.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Obsoleted.\n */\nexport const METRIC_OTEL_SDK_SPAN_ENDED_COUNT = 'otel.sdk.span.ended.count' as const;\n\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 */\nexport const METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live' as const;\n\n/**\n * Deprecated, use `otel.sdk.span.live` 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 `otel.sdk.span.live`.\n */\nexport const METRIC_OTEL_SDK_SPAN_LIVE_COUNT = 'otel.sdk.span.live.count' as const;\n\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 */\nexport const METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started' as const;\n\n/**\n * Number of times the process has been context switched.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_CONTEXT_SWITCHES = 'process.context_switches' as const;\n\n/**\n * Total CPU seconds broken down by different states.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_CPU_TIME = 'process.cpu.time' as const;\n\n/**\n * Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_CPU_UTILIZATION = 'process.cpu.utilization' as const;\n\n/**\n * Disk bytes transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_DISK_IO = 'process.disk.io' as const;\n\n/**\n * The amount of physical memory in use.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_MEMORY_USAGE = 'process.memory.usage' as const;\n\n/**\n * The amount of committed virtual memory.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_MEMORY_VIRTUAL = 'process.memory.virtual' as const;\n\n/**\n * Network bytes transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_NETWORK_IO = 'process.network.io' as const;\n\n/**\n * Deprecated, use `process.unix.file_descriptor.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 `process.unix.file_descriptor.count`.\n */\nexport const METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT = 'process.open_file_descriptor.count' as const;\n\n/**\n * Number of page faults the process has made.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_PAGING_FAULTS = 'process.paging.faults' as const;\n\n/**\n * Process threads count.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_THREAD_COUNT = 'process.thread.count' as const;\n\n/**\n * Number of unix file descriptors in use by the process.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT = 'process.unix.file_descriptor.count' as const;\n\n/**\n * The time the process has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_UPTIME = 'process.uptime' as const;\n\n/**\n * Number of handles held by the process.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_PROCESS_WINDOWS_HANDLE_COUNT = 'process.windows.handle.count' as const;\n\n/**\n * Measures the duration of outbound remote procedure calls (RPC).\n *\n * @note When this metric is reported alongside an RPC client span, the metric value\n * **SHOULD** be the same as the RPC client span duration.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_CLIENT_CALL_DURATION = 'rpc.client.call.duration' as const;\n\n/**\n * Deprecated, use `rpc.client.call.duration` instead. Note: the unit also changed from `ms` to `s`.\n *\n * @note While streaming RPCs may record this metric as start-of-batch\n * to end-of-batch, it's hard to interpret in practice.\n *\n * **Streaming**: N/A.\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 `rpc.client.call.duration` with unit `s`.\n */\nexport const METRIC_RPC_CLIENT_DURATION = 'rpc.client.duration' as const;\n\n/**\n * Measures the size of RPC request messages (uncompressed).\n *\n * @note **Streaming**: Recorded per message in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_CLIENT_REQUEST_SIZE = 'rpc.client.request.size' as const;\n\n/**\n * Measures the number of messages received per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming**: This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_CLIENT_REQUESTS_PER_RPC = 'rpc.client.requests_per_rpc' as const;\n\n/**\n * Measures the size of RPC response messages (uncompressed).\n *\n * @note **Streaming**: Recorded per response in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_CLIENT_RESPONSE_SIZE = 'rpc.client.response.size' as const;\n\n/**\n * Measures the number of messages sent per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming**: This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_CLIENT_RESPONSES_PER_RPC = 'rpc.client.responses_per_rpc' as const;\n\n/**\n * Measures the duration of inbound remote procedure calls (RPC).\n *\n * @note When this metric is reported alongside an RPC server span, the metric value\n * **SHOULD** be the same as the RPC server span duration.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_SERVER_CALL_DURATION = 'rpc.server.call.duration' as const;\n\n/**\n * Deprecated, use `rpc.server.call.duration` instead. Note: the unit also changed from `ms` to `s`.\n *\n * @note While streaming RPCs may record this metric as start-of-batch\n * to end-of-batch, it's hard to interpret in practice.\n *\n * **Streaming**: N/A.\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 `rpc.server.call.duration` with unit `s`.\n */\nexport const METRIC_RPC_SERVER_DURATION = 'rpc.server.duration' as const;\n\n/**\n * Measures the size of RPC request messages (uncompressed).\n *\n * @note **Streaming**: Recorded per message in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_SERVER_REQUEST_SIZE = 'rpc.server.request.size' as const;\n\n/**\n * Measures the number of messages received per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming** : This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_SERVER_REQUESTS_PER_RPC = 'rpc.server.requests_per_rpc' as const;\n\n/**\n * Measures the size of RPC response messages (uncompressed).\n *\n * @note **Streaming**: Recorded per response in a streaming batch\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_RPC_SERVER_RESPONSE_SIZE = 'rpc.server.response.size' as const;\n\n/**\n * Measures the number of messages sent per RPC.\n *\n * @note Should be 1 for all non-streaming RPCs.\n *\n * **Streaming**: This metric is required for server and client streaming RPCs\n *\n * @experimental This metric 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 */\nexport const METRIC_RPC_SERVER_RESPONSES_PER_RPC = 'rpc.server.responses_per_rpc' as const;\n\n/**\n * Operating frequency of the logical CPU in Hertz.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_FREQUENCY = 'system.cpu.frequency' as const;\n\n/**\n * Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking.\n *\n * @note Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_LOGICAL_COUNT = 'system.cpu.logical.count' as const;\n\n/**\n * Reports the number of actual physical processor cores on the hardware.\n *\n * @note Calculated by multiplying the number of sockets by the number of cores per socket\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_PHYSICAL_COUNT = 'system.cpu.physical.count' as const;\n\n/**\n * Seconds each logical CPU spent on each mode.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_TIME = 'system.cpu.time' as const;\n\n/**\n * For each logical CPU, the utilization is calculated as the change in cumulative CPU time (cpu.time) over a measurement interval, divided by the elapsed time.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_CPU_UTILIZATION = 'system.cpu.utilization' as const;\n\n/**\n * Disk bytes transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_IO = 'system.disk.io' as const;\n\n/**\n * Time disk spent activated.\n *\n * @note The real elapsed time (\"wall clock\") used in the I/O path (time from operations running in parallel are not counted). Measured as:\n *\n * - Linux: Field 13 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats)\n * - Windows: The complement of\n * [\"Disk% Idle Time\"](https://learn.microsoft.com/archive/blogs/askcore/windows-performance-monitor-disk-counters-explained#windows-performance-monitor-disk-counters-explained)\n * performance counter: `uptime * (100 - \"Disk\\% Idle Time\") / 100`\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_IO_TIME = 'system.disk.io_time' as const;\n\n/**\n * The total storage capacity of the disk.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_LIMIT = 'system.disk.limit' as const;\n\n/**\n * The number of disk reads/writes merged into single physical disk access operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_MERGED = 'system.disk.merged' as const;\n\n/**\n * Sum of the time each operation took to complete.\n *\n * @note Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as:\n *\n * - Linux: Fields 7 & 11 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats)\n * - Windows: \"Avg. Disk sec/Read\" perf counter multiplied by \"Disk Reads/sec\" perf counter (similar for Writes)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_OPERATION_TIME = 'system.disk.operation_time' as const;\n\n/**\n * Disk operations count.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_DISK_OPERATIONS = 'system.disk.operations' as const;\n\n/**\n * The total storage capacity of the filesystem.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_FILESYSTEM_LIMIT = 'system.filesystem.limit' as const;\n\n/**\n * Reports a filesystem's space usage across different states.\n *\n * @note The sum of all `system.filesystem.usage` values over the different `system.filesystem.state` attributes\n * **SHOULD** equal the total storage capacity of the filesystem, that is `system.filesystem.limit`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_FILESYSTEM_USAGE = 'system.filesystem.usage' as const;\n\n/**\n * Fraction of filesystem bytes used.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_FILESYSTEM_UTILIZATION = 'system.filesystem.utilization' as const;\n\n/**\n * The number of packets transferred.\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 `system.memory.linux.available`.\n */\nexport const METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE = 'system.linux.memory.available' as const;\n\n/**\n * The number of packets transferred.\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 `system.memory.linux.slab.usage`.\n */\nexport const METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE = 'system.linux.memory.slab.usage' as const;\n\n/**\n * Total virtual memory available in the system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_LIMIT = 'system.memory.limit' as const;\n\n/**\n * An estimate of how much memory is available for starting new applications, without causing swapping.\n *\n * @note This is an alternative to `system.memory.usage` metric with `state=free`.\n * Linux starting from 3.14 exports \"available\" memory. It takes \"free\" memory as a baseline, and then factors in kernel-specific values.\n * This is supposed to be more accurate than just \"free\" memory.\n * For reference, see the calculations [here](https://superuser.com/a/980821).\n * See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE = 'system.memory.linux.available' as const;\n\n/**\n * Reports the memory used by the Linux kernel for managing caches of frequently used objects.\n *\n * @note The sum over the `reclaimable` and `unreclaimable` state values in `memory.linux.slab.usage` **SHOULD** be equal to the total slab memory available on the system.\n * Note that the total slab memory is not constant and may vary over time.\n * See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE = 'system.memory.linux.slab.usage' as const;\n\n/**\n * Shared memory used (mostly by tmpfs).\n *\n * @note Equivalent of `shared` from [`free` command](https://man7.org/linux/man-pages/man1/free.1.html) or\n * `Shmem` from [`/proc/meminfo`](https://man7.org/linux/man-pages/man5/proc.5.html)\"\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_SHARED = 'system.memory.shared' as const;\n\n/**\n * Reports memory in use by state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_USAGE = 'system.memory.usage' as const;\n\n/**\n * Percentage of memory bytes in use.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_MEMORY_UTILIZATION = 'system.memory.utilization' as const;\n\n/**\n * The number of connections.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_CONNECTION_COUNT = 'system.network.connection.count' as const;\n\n/**\n * Deprecated, use `system.network.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 `system.network.connection.count`.\n */\nexport const METRIC_SYSTEM_NETWORK_CONNECTIONS = 'system.network.connections' as const;\n\n/**\n * Count of packets that are dropped or discarded even though there was no error.\n *\n * @note Measured as:\n *\n * - Linux: the `drop` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html))\n * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2)\n * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2)\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 `system.network.packet.dropped`.\n */\nexport const METRIC_SYSTEM_NETWORK_DROPPED = 'system.network.dropped' as const;\n\n/**\n * Count of network errors detected.\n *\n * @note Measured as:\n *\n * - Linux: the `errs` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)).\n * - Windows: [`InErrors`/`OutErrors`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2)\n * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_ERRORS = 'system.network.errors' as const;\n\n/**\n * The number of bytes transmitted and received.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_IO = 'system.network.io' as const;\n\n/**\n * The number of packets transferred.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_PACKET_COUNT = 'system.network.packet.count' as const;\n\n/**\n * Count of packets that are dropped or discarded even though there was no error.\n *\n * @note Measured as:\n *\n * - Linux: the `drop` column in `/proc/net/dev` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html))\n * - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2)\n * from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_NETWORK_PACKET_DROPPED = 'system.network.packet.dropped' as const;\n\n/**\n * The number of packets transferred.\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 `system.network.packet.count`.\n */\nexport const METRIC_SYSTEM_NETWORK_PACKETS = 'system.network.packets' as const;\n\n/**\n * The number of page faults.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_FAULTS = 'system.paging.faults' as const;\n\n/**\n * The number of paging operations.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_OPERATIONS = 'system.paging.operations' as const;\n\n/**\n * Unix swap or windows pagefile usage.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_USAGE = 'system.paging.usage' as const;\n\n/**\n * Swap (unix) or pagefile (windows) utilization.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PAGING_UTILIZATION = 'system.paging.utilization' as const;\n\n/**\n * Total number of processes in each state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PROCESS_COUNT = 'system.process.count' as const;\n\n/**\n * Total number of processes created over uptime of the host.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_PROCESS_CREATED = 'system.process.created' as const;\n\n/**\n * The time the system has been running.\n *\n * @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.\n * The actual accuracy would depend on the instrumentation and operating system.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_SYSTEM_UPTIME = 'system.uptime' as const;\n\n/**\n * Garbage collection duration.\n *\n * @note The values can be retrieved from [`perf_hooks.PerformanceObserver(...).observe({ entryTypes: ['gc'] })`](https://nodejs.org/api/perf_hooks.html#performanceobserverobserveoptions)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_GC_DURATION = 'v8js.gc.duration' as const;\n\n/**\n * Deprecated, use `v8js.memory.heap.space.available_size` 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 `v8js.memory.heap.space.available_size`.\n */\nexport const METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.heap.space.available_size' as const;\n\n/**\n * Deprecated, use `v8js.memory.heap.space.physical_size` 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 `v8js.memory.heap.space.physical_size`.\n */\nexport const METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.heap.space.physical_size' as const;\n\n/**\n * Total heap memory size pre-allocated.\n *\n * @note The value can be retrieved from value `space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_LIMIT = 'v8js.memory.heap.limit' as const;\n\n/**\n * Heap space available size.\n *\n * @note Value can be retrieved from value `space_available_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE = 'v8js.memory.heap.space.available_size' as const;\n\n/**\n * Committed size of a heap space.\n *\n * @note Value can be retrieved from value `physical_space_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE = 'v8js.memory.heap.space.physical_size' as const;\n\n/**\n * Heap Memory size allocated.\n *\n * @note The value can be retrieved from value `space_used_size` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_V8JS_MEMORY_HEAP_USED = 'v8js.memory.heap.used' as const;\n\n/**\n * The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged).\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_COUNT = 'vcs.change.count' as const;\n\n/**\n * The time duration a change (pull request/merge request/changelist) has been in a given state.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_DURATION = 'vcs.change.duration' as const;\n\n/**\n * The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_TIME_TO_APPROVAL = 'vcs.change.time_to_approval' as const;\n\n/**\n * The amount of time since its creation it took a change (pull request/merge request/changelist) to get merged into the target(base) ref.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CHANGE_TIME_TO_MERGE = 'vcs.change.time_to_merge' as const;\n\n/**\n * The number of unique contributors to a repository.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_CONTRIBUTOR_COUNT = 'vcs.contributor.count' as const;\n\n/**\n * The number of refs of type branch or tag in a repository.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_COUNT = 'vcs.ref.count' as const;\n\n/**\n * The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute.\n *\n * @note This metric should be reported for each `vcs.line_change.type` value. For example if a ref added 3 lines and removed 2 lines,\n * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers).\n * If number of lines added/removed should be calculated from the start of time, then `vcs.ref.base.name` **SHOULD** be set to an empty string.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_LINES_DELTA = 'vcs.ref.lines_delta' as const;\n\n/**\n * The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute.\n *\n * @note This metric should be reported for each `vcs.revision_delta.direction` value. For example if branch `a` is 3 commits behind and 2 commits ahead of `trunk`,\n * instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers) and `vcs.ref.base.name` is set to `trunk`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_REVISIONS_DELTA = 'vcs.ref.revisions_delta' as const;\n\n/**\n * Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REF_TIME = 'vcs.ref.time' as const;\n\n/**\n * The number of repositories in an organization.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_VCS_REPOSITORY_COUNT = 'vcs.repository.count' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.d.ts new file mode 100644 index 0000000..d26f8ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.d.ts @@ -0,0 +1,7 @@ +export * from './stable_attributes'; +export * from './stable_metrics'; +export * from './stable_events'; +export * from './experimental_attributes'; +export * from './experimental_metrics'; +export * from './experimental_events'; +//# sourceMappingURL=index-incubating.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.js new file mode 100644 index 0000000..959646d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.js @@ -0,0 +1,40 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +// Incubating export also contains stable constants in order to maintain +// backward compatibility between minor version releases +__exportStar(require("./stable_attributes"), exports); +__exportStar(require("./stable_metrics"), exports); +__exportStar(require("./stable_events"), exports); +__exportStar(require("./experimental_attributes"), exports); +__exportStar(require("./experimental_metrics"), exports); +__exportStar(require("./experimental_events"), exports); +//# sourceMappingURL=index-incubating.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.js.map new file mode 100644 index 0000000..ac2e15b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-incubating.js","sourceRoot":"","sources":["../../src/index-incubating.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;AAEH,wEAAwE;AACxE,wDAAwD;AACxD,sDAAoC;AACpC,mDAAiC;AACjC,kDAAgC;AAChC,4DAA0C;AAC1C,yDAAuC;AACvC,wDAAsC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Incubating export also contains stable constants in order to maintain\n// backward compatibility between minor version releases\nexport * from './stable_attributes';\nexport * from './stable_metrics';\nexport * from './stable_events';\nexport * from './experimental_attributes';\nexport * from './experimental_metrics';\nexport * from './experimental_events';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index.d.ts new file mode 100644 index 0000000..744217b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index.d.ts @@ -0,0 +1,6 @@ +export * from './trace'; +export * from './resource'; +export * from './stable_attributes'; +export * from './stable_metrics'; +export * from './stable_events'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index.js new file mode 100644 index 0000000..abfca43 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index.js @@ -0,0 +1,43 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +/* eslint-disable no-restricted-syntax -- + * These re-exports are only of constants, only two-levels deep, and + * should not cause problems for tree-shakers. + */ +// Deprecated. These are kept around for compatibility purposes +__exportStar(require("./trace"), exports); +__exportStar(require("./resource"), exports); +// Use these instead +__exportStar(require("./stable_attributes"), exports); +__exportStar(require("./stable_metrics"), exports); +__exportStar(require("./stable_events"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index.js.map new file mode 100644 index 0000000..279ea69 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;AAEH;;;GAGG;AAEH,+DAA+D;AAC/D,0CAAwB;AACxB,6CAA2B;AAE3B,oBAAoB;AACpB,sDAAoC;AACpC,mDAAiC;AACjC,kDAAgC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* 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\n// Deprecated. These are kept around for compatibility purposes\nexport * from './trace';\nexport * from './resource';\n\n// Use these instead\nexport * from './stable_attributes';\nexport * from './stable_metrics';\nexport * from './stable_events';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.d.ts new file mode 100644 index 0000000..d471f2f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.d.ts @@ -0,0 +1,7 @@ +/** + * Creates a const map from the given values + * @param values - An array of values to be used as keys and values in the map. + * @returns A populated version of the map with the values and keys derived from the values. + */ +export declare function createConstMap(values: Array): T; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.js new file mode 100644 index 0000000..c5cc1c5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.js @@ -0,0 +1,38 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createConstMap = void 0; +/** + * Creates a const map from the given values + * @param values - An array of values to be used as keys and values in the map. + * @returns A populated version of the map with the values and keys derived from the values. + */ +/*#__NO_SIDE_EFFECTS__*/ +function createConstMap(values) { + // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any + let res = {}; + const len = values.length; + for (let lp = 0; lp < len; lp++) { + const val = values[lp]; + if (val) { + res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val; + } + } + return res; +} +exports.createConstMap = createConstMap; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.js.map new file mode 100644 index 0000000..89c20cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/internal/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AACH,wBAAwB;AACxB,SAAgB,cAAc,CAAI,MAAyB;IACzD,4EAA4E;IAC5E,IAAI,GAAG,GAAQ,EAAE,CAAC;IAClB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC5D;KACF;IAED,OAAO,GAAQ,CAAC;AAClB,CAAC;AAZD,wCAYC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * 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__*/\nexport function createConstMap(values: Array): T {\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n let res: any = {};\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\n return res as T;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.d.ts new file mode 100644 index 0000000..c3212f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.d.ts @@ -0,0 +1,1453 @@ +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_PROVIDER = "cloud.provider"; +/** + * The cloud account ID the resource is assigned to. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_ACCOUNT_ID = "cloud.account.id"; +/** + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_REGION = "cloud.region"; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = "cloud.availability_zone"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const SEMRESATTRS_CLOUD_PLATFORM = "cloud.platform"; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = "aws.ecs.container.arn"; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = "aws.ecs.cluster.arn"; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = "aws.ecs.launchtype"; +/** + * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_TASK_ARN = "aws.ecs.task.arn"; +/** + * The task definition family this task definition is a member of. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_TASK_FAMILY = "aws.ecs.task.family"; +/** + * The revision for this task definition. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_ECS_TASK_REVISION = "aws.ecs.task.revision"; +/** + * The ARN of an EKS cluster. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = "aws.eks.cluster.arn"; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_GROUP_NAMES = "aws.log.group.names"; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_GROUP_ARNS = "aws.log.group.arns"; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_STREAM_NAMES = "aws.log.stream.names"; +/** + * The ARN(s) of the AWS log stream(s). + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_AWS_LOG_STREAM_ARNS = "aws.log.stream.arns"; +/** + * Container name. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_NAME = "container.name"; +/** + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_ID = "container.id"; +/** + * The container runtime managing this container. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_RUNTIME = "container.runtime"; +/** + * Name of the image the container was built on. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_IMAGE_NAME = "container.image.name"; +/** + * Container image tag. + * + * @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}). + */ +export declare const SEMRESATTRS_CONTAINER_IMAGE_TAG = "container.image.tag"; +/** + * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @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}). + */ +export declare const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = "deployment.environment"; +/** + * A unique identifier representing the device. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_DEVICE_ID = "device.id"; +/** + * The model identifier for the device. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = "device.model.identifier"; +/** + * The marketing name for the device model. + * + * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative. + * + * @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}). + */ +export declare const SEMRESATTRS_DEVICE_MODEL_NAME = "device.model.name"; +/** + * The name of the single function that this runtime instance executes. + * + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_FAAS_NAME = "faas.name"; +/** +* The unique ID of the single function that this runtime instance executes. +* +* Note: Depending on the cloud provider, use: + +* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). +Take care not to use the "invoked ARN" directly but replace any +[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 +different aliases. +* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) +* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id). + +On some providers, it may not be possible to determine the full ID at startup, +which is why this field cannot be made required. For example, on AWS the account ID +part of the ARN is not available without calling another AWS API +which may be deemed too slow for a short-running lambda function. +As an alternative, consider setting `faas.id` as a span attribute instead. +* +* @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}). +*/ +export declare const SEMRESATTRS_FAAS_ID = "faas.id"; +/** +* The immutable version of the function being executed. +* +* Note: Depending on the cloud provider and platform, use: + +* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + (an integer represented as a decimal string). +* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions) + (i.e., the function name plus the revision suffix). +* **Google Cloud Functions:** The value of the + [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). +* **Azure Functions:** Not applicable. Do not set this attribute. +* +* @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}). +*/ +export declare const SEMRESATTRS_FAAS_VERSION = "faas.version"; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * Note: * **AWS Lambda:** Use the (full) log stream name. + * + * @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}). + */ +export declare const SEMRESATTRS_FAAS_INSTANCE = "faas.instance"; +/** + * The amount of memory available to the serverless function in MiB. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_FAAS_MAX_MEMORY = "faas.max_memory"; +/** + * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_ID = "host.id"; +/** + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_NAME = "host.name"; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_TYPE = "host.type"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_ARCH = "host.arch"; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_IMAGE_NAME = "host.image.name"; +/** + * VM image ID. For Cloud, this value is from the provider. + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_IMAGE_ID = "host.image.id"; +/** + * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes). + * + * @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}). + */ +export declare const SEMRESATTRS_HOST_IMAGE_VERSION = "host.image.version"; +/** + * The name of the cluster. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CLUSTER_NAME = "k8s.cluster.name"; +/** + * The name of the Node. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_NODE_NAME = "k8s.node.name"; +/** + * The UID of the Node. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_NODE_UID = "k8s.node.uid"; +/** + * The name of the namespace that the pod is running in. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_NAMESPACE_NAME = "k8s.namespace.name"; +/** + * The UID of the Pod. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_POD_UID = "k8s.pod.uid"; +/** + * The name of the Pod. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_POD_NAME = "k8s.pod.name"; +/** + * The name of the Container in a Pod template. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CONTAINER_NAME = "k8s.container.name"; +/** + * The UID of the ReplicaSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_REPLICASET_UID = "k8s.replicaset.uid"; +/** + * The name of the ReplicaSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_REPLICASET_NAME = "k8s.replicaset.name"; +/** + * The UID of the Deployment. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DEPLOYMENT_UID = "k8s.deployment.uid"; +/** + * The name of the Deployment. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DEPLOYMENT_NAME = "k8s.deployment.name"; +/** + * The UID of the StatefulSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_STATEFULSET_UID = "k8s.statefulset.uid"; +/** + * The name of the StatefulSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_STATEFULSET_NAME = "k8s.statefulset.name"; +/** + * The UID of the DaemonSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DAEMONSET_UID = "k8s.daemonset.uid"; +/** + * The name of the DaemonSet. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_DAEMONSET_NAME = "k8s.daemonset.name"; +/** + * The UID of the Job. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_JOB_UID = "k8s.job.uid"; +/** + * The name of the Job. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_JOB_NAME = "k8s.job.name"; +/** + * The UID of the CronJob. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CRONJOB_UID = "k8s.cronjob.uid"; +/** + * The name of the CronJob. + * + * @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}). + */ +export declare const SEMRESATTRS_K8S_CRONJOB_NAME = "k8s.cronjob.name"; +/** + * The operating system type. + * + * @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}). + */ +export declare const SEMRESATTRS_OS_TYPE = "os.type"; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @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}). + */ +export declare const SEMRESATTRS_OS_DESCRIPTION = "os.description"; +/** + * Human readable operating system name. + * + * @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}). + */ +export declare const SEMRESATTRS_OS_NAME = "os.name"; +/** + * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes). + * + * @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}). + */ +export declare const SEMRESATTRS_OS_VERSION = "os.version"; +/** + * Process identifier (PID). + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_PID = "process.pid"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = "process.executable.name"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = "process.executable.path"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_COMMAND = "process.command"; +/** + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_COMMAND_LINE = "process.command_line"; +/** + * 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`. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_COMMAND_ARGS = "process.command_args"; +/** + * The username of the user that owns the process. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_OWNER = "process.owner"; +/** + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_RUNTIME_NAME = "process.runtime.name"; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_RUNTIME_VERSION = "process.runtime.version"; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @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}). + */ +export declare const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = "process.runtime.description"; +/** + * Logical name of the service. + * + * 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`. + * + * @deprecated Use ATTR_SERVICE_NAME. + */ +export declare const SEMRESATTRS_SERVICE_NAME = "service.name"; +/** + * A namespace for `service.name`. + * + * 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. + * + * @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}). + */ +export declare const SEMRESATTRS_SERVICE_NAMESPACE = "service.namespace"; +/** + * The string ID of the service instance. + * + * 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). + * + * @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}). + */ +export declare const SEMRESATTRS_SERVICE_INSTANCE_ID = "service.instance.id"; +/** + * The version string of the service API or implementation. + * + * @deprecated Use ATTR_SERVICE_VERSION. + */ +export declare const SEMRESATTRS_SERVICE_VERSION = "service.version"; +/** + * The name of the telemetry SDK as defined above. + * + * @deprecated Use ATTR_TELEMETRY_SDK_NAME. + */ +export declare const SEMRESATTRS_TELEMETRY_SDK_NAME = "telemetry.sdk.name"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE. + */ +export declare const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = "telemetry.sdk.language"; +/** + * The version string of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_VERSION. + */ +export declare const SEMRESATTRS_TELEMETRY_SDK_VERSION = "telemetry.sdk.version"; +/** + * The version string of the auto instrumentation agent, if used. + * + * @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}). + */ +export declare const SEMRESATTRS_TELEMETRY_AUTO_VERSION = "telemetry.auto.version"; +/** + * The name of the web engine. + * + * @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}). + */ +export declare const SEMRESATTRS_WEBENGINE_NAME = "webengine.name"; +/** + * The version of the web engine. + * + * @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}). + */ +export declare const SEMRESATTRS_WEBENGINE_VERSION = "webengine.version"; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @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}). + */ +export declare const SEMRESATTRS_WEBENGINE_DESCRIPTION = "webengine.description"; +/** + * Definition of available values for SemanticResourceAttributes + * This type is used for backward compatibility, you should use the individual exported + * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference + * to a constant map value will result in all strings being included into your bundle. + * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification. + */ +export type SemanticResourceAttributes = { + /** + * Name of the cloud provider. + */ + CLOUD_PROVIDER: 'cloud.provider'; + /** + * The cloud account ID the resource is assigned to. + */ + CLOUD_ACCOUNT_ID: 'cloud.account.id'; + /** + * 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). + */ + CLOUD_REGION: 'cloud.region'; + /** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + */ + CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone'; + /** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + */ + CLOUD_PLATFORM: 'cloud.platform'; + /** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + */ + AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn'; + /** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + */ + AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn'; + /** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + */ + AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype'; + /** + * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). + */ + AWS_ECS_TASK_ARN: 'aws.ecs.task.arn'; + /** + * The task definition family this task definition is a member of. + */ + AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family'; + /** + * The revision for this task definition. + */ + AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision'; + /** + * The ARN of an EKS cluster. + */ + AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn'; + /** + * The name(s) of the AWS log group(s) an application is writing to. + * + * 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. + */ + AWS_LOG_GROUP_NAMES: 'aws.log.group.names'; + /** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * 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). + */ + AWS_LOG_GROUP_ARNS: 'aws.log.group.arns'; + /** + * The name(s) of the AWS log stream(s) an application is writing to. + */ + AWS_LOG_STREAM_NAMES: 'aws.log.stream.names'; + /** + * The ARN(s) of the AWS log stream(s). + * + * 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. + */ + AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns'; + /** + * Container name. + */ + CONTAINER_NAME: 'container.name'; + /** + * 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. + */ + CONTAINER_ID: 'container.id'; + /** + * The container runtime managing this container. + */ + CONTAINER_RUNTIME: 'container.runtime'; + /** + * Name of the image the container was built on. + */ + CONTAINER_IMAGE_NAME: 'container.image.name'; + /** + * Container image tag. + */ + CONTAINER_IMAGE_TAG: 'container.image.tag'; + /** + * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + */ + DEPLOYMENT_ENVIRONMENT: 'deployment.environment'; + /** + * A unique identifier representing the device. + * + * 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. + */ + DEVICE_ID: 'device.id'; + /** + * The model identifier for the device. + * + * 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. + */ + DEVICE_MODEL_IDENTIFIER: 'device.model.identifier'; + /** + * The marketing name for the device model. + * + * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative. + */ + DEVICE_MODEL_NAME: 'device.model.name'; + /** + * The name of the single function that this runtime instance executes. + * + * 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). + */ + FAAS_NAME: 'faas.name'; + /** + * The unique ID of the single function that this runtime instance executes. + * + * Note: Depending on the cloud provider, use: + + * **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + Take care not to use the "invoked ARN" directly but replace any + [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 + different aliases. + * **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) + * **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id). + + On some providers, it may not be possible to determine the full ID at startup, + which is why this field cannot be made required. For example, on AWS the account ID + part of the ARN is not available without calling another AWS API + which may be deemed too slow for a short-running lambda function. + As an alternative, consider setting `faas.id` as a span attribute instead. + */ + FAAS_ID: 'faas.id'; + /** + * The immutable version of the function being executed. + * + * Note: Depending on the cloud provider and platform, use: + + * **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + (an integer represented as a decimal string). + * **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions) + (i.e., the function name plus the revision suffix). + * **Google Cloud Functions:** The value of the + [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). + * **Azure Functions:** Not applicable. Do not set this attribute. + */ + FAAS_VERSION: 'faas.version'; + /** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * Note: * **AWS Lambda:** Use the (full) log stream name. + */ + FAAS_INSTANCE: 'faas.instance'; + /** + * The amount of memory available to the serverless function in MiB. + * + * 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. + */ + FAAS_MAX_MEMORY: 'faas.max_memory'; + /** + * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. + */ + HOST_ID: 'host.id'; + /** + * 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. + */ + HOST_NAME: 'host.name'; + /** + * Type of host. For Cloud, this must be the machine type. + */ + HOST_TYPE: 'host.type'; + /** + * The CPU architecture the host system is running on. + */ + HOST_ARCH: 'host.arch'; + /** + * Name of the VM image or OS install the host was instantiated from. + */ + HOST_IMAGE_NAME: 'host.image.name'; + /** + * VM image ID. For Cloud, this value is from the provider. + */ + HOST_IMAGE_ID: 'host.image.id'; + /** + * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes). + */ + HOST_IMAGE_VERSION: 'host.image.version'; + /** + * The name of the cluster. + */ + K8S_CLUSTER_NAME: 'k8s.cluster.name'; + /** + * The name of the Node. + */ + K8S_NODE_NAME: 'k8s.node.name'; + /** + * The UID of the Node. + */ + K8S_NODE_UID: 'k8s.node.uid'; + /** + * The name of the namespace that the pod is running in. + */ + K8S_NAMESPACE_NAME: 'k8s.namespace.name'; + /** + * The UID of the Pod. + */ + K8S_POD_UID: 'k8s.pod.uid'; + /** + * The name of the Pod. + */ + K8S_POD_NAME: 'k8s.pod.name'; + /** + * The name of the Container in a Pod template. + */ + K8S_CONTAINER_NAME: 'k8s.container.name'; + /** + * The UID of the ReplicaSet. + */ + K8S_REPLICASET_UID: 'k8s.replicaset.uid'; + /** + * The name of the ReplicaSet. + */ + K8S_REPLICASET_NAME: 'k8s.replicaset.name'; + /** + * The UID of the Deployment. + */ + K8S_DEPLOYMENT_UID: 'k8s.deployment.uid'; + /** + * The name of the Deployment. + */ + K8S_DEPLOYMENT_NAME: 'k8s.deployment.name'; + /** + * The UID of the StatefulSet. + */ + K8S_STATEFULSET_UID: 'k8s.statefulset.uid'; + /** + * The name of the StatefulSet. + */ + K8S_STATEFULSET_NAME: 'k8s.statefulset.name'; + /** + * The UID of the DaemonSet. + */ + K8S_DAEMONSET_UID: 'k8s.daemonset.uid'; + /** + * The name of the DaemonSet. + */ + K8S_DAEMONSET_NAME: 'k8s.daemonset.name'; + /** + * The UID of the Job. + */ + K8S_JOB_UID: 'k8s.job.uid'; + /** + * The name of the Job. + */ + K8S_JOB_NAME: 'k8s.job.name'; + /** + * The UID of the CronJob. + */ + K8S_CRONJOB_UID: 'k8s.cronjob.uid'; + /** + * The name of the CronJob. + */ + K8S_CRONJOB_NAME: 'k8s.cronjob.name'; + /** + * The operating system type. + */ + OS_TYPE: 'os.type'; + /** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + */ + OS_DESCRIPTION: 'os.description'; + /** + * Human readable operating system name. + */ + OS_NAME: 'os.name'; + /** + * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes). + */ + OS_VERSION: 'os.version'; + /** + * Process identifier (PID). + */ + PROCESS_PID: 'process.pid'; + /** + * 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`. + */ + PROCESS_EXECUTABLE_NAME: 'process.executable.name'; + /** + * 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`. + */ + PROCESS_EXECUTABLE_PATH: 'process.executable.path'; + /** + * 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`. + */ + PROCESS_COMMAND: 'process.command'; + /** + * 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. + */ + PROCESS_COMMAND_LINE: 'process.command_line'; + /** + * 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`. + */ + PROCESS_COMMAND_ARGS: 'process.command_args'; + /** + * The username of the user that owns the process. + */ + PROCESS_OWNER: 'process.owner'; + /** + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. + */ + PROCESS_RUNTIME_NAME: 'process.runtime.name'; + /** + * The version of the runtime of this process, as returned by the runtime without modification. + */ + PROCESS_RUNTIME_VERSION: 'process.runtime.version'; + /** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + */ + PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description'; + /** + * Logical name of the service. + * + * 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`. + */ + SERVICE_NAME: 'service.name'; + /** + * A namespace for `service.name`. + * + * 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. + */ + SERVICE_NAMESPACE: 'service.namespace'; + /** + * The string ID of the service instance. + * + * 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). + */ + SERVICE_INSTANCE_ID: 'service.instance.id'; + /** + * The version string of the service API or implementation. + */ + SERVICE_VERSION: 'service.version'; + /** + * The name of the telemetry SDK as defined above. + */ + TELEMETRY_SDK_NAME: 'telemetry.sdk.name'; + /** + * The language of the telemetry SDK. + */ + TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language'; + /** + * The version string of the telemetry SDK. + */ + TELEMETRY_SDK_VERSION: 'telemetry.sdk.version'; + /** + * The version string of the auto instrumentation agent, if used. + */ + TELEMETRY_AUTO_VERSION: 'telemetry.auto.version'; + /** + * The name of the web engine. + */ + WEBENGINE_NAME: 'webengine.name'; + /** + * The version of the web engine. + */ + WEBENGINE_VERSION: 'webengine.version'; + /** + * Additional description of the web engine (e.g. detailed version and edition information). + */ + WEBENGINE_DESCRIPTION: 'webengine.description'; +}; +/** + * Create exported Value Map for SemanticResourceAttributes values + * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification + */ +export declare const SemanticResourceAttributes: SemanticResourceAttributes; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_AWS = "aws"; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_AZURE = "azure"; +/** + * Name of the cloud provider. + * + * @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}). + */ +export declare const CLOUDPROVIDERVALUES_GCP = "gcp"; +/** + * Identifies the Values for CloudProviderValues enum definition + * + * Name of the cloud provider. + * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification. + */ +export type CloudProviderValues = { + /** Alibaba Cloud. */ + ALIBABA_CLOUD: 'alibaba_cloud'; + /** Amazon Web Services. */ + AWS: 'aws'; + /** Microsoft Azure. */ + AZURE: 'azure'; + /** Google Cloud Platform. */ + GCP: 'gcp'; +}; +/** + * The constant map of values for CloudProviderValues. + * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification. + */ +export declare const CloudProviderValues: CloudProviderValues; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = "alibaba_cloud_ecs"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = "alibaba_cloud_fc"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_EC2 = "aws_ec2"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_ECS = "aws_ecs"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_EKS = "aws_eks"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_LAMBDA = "aws_lambda"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_VM = "azure_vm"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = "azure_container_instances"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_AKS = "azure_aks"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = "azure_functions"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = "azure_app_service"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = "gcp_compute_engine"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = "gcp_cloud_run"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = "gcp_kubernetes_engine"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = "gcp_cloud_functions"; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +export declare const CLOUDPLATFORMVALUES_GCP_APP_ENGINE = "gcp_app_engine"; +/** + * Identifies the Values for CloudPlatformValues enum definition + * + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification. + */ +export type CloudPlatformValues = { + /** Alibaba Cloud Elastic Compute Service. */ + ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs'; + /** Alibaba Cloud Function Compute. */ + ALIBABA_CLOUD_FC: 'alibaba_cloud_fc'; + /** AWS Elastic Compute Cloud. */ + AWS_EC2: 'aws_ec2'; + /** AWS Elastic Container Service. */ + AWS_ECS: 'aws_ecs'; + /** AWS Elastic Kubernetes Service. */ + AWS_EKS: 'aws_eks'; + /** AWS Lambda. */ + AWS_LAMBDA: 'aws_lambda'; + /** AWS Elastic Beanstalk. */ + AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk'; + /** Azure Virtual Machines. */ + AZURE_VM: 'azure_vm'; + /** Azure Container Instances. */ + AZURE_CONTAINER_INSTANCES: 'azure_container_instances'; + /** Azure Kubernetes Service. */ + AZURE_AKS: 'azure_aks'; + /** Azure Functions. */ + AZURE_FUNCTIONS: 'azure_functions'; + /** Azure App Service. */ + AZURE_APP_SERVICE: 'azure_app_service'; + /** Google Cloud Compute Engine (GCE). */ + GCP_COMPUTE_ENGINE: 'gcp_compute_engine'; + /** Google Cloud Run. */ + GCP_CLOUD_RUN: 'gcp_cloud_run'; + /** Google Cloud Kubernetes Engine (GKE). */ + GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine'; + /** Google Cloud Functions (GCF). */ + GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions'; + /** Google Cloud App Engine (GAE). */ + GCP_APP_ENGINE: 'gcp_app_engine'; +}; +/** + * The constant map of values for CloudPlatformValues. + * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification. + */ +export declare const CloudPlatformValues: CloudPlatformValues; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export declare const AWSECSLAUNCHTYPEVALUES_EC2 = "ec2"; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +export declare const AWSECSLAUNCHTYPEVALUES_FARGATE = "fargate"; +/** + * Identifies the Values for AwsEcsLaunchtypeValues enum definition + * + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification. + */ +export type AwsEcsLaunchtypeValues = { + /** ec2. */ + EC2: 'ec2'; + /** fargate. */ + FARGATE: 'fargate'; +}; +/** + * The constant map of values for AwsEcsLaunchtypeValues. + * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification. + */ +export declare const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_AMD64 = "amd64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_ARM32 = "arm32"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_ARM64 = "arm64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_IA64 = "ia64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_PPC32 = "ppc32"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_PPC64 = "ppc64"; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +export declare const HOSTARCHVALUES_X86 = "x86"; +/** + * Identifies the Values for HostArchValues enum definition + * + * The CPU architecture the host system is running on. + * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification. + */ +export type HostArchValues = { + /** AMD64. */ + AMD64: 'amd64'; + /** ARM32. */ + ARM32: 'arm32'; + /** ARM64. */ + ARM64: 'arm64'; + /** Itanium. */ + IA64: 'ia64'; + /** 32-bit PowerPC. */ + PPC32: 'ppc32'; + /** 64-bit PowerPC. */ + PPC64: 'ppc64'; + /** 32-bit x86. */ + X86: 'x86'; +}; +/** + * The constant map of values for HostArchValues. + * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification. + */ +export declare const HostArchValues: HostArchValues; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_WINDOWS = "windows"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_LINUX = "linux"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_DARWIN = "darwin"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_FREEBSD = "freebsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_NETBSD = "netbsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_OPENBSD = "openbsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_DRAGONFLYBSD = "dragonflybsd"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_HPUX = "hpux"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_AIX = "aix"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_SOLARIS = "solaris"; +/** + * The operating system type. + * + * @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}). + */ +export declare const OSTYPEVALUES_Z_OS = "z_os"; +/** + * Identifies the Values for OsTypeValues enum definition + * + * The operating system type. + * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification. + */ +export type OsTypeValues = { + /** Microsoft Windows. */ + WINDOWS: 'windows'; + /** Linux. */ + LINUX: 'linux'; + /** Apple Darwin. */ + DARWIN: 'darwin'; + /** FreeBSD. */ + FREEBSD: 'freebsd'; + /** NetBSD. */ + NETBSD: 'netbsd'; + /** OpenBSD. */ + OPENBSD: 'openbsd'; + /** DragonFly BSD. */ + DRAGONFLYBSD: 'dragonflybsd'; + /** HP-UX (Hewlett Packard Unix). */ + HPUX: 'hpux'; + /** AIX (Advanced Interactive eXecutive). */ + AIX: 'aix'; + /** Oracle Solaris. */ + SOLARIS: 'solaris'; + /** IBM z/OS. */ + Z_OS: 'z_os'; +}; +/** + * The constant map of values for OsTypeValues. + * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification. + */ +export declare const OsTypeValues: OsTypeValues; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_CPP = "cpp"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_DOTNET = "dotnet"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_ERLANG = "erlang"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_GO = "go"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_JAVA = "java"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_NODEJS = "nodejs"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_PHP = "php"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_PYTHON = "python"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_RUBY = "ruby"; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS. + */ +export declare const TELEMETRYSDKLANGUAGEVALUES_WEBJS = "webjs"; +/** + * Identifies the Values for TelemetrySdkLanguageValues enum definition + * + * The language of the telemetry SDK. + * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification. + */ +export type TelemetrySdkLanguageValues = { + /** cpp. */ + CPP: 'cpp'; + /** dotnet. */ + DOTNET: 'dotnet'; + /** erlang. */ + ERLANG: 'erlang'; + /** go. */ + GO: 'go'; + /** java. */ + JAVA: 'java'; + /** nodejs. */ + NODEJS: 'nodejs'; + /** php. */ + PHP: 'php'; + /** python. */ + PYTHON: 'python'; + /** ruby. */ + RUBY: 'ruby'; + /** webjs. */ + WEBJS: 'webjs'; +}; +/** + * The constant map of values for TelemetrySdkLanguageValues. + * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification. + */ +export declare const TelemetrySdkLanguageValues: TelemetrySdkLanguageValues; +//# sourceMappingURL=SemanticResourceAttributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.js new file mode 100644 index 0000000..dc0c8af --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.js @@ -0,0 +1,1266 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +exports.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; +exports.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; +const utils_1 = require("../internal/utils"); +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------------------------- +// Constant values for SemanticResourceAttributes +//---------------------------------------------------------------------------------------------------------- +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_CLOUD_PROVIDER = 'cloud.provider'; +const TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id'; +const TMP_CLOUD_REGION = 'cloud.region'; +const TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone'; +const TMP_CLOUD_PLATFORM = 'cloud.platform'; +const TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn'; +const TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn'; +const TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype'; +const TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn'; +const TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family'; +const TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision'; +const TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn'; +const TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names'; +const TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns'; +const TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names'; +const TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns'; +const TMP_CONTAINER_NAME = 'container.name'; +const TMP_CONTAINER_ID = 'container.id'; +const TMP_CONTAINER_RUNTIME = 'container.runtime'; +const TMP_CONTAINER_IMAGE_NAME = 'container.image.name'; +const TMP_CONTAINER_IMAGE_TAG = 'container.image.tag'; +const TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment'; +const TMP_DEVICE_ID = 'device.id'; +const TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier'; +const TMP_DEVICE_MODEL_NAME = 'device.model.name'; +const TMP_FAAS_NAME = 'faas.name'; +const TMP_FAAS_ID = 'faas.id'; +const TMP_FAAS_VERSION = 'faas.version'; +const TMP_FAAS_INSTANCE = 'faas.instance'; +const TMP_FAAS_MAX_MEMORY = 'faas.max_memory'; +const TMP_HOST_ID = 'host.id'; +const TMP_HOST_NAME = 'host.name'; +const TMP_HOST_TYPE = 'host.type'; +const TMP_HOST_ARCH = 'host.arch'; +const TMP_HOST_IMAGE_NAME = 'host.image.name'; +const TMP_HOST_IMAGE_ID = 'host.image.id'; +const TMP_HOST_IMAGE_VERSION = 'host.image.version'; +const TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name'; +const TMP_K8S_NODE_NAME = 'k8s.node.name'; +const TMP_K8S_NODE_UID = 'k8s.node.uid'; +const TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name'; +const TMP_K8S_POD_UID = 'k8s.pod.uid'; +const TMP_K8S_POD_NAME = 'k8s.pod.name'; +const TMP_K8S_CONTAINER_NAME = 'k8s.container.name'; +const TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid'; +const TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name'; +const TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid'; +const TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name'; +const TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid'; +const TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name'; +const TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid'; +const TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name'; +const TMP_K8S_JOB_UID = 'k8s.job.uid'; +const TMP_K8S_JOB_NAME = 'k8s.job.name'; +const TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid'; +const TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name'; +const TMP_OS_TYPE = 'os.type'; +const TMP_OS_DESCRIPTION = 'os.description'; +const TMP_OS_NAME = 'os.name'; +const TMP_OS_VERSION = 'os.version'; +const TMP_PROCESS_PID = 'process.pid'; +const TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name'; +const TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path'; +const TMP_PROCESS_COMMAND = 'process.command'; +const TMP_PROCESS_COMMAND_LINE = 'process.command_line'; +const TMP_PROCESS_COMMAND_ARGS = 'process.command_args'; +const TMP_PROCESS_OWNER = 'process.owner'; +const TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name'; +const TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version'; +const TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'; +const TMP_SERVICE_NAME = 'service.name'; +const TMP_SERVICE_NAMESPACE = 'service.namespace'; +const TMP_SERVICE_INSTANCE_ID = 'service.instance.id'; +const TMP_SERVICE_VERSION = 'service.version'; +const TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name'; +const TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language'; +const TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version'; +const TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version'; +const TMP_WEBENGINE_NAME = 'webengine.name'; +const TMP_WEBENGINE_VERSION = 'webengine.version'; +const TMP_WEBENGINE_DESCRIPTION = 'webengine.description'; +/** + * Name of the cloud provider. + * + * @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}). + */ +exports.SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER; +/** + * The cloud account ID the resource is assigned to. + * + * @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}). + */ +exports.SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID; +/** + * 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). + * + * @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}). + */ +exports.SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION; +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. + * + * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud. + * + * @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}). + */ +exports.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM; +/** + * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + * + * @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}). + */ +exports.SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN; +/** + * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + * + * @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}). + */ +exports.SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +exports.SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE; +/** + * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). + * + * @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}). + */ +exports.SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN; +/** + * The task definition family this task definition is a member of. + * + * @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}). + */ +exports.SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY; +/** + * The revision for this task definition. + * + * @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}). + */ +exports.SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION; +/** + * The ARN of an EKS cluster. + * + * @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}). + */ +exports.SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN; +/** + * The name(s) of the AWS log group(s) an application is writing to. + * + * 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. + * + * @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}). + */ +exports.SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES; +/** + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + * 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). + * + * @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}). + */ +exports.SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + * + * @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}). + */ +exports.SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES; +/** + * The ARN(s) of the AWS log stream(s). + * + * 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. + * + * @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}). + */ +exports.SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS; +/** + * Container name. + * + * @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}). + */ +exports.SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME; +/** + * 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. + * + * @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}). + */ +exports.SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID; +/** + * The container runtime managing this container. + * + * @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}). + */ +exports.SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME; +/** + * Name of the image the container was built on. + * + * @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}). + */ +exports.SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME; +/** + * Container image tag. + * + * @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}). + */ +exports.SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG; +/** + * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier). + * + * @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}). + */ +exports.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT; +/** + * A unique identifier representing the device. + * + * 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. + * + * @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}). + */ +exports.SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID; +/** + * The model identifier for the device. + * + * 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. + * + * @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}). + */ +exports.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER; +/** + * The marketing name for the device model. + * + * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative. + * + * @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}). + */ +exports.SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME; +/** + * The name of the single function that this runtime instance executes. + * + * 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). + * + * @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}). + */ +exports.SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME; +/** +* The unique ID of the single function that this runtime instance executes. +* +* Note: Depending on the cloud provider, use: + +* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). +Take care not to use the "invoked ARN" directly but replace any +[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 +different aliases. +* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) +* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id). + +On some providers, it may not be possible to determine the full ID at startup, +which is why this field cannot be made required. For example, on AWS the account ID +part of the ARN is not available without calling another AWS API +which may be deemed too slow for a short-running lambda function. +As an alternative, consider setting `faas.id` as a span attribute instead. +* +* @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}). +*/ +exports.SEMRESATTRS_FAAS_ID = TMP_FAAS_ID; +/** +* The immutable version of the function being executed. +* +* Note: Depending on the cloud provider and platform, use: + +* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + (an integer represented as a decimal string). +* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions) + (i.e., the function name plus the revision suffix). +* **Google Cloud Functions:** The value of the + [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). +* **Azure Functions:** Not applicable. Do not set this attribute. +* +* @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}). +*/ +exports.SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION; +/** + * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. + * + * Note: * **AWS Lambda:** Use the (full) log stream name. + * + * @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}). + */ +exports.SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE; +/** + * The amount of memory available to the serverless function in MiB. + * + * 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. + * + * @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}). + */ +exports.SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY; +/** + * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. + * + * @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}). + */ +exports.SEMRESATTRS_HOST_ID = TMP_HOST_ID; +/** + * 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. + * + * @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}). + */ +exports.SEMRESATTRS_HOST_NAME = TMP_HOST_NAME; +/** + * Type of host. For Cloud, this must be the machine type. + * + * @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}). + */ +exports.SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +exports.SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH; +/** + * Name of the VM image or OS install the host was instantiated from. + * + * @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}). + */ +exports.SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME; +/** + * VM image ID. For Cloud, this value is from the provider. + * + * @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}). + */ +exports.SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID; +/** + * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes). + * + * @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}). + */ +exports.SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION; +/** + * The name of the cluster. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME; +/** + * The name of the Node. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME; +/** + * The UID of the Node. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID; +/** + * The name of the namespace that the pod is running in. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME; +/** + * The UID of the Pod. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID; +/** + * The name of the Pod. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME; +/** + * The name of the Container in a Pod template. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME; +/** + * The UID of the ReplicaSet. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID; +/** + * The name of the ReplicaSet. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME; +/** + * The UID of the Deployment. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID; +/** + * The name of the Deployment. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME; +/** + * The UID of the StatefulSet. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID; +/** + * The name of the StatefulSet. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME; +/** + * The UID of the DaemonSet. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID; +/** + * The name of the DaemonSet. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME; +/** + * The UID of the Job. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID; +/** + * The name of the Job. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME; +/** + * The UID of the CronJob. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID; +/** + * The name of the CronJob. + * + * @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}). + */ +exports.SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME; +/** + * The operating system type. + * + * @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}). + */ +exports.SEMRESATTRS_OS_TYPE = TMP_OS_TYPE; +/** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. + * + * @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}). + */ +exports.SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION; +/** + * Human readable operating system name. + * + * @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}). + */ +exports.SEMRESATTRS_OS_NAME = TMP_OS_NAME; +/** + * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes). + * + * @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}). + */ +exports.SEMRESATTRS_OS_VERSION = TMP_OS_VERSION; +/** + * Process identifier (PID). + * + * @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}). + */ +exports.SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID; +/** + * 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`. + * + * @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}). + */ +exports.SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME; +/** + * 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`. + * + * @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}). + */ +exports.SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH; +/** + * 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`. + * + * @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}). + */ +exports.SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND; +/** + * 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. + * + * @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}). + */ +exports.SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE; +/** + * 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`. + * + * @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}). + */ +exports.SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS; +/** + * The username of the user that owns the process. + * + * @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}). + */ +exports.SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER; +/** + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. + * + * @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}). + */ +exports.SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME; +/** + * The version of the runtime of this process, as returned by the runtime without modification. + * + * @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}). + */ +exports.SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION; +/** + * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. + * + * @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}). + */ +exports.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = TMP_PROCESS_RUNTIME_DESCRIPTION; +/** + * Logical name of the service. + * + * 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`. + * + * @deprecated Use ATTR_SERVICE_NAME. + */ +exports.SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME; +/** + * A namespace for `service.name`. + * + * 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. + * + * @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}). + */ +exports.SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE; +/** + * The string ID of the service instance. + * + * 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). + * + * @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}). + */ +exports.SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID; +/** + * The version string of the service API or implementation. + * + * @deprecated Use ATTR_SERVICE_VERSION. + */ +exports.SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION; +/** + * The name of the telemetry SDK as defined above. + * + * @deprecated Use ATTR_TELEMETRY_SDK_NAME. + */ +exports.SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME; +/** + * The language of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE. + */ +exports.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE; +/** + * The version string of the telemetry SDK. + * + * @deprecated Use ATTR_TELEMETRY_SDK_VERSION. + */ +exports.SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION; +/** + * The version string of the auto instrumentation agent, if used. + * + * @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}). + */ +exports.SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION; +/** + * The name of the web engine. + * + * @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}). + */ +exports.SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME; +/** + * The version of the web engine. + * + * @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}). + */ +exports.SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION; +/** + * Additional description of the web engine (e.g. detailed version and edition information). + * + * @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}). + */ +exports.SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION; +/** + * Create exported Value Map for SemanticResourceAttributes values + * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification + */ +exports.SemanticResourceAttributes = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_CLOUD_PROVIDER, + TMP_CLOUD_ACCOUNT_ID, + TMP_CLOUD_REGION, + TMP_CLOUD_AVAILABILITY_ZONE, + TMP_CLOUD_PLATFORM, + TMP_AWS_ECS_CONTAINER_ARN, + TMP_AWS_ECS_CLUSTER_ARN, + TMP_AWS_ECS_LAUNCHTYPE, + TMP_AWS_ECS_TASK_ARN, + TMP_AWS_ECS_TASK_FAMILY, + TMP_AWS_ECS_TASK_REVISION, + TMP_AWS_EKS_CLUSTER_ARN, + TMP_AWS_LOG_GROUP_NAMES, + TMP_AWS_LOG_GROUP_ARNS, + TMP_AWS_LOG_STREAM_NAMES, + TMP_AWS_LOG_STREAM_ARNS, + TMP_CONTAINER_NAME, + TMP_CONTAINER_ID, + TMP_CONTAINER_RUNTIME, + TMP_CONTAINER_IMAGE_NAME, + TMP_CONTAINER_IMAGE_TAG, + TMP_DEPLOYMENT_ENVIRONMENT, + TMP_DEVICE_ID, + TMP_DEVICE_MODEL_IDENTIFIER, + TMP_DEVICE_MODEL_NAME, + TMP_FAAS_NAME, + TMP_FAAS_ID, + TMP_FAAS_VERSION, + TMP_FAAS_INSTANCE, + TMP_FAAS_MAX_MEMORY, + TMP_HOST_ID, + TMP_HOST_NAME, + TMP_HOST_TYPE, + TMP_HOST_ARCH, + TMP_HOST_IMAGE_NAME, + TMP_HOST_IMAGE_ID, + TMP_HOST_IMAGE_VERSION, + TMP_K8S_CLUSTER_NAME, + TMP_K8S_NODE_NAME, + TMP_K8S_NODE_UID, + TMP_K8S_NAMESPACE_NAME, + TMP_K8S_POD_UID, + TMP_K8S_POD_NAME, + TMP_K8S_CONTAINER_NAME, + TMP_K8S_REPLICASET_UID, + TMP_K8S_REPLICASET_NAME, + TMP_K8S_DEPLOYMENT_UID, + TMP_K8S_DEPLOYMENT_NAME, + TMP_K8S_STATEFULSET_UID, + TMP_K8S_STATEFULSET_NAME, + TMP_K8S_DAEMONSET_UID, + TMP_K8S_DAEMONSET_NAME, + TMP_K8S_JOB_UID, + TMP_K8S_JOB_NAME, + TMP_K8S_CRONJOB_UID, + TMP_K8S_CRONJOB_NAME, + TMP_OS_TYPE, + TMP_OS_DESCRIPTION, + TMP_OS_NAME, + TMP_OS_VERSION, + TMP_PROCESS_PID, + TMP_PROCESS_EXECUTABLE_NAME, + TMP_PROCESS_EXECUTABLE_PATH, + TMP_PROCESS_COMMAND, + TMP_PROCESS_COMMAND_LINE, + TMP_PROCESS_COMMAND_ARGS, + TMP_PROCESS_OWNER, + TMP_PROCESS_RUNTIME_NAME, + TMP_PROCESS_RUNTIME_VERSION, + TMP_PROCESS_RUNTIME_DESCRIPTION, + TMP_SERVICE_NAME, + TMP_SERVICE_NAMESPACE, + TMP_SERVICE_INSTANCE_ID, + TMP_SERVICE_VERSION, + TMP_TELEMETRY_SDK_NAME, + TMP_TELEMETRY_SDK_LANGUAGE, + TMP_TELEMETRY_SDK_VERSION, + TMP_TELEMETRY_AUTO_VERSION, + TMP_WEBENGINE_NAME, + TMP_WEBENGINE_VERSION, + TMP_WEBENGINE_DESCRIPTION, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for CloudProviderValues enum definition + * + * Name of the cloud provider. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud'; +const TMP_CLOUDPROVIDERVALUES_AWS = 'aws'; +const TMP_CLOUDPROVIDERVALUES_AZURE = 'azure'; +const TMP_CLOUDPROVIDERVALUES_GCP = 'gcp'; +/** + * Name of the cloud provider. + * + * @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}). + */ +exports.CLOUDPROVIDERVALUES_ALIBABA_CLOUD = TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD; +/** + * Name of the cloud provider. + * + * @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}). + */ +exports.CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS; +/** + * Name of the cloud provider. + * + * @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}). + */ +exports.CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE; +/** + * Name of the cloud provider. + * + * @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}). + */ +exports.CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP; +/** + * The constant map of values for CloudProviderValues. + * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification. + */ +exports.CloudProviderValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD, + TMP_CLOUDPROVIDERVALUES_AWS, + TMP_CLOUDPROVIDERVALUES_AZURE, + TMP_CLOUDPROVIDERVALUES_GCP, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for CloudPlatformValues enum definition + * + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs'; +const TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc'; +const TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2'; +const TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs'; +const TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks'; +const TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda'; +const TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk'; +const TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm'; +const TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = 'azure_container_instances'; +const TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks'; +const TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions'; +const TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service'; +const TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine'; +const TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run'; +const TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine'; +const TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions'; +const TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine'; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_AWS_LAMBDA = TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS; +/** + * The cloud platform in use. + * + * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`. + * + * @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}). + */ +exports.CLOUDPLATFORMVALUES_GCP_APP_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE; +/** + * The constant map of values for CloudPlatformValues. + * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification. + */ +exports.CloudPlatformValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS, + TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC, + TMP_CLOUDPLATFORMVALUES_AWS_EC2, + TMP_CLOUDPLATFORMVALUES_AWS_ECS, + TMP_CLOUDPLATFORMVALUES_AWS_EKS, + TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA, + TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK, + TMP_CLOUDPLATFORMVALUES_AZURE_VM, + TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES, + TMP_CLOUDPLATFORMVALUES_AZURE_AKS, + TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS, + TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE, + TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE, + TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN, + TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE, + TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS, + TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for AwsEcsLaunchtypeValues enum definition + * + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2'; +const TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate'; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +exports.AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2; +/** + * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. + * + * @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}). + */ +exports.AWSECSLAUNCHTYPEVALUES_FARGATE = TMP_AWSECSLAUNCHTYPEVALUES_FARGATE; +/** + * The constant map of values for AwsEcsLaunchtypeValues. + * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification. + */ +exports.AwsEcsLaunchtypeValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_AWSECSLAUNCHTYPEVALUES_EC2, + TMP_AWSECSLAUNCHTYPEVALUES_FARGATE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for HostArchValues enum definition + * + * The CPU architecture the host system is running on. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_HOSTARCHVALUES_AMD64 = 'amd64'; +const TMP_HOSTARCHVALUES_ARM32 = 'arm32'; +const TMP_HOSTARCHVALUES_ARM64 = 'arm64'; +const TMP_HOSTARCHVALUES_IA64 = 'ia64'; +const TMP_HOSTARCHVALUES_PPC32 = 'ppc32'; +const TMP_HOSTARCHVALUES_PPC64 = 'ppc64'; +const TMP_HOSTARCHVALUES_X86 = 'x86'; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +exports.HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +exports.HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +exports.HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +exports.HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +exports.HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +exports.HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64; +/** + * The CPU architecture the host system is running on. + * + * @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}). + */ +exports.HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86; +/** + * The constant map of values for HostArchValues. + * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification. + */ +exports.HostArchValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_HOSTARCHVALUES_AMD64, + TMP_HOSTARCHVALUES_ARM32, + TMP_HOSTARCHVALUES_ARM64, + TMP_HOSTARCHVALUES_IA64, + TMP_HOSTARCHVALUES_PPC32, + TMP_HOSTARCHVALUES_PPC64, + TMP_HOSTARCHVALUES_X86, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for OsTypeValues enum definition + * + * The operating system type. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_OSTYPEVALUES_WINDOWS = 'windows'; +const TMP_OSTYPEVALUES_LINUX = 'linux'; +const TMP_OSTYPEVALUES_DARWIN = 'darwin'; +const TMP_OSTYPEVALUES_FREEBSD = 'freebsd'; +const TMP_OSTYPEVALUES_NETBSD = 'netbsd'; +const TMP_OSTYPEVALUES_OPENBSD = 'openbsd'; +const TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd'; +const TMP_OSTYPEVALUES_HPUX = 'hpux'; +const TMP_OSTYPEVALUES_AIX = 'aix'; +const TMP_OSTYPEVALUES_SOLARIS = 'solaris'; +const TMP_OSTYPEVALUES_Z_OS = 'z_os'; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS; +/** + * The operating system type. + * + * @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}). + */ +exports.OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS; +/** + * The constant map of values for OsTypeValues. + * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification. + */ +exports.OsTypeValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_OSTYPEVALUES_WINDOWS, + TMP_OSTYPEVALUES_LINUX, + TMP_OSTYPEVALUES_DARWIN, + TMP_OSTYPEVALUES_FREEBSD, + TMP_OSTYPEVALUES_NETBSD, + TMP_OSTYPEVALUES_OPENBSD, + TMP_OSTYPEVALUES_DRAGONFLYBSD, + TMP_OSTYPEVALUES_HPUX, + TMP_OSTYPEVALUES_AIX, + TMP_OSTYPEVALUES_SOLARIS, + TMP_OSTYPEVALUES_Z_OS, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for TelemetrySdkLanguageValues enum definition + * + * The language of the telemetry SDK. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby'; +const TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs'; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP. + */ +exports.TELEMETRYSDKLANGUAGEVALUES_CPP = TMP_TELEMETRYSDKLANGUAGEVALUES_CPP; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET. + */ +exports.TELEMETRYSDKLANGUAGEVALUES_DOTNET = TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG. + */ +exports.TELEMETRYSDKLANGUAGEVALUES_ERLANG = TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO. + */ +exports.TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA. + */ +exports.TELEMETRYSDKLANGUAGEVALUES_JAVA = TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS. + */ +exports.TELEMETRYSDKLANGUAGEVALUES_NODEJS = TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP. + */ +exports.TELEMETRYSDKLANGUAGEVALUES_PHP = TMP_TELEMETRYSDKLANGUAGEVALUES_PHP; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON. + */ +exports.TELEMETRYSDKLANGUAGEVALUES_PYTHON = TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY. + */ +exports.TELEMETRYSDKLANGUAGEVALUES_RUBY = TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY; +/** + * The language of the telemetry SDK. + * + * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS. + */ +exports.TELEMETRYSDKLANGUAGEVALUES_WEBJS = TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS; +/** + * The constant map of values for TelemetrySdkLanguageValues. + * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification. + */ +exports.TelemetrySdkLanguageValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_TELEMETRYSDKLANGUAGEVALUES_CPP, + TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET, + TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG, + TMP_TELEMETRYSDKLANGUAGEVALUES_GO, + TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA, + TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS, + TMP_TELEMETRYSDKLANGUAGEVALUES_PHP, + TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON, + TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY, + TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS, +]); +//# sourceMappingURL=SemanticResourceAttributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.js.map new file mode 100644 index 0000000..fd1513d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SemanticResourceAttributes.js","sourceRoot":"","sources":["../../../src/resource/SemanticResourceAttributes.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\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/**\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 */\nexport const SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n\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 */\nexport const SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n\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 */\nexport const SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n\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 */\nexport const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n\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 */\nexport const SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n\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 */\nexport const SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n\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 */\nexport const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n\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 */\nexport const SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n\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 */\nexport const SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n\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 */\nexport const SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n\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 */\nexport const SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n\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 */\nexport const SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n\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 */\nexport const SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n\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 */\nexport const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n\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 */\nexport const SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n\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 */\nexport const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n\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 */\nexport const SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n\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 */\nexport const SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n\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*/\nexport const SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n\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*/\nexport const SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n\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 */\nexport const SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n\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 */\nexport const SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n\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 */\nexport const SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n\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 */\nexport const SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n\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 */\nexport const SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n\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 */\nexport const SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n\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 */\nexport const SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n\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 */\nexport const SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n\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 */\nexport const SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n\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 */\nexport const SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n\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 */\nexport const SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n\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 */\nexport const SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n\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 */\nexport const SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n\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 */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n\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 */\nexport const SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n\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 */\nexport const SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n\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 */\nexport const SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n\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 */\nexport const SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n\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 */\nexport const SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n\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 */\nexport const SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n\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 */\nexport const SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n\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 */\nexport const SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n\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 */\nexport const SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n\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 */\nexport const SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n\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 */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n\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 */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n\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 */\nexport const SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n\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 */\nexport const SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n\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 */\nexport const SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n\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 */\nexport const SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n\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 */\nexport const SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n\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 */\nexport const SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n\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 */\nexport const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION =\n TMP_PROCESS_RUNTIME_DESCRIPTION;\n\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 */\nexport const SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n\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 */\nexport const SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n\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 */\nexport const SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport const SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n\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 */\nexport const SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n\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 */\nexport const SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n\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 */\nexport const SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n\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 */\nexport const SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n\n/**\n * Definition of available values for SemanticResourceAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification.\n */\nexport type SemanticResourceAttributes = {\n /**\n * Name of the cloud provider.\n */\n CLOUD_PROVIDER: 'cloud.provider';\n\n /**\n * The cloud account ID the resource is assigned to.\n */\n CLOUD_ACCOUNT_ID: 'cloud.account.id';\n\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 CLOUD_REGION: 'cloud.region';\n\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 CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone';\n\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 CLOUD_PLATFORM: 'cloud.platform';\n\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 AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn';\n\n /**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n */\n AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn';\n\n /**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n */\n AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype';\n\n /**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n */\n AWS_ECS_TASK_ARN: 'aws.ecs.task.arn';\n\n /**\n * The task definition family this task definition is a member of.\n */\n AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family';\n\n /**\n * The revision for this task definition.\n */\n AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision';\n\n /**\n * The ARN of an EKS cluster.\n */\n AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn';\n\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 AWS_LOG_GROUP_NAMES: 'aws.log.group.names';\n\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 AWS_LOG_GROUP_ARNS: 'aws.log.group.arns';\n\n /**\n * The name(s) of the AWS log stream(s) an application is writing to.\n */\n AWS_LOG_STREAM_NAMES: 'aws.log.stream.names';\n\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 AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns';\n\n /**\n * Container name.\n */\n CONTAINER_NAME: 'container.name';\n\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 CONTAINER_ID: 'container.id';\n\n /**\n * The container runtime managing this container.\n */\n CONTAINER_RUNTIME: 'container.runtime';\n\n /**\n * Name of the image the container was built on.\n */\n CONTAINER_IMAGE_NAME: 'container.image.name';\n\n /**\n * Container image tag.\n */\n CONTAINER_IMAGE_TAG: 'container.image.tag';\n\n /**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n */\n DEPLOYMENT_ENVIRONMENT: 'deployment.environment';\n\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 DEVICE_ID: 'device.id';\n\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 DEVICE_MODEL_IDENTIFIER: 'device.model.identifier';\n\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 DEVICE_MODEL_NAME: 'device.model.name';\n\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 FAAS_NAME: 'faas.name';\n\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 FAAS_ID: 'faas.id';\n\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 FAAS_VERSION: 'faas.version';\n\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 FAAS_INSTANCE: 'faas.instance';\n\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 FAAS_MAX_MEMORY: 'faas.max_memory';\n\n /**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n */\n HOST_ID: 'host.id';\n\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 HOST_NAME: 'host.name';\n\n /**\n * Type of host. For Cloud, this must be the machine type.\n */\n HOST_TYPE: 'host.type';\n\n /**\n * The CPU architecture the host system is running on.\n */\n HOST_ARCH: 'host.arch';\n\n /**\n * Name of the VM image or OS install the host was instantiated from.\n */\n HOST_IMAGE_NAME: 'host.image.name';\n\n /**\n * VM image ID. For Cloud, this value is from the provider.\n */\n HOST_IMAGE_ID: 'host.image.id';\n\n /**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n */\n HOST_IMAGE_VERSION: 'host.image.version';\n\n /**\n * The name of the cluster.\n */\n K8S_CLUSTER_NAME: 'k8s.cluster.name';\n\n /**\n * The name of the Node.\n */\n K8S_NODE_NAME: 'k8s.node.name';\n\n /**\n * The UID of the Node.\n */\n K8S_NODE_UID: 'k8s.node.uid';\n\n /**\n * The name of the namespace that the pod is running in.\n */\n K8S_NAMESPACE_NAME: 'k8s.namespace.name';\n\n /**\n * The UID of the Pod.\n */\n K8S_POD_UID: 'k8s.pod.uid';\n\n /**\n * The name of the Pod.\n */\n K8S_POD_NAME: 'k8s.pod.name';\n\n /**\n * The name of the Container in a Pod template.\n */\n K8S_CONTAINER_NAME: 'k8s.container.name';\n\n /**\n * The UID of the ReplicaSet.\n */\n K8S_REPLICASET_UID: 'k8s.replicaset.uid';\n\n /**\n * The name of the ReplicaSet.\n */\n K8S_REPLICASET_NAME: 'k8s.replicaset.name';\n\n /**\n * The UID of the Deployment.\n */\n K8S_DEPLOYMENT_UID: 'k8s.deployment.uid';\n\n /**\n * The name of the Deployment.\n */\n K8S_DEPLOYMENT_NAME: 'k8s.deployment.name';\n\n /**\n * The UID of the StatefulSet.\n */\n K8S_STATEFULSET_UID: 'k8s.statefulset.uid';\n\n /**\n * The name of the StatefulSet.\n */\n K8S_STATEFULSET_NAME: 'k8s.statefulset.name';\n\n /**\n * The UID of the DaemonSet.\n */\n K8S_DAEMONSET_UID: 'k8s.daemonset.uid';\n\n /**\n * The name of the DaemonSet.\n */\n K8S_DAEMONSET_NAME: 'k8s.daemonset.name';\n\n /**\n * The UID of the Job.\n */\n K8S_JOB_UID: 'k8s.job.uid';\n\n /**\n * The name of the Job.\n */\n K8S_JOB_NAME: 'k8s.job.name';\n\n /**\n * The UID of the CronJob.\n */\n K8S_CRONJOB_UID: 'k8s.cronjob.uid';\n\n /**\n * The name of the CronJob.\n */\n K8S_CRONJOB_NAME: 'k8s.cronjob.name';\n\n /**\n * The operating system type.\n */\n OS_TYPE: 'os.type';\n\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 OS_DESCRIPTION: 'os.description';\n\n /**\n * Human readable operating system name.\n */\n OS_NAME: 'os.name';\n\n /**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n */\n OS_VERSION: 'os.version';\n\n /**\n * Process identifier (PID).\n */\n PROCESS_PID: 'process.pid';\n\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 PROCESS_EXECUTABLE_NAME: 'process.executable.name';\n\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 PROCESS_EXECUTABLE_PATH: 'process.executable.path';\n\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 PROCESS_COMMAND: 'process.command';\n\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 PROCESS_COMMAND_LINE: 'process.command_line';\n\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 PROCESS_COMMAND_ARGS: 'process.command_args';\n\n /**\n * The username of the user that owns the process.\n */\n PROCESS_OWNER: 'process.owner';\n\n /**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n */\n PROCESS_RUNTIME_NAME: 'process.runtime.name';\n\n /**\n * The version of the runtime of this process, as returned by the runtime without modification.\n */\n PROCESS_RUNTIME_VERSION: 'process.runtime.version';\n\n /**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n */\n PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description';\n\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 SERVICE_NAME: 'service.name';\n\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 SERVICE_NAMESPACE: 'service.namespace';\n\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 SERVICE_INSTANCE_ID: 'service.instance.id';\n\n /**\n * The version string of the service API or implementation.\n */\n SERVICE_VERSION: 'service.version';\n\n /**\n * The name of the telemetry SDK as defined above.\n */\n TELEMETRY_SDK_NAME: 'telemetry.sdk.name';\n\n /**\n * The language of the telemetry SDK.\n */\n TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language';\n\n /**\n * The version string of the telemetry SDK.\n */\n TELEMETRY_SDK_VERSION: 'telemetry.sdk.version';\n\n /**\n * The version string of the auto instrumentation agent, if used.\n */\n TELEMETRY_AUTO_VERSION: 'telemetry.auto.version';\n\n /**\n * The name of the web engine.\n */\n WEBENGINE_NAME: 'webengine.name';\n\n /**\n * The version of the web engine.\n */\n WEBENGINE_VERSION: 'webengine.version';\n\n /**\n * Additional description of the web engine (e.g. detailed version and edition information).\n */\n WEBENGINE_DESCRIPTION: 'webengine.description';\n};\n\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 */\nexport const SemanticResourceAttributes: SemanticResourceAttributes =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const CLOUDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n\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 */\nexport const CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n\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 */\nexport const CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n\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 */\nexport const CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport type CloudProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\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 */\nexport const CloudProviderValues: CloudProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_CLOUDPROVIDERVALUES_AWS,\n TMP_CLOUDPROVIDERVALUES_AZURE,\n TMP_CLOUDPROVIDERVALUES_GCP,\n ]);\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\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 =\n '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/**\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 */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n\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 */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_LAMBDA =\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n\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 */\nexport const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK =\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n\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 */\nexport const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE =\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n\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 */\nexport const CLOUDPLATFORMVALUES_GCP_APP_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n\n/**\n * Identifies the 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 * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport type CloudPlatformValues = {\n /** Alibaba Cloud Elastic Compute Service. */\n ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs';\n\n /** Alibaba Cloud Function Compute. */\n ALIBABA_CLOUD_FC: 'alibaba_cloud_fc';\n\n /** AWS Elastic Compute Cloud. */\n AWS_EC2: 'aws_ec2';\n\n /** AWS Elastic Container Service. */\n AWS_ECS: 'aws_ecs';\n\n /** AWS Elastic Kubernetes Service. */\n AWS_EKS: 'aws_eks';\n\n /** AWS Lambda. */\n AWS_LAMBDA: 'aws_lambda';\n\n /** AWS Elastic Beanstalk. */\n AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk';\n\n /** Azure Virtual Machines. */\n AZURE_VM: 'azure_vm';\n\n /** Azure Container Instances. */\n AZURE_CONTAINER_INSTANCES: 'azure_container_instances';\n\n /** Azure Kubernetes Service. */\n AZURE_AKS: 'azure_aks';\n\n /** Azure Functions. */\n AZURE_FUNCTIONS: 'azure_functions';\n\n /** Azure App Service. */\n AZURE_APP_SERVICE: 'azure_app_service';\n\n /** Google Cloud Compute Engine (GCE). */\n GCP_COMPUTE_ENGINE: 'gcp_compute_engine';\n\n /** Google Cloud Run. */\n GCP_CLOUD_RUN: 'gcp_cloud_run';\n\n /** Google Cloud Kubernetes Engine (GKE). */\n GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine';\n\n /** Google Cloud Functions (GCF). */\n GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions';\n\n /** Google Cloud App Engine (GAE). */\n GCP_APP_ENGINE: 'gcp_app_engine';\n};\n\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 */\nexport const CloudPlatformValues: CloudPlatformValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n\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 */\nexport const AWSECSLAUNCHTYPEVALUES_FARGATE =\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n\n/**\n * Identifies the 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 * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport type AwsEcsLaunchtypeValues = {\n /** ec2. */\n EC2: 'ec2';\n\n /** fargate. */\n FARGATE: 'fargate';\n};\n\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 */\nexport const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n\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 */\nexport const HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n\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 */\nexport const HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n\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 */\nexport const HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n\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 */\nexport const HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n\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 */\nexport const HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n\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 */\nexport const HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n\n/**\n * Identifies the Values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport type HostArchValues = {\n /** AMD64. */\n AMD64: 'amd64';\n\n /** ARM32. */\n ARM32: 'arm32';\n\n /** ARM64. */\n ARM64: 'arm64';\n\n /** Itanium. */\n IA64: 'ia64';\n\n /** 32-bit PowerPC. */\n PPC32: 'ppc32';\n\n /** 64-bit PowerPC. */\n PPC64: 'ppc64';\n\n /** 32-bit x86. */\n X86: 'x86';\n};\n\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 */\nexport const HostArchValues: HostArchValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n\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 */\nexport const OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n\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 */\nexport const OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n\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 */\nexport const OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n\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 */\nexport const OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n\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 */\nexport const OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n\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 */\nexport const OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n\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 */\nexport const OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n\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 */\nexport const OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n\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 */\nexport const OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n\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 */\nexport const OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n\n/**\n * Identifies the Values for OsTypeValues enum definition\n *\n * The operating system type.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport type OsTypeValues = {\n /** Microsoft Windows. */\n WINDOWS: 'windows';\n\n /** Linux. */\n LINUX: 'linux';\n\n /** Apple Darwin. */\n DARWIN: 'darwin';\n\n /** FreeBSD. */\n FREEBSD: 'freebsd';\n\n /** NetBSD. */\n NETBSD: 'netbsd';\n\n /** OpenBSD. */\n OPENBSD: 'openbsd';\n\n /** DragonFly BSD. */\n DRAGONFLYBSD: 'dragonflybsd';\n\n /** HP-UX (Hewlett Packard Unix). */\n HPUX: 'hpux';\n\n /** AIX (Advanced Interactive eXecutive). */\n AIX: 'aix';\n\n /** Oracle Solaris. */\n SOLARIS: 'solaris';\n\n /** IBM z/OS. */\n Z_OS: 'z_os';\n};\n\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 */\nexport const OsTypeValues: OsTypeValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_CPP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_DOTNET =\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_ERLANG =\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_JAVA =\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_NODEJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PHP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PYTHON =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_RUBY =\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_WEBJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n\n/**\n * Identifies the Values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport type TelemetrySdkLanguageValues = {\n /** cpp. */\n CPP: 'cpp';\n\n /** dotnet. */\n DOTNET: 'dotnet';\n\n /** erlang. */\n ERLANG: 'erlang';\n\n /** go. */\n GO: 'go';\n\n /** java. */\n JAVA: 'java';\n\n /** nodejs. */\n NODEJS: 'nodejs';\n\n /** php. */\n PHP: 'php';\n\n /** python. */\n PYTHON: 'python';\n\n /** ruby. */\n RUBY: 'ruby';\n\n /** webjs. */\n WEBJS: 'webjs';\n};\n\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 */\nexport const TelemetrySdkLanguageValues: TelemetrySdkLanguageValues =\n /*#__PURE__*/ 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"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.d.ts new file mode 100644 index 0000000..300db0a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.d.ts @@ -0,0 +1,2 @@ +export * from './SemanticResourceAttributes'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.js new file mode 100644 index 0000000..aa8ee5b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.js @@ -0,0 +1,37 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +/* eslint-disable no-restricted-syntax -- + * These re-exports are only of constants, only one-level deep at this point, + * and should not cause problems for tree-shakers. + */ +__exportStar(require("./SemanticResourceAttributes"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.js.map new file mode 100644 index 0000000..4912ee4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resource/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;AAEH;;;GAGG;AACH,+DAA6C","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* 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 */\nexport * from './SemanticResourceAttributes';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.d.ts new file mode 100644 index 0000000..f3f6a36 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.d.ts @@ -0,0 +1,1069 @@ +/** + * ASP.NET Core exception middleware handling result. + * + * @example handled + * @example unhandled + */ +export declare const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT: "aspnetcore.diagnostics.exception.result"; +/** + * Enum value "aborted" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling didn't run because the request was aborted. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED: "aborted"; +/** + * Enum value "handled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was handled by the exception handling middleware. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED: "handled"; +/** + * Enum value "skipped" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling was skipped because the response had started. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED: "skipped"; +/** + * Enum value "unhandled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was not handled by the exception handling middleware. + */ +export declare const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED: "unhandled"; +/** + * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception. + * + * @example Contoso.MyHandler + */ +export declare const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE: "aspnetcore.diagnostics.handler.type"; +/** + * Rate limiting policy name. + * + * @example fixed + * @example sliding + * @example token + */ +export declare const ATTR_ASPNETCORE_RATE_LIMITING_POLICY: "aspnetcore.rate_limiting.policy"; +/** + * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason + * + * @example acquired + * @example request_canceled + */ +export declare const ATTR_ASPNETCORE_RATE_LIMITING_RESULT: "aspnetcore.rate_limiting.result"; +/** + * Enum value "acquired" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease was acquired + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED: "acquired"; +/** + * Enum value "endpoint_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the endpoint limiter + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER: "endpoint_limiter"; +/** + * Enum value "global_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the global limiter + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER: "global_limiter"; +/** + * Enum value "request_canceled" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was canceled + */ +export declare const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED: "request_canceled"; +/** + * Flag indicating if request was handled by the application pipeline. + * + * @example true + */ +export declare const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED: "aspnetcore.request.is_unhandled"; +/** + * A value that indicates whether the matched route is a fallback route. + * + * @example true + */ +export declare const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK: "aspnetcore.routing.is_fallback"; +/** + * Match result - success or failure + * + * @example success + * @example failure + */ +export declare const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS: "aspnetcore.routing.match_status"; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match failed + */ +export declare const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE: "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match succeeded + */ +export declare const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS: "success"; +/** + * A value that indicates whether the user is authenticated. + * + * @example true + */ +export declare const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED: "aspnetcore.user.is_authenticated"; +/** + * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example client.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +export declare const ATTR_CLIENT_ADDRESS: "client.address"; +/** + * Client port number. + * + * @example 65123 + * + * @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. + */ +export declare const ATTR_CLIENT_PORT: "client.port"; +/** + * 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. + * + * @example 16 + */ +export declare const ATTR_CODE_COLUMN_NUMBER: "code.column.number"; +/** + * 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. + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + */ +export declare const ATTR_CODE_FILE_PATH: "code.file.path"; +/** + * 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. + * + * @example com.example.MyHttpService.serveRequest + * @example GuzzleHttp\\Client::transfer + * @example fopen + * + * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples. + * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in + * `code.stacktrace` without information on arguments. + * + * Examples: + * + * - Java method: `com.example.MyHttpService.serveRequest` + * - Java anonymous class method: `com.mycompany.Main$1.myMethod` + * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod` + * - PHP function: `GuzzleHttp\Client::transfer` + * - Go function: `github.com/my/repo/pkg.foo.func5` + * - Elixir: `OpenTelemetry.Ctx.new` + * - Erlang: `opentelemetry_ctx:new` + * - Rust: `playground::my_module::my_cool_func` + * - C function: `fopen` + */ +export declare const ATTR_CODE_FUNCTION_NAME: "code.function.name"; +/** + * 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. + * + * @example 42 + */ +export declare const ATTR_CODE_LINE_NUMBER: "code.line.number"; +/** + * 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. + * + * @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" + */ +export declare const ATTR_CODE_STACKTRACE: "code.stacktrace"; +/** + * The name of a collection (table, container) within the database. + * + * @example public.users + * @example customers + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The collection name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple collections + * in non-batch operations. + * + * For batch operations, if the individual operations are known to have the same + * collection name then that collection name **SHOULD** be used. + */ +export declare const ATTR_DB_COLLECTION_NAME: "db.collection.name"; +/** + * The name of the database, fully qualified within the server address and port. + * + * @example customers + * @example test.users + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system. + * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization. + */ +export declare const ATTR_DB_NAMESPACE: "db.namespace"; +/** + * The number of queries included in a batch operation. + * + * @example 2 + * @example 3 + * @example 4 + * + * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`. + */ +export declare const ATTR_DB_OPERATION_BATCH_SIZE: "db.operation.batch.size"; +/** + * The name of the operation or command being executed. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The operation name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple operations + * in non-batch operations. + * + * If spaces can occur in the operation name, multiple consecutive spaces + * **SHOULD** be normalized to a single space. + * + * For batch operations, if the individual operations are known to have the same operation name + * then that operation name **SHOULD** be used prepended by `BATCH `, + * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database + * system specific term if more applicable. + */ +export declare const ATTR_DB_OPERATION_NAME: "db.operation.name"; +/** + * Low cardinality summary of a database query. + * + * @example SELECT wuser_table + * @example INSERT shipping_details SELECT orders + * @example get user by id + * + * @note The query summary describes a class of database queries and is useful + * as a grouping key, especially when analyzing telemetry for database + * calls involving complex queries. + * + * Summary may be available to the instrumentation through + * instrumentation hooks or other means. If it is not available, instrumentations + * that support query parsing **SHOULD** generate a summary following + * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query) + * section. + */ +export declare const ATTR_DB_QUERY_SUMMARY: "db.query.summary"; +/** + * The database query being executed. + * + * @example SELECT * FROM wuser_table where username = ? + * @example SET mykey ? + * + * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext). + * 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. + * 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. + */ +export declare const ATTR_DB_QUERY_TEXT: "db.query.text"; +/** + * Database response status code. + * + * @example 102 + * @example ORA-17002 + * @example 08P01 + * @example 404 + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system. + */ +export declare const ATTR_DB_RESPONSE_STATUS_CODE: "db.response.status_code"; +/** + * The name of a stored procedure within the database. + * + * @example GetCustomer + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * For batch operations, if the individual operations are known to have the same + * stored procedure name then that stored procedure name **SHOULD** be used. + */ +export declare const ATTR_DB_STORED_PROCEDURE_NAME: "db.stored_procedure.name"; +/** + * The database management system (DBMS) product as identified by the client instrumentation. + * + * @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. + */ +export declare const ATTR_DB_SYSTEM_NAME: "db.system.name"; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MariaDB](https://mariadb.org/) + */ +export declare const DB_SYSTEM_NAME_VALUE_MARIADB: "mariadb"; +/** + * Enum value "microsoft.sql_server" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Microsoft SQL Server](https://www.microsoft.com/sql-server) + */ +export declare const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER: "microsoft.sql_server"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MySQL](https://www.mysql.com/) + */ +export declare const DB_SYSTEM_NAME_VALUE_MYSQL: "mysql"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [PostgreSQL](https://www.postgresql.org/) + */ +export declare const DB_SYSTEM_NAME_VALUE_POSTGRESQL: "postgresql"; +/** + * Name of the garbage collector managed heap generation. + * + * @example gen0 + * @example gen1 + * @example gen2 + */ +export declare const ATTR_DOTNET_GC_HEAP_GENERATION: "dotnet.gc.heap.generation"; +/** + * Enum value "gen0" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 0 + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0: "gen0"; +/** + * Enum value "gen1" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 1 + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1: "gen1"; +/** + * Enum value "gen2" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 2 + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2: "gen2"; +/** + * Enum value "loh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Large Object Heap + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_LOH: "loh"; +/** + * Enum value "poh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Pinned Object Heap + */ +export declare const DOTNET_GC_HEAP_GENERATION_VALUE_POH: "poh"; +/** + * Describes a class of error the operation ended with. + * + * @example timeout + * @example java.net.UnknownHostException + * @example server_certificate_invalid + * @example 500 + * + * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality. + * + * When `error.type` is set to a type (e.g., an exception type), its + * canonical class name identifying the type within the artifact **SHOULD** be used. + * + * Instrumentations **SHOULD** document the list of errors they report. + * + * The cardinality of `error.type` within one instrumentation library **SHOULD** be low. + * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications + * should be prepared for `error.type` to have high cardinality at query time when no + * additional filters are applied. + * + * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`. + * + * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes), + * it's **RECOMMENDED** to: + * + * - Use a domain-specific attribute + * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not. + */ +export declare const ATTR_ERROR_TYPE: "error.type"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ERROR_TYPE}. + * + * A fallback error value to be used when the instrumentation doesn't define a custom value. + */ +export declare const ERROR_TYPE_VALUE_OTHER: "_OTHER"; +/** + * Indicates that the exception is escaping the scope of the span. + * + * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span. + */ +export declare const ATTR_EXCEPTION_ESCAPED: "exception.escaped"; +/** + * The exception message. + * + * @example Division by zero + * @example Can't convert 'int' object to str implicitly + */ +export declare const ATTR_EXCEPTION_MESSAGE: "exception.message"; +/** + * 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. + * + * @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" + */ +export declare const ATTR_EXCEPTION_STACKTRACE: "exception.stacktrace"; +/** + * 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. + * + * @example java.net.ConnectException + * @example OSError + */ +export declare const ATTR_EXCEPTION_TYPE: "exception.type"; +/** + * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * The `User-Agent` header is already captured in the `user_agent.original` attribute. + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type` + * attribute with value `["application/json"]`. + * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for` + * 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. + */ +export declare const ATTR_HTTP_REQUEST_HEADER: (key: string) => string; +/** + * HTTP request method. + * + * @example GET + * @example POST + * @example HEAD + * + * @note HTTP request method value **SHOULD** be "known" to the instrumentation. + * By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods), + * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html) + * 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). + * + * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`. + * + * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override + * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named + * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods + * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults). + * + * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly. + * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent. + * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value. + */ +export declare const ATTR_HTTP_REQUEST_METHOD: "http.request.method"; +/** + * Enum value "_OTHER" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * Any HTTP method that the instrumentation has no prior knowledge of. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_OTHER: "_OTHER"; +/** + * Enum value "CONNECT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * CONNECT method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_CONNECT: "CONNECT"; +/** + * Enum value "DELETE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * DELETE method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_DELETE: "DELETE"; +/** + * Enum value "GET" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * GET method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_GET: "GET"; +/** + * Enum value "HEAD" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * HEAD method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_HEAD: "HEAD"; +/** + * Enum value "OPTIONS" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * OPTIONS method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_OPTIONS: "OPTIONS"; +/** + * Enum value "PATCH" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PATCH method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_PATCH: "PATCH"; +/** + * Enum value "POST" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * POST method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_POST: "POST"; +/** + * Enum value "PUT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PUT method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_PUT: "PUT"; +/** + * Enum value "TRACE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * TRACE method. + */ +export declare const HTTP_REQUEST_METHOD_VALUE_TRACE: "TRACE"; +/** + * Original HTTP method sent by the client in the request line. + * + * @example GeT + * @example ACL + * @example foo + */ +export declare const ATTR_HTTP_REQUEST_METHOD_ORIGINAL: "http.request.method_original"; +/** + * The ordinal number of request resending attempt (for any reason, including redirects). + * + * @example 3 + * + * @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). + */ +export declare const ATTR_HTTP_REQUEST_RESEND_COUNT: "http.request.resend_count"; +/** + * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["abc", "def"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type` + * attribute with value `["application/json"]`. + * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header` + * attribute with value `["abc", "def"]` or `["abc, def"]` depending on the HTTP library. + */ +export declare const ATTR_HTTP_RESPONSE_HEADER: (key: string) => string; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @example 200 + */ +export declare const ATTR_HTTP_RESPONSE_STATUS_CODE: "http.response.status_code"; +/** + * 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. + * + * @example /users/:userID? + * @example my-controller/my-action/{id?} + * + * @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. + * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one. + * + * 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 + * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`. + * + * 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. + * + * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY** + * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string. + */ +export declare const ATTR_HTTP_ROUTE: "http.route"; +/** + * Name of the garbage collector action. + * + * @example end of minor GC + * @example end of major GC + * + * @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()). + */ +export declare const ATTR_JVM_GC_ACTION: "jvm.gc.action"; +/** + * Name of the garbage collector. + * + * @example G1 Young Generation + * @example G1 Old Generation + * + * @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()). + */ +export declare const ATTR_JVM_GC_NAME: "jvm.gc.name"; +/** + * Name of the memory pool. + * + * @example G1 Old Gen + * @example G1 Eden space + * @example G1 Survivor Space + * + * @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()). + */ +export declare const ATTR_JVM_MEMORY_POOL_NAME: "jvm.memory.pool.name"; +/** + * The type of memory. + * + * @example heap + * @example non_heap + */ +export declare const ATTR_JVM_MEMORY_TYPE: "jvm.memory.type"; +/** + * Enum value "heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Heap memory. + */ +export declare const JVM_MEMORY_TYPE_VALUE_HEAP: "heap"; +/** + * Enum value "non_heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Non-heap memory + */ +export declare const JVM_MEMORY_TYPE_VALUE_NON_HEAP: "non_heap"; +/** + * Whether the thread is daemon or not. + */ +export declare const ATTR_JVM_THREAD_DAEMON: "jvm.thread.daemon"; +/** + * State of the thread. + * + * @example runnable + * @example blocked + */ +export declare const ATTR_JVM_THREAD_STATE: "jvm.thread.state"; +/** + * Enum value "blocked" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is blocked waiting for a monitor lock is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_BLOCKED: "blocked"; +/** + * Enum value "new" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has not yet started is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_NEW: "new"; +/** + * Enum value "runnable" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread executing in the Java virtual machine is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_RUNNABLE: "runnable"; +/** + * Enum value "terminated" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has exited is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_TERMINATED: "terminated"; +/** + * Enum value "timed_waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_TIMED_WAITING: "timed_waiting"; +/** + * Enum value "waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting indefinitely for another thread to perform a particular action is in this state. + */ +export declare const JVM_THREAD_STATE_VALUE_WAITING: "waiting"; +/** + * Local address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +export declare const ATTR_NETWORK_LOCAL_ADDRESS: "network.local.address"; +/** + * Local port number of the network connection. + * + * @example 65123 + */ +export declare const ATTR_NETWORK_LOCAL_PORT: "network.local.port"; +/** + * Peer address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +export declare const ATTR_NETWORK_PEER_ADDRESS: "network.peer.address"; +/** + * Peer port number of the network connection. + * + * @example 65123 + */ +export declare const ATTR_NETWORK_PEER_PORT: "network.peer.port"; +/** + * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent. + * + * @example amqp + * @example http + * @example mqtt + * + * @note The value **SHOULD** be normalized to lowercase. + */ +export declare const ATTR_NETWORK_PROTOCOL_NAME: "network.protocol.name"; +/** + * The actual version of the protocol used for network communication. + * + * @example 1.1 + * @example 2 + * + * @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. + */ +export declare const ATTR_NETWORK_PROTOCOL_VERSION: "network.protocol.version"; +/** + * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). + * + * @example tcp + * @example udp + * + * @note The value **SHOULD** be normalized to lowercase. + * + * Consider always setting the transport when setting a port number, since + * a port number is ambiguous without knowing the transport. For example + * different processes could be listening on TCP port 12345 and UDP port 12345. + */ +export declare const ATTR_NETWORK_TRANSPORT: "network.transport"; +/** + * Enum value "pipe" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Named or anonymous pipe. + */ +export declare const NETWORK_TRANSPORT_VALUE_PIPE: "pipe"; +/** + * Enum value "quic" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * QUIC + */ +export declare const NETWORK_TRANSPORT_VALUE_QUIC: "quic"; +/** + * Enum value "tcp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * TCP + */ +export declare const NETWORK_TRANSPORT_VALUE_TCP: "tcp"; +/** + * Enum value "udp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * UDP + */ +export declare const NETWORK_TRANSPORT_VALUE_UDP: "udp"; +/** + * Enum value "unix" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Unix domain socket + */ +export declare const NETWORK_TRANSPORT_VALUE_UNIX: "unix"; +/** + * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent. + * + * @example ipv4 + * @example ipv6 + * + * @note The value **SHOULD** be normalized to lowercase. + */ +export declare const ATTR_NETWORK_TYPE: "network.type"; +/** + * Enum value "ipv4" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv4 + */ +export declare const NETWORK_TYPE_VALUE_IPV4: "ipv4"; +/** + * Enum value "ipv6" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv6 + */ +export declare const NETWORK_TYPE_VALUE_IPV6: "ipv6"; +/** + * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP). + * + * @example io.opentelemetry.contrib.mongodb + */ +export declare const ATTR_OTEL_SCOPE_NAME: "otel.scope.name"; +/** + * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP). + * + * @example 1.0.0 + */ +export declare const ATTR_OTEL_SCOPE_VERSION: "otel.scope.version"; +/** + * Name of the code, either "OK" or "ERROR". **MUST NOT** be set if the status code is UNSET. + */ +export declare const ATTR_OTEL_STATUS_CODE: "otel.status_code"; +/** + * Enum value "ERROR" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation contains an error. + */ +export declare const OTEL_STATUS_CODE_VALUE_ERROR: "ERROR"; +/** + * Enum value "OK" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation has been validated by an Application developer or Operator to have completed successfully. + */ +export declare const OTEL_STATUS_CODE_VALUE_OK: "OK"; +/** + * Description of the Status if it has a value, otherwise not set. + * + * @example resource not found + */ +export declare const ATTR_OTEL_STATUS_DESCRIPTION: "otel.status_description"; +/** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +export declare const ATTR_SERVER_ADDRESS: "server.address"; +/** + * Server port number. + * + * @example 80 + * @example 8080 + * @example 443 + * + * @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. + */ +export declare const ATTR_SERVER_PORT: "server.port"; +/** + * Logical name of the service. + * + * @example shoppingcart + * + * @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`. + */ +export declare const ATTR_SERVICE_NAME: "service.name"; +/** + * The version string of the service component. The format is not defined by these conventions. + * + * @example 2.0.0 + * @example a01dbef8a + */ +export declare const ATTR_SERVICE_VERSION: "service.version"; +/** + * SignalR HTTP connection closure status. + * + * @example app_shutdown + * @example timeout + */ +export declare const ATTR_SIGNALR_CONNECTION_STATUS: "signalr.connection.status"; +/** + * Enum value "app_shutdown" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed because the app is shutting down. + */ +export declare const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN: "app_shutdown"; +/** + * Enum value "normal_closure" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed normally. + */ +export declare const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE: "normal_closure"; +/** + * Enum value "timeout" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed due to a timeout. + */ +export declare const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT: "timeout"; +/** + * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md) + * + * @example web_sockets + * @example long_polling + */ +export declare const ATTR_SIGNALR_TRANSPORT: "signalr.transport"; +/** + * Enum value "long_polling" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * LongPolling protocol + */ +export declare const SIGNALR_TRANSPORT_VALUE_LONG_POLLING: "long_polling"; +/** + * Enum value "server_sent_events" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * ServerSentEvents protocol + */ +export declare const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS: "server_sent_events"; +/** + * Enum value "web_sockets" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * WebSockets protocol + */ +export declare const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS: "web_sockets"; +/** + * The language of the telemetry SDK. + */ +export declare const ATTR_TELEMETRY_SDK_LANGUAGE: "telemetry.sdk.language"; +/** + * Enum value "cpp" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_CPP: "cpp"; +/** + * Enum value "dotnet" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET: "dotnet"; +/** + * Enum value "erlang" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG: "erlang"; +/** + * Enum value "go" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_GO: "go"; +/** + * Enum value "java" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA: "java"; +/** + * Enum value "nodejs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS: "nodejs"; +/** + * Enum value "php" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_PHP: "php"; +/** + * Enum value "python" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON: "python"; +/** + * Enum value "ruby" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY: "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_RUST: "rust"; +/** + * Enum value "swift" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT: "swift"; +/** + * Enum value "webjs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +export declare const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS: "webjs"; +/** + * The name of the telemetry SDK as defined above. + * + * @example opentelemetry + * + * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`. + * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the + * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point + * or another suitable identifier depending on the language. + * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case. + * All custom identifiers **SHOULD** be stable across different versions of an implementation. + */ +export declare const ATTR_TELEMETRY_SDK_NAME: "telemetry.sdk.name"; +/** + * The version string of the telemetry SDK. + * + * @example 1.2.3 + */ +export declare const ATTR_TELEMETRY_SDK_VERSION: "telemetry.sdk.version"; +/** + * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component + * + * @example SemConv + */ +export declare const ATTR_URL_FRAGMENT: "url.fragment"; +/** + * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example //localhost + * + * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment + * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless. + * + * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`. + * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`. + * + * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed). + * + * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the + * value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `https://www.example.com/path?color=blue&sig=REDACTED`. + */ +export declare const ATTR_URL_FULL: "url.full"; +/** + * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component + * + * @example /search + * + * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it. + */ +export declare const ATTR_URL_PATH: "url.path"; +/** + * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component + * + * @example q=OpenTelemetry + * + * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `q=OpenTelemetry&sig=REDACTED`. + */ +export declare const ATTR_URL_QUERY: "url.query"; +/** + * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol. + * + * @example https + * @example ftp + * @example telnet + */ +export declare const ATTR_URL_SCHEME: "url.scheme"; +/** + * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2 + */ +export declare const ATTR_USER_AGENT_ORIGINAL: "user_agent.original"; +//# sourceMappingURL=stable_attributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js new file mode 100644 index 0000000..fed3ba6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js @@ -0,0 +1,1094 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +exports.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; +exports.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_NAME = exports.ATTR_SERVER_PORT = exports.ATTR_SERVER_ADDRESS = exports.ATTR_OTEL_STATUS_DESCRIPTION = exports.OTEL_STATUS_CODE_VALUE_OK = void 0; +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * ASP.NET Core exception middleware handling result. + * + * @example handled + * @example unhandled + */ +exports.ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result'; +/** + * Enum value "aborted" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling didn't run because the request was aborted. + */ +exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = "aborted"; +/** + * Enum value "handled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was handled by the exception handling middleware. + */ +exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = "handled"; +/** + * Enum value "skipped" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception handling was skipped because the response had started. + */ +exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = "skipped"; +/** + * Enum value "unhandled" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}. + * + * Exception was not handled by the exception handling middleware. + */ +exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = "unhandled"; +/** + * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception. + * + * @example Contoso.MyHandler + */ +exports.ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type'; +/** + * Rate limiting policy name. + * + * @example fixed + * @example sliding + * @example token + */ +exports.ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy'; +/** + * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason + * + * @example acquired + * @example request_canceled + */ +exports.ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result'; +/** + * Enum value "acquired" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease was acquired + */ +exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = "acquired"; +/** + * Enum value "endpoint_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the endpoint limiter + */ +exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = "endpoint_limiter"; +/** + * Enum value "global_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was rejected by the global limiter + */ +exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = "global_limiter"; +/** + * Enum value "request_canceled" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}. + * + * Lease request was canceled + */ +exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = "request_canceled"; +/** + * Flag indicating if request was handled by the application pipeline. + * + * @example true + */ +exports.ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled'; +/** + * A value that indicates whether the matched route is a fallback route. + * + * @example true + */ +exports.ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback'; +/** + * Match result - success or failure + * + * @example success + * @example failure + */ +exports.ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status'; +/** + * Enum value "failure" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match failed + */ +exports.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = "failure"; +/** + * Enum value "success" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}. + * + * Match succeeded + */ +exports.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = "success"; +/** + * A value that indicates whether the user is authenticated. + * + * @example true + */ +exports.ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated'; +/** + * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example client.example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +exports.ATTR_CLIENT_ADDRESS = 'client.address'; +/** + * Client port number. + * + * @example 65123 + * + * @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. + */ +exports.ATTR_CLIENT_PORT = 'client.port'; +/** + * 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. + * + * @example 16 + */ +exports.ATTR_CODE_COLUMN_NUMBER = 'code.column.number'; +/** + * 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. + * + * @example "/usr/local/MyApplication/content_root/app/index.php" + */ +exports.ATTR_CODE_FILE_PATH = 'code.file.path'; +/** + * 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. + * + * @example com.example.MyHttpService.serveRequest + * @example GuzzleHttp\\Client::transfer + * @example fopen + * + * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples. + * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in + * `code.stacktrace` without information on arguments. + * + * Examples: + * + * - Java method: `com.example.MyHttpService.serveRequest` + * - Java anonymous class method: `com.mycompany.Main$1.myMethod` + * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod` + * - PHP function: `GuzzleHttp\Client::transfer` + * - Go function: `github.com/my/repo/pkg.foo.func5` + * - Elixir: `OpenTelemetry.Ctx.new` + * - Erlang: `opentelemetry_ctx:new` + * - Rust: `playground::my_module::my_cool_func` + * - C function: `fopen` + */ +exports.ATTR_CODE_FUNCTION_NAME = 'code.function.name'; +/** + * 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. + * + * @example 42 + */ +exports.ATTR_CODE_LINE_NUMBER = 'code.line.number'; +/** + * 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. + * + * @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" + */ +exports.ATTR_CODE_STACKTRACE = 'code.stacktrace'; +/** + * The name of a collection (table, container) within the database. + * + * @example public.users + * @example customers + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The collection name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple collections + * in non-batch operations. + * + * For batch operations, if the individual operations are known to have the same + * collection name then that collection name **SHOULD** be used. + */ +exports.ATTR_DB_COLLECTION_NAME = 'db.collection.name'; +/** + * The name of the database, fully qualified within the server address and port. + * + * @example customers + * @example test.users + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system. + * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization. + */ +exports.ATTR_DB_NAMESPACE = 'db.namespace'; +/** + * The number of queries included in a batch operation. + * + * @example 2 + * @example 3 + * @example 4 + * + * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`. + */ +exports.ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size'; +/** + * The name of the operation or command being executed. + * + * @example findAndModify + * @example HMSET + * @example SELECT + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The operation name **SHOULD NOT** be extracted from `db.query.text`, + * when the database system supports query text with multiple operations + * in non-batch operations. + * + * If spaces can occur in the operation name, multiple consecutive spaces + * **SHOULD** be normalized to a single space. + * + * For batch operations, if the individual operations are known to have the same operation name + * then that operation name **SHOULD** be used prepended by `BATCH `, + * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database + * system specific term if more applicable. + */ +exports.ATTR_DB_OPERATION_NAME = 'db.operation.name'; +/** + * Low cardinality summary of a database query. + * + * @example SELECT wuser_table + * @example INSERT shipping_details SELECT orders + * @example get user by id + * + * @note The query summary describes a class of database queries and is useful + * as a grouping key, especially when analyzing telemetry for database + * calls involving complex queries. + * + * Summary may be available to the instrumentation through + * instrumentation hooks or other means. If it is not available, instrumentations + * that support query parsing **SHOULD** generate a summary following + * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query) + * section. + */ +exports.ATTR_DB_QUERY_SUMMARY = 'db.query.summary'; +/** + * The database query being executed. + * + * @example SELECT * FROM wuser_table where username = ? + * @example SET mykey ? + * + * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext). + * 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. + * 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. + */ +exports.ATTR_DB_QUERY_TEXT = 'db.query.text'; +/** + * Database response status code. + * + * @example 102 + * @example ORA-17002 + * @example 08P01 + * @example 404 + * + * @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. + * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system. + */ +exports.ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code'; +/** + * The name of a stored procedure within the database. + * + * @example GetCustomer + * + * @note It is **RECOMMENDED** to capture the value as provided by the application + * without attempting to do any case normalization. + * + * For batch operations, if the individual operations are known to have the same + * stored procedure name then that stored procedure name **SHOULD** be used. + */ +exports.ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name'; +/** + * The database management system (DBMS) product as identified by the client instrumentation. + * + * @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. + */ +exports.ATTR_DB_SYSTEM_NAME = 'db.system.name'; +/** + * Enum value "mariadb" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MariaDB](https://mariadb.org/) + */ +exports.DB_SYSTEM_NAME_VALUE_MARIADB = "mariadb"; +/** + * Enum value "microsoft.sql_server" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [Microsoft SQL Server](https://www.microsoft.com/sql-server) + */ +exports.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = "microsoft.sql_server"; +/** + * Enum value "mysql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [MySQL](https://www.mysql.com/) + */ +exports.DB_SYSTEM_NAME_VALUE_MYSQL = "mysql"; +/** + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM_NAME}. + * + * [PostgreSQL](https://www.postgresql.org/) + */ +exports.DB_SYSTEM_NAME_VALUE_POSTGRESQL = "postgresql"; +/** + * Name of the garbage collector managed heap generation. + * + * @example gen0 + * @example gen1 + * @example gen2 + */ +exports.ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation'; +/** + * Enum value "gen0" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 0 + */ +exports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = "gen0"; +/** + * Enum value "gen1" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 1 + */ +exports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = "gen1"; +/** + * Enum value "gen2" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Generation 2 + */ +exports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = "gen2"; +/** + * Enum value "loh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Large Object Heap + */ +exports.DOTNET_GC_HEAP_GENERATION_VALUE_LOH = "loh"; +/** + * Enum value "poh" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}. + * + * Pinned Object Heap + */ +exports.DOTNET_GC_HEAP_GENERATION_VALUE_POH = "poh"; +/** + * Describes a class of error the operation ended with. + * + * @example timeout + * @example java.net.UnknownHostException + * @example server_certificate_invalid + * @example 500 + * + * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality. + * + * When `error.type` is set to a type (e.g., an exception type), its + * canonical class name identifying the type within the artifact **SHOULD** be used. + * + * Instrumentations **SHOULD** document the list of errors they report. + * + * The cardinality of `error.type` within one instrumentation library **SHOULD** be low. + * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications + * should be prepared for `error.type` to have high cardinality at query time when no + * additional filters are applied. + * + * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`. + * + * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes), + * it's **RECOMMENDED** to: + * + * - Use a domain-specific attribute + * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not. + */ +exports.ATTR_ERROR_TYPE = 'error.type'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_ERROR_TYPE}. + * + * A fallback error value to be used when the instrumentation doesn't define a custom value. + */ +exports.ERROR_TYPE_VALUE_OTHER = "_OTHER"; +/** + * Indicates that the exception is escaping the scope of the span. + * + * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span. + */ +exports.ATTR_EXCEPTION_ESCAPED = 'exception.escaped'; +/** + * The exception message. + * + * @example Division by zero + * @example Can't convert 'int' object to str implicitly + */ +exports.ATTR_EXCEPTION_MESSAGE = 'exception.message'; +/** + * 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. + * + * @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" + */ +exports.ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace'; +/** + * 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. + * + * @example java.net.ConnectException + * @example OSError + */ +exports.ATTR_EXCEPTION_TYPE = 'exception.type'; +/** + * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["1.2.3.4", "1.2.3.5"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * The `User-Agent` header is already captured in the `user_agent.original` attribute. + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type` + * attribute with value `["application/json"]`. + * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for` + * 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. + */ +const ATTR_HTTP_REQUEST_HEADER = (key) => `http.request.header.${key}`; +exports.ATTR_HTTP_REQUEST_HEADER = ATTR_HTTP_REQUEST_HEADER; +/** + * HTTP request method. + * + * @example GET + * @example POST + * @example HEAD + * + * @note HTTP request method value **SHOULD** be "known" to the instrumentation. + * By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods), + * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html) + * 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). + * + * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`. + * + * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override + * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named + * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods + * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults). + * + * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly. + * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent. + * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value. + */ +exports.ATTR_HTTP_REQUEST_METHOD = 'http.request.method'; +/** + * Enum value "_OTHER" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * Any HTTP method that the instrumentation has no prior knowledge of. + */ +exports.HTTP_REQUEST_METHOD_VALUE_OTHER = "_OTHER"; +/** + * Enum value "CONNECT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * CONNECT method. + */ +exports.HTTP_REQUEST_METHOD_VALUE_CONNECT = "CONNECT"; +/** + * Enum value "DELETE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * DELETE method. + */ +exports.HTTP_REQUEST_METHOD_VALUE_DELETE = "DELETE"; +/** + * Enum value "GET" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * GET method. + */ +exports.HTTP_REQUEST_METHOD_VALUE_GET = "GET"; +/** + * Enum value "HEAD" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * HEAD method. + */ +exports.HTTP_REQUEST_METHOD_VALUE_HEAD = "HEAD"; +/** + * Enum value "OPTIONS" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * OPTIONS method. + */ +exports.HTTP_REQUEST_METHOD_VALUE_OPTIONS = "OPTIONS"; +/** + * Enum value "PATCH" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PATCH method. + */ +exports.HTTP_REQUEST_METHOD_VALUE_PATCH = "PATCH"; +/** + * Enum value "POST" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * POST method. + */ +exports.HTTP_REQUEST_METHOD_VALUE_POST = "POST"; +/** + * Enum value "PUT" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * PUT method. + */ +exports.HTTP_REQUEST_METHOD_VALUE_PUT = "PUT"; +/** + * Enum value "TRACE" for attribute {@link ATTR_HTTP_REQUEST_METHOD}. + * + * TRACE method. + */ +exports.HTTP_REQUEST_METHOD_VALUE_TRACE = "TRACE"; +/** + * Original HTTP method sent by the client in the request line. + * + * @example GeT + * @example ACL + * @example foo + */ +exports.ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original'; +/** + * The ordinal number of request resending attempt (for any reason, including redirects). + * + * @example 3 + * + * @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). + */ +exports.ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count'; +/** + * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values. + * + * @example ["application/json"] + * @example ["abc", "def"] + * + * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. + * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information. + * + * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended. + * + * The attribute value **MUST** consist of either multiple header values as an array of strings + * or a single-item array containing a possibly comma-concatenated string, depending on the way + * the HTTP library provides access to headers. + * + * Examples: + * + * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type` + * attribute with value `["application/json"]`. + * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header` + * attribute with value `["abc", "def"]` or `["abc, def"]` depending on the HTTP library. + */ +const ATTR_HTTP_RESPONSE_HEADER = (key) => `http.response.header.${key}`; +exports.ATTR_HTTP_RESPONSE_HEADER = ATTR_HTTP_RESPONSE_HEADER; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @example 200 + */ +exports.ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code'; +/** + * 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. + * + * @example /users/:userID? + * @example my-controller/my-action/{id?} + * + * @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. + * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one. + * + * 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 + * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`. + * + * 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. + * + * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY** + * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string. + */ +exports.ATTR_HTTP_ROUTE = 'http.route'; +/** + * Name of the garbage collector action. + * + * @example end of minor GC + * @example end of major GC + * + * @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()). + */ +exports.ATTR_JVM_GC_ACTION = 'jvm.gc.action'; +/** + * Name of the garbage collector. + * + * @example G1 Young Generation + * @example G1 Old Generation + * + * @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()). + */ +exports.ATTR_JVM_GC_NAME = 'jvm.gc.name'; +/** + * Name of the memory pool. + * + * @example G1 Old Gen + * @example G1 Eden space + * @example G1 Survivor Space + * + * @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()). + */ +exports.ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name'; +/** + * The type of memory. + * + * @example heap + * @example non_heap + */ +exports.ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type'; +/** + * Enum value "heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Heap memory. + */ +exports.JVM_MEMORY_TYPE_VALUE_HEAP = "heap"; +/** + * Enum value "non_heap" for attribute {@link ATTR_JVM_MEMORY_TYPE}. + * + * Non-heap memory + */ +exports.JVM_MEMORY_TYPE_VALUE_NON_HEAP = "non_heap"; +/** + * Whether the thread is daemon or not. + */ +exports.ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon'; +/** + * State of the thread. + * + * @example runnable + * @example blocked + */ +exports.ATTR_JVM_THREAD_STATE = 'jvm.thread.state'; +/** + * Enum value "blocked" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is blocked waiting for a monitor lock is in this state. + */ +exports.JVM_THREAD_STATE_VALUE_BLOCKED = "blocked"; +/** + * Enum value "new" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has not yet started is in this state. + */ +exports.JVM_THREAD_STATE_VALUE_NEW = "new"; +/** + * Enum value "runnable" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread executing in the Java virtual machine is in this state. + */ +exports.JVM_THREAD_STATE_VALUE_RUNNABLE = "runnable"; +/** + * Enum value "terminated" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that has exited is in this state. + */ +exports.JVM_THREAD_STATE_VALUE_TERMINATED = "terminated"; +/** + * Enum value "timed_waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state. + */ +exports.JVM_THREAD_STATE_VALUE_TIMED_WAITING = "timed_waiting"; +/** + * Enum value "waiting" for attribute {@link ATTR_JVM_THREAD_STATE}. + * + * A thread that is waiting indefinitely for another thread to perform a particular action is in this state. + */ +exports.JVM_THREAD_STATE_VALUE_WAITING = "waiting"; +/** + * Local address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +exports.ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address'; +/** + * Local port number of the network connection. + * + * @example 65123 + */ +exports.ATTR_NETWORK_LOCAL_PORT = 'network.local.port'; +/** + * Peer address of the network connection - IP address or Unix domain socket name. + * + * @example 10.1.2.80 + * @example /tmp/my.sock + */ +exports.ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address'; +/** + * Peer port number of the network connection. + * + * @example 65123 + */ +exports.ATTR_NETWORK_PEER_PORT = 'network.peer.port'; +/** + * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent. + * + * @example amqp + * @example http + * @example mqtt + * + * @note The value **SHOULD** be normalized to lowercase. + */ +exports.ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name'; +/** + * The actual version of the protocol used for network communication. + * + * @example 1.1 + * @example 2 + * + * @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. + */ +exports.ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version'; +/** + * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). + * + * @example tcp + * @example udp + * + * @note The value **SHOULD** be normalized to lowercase. + * + * Consider always setting the transport when setting a port number, since + * a port number is ambiguous without knowing the transport. For example + * different processes could be listening on TCP port 12345 and UDP port 12345. + */ +exports.ATTR_NETWORK_TRANSPORT = 'network.transport'; +/** + * Enum value "pipe" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Named or anonymous pipe. + */ +exports.NETWORK_TRANSPORT_VALUE_PIPE = "pipe"; +/** + * Enum value "quic" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * QUIC + */ +exports.NETWORK_TRANSPORT_VALUE_QUIC = "quic"; +/** + * Enum value "tcp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * TCP + */ +exports.NETWORK_TRANSPORT_VALUE_TCP = "tcp"; +/** + * Enum value "udp" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * UDP + */ +exports.NETWORK_TRANSPORT_VALUE_UDP = "udp"; +/** + * Enum value "unix" for attribute {@link ATTR_NETWORK_TRANSPORT}. + * + * Unix domain socket + */ +exports.NETWORK_TRANSPORT_VALUE_UNIX = "unix"; +/** + * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent. + * + * @example ipv4 + * @example ipv6 + * + * @note The value **SHOULD** be normalized to lowercase. + */ +exports.ATTR_NETWORK_TYPE = 'network.type'; +/** + * Enum value "ipv4" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv4 + */ +exports.NETWORK_TYPE_VALUE_IPV4 = "ipv4"; +/** + * Enum value "ipv6" for attribute {@link ATTR_NETWORK_TYPE}. + * + * IPv6 + */ +exports.NETWORK_TYPE_VALUE_IPV6 = "ipv6"; +/** + * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP). + * + * @example io.opentelemetry.contrib.mongodb + */ +exports.ATTR_OTEL_SCOPE_NAME = 'otel.scope.name'; +/** + * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP). + * + * @example 1.0.0 + */ +exports.ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version'; +/** + * Name of the code, either "OK" or "ERROR". **MUST NOT** be set if the status code is UNSET. + */ +exports.ATTR_OTEL_STATUS_CODE = 'otel.status_code'; +/** + * Enum value "ERROR" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation contains an error. + */ +exports.OTEL_STATUS_CODE_VALUE_ERROR = "ERROR"; +/** + * Enum value "OK" for attribute {@link ATTR_OTEL_STATUS_CODE}. + * + * The operation has been validated by an Application developer or Operator to have completed successfully. + */ +exports.OTEL_STATUS_CODE_VALUE_OK = "OK"; +/** + * Description of the Status if it has a value, otherwise not set. + * + * @example resource not found + */ +exports.ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description'; +/** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * @example example.com + * @example 10.1.2.80 + * @example /tmp/my.sock + * + * @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. + */ +exports.ATTR_SERVER_ADDRESS = 'server.address'; +/** + * Server port number. + * + * @example 80 + * @example 8080 + * @example 443 + * + * @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. + */ +exports.ATTR_SERVER_PORT = 'server.port'; +/** + * Logical name of the service. + * + * @example shoppingcart + * + * @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`. + */ +exports.ATTR_SERVICE_NAME = 'service.name'; +/** + * The version string of the service component. The format is not defined by these conventions. + * + * @example 2.0.0 + * @example a01dbef8a + */ +exports.ATTR_SERVICE_VERSION = 'service.version'; +/** + * SignalR HTTP connection closure status. + * + * @example app_shutdown + * @example timeout + */ +exports.ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status'; +/** + * Enum value "app_shutdown" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed because the app is shutting down. + */ +exports.SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = "app_shutdown"; +/** + * Enum value "normal_closure" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed normally. + */ +exports.SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = "normal_closure"; +/** + * Enum value "timeout" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}. + * + * The connection was closed due to a timeout. + */ +exports.SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = "timeout"; +/** + * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md) + * + * @example web_sockets + * @example long_polling + */ +exports.ATTR_SIGNALR_TRANSPORT = 'signalr.transport'; +/** + * Enum value "long_polling" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * LongPolling protocol + */ +exports.SIGNALR_TRANSPORT_VALUE_LONG_POLLING = "long_polling"; +/** + * Enum value "server_sent_events" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * ServerSentEvents protocol + */ +exports.SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = "server_sent_events"; +/** + * Enum value "web_sockets" for attribute {@link ATTR_SIGNALR_TRANSPORT}. + * + * WebSockets protocol + */ +exports.SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = "web_sockets"; +/** + * The language of the telemetry SDK. + */ +exports.ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language'; +/** + * Enum value "cpp" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_CPP = "cpp"; +/** + * Enum value "dotnet" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = "dotnet"; +/** + * Enum value "erlang" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = "erlang"; +/** + * Enum value "go" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_GO = "go"; +/** + * Enum value "java" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = "java"; +/** + * Enum value "nodejs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = "nodejs"; +/** + * Enum value "php" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_PHP = "php"; +/** + * Enum value "python" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = "python"; +/** + * Enum value "ruby" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = "ruby"; +/** + * Enum value "rust" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_RUST = "rust"; +/** + * Enum value "swift" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = "swift"; +/** + * Enum value "webjs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}. + */ +exports.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = "webjs"; +/** + * The name of the telemetry SDK as defined above. + * + * @example opentelemetry + * + * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`. + * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the + * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point + * or another suitable identifier depending on the language. + * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case. + * All custom identifiers **SHOULD** be stable across different versions of an implementation. + */ +exports.ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name'; +/** + * The version string of the telemetry SDK. + * + * @example 1.2.3 + */ +exports.ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version'; +/** + * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component + * + * @example SemConv + */ +exports.ATTR_URL_FRAGMENT = 'url.fragment'; +/** + * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) + * + * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv + * @example //localhost + * + * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment + * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless. + * + * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`. + * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`. + * + * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed). + * + * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the + * value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `https://www.example.com/path?color=blue&sig=REDACTED`. + */ +exports.ATTR_URL_FULL = 'url.full'; +/** + * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component + * + * @example /search + * + * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it. + */ +exports.ATTR_URL_PATH = 'url.path'; +/** + * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component + * + * @example q=OpenTelemetry + * + * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g. + * `q=OpenTelemetry&sig=REDACTED`. + */ +exports.ATTR_URL_QUERY = 'url.query'; +/** + * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol. + * + * @example https + * @example ftp + * @example telnet + */ +exports.ATTR_URL_SCHEME = 'url.scheme'; +/** + * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client. + * + * @example CERN-LineMode/2.15 libwww/2.17b3 + * @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 + * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2 + */ +exports.ATTR_USER_AGENT_ORIGINAL = 'user_agent.original'; +//# sourceMappingURL=stable_attributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js.map new file mode 100644 index 0000000..e86b4a5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stable_attributes.js","sourceRoot":"","sources":["../../src/stable_attributes.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * ASP.NET Core exception middleware handling result.\n *\n * @example handled\n * @example unhandled\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result' as const;\n\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 */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\" as const;\n\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 */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\" as const;\n\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 */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\" as const;\n\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 */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type' as const;\n\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy' as const;\n\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 */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result' as const;\n\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease was acquired\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\" as const;\n\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 */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\" as const;\n\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 */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\" as const;\n\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was canceled\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\" as const;\n\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled' as const;\n\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback' as const;\n\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match failed\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match succeeded\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * A value that indicates whether the user is authenticated.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated' as const;\n\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 */\nexport const ATTR_CLIENT_ADDRESS = 'client.address' as const;\n\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 */\nexport const ATTR_CLIENT_PORT = 'client.port' as const;\n\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 */\nexport const ATTR_CODE_COLUMN_NUMBER = 'code.column.number' as const;\n\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 */\nexport const ATTR_CODE_FILE_PATH = 'code.file.path' as const;\n\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 */\nexport const ATTR_CODE_FUNCTION_NAME = 'code.function.name' as const;\n\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 */\nexport const ATTR_CODE_LINE_NUMBER = 'code.line.number' as const;\n\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 */\nexport const ATTR_CODE_STACKTRACE = 'code.stacktrace' as const;\n\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 */\nexport const ATTR_DB_COLLECTION_NAME = 'db.collection.name' as const;\n\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 */\nexport const ATTR_DB_NAMESPACE = 'db.namespace' as const;\n\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 */\nexport const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size' as const;\n\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 */\nexport const ATTR_DB_OPERATION_NAME = 'db.operation.name' as const;\n\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 */\nexport const ATTR_DB_QUERY_SUMMARY = 'db.query.summary' as const;\n\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 */\nexport const ATTR_DB_QUERY_TEXT = 'db.query.text' as const;\n\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 */\nexport const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code' as const;\n\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 */\nexport const ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name' as const;\n\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 */\nexport const ATTR_DB_SYSTEM_NAME = 'db.system.name' as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MariaDB](https://mariadb.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MARIADB = \"mariadb\" as const;\n\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 */\nexport const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = \"microsoft.sql_server\" as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MySQL](https://www.mysql.com/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [PostgreSQL](https://www.postgresql.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Name of the garbage collector managed heap generation.\n *\n * @example gen0\n * @example gen1\n * @example gen2\n */\nexport const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation' as const;\n\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 0\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\" as const;\n\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 1\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\" as const;\n\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 2\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\" as const;\n\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Large Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\" as const;\n\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Pinned Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\" as const;\n\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 */\nexport const ATTR_ERROR_TYPE = 'error.type' as const;\n\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 */\nexport const ERROR_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\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 */\nexport const ATTR_EXCEPTION_ESCAPED = 'exception.escaped' as const;\n\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n */\nexport const ATTR_EXCEPTION_MESSAGE = 'exception.message' as const;\n\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 */\nexport const ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace' as const;\n\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 */\nexport const ATTR_EXCEPTION_TYPE = 'exception.type' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_HEADER = (key: string) => `http.request.header.${key}`;\n\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 * (this list **MUST** be a full override of the default known method, 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 */\nexport const ATTR_HTTP_REQUEST_METHOD = 'http.request.method' as const;\n\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 */\nexport const HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * CONNECT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\" as const;\n\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * DELETE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\" as const;\n\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * GET method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_GET = \"GET\" as const;\n\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * HEAD method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\" as const;\n\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * OPTIONS method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\" as const;\n\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PATCH method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\" as const;\n\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * POST method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_POST = \"POST\" as const;\n\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PUT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\" as const;\n\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * TRACE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\" as const;\n\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original' as const;\n\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 */\nexport const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count' as const;\n\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 */\nexport const ATTR_HTTP_RESPONSE_HEADER = (key: string) => `http.response.header.${key}`;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code' as const;\n\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 */\nexport const ATTR_HTTP_ROUTE = 'http.route' as const;\n\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 */\nexport const ATTR_JVM_GC_ACTION = 'jvm.gc.action' as const;\n\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 */\nexport const ATTR_JVM_GC_NAME = 'jvm.gc.name' as const;\n\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 */\nexport const ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name' as const;\n\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type' as const;\n\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Heap memory.\n */\nexport const JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\" as const;\n\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Non-heap memory\n */\nexport const JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\" as const;\n\n/**\n * Whether the thread is daemon or not.\n */\nexport const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon' as const;\n\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport const ATTR_JVM_THREAD_STATE = 'jvm.thread.state' as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_NEW = \"new\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has exited is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\" as const;\n\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 */\nexport const JVM_THREAD_STATE_VALUE_WAITING = \"waiting\" as const;\n\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 */\nexport const ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address' as const;\n\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_LOCAL_PORT = 'network.local.port' as const;\n\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 */\nexport const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address' as const;\n\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_PEER_PORT = 'network.peer.port' as const;\n\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 */\nexport const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name' as const;\n\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 */\nexport const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version' as const;\n\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 */\nexport const ATTR_NETWORK_TRANSPORT = 'network.transport' as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Named or anonymous pipe.\n */\nexport const NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * QUIC\n */\nexport const NETWORK_TRANSPORT_VALUE_QUIC = \"quic\" as const;\n\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * TCP\n */\nexport const NETWORK_TRANSPORT_VALUE_TCP = \"tcp\" as const;\n\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * UDP\n */\nexport const NETWORK_TRANSPORT_VALUE_UDP = \"udp\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Unix domain socket\n */\nexport const NETWORK_TRANSPORT_VALUE_UNIX = \"unix\" as const;\n\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 */\nexport const ATTR_NETWORK_TYPE = 'network.type' as const;\n\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv4\n */\nexport const NETWORK_TYPE_VALUE_IPV4 = \"ipv4\" as const;\n\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv6\n */\nexport const NETWORK_TYPE_VALUE_IPV6 = \"ipv6\" as const;\n\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport const ATTR_OTEL_SCOPE_NAME = 'otel.scope.name' as const;\n\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport const ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version' as const;\n\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport const ATTR_OTEL_STATUS_CODE = 'otel.status_code' as const;\n\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation contains an error.\n */\nexport const OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\" as const;\n\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 */\nexport const OTEL_STATUS_CODE_VALUE_OK = \"OK\" as const;\n\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport const ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description' as const;\n\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 */\nexport const ATTR_SERVER_ADDRESS = 'server.address' as const;\n\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 */\nexport const ATTR_SERVER_PORT = 'server.port' as const;\n\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 */\nexport const ATTR_SERVICE_NAME = 'service.name' as const;\n\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 */\nexport const ATTR_SERVICE_VERSION = 'service.version' as const;\n\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport const ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status' as const;\n\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 */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\" as const;\n\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed normally.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed due to a timeout.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\" as const;\n\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 */\nexport const ATTR_SIGNALR_TRANSPORT = 'signalr.transport' as const;\n\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * LongPolling protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\" as const;\n\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * ServerSentEvents protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\" as const;\n\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * WebSockets protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\" as const;\n\n/**\n * The language of the telemetry SDK.\n */\nexport const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language' as const;\n\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\" as const;\n\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\" as const;\n\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\" as const;\n\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 */\nexport const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name' as const;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version' as const;\n\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport const ATTR_URL_FRAGMENT = 'url.fragment' as const;\n\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 * 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 */\nexport const ATTR_URL_FULL = 'url.full' as const;\n\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 */\nexport const ATTR_URL_PATH = 'url.path' as const;\n\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 * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `q=OpenTelemetry&sig=REDACTED`.\n */\nexport const ATTR_URL_QUERY = 'url.query' as const;\n\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 */\nexport const ATTR_URL_SCHEME = 'url.scheme' as const;\n\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 */\nexport const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.d.ts new file mode 100644 index 0000000..271463b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.d.ts @@ -0,0 +1,5 @@ +/** + * This event describes a single exception. + */ +export declare const EVENT_EXCEPTION: "exception"; +//# sourceMappingURL=stable_events.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.js new file mode 100644 index 0000000..23ddfd7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.js @@ -0,0 +1,26 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EVENT_EXCEPTION = void 0; +//----------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2 +//----------------------------------------------------------------------------------------------------------- +/** + * This event describes a single exception. + */ +exports.EVENT_EXCEPTION = 'exception'; +//# sourceMappingURL=stable_events.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.js.map new file mode 100644 index 0000000..3c595e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stable_events.js","sourceRoot":"","sources":["../../src/stable_events.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6GAA6G;AAC7G,6GAA6G;AAC7G,6GAA6G;AAE7G;;GAEG;AACU,QAAA,eAAe,GAAG,WAAoB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------\n\n/**\n * This event describes a single exception.\n */\nexport const EVENT_EXCEPTION = 'exception' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.d.ts new file mode 100644 index 0000000..ba8f069 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.d.ts @@ -0,0 +1,308 @@ +/** + * Number of exceptions caught by exception handling middleware. + * + * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS: "aspnetcore.diagnostics.exceptions"; +/** + * Number of requests that are currently active on the server that hold a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES: "aspnetcore.rate_limiting.active_request_leases"; +/** + * Number of requests that are currently queued, waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS: "aspnetcore.rate_limiting.queued_requests"; +/** + * The time the request spent in a queue waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE: "aspnetcore.rate_limiting.request.time_in_queue"; +/** + * The duration of rate limiting lease held by requests on the server. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION: "aspnetcore.rate_limiting.request_lease.duration"; +/** + * Number of requests that tried to acquire a rate limiting lease. + * + * @note Requests could be: + * + * - Rejected by global or endpoint rate limiting policies + * - Canceled while waiting for the lease. + * + * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS: "aspnetcore.rate_limiting.requests"; +/** + * Number of requests that were attempted to be matched to an endpoint. + * + * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS: "aspnetcore.routing.match_attempts"; +/** + * Duration of database client operations. + * + * @note Batch operations **SHOULD** be recorded as a single operation. + */ +export declare const METRIC_DB_CLIENT_OPERATION_DURATION: "db.client.operation.duration"; +/** + * The number of .NET assemblies that are currently loaded. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies). + */ +export declare const METRIC_DOTNET_ASSEMBLY_COUNT: "dotnet.assembly.count"; +/** + * The number of exceptions that have been thrown in managed code. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception). + */ +export declare const METRIC_DOTNET_EXCEPTIONS: "dotnet.exceptions"; +/** + * The number of garbage collections that have occurred since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation. + */ +export declare const METRIC_DOTNET_GC_COLLECTIONS: "dotnet.gc.collections"; +/** + * 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. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes). + */ +export declare const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED: "dotnet.gc.heap.total_allocated"; +/** + * The heap fragmentation, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes). + */ +export declare const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE: "dotnet.gc.last_collection.heap.fragmentation.size"; +/** + * The managed GC heap size (including fragmentation), as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes). + */ +export declare const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE: "dotnet.gc.last_collection.heap.size"; +/** + * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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. + */ +export declare const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE: "dotnet.gc.last_collection.memory.committed_size"; +/** + * The total amount of time paused in GC since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration). + */ +export declare const METRIC_DOTNET_GC_PAUSE_TIME: "dotnet.gc.pause.time"; +/** + * The amount of time the JIT compiler has spent compiling methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime). + */ +export declare const METRIC_DOTNET_JIT_COMPILATION_TIME: "dotnet.jit.compilation.time"; +/** + * Count of bytes of intermediate language that have been compiled since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes). + */ +export declare const METRIC_DOTNET_JIT_COMPILED_IL_SIZE: "dotnet.jit.compiled_il.size"; +/** + * The number of times the JIT compiler (re)compiled methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount). + */ +export declare const METRIC_DOTNET_JIT_COMPILED_METHODS: "dotnet.jit.compiled_methods"; +/** + * The number of times there was contention when trying to acquire a monitor lock since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount). + */ +export declare const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS: "dotnet.monitor.lock_contentions"; +/** + * The number of processors available to the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount). + */ +export declare const METRIC_DOTNET_PROCESS_CPU_COUNT: "dotnet.process.cpu.count"; +/** + * CPU time used by the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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). + */ +export declare const METRIC_DOTNET_PROCESS_CPU_TIME: "dotnet.process.cpu.time"; +/** + * The number of bytes of physical memory mapped to the process context. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset). + */ +export declare const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET: "dotnet.process.memory.working_set"; +/** + * The number of work items that are currently queued to be processed by the thread pool. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount). + */ +export declare const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH: "dotnet.thread_pool.queue.length"; +/** + * The number of thread pool threads that currently exist. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount). + */ +export declare const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT: "dotnet.thread_pool.thread.count"; +/** + * The number of work items that the thread pool has completed since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount). + */ +export declare const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT: "dotnet.thread_pool.work_item.count"; +/** + * The number of timer instances that are currently active. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount). + */ +export declare const METRIC_DOTNET_TIMER_COUNT: "dotnet.timer.count"; +/** + * Duration of HTTP client requests. + */ +export declare const METRIC_HTTP_CLIENT_REQUEST_DURATION: "http.client.request.duration"; +/** + * Duration of HTTP server requests. + */ +export declare const METRIC_HTTP_SERVER_REQUEST_DURATION: "http.server.request.duration"; +/** + * Number of classes currently loaded. + */ +export declare const METRIC_JVM_CLASS_COUNT: "jvm.class.count"; +/** + * Number of classes loaded since JVM start. + */ +export declare const METRIC_JVM_CLASS_LOADED: "jvm.class.loaded"; +/** + * Number of classes unloaded since JVM start. + */ +export declare const METRIC_JVM_CLASS_UNLOADED: "jvm.class.unloaded"; +/** + * Number of processors available to the Java virtual machine. + */ +export declare const METRIC_JVM_CPU_COUNT: "jvm.cpu.count"; +/** + * Recent CPU utilization for the process as reported by the JVM. + * + * @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()). + */ +export declare const METRIC_JVM_CPU_RECENT_UTILIZATION: "jvm.cpu.recent_utilization"; +/** + * CPU time used by the process as reported by the JVM. + */ +export declare const METRIC_JVM_CPU_TIME: "jvm.cpu.time"; +/** + * Duration of JVM garbage collection actions. + */ +export declare const METRIC_JVM_GC_DURATION: "jvm.gc.duration"; +/** + * Measure of memory committed. + */ +export declare const METRIC_JVM_MEMORY_COMMITTED: "jvm.memory.committed"; +/** + * Measure of max obtainable memory. + */ +export declare const METRIC_JVM_MEMORY_LIMIT: "jvm.memory.limit"; +/** + * Measure of memory used. + */ +export declare const METRIC_JVM_MEMORY_USED: "jvm.memory.used"; +/** + * Measure of memory used, as measured after the most recent garbage collection event on this pool. + */ +export declare const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC: "jvm.memory.used_after_last_gc"; +/** + * Number of executing platform threads. + */ +export declare const METRIC_JVM_THREAD_COUNT: "jvm.thread.count"; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_ACTIVE_CONNECTIONS: "kestrel.active_connections"; +/** + * Number of TLS handshakes that are currently in progress on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES: "kestrel.active_tls_handshakes"; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_CONNECTION_DURATION: "kestrel.connection.duration"; +/** + * Number of connections that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_QUEUED_CONNECTIONS: "kestrel.queued_connections"; +/** + * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_QUEUED_REQUESTS: "kestrel.queued_requests"; +/** + * Number of connections rejected by the server. + * + * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`. + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_REJECTED_CONNECTIONS: "kestrel.rejected_connections"; +/** + * The duration of TLS handshakes on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_TLS_HANDSHAKE_DURATION: "kestrel.tls_handshake.duration"; +/** + * Number of connections that are currently upgraded (WebSockets). . + * + * @note The counter only tracks HTTP/1.1 connections. + * + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_KESTREL_UPGRADED_CONNECTIONS: "kestrel.upgraded_connections"; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS: "signalr.server.active_connections"; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +export declare const METRIC_SIGNALR_SERVER_CONNECTION_DURATION: "signalr.server.connection.duration"; +//# sourceMappingURL=stable_metrics.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.js new file mode 100644 index 0000000..371fe85 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.js @@ -0,0 +1,330 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +exports.METRIC_SIGNALR_SERVER_CONNECTION_DURATION = void 0; +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2 +//---------------------------------------------------------------------------------------------------------- +/** + * Number of exceptions caught by exception handling middleware. + * + * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions'; +/** + * Number of requests that are currently active on the server that hold a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases'; +/** + * Number of requests that are currently queued, waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests'; +/** + * The time the request spent in a queue waiting to acquire a rate limiting lease. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue'; +/** + * The duration of rate limiting lease held by requests on the server. + * + * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration'; +/** + * Number of requests that tried to acquire a rate limiting lease. + * + * @note Requests could be: + * + * - Rejected by global or endpoint rate limiting policies + * - Canceled while waiting for the lease. + * + * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests'; +/** + * Number of requests that were attempted to be matched to an endpoint. + * + * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts'; +/** + * Duration of database client operations. + * + * @note Batch operations **SHOULD** be recorded as a single operation. + */ +exports.METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration'; +/** + * The number of .NET assemblies that are currently loaded. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies). + */ +exports.METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count'; +/** + * The number of exceptions that have been thrown in managed code. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception). + */ +exports.METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions'; +/** + * The number of garbage collections that have occurred since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation. + */ +exports.METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections'; +/** + * 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. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes). + */ +exports.METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated'; +/** + * The heap fragmentation, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes). + */ +exports.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size'; +/** + * The managed GC heap size (including fragmentation), as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes). + */ +exports.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size'; +/** + * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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. + */ +exports.METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size'; +/** + * The total amount of time paused in GC since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration). + */ +exports.METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time'; +/** + * The amount of time the JIT compiler has spent compiling methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime). + */ +exports.METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time'; +/** + * Count of bytes of intermediate language that have been compiled since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes). + */ +exports.METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size'; +/** + * The number of times the JIT compiler (re)compiled methods since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount). + */ +exports.METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods'; +/** + * The number of times there was contention when trying to acquire a monitor lock since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount). + */ +exports.METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions'; +/** + * The number of processors available to the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount). + */ +exports.METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count'; +/** + * CPU time used by the process. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * 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). + */ +exports.METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time'; +/** + * The number of bytes of physical memory mapped to the process context. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset). + */ +exports.METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set'; +/** + * The number of work items that are currently queued to be processed by the thread pool. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount). + */ +exports.METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length'; +/** + * The number of thread pool threads that currently exist. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount). + */ +exports.METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count'; +/** + * The number of work items that the thread pool has completed since the process has started. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount). + */ +exports.METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count'; +/** + * The number of timer instances that are currently active. + * + * @note Meter name: `System.Runtime`; Added in: .NET 9.0. + * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount). + */ +exports.METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count'; +/** + * Duration of HTTP client requests. + */ +exports.METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration'; +/** + * Duration of HTTP server requests. + */ +exports.METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration'; +/** + * Number of classes currently loaded. + */ +exports.METRIC_JVM_CLASS_COUNT = 'jvm.class.count'; +/** + * Number of classes loaded since JVM start. + */ +exports.METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded'; +/** + * Number of classes unloaded since JVM start. + */ +exports.METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded'; +/** + * Number of processors available to the Java virtual machine. + */ +exports.METRIC_JVM_CPU_COUNT = 'jvm.cpu.count'; +/** + * Recent CPU utilization for the process as reported by the JVM. + * + * @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()). + */ +exports.METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization'; +/** + * CPU time used by the process as reported by the JVM. + */ +exports.METRIC_JVM_CPU_TIME = 'jvm.cpu.time'; +/** + * Duration of JVM garbage collection actions. + */ +exports.METRIC_JVM_GC_DURATION = 'jvm.gc.duration'; +/** + * Measure of memory committed. + */ +exports.METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed'; +/** + * Measure of max obtainable memory. + */ +exports.METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit'; +/** + * Measure of memory used. + */ +exports.METRIC_JVM_MEMORY_USED = 'jvm.memory.used'; +/** + * Measure of memory used, as measured after the most recent garbage collection event on this pool. + */ +exports.METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc'; +/** + * Number of executing platform threads. + */ +exports.METRIC_JVM_THREAD_COUNT = 'jvm.thread.count'; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections'; +/** + * Number of TLS handshakes that are currently in progress on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes'; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration'; +/** + * Number of connections that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections'; +/** + * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests'; +/** + * Number of connections rejected by the server. + * + * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`. + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections'; +/** + * The duration of TLS handshakes on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration'; +/** + * Number of connections that are currently upgraded (WebSockets). . + * + * @note The counter only tracks HTTP/1.1 connections. + * + * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections'; +/** + * Number of connections that are currently active on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections'; +/** + * The duration of connections on the server. + * + * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0 + */ +exports.METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration'; +//# sourceMappingURL=stable_metrics.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.js.map new file mode 100644 index 0000000..5a50425 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stable_metrics.js","sourceRoot":"","sources":["../../src/stable_metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\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 */\nexport const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration' as const;\n\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 */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests' as const;\n\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 */\nexport const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts' as const;\n\n/**\n * Duration of database client operations.\n *\n * @note Batch operations **SHOULD** be recorded as a single operation.\n */\nexport const METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration' as const;\n\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 */\nexport const METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count' as const;\n\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 */\nexport const METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions' as const;\n\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 */\nexport const METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections' as const;\n\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 */\nexport const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated' as const;\n\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 */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size' as const;\n\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 */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size' as const;\n\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 */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size' as const;\n\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 */\nexport const METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time' as const;\n\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 */\nexport const METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time' as const;\n\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 */\nexport const METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size' as const;\n\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 */\nexport const METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods' as const;\n\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 */\nexport const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions' as const;\n\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 */\nexport const METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count' as const;\n\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 */\nexport const METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time' as const;\n\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 */\nexport const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set' as const;\n\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 */\nexport const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length' as const;\n\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 */\nexport const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count' as const;\n\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 */\nexport const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count' as const;\n\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 */\nexport const METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count' as const;\n\n/**\n * Duration of HTTP client requests.\n */\nexport const METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration' as const;\n\n/**\n * Duration of HTTP server requests.\n */\nexport const METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration' as const;\n\n/**\n * Number of classes currently loaded.\n */\nexport const METRIC_JVM_CLASS_COUNT = 'jvm.class.count' as const;\n\n/**\n * Number of classes loaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded' as const;\n\n/**\n * Number of classes unloaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded' as const;\n\n/**\n * Number of processors available to the Java virtual machine.\n */\nexport const METRIC_JVM_CPU_COUNT = 'jvm.cpu.count' as const;\n\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 */\nexport const METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization' as const;\n\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexport const METRIC_JVM_CPU_TIME = 'jvm.cpu.time' as const;\n\n/**\n * Duration of JVM garbage collection actions.\n */\nexport const METRIC_JVM_GC_DURATION = 'jvm.gc.duration' as const;\n\n/**\n * Measure of memory committed.\n */\nexport const METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed' as const;\n\n/**\n * Measure of max obtainable memory.\n */\nexport const METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit' as const;\n\n/**\n * Measure of memory used.\n */\nexport const METRIC_JVM_MEMORY_USED = 'jvm.memory.used' as const;\n\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexport const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc' as const;\n\n/**\n * Number of executing platform threads.\n */\nexport const METRIC_JVM_THREAD_COUNT = 'jvm.thread.count' as const;\n\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 */\nexport const METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections' as const;\n\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 */\nexport const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes' as const;\n\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 */\nexport const METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration' as const;\n\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 */\nexport const METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections' as const;\n\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 */\nexport const METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests' as const;\n\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 */\nexport const METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections' as const;\n\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 */\nexport const METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration' as const;\n\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 */\nexport const METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections' as const;\n\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 */\nexport const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections' as const;\n\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 */\nexport const METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration' as const;\n\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.d.ts new file mode 100644 index 0000000..defad8e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.d.ts @@ -0,0 +1,2664 @@ +/** + * 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). + * + * Note: This may be different from `faas.id` if an alias is involved. + * + * @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}). + */ +export declare const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = "aws.lambda.invoked_arn"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const SEMATTRS_DB_SYSTEM = "db.system"; +/** + * The connection string used to connect to the database. It is recommended to remove embedded credentials. + * + * @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}). + */ +export declare const SEMATTRS_DB_CONNECTION_STRING = "db.connection_string"; +/** + * Username for accessing the database. + * + * @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}). + */ +export declare const SEMATTRS_DB_USER = "db.user"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = "db.jdbc.driver_classname"; +/** + * 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). + * + * Note: In some SQL databases, the database name to be used is called "schema name". + * + * @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}). + */ +export declare const SEMATTRS_DB_NAME = "db.name"; +/** + * The database statement being executed. + * + * Note: The value may be sanitized to exclude sensitive information. + * + * @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}). + */ +export declare const SEMATTRS_DB_STATEMENT = "db.statement"; +/** + * 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. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_OPERATION = "db.operation"; +/** + * 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. + * + * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard). + * + * @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}). + */ +export declare const SEMATTRS_DB_MSSQL_INSTANCE_NAME = "db.mssql.instance_name"; +/** + * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_KEYSPACE = "db.cassandra.keyspace"; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = "db.cassandra.page_size"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = "db.cassandra.consistency_level"; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_TABLE = "db.cassandra.table"; +/** + * Whether or not the query is idempotent. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = "db.cassandra.idempotence"; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = "db.cassandra.speculative_execution_count"; +/** + * The ID of the coordinating node for a query. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = "db.cassandra.coordinator.id"; +/** + * The data center of the coordinating node for a query. + * + * @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}). + */ +export declare const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = "db.cassandra.coordinator.dc"; +/** + * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +export declare const SEMATTRS_DB_HBASE_NAMESPACE = "db.hbase.namespace"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_REDIS_DATABASE_INDEX = "db.redis.database_index"; +/** + * The collection being accessed within the database stated in `db.name`. + * + * @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}). + */ +export declare const SEMATTRS_DB_MONGODB_COLLECTION = "db.mongodb.collection"; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_DB_SQL_TABLE = "db.sql.table"; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_TYPE. + */ +export declare const SEMATTRS_EXCEPTION_TYPE = "exception.type"; +/** + * The exception message. + * + * @deprecated Use ATTR_EXCEPTION_MESSAGE. + */ +export declare const SEMATTRS_EXCEPTION_MESSAGE = "exception.message"; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_STACKTRACE. + */ +export declare const SEMATTRS_EXCEPTION_STACKTRACE = "exception.stacktrace"; +/** +* 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. +* +* Note: An exception is considered to have escaped (or left) the scope of a span, +if that span is ended while the exception is still logically "in flight". +This may be actually "in flight" in some languages (e.g. if the exception +is passed to a Context manager's `__exit__` method in Python) but will +usually be caught at the point of recording the exception in most languages. + +It is usually not possible to determine at the point where an exception is thrown +whether it will escape the scope of a span. +However, it is trivial to know that an exception +will escape, if one checks for an active exception just before ending the span, +as done in the [example above](#exception-end-example). + +It follows that an exception may still escape the scope of the span +even if the `exception.escaped` attribute was not set or set to false, +since the event might have been recorded at a time where it was not +clear whether the exception will escape. +* +* @deprecated Use ATTR_EXCEPTION_ESCAPED. +*/ +export declare const SEMATTRS_EXCEPTION_ESCAPED = "exception.escaped"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_TRIGGER = "faas.trigger"; +/** + * The execution ID of the current function execution. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_EXECUTION = "faas.execution"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_COLLECTION = "faas.document.collection"; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_OPERATION = "faas.document.operation"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_TIME = "faas.document.time"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_DOCUMENT_NAME = "faas.document.name"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_TIME = "faas.time"; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_CRON = "faas.cron"; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @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}). + */ +export declare const SEMATTRS_FAAS_COLDSTART = "faas.coldstart"; +/** + * The name of the invoked function. + * + * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_INVOKED_NAME = "faas.invoked_name"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_INVOKED_PROVIDER = "faas.invoked_provider"; +/** + * The cloud region of the invoked function. + * + * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function. + * + * @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}). + */ +export declare const SEMATTRS_FAAS_INVOKED_REGION = "faas.invoked_region"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const SEMATTRS_NET_TRANSPORT = "net.transport"; +/** + * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6). + * + * @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}). + */ +export declare const SEMATTRS_NET_PEER_IP = "net.peer.ip"; +/** + * Remote port number. + * + * @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}). + */ +export declare const SEMATTRS_NET_PEER_PORT = "net.peer.port"; +/** + * Remote hostname or similar, see note below. + * + * @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}). + */ +export declare const SEMATTRS_NET_PEER_NAME = "net.peer.name"; +/** + * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_IP = "net.host.ip"; +/** + * Like `net.peer.port` but for the host port. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_PORT = "net.host.port"; +/** + * Local hostname or similar, see note below. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_NAME = "net.host.name"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CONNECTION_TYPE = "net.host.connection.type"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = "net.host.connection.subtype"; +/** + * The name of the mobile carrier. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_NAME = "net.host.carrier.name"; +/** + * The mobile carrier country code. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_MCC = "net.host.carrier.mcc"; +/** + * The mobile carrier network code. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_MNC = "net.host.carrier.mnc"; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @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}). + */ +export declare const SEMATTRS_NET_HOST_CARRIER_ICC = "net.host.carrier.icc"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_PEER_SERVICE = "peer.service"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_ENDUSER_ID = "enduser.id"; +/** + * Actual/assumed role the client is making the request under extracted from token or application security context. + * + * @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}). + */ +export declare const SEMATTRS_ENDUSER_ROLE = "enduser.role"; +/** + * 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). + * + * @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}). + */ +export declare const SEMATTRS_ENDUSER_SCOPE = "enduser.scope"; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @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}). + */ +export declare const SEMATTRS_THREAD_ID = "thread.id"; +/** + * Current thread name. + * + * @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}). + */ +export declare const SEMATTRS_THREAD_NAME = "thread.name"; +/** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + * + * @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}). + */ +export declare const SEMATTRS_CODE_FUNCTION = "code.function"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_CODE_NAMESPACE = "code.namespace"; +/** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + * + * @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}). + */ +export declare const SEMATTRS_CODE_FILEPATH = "code.filepath"; +/** + * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + * + * @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}). + */ +export declare const SEMATTRS_CODE_LINENO = "code.lineno"; +/** + * HTTP request method. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_METHOD = "http.method"; +/** + * 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. + * + * 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/`. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_URL = "http.url"; +/** + * The full request target as passed in a HTTP request line or equivalent. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_TARGET = "http.target"; +/** + * 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. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_HOST = "http.host"; +/** + * The URI scheme identifying the used protocol. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_SCHEME = "http.scheme"; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @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}). + */ +export declare const SEMATTRS_HTTP_STATUS_CODE = "http.status_code"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_FLAVOR = "http.flavor"; +/** + * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_USER_AGENT = "http.user_agent"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = "http.request_content_length"; +/** + * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = "http.request_content_length_uncompressed"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = "http.response_content_length"; +/** + * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = "http.response_content_length_uncompressed"; +/** + * 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). + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_HTTP_SERVER_NAME = "http.server_name"; +/** + * The matched route (path template). + * + * @deprecated Use ATTR_HTTP_ROUTE. + */ +export declare const SEMATTRS_HTTP_ROUTE = "http.route"; +/** +* 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)). +* +* Note: This is not necessarily the same as `net.peer.ip`, which would +identify the network-level peer, which may be a proxy. + +This attribute should be set when a source of information different +from the one used for `net.peer.ip`, is available even if that other +source just confirms the same value as `net.peer.ip`. +Rationale: For `net.peer.ip`, one typically does not know if it +comes from a proxy, reverse proxy, or the actual client. Setting +`http.client_ip` when it's the same as `net.peer.ip` means that +one is at least somewhat confident that the address is not that of +the closest proxy. +* +* @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}). +*/ +export declare const SEMATTRS_HTTP_CLIENT_IP = "http.client_ip"; +/** + * The keys in the `RequestItems` object field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = "aws.dynamodb.table_names"; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = "aws.dynamodb.consumed_capacity"; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = "aws.dynamodb.item_collection_metrics"; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = "aws.dynamodb.provisioned_read_capacity"; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = "aws.dynamodb.provisioned_write_capacity"; +/** + * The value of the `ConsistentRead` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = "aws.dynamodb.consistent_read"; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_PROJECTION = "aws.dynamodb.projection"; +/** + * The value of the `Limit` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_LIMIT = "aws.dynamodb.limit"; +/** + * The value of the `AttributesToGet` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = "aws.dynamodb.attributes_to_get"; +/** + * The value of the `IndexName` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = "aws.dynamodb.index_name"; +/** + * The value of the `Select` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SELECT = "aws.dynamodb.select"; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = "aws.dynamodb.global_secondary_indexes"; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = "aws.dynamodb.local_secondary_indexes"; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = "aws.dynamodb.exclusive_start_table"; +/** + * The the number of items in the `TableNames` response parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = "aws.dynamodb.table_count"; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = "aws.dynamodb.scan_forward"; +/** + * The value of the `Segment` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SEGMENT = "aws.dynamodb.segment"; +/** + * The value of the `TotalSegments` request parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = "aws.dynamodb.total_segments"; +/** + * The value of the `Count` response parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_COUNT = "aws.dynamodb.count"; +/** + * The value of the `ScannedCount` response parameter. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = "aws.dynamodb.scanned_count"; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = "aws.dynamodb.attribute_definitions"; +/** + * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. + * + * @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}). + */ +export declare const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = "aws.dynamodb.global_secondary_index_updates"; +/** + * A string identifying the messaging system. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_SYSTEM = "messaging.system"; +/** + * The message destination name. This might be equal to the span name but is required nevertheless. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_DESTINATION = "messaging.destination"; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const SEMATTRS_MESSAGING_DESTINATION_KIND = "messaging.destination_kind"; +/** + * A boolean that is true if the message destination is temporary. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_TEMP_DESTINATION = "messaging.temp_destination"; +/** + * The name of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME. + */ +export declare const SEMATTRS_MESSAGING_PROTOCOL = "messaging.protocol"; +/** + * The version of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION. + */ +export declare const SEMATTRS_MESSAGING_PROTOCOL_VERSION = "messaging.protocol_version"; +/** + * Connection string. + * + * @deprecated Removed in semconv v1.17.0. + */ +export declare const SEMATTRS_MESSAGING_URL = "messaging.url"; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_MESSAGE_ID = "messaging.message_id"; +/** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_CONVERSATION_ID = "messaging.conversation_id"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = "messaging.message_payload_size_bytes"; +/** + * The compressed size of the message payload in bytes. + * + * @deprecated Removed in semconv v1.22.0. + */ +export declare const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = "messaging.message_payload_compressed_size_bytes"; +/** + * 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. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_OPERATION = "messaging.operation"; +/** + * 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. + * + * @deprecated Removed in semconv v1.21.0. + */ +export declare const SEMATTRS_MESSAGING_CONSUMER_ID = "messaging.consumer_id"; +/** + * RabbitMQ message routing key. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = "messaging.rabbitmq.routing_key"; +/** + * 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. + * + * 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. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = "messaging.kafka.message_key"; +/** + * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = "messaging.kafka.consumer_group"; +/** + * Client Id for the Consumer or Producer that is handling the message. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = "messaging.kafka.client_id"; +/** + * Partition the message is sent to. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_PARTITION = "messaging.kafka.partition"; +/** + * A boolean that is true if the message is a tombstone. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = "messaging.kafka.tombstone"; +/** + * A string identifying the remoting system. + * + * @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}). + */ +export declare const SEMATTRS_RPC_SYSTEM = "rpc.system"; +/** + * The full (logical) name of the service being called, including its package name, if applicable. + * + * 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). + * + * @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}). + */ +export declare const SEMATTRS_RPC_SERVICE = "rpc.service"; +/** + * The name of the (logical) method being called, must be equal to the $method part in the span name. + * + * 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). + * + * @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}). + */ +export declare const SEMATTRS_RPC_METHOD = "rpc.method"; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const SEMATTRS_RPC_GRPC_STATUS_CODE = "rpc.grpc.status_code"; +/** + * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_VERSION = "rpc.jsonrpc.version"; +/** + * `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. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_REQUEST_ID = "rpc.jsonrpc.request_id"; +/** + * `error.code` property of response if it is an error response. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_ERROR_CODE = "rpc.jsonrpc.error_code"; +/** + * `error.message` property of response if it is an error response. + * + * @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}). + */ +export declare const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = "rpc.jsonrpc.error_message"; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_TYPE = "message.type"; +/** + * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * Note: This way we guarantee that the values will be consistent between different implementations. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_ID = "message.id"; +/** + * Compressed size of the message in bytes. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_COMPRESSED_SIZE = "message.compressed_size"; +/** + * Uncompressed size of the message in bytes. + * + * @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}). + */ +export declare const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = "message.uncompressed_size"; +/** + * Definition of available values for SemanticAttributes + * This type is used for backward compatibility, you should use the individual exported + * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference + * to a constant map value will result in all strings being included into your bundle. + * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification. + */ +export type SemanticAttributes = { + /** + * 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). + * + * Note: This may be different from `faas.id` if an alias is involved. + */ + AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn'; + /** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + */ + DB_SYSTEM: 'db.system'; + /** + * The connection string used to connect to the database. It is recommended to remove embedded credentials. + */ + DB_CONNECTION_STRING: 'db.connection_string'; + /** + * Username for accessing the database. + */ + DB_USER: 'db.user'; + /** + * 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. + */ + DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname'; + /** + * 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). + * + * Note: In some SQL databases, the database name to be used is called "schema name". + */ + DB_NAME: 'db.name'; + /** + * The database statement being executed. + * + * Note: The value may be sanitized to exclude sensitive information. + */ + DB_STATEMENT: 'db.statement'; + /** + * 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. + * + * 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. + */ + DB_OPERATION: 'db.operation'; + /** + * 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. + * + * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard). + */ + DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name'; + /** + * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute. + */ + DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace'; + /** + * The fetch size used for paging, i.e. how many rows will be returned at once. + */ + DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size'; + /** + * 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). + */ + DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level'; + /** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + */ + DB_CASSANDRA_TABLE: 'db.cassandra.table'; + /** + * Whether or not the query is idempotent. + */ + DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence'; + /** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + */ + DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count'; + /** + * The ID of the coordinating node for a query. + */ + DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id'; + /** + * The data center of the coordinating node for a query. + */ + DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc'; + /** + * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute. + */ + DB_HBASE_NAMESPACE: 'db.hbase.namespace'; + /** + * 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. + */ + DB_REDIS_DATABASE_INDEX: 'db.redis.database_index'; + /** + * The collection being accessed within the database stated in `db.name`. + */ + DB_MONGODB_COLLECTION: 'db.mongodb.collection'; + /** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + */ + DB_SQL_TABLE: 'db.sql.table'; + /** + * 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. + */ + EXCEPTION_TYPE: 'exception.type'; + /** + * The exception message. + */ + EXCEPTION_MESSAGE: 'exception.message'; + /** + * 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. + */ + EXCEPTION_STACKTRACE: 'exception.stacktrace'; + /** + * 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. + * + * Note: An exception is considered to have escaped (or left) the scope of a span, + if that span is ended while the exception is still logically "in flight". + This may be actually "in flight" in some languages (e.g. if the exception + is passed to a Context manager's `__exit__` method in Python) but will + usually be caught at the point of recording the exception in most languages. + + It is usually not possible to determine at the point where an exception is thrown + whether it will escape the scope of a span. + However, it is trivial to know that an exception + will escape, if one checks for an active exception just before ending the span, + as done in the [example above](#exception-end-example). + + It follows that an exception may still escape the scope of the span + even if the `exception.escaped` attribute was not set or set to false, + since the event might have been recorded at a time where it was not + clear whether the exception will escape. + */ + EXCEPTION_ESCAPED: 'exception.escaped'; + /** + * Type of the trigger on which the function is executed. + */ + FAAS_TRIGGER: 'faas.trigger'; + /** + * The execution ID of the current function execution. + */ + FAAS_EXECUTION: 'faas.execution'; + /** + * 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. + */ + FAAS_DOCUMENT_COLLECTION: 'faas.document.collection'; + /** + * Describes the type of the operation that was performed on the data. + */ + FAAS_DOCUMENT_OPERATION: 'faas.document.operation'; + /** + * 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). + */ + FAAS_DOCUMENT_TIME: 'faas.document.time'; + /** + * 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. + */ + FAAS_DOCUMENT_NAME: 'faas.document.name'; + /** + * 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). + */ + FAAS_TIME: 'faas.time'; + /** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + */ + FAAS_CRON: 'faas.cron'; + /** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + */ + FAAS_COLDSTART: 'faas.coldstart'; + /** + * The name of the invoked function. + * + * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function. + */ + FAAS_INVOKED_NAME: 'faas.invoked_name'; + /** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + */ + FAAS_INVOKED_PROVIDER: 'faas.invoked_provider'; + /** + * The cloud region of the invoked function. + * + * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function. + */ + FAAS_INVOKED_REGION: 'faas.invoked_region'; + /** + * Transport protocol used. See note below. + */ + NET_TRANSPORT: 'net.transport'; + /** + * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6). + */ + NET_PEER_IP: 'net.peer.ip'; + /** + * Remote port number. + */ + NET_PEER_PORT: 'net.peer.port'; + /** + * Remote hostname or similar, see note below. + */ + NET_PEER_NAME: 'net.peer.name'; + /** + * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host. + */ + NET_HOST_IP: 'net.host.ip'; + /** + * Like `net.peer.port` but for the host port. + */ + NET_HOST_PORT: 'net.host.port'; + /** + * Local hostname or similar, see note below. + */ + NET_HOST_NAME: 'net.host.name'; + /** + * The internet connection type currently being used by the host. + */ + NET_HOST_CONNECTION_TYPE: 'net.host.connection.type'; + /** + * 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. + */ + NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype'; + /** + * The name of the mobile carrier. + */ + NET_HOST_CARRIER_NAME: 'net.host.carrier.name'; + /** + * The mobile carrier country code. + */ + NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc'; + /** + * The mobile carrier network code. + */ + NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc'; + /** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + */ + NET_HOST_CARRIER_ICC: 'net.host.carrier.icc'; + /** + * 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. + */ + PEER_SERVICE: 'peer.service'; + /** + * 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. + */ + ENDUSER_ID: 'enduser.id'; + /** + * Actual/assumed role the client is making the request under extracted from token or application security context. + */ + ENDUSER_ROLE: 'enduser.role'; + /** + * 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). + */ + ENDUSER_SCOPE: 'enduser.scope'; + /** + * Current "managed" thread ID (as opposed to OS thread ID). + */ + THREAD_ID: 'thread.id'; + /** + * Current thread name. + */ + THREAD_NAME: 'thread.name'; + /** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + */ + CODE_FUNCTION: 'code.function'; + /** + * 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. + */ + CODE_NAMESPACE: 'code.namespace'; + /** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + */ + CODE_FILEPATH: 'code.filepath'; + /** + * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + */ + CODE_LINENO: 'code.lineno'; + /** + * HTTP request method. + */ + HTTP_METHOD: 'http.method'; + /** + * 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. + * + * 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/`. + */ + HTTP_URL: 'http.url'; + /** + * The full request target as passed in a HTTP request line or equivalent. + */ + HTTP_TARGET: 'http.target'; + /** + * 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. + * + * 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. + */ + HTTP_HOST: 'http.host'; + /** + * The URI scheme identifying the used protocol. + */ + HTTP_SCHEME: 'http.scheme'; + /** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + */ + HTTP_STATUS_CODE: 'http.status_code'; + /** + * Kind of HTTP protocol used. + * + * 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. + */ + HTTP_FLAVOR: 'http.flavor'; + /** + * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client. + */ + HTTP_USER_AGENT: 'http.user_agent'; + /** + * 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. + */ + HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length'; + /** + * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used. + */ + HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed'; + /** + * 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. + */ + HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length'; + /** + * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used. + */ + HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed'; + /** + * 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). + * + * 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. + */ + HTTP_SERVER_NAME: 'http.server_name'; + /** + * The matched route (path template). + */ + HTTP_ROUTE: 'http.route'; + /** + * 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)). + * + * Note: This is not necessarily the same as `net.peer.ip`, which would + identify the network-level peer, which may be a proxy. + + This attribute should be set when a source of information different + from the one used for `net.peer.ip`, is available even if that other + source just confirms the same value as `net.peer.ip`. + Rationale: For `net.peer.ip`, one typically does not know if it + comes from a proxy, reverse proxy, or the actual client. Setting + `http.client_ip` when it's the same as `net.peer.ip` means that + one is at least somewhat confident that the address is not that of + the closest proxy. + */ + HTTP_CLIENT_IP: 'http.client_ip'; + /** + * The keys in the `RequestItems` object field. + */ + AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names'; + /** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + */ + AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity'; + /** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + */ + AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics'; + /** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + */ + AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity'; + /** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + */ + AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity'; + /** + * The value of the `ConsistentRead` request parameter. + */ + AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read'; + /** + * The value of the `ProjectionExpression` request parameter. + */ + AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection'; + /** + * The value of the `Limit` request parameter. + */ + AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit'; + /** + * The value of the `AttributesToGet` request parameter. + */ + AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get'; + /** + * The value of the `IndexName` request parameter. + */ + AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name'; + /** + * The value of the `Select` request parameter. + */ + AWS_DYNAMODB_SELECT: 'aws.dynamodb.select'; + /** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. + */ + AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes'; + /** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + */ + AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes'; + /** + * The value of the `ExclusiveStartTableName` request parameter. + */ + AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table'; + /** + * The the number of items in the `TableNames` response parameter. + */ + AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count'; + /** + * The value of the `ScanIndexForward` request parameter. + */ + AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward'; + /** + * The value of the `Segment` request parameter. + */ + AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment'; + /** + * The value of the `TotalSegments` request parameter. + */ + AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments'; + /** + * The value of the `Count` response parameter. + */ + AWS_DYNAMODB_COUNT: 'aws.dynamodb.count'; + /** + * The value of the `ScannedCount` response parameter. + */ + AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count'; + /** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + */ + AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions'; + /** + * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. + */ + AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates'; + /** + * A string identifying the messaging system. + */ + MESSAGING_SYSTEM: 'messaging.system'; + /** + * The message destination name. This might be equal to the span name but is required nevertheless. + */ + MESSAGING_DESTINATION: 'messaging.destination'; + /** + * The kind of message destination. + */ + MESSAGING_DESTINATION_KIND: 'messaging.destination_kind'; + /** + * A boolean that is true if the message destination is temporary. + */ + MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination'; + /** + * The name of the transport protocol. + */ + MESSAGING_PROTOCOL: 'messaging.protocol'; + /** + * The version of the transport protocol. + */ + MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version'; + /** + * Connection string. + */ + MESSAGING_URL: 'messaging.url'; + /** + * A value used by the messaging system as an identifier for the message, represented as a string. + */ + MESSAGING_MESSAGE_ID: 'messaging.message_id'; + /** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + */ + MESSAGING_CONVERSATION_ID: 'messaging.conversation_id'; + /** + * 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. + */ + MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes'; + /** + * The compressed size of the message payload in bytes. + */ + MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes'; + /** + * 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. + */ + MESSAGING_OPERATION: 'messaging.operation'; + /** + * 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. + */ + MESSAGING_CONSUMER_ID: 'messaging.consumer_id'; + /** + * RabbitMQ message routing key. + */ + MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key'; + /** + * 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. + * + * 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. + */ + MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key'; + /** + * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. + */ + MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group'; + /** + * Client Id for the Consumer or Producer that is handling the message. + */ + MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id'; + /** + * Partition the message is sent to. + */ + MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition'; + /** + * A boolean that is true if the message is a tombstone. + */ + MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone'; + /** + * A string identifying the remoting system. + */ + RPC_SYSTEM: 'rpc.system'; + /** + * The full (logical) name of the service being called, including its package name, if applicable. + * + * 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). + */ + RPC_SERVICE: 'rpc.service'; + /** + * The name of the (logical) method being called, must be equal to the $method part in the span name. + * + * 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). + */ + RPC_METHOD: 'rpc.method'; + /** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + */ + RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code'; + /** + * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted. + */ + RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version'; + /** + * `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. + */ + RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id'; + /** + * `error.code` property of response if it is an error response. + */ + RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code'; + /** + * `error.message` property of response if it is an error response. + */ + RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message'; + /** + * Whether this is a received or sent message. + */ + MESSAGE_TYPE: 'message.type'; + /** + * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * Note: This way we guarantee that the values will be consistent between different implementations. + */ + MESSAGE_ID: 'message.id'; + /** + * Compressed size of the message in bytes. + */ + MESSAGE_COMPRESSED_SIZE: 'message.compressed_size'; + /** + * Uncompressed size of the message in bytes. + */ + MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size'; +}; +/** + * Create exported Value Map for SemanticAttributes values + * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification + */ +export declare const SemanticAttributes: SemanticAttributes; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_OTHER_SQL = "other_sql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MSSQL = "mssql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MYSQL = "mysql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_ORACLE = "oracle"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_DB2 = "db2"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_POSTGRESQL = "postgresql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_REDSHIFT = "redshift"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HIVE = "hive"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_CLOUDSCAPE = "cloudscape"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HSQLDB = "hsqldb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_PROGRESS = "progress"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MAXDB = "maxdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HANADB = "hanadb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INGRES = "ingres"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_FIRSTSQL = "firstsql"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_EDB = "edb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_CACHE = "cache"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_ADABAS = "adabas"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_FIREBIRD = "firebird"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_DERBY = "derby"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_FILEMAKER = "filemaker"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INFORMIX = "informix"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INSTANTDB = "instantdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_INTERBASE = "interbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MARIADB = "mariadb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_NETEZZA = "netezza"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_PERVASIVE = "pervasive"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_POINTBASE = "pointbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_SQLITE = "sqlite"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_SYBASE = "sybase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_TERADATA = "teradata"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_VERTICA = "vertica"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_H2 = "h2"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COLDFUSION = "coldfusion"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_CASSANDRA = "cassandra"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_HBASE = "hbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MONGODB = "mongodb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_REDIS = "redis"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COUCHBASE = "couchbase"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COUCHDB = "couchdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COSMOSDB = "cosmosdb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_DYNAMODB = "dynamodb"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_NEO4J = "neo4j"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_GEODE = "geode"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_ELASTICSEARCH = "elasticsearch"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_MEMCACHED = "memcached"; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +export declare const DBSYSTEMVALUES_COCKROACHDB = "cockroachdb"; +/** + * Identifies the Values for DbSystemValues enum definition + * + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification. + */ +export type DbSystemValues = { + /** Some other SQL database. Fallback only. See notes. */ + OTHER_SQL: 'other_sql'; + /** Microsoft SQL Server. */ + MSSQL: 'mssql'; + /** MySQL. */ + MYSQL: 'mysql'; + /** Oracle Database. */ + ORACLE: 'oracle'; + /** IBM Db2. */ + DB2: 'db2'; + /** PostgreSQL. */ + POSTGRESQL: 'postgresql'; + /** Amazon Redshift. */ + REDSHIFT: 'redshift'; + /** Apache Hive. */ + HIVE: 'hive'; + /** Cloudscape. */ + CLOUDSCAPE: 'cloudscape'; + /** HyperSQL DataBase. */ + HSQLDB: 'hsqldb'; + /** Progress Database. */ + PROGRESS: 'progress'; + /** SAP MaxDB. */ + MAXDB: 'maxdb'; + /** SAP HANA. */ + HANADB: 'hanadb'; + /** Ingres. */ + INGRES: 'ingres'; + /** FirstSQL. */ + FIRSTSQL: 'firstsql'; + /** EnterpriseDB. */ + EDB: 'edb'; + /** InterSystems Caché. */ + CACHE: 'cache'; + /** Adabas (Adaptable Database System). */ + ADABAS: 'adabas'; + /** Firebird. */ + FIREBIRD: 'firebird'; + /** Apache Derby. */ + DERBY: 'derby'; + /** FileMaker. */ + FILEMAKER: 'filemaker'; + /** Informix. */ + INFORMIX: 'informix'; + /** InstantDB. */ + INSTANTDB: 'instantdb'; + /** InterBase. */ + INTERBASE: 'interbase'; + /** MariaDB. */ + MARIADB: 'mariadb'; + /** Netezza. */ + NETEZZA: 'netezza'; + /** Pervasive PSQL. */ + PERVASIVE: 'pervasive'; + /** PointBase. */ + POINTBASE: 'pointbase'; + /** SQLite. */ + SQLITE: 'sqlite'; + /** Sybase. */ + SYBASE: 'sybase'; + /** Teradata. */ + TERADATA: 'teradata'; + /** Vertica. */ + VERTICA: 'vertica'; + /** H2. */ + H2: 'h2'; + /** ColdFusion IMQ. */ + COLDFUSION: 'coldfusion'; + /** Apache Cassandra. */ + CASSANDRA: 'cassandra'; + /** Apache HBase. */ + HBASE: 'hbase'; + /** MongoDB. */ + MONGODB: 'mongodb'; + /** Redis. */ + REDIS: 'redis'; + /** Couchbase. */ + COUCHBASE: 'couchbase'; + /** CouchDB. */ + COUCHDB: 'couchdb'; + /** Microsoft Azure Cosmos DB. */ + COSMOSDB: 'cosmosdb'; + /** Amazon DynamoDB. */ + DYNAMODB: 'dynamodb'; + /** Neo4j. */ + NEO4J: 'neo4j'; + /** Apache Geode. */ + GEODE: 'geode'; + /** Elasticsearch. */ + ELASTICSEARCH: 'elasticsearch'; + /** Memcached. */ + MEMCACHED: 'memcached'; + /** CockroachDB. */ + COCKROACHDB: 'cockroachdb'; +}; +/** + * The constant map of values for DbSystemValues. + * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification. + */ +export declare const DbSystemValues: DbSystemValues; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_ALL = "all"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = "each_quorum"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = "quorum"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = "local_quorum"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_ONE = "one"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_TWO = "two"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_THREE = "three"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = "local_one"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_ANY = "any"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = "serial"; +/** + * 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). + * + * @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}). + */ +export declare const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = "local_serial"; +/** + * Identifies the Values for DbCassandraConsistencyLevelValues enum definition + * + * 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). + * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification. + */ +export type DbCassandraConsistencyLevelValues = { + /** all. */ + ALL: 'all'; + /** each_quorum. */ + EACH_QUORUM: 'each_quorum'; + /** quorum. */ + QUORUM: 'quorum'; + /** local_quorum. */ + LOCAL_QUORUM: 'local_quorum'; + /** one. */ + ONE: 'one'; + /** two. */ + TWO: 'two'; + /** three. */ + THREE: 'three'; + /** local_one. */ + LOCAL_ONE: 'local_one'; + /** any. */ + ANY: 'any'; + /** serial. */ + SERIAL: 'serial'; + /** local_serial. */ + LOCAL_SERIAL: 'local_serial'; +}; +/** + * The constant map of values for DbCassandraConsistencyLevelValues. + * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification. + */ +export declare const DbCassandraConsistencyLevelValues: DbCassandraConsistencyLevelValues; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_DATASOURCE = "datasource"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_HTTP = "http"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_PUBSUB = "pubsub"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_TIMER = "timer"; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +export declare const FAASTRIGGERVALUES_OTHER = "other"; +/** + * Identifies the Values for FaasTriggerValues enum definition + * + * Type of the trigger on which the function is executed. + * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification. + */ +export type FaasTriggerValues = { + /** A response to some data source operation such as a database or filesystem read/write. */ + DATASOURCE: 'datasource'; + /** To provide an answer to an inbound HTTP request. */ + HTTP: 'http'; + /** A function is set to be executed when messages are sent to a messaging system. */ + PUBSUB: 'pubsub'; + /** A function is scheduled to be executed regularly. */ + TIMER: 'timer'; + /** If none of the others apply. */ + OTHER: 'other'; +}; +/** + * The constant map of values for FaasTriggerValues. + * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification. + */ +export declare const FaasTriggerValues: FaasTriggerValues; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const FAASDOCUMENTOPERATIONVALUES_INSERT = "insert"; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const FAASDOCUMENTOPERATIONVALUES_EDIT = "edit"; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +export declare const FAASDOCUMENTOPERATIONVALUES_DELETE = "delete"; +/** + * Identifies the Values for FaasDocumentOperationValues enum definition + * + * Describes the type of the operation that was performed on the data. + * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification. + */ +export type FaasDocumentOperationValues = { + /** When a new object is created. */ + INSERT: 'insert'; + /** When an object is modified. */ + EDIT: 'edit'; + /** When an object is deleted. */ + DELETE: 'delete'; +}; +/** + * The constant map of values for FaasDocumentOperationValues. + * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification. + */ +export declare const FaasDocumentOperationValues: FaasDocumentOperationValues; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = "alibaba_cloud"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_AWS = "aws"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_AZURE = "azure"; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +export declare const FAASINVOKEDPROVIDERVALUES_GCP = "gcp"; +/** + * Identifies the Values for FaasInvokedProviderValues enum definition + * + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification. + */ +export type FaasInvokedProviderValues = { + /** Alibaba Cloud. */ + ALIBABA_CLOUD: 'alibaba_cloud'; + /** Amazon Web Services. */ + AWS: 'aws'; + /** Microsoft Azure. */ + AZURE: 'azure'; + /** Google Cloud Platform. */ + GCP: 'gcp'; +}; +/** + * The constant map of values for FaasInvokedProviderValues. + * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification. + */ +export declare const FaasInvokedProviderValues: FaasInvokedProviderValues; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_IP_TCP = "ip_tcp"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_IP_UDP = "ip_udp"; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +export declare const NETTRANSPORTVALUES_IP = "ip"; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +export declare const NETTRANSPORTVALUES_UNIX = "unix"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_PIPE = "pipe"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_INPROC = "inproc"; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +export declare const NETTRANSPORTVALUES_OTHER = "other"; +/** + * Identifies the Values for NetTransportValues enum definition + * + * Transport protocol used. See note below. + * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification. + */ +export type NetTransportValues = { + /** ip_tcp. */ + IP_TCP: 'ip_tcp'; + /** ip_udp. */ + IP_UDP: 'ip_udp'; + /** Another IP-based protocol. */ + IP: 'ip'; + /** Unix Domain socket. See below. */ + UNIX: 'unix'; + /** Named or anonymous pipe. See note below. */ + PIPE: 'pipe'; + /** In-process communication. */ + INPROC: 'inproc'; + /** Something else (non IP-based). */ + OTHER: 'other'; +}; +/** + * The constant map of values for NetTransportValues. + * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification. + */ +export declare const NetTransportValues: NetTransportValues; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_WIFI = "wifi"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_WIRED = "wired"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_CELL = "cell"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = "unavailable"; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = "unknown"; +/** + * Identifies the Values for NetHostConnectionTypeValues enum definition + * + * The internet connection type currently being used by the host. + * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification. + */ +export type NetHostConnectionTypeValues = { + /** wifi. */ + WIFI: 'wifi'; + /** wired. */ + WIRED: 'wired'; + /** cell. */ + CELL: 'cell'; + /** unavailable. */ + UNAVAILABLE: 'unavailable'; + /** unknown. */ + UNKNOWN: 'unknown'; +}; +/** + * The constant map of values for NetHostConnectionTypeValues. + * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification. + */ +export declare const NetHostConnectionTypeValues: NetHostConnectionTypeValues; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = "gprs"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = "edge"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = "umts"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = "cdma"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = "evdo_0"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = "evdo_a"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = "cdma2000_1xrtt"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = "hsdpa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = "hsupa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = "hspa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = "iden"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = "evdo_b"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_LTE = "lte"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = "ehrpd"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = "hspap"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_GSM = "gsm"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = "td_scdma"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = "iwlan"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_NR = "nr"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = "nrnsa"; +/** + * 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. + * + * @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}). + */ +export declare const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = "lte_ca"; +/** + * Identifies the Values for NetHostConnectionSubtypeValues enum definition + * + * 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. + * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification. + */ +export type NetHostConnectionSubtypeValues = { + /** GPRS. */ + GPRS: 'gprs'; + /** EDGE. */ + EDGE: 'edge'; + /** UMTS. */ + UMTS: 'umts'; + /** CDMA. */ + CDMA: 'cdma'; + /** EVDO Rel. 0. */ + EVDO_0: 'evdo_0'; + /** EVDO Rev. A. */ + EVDO_A: 'evdo_a'; + /** CDMA2000 1XRTT. */ + CDMA2000_1XRTT: 'cdma2000_1xrtt'; + /** HSDPA. */ + HSDPA: 'hsdpa'; + /** HSUPA. */ + HSUPA: 'hsupa'; + /** HSPA. */ + HSPA: 'hspa'; + /** IDEN. */ + IDEN: 'iden'; + /** EVDO Rev. B. */ + EVDO_B: 'evdo_b'; + /** LTE. */ + LTE: 'lte'; + /** EHRPD. */ + EHRPD: 'ehrpd'; + /** HSPAP. */ + HSPAP: 'hspap'; + /** GSM. */ + GSM: 'gsm'; + /** TD-SCDMA. */ + TD_SCDMA: 'td_scdma'; + /** IWLAN. */ + IWLAN: 'iwlan'; + /** 5G NR (New Radio). */ + NR: 'nr'; + /** 5G NRNSA (New Radio Non-Standalone). */ + NRNSA: 'nrnsa'; + /** LTE CA. */ + LTE_CA: 'lte_ca'; +}; +/** + * The constant map of values for NetHostConnectionSubtypeValues. + * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification. + */ +export declare const NetHostConnectionSubtypeValues: NetHostConnectionSubtypeValues; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_HTTP_1_0 = "1.0"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_HTTP_1_1 = "1.1"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_HTTP_2_0 = "2.0"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_SPDY = "SPDY"; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +export declare const HTTPFLAVORVALUES_QUIC = "QUIC"; +/** + * Identifies the Values for HttpFlavorValues enum definition + * + * Kind of HTTP protocol used. + * + * 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. + * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification. + */ +export type HttpFlavorValues = { + /** HTTP 1.0. */ + HTTP_1_0: '1.0'; + /** HTTP 1.1. */ + HTTP_1_1: '1.1'; + /** HTTP 2. */ + HTTP_2_0: '2.0'; + /** SPDY protocol. */ + SPDY: 'SPDY'; + /** QUIC protocol. */ + QUIC: 'QUIC'; +}; +/** + * The constant map of values for HttpFlavorValues. + * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification. + */ +export declare const HttpFlavorValues: HttpFlavorValues; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const MESSAGINGDESTINATIONKINDVALUES_QUEUE = "queue"; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +export declare const MESSAGINGDESTINATIONKINDVALUES_TOPIC = "topic"; +/** + * Identifies the Values for MessagingDestinationKindValues enum definition + * + * The kind of message destination. + * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification. + */ +export type MessagingDestinationKindValues = { + /** A message sent to a queue. */ + QUEUE: 'queue'; + /** A message sent to a topic. */ + TOPIC: 'topic'; +}; +/** + * The constant map of values for MessagingDestinationKindValues. + * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification. + */ +export declare const MessagingDestinationKindValues: MessagingDestinationKindValues; +/** + * 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. + * + * @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}). + */ +export declare const MESSAGINGOPERATIONVALUES_RECEIVE = "receive"; +/** + * 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. + * + * @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}). + */ +export declare const MESSAGINGOPERATIONVALUES_PROCESS = "process"; +/** + * Identifies the Values for MessagingOperationValues enum definition + * + * 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. + * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification. + */ +export type MessagingOperationValues = { + /** receive. */ + RECEIVE: 'receive'; + /** process. */ + PROCESS: 'process'; +}; +/** + * The constant map of values for MessagingOperationValues. + * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification. + */ +export declare const MessagingOperationValues: MessagingOperationValues; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_OK = 0; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_CANCELLED = 1; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_ABORTED = 10; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_INTERNAL = 13; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +export declare const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16; +/** + * Identifies the Values for RpcGrpcStatusCodeValues enum definition + * + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification. + */ +export type RpcGrpcStatusCodeValues = { + /** OK. */ + OK: 0; + /** CANCELLED. */ + CANCELLED: 1; + /** UNKNOWN. */ + UNKNOWN: 2; + /** INVALID_ARGUMENT. */ + INVALID_ARGUMENT: 3; + /** DEADLINE_EXCEEDED. */ + DEADLINE_EXCEEDED: 4; + /** NOT_FOUND. */ + NOT_FOUND: 5; + /** ALREADY_EXISTS. */ + ALREADY_EXISTS: 6; + /** PERMISSION_DENIED. */ + PERMISSION_DENIED: 7; + /** RESOURCE_EXHAUSTED. */ + RESOURCE_EXHAUSTED: 8; + /** FAILED_PRECONDITION. */ + FAILED_PRECONDITION: 9; + /** ABORTED. */ + ABORTED: 10; + /** OUT_OF_RANGE. */ + OUT_OF_RANGE: 11; + /** UNIMPLEMENTED. */ + UNIMPLEMENTED: 12; + /** INTERNAL. */ + INTERNAL: 13; + /** UNAVAILABLE. */ + UNAVAILABLE: 14; + /** DATA_LOSS. */ + DATA_LOSS: 15; + /** UNAUTHENTICATED. */ + UNAUTHENTICATED: 16; +}; +/** + * The constant map of values for RpcGrpcStatusCodeValues. + * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification. + */ +export declare const RpcGrpcStatusCodeValues: RpcGrpcStatusCodeValues; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export declare const MESSAGETYPEVALUES_SENT = "SENT"; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +export declare const MESSAGETYPEVALUES_RECEIVED = "RECEIVED"; +/** + * Identifies the Values for MessageTypeValues enum definition + * + * Whether this is a received or sent message. + * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification. + */ +export type MessageTypeValues = { + /** sent. */ + SENT: 'SENT'; + /** received. */ + RECEIVED: 'RECEIVED'; +}; +/** + * The constant map of values for MessageTypeValues. + * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification. + */ +export declare const MessageTypeValues: MessageTypeValues; +//# sourceMappingURL=SemanticAttributes.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.js new file mode 100644 index 0000000..d733717 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.js @@ -0,0 +1,2379 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.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; +exports.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; +exports.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; +exports.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; +exports.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; +exports.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; +const utils_1 = require("../internal/utils"); +//---------------------------------------------------------------------------------------------------------- +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2 +//---------------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------------------------- +// Constant values for SemanticAttributes +//---------------------------------------------------------------------------------------------------------- +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn'; +const TMP_DB_SYSTEM = 'db.system'; +const TMP_DB_CONNECTION_STRING = 'db.connection_string'; +const TMP_DB_USER = 'db.user'; +const TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname'; +const TMP_DB_NAME = 'db.name'; +const TMP_DB_STATEMENT = 'db.statement'; +const TMP_DB_OPERATION = 'db.operation'; +const TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name'; +const TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace'; +const TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size'; +const TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level'; +const TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table'; +const TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence'; +const TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count'; +const TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id'; +const TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc'; +const TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace'; +const TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index'; +const TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection'; +const TMP_DB_SQL_TABLE = 'db.sql.table'; +const TMP_EXCEPTION_TYPE = 'exception.type'; +const TMP_EXCEPTION_MESSAGE = 'exception.message'; +const TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace'; +const TMP_EXCEPTION_ESCAPED = 'exception.escaped'; +const TMP_FAAS_TRIGGER = 'faas.trigger'; +const TMP_FAAS_EXECUTION = 'faas.execution'; +const TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection'; +const TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation'; +const TMP_FAAS_DOCUMENT_TIME = 'faas.document.time'; +const TMP_FAAS_DOCUMENT_NAME = 'faas.document.name'; +const TMP_FAAS_TIME = 'faas.time'; +const TMP_FAAS_CRON = 'faas.cron'; +const TMP_FAAS_COLDSTART = 'faas.coldstart'; +const TMP_FAAS_INVOKED_NAME = 'faas.invoked_name'; +const TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider'; +const TMP_FAAS_INVOKED_REGION = 'faas.invoked_region'; +const TMP_NET_TRANSPORT = 'net.transport'; +const TMP_NET_PEER_IP = 'net.peer.ip'; +const TMP_NET_PEER_PORT = 'net.peer.port'; +const TMP_NET_PEER_NAME = 'net.peer.name'; +const TMP_NET_HOST_IP = 'net.host.ip'; +const TMP_NET_HOST_PORT = 'net.host.port'; +const TMP_NET_HOST_NAME = 'net.host.name'; +const TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type'; +const TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype'; +const TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name'; +const TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc'; +const TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc'; +const TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc'; +const TMP_PEER_SERVICE = 'peer.service'; +const TMP_ENDUSER_ID = 'enduser.id'; +const TMP_ENDUSER_ROLE = 'enduser.role'; +const TMP_ENDUSER_SCOPE = 'enduser.scope'; +const TMP_THREAD_ID = 'thread.id'; +const TMP_THREAD_NAME = 'thread.name'; +const TMP_CODE_FUNCTION = 'code.function'; +const TMP_CODE_NAMESPACE = 'code.namespace'; +const TMP_CODE_FILEPATH = 'code.filepath'; +const TMP_CODE_LINENO = 'code.lineno'; +const TMP_HTTP_METHOD = 'http.method'; +const TMP_HTTP_URL = 'http.url'; +const TMP_HTTP_TARGET = 'http.target'; +const TMP_HTTP_HOST = 'http.host'; +const TMP_HTTP_SCHEME = 'http.scheme'; +const TMP_HTTP_STATUS_CODE = 'http.status_code'; +const TMP_HTTP_FLAVOR = 'http.flavor'; +const TMP_HTTP_USER_AGENT = 'http.user_agent'; +const TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length'; +const TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed'; +const TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length'; +const TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed'; +const TMP_HTTP_SERVER_NAME = 'http.server_name'; +const TMP_HTTP_ROUTE = 'http.route'; +const TMP_HTTP_CLIENT_IP = 'http.client_ip'; +const TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names'; +const TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity'; +const TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics'; +const TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity'; +const TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity'; +const TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read'; +const TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection'; +const TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit'; +const TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get'; +const TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name'; +const TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select'; +const TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes'; +const TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes'; +const TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table'; +const TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count'; +const TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward'; +const TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment'; +const TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments'; +const TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count'; +const TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count'; +const TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions'; +const TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates'; +const TMP_MESSAGING_SYSTEM = 'messaging.system'; +const TMP_MESSAGING_DESTINATION = 'messaging.destination'; +const TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind'; +const TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination'; +const TMP_MESSAGING_PROTOCOL = 'messaging.protocol'; +const TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version'; +const TMP_MESSAGING_URL = 'messaging.url'; +const TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id'; +const TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id'; +const TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = 'messaging.message_payload_size_bytes'; +const TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = 'messaging.message_payload_compressed_size_bytes'; +const TMP_MESSAGING_OPERATION = 'messaging.operation'; +const TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id'; +const TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key'; +const TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key'; +const TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group'; +const TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id'; +const TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition'; +const TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone'; +const TMP_RPC_SYSTEM = 'rpc.system'; +const TMP_RPC_SERVICE = 'rpc.service'; +const TMP_RPC_METHOD = 'rpc.method'; +const TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code'; +const TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version'; +const TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id'; +const TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code'; +const TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message'; +const TMP_MESSAGE_TYPE = 'message.type'; +const TMP_MESSAGE_ID = 'message.id'; +const TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size'; +const TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size'; +/** + * 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). + * + * Note: This may be different from `faas.id` if an alias is involved. + * + * @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}). + */ +exports.SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM; +/** + * The connection string used to connect to the database. It is recommended to remove embedded credentials. + * + * @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}). + */ +exports.SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING; +/** + * Username for accessing the database. + * + * @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}). + */ +exports.SEMATTRS_DB_USER = TMP_DB_USER; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME; +/** + * 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). + * + * Note: In some SQL databases, the database name to be used is called "schema name". + * + * @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}). + */ +exports.SEMATTRS_DB_NAME = TMP_DB_NAME; +/** + * The database statement being executed. + * + * Note: The value may be sanitized to exclude sensitive information. + * + * @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}). + */ +exports.SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT; +/** + * 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. + * + * 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. + * + * @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}). + */ +exports.SEMATTRS_DB_OPERATION = TMP_DB_OPERATION; +/** + * 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. + * + * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard). + * + * @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}). + */ +exports.SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME; +/** + * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +exports.SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE; +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + * + * @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}). + */ +exports.SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE; +/** + * 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). + * + * @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}). + */ +exports.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = TMP_DB_CASSANDRA_CONSISTENCY_LEVEL; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +exports.SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE; +/** + * Whether or not the query is idempotent. + * + * @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}). + */ +exports.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE; +/** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * + * @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}). + */ +exports.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT; +/** + * The ID of the coordinating node for a query. + * + * @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}). + */ +exports.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = TMP_DB_CASSANDRA_COORDINATOR_ID; +/** + * The data center of the coordinating node for a query. + * + * @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}). + */ +exports.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = TMP_DB_CASSANDRA_COORDINATOR_DC; +/** + * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute. + * + * @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}). + */ +exports.SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX; +/** + * The collection being accessed within the database stated in `db.name`. + * + * @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}). + */ +exports.SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION; +/** + * The name of the primary table that the operation is acting upon, including the schema name (if applicable). + * + * 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. + * + * @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}). + */ +exports.SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_TYPE. + */ +exports.SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE; +/** + * The exception message. + * + * @deprecated Use ATTR_EXCEPTION_MESSAGE. + */ +exports.SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE; +/** + * 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. + * + * @deprecated Use ATTR_EXCEPTION_STACKTRACE. + */ +exports.SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE; +/** +* 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. +* +* Note: An exception is considered to have escaped (or left) the scope of a span, +if that span is ended while the exception is still logically "in flight". +This may be actually "in flight" in some languages (e.g. if the exception +is passed to a Context manager's `__exit__` method in Python) but will +usually be caught at the point of recording the exception in most languages. + +It is usually not possible to determine at the point where an exception is thrown +whether it will escape the scope of a span. +However, it is trivial to know that an exception +will escape, if one checks for an active exception just before ending the span, +as done in the [example above](#exception-end-example). + +It follows that an exception may still escape the scope of the span +even if the `exception.escaped` attribute was not set or set to false, +since the event might have been recorded at a time where it was not +clear whether the exception will escape. +* +* @deprecated Use ATTR_EXCEPTION_ESCAPED. +*/ +exports.SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +exports.SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER; +/** + * The execution ID of the current function execution. + * + * @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}). + */ +exports.SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +exports.SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION; +/** + * 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). + * + * @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}). + */ +exports.SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME; +/** + * 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). + * + * @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}). + */ +exports.SEMATTRS_FAAS_TIME = TMP_FAAS_TIME; +/** + * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + * + * @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}). + */ +exports.SEMATTRS_FAAS_CRON = TMP_FAAS_CRON; +/** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * @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}). + */ +exports.SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART; +/** + * The name of the invoked function. + * + * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function. + * + * @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}). + */ +exports.SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +exports.SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER; +/** + * The cloud region of the invoked function. + * + * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function. + * + * @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}). + */ +exports.SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +exports.SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT; +/** + * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6). + * + * @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}). + */ +exports.SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP; +/** + * Remote port number. + * + * @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}). + */ +exports.SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT; +/** + * Remote hostname or similar, see note below. + * + * @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}). + */ +exports.SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME; +/** + * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host. + * + * @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}). + */ +exports.SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP; +/** + * Like `net.peer.port` but for the host port. + * + * @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}). + */ +exports.SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT; +/** + * Local hostname or similar, see note below. + * + * @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}). + */ +exports.SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +exports.SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = TMP_NET_HOST_CONNECTION_SUBTYPE; +/** + * The name of the mobile carrier. + * + * @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}). + */ +exports.SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME; +/** + * The mobile carrier country code. + * + * @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}). + */ +exports.SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC; +/** + * The mobile carrier network code. + * + * @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}). + */ +exports.SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC; +/** + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * + * @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}). + */ +exports.SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID; +/** + * Actual/assumed role the client is making the request under extracted from token or application security context. + * + * @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}). + */ +exports.SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE; +/** + * 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). + * + * @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}). + */ +exports.SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE; +/** + * Current "managed" thread ID (as opposed to OS thread ID). + * + * @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}). + */ +exports.SEMATTRS_THREAD_ID = TMP_THREAD_ID; +/** + * Current thread name. + * + * @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}). + */ +exports.SEMATTRS_THREAD_NAME = TMP_THREAD_NAME; +/** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + * + * @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}). + */ +exports.SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE; +/** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + * + * @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}). + */ +exports.SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH; +/** + * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + * + * @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}). + */ +exports.SEMATTRS_CODE_LINENO = TMP_CODE_LINENO; +/** + * HTTP request method. + * + * @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}). + */ +exports.SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD; +/** + * 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. + * + * 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/`. + * + * @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}). + */ +exports.SEMATTRS_HTTP_URL = TMP_HTTP_URL; +/** + * The full request target as passed in a HTTP request line or equivalent. + * + * @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}). + */ +exports.SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET; +/** + * 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. + * + * 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. + * + * @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}). + */ +exports.SEMATTRS_HTTP_HOST = TMP_HTTP_HOST; +/** + * The URI scheme identifying the used protocol. + * + * @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}). + */ +exports.SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME; +/** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + * + * @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}). + */ +exports.SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +exports.SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR; +/** + * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client. + * + * @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}). + */ +exports.SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = TMP_HTTP_REQUEST_CONTENT_LENGTH; +/** + * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +exports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = TMP_HTTP_RESPONSE_CONTENT_LENGTH; +/** + * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used. + * + * @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}). + */ +exports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED; +/** + * 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). + * + * 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. + * + * @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}). + */ +exports.SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME; +/** + * The matched route (path template). + * + * @deprecated Use ATTR_HTTP_ROUTE. + */ +exports.SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE; +/** +* 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)). +* +* Note: This is not necessarily the same as `net.peer.ip`, which would +identify the network-level peer, which may be a proxy. + +This attribute should be set when a source of information different +from the one used for `net.peer.ip`, is available even if that other +source just confirms the same value as `net.peer.ip`. +Rationale: For `net.peer.ip`, one typically does not know if it +comes from a proxy, reverse proxy, or the actual client. Setting +`http.client_ip` when it's the same as `net.peer.ip` means that +one is at least somewhat confident that the address is not that of +the closest proxy. +* +* @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}). +*/ +exports.SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP; +/** + * The keys in the `RequestItems` object field. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES; +/** + * The JSON-serialized value of each item in the `ConsumedCapacity` response field. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = TMP_AWS_DYNAMODB_CONSUMED_CAPACITY; +/** + * The JSON-serialized value of the `ItemCollectionMetrics` response field. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS; +/** + * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY; +/** + * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY; +/** + * The value of the `ConsistentRead` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = TMP_AWS_DYNAMODB_CONSISTENT_READ; +/** + * The value of the `ProjectionExpression` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION; +/** + * The value of the `Limit` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT; +/** + * The value of the `AttributesToGet` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET; +/** + * The value of the `IndexName` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME; +/** + * The value of the `Select` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT; +/** + * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES; +/** + * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES; +/** + * The value of the `ExclusiveStartTableName` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE; +/** + * The the number of items in the `TableNames` response parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT; +/** + * The value of the `ScanIndexForward` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD; +/** + * The value of the `Segment` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT; +/** + * The value of the `TotalSegments` request parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = TMP_AWS_DYNAMODB_TOTAL_SEGMENTS; +/** + * The value of the `Count` response parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT; +/** + * The value of the `ScannedCount` response parameter. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = TMP_AWS_DYNAMODB_SCANNED_COUNT; +/** + * The JSON-serialized value of each item in the `AttributeDefinitions` request field. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS; +/** + * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. + * + * @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}). + */ +exports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES; +/** + * A string identifying the messaging system. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM; +/** + * The message destination name. This might be equal to the span name but is required nevertheless. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +exports.SEMATTRS_MESSAGING_DESTINATION_KIND = TMP_MESSAGING_DESTINATION_KIND; +/** + * A boolean that is true if the message destination is temporary. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_TEMP_DESTINATION = TMP_MESSAGING_TEMP_DESTINATION; +/** + * The name of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME. + */ +exports.SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL; +/** + * The version of the transport protocol. + * + * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION. + */ +exports.SEMATTRS_MESSAGING_PROTOCOL_VERSION = TMP_MESSAGING_PROTOCOL_VERSION; +/** + * Connection string. + * + * @deprecated Removed in semconv v1.17.0. + */ +exports.SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL; +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID; +/** + * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES; +/** + * The compressed size of the message payload in bytes. + * + * @deprecated Removed in semconv v1.22.0. + */ +exports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES; +/** + * 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. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION; +/** + * 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. + * + * @deprecated Removed in semconv v1.21.0. + */ +exports.SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID; +/** + * RabbitMQ message routing key. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = TMP_MESSAGING_RABBITMQ_ROUTING_KEY; +/** + * 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. + * + * 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. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = TMP_MESSAGING_KAFKA_MESSAGE_KEY; +/** + * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = TMP_MESSAGING_KAFKA_CONSUMER_GROUP; +/** + * Client Id for the Consumer or Producer that is handling the message. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID; +/** + * Partition the message is sent to. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION; +/** + * A boolean that is true if the message is a tombstone. + * + * @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}). + */ +exports.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE; +/** + * A string identifying the remoting system. + * + * @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}). + */ +exports.SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM; +/** + * The full (logical) name of the service being called, including its package name, if applicable. + * + * 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). + * + * @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}). + */ +exports.SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE; +/** + * The name of the (logical) method being called, must be equal to the $method part in the span name. + * + * 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). + * + * @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}). + */ +exports.SEMATTRS_RPC_METHOD = TMP_RPC_METHOD; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE; +/** + * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted. + * + * @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}). + */ +exports.SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION; +/** + * `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. + * + * @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}). + */ +exports.SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID; +/** + * `error.code` property of response if it is an error response. + * + * @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}). + */ +exports.SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE; +/** + * `error.message` property of response if it is an error response. + * + * @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}). + */ +exports.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +exports.SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE; +/** + * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. + * + * Note: This way we guarantee that the values will be consistent between different implementations. + * + * @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}). + */ +exports.SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID; +/** + * Compressed size of the message in bytes. + * + * @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}). + */ +exports.SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE; +/** + * Uncompressed size of the message in bytes. + * + * @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}). + */ +exports.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE; +/** + * Create exported Value Map for SemanticAttributes values + * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification + */ +exports.SemanticAttributes = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_AWS_LAMBDA_INVOKED_ARN, + TMP_DB_SYSTEM, + TMP_DB_CONNECTION_STRING, + TMP_DB_USER, + TMP_DB_JDBC_DRIVER_CLASSNAME, + TMP_DB_NAME, + TMP_DB_STATEMENT, + TMP_DB_OPERATION, + TMP_DB_MSSQL_INSTANCE_NAME, + TMP_DB_CASSANDRA_KEYSPACE, + TMP_DB_CASSANDRA_PAGE_SIZE, + TMP_DB_CASSANDRA_CONSISTENCY_LEVEL, + TMP_DB_CASSANDRA_TABLE, + TMP_DB_CASSANDRA_IDEMPOTENCE, + TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, + TMP_DB_CASSANDRA_COORDINATOR_ID, + TMP_DB_CASSANDRA_COORDINATOR_DC, + TMP_DB_HBASE_NAMESPACE, + TMP_DB_REDIS_DATABASE_INDEX, + TMP_DB_MONGODB_COLLECTION, + TMP_DB_SQL_TABLE, + TMP_EXCEPTION_TYPE, + TMP_EXCEPTION_MESSAGE, + TMP_EXCEPTION_STACKTRACE, + TMP_EXCEPTION_ESCAPED, + TMP_FAAS_TRIGGER, + TMP_FAAS_EXECUTION, + TMP_FAAS_DOCUMENT_COLLECTION, + TMP_FAAS_DOCUMENT_OPERATION, + TMP_FAAS_DOCUMENT_TIME, + TMP_FAAS_DOCUMENT_NAME, + TMP_FAAS_TIME, + TMP_FAAS_CRON, + TMP_FAAS_COLDSTART, + TMP_FAAS_INVOKED_NAME, + TMP_FAAS_INVOKED_PROVIDER, + TMP_FAAS_INVOKED_REGION, + TMP_NET_TRANSPORT, + TMP_NET_PEER_IP, + TMP_NET_PEER_PORT, + TMP_NET_PEER_NAME, + TMP_NET_HOST_IP, + TMP_NET_HOST_PORT, + TMP_NET_HOST_NAME, + TMP_NET_HOST_CONNECTION_TYPE, + TMP_NET_HOST_CONNECTION_SUBTYPE, + TMP_NET_HOST_CARRIER_NAME, + TMP_NET_HOST_CARRIER_MCC, + TMP_NET_HOST_CARRIER_MNC, + TMP_NET_HOST_CARRIER_ICC, + TMP_PEER_SERVICE, + TMP_ENDUSER_ID, + TMP_ENDUSER_ROLE, + TMP_ENDUSER_SCOPE, + TMP_THREAD_ID, + TMP_THREAD_NAME, + TMP_CODE_FUNCTION, + TMP_CODE_NAMESPACE, + TMP_CODE_FILEPATH, + TMP_CODE_LINENO, + TMP_HTTP_METHOD, + TMP_HTTP_URL, + TMP_HTTP_TARGET, + TMP_HTTP_HOST, + TMP_HTTP_SCHEME, + TMP_HTTP_STATUS_CODE, + TMP_HTTP_FLAVOR, + TMP_HTTP_USER_AGENT, + TMP_HTTP_REQUEST_CONTENT_LENGTH, + TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED, + TMP_HTTP_RESPONSE_CONTENT_LENGTH, + TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED, + TMP_HTTP_SERVER_NAME, + TMP_HTTP_ROUTE, + TMP_HTTP_CLIENT_IP, + TMP_AWS_DYNAMODB_TABLE_NAMES, + TMP_AWS_DYNAMODB_CONSUMED_CAPACITY, + TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS, + TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY, + TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY, + TMP_AWS_DYNAMODB_CONSISTENT_READ, + TMP_AWS_DYNAMODB_PROJECTION, + TMP_AWS_DYNAMODB_LIMIT, + TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET, + TMP_AWS_DYNAMODB_INDEX_NAME, + TMP_AWS_DYNAMODB_SELECT, + TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES, + TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES, + TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE, + TMP_AWS_DYNAMODB_TABLE_COUNT, + TMP_AWS_DYNAMODB_SCAN_FORWARD, + TMP_AWS_DYNAMODB_SEGMENT, + TMP_AWS_DYNAMODB_TOTAL_SEGMENTS, + TMP_AWS_DYNAMODB_COUNT, + TMP_AWS_DYNAMODB_SCANNED_COUNT, + TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS, + TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES, + TMP_MESSAGING_SYSTEM, + TMP_MESSAGING_DESTINATION, + TMP_MESSAGING_DESTINATION_KIND, + TMP_MESSAGING_TEMP_DESTINATION, + TMP_MESSAGING_PROTOCOL, + TMP_MESSAGING_PROTOCOL_VERSION, + TMP_MESSAGING_URL, + TMP_MESSAGING_MESSAGE_ID, + TMP_MESSAGING_CONVERSATION_ID, + TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES, + TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES, + TMP_MESSAGING_OPERATION, + TMP_MESSAGING_CONSUMER_ID, + TMP_MESSAGING_RABBITMQ_ROUTING_KEY, + TMP_MESSAGING_KAFKA_MESSAGE_KEY, + TMP_MESSAGING_KAFKA_CONSUMER_GROUP, + TMP_MESSAGING_KAFKA_CLIENT_ID, + TMP_MESSAGING_KAFKA_PARTITION, + TMP_MESSAGING_KAFKA_TOMBSTONE, + TMP_RPC_SYSTEM, + TMP_RPC_SERVICE, + TMP_RPC_METHOD, + TMP_RPC_GRPC_STATUS_CODE, + TMP_RPC_JSONRPC_VERSION, + TMP_RPC_JSONRPC_REQUEST_ID, + TMP_RPC_JSONRPC_ERROR_CODE, + TMP_RPC_JSONRPC_ERROR_MESSAGE, + TMP_MESSAGE_TYPE, + TMP_MESSAGE_ID, + TMP_MESSAGE_COMPRESSED_SIZE, + TMP_MESSAGE_UNCOMPRESSED_SIZE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for DbSystemValues enum definition + * + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql'; +const TMP_DBSYSTEMVALUES_MSSQL = 'mssql'; +const TMP_DBSYSTEMVALUES_MYSQL = 'mysql'; +const TMP_DBSYSTEMVALUES_ORACLE = 'oracle'; +const TMP_DBSYSTEMVALUES_DB2 = 'db2'; +const TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql'; +const TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift'; +const TMP_DBSYSTEMVALUES_HIVE = 'hive'; +const TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape'; +const TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb'; +const TMP_DBSYSTEMVALUES_PROGRESS = 'progress'; +const TMP_DBSYSTEMVALUES_MAXDB = 'maxdb'; +const TMP_DBSYSTEMVALUES_HANADB = 'hanadb'; +const TMP_DBSYSTEMVALUES_INGRES = 'ingres'; +const TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql'; +const TMP_DBSYSTEMVALUES_EDB = 'edb'; +const TMP_DBSYSTEMVALUES_CACHE = 'cache'; +const TMP_DBSYSTEMVALUES_ADABAS = 'adabas'; +const TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird'; +const TMP_DBSYSTEMVALUES_DERBY = 'derby'; +const TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker'; +const TMP_DBSYSTEMVALUES_INFORMIX = 'informix'; +const TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb'; +const TMP_DBSYSTEMVALUES_INTERBASE = 'interbase'; +const TMP_DBSYSTEMVALUES_MARIADB = 'mariadb'; +const TMP_DBSYSTEMVALUES_NETEZZA = 'netezza'; +const TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive'; +const TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase'; +const TMP_DBSYSTEMVALUES_SQLITE = 'sqlite'; +const TMP_DBSYSTEMVALUES_SYBASE = 'sybase'; +const TMP_DBSYSTEMVALUES_TERADATA = 'teradata'; +const TMP_DBSYSTEMVALUES_VERTICA = 'vertica'; +const TMP_DBSYSTEMVALUES_H2 = 'h2'; +const TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion'; +const TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra'; +const TMP_DBSYSTEMVALUES_HBASE = 'hbase'; +const TMP_DBSYSTEMVALUES_MONGODB = 'mongodb'; +const TMP_DBSYSTEMVALUES_REDIS = 'redis'; +const TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase'; +const TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb'; +const TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb'; +const TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb'; +const TMP_DBSYSTEMVALUES_NEO4J = 'neo4j'; +const TMP_DBSYSTEMVALUES_GEODE = 'geode'; +const TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch'; +const TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached'; +const TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb'; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED; +/** + * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. + * + * @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}). + */ +exports.DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB; +/** + * The constant map of values for DbSystemValues. + * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification. + */ +exports.DbSystemValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_DBSYSTEMVALUES_OTHER_SQL, + TMP_DBSYSTEMVALUES_MSSQL, + TMP_DBSYSTEMVALUES_MYSQL, + TMP_DBSYSTEMVALUES_ORACLE, + TMP_DBSYSTEMVALUES_DB2, + TMP_DBSYSTEMVALUES_POSTGRESQL, + TMP_DBSYSTEMVALUES_REDSHIFT, + TMP_DBSYSTEMVALUES_HIVE, + TMP_DBSYSTEMVALUES_CLOUDSCAPE, + TMP_DBSYSTEMVALUES_HSQLDB, + TMP_DBSYSTEMVALUES_PROGRESS, + TMP_DBSYSTEMVALUES_MAXDB, + TMP_DBSYSTEMVALUES_HANADB, + TMP_DBSYSTEMVALUES_INGRES, + TMP_DBSYSTEMVALUES_FIRSTSQL, + TMP_DBSYSTEMVALUES_EDB, + TMP_DBSYSTEMVALUES_CACHE, + TMP_DBSYSTEMVALUES_ADABAS, + TMP_DBSYSTEMVALUES_FIREBIRD, + TMP_DBSYSTEMVALUES_DERBY, + TMP_DBSYSTEMVALUES_FILEMAKER, + TMP_DBSYSTEMVALUES_INFORMIX, + TMP_DBSYSTEMVALUES_INSTANTDB, + TMP_DBSYSTEMVALUES_INTERBASE, + TMP_DBSYSTEMVALUES_MARIADB, + TMP_DBSYSTEMVALUES_NETEZZA, + TMP_DBSYSTEMVALUES_PERVASIVE, + TMP_DBSYSTEMVALUES_POINTBASE, + TMP_DBSYSTEMVALUES_SQLITE, + TMP_DBSYSTEMVALUES_SYBASE, + TMP_DBSYSTEMVALUES_TERADATA, + TMP_DBSYSTEMVALUES_VERTICA, + TMP_DBSYSTEMVALUES_H2, + TMP_DBSYSTEMVALUES_COLDFUSION, + TMP_DBSYSTEMVALUES_CASSANDRA, + TMP_DBSYSTEMVALUES_HBASE, + TMP_DBSYSTEMVALUES_MONGODB, + TMP_DBSYSTEMVALUES_REDIS, + TMP_DBSYSTEMVALUES_COUCHBASE, + TMP_DBSYSTEMVALUES_COUCHDB, + TMP_DBSYSTEMVALUES_COSMOSDB, + TMP_DBSYSTEMVALUES_DYNAMODB, + TMP_DBSYSTEMVALUES_NEO4J, + TMP_DBSYSTEMVALUES_GEODE, + TMP_DBSYSTEMVALUES_ELASTICSEARCH, + TMP_DBSYSTEMVALUES_MEMCACHED, + TMP_DBSYSTEMVALUES_COCKROACHDB, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for DbCassandraConsistencyLevelValues enum definition + * + * 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). + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial'; +const TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial'; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_ALL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_TWO = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_THREE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_ANY = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL; +/** + * 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). + * + * @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}). + */ +exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL; +/** + * The constant map of values for DbCassandraConsistencyLevelValues. + * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification. + */ +exports.DbCassandraConsistencyLevelValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL, + TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for FaasTriggerValues enum definition + * + * Type of the trigger on which the function is executed. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource'; +const TMP_FAASTRIGGERVALUES_HTTP = 'http'; +const TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub'; +const TMP_FAASTRIGGERVALUES_TIMER = 'timer'; +const TMP_FAASTRIGGERVALUES_OTHER = 'other'; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +exports.FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +exports.FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +exports.FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +exports.FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER; +/** + * Type of the trigger on which the function is executed. + * + * @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}). + */ +exports.FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER; +/** + * The constant map of values for FaasTriggerValues. + * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification. + */ +exports.FaasTriggerValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_FAASTRIGGERVALUES_DATASOURCE, + TMP_FAASTRIGGERVALUES_HTTP, + TMP_FAASTRIGGERVALUES_PUBSUB, + TMP_FAASTRIGGERVALUES_TIMER, + TMP_FAASTRIGGERVALUES_OTHER, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for FaasDocumentOperationValues enum definition + * + * Describes the type of the operation that was performed on the data. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert'; +const TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit'; +const TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete'; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +exports.FAASDOCUMENTOPERATIONVALUES_INSERT = TMP_FAASDOCUMENTOPERATIONVALUES_INSERT; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +exports.FAASDOCUMENTOPERATIONVALUES_EDIT = TMP_FAASDOCUMENTOPERATIONVALUES_EDIT; +/** + * Describes the type of the operation that was performed on the data. + * + * @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}). + */ +exports.FAASDOCUMENTOPERATIONVALUES_DELETE = TMP_FAASDOCUMENTOPERATIONVALUES_DELETE; +/** + * The constant map of values for FaasDocumentOperationValues. + * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification. + */ +exports.FaasDocumentOperationValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_FAASDOCUMENTOPERATIONVALUES_INSERT, + TMP_FAASDOCUMENTOPERATIONVALUES_EDIT, + TMP_FAASDOCUMENTOPERATIONVALUES_DELETE, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for FaasInvokedProviderValues enum definition + * + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud'; +const TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws'; +const TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure'; +const TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp'; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +exports.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +exports.FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +exports.FAASINVOKEDPROVIDERVALUES_AZURE = TMP_FAASINVOKEDPROVIDERVALUES_AZURE; +/** + * The cloud provider of the invoked function. + * + * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. + * + * @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}). + */ +exports.FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP; +/** + * The constant map of values for FaasInvokedProviderValues. + * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification. + */ +exports.FaasInvokedProviderValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD, + TMP_FAASINVOKEDPROVIDERVALUES_AWS, + TMP_FAASINVOKEDPROVIDERVALUES_AZURE, + TMP_FAASINVOKEDPROVIDERVALUES_GCP, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for NetTransportValues enum definition + * + * Transport protocol used. See note below. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp'; +const TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp'; +const TMP_NETTRANSPORTVALUES_IP = 'ip'; +const TMP_NETTRANSPORTVALUES_UNIX = 'unix'; +const TMP_NETTRANSPORTVALUES_PIPE = 'pipe'; +const TMP_NETTRANSPORTVALUES_INPROC = 'inproc'; +const TMP_NETTRANSPORTVALUES_OTHER = 'other'; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +exports.NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +exports.NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +exports.NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP; +/** + * Transport protocol used. See note below. + * + * @deprecated Removed in v1.21.0. + */ +exports.NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +exports.NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +exports.NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC; +/** + * Transport protocol used. See note below. + * + * @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}). + */ +exports.NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER; +/** + * The constant map of values for NetTransportValues. + * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification. + */ +exports.NetTransportValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_NETTRANSPORTVALUES_IP_TCP, + TMP_NETTRANSPORTVALUES_IP_UDP, + TMP_NETTRANSPORTVALUES_IP, + TMP_NETTRANSPORTVALUES_UNIX, + TMP_NETTRANSPORTVALUES_PIPE, + TMP_NETTRANSPORTVALUES_INPROC, + TMP_NETTRANSPORTVALUES_OTHER, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for NetHostConnectionTypeValues enum definition + * + * The internet connection type currently being used by the host. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable'; +const TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown'; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +exports.NETHOSTCONNECTIONTYPEVALUES_WIFI = TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +exports.NETHOSTCONNECTIONTYPEVALUES_WIRED = TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +exports.NETHOSTCONNECTIONTYPEVALUES_CELL = TMP_NETHOSTCONNECTIONTYPEVALUES_CELL; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +exports.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE; +/** + * The internet connection type currently being used by the host. + * + * @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}). + */ +exports.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN; +/** + * The constant map of values for NetHostConnectionTypeValues. + * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification. + */ +exports.NetHostConnectionTypeValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI, + TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED, + TMP_NETHOSTCONNECTIONTYPEVALUES_CELL, + TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE, + TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for NetHostConnectionSubtypeValues enum definition + * + * 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. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa'; +const TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca'; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_GSM = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_NR = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA; +/** + * 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. + * + * @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}). + */ +exports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA; +/** + * The constant map of values for NetHostConnectionSubtypeValues. + * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification. + */ +exports.NetHostConnectionSubtypeValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA, + TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for HttpFlavorValues enum definition + * + * Kind of HTTP protocol used. + * + * 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. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0'; +const TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1'; +const TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0'; +const TMP_HTTPFLAVORVALUES_SPDY = 'SPDY'; +const TMP_HTTPFLAVORVALUES_QUIC = 'QUIC'; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +exports.HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +exports.HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +exports.HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +exports.HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY; +/** + * Kind of HTTP protocol used. + * + * 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. + * + * @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}). + */ +exports.HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC; +/** + * The constant map of values for HttpFlavorValues. + * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification. + */ +exports.HttpFlavorValues = { + HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0, + HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1, + HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0, + SPDY: TMP_HTTPFLAVORVALUES_SPDY, + QUIC: TMP_HTTPFLAVORVALUES_QUIC, +}; +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for MessagingDestinationKindValues enum definition + * + * The kind of message destination. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue'; +const TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic'; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +exports.MESSAGINGDESTINATIONKINDVALUES_QUEUE = TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE; +/** + * The kind of message destination. + * + * @deprecated Removed in semconv v1.20.0. + */ +exports.MESSAGINGDESTINATIONKINDVALUES_TOPIC = TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC; +/** + * The constant map of values for MessagingDestinationKindValues. + * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification. + */ +exports.MessagingDestinationKindValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE, + TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for MessagingOperationValues enum definition + * + * 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. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive'; +const TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process'; +/** + * 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. + * + * @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}). + */ +exports.MESSAGINGOPERATIONVALUES_RECEIVE = TMP_MESSAGINGOPERATIONVALUES_RECEIVE; +/** + * 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. + * + * @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}). + */ +exports.MESSAGINGOPERATIONVALUES_PROCESS = TMP_MESSAGINGOPERATIONVALUES_PROCESS; +/** + * The constant map of values for MessagingOperationValues. + * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification. + */ +exports.MessagingOperationValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_MESSAGINGOPERATIONVALUES_RECEIVE, + TMP_MESSAGINGOPERATIONVALUES_PROCESS, +]); +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for RpcGrpcStatusCodeValues enum definition + * + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_RPCGRPCSTATUSCODEVALUES_OK = 0; +const TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1; +const TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2; +const TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3; +const TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4; +const TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5; +const TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6; +const TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7; +const TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8; +const TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9; +const TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10; +const TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11; +const TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12; +const TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13; +const TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14; +const TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15; +const TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_CANCELLED = TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_UNKNOWN = TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_NOT_FOUND = TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_ABORTED = TMP_RPCGRPCSTATUSCODEVALUES_ABORTED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_INTERNAL = TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_DATA_LOSS = TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS; +/** + * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + * + * @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}). + */ +exports.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED; +/** + * The constant map of values for RpcGrpcStatusCodeValues. + * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification. + */ +exports.RpcGrpcStatusCodeValues = { + OK: TMP_RPCGRPCSTATUSCODEVALUES_OK, + CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED, + UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN, + INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT, + DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED, + NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND, + ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS, + PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED, + RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED, + FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION, + ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED, + OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE, + UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED, + INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL, + UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE, + DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS, + UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED, +}; +/* ---------------------------------------------------------------------------------------------------------- + * Constant values for MessageTypeValues enum definition + * + * Whether this is a received or sent message. + * ---------------------------------------------------------------------------------------------------------- */ +// Temporary local constants to assign to the individual exports and the namespaced version +// Required to avoid the namespace exports using the unminifiable export names for some package types +const TMP_MESSAGETYPEVALUES_SENT = 'SENT'; +const TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED'; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +exports.MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT; +/** + * Whether this is a received or sent message. + * + * @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}). + */ +exports.MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED; +/** + * The constant map of values for MessageTypeValues. + * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification. + */ +exports.MessageTypeValues = +/*#__PURE__*/ (0, utils_1.createConstMap)([ + TMP_MESSAGETYPEVALUES_SENT, + TMP_MESSAGETYPEVALUES_RECEIVED, +]); +//# sourceMappingURL=SemanticAttributes.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.js.map new file mode 100644 index 0000000..81400da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SemanticAttributes.js","sourceRoot":"","sources":["../../../src/trace/SemanticAttributes.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\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 =\n '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 =\n 'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n '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 =\n 'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n 'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n '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 =\n 'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n 'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n '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 =\n 'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n '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 =\n 'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n '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/**\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 */\nexport const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n\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 */\nexport const SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n\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 */\nexport const SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n\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 */\nexport const SEMATTRS_DB_USER = TMP_DB_USER;\n\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 */\nexport const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n\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 */\nexport const SEMATTRS_DB_NAME = TMP_DB_NAME;\n\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 */\nexport const SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n\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 */\nexport const SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n\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 */\nexport const SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL =\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID =\n TMP_DB_CASSANDRA_COORDINATOR_ID;\n\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 */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC =\n TMP_DB_CASSANDRA_COORDINATOR_DC;\n\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 */\nexport const SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n\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 */\nexport const SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n\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 */\nexport const SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n\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 */\nexport const SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n\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 */\nexport const SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport const SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n\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 */\nexport const SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n\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*/\nexport const SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n\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 */\nexport const SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n\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 */\nexport const SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n\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 */\nexport const SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n\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 */\nexport const SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n\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 */\nexport const SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n\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 */\nexport const SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n\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 */\nexport const SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n\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 */\nexport const SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n\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 */\nexport const SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n\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 */\nexport const SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n\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 */\nexport const SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n\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 */\nexport const SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n\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 */\nexport const SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n\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 */\nexport const SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n\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 */\nexport const SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n\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 */\nexport const SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n\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 */\nexport const SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n\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 */\nexport const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE =\n TMP_NET_HOST_CONNECTION_SUBTYPE;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n\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 */\nexport const SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n\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 */\nexport const SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n\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 */\nexport const SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n\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 */\nexport const SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n\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 */\nexport const SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n\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 */\nexport const SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n\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 */\nexport const SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n\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 */\nexport const SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n\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 */\nexport const SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n\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 */\nexport const SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n\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 */\nexport const SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n\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 */\nexport const SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n\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 */\nexport const SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n\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 */\nexport const SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n\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 */\nexport const SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n\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 */\nexport const SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n\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 */\nexport const SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n\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 */\nexport const SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n\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 */\nexport const SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n\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 */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH =\n TMP_HTTP_REQUEST_CONTENT_LENGTH;\n\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 */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n\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 */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n\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 */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n\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 */\nexport const SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport const SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n\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*/\nexport const SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY =\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ =\n TMP_AWS_DYNAMODB_CONSISTENT_READ;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET =\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS =\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT =\n TMP_AWS_DYNAMODB_SCANNED_COUNT;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n\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 */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n\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 */\nexport const SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\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 */\nexport const SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const SEMATTRS_MESSAGING_DESTINATION_KIND =\n TMP_MESSAGING_DESTINATION_KIND;\n\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 */\nexport const SEMATTRS_MESSAGING_TEMP_DESTINATION =\n TMP_MESSAGING_TEMP_DESTINATION;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL_VERSION =\n TMP_MESSAGING_PROTOCOL_VERSION;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n\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 */\nexport const SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n\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 */\nexport const SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n\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 */\nexport const SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY =\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY =\n TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP =\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n\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 */\nexport const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n\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 */\nexport const SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n\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 */\nexport const SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n\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 */\nexport const SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n\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 */\nexport const SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n\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 */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n\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 */\nexport const SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n\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 */\nexport const SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n\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 */\nexport const SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n\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 */\nexport const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n\n/**\n * Definition of available values for SemanticAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification.\n */\nexport type SemanticAttributes = {\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 AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn';\n\n /**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\n DB_SYSTEM: 'db.system';\n\n /**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n */\n DB_CONNECTION_STRING: 'db.connection_string';\n\n /**\n * Username for accessing the database.\n */\n DB_USER: 'db.user';\n\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 DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname';\n\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 DB_NAME: 'db.name';\n\n /**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n */\n DB_STATEMENT: 'db.statement';\n\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 DB_OPERATION: 'db.operation';\n\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 DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name';\n\n /**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n */\n DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace';\n\n /**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n */\n DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size';\n\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 DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level';\n\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 DB_CASSANDRA_TABLE: 'db.cassandra.table';\n\n /**\n * Whether or not the query is idempotent.\n */\n DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence';\n\n /**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n */\n DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count';\n\n /**\n * The ID of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id';\n\n /**\n * The data center of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc';\n\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 DB_HBASE_NAMESPACE: 'db.hbase.namespace';\n\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 DB_REDIS_DATABASE_INDEX: 'db.redis.database_index';\n\n /**\n * The collection being accessed within the database stated in `db.name`.\n */\n DB_MONGODB_COLLECTION: 'db.mongodb.collection';\n\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 DB_SQL_TABLE: 'db.sql.table';\n\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 EXCEPTION_TYPE: 'exception.type';\n\n /**\n * The exception message.\n */\n EXCEPTION_MESSAGE: 'exception.message';\n\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 EXCEPTION_STACKTRACE: 'exception.stacktrace';\n\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 EXCEPTION_ESCAPED: 'exception.escaped';\n\n /**\n * Type of the trigger on which the function is executed.\n */\n FAAS_TRIGGER: 'faas.trigger';\n\n /**\n * The execution ID of the current function execution.\n */\n FAAS_EXECUTION: 'faas.execution';\n\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 FAAS_DOCUMENT_COLLECTION: 'faas.document.collection';\n\n /**\n * Describes the type of the operation that was performed on the data.\n */\n FAAS_DOCUMENT_OPERATION: 'faas.document.operation';\n\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 FAAS_DOCUMENT_TIME: 'faas.document.time';\n\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 FAAS_DOCUMENT_NAME: 'faas.document.name';\n\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 FAAS_TIME: 'faas.time';\n\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 FAAS_CRON: 'faas.cron';\n\n /**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n */\n FAAS_COLDSTART: 'faas.coldstart';\n\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 FAAS_INVOKED_NAME: 'faas.invoked_name';\n\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 FAAS_INVOKED_PROVIDER: 'faas.invoked_provider';\n\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 FAAS_INVOKED_REGION: 'faas.invoked_region';\n\n /**\n * Transport protocol used. See note below.\n */\n NET_TRANSPORT: 'net.transport';\n\n /**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n */\n NET_PEER_IP: 'net.peer.ip';\n\n /**\n * Remote port number.\n */\n NET_PEER_PORT: 'net.peer.port';\n\n /**\n * Remote hostname or similar, see note below.\n */\n NET_PEER_NAME: 'net.peer.name';\n\n /**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n */\n NET_HOST_IP: 'net.host.ip';\n\n /**\n * Like `net.peer.port` but for the host port.\n */\n NET_HOST_PORT: 'net.host.port';\n\n /**\n * Local hostname or similar, see note below.\n */\n NET_HOST_NAME: 'net.host.name';\n\n /**\n * The internet connection type currently being used by the host.\n */\n NET_HOST_CONNECTION_TYPE: 'net.host.connection.type';\n\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 NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype';\n\n /**\n * The name of the mobile carrier.\n */\n NET_HOST_CARRIER_NAME: 'net.host.carrier.name';\n\n /**\n * The mobile carrier country code.\n */\n NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc';\n\n /**\n * The mobile carrier network code.\n */\n NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc';\n\n /**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n */\n NET_HOST_CARRIER_ICC: 'net.host.carrier.icc';\n\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 PEER_SERVICE: 'peer.service';\n\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 ENDUSER_ID: 'enduser.id';\n\n /**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n */\n ENDUSER_ROLE: 'enduser.role';\n\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 ENDUSER_SCOPE: 'enduser.scope';\n\n /**\n * Current "managed" thread ID (as opposed to OS thread ID).\n */\n THREAD_ID: 'thread.id';\n\n /**\n * Current thread name.\n */\n THREAD_NAME: 'thread.name';\n\n /**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n */\n CODE_FUNCTION: 'code.function';\n\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 CODE_NAMESPACE: 'code.namespace';\n\n /**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n */\n CODE_FILEPATH: 'code.filepath';\n\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 CODE_LINENO: 'code.lineno';\n\n /**\n * HTTP request method.\n */\n HTTP_METHOD: 'http.method';\n\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 HTTP_URL: 'http.url';\n\n /**\n * The full request target as passed in a HTTP request line or equivalent.\n */\n HTTP_TARGET: 'http.target';\n\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 HTTP_HOST: 'http.host';\n\n /**\n * The URI scheme identifying the used protocol.\n */\n HTTP_SCHEME: 'http.scheme';\n\n /**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n */\n HTTP_STATUS_CODE: 'http.status_code';\n\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 HTTP_FLAVOR: 'http.flavor';\n\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 HTTP_USER_AGENT: 'http.user_agent';\n\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 HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length';\n\n /**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed';\n\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 HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length';\n\n /**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed';\n\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 HTTP_SERVER_NAME: 'http.server_name';\n\n /**\n * The matched route (path template).\n */\n HTTP_ROUTE: 'http.route';\n\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 HTTP_CLIENT_IP: 'http.client_ip';\n\n /**\n * The keys in the `RequestItems` object field.\n */\n AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names';\n\n /**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n */\n AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity';\n\n /**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n */\n AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics';\n\n /**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity';\n\n /**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity';\n\n /**\n * The value of the `ConsistentRead` request parameter.\n */\n AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read';\n\n /**\n * The value of the `ProjectionExpression` request parameter.\n */\n AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection';\n\n /**\n * The value of the `Limit` request parameter.\n */\n AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit';\n\n /**\n * The value of the `AttributesToGet` request parameter.\n */\n AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get';\n\n /**\n * The value of the `IndexName` request parameter.\n */\n AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name';\n\n /**\n * The value of the `Select` request parameter.\n */\n AWS_DYNAMODB_SELECT: 'aws.dynamodb.select';\n\n /**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes';\n\n /**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes';\n\n /**\n * The value of the `ExclusiveStartTableName` request parameter.\n */\n AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table';\n\n /**\n * The the number of items in the `TableNames` response parameter.\n */\n AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count';\n\n /**\n * The value of the `ScanIndexForward` request parameter.\n */\n AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward';\n\n /**\n * The value of the `Segment` request parameter.\n */\n AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment';\n\n /**\n * The value of the `TotalSegments` request parameter.\n */\n AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments';\n\n /**\n * The value of the `Count` response parameter.\n */\n AWS_DYNAMODB_COUNT: 'aws.dynamodb.count';\n\n /**\n * The value of the `ScannedCount` response parameter.\n */\n AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count';\n\n /**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n */\n AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions';\n\n /**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates';\n\n /**\n * A string identifying the messaging system.\n */\n MESSAGING_SYSTEM: 'messaging.system';\n\n /**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n */\n MESSAGING_DESTINATION: 'messaging.destination';\n\n /**\n * The kind of message destination.\n */\n MESSAGING_DESTINATION_KIND: 'messaging.destination_kind';\n\n /**\n * A boolean that is true if the message destination is temporary.\n */\n MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination';\n\n /**\n * The name of the transport protocol.\n */\n MESSAGING_PROTOCOL: 'messaging.protocol';\n\n /**\n * The version of the transport protocol.\n */\n MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version';\n\n /**\n * Connection string.\n */\n MESSAGING_URL: 'messaging.url';\n\n /**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n */\n MESSAGING_MESSAGE_ID: 'messaging.message_id';\n\n /**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n */\n MESSAGING_CONVERSATION_ID: 'messaging.conversation_id';\n\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 MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes';\n\n /**\n * The compressed size of the message payload in bytes.\n */\n MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes';\n\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 MESSAGING_OPERATION: 'messaging.operation';\n\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 MESSAGING_CONSUMER_ID: 'messaging.consumer_id';\n\n /**\n * RabbitMQ message routing key.\n */\n MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key';\n\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 MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key';\n\n /**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n */\n MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group';\n\n /**\n * Client Id for the Consumer or Producer that is handling the message.\n */\n MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id';\n\n /**\n * Partition the message is sent to.\n */\n MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition';\n\n /**\n * A boolean that is true if the message is a tombstone.\n */\n MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone';\n\n /**\n * A string identifying the remoting system.\n */\n RPC_SYSTEM: 'rpc.system';\n\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 RPC_SERVICE: 'rpc.service';\n\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 RPC_METHOD: 'rpc.method';\n\n /**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\n RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code';\n\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 RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version';\n\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 RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id';\n\n /**\n * `error.code` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code';\n\n /**\n * `error.message` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message';\n\n /**\n * Whether this is a received or sent message.\n */\n MESSAGE_TYPE: 'message.type';\n\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 MESSAGE_ID: 'message.id';\n\n /**\n * Compressed size of the message in bytes.\n */\n MESSAGE_COMPRESSED_SIZE: 'message.compressed_size';\n\n /**\n * Uncompressed size of the message in bytes.\n */\n MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size';\n};\n\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 */\nexport const SemanticAttributes: SemanticAttributes =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n\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 */\nexport const DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n\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 */\nexport const DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n\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 */\nexport const DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n\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 */\nexport const DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n\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 */\nexport const DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n\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 */\nexport const DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n\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 */\nexport const DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n\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 */\nexport const DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n\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 */\nexport const DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n\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 */\nexport const DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n\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 */\nexport const DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n\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 */\nexport const DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n\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 */\nexport const DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n\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 */\nexport const DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n\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 */\nexport const DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n\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 */\nexport const DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n\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 */\nexport const DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n\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 */\nexport const DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n\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 */\nexport const DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n\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 */\nexport const DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n\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 */\nexport const DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n\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 */\nexport const DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n\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 */\nexport const DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n\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 */\nexport const DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n\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 */\nexport const DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n\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 */\nexport const DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n\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 */\nexport const DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n\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 */\nexport const DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n\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 */\nexport const DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n\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 */\nexport const DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n\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 */\nexport const DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n\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 */\nexport const DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n\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 */\nexport const DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n\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 */\nexport const DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n\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 */\nexport const DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n\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 */\nexport const DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n\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 */\nexport const DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n\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 */\nexport const DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n\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 */\nexport const DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n\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 */\nexport const DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n\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 */\nexport const DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n\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 */\nexport const DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n\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 */\nexport const DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n\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 */\nexport const DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n\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 */\nexport const DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n\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 */\nexport const DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n\n/**\n * Identifies the 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 * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport type DbSystemValues = {\n /** Some other SQL database. Fallback only. See notes. */\n OTHER_SQL: 'other_sql';\n\n /** Microsoft SQL Server. */\n MSSQL: 'mssql';\n\n /** MySQL. */\n MYSQL: 'mysql';\n\n /** Oracle Database. */\n ORACLE: 'oracle';\n\n /** IBM Db2. */\n DB2: 'db2';\n\n /** PostgreSQL. */\n POSTGRESQL: 'postgresql';\n\n /** Amazon Redshift. */\n REDSHIFT: 'redshift';\n\n /** Apache Hive. */\n HIVE: 'hive';\n\n /** Cloudscape. */\n CLOUDSCAPE: 'cloudscape';\n\n /** HyperSQL DataBase. */\n HSQLDB: 'hsqldb';\n\n /** Progress Database. */\n PROGRESS: 'progress';\n\n /** SAP MaxDB. */\n MAXDB: 'maxdb';\n\n /** SAP HANA. */\n HANADB: 'hanadb';\n\n /** Ingres. */\n INGRES: 'ingres';\n\n /** FirstSQL. */\n FIRSTSQL: 'firstsql';\n\n /** EnterpriseDB. */\n EDB: 'edb';\n\n /** InterSystems Caché. */\n CACHE: 'cache';\n\n /** Adabas (Adaptable Database System). */\n ADABAS: 'adabas';\n\n /** Firebird. */\n FIREBIRD: 'firebird';\n\n /** Apache Derby. */\n DERBY: 'derby';\n\n /** FileMaker. */\n FILEMAKER: 'filemaker';\n\n /** Informix. */\n INFORMIX: 'informix';\n\n /** InstantDB. */\n INSTANTDB: 'instantdb';\n\n /** InterBase. */\n INTERBASE: 'interbase';\n\n /** MariaDB. */\n MARIADB: 'mariadb';\n\n /** Netezza. */\n NETEZZA: 'netezza';\n\n /** Pervasive PSQL. */\n PERVASIVE: 'pervasive';\n\n /** PointBase. */\n POINTBASE: 'pointbase';\n\n /** SQLite. */\n SQLITE: 'sqlite';\n\n /** Sybase. */\n SYBASE: 'sybase';\n\n /** Teradata. */\n TERADATA: 'teradata';\n\n /** Vertica. */\n VERTICA: 'vertica';\n\n /** H2. */\n H2: 'h2';\n\n /** ColdFusion IMQ. */\n COLDFUSION: 'coldfusion';\n\n /** Apache Cassandra. */\n CASSANDRA: 'cassandra';\n\n /** Apache HBase. */\n HBASE: 'hbase';\n\n /** MongoDB. */\n MONGODB: 'mongodb';\n\n /** Redis. */\n REDIS: 'redis';\n\n /** Couchbase. */\n COUCHBASE: 'couchbase';\n\n /** CouchDB. */\n COUCHDB: 'couchdb';\n\n /** Microsoft Azure Cosmos DB. */\n COSMOSDB: 'cosmosdb';\n\n /** Amazon DynamoDB. */\n DYNAMODB: 'dynamodb';\n\n /** Neo4j. */\n NEO4J: 'neo4j';\n\n /** Apache Geode. */\n GEODE: 'geode';\n\n /** Elasticsearch. */\n ELASTICSEARCH: 'elasticsearch';\n\n /** Memcached. */\n MEMCACHED: 'memcached';\n\n /** CockroachDB. */\n COCKROACHDB: 'cockroachdb';\n};\n\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 */\nexport const DbSystemValues: DbSystemValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ALL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_TWO =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_THREE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ANY =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n\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 */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n\n/**\n * Identifies the 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 * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport type DbCassandraConsistencyLevelValues = {\n /** all. */\n ALL: 'all';\n\n /** each_quorum. */\n EACH_QUORUM: 'each_quorum';\n\n /** quorum. */\n QUORUM: 'quorum';\n\n /** local_quorum. */\n LOCAL_QUORUM: 'local_quorum';\n\n /** one. */\n ONE: 'one';\n\n /** two. */\n TWO: 'two';\n\n /** three. */\n THREE: 'three';\n\n /** local_one. */\n LOCAL_ONE: 'local_one';\n\n /** any. */\n ANY: 'any';\n\n /** serial. */\n SERIAL: 'serial';\n\n /** local_serial. */\n LOCAL_SERIAL: 'local_serial';\n};\n\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 */\nexport const DbCassandraConsistencyLevelValues: DbCassandraConsistencyLevelValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n\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 */\nexport const FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n\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 */\nexport const FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n\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 */\nexport const FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n\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 */\nexport const FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n\n/**\n * Identifies the Values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport type FaasTriggerValues = {\n /** A response to some data source operation such as a database or filesystem read/write. */\n DATASOURCE: 'datasource';\n\n /** To provide an answer to an inbound HTTP request. */\n HTTP: 'http';\n\n /** A function is set to be executed when messages are sent to a messaging system. */\n PUBSUB: 'pubsub';\n\n /** A function is scheduled to be executed regularly. */\n TIMER: 'timer';\n\n /** If none of the others apply. */\n OTHER: 'other';\n};\n\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 */\nexport const FaasTriggerValues: FaasTriggerValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASTRIGGERVALUES_DATASOURCE,\n TMP_FAASTRIGGERVALUES_HTTP,\n TMP_FAASTRIGGERVALUES_PUBSUB,\n TMP_FAASTRIGGERVALUES_TIMER,\n TMP_FAASTRIGGERVALUES_OTHER,\n ]);\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\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/**\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 */\nexport const FAASDOCUMENTOPERATIONVALUES_INSERT =\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n\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 */\nexport const FAASDOCUMENTOPERATIONVALUES_EDIT =\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n\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 */\nexport const FAASDOCUMENTOPERATIONVALUES_DELETE =\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n\n/**\n * Identifies the Values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport type FaasDocumentOperationValues = {\n /** When a new object is created. */\n INSERT: 'insert';\n\n /** When an object is modified. */\n EDIT: 'edit';\n\n /** When an object is deleted. */\n DELETE: 'delete';\n};\n\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 */\nexport const FaasDocumentOperationValues: FaasDocumentOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n ]);\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\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/**\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 */\nexport const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n\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 */\nexport const FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n\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 */\nexport const FAASINVOKEDPROVIDERVALUES_AZURE =\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n\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 */\nexport const FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the 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 * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport type FaasInvokedProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\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 */\nexport const FaasInvokedProviderValues: FaasInvokedProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n\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 */\nexport const NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n\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 */\nexport const NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n\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 */\nexport const NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n\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 */\nexport const NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n\n/**\n * Identifies the Values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport type NetTransportValues = {\n /** ip_tcp. */\n IP_TCP: 'ip_tcp';\n\n /** ip_udp. */\n IP_UDP: 'ip_udp';\n\n /** Another IP-based protocol. */\n IP: 'ip';\n\n /** Unix Domain socket. See below. */\n UNIX: 'unix';\n\n /** Named or anonymous pipe. See note below. */\n PIPE: 'pipe';\n\n /** In-process communication. */\n INPROC: 'inproc';\n\n /** Something else (non IP-based). */\n OTHER: 'other';\n};\n\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 */\nexport const NetTransportValues: NetTransportValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIFI =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIRED =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_CELL =\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n\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 */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n\n/**\n * Identifies the Values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionTypeValues = {\n /** wifi. */\n WIFI: 'wifi';\n\n /** wired. */\n WIRED: 'wired';\n\n /** cell. */\n CELL: 'cell';\n\n /** unavailable. */\n UNAVAILABLE: 'unavailable';\n\n /** unknown. */\n UNKNOWN: 'unknown';\n};\n\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 */\nexport const NetHostConnectionTypeValues: NetHostConnectionTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n ]);\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\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/**\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GSM =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NR =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n\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 */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n\n/**\n * Identifies the 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 * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionSubtypeValues = {\n /** GPRS. */\n GPRS: 'gprs';\n\n /** EDGE. */\n EDGE: 'edge';\n\n /** UMTS. */\n UMTS: 'umts';\n\n /** CDMA. */\n CDMA: 'cdma';\n\n /** EVDO Rel. 0. */\n EVDO_0: 'evdo_0';\n\n /** EVDO Rev. A. */\n EVDO_A: 'evdo_a';\n\n /** CDMA2000 1XRTT. */\n CDMA2000_1XRTT: 'cdma2000_1xrtt';\n\n /** HSDPA. */\n HSDPA: 'hsdpa';\n\n /** HSUPA. */\n HSUPA: 'hsupa';\n\n /** HSPA. */\n HSPA: 'hspa';\n\n /** IDEN. */\n IDEN: 'iden';\n\n /** EVDO Rev. B. */\n EVDO_B: 'evdo_b';\n\n /** LTE. */\n LTE: 'lte';\n\n /** EHRPD. */\n EHRPD: 'ehrpd';\n\n /** HSPAP. */\n HSPAP: 'hspap';\n\n /** GSM. */\n GSM: 'gsm';\n\n /** TD-SCDMA. */\n TD_SCDMA: 'td_scdma';\n\n /** IWLAN. */\n IWLAN: 'iwlan';\n\n /** 5G NR (New Radio). */\n NR: 'nr';\n\n /** 5G NRNSA (New Radio Non-Standalone). */\n NRNSA: 'nrnsa';\n\n /** LTE CA. */\n LTE_CA: 'lte_ca';\n};\n\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 */\nexport const NetHostConnectionSubtypeValues: NetHostConnectionSubtypeValues =\n /*#__PURE__*/ 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/* ----------------------------------------------------------------------------------------------------------\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\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/**\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 */\nexport const HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n\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 */\nexport const HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n\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 */\nexport const HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n\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 */\nexport const HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n\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 */\nexport const HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n\n/**\n * Identifies the 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 * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport type HttpFlavorValues = {\n /** HTTP 1.0. */\n HTTP_1_0: '1.0';\n\n /** HTTP 1.1. */\n HTTP_1_1: '1.1';\n\n /** HTTP 2. */\n HTTP_2_0: '2.0';\n\n /** SPDY protocol. */\n SPDY: 'SPDY';\n\n /** QUIC protocol. */\n QUIC: 'QUIC';\n};\n\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 */\nexport const HttpFlavorValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_QUEUE =\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_TOPIC =\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n\n/**\n * Identifies the Values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport type MessagingDestinationKindValues = {\n /** A message sent to a queue. */\n QUEUE: 'queue';\n\n /** A message sent to a topic. */\n TOPIC: 'topic';\n};\n\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 */\nexport const MessagingDestinationKindValues: MessagingDestinationKindValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n ]);\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\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/**\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 */\nexport const MESSAGINGOPERATIONVALUES_RECEIVE =\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n\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 */\nexport const MESSAGINGOPERATIONVALUES_PROCESS =\n TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n\n/**\n * Identifies the 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 * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport type MessagingOperationValues = {\n /** receive. */\n RECEIVE: 'receive';\n\n /** process. */\n PROCESS: 'process';\n};\n\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 */\nexport const MessagingOperationValues: MessagingOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n ]);\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\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/**\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 */\nexport const RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_CANCELLED =\n TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNKNOWN =\n TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT =\n TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED =\n TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_NOT_FOUND =\n TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS =\n TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED =\n TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED =\n TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION =\n TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_ABORTED =\n TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE =\n TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_INTERNAL =\n TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_DATA_LOSS =\n TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n\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 */\nexport const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n\n/**\n * Identifies the 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 * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport type RpcGrpcStatusCodeValues = {\n /** OK. */\n OK: 0;\n\n /** CANCELLED. */\n CANCELLED: 1;\n\n /** UNKNOWN. */\n UNKNOWN: 2;\n\n /** INVALID_ARGUMENT. */\n INVALID_ARGUMENT: 3;\n\n /** DEADLINE_EXCEEDED. */\n DEADLINE_EXCEEDED: 4;\n\n /** NOT_FOUND. */\n NOT_FOUND: 5;\n\n /** ALREADY_EXISTS. */\n ALREADY_EXISTS: 6;\n\n /** PERMISSION_DENIED. */\n PERMISSION_DENIED: 7;\n\n /** RESOURCE_EXHAUSTED. */\n RESOURCE_EXHAUSTED: 8;\n\n /** FAILED_PRECONDITION. */\n FAILED_PRECONDITION: 9;\n\n /** ABORTED. */\n ABORTED: 10;\n\n /** OUT_OF_RANGE. */\n OUT_OF_RANGE: 11;\n\n /** UNIMPLEMENTED. */\n UNIMPLEMENTED: 12;\n\n /** INTERNAL. */\n INTERNAL: 13;\n\n /** UNAVAILABLE. */\n UNAVAILABLE: 14;\n\n /** DATA_LOSS. */\n DATA_LOSS: 15;\n\n /** UNAUTHENTICATED. */\n UNAUTHENTICATED: 16;\n};\n\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 */\nexport const RpcGrpcStatusCodeValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\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/**\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 */\nexport const MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n\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 */\nexport const MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n\n/**\n * Identifies the Values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport type MessageTypeValues = {\n /** sent. */\n SENT: 'SENT';\n\n /** received. */\n RECEIVED: 'RECEIVED';\n};\n\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 */\nexport const MessageTypeValues: MessageTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGETYPEVALUES_SENT,\n TMP_MESSAGETYPEVALUES_RECEIVED,\n ]);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.d.ts new file mode 100644 index 0000000..6fc2d4d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.d.ts @@ -0,0 +1,2 @@ +export * from './SemanticAttributes'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.js new file mode 100644 index 0000000..19370d5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.js @@ -0,0 +1,37 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +/* eslint-disable no-restricted-syntax -- + * These re-exports are only of constants, only one-level deep at this point, + * and should not cause problems for tree-shakers. + */ +__exportStar(require("./SemanticAttributes"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.js.map new file mode 100644 index 0000000..7c5a368 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/trace/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;AAEH;;;GAGG;AACH,uDAAqC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/* 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 */\nexport * from './SemanticAttributes';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/version.d.ts new file mode 100644 index 0000000..3b14ba2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "1.39.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/version.js b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/version.js new file mode 100644 index 0000000..0cb0638 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '1.39.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/version.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/version.js.map new file mode 100644 index 0000000..89b65e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.39.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/package.json new file mode 100644 index 0000000..8c87349 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/semantic-conventions/package.json @@ -0,0 +1,82 @@ +{ + "name": "@opentelemetry/semantic-conventions", + "version": "1.39.0", + "description": "OpenTelemetry semantic conventions", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "types": "build/src/index.d.ts", + "exports": { + ".": { + "esnext": "./build/esnext/index.js", + "module": "./build/esm/index.js", + "types": "./build/src/index.d.ts", + "default": "./build/src/index.js" + }, + "./incubating": { + "esnext": "./build/esnext/index-incubating.js", + "module": "./build/esm/index-incubating.js", + "types": "./build/src/index-incubating.d.ts", + "default": "./build/src/index-incubating.js" + } + }, + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "version": "node ../scripts/version-update.js", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "prewatch": "npm run precompile", + "peer-api-check": "node ../scripts/peer-api-check.js", + "size-check": "npm run compile && mocha 'test/**/*.test.ts'", + "align-api-deps": "node ../scripts/align-api-deps.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "tracing", + "attributes", + "semantic conventions" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@size-limit/file": "^12.0.0", + "@size-limit/time": "^12.0.0", + "@size-limit/webpack": "^12.0.0", + "@types/mocha": "10.0.10", + "@types/node": "^14.18.63", + "@types/sinon": "17.0.4", + "mocha": "11.7.5", + "nock": "13.5.6", + "nyc": "17.1.0", + "sinon": "18.0.1", + "size-limit": "^12.0.0", + "ts-node": "10.9.2", + "typescript": "5.0.4" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions", + "sideEffects": false, + "gitHead": "4cba0197743b1dfcc81fa8fe5ecb6a310044f2f0" +} diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/LICENSE b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/README.md b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/README.md new file mode 100644 index 0000000..8a7ba44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/README.md @@ -0,0 +1,6 @@ +# Common Utils for OpenTelemetry SQL packages + +This is an internal utils package used for the different SQL instrumentations: + +1. mysql2 +2. pg diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/src/index.d.ts new file mode 100644 index 0000000..9dda754 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/src/index.d.ts @@ -0,0 +1,3 @@ +import { Span } from '@opentelemetry/api'; +export declare function addSqlCommenterComment(span: Span, query: string): string; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/src/index.js b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/src/index.js new file mode 100644 index 0000000..51714dd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/src/index.js @@ -0,0 +1,70 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.addSqlCommenterComment = void 0; +const api_1 = require("@opentelemetry/api"); +const core_1 = require("@opentelemetry/core"); +// NOTE: This function currently is returning false-positives +// in cases where comment characters appear in string literals +// ("SELECT '-- not a comment';" would return true, although has no comment) +function hasValidSqlComment(query) { + const indexOpeningDashDashComment = query.indexOf('--'); + if (indexOpeningDashDashComment >= 0) { + return true; + } + const indexOpeningSlashComment = query.indexOf('/*'); + if (indexOpeningSlashComment < 0) { + return false; + } + const indexClosingSlashComment = query.indexOf('*/'); + return indexOpeningDashDashComment < indexClosingSlashComment; +} +// sqlcommenter specification (https://google.github.io/sqlcommenter/spec/#value-serialization) +// expects us to URL encode based on the RFC 3986 spec (https://en.wikipedia.org/wiki/Percent-encoding), +// but encodeURIComponent does not handle some characters correctly (! ' ( ) *), +// which means we need special handling for this +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent +function fixedEncodeURIComponent(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`); +} +function addSqlCommenterComment(span, query) { + if (typeof query !== 'string' || query.length === 0) { + return query; + } + // As per sqlcommenter spec we shall not add a comment if there already is a comment + // in the query + if (hasValidSqlComment(query)) { + return query; + } + const propagator = new core_1.W3CTraceContextPropagator(); + const headers = {}; + propagator.inject(api_1.trace.setSpan(api_1.ROOT_CONTEXT, span), headers, api_1.defaultTextMapSetter); + // sqlcommenter spec requires keys in the comment to be sorted lexicographically + const sortedKeys = Object.keys(headers).sort(); + if (sortedKeys.length === 0) { + return query; + } + const commentString = sortedKeys + .map(key => { + const encodedValue = fixedEncodeURIComponent(headers[key]); + return `${key}='${encodedValue}'`; + }) + .join(','); + return `${query} /*${commentString}*/`; +} +exports.addSqlCommenterComment = addSqlCommenterComment; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/src/index.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/src/index.js.map new file mode 100644 index 0000000..fd2bad9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAK4B;AAC5B,8CAAgE;AAEhE,6DAA6D;AAC7D,8DAA8D;AAC9D,4EAA4E;AAC5E,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,2BAA2B,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,2BAA2B,IAAI,CAAC,EAAE;QACpC,OAAO,IAAI,CAAC;KACb;IAED,MAAM,wBAAwB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,wBAAwB,GAAG,CAAC,EAAE;QAChC,OAAO,KAAK,CAAC;KACd;IAED,MAAM,wBAAwB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO,2BAA2B,GAAG,wBAAwB,CAAC;AAChE,CAAC;AAED,+FAA+F;AAC/F,wGAAwG;AACxG,gFAAgF;AAChF,gDAAgD;AAChD,sGAAsG;AACtG,SAAS,uBAAuB,CAAC,GAAW;IAC1C,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CACpC,UAAU,EACV,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,CAAC;AACJ,CAAC;AAED,SAAgB,sBAAsB,CAAC,IAAU,EAAE,KAAa;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACnD,OAAO,KAAK,CAAC;KACd;IAED,oFAAoF;IACpF,eAAe;IACf,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;IAED,MAAM,UAAU,GAAG,IAAI,gCAAyB,EAAE,CAAC;IACnD,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,UAAU,CAAC,MAAM,CACf,WAAK,CAAC,OAAO,CAAC,kBAAY,EAAE,IAAI,CAAC,EACjC,OAAO,EACP,0BAAoB,CACrB,CAAC;IAEF,gFAAgF;IAChF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,OAAO,KAAK,CAAC;KACd;IAED,MAAM,aAAa,GAAG,UAAU;SAC7B,GAAG,CAAC,GAAG,CAAC,EAAE;QACT,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,OAAO,GAAG,GAAG,KAAK,YAAY,GAAG,CAAC;IACpC,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,GAAG,KAAK,MAAM,aAAa,IAAI,CAAC;AACzC,CAAC;AAlCD,wDAkCC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n trace,\n Span,\n ROOT_CONTEXT,\n defaultTextMapSetter,\n} from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\n\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: string): boolean {\n const indexOpeningDashDashComment = query.indexOf('--');\n if (indexOpeningDashDashComment >= 0) {\n return true;\n }\n\n const indexOpeningSlashComment = query.indexOf('/*');\n if (indexOpeningSlashComment < 0) {\n return false;\n }\n\n const indexClosingSlashComment = query.indexOf('*/');\n return indexOpeningDashDashComment < indexClosingSlashComment;\n}\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: string) {\n return encodeURIComponent(str).replace(\n /[!'()*]/g,\n c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`\n );\n}\n\nexport function addSqlCommenterComment(span: Span, query: string): string {\n if (typeof query !== 'string' || query.length === 0) {\n return query;\n }\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\n const propagator = new W3CTraceContextPropagator();\n const headers: { [key: string]: string } = {};\n propagator.inject(\n trace.setSpan(ROOT_CONTEXT, span),\n headers,\n defaultTextMapSetter\n );\n\n // sqlcommenter spec requires keys in the comment to be sorted lexicographically\n const sortedKeys = Object.keys(headers).sort();\n\n if (sortedKeys.length === 0) {\n return query;\n }\n\n const commentString = sortedKeys\n .map(key => {\n const encodedValue = fixedEncodeURIComponent(headers[key]);\n return `${key}='${encodedValue}'`;\n })\n .join(',');\n\n return `${query} /*${commentString}*/`;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/test/sql-common.test.d.ts b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/test/sql-common.test.d.ts new file mode 100644 index 0000000..203f504 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/test/sql-common.test.d.ts @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=sql-common.test.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/test/sql-common.test.js b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/test/sql-common.test.js new file mode 100644 index 0000000..c195065 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/test/sql-common.test.js @@ -0,0 +1,75 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +const assert = require("assert"); +const api_1 = require("@opentelemetry/api"); +const index_1 = require("../src/index"); +describe('addSqlCommenterComment', () => { + it('adds comment to a simple query', () => { + const spanContext = { + traceId: 'd4cda95b652f4a1592b449d5929fda1b', + spanId: '6e0c63257de34c92', + traceFlags: api_1.TraceFlags.SAMPLED, + }; + const query = 'SELECT * from FOO;'; + assert.strictEqual((0, index_1.addSqlCommenterComment)(api_1.trace.wrapSpanContext(spanContext), query), "SELECT * from FOO; /*traceparent='00-d4cda95b652f4a1592b449d5929fda1b-6e0c63257de34c92-01'*/"); + }); + it('does not add a comment if query already has a comment', () => { + const span = api_1.trace.wrapSpanContext({ + traceId: 'd4cda95b652f4a1592b449d5929fda1b', + spanId: '6e0c63257de34c92', + traceFlags: api_1.TraceFlags.SAMPLED, + }); + const blockComment = 'SELECT * from FOO; /* Test comment */'; + assert.strictEqual((0, index_1.addSqlCommenterComment)(span, blockComment), blockComment); + const dashedComment = 'SELECT * from FOO; -- Test comment'; + assert.strictEqual((0, index_1.addSqlCommenterComment)(span, dashedComment), dashedComment); + }); + it('does not add a comment to an empty query', () => { + const spanContext = { + traceId: 'd4cda95b652f4a1592b449d5929fda1b', + spanId: '6e0c63257de34c92', + traceFlags: api_1.TraceFlags.SAMPLED, + }; + assert.strictEqual((0, index_1.addSqlCommenterComment)(api_1.trace.wrapSpanContext(spanContext), ''), ''); + }); + it('does not add a comment if span context is invalid', () => { + const query = 'SELECT * from FOO;'; + assert.strictEqual((0, index_1.addSqlCommenterComment)(api_1.trace.wrapSpanContext(api_1.INVALID_SPAN_CONTEXT), query), query); + }); + it('correctly also sets trace state', () => { + const spanContext = { + traceId: 'd4cda95b652f4a1592b449d5929fda1b', + spanId: '6e0c63257de34c92', + traceFlags: api_1.TraceFlags.SAMPLED, + traceState: (0, api_1.createTraceState)('foo=bar,baz=qux'), + }; + const query = 'SELECT * from FOO;'; + assert.strictEqual((0, index_1.addSqlCommenterComment)(api_1.trace.wrapSpanContext(spanContext), query), "SELECT * from FOO; /*traceparent='00-d4cda95b652f4a1592b449d5929fda1b-6e0c63257de34c92-01',tracestate='foo%3Dbar%2Cbaz%3Dqux'*/"); + }); + it('escapes special characters in values', () => { + const spanContext = { + traceId: 'd4cda95b652f4a1592b449d5929fda1b', + spanId: '6e0c63257de34c92', + traceFlags: api_1.TraceFlags.SAMPLED, + traceState: (0, api_1.createTraceState)("foo='bar,baz='qux!()*',hack='DROP TABLE"), + }; + const query = 'SELECT * from FOO;'; + assert.strictEqual((0, index_1.addSqlCommenterComment)(api_1.trace.wrapSpanContext(spanContext), query), "SELECT * from FOO; /*traceparent='00-d4cda95b652f4a1592b449d5929fda1b-6e0c63257de34c92-01',tracestate='foo%3D%27bar%2Cbaz%3D%27qux%21%28%29%2A%27%2Chack%3D%27DROP%20TABLE'*/"); + }); +}); +//# sourceMappingURL=sql-common.test.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/test/sql-common.test.js.map b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/test/sql-common.test.js.map new file mode 100644 index 0000000..f7c5d79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/build/test/sql-common.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sql-common.test.js","sourceRoot":"","sources":["../../test/sql-common.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as assert from 'assert';\nimport {\n trace,\n SpanContext,\n TraceFlags,\n INVALID_SPAN_CONTEXT,\n createTraceState,\n} from '@opentelemetry/api';\nimport { addSqlCommenterComment } from '../src/index';\n\ndescribe('addSqlCommenterComment', () => {\n it('adds comment to a simple query', () => {\n const spanContext: SpanContext = {\n traceId: 'd4cda95b652f4a1592b449d5929fda1b',\n spanId: '6e0c63257de34c92',\n traceFlags: TraceFlags.SAMPLED,\n };\n\n const query = 'SELECT * from FOO;';\n assert.strictEqual(\n addSqlCommenterComment(trace.wrapSpanContext(spanContext), query),\n \"SELECT * from FOO; /*traceparent='00-d4cda95b652f4a1592b449d5929fda1b-6e0c63257de34c92-01'*/\"\n );\n });\n\n it('does not add a comment if query already has a comment', () => {\n const span = trace.wrapSpanContext({\n traceId: 'd4cda95b652f4a1592b449d5929fda1b',\n spanId: '6e0c63257de34c92',\n traceFlags: TraceFlags.SAMPLED,\n });\n\n const blockComment = 'SELECT * from FOO; /* Test comment */';\n assert.strictEqual(\n addSqlCommenterComment(span, blockComment),\n blockComment\n );\n\n const dashedComment = 'SELECT * from FOO; -- Test comment';\n assert.strictEqual(\n addSqlCommenterComment(span, dashedComment),\n dashedComment\n );\n });\n\n it('does not add a comment to an empty query', () => {\n const spanContext: SpanContext = {\n traceId: 'd4cda95b652f4a1592b449d5929fda1b',\n spanId: '6e0c63257de34c92',\n traceFlags: TraceFlags.SAMPLED,\n };\n\n assert.strictEqual(\n addSqlCommenterComment(trace.wrapSpanContext(spanContext), ''),\n ''\n );\n });\n\n it('does not add a comment if span context is invalid', () => {\n const query = 'SELECT * from FOO;';\n assert.strictEqual(\n addSqlCommenterComment(\n trace.wrapSpanContext(INVALID_SPAN_CONTEXT),\n query\n ),\n query\n );\n });\n\n it('correctly also sets trace state', () => {\n const spanContext: SpanContext = {\n traceId: 'd4cda95b652f4a1592b449d5929fda1b',\n spanId: '6e0c63257de34c92',\n traceFlags: TraceFlags.SAMPLED,\n traceState: createTraceState('foo=bar,baz=qux'),\n };\n\n const query = 'SELECT * from FOO;';\n assert.strictEqual(\n addSqlCommenterComment(trace.wrapSpanContext(spanContext), query),\n \"SELECT * from FOO; /*traceparent='00-d4cda95b652f4a1592b449d5929fda1b-6e0c63257de34c92-01',tracestate='foo%3Dbar%2Cbaz%3Dqux'*/\"\n );\n });\n\n it('escapes special characters in values', () => {\n const spanContext: SpanContext = {\n traceId: 'd4cda95b652f4a1592b449d5929fda1b',\n spanId: '6e0c63257de34c92',\n traceFlags: TraceFlags.SAMPLED,\n traceState: createTraceState(\"foo='bar,baz='qux!()*',hack='DROP TABLE\"),\n };\n\n const query = 'SELECT * from FOO;';\n assert.strictEqual(\n addSqlCommenterComment(trace.wrapSpanContext(spanContext), query),\n \"SELECT * from FOO; /*traceparent='00-d4cda95b652f4a1592b449d5929fda1b-6e0c63257de34c92-01',tracestate='foo%3D%27bar%2Cbaz%3D%27qux%21%28%29%2A%27%2Chack%3D%27DROP%20TABLE'*/\"\n );\n });\n});\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/package.json b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/package.json new file mode 100644 index 0000000..150e2b5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@opentelemetry/sql-common/package.json @@ -0,0 +1,57 @@ +{ + "name": "@opentelemetry/sql-common", + "version": "0.41.2", + "description": "Utilities for SQL instrumentations", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "publishConfig": { + "access": "public" + }, + "scripts": { + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/sql-common", + "compile": "tsc --build tsconfig.json", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "prepublishOnly": "npm run compile", + "test": "nyc mocha 'test/**/*.test.ts'", + "watch": "tsc -w" + }, + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/sql-common" + }, + "keywords": [ + "opentelemetry", + "contrib", + "sql" + ], + "files": [ + "build/**/*.js", + "build/**/*.js.map", + "build/**/*.d.ts" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "bugs": { + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib/issues" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/sql-common#readme", + "peerDependencies": { + "@opentelemetry/api": "^1.1.0" + }, + "dependencies": { + "@opentelemetry/core": "^2.0.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.1.0", + "@types/mocha": "^10.0.0", + "@types/node": "18.18.14", + "nyc": "17.1.0", + "typescript": "5.0.4" + }, + "gitHead": "5a5918fd4f9f16b14c9ef4d3de08ab98c20e5b46" +} diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/LICENSE b/sentry-javascript/19013/node_modules/@prisma/instrumentation/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/README.md b/sentry-javascript/19013/node_modules/@prisma/instrumentation/README.md new file mode 100644 index 0000000..5ccb499 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/README.md @@ -0,0 +1,73 @@ +# @prisma/instrumentation + +[![npm version](https://img.shields.io/npm/v/@prisma/instrumentation.svg?style=flat)](https://www.npmjs.com/package/@prisma/instrumentation) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/prisma/prisma/blob/main/CONTRIBUTING.md) [![GitHub license](https://img.shields.io/badge/license-Apache%202-blue)](https://github.com/prisma/prisma/blob/main/LICENSE) [![Discord](https://img.shields.io/discord/937751382725886062?label=Discord)](https://pris.ly/discord) + +[OTEL - OpenTelemetry](https://opentelemetry.io/) compliant instrumentation for Prisma Client. + +## Installing + +``` +$ npm install @prisma/instrumentation +``` + +## Usage + +```ts +import { registerInstrumentations } from '@opentelemetry/instrumentation' +import { PrismaInstrumentation } from '@prisma/instrumentation' + +registerInstrumentations({ + instrumentations: [new PrismaInstrumentation()], +}) +``` + +## Jaeger + +Exporting traces to [Jaeger Tracing](https://jaegertracing.io). + +```ts +import { context, trace } from '@opentelemetry/api' +import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks' +import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http' +import { registerInstrumentations } from '@opentelemetry/instrumentation' +import { resourceFromAttributes } from '@opentelemetry/resources' +import { BasicTracerProvider, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base' +import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions' +import { PrismaInstrumentation } from '@prisma/instrumentation' + +import { PrismaClient } from '.prisma/client' + +const contextManager = new AsyncLocalStorageContextManager().enable() + +context.setGlobalContextManager(contextManager) + +const otlpTraceExporter = new OTLPTraceExporter() + +const provider = new BasicTracerProvider({ + resource: resourceFromAttributes({ + [ATTR_SERVICE_NAME]: 'test-tracing-service', + [ATTR_SERVICE_VERSION]: '1.0.0', + }), + spanProcessors: [new SimpleSpanProcessor(otlpTraceExporter)], +}) + +trace.setGlobalTracerProvider(provider) + +registerInstrumentations({ + instrumentations: [new PrismaInstrumentation()], +}) + +async function main() { + const prisma = new PrismaClient() + + const email = `user.${Date.now()}@prisma.io` + + await prisma.user.create({ + data: { + email: email, + }, + }) +} + +main() +``` diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.d.mts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.d.mts new file mode 100644 index 0000000..28061a6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.d.mts @@ -0,0 +1,25 @@ +import { InstrumentationBase } from '@opentelemetry/instrumentation'; +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import { InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { registerInstrumentations } from '@opentelemetry/instrumentation'; +import { TracerProvider } from '@opentelemetry/api'; + +declare type Config = PrismaInstrumentationConfig & InstrumentationConfig; + +export declare class PrismaInstrumentation extends InstrumentationBase { + private tracerProvider; + constructor(config?: Config); + setTracerProvider(tracerProvider: TracerProvider): void; + init(): InstrumentationNodeModuleDefinition[]; + enable(): void; + disable(): void; + isEnabled(): boolean; +} + +declare interface PrismaInstrumentationConfig { + ignoreSpanTypes?: (string | RegExp)[]; +} + +export { registerInstrumentations } + +export { } diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.d.ts new file mode 100644 index 0000000..28061a6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.d.ts @@ -0,0 +1,25 @@ +import { InstrumentationBase } from '@opentelemetry/instrumentation'; +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import { InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +import { registerInstrumentations } from '@opentelemetry/instrumentation'; +import { TracerProvider } from '@opentelemetry/api'; + +declare type Config = PrismaInstrumentationConfig & InstrumentationConfig; + +export declare class PrismaInstrumentation extends InstrumentationBase { + private tracerProvider; + constructor(config?: Config); + setTracerProvider(tracerProvider: TracerProvider): void; + init(): InstrumentationNodeModuleDefinition[]; + enable(): void; + disable(): void; + isEnabled(): boolean; +} + +declare interface PrismaInstrumentationConfig { + ignoreSpanTypes?: (string | RegExp)[]; +} + +export { registerInstrumentations } + +export { } diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.js new file mode 100644 index 0000000..72ecbf2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.js @@ -0,0 +1,317 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var index_exports = {}; +__export(index_exports, { + PrismaInstrumentation: () => PrismaInstrumentation, + registerInstrumentations: () => import_instrumentation2.registerInstrumentations +}); +module.exports = __toCommonJS(index_exports); + +// src/PrismaInstrumentation.ts +var import_api2 = require("@opentelemetry/api"); +var import_instrumentation = require("@opentelemetry/instrumentation"); + +// ../instrumentation-contract/dist/index.mjs +var package_default = { + name: "@prisma/instrumentation-contract", + version: "7.2.0", + 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: false, + devDependencies: { + "@opentelemetry/api": "1.9.0" + }, + peerDependencies: { + "@opentelemetry/api": "^1.8" + } +}; +var majorVersion = package_default.version.split(".")[0]; +var GLOBAL_INSTRUMENTATION_KEY = "PRISMA_INSTRUMENTATION"; +var GLOBAL_VERSIONED_INSTRUMENTATION_KEY = `V${majorVersion}_PRISMA_INSTRUMENTATION`; +var globalThisWithPrismaInstrumentation = globalThis; +function getGlobalTracingHelper() { + const versionedGlobal = globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY]; + if (versionedGlobal?.helper) { + return versionedGlobal.helper; + } + const fallbackGlobal = globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY]; + return fallbackGlobal?.helper; +} +function setGlobalTracingHelper(helper) { + const globalValue = { helper }; + globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY] = globalValue; + globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY] = globalValue; +} +function clearGlobalTracingHelper() { + delete globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY]; + delete globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY]; +} + +// src/ActiveTracingHelper.ts +var import_api = require("@opentelemetry/api"); +var showAllTraces = process.env.PRISMA_SHOW_ALL_TRACES === "true"; +var nonSampledTraceParent = `00-10-10-00`; +function engineSpanKindToOtelSpanKind(engineSpanKind) { + switch (engineSpanKind) { + case "client": + return import_api.SpanKind.CLIENT; + case "internal": + default: + return import_api.SpanKind.INTERNAL; + } +} +var ActiveTracingHelper = class { + tracerProvider; + ignoreSpanTypes; + constructor({ tracerProvider, ignoreSpanTypes }) { + this.tracerProvider = tracerProvider; + this.ignoreSpanTypes = ignoreSpanTypes; + } + isEnabled() { + return true; + } + getTraceParent(context) { + const span = import_api.trace.getSpanContext(context ?? import_api.context.active()); + if (span) { + return `00-${span.traceId}-${span.spanId}-0${span.traceFlags}`; + } + return nonSampledTraceParent; + } + dispatchEngineSpans(spans) { + const tracer = this.tracerProvider.getTracer("prisma"); + const linkIds = /* @__PURE__ */ new Map(); + const roots = spans.filter((span) => span.parentId === null); + for (const root of roots) { + dispatchEngineSpan(tracer, root, spans, linkIds, this.ignoreSpanTypes); + } + } + getActiveContext() { + return import_api.context.active(); + } + runInChildSpan(options, callback) { + if (typeof options === "string") { + options = { name: options }; + } + if (options.internal && !showAllTraces) { + return callback(); + } + const tracer = this.tracerProvider.getTracer("prisma"); + const context = options.context ?? this.getActiveContext(); + const name = `prisma:client:${options.name}`; + if (shouldIgnoreSpan(name, this.ignoreSpanTypes)) { + return callback(); + } + if (options.active === false) { + const span = tracer.startSpan(name, options, context); + return endSpan(span, callback(span, context)); + } + return tracer.startActiveSpan(name, options, (span) => endSpan(span, callback(span, context))); + } +}; +function dispatchEngineSpan(tracer, engineSpan, allSpans, linkIds, ignoreSpanTypes) { + if (shouldIgnoreSpan(engineSpan.name, ignoreSpanTypes)) return; + const spanOptions = { + attributes: engineSpan.attributes, + kind: engineSpanKindToOtelSpanKind(engineSpan.kind), + startTime: engineSpan.startTime + }; + tracer.startActiveSpan(engineSpan.name, spanOptions, (span) => { + linkIds.set(engineSpan.id, span.spanContext().spanId); + if (engineSpan.links) { + span.addLinks( + engineSpan.links.flatMap((link) => { + const linkedId = linkIds.get(link); + if (!linkedId) { + return []; + } + return { + context: { + spanId: linkedId, + traceId: span.spanContext().traceId, + traceFlags: span.spanContext().traceFlags + } + }; + }) + ); + } + const children = allSpans.filter((s) => s.parentId === engineSpan.id); + for (const child of children) { + dispatchEngineSpan(tracer, child, allSpans, linkIds, ignoreSpanTypes); + } + span.end(engineSpan.endTime); + }); +} +function endSpan(span, result) { + if (isPromiseLike(result)) { + return result.then( + (value) => { + span.end(); + return value; + }, + (reason) => { + span.end(); + throw reason; + } + ); + } + span.end(); + return result; +} +function isPromiseLike(value) { + return value != null && typeof value["then"] === "function"; +} +function shouldIgnoreSpan(spanName, ignoreSpanTypes) { + return ignoreSpanTypes.some( + (pattern) => typeof pattern === "string" ? pattern === spanName : pattern.test(spanName) + ); +} + +// package.json +var package_default2 = { + name: "@prisma/instrumentation", + version: "7.2.0", + 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: false +}; + +// src/constants.ts +var VERSION = package_default2.version; +var NAME = package_default2.name; +var MODULE_NAME = "@prisma/client"; + +// src/PrismaInstrumentation.ts +var PrismaInstrumentation = class extends import_instrumentation.InstrumentationBase { + tracerProvider; + constructor(config = {}) { + super(NAME, VERSION, config); + } + setTracerProvider(tracerProvider) { + this.tracerProvider = tracerProvider; + } + init() { + const module2 = new import_instrumentation.InstrumentationNodeModuleDefinition(MODULE_NAME, [VERSION]); + return [module2]; + } + enable() { + const config = this._config; + setGlobalTracingHelper( + new ActiveTracingHelper({ + tracerProvider: this.tracerProvider ?? import_api2.trace.getTracerProvider(), + ignoreSpanTypes: config.ignoreSpanTypes ?? [] + }) + ); + } + disable() { + clearGlobalTracingHelper(); + } + isEnabled() { + return getGlobalTracingHelper() !== void 0; + } +}; + +// src/index.ts +var import_instrumentation2 = require("@opentelemetry/instrumentation"); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + PrismaInstrumentation, + registerInstrumentations +}); diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.mjs b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.mjs new file mode 100644 index 0000000..ca09a5d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/index.mjs @@ -0,0 +1,296 @@ +// src/PrismaInstrumentation.ts +import { trace as trace2 } from "@opentelemetry/api"; +import { + InstrumentationBase, + InstrumentationNodeModuleDefinition +} from "@opentelemetry/instrumentation"; + +// ../instrumentation-contract/dist/index.mjs +var package_default = { + name: "@prisma/instrumentation-contract", + version: "7.2.0", + 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: false, + devDependencies: { + "@opentelemetry/api": "1.9.0" + }, + peerDependencies: { + "@opentelemetry/api": "^1.8" + } +}; +var majorVersion = package_default.version.split(".")[0]; +var GLOBAL_INSTRUMENTATION_KEY = "PRISMA_INSTRUMENTATION"; +var GLOBAL_VERSIONED_INSTRUMENTATION_KEY = `V${majorVersion}_PRISMA_INSTRUMENTATION`; +var globalThisWithPrismaInstrumentation = globalThis; +function getGlobalTracingHelper() { + const versionedGlobal = globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY]; + if (versionedGlobal?.helper) { + return versionedGlobal.helper; + } + const fallbackGlobal = globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY]; + return fallbackGlobal?.helper; +} +function setGlobalTracingHelper(helper) { + const globalValue = { helper }; + globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY] = globalValue; + globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY] = globalValue; +} +function clearGlobalTracingHelper() { + delete globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY]; + delete globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY]; +} + +// src/ActiveTracingHelper.ts +import { + context as _context, + SpanKind, + trace +} from "@opentelemetry/api"; +var showAllTraces = process.env.PRISMA_SHOW_ALL_TRACES === "true"; +var nonSampledTraceParent = `00-10-10-00`; +function engineSpanKindToOtelSpanKind(engineSpanKind) { + switch (engineSpanKind) { + case "client": + return SpanKind.CLIENT; + case "internal": + default: + return SpanKind.INTERNAL; + } +} +var ActiveTracingHelper = class { + tracerProvider; + ignoreSpanTypes; + constructor({ tracerProvider, ignoreSpanTypes }) { + this.tracerProvider = tracerProvider; + this.ignoreSpanTypes = ignoreSpanTypes; + } + isEnabled() { + return true; + } + getTraceParent(context) { + const span = trace.getSpanContext(context ?? _context.active()); + if (span) { + return `00-${span.traceId}-${span.spanId}-0${span.traceFlags}`; + } + return nonSampledTraceParent; + } + dispatchEngineSpans(spans) { + const tracer = this.tracerProvider.getTracer("prisma"); + const linkIds = /* @__PURE__ */ new Map(); + const roots = spans.filter((span) => span.parentId === null); + for (const root of roots) { + dispatchEngineSpan(tracer, root, spans, linkIds, this.ignoreSpanTypes); + } + } + getActiveContext() { + return _context.active(); + } + runInChildSpan(options, callback) { + if (typeof options === "string") { + options = { name: options }; + } + if (options.internal && !showAllTraces) { + return callback(); + } + const tracer = this.tracerProvider.getTracer("prisma"); + const context = options.context ?? this.getActiveContext(); + const name = `prisma:client:${options.name}`; + if (shouldIgnoreSpan(name, this.ignoreSpanTypes)) { + return callback(); + } + if (options.active === false) { + const span = tracer.startSpan(name, options, context); + return endSpan(span, callback(span, context)); + } + return tracer.startActiveSpan(name, options, (span) => endSpan(span, callback(span, context))); + } +}; +function dispatchEngineSpan(tracer, engineSpan, allSpans, linkIds, ignoreSpanTypes) { + if (shouldIgnoreSpan(engineSpan.name, ignoreSpanTypes)) return; + const spanOptions = { + attributes: engineSpan.attributes, + kind: engineSpanKindToOtelSpanKind(engineSpan.kind), + startTime: engineSpan.startTime + }; + tracer.startActiveSpan(engineSpan.name, spanOptions, (span) => { + linkIds.set(engineSpan.id, span.spanContext().spanId); + if (engineSpan.links) { + span.addLinks( + engineSpan.links.flatMap((link) => { + const linkedId = linkIds.get(link); + if (!linkedId) { + return []; + } + return { + context: { + spanId: linkedId, + traceId: span.spanContext().traceId, + traceFlags: span.spanContext().traceFlags + } + }; + }) + ); + } + const children = allSpans.filter((s) => s.parentId === engineSpan.id); + for (const child of children) { + dispatchEngineSpan(tracer, child, allSpans, linkIds, ignoreSpanTypes); + } + span.end(engineSpan.endTime); + }); +} +function endSpan(span, result) { + if (isPromiseLike(result)) { + return result.then( + (value) => { + span.end(); + return value; + }, + (reason) => { + span.end(); + throw reason; + } + ); + } + span.end(); + return result; +} +function isPromiseLike(value) { + return value != null && typeof value["then"] === "function"; +} +function shouldIgnoreSpan(spanName, ignoreSpanTypes) { + return ignoreSpanTypes.some( + (pattern) => typeof pattern === "string" ? pattern === spanName : pattern.test(spanName) + ); +} + +// package.json +var package_default2 = { + name: "@prisma/instrumentation", + version: "7.2.0", + 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: false +}; + +// src/constants.ts +var VERSION = package_default2.version; +var NAME = package_default2.name; +var MODULE_NAME = "@prisma/client"; + +// src/PrismaInstrumentation.ts +var PrismaInstrumentation = class extends InstrumentationBase { + tracerProvider; + constructor(config = {}) { + super(NAME, VERSION, config); + } + setTracerProvider(tracerProvider) { + this.tracerProvider = tracerProvider; + } + init() { + const module = new InstrumentationNodeModuleDefinition(MODULE_NAME, [VERSION]); + return [module]; + } + enable() { + const config = this._config; + setGlobalTracingHelper( + new ActiveTracingHelper({ + tracerProvider: this.tracerProvider ?? trace2.getTracerProvider(), + ignoreSpanTypes: config.ignoreSpanTypes ?? [] + }) + ); + } + disable() { + clearGlobalTracingHelper(); + } + isEnabled() { + return getGlobalTracingHelper() !== void 0; + } +}; + +// src/index.ts +import { registerInstrumentations } from "@opentelemetry/instrumentation"; +export { + PrismaInstrumentation, + registerInstrumentations +}; diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/ActiveTracingHelper.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/ActiveTracingHelper.d.ts new file mode 100644 index 0000000..9518e24 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/ActiveTracingHelper.d.ts @@ -0,0 +1,17 @@ +import { Context, TracerProvider } from '@opentelemetry/api'; +import type { EngineSpan, ExtendedSpanOptions, SpanCallback, TracingHelper } from '@prisma/instrumentation-contract'; +type Options = { + tracerProvider: TracerProvider; + ignoreSpanTypes: (string | RegExp)[]; +}; +export declare class ActiveTracingHelper implements TracingHelper { + private tracerProvider; + private ignoreSpanTypes; + constructor({ tracerProvider, ignoreSpanTypes }: Options); + isEnabled(): boolean; + getTraceParent(context?: Context | undefined): string; + dispatchEngineSpans(spans: EngineSpan[]): void; + getActiveContext(): Context | undefined; + runInChildSpan(options: string | ExtendedSpanOptions, callback: SpanCallback): R; +} +export {}; diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/PrismaInstrumentation.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/PrismaInstrumentation.d.ts new file mode 100644 index 0000000..b9ba62a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/PrismaInstrumentation.d.ts @@ -0,0 +1,16 @@ +import { TracerProvider } from '@opentelemetry/api'; +import { InstrumentationBase, InstrumentationConfig, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; +export interface PrismaInstrumentationConfig { + ignoreSpanTypes?: (string | RegExp)[]; +} +type Config = PrismaInstrumentationConfig & InstrumentationConfig; +export declare class PrismaInstrumentation extends InstrumentationBase { + private tracerProvider; + constructor(config?: Config); + setTracerProvider(tracerProvider: TracerProvider): void; + init(): InstrumentationNodeModuleDefinition[]; + enable(): void; + disable(): void; + isEnabled(): boolean; +} +export {}; diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/constants.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/constants.d.ts new file mode 100644 index 0000000..dcf1d4a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/constants.d.ts @@ -0,0 +1,3 @@ +export declare const VERSION: string; +export declare const NAME: string; +export declare const MODULE_NAME = "@prisma/client"; diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/index.d.ts new file mode 100644 index 0000000..04aecda --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/dist/src/index.d.ts @@ -0,0 +1,2 @@ +export { PrismaInstrumentation } from './PrismaInstrumentation'; +export { registerInstrumentations } from '@opentelemetry/instrumentation'; diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/LICENSE b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/LICENSES/shimmer/LICENSE b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/LICENSES/shimmer/LICENSE new file mode 100644 index 0000000..a87c655 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/LICENSES/shimmer/LICENSE @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2013-2019, Forrest L Norvell +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/README.md b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/README.md new file mode 100644 index 0000000..92ee119 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/README.md @@ -0,0 +1,259 @@ +# OpenTelemetry Instrumentation for web and node + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +**Note: This is an experimental package under active development. New releases may include breaking changes.** + +## Installation + +**Note: Much of OpenTelemetry JS documentation is written assuming the compiled application is run as CommonJS.** +For more details on ECMAScript Modules vs CommonJS, refer to [esm-support](https://github.com/open-telemetry/opentelemetry-js/blob/main/doc/esm-support.md). + +```bash +npm install --save @opentelemetry/instrumentation +``` + +## Usage in Node + +```typescript +import { + InstrumentationBase, + InstrumentationConfig, + InstrumentationNodeModuleDefinition, + InstrumentationNodeModuleFile, +} from '@opentelemetry/instrumentation'; + +import type * as module_name_to_be_patched from 'module_name_to_be_patched'; + +export class MyInstrumentation extends InstrumentationBase { + constructor(config: InstrumentationConfig = {}) { + super('MyInstrumentation', VERSION, config); + } + + /** + * Init method will be called when the plugin is constructed. + * It returns an `InstrumentationNodeModuleDefinition` which describes + * the node module to be instrumented and patched. + * It may also return a list of `InstrumentationNodeModuleDefinition`s if + * the plugin should patch multiple modules or versions. + */ + protected init() { + const module = new InstrumentationNodeModuleDefinition( + 'module_name_to_be_patched', + ['1.*'], + this._onPatchMain, + this._onUnPatchMain, + ); + // in case you need to patch additional files - this is optional + module.files.push(this._addPatchingMethod()); + + return module; + // you can also define more modules then just return an array of modules + // return [module1, module2, ....] + } + + private _onPatchMain(moduleExports: typeof module_name_to_be_patched) { + this._wrap( + moduleExports, + 'mainMethodName', + this._patchMainMethodName() + ); + return moduleExports; + } + + private _onUnPatchMain(moduleExports: typeof module_name_to_be_patched) { + this._unwrap(moduleExports, 'mainMethodName'); + } + + private _addPatchingMethod(): InstrumentationNodeModuleFile { + const file = new InstrumentationNodeModuleFile( + 'module_name_to_be_patched/src/some_file.js', + this._onPatchMethodName, + this._onUnPatchMethodName, + ); + return file; + } + + private _onPatchMethodName(moduleExports: typeof module_name_to_be_patched) { + this._wrap( + moduleExports, + 'methodName', + this._patchMethodName() + ); + return moduleExports; + } + + private _onUnPatchMethodName(moduleExports: typeof module_name_to_be_patched) { + this._unwrap(moduleExports, 'methodName'); + } + + private _patchMethodName(): (original) => any { + const plugin = this; + return function methodName(original) { + return function patchMethodName(this: any): PromiseOrValue { + console.log('methodName', arguments); + return original.apply(this, arguments); + }; + }; + } + + private _patchMainMethodName(): (original) => any { + const plugin = this; + return function mainMethodName(original) { + return function patchMainMethodName(this: any): PromiseOrValue { + console.log('mainMethodName', arguments); + return original.apply(this, arguments); + }; + }; + } +} + +// Later, but before the module to instrument is required + +const myInstrumentation = new MyInstrumentation(); +myInstrumentation.setTracerProvider(provider); // this is optional, only if global TracerProvider shouldn't be used +myInstrumentation.setMeterProvider(meterProvider); // this is optional +myInstrumentation.enable(); +// or use Auto Loader +``` + +## Usage in Web + +```typescript +import { + InstrumentationBase, + InstrumentationConfig, +} from '@opentelemetry/instrumentation'; + +import { Instrumentation } from '@opentelemetry/instrumentation'; + +export class MyInstrumentation extends InstrumentationBase { + constructor(config: InstrumentationConfig = {}) { + super('MyInstrumentation', VERSION, config); + } + + private _patchOpen() { + return (original: OpenFunction): OpenFunction => { + const plugin = this; + return function patchOpen(this: XMLHttpRequest, ...args): void { + console.log('open', arguments); + return original.apply(this, args); + }; + }; + } + + public enable() { + this._wrap(XMLHttpRequest.prototype, 'open', this._patchOpen()); + } + public disable() { + this._unwrap(XMLHttpRequest.prototype, 'open'); + } +} + +// Later + +const myInstrumentation = new MyInstrumentation(); +myInstrumentation.setTracerProvider(provider); // this is optional, only if global TracerProvider shouldn't be used +myInstrumentation.setMeterProvider(meterProvider); // this is optional, only if global MeterProvider shouldn't be used +myInstrumentation.enable(); +// or use Auto Loader +``` + +## AutoLoader + +### NODE - Auto Loader + +```javascript +const { B3Propagator } = require('@opentelemetry/propagator-b3'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); + +const tracerProvider = new NodeTracerProvider(); + +tracerProvider.register({ + propagator: new B3Propagator(), +}); + +registerInstrumentations({ + instrumentations: [ + new HttpInstrumentation(), + ], + //tracerProvider: tracerProvider, // optional, only if global TracerProvider shouldn't be used + //meterProvider: meterProvider, // optional, only if global MeterProvider shouldn't be used +}); + +``` + +### WEB - Auto Loader + +```javascript +const { B3Propagator } = require('@opentelemetry/propagator-b3'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { XMLHttpRequestInstrumentation } = require('@opentelemetry/instrumentation-xml-http-request'); +const { WebTracerProvider } = require('@opentelemetry/sdk-trace-web'); + +const tracerProvider = new WebTracerProvider(); + +tracerProvider.register({ + propagator: new B3Propagator(), +}); + +registerInstrumentations({ + instrumentations: [ + new XMLHttpRequestInstrumentation({ + ignoreUrls: [/localhost/], + propagateTraceHeaderCorsUrls: [ + 'http://localhost:8090', + ], + }), + ], + //tracerProvider: tracerProvider, // optional, only if global TracerProvider shouldn't be used + //meterProvider: meterProvider, // optional, only if global MeterProvider shouldn't be used +}); +``` + +## Selection of the used TracerProvider/MeterProvider + +The `registerInstrumentations()` API allows to specify which `TracerProvider` and/or `MeterProvider` to use by the given options object. +If nothing is specified the global registered provider is used. Usually this is what most users want therefore it's recommended to keep this default. + +There might be use case where someone has the need for more providers within an application. Please note that special care must be takes in such setups +to avoid leaking information from one provider to the other because there are a lot places where e.g. the global `ContextManager` or `Propagator` is used. + +## Instrumentation for ECMAScript Modules (ESM) in Node.js (experimental) + +Node.js uses a different module loader for ECMAScript Modules (ESM) vs. CommonJS (CJS). +A `require()` call will cause Node.js to use the CommonJS module loader. +An `import ...` statement or `import()` call will cause Node.js to use the ECMAScript module loader. + +If your application is written in JavaScript as ESM, or it must compile to ESM from TypeScript, then a loader hook is required to properly patch instrumentation. +The custom hook for ESM instrumentation is `--experimental-loader=@opentelemetry/instrumentation/hook.mjs`. +This flag must be passed to the `node` binary, which is often done as a startup command and/or in the `NODE_OPTIONS` environment variable. + +For more details on ECMAScript Modules vs CommonJS, refer to [esm-support](https://github.com/open-telemetry/opentelemetry-js/blob/main/doc/esm-support.md). + +## Limitations + +Instrumentations for external modules (e.g. express, mongodb,...) hooks the `require` call or `import` statement. Therefore following conditions need to be met that this mechanism can work: + +- Instrumentations are registered **before** the module to instrument is `require`ed (CJS only) +- modules are not included in a bundle. Tools like `esbuild`, `webpack`, ... usually have some mechanism to exclude specific modules from bundling + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +Third-party licenses and copyright notices can be found in the [LICENSES directory](./LICENSES). + +## Useful links + +- For more information on OpenTelemetry, visit: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation.svg diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.d.ts new file mode 100644 index 0000000..961729a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.d.ts @@ -0,0 +1,9 @@ +import { AutoLoaderOptions } from './types_internal'; +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +export declare function registerInstrumentations(options: AutoLoaderOptions): () => void; +//# sourceMappingURL=autoLoader.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js new file mode 100644 index 0000000..dc92948 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { trace, metrics } from '@opentelemetry/api'; +import { logs } from '@opentelemetry/api-logs'; +import { disableInstrumentations, enableInstrumentations, } from './autoLoaderUtils'; +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +export function registerInstrumentations(options) { + const tracerProvider = options.tracerProvider || trace.getTracerProvider(); + const meterProvider = options.meterProvider || metrics.getMeterProvider(); + const loggerProvider = options.loggerProvider || logs.getLoggerProvider(); + const instrumentations = options.instrumentations?.flat() ?? []; + enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider); + return () => { + disableInstrumentations(instrumentations); + }; +} +//# sourceMappingURL=autoLoader.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js.map new file mode 100644 index 0000000..068eeb2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoader.js","sourceRoot":"","sources":["../../src/autoLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA0B;IAE1B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC3E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1E,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEhE,sBAAsB,CACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,CACf,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\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 */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.d.ts new file mode 100644 index 0000000..c460564 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.d.ts @@ -0,0 +1,16 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +export declare function enableInstrumentations(instrumentations: Instrumentation[], tracerProvider?: TracerProvider, meterProvider?: MeterProvider, loggerProvider?: LoggerProvider): void; +/** + * Disable instrumentations + * @param instrumentations + */ +export declare function disableInstrumentations(instrumentations: Instrumentation[]): void; +//# sourceMappingURL=autoLoaderUtils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js new file mode 100644 index 0000000..e5759f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js @@ -0,0 +1,50 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +export function enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) { + for (let i = 0, j = instrumentations.length; i < j; i++) { + const instrumentation = instrumentations[i]; + if (tracerProvider) { + instrumentation.setTracerProvider(tracerProvider); + } + if (meterProvider) { + instrumentation.setMeterProvider(meterProvider); + } + if (loggerProvider && instrumentation.setLoggerProvider) { + instrumentation.setLoggerProvider(loggerProvider); + } + // instrumentations have been already enabled during creation + // so enable only if user prevented that by setting enabled to false + // this is to prevent double enabling but when calling register all + // instrumentations should be now enabled + if (!instrumentation.getConfig().enabled) { + instrumentation.enable(); + } + } +} +/** + * Disable instrumentations + * @param instrumentations + */ +export function disableInstrumentations(instrumentations) { + instrumentations.forEach(instrumentation => instrumentation.disable()); +} +//# sourceMappingURL=autoLoaderUtils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js.map new file mode 100644 index 0000000..fb05cb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/autoLoaderUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoaderUtils.js","sourceRoot":"","sources":["../../src/autoLoaderUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,gBAAmC,EACnC,cAA+B,EAC/B,aAA6B,EAC7B,cAA+B;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,cAAc,EAAE;YAClB,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,IAAI,aAAa,EAAE;YACjB,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACjD;QACD,IAAI,cAAc,IAAI,eAAe,CAAC,iBAAiB,EAAE;YACvD,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,6DAA6D;QAC7D,oEAAoE;QACpE,mEAAmE;QACnE,yCAAyC;QACzC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE;YACxC,eAAe,CAAC,MAAM,EAAE,CAAC;SAC1B;KACF;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,gBAAmC;IAEnC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\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}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/index.d.ts new file mode 100644 index 0000000..b2b5dbc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/index.d.ts @@ -0,0 +1,9 @@ +export { registerInstrumentations } from './autoLoader'; +export { InstrumentationBase } from './platform/index'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export type { Instrumentation, InstrumentationConfig, InstrumentationModuleDefinition, InstrumentationModuleFile, ShimWrapped, SpanCustomizationHook, } from './types'; +export type { AutoLoaderOptions, AutoLoaderResult } from './types_internal'; +export { isWrapped, safeExecuteInTheMiddle, safeExecuteInTheMiddleAsync, } from './utils'; +export { SemconvStability, semconvStabilityFromStr } from './semconvStability'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/index.js new file mode 100644 index 0000000..aa64ce5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/index.js @@ -0,0 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { registerInstrumentations } from './autoLoader'; +export { InstrumentationBase } from './platform/index'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export { isWrapped, safeExecuteInTheMiddle, safeExecuteInTheMiddleAsync, } from './utils'; +export { SemconvStability, semconvStabilityFromStr } from './semconvStability'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/index.js.map new file mode 100644 index 0000000..453f88b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAUhF,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.d.ts new file mode 100644 index 0000000..801e6df --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.d.ts @@ -0,0 +1,74 @@ +import { DiagLogger, Meter, MeterProvider, Tracer, TracerProvider, Span } from '@opentelemetry/api'; +import { Logger, LoggerProvider } from '@opentelemetry/api-logs'; +import { InstrumentationModuleDefinition, Instrumentation, InstrumentationConfig, SpanCustomizationHook } from './types'; +/** + * Base abstract internal class for instrumenting node and web plugins + */ +export declare abstract class InstrumentationAbstract implements Instrumentation { + readonly instrumentationName: string; + readonly instrumentationVersion: string; + protected _config: ConfigType; + private _tracer; + private _meter; + private _logger; + protected _diag: DiagLogger; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => import("./types").ShimWrapped | undefined; + protected _unwrap: (nodule: Nodule, name: keyof Nodule) => void; + protected _massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + protected _massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; + protected get meter(): Meter; + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider: MeterProvider): void; + protected get logger(): Logger; + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider: LoggerProvider): void; + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions(): InstrumentationModuleDefinition[]; + /** + * Sets the new metric instruments with the current Meter. + */ + protected _updateMetricInstruments(): void; + getConfig(): ConfigType; + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config: ConfigType): void; + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider: TracerProvider): void; + protected get tracer(): Tracer; + abstract enable(): void; + abstract disable(): void; + /** + * Init method in which plugin should define _modules and patches for + * methods. + */ + protected abstract init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] | void; + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + protected _runSpanCustomizationHook(hookHandler: SpanCustomizationHook | undefined, triggerName: string, span: Span, info: SpanCustomizationInfoType): void; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js new file mode 100644 index 0000000..60e0db8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js @@ -0,0 +1,141 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag, metrics, trace, } from '@opentelemetry/api'; +import { logs } from '@opentelemetry/api-logs'; +import * as shimmer from './shimmer'; +/** + * Base abstract internal class for instrumenting node and web plugins + */ +export class InstrumentationAbstract { + instrumentationName; + instrumentationVersion; + _config = {}; + _tracer; + _meter; + _logger; + _diag; + constructor(instrumentationName, instrumentationVersion, config) { + this.instrumentationName = instrumentationName; + this.instrumentationVersion = instrumentationVersion; + this.setConfig(config); + this._diag = diag.createComponentLogger({ + namespace: instrumentationName, + }); + this._tracer = trace.getTracer(instrumentationName, instrumentationVersion); + this._meter = metrics.getMeter(instrumentationName, instrumentationVersion); + this._logger = logs.getLogger(instrumentationName, instrumentationVersion); + this._updateMetricInstruments(); + } + /* Api to wrap instrumented method */ + _wrap = shimmer.wrap; + /* Api to unwrap instrumented methods */ + _unwrap = shimmer.unwrap; + /* Api to mass wrap instrumented method */ + _massWrap = shimmer.massWrap; + /* Api to mass unwrap instrumented methods */ + _massUnwrap = shimmer.massUnwrap; + /* Returns meter */ + get meter() { + return this._meter; + } + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider) { + this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion); + this._updateMetricInstruments(); + } + /* Returns logger */ + get logger() { + return this._logger; + } + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider) { + this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion); + } + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions() { + const initResult = this.init() ?? []; + if (!Array.isArray(initResult)) { + return [initResult]; + } + return initResult; + } + /** + * Sets the new metric instruments with the current Meter. + */ + _updateMetricInstruments() { + return; + } + /* Returns InstrumentationConfig */ + getConfig() { + return this._config; + } + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config) { + // copy config first level properties to ensure they are immutable. + // nested properties are not copied, thus are mutable from the outside. + this._config = { + enabled: true, + ...config, + }; + } + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider) { + this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion); + } + /* Returns tracer */ + get tracer() { + return this._tracer; + } + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + _runSpanCustomizationHook(hookHandler, triggerName, span, info) { + if (!hookHandler) { + return; + } + try { + hookHandler(span, info); + } + catch (e) { + this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e); + } + } +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js.map new file mode 100644 index 0000000..ea47718 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n diag,\n DiagLogger,\n metrics,\n Meter,\n MeterProvider,\n trace,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n\n constructor(\n public readonly instrumentationName: string,\n public readonly instrumentationVersion: string,\n config: ConfigType\n ) {\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\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 public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\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 /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\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 protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.d.ts new file mode 100644 index 0000000..da04776 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationModuleDefinition, InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleDefinition implements InstrumentationModuleDefinition { + name: string; + supportedVersions: string[]; + patch?: ((exports: any, moduleVersion?: string) => any) | undefined; + unpatch?: ((exports: any, moduleVersion?: string) => void) | undefined; + files: InstrumentationModuleFile[]; + constructor(name: string, supportedVersions: string[], patch?: ((exports: any, moduleVersion?: string) => any) | undefined, unpatch?: ((exports: any, moduleVersion?: string) => void) | undefined, files?: InstrumentationModuleFile[]); +} +//# sourceMappingURL=instrumentationNodeModuleDefinition.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js new file mode 100644 index 0000000..9a6abb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class InstrumentationNodeModuleDefinition { + name; + supportedVersions; + patch; + unpatch; + files; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch, files) { + this.name = name; + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + this.files = files || []; + } +} +//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js.map new file mode 100644 index 0000000..e96069d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleDefinition.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleDefinition.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleDefinition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,MAAM,OAAO,mCAAmC;IAKrC;IACA;IAEA;IAEA;IAPT,KAAK,CAA8B;IACnC,YACS,IAAY,EACZ,iBAA2B;IAClC,8DAA8D;IACvD,KAAqD;IAC5D,8DAA8D;IACvD,OAAwD,EAC/D,KAAmC;QAN5B,SAAI,GAAJ,IAAI,CAAQ;QACZ,sBAAiB,GAAjB,iBAAiB,CAAU;QAE3B,UAAK,GAAL,KAAK,CAAgD;QAErD,YAAO,GAAP,OAAO,CAAiD;QAG/D,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n constructor(\n public name: string,\n public supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.d.ts new file mode 100644 index 0000000..51bca62 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.d.ts @@ -0,0 +1,9 @@ +import { InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleFile implements InstrumentationModuleFile { + supportedVersions: string[]; + patch: (moduleExports: any, moduleVersion?: string) => any; + unpatch: (moduleExports?: any, moduleVersion?: string) => void; + name: string; + constructor(name: string, supportedVersions: string[], patch: (moduleExports: any, moduleVersion?: string) => any, unpatch: (moduleExports?: any, moduleVersion?: string) => void); +} +//# sourceMappingURL=instrumentationNodeModuleFile.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js new file mode 100644 index 0000000..3ddd3d7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { normalize } from './platform/index'; +export class InstrumentationNodeModuleFile { + supportedVersions; + patch; + unpatch; + name; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch) { + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + this.name = normalize(name); + } +} +//# sourceMappingURL=instrumentationNodeModuleFile.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js.map new file mode 100644 index 0000000..0ded7a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/instrumentationNodeModuleFile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleFile.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleFile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,6BAA6B;IAM/B;IAEA;IAEA;IAPF,IAAI,CAAS;IACpB,YACE,IAAY,EACL,iBAA2B;IAClC,8DAA8D;IACvD,KAA0D;IACjE,8DAA8D;IACvD,OAA8D;QAJ9D,sBAAiB,GAAjB,iBAAiB,CAAU;QAE3B,UAAK,GAAL,KAAK,CAAqD;QAE1D,YAAO,GAAP,OAAO,CAAuD;QAErE,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n constructor(\n name: string,\n public supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.d.ts new file mode 100644 index 0000000..37aafc8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './noop-normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js new file mode 100644 index 0000000..d8417b4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './noop-normalize'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js.map new file mode 100644 index 0000000..fb42463 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './noop-normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.d.ts new file mode 100644 index 0000000..be36994 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationAbstract } from '../../instrumentation'; +import * as types from '../../types'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting web plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js new file mode 100644 index 0000000..8358620 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { InstrumentationAbstract } from '../../instrumentation'; +/** + * Base abstract class for instrumenting web plugins + */ +export class InstrumentationBase extends InstrumentationAbstract { + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + if (this._config.enabled) { + this.enable(); + } + } +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js.map new file mode 100644 index 0000000..a54838a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/browser/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAIhE;;GAEG;AACH,MAAM,OAAgB,mBAGpB,SAAQ,uBAAmC;IAG3C,YACE,mBAA2B,EAC3B,sBAA8B,EAC9B,MAAkB;QAElB,KAAK,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport * as types from '../../types';\nimport { InstrumentationConfig } from '../../types';\n\n/**\n * Base abstract class for instrumenting web plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.d.ts new file mode 100644 index 0000000..7c64ca3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.d.ts @@ -0,0 +1,13 @@ +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +export declare function normalize(path: string): string; +//# sourceMappingURL=noop-normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js new file mode 100644 index 0000000..bcfedbb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +export function normalize(path) { + diag.warn('Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'); + return path; +} +//# sourceMappingURL=noop-normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js.map new file mode 100644 index 0000000..e059d44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/browser/noop-normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"noop-normalize.js","sourceRoot":"","sources":["../../../../src/platform/browser/noop-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,IAAI,CACP,yOAAyO,CAC1O,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\n\n/**\n * Placeholder normalize function to replace the node variant in browser runtimes,\n * this should never be called and will perform a no-op and warn if it is called regardless.\n *\n * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation\n * package can be made node-only.\n *\n * @param path input path\n * @return unmodified path\n * @internal\n */\nexport function normalize(path: string): string {\n diag.warn(\n 'Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'\n );\n return path;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.d.ts new file mode 100644 index 0000000..2cbefb0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.d.ts @@ -0,0 +1,2 @@ +export { InstrumentationBase, normalize } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js new file mode 100644 index 0000000..1fcd712 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase, normalize } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js.map new file mode 100644 index 0000000..944037a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase, normalize } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.d.ts new file mode 100644 index 0000000..6da6060 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.d.ts @@ -0,0 +1,36 @@ +import type { Hooked } from './RequireInTheMiddleSingleton'; +export declare const ModuleNameSeparator = "/"; +type ModuleNameTrieSearchOptions = { + /** + * Whether to return the results in insertion order + */ + maintainInsertionOrder?: boolean; + /** + * Whether to return only full matches + */ + fullOnly?: boolean; +}; +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +export declare class ModuleNameTrie { + private _trie; + private _counter; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook: Hooked): void; + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName: string, { maintainInsertionOrder, fullOnly }?: ModuleNameTrieSearchOptions): Hooked[]; +} +export {}; +//# sourceMappingURL=ModuleNameTrie.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js new file mode 100644 index 0000000..45452b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js @@ -0,0 +1,85 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const ModuleNameSeparator = '/'; +/** + * Node in a `ModuleNameTrie` + */ +class ModuleNameTrieNode { + hooks = []; + children = new Map(); +} +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +export class ModuleNameTrie { + _trie = new ModuleNameTrieNode(); + _counter = 0; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook) { + let trieNode = this._trie; + for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) { + let nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + nextNode = new ModuleNameTrieNode(); + trieNode.children.set(moduleNamePart, nextNode); + } + trieNode = nextNode; + } + trieNode.hooks.push({ hook, insertedId: this._counter++ }); + } + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName, { maintainInsertionOrder, fullOnly } = {}) { + let trieNode = this._trie; + const results = []; + let foundFull = true; + for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) { + const nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + foundFull = false; + break; + } + if (!fullOnly) { + results.push(...nextNode.hooks); + } + trieNode = nextNode; + } + if (fullOnly && foundFull) { + results.push(...trieNode.hooks); + } + if (results.length === 0) { + return []; + } + if (results.length === 1) { + return [results[0].hook]; + } + if (maintainInsertionOrder) { + results.sort((a, b) => a.insertedId - b.insertedId); + } + return results.map(({ hook }) => hook); + } +} +//# sourceMappingURL=ModuleNameTrie.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js.map new file mode 100644 index 0000000..00e7879 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/ModuleNameTrie.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ModuleNameTrie.js","sourceRoot":"","sources":["../../../../src/platform/node/ModuleNameTrie.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;GAEG;AACH,MAAM,kBAAkB;IACtB,KAAK,GAAgD,EAAE,CAAC;IACxD,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;CACvD;AAaD;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,KAAK,GAAuB,IAAI,kBAAkB,EAAE,CAAC;IACrD,QAAQ,GAAW,CAAC,CAAC;IAE7B;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAE1B,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;YACvE,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACpC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;aACjD;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QACD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CACJ,UAAkB,EAClB,EAAE,sBAAsB,EAAE,QAAQ,KAAkC,EAAE;QAEtE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAgC,EAAE,CAAC;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;YAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;gBACb,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACP;YACD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjC;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QAED,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,EAAE,CAAC;SACX;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC1B;QACD,IAAI,sBAAsB,EAAE;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;SACrD;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(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 /**\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(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(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\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.d.ts new file mode 100644 index 0000000..e1b8733 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.d.ts @@ -0,0 +1,35 @@ +import type { OnRequireFn } from 'require-in-the-middle'; +export type Hooked = { + moduleName: string; + onRequire: OnRequireFn; +}; +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +export declare class RequireInTheMiddleSingleton { + private _moduleNameTrie; + private static _instance?; + private constructor(); + private _initialize; + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName: string, onRequire: OnRequireFn): Hooked; + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance(): RequireInTheMiddleSingleton; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js new file mode 100644 index 0000000..543000a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js @@ -0,0 +1,107 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Hook } from 'require-in-the-middle'; +import * as path from 'path'; +import { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie'; +/** + * Whether Mocha is running in this process + * Inspired by https://github.com/AndreasPizsa/detect-mocha + * + * @type {boolean} + */ +const isMocha = [ + 'afterEach', + 'after', + 'beforeEach', + 'before', + 'describe', + 'it', +].every(fn => { + // @ts-expect-error TS7053: Element implicitly has an 'any' type + return typeof global[fn] === 'function'; +}); +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +export class RequireInTheMiddleSingleton { + _moduleNameTrie = new ModuleNameTrie(); + static _instance; + constructor() { + this._initialize(); + } + _initialize() { + new Hook( + // Intercept all `require` calls; we will filter the matching ones below + null, { internals: true }, (exports, name, basedir) => { + // For internal files on Windows, `name` will use backslash as the path separator + const normalizedModuleName = normalizePathSeparators(name); + const matches = this._moduleNameTrie.search(normalizedModuleName, { + maintainInsertionOrder: true, + // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises'). + // This matches the behavior of `require-in-the-middle`. + // `basedir` is always `undefined` for core modules. + fullOnly: basedir === undefined, + }); + for (const { onRequire } of matches) { + exports = onRequire(exports, name, basedir); + } + return exports; + }); + } + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName, onRequire) { + const hooked = { moduleName, onRequire }; + this._moduleNameTrie.insert(hooked); + return hooked; + } + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance() { + // Mocha runs all test suites in the same process + // This prevents test suites from sharing a singleton + if (isMocha) + return new RequireInTheMiddleSingleton(); + return (this._instance = + this._instance ?? new RequireInTheMiddleSingleton()); + } +} +/** + * Normalize the path separators to forward slash in a module name or path + * + * @param {string} moduleNameOrPath Module name or path + * @returns {string} Normalized module name or path + */ +function normalizePathSeparators(moduleNameOrPath) { + return path.sep !== ModuleNameSeparator + ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator) + : moduleNameOrPath; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js.map new file mode 100644 index 0000000..0d20243 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RequireInTheMiddleSingleton.js","sourceRoot":"","sources":["../../../../src/platform/node/RequireInTheMiddleSingleton.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvE;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IACd,WAAW;IACX,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,IAAI;CACL,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;IACX,gEAAgE;IAChE,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,OAAO,2BAA2B;IAC9B,eAAe,GAAmB,IAAI,cAAc,EAAE,CAAC;IACvD,MAAM,CAAC,SAAS,CAA+B;IAEvD;QACE,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI;QACN,wEAAwE;QACxE,IAAI,EACJ,EAAE,SAAS,EAAE,IAAI,EAAE,EACnB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACzB,iFAAiF;YACjF,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE3D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,oBAAoB,EAAE;gBAChE,sBAAsB,EAAE,IAAI;gBAC5B,gFAAgF;gBAChF,wDAAwD;gBACxD,oDAAoD;gBACpD,QAAQ,EAAE,OAAO,KAAK,SAAS;aAChC,CAAC,CAAC;YAEH,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE;gBACnC,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;aAC7C;YAED,OAAO,OAAO,CAAC;QACjB,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,UAAkB,EAAE,SAAsB;QACjD,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW;QAChB,iDAAiD;QACjD,qDAAqD;QACrD,IAAI,OAAO;YAAE,OAAO,IAAI,2BAA2B,EAAE,CAAC;QAEtD,OAAO,CAAC,IAAI,CAAC,SAAS;YACpB,IAAI,CAAC,SAAS,IAAI,IAAI,2BAA2B,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,gBAAwB;IACvD,OAAO,IAAI,CAAC,GAAG,KAAK,mBAAmB;QACrC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC5D,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\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/**\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 */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\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\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\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: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\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: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.d.ts new file mode 100644 index 0000000..181ca82 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js new file mode 100644 index 0000000..27ac5e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './normalize'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js.map new file mode 100644 index 0000000..7ce23f9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.d.ts new file mode 100644 index 0000000..a74d6bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.d.ts @@ -0,0 +1,25 @@ +import * as types from '../../types'; +import { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer'; +import { InstrumentationAbstract } from '../../instrumentation'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting node plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + private _modules; + private _hooks; + private _requireInTheMiddleSingleton; + private _enabled; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: typeof wrap; + protected _unwrap: typeof unwrap; + protected _massWrap: typeof massWrap; + protected _massUnwrap: typeof massUnwrap; + private _warnOnPreloadedModules; + private _extractPackageVersion; + private _onRequire; + enable(): void; + disable(): void; + isEnabled(): boolean; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js new file mode 100644 index 0000000..68d5fd3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js @@ -0,0 +1,278 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as path from 'path'; +import { types as utilTypes } from 'util'; +import { satisfies } from '../../semver'; +import { wrap, unwrap } from '../../shimmer'; +import { InstrumentationAbstract } from '../../instrumentation'; +import { RequireInTheMiddleSingleton, } from './RequireInTheMiddleSingleton'; +import { Hook as HookImport } from 'import-in-the-middle'; +import { diag } from '@opentelemetry/api'; +import { Hook as HookRequire } from 'require-in-the-middle'; +import { readFileSync } from 'fs'; +import { isWrapped } from '../../utils'; +/** + * Base abstract class for instrumenting node plugins + */ +export class InstrumentationBase extends InstrumentationAbstract { + _modules; + _hooks = []; + _requireInTheMiddleSingleton = RequireInTheMiddleSingleton.getInstance(); + _enabled = false; + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + let modules = this.init(); + if (modules && !Array.isArray(modules)) { + modules = [modules]; + } + this._modules = modules || []; + if (this._config.enabled) { + this.enable(); + } + } + _wrap = (moduleExports, name, wrapper) => { + if (isWrapped(moduleExports[name])) { + this._unwrap(moduleExports, name); + } + if (!utilTypes.isProxy(moduleExports)) { + return wrap(moduleExports, name, wrapper); + } + else { + const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper); + Object.defineProperty(moduleExports, name, { + value: wrapped, + }); + return wrapped; + } + }; + _unwrap = (moduleExports, name) => { + if (!utilTypes.isProxy(moduleExports)) { + return unwrap(moduleExports, name); + } + else { + return Object.defineProperty(moduleExports, name, { + value: moduleExports[name], + }); + } + }; + _massWrap = (moduleExportsArray, names, wrapper) => { + if (!moduleExportsArray) { + diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._wrap(moduleExports, name, wrapper); + }); + }); + }; + _massUnwrap = (moduleExportsArray, names) => { + if (!moduleExportsArray) { + diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._unwrap(moduleExports, name); + }); + }); + }; + _warnOnPreloadedModules() { + this._modules.forEach((module) => { + const { name } = module; + try { + const resolvedModule = require.resolve(name); + if (require.cache[resolvedModule]) { + // Module is already cached, which means the instrumentation hook might not work + this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`); + } + } + catch { + // Module isn't available, we can simply skip + } + }); + } + _extractPackageVersion(baseDir) { + try { + const json = readFileSync(path.join(baseDir, 'package.json'), { + encoding: 'utf8', + }); + const version = JSON.parse(json).version; + return typeof version === 'string' ? version : undefined; + } + catch { + diag.warn('Failed extracting version', baseDir); + } + return undefined; + } + _onRequire(module, exports, name, baseDir) { + if (!baseDir) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', { + module: module.name, + }); + return module.patch(exports); + } + } + return exports; + } + const version = this._extractPackageVersion(baseDir); + module.moduleVersion = version; + if (module.name === name) { + // main module + if (isSupported(module.supportedVersions, version, module.includePrerelease)) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for module on require hook', { + module: module.name, + version: module.moduleVersion, + baseDir, + }); + return module.patch(exports, module.moduleVersion); + } + } + } + return exports; + } + // internal file + const files = module.files ?? []; + const normalizedName = path.normalize(name); + const supportedFileInstrumentations = files + .filter(f => f.name === normalizedName) + .filter(f => isSupported(f.supportedVersions, version, module.includePrerelease)); + return supportedFileInstrumentations.reduce((patchedExports, file) => { + file.moduleExports = patchedExports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + baseDir, + }); + // patch signature is not typed, so we cast it assuming it's correct + return file.patch(patchedExports, module.moduleVersion); + } + return patchedExports; + }, exports); + } + enable() { + if (this._enabled) { + return; + } + this._enabled = true; + // already hooked, just call patch again + if (this._hooks.length > 0) { + for (const module of this._modules) { + if (typeof module.patch === 'function' && module.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + }); + module.patch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.patch(file.moduleExports, module.moduleVersion); + } + } + } + return; + } + this._warnOnPreloadedModules(); + for (const module of this._modules) { + const hookFn = (exports, name, baseDir) => { + if (!baseDir && path.isAbsolute(name)) { + const parsedPath = path.parse(name); + name = parsedPath.name; + baseDir = parsedPath.dir; + } + return this._onRequire(module, exports, name, baseDir); + }; + const onRequire = (exports, name, baseDir) => { + return this._onRequire(module, exports, name, baseDir); + }; + // `RequireInTheMiddleSingleton` does not support absolute paths. + // For an absolute paths, we must create a separate instance of the + // require-in-the-middle `Hook`. + const hook = path.isAbsolute(module.name) + ? new HookRequire([module.name], { internals: true }, onRequire) + : this._requireInTheMiddleSingleton.register(module.name, onRequire); + this._hooks.push(hook); + const esmHook = new HookImport([module.name], { internals: false }, hookFn); + this._hooks.push(esmHook); + } + } + disable() { + if (!this._enabled) { + return; + } + this._enabled = false; + for (const module of this._modules) { + if (typeof module.unpatch === 'function' && module.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + }); + module.unpatch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.unpatch(file.moduleExports, module.moduleVersion); + } + } + } + } + isEnabled() { + return this._enabled; + } +} +function isSupported(supportedVersions, version, includePrerelease) { + if (typeof version === 'undefined') { + // If we don't have the version, accept the wildcard case only + return supportedVersions.includes('*'); + } + return supportedVersions.some(supportedVersion => { + return satisfies(version, supportedVersion, { includePrerelease }); + }); +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js.map new file mode 100644 index 0000000..db5fdd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/node/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n RequireInTheMiddleSingleton,\n Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\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(\n `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\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = 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 } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\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 =>\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\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(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: 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: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\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 HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: false },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.d.ts new file mode 100644 index 0000000..d8e833e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.d.ts @@ -0,0 +1,2 @@ +export { normalize } from 'path'; +//# sourceMappingURL=normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js new file mode 100644 index 0000000..f6280d5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { normalize } from 'path'; +//# sourceMappingURL=normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js.map new file mode 100644 index 0000000..919a813 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../src/platform/node/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { normalize } from 'path';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.d.ts new file mode 100644 index 0000000..7bfd831 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.d.ts @@ -0,0 +1,58 @@ +export declare enum SemconvStability { + /** Emit only stable semantic conventions. */ + STABLE = 1, + /** Emit only old semantic conventions. */ + OLD = 2, + /** Emit both stable and old semantic conventions. */ + DUPLICATE = 3 +} +type SemConvStabilityNamespace = 'http' | 'messaging' | 'database' | 'k8s' | (string & {}); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +export declare function semconvStabilityFromStr(namespace: SemConvStabilityNamespace, str: string | undefined): SemconvStability; +export {}; +//# sourceMappingURL=semconvStability.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js new file mode 100644 index 0000000..11ed6de --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js @@ -0,0 +1,90 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var SemconvStability; +(function (SemconvStability) { + /** Emit only stable semantic conventions. */ + SemconvStability[SemconvStability["STABLE"] = 1] = "STABLE"; + /** Emit only old semantic conventions. */ + SemconvStability[SemconvStability["OLD"] = 2] = "OLD"; + /** Emit both stable and old semantic conventions. */ + SemconvStability[SemconvStability["DUPLICATE"] = 3] = "DUPLICATE"; +})(SemconvStability || (SemconvStability = {})); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +export function semconvStabilityFromStr(namespace, str) { + let semconvStability = SemconvStability.OLD; + // The same parsing of `str` as `getStringListFromEnv` from the core pkg. + const entries = str + ?.split(',') + .map(v => v.trim()) + .filter(s => s !== ''); + for (const entry of entries ?? []) { + if (entry.toLowerCase() === namespace + '/dup') { + // DUPLICATE takes highest precedence. + semconvStability = SemconvStability.DUPLICATE; + break; + } + else if (entry.toLowerCase() === namespace) { + semconvStability = SemconvStability.STABLE; + } + } + return semconvStability; +} +//# sourceMappingURL=semconvStability.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js.map new file mode 100644 index 0000000..c724aea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semconvStability.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconvStability.js","sourceRoot":"","sources":["../../src/semconvStability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,6CAA6C;IAC7C,2DAAY,CAAA;IACZ,0CAA0C;IAC1C,qDAAS,CAAA;IACT,qDAAqD;IACrD,iEAAqB,CAAA;AACvB,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAoC,EACpC,GAAuB;IAEvB,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC;IAE5C,yEAAyE;IACzE,MAAM,OAAO,GAAG,GAAG;QACjB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,EAAE,EAAE;QACjC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,GAAG,MAAM,EAAE;YAC9C,sCAAsC;YACtC,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC;YAC9C,MAAM;SACP;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;YAC5C,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC;SAC5C;KACF;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\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 */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\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 } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semver.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semver.d.ts new file mode 100644 index 0000000..30799dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semver.d.ts @@ -0,0 +1,16 @@ +/** Interface for the options to configure semantic versioning satisfy check. */ +export interface SatisfiesOptions { + /** + * If set to true, the pre-release checks will be included + * as described [here](https://github.com/npm/node-semver#prerelease-tags). + */ + includePrerelease?: boolean; +} +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +export declare function satisfies(version: string, range: string, options?: SatisfiesOptions): boolean; +//# sourceMappingURL=semver.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semver.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semver.js new file mode 100644 index 0000000..3909548 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semver.js @@ -0,0 +1,514 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// This is a custom semantic versioning implementation compatible with the +// `satisfies(version, range, options?)` function from the `semver` npm package; +// with the exception that the `loose` option is not supported. +// +// The motivation for the custom semver implementation is that +// `semver` package has some initialization delay (lots of RegExp init and compile) +// and this leads to coldstart overhead for the OTEL Lambda Node.js layer. +// Hence, we have implemented lightweight version of it internally with required functionalities. +import { diag } from '@opentelemetry/api'; +const 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-]+)*))?$/; +const 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-]+)*))?$/; +const operatorResMap = { + '>': [1], + '>=': [0, 1], + '=': [0], + '<=': [-1, 0], + '<': [-1], + '!=': [-1, 1], +}; +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +export function satisfies(version, range, options) { + // Strict semver format check + if (!_validateVersion(version)) { + diag.error(`Invalid version: ${version}`); + return false; + } + // If range is empty, satisfy check succeeds regardless what version is + if (!range) { + return true; + } + // Cleanup range + range = range.replace(/([<>=~^]+)\s+/g, '$1'); + // Parse version + const parsedVersion = _parseVersion(version); + if (!parsedVersion) { + return false; + } + const allParsedRanges = []; + // Check given version whether it satisfies given range expression + const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options); + // If check result is OK, + // do another final check for pre-release, if pre-release check is included by option + if (checkResult && !options?.includePrerelease) { + return _doPreleaseCheck(parsedVersion, allParsedRanges); + } + return checkResult; +} +function _validateVersion(version) { + return typeof version === 'string' && VERSION_REGEXP.test(version); +} +function _doSatisfies(parsedVersion, range, allParsedRanges, options) { + if (range.includes('||')) { + // A version matches a range if and only if + // every comparator in at least one of the ||-separated comparator sets is satisfied by the version + const ranges = range.trim().split('||'); + for (const r of ranges) { + if (_checkRange(parsedVersion, r, allParsedRanges, options)) { + return true; + } + } + return false; + } + else if (range.includes(' - ')) { + // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc + range = replaceHyphen(range, options); + } + else if (range.includes(' ')) { + // Multiple separated ranges and all needs to be satisfied for success + const ranges = range + .trim() + .replace(/\s{2,}/g, ' ') + .split(' '); + for (const r of ranges) { + if (!_checkRange(parsedVersion, r, allParsedRanges, options)) { + return false; + } + } + return true; + } + // Check given parsed version with given range + return _checkRange(parsedVersion, range, allParsedRanges, options); +} +function _checkRange(parsedVersion, range, allParsedRanges, options) { + range = _normalizeRange(range, options); + if (range.includes(' ')) { + // If there are multiple ranges separated, satisfy each of them + return _doSatisfies(parsedVersion, range, allParsedRanges, options); + } + else { + // Validate and parse range + const parsedRange = _parseRange(range); + allParsedRanges.push(parsedRange); + // Check parsed version by parsed range + return _satisfies(parsedVersion, parsedRange); + } +} +function _satisfies(parsedVersion, parsedRange) { + // If range is invalid, satisfy check fails (no error throw) + if (parsedRange.invalid) { + return false; + } + // If range is empty or wildcard, satisfy check succeeds regardless what version is + if (!parsedRange.version || _isWildcard(parsedRange.version)) { + return true; + } + // Compare version segment first + let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []); + // If versions segments are equal, compare by pre-release segments + if (comparisonResult === 0) { + const versionPrereleaseSegments = parsedVersion.prereleaseSegments || []; + const rangePrereleaseSegments = parsedRange.prereleaseSegments || []; + if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) { + comparisonResult = 0; + } + else if (!versionPrereleaseSegments.length && + rangePrereleaseSegments.length) { + comparisonResult = 1; + } + else if (versionPrereleaseSegments.length && + !rangePrereleaseSegments.length) { + comparisonResult = -1; + } + else { + comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments); + } + } + // Resolve check result according to comparison operator + return operatorResMap[parsedRange.op]?.includes(comparisonResult); +} +function _doPreleaseCheck(parsedVersion, allParsedRanges) { + if (parsedVersion.prerelease) { + return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version); + } + return true; +} +function _normalizeRange(range, options) { + range = range.trim(); + range = replaceCaret(range, options); + range = replaceTilde(range); + range = replaceXRange(range, options); + range = range.trim(); + return range; +} +function isX(id) { + return !id || id.toLowerCase() === 'x' || id === '*'; +} +function _parseVersion(versionString) { + const match = versionString.match(VERSION_REGEXP); + if (!match) { + diag.error(`Invalid version: ${versionString}`); + return undefined; + } + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + return { + op: undefined, + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _parseRange(rangeString) { + if (!rangeString) { + return {}; + } + const match = rangeString.match(RANGE_REGEXP); + if (!match) { + diag.error(`Invalid range: ${rangeString}`); + return { + invalid: true, + }; + } + let op = match.groups.op; + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + if (op === '==') { + op = '='; + } + return { + op: op || '=', + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _isWildcard(s) { + return s === '*' || s === 'x' || s === 'X'; +} +function _parseVersionString(v) { + const n = parseInt(v, 10); + return isNaN(n) ? v : n; +} +function _normalizeVersionType(a, b) { + if (typeof a === typeof b) { + if (typeof a === 'number') { + return [a, b]; + } + else if (typeof a === 'string') { + return [a, b]; + } + else { + throw new Error('Version segments can only be strings or numbers'); + } + } + else { + return [String(a), String(b)]; + } +} +function _compareVersionStrings(v1, v2) { + if (_isWildcard(v1) || _isWildcard(v2)) { + return 0; + } + const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2)); + if (parsedV1 > parsedV2) { + return 1; + } + else if (parsedV1 < parsedV2) { + return -1; + } + return 0; +} +function _compareVersionSegments(v1, v2) { + for (let i = 0; i < Math.max(v1.length, v2.length); i++) { + const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0'); + if (res !== 0) { + return res; + } + } + return 0; +} +//////////////////////////////////////////////////////////////////////////////// +// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb +// License: +/* + * The ISC License + * + * Copyright (c) Isaac Z. Schlueter and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +const LETTERDASHNUMBER = '[a-zA-Z0-9-]'; +const NUMERICIDENTIFIER = '0|[1-9]\\d*'; +const NONNUMERICIDENTIFIER = `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`; +const GTLT = '((?:<|>)?=?)'; +const PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`; +const PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\.${PRERELEASEIDENTIFIER})*))`; +const BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`; +const BUILD = `(?:\\+(${BUILDIDENTIFIER}(?:\\.${BUILDIDENTIFIER})*))`; +const XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\*`; +const XRANGEPLAIN = `[v=\\s]*(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:${PRERELEASE})?${BUILD}?` + + `)?)?`; +const XRANGE = `^${GTLT}\\s*${XRANGEPLAIN}$`; +const XRANGE_REGEXP = new RegExp(XRANGE); +const HYPHENRANGE = `^\\s*(${XRANGEPLAIN})` + `\\s+-\\s+` + `(${XRANGEPLAIN})` + `\\s*$`; +const HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE); +const LONETILDE = '(?:~>?)'; +const TILDE = `^${LONETILDE}${XRANGEPLAIN}$`; +const TILDE_REGEXP = new RegExp(TILDE); +const LONECARET = '(?:\\^)'; +const CARET = `^${LONECARET}${XRANGEPLAIN}$`; +const CARET_REGEXP = new RegExp(CARET); +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285 +// +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +// ~0.0.1 --> >=0.0.1 <0.1.0-0 +function replaceTilde(comp) { + const r = TILDE_REGEXP; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } + else if (pr) { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329 +// +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +// ^0.0.1 --> >=0.0.1 <0.0.2-0 +// ^0.1.0 --> >=0.1.0 <0.2.0-0 +function replaceCaret(comp, options) { + const r = CARET_REGEXP; + const z = options?.includePrerelease ? '-0' : ''; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } + else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } + else if (pr) { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } + } + else { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390 +function replaceXRange(comp, options) { + const r = XRANGE_REGEXP; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === '=' && anyX) { + gtlt = ''; + } + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options?.includePrerelease ? '-0' : ''; + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0'; + } + else { + // nothing is forbidden + ret = '*'; + } + } + else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0; + } + p = 0; + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>='; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } + else { + m = +m + 1; + p = 0; + } + } + else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<'; + if (xm) { + M = +M + 1; + } + else { + m = +m + 1; + } + } + if (gtlt === '<') { + pr = '-0'; + } + ret = `${gtlt + M}.${m}.${p}${pr}`; + } + else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } + else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488 +// +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +function replaceHyphen(comp, options) { + const r = HYPHENRANGE_REGEXP; + return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ''; + } + else if (isX(fm)) { + from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (isX(fp)) { + from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (fpr) { + from = `>=${from}`; + } + else { + from = `>=${from}${options?.includePrerelease ? '-0' : ''}`; + } + if (isX(tM)) { + to = ''; + } + else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } + else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } + else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } + else if (options?.includePrerelease) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } + else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }); +} +//# sourceMappingURL=semver.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semver.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semver.js.map new file mode 100644 index 0000000..4786071 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/semver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/semver.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// 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.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?: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 =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\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-]+)*))?$/;\n\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\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 */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\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}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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: string[] = 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 } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = 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\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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 } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\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\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\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}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\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 */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\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: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\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 } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\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\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: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\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 } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\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\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\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\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\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\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 } else {\n m = +m + 1;\n p = 0;\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 } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\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: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.d.ts new file mode 100644 index 0000000..0b00757 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.d.ts @@ -0,0 +1,17 @@ +import { ShimWrapped } from './types'; +export declare const wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; +export declare const massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; +export declare const unwrap: (nodule: Nodule, name: keyof Nodule) => void; +export declare const massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +export interface ShimmerOptions { + logger?: typeof console.error; +} +declare function shimmer(options: ShimmerOptions): void; +declare namespace shimmer { + var wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; + var massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + var unwrap: (nodule: Nodule, name: keyof Nodule) => void; + var massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +} +export default shimmer; +//# sourceMappingURL=shimmer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js new file mode 100644 index 0000000..d996aa4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js @@ -0,0 +1,126 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Default to complaining loudly when things don't go according to plan. +// eslint-disable-next-line no-console +let logger = console.error.bind(console); +// Sets a property on an object, preserving its enumerability. +// This function assumes that the property is already writable. +function defineProperty(obj, name, value) { + const enumerable = !!obj[name] && + Object.prototype.propertyIsEnumerable.call(obj, name); + Object.defineProperty(obj, name, { + configurable: true, + enumerable, + writable: true, + value, + }); +} +export const wrap = (nodule, name, wrapper) => { + if (!nodule || !nodule[name]) { + logger('no original function ' + String(name) + ' to wrap'); + return; + } + if (!wrapper) { + logger('no wrapper function'); + logger(new Error().stack); + return; + } + const original = nodule[name]; + if (typeof original !== 'function' || typeof wrapper !== 'function') { + logger('original object and wrapper must be functions'); + return; + } + const wrapped = wrapper(original, name); + defineProperty(wrapped, '__original', original); + defineProperty(wrapped, '__unwrap', () => { + if (nodule[name] === wrapped) { + defineProperty(nodule, name, original); + } + }); + defineProperty(wrapped, '__wrapped', true); + defineProperty(nodule, name, wrapped); + return wrapped; +}; +export const massWrap = (nodules, names, wrapper) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to wrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + wrap(nodule, name, wrapper); + }); + }); +}; +export const unwrap = (nodule, name) => { + if (!nodule || !nodule[name]) { + logger('no function to unwrap.'); + logger(new Error().stack); + return; + } + const wrapped = nodule[name]; + if (!wrapped.__unwrap) { + logger('no original to unwrap to -- has ' + + String(name) + + ' already been unwrapped?'); + } + else { + wrapped.__unwrap(); + return; + } +}; +export const massUnwrap = (nodules, names) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to unwrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + unwrap(nodule, name); + }); + }); +}; +export default function shimmer(options) { + if (options && options.logger) { + if (typeof options.logger !== 'function') { + logger("new logger isn't a function, not replacing"); + } + else { + logger = options.logger; + } + } +} +shimmer.wrap = wrap; +shimmer.massWrap = massWrap; +shimmer.unwrap = unwrap; +shimmer.massUnwrap = massUnwrap; +//# sourceMappingURL=shimmer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js.map new file mode 100644 index 0000000..ffee843 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/shimmer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shimmer.js","sourceRoot":"","sources":["../../src/shimmer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\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 as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types.d.ts new file mode 100644 index 0000000..5cf7d03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types.d.ts @@ -0,0 +1,116 @@ +import { TracerProvider, MeterProvider, Span } from '@opentelemetry/api'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** Interface Instrumentation to apply patch. */ +export interface Instrumentation { + /** Instrumentation Name */ + instrumentationName: string; + /** Instrumentation Version */ + instrumentationVersion: string; + /** Method to disable the instrumentation */ + disable(): void; + /** Method to enable the instrumentation */ + enable(): void; + /** Method to set tracer provider */ + setTracerProvider(tracerProvider: TracerProvider): void; + /** Method to set meter provider */ + setMeterProvider(meterProvider: MeterProvider): void; + /** Method to set logger provider */ + setLoggerProvider?(loggerProvider: LoggerProvider): void; + /** Method to set instrumentation config */ + setConfig(config: ConfigType): void; + /** Method to get instrumentation config */ + getConfig(): ConfigType; +} +/** + * Base interface for configuration options common to all instrumentations. + * This interface can be extended by individual instrumentations to include + * additional configuration options specific to that instrumentation. + * All configuration options must be optional. + */ +export interface InstrumentationConfig { + /** + * Whether to enable the plugin. + * @default true + */ + enabled?: boolean; +} +/** + * This interface defines the params that are be added to the wrapped function + * using the "shimmer.wrap" + */ +export interface ShimWrapped extends Function { + __wrapped: boolean; + __unwrap: Function; + __original: Function; +} +export interface InstrumentationModuleFile { + /** Name of file to be patched with relative path */ + name: string; + moduleExports?: unknown; + /** Supported versions for the file. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with a function compatible + * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1). + * If the version is not supported, we won't apply instrumentation patch. + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Method to patch the instrumentation */ + patch(moduleExports: unknown, moduleVersion?: string): unknown; + /** Method to unpatch the instrumentation */ + unpatch(moduleExports?: unknown, moduleVersion?: string): void; +} +export interface InstrumentationModuleDefinition { + /** Module name or path */ + name: string; + moduleExports?: any; + /** Instrumented module version */ + moduleVersion?: string; + /** Supported version of module. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with the `satisfies` function of + * "The [semantic versioner](https://semver.org) for npm". + * If the version is not supported, we won't apply instrumentation patch (see `enable` method). + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Module internal files to be patched */ + files: InstrumentationModuleFile[]; + /** If set to true, the includePrerelease check will be included when calling semver.satisfies */ + includePrerelease?: boolean; + /** Method to patch the instrumentation */ + patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any + ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined; + /** Method to unpatch the instrumentation */ + unpatch?: ((moduleExports: any, moduleVersion?: string | undefined) => void) | undefined; +} +/** + * SpanCustomizationHook is a common way for instrumentations to expose extension points + * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle. + * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span, + * capture payloads, modify the span in some way, or carry some other side effect. + * + * The hook is registered with the instrumentation specific config by implementing an handler function with this signature, + * and if the hook is present, it will be called with the span and the event information + * when the event is emitted. + * + * When and under what conditions the hook is called and what data is passed + * in the info argument, is specific to each instrumentation and life-cycle event + * and should be documented where it is used. + * + * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events. + */ +export type SpanCustomizationHook = (span: Span, info: SpanCustomizationInfoType) => void; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types.js.map new file mode 100644 index 0000000..a2c15fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider, Span } from '@opentelemetry/api';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/** Interface Instrumentation to apply patch. */\nexport interface Instrumentation<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> {\n /** Instrumentation Name */\n instrumentationName: string;\n\n /** Instrumentation Version */\n instrumentationVersion: string;\n\n /** Method to disable the instrumentation */\n disable(): void;\n\n /** Method to enable the instrumentation */\n enable(): void;\n\n /** Method to set tracer provider */\n setTracerProvider(tracerProvider: TracerProvider): void;\n\n /** Method to set meter provider */\n setMeterProvider(meterProvider: MeterProvider): void;\n\n /** Method to set logger provider */\n setLoggerProvider?(loggerProvider: LoggerProvider): void;\n\n /** Method to set instrumentation config */\n setConfig(config: ConfigType): void;\n\n /** Method to get instrumentation config */\n getConfig(): ConfigType;\n}\n\n/**\n * Base interface for configuration options common to all instrumentations.\n * This interface can be extended by individual instrumentations to include\n * additional configuration options specific to that instrumentation.\n * All configuration options must be optional.\n */\nexport interface InstrumentationConfig {\n /**\n * Whether to enable the plugin.\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * This interface defines the params that are be added to the wrapped function\n * using the \"shimmer.wrap\"\n */\nexport interface ShimWrapped extends Function {\n __wrapped: boolean;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __unwrap: Function;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __original: Function;\n}\n\nexport interface InstrumentationModuleFile {\n /** Name of file to be patched with relative path */\n name: string;\n\n moduleExports?: unknown;\n\n /** Supported versions for the file.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with a function compatible\n * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1).\n * If the version is not supported, we won't apply instrumentation patch.\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Method to patch the instrumentation */\n patch(moduleExports: unknown, moduleVersion?: string): unknown;\n\n /** Method to unpatch the instrumentation */\n unpatch(moduleExports?: unknown, moduleVersion?: string): void;\n}\n\nexport interface InstrumentationModuleDefinition {\n /** Module name or path */\n name: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports?: any;\n\n /** Instrumented module version */\n moduleVersion?: string;\n\n /** Supported version of module.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with the `satisfies` function of\n * \"The [semantic versioner](https://semver.org) for npm\".\n * If the version is not supported, we won't apply instrumentation patch (see `enable` method).\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Module internal files to be patched */\n files: InstrumentationModuleFile[];\n\n /** If set to true, the includePrerelease check will be included when calling semver.satisfies */\n includePrerelease?: boolean;\n\n /** Method to patch the instrumentation */\n patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined;\n\n /** Method to unpatch the instrumentation */\n unpatch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | ((moduleExports: any, moduleVersion?: string | undefined) => void)\n | undefined;\n}\n\n/**\n * SpanCustomizationHook is a common way for instrumentations to expose extension points\n * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle.\n * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span,\n * capture payloads, modify the span in some way, or carry some other side effect.\n *\n * The hook is registered with the instrumentation specific config by implementing an handler function with this signature,\n * and if the hook is present, it will be called with the span and the event information\n * when the event is emitted.\n *\n * When and under what conditions the hook is called and what data is passed\n * in the info argument, is specific to each instrumentation and life-cycle event\n * and should be documented where it is used.\n *\n * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events.\n */\nexport type SpanCustomizationHook = (\n span: Span,\n info: SpanCustomizationInfoType\n) => void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.d.ts new file mode 100644 index 0000000..d9dc97d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.d.ts @@ -0,0 +1,13 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +export interface AutoLoaderResult { + instrumentations: Instrumentation[]; +} +export interface AutoLoaderOptions { + instrumentations?: (Instrumentation | Instrumentation[])[]; + tracerProvider?: TracerProvider; + meterProvider?: MeterProvider; + loggerProvider?: LoggerProvider; +} +//# sourceMappingURL=types_internal.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js new file mode 100644 index 0000000..876cf31 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types_internal.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js.map new file mode 100644 index 0000000..05a29dd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/types_internal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types_internal.js","sourceRoot":"","sources":["../../src/types_internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\nexport interface AutoLoaderResult {\n instrumentations: Instrumentation[];\n}\n\nexport interface AutoLoaderOptions {\n instrumentations?: (Instrumentation | Instrumentation[])[];\n tracerProvider?: TracerProvider;\n meterProvider?: MeterProvider;\n loggerProvider?: LoggerProvider;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/utils.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/utils.d.ts new file mode 100644 index 0000000..884e304 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/utils.d.ts @@ -0,0 +1,19 @@ +import { ShimWrapped } from './types'; +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddle(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => void, preventThrowingError?: boolean): T; +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddleAsync(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => void, preventThrowingError?: boolean): Promise; +/** + * Checks if certain function has been already wrapped + * @param func + */ +export declare function isWrapped(func: unknown): func is ShimWrapped; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/utils.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/utils.js new file mode 100644 index 0000000..a80d04c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/utils.js @@ -0,0 +1,74 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export function safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = execute(); + } + catch (e) { + error = e; + } + finally { + onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export async function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = await execute(); + } + catch (e) { + error = e; + } + finally { + onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +/** + * Checks if certain function has been already wrapped + * @param func + */ +export function isWrapped(func) { + return (typeof func === 'function' && + typeof func.__original === 'function' && + typeof func.__unwrap === 'function' && + func.__wrapped === true); +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/utils.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/utils.js.map new file mode 100644 index 0000000..e2e96dd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,QAA+D,EAC/D,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,OAAO,EAAE,CAAC;KACpB;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAAgB,EAChB,QAA+D,EAC/D,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;KAC1B;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AACD;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO,CACL,OAAO,IAAI,KAAK,UAAU;QAC1B,OAAQ,IAAoB,CAAC,UAAU,KAAK,UAAU;QACtD,OAAQ,IAAoB,CAAC,QAAQ,KAAK,UAAU;QACnD,IAAoB,CAAC,SAAS,KAAK,IAAI,CACzC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ShimWrapped } from './types';\n\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 */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n\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 */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/version.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/version.d.ts new file mode 100644 index 0000000..46e47a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.207.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/version.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/version.js new file mode 100644 index 0000000..d544661 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '0.207.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/version.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/version.js.map new file mode 100644 index 0000000..903a5f7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esm/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.207.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.d.ts new file mode 100644 index 0000000..961729a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.d.ts @@ -0,0 +1,9 @@ +import { AutoLoaderOptions } from './types_internal'; +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +export declare function registerInstrumentations(options: AutoLoaderOptions): () => void; +//# sourceMappingURL=autoLoader.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js new file mode 100644 index 0000000..dc92948 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { trace, metrics } from '@opentelemetry/api'; +import { logs } from '@opentelemetry/api-logs'; +import { disableInstrumentations, enableInstrumentations, } from './autoLoaderUtils'; +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +export function registerInstrumentations(options) { + const tracerProvider = options.tracerProvider || trace.getTracerProvider(); + const meterProvider = options.meterProvider || metrics.getMeterProvider(); + const loggerProvider = options.loggerProvider || logs.getLoggerProvider(); + const instrumentations = options.instrumentations?.flat() ?? []; + enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider); + return () => { + disableInstrumentations(instrumentations); + }; +} +//# sourceMappingURL=autoLoader.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js.map new file mode 100644 index 0000000..068eeb2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoader.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoader.js","sourceRoot":"","sources":["../../src/autoLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA0B;IAE1B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC3E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1E,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEhE,sBAAsB,CACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,CACf,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\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 */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.d.ts new file mode 100644 index 0000000..c460564 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.d.ts @@ -0,0 +1,16 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +export declare function enableInstrumentations(instrumentations: Instrumentation[], tracerProvider?: TracerProvider, meterProvider?: MeterProvider, loggerProvider?: LoggerProvider): void; +/** + * Disable instrumentations + * @param instrumentations + */ +export declare function disableInstrumentations(instrumentations: Instrumentation[]): void; +//# sourceMappingURL=autoLoaderUtils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js new file mode 100644 index 0000000..e5759f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js @@ -0,0 +1,50 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +export function enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) { + for (let i = 0, j = instrumentations.length; i < j; i++) { + const instrumentation = instrumentations[i]; + if (tracerProvider) { + instrumentation.setTracerProvider(tracerProvider); + } + if (meterProvider) { + instrumentation.setMeterProvider(meterProvider); + } + if (loggerProvider && instrumentation.setLoggerProvider) { + instrumentation.setLoggerProvider(loggerProvider); + } + // instrumentations have been already enabled during creation + // so enable only if user prevented that by setting enabled to false + // this is to prevent double enabling but when calling register all + // instrumentations should be now enabled + if (!instrumentation.getConfig().enabled) { + instrumentation.enable(); + } + } +} +/** + * Disable instrumentations + * @param instrumentations + */ +export function disableInstrumentations(instrumentations) { + instrumentations.forEach(instrumentation => instrumentation.disable()); +} +//# sourceMappingURL=autoLoaderUtils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js.map new file mode 100644 index 0000000..fb05cb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/autoLoaderUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoaderUtils.js","sourceRoot":"","sources":["../../src/autoLoaderUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,gBAAmC,EACnC,cAA+B,EAC/B,aAA6B,EAC7B,cAA+B;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,cAAc,EAAE;YAClB,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,IAAI,aAAa,EAAE;YACjB,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACjD;QACD,IAAI,cAAc,IAAI,eAAe,CAAC,iBAAiB,EAAE;YACvD,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,6DAA6D;QAC7D,oEAAoE;QACpE,mEAAmE;QACnE,yCAAyC;QACzC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE;YACxC,eAAe,CAAC,MAAM,EAAE,CAAC;SAC1B;KACF;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,gBAAmC;IAEnC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\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}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/index.d.ts new file mode 100644 index 0000000..b2b5dbc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/index.d.ts @@ -0,0 +1,9 @@ +export { registerInstrumentations } from './autoLoader'; +export { InstrumentationBase } from './platform/index'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export type { Instrumentation, InstrumentationConfig, InstrumentationModuleDefinition, InstrumentationModuleFile, ShimWrapped, SpanCustomizationHook, } from './types'; +export type { AutoLoaderOptions, AutoLoaderResult } from './types_internal'; +export { isWrapped, safeExecuteInTheMiddle, safeExecuteInTheMiddleAsync, } from './utils'; +export { SemconvStability, semconvStabilityFromStr } from './semconvStability'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/index.js new file mode 100644 index 0000000..aa64ce5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/index.js @@ -0,0 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { registerInstrumentations } from './autoLoader'; +export { InstrumentationBase } from './platform/index'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export { isWrapped, safeExecuteInTheMiddle, safeExecuteInTheMiddleAsync, } from './utils'; +export { SemconvStability, semconvStabilityFromStr } from './semconvStability'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/index.js.map new file mode 100644 index 0000000..453f88b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAUhF,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.d.ts new file mode 100644 index 0000000..801e6df --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.d.ts @@ -0,0 +1,74 @@ +import { DiagLogger, Meter, MeterProvider, Tracer, TracerProvider, Span } from '@opentelemetry/api'; +import { Logger, LoggerProvider } from '@opentelemetry/api-logs'; +import { InstrumentationModuleDefinition, Instrumentation, InstrumentationConfig, SpanCustomizationHook } from './types'; +/** + * Base abstract internal class for instrumenting node and web plugins + */ +export declare abstract class InstrumentationAbstract implements Instrumentation { + readonly instrumentationName: string; + readonly instrumentationVersion: string; + protected _config: ConfigType; + private _tracer; + private _meter; + private _logger; + protected _diag: DiagLogger; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => import("./types").ShimWrapped | undefined; + protected _unwrap: (nodule: Nodule, name: keyof Nodule) => void; + protected _massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + protected _massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; + protected get meter(): Meter; + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider: MeterProvider): void; + protected get logger(): Logger; + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider: LoggerProvider): void; + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions(): InstrumentationModuleDefinition[]; + /** + * Sets the new metric instruments with the current Meter. + */ + protected _updateMetricInstruments(): void; + getConfig(): ConfigType; + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config: ConfigType): void; + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider: TracerProvider): void; + protected get tracer(): Tracer; + abstract enable(): void; + abstract disable(): void; + /** + * Init method in which plugin should define _modules and patches for + * methods. + */ + protected abstract init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] | void; + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + protected _runSpanCustomizationHook(hookHandler: SpanCustomizationHook | undefined, triggerName: string, span: Span, info: SpanCustomizationInfoType): void; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js new file mode 100644 index 0000000..60e0db8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js @@ -0,0 +1,141 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag, metrics, trace, } from '@opentelemetry/api'; +import { logs } from '@opentelemetry/api-logs'; +import * as shimmer from './shimmer'; +/** + * Base abstract internal class for instrumenting node and web plugins + */ +export class InstrumentationAbstract { + instrumentationName; + instrumentationVersion; + _config = {}; + _tracer; + _meter; + _logger; + _diag; + constructor(instrumentationName, instrumentationVersion, config) { + this.instrumentationName = instrumentationName; + this.instrumentationVersion = instrumentationVersion; + this.setConfig(config); + this._diag = diag.createComponentLogger({ + namespace: instrumentationName, + }); + this._tracer = trace.getTracer(instrumentationName, instrumentationVersion); + this._meter = metrics.getMeter(instrumentationName, instrumentationVersion); + this._logger = logs.getLogger(instrumentationName, instrumentationVersion); + this._updateMetricInstruments(); + } + /* Api to wrap instrumented method */ + _wrap = shimmer.wrap; + /* Api to unwrap instrumented methods */ + _unwrap = shimmer.unwrap; + /* Api to mass wrap instrumented method */ + _massWrap = shimmer.massWrap; + /* Api to mass unwrap instrumented methods */ + _massUnwrap = shimmer.massUnwrap; + /* Returns meter */ + get meter() { + return this._meter; + } + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider) { + this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion); + this._updateMetricInstruments(); + } + /* Returns logger */ + get logger() { + return this._logger; + } + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider) { + this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion); + } + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions() { + const initResult = this.init() ?? []; + if (!Array.isArray(initResult)) { + return [initResult]; + } + return initResult; + } + /** + * Sets the new metric instruments with the current Meter. + */ + _updateMetricInstruments() { + return; + } + /* Returns InstrumentationConfig */ + getConfig() { + return this._config; + } + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config) { + // copy config first level properties to ensure they are immutable. + // nested properties are not copied, thus are mutable from the outside. + this._config = { + enabled: true, + ...config, + }; + } + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider) { + this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion); + } + /* Returns tracer */ + get tracer() { + return this._tracer; + } + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + _runSpanCustomizationHook(hookHandler, triggerName, span, info) { + if (!hookHandler) { + return; + } + try { + hookHandler(span, info); + } + catch (e) { + this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e); + } + } +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js.map new file mode 100644 index 0000000..ea47718 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n diag,\n DiagLogger,\n metrics,\n Meter,\n MeterProvider,\n trace,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n\n constructor(\n public readonly instrumentationName: string,\n public readonly instrumentationVersion: string,\n config: ConfigType\n ) {\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\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 public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\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 /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\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 protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.d.ts new file mode 100644 index 0000000..da04776 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationModuleDefinition, InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleDefinition implements InstrumentationModuleDefinition { + name: string; + supportedVersions: string[]; + patch?: ((exports: any, moduleVersion?: string) => any) | undefined; + unpatch?: ((exports: any, moduleVersion?: string) => void) | undefined; + files: InstrumentationModuleFile[]; + constructor(name: string, supportedVersions: string[], patch?: ((exports: any, moduleVersion?: string) => any) | undefined, unpatch?: ((exports: any, moduleVersion?: string) => void) | undefined, files?: InstrumentationModuleFile[]); +} +//# sourceMappingURL=instrumentationNodeModuleDefinition.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js new file mode 100644 index 0000000..9a6abb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class InstrumentationNodeModuleDefinition { + name; + supportedVersions; + patch; + unpatch; + files; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch, files) { + this.name = name; + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + this.files = files || []; + } +} +//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js.map new file mode 100644 index 0000000..e96069d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleDefinition.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleDefinition.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleDefinition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,MAAM,OAAO,mCAAmC;IAKrC;IACA;IAEA;IAEA;IAPT,KAAK,CAA8B;IACnC,YACS,IAAY,EACZ,iBAA2B;IAClC,8DAA8D;IACvD,KAAqD;IAC5D,8DAA8D;IACvD,OAAwD,EAC/D,KAAmC;QAN5B,SAAI,GAAJ,IAAI,CAAQ;QACZ,sBAAiB,GAAjB,iBAAiB,CAAU;QAE3B,UAAK,GAAL,KAAK,CAAgD;QAErD,YAAO,GAAP,OAAO,CAAiD;QAG/D,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n constructor(\n public name: string,\n public supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.d.ts new file mode 100644 index 0000000..51bca62 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.d.ts @@ -0,0 +1,9 @@ +import { InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleFile implements InstrumentationModuleFile { + supportedVersions: string[]; + patch: (moduleExports: any, moduleVersion?: string) => any; + unpatch: (moduleExports?: any, moduleVersion?: string) => void; + name: string; + constructor(name: string, supportedVersions: string[], patch: (moduleExports: any, moduleVersion?: string) => any, unpatch: (moduleExports?: any, moduleVersion?: string) => void); +} +//# sourceMappingURL=instrumentationNodeModuleFile.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js new file mode 100644 index 0000000..3ddd3d7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { normalize } from './platform/index'; +export class InstrumentationNodeModuleFile { + supportedVersions; + patch; + unpatch; + name; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch) { + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + this.name = normalize(name); + } +} +//# sourceMappingURL=instrumentationNodeModuleFile.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js.map new file mode 100644 index 0000000..0ded7a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/instrumentationNodeModuleFile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleFile.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleFile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,6BAA6B;IAM/B;IAEA;IAEA;IAPF,IAAI,CAAS;IACpB,YACE,IAAY,EACL,iBAA2B;IAClC,8DAA8D;IACvD,KAA0D;IACjE,8DAA8D;IACvD,OAA8D;QAJ9D,sBAAiB,GAAjB,iBAAiB,CAAU;QAE3B,UAAK,GAAL,KAAK,CAAqD;QAE1D,YAAO,GAAP,OAAO,CAAuD;QAErE,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n constructor(\n name: string,\n public supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.d.ts new file mode 100644 index 0000000..37aafc8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './noop-normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js new file mode 100644 index 0000000..d8417b4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './noop-normalize'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js.map new file mode 100644 index 0000000..fb42463 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './noop-normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.d.ts new file mode 100644 index 0000000..be36994 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationAbstract } from '../../instrumentation'; +import * as types from '../../types'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting web plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js new file mode 100644 index 0000000..8358620 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { InstrumentationAbstract } from '../../instrumentation'; +/** + * Base abstract class for instrumenting web plugins + */ +export class InstrumentationBase extends InstrumentationAbstract { + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + if (this._config.enabled) { + this.enable(); + } + } +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js.map new file mode 100644 index 0000000..a54838a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/browser/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAIhE;;GAEG;AACH,MAAM,OAAgB,mBAGpB,SAAQ,uBAAmC;IAG3C,YACE,mBAA2B,EAC3B,sBAA8B,EAC9B,MAAkB;QAElB,KAAK,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport * as types from '../../types';\nimport { InstrumentationConfig } from '../../types';\n\n/**\n * Base abstract class for instrumenting web plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.d.ts new file mode 100644 index 0000000..7c64ca3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.d.ts @@ -0,0 +1,13 @@ +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +export declare function normalize(path: string): string; +//# sourceMappingURL=noop-normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js new file mode 100644 index 0000000..bcfedbb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +export function normalize(path) { + diag.warn('Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'); + return path; +} +//# sourceMappingURL=noop-normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js.map new file mode 100644 index 0000000..e059d44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/browser/noop-normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"noop-normalize.js","sourceRoot":"","sources":["../../../../src/platform/browser/noop-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,IAAI,CACP,yOAAyO,CAC1O,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\n\n/**\n * Placeholder normalize function to replace the node variant in browser runtimes,\n * this should never be called and will perform a no-op and warn if it is called regardless.\n *\n * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation\n * package can be made node-only.\n *\n * @param path input path\n * @return unmodified path\n * @internal\n */\nexport function normalize(path: string): string {\n diag.warn(\n 'Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'\n );\n return path;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.d.ts new file mode 100644 index 0000000..2cbefb0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.d.ts @@ -0,0 +1,2 @@ +export { InstrumentationBase, normalize } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js new file mode 100644 index 0000000..1fcd712 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase, normalize } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js.map new file mode 100644 index 0000000..944037a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase, normalize } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.d.ts new file mode 100644 index 0000000..6da6060 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.d.ts @@ -0,0 +1,36 @@ +import type { Hooked } from './RequireInTheMiddleSingleton'; +export declare const ModuleNameSeparator = "/"; +type ModuleNameTrieSearchOptions = { + /** + * Whether to return the results in insertion order + */ + maintainInsertionOrder?: boolean; + /** + * Whether to return only full matches + */ + fullOnly?: boolean; +}; +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +export declare class ModuleNameTrie { + private _trie; + private _counter; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook: Hooked): void; + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName: string, { maintainInsertionOrder, fullOnly }?: ModuleNameTrieSearchOptions): Hooked[]; +} +export {}; +//# sourceMappingURL=ModuleNameTrie.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js new file mode 100644 index 0000000..45452b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js @@ -0,0 +1,85 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const ModuleNameSeparator = '/'; +/** + * Node in a `ModuleNameTrie` + */ +class ModuleNameTrieNode { + hooks = []; + children = new Map(); +} +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +export class ModuleNameTrie { + _trie = new ModuleNameTrieNode(); + _counter = 0; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook) { + let trieNode = this._trie; + for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) { + let nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + nextNode = new ModuleNameTrieNode(); + trieNode.children.set(moduleNamePart, nextNode); + } + trieNode = nextNode; + } + trieNode.hooks.push({ hook, insertedId: this._counter++ }); + } + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName, { maintainInsertionOrder, fullOnly } = {}) { + let trieNode = this._trie; + const results = []; + let foundFull = true; + for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) { + const nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + foundFull = false; + break; + } + if (!fullOnly) { + results.push(...nextNode.hooks); + } + trieNode = nextNode; + } + if (fullOnly && foundFull) { + results.push(...trieNode.hooks); + } + if (results.length === 0) { + return []; + } + if (results.length === 1) { + return [results[0].hook]; + } + if (maintainInsertionOrder) { + results.sort((a, b) => a.insertedId - b.insertedId); + } + return results.map(({ hook }) => hook); + } +} +//# sourceMappingURL=ModuleNameTrie.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js.map new file mode 100644 index 0000000..00e7879 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/ModuleNameTrie.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ModuleNameTrie.js","sourceRoot":"","sources":["../../../../src/platform/node/ModuleNameTrie.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;GAEG;AACH,MAAM,kBAAkB;IACtB,KAAK,GAAgD,EAAE,CAAC;IACxD,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;CACvD;AAaD;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,KAAK,GAAuB,IAAI,kBAAkB,EAAE,CAAC;IACrD,QAAQ,GAAW,CAAC,CAAC;IAE7B;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAE1B,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;YACvE,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACpC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;aACjD;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QACD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CACJ,UAAkB,EAClB,EAAE,sBAAsB,EAAE,QAAQ,KAAkC,EAAE;QAEtE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAgC,EAAE,CAAC;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;YAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;gBACb,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACP;YACD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjC;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QAED,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,EAAE,CAAC;SACX;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC1B;QACD,IAAI,sBAAsB,EAAE;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;SACrD;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(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 /**\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(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(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\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.d.ts new file mode 100644 index 0000000..e1b8733 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.d.ts @@ -0,0 +1,35 @@ +import type { OnRequireFn } from 'require-in-the-middle'; +export type Hooked = { + moduleName: string; + onRequire: OnRequireFn; +}; +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +export declare class RequireInTheMiddleSingleton { + private _moduleNameTrie; + private static _instance?; + private constructor(); + private _initialize; + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName: string, onRequire: OnRequireFn): Hooked; + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance(): RequireInTheMiddleSingleton; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js new file mode 100644 index 0000000..543000a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js @@ -0,0 +1,107 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Hook } from 'require-in-the-middle'; +import * as path from 'path'; +import { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie'; +/** + * Whether Mocha is running in this process + * Inspired by https://github.com/AndreasPizsa/detect-mocha + * + * @type {boolean} + */ +const isMocha = [ + 'afterEach', + 'after', + 'beforeEach', + 'before', + 'describe', + 'it', +].every(fn => { + // @ts-expect-error TS7053: Element implicitly has an 'any' type + return typeof global[fn] === 'function'; +}); +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +export class RequireInTheMiddleSingleton { + _moduleNameTrie = new ModuleNameTrie(); + static _instance; + constructor() { + this._initialize(); + } + _initialize() { + new Hook( + // Intercept all `require` calls; we will filter the matching ones below + null, { internals: true }, (exports, name, basedir) => { + // For internal files on Windows, `name` will use backslash as the path separator + const normalizedModuleName = normalizePathSeparators(name); + const matches = this._moduleNameTrie.search(normalizedModuleName, { + maintainInsertionOrder: true, + // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises'). + // This matches the behavior of `require-in-the-middle`. + // `basedir` is always `undefined` for core modules. + fullOnly: basedir === undefined, + }); + for (const { onRequire } of matches) { + exports = onRequire(exports, name, basedir); + } + return exports; + }); + } + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName, onRequire) { + const hooked = { moduleName, onRequire }; + this._moduleNameTrie.insert(hooked); + return hooked; + } + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance() { + // Mocha runs all test suites in the same process + // This prevents test suites from sharing a singleton + if (isMocha) + return new RequireInTheMiddleSingleton(); + return (this._instance = + this._instance ?? new RequireInTheMiddleSingleton()); + } +} +/** + * Normalize the path separators to forward slash in a module name or path + * + * @param {string} moduleNameOrPath Module name or path + * @returns {string} Normalized module name or path + */ +function normalizePathSeparators(moduleNameOrPath) { + return path.sep !== ModuleNameSeparator + ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator) + : moduleNameOrPath; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js.map new file mode 100644 index 0000000..0d20243 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/RequireInTheMiddleSingleton.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RequireInTheMiddleSingleton.js","sourceRoot":"","sources":["../../../../src/platform/node/RequireInTheMiddleSingleton.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvE;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IACd,WAAW;IACX,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,IAAI;CACL,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;IACX,gEAAgE;IAChE,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,OAAO,2BAA2B;IAC9B,eAAe,GAAmB,IAAI,cAAc,EAAE,CAAC;IACvD,MAAM,CAAC,SAAS,CAA+B;IAEvD;QACE,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI;QACN,wEAAwE;QACxE,IAAI,EACJ,EAAE,SAAS,EAAE,IAAI,EAAE,EACnB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACzB,iFAAiF;YACjF,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE3D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,oBAAoB,EAAE;gBAChE,sBAAsB,EAAE,IAAI;gBAC5B,gFAAgF;gBAChF,wDAAwD;gBACxD,oDAAoD;gBACpD,QAAQ,EAAE,OAAO,KAAK,SAAS;aAChC,CAAC,CAAC;YAEH,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE;gBACnC,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;aAC7C;YAED,OAAO,OAAO,CAAC;QACjB,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,UAAkB,EAAE,SAAsB;QACjD,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW;QAChB,iDAAiD;QACjD,qDAAqD;QACrD,IAAI,OAAO;YAAE,OAAO,IAAI,2BAA2B,EAAE,CAAC;QAEtD,OAAO,CAAC,IAAI,CAAC,SAAS;YACpB,IAAI,CAAC,SAAS,IAAI,IAAI,2BAA2B,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,gBAAwB;IACvD,OAAO,IAAI,CAAC,GAAG,KAAK,mBAAmB;QACrC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC5D,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\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/**\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 */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\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\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\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: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\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: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.d.ts new file mode 100644 index 0000000..181ca82 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js new file mode 100644 index 0000000..27ac5e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './normalize'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js.map new file mode 100644 index 0000000..7ce23f9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.d.ts new file mode 100644 index 0000000..a74d6bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.d.ts @@ -0,0 +1,25 @@ +import * as types from '../../types'; +import { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer'; +import { InstrumentationAbstract } from '../../instrumentation'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting node plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + private _modules; + private _hooks; + private _requireInTheMiddleSingleton; + private _enabled; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: typeof wrap; + protected _unwrap: typeof unwrap; + protected _massWrap: typeof massWrap; + protected _massUnwrap: typeof massUnwrap; + private _warnOnPreloadedModules; + private _extractPackageVersion; + private _onRequire; + enable(): void; + disable(): void; + isEnabled(): boolean; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js new file mode 100644 index 0000000..68d5fd3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js @@ -0,0 +1,278 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as path from 'path'; +import { types as utilTypes } from 'util'; +import { satisfies } from '../../semver'; +import { wrap, unwrap } from '../../shimmer'; +import { InstrumentationAbstract } from '../../instrumentation'; +import { RequireInTheMiddleSingleton, } from './RequireInTheMiddleSingleton'; +import { Hook as HookImport } from 'import-in-the-middle'; +import { diag } from '@opentelemetry/api'; +import { Hook as HookRequire } from 'require-in-the-middle'; +import { readFileSync } from 'fs'; +import { isWrapped } from '../../utils'; +/** + * Base abstract class for instrumenting node plugins + */ +export class InstrumentationBase extends InstrumentationAbstract { + _modules; + _hooks = []; + _requireInTheMiddleSingleton = RequireInTheMiddleSingleton.getInstance(); + _enabled = false; + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + let modules = this.init(); + if (modules && !Array.isArray(modules)) { + modules = [modules]; + } + this._modules = modules || []; + if (this._config.enabled) { + this.enable(); + } + } + _wrap = (moduleExports, name, wrapper) => { + if (isWrapped(moduleExports[name])) { + this._unwrap(moduleExports, name); + } + if (!utilTypes.isProxy(moduleExports)) { + return wrap(moduleExports, name, wrapper); + } + else { + const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper); + Object.defineProperty(moduleExports, name, { + value: wrapped, + }); + return wrapped; + } + }; + _unwrap = (moduleExports, name) => { + if (!utilTypes.isProxy(moduleExports)) { + return unwrap(moduleExports, name); + } + else { + return Object.defineProperty(moduleExports, name, { + value: moduleExports[name], + }); + } + }; + _massWrap = (moduleExportsArray, names, wrapper) => { + if (!moduleExportsArray) { + diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._wrap(moduleExports, name, wrapper); + }); + }); + }; + _massUnwrap = (moduleExportsArray, names) => { + if (!moduleExportsArray) { + diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._unwrap(moduleExports, name); + }); + }); + }; + _warnOnPreloadedModules() { + this._modules.forEach((module) => { + const { name } = module; + try { + const resolvedModule = require.resolve(name); + if (require.cache[resolvedModule]) { + // Module is already cached, which means the instrumentation hook might not work + this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`); + } + } + catch { + // Module isn't available, we can simply skip + } + }); + } + _extractPackageVersion(baseDir) { + try { + const json = readFileSync(path.join(baseDir, 'package.json'), { + encoding: 'utf8', + }); + const version = JSON.parse(json).version; + return typeof version === 'string' ? version : undefined; + } + catch { + diag.warn('Failed extracting version', baseDir); + } + return undefined; + } + _onRequire(module, exports, name, baseDir) { + if (!baseDir) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', { + module: module.name, + }); + return module.patch(exports); + } + } + return exports; + } + const version = this._extractPackageVersion(baseDir); + module.moduleVersion = version; + if (module.name === name) { + // main module + if (isSupported(module.supportedVersions, version, module.includePrerelease)) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for module on require hook', { + module: module.name, + version: module.moduleVersion, + baseDir, + }); + return module.patch(exports, module.moduleVersion); + } + } + } + return exports; + } + // internal file + const files = module.files ?? []; + const normalizedName = path.normalize(name); + const supportedFileInstrumentations = files + .filter(f => f.name === normalizedName) + .filter(f => isSupported(f.supportedVersions, version, module.includePrerelease)); + return supportedFileInstrumentations.reduce((patchedExports, file) => { + file.moduleExports = patchedExports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + baseDir, + }); + // patch signature is not typed, so we cast it assuming it's correct + return file.patch(patchedExports, module.moduleVersion); + } + return patchedExports; + }, exports); + } + enable() { + if (this._enabled) { + return; + } + this._enabled = true; + // already hooked, just call patch again + if (this._hooks.length > 0) { + for (const module of this._modules) { + if (typeof module.patch === 'function' && module.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + }); + module.patch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.patch(file.moduleExports, module.moduleVersion); + } + } + } + return; + } + this._warnOnPreloadedModules(); + for (const module of this._modules) { + const hookFn = (exports, name, baseDir) => { + if (!baseDir && path.isAbsolute(name)) { + const parsedPath = path.parse(name); + name = parsedPath.name; + baseDir = parsedPath.dir; + } + return this._onRequire(module, exports, name, baseDir); + }; + const onRequire = (exports, name, baseDir) => { + return this._onRequire(module, exports, name, baseDir); + }; + // `RequireInTheMiddleSingleton` does not support absolute paths. + // For an absolute paths, we must create a separate instance of the + // require-in-the-middle `Hook`. + const hook = path.isAbsolute(module.name) + ? new HookRequire([module.name], { internals: true }, onRequire) + : this._requireInTheMiddleSingleton.register(module.name, onRequire); + this._hooks.push(hook); + const esmHook = new HookImport([module.name], { internals: false }, hookFn); + this._hooks.push(esmHook); + } + } + disable() { + if (!this._enabled) { + return; + } + this._enabled = false; + for (const module of this._modules) { + if (typeof module.unpatch === 'function' && module.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + }); + module.unpatch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.unpatch(file.moduleExports, module.moduleVersion); + } + } + } + } + isEnabled() { + return this._enabled; + } +} +function isSupported(supportedVersions, version, includePrerelease) { + if (typeof version === 'undefined') { + // If we don't have the version, accept the wildcard case only + return supportedVersions.includes('*'); + } + return supportedVersions.some(supportedVersion => { + return satisfies(version, supportedVersion, { includePrerelease }); + }); +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js.map new file mode 100644 index 0000000..db5fdd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/node/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n RequireInTheMiddleSingleton,\n Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\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(\n `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\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = 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 } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\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 =>\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\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(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: 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: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\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 HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: false },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.d.ts new file mode 100644 index 0000000..d8e833e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.d.ts @@ -0,0 +1,2 @@ +export { normalize } from 'path'; +//# sourceMappingURL=normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js new file mode 100644 index 0000000..f6280d5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { normalize } from 'path'; +//# sourceMappingURL=normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js.map new file mode 100644 index 0000000..919a813 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/platform/node/normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../src/platform/node/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { normalize } from 'path';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.d.ts new file mode 100644 index 0000000..7bfd831 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.d.ts @@ -0,0 +1,58 @@ +export declare enum SemconvStability { + /** Emit only stable semantic conventions. */ + STABLE = 1, + /** Emit only old semantic conventions. */ + OLD = 2, + /** Emit both stable and old semantic conventions. */ + DUPLICATE = 3 +} +type SemConvStabilityNamespace = 'http' | 'messaging' | 'database' | 'k8s' | (string & {}); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +export declare function semconvStabilityFromStr(namespace: SemConvStabilityNamespace, str: string | undefined): SemconvStability; +export {}; +//# sourceMappingURL=semconvStability.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js new file mode 100644 index 0000000..11ed6de --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js @@ -0,0 +1,90 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var SemconvStability; +(function (SemconvStability) { + /** Emit only stable semantic conventions. */ + SemconvStability[SemconvStability["STABLE"] = 1] = "STABLE"; + /** Emit only old semantic conventions. */ + SemconvStability[SemconvStability["OLD"] = 2] = "OLD"; + /** Emit both stable and old semantic conventions. */ + SemconvStability[SemconvStability["DUPLICATE"] = 3] = "DUPLICATE"; +})(SemconvStability || (SemconvStability = {})); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +export function semconvStabilityFromStr(namespace, str) { + let semconvStability = SemconvStability.OLD; + // The same parsing of `str` as `getStringListFromEnv` from the core pkg. + const entries = str + ?.split(',') + .map(v => v.trim()) + .filter(s => s !== ''); + for (const entry of entries ?? []) { + if (entry.toLowerCase() === namespace + '/dup') { + // DUPLICATE takes highest precedence. + semconvStability = SemconvStability.DUPLICATE; + break; + } + else if (entry.toLowerCase() === namespace) { + semconvStability = SemconvStability.STABLE; + } + } + return semconvStability; +} +//# sourceMappingURL=semconvStability.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js.map new file mode 100644 index 0000000..c724aea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semconvStability.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconvStability.js","sourceRoot":"","sources":["../../src/semconvStability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,6CAA6C;IAC7C,2DAAY,CAAA;IACZ,0CAA0C;IAC1C,qDAAS,CAAA;IACT,qDAAqD;IACrD,iEAAqB,CAAA;AACvB,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAoC,EACpC,GAAuB;IAEvB,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC;IAE5C,yEAAyE;IACzE,MAAM,OAAO,GAAG,GAAG;QACjB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,EAAE,EAAE;QACjC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,GAAG,MAAM,EAAE;YAC9C,sCAAsC;YACtC,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC;YAC9C,MAAM;SACP;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;YAC5C,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC;SAC5C;KACF;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\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 */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\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 } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semver.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semver.d.ts new file mode 100644 index 0000000..30799dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semver.d.ts @@ -0,0 +1,16 @@ +/** Interface for the options to configure semantic versioning satisfy check. */ +export interface SatisfiesOptions { + /** + * If set to true, the pre-release checks will be included + * as described [here](https://github.com/npm/node-semver#prerelease-tags). + */ + includePrerelease?: boolean; +} +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +export declare function satisfies(version: string, range: string, options?: SatisfiesOptions): boolean; +//# sourceMappingURL=semver.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js new file mode 100644 index 0000000..3909548 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js @@ -0,0 +1,514 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// This is a custom semantic versioning implementation compatible with the +// `satisfies(version, range, options?)` function from the `semver` npm package; +// with the exception that the `loose` option is not supported. +// +// The motivation for the custom semver implementation is that +// `semver` package has some initialization delay (lots of RegExp init and compile) +// and this leads to coldstart overhead for the OTEL Lambda Node.js layer. +// Hence, we have implemented lightweight version of it internally with required functionalities. +import { diag } from '@opentelemetry/api'; +const 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-]+)*))?$/; +const 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-]+)*))?$/; +const operatorResMap = { + '>': [1], + '>=': [0, 1], + '=': [0], + '<=': [-1, 0], + '<': [-1], + '!=': [-1, 1], +}; +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +export function satisfies(version, range, options) { + // Strict semver format check + if (!_validateVersion(version)) { + diag.error(`Invalid version: ${version}`); + return false; + } + // If range is empty, satisfy check succeeds regardless what version is + if (!range) { + return true; + } + // Cleanup range + range = range.replace(/([<>=~^]+)\s+/g, '$1'); + // Parse version + const parsedVersion = _parseVersion(version); + if (!parsedVersion) { + return false; + } + const allParsedRanges = []; + // Check given version whether it satisfies given range expression + const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options); + // If check result is OK, + // do another final check for pre-release, if pre-release check is included by option + if (checkResult && !options?.includePrerelease) { + return _doPreleaseCheck(parsedVersion, allParsedRanges); + } + return checkResult; +} +function _validateVersion(version) { + return typeof version === 'string' && VERSION_REGEXP.test(version); +} +function _doSatisfies(parsedVersion, range, allParsedRanges, options) { + if (range.includes('||')) { + // A version matches a range if and only if + // every comparator in at least one of the ||-separated comparator sets is satisfied by the version + const ranges = range.trim().split('||'); + for (const r of ranges) { + if (_checkRange(parsedVersion, r, allParsedRanges, options)) { + return true; + } + } + return false; + } + else if (range.includes(' - ')) { + // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc + range = replaceHyphen(range, options); + } + else if (range.includes(' ')) { + // Multiple separated ranges and all needs to be satisfied for success + const ranges = range + .trim() + .replace(/\s{2,}/g, ' ') + .split(' '); + for (const r of ranges) { + if (!_checkRange(parsedVersion, r, allParsedRanges, options)) { + return false; + } + } + return true; + } + // Check given parsed version with given range + return _checkRange(parsedVersion, range, allParsedRanges, options); +} +function _checkRange(parsedVersion, range, allParsedRanges, options) { + range = _normalizeRange(range, options); + if (range.includes(' ')) { + // If there are multiple ranges separated, satisfy each of them + return _doSatisfies(parsedVersion, range, allParsedRanges, options); + } + else { + // Validate and parse range + const parsedRange = _parseRange(range); + allParsedRanges.push(parsedRange); + // Check parsed version by parsed range + return _satisfies(parsedVersion, parsedRange); + } +} +function _satisfies(parsedVersion, parsedRange) { + // If range is invalid, satisfy check fails (no error throw) + if (parsedRange.invalid) { + return false; + } + // If range is empty or wildcard, satisfy check succeeds regardless what version is + if (!parsedRange.version || _isWildcard(parsedRange.version)) { + return true; + } + // Compare version segment first + let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []); + // If versions segments are equal, compare by pre-release segments + if (comparisonResult === 0) { + const versionPrereleaseSegments = parsedVersion.prereleaseSegments || []; + const rangePrereleaseSegments = parsedRange.prereleaseSegments || []; + if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) { + comparisonResult = 0; + } + else if (!versionPrereleaseSegments.length && + rangePrereleaseSegments.length) { + comparisonResult = 1; + } + else if (versionPrereleaseSegments.length && + !rangePrereleaseSegments.length) { + comparisonResult = -1; + } + else { + comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments); + } + } + // Resolve check result according to comparison operator + return operatorResMap[parsedRange.op]?.includes(comparisonResult); +} +function _doPreleaseCheck(parsedVersion, allParsedRanges) { + if (parsedVersion.prerelease) { + return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version); + } + return true; +} +function _normalizeRange(range, options) { + range = range.trim(); + range = replaceCaret(range, options); + range = replaceTilde(range); + range = replaceXRange(range, options); + range = range.trim(); + return range; +} +function isX(id) { + return !id || id.toLowerCase() === 'x' || id === '*'; +} +function _parseVersion(versionString) { + const match = versionString.match(VERSION_REGEXP); + if (!match) { + diag.error(`Invalid version: ${versionString}`); + return undefined; + } + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + return { + op: undefined, + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _parseRange(rangeString) { + if (!rangeString) { + return {}; + } + const match = rangeString.match(RANGE_REGEXP); + if (!match) { + diag.error(`Invalid range: ${rangeString}`); + return { + invalid: true, + }; + } + let op = match.groups.op; + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + if (op === '==') { + op = '='; + } + return { + op: op || '=', + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _isWildcard(s) { + return s === '*' || s === 'x' || s === 'X'; +} +function _parseVersionString(v) { + const n = parseInt(v, 10); + return isNaN(n) ? v : n; +} +function _normalizeVersionType(a, b) { + if (typeof a === typeof b) { + if (typeof a === 'number') { + return [a, b]; + } + else if (typeof a === 'string') { + return [a, b]; + } + else { + throw new Error('Version segments can only be strings or numbers'); + } + } + else { + return [String(a), String(b)]; + } +} +function _compareVersionStrings(v1, v2) { + if (_isWildcard(v1) || _isWildcard(v2)) { + return 0; + } + const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2)); + if (parsedV1 > parsedV2) { + return 1; + } + else if (parsedV1 < parsedV2) { + return -1; + } + return 0; +} +function _compareVersionSegments(v1, v2) { + for (let i = 0; i < Math.max(v1.length, v2.length); i++) { + const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0'); + if (res !== 0) { + return res; + } + } + return 0; +} +//////////////////////////////////////////////////////////////////////////////// +// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb +// License: +/* + * The ISC License + * + * Copyright (c) Isaac Z. Schlueter and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +const LETTERDASHNUMBER = '[a-zA-Z0-9-]'; +const NUMERICIDENTIFIER = '0|[1-9]\\d*'; +const NONNUMERICIDENTIFIER = `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`; +const GTLT = '((?:<|>)?=?)'; +const PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`; +const PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\.${PRERELEASEIDENTIFIER})*))`; +const BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`; +const BUILD = `(?:\\+(${BUILDIDENTIFIER}(?:\\.${BUILDIDENTIFIER})*))`; +const XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\*`; +const XRANGEPLAIN = `[v=\\s]*(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:${PRERELEASE})?${BUILD}?` + + `)?)?`; +const XRANGE = `^${GTLT}\\s*${XRANGEPLAIN}$`; +const XRANGE_REGEXP = new RegExp(XRANGE); +const HYPHENRANGE = `^\\s*(${XRANGEPLAIN})` + `\\s+-\\s+` + `(${XRANGEPLAIN})` + `\\s*$`; +const HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE); +const LONETILDE = '(?:~>?)'; +const TILDE = `^${LONETILDE}${XRANGEPLAIN}$`; +const TILDE_REGEXP = new RegExp(TILDE); +const LONECARET = '(?:\\^)'; +const CARET = `^${LONECARET}${XRANGEPLAIN}$`; +const CARET_REGEXP = new RegExp(CARET); +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285 +// +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +// ~0.0.1 --> >=0.0.1 <0.1.0-0 +function replaceTilde(comp) { + const r = TILDE_REGEXP; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } + else if (pr) { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329 +// +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +// ^0.0.1 --> >=0.0.1 <0.0.2-0 +// ^0.1.0 --> >=0.1.0 <0.2.0-0 +function replaceCaret(comp, options) { + const r = CARET_REGEXP; + const z = options?.includePrerelease ? '-0' : ''; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } + else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } + else if (pr) { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } + } + else { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390 +function replaceXRange(comp, options) { + const r = XRANGE_REGEXP; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === '=' && anyX) { + gtlt = ''; + } + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options?.includePrerelease ? '-0' : ''; + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0'; + } + else { + // nothing is forbidden + ret = '*'; + } + } + else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0; + } + p = 0; + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>='; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } + else { + m = +m + 1; + p = 0; + } + } + else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<'; + if (xm) { + M = +M + 1; + } + else { + m = +m + 1; + } + } + if (gtlt === '<') { + pr = '-0'; + } + ret = `${gtlt + M}.${m}.${p}${pr}`; + } + else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } + else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488 +// +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +function replaceHyphen(comp, options) { + const r = HYPHENRANGE_REGEXP; + return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ''; + } + else if (isX(fm)) { + from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (isX(fp)) { + from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (fpr) { + from = `>=${from}`; + } + else { + from = `>=${from}${options?.includePrerelease ? '-0' : ''}`; + } + if (isX(tM)) { + to = ''; + } + else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } + else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } + else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } + else if (options?.includePrerelease) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } + else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }); +} +//# sourceMappingURL=semver.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js.map new file mode 100644 index 0000000..4786071 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/semver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/semver.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// 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.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?: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 =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\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-]+)*))?$/;\n\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\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 */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\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}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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: string[] = 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 } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = 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\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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 } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\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\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\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}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\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 */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\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: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\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 } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\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\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: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\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 } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\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\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\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\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\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\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 } else {\n m = +m + 1;\n p = 0;\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 } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\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: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.d.ts new file mode 100644 index 0000000..0b00757 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.d.ts @@ -0,0 +1,17 @@ +import { ShimWrapped } from './types'; +export declare const wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; +export declare const massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; +export declare const unwrap: (nodule: Nodule, name: keyof Nodule) => void; +export declare const massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +export interface ShimmerOptions { + logger?: typeof console.error; +} +declare function shimmer(options: ShimmerOptions): void; +declare namespace shimmer { + var wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; + var massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + var unwrap: (nodule: Nodule, name: keyof Nodule) => void; + var massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +} +export default shimmer; +//# sourceMappingURL=shimmer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js new file mode 100644 index 0000000..d996aa4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js @@ -0,0 +1,126 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Default to complaining loudly when things don't go according to plan. +// eslint-disable-next-line no-console +let logger = console.error.bind(console); +// Sets a property on an object, preserving its enumerability. +// This function assumes that the property is already writable. +function defineProperty(obj, name, value) { + const enumerable = !!obj[name] && + Object.prototype.propertyIsEnumerable.call(obj, name); + Object.defineProperty(obj, name, { + configurable: true, + enumerable, + writable: true, + value, + }); +} +export const wrap = (nodule, name, wrapper) => { + if (!nodule || !nodule[name]) { + logger('no original function ' + String(name) + ' to wrap'); + return; + } + if (!wrapper) { + logger('no wrapper function'); + logger(new Error().stack); + return; + } + const original = nodule[name]; + if (typeof original !== 'function' || typeof wrapper !== 'function') { + logger('original object and wrapper must be functions'); + return; + } + const wrapped = wrapper(original, name); + defineProperty(wrapped, '__original', original); + defineProperty(wrapped, '__unwrap', () => { + if (nodule[name] === wrapped) { + defineProperty(nodule, name, original); + } + }); + defineProperty(wrapped, '__wrapped', true); + defineProperty(nodule, name, wrapped); + return wrapped; +}; +export const massWrap = (nodules, names, wrapper) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to wrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + wrap(nodule, name, wrapper); + }); + }); +}; +export const unwrap = (nodule, name) => { + if (!nodule || !nodule[name]) { + logger('no function to unwrap.'); + logger(new Error().stack); + return; + } + const wrapped = nodule[name]; + if (!wrapped.__unwrap) { + logger('no original to unwrap to -- has ' + + String(name) + + ' already been unwrapped?'); + } + else { + wrapped.__unwrap(); + return; + } +}; +export const massUnwrap = (nodules, names) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to unwrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + unwrap(nodule, name); + }); + }); +}; +export default function shimmer(options) { + if (options && options.logger) { + if (typeof options.logger !== 'function') { + logger("new logger isn't a function, not replacing"); + } + else { + logger = options.logger; + } + } +} +shimmer.wrap = wrap; +shimmer.massWrap = massWrap; +shimmer.unwrap = unwrap; +shimmer.massUnwrap = massUnwrap; +//# sourceMappingURL=shimmer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js.map new file mode 100644 index 0000000..ffee843 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/shimmer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shimmer.js","sourceRoot":"","sources":["../../src/shimmer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\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 as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types.d.ts new file mode 100644 index 0000000..5cf7d03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types.d.ts @@ -0,0 +1,116 @@ +import { TracerProvider, MeterProvider, Span } from '@opentelemetry/api'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** Interface Instrumentation to apply patch. */ +export interface Instrumentation { + /** Instrumentation Name */ + instrumentationName: string; + /** Instrumentation Version */ + instrumentationVersion: string; + /** Method to disable the instrumentation */ + disable(): void; + /** Method to enable the instrumentation */ + enable(): void; + /** Method to set tracer provider */ + setTracerProvider(tracerProvider: TracerProvider): void; + /** Method to set meter provider */ + setMeterProvider(meterProvider: MeterProvider): void; + /** Method to set logger provider */ + setLoggerProvider?(loggerProvider: LoggerProvider): void; + /** Method to set instrumentation config */ + setConfig(config: ConfigType): void; + /** Method to get instrumentation config */ + getConfig(): ConfigType; +} +/** + * Base interface for configuration options common to all instrumentations. + * This interface can be extended by individual instrumentations to include + * additional configuration options specific to that instrumentation. + * All configuration options must be optional. + */ +export interface InstrumentationConfig { + /** + * Whether to enable the plugin. + * @default true + */ + enabled?: boolean; +} +/** + * This interface defines the params that are be added to the wrapped function + * using the "shimmer.wrap" + */ +export interface ShimWrapped extends Function { + __wrapped: boolean; + __unwrap: Function; + __original: Function; +} +export interface InstrumentationModuleFile { + /** Name of file to be patched with relative path */ + name: string; + moduleExports?: unknown; + /** Supported versions for the file. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with a function compatible + * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1). + * If the version is not supported, we won't apply instrumentation patch. + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Method to patch the instrumentation */ + patch(moduleExports: unknown, moduleVersion?: string): unknown; + /** Method to unpatch the instrumentation */ + unpatch(moduleExports?: unknown, moduleVersion?: string): void; +} +export interface InstrumentationModuleDefinition { + /** Module name or path */ + name: string; + moduleExports?: any; + /** Instrumented module version */ + moduleVersion?: string; + /** Supported version of module. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with the `satisfies` function of + * "The [semantic versioner](https://semver.org) for npm". + * If the version is not supported, we won't apply instrumentation patch (see `enable` method). + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Module internal files to be patched */ + files: InstrumentationModuleFile[]; + /** If set to true, the includePrerelease check will be included when calling semver.satisfies */ + includePrerelease?: boolean; + /** Method to patch the instrumentation */ + patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any + ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined; + /** Method to unpatch the instrumentation */ + unpatch?: ((moduleExports: any, moduleVersion?: string | undefined) => void) | undefined; +} +/** + * SpanCustomizationHook is a common way for instrumentations to expose extension points + * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle. + * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span, + * capture payloads, modify the span in some way, or carry some other side effect. + * + * The hook is registered with the instrumentation specific config by implementing an handler function with this signature, + * and if the hook is present, it will be called with the span and the event information + * when the event is emitted. + * + * When and under what conditions the hook is called and what data is passed + * in the info argument, is specific to each instrumentation and life-cycle event + * and should be documented where it is used. + * + * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events. + */ +export type SpanCustomizationHook = (span: Span, info: SpanCustomizationInfoType) => void; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types.js new file mode 100644 index 0000000..928faad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types.js.map new file mode 100644 index 0000000..a2c15fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider, Span } from '@opentelemetry/api';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/** Interface Instrumentation to apply patch. */\nexport interface Instrumentation<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> {\n /** Instrumentation Name */\n instrumentationName: string;\n\n /** Instrumentation Version */\n instrumentationVersion: string;\n\n /** Method to disable the instrumentation */\n disable(): void;\n\n /** Method to enable the instrumentation */\n enable(): void;\n\n /** Method to set tracer provider */\n setTracerProvider(tracerProvider: TracerProvider): void;\n\n /** Method to set meter provider */\n setMeterProvider(meterProvider: MeterProvider): void;\n\n /** Method to set logger provider */\n setLoggerProvider?(loggerProvider: LoggerProvider): void;\n\n /** Method to set instrumentation config */\n setConfig(config: ConfigType): void;\n\n /** Method to get instrumentation config */\n getConfig(): ConfigType;\n}\n\n/**\n * Base interface for configuration options common to all instrumentations.\n * This interface can be extended by individual instrumentations to include\n * additional configuration options specific to that instrumentation.\n * All configuration options must be optional.\n */\nexport interface InstrumentationConfig {\n /**\n * Whether to enable the plugin.\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * This interface defines the params that are be added to the wrapped function\n * using the \"shimmer.wrap\"\n */\nexport interface ShimWrapped extends Function {\n __wrapped: boolean;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __unwrap: Function;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __original: Function;\n}\n\nexport interface InstrumentationModuleFile {\n /** Name of file to be patched with relative path */\n name: string;\n\n moduleExports?: unknown;\n\n /** Supported versions for the file.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with a function compatible\n * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1).\n * If the version is not supported, we won't apply instrumentation patch.\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Method to patch the instrumentation */\n patch(moduleExports: unknown, moduleVersion?: string): unknown;\n\n /** Method to unpatch the instrumentation */\n unpatch(moduleExports?: unknown, moduleVersion?: string): void;\n}\n\nexport interface InstrumentationModuleDefinition {\n /** Module name or path */\n name: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports?: any;\n\n /** Instrumented module version */\n moduleVersion?: string;\n\n /** Supported version of module.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with the `satisfies` function of\n * \"The [semantic versioner](https://semver.org) for npm\".\n * If the version is not supported, we won't apply instrumentation patch (see `enable` method).\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Module internal files to be patched */\n files: InstrumentationModuleFile[];\n\n /** If set to true, the includePrerelease check will be included when calling semver.satisfies */\n includePrerelease?: boolean;\n\n /** Method to patch the instrumentation */\n patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined;\n\n /** Method to unpatch the instrumentation */\n unpatch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | ((moduleExports: any, moduleVersion?: string | undefined) => void)\n | undefined;\n}\n\n/**\n * SpanCustomizationHook is a common way for instrumentations to expose extension points\n * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle.\n * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span,\n * capture payloads, modify the span in some way, or carry some other side effect.\n *\n * The hook is registered with the instrumentation specific config by implementing an handler function with this signature,\n * and if the hook is present, it will be called with the span and the event information\n * when the event is emitted.\n *\n * When and under what conditions the hook is called and what data is passed\n * in the info argument, is specific to each instrumentation and life-cycle event\n * and should be documented where it is used.\n *\n * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events.\n */\nexport type SpanCustomizationHook = (\n span: Span,\n info: SpanCustomizationInfoType\n) => void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.d.ts new file mode 100644 index 0000000..d9dc97d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.d.ts @@ -0,0 +1,13 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +export interface AutoLoaderResult { + instrumentations: Instrumentation[]; +} +export interface AutoLoaderOptions { + instrumentations?: (Instrumentation | Instrumentation[])[]; + tracerProvider?: TracerProvider; + meterProvider?: MeterProvider; + loggerProvider?: LoggerProvider; +} +//# sourceMappingURL=types_internal.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js new file mode 100644 index 0000000..876cf31 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=types_internal.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js.map new file mode 100644 index 0000000..05a29dd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/types_internal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types_internal.js","sourceRoot":"","sources":["../../src/types_internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\nexport interface AutoLoaderResult {\n instrumentations: Instrumentation[];\n}\n\nexport interface AutoLoaderOptions {\n instrumentations?: (Instrumentation | Instrumentation[])[];\n tracerProvider?: TracerProvider;\n meterProvider?: MeterProvider;\n loggerProvider?: LoggerProvider;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/utils.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/utils.d.ts new file mode 100644 index 0000000..884e304 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/utils.d.ts @@ -0,0 +1,19 @@ +import { ShimWrapped } from './types'; +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddle(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => void, preventThrowingError?: boolean): T; +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddleAsync(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => void, preventThrowingError?: boolean): Promise; +/** + * Checks if certain function has been already wrapped + * @param func + */ +export declare function isWrapped(func: unknown): func is ShimWrapped; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js new file mode 100644 index 0000000..a80d04c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js @@ -0,0 +1,74 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export function safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = execute(); + } + catch (e) { + error = e; + } + finally { + onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export async function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = await execute(); + } + catch (e) { + error = e; + } + finally { + onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +/** + * Checks if certain function has been already wrapped + * @param func + */ +export function isWrapped(func) { + return (typeof func === 'function' && + typeof func.__original === 'function' && + typeof func.__unwrap === 'function' && + func.__wrapped === true); +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js.map new file mode 100644 index 0000000..e2e96dd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,QAA+D,EAC/D,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,OAAO,EAAE,CAAC;KACpB;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAAgB,EAChB,QAA+D,EAC/D,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;KAC1B;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AACD;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO,CACL,OAAO,IAAI,KAAK,UAAU;QAC1B,OAAQ,IAAoB,CAAC,UAAU,KAAK,UAAU;QACtD,OAAQ,IAAoB,CAAC,QAAQ,KAAK,UAAU;QACnD,IAAoB,CAAC,SAAS,KAAK,IAAI,CACzC,CAAC;AACJ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ShimWrapped } from './types';\n\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 */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n\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 */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/version.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/version.d.ts new file mode 100644 index 0000000..46e47a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.207.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/version.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/version.js new file mode 100644 index 0000000..d544661 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '0.207.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/version.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/version.js.map new file mode 100644 index 0000000..903a5f7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/esnext/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.207.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.d.ts new file mode 100644 index 0000000..961729a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.d.ts @@ -0,0 +1,9 @@ +import { AutoLoaderOptions } from './types_internal'; +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +export declare function registerInstrumentations(options: AutoLoaderOptions): () => void; +//# sourceMappingURL=autoLoader.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js new file mode 100644 index 0000000..6fbd5cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js @@ -0,0 +1,39 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.registerInstrumentations = void 0; +const api_1 = require("@opentelemetry/api"); +const api_logs_1 = require("@opentelemetry/api-logs"); +const autoLoaderUtils_1 = require("./autoLoaderUtils"); +/** + * It will register instrumentations and plugins + * @param options + * @return returns function to unload instrumentation and plugins that were + * registered + */ +function registerInstrumentations(options) { + const tracerProvider = options.tracerProvider || api_1.trace.getTracerProvider(); + const meterProvider = options.meterProvider || api_1.metrics.getMeterProvider(); + const loggerProvider = options.loggerProvider || api_logs_1.logs.getLoggerProvider(); + const instrumentations = options.instrumentations?.flat() ?? []; + (0, autoLoaderUtils_1.enableInstrumentations)(instrumentations, tracerProvider, meterProvider, loggerProvider); + return () => { + (0, autoLoaderUtils_1.disableInstrumentations)(instrumentations); + }; +} +exports.registerInstrumentations = registerInstrumentations; +//# sourceMappingURL=autoLoader.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js.map new file mode 100644 index 0000000..0e1b92e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoader.js","sourceRoot":"","sources":["../../src/autoLoader.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAAoD;AACpD,sDAA+C;AAC/C,uDAG2B;AAG3B;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,OAA0B;IAE1B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,WAAK,CAAC,iBAAiB,EAAE,CAAC;IAC3E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,aAAO,CAAC,gBAAgB,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,eAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1E,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEhE,IAAA,wCAAsB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,CACf,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,IAAA,yCAAuB,EAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC;AAlBD,4DAkBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\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 */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.d.ts new file mode 100644 index 0000000..c460564 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.d.ts @@ -0,0 +1,16 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +export declare function enableInstrumentations(instrumentations: Instrumentation[], tracerProvider?: TracerProvider, meterProvider?: MeterProvider, loggerProvider?: LoggerProvider): void; +/** + * Disable instrumentations + * @param instrumentations + */ +export declare function disableInstrumentations(instrumentations: Instrumentation[]): void; +//# sourceMappingURL=autoLoaderUtils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js new file mode 100644 index 0000000..5793f70 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js @@ -0,0 +1,55 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.disableInstrumentations = exports.enableInstrumentations = void 0; +/** + * Enable instrumentations + * @param instrumentations + * @param tracerProvider + * @param meterProvider + */ +function enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) { + for (let i = 0, j = instrumentations.length; i < j; i++) { + const instrumentation = instrumentations[i]; + if (tracerProvider) { + instrumentation.setTracerProvider(tracerProvider); + } + if (meterProvider) { + instrumentation.setMeterProvider(meterProvider); + } + if (loggerProvider && instrumentation.setLoggerProvider) { + instrumentation.setLoggerProvider(loggerProvider); + } + // instrumentations have been already enabled during creation + // so enable only if user prevented that by setting enabled to false + // this is to prevent double enabling but when calling register all + // instrumentations should be now enabled + if (!instrumentation.getConfig().enabled) { + instrumentation.enable(); + } + } +} +exports.enableInstrumentations = enableInstrumentations; +/** + * Disable instrumentations + * @param instrumentations + */ +function disableInstrumentations(instrumentations) { + instrumentations.forEach(instrumentation => instrumentation.disable()); +} +exports.disableInstrumentations = disableInstrumentations; +//# sourceMappingURL=autoLoaderUtils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js.map new file mode 100644 index 0000000..d4047c7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"autoLoaderUtils.js","sourceRoot":"","sources":["../../src/autoLoaderUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAMH;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,gBAAmC,EACnC,cAA+B,EAC/B,aAA6B,EAC7B,cAA+B;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,cAAc,EAAE;YAClB,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,IAAI,aAAa,EAAE;YACjB,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACjD;QACD,IAAI,cAAc,IAAI,eAAe,CAAC,iBAAiB,EAAE;YACvD,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACnD;QACD,6DAA6D;QAC7D,oEAAoE;QACpE,mEAAmE;QACnE,yCAAyC;QACzC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE;YACxC,eAAe,CAAC,MAAM,EAAE,CAAC;SAC1B;KACF;AACH,CAAC;AAzBD,wDAyBC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CACrC,gBAAmC;IAEnC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC;AAJD,0DAIC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\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}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.d.ts new file mode 100644 index 0000000..b2b5dbc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.d.ts @@ -0,0 +1,9 @@ +export { registerInstrumentations } from './autoLoader'; +export { InstrumentationBase } from './platform/index'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export type { Instrumentation, InstrumentationConfig, InstrumentationModuleDefinition, InstrumentationModuleFile, ShimWrapped, SpanCustomizationHook, } from './types'; +export type { AutoLoaderOptions, AutoLoaderResult } from './types_internal'; +export { isWrapped, safeExecuteInTheMiddle, safeExecuteInTheMiddleAsync, } from './utils'; +export { SemconvStability, semconvStabilityFromStr } from './semconvStability'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.js new file mode 100644 index 0000000..6e63644 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.js @@ -0,0 +1,34 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.semconvStabilityFromStr = exports.SemconvStability = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = exports.isWrapped = exports.InstrumentationNodeModuleFile = exports.InstrumentationNodeModuleDefinition = exports.InstrumentationBase = exports.registerInstrumentations = void 0; +var autoLoader_1 = require("./autoLoader"); +Object.defineProperty(exports, "registerInstrumentations", { enumerable: true, get: function () { return autoLoader_1.registerInstrumentations; } }); +var index_1 = require("./platform/index"); +Object.defineProperty(exports, "InstrumentationBase", { enumerable: true, get: function () { return index_1.InstrumentationBase; } }); +var instrumentationNodeModuleDefinition_1 = require("./instrumentationNodeModuleDefinition"); +Object.defineProperty(exports, "InstrumentationNodeModuleDefinition", { enumerable: true, get: function () { return instrumentationNodeModuleDefinition_1.InstrumentationNodeModuleDefinition; } }); +var instrumentationNodeModuleFile_1 = require("./instrumentationNodeModuleFile"); +Object.defineProperty(exports, "InstrumentationNodeModuleFile", { enumerable: true, get: function () { return instrumentationNodeModuleFile_1.InstrumentationNodeModuleFile; } }); +var utils_1 = require("./utils"); +Object.defineProperty(exports, "isWrapped", { enumerable: true, get: function () { return utils_1.isWrapped; } }); +Object.defineProperty(exports, "safeExecuteInTheMiddle", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddle; } }); +Object.defineProperty(exports, "safeExecuteInTheMiddleAsync", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddleAsync; } }); +var semconvStability_1 = require("./semconvStability"); +Object.defineProperty(exports, "SemconvStability", { enumerable: true, get: function () { return semconvStability_1.SemconvStability; } }); +Object.defineProperty(exports, "semconvStabilityFromStr", { enumerable: true, get: function () { return semconvStability_1.semconvStabilityFromStr; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.js.map new file mode 100644 index 0000000..884cab9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2CAAwD;AAA/C,sHAAA,wBAAwB,OAAA;AACjC,0CAAuD;AAA9C,4GAAA,mBAAmB,OAAA;AAC5B,6FAA4F;AAAnF,0JAAA,mCAAmC,OAAA;AAC5C,iFAAgF;AAAvE,8IAAA,6BAA6B,OAAA;AAUtC,iCAIiB;AAHf,kGAAA,SAAS,OAAA;AACT,+GAAA,sBAAsB,OAAA;AACtB,oHAAA,2BAA2B,OAAA;AAE7B,uDAA+E;AAAtE,oHAAA,gBAAgB,OAAA;AAAE,2HAAA,uBAAuB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.d.ts new file mode 100644 index 0000000..801e6df --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.d.ts @@ -0,0 +1,74 @@ +import { DiagLogger, Meter, MeterProvider, Tracer, TracerProvider, Span } from '@opentelemetry/api'; +import { Logger, LoggerProvider } from '@opentelemetry/api-logs'; +import { InstrumentationModuleDefinition, Instrumentation, InstrumentationConfig, SpanCustomizationHook } from './types'; +/** + * Base abstract internal class for instrumenting node and web plugins + */ +export declare abstract class InstrumentationAbstract implements Instrumentation { + readonly instrumentationName: string; + readonly instrumentationVersion: string; + protected _config: ConfigType; + private _tracer; + private _meter; + private _logger; + protected _diag: DiagLogger; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => import("./types").ShimWrapped | undefined; + protected _unwrap: (nodule: Nodule, name: keyof Nodule) => void; + protected _massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + protected _massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; + protected get meter(): Meter; + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider: MeterProvider): void; + protected get logger(): Logger; + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider: LoggerProvider): void; + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions(): InstrumentationModuleDefinition[]; + /** + * Sets the new metric instruments with the current Meter. + */ + protected _updateMetricInstruments(): void; + getConfig(): ConfigType; + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config: ConfigType): void; + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider: TracerProvider): void; + protected get tracer(): Tracer; + abstract enable(): void; + abstract disable(): void; + /** + * Init method in which plugin should define _modules and patches for + * methods. + */ + protected abstract init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] | void; + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + protected _runSpanCustomizationHook(hookHandler: SpanCustomizationHook | undefined, triggerName: string, span: Span, info: SpanCustomizationInfoType): void; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js new file mode 100644 index 0000000..47dff67 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js @@ -0,0 +1,145 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InstrumentationAbstract = void 0; +const api_1 = require("@opentelemetry/api"); +const api_logs_1 = require("@opentelemetry/api-logs"); +const shimmer = require("./shimmer"); +/** + * Base abstract internal class for instrumenting node and web plugins + */ +class InstrumentationAbstract { + instrumentationName; + instrumentationVersion; + _config = {}; + _tracer; + _meter; + _logger; + _diag; + constructor(instrumentationName, instrumentationVersion, config) { + this.instrumentationName = instrumentationName; + this.instrumentationVersion = instrumentationVersion; + this.setConfig(config); + this._diag = api_1.diag.createComponentLogger({ + namespace: instrumentationName, + }); + this._tracer = api_1.trace.getTracer(instrumentationName, instrumentationVersion); + this._meter = api_1.metrics.getMeter(instrumentationName, instrumentationVersion); + this._logger = api_logs_1.logs.getLogger(instrumentationName, instrumentationVersion); + this._updateMetricInstruments(); + } + /* Api to wrap instrumented method */ + _wrap = shimmer.wrap; + /* Api to unwrap instrumented methods */ + _unwrap = shimmer.unwrap; + /* Api to mass wrap instrumented method */ + _massWrap = shimmer.massWrap; + /* Api to mass unwrap instrumented methods */ + _massUnwrap = shimmer.massUnwrap; + /* Returns meter */ + get meter() { + return this._meter; + } + /** + * Sets MeterProvider to this plugin + * @param meterProvider + */ + setMeterProvider(meterProvider) { + this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion); + this._updateMetricInstruments(); + } + /* Returns logger */ + get logger() { + return this._logger; + } + /** + * Sets LoggerProvider to this plugin + * @param loggerProvider + */ + setLoggerProvider(loggerProvider) { + this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion); + } + /** + * @experimental + * + * Get module definitions defined by {@link init}. + * This can be used for experimental compile-time instrumentation. + * + * @returns an array of {@link InstrumentationModuleDefinition} + */ + getModuleDefinitions() { + const initResult = this.init() ?? []; + if (!Array.isArray(initResult)) { + return [initResult]; + } + return initResult; + } + /** + * Sets the new metric instruments with the current Meter. + */ + _updateMetricInstruments() { + return; + } + /* Returns InstrumentationConfig */ + getConfig() { + return this._config; + } + /** + * Sets InstrumentationConfig to this plugin + * @param config + */ + setConfig(config) { + // copy config first level properties to ensure they are immutable. + // nested properties are not copied, thus are mutable from the outside. + this._config = { + enabled: true, + ...config, + }; + } + /** + * Sets TraceProvider to this plugin + * @param tracerProvider + */ + setTracerProvider(tracerProvider) { + this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion); + } + /* Returns tracer */ + get tracer() { + return this._tracer; + } + /** + * Execute span customization hook, if configured, and log any errors. + * Any semantics of the trigger and info are defined by the specific instrumentation. + * @param hookHandler The optional hook handler which the user has configured via instrumentation config + * @param triggerName The name of the trigger for executing the hook for logging purposes + * @param span The span to which the hook should be applied + * @param info The info object to be passed to the hook, with useful data the hook may use + */ + _runSpanCustomizationHook(hookHandler, triggerName, span, info) { + if (!hookHandler) { + return; + } + try { + hookHandler(span, info); + } + catch (e) { + this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e); + } + } +} +exports.InstrumentationAbstract = InstrumentationAbstract; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js.map new file mode 100644 index 0000000..4e2b4ef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n diag,\n DiagLogger,\n metrics,\n Meter,\n MeterProvider,\n trace,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n\n constructor(\n public readonly instrumentationName: string,\n public readonly instrumentationVersion: string,\n config: ConfigType\n ) {\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\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 public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\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 /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\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 protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.d.ts new file mode 100644 index 0000000..da04776 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationModuleDefinition, InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleDefinition implements InstrumentationModuleDefinition { + name: string; + supportedVersions: string[]; + patch?: ((exports: any, moduleVersion?: string) => any) | undefined; + unpatch?: ((exports: any, moduleVersion?: string) => void) | undefined; + files: InstrumentationModuleFile[]; + constructor(name: string, supportedVersions: string[], patch?: ((exports: any, moduleVersion?: string) => any) | undefined, unpatch?: ((exports: any, moduleVersion?: string) => void) | undefined, files?: InstrumentationModuleFile[]); +} +//# sourceMappingURL=instrumentationNodeModuleDefinition.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js new file mode 100644 index 0000000..558962a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js @@ -0,0 +1,38 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InstrumentationNodeModuleDefinition = void 0; +class InstrumentationNodeModuleDefinition { + name; + supportedVersions; + patch; + unpatch; + files; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch, files) { + this.name = name; + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + this.files = files || []; + } +} +exports.InstrumentationNodeModuleDefinition = InstrumentationNodeModuleDefinition; +//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js.map new file mode 100644 index 0000000..00787cf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleDefinition.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleDefinition.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAOH,MAAa,mCAAmC;IAKrC;IACA;IAEA;IAEA;IAPT,KAAK,CAA8B;IACnC,YACS,IAAY,EACZ,iBAA2B;IAClC,8DAA8D;IACvD,KAAqD;IAC5D,8DAA8D;IACvD,OAAwD,EAC/D,KAAmC;QAN5B,SAAI,GAAJ,IAAI,CAAQ;QACZ,sBAAiB,GAAjB,iBAAiB,CAAU;QAE3B,UAAK,GAAL,KAAK,CAAgD;QAErD,YAAO,GAAP,OAAO,CAAiD;QAG/D,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF;AAfD,kFAeC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n constructor(\n public name: string,\n public supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.d.ts new file mode 100644 index 0000000..51bca62 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.d.ts @@ -0,0 +1,9 @@ +import { InstrumentationModuleFile } from './types'; +export declare class InstrumentationNodeModuleFile implements InstrumentationModuleFile { + supportedVersions: string[]; + patch: (moduleExports: any, moduleVersion?: string) => any; + unpatch: (moduleExports?: any, moduleVersion?: string) => void; + name: string; + constructor(name: string, supportedVersions: string[], patch: (moduleExports: any, moduleVersion?: string) => any, unpatch: (moduleExports?: any, moduleVersion?: string) => void); +} +//# sourceMappingURL=instrumentationNodeModuleFile.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js new file mode 100644 index 0000000..57aee79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js @@ -0,0 +1,37 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InstrumentationNodeModuleFile = void 0; +const index_1 = require("./platform/index"); +class InstrumentationNodeModuleFile { + supportedVersions; + patch; + unpatch; + name; + constructor(name, supportedVersions, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + patch, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + unpatch) { + this.supportedVersions = supportedVersions; + this.patch = patch; + this.unpatch = unpatch; + this.name = (0, index_1.normalize)(name); + } +} +exports.InstrumentationNodeModuleFile = InstrumentationNodeModuleFile; +//# sourceMappingURL=instrumentationNodeModuleFile.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js.map new file mode 100644 index 0000000..d567f92 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentationNodeModuleFile.js","sourceRoot":"","sources":["../../src/instrumentationNodeModuleFile.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,4CAA6C;AAE7C,MAAa,6BAA6B;IAM/B;IAEA;IAEA;IAPF,IAAI,CAAS;IACpB,YACE,IAAY,EACL,iBAA2B;IAClC,8DAA8D;IACvD,KAA0D;IACjE,8DAA8D;IACvD,OAA8D;QAJ9D,sBAAiB,GAAjB,iBAAiB,CAAU;QAE3B,UAAK,GAAL,KAAK,CAAqD;QAE1D,YAAO,GAAP,OAAO,CAAuD;QAErE,IAAI,CAAC,IAAI,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF;AAdD,sEAcC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n constructor(\n name: string,\n public supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.d.ts new file mode 100644 index 0000000..37aafc8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './noop-normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js new file mode 100644 index 0000000..dbca909 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js @@ -0,0 +1,23 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalize = exports.InstrumentationBase = void 0; +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "InstrumentationBase", { enumerable: true, get: function () { return instrumentation_1.InstrumentationBase; } }); +var noop_normalize_1 = require("./noop-normalize"); +Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return noop_normalize_1.normalize; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js.map new file mode 100644 index 0000000..4539dfc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,qDAAwD;AAA/C,sHAAA,mBAAmB,OAAA;AAC5B,mDAA6C;AAApC,2GAAA,SAAS,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './noop-normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.d.ts new file mode 100644 index 0000000..be36994 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.d.ts @@ -0,0 +1,10 @@ +import { InstrumentationAbstract } from '../../instrumentation'; +import * as types from '../../types'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting web plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js new file mode 100644 index 0000000..6acbc52 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js @@ -0,0 +1,32 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InstrumentationBase = void 0; +const instrumentation_1 = require("../../instrumentation"); +/** + * Base abstract class for instrumenting web plugins + */ +class InstrumentationBase extends instrumentation_1.InstrumentationAbstract { + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + if (this._config.enabled) { + this.enable(); + } + } +} +exports.InstrumentationBase = InstrumentationBase; +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js.map new file mode 100644 index 0000000..c2fa49a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/browser/instrumentation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2DAAgE;AAIhE;;GAEG;AACH,MAAsB,mBAGpB,SAAQ,yCAAmC;IAG3C,YACE,mBAA2B,EAC3B,sBAA8B,EAC9B,MAAkB;QAElB,KAAK,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;CACF;AAjBD,kDAiBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport * as types from '../../types';\nimport { InstrumentationConfig } from '../../types';\n\n/**\n * Base abstract class for instrumenting web plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.d.ts new file mode 100644 index 0000000..7c64ca3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.d.ts @@ -0,0 +1,13 @@ +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +export declare function normalize(path: string): string; +//# sourceMappingURL=noop-normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js new file mode 100644 index 0000000..a7d26fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js @@ -0,0 +1,36 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalize = void 0; +const api_1 = require("@opentelemetry/api"); +/** + * Placeholder normalize function to replace the node variant in browser runtimes, + * this should never be called and will perform a no-op and warn if it is called regardless. + * + * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation + * package can be made node-only. + * + * @param path input path + * @return unmodified path + * @internal + */ +function normalize(path) { + api_1.diag.warn('Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'); + return path; +} +exports.normalize = normalize; +//# sourceMappingURL=noop-normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js.map new file mode 100644 index 0000000..f144ce5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/browser/noop-normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"noop-normalize.js","sourceRoot":"","sources":["../../../../src/platform/browser/noop-normalize.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA0C;AAE1C;;;;;;;;;;GAUG;AACH,SAAgB,SAAS,CAAC,IAAY;IACpC,UAAI,CAAC,IAAI,CACP,yOAAyO,CAC1O,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AALD,8BAKC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { diag } from '@opentelemetry/api';\n\n/**\n * Placeholder normalize function to replace the node variant in browser runtimes,\n * this should never be called and will perform a no-op and warn if it is called regardless.\n *\n * This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/4373 until the instrumentation\n * package can be made node-only.\n *\n * @param path input path\n * @return unmodified path\n * @internal\n */\nexport function normalize(path: string): string {\n diag.warn(\n 'Path normalization is not implemented for this platform. To silence this warning, ensure no node-specific instrumentations are loaded, and node-specific types (e.g. InstrumentationNodeModuleFile), are not used in a browser context)'\n );\n return path;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.d.ts new file mode 100644 index 0000000..2cbefb0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.d.ts @@ -0,0 +1,2 @@ +export { InstrumentationBase, normalize } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js new file mode 100644 index 0000000..3e2265e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalize = exports.InstrumentationBase = void 0; +var node_1 = require("./node"); +Object.defineProperty(exports, "InstrumentationBase", { enumerable: true, get: function () { return node_1.InstrumentationBase; } }); +Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return node_1.normalize; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js.map new file mode 100644 index 0000000..dcc246d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,+BAAwD;AAA/C,2GAAA,mBAAmB,OAAA;AAAE,iGAAA,SAAS,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { InstrumentationBase, normalize } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.d.ts new file mode 100644 index 0000000..6da6060 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.d.ts @@ -0,0 +1,36 @@ +import type { Hooked } from './RequireInTheMiddleSingleton'; +export declare const ModuleNameSeparator = "/"; +type ModuleNameTrieSearchOptions = { + /** + * Whether to return the results in insertion order + */ + maintainInsertionOrder?: boolean; + /** + * Whether to return only full matches + */ + fullOnly?: boolean; +}; +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +export declare class ModuleNameTrie { + private _trie; + private _counter; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook: Hooked): void; + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName: string, { maintainInsertionOrder, fullOnly }?: ModuleNameTrieSearchOptions): Hooked[]; +} +export {}; +//# sourceMappingURL=ModuleNameTrie.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js new file mode 100644 index 0000000..6df2c1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js @@ -0,0 +1,89 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ModuleNameTrie = exports.ModuleNameSeparator = void 0; +exports.ModuleNameSeparator = '/'; +/** + * Node in a `ModuleNameTrie` + */ +class ModuleNameTrieNode { + hooks = []; + children = new Map(); +} +/** + * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash) + */ +class ModuleNameTrie { + _trie = new ModuleNameTrieNode(); + _counter = 0; + /** + * Insert a module hook into the trie + * + * @param {Hooked} hook Hook + */ + insert(hook) { + let trieNode = this._trie; + for (const moduleNamePart of hook.moduleName.split(exports.ModuleNameSeparator)) { + let nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + nextNode = new ModuleNameTrieNode(); + trieNode.children.set(moduleNamePart, nextNode); + } + trieNode = nextNode; + } + trieNode.hooks.push({ hook, insertedId: this._counter++ }); + } + /** + * Search for matching hooks in the trie + * + * @param {string} moduleName Module name + * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order + * @param {boolean} fullOnly Whether to return only full matches + * @returns {Hooked[]} Matching hooks + */ + search(moduleName, { maintainInsertionOrder, fullOnly } = {}) { + let trieNode = this._trie; + const results = []; + let foundFull = true; + for (const moduleNamePart of moduleName.split(exports.ModuleNameSeparator)) { + const nextNode = trieNode.children.get(moduleNamePart); + if (!nextNode) { + foundFull = false; + break; + } + if (!fullOnly) { + results.push(...nextNode.hooks); + } + trieNode = nextNode; + } + if (fullOnly && foundFull) { + results.push(...trieNode.hooks); + } + if (results.length === 0) { + return []; + } + if (results.length === 1) { + return [results[0].hook]; + } + if (maintainInsertionOrder) { + results.sort((a, b) => a.insertedId - b.insertedId); + } + return results.map(({ hook }) => hook); + } +} +exports.ModuleNameTrie = ModuleNameTrie; +//# sourceMappingURL=ModuleNameTrie.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js.map new file mode 100644 index 0000000..a021a3b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ModuleNameTrie.js","sourceRoot":"","sources":["../../../../src/platform/node/ModuleNameTrie.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIU,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;GAEG;AACH,MAAM,kBAAkB;IACtB,KAAK,GAAgD,EAAE,CAAC;IACxD,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;CACvD;AAaD;;GAEG;AACH,MAAa,cAAc;IACjB,KAAK,GAAuB,IAAI,kBAAkB,EAAE,CAAC;IACrD,QAAQ,GAAW,CAAC,CAAC;IAE7B;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAE1B,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,2BAAmB,CAAC,EAAE;YACvE,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACpC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;aACjD;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QACD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CACJ,UAAkB,EAClB,EAAE,sBAAsB,EAAE,QAAQ,KAAkC,EAAE;QAEtE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAgC,EAAE,CAAC;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,KAAK,CAAC,2BAAmB,CAAC,EAAE;YAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;gBACb,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACP;YACD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjC;YACD,QAAQ,GAAG,QAAQ,CAAC;SACrB;QAED,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,EAAE,CAAC;SACX;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC1B;QACD,IAAI,sBAAsB,EAAE;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;SACrD;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF;AAlED,wCAkEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(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 /**\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(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(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\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\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}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.d.ts new file mode 100644 index 0000000..e1b8733 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.d.ts @@ -0,0 +1,35 @@ +import type { OnRequireFn } from 'require-in-the-middle'; +export type Hooked = { + moduleName: string; + onRequire: OnRequireFn; +}; +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +export declare class RequireInTheMiddleSingleton { + private _moduleNameTrie; + private static _instance?; + private constructor(); + private _initialize; + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName: string, onRequire: OnRequireFn): Hooked; + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance(): RequireInTheMiddleSingleton; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js new file mode 100644 index 0000000..6a50c1e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js @@ -0,0 +1,111 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RequireInTheMiddleSingleton = void 0; +const require_in_the_middle_1 = require("require-in-the-middle"); +const path = require("path"); +const ModuleNameTrie_1 = require("./ModuleNameTrie"); +/** + * Whether Mocha is running in this process + * Inspired by https://github.com/AndreasPizsa/detect-mocha + * + * @type {boolean} + */ +const isMocha = [ + 'afterEach', + 'after', + 'beforeEach', + 'before', + 'describe', + 'it', +].every(fn => { + // @ts-expect-error TS7053: Element implicitly has an 'any' type + return typeof global[fn] === 'function'; +}); +/** + * Singleton class for `require-in-the-middle` + * Allows instrumentation plugins to patch modules with only a single `require` patch + * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance, + * we should minimize the number of new instances of this class. + * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process + * will result in multiple instances of RITM, which will have an impact + * on the performance of instrumentation hooks being applied. + */ +class RequireInTheMiddleSingleton { + _moduleNameTrie = new ModuleNameTrie_1.ModuleNameTrie(); + static _instance; + constructor() { + this._initialize(); + } + _initialize() { + new require_in_the_middle_1.Hook( + // Intercept all `require` calls; we will filter the matching ones below + null, { internals: true }, (exports, name, basedir) => { + // For internal files on Windows, `name` will use backslash as the path separator + const normalizedModuleName = normalizePathSeparators(name); + const matches = this._moduleNameTrie.search(normalizedModuleName, { + maintainInsertionOrder: true, + // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises'). + // This matches the behavior of `require-in-the-middle`. + // `basedir` is always `undefined` for core modules. + fullOnly: basedir === undefined, + }); + for (const { onRequire } of matches) { + exports = onRequire(exports, name, basedir); + } + return exports; + }); + } + /** + * Register a hook with `require-in-the-middle` + * + * @param {string} moduleName Module name + * @param {OnRequireFn} onRequire Hook function + * @returns {Hooked} Registered hook + */ + register(moduleName, onRequire) { + const hooked = { moduleName, onRequire }; + this._moduleNameTrie.insert(hooked); + return hooked; + } + /** + * Get the `RequireInTheMiddleSingleton` singleton + * + * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton` + */ + static getInstance() { + // Mocha runs all test suites in the same process + // This prevents test suites from sharing a singleton + if (isMocha) + return new RequireInTheMiddleSingleton(); + return (this._instance = + this._instance ?? new RequireInTheMiddleSingleton()); + } +} +exports.RequireInTheMiddleSingleton = RequireInTheMiddleSingleton; +/** + * Normalize the path separators to forward slash in a module name or path + * + * @param {string} moduleNameOrPath Module name or path + * @returns {string} Normalized module name or path + */ +function normalizePathSeparators(moduleNameOrPath) { + return path.sep !== ModuleNameTrie_1.ModuleNameSeparator + ? moduleNameOrPath.split(path.sep).join(ModuleNameTrie_1.ModuleNameSeparator) + : moduleNameOrPath; +} +//# sourceMappingURL=RequireInTheMiddleSingleton.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js.map new file mode 100644 index 0000000..84c962d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RequireInTheMiddleSingleton.js","sourceRoot":"","sources":["../../../../src/platform/node/RequireInTheMiddleSingleton.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,iEAA6C;AAC7C,6BAA6B;AAC7B,qDAAuE;AAOvE;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IACd,WAAW;IACX,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,IAAI;CACL,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;IACX,gEAAgE;IAChE,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAa,2BAA2B;IAC9B,eAAe,GAAmB,IAAI,+BAAc,EAAE,CAAC;IACvD,MAAM,CAAC,SAAS,CAA+B;IAEvD;QACE,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,4BAAI;QACN,wEAAwE;QACxE,IAAI,EACJ,EAAE,SAAS,EAAE,IAAI,EAAE,EACnB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACzB,iFAAiF;YACjF,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE3D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,oBAAoB,EAAE;gBAChE,sBAAsB,EAAE,IAAI;gBAC5B,gFAAgF;gBAChF,wDAAwD;gBACxD,oDAAoD;gBACpD,QAAQ,EAAE,OAAO,KAAK,SAAS;aAChC,CAAC,CAAC;YAEH,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE;gBACnC,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;aAC7C;YAED,OAAO,OAAO,CAAC;QACjB,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,UAAkB,EAAE,SAAsB;QACjD,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW;QAChB,iDAAiD;QACjD,qDAAqD;QACrD,IAAI,OAAO;YAAE,OAAO,IAAI,2BAA2B,EAAE,CAAC;QAEtD,OAAO,CAAC,IAAI,CAAC,SAAS;YACpB,IAAI,CAAC,SAAS,IAAI,IAAI,2BAA2B,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AA5DD,kEA4DC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,gBAAwB;IACvD,OAAO,IAAI,CAAC,GAAG,KAAK,oCAAmB;QACrC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oCAAmB,CAAC;QAC5D,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\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/**\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 */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\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\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\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: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\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: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.d.ts new file mode 100644 index 0000000..181ca82 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.d.ts @@ -0,0 +1,3 @@ +export { InstrumentationBase } from './instrumentation'; +export { normalize } from './normalize'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js new file mode 100644 index 0000000..1f2ce31 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalize = exports.InstrumentationBase = void 0; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var instrumentation_1 = require("./instrumentation"); +Object.defineProperty(exports, "InstrumentationBase", { enumerable: true, get: function () { return instrumentation_1.InstrumentationBase; } }); +var normalize_1 = require("./normalize"); +Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return normalize_1.normalize; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js.map new file mode 100644 index 0000000..537c7ff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,qDAAwD;AAA/C,sHAAA,mBAAmB,OAAA;AAC5B,yCAAwC;AAA/B,sGAAA,SAAS,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { InstrumentationBase } from './instrumentation';\nexport { normalize } from './normalize';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.d.ts new file mode 100644 index 0000000..a74d6bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.d.ts @@ -0,0 +1,25 @@ +import * as types from '../../types'; +import { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer'; +import { InstrumentationAbstract } from '../../instrumentation'; +import { InstrumentationConfig } from '../../types'; +/** + * Base abstract class for instrumenting node plugins + */ +export declare abstract class InstrumentationBase extends InstrumentationAbstract implements types.Instrumentation { + private _modules; + private _hooks; + private _requireInTheMiddleSingleton; + private _enabled; + constructor(instrumentationName: string, instrumentationVersion: string, config: ConfigType); + protected _wrap: typeof wrap; + protected _unwrap: typeof unwrap; + protected _massWrap: typeof massWrap; + protected _massUnwrap: typeof massUnwrap; + private _warnOnPreloadedModules; + private _extractPackageVersion; + private _onRequire; + enable(): void; + disable(): void; + isEnabled(): boolean; +} +//# sourceMappingURL=instrumentation.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js new file mode 100644 index 0000000..42010ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js @@ -0,0 +1,282 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InstrumentationBase = void 0; +const path = require("path"); +const util_1 = require("util"); +const semver_1 = require("../../semver"); +const shimmer_1 = require("../../shimmer"); +const instrumentation_1 = require("../../instrumentation"); +const RequireInTheMiddleSingleton_1 = require("./RequireInTheMiddleSingleton"); +const import_in_the_middle_1 = require("import-in-the-middle"); +const api_1 = require("@opentelemetry/api"); +const require_in_the_middle_1 = require("require-in-the-middle"); +const fs_1 = require("fs"); +const utils_1 = require("../../utils"); +/** + * Base abstract class for instrumenting node plugins + */ +class InstrumentationBase extends instrumentation_1.InstrumentationAbstract { + _modules; + _hooks = []; + _requireInTheMiddleSingleton = RequireInTheMiddleSingleton_1.RequireInTheMiddleSingleton.getInstance(); + _enabled = false; + constructor(instrumentationName, instrumentationVersion, config) { + super(instrumentationName, instrumentationVersion, config); + let modules = this.init(); + if (modules && !Array.isArray(modules)) { + modules = [modules]; + } + this._modules = modules || []; + if (this._config.enabled) { + this.enable(); + } + } + _wrap = (moduleExports, name, wrapper) => { + if ((0, utils_1.isWrapped)(moduleExports[name])) { + this._unwrap(moduleExports, name); + } + if (!util_1.types.isProxy(moduleExports)) { + return (0, shimmer_1.wrap)(moduleExports, name, wrapper); + } + else { + const wrapped = (0, shimmer_1.wrap)(Object.assign({}, moduleExports), name, wrapper); + Object.defineProperty(moduleExports, name, { + value: wrapped, + }); + return wrapped; + } + }; + _unwrap = (moduleExports, name) => { + if (!util_1.types.isProxy(moduleExports)) { + return (0, shimmer_1.unwrap)(moduleExports, name); + } + else { + return Object.defineProperty(moduleExports, name, { + value: moduleExports[name], + }); + } + }; + _massWrap = (moduleExportsArray, names, wrapper) => { + if (!moduleExportsArray) { + api_1.diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + api_1.diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._wrap(moduleExports, name, wrapper); + }); + }); + }; + _massUnwrap = (moduleExportsArray, names) => { + if (!moduleExportsArray) { + api_1.diag.error('must provide one or more modules to patch'); + return; + } + else if (!Array.isArray(moduleExportsArray)) { + moduleExportsArray = [moduleExportsArray]; + } + if (!(names && Array.isArray(names))) { + api_1.diag.error('must provide one or more functions to wrap on modules'); + return; + } + moduleExportsArray.forEach(moduleExports => { + names.forEach(name => { + this._unwrap(moduleExports, name); + }); + }); + }; + _warnOnPreloadedModules() { + this._modules.forEach((module) => { + const { name } = module; + try { + const resolvedModule = require.resolve(name); + if (require.cache[resolvedModule]) { + // Module is already cached, which means the instrumentation hook might not work + this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`); + } + } + catch { + // Module isn't available, we can simply skip + } + }); + } + _extractPackageVersion(baseDir) { + try { + const json = (0, fs_1.readFileSync)(path.join(baseDir, 'package.json'), { + encoding: 'utf8', + }); + const version = JSON.parse(json).version; + return typeof version === 'string' ? version : undefined; + } + catch { + api_1.diag.warn('Failed extracting version', baseDir); + } + return undefined; + } + _onRequire(module, exports, name, baseDir) { + if (!baseDir) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', { + module: module.name, + }); + return module.patch(exports); + } + } + return exports; + } + const version = this._extractPackageVersion(baseDir); + module.moduleVersion = version; + if (module.name === name) { + // main module + if (isSupported(module.supportedVersions, version, module.includePrerelease)) { + if (typeof module.patch === 'function') { + module.moduleExports = exports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for module on require hook', { + module: module.name, + version: module.moduleVersion, + baseDir, + }); + return module.patch(exports, module.moduleVersion); + } + } + } + return exports; + } + // internal file + const files = module.files ?? []; + const normalizedName = path.normalize(name); + const supportedFileInstrumentations = files + .filter(f => f.name === normalizedName) + .filter(f => isSupported(f.supportedVersions, version, module.includePrerelease)); + return supportedFileInstrumentations.reduce((patchedExports, file) => { + file.moduleExports = patchedExports; + if (this._enabled) { + this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + baseDir, + }); + // patch signature is not typed, so we cast it assuming it's correct + return file.patch(patchedExports, module.moduleVersion); + } + return patchedExports; + }, exports); + } + enable() { + if (this._enabled) { + return; + } + this._enabled = true; + // already hooked, just call patch again + if (this._hooks.length > 0) { + for (const module of this._modules) { + if (typeof module.patch === 'function' && module.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + }); + module.patch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.patch(file.moduleExports, module.moduleVersion); + } + } + } + return; + } + this._warnOnPreloadedModules(); + for (const module of this._modules) { + const hookFn = (exports, name, baseDir) => { + if (!baseDir && path.isAbsolute(name)) { + const parsedPath = path.parse(name); + name = parsedPath.name; + baseDir = parsedPath.dir; + } + return this._onRequire(module, exports, name, baseDir); + }; + const onRequire = (exports, name, baseDir) => { + return this._onRequire(module, exports, name, baseDir); + }; + // `RequireInTheMiddleSingleton` does not support absolute paths. + // For an absolute paths, we must create a separate instance of the + // require-in-the-middle `Hook`. + const hook = path.isAbsolute(module.name) + ? new require_in_the_middle_1.Hook([module.name], { internals: true }, onRequire) + : this._requireInTheMiddleSingleton.register(module.name, onRequire); + this._hooks.push(hook); + const esmHook = new import_in_the_middle_1.Hook([module.name], { internals: false }, hookFn); + this._hooks.push(esmHook); + } + } + disable() { + if (!this._enabled) { + return; + } + this._enabled = false; + for (const module of this._modules) { + if (typeof module.unpatch === 'function' && module.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + }); + module.unpatch(module.moduleExports, module.moduleVersion); + } + for (const file of module.files) { + if (file.moduleExports) { + this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', { + module: module.name, + version: module.moduleVersion, + fileName: file.name, + }); + file.unpatch(file.moduleExports, module.moduleVersion); + } + } + } + } + isEnabled() { + return this._enabled; + } +} +exports.InstrumentationBase = InstrumentationBase; +function isSupported(supportedVersions, version, includePrerelease) { + if (typeof version === 'undefined') { + // If we don't have the version, accept the wildcard case only + return supportedVersions.includes('*'); + } + return supportedVersions.some(supportedVersion => { + return (0, semver_1.satisfies)(version, supportedVersion, { includePrerelease }); + }); +} +//# sourceMappingURL=instrumentation.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js.map new file mode 100644 index 0000000..5d2436c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../../src/platform/node/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n RequireInTheMiddleSingleton,\n Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\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(\n `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\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = 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 } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\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 =>\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\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(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: 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: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\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 HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: false },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.d.ts new file mode 100644 index 0000000..d8e833e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.d.ts @@ -0,0 +1,2 @@ +export { normalize } from 'path'; +//# sourceMappingURL=normalize.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js new file mode 100644 index 0000000..148b3a0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalize = void 0; +var path_1 = require("path"); +Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return path_1.normalize; } }); +//# sourceMappingURL=normalize.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js.map new file mode 100644 index 0000000..9d64fe5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../src/platform/node/normalize.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6BAAiC;AAAxB,iGAAA,SAAS,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { normalize } from 'path';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.d.ts new file mode 100644 index 0000000..7bfd831 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.d.ts @@ -0,0 +1,58 @@ +export declare enum SemconvStability { + /** Emit only stable semantic conventions. */ + STABLE = 1, + /** Emit only old semantic conventions. */ + OLD = 2, + /** Emit both stable and old semantic conventions. */ + DUPLICATE = 3 +} +type SemConvStabilityNamespace = 'http' | 'messaging' | 'database' | 'k8s' | (string & {}); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +export declare function semconvStabilityFromStr(namespace: SemConvStabilityNamespace, str: string | undefined): SemconvStability; +export {}; +//# sourceMappingURL=semconvStability.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js new file mode 100644 index 0000000..c554e4a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js @@ -0,0 +1,94 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.semconvStabilityFromStr = exports.SemconvStability = void 0; +var SemconvStability; +(function (SemconvStability) { + /** Emit only stable semantic conventions. */ + SemconvStability[SemconvStability["STABLE"] = 1] = "STABLE"; + /** Emit only old semantic conventions. */ + SemconvStability[SemconvStability["OLD"] = 2] = "OLD"; + /** Emit both stable and old semantic conventions. */ + SemconvStability[SemconvStability["DUPLICATE"] = 3] = "DUPLICATE"; +})(SemconvStability = exports.SemconvStability || (exports.SemconvStability = {})); +/** + * Determine the appropriate semconv stability for the given namespace. + * + * This will parse the given string of comma-separated values (often + * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}` + * or `${namespace}/dup` tokens. This is a pattern defined by a number of + * non-normative semconv documents. + * + * For example: + * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ + * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/ + * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/ + * + * Usage: + * + * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation'; + * + * export class FooInstrumentation extends InstrumentationBase { + * private _semconvStability: SemconvStability; + * constructor(config: FooInstrumentationConfig = {}) { + * super('@opentelemetry/instrumentation-foo', VERSION, config); + * + * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * process.env.OTEL_SEMCONV_STABILITY_OPT_IN + * ); + * + * // or when supporting a `semconvStabilityOptIn` config option (e.g. for + * // the web where there are no envvars). + * this._semconvStability = semconvStabilityFromStr( + * 'http', + * config?.semconvStabilityOptIn + * ); + * } + * } + * + * // Then, to apply semconv, use the following or similar: + * if (this._semconvStability & SemconvStability.OLD) { + * // ... + * } + * if (this._semconvStability & SemconvStability.STABLE) { + * // ... + * } + * + */ +function semconvStabilityFromStr(namespace, str) { + let semconvStability = SemconvStability.OLD; + // The same parsing of `str` as `getStringListFromEnv` from the core pkg. + const entries = str + ?.split(',') + .map(v => v.trim()) + .filter(s => s !== ''); + for (const entry of entries ?? []) { + if (entry.toLowerCase() === namespace + '/dup') { + // DUPLICATE takes highest precedence. + semconvStability = SemconvStability.DUPLICATE; + break; + } + else if (entry.toLowerCase() === namespace) { + semconvStability = SemconvStability.STABLE; + } + } + return semconvStability; +} +exports.semconvStabilityFromStr = semconvStabilityFromStr; +//# sourceMappingURL=semconvStability.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js.map new file mode 100644 index 0000000..04041fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semconvStability.js","sourceRoot":"","sources":["../../src/semconvStability.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,6CAA6C;IAC7C,2DAAY,CAAA;IACZ,0CAA0C;IAC1C,qDAAS,CAAA;IACT,qDAAqD;IACrD,iEAAqB,CAAA;AACvB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,SAAgB,uBAAuB,CACrC,SAAoC,EACpC,GAAuB;IAEvB,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC;IAE5C,yEAAyE;IACzE,MAAM,OAAO,GAAG,GAAG;QACjB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,EAAE,EAAE;QACjC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,GAAG,MAAM,EAAE;YAC9C,sCAAsC;YACtC,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC;YAC9C,MAAM;SACP;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;YAC5C,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC;SAC5C;KACF;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAtBD,0DAsBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\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 */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\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 } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.d.ts new file mode 100644 index 0000000..30799dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.d.ts @@ -0,0 +1,16 @@ +/** Interface for the options to configure semantic versioning satisfy check. */ +export interface SatisfiesOptions { + /** + * If set to true, the pre-release checks will be included + * as described [here](https://github.com/npm/node-semver#prerelease-tags). + */ + includePrerelease?: boolean; +} +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +export declare function satisfies(version: string, range: string, options?: SatisfiesOptions): boolean; +//# sourceMappingURL=semver.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.js new file mode 100644 index 0000000..de86ac0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.js @@ -0,0 +1,518 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.satisfies = void 0; +// This is a custom semantic versioning implementation compatible with the +// `satisfies(version, range, options?)` function from the `semver` npm package; +// with the exception that the `loose` option is not supported. +// +// The motivation for the custom semver implementation is that +// `semver` package has some initialization delay (lots of RegExp init and compile) +// and this leads to coldstart overhead for the OTEL Lambda Node.js layer. +// Hence, we have implemented lightweight version of it internally with required functionalities. +const api_1 = require("@opentelemetry/api"); +const 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-]+)*))?$/; +const 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-]+)*))?$/; +const operatorResMap = { + '>': [1], + '>=': [0, 1], + '=': [0], + '<=': [-1, 0], + '<': [-1], + '!=': [-1, 1], +}; +/** + * Checks given version whether it satisfies given range expression. + * @param version the [version](https://github.com/npm/node-semver#versions) to be checked + * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check + * @param options options to configure semver satisfy check + */ +function satisfies(version, range, options) { + // Strict semver format check + if (!_validateVersion(version)) { + api_1.diag.error(`Invalid version: ${version}`); + return false; + } + // If range is empty, satisfy check succeeds regardless what version is + if (!range) { + return true; + } + // Cleanup range + range = range.replace(/([<>=~^]+)\s+/g, '$1'); + // Parse version + const parsedVersion = _parseVersion(version); + if (!parsedVersion) { + return false; + } + const allParsedRanges = []; + // Check given version whether it satisfies given range expression + const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options); + // If check result is OK, + // do another final check for pre-release, if pre-release check is included by option + if (checkResult && !options?.includePrerelease) { + return _doPreleaseCheck(parsedVersion, allParsedRanges); + } + return checkResult; +} +exports.satisfies = satisfies; +function _validateVersion(version) { + return typeof version === 'string' && VERSION_REGEXP.test(version); +} +function _doSatisfies(parsedVersion, range, allParsedRanges, options) { + if (range.includes('||')) { + // A version matches a range if and only if + // every comparator in at least one of the ||-separated comparator sets is satisfied by the version + const ranges = range.trim().split('||'); + for (const r of ranges) { + if (_checkRange(parsedVersion, r, allParsedRanges, options)) { + return true; + } + } + return false; + } + else if (range.includes(' - ')) { + // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc + range = replaceHyphen(range, options); + } + else if (range.includes(' ')) { + // Multiple separated ranges and all needs to be satisfied for success + const ranges = range + .trim() + .replace(/\s{2,}/g, ' ') + .split(' '); + for (const r of ranges) { + if (!_checkRange(parsedVersion, r, allParsedRanges, options)) { + return false; + } + } + return true; + } + // Check given parsed version with given range + return _checkRange(parsedVersion, range, allParsedRanges, options); +} +function _checkRange(parsedVersion, range, allParsedRanges, options) { + range = _normalizeRange(range, options); + if (range.includes(' ')) { + // If there are multiple ranges separated, satisfy each of them + return _doSatisfies(parsedVersion, range, allParsedRanges, options); + } + else { + // Validate and parse range + const parsedRange = _parseRange(range); + allParsedRanges.push(parsedRange); + // Check parsed version by parsed range + return _satisfies(parsedVersion, parsedRange); + } +} +function _satisfies(parsedVersion, parsedRange) { + // If range is invalid, satisfy check fails (no error throw) + if (parsedRange.invalid) { + return false; + } + // If range is empty or wildcard, satisfy check succeeds regardless what version is + if (!parsedRange.version || _isWildcard(parsedRange.version)) { + return true; + } + // Compare version segment first + let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []); + // If versions segments are equal, compare by pre-release segments + if (comparisonResult === 0) { + const versionPrereleaseSegments = parsedVersion.prereleaseSegments || []; + const rangePrereleaseSegments = parsedRange.prereleaseSegments || []; + if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) { + comparisonResult = 0; + } + else if (!versionPrereleaseSegments.length && + rangePrereleaseSegments.length) { + comparisonResult = 1; + } + else if (versionPrereleaseSegments.length && + !rangePrereleaseSegments.length) { + comparisonResult = -1; + } + else { + comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments); + } + } + // Resolve check result according to comparison operator + return operatorResMap[parsedRange.op]?.includes(comparisonResult); +} +function _doPreleaseCheck(parsedVersion, allParsedRanges) { + if (parsedVersion.prerelease) { + return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version); + } + return true; +} +function _normalizeRange(range, options) { + range = range.trim(); + range = replaceCaret(range, options); + range = replaceTilde(range); + range = replaceXRange(range, options); + range = range.trim(); + return range; +} +function isX(id) { + return !id || id.toLowerCase() === 'x' || id === '*'; +} +function _parseVersion(versionString) { + const match = versionString.match(VERSION_REGEXP); + if (!match) { + api_1.diag.error(`Invalid version: ${versionString}`); + return undefined; + } + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + return { + op: undefined, + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _parseRange(rangeString) { + if (!rangeString) { + return {}; + } + const match = rangeString.match(RANGE_REGEXP); + if (!match) { + api_1.diag.error(`Invalid range: ${rangeString}`); + return { + invalid: true, + }; + } + let op = match.groups.op; + const version = match.groups.version; + const prerelease = match.groups.prerelease; + const build = match.groups.build; + const versionSegments = version.split('.'); + const prereleaseSegments = prerelease?.split('.'); + if (op === '==') { + op = '='; + } + return { + op: op || '=', + version, + versionSegments, + versionSegmentCount: versionSegments.length, + prerelease, + prereleaseSegments, + prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0, + build, + }; +} +function _isWildcard(s) { + return s === '*' || s === 'x' || s === 'X'; +} +function _parseVersionString(v) { + const n = parseInt(v, 10); + return isNaN(n) ? v : n; +} +function _normalizeVersionType(a, b) { + if (typeof a === typeof b) { + if (typeof a === 'number') { + return [a, b]; + } + else if (typeof a === 'string') { + return [a, b]; + } + else { + throw new Error('Version segments can only be strings or numbers'); + } + } + else { + return [String(a), String(b)]; + } +} +function _compareVersionStrings(v1, v2) { + if (_isWildcard(v1) || _isWildcard(v2)) { + return 0; + } + const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2)); + if (parsedV1 > parsedV2) { + return 1; + } + else if (parsedV1 < parsedV2) { + return -1; + } + return 0; +} +function _compareVersionSegments(v1, v2) { + for (let i = 0; i < Math.max(v1.length, v2.length); i++) { + const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0'); + if (res !== 0) { + return res; + } + } + return 0; +} +//////////////////////////////////////////////////////////////////////////////// +// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb +// License: +/* + * The ISC License + * + * Copyright (c) Isaac Z. Schlueter and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +const LETTERDASHNUMBER = '[a-zA-Z0-9-]'; +const NUMERICIDENTIFIER = '0|[1-9]\\d*'; +const NONNUMERICIDENTIFIER = `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`; +const GTLT = '((?:<|>)?=?)'; +const PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`; +const PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\.${PRERELEASEIDENTIFIER})*))`; +const BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`; +const BUILD = `(?:\\+(${BUILDIDENTIFIER}(?:\\.${BUILDIDENTIFIER})*))`; +const XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\*`; +const XRANGEPLAIN = `[v=\\s]*(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:\\.(${XRANGEIDENTIFIER})` + + `(?:${PRERELEASE})?${BUILD}?` + + `)?)?`; +const XRANGE = `^${GTLT}\\s*${XRANGEPLAIN}$`; +const XRANGE_REGEXP = new RegExp(XRANGE); +const HYPHENRANGE = `^\\s*(${XRANGEPLAIN})` + `\\s+-\\s+` + `(${XRANGEPLAIN})` + `\\s*$`; +const HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE); +const LONETILDE = '(?:~>?)'; +const TILDE = `^${LONETILDE}${XRANGEPLAIN}$`; +const TILDE_REGEXP = new RegExp(TILDE); +const LONECARET = '(?:\\^)'; +const CARET = `^${LONECARET}${XRANGEPLAIN}$`; +const CARET_REGEXP = new RegExp(CARET); +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285 +// +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +// ~0.0.1 --> >=0.0.1 <0.1.0-0 +function replaceTilde(comp) { + const r = TILDE_REGEXP; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } + else if (pr) { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329 +// +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +// ^0.0.1 --> >=0.0.1 <0.0.2-0 +// ^0.1.0 --> >=0.1.0 <0.2.0-0 +function replaceCaret(comp, options) { + const r = CARET_REGEXP; + const z = options?.includePrerelease ? '-0' : ''; + return comp.replace(r, (_, M, m, p, pr) => { + let ret; + if (isX(M)) { + ret = ''; + } + else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } + else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } + else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } + else if (pr) { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } + } + else { + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + } + else { + ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + } + } + else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390 +function replaceXRange(comp, options) { + const r = XRANGE_REGEXP; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === '=' && anyX) { + gtlt = ''; + } + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options?.includePrerelease ? '-0' : ''; + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0'; + } + else { + // nothing is forbidden + ret = '*'; + } + } + else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0; + } + p = 0; + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>='; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } + else { + m = +m + 1; + p = 0; + } + } + else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<'; + if (xm) { + M = +M + 1; + } + else { + m = +m + 1; + } + } + if (gtlt === '<') { + pr = '-0'; + } + ret = `${gtlt + M}.${m}.${p}${pr}`; + } + else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } + else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } + return ret; + }); +} +// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488 +// +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +function replaceHyphen(comp, options) { + const r = HYPHENRANGE_REGEXP; + return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ''; + } + else if (isX(fm)) { + from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (isX(fp)) { + from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`; + } + else if (fpr) { + from = `>=${from}`; + } + else { + from = `>=${from}${options?.includePrerelease ? '-0' : ''}`; + } + if (isX(tM)) { + to = ''; + } + else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } + else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } + else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } + else if (options?.includePrerelease) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } + else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }); +} +//# sourceMappingURL=semver.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.js.map new file mode 100644 index 0000000..50ffde3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/semver.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// 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.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?: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 =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\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-]+)*))?$/;\n\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\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 */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\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}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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: string[] = 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 } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = 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\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\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 } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\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\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\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}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\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 */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\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: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\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 } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\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\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: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\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 } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\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\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\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\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\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\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 } else {\n m = +m + 1;\n p = 0;\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 } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\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: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.d.ts new file mode 100644 index 0000000..0b00757 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.d.ts @@ -0,0 +1,17 @@ +import { ShimWrapped } from './types'; +export declare const wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; +export declare const massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; +export declare const unwrap: (nodule: Nodule, name: keyof Nodule) => void; +export declare const massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +export interface ShimmerOptions { + logger?: typeof console.error; +} +declare function shimmer(options: ShimmerOptions): void; +declare namespace shimmer { + var wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]) => ShimWrapped | undefined; + var massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; + var unwrap: (nodule: Nodule, name: keyof Nodule) => void; + var massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; +} +export default shimmer; +//# sourceMappingURL=shimmer.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js new file mode 100644 index 0000000..b378ec0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js @@ -0,0 +1,134 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.massUnwrap = exports.unwrap = exports.massWrap = exports.wrap = void 0; +// Default to complaining loudly when things don't go according to plan. +// eslint-disable-next-line no-console +let logger = console.error.bind(console); +// Sets a property on an object, preserving its enumerability. +// This function assumes that the property is already writable. +function defineProperty(obj, name, value) { + const enumerable = !!obj[name] && + Object.prototype.propertyIsEnumerable.call(obj, name); + Object.defineProperty(obj, name, { + configurable: true, + enumerable, + writable: true, + value, + }); +} +const wrap = (nodule, name, wrapper) => { + if (!nodule || !nodule[name]) { + logger('no original function ' + String(name) + ' to wrap'); + return; + } + if (!wrapper) { + logger('no wrapper function'); + logger(new Error().stack); + return; + } + const original = nodule[name]; + if (typeof original !== 'function' || typeof wrapper !== 'function') { + logger('original object and wrapper must be functions'); + return; + } + const wrapped = wrapper(original, name); + defineProperty(wrapped, '__original', original); + defineProperty(wrapped, '__unwrap', () => { + if (nodule[name] === wrapped) { + defineProperty(nodule, name, original); + } + }); + defineProperty(wrapped, '__wrapped', true); + defineProperty(nodule, name, wrapped); + return wrapped; +}; +exports.wrap = wrap; +const massWrap = (nodules, names, wrapper) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to wrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + (0, exports.wrap)(nodule, name, wrapper); + }); + }); +}; +exports.massWrap = massWrap; +const unwrap = (nodule, name) => { + if (!nodule || !nodule[name]) { + logger('no function to unwrap.'); + logger(new Error().stack); + return; + } + const wrapped = nodule[name]; + if (!wrapped.__unwrap) { + logger('no original to unwrap to -- has ' + + String(name) + + ' already been unwrapped?'); + } + else { + wrapped.__unwrap(); + return; + } +}; +exports.unwrap = unwrap; +const massUnwrap = (nodules, names) => { + if (!nodules) { + logger('must provide one or more modules to patch'); + logger(new Error().stack); + return; + } + else if (!Array.isArray(nodules)) { + nodules = [nodules]; + } + if (!(names && Array.isArray(names))) { + logger('must provide one or more functions to unwrap on modules'); + return; + } + nodules.forEach(nodule => { + names.forEach(name => { + (0, exports.unwrap)(nodule, name); + }); + }); +}; +exports.massUnwrap = massUnwrap; +function shimmer(options) { + if (options && options.logger) { + if (typeof options.logger !== 'function') { + logger("new logger isn't a function, not replacing"); + } + else { + logger = options.logger; + } + } +} +exports.default = shimmer; +shimmer.wrap = exports.wrap; +shimmer.massWrap = exports.massWrap; +shimmer.unwrap = exports.unwrap; +shimmer.massUnwrap = exports.massUnwrap; +//# sourceMappingURL=shimmer.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js.map new file mode 100644 index 0000000..2e5181a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shimmer.js","sourceRoot":"","sources":["../../src/shimmer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\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 as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types.d.ts new file mode 100644 index 0000000..5cf7d03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types.d.ts @@ -0,0 +1,116 @@ +import { TracerProvider, MeterProvider, Span } from '@opentelemetry/api'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +/** Interface Instrumentation to apply patch. */ +export interface Instrumentation { + /** Instrumentation Name */ + instrumentationName: string; + /** Instrumentation Version */ + instrumentationVersion: string; + /** Method to disable the instrumentation */ + disable(): void; + /** Method to enable the instrumentation */ + enable(): void; + /** Method to set tracer provider */ + setTracerProvider(tracerProvider: TracerProvider): void; + /** Method to set meter provider */ + setMeterProvider(meterProvider: MeterProvider): void; + /** Method to set logger provider */ + setLoggerProvider?(loggerProvider: LoggerProvider): void; + /** Method to set instrumentation config */ + setConfig(config: ConfigType): void; + /** Method to get instrumentation config */ + getConfig(): ConfigType; +} +/** + * Base interface for configuration options common to all instrumentations. + * This interface can be extended by individual instrumentations to include + * additional configuration options specific to that instrumentation. + * All configuration options must be optional. + */ +export interface InstrumentationConfig { + /** + * Whether to enable the plugin. + * @default true + */ + enabled?: boolean; +} +/** + * This interface defines the params that are be added to the wrapped function + * using the "shimmer.wrap" + */ +export interface ShimWrapped extends Function { + __wrapped: boolean; + __unwrap: Function; + __original: Function; +} +export interface InstrumentationModuleFile { + /** Name of file to be patched with relative path */ + name: string; + moduleExports?: unknown; + /** Supported versions for the file. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with a function compatible + * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1). + * If the version is not supported, we won't apply instrumentation patch. + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Method to patch the instrumentation */ + patch(moduleExports: unknown, moduleVersion?: string): unknown; + /** Method to unpatch the instrumentation */ + unpatch(moduleExports?: unknown, moduleVersion?: string): void; +} +export interface InstrumentationModuleDefinition { + /** Module name or path */ + name: string; + moduleExports?: any; + /** Instrumented module version */ + moduleVersion?: string; + /** Supported version of module. + * + * A module version is supported if one of the supportedVersions in the array satisfies the module version. + * The syntax of the version is checked with the `satisfies` function of + * "The [semantic versioner](https://semver.org) for npm". + * If the version is not supported, we won't apply instrumentation patch (see `enable` method). + * If omitted, all versions of the module will be patched. + * + * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes. + * New major versions should be reviewed and tested before being added to the supportedVersions array. + * + * Example: ['>=1.2.3 <3'] + */ + supportedVersions: string[]; + /** Module internal files to be patched */ + files: InstrumentationModuleFile[]; + /** If set to true, the includePrerelease check will be included when calling semver.satisfies */ + includePrerelease?: boolean; + /** Method to patch the instrumentation */ + patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any + ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined; + /** Method to unpatch the instrumentation */ + unpatch?: ((moduleExports: any, moduleVersion?: string | undefined) => void) | undefined; +} +/** + * SpanCustomizationHook is a common way for instrumentations to expose extension points + * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle. + * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span, + * capture payloads, modify the span in some way, or carry some other side effect. + * + * The hook is registered with the instrumentation specific config by implementing an handler function with this signature, + * and if the hook is present, it will be called with the span and the event information + * when the event is emitted. + * + * When and under what conditions the hook is called and what data is passed + * in the info argument, is specific to each instrumentation and life-cycle event + * and should be documented where it is used. + * + * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events. + */ +export type SpanCustomizationHook = (span: Span, info: SpanCustomizationInfoType) => void; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types.js new file mode 100644 index 0000000..c428c6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types.js.map new file mode 100644 index 0000000..5764a6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider, Span } from '@opentelemetry/api';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/** Interface Instrumentation to apply patch. */\nexport interface Instrumentation<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> {\n /** Instrumentation Name */\n instrumentationName: string;\n\n /** Instrumentation Version */\n instrumentationVersion: string;\n\n /** Method to disable the instrumentation */\n disable(): void;\n\n /** Method to enable the instrumentation */\n enable(): void;\n\n /** Method to set tracer provider */\n setTracerProvider(tracerProvider: TracerProvider): void;\n\n /** Method to set meter provider */\n setMeterProvider(meterProvider: MeterProvider): void;\n\n /** Method to set logger provider */\n setLoggerProvider?(loggerProvider: LoggerProvider): void;\n\n /** Method to set instrumentation config */\n setConfig(config: ConfigType): void;\n\n /** Method to get instrumentation config */\n getConfig(): ConfigType;\n}\n\n/**\n * Base interface for configuration options common to all instrumentations.\n * This interface can be extended by individual instrumentations to include\n * additional configuration options specific to that instrumentation.\n * All configuration options must be optional.\n */\nexport interface InstrumentationConfig {\n /**\n * Whether to enable the plugin.\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * This interface defines the params that are be added to the wrapped function\n * using the \"shimmer.wrap\"\n */\nexport interface ShimWrapped extends Function {\n __wrapped: boolean;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __unwrap: Function;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n __original: Function;\n}\n\nexport interface InstrumentationModuleFile {\n /** Name of file to be patched with relative path */\n name: string;\n\n moduleExports?: unknown;\n\n /** Supported versions for the file.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with a function compatible\n * with [node-semver's `satisfies()` function](https://github.com/npm/node-semver#ranges-1).\n * If the version is not supported, we won't apply instrumentation patch.\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Method to patch the instrumentation */\n patch(moduleExports: unknown, moduleVersion?: string): unknown;\n\n /** Method to unpatch the instrumentation */\n unpatch(moduleExports?: unknown, moduleVersion?: string): void;\n}\n\nexport interface InstrumentationModuleDefinition {\n /** Module name or path */\n name: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports?: any;\n\n /** Instrumented module version */\n moduleVersion?: string;\n\n /** Supported version of module.\n *\n * A module version is supported if one of the supportedVersions in the array satisfies the module version.\n * The syntax of the version is checked with the `satisfies` function of\n * \"The [semantic versioner](https://semver.org) for npm\".\n * If the version is not supported, we won't apply instrumentation patch (see `enable` method).\n * If omitted, all versions of the module will be patched.\n *\n * It is recommended to always specify a range that is bound to a major version, to avoid breaking changes.\n * New major versions should be reviewed and tested before being added to the supportedVersions array.\n *\n * Example: ['>=1.2.3 <3']\n */\n supportedVersions: string[];\n\n /** Module internal files to be patched */\n files: InstrumentationModuleFile[];\n\n /** If set to true, the includePrerelease check will be included when calling semver.satisfies */\n includePrerelease?: boolean;\n\n /** Method to patch the instrumentation */\n patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined;\n\n /** Method to unpatch the instrumentation */\n unpatch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | ((moduleExports: any, moduleVersion?: string | undefined) => void)\n | undefined;\n}\n\n/**\n * SpanCustomizationHook is a common way for instrumentations to expose extension points\n * where users can add custom behavior to a span based on info object passed to the hook at different times of the span lifecycle.\n * This is an advanced feature, commonly used to add additional or non-spec-compliant attributes to the span,\n * capture payloads, modify the span in some way, or carry some other side effect.\n *\n * The hook is registered with the instrumentation specific config by implementing an handler function with this signature,\n * and if the hook is present, it will be called with the span and the event information\n * when the event is emitted.\n *\n * When and under what conditions the hook is called and what data is passed\n * in the info argument, is specific to each instrumentation and life-cycle event\n * and should be documented where it is used.\n *\n * Instrumentation may define multiple hooks, for different spans, or different span life-cycle events.\n */\nexport type SpanCustomizationHook = (\n span: Span,\n info: SpanCustomizationInfoType\n) => void;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types_internal.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types_internal.d.ts new file mode 100644 index 0000000..d9dc97d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types_internal.d.ts @@ -0,0 +1,13 @@ +import { TracerProvider, MeterProvider } from '@opentelemetry/api'; +import { Instrumentation } from './types'; +import { LoggerProvider } from '@opentelemetry/api-logs'; +export interface AutoLoaderResult { + instrumentations: Instrumentation[]; +} +export interface AutoLoaderOptions { + instrumentations?: (Instrumentation | Instrumentation[])[]; + tracerProvider?: TracerProvider; + meterProvider?: MeterProvider; + loggerProvider?: LoggerProvider; +} +//# sourceMappingURL=types_internal.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js new file mode 100644 index 0000000..4b3e699 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types_internal.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js.map new file mode 100644 index 0000000..e3325ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/types_internal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types_internal.js","sourceRoot":"","sources":["../../src/types_internal.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\nexport interface AutoLoaderResult {\n instrumentations: Instrumentation[];\n}\n\nexport interface AutoLoaderOptions {\n instrumentations?: (Instrumentation | Instrumentation[])[];\n tracerProvider?: TracerProvider;\n meterProvider?: MeterProvider;\n loggerProvider?: LoggerProvider;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.d.ts new file mode 100644 index 0000000..884e304 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.d.ts @@ -0,0 +1,19 @@ +import { ShimWrapped } from './types'; +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddle(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => void, preventThrowingError?: boolean): T; +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +export declare function safeExecuteInTheMiddleAsync(execute: () => T, onFinish: (e: Error | undefined, result: T | undefined) => void, preventThrowingError?: boolean): Promise; +/** + * Checks if certain function has been already wrapped + * @param func + */ +export declare function isWrapped(func: unknown): func is ShimWrapped; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.js new file mode 100644 index 0000000..86c19e5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.js @@ -0,0 +1,80 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isWrapped = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = void 0; +/** + * function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +function safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = execute(); + } + catch (e) { + error = e; + } + finally { + onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +exports.safeExecuteInTheMiddle = safeExecuteInTheMiddle; +/** + * Async function to execute patched function and being able to catch errors + * @param execute - function to be executed + * @param onFinish - callback to run when execute finishes + */ +async function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) { + let error; + let result; + try { + result = await execute(); + } + catch (e) { + error = e; + } + finally { + onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + // eslint-disable-next-line no-unsafe-finally + return result; + } +} +exports.safeExecuteInTheMiddleAsync = safeExecuteInTheMiddleAsync; +/** + * Checks if certain function has been already wrapped + * @param func + */ +function isWrapped(func) { + return (typeof func === 'function' && + typeof func.__original === 'function' && + typeof func.__unwrap === 'function' && + func.__wrapped === true); +} +exports.isWrapped = isWrapped; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.js.map new file mode 100644 index 0000000..9ea92b5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH;;;;GAIG;AACH,SAAgB,sBAAsB,CACpC,OAAgB,EAChB,QAA+D,EAC/D,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,OAAO,EAAE,CAAC;KACpB;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AApBD,wDAoBC;AAED;;;;GAIG;AACI,KAAK,UAAU,2BAA2B,CAC/C,OAAgB,EAChB,QAA+D,EAC/D,oBAA8B;IAE9B,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAqB,CAAC;IAC1B,IAAI;QACF,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;KAC1B;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;YAAS;QACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE;YAClC,6CAA6C;YAC7C,MAAM,KAAK,CAAC;SACb;QACD,6CAA6C;QAC7C,OAAO,MAAW,CAAC;KACpB;AACH,CAAC;AApBD,kEAoBC;AACD;;;GAGG;AACH,SAAgB,SAAS,CAAC,IAAa;IACrC,OAAO,CACL,OAAO,IAAI,KAAK,UAAU;QAC1B,OAAQ,IAAoB,CAAC,UAAU,KAAK,UAAU;QACtD,OAAQ,IAAoB,CAAC,QAAQ,KAAK,UAAU;QACnD,IAAoB,CAAC,SAAS,KAAK,IAAI,CACzC,CAAC;AACJ,CAAC;AAPD,8BAOC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { ShimWrapped } from './types';\n\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 */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n\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 */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\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 as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/version.d.ts new file mode 100644 index 0000000..46e47a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.207.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/version.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/version.js new file mode 100644 index 0000000..db955bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '0.207.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/version.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/version.js.map new file mode 100644 index 0000000..4e8c36a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.207.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/hook.mjs b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/hook.mjs new file mode 100644 index 0000000..8ae481f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/hook.mjs @@ -0,0 +1,29 @@ +/*! + * Copyright 2021 Datadog, Inc. + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License. +// +// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc. + +import { + initialize, + load, + resolve, + getFormat, + getSource, +} from 'import-in-the-middle/hook.mjs'; +export { initialize, load, resolve, getFormat, getSource }; diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/LICENSE b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/README.md b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/README.md new file mode 100644 index 0000000..a4e3459 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/README.md @@ -0,0 +1,66 @@ +# OpenTelemetry Logs Bridge API for JavaScript + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +**Note: This is an experimental package under active development. New releases may include breaking changes.** + +This package provides everything needed to interact with the unstable OpenTelemetry Logs Bridge API, including all TypeScript interfaces, enums, and no-op implementations. It is intended for use both on the server and in the browser. + +**Note: This module defines a log backend API. The API is not intended to be called by application developers directly. +It is provided for logging library authors to build log appenders, which use this API to bridge between existing +logging libraries and the OpenTelemetry log data model.** + +## Alpha Software - Use at your own risk + +The Logs Bridge API is considered alpha software and there is no guarantee of stability or long-term support. When the API is stabilized, it will be made available and supported long-term in the `@opentelemetry/api` package and this package will be deprecated. + +## Quick Start + +Purposefully left blank until SDK is available. + +## Version Compatibility + +Because the npm installer and node module resolution algorithm could potentially allow two or more copies of any given package to exist within the same `node_modules` structure, the OpenTelemetry API takes advantage of a variable on the `global` object to store the global API. When an API method in the API package is called, it checks if this `global` API exists and proxies calls to it if and only if it is a compatible API version. This means if a package has a dependency on an OpenTelemetry API version which is not compatible with the API used by the end user, the package will receive a no-op implementation of the API. + +## Advanced Use + +### API Methods + +If you are writing an instrumentation library, or prefer to call the API methods directly rather than using the `register` method on the Tracer/Meter/Logger Provider, OpenTelemetry provides direct access to the underlying API methods through the `@opentelemetry/api-logs` package. API entry points are defined as global singleton objects `trace`, `metrics`, `logs`, `propagation`, and `context` which contain methods used to initialize SDK implementations and acquire resources from the API. + +- [Logs API Documentation][logs-api-docs] + +```javascript +const api = require("@opentelemetry/api-logs"); + +/* A specific implementation of LoggerProvider comes from an SDK */ +const loggerProvider = createLoggerProvider(); + +/* Initialize LoggerProvider */ +api.logs.setGlobalLoggerProvider(loggerProvider); +/* returns loggerProvider (no-op if a working provider has not been initialized) */ +api.logs.getLoggerProvider(); +/* returns a logger from the registered global logger provider (no-op if a working provider has not been initialized) */ +const logger = api.logs.getLogger(name, version); + +// logging a log record in a log appender +logger.emit({ severityNumber: SeverityNumber.TRACE, body: 'log data' }); +``` + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/api-logs +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fapi-logs.svg +[logs-api-docs]: https://open-telemetry.github.io/opentelemetry-js/modules/_opentelemetry_api_logs.html diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.d.ts new file mode 100644 index 0000000..85c8860 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.d.ts @@ -0,0 +1,7 @@ +import { Logger } from './types/Logger'; +import { LogRecord } from './types/LogRecord'; +export declare class NoopLogger implements Logger { + emit(_logRecord: LogRecord): void; +} +export declare const NOOP_LOGGER: NoopLogger; +//# sourceMappingURL=NoopLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js new file mode 100644 index 0000000..78332f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class NoopLogger { + emit(_logRecord) { } +} +export const NOOP_LOGGER = new NoopLogger(); +//# sourceMappingURL=NoopLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js.map new file mode 100644 index 0000000..f954f13 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLogger.js","sourceRoot":"","sources":["../../src/NoopLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,OAAO,UAAU;IACrB,IAAI,CAAC,UAAqB,IAAS,CAAC;CACrC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.d.ts new file mode 100644 index 0000000..d32bada --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.d.ts @@ -0,0 +1,8 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class NoopLoggerProvider implements LoggerProvider { + getLogger(_name: string, _version?: string | undefined, _options?: LoggerOptions | undefined): Logger; +} +export declare const NOOP_LOGGER_PROVIDER: NoopLoggerProvider; +//# sourceMappingURL=NoopLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js new file mode 100644 index 0000000..fb4e676 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NoopLogger } from './NoopLogger'; +export class NoopLoggerProvider { + getLogger(_name, _version, _options) { + return new NoopLogger(); + } +} +export const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider(); +//# sourceMappingURL=NoopLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js.map new file mode 100644 index 0000000..ee23363 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/NoopLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLoggerProvider.js","sourceRoot":"","sources":["../../src/NoopLoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,kBAAkB;IAC7B,SAAS,CACP,KAAa,EACb,QAA6B,EAC7B,QAAoC;QAEpC,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.d.ts new file mode 100644 index 0000000..cd95231 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.d.ts @@ -0,0 +1,26 @@ +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +import { LogRecord } from './types/LogRecord'; +export declare class ProxyLogger implements Logger { + private _provider; + readonly name: string; + readonly version?: string | undefined; + readonly options?: LoggerOptions | undefined; + private _delegate?; + constructor(_provider: LoggerDelegator, name: string, version?: string | undefined, options?: LoggerOptions | undefined); + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + private _getLogger; +} +export interface LoggerDelegator { + _getDelegateLogger(name: string, version?: string, options?: LoggerOptions): Logger | undefined; +} +//# sourceMappingURL=ProxyLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js new file mode 100644 index 0000000..9cc3ef3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js @@ -0,0 +1,48 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_LOGGER } from './NoopLogger'; +export class ProxyLogger { + constructor(_provider, name, version, options) { + this._provider = _provider; + this.name = name; + this.version = version; + this.options = options; + } + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord) { + this._getLogger().emit(logRecord); + } + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + _getLogger() { + if (this._delegate) { + return this._delegate; + } + const logger = this._provider._getDelegateLogger(this.name, this.version, this.options); + if (!logger) { + return NOOP_LOGGER; + } + this._delegate = logger; + return this._delegate; + } +} +//# sourceMappingURL=ProxyLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js.map new file mode 100644 index 0000000..69f1bc3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLogger.js","sourceRoot":"","sources":["../../src/ProxyLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,MAAM,OAAO,WAAW;IAItB,YACU,SAA0B,EAClB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;QAH3C,cAAS,GAAT,SAAS,CAAiB;QAClB,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAqB;QAC5B,YAAO,GAAP,OAAO,CAA4B;IAClD,CAAC;IAEJ;;;;OAIG;IACH,IAAI,CAAC,SAAoB;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC9C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACb,CAAC;QACF,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,WAAW,CAAC;SACpB;QACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n\n constructor(\n private _provider: LoggerDelegator,\n public readonly name: string,\n public readonly version?: string | undefined,\n public readonly options?: LoggerOptions | undefined\n ) {}\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\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 private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.d.ts new file mode 100644 index 0000000..3f235ea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.d.ts @@ -0,0 +1,23 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class ProxyLoggerProvider implements LoggerProvider { + private _delegate?; + getLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger; + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate(): LoggerProvider; + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate: LoggerProvider): void; + /** + * @internal + */ + _getDelegateLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger | undefined; +} +//# sourceMappingURL=ProxyLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js new file mode 100644 index 0000000..38eaa89 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js @@ -0,0 +1,47 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider'; +import { ProxyLogger } from './ProxyLogger'; +export class ProxyLoggerProvider { + getLogger(name, version, options) { + var _a; + return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger(this, name, version, options)); + } + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate() { + var _a; + return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_LOGGER_PROVIDER; + } + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate) { + this._delegate = delegate; + } + /** + * @internal + */ + _getDelegateLogger(name, version, options) { + var _a; + return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options); + } +} +//# sourceMappingURL=ProxyLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js.map new file mode 100644 index 0000000..e620a79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/ProxyLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLoggerProvider.js","sourceRoot":"","sources":["../../src/ProxyLoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,mBAAmB;IAG9B,SAAS,CACP,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,CACL,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,mCAC/C,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,YAAY;;QACV,OAAO,MAAA,IAAI,CAAC,SAAS,mCAAI,oBAAoB,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAwB;QACnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,MAAA,IAAI,CAAC,SAAS,0CAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/api/logs.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/api/logs.d.ts new file mode 100644 index 0000000..caf4fd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/api/logs.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +import { Logger } from '../types/Logger'; +import { LoggerOptions } from '../types/LoggerOptions'; +export declare class LogsAPI { + private static _instance?; + private _proxyLoggerProvider; + private constructor(); + static getInstance(): LogsAPI; + setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider; + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider(): LoggerProvider; + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; + /** Remove the global logger provider */ + disable(): void; +} +//# sourceMappingURL=logs.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js new file mode 100644 index 0000000..07aa497 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js @@ -0,0 +1,60 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { API_BACKWARDS_COMPATIBILITY_VERSION, GLOBAL_LOGS_API_KEY, _global, makeGetter, } from '../internal/global-utils'; +import { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider'; +import { ProxyLoggerProvider } from '../ProxyLoggerProvider'; +export class LogsAPI { + constructor() { + this._proxyLoggerProvider = new ProxyLoggerProvider(); + } + static getInstance() { + if (!this._instance) { + this._instance = new LogsAPI(); + } + return this._instance; + } + setGlobalLoggerProvider(provider) { + if (_global[GLOBAL_LOGS_API_KEY]) { + return this.getLoggerProvider(); + } + _global[GLOBAL_LOGS_API_KEY] = makeGetter(API_BACKWARDS_COMPATIBILITY_VERSION, provider, NOOP_LOGGER_PROVIDER); + this._proxyLoggerProvider._setDelegate(provider); + return provider; + } + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider() { + var _a, _b; + return ((_b = (_a = _global[GLOBAL_LOGS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(_global, API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : this._proxyLoggerProvider); + } + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name, version, options) { + return this.getLoggerProvider().getLogger(name, version, options); + } + /** Remove the global logger provider */ + disable() { + delete _global[GLOBAL_LOGS_API_KEY]; + this._proxyLoggerProvider = new ProxyLoggerProvider(); + } +} +//# sourceMappingURL=logs.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js.map new file mode 100644 index 0000000..b043450 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/api/logs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/api/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,mCAAmC,EACnC,mBAAmB,EACnB,OAAO,EACP,UAAU,GACX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,OAAO,OAAO;IAKlB;QAFQ,yBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAElC,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;SAChC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,uBAAuB,CAAC,QAAwB;QACrD,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACjC;QAED,OAAO,CAAC,mBAAmB,CAAC,GAAG,UAAU,CACvC,mCAAmC,EACnC,QAAQ,EACR,oBAAoB,CACrB,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,iBAAiB;;QACtB,OAAO,CACL,MAAA,MAAA,OAAO,CAAC,mBAAmB,CAAC,wDAAG,mCAAmC,CAAC,mCACnE,IAAI,CAAC,oBAAoB,CAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,SAAS,CACd,IAAY,EACZ,OAAgB,EAChB,OAAuB;QAEvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,wCAAwC;IACjC,OAAO;QACZ,OAAO,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACxD,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/index.d.ts new file mode 100644 index 0000000..2b1e295 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/index.d.ts @@ -0,0 +1,13 @@ +export type { Logger } from './types/Logger'; +export type { LoggerProvider } from './types/LoggerProvider'; +export { SeverityNumber } from './types/LogRecord'; +export type { LogAttributes, LogBody, LogRecord } from './types/LogRecord'; +export type { LoggerOptions } from './types/LoggerOptions'; +export type { AnyValue, AnyValueMap } from './types/AnyValue'; +export { NOOP_LOGGER, NoopLogger } from './NoopLogger'; +export { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider'; +export { ProxyLogger } from './ProxyLogger'; +export { ProxyLoggerProvider } from './ProxyLoggerProvider'; +import { LogsAPI } from './api/logs'; +export declare const logs: LogsAPI; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/index.js new file mode 100644 index 0000000..be06dc9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/index.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { SeverityNumber } from './types/LogRecord'; +export { NOOP_LOGGER, NoopLogger } from './NoopLogger'; +export { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider'; +export { ProxyLogger } from './ProxyLogger'; +export { ProxyLoggerProvider } from './ProxyLoggerProvider'; +import { LogsAPI } from './api/logs'; +export const logs = LogsAPI.getInstance(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/index.js.map new file mode 100644 index 0000000..4e248ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\nexport { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider';\nexport { ProxyLogger } from './ProxyLogger';\nexport { ProxyLoggerProvider } from './ProxyLoggerProvider';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.d.ts new file mode 100644 index 0000000..f54b065 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +export declare const GLOBAL_LOGS_API_KEY: unique symbol; +type Get = (version: number) => T; +export declare const _global: Partial<{ + [GLOBAL_LOGS_API_KEY]: Get; +}>; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +export declare function makeGetter(requiredVersion: number, instance: T, fallback: T): Get; +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +export declare const API_BACKWARDS_COMPATIBILITY_VERSION = 1; +export {}; +//# sourceMappingURL=global-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js new file mode 100644 index 0000000..e03a484 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js @@ -0,0 +1,38 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { _globalThis } from '../platform'; +export const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs'); +export const _global = _globalThis; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +export function makeGetter(requiredVersion, instance, fallback) { + return (version) => version === requiredVersion ? instance : fallback; +} +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +export const API_BACKWARDS_COMPATIBILITY_VERSION = 1; +//# sourceMappingURL=global-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js.map new file mode 100644 index 0000000..1e6b443 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/internal/global-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-utils.js","sourceRoot":"","sources":["../../../src/internal/global-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAO9E,MAAM,CAAC,MAAM,OAAO,GAAG,WAAyB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,eAAuB,EACvB,QAAW,EACX,QAAW;IAEX,OAAO,CAAC,OAAe,EAAK,EAAE,CAC5B,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { _globalThis } from '../platform';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = _globalThis as OtelGlobal;\n\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 */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\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 */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/globalThis.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/globalThis.d.ts new file mode 100644 index 0000000..e73fd73 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/globalThis.d.ts @@ -0,0 +1,10 @@ +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/globalThis.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/globalThis.js new file mode 100644 index 0000000..684edbf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/globalThis.js @@ -0,0 +1,36 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Updates to this file should also be replicated to @opentelemetry/api and +// @opentelemetry/core too. +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line n/no-unsupported-features/es-builtins, no-undef +export const _globalThis = typeof globalThis === 'object' + ? globalThis + : typeof self === 'object' + ? self + : typeof window === 'object' + ? window + : typeof global === 'object' + ? global + : {}; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/globalThis.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/globalThis.js.map new file mode 100644 index 0000000..7ba66fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/browser/globalThis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,2EAA2E;AAC3E,2BAA2B;AAE3B;;;;;;GAMG;AAEH,gEAAgE;AAChE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,WAAW,GACtB,OAAO,UAAU,KAAK,QAAQ;IAC5B,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;YAC1B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;gBAC1B,CAAC,CAAE,MAAuC;gBAC1C,CAAC,CAAE,EAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Updates to this file should also be replicated to @opentelemetry/api and\n// @opentelemetry/core too.\n\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - (When all else fails)\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins, no-undef\nexport const _globalThis: typeof globalThis =\n typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? (global as unknown as typeof globalThis)\n : ({} as typeof globalThis);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/index.d.ts new file mode 100644 index 0000000..5ec916d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/index.d.ts @@ -0,0 +1,2 @@ +export { _globalThis } from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/index.js new file mode 100644 index 0000000..f9dcfa0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { _globalThis } from './globalThis'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/index.js.map new file mode 100644 index 0000000..4ba3095 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { _globalThis } from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/index.d.ts new file mode 100644 index 0000000..b54ed4f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/index.d.ts @@ -0,0 +1,2 @@ +export { _globalThis } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/index.js new file mode 100644 index 0000000..22de8ca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { _globalThis } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/index.js.map new file mode 100644 index 0000000..ee99855 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { _globalThis } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/globalThis.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/globalThis.d.ts new file mode 100644 index 0000000..a629f37 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/globalThis.d.ts @@ -0,0 +1,5 @@ +/// +/// +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis | NodeJS.Global; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/globalThis.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/globalThis.js new file mode 100644 index 0000000..ffddc1c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/globalThis.js @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line n/no-unsupported-features/es-builtins +export const _globalThis = typeof globalThis === 'object' ? globalThis : global; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/globalThis.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/globalThis.js.map new file mode 100644 index 0000000..e6dbf31 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/node/globalThis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,gEAAgE;AAChE,iEAAiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/index.d.ts new file mode 100644 index 0000000..5ec916d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/index.d.ts @@ -0,0 +1,2 @@ +export { _globalThis } from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/index.js new file mode 100644 index 0000000..f9dcfa0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { _globalThis } from './globalThis'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/index.js.map new file mode 100644 index 0000000..fd2c561 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { _globalThis } from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.d.ts new file mode 100644 index 0000000..aa987ac --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.d.ts @@ -0,0 +1,18 @@ +export type AnyValueScalar = string | number | boolean; +export type AnyValueArray = Array; +/** + * AnyValueMap is a map from string to AnyValue (attribute value or a nested map) + */ +export interface AnyValueMap { + [attributeKey: string]: AnyValue; +} +/** + * AnyValue can be one of the following: + * - a scalar value + * - a byte array + * - array of any value + * - map from string to any value + * - empty value + */ +export type AnyValue = AnyValueScalar | Uint8Array | AnyValueArray | AnyValueMap | null | undefined; +//# sourceMappingURL=AnyValue.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js new file mode 100644 index 0000000..2c44f1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=AnyValue.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js.map new file mode 100644 index 0000000..48746ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/AnyValue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AnyValue.js","sourceRoot":"","sources":["../../../src/types/AnyValue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type AnyValueScalar = string | number | boolean;\n\nexport type AnyValueArray = Array;\n\n/**\n * AnyValueMap is a map from string to AnyValue (attribute value or a nested map)\n */\nexport interface AnyValueMap {\n [attributeKey: string]: AnyValue;\n}\n\n/**\n * AnyValue can be one of the following:\n * - a scalar value\n * - a byte array\n * - array of any value\n * - map from string to any value\n * - empty value\n */\nexport type AnyValue =\n | AnyValueScalar\n | Uint8Array\n | AnyValueArray\n | AnyValueMap\n | null\n | undefined;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.d.ts new file mode 100644 index 0000000..71abcd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.d.ts @@ -0,0 +1,66 @@ +import { Context, TimeInput } from '@opentelemetry/api'; +import { AnyValue, AnyValueMap } from './AnyValue'; +export type LogBody = AnyValue; +export type LogAttributes = AnyValueMap; +export declare enum SeverityNumber { + UNSPECIFIED = 0, + TRACE = 1, + TRACE2 = 2, + TRACE3 = 3, + TRACE4 = 4, + DEBUG = 5, + DEBUG2 = 6, + DEBUG3 = 7, + DEBUG4 = 8, + INFO = 9, + INFO2 = 10, + INFO3 = 11, + INFO4 = 12, + WARN = 13, + WARN2 = 14, + WARN3 = 15, + WARN4 = 16, + ERROR = 17, + ERROR2 = 18, + ERROR3 = 19, + ERROR4 = 20, + FATAL = 21, + FATAL2 = 22, + FATAL3 = 23, + FATAL4 = 24 +} +export interface LogRecord { + /** + * The unique identifier for the log record. + */ + eventName?: string; + /** + * The time when the log record occurred as UNIX Epoch time in nanoseconds. + */ + timestamp?: TimeInput; + /** + * Time when the event was observed by the collection system. + */ + observedTimestamp?: TimeInput; + /** + * Numerical value of the severity. + */ + severityNumber?: SeverityNumber; + /** + * The severity text. + */ + severityText?: string; + /** + * A value containing the body of the log record. + */ + body?: LogBody; + /** + * Attributes that define the log record. + */ + attributes?: LogAttributes; + /** + * The Context associated with the LogRecord. + */ + context?: Context; +} +//# sourceMappingURL=LogRecord.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js new file mode 100644 index 0000000..327a4b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js @@ -0,0 +1,44 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var SeverityNumber; +(function (SeverityNumber) { + SeverityNumber[SeverityNumber["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + SeverityNumber[SeverityNumber["TRACE"] = 1] = "TRACE"; + SeverityNumber[SeverityNumber["TRACE2"] = 2] = "TRACE2"; + SeverityNumber[SeverityNumber["TRACE3"] = 3] = "TRACE3"; + SeverityNumber[SeverityNumber["TRACE4"] = 4] = "TRACE4"; + SeverityNumber[SeverityNumber["DEBUG"] = 5] = "DEBUG"; + SeverityNumber[SeverityNumber["DEBUG2"] = 6] = "DEBUG2"; + SeverityNumber[SeverityNumber["DEBUG3"] = 7] = "DEBUG3"; + SeverityNumber[SeverityNumber["DEBUG4"] = 8] = "DEBUG4"; + SeverityNumber[SeverityNumber["INFO"] = 9] = "INFO"; + SeverityNumber[SeverityNumber["INFO2"] = 10] = "INFO2"; + SeverityNumber[SeverityNumber["INFO3"] = 11] = "INFO3"; + SeverityNumber[SeverityNumber["INFO4"] = 12] = "INFO4"; + SeverityNumber[SeverityNumber["WARN"] = 13] = "WARN"; + SeverityNumber[SeverityNumber["WARN2"] = 14] = "WARN2"; + SeverityNumber[SeverityNumber["WARN3"] = 15] = "WARN3"; + SeverityNumber[SeverityNumber["WARN4"] = 16] = "WARN4"; + SeverityNumber[SeverityNumber["ERROR"] = 17] = "ERROR"; + SeverityNumber[SeverityNumber["ERROR2"] = 18] = "ERROR2"; + SeverityNumber[SeverityNumber["ERROR3"] = 19] = "ERROR3"; + SeverityNumber[SeverityNumber["ERROR4"] = 20] = "ERROR4"; + SeverityNumber[SeverityNumber["FATAL"] = 21] = "FATAL"; + SeverityNumber[SeverityNumber["FATAL2"] = 22] = "FATAL2"; + SeverityNumber[SeverityNumber["FATAL3"] = 23] = "FATAL3"; + SeverityNumber[SeverityNumber["FATAL4"] = 24] = "FATAL4"; +})(SeverityNumber || (SeverityNumber = {})); +//# sourceMappingURL=LogRecord.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js.map new file mode 100644 index 0000000..62552a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LogRecord.js","sourceRoot":"","sources":["../../../src/types/LogRecord.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,CAAN,IAAY,cA0BX;AA1BD,WAAY,cAAc;IACxB,iEAAe,CAAA;IACf,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,mDAAQ,CAAA;IACR,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,oDAAS,CAAA;IACT,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;AACb,CAAC,EA1BW,cAAc,KAAd,cAAc,QA0BzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, TimeInput } from '@opentelemetry/api';\nimport { AnyValue, AnyValueMap } from './AnyValue';\n\nexport type LogBody = AnyValue;\nexport type LogAttributes = AnyValueMap;\n\nexport enum SeverityNumber {\n UNSPECIFIED = 0,\n TRACE = 1,\n TRACE2 = 2,\n TRACE3 = 3,\n TRACE4 = 4,\n DEBUG = 5,\n DEBUG2 = 6,\n DEBUG3 = 7,\n DEBUG4 = 8,\n INFO = 9,\n INFO2 = 10,\n INFO3 = 11,\n INFO4 = 12,\n WARN = 13,\n WARN2 = 14,\n WARN3 = 15,\n WARN4 = 16,\n ERROR = 17,\n ERROR2 = 18,\n ERROR3 = 19,\n ERROR4 = 20,\n FATAL = 21,\n FATAL2 = 22,\n FATAL3 = 23,\n FATAL4 = 24,\n}\n\nexport interface LogRecord {\n /**\n * The unique identifier for the log record.\n */\n eventName?: string;\n\n /**\n * The time when the log record occurred as UNIX Epoch time in nanoseconds.\n */\n timestamp?: TimeInput;\n\n /**\n * Time when the event was observed by the collection system.\n */\n observedTimestamp?: TimeInput;\n\n /**\n * Numerical value of the severity.\n */\n severityNumber?: SeverityNumber;\n\n /**\n * The severity text.\n */\n severityText?: string;\n\n /**\n * A value containing the body of the log record.\n */\n body?: LogBody;\n\n /**\n * Attributes that define the log record.\n */\n attributes?: LogAttributes;\n\n /**\n * The Context associated with the LogRecord.\n */\n context?: Context;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.d.ts new file mode 100644 index 0000000..fca8bc6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.d.ts @@ -0,0 +1,10 @@ +import { LogRecord } from './LogRecord'; +export interface Logger { + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; +} +//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js new file mode 100644 index 0000000..99158d8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Logger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js.map new file mode 100644 index 0000000..f454c21 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/Logger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/types/Logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LogRecord } from './LogRecord';\n\nexport interface Logger {\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.d.ts new file mode 100644 index 0000000..010861f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.d.ts @@ -0,0 +1,18 @@ +import { Attributes } from '@opentelemetry/api'; +export interface LoggerOptions { + /** + * The schemaUrl of the tracer or instrumentation library + * @default '' + */ + schemaUrl?: string; + /** + * The instrumentation scope attributes to associate with emitted telemetry + */ + scopeAttributes?: Attributes; + /** + * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger. + * @default true + */ + includeTraceContext?: boolean; +} +//# sourceMappingURL=LoggerOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js new file mode 100644 index 0000000..b0ea29b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=LoggerOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js.map new file mode 100644 index 0000000..7afbd19 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerOptions.js","sourceRoot":"","sources":["../../../src/types/LoggerOptions.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Attributes } from '@opentelemetry/api';\nexport interface LoggerOptions {\n /**\n * The schemaUrl of the tracer or instrumentation library\n * @default ''\n */\n schemaUrl?: string;\n\n /**\n * The instrumentation scope attributes to associate with emitted telemetry\n */\n scopeAttributes?: Attributes;\n\n /**\n * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger.\n * @default true\n */\n includeTraceContext?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.d.ts new file mode 100644 index 0000000..022c9d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.d.ts @@ -0,0 +1,18 @@ +import { Logger } from './Logger'; +import { LoggerOptions } from './LoggerOptions'; +/** + * A registry for creating named {@link Logger}s. + */ +export interface LoggerProvider { + /** + * Returns a Logger, creating one if one with the given name, version, and + * schemaUrl pair is not already created. + * + * @param name The name of the logger or instrumentation library. + * @param version The version of the logger or instrumentation library. + * @param options The options of the logger or instrumentation library. + * @returns Logger A Logger with the given name and version + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; +} +//# sourceMappingURL=LoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js new file mode 100644 index 0000000..4134abe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=LoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js.map new file mode 100644 index 0000000..0d26f88 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/types/LoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerProvider.js","sourceRoot":"","sources":["../../../src/types/LoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './Logger';\nimport { LoggerOptions } from './LoggerOptions';\n\n/**\n * A registry for creating named {@link Logger}s.\n */\nexport interface LoggerProvider {\n /**\n * Returns a Logger, creating one if one with the given name, version, and\n * schemaUrl pair is not already created.\n *\n * @param name The name of the logger or instrumentation library.\n * @param version The version of the logger or instrumentation library.\n * @param options The options of the logger or instrumentation library.\n * @returns Logger A Logger with the given name and version\n */\n getLogger(name: string, version?: string, options?: LoggerOptions): Logger;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/version.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/version.d.ts new file mode 100644 index 0000000..46e47a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.207.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/version.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/version.js new file mode 100644 index 0000000..d544661 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '0.207.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/version.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/version.js.map new file mode 100644 index 0000000..903a5f7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esm/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.207.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.d.ts new file mode 100644 index 0000000..85c8860 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.d.ts @@ -0,0 +1,7 @@ +import { Logger } from './types/Logger'; +import { LogRecord } from './types/LogRecord'; +export declare class NoopLogger implements Logger { + emit(_logRecord: LogRecord): void; +} +export declare const NOOP_LOGGER: NoopLogger; +//# sourceMappingURL=NoopLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js new file mode 100644 index 0000000..78332f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js @@ -0,0 +1,20 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class NoopLogger { + emit(_logRecord) { } +} +export const NOOP_LOGGER = new NoopLogger(); +//# sourceMappingURL=NoopLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js.map new file mode 100644 index 0000000..f954f13 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLogger.js","sourceRoot":"","sources":["../../src/NoopLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,OAAO,UAAU;IACrB,IAAI,CAAC,UAAqB,IAAS,CAAC;CACrC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.d.ts new file mode 100644 index 0000000..d32bada --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.d.ts @@ -0,0 +1,8 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class NoopLoggerProvider implements LoggerProvider { + getLogger(_name: string, _version?: string | undefined, _options?: LoggerOptions | undefined): Logger; +} +export declare const NOOP_LOGGER_PROVIDER: NoopLoggerProvider; +//# sourceMappingURL=NoopLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js new file mode 100644 index 0000000..fb4e676 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NoopLogger } from './NoopLogger'; +export class NoopLoggerProvider { + getLogger(_name, _version, _options) { + return new NoopLogger(); + } +} +export const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider(); +//# sourceMappingURL=NoopLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js.map new file mode 100644 index 0000000..ee23363 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/NoopLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLoggerProvider.js","sourceRoot":"","sources":["../../src/NoopLoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,kBAAkB;IAC7B,SAAS,CACP,KAAa,EACb,QAA6B,EAC7B,QAAoC;QAEpC,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.d.ts new file mode 100644 index 0000000..cd95231 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.d.ts @@ -0,0 +1,26 @@ +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +import { LogRecord } from './types/LogRecord'; +export declare class ProxyLogger implements Logger { + private _provider; + readonly name: string; + readonly version?: string | undefined; + readonly options?: LoggerOptions | undefined; + private _delegate?; + constructor(_provider: LoggerDelegator, name: string, version?: string | undefined, options?: LoggerOptions | undefined); + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + private _getLogger; +} +export interface LoggerDelegator { + _getDelegateLogger(name: string, version?: string, options?: LoggerOptions): Logger | undefined; +} +//# sourceMappingURL=ProxyLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js new file mode 100644 index 0000000..9cc3ef3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js @@ -0,0 +1,48 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_LOGGER } from './NoopLogger'; +export class ProxyLogger { + constructor(_provider, name, version, options) { + this._provider = _provider; + this.name = name; + this.version = version; + this.options = options; + } + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord) { + this._getLogger().emit(logRecord); + } + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + _getLogger() { + if (this._delegate) { + return this._delegate; + } + const logger = this._provider._getDelegateLogger(this.name, this.version, this.options); + if (!logger) { + return NOOP_LOGGER; + } + this._delegate = logger; + return this._delegate; + } +} +//# sourceMappingURL=ProxyLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js.map new file mode 100644 index 0000000..69f1bc3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLogger.js","sourceRoot":"","sources":["../../src/ProxyLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,MAAM,OAAO,WAAW;IAItB,YACU,SAA0B,EAClB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;QAH3C,cAAS,GAAT,SAAS,CAAiB;QAClB,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAqB;QAC5B,YAAO,GAAP,OAAO,CAA4B;IAClD,CAAC;IAEJ;;;;OAIG;IACH,IAAI,CAAC,SAAoB;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC9C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACb,CAAC;QACF,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,WAAW,CAAC;SACpB;QACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n\n constructor(\n private _provider: LoggerDelegator,\n public readonly name: string,\n public readonly version?: string | undefined,\n public readonly options?: LoggerOptions | undefined\n ) {}\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\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 private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.d.ts new file mode 100644 index 0000000..3f235ea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.d.ts @@ -0,0 +1,23 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class ProxyLoggerProvider implements LoggerProvider { + private _delegate?; + getLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger; + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate(): LoggerProvider; + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate: LoggerProvider): void; + /** + * @internal + */ + _getDelegateLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger | undefined; +} +//# sourceMappingURL=ProxyLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js new file mode 100644 index 0000000..38eaa89 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js @@ -0,0 +1,47 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider'; +import { ProxyLogger } from './ProxyLogger'; +export class ProxyLoggerProvider { + getLogger(name, version, options) { + var _a; + return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger(this, name, version, options)); + } + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate() { + var _a; + return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_LOGGER_PROVIDER; + } + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate) { + this._delegate = delegate; + } + /** + * @internal + */ + _getDelegateLogger(name, version, options) { + var _a; + return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options); + } +} +//# sourceMappingURL=ProxyLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js.map new file mode 100644 index 0000000..e620a79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/ProxyLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLoggerProvider.js","sourceRoot":"","sources":["../../src/ProxyLoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,mBAAmB;IAG9B,SAAS,CACP,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,CACL,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,mCAC/C,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,YAAY;;QACV,OAAO,MAAA,IAAI,CAAC,SAAS,mCAAI,oBAAoB,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAwB;QACnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,MAAA,IAAI,CAAC,SAAS,0CAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.d.ts new file mode 100644 index 0000000..caf4fd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +import { Logger } from '../types/Logger'; +import { LoggerOptions } from '../types/LoggerOptions'; +export declare class LogsAPI { + private static _instance?; + private _proxyLoggerProvider; + private constructor(); + static getInstance(): LogsAPI; + setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider; + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider(): LoggerProvider; + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; + /** Remove the global logger provider */ + disable(): void; +} +//# sourceMappingURL=logs.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js new file mode 100644 index 0000000..07aa497 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js @@ -0,0 +1,60 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { API_BACKWARDS_COMPATIBILITY_VERSION, GLOBAL_LOGS_API_KEY, _global, makeGetter, } from '../internal/global-utils'; +import { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider'; +import { ProxyLoggerProvider } from '../ProxyLoggerProvider'; +export class LogsAPI { + constructor() { + this._proxyLoggerProvider = new ProxyLoggerProvider(); + } + static getInstance() { + if (!this._instance) { + this._instance = new LogsAPI(); + } + return this._instance; + } + setGlobalLoggerProvider(provider) { + if (_global[GLOBAL_LOGS_API_KEY]) { + return this.getLoggerProvider(); + } + _global[GLOBAL_LOGS_API_KEY] = makeGetter(API_BACKWARDS_COMPATIBILITY_VERSION, provider, NOOP_LOGGER_PROVIDER); + this._proxyLoggerProvider._setDelegate(provider); + return provider; + } + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider() { + var _a, _b; + return ((_b = (_a = _global[GLOBAL_LOGS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(_global, API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : this._proxyLoggerProvider); + } + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name, version, options) { + return this.getLoggerProvider().getLogger(name, version, options); + } + /** Remove the global logger provider */ + disable() { + delete _global[GLOBAL_LOGS_API_KEY]; + this._proxyLoggerProvider = new ProxyLoggerProvider(); + } +} +//# sourceMappingURL=logs.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js.map new file mode 100644 index 0000000..b043450 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/api/logs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/api/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,mCAAmC,EACnC,mBAAmB,EACnB,OAAO,EACP,UAAU,GACX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,OAAO,OAAO;IAKlB;QAFQ,yBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAElC,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;SAChC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,uBAAuB,CAAC,QAAwB;QACrD,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACjC;QAED,OAAO,CAAC,mBAAmB,CAAC,GAAG,UAAU,CACvC,mCAAmC,EACnC,QAAQ,EACR,oBAAoB,CACrB,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,iBAAiB;;QACtB,OAAO,CACL,MAAA,MAAA,OAAO,CAAC,mBAAmB,CAAC,wDAAG,mCAAmC,CAAC,mCACnE,IAAI,CAAC,oBAAoB,CAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,SAAS,CACd,IAAY,EACZ,OAAgB,EAChB,OAAuB;QAEvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,wCAAwC;IACjC,OAAO;QACZ,OAAO,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACxD,CAAC;CACF","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/index.d.ts new file mode 100644 index 0000000..2b1e295 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/index.d.ts @@ -0,0 +1,13 @@ +export type { Logger } from './types/Logger'; +export type { LoggerProvider } from './types/LoggerProvider'; +export { SeverityNumber } from './types/LogRecord'; +export type { LogAttributes, LogBody, LogRecord } from './types/LogRecord'; +export type { LoggerOptions } from './types/LoggerOptions'; +export type { AnyValue, AnyValueMap } from './types/AnyValue'; +export { NOOP_LOGGER, NoopLogger } from './NoopLogger'; +export { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider'; +export { ProxyLogger } from './ProxyLogger'; +export { ProxyLoggerProvider } from './ProxyLoggerProvider'; +import { LogsAPI } from './api/logs'; +export declare const logs: LogsAPI; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/index.js new file mode 100644 index 0000000..be06dc9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/index.js @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { SeverityNumber } from './types/LogRecord'; +export { NOOP_LOGGER, NoopLogger } from './NoopLogger'; +export { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider'; +export { ProxyLogger } from './ProxyLogger'; +export { ProxyLoggerProvider } from './ProxyLoggerProvider'; +import { LogsAPI } from './api/logs'; +export const logs = LogsAPI.getInstance(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/index.js.map new file mode 100644 index 0000000..4e248ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\nexport { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider';\nexport { ProxyLogger } from './ProxyLogger';\nexport { ProxyLoggerProvider } from './ProxyLoggerProvider';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.d.ts new file mode 100644 index 0000000..f54b065 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +export declare const GLOBAL_LOGS_API_KEY: unique symbol; +type Get = (version: number) => T; +export declare const _global: Partial<{ + [GLOBAL_LOGS_API_KEY]: Get; +}>; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +export declare function makeGetter(requiredVersion: number, instance: T, fallback: T): Get; +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +export declare const API_BACKWARDS_COMPATIBILITY_VERSION = 1; +export {}; +//# sourceMappingURL=global-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js new file mode 100644 index 0000000..e03a484 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js @@ -0,0 +1,38 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { _globalThis } from '../platform'; +export const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs'); +export const _global = _globalThis; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +export function makeGetter(requiredVersion, instance, fallback) { + return (version) => version === requiredVersion ? instance : fallback; +} +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +export const API_BACKWARDS_COMPATIBILITY_VERSION = 1; +//# sourceMappingURL=global-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js.map new file mode 100644 index 0000000..1e6b443 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/internal/global-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-utils.js","sourceRoot":"","sources":["../../../src/internal/global-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAO9E,MAAM,CAAC,MAAM,OAAO,GAAG,WAAyB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,eAAuB,EACvB,QAAW,EACX,QAAW;IAEX,OAAO,CAAC,OAAe,EAAK,EAAE,CAC5B,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { _globalThis } from '../platform';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = _globalThis as OtelGlobal;\n\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 */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\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 */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/globalThis.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/globalThis.d.ts new file mode 100644 index 0000000..e73fd73 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/globalThis.d.ts @@ -0,0 +1,10 @@ +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/globalThis.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/globalThis.js new file mode 100644 index 0000000..684edbf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/globalThis.js @@ -0,0 +1,36 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Updates to this file should also be replicated to @opentelemetry/api and +// @opentelemetry/core too. +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line n/no-unsupported-features/es-builtins, no-undef +export const _globalThis = typeof globalThis === 'object' + ? globalThis + : typeof self === 'object' + ? self + : typeof window === 'object' + ? window + : typeof global === 'object' + ? global + : {}; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/globalThis.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/globalThis.js.map new file mode 100644 index 0000000..7ba66fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/browser/globalThis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,2EAA2E;AAC3E,2BAA2B;AAE3B;;;;;;GAMG;AAEH,gEAAgE;AAChE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,WAAW,GACtB,OAAO,UAAU,KAAK,QAAQ;IAC5B,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;YAC1B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;gBAC1B,CAAC,CAAE,MAAuC;gBAC1C,CAAC,CAAE,EAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Updates to this file should also be replicated to @opentelemetry/api and\n// @opentelemetry/core too.\n\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - (When all else fails)\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins, no-undef\nexport const _globalThis: typeof globalThis =\n typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? (global as unknown as typeof globalThis)\n : ({} as typeof globalThis);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/index.d.ts new file mode 100644 index 0000000..5ec916d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/index.d.ts @@ -0,0 +1,2 @@ +export { _globalThis } from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/index.js new file mode 100644 index 0000000..f9dcfa0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { _globalThis } from './globalThis'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/index.js.map new file mode 100644 index 0000000..4ba3095 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { _globalThis } from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/index.d.ts new file mode 100644 index 0000000..b54ed4f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/index.d.ts @@ -0,0 +1,2 @@ +export { _globalThis } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/index.js new file mode 100644 index 0000000..22de8ca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { _globalThis } from './node'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/index.js.map new file mode 100644 index 0000000..ee99855 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { _globalThis } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/globalThis.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/globalThis.d.ts new file mode 100644 index 0000000..a629f37 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/globalThis.d.ts @@ -0,0 +1,5 @@ +/// +/// +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis | NodeJS.Global; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/globalThis.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/globalThis.js new file mode 100644 index 0000000..ffddc1c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/globalThis.js @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line n/no-unsupported-features/es-builtins +export const _globalThis = typeof globalThis === 'object' ? globalThis : global; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/globalThis.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/globalThis.js.map new file mode 100644 index 0000000..e6dbf31 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/node/globalThis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,gEAAgE;AAChE,iEAAiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/index.d.ts new file mode 100644 index 0000000..5ec916d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/index.d.ts @@ -0,0 +1,2 @@ +export { _globalThis } from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/index.js new file mode 100644 index 0000000..f9dcfa0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/index.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { _globalThis } from './globalThis'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/index.js.map new file mode 100644 index 0000000..fd2c561 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { _globalThis } from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.d.ts new file mode 100644 index 0000000..aa987ac --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.d.ts @@ -0,0 +1,18 @@ +export type AnyValueScalar = string | number | boolean; +export type AnyValueArray = Array; +/** + * AnyValueMap is a map from string to AnyValue (attribute value or a nested map) + */ +export interface AnyValueMap { + [attributeKey: string]: AnyValue; +} +/** + * AnyValue can be one of the following: + * - a scalar value + * - a byte array + * - array of any value + * - map from string to any value + * - empty value + */ +export type AnyValue = AnyValueScalar | Uint8Array | AnyValueArray | AnyValueMap | null | undefined; +//# sourceMappingURL=AnyValue.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js new file mode 100644 index 0000000..2c44f1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=AnyValue.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js.map new file mode 100644 index 0000000..48746ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/AnyValue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AnyValue.js","sourceRoot":"","sources":["../../../src/types/AnyValue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type AnyValueScalar = string | number | boolean;\n\nexport type AnyValueArray = Array;\n\n/**\n * AnyValueMap is a map from string to AnyValue (attribute value or a nested map)\n */\nexport interface AnyValueMap {\n [attributeKey: string]: AnyValue;\n}\n\n/**\n * AnyValue can be one of the following:\n * - a scalar value\n * - a byte array\n * - array of any value\n * - map from string to any value\n * - empty value\n */\nexport type AnyValue =\n | AnyValueScalar\n | Uint8Array\n | AnyValueArray\n | AnyValueMap\n | null\n | undefined;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.d.ts new file mode 100644 index 0000000..71abcd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.d.ts @@ -0,0 +1,66 @@ +import { Context, TimeInput } from '@opentelemetry/api'; +import { AnyValue, AnyValueMap } from './AnyValue'; +export type LogBody = AnyValue; +export type LogAttributes = AnyValueMap; +export declare enum SeverityNumber { + UNSPECIFIED = 0, + TRACE = 1, + TRACE2 = 2, + TRACE3 = 3, + TRACE4 = 4, + DEBUG = 5, + DEBUG2 = 6, + DEBUG3 = 7, + DEBUG4 = 8, + INFO = 9, + INFO2 = 10, + INFO3 = 11, + INFO4 = 12, + WARN = 13, + WARN2 = 14, + WARN3 = 15, + WARN4 = 16, + ERROR = 17, + ERROR2 = 18, + ERROR3 = 19, + ERROR4 = 20, + FATAL = 21, + FATAL2 = 22, + FATAL3 = 23, + FATAL4 = 24 +} +export interface LogRecord { + /** + * The unique identifier for the log record. + */ + eventName?: string; + /** + * The time when the log record occurred as UNIX Epoch time in nanoseconds. + */ + timestamp?: TimeInput; + /** + * Time when the event was observed by the collection system. + */ + observedTimestamp?: TimeInput; + /** + * Numerical value of the severity. + */ + severityNumber?: SeverityNumber; + /** + * The severity text. + */ + severityText?: string; + /** + * A value containing the body of the log record. + */ + body?: LogBody; + /** + * Attributes that define the log record. + */ + attributes?: LogAttributes; + /** + * The Context associated with the LogRecord. + */ + context?: Context; +} +//# sourceMappingURL=LogRecord.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js new file mode 100644 index 0000000..327a4b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js @@ -0,0 +1,44 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export var SeverityNumber; +(function (SeverityNumber) { + SeverityNumber[SeverityNumber["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + SeverityNumber[SeverityNumber["TRACE"] = 1] = "TRACE"; + SeverityNumber[SeverityNumber["TRACE2"] = 2] = "TRACE2"; + SeverityNumber[SeverityNumber["TRACE3"] = 3] = "TRACE3"; + SeverityNumber[SeverityNumber["TRACE4"] = 4] = "TRACE4"; + SeverityNumber[SeverityNumber["DEBUG"] = 5] = "DEBUG"; + SeverityNumber[SeverityNumber["DEBUG2"] = 6] = "DEBUG2"; + SeverityNumber[SeverityNumber["DEBUG3"] = 7] = "DEBUG3"; + SeverityNumber[SeverityNumber["DEBUG4"] = 8] = "DEBUG4"; + SeverityNumber[SeverityNumber["INFO"] = 9] = "INFO"; + SeverityNumber[SeverityNumber["INFO2"] = 10] = "INFO2"; + SeverityNumber[SeverityNumber["INFO3"] = 11] = "INFO3"; + SeverityNumber[SeverityNumber["INFO4"] = 12] = "INFO4"; + SeverityNumber[SeverityNumber["WARN"] = 13] = "WARN"; + SeverityNumber[SeverityNumber["WARN2"] = 14] = "WARN2"; + SeverityNumber[SeverityNumber["WARN3"] = 15] = "WARN3"; + SeverityNumber[SeverityNumber["WARN4"] = 16] = "WARN4"; + SeverityNumber[SeverityNumber["ERROR"] = 17] = "ERROR"; + SeverityNumber[SeverityNumber["ERROR2"] = 18] = "ERROR2"; + SeverityNumber[SeverityNumber["ERROR3"] = 19] = "ERROR3"; + SeverityNumber[SeverityNumber["ERROR4"] = 20] = "ERROR4"; + SeverityNumber[SeverityNumber["FATAL"] = 21] = "FATAL"; + SeverityNumber[SeverityNumber["FATAL2"] = 22] = "FATAL2"; + SeverityNumber[SeverityNumber["FATAL3"] = 23] = "FATAL3"; + SeverityNumber[SeverityNumber["FATAL4"] = 24] = "FATAL4"; +})(SeverityNumber || (SeverityNumber = {})); +//# sourceMappingURL=LogRecord.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js.map new file mode 100644 index 0000000..62552a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LogRecord.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LogRecord.js","sourceRoot":"","sources":["../../../src/types/LogRecord.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,CAAN,IAAY,cA0BX;AA1BD,WAAY,cAAc;IACxB,iEAAe,CAAA;IACf,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,mDAAQ,CAAA;IACR,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,oDAAS,CAAA;IACT,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;AACb,CAAC,EA1BW,cAAc,KAAd,cAAc,QA0BzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, TimeInput } from '@opentelemetry/api';\nimport { AnyValue, AnyValueMap } from './AnyValue';\n\nexport type LogBody = AnyValue;\nexport type LogAttributes = AnyValueMap;\n\nexport enum SeverityNumber {\n UNSPECIFIED = 0,\n TRACE = 1,\n TRACE2 = 2,\n TRACE3 = 3,\n TRACE4 = 4,\n DEBUG = 5,\n DEBUG2 = 6,\n DEBUG3 = 7,\n DEBUG4 = 8,\n INFO = 9,\n INFO2 = 10,\n INFO3 = 11,\n INFO4 = 12,\n WARN = 13,\n WARN2 = 14,\n WARN3 = 15,\n WARN4 = 16,\n ERROR = 17,\n ERROR2 = 18,\n ERROR3 = 19,\n ERROR4 = 20,\n FATAL = 21,\n FATAL2 = 22,\n FATAL3 = 23,\n FATAL4 = 24,\n}\n\nexport interface LogRecord {\n /**\n * The unique identifier for the log record.\n */\n eventName?: string;\n\n /**\n * The time when the log record occurred as UNIX Epoch time in nanoseconds.\n */\n timestamp?: TimeInput;\n\n /**\n * Time when the event was observed by the collection system.\n */\n observedTimestamp?: TimeInput;\n\n /**\n * Numerical value of the severity.\n */\n severityNumber?: SeverityNumber;\n\n /**\n * The severity text.\n */\n severityText?: string;\n\n /**\n * A value containing the body of the log record.\n */\n body?: LogBody;\n\n /**\n * Attributes that define the log record.\n */\n attributes?: LogAttributes;\n\n /**\n * The Context associated with the LogRecord.\n */\n context?: Context;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.d.ts new file mode 100644 index 0000000..fca8bc6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.d.ts @@ -0,0 +1,10 @@ +import { LogRecord } from './LogRecord'; +export interface Logger { + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; +} +//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js new file mode 100644 index 0000000..99158d8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=Logger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js.map new file mode 100644 index 0000000..f454c21 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/Logger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/types/Logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LogRecord } from './LogRecord';\n\nexport interface Logger {\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.d.ts new file mode 100644 index 0000000..010861f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.d.ts @@ -0,0 +1,18 @@ +import { Attributes } from '@opentelemetry/api'; +export interface LoggerOptions { + /** + * The schemaUrl of the tracer or instrumentation library + * @default '' + */ + schemaUrl?: string; + /** + * The instrumentation scope attributes to associate with emitted telemetry + */ + scopeAttributes?: Attributes; + /** + * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger. + * @default true + */ + includeTraceContext?: boolean; +} +//# sourceMappingURL=LoggerOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js new file mode 100644 index 0000000..b0ea29b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=LoggerOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js.map new file mode 100644 index 0000000..7afbd19 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerOptions.js","sourceRoot":"","sources":["../../../src/types/LoggerOptions.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Attributes } from '@opentelemetry/api';\nexport interface LoggerOptions {\n /**\n * The schemaUrl of the tracer or instrumentation library\n * @default ''\n */\n schemaUrl?: string;\n\n /**\n * The instrumentation scope attributes to associate with emitted telemetry\n */\n scopeAttributes?: Attributes;\n\n /**\n * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger.\n * @default true\n */\n includeTraceContext?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.d.ts new file mode 100644 index 0000000..022c9d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.d.ts @@ -0,0 +1,18 @@ +import { Logger } from './Logger'; +import { LoggerOptions } from './LoggerOptions'; +/** + * A registry for creating named {@link Logger}s. + */ +export interface LoggerProvider { + /** + * Returns a Logger, creating one if one with the given name, version, and + * schemaUrl pair is not already created. + * + * @param name The name of the logger or instrumentation library. + * @param version The version of the logger or instrumentation library. + * @param options The options of the logger or instrumentation library. + * @returns Logger A Logger with the given name and version + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; +} +//# sourceMappingURL=LoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js new file mode 100644 index 0000000..4134abe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; +//# sourceMappingURL=LoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js.map new file mode 100644 index 0000000..0d26f88 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/types/LoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerProvider.js","sourceRoot":"","sources":["../../../src/types/LoggerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './Logger';\nimport { LoggerOptions } from './LoggerOptions';\n\n/**\n * A registry for creating named {@link Logger}s.\n */\nexport interface LoggerProvider {\n /**\n * Returns a Logger, creating one if one with the given name, version, and\n * schemaUrl pair is not already created.\n *\n * @param name The name of the logger or instrumentation library.\n * @param version The version of the logger or instrumentation library.\n * @param options The options of the logger or instrumentation library.\n * @returns Logger A Logger with the given name and version\n */\n getLogger(name: string, version?: string, options?: LoggerOptions): Logger;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/version.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/version.d.ts new file mode 100644 index 0000000..46e47a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.207.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/version.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/version.js new file mode 100644 index 0000000..d544661 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/version.js @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '0.207.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/version.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/version.js.map new file mode 100644 index 0000000..903a5f7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/esnext/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.207.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.d.ts new file mode 100644 index 0000000..85c8860 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.d.ts @@ -0,0 +1,7 @@ +import { Logger } from './types/Logger'; +import { LogRecord } from './types/LogRecord'; +export declare class NoopLogger implements Logger { + emit(_logRecord: LogRecord): void; +} +export declare const NOOP_LOGGER: NoopLogger; +//# sourceMappingURL=NoopLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js new file mode 100644 index 0000000..7e1b218 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js @@ -0,0 +1,24 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NOOP_LOGGER = exports.NoopLogger = void 0; +class NoopLogger { + emit(_logRecord) { } +} +exports.NoopLogger = NoopLogger; +exports.NOOP_LOGGER = new NoopLogger(); +//# sourceMappingURL=NoopLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js.map new file mode 100644 index 0000000..990f248 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLogger.js","sourceRoot":"","sources":["../../src/NoopLogger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH,MAAa,UAAU;IACrB,IAAI,CAAC,UAAqB,IAAS,CAAC;CACrC;AAFD,gCAEC;AAEY,QAAA,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.d.ts new file mode 100644 index 0000000..d32bada --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.d.ts @@ -0,0 +1,8 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class NoopLoggerProvider implements LoggerProvider { + getLogger(_name: string, _version?: string | undefined, _options?: LoggerOptions | undefined): Logger; +} +export declare const NOOP_LOGGER_PROVIDER: NoopLoggerProvider; +//# sourceMappingURL=NoopLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js new file mode 100644 index 0000000..1601f1a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js @@ -0,0 +1,27 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NOOP_LOGGER_PROVIDER = exports.NoopLoggerProvider = void 0; +const NoopLogger_1 = require("./NoopLogger"); +class NoopLoggerProvider { + getLogger(_name, _version, _options) { + return new NoopLogger_1.NoopLogger(); + } +} +exports.NoopLoggerProvider = NoopLoggerProvider; +exports.NOOP_LOGGER_PROVIDER = new NoopLoggerProvider(); +//# sourceMappingURL=NoopLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js.map new file mode 100644 index 0000000..1e03e6d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NoopLoggerProvider.js","sourceRoot":"","sources":["../../src/NoopLoggerProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH,6CAA0C;AAE1C,MAAa,kBAAkB;IAC7B,SAAS,CACP,KAAa,EACb,QAA6B,EAC7B,QAAoC;QAEpC,OAAO,IAAI,uBAAU,EAAE,CAAC;IAC1B,CAAC;CACF;AARD,gDAQC;AAEY,QAAA,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.d.ts new file mode 100644 index 0000000..cd95231 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.d.ts @@ -0,0 +1,26 @@ +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +import { LogRecord } from './types/LogRecord'; +export declare class ProxyLogger implements Logger { + private _provider; + readonly name: string; + readonly version?: string | undefined; + readonly options?: LoggerOptions | undefined; + private _delegate?; + constructor(_provider: LoggerDelegator, name: string, version?: string | undefined, options?: LoggerOptions | undefined); + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + private _getLogger; +} +export interface LoggerDelegator { + _getDelegateLogger(name: string, version?: string, options?: LoggerOptions): Logger | undefined; +} +//# sourceMappingURL=ProxyLogger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js new file mode 100644 index 0000000..a37a9e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js @@ -0,0 +1,52 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ProxyLogger = void 0; +const NoopLogger_1 = require("./NoopLogger"); +class ProxyLogger { + constructor(_provider, name, version, options) { + this._provider = _provider; + this.name = name; + this.version = version; + this.options = options; + } + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord) { + this._getLogger().emit(logRecord); + } + /** + * Try to get a logger from the proxy logger provider. + * If the proxy logger provider has no delegate, return a noop logger. + */ + _getLogger() { + if (this._delegate) { + return this._delegate; + } + const logger = this._provider._getDelegateLogger(this.name, this.version, this.options); + if (!logger) { + return NoopLogger_1.NOOP_LOGGER; + } + this._delegate = logger; + return this._delegate; + } +} +exports.ProxyLogger = ProxyLogger; +//# sourceMappingURL=ProxyLogger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js.map new file mode 100644 index 0000000..4e2a428 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLogger.js","sourceRoot":"","sources":["../../src/ProxyLogger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6CAA2C;AAK3C,MAAa,WAAW;IAItB,YACU,SAA0B,EAClB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;QAH3C,cAAS,GAAT,SAAS,CAAiB;QAClB,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAqB;QAC5B,YAAO,GAAP,OAAO,CAA4B;IAClD,CAAC;IAEJ;;;;OAIG;IACH,IAAI,CAAC,SAAoB;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC9C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACb,CAAC;QACF,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,wBAAW,CAAC;SACpB;QACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAvCD,kCAuCC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n\n constructor(\n private _provider: LoggerDelegator,\n public readonly name: string,\n public readonly version?: string | undefined,\n public readonly options?: LoggerOptions | undefined\n ) {}\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\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 private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.d.ts new file mode 100644 index 0000000..3f235ea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.d.ts @@ -0,0 +1,23 @@ +import { LoggerProvider } from './types/LoggerProvider'; +import { Logger } from './types/Logger'; +import { LoggerOptions } from './types/LoggerOptions'; +export declare class ProxyLoggerProvider implements LoggerProvider { + private _delegate?; + getLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger; + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate(): LoggerProvider; + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate: LoggerProvider): void; + /** + * @internal + */ + _getDelegateLogger(name: string, version?: string | undefined, options?: LoggerOptions | undefined): Logger | undefined; +} +//# sourceMappingURL=ProxyLoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js new file mode 100644 index 0000000..dd0b290 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js @@ -0,0 +1,51 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ProxyLoggerProvider = void 0; +const NoopLoggerProvider_1 = require("./NoopLoggerProvider"); +const ProxyLogger_1 = require("./ProxyLogger"); +class ProxyLoggerProvider { + getLogger(name, version, options) { + var _a; + return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger_1.ProxyLogger(this, name, version, options)); + } + /** + * Get the delegate logger provider. + * Used by tests only. + * @internal + */ + _getDelegate() { + var _a; + return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER; + } + /** + * Set the delegate logger provider + * @internal + */ + _setDelegate(delegate) { + this._delegate = delegate; + } + /** + * @internal + */ + _getDelegateLogger(name, version, options) { + var _a; + return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options); + } +} +exports.ProxyLoggerProvider = ProxyLoggerProvider; +//# sourceMappingURL=ProxyLoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js.map new file mode 100644 index 0000000..2a6124c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProxyLoggerProvider.js","sourceRoot":"","sources":["../../src/ProxyLoggerProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAKH,6DAA4D;AAC5D,+CAA4C;AAE5C,MAAa,mBAAmB;IAG9B,SAAS,CACP,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,CACL,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,mCAC/C,IAAI,yBAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,YAAY;;QACV,OAAO,MAAA,IAAI,CAAC,SAAS,mCAAI,yCAAoB,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAwB;QACnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAY,EACZ,OAA4B,EAC5B,OAAmC;;QAEnC,OAAO,MAAA,IAAI,CAAC,SAAS,0CAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF;AAzCD,kDAyCC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.d.ts new file mode 100644 index 0000000..caf4fd0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +import { Logger } from '../types/Logger'; +import { LoggerOptions } from '../types/LoggerOptions'; +export declare class LogsAPI { + private static _instance?; + private _proxyLoggerProvider; + private constructor(); + static getInstance(): LogsAPI; + setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider; + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider(): LoggerProvider; + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; + /** Remove the global logger provider */ + disable(): void; +} +//# sourceMappingURL=logs.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.js new file mode 100644 index 0000000..8fd7e22 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.js @@ -0,0 +1,64 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LogsAPI = void 0; +const global_utils_1 = require("../internal/global-utils"); +const NoopLoggerProvider_1 = require("../NoopLoggerProvider"); +const ProxyLoggerProvider_1 = require("../ProxyLoggerProvider"); +class LogsAPI { + constructor() { + this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider(); + } + static getInstance() { + if (!this._instance) { + this._instance = new LogsAPI(); + } + return this._instance; + } + setGlobalLoggerProvider(provider) { + if (global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) { + return this.getLoggerProvider(); + } + 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); + this._proxyLoggerProvider._setDelegate(provider); + return provider; + } + /** + * Returns the global logger provider. + * + * @returns LoggerProvider + */ + getLoggerProvider() { + var _a, _b; + 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); + } + /** + * Returns a logger from the global logger provider. + * + * @returns Logger + */ + getLogger(name, version, options) { + return this.getLoggerProvider().getLogger(name, version, options); + } + /** Remove the global logger provider */ + disable() { + delete global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]; + this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider(); + } +} +exports.LogsAPI = LogsAPI; +//# sourceMappingURL=logs.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.js.map new file mode 100644 index 0000000..4418232 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/api/logs.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2DAKkC;AAElC,8DAA6D;AAG7D,gEAA6D;AAE7D,MAAa,OAAO;IAKlB;QAFQ,yBAAoB,GAAG,IAAI,yCAAmB,EAAE,CAAC;IAElC,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;SAChC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,uBAAuB,CAAC,QAAwB;QACrD,IAAI,sBAAO,CAAC,kCAAmB,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACjC;QAED,sBAAO,CAAC,kCAAmB,CAAC,GAAG,IAAA,yBAAU,EACvC,kDAAmC,EACnC,QAAQ,EACR,yCAAoB,CACrB,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,iBAAiB;;QACtB,OAAO,CACL,MAAA,MAAA,sBAAO,CAAC,kCAAmB,CAAC,uEAAG,kDAAmC,CAAC,mCACnE,IAAI,CAAC,oBAAoB,CAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,SAAS,CACd,IAAY,EACZ,OAAgB,EAChB,OAAuB;QAEvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,wCAAwC;IACjC,OAAO;QACZ,OAAO,sBAAO,CAAC,kCAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,yCAAmB,EAAE,CAAC;IACxD,CAAC;CACF;AA5DD,0BA4DC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.d.ts new file mode 100644 index 0000000..2b1e295 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.d.ts @@ -0,0 +1,13 @@ +export type { Logger } from './types/Logger'; +export type { LoggerProvider } from './types/LoggerProvider'; +export { SeverityNumber } from './types/LogRecord'; +export type { LogAttributes, LogBody, LogRecord } from './types/LogRecord'; +export type { LoggerOptions } from './types/LoggerOptions'; +export type { AnyValue, AnyValueMap } from './types/AnyValue'; +export { NOOP_LOGGER, NoopLogger } from './NoopLogger'; +export { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider'; +export { ProxyLogger } from './ProxyLogger'; +export { ProxyLoggerProvider } from './ProxyLoggerProvider'; +import { LogsAPI } from './api/logs'; +export declare const logs: LogsAPI; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.js new file mode 100644 index 0000000..c248601 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.js @@ -0,0 +1,33 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logs = exports.ProxyLoggerProvider = exports.ProxyLogger = exports.NoopLoggerProvider = exports.NOOP_LOGGER_PROVIDER = exports.NoopLogger = exports.NOOP_LOGGER = exports.SeverityNumber = void 0; +var LogRecord_1 = require("./types/LogRecord"); +Object.defineProperty(exports, "SeverityNumber", { enumerable: true, get: function () { return LogRecord_1.SeverityNumber; } }); +var NoopLogger_1 = require("./NoopLogger"); +Object.defineProperty(exports, "NOOP_LOGGER", { enumerable: true, get: function () { return NoopLogger_1.NOOP_LOGGER; } }); +Object.defineProperty(exports, "NoopLogger", { enumerable: true, get: function () { return NoopLogger_1.NoopLogger; } }); +var NoopLoggerProvider_1 = require("./NoopLoggerProvider"); +Object.defineProperty(exports, "NOOP_LOGGER_PROVIDER", { enumerable: true, get: function () { return NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER; } }); +Object.defineProperty(exports, "NoopLoggerProvider", { enumerable: true, get: function () { return NoopLoggerProvider_1.NoopLoggerProvider; } }); +var ProxyLogger_1 = require("./ProxyLogger"); +Object.defineProperty(exports, "ProxyLogger", { enumerable: true, get: function () { return ProxyLogger_1.ProxyLogger; } }); +var ProxyLoggerProvider_1 = require("./ProxyLoggerProvider"); +Object.defineProperty(exports, "ProxyLoggerProvider", { enumerable: true, get: function () { return ProxyLoggerProvider_1.ProxyLoggerProvider; } }); +const logs_1 = require("./api/logs"); +exports.logs = logs_1.LogsAPI.getInstance(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.js.map new file mode 100644 index 0000000..1bb5b37 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,+CAAmD;AAA1C,2GAAA,cAAc,OAAA;AAIvB,2CAAuD;AAA9C,yGAAA,WAAW,OAAA;AAAE,wGAAA,UAAU,OAAA;AAChC,2DAAgF;AAAvE,0HAAA,oBAAoB,OAAA;AAAE,wHAAA,kBAAkB,OAAA;AACjD,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAE5B,qCAAqC;AACxB,QAAA,IAAI,GAAG,cAAO,CAAC,WAAW,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\nexport { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider';\nexport { ProxyLogger } from './ProxyLogger';\nexport { ProxyLoggerProvider } from './ProxyLoggerProvider';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.d.ts new file mode 100644 index 0000000..f54b065 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.d.ts @@ -0,0 +1,25 @@ +import { LoggerProvider } from '../types/LoggerProvider'; +export declare const GLOBAL_LOGS_API_KEY: unique symbol; +type Get = (version: number) => T; +export declare const _global: Partial<{ + [GLOBAL_LOGS_API_KEY]: Get; +}>; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +export declare function makeGetter(requiredVersion: number, instance: T, fallback: T): Get; +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +export declare const API_BACKWARDS_COMPATIBILITY_VERSION = 1; +export {}; +//# sourceMappingURL=global-utils.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js new file mode 100644 index 0000000..b1b2fbe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js @@ -0,0 +1,42 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_LOGS_API_KEY = void 0; +const platform_1 = require("../platform"); +exports.GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs'); +exports._global = platform_1._globalThis; +/** + * Make a function which accepts a version integer and returns the instance of an API if the version + * is compatible, or a fallback version (usually NOOP) if it is not. + * + * @param requiredVersion Backwards compatibility version which is required to return the instance + * @param instance Instance which should be returned if the required version is compatible + * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible + */ +function makeGetter(requiredVersion, instance, fallback) { + return (version) => version === requiredVersion ? instance : fallback; +} +exports.makeGetter = makeGetter; +/** + * A number which should be incremented each time a backwards incompatible + * change is made to the API. This number is used when an API package + * attempts to access the global API to ensure it is getting a compatible + * version. If the global API is not compatible with the API package + * attempting to get it, a NOOP API implementation will be returned. + */ +exports.API_BACKWARDS_COMPATIBILITY_VERSION = 1; +//# sourceMappingURL=global-utils.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js.map new file mode 100644 index 0000000..267a809 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global-utils.js","sourceRoot":"","sources":["../../../src/internal/global-utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,0CAA0C;AAE7B,QAAA,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAOjE,QAAA,OAAO,GAAG,sBAAyB,CAAC;AAEjD;;;;;;;GAOG;AACH,SAAgB,UAAU,CACxB,eAAuB,EACvB,QAAW,EACX,QAAW;IAEX,OAAO,CAAC,OAAe,EAAK,EAAE,CAC5B,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAPD,gCAOC;AAED;;;;;;GAMG;AACU,QAAA,mCAAmC,GAAG,CAAC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { _globalThis } from '../platform';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = _globalThis as OtelGlobal;\n\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 */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\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 */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/globalThis.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/globalThis.d.ts new file mode 100644 index 0000000..e73fd73 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/globalThis.d.ts @@ -0,0 +1,10 @@ +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/globalThis.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/globalThis.js new file mode 100644 index 0000000..804579d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/globalThis.js @@ -0,0 +1,39 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._globalThis = void 0; +// Updates to this file should also be replicated to @opentelemetry/api and +// @opentelemetry/core too. +/** + * - globalThis (New standard) + * - self (Will return the current window instance for supported browsers) + * - window (fallback for older browser implementations) + * - global (NodeJS implementation) + * - (When all else fails) + */ +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line n/no-unsupported-features/es-builtins, no-undef +exports._globalThis = typeof globalThis === 'object' + ? globalThis + : typeof self === 'object' + ? self + : typeof window === 'object' + ? window + : typeof global === 'object' + ? global + : {}; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/globalThis.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/globalThis.js.map new file mode 100644 index 0000000..570c425 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/browser/globalThis.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2EAA2E;AAC3E,2BAA2B;AAE3B;;;;;;GAMG;AAEH,gEAAgE;AAChE,2EAA2E;AAC9D,QAAA,WAAW,GACtB,OAAO,UAAU,KAAK,QAAQ;IAC5B,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;YAC1B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;gBAC1B,CAAC,CAAE,MAAuC;gBAC1C,CAAC,CAAE,EAAwB,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// Updates to this file should also be replicated to @opentelemetry/api and\n// @opentelemetry/core too.\n\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - (When all else fails)\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins, no-undef\nexport const _globalThis: typeof globalThis =\n typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? (global as unknown as typeof globalThis)\n : ({} as typeof globalThis);\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/index.d.ts new file mode 100644 index 0000000..5ec916d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/index.d.ts @@ -0,0 +1,2 @@ +export { _globalThis } from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/index.js new file mode 100644 index 0000000..ffe6d10 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._globalThis = void 0; +var globalThis_1 = require("./globalThis"); +Object.defineProperty(exports, "_globalThis", { enumerable: true, get: function () { return globalThis_1._globalThis; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/index.js.map new file mode 100644 index 0000000..b3b5d8d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/browser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2CAA2C;AAAlC,yGAAA,WAAW,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { _globalThis } from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.d.ts new file mode 100644 index 0000000..b54ed4f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.d.ts @@ -0,0 +1,2 @@ +export { _globalThis } from './node'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.js new file mode 100644 index 0000000..a7cc328 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._globalThis = void 0; +var node_1 = require("./node"); +Object.defineProperty(exports, "_globalThis", { enumerable: true, get: function () { return node_1._globalThis; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.js.map new file mode 100644 index 0000000..6c5e1e8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,+BAAqC;AAA5B,mGAAA,WAAW,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { _globalThis } from './node';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.d.ts new file mode 100644 index 0000000..a629f37 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.d.ts @@ -0,0 +1,5 @@ +/// +/// +/** only globals that common to node and browsers are allowed */ +export declare const _globalThis: typeof globalThis | NodeJS.Global; +//# sourceMappingURL=globalThis.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.js new file mode 100644 index 0000000..9ae5914 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._globalThis = void 0; +/** only globals that common to node and browsers are allowed */ +// eslint-disable-next-line n/no-unsupported-features/es-builtins +exports._globalThis = typeof globalThis === 'object' ? globalThis : global; +//# sourceMappingURL=globalThis.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.js.map new file mode 100644 index 0000000..45684e0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalThis.js","sourceRoot":"","sources":["../../../../src/platform/node/globalThis.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,gEAAgE;AAChE,iEAAiE;AACpD,QAAA,WAAW,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.d.ts new file mode 100644 index 0000000..5ec916d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.d.ts @@ -0,0 +1,2 @@ +export { _globalThis } from './globalThis'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.js new file mode 100644 index 0000000..ffe6d10 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports._globalThis = void 0; +var globalThis_1 = require("./globalThis"); +Object.defineProperty(exports, "_globalThis", { enumerable: true, get: function () { return globalThis_1._globalThis; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.js.map new file mode 100644 index 0000000..041f8e4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/node/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,2CAA2C;AAAlC,yGAAA,WAAW,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport { _globalThis } from './globalThis';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.d.ts new file mode 100644 index 0000000..aa987ac --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.d.ts @@ -0,0 +1,18 @@ +export type AnyValueScalar = string | number | boolean; +export type AnyValueArray = Array; +/** + * AnyValueMap is a map from string to AnyValue (attribute value or a nested map) + */ +export interface AnyValueMap { + [attributeKey: string]: AnyValue; +} +/** + * AnyValue can be one of the following: + * - a scalar value + * - a byte array + * - array of any value + * - map from string to any value + * - empty value + */ +export type AnyValue = AnyValueScalar | Uint8Array | AnyValueArray | AnyValueMap | null | undefined; +//# sourceMappingURL=AnyValue.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js new file mode 100644 index 0000000..d1d2400 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=AnyValue.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js.map new file mode 100644 index 0000000..3397a93 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AnyValue.js","sourceRoot":"","sources":["../../../src/types/AnyValue.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nexport type AnyValueScalar = string | number | boolean;\n\nexport type AnyValueArray = Array;\n\n/**\n * AnyValueMap is a map from string to AnyValue (attribute value or a nested map)\n */\nexport interface AnyValueMap {\n [attributeKey: string]: AnyValue;\n}\n\n/**\n * AnyValue can be one of the following:\n * - a scalar value\n * - a byte array\n * - array of any value\n * - map from string to any value\n * - empty value\n */\nexport type AnyValue =\n | AnyValueScalar\n | Uint8Array\n | AnyValueArray\n | AnyValueMap\n | null\n | undefined;\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.d.ts new file mode 100644 index 0000000..71abcd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.d.ts @@ -0,0 +1,66 @@ +import { Context, TimeInput } from '@opentelemetry/api'; +import { AnyValue, AnyValueMap } from './AnyValue'; +export type LogBody = AnyValue; +export type LogAttributes = AnyValueMap; +export declare enum SeverityNumber { + UNSPECIFIED = 0, + TRACE = 1, + TRACE2 = 2, + TRACE3 = 3, + TRACE4 = 4, + DEBUG = 5, + DEBUG2 = 6, + DEBUG3 = 7, + DEBUG4 = 8, + INFO = 9, + INFO2 = 10, + INFO3 = 11, + INFO4 = 12, + WARN = 13, + WARN2 = 14, + WARN3 = 15, + WARN4 = 16, + ERROR = 17, + ERROR2 = 18, + ERROR3 = 19, + ERROR4 = 20, + FATAL = 21, + FATAL2 = 22, + FATAL3 = 23, + FATAL4 = 24 +} +export interface LogRecord { + /** + * The unique identifier for the log record. + */ + eventName?: string; + /** + * The time when the log record occurred as UNIX Epoch time in nanoseconds. + */ + timestamp?: TimeInput; + /** + * Time when the event was observed by the collection system. + */ + observedTimestamp?: TimeInput; + /** + * Numerical value of the severity. + */ + severityNumber?: SeverityNumber; + /** + * The severity text. + */ + severityText?: string; + /** + * A value containing the body of the log record. + */ + body?: LogBody; + /** + * Attributes that define the log record. + */ + attributes?: LogAttributes; + /** + * The Context associated with the LogRecord. + */ + context?: Context; +} +//# sourceMappingURL=LogRecord.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js new file mode 100644 index 0000000..3e9e301 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js @@ -0,0 +1,47 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SeverityNumber = void 0; +var SeverityNumber; +(function (SeverityNumber) { + SeverityNumber[SeverityNumber["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + SeverityNumber[SeverityNumber["TRACE"] = 1] = "TRACE"; + SeverityNumber[SeverityNumber["TRACE2"] = 2] = "TRACE2"; + SeverityNumber[SeverityNumber["TRACE3"] = 3] = "TRACE3"; + SeverityNumber[SeverityNumber["TRACE4"] = 4] = "TRACE4"; + SeverityNumber[SeverityNumber["DEBUG"] = 5] = "DEBUG"; + SeverityNumber[SeverityNumber["DEBUG2"] = 6] = "DEBUG2"; + SeverityNumber[SeverityNumber["DEBUG3"] = 7] = "DEBUG3"; + SeverityNumber[SeverityNumber["DEBUG4"] = 8] = "DEBUG4"; + SeverityNumber[SeverityNumber["INFO"] = 9] = "INFO"; + SeverityNumber[SeverityNumber["INFO2"] = 10] = "INFO2"; + SeverityNumber[SeverityNumber["INFO3"] = 11] = "INFO3"; + SeverityNumber[SeverityNumber["INFO4"] = 12] = "INFO4"; + SeverityNumber[SeverityNumber["WARN"] = 13] = "WARN"; + SeverityNumber[SeverityNumber["WARN2"] = 14] = "WARN2"; + SeverityNumber[SeverityNumber["WARN3"] = 15] = "WARN3"; + SeverityNumber[SeverityNumber["WARN4"] = 16] = "WARN4"; + SeverityNumber[SeverityNumber["ERROR"] = 17] = "ERROR"; + SeverityNumber[SeverityNumber["ERROR2"] = 18] = "ERROR2"; + SeverityNumber[SeverityNumber["ERROR3"] = 19] = "ERROR3"; + SeverityNumber[SeverityNumber["ERROR4"] = 20] = "ERROR4"; + SeverityNumber[SeverityNumber["FATAL"] = 21] = "FATAL"; + SeverityNumber[SeverityNumber["FATAL2"] = 22] = "FATAL2"; + SeverityNumber[SeverityNumber["FATAL3"] = 23] = "FATAL3"; + SeverityNumber[SeverityNumber["FATAL4"] = 24] = "FATAL4"; +})(SeverityNumber = exports.SeverityNumber || (exports.SeverityNumber = {})); +//# sourceMappingURL=LogRecord.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js.map new file mode 100644 index 0000000..9efb0ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LogRecord.js","sourceRoot":"","sources":["../../../src/types/LogRecord.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAQH,IAAY,cA0BX;AA1BD,WAAY,cAAc;IACxB,iEAAe,CAAA;IACf,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,mDAAQ,CAAA;IACR,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,oDAAS,CAAA;IACT,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,sDAAU,CAAA;IACV,wDAAW,CAAA;IACX,wDAAW,CAAA;IACX,wDAAW,CAAA;AACb,CAAC,EA1BW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QA0BzB","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Context, TimeInput } from '@opentelemetry/api';\nimport { AnyValue, AnyValueMap } from './AnyValue';\n\nexport type LogBody = AnyValue;\nexport type LogAttributes = AnyValueMap;\n\nexport enum SeverityNumber {\n UNSPECIFIED = 0,\n TRACE = 1,\n TRACE2 = 2,\n TRACE3 = 3,\n TRACE4 = 4,\n DEBUG = 5,\n DEBUG2 = 6,\n DEBUG3 = 7,\n DEBUG4 = 8,\n INFO = 9,\n INFO2 = 10,\n INFO3 = 11,\n INFO4 = 12,\n WARN = 13,\n WARN2 = 14,\n WARN3 = 15,\n WARN4 = 16,\n ERROR = 17,\n ERROR2 = 18,\n ERROR3 = 19,\n ERROR4 = 20,\n FATAL = 21,\n FATAL2 = 22,\n FATAL3 = 23,\n FATAL4 = 24,\n}\n\nexport interface LogRecord {\n /**\n * The unique identifier for the log record.\n */\n eventName?: string;\n\n /**\n * The time when the log record occurred as UNIX Epoch time in nanoseconds.\n */\n timestamp?: TimeInput;\n\n /**\n * Time when the event was observed by the collection system.\n */\n observedTimestamp?: TimeInput;\n\n /**\n * Numerical value of the severity.\n */\n severityNumber?: SeverityNumber;\n\n /**\n * The severity text.\n */\n severityText?: string;\n\n /**\n * A value containing the body of the log record.\n */\n body?: LogBody;\n\n /**\n * Attributes that define the log record.\n */\n attributes?: LogAttributes;\n\n /**\n * The Context associated with the LogRecord.\n */\n context?: Context;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/Logger.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/Logger.d.ts new file mode 100644 index 0000000..fca8bc6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/Logger.d.ts @@ -0,0 +1,10 @@ +import { LogRecord } from './LogRecord'; +export interface Logger { + /** + * Emit a log record. This method should only be used by log appenders. + * + * @param logRecord + */ + emit(logRecord: LogRecord): void; +} +//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js new file mode 100644 index 0000000..438fef0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Logger.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js.map new file mode 100644 index 0000000..b1ed04e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/Logger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/types/Logger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { LogRecord } from './LogRecord';\n\nexport interface Logger {\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.d.ts new file mode 100644 index 0000000..010861f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.d.ts @@ -0,0 +1,18 @@ +import { Attributes } from '@opentelemetry/api'; +export interface LoggerOptions { + /** + * The schemaUrl of the tracer or instrumentation library + * @default '' + */ + schemaUrl?: string; + /** + * The instrumentation scope attributes to associate with emitted telemetry + */ + scopeAttributes?: Attributes; + /** + * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger. + * @default true + */ + includeTraceContext?: boolean; +} +//# sourceMappingURL=LoggerOptions.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js new file mode 100644 index 0000000..a28ab6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=LoggerOptions.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js.map new file mode 100644 index 0000000..7afbd19 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerOptions.js","sourceRoot":"","sources":["../../../src/types/LoggerOptions.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Attributes } from '@opentelemetry/api';\nexport interface LoggerOptions {\n /**\n * The schemaUrl of the tracer or instrumentation library\n * @default ''\n */\n schemaUrl?: string;\n\n /**\n * The instrumentation scope attributes to associate with emitted telemetry\n */\n scopeAttributes?: Attributes;\n\n /**\n * Specifies whether the Trace Context should automatically be passed on to the LogRecords emitted by the Logger.\n * @default true\n */\n includeTraceContext?: boolean;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.d.ts new file mode 100644 index 0000000..022c9d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.d.ts @@ -0,0 +1,18 @@ +import { Logger } from './Logger'; +import { LoggerOptions } from './LoggerOptions'; +/** + * A registry for creating named {@link Logger}s. + */ +export interface LoggerProvider { + /** + * Returns a Logger, creating one if one with the given name, version, and + * schemaUrl pair is not already created. + * + * @param name The name of the logger or instrumentation library. + * @param version The version of the logger or instrumentation library. + * @param options The options of the logger or instrumentation library. + * @returns Logger A Logger with the given name and version + */ + getLogger(name: string, version?: string, options?: LoggerOptions): Logger; +} +//# sourceMappingURL=LoggerProvider.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js new file mode 100644 index 0000000..b78089d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=LoggerProvider.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js.map new file mode 100644 index 0000000..b58e25c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LoggerProvider.js","sourceRoot":"","sources":["../../../src/types/LoggerProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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\nimport { Logger } from './Logger';\nimport { LoggerOptions } from './LoggerOptions';\n\n/**\n * A registry for creating named {@link Logger}s.\n */\nexport interface LoggerProvider {\n /**\n * Returns a Logger, creating one if one with the given name, version, and\n * schemaUrl pair is not already created.\n *\n * @param name The name of the logger or instrumentation library.\n * @param version The version of the logger or instrumentation library.\n * @param options The options of the logger or instrumentation library.\n * @returns Logger A Logger with the given name and version\n */\n getLogger(name: string, version?: string, options?: LoggerOptions): Logger;\n}\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/version.d.ts b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/version.d.ts new file mode 100644 index 0000000..46e47a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/version.d.ts @@ -0,0 +1,2 @@ +export declare const VERSION = "0.207.0"; +//# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/version.js b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/version.js new file mode 100644 index 0000000..db955bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/version.js @@ -0,0 +1,21 @@ +"use strict"; +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VERSION = void 0; +// this is autogenerated file, see scripts/version-update.js +exports.VERSION = '0.207.0'; +//# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/version.js.map b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/version.js.map new file mode 100644 index 0000000..4e8c36a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS 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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.207.0';\n"]} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/package.json b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/package.json new file mode 100644 index 0000000..dd6f7ac --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/package.json @@ -0,0 +1,84 @@ +{ + "name": "@opentelemetry/api-logs", + "version": "0.207.0", + "description": "Public logs API for OpenTelemetry", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "types": "build/src/index.d.ts", + "browser": { + "./src/platform/index.ts": "./src/platform/browser/index.ts", + "./build/esm/platform/index.js": "./build/esm/platform/browser/index.js", + "./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js", + "./build/src/platform/index.js": "./build/src/platform/browser/index.js" + }, + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "test": "nyc mocha test/**/*.test.ts", + "test:browser": "karma start --single-run", + "build": "npm run compile", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "version": "node ../../../scripts/version-update.js", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "prewatch": "node ../../../scripts/version-update.js", + "align-api-deps": "node ../../../scripts/align-api-deps.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "browser", + "profiling", + "logs", + "stats", + "monitoring" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@types/mocha": "10.0.10", + "@types/node": "^8.10.66", + "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "7.0.1", + "karma": "6.4.4", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "mocha": "11.7.4", + "nyc": "17.1.0", + "ts-loader": "9.5.4", + "typescript": "5.0.4", + "webpack": "5.101.3" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/api-logs", + "sideEffects": false, + "gitHead": "fb6476d8243ac8dcaaea74130b9c50c43938275c" +} diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/package.json b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/package.json new file mode 100644 index 0000000..e96a5f8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/package.json @@ -0,0 +1,111 @@ +{ + "name": "@opentelemetry/instrumentation", + "version": "0.207.0", + "description": "Base class for node which OpenTelemetry instrumentation modules extend", + "author": "OpenTelemetry Authors", + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation", + "license": "Apache-2.0", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "types": "build/src/index.d.ts", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/open-telemetry/opentelemetry-js.git" + }, + "browser": { + "./src/platform/index.ts": "./src/platform/browser/index.ts", + "./build/esm/platform/index.js": "./build/esm/platform/browser/index.js", + "./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js", + "./build/src/platform/index.js": "./build/src/platform/browser/index.js" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "hook.mjs", + "doc", + "LICENSE", + "LICENSES/**/*", + "README.md" + ], + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "tdd": "npm run tdd:node", + "tdd:node": "npm run test -- --watch-extensions ts --watch", + "tdd:browser": "karma start", + "test:cjs": "nyc mocha 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", + "test:esm": "nyc node --experimental-loader=./hook.mjs ../../../node_modules/mocha/bin/mocha 'test/node/*.test.mjs'", + "test": "npm run test:cjs && npm run test:esm", + "test:browser": "karma start --single-run", + "version": "node ../../../scripts/version-update.js", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "prewatch": "node ../../../scripts/version-update.js", + "peer-api-check": "node ../../../scripts/peer-api-check.js", + "align-api-deps": "node ../../../scripts/align-api-deps.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "browser", + "tracing", + "profiling", + "metrics", + "stats" + ], + "bugs": { + "url": "https://github.com/open-telemetry/opentelemetry-js/issues" + }, + "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" + }, + "devDependencies": { + "@babel/core": "7.27.1", + "@babel/preset-env": "7.27.2", + "@opentelemetry/api": "1.9.0", + "@opentelemetry/sdk-metrics": "2.2.0", + "@types/mocha": "10.0.10", + "@types/node": "18.6.5", + "@types/sinon": "17.0.4", + "@types/webpack-env": "1.16.3", + "babel-loader": "10.0.0", + "babel-plugin-istanbul": "7.0.1", + "codecov": "3.8.3", + "karma": "6.4.4", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "mocha": "11.7.4", + "nyc": "17.1.0", + "sinon": "18.0.1", + "ts-loader": "9.5.4", + "typescript": "5.0.4", + "webpack": "5.101.3", + "webpack-cli": "6.0.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "sideEffects": false, + "gitHead": "fb6476d8243ac8dcaaea74130b9c50c43938275c" +} diff --git a/sentry-javascript/19013/node_modules/@prisma/instrumentation/package.json b/sentry-javascript/19013/node_modules/@prisma/instrumentation/package.json new file mode 100644 index 0000000..5b93269 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@prisma/instrumentation/package.json @@ -0,0 +1,55 @@ +{ + "name": "@prisma/instrumentation", + "version": "7.2.0", + "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", + "@types/node": "~20.19.24", + "typescript": "5.4.5", + "@prisma/instrumentation-contract": "7.2.0" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.207.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.8" + }, + "files": [ + "dist" + ], + "keywords": [ + "prisma", + "instrumentation", + "opentelemetry", + "otel" + ], + "sideEffects": false, + "scripts": { + "dev": "DEV=true tsx helpers/build.ts", + "build": "tsx helpers/build.ts", + "test": "vitest run" + } +} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/LICENSE b/sentry-javascript/19013/node_modules/@sentry/bun/LICENSE new file mode 100644 index 0000000..b3c4b18 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Functional Software, Inc. dba Sentry + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/README.md b/sentry-javascript/19013/node_modules/@sentry/bun/README.md new file mode 100644 index 0000000..1867f5a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/README.md @@ -0,0 +1,61 @@ +

                          + + Sentry + +

                          + +# Official Sentry SDK for Bun (Beta) + +[![npm version](https://img.shields.io/npm/v/@sentry/bun.svg)](https://www.npmjs.com/package/@sentry/bun) +[![npm dm](https://img.shields.io/npm/dm/@sentry/bun.svg)](https://www.npmjs.com/package/@sentry/bun) +[![npm dt](https://img.shields.io/npm/dt/@sentry/bun.svg)](https://www.npmjs.com/package/@sentry/bun) + +## Links + +- [Official SDK Docs](https://docs.sentry.io/quickstart/) + +The Sentry Bun SDK is in beta. Please help us improve the SDK by +[reporting any issues or giving us feedback](https://github.com/getsentry/sentry-javascript/issues). + +## Usage + +To use this SDK, call `init(options)` as early as possible in the main entry module. This will initialize the SDK and +hook into the environment. Note that you can turn off almost all side effects using the respective options. + +```javascript +// CJS Syntax +const Sentry = require('@sentry/bun'); +// ESM Syntax +import * as Sentry from '@sentry/bun'; + +Sentry.init({ + dsn: '__DSN__', + // ... +}); +``` + +To set context information or send manual events, use the exported functions of `@sentry/bun`. Note that these functions +will not perform any action before you have called `init()`: + +```javascript +// Set user information, as well as tags and further extras +Sentry.setExtra('battery', 0.7); +Sentry.setTag('user_mode', 'admin'); +Sentry.setUser({ id: '4711' }); + +// Add a breadcrumb for future events +Sentry.addBreadcrumb({ + message: 'My Breadcrumb', + // ... +}); + +// Capture exceptions, messages or manual events +Sentry.captureMessage('Hello, world!'); +Sentry.captureException(new Error('Good bye')); +Sentry.captureEvent({ + message: 'Manual', + stacktrace: [ + // ... + ], +}); +``` diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/client.js b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/client.js new file mode 100644 index 0000000..d9ba165 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/client.js @@ -0,0 +1,29 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const core = require('@sentry/core'); +const os = require('os'); + +/** + * @deprecated This client is no longer used in v9. + */ +class BunClient extends core.ServerRuntimeClient { + /** + * Creates a new Bun SDK instance. + * @param options Configuration options for this SDK. + */ + constructor(options) { + core.applySdkMetadata(options, 'bun'); + + const clientOptions = { + ...options, + platform: 'javascript', + runtime: { name: 'bun', version: Bun.version }, + serverName: options.serverName || global.process.env.SENTRY_NAME || os.hostname(), + }; + + super(clientOptions); + } +} + +exports.BunClient = BunClient; +//# sourceMappingURL=client.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/client.js.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/client.js.map new file mode 100644 index 0000000..ffc0a8f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"client.js","sources":["../../src/client.ts"],"sourcesContent":["import type { ServerRuntimeClientOptions } from '@sentry/core';\nimport { applySdkMetadata, ServerRuntimeClient } from '@sentry/core';\nimport * as os from 'os';\nimport type { BunClientOptions } from './types';\n\n/**\n * @deprecated This client is no longer used in v9.\n */\nexport class BunClient extends ServerRuntimeClient {\n /**\n * Creates a new Bun SDK instance.\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BunClientOptions) {\n applySdkMetadata(options, 'bun');\n\n const clientOptions: ServerRuntimeClientOptions = {\n ...options,\n platform: 'javascript',\n runtime: { name: 'bun', version: Bun.version },\n serverName: options.serverName || global.process.env.SENTRY_NAME || os.hostname(),\n };\n\n super(clientOptions);\n }\n}\n"],"names":["ServerRuntimeClient","applySdkMetadata"],"mappings":";;;;;AAKA;AACA;AACA;AACO,MAAM,SAAA,SAAkBA,wBAAmB,CAAmB;AACrE;AACA;AACA;AACA;AACA,GAAS,WAAW,CAAC,OAAO,EAAoB;AAChD,IAAIC,qBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;;AAEpC,IAAI,MAAM,aAAa,GAA+B;AACtD,MAAM,GAAG,OAAO;AAChB,MAAM,QAAQ,EAAE,YAAY;AAC5B,MAAM,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAA,EAAS;AACpD,MAAM,UAAU,EAAE,OAAO,CAAC,UAAA,IAAc,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAA,IAAe,EAAE,CAAC,QAAQ,EAAE;AACvF,KAAK;;AAEL,IAAI,KAAK,CAAC,aAAa,CAAC;AACxB,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/index.js b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/index.js new file mode 100644 index 0000000..4ec3714 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/index.js @@ -0,0 +1,168 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const node = require('@sentry/node'); +const core = require('@sentry/core'); +const client = require('./client.js'); +const sdk = require('./sdk.js'); +const bunserver = require('./integrations/bunserver.js'); +const index = require('./transports/index.js'); + + + +exports.NodeClient = node.NodeClient; +exports.OpenFeatureIntegrationHook = node.OpenFeatureIntegrationHook; +exports.SDK_VERSION = node.SDK_VERSION; +exports.SEMANTIC_ATTRIBUTE_SENTRY_OP = node.SEMANTIC_ATTRIBUTE_SENTRY_OP; +exports.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = node.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN; +exports.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = node.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE; +exports.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = node.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE; +exports.Scope = node.Scope; +exports.addBreadcrumb = node.addBreadcrumb; +exports.addEventProcessor = node.addEventProcessor; +exports.addIntegration = node.addIntegration; +exports.amqplibIntegration = node.amqplibIntegration; +exports.anrIntegration = node.anrIntegration; +exports.anthropicAIIntegration = node.anthropicAIIntegration; +exports.buildLaunchDarklyFlagUsedHandler = node.buildLaunchDarklyFlagUsedHandler; +exports.captureCheckIn = node.captureCheckIn; +exports.captureEvent = node.captureEvent; +exports.captureException = node.captureException; +exports.captureFeedback = node.captureFeedback; +exports.captureMessage = node.captureMessage; +exports.captureSession = node.captureSession; +exports.close = node.close; +exports.connectIntegration = node.connectIntegration; +exports.consoleIntegration = node.consoleIntegration; +exports.consoleLoggingIntegration = node.consoleLoggingIntegration; +exports.contextLinesIntegration = node.contextLinesIntegration; +exports.continueTrace = node.continueTrace; +exports.createConsolaReporter = node.createConsolaReporter; +exports.createGetModuleFromFilename = node.createGetModuleFromFilename; +exports.createLangChainCallbackHandler = node.createLangChainCallbackHandler; +exports.createSentryWinstonTransport = node.createSentryWinstonTransport; +exports.createTransport = node.createTransport; +exports.cron = node.cron; +exports.dataloaderIntegration = node.dataloaderIntegration; +exports.defaultStackParser = node.defaultStackParser; +exports.disableAnrDetectionForCallback = node.disableAnrDetectionForCallback; +exports.endSession = node.endSession; +exports.eventFiltersIntegration = node.eventFiltersIntegration; +exports.expressErrorHandler = node.expressErrorHandler; +exports.expressIntegration = node.expressIntegration; +exports.fastifyIntegration = node.fastifyIntegration; +exports.featureFlagsIntegration = node.featureFlagsIntegration; +exports.firebaseIntegration = node.firebaseIntegration; +exports.flush = node.flush; +exports.fsIntegration = node.fsIntegration; +exports.functionToStringIntegration = node.functionToStringIntegration; +exports.generateInstrumentOnce = node.generateInstrumentOnce; +exports.genericPoolIntegration = node.genericPoolIntegration; +exports.getActiveSpan = node.getActiveSpan; +exports.getAutoPerformanceIntegrations = node.getAutoPerformanceIntegrations; +exports.getClient = node.getClient; +exports.getCurrentScope = node.getCurrentScope; +exports.getGlobalScope = node.getGlobalScope; +exports.getIsolationScope = node.getIsolationScope; +exports.getRootSpan = node.getRootSpan; +exports.getSentryRelease = node.getSentryRelease; +exports.getSpanDescendants = node.getSpanDescendants; +exports.getSpanStatusFromHttpCode = node.getSpanStatusFromHttpCode; +exports.getTraceData = node.getTraceData; +exports.getTraceMetaTags = node.getTraceMetaTags; +exports.googleGenAIIntegration = node.googleGenAIIntegration; +exports.graphqlIntegration = node.graphqlIntegration; +exports.growthbookIntegration = node.growthbookIntegration; +exports.hapiIntegration = node.hapiIntegration; +exports.honoIntegration = node.honoIntegration; +exports.httpHeadersToSpanAttributes = node.httpHeadersToSpanAttributes; +exports.httpIntegration = node.httpIntegration; +exports.httpServerIntegration = node.httpServerIntegration; +exports.httpServerSpansIntegration = node.httpServerSpansIntegration; +exports.inboundFiltersIntegration = node.inboundFiltersIntegration; +exports.initOpenTelemetry = node.initOpenTelemetry; +exports.instrumentOpenAiClient = node.instrumentOpenAiClient; +exports.instrumentSupabaseClient = node.instrumentSupabaseClient; +exports.isEnabled = node.isEnabled; +exports.isInitialized = node.isInitialized; +exports.kafkaIntegration = node.kafkaIntegration; +exports.knexIntegration = node.knexIntegration; +exports.koaIntegration = node.koaIntegration; +exports.langChainIntegration = node.langChainIntegration; +exports.langGraphIntegration = node.langGraphIntegration; +exports.lastEventId = node.lastEventId; +exports.launchDarklyIntegration = node.launchDarklyIntegration; +exports.linkedErrorsIntegration = node.linkedErrorsIntegration; +exports.localVariablesIntegration = node.localVariablesIntegration; +exports.logger = node.logger; +exports.lruMemoizerIntegration = node.lruMemoizerIntegration; +exports.makeNodeTransport = node.makeNodeTransport; +exports.metrics = node.metrics; +exports.modulesIntegration = node.modulesIntegration; +exports.mongoIntegration = node.mongoIntegration; +exports.mongooseIntegration = node.mongooseIntegration; +exports.mysql2Integration = node.mysql2Integration; +exports.mysqlIntegration = node.mysqlIntegration; +exports.nativeNodeFetchIntegration = node.nativeNodeFetchIntegration; +exports.nodeContextIntegration = node.nodeContextIntegration; +exports.onUncaughtExceptionIntegration = node.onUncaughtExceptionIntegration; +exports.onUnhandledRejectionIntegration = node.onUnhandledRejectionIntegration; +exports.openAIIntegration = node.openAIIntegration; +exports.openFeatureIntegration = node.openFeatureIntegration; +exports.parameterize = node.parameterize; +exports.postgresIntegration = node.postgresIntegration; +exports.postgresJsIntegration = node.postgresJsIntegration; +exports.prismaIntegration = node.prismaIntegration; +exports.processSessionIntegration = node.processSessionIntegration; +exports.profiler = node.profiler; +exports.redisIntegration = node.redisIntegration; +exports.requestDataIntegration = node.requestDataIntegration; +exports.setContext = node.setContext; +exports.setConversationId = node.setConversationId; +exports.setCurrentClient = node.setCurrentClient; +exports.setExtra = node.setExtra; +exports.setExtras = node.setExtras; +exports.setHttpStatus = node.setHttpStatus; +exports.setMeasurement = node.setMeasurement; +exports.setTag = node.setTag; +exports.setTags = node.setTags; +exports.setUser = node.setUser; +exports.setupConnectErrorHandler = node.setupConnectErrorHandler; +exports.setupExpressErrorHandler = node.setupExpressErrorHandler; +exports.setupFastifyErrorHandler = node.setupFastifyErrorHandler; +exports.setupHapiErrorHandler = node.setupHapiErrorHandler; +exports.setupHonoErrorHandler = node.setupHonoErrorHandler; +exports.setupKoaErrorHandler = node.setupKoaErrorHandler; +exports.spanToBaggageHeader = node.spanToBaggageHeader; +exports.spanToJSON = node.spanToJSON; +exports.spanToTraceHeader = node.spanToTraceHeader; +exports.spotlightIntegration = node.spotlightIntegration; +exports.startInactiveSpan = node.startInactiveSpan; +exports.startNewTrace = node.startNewTrace; +exports.startSession = node.startSession; +exports.startSpan = node.startSpan; +exports.startSpanManual = node.startSpanManual; +exports.statsigIntegration = node.statsigIntegration; +exports.supabaseIntegration = node.supabaseIntegration; +exports.suppressTracing = node.suppressTracing; +exports.tediousIntegration = node.tediousIntegration; +exports.trpcMiddleware = node.trpcMiddleware; +exports.unleashIntegration = node.unleashIntegration; +exports.updateSpanName = node.updateSpanName; +exports.vercelAIIntegration = node.vercelAIIntegration; +exports.winterCGHeadersToDict = node.winterCGHeadersToDict; +exports.withActiveSpan = node.withActiveSpan; +exports.withIsolationScope = node.withIsolationScope; +exports.withMonitor = node.withMonitor; +exports.withScope = node.withScope; +exports.wrapMcpServerWithSentry = node.wrapMcpServerWithSentry; +exports.zodErrorsIntegration = node.zodErrorsIntegration; +exports.captureConsoleIntegration = core.captureConsoleIntegration; +exports.dedupeIntegration = core.dedupeIntegration; +exports.extraErrorDataIntegration = core.extraErrorDataIntegration; +exports.rewriteFramesIntegration = core.rewriteFramesIntegration; +exports.BunClient = client.BunClient; +exports.getDefaultIntegrations = sdk.getDefaultIntegrations; +exports.init = sdk.init; +exports.bunServerIntegration = bunserver.bunServerIntegration; +exports.makeFetchTransport = index.makeFetchTransport; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/index.js.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/index.js.map new file mode 100644 index 0000000..3c5f2a6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/integrations/bunserver.js b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/integrations/bunserver.js new file mode 100644 index 0000000..edef810 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/integrations/bunserver.js @@ -0,0 +1,281 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const core = require('@sentry/core'); + +const INTEGRATION_NAME = 'BunServer'; + +const _bunServerIntegration = (() => { + return { + name: INTEGRATION_NAME, + setupOnce() { + instrumentBunServe(); + }, + }; +}) ; + +/** + * Instruments `Bun.serve` to automatically create transactions and capture errors. + * + * Does not support instrumenting static routes. + * + * Enabled by default in the Bun SDK. + * + * ```js + * Sentry.init({ + * integrations: [ + * Sentry.bunServerIntegration(), + * ], + * }) + * ``` + */ +const bunServerIntegration = core.defineIntegration(_bunServerIntegration); + +let hasPatchedBunServe = false; + +/** + * Instruments Bun.serve by patching it's options. + * + * Only exported for tests. + */ +function instrumentBunServe() { + if (hasPatchedBunServe) { + return; + } + + Bun.serve = new Proxy(Bun.serve, { + apply(serveTarget, serveThisArg, serveArgs) { + instrumentBunServeOptions(serveArgs[0]); + const server = serveTarget.apply(serveThisArg, serveArgs); + + // A Bun server can be reloaded, re-wrap any fetch function passed to it + // We can't use a Proxy for this as Bun does `instanceof` checks internally that fail if we + // wrap the Server instance. + const originalReload = server.reload.bind(server); + server.reload = (serveOptions) => { + instrumentBunServeOptions(serveOptions); + return originalReload(serveOptions); + }; + + return server; + }, + }); + + hasPatchedBunServe = true; +} + +/** + * Instruments Bun.serve options. + * + * @param serveOptions - The options for the Bun.serve function. + */ +function instrumentBunServeOptions(serveOptions) { + // First handle fetch + instrumentBunServeOptionFetch(serveOptions); + // then handle routes + instrumentBunServeOptionRoutes(serveOptions); +} + +/** + * Instruments the `fetch` option of Bun.serve. + * + * @param serveOptions - The options for the Bun.serve function. + */ +function instrumentBunServeOptionFetch(serveOptions) { + if (typeof serveOptions.fetch !== 'function') { + return; + } + + serveOptions.fetch = new Proxy(serveOptions.fetch, { + apply(fetchTarget, fetchThisArg, fetchArgs) { + return wrapRequestHandler(fetchTarget, fetchThisArg, fetchArgs); + }, + }); +} + +/** + * Instruments the `routes` option of Bun.serve. + * + * @param serveOptions - The options for the Bun.serve function. + */ +function instrumentBunServeOptionRoutes(serveOptions) { + if (!serveOptions.routes) { + return; + } + + if (typeof serveOptions.routes !== 'object') { + return; + } + + Object.keys(serveOptions.routes).forEach(route => { + const routeHandler = serveOptions.routes[route]; + + // Handle route handlers that are an object + if (typeof routeHandler === 'function') { + serveOptions.routes[route] = new Proxy(routeHandler, { + apply: (routeHandlerTarget, routeHandlerThisArg, routeHandlerArgs) => { + return wrapRequestHandler(routeHandlerTarget, routeHandlerThisArg, routeHandlerArgs, route); + }, + }); + } + + // Static routes are not instrumented + if (routeHandler instanceof Response) { + return; + } + + // Handle the route handlers that are an object. This means they define a route handler for each method. + if (typeof routeHandler === 'object') { + Object.entries(routeHandler).forEach(([routeHandlerObjectHandlerKey, routeHandlerObjectHandler]) => { + if (typeof routeHandlerObjectHandler === 'function') { + (serveOptions.routes[route] )[routeHandlerObjectHandlerKey] = new Proxy( + routeHandlerObjectHandler, + { + apply: ( + routeHandlerObjectHandlerTarget, + routeHandlerObjectHandlerThisArg, + routeHandlerObjectHandlerArgs, + ) => { + return wrapRequestHandler( + routeHandlerObjectHandlerTarget, + routeHandlerObjectHandlerThisArg, + routeHandlerObjectHandlerArgs, + route, + ); + }, + }, + ); + } + }); + } + }); +} + +function wrapRequestHandler( + target, + thisArg, + args, + route, +) { + return core.withIsolationScope(isolationScope => { + const request = args[0]; + const upperCaseMethod = request.method.toUpperCase(); + if (upperCaseMethod === 'OPTIONS' || upperCaseMethod === 'HEAD') { + return target.apply(thisArg, args); + } + + const parsedUrl = core.parseStringToURLObject(request.url); + const attributes = getSpanAttributesFromParsedUrl(parsedUrl, request); + + let routeName = parsedUrl?.pathname || '/'; + if (request.params) { + Object.keys(request.params).forEach(key => { + attributes[`url.path.parameter.${key}`] = (request.params )[key]; + }); + + // If a route has parameters, it's a parameterized route + if (route) { + attributes[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route'; + attributes['url.template'] = route; + routeName = route; + } + } + + // Handle wildcard routes + if (route?.endsWith('/*')) { + attributes[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route'; + attributes['url.template'] = route; + routeName = route; + } + + Object.assign( + attributes, + core.httpHeadersToSpanAttributes(request.headers.toJSON(), core.getClient()?.getOptions().sendDefaultPii ?? false), + ); + + isolationScope.setSDKProcessingMetadata({ + normalizedRequest: { + url: request.url, + method: request.method, + headers: request.headers.toJSON(), + query_string: parsedUrl?.search, + } , + }); + + return core.continueTrace( + { + sentryTrace: request.headers.get('sentry-trace') ?? '', + baggage: request.headers.get('baggage'), + }, + () => + core.startSpan( + { + attributes, + op: 'http.server', + name: `${request.method} ${routeName}`, + }, + async span => { + try { + const response = (await target.apply(thisArg, args)) ; + if (response?.status) { + core.setHttpStatus(span, response.status); + isolationScope.setContext('response', { + headers: response.headers.toJSON(), + status_code: response.status, + }); + } + return response; + } catch (e) { + core.captureException(e, { + mechanism: { + type: 'auto.http.bun.serve', + handled: false, + }, + }); + throw e; + } + }, + ), + ); + }); +} + +function getSpanAttributesFromParsedUrl( + parsedUrl, + request, +) { + const attributes = { + [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.bun.serve', + [core.SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD]: request.method || 'GET', + [core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', + }; + + if (parsedUrl) { + if (parsedUrl.search) { + attributes['url.query'] = parsedUrl.search; + } + if (parsedUrl.hash) { + attributes['url.fragment'] = parsedUrl.hash; + } + if (parsedUrl.pathname) { + attributes['url.path'] = parsedUrl.pathname; + } + if (!core.isURLObjectRelative(parsedUrl)) { + attributes['url.full'] = parsedUrl.href; + if (parsedUrl.port) { + attributes['url.port'] = parsedUrl.port; + } + if (parsedUrl.protocol) { + attributes['url.scheme'] = parsedUrl.protocol; + } + if (parsedUrl.hostname) { + attributes['url.domain'] = parsedUrl.hostname; + } + } + } + + return attributes; +} + +exports.bunServerIntegration = bunServerIntegration; +exports.instrumentBunServe = instrumentBunServe; +//# sourceMappingURL=bunserver.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/integrations/bunserver.js.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/integrations/bunserver.js.map new file mode 100644 index 0000000..f316413 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/integrations/bunserver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bunserver.js","sources":["../../../src/integrations/bunserver.ts"],"sourcesContent":["import type { IntegrationFn, RequestEventData, SpanAttributes } from '@sentry/core';\nimport {\n captureException,\n continueTrace,\n defineIntegration,\n getClient,\n httpHeadersToSpanAttributes,\n isURLObjectRelative,\n parseStringToURLObject,\n SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n setHttpStatus,\n startSpan,\n withIsolationScope,\n} from '@sentry/core';\nimport type { ServeOptions } from 'bun';\n\nconst INTEGRATION_NAME = 'BunServer';\n\nconst _bunServerIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentBunServe();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Instruments `Bun.serve` to automatically create transactions and capture errors.\n *\n * Does not support instrumenting static routes.\n *\n * Enabled by default in the Bun SDK.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * Sentry.bunServerIntegration(),\n * ],\n * })\n * ```\n */\nexport const bunServerIntegration = defineIntegration(_bunServerIntegration);\n\nlet hasPatchedBunServe = false;\n\n/**\n * Instruments Bun.serve by patching it's options.\n *\n * Only exported for tests.\n */\nexport function instrumentBunServe(): void {\n if (hasPatchedBunServe) {\n return;\n }\n\n Bun.serve = new Proxy(Bun.serve, {\n apply(serveTarget, serveThisArg, serveArgs: Parameters) {\n instrumentBunServeOptions(serveArgs[0]);\n const server: ReturnType = serveTarget.apply(serveThisArg, serveArgs);\n\n // A Bun server can be reloaded, re-wrap any fetch function passed to it\n // We can't use a Proxy for this as Bun does `instanceof` checks internally that fail if we\n // wrap the Server instance.\n const originalReload: typeof server.reload = server.reload.bind(server);\n server.reload = (serveOptions: ServeOptions) => {\n instrumentBunServeOptions(serveOptions);\n return originalReload(serveOptions);\n };\n\n return server;\n },\n });\n\n hasPatchedBunServe = true;\n}\n\n/**\n * Instruments Bun.serve options.\n *\n * @param serveOptions - The options for the Bun.serve function.\n */\nfunction instrumentBunServeOptions(serveOptions: Parameters[0]): void {\n // First handle fetch\n instrumentBunServeOptionFetch(serveOptions);\n // then handle routes\n instrumentBunServeOptionRoutes(serveOptions);\n}\n\n/**\n * Instruments the `fetch` option of Bun.serve.\n *\n * @param serveOptions - The options for the Bun.serve function.\n */\nfunction instrumentBunServeOptionFetch(serveOptions: Parameters[0]): void {\n if (typeof serveOptions.fetch !== 'function') {\n return;\n }\n\n serveOptions.fetch = new Proxy(serveOptions.fetch, {\n apply(fetchTarget, fetchThisArg, fetchArgs: Parameters) {\n return wrapRequestHandler(fetchTarget, fetchThisArg, fetchArgs);\n },\n });\n}\n\n/**\n * Instruments the `routes` option of Bun.serve.\n *\n * @param serveOptions - The options for the Bun.serve function.\n */\nfunction instrumentBunServeOptionRoutes(serveOptions: Parameters[0]): void {\n if (!serveOptions.routes) {\n return;\n }\n\n if (typeof serveOptions.routes !== 'object') {\n return;\n }\n\n Object.keys(serveOptions.routes).forEach(route => {\n const routeHandler = serveOptions.routes[route];\n\n // Handle route handlers that are an object\n if (typeof routeHandler === 'function') {\n serveOptions.routes[route] = new Proxy(routeHandler, {\n apply: (routeHandlerTarget, routeHandlerThisArg, routeHandlerArgs: Parameters) => {\n return wrapRequestHandler(routeHandlerTarget, routeHandlerThisArg, routeHandlerArgs, route);\n },\n });\n }\n\n // Static routes are not instrumented\n if (routeHandler instanceof Response) {\n return;\n }\n\n // Handle the route handlers that are an object. This means they define a route handler for each method.\n if (typeof routeHandler === 'object') {\n Object.entries(routeHandler).forEach(([routeHandlerObjectHandlerKey, routeHandlerObjectHandler]) => {\n if (typeof routeHandlerObjectHandler === 'function') {\n (serveOptions.routes[route] as Record)[routeHandlerObjectHandlerKey] = new Proxy(\n routeHandlerObjectHandler,\n {\n apply: (\n routeHandlerObjectHandlerTarget,\n routeHandlerObjectHandlerThisArg,\n routeHandlerObjectHandlerArgs: Parameters,\n ) => {\n return wrapRequestHandler(\n routeHandlerObjectHandlerTarget,\n routeHandlerObjectHandlerThisArg,\n routeHandlerObjectHandlerArgs,\n route,\n );\n },\n },\n );\n }\n });\n }\n });\n}\n\ntype RouteHandler = Extract<\n NonNullable[0]['routes']>[string],\n // eslint-disable-next-line @typescript-eslint/ban-types\n Function\n>;\n\nfunction wrapRequestHandler(\n target: T,\n thisArg: unknown,\n args: Parameters,\n route?: string,\n): ReturnType {\n return withIsolationScope(isolationScope => {\n const request = args[0];\n const upperCaseMethod = request.method.toUpperCase();\n if (upperCaseMethod === 'OPTIONS' || upperCaseMethod === 'HEAD') {\n return target.apply(thisArg, args);\n }\n\n const parsedUrl = parseStringToURLObject(request.url);\n const attributes = getSpanAttributesFromParsedUrl(parsedUrl, request);\n\n let routeName = parsedUrl?.pathname || '/';\n if (request.params) {\n Object.keys(request.params).forEach(key => {\n attributes[`url.path.parameter.${key}`] = (request.params as Record)[key];\n });\n\n // If a route has parameters, it's a parameterized route\n if (route) {\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n attributes['url.template'] = route;\n routeName = route;\n }\n }\n\n // Handle wildcard routes\n if (route?.endsWith('/*')) {\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n attributes['url.template'] = route;\n routeName = route;\n }\n\n Object.assign(\n attributes,\n httpHeadersToSpanAttributes(request.headers.toJSON(), getClient()?.getOptions().sendDefaultPii ?? false),\n );\n\n isolationScope.setSDKProcessingMetadata({\n normalizedRequest: {\n url: request.url,\n method: request.method,\n headers: request.headers.toJSON(),\n query_string: parsedUrl?.search,\n } satisfies RequestEventData,\n });\n\n return continueTrace(\n {\n sentryTrace: request.headers.get('sentry-trace') ?? '',\n baggage: request.headers.get('baggage'),\n },\n () =>\n startSpan(\n {\n attributes,\n op: 'http.server',\n name: `${request.method} ${routeName}`,\n },\n async span => {\n try {\n const response = (await target.apply(thisArg, args)) as Response | undefined;\n if (response?.status) {\n setHttpStatus(span, response.status);\n isolationScope.setContext('response', {\n headers: response.headers.toJSON(),\n status_code: response.status,\n });\n }\n return response;\n } catch (e) {\n captureException(e, {\n mechanism: {\n type: 'auto.http.bun.serve',\n handled: false,\n },\n });\n throw e;\n }\n },\n ),\n );\n });\n}\n\nfunction getSpanAttributesFromParsedUrl(\n parsedUrl: ReturnType,\n request: Request,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.bun.serve',\n [SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD]: request.method || 'GET',\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n };\n\n if (parsedUrl) {\n if (parsedUrl.search) {\n attributes['url.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n attributes['url.fragment'] = parsedUrl.hash;\n }\n if (parsedUrl.pathname) {\n attributes['url.path'] = parsedUrl.pathname;\n }\n if (!isURLObjectRelative(parsedUrl)) {\n attributes['url.full'] = parsedUrl.href;\n if (parsedUrl.port) {\n attributes['url.port'] = parsedUrl.port;\n }\n if (parsedUrl.protocol) {\n attributes['url.scheme'] = parsedUrl.protocol;\n }\n if (parsedUrl.hostname) {\n attributes['url.domain'] = parsedUrl.hostname;\n }\n }\n }\n\n return attributes;\n}\n"],"names":["defineIntegration","withIsolationScope","parseStringToURLObject","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","httpHeadersToSpanAttributes","getClient","continueTrace","startSpan","setHttpStatus","captureException","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD","isURLObjectRelative"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/sdk.js b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/sdk.js new file mode 100644 index 0000000..6ce75a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/sdk.js @@ -0,0 +1,103 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const os = require('node:os'); +const core = require('@sentry/core'); +const node = require('@sentry/node'); +const bunserver = require('./integrations/bunserver.js'); +const index = require('./transports/index.js'); + +/** Get the default integrations for the Bun SDK. */ +function getDefaultIntegrations(_options) { + // We return a copy of the defaultIntegrations here to avoid mutating this + return [ + // Common + // TODO(v11): Replace with eventFiltersIntegration once we remove the deprecated `inboundFiltersIntegration` + // eslint-disable-next-line deprecation/deprecation + core.inboundFiltersIntegration(), + core.functionToStringIntegration(), + core.linkedErrorsIntegration(), + core.requestDataIntegration(), + // Native Wrappers + node.consoleIntegration(), + node.httpIntegration(), + node.nativeNodeFetchIntegration(), + // Global Handlers + node.onUncaughtExceptionIntegration(), + node.onUnhandledRejectionIntegration(), + // Event Info + node.contextLinesIntegration(), + node.nodeContextIntegration(), + node.modulesIntegration(), + node.processSessionIntegration(), + // Bun Specific + bunserver.bunServerIntegration(), + ...(core.hasSpansEnabled(_options) ? node.getAutoPerformanceIntegrations() : []), + ]; +} + +/** + * The Sentry Bun SDK Client. + * + * To use this SDK, call the {@link init} function as early as possible in the + * main entry module. To set context information or send manual events, use the + * provided methods. + * + * @example + * ``` + * + * const { init } = require('@sentry/bun'); + * + * init({ + * dsn: '__DSN__', + * // ... + * }); + * ``` + * + * @example + * ``` + * + * const { addBreadcrumb } = require('@sentry/node'); + * addBreadcrumb({ + * message: 'My Breadcrumb', + * // ... + * }); + * ``` + * + * @example + * ``` + * + * const Sentry = require('@sentry/node'); + * Sentry.captureMessage('Hello, world!'); + * Sentry.captureException(new Error('Good bye')); + * Sentry.captureEvent({ + * message: 'Manual', + * stacktrace: [ + * // ... + * ], + * }); + * ``` + * + * @see {@link BunOptions} for documentation on configuration options. + */ +function init(userOptions = {}) { + core.applySdkMetadata(userOptions, 'bun'); + + const options = { + ...userOptions, + platform: 'javascript', + runtime: { name: 'bun', version: Bun.version }, + serverName: userOptions.serverName || global.process.env.SENTRY_NAME || os.hostname(), + }; + + options.transport = options.transport || index.makeFetchTransport; + + if (options.defaultIntegrations === undefined) { + options.defaultIntegrations = getDefaultIntegrations(options); + } + + return node.init(options); +} + +exports.getDefaultIntegrations = getDefaultIntegrations; +exports.init = init; +//# sourceMappingURL=sdk.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/sdk.js.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/sdk.js.map new file mode 100644 index 0000000..a2823be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/sdk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk.js","sources":["../../src/sdk.ts"],"sourcesContent":["import * as os from 'node:os';\nimport type { Integration, Options } from '@sentry/core';\nimport {\n applySdkMetadata,\n functionToStringIntegration,\n hasSpansEnabled,\n inboundFiltersIntegration,\n linkedErrorsIntegration,\n requestDataIntegration,\n} from '@sentry/core';\nimport type { NodeClient } from '@sentry/node';\nimport {\n consoleIntegration,\n contextLinesIntegration,\n getAutoPerformanceIntegrations,\n httpIntegration,\n init as initNode,\n modulesIntegration,\n nativeNodeFetchIntegration,\n nodeContextIntegration,\n onUncaughtExceptionIntegration,\n onUnhandledRejectionIntegration,\n processSessionIntegration,\n} from '@sentry/node';\nimport { bunServerIntegration } from './integrations/bunserver';\nimport { makeFetchTransport } from './transports';\nimport type { BunOptions } from './types';\n\n/** Get the default integrations for the Bun SDK. */\nexport function getDefaultIntegrations(_options: Options): Integration[] {\n // We return a copy of the defaultIntegrations here to avoid mutating this\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 // Native Wrappers\n consoleIntegration(),\n httpIntegration(),\n nativeNodeFetchIntegration(),\n // Global Handlers\n onUncaughtExceptionIntegration(),\n onUnhandledRejectionIntegration(),\n // Event Info\n contextLinesIntegration(),\n nodeContextIntegration(),\n modulesIntegration(),\n processSessionIntegration(),\n // Bun Specific\n bunServerIntegration(),\n ...(hasSpansEnabled(_options) ? getAutoPerformanceIntegrations() : []),\n ];\n}\n\n/**\n * The Sentry Bun SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible in the\n * main entry module. To set context information or send manual events, use the\n * provided methods.\n *\n * @example\n * ```\n *\n * const { init } = require('@sentry/bun');\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * const { addBreadcrumb } = require('@sentry/node');\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * const Sentry = require('@sentry/node');\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BunOptions} for documentation on configuration options.\n */\nexport function init(userOptions: BunOptions = {}): NodeClient | undefined {\n applySdkMetadata(userOptions, 'bun');\n\n const options = {\n ...userOptions,\n platform: 'javascript',\n runtime: { name: 'bun', version: Bun.version },\n serverName: userOptions.serverName || global.process.env.SENTRY_NAME || os.hostname(),\n };\n\n options.transport = options.transport || makeFetchTransport;\n\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = getDefaultIntegrations(options);\n }\n\n return initNode(options);\n}\n"],"names":["inboundFiltersIntegration","functionToStringIntegration","linkedErrorsIntegration","requestDataIntegration","consoleIntegration","httpIntegration","nativeNodeFetchIntegration","onUncaughtExceptionIntegration","onUnhandledRejectionIntegration","contextLinesIntegration","nodeContextIntegration","modulesIntegration","processSessionIntegration","bunServerIntegration","hasSpansEnabled","getAutoPerformanceIntegrations","applySdkMetadata","makeFetchTransport","initNode"],"mappings":";;;;;;;;AA4BA;AACO,SAAS,sBAAsB,CAAC,QAAQ,EAA0B;AACzE;AACA,EAAE,OAAO;AACT;AACA;AACA;AACA,IAAIA,8BAAyB,EAAE;AAC/B,IAAIC,gCAA2B,EAAE;AACjC,IAAIC,4BAAuB,EAAE;AAC7B,IAAIC,2BAAsB,EAAE;AAC5B;AACA,IAAIC,uBAAkB,EAAE;AACxB,IAAIC,oBAAe,EAAE;AACrB,IAAIC,+BAA0B,EAAE;AAChC;AACA,IAAIC,mCAA8B,EAAE;AACpC,IAAIC,oCAA+B,EAAE;AACrC;AACA,IAAIC,4BAAuB,EAAE;AAC7B,IAAIC,2BAAsB,EAAE;AAC5B,IAAIC,uBAAkB,EAAE;AACxB,IAAIC,8BAAyB,EAAE;AAC/B;AACA,IAAIC,8BAAoB,EAAE;AAC1B,IAAI,IAAIC,oBAAe,CAAC,QAAQ,CAAA,GAAIC,mCAA8B,EAAC,GAAI,EAAE,CAAC;AAC1E,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,WAAW,GAAe,EAAE,EAA0B;AAC3E,EAAEC,qBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC;;AAEtC,EAAE,MAAM,UAAU;AAClB,IAAI,GAAG,WAAW;AAClB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAA,EAAS;AAClD,IAAI,UAAU,EAAE,WAAW,CAAC,UAAA,IAAc,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAA,IAAe,EAAE,CAAC,QAAQ,EAAE;AACzF,GAAG;;AAEH,EAAE,OAAO,CAAC,SAAA,GAAY,OAAO,CAAC,SAAA,IAAaC,wBAAkB;;AAE7D,EAAE,IAAI,OAAO,CAAC,mBAAA,KAAwB,SAAS,EAAE;AACjD,IAAI,OAAO,CAAC,mBAAA,GAAsB,sBAAsB,CAAC,OAAO,CAAC;AACjE,EAAE;;AAEF,EAAE,OAAOC,SAAQ,CAAC,OAAO,CAAC;AAC1B;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/transports/index.js b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/transports/index.js new file mode 100644 index 0000000..8aa3d2b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/transports/index.js @@ -0,0 +1,37 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const core = require('@sentry/core'); + +/** + * Creates a Transport that uses the Fetch API to send events to Sentry. + */ +function makeFetchTransport(options) { + function makeRequest(request) { + const requestOptions = { + body: request.body, + method: 'POST', + headers: options.headers, + }; + + try { + return core.suppressTracing(() => { + return fetch(options.url, requestOptions).then(response => { + return { + statusCode: response.status, + headers: { + 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'), + 'retry-after': response.headers.get('Retry-After'), + }, + }; + }); + }); + } catch (e) { + return Promise.reject(e); + } + } + + return core.createTransport(options, makeRequest); +} + +exports.makeFetchTransport = makeFetchTransport; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/transports/index.js.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/transports/index.js.map new file mode 100644 index 0000000..3ded8a6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/cjs/transports/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../src/transports/index.ts"],"sourcesContent":["import type { BaseTransportOptions, Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/core';\nimport { createTransport, suppressTracing } from '@sentry/core';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(options: BaseTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n headers: options.headers,\n };\n\n try {\n return suppressTracing(() => {\n return fetch(options.url, requestOptions).then(response => {\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n });\n });\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n"],"names":["suppressTracing","createTransport"],"mappings":";;;;AAGA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,OAAO,EAAmC;AAC7E,EAAE,SAAS,WAAW,CAAC,OAAO,EAA+D;AAC7F,IAAI,MAAM,cAAc,GAAgB;AACxC,MAAM,IAAI,EAAE,OAAO,CAAC,IAAI;AACxB,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,OAAO,EAAE,OAAO,CAAC,OAAO;AAC9B,KAAK;;AAEL,IAAI,IAAI;AACR,MAAM,OAAOA,oBAAe,CAAC,MAAM;AACnC,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,YAAY;AACnE,UAAU,OAAO;AACjB,YAAY,UAAU,EAAE,QAAQ,CAAC,MAAM;AACvC,YAAY,OAAO,EAAE;AACrB,cAAc,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;AAClF,cAAc,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAChE,aAAa;AACb,WAAW;AACX,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC,CAAC;AACR,IAAI,CAAA,CAAE,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAOC,oBAAe,CAAC,OAAO,EAAE,WAAW,CAAC;AAC9C;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/client.js b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/client.js new file mode 100644 index 0000000..f976ef5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/client.js @@ -0,0 +1,27 @@ +import { ServerRuntimeClient, applySdkMetadata } from '@sentry/core'; +import * as os from 'os'; + +/** + * @deprecated This client is no longer used in v9. + */ +class BunClient extends ServerRuntimeClient { + /** + * Creates a new Bun SDK instance. + * @param options Configuration options for this SDK. + */ + constructor(options) { + applySdkMetadata(options, 'bun'); + + const clientOptions = { + ...options, + platform: 'javascript', + runtime: { name: 'bun', version: Bun.version }, + serverName: options.serverName || global.process.env.SENTRY_NAME || os.hostname(), + }; + + super(clientOptions); + } +} + +export { BunClient }; +//# sourceMappingURL=client.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/client.js.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/client.js.map new file mode 100644 index 0000000..f75f20c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"client.js","sources":["../../src/client.ts"],"sourcesContent":["import type { ServerRuntimeClientOptions } from '@sentry/core';\nimport { applySdkMetadata, ServerRuntimeClient } from '@sentry/core';\nimport * as os from 'os';\nimport type { BunClientOptions } from './types';\n\n/**\n * @deprecated This client is no longer used in v9.\n */\nexport class BunClient extends ServerRuntimeClient {\n /**\n * Creates a new Bun SDK instance.\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BunClientOptions) {\n applySdkMetadata(options, 'bun');\n\n const clientOptions: ServerRuntimeClientOptions = {\n ...options,\n platform: 'javascript',\n runtime: { name: 'bun', version: Bun.version },\n serverName: options.serverName || global.process.env.SENTRY_NAME || os.hostname(),\n };\n\n super(clientOptions);\n }\n}\n"],"names":[],"mappings":";;;AAKA;AACA;AACA;AACO,MAAM,SAAA,SAAkB,mBAAmB,CAAmB;AACrE;AACA;AACA;AACA;AACA,GAAS,WAAW,CAAC,OAAO,EAAoB;AAChD,IAAI,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;;AAEpC,IAAI,MAAM,aAAa,GAA+B;AACtD,MAAM,GAAG,OAAO;AAChB,MAAM,QAAQ,EAAE,YAAY;AAC5B,MAAM,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAA,EAAS;AACpD,MAAM,UAAU,EAAE,OAAO,CAAC,UAAA,IAAc,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAA,IAAe,EAAE,CAAC,QAAQ,EAAE;AACvF,KAAK;;AAEL,IAAI,KAAK,CAAC,aAAa,CAAC;AACxB,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/index.js b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/index.js new file mode 100644 index 0000000..13b1936 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/index.js @@ -0,0 +1,7 @@ +export { NodeClient, OpenFeatureIntegrationHook, SDK_VERSION, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, Scope, addBreadcrumb, addEventProcessor, addIntegration, amqplibIntegration, anrIntegration, anthropicAIIntegration, buildLaunchDarklyFlagUsedHandler, captureCheckIn, captureEvent, captureException, captureFeedback, captureMessage, captureSession, close, connectIntegration, consoleIntegration, consoleLoggingIntegration, contextLinesIntegration, continueTrace, createConsolaReporter, createGetModuleFromFilename, createLangChainCallbackHandler, createSentryWinstonTransport, createTransport, cron, dataloaderIntegration, defaultStackParser, disableAnrDetectionForCallback, endSession, eventFiltersIntegration, expressErrorHandler, expressIntegration, fastifyIntegration, featureFlagsIntegration, firebaseIntegration, flush, fsIntegration, functionToStringIntegration, generateInstrumentOnce, genericPoolIntegration, getActiveSpan, getAutoPerformanceIntegrations, getClient, getCurrentScope, getGlobalScope, getIsolationScope, getRootSpan, getSentryRelease, getSpanDescendants, getSpanStatusFromHttpCode, getTraceData, getTraceMetaTags, googleGenAIIntegration, graphqlIntegration, growthbookIntegration, hapiIntegration, honoIntegration, httpHeadersToSpanAttributes, httpIntegration, httpServerIntegration, httpServerSpansIntegration, inboundFiltersIntegration, initOpenTelemetry, instrumentOpenAiClient, instrumentSupabaseClient, isEnabled, isInitialized, kafkaIntegration, knexIntegration, koaIntegration, langChainIntegration, langGraphIntegration, lastEventId, launchDarklyIntegration, linkedErrorsIntegration, localVariablesIntegration, logger, lruMemoizerIntegration, makeNodeTransport, metrics, modulesIntegration, mongoIntegration, mongooseIntegration, mysql2Integration, mysqlIntegration, nativeNodeFetchIntegration, nodeContextIntegration, onUncaughtExceptionIntegration, onUnhandledRejectionIntegration, openAIIntegration, openFeatureIntegration, parameterize, postgresIntegration, postgresJsIntegration, prismaIntegration, processSessionIntegration, profiler, redisIntegration, requestDataIntegration, setContext, setConversationId, setCurrentClient, setExtra, setExtras, setHttpStatus, setMeasurement, setTag, setTags, setUser, setupConnectErrorHandler, setupExpressErrorHandler, setupFastifyErrorHandler, setupHapiErrorHandler, setupHonoErrorHandler, setupKoaErrorHandler, spanToBaggageHeader, spanToJSON, spanToTraceHeader, spotlightIntegration, startInactiveSpan, startNewTrace, startSession, startSpan, startSpanManual, statsigIntegration, supabaseIntegration, suppressTracing, tediousIntegration, trpcMiddleware, unleashIntegration, updateSpanName, vercelAIIntegration, winterCGHeadersToDict, withActiveSpan, withIsolationScope, withMonitor, withScope, wrapMcpServerWithSentry, zodErrorsIntegration } from '@sentry/node'; +export { captureConsoleIntegration, dedupeIntegration, extraErrorDataIntegration, rewriteFramesIntegration } from '@sentry/core'; +export { BunClient } from './client.js'; +export { getDefaultIntegrations, init } from './sdk.js'; +export { bunServerIntegration } from './integrations/bunserver.js'; +export { makeFetchTransport } from './transports/index.js'; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/index.js.map new file mode 100644 index 0000000..88f5618 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/integrations/bunserver.js b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/integrations/bunserver.js new file mode 100644 index 0000000..4da6ed4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/integrations/bunserver.js @@ -0,0 +1,278 @@ +import { defineIntegration, withIsolationScope, parseStringToURLObject, httpHeadersToSpanAttributes, getClient, continueTrace, startSpan, setHttpStatus, captureException, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, isURLObjectRelative, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core'; + +const INTEGRATION_NAME = 'BunServer'; + +const _bunServerIntegration = (() => { + return { + name: INTEGRATION_NAME, + setupOnce() { + instrumentBunServe(); + }, + }; +}) ; + +/** + * Instruments `Bun.serve` to automatically create transactions and capture errors. + * + * Does not support instrumenting static routes. + * + * Enabled by default in the Bun SDK. + * + * ```js + * Sentry.init({ + * integrations: [ + * Sentry.bunServerIntegration(), + * ], + * }) + * ``` + */ +const bunServerIntegration = defineIntegration(_bunServerIntegration); + +let hasPatchedBunServe = false; + +/** + * Instruments Bun.serve by patching it's options. + * + * Only exported for tests. + */ +function instrumentBunServe() { + if (hasPatchedBunServe) { + return; + } + + Bun.serve = new Proxy(Bun.serve, { + apply(serveTarget, serveThisArg, serveArgs) { + instrumentBunServeOptions(serveArgs[0]); + const server = serveTarget.apply(serveThisArg, serveArgs); + + // A Bun server can be reloaded, re-wrap any fetch function passed to it + // We can't use a Proxy for this as Bun does `instanceof` checks internally that fail if we + // wrap the Server instance. + const originalReload = server.reload.bind(server); + server.reload = (serveOptions) => { + instrumentBunServeOptions(serveOptions); + return originalReload(serveOptions); + }; + + return server; + }, + }); + + hasPatchedBunServe = true; +} + +/** + * Instruments Bun.serve options. + * + * @param serveOptions - The options for the Bun.serve function. + */ +function instrumentBunServeOptions(serveOptions) { + // First handle fetch + instrumentBunServeOptionFetch(serveOptions); + // then handle routes + instrumentBunServeOptionRoutes(serveOptions); +} + +/** + * Instruments the `fetch` option of Bun.serve. + * + * @param serveOptions - The options for the Bun.serve function. + */ +function instrumentBunServeOptionFetch(serveOptions) { + if (typeof serveOptions.fetch !== 'function') { + return; + } + + serveOptions.fetch = new Proxy(serveOptions.fetch, { + apply(fetchTarget, fetchThisArg, fetchArgs) { + return wrapRequestHandler(fetchTarget, fetchThisArg, fetchArgs); + }, + }); +} + +/** + * Instruments the `routes` option of Bun.serve. + * + * @param serveOptions - The options for the Bun.serve function. + */ +function instrumentBunServeOptionRoutes(serveOptions) { + if (!serveOptions.routes) { + return; + } + + if (typeof serveOptions.routes !== 'object') { + return; + } + + Object.keys(serveOptions.routes).forEach(route => { + const routeHandler = serveOptions.routes[route]; + + // Handle route handlers that are an object + if (typeof routeHandler === 'function') { + serveOptions.routes[route] = new Proxy(routeHandler, { + apply: (routeHandlerTarget, routeHandlerThisArg, routeHandlerArgs) => { + return wrapRequestHandler(routeHandlerTarget, routeHandlerThisArg, routeHandlerArgs, route); + }, + }); + } + + // Static routes are not instrumented + if (routeHandler instanceof Response) { + return; + } + + // Handle the route handlers that are an object. This means they define a route handler for each method. + if (typeof routeHandler === 'object') { + Object.entries(routeHandler).forEach(([routeHandlerObjectHandlerKey, routeHandlerObjectHandler]) => { + if (typeof routeHandlerObjectHandler === 'function') { + (serveOptions.routes[route] )[routeHandlerObjectHandlerKey] = new Proxy( + routeHandlerObjectHandler, + { + apply: ( + routeHandlerObjectHandlerTarget, + routeHandlerObjectHandlerThisArg, + routeHandlerObjectHandlerArgs, + ) => { + return wrapRequestHandler( + routeHandlerObjectHandlerTarget, + routeHandlerObjectHandlerThisArg, + routeHandlerObjectHandlerArgs, + route, + ); + }, + }, + ); + } + }); + } + }); +} + +function wrapRequestHandler( + target, + thisArg, + args, + route, +) { + return withIsolationScope(isolationScope => { + const request = args[0]; + const upperCaseMethod = request.method.toUpperCase(); + if (upperCaseMethod === 'OPTIONS' || upperCaseMethod === 'HEAD') { + return target.apply(thisArg, args); + } + + const parsedUrl = parseStringToURLObject(request.url); + const attributes = getSpanAttributesFromParsedUrl(parsedUrl, request); + + let routeName = parsedUrl?.pathname || '/'; + if (request.params) { + Object.keys(request.params).forEach(key => { + attributes[`url.path.parameter.${key}`] = (request.params )[key]; + }); + + // If a route has parameters, it's a parameterized route + if (route) { + attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route'; + attributes['url.template'] = route; + routeName = route; + } + } + + // Handle wildcard routes + if (route?.endsWith('/*')) { + attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route'; + attributes['url.template'] = route; + routeName = route; + } + + Object.assign( + attributes, + httpHeadersToSpanAttributes(request.headers.toJSON(), getClient()?.getOptions().sendDefaultPii ?? false), + ); + + isolationScope.setSDKProcessingMetadata({ + normalizedRequest: { + url: request.url, + method: request.method, + headers: request.headers.toJSON(), + query_string: parsedUrl?.search, + } , + }); + + return continueTrace( + { + sentryTrace: request.headers.get('sentry-trace') ?? '', + baggage: request.headers.get('baggage'), + }, + () => + startSpan( + { + attributes, + op: 'http.server', + name: `${request.method} ${routeName}`, + }, + async span => { + try { + const response = (await target.apply(thisArg, args)) ; + if (response?.status) { + setHttpStatus(span, response.status); + isolationScope.setContext('response', { + headers: response.headers.toJSON(), + status_code: response.status, + }); + } + return response; + } catch (e) { + captureException(e, { + mechanism: { + type: 'auto.http.bun.serve', + handled: false, + }, + }); + throw e; + } + }, + ), + ); + }); +} + +function getSpanAttributesFromParsedUrl( + parsedUrl, + request, +) { + const attributes = { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.bun.serve', + [SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD]: request.method || 'GET', + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', + }; + + if (parsedUrl) { + if (parsedUrl.search) { + attributes['url.query'] = parsedUrl.search; + } + if (parsedUrl.hash) { + attributes['url.fragment'] = parsedUrl.hash; + } + if (parsedUrl.pathname) { + attributes['url.path'] = parsedUrl.pathname; + } + if (!isURLObjectRelative(parsedUrl)) { + attributes['url.full'] = parsedUrl.href; + if (parsedUrl.port) { + attributes['url.port'] = parsedUrl.port; + } + if (parsedUrl.protocol) { + attributes['url.scheme'] = parsedUrl.protocol; + } + if (parsedUrl.hostname) { + attributes['url.domain'] = parsedUrl.hostname; + } + } + } + + return attributes; +} + +export { bunServerIntegration, instrumentBunServe }; +//# sourceMappingURL=bunserver.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/integrations/bunserver.js.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/integrations/bunserver.js.map new file mode 100644 index 0000000..f81207c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/integrations/bunserver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bunserver.js","sources":["../../../src/integrations/bunserver.ts"],"sourcesContent":["import type { IntegrationFn, RequestEventData, SpanAttributes } from '@sentry/core';\nimport {\n captureException,\n continueTrace,\n defineIntegration,\n getClient,\n httpHeadersToSpanAttributes,\n isURLObjectRelative,\n parseStringToURLObject,\n SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n setHttpStatus,\n startSpan,\n withIsolationScope,\n} from '@sentry/core';\nimport type { ServeOptions } from 'bun';\n\nconst INTEGRATION_NAME = 'BunServer';\n\nconst _bunServerIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentBunServe();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Instruments `Bun.serve` to automatically create transactions and capture errors.\n *\n * Does not support instrumenting static routes.\n *\n * Enabled by default in the Bun SDK.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * Sentry.bunServerIntegration(),\n * ],\n * })\n * ```\n */\nexport const bunServerIntegration = defineIntegration(_bunServerIntegration);\n\nlet hasPatchedBunServe = false;\n\n/**\n * Instruments Bun.serve by patching it's options.\n *\n * Only exported for tests.\n */\nexport function instrumentBunServe(): void {\n if (hasPatchedBunServe) {\n return;\n }\n\n Bun.serve = new Proxy(Bun.serve, {\n apply(serveTarget, serveThisArg, serveArgs: Parameters) {\n instrumentBunServeOptions(serveArgs[0]);\n const server: ReturnType = serveTarget.apply(serveThisArg, serveArgs);\n\n // A Bun server can be reloaded, re-wrap any fetch function passed to it\n // We can't use a Proxy for this as Bun does `instanceof` checks internally that fail if we\n // wrap the Server instance.\n const originalReload: typeof server.reload = server.reload.bind(server);\n server.reload = (serveOptions: ServeOptions) => {\n instrumentBunServeOptions(serveOptions);\n return originalReload(serveOptions);\n };\n\n return server;\n },\n });\n\n hasPatchedBunServe = true;\n}\n\n/**\n * Instruments Bun.serve options.\n *\n * @param serveOptions - The options for the Bun.serve function.\n */\nfunction instrumentBunServeOptions(serveOptions: Parameters[0]): void {\n // First handle fetch\n instrumentBunServeOptionFetch(serveOptions);\n // then handle routes\n instrumentBunServeOptionRoutes(serveOptions);\n}\n\n/**\n * Instruments the `fetch` option of Bun.serve.\n *\n * @param serveOptions - The options for the Bun.serve function.\n */\nfunction instrumentBunServeOptionFetch(serveOptions: Parameters[0]): void {\n if (typeof serveOptions.fetch !== 'function') {\n return;\n }\n\n serveOptions.fetch = new Proxy(serveOptions.fetch, {\n apply(fetchTarget, fetchThisArg, fetchArgs: Parameters) {\n return wrapRequestHandler(fetchTarget, fetchThisArg, fetchArgs);\n },\n });\n}\n\n/**\n * Instruments the `routes` option of Bun.serve.\n *\n * @param serveOptions - The options for the Bun.serve function.\n */\nfunction instrumentBunServeOptionRoutes(serveOptions: Parameters[0]): void {\n if (!serveOptions.routes) {\n return;\n }\n\n if (typeof serveOptions.routes !== 'object') {\n return;\n }\n\n Object.keys(serveOptions.routes).forEach(route => {\n const routeHandler = serveOptions.routes[route];\n\n // Handle route handlers that are an object\n if (typeof routeHandler === 'function') {\n serveOptions.routes[route] = new Proxy(routeHandler, {\n apply: (routeHandlerTarget, routeHandlerThisArg, routeHandlerArgs: Parameters) => {\n return wrapRequestHandler(routeHandlerTarget, routeHandlerThisArg, routeHandlerArgs, route);\n },\n });\n }\n\n // Static routes are not instrumented\n if (routeHandler instanceof Response) {\n return;\n }\n\n // Handle the route handlers that are an object. This means they define a route handler for each method.\n if (typeof routeHandler === 'object') {\n Object.entries(routeHandler).forEach(([routeHandlerObjectHandlerKey, routeHandlerObjectHandler]) => {\n if (typeof routeHandlerObjectHandler === 'function') {\n (serveOptions.routes[route] as Record)[routeHandlerObjectHandlerKey] = new Proxy(\n routeHandlerObjectHandler,\n {\n apply: (\n routeHandlerObjectHandlerTarget,\n routeHandlerObjectHandlerThisArg,\n routeHandlerObjectHandlerArgs: Parameters,\n ) => {\n return wrapRequestHandler(\n routeHandlerObjectHandlerTarget,\n routeHandlerObjectHandlerThisArg,\n routeHandlerObjectHandlerArgs,\n route,\n );\n },\n },\n );\n }\n });\n }\n });\n}\n\ntype RouteHandler = Extract<\n NonNullable[0]['routes']>[string],\n // eslint-disable-next-line @typescript-eslint/ban-types\n Function\n>;\n\nfunction wrapRequestHandler(\n target: T,\n thisArg: unknown,\n args: Parameters,\n route?: string,\n): ReturnType {\n return withIsolationScope(isolationScope => {\n const request = args[0];\n const upperCaseMethod = request.method.toUpperCase();\n if (upperCaseMethod === 'OPTIONS' || upperCaseMethod === 'HEAD') {\n return target.apply(thisArg, args);\n }\n\n const parsedUrl = parseStringToURLObject(request.url);\n const attributes = getSpanAttributesFromParsedUrl(parsedUrl, request);\n\n let routeName = parsedUrl?.pathname || '/';\n if (request.params) {\n Object.keys(request.params).forEach(key => {\n attributes[`url.path.parameter.${key}`] = (request.params as Record)[key];\n });\n\n // If a route has parameters, it's a parameterized route\n if (route) {\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n attributes['url.template'] = route;\n routeName = route;\n }\n }\n\n // Handle wildcard routes\n if (route?.endsWith('/*')) {\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n attributes['url.template'] = route;\n routeName = route;\n }\n\n Object.assign(\n attributes,\n httpHeadersToSpanAttributes(request.headers.toJSON(), getClient()?.getOptions().sendDefaultPii ?? false),\n );\n\n isolationScope.setSDKProcessingMetadata({\n normalizedRequest: {\n url: request.url,\n method: request.method,\n headers: request.headers.toJSON(),\n query_string: parsedUrl?.search,\n } satisfies RequestEventData,\n });\n\n return continueTrace(\n {\n sentryTrace: request.headers.get('sentry-trace') ?? '',\n baggage: request.headers.get('baggage'),\n },\n () =>\n startSpan(\n {\n attributes,\n op: 'http.server',\n name: `${request.method} ${routeName}`,\n },\n async span => {\n try {\n const response = (await target.apply(thisArg, args)) as Response | undefined;\n if (response?.status) {\n setHttpStatus(span, response.status);\n isolationScope.setContext('response', {\n headers: response.headers.toJSON(),\n status_code: response.status,\n });\n }\n return response;\n } catch (e) {\n captureException(e, {\n mechanism: {\n type: 'auto.http.bun.serve',\n handled: false,\n },\n });\n throw e;\n }\n },\n ),\n );\n });\n}\n\nfunction getSpanAttributesFromParsedUrl(\n parsedUrl: ReturnType,\n request: Request,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.bun.serve',\n [SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD]: request.method || 'GET',\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n };\n\n if (parsedUrl) {\n if (parsedUrl.search) {\n attributes['url.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n attributes['url.fragment'] = parsedUrl.hash;\n }\n if (parsedUrl.pathname) {\n attributes['url.path'] = parsedUrl.pathname;\n }\n if (!isURLObjectRelative(parsedUrl)) {\n attributes['url.full'] = parsedUrl.href;\n if (parsedUrl.port) {\n attributes['url.port'] = parsedUrl.port;\n }\n if (parsedUrl.protocol) {\n attributes['url.scheme'] = parsedUrl.protocol;\n }\n if (parsedUrl.hostname) {\n attributes['url.domain'] = parsedUrl.hostname;\n }\n }\n }\n\n return attributes;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/package.json b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/package.json new file mode 100644 index 0000000..d0d4a1e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/package.json @@ -0,0 +1 @@ +{"type":"module","version":"10.37.0","sideEffects":false} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/sdk.js b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/sdk.js new file mode 100644 index 0000000..2f33f86 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/sdk.js @@ -0,0 +1,100 @@ +import * as os from 'node:os'; +import { inboundFiltersIntegration, functionToStringIntegration, linkedErrorsIntegration, requestDataIntegration, hasSpansEnabled, applySdkMetadata } from '@sentry/core'; +import { consoleIntegration, httpIntegration, nativeNodeFetchIntegration, onUncaughtExceptionIntegration, onUnhandledRejectionIntegration, contextLinesIntegration, nodeContextIntegration, modulesIntegration, processSessionIntegration, getAutoPerformanceIntegrations, init as init$1 } from '@sentry/node'; +import { bunServerIntegration } from './integrations/bunserver.js'; +import { makeFetchTransport } from './transports/index.js'; + +/** Get the default integrations for the Bun SDK. */ +function getDefaultIntegrations(_options) { + // We return a copy of the defaultIntegrations here to avoid mutating this + return [ + // Common + // TODO(v11): Replace with eventFiltersIntegration once we remove the deprecated `inboundFiltersIntegration` + // eslint-disable-next-line deprecation/deprecation + inboundFiltersIntegration(), + functionToStringIntegration(), + linkedErrorsIntegration(), + requestDataIntegration(), + // Native Wrappers + consoleIntegration(), + httpIntegration(), + nativeNodeFetchIntegration(), + // Global Handlers + onUncaughtExceptionIntegration(), + onUnhandledRejectionIntegration(), + // Event Info + contextLinesIntegration(), + nodeContextIntegration(), + modulesIntegration(), + processSessionIntegration(), + // Bun Specific + bunServerIntegration(), + ...(hasSpansEnabled(_options) ? getAutoPerformanceIntegrations() : []), + ]; +} + +/** + * The Sentry Bun SDK Client. + * + * To use this SDK, call the {@link init} function as early as possible in the + * main entry module. To set context information or send manual events, use the + * provided methods. + * + * @example + * ``` + * + * const { init } = require('@sentry/bun'); + * + * init({ + * dsn: '__DSN__', + * // ... + * }); + * ``` + * + * @example + * ``` + * + * const { addBreadcrumb } = require('@sentry/node'); + * addBreadcrumb({ + * message: 'My Breadcrumb', + * // ... + * }); + * ``` + * + * @example + * ``` + * + * const Sentry = require('@sentry/node'); + * Sentry.captureMessage('Hello, world!'); + * Sentry.captureException(new Error('Good bye')); + * Sentry.captureEvent({ + * message: 'Manual', + * stacktrace: [ + * // ... + * ], + * }); + * ``` + * + * @see {@link BunOptions} for documentation on configuration options. + */ +function init(userOptions = {}) { + applySdkMetadata(userOptions, 'bun'); + + const options = { + ...userOptions, + platform: 'javascript', + runtime: { name: 'bun', version: Bun.version }, + serverName: userOptions.serverName || global.process.env.SENTRY_NAME || os.hostname(), + }; + + options.transport = options.transport || makeFetchTransport; + + if (options.defaultIntegrations === undefined) { + options.defaultIntegrations = getDefaultIntegrations(options); + } + + return init$1(options); +} + +export { getDefaultIntegrations, init }; +//# sourceMappingURL=sdk.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/sdk.js.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/sdk.js.map new file mode 100644 index 0000000..937defa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/sdk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk.js","sources":["../../src/sdk.ts"],"sourcesContent":["import * as os from 'node:os';\nimport type { Integration, Options } from '@sentry/core';\nimport {\n applySdkMetadata,\n functionToStringIntegration,\n hasSpansEnabled,\n inboundFiltersIntegration,\n linkedErrorsIntegration,\n requestDataIntegration,\n} from '@sentry/core';\nimport type { NodeClient } from '@sentry/node';\nimport {\n consoleIntegration,\n contextLinesIntegration,\n getAutoPerformanceIntegrations,\n httpIntegration,\n init as initNode,\n modulesIntegration,\n nativeNodeFetchIntegration,\n nodeContextIntegration,\n onUncaughtExceptionIntegration,\n onUnhandledRejectionIntegration,\n processSessionIntegration,\n} from '@sentry/node';\nimport { bunServerIntegration } from './integrations/bunserver';\nimport { makeFetchTransport } from './transports';\nimport type { BunOptions } from './types';\n\n/** Get the default integrations for the Bun SDK. */\nexport function getDefaultIntegrations(_options: Options): Integration[] {\n // We return a copy of the defaultIntegrations here to avoid mutating this\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 // Native Wrappers\n consoleIntegration(),\n httpIntegration(),\n nativeNodeFetchIntegration(),\n // Global Handlers\n onUncaughtExceptionIntegration(),\n onUnhandledRejectionIntegration(),\n // Event Info\n contextLinesIntegration(),\n nodeContextIntegration(),\n modulesIntegration(),\n processSessionIntegration(),\n // Bun Specific\n bunServerIntegration(),\n ...(hasSpansEnabled(_options) ? getAutoPerformanceIntegrations() : []),\n ];\n}\n\n/**\n * The Sentry Bun SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible in the\n * main entry module. To set context information or send manual events, use the\n * provided methods.\n *\n * @example\n * ```\n *\n * const { init } = require('@sentry/bun');\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * const { addBreadcrumb } = require('@sentry/node');\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * const Sentry = require('@sentry/node');\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BunOptions} for documentation on configuration options.\n */\nexport function init(userOptions: BunOptions = {}): NodeClient | undefined {\n applySdkMetadata(userOptions, 'bun');\n\n const options = {\n ...userOptions,\n platform: 'javascript',\n runtime: { name: 'bun', version: Bun.version },\n serverName: userOptions.serverName || global.process.env.SENTRY_NAME || os.hostname(),\n };\n\n options.transport = options.transport || makeFetchTransport;\n\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = getDefaultIntegrations(options);\n }\n\n return initNode(options);\n}\n"],"names":["initNode"],"mappings":";;;;;;AA4BA;AACO,SAAS,sBAAsB,CAAC,QAAQ,EAA0B;AACzE;AACA,EAAE,OAAO;AACT;AACA;AACA;AACA,IAAI,yBAAyB,EAAE;AAC/B,IAAI,2BAA2B,EAAE;AACjC,IAAI,uBAAuB,EAAE;AAC7B,IAAI,sBAAsB,EAAE;AAC5B;AACA,IAAI,kBAAkB,EAAE;AACxB,IAAI,eAAe,EAAE;AACrB,IAAI,0BAA0B,EAAE;AAChC;AACA,IAAI,8BAA8B,EAAE;AACpC,IAAI,+BAA+B,EAAE;AACrC;AACA,IAAI,uBAAuB,EAAE;AAC7B,IAAI,sBAAsB,EAAE;AAC5B,IAAI,kBAAkB,EAAE;AACxB,IAAI,yBAAyB,EAAE;AAC/B;AACA,IAAI,oBAAoB,EAAE;AAC1B,IAAI,IAAI,eAAe,CAAC,QAAQ,CAAA,GAAI,8BAA8B,EAAC,GAAI,EAAE,CAAC;AAC1E,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,WAAW,GAAe,EAAE,EAA0B;AAC3E,EAAE,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC;;AAEtC,EAAE,MAAM,UAAU;AAClB,IAAI,GAAG,WAAW;AAClB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAA,EAAS;AAClD,IAAI,UAAU,EAAE,WAAW,CAAC,UAAA,IAAc,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAA,IAAe,EAAE,CAAC,QAAQ,EAAE;AACzF,GAAG;;AAEH,EAAE,OAAO,CAAC,SAAA,GAAY,OAAO,CAAC,SAAA,IAAa,kBAAkB;;AAE7D,EAAE,IAAI,OAAO,CAAC,mBAAA,KAAwB,SAAS,EAAE;AACjD,IAAI,OAAO,CAAC,mBAAA,GAAsB,sBAAsB,CAAC,OAAO,CAAC;AACjE,EAAE;;AAEF,EAAE,OAAOA,MAAQ,CAAC,OAAO,CAAC;AAC1B;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/transports/index.js b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/transports/index.js new file mode 100644 index 0000000..c1bff96 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/transports/index.js @@ -0,0 +1,35 @@ +import { createTransport, suppressTracing } from '@sentry/core'; + +/** + * Creates a Transport that uses the Fetch API to send events to Sentry. + */ +function makeFetchTransport(options) { + function makeRequest(request) { + const requestOptions = { + body: request.body, + method: 'POST', + headers: options.headers, + }; + + try { + return suppressTracing(() => { + return fetch(options.url, requestOptions).then(response => { + return { + statusCode: response.status, + headers: { + 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'), + 'retry-after': response.headers.get('Retry-After'), + }, + }; + }); + }); + } catch (e) { + return Promise.reject(e); + } + } + + return createTransport(options, makeRequest); +} + +export { makeFetchTransport }; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/transports/index.js.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/transports/index.js.map new file mode 100644 index 0000000..13cb17d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/esm/transports/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../src/transports/index.ts"],"sourcesContent":["import type { BaseTransportOptions, Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/core';\nimport { createTransport, suppressTracing } from '@sentry/core';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(options: BaseTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n headers: options.headers,\n };\n\n try {\n return suppressTracing(() => {\n return fetch(options.url, requestOptions).then(response => {\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n });\n });\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n"],"names":[],"mappings":";;AAGA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,OAAO,EAAmC;AAC7E,EAAE,SAAS,WAAW,CAAC,OAAO,EAA+D;AAC7F,IAAI,MAAM,cAAc,GAAgB;AACxC,MAAM,IAAI,EAAE,OAAO,CAAC,IAAI;AACxB,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,OAAO,EAAE,OAAO,CAAC,OAAO;AAC9B,KAAK;;AAEL,IAAI,IAAI;AACR,MAAM,OAAO,eAAe,CAAC,MAAM;AACnC,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,YAAY;AACnE,UAAU,OAAO;AACjB,YAAY,UAAU,EAAE,QAAQ,CAAC,MAAM;AACvC,YAAY,OAAO,EAAE;AACrB,cAAc,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;AAClF,cAAc,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAChE,aAAa;AACb,WAAW;AACX,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC,CAAC;AACR,IAAI,CAAA,CAAE,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC;AAC9C;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/client.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/client.d.ts new file mode 100644 index 0000000..e9bb063 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/client.d.ts @@ -0,0 +1,13 @@ +import { ServerRuntimeClient } from '@sentry/core'; +import { BunClientOptions } from './types'; +/** + * @deprecated This client is no longer used in v9. + */ +export declare class BunClient extends ServerRuntimeClient { + /** + * Creates a new Bun SDK instance. + * @param options Configuration options for this SDK. + */ + constructor(options: BunClientOptions); +} +//# sourceMappingURL=client.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/index.d.ts new file mode 100644 index 0000000..f607c60 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/index.d.ts @@ -0,0 +1,9 @@ +export { Breadcrumb, BreadcrumbHint, PolymorphicRequest, RequestEventData, SdkInfo, Event, EventHint, ErrorEvent, Exception, Session, SeverityLevel, Span, StackFrame, Stacktrace, Thread, User, FeatureFlagsIntegration, Metric, ExclusiveEventHintOrCaptureContext, CaptureContext, } from '@sentry/core'; +export { addEventProcessor, addBreadcrumb, addIntegration, captureException, captureEvent, captureMessage, captureCheckIn, captureFeedback, startSession, captureSession, endSession, withMonitor, createTransport, getClient, isInitialized, isEnabled, generateInstrumentOnce, getCurrentScope, getGlobalScope, getIsolationScope, getTraceData, getTraceMetaTags, setCurrentClient, Scope, SDK_VERSION, setContext, setConversationId, setExtra, setExtras, setTag, setTags, setUser, getSpanStatusFromHttpCode, setHttpStatus, withScope, withIsolationScope, makeNodeTransport, NodeClient, defaultStackParser, lastEventId, flush, close, getSentryRelease, createGetModuleFromFilename, createLangChainCallbackHandler, httpHeadersToSpanAttributes, winterCGHeadersToDict, anrIntegration, disableAnrDetectionForCallback, consoleIntegration, httpIntegration, httpServerIntegration, httpServerSpansIntegration, nativeNodeFetchIntegration, onUncaughtExceptionIntegration, onUnhandledRejectionIntegration, openAIIntegration, langChainIntegration, langGraphIntegration, modulesIntegration, contextLinesIntegration, nodeContextIntegration, localVariablesIntegration, requestDataIntegration, fsIntegration, functionToStringIntegration, inboundFiltersIntegration, eventFiltersIntegration, linkedErrorsIntegration, setMeasurement, getActiveSpan, startSpan, startInactiveSpan, startSpanManual, startNewTrace, suppressTracing, withActiveSpan, getRootSpan, getSpanDescendants, continueTrace, getAutoPerformanceIntegrations, cron, parameterize, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, dataloaderIntegration, expressIntegration, expressErrorHandler, setupExpressErrorHandler, fastifyIntegration, setupFastifyErrorHandler, firebaseIntegration, koaIntegration, setupKoaErrorHandler, connectIntegration, setupConnectErrorHandler, genericPoolIntegration, graphqlIntegration, knexIntegration, kafkaIntegration, lruMemoizerIntegration, mongoIntegration, mongooseIntegration, mysqlIntegration, mysql2Integration, redisIntegration, tediousIntegration, postgresIntegration, postgresJsIntegration, prismaIntegration, processSessionIntegration, hapiIntegration, setupHapiErrorHandler, honoIntegration, setupHonoErrorHandler, spotlightIntegration, initOpenTelemetry, spanToJSON, spanToTraceHeader, spanToBaggageHeader, trpcMiddleware, updateSpanName, supabaseIntegration, instrumentSupabaseClient, instrumentOpenAiClient, zodErrorsIntegration, profiler, amqplibIntegration, anthropicAIIntegration, googleGenAIIntegration, vercelAIIntegration, logger, consoleLoggingIntegration, createConsolaReporter, createSentryWinstonTransport, wrapMcpServerWithSentry, featureFlagsIntegration, launchDarklyIntegration, growthbookIntegration, buildLaunchDarklyFlagUsedHandler, openFeatureIntegration, OpenFeatureIntegrationHook, statsigIntegration, unleashIntegration, metrics, } from '@sentry/node'; +export { captureConsoleIntegration, dedupeIntegration, extraErrorDataIntegration, rewriteFramesIntegration, } from '@sentry/core'; +export { BunOptions } from './types'; +export { BunClient } from './client'; +export { getDefaultIntegrations, init } from './sdk'; +export { bunServerIntegration } from './integrations/bunserver'; +export { makeFetchTransport } from './transports'; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/integrations/bunserver.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/integrations/bunserver.d.ts new file mode 100644 index 0000000..dcff967 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/integrations/bunserver.d.ts @@ -0,0 +1,23 @@ +/** + * Instruments `Bun.serve` to automatically create transactions and capture errors. + * + * Does not support instrumenting static routes. + * + * Enabled by default in the Bun SDK. + * + * ```js + * Sentry.init({ + * integrations: [ + * Sentry.bunServerIntegration(), + * ], + * }) + * ``` + */ +export declare const bunServerIntegration: () => import("@sentry/core").Integration; +/** + * Instruments Bun.serve by patching it's options. + * + * Only exported for tests. + */ +export declare function instrumentBunServe(): void; +//# sourceMappingURL=bunserver.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/sdk.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/sdk.d.ts new file mode 100644 index 0000000..fd0319b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/sdk.d.ts @@ -0,0 +1,51 @@ +import { Integration, Options } from '@sentry/core'; +import { NodeClient } from '@sentry/node'; +import { BunOptions } from './types'; +/** Get the default integrations for the Bun SDK. */ +export declare function getDefaultIntegrations(_options: Options): Integration[]; +/** + * The Sentry Bun SDK Client. + * + * To use this SDK, call the {@link init} function as early as possible in the + * main entry module. To set context information or send manual events, use the + * provided methods. + * + * @example + * ``` + * + * const { init } = require('@sentry/bun'); + * + * init({ + * dsn: '__DSN__', + * // ... + * }); + * ``` + * + * @example + * ``` + * + * const { addBreadcrumb } = require('@sentry/node'); + * addBreadcrumb({ + * message: 'My Breadcrumb', + * // ... + * }); + * ``` + * + * @example + * ``` + * + * const Sentry = require('@sentry/node'); + * Sentry.captureMessage('Hello, world!'); + * Sentry.captureException(new Error('Good bye')); + * Sentry.captureEvent({ + * message: 'Manual', + * stacktrace: [ + * // ... + * ], + * }); + * ``` + * + * @see {@link BunOptions} for documentation on configuration options. + */ +export declare function init(userOptions?: BunOptions): NodeClient | undefined; +//# sourceMappingURL=sdk.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/transports/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/transports/index.d.ts new file mode 100644 index 0000000..f36c843 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/transports/index.d.ts @@ -0,0 +1,6 @@ +import { BaseTransportOptions, Transport } from '@sentry/core'; +/** + * Creates a Transport that uses the Fetch API to send events to Sentry. + */ +export declare function makeFetchTransport(options: BaseTransportOptions): Transport; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/types.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/types.d.ts new file mode 100644 index 0000000..2800aa9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types-ts3.8/types.d.ts @@ -0,0 +1,21 @@ +import { BaseTransportOptions, ClientOptions, Options } from '@sentry/core'; +import { OpenTelemetryServerRuntimeOptions } from '@sentry/node-core'; +/** + * Base options for the Sentry Bun SDK. + * Extends the common WinterTC options with OpenTelemetry support shared with Node.js and other server-side SDKs. + */ +export interface BaseBunOptions extends OpenTelemetryServerRuntimeOptions { +} +/** + * Configuration options for the Sentry Bun SDK + * @see @sentry/core Options for more information. + */ +export interface BunOptions extends Options, BaseBunOptions { +} +/** + * Configuration options for the Sentry Bun SDK Client class + * @see BunClient for more information. + */ +export interface BunClientOptions extends ClientOptions, BaseBunOptions { +} +//# sourceMappingURL=types.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/client.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/client.d.ts new file mode 100644 index 0000000..335fbd4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/client.d.ts @@ -0,0 +1,13 @@ +import { ServerRuntimeClient } from '@sentry/core'; +import type { BunClientOptions } from './types'; +/** + * @deprecated This client is no longer used in v9. + */ +export declare class BunClient extends ServerRuntimeClient { + /** + * Creates a new Bun SDK instance. + * @param options Configuration options for this SDK. + */ + constructor(options: BunClientOptions); +} +//# sourceMappingURL=client.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/client.d.ts.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/client.d.ts.map new file mode 100644 index 0000000..5893be3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/client.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;GAEG;AACH,qBAAa,SAAU,SAAQ,mBAAmB,CAAC,gBAAgB,CAAC;IAClE;;;OAGG;gBACgB,OAAO,EAAE,gBAAgB;CAY7C"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/index.d.ts new file mode 100644 index 0000000..a842984 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/index.d.ts @@ -0,0 +1,9 @@ +export type { Breadcrumb, BreadcrumbHint, PolymorphicRequest, RequestEventData, SdkInfo, Event, EventHint, ErrorEvent, Exception, Session, SeverityLevel, Span, StackFrame, Stacktrace, Thread, User, FeatureFlagsIntegration, Metric, ExclusiveEventHintOrCaptureContext, CaptureContext, } from '@sentry/core'; +export { addEventProcessor, addBreadcrumb, addIntegration, captureException, captureEvent, captureMessage, captureCheckIn, captureFeedback, startSession, captureSession, endSession, withMonitor, createTransport, getClient, isInitialized, isEnabled, generateInstrumentOnce, getCurrentScope, getGlobalScope, getIsolationScope, getTraceData, getTraceMetaTags, setCurrentClient, Scope, SDK_VERSION, setContext, setConversationId, setExtra, setExtras, setTag, setTags, setUser, getSpanStatusFromHttpCode, setHttpStatus, withScope, withIsolationScope, makeNodeTransport, NodeClient, defaultStackParser, lastEventId, flush, close, getSentryRelease, createGetModuleFromFilename, createLangChainCallbackHandler, httpHeadersToSpanAttributes, winterCGHeadersToDict, anrIntegration, disableAnrDetectionForCallback, consoleIntegration, httpIntegration, httpServerIntegration, httpServerSpansIntegration, nativeNodeFetchIntegration, onUncaughtExceptionIntegration, onUnhandledRejectionIntegration, openAIIntegration, langChainIntegration, langGraphIntegration, modulesIntegration, contextLinesIntegration, nodeContextIntegration, localVariablesIntegration, requestDataIntegration, fsIntegration, functionToStringIntegration, inboundFiltersIntegration, eventFiltersIntegration, linkedErrorsIntegration, setMeasurement, getActiveSpan, startSpan, startInactiveSpan, startSpanManual, startNewTrace, suppressTracing, withActiveSpan, getRootSpan, getSpanDescendants, continueTrace, getAutoPerformanceIntegrations, cron, parameterize, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, dataloaderIntegration, expressIntegration, expressErrorHandler, setupExpressErrorHandler, fastifyIntegration, setupFastifyErrorHandler, firebaseIntegration, koaIntegration, setupKoaErrorHandler, connectIntegration, setupConnectErrorHandler, genericPoolIntegration, graphqlIntegration, knexIntegration, kafkaIntegration, lruMemoizerIntegration, mongoIntegration, mongooseIntegration, mysqlIntegration, mysql2Integration, redisIntegration, tediousIntegration, postgresIntegration, postgresJsIntegration, prismaIntegration, processSessionIntegration, hapiIntegration, setupHapiErrorHandler, honoIntegration, setupHonoErrorHandler, spotlightIntegration, initOpenTelemetry, spanToJSON, spanToTraceHeader, spanToBaggageHeader, trpcMiddleware, updateSpanName, supabaseIntegration, instrumentSupabaseClient, instrumentOpenAiClient, zodErrorsIntegration, profiler, amqplibIntegration, anthropicAIIntegration, googleGenAIIntegration, vercelAIIntegration, logger, consoleLoggingIntegration, createConsolaReporter, createSentryWinstonTransport, wrapMcpServerWithSentry, featureFlagsIntegration, launchDarklyIntegration, growthbookIntegration, buildLaunchDarklyFlagUsedHandler, openFeatureIntegration, OpenFeatureIntegrationHook, statsigIntegration, unleashIntegration, metrics, } from '@sentry/node'; +export { captureConsoleIntegration, dedupeIntegration, extraErrorDataIntegration, rewriteFramesIntegration, } from '@sentry/core'; +export type { BunOptions } from './types'; +export { BunClient } from './client'; +export { getDefaultIntegrations, init } from './sdk'; +export { bunServerIntegration } from './integrations/bunserver'; +export { makeFetchTransport } from './transports'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/index.d.ts.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/index.d.ts.map new file mode 100644 index 0000000..fc0f4c1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/integrations/bunserver.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/integrations/bunserver.d.ts new file mode 100644 index 0000000..2b4dd75 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/integrations/bunserver.d.ts @@ -0,0 +1,23 @@ +/** + * Instruments `Bun.serve` to automatically create transactions and capture errors. + * + * Does not support instrumenting static routes. + * + * Enabled by default in the Bun SDK. + * + * ```js + * Sentry.init({ + * integrations: [ + * Sentry.bunServerIntegration(), + * ], + * }) + * ``` + */ +export declare const bunServerIntegration: () => import("@sentry/core").Integration; +/** + * Instruments Bun.serve by patching it's options. + * + * Only exported for tests. + */ +export declare function instrumentBunServe(): void; +//# sourceMappingURL=bunserver.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/integrations/bunserver.d.ts.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/integrations/bunserver.d.ts.map new file mode 100644 index 0000000..44c640e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/integrations/bunserver.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"bunserver.d.ts","sourceRoot":"","sources":["../../../src/integrations/bunserver.ts"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,0CAA2C,CAAC;AAI7E;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAwBzC"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/sdk.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/sdk.d.ts new file mode 100644 index 0000000..77b01aa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/sdk.d.ts @@ -0,0 +1,51 @@ +import type { Integration, Options } from '@sentry/core'; +import type { NodeClient } from '@sentry/node'; +import type { BunOptions } from './types'; +/** Get the default integrations for the Bun SDK. */ +export declare function getDefaultIntegrations(_options: Options): Integration[]; +/** + * The Sentry Bun SDK Client. + * + * To use this SDK, call the {@link init} function as early as possible in the + * main entry module. To set context information or send manual events, use the + * provided methods. + * + * @example + * ``` + * + * const { init } = require('@sentry/bun'); + * + * init({ + * dsn: '__DSN__', + * // ... + * }); + * ``` + * + * @example + * ``` + * + * const { addBreadcrumb } = require('@sentry/node'); + * addBreadcrumb({ + * message: 'My Breadcrumb', + * // ... + * }); + * ``` + * + * @example + * ``` + * + * const Sentry = require('@sentry/node'); + * Sentry.captureMessage('Hello, world!'); + * Sentry.captureException(new Error('Good bye')); + * Sentry.captureEvent({ + * message: 'Manual', + * stacktrace: [ + * // ... + * ], + * }); + * ``` + * + * @see {@link BunOptions} for documentation on configuration options. + */ +export declare function init(userOptions?: BunOptions): NodeClient | undefined; +//# sourceMappingURL=sdk.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/sdk.d.ts.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/sdk.d.ts.map new file mode 100644 index 0000000..63dc99a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/sdk.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AASzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAgB/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,oDAAoD;AACpD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,EAAE,CA0BvE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,IAAI,CAAC,WAAW,GAAE,UAAe,GAAG,UAAU,GAAG,SAAS,CAiBzE"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/transports/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/transports/index.d.ts new file mode 100644 index 0000000..f90057e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/transports/index.d.ts @@ -0,0 +1,6 @@ +import type { BaseTransportOptions, Transport } from '@sentry/core'; +/** + * Creates a Transport that uses the Fetch API to send events to Sentry. + */ +export declare function makeFetchTransport(options: BaseTransportOptions): Transport; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/transports/index.d.ts.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/transports/index.d.ts.map new file mode 100644 index 0000000..4171140 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/transports/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transports/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAkD,MAAM,cAAc,CAAC;AAGpH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,CA0B3E"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/types.d.ts b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/types.d.ts new file mode 100644 index 0000000..a28c660 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/types.d.ts @@ -0,0 +1,21 @@ +import type { BaseTransportOptions, ClientOptions, Options } from '@sentry/core'; +import type { OpenTelemetryServerRuntimeOptions } from '@sentry/node-core'; +/** + * Base options for the Sentry Bun SDK. + * Extends the common WinterTC options with OpenTelemetry support shared with Node.js and other server-side SDKs. + */ +export interface BaseBunOptions extends OpenTelemetryServerRuntimeOptions { +} +/** + * Configuration options for the Sentry Bun SDK + * @see @sentry/core Options for more information. + */ +export interface BunOptions extends Options, BaseBunOptions { +} +/** + * Configuration options for the Sentry Bun SDK Client class + * @see BunClient for more information. + */ +export interface BunClientOptions extends ClientOptions, BaseBunOptions { +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/build/types/types.d.ts.map b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/types.d.ts.map new file mode 100644 index 0000000..36d1255 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/build/types/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAE3E;;;GAGG;AAEH,MAAM,WAAW,cAAe,SAAQ,iCAAiC;CAAG;AAE5E;;;GAGG;AACH,MAAM,WAAW,UAAW,SAAQ,OAAO,CAAC,oBAAoB,CAAC,EAAE,cAAc;CAAG;AAEpF;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,aAAa,CAAC,oBAAoB,CAAC,EAAE,cAAc;CAAG"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/bun/package.json b/sentry-javascript/19013/node_modules/@sentry/bun/package.json new file mode 100644 index 0000000..73ecfad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/bun/package.json @@ -0,0 +1,75 @@ +{ + "name": "@sentry/bun", + "version": "10.37.0", + "description": "Official Sentry SDK for bun", + "repository": "git://github.com/getsentry/sentry-javascript.git", + "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/bun", + "author": "Sentry", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "files": [ + "/build" + ], + "main": "build/cjs/index.js", + "module": "build/esm/index.js", + "types": "build/types/index.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "import": { + "types": "./build/types/index.d.ts", + "default": "./build/esm/index.js" + }, + "require": { + "types": "./build/types/index.d.ts", + "default": "./build/cjs/index.js" + } + } + }, + "typesVersions": { + "<5.0": { + "build/types/index.d.ts": [ + "build/types-ts3.8/index.d.ts" + ] + } + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@sentry/core": "10.37.0", + "@sentry/node": "10.37.0" + }, + "devDependencies": { + "bun-types": "^1.2.9" + }, + "scripts": { + "build": "run-p build:transpile build:types", + "build:dev": "yarn build", + "build:transpile": "rollup -c rollup.npm.config.mjs", + "build:types": "run-s build:types:core build:types:downlevel", + "build:types:core": "tsc -p tsconfig.types.json", + "build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8", + "build:watch": "run-p build:transpile:watch build:types:watch", + "build:dev:watch": "yarn build:watch", + "build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", + "build:tarball": "npm pack", + "circularDepCheck": "madge --circular src/index.ts", + "clean": "rimraf build coverage sentry-bun-*.tgz", + "fix": "eslint . --format stylish --fix", + "lint": "eslint . --format stylish", + "lint:es-compatibility": "es-check es2022 ./build/cjs/*.js && es-check es2022 ./build/esm/*.js --module", + "install:bun": "node ./scripts/install-bun.js", + "test": "run-s install:bun test:bun", + "test:bun": "bun test", + "test:watch": "bun test --watch", + "yalc:publish": "yalc publish --push --sig" + }, + "volta": { + "extends": "../../package.json" + }, + "sideEffects": false +} diff --git a/sentry-javascript/19013/node_modules/@sentry/core/LICENSE b/sentry-javascript/19013/node_modules/@sentry/core/LICENSE new file mode 100644 index 0000000..9f2152e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Functional Software, Inc. dba Sentry + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/sentry-javascript/19013/node_modules/@sentry/core/README.md b/sentry-javascript/19013/node_modules/@sentry/core/README.md new file mode 100644 index 0000000..c4c26b5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/README.md @@ -0,0 +1,22 @@ +

                          + + Sentry + +

                          + +# Sentry JavaScript SDK Core + +[![npm version](https://img.shields.io/npm/v/@sentry/core.svg)](https://www.npmjs.com/package/@sentry/core) +[![npm dm](https://img.shields.io/npm/dm/@sentry/core.svg)](https://www.npmjs.com/package/@sentry/core) +[![npm dt](https://img.shields.io/npm/dt/@sentry/core.svg)](https://www.npmjs.com/package/@sentry/core) + +## Links + +- [Official SDK Docs](https://docs.sentry.io/quickstart/) + +## General + +This package contains interface definitions, base classes and utilities for building Sentry JavaScript SDKs, like +`@sentry/node` or `@sentry/browser`. + +Please consider all classes and exported functions and interfaces `internal`. diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/api.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/api.js new file mode 100644 index 0000000..3bc0867 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/api.js @@ -0,0 +1,87 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const dsn = require('./utils/dsn.js'); + +const SENTRY_API_VERSION = '7'; + +/** Returns the prefix to construct Sentry ingestion API endpoints. */ +function getBaseApiEndpoint(dsn) { + const protocol = dsn.protocol ? `${dsn.protocol}:` : ''; + const port = dsn.port ? `:${dsn.port}` : ''; + return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`; +} + +/** Returns the ingest API endpoint for target. */ +function _getIngestEndpoint(dsn) { + return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`; +} + +/** Returns a URL-encoded string with auth config suitable for a query string. */ +function _encodedAuth(dsn, sdkInfo) { + const params = { + sentry_version: SENTRY_API_VERSION, + }; + + if (dsn.publicKey) { + // We send only the minimum set of required information. See + // https://github.com/getsentry/sentry-javascript/issues/2572. + params.sentry_key = dsn.publicKey; + } + + if (sdkInfo) { + params.sentry_client = `${sdkInfo.name}/${sdkInfo.version}`; + } + + return new URLSearchParams(params).toString(); +} + +/** + * Returns the envelope endpoint URL with auth in the query string. + * + * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests. + */ +function getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnel, sdkInfo) { + return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`; +} + +/** Returns the url to the report dialog endpoint. */ +function getReportDialogEndpoint(dsnLike, dialogOptions) { + const dsn$1 = dsn.makeDsn(dsnLike); + if (!dsn$1) { + return ''; + } + + const endpoint = `${getBaseApiEndpoint(dsn$1)}embed/error-page/`; + + let encodedOptions = `dsn=${dsn.dsnToString(dsn$1)}`; + for (const key in dialogOptions) { + if (key === 'dsn') { + continue; + } + + if (key === 'onClose') { + continue; + } + + if (key === 'user') { + const user = dialogOptions.user; + if (!user) { + continue; + } + if (user.name) { + encodedOptions += `&name=${encodeURIComponent(user.name)}`; + } + if (user.email) { + encodedOptions += `&email=${encodeURIComponent(user.email)}`; + } + } else { + encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`; + } + } + + return `${endpoint}?${encodedOptions}`; +} + +exports.getEnvelopeEndpointWithUrlEncodedAuth = getEnvelopeEndpointWithUrlEncodedAuth; +exports.getReportDialogEndpoint = getReportDialogEndpoint; +//# sourceMappingURL=api.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/api.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/api.js.map new file mode 100644 index 0000000..86d07b3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"api.js","sources":["../../src/api.ts"],"sourcesContent":["import type { ReportDialogOptions } from './report-dialog';\nimport type { DsnComponents, DsnLike } from './types-hoist/dsn';\nimport type { SdkInfo } from './types-hoist/sdkinfo';\nimport { dsnToString, makeDsn } from './utils/dsn';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\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: DsnComponents): string {\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: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n const params: Record = {\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 */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string, sdkInfo?: SdkInfo): string {\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(dsnLike: DsnLike, dialogOptions: ReportDialogOptions): string {\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] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n"],"names":["dsn","makeDsn","dsnToString"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/index.js new file mode 100644 index 0000000..d9f7b36 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/index.js @@ -0,0 +1,35 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const carrier = require('../carrier.js'); +const stackStrategy = require('./stackStrategy.js'); + +/** + * @private Private API with no semver guarantees! + * + * Sets the global async context strategy + */ +function setAsyncContextStrategy(strategy) { + // Get main carrier (global for every environment) + const registry = carrier.getMainCarrier(); + const sentry = carrier.getSentryCarrier(registry); + sentry.acs = strategy; +} + +/** + * Get the current async context strategy. + * If none has been setup, the default will be used. + */ +function getAsyncContextStrategy(carrier$1) { + const sentry = carrier.getSentryCarrier(carrier$1); + + if (sentry.acs) { + return sentry.acs; + } + + // Otherwise, use the default one (stack) + return stackStrategy.getStackAsyncContextStrategy(); +} + +exports.getAsyncContextStrategy = getAsyncContextStrategy; +exports.setAsyncContextStrategy = setAsyncContextStrategy; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/index.js.map new file mode 100644 index 0000000..027a11d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../src/asyncContext/index.ts"],"sourcesContent":["import type { Carrier } from './../carrier';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport { getStackAsyncContextStrategy } from './stackStrategy';\nimport type { AsyncContextStrategy } from './types';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\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 */\nexport function getAsyncContextStrategy(carrier: Carrier): AsyncContextStrategy {\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"],"names":["getMainCarrier","getSentryCarrier","carrier","getStackAsyncContextStrategy"],"mappings":";;;;;AAKA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,QAAQ,EAA0C;AAC1F;AACA,EAAE,MAAM,QAAA,GAAWA,sBAAc,EAAE;AACnC,EAAE,MAAM,MAAA,GAASC,wBAAgB,CAAC,QAAQ,CAAC;AAC3C,EAAE,MAAM,CAAC,GAAA,GAAM,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAACC,SAAO,EAAiC;AAChF,EAAE,MAAM,MAAA,GAASD,wBAAgB,CAACC,SAAO,CAAC;;AAE1C,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE;AAClB,IAAI,OAAO,MAAM,CAAC,GAAG;AACrB,EAAE;;AAEF;AACA,EAAE,OAAOC,0CAA4B,EAAE;AACvC;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/stackStrategy.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/stackStrategy.js new file mode 100644 index 0000000..08dbbc0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/stackStrategy.js @@ -0,0 +1,162 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const defaultScopes = require('../defaultScopes.js'); +const scope = require('../scope.js'); +const is = require('../utils/is.js'); +const carrier = require('../carrier.js'); + +/** + * This is an object that holds a stack of scopes. + */ +class AsyncContextStack { + + constructor(scope$1, isolationScope) { + let assignedScope; + if (!scope$1) { + assignedScope = new scope.Scope(); + } else { + assignedScope = scope$1; + } + + let assignedIsolationScope; + if (!isolationScope) { + assignedIsolationScope = new scope.Scope(); + } else { + assignedIsolationScope = isolationScope; + } + + // scope stack for domains or the process + this._stack = [{ scope: assignedScope }]; + this._isolationScope = assignedIsolationScope; + } + + /** + * Fork a scope for the stack. + */ + withScope(callback) { + const scope = this._pushScope(); + + let maybePromiseResult; + try { + maybePromiseResult = callback(scope); + } catch (e) { + this._popScope(); + throw e; + } + + if (is.isThenable(maybePromiseResult)) { + // @ts-expect-error - isThenable returns the wrong type + return maybePromiseResult.then( + res => { + this._popScope(); + return res; + }, + e => { + this._popScope(); + throw e; + }, + ); + } + + this._popScope(); + return maybePromiseResult; + } + + /** + * Get the client of the stack. + */ + getClient() { + return this.getStackTop().client ; + } + + /** + * Returns the scope of the top stack. + */ + getScope() { + return this.getStackTop().scope; + } + + /** + * Get the isolation scope for the stack. + */ + getIsolationScope() { + return this._isolationScope; + } + + /** + * Returns the topmost scope layer in the order domain > local > process. + */ + getStackTop() { + return this._stack[this._stack.length - 1] ; + } + + /** + * Push a scope to the stack. + */ + _pushScope() { + // We want to clone the content of prev scope + const scope = this.getScope().clone(); + this._stack.push({ + client: this.getClient(), + scope, + }); + return scope; + } + + /** + * Pop a scope from the stack. + */ + _popScope() { + if (this._stack.length <= 1) return false; + return !!this._stack.pop(); + } +} + +/** + * Get the global async context stack. + * This will be removed during the v8 cycle and is only here to make migration easier. + */ +function getAsyncContextStack() { + const registry = carrier.getMainCarrier(); + const sentry = carrier.getSentryCarrier(registry); + + return (sentry.stack = sentry.stack || new AsyncContextStack(defaultScopes.getDefaultCurrentScope(), defaultScopes.getDefaultIsolationScope())); +} + +function withScope(callback) { + return getAsyncContextStack().withScope(callback); +} + +function withSetScope(scope, callback) { + const stack = getAsyncContextStack(); + return stack.withScope(() => { + stack.getStackTop().scope = scope; + return callback(scope); + }); +} + +function withIsolationScope(callback) { + return getAsyncContextStack().withScope(() => { + return callback(getAsyncContextStack().getIsolationScope()); + }); +} + +/** + * Get the stack-based async context strategy. + */ +function getStackAsyncContextStrategy() { + return { + withIsolationScope, + withScope, + withSetScope, + withSetIsolationScope: (_isolationScope, callback) => { + return withIsolationScope(callback); + }, + getCurrentScope: () => getAsyncContextStack().getScope(), + getIsolationScope: () => getAsyncContextStack().getIsolationScope(), + }; +} + +exports.AsyncContextStack = AsyncContextStack; +exports.getStackAsyncContextStrategy = getStackAsyncContextStrategy; +//# sourceMappingURL=stackStrategy.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/stackStrategy.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/stackStrategy.js.map new file mode 100644 index 0000000..c26a0c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/asyncContext/stackStrategy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stackStrategy.js","sources":["../../../src/asyncContext/stackStrategy.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes';\nimport { Scope } from '../scope';\nimport { isThenable } from '../utils/is';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport type { AsyncContextStrategy } from './types';\n\ninterface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * This is an object that holds a stack of scopes.\n */\nexport class AsyncContextStack {\n private readonly _stack: [Layer, ...Layer[]];\n private _isolationScope: Scope;\n\n public constructor(scope?: Scope, isolationScope?: Scope) {\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 public withScope(callback: (scope: Scope) => T): T {\n const scope = this._pushScope();\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n this._popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n // @ts-expect-error - isThenable returns the wrong type\n return maybePromiseResult.then(\n res => {\n this._popScope();\n return res;\n },\n e => {\n this._popScope();\n throw e;\n },\n );\n }\n\n this._popScope();\n return maybePromiseResult;\n }\n\n /**\n * Get the client of the stack.\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /**\n * Returns the scope of the top stack.\n */\n public getScope(): Scope {\n return this.getStackTop().scope;\n }\n\n /**\n * Get the isolation scope for the stack.\n */\n public getIsolationScope(): Scope {\n return this._isolationScope;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1] as Layer;\n }\n\n /**\n * Push a scope to the stack.\n */\n private _pushScope(): Scope {\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 private _popScope(): boolean {\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(): AsyncContextStack {\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: (scope: Scope) => T): T {\n return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope(scope: Scope, callback: (scope: Scope) => T): T {\n const stack = getAsyncContextStack();\n return stack.withScope(() => {\n stack.getStackTop().scope = scope;\n return callback(scope);\n });\n}\n\nfunction withIsolationScope(callback: (isolationScope: Scope) => T): T {\n return getAsyncContextStack().withScope(() => {\n return callback(getAsyncContextStack().getIsolationScope());\n });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nexport function getStackAsyncContextStrategy(): AsyncContextStrategy {\n return {\n withIsolationScope,\n withScope,\n withSetScope,\n withSetIsolationScope: (_isolationScope: Scope, callback: (isolationScope: Scope) => T) => {\n return withIsolationScope(callback);\n },\n getCurrentScope: () => getAsyncContextStack().getScope(),\n getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n };\n}\n"],"names":["scope","Scope","isThenable","getMainCarrier","getSentryCarrier","getDefaultCurrentScope","getDefaultIsolationScope"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/attributes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/attributes.js new file mode 100644 index 0000000..03ff0eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/attributes.js @@ -0,0 +1,118 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Type-guard: The attribute object has the shape the official attribute object (value, type, unit). + * https://develop.sentry.dev/sdk/telemetry/scopes/#setting-attributes + */ +function isAttributeObject(maybeObj) { + return ( + typeof maybeObj === 'object' && + maybeObj != null && + !Array.isArray(maybeObj) && + Object.keys(maybeObj).includes('value') + ); +} + +/** + * Converts an attribute value to a typed attribute value. + * + * For now, we intentionally only support primitive values and attribute objects with primitive values. + * If @param useFallback is true, we stringify non-primitive values to a string attribute value. Otherwise + * we return `undefined` for unsupported values. + * + * @param value - The value of the passed attribute. + * @param useFallback - If true, unsupported values will be stringified to a string attribute value. + * Defaults to false. In this case, `undefined` is returned for unsupported values. + * @returns The typed attribute. + */ +function attributeValueToTypedAttributeValue( + rawValue, + useFallback, +) { + const { value, unit } = isAttributeObject(rawValue) ? rawValue : { value: rawValue, unit: undefined }; + const attributeValue = getTypedAttributeValue(value); + const checkedUnit = unit && typeof unit === 'string' ? { unit } : {}; + if (attributeValue) { + return { ...attributeValue, ...checkedUnit }; + } + + if (!useFallback || (useFallback === 'skip-undefined' && value === undefined)) { + return; + } + + // Fallback: stringify the value + // TODO(v11): be smarter here and use String constructor if stringify fails + // (this is a breaking change for already existing attribute values) + let stringValue = ''; + try { + stringValue = JSON.stringify(value) ?? ''; + } catch { + // Do nothing + } + return { + value: stringValue, + type: 'string', + ...checkedUnit, + }; +} + +/** + * Serializes raw attributes to typed attributes as expected in our envelopes. + * + * @param attributes The raw attributes to serialize. + * @param fallback If true, unsupported values will be stringified to a string attribute value. + * Defaults to false. In this case, `undefined` is returned for unsupported values. + * + * @returns The serialized attributes. + */ +function serializeAttributes( + attributes, + fallback = false, +) { + const serializedAttributes = {}; + for (const [key, value] of Object.entries(attributes ?? {})) { + const typedValue = attributeValueToTypedAttributeValue(value, fallback); + if (typedValue) { + serializedAttributes[key] = typedValue; + } + } + return serializedAttributes; +} + +/** + * NOTE: We intentionally do not return anything for non-primitive values: + * - array support will come in the future but if we stringify arrays now, + * sending arrays (unstringified) later will be a subtle breaking change. + * - Objects are not supported yet and product support is still TBD. + * - We still keep the type signature for TypedAttributeValue wider to avoid a + * breaking change once we add support for non-primitive values. + * - Once we go back to supporting arrays and stringifying all other values, + * we already implemented the serialization logic here: + * https://github.com/getsentry/sentry-javascript/pull/18165 + */ +function getTypedAttributeValue(value) { + const primitiveType = + typeof value === 'string' + ? 'string' + : typeof value === 'boolean' + ? 'boolean' + : typeof value === 'number' && !Number.isNaN(value) + ? Number.isInteger(value) + ? 'integer' + : 'double' + : null; + if (primitiveType) { + // @ts-expect-error - TS complains because {@link TypedAttributeValue} is strictly typed to + // avoid setting the wrong `type` on the attribute value. + // In this case, getPrimitiveType already does the check but TS doesn't know that. + // The "clean" alternative is to return an object per `typeof value` case + // but that would require more bundle size + // Therefore, we ignore it. + return { value, type: primitiveType }; + } +} + +exports.attributeValueToTypedAttributeValue = attributeValueToTypedAttributeValue; +exports.isAttributeObject = isAttributeObject; +exports.serializeAttributes = serializeAttributes; +//# sourceMappingURL=attributes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/attributes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/attributes.js.map new file mode 100644 index 0000000..72cf9e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributes.js","sources":["../../src/attributes.ts"],"sourcesContent":["import type { DurationUnit, FractionUnit, InformationUnit } from './types-hoist/measurement';\n\nexport type RawAttributes = T & ValidatedAttributes;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type RawAttribute = T extends { value: any } | { unit: any } ? AttributeObject : T;\n\nexport type Attributes = Record;\n\nexport type AttributeValueType = string | number | boolean | Array | Array | Array;\n\ntype AttributeTypeMap = {\n string: string;\n integer: number;\n double: number;\n boolean: boolean;\n 'string[]': Array;\n 'integer[]': Array;\n 'double[]': Array;\n 'boolean[]': Array;\n};\n\n/* Generates a type from the AttributeTypeMap like:\n | { value: string; type: 'string' }\n | { value: number; type: 'integer' }\n | { value: number; type: 'double' }\n */\ntype AttributeUnion = {\n [K in keyof AttributeTypeMap]: {\n value: AttributeTypeMap[K];\n type: K;\n };\n}[keyof AttributeTypeMap];\n\nexport type TypedAttributeValue = AttributeUnion & { unit?: AttributeUnit };\n\nexport type AttributeObject = {\n value: unknown;\n unit?: AttributeUnit;\n};\n\n// Unfortunately, we loose type safety if we did something like Exclude\n// so therefore we unionize between the three supported unit categories.\ntype AttributeUnit = DurationUnit | InformationUnit | FractionUnit;\n\n/* If an attribute has either a 'value' or 'unit' property, we use the ValidAttributeObject type. */\nexport type ValidatedAttributes = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [K in keyof T]: T[K] extends { value: any } | { unit: any } ? AttributeObject : unknown;\n};\n\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 */\nexport function isAttributeObject(maybeObj: unknown): maybeObj is AttributeObject {\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 */\nexport function attributeValueToTypedAttributeValue(\n rawValue: unknown,\n useFallback?: boolean | 'skip-undefined',\n): TypedAttributeValue | void {\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 */\nexport function serializeAttributes(\n attributes: RawAttributes | undefined,\n fallback: boolean | 'skip-undefined' = false,\n): Attributes {\n const serializedAttributes: Attributes = {};\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: unknown): TypedAttributeValue | void {\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"],"names":[],"mappings":";;AAkDA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,QAAQ,EAAwC;AAClF,EAAE;AACF,IAAI,OAAO,QAAA,KAAa,QAAA;AACxB,IAAI,QAAA,IAAY,IAAA;AAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAA;AAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mCAAmC;AACnD,EAAE,QAAQ;AACV,EAAE,WAAW;AACb,EAA8B;AAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,MAAK,GAAI,iBAAiB,CAAC,QAAQ,CAAA,GAAI,QAAA,GAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAA,EAAW;AACvG,EAAE,MAAM,cAAA,GAAiB,sBAAsB,CAAC,KAAK,CAAC;AACtD,EAAE,MAAM,WAAA,GAAc,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,GAAW,EAAE,IAAA,EAAK,GAAI,EAAE;AACtE,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,aAAa;AAChD,EAAE;;AAEF,EAAE,IAAI,CAAC,WAAA,KAAgB,WAAA,KAAgB,gBAAA,IAAoB,KAAA,KAAU,SAAS,CAAC,EAAE;AACjF,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,EAAE,IAAI,WAAA,GAAc,EAAE;AACtB,EAAE,IAAI;AACN,IAAI,WAAA,GAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA,IAAK,EAAE;AAC7C,EAAE,EAAE,MAAM;AACV;AACA,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,GAAG,WAAW;AAClB,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB;AACnC,EAAE,UAAU;AACZ,EAAE,QAAQ,GAA+B,KAAK;AAC9C,EAAc;AACd,EAAE,MAAM,oBAAoB,GAAe,EAAE;AAC7C,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAA,IAAK,MAAM,CAAC,OAAO,CAAC,UAAA,IAAc,EAAE,CAAC,EAAE;AAC/D,IAAI,MAAM,aAAa,mCAAmC,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC3E,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,oBAAoB,CAAC,GAAG,CAAA,GAAI,UAAU;AAC5C,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,oBAAoB;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAuC;AAC5E,EAAE,MAAM,aAAA;AACR,IAAI,OAAO,UAAU;AACrB,QAAQ;AACR,QAAQ,OAAO,KAAA,KAAU;AACzB,UAAU;AACV,UAAU,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;AAC1D,YAAY,MAAM,CAAC,SAAS,CAAC,KAAK;AAClC,cAAc;AACd,cAAc;AACd,YAAY,IAAI;AAChB,EAAE,IAAI,aAAa,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe;AACzC,EAAE;AACF;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/breadcrumbs.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/breadcrumbs.js new file mode 100644 index 0000000..361f372 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/breadcrumbs.js @@ -0,0 +1,45 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('./currentScopes.js'); +const debugLogger = require('./utils/debug-logger.js'); +const time = require('./utils/time.js'); + +/** + * Default maximum number of breadcrumbs added to an event. Can be overwritten + * with {@link Options.maxBreadcrumbs}. + */ +const DEFAULT_BREADCRUMBS = 100; + +/** + * Records a new breadcrumb which will be attached to future events. + * + * Breadcrumbs will be added to subsequent events to provide more context on + * user's actions prior to an error or crash. + */ +function addBreadcrumb(breadcrumb, hint) { + const client = currentScopes.getClient(); + const isolationScope = currentScopes.getIsolationScope(); + + if (!client) return; + + const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions(); + + if (maxBreadcrumbs <= 0) return; + + const timestamp = time.dateTimestampInSeconds(); + const mergedBreadcrumb = { timestamp, ...breadcrumb }; + const finalBreadcrumb = beforeBreadcrumb + ? debugLogger.consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) + : mergedBreadcrumb; + + if (finalBreadcrumb === null) return; + + if (client.emit) { + client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint); + } + + isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs); +} + +exports.addBreadcrumb = addBreadcrumb; +//# sourceMappingURL=breadcrumbs.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/breadcrumbs.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/breadcrumbs.js.map new file mode 100644 index 0000000..bfd54f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/breadcrumbs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"breadcrumbs.js","sources":["../../src/breadcrumbs.ts"],"sourcesContent":["import { getClient, getIsolationScope } from './currentScopes';\nimport type { Breadcrumb, BreadcrumbHint } from './types-hoist/breadcrumb';\nimport { consoleSandbox } from './utils/debug-logger';\nimport { dateTimestampInSeconds } from './utils/time';\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 */\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\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"],"names":["getClient","getIsolationScope","dateTimestampInSeconds","consoleSandbox"],"mappings":";;;;;;AAKA;AACA;AACA;AACA;AACA,MAAM,mBAAA,GAAsB,GAAG;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,UAAU,EAAc,IAAI,EAAyB;AACnF,EAAE,MAAM,MAAA,GAASA,uBAAS,EAAE;AAC5B,EAAE,MAAM,cAAA,GAAiBC,+BAAiB,EAAE;;AAE5C,EAAE,IAAI,CAAC,MAAM,EAAE;;AAEf,EAAE,MAAM,EAAE,gBAAA,GAAmB,IAAI,EAAE,cAAA,GAAiB,mBAAA,KAAwB,MAAM,CAAC,UAAU,EAAE;;AAE/F,EAAE,IAAI,cAAA,IAAkB,CAAC,EAAE;;AAE3B,EAAE,MAAM,SAAA,GAAYC,2BAAsB,EAAE;AAC5C,EAAE,MAAM,mBAAmB,EAAE,SAAS,EAAE,GAAG,YAAY;AACvD,EAAE,MAAM,kBAAkB;AAC1B,MAAMC,0BAAc,CAAC,MAAM,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACnE,MAAM,gBAAgB;;AAEtB,EAAE,IAAI,eAAA,KAAoB,IAAI,EAAE;;AAEhC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,eAAe,EAAE,IAAI,CAAC;AAC7D,EAAE;;AAEF,EAAE,cAAc,CAAC,aAAa,CAAC,eAAe,EAAE,cAAc,CAAC;AAC/D;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/carrier.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/carrier.js new file mode 100644 index 0000000..ad3cd4a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/carrier.js @@ -0,0 +1,61 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const version = require('./utils/version.js'); +const worldwide = require('./utils/worldwide.js'); + +/** + * An object that contains globally accessible properties and maintains a scope stack. + * @hidden + */ + +/** + * Returns the global shim registry. + * + * FIXME: This function is problematic, because despite always returning a valid Carrier, + * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check + * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there. + **/ +function getMainCarrier() { + // This ensures a Sentry carrier exists + getSentryCarrier(worldwide.GLOBAL_OBJ); + return worldwide.GLOBAL_OBJ; +} + +/** Will either get the existing sentry carrier, or create a new one. */ +function getSentryCarrier(carrier) { + const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {}); + + // For now: First SDK that sets the .version property wins + __SENTRY__.version = __SENTRY__.version || version.SDK_VERSION; + + // Intentionally populating and returning the version of "this" SDK instance + // rather than what's set in .version so that "this" SDK always gets its carrier + return (__SENTRY__[version.SDK_VERSION] = __SENTRY__[version.SDK_VERSION] || {}); +} + +/** + * Returns a global singleton contained in the global `__SENTRY__[]` object. + * + * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory + * function and added to the `__SENTRY__` object. + * + * @param name name of the global singleton on __SENTRY__ + * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__` + * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value + * @returns the singleton + */ +function getGlobalSingleton( + name, + creator, + obj = worldwide.GLOBAL_OBJ, +) { + const __SENTRY__ = (obj.__SENTRY__ = obj.__SENTRY__ || {}); + const carrier = (__SENTRY__[version.SDK_VERSION] = __SENTRY__[version.SDK_VERSION] || {}); + // 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 + return carrier[name] || (carrier[name] = creator()); +} + +exports.getGlobalSingleton = getGlobalSingleton; +exports.getMainCarrier = getMainCarrier; +exports.getSentryCarrier = getSentryCarrier; +//# sourceMappingURL=carrier.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/carrier.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/carrier.js.map new file mode 100644 index 0000000..bdec222 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/carrier.js.map @@ -0,0 +1 @@ +{"version":3,"file":"carrier.js","sources":["../../src/carrier.ts"],"sourcesContent":["import type { AsyncContextStack } from './asyncContext/stackStrategy';\nimport type { AsyncContextStrategy } from './asyncContext/types';\nimport type { Client } from './client';\nimport type { Scope } from './scope';\nimport type { SerializedLog } from './types-hoist/log';\nimport type { SerializedMetric } from './types-hoist/metric';\nimport { SDK_VERSION } from './utils/version';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: VersionedCarrier;\n}\n\ntype VersionedCarrier = {\n version?: string;\n} & Record, SentryCarrier>;\n\nexport interface SentryCarrier {\n acs?: AsyncContextStrategy;\n stack?: AsyncContextStack;\n\n globalScope?: Scope;\n defaultIsolationScope?: Scope;\n defaultCurrentScope?: Scope;\n loggerSettings?: { enabled: boolean };\n /**\n * A map of Sentry clients to their log buffers.\n * This is used to store logs that are sent to Sentry.\n */\n clientToLogBufferMap?: WeakMap>;\n\n /**\n * A map of Sentry clients to their metric buffers.\n * This is used to store metrics that are sent to Sentry.\n */\n clientToMetricBufferMap?: WeakMap>;\n\n /** Overwrites TextEncoder used in `@sentry/core`, need for `react-native@0.73` and older */\n encodePolyfill?: (input: string) => Uint8Array;\n /** Overwrites TextDecoder used in `@sentry/core`, need for `react-native@0.73` and older */\n decodePolyfill?: (input: Uint8Array) => string;\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 **/\nexport function getMainCarrier(): Carrier {\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. */\nexport function getSentryCarrier(carrier: Carrier): SentryCarrier {\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 */\nexport function getGlobalSingleton(\n name: Prop,\n creator: () => NonNullable,\n obj = GLOBAL_OBJ,\n): NonNullable {\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"],"names":["GLOBAL_OBJ","SDK_VERSION"],"mappings":";;;;;AASA;AACA;AACA;AACA;;AAmCA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,GAAY;AAC1C;AACA,EAAE,gBAAgB,CAACA,oBAAU,CAAC;AAC9B,EAAE,OAAOA,oBAAU;AACnB;;AAEA;AACO,SAAS,gBAAgB,CAAC,OAAO,EAA0B;AAClE,EAAE,MAAM,UAAA,IAAc,OAAO,CAAC,UAAA,GAAa,OAAO,CAAC,UAAA,IAAc,EAAE,CAAC;;AAEpE;AACA,EAAE,UAAU,CAAC,OAAA,GAAU,UAAU,CAAC,OAAA,IAAWC,mBAAW;;AAExD;AACA;AACA,EAAE,QAAQ,UAAU,CAACA,mBAAW,CAAA,GAAI,UAAU,CAACA,mBAAW,CAAA,IAAK,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB;AAClC,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,GAAA,GAAMD,oBAAU;AAClB,EAAoC;AACpC,EAAE,MAAM,UAAA,IAAc,GAAG,CAAC,UAAA,GAAa,GAAG,CAAC,UAAA,IAAc,EAAE,CAAC;AAC5D,EAAE,MAAM,OAAA,IAAW,UAAU,CAACC,mBAAW,CAAA,GAAI,UAAU,CAACA,mBAAW,CAAA,IAAK,EAAE,CAAC;AAC3E;AACA,EAAE,OAAO,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,CAAA,GAAI,OAAO,EAAE,CAAC;AACrD;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/checkin.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/checkin.js new file mode 100644 index 0000000..a446586 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/checkin.js @@ -0,0 +1,47 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const dsn = require('./utils/dsn.js'); +const envelope = require('./utils/envelope.js'); + +/** + * Create envelope from check in item. + */ +function createCheckInEnvelope( + checkIn, + dynamicSamplingContext, + metadata, + tunnel, + dsn$1, +) { + const headers = { + sent_at: new Date().toISOString(), + }; + + if (metadata?.sdk) { + headers.sdk = { + name: metadata.sdk.name, + version: metadata.sdk.version, + }; + } + + if (!!tunnel && !!dsn$1) { + headers.dsn = dsn.dsnToString(dsn$1); + } + + if (dynamicSamplingContext) { + headers.trace = dynamicSamplingContext ; + } + + const item = createCheckInEnvelopeItem(checkIn); + return envelope.createEnvelope(headers, [item]); +} + +function createCheckInEnvelopeItem(checkIn) { + const checkInHeaders = { + type: 'check_in', + }; + return [checkInHeaders, checkIn]; +} + +exports.createCheckInEnvelope = createCheckInEnvelope; +//# sourceMappingURL=checkin.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/checkin.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/checkin.js.map new file mode 100644 index 0000000..3762de6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/checkin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"checkin.js","sources":["../../src/checkin.ts"],"sourcesContent":["import type { SerializedCheckIn } from './types-hoist/checkin';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type { CheckInEnvelope, CheckInItem, DynamicSamplingContext } from './types-hoist/envelope';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport { dsnToString } from './utils/dsn';\nimport { createEnvelope } from './utils/envelope';\n\n/**\n * Create envelope from check in item.\n */\nexport function createCheckInEnvelope(\n checkIn: SerializedCheckIn,\n dynamicSamplingContext?: Partial,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): CheckInEnvelope {\n const headers: CheckInEnvelope[0] = {\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 as DynamicSamplingContext;\n }\n\n const item = createCheckInEnvelopeItem(checkIn);\n return createEnvelope(headers, [item]);\n}\n\nfunction createCheckInEnvelopeItem(checkIn: SerializedCheckIn): CheckInItem {\n const checkInHeaders: CheckInItem[0] = {\n type: 'check_in',\n };\n return [checkInHeaders, checkIn];\n}\n"],"names":["dsn","dsnToString","createEnvelope"],"mappings":";;;;;AAOA;AACA;AACA;AACO,SAAS,qBAAqB;AACrC,EAAE,OAAO;AACT,EAAE,sBAAsB;AACxB,EAAE,QAAQ;AACV,EAAE,MAAM;AACR,EAAEA,KAAG;AACL,EAAmB;AACnB,EAAE,MAAM,OAAO,GAAuB;AACtC,IAAI,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACrC,GAAG;;AAEH,EAAE,IAAI,QAAQ,EAAE,GAAG,EAAE;AACrB,IAAI,OAAO,CAAC,GAAA,GAAM;AAClB,MAAM,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI;AAC7B,MAAM,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO;AACnC,KAAK;AACL,EAAE;;AAEF,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAACA,KAAG,EAAE;AACzB,IAAI,OAAO,CAAC,GAAA,GAAMC,eAAW,CAACD,KAAG,CAAC;AAClC,EAAE;;AAEF,EAAE,IAAI,sBAAsB,EAAE;AAC9B,IAAI,OAAO,CAAC,KAAA,GAAQ,sBAAA;AACpB,EAAE;;AAEF,EAAE,MAAM,IAAA,GAAO,yBAAyB,CAAC,OAAO,CAAC;AACjD,EAAE,OAAOE,uBAAc,CAAkB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACzD;;AAEA,SAAS,yBAAyB,CAAC,OAAO,EAAkC;AAC5E,EAAE,MAAM,cAAc,GAAmB;AACzC,IAAI,IAAI,EAAE,UAAU;AACpB,GAAG;AACH,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC;AAClC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/client.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/client.js new file mode 100644 index 0000000..492d897 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/client.js @@ -0,0 +1,1158 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const api = require('./api.js'); +const constants = require('./constants.js'); +const currentScopes = require('./currentScopes.js'); +const debugBuild = require('./debug-build.js'); +const envelope = require('./envelope.js'); +const integration = require('./integration.js'); +const internal = require('./logs/internal.js'); +const internal$1 = require('./metrics/internal.js'); +const session = require('./session.js'); +const dynamicSamplingContext = require('./tracing/dynamicSamplingContext.js'); +const base = require('./transports/base.js'); +const clientreport = require('./utils/clientreport.js'); +const debugLogger = require('./utils/debug-logger.js'); +const dsn = require('./utils/dsn.js'); +const envelope$1 = require('./utils/envelope.js'); +const eventUtils = require('./utils/eventUtils.js'); +const is = require('./utils/is.js'); +const merge = require('./utils/merge.js'); +const misc = require('./utils/misc.js'); +const parseSampleRate = require('./utils/parseSampleRate.js'); +const prepareEvent = require('./utils/prepareEvent.js'); +const promisebuffer = require('./utils/promisebuffer.js'); +const randomSafeContext = require('./utils/randomSafeContext.js'); +const shouldIgnoreSpan = require('./utils/should-ignore-span.js'); +const spanUtils = require('./utils/spanUtils.js'); +const syncpromise = require('./utils/syncpromise.js'); +const transactionEvent = require('./utils/transactionEvent.js'); + +/* eslint-disable max-lines */ + +const ALREADY_SEEN_ERROR = "Not capturing exception because it's already been captured."; +const MISSING_RELEASE_FOR_SESSION_ERROR = 'Discarded session because of missing or non-string release'; + +const INTERNAL_ERROR_SYMBOL = Symbol.for('SentryInternalError'); +const DO_NOT_SEND_EVENT_SYMBOL = Symbol.for('SentryDoNotSendEventError'); + +// Default interval for flushing logs and metrics (5 seconds) +const DEFAULT_FLUSH_INTERVAL = 5000; + +function _makeInternalError(message) { + return { + message, + [INTERNAL_ERROR_SYMBOL]: true, + }; +} + +function _makeDoNotSendEventError(message) { + return { + message, + [DO_NOT_SEND_EVENT_SYMBOL]: true, + }; +} + +function _isInternalError(error) { + return !!error && typeof error === 'object' && INTERNAL_ERROR_SYMBOL in error; +} + +function _isDoNotSendEventError(error) { + return !!error && typeof error === 'object' && DO_NOT_SEND_EVENT_SYMBOL in error; +} + +/** + * Sets up weight-based flushing for logs or metrics. + * This helper function encapsulates the common pattern of: + * 1. Tracking accumulated weight of items + * 2. Flushing when weight exceeds threshold (800KB) + * 3. Flushing after timeout period from the first item + * + * Uses closure variables to track weight and timeout state. + */ +function setupWeightBasedFlushing + +( + client, + afterCaptureHook, + flushHook, + estimateSizeFn, + flushFn, +) { + // Track weight and timeout in closure variables + let weight = 0; + let flushTimeout; + let isTimerActive = false; + + // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe + client.on(flushHook, () => { + weight = 0; + clearTimeout(flushTimeout); + isTimerActive = false; + }); + + // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe + client.on(afterCaptureHook, (item) => { + weight += estimateSizeFn(item); + + // We flush the buffer if it exceeds 0.8 MB + // The weight is a rough estimate, so we flush way before the payload gets too big. + if (weight >= 800000) { + flushFn(client); + } else if (!isTimerActive) { + // Only start timer if one isn't already running. + // This prevents flushing being delayed by items that arrive close to the timeout limit + // and thus resetting the flushing timeout and delaying items being flushed. + isTimerActive = true; + flushTimeout = setTimeout(() => { + flushFn(client); + // Note: isTimerActive is reset by the flushHook handler above, not here, + // to avoid race conditions when new items arrive during the flush. + }, DEFAULT_FLUSH_INTERVAL); + } + }); + + client.on('flush', () => { + flushFn(client); + }); +} + +/** + * Base implementation for all JavaScript SDK clients. + * + * Call the constructor with the corresponding options + * specific to the client subclass. To access these options later, use + * {@link Client.getOptions}. + * + * If a Dsn is specified in the options, it will be parsed and stored. Use + * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is + * invalid, the constructor will throw a {@link SentryException}. Note that + * without a valid Dsn, the SDK will not send any events to Sentry. + * + * Before sending an event, it is passed through + * {@link Client._prepareEvent} to add SDK information and scope data + * (breadcrumbs and context). To add more custom information, override this + * method and extend the resulting prepared event. + * + * To issue automatically created events (e.g. via instrumentation), use + * {@link Client.captureEvent}. It will prepare the event and pass it through + * the callback lifecycle. To issue auto-breadcrumbs, use + * {@link Client.addBreadcrumb}. + * + * @example + * class NodeClient extends Client { + * public constructor(options: NodeOptions) { + * super(options); + * } + * + * // ... + * } + */ +class Client { + /** Options passed to the SDK. */ + + /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */ + + /** Array of set up integrations. */ + + /** Number of calls being processed */ + + /** Holds flushable */ + + // eslint-disable-next-line @typescript-eslint/ban-types + + /** + * Initializes this client instance. + * + * @param options Options for the client. + */ + constructor(options) { + this._options = options; + this._integrations = {}; + this._numProcessing = 0; + this._outcomes = {}; + this._hooks = {}; + this._eventProcessors = []; + this._promiseBuffer = promisebuffer.makePromiseBuffer(options.transportOptions?.bufferSize ?? base.DEFAULT_TRANSPORT_BUFFER_SIZE); + + if (options.dsn) { + this._dsn = dsn.makeDsn(options.dsn); + } else { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('No DSN provided, client will not send events.'); + } + + if (this._dsn) { + const url = api.getEnvelopeEndpointWithUrlEncodedAuth( + this._dsn, + options.tunnel, + options._metadata ? options._metadata.sdk : undefined, + ); + this._transport = options.transport({ + tunnel: this._options.tunnel, + recordDroppedEvent: this.recordDroppedEvent.bind(this), + ...options.transportOptions, + url, + }); + } + + // Backfill enableLogs option from _experiments.enableLogs + // TODO(v11): Remove or change default value + // eslint-disable-next-line deprecation/deprecation + this._options.enableLogs = this._options.enableLogs ?? this._options._experiments?.enableLogs; + + // Setup log flushing with weight and timeout tracking + if (this._options.enableLogs) { + setupWeightBasedFlushing(this, 'afterCaptureLog', 'flushLogs', estimateLogSizeInBytes, internal._INTERNAL_flushLogsBuffer); + } + + // todo(v11): Remove the experimental flag + // eslint-disable-next-line deprecation/deprecation + const enableMetrics = this._options.enableMetrics ?? this._options._experiments?.enableMetrics ?? true; + + // Setup metric flushing with weight and timeout tracking + if (enableMetrics) { + setupWeightBasedFlushing( + this, + 'afterCaptureMetric', + 'flushMetrics', + estimateMetricSizeInBytes, + internal$1._INTERNAL_flushMetricsBuffer, + ); + } + } + + /** + * Captures an exception event and sends it to Sentry. + * + * Unlike `captureException` exported from every SDK, this method requires that you pass it the current scope. + */ + captureException(exception, hint, scope) { + const eventId = misc.uuid4(); + + // ensure we haven't captured this very object before + if (misc.checkOrSetAlreadyCaught(exception)) { + debugBuild.DEBUG_BUILD && debugLogger.debug.log(ALREADY_SEEN_ERROR); + return eventId; + } + + const hintWithEventId = { + event_id: eventId, + ...hint, + }; + + this._process( + () => + this.eventFromException(exception, hintWithEventId) + .then(event => this._captureEvent(event, hintWithEventId, scope)) + .then(res => res), + 'error', + ); + + return hintWithEventId.event_id; + } + + /** + * Captures a message event and sends it to Sentry. + * + * Unlike `captureMessage` exported from every SDK, this method requires that you pass it the current scope. + */ + captureMessage( + message, + level, + hint, + currentScope, + ) { + const hintWithEventId = { + event_id: misc.uuid4(), + ...hint, + }; + + const eventMessage = is.isParameterizedString(message) ? message : String(message); + const isMessage = is.isPrimitive(message); + const promisedEvent = isMessage + ? this.eventFromMessage(eventMessage, level, hintWithEventId) + : this.eventFromException(message, hintWithEventId); + + this._process( + () => promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)), + isMessage ? 'unknown' : 'error', + ); + + return hintWithEventId.event_id; + } + + /** + * Captures a manually created event and sends it to Sentry. + * + * Unlike `captureEvent` exported from every SDK, this method requires that you pass it the current scope. + */ + captureEvent(event, hint, currentScope) { + const eventId = misc.uuid4(); + + // ensure we haven't captured this very object before + if (hint?.originalException && misc.checkOrSetAlreadyCaught(hint.originalException)) { + debugBuild.DEBUG_BUILD && debugLogger.debug.log(ALREADY_SEEN_ERROR); + return eventId; + } + + const hintWithEventId = { + event_id: eventId, + ...hint, + }; + + const sdkProcessingMetadata = event.sdkProcessingMetadata || {}; + const capturedSpanScope = sdkProcessingMetadata.capturedSpanScope; + const capturedSpanIsolationScope = sdkProcessingMetadata.capturedSpanIsolationScope; + const dataCategory = getDataCategoryByType(event.type); + + this._process( + () => this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope, capturedSpanIsolationScope), + dataCategory, + ); + + return hintWithEventId.event_id; + } + + /** + * Captures a session. + */ + captureSession(session$1) { + this.sendSession(session$1); + // After sending, we set init false to indicate it's not the first occurrence + session.updateSession(session$1, { init: false }); + } + + /** + * Create a cron monitor check in and send it to Sentry. This method is not available on all clients. + * + * @param checkIn An object that describes a check in. + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + * @param scope An optional scope containing event metadata. + * @returns A string representing the id of the check in. + */ + + /** + * Get the current Dsn. + */ + getDsn() { + return this._dsn; + } + + /** + * Get the current options. + */ + getOptions() { + return this._options; + } + + /** + * Get the SDK metadata. + * @see SdkMetadata + */ + getSdkMetadata() { + return this._options._metadata; + } + + /** + * Returns the transport that is used by the client. + * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent. + */ + getTransport() { + return this._transport; + } + + /** + * Wait for all events to be sent or the timeout to expire, whichever comes first. + * + * @param timeout Maximum time in ms the client should wait for events to be flushed. Omitting this parameter will + * cause the client to wait until all events are sent before resolving the promise. + * @returns A promise that will resolve with `true` if all events are sent before the timeout, or `false` if there are + * still events in the queue when the timeout is reached. + */ + // @ts-expect-error - PromiseLike is a subset of Promise + async flush(timeout) { + const transport = this._transport; + if (!transport) { + return true; + } + + this.emit('flush'); + + const clientFinished = await this._isClientDoneProcessing(timeout); + const transportFlushed = await transport.flush(timeout); + + return clientFinished && transportFlushed; + } + + /** + * Flush the event queue and set the client to `enabled = false`. See {@link Client.flush}. + * + * @param {number} timeout Maximum time in ms the client should wait before shutting down. Omitting this parameter will cause + * the client to wait until all events are sent before disabling itself. + * @returns {Promise} A promise which resolves to `true` if the flush completes successfully before the timeout, or `false` if + * it doesn't. + */ + // @ts-expect-error - PromiseLike is a subset of Promise + async close(timeout) { + const result = await this.flush(timeout); + this.getOptions().enabled = false; + this.emit('close'); + return result; + } + + /** + * Get all installed event processors. + */ + getEventProcessors() { + return this._eventProcessors; + } + + /** + * Adds an event processor that applies to any event processed by this client. + */ + addEventProcessor(eventProcessor) { + this._eventProcessors.push(eventProcessor); + } + + /** + * Initialize this client. + * Call this after the client was set on a scope. + */ + init() { + if ( + this._isEnabled() || + // Force integrations to be setup even if no DSN was set when we have + // Spotlight enabled. This is particularly important for browser as we + // don't support the `spotlight` option there and rely on the users + // adding the `spotlightBrowserIntegration()` to their integrations which + // wouldn't get initialized with the check below when there's no DSN set. + this._options.integrations.some(({ name }) => name.startsWith('Spotlight')) + ) { + this._setupIntegrations(); + } + } + + /** + * Gets an installed integration by its name. + * + * @returns {Integration|undefined} The installed integration or `undefined` if no integration with that `name` was installed. + */ + getIntegrationByName(integrationName) { + return this._integrations[integrationName] ; + } + + /** + * Add an integration to the client. + * This can be used to e.g. lazy load integrations. + * In most cases, this should not be necessary, + * and you're better off just passing the integrations via `integrations: []` at initialization time. + * However, if you find the need to conditionally load & add an integration, you can use `addIntegration` to do so. + */ + addIntegration(integration$1) { + const isAlreadyInstalled = this._integrations[integration$1.name]; + + // This hook takes care of only installing if not already installed + integration.setupIntegration(this, integration$1, this._integrations); + // Here we need to check manually to make sure to not run this multiple times + if (!isAlreadyInstalled) { + integration.afterSetupIntegrations(this, [integration$1]); + } + } + + /** + * Send a fully prepared event to Sentry. + */ + sendEvent(event, hint = {}) { + this.emit('beforeSendEvent', event, hint); + + let env = envelope.createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel); + + for (const attachment of hint.attachments || []) { + env = envelope$1.addItemToEnvelope(env, envelope$1.createAttachmentEnvelopeItem(attachment)); + } + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.sendEnvelope(env).then(sendResponse => this.emit('afterSendEvent', event, sendResponse)); + } + + /** + * Send a session or session aggregrates to Sentry. + */ + sendSession(session) { + // Backfill release and environment on session + const { release: clientReleaseOption, environment: clientEnvironmentOption = constants.DEFAULT_ENVIRONMENT } = this._options; + if ('aggregates' in session) { + const sessionAttrs = session.attrs || {}; + if (!sessionAttrs.release && !clientReleaseOption) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR); + return; + } + sessionAttrs.release = sessionAttrs.release || clientReleaseOption; + sessionAttrs.environment = sessionAttrs.environment || clientEnvironmentOption; + session.attrs = sessionAttrs; + } else { + if (!session.release && !clientReleaseOption) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR); + return; + } + session.release = session.release || clientReleaseOption; + session.environment = session.environment || clientEnvironmentOption; + } + + this.emit('beforeSendSession', session); + + const env = envelope.createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel); + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.sendEnvelope(env); + } + + /** + * Record on the client that an event got dropped (ie, an event that will not be sent to Sentry). + */ + recordDroppedEvent(reason, category, count = 1) { + if (this._options.sendClientReports) { + // We want to track each category (error, transaction, session, replay_event) separately + // but still keep the distinction between different type of outcomes. + // We could use nested maps, but it's much easier to read and type this way. + // A correct type for map-based implementation if we want to go that route + // would be `Partial>>>` + // With typescript 4.1 we could even use template literal types + const key = `${reason}:${category}`; + debugBuild.DEBUG_BUILD && debugLogger.debug.log(`Recording outcome: "${key}"${count > 1 ? ` (${count} times)` : ''}`); + this._outcomes[key] = (this._outcomes[key] || 0) + count; + } + } + + /* eslint-disable @typescript-eslint/unified-signatures */ + /** + * Register a callback for whenever a span is started. + * Receives the span as argument. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + + /** + * Register a hook on this client. + */ + on(hook, callback) { + const hookCallbacks = (this._hooks[hook] = this._hooks[hook] || new Set()); + + // Wrap the callback in a function so that registering the same callback instance multiple + // times results in the callback being called multiple times. + // @ts-expect-error - The `callback` type is correct and must be a function due to the + // individual, specific overloads of this function. + // eslint-disable-next-line @typescript-eslint/ban-types + const uniqueCallback = (...args) => callback(...args); + + hookCallbacks.add(uniqueCallback); + + // This function returns a callback execution handler that, when invoked, + // deregisters a callback. This is crucial for managing instances where callbacks + // need to be unregistered to prevent self-referencing in callback closures, + // ensuring proper garbage collection. + return () => { + hookCallbacks.delete(uniqueCallback); + }; + } + + /** Fire a hook whenever a span starts. */ + + /** + * Emit a hook that was previously registered via `on()`. + */ + emit(hook, ...rest) { + const callbacks = this._hooks[hook]; + if (callbacks) { + callbacks.forEach(callback => callback(...rest)); + } + } + + /** + * Send an envelope to Sentry. + */ + // @ts-expect-error - PromiseLike is a subset of Promise + async sendEnvelope(envelope) { + this.emit('beforeEnvelope', envelope); + + if (this._isEnabled() && this._transport) { + try { + return await this._transport.send(envelope); + } catch (reason) { + debugBuild.DEBUG_BUILD && debugLogger.debug.error('Error while sending envelope:', reason); + return {}; + } + } + + debugBuild.DEBUG_BUILD && debugLogger.debug.error('Transport disabled'); + return {}; + } + + /* eslint-enable @typescript-eslint/unified-signatures */ + + /** Setup integrations for this client. */ + _setupIntegrations() { + const { integrations } = this._options; + this._integrations = integration.setupIntegrations(this, integrations); + integration.afterSetupIntegrations(this, integrations); + } + + /** Updates existing session based on the provided event */ + _updateSessionFromEvent(session$1, event) { + // initially, set `crashed` based on the event level and update from exceptions if there are any later on + let crashed = event.level === 'fatal'; + let errored = false; + const exceptions = event.exception?.values; + + if (exceptions) { + errored = true; + // reset crashed to false if there are exceptions, to ensure `mechanism.handled` is respected. + crashed = false; + + for (const ex of exceptions) { + if (ex.mechanism?.handled === false) { + crashed = true; + break; + } + } + } + + // A session is updated and that session update is sent in only one of the two following scenarios: + // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update + // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update + const sessionNonTerminal = session$1.status === 'ok'; + const shouldUpdateAndSend = (sessionNonTerminal && session$1.errors === 0) || (sessionNonTerminal && crashed); + + if (shouldUpdateAndSend) { + session.updateSession(session$1, { + ...(crashed && { status: 'crashed' }), + errors: session$1.errors || Number(errored || crashed), + }); + this.captureSession(session$1); + } + } + + /** + * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying + * "no" (resolving to `false`) in order to give the client a chance to potentially finish first. + * + * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not + * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to + * `true`. + * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and + * `false` otherwise + */ + async _isClientDoneProcessing(timeout) { + let ticked = 0; + + // if no timeout is provided, we wait "forever" until everything is processed + while (!timeout || ticked < timeout) { + await new Promise(resolve => setTimeout(resolve, 1)); + + if (!this._numProcessing) { + return true; + } + ticked++; + } + + return false; + } + + /** Determines whether this SDK is enabled and a transport is present. */ + _isEnabled() { + return this.getOptions().enabled !== false && this._transport !== undefined; + } + + /** + * Adds common information to events. + * + * The information includes release and environment from `options`, + * breadcrumbs and context (extra, tags and user) from the scope. + * + * Information that is already present in the event is never overwritten. For + * nested objects, such as the context, keys are merged. + * + * @param event The original event. + * @param hint May contain additional information about the original exception. + * @param currentScope A scope containing event metadata. + * @returns A new event with more information. + */ + _prepareEvent( + event, + hint, + currentScope, + isolationScope, + ) { + const options = this.getOptions(); + const integrations = Object.keys(this._integrations); + if (!hint.integrations && integrations?.length) { + hint.integrations = integrations; + } + + this.emit('preprocessEvent', event, hint); + + if (!event.type) { + isolationScope.setLastEventId(event.event_id || hint.event_id); + } + + return prepareEvent.prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => { + if (evt === null) { + return evt; + } + + this.emit('postprocessEvent', evt, hint); + + evt.contexts = { + trace: currentScopes.getTraceContextFromScope(currentScope), + ...evt.contexts, + }; + + const dynamicSamplingContext$1 = dynamicSamplingContext.getDynamicSamplingContextFromScope(this, currentScope); + + evt.sdkProcessingMetadata = { + dynamicSamplingContext: dynamicSamplingContext$1, + ...evt.sdkProcessingMetadata, + }; + + return evt; + }); + } + + /** + * Processes the event and logs an error in case of rejection + * @param event + * @param hint + * @param scope + */ + _captureEvent( + event, + hint = {}, + currentScope = currentScopes.getCurrentScope(), + isolationScope = currentScopes.getIsolationScope(), + ) { + if (debugBuild.DEBUG_BUILD && isErrorEvent(event)) { + debugLogger.debug.log(`Captured error event \`${eventUtils.getPossibleEventMessages(event)[0] || ''}\``); + } + + return this._processEvent(event, hint, currentScope, isolationScope).then( + finalEvent => { + return finalEvent.event_id; + }, + reason => { + if (debugBuild.DEBUG_BUILD) { + if (_isDoNotSendEventError(reason)) { + debugLogger.debug.log(reason.message); + } else if (_isInternalError(reason)) { + debugLogger.debug.warn(reason.message); + } else { + debugLogger.debug.warn(reason); + } + } + return undefined; + }, + ); + } + + /** + * Processes an event (either error or message) and sends it to Sentry. + * + * This also adds breadcrumbs and context information to the event. However, + * platform specific meta data (such as the User's IP address) must be added + * by the SDK implementor. + * + * + * @param event The event to send to Sentry. + * @param hint May contain additional information about the original exception. + * @param currentScope A scope containing event metadata. + * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send. + */ + _processEvent( + event, + hint, + currentScope, + isolationScope, + ) { + const options = this.getOptions(); + const { sampleRate } = options; + + const isTransaction = isTransactionEvent(event); + const isError = isErrorEvent(event); + const eventType = event.type || 'error'; + const beforeSendLabel = `before send for type \`${eventType}\``; + + // 1.0 === 100% events are sent + // 0.0 === 0% events are sent + // Sampling for transaction happens somewhere else + const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate.parseSampleRate(sampleRate); + if (isError && typeof parsedSampleRate === 'number' && randomSafeContext.safeMathRandom() > parsedSampleRate) { + this.recordDroppedEvent('sample_rate', 'error'); + return syncpromise.rejectedSyncPromise( + _makeDoNotSendEventError( + `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`, + ), + ); + } + + const dataCategory = getDataCategoryByType(event.type); + + return this._prepareEvent(event, hint, currentScope, isolationScope) + .then(prepared => { + if (prepared === null) { + this.recordDroppedEvent('event_processor', dataCategory); + throw _makeDoNotSendEventError('An event processor returned `null`, will not send event.'); + } + + const isInternalException = hint.data && (hint.data ).__sentry__ === true; + if (isInternalException) { + return prepared; + } + + const result = processBeforeSend(this, options, prepared, hint); + return _validateBeforeSendResult(result, beforeSendLabel); + }) + .then(processedEvent => { + if (processedEvent === null) { + this.recordDroppedEvent('before_send', dataCategory); + if (isTransaction) { + const spans = event.spans || []; + // the transaction itself counts as one span, plus all the child spans that are added + const spanCount = 1 + spans.length; + this.recordDroppedEvent('before_send', 'span', spanCount); + } + throw _makeDoNotSendEventError(`${beforeSendLabel} returned \`null\`, will not send event.`); + } + + const session = currentScope.getSession() || isolationScope.getSession(); + if (isError && session) { + this._updateSessionFromEvent(session, processedEvent); + } + + if (isTransaction) { + const spanCountBefore = processedEvent.sdkProcessingMetadata?.spanCountBeforeProcessing || 0; + const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0; + + const droppedSpanCount = spanCountBefore - spanCountAfter; + if (droppedSpanCount > 0) { + this.recordDroppedEvent('before_send', 'span', droppedSpanCount); + } + } + + // None of the Sentry built event processor will update transaction name, + // so if the transaction name has been changed by an event processor, we know + // it has to come from custom event processor added by a user + const transactionInfo = processedEvent.transaction_info; + if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) { + const source = 'custom'; + processedEvent.transaction_info = { + ...transactionInfo, + source, + }; + } + + this.sendEvent(processedEvent, hint); + return processedEvent; + }) + .then(null, reason => { + if (_isDoNotSendEventError(reason) || _isInternalError(reason)) { + throw reason; + } + + this.captureException(reason, { + mechanism: { + handled: false, + type: 'internal', + }, + data: { + __sentry__: true, + }, + originalException: reason, + }); + throw _makeInternalError( + `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: ${reason}`, + ); + }); + } + + /** + * Occupies the client with processing and event + */ + _process(taskProducer, dataCategory) { + this._numProcessing++; + + void this._promiseBuffer.add(taskProducer).then( + value => { + this._numProcessing--; + return value; + }, + reason => { + this._numProcessing--; + + if (reason === promisebuffer.SENTRY_BUFFER_FULL_ERROR) { + this.recordDroppedEvent('queue_overflow', dataCategory); + } + + return reason; + }, + ); + } + + /** + * Clears outcomes on this client and returns them. + */ + _clearOutcomes() { + const outcomes = this._outcomes; + this._outcomes = {}; + return Object.entries(outcomes).map(([key, quantity]) => { + const [reason, category] = key.split(':') ; + return { + reason, + category, + quantity, + }; + }); + } + + /** + * Sends client reports as an envelope. + */ + _flushOutcomes() { + debugBuild.DEBUG_BUILD && debugLogger.debug.log('Flushing outcomes...'); + + const outcomes = this._clearOutcomes(); + + if (outcomes.length === 0) { + debugBuild.DEBUG_BUILD && debugLogger.debug.log('No outcomes to send'); + return; + } + + // This is really the only place where we want to check for a DSN and only send outcomes then + if (!this._dsn) { + debugBuild.DEBUG_BUILD && debugLogger.debug.log('No dsn provided, will not send outcomes'); + return; + } + + debugBuild.DEBUG_BUILD && debugLogger.debug.log('Sending outcomes:', outcomes); + + const envelope = clientreport.createClientReportEnvelope(outcomes, this._options.tunnel && dsn.dsnToString(this._dsn)); + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.sendEnvelope(envelope); + } + + /** + * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`. + */ + +} + +function getDataCategoryByType(type) { + return type === 'replay_event' ? 'replay' : type || 'error'; +} + +/** + * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so. + */ +function _validateBeforeSendResult( + beforeSendResult, + beforeSendLabel, +) { + const invalidValueError = `${beforeSendLabel} must return \`null\` or a valid event.`; + if (is.isThenable(beforeSendResult)) { + return beforeSendResult.then( + event => { + if (!is.isPlainObject(event) && event !== null) { + throw _makeInternalError(invalidValueError); + } + return event; + }, + e => { + throw _makeInternalError(`${beforeSendLabel} rejected with ${e}`); + }, + ); + } else if (!is.isPlainObject(beforeSendResult) && beforeSendResult !== null) { + throw _makeInternalError(invalidValueError); + } + return beforeSendResult; +} + +/** + * Process the matching `beforeSendXXX` callback. + */ +function processBeforeSend( + client, + options, + event, + hint, +) { + const { beforeSend, beforeSendTransaction, beforeSendSpan, ignoreSpans } = options; + let processedEvent = event; + + if (isErrorEvent(processedEvent) && beforeSend) { + return beforeSend(processedEvent, hint); + } + + if (isTransactionEvent(processedEvent)) { + // Avoid processing if we don't have to + if (beforeSendSpan || ignoreSpans) { + // 1. Process root span + const rootSpanJson = transactionEvent.convertTransactionEventToSpanJson(processedEvent); + + // 1.1 If the root span should be ignored, drop the whole transaction + if (ignoreSpans?.length && shouldIgnoreSpan.shouldIgnoreSpan(rootSpanJson, ignoreSpans)) { + // dropping the whole transaction! + return null; + } + + // 1.2 If a `beforeSendSpan` callback is defined, process the root span + if (beforeSendSpan) { + const processedRootSpanJson = beforeSendSpan(rootSpanJson); + if (!processedRootSpanJson) { + spanUtils.showSpanDropWarning(); + } else { + // update event with processed root span values + processedEvent = merge.merge(event, transactionEvent.convertSpanJsonToTransactionEvent(processedRootSpanJson)); + } + } + + // 2. Process child spans + if (processedEvent.spans) { + const processedSpans = []; + + const initialSpans = processedEvent.spans; + + for (const span of initialSpans) { + // 2.a If the child span should be ignored, reparent it to the root span + if (ignoreSpans?.length && shouldIgnoreSpan.shouldIgnoreSpan(span, ignoreSpans)) { + shouldIgnoreSpan.reparentChildSpans(initialSpans, span); + continue; + } + + // 2.b If a `beforeSendSpan` callback is defined, process the child span + if (beforeSendSpan) { + const processedSpan = beforeSendSpan(span); + if (!processedSpan) { + spanUtils.showSpanDropWarning(); + processedSpans.push(span); + } else { + processedSpans.push(processedSpan); + } + } else { + processedSpans.push(span); + } + } + + const droppedSpans = processedEvent.spans.length - processedSpans.length; + if (droppedSpans) { + client.recordDroppedEvent('before_send', 'span', droppedSpans); + } + + processedEvent.spans = processedSpans; + } + } + + if (beforeSendTransaction) { + if (processedEvent.spans) { + // We store the # of spans before processing in SDK metadata, + // so we can compare it afterwards to determine how many spans were dropped + const spanCountBefore = processedEvent.spans.length; + processedEvent.sdkProcessingMetadata = { + ...event.sdkProcessingMetadata, + spanCountBeforeProcessing: spanCountBefore, + }; + } + return beforeSendTransaction(processedEvent , hint); + } + } + + return processedEvent; +} + +function isErrorEvent(event) { + return event.type === undefined; +} + +function isTransactionEvent(event) { + return event.type === 'transaction'; +} + +/** + * Estimate the size of a metric in bytes. + * + * @param metric - The metric to estimate the size of. + * @returns The estimated size of the metric in bytes. + */ +function estimateMetricSizeInBytes(metric) { + let weight = 0; + + // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16. + if (metric.name) { + weight += metric.name.length * 2; + } + + // Add weight for number + weight += 8; + + return weight + estimateAttributesSizeInBytes(metric.attributes); +} + +/** + * Estimate the size of a log in bytes. + * + * @param log - The log to estimate the size of. + * @returns The estimated size of the log in bytes. + */ +function estimateLogSizeInBytes(log) { + let weight = 0; + + // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16. + if (log.message) { + weight += log.message.length * 2; + } + + return weight + estimateAttributesSizeInBytes(log.attributes); +} + +/** + * Estimate the size of attributes in bytes. + * + * @param attributes - The attributes object to estimate the size of. + * @returns The estimated size of the attributes in bytes. + */ +function estimateAttributesSizeInBytes(attributes) { + if (!attributes) { + return 0; + } + + let weight = 0; + + Object.values(attributes).forEach(value => { + if (Array.isArray(value)) { + weight += value.length * estimatePrimitiveSizeInBytes(value[0]); + } else if (is.isPrimitive(value)) { + weight += estimatePrimitiveSizeInBytes(value); + } else { + // For objects values, we estimate the size of the object as 100 bytes + weight += 100; + } + }); + + return weight; +} + +function estimatePrimitiveSizeInBytes(value) { + if (typeof value === 'string') { + return value.length * 2; + } else if (typeof value === 'number') { + return 8; + } else if (typeof value === 'boolean') { + return 4; + } + + return 0; +} + +exports.Client = Client; +//# sourceMappingURL=client.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/client.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/client.js.map new file mode 100644 index 0000000..ecc3768 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"client.js","sources":["../../src/client.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { getCurrentScope, getIsolationScope, getTraceContextFromScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations, setupIntegration, setupIntegrations } from './integration';\nimport { _INTERNAL_flushLogsBuffer } from './logs/internal';\nimport { _INTERNAL_flushMetricsBuffer } from './metrics/internal';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base';\nimport type { Breadcrumb, BreadcrumbHint, FetchBreadcrumbHint, XhrBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { CheckIn, MonitorConfig } from './types-hoist/checkin';\nimport type { EventDropReason, Outcome } from './types-hoist/clientreport';\nimport type { DataCategory } from './types-hoist/datacategory';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type { DynamicSamplingContext, Envelope } from './types-hoist/envelope';\nimport type { ErrorEvent, Event, EventHint, EventType, TransactionEvent } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { FeedbackEvent } from './types-hoist/feedback';\nimport type { Integration } from './types-hoist/integration';\nimport type { Log } from './types-hoist/log';\nimport type { Metric } from './types-hoist/metric';\nimport type { Primitive } from './types-hoist/misc';\nimport type { ClientOptions } from './types-hoist/options';\nimport type { ParameterizedString } from './types-hoist/parameterize';\nimport type { RequestEventData } from './types-hoist/request';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport type { Session, SessionAggregates } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { Span, SpanAttributes, SpanContextData, SpanJSON } from './types-hoist/span';\nimport type { StartSpanOptions } from './types-hoist/startSpanOptions';\nimport type { Transport, TransportMakeRequestResponse } from './types-hoist/transport';\nimport { createClientReportEnvelope } from './utils/clientreport';\nimport { debug } from './utils/debug-logger';\nimport { dsnToString, makeDsn } from './utils/dsn';\nimport { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils/envelope';\nimport { getPossibleEventMessages } from './utils/eventUtils';\nimport { isParameterizedString, isPlainObject, isPrimitive, isThenable } from './utils/is';\nimport { merge } from './utils/merge';\nimport { checkOrSetAlreadyCaught, uuid4 } from './utils/misc';\nimport { parseSampleRate } from './utils/parseSampleRate';\nimport { prepareEvent } from './utils/prepareEvent';\nimport { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer';\nimport { safeMathRandom } from './utils/randomSafeContext';\nimport { reparentChildSpans, shouldIgnoreSpan } from './utils/should-ignore-span';\nimport { showSpanDropWarning } from './utils/spanUtils';\nimport { rejectedSyncPromise } from './utils/syncpromise';\nimport { convertSpanJsonToTransactionEvent, convertTransactionEventToSpanJson } from './utils/transactionEvent';\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\ninterface InternalError {\n message: string;\n [INTERNAL_ERROR_SYMBOL]: true;\n}\n\ninterface DoNotSendEventError {\n message: string;\n [DO_NOT_SEND_EVENT_SYMBOL]: true;\n}\n\nfunction _makeInternalError(message: string): InternalError {\n return {\n message,\n [INTERNAL_ERROR_SYMBOL]: true,\n };\n}\n\nfunction _makeDoNotSendEventError(message: string): DoNotSendEventError {\n return {\n message,\n [DO_NOT_SEND_EVENT_SYMBOL]: true,\n };\n}\n\nfunction _isInternalError(error: unknown): error is InternalError {\n return !!error && typeof error === 'object' && INTERNAL_ERROR_SYMBOL in error;\n}\n\nfunction _isDoNotSendEventError(error: unknown): error is DoNotSendEventError {\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 T,\n AfterCaptureHook extends 'afterCaptureLog' | 'afterCaptureMetric',\n FlushHook extends 'flushLogs' | 'flushMetrics',\n>(\n client: Client,\n afterCaptureHook: AfterCaptureHook,\n flushHook: FlushHook,\n estimateSizeFn: (item: T) => number,\n flushFn: (client: Client) => void,\n): void {\n // Track weight and timeout in closure variables\n let weight = 0;\n let flushTimeout: ReturnType | undefined;\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: T) => {\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 >= 800_000) {\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 flushTimeout = 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 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 */\nexport abstract class Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex;\n\n /** Number of calls being processed */\n protected _numProcessing: number;\n\n protected _eventProcessors: EventProcessor[];\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number };\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private _hooks: Record>;\n\n private _promiseBuffer: PromiseBuffer;\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\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 public captureException(exception: unknown, hint?: EventHint, scope?: Scope): string {\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 public captureMessage(\n message: ParameterizedString,\n level?: SeverityLevel,\n hint?: EventHint,\n currentScope?: Scope,\n ): string {\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 public captureEvent(event: Event, hint?: EventHint, currentScope?: Scope): string {\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: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n const capturedSpanIsolationScope: Scope | undefined = 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 public captureSession(session: Session): void {\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 public captureCheckIn?(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string;\n\n /**\n * Get the current Dsn.\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * Get the current options.\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * Get the SDK metadata.\n * @see SdkMetadata\n */\n public getSdkMetadata(): SdkMetadata | undefined {\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 public getTransport(): Transport | undefined {\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 public async flush(timeout?: number): PromiseLike {\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 public async close(timeout?: number): PromiseLike {\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 public getEventProcessors(): EventProcessor[] {\n return this._eventProcessors;\n }\n\n /**\n * Adds an event processor that applies to any event processed by this client.\n */\n public addEventProcessor(eventProcessor: EventProcessor): void {\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 public init(): void {\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 public getIntegrationByName(integrationName: string): T | undefined {\n return this._integrations[integrationName] as T | undefined;\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 public addIntegration(integration: Integration): void {\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 public sendEvent(event: Event, hint: EventHint = {}): void {\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 public sendSession(session: Session | SessionAggregates): void {\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 public recordDroppedEvent(reason: EventDropReason, category: DataCategory, count: number = 1): void {\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 public on(hook: 'spanStart', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback before span sampling runs. Receives a `samplingDecision` object argument with a `decision`\n * property that can be used to make a sampling decision that will be enforced, before any span sampling runs.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeSampling',\n callback: (\n samplingData: {\n spanAttributes: SpanAttributes;\n spanName: string;\n parentSampled?: boolean;\n parentSampleRate?: number;\n parentContext?: SpanContextData;\n },\n samplingDecision: { decision: boolean },\n ) => void,\n ): void;\n\n /**\n * Register a callback for after a span is ended.\n * NOTE: The span cannot be mutated anymore in this callback.\n * Receives the span as argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'spanEnd', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback for when an idle span is allowed to auto-finish.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'idleSpanEnableAutoFinish', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback for transaction start and finish.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): () => void;\n\n /**\n * Register a callback that runs when stack frame metadata should be applied to an event.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'applyFrameMetadata', callback: (event: Event) => void): () => void;\n\n /**\n * Register a callback for before sending an event.\n * This is called right before an event is sent and should not be used to mutate the event.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for before sending a session or session aggregrates..\n * Receives the session/aggregate as second argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeSendSession', callback: (session: Session | SessionAggregates) => void): () => void;\n\n /**\n * Register a callback for preprocessing an event,\n * before it is passed to (global) event processors.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for postprocessing an event,\n * after it was passed to (global) event processors, before it is being sent.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'postprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for when an event has been sent.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'afterSendEvent',\n callback: (event: Event, sendResponse: TransportMakeRequestResponse) => void,\n ): () => void;\n\n /**\n * Register a callback before a breadcrumb is added.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): () => void;\n\n /**\n * Register a callback when a DSC (Dynamic Sampling Context) is created.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext, rootSpan?: Span) => void): () => void;\n\n /**\n * Register a callback when a Feedback event has been prepared.\n * This should be used to mutate the event. The options argument can hint\n * about what kind of mutation it expects.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeSendFeedback',\n callback: (feedback: FeedbackEvent, options?: { includeReplay?: boolean }) => void,\n ): () => void;\n\n /**\n * Register a callback when the feedback widget is opened in a user's browser\n */\n public on(hook: 'openFeedbackWidget', callback: () => void): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger a span start for a page load.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'startPageLoadSpan',\n callback: (\n options: StartSpanOptions,\n traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n ) => void,\n ): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger the end of a page load span.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'endPageloadSpan', callback: () => void): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger after the pageload span was started.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterStartPageLoadSpan', callback: (span: Span) => void): () => void;\n\n /**\n * A hook for triggering right before a navigation span is started.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeStartNavigationSpan',\n callback: (options: StartSpanOptions, navigationOptions?: { isRedirect?: boolean }) => void,\n ): () => void;\n\n /**\n * A hook for browser tracing integrations to trigger a span for a navigation.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'startNavigationSpan',\n callback: (options: StartSpanOptions, navigationOptions?: { isRedirect?: boolean }) => void,\n ): () => void;\n\n /**\n * A hook for GraphQL client integration to enhance a span with request data.\n * @returns A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeOutgoingRequestSpan',\n callback: (span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void,\n ): () => void;\n\n /**\n * A hook for GraphQL client integration to enhance a breadcrumb with request data.\n * @returns A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeOutgoingRequestBreadcrumb',\n callback: (breadcrumb: Breadcrumb, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void,\n ): () => void;\n\n /**\n * A hook that is called when the client is flushing\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flush', callback: () => void): () => void;\n\n /**\n * A hook that is called when the client is closing\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'close', callback: () => void): () => void;\n\n /**\n * A hook that is called before a log is captured. This hooks runs before `beforeSendLog` is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeCaptureLog', callback: (log: Log) => void): () => void;\n\n /**\n * A hook that is called after a log is captured\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterCaptureLog', callback: (log: Log) => void): () => void;\n\n /**\n * A hook that is called when the client is flushing logs\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flushLogs', callback: () => void): () => void;\n\n /**\n * A hook that is called after capturing a metric. This hooks runs after `beforeSendMetric` is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterCaptureMetric', callback: (metric: Metric) => void): () => void;\n\n /**\n * A hook that is called when the client is flushing metrics\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flushMetrics', callback: () => void): () => void;\n\n /**\n * A hook that is called when a metric is processed before it is captured and before the `beforeSendMetric` callback is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'processMetric', callback: (metric: Metric) => void): () => void;\n\n /**\n * A hook that is called when a http server request is started.\n * This hook is called after request isolation, but before the request is processed.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'httpServerRequest',\n callback: (request: unknown, response: unknown, normalizedRequest: RequestEventData) => void,\n ): () => void;\n\n /**\n * A hook that is called when the UI Profiler should start profiling.\n *\n * This hook is called when running `Sentry.uiProfiler.startProfiler()`.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'startUIProfiler', callback: () => void): () => void;\n\n /**\n * A hook that is called when the UI Profiler should stop profiling.\n *\n * This hook is called when running `Sentry.uiProfiler.stopProfiler()`.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'stopUIProfiler', callback: () => void): () => void;\n\n /**\n * Register a hook on this client.\n */\n public on(hook: string, callback: unknown): () => void {\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: Function = (...args: unknown[]) => 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 public emit(hook: 'spanStart', span: Span): void;\n\n /** A hook that is called every time before a span is sampled. */\n public emit(\n hook: 'beforeSampling',\n samplingData: {\n spanAttributes: SpanAttributes;\n spanName: string;\n parentSampled?: boolean;\n parentSampleRate?: number;\n parentContext?: SpanContextData;\n },\n samplingDecision: { decision: boolean },\n ): void;\n\n /** Fire a hook whenever a span ends. */\n public emit(hook: 'spanEnd', span: Span): void;\n\n /**\n * Fire a hook indicating that an idle span is allowed to auto finish.\n */\n public emit(hook: 'idleSpanEnableAutoFinish', span: Span): void;\n\n /**\n * Fire a hook event for envelope creation and sending. Expects to be given an envelope as the\n * second argument.\n */\n public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n /**\n * Fire a hook indicating that stack frame metadata should be applied to the event passed to the hook.\n */\n public emit(hook: 'applyFrameMetadata', event: Event): void;\n\n /**\n * Fire a hook event before sending an event.\n * This is called right before an event is sent and should not be used to mutate the event.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event before sending a session/aggregates.\n * Expects to be given the prepared session/aggregates as second argument.\n */\n public emit(hook: 'beforeSendSession', session: Session | SessionAggregates): void;\n\n /**\n * Fire a hook event to process events before they are passed to (global) event processors.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event to process a user on an event before it is sent to Sentry, after all other processors have run.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'postprocessEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event after sending an event. Expects to be given an Event as the\n * second argument.\n */\n public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse): void;\n\n /**\n * Fire a hook for when a breadcrumb is added. Expects the breadcrumb as second argument.\n */\n public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n /**\n * Fire a hook for when a DSC (Dynamic Sampling Context) is created. Expects the DSC as second argument.\n */\n public emit(hook: 'createDsc', dsc: DynamicSamplingContext, rootSpan?: Span): void;\n\n /**\n * Fire a hook event for after preparing a feedback event. Events to be given\n * a feedback event as the second argument, and an optional options object as\n * third argument.\n */\n public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay?: boolean }): void;\n\n /**\n * Fire a hook event for when the feedback widget is opened in a user's browser\n */\n public emit(hook: 'openFeedbackWidget'): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger a span start for a page load.\n */\n public emit(\n hook: 'startPageLoadSpan',\n options: StartSpanOptions,\n traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n ): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger the end of a page load span.\n */\n public emit(hook: 'endPageloadSpan'): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger aafter the pageload span was started.\n */\n public emit(hook: 'afterStartPageLoadSpan', span: Span): void;\n\n /**\n * Emit a hook event for triggering right before a navigation span is started.\n */\n public emit(\n hook: 'beforeStartNavigationSpan',\n options: StartSpanOptions,\n navigationOptions?: { isRedirect?: boolean },\n ): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger a span for a navigation.\n */\n public emit(\n hook: 'startNavigationSpan',\n options: StartSpanOptions,\n navigationOptions?: { isRedirect?: boolean },\n ): void;\n\n /**\n * Emit a hook event for GraphQL client integration to enhance a span with request data.\n */\n public emit(hook: 'beforeOutgoingRequestSpan', span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint): void;\n\n /**\n * Emit a hook event for GraphQL client integration to enhance a breadcrumb with request data.\n */\n public emit(\n hook: 'beforeOutgoingRequestBreadcrumb',\n breadcrumb: Breadcrumb,\n hint: XhrBreadcrumbHint | FetchBreadcrumbHint,\n ): void;\n\n /**\n * Emit a hook event for client flush\n */\n public emit(hook: 'flush'): void;\n\n /**\n * Emit a hook event for client close\n */\n public emit(hook: 'close'): void;\n\n /**\n * Emit a hook event for client before capturing a log. This hooks runs before `beforeSendLog` is fired.\n */\n public emit(hook: 'beforeCaptureLog', log: Log): void;\n\n /**\n * Emit a hook event for client after capturing a log.\n */\n public emit(hook: 'afterCaptureLog', log: Log): void;\n\n /**\n * Emit a hook event for client flush logs\n */\n public emit(hook: 'flushLogs'): void;\n\n /**\n * Emit a hook event for client after capturing a metric.\n */\n public emit(hook: 'afterCaptureMetric', metric: Metric): void;\n\n /**\n * Emit a hook event for client flush metrics\n */\n public emit(hook: 'flushMetrics'): void;\n\n /**\n *\n * Emit a hook event for client to process a metric before it is captured.\n * This hook is called before the `beforeSendMetric` callback is fired.\n */\n public emit(hook: 'processMetric', metric: Metric): void;\n\n /**\n * Emit a hook event for client when a http server request is started.\n * This hook is called after request isolation, but before the request is processed.\n */\n public emit(\n hook: 'httpServerRequest',\n request: unknown,\n response: unknown,\n normalizedRequest: RequestEventData,\n ): void;\n\n /**\n * Emit a hook event for starting the UI Profiler.\n */\n public emit(hook: 'startUIProfiler'): void;\n\n /**\n * Emit a hook event for stopping the UI Profiler.\n */\n public emit(hook: 'stopUIProfiler'): void;\n\n /**\n * Emit a hook that was previously registered via `on()`.\n */\n public emit(hook: string, ...rest: unknown[]): void {\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 public async sendEnvelope(envelope: Envelope): PromiseLike {\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 /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n protected _setupIntegrations(): void {\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 protected _updateSessionFromEvent(session: Session, event: Event): void {\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 protected async _isClientDoneProcessing(timeout?: number): Promise {\n let ticked = 0;\n\n // if no timeout is provided, we wait \"forever\" until everything is processed\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 protected _isEnabled(): boolean {\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 protected _prepareEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\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: 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 protected _captureEvent(\n event: Event,\n hint: EventHint = {},\n currentScope = getCurrentScope(),\n isolationScope = getIsolationScope(),\n ): PromiseLike {\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 protected _processEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\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 && (hint.data as { __sentry__: boolean }).__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 protected _process(taskProducer: () => PromiseLike, dataCategory: DataCategory): void {\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 protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.entries(outcomes).map(([key, quantity]) => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity,\n };\n });\n }\n\n /**\n * Sends client reports as an envelope.\n */\n protected _flushOutcomes(): void {\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 public abstract eventFromException(_exception: unknown, _hint?: EventHint): PromiseLike;\n\n /**\n * Creates an {@link Event} from primitive inputs to `captureMessage`.\n */\n public abstract eventFromMessage(\n _message: ParameterizedString,\n _level?: SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\nfunction getDataCategoryByType(type: EventType | 'replay_event' | undefined): DataCategory {\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: PromiseLike | Event | null,\n beforeSendLabel: string,\n): PromiseLike | Event | null {\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: Client,\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n): PromiseLike | Event | null {\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: SpanJSON[] = [];\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 as TransactionEvent, hint);\n }\n }\n\n return processedEvent;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\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: Metric): number {\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: Log): number {\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: Record | undefined): number {\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: Primitive): number {\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"],"names":["makePromiseBuffer","DEFAULT_TRANSPORT_BUFFER_SIZE","makeDsn","DEBUG_BUILD","debug","getEnvelopeEndpointWithUrlEncodedAuth","_INTERNAL_flushLogsBuffer","_INTERNAL_flushMetricsBuffer","uuid4","checkOrSetAlreadyCaught","isParameterizedString","isPrimitive","session","updateSession","integration","setupIntegration","afterSetupIntegrations","createEventEnvelope","addItemToEnvelope","createAttachmentEnvelopeItem","DEFAULT_ENVIRONMENT","createSessionEnvelope","setupIntegrations","prepareEvent","getTraceContextFromScope","dynamicSamplingContext","getDynamicSamplingContextFromScope","getCurrentScope","getIsolationScope","getPossibleEventMessages","parseSampleRate","safeMathRandom","rejectedSyncPromise","SENTRY_BUFFER_FULL_ERROR","createClientReportEnvelope","dsnToString","isThenable","isPlainObject","convertTransactionEventToSpanJson","shouldIgnoreSpan","showSpanDropWarning","merge","convertSpanJsonToTransactionEvent","reparentChildSpans"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/constants.js new file mode 100644 index 0000000..1e983fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/constants.js @@ -0,0 +1,8 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const DEFAULT_ENVIRONMENT = 'production'; +const DEV_ENVIRONMENT = 'development'; + +exports.DEFAULT_ENVIRONMENT = DEFAULT_ENVIRONMENT; +exports.DEV_ENVIRONMENT = DEV_ENVIRONMENT; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/constants.js.map new file mode 100644 index 0000000..a36054d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../src/constants.ts"],"sourcesContent":["export const DEFAULT_ENVIRONMENT = 'production';\nexport const DEV_ENVIRONMENT = 'development';\n"],"names":[],"mappings":";;AAAO,MAAM,mBAAA,GAAsB;AAC5B,MAAM,eAAA,GAAkB;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/currentScopes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/currentScopes.js new file mode 100644 index 0000000..3d5ff19 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/currentScopes.js @@ -0,0 +1,133 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const index = require('./asyncContext/index.js'); +const carrier = require('./carrier.js'); +const scope = require('./scope.js'); +const propagationContext = require('./utils/propagationContext.js'); + +/** + * Get the currently active scope. + */ +function getCurrentScope() { + const carrier$1 = carrier.getMainCarrier(); + const acs = index.getAsyncContextStrategy(carrier$1); + return acs.getCurrentScope(); +} + +/** + * Get the currently active isolation scope. + * The isolation scope is active for the current execution context. + */ +function getIsolationScope() { + const carrier$1 = carrier.getMainCarrier(); + const acs = index.getAsyncContextStrategy(carrier$1); + return acs.getIsolationScope(); +} + +/** + * Get the global scope. + * This scope is applied to _all_ events. + */ +function getGlobalScope() { + return carrier.getGlobalSingleton('globalScope', () => new scope.Scope()); +} + +/** + * Creates a new scope with and executes the given operation within. + * The scope is automatically removed once the operation + * finishes or throws. + */ + +/** + * Either creates a new active scope, or sets the given scope as active scope in the given callback. + */ +function withScope( + ...rest +) { + const carrier$1 = carrier.getMainCarrier(); + const acs = index.getAsyncContextStrategy(carrier$1); + + // If a scope is defined, we want to make this the active scope instead of the default one + if (rest.length === 2) { + const [scope, callback] = rest; + + if (!scope) { + return acs.withScope(callback); + } + + return acs.withSetScope(scope, callback); + } + + return acs.withScope(rest[0]); +} + +/** + * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no + * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the + * case, for example, in the browser). + * + * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour. + * + * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in "normal" + * applications directly because it comes with pitfalls. Use at your own risk! + */ + +/** + * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback. + */ +function withIsolationScope( + ...rest + +) { + const carrier$1 = carrier.getMainCarrier(); + const acs = index.getAsyncContextStrategy(carrier$1); + + // If a scope is defined, we want to make this the active scope instead of the default one + if (rest.length === 2) { + const [isolationScope, callback] = rest; + + if (!isolationScope) { + return acs.withIsolationScope(callback); + } + + return acs.withSetIsolationScope(isolationScope, callback); + } + + return acs.withIsolationScope(rest[0]); +} + +/** + * Get the currently active client. + */ +function getClient() { + return getCurrentScope().getClient(); +} + +/** + * Get a trace context for the given scope. + */ +function getTraceContextFromScope(scope) { + const propagationContext$1 = scope.getPropagationContext(); + + const { traceId, parentSpanId, propagationSpanId } = propagationContext$1; + + const traceContext = { + trace_id: traceId, + span_id: propagationSpanId || propagationContext.generateSpanId(), + }; + + if (parentSpanId) { + traceContext.parent_span_id = parentSpanId; + } + + return traceContext; +} + +exports.getClient = getClient; +exports.getCurrentScope = getCurrentScope; +exports.getGlobalScope = getGlobalScope; +exports.getIsolationScope = getIsolationScope; +exports.getTraceContextFromScope = getTraceContextFromScope; +exports.withIsolationScope = withIsolationScope; +exports.withScope = withScope; +//# sourceMappingURL=currentScopes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/currentScopes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/currentScopes.js.map new file mode 100644 index 0000000..a275396 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/currentScopes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"currentScopes.js","sources":["../../src/currentScopes.ts"],"sourcesContent":["import { getAsyncContextStrategy } from './asyncContext';\nimport { getGlobalSingleton, getMainCarrier } from './carrier';\nimport type { Client } from './client';\nimport { Scope } from './scope';\nimport type { TraceContext } from './types-hoist/context';\nimport { generateSpanId } from './utils/propagationContext';\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\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 */\nexport function getIsolationScope(): Scope {\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 */\nexport function getGlobalScope(): Scope {\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 */\nexport function withScope(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope(scope: Scope | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope(\n ...rest: [callback: (scope: Scope) => T] | [scope: Scope | undefined, callback: (scope: Scope) => T]\n): T {\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 */\nexport function withIsolationScope(callback: (isolationScope: Scope) => T): T;\n/**\n * Set the provided isolation scope as active in the given callback. 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 * If you pass in `undefined` as a scope, it will fork a new isolation scope, the same as if no scope is passed.\n */\nexport function withIsolationScope(isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T): T;\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nexport function withIsolationScope(\n ...rest:\n | [callback: (isolationScope: Scope) => T]\n | [isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T]\n): T {\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 */\nexport function getClient(): C | undefined {\n return getCurrentScope().getClient();\n}\n\n/**\n * Get a trace context for the given scope.\n */\nexport function getTraceContextFromScope(scope: Scope): TraceContext {\n const propagationContext = scope.getPropagationContext();\n\n const { traceId, parentSpanId, propagationSpanId } = propagationContext;\n\n const traceContext: 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"],"names":["carrier","getMainCarrier","getAsyncContextStrategy","getGlobalSingleton","Scope","propagationContext","generateSpanId"],"mappings":";;;;;;;AAOA;AACA;AACA;AACO,SAAS,eAAe,GAAU;AACzC,EAAE,MAAMA,SAAA,GAAUC,sBAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAMC,6BAAuB,CAACF,SAAO,CAAC;AAC9C,EAAE,OAAO,GAAG,CAAC,eAAe,EAAE;AAC9B;;AAEA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,GAAU;AAC3C,EAAE,MAAMA,SAAA,GAAUC,sBAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAMC,6BAAuB,CAACF,SAAO,CAAC;AAC9C,EAAE,OAAO,GAAG,CAAC,iBAAiB,EAAE;AAChC;;AAEA;AACA;AACA;AACA;AACO,SAAS,cAAc,GAAU;AACxC,EAAE,OAAOG,0BAAkB,CAAC,aAAa,EAAE,MAAM,IAAIC,WAAK,EAAE,CAAC;AAC7D;;AAEA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACO,SAAS,SAAS;AACzB,EAAE,GAAG;AACL,EAAK;AACL,EAAE,MAAMJ,SAAA,GAAUC,sBAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAMC,6BAAuB,CAACF,SAAO,CAAC;;AAE9C;AACA,EAAE,IAAI,IAAI,CAAC,MAAA,KAAW,CAAC,EAAE;AACzB,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAA,GAAI,IAAI;;AAElC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;AACpC,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5C,EAAE;;AAEF,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACO,SAAS,kBAAkB;AAClC,EAAE,GAAG;;AAGL,EAAK;AACL,EAAE,MAAMA,SAAA,GAAUC,sBAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAMC,6BAAuB,CAACF,SAAO,CAAC;;AAE9C;AACA,EAAE,IAAI,IAAI,CAAC,MAAA,KAAW,CAAC,EAAE;AACzB,IAAI,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAA,GAAI,IAAI;;AAE3C,IAAI,IAAI,CAAC,cAAc,EAAE;AACzB,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC7C,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,qBAAqB,CAAC,cAAc,EAAE,QAAQ,CAAC;AAC9D,EAAE;;AAEF,EAAE,OAAO,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC;;AAEA;AACA;AACA;AACO,SAAS,SAAS,GAAoC;AAC7D,EAAE,OAAO,eAAe,EAAE,CAAC,SAAS,EAAK;AACzC;;AAEA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,KAAK,EAAuB;AACrE,EAAE,MAAMK,oBAAA,GAAqB,KAAK,CAAC,qBAAqB,EAAE;;AAE1D,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAA,EAAkB,GAAIA,oBAAkB;;AAEzE,EAAE,MAAM,YAAY,GAAiB;AACrC,IAAI,QAAQ,EAAE,OAAO;AACrB,IAAI,OAAO,EAAE,iBAAA,IAAqBC,iCAAc,EAAE;AAClD,GAAG;;AAEH,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,YAAY,CAAC,cAAA,GAAiB,YAAY;AAC9C,EAAE;;AAEF,EAAE,OAAO,YAAY;AACrB;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/debug-build.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/debug-build.js new file mode 100644 index 0000000..1052438 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/debug-build.js @@ -0,0 +1,11 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * 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. + * + * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking. + */ +const DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__); + +exports.DEBUG_BUILD = DEBUG_BUILD; +//# sourceMappingURL=debug-build.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/debug-build.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/debug-build.js.map new file mode 100644 index 0000000..e73c9f8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/debug-build.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debug-build.js","sources":["../../src/debug-build.ts"],"sourcesContent":["declare const __DEBUG_BUILD__: boolean;\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 */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n"],"names":[],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAA,IAAc,OAAA,gBAAA,KAAA,WAAA,IAAA,gBAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/defaultScopes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/defaultScopes.js new file mode 100644 index 0000000..1d8faa7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/defaultScopes.js @@ -0,0 +1,18 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const carrier = require('./carrier.js'); +const scope = require('./scope.js'); + +/** Get the default current scope. */ +function getDefaultCurrentScope() { + return carrier.getGlobalSingleton('defaultCurrentScope', () => new scope.Scope()); +} + +/** Get the default isolation scope. */ +function getDefaultIsolationScope() { + return carrier.getGlobalSingleton('defaultIsolationScope', () => new scope.Scope()); +} + +exports.getDefaultCurrentScope = getDefaultCurrentScope; +exports.getDefaultIsolationScope = getDefaultIsolationScope; +//# sourceMappingURL=defaultScopes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/defaultScopes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/defaultScopes.js.map new file mode 100644 index 0000000..40f5024 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/defaultScopes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"defaultScopes.js","sources":["../../src/defaultScopes.ts"],"sourcesContent":["import { getGlobalSingleton } from './carrier';\nimport { Scope } from './scope';\n\n/** Get the default current scope. */\nexport function getDefaultCurrentScope(): Scope {\n return getGlobalSingleton('defaultCurrentScope', () => new Scope());\n}\n\n/** Get the default isolation scope. */\nexport function getDefaultIsolationScope(): Scope {\n return getGlobalSingleton('defaultIsolationScope', () => new Scope());\n}\n"],"names":["getGlobalSingleton","Scope"],"mappings":";;;;;AAGA;AACO,SAAS,sBAAsB,GAAU;AAChD,EAAE,OAAOA,0BAAkB,CAAC,qBAAqB,EAAE,MAAM,IAAIC,WAAK,EAAE,CAAC;AACrE;;AAEA;AACO,SAAS,wBAAwB,GAAU;AAClD,EAAE,OAAOD,0BAAkB,CAAC,uBAAuB,EAAE,MAAM,IAAIC,WAAK,EAAE,CAAC;AACvE;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/envelope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/envelope.js new file mode 100644 index 0000000..13fdbbf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/envelope.js @@ -0,0 +1,158 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const dynamicSamplingContext = require('./tracing/dynamicSamplingContext.js'); +const dsn = require('./utils/dsn.js'); +const envelope = require('./utils/envelope.js'); +const shouldIgnoreSpan = require('./utils/should-ignore-span.js'); +const spanUtils = require('./utils/spanUtils.js'); + +/** + * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key. + * Merge with existing data if any. + * + * @internal, exported only for testing + **/ +function _enhanceEventWithSdkInfo(event, newSdkInfo) { + if (!newSdkInfo) { + return event; + } + + const eventSdkInfo = event.sdk || {}; + + event.sdk = { + ...eventSdkInfo, + name: eventSdkInfo.name || newSdkInfo.name, + version: eventSdkInfo.version || newSdkInfo.version, + integrations: [...(event.sdk?.integrations || []), ...(newSdkInfo.integrations || [])], + packages: [...(event.sdk?.packages || []), ...(newSdkInfo.packages || [])], + settings: + event.sdk?.settings || newSdkInfo.settings + ? { + ...event.sdk?.settings, + ...newSdkInfo.settings, + } + : undefined, + }; + + return event; +} + +/** Creates an envelope from a Session */ +function createSessionEnvelope( + session, + dsn$1, + metadata, + tunnel, +) { + const sdkInfo = envelope.getSdkMetadataForEnvelopeHeader(metadata); + const envelopeHeaders = { + sent_at: new Date().toISOString(), + ...(sdkInfo && { sdk: sdkInfo }), + ...(!!tunnel && dsn$1 && { dsn: dsn.dsnToString(dsn$1) }), + }; + + const envelopeItem = + 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()]; + + return envelope.createEnvelope(envelopeHeaders, [envelopeItem]); +} + +/** + * Create an Envelope from an event. + */ +function createEventEnvelope( + event, + dsn, + metadata, + tunnel, +) { + const sdkInfo = envelope.getSdkMetadataForEnvelopeHeader(metadata); + + /* + Note: Due to TS, event.type may be `replay_event`, theoretically. + In practice, we never call `createEventEnvelope` with `replay_event` type, + and we'd have to adjust a looot of types to make this work properly. + We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type) + So the safe choice is to really guard against the replay_event type here. + */ + const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event'; + + _enhanceEventWithSdkInfo(event, metadata?.sdk); + + const envelopeHeaders = envelope.createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn); + + // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to + // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may + // 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 + // of this `delete`, lest we miss putting it back in the next time the property is in use.) + delete event.sdkProcessingMetadata; + + const eventItem = [{ type: eventType }, event]; + return envelope.createEnvelope(envelopeHeaders, [eventItem]); +} + +/** + * Create envelope from Span item. + * + * Takes an optional client and runs spans through `beforeSendSpan` if available. + */ +function createSpanEnvelope(spans, client) { + function dscHasRequiredProps(dsc) { + return !!dsc.trace_id && !!dsc.public_key; + } + + // For the moment we'll obtain the DSC from the first span in the array + // This might need to be changed if we permit sending multiple spans from + // different segments in one envelope + const dsc = dynamicSamplingContext.getDynamicSamplingContextFromSpan(spans[0]); + + const dsn$1 = client?.getDsn(); + const tunnel = client?.getOptions().tunnel; + + const headers = { + sent_at: new Date().toISOString(), + ...(dscHasRequiredProps(dsc) && { trace: dsc }), + ...(!!tunnel && dsn$1 && { dsn: dsn.dsnToString(dsn$1) }), + }; + + const { beforeSendSpan, ignoreSpans } = client?.getOptions() || {}; + + const filteredSpans = ignoreSpans?.length + ? spans.filter(span => !shouldIgnoreSpan.shouldIgnoreSpan(spanUtils.spanToJSON(span), ignoreSpans)) + : spans; + const droppedSpans = spans.length - filteredSpans.length; + + if (droppedSpans) { + client?.recordDroppedEvent('before_send', 'span', droppedSpans); + } + + const convertToSpanJSON = beforeSendSpan + ? (span) => { + const spanJson = spanUtils.spanToJSON(span); + const processedSpan = beforeSendSpan(spanJson); + + if (!processedSpan) { + spanUtils.showSpanDropWarning(); + return spanJson; + } + + return processedSpan; + } + : spanUtils.spanToJSON; + + const items = []; + for (const span of filteredSpans) { + const spanJson = convertToSpanJSON(span); + if (spanJson) { + items.push(envelope.createSpanEnvelopeItem(spanJson)); + } + } + + return envelope.createEnvelope(headers, items); +} + +exports._enhanceEventWithSdkInfo = _enhanceEventWithSdkInfo; +exports.createEventEnvelope = createEventEnvelope; +exports.createSessionEnvelope = createSessionEnvelope; +exports.createSpanEnvelope = createSpanEnvelope; +//# sourceMappingURL=envelope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/envelope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/envelope.js.map new file mode 100644 index 0000000..ba1f397 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/envelope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"envelope.js","sources":["../../src/envelope.ts"],"sourcesContent":["import type { Client } from './client';\nimport { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext';\nimport type { SentrySpan } from './tracing/sentrySpan';\nimport type { LegacyCSPReport } from './types-hoist/csp';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type {\n DynamicSamplingContext,\n EventEnvelope,\n EventItem,\n RawSecurityEnvelope,\n RawSecurityItem,\n SessionEnvelope,\n SessionItem,\n SpanEnvelope,\n SpanItem,\n} from './types-hoist/envelope';\nimport type { Event } from './types-hoist/event';\nimport type { SdkInfo } from './types-hoist/sdkinfo';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport type { Session, SessionAggregates } from './types-hoist/session';\nimport { dsnToString } from './utils/dsn';\nimport {\n createEnvelope,\n createEventEnvelopeHeaders,\n createSpanEnvelopeItem,\n getSdkMetadataForEnvelopeHeader,\n} from './utils/envelope';\nimport { uuid4 } from './utils/misc';\nimport { shouldIgnoreSpan } from './utils/should-ignore-span';\nimport { showSpanDropWarning, spanToJSON } from './utils/spanUtils';\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 **/\nexport function _enhanceEventWithSdkInfo(event: Event, newSdkInfo?: SdkInfo): Event {\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 */\nexport function createSessionEnvelope(\n session: Session | SessionAggregates,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): SessionEnvelope {\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: SessionItem =\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 */\nexport function createEventEnvelope(\n event: Event,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): EventEnvelope {\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: 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 */\nexport function createSpanEnvelope(spans: [SentrySpan, ...SentrySpan[]], client?: Client): SpanEnvelope {\n function dscHasRequiredProps(dsc: Partial): dsc is DynamicSamplingContext {\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: SpanEnvelope[0] = {\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: SentrySpan) => {\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: SpanItem[] = [];\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\n/**\n * Create an Envelope from a CSP report.\n */\nexport function createRawSecurityEnvelope(\n report: LegacyCSPReport,\n dsn: DsnComponents,\n tunnel?: string,\n release?: string,\n environment?: string,\n): RawSecurityEnvelope {\n const envelopeHeaders = {\n event_id: uuid4(),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const eventItem: RawSecurityItem = [\n { type: 'raw_security', sentry_release: release, sentry_environment: environment },\n report,\n ];\n\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n"],"names":["dsn","getSdkMetadataForEnvelopeHeader","dsnToString","createEnvelope","createEventEnvelopeHeaders","getDynamicSamplingContextFromSpan","shouldIgnoreSpan","spanToJSON","showSpanDropWarning","createSpanEnvelopeItem"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/eventProcessors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/eventProcessors.js new file mode 100644 index 0000000..a314e6c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/eventProcessors.js @@ -0,0 +1,49 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('./debug-build.js'); +const debugLogger = require('./utils/debug-logger.js'); +const is = require('./utils/is.js'); +const syncpromise = require('./utils/syncpromise.js'); + +/** + * Process an array of event processors, returning the processed event (or `null` if the event was dropped). + */ +function notifyEventProcessors( + processors, + event, + hint, + index = 0, +) { + try { + const result = _notifyEventProcessors(event, hint, processors, index); + return is.isThenable(result) ? result : syncpromise.resolvedSyncPromise(result); + } catch (error) { + return syncpromise.rejectedSyncPromise(error); + } +} + +function _notifyEventProcessors( + event, + hint, + processors, + index, +) { + const processor = processors[index]; + + if (!event || !processor) { + return event; + } + + const result = processor({ ...event }, hint); + + debugBuild.DEBUG_BUILD && result === null && debugLogger.debug.log(`Event processor "${processor.id || '?'}" dropped event`); + + if (is.isThenable(result)) { + return result.then(final => _notifyEventProcessors(final, hint, processors, index + 1)); + } + + return _notifyEventProcessors(result, hint, processors, index + 1); +} + +exports.notifyEventProcessors = notifyEventProcessors; +//# sourceMappingURL=eventProcessors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/eventProcessors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/eventProcessors.js.map new file mode 100644 index 0000000..456111e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/eventProcessors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"eventProcessors.js","sources":["../../src/eventProcessors.ts"],"sourcesContent":["import { DEBUG_BUILD } from './debug-build';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport { debug } from './utils/debug-logger';\nimport { isThenable } from './utils/is';\nimport { rejectedSyncPromise, resolvedSyncPromise } from './utils/syncpromise';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n): PromiseLike {\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: Event | null,\n hint: EventHint,\n processors: EventProcessor[],\n index: number,\n): Event | null | PromiseLike {\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"],"names":["isThenable","resolvedSyncPromise","rejectedSyncPromise","DEBUG_BUILD","debug"],"mappings":";;;;;;;AAOA;AACA;AACA;AACO,SAAS,qBAAqB;AACrC,EAAE,UAAU;AACZ,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,KAAK,GAAW,CAAC;AACnB,EAA6B;AAC7B,EAAE,IAAI;AACN,IAAI,MAAM,MAAA,GAAS,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;AACzE,IAAI,OAAOA,aAAU,CAAC,MAAM,CAAA,GAAI,MAAA,GAASC,+BAAmB,CAAC,MAAM,CAAC;AACpE,EAAE,CAAA,CAAE,OAAO,KAAK,EAAE;AAClB,IAAI,OAAOC,+BAAmB,CAAC,KAAK,CAAC;AACrC,EAAE;AACF;;AAEA,SAAS,sBAAsB;AAC/B,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,UAAU;AACZ,EAAE,KAAK;AACP,EAA4C;AAC5C,EAAE,MAAM,SAAA,GAAY,UAAU,CAAC,KAAK,CAAC;;AAErC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAC5B,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,MAAM,MAAA,GAAS,SAAS,CAAC,EAAE,GAAG,KAAA,EAAO,EAAE,IAAI,CAAC;;AAE9C,EAAEC,sBAAA,IAAe,MAAA,KAAW,QAAQC,iBAAK,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAA,IAAM,GAAG,CAAC,eAAe,CAAC,CAAC;;AAEvG,EAAE,IAAIJ,aAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAA,IAAS,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3F,EAAE;;AAEF,EAAE,OAAO,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAA,GAAQ,CAAC,CAAC;AACpE;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/exports.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/exports.js new file mode 100644 index 0000000..427d18a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/exports.js @@ -0,0 +1,357 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('./currentScopes.js'); +const debugBuild = require('./debug-build.js'); +const session = require('./session.js'); +const trace = require('./tracing/trace.js'); +const debugLogger = require('./utils/debug-logger.js'); +const is = require('./utils/is.js'); +const misc = require('./utils/misc.js'); +const prepareEvent = require('./utils/prepareEvent.js'); +const time = require('./utils/time.js'); +const worldwide = require('./utils/worldwide.js'); + +/** + * Captures an exception event and sends it to Sentry. + * + * @param exception The exception to capture. + * @param hint Optional additional data to attach to the Sentry event. + * @returns the id of the captured Sentry event. + */ +function captureException(exception, hint) { + return currentScopes.getCurrentScope().captureException(exception, prepareEvent.parseEventHintOrCaptureContext(hint)); +} + +/** + * Captures a message event and sends it to Sentry. + * + * @param message The message to send to Sentry. + * @param captureContext Define the level of the message or pass in additional data to attach to the message. + * @returns the id of the captured message. + */ +function captureMessage(message, captureContext) { + // This is necessary to provide explicit scopes upgrade, without changing the original + // arity of the `captureMessage(message, level)` method. + const level = typeof captureContext === 'string' ? captureContext : undefined; + const hint = typeof captureContext !== 'string' ? { captureContext } : undefined; + return currentScopes.getCurrentScope().captureMessage(message, level, hint); +} + +/** + * Captures a manually created event and sends it to Sentry. + * + * @param event The event to send to Sentry. + * @param hint Optional additional data to attach to the Sentry event. + * @returns the id of the captured event. + */ +function captureEvent(event, hint) { + return currentScopes.getCurrentScope().captureEvent(event, hint); +} + +/** + * Sets context data with the given name. + * @param name of the context + * @param context Any kind of data. This data will be normalized. + */ +function setContext(name, context) { + currentScopes.getIsolationScope().setContext(name, context); +} + +/** + * Set an object that will be merged sent as extra data with the event. + * @param extras Extras object to merge into current context. + */ +function setExtras(extras) { + currentScopes.getIsolationScope().setExtras(extras); +} + +/** + * Set key:value that will be sent as extra data with the event. + * @param key String of extra + * @param extra Any kind of data. This data will be normalized. + */ +function setExtra(key, extra) { + currentScopes.getIsolationScope().setExtra(key, extra); +} + +/** + * Set an object that will be merged sent as tags data with the event. + * @param tags Tags context object to merge into current context. + */ +function setTags(tags) { + currentScopes.getIsolationScope().setTags(tags); +} + +/** + * Set key:value that will be sent as tags data with the event. + * + * Can also be used to unset a tag, by passing `undefined`. + * + * @param key String key of tag + * @param value Value of tag + */ +function setTag(key, value) { + currentScopes.getIsolationScope().setTag(key, value); +} + +/** + * Updates user context information for future events. + * + * @param user User context object to be set in the current context. Pass `null` to unset the user. + */ +function setUser(user) { + currentScopes.getIsolationScope().setUser(user); +} + +/** + * Sets the conversation ID for the current isolation scope. + * + * @param conversationId The conversation ID to set. Pass `null` or `undefined` to unset the conversation ID. + */ +function setConversationId(conversationId) { + currentScopes.getIsolationScope().setConversationId(conversationId); +} + +/** + * The last error event id of the isolation scope. + * + * Warning: This function really returns the last recorded error event id on the current + * isolation scope. If you call this function after handling a certain error and another error + * is captured in between, the last one is returned instead of the one you might expect. + * Also, ids of events that were never sent to Sentry (for example because + * they were dropped in `beforeSend`) could be returned. + * + * @returns The last event id of the isolation scope. + */ +function lastEventId() { + return currentScopes.getIsolationScope().lastEventId(); +} + +/** + * Create a cron monitor check in and send it to Sentry. + * + * @param checkIn An object that describes a check in. + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + */ +function captureCheckIn(checkIn, upsertMonitorConfig) { + const scope = currentScopes.getCurrentScope(); + const client = currentScopes.getClient(); + if (!client) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Cannot capture check-in. No client defined.'); + } else if (!client.captureCheckIn) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Cannot capture check-in. Client does not support sending check-ins.'); + } else { + return client.captureCheckIn(checkIn, upsertMonitorConfig, scope); + } + + return misc.uuid4(); +} + +/** + * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes. + * + * @param monitorSlug The distinct slug of the monitor. + * @param callback Callback to be monitored + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + */ +function withMonitor( + monitorSlug, + callback, + upsertMonitorConfig, +) { + function runCallback() { + const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig); + const now = time.timestampInSeconds(); + + function finishCheckIn(status) { + captureCheckIn({ monitorSlug, status, checkInId, duration: time.timestampInSeconds() - now }); + } + // Default behavior without isolateTrace + let maybePromiseResult; + try { + maybePromiseResult = callback(); + } catch (e) { + finishCheckIn('error'); + throw e; + } + + if (is.isThenable(maybePromiseResult)) { + return maybePromiseResult.then( + r => { + finishCheckIn('ok'); + return r; + }, + e => { + finishCheckIn('error'); + throw e; + }, + ) ; + } + finishCheckIn('ok'); + + return maybePromiseResult; + } + + return currentScopes.withIsolationScope(() => (upsertMonitorConfig?.isolateTrace ? trace.startNewTrace(runCallback) : runCallback())); +} + +/** + * Call `flush()` on the current client, if there is one. See {@link Client.flush}. + * + * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause + * the client to wait until all events are sent before resolving the promise. + * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it + * doesn't (or if there's no client defined). + */ +async function flush(timeout) { + const client = currentScopes.getClient(); + if (client) { + return client.flush(timeout); + } + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Cannot flush events. No client defined.'); + return Promise.resolve(false); +} + +/** + * Call `close()` on the current client, if there is one. See {@link Client.close}. + * + * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this + * parameter will cause the client to wait until all events are sent before disabling itself. + * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it + * doesn't (or if there's no client defined). + */ +async function close(timeout) { + const client = currentScopes.getClient(); + if (client) { + return client.close(timeout); + } + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Cannot flush events and disable SDK. No client defined.'); + return Promise.resolve(false); +} + +/** + * Returns true if Sentry has been properly initialized. + */ +function isInitialized() { + return !!currentScopes.getClient(); +} + +/** If the SDK is initialized & enabled. */ +function isEnabled() { + const client = currentScopes.getClient(); + return client?.getOptions().enabled !== false && !!client?.getTransport(); +} + +/** + * Add an event processor. + * This will be added to the current isolation scope, ensuring any event that is processed in the current execution + * context will have the processor applied. + */ +function addEventProcessor(callback) { + currentScopes.getIsolationScope().addEventProcessor(callback); +} + +/** + * Start a session on the current isolation scope. + * + * @param context (optional) additional properties to be applied to the returned session object + * + * @returns the new active session + */ +function startSession(context) { + const isolationScope = currentScopes.getIsolationScope(); + const currentScope = currentScopes.getCurrentScope(); + + // Will fetch userAgent if called from browser sdk + const { userAgent } = worldwide.GLOBAL_OBJ.navigator || {}; + + const session$1 = session.makeSession({ + user: currentScope.getUser() || isolationScope.getUser(), + ...(userAgent && { userAgent }), + ...context, + }); + + // End existing session if there's one + const currentSession = isolationScope.getSession(); + if (currentSession?.status === 'ok') { + session.updateSession(currentSession, { status: 'exited' }); + } + + endSession(); + + // Afterwards we set the new session on the scope + isolationScope.setSession(session$1); + + return session$1; +} + +/** + * End the session on the current isolation scope. + */ +function endSession() { + const isolationScope = currentScopes.getIsolationScope(); + const currentScope = currentScopes.getCurrentScope(); + + const session$1 = currentScope.getSession() || isolationScope.getSession(); + if (session$1) { + session.closeSession(session$1); + } + _sendSessionUpdate(); + + // the session is over; take it off of the scope + isolationScope.setSession(); +} + +/** + * Sends the current Session on the scope + */ +function _sendSessionUpdate() { + const isolationScope = currentScopes.getIsolationScope(); + const client = currentScopes.getClient(); + const session = isolationScope.getSession(); + if (session && client) { + client.captureSession(session); + } +} + +/** + * Sends the current session on the scope to Sentry + * + * @param end If set the session will be marked as exited and removed from the scope. + * Defaults to `false`. + */ +function captureSession(end = false) { + // both send the update and pull the session from the scope + if (end) { + endSession(); + return; + } + + // only send the update + _sendSessionUpdate(); +} + +exports.addEventProcessor = addEventProcessor; +exports.captureCheckIn = captureCheckIn; +exports.captureEvent = captureEvent; +exports.captureException = captureException; +exports.captureMessage = captureMessage; +exports.captureSession = captureSession; +exports.close = close; +exports.endSession = endSession; +exports.flush = flush; +exports.isEnabled = isEnabled; +exports.isInitialized = isInitialized; +exports.lastEventId = lastEventId; +exports.setContext = setContext; +exports.setConversationId = setConversationId; +exports.setExtra = setExtra; +exports.setExtras = setExtras; +exports.setTag = setTag; +exports.setTags = setTags; +exports.setUser = setUser; +exports.startSession = startSession; +exports.withMonitor = withMonitor; +//# sourceMappingURL=exports.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/exports.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/exports.js.map new file mode 100644 index 0000000..9ef5a10 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/exports.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exports.js","sources":["../../src/exports.ts"],"sourcesContent":["import { getClient, getCurrentScope, getIsolationScope, withIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { CaptureContext } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { startNewTrace } from './tracing/trace';\nimport type { CheckIn, FinishedCheckIn, MonitorConfig } from './types-hoist/checkin';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { Extra, Extras } from './types-hoist/extra';\nimport type { Primitive } from './types-hoist/misc';\nimport type { Session, SessionContext } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { User } from './types-hoist/user';\nimport { debug } from './utils/debug-logger';\nimport { isThenable } from './utils/is';\nimport { uuid4 } from './utils/misc';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { timestampInSeconds } from './utils/time';\nimport { GLOBAL_OBJ } from './utils/worldwide';\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 */\nexport function captureException(exception: unknown, hint?: ExclusiveEventHintOrCaptureContext): string {\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 */\nexport function captureMessage(message: string, captureContext?: CaptureContext | SeverityLevel): string {\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 */\nexport function captureEvent(event: Event, hint?: EventHint): string {\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 */\nexport function setContext(name: string, context: { [key: string]: unknown } | null): void {\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 */\nexport function setExtras(extras: Extras): void {\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 */\nexport function setExtra(key: string, extra: Extra): void {\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 */\nexport function setTags(tags: { [key: string]: Primitive }): void {\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 */\nexport function setTag(key: string, value: Primitive): void {\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 */\nexport function setUser(user: User | null): void {\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 */\nexport function setConversationId(conversationId: string | null | undefined): void {\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 */\nexport function lastEventId(): string | undefined {\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 */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\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 */\nexport function withMonitor(\n monitorSlug: CheckIn['monitorSlug'],\n callback: () => T,\n upsertMonitorConfig?: MonitorConfig,\n): T {\n function runCallback(): T {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status: FinishedCheckIn['status']): void {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n // Default behavior without isolateTrace\n let maybePromiseResult: T;\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 ) as T;\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 */\nexport async function flush(timeout?: number): Promise {\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 */\nexport async function close(timeout?: number): Promise {\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 */\nexport function isInitialized(): boolean {\n return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nexport function isEnabled(): boolean {\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 */\nexport function addEventProcessor(callback: EventProcessor): void {\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 */\nexport function startSession(context?: SessionContext): Session {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n user: currentScope.getUser() || isolationScope.getUser(),\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 */\nexport function endSession(): void {\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(): void {\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 */\nexport function captureSession(end: boolean = false): void {\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"],"names":["getCurrentScope","parseEventHintOrCaptureContext","getIsolationScope","getClient","DEBUG_BUILD","debug","uuid4","timestampInSeconds","isThenable","withIsolationScope","startNewTrace","GLOBAL_OBJ","session","makeSession","updateSession","closeSession"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/feedback.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/feedback.js new file mode 100644 index 0000000..97bc697 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/feedback.js @@ -0,0 +1,43 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('./currentScopes.js'); + +/** + * Send user feedback to Sentry. + */ +function captureFeedback( + params, + hint = {}, + scope = currentScopes.getCurrentScope(), +) { + const { message, name, email, url, source, associatedEventId, tags } = params; + + const feedbackEvent = { + contexts: { + feedback: { + contact_email: email, + name, + message, + url, + source, + associated_event_id: associatedEventId, + }, + }, + type: 'feedback', + level: 'info', + tags, + }; + + const client = scope?.getClient() || currentScopes.getClient(); + + if (client) { + client.emit('beforeSendFeedback', feedbackEvent, hint); + } + + const eventId = scope.captureEvent(feedbackEvent, hint); + + return eventId; +} + +exports.captureFeedback = captureFeedback; +//# sourceMappingURL=feedback.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/feedback.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/feedback.js.map new file mode 100644 index 0000000..324d3f4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/feedback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"feedback.js","sources":["../../src/feedback.ts"],"sourcesContent":["import { getClient, getCurrentScope } from './currentScopes';\nimport type { EventHint } from './types-hoist/event';\nimport type { FeedbackEvent, SendFeedbackParams } from './types-hoist/feedback';\n\n/**\n * Send user feedback to Sentry.\n */\nexport function captureFeedback(\n params: SendFeedbackParams,\n hint: EventHint & { includeReplay?: boolean } = {},\n scope = getCurrentScope(),\n): string {\n const { message, name, email, url, source, associatedEventId, tags } = params;\n\n const feedbackEvent: FeedbackEvent = {\n contexts: {\n feedback: {\n contact_email: email,\n name,\n message,\n url,\n source,\n associated_event_id: associatedEventId,\n },\n },\n type: 'feedback',\n level: 'info',\n tags,\n };\n\n const client = scope?.getClient() || getClient();\n\n if (client) {\n client.emit('beforeSendFeedback', feedbackEvent, hint);\n }\n\n const eventId = scope.captureEvent(feedbackEvent, hint);\n\n return eventId;\n}\n"],"names":["getCurrentScope","getClient"],"mappings":";;;;AAIA;AACA;AACA;AACO,SAAS,eAAe;AAC/B,EAAE,MAAM;AACR,EAAE,IAAI,GAA4C,EAAE;AACpD,EAAE,KAAA,GAAQA,6BAAe,EAAE;AAC3B,EAAU;AACV,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAA,EAAK,GAAI,MAAM;;AAE/E,EAAE,MAAM,aAAa,GAAkB;AACvC,IAAI,QAAQ,EAAE;AACd,MAAM,QAAQ,EAAE;AAChB,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,IAAI;AACZ,QAAQ,OAAO;AACf,QAAQ,GAAG;AACX,QAAQ,MAAM;AACd,QAAQ,mBAAmB,EAAE,iBAAiB;AAC9C,OAAO;AACP,KAAK;AACL,IAAI,IAAI,EAAE,UAAU;AACpB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,IAAI;AACR,GAAG;;AAEH,EAAE,MAAM,MAAA,GAAS,KAAK,EAAE,SAAS,EAAC,IAAKC,uBAAS,EAAE;;AAElD,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,EAAE,IAAI,CAAC;AAC1D,EAAE;;AAEF,EAAE,MAAM,OAAA,GAAU,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC;;AAEzD,EAAE,OAAO,OAAO;AAChB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/fetch.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/fetch.js new file mode 100644 index 0000000..f193e0b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/fetch.js @@ -0,0 +1,321 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('./currentScopes.js'); +const semanticAttributes = require('./semanticAttributes.js'); +const spanUtils = require('./utils/spanUtils.js'); +const spanstatus = require('./tracing/spanstatus.js'); +const is = require('./utils/is.js'); +const hasSpansEnabled = require('./utils/hasSpansEnabled.js'); +const baggage = require('./utils/baggage.js'); +const sentryNonRecordingSpan = require('./tracing/sentryNonRecordingSpan.js'); +const trace = require('./tracing/trace.js'); +const traceData = require('./utils/traceData.js'); +const url = require('./utils/url.js'); + +/** + * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`. + * + * @returns Span if a span was created, otherwise void. + */ +function instrumentFetchRequest( + handlerData, + shouldCreateSpan, + shouldAttachHeaders, + spans, + spanOriginOrOptions, +) { + if (!handlerData.fetchData) { + return undefined; + } + + const { method, url } = handlerData.fetchData; + + const shouldCreateSpanResult = hasSpansEnabled.hasSpansEnabled() && shouldCreateSpan(url); + + if (handlerData.endTimestamp && shouldCreateSpanResult) { + const spanId = handlerData.fetchData.__span; + if (!spanId) return; + + const span = spans[spanId]; + if (span) { + endSpan(span, handlerData); + + _callOnRequestSpanEnd(span, handlerData, spanOriginOrOptions); + + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete spans[spanId]; + } + return undefined; + } + + // Backwards-compatible with the old signature. Needed to introduce the combined optional parameter + // to avoid API breakage for anyone calling this function with the optional spanOrigin parameter + // TODO (v11): remove this backwards-compatible code and only accept the options parameter + const { spanOrigin = 'auto.http.browser', propagateTraceparent = false } = + typeof spanOriginOrOptions === 'object' ? spanOriginOrOptions : { spanOrigin: spanOriginOrOptions }; + + const hasParent = !!spanUtils.getActiveSpan(); + + const span = + shouldCreateSpanResult && hasParent + ? trace.startInactiveSpan(getSpanStartOptions(url, method, spanOrigin)) + : new sentryNonRecordingSpan.SentryNonRecordingSpan(); + + handlerData.fetchData.__span = span.spanContext().spanId; + spans[span.spanContext().spanId] = span; + + if (shouldAttachHeaders(handlerData.fetchData.url)) { + const request = handlerData.args[0]; + + // Shallow clone the options object to avoid mutating the original user-provided object + // Examples: users re-using same options object for multiple fetch calls, frozen objects + const options = { ...(handlerData.args[1] || {}) }; + + const headers = _addTracingHeadersToFetchRequest( + request, + options, + // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction), + // we do not want to use the span as base for the trace headers, + // which means that the headers will be generated from the scope and the sampling decision is deferred + hasSpansEnabled.hasSpansEnabled() && hasParent ? span : undefined, + propagateTraceparent, + ); + if (headers) { + // Ensure this is actually set, if no options have been passed previously + handlerData.args[1] = options; + options.headers = headers; + } + } + + const client = currentScopes.getClient(); + + if (client) { + const fetchHint = { + input: handlerData.args, + response: handlerData.response, + startTimestamp: handlerData.startTimestamp, + endTimestamp: handlerData.endTimestamp, + } ; + + client.emit('beforeOutgoingRequestSpan', span, fetchHint); + } + + return span; +} + +/** + * Calls the onRequestSpanEnd callback if it is defined. + */ +function _callOnRequestSpanEnd( + span, + handlerData, + spanOriginOrOptions, +) { + const onRequestSpanEnd = + typeof spanOriginOrOptions === 'object' && spanOriginOrOptions !== null + ? spanOriginOrOptions.onRequestSpanEnd + : undefined; + + onRequestSpanEnd?.(span, { + headers: handlerData.response?.headers, + error: handlerData.error, + }); +} + +/** + * Adds sentry-trace and baggage headers to the various forms of fetch headers. + * exported only for testing purposes + * + * When we determine if we should add a baggage header, there are 3 cases: + * 1. No previous baggage header -> add baggage + * 2. Previous baggage header has no sentry baggage values -> add our baggage + * 3. Previous baggage header has sentry baggage values -> do nothing (might have been added manually by users) + */ +// eslint-disable-next-line complexity -- yup it's this complicated :( +function _addTracingHeadersToFetchRequest( + request, + fetchOptionsObj + +, + span, + propagateTraceparent, +) { + const traceHeaders = traceData.getTraceData({ span, propagateTraceparent }); + const sentryTrace = traceHeaders['sentry-trace']; + const baggage = traceHeaders.baggage; + const traceparent = traceHeaders.traceparent; + + // Nothing to do, when we return undefined here, the original headers will be used + if (!sentryTrace) { + return undefined; + } + + const originalHeaders = fetchOptionsObj.headers || (is.isRequest(request) ? request.headers : undefined); + + if (!originalHeaders) { + return { ...traceHeaders }; + } else if (isHeaders(originalHeaders)) { + const newHeaders = new Headers(originalHeaders); + + // We don't want to override manually added sentry headers + if (!newHeaders.get('sentry-trace')) { + newHeaders.set('sentry-trace', sentryTrace); + } + + if (propagateTraceparent && traceparent && !newHeaders.get('traceparent')) { + newHeaders.set('traceparent', traceparent); + } + + if (baggage) { + const prevBaggageHeader = newHeaders.get('baggage'); + + if (!prevBaggageHeader) { + newHeaders.set('baggage', baggage); + } else if (!baggageHeaderHasSentryBaggageValues(prevBaggageHeader)) { + newHeaders.set('baggage', `${prevBaggageHeader},${baggage}`); + } + } + + return newHeaders; + } else if (Array.isArray(originalHeaders)) { + const newHeaders = [...originalHeaders]; + + if (!originalHeaders.find(header => header[0] === 'sentry-trace')) { + newHeaders.push(['sentry-trace', sentryTrace]); + } + + if (propagateTraceparent && traceparent && !originalHeaders.find(header => header[0] === 'traceparent')) { + newHeaders.push(['traceparent', traceparent]); + } + + const prevBaggageHeaderWithSentryValues = originalHeaders.find( + header => header[0] === 'baggage' && baggageHeaderHasSentryBaggageValues(header[1]), + ); + + if (baggage && !prevBaggageHeaderWithSentryValues) { + // If there are multiple entries with the same key, the browser will merge the values into a single request header. + // Its therefore safe to simply push a "baggage" entry, even though there might already be another baggage header. + newHeaders.push(['baggage', baggage]); + } + + return newHeaders ; + } else { + const existingSentryTraceHeader = 'sentry-trace' in originalHeaders ? originalHeaders['sentry-trace'] : undefined; + const existingTraceparentHeader = 'traceparent' in originalHeaders ? originalHeaders.traceparent : undefined; + const existingBaggageHeader = 'baggage' in originalHeaders ? originalHeaders.baggage : undefined; + + const newBaggageHeaders = existingBaggageHeader + ? Array.isArray(existingBaggageHeader) + ? [...existingBaggageHeader] + : [existingBaggageHeader] + : []; + + const prevBaggageHeaderWithSentryValues = + existingBaggageHeader && + (Array.isArray(existingBaggageHeader) + ? existingBaggageHeader.find(headerItem => baggageHeaderHasSentryBaggageValues(headerItem)) + : baggageHeaderHasSentryBaggageValues(existingBaggageHeader)); + + if (baggage && !prevBaggageHeaderWithSentryValues) { + newBaggageHeaders.push(baggage); + } + + const newHeaders + + = { + ...originalHeaders, + 'sentry-trace': (existingSentryTraceHeader ) ?? sentryTrace, + baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined, + }; + + if (propagateTraceparent && traceparent && !existingTraceparentHeader) { + newHeaders.traceparent = traceparent; + } + + return newHeaders; + } +} + +function endSpan(span, handlerData) { + if (handlerData.response) { + spanstatus.setHttpStatus(span, handlerData.response.status); + + const contentLength = handlerData.response?.headers?.get('content-length'); + + if (contentLength) { + const contentLengthNum = parseInt(contentLength); + if (contentLengthNum > 0) { + span.setAttribute('http.response_content_length', contentLengthNum); + } + } + } else if (handlerData.error) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'internal_error' }); + } + span.end(); +} + +function baggageHeaderHasSentryBaggageValues(baggageHeader) { + return baggageHeader.split(',').some(baggageEntry => baggageEntry.trim().startsWith(baggage.SENTRY_BAGGAGE_KEY_PREFIX)); +} + +function isHeaders(headers) { + return typeof Headers !== 'undefined' && is.isInstanceOf(headers, Headers); +} + +function getSpanStartOptions( + url$1, + method, + spanOrigin, +) { + // Data URLs need special handling because parseStringToURLObject treats them as "relative" + // (no "://"), causing getSanitizedUrlStringFromUrlObject to return just the pathname + // without the "data:" prefix, making later stripDataUrlContent calls ineffective. + // So for data URLs, we strip the content first and use that directly. + if (url$1.startsWith('data:')) { + const sanitizedUrl = url.stripDataUrlContent(url$1); + return { + name: `${method} ${sanitizedUrl}`, + attributes: getFetchSpanAttributes(url$1, undefined, method, spanOrigin), + }; + } + + const parsedUrl = url.parseStringToURLObject(url$1); + const sanitizedUrl = parsedUrl ? url.getSanitizedUrlStringFromUrlObject(parsedUrl) : url$1; + return { + name: `${method} ${sanitizedUrl}`, + attributes: getFetchSpanAttributes(url$1, parsedUrl, method, spanOrigin), + }; +} + +function getFetchSpanAttributes( + url$1, + parsedUrl, + method, + spanOrigin, +) { + const attributes = { + url: url.stripDataUrlContent(url$1), + type: 'fetch', + 'http.method': method, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client', + }; + if (parsedUrl) { + if (!url.isURLObjectRelative(parsedUrl)) { + attributes['http.url'] = url.stripDataUrlContent(parsedUrl.href); + attributes['server.address'] = parsedUrl.host; + } + if (parsedUrl.search) { + attributes['http.query'] = parsedUrl.search; + } + if (parsedUrl.hash) { + attributes['http.fragment'] = parsedUrl.hash; + } + } + return attributes; +} + +exports._addTracingHeadersToFetchRequest = _addTracingHeadersToFetchRequest; +exports._callOnRequestSpanEnd = _callOnRequestSpanEnd; +exports.instrumentFetchRequest = instrumentFetchRequest; +//# sourceMappingURL=fetch.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/fetch.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/fetch.js.map new file mode 100644 index 0000000..866d29a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/fetch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fetch.js","sources":["../../src/fetch.ts"],"sourcesContent":["import { getClient } from './currentScopes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from './semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, startInactiveSpan } from './tracing';\nimport { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan';\nimport type { FetchBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { HandlerDataFetch } from './types-hoist/instrument';\nimport type { ResponseHookInfo } from './types-hoist/request';\nimport type { Span, SpanAttributes, SpanOrigin } from './types-hoist/span';\nimport { SENTRY_BAGGAGE_KEY_PREFIX } from './utils/baggage';\nimport { hasSpansEnabled } from './utils/hasSpansEnabled';\nimport { isInstanceOf, isRequest } from './utils/is';\nimport { getActiveSpan } from './utils/spanUtils';\nimport { getTraceData } from './utils/traceData';\nimport {\n getSanitizedUrlStringFromUrlObject,\n isURLObjectRelative,\n parseStringToURLObject,\n stripDataUrlContent,\n} from './utils/url';\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not precisely the Header type used in Request, but it'll pass duck-typing\n | {\n append: (key: string, value: string) => void;\n get: (key: string) => string | null | undefined;\n };\n\ninterface InstrumentFetchRequestOptions {\n spanOrigin?: SpanOrigin;\n propagateTraceparent?: boolean;\n onRequestSpanEnd?: (span: Span, responseInformation: ResponseHookInfo) => void;\n}\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @deprecated pass an options object instead of the spanOrigin parameter\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOrigin: SpanOrigin,\n): Span | undefined;\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- needed because the other overload is deprecated\n instrumentFetchRequestOptions: InstrumentFetchRequestOptions,\n): Span | undefined;\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): Span | undefined {\n if (!handlerData.fetchData) {\n return undefined;\n }\n\n const { method, url } = handlerData.fetchData;\n\n const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url);\n\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n endSpan(span, handlerData);\n\n _callOnRequestSpanEnd(span, handlerData, spanOriginOrOptions);\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n // Backwards-compatible with the old signature. Needed to introduce the combined optional parameter\n // to avoid API breakage for anyone calling this function with the optional spanOrigin parameter\n // TODO (v11): remove this backwards-compatible code and only accept the options parameter\n const { spanOrigin = 'auto.http.browser', propagateTraceparent = false } =\n typeof spanOriginOrOptions === 'object' ? spanOriginOrOptions : { spanOrigin: spanOriginOrOptions };\n\n const hasParent = !!getActiveSpan();\n\n const span =\n shouldCreateSpanResult && hasParent\n ? startInactiveSpan(getSpanStartOptions(url, method, spanOrigin))\n : new SentryNonRecordingSpan();\n\n handlerData.fetchData.__span = span.spanContext().spanId;\n spans[span.spanContext().spanId] = span;\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n const request: string | Request = handlerData.args[0];\n\n // Shallow clone the options object to avoid mutating the original user-provided object\n // Examples: users re-using same options object for multiple fetch calls, frozen objects\n const options: { [key: string]: unknown } = { ...(handlerData.args[1] || {}) };\n\n const headers = _addTracingHeadersToFetchRequest(\n request,\n options,\n // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction),\n // we do not want to use the span as base for the trace headers,\n // which means that the headers will be generated from the scope and the sampling decision is deferred\n hasSpansEnabled() && hasParent ? span : undefined,\n propagateTraceparent,\n );\n if (headers) {\n // Ensure this is actually set, if no options have been passed previously\n handlerData.args[1] = options;\n options.headers = headers;\n }\n }\n\n const client = getClient();\n\n if (client) {\n const fetchHint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp: handlerData.startTimestamp,\n endTimestamp: handlerData.endTimestamp,\n } satisfies FetchBreadcrumbHint;\n\n client.emit('beforeOutgoingRequestSpan', span, fetchHint);\n }\n\n return span;\n}\n\n/**\n * Calls the onRequestSpanEnd callback if it is defined.\n */\nexport function _callOnRequestSpanEnd(\n span: Span,\n handlerData: HandlerDataFetch,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): void {\n const onRequestSpanEnd =\n typeof spanOriginOrOptions === 'object' && spanOriginOrOptions !== null\n ? spanOriginOrOptions.onRequestSpanEnd\n : undefined;\n\n onRequestSpanEnd?.(span, {\n headers: handlerData.response?.headers,\n error: handlerData.error,\n });\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers.\n * exported only for testing purposes\n *\n * When we determine if we should add a baggage header, there are 3 cases:\n * 1. No previous baggage header -> add baggage\n * 2. Previous baggage header has no sentry baggage values -> add our baggage\n * 3. Previous baggage header has sentry baggage values -> do nothing (might have been added manually by users)\n */\n// eslint-disable-next-line complexity -- yup it's this complicated :(\nexport function _addTracingHeadersToFetchRequest(\n request: string | Request,\n fetchOptionsObj: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | PolymorphicRequestHeaders;\n },\n span?: Span,\n propagateTraceparent?: boolean,\n): PolymorphicRequestHeaders | undefined {\n const traceHeaders = getTraceData({ span, propagateTraceparent });\n const sentryTrace = traceHeaders['sentry-trace'];\n const baggage = traceHeaders.baggage;\n const traceparent = traceHeaders.traceparent;\n\n // Nothing to do, when we return undefined here, the original headers will be used\n if (!sentryTrace) {\n return undefined;\n }\n\n const originalHeaders = fetchOptionsObj.headers || (isRequest(request) ? request.headers : undefined);\n\n if (!originalHeaders) {\n return { ...traceHeaders };\n } else if (isHeaders(originalHeaders)) {\n const newHeaders = new Headers(originalHeaders);\n\n // We don't want to override manually added sentry headers\n if (!newHeaders.get('sentry-trace')) {\n newHeaders.set('sentry-trace', sentryTrace);\n }\n\n if (propagateTraceparent && traceparent && !newHeaders.get('traceparent')) {\n newHeaders.set('traceparent', traceparent);\n }\n\n if (baggage) {\n const prevBaggageHeader = newHeaders.get('baggage');\n\n if (!prevBaggageHeader) {\n newHeaders.set('baggage', baggage);\n } else if (!baggageHeaderHasSentryBaggageValues(prevBaggageHeader)) {\n newHeaders.set('baggage', `${prevBaggageHeader},${baggage}`);\n }\n }\n\n return newHeaders;\n } else if (Array.isArray(originalHeaders)) {\n const newHeaders = [...originalHeaders];\n\n if (!originalHeaders.find(header => header[0] === 'sentry-trace')) {\n newHeaders.push(['sentry-trace', sentryTrace]);\n }\n\n if (propagateTraceparent && traceparent && !originalHeaders.find(header => header[0] === 'traceparent')) {\n newHeaders.push(['traceparent', traceparent]);\n }\n\n const prevBaggageHeaderWithSentryValues = originalHeaders.find(\n header => header[0] === 'baggage' && baggageHeaderHasSentryBaggageValues(header[1]),\n );\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push(['baggage', baggage]);\n }\n\n return newHeaders as PolymorphicRequestHeaders;\n } else {\n const existingSentryTraceHeader = 'sentry-trace' in originalHeaders ? originalHeaders['sentry-trace'] : undefined;\n const existingTraceparentHeader = 'traceparent' in originalHeaders ? originalHeaders.traceparent : undefined;\n const existingBaggageHeader = 'baggage' in originalHeaders ? originalHeaders.baggage : undefined;\n\n const newBaggageHeaders: string[] = existingBaggageHeader\n ? Array.isArray(existingBaggageHeader)\n ? [...existingBaggageHeader]\n : [existingBaggageHeader]\n : [];\n\n const prevBaggageHeaderWithSentryValues =\n existingBaggageHeader &&\n (Array.isArray(existingBaggageHeader)\n ? existingBaggageHeader.find(headerItem => baggageHeaderHasSentryBaggageValues(headerItem))\n : baggageHeaderHasSentryBaggageValues(existingBaggageHeader));\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n newBaggageHeaders.push(baggage);\n }\n\n const newHeaders: {\n 'sentry-trace': string;\n baggage: string | undefined;\n traceparent?: string;\n } = {\n ...originalHeaders,\n 'sentry-trace': (existingSentryTraceHeader as string | undefined) ?? sentryTrace,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n\n if (propagateTraceparent && traceparent && !existingTraceparentHeader) {\n newHeaders.traceparent = traceparent;\n }\n\n return newHeaders;\n }\n}\n\nfunction endSpan(span: Span, handlerData: HandlerDataFetch): void {\n if (handlerData.response) {\n setHttpStatus(span, handlerData.response.status);\n\n const contentLength = handlerData.response?.headers?.get('content-length');\n\n if (contentLength) {\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setAttribute('http.response_content_length', contentLengthNum);\n }\n }\n } else if (handlerData.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n span.end();\n}\n\nfunction baggageHeaderHasSentryBaggageValues(baggageHeader: string): boolean {\n return baggageHeader.split(',').some(baggageEntry => baggageEntry.trim().startsWith(SENTRY_BAGGAGE_KEY_PREFIX));\n}\n\nfunction isHeaders(headers: unknown): headers is Headers {\n return typeof Headers !== 'undefined' && isInstanceOf(headers, Headers);\n}\n\nfunction getSpanStartOptions(\n url: string,\n method: string,\n spanOrigin: SpanOrigin,\n): Parameters[0] {\n // Data URLs need special handling because parseStringToURLObject treats them as \"relative\"\n // (no \"://\"), causing getSanitizedUrlStringFromUrlObject to return just the pathname\n // without the \"data:\" prefix, making later stripDataUrlContent calls ineffective.\n // So for data URLs, we strip the content first and use that directly.\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, undefined, method, spanOrigin),\n };\n }\n\n const parsedUrl = parseStringToURLObject(url);\n const sanitizedUrl = parsedUrl ? getSanitizedUrlStringFromUrlObject(parsedUrl) : url;\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, parsedUrl, method, spanOrigin),\n };\n}\n\nfunction getFetchSpanAttributes(\n url: string,\n parsedUrl: ReturnType,\n method: string,\n spanOrigin: SpanOrigin,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n url: stripDataUrlContent(url),\n type: 'fetch',\n 'http.method': method,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n };\n if (parsedUrl) {\n if (!isURLObjectRelative(parsedUrl)) {\n attributes['http.url'] = stripDataUrlContent(parsedUrl.href);\n attributes['server.address'] = parsedUrl.host;\n }\n if (parsedUrl.search) {\n attributes['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n attributes['http.fragment'] = parsedUrl.hash;\n }\n }\n return attributes;\n}\n"],"names":["hasSpansEnabled","getActiveSpan","startInactiveSpan","SentryNonRecordingSpan","getClient","getTraceData","isRequest","setHttpStatus","SPAN_STATUS_ERROR","SENTRY_BAGGAGE_KEY_PREFIX","isInstanceOf","url","stripDataUrlContent","parseStringToURLObject","getSanitizedUrlStringFromUrlObject","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_OP","isURLObjectRelative"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/index.js new file mode 100644 index 0000000..1c7a285 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/index.js @@ -0,0 +1,494 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const errors = require('./tracing/errors.js'); +const utils$1 = require('./tracing/utils.js'); +const idleSpan = require('./tracing/idleSpan.js'); +const sentrySpan = require('./tracing/sentrySpan.js'); +const sentryNonRecordingSpan = require('./tracing/sentryNonRecordingSpan.js'); +const spanstatus = require('./tracing/spanstatus.js'); +const trace = require('./tracing/trace.js'); +const dynamicSamplingContext = require('./tracing/dynamicSamplingContext.js'); +const measurement = require('./tracing/measurement.js'); +const sampling = require('./tracing/sampling.js'); +const logSpans = require('./tracing/logSpans.js'); +const semanticAttributes = require('./semanticAttributes.js'); +const envelope = require('./envelope.js'); +const exports$1 = require('./exports.js'); +const currentScopes = require('./currentScopes.js'); +const defaultScopes = require('./defaultScopes.js'); +const index = require('./asyncContext/index.js'); +const carrier = require('./carrier.js'); +const session = require('./session.js'); +const scope = require('./scope.js'); +const eventProcessors = require('./eventProcessors.js'); +const api = require('./api.js'); +const client = require('./client.js'); +const serverRuntimeClient = require('./server-runtime-client.js'); +const sdk = require('./sdk.js'); +const base = require('./transports/base.js'); +const offline = require('./transports/offline.js'); +const multiplexed = require('./transports/multiplexed.js'); +const integration = require('./integration.js'); +const providerSkip = require('./utils/ai/providerSkip.js'); +const scopeData = require('./utils/scopeData.js'); +const prepareEvent = require('./utils/prepareEvent.js'); +const checkin = require('./checkin.js'); +const hasSpansEnabled = require('./utils/hasSpansEnabled.js'); +const isSentryRequestUrl = require('./utils/isSentryRequestUrl.js'); +const handleCallbackErrors = require('./utils/handleCallbackErrors.js'); +const parameterize = require('./utils/parameterize.js'); +const ipAddress = require('./utils/ipAddress.js'); +const spanUtils = require('./utils/spanUtils.js'); +const spanOnScope = require('./utils/spanOnScope.js'); +const parseSampleRate = require('./utils/parseSampleRate.js'); +const sdkMetadata = require('./utils/sdkMetadata.js'); +const traceData = require('./utils/traceData.js'); +const meta = require('./utils/meta.js'); +const debounce = require('./utils/debounce.js'); +const request = require('./utils/request.js'); +const constants = require('./constants.js'); +const breadcrumbs = require('./breadcrumbs.js'); +const functiontostring = require('./integrations/functiontostring.js'); +const eventFilters = require('./integrations/eventFilters.js'); +const linkederrors = require('./integrations/linkederrors.js'); +const moduleMetadata = require('./integrations/moduleMetadata.js'); +const requestdata = require('./integrations/requestdata.js'); +const captureconsole = require('./integrations/captureconsole.js'); +const dedupe = require('./integrations/dedupe.js'); +const extraerrordata = require('./integrations/extraerrordata.js'); +const rewriteframes = require('./integrations/rewriteframes.js'); +const supabase = require('./integrations/supabase.js'); +const zoderrors = require('./integrations/zoderrors.js'); +const thirdPartyErrorsFilter = require('./integrations/third-party-errors-filter.js'); +const console = require('./integrations/console.js'); +const featureFlagsIntegration = require('./integrations/featureFlags/featureFlagsIntegration.js'); +const growthbook = require('./integrations/featureFlags/growthbook.js'); +const conversationId = require('./integrations/conversationId.js'); +const profiling = require('./profiling.js'); +const fetch = require('./fetch.js'); +const trpc = require('./trpc.js'); +const index$1 = require('./integrations/mcp-server/index.js'); +const feedback = require('./feedback.js'); +const internal = require('./logs/internal.js'); +const publicApi = require('./logs/public-api.js'); +const consoleIntegration = require('./logs/console-integration.js'); +const internal$1 = require('./metrics/internal.js'); +const publicApi$1 = require('./metrics/public-api.js'); +const consola = require('./integrations/consola.js'); +const index$2 = require('./tracing/vercel-ai/index.js'); +const utils = require('./tracing/vercel-ai/utils.js'); +const index$3 = require('./tracing/openai/index.js'); +const constants$1 = require('./tracing/openai/constants.js'); +const index$4 = require('./tracing/anthropic-ai/index.js'); +const constants$2 = require('./tracing/anthropic-ai/constants.js'); +const index$5 = require('./tracing/google-genai/index.js'); +const constants$3 = require('./tracing/google-genai/constants.js'); +const index$6 = require('./tracing/langchain/index.js'); +const constants$4 = require('./tracing/langchain/constants.js'); +const index$7 = require('./tracing/langgraph/index.js'); +const constants$5 = require('./tracing/langgraph/constants.js'); +const featureFlags = require('./utils/featureFlags.js'); +const aggregateErrors = require('./utils/aggregate-errors.js'); +const breadcrumbLogLevel = require('./utils/breadcrumb-log-level.js'); +const browser = require('./utils/browser.js'); +const dsn = require('./utils/dsn.js'); +const error = require('./utils/error.js'); +const worldwide = require('./utils/worldwide.js'); +const console$1 = require('./instrument/console.js'); +const fetch$1 = require('./instrument/fetch.js'); +const globalError = require('./instrument/globalError.js'); +const globalUnhandledRejection = require('./instrument/globalUnhandledRejection.js'); +const handlers = require('./instrument/handlers.js'); +const is = require('./utils/is.js'); +const isBrowser = require('./utils/isBrowser.js'); +const debugLogger = require('./utils/debug-logger.js'); +const misc = require('./utils/misc.js'); +const node = require('./utils/node.js'); +const normalize = require('./utils/normalize.js'); +const object = require('./utils/object.js'); +const path = require('./utils/path.js'); +const promisebuffer = require('./utils/promisebuffer.js'); +const severity = require('./utils/severity.js'); +const exports$2 = require('./utils/exports.js'); +const stacktrace = require('./utils/stacktrace.js'); +const nodeStackTrace = require('./utils/node-stack-trace.js'); +const string = require('./utils/string.js'); +const supports = require('./utils/supports.js'); +const syncpromise = require('./utils/syncpromise.js'); +const time = require('./utils/time.js'); +const tracing = require('./utils/tracing.js'); +const env = require('./utils/env.js'); +const envelope$1 = require('./utils/envelope.js'); +const clientreport = require('./utils/clientreport.js'); +const ratelimit = require('./utils/ratelimit.js'); +const baggage = require('./utils/baggage.js'); +const url = require('./utils/url.js'); +const eventbuilder = require('./utils/eventbuilder.js'); +const anr = require('./utils/anr.js'); +const lru = require('./utils/lru.js'); +const propagationContext = require('./utils/propagationContext.js'); +const vercelWaitUntil = require('./utils/vercelWaitUntil.js'); +const flushIfServerless = require('./utils/flushIfServerless.js'); +const version = require('./utils/version.js'); +const debugIds = require('./utils/debug-ids.js'); +const metadata = require('./metadata.js'); +const escapeStringForRegex = require('./vendor/escapeStringForRegex.js'); +const randomSafeContext = require('./utils/randomSafeContext.js'); + + + +exports.registerSpanErrorInstrumentation = errors.registerSpanErrorInstrumentation; +exports.getCapturedScopesOnSpan = utils$1.getCapturedScopesOnSpan; +exports.setCapturedScopesOnSpan = utils$1.setCapturedScopesOnSpan; +exports.TRACING_DEFAULTS = idleSpan.TRACING_DEFAULTS; +exports.startIdleSpan = idleSpan.startIdleSpan; +exports.SentrySpan = sentrySpan.SentrySpan; +exports.SentryNonRecordingSpan = sentryNonRecordingSpan.SentryNonRecordingSpan; +exports.SPAN_STATUS_ERROR = spanstatus.SPAN_STATUS_ERROR; +exports.SPAN_STATUS_OK = spanstatus.SPAN_STATUS_OK; +exports.SPAN_STATUS_UNSET = spanstatus.SPAN_STATUS_UNSET; +exports.getSpanStatusFromHttpCode = spanstatus.getSpanStatusFromHttpCode; +exports.setHttpStatus = spanstatus.setHttpStatus; +exports.continueTrace = trace.continueTrace; +exports.startInactiveSpan = trace.startInactiveSpan; +exports.startNewTrace = trace.startNewTrace; +exports.startSpan = trace.startSpan; +exports.startSpanManual = trace.startSpanManual; +exports.suppressTracing = trace.suppressTracing; +exports.withActiveSpan = trace.withActiveSpan; +exports.getDynamicSamplingContextFromClient = dynamicSamplingContext.getDynamicSamplingContextFromClient; +exports.getDynamicSamplingContextFromScope = dynamicSamplingContext.getDynamicSamplingContextFromScope; +exports.getDynamicSamplingContextFromSpan = dynamicSamplingContext.getDynamicSamplingContextFromSpan; +exports.spanToBaggageHeader = dynamicSamplingContext.spanToBaggageHeader; +exports.setMeasurement = measurement.setMeasurement; +exports.timedEventsToMeasurements = measurement.timedEventsToMeasurements; +exports.sampleSpan = sampling.sampleSpan; +exports.logSpanEnd = logSpans.logSpanEnd; +exports.logSpanStart = logSpans.logSpanStart; +exports.GEN_AI_CONVERSATION_ID_ATTRIBUTE = semanticAttributes.GEN_AI_CONVERSATION_ID_ATTRIBUTE; +exports.SEMANTIC_ATTRIBUTE_CACHE_HIT = semanticAttributes.SEMANTIC_ATTRIBUTE_CACHE_HIT; +exports.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = semanticAttributes.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE; +exports.SEMANTIC_ATTRIBUTE_CACHE_KEY = semanticAttributes.SEMANTIC_ATTRIBUTE_CACHE_KEY; +exports.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = semanticAttributes.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME; +exports.SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = semanticAttributes.SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD; +exports.SEMANTIC_ATTRIBUTE_PROFILE_ID = semanticAttributes.SEMANTIC_ATTRIBUTE_PROFILE_ID; +exports.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME; +exports.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON; +exports.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT; +exports.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE; +exports.SEMANTIC_ATTRIBUTE_SENTRY_OP = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP; +exports.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN; +exports.SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE; +exports.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE; +exports.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE; +exports.SEMANTIC_ATTRIBUTE_URL_FULL = semanticAttributes.SEMANTIC_ATTRIBUTE_URL_FULL; +exports.SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = semanticAttributes.SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE; +exports.createEventEnvelope = envelope.createEventEnvelope; +exports.createSessionEnvelope = envelope.createSessionEnvelope; +exports.createSpanEnvelope = envelope.createSpanEnvelope; +exports.addEventProcessor = exports$1.addEventProcessor; +exports.captureCheckIn = exports$1.captureCheckIn; +exports.captureEvent = exports$1.captureEvent; +exports.captureException = exports$1.captureException; +exports.captureMessage = exports$1.captureMessage; +exports.captureSession = exports$1.captureSession; +exports.close = exports$1.close; +exports.endSession = exports$1.endSession; +exports.flush = exports$1.flush; +exports.isEnabled = exports$1.isEnabled; +exports.isInitialized = exports$1.isInitialized; +exports.lastEventId = exports$1.lastEventId; +exports.setContext = exports$1.setContext; +exports.setConversationId = exports$1.setConversationId; +exports.setExtra = exports$1.setExtra; +exports.setExtras = exports$1.setExtras; +exports.setTag = exports$1.setTag; +exports.setTags = exports$1.setTags; +exports.setUser = exports$1.setUser; +exports.startSession = exports$1.startSession; +exports.withMonitor = exports$1.withMonitor; +exports.getClient = currentScopes.getClient; +exports.getCurrentScope = currentScopes.getCurrentScope; +exports.getGlobalScope = currentScopes.getGlobalScope; +exports.getIsolationScope = currentScopes.getIsolationScope; +exports.getTraceContextFromScope = currentScopes.getTraceContextFromScope; +exports.withIsolationScope = currentScopes.withIsolationScope; +exports.withScope = currentScopes.withScope; +exports.getDefaultCurrentScope = defaultScopes.getDefaultCurrentScope; +exports.getDefaultIsolationScope = defaultScopes.getDefaultIsolationScope; +exports.setAsyncContextStrategy = index.setAsyncContextStrategy; +exports.getGlobalSingleton = carrier.getGlobalSingleton; +exports.getMainCarrier = carrier.getMainCarrier; +exports.closeSession = session.closeSession; +exports.makeSession = session.makeSession; +exports.updateSession = session.updateSession; +exports.Scope = scope.Scope; +exports.notifyEventProcessors = eventProcessors.notifyEventProcessors; +exports.getEnvelopeEndpointWithUrlEncodedAuth = api.getEnvelopeEndpointWithUrlEncodedAuth; +exports.getReportDialogEndpoint = api.getReportDialogEndpoint; +exports.Client = client.Client; +exports.ServerRuntimeClient = serverRuntimeClient.ServerRuntimeClient; +exports.initAndBind = sdk.initAndBind; +exports.setCurrentClient = sdk.setCurrentClient; +exports.createTransport = base.createTransport; +exports.makeOfflineTransport = offline.makeOfflineTransport; +exports.MULTIPLEXED_TRANSPORT_EXTRA_KEY = multiplexed.MULTIPLEXED_TRANSPORT_EXTRA_KEY; +exports.makeMultiplexedTransport = multiplexed.makeMultiplexedTransport; +exports.addIntegration = integration.addIntegration; +exports.defineIntegration = integration.defineIntegration; +exports.getIntegrationsToSetup = integration.getIntegrationsToSetup; +exports.installedIntegrations = integration.installedIntegrations; +exports._INTERNAL_clearAiProviderSkips = providerSkip._INTERNAL_clearAiProviderSkips; +exports._INTERNAL_shouldSkipAiProviderWrapping = providerSkip._INTERNAL_shouldSkipAiProviderWrapping; +exports._INTERNAL_skipAiProviderWrapping = providerSkip._INTERNAL_skipAiProviderWrapping; +exports.applyScopeDataToEvent = scopeData.applyScopeDataToEvent; +exports.getCombinedScopeData = scopeData.getCombinedScopeData; +exports.mergeScopeData = scopeData.mergeScopeData; +exports.prepareEvent = prepareEvent.prepareEvent; +exports.createCheckInEnvelope = checkin.createCheckInEnvelope; +exports.hasSpansEnabled = hasSpansEnabled.hasSpansEnabled; +exports.isSentryRequestUrl = isSentryRequestUrl.isSentryRequestUrl; +exports.handleCallbackErrors = handleCallbackErrors.handleCallbackErrors; +exports.fmt = parameterize.fmt; +exports.parameterize = parameterize.parameterize; +exports.addAutoIpAddressToSession = ipAddress.addAutoIpAddressToSession; +exports.addAutoIpAddressToUser = ipAddress.addAutoIpAddressToUser; +exports.addChildSpanToSpan = spanUtils.addChildSpanToSpan; +exports.convertSpanLinksForEnvelope = spanUtils.convertSpanLinksForEnvelope; +exports.getActiveSpan = spanUtils.getActiveSpan; +exports.getRootSpan = spanUtils.getRootSpan; +exports.getSpanDescendants = spanUtils.getSpanDescendants; +exports.getStatusMessage = spanUtils.getStatusMessage; +exports.spanIsSampled = spanUtils.spanIsSampled; +exports.spanTimeInputToSeconds = spanUtils.spanTimeInputToSeconds; +exports.spanToJSON = spanUtils.spanToJSON; +exports.spanToTraceContext = spanUtils.spanToTraceContext; +exports.spanToTraceHeader = spanUtils.spanToTraceHeader; +exports.updateSpanName = spanUtils.updateSpanName; +exports._INTERNAL_setSpanForScope = spanOnScope._setSpanForScope; +exports.parseSampleRate = parseSampleRate.parseSampleRate; +exports.applySdkMetadata = sdkMetadata.applySdkMetadata; +exports.getTraceData = traceData.getTraceData; +exports.getTraceMetaTags = meta.getTraceMetaTags; +exports.debounce = debounce.debounce; +exports.extractQueryParamsFromUrl = request.extractQueryParamsFromUrl; +exports.headersToDict = request.headersToDict; +exports.httpHeadersToSpanAttributes = request.httpHeadersToSpanAttributes; +exports.httpRequestToRequestData = request.httpRequestToRequestData; +exports.winterCGHeadersToDict = request.winterCGHeadersToDict; +exports.winterCGRequestToRequestData = request.winterCGRequestToRequestData; +exports.DEFAULT_ENVIRONMENT = constants.DEFAULT_ENVIRONMENT; +exports.DEV_ENVIRONMENT = constants.DEV_ENVIRONMENT; +exports.addBreadcrumb = breadcrumbs.addBreadcrumb; +exports.functionToStringIntegration = functiontostring.functionToStringIntegration; +exports.eventFiltersIntegration = eventFilters.eventFiltersIntegration; +exports.inboundFiltersIntegration = eventFilters.inboundFiltersIntegration; +exports.linkedErrorsIntegration = linkederrors.linkedErrorsIntegration; +exports.moduleMetadataIntegration = moduleMetadata.moduleMetadataIntegration; +exports.requestDataIntegration = requestdata.requestDataIntegration; +exports.captureConsoleIntegration = captureconsole.captureConsoleIntegration; +exports.dedupeIntegration = dedupe.dedupeIntegration; +exports.extraErrorDataIntegration = extraerrordata.extraErrorDataIntegration; +exports.rewriteFramesIntegration = rewriteframes.rewriteFramesIntegration; +exports.instrumentSupabaseClient = supabase.instrumentSupabaseClient; +exports.supabaseIntegration = supabase.supabaseIntegration; +exports.zodErrorsIntegration = zoderrors.zodErrorsIntegration; +exports.thirdPartyErrorFilterIntegration = thirdPartyErrorsFilter.thirdPartyErrorFilterIntegration; +exports.consoleIntegration = console.consoleIntegration; +exports.featureFlagsIntegration = featureFlagsIntegration.featureFlagsIntegration; +exports.growthbookIntegration = growthbook.growthbookIntegration; +exports.conversationIdIntegration = conversationId.conversationIdIntegration; +exports.profiler = profiling.profiler; +exports.instrumentFetchRequest = fetch.instrumentFetchRequest; +exports.trpcMiddleware = trpc.trpcMiddleware; +exports.wrapMcpServerWithSentry = index$1.wrapMcpServerWithSentry; +exports.captureFeedback = feedback.captureFeedback; +exports._INTERNAL_captureLog = internal._INTERNAL_captureLog; +exports._INTERNAL_captureSerializedLog = internal._INTERNAL_captureSerializedLog; +exports._INTERNAL_flushLogsBuffer = internal._INTERNAL_flushLogsBuffer; +exports.logger = publicApi; +exports.consoleLoggingIntegration = consoleIntegration.consoleLoggingIntegration; +exports._INTERNAL_captureMetric = internal$1._INTERNAL_captureMetric; +exports._INTERNAL_captureSerializedMetric = internal$1._INTERNAL_captureSerializedMetric; +exports._INTERNAL_flushMetricsBuffer = internal$1._INTERNAL_flushMetricsBuffer; +exports.metrics = publicApi$1; +exports.createConsolaReporter = consola.createConsolaReporter; +exports.addVercelAiProcessors = index$2.addVercelAiProcessors; +exports._INTERNAL_cleanupToolCallSpan = utils._INTERNAL_cleanupToolCallSpan; +exports._INTERNAL_getSpanForToolCallId = utils._INTERNAL_getSpanForToolCallId; +exports.instrumentOpenAiClient = index$3.instrumentOpenAiClient; +exports.OPENAI_INTEGRATION_NAME = constants$1.OPENAI_INTEGRATION_NAME; +exports.instrumentAnthropicAiClient = index$4.instrumentAnthropicAiClient; +exports.ANTHROPIC_AI_INTEGRATION_NAME = constants$2.ANTHROPIC_AI_INTEGRATION_NAME; +exports.instrumentGoogleGenAIClient = index$5.instrumentGoogleGenAIClient; +exports.GOOGLE_GENAI_INTEGRATION_NAME = constants$3.GOOGLE_GENAI_INTEGRATION_NAME; +exports.createLangChainCallbackHandler = index$6.createLangChainCallbackHandler; +exports.LANGCHAIN_INTEGRATION_NAME = constants$4.LANGCHAIN_INTEGRATION_NAME; +exports.instrumentLangGraph = index$7.instrumentLangGraph; +exports.instrumentStateGraphCompile = index$7.instrumentStateGraphCompile; +exports.LANGGRAPH_INTEGRATION_NAME = constants$5.LANGGRAPH_INTEGRATION_NAME; +exports._INTERNAL_FLAG_BUFFER_SIZE = featureFlags._INTERNAL_FLAG_BUFFER_SIZE; +exports._INTERNAL_MAX_FLAGS_PER_SPAN = featureFlags._INTERNAL_MAX_FLAGS_PER_SPAN; +exports._INTERNAL_addFeatureFlagToActiveSpan = featureFlags._INTERNAL_addFeatureFlagToActiveSpan; +exports._INTERNAL_copyFlagsFromScopeToEvent = featureFlags._INTERNAL_copyFlagsFromScopeToEvent; +exports._INTERNAL_insertFlagToScope = featureFlags._INTERNAL_insertFlagToScope; +exports.applyAggregateErrorsToEvent = aggregateErrors.applyAggregateErrorsToEvent; +exports.getBreadcrumbLogLevelFromHttpStatusCode = breadcrumbLogLevel.getBreadcrumbLogLevelFromHttpStatusCode; +exports.getComponentName = browser.getComponentName; +exports.getLocationHref = browser.getLocationHref; +exports.htmlTreeAsString = browser.htmlTreeAsString; +exports.dsnFromString = dsn.dsnFromString; +exports.dsnToString = dsn.dsnToString; +exports.makeDsn = dsn.makeDsn; +exports.SentryError = error.SentryError; +exports.GLOBAL_OBJ = worldwide.GLOBAL_OBJ; +exports.addConsoleInstrumentationHandler = console$1.addConsoleInstrumentationHandler; +exports.addFetchEndInstrumentationHandler = fetch$1.addFetchEndInstrumentationHandler; +exports.addFetchInstrumentationHandler = fetch$1.addFetchInstrumentationHandler; +exports.addGlobalErrorInstrumentationHandler = globalError.addGlobalErrorInstrumentationHandler; +exports.addGlobalUnhandledRejectionInstrumentationHandler = globalUnhandledRejection.addGlobalUnhandledRejectionInstrumentationHandler; +exports.addHandler = handlers.addHandler; +exports.maybeInstrument = handlers.maybeInstrument; +exports.resetInstrumentationHandlers = handlers.resetInstrumentationHandlers; +exports.triggerHandlers = handlers.triggerHandlers; +exports.isDOMError = is.isDOMError; +exports.isDOMException = is.isDOMException; +exports.isElement = is.isElement; +exports.isError = is.isError; +exports.isErrorEvent = is.isErrorEvent; +exports.isEvent = is.isEvent; +exports.isInstanceOf = is.isInstanceOf; +exports.isParameterizedString = is.isParameterizedString; +exports.isPlainObject = is.isPlainObject; +exports.isPrimitive = is.isPrimitive; +exports.isRegExp = is.isRegExp; +exports.isString = is.isString; +exports.isSyntheticEvent = is.isSyntheticEvent; +exports.isThenable = is.isThenable; +exports.isVueViewModel = is.isVueViewModel; +exports.isBrowser = isBrowser.isBrowser; +exports.CONSOLE_LEVELS = debugLogger.CONSOLE_LEVELS; +exports.consoleSandbox = debugLogger.consoleSandbox; +exports.debug = debugLogger.debug; +exports.originalConsoleMethods = debugLogger.originalConsoleMethods; +exports.addContextToFrame = misc.addContextToFrame; +exports.addExceptionMechanism = misc.addExceptionMechanism; +exports.addExceptionTypeValue = misc.addExceptionTypeValue; +exports.checkOrSetAlreadyCaught = misc.checkOrSetAlreadyCaught; +exports.getEventDescription = misc.getEventDescription; +exports.parseSemver = misc.parseSemver; +exports.uuid4 = misc.uuid4; +exports.isNodeEnv = node.isNodeEnv; +exports.loadModule = node.loadModule; +exports.normalize = normalize.normalize; +exports.normalizeToSize = normalize.normalizeToSize; +exports.normalizeUrlToBase = normalize.normalizeUrlToBase; +exports.addNonEnumerableProperty = object.addNonEnumerableProperty; +exports.convertToPlainObject = object.convertToPlainObject; +exports.dropUndefinedKeys = object.dropUndefinedKeys; +exports.extractExceptionKeysForMessage = object.extractExceptionKeysForMessage; +exports.fill = object.fill; +exports.getOriginalFunction = object.getOriginalFunction; +exports.markFunctionWrapped = object.markFunctionWrapped; +exports.objectify = object.objectify; +exports.basename = path.basename; +exports.dirname = path.dirname; +exports.isAbsolute = path.isAbsolute; +exports.join = path.join; +exports.normalizePath = path.normalizePath; +exports.relative = path.relative; +exports.resolve = path.resolve; +exports.SENTRY_BUFFER_FULL_ERROR = promisebuffer.SENTRY_BUFFER_FULL_ERROR; +exports.makePromiseBuffer = promisebuffer.makePromiseBuffer; +exports.severityLevelFromString = severity.severityLevelFromString; +exports.replaceExports = exports$2.replaceExports; +exports.UNKNOWN_FUNCTION = stacktrace.UNKNOWN_FUNCTION; +exports.createStackParser = stacktrace.createStackParser; +exports.getFramesFromEvent = stacktrace.getFramesFromEvent; +exports.getFunctionName = stacktrace.getFunctionName; +exports.stackParserFromStackParserOptions = stacktrace.stackParserFromStackParserOptions; +exports.stripSentryFramesAndReverse = stacktrace.stripSentryFramesAndReverse; +exports.filenameIsInApp = nodeStackTrace.filenameIsInApp; +exports.node = nodeStackTrace.node; +exports.nodeStackLineParser = nodeStackTrace.nodeStackLineParser; +exports.isMatchingPattern = string.isMatchingPattern; +exports.safeJoin = string.safeJoin; +exports.snipLine = string.snipLine; +exports.stringMatchesSomePattern = string.stringMatchesSomePattern; +exports.truncate = string.truncate; +exports.isNativeFunction = supports.isNativeFunction; +exports.supportsDOMError = supports.supportsDOMError; +exports.supportsDOMException = supports.supportsDOMException; +exports.supportsErrorEvent = supports.supportsErrorEvent; +exports.supportsFetch = supports.supportsFetch; +exports.supportsHistory = supports.supportsHistory; +exports.supportsNativeFetch = supports.supportsNativeFetch; +exports.supportsReferrerPolicy = supports.supportsReferrerPolicy; +exports.supportsReportingObserver = supports.supportsReportingObserver; +exports.SyncPromise = syncpromise.SyncPromise; +exports.rejectedSyncPromise = syncpromise.rejectedSyncPromise; +exports.resolvedSyncPromise = syncpromise.resolvedSyncPromise; +exports.browserPerformanceTimeOrigin = time.browserPerformanceTimeOrigin; +exports.dateTimestampInSeconds = time.dateTimestampInSeconds; +exports.timestampInSeconds = time.timestampInSeconds; +exports.TRACEPARENT_REGEXP = tracing.TRACEPARENT_REGEXP; +exports.extractTraceparentData = tracing.extractTraceparentData; +exports.generateSentryTraceHeader = tracing.generateSentryTraceHeader; +exports.generateTraceparentHeader = tracing.generateTraceparentHeader; +exports.propagationContextFromHeaders = tracing.propagationContextFromHeaders; +exports.shouldContinueTrace = tracing.shouldContinueTrace; +exports.getSDKSource = env.getSDKSource; +exports.isBrowserBundle = env.isBrowserBundle; +exports.addItemToEnvelope = envelope$1.addItemToEnvelope; +exports.createAttachmentEnvelopeItem = envelope$1.createAttachmentEnvelopeItem; +exports.createEnvelope = envelope$1.createEnvelope; +exports.createEventEnvelopeHeaders = envelope$1.createEventEnvelopeHeaders; +exports.createSpanEnvelopeItem = envelope$1.createSpanEnvelopeItem; +exports.envelopeContainsItemType = envelope$1.envelopeContainsItemType; +exports.envelopeItemTypeToDataCategory = envelope$1.envelopeItemTypeToDataCategory; +exports.forEachEnvelopeItem = envelope$1.forEachEnvelopeItem; +exports.getSdkMetadataForEnvelopeHeader = envelope$1.getSdkMetadataForEnvelopeHeader; +exports.parseEnvelope = envelope$1.parseEnvelope; +exports.serializeEnvelope = envelope$1.serializeEnvelope; +exports.createClientReportEnvelope = clientreport.createClientReportEnvelope; +exports.DEFAULT_RETRY_AFTER = ratelimit.DEFAULT_RETRY_AFTER; +exports.disabledUntil = ratelimit.disabledUntil; +exports.isRateLimited = ratelimit.isRateLimited; +exports.parseRetryAfterHeader = ratelimit.parseRetryAfterHeader; +exports.updateRateLimits = ratelimit.updateRateLimits; +exports.MAX_BAGGAGE_STRING_LENGTH = baggage.MAX_BAGGAGE_STRING_LENGTH; +exports.SENTRY_BAGGAGE_KEY_PREFIX = baggage.SENTRY_BAGGAGE_KEY_PREFIX; +exports.SENTRY_BAGGAGE_KEY_PREFIX_REGEX = baggage.SENTRY_BAGGAGE_KEY_PREFIX_REGEX; +exports.baggageHeaderToDynamicSamplingContext = baggage.baggageHeaderToDynamicSamplingContext; +exports.dynamicSamplingContextToSentryBaggageHeader = baggage.dynamicSamplingContextToSentryBaggageHeader; +exports.objectToBaggageHeader = baggage.objectToBaggageHeader; +exports.parseBaggageHeader = baggage.parseBaggageHeader; +exports.getHttpSpanDetailsFromUrlObject = url.getHttpSpanDetailsFromUrlObject; +exports.getSanitizedUrlString = url.getSanitizedUrlString; +exports.getSanitizedUrlStringFromUrlObject = url.getSanitizedUrlStringFromUrlObject; +exports.isURLObjectRelative = url.isURLObjectRelative; +exports.parseStringToURLObject = url.parseStringToURLObject; +exports.parseUrl = url.parseUrl; +exports.stripDataUrlContent = url.stripDataUrlContent; +exports.stripUrlQueryAndFragment = url.stripUrlQueryAndFragment; +exports._INTERNAL_enhanceErrorWithSentryInfo = eventbuilder._enhanceErrorWithSentryInfo; +exports.eventFromMessage = eventbuilder.eventFromMessage; +exports.eventFromUnknownInput = eventbuilder.eventFromUnknownInput; +exports.exceptionFromError = eventbuilder.exceptionFromError; +exports.parseStackFrames = eventbuilder.parseStackFrames; +exports.callFrameToStackFrame = anr.callFrameToStackFrame; +exports.watchdogTimer = anr.watchdogTimer; +exports.LRUMap = lru.LRUMap; +exports.generateSpanId = propagationContext.generateSpanId; +exports.generateTraceId = propagationContext.generateTraceId; +exports.vercelWaitUntil = vercelWaitUntil.vercelWaitUntil; +exports.flushIfServerless = flushIfServerless.flushIfServerless; +exports.SDK_VERSION = version.SDK_VERSION; +exports.getDebugImagesForResources = debugIds.getDebugImagesForResources; +exports.getFilenameToDebugIdMap = debugIds.getFilenameToDebugIdMap; +exports.getFilenameToMetadataMap = metadata.getFilenameToMetadataMap; +exports.escapeStringForRegex = escapeStringForRegex.escapeStringForRegex; +exports._INTERNAL_safeDateNow = randomSafeContext.safeDateNow; +exports._INTERNAL_safeMathRandom = randomSafeContext.safeMathRandom; +exports._INTERNAL_withRandomSafeContext = randomSafeContext.withRandomSafeContext; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/index.js.map new file mode 100644 index 0000000..cb06167 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/console.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/console.js new file mode 100644 index 0000000..0887d8b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/console.js @@ -0,0 +1,45 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugLogger = require('../utils/debug-logger.js'); +const object = require('../utils/object.js'); +const worldwide = require('../utils/worldwide.js'); +const handlers = require('./handlers.js'); + +/** + * Add an instrumentation handler for when a console.xxx method is called. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +function addConsoleInstrumentationHandler(handler) { + const type = 'console'; + handlers.addHandler(type, handler); + handlers.maybeInstrument(type, instrumentConsole); +} + +function instrumentConsole() { + if (!('console' in worldwide.GLOBAL_OBJ)) { + return; + } + + debugLogger.CONSOLE_LEVELS.forEach(function (level) { + if (!(level in worldwide.GLOBAL_OBJ.console)) { + return; + } + + object.fill(worldwide.GLOBAL_OBJ.console, level, function (originalConsoleMethod) { + debugLogger.originalConsoleMethods[level] = originalConsoleMethod; + + return function (...args) { + const handlerData = { args, level }; + handlers.triggerHandlers('console', handlerData); + + const log = debugLogger.originalConsoleMethods[level]; + log?.apply(worldwide.GLOBAL_OBJ.console, args); + }; + }); + }); +} + +exports.addConsoleInstrumentationHandler = addConsoleInstrumentationHandler; +//# sourceMappingURL=console.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/console.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/console.js.map new file mode 100644 index 0000000..25d5ffd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/console.js.map @@ -0,0 +1 @@ +{"version":3,"file":"console.js","sources":["../../../src/instrument/console.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger';\nimport { fill } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\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 */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args: any[]): void {\n const handlerData: HandlerDataConsole = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log?.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n"],"names":["addHandler","maybeInstrument","GLOBAL_OBJ","CONSOLE_LEVELS","fill","originalConsoleMethods","triggerHandlers"],"mappings":";;;;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gCAAgC,CAAC,OAAO,EAA4C;AACpG,EAAE,MAAM,IAAA,GAAO,SAAS;AACxB,EAAEA,mBAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3B,EAAEC,wBAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC;AAC1C;;AAEA,SAAS,iBAAiB,GAAS;AACnC,EAAE,IAAI,EAAE,aAAaC,oBAAU,CAAC,EAAE;AAClC,IAAI;AACJ,EAAE;;AAEF,EAAEC,0BAAc,CAAC,OAAO,CAAC,UAAU,KAAK,EAAsB;AAC9D,IAAI,IAAI,EAAE,KAAA,IAASD,oBAAU,CAAC,OAAO,CAAC,EAAE;AACxC,MAAM;AACN,IAAI;;AAEJ,IAAIE,WAAI,CAACF,oBAAU,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,qBAAqB,EAAuB;AAC1F,MAAMG,kCAAsB,CAAC,KAAK,CAAA,GAAI,qBAAqB;;AAE3D,MAAM,OAAO,UAAU,GAAG,IAAI,EAAe;AAC7C,QAAQ,MAAM,WAAW,GAAuB,EAAE,IAAI,EAAE,OAAO;AAC/D,QAAQC,wBAAe,CAAC,SAAS,EAAE,WAAW,CAAC;;AAE/C,QAAQ,MAAM,GAAA,GAAMD,kCAAsB,CAAC,KAAK,CAAC;AACjD,QAAQ,GAAG,EAAE,KAAK,CAACH,oBAAU,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5C,MAAM,CAAC;AACP,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC;AACJ;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/fetch.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/fetch.js new file mode 100644 index 0000000..975cd5f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/fetch.js @@ -0,0 +1,303 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const is = require('../utils/is.js'); +const object = require('../utils/object.js'); +const supports = require('../utils/supports.js'); +const time = require('../utils/time.js'); +const worldwide = require('../utils/worldwide.js'); +const handlers = require('./handlers.js'); + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +/** + * Add an instrumentation handler for when a fetch request happens. + * The handler function is called once when the request starts and once when it ends, + * which can be identified by checking if it has an `endTimestamp`. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +function addFetchInstrumentationHandler( + handler, + skipNativeFetchCheck, +) { + const type = 'fetch'; + handlers.addHandler(type, handler); + handlers.maybeInstrument(type, () => instrumentFetch(undefined, skipNativeFetchCheck)); +} + +/** + * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch. + * The handler will resolve the request body and emit the actual `endTimestamp`, so that the + * span can be updated accordingly. + * + * Only used internally + * @hidden + */ +function addFetchEndInstrumentationHandler(handler) { + const type = 'fetch-body-resolved'; + handlers.addHandler(type, handler); + handlers.maybeInstrument(type, () => instrumentFetch(streamHandler)); +} + +function instrumentFetch(onFetchResolved, skipNativeFetchCheck = false) { + if (skipNativeFetchCheck && !supports.supportsNativeFetch()) { + return; + } + + object.fill(worldwide.GLOBAL_OBJ, 'fetch', function (originalFetch) { + return function (...args) { + // We capture the error right here and not in the Promise error callback because Safari (and probably other + // browsers too) will wipe the stack trace up to this point, only leaving us with this file which is useless. + + // NOTE: If you are a Sentry user, and you are seeing this stack frame, + // it means the error, that was caused by your fetch call did not + // have a stack trace, so the SDK backfilled the stack trace so + // you can see which fetch call failed. + const virtualError = new Error(); + + const { method, url } = parseFetchArgs(args); + const handlerData = { + args, + fetchData: { + method, + url, + }, + startTimestamp: time.timestampInSeconds() * 1000, + // // Adding the error to be able to fingerprint the failed fetch event in HttpClient instrumentation + virtualError, + headers: getHeadersFromFetchArgs(args), + }; + + // if there is no callback, fetch is instrumented directly + if (!onFetchResolved) { + handlers.triggerHandlers('fetch', { + ...handlerData, + }); + } + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return originalFetch.apply(worldwide.GLOBAL_OBJ, args).then( + async (response) => { + if (onFetchResolved) { + onFetchResolved(response); + } else { + handlers.triggerHandlers('fetch', { + ...handlerData, + endTimestamp: time.timestampInSeconds() * 1000, + response, + }); + } + + return response; + }, + (error) => { + handlers.triggerHandlers('fetch', { + ...handlerData, + endTimestamp: time.timestampInSeconds() * 1000, + error, + }); + + if (is.isError(error) && error.stack === undefined) { + // NOTE: If you are a Sentry user, and you are seeing this stack frame, + // it means the error, that was caused by your fetch call did not + // have a stack trace, so the SDK backfilled the stack trace so + // you can see which fetch call failed. + error.stack = virtualError.stack; + object.addNonEnumerableProperty(error, 'framesToPop', 1); + } + + // We enhance fetch error messages with hostname information based on the configuration. + // Possible messages we handle here: + // * "Failed to fetch" (chromium) + // * "Load failed" (webkit) + // * "NetworkError when attempting to fetch resource." (firefox) + const client = currentScopes.getClient(); + const enhanceOption = client?.getOptions().enhanceFetchErrorMessages ?? 'always'; + const shouldEnhance = enhanceOption !== false; + + if ( + shouldEnhance && + error instanceof TypeError && + (error.message === 'Failed to fetch' || + error.message === 'Load failed' || + error.message === 'NetworkError when attempting to fetch resource.') + ) { + try { + const url = new URL(handlerData.fetchData.url); + const hostname = url.host; + + if (enhanceOption === 'always') { + // Modify the error message directly + error.message = `${error.message} (${hostname})`; + } else { + // Store hostname as non-enumerable property for Sentry-only enhancement + // This preserves the original error message for third-party packages + object.addNonEnumerableProperty(error, '__sentry_fetch_url_host__', hostname); + } + } catch { + // ignore it if errors happen here + } + } + + // NOTE: If you are a Sentry user, and you are seeing this stack frame, + // it means the sentry.javascript SDK caught an error invoking your application code. + // This is expected behavior and NOT indicative of a bug with sentry.javascript. + throw error; + }, + ); + }; + }); +} + +async function resolveResponse(res, onFinishedResolving) { + if (res?.body) { + const body = res.body; + const responseReader = body.getReader(); + + // Define a maximum duration after which we just cancel + const maxFetchDurationTimeout = setTimeout( + () => { + body.cancel().then(null, () => { + // noop + }); + }, + 90 * 1000, // 90s + ); + + let readingActive = true; + while (readingActive) { + let chunkTimeout; + try { + // abort reading if read op takes more than 5s + chunkTimeout = setTimeout(() => { + body.cancel().then(null, () => { + // noop on error + }); + }, 5000); + + // This .read() call will reject/throw when we abort due to timeouts through `body.cancel()` + const { done } = await responseReader.read(); + + clearTimeout(chunkTimeout); + + if (done) { + onFinishedResolving(); + readingActive = false; + } + } catch { + readingActive = false; + } finally { + clearTimeout(chunkTimeout); + } + } + + clearTimeout(maxFetchDurationTimeout); + + responseReader.releaseLock(); + body.cancel().then(null, () => { + // noop on error + }); + } +} + +function streamHandler(response) { + // clone response for awaiting stream + let clonedResponseForResolving; + try { + clonedResponseForResolving = response.clone(); + } catch { + return; + } + + // eslint-disable-next-line @typescript-eslint/no-floating-promises + resolveResponse(clonedResponseForResolving, () => { + handlers.triggerHandlers('fetch-body-resolved', { + endTimestamp: time.timestampInSeconds() * 1000, + response, + }); + }); +} + +function hasProp(obj, prop) { + return !!obj && typeof obj === 'object' && !!(obj )[prop]; +} + +function getUrlFromResource(resource) { + if (typeof resource === 'string') { + return resource; + } + + if (!resource) { + return ''; + } + + if (hasProp(resource, 'url')) { + return resource.url; + } + + if (resource.toString) { + return resource.toString(); + } + + return ''; +} + +/** + * Parses the fetch arguments to find the used Http method and the url of the request. + * Exported for tests only. + */ +function parseFetchArgs(fetchArgs) { + if (fetchArgs.length === 0) { + return { method: 'GET', url: '' }; + } + + if (fetchArgs.length === 2) { + const [resource, options] = fetchArgs ; + + return { + url: getUrlFromResource(resource), + method: hasProp(options, 'method') + ? String(options.method).toUpperCase() + : // Request object as first argument + is.isRequest(resource) && hasProp(resource, 'method') + ? String(resource.method).toUpperCase() + : 'GET', + }; + } + + const arg = fetchArgs[0]; + return { + url: getUrlFromResource(arg ), + method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET', + }; +} + +function getHeadersFromFetchArgs(fetchArgs) { + const [requestArgument, optionsArgument] = fetchArgs; + + try { + if ( + typeof optionsArgument === 'object' && + optionsArgument !== null && + 'headers' in optionsArgument && + optionsArgument.headers + ) { + return new Headers(optionsArgument.headers ); + } + + if (is.isRequest(requestArgument)) { + return new Headers(requestArgument.headers); + } + } catch { + // noop + } + + return; +} + +exports.addFetchEndInstrumentationHandler = addFetchEndInstrumentationHandler; +exports.addFetchInstrumentationHandler = addFetchInstrumentationHandler; +exports.parseFetchArgs = parseFetchArgs; +//# sourceMappingURL=fetch.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/fetch.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/fetch.js.map new file mode 100644 index 0000000..667c606 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/fetch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fetch.js","sources":["../../../src/instrument/fetch.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getClient } from '../currentScopes';\nimport type { HandlerDataFetch } from '../types-hoist/instrument';\nimport type { WebFetchHeaders } from '../types-hoist/webfetchapi';\nimport { isError, isRequest } from '../utils/is';\nimport { addNonEnumerableProperty, fill } from '../utils/object';\nimport { supportsNativeFetch } from '../utils/supports';\nimport { timestampInSeconds } from '../utils/time';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(\n handler: (data: HandlerDataFetch) => void,\n skipNativeFetchCheck?: boolean,\n): void {\n const type = 'fetch';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(undefined, skipNativeFetchCheck));\n}\n\n/**\n * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch.\n * The handler will resolve the request body and emit the actual `endTimestamp`, so that the\n * span can be updated accordingly.\n *\n * Only used internally\n * @hidden\n */\nexport function addFetchEndInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n const type = 'fetch-body-resolved';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(streamHandler));\n}\n\nfunction instrumentFetch(onFetchResolved?: (response: Response) => void, skipNativeFetchCheck: boolean = false): void {\n if (skipNativeFetchCheck && !supportsNativeFetch()) {\n return;\n }\n\n fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n // We capture the error right here and not in the Promise error callback because Safari (and probably other\n // browsers too) will wipe the stack trace up to this point, only leaving us with this file which is useless.\n\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n const virtualError = new Error();\n\n const { method, url } = parseFetchArgs(args);\n const handlerData: HandlerDataFetch = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: timestampInSeconds() * 1000,\n // // Adding the error to be able to fingerprint the failed fetch event in HttpClient instrumentation\n virtualError,\n headers: getHeadersFromFetchArgs(args),\n };\n\n // if there is no callback, fetch is instrumented directly\n if (!onFetchResolved) {\n triggerHandlers('fetch', {\n ...handlerData,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(GLOBAL_OBJ, args).then(\n async (response: Response) => {\n if (onFetchResolved) {\n onFetchResolved(response);\n } else {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n }\n\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n error,\n });\n\n if (isError(error) && error.stack === undefined) {\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n error.stack = virtualError.stack;\n addNonEnumerableProperty(error, 'framesToPop', 1);\n }\n\n // We enhance fetch error messages with hostname information based on the configuration.\n // Possible messages we handle here:\n // * \"Failed to fetch\" (chromium)\n // * \"Load failed\" (webkit)\n // * \"NetworkError when attempting to fetch resource.\" (firefox)\n const client = getClient();\n const enhanceOption = client?.getOptions().enhanceFetchErrorMessages ?? 'always';\n const shouldEnhance = enhanceOption !== false;\n\n if (\n shouldEnhance &&\n error instanceof TypeError &&\n (error.message === 'Failed to fetch' ||\n error.message === 'Load failed' ||\n error.message === 'NetworkError when attempting to fetch resource.')\n ) {\n try {\n const url = new URL(handlerData.fetchData.url);\n const hostname = url.host;\n\n if (enhanceOption === 'always') {\n // Modify the error message directly\n error.message = `${error.message} (${hostname})`;\n } else {\n // Store hostname as non-enumerable property for Sentry-only enhancement\n // This preserves the original error message for third-party packages\n addNonEnumerableProperty(error, '__sentry_fetch_url_host__', hostname);\n }\n } catch {\n // ignore it if errors happen here\n }\n }\n\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\nasync function resolveResponse(res: Response | undefined, onFinishedResolving: () => void): Promise {\n if (res?.body) {\n const body = res.body;\n const responseReader = body.getReader();\n\n // Define a maximum duration after which we just cancel\n const maxFetchDurationTimeout = setTimeout(\n () => {\n body.cancel().then(null, () => {\n // noop\n });\n },\n 90 * 1000, // 90s\n );\n\n let readingActive = true;\n while (readingActive) {\n let chunkTimeout;\n try {\n // abort reading if read op takes more than 5s\n chunkTimeout = setTimeout(() => {\n body.cancel().then(null, () => {\n // noop on error\n });\n }, 5000);\n\n // This .read() call will reject/throw when we abort due to timeouts through `body.cancel()`\n const { done } = await responseReader.read();\n\n clearTimeout(chunkTimeout);\n\n if (done) {\n onFinishedResolving();\n readingActive = false;\n }\n } catch {\n readingActive = false;\n } finally {\n clearTimeout(chunkTimeout);\n }\n }\n\n clearTimeout(maxFetchDurationTimeout);\n\n responseReader.releaseLock();\n body.cancel().then(null, () => {\n // noop on error\n });\n }\n}\n\nfunction streamHandler(response: Response): void {\n // clone response for awaiting stream\n let clonedResponseForResolving: Response;\n try {\n clonedResponseForResolving = response.clone();\n } catch {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resolveResponse(clonedResponseForResolving, () => {\n triggerHandlers('fetch-body-resolved', {\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n });\n}\n\nfunction hasProp(obj: unknown, prop: T): obj is Record {\n return !!obj && typeof obj === 'object' && !!(obj as Record)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [resource, options] = fetchArgs as [FetchResource, object];\n\n return {\n url: getUrlFromResource(resource),\n method: hasProp(options, 'method')\n ? String(options.method).toUpperCase()\n : // Request object as first argument\n isRequest(resource) && hasProp(resource, 'method')\n ? String(resource.method).toUpperCase()\n : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg as FetchResource),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n\nfunction getHeadersFromFetchArgs(fetchArgs: unknown[]): WebFetchHeaders | undefined {\n const [requestArgument, optionsArgument] = fetchArgs;\n\n try {\n if (\n typeof optionsArgument === 'object' &&\n optionsArgument !== null &&\n 'headers' in optionsArgument &&\n optionsArgument.headers\n ) {\n return new Headers(optionsArgument.headers as any);\n }\n\n if (isRequest(requestArgument)) {\n return new Headers(requestArgument.headers);\n }\n } catch {\n // noop\n }\n\n return;\n}\n"],"names":["addHandler","maybeInstrument","supportsNativeFetch","fill","GLOBAL_OBJ","timestampInSeconds","triggerHandlers","isError","addNonEnumerableProperty","getClient","isRequest"],"mappings":";;;;;;;;;;AAAA;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,8BAA8B;AAC9C,EAAE,OAAO;AACT,EAAE,oBAAoB;AACtB,EAAQ;AACR,EAAE,MAAM,IAAA,GAAO,OAAO;AACtB,EAAEA,mBAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3B,EAAEC,wBAAe,CAAC,IAAI,EAAE,MAAM,eAAe,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC/E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iCAAiC,CAAC,OAAO,EAA0C;AACnG,EAAE,MAAM,IAAA,GAAO,qBAAqB;AACpC,EAAED,mBAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3B,EAAEC,wBAAe,CAAC,IAAI,EAAE,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;AAC7D;;AAEA,SAAS,eAAe,CAAC,eAAe,EAAiC,oBAAoB,GAAY,KAAK,EAAQ;AACtH,EAAE,IAAI,oBAAA,IAAwB,CAACC,4BAAmB,EAAE,EAAE;AACtD,IAAI;AACJ,EAAE;;AAEF,EAAEC,WAAI,CAACC,oBAAU,EAAE,OAAO,EAAE,UAAU,aAAa,EAA0B;AAC7E,IAAI,OAAO,UAAU,GAAG,IAAI,EAAe;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,MAAM,YAAA,GAAe,IAAI,KAAK,EAAE;;AAEtC,MAAM,MAAM,EAAE,MAAM,EAAE,GAAA,KAAQ,cAAc,CAAC,IAAI,CAAC;AAClD,MAAM,MAAM,WAAW,GAAqB;AAC5C,QAAQ,IAAI;AACZ,QAAQ,SAAS,EAAE;AACnB,UAAU,MAAM;AAChB,UAAU,GAAG;AACb,SAAS;AACT,QAAQ,cAAc,EAAEC,uBAAkB,EAAC,GAAI,IAAI;AACnD;AACA,QAAQ,YAAY;AACpB,QAAQ,OAAO,EAAE,uBAAuB,CAAC,IAAI,CAAC;AAC9C,OAAO;;AAEP;AACA,MAAM,IAAI,CAAC,eAAe,EAAE;AAC5B,QAAQC,wBAAe,CAAC,OAAO,EAAE;AACjC,UAAU,GAAG,WAAW;AACxB,SAAS,CAAC;AACV,MAAM;;AAEN;AACA,MAAM,OAAO,aAAa,CAAC,KAAK,CAACF,oBAAU,EAAE,IAAI,CAAC,CAAC,IAAI;AACvD,QAAQ,OAAO,QAAQ,KAAe;AACtC,UAAU,IAAI,eAAe,EAAE;AAC/B,YAAY,eAAe,CAAC,QAAQ,CAAC;AACrC,UAAU,OAAO;AACjB,YAAYE,wBAAe,CAAC,OAAO,EAAE;AACrC,cAAc,GAAG,WAAW;AAC5B,cAAc,YAAY,EAAED,uBAAkB,EAAC,GAAI,IAAI;AACvD,cAAc,QAAQ;AACtB,aAAa,CAAC;AACd,UAAU;;AAEV,UAAU,OAAO,QAAQ;AACzB,QAAQ,CAAC;AACT,QAAQ,CAAC,KAAK,KAAY;AAC1B,UAAUC,wBAAe,CAAC,OAAO,EAAE;AACnC,YAAY,GAAG,WAAW;AAC1B,YAAY,YAAY,EAAED,uBAAkB,EAAC,GAAI,IAAI;AACrD,YAAY,KAAK;AACjB,WAAW,CAAC;;AAEZ,UAAU,IAAIE,UAAO,CAAC,KAAK,CAAA,IAAK,KAAK,CAAC,KAAA,KAAU,SAAS,EAAE;AAC3D;AACA;AACA;AACA;AACA,YAAY,KAAK,CAAC,KAAA,GAAQ,YAAY,CAAC,KAAK;AAC5C,YAAYC,+BAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;AAC7D,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU,MAAM,MAAA,GAASC,uBAAS,EAAE;AACpC,UAAU,MAAM,aAAA,GAAgB,MAAM,EAAE,UAAU,EAAE,CAAC,yBAAA,IAA6B,QAAQ;AAC1F,UAAU,MAAM,aAAA,GAAgB,aAAA,KAAkB,KAAK;;AAEvD,UAAU;AACV,YAAY,aAAA;AACZ,YAAY,KAAA,YAAiB,SAAA;AAC7B,aAAa,KAAK,CAAC,OAAA,KAAY,iBAAA;AAC/B,cAAc,KAAK,CAAC,OAAA,KAAY,aAAA;AAChC,cAAc,KAAK,CAAC,OAAA,KAAY,iDAAiD;AACjF,YAAY;AACZ,YAAY,IAAI;AAChB,cAAc,MAAM,GAAA,GAAM,IAAI,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;AAC5D,cAAc,MAAM,QAAA,GAAW,GAAG,CAAC,IAAI;;AAEvC,cAAc,IAAI,aAAA,KAAkB,QAAQ,EAAE;AAC9C;AACA,gBAAgB,KAAK,CAAC,OAAA,GAAU,CAAC,EAAA,KAAA,CAAA,OAAA,CAAA,EAAA,EAAA,QAAA,CAAA,CAAA,CAAA;AACA,cAAA,CAAA,MAAA;AACA;AACA;AACA,gBAAAD,+BAAA,CAAA,KAAA,EAAA,2BAAA,EAAA,QAAA,CAAA;AACA,cAAA;AACA,YAAA,CAAA,CAAA,MAAA;AACA;AACA,YAAA;AACA,UAAA;;AAEA;AACA;AACA;AACA,UAAA,MAAA,KAAA;AACA,QAAA,CAAA;AACA,OAAA;AACA,IAAA,CAAA;AACA,EAAA,CAAA,CAAA;AACA;;AAEA,eAAA,eAAA,CAAA,GAAA,EAAA,mBAAA,EAAA;AACA,EAAA,IAAA,GAAA,EAAA,IAAA,EAAA;AACA,IAAA,MAAA,IAAA,GAAA,GAAA,CAAA,IAAA;AACA,IAAA,MAAA,cAAA,GAAA,IAAA,CAAA,SAAA,EAAA;;AAEA;AACA,IAAA,MAAA,uBAAA,GAAA,UAAA;AACA,MAAA,MAAA;AACA,QAAA,IAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,MAAA;AACA;AACA,QAAA,CAAA,CAAA;AACA,MAAA,CAAA;AACA,MAAA,EAAA,GAAA,IAAA;AACA,KAAA;;AAEA,IAAA,IAAA,aAAA,GAAA,IAAA;AACA,IAAA,OAAA,aAAA,EAAA;AACA,MAAA,IAAA,YAAA;AACA,MAAA,IAAA;AACA;AACA,QAAA,YAAA,GAAA,UAAA,CAAA,MAAA;AACA,UAAA,IAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,MAAA;AACA;AACA,UAAA,CAAA,CAAA;AACA,QAAA,CAAA,EAAA,IAAA,CAAA;;AAEA;AACA,QAAA,MAAA,EAAA,IAAA,EAAA,GAAA,MAAA,cAAA,CAAA,IAAA,EAAA;;AAEA,QAAA,YAAA,CAAA,YAAA,CAAA;;AAEA,QAAA,IAAA,IAAA,EAAA;AACA,UAAA,mBAAA,EAAA;AACA,UAAA,aAAA,GAAA,KAAA;AACA,QAAA;AACA,MAAA,CAAA,CAAA,MAAA;AACA,QAAA,aAAA,GAAA,KAAA;AACA,MAAA,CAAA,SAAA;AACA,QAAA,YAAA,CAAA,YAAA,CAAA;AACA,MAAA;AACA,IAAA;;AAEA,IAAA,YAAA,CAAA,uBAAA,CAAA;;AAEA,IAAA,cAAA,CAAA,WAAA,EAAA;AACA,IAAA,IAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,MAAA;AACA;AACA,IAAA,CAAA,CAAA;AACA,EAAA;AACA;;AAEA,SAAA,aAAA,CAAA,QAAA,EAAA;AACA;AACA,EAAA,IAAA,0BAAA;AACA,EAAA,IAAA;AACA,IAAA,0BAAA,GAAA,QAAA,CAAA,KAAA,EAAA;AACA,EAAA,CAAA,CAAA,MAAA;AACA,IAAA;AACA,EAAA;;AAEA;AACA,EAAA,eAAA,CAAA,0BAAA,EAAA,MAAA;AACA,IAAAF,wBAAA,CAAA,qBAAA,EAAA;AACA,MAAA,YAAA,EAAAD,uBAAA,EAAA,GAAA,IAAA;AACA,MAAA,QAAA;AACA,KAAA,CAAA;AACA,EAAA,CAAA,CAAA;AACA;;AAEA,SAAA,OAAA,CAAA,GAAA,EAAA,IAAA,EAAA;AACA,EAAA,OAAA,CAAA,CAAA,GAAA,IAAA,OAAA,GAAA,KAAA,QAAA,IAAA,CAAA,CAAA,CAAA,GAAA,GAAA,IAAA,CAAA;AACA;;AAEA,SAAA,kBAAA,CAAA,QAAA,EAAA;AACA,EAAA,IAAA,OAAA,QAAA,KAAA,QAAA,EAAA;AACA,IAAA,OAAA,QAAA;AACA,EAAA;;AAEA,EAAA,IAAA,CAAA,QAAA,EAAA;AACA,IAAA,OAAA,EAAA;AACA,EAAA;;AAEA,EAAA,IAAA,OAAA,CAAA,QAAA,EAAA,KAAA,CAAA,EAAA;AACA,IAAA,OAAA,QAAA,CAAA,GAAA;AACA,EAAA;;AAEA,EAAA,IAAA,QAAA,CAAA,QAAA,EAAA;AACA,IAAA,OAAA,QAAA,CAAA,QAAA,EAAA;AACA,EAAA;;AAEA,EAAA,OAAA,EAAA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAA,cAAA,CAAA,SAAA,EAAA;AACA,EAAA,IAAA,SAAA,CAAA,MAAA,KAAA,CAAA,EAAA;AACA,IAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,GAAA,EAAA,EAAA,EAAA;AACA,EAAA;;AAEA,EAAA,IAAA,SAAA,CAAA,MAAA,KAAA,CAAA,EAAA;AACA,IAAA,MAAA,CAAA,QAAA,EAAA,OAAA,CAAA,GAAA,SAAA;;AAEA,IAAA,OAAA;AACA,MAAA,GAAA,EAAA,kBAAA,CAAA,QAAA,CAAA;AACA,MAAA,MAAA,EAAA,OAAA,CAAA,OAAA,EAAA,QAAA;AACA,UAAA,MAAA,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA,WAAA;AACA;AACA,UAAAK,YAAA,CAAA,QAAA,CAAA,IAAA,OAAA,CAAA,QAAA,EAAA,QAAA;AACA,YAAA,MAAA,CAAA,QAAA,CAAA,MAAA,CAAA,CAAA,WAAA;AACA,YAAA,KAAA;AACA,KAAA;AACA,EAAA;;AAEA,EAAA,MAAA,GAAA,GAAA,SAAA,CAAA,CAAA,CAAA;AACA,EAAA,OAAA;AACA,IAAA,GAAA,EAAA,kBAAA,CAAA,GAAA,EAAA;AACA,IAAA,MAAA,EAAA,OAAA,CAAA,GAAA,EAAA,QAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA,WAAA,EAAA,GAAA,KAAA;AACA,GAAA;AACA;;AAEA,SAAA,uBAAA,CAAA,SAAA,EAAA;AACA,EAAA,MAAA,CAAA,eAAA,EAAA,eAAA,CAAA,GAAA,SAAA;;AAEA,EAAA,IAAA;AACA,IAAA;AACA,MAAA,OAAA,eAAA,KAAA,QAAA;AACA,MAAA,eAAA,KAAA,IAAA;AACA,MAAA,SAAA,IAAA,eAAA;AACA,MAAA,eAAA,CAAA;AACA,MAAA;AACA,MAAA,OAAA,IAAA,OAAA,CAAA,eAAA,CAAA,OAAA,EAAA;AACA,IAAA;;AAEA,IAAA,IAAAA,YAAA,CAAA,eAAA,CAAA,EAAA;AACA,MAAA,OAAA,IAAA,OAAA,CAAA,eAAA,CAAA,OAAA,CAAA;AACA,IAAA;AACA,EAAA,CAAA,CAAA,MAAA;AACA;AACA,EAAA;;AAEA,EAAA;AACA;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalError.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalError.js new file mode 100644 index 0000000..66cf837 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalError.js @@ -0,0 +1,53 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const worldwide = require('../utils/worldwide.js'); +const handlers = require('./handlers.js'); + +let _oldOnErrorHandler = null; + +/** + * Add an instrumentation handler for when an error is captured by the global error handler. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +function addGlobalErrorInstrumentationHandler(handler) { + const type = 'error'; + handlers.addHandler(type, handler); + handlers.maybeInstrument(type, instrumentError); +} + +function instrumentError() { + _oldOnErrorHandler = worldwide.GLOBAL_OBJ.onerror; + + // Note: The reason we are doing window.onerror instead of window.addEventListener('error') + // is that we are using this handler in the Loader Script, to handle buffered errors consistently + worldwide.GLOBAL_OBJ.onerror = function ( + msg, + url, + line, + column, + error, + ) { + const handlerData = { + column, + error, + line, + msg, + url, + }; + handlers.triggerHandlers('error', handlerData); + + if (_oldOnErrorHandler) { + // eslint-disable-next-line prefer-rest-params + return _oldOnErrorHandler.apply(this, arguments); + } + + return false; + }; + + worldwide.GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true; +} + +exports.addGlobalErrorInstrumentationHandler = addGlobalErrorInstrumentationHandler; +//# sourceMappingURL=globalError.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalError.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalError.js.map new file mode 100644 index 0000000..2383510 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalError.js","sources":["../../../src/instrument/globalError.ts"],"sourcesContent":["import type { HandlerDataError } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = 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 */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\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: string | object,\n url?: string,\n line?: number,\n column?: number,\n error?: Error,\n ): boolean {\n const handlerData: HandlerDataError = {\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"],"names":["addHandler","maybeInstrument","GLOBAL_OBJ","triggerHandlers"],"mappings":";;;;;AAIA,IAAI,kBAAkB,GAA0C,IAAI;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oCAAoC,CAAC,OAAO,EAA0C;AACtG,EAAE,MAAM,IAAA,GAAO,OAAO;AACtB,EAAEA,mBAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3B,EAAEC,wBAAe,CAAC,IAAI,EAAE,eAAe,CAAC;AACxC;;AAEA,SAAS,eAAe,GAAS;AACjC,EAAE,kBAAA,GAAqBC,oBAAU,CAAC,OAAO;;AAEzC;AACA;AACA,EAAEA,oBAAU,CAAC,OAAA,GAAU;AACvB,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,IAAI;AACR,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAa;AACb,IAAI,MAAM,WAAW,GAAqB;AAC1C,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,MAAM,IAAI;AACV,MAAM,GAAG;AACT,MAAM,GAAG;AACT,KAAK;AACL,IAAIC,wBAAe,CAAC,OAAO,EAAE,WAAW,CAAC;;AAEzC,IAAI,IAAI,kBAAkB,EAAE;AAC5B;AACA,MAAM,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AACtD,IAAI;;AAEJ,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC;;AAEH,EAAED,oBAAU,CAAC,OAAO,CAAC,uBAAA,GAA0B,IAAI;AACnD;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalUnhandledRejection.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalUnhandledRejection.js new file mode 100644 index 0000000..2a4da45 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalUnhandledRejection.js @@ -0,0 +1,43 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const worldwide = require('../utils/worldwide.js'); +const handlers = require('./handlers.js'); + +let _oldOnUnhandledRejectionHandler = null; + +/** + * Add an instrumentation handler for when an unhandled promise rejection is captured. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +function addGlobalUnhandledRejectionInstrumentationHandler( + handler, +) { + const type = 'unhandledrejection'; + handlers.addHandler(type, handler); + handlers.maybeInstrument(type, instrumentUnhandledRejection); +} + +function instrumentUnhandledRejection() { + _oldOnUnhandledRejectionHandler = worldwide.GLOBAL_OBJ.onunhandledrejection; + + // Note: The reason we are doing window.onunhandledrejection instead of window.addEventListener('unhandledrejection') + // is that we are using this handler in the Loader Script, to handle buffered rejections consistently + worldwide.GLOBAL_OBJ.onunhandledrejection = function (e) { + const handlerData = e; + handlers.triggerHandlers('unhandledrejection', handlerData); + + if (_oldOnUnhandledRejectionHandler) { + // eslint-disable-next-line prefer-rest-params + return _oldOnUnhandledRejectionHandler.apply(this, arguments); + } + + return true; + }; + + worldwide.GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true; +} + +exports.addGlobalUnhandledRejectionInstrumentationHandler = addGlobalUnhandledRejectionInstrumentationHandler; +//# sourceMappingURL=globalUnhandledRejection.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalUnhandledRejection.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalUnhandledRejection.js.map new file mode 100644 index 0000000..e6d4fee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/globalUnhandledRejection.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalUnhandledRejection.js","sources":["../../../src/instrument/globalUnhandledRejection.ts"],"sourcesContent":["import type { HandlerDataUnhandledRejection } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = 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 */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\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: unknown): boolean {\n const handlerData: HandlerDataUnhandledRejection = 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"],"names":["addHandler","maybeInstrument","GLOBAL_OBJ","triggerHandlers"],"mappings":";;;;;AAIA,IAAI,+BAA+B,GAAuD,IAAI;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iDAAiD;AACjE,EAAE,OAAO;AACT,EAAQ;AACR,EAAE,MAAM,IAAA,GAAO,oBAAoB;AACnC,EAAEA,mBAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3B,EAAEC,wBAAe,CAAC,IAAI,EAAE,4BAA4B,CAAC;AACrD;;AAEA,SAAS,4BAA4B,GAAS;AAC9C,EAAE,+BAAA,GAAkCC,oBAAU,CAAC,oBAAoB;;AAEnE;AACA;AACA,EAAEA,oBAAU,CAAC,oBAAA,GAAuB,UAAU,CAAC,EAAoB;AACnE,IAAI,MAAM,WAAW,GAAkC,CAAC;AACxD,IAAIC,wBAAe,CAAC,oBAAoB,EAAE,WAAW,CAAC;;AAEtD,IAAI,IAAI,+BAA+B,EAAE;AACzC;AACA,MAAM,OAAO,+BAA+B,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AACnE,IAAI;;AAEJ,IAAI,OAAO,IAAI;AACf,EAAE,CAAC;;AAEH,EAAED,oBAAU,CAAC,oBAAoB,CAAC,uBAAA,GAA0B,IAAI;AAChE;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/handlers.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/handlers.js new file mode 100644 index 0000000..23ed7c3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/handlers.js @@ -0,0 +1,63 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const debugLogger = require('../utils/debug-logger.js'); +const stacktrace = require('../utils/stacktrace.js'); + +// We keep the handlers globally +const handlers = {}; +const instrumented = {}; + +/** Add a handler function. */ +function addHandler(type, handler) { + handlers[type] = handlers[type] || []; + handlers[type].push(handler); +} + +/** + * Reset all instrumentation handlers. + * This can be used by tests to ensure we have a clean slate of instrumentation handlers. + */ +function resetInstrumentationHandlers() { + Object.keys(handlers).forEach(key => { + handlers[key ] = undefined; + }); +} + +/** Maybe run an instrumentation function, unless it was already called. */ +function maybeInstrument(type, instrumentFn) { + if (!instrumented[type]) { + instrumented[type] = true; + try { + instrumentFn(); + } catch (e) { + debugBuild.DEBUG_BUILD && debugLogger.debug.error(`Error while instrumenting ${type}`, e); + } + } +} + +/** Trigger handlers for a given instrumentation type. */ +function triggerHandlers(type, data) { + const typeHandlers = type && handlers[type]; + if (!typeHandlers) { + return; + } + + for (const handler of typeHandlers) { + try { + handler(data); + } catch (e) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.error( + `Error while triggering instrumentation handler.\nType: ${type}\nName: ${stacktrace.getFunctionName(handler)}\nError:`, + e, + ); + } + } +} + +exports.addHandler = addHandler; +exports.maybeInstrument = maybeInstrument; +exports.resetInstrumentationHandlers = resetInstrumentationHandlers; +exports.triggerHandlers = triggerHandlers; +//# sourceMappingURL=handlers.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/handlers.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/handlers.js.map new file mode 100644 index 0000000..ee1aae1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/instrument/handlers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"handlers.js","sources":["../../../src/instrument/handlers.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { debug } from '../utils/debug-logger';\nimport { getFunctionName } from '../utils/stacktrace';\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'fetch-body-resolved'\n | 'history'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\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 */\nexport function resetInstrumentationHandlers(): void {\n Object.keys(handlers).forEach(key => {\n handlers[key as InstrumentHandlerType] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\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. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\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"],"names":["DEBUG_BUILD","debug","getFunctionName"],"mappings":";;;;;;AAgBA;AACA,MAAM,QAAQ,GAAqE,EAAE;AACrF,MAAM,YAAY,GAAiD,EAAE;;AAErE;AACO,SAAS,UAAU,CAAC,IAAI,EAAyB,OAAO,EAAmC;AAClG,EAAE,QAAQ,CAAC,IAAI,CAAA,GAAI,QAAQ,CAAC,IAAI,CAAA,IAAK,EAAE;AACvC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACO,SAAS,4BAA4B,GAAS;AACrD,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAA,IAAO;AACvC,IAAI,QAAQ,CAAC,GAAA,EAAI,GAA4B,SAAS;AACtD,EAAE,CAAC,CAAC;AACJ;;AAEA;AACO,SAAS,eAAe,CAAC,IAAI,EAAyB,YAAY,EAAoB;AAC7F,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC3B,IAAI,YAAY,CAAC,IAAI,CAAA,GAAI,IAAI;AAC7B,IAAI,IAAI;AACR,MAAM,YAAY,EAAE;AACpB,IAAI,CAAA,CAAE,OAAO,CAAC,EAAE;AAChB,MAAMA,sBAAA,IAAeC,iBAAK,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAA,EAAA,CAAA,CAAA;AACA,IAAA;AACA,EAAA;AACA;;AAEA;AACA,SAAA,eAAA,CAAA,IAAA,EAAA,IAAA,EAAA;AACA,EAAA,MAAA,YAAA,GAAA,IAAA,IAAA,QAAA,CAAA,IAAA,CAAA;AACA,EAAA,IAAA,CAAA,YAAA,EAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,KAAA,MAAA,OAAA,IAAA,YAAA,EAAA;AACA,IAAA,IAAA;AACA,MAAA,OAAA,CAAA,IAAA,CAAA;AACA,IAAA,CAAA,CAAA,OAAA,CAAA,EAAA;AACA,MAAAD,sBAAA;AACA,QAAAC,iBAAA,CAAA,KAAA;AACA,UAAA,CAAA,uDAAA,EAAA,IAAA,CAAA,QAAA,EAAAC,0BAAA,CAAA,OAAA,CAAA,CAAA,QAAA,CAAA;AACA,UAAA,CAAA;AACA,SAAA;AACA,IAAA;AACA,EAAA;AACA;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integration.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integration.js new file mode 100644 index 0000000..094db6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integration.js @@ -0,0 +1,158 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('./currentScopes.js'); +const debugBuild = require('./debug-build.js'); +const debugLogger = require('./utils/debug-logger.js'); + +const installedIntegrations = []; + +/** Map of integrations assigned to a client */ + +/** + * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to + * preserve the order of integrations in the array. + * + * @private + */ +function filterDuplicates(integrations) { + const integrationsByName = {}; + + integrations.forEach((currentInstance) => { + const { name } = currentInstance; + + const existingInstance = integrationsByName[name]; + + // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a + // default instance to overwrite an existing user instance + if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) { + return; + } + + integrationsByName[name] = currentInstance; + }); + + return Object.values(integrationsByName); +} + +/** Gets integrations to install */ +function getIntegrationsToSetup( + options, +) { + const defaultIntegrations = options.defaultIntegrations || []; + const userIntegrations = options.integrations; + + // We flag default instances, so that later we can tell them apart from any user-created instances of the same class + defaultIntegrations.forEach((integration) => { + integration.isDefaultInstance = true; + }); + + let integrations; + + if (Array.isArray(userIntegrations)) { + integrations = [...defaultIntegrations, ...userIntegrations]; + } else if (typeof userIntegrations === 'function') { + const resolvedUserIntegrations = userIntegrations(defaultIntegrations); + integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations]; + } else { + integrations = defaultIntegrations; + } + + return filterDuplicates(integrations); +} + +/** + * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default + * integrations are added unless they were already provided before. + * @param integrations array of integration instances + * @param withDefault should enable default integrations + */ +function setupIntegrations(client, integrations) { + const integrationIndex = {}; + + integrations.forEach((integration) => { + // guard against empty provided integrations + if (integration) { + setupIntegration(client, integration, integrationIndex); + } + }); + + return integrationIndex; +} + +/** + * Execute the `afterAllSetup` hooks of the given integrations. + */ +function afterSetupIntegrations(client, integrations) { + for (const integration of integrations) { + // guard against empty provided integrations + if (integration?.afterAllSetup) { + integration.afterAllSetup(client); + } + } +} + +/** Setup a single integration. */ +function setupIntegration(client, integration, integrationIndex) { + if (integrationIndex[integration.name]) { + debugBuild.DEBUG_BUILD && debugLogger.debug.log(`Integration skipped because it was already installed: ${integration.name}`); + return; + } + integrationIndex[integration.name] = integration; + + // `setupOnce` is only called the first time + if (!installedIntegrations.includes(integration.name) && typeof integration.setupOnce === 'function') { + integration.setupOnce(); + installedIntegrations.push(integration.name); + } + + // `setup` is run for each client + if (integration.setup && typeof integration.setup === 'function') { + integration.setup(client); + } + + if (typeof integration.preprocessEvent === 'function') { + const callback = integration.preprocessEvent.bind(integration) ; + client.on('preprocessEvent', (event, hint) => callback(event, hint, client)); + } + + if (typeof integration.processEvent === 'function') { + const callback = integration.processEvent.bind(integration) ; + + const processor = Object.assign((event, hint) => callback(event, hint, client), { + id: integration.name, + }); + + client.addEventProcessor(processor); + } + + debugBuild.DEBUG_BUILD && debugLogger.debug.log(`Integration installed: ${integration.name}`); +} + +/** Add an integration to the current scope's client. */ +function addIntegration(integration) { + const client = currentScopes.getClient(); + + if (!client) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn(`Cannot add integration "${integration.name}" because no SDK Client is available.`); + return; + } + + client.addIntegration(integration); +} + +/** + * Define an integration function that can be used to create an integration instance. + * Note that this by design hides the implementation details of the integration, as they are considered internal. + */ +function defineIntegration(fn) { + return fn; +} + +exports.addIntegration = addIntegration; +exports.afterSetupIntegrations = afterSetupIntegrations; +exports.defineIntegration = defineIntegration; +exports.getIntegrationsToSetup = getIntegrationsToSetup; +exports.installedIntegrations = installedIntegrations; +exports.setupIntegration = setupIntegration; +exports.setupIntegrations = setupIntegrations; +//# sourceMappingURL=integration.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integration.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integration.js.map new file mode 100644 index 0000000..c00a619 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"integration.js","sources":["../../src/integration.ts"],"sourcesContent":["import type { Client } from './client';\nimport { getClient } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { Integration, IntegrationFn } from './types-hoist/integration';\nimport type { CoreOptions } from './types-hoist/options';\nimport { debug } from './utils/debug-logger';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\ntype IntegrationWithDefaultInstance = Integration & { isDefaultInstance?: true };\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: Integration[]): Integration[] {\n const integrationsByName: { [key: string]: Integration } = {};\n\n integrations.forEach((currentInstance: IntegrationWithDefaultInstance) => {\n const { name } = currentInstance;\n\n const existingInstance: IntegrationWithDefaultInstance | undefined = 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 */\nexport function getIntegrationsToSetup(\n options: Pick,\n): Integration[] {\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: IntegrationWithDefaultInstance) => {\n integration.isDefaultInstance = true;\n });\n\n let integrations: Integration[];\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 */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach((integration: Integration | undefined) => {\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 */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\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. */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\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) as typeof integration.preprocessEvent;\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) as typeof integration.processEvent;\n\n const processor = Object.assign((event: Event, hint: EventHint) => 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. */\nexport function addIntegration(integration: Integration): void {\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 */\nexport function defineIntegration(fn: Fn): (...args: Parameters) => Integration {\n return fn;\n}\n"],"names":["DEBUG_BUILD","debug","getClient"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/captureconsole.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/captureconsole.js new file mode 100644 index 0000000..5ef8e68 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/captureconsole.js @@ -0,0 +1,94 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const exports$1 = require('../exports.js'); +const console = require('../instrument/console.js'); +const integration = require('../integration.js'); +const debugLogger = require('../utils/debug-logger.js'); +const misc = require('../utils/misc.js'); +const severity = require('../utils/severity.js'); +const string = require('../utils/string.js'); +const worldwide = require('../utils/worldwide.js'); + +const INTEGRATION_NAME = 'CaptureConsole'; + +const _captureConsoleIntegration = ((options = {}) => { + const levels = options.levels || debugLogger.CONSOLE_LEVELS; + const handled = options.handled ?? true; + + return { + name: INTEGRATION_NAME, + setup(client) { + if (!('console' in worldwide.GLOBAL_OBJ)) { + return; + } + + console.addConsoleInstrumentationHandler(({ args, level }) => { + if (currentScopes.getClient() !== client || !levels.includes(level)) { + return; + } + + consoleHandler(args, level, handled); + }); + }, + }; +}) ; + +/** + * Send Console API calls as Sentry Events. + */ +const captureConsoleIntegration = integration.defineIntegration(_captureConsoleIntegration); + +function consoleHandler(args, level, handled) { + const severityLevel = severity.severityLevelFromString(level); + + /* + We create this error here already to attach a stack trace to captured messages, + if users set `attachStackTrace` to `true` in Sentry.init. + We do this here already because we want to minimize the number of Sentry SDK stack frames + within the error. Technically, Client.captureMessage will also do it but this happens several + stack frames deeper. + */ + const syntheticException = new Error(); + + const captureContext = { + level: severity.severityLevelFromString(level), + extra: { + arguments: args, + }, + }; + + currentScopes.withScope(scope => { + scope.addEventProcessor(event => { + event.logger = 'console'; + + misc.addExceptionMechanism(event, { + handled, + type: 'auto.core.capture_console', + }); + + return event; + }); + + if (level === 'assert') { + if (!args[0]) { + const message = `Assertion failed: ${string.safeJoin(args.slice(1), ' ') || 'console.assert'}`; + scope.setExtra('arguments', args.slice(1)); + scope.captureMessage(message, severityLevel, { captureContext, syntheticException }); + } + return; + } + + const error = args.find(arg => arg instanceof Error); + if (error) { + exports$1.captureException(error, captureContext); + return; + } + + const message = string.safeJoin(args, ' '); + scope.captureMessage(message, severityLevel, { captureContext, syntheticException }); + }); +} + +exports.captureConsoleIntegration = captureConsoleIntegration; +//# sourceMappingURL=captureconsole.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/captureconsole.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/captureconsole.js.map new file mode 100644 index 0000000..a6070e3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/captureconsole.js.map @@ -0,0 +1 @@ +{"version":3,"file":"captureconsole.js","sources":["../../../src/integrations/captureconsole.ts"],"sourcesContent":["import { getClient, withScope } from '../currentScopes';\nimport { captureException } from '../exports';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { CaptureContext } from '../scope';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { addExceptionMechanism } from '../utils/misc';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface CaptureConsoleOptions {\n levels?: string[];\n\n /**\n * By default, Sentry will mark captured console messages as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled?: boolean;\n}\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options: CaptureConsoleOptions = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n const handled = options.handled ?? true;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n consoleHandler(args, level, handled);\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Send Console API calls as Sentry Events.\n */\nexport const captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\nfunction consoleHandler(args: unknown[], level: string, handled: boolean): void {\n const severityLevel = severityLevelFromString(level);\n\n /*\n We create this error here already to attach a stack trace to captured messages,\n if users set `attachStackTrace` to `true` in Sentry.init.\n We do this here already because we want to minimize the number of Sentry SDK stack frames\n within the error. Technically, Client.captureMessage will also do it but this happens several\n stack frames deeper.\n */\n const syntheticException = new Error();\n\n const captureContext: CaptureContext = {\n level: severityLevelFromString(level),\n extra: {\n arguments: args,\n },\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'console';\n\n addExceptionMechanism(event, {\n handled,\n type: 'auto.core.capture_console',\n });\n\n return event;\n });\n\n if (level === 'assert') {\n if (!args[0]) {\n const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n }\n return;\n }\n\n const error = args.find(arg => arg instanceof Error);\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n const message = safeJoin(args, ' ');\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n });\n}\n"],"names":["CONSOLE_LEVELS","GLOBAL_OBJ","addConsoleInstrumentationHandler","getClient","defineIntegration","severityLevelFromString","withScope","addExceptionMechanism","safeJoin","captureException"],"mappings":";;;;;;;;;;;;AAwBA,MAAM,gBAAA,GAAmB,gBAAgB;;AAEzC,MAAM,0BAAA,IAA8B,CAAC,OAAO,GAA0B,EAAE,KAAK;AAC7E,EAAE,MAAM,MAAA,GAAS,OAAO,CAAC,MAAA,IAAUA,0BAAc;AACjD,EAAE,MAAM,OAAA,GAAU,OAAO,CAAC,OAAA,IAAW,IAAI;;AAEzC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,IAAI,EAAE,aAAaC,oBAAU,CAAC,EAAE;AACtC,QAAQ;AACR,MAAM;;AAEN,MAAMC,wCAAgC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAA,EAAO,KAAK;AAC5D,QAAQ,IAAIC,uBAAS,OAAO,MAAA,IAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/D,UAAU;AACV,QAAQ;;AAER,QAAQ,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAC5C,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;AAED;AACA;AACA;MACa,yBAAA,GAA4BC,6BAAiB,CAAC,0BAA0B;;AAErF,SAAS,cAAc,CAAC,IAAI,EAAa,KAAK,EAAU,OAAO,EAAiB;AAChF,EAAE,MAAM,aAAA,GAAgBC,gCAAuB,CAAC,KAAK,CAAC;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,kBAAA,GAAqB,IAAI,KAAK,EAAE;;AAExC,EAAE,MAAM,cAAc,GAAmB;AACzC,IAAI,KAAK,EAAEA,gCAAuB,CAAC,KAAK,CAAC;AACzC,IAAI,KAAK,EAAE;AACX,MAAM,SAAS,EAAE,IAAI;AACrB,KAAK;AACL,GAAG;;AAEH,EAAEC,uBAAS,CAAC,KAAA,IAAS;AACrB,IAAI,KAAK,CAAC,iBAAiB,CAAC,SAAS;AACrC,MAAM,KAAK,CAAC,MAAA,GAAS,SAAS;;AAE9B,MAAMC,0BAAqB,CAAC,KAAK,EAAE;AACnC,QAAQ,OAAO;AACf,QAAQ,IAAI,EAAE,2BAA2B;AACzC,OAAO,CAAC;;AAER,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC,CAAC;;AAEN,IAAI,IAAI,KAAA,KAAU,QAAQ,EAAE;AAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACpB,QAAQ,MAAM,UAAU,CAAC,kBAAkB,EAAEC,eAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAA;AACA,QAAA,KAAA,CAAA,QAAA,CAAA,WAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AACA,QAAA,KAAA,CAAA,cAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,CAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;;AAEA,IAAA,MAAA,KAAA,GAAA,IAAA,CAAA,IAAA,CAAA,GAAA,IAAA,GAAA,YAAA,KAAA,CAAA;AACA,IAAA,IAAA,KAAA,EAAA;AACA,MAAAC,0BAAA,CAAA,KAAA,EAAA,cAAA,CAAA;AACA,MAAA;AACA,IAAA;;AAEA,IAAA,MAAA,OAAA,GAAAD,eAAA,CAAA,IAAA,EAAA,GAAA,CAAA;AACA,IAAA,KAAA,CAAA,cAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,CAAA;AACA,EAAA,CAAA,CAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/consola.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/consola.js new file mode 100644 index 0000000..1b38358 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/consola.js @@ -0,0 +1,174 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const internal = require('../logs/internal.js'); +const utils = require('../logs/utils.js'); + +/** + * Options for the Sentry Consola reporter. + */ + +const DEFAULT_CAPTURED_LEVELS = ['trace', 'debug', 'info', 'warn', 'error', 'fatal']; + +/** + * Creates a new Sentry reporter for Consola that forwards logs to Sentry. Requires the `enableLogs` option to be enabled. + * + * **Note: This integration supports Consola v3.x only.** The reporter interface and log object structure + * may differ in other versions of Consola. + * + * @param options - Configuration options for the reporter. + * @returns A Consola reporter that can be added to consola instances. + * + * @example + * ```ts + * import * as Sentry from '@sentry/node'; + * import { consola } from 'consola'; + * + * Sentry.init({ + * enableLogs: true, + * }); + * + * const sentryReporter = Sentry.createConsolaReporter({ + * // Optional: filter levels to capture + * levels: ['error', 'warn', 'info'], + * }); + * + * consola.addReporter(sentryReporter); + * + * // Now consola logs will be captured by Sentry + * consola.info('This will be sent to Sentry'); + * consola.error('This error will also be sent to Sentry'); + * ``` + */ +function createConsolaReporter(options = {}) { + const levels = new Set(options.levels ?? DEFAULT_CAPTURED_LEVELS); + const providedClient = options.client; + + return { + log(logObj) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { type, level, message: consolaMessage, args, tag, date: _date, ...attributes } = logObj; + + // Get client - use provided client or current client + const client = providedClient || currentScopes.getClient(); + if (!client) { + return; + } + + // Determine the log severity level + const logSeverityLevel = getLogSeverityLevel(type, level); + + // Early exit if this level should not be captured + if (!levels.has(logSeverityLevel)) { + return; + } + + const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = client.getOptions(); + + // Format the log message using the same approach as consola's basic reporter + const messageParts = []; + if (consolaMessage) { + messageParts.push(consolaMessage); + } + if (args && args.length > 0) { + messageParts.push(utils.formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth)); + } + const message = messageParts.join(' '); + + // Build attributes + attributes['sentry.origin'] = 'auto.log.consola'; + + if (tag) { + attributes['consola.tag'] = tag; + } + + if (type) { + attributes['consola.type'] = type; + } + + // Only add level if it's a valid number (not null/undefined) + if (level != null && typeof level === 'number') { + attributes['consola.level'] = level; + } + + internal._INTERNAL_captureLog({ + level: logSeverityLevel, + message, + attributes, + }); + }, + }; +} + +// Mapping from consola log types to Sentry log severity levels +const CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP = { + // Consola built-in types + silent: 'trace', + fatal: 'fatal', + error: 'error', + warn: 'warn', + log: 'info', + info: 'info', + success: 'info', + fail: 'error', + ready: 'info', + start: 'info', + box: 'info', + debug: 'debug', + trace: 'trace', + verbose: 'debug', + // Custom types that might exist + critical: 'fatal', + notice: 'info', +}; + +// Mapping from consola log levels (numbers) to Sentry log severity levels +const CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP = { + 0: 'fatal', // Fatal and Error + 1: 'warn', // Warnings + 2: 'info', // Normal logs + 3: 'info', // Informational logs, success, fail, ready, start, ... + 4: 'debug', // Debug logs + 5: 'trace', // Trace logs +}; + +/** + * Determines the log severity level from Consola type and level. + * + * @param type - The Consola log type (e.g., 'error', 'warn', 'info') + * @param level - The Consola numeric log level (0-5) or null for some types like 'verbose' + * @returns The corresponding Sentry log severity level + */ +function getLogSeverityLevel(type, level) { + // Handle special case for verbose logs (level can be null with infinite level in Consola) + if (type === 'verbose') { + return 'debug'; + } + + // Handle silent logs - these should be at trace level + if (type === 'silent') { + return 'trace'; + } + + // First try to map by type (more specific) + if (type) { + const mappedLevel = CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP[type]; + if (mappedLevel) { + return mappedLevel; + } + } + + // Fallback to level mapping (handle null level) + if (typeof level === 'number') { + const mappedLevel = CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[level]; + if (mappedLevel) { + return mappedLevel; + } + } + + // Default fallback + return 'info'; +} + +exports.createConsolaReporter = createConsolaReporter; +//# sourceMappingURL=consola.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/consola.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/consola.js.map new file mode 100644 index 0000000..f855baa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/consola.js.map @@ -0,0 +1 @@ +{"version":3,"file":"consola.js","sources":["../../../src/integrations/consola.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { getClient } from '../currentScopes';\nimport { _INTERNAL_captureLog } from '../logs/internal';\nimport { formatConsoleArgs } from '../logs/utils';\nimport type { LogSeverityLevel } from '../types-hoist/log';\n\n/**\n * Options for the Sentry Consola reporter.\n */\ninterface ConsolaReporterOptions {\n /**\n * Use this option to filter which levels should be captured. By default, all levels are captured.\n *\n * @example\n * ```ts\n * const sentryReporter = Sentry.createConsolaReporter({\n * // Only capture error and warn logs\n * levels: ['error', 'warn'],\n * });\n * consola.addReporter(sentryReporter);\n * ```\n */\n levels?: Array;\n\n /**\n * Optionally provide a specific Sentry client instance to use for capturing logs.\n * If not provided, the current client will be retrieved using `getClient()`.\n *\n * This is useful when you want to use specific client options for log normalization\n * or when working with multiple client instances.\n *\n * @example\n * ```ts\n * const sentryReporter = Sentry.createConsolaReporter({\n * client: myCustomClient,\n * });\n * ```\n */\n client?: Client;\n}\n\nexport interface ConsolaReporter {\n log: (logObj: ConsolaLogObject) => void;\n}\n\n/**\n * Represents a log object that Consola reporters receive.\n *\n * This interface matches the structure of log objects passed to Consola reporters.\n * See: https://github.com/unjs/consola#custom-reporters\n *\n * @example\n * ```ts\n * const reporter = {\n * log(logObj: ConsolaLogObject) {\n * console.log(`[${logObj.type}] ${logObj.message || logObj.args?.join(' ')}`);\n * }\n * };\n * consola.addReporter(reporter);\n * ```\n */\nexport interface ConsolaLogObject {\n /**\n * Allows additional custom properties to be set on the log object.\n * These properties will be captured as log attributes with a 'consola.' prefix.\n *\n * @example\n * ```ts\n * const reporter = Sentry.createConsolaReporter();\n * reporter.log({\n * type: 'info',\n * message: 'User action',\n * userId: 123,\n * sessionId: 'abc-123'\n * });\n * // Will create attributes: consola.userId and consola.sessionId\n * ```\n */\n [key: string]: unknown;\n\n /**\n * The numeric log level (0-5) or null.\n *\n * Consola log levels:\n * - 0: Fatal and Error\n * - 1: Warnings\n * - 2: Normal logs\n * - 3: Informational logs, success, fail, ready, start, box, ...\n * - 4: Debug logs\n * - 5: Trace logs\n * - null: Some special types like 'verbose'\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#log-level\n */\n level?: number | null;\n\n /**\n * The log type/method name (e.g., 'error', 'warn', 'info', 'debug', 'trace', 'success', 'fail', etc.).\n *\n * Consola built-in types include:\n * - Standard: silent, fatal, error, warn, log, info, success, fail, ready, start, box, debug, trace, verbose\n * - Custom types can also be defined\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#log-types\n */\n type?: string;\n\n /**\n * An optional tag/scope for the log entry.\n *\n * Tags are created using `consola.withTag('scope')` and help categorize logs.\n *\n * @example\n * ```ts\n * const scopedLogger = consola.withTag('auth');\n * scopedLogger.info('User logged in'); // tag will be 'auth'\n * ```\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#withtagtag\n */\n tag?: string;\n\n /**\n * The raw arguments passed to the log method.\n *\n * When `message` is not provided, these args are typically formatted into the final message.\n *\n * @example\n * ```ts\n * consola.info('Hello', 'world', { user: 'john' });\n * // args = ['Hello', 'world', { user: 'john' }]\n * ```\n */\n args?: unknown[];\n\n /**\n * The timestamp when the log was created.\n *\n * This is automatically set by Consola when the log is created.\n */\n date?: Date;\n\n /**\n * The formatted log message.\n *\n * When provided, this is the final formatted message. When not provided,\n * the message should be constructed from the `args` array.\n */\n message?: string;\n}\n\nconst DEFAULT_CAPTURED_LEVELS: Array = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\n/**\n * Creates a new Sentry reporter for Consola that forwards logs to Sentry. Requires the `enableLogs` option to be enabled.\n *\n * **Note: This integration supports Consola v3.x only.** The reporter interface and log object structure\n * may differ in other versions of Consola.\n *\n * @param options - Configuration options for the reporter.\n * @returns A Consola reporter that can be added to consola instances.\n *\n * @example\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import { consola } from 'consola';\n *\n * Sentry.init({\n * enableLogs: true,\n * });\n *\n * const sentryReporter = Sentry.createConsolaReporter({\n * // Optional: filter levels to capture\n * levels: ['error', 'warn', 'info'],\n * });\n *\n * consola.addReporter(sentryReporter);\n *\n * // Now consola logs will be captured by Sentry\n * consola.info('This will be sent to Sentry');\n * consola.error('This error will also be sent to Sentry');\n * ```\n */\nexport function createConsolaReporter(options: ConsolaReporterOptions = {}): ConsolaReporter {\n const levels = new Set(options.levels ?? DEFAULT_CAPTURED_LEVELS);\n const providedClient = options.client;\n\n return {\n log(logObj: ConsolaLogObject) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { type, level, message: consolaMessage, args, tag, date: _date, ...attributes } = logObj;\n\n // Get client - use provided client or current client\n const client = providedClient || getClient();\n if (!client) {\n return;\n }\n\n // Determine the log severity level\n const logSeverityLevel = getLogSeverityLevel(type, level);\n\n // Early exit if this level should not be captured\n if (!levels.has(logSeverityLevel)) {\n return;\n }\n\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = client.getOptions();\n\n // Format the log message using the same approach as consola's basic reporter\n const messageParts = [];\n if (consolaMessage) {\n messageParts.push(consolaMessage);\n }\n if (args && args.length > 0) {\n messageParts.push(formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth));\n }\n const message = messageParts.join(' ');\n\n // Build attributes\n attributes['sentry.origin'] = 'auto.log.consola';\n\n if (tag) {\n attributes['consola.tag'] = tag;\n }\n\n if (type) {\n attributes['consola.type'] = type;\n }\n\n // Only add level if it's a valid number (not null/undefined)\n if (level != null && typeof level === 'number') {\n attributes['consola.level'] = level;\n }\n\n _INTERNAL_captureLog({\n level: logSeverityLevel,\n message,\n attributes,\n });\n },\n };\n}\n\n// Mapping from consola log types to Sentry log severity levels\nconst CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n // Consola built-in types\n silent: 'trace',\n fatal: 'fatal',\n error: 'error',\n warn: 'warn',\n log: 'info',\n info: 'info',\n success: 'info',\n fail: 'error',\n ready: 'info',\n start: 'info',\n box: 'info',\n debug: 'debug',\n trace: 'trace',\n verbose: 'debug',\n // Custom types that might exist\n critical: 'fatal',\n notice: 'info',\n};\n\n// Mapping from consola log levels (numbers) to Sentry log severity levels\nconst CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n 0: 'fatal', // Fatal and Error\n 1: 'warn', // Warnings\n 2: 'info', // Normal logs\n 3: 'info', // Informational logs, success, fail, ready, start, ...\n 4: 'debug', // Debug logs\n 5: 'trace', // Trace logs\n};\n\n/**\n * Determines the log severity level from Consola type and level.\n *\n * @param type - The Consola log type (e.g., 'error', 'warn', 'info')\n * @param level - The Consola numeric log level (0-5) or null for some types like 'verbose'\n * @returns The corresponding Sentry log severity level\n */\nfunction getLogSeverityLevel(type?: string, level?: number | null): LogSeverityLevel {\n // Handle special case for verbose logs (level can be null with infinite level in Consola)\n if (type === 'verbose') {\n return 'debug';\n }\n\n // Handle silent logs - these should be at trace level\n if (type === 'silent') {\n return 'trace';\n }\n\n // First try to map by type (more specific)\n if (type) {\n const mappedLevel = CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP[type];\n if (mappedLevel) {\n return mappedLevel;\n }\n }\n\n // Fallback to level mapping (handle null level)\n if (typeof level === 'number') {\n const mappedLevel = CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[level];\n if (mappedLevel) {\n return mappedLevel;\n }\n }\n\n // Default fallback\n return 'info';\n}\n"],"names":["getClient","formatConsoleArgs","_INTERNAL_captureLog"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/console.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/console.js new file mode 100644 index 0000000..d92679c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/console.js @@ -0,0 +1,88 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const breadcrumbs = require('../breadcrumbs.js'); +const currentScopes = require('../currentScopes.js'); +const console = require('../instrument/console.js'); +const integration = require('../integration.js'); +const debugLogger = require('../utils/debug-logger.js'); +const severity = require('../utils/severity.js'); +const string = require('../utils/string.js'); +const worldwide = require('../utils/worldwide.js'); + +const INTEGRATION_NAME = 'Console'; + +/** + * Captures calls to the `console` API as breadcrumbs in Sentry. + * + * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`, + * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which + * levels are captured. + * + * @example + * + * ```js + * Sentry.init({ + * integrations: [Sentry.consoleIntegration({ levels: ['error', 'warn'] })], + * }); + * ``` + */ +const consoleIntegration = integration.defineIntegration((options = {}) => { + const levels = new Set(options.levels || debugLogger.CONSOLE_LEVELS); + + return { + name: INTEGRATION_NAME, + setup(client) { + console.addConsoleInstrumentationHandler(({ args, level }) => { + if (currentScopes.getClient() !== client || !levels.has(level)) { + return; + } + + addConsoleBreadcrumb(level, args); + }); + }, + }; +}); + +/** + * Capture a console breadcrumb. + * + * Exported just for tests. + */ +function addConsoleBreadcrumb(level, args) { + const breadcrumb = { + category: 'console', + data: { + arguments: args, + logger: 'console', + }, + level: severity.severityLevelFromString(level), + message: formatConsoleArgs(args), + }; + + if (level === 'assert') { + if (args[0] === false) { + const assertionArgs = args.slice(1); + breadcrumb.message = + assertionArgs.length > 0 ? `Assertion failed: ${formatConsoleArgs(assertionArgs)}` : 'Assertion failed'; + breadcrumb.data.arguments = assertionArgs; + } else { + // Don't capture a breadcrumb for passed assertions + return; + } + } + + breadcrumbs.addBreadcrumb(breadcrumb, { + input: args, + level, + }); +} + +function formatConsoleArgs(values) { + return 'util' in worldwide.GLOBAL_OBJ && typeof (worldwide.GLOBAL_OBJ ).util.format === 'function' + ? (worldwide.GLOBAL_OBJ ).util.format(...values) + : string.safeJoin(values, ' '); +} + +exports.addConsoleBreadcrumb = addConsoleBreadcrumb; +exports.consoleIntegration = consoleIntegration; +//# sourceMappingURL=console.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/console.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/console.js.map new file mode 100644 index 0000000..be95440 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/console.js.map @@ -0,0 +1 @@ +{"version":3,"file":"console.js","sources":["../../../src/integrations/console.ts"],"sourcesContent":["import { addBreadcrumb } from '../breadcrumbs';\nimport { getClient } from '../currentScopes';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface ConsoleIntegrationOptions {\n levels: ConsoleLevel[];\n}\n\ntype GlobalObjectWithUtil = typeof GLOBAL_OBJ & {\n util: {\n format: (...args: unknown[]) => string;\n };\n};\n\nconst INTEGRATION_NAME = 'Console';\n\n/**\n * Captures calls to the `console` API as breadcrumbs in Sentry.\n *\n * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`,\n * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which\n * levels are captured.\n *\n * @example\n *\n * ```js\n * Sentry.init({\n * integrations: [Sentry.consoleIntegration({ levels: ['error', 'warn'] })],\n * });\n * ```\n */\nexport const consoleIntegration = defineIntegration((options: Partial = {}) => {\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 */\nexport function addConsoleBreadcrumb(level: ConsoleLevel, args: unknown[]): void {\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: unknown[]): string {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ as GlobalObjectWithUtil).util.format === 'function'\n ? (GLOBAL_OBJ as GlobalObjectWithUtil).util.format(...values)\n : safeJoin(values, ' ');\n}\n"],"names":["defineIntegration","CONSOLE_LEVELS","addConsoleInstrumentationHandler","getClient","severityLevelFromString","addBreadcrumb","GLOBAL_OBJ","safeJoin"],"mappings":";;;;;;;;;;;AAoBA,MAAM,gBAAA,GAAmB,SAAS;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,kBAAA,GAAqBA,6BAAiB,CAAC,CAAC,OAAO,GAAuC,EAAE,KAAK;AAC1G,EAAE,MAAM,MAAA,GAAS,IAAI,GAAG,CAAC,OAAO,CAAC,MAAA,IAAUC,0BAAc,CAAC;;AAE1D,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAMC,wCAAgC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAA,EAAO,KAAK;AAC5D,QAAQ,IAAIC,uBAAS,OAAO,MAAA,IAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC1D,UAAU;AACV,QAAQ;;AAER,QAAQ,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;AACzC,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,KAAK,EAAgB,IAAI,EAAmB;AACjF,EAAE,MAAM,aAAa;AACrB,IAAI,QAAQ,EAAE,SAAS;AACvB,IAAI,IAAI,EAAE;AACV,MAAM,SAAS,EAAE,IAAI;AACrB,MAAM,MAAM,EAAE,SAAS;AACvB,KAAK;AACL,IAAI,KAAK,EAAEC,gCAAuB,CAAC,KAAK,CAAC;AACzC,IAAI,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC;AACpC,GAAG;;AAEH,EAAE,IAAI,KAAA,KAAU,QAAQ,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,CAAC,CAAA,KAAM,KAAK,EAAE;AAC3B,MAAM,MAAM,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,MAAM,UAAU,CAAC,OAAA;AACjB,QAAQ,aAAa,CAAC,MAAA,GAAS,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAA,GAAA,kBAAA;AACA,MAAA,UAAA,CAAA,IAAA,CAAA,SAAA,GAAA,aAAA;AACA,IAAA,CAAA,MAAA;AACA;AACA,MAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAAC,yBAAA,CAAA,UAAA,EAAA;AACA,IAAA,KAAA,EAAA,IAAA;AACA,IAAA,KAAA;AACA,GAAA,CAAA;AACA;;AAEA,SAAA,iBAAA,CAAA,MAAA,EAAA;AACA,EAAA,OAAA,MAAA,IAAAC,oBAAA,IAAA,OAAA,CAAAA,oBAAA,GAAA,IAAA,CAAA,MAAA,KAAA;AACA,MAAA,CAAAA,oBAAA,GAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACA,MAAAC,eAAA,CAAA,MAAA,EAAA,GAAA,CAAA;AACA;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/conversationId.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/conversationId.js new file mode 100644 index 0000000..0f16198 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/conversationId.js @@ -0,0 +1,37 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const integration = require('../integration.js'); +const semanticAttributes = require('../semanticAttributes.js'); + +const INTEGRATION_NAME = 'ConversationId'; + +const _conversationIdIntegration = (() => { + return { + name: INTEGRATION_NAME, + setup(client) { + client.on('spanStart', (span) => { + const scopeData = currentScopes.getCurrentScope().getScopeData(); + const isolationScopeData = currentScopes.getIsolationScope().getScopeData(); + + const conversationId = scopeData.conversationId || isolationScopeData.conversationId; + + if (conversationId) { + span.setAttribute(semanticAttributes.GEN_AI_CONVERSATION_ID_ATTRIBUTE, conversationId); + } + }); + }, + }; +}) ; + +/** + * Automatically applies conversation ID from scope to spans. + * + * This integration reads the conversation ID from the current or isolation scope + * and applies it to spans when they start. This ensures the conversation ID is + * available for all AI-related operations. + */ +const conversationIdIntegration = integration.defineIntegration(_conversationIdIntegration); + +exports.conversationIdIntegration = conversationIdIntegration; +//# sourceMappingURL=conversationId.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/conversationId.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/conversationId.js.map new file mode 100644 index 0000000..6618e0a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/conversationId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"conversationId.js","sources":["../../../src/integrations/conversationId.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { defineIntegration } from '../integration';\nimport { GEN_AI_CONVERSATION_ID_ATTRIBUTE } from '../semanticAttributes';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { Span } from '../types-hoist/span';\n\nconst INTEGRATION_NAME = 'ConversationId';\n\nconst _conversationIdIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setup(client: Client) {\n client.on('spanStart', (span: 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}) satisfies IntegrationFn;\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 */\nexport const conversationIdIntegration = defineIntegration(_conversationIdIntegration);\n"],"names":["getCurrentScope","getIsolationScope","GEN_AI_CONVERSATION_ID_ATTRIBUTE","defineIntegration"],"mappings":";;;;;;AAOA,MAAM,gBAAA,GAAmB,gBAAgB;;AAEzC,MAAM,0BAAA,IAA8B,MAAM;AAC1C,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAU;AAC1B,MAAM,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,KAAW;AAC7C,QAAQ,MAAM,YAAYA,6BAAe,EAAE,CAAC,YAAY,EAAE;AAC1D,QAAQ,MAAM,qBAAqBC,+BAAiB,EAAE,CAAC,YAAY,EAAE;;AAErE,QAAQ,MAAM,iBAAiB,SAAS,CAAC,cAAA,IAAkB,kBAAkB,CAAC,cAAc;;AAE5F,QAAQ,IAAI,cAAc,EAAE;AAC5B,UAAU,IAAI,CAAC,YAAY,CAACC,mDAAgC,EAAE,cAAc,CAAC;AAC7E,QAAQ;AACR,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;MACa,yBAAA,GAA4BC,6BAAiB,CAAC,0BAA0B;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/dedupe.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/dedupe.js new file mode 100644 index 0000000..81a22d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/dedupe.js @@ -0,0 +1,182 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const integration = require('../integration.js'); +const debugLogger = require('../utils/debug-logger.js'); +const stacktrace = require('../utils/stacktrace.js'); + +const INTEGRATION_NAME = 'Dedupe'; + +const _dedupeIntegration = (() => { + let previousEvent; + + return { + name: INTEGRATION_NAME, + processEvent(currentEvent) { + // We want to ignore any non-error type events, e.g. transactions or replays + // These should never be deduped, and also not be compared against as _previousEvent. + if (currentEvent.type) { + return currentEvent; + } + + // Juuust in case something goes wrong + try { + if (_shouldDropEvent(currentEvent, previousEvent)) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Event dropped due to being a duplicate of previously captured event.'); + return null; + } + } catch {} // eslint-disable-line no-empty + + return (previousEvent = currentEvent); + }, + }; +}) ; + +/** + * Deduplication filter. + */ +const dedupeIntegration = integration.defineIntegration(_dedupeIntegration); + +/** only exported for tests. */ +function _shouldDropEvent(currentEvent, previousEvent) { + if (!previousEvent) { + return false; + } + + if (_isSameMessageEvent(currentEvent, previousEvent)) { + return true; + } + + if (_isSameExceptionEvent(currentEvent, previousEvent)) { + return true; + } + + return false; +} + +function _isSameMessageEvent(currentEvent, previousEvent) { + const currentMessage = currentEvent.message; + const previousMessage = previousEvent.message; + + // If neither event has a message property, they were both exceptions, so bail out + if (!currentMessage && !previousMessage) { + return false; + } + + // If only one event has a stacktrace, but not the other one, they are not the same + if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) { + return false; + } + + if (currentMessage !== previousMessage) { + return false; + } + + if (!_isSameFingerprint(currentEvent, previousEvent)) { + return false; + } + + if (!_isSameStacktrace(currentEvent, previousEvent)) { + return false; + } + + return true; +} + +function _isSameExceptionEvent(currentEvent, previousEvent) { + const previousException = _getExceptionFromEvent(previousEvent); + const currentException = _getExceptionFromEvent(currentEvent); + + if (!previousException || !currentException) { + return false; + } + + if (previousException.type !== currentException.type || previousException.value !== currentException.value) { + return false; + } + + if (!_isSameFingerprint(currentEvent, previousEvent)) { + return false; + } + + if (!_isSameStacktrace(currentEvent, previousEvent)) { + return false; + } + + return true; +} + +function _isSameStacktrace(currentEvent, previousEvent) { + let currentFrames = stacktrace.getFramesFromEvent(currentEvent); + let previousFrames = stacktrace.getFramesFromEvent(previousEvent); + + // If neither event has a stacktrace, they are assumed to be the same + if (!currentFrames && !previousFrames) { + return true; + } + + // If only one event has a stacktrace, but not the other one, they are not the same + if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) { + return false; + } + + currentFrames = currentFrames ; + previousFrames = previousFrames ; + + // If number of frames differ, they are not the same + if (previousFrames.length !== currentFrames.length) { + return false; + } + + // Otherwise, compare the two + for (let i = 0; i < previousFrames.length; i++) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const frameA = previousFrames[i]; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const frameB = currentFrames[i]; + + if ( + frameA.filename !== frameB.filename || + frameA.lineno !== frameB.lineno || + frameA.colno !== frameB.colno || + frameA.function !== frameB.function + ) { + return false; + } + } + + return true; +} + +function _isSameFingerprint(currentEvent, previousEvent) { + let currentFingerprint = currentEvent.fingerprint; + let previousFingerprint = previousEvent.fingerprint; + + // If neither event has a fingerprint, they are assumed to be the same + if (!currentFingerprint && !previousFingerprint) { + return true; + } + + // If only one event has a fingerprint, but not the other one, they are not the same + if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) { + return false; + } + + currentFingerprint = currentFingerprint ; + previousFingerprint = previousFingerprint ; + + // Otherwise, compare the two + try { + return !!(currentFingerprint.join('') === previousFingerprint.join('')); + } catch { + return false; + } +} + +function _getExceptionFromEvent(event) { + return event.exception?.values?.[0]; +} + +exports._shouldDropEvent = _shouldDropEvent; +exports.dedupeIntegration = dedupeIntegration; +//# sourceMappingURL=dedupe.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/dedupe.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/dedupe.js.map new file mode 100644 index 0000000..e10f6f7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/dedupe.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dedupe.js","sources":["../../../src/integrations/dedupe.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { debug } from '../utils/debug-logger';\nimport { getFramesFromEvent } from '../utils/stacktrace';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent: Event | undefined;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(currentEvent) {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, previousEvent)) {\n DEBUG_BUILD && debug.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch {} // eslint-disable-line no-empty\n\n return (previousEvent = currentEvent);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Deduplication filter.\n */\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/** only exported for tests. */\nexport function _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = getFramesFromEvent(currentEvent);\n let previousFrames = getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const frameA = previousFrames[i]!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const frameB = currentFrames[i]!;\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch {\n return false;\n }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception?.values?.[0];\n}\n"],"names":["DEBUG_BUILD","debug","defineIntegration","getFramesFromEvent"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/eventFilters.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/eventFilters.js new file mode 100644 index 0000000..47f9da8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/eventFilters.js @@ -0,0 +1,227 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const integration = require('../integration.js'); +const debugLogger = require('../utils/debug-logger.js'); +const eventUtils = require('../utils/eventUtils.js'); +const misc = require('../utils/misc.js'); +const string = require('../utils/string.js'); + +// "Script error." is hard coded into browsers for errors that it can't read. +// this is the result of a script being pulled in from an external domain and CORS. +const DEFAULT_IGNORE_ERRORS = [ + /^Script error\.?$/, + /^Javascript error: Script error\.? on line 0$/, + /^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. + /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker + /^Can't find variable: gmo$/, // Error from Google Search App https://issuetracker.google.com/issues/396043331 + /^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/, // Random error that happens but not actionable or noticeable to end-users. + 'can\'t redefine non-configurable property "solana"', // Probably a browser extension or custom browser (Brave) throwing this error + "vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)", // Error thrown by GTM, seemingly not affecting end-users + "Can't find variable: _AutofillCallbackHandler", // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/ + /^Non-Error promise rejection captured with value: Object Not Found Matching Id:\d+, MethodName:simulateEvent, ParamCount:\d+$/, // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps + /^Java exception was raised during method invocation$/, // error from Facebook Mobile browser (https://github.com/getsentry/sentry-javascript/issues/15065) +]; + +/** Options for the EventFilters integration */ + +const INTEGRATION_NAME = 'EventFilters'; + +/** + * An integration that filters out events (errors and transactions) based on: + * + * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS}) + * - (Errors) A list of error messages or urls/filenames passed in via + * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`) + * - The same options passed to the integration directly via @param options + * - (Transactions/Spans) A list of root span (transaction) names passed in via + * - Top level Sentry.init option (`ignoreTransactions`) + * - The same option passed to the integration directly via @param options + * + * Events filtered by this integration will not be sent to Sentry. + */ +const eventFiltersIntegration = integration.defineIntegration((options = {}) => { + let mergedOptions; + return { + name: INTEGRATION_NAME, + setup(client) { + const clientOptions = client.getOptions(); + mergedOptions = _mergeOptions(options, clientOptions); + }, + processEvent(event, _hint, client) { + if (!mergedOptions) { + const clientOptions = client.getOptions(); + mergedOptions = _mergeOptions(options, clientOptions); + } + return _shouldDropEvent(event, mergedOptions) ? null : event; + }, + }; +}); + +/** + * An integration that filters out events (errors and transactions) based on: + * + * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS}) + * - (Errors) A list of error messages or urls/filenames passed in via + * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`) + * - The same options passed to the integration directly via @param options + * - (Transactions/Spans) A list of root span (transaction) names passed in via + * - Top level Sentry.init option (`ignoreTransactions`) + * - The same option passed to the integration directly via @param options + * + * Events filtered by this integration will not be sent to Sentry. + * + * @deprecated this integration was renamed and will be removed in a future major version. + * Use `eventFiltersIntegration` instead. + */ +const inboundFiltersIntegration = integration.defineIntegration(((options = {}) => { + return { + ...eventFiltersIntegration(options), + name: 'InboundFilters', + }; +}) ); + +function _mergeOptions( + internalOptions = {}, + clientOptions = {}, +) { + return { + allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])], + denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])], + ignoreErrors: [ + ...(internalOptions.ignoreErrors || []), + ...(clientOptions.ignoreErrors || []), + ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS), + ], + ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])], + }; +} + +function _shouldDropEvent(event, options) { + if (!event.type) { + // Filter errors + if (_isIgnoredError(event, options.ignoreErrors)) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.warn( + `Event dropped due to being matched by \`ignoreErrors\` option.\nEvent: ${misc.getEventDescription(event)}`, + ); + return true; + } + if (_isUselessError(event)) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.warn( + `Event dropped due to not having an error message, error type or stacktrace.\nEvent: ${misc.getEventDescription( + event, + )}`, + ); + return true; + } + if (_isDeniedUrl(event, options.denyUrls)) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.warn( + `Event dropped due to being matched by \`denyUrls\` option.\nEvent: ${misc.getEventDescription( + event, + )}.\nUrl: ${_getEventFilterUrl(event)}`, + ); + return true; + } + if (!_isAllowedUrl(event, options.allowUrls)) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.warn( + `Event dropped due to not being matched by \`allowUrls\` option.\nEvent: ${misc.getEventDescription( + event, + )}.\nUrl: ${_getEventFilterUrl(event)}`, + ); + return true; + } + } else if (event.type === 'transaction') { + // Filter transactions + + if (_isIgnoredTransaction(event, options.ignoreTransactions)) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.warn( + `Event dropped due to being matched by \`ignoreTransactions\` option.\nEvent: ${misc.getEventDescription(event)}`, + ); + return true; + } + } + return false; +} + +function _isIgnoredError(event, ignoreErrors) { + if (!ignoreErrors?.length) { + return false; + } + + return eventUtils.getPossibleEventMessages(event).some(message => string.stringMatchesSomePattern(message, ignoreErrors)); +} + +function _isIgnoredTransaction(event, ignoreTransactions) { + if (!ignoreTransactions?.length) { + return false; + } + + const name = event.transaction; + return name ? string.stringMatchesSomePattern(name, ignoreTransactions) : false; +} + +function _isDeniedUrl(event, denyUrls) { + if (!denyUrls?.length) { + return false; + } + const url = _getEventFilterUrl(event); + return !url ? false : string.stringMatchesSomePattern(url, denyUrls); +} + +function _isAllowedUrl(event, allowUrls) { + if (!allowUrls?.length) { + return true; + } + const url = _getEventFilterUrl(event); + return !url ? true : string.stringMatchesSomePattern(url, allowUrls); +} + +function _getLastValidUrl(frames = []) { + for (let i = frames.length - 1; i >= 0; i--) { + const frame = frames[i]; + + if (frame && frame.filename !== '' && frame.filename !== '[native code]') { + return frame.filename || null; + } + } + + return null; +} + +function _getEventFilterUrl(event) { + try { + // If there are linked exceptions or exception aggregates we only want to match against the top frame of the "root" (the main exception) + // The root always comes last in linked exceptions + const rootException = [...(event.exception?.values ?? [])] + .reverse() + .find(value => value.mechanism?.parent_id === undefined && value.stacktrace?.frames?.length); + const frames = rootException?.stacktrace?.frames; + return frames ? _getLastValidUrl(frames) : null; + } catch { + debugBuild.DEBUG_BUILD && debugLogger.debug.error(`Cannot extract url for event ${misc.getEventDescription(event)}`); + return null; + } +} + +function _isUselessError(event) { + // We only want to consider events for dropping that actually have recorded exception values. + if (!event.exception?.values?.length) { + return false; + } + + return ( + // No top-level message + !event.message && + // There are no exception values that have a stacktrace, a non-generic-Error type or value + !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value) + ); +} + +exports.eventFiltersIntegration = eventFiltersIntegration; +exports.inboundFiltersIntegration = inboundFiltersIntegration; +//# sourceMappingURL=eventFilters.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/eventFilters.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/eventFilters.js.map new file mode 100644 index 0000000..cd98558 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/eventFilters.js.map @@ -0,0 +1 @@ +{"version":3,"file":"eventFilters.js","sources":["../../../src/integrations/eventFilters.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { debug } from '../utils/debug-logger';\nimport { getPossibleEventMessages } from '../utils/eventUtils';\nimport { getEventDescription } from '../utils/misc';\nimport { stringMatchesSomePattern } from '../utils/string';\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. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)\", // 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 /^Non-Error promise rejection captured with value: Object Not Found Matching Id:\\d+, MethodName:simulateEvent, ParamCount:\\d+$/, // 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 */\nexport interface EventFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreTransactions: Array;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n}\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 */\nexport const eventFiltersIntegration = defineIntegration((options: Partial = {}) => {\n let mergedOptions: Partial | undefined;\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 */\nexport const inboundFiltersIntegration = defineIntegration(((options: Partial = {}) => {\n return {\n ...eventFiltersIntegration(options),\n name: 'InboundFilters',\n };\n}) satisfies IntegrationFn);\n\nfunction _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\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: Event, options: Partial): boolean {\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: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors?.length) {\n return false;\n }\n\n return getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array): boolean {\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: Event, denyUrls?: Array): boolean {\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: Event, allowUrls?: Array): boolean {\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: StackFrame[] = []): string | null {\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: Event): string | null {\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: Event): boolean {\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"],"names":["defineIntegration","DEBUG_BUILD","debug","getEventDescription","getPossibleEventMessages","stringMatchesSomePattern"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/extraerrordata.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/extraerrordata.js new file mode 100644 index 0000000..274e9c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/extraerrordata.js @@ -0,0 +1,134 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const integration = require('../integration.js'); +const debugLogger = require('../utils/debug-logger.js'); +const is = require('../utils/is.js'); +const normalize = require('../utils/normalize.js'); +const object = require('../utils/object.js'); +const string = require('../utils/string.js'); + +const INTEGRATION_NAME = 'ExtraErrorData'; + +/** + * Extract additional data for from original exceptions. + */ +const _extraErrorDataIntegration = ((options = {}) => { + const { depth = 3, captureErrorCause = true } = options; + return { + name: INTEGRATION_NAME, + processEvent(event, hint, client) { + const { maxValueLength } = client.getOptions(); + return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause, maxValueLength); + }, + }; +}) ; + +const extraErrorDataIntegration = integration.defineIntegration(_extraErrorDataIntegration); + +function _enhanceEventWithErrorData( + event, + hint = {}, + depth, + captureErrorCause, + maxValueLength, +) { + if (!hint.originalException || !is.isError(hint.originalException)) { + return event; + } + const exceptionName = (hint.originalException ).name || hint.originalException.constructor.name; + + const errorData = _extractErrorData(hint.originalException , captureErrorCause, maxValueLength); + + if (errorData) { + const contexts = { + ...event.contexts, + }; + + const normalizedErrorData = normalize.normalize(errorData, depth); + + if (is.isPlainObject(normalizedErrorData)) { + // We mark the error data as "already normalized" here, because we don't want other normalization procedures to + // potentially truncate the data we just already normalized, with a certain depth setting. + object.addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true); + contexts[exceptionName] = normalizedErrorData; + } + + return { + ...event, + contexts, + }; + } + + return event; +} + +/** + * Extract extra information from the Error object + */ +function _extractErrorData( + error, + captureErrorCause, + maxValueLength, +) { + // We are trying to enhance already existing event, so no harm done if it won't succeed + try { + const nativeKeys = [ + 'name', + 'message', + 'stack', + 'line', + 'column', + 'fileName', + 'lineNumber', + 'columnNumber', + 'toJSON', + ]; + + const extraErrorInfo = {}; + + // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway. + for (const key of Object.keys(error)) { + if (nativeKeys.indexOf(key) !== -1) { + continue; + } + const value = error[key]; + extraErrorInfo[key] = + is.isError(value) || typeof value === 'string' + ? maxValueLength + ? string.truncate(`${value}`, maxValueLength) + : `${value}` + : value; + } + + // Error.cause is a standard property that is non enumerable, we therefore need to access it separately. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause + if (captureErrorCause && error.cause !== undefined) { + if (is.isError(error.cause)) { + const errorName = error.cause.name || error.cause.constructor.name; + extraErrorInfo.cause = { [errorName]: _extractErrorData(error.cause , false, maxValueLength) }; + } else { + extraErrorInfo.cause = error.cause; + } + } + + // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that) + if (typeof error.toJSON === 'function') { + const serializedError = error.toJSON() ; + + for (const key of Object.keys(serializedError)) { + const value = serializedError[key]; + extraErrorInfo[key] = is.isError(value) ? value.toString() : value; + } + } + + return extraErrorInfo; + } catch (oO) { + debugBuild.DEBUG_BUILD && debugLogger.debug.error('Unable to extract extra data from the Error object:', oO); + } + + return null; +} + +exports.extraErrorDataIntegration = extraErrorDataIntegration; +//# sourceMappingURL=extraerrordata.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/extraerrordata.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/extraerrordata.js.map new file mode 100644 index 0000000..11d8007 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/extraerrordata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extraerrordata.js","sources":["../../../src/integrations/extraerrordata.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Contexts } from '../types-hoist/context';\nimport type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { debug } from '../utils/debug-logger';\nimport { isError, isPlainObject } from '../utils/is';\nimport { normalize } from '../utils/normalize';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { truncate } from '../utils/string';\n\nconst INTEGRATION_NAME = 'ExtraErrorData';\n\ninterface ExtraErrorDataOptions {\n /**\n * The object depth up to which to capture data on error objects.\n */\n depth: number;\n\n /**\n * Whether to capture error causes. Defaults to true.\n *\n * More information: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n */\n captureErrorCause: boolean;\n}\n\n/**\n * Extract additional data for from original exceptions.\n */\nconst _extraErrorDataIntegration = ((options: Partial = {}) => {\n const { depth = 3, captureErrorCause = true } = options;\n return {\n name: INTEGRATION_NAME,\n processEvent(event, hint, client) {\n const { maxValueLength } = client.getOptions();\n return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause, maxValueLength);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const extraErrorDataIntegration = defineIntegration(_extraErrorDataIntegration);\n\nfunction _enhanceEventWithErrorData(\n event: Event,\n hint: EventHint = {},\n depth: number,\n captureErrorCause: boolean,\n maxValueLength: number | undefined,\n): Event {\n if (!hint.originalException || !isError(hint.originalException)) {\n return event;\n }\n const exceptionName = (hint.originalException as ExtendedError).name || hint.originalException.constructor.name;\n\n const errorData = _extractErrorData(hint.originalException as ExtendedError, captureErrorCause, maxValueLength);\n\n if (errorData) {\n const contexts: Contexts = {\n ...event.contexts,\n };\n\n const normalizedErrorData = normalize(errorData, depth);\n\n if (isPlainObject(normalizedErrorData)) {\n // We mark the error data as \"already normalized\" here, because we don't want other normalization procedures to\n // potentially truncate the data we just already normalized, with a certain depth setting.\n addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true);\n contexts[exceptionName] = normalizedErrorData;\n }\n\n return {\n ...event,\n contexts,\n };\n }\n\n return event;\n}\n\n/**\n * Extract extra information from the Error object\n */\nfunction _extractErrorData(\n error: ExtendedError,\n captureErrorCause: boolean,\n maxValueLength: number | undefined,\n): Record | null {\n // We are trying to enhance already existing event, so no harm done if it won't succeed\n try {\n const nativeKeys = [\n 'name',\n 'message',\n 'stack',\n 'line',\n 'column',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'toJSON',\n ];\n\n const extraErrorInfo: Record = {};\n\n // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway.\n for (const key of Object.keys(error)) {\n if (nativeKeys.indexOf(key) !== -1) {\n continue;\n }\n const value = error[key];\n extraErrorInfo[key] =\n isError(value) || typeof value === 'string'\n ? maxValueLength\n ? truncate(`${value}`, maxValueLength)\n : `${value}`\n : value;\n }\n\n // Error.cause is a standard property that is non enumerable, we therefore need to access it separately.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n if (captureErrorCause && error.cause !== undefined) {\n if (isError(error.cause)) {\n const errorName = error.cause.name || error.cause.constructor.name;\n extraErrorInfo.cause = { [errorName]: _extractErrorData(error.cause as ExtendedError, false, maxValueLength) };\n } else {\n extraErrorInfo.cause = error.cause;\n }\n }\n\n // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that)\n if (typeof error.toJSON === 'function') {\n const serializedError = error.toJSON() as Record;\n\n for (const key of Object.keys(serializedError)) {\n const value = serializedError[key];\n extraErrorInfo[key] = isError(value) ? value.toString() : value;\n }\n }\n\n return extraErrorInfo;\n } catch (oO) {\n DEBUG_BUILD && debug.error('Unable to extract extra data from the Error object:', oO);\n }\n\n return null;\n}\n"],"names":["defineIntegration","isError","normalize","isPlainObject","addNonEnumerableProperty","truncate","DEBUG_BUILD","debug"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/featureFlagsIntegration.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/featureFlagsIntegration.js new file mode 100644 index 0000000..c28d57d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/featureFlagsIntegration.js @@ -0,0 +1,46 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const integration = require('../../integration.js'); +const featureFlags = require('../../utils/featureFlags.js'); + +/** + * Sentry integration for buffering feature flag evaluations manually with an API, and + * capturing them on error events and spans. + * + * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information. + * + * @example + * ``` + * import * as Sentry from '@sentry/browser'; + * import { type FeatureFlagsIntegration } from '@sentry/browser'; + * + * // Setup + * Sentry.init(..., integrations: [Sentry.featureFlagsIntegration()]) + * + * // Verify + * const flagsIntegration = Sentry.getClient()?.getIntegrationByName('FeatureFlags'); + * if (flagsIntegration) { + * flagsIntegration.addFeatureFlag('my-flag', true); + * } else { + * // check your setup + * } + * Sentry.captureException(Exception('broke')); // 'my-flag' should be captured to this Sentry event. + * ``` + */ +const featureFlagsIntegration = integration.defineIntegration(() => { + return { + name: 'FeatureFlags', + + processEvent(event, _hint, _client) { + return featureFlags._INTERNAL_copyFlagsFromScopeToEvent(event); + }, + + addFeatureFlag(name, value) { + featureFlags._INTERNAL_insertFlagToScope(name, value); + featureFlags._INTERNAL_addFeatureFlagToActiveSpan(name, value); + }, + }; +}) ; + +exports.featureFlagsIntegration = featureFlagsIntegration; +//# sourceMappingURL=featureFlagsIntegration.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/featureFlagsIntegration.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/featureFlagsIntegration.js.map new file mode 100644 index 0000000..53b15ca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/featureFlagsIntegration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"featureFlagsIntegration.js","sources":["../../../../src/integrations/featureFlags/featureFlagsIntegration.ts"],"sourcesContent":["import { type Client } from '../../client';\nimport { defineIntegration } from '../../integration';\nimport { type Event, type EventHint } from '../../types-hoist/event';\nimport { type Integration, type IntegrationFn } from '../../types-hoist/integration';\nimport {\n _INTERNAL_addFeatureFlagToActiveSpan,\n _INTERNAL_copyFlagsFromScopeToEvent,\n _INTERNAL_insertFlagToScope,\n} from '../../utils/featureFlags';\n\nexport interface FeatureFlagsIntegration extends Integration {\n addFeatureFlag: (name: string, value: unknown) => void;\n}\n\n/**\n * Sentry integration for buffering feature flag evaluations manually with an API, and\n * capturing them on error events and spans.\n *\n * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information.\n *\n * @example\n * ```\n * import * as Sentry from '@sentry/browser';\n * import { type FeatureFlagsIntegration } from '@sentry/browser';\n *\n * // Setup\n * Sentry.init(..., integrations: [Sentry.featureFlagsIntegration()])\n *\n * // Verify\n * const flagsIntegration = Sentry.getClient()?.getIntegrationByName('FeatureFlags');\n * if (flagsIntegration) {\n * flagsIntegration.addFeatureFlag('my-flag', true);\n * } else {\n * // check your setup\n * }\n * Sentry.captureException(Exception('broke')); // 'my-flag' should be captured to this Sentry event.\n * ```\n */\nexport const featureFlagsIntegration = defineIntegration(() => {\n return {\n name: 'FeatureFlags',\n\n processEvent(event: Event, _hint: EventHint, _client: Client): Event {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n\n addFeatureFlag(name: string, value: unknown): void {\n _INTERNAL_insertFlagToScope(name, value);\n _INTERNAL_addFeatureFlagToActiveSpan(name, value);\n },\n };\n}) as IntegrationFn;\n"],"names":["defineIntegration","_INTERNAL_copyFlagsFromScopeToEvent","_INTERNAL_insertFlagToScope","_INTERNAL_addFeatureFlagToActiveSpan"],"mappings":";;;;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACa,uBAAA,GAA0BA,6BAAiB,CAAC,MAAM;AAC/D,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,cAAc;;AAExB,IAAI,YAAY,CAAC,KAAK,EAAS,KAAK,EAAa,OAAO,EAAiB;AACzE,MAAM,OAAOC,gDAAmC,CAAC,KAAK,CAAC;AACvD,IAAI,CAAC;;AAEL,IAAI,cAAc,CAAC,IAAI,EAAU,KAAK,EAAiB;AACvD,MAAMC,wCAA2B,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9C,MAAMC,iDAAoC,CAAC,IAAI,EAAE,KAAK,CAAC;AACvD,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/growthbook.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/growthbook.js new file mode 100644 index 0000000..9264ccf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/growthbook.js @@ -0,0 +1,68 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const integration = require('../../integration.js'); +const featureFlags = require('../../utils/featureFlags.js'); +const object = require('../../utils/object.js'); + +/** + * Sentry integration for capturing feature flag evaluations from GrowthBook. + * + * Only boolean results are captured at this time. + * + * @example + * ```typescript + * import { GrowthBook } from '@growthbook/growthbook'; + * import * as Sentry from '@sentry/browser'; // or '@sentry/node' + * + * Sentry.init({ + * dsn: 'your-dsn', + * integrations: [ + * Sentry.growthbookIntegration({ growthbookClass: GrowthBook }) + * ] + * }); + * ``` + */ +const growthbookIntegration = integration.defineIntegration( + ({ growthbookClass }) => { + return { + name: 'GrowthBook', + + setupOnce() { + const proto = growthbookClass.prototype ; + + // Type guard and wrap isOn + if (typeof proto.isOn === 'function') { + object.fill(proto, 'isOn', _wrapAndCaptureBooleanResult); + } + + // Type guard and wrap getFeatureValue + if (typeof proto.getFeatureValue === 'function') { + object.fill(proto, 'getFeatureValue', _wrapAndCaptureBooleanResult); + } + }, + + processEvent(event, _hint, _client) { + return featureFlags._INTERNAL_copyFlagsFromScopeToEvent(event); + }, + }; + }, +); + +function _wrapAndCaptureBooleanResult( + original, +) { + return function ( ...args) { + const flagName = args[0]; + const result = original.apply(this, args); + + if (typeof flagName === 'string' && typeof result === 'boolean') { + featureFlags._INTERNAL_insertFlagToScope(flagName, result); + featureFlags._INTERNAL_addFeatureFlagToActiveSpan(flagName, result); + } + + return result; + }; +} + +exports.growthbookIntegration = growthbookIntegration; +//# sourceMappingURL=growthbook.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/growthbook.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/growthbook.js.map new file mode 100644 index 0000000..82e5524 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/featureFlags/growthbook.js.map @@ -0,0 +1 @@ +{"version":3,"file":"growthbook.js","sources":["../../../../src/integrations/featureFlags/growthbook.ts"],"sourcesContent":["import type { Client } from '../../client';\nimport { defineIntegration } from '../../integration';\nimport type { Event, EventHint } from '../../types-hoist/event';\nimport type { IntegrationFn } from '../../types-hoist/integration';\nimport {\n _INTERNAL_addFeatureFlagToActiveSpan,\n _INTERNAL_copyFlagsFromScopeToEvent,\n _INTERNAL_insertFlagToScope,\n} from '../../utils/featureFlags';\nimport { fill } from '../../utils/object';\n\ninterface GrowthBookLike {\n isOn(this: GrowthBookLike, featureKey: string, ...rest: unknown[]): boolean;\n getFeatureValue(this: GrowthBookLike, featureKey: string, defaultValue: unknown, ...rest: unknown[]): unknown;\n}\n\nexport type GrowthBookClassLike = new (...args: unknown[]) => GrowthBookLike;\n\n/**\n * Sentry integration for capturing feature flag evaluations from GrowthBook.\n *\n * Only boolean results are captured at this time.\n *\n * @example\n * ```typescript\n * import { GrowthBook } from '@growthbook/growthbook';\n * import * as Sentry from '@sentry/browser'; // or '@sentry/node'\n *\n * Sentry.init({\n * dsn: 'your-dsn',\n * integrations: [\n * Sentry.growthbookIntegration({ growthbookClass: GrowthBook })\n * ]\n * });\n * ```\n */\nexport const growthbookIntegration: IntegrationFn = defineIntegration(\n ({ growthbookClass }: { growthbookClass: GrowthBookClassLike }) => {\n return {\n name: 'GrowthBook',\n\n setupOnce() {\n const proto = growthbookClass.prototype as GrowthBookLike;\n\n // Type guard and wrap isOn\n if (typeof proto.isOn === 'function') {\n fill(proto, 'isOn', _wrapAndCaptureBooleanResult);\n }\n\n // Type guard and wrap getFeatureValue\n if (typeof proto.getFeatureValue === 'function') {\n fill(proto, 'getFeatureValue', _wrapAndCaptureBooleanResult);\n }\n },\n\n processEvent(event: Event, _hint: EventHint, _client: Client): Event {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n };\n },\n);\n\nfunction _wrapAndCaptureBooleanResult(\n original: (this: GrowthBookLike, ...args: unknown[]) => unknown,\n): (this: GrowthBookLike, ...args: unknown[]) => unknown {\n return function (this: GrowthBookLike, ...args: unknown[]): unknown {\n const flagName = args[0];\n const result = original.apply(this, args);\n\n if (typeof flagName === 'string' && typeof result === 'boolean') {\n _INTERNAL_insertFlagToScope(flagName, result);\n _INTERNAL_addFeatureFlagToActiveSpan(flagName, result);\n }\n\n return result;\n };\n}\n"],"names":["defineIntegration","fill","_INTERNAL_copyFlagsFromScopeToEvent","_INTERNAL_insertFlagToScope","_INTERNAL_addFeatureFlagToActiveSpan"],"mappings":";;;;;;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAqB,GAAkBA,6BAAiB;AACrE,EAAE,CAAC,EAAE,eAAA,EAAiB,KAA+C;AACrE,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,YAAY;;AAExB,MAAM,SAAS,GAAG;AAClB,QAAQ,MAAM,KAAA,GAAQ,eAAe,CAAC,SAAA;;AAEtC;AACA,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAA,KAAS,UAAU,EAAE;AAC9C,UAAUC,WAAI,CAAC,KAAK,EAAE,MAAM,EAAE,4BAA4B,CAAC;AAC3D,QAAQ;;AAER;AACA,QAAQ,IAAI,OAAO,KAAK,CAAC,eAAA,KAAoB,UAAU,EAAE;AACzD,UAAUA,WAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,4BAA4B,CAAC;AACtE,QAAQ;AACR,MAAM,CAAC;;AAEP,MAAM,YAAY,CAAC,KAAK,EAAS,KAAK,EAAa,OAAO,EAAiB;AAC3E,QAAQ,OAAOC,gDAAmC,CAAC,KAAK,CAAC;AACzD,MAAM,CAAC;AACP,KAAK;AACL,EAAE,CAAC;AACH;;AAEA,SAAS,4BAA4B;AACrC,EAAE,QAAQ;AACV,EAAyD;AACzD,EAAE,OAAO,WAAgC,GAAG,IAAI,EAAsB;AACtE,IAAI,MAAM,QAAA,GAAW,IAAI,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,MAAA,GAAS,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;;AAE7C,IAAI,IAAI,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,MAAA,KAAW,SAAS,EAAE;AACrE,MAAMC,wCAA2B,CAAC,QAAQ,EAAE,MAAM,CAAC;AACnD,MAAMC,iDAAoC,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC5D,IAAI;;AAEJ,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC;AACH;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/functiontostring.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/functiontostring.js new file mode 100644 index 0000000..c702dfd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/functiontostring.js @@ -0,0 +1,53 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const integration = require('../integration.js'); +const object = require('../utils/object.js'); + +let originalFunctionToString; + +const INTEGRATION_NAME = 'FunctionToString'; + +const SETUP_CLIENTS = new WeakMap(); + +const _functionToStringIntegration = (() => { + return { + name: INTEGRATION_NAME, + setupOnce() { + // eslint-disable-next-line @typescript-eslint/unbound-method + originalFunctionToString = Function.prototype.toString; + + // intrinsics (like Function.prototype) might be immutable in some environments + // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal) + try { + Function.prototype.toString = function ( ...args) { + const originalFunction = object.getOriginalFunction(this); + const context = + SETUP_CLIENTS.has(currentScopes.getClient() ) && originalFunction !== undefined ? originalFunction : this; + return originalFunctionToString.apply(context, args); + }; + } catch { + // ignore errors here, just don't patch this + } + }, + setup(client) { + SETUP_CLIENTS.set(client, true); + }, + }; +}) ; + +/** + * Patch toString calls to return proper name for wrapped functions. + * + * ```js + * Sentry.init({ + * integrations: [ + * functionToStringIntegration(), + * ], + * }); + * ``` + */ +const functionToStringIntegration = integration.defineIntegration(_functionToStringIntegration); + +exports.functionToStringIntegration = functionToStringIntegration; +//# sourceMappingURL=functiontostring.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/functiontostring.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/functiontostring.js.map new file mode 100644 index 0000000..53827b8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/functiontostring.js.map @@ -0,0 +1 @@ +{"version":3,"file":"functiontostring.js","sources":["../../../src/integrations/functiontostring.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { getClient } from '../currentScopes';\nimport { defineIntegration } from '../integration';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { WrappedFunction } from '../types-hoist/wrappedfunction';\nimport { getOriginalFunction } from '../utils/object';\n\nlet originalFunctionToString: () => void;\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 (this: WrappedFunction, ...args: unknown[]): string {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() as Client) && 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}) satisfies IntegrationFn;\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 */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n"],"names":["getOriginalFunction","getClient","defineIntegration"],"mappings":";;;;;;AAOA,IAAI,wBAAwB;;AAE5B,MAAM,gBAAA,GAAmB,kBAAkB;;AAE3C,MAAM,aAAA,GAAgB,IAAI,OAAO,EAAmB;;AAEpD,MAAM,4BAAA,IAAgC,MAAM;AAC5C,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,SAAS,GAAG;AAChB;AACA,MAAM,2BAA2B,QAAQ,CAAC,SAAS,CAAC,QAAQ;;AAE5D;AACA;AACA,MAAM,IAAI;AACV,QAAQ,QAAQ,CAAC,SAAS,CAAC,QAAA,GAAW,WAAiC,GAAG,IAAI,EAAqB;AACnG,UAAU,MAAM,gBAAA,GAAmBA,0BAAmB,CAAC,IAAI,CAAC;AAC5D,UAAU,MAAM,OAAA;AAChB,YAAY,aAAa,CAAC,GAAG,CAACC,uBAAS,EAAC,EAAE,IAAc,qBAAqB,SAAA,GAAY,gBAAA,GAAmB,IAAI;AAChH,UAAU,OAAO,wBAAwB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9D,QAAQ,CAAC;AACT,MAAM,EAAE,MAAM;AACd;AACA,MAAM;AACN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AACrC,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACa,2BAAA,GAA8BC,6BAAiB,CAAC,4BAA4B;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/linkederrors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/linkederrors.js new file mode 100644 index 0000000..2b9b6fc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/linkederrors.js @@ -0,0 +1,29 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const integration = require('../integration.js'); +const aggregateErrors = require('../utils/aggregate-errors.js'); +const eventbuilder = require('../utils/eventbuilder.js'); + +const DEFAULT_KEY = 'cause'; +const DEFAULT_LIMIT = 5; + +const INTEGRATION_NAME = 'LinkedErrors'; + +const _linkedErrorsIntegration = ((options = {}) => { + const limit = options.limit || DEFAULT_LIMIT; + const key = options.key || DEFAULT_KEY; + + return { + name: INTEGRATION_NAME, + preprocessEvent(event, hint, client) { + const options = client.getOptions(); + + aggregateErrors.applyAggregateErrorsToEvent(eventbuilder.exceptionFromError, options.stackParser, key, limit, event, hint); + }, + }; +}) ; + +const linkedErrorsIntegration = integration.defineIntegration(_linkedErrorsIntegration); + +exports.linkedErrorsIntegration = linkedErrorsIntegration; +//# sourceMappingURL=linkederrors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/linkederrors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/linkederrors.js.map new file mode 100644 index 0000000..99c734a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/linkederrors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"linkederrors.js","sources":["../../../src/integrations/linkederrors.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { applyAggregateErrorsToEvent } from '../utils/aggregate-errors';\nimport { exceptionFromError } from '../utils/eventbuilder';\n\ninterface LinkedErrorsOptions {\n key?: string;\n limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\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}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n"],"names":["applyAggregateErrorsToEvent","exceptionFromError","defineIntegration"],"mappings":";;;;;;AAUA,MAAM,WAAA,GAAc,OAAO;AAC3B,MAAM,aAAA,GAAgB,CAAC;;AAEvB,MAAM,gBAAA,GAAmB,cAAc;;AAEvC,MAAM,wBAAA,IAA4B,CAAC,OAAO,GAAwB,EAAE,KAAK;AACzE,EAAE,MAAM,KAAA,GAAQ,OAAO,CAAC,KAAA,IAAS,aAAa;AAC9C,EAAE,MAAM,GAAA,GAAM,OAAO,CAAC,GAAA,IAAO,WAAW;;AAExC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;AACzC,MAAM,MAAM,OAAA,GAAU,MAAM,CAAC,UAAU,EAAE;;AAEzC,MAAMA,2CAA2B,CAACC,+BAAkB,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;AACnG,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;MAEY,uBAAA,GAA0BC,6BAAiB,CAAC,wBAAwB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributeExtraction.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributeExtraction.js new file mode 100644 index 0000000..f8017dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributeExtraction.js @@ -0,0 +1,126 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const url = require('../../utils/url.js'); +const attributes = require('./attributes.js'); +const methodConfig = require('./methodConfig.js'); + +/** + * Core attribute extraction and building functions for MCP server instrumentation + */ + + +/** + * Formats logging data for span attributes + * @internal + */ +function formatLoggingData(data) { + return typeof data === 'string' ? data : JSON.stringify(data); +} + +/** + * Extracts additional attributes for specific notification types + * @param method - Notification method name + * @param params - Notification parameters + * @param recordInputs - Whether to include actual content or just metadata + * @returns Method-specific attributes for span instrumentation + */ +function getNotificationAttributes( + method, + params, + recordInputs, +) { + const attributes$1 = {}; + + switch (method) { + case 'notifications/cancelled': + if (params?.requestId) { + attributes$1['mcp.cancelled.request_id'] = String(params.requestId); + } + if (params?.reason) { + attributes$1['mcp.cancelled.reason'] = String(params.reason); + } + break; + + case 'notifications/message': + if (params?.level) { + attributes$1[attributes.MCP_LOGGING_LEVEL_ATTRIBUTE] = String(params.level); + } + if (params?.logger) { + attributes$1[attributes.MCP_LOGGING_LOGGER_ATTRIBUTE] = String(params.logger); + } + if (params?.data !== undefined) { + attributes$1[attributes.MCP_LOGGING_DATA_TYPE_ATTRIBUTE] = typeof params.data; + if (recordInputs) { + attributes$1[attributes.MCP_LOGGING_MESSAGE_ATTRIBUTE] = formatLoggingData(params.data); + } + } + break; + + case 'notifications/progress': + if (params?.progressToken) { + attributes$1['mcp.progress.token'] = String(params.progressToken); + } + if (typeof params?.progress === 'number') { + attributes$1['mcp.progress.current'] = params.progress; + } + if (typeof params?.total === 'number') { + attributes$1['mcp.progress.total'] = params.total; + if (typeof params?.progress === 'number') { + attributes$1['mcp.progress.percentage'] = (params.progress / params.total) * 100; + } + } + if (params?.message) { + attributes$1['mcp.progress.message'] = String(params.message); + } + break; + + case 'notifications/resources/updated': + if (params?.uri) { + attributes$1[attributes.MCP_RESOURCE_URI_ATTRIBUTE] = String(params.uri); + const urlObject = url.parseStringToURLObject(String(params.uri)); + if (urlObject && !url.isURLObjectRelative(urlObject)) { + attributes$1['mcp.resource.protocol'] = urlObject.protocol.replace(':', ''); + } + } + break; + + case 'notifications/initialized': + attributes$1['mcp.lifecycle.phase'] = 'initialization_complete'; + attributes$1['mcp.protocol.ready'] = 1; + break; + } + + return attributes$1; +} + +/** + * Build type-specific attributes based on message type + * @param type - Span type (request or notification) + * @param message - JSON-RPC message + * @param params - Optional parameters for attribute extraction + * @param recordInputs - Whether to capture input arguments in spans + * @returns Type-specific attributes for span instrumentation + */ +function buildTypeSpecificAttributes( + type, + message, + params, + recordInputs, +) { + if (type === 'request') { + const request = message ; + const targetInfo = methodConfig.extractTargetInfo(request.method, params || {}); + + return { + ...(request.id !== undefined && { [attributes.MCP_REQUEST_ID_ATTRIBUTE]: String(request.id) }), + ...targetInfo.attributes, + ...(recordInputs ? methodConfig.getRequestArguments(request.method, params || {}) : {}), + }; + } + + return getNotificationAttributes(message.method, params || {}, recordInputs); +} + +exports.buildTypeSpecificAttributes = buildTypeSpecificAttributes; +exports.getNotificationAttributes = getNotificationAttributes; +//# sourceMappingURL=attributeExtraction.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributeExtraction.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributeExtraction.js.map new file mode 100644 index 0000000..d2e219a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributeExtraction.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributeExtraction.js","sources":["../../../../src/integrations/mcp-server/attributeExtraction.ts"],"sourcesContent":["/**\n * Core attribute extraction and building functions for MCP server instrumentation\n */\n\nimport { isURLObjectRelative, parseStringToURLObject } from '../../utils/url';\nimport {\n MCP_LOGGING_DATA_TYPE_ATTRIBUTE,\n MCP_LOGGING_LEVEL_ATTRIBUTE,\n MCP_LOGGING_LOGGER_ATTRIBUTE,\n MCP_LOGGING_MESSAGE_ATTRIBUTE,\n MCP_REQUEST_ID_ATTRIBUTE,\n MCP_RESOURCE_URI_ATTRIBUTE,\n} from './attributes';\nimport { extractTargetInfo, getRequestArguments } from './methodConfig';\nimport type { JsonRpcNotification, JsonRpcRequest, McpSpanType } from './types';\n\n/**\n * Formats logging data for span attributes\n * @internal\n */\nfunction formatLoggingData(data: unknown): string {\n return typeof data === 'string' ? data : JSON.stringify(data);\n}\n\n/**\n * Extracts additional attributes for specific notification types\n * @param method - Notification method name\n * @param params - Notification parameters\n * @param recordInputs - Whether to include actual content or just metadata\n * @returns Method-specific attributes for span instrumentation\n */\nexport function getNotificationAttributes(\n method: string,\n params: Record,\n recordInputs?: boolean,\n): Record {\n const attributes: Record = {};\n\n switch (method) {\n case 'notifications/cancelled':\n if (params?.requestId) {\n attributes['mcp.cancelled.request_id'] = String(params.requestId);\n }\n if (params?.reason) {\n attributes['mcp.cancelled.reason'] = String(params.reason);\n }\n break;\n\n case 'notifications/message':\n if (params?.level) {\n attributes[MCP_LOGGING_LEVEL_ATTRIBUTE] = String(params.level);\n }\n if (params?.logger) {\n attributes[MCP_LOGGING_LOGGER_ATTRIBUTE] = String(params.logger);\n }\n if (params?.data !== undefined) {\n attributes[MCP_LOGGING_DATA_TYPE_ATTRIBUTE] = typeof params.data;\n if (recordInputs) {\n attributes[MCP_LOGGING_MESSAGE_ATTRIBUTE] = formatLoggingData(params.data);\n }\n }\n break;\n\n case 'notifications/progress':\n if (params?.progressToken) {\n attributes['mcp.progress.token'] = String(params.progressToken);\n }\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.current'] = params.progress;\n }\n if (typeof params?.total === 'number') {\n attributes['mcp.progress.total'] = params.total;\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.percentage'] = (params.progress / params.total) * 100;\n }\n }\n if (params?.message) {\n attributes['mcp.progress.message'] = String(params.message);\n }\n break;\n\n case 'notifications/resources/updated':\n if (params?.uri) {\n attributes[MCP_RESOURCE_URI_ATTRIBUTE] = String(params.uri);\n const urlObject = parseStringToURLObject(String(params.uri));\n if (urlObject && !isURLObjectRelative(urlObject)) {\n attributes['mcp.resource.protocol'] = urlObject.protocol.replace(':', '');\n }\n }\n break;\n\n case 'notifications/initialized':\n attributes['mcp.lifecycle.phase'] = 'initialization_complete';\n attributes['mcp.protocol.ready'] = 1;\n break;\n }\n\n return attributes;\n}\n\n/**\n * Build type-specific attributes based on message type\n * @param type - Span type (request or notification)\n * @param message - JSON-RPC message\n * @param params - Optional parameters for attribute extraction\n * @param recordInputs - Whether to capture input arguments in spans\n * @returns Type-specific attributes for span instrumentation\n */\nexport function buildTypeSpecificAttributes(\n type: McpSpanType,\n message: JsonRpcRequest | JsonRpcNotification,\n params?: Record,\n recordInputs?: boolean,\n): Record {\n if (type === 'request') {\n const request = message as JsonRpcRequest;\n const targetInfo = extractTargetInfo(request.method, params || {});\n\n return {\n ...(request.id !== undefined && { [MCP_REQUEST_ID_ATTRIBUTE]: String(request.id) }),\n ...targetInfo.attributes,\n ...(recordInputs ? getRequestArguments(request.method, params || {}) : {}),\n };\n }\n\n return getNotificationAttributes(message.method, params || {}, recordInputs);\n}\n\n// Re-export buildTransportAttributes for spans.ts\nexport { buildTransportAttributes } from './sessionExtraction';\n"],"names":["attributes","MCP_LOGGING_LEVEL_ATTRIBUTE","MCP_LOGGING_LOGGER_ATTRIBUTE","MCP_LOGGING_DATA_TYPE_ATTRIBUTE","MCP_LOGGING_MESSAGE_ATTRIBUTE","MCP_RESOURCE_URI_ATTRIBUTE","parseStringToURLObject","isURLObjectRelative","extractTargetInfo","MCP_REQUEST_ID_ATTRIBUTE","getRequestArguments"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributes.js new file mode 100644 index 0000000..2e1840e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributes.js @@ -0,0 +1,172 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Essential MCP attribute constants for Sentry instrumentation + * + * Based on OpenTelemetry MCP semantic conventions + * @see https://github.com/open-telemetry/semantic-conventions/blob/3097fb0af5b9492b0e3f55dc5f6c21a3dc2be8df/docs/gen-ai/mcp.md + */ + +// ============================================================================= +// CORE MCP ATTRIBUTES +// ============================================================================= + +/** The name of the request or notification method */ +const MCP_METHOD_NAME_ATTRIBUTE = 'mcp.method.name'; + +/** JSON-RPC request identifier for the request. Unique within the MCP session. */ +const MCP_REQUEST_ID_ATTRIBUTE = 'mcp.request.id'; + +/** Identifies the MCP session */ +const MCP_SESSION_ID_ATTRIBUTE = 'mcp.session.id'; + +/** Transport method used for MCP communication */ +const MCP_TRANSPORT_ATTRIBUTE = 'mcp.transport'; + +// ============================================================================= +// SERVER ATTRIBUTES +// ============================================================================= + +/** Name of the MCP server application */ +const MCP_SERVER_NAME_ATTRIBUTE = 'mcp.server.name'; + +/** Display title of the MCP server application */ +const MCP_SERVER_TITLE_ATTRIBUTE = 'mcp.server.title'; + +/** Version of the MCP server application */ +const MCP_SERVER_VERSION_ATTRIBUTE = 'mcp.server.version'; + +/** MCP protocol version used in the session */ +const MCP_PROTOCOL_VERSION_ATTRIBUTE = 'mcp.protocol.version'; + +// ============================================================================= +// METHOD-SPECIFIC ATTRIBUTES +// ============================================================================= + +/** Name of the tool being called */ +const MCP_TOOL_NAME_ATTRIBUTE = 'mcp.tool.name'; + +/** The resource URI being accessed */ +const MCP_RESOURCE_URI_ATTRIBUTE = 'mcp.resource.uri'; + +/** Name of the prompt template */ +const MCP_PROMPT_NAME_ATTRIBUTE = 'mcp.prompt.name'; + +// ============================================================================= +// TOOL RESULT ATTRIBUTES +// ============================================================================= + +/** Whether a tool execution resulted in an error */ +const MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE = 'mcp.tool.result.is_error'; + +/** Number of content items in the tool result */ +const MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE = 'mcp.tool.result.content_count'; + +// ============================================================================= +// PROMPT RESULT ATTRIBUTES +// ============================================================================= + +/** Description of the prompt result */ +const MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE = 'mcp.prompt.result.description'; + +/** Number of messages in the prompt result */ +const MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE = 'mcp.prompt.result.message_count'; + +// ============================================================================= +// REQUEST ARGUMENT ATTRIBUTES +// ============================================================================= + +/** Prefix for MCP request argument prefix for each argument */ +const MCP_REQUEST_ARGUMENT = 'mcp.request.argument'; + +// ============================================================================= +// LOGGING ATTRIBUTES +// ============================================================================= + +/** Log level for MCP logging operations */ +const MCP_LOGGING_LEVEL_ATTRIBUTE = 'mcp.logging.level'; + +/** Logger name for MCP logging operations */ +const MCP_LOGGING_LOGGER_ATTRIBUTE = 'mcp.logging.logger'; + +/** Data type of the logged message */ +const MCP_LOGGING_DATA_TYPE_ATTRIBUTE = 'mcp.logging.data_type'; + +/** Log message content */ +const MCP_LOGGING_MESSAGE_ATTRIBUTE = 'mcp.logging.message'; + +// ============================================================================= +// NETWORK ATTRIBUTES (OpenTelemetry Standard) +// ============================================================================= + +/** OSI transport layer protocol */ +const NETWORK_TRANSPORT_ATTRIBUTE = 'network.transport'; + +/** The version of JSON RPC protocol used */ +const NETWORK_PROTOCOL_VERSION_ATTRIBUTE = 'network.protocol.version'; + +/** Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name */ +const CLIENT_ADDRESS_ATTRIBUTE = 'client.address'; + +/** Client port number */ +const CLIENT_PORT_ATTRIBUTE = 'client.port'; + +// ============================================================================= +// SENTRY-SPECIFIC MCP ATTRIBUTE VALUES +// ============================================================================= + +/** Sentry operation value for MCP server spans */ +const MCP_SERVER_OP_VALUE = 'mcp.server'; + +/** + * Sentry operation value for client-to-server notifications + * Following OpenTelemetry MCP semantic conventions + */ +const MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE = 'mcp.notification.client_to_server'; + +/** + * Sentry operation value for server-to-client notifications + * Following OpenTelemetry MCP semantic conventions + */ +const MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE = 'mcp.notification.server_to_client'; + +/** Sentry origin value for MCP function spans */ +const MCP_FUNCTION_ORIGIN_VALUE = 'auto.function.mcp_server'; + +/** Sentry origin value for MCP notification spans */ +const MCP_NOTIFICATION_ORIGIN_VALUE = 'auto.mcp.notification'; + +/** Sentry source value for MCP route spans */ +const MCP_ROUTE_SOURCE_VALUE = 'route'; + +exports.CLIENT_ADDRESS_ATTRIBUTE = CLIENT_ADDRESS_ATTRIBUTE; +exports.CLIENT_PORT_ATTRIBUTE = CLIENT_PORT_ATTRIBUTE; +exports.MCP_FUNCTION_ORIGIN_VALUE = MCP_FUNCTION_ORIGIN_VALUE; +exports.MCP_LOGGING_DATA_TYPE_ATTRIBUTE = MCP_LOGGING_DATA_TYPE_ATTRIBUTE; +exports.MCP_LOGGING_LEVEL_ATTRIBUTE = MCP_LOGGING_LEVEL_ATTRIBUTE; +exports.MCP_LOGGING_LOGGER_ATTRIBUTE = MCP_LOGGING_LOGGER_ATTRIBUTE; +exports.MCP_LOGGING_MESSAGE_ATTRIBUTE = MCP_LOGGING_MESSAGE_ATTRIBUTE; +exports.MCP_METHOD_NAME_ATTRIBUTE = MCP_METHOD_NAME_ATTRIBUTE; +exports.MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE = MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE; +exports.MCP_NOTIFICATION_ORIGIN_VALUE = MCP_NOTIFICATION_ORIGIN_VALUE; +exports.MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE = MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE; +exports.MCP_PROMPT_NAME_ATTRIBUTE = MCP_PROMPT_NAME_ATTRIBUTE; +exports.MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE = MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE; +exports.MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE = MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE; +exports.MCP_PROTOCOL_VERSION_ATTRIBUTE = MCP_PROTOCOL_VERSION_ATTRIBUTE; +exports.MCP_REQUEST_ARGUMENT = MCP_REQUEST_ARGUMENT; +exports.MCP_REQUEST_ID_ATTRIBUTE = MCP_REQUEST_ID_ATTRIBUTE; +exports.MCP_RESOURCE_URI_ATTRIBUTE = MCP_RESOURCE_URI_ATTRIBUTE; +exports.MCP_ROUTE_SOURCE_VALUE = MCP_ROUTE_SOURCE_VALUE; +exports.MCP_SERVER_NAME_ATTRIBUTE = MCP_SERVER_NAME_ATTRIBUTE; +exports.MCP_SERVER_OP_VALUE = MCP_SERVER_OP_VALUE; +exports.MCP_SERVER_TITLE_ATTRIBUTE = MCP_SERVER_TITLE_ATTRIBUTE; +exports.MCP_SERVER_VERSION_ATTRIBUTE = MCP_SERVER_VERSION_ATTRIBUTE; +exports.MCP_SESSION_ID_ATTRIBUTE = MCP_SESSION_ID_ATTRIBUTE; +exports.MCP_TOOL_NAME_ATTRIBUTE = MCP_TOOL_NAME_ATTRIBUTE; +exports.MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE = MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE; +exports.MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE = MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE; +exports.MCP_TRANSPORT_ATTRIBUTE = MCP_TRANSPORT_ATTRIBUTE; +exports.NETWORK_PROTOCOL_VERSION_ATTRIBUTE = NETWORK_PROTOCOL_VERSION_ATTRIBUTE; +exports.NETWORK_TRANSPORT_ATTRIBUTE = NETWORK_TRANSPORT_ATTRIBUTE; +//# sourceMappingURL=attributes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributes.js.map new file mode 100644 index 0000000..e9338ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributes.js","sources":["../../../../src/integrations/mcp-server/attributes.ts"],"sourcesContent":["/**\n * Essential MCP attribute constants for Sentry instrumentation\n *\n * Based on OpenTelemetry MCP semantic conventions\n * @see https://github.com/open-telemetry/semantic-conventions/blob/3097fb0af5b9492b0e3f55dc5f6c21a3dc2be8df/docs/gen-ai/mcp.md\n */\n\n// =============================================================================\n// CORE MCP ATTRIBUTES\n// =============================================================================\n\n/** The name of the request or notification method */\nexport const MCP_METHOD_NAME_ATTRIBUTE = 'mcp.method.name';\n\n/** JSON-RPC request identifier for the request. Unique within the MCP session. */\nexport const MCP_REQUEST_ID_ATTRIBUTE = 'mcp.request.id';\n\n/** Identifies the MCP session */\nexport const MCP_SESSION_ID_ATTRIBUTE = 'mcp.session.id';\n\n/** Transport method used for MCP communication */\nexport const MCP_TRANSPORT_ATTRIBUTE = 'mcp.transport';\n\n// =============================================================================\n// CLIENT ATTRIBUTES\n// =============================================================================\n\n/** Name of the MCP client application */\nexport const MCP_CLIENT_NAME_ATTRIBUTE = 'mcp.client.name';\n\n/** Display title of the MCP client application */\nexport const MCP_CLIENT_TITLE_ATTRIBUTE = 'mcp.client.title';\n\n/** Version of the MCP client application */\nexport const MCP_CLIENT_VERSION_ATTRIBUTE = 'mcp.client.version';\n\n// =============================================================================\n// SERVER ATTRIBUTES\n// =============================================================================\n\n/** Name of the MCP server application */\nexport const MCP_SERVER_NAME_ATTRIBUTE = 'mcp.server.name';\n\n/** Display title of the MCP server application */\nexport const MCP_SERVER_TITLE_ATTRIBUTE = 'mcp.server.title';\n\n/** Version of the MCP server application */\nexport const MCP_SERVER_VERSION_ATTRIBUTE = 'mcp.server.version';\n\n/** MCP protocol version used in the session */\nexport const MCP_PROTOCOL_VERSION_ATTRIBUTE = 'mcp.protocol.version';\n\n// =============================================================================\n// METHOD-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/** Name of the tool being called */\nexport const MCP_TOOL_NAME_ATTRIBUTE = 'mcp.tool.name';\n\n/** The resource URI being accessed */\nexport const MCP_RESOURCE_URI_ATTRIBUTE = 'mcp.resource.uri';\n\n/** Name of the prompt template */\nexport const MCP_PROMPT_NAME_ATTRIBUTE = 'mcp.prompt.name';\n\n// =============================================================================\n// TOOL RESULT ATTRIBUTES\n// =============================================================================\n\n/** Whether a tool execution resulted in an error */\nexport const MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE = 'mcp.tool.result.is_error';\n\n/** Number of content items in the tool result */\nexport const MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE = 'mcp.tool.result.content_count';\n\n/** Serialized content of the tool result */\nexport const MCP_TOOL_RESULT_CONTENT_ATTRIBUTE = 'mcp.tool.result.content';\n\n/** Prefix for tool result attributes that contain sensitive content */\nexport const MCP_TOOL_RESULT_PREFIX = 'mcp.tool.result';\n\n// =============================================================================\n// PROMPT RESULT ATTRIBUTES\n// =============================================================================\n\n/** Description of the prompt result */\nexport const MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE = 'mcp.prompt.result.description';\n\n/** Number of messages in the prompt result */\nexport const MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE = 'mcp.prompt.result.message_count';\n\n/** Role of the message in the prompt result (for single message results) */\nexport const MCP_PROMPT_RESULT_MESSAGE_ROLE_ATTRIBUTE = 'mcp.prompt.result.message_role';\n\n/** Content of the message in the prompt result (for single message results) */\nexport const MCP_PROMPT_RESULT_MESSAGE_CONTENT_ATTRIBUTE = 'mcp.prompt.result.message_content';\n\n/** Prefix for prompt result attributes that contain sensitive content */\nexport const MCP_PROMPT_RESULT_PREFIX = 'mcp.prompt.result';\n\n// =============================================================================\n// REQUEST ARGUMENT ATTRIBUTES\n// =============================================================================\n\n/** Prefix for MCP request argument prefix for each argument */\nexport const MCP_REQUEST_ARGUMENT = 'mcp.request.argument';\n\n// =============================================================================\n// LOGGING ATTRIBUTES\n// =============================================================================\n\n/** Log level for MCP logging operations */\nexport const MCP_LOGGING_LEVEL_ATTRIBUTE = 'mcp.logging.level';\n\n/** Logger name for MCP logging operations */\nexport const MCP_LOGGING_LOGGER_ATTRIBUTE = 'mcp.logging.logger';\n\n/** Data type of the logged message */\nexport const MCP_LOGGING_DATA_TYPE_ATTRIBUTE = 'mcp.logging.data_type';\n\n/** Log message content */\nexport const MCP_LOGGING_MESSAGE_ATTRIBUTE = 'mcp.logging.message';\n\n// =============================================================================\n// NETWORK ATTRIBUTES (OpenTelemetry Standard)\n// =============================================================================\n\n/** OSI transport layer protocol */\nexport const NETWORK_TRANSPORT_ATTRIBUTE = 'network.transport';\n\n/** The version of JSON RPC protocol used */\nexport const NETWORK_PROTOCOL_VERSION_ATTRIBUTE = 'network.protocol.version';\n\n/** Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name */\nexport const CLIENT_ADDRESS_ATTRIBUTE = 'client.address';\n\n/** Client port number */\nexport const CLIENT_PORT_ATTRIBUTE = 'client.port';\n\n// =============================================================================\n// SENTRY-SPECIFIC MCP ATTRIBUTE VALUES\n// =============================================================================\n\n/** Sentry operation value for MCP server spans */\nexport const MCP_SERVER_OP_VALUE = 'mcp.server';\n\n/**\n * Sentry operation value for client-to-server notifications\n * Following OpenTelemetry MCP semantic conventions\n */\nexport const MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE = 'mcp.notification.client_to_server';\n\n/**\n * Sentry operation value for server-to-client notifications\n * Following OpenTelemetry MCP semantic conventions\n */\nexport const MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE = 'mcp.notification.server_to_client';\n\n/** Sentry origin value for MCP function spans */\nexport const MCP_FUNCTION_ORIGIN_VALUE = 'auto.function.mcp_server';\n\n/** Sentry origin value for MCP notification spans */\nexport const MCP_NOTIFICATION_ORIGIN_VALUE = 'auto.mcp.notification';\n\n/** Sentry source value for MCP route spans */\nexport const MCP_ROUTE_SOURCE_VALUE = 'route';\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACO,MAAM,wBAAA,GAA2B;;AAExC;AACO,MAAM,wBAAA,GAA2B;;AAExC;AACO,MAAM,uBAAA,GAA0B;;AAevC;AACA;AACA;;AAEA;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACO,MAAM,0BAAA,GAA6B;;AAE1C;AACO,MAAM,4BAAA,GAA+B;;AAE5C;AACO,MAAM,8BAAA,GAAiC;;AAE9C;AACA;AACA;;AAEA;AACO,MAAM,uBAAA,GAA0B;;AAEvC;AACO,MAAM,0BAAA,GAA6B;;AAE1C;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACA;AACA;;AAEA;AACO,MAAM,kCAAA,GAAqC;;AAElD;AACO,MAAM,uCAAA,GAA0C;;AAQvD;AACA;AACA;;AAEA;AACO,MAAM,uCAAA,GAA0C;;AAEvD;AACO,MAAM,yCAAA,GAA4C;;AAWzD;AACA;AACA;;AAEA;AACO,MAAM,oBAAA,GAAuB;;AAEpC;AACA;AACA;;AAEA;AACO,MAAM,2BAAA,GAA8B;;AAE3C;AACO,MAAM,4BAAA,GAA+B;;AAE5C;AACO,MAAM,+BAAA,GAAkC;;AAE/C;AACO,MAAM,6BAAA,GAAgC;;AAE7C;AACA;AACA;;AAEA;AACO,MAAM,2BAAA,GAA8B;;AAE3C;AACO,MAAM,kCAAA,GAAqC;;AAElD;AACO,MAAM,wBAAA,GAA2B;;AAExC;AACO,MAAM,qBAAA,GAAwB;;AAErC;AACA;AACA;;AAEA;AACO,MAAM,mBAAA,GAAsB;;AAEnC;AACA;AACA;AACA;AACO,MAAM,0CAAA,GAA6C;;AAE1D;AACA;AACA;AACA;AACO,MAAM,0CAAA,GAA6C;;AAE1D;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACO,MAAM,6BAAA,GAAgC;;AAE7C;AACO,MAAM,sBAAA,GAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/correlation.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/correlation.js new file mode 100644 index 0000000..443f880 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/correlation.js @@ -0,0 +1,119 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const spanstatus = require('../../tracing/spanstatus.js'); +const attributes = require('./attributes.js'); +const resultExtraction = require('./resultExtraction.js'); +const sessionExtraction = require('./sessionExtraction.js'); + +/** + * Request-span correlation system for MCP server instrumentation + * + * Handles mapping requestId to span data for correlation with handler execution. + * Uses WeakMap to scope correlation maps per transport instance, preventing + * request ID collisions between different MCP sessions. + */ + + +/** + * Transport-scoped correlation system that prevents collisions between different MCP sessions + * @internal Each transport instance gets its own correlation map, eliminating request ID conflicts + */ +const transportToSpanMap = new WeakMap(); + +/** + * Gets or creates the span map for a specific transport instance + * @internal + * @param transport - MCP transport instance + * @returns Span map for the transport + */ +function getOrCreateSpanMap(transport) { + let spanMap = transportToSpanMap.get(transport); + if (!spanMap) { + spanMap = new Map(); + transportToSpanMap.set(transport, spanMap); + } + return spanMap; +} + +/** + * Stores span context for later correlation with handler execution + * @param transport - MCP transport instance + * @param requestId - Request identifier + * @param span - Active span to correlate + * @param method - MCP method name + */ +function storeSpanForRequest(transport, requestId, span, method) { + const spanMap = getOrCreateSpanMap(transport); + spanMap.set(requestId, { + span, + method, + // eslint-disable-next-line @sentry-internal/sdk/no-unsafe-random-apis + startTime: Date.now(), + }); +} + +/** + * Completes span with results and cleans up correlation + * @param transport - MCP transport instance + * @param requestId - Request identifier + * @param result - Execution result for attribute extraction + * @param options - Resolved MCP options + */ +function completeSpanWithResults( + transport, + requestId, + result, + options, +) { + const spanMap = getOrCreateSpanMap(transport); + const spanData = spanMap.get(requestId); + if (spanData) { + const { span, method } = spanData; + + if (method === 'initialize') { + const sessionData = sessionExtraction.extractSessionDataFromInitializeResponse(result); + const serverAttributes = sessionExtraction.buildServerAttributesFromInfo(sessionData.serverInfo); + + const initAttributes = { + ...serverAttributes, + }; + if (sessionData.protocolVersion) { + initAttributes[attributes.MCP_PROTOCOL_VERSION_ATTRIBUTE] = sessionData.protocolVersion; + } + + span.setAttributes(initAttributes); + } else if (method === 'tools/call') { + const toolAttributes = resultExtraction.extractToolResultAttributes(result, options.recordOutputs); + span.setAttributes(toolAttributes); + } else if (method === 'prompts/get') { + const promptAttributes = resultExtraction.extractPromptResultAttributes(result, options.recordOutputs); + span.setAttributes(promptAttributes); + } + + span.end(); + spanMap.delete(requestId); + } +} + +/** + * Cleans up pending spans for a specific transport (when that transport closes) + * @param transport - MCP transport instance + */ +function cleanupPendingSpansForTransport(transport) { + const spanMap = transportToSpanMap.get(transport); + if (spanMap) { + for (const [, spanData] of spanMap) { + spanData.span.setStatus({ + code: spanstatus.SPAN_STATUS_ERROR, + message: 'cancelled', + }); + spanData.span.end(); + } + spanMap.clear(); + } +} + +exports.cleanupPendingSpansForTransport = cleanupPendingSpansForTransport; +exports.completeSpanWithResults = completeSpanWithResults; +exports.storeSpanForRequest = storeSpanForRequest; +//# sourceMappingURL=correlation.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/correlation.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/correlation.js.map new file mode 100644 index 0000000..3e5126c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/correlation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"correlation.js","sources":["../../../../src/integrations/mcp-server/correlation.ts"],"sourcesContent":["/**\n * Request-span correlation system for MCP server instrumentation\n *\n * Handles mapping requestId to span data for correlation with handler execution.\n * Uses WeakMap to scope correlation maps per transport instance, preventing\n * request ID collisions between different MCP sessions.\n */\n\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes';\nimport { extractPromptResultAttributes, extractToolResultAttributes } from './resultExtraction';\nimport { buildServerAttributesFromInfo, extractSessionDataFromInitializeResponse } from './sessionExtraction';\nimport type { MCPTransport, RequestId, RequestSpanMapValue, ResolvedMcpOptions } from './types';\n\n/**\n * Transport-scoped correlation system that prevents collisions between different MCP sessions\n * @internal Each transport instance gets its own correlation map, eliminating request ID conflicts\n */\nconst transportToSpanMap = new WeakMap>();\n\n/**\n * Gets or creates the span map for a specific transport instance\n * @internal\n * @param transport - MCP transport instance\n * @returns Span map for the transport\n */\nfunction getOrCreateSpanMap(transport: MCPTransport): Map {\n let spanMap = transportToSpanMap.get(transport);\n if (!spanMap) {\n spanMap = new Map();\n transportToSpanMap.set(transport, spanMap);\n }\n return spanMap;\n}\n\n/**\n * Stores span context for later correlation with handler execution\n * @param transport - MCP transport instance\n * @param requestId - Request identifier\n * @param span - Active span to correlate\n * @param method - MCP method name\n */\nexport function storeSpanForRequest(transport: MCPTransport, requestId: RequestId, span: Span, method: string): void {\n const spanMap = getOrCreateSpanMap(transport);\n spanMap.set(requestId, {\n span,\n method,\n // eslint-disable-next-line @sentry-internal/sdk/no-unsafe-random-apis\n startTime: Date.now(),\n });\n}\n\n/**\n * Completes span with results and cleans up correlation\n * @param transport - MCP transport instance\n * @param requestId - Request identifier\n * @param result - Execution result for attribute extraction\n * @param options - Resolved MCP options\n */\nexport function completeSpanWithResults(\n transport: MCPTransport,\n requestId: RequestId,\n result: unknown,\n options: ResolvedMcpOptions,\n): void {\n const spanMap = getOrCreateSpanMap(transport);\n const spanData = spanMap.get(requestId);\n if (spanData) {\n const { span, method } = spanData;\n\n if (method === 'initialize') {\n const sessionData = extractSessionDataFromInitializeResponse(result);\n const serverAttributes = buildServerAttributesFromInfo(sessionData.serverInfo);\n\n const initAttributes: Record = {\n ...serverAttributes,\n };\n if (sessionData.protocolVersion) {\n initAttributes[MCP_PROTOCOL_VERSION_ATTRIBUTE] = sessionData.protocolVersion;\n }\n\n span.setAttributes(initAttributes);\n } else if (method === 'tools/call') {\n const toolAttributes = extractToolResultAttributes(result, options.recordOutputs);\n span.setAttributes(toolAttributes);\n } else if (method === 'prompts/get') {\n const promptAttributes = extractPromptResultAttributes(result, options.recordOutputs);\n span.setAttributes(promptAttributes);\n }\n\n span.end();\n spanMap.delete(requestId);\n }\n}\n\n/**\n * Cleans up pending spans for a specific transport (when that transport closes)\n * @param transport - MCP transport instance\n */\nexport function cleanupPendingSpansForTransport(transport: MCPTransport): void {\n const spanMap = transportToSpanMap.get(transport);\n if (spanMap) {\n for (const [, spanData] of spanMap) {\n spanData.span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'cancelled',\n });\n spanData.span.end();\n }\n spanMap.clear();\n }\n}\n"],"names":["extractSessionDataFromInitializeResponse","buildServerAttributesFromInfo","MCP_PROTOCOL_VERSION_ATTRIBUTE","extractToolResultAttributes","extractPromptResultAttributes","SPAN_STATUS_ERROR"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/errorCapture.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/errorCapture.js new file mode 100644 index 0000000..121324e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/errorCapture.js @@ -0,0 +1,55 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../../currentScopes.js'); +const exports$1 = require('../../exports.js'); +const spanUtils = require('../../utils/spanUtils.js'); +const spanstatus = require('../../tracing/spanstatus.js'); + +/** + * Safe error capture utilities for MCP server instrumentation + * + * Ensures error reporting never interferes with MCP server operation. + * All capture operations are wrapped in try-catch to prevent side effects. + */ + + +/** + * Captures an error without affecting MCP server operation. + * + * The active span already contains all MCP context (method, tool, arguments, etc.) + * @param error - Error to capture + * @param errorType - Classification of error type for filtering + * @param extraData - Additional context data to include + */ +function captureError(error, errorType, extraData) { + try { + const client = currentScopes.getClient(); + if (!client) { + return; + } + + const activeSpan = spanUtils.getActiveSpan(); + if (activeSpan?.isRecording()) { + activeSpan.setStatus({ + code: spanstatus.SPAN_STATUS_ERROR, + message: 'internal_error', + }); + } + + exports$1.captureException(error, { + mechanism: { + type: 'auto.ai.mcp_server', + handled: false, + data: { + error_type: errorType || 'handler_execution', + ...extraData, + }, + }, + }); + } catch { + // noop + } +} + +exports.captureError = captureError; +//# sourceMappingURL=errorCapture.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/errorCapture.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/errorCapture.js.map new file mode 100644 index 0000000..9e20092 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/errorCapture.js.map @@ -0,0 +1 @@ +{"version":3,"file":"errorCapture.js","sources":["../../../../src/integrations/mcp-server/errorCapture.ts"],"sourcesContent":["/**\n * Safe error capture utilities for MCP server instrumentation\n *\n * Ensures error reporting never interferes with MCP server operation.\n * All capture operations are wrapped in try-catch to prevent side effects.\n */\n\nimport { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { getActiveSpan } from '../../utils/spanUtils';\nimport type { McpErrorType } from './types';\n\n/**\n * Captures an error without affecting MCP server operation.\n *\n * The active span already contains all MCP context (method, tool, arguments, etc.)\n * @param error - Error to capture\n * @param errorType - Classification of error type for filtering\n * @param extraData - Additional context data to include\n */\nexport function captureError(error: Error, errorType?: McpErrorType, extraData?: Record): void {\n try {\n const client = getClient();\n if (!client) {\n return;\n }\n\n const activeSpan = getActiveSpan();\n if (activeSpan?.isRecording()) {\n activeSpan.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'internal_error',\n });\n }\n\n captureException(error, {\n mechanism: {\n type: 'auto.ai.mcp_server',\n handled: false,\n data: {\n error_type: errorType || 'handler_execution',\n ...extraData,\n },\n },\n });\n } catch {\n // noop\n }\n}\n"],"names":["getClient","getActiveSpan","SPAN_STATUS_ERROR","captureException"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,KAAK,EAAS,SAAS,EAAiB,SAAS,EAAkC;AAChH,EAAE,IAAI;AACN,IAAI,MAAM,MAAA,GAASA,uBAAS,EAAE;AAC9B,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,UAAA,GAAaC,uBAAa,EAAE;AACtC,IAAI,IAAI,UAAU,EAAE,WAAW,EAAE,EAAE;AACnC,MAAM,UAAU,CAAC,SAAS,CAAC;AAC3B,QAAQ,IAAI,EAAEC,4BAAiB;AAC/B,QAAQ,OAAO,EAAE,gBAAgB;AACjC,OAAO,CAAC;AACR,IAAI;;AAEJ,IAAIC,0BAAgB,CAAC,KAAK,EAAE;AAC5B,MAAM,SAAS,EAAE;AACjB,QAAQ,IAAI,EAAE,oBAAoB;AAClC,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,IAAI,EAAE;AACd,UAAU,UAAU,EAAE,SAAA,IAAa,mBAAmB;AACtD,UAAU,GAAG,SAAS;AACtB,SAAS;AACT,OAAO;AACP,KAAK,CAAC;AACN,EAAE,EAAE,MAAM;AACV;AACA,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/handlers.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/handlers.js new file mode 100644 index 0000000..f63e171 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/handlers.js @@ -0,0 +1,169 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../../debug-build.js'); +const debugLogger = require('../../utils/debug-logger.js'); +const object = require('../../utils/object.js'); +const errorCapture = require('./errorCapture.js'); + +/** + * Handler method wrapping for MCP server instrumentation + * + * Provides automatic error capture and span correlation for tool, resource, + * and prompt handlers. + */ + + +/** + * Generic function to wrap MCP server method handlers + * @internal + * @param serverInstance - MCP server instance + * @param methodName - Method name to wrap (tool, resource, prompt) + */ +function wrapMethodHandler(serverInstance, methodName) { + object.fill(serverInstance, methodName, originalMethod => { + return function ( name, ...args) { + const handler = args[args.length - 1]; + + if (typeof handler !== 'function') { + return (originalMethod ).call(this, name, ...args); + } + + const wrappedHandler = createWrappedHandler(handler , methodName, name); + return (originalMethod ).call(this, name, ...args.slice(0, -1), wrappedHandler); + }; + }); +} + +/** + * Creates a wrapped handler with span correlation and error capture + * @internal + * @param originalHandler - Original handler function + * @param methodName - MCP method name + * @param handlerName - Handler identifier + * @returns Wrapped handler function + */ +function createWrappedHandler(originalHandler, methodName, handlerName) { + return function ( ...handlerArgs) { + try { + return createErrorCapturingHandler.call(this, originalHandler, methodName, handlerName, handlerArgs); + } catch (error) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('MCP handler wrapping failed:', error); + return originalHandler.apply(this, handlerArgs); + } + }; +} + +/** + * Creates an error-capturing wrapper for handler execution + * @internal + * @param originalHandler - Original handler function + * @param methodName - MCP method name + * @param handlerName - Handler identifier + * @param handlerArgs - Handler arguments + * @param extraHandlerData - Additional handler context + * @returns Handler execution result + */ +function createErrorCapturingHandler( + + originalHandler, + methodName, + handlerName, + handlerArgs, +) { + try { + const result = originalHandler.apply(this, handlerArgs); + + if (result && typeof result === 'object' && typeof (result ).then === 'function') { + return Promise.resolve(result).catch(error => { + captureHandlerError(error, methodName, handlerName); + throw error; + }); + } + + return result; + } catch (error) { + captureHandlerError(error , methodName, handlerName); + throw error; + } +} + +/** + * Captures handler execution errors based on handler type + * @internal + * @param error - Error to capture + * @param methodName - MCP method name + * @param handlerName - Handler identifier + */ +function captureHandlerError(error, methodName, handlerName) { + try { + const extraData = {}; + + if (methodName === 'tool') { + extraData.tool_name = handlerName; + + if ( + error.name === 'ProtocolValidationError' || + error.message.includes('validation') || + error.message.includes('protocol') + ) { + errorCapture.captureError(error, 'validation', extraData); + } else if ( + error.name === 'ServerTimeoutError' || + error.message.includes('timed out') || + error.message.includes('timeout') + ) { + errorCapture.captureError(error, 'timeout', extraData); + } else { + errorCapture.captureError(error, 'tool_execution', extraData); + } + } else if (methodName === 'resource') { + extraData.resource_uri = handlerName; + errorCapture.captureError(error, 'resource_execution', extraData); + } else if (methodName === 'prompt') { + extraData.prompt_name = handlerName; + errorCapture.captureError(error, 'prompt_execution', extraData); + } + } catch (captureErr) { + // noop + } +} + +/** + * Wraps tool handlers to associate them with request spans + * @param serverInstance - MCP server instance + */ +function wrapToolHandlers(serverInstance) { + wrapMethodHandler(serverInstance, 'tool'); +} + +/** + * Wraps resource handlers to associate them with request spans + * @param serverInstance - MCP server instance + */ +function wrapResourceHandlers(serverInstance) { + wrapMethodHandler(serverInstance, 'resource'); +} + +/** + * Wraps prompt handlers to associate them with request spans + * @param serverInstance - MCP server instance + */ +function wrapPromptHandlers(serverInstance) { + wrapMethodHandler(serverInstance, 'prompt'); +} + +/** + * Wraps all MCP handler types (tool, resource, prompt) for span correlation + * @param serverInstance - MCP server instance + */ +function wrapAllMCPHandlers(serverInstance) { + wrapToolHandlers(serverInstance); + wrapResourceHandlers(serverInstance); + wrapPromptHandlers(serverInstance); +} + +exports.wrapAllMCPHandlers = wrapAllMCPHandlers; +exports.wrapPromptHandlers = wrapPromptHandlers; +exports.wrapResourceHandlers = wrapResourceHandlers; +exports.wrapToolHandlers = wrapToolHandlers; +//# sourceMappingURL=handlers.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/handlers.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/handlers.js.map new file mode 100644 index 0000000..e030935 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/handlers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"handlers.js","sources":["../../../../src/integrations/mcp-server/handlers.ts"],"sourcesContent":["/**\n * Handler method wrapping for MCP server instrumentation\n *\n * Provides automatic error capture and span correlation for tool, resource,\n * and prompt handlers.\n */\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../../utils/debug-logger';\nimport { fill } from '../../utils/object';\nimport { captureError } from './errorCapture';\nimport type { MCPHandler, MCPServerInstance } from './types';\n\n/**\n * Generic function to wrap MCP server method handlers\n * @internal\n * @param serverInstance - MCP server instance\n * @param methodName - Method name to wrap (tool, resource, prompt)\n */\nfunction wrapMethodHandler(serverInstance: MCPServerInstance, methodName: keyof MCPServerInstance): void {\n fill(serverInstance, methodName, originalMethod => {\n return function (this: MCPServerInstance, name: string, ...args: unknown[]) {\n const handler = args[args.length - 1];\n\n if (typeof handler !== 'function') {\n return (originalMethod as (...args: unknown[]) => unknown).call(this, name, ...args);\n }\n\n const wrappedHandler = createWrappedHandler(handler as MCPHandler, methodName, name);\n return (originalMethod as (...args: unknown[]) => unknown).call(this, name, ...args.slice(0, -1), wrappedHandler);\n };\n });\n}\n\n/**\n * Creates a wrapped handler with span correlation and error capture\n * @internal\n * @param originalHandler - Original handler function\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n * @returns Wrapped handler function\n */\nfunction createWrappedHandler(originalHandler: MCPHandler, methodName: keyof MCPServerInstance, handlerName: string) {\n return function (this: unknown, ...handlerArgs: unknown[]): unknown {\n try {\n return createErrorCapturingHandler.call(this, originalHandler, methodName, handlerName, handlerArgs);\n } catch (error) {\n DEBUG_BUILD && debug.warn('MCP handler wrapping failed:', error);\n return originalHandler.apply(this, handlerArgs);\n }\n };\n}\n\n/**\n * Creates an error-capturing wrapper for handler execution\n * @internal\n * @param originalHandler - Original handler function\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n * @param handlerArgs - Handler arguments\n * @param extraHandlerData - Additional handler context\n * @returns Handler execution result\n */\nfunction createErrorCapturingHandler(\n this: MCPServerInstance,\n originalHandler: MCPHandler,\n methodName: keyof MCPServerInstance,\n handlerName: string,\n handlerArgs: unknown[],\n): unknown {\n try {\n const result = originalHandler.apply(this, handlerArgs);\n\n if (result && typeof result === 'object' && typeof (result as { then?: unknown }).then === 'function') {\n return Promise.resolve(result).catch(error => {\n captureHandlerError(error, methodName, handlerName);\n throw error;\n });\n }\n\n return result;\n } catch (error) {\n captureHandlerError(error as Error, methodName, handlerName);\n throw error;\n }\n}\n\n/**\n * Captures handler execution errors based on handler type\n * @internal\n * @param error - Error to capture\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n */\nfunction captureHandlerError(error: Error, methodName: keyof MCPServerInstance, handlerName: string): void {\n try {\n const extraData: Record = {};\n\n if (methodName === 'tool') {\n extraData.tool_name = handlerName;\n\n if (\n error.name === 'ProtocolValidationError' ||\n error.message.includes('validation') ||\n error.message.includes('protocol')\n ) {\n captureError(error, 'validation', extraData);\n } else if (\n error.name === 'ServerTimeoutError' ||\n error.message.includes('timed out') ||\n error.message.includes('timeout')\n ) {\n captureError(error, 'timeout', extraData);\n } else {\n captureError(error, 'tool_execution', extraData);\n }\n } else if (methodName === 'resource') {\n extraData.resource_uri = handlerName;\n captureError(error, 'resource_execution', extraData);\n } else if (methodName === 'prompt') {\n extraData.prompt_name = handlerName;\n captureError(error, 'prompt_execution', extraData);\n }\n } catch (captureErr) {\n // noop\n }\n}\n\n/**\n * Wraps tool handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapToolHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'tool');\n}\n\n/**\n * Wraps resource handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapResourceHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'resource');\n}\n\n/**\n * Wraps prompt handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapPromptHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'prompt');\n}\n\n/**\n * Wraps all MCP handler types (tool, resource, prompt) for span correlation\n * @param serverInstance - MCP server instance\n */\nexport function wrapAllMCPHandlers(serverInstance: MCPServerInstance): void {\n wrapToolHandlers(serverInstance);\n wrapResourceHandlers(serverInstance);\n wrapPromptHandlers(serverInstance);\n}\n"],"names":["fill","DEBUG_BUILD","debug","captureError"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/index.js new file mode 100644 index 0000000..3d99f95 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/index.js @@ -0,0 +1,88 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../../currentScopes.js'); +const object = require('../../utils/object.js'); +const handlers = require('./handlers.js'); +const transport = require('./transport.js'); +const validation = require('./validation.js'); + +/** + * Tracks wrapped MCP server instances to prevent double-wrapping + * @internal + */ +const wrappedMcpServerInstances = new WeakSet(); + +/** + * Wraps a MCP Server instance from the `@modelcontextprotocol/sdk` package with Sentry instrumentation. + * + * Compatible with versions `^1.9.0` of the `@modelcontextprotocol/sdk` package. + * Automatically instruments transport methods and handler functions for comprehensive monitoring. + * + * @example + * ```typescript + * import * as Sentry from '@sentry/core'; + * import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; + * import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; + * + * // Default: inputs/outputs captured based on sendDefaultPii option + * const server = Sentry.wrapMcpServerWithSentry( + * new McpServer({ name: "my-server", version: "1.0.0" }) + * ); + * + * // Explicitly control input/output capture + * const server = Sentry.wrapMcpServerWithSentry( + * new McpServer({ name: "my-server", version: "1.0.0" }), + * { recordInputs: true, recordOutputs: false } + * ); + * + * const transport = new StreamableHTTPServerTransport(); + * await server.connect(transport); + * ``` + * + * @param mcpServerInstance - MCP server instance to instrument + * @param options - Optional configuration for recording inputs and outputs + * @returns Instrumented server instance (same reference) + */ +function wrapMcpServerWithSentry(mcpServerInstance, options) { + if (wrappedMcpServerInstances.has(mcpServerInstance)) { + return mcpServerInstance; + } + + if (!validation.validateMcpServerInstance(mcpServerInstance)) { + return mcpServerInstance; + } + + const serverInstance = mcpServerInstance ; + const client = currentScopes.getClient(); + const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii); + + const resolvedOptions = { + recordInputs: options?.recordInputs ?? sendDefaultPii, + recordOutputs: options?.recordOutputs ?? sendDefaultPii, + }; + + object.fill(serverInstance, 'connect', originalConnect => { + return async function ( transport$1, ...restArgs) { + const result = await (originalConnect ).call( + this, + transport$1, + ...restArgs, + ); + + transport.wrapTransportOnMessage(transport$1, resolvedOptions); + transport.wrapTransportSend(transport$1, resolvedOptions); + transport.wrapTransportOnClose(transport$1); + transport.wrapTransportError(transport$1); + + return result; + }; + }); + + handlers.wrapAllMCPHandlers(serverInstance); + + wrappedMcpServerInstances.add(mcpServerInstance); + return mcpServerInstance; +} + +exports.wrapMcpServerWithSentry = wrapMcpServerWithSentry; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/index.js.map new file mode 100644 index 0000000..2371916 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/integrations/mcp-server/index.ts"],"sourcesContent":["import { getClient } from '../../currentScopes';\nimport { fill } from '../../utils/object';\nimport { wrapAllMCPHandlers } from './handlers';\nimport { wrapTransportError, wrapTransportOnClose, wrapTransportOnMessage, wrapTransportSend } from './transport';\nimport type { MCPServerInstance, McpServerWrapperOptions, MCPTransport, ResolvedMcpOptions } from './types';\nimport { validateMcpServerInstance } from './validation';\n\n/**\n * Tracks wrapped MCP server instances to prevent double-wrapping\n * @internal\n */\nconst wrappedMcpServerInstances = new WeakSet();\n\n/**\n * Wraps a MCP Server instance from the `@modelcontextprotocol/sdk` package with Sentry instrumentation.\n *\n * Compatible with versions `^1.9.0` of the `@modelcontextprotocol/sdk` package.\n * Automatically instruments transport methods and handler functions for comprehensive monitoring.\n *\n * @example\n * ```typescript\n * import * as Sentry from '@sentry/core';\n * import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n * import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\n *\n * // Default: inputs/outputs captured based on sendDefaultPii option\n * const server = Sentry.wrapMcpServerWithSentry(\n * new McpServer({ name: \"my-server\", version: \"1.0.0\" })\n * );\n *\n * // Explicitly control input/output capture\n * const server = Sentry.wrapMcpServerWithSentry(\n * new McpServer({ name: \"my-server\", version: \"1.0.0\" }),\n * { recordInputs: true, recordOutputs: false }\n * );\n *\n * const transport = new StreamableHTTPServerTransport();\n * await server.connect(transport);\n * ```\n *\n * @param mcpServerInstance - MCP server instance to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns Instrumented server instance (same reference)\n */\nexport function wrapMcpServerWithSentry(mcpServerInstance: S, options?: McpServerWrapperOptions): S {\n if (wrappedMcpServerInstances.has(mcpServerInstance)) {\n return mcpServerInstance;\n }\n\n if (!validateMcpServerInstance(mcpServerInstance)) {\n return mcpServerInstance;\n }\n\n const serverInstance = mcpServerInstance as MCPServerInstance;\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n\n const resolvedOptions: ResolvedMcpOptions = {\n recordInputs: options?.recordInputs ?? sendDefaultPii,\n recordOutputs: options?.recordOutputs ?? sendDefaultPii,\n };\n\n fill(serverInstance, 'connect', originalConnect => {\n return async function (this: MCPServerInstance, transport: MCPTransport, ...restArgs: unknown[]) {\n const result = await (originalConnect as (...args: unknown[]) => Promise).call(\n this,\n transport,\n ...restArgs,\n );\n\n wrapTransportOnMessage(transport, resolvedOptions);\n wrapTransportSend(transport, resolvedOptions);\n wrapTransportOnClose(transport);\n wrapTransportError(transport);\n\n return result;\n };\n });\n\n wrapAllMCPHandlers(serverInstance);\n\n wrappedMcpServerInstances.add(mcpServerInstance);\n return mcpServerInstance;\n}\n"],"names":["validateMcpServerInstance","getClient","fill","transport","wrapTransportOnMessage","wrapTransportSend","wrapTransportOnClose","wrapTransportError","wrapAllMCPHandlers"],"mappings":";;;;;;;;AAOA;AACA;AACA;AACA;AACA,MAAM,yBAAA,GAA4B,IAAI,OAAO,EAAE;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAmB,iBAAiB,EAAK,OAAO,EAA+B;AACtH,EAAE,IAAI,yBAAyB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;AACxD,IAAI,OAAO,iBAAiB;AAC5B,EAAE;;AAEF,EAAE,IAAI,CAACA,oCAAyB,CAAC,iBAAiB,CAAC,EAAE;AACrD,IAAI,OAAO,iBAAiB;AAC5B,EAAE;;AAEF,EAAE,MAAM,cAAA,GAAiB,iBAAA;AACzB,EAAE,MAAM,MAAA,GAASC,uBAAS,EAAE;AAC5B,EAAE,MAAM,cAAA,GAAiB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,cAAc,CAAC;;AAErE,EAAE,MAAM,eAAe,GAAuB;AAC9C,IAAI,YAAY,EAAE,OAAO,EAAE,YAAA,IAAgB,cAAc;AACzD,IAAI,aAAa,EAAE,OAAO,EAAE,aAAA,IAAiB,cAAc;AAC3D,GAAG;;AAEH,EAAEC,WAAI,CAAC,cAAc,EAAE,SAAS,EAAE,mBAAmB;AACrD,IAAI,OAAO,iBAAyCC,WAAS,EAAgB,GAAG,QAAQ,EAAa;AACrG,MAAM,MAAM,SAAS,MAAM,CAAC,eAAA,GAA6D,IAAI;AAC7F,QAAQ,IAAI;AACZ,QAAQA,WAAS;AACjB,QAAQ,GAAG,QAAQ;AACnB,OAAO;;AAEP,MAAMC,gCAAsB,CAACD,WAAS,EAAE,eAAe,CAAC;AACxD,MAAME,2BAAiB,CAACF,WAAS,EAAE,eAAe,CAAC;AACnD,MAAMG,8BAAoB,CAACH,WAAS,CAAC;AACrC,MAAMI,4BAAkB,CAACJ,WAAS,CAAC;;AAEnC,MAAM,OAAO,MAAM;AACnB,IAAI,CAAC;AACL,EAAE,CAAC,CAAC;;AAEJ,EAAEK,2BAAkB,CAAC,cAAc,CAAC;;AAEpC,EAAE,yBAAyB,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAClD,EAAE,OAAO,iBAAiB;AAC1B;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/methodConfig.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/methodConfig.js new file mode 100644 index 0000000..b8d3be9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/methodConfig.js @@ -0,0 +1,107 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const attributes = require('./attributes.js'); + +/** + * Method configuration and request processing for MCP server instrumentation + */ + + +/** + * Configuration for MCP methods to extract targets and arguments + * @internal Maps method names to their extraction configuration + */ +const METHOD_CONFIGS = { + 'tools/call': { + targetField: 'name', + targetAttribute: attributes.MCP_TOOL_NAME_ATTRIBUTE, + captureArguments: true, + argumentsField: 'arguments', + }, + 'resources/read': { + targetField: 'uri', + targetAttribute: attributes.MCP_RESOURCE_URI_ATTRIBUTE, + captureUri: true, + }, + 'resources/subscribe': { + targetField: 'uri', + targetAttribute: attributes.MCP_RESOURCE_URI_ATTRIBUTE, + }, + 'resources/unsubscribe': { + targetField: 'uri', + targetAttribute: attributes.MCP_RESOURCE_URI_ATTRIBUTE, + }, + 'prompts/get': { + targetField: 'name', + targetAttribute: attributes.MCP_PROMPT_NAME_ATTRIBUTE, + captureName: true, + captureArguments: true, + argumentsField: 'arguments', + }, +}; + +/** + * Extracts target info from method and params based on method type + * @param method - MCP method name + * @param params - Method parameters + * @returns Target name and attributes for span instrumentation + */ +function extractTargetInfo( + method, + params, +) + + { + const config = METHOD_CONFIGS[method]; + if (!config) { + return { attributes: {} }; + } + + const target = + config.targetField && typeof params?.[config.targetField] === 'string' + ? (params[config.targetField] ) + : undefined; + + return { + target, + attributes: target && config.targetAttribute ? { [config.targetAttribute]: target } : {}, + }; +} + +/** + * Extracts request arguments based on method type + * @param method - MCP method name + * @param params - Method parameters + * @returns Arguments as span attributes with mcp.request.argument prefix + */ +function getRequestArguments(method, params) { + const args = {}; + const config = METHOD_CONFIGS[method]; + + if (!config) { + return args; + } + + if (config.captureArguments && config.argumentsField && params?.[config.argumentsField]) { + const argumentsObj = params[config.argumentsField]; + if (typeof argumentsObj === 'object' && argumentsObj !== null) { + for (const [key, value] of Object.entries(argumentsObj )) { + args[`${attributes.MCP_REQUEST_ARGUMENT}.${key.toLowerCase()}`] = JSON.stringify(value); + } + } + } + + if (config.captureUri && params?.uri) { + args[`${attributes.MCP_REQUEST_ARGUMENT}.uri`] = JSON.stringify(params.uri); + } + + if (config.captureName && params?.name) { + args[`${attributes.MCP_REQUEST_ARGUMENT}.name`] = JSON.stringify(params.name); + } + + return args; +} + +exports.extractTargetInfo = extractTargetInfo; +exports.getRequestArguments = getRequestArguments; +//# sourceMappingURL=methodConfig.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/methodConfig.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/methodConfig.js.map new file mode 100644 index 0000000..78cbd81 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/methodConfig.js.map @@ -0,0 +1 @@ +{"version":3,"file":"methodConfig.js","sources":["../../../../src/integrations/mcp-server/methodConfig.ts"],"sourcesContent":["/**\n * Method configuration and request processing for MCP server instrumentation\n */\n\nimport {\n MCP_PROMPT_NAME_ATTRIBUTE,\n MCP_REQUEST_ARGUMENT,\n MCP_RESOURCE_URI_ATTRIBUTE,\n MCP_TOOL_NAME_ATTRIBUTE,\n} from './attributes';\nimport type { MethodConfig } from './types';\n\n/**\n * Configuration for MCP methods to extract targets and arguments\n * @internal Maps method names to their extraction configuration\n */\nconst METHOD_CONFIGS: Record = {\n 'tools/call': {\n targetField: 'name',\n targetAttribute: MCP_TOOL_NAME_ATTRIBUTE,\n captureArguments: true,\n argumentsField: 'arguments',\n },\n 'resources/read': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n captureUri: true,\n },\n 'resources/subscribe': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n },\n 'resources/unsubscribe': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n },\n 'prompts/get': {\n targetField: 'name',\n targetAttribute: MCP_PROMPT_NAME_ATTRIBUTE,\n captureName: true,\n captureArguments: true,\n argumentsField: 'arguments',\n },\n};\n\n/**\n * Extracts target info from method and params based on method type\n * @param method - MCP method name\n * @param params - Method parameters\n * @returns Target name and attributes for span instrumentation\n */\nexport function extractTargetInfo(\n method: string,\n params: Record,\n): {\n target?: string;\n attributes: Record;\n} {\n const config = METHOD_CONFIGS[method];\n if (!config) {\n return { attributes: {} };\n }\n\n const target =\n config.targetField && typeof params?.[config.targetField] === 'string'\n ? (params[config.targetField] as string)\n : undefined;\n\n return {\n target,\n attributes: target && config.targetAttribute ? { [config.targetAttribute]: target } : {},\n };\n}\n\n/**\n * Extracts request arguments based on method type\n * @param method - MCP method name\n * @param params - Method parameters\n * @returns Arguments as span attributes with mcp.request.argument prefix\n */\nexport function getRequestArguments(method: string, params: Record): Record {\n const args: Record = {};\n const config = METHOD_CONFIGS[method];\n\n if (!config) {\n return args;\n }\n\n if (config.captureArguments && config.argumentsField && params?.[config.argumentsField]) {\n const argumentsObj = params[config.argumentsField];\n if (typeof argumentsObj === 'object' && argumentsObj !== null) {\n for (const [key, value] of Object.entries(argumentsObj as Record)) {\n args[`${MCP_REQUEST_ARGUMENT}.${key.toLowerCase()}`] = JSON.stringify(value);\n }\n }\n }\n\n if (config.captureUri && params?.uri) {\n args[`${MCP_REQUEST_ARGUMENT}.uri`] = JSON.stringify(params.uri);\n }\n\n if (config.captureName && params?.name) {\n args[`${MCP_REQUEST_ARGUMENT}.name`] = JSON.stringify(params.name);\n }\n\n return args;\n}\n"],"names":["MCP_TOOL_NAME_ATTRIBUTE","MCP_RESOURCE_URI_ATTRIBUTE","MCP_PROMPT_NAME_ATTRIBUTE","MCP_REQUEST_ARGUMENT"],"mappings":";;;;AAAA;AACA;AACA;;;AAUA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAiC;AACrD,EAAE,YAAY,EAAE;AAChB,IAAI,WAAW,EAAE,MAAM;AACvB,IAAI,eAAe,EAAEA,kCAAuB;AAC5C,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,cAAc,EAAE,WAAW;AAC/B,GAAG;AACH,EAAE,gBAAgB,EAAE;AACpB,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,eAAe,EAAEC,qCAA0B;AAC/C,IAAI,UAAU,EAAE,IAAI;AACpB,GAAG;AACH,EAAE,qBAAqB,EAAE;AACzB,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,eAAe,EAAEA,qCAA0B;AAC/C,GAAG;AACH,EAAE,uBAAuB,EAAE;AAC3B,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,eAAe,EAAEA,qCAA0B;AAC/C,GAAG;AACH,EAAE,aAAa,EAAE;AACjB,IAAI,WAAW,EAAE,MAAM;AACvB,IAAI,eAAe,EAAEC,oCAAyB;AAC9C,IAAI,WAAW,EAAE,IAAI;AACrB,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,cAAc,EAAE,WAAW;AAC/B,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB;AACjC,EAAE,MAAM;AACR,EAAE,MAAM;AACR;;AAGA,CAAE;AACF,EAAE,MAAM,MAAA,GAAS,cAAc,CAAC,MAAM,CAAC;AACvC,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,EAAE,UAAU,EAAE,IAAI;AAC7B,EAAE;;AAEF,EAAE,MAAM,MAAA;AACR,IAAI,MAAM,CAAC,WAAA,IAAe,OAAO,MAAM,GAAG,MAAM,CAAC,WAAW,CAAA,KAAM;AAClE,SAAS,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;AAClC,QAAQ,SAAS;;AAEjB,EAAE,OAAO;AACT,IAAI,MAAM;AACV,IAAI,UAAU,EAAE,MAAA,IAAU,MAAM,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,eAAe,GAAG,QAAO,GAAI,EAAE;AAC5F,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,MAAM,EAAU,MAAM,EAAmD;AAC7G,EAAE,MAAM,IAAI,GAA2B,EAAE;AACzC,EAAE,MAAM,MAAA,GAAS,cAAc,CAAC,MAAM,CAAC;;AAEvC,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF,EAAE,IAAI,MAAM,CAAC,gBAAA,IAAoB,MAAM,CAAC,cAAA,IAAkB,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE;AAC3F,IAAI,MAAM,eAAe,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;AACtD,IAAI,IAAI,OAAO,YAAA,KAAiB,YAAY,YAAA,KAAiB,IAAI,EAAE;AACnE,MAAM,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAA,IAAK,MAAM,CAAC,OAAO,CAAC,YAAA,EAAwC,EAAE;AAC1F,QAAQ,IAAI,CAAC,CAAC,EAAAC,+BAAA,CAAA,CAAA,EAAA,GAAA,CAAA,WAAA,EAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA,SAAA,CAAA,KAAA,CAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,IAAA,MAAA,CAAA,UAAA,IAAA,MAAA,EAAA,GAAA,EAAA;AACA,IAAA,IAAA,CAAA,CAAA,EAAAA,+BAAA,CAAA,IAAA,CAAA,CAAA,GAAA,IAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA;AACA,EAAA;;AAEA,EAAA,IAAA,MAAA,CAAA,WAAA,IAAA,MAAA,EAAA,IAAA,EAAA;AACA,IAAA,IAAA,CAAA,CAAA,EAAAA,+BAAA,CAAA,KAAA,CAAA,CAAA,GAAA,IAAA,CAAA,SAAA,CAAA,MAAA,CAAA,IAAA,CAAA;AACA,EAAA;;AAEA,EAAA,OAAA,IAAA;AACA;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/piiFiltering.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/piiFiltering.js new file mode 100644 index 0000000..eff3865 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/piiFiltering.js @@ -0,0 +1,53 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const attributes = require('./attributes.js'); + +/** + * Network PII attributes that should be removed when sendDefaultPii is false + * @internal + */ +const NETWORK_PII_ATTRIBUTES = new Set([attributes.CLIENT_ADDRESS_ATTRIBUTE, attributes.CLIENT_PORT_ATTRIBUTE, attributes.MCP_RESOURCE_URI_ATTRIBUTE]); + +/** + * Checks if an attribute key should be considered network PII. + * + * Returns true for: + * - client.address (IP address) + * - client.port (port number) + * - mcp.resource.uri (potentially sensitive URIs) + * + * @param key - Attribute key to evaluate + * @returns true if the attribute should be filtered out (is network PII), false if it should be preserved + * @internal + */ +function isNetworkPiiAttribute(key) { + return NETWORK_PII_ATTRIBUTES.has(key); +} + +/** + * Removes network PII attributes from span data when sendDefaultPii is false + * @param spanData - Raw span attributes + * @param sendDefaultPii - Whether to include PII data + * @returns Filtered span attributes + */ +function filterMcpPiiFromSpanData( + spanData, + sendDefaultPii, +) { + if (sendDefaultPii) { + return spanData ; + } + + return Object.entries(spanData).reduce( + (acc, [key, value]) => { + if (!isNetworkPiiAttribute(key)) { + acc[key] = value ; + } + return acc; + }, + {} , + ); +} + +exports.filterMcpPiiFromSpanData = filterMcpPiiFromSpanData; +//# sourceMappingURL=piiFiltering.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/piiFiltering.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/piiFiltering.js.map new file mode 100644 index 0000000..5a5cb20 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/piiFiltering.js.map @@ -0,0 +1 @@ +{"version":3,"file":"piiFiltering.js","sources":["../../../../src/integrations/mcp-server/piiFiltering.ts"],"sourcesContent":["/**\n * PII filtering for MCP server spans\n *\n * Removes network-level sensitive data when sendDefaultPii is false.\n * Input/output data (request arguments, tool/prompt results) is controlled\n * separately via recordInputs/recordOutputs options.\n */\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport { CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE } from './attributes';\n\n/**\n * Network PII attributes that should be removed when sendDefaultPii is false\n * @internal\n */\nconst NETWORK_PII_ATTRIBUTES = new Set([CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE]);\n\n/**\n * Checks if an attribute key should be considered network PII.\n *\n * Returns true for:\n * - client.address (IP address)\n * - client.port (port number)\n * - mcp.resource.uri (potentially sensitive URIs)\n *\n * @param key - Attribute key to evaluate\n * @returns true if the attribute should be filtered out (is network PII), false if it should be preserved\n * @internal\n */\nfunction isNetworkPiiAttribute(key: string): boolean {\n return NETWORK_PII_ATTRIBUTES.has(key);\n}\n\n/**\n * Removes network PII attributes from span data when sendDefaultPii is false\n * @param spanData - Raw span attributes\n * @param sendDefaultPii - Whether to include PII data\n * @returns Filtered span attributes\n */\nexport function filterMcpPiiFromSpanData(\n spanData: Record,\n sendDefaultPii: boolean,\n): Record {\n if (sendDefaultPii) {\n return spanData as Record;\n }\n\n return Object.entries(spanData).reduce(\n (acc, [key, value]) => {\n if (!isNetworkPiiAttribute(key)) {\n acc[key] = value as SpanAttributeValue;\n }\n return acc;\n },\n {} as Record,\n );\n}\n"],"names":["CLIENT_ADDRESS_ATTRIBUTE","CLIENT_PORT_ATTRIBUTE","MCP_RESOURCE_URI_ATTRIBUTE"],"mappings":";;;;AAUA;AACA;AACA;AACA;AACA,MAAM,sBAAA,GAAyB,IAAI,GAAG,CAAC,CAACA,mCAAwB,EAAEC,gCAAqB,EAAEC,qCAA0B,CAAC,CAAC;;AAErH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,GAAG,EAAmB;AACrD,EAAE,OAAO,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB;AACxC,EAAE,QAAQ;AACV,EAAE,cAAc;AAChB,EAAsC;AACtC,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,OAAO,QAAA;AACX,EAAE;;AAEF,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;AACxC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC3B,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE;AACvC,QAAQ,GAAG,CAAC,GAAG,CAAA,GAAI,KAAA;AACnB,MAAM;AACN,MAAM,OAAO,GAAG;AAChB,IAAI,CAAC;AACL,IAAI,EAAC;AACL,GAAG;AACH;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/resultExtraction.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/resultExtraction.js new file mode 100644 index 0000000..d6ef55b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/resultExtraction.js @@ -0,0 +1,147 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const attributes = require('./attributes.js'); +const validation = require('./validation.js'); + +/** + * Result extraction functions for MCP server instrumentation + * + * Handles extraction of attributes from tool and prompt execution results. + */ + + +/** + * Build attributes for tool result content items + * @param content - Array of content items from tool result + * @param includeContent - Whether to include actual content (text, URIs) or just metadata + * @returns Attributes extracted from each content item + */ +function buildAllContentItemAttributes( + content, + includeContent, +) { + const attributes$1 = { + [attributes.MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE]: content.length, + }; + + for (const [i, item] of content.entries()) { + if (!validation.isValidContentItem(item)) { + continue; + } + + const prefix = content.length === 1 ? 'mcp.tool.result' : `mcp.tool.result.${i}`; + + if (typeof item.type === 'string') { + attributes$1[`${prefix}.content_type`] = item.type; + } + + if (includeContent) { + const safeSet = (key, value) => { + if (typeof value === 'string') { + attributes$1[`${prefix}.${key}`] = value; + } + }; + + safeSet('mime_type', item.mimeType); + safeSet('uri', item.uri); + safeSet('name', item.name); + + if (typeof item.text === 'string') { + attributes$1[`${prefix}.content`] = item.text; + } + + if (typeof item.data === 'string') { + attributes$1[`${prefix}.data_size`] = item.data.length; + } + + const resource = item.resource; + if (validation.isValidContentItem(resource)) { + safeSet('resource_uri', resource.uri); + safeSet('resource_mime_type', resource.mimeType); + } + } + } + + return attributes$1; +} + +/** + * Extract tool result attributes for span instrumentation + * @param result - Tool execution result + * @param recordOutputs - Whether to include actual content or just metadata (counts, error status) + * @returns Attributes extracted from tool result content + */ +function extractToolResultAttributes( + result, + recordOutputs, +) { + if (!validation.isValidContentItem(result)) { + return {}; + } + + const attributes$1 = Array.isArray(result.content) ? buildAllContentItemAttributes(result.content, recordOutputs) : {}; + + if (typeof result.isError === 'boolean') { + attributes$1[attributes.MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE] = result.isError; + } + + return attributes$1; +} + +/** + * Extract prompt result attributes for span instrumentation + * @param result - Prompt execution result + * @param recordOutputs - Whether to include actual content or just metadata (counts) + * @returns Attributes extracted from prompt result + */ +function extractPromptResultAttributes( + result, + recordOutputs, +) { + const attributes$1 = {}; + if (!validation.isValidContentItem(result)) { + return attributes$1; + } + + if (recordOutputs && typeof result.description === 'string') { + attributes$1[attributes.MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE] = result.description; + } + + if (Array.isArray(result.messages)) { + attributes$1[attributes.MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE] = result.messages.length; + + if (recordOutputs) { + const messages = result.messages; + for (const [i, message] of messages.entries()) { + if (!validation.isValidContentItem(message)) { + continue; + } + + const prefix = messages.length === 1 ? 'mcp.prompt.result' : `mcp.prompt.result.${i}`; + + const safeSet = (key, value) => { + if (typeof value === 'string') { + const attrName = messages.length === 1 ? `${prefix}.message_${key}` : `${prefix}.${key}`; + attributes$1[attrName] = value; + } + }; + + safeSet('role', message.role); + + if (validation.isValidContentItem(message.content)) { + const content = message.content; + if (typeof content.text === 'string') { + const attrName = messages.length === 1 ? `${prefix}.message_content` : `${prefix}.content`; + attributes$1[attrName] = content.text; + } + } + } + } + } + + return attributes$1; +} + +exports.extractPromptResultAttributes = extractPromptResultAttributes; +exports.extractToolResultAttributes = extractToolResultAttributes; +//# sourceMappingURL=resultExtraction.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/resultExtraction.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/resultExtraction.js.map new file mode 100644 index 0000000..194c5d9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/resultExtraction.js.map @@ -0,0 +1 @@ +{"version":3,"file":"resultExtraction.js","sources":["../../../../src/integrations/mcp-server/resultExtraction.ts"],"sourcesContent":["/**\n * Result extraction functions for MCP server instrumentation\n *\n * Handles extraction of attributes from tool and prompt execution results.\n */\n\nimport {\n MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE,\n MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE,\n MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE,\n MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE,\n} from './attributes';\nimport { isValidContentItem } from './validation';\n\n/**\n * Build attributes for tool result content items\n * @param content - Array of content items from tool result\n * @param includeContent - Whether to include actual content (text, URIs) or just metadata\n * @returns Attributes extracted from each content item\n */\nfunction buildAllContentItemAttributes(\n content: unknown[],\n includeContent: boolean,\n): Record {\n const attributes: Record = {\n [MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE]: content.length,\n };\n\n for (const [i, item] of content.entries()) {\n if (!isValidContentItem(item)) {\n continue;\n }\n\n const prefix = content.length === 1 ? 'mcp.tool.result' : `mcp.tool.result.${i}`;\n\n if (typeof item.type === 'string') {\n attributes[`${prefix}.content_type`] = item.type;\n }\n\n if (includeContent) {\n const safeSet = (key: string, value: unknown): void => {\n if (typeof value === 'string') {\n attributes[`${prefix}.${key}`] = value;\n }\n };\n\n safeSet('mime_type', item.mimeType);\n safeSet('uri', item.uri);\n safeSet('name', item.name);\n\n if (typeof item.text === 'string') {\n attributes[`${prefix}.content`] = item.text;\n }\n\n if (typeof item.data === 'string') {\n attributes[`${prefix}.data_size`] = item.data.length;\n }\n\n const resource = item.resource;\n if (isValidContentItem(resource)) {\n safeSet('resource_uri', resource.uri);\n safeSet('resource_mime_type', resource.mimeType);\n }\n }\n }\n\n return attributes;\n}\n\n/**\n * Extract tool result attributes for span instrumentation\n * @param result - Tool execution result\n * @param recordOutputs - Whether to include actual content or just metadata (counts, error status)\n * @returns Attributes extracted from tool result content\n */\nexport function extractToolResultAttributes(\n result: unknown,\n recordOutputs: boolean,\n): Record {\n if (!isValidContentItem(result)) {\n return {};\n }\n\n const attributes = Array.isArray(result.content) ? buildAllContentItemAttributes(result.content, recordOutputs) : {};\n\n if (typeof result.isError === 'boolean') {\n attributes[MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE] = result.isError;\n }\n\n return attributes;\n}\n\n/**\n * Extract prompt result attributes for span instrumentation\n * @param result - Prompt execution result\n * @param recordOutputs - Whether to include actual content or just metadata (counts)\n * @returns Attributes extracted from prompt result\n */\nexport function extractPromptResultAttributes(\n result: unknown,\n recordOutputs: boolean,\n): Record {\n const attributes: Record = {};\n if (!isValidContentItem(result)) {\n return attributes;\n }\n\n if (recordOutputs && typeof result.description === 'string') {\n attributes[MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE] = result.description;\n }\n\n if (Array.isArray(result.messages)) {\n attributes[MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE] = result.messages.length;\n\n if (recordOutputs) {\n const messages = result.messages;\n for (const [i, message] of messages.entries()) {\n if (!isValidContentItem(message)) {\n continue;\n }\n\n const prefix = messages.length === 1 ? 'mcp.prompt.result' : `mcp.prompt.result.${i}`;\n\n const safeSet = (key: string, value: unknown): void => {\n if (typeof value === 'string') {\n const attrName = messages.length === 1 ? `${prefix}.message_${key}` : `${prefix}.${key}`;\n attributes[attrName] = value;\n }\n };\n\n safeSet('role', message.role);\n\n if (isValidContentItem(message.content)) {\n const content = message.content;\n if (typeof content.text === 'string') {\n const attrName = messages.length === 1 ? `${prefix}.message_content` : `${prefix}.content`;\n attributes[attrName] = content.text;\n }\n }\n }\n }\n }\n\n return attributes;\n}\n"],"names":["attributes","MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE","isValidContentItem","MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE","MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE","MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionExtraction.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionExtraction.js new file mode 100644 index 0000000..1ff3774 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionExtraction.js @@ -0,0 +1,244 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const attributes = require('./attributes.js'); +const sessionManagement = require('./sessionManagement.js'); +const validation = require('./validation.js'); + +/** + * Session and party info extraction functions for MCP server instrumentation + * + * Handles extraction of client/server info and session data from MCP messages. + */ + + +/** + * Extracts and validates PartyInfo from an unknown object + * @param obj - Unknown object that might contain party info + * @returns Validated PartyInfo object with only string properties + */ +function extractPartyInfo(obj) { + const partyInfo = {}; + + if (validation.isValidContentItem(obj)) { + if (typeof obj.name === 'string') { + partyInfo.name = obj.name; + } + if (typeof obj.title === 'string') { + partyInfo.title = obj.title; + } + if (typeof obj.version === 'string') { + partyInfo.version = obj.version; + } + } + + return partyInfo; +} + +/** + * Extracts session data from "initialize" requests + * @param request - JSON-RPC "initialize" request containing client info and protocol version + * @returns Session data extracted from request parameters including protocol version and client info + */ +function extractSessionDataFromInitializeRequest(request) { + const sessionData = {}; + if (validation.isValidContentItem(request.params)) { + if (typeof request.params.protocolVersion === 'string') { + sessionData.protocolVersion = request.params.protocolVersion; + } + if (request.params.clientInfo) { + sessionData.clientInfo = extractPartyInfo(request.params.clientInfo); + } + } + return sessionData; +} + +/** + * Extracts session data from "initialize" response + * @param result - "initialize" response result containing server info and protocol version + * @returns Partial session data extracted from response including protocol version and server info + */ +function extractSessionDataFromInitializeResponse(result) { + const sessionData = {}; + if (validation.isValidContentItem(result)) { + if (typeof result.protocolVersion === 'string') { + sessionData.protocolVersion = result.protocolVersion; + } + if (result.serverInfo) { + sessionData.serverInfo = extractPartyInfo(result.serverInfo); + } + } + return sessionData; +} + +/** + * Build client attributes from stored client info + * @param transport - MCP transport instance + * @returns Client attributes for span instrumentation + */ +function getClientAttributes(transport) { + const clientInfo = sessionManagement.getClientInfoForTransport(transport); + const attributes = {}; + + if (clientInfo?.name) { + attributes['mcp.client.name'] = clientInfo.name; + } + if (clientInfo?.title) { + attributes['mcp.client.title'] = clientInfo.title; + } + if (clientInfo?.version) { + attributes['mcp.client.version'] = clientInfo.version; + } + + return attributes; +} + +/** + * Build client attributes from PartyInfo directly + * @param clientInfo - Client party info + * @returns Client attributes for span instrumentation + */ +function buildClientAttributesFromInfo(clientInfo) { + const attributes = {}; + + if (clientInfo?.name) { + attributes['mcp.client.name'] = clientInfo.name; + } + if (clientInfo?.title) { + attributes['mcp.client.title'] = clientInfo.title; + } + if (clientInfo?.version) { + attributes['mcp.client.version'] = clientInfo.version; + } + + return attributes; +} + +/** + * Build server attributes from stored server info + * @param transport - MCP transport instance + * @returns Server attributes for span instrumentation + */ +function getServerAttributes(transport) { + const serverInfo = sessionManagement.getSessionDataForTransport(transport)?.serverInfo; + const attributes$1 = {}; + + if (serverInfo?.name) { + attributes$1[attributes.MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name; + } + if (serverInfo?.title) { + attributes$1[attributes.MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title; + } + if (serverInfo?.version) { + attributes$1[attributes.MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version; + } + + return attributes$1; +} + +/** + * Build server attributes from PartyInfo directly + * @param serverInfo - Server party info + * @returns Server attributes for span instrumentation + */ +function buildServerAttributesFromInfo(serverInfo) { + const attributes$1 = {}; + + if (serverInfo?.name) { + attributes$1[attributes.MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name; + } + if (serverInfo?.title) { + attributes$1[attributes.MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title; + } + if (serverInfo?.version) { + attributes$1[attributes.MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version; + } + + return attributes$1; +} + +/** + * Extracts client connection info from extra handler data + * @param extra - Extra handler data containing connection info + * @returns Client address and port information + */ +function extractClientInfo(extra) + + { + return { + address: + extra?.requestInfo?.remoteAddress || + extra?.clientAddress || + extra?.request?.ip || + extra?.request?.connection?.remoteAddress, + port: extra?.requestInfo?.remotePort || extra?.clientPort || extra?.request?.connection?.remotePort, + }; +} + +/** + * Extracts transport types based on transport constructor name + * @param transport - MCP transport instance + * @returns Transport type mapping for span attributes + */ +function getTransportTypes(transport) { + if (!transport?.constructor) { + return { mcpTransport: 'unknown', networkTransport: 'unknown' }; + } + const transportName = typeof transport.constructor?.name === 'string' ? transport.constructor.name : 'unknown'; + let networkTransport = 'unknown'; + + const lowerTransportName = transportName.toLowerCase(); + if (lowerTransportName.includes('stdio')) { + networkTransport = 'pipe'; + } else if (lowerTransportName.includes('http') || lowerTransportName.includes('sse')) { + networkTransport = 'tcp'; + } + + return { + mcpTransport: transportName, + networkTransport, + }; +} + +/** + * Build transport and network attributes + * @param transport - MCP transport instance + * @param extra - Optional extra handler data + * @returns Transport attributes for span instrumentation + * @note sessionId may be undefined during initial setup - session should be established by client during initialize flow + */ +function buildTransportAttributes( + transport, + extra, +) { + const sessionId = transport && 'sessionId' in transport ? transport.sessionId : undefined; + const clientInfo = extra ? extractClientInfo(extra) : {}; + const { mcpTransport, networkTransport } = getTransportTypes(transport); + const clientAttributes = getClientAttributes(transport); + const serverAttributes = getServerAttributes(transport); + const protocolVersion = sessionManagement.getProtocolVersionForTransport(transport); + + const attributes$1 = { + ...(sessionId && { [attributes.MCP_SESSION_ID_ATTRIBUTE]: sessionId }), + ...(clientInfo.address && { [attributes.CLIENT_ADDRESS_ATTRIBUTE]: clientInfo.address }), + ...(clientInfo.port && { [attributes.CLIENT_PORT_ATTRIBUTE]: clientInfo.port }), + [attributes.MCP_TRANSPORT_ATTRIBUTE]: mcpTransport, + [attributes.NETWORK_TRANSPORT_ATTRIBUTE]: networkTransport, + [attributes.NETWORK_PROTOCOL_VERSION_ATTRIBUTE]: '2.0', + ...(protocolVersion && { [attributes.MCP_PROTOCOL_VERSION_ATTRIBUTE]: protocolVersion }), + ...clientAttributes, + ...serverAttributes, + }; + + return attributes$1; +} + +exports.buildClientAttributesFromInfo = buildClientAttributesFromInfo; +exports.buildServerAttributesFromInfo = buildServerAttributesFromInfo; +exports.buildTransportAttributes = buildTransportAttributes; +exports.extractClientInfo = extractClientInfo; +exports.extractSessionDataFromInitializeRequest = extractSessionDataFromInitializeRequest; +exports.extractSessionDataFromInitializeResponse = extractSessionDataFromInitializeResponse; +exports.getClientAttributes = getClientAttributes; +exports.getServerAttributes = getServerAttributes; +exports.getTransportTypes = getTransportTypes; +//# sourceMappingURL=sessionExtraction.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionExtraction.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionExtraction.js.map new file mode 100644 index 0000000..b5a45eb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionExtraction.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sessionExtraction.js","sources":["../../../../src/integrations/mcp-server/sessionExtraction.ts"],"sourcesContent":["/**\n * Session and party info extraction functions for MCP server instrumentation\n *\n * Handles extraction of client/server info and session data from MCP messages.\n */\n\nimport {\n CLIENT_ADDRESS_ATTRIBUTE,\n CLIENT_PORT_ATTRIBUTE,\n MCP_PROTOCOL_VERSION_ATTRIBUTE,\n MCP_SERVER_NAME_ATTRIBUTE,\n MCP_SERVER_TITLE_ATTRIBUTE,\n MCP_SERVER_VERSION_ATTRIBUTE,\n MCP_SESSION_ID_ATTRIBUTE,\n MCP_TRANSPORT_ATTRIBUTE,\n NETWORK_PROTOCOL_VERSION_ATTRIBUTE,\n NETWORK_TRANSPORT_ATTRIBUTE,\n} from './attributes';\nimport {\n getClientInfoForTransport,\n getProtocolVersionForTransport,\n getSessionDataForTransport,\n} from './sessionManagement';\nimport type { ExtraHandlerData, JsonRpcRequest, MCPTransport, PartyInfo, SessionData } from './types';\nimport { isValidContentItem } from './validation';\n\n/**\n * Extracts and validates PartyInfo from an unknown object\n * @param obj - Unknown object that might contain party info\n * @returns Validated PartyInfo object with only string properties\n */\nfunction extractPartyInfo(obj: unknown): PartyInfo {\n const partyInfo: PartyInfo = {};\n\n if (isValidContentItem(obj)) {\n if (typeof obj.name === 'string') {\n partyInfo.name = obj.name;\n }\n if (typeof obj.title === 'string') {\n partyInfo.title = obj.title;\n }\n if (typeof obj.version === 'string') {\n partyInfo.version = obj.version;\n }\n }\n\n return partyInfo;\n}\n\n/**\n * Extracts session data from \"initialize\" requests\n * @param request - JSON-RPC \"initialize\" request containing client info and protocol version\n * @returns Session data extracted from request parameters including protocol version and client info\n */\nexport function extractSessionDataFromInitializeRequest(request: JsonRpcRequest): SessionData {\n const sessionData: SessionData = {};\n if (isValidContentItem(request.params)) {\n if (typeof request.params.protocolVersion === 'string') {\n sessionData.protocolVersion = request.params.protocolVersion;\n }\n if (request.params.clientInfo) {\n sessionData.clientInfo = extractPartyInfo(request.params.clientInfo);\n }\n }\n return sessionData;\n}\n\n/**\n * Extracts session data from \"initialize\" response\n * @param result - \"initialize\" response result containing server info and protocol version\n * @returns Partial session data extracted from response including protocol version and server info\n */\nexport function extractSessionDataFromInitializeResponse(result: unknown): Partial {\n const sessionData: Partial = {};\n if (isValidContentItem(result)) {\n if (typeof result.protocolVersion === 'string') {\n sessionData.protocolVersion = result.protocolVersion;\n }\n if (result.serverInfo) {\n sessionData.serverInfo = extractPartyInfo(result.serverInfo);\n }\n }\n return sessionData;\n}\n\n/**\n * Build client attributes from stored client info\n * @param transport - MCP transport instance\n * @returns Client attributes for span instrumentation\n */\nexport function getClientAttributes(transport: MCPTransport): Record {\n const clientInfo = getClientInfoForTransport(transport);\n const attributes: Record = {};\n\n if (clientInfo?.name) {\n attributes['mcp.client.name'] = clientInfo.name;\n }\n if (clientInfo?.title) {\n attributes['mcp.client.title'] = clientInfo.title;\n }\n if (clientInfo?.version) {\n attributes['mcp.client.version'] = clientInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build client attributes from PartyInfo directly\n * @param clientInfo - Client party info\n * @returns Client attributes for span instrumentation\n */\nexport function buildClientAttributesFromInfo(clientInfo?: PartyInfo): Record {\n const attributes: Record = {};\n\n if (clientInfo?.name) {\n attributes['mcp.client.name'] = clientInfo.name;\n }\n if (clientInfo?.title) {\n attributes['mcp.client.title'] = clientInfo.title;\n }\n if (clientInfo?.version) {\n attributes['mcp.client.version'] = clientInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build server attributes from stored server info\n * @param transport - MCP transport instance\n * @returns Server attributes for span instrumentation\n */\nexport function getServerAttributes(transport: MCPTransport): Record {\n const serverInfo = getSessionDataForTransport(transport)?.serverInfo;\n const attributes: Record = {};\n\n if (serverInfo?.name) {\n attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name;\n }\n if (serverInfo?.title) {\n attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title;\n }\n if (serverInfo?.version) {\n attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build server attributes from PartyInfo directly\n * @param serverInfo - Server party info\n * @returns Server attributes for span instrumentation\n */\nexport function buildServerAttributesFromInfo(serverInfo?: PartyInfo): Record {\n const attributes: Record = {};\n\n if (serverInfo?.name) {\n attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name;\n }\n if (serverInfo?.title) {\n attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title;\n }\n if (serverInfo?.version) {\n attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Extracts client connection info from extra handler data\n * @param extra - Extra handler data containing connection info\n * @returns Client address and port information\n */\nexport function extractClientInfo(extra: ExtraHandlerData): {\n address?: string;\n port?: number;\n} {\n return {\n address:\n extra?.requestInfo?.remoteAddress ||\n extra?.clientAddress ||\n extra?.request?.ip ||\n extra?.request?.connection?.remoteAddress,\n port: extra?.requestInfo?.remotePort || extra?.clientPort || extra?.request?.connection?.remotePort,\n };\n}\n\n/**\n * Extracts transport types based on transport constructor name\n * @param transport - MCP transport instance\n * @returns Transport type mapping for span attributes\n */\nexport function getTransportTypes(transport: MCPTransport): { mcpTransport: string; networkTransport: string } {\n if (!transport?.constructor) {\n return { mcpTransport: 'unknown', networkTransport: 'unknown' };\n }\n const transportName = typeof transport.constructor?.name === 'string' ? transport.constructor.name : 'unknown';\n let networkTransport = 'unknown';\n\n const lowerTransportName = transportName.toLowerCase();\n if (lowerTransportName.includes('stdio')) {\n networkTransport = 'pipe';\n } else if (lowerTransportName.includes('http') || lowerTransportName.includes('sse')) {\n networkTransport = 'tcp';\n }\n\n return {\n mcpTransport: transportName,\n networkTransport,\n };\n}\n\n/**\n * Build transport and network attributes\n * @param transport - MCP transport instance\n * @param extra - Optional extra handler data\n * @returns Transport attributes for span instrumentation\n * @note sessionId may be undefined during initial setup - session should be established by client during initialize flow\n */\nexport function buildTransportAttributes(\n transport: MCPTransport,\n extra?: ExtraHandlerData,\n): Record {\n const sessionId = transport && 'sessionId' in transport ? transport.sessionId : undefined;\n const clientInfo = extra ? extractClientInfo(extra) : {};\n const { mcpTransport, networkTransport } = getTransportTypes(transport);\n const clientAttributes = getClientAttributes(transport);\n const serverAttributes = getServerAttributes(transport);\n const protocolVersion = getProtocolVersionForTransport(transport);\n\n const attributes = {\n ...(sessionId && { [MCP_SESSION_ID_ATTRIBUTE]: sessionId }),\n ...(clientInfo.address && { [CLIENT_ADDRESS_ATTRIBUTE]: clientInfo.address }),\n ...(clientInfo.port && { [CLIENT_PORT_ATTRIBUTE]: clientInfo.port }),\n [MCP_TRANSPORT_ATTRIBUTE]: mcpTransport,\n [NETWORK_TRANSPORT_ATTRIBUTE]: networkTransport,\n [NETWORK_PROTOCOL_VERSION_ATTRIBUTE]: '2.0',\n ...(protocolVersion && { [MCP_PROTOCOL_VERSION_ATTRIBUTE]: protocolVersion }),\n ...clientAttributes,\n ...serverAttributes,\n };\n\n return attributes;\n}\n"],"names":["isValidContentItem","getClientInfoForTransport","getSessionDataForTransport","attributes","MCP_SERVER_NAME_ATTRIBUTE","MCP_SERVER_TITLE_ATTRIBUTE","MCP_SERVER_VERSION_ATTRIBUTE","getProtocolVersionForTransport","MCP_SESSION_ID_ATTRIBUTE","CLIENT_ADDRESS_ATTRIBUTE","CLIENT_PORT_ATTRIBUTE","MCP_TRANSPORT_ATTRIBUTE","NETWORK_TRANSPORT_ATTRIBUTE","NETWORK_PROTOCOL_VERSION_ATTRIBUTE","MCP_PROTOCOL_VERSION_ATTRIBUTE"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionManagement.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionManagement.js new file mode 100644 index 0000000..efbb1c4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionManagement.js @@ -0,0 +1,73 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Transport-scoped session data storage (only for transports with sessionId) + * @internal Maps transport instances to session-level data + */ +const transportToSessionData = new WeakMap(); + +/** + * Stores session data for a transport with sessionId + * @param transport - MCP transport instance + * @param sessionData - Session data to store + */ +function storeSessionDataForTransport(transport, sessionData) { + if (transport.sessionId) { + transportToSessionData.set(transport, sessionData); + } +} + +/** + * Updates session data for a transport with sessionId (merges with existing data) + * @param transport - MCP transport instance + * @param partialSessionData - Partial session data to merge with existing data + */ +function updateSessionDataForTransport(transport, partialSessionData) { + if (transport.sessionId) { + const existingData = transportToSessionData.get(transport) || {}; + transportToSessionData.set(transport, { ...existingData, ...partialSessionData }); + } +} + +/** + * Retrieves client information for a transport + * @param transport - MCP transport instance + * @returns Client information if available + */ +function getClientInfoForTransport(transport) { + return transportToSessionData.get(transport)?.clientInfo; +} + +/** + * Retrieves protocol version for a transport + * @param transport - MCP transport instance + * @returns Protocol version if available + */ +function getProtocolVersionForTransport(transport) { + return transportToSessionData.get(transport)?.protocolVersion; +} + +/** + * Retrieves full session data for a transport + * @param transport - MCP transport instance + * @returns Complete session data if available + */ +function getSessionDataForTransport(transport) { + return transportToSessionData.get(transport); +} + +/** + * Cleans up session data for a specific transport (when that transport closes) + * @param transport - MCP transport instance + */ +function cleanupSessionDataForTransport(transport) { + transportToSessionData.delete(transport); +} + +exports.cleanupSessionDataForTransport = cleanupSessionDataForTransport; +exports.getClientInfoForTransport = getClientInfoForTransport; +exports.getProtocolVersionForTransport = getProtocolVersionForTransport; +exports.getSessionDataForTransport = getSessionDataForTransport; +exports.storeSessionDataForTransport = storeSessionDataForTransport; +exports.updateSessionDataForTransport = updateSessionDataForTransport; +//# sourceMappingURL=sessionManagement.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionManagement.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionManagement.js.map new file mode 100644 index 0000000..f6906e9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/sessionManagement.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sessionManagement.js","sources":["../../../../src/integrations/mcp-server/sessionManagement.ts"],"sourcesContent":["/**\n * Session data management for MCP server instrumentation\n */\n\nimport type { MCPTransport, PartyInfo, SessionData } from './types';\n\n/**\n * Transport-scoped session data storage (only for transports with sessionId)\n * @internal Maps transport instances to session-level data\n */\nconst transportToSessionData = new WeakMap();\n\n/**\n * Stores session data for a transport with sessionId\n * @param transport - MCP transport instance\n * @param sessionData - Session data to store\n */\nexport function storeSessionDataForTransport(transport: MCPTransport, sessionData: SessionData): void {\n if (transport.sessionId) {\n transportToSessionData.set(transport, sessionData);\n }\n}\n\n/**\n * Updates session data for a transport with sessionId (merges with existing data)\n * @param transport - MCP transport instance\n * @param partialSessionData - Partial session data to merge with existing data\n */\nexport function updateSessionDataForTransport(transport: MCPTransport, partialSessionData: Partial): void {\n if (transport.sessionId) {\n const existingData = transportToSessionData.get(transport) || {};\n transportToSessionData.set(transport, { ...existingData, ...partialSessionData });\n }\n}\n\n/**\n * Retrieves client information for a transport\n * @param transport - MCP transport instance\n * @returns Client information if available\n */\nexport function getClientInfoForTransport(transport: MCPTransport): PartyInfo | undefined {\n return transportToSessionData.get(transport)?.clientInfo;\n}\n\n/**\n * Retrieves protocol version for a transport\n * @param transport - MCP transport instance\n * @returns Protocol version if available\n */\nexport function getProtocolVersionForTransport(transport: MCPTransport): string | undefined {\n return transportToSessionData.get(transport)?.protocolVersion;\n}\n\n/**\n * Retrieves full session data for a transport\n * @param transport - MCP transport instance\n * @returns Complete session data if available\n */\nexport function getSessionDataForTransport(transport: MCPTransport): SessionData | undefined {\n return transportToSessionData.get(transport);\n}\n\n/**\n * Cleans up session data for a specific transport (when that transport closes)\n * @param transport - MCP transport instance\n */\nexport function cleanupSessionDataForTransport(transport: MCPTransport): void {\n transportToSessionData.delete(transport);\n}\n"],"names":[],"mappings":";;AAMA;AACA;AACA;AACA;AACA,MAAM,sBAAA,GAAyB,IAAI,OAAO,EAA6B;;AAEvE;AACA;AACA;AACA;AACA;AACO,SAAS,4BAA4B,CAAC,SAAS,EAAgB,WAAW,EAAqB;AACtG,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE;AAC3B,IAAI,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC;AACtD,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,6BAA6B,CAAC,SAAS,EAAgB,kBAAkB,EAA8B;AACvH,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE;AAC3B,IAAI,MAAM,YAAA,GAAe,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAA,IAAK,EAAE;AACpE,IAAI,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,kBAAA,EAAoB,CAAC;AACrF,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,SAAS,EAAuC;AAC1F,EAAE,OAAO,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,UAAU;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,CAAC,SAAS,EAAoC;AAC5F,EAAE,OAAO,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,eAAe;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,0BAA0B,CAAC,SAAS,EAAyC;AAC7F,EAAE,OAAO,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9C;;AAEA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,CAAC,SAAS,EAAsB;AAC9E,EAAE,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC;AAC1C;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/spans.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/spans.js new file mode 100644 index 0000000..55a6383 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/spans.js @@ -0,0 +1,198 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../../currentScopes.js'); +const semanticAttributes = require('../../semanticAttributes.js'); +const trace = require('../../tracing/trace.js'); +const attributeExtraction = require('./attributeExtraction.js'); +const attributes = require('./attributes.js'); +const methodConfig = require('./methodConfig.js'); +const piiFiltering = require('./piiFiltering.js'); +const sessionExtraction = require('./sessionExtraction.js'); + +/** + * Span creation and management functions for MCP server instrumentation + * + * Provides unified span creation following OpenTelemetry MCP semantic conventions and our opinitionated take on MCP. + * Handles both request and notification spans with attribute extraction. + */ + + +/** + * Creates a span name based on the method and target + * @internal + * @param method - MCP method name + * @param target - Optional target identifier + * @returns Formatted span name + */ +function createSpanName(method, target) { + return target ? `${method} ${target}` : method; +} + +/** + * Build Sentry-specific attributes based on span type + * @internal + * @param type - Span type configuration + * @returns Sentry-specific attributes + */ +function buildSentryAttributes(type) { + let op; + let origin; + + switch (type) { + case 'request': + op = attributes.MCP_SERVER_OP_VALUE; + origin = attributes.MCP_FUNCTION_ORIGIN_VALUE; + break; + case 'notification-incoming': + op = attributes.MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE; + origin = attributes.MCP_NOTIFICATION_ORIGIN_VALUE; + break; + case 'notification-outgoing': + op = attributes.MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE; + origin = attributes.MCP_NOTIFICATION_ORIGIN_VALUE; + break; + } + + return { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: op, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: attributes.MCP_ROUTE_SOURCE_VALUE, + }; +} + +/** + * Unified builder for creating MCP spans + * @internal + * @param config - Span configuration + * @returns Created span + */ +function createMcpSpan(config) { + const { type, message, transport, extra, callback, options } = config; + const { method } = message; + const params = message.params; + + // Determine span name based on type and OTEL conventions + let spanName; + if (type === 'request') { + const targetInfo = methodConfig.extractTargetInfo(method, params || {}); + spanName = createSpanName(method, targetInfo.target); + } else { + // For notifications, use method name directly per OpenTelemetry conventions + spanName = method; + } + + const rawAttributes = { + ...sessionExtraction.buildTransportAttributes(transport, extra), + [attributes.MCP_METHOD_NAME_ATTRIBUTE]: method, + ...attributeExtraction.buildTypeSpecificAttributes(type, message, params, options?.recordInputs), + ...buildSentryAttributes(type), + }; + + const client = currentScopes.getClient(); + const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii); + const attributes$1 = piiFiltering.filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) ; + + return trace.startSpan( + { + name: spanName, + forceTransaction: true, + attributes: attributes$1, + }, + callback, + ); +} + +/** + * Creates a span for incoming MCP notifications + * @param jsonRpcMessage - Notification message + * @param transport - MCP transport instance + * @param extra - Extra handler data + * @param options - Resolved MCP options + * @param callback - Span execution callback + * @returns Span execution result + */ +function createMcpNotificationSpan( + jsonRpcMessage, + transport, + extra, + options, + callback, +) { + return createMcpSpan({ + type: 'notification-incoming', + message: jsonRpcMessage, + transport, + extra, + callback, + options, + }); +} + +/** + * Creates a span for outgoing MCP notifications + * @param jsonRpcMessage - Notification message + * @param transport - MCP transport instance + * @param options - Resolved MCP options + * @param callback - Span execution callback + * @returns Span execution result + */ +function createMcpOutgoingNotificationSpan( + jsonRpcMessage, + transport, + options, + callback, +) { + return createMcpSpan({ + type: 'notification-outgoing', + message: jsonRpcMessage, + transport, + options, + callback, + }); +} + +/** + * Builds span configuration for MCP server requests + * @param jsonRpcMessage - Request message + * @param transport - MCP transport instance + * @param extra - Optional extra handler data + * @param options - Resolved MCP options + * @returns Span configuration object + */ +function buildMcpServerSpanConfig( + jsonRpcMessage, + transport, + extra, + options, +) + + { + const { method } = jsonRpcMessage; + const params = jsonRpcMessage.params; + + const targetInfo = methodConfig.extractTargetInfo(method, params || {}); + const spanName = createSpanName(method, targetInfo.target); + + const rawAttributes = { + ...sessionExtraction.buildTransportAttributes(transport, extra), + [attributes.MCP_METHOD_NAME_ATTRIBUTE]: method, + ...attributeExtraction.buildTypeSpecificAttributes('request', jsonRpcMessage, params, options?.recordInputs), + ...buildSentryAttributes('request'), + }; + + const client = currentScopes.getClient(); + const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii); + const attributes$1 = piiFiltering.filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) ; + + return { + name: spanName, + op: attributes.MCP_SERVER_OP_VALUE, + forceTransaction: true, + attributes: attributes$1, + }; +} + +exports.buildMcpServerSpanConfig = buildMcpServerSpanConfig; +exports.createMcpNotificationSpan = createMcpNotificationSpan; +exports.createMcpOutgoingNotificationSpan = createMcpOutgoingNotificationSpan; +//# sourceMappingURL=spans.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/spans.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/spans.js.map new file mode 100644 index 0000000..f2aff3f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/spans.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spans.js","sources":["../../../../src/integrations/mcp-server/spans.ts"],"sourcesContent":["/**\n * Span creation and management functions for MCP server instrumentation\n *\n * Provides unified span creation following OpenTelemetry MCP semantic conventions and our opinitionated take on MCP.\n * Handles both request and notification spans with attribute extraction.\n */\n\nimport { getClient } from '../../currentScopes';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../../semanticAttributes';\nimport { startSpan } from '../../tracing';\nimport { buildTransportAttributes, buildTypeSpecificAttributes } from './attributeExtraction';\nimport {\n MCP_FUNCTION_ORIGIN_VALUE,\n MCP_METHOD_NAME_ATTRIBUTE,\n MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE,\n MCP_NOTIFICATION_ORIGIN_VALUE,\n MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE,\n MCP_ROUTE_SOURCE_VALUE,\n MCP_SERVER_OP_VALUE,\n} from './attributes';\nimport { extractTargetInfo } from './methodConfig';\nimport { filterMcpPiiFromSpanData } from './piiFiltering';\nimport type {\n ExtraHandlerData,\n JsonRpcNotification,\n JsonRpcRequest,\n McpSpanConfig,\n MCPTransport,\n ResolvedMcpOptions,\n} from './types';\n\n/**\n * Creates a span name based on the method and target\n * @internal\n * @param method - MCP method name\n * @param target - Optional target identifier\n * @returns Formatted span name\n */\nfunction createSpanName(method: string, target?: string): string {\n return target ? `${method} ${target}` : method;\n}\n\n/**\n * Build Sentry-specific attributes based on span type\n * @internal\n * @param type - Span type configuration\n * @returns Sentry-specific attributes\n */\nfunction buildSentryAttributes(type: McpSpanConfig['type']): Record {\n let op: string;\n let origin: string;\n\n switch (type) {\n case 'request':\n op = MCP_SERVER_OP_VALUE;\n origin = MCP_FUNCTION_ORIGIN_VALUE;\n break;\n case 'notification-incoming':\n op = MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE;\n origin = MCP_NOTIFICATION_ORIGIN_VALUE;\n break;\n case 'notification-outgoing':\n op = MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE;\n origin = MCP_NOTIFICATION_ORIGIN_VALUE;\n break;\n }\n\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: MCP_ROUTE_SOURCE_VALUE,\n };\n}\n\n/**\n * Unified builder for creating MCP spans\n * @internal\n * @param config - Span configuration\n * @returns Created span\n */\nfunction createMcpSpan(config: McpSpanConfig): unknown {\n const { type, message, transport, extra, callback, options } = config;\n const { method } = message;\n const params = message.params;\n\n // Determine span name based on type and OTEL conventions\n let spanName: string;\n if (type === 'request') {\n const targetInfo = extractTargetInfo(method, params || {});\n spanName = createSpanName(method, targetInfo.target);\n } else {\n // For notifications, use method name directly per OpenTelemetry conventions\n spanName = method;\n }\n\n const rawAttributes: Record = {\n ...buildTransportAttributes(transport, extra),\n [MCP_METHOD_NAME_ATTRIBUTE]: method,\n ...buildTypeSpecificAttributes(type, message, params, options?.recordInputs),\n ...buildSentryAttributes(type),\n };\n\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) as Record;\n\n return startSpan(\n {\n name: spanName,\n forceTransaction: true,\n attributes,\n },\n callback,\n );\n}\n\n/**\n * Creates a span for incoming MCP notifications\n * @param jsonRpcMessage - Notification message\n * @param transport - MCP transport instance\n * @param extra - Extra handler data\n * @param options - Resolved MCP options\n * @param callback - Span execution callback\n * @returns Span execution result\n */\nexport function createMcpNotificationSpan(\n jsonRpcMessage: JsonRpcNotification,\n transport: MCPTransport,\n extra: ExtraHandlerData,\n options: ResolvedMcpOptions,\n callback: () => unknown,\n): unknown {\n return createMcpSpan({\n type: 'notification-incoming',\n message: jsonRpcMessage,\n transport,\n extra,\n callback,\n options,\n });\n}\n\n/**\n * Creates a span for outgoing MCP notifications\n * @param jsonRpcMessage - Notification message\n * @param transport - MCP transport instance\n * @param options - Resolved MCP options\n * @param callback - Span execution callback\n * @returns Span execution result\n */\nexport function createMcpOutgoingNotificationSpan(\n jsonRpcMessage: JsonRpcNotification,\n transport: MCPTransport,\n options: ResolvedMcpOptions,\n callback: () => unknown,\n): unknown {\n return createMcpSpan({\n type: 'notification-outgoing',\n message: jsonRpcMessage,\n transport,\n options,\n callback,\n });\n}\n\n/**\n * Builds span configuration for MCP server requests\n * @param jsonRpcMessage - Request message\n * @param transport - MCP transport instance\n * @param extra - Optional extra handler data\n * @param options - Resolved MCP options\n * @returns Span configuration object\n */\nexport function buildMcpServerSpanConfig(\n jsonRpcMessage: JsonRpcRequest,\n transport: MCPTransport,\n extra?: ExtraHandlerData,\n options?: ResolvedMcpOptions,\n): {\n name: string;\n op: string;\n forceTransaction: boolean;\n attributes: Record;\n} {\n const { method } = jsonRpcMessage;\n const params = jsonRpcMessage.params;\n\n const targetInfo = extractTargetInfo(method, params || {});\n const spanName = createSpanName(method, targetInfo.target);\n\n const rawAttributes: Record = {\n ...buildTransportAttributes(transport, extra),\n [MCP_METHOD_NAME_ATTRIBUTE]: method,\n ...buildTypeSpecificAttributes('request', jsonRpcMessage, params, options?.recordInputs),\n ...buildSentryAttributes('request'),\n };\n\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) as Record;\n\n return {\n name: spanName,\n op: MCP_SERVER_OP_VALUE,\n forceTransaction: true,\n attributes,\n };\n}\n"],"names":["MCP_SERVER_OP_VALUE","MCP_FUNCTION_ORIGIN_VALUE","MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE","MCP_NOTIFICATION_ORIGIN_VALUE","MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","MCP_ROUTE_SOURCE_VALUE","extractTargetInfo","buildTransportAttributes","MCP_METHOD_NAME_ATTRIBUTE","buildTypeSpecificAttributes","getClient","attributes","filterMcpPiiFromSpanData","startSpan"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/transport.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/transport.js new file mode 100644 index 0000000..7207061 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/transport.js @@ -0,0 +1,202 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../../currentScopes.js'); +const object = require('../../utils/object.js'); +const trace = require('../../tracing/trace.js'); +const attributes = require('./attributes.js'); +const correlation = require('./correlation.js'); +const errorCapture = require('./errorCapture.js'); +const sessionExtraction = require('./sessionExtraction.js'); +const sessionManagement = require('./sessionManagement.js'); +const spans = require('./spans.js'); +const validation = require('./validation.js'); + +/** + * Transport layer instrumentation for MCP server + * + * Handles message interception and response correlation. + * @see https://modelcontextprotocol.io/specification/2025-06-18/basic/transports + */ + + +/** + * Wraps transport.onmessage to create spans for incoming messages. + * For "initialize" requests, extracts and stores client info and protocol version + * in the session data for the transport. + * @param transport - MCP transport instance to wrap + * @param options - Resolved MCP options + */ +function wrapTransportOnMessage(transport, options) { + if (transport.onmessage) { + object.fill(transport, 'onmessage', originalOnMessage => { + return function ( message, extra) { + if (validation.isJsonRpcRequest(message)) { + const isInitialize = message.method === 'initialize'; + let initSessionData; + + if (isInitialize) { + try { + initSessionData = sessionExtraction.extractSessionDataFromInitializeRequest(message); + sessionManagement.storeSessionDataForTransport(this, initSessionData); + } catch { + // noop + } + } + + const isolationScope = currentScopes.getIsolationScope().clone(); + + return currentScopes.withIsolationScope(isolationScope, () => { + const spanConfig = spans.buildMcpServerSpanConfig(message, this, extra , options); + const span = trace.startInactiveSpan(spanConfig); + + // For initialize requests, add client info directly to span (works even for stateless transports) + if (isInitialize && initSessionData) { + span.setAttributes({ + ...sessionExtraction.buildClientAttributesFromInfo(initSessionData.clientInfo), + ...(initSessionData.protocolVersion && { + [attributes.MCP_PROTOCOL_VERSION_ATTRIBUTE]: initSessionData.protocolVersion, + }), + }); + } + + correlation.storeSpanForRequest(this, message.id, span, message.method); + + return trace.withActiveSpan(span, () => { + return (originalOnMessage ).call(this, message, extra); + }); + }); + } + + if (validation.isJsonRpcNotification(message)) { + return spans.createMcpNotificationSpan(message, this, extra , options, () => { + return (originalOnMessage ).call(this, message, extra); + }); + } + + return (originalOnMessage ).call(this, message, extra); + }; + }); + } +} + +/** + * Wraps transport.send to handle outgoing messages and response correlation. + * For "initialize" responses, extracts and stores protocol version and server info + * in the session data for the transport. + * @param transport - MCP transport instance to wrap + * @param options - Resolved MCP options + */ +function wrapTransportSend(transport, options) { + if (transport.send) { + object.fill(transport, 'send', originalSend => { + return async function ( ...args) { + const [message] = args; + + if (validation.isJsonRpcNotification(message)) { + return spans.createMcpOutgoingNotificationSpan(message, this, options, () => { + return (originalSend ).call(this, ...args); + }); + } + + if (validation.isJsonRpcResponse(message)) { + if (message.id !== null && message.id !== undefined) { + if (message.error) { + captureJsonRpcErrorResponse(message.error); + } + + if (validation.isValidContentItem(message.result)) { + if (message.result.protocolVersion || message.result.serverInfo) { + try { + const serverData = sessionExtraction.extractSessionDataFromInitializeResponse(message.result); + sessionManagement.updateSessionDataForTransport(this, serverData); + } catch { + // noop + } + } + } + + correlation.completeSpanWithResults(this, message.id, message.result, options); + } + } + + return (originalSend ).call(this, ...args); + }; + }); + } +} + +/** + * Wraps transport.onclose to clean up pending spans for this transport only + * @param transport - MCP transport instance to wrap + */ +function wrapTransportOnClose(transport) { + if (transport.onclose) { + object.fill(transport, 'onclose', originalOnClose => { + return function ( ...args) { + correlation.cleanupPendingSpansForTransport(this); + sessionManagement.cleanupSessionDataForTransport(this); + return (originalOnClose ).call(this, ...args); + }; + }); + } +} + +/** + * Wraps transport error handlers to capture connection errors + * @param transport - MCP transport instance to wrap + */ +function wrapTransportError(transport) { + if (transport.onerror) { + object.fill(transport, 'onerror', (originalOnError) => { + return function ( error) { + captureTransportError(error); + return originalOnError.call(this, error); + }; + }); + } +} + +/** + * Captures JSON-RPC error responses for server-side errors. + * @see https://www.jsonrpc.org/specification#error_object + * @internal + * @param errorResponse - JSON-RPC error response + */ +function captureJsonRpcErrorResponse(errorResponse) { + try { + if (errorResponse && typeof errorResponse === 'object' && 'code' in errorResponse && 'message' in errorResponse) { + const jsonRpcError = errorResponse ; + + const isServerError = + jsonRpcError.code === -32603 || (jsonRpcError.code >= -32099 && jsonRpcError.code <= -32000); + + if (isServerError) { + const error = new Error(jsonRpcError.message); + error.name = `JsonRpcError_${jsonRpcError.code}`; + + errorCapture.captureError(error, 'protocol'); + } + } + } catch { + // noop + } +} + +/** + * Captures transport connection errors + * @internal + * @param error - Transport error + */ +function captureTransportError(error) { + try { + errorCapture.captureError(error, 'transport'); + } catch { + // noop + } +} + +exports.wrapTransportError = wrapTransportError; +exports.wrapTransportOnClose = wrapTransportOnClose; +exports.wrapTransportOnMessage = wrapTransportOnMessage; +exports.wrapTransportSend = wrapTransportSend; +//# sourceMappingURL=transport.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/transport.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/transport.js.map new file mode 100644 index 0000000..45af20f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/transport.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transport.js","sources":["../../../../src/integrations/mcp-server/transport.ts"],"sourcesContent":["/**\n * Transport layer instrumentation for MCP server\n *\n * Handles message interception and response correlation.\n * @see https://modelcontextprotocol.io/specification/2025-06-18/basic/transports\n */\n\nimport { getIsolationScope, withIsolationScope } from '../../currentScopes';\nimport { startInactiveSpan, withActiveSpan } from '../../tracing';\nimport { fill } from '../../utils/object';\nimport { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes';\nimport { cleanupPendingSpansForTransport, completeSpanWithResults, storeSpanForRequest } from './correlation';\nimport { captureError } from './errorCapture';\nimport {\n buildClientAttributesFromInfo,\n extractSessionDataFromInitializeRequest,\n extractSessionDataFromInitializeResponse,\n} from './sessionExtraction';\nimport {\n cleanupSessionDataForTransport,\n storeSessionDataForTransport,\n updateSessionDataForTransport,\n} from './sessionManagement';\nimport { buildMcpServerSpanConfig, createMcpNotificationSpan, createMcpOutgoingNotificationSpan } from './spans';\nimport type { ExtraHandlerData, MCPTransport, ResolvedMcpOptions, SessionData } from './types';\nimport { isJsonRpcNotification, isJsonRpcRequest, isJsonRpcResponse, isValidContentItem } from './validation';\n\n/**\n * Wraps transport.onmessage to create spans for incoming messages.\n * For \"initialize\" requests, extracts and stores client info and protocol version\n * in the session data for the transport.\n * @param transport - MCP transport instance to wrap\n * @param options - Resolved MCP options\n */\nexport function wrapTransportOnMessage(transport: MCPTransport, options: ResolvedMcpOptions): void {\n if (transport.onmessage) {\n fill(transport, 'onmessage', originalOnMessage => {\n return function (this: MCPTransport, message: unknown, extra?: unknown) {\n if (isJsonRpcRequest(message)) {\n const isInitialize = message.method === 'initialize';\n let initSessionData: SessionData | undefined;\n\n if (isInitialize) {\n try {\n initSessionData = extractSessionDataFromInitializeRequest(message);\n storeSessionDataForTransport(this, initSessionData);\n } catch {\n // noop\n }\n }\n\n const isolationScope = getIsolationScope().clone();\n\n return withIsolationScope(isolationScope, () => {\n const spanConfig = buildMcpServerSpanConfig(message, this, extra as ExtraHandlerData, options);\n const span = startInactiveSpan(spanConfig);\n\n // For initialize requests, add client info directly to span (works even for stateless transports)\n if (isInitialize && initSessionData) {\n span.setAttributes({\n ...buildClientAttributesFromInfo(initSessionData.clientInfo),\n ...(initSessionData.protocolVersion && {\n [MCP_PROTOCOL_VERSION_ATTRIBUTE]: initSessionData.protocolVersion,\n }),\n });\n }\n\n storeSpanForRequest(this, message.id, span, message.method);\n\n return withActiveSpan(span, () => {\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n });\n });\n }\n\n if (isJsonRpcNotification(message)) {\n return createMcpNotificationSpan(message, this, extra as ExtraHandlerData, options, () => {\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n });\n }\n\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n };\n });\n }\n}\n\n/**\n * Wraps transport.send to handle outgoing messages and response correlation.\n * For \"initialize\" responses, extracts and stores protocol version and server info\n * in the session data for the transport.\n * @param transport - MCP transport instance to wrap\n * @param options - Resolved MCP options\n */\nexport function wrapTransportSend(transport: MCPTransport, options: ResolvedMcpOptions): void {\n if (transport.send) {\n fill(transport, 'send', originalSend => {\n return async function (this: MCPTransport, ...args: unknown[]) {\n const [message] = args;\n\n if (isJsonRpcNotification(message)) {\n return createMcpOutgoingNotificationSpan(message, this, options, () => {\n return (originalSend as (...args: unknown[]) => unknown).call(this, ...args);\n });\n }\n\n if (isJsonRpcResponse(message)) {\n if (message.id !== null && message.id !== undefined) {\n if (message.error) {\n captureJsonRpcErrorResponse(message.error);\n }\n\n if (isValidContentItem(message.result)) {\n if (message.result.protocolVersion || message.result.serverInfo) {\n try {\n const serverData = extractSessionDataFromInitializeResponse(message.result);\n updateSessionDataForTransport(this, serverData);\n } catch {\n // noop\n }\n }\n }\n\n completeSpanWithResults(this, message.id, message.result, options);\n }\n }\n\n return (originalSend as (...args: unknown[]) => unknown).call(this, ...args);\n };\n });\n }\n}\n\n/**\n * Wraps transport.onclose to clean up pending spans for this transport only\n * @param transport - MCP transport instance to wrap\n */\nexport function wrapTransportOnClose(transport: MCPTransport): void {\n if (transport.onclose) {\n fill(transport, 'onclose', originalOnClose => {\n return function (this: MCPTransport, ...args: unknown[]) {\n cleanupPendingSpansForTransport(this);\n cleanupSessionDataForTransport(this);\n return (originalOnClose as (...args: unknown[]) => unknown).call(this, ...args);\n };\n });\n }\n}\n\n/**\n * Wraps transport error handlers to capture connection errors\n * @param transport - MCP transport instance to wrap\n */\nexport function wrapTransportError(transport: MCPTransport): void {\n if (transport.onerror) {\n fill(transport, 'onerror', (originalOnError: (error: Error) => void) => {\n return function (this: MCPTransport, error: Error) {\n captureTransportError(error);\n return originalOnError.call(this, error);\n };\n });\n }\n}\n\n/**\n * Captures JSON-RPC error responses for server-side errors.\n * @see https://www.jsonrpc.org/specification#error_object\n * @internal\n * @param errorResponse - JSON-RPC error response\n */\nfunction captureJsonRpcErrorResponse(errorResponse: unknown): void {\n try {\n if (errorResponse && typeof errorResponse === 'object' && 'code' in errorResponse && 'message' in errorResponse) {\n const jsonRpcError = errorResponse as { code: number; message: string; data?: unknown };\n\n const isServerError =\n jsonRpcError.code === -32603 || (jsonRpcError.code >= -32099 && jsonRpcError.code <= -32000);\n\n if (isServerError) {\n const error = new Error(jsonRpcError.message);\n error.name = `JsonRpcError_${jsonRpcError.code}`;\n\n captureError(error, 'protocol');\n }\n }\n } catch {\n // noop\n }\n}\n\n/**\n * Captures transport connection errors\n * @internal\n * @param error - Transport error\n */\nfunction captureTransportError(error: Error): void {\n try {\n captureError(error, 'transport');\n } catch {\n // noop\n }\n}\n"],"names":["fill","isJsonRpcRequest","extractSessionDataFromInitializeRequest","storeSessionDataForTransport","getIsolationScope","withIsolationScope","buildMcpServerSpanConfig","startInactiveSpan","buildClientAttributesFromInfo","MCP_PROTOCOL_VERSION_ATTRIBUTE","storeSpanForRequest","withActiveSpan","isJsonRpcNotification","createMcpNotificationSpan","createMcpOutgoingNotificationSpan","isJsonRpcResponse","isValidContentItem","extractSessionDataFromInitializeResponse","updateSessionDataForTransport","completeSpanWithResults","cleanupPendingSpansForTransport","cleanupSessionDataForTransport","captureError"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/validation.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/validation.js new file mode 100644 index 0000000..6f45fea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/validation.js @@ -0,0 +1,95 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../../debug-build.js'); +const debugLogger = require('../../utils/debug-logger.js'); + +/** + * Message validation functions for MCP server instrumentation + * + * Provides JSON-RPC 2.0 message type validation and MCP server instance validation. + */ + + +/** + * Validates if a message is a JSON-RPC request + * @param message - Message to validate + * @returns True if message is a JSON-RPC request + */ +function isJsonRpcRequest(message) { + return ( + typeof message === 'object' && + message !== null && + 'jsonrpc' in message && + (message ).jsonrpc === '2.0' && + 'method' in message && + 'id' in message + ); +} + +/** + * Validates if a message is a JSON-RPC notification + * @param message - Message to validate + * @returns True if message is a JSON-RPC notification + */ +function isJsonRpcNotification(message) { + return ( + typeof message === 'object' && + message !== null && + 'jsonrpc' in message && + (message ).jsonrpc === '2.0' && + 'method' in message && + !('id' in message) + ); +} + +/** + * Validates if a message is a JSON-RPC response + * @param message - Message to validate + * @returns True if message is a JSON-RPC response + */ +function isJsonRpcResponse(message) { + return ( + typeof message === 'object' && + message !== null && + 'jsonrpc' in message && + (message ).jsonrpc === '2.0' && + 'id' in message && + ('result' in message || 'error' in message) + ); +} + +/** + * Validates MCP server instance with type checking + * @param instance - Object to validate as MCP server instance + * @returns True if instance has required MCP server methods + */ +function validateMcpServerInstance(instance) { + if ( + typeof instance === 'object' && + instance !== null && + 'resource' in instance && + 'tool' in instance && + 'prompt' in instance && + 'connect' in instance + ) { + return true; + } + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Did not patch MCP server. Interface is incompatible.'); + return false; +} + +/** + * Check if the item is a valid content item + * @param item - The item to check + * @returns True if the item is a valid content item, false otherwise + */ +function isValidContentItem(item) { + return item != null && typeof item === 'object'; +} + +exports.isJsonRpcNotification = isJsonRpcNotification; +exports.isJsonRpcRequest = isJsonRpcRequest; +exports.isJsonRpcResponse = isJsonRpcResponse; +exports.isValidContentItem = isValidContentItem; +exports.validateMcpServerInstance = validateMcpServerInstance; +//# sourceMappingURL=validation.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/validation.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/validation.js.map new file mode 100644 index 0000000..b9d71a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/mcp-server/validation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validation.js","sources":["../../../../src/integrations/mcp-server/validation.ts"],"sourcesContent":["/**\n * Message validation functions for MCP server instrumentation\n *\n * Provides JSON-RPC 2.0 message type validation and MCP server instance validation.\n */\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../../utils/debug-logger';\nimport type { JsonRpcNotification, JsonRpcRequest, JsonRpcResponse } from './types';\n\n/**\n * Validates if a message is a JSON-RPC request\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC request\n */\nexport function isJsonRpcRequest(message: unknown): message is JsonRpcRequest {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as JsonRpcRequest).jsonrpc === '2.0' &&\n 'method' in message &&\n 'id' in message\n );\n}\n\n/**\n * Validates if a message is a JSON-RPC notification\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC notification\n */\nexport function isJsonRpcNotification(message: unknown): message is JsonRpcNotification {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as JsonRpcNotification).jsonrpc === '2.0' &&\n 'method' in message &&\n !('id' in message)\n );\n}\n\n/**\n * Validates if a message is a JSON-RPC response\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC response\n */\nexport function isJsonRpcResponse(message: unknown): message is JsonRpcResponse {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as { jsonrpc: string }).jsonrpc === '2.0' &&\n 'id' in message &&\n ('result' in message || 'error' in message)\n );\n}\n\n/**\n * Validates MCP server instance with type checking\n * @param instance - Object to validate as MCP server instance\n * @returns True if instance has required MCP server methods\n */\nexport function validateMcpServerInstance(instance: unknown): boolean {\n if (\n typeof instance === 'object' &&\n instance !== null &&\n 'resource' in instance &&\n 'tool' in instance &&\n 'prompt' in instance &&\n 'connect' in instance\n ) {\n return true;\n }\n DEBUG_BUILD && debug.warn('Did not patch MCP server. Interface is incompatible.');\n return false;\n}\n\n/**\n * Check if the item is a valid content item\n * @param item - The item to check\n * @returns True if the item is a valid content item, false otherwise\n */\nexport function isValidContentItem(item: unknown): item is Record {\n return item != null && typeof item === 'object';\n}\n"],"names":["DEBUG_BUILD","debug"],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,OAAO,EAAsC;AAC9E,EAAE;AACF,IAAI,OAAO,OAAA,KAAY,QAAA;AACvB,IAAI,OAAA,KAAY,IAAA;AAChB,IAAI,SAAA,IAAa,OAAA;AACjB,IAAI,CAAC,OAAA,GAA2B,OAAA,KAAY,KAAA;AAC5C,IAAI,QAAA,IAAY,OAAA;AAChB,IAAI,QAAQ;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,qBAAqB,CAAC,OAAO,EAA2C;AACxF,EAAE;AACF,IAAI,OAAO,OAAA,KAAY,QAAA;AACvB,IAAI,OAAA,KAAY,IAAA;AAChB,IAAI,SAAA,IAAa,OAAA;AACjB,IAAI,CAAC,OAAA,GAAgC,OAAA,KAAY,KAAA;AACjD,IAAI,QAAA,IAAY,OAAA;AAChB,IAAI,EAAE,IAAA,IAAQ,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,OAAO,EAAuC;AAChF,EAAE;AACF,IAAI,OAAO,OAAA,KAAY,QAAA;AACvB,IAAI,OAAA,KAAY,IAAA;AAChB,IAAI,SAAA,IAAa,OAAA;AACjB,IAAI,CAAC,OAAA,GAAgC,OAAA,KAAY,KAAA;AACjD,IAAI,IAAA,IAAQ,OAAA;AACZ,KAAK,QAAA,IAAY,WAAW,OAAA,IAAW,OAAO;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,QAAQ,EAAoB;AACtE,EAAE;AACF,IAAI,OAAO,QAAA,KAAa,QAAA;AACxB,IAAI,QAAA,KAAa,IAAA;AACjB,IAAI,UAAA,IAAc,QAAA;AAClB,IAAI,MAAA,IAAU,QAAA;AACd,IAAI,QAAA,IAAY,QAAA;AAChB,IAAI,aAAa;AACjB,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAEA,0BAAeC,iBAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC;AACnF,EAAE,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,IAAI,EAA4C;AACnF,EAAE,OAAO,QAAQ,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAQ;AACjD;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/moduleMetadata.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/moduleMetadata.js new file mode 100644 index 0000000..eb75d6b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/moduleMetadata.js @@ -0,0 +1,48 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const integration = require('../integration.js'); +const metadata = require('../metadata.js'); +const envelope = require('../utils/envelope.js'); + +/** + * Adds module metadata to stack frames. + * + * Metadata can be injected by the Sentry bundler plugins using the `moduleMetadata` config option. + * + * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events + * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams + * our sources + */ +const moduleMetadataIntegration = integration.defineIntegration(() => { + return { + name: 'ModuleMetadata', + setup(client) { + // We need to strip metadata from stack frames before sending them to Sentry since these are client side only. + client.on('beforeEnvelope', envelope$1 => { + envelope.forEachEnvelopeItem(envelope$1, (item, type) => { + if (type === 'event') { + const event = Array.isArray(item) ? (item )[1] : undefined; + + if (event) { + metadata.stripMetadataFromStackFrames(event); + item[1] = event; + } + } + }); + }); + + client.on('applyFrameMetadata', event => { + // Only apply stack frame metadata to error events + if (event.type) { + return; + } + + const stackParser = client.getOptions().stackParser; + metadata.addMetadataToStackFrames(stackParser, event); + }); + }, + }; +}); + +exports.moduleMetadataIntegration = moduleMetadataIntegration; +//# sourceMappingURL=moduleMetadata.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/moduleMetadata.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/moduleMetadata.js.map new file mode 100644 index 0000000..2276c80 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/moduleMetadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"moduleMetadata.js","sources":["../../../src/integrations/moduleMetadata.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\nimport type { EventItem } from '../types-hoist/envelope';\nimport { forEachEnvelopeItem } from '../utils/envelope';\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n */\nexport const moduleMetadataIntegration = defineIntegration(() => {\n return {\n name: 'ModuleMetadata',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n };\n});\n"],"names":["defineIntegration","envelope","forEachEnvelopeItem","stripMetadataFromStackFrames","addMetadataToStackFrames"],"mappings":";;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACa,yBAAA,GAA4BA,6BAAiB,CAAC,MAAM;AACjE,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB;AACA,MAAM,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAEC,cAAY;AAC9C,QAAQC,4BAAmB,CAACD,UAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;AACtD,UAAU,IAAI,IAAA,KAAS,OAAO,EAAE;AAChC,YAAY,MAAM,KAAA,GAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA,GAAI,CAAC,IAAA,GAAmB,CAAC,CAAA,GAAI,SAAS;;AAElF,YAAY,IAAI,KAAK,EAAE;AACvB,cAAcE,qCAA4B,CAAC,KAAK,CAAC;AACjD,cAAc,IAAI,CAAC,CAAC,CAAA,GAAI,KAAK;AAC7B,YAAY;AACZ,UAAU;AACV,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC,CAAC;;AAER,MAAM,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,SAAS;AAC/C;AACA,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;AACxB,UAAU;AACV,QAAQ;;AAER,QAAQ,MAAM,cAAc,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW;AAC3D,QAAQC,iCAAwB,CAAC,WAAW,EAAE,KAAK,CAAC;AACpD,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,GAAG;AACH,CAAC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/requestdata.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/requestdata.js new file mode 100644 index 0000000..79f0ca9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/requestdata.js @@ -0,0 +1,124 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const integration = require('../integration.js'); +const cookie = require('../utils/cookie.js'); +const getIpAddress = require('../vendor/getIpAddress.js'); + +// TODO(v11): Change defaults based on `sendDefaultPii` +const DEFAULT_INCLUDE = { + cookies: true, + data: true, + headers: true, + query_string: true, + url: true, +}; + +const INTEGRATION_NAME = 'RequestData'; + +const _requestDataIntegration = ((options = {}) => { + const include = { + ...DEFAULT_INCLUDE, + ...options.include, + }; + + return { + name: INTEGRATION_NAME, + processEvent(event, _hint, client) { + const { sdkProcessingMetadata = {} } = event; + const { normalizedRequest, ipAddress } = sdkProcessingMetadata; + + const includeWithDefaultPiiApplied = { + ...include, + ip: include.ip ?? client.getOptions().sendDefaultPii, + }; + + if (normalizedRequest) { + addNormalizedRequestDataToEvent(event, normalizedRequest, { ipAddress }, includeWithDefaultPiiApplied); + } + + return event; + }, + }; +}) ; + +/** + * Add data about a request to an event. Primarily for use in Node-based SDKs, but included in `@sentry/core` + * so it can be used in cross-platform SDKs like `@sentry/nextjs`. + */ +const requestDataIntegration = integration.defineIntegration(_requestDataIntegration); + +/** + * Add already normalized request data to an event. + * This mutates the passed in event. + */ +function addNormalizedRequestDataToEvent( + event, + req, + // Data that should not go into `event.request` but is somehow related to requests + additionalData, + include, +) { + event.request = { + ...event.request, + ...extractNormalizedRequestData(req, include), + }; + + if (include.ip) { + const ip = (req.headers && getIpAddress.getClientIPAddress(req.headers)) || additionalData.ipAddress; + if (ip) { + event.user = { + ...event.user, + ip_address: ip, + }; + } + } +} + +function extractNormalizedRequestData( + normalizedRequest, + include, +) { + const requestData = {}; + const headers = { ...normalizedRequest.headers }; + + if (include.headers) { + requestData.headers = headers; + + // Remove the Cookie header in case cookie data should not be included in the event + if (!include.cookies) { + delete (headers ).cookie; + } + + // Remove IP headers in case IP data should not be included in the event + if (!include.ip) { + getIpAddress.ipHeaderNames.forEach(ipHeaderName => { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete (headers )[ipHeaderName]; + }); + } + } + + requestData.method = normalizedRequest.method; + + if (include.url) { + requestData.url = normalizedRequest.url; + } + + if (include.cookies) { + const cookies = normalizedRequest.cookies || (headers?.cookie ? cookie.parseCookie(headers.cookie) : undefined); + requestData.cookies = cookies || {}; + } + + if (include.query_string) { + requestData.query_string = normalizedRequest.query_string; + } + + if (include.data) { + requestData.data = normalizedRequest.data; + } + + return requestData; +} + +exports.requestDataIntegration = requestDataIntegration; +//# sourceMappingURL=requestdata.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/requestdata.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/requestdata.js.map new file mode 100644 index 0000000..a5dccf1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/requestdata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"requestdata.js","sources":["../../../src/integrations/requestdata.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { RequestEventData } from '../types-hoist/request';\nimport { parseCookie } from '../utils/cookie';\nimport { getClientIPAddress, ipHeaderNames } from '../vendor/getIpAddress';\n\ninterface RequestDataIncludeOptions {\n cookies?: boolean;\n data?: boolean;\n headers?: boolean;\n ip?: boolean;\n query_string?: boolean;\n url?: boolean;\n}\n\ntype RequestDataIntegrationOptions = {\n /**\n * Controls what data is pulled from the request and added to the event.\n */\n include?: RequestDataIncludeOptions;\n};\n\n// TODO(v11): Change defaults based on `sendDefaultPii`\nconst DEFAULT_INCLUDE: RequestDataIncludeOptions = {\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: RequestDataIntegrationOptions = {}) => {\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: RequestDataIncludeOptions = {\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}) satisfies IntegrationFn;\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 */\nexport const 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: Event,\n req: RequestEventData,\n // Data that should not go into `event.request` but is somehow related to requests\n additionalData: { ipAddress?: string },\n include: RequestDataIncludeOptions,\n): void {\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: RequestEventData,\n include: RequestDataIncludeOptions,\n): RequestEventData {\n const requestData: RequestEventData = {};\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 as { cookie?: string }).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 as Record)[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"],"names":["defineIntegration","getClientIPAddress","ipHeaderNames","parseCookie"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/rewriteframes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/rewriteframes.js new file mode 100644 index 0000000..f09bd53 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/rewriteframes.js @@ -0,0 +1,111 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const integration = require('../integration.js'); +const path = require('../utils/path.js'); +const worldwide = require('../utils/worldwide.js'); + +const INTEGRATION_NAME = 'RewriteFrames'; + +/** + * Rewrite event frames paths. + */ +const rewriteFramesIntegration = integration.defineIntegration((options = {}) => { + const root = options.root; + const prefix = options.prefix || 'app:///'; + + const isBrowser = 'window' in worldwide.GLOBAL_OBJ && !!worldwide.GLOBAL_OBJ.window; + + const iteratee = options.iteratee || generateIteratee({ isBrowser, root, prefix }); + + /** Process an exception event. */ + function _processExceptionsEvent(event) { + try { + return { + ...event, + exception: { + ...event.exception, + // The check for this is performed inside `process` call itself, safe to skip here + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + values: event.exception.values.map(value => ({ + ...value, + ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }), + })), + }, + }; + } catch { + return event; + } + } + + /** Process a stack trace. */ + function _processStacktrace(stacktrace) { + return { + ...stacktrace, + frames: stacktrace?.frames?.map(f => iteratee(f)), + }; + } + + return { + name: INTEGRATION_NAME, + processEvent(originalEvent) { + let processedEvent = originalEvent; + + if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) { + processedEvent = _processExceptionsEvent(processedEvent); + } + + return processedEvent; + }, + }; +}); + +/** + * Exported only for tests. + */ +function generateIteratee({ + isBrowser, + root, + prefix, +} + +) { + return (frame) => { + if (!frame.filename) { + return frame; + } + + // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\` + const isWindowsFrame = + /^[a-zA-Z]:\\/.test(frame.filename) || + // or the presence of a backslash without a forward slash (which are not allowed on Windows) + (frame.filename.includes('\\') && !frame.filename.includes('/')); + + // Check if the frame filename begins with `/` + const startsWithSlash = /^\//.test(frame.filename); + + if (isBrowser) { + if (root) { + const oldFilename = frame.filename; + if (oldFilename.indexOf(root) === 0) { + frame.filename = oldFilename.replace(root, prefix); + } + } + } else { + if (isWindowsFrame || startsWithSlash) { + const filename = isWindowsFrame + ? frame.filename + .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix + .replace(/\\/g, '/') // replace all `\\` instances with `/` + : frame.filename; + const base = root ? path.relative(root, filename) : path.basename(filename); + frame.filename = `${prefix}${base}`; + } + } + + return frame; + }; +} + +exports.generateIteratee = generateIteratee; +exports.rewriteFramesIntegration = rewriteFramesIntegration; +//# sourceMappingURL=rewriteframes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/rewriteframes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/rewriteframes.js.map new file mode 100644 index 0000000..3eb76b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/rewriteframes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rewriteframes.js","sources":["../../../src/integrations/rewriteframes.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { Stacktrace } from '../types-hoist/stacktrace';\nimport { basename, relative } from '../utils/path';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ntype StackFrameIteratee = (frame: StackFrame) => StackFrame;\n\nconst INTEGRATION_NAME = 'RewriteFrames';\n\ninterface RewriteFramesOptions {\n /**\n * Root path (the beginning of the path) that will be stripped from the frames' filename.\n *\n * This option has slightly different behaviour in the browser and on servers:\n * - In the browser, the value you provide in `root` will be stripped from the beginning stack frames' paths (if the path started with the value).\n * - On the server, the root value will only replace the beginning of stack frame filepaths, when the path is absolute. If no `root` value is provided and the path is absolute, the frame will be reduced to only the filename and the provided `prefix` option.\n *\n * Browser example:\n * - Original frame: `'http://example.com/my/path/static/asset.js'`\n * - `root: 'http://example.com/my/path'`\n * - `assetPrefix: 'app://'`\n * - Resulting frame: `'app:///static/asset.js'`\n *\n * Server example:\n * - Original frame: `'/User/local/my/path/static/asset.js'`\n * - `root: '/User/local/my/path'`\n * - `assetPrefix: 'app://'`\n * - Resulting frame: `'app:///static/asset.js'`\n */\n root?: string;\n\n /**\n * A custom prefix that stack frames will be prepended with.\n *\n * Default: `'app://'`\n *\n * This option has slightly different behaviour in the browser and on servers:\n * - In the browser, the value you provide in `prefix` will prefix the resulting filename when the value you provided in `root` was applied. Effectively replacing whatever `root` matched in the beginning of the frame with `prefix`.\n * - On the server, the prefix is applied to all stackframes with absolute paths. On Windows, the drive identifier (e.g. \"C://\") is replaced with the prefix.\n */\n prefix?: string;\n\n /**\n * Defines an iterator that is used to iterate through all of the stack frames for modification before being sent to Sentry.\n * Setting this option will effectively disable both the `root` and the `prefix` options.\n */\n iteratee?: StackFrameIteratee;\n}\n\n/**\n * Rewrite event frames paths.\n */\nexport const rewriteFramesIntegration = defineIntegration((options: RewriteFramesOptions = {}) => {\n const root = options.root;\n const prefix = options.prefix || 'app:///';\n\n const isBrowser = 'window' in GLOBAL_OBJ && !!GLOBAL_OBJ.window;\n\n const iteratee: StackFrameIteratee = options.iteratee || generateIteratee({ isBrowser, root, prefix });\n\n /** Process an exception event. */\n function _processExceptionsEvent(event: Event): Event {\n try {\n return {\n ...event,\n exception: {\n ...event.exception,\n // The check for this is performed inside `process` call itself, safe to skip here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n values: event.exception!.values!.map(value => ({\n ...value,\n ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }),\n })),\n },\n };\n } catch {\n return event;\n }\n }\n\n /** Process a stack trace. */\n function _processStacktrace(stacktrace?: Stacktrace): Stacktrace {\n return {\n ...stacktrace,\n frames: stacktrace?.frames?.map(f => iteratee(f)),\n };\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent) {\n let processedEvent = originalEvent;\n\n if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) {\n processedEvent = _processExceptionsEvent(processedEvent);\n }\n\n return processedEvent;\n },\n };\n});\n\n/**\n * Exported only for tests.\n */\nexport function generateIteratee({\n isBrowser,\n root,\n prefix,\n}: {\n isBrowser: boolean;\n root?: string;\n prefix: string;\n}): StackFrameIteratee {\n return (frame: StackFrame) => {\n if (!frame.filename) {\n return frame;\n }\n\n // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\\`\n const isWindowsFrame =\n /^[a-zA-Z]:\\\\/.test(frame.filename) ||\n // or the presence of a backslash without a forward slash (which are not allowed on Windows)\n (frame.filename.includes('\\\\') && !frame.filename.includes('/'));\n\n // Check if the frame filename begins with `/`\n const startsWithSlash = /^\\//.test(frame.filename);\n\n if (isBrowser) {\n if (root) {\n const oldFilename = frame.filename;\n if (oldFilename.indexOf(root) === 0) {\n frame.filename = oldFilename.replace(root, prefix);\n }\n }\n } else {\n if (isWindowsFrame || startsWithSlash) {\n const filename = isWindowsFrame\n ? frame.filename\n .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/') // replace all `\\\\` instances with `/`\n : frame.filename;\n const base = root ? relative(root, filename) : basename(filename);\n frame.filename = `${prefix}${base}`;\n }\n }\n\n return frame;\n };\n}\n"],"names":["defineIntegration","GLOBAL_OBJ","relative","basename"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/supabase.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/supabase.js new file mode 100644 index 0000000..dff7f3d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/supabase.js @@ -0,0 +1,480 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const breadcrumbs = require('../breadcrumbs.js'); +const debugBuild = require('../debug-build.js'); +const exports$1 = require('../exports.js'); +const integration = require('../integration.js'); +const semanticAttributes = require('../semanticAttributes.js'); +const debugLogger = require('../utils/debug-logger.js'); +const misc = require('../utils/misc.js'); +const is = require('../utils/is.js'); +const spanstatus = require('../tracing/spanstatus.js'); +const trace = require('../tracing/trace.js'); + +// Based on Kamil Ogórek's work on: +// https://github.com/supabase-community/sentry-integration-js + + +const AUTH_OPERATIONS_TO_INSTRUMENT = [ + 'reauthenticate', + 'signInAnonymously', + 'signInWithOAuth', + 'signInWithIdToken', + 'signInWithOtp', + 'signInWithPassword', + 'signInWithSSO', + 'signOut', + 'signUp', + 'verifyOtp', +]; + +const AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT = [ + 'createUser', + 'deleteUser', + 'listUsers', + 'getUserById', + 'updateUserById', + 'inviteUserByEmail', +]; + +const FILTER_MAPPINGS = { + eq: 'eq', + neq: 'neq', + gt: 'gt', + gte: 'gte', + lt: 'lt', + lte: 'lte', + like: 'like', + 'like(all)': 'likeAllOf', + 'like(any)': 'likeAnyOf', + ilike: 'ilike', + 'ilike(all)': 'ilikeAllOf', + 'ilike(any)': 'ilikeAnyOf', + is: 'is', + in: 'in', + cs: 'contains', + cd: 'containedBy', + sr: 'rangeGt', + nxl: 'rangeGte', + sl: 'rangeLt', + nxr: 'rangeLte', + adj: 'rangeAdjacent', + ov: 'overlaps', + fts: '', + plfts: 'plain', + phfts: 'phrase', + wfts: 'websearch', + not: 'not', +}; + +const DB_OPERATIONS_TO_INSTRUMENT = ['select', 'insert', 'upsert', 'update', 'delete']; + +function markAsInstrumented(fn) { + try { + (fn ).__SENTRY_INSTRUMENTED__ = true; + } catch { + // ignore errors here + } +} + +function isInstrumented(fn) { + try { + return (fn ).__SENTRY_INSTRUMENTED__; + } catch { + return false; + } +} + +/** + * Extracts the database operation type from the HTTP method and headers + * @param method - The HTTP method of the request + * @param headers - The request headers + * @returns The database operation type ('select', 'insert', 'upsert', 'update', or 'delete') + */ +function extractOperation(method, headers = {}) { + switch (method) { + case 'GET': { + return 'select'; + } + case 'POST': { + if (headers['Prefer']?.includes('resolution=')) { + return 'upsert'; + } else { + return 'insert'; + } + } + case 'PATCH': { + return 'update'; + } + case 'DELETE': { + return 'delete'; + } + default: { + return ''; + } + } +} + +/** + * Translates Supabase filter parameters into readable method names for tracing + * @param key - The filter key from the URL search parameters + * @param query - The filter value from the URL search parameters + * @returns A string representation of the filter as a method call + */ +function translateFiltersIntoMethods(key, query) { + if (query === '' || query === '*') { + return 'select(*)'; + } + + if (key === 'select') { + return `select(${query})`; + } + + if (key === 'or' || key.endsWith('.or')) { + return `${key}${query}`; + } + + const [filter, ...value] = query.split('.'); + + let method; + // Handle optional `configPart` of the filter + if (filter?.startsWith('fts')) { + method = 'textSearch'; + } else if (filter?.startsWith('plfts')) { + method = 'textSearch[plain]'; + } else if (filter?.startsWith('phfts')) { + method = 'textSearch[phrase]'; + } else if (filter?.startsWith('wfts')) { + method = 'textSearch[websearch]'; + } else { + method = (filter && FILTER_MAPPINGS[filter ]) || 'filter'; + } + + return `${method}(${key}, ${value.join('.')})`; +} + +function instrumentAuthOperation(operation, isAdmin = false) { + return new Proxy(operation, { + apply(target, thisArg, argumentsList) { + return trace.startSpan( + { + name: `auth ${isAdmin ? '(admin) ' : ''}${operation.name}`, + attributes: { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase', + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db', + 'db.system': 'postgresql', + 'db.operation': `auth.${isAdmin ? 'admin.' : ''}${operation.name}`, + }, + }, + span => { + return Reflect.apply(target, thisArg, argumentsList) + .then((res) => { + if (res && typeof res === 'object' && 'error' in res && res.error) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR }); + + exports$1.captureException(res.error, { + mechanism: { + handled: false, + type: 'auto.db.supabase.auth', + }, + }); + } else { + span.setStatus({ code: spanstatus.SPAN_STATUS_OK }); + } + + span.end(); + return res; + }) + .catch((err) => { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR }); + span.end(); + + exports$1.captureException(err, { + mechanism: { + handled: false, + type: 'auto.db.supabase.auth', + }, + }); + + throw err; + }) + .then(...argumentsList); + }, + ); + }, + }); +} + +function instrumentSupabaseAuthClient(supabaseClientInstance) { + const auth = supabaseClientInstance.auth; + + if (!auth || isInstrumented(supabaseClientInstance.auth)) { + return; + } + + for (const operation of AUTH_OPERATIONS_TO_INSTRUMENT) { + const authOperation = auth[operation]; + + if (!authOperation) { + continue; + } + + if (typeof supabaseClientInstance.auth[operation] === 'function') { + supabaseClientInstance.auth[operation] = instrumentAuthOperation(authOperation); + } + } + + for (const operation of AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT) { + const authOperation = auth.admin[operation]; + + if (!authOperation) { + continue; + } + + if (typeof supabaseClientInstance.auth.admin[operation] === 'function') { + supabaseClientInstance.auth.admin[operation] = instrumentAuthOperation(authOperation, true); + } + } + + markAsInstrumented(supabaseClientInstance.auth); +} + +function instrumentSupabaseClientConstructor(SupabaseClient) { + if (isInstrumented((SupabaseClient ).prototype.from)) { + return; + } + + (SupabaseClient ).prototype.from = new Proxy( + (SupabaseClient ).prototype.from, + { + apply(target, thisArg, argumentsList) { + const rv = Reflect.apply(target, thisArg, argumentsList); + const PostgRESTQueryBuilder = (rv ).constructor; + + instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder ); + + return rv; + }, + }, + ); + + markAsInstrumented((SupabaseClient ).prototype.from); +} + +function instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder) { + if (isInstrumented((PostgRESTFilterBuilder.prototype ).then)) { + return; + } + + (PostgRESTFilterBuilder.prototype ).then = new Proxy( + (PostgRESTFilterBuilder.prototype ).then, + { + apply(target, thisArg, argumentsList) { + const operations = DB_OPERATIONS_TO_INSTRUMENT; + const typedThis = thisArg ; + const operation = extractOperation(typedThis.method, typedThis.headers); + + if (!operations.includes(operation)) { + return Reflect.apply(target, thisArg, argumentsList); + } + + if (!typedThis?.url?.pathname || typeof typedThis.url.pathname !== 'string') { + return Reflect.apply(target, thisArg, argumentsList); + } + + const pathParts = typedThis.url.pathname.split('/'); + const table = pathParts.length > 0 ? pathParts[pathParts.length - 1] : ''; + + const queryItems = []; + for (const [key, value] of typedThis.url.searchParams.entries()) { + // It's possible to have multiple entries for the same key, eg. `id=eq.7&id=eq.3`, + // so we need to use array instead of object to collect them. + queryItems.push(translateFiltersIntoMethods(key, value)); + } + const body = Object.create(null); + if (is.isPlainObject(typedThis.body)) { + for (const [key, value] of Object.entries(typedThis.body)) { + body[key] = value; + } + } + + // Adding operation to the beginning of the description if it's not a `select` operation + // For example, it can be an `insert` or `update` operation but the query can be `select(...)` + // For `select` operations, we don't need repeat it in the description + const description = `${operation === 'select' ? '' : `${operation}${body ? '(...) ' : ''}`}${queryItems.join( + ' ', + )} from(${table})`; + + const attributes = { + 'db.table': table, + 'db.schema': typedThis.schema, + 'db.url': typedThis.url.origin, + 'db.sdk': typedThis.headers['X-Client-Info'], + 'db.system': 'postgresql', + 'db.operation': operation, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase', + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db', + }; + + if (queryItems.length) { + attributes['db.query'] = queryItems; + } + + if (Object.keys(body).length) { + attributes['db.body'] = body; + } + + return trace.startSpan( + { + name: description, + attributes, + }, + span => { + return (Reflect.apply(target, thisArg, []) ) + .then( + (res) => { + if (span) { + if (res && typeof res === 'object' && 'status' in res) { + spanstatus.setHttpStatus(span, res.status || 500); + } + span.end(); + } + + if (res.error) { + const err = new Error(res.error.message) ; + if (res.error.code) { + err.code = res.error.code; + } + if (res.error.details) { + err.details = res.error.details; + } + + const supabaseContext = {}; + if (queryItems.length) { + supabaseContext.query = queryItems; + } + if (Object.keys(body).length) { + supabaseContext.body = body; + } + + exports$1.captureException(err, scope => { + scope.addEventProcessor(e => { + misc.addExceptionMechanism(e, { + handled: false, + type: 'auto.db.supabase.postgres', + }); + + return e; + }); + + scope.setContext('supabase', supabaseContext); + + return scope; + }); + } + + const breadcrumb = { + type: 'supabase', + category: `db.${operation}`, + message: description, + }; + + const data = {}; + + if (queryItems.length) { + data.query = queryItems; + } + + if (Object.keys(body).length) { + data.body = body; + } + + if (Object.keys(data).length) { + breadcrumb.data = data; + } + + breadcrumbs.addBreadcrumb(breadcrumb); + + return res; + }, + (err) => { + // TODO: shouldn't we capture this error? + if (span) { + spanstatus.setHttpStatus(span, 500); + span.end(); + } + throw err; + }, + ) + .then(...argumentsList); + }, + ); + }, + }, + ); + + markAsInstrumented((PostgRESTFilterBuilder.prototype ).then); +} + +function instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder) { + // We need to wrap _all_ operations despite them sharing the same `PostgRESTFilterBuilder` + // constructor, as we don't know which method will be called first, and we don't want to miss any calls. + for (const operation of DB_OPERATIONS_TO_INSTRUMENT) { + if (isInstrumented((PostgRESTQueryBuilder.prototype )[operation])) { + continue; + } + + (PostgRESTQueryBuilder.prototype )[operation ] = new Proxy( + (PostgRESTQueryBuilder.prototype )[operation ], + { + apply(target, thisArg, argumentsList) { + const rv = Reflect.apply(target, thisArg, argumentsList); + const PostgRESTFilterBuilder = (rv ).constructor; + + debugBuild.DEBUG_BUILD && debugLogger.debug.log(`Instrumenting ${operation} operation's PostgRESTFilterBuilder`); + + instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder); + + return rv; + }, + }, + ); + + markAsInstrumented((PostgRESTQueryBuilder.prototype )[operation]); + } +} + +const instrumentSupabaseClient = (supabaseClient) => { + if (!supabaseClient) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Supabase integration was not installed because no Supabase client was provided.'); + return; + } + const SupabaseClientConstructor = + supabaseClient.constructor === Function ? supabaseClient : supabaseClient.constructor; + + instrumentSupabaseClientConstructor(SupabaseClientConstructor); + instrumentSupabaseAuthClient(supabaseClient ); +}; + +const INTEGRATION_NAME = 'Supabase'; + +const _supabaseIntegration = ((supabaseClient) => { + return { + setupOnce() { + instrumentSupabaseClient(supabaseClient); + }, + name: INTEGRATION_NAME, + }; +}) ; + +const supabaseIntegration = integration.defineIntegration((options) => { + return _supabaseIntegration(options.supabaseClient); +}) ; + +exports.DB_OPERATIONS_TO_INSTRUMENT = DB_OPERATIONS_TO_INSTRUMENT; +exports.FILTER_MAPPINGS = FILTER_MAPPINGS; +exports.extractOperation = extractOperation; +exports.instrumentSupabaseClient = instrumentSupabaseClient; +exports.supabaseIntegration = supabaseIntegration; +exports.translateFiltersIntoMethods = translateFiltersIntoMethods; +//# sourceMappingURL=supabase.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/supabase.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/supabase.js.map new file mode 100644 index 0000000..9c69acd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/supabase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"supabase.js","sources":["../../../src/integrations/supabase.ts"],"sourcesContent":["// Based on Kamil Ogórek's work on:\n// https://github.com/supabase-community/sentry-integration-js\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-lines */\nimport { addBreadcrumb } from '../breadcrumbs';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { captureException } from '../exports';\nimport { defineIntegration } from '../integration';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, SPAN_STATUS_OK, startSpan } from '../tracing';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { debug } from '../utils/debug-logger';\nimport { isPlainObject } from '../utils/is';\nimport { addExceptionMechanism } from '../utils/misc';\n\nconst AUTH_OPERATIONS_TO_INSTRUMENT = [\n 'reauthenticate',\n 'signInAnonymously',\n 'signInWithOAuth',\n 'signInWithIdToken',\n 'signInWithOtp',\n 'signInWithPassword',\n 'signInWithSSO',\n 'signOut',\n 'signUp',\n 'verifyOtp',\n];\n\nconst AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT = [\n 'createUser',\n 'deleteUser',\n 'listUsers',\n 'getUserById',\n 'updateUserById',\n 'inviteUserByEmail',\n];\n\nexport const FILTER_MAPPINGS = {\n eq: 'eq',\n neq: 'neq',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n like: 'like',\n 'like(all)': 'likeAllOf',\n 'like(any)': 'likeAnyOf',\n ilike: 'ilike',\n 'ilike(all)': 'ilikeAllOf',\n 'ilike(any)': 'ilikeAnyOf',\n is: 'is',\n in: 'in',\n cs: 'contains',\n cd: 'containedBy',\n sr: 'rangeGt',\n nxl: 'rangeGte',\n sl: 'rangeLt',\n nxr: 'rangeLte',\n adj: 'rangeAdjacent',\n ov: 'overlaps',\n fts: '',\n plfts: 'plain',\n phfts: 'phrase',\n wfts: 'websearch',\n not: 'not',\n};\n\nexport const DB_OPERATIONS_TO_INSTRUMENT = ['select', 'insert', 'upsert', 'update', 'delete'];\n\ntype AuthOperationFn = (...args: unknown[]) => Promise;\ntype AuthOperationName = (typeof AUTH_OPERATIONS_TO_INSTRUMENT)[number];\ntype AuthAdminOperationName = (typeof AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT)[number];\ntype PostgRESTQueryOperationFn = (...args: unknown[]) => PostgRESTFilterBuilder;\n\nexport interface SupabaseClientInstance {\n auth: {\n admin: Record;\n } & Record;\n}\n\nexport interface PostgRESTQueryBuilder {\n [key: string]: PostgRESTQueryOperationFn;\n}\n\nexport interface PostgRESTFilterBuilder {\n method: string;\n headers: Record;\n url: URL;\n schema: string;\n body: any;\n}\n\nexport interface SupabaseResponse {\n status?: number;\n error?: {\n message: string;\n code?: string;\n details?: unknown;\n };\n}\n\nexport interface SupabaseError extends Error {\n code?: string;\n details?: unknown;\n}\n\nexport interface SupabaseBreadcrumb {\n type: string;\n category: string;\n message: string;\n data?: {\n query?: string[];\n body?: Record;\n };\n}\n\nexport interface SupabaseClientConstructor {\n prototype: {\n from: (table: string) => PostgRESTQueryBuilder;\n };\n}\n\nexport interface PostgRESTProtoThenable {\n then: (\n onfulfilled?: ((value: T) => T | PromiseLike) | null,\n onrejected?: ((reason: any) => T | PromiseLike) | null,\n ) => Promise;\n}\n\ntype SentryInstrumented = T & {\n __SENTRY_INSTRUMENTED__?: boolean;\n};\n\nfunction markAsInstrumented(fn: T): void {\n try {\n (fn as SentryInstrumented).__SENTRY_INSTRUMENTED__ = true;\n } catch {\n // ignore errors here\n }\n}\n\nfunction isInstrumented(fn: T): boolean | undefined {\n try {\n return (fn as SentryInstrumented).__SENTRY_INSTRUMENTED__;\n } catch {\n return false;\n }\n}\n\n/**\n * Extracts the database operation type from the HTTP method and headers\n * @param method - The HTTP method of the request\n * @param headers - The request headers\n * @returns The database operation type ('select', 'insert', 'upsert', 'update', or 'delete')\n */\nexport function extractOperation(method: string, headers: Record = {}): string {\n switch (method) {\n case 'GET': {\n return 'select';\n }\n case 'POST': {\n if (headers['Prefer']?.includes('resolution=')) {\n return 'upsert';\n } else {\n return 'insert';\n }\n }\n case 'PATCH': {\n return 'update';\n }\n case 'DELETE': {\n return 'delete';\n }\n default: {\n return '';\n }\n }\n}\n\n/**\n * Translates Supabase filter parameters into readable method names for tracing\n * @param key - The filter key from the URL search parameters\n * @param query - The filter value from the URL search parameters\n * @returns A string representation of the filter as a method call\n */\nexport function translateFiltersIntoMethods(key: string, query: string): string {\n if (query === '' || query === '*') {\n return 'select(*)';\n }\n\n if (key === 'select') {\n return `select(${query})`;\n }\n\n if (key === 'or' || key.endsWith('.or')) {\n return `${key}${query}`;\n }\n\n const [filter, ...value] = query.split('.');\n\n let method;\n // Handle optional `configPart` of the filter\n if (filter?.startsWith('fts')) {\n method = 'textSearch';\n } else if (filter?.startsWith('plfts')) {\n method = 'textSearch[plain]';\n } else if (filter?.startsWith('phfts')) {\n method = 'textSearch[phrase]';\n } else if (filter?.startsWith('wfts')) {\n method = 'textSearch[websearch]';\n } else {\n method = (filter && FILTER_MAPPINGS[filter as keyof typeof FILTER_MAPPINGS]) || 'filter';\n }\n\n return `${method}(${key}, ${value.join('.')})`;\n}\n\nfunction instrumentAuthOperation(operation: AuthOperationFn, isAdmin = false): AuthOperationFn {\n return new Proxy(operation, {\n apply(target, thisArg, argumentsList) {\n return startSpan(\n {\n name: `auth ${isAdmin ? '(admin) ' : ''}${operation.name}`,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db',\n 'db.system': 'postgresql',\n 'db.operation': `auth.${isAdmin ? 'admin.' : ''}${operation.name}`,\n },\n },\n span => {\n return Reflect.apply(target, thisArg, argumentsList)\n .then((res: unknown) => {\n if (res && typeof res === 'object' && 'error' in res && res.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n\n captureException(res.error, {\n mechanism: {\n handled: false,\n type: 'auto.db.supabase.auth',\n },\n });\n } else {\n span.setStatus({ code: SPAN_STATUS_OK });\n }\n\n span.end();\n return res;\n })\n .catch((err: unknown) => {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n span.end();\n\n captureException(err, {\n mechanism: {\n handled: false,\n type: 'auto.db.supabase.auth',\n },\n });\n\n throw err;\n })\n .then(...argumentsList);\n },\n );\n },\n });\n}\n\nfunction instrumentSupabaseAuthClient(supabaseClientInstance: SupabaseClientInstance): void {\n const auth = supabaseClientInstance.auth;\n\n if (!auth || isInstrumented(supabaseClientInstance.auth)) {\n return;\n }\n\n for (const operation of AUTH_OPERATIONS_TO_INSTRUMENT) {\n const authOperation = auth[operation];\n\n if (!authOperation) {\n continue;\n }\n\n if (typeof supabaseClientInstance.auth[operation] === 'function') {\n supabaseClientInstance.auth[operation] = instrumentAuthOperation(authOperation);\n }\n }\n\n for (const operation of AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT) {\n const authOperation = auth.admin[operation];\n\n if (!authOperation) {\n continue;\n }\n\n if (typeof supabaseClientInstance.auth.admin[operation] === 'function') {\n supabaseClientInstance.auth.admin[operation] = instrumentAuthOperation(authOperation, true);\n }\n }\n\n markAsInstrumented(supabaseClientInstance.auth);\n}\n\nfunction instrumentSupabaseClientConstructor(SupabaseClient: unknown): void {\n if (isInstrumented((SupabaseClient as SupabaseClientConstructor).prototype.from)) {\n return;\n }\n\n (SupabaseClient as SupabaseClientConstructor).prototype.from = new Proxy(\n (SupabaseClient as SupabaseClientConstructor).prototype.from,\n {\n apply(target, thisArg, argumentsList) {\n const rv = Reflect.apply(target, thisArg, argumentsList);\n const PostgRESTQueryBuilder = (rv as PostgRESTQueryBuilder).constructor;\n\n instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder as unknown as new () => PostgRESTQueryBuilder);\n\n return rv;\n },\n },\n );\n\n markAsInstrumented((SupabaseClient as SupabaseClientConstructor).prototype.from);\n}\n\nfunction instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder: PostgRESTFilterBuilder['constructor']): void {\n if (isInstrumented((PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then)) {\n return;\n }\n\n (PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then = new Proxy(\n (PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then,\n {\n apply(target, thisArg, argumentsList) {\n const operations = DB_OPERATIONS_TO_INSTRUMENT;\n const typedThis = thisArg as PostgRESTFilterBuilder;\n const operation = extractOperation(typedThis.method, typedThis.headers);\n\n if (!operations.includes(operation)) {\n return Reflect.apply(target, thisArg, argumentsList);\n }\n\n if (!typedThis?.url?.pathname || typeof typedThis.url.pathname !== 'string') {\n return Reflect.apply(target, thisArg, argumentsList);\n }\n\n const pathParts = typedThis.url.pathname.split('/');\n const table = pathParts.length > 0 ? pathParts[pathParts.length - 1] : '';\n\n const queryItems: string[] = [];\n for (const [key, value] of typedThis.url.searchParams.entries()) {\n // It's possible to have multiple entries for the same key, eg. `id=eq.7&id=eq.3`,\n // so we need to use array instead of object to collect them.\n queryItems.push(translateFiltersIntoMethods(key, value));\n }\n const body: Record = Object.create(null);\n if (isPlainObject(typedThis.body)) {\n for (const [key, value] of Object.entries(typedThis.body)) {\n body[key] = value;\n }\n }\n\n // Adding operation to the beginning of the description if it's not a `select` operation\n // For example, it can be an `insert` or `update` operation but the query can be `select(...)`\n // For `select` operations, we don't need repeat it in the description\n const description = `${operation === 'select' ? '' : `${operation}${body ? '(...) ' : ''}`}${queryItems.join(\n ' ',\n )} from(${table})`;\n\n const attributes: Record = {\n 'db.table': table,\n 'db.schema': typedThis.schema,\n 'db.url': typedThis.url.origin,\n 'db.sdk': typedThis.headers['X-Client-Info'],\n 'db.system': 'postgresql',\n 'db.operation': operation,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db',\n };\n\n if (queryItems.length) {\n attributes['db.query'] = queryItems;\n }\n\n if (Object.keys(body).length) {\n attributes['db.body'] = body;\n }\n\n return startSpan(\n {\n name: description,\n attributes,\n },\n span => {\n return (Reflect.apply(target, thisArg, []) as Promise)\n .then(\n (res: SupabaseResponse) => {\n if (span) {\n if (res && typeof res === 'object' && 'status' in res) {\n setHttpStatus(span, res.status || 500);\n }\n span.end();\n }\n\n if (res.error) {\n const err = new Error(res.error.message) as SupabaseError;\n if (res.error.code) {\n err.code = res.error.code;\n }\n if (res.error.details) {\n err.details = res.error.details;\n }\n\n const supabaseContext: Record = {};\n if (queryItems.length) {\n supabaseContext.query = queryItems;\n }\n if (Object.keys(body).length) {\n supabaseContext.body = body;\n }\n\n captureException(err, scope => {\n scope.addEventProcessor(e => {\n addExceptionMechanism(e, {\n handled: false,\n type: 'auto.db.supabase.postgres',\n });\n\n return e;\n });\n\n scope.setContext('supabase', supabaseContext);\n\n return scope;\n });\n }\n\n const breadcrumb: SupabaseBreadcrumb = {\n type: 'supabase',\n category: `db.${operation}`,\n message: description,\n };\n\n const data: Record = {};\n\n if (queryItems.length) {\n data.query = queryItems;\n }\n\n if (Object.keys(body).length) {\n data.body = body;\n }\n\n if (Object.keys(data).length) {\n breadcrumb.data = data;\n }\n\n addBreadcrumb(breadcrumb);\n\n return res;\n },\n (err: Error) => {\n // TODO: shouldn't we capture this error?\n if (span) {\n setHttpStatus(span, 500);\n span.end();\n }\n throw err;\n },\n )\n .then(...argumentsList);\n },\n );\n },\n },\n );\n\n markAsInstrumented((PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then);\n}\n\nfunction instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder: new () => PostgRESTQueryBuilder): void {\n // We need to wrap _all_ operations despite them sharing the same `PostgRESTFilterBuilder`\n // constructor, as we don't know which method will be called first, and we don't want to miss any calls.\n for (const operation of DB_OPERATIONS_TO_INSTRUMENT) {\n if (isInstrumented((PostgRESTQueryBuilder.prototype as Record)[operation])) {\n continue;\n }\n\n type PostgRESTOperation = keyof Pick;\n (PostgRESTQueryBuilder.prototype as Record)[operation as PostgRESTOperation] = new Proxy(\n (PostgRESTQueryBuilder.prototype as Record)[operation as PostgRESTOperation],\n {\n apply(target, thisArg, argumentsList) {\n const rv = Reflect.apply(target, thisArg, argumentsList);\n const PostgRESTFilterBuilder = (rv as PostgRESTFilterBuilder).constructor;\n\n DEBUG_BUILD && debug.log(`Instrumenting ${operation} operation's PostgRESTFilterBuilder`);\n\n instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder);\n\n return rv;\n },\n },\n );\n\n markAsInstrumented((PostgRESTQueryBuilder.prototype as Record)[operation]);\n }\n}\n\nexport const instrumentSupabaseClient = (supabaseClient: unknown): void => {\n if (!supabaseClient) {\n DEBUG_BUILD && debug.warn('Supabase integration was not installed because no Supabase client was provided.');\n return;\n }\n const SupabaseClientConstructor =\n supabaseClient.constructor === Function ? supabaseClient : supabaseClient.constructor;\n\n instrumentSupabaseClientConstructor(SupabaseClientConstructor);\n instrumentSupabaseAuthClient(supabaseClient as SupabaseClientInstance);\n};\n\nconst INTEGRATION_NAME = 'Supabase';\n\nconst _supabaseIntegration = ((supabaseClient: unknown) => {\n return {\n setupOnce() {\n instrumentSupabaseClient(supabaseClient);\n },\n name: INTEGRATION_NAME,\n };\n}) satisfies IntegrationFn;\n\nexport const supabaseIntegration = defineIntegration((options: { supabaseClient: any }) => {\n return _supabaseIntegration(options.supabaseClient);\n}) satisfies IntegrationFn;\n"],"names":["startSpan","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_OP","SPAN_STATUS_ERROR","captureException","SPAN_STATUS_OK","isPlainObject","setHttpStatus","addExceptionMechanism","addBreadcrumb","DEBUG_BUILD","debug","defineIntegration"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/third-party-errors-filter.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/third-party-errors-filter.js new file mode 100644 index 0000000..2b1a8ef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/third-party-errors-filter.js @@ -0,0 +1,146 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const integration = require('../integration.js'); +const metadata = require('../metadata.js'); +const envelope = require('../utils/envelope.js'); +const stacktrace = require('../utils/stacktrace.js'); + +/** + * This integration allows you to filter out, or tag error events that do not come from user code marked with a bundle key via the Sentry bundler plugins. + */ +const thirdPartyErrorFilterIntegration = integration.defineIntegration((options) => { + return { + name: 'ThirdPartyErrorsFilter', + setup(client) { + // We need to strip metadata from stack frames before sending them to Sentry since these are client side only. + client.on('beforeEnvelope', envelope$1 => { + envelope.forEachEnvelopeItem(envelope$1, (item, type) => { + if (type === 'event') { + const event = Array.isArray(item) ? (item )[1] : undefined; + + if (event) { + metadata.stripMetadataFromStackFrames(event); + item[1] = event; + } + } + }); + }); + + client.on('applyFrameMetadata', event => { + // Only apply stack frame metadata to error events + if (event.type) { + return; + } + + const stackParser = client.getOptions().stackParser; + metadata.addMetadataToStackFrames(stackParser, event); + }); + }, + + processEvent(event) { + const frameKeys = getBundleKeysForAllFramesWithFilenames(event, options.ignoreSentryInternalFrames); + + if (frameKeys) { + const arrayMethod = + options.behaviour === 'drop-error-if-contains-third-party-frames' || + options.behaviour === 'apply-tag-if-contains-third-party-frames' + ? 'some' + : 'every'; + + const behaviourApplies = frameKeys[arrayMethod](keys => !keys.some(key => options.filterKeys.includes(key))); + + if (behaviourApplies) { + const shouldDrop = + options.behaviour === 'drop-error-if-contains-third-party-frames' || + options.behaviour === 'drop-error-if-exclusively-contains-third-party-frames'; + if (shouldDrop) { + return null; + } else { + event.tags = { + ...event.tags, + third_party_code: true, + }; + } + } + } + + return event; + }, + }; +}); + +/** + * Checks if a stack frame is a Sentry internal frame by strictly matching: + * 1. The frame must be the last frame in the stack + * 2. The filename must indicate the internal helpers file + * 3. The context_line must contain the exact pattern "fn.apply(this, wrappedArguments)" + * 4. The comment pattern "Attempt to invoke user-land function" must be present in pre_context + * + */ +function isSentryInternalFrame(frame, frameIndex) { + // Only match the last frame (index 0 in reversed stack) + if (frameIndex !== 0 || !frame.context_line || !frame.filename) { + return false; + } + + if ( + !frame.filename.includes('sentry') || + !frame.filename.includes('helpers') || // Filename would look something like this: 'node_modules/@sentry/browser/build/npm/esm/helpers.js' + !frame.context_line.includes(SENTRY_INTERNAL_FN_APPLY) // Must have context_line with the exact fn.apply pattern + ) { + return false; + } + + // Check pre_context array for comment pattern + if (frame.pre_context) { + const len = frame.pre_context.length; + for (let i = 0; i < len; i++) { + if (frame.pre_context[i]?.includes(SENTRY_INTERNAL_COMMENT)) { + return true; + } + } + } + + return false; +} + +function getBundleKeysForAllFramesWithFilenames( + event, + ignoreSentryInternalFrames, +) { + const frames = stacktrace.getFramesFromEvent(event); + + if (!frames) { + return undefined; + } + + return frames + .filter((frame, index) => { + // Exclude frames without a filename + if (!frame.filename) { + return false; + } + // Exclude frames without location info, since these are likely native code or built-ins. + // JS frames have lineno/colno, WASM frames have instruction_addr instead. + if (frame.lineno == null && frame.colno == null && frame.instruction_addr == null) { + return false; + } + // Optionally ignore Sentry internal frames + return !ignoreSentryInternalFrames || !isSentryInternalFrame(frame, index); + }) + .map(frame => { + if (!frame.module_metadata) { + return []; + } + return Object.keys(frame.module_metadata) + .filter(key => key.startsWith(BUNDLER_PLUGIN_APP_KEY_PREFIX)) + .map(key => key.slice(BUNDLER_PLUGIN_APP_KEY_PREFIX.length)); + }); +} + +const BUNDLER_PLUGIN_APP_KEY_PREFIX = '_sentryBundlerPluginAppKey:'; +const SENTRY_INTERNAL_COMMENT = 'Attempt to invoke user-land function'; +const SENTRY_INTERNAL_FN_APPLY = 'fn.apply(this, wrappedArguments)'; + +exports.thirdPartyErrorFilterIntegration = thirdPartyErrorFilterIntegration; +//# sourceMappingURL=third-party-errors-filter.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/third-party-errors-filter.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/third-party-errors-filter.js.map new file mode 100644 index 0000000..8534eb0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/third-party-errors-filter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"third-party-errors-filter.js","sources":["../../../src/integrations/third-party-errors-filter.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\nimport type { EventItem } from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { forEachEnvelopeItem } from '../utils/envelope';\nimport { getFramesFromEvent } from '../utils/stacktrace';\n\ninterface Options {\n /**\n * Keys that have been provided in the Sentry bundler plugin via the the `applicationKey` option, identifying your bundles.\n *\n * - Webpack plugin: https://www.npmjs.com/package/@sentry/webpack-plugin#applicationkey\n * - Vite plugin: https://www.npmjs.com/package/@sentry/vite-plugin#applicationkey\n * - Esbuild plugin: https://www.npmjs.com/package/@sentry/esbuild-plugin#applicationkey\n * - Rollup plugin: https://www.npmjs.com/package/@sentry/rollup-plugin#applicationkey\n */\n filterKeys: string[];\n\n /**\n * Defines how the integration should behave. \"Third-Party Stack Frames\" are stack frames that did not come from files marked with a matching bundle key.\n *\n * You can define the behaviour with one of 4 modes:\n * - `drop-error-if-contains-third-party-frames`: Drop error events that contain at least one third-party stack frame.\n * - `drop-error-if-exclusively-contains-third-party-frames`: Drop error events that exclusively contain third-party stack frames.\n * - `apply-tag-if-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains at least one third-party stack frame.\n * - `apply-tag-if-exclusively-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains exclusively third-party stack frames.\n *\n * If you chose the mode to only apply tags, the tags can then be used in Sentry to filter your issue stream by entering `!third_party_code:True` in the search bar.\n */\n behaviour:\n | 'drop-error-if-contains-third-party-frames'\n | 'drop-error-if-exclusively-contains-third-party-frames'\n | 'apply-tag-if-contains-third-party-frames'\n | 'apply-tag-if-exclusively-contains-third-party-frames';\n\n /**\n * @experimental\n * If set to true, the integration will ignore frames that are internal to the Sentry SDK from the third-party frame detection.\n * Note that enabling this option might lead to errors being misclassified as third-party errors.\n */\n ignoreSentryInternalFrames?: boolean;\n}\n\n/**\n * This integration allows you to filter out, or tag error events that do not come from user code marked with a bundle key via the Sentry bundler plugins.\n */\nexport const thirdPartyErrorFilterIntegration = defineIntegration((options: Options) => {\n return {\n name: 'ThirdPartyErrorsFilter',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n\n processEvent(event) {\n const frameKeys = getBundleKeysForAllFramesWithFilenames(event, options.ignoreSentryInternalFrames);\n\n if (frameKeys) {\n const arrayMethod =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'apply-tag-if-contains-third-party-frames'\n ? 'some'\n : 'every';\n\n const behaviourApplies = frameKeys[arrayMethod](keys => !keys.some(key => options.filterKeys.includes(key)));\n\n if (behaviourApplies) {\n const shouldDrop =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'drop-error-if-exclusively-contains-third-party-frames';\n if (shouldDrop) {\n return null;\n } else {\n event.tags = {\n ...event.tags,\n third_party_code: true,\n };\n }\n }\n }\n\n return event;\n },\n };\n});\n\n/**\n * Checks if a stack frame is a Sentry internal frame by strictly matching:\n * 1. The frame must be the last frame in the stack\n * 2. The filename must indicate the internal helpers file\n * 3. The context_line must contain the exact pattern \"fn.apply(this, wrappedArguments)\"\n * 4. The comment pattern \"Attempt to invoke user-land function\" must be present in pre_context\n *\n */\nfunction isSentryInternalFrame(frame: StackFrame, frameIndex: number): boolean {\n // Only match the last frame (index 0 in reversed stack)\n if (frameIndex !== 0 || !frame.context_line || !frame.filename) {\n return false;\n }\n\n if (\n !frame.filename.includes('sentry') ||\n !frame.filename.includes('helpers') || // Filename would look something like this: 'node_modules/@sentry/browser/build/npm/esm/helpers.js'\n !frame.context_line.includes(SENTRY_INTERNAL_FN_APPLY) // Must have context_line with the exact fn.apply pattern\n ) {\n return false;\n }\n\n // Check pre_context array for comment pattern\n if (frame.pre_context) {\n const len = frame.pre_context.length;\n for (let i = 0; i < len; i++) {\n if (frame.pre_context[i]?.includes(SENTRY_INTERNAL_COMMENT)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction getBundleKeysForAllFramesWithFilenames(\n event: Event,\n ignoreSentryInternalFrames?: boolean,\n): string[][] | undefined {\n const frames = getFramesFromEvent(event);\n\n if (!frames) {\n return undefined;\n }\n\n return frames\n .filter((frame, index) => {\n // Exclude frames without a filename\n if (!frame.filename) {\n return false;\n }\n // Exclude frames without location info, since these are likely native code or built-ins.\n // JS frames have lineno/colno, WASM frames have instruction_addr instead.\n if (frame.lineno == null && frame.colno == null && frame.instruction_addr == null) {\n return false;\n }\n // Optionally ignore Sentry internal frames\n return !ignoreSentryInternalFrames || !isSentryInternalFrame(frame, index);\n })\n .map(frame => {\n if (!frame.module_metadata) {\n return [];\n }\n return Object.keys(frame.module_metadata)\n .filter(key => key.startsWith(BUNDLER_PLUGIN_APP_KEY_PREFIX))\n .map(key => key.slice(BUNDLER_PLUGIN_APP_KEY_PREFIX.length));\n });\n}\n\nconst BUNDLER_PLUGIN_APP_KEY_PREFIX = '_sentryBundlerPluginAppKey:';\nconst SENTRY_INTERNAL_COMMENT = 'Attempt to invoke user-land function';\nconst SENTRY_INTERNAL_FN_APPLY = 'fn.apply(this, wrappedArguments)';\n"],"names":["defineIntegration","envelope","forEachEnvelopeItem","stripMetadataFromStackFrames","addMetadataToStackFrames","getFramesFromEvent"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/zoderrors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/zoderrors.js new file mode 100644 index 0000000..c84540a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/zoderrors.js @@ -0,0 +1,192 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const integration = require('../integration.js'); +const is = require('../utils/is.js'); +const string = require('../utils/string.js'); + +const DEFAULT_LIMIT = 10; +const INTEGRATION_NAME = 'ZodErrors'; + +/** + * Simplified ZodIssue type definition + */ + +function originalExceptionIsZodError(originalException) { + return ( + is.isError(originalException) && + originalException.name === 'ZodError' && + Array.isArray((originalException ).issues) + ); +} + +/** + * Formats child objects or arrays to a string + * that is preserved when sent to Sentry. + * + * Without this, we end up with something like this in Sentry: + * + * [ + * [Object], + * [Object], + * [Object], + * [Object] + * ] + */ +function flattenIssue(issue) { + return { + ...issue, + path: 'path' in issue && Array.isArray(issue.path) ? issue.path.join('.') : undefined, + keys: 'keys' in issue ? JSON.stringify(issue.keys) : undefined, + unionErrors: 'unionErrors' in issue ? JSON.stringify(issue.unionErrors) : undefined, + }; +} + +/** + * Takes ZodError issue path array and returns a flattened version as a string. + * This makes it easier to display paths within a Sentry error message. + * + * Array indexes are normalized to reduce duplicate entries + * + * @param path ZodError issue path + * @returns flattened path + * + * @example + * flattenIssuePath([0, 'foo', 1, 'bar']) // -> '.foo..bar' + */ +function flattenIssuePath(path) { + return path + .map(p => { + if (typeof p === 'number') { + return ''; + } else { + return p; + } + }) + .join('.'); +} + +/** + * Zod error message is a stringified version of ZodError.issues + * This doesn't display well in the Sentry UI. Replace it with something shorter. + */ +function formatIssueMessage(zodError) { + const errorKeyMap = new Set(); + for (const iss of zodError.issues) { + const issuePath = flattenIssuePath(iss.path); + if (issuePath.length > 0) { + errorKeyMap.add(issuePath); + } + } + + const errorKeys = Array.from(errorKeyMap); + if (errorKeys.length === 0) { + // If there are no keys, then we're likely validating the root + // variable rather than a key within an object. This attempts + // to extract what type it was that failed to validate. + // For example, z.string().parse(123) would return "string" here. + let rootExpectedType = 'variable'; + if (zodError.issues.length > 0) { + const iss = zodError.issues[0]; + if (iss !== undefined && 'expected' in iss && typeof iss.expected === 'string') { + rootExpectedType = iss.expected; + } + } + return `Failed to validate ${rootExpectedType}`; + } + return `Failed to validate keys: ${string.truncate(errorKeys.join(', '), 100)}`; +} + +/** + * Applies ZodError issues to an event extra and replaces the error message + */ +function applyZodErrorsToEvent( + limit, + saveZodIssuesAsAttachment = false, + event, + hint, +) { + if ( + !event.exception?.values || + !hint.originalException || + !originalExceptionIsZodError(hint.originalException) || + hint.originalException.issues.length === 0 + ) { + return event; + } + + try { + const issuesToFlatten = saveZodIssuesAsAttachment + ? hint.originalException.issues + : hint.originalException.issues.slice(0, limit); + const flattenedIssues = issuesToFlatten.map(flattenIssue); + + if (saveZodIssuesAsAttachment) { + // Sometimes having the full error details can be helpful. + // Attachments have much higher limits, so we can include the full list of issues. + if (!Array.isArray(hint.attachments)) { + hint.attachments = []; + } + hint.attachments.push({ + filename: 'zod_issues.json', + data: JSON.stringify({ + issues: flattenedIssues, + }), + }); + } + + return { + ...event, + exception: { + ...event.exception, + values: [ + { + ...event.exception.values[0], + value: formatIssueMessage(hint.originalException), + }, + ...event.exception.values.slice(1), + ], + }, + extra: { + ...event.extra, + 'zoderror.issues': flattenedIssues.slice(0, limit), + }, + }; + } catch (e) { + // Hopefully we never throw errors here, but record it + // with the event just in case. + return { + ...event, + extra: { + ...event.extra, + 'zoderrors sentry integration parse error': { + message: 'an exception was thrown while processing ZodError within applyZodErrorsToEvent()', + error: e instanceof Error ? `${e.name}: ${e.message}\n${e.stack}` : 'unknown', + }, + }, + }; + } +} + +const _zodErrorsIntegration = ((options = {}) => { + const limit = options.limit ?? DEFAULT_LIMIT; + + return { + name: INTEGRATION_NAME, + processEvent(originalEvent, hint) { + const processedEvent = applyZodErrorsToEvent(limit, options.saveZodIssuesAsAttachment, originalEvent, hint); + return processedEvent; + }, + }; +}) ; + +/** + * Sentry integration to process Zod errors, making them easier to work with in Sentry. + */ +const zodErrorsIntegration = integration.defineIntegration(_zodErrorsIntegration); + +exports.applyZodErrorsToEvent = applyZodErrorsToEvent; +exports.flattenIssue = flattenIssue; +exports.flattenIssuePath = flattenIssuePath; +exports.formatIssueMessage = formatIssueMessage; +exports.zodErrorsIntegration = zodErrorsIntegration; +//# sourceMappingURL=zoderrors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/zoderrors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/zoderrors.js.map new file mode 100644 index 0000000..d553341 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/integrations/zoderrors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zoderrors.js","sources":["../../../src/integrations/zoderrors.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { isError } from '../utils/is';\nimport { truncate } from '../utils/string';\n\ninterface ZodErrorsOptions {\n key?: string;\n /**\n * Limits the number of Zod errors inlined in each Sentry event.\n *\n * @default 10\n */\n limit?: number;\n /**\n * Save full list of Zod issues as an attachment in Sentry\n *\n * @default false\n */\n saveZodIssuesAsAttachment?: boolean;\n}\n\nconst DEFAULT_LIMIT = 10;\nconst INTEGRATION_NAME = 'ZodErrors';\n\n/**\n * Simplified ZodIssue type definition\n */\ninterface ZodIssue {\n path: (string | number)[];\n message?: string;\n expected?: unknown;\n received?: unknown;\n unionErrors?: unknown[];\n keys?: unknown[];\n invalid_literal?: unknown;\n}\n\ninterface ZodError extends Error {\n issues: ZodIssue[];\n}\n\nfunction originalExceptionIsZodError(originalException: unknown): originalException is ZodError {\n return (\n isError(originalException) &&\n originalException.name === 'ZodError' &&\n Array.isArray((originalException as ZodError).issues)\n );\n}\n\ntype SingleLevelZodIssue = {\n [P in keyof T]: T[P] extends string | number | undefined\n ? T[P]\n : T[P] extends unknown[]\n ? string | undefined\n : unknown;\n};\n\n/**\n * Formats child objects or arrays to a string\n * that is preserved when sent to Sentry.\n *\n * Without this, we end up with something like this in Sentry:\n *\n * [\n * [Object],\n * [Object],\n * [Object],\n * [Object]\n * ]\n */\nexport function flattenIssue(issue: ZodIssue): SingleLevelZodIssue {\n return {\n ...issue,\n path: 'path' in issue && Array.isArray(issue.path) ? issue.path.join('.') : undefined,\n keys: 'keys' in issue ? JSON.stringify(issue.keys) : undefined,\n unionErrors: 'unionErrors' in issue ? JSON.stringify(issue.unionErrors) : undefined,\n };\n}\n\n/**\n * Takes ZodError issue path array and returns a flattened version as a string.\n * This makes it easier to display paths within a Sentry error message.\n *\n * Array indexes are normalized to reduce duplicate entries\n *\n * @param path ZodError issue path\n * @returns flattened path\n *\n * @example\n * flattenIssuePath([0, 'foo', 1, 'bar']) // -> '.foo..bar'\n */\nexport function flattenIssuePath(path: Array): string {\n return path\n .map(p => {\n if (typeof p === 'number') {\n return '';\n } else {\n return p;\n }\n })\n .join('.');\n}\n\n/**\n * Zod error message is a stringified version of ZodError.issues\n * This doesn't display well in the Sentry UI. Replace it with something shorter.\n */\nexport function formatIssueMessage(zodError: ZodError): string {\n const errorKeyMap = new Set();\n for (const iss of zodError.issues) {\n const issuePath = flattenIssuePath(iss.path);\n if (issuePath.length > 0) {\n errorKeyMap.add(issuePath);\n }\n }\n\n const errorKeys = Array.from(errorKeyMap);\n if (errorKeys.length === 0) {\n // If there are no keys, then we're likely validating the root\n // variable rather than a key within an object. This attempts\n // to extract what type it was that failed to validate.\n // For example, z.string().parse(123) would return \"string\" here.\n let rootExpectedType = 'variable';\n if (zodError.issues.length > 0) {\n const iss = zodError.issues[0];\n if (iss !== undefined && 'expected' in iss && typeof iss.expected === 'string') {\n rootExpectedType = iss.expected;\n }\n }\n return `Failed to validate ${rootExpectedType}`;\n }\n return `Failed to validate keys: ${truncate(errorKeys.join(', '), 100)}`;\n}\n\n/**\n * Applies ZodError issues to an event extra and replaces the error message\n */\nexport function applyZodErrorsToEvent(\n limit: number,\n saveZodIssuesAsAttachment: boolean = false,\n event: Event,\n hint: EventHint,\n): Event {\n if (\n !event.exception?.values ||\n !hint.originalException ||\n !originalExceptionIsZodError(hint.originalException) ||\n hint.originalException.issues.length === 0\n ) {\n return event;\n }\n\n try {\n const issuesToFlatten = saveZodIssuesAsAttachment\n ? hint.originalException.issues\n : hint.originalException.issues.slice(0, limit);\n const flattenedIssues = issuesToFlatten.map(flattenIssue);\n\n if (saveZodIssuesAsAttachment) {\n // Sometimes having the full error details can be helpful.\n // Attachments have much higher limits, so we can include the full list of issues.\n if (!Array.isArray(hint.attachments)) {\n hint.attachments = [];\n }\n hint.attachments.push({\n filename: 'zod_issues.json',\n data: JSON.stringify({\n issues: flattenedIssues,\n }),\n });\n }\n\n return {\n ...event,\n exception: {\n ...event.exception,\n values: [\n {\n ...event.exception.values[0],\n value: formatIssueMessage(hint.originalException),\n },\n ...event.exception.values.slice(1),\n ],\n },\n extra: {\n ...event.extra,\n 'zoderror.issues': flattenedIssues.slice(0, limit),\n },\n };\n } catch (e) {\n // Hopefully we never throw errors here, but record it\n // with the event just in case.\n return {\n ...event,\n extra: {\n ...event.extra,\n 'zoderrors sentry integration parse error': {\n message: 'an exception was thrown while processing ZodError within applyZodErrorsToEvent()',\n error: e instanceof Error ? `${e.name}: ${e.message}\\n${e.stack}` : 'unknown',\n },\n },\n };\n }\n}\n\nconst _zodErrorsIntegration = ((options: ZodErrorsOptions = {}) => {\n const limit = options.limit ?? DEFAULT_LIMIT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent, hint): Event {\n const processedEvent = applyZodErrorsToEvent(limit, options.saveZodIssuesAsAttachment, originalEvent, hint);\n return processedEvent;\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Sentry integration to process Zod errors, making them easier to work with in Sentry.\n */\nexport const zodErrorsIntegration = defineIntegration(_zodErrorsIntegration);\n"],"names":["isError","truncate","defineIntegration"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/console-integration.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/console-integration.js new file mode 100644 index 0000000..32383d1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/console-integration.js @@ -0,0 +1,92 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const debugBuild = require('../debug-build.js'); +const console = require('../instrument/console.js'); +const integration = require('../integration.js'); +const semanticAttributes = require('../semanticAttributes.js'); +const debugLogger = require('../utils/debug-logger.js'); +const internal = require('./internal.js'); +const utils = require('./utils.js'); + +const INTEGRATION_NAME = 'ConsoleLogs'; + +const DEFAULT_ATTRIBUTES = { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.log.console', +}; + +const _consoleLoggingIntegration = ((options = {}) => { + const levels = options.levels || debugLogger.CONSOLE_LEVELS; + + return { + name: INTEGRATION_NAME, + setup(client) { + const { enableLogs, normalizeDepth = 3, normalizeMaxBreadth = 1000 } = client.getOptions(); + if (!enableLogs) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('`enableLogs` is not enabled, ConsoleLogs integration disabled'); + return; + } + + console.addConsoleInstrumentationHandler(({ args, level }) => { + if (currentScopes.getClient() !== client || !levels.includes(level)) { + return; + } + + const firstArg = args[0]; + const followingArgs = args.slice(1); + + if (level === 'assert') { + if (!firstArg) { + const assertionMessage = + followingArgs.length > 0 + ? `Assertion failed: ${utils.formatConsoleArgs(followingArgs, normalizeDepth, normalizeMaxBreadth)}` + : 'Assertion failed'; + internal._INTERNAL_captureLog({ level: 'error', message: assertionMessage, attributes: DEFAULT_ATTRIBUTES }); + } + return; + } + + const isLevelLog = level === 'log'; + + const shouldGenerateTemplate = + args.length > 1 && typeof args[0] === 'string' && !utils.hasConsoleSubstitutions(args[0]); + const attributes = { + ...DEFAULT_ATTRIBUTES, + ...(shouldGenerateTemplate ? utils.createConsoleTemplateAttributes(firstArg, followingArgs) : {}), + }; + + internal._INTERNAL_captureLog({ + level: isLevelLog ? 'info' : level, + message: utils.formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth), + severityNumber: isLevelLog ? 10 : undefined, + attributes, + }); + }); + }, + }; +}) ; + +/** + * Captures calls to the `console` API as logs in Sentry. Requires the `enableLogs` option to be enabled. + * + * @experimental This feature is experimental and may be changed or removed in future versions. + * + * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`, + * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which + * levels are captured. + * + * @example + * + * ```ts + * import * as Sentry from '@sentry/browser'; + * + * Sentry.init({ + * enableLogs: true, + * integrations: [Sentry.consoleLoggingIntegration({ levels: ['error', 'warn'] })], + * }); + * ``` + */ +const consoleLoggingIntegration = integration.defineIntegration(_consoleLoggingIntegration); + +exports.consoleLoggingIntegration = consoleLoggingIntegration; +//# sourceMappingURL=console-integration.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/console-integration.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/console-integration.js.map new file mode 100644 index 0000000..7f88c42 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/console-integration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"console-integration.js","sources":["../../../src/logs/console-integration.ts"],"sourcesContent":["import { getClient } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS, debug } from '../utils/debug-logger';\nimport { _INTERNAL_captureLog } from './internal';\nimport { createConsoleTemplateAttributes, formatConsoleArgs, hasConsoleSubstitutions } from './utils';\n\ninterface CaptureConsoleOptions {\n levels: ConsoleLevel[];\n}\n\nconst INTEGRATION_NAME = 'ConsoleLogs';\n\nconst DEFAULT_ATTRIBUTES = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.log.console',\n};\n\nconst _consoleLoggingIntegration = ((options: Partial = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const { enableLogs, normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = client.getOptions();\n if (!enableLogs) {\n DEBUG_BUILD && debug.warn('`enableLogs` is not enabled, ConsoleLogs integration disabled');\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n const firstArg = args[0];\n const followingArgs = args.slice(1);\n\n if (level === 'assert') {\n if (!firstArg) {\n const assertionMessage =\n followingArgs.length > 0\n ? `Assertion failed: ${formatConsoleArgs(followingArgs, normalizeDepth, normalizeMaxBreadth)}`\n : 'Assertion failed';\n _INTERNAL_captureLog({ level: 'error', message: assertionMessage, attributes: DEFAULT_ATTRIBUTES });\n }\n return;\n }\n\n const isLevelLog = level === 'log';\n\n const shouldGenerateTemplate =\n args.length > 1 && typeof args[0] === 'string' && !hasConsoleSubstitutions(args[0]);\n const attributes = {\n ...DEFAULT_ATTRIBUTES,\n ...(shouldGenerateTemplate ? createConsoleTemplateAttributes(firstArg, followingArgs) : {}),\n };\n\n _INTERNAL_captureLog({\n level: isLevelLog ? 'info' : level,\n message: formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth),\n severityNumber: isLevelLog ? 10 : undefined,\n attributes,\n });\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Captures calls to the `console` API as logs in Sentry. Requires the `enableLogs` option to be enabled.\n *\n * @experimental This feature is experimental and may be changed or removed in future versions.\n *\n * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`,\n * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which\n * levels are captured.\n *\n * @example\n *\n * ```ts\n * import * as Sentry from '@sentry/browser';\n *\n * Sentry.init({\n * enableLogs: true,\n * integrations: [Sentry.consoleLoggingIntegration({ levels: ['error', 'warn'] })],\n * });\n * ```\n */\nexport const consoleLoggingIntegration = defineIntegration(_consoleLoggingIntegration);\n"],"names":["SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","CONSOLE_LEVELS","DEBUG_BUILD","debug","addConsoleInstrumentationHandler","getClient","formatConsoleArgs","_INTERNAL_captureLog","hasConsoleSubstitutions","createConsoleTemplateAttributes","defineIntegration"],"mappings":";;;;;;;;;;;AAeA,MAAM,gBAAA,GAAmB,aAAa;;AAEtC,MAAM,qBAAqB;AAC3B,EAAE,CAACA,mDAAgC,GAAG,kBAAkB;AACxD,CAAC;;AAED,MAAM,0BAAA,IAA8B,CAAC,OAAO,GAAmC,EAAE,KAAK;AACtF,EAAE,MAAM,MAAA,GAAS,OAAO,CAAC,MAAA,IAAUC,0BAAc;;AAEjD,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,MAAM,EAAE,UAAU,EAAE,cAAA,GAAiB,CAAC,EAAE,mBAAA,GAAsB,MAAM,GAAI,MAAM,CAAC,UAAU,EAAE;AACjG,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQC,0BAAeC,iBAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC;AAClG,QAAQ;AACR,MAAM;;AAEN,MAAMC,wCAAgC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAA,EAAO,KAAK;AAC5D,QAAQ,IAAIC,uBAAS,OAAO,MAAA,IAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/D,UAAU;AACV,QAAQ;;AAER,QAAQ,MAAM,QAAA,GAAW,IAAI,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;AAE3C,QAAQ,IAAI,KAAA,KAAU,QAAQ,EAAE;AAChC,UAAU,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAY,MAAM,gBAAA;AAClB,cAAc,aAAa,CAAC,MAAA,GAAS;AACrC,kBAAkB,CAAC,kBAAkB,EAAEC,uBAAiB,CAAC,aAAa,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AAC7G,kBAAA,kBAAA;AACA,YAAAC,6BAAA,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,CAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;;AAEA,QAAA,MAAA,UAAA,GAAA,KAAA,KAAA,KAAA;;AAEA,QAAA,MAAA,sBAAA;AACA,UAAA,IAAA,CAAA,MAAA,GAAA,CAAA,IAAA,OAAA,IAAA,CAAA,CAAA,CAAA,KAAA,QAAA,IAAA,CAAAC,6BAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AACA,QAAA,MAAA,UAAA,GAAA;AACA,UAAA,GAAA,kBAAA;AACA,UAAA,IAAA,sBAAA,GAAAC,qCAAA,CAAA,QAAA,EAAA,aAAA,CAAA,GAAA,EAAA,CAAA;AACA,SAAA;;AAEA,QAAAF,6BAAA,CAAA;AACA,UAAA,KAAA,EAAA,UAAA,GAAA,MAAA,GAAA,KAAA;AACA,UAAA,OAAA,EAAAD,uBAAA,CAAA,IAAA,EAAA,cAAA,EAAA,mBAAA,CAAA;AACA,UAAA,cAAA,EAAA,UAAA,GAAA,EAAA,GAAA,SAAA;AACA,UAAA,UAAA;AACA,SAAA,CAAA;AACA,MAAA,CAAA,CAAA;AACA,IAAA,CAAA;AACA,GAAA;AACA,CAAA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAA,yBAAA,GAAAI,6BAAA,CAAA,0BAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/constants.js new file mode 100644 index 0000000..b0222a9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/constants.js @@ -0,0 +1,18 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Maps a log severity level to a log severity number. + * + * @see LogSeverityLevel + */ +const SEVERITY_TEXT_TO_SEVERITY_NUMBER = { + trace: 1, + debug: 5, + info: 9, + warn: 13, + error: 17, + fatal: 21, +}; + +exports.SEVERITY_TEXT_TO_SEVERITY_NUMBER = SEVERITY_TEXT_TO_SEVERITY_NUMBER; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/constants.js.map new file mode 100644 index 0000000..086df86 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../src/logs/constants.ts"],"sourcesContent":["import type { LogSeverityLevel } from '../types-hoist/log';\n\n/**\n * Maps a log severity level to a log severity number.\n *\n * @see LogSeverityLevel\n */\nexport const SEVERITY_TEXT_TO_SEVERITY_NUMBER: Partial> = {\n trace: 1,\n debug: 5,\n info: 9,\n warn: 13,\n error: 17,\n fatal: 21,\n};\n"],"names":[],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,gCAAgC,GAA8C;AAC3F,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,KAAK,EAAE,EAAE;AACX;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/envelope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/envelope.js new file mode 100644 index 0000000..78282ef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/envelope.js @@ -0,0 +1,60 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const dsn = require('../utils/dsn.js'); +const envelope = require('../utils/envelope.js'); + +/** + * Creates a log container envelope item for a list of logs. + * + * @param items - The logs to include in the envelope. + * @returns The created log container envelope item. + */ +function createLogContainerEnvelopeItem(items) { + return [ + { + type: 'log', + item_count: items.length, + content_type: 'application/vnd.sentry.items.log+json', + }, + { + items, + }, + ]; +} + +/** + * Creates an envelope for a list of logs. + * + * Logs from multiple traces can be included in the same envelope. + * + * @param logs - The logs to include in the envelope. + * @param metadata - The metadata to include in the envelope. + * @param tunnel - The tunnel to include in the envelope. + * @param dsn - The DSN to include in the envelope. + * @returns The created envelope. + */ +function createLogEnvelope( + logs, + metadata, + tunnel, + dsn$1, +) { + const headers = {}; + + if (metadata?.sdk) { + headers.sdk = { + name: metadata.sdk.name, + version: metadata.sdk.version, + }; + } + + if (!!tunnel && !!dsn$1) { + headers.dsn = dsn.dsnToString(dsn$1); + } + + return envelope.createEnvelope(headers, [createLogContainerEnvelopeItem(logs)]); +} + +exports.createLogContainerEnvelopeItem = createLogContainerEnvelopeItem; +exports.createLogEnvelope = createLogEnvelope; +//# sourceMappingURL=envelope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/envelope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/envelope.js.map new file mode 100644 index 0000000..962f4ca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/envelope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"envelope.js","sources":["../../../src/logs/envelope.ts"],"sourcesContent":["import type { DsnComponents } from '../types-hoist/dsn';\nimport type { LogContainerItem, LogEnvelope } from '../types-hoist/envelope';\nimport type { SerializedLog } from '../types-hoist/log';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport { dsnToString } from '../utils/dsn';\nimport { createEnvelope } from '../utils/envelope';\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 */\nexport function createLogContainerEnvelopeItem(items: Array): LogContainerItem {\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 */\nexport function createLogEnvelope(\n logs: Array,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): LogEnvelope {\n const headers: LogEnvelope[0] = {};\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"],"names":["dsn","dsnToString","createEnvelope"],"mappings":";;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,CAAC,KAAK,EAA0C;AAC9F,EAAE,OAAO;AACT,IAAI;AACJ,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,UAAU,EAAE,KAAK,CAAC,MAAM;AAC9B,MAAM,YAAY,EAAE,uCAAuC;AAC3D,KAAK;AACL,IAAI;AACJ,MAAM,KAAK;AACX,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB;AACjC,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,MAAM;AACR,EAAEA,KAAG;AACL,EAAe;AACf,EAAE,MAAM,OAAO,GAAmB,EAAE;;AAEpC,EAAE,IAAI,QAAQ,EAAE,GAAG,EAAE;AACrB,IAAI,OAAO,CAAC,GAAA,GAAM;AAClB,MAAM,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI;AAC7B,MAAM,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO;AACnC,KAAK;AACL,EAAE;;AAEF,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAACA,KAAG,EAAE;AACzB,IAAI,OAAO,CAAC,GAAA,GAAMC,eAAW,CAACD,KAAG,CAAC;AAClC,EAAE;;AAEF,EAAE,OAAOE,uBAAc,CAAc,OAAO,EAAE,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/internal.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/internal.js new file mode 100644 index 0000000..c297a85 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/internal.js @@ -0,0 +1,219 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const attributes = require('../attributes.js'); +const carrier = require('../carrier.js'); +const currentScopes = require('../currentScopes.js'); +const debugBuild = require('../debug-build.js'); +const debugLogger = require('../utils/debug-logger.js'); +const is = require('../utils/is.js'); +const scopeData = require('../utils/scopeData.js'); +const spanOnScope = require('../utils/spanOnScope.js'); +const time = require('../utils/time.js'); +const traceInfo = require('../utils/trace-info.js'); +const constants = require('./constants.js'); +const envelope = require('./envelope.js'); + +const MAX_LOG_BUFFER_SIZE = 100; + +/** + * Sets a log attribute if the value exists and the attribute key is not already present. + * + * @param logAttributes - The log attributes object to modify. + * @param key - The attribute key to set. + * @param value - The value to set (only sets if truthy and key not present). + * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true. + */ +function setLogAttribute( + logAttributes, + key, + value, + setEvenIfPresent = true, +) { + if (value && (!logAttributes[key] || setEvenIfPresent)) { + logAttributes[key] = value; + } +} + +/** + * Captures a serialized log event and adds it to the log buffer for the given client. + * + * @param client - A client. Uses the current client if not provided. + * @param serializedLog - The serialized log event to capture. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_captureSerializedLog(client, serializedLog) { + const bufferMap = _getBufferMap(); + const logBuffer = _INTERNAL_getLogBuffer(client); + + if (logBuffer === undefined) { + bufferMap.set(client, [serializedLog]); + } else { + if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) { + _INTERNAL_flushLogsBuffer(client, logBuffer); + bufferMap.set(client, [serializedLog]); + } else { + bufferMap.set(client, [...logBuffer, serializedLog]); + } + } +} + +/** + * Captures a log event and sends it to Sentry. + * + * @param log - The log event to capture. + * @param scope - A scope. Uses the current scope if not provided. + * @param client - A client. Uses the current client if not provided. + * @param captureSerializedLog - A function to capture the serialized log. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_captureLog( + beforeLog, + currentScope = currentScopes.getCurrentScope(), + captureSerializedLog = _INTERNAL_captureSerializedLog, +) { + const client = currentScope?.getClient() ?? currentScopes.getClient(); + if (!client) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('No client available to capture log.'); + return; + } + + const { release, environment, enableLogs = false, beforeSendLog } = client.getOptions(); + if (!enableLogs) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('logging option not enabled, log will not be captured.'); + return; + } + + const [, traceContext] = traceInfo._getTraceInfoFromScope(client, currentScope); + + const processedLogAttributes = { + ...beforeLog.attributes, + }; + + const { + user: { id, email, username }, + attributes: scopeAttributes = {}, + } = scopeData.getCombinedScopeData(currentScopes.getIsolationScope(), currentScope); + + setLogAttribute(processedLogAttributes, 'user.id', id, false); + setLogAttribute(processedLogAttributes, 'user.email', email, false); + setLogAttribute(processedLogAttributes, 'user.name', username, false); + + setLogAttribute(processedLogAttributes, 'sentry.release', release); + setLogAttribute(processedLogAttributes, 'sentry.environment', environment); + + const { name, version } = client.getSdkMetadata()?.sdk ?? {}; + setLogAttribute(processedLogAttributes, 'sentry.sdk.name', name); + setLogAttribute(processedLogAttributes, 'sentry.sdk.version', version); + + const replay = client.getIntegrationByName + +('Replay'); + + const replayId = replay?.getReplayId(true); + setLogAttribute(processedLogAttributes, 'sentry.replay_id', replayId); + + if (replayId && replay?.getRecordingMode() === 'buffer') { + // We send this so we can identify cases where the replayId is attached but the replay itself might not have been sent to Sentry + setLogAttribute(processedLogAttributes, 'sentry._internal.replay_is_buffering', true); + } + + const beforeLogMessage = beforeLog.message; + if (is.isParameterizedString(beforeLogMessage)) { + const { __sentry_template_string__, __sentry_template_values__ = [] } = beforeLogMessage; + if (__sentry_template_values__?.length) { + processedLogAttributes['sentry.message.template'] = __sentry_template_string__; + } + __sentry_template_values__.forEach((param, index) => { + processedLogAttributes[`sentry.message.parameter.${index}`] = param; + }); + } + + const span = spanOnScope._getSpanForScope(currentScope); + // Add the parent span ID to the log attributes for trace context + setLogAttribute(processedLogAttributes, 'sentry.trace.parent_span_id', span?.spanContext().spanId); + + const processedLog = { ...beforeLog, attributes: processedLogAttributes }; + + client.emit('beforeCaptureLog', processedLog); + + // We need to wrap this in `consoleSandbox` to avoid recursive calls to `beforeSendLog` + const log = beforeSendLog ? debugLogger.consoleSandbox(() => beforeSendLog(processedLog)) : processedLog; + if (!log) { + client.recordDroppedEvent('before_send', 'log_item', 1); + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('beforeSendLog returned null, log will not be captured.'); + return; + } + + const { level, message, attributes: logAttributes = {}, severityNumber } = log; + + const serializedLog = { + timestamp: time.timestampInSeconds(), + level, + body: message, + trace_id: traceContext?.trace_id, + severity_number: severityNumber ?? constants.SEVERITY_TEXT_TO_SEVERITY_NUMBER[level], + attributes: { + ...attributes.serializeAttributes(scopeAttributes), + ...attributes.serializeAttributes(logAttributes, true), + }, + }; + + captureSerializedLog(client, serializedLog); + + client.emit('afterCaptureLog', log); +} + +/** + * Flushes the logs buffer to Sentry. + * + * @param client - A client. + * @param maybeLogBuffer - A log buffer. Uses the log buffer for the given client if not provided. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_flushLogsBuffer(client, maybeLogBuffer) { + const logBuffer = maybeLogBuffer ?? _INTERNAL_getLogBuffer(client) ?? []; + if (logBuffer.length === 0) { + return; + } + + const clientOptions = client.getOptions(); + const envelope$1 = envelope.createLogEnvelope(logBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn()); + + // Clear the log buffer after envelopes have been constructed. + _getBufferMap().set(client, []); + + client.emit('flushLogs'); + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + client.sendEnvelope(envelope$1); +} + +/** + * Returns the log buffer for a given client. + * + * Exported for testing purposes. + * + * @param client - The client to get the log buffer for. + * @returns The log buffer for the given client. + */ +function _INTERNAL_getLogBuffer(client) { + return _getBufferMap().get(client); +} + +function _getBufferMap() { + // The reference to the Client <> LogBuffer map is stored on the carrier to ensure it's always the same + return carrier.getGlobalSingleton('clientToLogBufferMap', () => new WeakMap()); +} + +exports._INTERNAL_captureLog = _INTERNAL_captureLog; +exports._INTERNAL_captureSerializedLog = _INTERNAL_captureSerializedLog; +exports._INTERNAL_flushLogsBuffer = _INTERNAL_flushLogsBuffer; +exports._INTERNAL_getLogBuffer = _INTERNAL_getLogBuffer; +//# sourceMappingURL=internal.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/internal.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/internal.js.map new file mode 100644 index 0000000..85f11e9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/internal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal.js","sources":["../../../src/logs/internal.ts"],"sourcesContent":["import { serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Log, SerializedLog } from '../types-hoist/log';\nimport { consoleSandbox, debug } from '../utils/debug-logger';\nimport { isParameterizedString } from '../utils/is';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { SEVERITY_TEXT_TO_SEVERITY_NUMBER } from './constants';\nimport { createLogEnvelope } from './envelope';\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: Record,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\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 */\nexport function _INTERNAL_captureSerializedLog(client: Client, serializedLog: SerializedLog): void {\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 */\nexport function _INTERNAL_captureLog(\n beforeLog: Log,\n currentScope = getCurrentScope(),\n captureSerializedLog: (client: Client, log: SerializedLog) => void = _INTERNAL_captureSerializedLog,\n): void {\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 Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\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 serializedLog: SerializedLog = {\n timestamp: timestampInSeconds(),\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 },\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 */\nexport function _INTERNAL_flushLogsBuffer(client: Client, maybeLogBuffer?: Array): void {\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 */\nexport function _INTERNAL_getLogBuffer(client: Client): Array | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap> {\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"],"names":["getCurrentScope","getClient","DEBUG_BUILD","debug","_getTraceInfoFromScope","getCombinedScopeData","getIsolationScope","isParameterizedString","_getSpanForScope","consoleSandbox","timestampInSeconds","SEVERITY_TEXT_TO_SEVERITY_NUMBER","serializeAttributes","envelope","createLogEnvelope","getGlobalSingleton"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/public-api.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/public-api.js new file mode 100644 index 0000000..6271477 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/public-api.js @@ -0,0 +1,250 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const internal = require('./internal.js'); +const parameterize = require('../utils/parameterize.js'); + +/** + * Capture a log with the given level. + * + * @param level - The level of the log. + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100. + * @param scope - The scope to capture the log with. + * @param severityNumber - The severity number of the log. + */ +function captureLog( + level, + message, + attributes, + scope, + severityNumber, +) { + internal._INTERNAL_captureLog({ level, message, attributes, severityNumber }, scope); +} + +/** + * Additional metadata to capture the log with. + */ + +/** + * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { userId: 100, route: '/dashboard' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.trace('User clicked submit button', { + * buttonId: 'submit-form', + * formId: 'user-profile', + * timestamp: Date.now() + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.trace(Sentry.logger.fmt`User ${user} navigated to ${page}`, { + * userId: '123', + * sessionId: 'abc-xyz' + * }); + * ``` + */ +function trace( + message, + attributes, + { scope } = {}, +) { + captureLog('trace', message, attributes, scope); +} + +/** + * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { component: 'Header', state: 'loading' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.debug('Component mounted', { + * component: 'UserProfile', + * props: { userId: 123 }, + * renderTime: 150 + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.debug(Sentry.logger.fmt`API request to ${endpoint} failed`, { + * statusCode: 404, + * requestId: 'req-123', + * duration: 250 + * }); + * ``` + */ +function debug( + message, + attributes, + { scope } = {}, +) { + captureLog('debug', message, attributes, scope); +} + +/** + * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { feature: 'checkout', status: 'completed' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.info('User completed checkout', { + * orderId: 'order-123', + * amount: 99.99, + * paymentMethod: 'credit_card' + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.info(Sentry.logger.fmt`User ${user} updated profile picture`, { + * userId: 'user-123', + * imageSize: '2.5MB', + * timestamp: Date.now() + * }); + * ``` + */ +function info( + message, + attributes, + { scope } = {}, +) { + captureLog('info', message, attributes, scope); +} + +/** + * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { browser: 'Chrome', version: '91.0' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.warn('Browser compatibility issue detected', { + * browser: 'Safari', + * version: '14.0', + * feature: 'WebRTC', + * fallback: 'enabled' + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.warn(Sentry.logger.fmt`API endpoint ${endpoint} is deprecated`, { + * recommendedEndpoint: '/api/v2/users', + * sunsetDate: '2024-12-31', + * clientVersion: '1.2.3' + * }); + * ``` + */ +function warn( + message, + attributes, + { scope } = {}, +) { + captureLog('warn', message, attributes, scope); +} + +/** + * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { error: 'NetworkError', url: '/api/data' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.error('Failed to load user data', { + * error: 'NetworkError', + * url: '/api/users/123', + * statusCode: 500, + * retryCount: 3 + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.error(Sentry.logger.fmt`Payment processing failed for order ${orderId}`, { + * error: 'InsufficientFunds', + * amount: 100.00, + * currency: 'USD', + * userId: 'user-456' + * }); + * ``` + */ +function error( + message, + attributes, + { scope } = {}, +) { + captureLog('error', message, attributes, scope); +} + +/** + * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { appState: 'corrupted', sessionId: 'abc-123' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.fatal('Application state corrupted', { + * lastKnownState: 'authenticated', + * sessionId: 'session-123', + * timestamp: Date.now(), + * recoveryAttempted: true + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.fatal(Sentry.logger.fmt`Critical system failure in ${service}`, { + * service: 'payment-processor', + * errorCode: 'CRITICAL_FAILURE', + * affectedUsers: 150, + * timestamp: Date.now() + * }); + * ``` + */ +function fatal( + message, + attributes, + { scope } = {}, +) { + captureLog('fatal', message, attributes, scope); +} + +exports.fmt = parameterize.fmt; +exports.debug = debug; +exports.error = error; +exports.fatal = fatal; +exports.info = info; +exports.trace = trace; +exports.warn = warn; +//# sourceMappingURL=public-api.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/public-api.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/public-api.js.map new file mode 100644 index 0000000..73a1533 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/public-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"public-api.js","sources":["../../../src/logs/public-api.ts"],"sourcesContent":["import type { Scope } from '../scope';\nimport type { Log, LogSeverityLevel } from '../types-hoist/log';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport { _INTERNAL_captureLog } from './internal';\n\n/**\n * Capture a log with the given level.\n *\n * @param level - The level of the log.\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100.\n * @param scope - The scope to capture the log with.\n * @param severityNumber - The severity number of the log.\n */\nfunction captureLog(\n level: LogSeverityLevel,\n message: ParameterizedString,\n attributes?: Log['attributes'],\n scope?: Scope,\n severityNumber?: Log['severityNumber'],\n): void {\n _INTERNAL_captureLog({ level, message, attributes, severityNumber }, scope);\n}\n\n/**\n * Additional metadata to capture the log with.\n */\ninterface CaptureLogMetadata {\n scope?: Scope;\n}\n\n/**\n * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { userId: 100, route: '/dashboard' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.trace('User clicked submit button', {\n * buttonId: 'submit-form',\n * formId: 'user-profile',\n * timestamp: Date.now()\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.trace(Sentry.logger.fmt`User ${user} navigated to ${page}`, {\n * userId: '123',\n * sessionId: 'abc-xyz'\n * });\n * ```\n */\nexport function trace(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('trace', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { component: 'Header', state: 'loading' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.debug('Component mounted', {\n * component: 'UserProfile',\n * props: { userId: 123 },\n * renderTime: 150\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.debug(Sentry.logger.fmt`API request to ${endpoint} failed`, {\n * statusCode: 404,\n * requestId: 'req-123',\n * duration: 250\n * });\n * ```\n */\nexport function debug(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('debug', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { feature: 'checkout', status: 'completed' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.info('User completed checkout', {\n * orderId: 'order-123',\n * amount: 99.99,\n * paymentMethod: 'credit_card'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.info(Sentry.logger.fmt`User ${user} updated profile picture`, {\n * userId: 'user-123',\n * imageSize: '2.5MB',\n * timestamp: Date.now()\n * });\n * ```\n */\nexport function info(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('info', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { browser: 'Chrome', version: '91.0' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.warn('Browser compatibility issue detected', {\n * browser: 'Safari',\n * version: '14.0',\n * feature: 'WebRTC',\n * fallback: 'enabled'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.warn(Sentry.logger.fmt`API endpoint ${endpoint} is deprecated`, {\n * recommendedEndpoint: '/api/v2/users',\n * sunsetDate: '2024-12-31',\n * clientVersion: '1.2.3'\n * });\n * ```\n */\nexport function warn(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('warn', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { error: 'NetworkError', url: '/api/data' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.error('Failed to load user data', {\n * error: 'NetworkError',\n * url: '/api/users/123',\n * statusCode: 500,\n * retryCount: 3\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.error(Sentry.logger.fmt`Payment processing failed for order ${orderId}`, {\n * error: 'InsufficientFunds',\n * amount: 100.00,\n * currency: 'USD',\n * userId: 'user-456'\n * });\n * ```\n */\nexport function error(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('error', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { appState: 'corrupted', sessionId: 'abc-123' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.fatal('Application state corrupted', {\n * lastKnownState: 'authenticated',\n * sessionId: 'session-123',\n * timestamp: Date.now(),\n * recoveryAttempted: true\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.fatal(Sentry.logger.fmt`Critical system failure in ${service}`, {\n * service: 'payment-processor',\n * errorCode: 'CRITICAL_FAILURE',\n * affectedUsers: 150,\n * timestamp: Date.now()\n * });\n * ```\n */\nexport function fatal(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('fatal', message, attributes, scope);\n}\n\nexport { fmt } from '../utils/parameterize';\n"],"names":["_INTERNAL_captureLog"],"mappings":";;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU;AACnB,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,KAAK;AACP,EAAE,cAAc;AAChB,EAAQ;AACR,EAAEA,6BAAoB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,cAAA,EAAgB,EAAE,KAAK,CAAC;AAC7E;;AAEA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK;AACrB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK;AACrB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI;AACpB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI;AACpB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK;AACrB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK;AACrB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AACjD;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/utils.js new file mode 100644 index 0000000..720a779 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/utils.js @@ -0,0 +1,73 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const is = require('../utils/is.js'); +const normalize = require('../utils/normalize.js'); +const worldwide = require('../utils/worldwide.js'); + +/** + * Formats the given values into a string. + * + * @param values - The values to format. + * @param normalizeDepth - The depth to normalize the values. + * @param normalizeMaxBreadth - The max breadth to normalize the values. + * @returns The formatted string. + */ +function formatConsoleArgs(values, normalizeDepth, normalizeMaxBreadth) { + return 'util' in worldwide.GLOBAL_OBJ && typeof (worldwide.GLOBAL_OBJ ).util.format === 'function' + ? (worldwide.GLOBAL_OBJ ).util.format(...values) + : safeJoinConsoleArgs(values, normalizeDepth, normalizeMaxBreadth); +} + +/** + * Joins the given values into a string. + * + * @param values - The values to join. + * @param normalizeDepth - The depth to normalize the values. + * @param normalizeMaxBreadth - The max breadth to normalize the values. + * @returns The joined string. + */ +function safeJoinConsoleArgs(values, normalizeDepth, normalizeMaxBreadth) { + return values + .map(value => + is.isPrimitive(value) ? String(value) : JSON.stringify(normalize.normalize(value, normalizeDepth, normalizeMaxBreadth)), + ) + .join(' '); +} + +/** + * Checks if a string contains console substitution patterns like %s, %d, %i, %f, %o, %O, %c. + * + * @param str - The string to check + * @returns true if the string contains console substitution patterns + */ +function hasConsoleSubstitutions(str) { + // Match console substitution patterns: %s, %d, %i, %f, %o, %O, %c + return /%[sdifocO]/.test(str); +} + +/** + * Creates template attributes for multiple console arguments. + * + * @param args - The console arguments + * @returns An object with template and parameter attributes + */ +function createConsoleTemplateAttributes(firstArg, followingArgs) { + const attributes = {}; + + // Create template with placeholders for each argument + const template = new Array(followingArgs.length).fill('{}').join(' '); + attributes['sentry.message.template'] = `${firstArg} ${template}`; + + // Add each argument as a parameter + followingArgs.forEach((arg, index) => { + attributes[`sentry.message.parameter.${index}`] = arg; + }); + + return attributes; +} + +exports.createConsoleTemplateAttributes = createConsoleTemplateAttributes; +exports.formatConsoleArgs = formatConsoleArgs; +exports.hasConsoleSubstitutions = hasConsoleSubstitutions; +exports.safeJoinConsoleArgs = safeJoinConsoleArgs; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/utils.js.map new file mode 100644 index 0000000..7615e55 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/logs/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../src/logs/utils.ts"],"sourcesContent":["import { isPrimitive } from '../utils/is';\nimport { normalize } from '../utils/normalize';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ntype GlobalObjectWithUtil = typeof GLOBAL_OBJ & {\n util: {\n format: (...args: unknown[]) => string;\n };\n};\n\n/**\n * Formats the given values into a string.\n *\n * @param values - The values to format.\n * @param normalizeDepth - The depth to normalize the values.\n * @param normalizeMaxBreadth - The max breadth to normalize the values.\n * @returns The formatted string.\n */\nexport function formatConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ as GlobalObjectWithUtil).util.format === 'function'\n ? (GLOBAL_OBJ as GlobalObjectWithUtil).util.format(...values)\n : safeJoinConsoleArgs(values, normalizeDepth, normalizeMaxBreadth);\n}\n\n/**\n * Joins the given values into a string.\n *\n * @param values - The values to join.\n * @param normalizeDepth - The depth to normalize the values.\n * @param normalizeMaxBreadth - The max breadth to normalize the values.\n * @returns The joined string.\n */\nexport function safeJoinConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string {\n return values\n .map(value =>\n isPrimitive(value) ? String(value) : JSON.stringify(normalize(value, normalizeDepth, normalizeMaxBreadth)),\n )\n .join(' ');\n}\n\n/**\n * Checks if a string contains console substitution patterns like %s, %d, %i, %f, %o, %O, %c.\n *\n * @param str - The string to check\n * @returns true if the string contains console substitution patterns\n */\nexport function hasConsoleSubstitutions(str: string): boolean {\n // Match console substitution patterns: %s, %d, %i, %f, %o, %O, %c\n return /%[sdifocO]/.test(str);\n}\n\n/**\n * Creates template attributes for multiple console arguments.\n *\n * @param args - The console arguments\n * @returns An object with template and parameter attributes\n */\nexport function createConsoleTemplateAttributes(firstArg: unknown, followingArgs: unknown[]): Record {\n const attributes: Record = {};\n\n // Create template with placeholders for each argument\n const template = new Array(followingArgs.length).fill('{}').join(' ');\n attributes['sentry.message.template'] = `${firstArg} ${template}`;\n\n // Add each argument as a parameter\n followingArgs.forEach((arg, index) => {\n attributes[`sentry.message.parameter.${index}`] = arg;\n });\n\n return attributes;\n}\n"],"names":["GLOBAL_OBJ","isPrimitive","normalize"],"mappings":";;;;;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,MAAM,EAAa,cAAc,EAAU,mBAAmB,EAAkB;AAClH,EAAE,OAAO,MAAA,IAAUA,oBAAA,IAAc,OAAO,CAACA,oBAAA,GAAoC,IAAI,CAAC,WAAW;AAC7F,MAAM,CAACA,oBAAA,GAAoC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM;AAChE,MAAM,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,mBAAmB,CAAC;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,MAAM,EAAa,cAAc,EAAU,mBAAmB,EAAkB;AACpH,EAAE,OAAO;AACT,KAAK,GAAG,CAAC,KAAA;AACT,MAAMC,cAAW,CAAC,KAAK,CAAA,GAAI,MAAM,CAAC,KAAK,CAAA,GAAI,IAAI,CAAC,SAAS,CAACC,mBAAS,CAAC,KAAK,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AAChH;AACA,KAAK,IAAI,CAAC,GAAG,CAAC;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,GAAG,EAAmB;AAC9D;AACA,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,+BAA+B,CAAC,QAAQ,EAAW,aAAa,EAAsC;AACtH,EAAE,MAAM,UAAU,GAA4B,EAAE;;AAEhD;AACA,EAAE,MAAM,QAAA,GAAW,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACvE,EAAE,UAAU,CAAC,yBAAyB,CAAA,GAAI,CAAC,EAAA,QAAA,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;;AAEA;AACA,EAAA,aAAA,CAAA,OAAA,CAAA,CAAA,GAAA,EAAA,KAAA,KAAA;AACA,IAAA,UAAA,CAAA,CAAA,yBAAA,EAAA,KAAA,CAAA,CAAA,CAAA,GAAA,GAAA;AACA,EAAA,CAAA,CAAA;;AAEA,EAAA,OAAA,UAAA;AACA;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metadata.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metadata.js new file mode 100644 index 0000000..3119ad8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metadata.js @@ -0,0 +1,117 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const worldwide = require('./utils/worldwide.js'); + +/** Keys are source filename/url, values are metadata objects. */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const filenameMetadataMap = new Map(); +/** Set of stack strings that have already been parsed. */ +const parsedStacks = new Set(); + +/** + * Builds a map of filenames to module metadata from the global _sentryModuleMetadata object. + * This is useful for forwarding metadata from web workers to the main thread. + * + * @param parser - Stack parser to use for extracting filenames from stack traces + * @returns A map of filename to metadata object + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function getFilenameToMetadataMap(parser) { + if (!worldwide.GLOBAL_OBJ._sentryModuleMetadata) { + return {}; + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const filenameMap = {}; + + for (const stack of Object.keys(worldwide.GLOBAL_OBJ._sentryModuleMetadata)) { + const metadata = worldwide.GLOBAL_OBJ._sentryModuleMetadata[stack]; + const frames = parser(stack); + + for (const frame of frames.reverse()) { + if (frame.filename) { + filenameMap[frame.filename] = metadata; + break; + } + } + } + + return filenameMap; +} + +function ensureMetadataStacksAreParsed(parser) { + if (!worldwide.GLOBAL_OBJ._sentryModuleMetadata) { + return; + } + + for (const stack of Object.keys(worldwide.GLOBAL_OBJ._sentryModuleMetadata)) { + const metadata = worldwide.GLOBAL_OBJ._sentryModuleMetadata[stack]; + + if (parsedStacks.has(stack)) { + continue; + } + + // Ensure this stack doesn't get parsed again + parsedStacks.add(stack); + + const frames = parser(stack); + + // Go through the frames starting from the top of the stack and find the first one with a filename + for (const frame of frames.reverse()) { + if (frame.filename) { + // Save the metadata for this filename + filenameMetadataMap.set(frame.filename, metadata); + break; + } + } + } +} + +/** + * Retrieve metadata for a specific JavaScript file URL. + * + * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function getMetadataForUrl(parser, filename) { + ensureMetadataStacksAreParsed(parser); + return filenameMetadataMap.get(filename); +} + +/** + * Adds metadata to stack frames. + * + * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option. + */ +function addMetadataToStackFrames(parser, event) { + event.exception?.values?.forEach(exception => { + exception.stacktrace?.frames?.forEach(frame => { + if (!frame.filename || frame.module_metadata) { + return; + } + + const metadata = getMetadataForUrl(parser, frame.filename); + + if (metadata) { + frame.module_metadata = metadata; + } + }); + }); +} + +/** + * Strips metadata from stack frames. + */ +function stripMetadataFromStackFrames(event) { + event.exception?.values?.forEach(exception => { + exception.stacktrace?.frames?.forEach(frame => { + delete frame.module_metadata; + }); + }); +} + +exports.addMetadataToStackFrames = addMetadataToStackFrames; +exports.getFilenameToMetadataMap = getFilenameToMetadataMap; +exports.getMetadataForUrl = getMetadataForUrl; +exports.stripMetadataFromStackFrames = stripMetadataFromStackFrames; +//# sourceMappingURL=metadata.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metadata.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metadata.js.map new file mode 100644 index 0000000..65df196 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metadata.js","sources":["../../src/metadata.ts"],"sourcesContent":["import type { Event } from './types-hoist/event';\nimport type { StackParser } from './types-hoist/stacktrace';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\n/**\n * Builds a map of filenames to module metadata from the global _sentryModuleMetadata object.\n * This is useful for forwarding metadata from web workers to the main thread.\n *\n * @param parser - Stack parser to use for extracting filenames from stack traces\n * @returns A map of filename to metadata object\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getFilenameToMetadataMap(parser: StackParser): Record {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filenameMap: Record = {};\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n const frames = parser(stack);\n\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n filenameMap[frame.filename] = metadata;\n break;\n }\n }\n }\n\n return filenameMap;\n}\n\nfunction ensureMetadataStacksAreParsed(parser: StackParser): void {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getMetadataForUrl(parser: StackParser, filename: string): any | undefined {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nexport function addMetadataToStackFrames(parser: StackParser, event: Event): void {\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (!frame.filename || frame.module_metadata) {\n return;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n });\n });\n}\n\n/**\n * Strips metadata from stack frames.\n */\nexport function stripMetadataFromStackFrames(event: Event): void {\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n delete frame.module_metadata;\n });\n });\n}\n"],"names":["GLOBAL_OBJ"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/envelope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/envelope.js new file mode 100644 index 0000000..07cfe84 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/envelope.js @@ -0,0 +1,60 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const dsn = require('../utils/dsn.js'); +const envelope = require('../utils/envelope.js'); + +/** + * Creates a metric container envelope item for a list of metrics. + * + * @param items - The metrics to include in the envelope. + * @returns The created metric container envelope item. + */ +function createMetricContainerEnvelopeItem(items) { + return [ + { + type: 'trace_metric', + item_count: items.length, + content_type: 'application/vnd.sentry.items.trace-metric+json', + } , + { + items, + }, + ]; +} + +/** + * Creates an envelope for a list of metrics. + * + * Metrics from multiple traces can be included in the same envelope. + * + * @param metrics - The metrics to include in the envelope. + * @param metadata - The metadata to include in the envelope. + * @param tunnel - The tunnel to include in the envelope. + * @param dsn - The DSN to include in the envelope. + * @returns The created envelope. + */ +function createMetricEnvelope( + metrics, + metadata, + tunnel, + dsn$1, +) { + const headers = {}; + + if (metadata?.sdk) { + headers.sdk = { + name: metadata.sdk.name, + version: metadata.sdk.version, + }; + } + + if (!!tunnel && !!dsn$1) { + headers.dsn = dsn.dsnToString(dsn$1); + } + + return envelope.createEnvelope(headers, [createMetricContainerEnvelopeItem(metrics)]); +} + +exports.createMetricContainerEnvelopeItem = createMetricContainerEnvelopeItem; +exports.createMetricEnvelope = createMetricEnvelope; +//# sourceMappingURL=envelope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/envelope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/envelope.js.map new file mode 100644 index 0000000..c77dea3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/envelope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"envelope.js","sources":["../../../src/metrics/envelope.ts"],"sourcesContent":["import type { DsnComponents } from '../types-hoist/dsn';\nimport type { MetricContainerItem, MetricEnvelope } from '../types-hoist/envelope';\nimport type { SerializedMetric } from '../types-hoist/metric';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport { dsnToString } from '../utils/dsn';\nimport { createEnvelope } from '../utils/envelope';\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 */\nexport function createMetricContainerEnvelopeItem(items: Array): MetricContainerItem {\n return [\n {\n type: 'trace_metric',\n item_count: items.length,\n content_type: 'application/vnd.sentry.items.trace-metric+json',\n } as MetricContainerItem[0],\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 */\nexport function createMetricEnvelope(\n metrics: Array,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): MetricEnvelope {\n const headers: MetricEnvelope[0] = {};\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"],"names":["dsn","dsnToString","createEnvelope"],"mappings":";;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iCAAiC,CAAC,KAAK,EAAgD;AACvG,EAAE,OAAO;AACT,IAAI;AACJ,MAAM,IAAI,EAAE,cAAc;AAC1B,MAAM,UAAU,EAAE,KAAK,CAAC,MAAM;AAC9B,MAAM,YAAY,EAAE,gDAAgD;AACpE,KAAI;AACJ,IAAI;AACJ,MAAM,KAAK;AACX,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB;AACpC,EAAE,OAAO;AACT,EAAE,QAAQ;AACV,EAAE,MAAM;AACR,EAAEA,KAAG;AACL,EAAkB;AAClB,EAAE,MAAM,OAAO,GAAsB,EAAE;;AAEvC,EAAE,IAAI,QAAQ,EAAE,GAAG,EAAE;AACrB,IAAI,OAAO,CAAC,GAAA,GAAM;AAClB,MAAM,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI;AAC7B,MAAM,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO;AACnC,KAAK;AACL,EAAE;;AAEF,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAACA,KAAG,EAAE;AACzB,IAAI,OAAO,CAAC,GAAA,GAAMC,eAAW,CAACD,KAAG,CAAC;AAClC,EAAE;;AAEF,EAAE,OAAOE,uBAAc,CAAiB,OAAO,EAAE,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9F;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/internal.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/internal.js new file mode 100644 index 0000000..5c20f9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/internal.js @@ -0,0 +1,239 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const attributes = require('../attributes.js'); +const carrier = require('../carrier.js'); +const currentScopes = require('../currentScopes.js'); +const debugBuild = require('../debug-build.js'); +const debugLogger = require('../utils/debug-logger.js'); +const scopeData = require('../utils/scopeData.js'); +const spanOnScope = require('../utils/spanOnScope.js'); +const time = require('../utils/time.js'); +const traceInfo = require('../utils/trace-info.js'); +const envelope = require('./envelope.js'); + +const MAX_METRIC_BUFFER_SIZE = 1000; + +/** + * Sets a metric attribute if the value exists and the attribute key is not already present. + * + * @param metricAttributes - The metric attributes object to modify. + * @param key - The attribute key to set. + * @param value - The value to set (only sets if truthy and key not present). + * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true. + */ +function setMetricAttribute( + metricAttributes, + key, + value, + setEvenIfPresent = true, +) { + if (value && (setEvenIfPresent || !(key in metricAttributes))) { + metricAttributes[key] = value; + } +} + +/** + * Captures a serialized metric event and adds it to the metric buffer for the given client. + * + * @param client - A client. Uses the current client if not provided. + * @param serializedMetric - The serialized metric event to capture. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_captureSerializedMetric(client, serializedMetric) { + const bufferMap = _getBufferMap(); + const metricBuffer = _INTERNAL_getMetricBuffer(client); + + if (metricBuffer === undefined) { + bufferMap.set(client, [serializedMetric]); + } else { + if (metricBuffer.length >= MAX_METRIC_BUFFER_SIZE) { + _INTERNAL_flushMetricsBuffer(client, metricBuffer); + bufferMap.set(client, [serializedMetric]); + } else { + bufferMap.set(client, [...metricBuffer, serializedMetric]); + } + } +} + +/** + * Options for capturing a metric internally. + */ + +/** + * Enriches metric with all contextual attributes (user, SDK metadata, replay, etc.) + */ +function _enrichMetricAttributes(beforeMetric, client, user) { + const { release, environment } = client.getOptions(); + + const processedMetricAttributes = { + ...beforeMetric.attributes, + }; + + // Add user attributes + setMetricAttribute(processedMetricAttributes, 'user.id', user.id, false); + setMetricAttribute(processedMetricAttributes, 'user.email', user.email, false); + setMetricAttribute(processedMetricAttributes, 'user.name', user.username, false); + + // Add Sentry metadata + setMetricAttribute(processedMetricAttributes, 'sentry.release', release); + setMetricAttribute(processedMetricAttributes, 'sentry.environment', environment); + + // Add SDK metadata + const { name, version } = client.getSdkMetadata()?.sdk ?? {}; + setMetricAttribute(processedMetricAttributes, 'sentry.sdk.name', name); + setMetricAttribute(processedMetricAttributes, 'sentry.sdk.version', version); + + // Add replay metadata + const replay = client.getIntegrationByName + +('Replay'); + + const replayId = replay?.getReplayId(true); + setMetricAttribute(processedMetricAttributes, 'sentry.replay_id', replayId); + + if (replayId && replay?.getRecordingMode() === 'buffer') { + setMetricAttribute(processedMetricAttributes, 'sentry._internal.replay_is_buffering', true); + } + + return { + ...beforeMetric, + attributes: processedMetricAttributes, + }; +} + +/** + * Creates a serialized metric ready to be sent to Sentry. + */ +function _buildSerializedMetric( + metric, + client, + currentScope, + scopeAttributes, +) { + // Get trace context + const [, traceContext] = traceInfo._getTraceInfoFromScope(client, currentScope); + const span = spanOnScope._getSpanForScope(currentScope); + const traceId = span ? span.spanContext().traceId : traceContext?.trace_id; + const spanId = span ? span.spanContext().spanId : undefined; + + return { + timestamp: time.timestampInSeconds(), + trace_id: traceId ?? '', + span_id: spanId, + name: metric.name, + type: metric.type, + unit: metric.unit, + value: metric.value, + attributes: { + ...attributes.serializeAttributes(scopeAttributes), + ...attributes.serializeAttributes(metric.attributes, 'skip-undefined'), + }, + }; +} + +/** + * Captures a metric event and sends it to Sentry. + * + * @param metric - The metric event to capture. + * @param options - Options for capturing the metric. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_captureMetric(beforeMetric, options) { + const currentScope = options?.scope ?? currentScopes.getCurrentScope(); + const captureSerializedMetric = options?.captureSerializedMetric ?? _INTERNAL_captureSerializedMetric; + const client = currentScope?.getClient() ?? currentScopes.getClient(); + if (!client) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('No client available to capture metric.'); + return; + } + + const { _experiments, enableMetrics, beforeSendMetric } = client.getOptions(); + + // todo(v11): Remove the experimental flag + // eslint-disable-next-line deprecation/deprecation + const metricsEnabled = enableMetrics ?? _experiments?.enableMetrics ?? true; + + if (!metricsEnabled) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('metrics option not enabled, metric will not be captured.'); + return; + } + + // Enrich metric with contextual attributes + const { user, attributes: scopeAttributes } = scopeData.getCombinedScopeData(currentScopes.getIsolationScope(), currentScope); + const enrichedMetric = _enrichMetricAttributes(beforeMetric, client, user); + + client.emit('processMetric', enrichedMetric); + + // todo(v11): Remove the experimental `beforeSendMetric` + // eslint-disable-next-line deprecation/deprecation + const beforeSendCallback = beforeSendMetric || _experiments?.beforeSendMetric; + const processedMetric = beforeSendCallback ? beforeSendCallback(enrichedMetric) : enrichedMetric; + + if (!processedMetric) { + debugBuild.DEBUG_BUILD && debugLogger.debug.log('`beforeSendMetric` returned `null`, will not send metric.'); + return; + } + + const serializedMetric = _buildSerializedMetric(processedMetric, client, currentScope, scopeAttributes); + + debugBuild.DEBUG_BUILD && debugLogger.debug.log('[Metric]', serializedMetric); + + captureSerializedMetric(client, serializedMetric); + + client.emit('afterCaptureMetric', processedMetric); +} + +/** + * Flushes the metrics buffer to Sentry. + * + * @param client - A client. + * @param maybeMetricBuffer - A metric buffer. Uses the metric buffer for the given client if not provided. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_flushMetricsBuffer(client, maybeMetricBuffer) { + const metricBuffer = maybeMetricBuffer ?? _INTERNAL_getMetricBuffer(client) ?? []; + if (metricBuffer.length === 0) { + return; + } + + const clientOptions = client.getOptions(); + const envelope$1 = envelope.createMetricEnvelope(metricBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn()); + + // Clear the metric buffer after envelopes have been constructed. + _getBufferMap().set(client, []); + + client.emit('flushMetrics'); + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + client.sendEnvelope(envelope$1); +} + +/** + * Returns the metric buffer for a given client. + * + * Exported for testing purposes. + * + * @param client - The client to get the metric buffer for. + * @returns The metric buffer for the given client. + */ +function _INTERNAL_getMetricBuffer(client) { + return _getBufferMap().get(client); +} + +function _getBufferMap() { + // The reference to the Client <> MetricBuffer map is stored on the carrier to ensure it's always the same + return carrier.getGlobalSingleton('clientToMetricBufferMap', () => new WeakMap()); +} + +exports._INTERNAL_captureMetric = _INTERNAL_captureMetric; +exports._INTERNAL_captureSerializedMetric = _INTERNAL_captureSerializedMetric; +exports._INTERNAL_flushMetricsBuffer = _INTERNAL_flushMetricsBuffer; +exports._INTERNAL_getMetricBuffer = _INTERNAL_getMetricBuffer; +//# sourceMappingURL=internal.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/internal.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/internal.js.map new file mode 100644 index 0000000..4a5b8e6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/internal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal.js","sources":["../../../src/metrics/internal.ts"],"sourcesContent":["import { type RawAttributes, serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Metric, SerializedMetric } from '../types-hoist/metric';\nimport type { User } from '../types-hoist/user';\nimport { debug } from '../utils/debug-logger';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { createMetricEnvelope } from './envelope';\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: Record,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\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 */\nexport function _INTERNAL_captureSerializedMetric(client: Client, serializedMetric: SerializedMetric): void {\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 */\nexport interface InternalCaptureMetricOptions {\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\n\n /**\n * A function to capture the serialized metric.\n */\n captureSerializedMetric?: (client: Client, metric: SerializedMetric) => void;\n}\n\n/**\n * Enriches metric with all contextual attributes (user, SDK metadata, replay, etc.)\n */\nfunction _enrichMetricAttributes(beforeMetric: Metric, client: Client, user: User): Metric {\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 Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\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: Metric,\n client: Client,\n currentScope: Scope,\n scopeAttributes: RawAttributes> | undefined,\n): SerializedMetric {\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 return {\n timestamp: timestampInSeconds(),\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 },\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 */\nexport function _INTERNAL_captureMetric(beforeMetric: Metric, options?: InternalCaptureMetricOptions): void {\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 */\nexport function _INTERNAL_flushMetricsBuffer(client: Client, maybeMetricBuffer?: Array): void {\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 */\nexport function _INTERNAL_getMetricBuffer(client: Client): Array | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap> {\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"],"names":["_getTraceInfoFromScope","_getSpanForScope","timestampInSeconds","serializeAttributes","getCurrentScope","getClient","DEBUG_BUILD","debug","getCombinedScopeData","getIsolationScope","envelope","createMetricEnvelope","getGlobalSingleton"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/public-api.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/public-api.js new file mode 100644 index 0000000..bbbc3fd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/public-api.js @@ -0,0 +1,129 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const internal = require('./internal.js'); + +/** + * Options for capturing a metric. + */ + +/** + * Capture a metric with the given type, name, and value. + * + * @param type - The type of the metric. + * @param name - The name of the metric. + * @param value - The value of the metric. + * @param options - Options for capturing the metric. + */ +function captureMetric(type, name, value, options) { + internal._INTERNAL_captureMetric( + { type, name, value, unit: options?.unit, attributes: options?.attributes }, + { scope: options?.scope }, + ); +} + +/** + * @summary Increment a counter metric. Requires the `_experiments.enableMetrics` option to be enabled. + * + * @param name - The name of the counter metric. + * @param value - The value to increment by (defaults to 1). + * @param options - Options for capturing the metric. + * + * @example + * + * ``` + * Sentry.metrics.count('api.requests', 1, { + * attributes: { + * endpoint: '/api/users', + * method: 'GET', + * status: 200 + * } + * }); + * ``` + * + * @example With custom value + * + * ``` + * Sentry.metrics.count('items.processed', 5, { + * attributes: { + * processor: 'batch-processor', + * queue: 'high-priority' + * } + * }); + * ``` + */ +function count(name, value = 1, options) { + captureMetric('counter', name, value, options); +} + +/** + * @summary Set a gauge metric to a specific value. Requires the `_experiments.enableMetrics` option to be enabled. + * + * @param name - The name of the gauge metric. + * @param value - The current value of the gauge. + * @param options - Options for capturing the metric. + * + * @example + * + * ``` + * Sentry.metrics.gauge('memory.usage', 1024, { + * unit: 'megabyte', + * attributes: { + * process: 'web-server', + * region: 'us-east-1' + * } + * }); + * ``` + * + * @example Without unit + * + * ``` + * Sentry.metrics.gauge('active.connections', 42, { + * attributes: { + * server: 'api-1', + * protocol: 'websocket' + * } + * }); + * ``` + */ +function gauge(name, value, options) { + captureMetric('gauge', name, value, options); +} + +/** + * @summary Record a value in a distribution metric. Requires the `_experiments.enableMetrics` option to be enabled. + * + * @param name - The name of the distribution metric. + * @param value - The value to record in the distribution. + * @param options - Options for capturing the metric. + * + * @example + * + * ``` + * Sentry.metrics.distribution('task.duration', 500, { + * unit: 'millisecond', + * attributes: { + * task: 'data-processing', + * priority: 'high' + * } + * }); + * ``` + * + * @example Without unit + * + * ``` + * Sentry.metrics.distribution('batch.size', 100, { + * attributes: { + * processor: 'batch-1', + * type: 'async' + * } + * }); + * ``` + */ +function distribution(name, value, options) { + captureMetric('distribution', name, value, options); +} + +exports.count = count; +exports.distribution = distribution; +exports.gauge = gauge; +//# sourceMappingURL=public-api.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/public-api.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/public-api.js.map new file mode 100644 index 0000000..8a20fed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/metrics/public-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"public-api.js","sources":["../../../src/metrics/public-api.ts"],"sourcesContent":["import type { Scope } from '../scope';\nimport type { Metric, MetricType } from '../types-hoist/metric';\nimport { _INTERNAL_captureMetric } from './internal';\n\n/**\n * Options for capturing a metric.\n */\nexport interface MetricOptions {\n /**\n * The unit of the metric value.\n */\n unit?: string;\n\n /**\n * Arbitrary structured data that stores information about the metric.\n */\n attributes?: Metric['attributes'];\n\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\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: MetricType, name: string, value: number, options?: MetricOptions): void {\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. Requires the `_experiments.enableMetrics` option to be enabled.\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 */\nexport function count(name: string, value: number = 1, options?: MetricOptions): void {\n captureMetric('counter', name, value, options);\n}\n\n/**\n * @summary Set a gauge metric to a specific value. Requires the `_experiments.enableMetrics` option to be enabled.\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 */\nexport function gauge(name: string, value: number, options?: MetricOptions): void {\n captureMetric('gauge', name, value, options);\n}\n\n/**\n * @summary Record a value in a distribution metric. Requires the `_experiments.enableMetrics` option to be enabled.\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 */\nexport function distribution(name: string, value: number, options?: MetricOptions): void {\n captureMetric('distribution', name, value, options);\n}\n"],"names":["_INTERNAL_captureMetric"],"mappings":";;;;AAIA;AACA;AACA;;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAc,IAAI,EAAU,KAAK,EAAU,OAAO,EAAwB;AACrG,EAAEA,gCAAuB;AACzB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY;AAC/E,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO;AAC7B,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,IAAI,EAAU,KAAK,GAAW,CAAC,EAAE,OAAO,EAAwB;AACtF,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,IAAI,EAAU,KAAK,EAAU,OAAO,EAAwB;AAClF,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,IAAI,EAAU,KAAK,EAAU,OAAO,EAAwB;AACzF,EAAE,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AACrD;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/profiling.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/profiling.js new file mode 100644 index 0000000..ca42206 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/profiling.js @@ -0,0 +1,80 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('./currentScopes.js'); +const debugBuild = require('./debug-build.js'); +const debugLogger = require('./utils/debug-logger.js'); + +function isProfilingIntegrationWithProfiler( + integration, +) { + return ( + !!integration && + typeof integration['_profiler'] !== 'undefined' && + typeof integration['_profiler']['start'] === 'function' && + typeof integration['_profiler']['stop'] === 'function' + ); +} +/** + * Starts the Sentry continuous profiler. + * This mode is exclusive with the transaction profiler and will only work if the profilesSampleRate is set to a falsy value. + * In continuous profiling mode, the profiler will keep reporting profile chunks to Sentry until it is stopped, which allows for continuous profiling of the application. + */ +function startProfiler() { + const client = currentScopes.getClient(); + if (!client) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('No Sentry client available, profiling is not started'); + return; + } + + const integration = client.getIntegrationByName('ProfilingIntegration'); + + if (!integration) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('ProfilingIntegration is not available'); + return; + } + + if (!isProfilingIntegrationWithProfiler(integration)) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Profiler is not available on profiling integration.'); + return; + } + + integration._profiler.start(); +} + +/** + * Stops the Sentry continuous profiler. + * Calls to stop will stop the profiler and flush the currently collected profile data to Sentry. + */ +function stopProfiler() { + const client = currentScopes.getClient(); + if (!client) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('No Sentry client available, profiling is not started'); + return; + } + + const integration = client.getIntegrationByName('ProfilingIntegration'); + if (!integration) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('ProfilingIntegration is not available'); + return; + } + + if (!isProfilingIntegrationWithProfiler(integration)) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Profiler is not available on profiling integration.'); + return; + } + + integration._profiler.stop(); +} + +/** + * Profiler namespace for controlling the profiler in 'manual' mode. + * + * Requires the `nodeProfilingIntegration` from the `@sentry/profiling-node` package. + */ +const profiler = { + startProfiler, + stopProfiler, +}; + +exports.profiler = profiler; +//# sourceMappingURL=profiling.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/profiling.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/profiling.js.map new file mode 100644 index 0000000..5662367 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/profiling.js.map @@ -0,0 +1 @@ +{"version":3,"file":"profiling.js","sources":["../../src/profiling.ts"],"sourcesContent":["import { getClient } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Profiler, ProfilingIntegration } from './types-hoist/profiling';\nimport { debug } from './utils/debug-logger';\n\nfunction isProfilingIntegrationWithProfiler(\n integration: ProfilingIntegration | undefined,\n): integration is ProfilingIntegration {\n return (\n !!integration &&\n typeof integration['_profiler'] !== 'undefined' &&\n typeof integration['_profiler']['start'] === 'function' &&\n typeof integration['_profiler']['stop'] === 'function'\n );\n}\n/**\n * Starts the Sentry continuous profiler.\n * This mode is exclusive with the transaction profiler and will only work if the profilesSampleRate is set to a falsy value.\n * In continuous profiling mode, the profiler will keep reporting profile chunks to Sentry until it is stopped, which allows for continuous profiling of the application.\n */\nfunction startProfiler(): void {\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started');\n return;\n }\n\n const integration = client.getIntegrationByName('ProfilingIntegration');\n\n if (!integration) {\n DEBUG_BUILD && debug.warn('ProfilingIntegration is not available');\n return;\n }\n\n if (!isProfilingIntegrationWithProfiler(integration)) {\n DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.');\n return;\n }\n\n integration._profiler.start();\n}\n\n/**\n * Stops the Sentry continuous profiler.\n * Calls to stop will stop the profiler and flush the currently collected profile data to Sentry.\n */\nfunction stopProfiler(): void {\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started');\n return;\n }\n\n const integration = client.getIntegrationByName('ProfilingIntegration');\n if (!integration) {\n DEBUG_BUILD && debug.warn('ProfilingIntegration is not available');\n return;\n }\n\n if (!isProfilingIntegrationWithProfiler(integration)) {\n DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.');\n return;\n }\n\n integration._profiler.stop();\n}\n\n/**\n * Profiler namespace for controlling the profiler in 'manual' mode.\n *\n * Requires the `nodeProfilingIntegration` from the `@sentry/profiling-node` package.\n */\nexport const profiler: Profiler = {\n startProfiler,\n stopProfiler,\n};\n"],"names":["getClient","DEBUG_BUILD","debug"],"mappings":";;;;;;AAKA,SAAS,kCAAkC;AAC3C,EAAE,WAAW;AACb,EAAuC;AACvC,EAAE;AACF,IAAI,CAAC,CAAC,WAAA;AACN,IAAI,OAAO,WAAW,CAAC,WAAW,CAAA,KAAM,WAAA;AACxC,IAAI,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC,OAAO,CAAA,KAAM,UAAA;AACjD,IAAI,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,GAAS;AAC/B,EAAE,MAAM,MAAA,GAASA,uBAAS,EAAE;AAC5B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAIC,0BAAeC,iBAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC;AACrF,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,cAAc,MAAM,CAAC,oBAAoB,CAAuB,sBAAsB,CAAC;;AAE/F,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,IAAID,0BAAeC,iBAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC;AACtE,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,CAAC,kCAAkC,CAAC,WAAW,CAAC,EAAE;AACxD,IAAID,0BAAeC,iBAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC;AACpF,IAAI;AACJ,EAAE;;AAEF,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE;AAC/B;;AAEA;AACA;AACA;AACA;AACA,SAAS,YAAY,GAAS;AAC9B,EAAE,MAAM,MAAA,GAASF,uBAAS,EAAE;AAC5B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAIC,0BAAeC,iBAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC;AACrF,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,cAAc,MAAM,CAAC,oBAAoB,CAAuB,sBAAsB,CAAC;AAC/F,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,IAAID,0BAAeC,iBAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC;AACtE,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,CAAC,kCAAkC,CAAC,WAAW,CAAC,EAAE;AACxD,IAAID,0BAAeC,iBAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC;AACpF,IAAI;AACJ,EAAE;;AAEF,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAQ,GAAa;AAClC,EAAE,aAAa;AACf,EAAE,YAAY;AACd;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/scope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/scope.js new file mode 100644 index 0000000..e96558f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/scope.js @@ -0,0 +1,703 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('./debug-build.js'); +const session = require('./session.js'); +const debugLogger = require('./utils/debug-logger.js'); +const is = require('./utils/is.js'); +const merge = require('./utils/merge.js'); +const misc = require('./utils/misc.js'); +const propagationContext = require('./utils/propagationContext.js'); +const randomSafeContext = require('./utils/randomSafeContext.js'); +const spanOnScope = require('./utils/spanOnScope.js'); +const string = require('./utils/string.js'); +const time = require('./utils/time.js'); + +/** + * Default value for maximum number of breadcrumbs added to an event. + */ +const DEFAULT_MAX_BREADCRUMBS = 100; + +/** + * A context to be used for capturing an event. + * This can either be a Scope, or a partial ScopeContext, + * or a callback that receives the current scope and returns a new scope to use. + */ + +/** + * Holds additional event information. + */ +class Scope { + /** Flag if notifying is happening. */ + + /** Callback for client to receive scope changes. */ + + /** Callback list that will be called during event processing. */ + + /** Array of breadcrumbs. */ + + /** User */ + + /** Tags */ + + /** Attributes */ + + /** Extra */ + + /** Contexts */ + + /** Attachments */ + + /** Propagation Context for distributed tracing */ + + /** + * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get + * sent to Sentry + */ + + /** Fingerprint */ + + /** Severity */ + + /** + * Transaction Name + * + * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects. + * It's purpose is to assign a transaction to the scope that's added to non-transaction events. + */ + + /** Session */ + + /** The client on this scope */ + + /** Contains the last event id of a captured event. */ + + /** Conversation ID */ + + // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method. + + constructor() { + this._notifyingListeners = false; + this._scopeListeners = []; + this._eventProcessors = []; + this._breadcrumbs = []; + this._attachments = []; + this._user = {}; + this._tags = {}; + this._attributes = {}; + this._extra = {}; + this._contexts = {}; + this._sdkProcessingMetadata = {}; + this._propagationContext = { + traceId: propagationContext.generateTraceId(), + sampleRand: randomSafeContext.safeMathRandom(), + }; + } + + /** + * Clone all data from this scope into a new scope. + */ + clone() { + const newScope = new Scope(); + newScope._breadcrumbs = [...this._breadcrumbs]; + newScope._tags = { ...this._tags }; + newScope._attributes = { ...this._attributes }; + newScope._extra = { ...this._extra }; + newScope._contexts = { ...this._contexts }; + if (this._contexts.flags) { + // We need to copy the `values` array so insertions on a cloned scope + // won't affect the original array. + newScope._contexts.flags = { + values: [...this._contexts.flags.values], + }; + } + + newScope._user = this._user; + newScope._level = this._level; + newScope._session = this._session; + newScope._transactionName = this._transactionName; + newScope._fingerprint = this._fingerprint; + newScope._eventProcessors = [...this._eventProcessors]; + newScope._attachments = [...this._attachments]; + newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata }; + newScope._propagationContext = { ...this._propagationContext }; + newScope._client = this._client; + newScope._lastEventId = this._lastEventId; + newScope._conversationId = this._conversationId; + + spanOnScope._setSpanForScope(newScope, spanOnScope._getSpanForScope(this)); + + return newScope; + } + + /** + * Update the client assigned to this scope. + * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client, + * as well as manually created scopes. + */ + setClient(client) { + this._client = client; + } + + /** + * Set the ID of the last captured error event. + * This is generally only captured on the isolation scope. + */ + setLastEventId(lastEventId) { + this._lastEventId = lastEventId; + } + + /** + * Get the client assigned to this scope. + */ + getClient() { + return this._client ; + } + + /** + * Get the ID of the last captured error event. + * This is generally only available on the isolation scope. + */ + lastEventId() { + return this._lastEventId; + } + + /** + * @inheritDoc + */ + addScopeListener(callback) { + this._scopeListeners.push(callback); + } + + /** + * Add an event processor that will be called before an event is sent. + */ + addEventProcessor(callback) { + this._eventProcessors.push(callback); + return this; + } + + /** + * Set the user for this scope. + * Set to `null` to unset the user. + */ + setUser(user) { + // If null is passed we want to unset everything, but still define keys, + // so that later down in the pipeline any existing values are cleared. + this._user = user || { + email: undefined, + id: undefined, + ip_address: undefined, + username: undefined, + }; + + if (this._session) { + session.updateSession(this._session, { user }); + } + + this._notifyScopeListeners(); + return this; + } + + /** + * Get the user from this scope. + */ + getUser() { + return this._user; + } + + /** + * Set the conversation ID for this scope. + * Set to `null` to unset the conversation ID. + */ + setConversationId(conversationId) { + this._conversationId = conversationId || undefined; + this._notifyScopeListeners(); + return this; + } + + /** + * Set an object that will be merged into existing tags on the scope, + * and will be sent as tags data with the event. + */ + setTags(tags) { + this._tags = { + ...this._tags, + ...tags, + }; + this._notifyScopeListeners(); + return this; + } + + /** + * Set a single tag that will be sent as tags data with the event. + */ + setTag(key, value) { + return this.setTags({ [key]: value }); + } + + /** + * Sets attributes onto the scope. + * + * These attributes are currently applied to logs and metrics. + * In the future, they will also be applied to spans. + * + * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for + * more complex attribute types. We'll add this support in the future but already specify the wider type to + * avoid a breaking change in the future. + * + * @param newAttributes - The attributes to set on the scope. You can either pass in key-value pairs, or + * an object with a `value` and an optional `unit` (if applicable to your attribute). + * + * @example + * ```typescript + * scope.setAttributes({ + * is_admin: true, + * payment_selection: 'credit_card', + * render_duration: { value: 'render_duration', unit: 'ms' }, + * }); + * ``` + */ + setAttributes(newAttributes) { + this._attributes = { + ...this._attributes, + ...newAttributes, + }; + + this._notifyScopeListeners(); + return this; + } + + /** + * Sets an attribute onto the scope. + * + * These attributes are currently applied to logs and metrics. + * In the future, they will also be applied to spans. + * + * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for + * more complex attribute types. We'll add this support in the future but already specify the wider type to + * avoid a breaking change in the future. + * + * @param key - The attribute key. + * @param value - the attribute value. You can either pass in a raw value, or an attribute + * object with a `value` and an optional `unit` (if applicable to your attribute). + * + * @example + * ```typescript + * scope.setAttribute('is_admin', true); + * scope.setAttribute('render_duration', { value: 'render_duration', unit: 'ms' }); + * ``` + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + setAttribute( + key, + value, + ) { + return this.setAttributes({ [key]: value }); + } + + /** + * Removes the attribute with the given key from the scope. + * + * @param key - The attribute key. + * + * @example + * ```typescript + * scope.removeAttribute('is_admin'); + * ``` + */ + removeAttribute(key) { + if (key in this._attributes) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete this._attributes[key]; + this._notifyScopeListeners(); + } + return this; + } + + /** + * Set an object that will be merged into existing extra on the scope, + * and will be sent as extra data with the event. + */ + setExtras(extras) { + this._extra = { + ...this._extra, + ...extras, + }; + this._notifyScopeListeners(); + return this; + } + + /** + * Set a single key:value extra entry that will be sent as extra data with the event. + */ + setExtra(key, extra) { + this._extra = { ...this._extra, [key]: extra }; + this._notifyScopeListeners(); + return this; + } + + /** + * Sets the fingerprint on the scope to send with the events. + * @param {string[]} fingerprint Fingerprint to group events in Sentry. + */ + setFingerprint(fingerprint) { + this._fingerprint = fingerprint; + this._notifyScopeListeners(); + return this; + } + + /** + * Sets the level on the scope for future events. + */ + setLevel(level) { + this._level = level; + this._notifyScopeListeners(); + return this; + } + + /** + * Sets the transaction name on the scope so that the name of e.g. taken server route or + * the page location is attached to future events. + * + * IMPORTANT: Calling this function does NOT change the name of the currently active + * root span. If you want to change the name of the active root span, use + * `Sentry.updateSpanName(rootSpan, 'new name')` instead. + * + * By default, the SDK updates the scope's transaction name automatically on sensible + * occasions, such as a page navigation or when handling a new request on the server. + */ + setTransactionName(name) { + this._transactionName = name; + this._notifyScopeListeners(); + return this; + } + + /** + * Sets context data with the given name. + * Data passed as context will be normalized. You can also pass `null` to unset the context. + * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key. + */ + setContext(key, context) { + if (context === null) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete this._contexts[key]; + } else { + this._contexts[key] = context; + } + + this._notifyScopeListeners(); + return this; + } + + /** + * Set the session for the scope. + */ + setSession(session) { + if (!session) { + delete this._session; + } else { + this._session = session; + } + this._notifyScopeListeners(); + return this; + } + + /** + * Get the session from the scope. + */ + getSession() { + return this._session; + } + + /** + * Updates the scope with provided data. Can work in three variations: + * - plain object containing updatable attributes + * - Scope instance that'll extract the attributes from + * - callback function that'll receive the current scope as an argument and allow for modifications + */ + update(captureContext) { + if (!captureContext) { + return this; + } + + const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext; + + const scopeInstance = + scopeToMerge instanceof Scope + ? scopeToMerge.getScopeData() + : is.isPlainObject(scopeToMerge) + ? (captureContext ) + : undefined; + + const { + tags, + attributes, + extra, + user, + contexts, + level, + fingerprint = [], + propagationContext, + conversationId, + } = scopeInstance || {}; + + this._tags = { ...this._tags, ...tags }; + this._attributes = { ...this._attributes, ...attributes }; + this._extra = { ...this._extra, ...extra }; + this._contexts = { ...this._contexts, ...contexts }; + + if (user && Object.keys(user).length) { + this._user = user; + } + + if (level) { + this._level = level; + } + + if (fingerprint.length) { + this._fingerprint = fingerprint; + } + + if (propagationContext) { + this._propagationContext = propagationContext; + } + + if (conversationId) { + this._conversationId = conversationId; + } + + return this; + } + + /** + * Clears the current scope and resets its properties. + * Note: The client will not be cleared. + */ + clear() { + // client is not cleared here on purpose! + this._breadcrumbs = []; + this._tags = {}; + this._attributes = {}; + this._extra = {}; + this._user = {}; + this._contexts = {}; + this._level = undefined; + this._transactionName = undefined; + this._fingerprint = undefined; + this._session = undefined; + this._conversationId = undefined; + spanOnScope._setSpanForScope(this, undefined); + this._attachments = []; + this.setPropagationContext({ + traceId: propagationContext.generateTraceId(), + sampleRand: randomSafeContext.safeMathRandom(), + }); + + this._notifyScopeListeners(); + return this; + } + + /** + * Adds a breadcrumb to the scope. + * By default, the last 100 breadcrumbs are kept. + */ + addBreadcrumb(breadcrumb, maxBreadcrumbs) { + const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS; + + // No data has been changed, so don't notify scope listeners + if (maxCrumbs <= 0) { + return this; + } + + const mergedBreadcrumb = { + timestamp: time.dateTimestampInSeconds(), + ...breadcrumb, + // Breadcrumb messages can theoretically be infinitely large and they're held in memory so we truncate them not to leak (too much) memory + message: breadcrumb.message ? string.truncate(breadcrumb.message, 2048) : breadcrumb.message, + }; + + this._breadcrumbs.push(mergedBreadcrumb); + if (this._breadcrumbs.length > maxCrumbs) { + this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs); + this._client?.recordDroppedEvent('buffer_overflow', 'log_item'); + } + + this._notifyScopeListeners(); + + return this; + } + + /** + * Get the last breadcrumb of the scope. + */ + getLastBreadcrumb() { + return this._breadcrumbs[this._breadcrumbs.length - 1]; + } + + /** + * Clear all breadcrumbs from the scope. + */ + clearBreadcrumbs() { + this._breadcrumbs = []; + this._notifyScopeListeners(); + return this; + } + + /** + * Add an attachment to the scope. + */ + addAttachment(attachment) { + this._attachments.push(attachment); + return this; + } + + /** + * Clear all attachments from the scope. + */ + clearAttachments() { + this._attachments = []; + return this; + } + + /** + * Get the data of this scope, which should be applied to an event during processing. + */ + 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: spanOnScope._getSpanForScope(this), + conversationId: this._conversationId, + }; + } + + /** + * Add data which will be accessible during event processing but won't get sent to Sentry. + */ + setSDKProcessingMetadata(newData) { + this._sdkProcessingMetadata = merge.merge(this._sdkProcessingMetadata, newData, 2); + return this; + } + + /** + * Add propagation context to the scope, used for distributed tracing + */ + setPropagationContext(context) { + this._propagationContext = context; + return this; + } + + /** + * Get propagation context from the scope, used for distributed tracing + */ + getPropagationContext() { + return this._propagationContext; + } + + /** + * Capture an exception for this scope. + * + * @returns {string} The id of the captured Sentry event. + */ + captureException(exception, hint) { + const eventId = hint?.event_id || misc.uuid4(); + + if (!this._client) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('No client configured on scope - will not capture exception!'); + return eventId; + } + + const syntheticException = new Error('Sentry syntheticException'); + + this._client.captureException( + exception, + { + originalException: exception, + syntheticException, + ...hint, + event_id: eventId, + }, + this, + ); + + return eventId; + } + + /** + * Capture a message for this scope. + * + * @returns {string} The id of the captured message. + */ + captureMessage(message, level, hint) { + const eventId = hint?.event_id || misc.uuid4(); + + if (!this._client) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('No client configured on scope - will not capture message!'); + return eventId; + } + + const syntheticException = hint?.syntheticException ?? new Error(message); + + this._client.captureMessage( + message, + level, + { + originalException: message, + syntheticException, + ...hint, + event_id: eventId, + }, + this, + ); + + return eventId; + } + + /** + * Capture a Sentry event for this scope. + * + * @returns {string} The id of the captured event. + */ + captureEvent(event, hint) { + const eventId = hint?.event_id || misc.uuid4(); + + if (!this._client) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('No client configured on scope - will not capture event!'); + return eventId; + } + + this._client.captureEvent(event, { ...hint, event_id: eventId }, this); + + return eventId; + } + + /** + * This will be called on every set call. + */ + _notifyScopeListeners() { + // We need this check for this._notifyingListeners to be able to work on scope during updates + // If this check is not here we'll produce endless recursion when something is done with the scope + // during the callback. + if (!this._notifyingListeners) { + this._notifyingListeners = true; + this._scopeListeners.forEach(callback => { + callback(this); + }); + this._notifyingListeners = false; + } + } +} + +exports.Scope = Scope; +//# sourceMappingURL=scope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/scope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/scope.js.map new file mode 100644 index 0000000..675e912 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/scope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scope.js","sources":["../../src/scope.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type { AttributeObject, RawAttribute, RawAttributes } from './attributes';\nimport type { Client } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport { updateSession } from './session';\nimport type { Attachment } from './types-hoist/attachment';\nimport type { Breadcrumb } from './types-hoist/breadcrumb';\nimport type { Context, Contexts } from './types-hoist/context';\nimport type { DynamicSamplingContext } from './types-hoist/envelope';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { Extra, Extras } from './types-hoist/extra';\nimport type { Primitive } from './types-hoist/misc';\nimport type { RequestEventData } from './types-hoist/request';\nimport type { Session } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { Span } from './types-hoist/span';\nimport type { PropagationContext } from './types-hoist/tracing';\nimport type { User } from './types-hoist/user';\nimport { debug } from './utils/debug-logger';\nimport { isPlainObject } from './utils/is';\nimport { merge } from './utils/merge';\nimport { uuid4 } from './utils/misc';\nimport { generateTraceId } from './utils/propagationContext';\nimport { safeMathRandom } from './utils/randomSafeContext';\nimport { _getSpanForScope, _setSpanForScope } from './utils/spanOnScope';\nimport { truncate } from './utils/string';\nimport { dateTimestampInSeconds } from './utils/time';\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 */\nexport type CaptureContext = Scope | Partial | ((scope: Scope) => Scope);\n\n/**\n * Data that can be converted to a Scope.\n */\nexport interface ScopeContext {\n user: User;\n level: SeverityLevel;\n extra: Extras;\n contexts: Contexts;\n tags: { [key: string]: Primitive };\n attributes?: RawAttributes>;\n fingerprint: string[];\n propagationContext: PropagationContext;\n conversationId?: string;\n}\n\nexport interface SdkProcessingMetadata {\n [key: string]: unknown;\n requestSession?: {\n status: 'ok' | 'errored' | 'crashed';\n };\n normalizedRequest?: RequestEventData;\n dynamicSamplingContext?: Partial;\n capturedSpanScope?: Scope;\n capturedSpanIsolationScope?: Scope;\n spanCountBeforeProcessing?: number;\n ipAddress?: string;\n}\n\n/**\n * Normalized data of the Scope, ready to be used.\n */\nexport interface ScopeData {\n eventProcessors: EventProcessor[];\n breadcrumbs: Breadcrumb[];\n user: User;\n tags: { [key: string]: Primitive };\n // TODO(v11): Make this a required field (could be subtly breaking if we did it today)\n attributes?: RawAttributes>;\n extra: Extras;\n contexts: Contexts;\n attachments: Attachment[];\n propagationContext: PropagationContext;\n sdkProcessingMetadata: SdkProcessingMetadata;\n fingerprint: string[];\n level?: SeverityLevel;\n transactionName?: string;\n span?: Span;\n conversationId?: string;\n}\n\n/**\n * Holds additional event information.\n */\nexport class Scope {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called during event processing. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Attributes */\n protected _attributes: RawAttributes>;\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /** Propagation Context for distributed tracing */\n protected _propagationContext: PropagationContext;\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 protected _sdkProcessingMetadata: SdkProcessingMetadata;\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: SeverityLevel;\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 protected _transactionName?: string;\n\n /** Session */\n protected _session?: Session;\n\n /** The client on this scope */\n protected _client?: Client;\n\n /** Contains the last event id of a captured event. */\n protected _lastEventId?: string;\n\n /** Conversation ID */\n protected _conversationId?: string;\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 public 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 public clone(): Scope {\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 public setClient(client: Client | undefined): void {\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 public setLastEventId(lastEventId: string | undefined): void {\n this._lastEventId = lastEventId;\n }\n\n /**\n * Get the client assigned to this scope.\n */\n public getClient(): C | undefined {\n return this._client as C | undefined;\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 public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * Add an event processor that will be called before an event is sent.\n */\n public addEventProcessor(callback: EventProcessor): this {\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 public setUser(user: User | null): this {\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 public getUser(): User | undefined {\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 public setConversationId(conversationId: string | null | undefined): this {\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 public setTags(tags: { [key: string]: Primitive }): this {\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 public setTag(key: string, value: Primitive): this {\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 public setAttributes>(newAttributes: RawAttributes): this {\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 public setAttribute extends { value: any } | { unit: any } ? AttributeObject : unknown>(\n key: string,\n value: RawAttribute,\n ): this {\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 public removeAttribute(key: string): this {\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 public setExtras(extras: Extras): this {\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 public setExtra(key: string, extra: Extra): this {\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 public setFingerprint(fingerprint: string[]): this {\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 public setLevel(level: SeverityLevel): this {\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 public setTransactionName(name?: string): this {\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 public setContext(key: string, context: Context | null): this {\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 public setSession(session?: Session): this {\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 public getSession(): Session | undefined {\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 public update(captureContext?: CaptureContext): this {\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 as ScopeContext)\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 public clear(): this {\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 public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\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: Breadcrumb = {\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 public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * Clear all breadcrumbs from the scope.\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Add an attachment to the scope.\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * Clear all attachments from the scope.\n */\n public clearAttachments(): this {\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 public getScopeData(): ScopeData {\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 public setSDKProcessingMetadata(newData: SdkProcessingMetadata): this {\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 public setPropagationContext(context: PropagationContext): this {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * Get propagation context from the scope, used for distributed tracing\n */\n public getPropagationContext(): PropagationContext {\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 public captureException(exception: unknown, hint?: EventHint): string {\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 public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\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 public captureEvent(event: Event, hint?: EventHint): string {\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 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 protected _notifyScopeListeners(): void {\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"],"names":["generateTraceId","safeMathRandom","_setSpanForScope","_getSpanForScope","updateSession","isPlainObject","dateTimestampInSeconds","truncate","merge","uuid4","DEBUG_BUILD","debug"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/sdk.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/sdk.js new file mode 100644 index 0000000..641b5a7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/sdk.js @@ -0,0 +1,49 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('./currentScopes.js'); +const debugBuild = require('./debug-build.js'); +const debugLogger = require('./utils/debug-logger.js'); + +/** A class object that can instantiate Client objects. */ + +/** + * Internal function to create a new SDK client instance. The client is + * installed and then bound to the current scope. + * + * @param clientClass The client class to instantiate. + * @param options Options to pass to the client. + */ +function initAndBind( + clientClass, + options, +) { + if (options.debug === true) { + if (debugBuild.DEBUG_BUILD) { + debugLogger.debug.enable(); + } else { + // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped + debugLogger.consoleSandbox(() => { + // eslint-disable-next-line no-console + console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.'); + }); + } + } + const scope = currentScopes.getCurrentScope(); + scope.update(options.initialScope); + + const client = new clientClass(options); + setCurrentClient(client); + client.init(); + return client; +} + +/** + * Make the given client the current client. + */ +function setCurrentClient(client) { + currentScopes.getCurrentScope().setClient(client); +} + +exports.initAndBind = initAndBind; +exports.setCurrentClient = setCurrentClient; +//# sourceMappingURL=sdk.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/sdk.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/sdk.js.map new file mode 100644 index 0000000..0b897f5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/sdk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk.js","sources":["../../src/sdk.ts"],"sourcesContent":["import type { Client } from './client';\nimport { getCurrentScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ClientOptions } from './types-hoist/options';\nimport { consoleSandbox, debug } from './utils/debug-logger';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): Client {\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 const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n setCurrentClient(client);\n client.init();\n return client;\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n getCurrentScope().setClient(client);\n}\n"],"names":["DEBUG_BUILD","debug","consoleSandbox","getCurrentScope"],"mappings":";;;;;;AAMA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW;AAC3B,EAAE,WAAW;AACb,EAAE,OAAO;AACT,EAAU;AACV,EAAE,IAAI,OAAO,CAAC,KAAA,KAAU,IAAI,EAAE;AAC9B,IAAI,IAAIA,sBAAW,EAAE;AACrB,MAAMC,iBAAK,CAAC,MAAM,EAAE;AACpB,IAAI,OAAO;AACX;AACA,MAAMC,0BAAc,CAAC,MAAM;AAC3B;AACA,QAAQ,OAAO,CAAC,IAAI,CAAC,8EAA8E,CAAC;AACpG,MAAM,CAAC,CAAC;AACR,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,KAAA,GAAQC,6BAAe,EAAE;AACjC,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;;AAEpC,EAAE,MAAM,MAAA,GAAS,IAAI,WAAW,CAAC,OAAO,CAAC;AACzC,EAAE,gBAAgB,CAAC,MAAM,CAAC;AAC1B,EAAE,MAAM,CAAC,IAAI,EAAE;AACf,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,MAAM,EAAgB;AACvD,EAAEA,6BAAe,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/semanticAttributes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/semanticAttributes.js new file mode 100644 index 0000000..4454e45 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/semanticAttributes.js @@ -0,0 +1,116 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Use this attribute to represent the source of a span. + * Should be one of: custom, url, route, view, component, task, unknown + * + */ +const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source'; + +/** + * Attributes that holds the sample rate that was locally applied to a span. + * If this attribute is not defined, it means that the span inherited a sampling decision. + * + * NOTE: Is only defined on root spans. + */ +const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate'; + +/** + * Attribute holding the sample rate of the previous trace. + * This is used to sample consistently across subsequent traces in the browser SDK. + * + * Note: Only defined on root spans, if opted into consistent sampling + */ +const SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = 'sentry.previous_trace_sample_rate'; + +/** + * Use this attribute to represent the operation of a span. + */ +const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op'; + +/** + * Use this attribute to represent the origin of a span. + */ +const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin'; + +/** The reason why an idle span finished. */ +const SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason'; + +/** The unit of a measurement, which may be stored as a TimedEvent. */ +const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit'; + +/** The value of a measurement, which may be stored as a TimedEvent. */ +const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value'; + +/** + * A custom span name set by users guaranteed to be taken over any automatically + * inferred name. This attribute is removed before the span is sent. + * + * @internal only meant for internal SDK usage + * @hidden + */ +const SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name'; + +/** + * The id of the profile that this span occurred in. + */ +const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id'; + +const SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time'; + +const SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit'; + +const SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key'; + +const SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size'; + +/** TODO: Remove these once we update to latest semantic conventions */ +const SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method'; +const SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full'; + +/** + * A span link attribute to mark the link as a special span link. + * + * Known values: + * - `previous_trace`: The span links to the frontend root span of the previous trace. + * - `next_trace`: The span links to the frontend root span of the next trace. (Not set by the SDK) + * + * Other values may be set as appropriate. + * @see https://develop.sentry.dev/sdk/telemetry/traces/span-links/#link-types + */ +const SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = 'sentry.link.type'; + +/** + * ============================================================================= + * GEN AI ATTRIBUTES + * Based on OpenTelemetry Semantic Conventions for Generative AI + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/ + * ============================================================================= + */ + +/** + * The conversation ID for linking messages across API calls. + * For OpenAI Assistants API: thread_id + * For LangGraph: configurable.thread_id + */ +const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id'; + +exports.GEN_AI_CONVERSATION_ID_ATTRIBUTE = GEN_AI_CONVERSATION_ID_ATTRIBUTE; +exports.SEMANTIC_ATTRIBUTE_CACHE_HIT = SEMANTIC_ATTRIBUTE_CACHE_HIT; +exports.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE; +exports.SEMANTIC_ATTRIBUTE_CACHE_KEY = SEMANTIC_ATTRIBUTE_CACHE_KEY; +exports.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME; +exports.SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD; +exports.SEMANTIC_ATTRIBUTE_PROFILE_ID = SEMANTIC_ATTRIBUTE_PROFILE_ID; +exports.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME; +exports.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON; +exports.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT; +exports.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE; +exports.SEMANTIC_ATTRIBUTE_SENTRY_OP = SEMANTIC_ATTRIBUTE_SENTRY_OP; +exports.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN; +exports.SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE; +exports.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE; +exports.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = SEMANTIC_ATTRIBUTE_SENTRY_SOURCE; +exports.SEMANTIC_ATTRIBUTE_URL_FULL = SEMANTIC_ATTRIBUTE_URL_FULL; +exports.SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE; +//# sourceMappingURL=semanticAttributes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/semanticAttributes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/semanticAttributes.js.map new file mode 100644 index 0000000..9819450 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/semanticAttributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semanticAttributes.js","sources":["../../src/semanticAttributes.ts"],"sourcesContent":["/**\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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nexport const 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. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nexport const 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 */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name';\n\n/**\n * The id of the profile that this span occurred in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nexport const SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nexport const SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nexport const 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 */\nexport const 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 */\nexport const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACO,MAAM,gCAAA,GAAmC;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qCAAA,GAAwC;;AAErD;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oDAAA,GAAuD;;AAEpE;AACA;AACA;AACO,MAAM,4BAAA,GAA+B;;AAE5C;AACA;AACA;AACO,MAAM,gCAAA,GAAmC;;AAEhD;AACO,MAAM,iDAAA,GAAoD;;AAEjE;AACO,MAAM,0CAAA,GAA6C;;AAE1D;AACO,MAAM,2CAAA,GAA8C;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,0CAAA,GAA6C;;AAE1D;AACA;AACA;AACO,MAAM,6BAAA,GAAgC;;AAEtC,MAAM,iCAAA,GAAoC;;AAE1C,MAAM,4BAAA,GAA+B;;AAErC,MAAM,4BAAA,GAA+B;;AAErC,MAAM,kCAAA,GAAqC;;AAElD;AACO,MAAM,sCAAA,GAAyC;AAC/C,MAAM,2BAAA,GAA8B;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iCAAA,GAAoC;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,gCAAA,GAAmC;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/server-runtime-client.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/server-runtime-client.js new file mode 100644 index 0000000..f24b837 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/server-runtime-client.js @@ -0,0 +1,204 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const checkin = require('./checkin.js'); +const client = require('./client.js'); +const currentScopes = require('./currentScopes.js'); +const debugBuild = require('./debug-build.js'); +const errors = require('./tracing/errors.js'); +const debugLogger = require('./utils/debug-logger.js'); +const misc = require('./utils/misc.js'); +const userAgent = require('./transports/userAgent.js'); +const eventbuilder = require('./utils/eventbuilder.js'); +const syncpromise = require('./utils/syncpromise.js'); +const traceInfo = require('./utils/trace-info.js'); + +/** + * The Sentry Server Runtime Client SDK. + */ +class ServerRuntimeClient + + extends client.Client { + /** + * Creates a new Edge SDK instance. + * @param options Configuration options for this SDK. + */ + constructor(options) { + // Server clients always support tracing + errors.registerSpanErrorInstrumentation(); + + userAgent.addUserAgentToTransportHeaders(options); + + super(options); + + this._setUpMetricsProcessing(); + } + + /** + * @inheritDoc + */ + eventFromException(exception, hint) { + const event = eventbuilder.eventFromUnknownInput(this, this._options.stackParser, exception, hint); + event.level = 'error'; + + return syncpromise.resolvedSyncPromise(event); + } + + /** + * @inheritDoc + */ + eventFromMessage( + message, + level = 'info', + hint, + ) { + return syncpromise.resolvedSyncPromise( + eventbuilder.eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace), + ); + } + + /** + * @inheritDoc + */ + captureException(exception, hint, scope) { + setCurrentRequestSessionErroredOrCrashed(hint); + return super.captureException(exception, hint, scope); + } + + /** + * @inheritDoc + */ + captureEvent(event, hint, scope) { + // If the event is of type Exception, then a request session should be captured + const isException = !event.type && event.exception?.values && event.exception.values.length > 0; + if (isException) { + setCurrentRequestSessionErroredOrCrashed(hint); + } + + return super.captureEvent(event, hint, scope); + } + + /** + * Create a cron monitor check in and send it to Sentry. + * + * @param checkIn An object that describes a check in. + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + */ + captureCheckIn(checkIn, monitorConfig, scope) { + const id = 'checkInId' in checkIn && checkIn.checkInId ? checkIn.checkInId : misc.uuid4(); + if (!this._isEnabled()) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('SDK not enabled, will not capture check-in.'); + return id; + } + + const options = this.getOptions(); + const { release, environment, tunnel } = options; + + const serializedCheckIn = { + check_in_id: id, + monitor_slug: checkIn.monitorSlug, + status: checkIn.status, + release, + environment, + }; + + if ('duration' in checkIn) { + serializedCheckIn.duration = checkIn.duration; + } + + if (monitorConfig) { + serializedCheckIn.monitor_config = { + schedule: monitorConfig.schedule, + checkin_margin: monitorConfig.checkinMargin, + max_runtime: monitorConfig.maxRuntime, + timezone: monitorConfig.timezone, + failure_issue_threshold: monitorConfig.failureIssueThreshold, + recovery_threshold: monitorConfig.recoveryThreshold, + }; + } + + const [dynamicSamplingContext, traceContext] = traceInfo._getTraceInfoFromScope(this, scope); + if (traceContext) { + serializedCheckIn.contexts = { + trace: traceContext, + }; + } + + const envelope = checkin.createCheckInEnvelope( + serializedCheckIn, + dynamicSamplingContext, + this.getSdkMetadata(), + tunnel, + this.getDsn(), + ); + + debugBuild.DEBUG_BUILD && debugLogger.debug.log('Sending checkin:', checkIn.monitorSlug, checkIn.status); + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.sendEnvelope(envelope); + + return id; + } + + /** + * @inheritDoc + */ + _prepareEvent( + event, + hint, + currentScope, + isolationScope, + ) { + if (this._options.platform) { + event.platform = event.platform || this._options.platform; + } + + if (this._options.runtime) { + event.contexts = { + ...event.contexts, + runtime: event.contexts?.runtime || this._options.runtime, + }; + } + + if (this._options.serverName) { + event.server_name = event.server_name || this._options.serverName; + } + + return super._prepareEvent(event, hint, currentScope, isolationScope); + } + + /** + * Process a server-side metric before it is captured. + */ + _setUpMetricsProcessing() { + this.on('processMetric', metric => { + if (this._options.serverName) { + metric.attributes = { + 'server.address': this._options.serverName, + ...metric.attributes, + }; + } + }); + } +} + +function setCurrentRequestSessionErroredOrCrashed(eventHint) { + const requestSession = currentScopes.getIsolationScope().getScopeData().sdkProcessingMetadata.requestSession; + if (requestSession) { + // We mutate instead of doing `setSdkProcessingMetadata` because the http integration stores away a particular + // isolationScope. If that isolation scope is forked, setting the processing metadata here will not mutate the + // original isolation scope that the http integration stored away. + const isHandledException = eventHint?.mechanism?.handled ?? true; + // A request session can go from "errored" -> "crashed" but not "crashed" -> "errored". + // Crashed (unhandled exception) is worse than errored (handled exception). + if (isHandledException && requestSession.status !== 'crashed') { + requestSession.status = 'errored'; + } else if (!isHandledException) { + requestSession.status = 'crashed'; + } + } +} + +exports.ServerRuntimeClient = ServerRuntimeClient; +//# sourceMappingURL=server-runtime-client.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/server-runtime-client.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/server-runtime-client.js.map new file mode 100644 index 0000000..4026841 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/server-runtime-client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"server-runtime-client.js","sources":["../../src/server-runtime-client.ts"],"sourcesContent":["import { createCheckInEnvelope } from './checkin';\nimport { Client } from './client';\nimport { getIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Scope } from './scope';\nimport { registerSpanErrorInstrumentation } from './tracing';\nimport { addUserAgentToTransportHeaders } from './transports/userAgent';\nimport type { CheckIn, MonitorConfig, SerializedCheckIn } from './types-hoist/checkin';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { ClientOptions } from './types-hoist/options';\nimport type { ParameterizedString } from './types-hoist/parameterize';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { BaseTransportOptions } from './types-hoist/transport';\nimport { debug } from './utils/debug-logger';\nimport { eventFromMessage, eventFromUnknownInput } from './utils/eventbuilder';\nimport { uuid4 } from './utils/misc';\nimport { resolvedSyncPromise } from './utils/syncpromise';\nimport { _getTraceInfoFromScope } from './utils/trace-info';\n\nexport interface ServerRuntimeClientOptions extends ClientOptions {\n platform?: string;\n runtime?: { name: string; version?: string };\n serverName?: string;\n}\n\n/**\n * The Sentry Server Runtime Client SDK.\n */\nexport class ServerRuntimeClient<\n O extends ClientOptions & ServerRuntimeClientOptions = ServerRuntimeClientOptions,\n> extends Client {\n /**\n * Creates a new Edge SDK instance.\n * @param options Configuration options for this SDK.\n */\n public constructor(options: O) {\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 public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\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 public eventFromMessage(\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return resolvedSyncPromise(\n eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace),\n );\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: unknown, hint?: EventHint, scope?: Scope): string {\n setCurrentRequestSessionErroredOrCrashed(hint);\n return super.captureException(exception, hint, scope);\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string {\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 public captureCheckIn(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string {\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: 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 * @inheritDoc\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\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 private _setUpMetricsProcessing(): void {\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?: EventHint): void {\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"],"names":["Client","registerSpanErrorInstrumentation","addUserAgentToTransportHeaders","eventFromUnknownInput","resolvedSyncPromise","eventFromMessage","uuid4","DEBUG_BUILD","debug","_getTraceInfoFromScope","createCheckInEnvelope","getIsolationScope"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/session.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/session.js new file mode 100644 index 0000000..2a8f751 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/session.js @@ -0,0 +1,165 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const misc = require('./utils/misc.js'); +const time = require('./utils/time.js'); + +/** + * Creates a new `Session` object by setting certain default parameters. If optional @param context + * is passed, the passed properties are applied to the session object. + * + * @param context (optional) additional properties to be applied to the returned session object + * + * @returns a new `Session` object + */ +function makeSession(context) { + // Both timestamp and started are in seconds since the UNIX epoch. + const startingTime = time.timestampInSeconds(); + + const session = { + sid: misc.uuid4(), + init: true, + timestamp: startingTime, + started: startingTime, + duration: 0, + status: 'ok', + errors: 0, + ignoreDuration: false, + toJSON: () => sessionToJSON(session), + }; + + if (context) { + updateSession(session, context); + } + + return session; +} + +/** + * Updates a session object with the properties passed in the context. + * + * Note that this function mutates the passed object and returns void. + * (Had to do this instead of returning a new and updated session because closing and sending a session + * makes an update to the session after it was passed to the sending logic. + * @see Client.captureSession ) + * + * @param session the `Session` to update + * @param context the `SessionContext` holding the properties that should be updated in @param session + */ +// eslint-disable-next-line complexity +function updateSession(session, context = {}) { + if (context.user) { + if (!session.ipAddress && context.user.ip_address) { + session.ipAddress = context.user.ip_address; + } + + if (!session.did && !context.did) { + session.did = context.user.id || context.user.email || context.user.username; + } + } + + session.timestamp = context.timestamp || time.timestampInSeconds(); + + if (context.abnormal_mechanism) { + session.abnormal_mechanism = context.abnormal_mechanism; + } + + if (context.ignoreDuration) { + session.ignoreDuration = context.ignoreDuration; + } + if (context.sid) { + // Good enough uuid validation. — Kamil + session.sid = context.sid.length === 32 ? context.sid : misc.uuid4(); + } + if (context.init !== undefined) { + session.init = context.init; + } + if (!session.did && context.did) { + session.did = `${context.did}`; + } + if (typeof context.started === 'number') { + session.started = context.started; + } + if (session.ignoreDuration) { + session.duration = undefined; + } else if (typeof context.duration === 'number') { + session.duration = context.duration; + } else { + const duration = session.timestamp - session.started; + session.duration = duration >= 0 ? duration : 0; + } + if (context.release) { + session.release = context.release; + } + if (context.environment) { + session.environment = context.environment; + } + if (!session.ipAddress && context.ipAddress) { + session.ipAddress = context.ipAddress; + } + if (!session.userAgent && context.userAgent) { + session.userAgent = context.userAgent; + } + if (typeof context.errors === 'number') { + session.errors = context.errors; + } + if (context.status) { + session.status = context.status; + } +} + +/** + * Closes a session by setting its status and updating the session object with it. + * Internally calls `updateSession` to update the passed session object. + * + * Note that this function mutates the passed session (@see updateSession for explanation). + * + * @param session the `Session` object to be closed + * @param status the `SessionStatus` with which the session was closed. If you don't pass a status, + * this function will keep the previously set status, unless it was `'ok'` in which case + * it is changed to `'exited'`. + */ +function closeSession(session, status) { + let context = {}; + if (status) { + context = { status }; + } else if (session.status === 'ok') { + context = { status: 'exited' }; + } + + updateSession(session, context); +} + +/** + * Serializes a passed session object to a JSON object with a slightly different structure. + * This is necessary because the Sentry backend requires a slightly different schema of a session + * than the one the JS SDKs use internally. + * + * @param session the session to be converted + * + * @returns a JSON object of the passed session + */ +function sessionToJSON(session) { + return { + sid: `${session.sid}`, + init: session.init, + // Make sure that sec is converted to ms for date constructor + started: new Date(session.started * 1000).toISOString(), + timestamp: new Date(session.timestamp * 1000).toISOString(), + status: session.status, + errors: session.errors, + did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined, + duration: session.duration, + abnormal_mechanism: session.abnormal_mechanism, + attrs: { + release: session.release, + environment: session.environment, + ip_address: session.ipAddress, + user_agent: session.userAgent, + }, + }; +} + +exports.closeSession = closeSession; +exports.makeSession = makeSession; +exports.updateSession = updateSession; +//# sourceMappingURL=session.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/session.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/session.js.map new file mode 100644 index 0000000..dcb16e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/session.js.map @@ -0,0 +1 @@ +{"version":3,"file":"session.js","sources":["../../src/session.ts"],"sourcesContent":["import type { SerializedSession, Session, SessionContext, SessionStatus } from './types-hoist/session';\nimport { uuid4 } from './utils/misc';\nimport { timestampInSeconds } from './utils/time';\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 */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: 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\nexport function updateSession(session: Session, context: SessionContext = {}): void {\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 */\nexport function closeSession(session: Session, status?: Exclude): void {\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: Session): SerializedSession {\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"],"names":["timestampInSeconds","uuid4"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/gen-ai-attributes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/gen-ai-attributes.js new file mode 100644 index 0000000..7ec2a74 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/gen-ai-attributes.js @@ -0,0 +1,370 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * OpenAI Integration Telemetry Attributes + * Based on OpenTelemetry Semantic Conventions for Generative AI + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/ + */ + +// ============================================================================= +// OPENTELEMETRY SEMANTIC CONVENTIONS FOR GENAI +// ============================================================================= + +/** + * The input messages sent to the model + */ +const GEN_AI_PROMPT_ATTRIBUTE = 'gen_ai.prompt'; + +/** + * The Generative AI system being used + * For OpenAI, this should always be "openai" + */ +const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system'; + +/** + * The name of the model as requested + * Examples: "gpt-4", "gpt-3.5-turbo" + */ +const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model'; + +/** + * Whether streaming was enabled for the request + */ +const GEN_AI_REQUEST_STREAM_ATTRIBUTE = 'gen_ai.request.stream'; + +/** + * The temperature setting for the model request + */ +const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature'; + +/** + * The maximum number of tokens requested + */ +const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens'; + +/** + * The frequency penalty setting for the model request + */ +const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty'; + +/** + * The presence penalty setting for the model request + */ +const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty'; + +/** + * The top_p (nucleus sampling) setting for the model request + */ +const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p'; + +/** + * The top_k setting for the model request + */ +const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k'; + +/** + * The encoding format for the model request + */ +const GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = 'gen_ai.request.encoding_format'; + +/** + * The dimensions for the model request + */ +const GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = 'gen_ai.request.dimensions'; + +/** + * Array of reasons why the model stopped generating tokens + */ +const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons'; + +/** + * The name of the model that generated the response + */ +const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model'; + +/** + * The unique identifier for the response + */ +const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id'; + +/** + * The reason why the model stopped generating tokens + */ +const GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = 'gen_ai.response.stop_reason'; + +/** + * The number of tokens used in the prompt + */ +const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens'; + +/** + * The number of tokens used in the response + */ +const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens'; + +/** + * The total number of tokens used (input + output) + */ +const GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = 'gen_ai.usage.total_tokens'; + +/** + * The operation name + */ +const GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name'; + +/** + * Original length of messages array, used to indicate truncations had occured + */ +const GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = 'sentry.sdk_meta.gen_ai.input.messages.original_length'; + +/** + * The prompt messages + * Only recorded when recordInputs is enabled + */ +const GEN_AI_INPUT_MESSAGES_ATTRIBUTE = 'gen_ai.input.messages'; + +/** + * The system instructions extracted from system messages + * Only recorded when recordInputs is enabled + * According to OpenTelemetry spec: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-system-instructions + */ +const GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = 'gen_ai.system_instructions'; + +/** + * The response text + * Only recorded when recordOutputs is enabled + */ +const GEN_AI_RESPONSE_TEXT_ATTRIBUTE = 'gen_ai.response.text'; + +/** + * The available tools from incoming request + * Only recorded when recordInputs is enabled + */ +const GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = 'gen_ai.request.available_tools'; + +/** + * Whether the response is a streaming response + */ +const GEN_AI_RESPONSE_STREAMING_ATTRIBUTE = 'gen_ai.response.streaming'; + +/** + * The tool calls from the response + * Only recorded when recordOutputs is enabled + */ +const GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'gen_ai.response.tool_calls'; + +/** + * The agent name + */ +const GEN_AI_AGENT_NAME_ATTRIBUTE = 'gen_ai.agent.name'; + +/** + * The pipeline name + */ +const GEN_AI_PIPELINE_NAME_ATTRIBUTE = 'gen_ai.pipeline.name'; + +/** + * The conversation ID for linking messages across API calls + * For OpenAI Assistants API: thread_id + * For LangGraph: configurable.thread_id + */ +const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id'; + +/** + * The number of cache creation input tokens used + */ +const GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_creation_input_tokens'; + +/** + * The number of cache read input tokens used + */ +const GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_read_input_tokens'; + +/** + * The number of cache write input tokens used + */ +const GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE = 'gen_ai.usage.input_tokens.cache_write'; + +/** + * The number of cached input tokens that were used + */ +const GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE = 'gen_ai.usage.input_tokens.cached'; + +/** + * The span operation name for invoking an agent + */ +const GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = 'gen_ai.invoke_agent'; + +/** + * The span operation name for generating text + */ +const GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_text'; + +/** + * The span operation name for streaming text + */ +const GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_text'; + +/** + * The span operation name for generating object + */ +const GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_object'; + +/** + * The span operation name for streaming object + */ +const GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_object'; + +/** + * The embeddings input + * Only recorded when recordInputs is enabled + */ +const GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = 'gen_ai.embeddings.input'; + +/** + * The span operation name for embedding + */ +const GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embed'; + +/** + * The span operation name for embedding many + */ +const GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embed_many'; + +/** + * The span operation name for executing a tool + */ +const GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = 'gen_ai.execute_tool'; + +/** + * The tool name for tool call spans + */ +const GEN_AI_TOOL_NAME_ATTRIBUTE = 'gen_ai.tool.name'; + +/** + * The tool call ID + */ +const GEN_AI_TOOL_CALL_ID_ATTRIBUTE = 'gen_ai.tool.call.id'; + +/** + * The tool type (e.g., 'function') + */ +const GEN_AI_TOOL_TYPE_ATTRIBUTE = 'gen_ai.tool.type'; + +/** + * The tool input/arguments + */ +const GEN_AI_TOOL_INPUT_ATTRIBUTE = 'gen_ai.tool.input'; + +/** + * The tool output/result + */ +const GEN_AI_TOOL_OUTPUT_ATTRIBUTE = 'gen_ai.tool.output'; + +// ============================================================================= +// OPENAI-SPECIFIC ATTRIBUTES +// ============================================================================= + +/** + * The response ID from OpenAI + */ +const OPENAI_RESPONSE_ID_ATTRIBUTE = 'openai.response.id'; + +/** + * The response model from OpenAI + */ +const OPENAI_RESPONSE_MODEL_ATTRIBUTE = 'openai.response.model'; + +/** + * The response timestamp from OpenAI (ISO string) + */ +const OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'openai.response.timestamp'; + +/** + * The number of completion tokens used + */ +const OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'openai.usage.completion_tokens'; + +/** + * The number of prompt tokens used + */ +const OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'openai.usage.prompt_tokens'; + +// ============================================================================= +// OPENAI OPERATIONS +// ============================================================================= + +/** + * OpenAI API operations following OpenTelemetry semantic conventions + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +const OPENAI_OPERATIONS = { + CHAT: 'chat', + EMBEDDINGS: 'embeddings', +} ; + +// ============================================================================= +// ANTHROPIC AI OPERATIONS +// ============================================================================= + +/** + * The response timestamp from Anthropic AI (ISO string) + */ +const ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'anthropic.response.timestamp'; + +exports.ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE; +exports.GEN_AI_AGENT_NAME_ATTRIBUTE = GEN_AI_AGENT_NAME_ATTRIBUTE; +exports.GEN_AI_CONVERSATION_ID_ATTRIBUTE = GEN_AI_CONVERSATION_ID_ATTRIBUTE; +exports.GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE; +exports.GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE; +exports.GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE; +exports.GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE; +exports.GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE; +exports.GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE; +exports.GEN_AI_INPUT_MESSAGES_ATTRIBUTE = GEN_AI_INPUT_MESSAGES_ATTRIBUTE; +exports.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE; +exports.GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE; +exports.GEN_AI_OPERATION_NAME_ATTRIBUTE = GEN_AI_OPERATION_NAME_ATTRIBUTE; +exports.GEN_AI_PIPELINE_NAME_ATTRIBUTE = GEN_AI_PIPELINE_NAME_ATTRIBUTE; +exports.GEN_AI_PROMPT_ATTRIBUTE = GEN_AI_PROMPT_ATTRIBUTE; +exports.GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE; +exports.GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE; +exports.GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE; +exports.GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE; +exports.GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE; +exports.GEN_AI_REQUEST_MODEL_ATTRIBUTE = GEN_AI_REQUEST_MODEL_ATTRIBUTE; +exports.GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE; +exports.GEN_AI_REQUEST_STREAM_ATTRIBUTE = GEN_AI_REQUEST_STREAM_ATTRIBUTE; +exports.GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE; +exports.GEN_AI_REQUEST_TOP_K_ATTRIBUTE = GEN_AI_REQUEST_TOP_K_ATTRIBUTE; +exports.GEN_AI_REQUEST_TOP_P_ATTRIBUTE = GEN_AI_REQUEST_TOP_P_ATTRIBUTE; +exports.GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE; +exports.GEN_AI_RESPONSE_ID_ATTRIBUTE = GEN_AI_RESPONSE_ID_ATTRIBUTE; +exports.GEN_AI_RESPONSE_MODEL_ATTRIBUTE = GEN_AI_RESPONSE_MODEL_ATTRIBUTE; +exports.GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE; +exports.GEN_AI_RESPONSE_STREAMING_ATTRIBUTE = GEN_AI_RESPONSE_STREAMING_ATTRIBUTE; +exports.GEN_AI_RESPONSE_TEXT_ATTRIBUTE = GEN_AI_RESPONSE_TEXT_ATTRIBUTE; +exports.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE; +exports.GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE = GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE; +exports.GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE; +exports.GEN_AI_SYSTEM_ATTRIBUTE = GEN_AI_SYSTEM_ATTRIBUTE; +exports.GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE; +exports.GEN_AI_TOOL_CALL_ID_ATTRIBUTE = GEN_AI_TOOL_CALL_ID_ATTRIBUTE; +exports.GEN_AI_TOOL_INPUT_ATTRIBUTE = GEN_AI_TOOL_INPUT_ATTRIBUTE; +exports.GEN_AI_TOOL_NAME_ATTRIBUTE = GEN_AI_TOOL_NAME_ATTRIBUTE; +exports.GEN_AI_TOOL_OUTPUT_ATTRIBUTE = GEN_AI_TOOL_OUTPUT_ATTRIBUTE; +exports.GEN_AI_TOOL_TYPE_ATTRIBUTE = GEN_AI_TOOL_TYPE_ATTRIBUTE; +exports.GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE = GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE; +exports.GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE = GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE; +exports.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE; +exports.GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE = GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE; +exports.GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE = GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE; +exports.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE; +exports.GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE; +exports.OPENAI_OPERATIONS = OPENAI_OPERATIONS; +exports.OPENAI_RESPONSE_ID_ATTRIBUTE = OPENAI_RESPONSE_ID_ATTRIBUTE; +exports.OPENAI_RESPONSE_MODEL_ATTRIBUTE = OPENAI_RESPONSE_MODEL_ATTRIBUTE; +exports.OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE; +exports.OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE; +exports.OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE = OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE; +//# sourceMappingURL=gen-ai-attributes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/gen-ai-attributes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/gen-ai-attributes.js.map new file mode 100644 index 0000000..b9cd1a3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/gen-ai-attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"gen-ai-attributes.js","sources":["../../../../src/tracing/ai/gen-ai-attributes.ts"],"sourcesContent":["/**\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 */\nexport const 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 */\nexport const 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 */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Whether streaming was enabled for the request\n */\nexport const GEN_AI_REQUEST_STREAM_ATTRIBUTE = 'gen_ai.request.stream';\n\n/**\n * The temperature setting for the model request\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * The maximum number of tokens requested\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * The frequency penalty setting for the model request\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * The presence penalty setting for the model request\n */\nexport const 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 */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * The top_k setting for the model request\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Stop sequences for the model request\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * The encoding format for the model request\n */\nexport const GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = 'gen_ai.request.encoding_format';\n\n/**\n * The dimensions for the model request\n */\nexport const GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = 'gen_ai.request.dimensions';\n\n/**\n * Array of reasons why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * The name of the model that generated the response\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * The unique identifier for the response\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * The reason why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = 'gen_ai.response.stop_reason';\n\n/**\n * The number of tokens used in the prompt\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * The number of tokens used in the response\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n/**\n * The total number of tokens used (input + output)\n */\nexport const GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = 'gen_ai.usage.total_tokens';\n\n/**\n * The operation name\n */\nexport const GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name';\n\n/**\n * Original length of messages array, used to indicate truncations had occured\n */\nexport const 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 */\nexport const GEN_AI_INPUT_MESSAGES_ATTRIBUTE = 'gen_ai.input.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 */\nexport const GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = 'gen_ai.system_instructions';\n\n/**\n * The response text\n * Only recorded when recordOutputs is enabled\n */\nexport const 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 */\nexport const GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = 'gen_ai.request.available_tools';\n\n/**\n * Whether the response is a streaming response\n */\nexport const 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 */\nexport const GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'gen_ai.response.tool_calls';\n\n/**\n * The agent name\n */\nexport const GEN_AI_AGENT_NAME_ATTRIBUTE = 'gen_ai.agent.name';\n\n/**\n * The pipeline name\n */\nexport const 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 */\nexport const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n\n/**\n * The number of cache creation input tokens used\n */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = 'gen_ai.invoke_agent';\n\n/**\n * The span operation name for generating text\n */\nexport const GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_text';\n\n/**\n * The span operation name for streaming text\n */\nexport const GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_text';\n\n/**\n * The span operation name for generating object\n */\nexport const GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_object';\n\n/**\n * The span operation name for streaming object\n */\nexport const 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 */\nexport const GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = 'gen_ai.embeddings.input';\n\n/**\n * The span operation name for embedding\n */\nexport const GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embed';\n\n/**\n * The span operation name for embedding many\n */\nexport const GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embed_many';\n\n/**\n * The span operation name for executing a tool\n */\nexport const GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = 'gen_ai.execute_tool';\n\n/**\n * The tool name for tool call spans\n */\nexport const GEN_AI_TOOL_NAME_ATTRIBUTE = 'gen_ai.tool.name';\n\n/**\n * The tool call ID\n */\nexport const GEN_AI_TOOL_CALL_ID_ATTRIBUTE = 'gen_ai.tool.call.id';\n\n/**\n * The tool type (e.g., 'function')\n */\nexport const GEN_AI_TOOL_TYPE_ATTRIBUTE = 'gen_ai.tool.type';\n\n/**\n * The tool input/arguments\n */\nexport const GEN_AI_TOOL_INPUT_ATTRIBUTE = 'gen_ai.tool.input';\n\n/**\n * The tool output/result\n */\nexport const GEN_AI_TOOL_OUTPUT_ATTRIBUTE = 'gen_ai.tool.output';\n\n// =============================================================================\n// OPENAI-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/**\n * The response ID from OpenAI\n */\nexport const OPENAI_RESPONSE_ID_ATTRIBUTE = 'openai.response.id';\n\n/**\n * The response model from OpenAI\n */\nexport const OPENAI_RESPONSE_MODEL_ATTRIBUTE = 'openai.response.model';\n\n/**\n * The response timestamp from OpenAI (ISO string)\n */\nexport const OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'openai.response.timestamp';\n\n/**\n * The number of completion tokens used\n */\nexport const OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'openai.usage.completion_tokens';\n\n/**\n * The number of prompt tokens used\n */\nexport const 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 */\nexport const OPENAI_OPERATIONS = {\n CHAT: 'chat',\n EMBEDDINGS: 'embeddings',\n} as const;\n\n// =============================================================================\n// ANTHROPIC AI OPERATIONS\n// =============================================================================\n\n/**\n * The response timestamp from Anthropic AI (ISO string)\n */\nexport const ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'anthropic.response.timestamp';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/messageTruncation.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/messageTruncation.js new file mode 100644 index 0000000..e53f3a3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/messageTruncation.js @@ -0,0 +1,386 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Default maximum size in bytes for GenAI messages. + * Messages exceeding this limit will be truncated. + */ +const DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000; + +/** + * Message format used by OpenAI and Anthropic APIs. + */ + +/** + * Calculate the UTF-8 byte length of a string. + */ +const utf8Bytes = (text) => { + return new TextEncoder().encode(text).length; +}; + +/** + * Calculate the UTF-8 byte length of a value's JSON representation. + */ +const jsonBytes = (value) => { + return utf8Bytes(JSON.stringify(value)); +}; + +/** + * Truncate a string to fit within maxBytes when encoded as UTF-8. + * Uses binary search for efficiency with multi-byte characters. + * + * @param text - The string to truncate + * @param maxBytes - Maximum byte length (UTF-8 encoded) + * @returns Truncated string that fits within maxBytes + */ +function truncateTextByBytes(text, maxBytes) { + if (utf8Bytes(text) <= maxBytes) { + return text; + } + + let low = 0; + let high = text.length; + let bestFit = ''; + + while (low <= high) { + const mid = Math.floor((low + high) / 2); + const candidate = text.slice(0, mid); + const byteSize = utf8Bytes(candidate); + + if (byteSize <= maxBytes) { + bestFit = candidate; + low = mid + 1; + } else { + high = mid - 1; + } + } + + return bestFit; +} + +/** + * Extract text content from a Google GenAI message part. + * Parts are either plain strings or objects with a text property. + * + * @returns The text content + */ +function getPartText(part) { + if (typeof part === 'string') { + return part; + } + if ('text' in part) return part.text; + return ''; +} + +/** + * Create a new part with updated text content while preserving the original structure. + * + * @param part - Original part (string or object) + * @param text - New text content + * @returns New part with updated text + */ +function withPartText(part, text) { + if (typeof part === 'string') { + return text; + } + return { ...part, text }; +} + +/** + * Check if a message has the OpenAI/Anthropic content format. + */ +function isContentMessage(message) { + return ( + message !== null && + typeof message === 'object' && + 'content' in message && + typeof (message ).content === 'string' + ); +} + +/** + * Check if a message has the OpenAI/Anthropic content array format. + */ +function isContentArrayMessage(message) { + return message !== null && typeof message === 'object' && 'content' in message && Array.isArray(message.content); +} + +/** + * Check if a content part is an OpenAI/Anthropic media source + */ +function isContentMedia(part) { + if (!part || typeof part !== 'object') return false; + + return ( + isContentMediaSource(part) || + hasInlineData(part) || + ('media_type' in part && typeof part.media_type === 'string' && 'data' in part) || + ('image_url' in part && typeof part.image_url === 'string' && part.image_url.startsWith('data:')) || + ('type' in part && (part.type === 'blob' || part.type === 'base64')) || + 'b64_json' in part || + ('type' in part && 'result' in part && part.type === 'image_generation') || + ('uri' in part && typeof part.uri === 'string' && part.uri.startsWith('data:')) + ); +} +function isContentMediaSource(part) { + return 'type' in part && typeof part.type === 'string' && 'source' in part && isContentMedia(part.source); +} +function hasInlineData(part) { + return ( + 'inlineData' in part && + !!part.inlineData && + typeof part.inlineData === 'object' && + 'data' in part.inlineData && + typeof part.inlineData.data === 'string' + ); +} + +/** + * Check if a message has the Google GenAI parts format. + */ +function isPartsMessage(message) { + return ( + message !== null && + typeof message === 'object' && + 'parts' in message && + Array.isArray((message ).parts) && + (message ).parts.length > 0 + ); +} + +/** + * Truncate a message with `content: string` format (OpenAI/Anthropic). + * + * @param message - Message with content property + * @param maxBytes - Maximum byte limit + * @returns Array with truncated message, or empty array if it doesn't fit + */ +function truncateContentMessage(message, maxBytes) { + // Calculate overhead (message structure without content) + const emptyMessage = { ...message, content: '' }; + const overhead = jsonBytes(emptyMessage); + const availableForContent = maxBytes - overhead; + + if (availableForContent <= 0) { + return []; + } + + const truncatedContent = truncateTextByBytes(message.content, availableForContent); + return [{ ...message, content: truncatedContent }]; +} + +/** + * Truncate a message with `parts: [...]` format (Google GenAI). + * Keeps as many complete parts as possible, only truncating the first part if needed. + * + * @param message - Message with parts array + * @param maxBytes - Maximum byte limit + * @returns Array with truncated message, or empty array if it doesn't fit + */ +function truncatePartsMessage(message, maxBytes) { + const { parts } = message; + + // Calculate overhead by creating empty text parts + const emptyParts = parts.map(part => withPartText(part, '')); + const overhead = jsonBytes({ ...message, parts: emptyParts }); + let remainingBytes = maxBytes - overhead; + + if (remainingBytes <= 0) { + return []; + } + + // Include parts until we run out of space + const includedParts = []; + + for (const part of parts) { + const text = getPartText(part); + const textSize = utf8Bytes(text); + + if (textSize <= remainingBytes) { + // Part fits: include it as-is + includedParts.push(part); + remainingBytes -= textSize; + } else if (includedParts.length === 0) { + // First part doesn't fit: truncate it + const truncated = truncateTextByBytes(text, remainingBytes); + if (truncated) { + includedParts.push(withPartText(part, truncated)); + } + break; + } else { + // Subsequent part doesn't fit: stop here + break; + } + } + + /* c8 ignore start + * for type safety only, algorithm guarantees SOME text included */ + if (includedParts.length <= 0) { + return []; + } else { + /* c8 ignore stop */ + return [{ ...message, parts: includedParts }]; + } +} + +/** + * Truncate a single message to fit within maxBytes. + * + * Supports two message formats: + * - OpenAI/Anthropic: `{ ..., content: string }` + * - Google GenAI: `{ ..., parts: Array }` + * + * @param message - The message to truncate + * @param maxBytes - Maximum byte limit for the message + * @returns Array containing the truncated message, or empty array if truncation fails + */ +function truncateSingleMessage(message, maxBytes) { + if (!message) return []; + + // Handle plain strings (e.g., embeddings input) + if (typeof message === 'string') { + const truncated = truncateTextByBytes(message, maxBytes); + return truncated ? [truncated] : []; + } + + if (typeof message !== 'object') { + return []; + } + + if (isContentMessage(message)) { + return truncateContentMessage(message, maxBytes); + } + + if (isPartsMessage(message)) { + return truncatePartsMessage(message, maxBytes); + } + + // Unknown message format: cannot truncate safely + return []; +} + +const REMOVED_STRING = '[Filtered]'; + +const MEDIA_FIELDS = ['image_url', 'data', 'content', 'b64_json', 'result', 'uri'] ; + +function stripInlineMediaFromSingleMessage(part) { + const strip = { ...part }; + if (isContentMedia(strip.source)) { + strip.source = stripInlineMediaFromSingleMessage(strip.source); + } + // google genai inline data blob objects + if (hasInlineData(part)) { + strip.inlineData = { ...part.inlineData, data: REMOVED_STRING }; + } + for (const field of MEDIA_FIELDS) { + if (typeof strip[field] === 'string') strip[field] = REMOVED_STRING; + } + return strip; +} + +/** + * Strip the inline media from message arrays. + * + * This returns a stripped message. We do NOT want to mutate the data in place, + * because of course we still want the actual API/client to handle the media. + */ +function stripInlineMediaFromMessages(messages) { + const stripped = messages.map(message => { + let newMessage = undefined; + if (!!message && typeof message === 'object') { + if (isContentArrayMessage(message)) { + newMessage = { + ...message, + content: stripInlineMediaFromMessages(message.content), + }; + } else if ('content' in message && isContentMedia(message.content)) { + newMessage = { + ...message, + content: stripInlineMediaFromSingleMessage(message.content), + }; + } + if (isPartsMessage(message)) { + newMessage = { + // might have to strip content AND parts + ...(newMessage ?? message), + parts: stripInlineMediaFromMessages(message.parts), + }; + } + if (isContentMedia(newMessage)) { + newMessage = stripInlineMediaFromSingleMessage(newMessage); + } else if (isContentMedia(message)) { + newMessage = stripInlineMediaFromSingleMessage(message); + } + } + return newMessage ?? message; + }); + return stripped; +} + +/** + * Truncate an array of messages to fit within a byte limit. + * + * Strategy: + * - Always keeps only the last (newest) message + * - Strips inline media from the message + * - Truncates the message content if it exceeds the byte limit + * + * @param messages - Array of messages to truncate + * @param maxBytes - Maximum total byte limit for the message + * @returns Array containing only the last message (possibly truncated) + * + * @example + * ```ts + * const messages = [msg1, msg2, msg3, msg4]; // newest is msg4 + * const truncated = truncateMessagesByBytes(messages, 10000); + * // Returns [msg4] (truncated if needed) + * ``` + */ +function truncateMessagesByBytes(messages, maxBytes) { + // Early return for empty or invalid input + if (!Array.isArray(messages) || messages.length === 0) { + return messages; + } + + // Always keep only the last message + const lastMessage = messages[messages.length - 1]; + + // Strip inline media from the single message + const stripped = stripInlineMediaFromMessages([lastMessage]); + const strippedMessage = stripped[0]; + + // Check if it fits + const messageBytes = jsonBytes(strippedMessage); + if (messageBytes <= maxBytes) { + return stripped; + } + + // Truncate the single message if needed + return truncateSingleMessage(strippedMessage, maxBytes); +} + +/** + * Truncate GenAI messages using the default byte limit. + * + * Convenience wrapper around `truncateMessagesByBytes` with the default limit. + * + * @param messages - Array of messages to truncate + * @returns Truncated array of messages + */ +function truncateGenAiMessages(messages) { + return truncateMessagesByBytes(messages, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT); +} + +/** + * Truncate GenAI string input using the default byte limit. + * + * @param input - The string to truncate + * @returns Truncated string + */ +function truncateGenAiStringInput(input) { + return truncateTextByBytes(input, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT); +} + +exports.DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT; +exports.truncateGenAiMessages = truncateGenAiMessages; +exports.truncateGenAiStringInput = truncateGenAiStringInput; +//# sourceMappingURL=messageTruncation.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/messageTruncation.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/messageTruncation.js.map new file mode 100644 index 0000000..3b8e3ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/messageTruncation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"messageTruncation.js","sources":["../../../../src/tracing/ai/messageTruncation.ts"],"sourcesContent":["/**\n * Default maximum size in bytes for GenAI messages.\n * Messages exceeding this limit will be truncated.\n */\nexport const DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000;\n\n/**\n * Message format used by OpenAI and Anthropic APIs.\n */\ntype ContentMessage = {\n [key: string]: unknown;\n content: string;\n};\n\n/**\n * Message format used by OpenAI and Anthropic APIs for media.\n */\ntype ContentArrayMessage = {\n [key: string]: unknown;\n content: {\n [key: string]: unknown;\n type: string;\n }[];\n};\n\n/**\n * Inline media content source, with a potentially very large base64\n * blob or data: uri.\n */\ntype ContentMedia = Record &\n (\n | {\n media_type: string;\n data: string;\n }\n | {\n image_url: `data:${string}`;\n }\n | {\n type: 'blob' | 'base64';\n content: string;\n }\n | {\n b64_json: string;\n }\n | {\n uri: `data:${string}`;\n }\n );\n\n/**\n * Message format used by Google GenAI API.\n * Parts can be strings or objects with a text property.\n */\ntype PartsMessage = {\n [key: string]: unknown;\n parts: Array;\n};\n\n/**\n * A part in a Google GenAI message that contains text.\n */\ntype TextPart = string | { text: string };\n\n/**\n * A part in a Google GenAI that contains media.\n */\ntype MediaPart = {\n type: string;\n content: string;\n};\n\n/**\n * Calculate the UTF-8 byte length of a string.\n */\nconst utf8Bytes = (text: string): number => {\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: unknown): number => {\n return utf8Bytes(JSON.stringify(value));\n};\n\n/**\n * Truncate a string to fit within maxBytes 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 (UTF-8 encoded)\n * @returns Truncated string that fits within maxBytes\n */\nfunction truncateTextByBytes(text: string, maxBytes: number): string {\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 Google GenAI message part.\n * Parts are either plain strings or objects with a text property.\n *\n * @returns The text content\n */\nfunction getPartText(part: TextPart | MediaPart): string {\n if (typeof part === 'string') {\n return part;\n }\n if ('text' in part) return part.text;\n return '';\n}\n\n/**\n * Create a new part with updated text content while preserving the original structure.\n *\n * @param part - Original part (string or object)\n * @param text - New text content\n * @returns New part with updated text\n */\nfunction withPartText(part: TextPart | MediaPart, text: string): TextPart {\n if (typeof part === 'string') {\n return text;\n }\n return { ...part, text };\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content format.\n */\nfunction isContentMessage(message: unknown): message is ContentMessage {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'content' in message &&\n typeof (message as ContentMessage).content === 'string'\n );\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content array format.\n */\nfunction isContentArrayMessage(message: unknown): message is ContentArrayMessage {\n return message !== null && typeof message === 'object' && 'content' in message && Array.isArray(message.content);\n}\n\n/**\n * Check if a content part is an OpenAI/Anthropic media source\n */\nfunction isContentMedia(part: unknown): part is ContentMedia {\n if (!part || typeof part !== 'object') return false;\n\n return (\n isContentMediaSource(part) ||\n hasInlineData(part) ||\n ('media_type' in part && typeof part.media_type === 'string' && 'data' in part) ||\n ('image_url' in part && typeof part.image_url === 'string' && part.image_url.startsWith('data:')) ||\n ('type' in part && (part.type === 'blob' || part.type === 'base64')) ||\n 'b64_json' in part ||\n ('type' in part && 'result' in part && part.type === 'image_generation') ||\n ('uri' in part && typeof part.uri === 'string' && part.uri.startsWith('data:'))\n );\n}\nfunction isContentMediaSource(part: NonNullable): boolean {\n return 'type' in part && typeof part.type === 'string' && 'source' in part && isContentMedia(part.source);\n}\nfunction hasInlineData(part: NonNullable): part is { inlineData: { data?: string } } {\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\n/**\n * Check if a message has the Google GenAI parts format.\n */\nfunction isPartsMessage(message: unknown): message is PartsMessage {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'parts' in message &&\n Array.isArray((message as PartsMessage).parts) &&\n (message as PartsMessage).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: ContentMessage, maxBytes: number): unknown[] {\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 * Truncate a message with `parts: [...]` format (Google GenAI).\n * Keeps as many complete parts as possible, only truncating the first part if needed.\n *\n * @param message - Message with parts array\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncatePartsMessage(message: PartsMessage, maxBytes: number): unknown[] {\n const { parts } = message;\n\n // Calculate overhead by creating empty text parts\n const emptyParts = parts.map(part => withPartText(part, ''));\n const overhead = jsonBytes({ ...message, parts: emptyParts });\n let remainingBytes = maxBytes - overhead;\n\n if (remainingBytes <= 0) {\n return [];\n }\n\n // Include parts until we run out of space\n const includedParts: (TextPart | MediaPart)[] = [];\n\n for (const part of parts) {\n const text = getPartText(part);\n const textSize = utf8Bytes(text);\n\n if (textSize <= remainingBytes) {\n // Part fits: include it as-is\n includedParts.push(part);\n remainingBytes -= textSize;\n } else if (includedParts.length === 0) {\n // First part doesn't fit: truncate it\n const truncated = truncateTextByBytes(text, remainingBytes);\n if (truncated) {\n includedParts.push(withPartText(part, truncated));\n }\n break;\n } else {\n // Subsequent part 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 (includedParts.length <= 0) {\n return [];\n } else {\n /* c8 ignore stop */\n return [{ ...message, parts: includedParts }];\n }\n}\n\n/**\n * Truncate a single message to fit within maxBytes.\n *\n * Supports two message formats:\n * - OpenAI/Anthropic: `{ ..., content: string }`\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: unknown, maxBytes: number): unknown[] {\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 (isPartsMessage(message)) {\n return truncatePartsMessage(message, maxBytes);\n }\n\n // Unknown message format: cannot truncate safely\n return [];\n}\n\nconst REMOVED_STRING = '[Filtered]';\n\nconst MEDIA_FIELDS = ['image_url', 'data', 'content', 'b64_json', 'result', 'uri'] as const;\n\nfunction stripInlineMediaFromSingleMessage(part: ContentMedia): ContentMedia {\n const strip = { ...part };\n if (isContentMedia(strip.source)) {\n strip.source = stripInlineMediaFromSingleMessage(strip.source);\n }\n // google genai inline data blob objects\n if (hasInlineData(part)) {\n strip.inlineData = { ...part.inlineData, 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\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: unknown[]): unknown[] {\n const stripped = messages.map(message => {\n let newMessage: Record | undefined = 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: unknown[], maxBytes: number): unknown[] {\n // Early return for empty or invalid input\n if (!Array.isArray(messages) || messages.length === 0) {\n return messages;\n }\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 <= maxBytes) {\n return stripped;\n }\n\n // Truncate the single message if needed\n return truncateSingleMessage(strippedMessage, maxBytes);\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 */\nexport function truncateGenAiMessages(messages: unknown[]): unknown[] {\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 */\nexport function truncateGenAiStringInput(input: string): string {\n return truncateTextByBytes(input, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/utils.js new file mode 100644 index 0000000..67d6716 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/utils.js @@ -0,0 +1,156 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const genAiAttributes = require('./gen-ai-attributes.js'); +const messageTruncation = require('./messageTruncation.js'); + +/** + * Maps AI method paths to OpenTelemetry semantic convention operation names + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +function getFinalOperationName(methodPath) { + if (methodPath.includes('messages')) { + return 'chat'; + } + if (methodPath.includes('completions')) { + return 'text_completion'; + } + // Google GenAI: models.generateContent* -> generate_content (actually generates AI responses) + if (methodPath.includes('generateContent')) { + return 'generate_content'; + } + // Anthropic: models.get/retrieve -> models (metadata retrieval only) + if (methodPath.includes('models')) { + return 'models'; + } + if (methodPath.includes('chat')) { + return 'chat'; + } + return methodPath.split('.').pop() || 'unknown'; +} + +/** + * Get the span operation for AI methods + * Following Sentry's convention: "gen_ai.{operation_name}" + */ +function getSpanOperation(methodPath) { + return `gen_ai.${getFinalOperationName(methodPath)}`; +} + +/** + * Build method path from current traversal + */ +function buildMethodPath(currentPath, prop) { + return currentPath ? `${currentPath}.${prop}` : prop; +} + +/** + * Set token usage attributes + * @param span - The span to add attributes to + * @param promptTokens - The number of prompt tokens + * @param completionTokens - The number of completion tokens + * @param cachedInputTokens - The number of cached input tokens + * @param cachedOutputTokens - The number of cached output tokens + */ +function setTokenUsageAttributes( + span, + promptTokens, + completionTokens, + cachedInputTokens, + cachedOutputTokens, +) { + if (promptTokens !== undefined) { + span.setAttributes({ + [genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens, + }); + } + if (completionTokens !== undefined) { + span.setAttributes({ + [genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens, + }); + } + if ( + promptTokens !== undefined || + completionTokens !== undefined || + cachedInputTokens !== undefined || + cachedOutputTokens !== undefined + ) { + /** + * Total input tokens in a request is the summation of `input_tokens`, + * `cache_creation_input_tokens`, and `cache_read_input_tokens`. + */ + const totalTokens = + (promptTokens ?? 0) + (completionTokens ?? 0) + (cachedInputTokens ?? 0) + (cachedOutputTokens ?? 0); + + span.setAttributes({ + [genAiAttributes.GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens, + }); + } +} + +/** + * Get the truncated JSON string for a string or array of strings. + * + * @param value - The string or array of strings to truncate + * @returns The truncated JSON string + */ +function getTruncatedJsonString(value) { + if (typeof value === 'string') { + // Some values are already JSON strings, so we don't need to duplicate the JSON parsing + return messageTruncation.truncateGenAiStringInput(value); + } + if (Array.isArray(value)) { + // truncateGenAiMessages returns an array of strings, so we need to stringify it + const truncatedMessages = messageTruncation.truncateGenAiMessages(value); + return JSON.stringify(truncatedMessages); + } + // value is an object, so we need to stringify it + return JSON.stringify(value); +} + +/** + * Extract system instructions from messages array. + * Finds the first system message and formats it according to OpenTelemetry semantic conventions. + * + * @param messages - Array of messages to extract system instructions from + * @returns systemInstructions (JSON string) and filteredMessages (without system message) + */ +function extractSystemInstructions(messages) + + { + if (!Array.isArray(messages)) { + return { systemInstructions: undefined, filteredMessages: messages }; + } + + const systemMessageIndex = messages.findIndex( + msg => msg && typeof msg === 'object' && 'role' in msg && (msg ).role === 'system', + ); + + if (systemMessageIndex === -1) { + return { systemInstructions: undefined, filteredMessages: messages }; + } + + const systemMessage = messages[systemMessageIndex] ; + const systemContent = + typeof systemMessage.content === 'string' + ? systemMessage.content + : systemMessage.content !== undefined + ? JSON.stringify(systemMessage.content) + : undefined; + + if (!systemContent) { + return { systemInstructions: undefined, filteredMessages: messages }; + } + + const systemInstructions = JSON.stringify([{ type: 'text', content: systemContent }]); + const filteredMessages = [...messages.slice(0, systemMessageIndex), ...messages.slice(systemMessageIndex + 1)]; + + return { systemInstructions, filteredMessages }; +} + +exports.buildMethodPath = buildMethodPath; +exports.extractSystemInstructions = extractSystemInstructions; +exports.getFinalOperationName = getFinalOperationName; +exports.getSpanOperation = getSpanOperation; +exports.getTruncatedJsonString = getTruncatedJsonString; +exports.setTokenUsageAttributes = setTokenUsageAttributes; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/utils.js.map new file mode 100644 index 0000000..919f753 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/ai/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/ai/utils.ts"],"sourcesContent":["/**\n * Shared utils for AI integrations (OpenAI, Anthropic, Verce.AI, etc.)\n */\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from './gen-ai-attributes';\nimport { truncateGenAiMessages, truncateGenAiStringInput } from './messageTruncation';\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 */\nexport function getFinalOperationName(methodPath: string): string {\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 */\nexport function getSpanOperation(methodPath: string): string {\n return `gen_ai.${getFinalOperationName(methodPath)}`;\n}\n\n/**\n * Build method path from current traversal\n */\nexport function buildMethodPath(currentPath: string, prop: string): string {\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 */\nexport function setTokenUsageAttributes(\n span: Span,\n promptTokens?: number,\n completionTokens?: number,\n cachedInputTokens?: number,\n cachedOutputTokens?: number,\n): void {\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 */\nexport function getTruncatedJsonString(value: T | T[]): string {\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 */\nexport function extractSystemInstructions(messages: unknown[] | unknown): {\n systemInstructions: string | undefined;\n filteredMessages: unknown[] | unknown;\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 as { role: string }).role === 'system',\n );\n\n if (systemMessageIndex === -1) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessage = messages[systemMessageIndex] as { role: string; content?: string | unknown };\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"],"names":["GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE","truncateGenAiStringInput","truncateGenAiMessages"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/constants.js new file mode 100644 index 0000000..6060f1e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/constants.js @@ -0,0 +1,19 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const ANTHROPIC_AI_INTEGRATION_NAME = 'Anthropic_AI'; + +// https://docs.anthropic.com/en/api/messages +// https://docs.anthropic.com/en/api/models-list +const ANTHROPIC_AI_INSTRUMENTED_METHODS = [ + 'messages.create', + 'messages.stream', + 'messages.countTokens', + 'models.get', + 'completions.create', + 'models.retrieve', + 'beta.messages.create', +] ; + +exports.ANTHROPIC_AI_INSTRUMENTED_METHODS = ANTHROPIC_AI_INSTRUMENTED_METHODS; +exports.ANTHROPIC_AI_INTEGRATION_NAME = ANTHROPIC_AI_INTEGRATION_NAME; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/constants.js.map new file mode 100644 index 0000000..15ab521 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/anthropic-ai/constants.ts"],"sourcesContent":["export 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\nexport const 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] as const;\n"],"names":[],"mappings":";;AAAO,MAAM,6BAAA,GAAgC;;AAE7C;AACA;AACO,MAAM,oCAAoC;AACjD,EAAE,iBAAiB;AACnB,EAAE,iBAAiB;AACnB,EAAE,sBAAsB;AACxB,EAAE,YAAY;AACd,EAAE,oBAAoB;AACtB,EAAE,iBAAiB;AACnB,EAAE,sBAAsB;AACxB,CAAA;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/index.js new file mode 100644 index 0000000..e580f6a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/index.js @@ -0,0 +1,341 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../../currentScopes.js'); +const exports$1 = require('../../exports.js'); +const semanticAttributes = require('../../semanticAttributes.js'); +const spanstatus = require('../spanstatus.js'); +const trace = require('../trace.js'); +const handleCallbackErrors = require('../../utils/handleCallbackErrors.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const utils$1 = require('../ai/utils.js'); +const streaming = require('./streaming.js'); +const utils = require('./utils.js'); + +/** + * Extract request attributes from method arguments + */ +function extractRequestAttributes(args, methodPath) { + const attributes = { + [genAiAttributes.GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic', + [genAiAttributes.GEN_AI_OPERATION_NAME_ATTRIBUTE]: utils$1.getFinalOperationName(methodPath), + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic', + }; + + if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) { + const params = args[0] ; + if (params.tools && Array.isArray(params.tools)) { + attributes[genAiAttributes.GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(params.tools); + } + + attributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE] = params.model ?? 'unknown'; + if ('temperature' in params) attributes[genAiAttributes.GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature; + if ('top_p' in params) attributes[genAiAttributes.GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p; + if ('stream' in params) attributes[genAiAttributes.GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream; + if ('top_k' in params) attributes[genAiAttributes.GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = params.top_k; + if ('frequency_penalty' in params) + attributes[genAiAttributes.GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty; + if ('max_tokens' in params) attributes[genAiAttributes.GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = params.max_tokens; + } else { + if (methodPath === 'models.retrieve' || methodPath === 'models.get') { + // models.retrieve(model-id) and models.get(model-id) + attributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE] = args[0]; + } else { + attributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown'; + } + } + + return attributes; +} + +/** + * Add private request attributes to spans. + * This is only recorded if recordInputs is true. + */ +function addPrivateRequestAttributes(span, params) { + const messages = utils.messagesFromParams(params); + utils.setMessagesAttribute(span, messages); + + if ('prompt' in params) { + span.setAttributes({ [genAiAttributes.GEN_AI_PROMPT_ATTRIBUTE]: JSON.stringify(params.prompt) }); + } +} + +/** + * Add content attributes when recordOutputs is enabled + */ +function addContentAttributes(span, response) { + // Messages.create + if ('content' in response) { + if (Array.isArray(response.content)) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.content + .map((item) => item.text) + .filter(text => !!text) + .join(''), + }); + + const toolCalls = []; + + for (const item of response.content) { + if (item.type === 'tool_use' || item.type === 'server_tool_use') { + toolCalls.push(item); + } + } + if (toolCalls.length > 0) { + span.setAttributes({ [genAiAttributes.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls) }); + } + } + } + // Completions.create + if ('completion' in response) { + span.setAttributes({ [genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.completion }); + } + // Models.countTokens + if ('input_tokens' in response) { + span.setAttributes({ [genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(response.input_tokens) }); + } +} + +/** + * Add basic metadata attributes from the response + */ +function addMetadataAttributes(span, response) { + if ('id' in response && 'model' in response) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_ID_ATTRIBUTE]: response.id, + [genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model, + }); + + if ('created' in response && typeof response.created === 'number') { + span.setAttributes({ + [genAiAttributes.ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created * 1000).toISOString(), + }); + } + if ('created_at' in response && typeof response.created_at === 'number') { + span.setAttributes({ + [genAiAttributes.ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created_at * 1000).toISOString(), + }); + } + + if ('usage' in response && response.usage) { + utils$1.setTokenUsageAttributes( + span, + response.usage.input_tokens, + response.usage.output_tokens, + response.usage.cache_creation_input_tokens, + response.usage.cache_read_input_tokens, + ); + } + } +} + +/** + * Add response attributes to spans + */ +function addResponseAttributes(span, response, recordOutputs) { + if (!response || typeof response !== 'object') return; + + // capture error, do not add attributes if error (they shouldn't exist) + if ('type' in response && response.type === 'error') { + utils.handleResponseError(span, response); + return; + } + + // Private response attributes that are only recorded if recordOutputs is true. + if (recordOutputs) { + addContentAttributes(span, response); + } + + // Add basic metadata attributes + addMetadataAttributes(span, response); +} + +/** + * Handle common error catching and reporting for streaming requests + */ +function handleStreamingError(error, span, methodPath) { + exports$1.captureException(error, { + mechanism: { handled: false, type: 'auto.ai.anthropic', data: { function: methodPath } }, + }); + + if (span.isRecording()) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'internal_error' }); + span.end(); + } + throw error; +} + +/** + * Handle streaming cases with common logic + */ +function handleStreamingRequest( + originalMethod, + target, + context, + args, + requestAttributes, + operationName, + methodPath, + params, + options, + isStreamRequested, + isStreamingMethod, +) { + const model = requestAttributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown'; + const spanConfig = { + name: `${operationName} ${model} stream-response`, + op: utils$1.getSpanOperation(methodPath), + attributes: requestAttributes , + }; + + // messages.stream() always returns a sync MessageStream, even with stream: true param + if (isStreamRequested && !isStreamingMethod) { + return trace.startSpanManual(spanConfig, async span => { + try { + if (options.recordInputs && params) { + addPrivateRequestAttributes(span, params); + } + const result = await originalMethod.apply(context, args); + return streaming.instrumentAsyncIterableStream( + result , + span, + options.recordOutputs ?? false, + ) ; + } catch (error) { + return handleStreamingError(error, span, methodPath); + } + }); + } else { + return trace.startSpanManual(spanConfig, span => { + try { + if (options.recordInputs && params) { + addPrivateRequestAttributes(span, params); + } + const messageStream = target.apply(context, args); + return streaming.instrumentMessageStream(messageStream, span, options.recordOutputs ?? false); + } catch (error) { + return handleStreamingError(error, span, methodPath); + } + }); + } +} + +/** + * Instrument a method with Sentry spans + * Following Sentry AI Agents Manual Instrumentation conventions + * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation + */ +function instrumentMethod( + originalMethod, + methodPath, + context, + options, +) { + return new Proxy(originalMethod, { + apply(target, thisArg, args) { + const requestAttributes = extractRequestAttributes(args, methodPath); + const model = requestAttributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown'; + const operationName = utils$1.getFinalOperationName(methodPath); + + const params = typeof args[0] === 'object' ? (args[0] ) : undefined; + const isStreamRequested = Boolean(params?.stream); + const isStreamingMethod = methodPath === 'messages.stream'; + + if (isStreamRequested || isStreamingMethod) { + return handleStreamingRequest( + originalMethod, + target, + context, + args, + requestAttributes, + operationName, + methodPath, + params, + options, + isStreamRequested, + isStreamingMethod, + ); + } + + return trace.startSpan( + { + name: `${operationName} ${model}`, + op: utils$1.getSpanOperation(methodPath), + attributes: requestAttributes , + }, + span => { + if (options.recordInputs && params) { + addPrivateRequestAttributes(span, params); + } + + return handleCallbackErrors.handleCallbackErrors( + () => target.apply(context, args), + error => { + exports$1.captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.anthropic', + data: { + function: methodPath, + }, + }, + }); + }, + () => {}, + result => addResponseAttributes(span, result , options.recordOutputs), + ); + }, + ); + }, + }) ; +} + +/** + * Create a deep proxy for Anthropic AI client instrumentation + */ +function createDeepProxy(target, currentPath = '', options) { + return new Proxy(target, { + get(obj, prop) { + const value = (obj )[prop]; + const methodPath = utils$1.buildMethodPath(currentPath, String(prop)); + + if (typeof value === 'function' && utils.shouldInstrument(methodPath)) { + return instrumentMethod(value , methodPath, obj, options); + } + + if (typeof value === 'function') { + // Bind non-instrumented functions to preserve the original `this` context, + return value.bind(obj); + } + + if (value && typeof value === 'object') { + return createDeepProxy(value, methodPath, options); + } + + return value; + }, + }) ; +} + +/** + * Instrument an Anthropic AI client with Sentry tracing + * Can be used across Node.js, Cloudflare Workers, and Vercel Edge + * + * @template T - The type of the client that extends object + * @param client - The Anthropic AI client to instrument + * @param options - Optional configuration for recording inputs and outputs + * @returns The instrumented client with the same type as the input + */ +function instrumentAnthropicAiClient(anthropicAiClient, options) { + const sendDefaultPii = Boolean(currentScopes.getClient()?.getOptions().sendDefaultPii); + + const _options = { + recordInputs: sendDefaultPii, + recordOutputs: sendDefaultPii, + ...options, + }; + return createDeepProxy(anthropicAiClient, '', _options); +} + +exports.instrumentAnthropicAiClient = instrumentAnthropicAiClient; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/index.js.map new file mode 100644 index 0000000..fe53717 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/anthropic-ai/index.ts"],"sourcesContent":["import { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport { handleCallbackErrors } from '../../utils/handleCallbackErrors';\nimport {\n ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_PROMPT_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { buildMethodPath, getFinalOperationName, getSpanOperation, setTokenUsageAttributes } from '../ai/utils';\nimport { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming';\nimport type {\n AnthropicAiInstrumentedMethod,\n AnthropicAiOptions,\n AnthropicAiResponse,\n AnthropicAiStreamingEvent,\n ContentBlock,\n} from './types';\nimport { handleResponseError, messagesFromParams, setMessagesAttribute, shouldInstrument } from './utils';\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], methodPath: string): Record {\n const attributes: Record = {\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] as Record;\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: Span, params: Record): void {\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: Span, response: AnthropicAiResponse): void {\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: ContentBlock) => item.text)\n .filter(text => !!text)\n .join(''),\n });\n\n const toolCalls: Array = [];\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: Span, response: AnthropicAiResponse): void {\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: Span, response: AnthropicAiResponse, recordOutputs?: boolean): void {\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: unknown, span: Span, methodPath: string): never {\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: (...args: T) => R | Promise,\n target: (...args: T) => R | Promise,\n context: unknown,\n args: T,\n requestAttributes: Record,\n operationName: string,\n methodPath: string,\n params: Record | undefined,\n options: AnthropicAiOptions,\n isStreamRequested: boolean,\n isStreamingMethod: boolean,\n): R | Promise {\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const spanConfig = {\n name: `${operationName} ${model} stream-response`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes as Record,\n };\n\n // messages.stream() always returns a sync MessageStream, even with stream: true param\n if (isStreamRequested && !isStreamingMethod) {\n return startSpanManual(spanConfig, async span => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n const result = await originalMethod.apply(context, args);\n return instrumentAsyncIterableStream(\n result as AsyncIterable,\n span,\n options.recordOutputs ?? false,\n ) as unknown as R;\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n });\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: (...args: T) => R | Promise,\n methodPath: AnthropicAiInstrumentedMethod,\n context: unknown,\n options: AnthropicAiOptions,\n): (...args: T) => R | Promise {\n return new Proxy(originalMethod, {\n apply(target, thisArg, args: T): R | Promise {\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] as Record) : 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 return startSpan(\n {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes as Record,\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: {\n handled: false,\n type: 'auto.ai.anthropic',\n data: {\n function: methodPath,\n },\n },\n });\n },\n () => {},\n result => addResponseAttributes(span, result as AnthropicAiResponse, options.recordOutputs),\n );\n },\n );\n },\n }) as (...args: T) => R | Promise;\n}\n\n/**\n * Create a deep proxy for Anthropic AI client instrumentation\n */\nfunction createDeepProxy(target: T, currentPath = '', options: AnthropicAiOptions): T {\n return new Proxy(target, {\n get(obj: object, prop: string): unknown {\n const value = (obj as Record)[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n if (typeof value === 'function' && shouldInstrument(methodPath)) {\n return instrumentMethod(value as (...args: unknown[]) => unknown | Promise, 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 }) as T;\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 */\nexport function instrumentAnthropicAiClient(anthropicAiClient: T, options?: AnthropicAiOptions): T {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n\n const _options = {\n recordInputs: sendDefaultPii,\n recordOutputs: sendDefaultPii,\n ...options,\n };\n return createDeepProxy(anthropicAiClient, '', _options);\n}\n"],"names":["GEN_AI_SYSTEM_ATTRIBUTE","GEN_AI_OPERATION_NAME_ATTRIBUTE","getFinalOperationName","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","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","messagesFromParams","setMessagesAttribute","GEN_AI_PROMPT_ATTRIBUTE","GEN_AI_RESPONSE_TEXT_ATTRIBUTE","GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","GEN_AI_RESPONSE_ID_ATTRIBUTE","GEN_AI_RESPONSE_MODEL_ATTRIBUTE","ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE","setTokenUsageAttributes","handleResponseError","captureException","SPAN_STATUS_ERROR","getSpanOperation","startSpanManual","instrumentAsyncIterableStream","instrumentMessageStream","startSpan","handleCallbackErrors","buildMethodPath","shouldInstrument","getClient"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/streaming.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/streaming.js new file mode 100644 index 0000000..29ceae2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/streaming.js @@ -0,0 +1,354 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const exports$1 = require('../../exports.js'); +const spanstatus = require('../spanstatus.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const utils = require('../ai/utils.js'); + +/** + * State object used to accumulate information from a stream of Anthropic AI events. + */ + +/** + * Checks if an event is an error event + * @param event - The event to process + * @param state - The state of the streaming process + * @param recordOutputs - Whether to record outputs + * @param span - The span to update + * @returns Whether an error occurred + */ + +function isErrorEvent(event, span) { + if ('type' in event && typeof event.type === 'string') { + // If the event is an error, set the span status and capture the error + // These error events are not rejected by the API by default, but are sent as metadata of the response + if (event.type === 'error') { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: event.error?.type ?? 'internal_error' }); + exports$1.captureException(event.error, { + mechanism: { + handled: false, + type: 'auto.ai.anthropic.anthropic_error', + }, + }); + return true; + } + } + return false; +} + +/** + * Processes the message metadata of an event + * @param event - The event to process + * @param state - The state of the streaming process + */ + +function handleMessageMetadata(event, state) { + // The token counts shown in the usage field of the message_delta event are cumulative. + // @see https://docs.anthropic.com/en/docs/build-with-claude/streaming#event-types + if (event.type === 'message_delta' && event.usage) { + if ('output_tokens' in event.usage && typeof event.usage.output_tokens === 'number') { + state.completionTokens = event.usage.output_tokens; + } + } + + if (event.message) { + const message = event.message; + + if (message.id) state.responseId = message.id; + if (message.model) state.responseModel = message.model; + if (message.stop_reason) state.finishReasons.push(message.stop_reason); + + if (message.usage) { + if (typeof message.usage.input_tokens === 'number') state.promptTokens = message.usage.input_tokens; + if (typeof message.usage.cache_creation_input_tokens === 'number') + state.cacheCreationInputTokens = message.usage.cache_creation_input_tokens; + if (typeof message.usage.cache_read_input_tokens === 'number') + state.cacheReadInputTokens = message.usage.cache_read_input_tokens; + } + } +} + +/** + * Handle start of a content block (e.g., tool_use) + */ +function handleContentBlockStart(event, state) { + if (event.type !== 'content_block_start' || typeof event.index !== 'number' || !event.content_block) return; + if (event.content_block.type === 'tool_use' || event.content_block.type === 'server_tool_use') { + state.activeToolBlocks[event.index] = { + id: event.content_block.id, + name: event.content_block.name, + inputJsonParts: [], + }; + } +} + +/** + * Handle deltas of a content block, including input_json_delta for tool_use + */ +function handleContentBlockDelta( + event, + state, + recordOutputs, +) { + if (event.type !== 'content_block_delta' || !event.delta) return; + + // Accumulate tool_use input JSON deltas only when we have an index and an active tool block + if ( + typeof event.index === 'number' && + 'partial_json' in event.delta && + typeof event.delta.partial_json === 'string' + ) { + const active = state.activeToolBlocks[event.index]; + if (active) { + active.inputJsonParts.push(event.delta.partial_json); + } + } + + // Accumulate streamed response text regardless of index + if (recordOutputs && typeof event.delta.text === 'string') { + state.responseTexts.push(event.delta.text); + } +} + +/** + * Handle stop of a content block; finalize tool_use entries + */ +function handleContentBlockStop(event, state) { + if (event.type !== 'content_block_stop' || typeof event.index !== 'number') return; + + const active = state.activeToolBlocks[event.index]; + if (!active) return; + + const raw = active.inputJsonParts.join(''); + let parsedInput; + + try { + parsedInput = raw ? JSON.parse(raw) : {}; + } catch { + parsedInput = { __unparsed: raw }; + } + + state.toolCalls.push({ + type: 'tool_use', + id: active.id, + name: active.name, + input: parsedInput, + }); + + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete state.activeToolBlocks[event.index]; +} + +/** + * Processes an event + * @param event - The event to process + * @param state - The state of the streaming process + * @param recordOutputs - Whether to record outputs + * @param span - The span to update + */ +function processEvent( + event, + state, + recordOutputs, + span, +) { + if (!(event && typeof event === 'object')) { + return; + } + + const isError = isErrorEvent(event, span); + if (isError) return; + + handleMessageMetadata(event, state); + + // Tool call events are sent via 3 separate events: + // - content_block_start (start of the tool call) + // - content_block_delta (delta aka input of the tool call) + // - content_block_stop (end of the tool call) + // We need to handle them all to capture the full tool call. + handleContentBlockStart(event, state); + handleContentBlockDelta(event, state, recordOutputs); + handleContentBlockStop(event, state); +} + +/** + * Finalizes span attributes when stream processing completes + */ +function finalizeStreamSpan(state, span, recordOutputs) { + if (!span.isRecording()) { + return; + } + + // Set common response attributes if available + if (state.responseId) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId, + }); + } + if (state.responseModel) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel, + }); + } + + utils.setTokenUsageAttributes( + span, + state.promptTokens, + state.completionTokens, + state.cacheCreationInputTokens, + state.cacheReadInputTokens, + ); + + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true, + }); + + if (state.finishReasons.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons), + }); + } + + if (recordOutputs && state.responseTexts.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''), + }); + } + + // Set tool calls if any were captured + if (recordOutputs && state.toolCalls.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls), + }); + } + + span.end(); +} + +/** + * Instruments an async iterable stream of Anthropic events, updates the span with + * streaming attributes and (optionally) the aggregated output text, and yields + * each event from the input stream unchanged. + */ +async function* instrumentAsyncIterableStream( + stream, + span, + recordOutputs, +) { + const state = { + responseTexts: [], + finishReasons: [], + responseId: '', + responseModel: '', + promptTokens: undefined, + completionTokens: undefined, + cacheCreationInputTokens: undefined, + cacheReadInputTokens: undefined, + toolCalls: [], + activeToolBlocks: {}, + }; + + try { + for await (const event of stream) { + processEvent(event, state, recordOutputs, span); + yield event; + } + } finally { + // Set common response attributes if available + if (state.responseId) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId, + }); + } + if (state.responseModel) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel, + }); + } + + utils.setTokenUsageAttributes( + span, + state.promptTokens, + state.completionTokens, + state.cacheCreationInputTokens, + state.cacheReadInputTokens, + ); + + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true, + }); + + if (state.finishReasons.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons), + }); + } + + if (recordOutputs && state.responseTexts.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''), + }); + } + + // Set tool calls if any were captured + if (recordOutputs && state.toolCalls.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls), + }); + } + + span.end(); + } +} + +/** + * Instruments a MessageStream by registering event handlers and preserving the original stream API. + */ +function instrumentMessageStream( + stream, + span, + recordOutputs, +) { + const state = { + responseTexts: [], + finishReasons: [], + responseId: '', + responseModel: '', + promptTokens: undefined, + completionTokens: undefined, + cacheCreationInputTokens: undefined, + cacheReadInputTokens: undefined, + toolCalls: [], + activeToolBlocks: {}, + }; + + stream.on('streamEvent', (event) => { + processEvent(event , state, recordOutputs, span); + }); + + // The event fired when a message is done being streamed by the API. Corresponds to the message_stop SSE event. + // @see https://github.com/anthropics/anthropic-sdk-typescript/blob/d3be31f5a4e6ebb4c0a2f65dbb8f381ae73a9166/helpers.md?plain=1#L42-L44 + stream.on('message', () => { + finalizeStreamSpan(state, span, recordOutputs); + }); + + stream.on('error', (error) => { + exports$1.captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.anthropic.stream_error', + }, + }); + + if (span.isRecording()) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'stream_error' }); + span.end(); + } + }); + + return stream; +} + +exports.instrumentAsyncIterableStream = instrumentAsyncIterableStream; +exports.instrumentMessageStream = instrumentMessageStream; +//# sourceMappingURL=streaming.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/streaming.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/streaming.js.map new file mode 100644 index 0000000..7609ffb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/streaming.js.map @@ -0,0 +1 @@ +{"version":3,"file":"streaming.js","sources":["../../../../src/tracing/anthropic-ai/streaming.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { setTokenUsageAttributes } from '../ai/utils';\nimport type { AnthropicAiStreamingEvent } from './types';\n\n/**\n * State object used to accumulate information from a stream of Anthropic AI events.\n */\ninterface StreamingState {\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId: string;\n /** The model name. */\n responseModel: string;\n /** Number of prompt/input tokens used. */\n promptTokens: number | undefined;\n /** Number of completion/output tokens used. */\n completionTokens: number | undefined;\n /** Number of cache creation input tokens used. */\n cacheCreationInputTokens: number | undefined;\n /** Number of cache read input tokens used. */\n cacheReadInputTokens: number | undefined;\n /** Accumulated tool calls (finalized) */\n toolCalls: Array>;\n /** In-progress tool call blocks keyed by index */\n activeToolBlocks: Record<\n number,\n {\n id?: string;\n name?: string;\n inputJsonParts: string[];\n }\n >;\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: AnthropicAiStreamingEvent, span: Span): boolean {\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: event.error?.type ?? 'internal_error' });\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: AnthropicAiStreamingEvent, state: StreamingState): void {\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: AnthropicAiStreamingEvent, state: StreamingState): void {\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: AnthropicAiStreamingEvent,\n state: StreamingState,\n recordOutputs: boolean,\n): void {\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: AnthropicAiStreamingEvent, state: StreamingState): void {\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: unknown;\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: AnthropicAiStreamingEvent,\n state: StreamingState,\n recordOutputs: boolean,\n span: Span,\n): void {\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: StreamingState, span: Span, recordOutputs: boolean): void {\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 */\nexport async function* instrumentAsyncIterableStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\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 */\nexport function instrumentMessageStream void }>(\n stream: R,\n span: Span,\n recordOutputs: boolean,\n): R {\n const state: StreamingState = {\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: unknown) => {\n processEvent(event as AnthropicAiStreamingEvent, 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: unknown) => {\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: 'stream_error' });\n span.end();\n }\n });\n\n return stream;\n}\n"],"names":["SPAN_STATUS_ERROR","captureException","GEN_AI_RESPONSE_ID_ATTRIBUTE","GEN_AI_RESPONSE_MODEL_ATTRIBUTE","setTokenUsageAttributes","GEN_AI_RESPONSE_STREAMING_ATTRIBUTE","GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE","GEN_AI_RESPONSE_TEXT_ATTRIBUTE","GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/utils.js new file mode 100644 index 0000000..def62b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/utils.js @@ -0,0 +1,78 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const exports$1 = require('../../exports.js'); +const spanstatus = require('../spanstatus.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const utils = require('../ai/utils.js'); +const constants = require('./constants.js'); + +/** + * Check if a method path should be instrumented + */ +function shouldInstrument(methodPath) { + return constants.ANTHROPIC_AI_INSTRUMENTED_METHODS.includes(methodPath ); +} + +/** + * Set the messages and messages original length attributes. + * Extracts system instructions before truncation. + */ +function setMessagesAttribute(span, messages) { + if (Array.isArray(messages) && messages.length === 0) { + return; + } + + const { systemInstructions, filteredMessages } = utils.extractSystemInstructions(messages); + + if (systemInstructions) { + span.setAttributes({ + [genAiAttributes.GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE]: systemInstructions, + }); + } + + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 1; + span.setAttributes({ + [genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: utils.getTruncatedJsonString(filteredMessages), + [genAiAttributes.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength, + }); +} + +/** + * Capture error information from the response + * @see https://docs.anthropic.com/en/api/errors#error-shapes + */ +function handleResponseError(span, response) { + if (response.error) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: response.error.type || 'internal_error' }); + + exports$1.captureException(response.error, { + mechanism: { + handled: false, + type: 'auto.ai.anthropic.anthropic_error', + }, + }); + } +} + +/** + * Include the system prompt in the messages list, if available + */ +function messagesFromParams(params) { + const { system, messages, input } = params; + + const systemMessages = typeof system === 'string' ? [{ role: 'system', content: params.system }] : []; + + const inputParamMessages = Array.isArray(input) ? input : input != null ? [input] : undefined; + + const messagesParamMessages = Array.isArray(messages) ? messages : messages != null ? [messages] : []; + + const userMessages = inputParamMessages ?? messagesParamMessages; + + return [...systemMessages, ...userMessages]; +} + +exports.handleResponseError = handleResponseError; +exports.messagesFromParams = messagesFromParams; +exports.setMessagesAttribute = setMessagesAttribute; +exports.shouldInstrument = shouldInstrument; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/utils.js.map new file mode 100644 index 0000000..947d05e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/anthropic-ai/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/anthropic-ai/utils.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport { ANTHROPIC_AI_INSTRUMENTED_METHODS } from './constants';\nimport type { AnthropicAiInstrumentedMethod, AnthropicAiResponse } from './types';\n\n/**\n * Check if a method path should be instrumented\n */\nexport function shouldInstrument(methodPath: string): methodPath is AnthropicAiInstrumentedMethod {\n return ANTHROPIC_AI_INSTRUMENTED_METHODS.includes(methodPath as AnthropicAiInstrumentedMethod);\n}\n\n/**\n * Set the messages and messages original length attributes.\n * Extracts system instructions before truncation.\n */\nexport function setMessagesAttribute(span: Span, messages: unknown): void {\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\n/**\n * Capture error information from the response\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nexport function handleResponseError(span: Span, response: AnthropicAiResponse): void {\n if (response.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: response.error.type || 'internal_error' });\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 */\nexport function messagesFromParams(params: Record): unknown[] {\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"],"names":["ANTHROPIC_AI_INSTRUMENTED_METHODS","extractSystemInstructions","GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ATTRIBUTE","getTruncatedJsonString","GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE","SPAN_STATUS_ERROR","captureException"],"mappings":";;;;;;;;AAYA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,UAAU,EAAuD;AAClG,EAAE,OAAOA,2CAAiC,CAAC,QAAQ,CAAC,YAA4C;AAChG;;AAEA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,IAAI,EAAQ,QAAQ,EAAiB;AAC1E,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAA,IAAK,QAAQ,CAAC,MAAA,KAAW,CAAC,EAAE;AACxD,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,EAAE,kBAAkB,EAAE,gBAAA,KAAqBC,+BAAyB,CAAC,QAAQ,CAAC;;AAEtF,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI,IAAI,CAAC,aAAa,CAAC;AACvB,MAAM,CAACC,oDAAoC,GAAG,kBAAkB;AAChE,KAAK,CAAC;AACN,EAAE;;AAEF,EAAE,MAAM,cAAA,GAAiB,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAA,GAAI,gBAAgB,CAAC,MAAA,GAAS,CAAC;AACtF,EAAE,IAAI,CAAC,aAAa,CAAC;AACrB,IAAI,CAACC,+CAA+B,GAAGC,4BAAsB,CAAC,gBAAgB,CAAC;AAC/E,IAAI,CAACC,+DAA+C,GAAG,cAAc;AACrE,GAAG,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,IAAI,EAAQ,QAAQ,EAA6B;AACrF,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;AACtB,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAEC,4BAAiB,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,gBAAA,EAAkB,CAAC;;AAEjG,IAAIC,0BAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrC,MAAM,SAAS,EAAE;AACjB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,IAAI,EAAE,mCAAmC;AACjD,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;;AAEA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,MAAM,EAAsC;AAC/E,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAA,EAAM,GAAI,MAAM;;AAE5C,EAAE,MAAM,iBAAiB,OAAO,WAAW,QAAA,GAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAA,GAAI,EAAE;;AAEvG,EAAE,MAAM,qBAAqB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA,GAAI,QAAQ,KAAA,IAAS,IAAA,GAAO,CAAC,KAAK,CAAA,GAAI,SAAS;;AAE/F,EAAE,MAAM,wBAAwB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAA,GAAI,WAAW,QAAA,IAAY,IAAA,GAAO,CAAC,QAAQ,CAAA,GAAI,EAAE;;AAEvG,EAAE,MAAM,YAAA,GAAe,kBAAA,IAAsB,qBAAqB;;AAElE,EAAE,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,YAAY,CAAC;AAC7C;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/dynamicSamplingContext.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/dynamicSamplingContext.js new file mode 100644 index 0000000..0f7e881 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/dynamicSamplingContext.js @@ -0,0 +1,153 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const constants = require('../constants.js'); +const currentScopes = require('../currentScopes.js'); +const semanticAttributes = require('../semanticAttributes.js'); +const baggage = require('../utils/baggage.js'); +const dsn = require('../utils/dsn.js'); +const hasSpansEnabled = require('../utils/hasSpansEnabled.js'); +const object = require('../utils/object.js'); +const spanUtils = require('../utils/spanUtils.js'); +const utils = require('./utils.js'); + +/** + * If you change this value, also update the terser plugin config to + * avoid minification of the object property! + */ +const FROZEN_DSC_FIELD = '_frozenDsc'; + +/** + * Freeze the given DSC on the given span. + */ +function freezeDscOnSpan(span, dsc) { + const spanWithMaybeDsc = span ; + object.addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc); +} + +/** + * Creates a dynamic sampling context from a client. + * + * Dispatches the `createDsc` lifecycle hook as a side effect. + */ +function getDynamicSamplingContextFromClient(trace_id, client) { + const options = client.getOptions(); + + const { publicKey: public_key } = client.getDsn() || {}; + + // Instead of conditionally adding non-undefined values, we add them and then remove them if needed + // otherwise, the order of baggage entries changes, which "breaks" a bunch of tests etc. + const dsc = { + environment: options.environment || constants.DEFAULT_ENVIRONMENT, + release: options.release, + public_key, + trace_id, + org_id: dsn.extractOrgIdFromClient(client), + }; + + client.emit('createDsc', dsc); + + return dsc; +} + +/** + * Get the dynamic sampling context for the currently active scopes. + */ +function getDynamicSamplingContextFromScope(client, scope) { + const propagationContext = scope.getPropagationContext(); + return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client); +} + +/** + * Creates a dynamic sampling context from a span (and client and scope) + * + * @param span the span from which a few values like the root span name and sample rate are extracted. + * + * @returns a dynamic sampling context + */ +function getDynamicSamplingContextFromSpan(span) { + const client = currentScopes.getClient(); + if (!client) { + return {}; + } + + const rootSpan = spanUtils.getRootSpan(span); + const rootSpanJson = spanUtils.spanToJSON(rootSpan); + const rootSpanAttributes = rootSpanJson.data; + const traceState = rootSpan.spanContext().traceState; + + // 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. + // This is so that the downstream traces/services can use parentSampleRate in their `tracesSampler` to make consistent sampling decisions across the entire trace. + const rootSpanSampleRate = + traceState?.get('sentry.sample_rate') ?? + rootSpanAttributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ?? + rootSpanAttributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE]; + + function applyLocalSampleRateToDsc(dsc) { + if (typeof rootSpanSampleRate === 'number' || typeof rootSpanSampleRate === 'string') { + dsc.sample_rate = `${rootSpanSampleRate}`; + } + return dsc; + } + + // For core implementation, we freeze the DSC onto the span as a non-enumerable property + const frozenDsc = (rootSpan )[FROZEN_DSC_FIELD]; + if (frozenDsc) { + return applyLocalSampleRateToDsc(frozenDsc); + } + + // For OpenTelemetry, we freeze the DSC on the trace state + const traceStateDsc = traceState?.get('sentry.dsc'); + + // If the span has a DSC, we want it to take precedence + const dscOnTraceState = traceStateDsc && baggage.baggageHeaderToDynamicSamplingContext(traceStateDsc); + + if (dscOnTraceState) { + return applyLocalSampleRateToDsc(dscOnTraceState); + } + + // Else, we generate it from the span + const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client); + + // We don't want to have a transaction name in the DSC if the source is "url" because URLs might contain PII + const source = rootSpanAttributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]; + + // after JSON conversion, txn.name becomes jsonSpan.description + const name = rootSpanJson.description; + if (source !== 'url' && name) { + dsc.transaction = name; + } + + // How can we even land here with hasSpansEnabled() returning false? + // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests + // So we end up with an active span that is not sampled (neither positively nor negatively) + if (hasSpansEnabled.hasSpansEnabled()) { + dsc.sampled = String(spanUtils.spanIsSampled(rootSpan)); + dsc.sample_rand = + // In OTEL we store the sample rand on the trace state because we cannot access scopes for NonRecordingSpans + // The Sentry OTEL SpanSampler takes care of writing the sample rand on the root span + traceState?.get('sentry.sample_rand') ?? + // On all other platforms we can actually get the scopes from a root span (we use this as a fallback) + utils.getCapturedScopesOnSpan(rootSpan).scope?.getPropagationContext().sampleRand.toString(); + } + + applyLocalSampleRateToDsc(dsc); + + client.emit('createDsc', dsc, rootSpan); + + return dsc; +} + +/** + * Convert a Span to a baggage header. + */ +function spanToBaggageHeader(span) { + const dsc = getDynamicSamplingContextFromSpan(span); + return baggage.dynamicSamplingContextToSentryBaggageHeader(dsc); +} + +exports.freezeDscOnSpan = freezeDscOnSpan; +exports.getDynamicSamplingContextFromClient = getDynamicSamplingContextFromClient; +exports.getDynamicSamplingContextFromScope = getDynamicSamplingContextFromScope; +exports.getDynamicSamplingContextFromSpan = getDynamicSamplingContextFromSpan; +exports.spanToBaggageHeader = spanToBaggageHeader; +//# sourceMappingURL=dynamicSamplingContext.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/dynamicSamplingContext.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/dynamicSamplingContext.js.map new file mode 100644 index 0000000..fbd3b46 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/dynamicSamplingContext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dynamicSamplingContext.js","sources":["../../../src/tracing/dynamicSamplingContext.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient } from '../currentScopes';\nimport type { Scope } from '../scope';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { Span } from '../types-hoist/span';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage';\nimport { extractOrgIdFromClient } from '../utils/dsn';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\nimport { getCapturedScopesOnSpan } from './utils';\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\ntype SpanWithMaybeDsc = Span & {\n [FROZEN_DSC_FIELD]?: Partial | undefined;\n};\n\n/**\n * Freeze the given DSC on the given span.\n */\nexport function freezeDscOnSpan(span: Span, dsc: Partial): void {\n const spanWithMaybeDsc = span as SpanWithMaybeDsc;\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 */\nexport function getDynamicSamplingContextFromClient(trace_id: string, client: Client): DynamicSamplingContext {\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: DynamicSamplingContext = {\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 */\nexport function getDynamicSamplingContextFromScope(client: Client, scope: Scope): Partial {\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 */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly> {\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: Partial): Partial {\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 as SpanWithMaybeDsc)[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 */\nexport function spanToBaggageHeader(span: Span): string | undefined {\n const dsc = getDynamicSamplingContextFromSpan(span);\n return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n"],"names":["addNonEnumerableProperty","DEFAULT_ENVIRONMENT","extractOrgIdFromClient","getClient","getRootSpan","spanToJSON","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE","baggageHeaderToDynamicSamplingContext","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","hasSpansEnabled","spanIsSampled","getCapturedScopesOnSpan","dynamicSamplingContextToSentryBaggageHeader"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/errors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/errors.js new file mode 100644 index 0000000..1ea0423 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/errors.js @@ -0,0 +1,43 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const globalError = require('../instrument/globalError.js'); +const globalUnhandledRejection = require('../instrument/globalUnhandledRejection.js'); +const debugLogger = require('../utils/debug-logger.js'); +const spanUtils = require('../utils/spanUtils.js'); +const spanstatus = require('./spanstatus.js'); + +let errorsInstrumented = false; + +/** + * Ensure that global errors automatically set the active span status. + */ +function registerSpanErrorInstrumentation() { + if (errorsInstrumented) { + return; + } + + /** + * If an error or unhandled promise occurs, we mark the active root span as failed + */ + function errorCallback() { + const activeSpan = spanUtils.getActiveSpan(); + const rootSpan = activeSpan && spanUtils.getRootSpan(activeSpan); + if (rootSpan) { + const message = 'internal_error'; + debugBuild.DEBUG_BUILD && debugLogger.debug.log(`[Tracing] Root span: ${message} -> Global error occurred`); + rootSpan.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message }); + } + } + + // The function name will be lost when bundling but we need to be able to identify this listener later to maintain the + // node.js default exit behaviour + errorCallback.tag = 'sentry_tracingErrorCallback'; + + errorsInstrumented = true; + globalError.addGlobalErrorInstrumentationHandler(errorCallback); + globalUnhandledRejection.addGlobalUnhandledRejectionInstrumentationHandler(errorCallback); +} + +exports.registerSpanErrorInstrumentation = registerSpanErrorInstrumentation; +//# sourceMappingURL=errors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/errors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/errors.js.map new file mode 100644 index 0000000..1c6dab4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/errors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"errors.js","sources":["../../../src/tracing/errors.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { addGlobalErrorInstrumentationHandler } from '../instrument/globalError';\nimport { addGlobalUnhandledRejectionInstrumentationHandler } from '../instrument/globalUnhandledRejection';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\n\nlet errorsInstrumented = false;\n\n/** Only exposed for testing */\nexport function _resetErrorsInstrumented(): void {\n errorsInstrumented = false;\n}\n\n/**\n * Ensure that global errors automatically set the active span status.\n */\nexport function registerSpanErrorInstrumentation(): void {\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(): void {\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"],"names":["getActiveSpan","getRootSpan","DEBUG_BUILD","debug","SPAN_STATUS_ERROR","addGlobalErrorInstrumentationHandler","addGlobalUnhandledRejectionInstrumentationHandler"],"mappings":";;;;;;;;;AAOA,IAAI,kBAAA,GAAqB,KAAK;;AAO9B;AACA;AACA;AACO,SAAS,gCAAgC,GAAS;AACzD,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,EAAE,SAAS,aAAa,GAAS;AACjC,IAAI,MAAM,UAAA,GAAaA,uBAAa,EAAE;AACtC,IAAI,MAAM,WAAW,UAAA,IAAcC,qBAAW,CAAC,UAAU,CAAC;AAC1D,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,OAAA,GAAU,gBAAgB;AACtC,MAAMC,sBAAA,IAAeC,iBAAK,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAC1F,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAEC,4BAAiB,EAAE,OAAA,EAAS,CAAC;AAC9D,IAAI;AACJ,EAAE;;AAEF;AACA;AACA,EAAE,aAAa,CAAC,GAAA,GAAM,6BAA6B;;AAEnD,EAAE,kBAAA,GAAqB,IAAI;AAC3B,EAAEC,gDAAoC,CAAC,aAAa,CAAC;AACrD,EAAEC,0EAAiD,CAAC,aAAa,CAAC;AAClE;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/constants.js new file mode 100644 index 0000000..a8b9e81 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/constants.js @@ -0,0 +1,27 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const GOOGLE_GENAI_INTEGRATION_NAME = 'Google_GenAI'; + +// https://ai.google.dev/api/rest/v1/models/generateContent +// https://ai.google.dev/api/rest/v1/chats/sendMessage +// https://googleapis.github.io/js-genai/release_docs/classes/models.Models.html#generatecontentstream +// https://googleapis.github.io/js-genai/release_docs/classes/chats.Chat.html#sendmessagestream +const GOOGLE_GENAI_INSTRUMENTED_METHODS = [ + 'models.generateContent', + 'models.generateContentStream', + 'chats.create', + 'sendMessage', + 'sendMessageStream', +] ; + +// Constants for internal use +const GOOGLE_GENAI_SYSTEM_NAME = 'google_genai'; +const CHATS_CREATE_METHOD = 'chats.create'; +const CHAT_PATH = 'chat'; + +exports.CHATS_CREATE_METHOD = CHATS_CREATE_METHOD; +exports.CHAT_PATH = CHAT_PATH; +exports.GOOGLE_GENAI_INSTRUMENTED_METHODS = GOOGLE_GENAI_INSTRUMENTED_METHODS; +exports.GOOGLE_GENAI_INTEGRATION_NAME = GOOGLE_GENAI_INTEGRATION_NAME; +exports.GOOGLE_GENAI_SYSTEM_NAME = GOOGLE_GENAI_SYSTEM_NAME; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/constants.js.map new file mode 100644 index 0000000..eac4a11 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/google-genai/constants.ts"],"sourcesContent":["export 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\nexport const GOOGLE_GENAI_INSTRUMENTED_METHODS = [\n 'models.generateContent',\n 'models.generateContentStream',\n 'chats.create',\n 'sendMessage',\n 'sendMessageStream',\n] as const;\n\n// Constants for internal use\nexport const GOOGLE_GENAI_SYSTEM_NAME = 'google_genai';\nexport const CHATS_CREATE_METHOD = 'chats.create';\nexport const CHAT_PATH = 'chat';\n"],"names":[],"mappings":";;AAAO,MAAM,6BAAA,GAAgC;;AAE7C;AACA;AACA;AACA;AACO,MAAM,oCAAoC;AACjD,EAAE,wBAAwB;AAC1B,EAAE,8BAA8B;AAChC,EAAE,cAAc;AAChB,EAAE,aAAa;AACf,EAAE,mBAAmB;AACrB,CAAA;;AAEA;AACO,MAAM,wBAAA,GAA2B;AACjC,MAAM,mBAAA,GAAsB;AAC5B,MAAM,SAAA,GAAY;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/index.js new file mode 100644 index 0000000..39efe25 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/index.js @@ -0,0 +1,381 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../../currentScopes.js'); +const exports$1 = require('../../exports.js'); +const semanticAttributes = require('../../semanticAttributes.js'); +const spanstatus = require('../spanstatus.js'); +const trace = require('../trace.js'); +const handleCallbackErrors = require('../../utils/handleCallbackErrors.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const messageTruncation = require('../ai/messageTruncation.js'); +const utils$1 = require('../ai/utils.js'); +const constants = require('./constants.js'); +const streaming = require('./streaming.js'); +const utils = require('./utils.js'); + +/** + * Extract model from parameters or chat context object + * For chat instances, the model is available on the chat object as 'model' (older versions) or 'modelVersion' (newer versions) + */ +function extractModel(params, context) { + if ('model' in params && typeof params.model === 'string') { + return params.model; + } + + // Try to get model from chat context object (chat instance has model property) + if (context && typeof context === 'object') { + const contextObj = context ; + + // Check for 'model' property (older versions, and streaming) + if ('model' in contextObj && typeof contextObj.model === 'string') { + return contextObj.model; + } + + // Check for 'modelVersion' property (newer versions) + if ('modelVersion' in contextObj && typeof contextObj.modelVersion === 'string') { + return contextObj.modelVersion; + } + } + + return 'unknown'; +} + +/** + * Extract generation config parameters + */ +function extractConfigAttributes(config) { + const attributes = {}; + + if ('temperature' in config && typeof config.temperature === 'number') { + attributes[genAiAttributes.GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = config.temperature; + } + if ('topP' in config && typeof config.topP === 'number') { + attributes[genAiAttributes.GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = config.topP; + } + if ('topK' in config && typeof config.topK === 'number') { + attributes[genAiAttributes.GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = config.topK; + } + if ('maxOutputTokens' in config && typeof config.maxOutputTokens === 'number') { + attributes[genAiAttributes.GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = config.maxOutputTokens; + } + if ('frequencyPenalty' in config && typeof config.frequencyPenalty === 'number') { + attributes[genAiAttributes.GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = config.frequencyPenalty; + } + if ('presencePenalty' in config && typeof config.presencePenalty === 'number') { + attributes[genAiAttributes.GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = config.presencePenalty; + } + + return attributes; +} + +/** + * Extract request attributes from method arguments + * Builds the base attributes for span creation including system info, model, and config + */ +function extractRequestAttributes( + methodPath, + params, + context, +) { + const attributes = { + [genAiAttributes.GEN_AI_SYSTEM_ATTRIBUTE]: constants.GOOGLE_GENAI_SYSTEM_NAME, + [genAiAttributes.GEN_AI_OPERATION_NAME_ATTRIBUTE]: utils$1.getFinalOperationName(methodPath), + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.google_genai', + }; + + if (params) { + attributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel(params, context); + + // Extract generation config parameters + if ('config' in params && typeof params.config === 'object' && params.config) { + const config = params.config ; + Object.assign(attributes, extractConfigAttributes(config)); + + // Extract available tools from config + if ('tools' in config && Array.isArray(config.tools)) { + const functionDeclarations = config.tools.flatMap( + (tool) => tool.functionDeclarations, + ); + attributes[genAiAttributes.GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(functionDeclarations); + } + } + } else { + attributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel({}, context); + } + + return attributes; +} + +/** + * Add private request attributes to spans. + * This is only recorded if recordInputs is true. + * Handles different parameter formats for different Google GenAI methods. + */ +function addPrivateRequestAttributes(span, params) { + const messages = []; + + // config.systemInstruction: ContentUnion + if ( + 'config' in params && + params.config && + typeof params.config === 'object' && + 'systemInstruction' in params.config && + params.config.systemInstruction + ) { + messages.push(...utils.contentUnionToMessages(params.config.systemInstruction , 'system')); + } + + // For chats.create: history contains the conversation history + if ('history' in params) { + messages.push(...utils.contentUnionToMessages(params.history , 'user')); + } + + // For models.generateContent: ContentListUnion + if ('contents' in params) { + messages.push(...utils.contentUnionToMessages(params.contents , 'user')); + } + + // For chat.sendMessage: message can be PartListUnion + if ('message' in params) { + messages.push(...utils.contentUnionToMessages(params.message , 'user')); + } + + if (Array.isArray(messages) && messages.length) { + const { systemInstructions, filteredMessages } = utils$1.extractSystemInstructions(messages); + + if (systemInstructions) { + span.setAttribute(genAiAttributes.GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0; + span.setAttributes({ + [genAiAttributes.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength, + [genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(messageTruncation.truncateGenAiMessages(filteredMessages )), + }); + } +} + +/** + * Add response attributes from the Google GenAI response + * @see https://github.com/googleapis/js-genai/blob/v1.19.0/src/types.ts#L2313 + */ +function addResponseAttributes(span, response, recordOutputs) { + if (!response || typeof response !== 'object') return; + + if (response.modelVersion) { + span.setAttribute(genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE, response.modelVersion); + } + + // Add usage metadata if present + if (response.usageMetadata && typeof response.usageMetadata === 'object') { + const usage = response.usageMetadata; + if (typeof usage.promptTokenCount === 'number') { + span.setAttributes({ + [genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: usage.promptTokenCount, + }); + } + if (typeof usage.candidatesTokenCount === 'number') { + span.setAttributes({ + [genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: usage.candidatesTokenCount, + }); + } + if (typeof usage.totalTokenCount === 'number') { + span.setAttributes({ + [genAiAttributes.GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: usage.totalTokenCount, + }); + } + } + + // Add response text if recordOutputs is enabled + if (recordOutputs && Array.isArray(response.candidates) && response.candidates.length > 0) { + const responseTexts = response.candidates + .map((candidate) => { + if (candidate.content?.parts && Array.isArray(candidate.content.parts)) { + return candidate.content.parts + .map((part) => (typeof part.text === 'string' ? part.text : '')) + .filter((text) => text.length > 0) + .join(''); + } + return ''; + }) + .filter((text) => text.length > 0); + + if (responseTexts.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: responseTexts.join(''), + }); + } + } + + // Add tool calls if recordOutputs is enabled + if (recordOutputs && response.functionCalls) { + const functionCalls = response.functionCalls; + if (Array.isArray(functionCalls) && functionCalls.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls), + }); + } + } +} + +/** + * Instrument any async or synchronous genai method with Sentry spans + * Handles operations like models.generateContent and chat.sendMessage and chats.create + * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation + */ +function instrumentMethod( + originalMethod, + methodPath, + context, + options, +) { + const isSyncCreate = methodPath === constants.CHATS_CREATE_METHOD; + + return new Proxy(originalMethod, { + apply(target, _, args) { + const params = args[0] ; + const requestAttributes = extractRequestAttributes(methodPath, params, context); + const model = requestAttributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown'; + const operationName = utils$1.getFinalOperationName(methodPath); + + // Check if this is a streaming method + if (utils.isStreamingMethod(methodPath)) { + // Use startSpanManual for streaming methods to control span lifecycle + return trace.startSpanManual( + { + name: `${operationName} ${model} stream-response`, + op: utils$1.getSpanOperation(methodPath), + attributes: requestAttributes, + }, + async (span) => { + try { + if (options.recordInputs && params) { + addPrivateRequestAttributes(span, params); + } + const stream = await target.apply(context, args); + return streaming.instrumentStream(stream, span, Boolean(options.recordOutputs)) ; + } catch (error) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'internal_error' }); + exports$1.captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.google_genai', + data: { function: methodPath }, + }, + }); + span.end(); + throw error; + } + }, + ); + } + // Single span for both sync and async operations + return trace.startSpan( + { + name: isSyncCreate ? `${operationName} ${model} create` : `${operationName} ${model}`, + op: utils$1.getSpanOperation(methodPath), + attributes: requestAttributes, + }, + (span) => { + if (options.recordInputs && params) { + addPrivateRequestAttributes(span, params); + } + + return handleCallbackErrors.handleCallbackErrors( + () => target.apply(context, args), + error => { + exports$1.captureException(error, { + mechanism: { handled: false, type: 'auto.ai.google_genai', data: { function: methodPath } }, + }); + }, + () => {}, + result => { + // Only add response attributes for content-producing methods, not for chats.create + if (!isSyncCreate) { + addResponseAttributes(span, result, options.recordOutputs); + } + }, + ); + }, + ); + }, + }) ; +} + +/** + * Create a deep proxy for Google GenAI client instrumentation + * Recursively instruments methods and handles special cases like chats.create + */ +function createDeepProxy(target, currentPath = '', options) { + return new Proxy(target, { + get: (t, prop, receiver) => { + const value = Reflect.get(t, prop, receiver); + const methodPath = utils$1.buildMethodPath(currentPath, String(prop)); + + if (typeof value === 'function' && utils.shouldInstrument(methodPath)) { + // Special case: chats.create is synchronous but needs both instrumentation AND result proxying + if (methodPath === constants.CHATS_CREATE_METHOD) { + const instrumentedMethod = instrumentMethod(value , methodPath, t, options); + return function instrumentedAndProxiedCreate(...args) { + const result = instrumentedMethod(...args); + // If the result is an object (like a chat instance), proxy it too + if (result && typeof result === 'object') { + return createDeepProxy(result, constants.CHAT_PATH, options); + } + return result; + }; + } + + return instrumentMethod(value , methodPath, t, options); + } + + if (typeof value === 'function') { + // Bind non-instrumented functions to preserve the original `this` context + return value.bind(t); + } + + if (value && typeof value === 'object') { + return createDeepProxy(value, methodPath, options); + } + + return value; + }, + }); +} + +/** + * Instrument a Google GenAI client with Sentry tracing + * Can be used across Node.js, Cloudflare Workers, and Vercel Edge + * + * @template T - The type of the client that extends client object + * @param client - The Google GenAI client to instrument + * @param options - Optional configuration for recording inputs and outputs + * @returns The instrumented client with the same type as the input + * + * @example + * ```typescript + * import { GoogleGenAI } from '@google/genai'; + * import { instrumentGoogleGenAIClient } from '@sentry/core'; + * + * const genAI = new GoogleGenAI({ apiKey: process.env.GOOGLE_GENAI_API_KEY }); + * const instrumentedClient = instrumentGoogleGenAIClient(genAI); + * + * // Now both chats.create and sendMessage will be instrumented + * const chat = instrumentedClient.chats.create({ model: 'gemini-1.5-pro' }); + * const response = await chat.sendMessage({ message: 'Hello' }); + * ``` + */ +function instrumentGoogleGenAIClient(client, options) { + const sendDefaultPii = Boolean(currentScopes.getClient()?.getOptions().sendDefaultPii); + + const _options = { + recordInputs: sendDefaultPii, + recordOutputs: sendDefaultPii, + ...options, + }; + return createDeepProxy(client, '', _options); +} + +exports.extractModel = extractModel; +exports.instrumentGoogleGenAIClient = instrumentGoogleGenAIClient; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/index.js.map new file mode 100644 index 0000000..0dd2ab4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/google-genai/index.ts"],"sourcesContent":["import { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport { handleCallbackErrors } from '../../utils/handleCallbackErrors';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { buildMethodPath, extractSystemInstructions, getFinalOperationName, getSpanOperation } from '../ai/utils';\nimport { CHAT_PATH, CHATS_CREATE_METHOD, GOOGLE_GENAI_SYSTEM_NAME } from './constants';\nimport { instrumentStream } from './streaming';\nimport type {\n Candidate,\n ContentPart,\n GoogleGenAIIstrumentedMethod,\n GoogleGenAIOptions,\n GoogleGenAIResponse,\n} from './types';\nimport type { ContentListUnion, ContentUnion, Message, PartListUnion } from './utils';\nimport { contentUnionToMessages, isStreamingMethod, shouldInstrument } from './utils';\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 */\nexport function extractModel(params: Record, context?: unknown): string {\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 as Record;\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: Record): Record {\n const attributes: Record = {};\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: string,\n params?: Record,\n context?: unknown,\n): Record {\n const attributes: Record = {\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 as Record;\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: { functionDeclarations: unknown[] }) => 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: Span, params: Record): void {\n const messages: Message[] = [];\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 as ContentUnion, 'system'));\n }\n\n // For chats.create: history contains the conversation history\n if ('history' in params) {\n messages.push(...contentUnionToMessages(params.history as PartListUnion, 'user'));\n }\n\n // For models.generateContent: ContentListUnion\n if ('contents' in params) {\n messages.push(...contentUnionToMessages(params.contents as ContentListUnion, 'user'));\n }\n\n // For chat.sendMessage: message can be PartListUnion\n if ('message' in params) {\n messages.push(...contentUnionToMessages(params.message as PartListUnion, '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 as unknown[])),\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: Span, response: GoogleGenAIResponse, recordOutputs?: boolean): void {\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: Candidate) => {\n if (candidate.content?.parts && Array.isArray(candidate.content.parts)) {\n return candidate.content.parts\n .map((part: ContentPart) => (typeof part.text === 'string' ? part.text : ''))\n .filter((text: string) => text.length > 0)\n .join('');\n }\n return '';\n })\n .filter((text: string) => 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: (...args: T) => R | Promise,\n methodPath: GoogleGenAIIstrumentedMethod,\n context: unknown,\n options: GoogleGenAIOptions,\n): (...args: T) => R | Promise {\n const isSyncCreate = methodPath === CHATS_CREATE_METHOD;\n\n return new Proxy(originalMethod, {\n apply(target, _, args: T): R | Promise {\n const params = args[0] as Record | undefined;\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} stream-response`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes,\n },\n async (span: 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)) as R;\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: 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 }) as (...args: T) => R | Promise;\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: T, currentPath = '', options: GoogleGenAIOptions): T {\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 as (...args: unknown[]) => unknown, methodPath, t, options);\n return function instrumentedAndProxiedCreate(...args: unknown[]): unknown {\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 as (...args: unknown[]) => Promise, 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 */\nexport function instrumentGoogleGenAIClient(client: T, options?: GoogleGenAIOptions): T {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n\n const _options = {\n recordInputs: sendDefaultPii,\n recordOutputs: sendDefaultPii,\n ...options,\n };\n return createDeepProxy(client, '', _options);\n}\n"],"names":["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","GEN_AI_SYSTEM_ATTRIBUTE","GOOGLE_GENAI_SYSTEM_NAME","GEN_AI_OPERATION_NAME_ATTRIBUTE","getFinalOperationName","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","GEN_AI_REQUEST_MODEL_ATTRIBUTE","GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE","contentUnionToMessages","extractSystemInstructions","GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ATTRIBUTE","truncateGenAiMessages","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","CHATS_CREATE_METHOD","isStreamingMethod","startSpanManual","getSpanOperation","instrumentStream","SPAN_STATUS_ERROR","captureException","startSpan","handleCallbackErrors","buildMethodPath","shouldInstrument","CHAT_PATH","getClient"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/streaming.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/streaming.js new file mode 100644 index 0000000..9efba5f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/streaming.js @@ -0,0 +1,138 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const exports$1 = require('../../exports.js'); +const spanstatus = require('../spanstatus.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); + +/** + * State object used to accumulate information from a stream of Google GenAI events. + */ + +/** + * Checks if a response chunk contains an error + * @param chunk - The response chunk to check + * @param span - The span to update if error is found + * @returns Whether an error occurred + */ +function isErrorChunk(chunk, span) { + const feedback = chunk?.promptFeedback; + if (feedback?.blockReason) { + const message = feedback.blockReasonMessage ?? feedback.blockReason; + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: `Content blocked: ${message}` }); + exports$1.captureException(`Content blocked: ${message}`, { + mechanism: { handled: false, type: 'auto.ai.google_genai' }, + }); + return true; + } + return false; +} + +/** + * Processes response metadata from a chunk + * @param chunk - The response chunk to process + * @param state - The state of the streaming process + */ +function handleResponseMetadata(chunk, state) { + if (typeof chunk.responseId === 'string') state.responseId = chunk.responseId; + if (typeof chunk.modelVersion === 'string') state.responseModel = chunk.modelVersion; + + const usage = chunk.usageMetadata; + if (usage) { + if (typeof usage.promptTokenCount === 'number') state.promptTokens = usage.promptTokenCount; + if (typeof usage.candidatesTokenCount === 'number') state.completionTokens = usage.candidatesTokenCount; + if (typeof usage.totalTokenCount === 'number') state.totalTokens = usage.totalTokenCount; + } +} + +/** + * Processes candidate content from a response chunk + * @param chunk - The response chunk to process + * @param state - The state of the streaming process + * @param recordOutputs - Whether to record outputs + */ +function handleCandidateContent(chunk, state, recordOutputs) { + if (Array.isArray(chunk.functionCalls)) { + state.toolCalls.push(...chunk.functionCalls); + } + + for (const candidate of chunk.candidates ?? []) { + if (candidate?.finishReason && !state.finishReasons.includes(candidate.finishReason)) { + state.finishReasons.push(candidate.finishReason); + } + + for (const part of candidate?.content?.parts ?? []) { + if (recordOutputs && part.text) state.responseTexts.push(part.text); + if (part.functionCall) { + state.toolCalls.push({ + type: 'function', + id: part.functionCall.id, + name: part.functionCall.name, + arguments: part.functionCall.args, + }); + } + } + } +} + +/** + * Processes a single chunk from the Google GenAI stream + * @param chunk - The chunk to process + * @param state - The state of the streaming process + * @param recordOutputs - Whether to record outputs + * @param span - The span to update + */ +function processChunk(chunk, state, recordOutputs, span) { + if (!chunk || isErrorChunk(chunk, span)) return; + handleResponseMetadata(chunk, state); + handleCandidateContent(chunk, state, recordOutputs); +} + +/** + * Instruments an async iterable stream of Google GenAI response chunks, updates the span with + * streaming attributes and (optionally) the aggregated output text, and yields + * each chunk from the input stream unchanged. + */ +async function* instrumentStream( + stream, + span, + recordOutputs, +) { + const state = { + responseTexts: [], + finishReasons: [], + toolCalls: [], + }; + + try { + for await (const chunk of stream) { + processChunk(chunk, state, recordOutputs, span); + yield chunk; + } + } finally { + const attrs = { + [genAiAttributes.GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true, + }; + + if (state.responseId) attrs[genAiAttributes.GEN_AI_RESPONSE_ID_ATTRIBUTE] = state.responseId; + if (state.responseModel) attrs[genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE] = state.responseModel; + if (state.promptTokens !== undefined) attrs[genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = state.promptTokens; + if (state.completionTokens !== undefined) attrs[genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = state.completionTokens; + if (state.totalTokens !== undefined) attrs[genAiAttributes.GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = state.totalTokens; + + if (state.finishReasons.length) { + attrs[genAiAttributes.GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE] = JSON.stringify(state.finishReasons); + } + if (recordOutputs && state.responseTexts.length) { + attrs[genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE] = state.responseTexts.join(''); + } + if (recordOutputs && state.toolCalls.length) { + attrs[genAiAttributes.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE] = JSON.stringify(state.toolCalls); + } + + span.setAttributes(attrs); + span.end(); + } +} + +exports.instrumentStream = instrumentStream; +//# sourceMappingURL=streaming.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/streaming.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/streaming.js.map new file mode 100644 index 0000000..0af5ab4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/streaming.js.map @@ -0,0 +1 @@ +{"version":3,"file":"streaming.js","sources":["../../../../src/tracing/google-genai/streaming.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { GoogleGenAIResponse } from './types';\n\n/**\n * State object used to accumulate information from a stream of Google GenAI events.\n */\ninterface StreamingState {\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId?: string;\n /** The model name. */\n responseModel?: string;\n /** Number of prompt/input tokens used. */\n promptTokens?: number;\n /** Number of completion/output tokens used. */\n completionTokens?: number;\n /** Number of total tokens used. */\n totalTokens?: number;\n /** Accumulated tool calls (finalized) */\n toolCalls: Array>;\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: GoogleGenAIResponse, span: Span): boolean {\n const feedback = chunk?.promptFeedback;\n if (feedback?.blockReason) {\n const message = feedback.blockReasonMessage ?? feedback.blockReason;\n span.setStatus({ code: SPAN_STATUS_ERROR, message: `Content blocked: ${message}` });\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: GoogleGenAIResponse, state: StreamingState): void {\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: GoogleGenAIResponse, state: StreamingState, recordOutputs: boolean): void {\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: GoogleGenAIResponse, state: StreamingState, recordOutputs: boolean, span: Span): void {\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 */\nexport async function* instrumentStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\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: Record = {\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"],"names":["SPAN_STATUS_ERROR","captureException","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"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/utils.js new file mode 100644 index 0000000..729d5c7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/utils.js @@ -0,0 +1,51 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const constants = require('./constants.js'); + +/** + * Check if a method path should be instrumented + */ +function shouldInstrument(methodPath) { + // Check for exact matches first (like 'models.generateContent') + if (constants.GOOGLE_GENAI_INSTRUMENTED_METHODS.includes(methodPath )) { + return true; + } + + // Check for method name matches (like 'sendMessage' from chat instances) + const methodName = methodPath.split('.').pop(); + return constants.GOOGLE_GENAI_INSTRUMENTED_METHODS.includes(methodName ); +} + +/** + * Check if a method is a streaming method + */ +function isStreamingMethod(methodPath) { + return methodPath.includes('Stream'); +} + +// Copied from https://googleapis.github.io/js-genai/release_docs/index.html + +/** + * + */ +function contentUnionToMessages(content, role = 'user') { + if (typeof content === 'string') { + return [{ role, content }]; + } + if (Array.isArray(content)) { + return content.flatMap(content => contentUnionToMessages(content, role)); + } + if (typeof content !== 'object' || !content) return []; + if ('role' in content && typeof content.role === 'string') { + return [content ]; + } + if ('parts' in content) { + return [{ ...content, role } ]; + } + return [{ role, content }]; +} + +exports.contentUnionToMessages = contentUnionToMessages; +exports.isStreamingMethod = isStreamingMethod; +exports.shouldInstrument = shouldInstrument; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/utils.js.map new file mode 100644 index 0000000..d01c571 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/google-genai/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/google-genai/utils.ts"],"sourcesContent":["import { GOOGLE_GENAI_INSTRUMENTED_METHODS } from './constants';\nimport type { GoogleGenAIIstrumentedMethod } from './types';\n\n/**\n * Check if a method path should be instrumented\n */\nexport function shouldInstrument(methodPath: string): methodPath is GoogleGenAIIstrumentedMethod {\n // Check for exact matches first (like 'models.generateContent')\n if (GOOGLE_GENAI_INSTRUMENTED_METHODS.includes(methodPath as GoogleGenAIIstrumentedMethod)) {\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 as GoogleGenAIIstrumentedMethod);\n}\n\n/**\n * Check if a method is a streaming method\n */\nexport function isStreamingMethod(methodPath: string): boolean {\n return methodPath.includes('Stream');\n}\n\n// Copied from https://googleapis.github.io/js-genai/release_docs/index.html\nexport type ContentListUnion = Content | Content[] | PartListUnion;\nexport type ContentUnion = Content | PartUnion[] | PartUnion;\nexport type Content = {\n parts?: Part[];\n role?: string;\n};\nexport type PartUnion = Part | string;\nexport type Part = Record & {\n inlineData?: {\n data?: string;\n displayName?: string;\n mimeType?: string;\n };\n text?: string;\n};\nexport type PartListUnion = PartUnion[] | PartUnion;\n\n// our consistent span message shape\nexport type Message = Record & {\n role: string;\n content?: PartListUnion;\n parts?: PartListUnion;\n};\n\n/**\n *\n */\nexport function contentUnionToMessages(content: ContentListUnion, role = 'user'): Message[] {\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 as Message];\n }\n if ('parts' in content) {\n return [{ ...content, role } as Message];\n }\n return [{ role, content }];\n}\n"],"names":["GOOGLE_GENAI_INSTRUMENTED_METHODS"],"mappings":";;;;AAGA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,UAAU,EAAsD;AACjG;AACA,EAAE,IAAIA,2CAAiC,CAAC,QAAQ,CAAC,UAAA,EAA2C,EAAE;AAC9F,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,EAAE,MAAM,UAAA,GAAa,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAChD,EAAE,OAAOA,2CAAiC,CAAC,QAAQ,CAAC,YAA2C;AAC/F;;AAEA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,UAAU,EAAmB;AAC/D,EAAE,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtC;;AAEA;;AAyBA;AACA;AACA;AACO,SAAS,sBAAsB,CAAC,OAAO,EAAoB,IAAA,GAAO,MAAM,EAAa;AAC5F,EAAE,IAAI,OAAO,OAAA,KAAY,QAAQ,EAAE;AACnC,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,OAAA,EAAS,CAAC;AAC9B,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC9B,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,OAAA,IAAW,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5E,EAAE;AACF,EAAE,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,CAAC,OAAO,EAAE,OAAO,EAAE;AACxD,EAAE,IAAI,MAAA,IAAU,OAAA,IAAW,OAAO,OAAO,CAAC,IAAA,KAAS,QAAQ,EAAE;AAC7D,IAAI,OAAO,CAAC,OAAA,EAAmB;AAC/B,EAAE;AACF,EAAE,IAAI,OAAA,IAAW,OAAO,EAAE;AAC1B,IAAI,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,IAAA,IAAkB;AAC5C,EAAE;AACF,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAA,EAAS,CAAC;AAC5B;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/idleSpan.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/idleSpan.js new file mode 100644 index 0000000..0881feb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/idleSpan.js @@ -0,0 +1,353 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const debugBuild = require('../debug-build.js'); +const semanticAttributes = require('../semanticAttributes.js'); +const debugLogger = require('../utils/debug-logger.js'); +const hasSpansEnabled = require('../utils/hasSpansEnabled.js'); +const shouldIgnoreSpan = require('../utils/should-ignore-span.js'); +const spanOnScope = require('../utils/spanOnScope.js'); +const spanUtils = require('../utils/spanUtils.js'); +const time = require('../utils/time.js'); +const dynamicSamplingContext = require('./dynamicSamplingContext.js'); +const sentryNonRecordingSpan = require('./sentryNonRecordingSpan.js'); +const sentrySpan = require('./sentrySpan.js'); +const spanstatus = require('./spanstatus.js'); +const trace = require('./trace.js'); + +const TRACING_DEFAULTS = { + idleTimeout: 1000, + finalTimeout: 30000, + childSpanTimeout: 15000, +}; + +const FINISH_REASON_HEARTBEAT_FAILED = 'heartbeatFailed'; +const FINISH_REASON_IDLE_TIMEOUT = 'idleTimeout'; +const FINISH_REASON_FINAL_TIMEOUT = 'finalTimeout'; +const FINISH_REASON_EXTERNAL_FINISH = 'externalFinish'; + +/** + * An idle span is a span that automatically finishes. It does this by tracking child spans as activities. + * An idle span is always the active span. + */ +function startIdleSpan(startSpanOptions, options = {}) { + // Activities store a list of active spans + const activities = new Map(); + + // We should not use heartbeat if we finished a span + let _finished = false; + + // Timer that tracks idleTimeout + let _idleTimeoutID; + + // The reason why the span was finished + let _finishReason = FINISH_REASON_EXTERNAL_FINISH; + + let _autoFinishAllowed = !options.disableAutoFinish; + + const _cleanupHooks = []; + + const { + idleTimeout = TRACING_DEFAULTS.idleTimeout, + finalTimeout = TRACING_DEFAULTS.finalTimeout, + childSpanTimeout = TRACING_DEFAULTS.childSpanTimeout, + beforeSpanEnd, + trimIdleSpanEndTimestamp = true, + } = options; + + const client = currentScopes.getClient(); + + if (!client || !hasSpansEnabled.hasSpansEnabled()) { + const span = new sentryNonRecordingSpan.SentryNonRecordingSpan(); + + const dsc = { + sample_rate: '0', + sampled: 'false', + ...dynamicSamplingContext.getDynamicSamplingContextFromSpan(span), + } ; + dynamicSamplingContext.freezeDscOnSpan(span, dsc); + + return span; + } + + const scope = currentScopes.getCurrentScope(); + const previousActiveSpan = spanUtils.getActiveSpan(); + const span = _startIdleSpan(startSpanOptions); + + // We patch span.end to ensure we can run some things before the span is ended + // eslint-disable-next-line @typescript-eslint/unbound-method + span.end = new Proxy(span.end, { + apply(target, thisArg, args) { + if (beforeSpanEnd) { + beforeSpanEnd(span); + } + + // If the span is non-recording, nothing more to do here... + // This is the case if tracing is enabled but this specific span was not sampled + if (thisArg instanceof sentryNonRecordingSpan.SentryNonRecordingSpan) { + return; + } + + // Just ensuring that this keeps working, even if we ever have more arguments here + const [definedEndTimestamp, ...rest] = args; + const timestamp = definedEndTimestamp || time.timestampInSeconds(); + const spanEndTimestamp = spanUtils.spanTimeInputToSeconds(timestamp); + + // Ensure we end with the last span timestamp, if possible + const spans = spanUtils.getSpanDescendants(span).filter(child => child !== span); + + const spanJson = spanUtils.spanToJSON(span); + + // If we have no spans, we just end, nothing else to do here + // Likewise, if users explicitly ended the span, we simply end the span without timestamp adjustment + if (!spans.length || !trimIdleSpanEndTimestamp) { + onIdleSpanEnded(spanEndTimestamp); + return Reflect.apply(target, thisArg, [spanEndTimestamp, ...rest]); + } + + const ignoreSpans = client.getOptions().ignoreSpans; + + const latestSpanEndTimestamp = spans?.reduce((acc, current) => { + const currentSpanJson = spanUtils.spanToJSON(current); + if (!currentSpanJson.timestamp) { + return acc; + } + // Ignored spans will get dropped later (in the client) but since we already adjust + // the idle span end timestamp here, we can already take to-be-ignored spans out of + // the calculation here. + if (ignoreSpans && shouldIgnoreSpan.shouldIgnoreSpan(currentSpanJson, ignoreSpans)) { + return acc; + } + return acc ? Math.max(acc, currentSpanJson.timestamp) : currentSpanJson.timestamp; + }, undefined); + + // In reality this should always exist here, but type-wise it may be undefined... + const spanStartTimestamp = spanJson.start_timestamp; + + // The final endTimestamp should: + // * Never be before the span start timestamp + // * Be the latestSpanEndTimestamp, if there is one, and it is smaller than the passed span end timestamp + // * Otherwise be the passed end timestamp + // Final timestamp can never be after finalTimeout + const endTimestamp = Math.min( + spanStartTimestamp ? spanStartTimestamp + finalTimeout / 1000 : Infinity, + Math.max(spanStartTimestamp || -Infinity, Math.min(spanEndTimestamp, latestSpanEndTimestamp || Infinity)), + ); + + onIdleSpanEnded(endTimestamp); + return Reflect.apply(target, thisArg, [endTimestamp, ...rest]); + }, + }); + + /** + * Cancels the existing idle timeout, if there is one. + */ + function _cancelIdleTimeout() { + if (_idleTimeoutID) { + clearTimeout(_idleTimeoutID); + _idleTimeoutID = undefined; + } + } + + /** + * Restarts idle timeout, if there is no running idle timeout it will start one. + */ + function _restartIdleTimeout(endTimestamp) { + _cancelIdleTimeout(); + _idleTimeoutID = setTimeout(() => { + if (!_finished && activities.size === 0 && _autoFinishAllowed) { + _finishReason = FINISH_REASON_IDLE_TIMEOUT; + span.end(endTimestamp); + } + }, idleTimeout); + } + + /** + * Restarts child span timeout, if there is none running it will start one. + */ + function _restartChildSpanTimeout(endTimestamp) { + _idleTimeoutID = setTimeout(() => { + if (!_finished && _autoFinishAllowed) { + _finishReason = FINISH_REASON_HEARTBEAT_FAILED; + span.end(endTimestamp); + } + }, childSpanTimeout); + } + + /** + * Start tracking a specific activity. + * @param spanId The span id that represents the activity + */ + function _pushActivity(spanId) { + _cancelIdleTimeout(); + activities.set(spanId, true); + + const endTimestamp = time.timestampInSeconds(); + // We need to add the timeout here to have the real endtimestamp of the idle span + // Remember timestampInSeconds is in seconds, timeout is in ms + _restartChildSpanTimeout(endTimestamp + childSpanTimeout / 1000); + } + + /** + * Remove an activity from usage + * @param spanId The span id that represents the activity + */ + function _popActivity(spanId) { + if (activities.has(spanId)) { + activities.delete(spanId); + } + + if (activities.size === 0) { + const endTimestamp = time.timestampInSeconds(); + // We need to add the timeout here to have the real endtimestamp of the idle span + // Remember timestampInSeconds is in seconds, timeout is in ms + _restartIdleTimeout(endTimestamp + idleTimeout / 1000); + } + } + + function onIdleSpanEnded(endTimestamp) { + _finished = true; + activities.clear(); + + _cleanupHooks.forEach(cleanup => cleanup()); + + spanOnScope._setSpanForScope(scope, previousActiveSpan); + + const spanJSON = spanUtils.spanToJSON(span); + + const { start_timestamp: startTimestamp } = spanJSON; + // This should never happen, but to make TS happy... + if (!startTimestamp) { + return; + } + + const attributes = spanJSON.data; + if (!attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON]) { + span.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, _finishReason); + } + + // Set span status to 'ok' if it hasn't been explicitly set to an error status + const currentStatus = spanJSON.status; + if (!currentStatus || currentStatus === 'unknown') { + span.setStatus({ code: spanstatus.SPAN_STATUS_OK }); + } + + debugLogger.debug.log(`[Tracing] Idle span "${spanJSON.op}" finished`); + + const childSpans = spanUtils.getSpanDescendants(span).filter(child => child !== span); + + let discardedSpans = 0; + childSpans.forEach(childSpan => { + // We cancel all pending spans with status "cancelled" to indicate the idle span was finished early + if (childSpan.isRecording()) { + childSpan.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'cancelled' }); + childSpan.end(endTimestamp); + debugBuild.DEBUG_BUILD && + debugLogger.debug.log('[Tracing] Cancelling span since span ended early', JSON.stringify(childSpan, undefined, 2)); + } + + const childSpanJSON = spanUtils.spanToJSON(childSpan); + const { timestamp: childEndTimestamp = 0, start_timestamp: childStartTimestamp = 0 } = childSpanJSON; + + const spanStartedBeforeIdleSpanEnd = childStartTimestamp <= endTimestamp; + + // Add a delta with idle timeout so that we prevent false positives + const timeoutWithMarginOfError = (finalTimeout + idleTimeout) / 1000; + const spanEndedBeforeFinalTimeout = childEndTimestamp - childStartTimestamp <= timeoutWithMarginOfError; + + if (debugBuild.DEBUG_BUILD) { + const stringifiedSpan = JSON.stringify(childSpan, undefined, 2); + if (!spanStartedBeforeIdleSpanEnd) { + debugLogger.debug.log('[Tracing] Discarding span since it happened after idle span was finished', stringifiedSpan); + } else if (!spanEndedBeforeFinalTimeout) { + debugLogger.debug.log('[Tracing] Discarding span since it finished after idle span final timeout', stringifiedSpan); + } + } + + if (!spanEndedBeforeFinalTimeout || !spanStartedBeforeIdleSpanEnd) { + spanUtils.removeChildSpanFromSpan(span, childSpan); + discardedSpans++; + } + }); + + if (discardedSpans > 0) { + span.setAttribute('sentry.idle_span_discarded_spans', discardedSpans); + } + } + + _cleanupHooks.push( + client.on('spanStart', startedSpan => { + // If we already finished the idle span, + // or if this is the idle span itself being started, + // or if the started span has already been closed, + // we don't care about it for activity + if ( + _finished || + startedSpan === span || + !!spanUtils.spanToJSON(startedSpan).timestamp || + (startedSpan instanceof sentrySpan.SentrySpan && startedSpan.isStandaloneSpan()) + ) { + return; + } + + const allSpans = spanUtils.getSpanDescendants(span); + + // If the span that was just started is a child of the idle span, we should track it + if (allSpans.includes(startedSpan)) { + _pushActivity(startedSpan.spanContext().spanId); + } + }), + ); + + _cleanupHooks.push( + client.on('spanEnd', endedSpan => { + if (_finished) { + return; + } + + _popActivity(endedSpan.spanContext().spanId); + }), + ); + + _cleanupHooks.push( + client.on('idleSpanEnableAutoFinish', spanToAllowAutoFinish => { + if (spanToAllowAutoFinish === span) { + _autoFinishAllowed = true; + _restartIdleTimeout(); + + if (activities.size) { + _restartChildSpanTimeout(); + } + } + }), + ); + + // We only start the initial idle timeout if we are not delaying the auto finish + if (!options.disableAutoFinish) { + _restartIdleTimeout(); + } + + setTimeout(() => { + if (!_finished) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'deadline_exceeded' }); + _finishReason = FINISH_REASON_FINAL_TIMEOUT; + span.end(); + } + }, finalTimeout); + + return span; +} + +function _startIdleSpan(options) { + const span = trace.startInactiveSpan(options); + + spanOnScope._setSpanForScope(currentScopes.getCurrentScope(), span); + + debugBuild.DEBUG_BUILD && debugLogger.debug.log('[Tracing] Started span is an idle span'); + + return span; +} + +exports.TRACING_DEFAULTS = TRACING_DEFAULTS; +exports.startIdleSpan = startIdleSpan; +//# sourceMappingURL=idleSpan.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/idleSpan.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/idleSpan.js.map new file mode 100644 index 0000000..ef6658a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/idleSpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"idleSpan.js","sources":["../../../src/tracing/idleSpan.ts"],"sourcesContent":["import { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON } from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { Span } from '../types-hoist/span';\nimport type { StartSpanOptions } from '../types-hoist/startSpanOptions';\nimport { debug } from '../utils/debug-logger';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { shouldIgnoreSpan } from '../utils/should-ignore-span';\nimport { _setSpanForScope } from '../utils/spanOnScope';\nimport {\n getActiveSpan,\n getSpanDescendants,\n removeChildSpanFromSpan,\n spanTimeInputToSeconds,\n spanToJSON,\n} from '../utils/spanUtils';\nimport { timestampInSeconds } from '../utils/time';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR, SPAN_STATUS_OK } from './spanstatus';\nimport { startInactiveSpan } from './trace';\n\nexport const TRACING_DEFAULTS = {\n idleTimeout: 1_000,\n finalTimeout: 30_000,\n childSpanTimeout: 15_000,\n};\n\nconst FINISH_REASON_HEARTBEAT_FAILED = 'heartbeatFailed';\nconst FINISH_REASON_IDLE_TIMEOUT = 'idleTimeout';\nconst FINISH_REASON_FINAL_TIMEOUT = 'finalTimeout';\nconst FINISH_REASON_EXTERNAL_FINISH = 'externalFinish';\nconst FINISH_REASON_CANCELLED = 'cancelled';\n\n// unused\nconst FINISH_REASON_DOCUMENT_HIDDEN = 'documentHidden';\n\n// unused in this file, but used in BrowserTracing\nconst FINISH_REASON_INTERRUPTED = 'interactionInterrupted';\n\ntype IdleSpanFinishReason =\n | typeof FINISH_REASON_CANCELLED\n | typeof FINISH_REASON_DOCUMENT_HIDDEN\n | typeof FINISH_REASON_EXTERNAL_FINISH\n | typeof FINISH_REASON_FINAL_TIMEOUT\n | typeof FINISH_REASON_HEARTBEAT_FAILED\n | typeof FINISH_REASON_IDLE_TIMEOUT\n | typeof FINISH_REASON_INTERRUPTED;\n\ninterface IdleSpanOptions {\n /**\n * The time that has to pass without any span being created.\n * If this time is exceeded, the idle span will finish.\n */\n idleTimeout: number;\n /**\n * The max. time an idle span may run.\n * If this time is exceeded, the idle span will finish no matter what.\n */\n finalTimeout: number;\n /**\n * The max. time a child span may run.\n * If the time since the last span was started exceeds this time, the idle span will finish.\n */\n childSpanTimeout?: number;\n /**\n * When set to `true`, will disable the idle timeout and child timeout\n * until the `idleSpanEnableAutoFinish` hook is emitted for the idle span.\n * The final timeout mechanism will not be affected by this option,\n * meaning the idle span will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n disableAutoFinish?: boolean;\n\n /** Allows to configure a hook that is called when the idle span is ended, before it is processed. */\n beforeSpanEnd?: (span: Span) => void;\n\n /**\n * If set to `true`, the idle span will be trimmed to the latest span end timestamp of its children.\n *\n * @default `true`.\n */\n trimIdleSpanEndTimestamp?: boolean;\n}\n\n/**\n * An idle span is a span that automatically finishes. It does this by tracking child spans as activities.\n * An idle span is always the active span.\n */\nexport function startIdleSpan(startSpanOptions: StartSpanOptions, options: Partial = {}): Span {\n // Activities store a list of active spans\n const activities = new Map();\n\n // We should not use heartbeat if we finished a span\n let _finished = false;\n\n // Timer that tracks idleTimeout\n let _idleTimeoutID: ReturnType | undefined;\n\n // Timer that tracks maxSpanTime for child spans\n let _childSpanTimeoutID: ReturnType | undefined;\n\n // The reason why the span was finished\n let _finishReason: IdleSpanFinishReason = FINISH_REASON_EXTERNAL_FINISH;\n\n let _autoFinishAllowed: boolean = !options.disableAutoFinish;\n\n const _cleanupHooks: (() => void)[] = [];\n\n const {\n idleTimeout = TRACING_DEFAULTS.idleTimeout,\n finalTimeout = TRACING_DEFAULTS.finalTimeout,\n childSpanTimeout = TRACING_DEFAULTS.childSpanTimeout,\n beforeSpanEnd,\n trimIdleSpanEndTimestamp = true,\n } = options;\n\n const client = getClient();\n\n if (!client || !hasSpansEnabled()) {\n const span = new SentryNonRecordingSpan();\n\n const dsc = {\n sample_rate: '0',\n sampled: 'false',\n ...getDynamicSamplingContextFromSpan(span),\n } satisfies Partial;\n freezeDscOnSpan(span, dsc);\n\n return span;\n }\n\n const scope = getCurrentScope();\n const previousActiveSpan = getActiveSpan();\n const span = _startIdleSpan(startSpanOptions);\n\n // We patch span.end to ensure we can run some things before the span is ended\n // eslint-disable-next-line @typescript-eslint/unbound-method\n span.end = new Proxy(span.end, {\n apply(target, thisArg, args: Parameters) {\n if (beforeSpanEnd) {\n beforeSpanEnd(span);\n }\n\n // If the span is non-recording, nothing more to do here...\n // This is the case if tracing is enabled but this specific span was not sampled\n if (thisArg instanceof SentryNonRecordingSpan) {\n return;\n }\n\n // Just ensuring that this keeps working, even if we ever have more arguments here\n const [definedEndTimestamp, ...rest] = args;\n const timestamp = definedEndTimestamp || timestampInSeconds();\n const spanEndTimestamp = spanTimeInputToSeconds(timestamp);\n\n // Ensure we end with the last span timestamp, if possible\n const spans = getSpanDescendants(span).filter(child => child !== span);\n\n const spanJson = spanToJSON(span);\n\n // If we have no spans, we just end, nothing else to do here\n // Likewise, if users explicitly ended the span, we simply end the span without timestamp adjustment\n if (!spans.length || !trimIdleSpanEndTimestamp) {\n onIdleSpanEnded(spanEndTimestamp);\n return Reflect.apply(target, thisArg, [spanEndTimestamp, ...rest]);\n }\n\n const ignoreSpans = client.getOptions().ignoreSpans;\n\n const latestSpanEndTimestamp = spans?.reduce((acc: number | undefined, current) => {\n const currentSpanJson = spanToJSON(current);\n if (!currentSpanJson.timestamp) {\n return acc;\n }\n // Ignored spans will get dropped later (in the client) but since we already adjust\n // the idle span end timestamp here, we can already take to-be-ignored spans out of\n // the calculation here.\n if (ignoreSpans && shouldIgnoreSpan(currentSpanJson, ignoreSpans)) {\n return acc;\n }\n return acc ? Math.max(acc, currentSpanJson.timestamp) : currentSpanJson.timestamp;\n }, undefined);\n\n // In reality this should always exist here, but type-wise it may be undefined...\n const spanStartTimestamp = spanJson.start_timestamp;\n\n // The final endTimestamp should:\n // * Never be before the span start timestamp\n // * Be the latestSpanEndTimestamp, if there is one, and it is smaller than the passed span end timestamp\n // * Otherwise be the passed end timestamp\n // Final timestamp can never be after finalTimeout\n const endTimestamp = Math.min(\n spanStartTimestamp ? spanStartTimestamp + finalTimeout / 1000 : Infinity,\n Math.max(spanStartTimestamp || -Infinity, Math.min(spanEndTimestamp, latestSpanEndTimestamp || Infinity)),\n );\n\n onIdleSpanEnded(endTimestamp);\n return Reflect.apply(target, thisArg, [endTimestamp, ...rest]);\n },\n });\n\n /**\n * Cancels the existing idle timeout, if there is one.\n */\n function _cancelIdleTimeout(): void {\n if (_idleTimeoutID) {\n clearTimeout(_idleTimeoutID);\n _idleTimeoutID = undefined;\n }\n }\n\n /**\n * Cancels the existing child span timeout, if there is one.\n */\n function _cancelChildSpanTimeout(): void {\n if (_childSpanTimeoutID) {\n clearTimeout(_childSpanTimeoutID);\n _childSpanTimeoutID = undefined;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n function _restartIdleTimeout(endTimestamp?: number): void {\n _cancelIdleTimeout();\n _idleTimeoutID = setTimeout(() => {\n if (!_finished && activities.size === 0 && _autoFinishAllowed) {\n _finishReason = FINISH_REASON_IDLE_TIMEOUT;\n span.end(endTimestamp);\n }\n }, idleTimeout);\n }\n\n /**\n * Restarts child span timeout, if there is none running it will start one.\n */\n function _restartChildSpanTimeout(endTimestamp?: number): void {\n _cancelChildSpanTimeout();\n _idleTimeoutID = setTimeout(() => {\n if (!_finished && _autoFinishAllowed) {\n _finishReason = FINISH_REASON_HEARTBEAT_FAILED;\n span.end(endTimestamp);\n }\n }, childSpanTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n function _pushActivity(spanId: string): void {\n _cancelIdleTimeout();\n activities.set(spanId, true);\n\n const endTimestamp = timestampInSeconds();\n // We need to add the timeout here to have the real endtimestamp of the idle span\n // Remember timestampInSeconds is in seconds, timeout is in ms\n _restartChildSpanTimeout(endTimestamp + childSpanTimeout / 1000);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n function _popActivity(spanId: string): void {\n if (activities.has(spanId)) {\n activities.delete(spanId);\n }\n\n if (activities.size === 0) {\n const endTimestamp = timestampInSeconds();\n // We need to add the timeout here to have the real endtimestamp of the idle span\n // Remember timestampInSeconds is in seconds, timeout is in ms\n _restartIdleTimeout(endTimestamp + idleTimeout / 1000);\n _cancelChildSpanTimeout();\n }\n }\n\n function onIdleSpanEnded(endTimestamp: number): void {\n _finished = true;\n activities.clear();\n\n _cleanupHooks.forEach(cleanup => cleanup());\n\n _setSpanForScope(scope, previousActiveSpan);\n\n const spanJSON = spanToJSON(span);\n\n const { start_timestamp: startTimestamp } = spanJSON;\n // This should never happen, but to make TS happy...\n if (!startTimestamp) {\n return;\n }\n\n const attributes = spanJSON.data;\n if (!attributes[SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON]) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, _finishReason);\n }\n\n // Set span status to 'ok' if it hasn't been explicitly set to an error status\n const currentStatus = spanJSON.status;\n if (!currentStatus || currentStatus === 'unknown') {\n span.setStatus({ code: SPAN_STATUS_OK });\n }\n\n debug.log(`[Tracing] Idle span \"${spanJSON.op}\" finished`);\n\n const childSpans = getSpanDescendants(span).filter(child => child !== span);\n\n let discardedSpans = 0;\n childSpans.forEach(childSpan => {\n // We cancel all pending spans with status \"cancelled\" to indicate the idle span was finished early\n if (childSpan.isRecording()) {\n childSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'cancelled' });\n childSpan.end(endTimestamp);\n DEBUG_BUILD &&\n debug.log('[Tracing] Cancelling span since span ended early', JSON.stringify(childSpan, undefined, 2));\n }\n\n const childSpanJSON = spanToJSON(childSpan);\n const { timestamp: childEndTimestamp = 0, start_timestamp: childStartTimestamp = 0 } = childSpanJSON;\n\n const spanStartedBeforeIdleSpanEnd = childStartTimestamp <= endTimestamp;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (finalTimeout + idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = childEndTimestamp - childStartTimestamp <= timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(childSpan, undefined, 2);\n if (!spanStartedBeforeIdleSpanEnd) {\n debug.log('[Tracing] Discarding span since it happened after idle span was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n debug.log('[Tracing] Discarding span since it finished after idle span final timeout', stringifiedSpan);\n }\n }\n\n if (!spanEndedBeforeFinalTimeout || !spanStartedBeforeIdleSpanEnd) {\n removeChildSpanFromSpan(span, childSpan);\n discardedSpans++;\n }\n });\n\n if (discardedSpans > 0) {\n span.setAttribute('sentry.idle_span_discarded_spans', discardedSpans);\n }\n }\n\n _cleanupHooks.push(\n client.on('spanStart', startedSpan => {\n // If we already finished the idle span,\n // or if this is the idle span itself being started,\n // or if the started span has already been closed,\n // we don't care about it for activity\n if (\n _finished ||\n startedSpan === span ||\n !!spanToJSON(startedSpan).timestamp ||\n (startedSpan instanceof SentrySpan && startedSpan.isStandaloneSpan())\n ) {\n return;\n }\n\n const allSpans = getSpanDescendants(span);\n\n // If the span that was just started is a child of the idle span, we should track it\n if (allSpans.includes(startedSpan)) {\n _pushActivity(startedSpan.spanContext().spanId);\n }\n }),\n );\n\n _cleanupHooks.push(\n client.on('spanEnd', endedSpan => {\n if (_finished) {\n return;\n }\n\n _popActivity(endedSpan.spanContext().spanId);\n }),\n );\n\n _cleanupHooks.push(\n client.on('idleSpanEnableAutoFinish', spanToAllowAutoFinish => {\n if (spanToAllowAutoFinish === span) {\n _autoFinishAllowed = true;\n _restartIdleTimeout();\n\n if (activities.size) {\n _restartChildSpanTimeout();\n }\n }\n }),\n );\n\n // We only start the initial idle timeout if we are not delaying the auto finish\n if (!options.disableAutoFinish) {\n _restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!_finished) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' });\n _finishReason = FINISH_REASON_FINAL_TIMEOUT;\n span.end();\n }\n }, finalTimeout);\n\n return span;\n}\n\nfunction _startIdleSpan(options: StartSpanOptions): Span {\n const span = startInactiveSpan(options);\n\n _setSpanForScope(getCurrentScope(), span);\n\n DEBUG_BUILD && debug.log('[Tracing] Started span is an idle span');\n\n return span;\n}\n"],"names":["getClient","hasSpansEnabled","SentryNonRecordingSpan","getDynamicSamplingContextFromSpan","freezeDscOnSpan","getCurrentScope","getActiveSpan","timestampInSeconds","spanTimeInputToSeconds","getSpanDescendants","spanToJSON","shouldIgnoreSpan","_setSpanForScope","SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON","SPAN_STATUS_OK","debug","SPAN_STATUS_ERROR","DEBUG_BUILD","removeChildSpanFromSpan","SentrySpan","startInactiveSpan"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/constants.js new file mode 100644 index 0000000..6f85688 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/constants.js @@ -0,0 +1,18 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const LANGCHAIN_INTEGRATION_NAME = 'LangChain'; +const LANGCHAIN_ORIGIN = 'auto.ai.langchain'; + +const ROLE_MAP = { + human: 'user', + ai: 'assistant', + assistant: 'assistant', + system: 'system', + function: 'function', + tool: 'tool', +}; + +exports.LANGCHAIN_INTEGRATION_NAME = LANGCHAIN_INTEGRATION_NAME; +exports.LANGCHAIN_ORIGIN = LANGCHAIN_ORIGIN; +exports.ROLE_MAP = ROLE_MAP; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/constants.js.map new file mode 100644 index 0000000..f5f196c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/langchain/constants.ts"],"sourcesContent":["export const LANGCHAIN_INTEGRATION_NAME = 'LangChain';\nexport const LANGCHAIN_ORIGIN = 'auto.ai.langchain';\n\nexport const ROLE_MAP: Record = {\n human: 'user',\n ai: 'assistant',\n assistant: 'assistant',\n system: 'system',\n function: 'function',\n tool: 'tool',\n};\n"],"names":[],"mappings":";;AAAO,MAAM,0BAAA,GAA6B;AACnC,MAAM,gBAAA,GAAmB;;AAEzB,MAAM,QAAQ,GAA2B;AAChD,EAAE,KAAK,EAAE,MAAM;AACf,EAAE,EAAE,EAAE,WAAW;AACjB,EAAE,SAAS,EAAE,WAAW;AACxB,EAAE,MAAM,EAAE,QAAQ;AAClB,EAAE,QAAQ,EAAE,UAAU;AACtB,EAAE,IAAI,EAAE,MAAM;AACd;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/index.js new file mode 100644 index 0000000..913b285 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/index.js @@ -0,0 +1,313 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const exports$1 = require('../../exports.js'); +const semanticAttributes = require('../../semanticAttributes.js'); +const spanstatus = require('../spanstatus.js'); +const trace = require('../trace.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const constants = require('./constants.js'); +const utils = require('./utils.js'); + +/** + * Creates a Sentry callback handler for LangChain + * Returns a plain object that LangChain will call via duck-typing + * + * This is a stateful handler that tracks spans across multiple LangChain executions. + */ +function createLangChainCallbackHandler(options = {}) { + const recordInputs = options.recordInputs ?? false; + const recordOutputs = options.recordOutputs ?? false; + + // Internal state - single instance tracks all spans + const spanMap = new Map(); + + /** + * Exit a span and clean up + */ + const exitSpan = (runId) => { + const span = spanMap.get(runId); + if (span?.isRecording()) { + span.end(); + spanMap.delete(runId); + } + }; + + /** + * Handler for LLM Start + * This handler will be called by LangChain's callback handler when an LLM event is detected. + */ + const handler = { + // Required LangChain BaseCallbackHandler properties + lc_serializable: false, + lc_namespace: ['langchain_core', 'callbacks', 'sentry'], + lc_secrets: undefined, + lc_attributes: undefined, + lc_aliases: undefined, + lc_serializable_keys: undefined, + lc_id: ['langchain_core', 'callbacks', 'sentry'], + lc_kwargs: {}, + name: 'SentryCallbackHandler', + + // BaseCallbackHandlerInput boolean flags + ignoreLLM: false, + ignoreChain: false, + ignoreAgent: false, + ignoreRetriever: false, + ignoreCustomEvent: false, + raiseError: false, + awaitHandlers: true, + + handleLLMStart( + llm, + prompts, + runId, + _parentRunId, + _extraParams, + tags, + metadata, + _runName, + ) { + const invocationParams = utils.getInvocationParams(tags); + const attributes = utils.extractLLMRequestAttributes( + llm , + prompts, + recordInputs, + invocationParams, + metadata, + ); + const modelName = attributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE]; + const operationName = attributes[genAiAttributes.GEN_AI_OPERATION_NAME_ATTRIBUTE]; + + trace.startSpanManual( + { + name: `${operationName} ${modelName}`, + op: 'gen_ai.chat', + attributes: { + ...attributes, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat', + }, + }, + span => { + spanMap.set(runId, span); + return span; + }, + ); + }, + + // Chat Model Start Handler + handleChatModelStart( + llm, + messages, + runId, + _parentRunId, + _extraParams, + tags, + metadata, + _runName, + ) { + const invocationParams = utils.getInvocationParams(tags); + const attributes = utils.extractChatModelRequestAttributes( + llm , + messages , + recordInputs, + invocationParams, + metadata, + ); + const modelName = attributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE]; + const operationName = attributes[genAiAttributes.GEN_AI_OPERATION_NAME_ATTRIBUTE]; + + trace.startSpanManual( + { + name: `${operationName} ${modelName}`, + op: 'gen_ai.chat', + attributes: { + ...attributes, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat', + }, + }, + span => { + spanMap.set(runId, span); + return span; + }, + ); + }, + + // LLM End Handler - note: handleLLMEnd with capital LLM (used by both LLMs and chat models!) + handleLLMEnd( + output, + runId, + _parentRunId, + _tags, + _extraParams, + ) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + const attributes = utils.extractLlmResponseAttributes(output , recordOutputs); + if (attributes) { + span.setAttributes(attributes); + } + exitSpan(runId); + } + }, + + // LLM Error Handler - note: handleLLMError with capital LLM + handleLLMError(error, runId) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'llm_error' }); + exitSpan(runId); + } + + exports$1.captureException(error, { + mechanism: { + handled: false, + type: `${constants.LANGCHAIN_ORIGIN}.llm_error_handler`, + }, + }); + }, + + // Chain Start Handler + handleChainStart(chain, inputs, runId, _parentRunId) { + const chainName = chain.name || 'unknown_chain'; + const attributes = { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain', + 'langchain.chain.name': chainName, + }; + + // Add inputs if recordInputs is enabled + if (recordInputs) { + attributes['langchain.chain.inputs'] = JSON.stringify(inputs); + } + + trace.startSpanManual( + { + name: `chain ${chainName}`, + op: 'gen_ai.invoke_agent', + attributes: { + ...attributes, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.invoke_agent', + }, + }, + span => { + spanMap.set(runId, span); + return span; + }, + ); + }, + + // Chain End Handler + handleChainEnd(outputs, runId) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + // Add outputs if recordOutputs is enabled + if (recordOutputs) { + span.setAttributes({ + 'langchain.chain.outputs': JSON.stringify(outputs), + }); + } + exitSpan(runId); + } + }, + + // Chain Error Handler + handleChainError(error, runId) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'chain_error' }); + exitSpan(runId); + } + + exports$1.captureException(error, { + mechanism: { + handled: false, + type: `${constants.LANGCHAIN_ORIGIN}.chain_error_handler`, + }, + }); + }, + + // Tool Start Handler + handleToolStart(tool, input, runId, _parentRunId) { + const toolName = tool.name || 'unknown_tool'; + const attributes = { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: constants.LANGCHAIN_ORIGIN, + [genAiAttributes.GEN_AI_TOOL_NAME_ATTRIBUTE]: toolName, + }; + + // Add input if recordInputs is enabled + if (recordInputs) { + attributes[genAiAttributes.GEN_AI_TOOL_INPUT_ATTRIBUTE] = input; + } + + trace.startSpanManual( + { + name: `execute_tool ${toolName}`, + op: 'gen_ai.execute_tool', + attributes: { + ...attributes, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.execute_tool', + }, + }, + span => { + spanMap.set(runId, span); + return span; + }, + ); + }, + + // Tool End Handler + handleToolEnd(output, runId) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + // Add output if recordOutputs is enabled + if (recordOutputs) { + span.setAttributes({ + [genAiAttributes.GEN_AI_TOOL_OUTPUT_ATTRIBUTE]: JSON.stringify(output), + }); + } + exitSpan(runId); + } + }, + + // Tool Error Handler + handleToolError(error, runId) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'tool_error' }); + exitSpan(runId); + } + + exports$1.captureException(error, { + mechanism: { + handled: false, + type: `${constants.LANGCHAIN_ORIGIN}.tool_error_handler`, + }, + }); + }, + + // LangChain BaseCallbackHandler required methods + copy() { + return handler; + }, + + toJSON() { + return { + lc: 1, + type: 'not_implemented', + id: handler.lc_id, + }; + }, + + toJSONNotImplemented() { + return { + lc: 1, + type: 'not_implemented', + id: handler.lc_id, + }; + }, + }; + + return handler; +} + +exports.createLangChainCallbackHandler = createLangChainCallbackHandler; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/index.js.map new file mode 100644 index 0000000..a0b2ea9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/langchain/index.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_TOOL_INPUT_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_TOOL_OUTPUT_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { LANGCHAIN_ORIGIN } from './constants';\nimport type {\n LangChainCallbackHandler,\n LangChainLLMResult,\n LangChainMessage,\n LangChainOptions,\n LangChainSerialized,\n} from './types';\nimport {\n extractChatModelRequestAttributes,\n extractLLMRequestAttributes,\n extractLlmResponseAttributes,\n getInvocationParams,\n} from './utils';\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 */\nexport function createLangChainCallbackHandler(options: LangChainOptions = {}): LangChainCallbackHandler {\n const recordInputs = options.recordInputs ?? false;\n const recordOutputs = options.recordOutputs ?? false;\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: string): void => {\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: LangChainCallbackHandler = {\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: unknown,\n prompts: string[],\n runId: string,\n _parentRunId?: string,\n _extraParams?: Record,\n tags?: string[],\n metadata?: Record,\n _runName?: string,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractLLMRequestAttributes(\n llm as LangChainSerialized,\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: unknown,\n messages: unknown,\n runId: string,\n _parentRunId?: string,\n _extraParams?: Record,\n tags?: string[],\n metadata?: Record,\n _runName?: string,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractChatModelRequestAttributes(\n llm as LangChainSerialized,\n messages as LangChainMessage[][],\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: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _extraParams?: Record,\n ) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n const attributes = extractLlmResponseAttributes(output as LangChainLLMResult, 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: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'llm_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(chain: { name?: string }, inputs: Record, runId: string, _parentRunId?: string) {\n const chainName = chain.name || 'unknown_chain';\n const attributes: Record = {\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: unknown, runId: string) {\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: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'chain_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: { name?: string }, input: string, runId: string, _parentRunId?: string) {\n const toolName = tool.name || 'unknown_tool';\n const attributes: Record = {\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: unknown, runId: string) {\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: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'tool_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"],"names":["getInvocationParams","extractLLMRequestAttributes","GEN_AI_REQUEST_MODEL_ATTRIBUTE","GEN_AI_OPERATION_NAME_ATTRIBUTE","startSpanManual","SEMANTIC_ATTRIBUTE_SENTRY_OP","extractChatModelRequestAttributes","extractLlmResponseAttributes","SPAN_STATUS_ERROR","captureException","LANGCHAIN_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","GEN_AI_TOOL_NAME_ATTRIBUTE","GEN_AI_TOOL_INPUT_ATTRIBUTE","GEN_AI_TOOL_OUTPUT_ATTRIBUTE"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/utils.js new file mode 100644 index 0000000..8877ec1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/utils.js @@ -0,0 +1,443 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const semanticAttributes = require('../../semanticAttributes.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const messageTruncation = require('../ai/messageTruncation.js'); +const utils = require('../ai/utils.js'); +const constants = require('./constants.js'); + +/** + * Assigns an attribute only when the value is neither `undefined` nor `null`. + * + * We keep this tiny helper because call sites are repetitive and easy to miswrite. + * It also preserves falsy-but-valid values like `0` and `""`. + */ +const setIfDefined = (target, key, value) => { + if (value != null) target[key] = value ; +}; + +/** + * Like `setIfDefined`, but converts the value with `Number()` and skips only when the + * result is `NaN`. This ensures numeric 0 makes it through (unlike truthy checks). + */ +const setNumberIfDefined = (target, key, value) => { + const n = Number(value); + if (!Number.isNaN(n)) target[key] = n; +}; + +/** + * Converts a value to a string. Avoids double-quoted JSON strings where a plain + * string is desired, but still handles objects/arrays safely. + */ +function asString(v) { + if (typeof v === 'string') return v; + try { + return JSON.stringify(v); + } catch { + return String(v); + } +} + +/** + * Normalizes a single role token to our canonical set. + * + * @param role Incoming role value (free-form, any casing) + * @returns Canonical role: 'user' | 'assistant' | 'system' | 'function' | 'tool' | + */ +function normalizeMessageRole(role) { + const normalized = role.toLowerCase(); + return constants.ROLE_MAP[normalized] ?? normalized; +} + +/** + * Infers a role from a LangChain message constructor name. + * + * Checks for substrings like "System", "Human", "AI", etc. + */ +function normalizeRoleNameFromCtor(name) { + if (name.includes('System')) return 'system'; + if (name.includes('Human')) return 'user'; + if (name.includes('AI') || name.includes('Assistant')) return 'assistant'; + if (name.includes('Function')) return 'function'; + if (name.includes('Tool')) return 'tool'; + return 'user'; +} + +/** + * Returns invocation params from a LangChain `tags` object. + * + * LangChain often passes runtime parameters (model, temperature, etc.) via the + * `tags.invocation_params` bag. If `tags` is an array (LangChain sometimes uses + * string tags), we return `undefined`. + * + * @param tags LangChain tags (string[] or record) + * @returns The `invocation_params` object, if present + */ +function getInvocationParams(tags) { + if (!tags || Array.isArray(tags)) return undefined; + return tags.invocation_params ; +} + +/** + * Normalizes a heterogeneous set of LangChain messages to `{ role, content }`. + * + * Why so many branches? LangChain messages can arrive in several shapes: + * - Message classes with `_getType()` (most reliable) + * - Classes with meaningful constructor names (e.g. `SystemMessage`) + * - Plain objects with `type`, or `{ role, content }` + * - Serialized format with `{ lc: 1, id: [...], kwargs: { content } }` + * We preserve the prioritization to minimize behavioral drift. + * + * @param messages Mixed LangChain messages + * @returns Array of normalized `{ role, content }` + */ +function normalizeLangChainMessages(messages) { + return messages.map(message => { + // 1) Prefer _getType() when present + const maybeGetType = (message )._getType; + if (typeof maybeGetType === 'function') { + const messageType = maybeGetType.call(message); + return { + role: normalizeMessageRole(messageType), + content: asString(message.content), + }; + } + + // 2) Serialized LangChain format (lc: 1) - check before constructor name + // This is more reliable than constructor.name which can be lost during serialization + if (message.lc === 1 && message.kwargs) { + const id = message.id; + const messageType = Array.isArray(id) && id.length > 0 ? id[id.length - 1] : ''; + const role = typeof messageType === 'string' ? normalizeRoleNameFromCtor(messageType) : 'user'; + + return { + role: normalizeMessageRole(role), + content: asString(message.kwargs?.content), + }; + } + + // 3) Then objects with `type` + if (message.type) { + const role = String(message.type).toLowerCase(); + return { + role: normalizeMessageRole(role), + content: asString(message.content), + }; + } + + // 4) Then objects with `{ role, content }` - check before constructor name + // Plain objects have constructor.name="Object" which would incorrectly default to "user" + if (message.role) { + return { + role: normalizeMessageRole(String(message.role)), + content: asString(message.content), + }; + } + + // 5) Then try constructor name (SystemMessage / HumanMessage / ...) + // Only use this if we haven't matched a more specific case + const ctor = (message ).constructor?.name; + if (ctor && ctor !== 'Object') { + return { + role: normalizeMessageRole(normalizeRoleNameFromCtor(ctor)), + content: asString(message.content), + }; + } + + // 6) Fallback: treat as user text + return { + role: 'user', + content: asString(message.content), + }; + }); +} + +/** + * Extracts request attributes common to both LLM and ChatModel invocations. + * + * Source precedence: + * 1) `invocationParams` (highest) + * 2) `langSmithMetadata` + * + * Numeric values are set even when 0 (e.g. `temperature: 0`), but skipped if `NaN`. + */ +function extractCommonRequestAttributes( + serialized, + invocationParams, + langSmithMetadata, +) { + const attrs = {}; + + // Get kwargs if available (from constructor type) + const kwargs = 'kwargs' in serialized ? serialized.kwargs : undefined; + + const temperature = invocationParams?.temperature ?? langSmithMetadata?.ls_temperature ?? kwargs?.temperature; + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, temperature); + + const maxTokens = invocationParams?.max_tokens ?? langSmithMetadata?.ls_max_tokens ?? kwargs?.max_tokens; + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, maxTokens); + + const topP = invocationParams?.top_p ?? kwargs?.top_p; + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_REQUEST_TOP_P_ATTRIBUTE, topP); + + const frequencyPenalty = invocationParams?.frequency_penalty; + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, frequencyPenalty); + + const presencePenalty = invocationParams?.presence_penalty; + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, presencePenalty); + + // LangChain uses `stream`. We only set the attribute if the key actually exists + // (some callbacks report `false` even on streamed requests, this stems from LangChain's callback handler). + if (invocationParams && 'stream' in invocationParams) { + setIfDefined(attrs, genAiAttributes.GEN_AI_REQUEST_STREAM_ATTRIBUTE, Boolean(invocationParams.stream)); + } + + return attrs; +} + +/** + * Small helper to assemble boilerplate attributes shared by both request extractors. + * Always uses 'chat' as the operation type for all LLM and chat model operations. + */ +function baseRequestAttributes( + system, + modelName, + serialized, + invocationParams, + langSmithMetadata, +) { + return { + [genAiAttributes.GEN_AI_SYSTEM_ATTRIBUTE]: asString(system ?? 'langchain'), + [genAiAttributes.GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'chat', + [genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE]: asString(modelName), + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: constants.LANGCHAIN_ORIGIN, + ...extractCommonRequestAttributes(serialized, invocationParams, langSmithMetadata), + }; +} + +/** + * Extracts attributes for plain LLM invocations (string prompts). + * + * - Operation is tagged as `chat` following OpenTelemetry semantic conventions. + * LangChain LLM operations are treated as chat operations. + * - When `recordInputs` is true, string prompts are wrapped into `{role:"user"}` + * messages to align with the chat schema used elsewhere. + */ +function extractLLMRequestAttributes( + llm, + prompts, + recordInputs, + invocationParams, + langSmithMetadata, +) { + const system = langSmithMetadata?.ls_provider; + const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown'; + + const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata); + + if (recordInputs && Array.isArray(prompts) && prompts.length > 0) { + setIfDefined(attrs, genAiAttributes.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, prompts.length); + const messages = prompts.map(p => ({ role: 'user', content: p })); + setIfDefined(attrs, genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(messages)); + } + + return attrs; +} + +/** + * Extracts attributes for ChatModel invocations (array-of-arrays of messages). + * + * - Operation is tagged as `chat` following OpenTelemetry semantic conventions. + * LangChain chat model operations are chat operations. + * - We flatten LangChain's `LangChainMessage[][]` and normalize shapes into a + * consistent `{ role, content }` array when `recordInputs` is true. + * - Provider system value falls back to `serialized.id?.[2]`. + */ +function extractChatModelRequestAttributes( + llm, + langChainMessages, + recordInputs, + invocationParams, + langSmithMetadata, +) { + const system = langSmithMetadata?.ls_provider ?? llm.id?.[2]; + const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown'; + + const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata); + + if (recordInputs && Array.isArray(langChainMessages) && langChainMessages.length > 0) { + const normalized = normalizeLangChainMessages(langChainMessages.flat()); + + const { systemInstructions, filteredMessages } = utils.extractSystemInstructions(normalized); + + if (systemInstructions) { + setIfDefined(attrs, genAiAttributes.GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0; + setIfDefined(attrs, genAiAttributes.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredLength); + + const truncated = messageTruncation.truncateGenAiMessages(filteredMessages ); + setIfDefined(attrs, genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(truncated)); + } + + return attrs; +} + +/** + * Scans generations for Anthropic-style `tool_use` items and records them. + * + * LangChain represents some provider messages (e.g., Anthropic) with a `message.content` + * array that may include objects `{ type: 'tool_use', ... }`. We collect and attach + * them as a JSON array on `gen_ai.response.tool_calls` for downstream consumers. + */ +function addToolCallsAttributes(generations, attrs) { + const toolCalls = []; + const flatGenerations = generations.flat(); + + for (const gen of flatGenerations) { + const content = gen.message?.content; + if (Array.isArray(content)) { + for (const item of content) { + const t = item ; + if (t.type === 'tool_use') toolCalls.push(t); + } + } + } + + if (toolCalls.length > 0) { + setIfDefined(attrs, genAiAttributes.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, asString(toolCalls)); + } +} + +/** + * Adds token usage attributes, supporting both OpenAI (`tokenUsage`) and Anthropic (`usage`) formats. + * - Preserve zero values (0 tokens) by avoiding truthy checks. + * - Compute a total for Anthropic when not explicitly provided. + * - Include cache token metrics when present. + */ +function addTokenUsageAttributes( + llmOutput, + attrs, +) { + if (!llmOutput) return; + + const tokenUsage = llmOutput.tokenUsage + +; + const anthropicUsage = llmOutput.usage + +; + + if (tokenUsage) { + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, tokenUsage.promptTokens); + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, tokenUsage.completionTokens); + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, tokenUsage.totalTokens); + } else if (anthropicUsage) { + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.input_tokens); + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, anthropicUsage.output_tokens); + + // Compute total when not provided by the provider. + const input = Number(anthropicUsage.input_tokens); + const output = Number(anthropicUsage.output_tokens); + const total = (Number.isNaN(input) ? 0 : input) + (Number.isNaN(output) ? 0 : output); + if (total > 0) setNumberIfDefined(attrs, genAiAttributes.GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, total); + + // Extra Anthropic cache metrics (present only when caching is enabled) + if (anthropicUsage.cache_creation_input_tokens !== undefined) + setNumberIfDefined( + attrs, + genAiAttributes.GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE, + anthropicUsage.cache_creation_input_tokens, + ); + if (anthropicUsage.cache_read_input_tokens !== undefined) + setNumberIfDefined(attrs, genAiAttributes.GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.cache_read_input_tokens); + } +} + +/** + * Extracts response-related attributes based on a `LangChainLLMResult`. + * + * - Records finish reasons when present on generations (e.g., OpenAI) + * - When `recordOutputs` is true, captures textual response content and any + * tool calls. + * - Also propagates model name (`model_name` or `model`), response `id`, and + * `stop_reason` (for providers that use it). + */ +function extractLlmResponseAttributes( + llmResult, + recordOutputs, +) { + if (!llmResult) return; + + const attrs = {}; + + if (Array.isArray(llmResult.generations)) { + const finishReasons = llmResult.generations + .flat() + .map(g => { + // v1 uses generationInfo.finish_reason + if (g.generationInfo?.finish_reason) { + return g.generationInfo.finish_reason; + } + // v0.3+ uses generation_info.finish_reason + if (g.generation_info?.finish_reason) { + return g.generation_info.finish_reason; + } + return null; + }) + .filter((r) => typeof r === 'string'); + + if (finishReasons.length > 0) { + setIfDefined(attrs, genAiAttributes.GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, asString(finishReasons)); + } + + // Tool calls metadata (names, IDs) are not PII, so capture them regardless of recordOutputs + addToolCallsAttributes(llmResult.generations , attrs); + + if (recordOutputs) { + const texts = llmResult.generations + .flat() + .map(gen => gen.text ?? gen.message?.content) + .filter(t => typeof t === 'string'); + + if (texts.length > 0) { + setIfDefined(attrs, genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE, asString(texts)); + } + } + } + + addTokenUsageAttributes(llmResult.llmOutput, attrs); + + const llmOutput = llmResult.llmOutput; + + // Extract from v1 generations structure if available + const firstGeneration = llmResult.generations?.[0]?.[0]; + const v1Message = firstGeneration?.message; + + // Provider model identifier: `model_name` (OpenAI-style) or `model` (others) + // v1 stores this in message.response_metadata.model_name + const modelName = llmOutput?.model_name ?? llmOutput?.model ?? v1Message?.response_metadata?.model_name; + if (modelName) setIfDefined(attrs, genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE, modelName); + + // Response ID: v1 stores this in message.id + const responseId = llmOutput?.id ?? v1Message?.id; + if (responseId) { + setIfDefined(attrs, genAiAttributes.GEN_AI_RESPONSE_ID_ATTRIBUTE, responseId); + } + + // Stop reason: v1 stores this in message.response_metadata.finish_reason + const stopReason = llmOutput?.stop_reason ?? v1Message?.response_metadata?.finish_reason; + if (stopReason) { + setIfDefined(attrs, genAiAttributes.GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, asString(stopReason)); + } + + return attrs; +} + +exports.extractChatModelRequestAttributes = extractChatModelRequestAttributes; +exports.extractLLMRequestAttributes = extractLLMRequestAttributes; +exports.extractLlmResponseAttributes = extractLlmResponseAttributes; +exports.getInvocationParams = getInvocationParams; +exports.normalizeLangChainMessages = normalizeLangChainMessages; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/utils.js.map new file mode 100644 index 0000000..a5a212a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langchain/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/langchain/utils.ts"],"sourcesContent":["import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { extractSystemInstructions } from '../ai/utils';\nimport { LANGCHAIN_ORIGIN, ROLE_MAP } from './constants';\nimport type { LangChainLLMResult, LangChainMessage, LangChainSerialized } from './types';\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: Record, key: string, value: unknown): void => {\n if (value != null) target[key] = value as SpanAttributeValue;\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: Record, key: string, value: unknown): void => {\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: unknown): string {\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 * 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: string): string {\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: string): string {\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 */\nexport function getInvocationParams(tags?: string[] | Record): Record | undefined {\n if (!tags || Array.isArray(tags)) return undefined;\n return tags.invocation_params as Record | undefined;\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 */\nexport function normalizeLangChainMessages(messages: LangChainMessage[]): Array<{ role: string; content: string }> {\n return messages.map(message => {\n // 1) Prefer _getType() when present\n const maybeGetType = (message as { _getType?: () => string })._getType;\n if (typeof maybeGetType === 'function') {\n const messageType = maybeGetType.call(message);\n return {\n role: normalizeMessageRole(messageType),\n content: asString(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: asString(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: asString(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: asString(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 as { constructor?: { name?: string } }).constructor?.name;\n if (ctor && ctor !== 'Object') {\n return {\n role: normalizeMessageRole(normalizeRoleNameFromCtor(ctor)),\n content: asString(message.content),\n };\n }\n\n // 6) Fallback: treat as user text\n return {\n role: 'user',\n content: asString(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: LangChainSerialized,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const attrs: Record = {};\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: unknown,\n modelName: unknown,\n serialized: LangChainSerialized,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\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 */\nexport function extractLLMRequestAttributes(\n llm: LangChainSerialized,\n prompts: string[],\n recordInputs: boolean,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\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 */\nexport function extractChatModelRequestAttributes(\n llm: LangChainSerialized,\n langChainMessages: LangChainMessage[][],\n recordInputs: boolean,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\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 as unknown[]);\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: LangChainMessage[][], attrs: Record): void {\n const toolCalls: unknown[] = [];\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 as { type: string };\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: LangChainLLMResult['llmOutput'],\n attrs: Record,\n): void {\n if (!llmOutput) return;\n\n const tokenUsage = llmOutput.tokenUsage as\n | { promptTokens?: number; completionTokens?: number; totalTokens?: number }\n | undefined;\n const anthropicUsage = llmOutput.usage as\n | {\n input_tokens?: number;\n output_tokens?: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n }\n | undefined;\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 */\nexport function extractLlmResponseAttributes(\n llmResult: LangChainLLMResult,\n recordOutputs: boolean,\n): Record | undefined {\n if (!llmResult) return;\n\n const attrs: Record = {};\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): r is string => 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 as LangChainMessage[][], 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"],"names":["ROLE_MAP","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_ATTRIBUTE","GEN_AI_OPERATION_NAME_ATTRIBUTE","GEN_AI_REQUEST_MODEL_ATTRIBUTE","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","LANGCHAIN_ORIGIN","GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ATTRIBUTE","extractSystemInstructions","GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE","truncateGenAiMessages","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_RESPONSE_FINISH_REASONS_ATTRIBUTE","GEN_AI_RESPONSE_TEXT_ATTRIBUTE","GEN_AI_RESPONSE_MODEL_ATTRIBUTE","GEN_AI_RESPONSE_ID_ATTRIBUTE","GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/constants.js new file mode 100644 index 0000000..24a7993 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/constants.js @@ -0,0 +1,8 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const LANGGRAPH_INTEGRATION_NAME = 'LangGraph'; +const LANGGRAPH_ORIGIN = 'auto.ai.langgraph'; + +exports.LANGGRAPH_INTEGRATION_NAME = LANGGRAPH_INTEGRATION_NAME; +exports.LANGGRAPH_ORIGIN = LANGGRAPH_ORIGIN; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/constants.js.map new file mode 100644 index 0000000..aa2aee5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/langgraph/constants.ts"],"sourcesContent":["export const LANGGRAPH_INTEGRATION_NAME = 'LangGraph';\nexport const LANGGRAPH_ORIGIN = 'auto.ai.langgraph';\n"],"names":[],"mappings":";;AAAO,MAAM,0BAAA,GAA6B;AACnC,MAAM,gBAAA,GAAmB;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/index.js new file mode 100644 index 0000000..c55c275 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/index.js @@ -0,0 +1,209 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const exports$1 = require('../../exports.js'); +const semanticAttributes = require('../../semanticAttributes.js'); +const spanstatus = require('../spanstatus.js'); +const trace = require('../trace.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const messageTruncation = require('../ai/messageTruncation.js'); +const utils$2 = require('../ai/utils.js'); +const utils$1 = require('../langchain/utils.js'); +const constants = require('./constants.js'); +const utils = require('./utils.js'); + +/** + * Instruments StateGraph's compile method to create spans for agent creation and invocation + * + * Wraps the compile() method to: + * - Create a `gen_ai.create_agent` span when compile() is called + * - Automatically wrap the invoke() method on the returned compiled graph with a `gen_ai.invoke_agent` span + * + */ +function instrumentStateGraphCompile( + originalCompile, + options, +) { + return new Proxy(originalCompile, { + apply(target, thisArg, args) { + return trace.startSpan( + { + op: 'gen_ai.create_agent', + name: 'create_agent', + attributes: { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: constants.LANGGRAPH_ORIGIN, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.create_agent', + [genAiAttributes.GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'create_agent', + }, + }, + span => { + try { + const compiledGraph = Reflect.apply(target, thisArg, args); + const compileOptions = args.length > 0 ? (args[0] ) : {}; + + // Extract graph name + if (compileOptions?.name && typeof compileOptions.name === 'string') { + span.setAttribute(genAiAttributes.GEN_AI_AGENT_NAME_ATTRIBUTE, compileOptions.name); + span.updateName(`create_agent ${compileOptions.name}`); + } + + // Instrument agent invoke method on the compiled graph + const originalInvoke = compiledGraph.invoke; + if (originalInvoke && typeof originalInvoke === 'function') { + compiledGraph.invoke = instrumentCompiledGraphInvoke( + originalInvoke.bind(compiledGraph) , + compiledGraph, + compileOptions, + options, + ) ; + } + + return compiledGraph; + } catch (error) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'internal_error' }); + exports$1.captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.langgraph.error', + }, + }); + throw error; + } + }, + ); + }, + }) ; +} + +/** + * Instruments CompiledGraph's invoke method to create spans for agent invocation + * + * Creates a `gen_ai.invoke_agent` span when invoke() is called + */ +function instrumentCompiledGraphInvoke( + originalInvoke, + graphInstance, + compileOptions, + options, +) { + return new Proxy(originalInvoke, { + apply(target, thisArg, args) { + return trace.startSpan( + { + op: 'gen_ai.invoke_agent', + name: 'invoke_agent', + attributes: { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: constants.LANGGRAPH_ORIGIN, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: genAiAttributes.GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE, + [genAiAttributes.GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'invoke_agent', + }, + }, + async span => { + try { + const graphName = compileOptions?.name; + + if (graphName && typeof graphName === 'string') { + span.setAttribute(genAiAttributes.GEN_AI_PIPELINE_NAME_ATTRIBUTE, graphName); + span.setAttribute(genAiAttributes.GEN_AI_AGENT_NAME_ATTRIBUTE, graphName); + span.updateName(`invoke_agent ${graphName}`); + } + + // Extract thread_id from the config (second argument) + // LangGraph uses config.configurable.thread_id for conversation/session linking + const config = args.length > 1 ? (args[1] ) : undefined; + const configurable = config?.configurable ; + const threadId = configurable?.thread_id; + if (threadId && typeof threadId === 'string') { + span.setAttribute(genAiAttributes.GEN_AI_CONVERSATION_ID_ATTRIBUTE, threadId); + } + + // Extract available tools from the graph instance + const tools = utils.extractToolsFromCompiledGraph(graphInstance); + if (tools) { + span.setAttribute(genAiAttributes.GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, JSON.stringify(tools)); + } + + // Parse input messages + const recordInputs = options.recordInputs; + const recordOutputs = options.recordOutputs; + const inputMessages = + args.length > 0 ? ((args[0] ).messages ?? []) : []; + + if (inputMessages && recordInputs) { + const normalizedMessages = utils$1.normalizeLangChainMessages(inputMessages); + const { systemInstructions, filteredMessages } = utils$2.extractSystemInstructions(normalizedMessages); + + if (systemInstructions) { + span.setAttribute(genAiAttributes.GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const truncatedMessages = messageTruncation.truncateGenAiMessages(filteredMessages ); + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0; + span.setAttributes({ + [genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncatedMessages), + [genAiAttributes.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength, + }); + } + + // Call original invoke + const result = await Reflect.apply(target, thisArg, args); + + // Set response attributes + if (recordOutputs) { + utils.setResponseAttributes(span, inputMessages ?? null, result); + } + + return result; + } catch (error) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'internal_error' }); + exports$1.captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.langgraph.error', + }, + }); + throw error; + } + }, + ); + }, + }) ; +} + +/** + * Directly instruments a StateGraph instance to add tracing spans + * + * This function can be used to manually instrument LangGraph StateGraph instances + * in environments where automatic instrumentation is not available or desired. + * + * @param stateGraph - The StateGraph instance to instrument + * @param options - Optional configuration for recording inputs/outputs + * + * @example + * ```typescript + * import { instrumentLangGraph } from '@sentry/cloudflare'; + * import { StateGraph } from '@langchain/langgraph'; + * + * const graph = new StateGraph(MessagesAnnotation) + * .addNode('agent', mockLlm) + * .addEdge(START, 'agent') + * .addEdge('agent', END); + * + * instrumentLangGraph(graph, { recordInputs: true, recordOutputs: true }); + * const compiled = graph.compile({ name: 'my_agent' }); + * ``` + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function instrumentLangGraph( + stateGraph, + options, +) { + const _options = options || {}; + + stateGraph.compile = instrumentStateGraphCompile(stateGraph.compile.bind(stateGraph), _options); + + return stateGraph; +} + +exports.instrumentLangGraph = instrumentLangGraph; +exports.instrumentStateGraphCompile = instrumentStateGraphCompile; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/index.js.map new file mode 100644 index 0000000..f4142e9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/langgraph/index.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport {\n GEN_AI_AGENT_NAME_ATTRIBUTE,\n GEN_AI_CONVERSATION_ID_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_PIPELINE_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { extractSystemInstructions } from '../ai/utils';\nimport type { LangChainMessage } from '../langchain/types';\nimport { normalizeLangChainMessages } from '../langchain/utils';\nimport { startSpan } from '../trace';\nimport { LANGGRAPH_ORIGIN } from './constants';\nimport type { CompiledGraph, LangGraphOptions } from './types';\nimport { extractToolsFromCompiledGraph, setResponseAttributes } from './utils';\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 */\nexport function instrumentStateGraphCompile(\n originalCompile: (...args: unknown[]) => CompiledGraph,\n options: LangGraphOptions,\n): (...args: unknown[]) => CompiledGraph {\n return new Proxy(originalCompile, {\n apply(target, thisArg, args: unknown[]): CompiledGraph {\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] as Record) : {};\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) as (...args: unknown[]) => Promise,\n compiledGraph,\n compileOptions,\n options,\n ) as typeof originalInvoke;\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 }) as (...args: unknown[]) => CompiledGraph;\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: (...args: unknown[]) => Promise,\n graphInstance: CompiledGraph,\n compileOptions: Record,\n options: LangGraphOptions,\n): (...args: unknown[]) => Promise {\n return new Proxy(originalInvoke, {\n apply(target, thisArg, args: unknown[]): Promise {\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] as Record | undefined) : undefined;\n const configurable = config?.configurable as Record | undefined;\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] as { messages?: LangChainMessage[] }).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 as unknown[]);\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 }) as (...args: unknown[]) => Promise;\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\nexport function instrumentLangGraph any }>(\n stateGraph: T,\n options?: LangGraphOptions,\n): T {\n const _options: LangGraphOptions = options || {};\n\n stateGraph.compile = instrumentStateGraphCompile(stateGraph.compile.bind(stateGraph), _options);\n\n return stateGraph;\n}\n"],"names":["startSpan","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","LANGGRAPH_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_OP","GEN_AI_OPERATION_NAME_ATTRIBUTE","GEN_AI_AGENT_NAME_ATTRIBUTE","SPAN_STATUS_ERROR","captureException","GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE","GEN_AI_PIPELINE_NAME_ATTRIBUTE","GEN_AI_CONVERSATION_ID_ATTRIBUTE","extractToolsFromCompiledGraph","GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE","normalizeLangChainMessages","extractSystemInstructions","GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE","truncateGenAiMessages","GEN_AI_INPUT_MESSAGES_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE","setResponseAttributes"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/utils.js new file mode 100644 index 0000000..0102e31 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/utils.js @@ -0,0 +1,183 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const utils = require('../langchain/utils.js'); + +/** + * Extract tool calls from messages + */ +function extractToolCalls(messages) { + if (!messages || messages.length === 0) { + return null; + } + + const toolCalls = []; + + for (const message of messages) { + if (message && typeof message === 'object') { + const msgToolCalls = message.tool_calls; + if (msgToolCalls && Array.isArray(msgToolCalls)) { + toolCalls.push(...msgToolCalls); + } + } + } + + return toolCalls.length > 0 ? toolCalls : null; +} + +/** + * Extract token usage from a message's usage_metadata or response_metadata + * Returns token counts without setting span attributes + */ +function extractTokenUsageFromMessage(message) + + { + const msg = message ; + let inputTokens = 0; + let outputTokens = 0; + let totalTokens = 0; + + // Extract from usage_metadata (newer format) + if (msg.usage_metadata && typeof msg.usage_metadata === 'object') { + const usage = msg.usage_metadata ; + if (typeof usage.input_tokens === 'number') { + inputTokens = usage.input_tokens; + } + if (typeof usage.output_tokens === 'number') { + outputTokens = usage.output_tokens; + } + if (typeof usage.total_tokens === 'number') { + totalTokens = usage.total_tokens; + } + return { inputTokens, outputTokens, totalTokens }; + } + + // Fallback: Extract from response_metadata.tokenUsage + if (msg.response_metadata && typeof msg.response_metadata === 'object') { + const metadata = msg.response_metadata ; + if (metadata.tokenUsage && typeof metadata.tokenUsage === 'object') { + const tokenUsage = metadata.tokenUsage ; + if (typeof tokenUsage.promptTokens === 'number') { + inputTokens = tokenUsage.promptTokens; + } + if (typeof tokenUsage.completionTokens === 'number') { + outputTokens = tokenUsage.completionTokens; + } + if (typeof tokenUsage.totalTokens === 'number') { + totalTokens = tokenUsage.totalTokens; + } + } + } + + return { inputTokens, outputTokens, totalTokens }; +} + +/** + * Extract model and finish reason from a message's response_metadata + */ +function extractModelMetadata(span, message) { + const msg = message ; + + if (msg.response_metadata && typeof msg.response_metadata === 'object') { + const metadata = msg.response_metadata ; + + if (metadata.model_name && typeof metadata.model_name === 'string') { + span.setAttribute(genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE, metadata.model_name); + } + + if (metadata.finish_reason && typeof metadata.finish_reason === 'string') { + span.setAttribute(genAiAttributes.GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, [metadata.finish_reason]); + } + } +} + +/** + * Extract tools from compiled graph structure + * + * Tools are stored in: compiledGraph.builder.nodes.tools.runnable.tools + */ +function extractToolsFromCompiledGraph(compiledGraph) { + if (!compiledGraph.builder?.nodes?.tools?.runnable?.tools) { + return null; + } + + const tools = compiledGraph.builder?.nodes?.tools?.runnable?.tools; + + if (!tools || !Array.isArray(tools) || tools.length === 0) { + return null; + } + + // Extract name, description, and schema from each tool's lc_kwargs + return tools.map((tool) => ({ + name: tool.lc_kwargs?.name, + description: tool.lc_kwargs?.description, + schema: tool.lc_kwargs?.schema, + })); +} + +/** + * Set response attributes on the span + */ +function setResponseAttributes(span, inputMessages, result) { + // Extract messages from result + const resultObj = result ; + const outputMessages = resultObj?.messages; + + if (!outputMessages || !Array.isArray(outputMessages)) { + return; + } + + // Get new messages (delta between input and output) + const inputCount = inputMessages?.length ?? 0; + const newMessages = outputMessages.length > inputCount ? outputMessages.slice(inputCount) : []; + + if (newMessages.length === 0) { + return; + } + + // Extract and set tool calls from new messages BEFORE normalization + // (normalization strips tool_calls, so we need to extract them first) + const toolCalls = extractToolCalls(newMessages ); + if (toolCalls) { + span.setAttribute(genAiAttributes.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, JSON.stringify(toolCalls)); + } + + // Normalize the new messages + const normalizedNewMessages = utils.normalizeLangChainMessages(newMessages); + span.setAttribute(genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE, JSON.stringify(normalizedNewMessages)); + + // Accumulate token usage across all messages + let totalInputTokens = 0; + let totalOutputTokens = 0; + let totalTokens = 0; + + // Extract metadata from messages + for (const message of newMessages) { + // Accumulate token usage + const tokens = extractTokenUsageFromMessage(message); + totalInputTokens += tokens.inputTokens; + totalOutputTokens += tokens.outputTokens; + totalTokens += tokens.totalTokens; + + // Extract model metadata (last message's metadata wins for model/finish_reason) + extractModelMetadata(span, message); + } + + // Set accumulated token usage on span + if (totalInputTokens > 0) { + span.setAttribute(genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, totalInputTokens); + } + if (totalOutputTokens > 0) { + span.setAttribute(genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, totalOutputTokens); + } + if (totalTokens > 0) { + span.setAttribute(genAiAttributes.GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, totalTokens); + } +} + +exports.extractModelMetadata = extractModelMetadata; +exports.extractTokenUsageFromMessage = extractTokenUsageFromMessage; +exports.extractToolCalls = extractToolCalls; +exports.extractToolsFromCompiledGraph = extractToolsFromCompiledGraph; +exports.setResponseAttributes = setResponseAttributes; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/utils.js.map new file mode 100644 index 0000000..8078351 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/langgraph/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/langgraph/utils.ts"],"sourcesContent":["import type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { LangChainMessage } from '../langchain/types';\nimport { normalizeLangChainMessages } from '../langchain/utils';\nimport type { CompiledGraph, LangGraphTool } from './types';\n\n/**\n * Extract tool calls from messages\n */\nexport function extractToolCalls(messages: Array> | null): unknown[] | null {\n if (!messages || messages.length === 0) {\n return null;\n }\n\n const toolCalls: unknown[] = [];\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 */\nexport function extractTokenUsageFromMessage(message: LangChainMessage): {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n} {\n const msg = message as Record;\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 as Record;\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 as Record;\n if (metadata.tokenUsage && typeof metadata.tokenUsage === 'object') {\n const tokenUsage = metadata.tokenUsage as Record;\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 */\nexport function extractModelMetadata(span: Span, message: LangChainMessage): void {\n const msg = message as Record;\n\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata as Record;\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 */\nexport function extractToolsFromCompiledGraph(compiledGraph: CompiledGraph): unknown[] | null {\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: LangGraphTool) => ({\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 */\nexport function setResponseAttributes(span: Span, inputMessages: LangChainMessage[] | null, result: unknown): void {\n // Extract messages from result\n const resultObj = result as { messages?: LangChainMessage[] } | undefined;\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 as Array>);\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"],"names":["GEN_AI_RESPONSE_MODEL_ATTRIBUTE","GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE","GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","normalizeLangChainMessages","GEN_AI_RESPONSE_TEXT_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/logSpans.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/logSpans.js new file mode 100644 index 0000000..91e49b3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/logSpans.js @@ -0,0 +1,60 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const debugLogger = require('../utils/debug-logger.js'); +const spanUtils = require('../utils/spanUtils.js'); + +/** + * Print a log message for a started span. + */ +function logSpanStart(span) { + if (!debugBuild.DEBUG_BUILD) return; + + const { description = '< unknown name >', op = '< unknown op >', parent_span_id: parentSpanId } = spanUtils.spanToJSON(span); + const { spanId } = span.spanContext(); + + const sampled = spanUtils.spanIsSampled(span); + const rootSpan = spanUtils.getRootSpan(span); + const isRootSpan = rootSpan === span; + + const header = `[Tracing] Starting ${sampled ? 'sampled' : 'unsampled'} ${isRootSpan ? 'root ' : ''}span`; + + const infoParts = [`op: ${op}`, `name: ${description}`, `ID: ${spanId}`]; + + if (parentSpanId) { + infoParts.push(`parent ID: ${parentSpanId}`); + } + + if (!isRootSpan) { + const { op, description } = spanUtils.spanToJSON(rootSpan); + infoParts.push(`root ID: ${rootSpan.spanContext().spanId}`); + if (op) { + infoParts.push(`root op: ${op}`); + } + if (description) { + infoParts.push(`root description: ${description}`); + } + } + + debugLogger.debug.log(`${header} + ${infoParts.join('\n ')}`); +} + +/** + * Print a log message for an ended span. + */ +function logSpanEnd(span) { + if (!debugBuild.DEBUG_BUILD) return; + + const { description = '< unknown name >', op = '< unknown op >' } = spanUtils.spanToJSON(span); + const { spanId } = span.spanContext(); + const rootSpan = spanUtils.getRootSpan(span); + const isRootSpan = rootSpan === span; + + const msg = `[Tracing] Finishing "${op}" ${isRootSpan ? 'root ' : ''}span "${description}" with ID ${spanId}`; + debugLogger.debug.log(msg); +} + +exports.logSpanEnd = logSpanEnd; +exports.logSpanStart = logSpanStart; +//# sourceMappingURL=logSpans.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/logSpans.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/logSpans.js.map new file mode 100644 index 0000000..b038341 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/logSpans.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logSpans.js","sources":["../../../src/tracing/logSpans.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { Span } from '../types-hoist/span';\nimport { debug } from '../utils/debug-logger';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Print a log message for a started span.\n */\nexport function logSpanStart(span: Span): void {\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: string[] = [`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 */\nexport function logSpanEnd(span: Span): void {\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"],"names":["DEBUG_BUILD","spanToJSON","spanIsSampled","getRootSpan","debug"],"mappings":";;;;;;AAKA;AACA;AACA;AACO,SAAS,YAAY,CAAC,IAAI,EAAc;AAC/C,EAAE,IAAI,CAACA,sBAAW,EAAE;;AAEpB,EAAE,MAAM,EAAE,WAAA,GAAc,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,cAAc,EAAE,YAAA,EAAa,GAAIC,oBAAU,CAAC,IAAI,CAAC;AACpH,EAAE,MAAM,EAAE,MAAA,EAAO,GAAI,IAAI,CAAC,WAAW,EAAE;;AAEvC,EAAE,MAAM,OAAA,GAAUC,uBAAa,CAAC,IAAI,CAAC;AACrC,EAAE,MAAM,QAAA,GAAWC,qBAAW,CAAC,IAAI,CAAC;AACpC,EAAE,MAAM,UAAA,GAAa,QAAA,KAAa,IAAI;;AAEtC,EAAE,MAAM,SAAS,CAAC,mBAAmB,EAAE,OAAA,GAAU,SAAA,GAAY,WAAW,CAAC,CAAC,EAAE,UAAA,GAAa,UAAU,EAAE,CAAC,IAAI,CAAC;;AAE3G,EAAE,MAAM,SAAS,GAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,CAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA,CAAA;;AAEA,EAAA,IAAA,YAAA,EAAA;AACA,IAAA,SAAA,CAAA,IAAA,CAAA,CAAA,WAAA,EAAA,YAAA,CAAA,CAAA,CAAA;AACA,EAAA;;AAEA,EAAA,IAAA,CAAA,UAAA,EAAA;AACA,IAAA,MAAA,EAAA,EAAA,EAAA,WAAA,EAAA,GAAAF,oBAAA,CAAA,QAAA,CAAA;AACA,IAAA,SAAA,CAAA,IAAA,CAAA,CAAA,SAAA,EAAA,QAAA,CAAA,WAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AACA,IAAA,IAAA,EAAA,EAAA;AACA,MAAA,SAAA,CAAA,IAAA,CAAA,CAAA,SAAA,EAAA,EAAA,CAAA,CAAA,CAAA;AACA,IAAA;AACA,IAAA,IAAA,WAAA,EAAA;AACA,MAAA,SAAA,CAAA,IAAA,CAAA,CAAA,kBAAA,EAAA,WAAA,CAAA,CAAA,CAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAAG,iBAAA,CAAA,GAAA,CAAA,CAAA,EAAA,MAAA;AACA,EAAA,EAAA,SAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,UAAA,CAAA,IAAA,EAAA;AACA,EAAA,IAAA,CAAAJ,sBAAA,EAAA;;AAEA,EAAA,MAAA,EAAA,WAAA,GAAA,kBAAA,EAAA,EAAA,GAAA,gBAAA,EAAA,GAAAC,oBAAA,CAAA,IAAA,CAAA;AACA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,CAAA,WAAA,EAAA;AACA,EAAA,MAAA,QAAA,GAAAE,qBAAA,CAAA,IAAA,CAAA;AACA,EAAA,MAAA,UAAA,GAAA,QAAA,KAAA,IAAA;;AAEA,EAAA,MAAA,GAAA,GAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,EAAA,EAAA,UAAA,GAAA,OAAA,GAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AACA,EAAAC,iBAAA,CAAA,GAAA,CAAA,GAAA,CAAA;AACA;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/measurement.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/measurement.js new file mode 100644 index 0000000..3bd9e89 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/measurement.js @@ -0,0 +1,48 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const semanticAttributes = require('../semanticAttributes.js'); +const debugLogger = require('../utils/debug-logger.js'); +const spanUtils = require('../utils/spanUtils.js'); + +/** + * Adds a measurement to the active transaction on the current global scope. You can optionally pass in a different span + * as the 4th parameter. + */ +function setMeasurement(name, value, unit, activeSpan = spanUtils.getActiveSpan()) { + const rootSpan = activeSpan && spanUtils.getRootSpan(activeSpan); + + if (rootSpan) { + debugBuild.DEBUG_BUILD && debugLogger.debug.log(`[Measurement] Setting measurement on root span: ${name} = ${value} ${unit}`); + rootSpan.addEvent(name, { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]: value, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]: unit , + }); + } +} + +/** + * Convert timed events to measurements. + */ +function timedEventsToMeasurements(events) { + if (!events || events.length === 0) { + return undefined; + } + + const measurements = {}; + events.forEach(event => { + const attributes = event.attributes || {}; + const unit = attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT] ; + const value = attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE] ; + + if (typeof unit === 'string' && typeof value === 'number') { + measurements[event.name] = { value, unit }; + } + }); + + return measurements; +} + +exports.setMeasurement = setMeasurement; +exports.timedEventsToMeasurements = timedEventsToMeasurements; +//# sourceMappingURL=measurement.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/measurement.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/measurement.js.map new file mode 100644 index 0000000..63267d1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/measurement.js.map @@ -0,0 +1 @@ +{"version":3,"file":"measurement.js","sources":["../../../src/tracing/measurement.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT,\n SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE,\n} from '../semanticAttributes';\nimport type { Measurements, MeasurementUnit } from '../types-hoist/measurement';\nimport type { TimedEvent } from '../types-hoist/timedEvent';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\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 */\nexport function setMeasurement(name: string, value: number, unit: MeasurementUnit, activeSpan = getActiveSpan()): void {\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 as string,\n });\n }\n}\n\n/**\n * Convert timed events to measurements.\n */\nexport function timedEventsToMeasurements(events: TimedEvent[]): Measurements | undefined {\n if (!events || events.length === 0) {\n return undefined;\n }\n\n const measurements: Measurements = {};\n events.forEach(event => {\n const attributes = event.attributes || {};\n const unit = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT] as MeasurementUnit | undefined;\n const value = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE] as number | undefined;\n\n if (typeof unit === 'string' && typeof value === 'number') {\n measurements[event.name] = { value, unit };\n }\n });\n\n return measurements;\n}\n"],"names":["getActiveSpan","getRootSpan","DEBUG_BUILD","debug","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT"],"mappings":";;;;;;;AAUA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,IAAI,EAAU,KAAK,EAAU,IAAI,EAAmB,aAAaA,uBAAa,EAAE,EAAQ;AACvH,EAAE,MAAM,WAAW,UAAA,IAAcC,qBAAW,CAAC,UAAU,CAAC;;AAExD,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAIC,0BAAeC,iBAAK,CAAC,GAAG,CAAC,CAAC,gDAAgD,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA,CAAA;AACA,IAAA,QAAA,CAAA,QAAA,CAAA,IAAA,EAAA;AACA,MAAA,CAAAC,8DAAA,GAAA,KAAA;AACA,MAAA,CAAAC,6DAAA,GAAA,IAAA;AACA,KAAA,CAAA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,yBAAA,CAAA,MAAA,EAAA;AACA,EAAA,IAAA,CAAA,MAAA,IAAA,MAAA,CAAA,MAAA,KAAA,CAAA,EAAA;AACA,IAAA,OAAA,SAAA;AACA,EAAA;;AAEA,EAAA,MAAA,YAAA,GAAA,EAAA;AACA,EAAA,MAAA,CAAA,OAAA,CAAA,KAAA,IAAA;AACA,IAAA,MAAA,UAAA,GAAA,KAAA,CAAA,UAAA,IAAA,EAAA;AACA,IAAA,MAAA,IAAA,GAAA,UAAA,CAAAA,6DAAA,CAAA;AACA,IAAA,MAAA,KAAA,GAAA,UAAA,CAAAD,8DAAA,CAAA;;AAEA,IAAA,IAAA,OAAA,IAAA,KAAA,QAAA,IAAA,OAAA,KAAA,KAAA,QAAA,EAAA;AACA,MAAA,YAAA,CAAA,KAAA,CAAA,IAAA,CAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA;AACA,IAAA;AACA,EAAA,CAAA,CAAA;;AAEA,EAAA,OAAA,YAAA;AACA;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/constants.js new file mode 100644 index 0000000..c219c94 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/constants.js @@ -0,0 +1,37 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const OPENAI_INTEGRATION_NAME = 'OpenAI'; + +// https://platform.openai.com/docs/quickstart?api-mode=responses +// https://platform.openai.com/docs/quickstart?api-mode=chat +// https://platform.openai.com/docs/api-reference/conversations +const INSTRUMENTED_METHODS = [ + 'responses.create', + 'chat.completions.create', + 'embeddings.create', + // Conversations API - for conversation state management + // https://platform.openai.com/docs/guides/conversation-state + 'conversations.create', +] ; +const RESPONSES_TOOL_CALL_EVENT_TYPES = [ + 'response.output_item.added', + 'response.function_call_arguments.delta', + 'response.function_call_arguments.done', + 'response.output_item.done', +] ; +const RESPONSE_EVENT_TYPES = [ + 'response.created', + 'response.in_progress', + 'response.failed', + 'response.completed', + 'response.incomplete', + 'response.queued', + 'response.output_text.delta', + ...RESPONSES_TOOL_CALL_EVENT_TYPES, +] ; + +exports.INSTRUMENTED_METHODS = INSTRUMENTED_METHODS; +exports.OPENAI_INTEGRATION_NAME = OPENAI_INTEGRATION_NAME; +exports.RESPONSES_TOOL_CALL_EVENT_TYPES = RESPONSES_TOOL_CALL_EVENT_TYPES; +exports.RESPONSE_EVENT_TYPES = RESPONSE_EVENT_TYPES; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/constants.js.map new file mode 100644 index 0000000..8eb71f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/openai/constants.ts"],"sourcesContent":["export 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\nexport const 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] as const;\nexport const 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] as const;\nexport const 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] as const;\n"],"names":[],"mappings":";;AAAO,MAAM,uBAAA,GAA0B;;AAEvC;AACA;AACA;AACO,MAAM,uBAAuB;AACpC,EAAE,kBAAkB;AACpB,EAAE,yBAAyB;AAC3B,EAAE,mBAAmB;AACrB;AACA;AACA,EAAE,sBAAsB;AACxB,CAAA;AACO,MAAM,kCAAkC;AAC/C,EAAE,4BAA4B;AAC9B,EAAE,wCAAwC;AAC1C,EAAE,uCAAuC;AACzC,EAAE,2BAA2B;AAC7B,CAAA;AACO,MAAM,uBAAuB;AACpC,EAAE,kBAAkB;AACpB,EAAE,sBAAsB;AACxB,EAAE,iBAAiB;AACnB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,iBAAiB;AACnB,EAAE,4BAA4B;AAC9B,EAAE,GAAG,+BAA+B;AACpC,CAAA;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/index.js new file mode 100644 index 0000000..a89cee2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/index.js @@ -0,0 +1,270 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../../currentScopes.js'); +const exports$1 = require('../../exports.js'); +const semanticAttributes = require('../../semanticAttributes.js'); +const spanstatus = require('../spanstatus.js'); +const trace = require('../trace.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const utils$1 = require('../ai/utils.js'); +const streaming = require('./streaming.js'); +const utils = require('./utils.js'); + +/** + * Extract available tools from request parameters + */ +function extractAvailableTools(params) { + const tools = Array.isArray(params.tools) ? params.tools : []; + const hasWebSearchOptions = params.web_search_options && typeof params.web_search_options === 'object'; + const webSearchOptions = hasWebSearchOptions + ? [{ type: 'web_search_options', ...(params.web_search_options ) }] + : []; + + const availableTools = [...tools, ...webSearchOptions]; + return availableTools.length > 0 ? JSON.stringify(availableTools) : undefined; +} + +/** + * Extract request attributes from method arguments + */ +function extractRequestAttributes(args, methodPath) { + const attributes = { + [genAiAttributes.GEN_AI_SYSTEM_ATTRIBUTE]: 'openai', + [genAiAttributes.GEN_AI_OPERATION_NAME_ATTRIBUTE]: utils.getOperationName(methodPath), + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.openai', + }; + + if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) { + const params = args[0] ; + + const availableTools = extractAvailableTools(params); + if (availableTools) { + attributes[genAiAttributes.GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = availableTools; + } + + Object.assign(attributes, utils.extractRequestParameters(params)); + } else { + attributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown'; + } + + return attributes; +} + +/** + * Add response attributes to spans + * This supports Chat Completion, Responses API, Embeddings, and Conversations API responses + */ +function addResponseAttributes(span, result, recordOutputs) { + if (!result || typeof result !== 'object') return; + + const response = result ; + + if (utils.isChatCompletionResponse(response)) { + utils.addChatCompletionAttributes(span, response, recordOutputs); + if (recordOutputs && response.choices?.length) { + const responseTexts = response.choices.map(choice => choice.message?.content || ''); + span.setAttributes({ [genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(responseTexts) }); + } + } else if (utils.isResponsesApiResponse(response)) { + utils.addResponsesApiAttributes(span, response, recordOutputs); + if (recordOutputs && response.output_text) { + span.setAttributes({ [genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.output_text }); + } + } else if (utils.isEmbeddingsResponse(response)) { + utils.addEmbeddingsAttributes(span, response); + } else if (utils.isConversationResponse(response)) { + utils.addConversationAttributes(span, response); + } +} + +// Extract and record AI request inputs, if present. This is intentionally separate from response attributes. +function addRequestAttributes(span, params, operationName) { + // Store embeddings input on a separate attribute and do not truncate it + if (operationName === genAiAttributes.OPENAI_OPERATIONS.EMBEDDINGS && 'input' in params) { + const input = params.input; + + // No input provided + if (input == null) { + return; + } + + // Empty input string + if (typeof input === 'string' && input.length === 0) { + return; + } + + // Empty array input + if (Array.isArray(input) && input.length === 0) { + return; + } + + // Store strings as-is, arrays/objects as JSON + span.setAttribute(genAiAttributes.GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, typeof input === 'string' ? input : JSON.stringify(input)); + return; + } + + const src = 'input' in params ? params.input : 'messages' in params ? params.messages : undefined; + + if (!src) { + return; + } + + if (Array.isArray(src) && src.length === 0) { + return; + } + + const { systemInstructions, filteredMessages } = utils$1.extractSystemInstructions(src); + + if (systemInstructions) { + span.setAttribute(genAiAttributes.GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const truncatedInput = utils$1.getTruncatedJsonString(filteredMessages); + span.setAttribute(genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE, truncatedInput); + + if (Array.isArray(filteredMessages)) { + span.setAttribute(genAiAttributes.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredMessages.length); + } else { + span.setAttribute(genAiAttributes.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, 1); + } +} + +/** + * Instrument a method with Sentry spans + * Following Sentry AI Agents Manual Instrumentation conventions + * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation + */ +function instrumentMethod( + originalMethod, + methodPath, + context, + options, +) { + return async function instrumentedMethod(...args) { + const requestAttributes = extractRequestAttributes(args, methodPath); + const model = (requestAttributes[genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE] ) || 'unknown'; + const operationName = utils.getOperationName(methodPath); + + const params = args[0] ; + const isStreamRequested = params && typeof params === 'object' && params.stream === true; + + if (isStreamRequested) { + // For streaming responses, use manual span management to properly handle the async generator lifecycle + return trace.startSpanManual( + { + name: `${operationName} ${model} stream-response`, + op: utils.getSpanOperation(methodPath), + attributes: requestAttributes , + }, + async (span) => { + try { + if (options.recordInputs && params) { + addRequestAttributes(span, params, operationName); + } + + const result = await originalMethod.apply(context, args); + + return streaming.instrumentStream( + result , + span, + options.recordOutputs ?? false, + ) ; + } catch (error) { + // For streaming requests that fail before stream creation, we still want to record + // them as streaming requests but end the span gracefully + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'internal_error' }); + exports$1.captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.openai.stream', + data: { + function: methodPath, + }, + }, + }); + span.end(); + throw error; + } + }, + ); + } else { + // Non-streaming responses + return trace.startSpan( + { + name: `${operationName} ${model}`, + op: utils.getSpanOperation(methodPath), + attributes: requestAttributes , + }, + async (span) => { + try { + if (options.recordInputs && params) { + addRequestAttributes(span, params, operationName); + } + + const result = await originalMethod.apply(context, args); + addResponseAttributes(span, result, options.recordOutputs); + return result; + } catch (error) { + exports$1.captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.openai', + data: { + function: methodPath, + }, + }, + }); + throw error; + } + }, + ); + } + }; +} + +/** + * Create a deep proxy for OpenAI client instrumentation + */ +function createDeepProxy(target, currentPath = '', options) { + return new Proxy(target, { + get(obj, prop) { + const value = (obj )[prop]; + const methodPath = utils.buildMethodPath(currentPath, String(prop)); + + if (typeof value === 'function' && utils.shouldInstrument(methodPath)) { + return instrumentMethod(value , methodPath, obj, options); + } + + if (typeof value === 'function') { + // Bind non-instrumented functions to preserve the original `this` context, + // which is required for accessing private class fields (e.g. #baseURL) in OpenAI SDK v5. + return value.bind(obj); + } + + if (value && typeof value === 'object') { + return createDeepProxy(value, methodPath, options); + } + + return value; + }, + }) ; +} + +/** + * Instrument an OpenAI client with Sentry tracing + * Can be used across Node.js, Cloudflare Workers, and Vercel Edge + */ +function instrumentOpenAiClient(client, options) { + const sendDefaultPii = Boolean(currentScopes.getClient()?.getOptions().sendDefaultPii); + + const _options = { + recordInputs: sendDefaultPii, + recordOutputs: sendDefaultPii, + ...options, + }; + + return createDeepProxy(client, '', _options); +} + +exports.instrumentOpenAiClient = instrumentOpenAiClient; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/index.js.map new file mode 100644 index 0000000..e4621ff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/openai/index.ts"],"sourcesContent":["import { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n OPENAI_OPERATIONS,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport { instrumentStream } from './streaming';\nimport type {\n ChatCompletionChunk,\n InstrumentedMethod,\n OpenAiOptions,\n OpenAiResponse,\n OpenAIStream,\n ResponseStreamingEvent,\n} from './types';\nimport {\n addChatCompletionAttributes,\n addConversationAttributes,\n addEmbeddingsAttributes,\n addResponsesApiAttributes,\n buildMethodPath,\n extractRequestParameters,\n getOperationName,\n getSpanOperation,\n isChatCompletionResponse,\n isConversationResponse,\n isEmbeddingsResponse,\n isResponsesApiResponse,\n shouldInstrument,\n} from './utils';\n\n/**\n * Extract available tools from request parameters\n */\nfunction extractAvailableTools(params: Record): string | undefined {\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 as Record) }]\n : [];\n\n const availableTools = [...tools, ...webSearchOptions];\n return availableTools.length > 0 ? JSON.stringify(availableTools) : undefined;\n}\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], methodPath: string): Record {\n const attributes: Record = {\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] as Record;\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: Span, result: unknown, recordOutputs?: boolean): void {\n if (!result || typeof result !== 'object') return;\n\n const response = result as OpenAiResponse;\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: Span, params: Record, operationName: string): void {\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: (...args: T) => Promise,\n methodPath: InstrumentedMethod,\n context: unknown,\n options: OpenAiOptions,\n): (...args: T) => Promise {\n return async function instrumentedMethod(...args: T): Promise {\n const requestAttributes = extractRequestAttributes(args, methodPath);\n const model = (requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] as string) || 'unknown';\n const operationName = getOperationName(methodPath);\n\n const params = args[0] as Record | undefined;\n const isStreamRequested = params && typeof params === 'object' && params.stream === true;\n\n if (isStreamRequested) {\n // For streaming responses, use manual span management to properly handle the async generator lifecycle\n return startSpanManual(\n {\n name: `${operationName} ${model} stream-response`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes as Record,\n },\n async (span: Span) => {\n try {\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n const result = await originalMethod.apply(context, args);\n\n return instrumentStream(\n result as OpenAIStream,\n span,\n options.recordOutputs ?? false,\n ) as unknown as R;\n } catch (error) {\n // For streaming requests that fail before stream creation, we still want to record\n // them as streaming requests but end the span gracefully\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: {\n function: methodPath,\n },\n },\n });\n span.end();\n throw error;\n }\n },\n );\n } else {\n // Non-streaming responses\n return startSpan(\n {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes as Record,\n },\n async (span: Span) => {\n try {\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n const result = await originalMethod.apply(context, args);\n addResponseAttributes(span, result, options.recordOutputs);\n return result;\n } catch (error) {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai',\n data: {\n function: methodPath,\n },\n },\n });\n throw error;\n }\n },\n );\n }\n };\n}\n\n/**\n * Create a deep proxy for OpenAI client instrumentation\n */\nfunction createDeepProxy(target: T, currentPath = '', options: OpenAiOptions): T {\n return new Proxy(target, {\n get(obj: object, prop: string): unknown {\n const value = (obj as Record)[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n if (typeof value === 'function' && shouldInstrument(methodPath)) {\n return instrumentMethod(value as (...args: unknown[]) => Promise, 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 }) as T;\n}\n\n/**\n * Instrument an OpenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n */\nexport function instrumentOpenAiClient(client: T, options?: OpenAiOptions): T {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n\n const _options = {\n recordInputs: sendDefaultPii,\n recordOutputs: sendDefaultPii,\n ...options,\n };\n\n return createDeepProxy(client, '', _options);\n}\n"],"names":["GEN_AI_SYSTEM_ATTRIBUTE","GEN_AI_OPERATION_NAME_ATTRIBUTE","getOperationName","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE","extractRequestParameters","GEN_AI_REQUEST_MODEL_ATTRIBUTE","isChatCompletionResponse","addChatCompletionAttributes","GEN_AI_RESPONSE_TEXT_ATTRIBUTE","isResponsesApiResponse","addResponsesApiAttributes","isEmbeddingsResponse","addEmbeddingsAttributes","isConversationResponse","addConversationAttributes","OPENAI_OPERATIONS","GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE","extractSystemInstructions","GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE","getTruncatedJsonString","GEN_AI_INPUT_MESSAGES_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE","startSpanManual","getSpanOperation","instrumentStream","SPAN_STATUS_ERROR","captureException","startSpan","buildMethodPath","shouldInstrument","getClient"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/streaming.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/streaming.js new file mode 100644 index 0000000..6c2766c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/streaming.js @@ -0,0 +1,236 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const exports$1 = require('../../exports.js'); +const spanstatus = require('../spanstatus.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const constants = require('./constants.js'); +const utils = require('./utils.js'); + +/** + * State object used to accumulate information from a stream of OpenAI events/chunks. + */ + +/** + * Processes tool calls from a chat completion chunk delta. + * Follows the pattern: accumulate by index, then convert to array at the end. + * + * @param toolCalls - Array of tool calls from the delta. + * @param state - The current streaming state to update. + * + * @see https://platform.openai.com/docs/guides/function-calling#streaming + */ +function processChatCompletionToolCalls(toolCalls, state) { + for (const toolCall of toolCalls) { + const index = toolCall.index; + if (index === undefined || !toolCall.function) continue; + + // Initialize tool call if this is the first chunk for this index + if (!(index in state.chatCompletionToolCalls)) { + state.chatCompletionToolCalls[index] = { + ...toolCall, + function: { + name: toolCall.function.name, + arguments: toolCall.function.arguments || '', + }, + }; + } else { + // Accumulate function arguments from subsequent chunks + const existingToolCall = state.chatCompletionToolCalls[index]; + if (toolCall.function.arguments && existingToolCall?.function) { + existingToolCall.function.arguments += toolCall.function.arguments; + } + } + } +} + +/** + * Processes a single OpenAI ChatCompletionChunk event, updating the streaming state. + * + * @param chunk - The ChatCompletionChunk event to process. + * @param state - The current streaming state to update. + * @param recordOutputs - Whether to record output text fragments. + */ +function processChatCompletionChunk(chunk, state, recordOutputs) { + state.responseId = chunk.id ?? state.responseId; + state.responseModel = chunk.model ?? state.responseModel; + state.responseTimestamp = chunk.created ?? state.responseTimestamp; + + if (chunk.usage) { + // For stream responses, the input tokens remain constant across all events in the stream. + // Output tokens, however, are only finalized in the last event. + // Since we can't guarantee that the last event will include usage data or even be a typed event, + // we update the output token values on every event that includes them. + // This ensures that output token usage is always set, even if the final event lacks it. + state.promptTokens = chunk.usage.prompt_tokens; + state.completionTokens = chunk.usage.completion_tokens; + state.totalTokens = chunk.usage.total_tokens; + } + + for (const choice of chunk.choices ?? []) { + if (recordOutputs) { + if (choice.delta?.content) { + state.responseTexts.push(choice.delta.content); + } + + // Handle tool calls from delta + if (choice.delta?.tool_calls) { + processChatCompletionToolCalls(choice.delta.tool_calls, state); + } + } + if (choice.finish_reason) { + state.finishReasons.push(choice.finish_reason); + } + } +} + +/** + * Processes a single OpenAI Responses API streaming event, updating the streaming state and span. + * + * @param streamEvent - The event to process (may be an error or unknown object). + * @param state - The current streaming state to update. + * @param recordOutputs - Whether to record output text fragments. + * @param span - The span to update with error status if needed. + */ +function processResponsesApiEvent( + streamEvent, + state, + recordOutputs, + span, +) { + if (!(streamEvent && typeof streamEvent === 'object')) { + state.eventTypes.push('unknown:non-object'); + return; + } + if (streamEvent instanceof Error) { + span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'internal_error' }); + exports$1.captureException(streamEvent, { + mechanism: { + handled: false, + type: 'auto.ai.openai.stream-response', + }, + }); + return; + } + + if (!('type' in streamEvent)) return; + const event = streamEvent ; + + if (!constants.RESPONSE_EVENT_TYPES.includes(event.type)) { + state.eventTypes.push(event.type); + return; + } + + // Handle output text delta + if (recordOutputs) { + // Handle tool call events for Responses API + if (event.type === 'response.output_item.done' && 'item' in event) { + state.responsesApiToolCalls.push(event.item); + } + + if (event.type === 'response.output_text.delta' && 'delta' in event && event.delta) { + state.responseTexts.push(event.delta); + return; + } + } + + if ('response' in event) { + const { response } = event ; + state.responseId = response.id ?? state.responseId; + state.responseModel = response.model ?? state.responseModel; + state.responseTimestamp = response.created_at ?? state.responseTimestamp; + + if (response.usage) { + // For stream responses, the input tokens remain constant across all events in the stream. + // Output tokens, however, are only finalized in the last event. + // Since we can't guarantee that the last event will include usage data or even be a typed event, + // we update the output token values on every event that includes them. + // This ensures that output token usage is always set, even if the final event lacks it. + state.promptTokens = response.usage.input_tokens; + state.completionTokens = response.usage.output_tokens; + state.totalTokens = response.usage.total_tokens; + } + + if (response.status) { + state.finishReasons.push(response.status); + } + + if (recordOutputs && response.output_text) { + state.responseTexts.push(response.output_text); + } + } +} + +/** + * Instruments a stream of OpenAI events, updating the provided span with relevant attributes and + * optionally recording output text. This function yields each event from the input stream as it is processed. + * + * @template T - The type of events in the stream. + * @param stream - The async iterable stream of events to instrument. + * @param span - The span to add attributes to and to finish at the end of the stream. + * @param recordOutputs - Whether to record output text fragments in the span. + * @returns An async generator yielding each event from the input stream. + */ +async function* instrumentStream( + stream, + span, + recordOutputs, +) { + const state = { + eventTypes: [], + responseTexts: [], + finishReasons: [], + responseId: '', + responseModel: '', + responseTimestamp: 0, + promptTokens: undefined, + completionTokens: undefined, + totalTokens: undefined, + chatCompletionToolCalls: {}, + responsesApiToolCalls: [], + }; + + try { + for await (const event of stream) { + if (utils.isChatCompletionChunk(event)) { + processChatCompletionChunk(event , state, recordOutputs); + } else if (utils.isResponsesApiStreamEvent(event)) { + processResponsesApiEvent(event , state, recordOutputs, span); + } + yield event; + } + } finally { + utils.setCommonResponseAttributes(span, state.responseId, state.responseModel, state.responseTimestamp); + utils.setTokenUsageAttributes(span, state.promptTokens, state.completionTokens, state.totalTokens); + + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true, + }); + + if (state.finishReasons.length) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons), + }); + } + + if (recordOutputs && state.responseTexts.length) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''), + }); + } + + // Set tool calls attribute if any were accumulated + const chatCompletionToolCallsArray = Object.values(state.chatCompletionToolCalls); + const allToolCalls = [...chatCompletionToolCallsArray, ...state.responsesApiToolCalls]; + + if (allToolCalls.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(allToolCalls), + }); + } + + span.end(); + } +} + +exports.instrumentStream = instrumentStream; +//# sourceMappingURL=streaming.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/streaming.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/streaming.js.map new file mode 100644 index 0000000..e7fbca3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/streaming.js.map @@ -0,0 +1 @@ +{"version":3,"file":"streaming.js","sources":["../../../../src/tracing/openai/streaming.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { RESPONSE_EVENT_TYPES } from './constants';\nimport type {\n ChatCompletionChunk,\n ChatCompletionToolCall,\n OpenAIResponseObject,\n ResponseFunctionCall,\n ResponseStreamingEvent,\n} from './types';\nimport {\n isChatCompletionChunk,\n isResponsesApiStreamEvent,\n setCommonResponseAttributes,\n setTokenUsageAttributes,\n} from './utils';\n\n/**\n * State object used to accumulate information from a stream of OpenAI events/chunks.\n */\ninterface StreamingState {\n /** Types of events encountered in the stream. */\n eventTypes: string[];\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId: string;\n /** The model name. */\n responseModel: string;\n /** The timestamp of the response. */\n responseTimestamp: number;\n /** Number of prompt/input tokens used. */\n promptTokens: number | undefined;\n /** Number of completion/output tokens used. */\n completionTokens: number | undefined;\n /** Total number of tokens used (prompt + completion). */\n totalTokens: number | undefined;\n /**\n * Accumulated tool calls from Chat Completion streaming, indexed by tool call index.\n * @see https://platform.openai.com/docs/guides/function-calling?api-mode=chat#streaming\n */\n chatCompletionToolCalls: Record;\n /**\n * Accumulated function calls from Responses API streaming.\n * @see https://platform.openai.com/docs/guides/function-calling?api-mode=responses#streaming\n */\n responsesApiToolCalls: Array;\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: ChatCompletionToolCall[], state: StreamingState): void {\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: ChatCompletionChunk, state: StreamingState, recordOutputs: boolean): void {\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: ResponseStreamingEvent | unknown | Error,\n state: StreamingState,\n recordOutputs: boolean,\n span: Span,\n): void {\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 as ResponseStreamingEvent;\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 as { response: OpenAIResponseObject };\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 */\nexport async function* instrumentStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\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 as ChatCompletionChunk, state, recordOutputs);\n } else if (isResponsesApiStreamEvent(event)) {\n processResponsesApiEvent(event as ResponseStreamingEvent, 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"],"names":["SPAN_STATUS_ERROR","captureException","RESPONSE_EVENT_TYPES","isChatCompletionChunk","isResponsesApiStreamEvent","setCommonResponseAttributes","setTokenUsageAttributes","GEN_AI_RESPONSE_STREAMING_ATTRIBUTE","GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE","GEN_AI_RESPONSE_TEXT_ATTRIBUTE","GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/utils.js new file mode 100644 index 0000000..d585e00 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/utils.js @@ -0,0 +1,353 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const constants = require('./constants.js'); + +/** + * Maps OpenAI method paths to OpenTelemetry semantic convention operation names + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +function getOperationName(methodPath) { + if (methodPath.includes('chat.completions')) { + return genAiAttributes.OPENAI_OPERATIONS.CHAT; + } + if (methodPath.includes('responses')) { + return genAiAttributes.OPENAI_OPERATIONS.CHAT; + } + if (methodPath.includes('embeddings')) { + return genAiAttributes.OPENAI_OPERATIONS.EMBEDDINGS; + } + if (methodPath.includes('conversations')) { + return genAiAttributes.OPENAI_OPERATIONS.CHAT; + } + return methodPath.split('.').pop() || 'unknown'; +} + +/** + * Get the span operation for OpenAI methods + * Following Sentry's convention: "gen_ai.{operation_name}" + */ +function getSpanOperation(methodPath) { + return `gen_ai.${getOperationName(methodPath)}`; +} + +/** + * Check if a method path should be instrumented + */ +function shouldInstrument(methodPath) { + return constants.INSTRUMENTED_METHODS.includes(methodPath ); +} + +/** + * Build method path from current traversal + */ +function buildMethodPath(currentPath, prop) { + return currentPath ? `${currentPath}.${prop}` : prop; +} + +/** + * Check if response is a Chat Completion object + */ +function isChatCompletionResponse(response) { + return ( + response !== null && + typeof response === 'object' && + 'object' in response && + (response ).object === 'chat.completion' + ); +} + +/** + * Check if response is a Responses API object + */ +function isResponsesApiResponse(response) { + return ( + response !== null && + typeof response === 'object' && + 'object' in response && + (response ).object === 'response' + ); +} + +/** + * Check if response is an Embeddings API object + */ +function isEmbeddingsResponse(response) { + if (response === null || typeof response !== 'object' || !('object' in response)) { + return false; + } + const responseObject = response ; + return ( + responseObject.object === 'list' && + typeof responseObject.model === 'string' && + responseObject.model.toLowerCase().includes('embedding') + ); +} + +/** + * Check if response is a Conversations API object + * @see https://platform.openai.com/docs/api-reference/conversations + */ +function isConversationResponse(response) { + return ( + response !== null && + typeof response === 'object' && + 'object' in response && + (response ).object === 'conversation' + ); +} + +/** + * Check if streaming event is from the Responses API + */ +function isResponsesApiStreamEvent(event) { + return ( + event !== null && + typeof event === 'object' && + 'type' in event && + typeof (event ).type === 'string' && + ((event ).type ).startsWith('response.') + ); +} + +/** + * Check if streaming event is a chat completion chunk + */ +function isChatCompletionChunk(event) { + return ( + event !== null && + typeof event === 'object' && + 'object' in event && + (event ).object === 'chat.completion.chunk' + ); +} + +/** + * Add attributes for Chat Completion responses + */ +function addChatCompletionAttributes( + span, + response, + recordOutputs, +) { + setCommonResponseAttributes(span, response.id, response.model, response.created); + if (response.usage) { + setTokenUsageAttributes( + span, + response.usage.prompt_tokens, + response.usage.completion_tokens, + response.usage.total_tokens, + ); + } + if (Array.isArray(response.choices)) { + const finishReasons = response.choices + .map(choice => choice.finish_reason) + .filter((reason) => reason !== null); + if (finishReasons.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(finishReasons), + }); + } + + // Extract tool calls from all choices (only if recordOutputs is true) + if (recordOutputs) { + const toolCalls = response.choices + .map(choice => choice.message?.tool_calls) + .filter(calls => Array.isArray(calls) && calls.length > 0) + .flat(); + + if (toolCalls.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls), + }); + } + } + } +} + +/** + * Add attributes for Responses API responses + */ +function addResponsesApiAttributes(span, response, recordOutputs) { + setCommonResponseAttributes(span, response.id, response.model, response.created_at); + if (response.status) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify([response.status]), + }); + } + if (response.usage) { + setTokenUsageAttributes( + span, + response.usage.input_tokens, + response.usage.output_tokens, + response.usage.total_tokens, + ); + } + + // Extract function calls from output (only if recordOutputs is true) + if (recordOutputs) { + const responseWithOutput = response ; + if (Array.isArray(responseWithOutput.output) && responseWithOutput.output.length > 0) { + // Filter for function_call type objects in the output array + const functionCalls = responseWithOutput.output.filter( + (item) => + typeof item === 'object' && item !== null && (item ).type === 'function_call', + ); + + if (functionCalls.length > 0) { + span.setAttributes({ + [genAiAttributes.GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls), + }); + } + } + } +} + +/** + * Add attributes for Embeddings API responses + */ +function addEmbeddingsAttributes(span, response) { + span.setAttributes({ + [genAiAttributes.OPENAI_RESPONSE_MODEL_ATTRIBUTE]: response.model, + [genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model, + }); + + if (response.usage) { + setTokenUsageAttributes(span, response.usage.prompt_tokens, undefined, response.usage.total_tokens); + } +} + +/** + * Add attributes for Conversations API responses + * @see https://platform.openai.com/docs/api-reference/conversations + */ +function addConversationAttributes(span, response) { + const { id, created_at } = response; + + span.setAttributes({ + [genAiAttributes.OPENAI_RESPONSE_ID_ATTRIBUTE]: id, + [genAiAttributes.GEN_AI_RESPONSE_ID_ATTRIBUTE]: id, + // The conversation id is used to link messages across API calls + [genAiAttributes.GEN_AI_CONVERSATION_ID_ATTRIBUTE]: id, + }); + + if (created_at) { + span.setAttributes({ + [genAiAttributes.OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(created_at * 1000).toISOString(), + }); + } +} + +/** + * Set token usage attributes + * @param span - The span to add attributes to + * @param promptTokens - The number of prompt tokens + * @param completionTokens - The number of completion tokens + * @param totalTokens - The number of total tokens + */ +function setTokenUsageAttributes( + span, + promptTokens, + completionTokens, + totalTokens, +) { + if (promptTokens !== undefined) { + span.setAttributes({ + [genAiAttributes.OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE]: promptTokens, + [genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens, + }); + } + if (completionTokens !== undefined) { + span.setAttributes({ + [genAiAttributes.OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE]: completionTokens, + [genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens, + }); + } + if (totalTokens !== undefined) { + span.setAttributes({ + [genAiAttributes.GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens, + }); + } +} + +/** + * Set common response attributes + * @param span - The span to add attributes to + * @param id - The response id + * @param model - The response model + * @param timestamp - The response timestamp + */ +function setCommonResponseAttributes(span, id, model, timestamp) { + span.setAttributes({ + [genAiAttributes.OPENAI_RESPONSE_ID_ATTRIBUTE]: id, + [genAiAttributes.GEN_AI_RESPONSE_ID_ATTRIBUTE]: id, + }); + span.setAttributes({ + [genAiAttributes.OPENAI_RESPONSE_MODEL_ATTRIBUTE]: model, + [genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: model, + }); + span.setAttributes({ + [genAiAttributes.OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(timestamp * 1000).toISOString(), + }); +} + +/** + * Extract conversation ID from request parameters + * Supports both Conversations API and previous_response_id chaining + * @see https://platform.openai.com/docs/guides/conversation-state + */ +function extractConversationId(params) { + // Conversations API: conversation parameter (e.g., "conv_...") + if ('conversation' in params && typeof params.conversation === 'string') { + return params.conversation; + } + // Responses chaining: previous_response_id links to parent response + if ('previous_response_id' in params && typeof params.previous_response_id === 'string') { + return params.previous_response_id; + } + return undefined; +} + +/** + * Extract request parameters including model settings and conversation context + */ +function extractRequestParameters(params) { + const attributes = { + [genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE]: params.model ?? 'unknown', + }; + + if ('temperature' in params) attributes[genAiAttributes.GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature; + if ('top_p' in params) attributes[genAiAttributes.GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p; + if ('frequency_penalty' in params) attributes[genAiAttributes.GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty; + if ('presence_penalty' in params) attributes[genAiAttributes.GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = params.presence_penalty; + if ('stream' in params) attributes[genAiAttributes.GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream; + if ('encoding_format' in params) attributes[genAiAttributes.GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE] = params.encoding_format; + if ('dimensions' in params) attributes[genAiAttributes.GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE] = params.dimensions; + + // Capture conversation ID for linking messages across API calls + const conversationId = extractConversationId(params); + if (conversationId) { + attributes[genAiAttributes.GEN_AI_CONVERSATION_ID_ATTRIBUTE] = conversationId; + } + + return attributes; +} + +exports.addChatCompletionAttributes = addChatCompletionAttributes; +exports.addConversationAttributes = addConversationAttributes; +exports.addEmbeddingsAttributes = addEmbeddingsAttributes; +exports.addResponsesApiAttributes = addResponsesApiAttributes; +exports.buildMethodPath = buildMethodPath; +exports.extractRequestParameters = extractRequestParameters; +exports.getOperationName = getOperationName; +exports.getSpanOperation = getSpanOperation; +exports.isChatCompletionChunk = isChatCompletionChunk; +exports.isChatCompletionResponse = isChatCompletionResponse; +exports.isConversationResponse = isConversationResponse; +exports.isEmbeddingsResponse = isEmbeddingsResponse; +exports.isResponsesApiResponse = isResponsesApiResponse; +exports.isResponsesApiStreamEvent = isResponsesApiStreamEvent; +exports.setCommonResponseAttributes = setCommonResponseAttributes; +exports.setTokenUsageAttributes = setTokenUsageAttributes; +exports.shouldInstrument = shouldInstrument; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/utils.js.map new file mode 100644 index 0000000..a9a3965 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/openai/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/openai/utils.ts"],"sourcesContent":["import type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_CONVERSATION_ID_ATTRIBUTE,\n GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE,\n GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n OPENAI_OPERATIONS,\n OPENAI_RESPONSE_ID_ATTRIBUTE,\n OPENAI_RESPONSE_MODEL_ATTRIBUTE,\n OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { INSTRUMENTED_METHODS } from './constants';\nimport type {\n ChatCompletionChunk,\n InstrumentedMethod,\n OpenAiChatCompletionObject,\n OpenAIConversationObject,\n OpenAICreateEmbeddingsObject,\n OpenAIResponseObject,\n ResponseStreamingEvent,\n} from './types';\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 */\nexport function getOperationName(methodPath: string): string {\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 */\nexport function getSpanOperation(methodPath: string): string {\n return `gen_ai.${getOperationName(methodPath)}`;\n}\n\n/**\n * Check if a method path should be instrumented\n */\nexport function shouldInstrument(methodPath: string): methodPath is InstrumentedMethod {\n return INSTRUMENTED_METHODS.includes(methodPath as InstrumentedMethod);\n}\n\n/**\n * Build method path from current traversal\n */\nexport function buildMethodPath(currentPath: string, prop: string): string {\n return currentPath ? `${currentPath}.${prop}` : prop;\n}\n\n/**\n * Check if response is a Chat Completion object\n */\nexport function isChatCompletionResponse(response: unknown): response is OpenAiChatCompletionObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'chat.completion'\n );\n}\n\n/**\n * Check if response is a Responses API object\n */\nexport function isResponsesApiResponse(response: unknown): response is OpenAIResponseObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'response'\n );\n}\n\n/**\n * Check if response is an Embeddings API object\n */\nexport function isEmbeddingsResponse(response: unknown): response is OpenAICreateEmbeddingsObject {\n if (response === null || typeof response !== 'object' || !('object' in response)) {\n return false;\n }\n const responseObject = response as Record;\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 */\nexport function isConversationResponse(response: unknown): response is OpenAIConversationObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'conversation'\n );\n}\n\n/**\n * Check if streaming event is from the Responses API\n */\nexport function isResponsesApiStreamEvent(event: unknown): event is ResponseStreamingEvent {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'type' in event &&\n typeof (event as Record).type === 'string' &&\n ((event as Record).type as string).startsWith('response.')\n );\n}\n\n/**\n * Check if streaming event is a chat completion chunk\n */\nexport function isChatCompletionChunk(event: unknown): event is ChatCompletionChunk {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'object' in event &&\n (event as Record).object === 'chat.completion.chunk'\n );\n}\n\n/**\n * Add attributes for Chat Completion responses\n */\nexport function addChatCompletionAttributes(\n span: Span,\n response: OpenAiChatCompletionObject,\n recordOutputs?: boolean,\n): void {\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 is string => 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 */\nexport function addResponsesApiAttributes(span: Span, response: OpenAIResponseObject, recordOutputs?: boolean): void {\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 as OpenAIResponseObject & { output?: unknown[] };\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): unknown =>\n typeof item === 'object' && item !== null && (item as Record).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 */\nexport function addEmbeddingsAttributes(span: Span, response: OpenAICreateEmbeddingsObject): void {\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 */\nexport function addConversationAttributes(span: Span, response: OpenAIConversationObject): void {\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 */\nexport function setTokenUsageAttributes(\n span: Span,\n promptTokens?: number,\n completionTokens?: number,\n totalTokens?: number,\n): void {\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 */\nexport function setCommonResponseAttributes(span: Span, id: string, model: string, timestamp: number): void {\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: Record): string | undefined {\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 */\nexport function extractRequestParameters(params: Record): Record {\n const attributes: Record = {\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"],"names":["OPENAI_OPERATIONS","INSTRUMENTED_METHODS","GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE","GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","OPENAI_RESPONSE_MODEL_ATTRIBUTE","GEN_AI_RESPONSE_MODEL_ATTRIBUTE","OPENAI_RESPONSE_ID_ATTRIBUTE","GEN_AI_RESPONSE_ID_ATTRIBUTE","GEN_AI_CONVERSATION_ID_ATTRIBUTE","OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE","OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE","OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE","GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE","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"],"mappings":";;;;;AAoCA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,UAAU,EAAkB;AAC7D,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAC/C,IAAI,OAAOA,iCAAiB,CAAC,IAAI;AACjC,EAAE;AACF,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACxC,IAAI,OAAOA,iCAAiB,CAAC,IAAI;AACjC,EAAE;AACF,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AACzC,IAAI,OAAOA,iCAAiB,CAAC,UAAU;AACvC,EAAE;AACF,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC5C,IAAI,OAAOA,iCAAiB,CAAC,IAAI;AACjC,EAAE;AACF,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC,IAAK,SAAS;AACjD;;AAEA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,UAAU,EAAkB;AAC7D,EAAE,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,gBAAA,CAAA,UAAA,EAAA;AACA,EAAA,OAAAC,8BAAA,CAAA,QAAA,CAAA,UAAA,EAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,eAAA,CAAA,WAAA,EAAA,IAAA,EAAA;AACA,EAAA,OAAA,WAAA,GAAA,CAAA,EAAA,WAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA,GAAA,IAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,wBAAA,CAAA,QAAA,EAAA;AACA,EAAA;AACA,IAAA,QAAA,KAAA,IAAA;AACA,IAAA,OAAA,QAAA,KAAA,QAAA;AACA,IAAA,QAAA,IAAA,QAAA;AACA,IAAA,CAAA,QAAA,GAAA,MAAA,KAAA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAA,sBAAA,CAAA,QAAA,EAAA;AACA,EAAA;AACA,IAAA,QAAA,KAAA,IAAA;AACA,IAAA,OAAA,QAAA,KAAA,QAAA;AACA,IAAA,QAAA,IAAA,QAAA;AACA,IAAA,CAAA,QAAA,GAAA,MAAA,KAAA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAA,oBAAA,CAAA,QAAA,EAAA;AACA,EAAA,IAAA,QAAA,KAAA,IAAA,IAAA,OAAA,QAAA,KAAA,QAAA,IAAA,EAAA,QAAA,IAAA,QAAA,CAAA,EAAA;AACA,IAAA,OAAA,KAAA;AACA,EAAA;AACA,EAAA,MAAA,cAAA,GAAA,QAAA;AACA,EAAA;AACA,IAAA,cAAA,CAAA,MAAA,KAAA,MAAA;AACA,IAAA,OAAA,cAAA,CAAA,KAAA,KAAA,QAAA;AACA,IAAA,cAAA,CAAA,KAAA,CAAA,WAAA,EAAA,CAAA,QAAA,CAAA,WAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAA,sBAAA,CAAA,QAAA,EAAA;AACA,EAAA;AACA,IAAA,QAAA,KAAA,IAAA;AACA,IAAA,OAAA,QAAA,KAAA,QAAA;AACA,IAAA,QAAA,IAAA,QAAA;AACA,IAAA,CAAA,QAAA,GAAA,MAAA,KAAA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAA,yBAAA,CAAA,KAAA,EAAA;AACA,EAAA;AACA,IAAA,KAAA,KAAA,IAAA;AACA,IAAA,OAAA,KAAA,KAAA,QAAA;AACA,IAAA,MAAA,IAAA,KAAA;AACA,IAAA,OAAA,CAAA,KAAA,GAAA,IAAA,KAAA,QAAA;AACA,IAAA,CAAA,CAAA,KAAA,GAAA,IAAA,GAAA,UAAA,CAAA,WAAA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAA,qBAAA,CAAA,KAAA,EAAA;AACA,EAAA;AACA,IAAA,KAAA,KAAA,IAAA;AACA,IAAA,OAAA,KAAA,KAAA,QAAA;AACA,IAAA,QAAA,IAAA,KAAA;AACA,IAAA,CAAA,KAAA,GAAA,MAAA,KAAA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAA,2BAAA;AACA,EAAA,IAAA;AACA,EAAA,QAAA;AACA,EAAA,aAAA;AACA,EAAA;AACA,EAAA,2BAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,CAAA,KAAA,EAAA,QAAA,CAAA,OAAA,CAAA;AACA,EAAA,IAAA,QAAA,CAAA,KAAA,EAAA;AACA,IAAA,uBAAA;AACA,MAAA,IAAA;AACA,MAAA,QAAA,CAAA,KAAA,CAAA,aAAA;AACA,MAAA,QAAA,CAAA,KAAA,CAAA,iBAAA;AACA,MAAA,QAAA,CAAA,KAAA,CAAA,YAAA;AACA,KAAA;AACA,EAAA;AACA,EAAA,IAAA,KAAA,CAAA,OAAA,CAAA,QAAA,CAAA,OAAA,CAAA,EAAA;AACA,IAAA,MAAA,aAAA,GAAA,QAAA,CAAA;AACA,OAAA,GAAA,CAAA,MAAA,IAAA,MAAA,CAAA,aAAA;AACA,OAAA,MAAA,CAAA,CAAA,MAAA,KAAA,MAAA,KAAA,IAAA,CAAA;AACA,IAAA,IAAA,aAAA,CAAA,MAAA,GAAA,CAAA,EAAA;AACA,MAAA,IAAA,CAAA,aAAA,CAAA;AACA,QAAA,CAAAC,wDAAA,GAAA,IAAA,CAAA,SAAA,CAAA,aAAA,CAAA;AACA,OAAA,CAAA;AACA,IAAA;;AAEA;AACA,IAAA,IAAA,aAAA,EAAA;AACA,MAAA,MAAA,SAAA,GAAA,QAAA,CAAA;AACA,SAAA,GAAA,CAAA,MAAA,IAAA,MAAA,CAAA,OAAA,EAAA,UAAA;AACA,SAAA,MAAA,CAAA,KAAA,IAAA,KAAA,CAAA,OAAA,CAAA,KAAA,CAAA,IAAA,KAAA,CAAA,MAAA,GAAA,CAAA;AACA,SAAA,IAAA,EAAA;;AAEA,MAAA,IAAA,SAAA,CAAA,MAAA,GAAA,CAAA,EAAA;AACA,QAAA,IAAA,CAAA,aAAA,CAAA;AACA,UAAA,CAAAC,oDAAA,GAAA,IAAA,CAAA,SAAA,CAAA,SAAA,CAAA;AACA,SAAA,CAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,yBAAA,CAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA;AACA,EAAA,2BAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,CAAA,KAAA,EAAA,QAAA,CAAA,UAAA,CAAA;AACA,EAAA,IAAA,QAAA,CAAA,MAAA,EAAA;AACA,IAAA,IAAA,CAAA,aAAA,CAAA;AACA,MAAA,CAAAD,wDAAA,GAAA,IAAA,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,MAAA,CAAA,CAAA;AACA,KAAA,CAAA;AACA,EAAA;AACA,EAAA,IAAA,QAAA,CAAA,KAAA,EAAA;AACA,IAAA,uBAAA;AACA,MAAA,IAAA;AACA,MAAA,QAAA,CAAA,KAAA,CAAA,YAAA;AACA,MAAA,QAAA,CAAA,KAAA,CAAA,aAAA;AACA,MAAA,QAAA,CAAA,KAAA,CAAA,YAAA;AACA,KAAA;AACA,EAAA;;AAEA;AACA,EAAA,IAAA,aAAA,EAAA;AACA,IAAA,MAAA,kBAAA,GAAA,QAAA;AACA,IAAA,IAAA,KAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,IAAA,kBAAA,CAAA,MAAA,CAAA,MAAA,GAAA,CAAA,EAAA;AACA;AACA,MAAA,MAAA,aAAA,GAAA,kBAAA,CAAA,MAAA,CAAA,MAAA;AACA,QAAA,CAAA,IAAA;AACA,UAAA,OAAA,IAAA,KAAA,QAAA,IAAA,IAAA,KAAA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA,KAAA,eAAA;AACA,OAAA;;AAEA,MAAA,IAAA,aAAA,CAAA,MAAA,GAAA,CAAA,EAAA;AACA,QAAA,IAAA,CAAA,aAAA,CAAA;AACA,UAAA,CAAAC,oDAAA,GAAA,IAAA,CAAA,SAAA,CAAA,aAAA,CAAA;AACA,SAAA,CAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,uBAAA,CAAA,IAAA,EAAA,QAAA,EAAA;AACA,EAAA,IAAA,CAAA,aAAA,CAAA;AACA,IAAA,CAAAC,+CAAA,GAAA,QAAA,CAAA,KAAA;AACA,IAAA,CAAAC,+CAAA,GAAA,QAAA,CAAA,KAAA;AACA,GAAA,CAAA;;AAEA,EAAA,IAAA,QAAA,CAAA,KAAA,EAAA;AACA,IAAA,uBAAA,CAAA,IAAA,EAAA,QAAA,CAAA,KAAA,CAAA,aAAA,EAAA,SAAA,EAAA,QAAA,CAAA,KAAA,CAAA,YAAA,CAAA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAA,yBAAA,CAAA,IAAA,EAAA,QAAA,EAAA;AACA,EAAA,MAAA,EAAA,EAAA,EAAA,UAAA,EAAA,GAAA,QAAA;;AAEA,EAAA,IAAA,CAAA,aAAA,CAAA;AACA,IAAA,CAAAC,4CAAA,GAAA,EAAA;AACA,IAAA,CAAAC,4CAAA,GAAA,EAAA;AACA;AACA,IAAA,CAAAC,gDAAA,GAAA,EAAA;AACA,GAAA,CAAA;;AAEA,EAAA,IAAA,UAAA,EAAA;AACA,IAAA,IAAA,CAAA,aAAA,CAAA;AACA,MAAA,CAAAC,mDAAA,GAAA,IAAA,IAAA,CAAA,UAAA,GAAA,IAAA,CAAA,CAAA,WAAA,EAAA;AACA,KAAA,CAAA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAA,uBAAA;AACA,EAAA,IAAA;AACA,EAAA,YAAA;AACA,EAAA,gBAAA;AACA,EAAA,WAAA;AACA,EAAA;AACA,EAAA,IAAA,YAAA,KAAA,SAAA,EAAA;AACA,IAAA,IAAA,CAAA,aAAA,CAAA;AACA,MAAA,CAAAC,oDAAA,GAAA,YAAA;AACA,MAAA,CAAAC,mDAAA,GAAA,YAAA;AACA,KAAA,CAAA;AACA,EAAA;AACA,EAAA,IAAA,gBAAA,KAAA,SAAA,EAAA;AACA,IAAA,IAAA,CAAA,aAAA,CAAA;AACA,MAAA,CAAAC,wDAAA,GAAA,gBAAA;AACA,MAAA,CAAAC,oDAAA,GAAA,gBAAA;AACA,KAAA,CAAA;AACA,EAAA;AACA,EAAA,IAAA,WAAA,KAAA,SAAA,EAAA;AACA,IAAA,IAAA,CAAA,aAAA,CAAA;AACA,MAAA,CAAAC,mDAAA,GAAA,WAAA;AACA,KAAA,CAAA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAA,2BAAA,CAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,SAAA,EAAA;AACA,EAAA,IAAA,CAAA,aAAA,CAAA;AACA,IAAA,CAAAR,4CAAA,GAAA,EAAA;AACA,IAAA,CAAAC,4CAAA,GAAA,EAAA;AACA,GAAA,CAAA;AACA,EAAA,IAAA,CAAA,aAAA,CAAA;AACA,IAAA,CAAAH,+CAAA,GAAA,KAAA;AACA,IAAA,CAAAC,+CAAA,GAAA,KAAA;AACA,GAAA,CAAA;AACA,EAAA,IAAA,CAAA,aAAA,CAAA;AACA,IAAA,CAAAI,mDAAA,GAAA,IAAA,IAAA,CAAA,SAAA,GAAA,IAAA,CAAA,CAAA,WAAA,EAAA;AACA,GAAA,CAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAA,qBAAA,CAAA,MAAA,EAAA;AACA;AACA,EAAA,IAAA,cAAA,IAAA,MAAA,IAAA,OAAA,MAAA,CAAA,YAAA,KAAA,QAAA,EAAA;AACA,IAAA,OAAA,MAAA,CAAA,YAAA;AACA,EAAA;AACA;AACA,EAAA,IAAA,sBAAA,IAAA,MAAA,IAAA,OAAA,MAAA,CAAA,oBAAA,KAAA,QAAA,EAAA;AACA,IAAA,OAAA,MAAA,CAAA,oBAAA;AACA,EAAA;AACA,EAAA,OAAA,SAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,wBAAA,CAAA,MAAA,EAAA;AACA,EAAA,MAAA,UAAA,GAAA;AACA,IAAA,CAAAM,8CAAA,GAAA,MAAA,CAAA,KAAA,IAAA,SAAA;AACA,GAAA;;AAEA,EAAA,IAAA,aAAA,IAAA,MAAA,EAAA,UAAA,CAAAC,oDAAA,CAAA,GAAA,MAAA,CAAA,WAAA;AACA,EAAA,IAAA,OAAA,IAAA,MAAA,EAAA,UAAA,CAAAC,8CAAA,CAAA,GAAA,MAAA,CAAA,KAAA;AACA,EAAA,IAAA,mBAAA,IAAA,MAAA,EAAA,UAAA,CAAAC,0DAAA,CAAA,GAAA,MAAA,CAAA,iBAAA;AACA,EAAA,IAAA,kBAAA,IAAA,MAAA,EAAA,UAAA,CAAAC,yDAAA,CAAA,GAAA,MAAA,CAAA,gBAAA;AACA,EAAA,IAAA,QAAA,IAAA,MAAA,EAAA,UAAA,CAAAC,+CAAA,CAAA,GAAA,MAAA,CAAA,MAAA;AACA,EAAA,IAAA,iBAAA,IAAA,MAAA,EAAA,UAAA,CAAAC,wDAAA,CAAA,GAAA,MAAA,CAAA,eAAA;AACA,EAAA,IAAA,YAAA,IAAA,MAAA,EAAA,UAAA,CAAAC,mDAAA,CAAA,GAAA,MAAA,CAAA,UAAA;;AAEA;AACA,EAAA,MAAA,cAAA,GAAA,qBAAA,CAAA,MAAA,CAAA;AACA,EAAA,IAAA,cAAA,EAAA;AACA,IAAA,UAAA,CAAAd,gDAAA,CAAA,GAAA,cAAA;AACA,EAAA;;AAEA,EAAA,OAAA,UAAA;AACA;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sampling.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sampling.js new file mode 100644 index 0000000..e8cdfe3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sampling.js @@ -0,0 +1,101 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const debugLogger = require('../utils/debug-logger.js'); +const hasSpansEnabled = require('../utils/hasSpansEnabled.js'); +const parseSampleRate = require('../utils/parseSampleRate.js'); + +/** + * Makes a sampling decision for the given options. + * + * Called every time a root span is created. Only root spans which emerge with a `sampled` value of `true` will be + * sent to Sentry. + */ +function sampleSpan( + options, + samplingContext, + sampleRand, +) { + // nothing to do if span recording is not enabled + if (!hasSpansEnabled.hasSpansEnabled(options)) { + return [false]; + } + + let localSampleRateWasApplied = undefined; + + // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should + // work; prefer the hook if so + let sampleRate; + if (typeof options.tracesSampler === 'function') { + sampleRate = options.tracesSampler({ + ...samplingContext, + inheritOrSampleWith: fallbackSampleRate => { + // If we have an incoming parent sample rate, we'll just use that one. + // The sampling decision will be inherited because of the sample_rand that was generated when the trace reached the incoming boundaries of the SDK. + if (typeof samplingContext.parentSampleRate === 'number') { + return samplingContext.parentSampleRate; + } + + // Fallback if parent sample rate is not on the incoming trace (e.g. if there is no baggage) + // 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. + if (typeof samplingContext.parentSampled === 'boolean') { + return Number(samplingContext.parentSampled); + } + + return fallbackSampleRate; + }, + }); + localSampleRateWasApplied = true; + } else if (samplingContext.parentSampled !== undefined) { + sampleRate = samplingContext.parentSampled; + } else if (typeof options.tracesSampleRate !== 'undefined') { + sampleRate = options.tracesSampleRate; + localSampleRateWasApplied = true; + } + + // Since this is coming from the user (or from a function provided by the user), who knows what we might get. + // (The only valid values are booleans or numbers between 0 and 1.) + const parsedSampleRate = parseSampleRate.parseSampleRate(sampleRate); + + if (parsedSampleRate === undefined) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.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( + sampleRate, + )} of type ${JSON.stringify(typeof sampleRate)}.`, + ); + return [false]; + } + + // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped + if (!parsedSampleRate) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.log( + `[Tracing] Discarding transaction because ${ + typeof options.tracesSampler === 'function' + ? 'tracesSampler returned 0 or false' + : 'a negative sampling decision was inherited or tracesSampleRate is set to 0' + }`, + ); + return [false, parsedSampleRate, localSampleRateWasApplied]; + } + + // We always compare the sample rand for the current execution context against the chosen sample rate. + // Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value + const shouldSample = sampleRand < parsedSampleRate; + + // if we're not going to keep it, we're done + if (!shouldSample) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.log( + `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number( + sampleRate, + )})`, + ); + } + + return [shouldSample, parsedSampleRate, localSampleRateWasApplied]; +} + +exports.sampleSpan = sampleSpan; +//# sourceMappingURL=sampling.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sampling.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sampling.js.map new file mode 100644 index 0000000..9297bb1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sampling.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sampling.js","sources":["../../../src/tracing/sampling.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { CoreOptions } from '../types-hoist/options';\nimport type { SamplingContext } from '../types-hoist/samplingcontext';\nimport { debug } from '../utils/debug-logger';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\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 */\nexport function sampleSpan(\n options: Pick,\n samplingContext: SamplingContext,\n sampleRand: number,\n): [sampled: boolean, sampleRate?: number, localSampleRateWasApplied?: boolean] {\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"],"names":["hasSpansEnabled","parseSampleRate","DEBUG_BUILD","debug"],"mappings":";;;;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU;AAC1B,EAAE,OAAO;AACT,EAAE,eAAe;AACjB,EAAE,UAAU;AACZ,EAAgF;AAChF;AACA,EAAE,IAAI,CAACA,+BAAe,CAAC,OAAO,CAAC,EAAE;AACjC,IAAI,OAAO,CAAC,KAAK,CAAC;AAClB,EAAE;;AAEF,EAAE,IAAI,yBAAA,GAA4B,SAAS;;AAE3C;AACA;AACA,EAAE,IAAI,UAAU;AAChB,EAAE,IAAI,OAAO,OAAO,CAAC,aAAA,KAAkB,UAAU,EAAE;AACnD,IAAI,UAAA,GAAa,OAAO,CAAC,aAAa,CAAC;AACvC,MAAM,GAAG,eAAe;AACxB,MAAM,mBAAmB,EAAE,kBAAA,IAAsB;AACjD;AACA;AACA,QAAQ,IAAI,OAAO,eAAe,CAAC,gBAAA,KAAqB,QAAQ,EAAE;AAClE,UAAU,OAAO,eAAe,CAAC,gBAAgB;AACjD,QAAQ;;AAER;AACA;AACA,QAAQ,IAAI,OAAO,eAAe,CAAC,aAAA,KAAkB,SAAS,EAAE;AAChE,UAAU,OAAO,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC;AACtD,QAAQ;;AAER,QAAQ,OAAO,kBAAkB;AACjC,MAAM,CAAC;AACP,KAAK,CAAC;AACN,IAAI,yBAAA,GAA4B,IAAI;AACpC,EAAE,CAAA,MAAO,IAAI,eAAe,CAAC,aAAA,KAAkB,SAAS,EAAE;AAC1D,IAAI,UAAA,GAAa,eAAe,CAAC,aAAa;AAC9C,EAAE,CAAA,MAAO,IAAI,OAAO,OAAO,CAAC,gBAAA,KAAqB,WAAW,EAAE;AAC9D,IAAI,UAAA,GAAa,OAAO,CAAC,gBAAgB;AACzC,IAAI,yBAAA,GAA4B,IAAI;AACpC,EAAE;;AAEF;AACA;AACA,EAAE,MAAM,gBAAA,GAAmBC,+BAAe,CAAC,UAAU,CAAC;;AAEtD,EAAE,IAAI,gBAAA,KAAqB,SAAS,EAAE;AACtC,IAAIC,sBAAA;AACJ,MAAMC,iBAAK,CAAC,IAAI;AAChB,QAAQ,CAAC,8HAA8H,EAAE,IAAI,CAAC,SAAS;AACvJ,UAAU,UAAU;AACpB,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACzD,OAAO;AACP,IAAI,OAAO,CAAC,KAAK,CAAC;AAClB,EAAE;;AAEF;AACA,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzB,IAAID,sBAAA;AACJ,MAAMC,iBAAK,CAAC,GAAG;AACf,QAAQ,CAAC,yCAAyC;AAClD,UAAU,OAAO,OAAO,CAAC,aAAA,KAAkB;AAC3C,cAAc;AACd,cAAc;AACd,SAAS,CAAA;AACA,OAAA;AACA,IAAA,OAAA,CAAA,KAAA,EAAA,gBAAA,EAAA,yBAAA,CAAA;AACA,EAAA;;AAEA;AACA;AACA,EAAA,MAAA,YAAA,GAAA,UAAA,GAAA,gBAAA;;AAEA;AACA,EAAA,IAAA,CAAA,YAAA,EAAA;AACA,IAAAD,sBAAA;AACA,MAAAC,iBAAA,CAAA,GAAA;AACA,QAAA,CAAA,iGAAA,EAAA,MAAA;AACA,UAAA,UAAA;AACA,SAAA,CAAA,CAAA,CAAA;AACA,OAAA;AACA,EAAA;;AAEA,EAAA,OAAA,CAAA,YAAA,EAAA,gBAAA,EAAA,yBAAA,CAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentryNonRecordingSpan.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentryNonRecordingSpan.js new file mode 100644 index 0000000..0e0653e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentryNonRecordingSpan.js @@ -0,0 +1,85 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const propagationContext = require('../utils/propagationContext.js'); +const spanUtils = require('../utils/spanUtils.js'); + +/** + * A Sentry Span that is non-recording, meaning it will not be sent to Sentry. + */ +class SentryNonRecordingSpan { + + constructor(spanContext = {}) { + this._traceId = spanContext.traceId || propagationContext.generateTraceId(); + this._spanId = spanContext.spanId || propagationContext.generateSpanId(); + } + + /** @inheritdoc */ + spanContext() { + return { + spanId: this._spanId, + traceId: this._traceId, + traceFlags: spanUtils.TRACE_FLAG_NONE, + }; + } + + /** @inheritdoc */ + end(_timestamp) {} + + /** @inheritdoc */ + setAttribute(_key, _value) { + return this; + } + + /** @inheritdoc */ + setAttributes(_values) { + return this; + } + + /** @inheritdoc */ + setStatus(_status) { + return this; + } + + /** @inheritdoc */ + updateName(_name) { + return this; + } + + /** @inheritdoc */ + isRecording() { + return false; + } + + /** @inheritdoc */ + addEvent( + _name, + _attributesOrStartTime, + _startTime, + ) { + return this; + } + + /** @inheritDoc */ + addLink(_link) { + return this; + } + + /** @inheritDoc */ + addLinks(_links) { + return this; + } + + /** + * This should generally not be used, + * but we need it for being compliant with the OTEL Span interface. + * + * @hidden + * @internal + */ + recordException(_exception, _time) { + // noop + } +} + +exports.SentryNonRecordingSpan = SentryNonRecordingSpan; +//# sourceMappingURL=sentryNonRecordingSpan.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentryNonRecordingSpan.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentryNonRecordingSpan.js.map new file mode 100644 index 0000000..dae1082 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentryNonRecordingSpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sentryNonRecordingSpan.js","sources":["../../../src/tracing/sentryNonRecordingSpan.ts"],"sourcesContent":["import type {\n SentrySpanArguments,\n Span,\n SpanAttributes,\n SpanAttributeValue,\n SpanContextData,\n SpanTimeInput,\n} from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport { generateSpanId, generateTraceId } from '../utils/propagationContext';\nimport { TRACE_FLAG_NONE } from '../utils/spanUtils';\n\n/**\n * A Sentry Span that is non-recording, meaning it will not be sent to Sentry.\n */\nexport class SentryNonRecordingSpan implements Span {\n private _traceId: string;\n private _spanId: string;\n\n public constructor(spanContext: SentrySpanArguments = {}) {\n this._traceId = spanContext.traceId || generateTraceId();\n this._spanId = spanContext.spanId || generateSpanId();\n }\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n return {\n spanId: this._spanId,\n traceId: this._traceId,\n traceFlags: TRACE_FLAG_NONE,\n };\n }\n\n /** @inheritdoc */\n public end(_timestamp?: SpanTimeInput): void {}\n\n /** @inheritdoc */\n public setAttribute(_key: string, _value: SpanAttributeValue | undefined): this {\n return this;\n }\n\n /** @inheritdoc */\n public setAttributes(_values: SpanAttributes): this {\n return this;\n }\n\n /** @inheritdoc */\n public setStatus(_status: SpanStatus): this {\n return this;\n }\n\n /** @inheritdoc */\n public updateName(_name: string): this {\n return this;\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return false;\n }\n\n /** @inheritdoc */\n public addEvent(\n _name: string,\n _attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n _startTime?: SpanTimeInput,\n ): this {\n return this;\n }\n\n /** @inheritDoc */\n public addLink(_link: unknown): this {\n return this;\n }\n\n /** @inheritDoc */\n public addLinks(_links: unknown[]): this {\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 public recordException(_exception: unknown, _time?: number | undefined): void {\n // noop\n }\n}\n"],"names":["generateTraceId","generateSpanId","TRACE_FLAG_NONE"],"mappings":";;;;;AAYA;AACA;AACA;AACO,MAAM,wBAAuC;;AAIpD,GAAS,WAAW,CAAC,WAAW,GAAwB,EAAE,EAAE;AAC5D,IAAI,IAAI,CAAC,QAAA,GAAW,WAAW,CAAC,OAAA,IAAWA,kCAAe,EAAE;AAC5D,IAAI,IAAI,CAAC,OAAA,GAAU,WAAW,CAAC,MAAA,IAAUC,iCAAc,EAAE;AACzD,EAAE;;AAEF;AACA,GAAS,WAAW,GAAoB;AACxC,IAAI,OAAO;AACX,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ;AAC5B,MAAM,UAAU,EAAEC,yBAAe;AACjC,KAAK;AACL,EAAE;;AAEF;AACA,GAAS,GAAG,CAAC,UAAU,EAAwB,CAAC;;AAEhD;AACA,GAAS,YAAY,CAAC,IAAI,EAAU,MAAM,EAAwC;AAClF,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,aAAa,CAAC,OAAO,EAAwB;AACtD,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,SAAS,CAAC,OAAO,EAAoB;AAC9C,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,UAAU,CAAC,KAAK,EAAgB;AACzC,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,WAAW,GAAY;AAChC,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF;AACA,GAAS,QAAQ;AACjB,IAAI,KAAK;AACT,IAAI,sBAAsB;AAC1B,IAAI,UAAU;AACd,IAAU;AACV,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,OAAO,CAAC,KAAK,EAAiB;AACvC,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,QAAQ,CAAC,MAAM,EAAmB;AAC3C,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAS,eAAe,CAAC,UAAU,EAAW,KAAK,EAA6B;AAChF;AACA,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentrySpan.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentrySpan.js new file mode 100644 index 0000000..7e495f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentrySpan.js @@ -0,0 +1,402 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const debugBuild = require('../debug-build.js'); +const envelope = require('../envelope.js'); +const semanticAttributes = require('../semanticAttributes.js'); +const debugLogger = require('../utils/debug-logger.js'); +const propagationContext = require('../utils/propagationContext.js'); +const spanUtils = require('../utils/spanUtils.js'); +const time = require('../utils/time.js'); +const dynamicSamplingContext = require('./dynamicSamplingContext.js'); +const logSpans = require('./logSpans.js'); +const measurement = require('./measurement.js'); +const utils = require('./utils.js'); + +const MAX_SPAN_COUNT = 1000; + +/** + * Span contains all data about a span + */ +class SentrySpan { + + /** Epoch timestamp in seconds when the span started. */ + + /** Epoch timestamp in seconds when the span ended. */ + + /** Internal keeper of the status */ + + /** The timed events added to this span. */ + + /** if true, treat span as a standalone span (not part of a transaction) */ + + /** + * You should never call the constructor manually, always use `Sentry.startSpan()` + * or other span methods. + * @internal + * @hideconstructor + * @hidden + */ + constructor(spanContext = {}) { + this._traceId = spanContext.traceId || propagationContext.generateTraceId(); + this._spanId = spanContext.spanId || propagationContext.generateSpanId(); + this._startTime = spanContext.startTimestamp || time.timestampInSeconds(); + this._links = spanContext.links; + + this._attributes = {}; + this.setAttributes({ + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'manual', + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op, + ...spanContext.attributes, + }); + + this._name = spanContext.name; + + if (spanContext.parentSpanId) { + this._parentSpanId = spanContext.parentSpanId; + } + // We want to include booleans as well here + if ('sampled' in spanContext) { + this._sampled = spanContext.sampled; + } + if (spanContext.endTimestamp) { + this._endTime = spanContext.endTimestamp; + } + + this._events = []; + + this._isStandaloneSpan = spanContext.isStandalone; + + // If the span is already ended, ensure we finalize the span immediately + if (this._endTime) { + this._onSpanEnded(); + } + } + + /** @inheritDoc */ + addLink(link) { + if (this._links) { + this._links.push(link); + } else { + this._links = [link]; + } + return this; + } + + /** @inheritDoc */ + addLinks(links) { + if (this._links) { + this._links.push(...links); + } else { + this._links = links; + } + return this; + } + + /** + * This should generally not be used, + * but it is needed for being compliant with the OTEL Span interface. + * + * @hidden + * @internal + */ + recordException(_exception, _time) { + // noop + } + + /** @inheritdoc */ + spanContext() { + const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this; + return { + spanId, + traceId, + traceFlags: sampled ? spanUtils.TRACE_FLAG_SAMPLED : spanUtils.TRACE_FLAG_NONE, + }; + } + + /** @inheritdoc */ + setAttribute(key, value) { + if (value === undefined) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete this._attributes[key]; + } else { + this._attributes[key] = value; + } + + return this; + } + + /** @inheritdoc */ + setAttributes(attributes) { + Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key])); + return this; + } + + /** + * This should generally not be used, + * but we need it for browser tracing where we want to adjust the start time afterwards. + * USE THIS WITH CAUTION! + * + * @hidden + * @internal + */ + updateStartTime(timeInput) { + this._startTime = spanUtils.spanTimeInputToSeconds(timeInput); + } + + /** + * @inheritDoc + */ + setStatus(value) { + this._status = value; + return this; + } + + /** + * @inheritDoc + */ + updateName(name) { + this._name = name; + this.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'custom'); + return this; + } + + /** @inheritdoc */ + end(endTimestamp) { + // If already ended, skip + if (this._endTime) { + return; + } + + this._endTime = spanUtils.spanTimeInputToSeconds(endTimestamp); + logSpans.logSpanEnd(this); + + this._onSpanEnded(); + } + + /** + * Get JSON representation of this span. + * + * @hidden + * @internal This method is purely for internal purposes and should not be used outside + * of SDK code. If you need to get a JSON representation of a span, + * use `spanToJSON(span)` instead. + */ + getSpanJSON() { + return { + data: this._attributes, + description: this._name, + op: this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP], + parent_span_id: this._parentSpanId, + span_id: this._spanId, + start_timestamp: this._startTime, + status: spanUtils.getStatusMessage(this._status), + timestamp: this._endTime, + trace_id: this._traceId, + origin: this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] , + profile_id: this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_PROFILE_ID] , + exclusive_time: this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] , + measurements: measurement.timedEventsToMeasurements(this._events), + is_segment: (this._isStandaloneSpan && spanUtils.getRootSpan(this) === this) || undefined, + segment_id: this._isStandaloneSpan ? spanUtils.getRootSpan(this).spanContext().spanId : undefined, + links: spanUtils.convertSpanLinksForEnvelope(this._links), + }; + } + + /** @inheritdoc */ + isRecording() { + return !this._endTime && !!this._sampled; + } + + /** + * @inheritdoc + */ + addEvent( + name, + attributesOrStartTime, + startTime, + ) { + debugBuild.DEBUG_BUILD && debugLogger.debug.log('[Tracing] Adding an event to span:', name); + + const time$1 = isSpanTimeInput(attributesOrStartTime) ? attributesOrStartTime : startTime || time.timestampInSeconds(); + const attributes = isSpanTimeInput(attributesOrStartTime) ? {} : attributesOrStartTime || {}; + + const event = { + name, + time: spanUtils.spanTimeInputToSeconds(time$1), + attributes, + }; + + this._events.push(event); + + return this; + } + + /** + * This method should generally not be used, + * but for now we need a way to publicly check if the `_isStandaloneSpan` flag is set. + * USE THIS WITH CAUTION! + * @internal + * @hidden + * @experimental + */ + isStandaloneSpan() { + return !!this._isStandaloneSpan; + } + + /** Emit `spanEnd` when the span is ended. */ + _onSpanEnded() { + const client = currentScopes.getClient(); + if (client) { + client.emit('spanEnd', this); + } + + // A segment span is basically the root span of a local span tree. + // So for now, this is either what we previously refer to as the root span, + // or a standalone span. + const isSegmentSpan = this._isStandaloneSpan || this === spanUtils.getRootSpan(this); + + if (!isSegmentSpan) { + return; + } + + // if this is a standalone span, we send it immediately + if (this._isStandaloneSpan) { + if (this._sampled) { + sendSpanEnvelope(envelope.createSpanEnvelope([this], client)); + } else { + debugBuild.DEBUG_BUILD && + debugLogger.debug.log('[Tracing] Discarding standalone span because its trace was not chosen to be sampled.'); + if (client) { + client.recordDroppedEvent('sample_rate', 'span'); + } + } + return; + } + + const transactionEvent = this._convertSpanToTransaction(); + if (transactionEvent) { + const scope = utils.getCapturedScopesOnSpan(this).scope || currentScopes.getCurrentScope(); + scope.captureEvent(transactionEvent); + } + } + + /** + * Finish the transaction & prepare the event to send to Sentry. + */ + _convertSpanToTransaction() { + // We can only convert finished spans + if (!isFullFinishedSpan(spanUtils.spanToJSON(this))) { + return undefined; + } + + if (!this._name) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Transaction has no name, falling back to ``.'); + this._name = ''; + } + + const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = utils.getCapturedScopesOnSpan(this); + + const normalizedRequest = capturedSpanScope?.getScopeData().sdkProcessingMetadata?.normalizedRequest; + + if (this._sampled !== true) { + return undefined; + } + + // The transaction span itself as well as any potential standalone spans should be filtered out + const finishedSpans = spanUtils.getSpanDescendants(this).filter(span => span !== this && !isStandaloneSpan(span)); + + const spans = finishedSpans.map(span => spanUtils.spanToJSON(span)).filter(isFullFinishedSpan); + + const source = this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]; + + // remove internal root span attributes we don't need to send. + /* eslint-disable @typescript-eslint/no-dynamic-delete */ + delete this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]; + spans.forEach(span => { + delete span.data[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]; + }); + // eslint-enabled-next-line @typescript-eslint/no-dynamic-delete + + const transaction = { + contexts: { + trace: spanUtils.spanToTransactionTraceContext(this), + }, + spans: + // spans.sort() mutates the array, but `spans` is already a copy so we can safely do this here + // we do not use spans anymore after this point + spans.length > MAX_SPAN_COUNT + ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT) + : spans, + start_timestamp: this._startTime, + timestamp: this._endTime, + transaction: this._name, + type: 'transaction', + sdkProcessingMetadata: { + capturedSpanScope, + capturedSpanIsolationScope, + dynamicSamplingContext: dynamicSamplingContext.getDynamicSamplingContextFromSpan(this), + }, + request: normalizedRequest, + ...(source && { + transaction_info: { + source, + }, + }), + }; + + const measurements = measurement.timedEventsToMeasurements(this._events); + const hasMeasurements = measurements && Object.keys(measurements).length; + + if (hasMeasurements) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.log( + '[Measurements] Adding measurements to transaction event', + JSON.stringify(measurements, undefined, 2), + ); + transaction.measurements = measurements; + } + + return transaction; + } +} + +function isSpanTimeInput(value) { + return (value && typeof value === 'number') || value instanceof Date || Array.isArray(value); +} + +// We want to filter out any incomplete SpanJSON objects +function isFullFinishedSpan(input) { + return !!input.start_timestamp && !!input.timestamp && !!input.span_id && !!input.trace_id; +} + +/** `SentrySpan`s can be sent as a standalone span rather than belonging to a transaction */ +function isStandaloneSpan(span) { + return span instanceof SentrySpan && span.isStandaloneSpan(); +} + +/** + * Sends a `SpanEnvelope`. + * + * Note: If the envelope's spans are dropped, e.g. via `beforeSendSpan`, + * the envelope will not be sent either. + */ +function sendSpanEnvelope(envelope) { + const client = currentScopes.getClient(); + if (!client) { + return; + } + + const spanItems = envelope[1]; + if (!spanItems || spanItems.length === 0) { + client.recordDroppedEvent('before_send', 'span'); + return; + } + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + client.sendEnvelope(envelope); +} + +exports.SentrySpan = SentrySpan; +//# sourceMappingURL=sentrySpan.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentrySpan.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentrySpan.js.map new file mode 100644 index 0000000..6bb62b6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/sentrySpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sentrySpan.js","sources":["../../../src/tracing/sentrySpan.ts"],"sourcesContent":["import { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { createSpanEnvelope } from '../envelope';\nimport {\n SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME,\n SEMANTIC_ATTRIBUTE_PROFILE_ID,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { SpanEnvelope } from '../types-hoist/envelope';\nimport type { TransactionEvent } from '../types-hoist/event';\nimport type { SpanLink } from '../types-hoist/link';\nimport type {\n SentrySpanArguments,\n Span,\n SpanAttributes,\n SpanAttributeValue,\n SpanContextData,\n SpanJSON,\n SpanOrigin,\n SpanTimeInput,\n} from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport type { TimedEvent } from '../types-hoist/timedEvent';\nimport { debug } from '../utils/debug-logger';\nimport { generateSpanId, generateTraceId } from '../utils/propagationContext';\nimport {\n convertSpanLinksForEnvelope,\n getRootSpan,\n getSpanDescendants,\n getStatusMessage,\n spanTimeInputToSeconds,\n spanToJSON,\n spanToTransactionTraceContext,\n TRACE_FLAG_NONE,\n TRACE_FLAG_SAMPLED,\n} from '../utils/spanUtils';\nimport { timestampInSeconds } from '../utils/time';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanEnd } from './logSpans';\nimport { timedEventsToMeasurements } from './measurement';\nimport { getCapturedScopesOnSpan } from './utils';\n\nconst MAX_SPAN_COUNT = 1000;\n\n/**\n * Span contains all data about a span\n */\nexport class SentrySpan implements Span {\n protected _traceId: string;\n protected _spanId: string;\n protected _parentSpanId?: string | undefined;\n protected _sampled: boolean | undefined;\n protected _name?: string | undefined;\n protected _attributes: SpanAttributes;\n protected _links?: SpanLink[];\n /** Epoch timestamp in seconds when the span started. */\n protected _startTime: number;\n /** Epoch timestamp in seconds when the span ended. */\n protected _endTime?: number | undefined;\n /** Internal keeper of the status */\n protected _status?: SpanStatus;\n /** The timed events added to this span. */\n protected _events: TimedEvent[];\n\n /** if true, treat span as a standalone span (not part of a transaction) */\n private _isStandaloneSpan?: boolean;\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 public constructor(spanContext: SentrySpanArguments = {}) {\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 public addLink(link: SpanLink): this {\n if (this._links) {\n this._links.push(link);\n } else {\n this._links = [link];\n }\n return this;\n }\n\n /** @inheritDoc */\n public addLinks(links: SpanLink[]): this {\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 public recordException(_exception: unknown, _time?: number | undefined): void {\n // noop\n }\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\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 public setAttribute(key: string, value: SpanAttributeValue | undefined): this {\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 public setAttributes(attributes: SpanAttributes): this {\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 public updateStartTime(timeInput: SpanTimeInput): void {\n this._startTime = spanTimeInputToSeconds(timeInput);\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatus): this {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public updateName(name: string): this {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'custom');\n return this;\n }\n\n /** @inheritdoc */\n public end(endTimestamp?: SpanTimeInput): void {\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 public getSpanJSON(): SpanJSON {\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] as SpanOrigin | undefined,\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: this._attributes[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\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 public isRecording(): boolean {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * @inheritdoc\n */\n public addEvent(\n name: string,\n attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n startTime?: SpanTimeInput,\n ): this {\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: TimedEvent = {\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 public isStandaloneSpan(): boolean {\n return !!this._isStandaloneSpan;\n }\n\n /** Emit `spanEnd` when the span is ended. */\n private _onSpanEnded(): void {\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 private _convertSpanToTransaction(): TransactionEvent | undefined {\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: TransactionEvent = {\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: undefined | SpanAttributes | SpanTimeInput): value is SpanTimeInput {\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: Partial): input is SpanJSON {\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: Span): boolean {\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: SpanEnvelope): void {\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"],"names":["generateTraceId","generateSpanId","timestampInSeconds","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_OP","TRACE_FLAG_SAMPLED","TRACE_FLAG_NONE","spanTimeInputToSeconds","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","logSpanEnd","getStatusMessage","SEMANTIC_ATTRIBUTE_PROFILE_ID","SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME","timedEventsToMeasurements","getRootSpan","convertSpanLinksForEnvelope","DEBUG_BUILD","debug","time","getClient","createSpanEnvelope","getCapturedScopesOnSpan","getCurrentScope","spanToJSON","getSpanDescendants","SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME","spanToTransactionTraceContext","getDynamicSamplingContextFromSpan"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/spanstatus.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/spanstatus.js new file mode 100644 index 0000000..f4491b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/spanstatus.js @@ -0,0 +1,74 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const SPAN_STATUS_UNSET = 0; +const SPAN_STATUS_OK = 1; +const SPAN_STATUS_ERROR = 2; + +/** + * Converts a HTTP status code into a sentry status with a message. + * + * @param httpStatus The HTTP response status code. + * @returns The span status or internal_error. + */ +// https://develop.sentry.dev/sdk/event-payloads/span/ +function getSpanStatusFromHttpCode(httpStatus) { + if (httpStatus < 400 && httpStatus >= 100) { + return { code: SPAN_STATUS_OK }; + } + + if (httpStatus >= 400 && httpStatus < 500) { + switch (httpStatus) { + case 401: + return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' }; + case 403: + return { code: SPAN_STATUS_ERROR, message: 'permission_denied' }; + case 404: + return { code: SPAN_STATUS_ERROR, message: 'not_found' }; + case 409: + return { code: SPAN_STATUS_ERROR, message: 'already_exists' }; + case 413: + return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' }; + case 429: + return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' }; + case 499: + return { code: SPAN_STATUS_ERROR, message: 'cancelled' }; + default: + return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' }; + } + } + + if (httpStatus >= 500 && httpStatus < 600) { + switch (httpStatus) { + case 501: + return { code: SPAN_STATUS_ERROR, message: 'unimplemented' }; + case 503: + return { code: SPAN_STATUS_ERROR, message: 'unavailable' }; + case 504: + return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' }; + default: + return { code: SPAN_STATUS_ERROR, message: 'internal_error' }; + } + } + + return { code: SPAN_STATUS_ERROR, message: 'internal_error' }; +} + +/** + * Sets the Http status attributes on the current span based on the http code. + * Additionally, the span's status is updated, depending on the http code. + */ +function setHttpStatus(span, httpStatus) { + span.setAttribute('http.response.status_code', httpStatus); + + const spanStatus = getSpanStatusFromHttpCode(httpStatus); + if (spanStatus.message !== 'unknown_error') { + span.setStatus(spanStatus); + } +} + +exports.SPAN_STATUS_ERROR = SPAN_STATUS_ERROR; +exports.SPAN_STATUS_OK = SPAN_STATUS_OK; +exports.SPAN_STATUS_UNSET = SPAN_STATUS_UNSET; +exports.getSpanStatusFromHttpCode = getSpanStatusFromHttpCode; +exports.setHttpStatus = setHttpStatus; +//# sourceMappingURL=spanstatus.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/spanstatus.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/spanstatus.js.map new file mode 100644 index 0000000..3d052bf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/spanstatus.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spanstatus.js","sources":["../../../src/tracing/spanstatus.ts"],"sourcesContent":["import type { Span } from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\n\nexport const SPAN_STATUS_UNSET = 0;\nexport const SPAN_STATUS_OK = 1;\nexport const 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/\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatus {\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 */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\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"],"names":[],"mappings":";;AAGO,MAAM,iBAAA,GAAoB;AAC1B,MAAM,cAAA,GAAiB;AACvB,MAAM,iBAAA,GAAoB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,UAAU,EAAsB;AAC1E,EAAE,IAAI,UAAA,GAAa,OAAO,UAAA,IAAc,GAAG,EAAE;AAC7C,IAAI,OAAO,EAAE,IAAI,EAAE,gBAAgB;AACnC,EAAE;;AAEF,EAAE,IAAI,UAAA,IAAc,OAAO,UAAA,GAAa,GAAG,EAAE;AAC7C,IAAI,QAAQ,UAAU;AACtB,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAA,EAAmB;AACtE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAA,EAAqB;AACxE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAA,EAAa;AAChE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAA,EAAkB;AACrE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,qBAAA,EAAuB;AAC1E,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,oBAAA,EAAsB;AACzE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAA,EAAa;AAChE,MAAM;AACN,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAA,EAAoB;AACvE;AACA,EAAE;;AAEF,EAAE,IAAI,UAAA,IAAc,OAAO,UAAA,GAAa,GAAG,EAAE;AAC7C,IAAI,QAAQ,UAAU;AACtB,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAA,EAAiB;AACpE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAA,EAAe;AAClE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAA,EAAqB;AACxE,MAAM;AACN,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAA,EAAkB;AACrE;AACA,EAAE;;AAEF,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAA,EAAkB;AAC/D;;AAEA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,IAAI,EAAQ,UAAU,EAAgB;AACpE,EAAE,IAAI,CAAC,YAAY,CAAC,2BAA2B,EAAE,UAAU,CAAC;;AAE5D,EAAE,MAAM,UAAA,GAAa,yBAAyB,CAAC,UAAU,CAAC;AAC1D,EAAE,IAAI,UAAU,CAAC,OAAA,KAAY,eAAe,EAAE;AAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAC9B,EAAE;AACF;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/trace.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/trace.js new file mode 100644 index 0000000..99c5071 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/trace.js @@ -0,0 +1,535 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const index = require('../asyncContext/index.js'); +const carrier = require('../carrier.js'); +const currentScopes = require('../currentScopes.js'); +const debugBuild = require('../debug-build.js'); +const semanticAttributes = require('../semanticAttributes.js'); +const baggage = require('../utils/baggage.js'); +const debugLogger = require('../utils/debug-logger.js'); +const handleCallbackErrors = require('../utils/handleCallbackErrors.js'); +const hasSpansEnabled = require('../utils/hasSpansEnabled.js'); +const parseSampleRate = require('../utils/parseSampleRate.js'); +const propagationContext = require('../utils/propagationContext.js'); +const randomSafeContext = require('../utils/randomSafeContext.js'); +const spanOnScope = require('../utils/spanOnScope.js'); +const spanUtils = require('../utils/spanUtils.js'); +const tracing = require('../utils/tracing.js'); +const dynamicSamplingContext = require('./dynamicSamplingContext.js'); +const logSpans = require('./logSpans.js'); +const sampling = require('./sampling.js'); +const sentryNonRecordingSpan = require('./sentryNonRecordingSpan.js'); +const sentrySpan = require('./sentrySpan.js'); +const spanstatus = require('./spanstatus.js'); +const utils = require('./utils.js'); + +/* eslint-disable max-lines */ + + +const SUPPRESS_TRACING_KEY = '__SENTRY_SUPPRESS_TRACING__'; + +/** + * Wraps a function with a transaction/span and finishes the span after the function is done. + * The created span is the active span and will be used as parent by other spans created inside the function + * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active. + * + * If you want to create a span that is not set as active, use {@link startInactiveSpan}. + * + * You'll always get a span passed to the callback, + * it may just be a non-recording span if the span is not sampled or if tracing is disabled. + */ +function startSpan(options, callback) { + const acs = getAcs(); + if (acs.startSpan) { + return acs.startSpan(options, callback); + } + + const spanArguments = parseSentrySpanArguments(options); + const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options; + + // We still need to fork a potentially passed scope, as we set the active span on it + // and we need to ensure that it is cleaned up properly once the span ends. + const customForkedScope = customScope?.clone(); + + return currentScopes.withScope(customForkedScope, () => { + // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan` + const wrapper = getActiveSpanWrapper(customParentSpan); + + return wrapper(() => { + const scope = currentScopes.getCurrentScope(); + const parentSpan = getParentSpan(scope, customParentSpan); + + const shouldSkipSpan = options.onlyIfParent && !parentSpan; + const activeSpan = shouldSkipSpan + ? new sentryNonRecordingSpan.SentryNonRecordingSpan() + : createChildOrRootSpan({ + parentSpan, + spanArguments, + forceTransaction, + scope, + }); + + spanOnScope._setSpanForScope(scope, activeSpan); + + return handleCallbackErrors.handleCallbackErrors( + () => callback(activeSpan), + () => { + // Only update the span status if it hasn't been changed yet, and the span is not yet finished + const { status } = spanUtils.spanToJSON(activeSpan); + if (activeSpan.isRecording() && (!status || status === 'ok')) { + activeSpan.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'internal_error' }); + } + }, + () => { + activeSpan.end(); + }, + ); + }); + }); +} + +/** + * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span + * after the function is done automatically. Use `span.end()` to end the span. + * + * The created span is the active span and will be used as parent by other spans created inside the function + * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active. + * + * You'll always get a span passed to the callback, + * it may just be a non-recording span if the span is not sampled or if tracing is disabled. + */ +function startSpanManual(options, callback) { + const acs = getAcs(); + if (acs.startSpanManual) { + return acs.startSpanManual(options, callback); + } + + const spanArguments = parseSentrySpanArguments(options); + const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options; + + const customForkedScope = customScope?.clone(); + + return currentScopes.withScope(customForkedScope, () => { + // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan` + const wrapper = getActiveSpanWrapper(customParentSpan); + + return wrapper(() => { + const scope = currentScopes.getCurrentScope(); + const parentSpan = getParentSpan(scope, customParentSpan); + + const shouldSkipSpan = options.onlyIfParent && !parentSpan; + const activeSpan = shouldSkipSpan + ? new sentryNonRecordingSpan.SentryNonRecordingSpan() + : createChildOrRootSpan({ + parentSpan, + spanArguments, + forceTransaction, + scope, + }); + + spanOnScope._setSpanForScope(scope, activeSpan); + + return handleCallbackErrors.handleCallbackErrors( + // We pass the `finish` function to the callback, so the user can finish the span manually + // this is mainly here for historic purposes because previously, we instructed users to call + // `finish` instead of `span.end()` to also clean up the scope. Nowadays, calling `span.end()` + // or `finish` has the same effect and we simply leave it here to avoid breaking user code. + () => callback(activeSpan, () => activeSpan.end()), + () => { + // Only update the span status if it hasn't been changed yet, and the span is not yet finished + const { status } = spanUtils.spanToJSON(activeSpan); + if (activeSpan.isRecording() && (!status || status === 'ok')) { + activeSpan.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: 'internal_error' }); + } + }, + ); + }); + }); +} + +/** + * Creates a span. This span is not set as active, so will not get automatic instrumentation spans + * as children or be able to be accessed via `Sentry.getActiveSpan()`. + * + * If you want to create a span that is set as active, use {@link startSpan}. + * + * This function will always return a span, + * it may just be a non-recording span if the span is not sampled or if tracing is disabled. + */ +function startInactiveSpan(options) { + const acs = getAcs(); + if (acs.startInactiveSpan) { + return acs.startInactiveSpan(options); + } + + const spanArguments = parseSentrySpanArguments(options); + const { forceTransaction, parentSpan: customParentSpan } = options; + + // If `options.scope` is defined, we use this as as a wrapper, + // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan` + const wrapper = options.scope + ? (callback) => currentScopes.withScope(options.scope, callback) + : customParentSpan !== undefined + ? (callback) => withActiveSpan(customParentSpan, callback) + : (callback) => callback(); + + return wrapper(() => { + const scope = currentScopes.getCurrentScope(); + const parentSpan = getParentSpan(scope, customParentSpan); + + const shouldSkipSpan = options.onlyIfParent && !parentSpan; + + if (shouldSkipSpan) { + return new sentryNonRecordingSpan.SentryNonRecordingSpan(); + } + + return createChildOrRootSpan({ + parentSpan, + spanArguments, + forceTransaction, + scope, + }); + }); +} + +/** + * Continue a trace from `sentry-trace` and `baggage` values. + * These values can be obtained from incoming request headers, or in the browser from `` + * and `` HTML tags. + * + * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically + * be attached to the incoming trace. + */ +const continueTrace = ( + options + +, + callback, +) => { + const carrier$1 = carrier.getMainCarrier(); + const acs = index.getAsyncContextStrategy(carrier$1); + if (acs.continueTrace) { + return acs.continueTrace(options, callback); + } + + const { sentryTrace, baggage: baggage$1 } = options; + + const client = currentScopes.getClient(); + const incomingDsc = baggage.baggageHeaderToDynamicSamplingContext(baggage$1); + if (client && !tracing.shouldContinueTrace(client, incomingDsc?.org_id)) { + return startNewTrace(callback); + } + + return currentScopes.withScope(scope => { + const propagationContext = tracing.propagationContextFromHeaders(sentryTrace, baggage$1); + scope.setPropagationContext(propagationContext); + spanOnScope._setSpanForScope(scope, undefined); + return callback(); + }); +}; + +/** + * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be + * passed `null` to start an entirely new span tree. + * + * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed, + * spans started within the callback will not be attached to a parent span. + * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope. + * @returns the value returned from the provided callback function. + */ +function withActiveSpan(span, callback) { + const acs = getAcs(); + if (acs.withActiveSpan) { + return acs.withActiveSpan(span, callback); + } + + return currentScopes.withScope(scope => { + spanOnScope._setSpanForScope(scope, span || undefined); + return callback(scope); + }); +} + +/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */ +function suppressTracing(callback) { + const acs = getAcs(); + + if (acs.suppressTracing) { + return acs.suppressTracing(callback); + } + + return currentScopes.withScope(scope => { + // Note: We do not wait for the callback to finish before we reset the metadata + // the reason for this is that otherwise, in the browser this can lead to very weird behavior + // as there is only a single top scope, if the callback takes longer to finish, + // other, unrelated spans may also be suppressed, which we do not want + // so instead, we only suppress tracing synchronoysly in the browser + scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: true }); + const res = callback(); + scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: undefined }); + return res; + }); +} + +/** + * Starts a new trace for the duration of the provided callback. Spans started within the + * callback will be part of the new trace instead of a potentially previously started trace. + * + * Important: Only use this function if you want to override the default trace lifetime and + * propagation mechanism of the SDK for the duration and scope of the provided callback. + * The newly created trace will also be the root of a new distributed trace, for example if + * you make http requests within the callback. + * This function might be useful if the operation you want to instrument should not be part + * of a potentially ongoing trace. + * + * Default behavior: + * - Server-side: A new trace is started for each incoming request. + * - Browser: A new trace is started for each page our route. Navigating to a new route + * or page will automatically create a new trace. + */ +function startNewTrace(callback) { + return currentScopes.withScope(scope => { + scope.setPropagationContext({ + traceId: propagationContext.generateTraceId(), + sampleRand: randomSafeContext.safeMathRandom(), + }); + debugBuild.DEBUG_BUILD && debugLogger.debug.log(`Starting a new trace with id ${scope.getPropagationContext().traceId}`); + return withActiveSpan(null, callback); + }); +} + +function createChildOrRootSpan({ + parentSpan, + spanArguments, + forceTransaction, + scope, +} + +) { + if (!hasSpansEnabled.hasSpansEnabled()) { + const span = new sentryNonRecordingSpan.SentryNonRecordingSpan(); + + // If this is a root span, we ensure to freeze a DSC + // So we can have at least partial data here + if (forceTransaction || !parentSpan) { + const dsc = { + sampled: 'false', + sample_rate: '0', + transaction: spanArguments.name, + ...dynamicSamplingContext.getDynamicSamplingContextFromSpan(span), + } ; + dynamicSamplingContext.freezeDscOnSpan(span, dsc); + } + + return span; + } + + const isolationScope = currentScopes.getIsolationScope(); + + let span; + if (parentSpan && !forceTransaction) { + span = _startChildSpan(parentSpan, scope, spanArguments); + spanUtils.addChildSpanToSpan(parentSpan, span); + } else if (parentSpan) { + // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope + const dsc = dynamicSamplingContext.getDynamicSamplingContextFromSpan(parentSpan); + const { traceId, spanId: parentSpanId } = parentSpan.spanContext(); + const parentSampled = spanUtils.spanIsSampled(parentSpan); + + span = _startRootSpan( + { + traceId, + parentSpanId, + ...spanArguments, + }, + scope, + parentSampled, + ); + + dynamicSamplingContext.freezeDscOnSpan(span, dsc); + } else { + const { + traceId, + dsc, + parentSpanId, + sampled: parentSampled, + } = { + ...isolationScope.getPropagationContext(), + ...scope.getPropagationContext(), + }; + + span = _startRootSpan( + { + traceId, + parentSpanId, + ...spanArguments, + }, + scope, + parentSampled, + ); + + if (dsc) { + dynamicSamplingContext.freezeDscOnSpan(span, dsc); + } + } + + logSpans.logSpanStart(span); + + utils.setCapturedScopesOnSpan(span, scope, isolationScope); + + return span; +} + +/** + * This converts StartSpanOptions to SentrySpanArguments. + * For the most part (for now) we accept the same options, + * but some of them need to be transformed. + */ +function parseSentrySpanArguments(options) { + const exp = options.experimental || {}; + const initialCtx = { + isStandalone: exp.standalone, + ...options, + }; + + if (options.startTime) { + const ctx = { ...initialCtx }; + ctx.startTimestamp = spanUtils.spanTimeInputToSeconds(options.startTime); + delete ctx.startTime; + return ctx; + } + + return initialCtx; +} + +function getAcs() { + const carrier$1 = carrier.getMainCarrier(); + return index.getAsyncContextStrategy(carrier$1); +} + +function _startRootSpan(spanArguments, scope, parentSampled) { + const client = currentScopes.getClient(); + const options = client?.getOptions() || {}; + + const { name = '' } = spanArguments; + + const mutableSpanSamplingData = { spanAttributes: { ...spanArguments.attributes }, spanName: name, parentSampled }; + + // we don't care about the decision for the moment; this is just a placeholder + client?.emit('beforeSampling', mutableSpanSamplingData, { decision: false }); + + // If hook consumers override the parentSampled flag, we will use that value instead of the actual one + const finalParentSampled = mutableSpanSamplingData.parentSampled ?? parentSampled; + const finalAttributes = mutableSpanSamplingData.spanAttributes; + + const currentPropagationContext = scope.getPropagationContext(); + const [sampled, sampleRate, localSampleRateWasApplied] = scope.getScopeData().sdkProcessingMetadata[ + SUPPRESS_TRACING_KEY + ] + ? [false] + : sampling.sampleSpan( + options, + { + name, + parentSampled: finalParentSampled, + attributes: finalAttributes, + parentSampleRate: parseSampleRate.parseSampleRate(currentPropagationContext.dsc?.sample_rate), + }, + currentPropagationContext.sampleRand, + ); + + const rootSpan = new sentrySpan.SentrySpan({ + ...spanArguments, + attributes: { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom', + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: + sampleRate !== undefined && localSampleRateWasApplied ? sampleRate : undefined, + ...finalAttributes, + }, + sampled, + }); + + if (!sampled && client) { + debugBuild.DEBUG_BUILD && debugLogger.debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.'); + client.recordDroppedEvent('sample_rate', 'transaction'); + } + + if (client) { + client.emit('spanStart', rootSpan); + } + + return rootSpan; +} + +/** + * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`. + * This inherits the sampling decision from the parent span. + */ +function _startChildSpan(parentSpan, scope, spanArguments) { + const { spanId, traceId } = parentSpan.spanContext(); + const sampled = scope.getScopeData().sdkProcessingMetadata[SUPPRESS_TRACING_KEY] ? false : spanUtils.spanIsSampled(parentSpan); + + const childSpan = sampled + ? new sentrySpan.SentrySpan({ + ...spanArguments, + parentSpanId: spanId, + traceId, + sampled, + }) + : new sentryNonRecordingSpan.SentryNonRecordingSpan({ traceId }); + + spanUtils.addChildSpanToSpan(parentSpan, childSpan); + + const client = currentScopes.getClient(); + if (client) { + client.emit('spanStart', childSpan); + // If it has an endTimestamp, it's already ended + if (spanArguments.endTimestamp) { + client.emit('spanEnd', childSpan); + } + } + + return childSpan; +} + +function getParentSpan(scope, customParentSpan) { + // always use the passed in span directly + if (customParentSpan) { + return customParentSpan ; + } + + // This is different from `undefined` as it means the user explicitly wants no parent span + if (customParentSpan === null) { + return undefined; + } + + const span = spanOnScope._getSpanForScope(scope) ; + + if (!span) { + return undefined; + } + + const client = currentScopes.getClient(); + const options = client ? client.getOptions() : {}; + if (options.parentSpanIsAlwaysRootSpan) { + return spanUtils.getRootSpan(span) ; + } + + return span; +} + +function getActiveSpanWrapper(parentSpan) { + return parentSpan !== undefined + ? (callback) => { + return withActiveSpan(parentSpan, callback); + } + : (callback) => callback(); +} + +exports.continueTrace = continueTrace; +exports.startInactiveSpan = startInactiveSpan; +exports.startNewTrace = startNewTrace; +exports.startSpan = startSpan; +exports.startSpanManual = startSpanManual; +exports.suppressTracing = suppressTracing; +exports.withActiveSpan = withActiveSpan; +//# sourceMappingURL=trace.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/trace.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/trace.js.map new file mode 100644 index 0000000..020cc05 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/trace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace.js","sources":["../../../src/tracing/trace.ts"],"sourcesContent":["/* eslint-disable max-lines */\n\nimport { getAsyncContextStrategy } from '../asyncContext';\nimport type { AsyncContextStrategy } from '../asyncContext/types';\nimport { getMainCarrier } from '../carrier';\nimport { getClient, getCurrentScope, getIsolationScope, withScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { SentrySpanArguments, Span, SpanTimeInput } from '../types-hoist/span';\nimport type { StartSpanOptions } from '../types-hoist/startSpanOptions';\nimport { baggageHeaderToDynamicSamplingContext } from '../utils/baggage';\nimport { debug } from '../utils/debug-logger';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\nimport { generateTraceId } from '../utils/propagationContext';\nimport { safeMathRandom } from '../utils/randomSafeContext';\nimport { _getSpanForScope, _setSpanForScope } from '../utils/spanOnScope';\nimport { addChildSpanToSpan, getRootSpan, spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport { propagationContextFromHeaders, shouldContinueTrace } from '../utils/tracing';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanStart } from './logSpans';\nimport { sampleSpan } from './sampling';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\nimport { setCapturedScopesOnSpan } from './utils';\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 */\nexport function startSpan(options: StartSpanOptions, callback: (span: Span) => T): T {\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 */\nexport function startSpanManual(options: StartSpanOptions, callback: (span: Span, finish: () => void) => T): T {\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 */\nexport function startInactiveSpan(options: StartSpanOptions): Span {\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: () => Span) => withScope(options.scope, callback)\n : customParentSpan !== undefined\n ? (callback: () => Span) => withActiveSpan(customParentSpan, callback)\n : (callback: () => Span) => 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 */\nexport const continueTrace = (\n options: {\n sentryTrace: Parameters[0];\n baggage: Parameters[1];\n },\n callback: () => V,\n): V => {\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 */\nexport function withActiveSpan(span: Span | null, callback: (scope: Scope) => T): T {\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. */\nexport function suppressTracing(callback: () => T): T {\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 */\nexport function startNewTrace(callback: () => T): T {\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 parentSpan: SentrySpan | undefined;\n spanArguments: SentrySpanArguments;\n forceTransaction?: boolean;\n scope: Scope;\n}): Span {\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 } satisfies Partial;\n freezeDscOnSpan(span, dsc);\n }\n\n return span;\n }\n\n const isolationScope = getIsolationScope();\n\n let span: 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: StartSpanOptions): SentrySpanArguments {\n const exp = options.experimental || {};\n const initialCtx: SentrySpanArguments = {\n isStandalone: exp.standalone,\n ...options,\n };\n\n if (options.startTime) {\n const ctx: SentrySpanArguments & { startTime?: SpanTimeInput } = { ...initialCtx };\n ctx.startTimestamp = spanTimeInputToSeconds(options.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return initialCtx;\n}\n\nfunction getAcs(): AsyncContextStrategy {\n const carrier = getMainCarrier();\n return getAsyncContextStrategy(carrier);\n}\n\nfunction _startRootSpan(spanArguments: SentrySpanArguments, scope: Scope, parentSampled?: boolean): SentrySpan {\n const client = getClient();\n const options: Partial = 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: Span, scope: Scope, spanArguments: SentrySpanArguments): Span {\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: Scope, customParentSpan: Span | null | undefined): SentrySpan | undefined {\n // always use the passed in span directly\n if (customParentSpan) {\n return customParentSpan as SentrySpan;\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) as SentrySpan | undefined;\n\n if (!span) {\n return undefined;\n }\n\n const client = getClient();\n const options: Partial = client ? client.getOptions() : {};\n if (options.parentSpanIsAlwaysRootSpan) {\n return getRootSpan(span) as SentrySpan;\n }\n\n return span;\n}\n\nfunction getActiveSpanWrapper(parentSpan: Span | undefined | null): (callback: () => T) => T {\n return parentSpan !== undefined\n ? (callback: () => T) => {\n return withActiveSpan(parentSpan, callback);\n }\n : (callback: () => T) => callback();\n}\n"],"names":["withScope","getCurrentScope","SentryNonRecordingSpan","_setSpanForScope","handleCallbackErrors","spanToJSON","SPAN_STATUS_ERROR","carrier","getMainCarrier","getAsyncContextStrategy","baggage","getClient","baggageHeaderToDynamicSamplingContext","shouldContinueTrace","propagationContextFromHeaders","generateTraceId","safeMathRandom","DEBUG_BUILD","debug","hasSpansEnabled","getDynamicSamplingContextFromSpan","freezeDscOnSpan","getIsolationScope","addChildSpanToSpan","spanIsSampled","logSpanStart","setCapturedScopesOnSpan","spanTimeInputToSeconds","sampleSpan","parseSampleRate","SentrySpan","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","_getSpanForScope","getRootSpan"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;AA+BA,MAAM,oBAAA,GAAuB,6BAA6B;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAI,OAAO,EAAoB,QAAQ,EAAwB;AACxF,EAAE,MAAM,GAAA,GAAM,MAAM,EAAE;AACtB,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE;AACrB,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC3C,EAAE;;AAEF,EAAE,MAAM,aAAA,GAAgB,wBAAwB,CAAC,OAAO,CAAC;AACzD,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAA,EAAY,GAAI,OAAO;;AAExF;AACA;AACA,EAAE,MAAM,iBAAA,GAAoB,WAAW,EAAE,KAAK,EAAE;;AAEhD,EAAE,OAAOA,uBAAS,CAAC,iBAAiB,EAAE,MAAM;AAC5C;AACA,IAAI,MAAM,OAAA,GAAU,oBAAoB,CAAI,gBAAgB,CAAC;;AAE7D,IAAI,OAAO,OAAO,CAAC,MAAM;AACzB,MAAM,MAAM,KAAA,GAAQC,6BAAe,EAAE;AACrC,MAAM,MAAM,aAAa,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC;;AAE/D,MAAM,MAAM,iBAAiB,OAAO,CAAC,YAAA,IAAgB,CAAC,UAAU;AAChE,MAAM,MAAM,aAAa;AACzB,UAAU,IAAIC,6CAAsB;AACpC,UAAU,qBAAqB,CAAC;AAChC,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,gBAAgB;AAC5B,YAAY,KAAK;AACjB,WAAW,CAAC;;AAEZ,MAAMC,4BAAgB,CAAC,KAAK,EAAE,UAAU,CAAC;;AAEzC,MAAM,OAAOC,yCAAoB;AACjC,QAAQ,MAAM,QAAQ,CAAC,UAAU,CAAC;AAClC,QAAQ,MAAM;AACd;AACA,UAAU,MAAM,EAAE,MAAA,EAAO,GAAIC,oBAAU,CAAC,UAAU,CAAC;AACnD,UAAU,IAAI,UAAU,CAAC,WAAW,EAAC,KAAM,CAAC,UAAU,MAAA,KAAW,IAAI,CAAC,EAAE;AACxE,YAAY,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAEC,4BAAiB,EAAE,OAAO,EAAE,gBAAA,EAAkB,CAAC;AACxF,UAAU;AACV,QAAQ,CAAC;AACT,QAAQ,MAAM;AACd,UAAU,UAAU,CAAC,GAAG,EAAE;AAC1B,QAAQ,CAAC;AACT,OAAO;AACP,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAI,OAAO,EAAoB,QAAQ,EAA4C;AAClH,EAAE,MAAM,GAAA,GAAM,MAAM,EAAE;AACtB,EAAE,IAAI,GAAG,CAAC,eAAe,EAAE;AAC3B,IAAI,OAAO,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;AACjD,EAAE;;AAEF,EAAE,MAAM,aAAA,GAAgB,wBAAwB,CAAC,OAAO,CAAC;AACzD,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAA,EAAY,GAAI,OAAO;;AAExF,EAAE,MAAM,iBAAA,GAAoB,WAAW,EAAE,KAAK,EAAE;;AAEhD,EAAE,OAAON,uBAAS,CAAC,iBAAiB,EAAE,MAAM;AAC5C;AACA,IAAI,MAAM,OAAA,GAAU,oBAAoB,CAAI,gBAAgB,CAAC;;AAE7D,IAAI,OAAO,OAAO,CAAC,MAAM;AACzB,MAAM,MAAM,KAAA,GAAQC,6BAAe,EAAE;AACrC,MAAM,MAAM,aAAa,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC;;AAE/D,MAAM,MAAM,iBAAiB,OAAO,CAAC,YAAA,IAAgB,CAAC,UAAU;AAChE,MAAM,MAAM,aAAa;AACzB,UAAU,IAAIC,6CAAsB;AACpC,UAAU,qBAAqB,CAAC;AAChC,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,YAAY,gBAAgB;AAC5B,YAAY,KAAK;AACjB,WAAW,CAAC;;AAEZ,MAAMC,4BAAgB,CAAC,KAAK,EAAE,UAAU,CAAC;;AAEzC,MAAM,OAAOC,yCAAoB;AACjC;AACA;AACA;AACA;AACA,QAAQ,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC;AAC1D,QAAQ,MAAM;AACd;AACA,UAAU,MAAM,EAAE,MAAA,EAAO,GAAIC,oBAAU,CAAC,UAAU,CAAC;AACnD,UAAU,IAAI,UAAU,CAAC,WAAW,EAAC,KAAM,CAAC,UAAU,MAAA,KAAW,IAAI,CAAC,EAAE;AACxE,YAAY,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAEC,4BAAiB,EAAE,OAAO,EAAE,gBAAA,EAAkB,CAAC;AACxF,UAAU;AACV,QAAQ,CAAC;AACT,OAAO;AACP,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,OAAO,EAA0B;AACnE,EAAE,MAAM,GAAA,GAAM,MAAM,EAAE;AACtB,EAAE,IAAI,GAAG,CAAC,iBAAiB,EAAE;AAC7B,IAAI,OAAO,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACzC,EAAE;;AAEF,EAAE,MAAM,aAAA,GAAgB,wBAAwB,CAAC,OAAO,CAAC;AACzD,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAA,EAAiB,GAAI,OAAO;;AAEpE;AACA;AACA,EAAE,MAAM,OAAA,GAAU,OAAO,CAAC;AAC1B,MAAM,CAAC,QAAQ,KAAiBN,uBAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ;AACjE,MAAM,qBAAqB;AAC3B,QAAQ,CAAC,QAAQ,KAAiB,cAAc,CAAC,gBAAgB,EAAE,QAAQ;AAC3E,QAAQ,CAAC,QAAQ,KAAiB,QAAQ,EAAE;;AAE5C,EAAE,OAAO,OAAO,CAAC,MAAM;AACvB,IAAI,MAAM,KAAA,GAAQC,6BAAe,EAAE;AACnC,IAAI,MAAM,aAAa,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC;;AAE7D,IAAI,MAAM,iBAAiB,OAAO,CAAC,YAAA,IAAgB,CAAC,UAAU;;AAE9D,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,OAAO,IAAIC,6CAAsB,EAAE;AACzC,IAAI;;AAEJ,IAAI,OAAO,qBAAqB,CAAC;AACjC,MAAM,UAAU;AAChB,MAAM,aAAa;AACnB,MAAM,gBAAgB;AACtB,MAAM,KAAK;AACX,KAAK,CAAC;AACN,EAAE,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB;AAC7B,EAAE;;AAGA;AACF,EAAE,QAAQ;AACV,KAAQ;AACR,EAAE,MAAMK,SAAA,GAAUC,sBAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAMC,6BAAuB,CAACF,SAAO,CAAC;AAC9C,EAAE,IAAI,GAAG,CAAC,aAAa,EAAE;AACzB,IAAI,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC/C,EAAE;;AAEF,EAAE,MAAM,EAAE,WAAW,WAAEG,SAAA,EAAQ,GAAI,OAAO;;AAE1C,EAAE,MAAM,MAAA,GAASC,uBAAS,EAAE;AAC5B,EAAE,MAAM,WAAA,GAAcC,6CAAqC,CAACF,SAAO,CAAC;AACpE,EAAE,IAAI,MAAA,IAAU,CAACG,2BAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE;AACnE,IAAI,OAAO,aAAa,CAAC,QAAQ,CAAC;AAClC,EAAE;;AAEF,EAAE,OAAOb,uBAAS,CAAC,KAAA,IAAS;AAC5B,IAAI,MAAM,qBAAqBc,qCAA6B,CAAC,WAAW,EAAEJ,SAAO,CAAC;AAClF,IAAI,KAAK,CAAC,qBAAqB,CAAC,kBAAkB,CAAC;AACnD,IAAIP,4BAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;AACtC,IAAI,OAAO,QAAQ,EAAE;AACrB,EAAE,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAI,IAAI,EAAe,QAAQ,EAA0B;AACvF,EAAE,MAAM,GAAA,GAAM,MAAM,EAAE;AACtB,EAAE,IAAI,GAAG,CAAC,cAAc,EAAE;AAC1B,IAAI,OAAO,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC7C,EAAE;;AAEF,EAAE,OAAOH,uBAAS,CAAC,KAAA,IAAS;AAC5B,IAAIG,4BAAgB,CAAC,KAAK,EAAE,IAAA,IAAQ,SAAS,CAAC;AAC9C,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC;AAC1B,EAAE,CAAC,CAAC;AACJ;;AAEA;AACO,SAAS,eAAe,CAAI,QAAQ,EAAc;AACzD,EAAE,MAAM,GAAA,GAAM,MAAM,EAAE;;AAEtB,EAAE,IAAI,GAAG,CAAC,eAAe,EAAE;AAC3B,IAAI,OAAO,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC;AACxC,EAAE;;AAEF,EAAE,OAAOH,uBAAS,CAAC,KAAA,IAAS;AAC5B;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,oBAAoB,GAAG,IAAA,EAAM,CAAC;AACpE,IAAI,MAAM,GAAA,GAAM,QAAQ,EAAE;AAC1B,IAAI,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,oBAAoB,GAAG,SAAA,EAAW,CAAC;AACzE,IAAI,OAAO,GAAG;AACd,EAAE,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAI,QAAQ,EAAc;AACvD,EAAE,OAAOA,uBAAS,CAAC,KAAA,IAAS;AAC5B,IAAI,KAAK,CAAC,qBAAqB,CAAC;AAChC,MAAM,OAAO,EAAEe,kCAAe,EAAE;AAChC,MAAM,UAAU,EAAEC,gCAAc,EAAE;AAClC,KAAK,CAAC;AACN,IAAIC,0BAAeC,iBAAK,CAAC,GAAG,CAAC,CAAC,6BAA6B,EAAE,KAAK,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAA,CAAA;AACA,IAAA,OAAA,cAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AACA,EAAA,CAAA,CAAA;AACA;;AAEA,SAAA,qBAAA,CAAA;AACA,EAAA,UAAA;AACA,EAAA,aAAA;AACA,EAAA,gBAAA;AACA,EAAA,KAAA;AACA;;AAKA,EAAA;AACA,EAAA,IAAA,CAAAC,+BAAA,EAAA,EAAA;AACA,IAAA,MAAA,IAAA,GAAA,IAAAjB,6CAAA,EAAA;;AAEA;AACA;AACA,IAAA,IAAA,gBAAA,IAAA,CAAA,UAAA,EAAA;AACA,MAAA,MAAA,GAAA,GAAA;AACA,QAAA,OAAA,EAAA,OAAA;AACA,QAAA,WAAA,EAAA,GAAA;AACA,QAAA,WAAA,EAAA,aAAA,CAAA,IAAA;AACA,QAAA,GAAAkB,wDAAA,CAAA,IAAA,CAAA;AACA,OAAA;AACA,MAAAC,sCAAA,CAAA,IAAA,EAAA,GAAA,CAAA;AACA,IAAA;;AAEA,IAAA,OAAA,IAAA;AACA,EAAA;;AAEA,EAAA,MAAA,cAAA,GAAAC,+BAAA,EAAA;;AAEA,EAAA,IAAA,IAAA;AACA,EAAA,IAAA,UAAA,IAAA,CAAA,gBAAA,EAAA;AACA,IAAA,IAAA,GAAA,eAAA,CAAA,UAAA,EAAA,KAAA,EAAA,aAAA,CAAA;AACA,IAAAC,4BAAA,CAAA,UAAA,EAAA,IAAA,CAAA;AACA,EAAA,CAAA,MAAA,IAAA,UAAA,EAAA;AACA;AACA,IAAA,MAAA,GAAA,GAAAH,wDAAA,CAAA,UAAA,CAAA;AACA,IAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,GAAA,UAAA,CAAA,WAAA,EAAA;AACA,IAAA,MAAA,aAAA,GAAAI,uBAAA,CAAA,UAAA,CAAA;;AAEA,IAAA,IAAA,GAAA,cAAA;AACA,MAAA;AACA,QAAA,OAAA;AACA,QAAA,YAAA;AACA,QAAA,GAAA,aAAA;AACA,OAAA;AACA,MAAA,KAAA;AACA,MAAA,aAAA;AACA,KAAA;;AAEA,IAAAH,sCAAA,CAAA,IAAA,EAAA,GAAA,CAAA;AACA,EAAA,CAAA,MAAA;AACA,IAAA,MAAA;AACA,MAAA,OAAA;AACA,MAAA,GAAA;AACA,MAAA,YAAA;AACA,MAAA,OAAA,EAAA,aAAA;AACA,KAAA,GAAA;AACA,MAAA,GAAA,cAAA,CAAA,qBAAA,EAAA;AACA,MAAA,GAAA,KAAA,CAAA,qBAAA,EAAA;AACA,KAAA;;AAEA,IAAA,IAAA,GAAA,cAAA;AACA,MAAA;AACA,QAAA,OAAA;AACA,QAAA,YAAA;AACA,QAAA,GAAA,aAAA;AACA,OAAA;AACA,MAAA,KAAA;AACA,MAAA,aAAA;AACA,KAAA;;AAEA,IAAA,IAAA,GAAA,EAAA;AACA,MAAAA,sCAAA,CAAA,IAAA,EAAA,GAAA,CAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAAI,qBAAA,CAAA,IAAA,CAAA;;AAEA,EAAAC,6BAAA,CAAA,IAAA,EAAA,KAAA,EAAA,cAAA,CAAA;;AAEA,EAAA,OAAA,IAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAA,wBAAA,CAAA,OAAA,EAAA;AACA,EAAA,MAAA,GAAA,GAAA,OAAA,CAAA,YAAA,IAAA,EAAA;AACA,EAAA,MAAA,UAAA,GAAA;AACA,IAAA,YAAA,EAAA,GAAA,CAAA,UAAA;AACA,IAAA,GAAA,OAAA;AACA,GAAA;;AAEA,EAAA,IAAA,OAAA,CAAA,SAAA,EAAA;AACA,IAAA,MAAA,GAAA,GAAA,EAAA,GAAA,UAAA,EAAA;AACA,IAAA,GAAA,CAAA,cAAA,GAAAC,gCAAA,CAAA,OAAA,CAAA,SAAA,CAAA;AACA,IAAA,OAAA,GAAA,CAAA,SAAA;AACA,IAAA,OAAA,GAAA;AACA,EAAA;;AAEA,EAAA,OAAA,UAAA;AACA;;AAEA,SAAA,MAAA,GAAA;AACA,EAAA,MAAApB,SAAA,GAAAC,sBAAA,EAAA;AACA,EAAA,OAAAC,6BAAA,CAAAF,SAAA,CAAA;AACA;;AAEA,SAAA,cAAA,CAAA,aAAA,EAAA,KAAA,EAAA,aAAA,EAAA;AACA,EAAA,MAAA,MAAA,GAAAI,uBAAA,EAAA;AACA,EAAA,MAAA,OAAA,GAAA,MAAA,EAAA,UAAA,EAAA,IAAA,EAAA;;AAEA,EAAA,MAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,aAAA;;AAEA,EAAA,MAAA,uBAAA,GAAA,EAAA,cAAA,EAAA,EAAA,GAAA,aAAA,CAAA,UAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA;;AAEA;AACA,EAAA,MAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA;;AAEA;AACA,EAAA,MAAA,kBAAA,GAAA,uBAAA,CAAA,aAAA,IAAA,aAAA;AACA,EAAA,MAAA,eAAA,GAAA,uBAAA,CAAA,cAAA;;AAEA,EAAA,MAAA,yBAAA,GAAA,KAAA,CAAA,qBAAA,EAAA;AACA,EAAA,MAAA,CAAA,OAAA,EAAA,UAAA,EAAA,yBAAA,CAAA,GAAA,KAAA,CAAA,YAAA,EAAA,CAAA,qBAAA;AACA,IAAA;AACA;AACA,MAAA,CAAA,KAAA;AACA,MAAAiB,mBAAA;AACA,QAAA,OAAA;AACA,QAAA;AACA,UAAA,IAAA;AACA,UAAA,aAAA,EAAA,kBAAA;AACA,UAAA,UAAA,EAAA,eAAA;AACA,UAAA,gBAAA,EAAAC,+BAAA,CAAA,yBAAA,CAAA,GAAA,EAAA,WAAA,CAAA;AACA,SAAA;AACA,QAAA,yBAAA,CAAA,UAAA;AACA,OAAA;;AAEA,EAAA,MAAA,QAAA,GAAA,IAAAC,qBAAA,CAAA;AACA,IAAA,GAAA,aAAA;AACA,IAAA,UAAA,EAAA;AACA,MAAA,CAAAC,mDAAA,GAAA,QAAA;AACA,MAAA,CAAAC,wDAAA;AACA,QAAA,UAAA,KAAA,SAAA,IAAA,yBAAA,GAAA,UAAA,GAAA,SAAA;AACA,MAAA,GAAA,eAAA;AACA,KAAA;AACA,IAAA,OAAA;AACA,GAAA,CAAA;;AAEA,EAAA,IAAA,CAAA,OAAA,IAAA,MAAA,EAAA;AACA,IAAAf,sBAAA,IAAAC,iBAAA,CAAA,GAAA,CAAA,gFAAA,CAAA;AACA,IAAA,MAAA,CAAA,kBAAA,CAAA,aAAA,EAAA,aAAA,CAAA;AACA,EAAA;;AAEA,EAAA,IAAA,MAAA,EAAA;AACA,IAAA,MAAA,CAAA,IAAA,CAAA,WAAA,EAAA,QAAA,CAAA;AACA,EAAA;;AAEA,EAAA,OAAA,QAAA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAA,eAAA,CAAA,UAAA,EAAA,KAAA,EAAA,aAAA,EAAA;AACA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,GAAA,UAAA,CAAA,WAAA,EAAA;AACA,EAAA,MAAA,OAAA,GAAA,KAAA,CAAA,YAAA,EAAA,CAAA,qBAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,GAAAM,uBAAA,CAAA,UAAA,CAAA;;AAEA,EAAA,MAAA,SAAA,GAAA;AACA,MAAA,IAAAM,qBAAA,CAAA;AACA,QAAA,GAAA,aAAA;AACA,QAAA,YAAA,EAAA,MAAA;AACA,QAAA,OAAA;AACA,QAAA,OAAA;AACA,OAAA;AACA,MAAA,IAAA5B,6CAAA,CAAA,EAAA,OAAA,EAAA,CAAA;;AAEA,EAAAqB,4BAAA,CAAA,UAAA,EAAA,SAAA,CAAA;;AAEA,EAAA,MAAA,MAAA,GAAAZ,uBAAA,EAAA;AACA,EAAA,IAAA,MAAA,EAAA;AACA,IAAA,MAAA,CAAA,IAAA,CAAA,WAAA,EAAA,SAAA,CAAA;AACA;AACA,IAAA,IAAA,aAAA,CAAA,YAAA,EAAA;AACA,MAAA,MAAA,CAAA,IAAA,CAAA,SAAA,EAAA,SAAA,CAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,OAAA,SAAA;AACA;;AAEA,SAAA,aAAA,CAAA,KAAA,EAAA,gBAAA,EAAA;AACA;AACA,EAAA,IAAA,gBAAA,EAAA;AACA,IAAA,OAAA,gBAAA;AACA,EAAA;;AAEA;AACA,EAAA,IAAA,gBAAA,KAAA,IAAA,EAAA;AACA,IAAA,OAAA,SAAA;AACA,EAAA;;AAEA,EAAA,MAAA,IAAA,GAAAsB,4BAAA,CAAA,KAAA,CAAA;;AAEA,EAAA,IAAA,CAAA,IAAA,EAAA;AACA,IAAA,OAAA,SAAA;AACA,EAAA;;AAEA,EAAA,MAAA,MAAA,GAAAtB,uBAAA,EAAA;AACA,EAAA,MAAA,OAAA,GAAA,MAAA,GAAA,MAAA,CAAA,UAAA,EAAA,GAAA,EAAA;AACA,EAAA,IAAA,OAAA,CAAA,0BAAA,EAAA;AACA,IAAA,OAAAuB,qBAAA,CAAA,IAAA,CAAA;AACA,EAAA;;AAEA,EAAA,OAAA,IAAA;AACA;;AAEA,SAAA,oBAAA,CAAA,UAAA,EAAA;AACA,EAAA,OAAA,UAAA,KAAA;AACA,MAAA,CAAA,QAAA,KAAA;AACA,QAAA,OAAA,cAAA,CAAA,UAAA,EAAA,QAAA,CAAA;AACA,MAAA;AACA,MAAA,CAAA,QAAA,KAAA,QAAA,EAAA;AACA;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/utils.js new file mode 100644 index 0000000..fefbd41 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/utils.js @@ -0,0 +1,68 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const object = require('../utils/object.js'); +const worldwide = require('../utils/worldwide.js'); + +const SCOPE_ON_START_SPAN_FIELD = '_sentryScope'; +const ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope'; + +/** Wrap a scope with a WeakRef if available, falling back to a direct scope. */ +function wrapScopeWithWeakRef(scope) { + try { + // @ts-expect-error - WeakRef is not available in all environments + const WeakRefClass = worldwide.GLOBAL_OBJ.WeakRef; + if (typeof WeakRefClass === 'function') { + return new WeakRefClass(scope); + } + } catch { + // WeakRef not available or failed to create + // We'll fall back to a direct scope + } + + return scope; +} + +/** Try to unwrap a scope from a potential WeakRef wrapper. */ +function unwrapScopeFromWeakRef(scopeRef) { + if (!scopeRef) { + return undefined; + } + + if (typeof scopeRef === 'object' && 'deref' in scopeRef && typeof scopeRef.deref === 'function') { + try { + return scopeRef.deref(); + } catch { + return undefined; + } + } + + // Fallback to a direct scope + return scopeRef ; +} + +/** Store the scope & isolation scope for a span, which can the be used when it is finished. */ +function setCapturedScopesOnSpan(span, scope, isolationScope) { + if (span) { + object.addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, wrapScopeWithWeakRef(isolationScope)); + // We don't wrap the scope with a WeakRef here because webkit aggressively garbage collects + // and scopes are not held in memory for long periods of time. + object.addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope); + } +} + +/** + * Grabs the scope and isolation scope off a span that were active when the span was started. + * If WeakRef was used and scopes have been garbage collected, returns undefined for those scopes. + */ +function getCapturedScopesOnSpan(span) { + const spanWithScopes = span ; + + return { + scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD], + isolationScope: unwrapScopeFromWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD]), + }; +} + +exports.getCapturedScopesOnSpan = getCapturedScopesOnSpan; +exports.setCapturedScopesOnSpan = setCapturedScopesOnSpan; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/utils.js.map new file mode 100644 index 0000000..589c50d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../src/tracing/utils.ts"],"sourcesContent":["import type { Scope } from '../scope';\nimport type { Span } from '../types-hoist/span';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype ScopeWeakRef = { deref(): Scope | undefined } | Scope;\n\ntype SpanWithScopes = Span & {\n [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: ScopeWeakRef;\n};\n\n/** Wrap a scope with a WeakRef if available, falling back to a direct scope. */\nfunction wrapScopeWithWeakRef(scope: Scope): ScopeWeakRef {\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: ScopeWeakRef | undefined): Scope | undefined {\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 as Scope;\n}\n\n/** Store the scope & isolation scope for a span, which can the be used when it is finished. */\nexport function setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\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 */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n const spanWithScopes = span as SpanWithScopes;\n\n return {\n scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: unwrapScopeFromWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD]),\n };\n}\n"],"names":["GLOBAL_OBJ","addNonEnumerableProperty"],"mappings":";;;;;AAKA,MAAM,yBAAA,GAA4B,cAAc;AAChD,MAAM,mCAAA,GAAsC,uBAAuB;;AASnE;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAuB;AAC1D,EAAE,IAAI;AACN;AACA,IAAI,MAAM,YAAA,GAAeA,oBAAU,CAAC,OAAO;AAC3C,IAAI,IAAI,OAAO,YAAA,KAAiB,UAAU,EAAE;AAC5C,MAAM,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC;AACpC,IAAI;AACJ,EAAE,EAAE,MAAM;AACV;AACA;AACA,EAAE;;AAEF,EAAE,OAAO,KAAK;AACd;;AAEA;AACA,SAAS,sBAAsB,CAAC,QAAQ,EAA+C;AACvF,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;;AAEF,EAAE,IAAI,OAAO,QAAA,KAAa,YAAY,OAAA,IAAW,QAAA,IAAY,OAAO,QAAQ,CAAC,KAAA,KAAU,UAAU,EAAE;AACnG,IAAI,IAAI;AACR,MAAM,OAAO,QAAQ,CAAC,KAAK,EAAE;AAC7B,IAAI,EAAE,MAAM;AACZ,MAAM,OAAO,SAAS;AACtB,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,OAAO,QAAA;AACT;;AAEA;AACO,SAAS,uBAAuB,CAAC,IAAI,EAAoB,KAAK,EAAS,cAAc,EAAe;AAC3G,EAAE,IAAI,IAAI,EAAE;AACZ,IAAIC,+BAAwB,CAAC,IAAI,EAAE,mCAAmC,EAAE,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC7G;AACA;AACA,IAAIA,+BAAwB,CAAC,IAAI,EAAE,yBAAyB,EAAE,KAAK,CAAC;AACpE,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,IAAI,EAAmD;AAC/F,EAAE,MAAM,cAAA,GAAiB,IAAA;;AAEzB,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,cAAc,CAAC,yBAAyB,CAAC;AACpD,IAAI,cAAc,EAAE,sBAAsB,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC;AAC/F,GAAG;AACH;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/constants.js new file mode 100644 index 0000000..29d1be7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/constants.js @@ -0,0 +1,30 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +// Global Map to track tool call IDs to their corresponding spans +// This allows us to capture tool errors and link them to the correct span +const toolCallSpanMap = new Map(); + +// Operation sets for efficient mapping to OpenTelemetry semantic convention values +const INVOKE_AGENT_OPS = new Set([ + 'ai.generateText', + 'ai.streamText', + 'ai.generateObject', + 'ai.streamObject', + 'ai.embed', + 'ai.embedMany', +]); + +const GENERATE_CONTENT_OPS = new Set([ + 'ai.generateText.doGenerate', + 'ai.streamText.doStream', + 'ai.generateObject.doGenerate', + 'ai.streamObject.doStream', +]); + +const EMBEDDINGS_OPS = new Set(['ai.embed.doEmbed', 'ai.embedMany.doEmbed']); + +exports.EMBEDDINGS_OPS = EMBEDDINGS_OPS; +exports.GENERATE_CONTENT_OPS = GENERATE_CONTENT_OPS; +exports.INVOKE_AGENT_OPS = INVOKE_AGENT_OPS; +exports.toolCallSpanMap = toolCallSpanMap; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/constants.js.map new file mode 100644 index 0000000..6d527d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/vercel-ai/constants.ts"],"sourcesContent":["import type { Span } from '../../types-hoist/span';\n\n// Global Map to track tool call IDs to their corresponding spans\n// This allows us to capture tool errors and link them to the correct span\nexport const toolCallSpanMap = new Map();\n\n// Operation sets for efficient mapping to OpenTelemetry semantic convention values\nexport const INVOKE_AGENT_OPS = new Set([\n 'ai.generateText',\n 'ai.streamText',\n 'ai.generateObject',\n 'ai.streamObject',\n 'ai.embed',\n 'ai.embedMany',\n]);\n\nexport const GENERATE_CONTENT_OPS = new Set([\n 'ai.generateText.doGenerate',\n 'ai.streamText.doStream',\n 'ai.generateObject.doGenerate',\n 'ai.streamObject.doStream',\n]);\n\nexport const EMBEDDINGS_OPS = new Set(['ai.embed.doEmbed', 'ai.embedMany.doEmbed']);\n"],"names":[],"mappings":";;AAEA;AACA;MACa,eAAA,GAAkB,IAAI,GAAG;;AAEtC;AACO,MAAM,gBAAA,GAAmB,IAAI,GAAG,CAAC;AACxC,EAAE,iBAAiB;AACnB,EAAE,eAAe;AACjB,EAAE,mBAAmB;AACrB,EAAE,iBAAiB;AACnB,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,CAAC;;AAEM,MAAM,oBAAA,GAAuB,IAAI,GAAG,CAAC;AAC5C,EAAE,4BAA4B;AAC9B,EAAE,wBAAwB;AAC1B,EAAE,8BAA8B;AAChC,EAAE,0BAA0B;AAC5B,CAAC;;AAEM,MAAM,cAAA,GAAiB,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/index.js new file mode 100644 index 0000000..ce7433a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/index.js @@ -0,0 +1,345 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const semanticAttributes = require('../../semanticAttributes.js'); +const spanUtils = require('../../utils/spanUtils.js'); +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const constants = require('./constants.js'); +const utils = require('./utils.js'); +const vercelAiAttributes = require('./vercel-ai-attributes.js'); + +function addOriginToSpan(span, origin) { + span.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin); +} + +/** + * Maps Vercel AI SDK operation names to OpenTelemetry semantic convention values + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +function mapVercelAiOperationName(operationName) { + // Top-level pipeline operations map to invoke_agent + if (constants.INVOKE_AGENT_OPS.has(operationName)) { + return 'invoke_agent'; + } + // .do* operations are the actual LLM calls + if (constants.GENERATE_CONTENT_OPS.has(operationName)) { + return 'generate_content'; + } + if (constants.EMBEDDINGS_OPS.has(operationName)) { + return 'embeddings'; + } + if (operationName === 'ai.toolCall') { + return 'execute_tool'; + } + // Return the original value for unknown operations + return operationName; +} + +/** + * Post-process spans emitted by the Vercel AI SDK. + * This is supposed to be used in `client.on('spanStart', ...) + */ +function onVercelAiSpanStart(span) { + const { data: attributes, description: name } = spanUtils.spanToJSON(span); + + if (!name) { + return; + } + + // Tool call spans + // https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + if (attributes[vercelAiAttributes.AI_TOOL_CALL_NAME_ATTRIBUTE] && attributes[vercelAiAttributes.AI_TOOL_CALL_ID_ATTRIBUTE] && name === 'ai.toolCall') { + processToolCallSpan(span, attributes); + return; + } + + // V6+ Check if this is a Vercel AI span by checking if the operation ID attribute is present. + // V5+ Check if this is a Vercel AI span by name pattern. + if (!attributes[vercelAiAttributes.AI_OPERATION_ID_ATTRIBUTE] && !name.startsWith('ai.')) { + return; + } + + processGenerateSpan(span, name, attributes); +} + +function vercelAiEventProcessor(event) { + if (event.type === 'transaction' && event.spans) { + // Map to accumulate token data by parent span ID + const tokenAccumulator = new Map(); + + // First pass: process all spans and accumulate token data + for (const span of event.spans) { + processEndedVercelAiSpan(span); + + // Accumulate token data for parent spans + utils.accumulateTokensForParent(span, tokenAccumulator); + } + + // Second pass: apply accumulated token data to parent spans + for (const span of event.spans) { + if (span.op !== 'gen_ai.invoke_agent') { + continue; + } + + utils.applyAccumulatedTokens(span, tokenAccumulator); + } + + // Also apply to root when it is the invoke_agent pipeline + const trace = event.contexts?.trace; + if (trace && trace.op === 'gen_ai.invoke_agent') { + utils.applyAccumulatedTokens(trace, tokenAccumulator); + } + } + + return event; +} +/** + * Post-process spans emitted by the Vercel AI SDK. + */ +function processEndedVercelAiSpan(span) { + const { data: attributes, origin } = span; + + if (origin !== 'auto.vercelai.otel') { + return; + } + + renameAttributeKey(attributes, vercelAiAttributes.AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE); + renameAttributeKey(attributes, vercelAiAttributes.AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE); + renameAttributeKey(attributes, vercelAiAttributes.AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE); + + // Input tokens is the sum of prompt tokens and cached input tokens + if ( + typeof attributes[genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number' && + typeof attributes[genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE] === 'number' + ) { + attributes[genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = + attributes[genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] + attributes[genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE]; + } + + if ( + typeof attributes[genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] === 'number' && + typeof attributes[genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number' + ) { + attributes[genAiAttributes.GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = + attributes[genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] + attributes[genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]; + } + + // Convert the available tools array to a JSON string + if (attributes[vercelAiAttributes.AI_PROMPT_TOOLS_ATTRIBUTE] && Array.isArray(attributes[vercelAiAttributes.AI_PROMPT_TOOLS_ATTRIBUTE])) { + attributes[vercelAiAttributes.AI_PROMPT_TOOLS_ATTRIBUTE] = utils.convertAvailableToolsToJsonString( + attributes[vercelAiAttributes.AI_PROMPT_TOOLS_ATTRIBUTE] , + ); + } + + // Rename AI SDK attributes to standardized gen_ai attributes + // Map operation.name to OpenTelemetry semantic convention values + if (attributes[vercelAiAttributes.OPERATION_NAME_ATTRIBUTE]) { + const operationName = mapVercelAiOperationName(attributes[vercelAiAttributes.OPERATION_NAME_ATTRIBUTE] ); + attributes[genAiAttributes.GEN_AI_OPERATION_NAME_ATTRIBUTE] = operationName; + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete attributes[vercelAiAttributes.OPERATION_NAME_ATTRIBUTE]; + } + renameAttributeKey(attributes, vercelAiAttributes.AI_PROMPT_MESSAGES_ATTRIBUTE, genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE); + renameAttributeKey(attributes, vercelAiAttributes.AI_RESPONSE_TEXT_ATTRIBUTE, 'gen_ai.response.text'); + renameAttributeKey(attributes, vercelAiAttributes.AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, 'gen_ai.response.tool_calls'); + renameAttributeKey(attributes, vercelAiAttributes.AI_RESPONSE_OBJECT_ATTRIBUTE, 'gen_ai.response.object'); + renameAttributeKey(attributes, vercelAiAttributes.AI_PROMPT_TOOLS_ATTRIBUTE, 'gen_ai.request.available_tools'); + + renameAttributeKey(attributes, vercelAiAttributes.AI_TOOL_CALL_ARGS_ATTRIBUTE, genAiAttributes.GEN_AI_TOOL_INPUT_ATTRIBUTE); + renameAttributeKey(attributes, vercelAiAttributes.AI_TOOL_CALL_RESULT_ATTRIBUTE, genAiAttributes.GEN_AI_TOOL_OUTPUT_ATTRIBUTE); + + renameAttributeKey(attributes, vercelAiAttributes.AI_SCHEMA_ATTRIBUTE, 'gen_ai.request.schema'); + renameAttributeKey(attributes, vercelAiAttributes.AI_MODEL_ID_ATTRIBUTE, genAiAttributes.GEN_AI_REQUEST_MODEL_ATTRIBUTE); + + addProviderMetadataToAttributes(attributes); + + // Change attributes namespaced with `ai.X` to `vercel.ai.X` + for (const key of Object.keys(attributes)) { + if (key.startsWith('ai.')) { + renameAttributeKey(attributes, key, `vercel.${key}`); + } + } +} + +/** + * Renames an attribute key in the provided attributes object if the old key exists. + * This function safely handles null and undefined values. + */ +function renameAttributeKey(attributes, oldKey, newKey) { + if (attributes[oldKey] != null) { + attributes[newKey] = attributes[oldKey]; + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete attributes[oldKey]; + } +} + +function processToolCallSpan(span, attributes) { + addOriginToSpan(span, 'auto.vercelai.otel'); + span.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP, 'gen_ai.execute_tool'); + span.setAttribute(genAiAttributes.GEN_AI_OPERATION_NAME_ATTRIBUTE, 'execute_tool'); + renameAttributeKey(attributes, vercelAiAttributes.AI_TOOL_CALL_NAME_ATTRIBUTE, genAiAttributes.GEN_AI_TOOL_NAME_ATTRIBUTE); + renameAttributeKey(attributes, vercelAiAttributes.AI_TOOL_CALL_ID_ATTRIBUTE, genAiAttributes.GEN_AI_TOOL_CALL_ID_ATTRIBUTE); + + // Store the span in our global map using the tool call ID + // This allows us to capture tool errors and link them to the correct span + const toolCallId = attributes[genAiAttributes.GEN_AI_TOOL_CALL_ID_ATTRIBUTE]; + + if (typeof toolCallId === 'string') { + constants.toolCallSpanMap.set(toolCallId, span); + } + + // https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-type + if (!attributes[genAiAttributes.GEN_AI_TOOL_TYPE_ATTRIBUTE]) { + span.setAttribute(genAiAttributes.GEN_AI_TOOL_TYPE_ATTRIBUTE, 'function'); + } + const toolName = attributes[genAiAttributes.GEN_AI_TOOL_NAME_ATTRIBUTE]; + if (toolName) { + span.updateName(`execute_tool ${toolName}`); + } +} + +function processGenerateSpan(span, name, attributes) { + addOriginToSpan(span, 'auto.vercelai.otel'); + + const nameWthoutAi = name.replace('ai.', ''); + span.setAttribute('ai.pipeline.name', nameWthoutAi); + span.updateName(nameWthoutAi); + + // If a telemetry name is set and the span represents a pipeline, use it as the operation name. + // This name can be set at the request level by adding `experimental_telemetry.functionId`. + const functionId = attributes[vercelAiAttributes.AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE]; + if (functionId && typeof functionId === 'string') { + span.updateName(`${nameWthoutAi} ${functionId}`); + span.setAttribute('gen_ai.function_id', functionId); + } + + utils.requestMessagesFromPrompt(span, attributes); + + if (attributes[vercelAiAttributes.AI_MODEL_ID_ATTRIBUTE] && !attributes[genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE]) { + span.setAttribute(genAiAttributes.GEN_AI_RESPONSE_MODEL_ATTRIBUTE, attributes[vercelAiAttributes.AI_MODEL_ID_ATTRIBUTE]); + } + span.setAttribute('ai.streaming', name.includes('stream')); + + // Set the op based on the span name + const op = utils.getSpanOpFromName(name); + if (op) { + span.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP, op); + } + + // Update span names for .do* spans to include the model ID (only if model ID exists) + const modelId = attributes[vercelAiAttributes.AI_MODEL_ID_ATTRIBUTE]; + if (modelId) { + switch (name) { + case 'ai.generateText.doGenerate': + span.updateName(`generate_text ${modelId}`); + break; + case 'ai.streamText.doStream': + span.updateName(`stream_text ${modelId}`); + break; + case 'ai.generateObject.doGenerate': + span.updateName(`generate_object ${modelId}`); + break; + case 'ai.streamObject.doStream': + span.updateName(`stream_object ${modelId}`); + break; + case 'ai.embed.doEmbed': + span.updateName(`embed ${modelId}`); + break; + case 'ai.embedMany.doEmbed': + span.updateName(`embed_many ${modelId}`); + break; + } + } +} + +/** + * Add event processors to the given client to process Vercel AI spans. + */ +function addVercelAiProcessors(client) { + client.on('spanStart', onVercelAiSpanStart); + // Note: We cannot do this on `spanEnd`, because the span cannot be mutated anymore at this point + client.addEventProcessor(Object.assign(vercelAiEventProcessor, { id: 'VercelAiEventProcessor' })); +} + +function addProviderMetadataToAttributes(attributes) { + const providerMetadata = attributes[vercelAiAttributes.AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE] ; + if (providerMetadata) { + try { + const providerMetadataObject = JSON.parse(providerMetadata) ; + + // Handle OpenAI metadata (v5 uses 'openai', v6 Azure Responses API uses 'azure') + const openaiMetadata = + providerMetadataObject.openai ?? providerMetadataObject.azure; + if (openaiMetadata) { + setAttributeIfDefined( + attributes, + genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, + openaiMetadata.cachedPromptTokens, + ); + setAttributeIfDefined(attributes, 'gen_ai.usage.output_tokens.reasoning', openaiMetadata.reasoningTokens); + setAttributeIfDefined( + attributes, + 'gen_ai.usage.output_tokens.prediction_accepted', + openaiMetadata.acceptedPredictionTokens, + ); + setAttributeIfDefined( + attributes, + 'gen_ai.usage.output_tokens.prediction_rejected', + openaiMetadata.rejectedPredictionTokens, + ); + setAttributeIfDefined(attributes, 'gen_ai.conversation.id', openaiMetadata.responseId); + } + + if (providerMetadataObject.anthropic) { + const cachedInputTokens = + providerMetadataObject.anthropic.usage?.cache_read_input_tokens ?? + providerMetadataObject.anthropic.cacheReadInputTokens; + setAttributeIfDefined(attributes, genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, cachedInputTokens); + + const cacheWriteInputTokens = + providerMetadataObject.anthropic.usage?.cache_creation_input_tokens ?? + providerMetadataObject.anthropic.cacheCreationInputTokens; + setAttributeIfDefined(attributes, genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, cacheWriteInputTokens); + } + + if (providerMetadataObject.bedrock?.usage) { + setAttributeIfDefined( + attributes, + genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, + providerMetadataObject.bedrock.usage.cacheReadInputTokens, + ); + setAttributeIfDefined( + attributes, + genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, + providerMetadataObject.bedrock.usage.cacheWriteInputTokens, + ); + } + + if (providerMetadataObject.deepseek) { + setAttributeIfDefined( + attributes, + genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, + providerMetadataObject.deepseek.promptCacheHitTokens, + ); + setAttributeIfDefined( + attributes, + 'gen_ai.usage.input_tokens.cache_miss', + providerMetadataObject.deepseek.promptCacheMissTokens, + ); + } + } catch { + // Ignore + } + } +} + +/** + * Sets an attribute only if the value is not null or undefined. + */ +function setAttributeIfDefined(attributes, key, value) { + if (value != null) { + attributes[key] = value; + } +} + +exports.addVercelAiProcessors = addVercelAiProcessors; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/index.js.map new file mode 100644 index 0000000..cdda335 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/vercel-ai/index.ts"],"sourcesContent":["import type { Client } from '../../client';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport type { Event } from '../../types-hoist/event';\nimport type { Span, SpanAttributes, SpanAttributeValue, SpanJSON, SpanOrigin } from '../../types-hoist/span';\nimport { spanToJSON } from '../../utils/spanUtils';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_TOOL_CALL_ID_ATTRIBUTE,\n GEN_AI_TOOL_INPUT_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_TOOL_OUTPUT_ATTRIBUTE,\n GEN_AI_TOOL_TYPE_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { EMBEDDINGS_OPS, GENERATE_CONTENT_OPS, INVOKE_AGENT_OPS, toolCallSpanMap } from './constants';\nimport type { TokenSummary } from './types';\nimport {\n accumulateTokensForParent,\n applyAccumulatedTokens,\n convertAvailableToolsToJsonString,\n getSpanOpFromName,\n requestMessagesFromPrompt,\n} from './utils';\nimport type { OpenAiProviderMetadata, ProviderMetadata } from './vercel-ai-attributes';\nimport {\n AI_MODEL_ID_ATTRIBUTE,\n AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT_MESSAGES_ATTRIBUTE,\n AI_PROMPT_TOOLS_ATTRIBUTE,\n AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE,\n AI_RESPONSE_TEXT_ATTRIBUTE,\n AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n AI_SCHEMA_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TOOL_CALL_ARGS_ATTRIBUTE,\n AI_TOOL_CALL_ID_ATTRIBUTE,\n AI_TOOL_CALL_NAME_ATTRIBUTE,\n AI_TOOL_CALL_RESULT_ATTRIBUTE,\n AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n OPERATION_NAME_ATTRIBUTE,\n} from './vercel-ai-attributes';\n\nfunction addOriginToSpan(span: Span, origin: SpanOrigin): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n}\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: string): string {\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 (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: Span): void {\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: Event): Event {\n if (event.type === 'transaction' && event.spans) {\n // Map to accumulate token data by parent span ID\n const tokenAccumulator: Map = 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 accumulated token data to parent spans\n for (const span of event.spans) {\n if (span.op !== 'gen_ai.invoke_agent') {\n continue;\n }\n\n applyAccumulatedTokens(span, tokenAccumulator);\n }\n\n // Also apply to root when it is the invoke_agent pipeline\n const trace = event.contexts?.trace;\n if (trace && trace.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(trace, tokenAccumulator);\n }\n }\n\n return event;\n}\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n */\nfunction processEndedVercelAiSpan(span: SpanJSON): void {\n const { data: attributes, origin } = span;\n\n if (origin !== 'auto.vercelai.otel') {\n return;\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 // 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 if (\n typeof attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] === 'number' &&\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number'\n ) {\n attributes[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] =\n attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] + 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] as unknown[],\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] as string);\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 renameAttributeKey(attributes, AI_RESPONSE_TEXT_ATTRIBUTE, 'gen_ai.response.text');\n renameAttributeKey(attributes, AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, 'gen_ai.response.tool_calls');\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 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: Record, oldKey: string, newKey: string): void {\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: Span, attributes: SpanAttributes): void {\n addOriginToSpan(span, '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 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 const toolCallId = attributes[GEN_AI_TOOL_CALL_ID_ATTRIBUTE];\n\n if (typeof toolCallId === 'string') {\n toolCallSpanMap.set(toolCallId, span);\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: Span, name: string, attributes: SpanAttributes): void {\n addOriginToSpan(span, 'auto.vercelai.otel');\n\n const nameWthoutAi = name.replace('ai.', '');\n span.setAttribute('ai.pipeline.name', nameWthoutAi);\n span.updateName(nameWthoutAi);\n\n // If a telemetry name is set and the span represents a pipeline, use it as the operation name.\n // This name can be set at the request level by adding `experimental_telemetry.functionId`.\n const functionId = attributes[AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE];\n if (functionId && typeof functionId === 'string') {\n span.updateName(`${nameWthoutAi} ${functionId}`);\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 // Update span names for .do* spans to include the model ID (only if model ID exists)\n const modelId = attributes[AI_MODEL_ID_ATTRIBUTE];\n if (modelId) {\n switch (name) {\n case 'ai.generateText.doGenerate':\n span.updateName(`generate_text ${modelId}`);\n break;\n case 'ai.streamText.doStream':\n span.updateName(`stream_text ${modelId}`);\n break;\n case 'ai.generateObject.doGenerate':\n span.updateName(`generate_object ${modelId}`);\n break;\n case 'ai.streamObject.doStream':\n span.updateName(`stream_object ${modelId}`);\n break;\n case 'ai.embed.doEmbed':\n span.updateName(`embed ${modelId}`);\n break;\n case 'ai.embedMany.doEmbed':\n span.updateName(`embed_many ${modelId}`);\n break;\n }\n }\n}\n\n/**\n * Add event processors to the given client to process Vercel AI spans.\n */\nexport function addVercelAiProcessors(client: Client): void {\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: SpanAttributes): void {\n const providerMetadata = attributes[AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE] as string | undefined;\n if (providerMetadata) {\n try {\n const providerMetadataObject = JSON.parse(providerMetadata) as ProviderMetadata;\n\n // Handle OpenAI metadata (v5 uses 'openai', v6 Azure Responses API uses 'azure')\n const openaiMetadata: OpenAiProviderMetadata | undefined =\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 setAttributeIfDefined(attributes, 'gen_ai.conversation.id', openaiMetadata.responseId);\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: SpanAttributes, key: string, value: SpanAttributeValue | undefined): void {\n if (value != null) {\n attributes[key] = value;\n }\n}\n"],"names":["SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","INVOKE_AGENT_OPS","GENERATE_CONTENT_OPS","EMBEDDINGS_OPS","spanToJSON","AI_TOOL_CALL_NAME_ATTRIBUTE","AI_TOOL_CALL_ID_ATTRIBUTE","AI_OPERATION_ID_ATTRIBUTE","accumulateTokensForParent","applyAccumulatedTokens","AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE","GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE","AI_USAGE_PROMPT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE","AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE","GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE","AI_PROMPT_TOOLS_ATTRIBUTE","convertAvailableToolsToJsonString","OPERATION_NAME_ATTRIBUTE","GEN_AI_OPERATION_NAME_ATTRIBUTE","AI_PROMPT_MESSAGES_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ATTRIBUTE","AI_RESPONSE_TEXT_ATTRIBUTE","AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","AI_RESPONSE_OBJECT_ATTRIBUTE","AI_TOOL_CALL_ARGS_ATTRIBUTE","GEN_AI_TOOL_INPUT_ATTRIBUTE","AI_TOOL_CALL_RESULT_ATTRIBUTE","GEN_AI_TOOL_OUTPUT_ATTRIBUTE","AI_SCHEMA_ATTRIBUTE","AI_MODEL_ID_ATTRIBUTE","GEN_AI_REQUEST_MODEL_ATTRIBUTE","SEMANTIC_ATTRIBUTE_SENTRY_OP","GEN_AI_TOOL_NAME_ATTRIBUTE","GEN_AI_TOOL_CALL_ID_ATTRIBUTE","toolCallSpanMap","GEN_AI_TOOL_TYPE_ATTRIBUTE","AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE","requestMessagesFromPrompt","GEN_AI_RESPONSE_MODEL_ATTRIBUTE","getSpanOpFromName","AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE"],"mappings":";;;;;;;;;AAoDA,SAAS,eAAe,CAAC,IAAI,EAAQ,MAAM,EAAoB;AAC/D,EAAE,IAAI,CAAC,YAAY,CAACA,mDAAgC,EAAE,MAAM,CAAC;AAC7D;;AAEA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,aAAa,EAAkB;AACjE;AACA,EAAE,IAAIC,0BAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AAC3C,IAAI,OAAO,cAAc;AACzB,EAAE;AACF;AACA,EAAE,IAAIC,8BAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AAC/C,IAAI,OAAO,kBAAkB;AAC7B,EAAE;AACF,EAAE,IAAIC,wBAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AACzC,IAAI,OAAO,YAAY;AACvB,EAAE;AACF,EAAE,IAAI,aAAA,KAAkB,aAAa,EAAE;AACvC,IAAI,OAAO,cAAc;AACzB,EAAE;AACF;AACA,EAAE,OAAO,aAAa;AACtB;;AAEA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,IAAI,EAAc;AAC/C,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAA,EAAK,GAAIC,oBAAU,CAAC,IAAI,CAAC;;AAElE,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI;AACJ,EAAE;;AAEF;AACA;AACA,EAAE,IAAI,UAAU,CAACC,8CAA2B,CAAA,IAAK,UAAU,CAACC,4CAAyB,CAAA,IAAK,IAAA,KAAS,aAAa,EAAE;AAClH,IAAI,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC;AACzC,IAAI;AACJ,EAAE;;AAEF;AACA;AACA,EAAE,IAAI,CAAC,UAAU,CAACC,4CAAyB,CAAA,IAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACzE,IAAI;AACJ,EAAE;;AAEF,EAAE,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC;AAC7C;;AAEA,SAAS,sBAAsB,CAAC,KAAK,EAAgB;AACrD,EAAE,IAAI,KAAK,CAAC,IAAA,KAAS,aAAA,IAAiB,KAAK,CAAC,KAAK,EAAE;AACnD;AACA,IAAI,MAAM,gBAAgB,GAA8B,IAAI,GAAG,EAAE;;AAEjE;AACA,IAAI,KAAK,MAAM,IAAA,IAAQ,KAAK,CAAC,KAAK,EAAE;AACpC,MAAM,wBAAwB,CAAC,IAAI,CAAC;;AAEpC;AACA,MAAMC,+BAAyB,CAAC,IAAI,EAAE,gBAAgB,CAAC;AACvD,IAAI;;AAEJ;AACA,IAAI,KAAK,MAAM,IAAA,IAAQ,KAAK,CAAC,KAAK,EAAE;AACpC,MAAM,IAAI,IAAI,CAAC,EAAA,KAAO,qBAAqB,EAAE;AAC7C,QAAQ;AACR,MAAM;;AAEN,MAAMC,4BAAsB,CAAC,IAAI,EAAE,gBAAgB,CAAC;AACpD,IAAI;;AAEJ;AACA,IAAI,MAAM,KAAA,GAAQ,KAAK,CAAC,QAAQ,EAAE,KAAK;AACvC,IAAI,IAAI,KAAA,IAAS,KAAK,CAAC,EAAA,KAAO,qBAAqB,EAAE;AACrD,MAAMA,4BAAsB,CAAC,KAAK,EAAE,gBAAgB,CAAC;AACrD,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,KAAK;AACd;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,IAAI,EAAkB;AACxD,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAA,EAAO,GAAI,IAAI;;AAE3C,EAAE,IAAI,MAAA,KAAW,oBAAoB,EAAE;AACvC,IAAI;AACJ,EAAE;;AAEF,EAAE,kBAAkB,CAAC,UAAU,EAAEC,uDAAoC,EAAEC,oDAAoC,CAAC;AAC5G,EAAE,kBAAkB,CAAC,UAAU,EAAEC,mDAAgC,EAAEC,mDAAmC,CAAC;AACvG,EAAE,kBAAkB,CAAC,UAAU,EAAEC,yDAAsC,EAAEC,0DAA0C,CAAC;;AAEpH;AACA,EAAE;AACF,IAAI,OAAO,UAAU,CAACF,mDAAmC,CAAA,KAAM,QAAA;AAC/D,IAAI,OAAO,UAAU,CAACE,0DAA0C,MAAM;AACtE,IAAI;AACJ,IAAI,UAAU,CAACF,mDAAmC,CAAA;AAClD,MAAM,UAAU,CAACA,mDAAmC,CAAA,GAAI,UAAU,CAACE,0DAA0C,CAAC;AAC9G,EAAE;;AAEF,EAAE;AACF,IAAI,OAAO,UAAU,CAACJ,oDAAoC,CAAA,KAAM,QAAA;AAChE,IAAI,OAAO,UAAU,CAACE,mDAAmC,MAAM;AAC/D,IAAI;AACJ,IAAI,UAAU,CAACG,mDAAmC,CAAA;AAClD,MAAM,UAAU,CAACL,oDAAoC,CAAA,GAAI,UAAU,CAACE,mDAAmC,CAAC;AACxG,EAAE;;AAEF;AACA,EAAE,IAAI,UAAU,CAACI,4CAAyB,KAAK,KAAK,CAAC,OAAO,CAAC,UAAU,CAACA,4CAAyB,CAAC,CAAC,EAAE;AACrG,IAAI,UAAU,CAACA,4CAAyB,CAAA,GAAIC,uCAAiC;AAC7E,MAAM,UAAU,CAACD,4CAAyB,CAAA;AAC1C,KAAK;AACL,EAAE;;AAEF;AACA;AACA,EAAE,IAAI,UAAU,CAACE,2CAAwB,CAAC,EAAE;AAC5C,IAAI,MAAM,gBAAgB,wBAAwB,CAAC,UAAU,CAACA,2CAAwB,CAAA,EAAY;AAClG,IAAI,UAAU,CAACC,+CAA+B,CAAA,GAAI,aAAa;AAC/D;AACA,IAAI,OAAO,UAAU,CAACD,2CAAwB,CAAC;AAC/C,EAAE;AACF,EAAE,kBAAkB,CAAC,UAAU,EAAEE,+CAA4B,EAAEC,+CAA+B,CAAC;AAC/F,EAAE,kBAAkB,CAAC,UAAU,EAAEC,6CAA0B,EAAE,sBAAsB,CAAC;AACpF,EAAE,kBAAkB,CAAC,UAAU,EAAEC,mDAAgC,EAAE,4BAA4B,CAAC;AAChG,EAAE,kBAAkB,CAAC,UAAU,EAAEC,+CAA4B,EAAE,wBAAwB,CAAC;AACxF,EAAE,kBAAkB,CAAC,UAAU,EAAER,4CAAyB,EAAE,gCAAgC,CAAC;;AAE7F,EAAE,kBAAkB,CAAC,UAAU,EAAES,8CAA2B,EAAEC,2CAA2B,CAAC;AAC1F,EAAE,kBAAkB,CAAC,UAAU,EAAEC,gDAA6B,EAAEC,4CAA4B,CAAC;;AAE7F,EAAE,kBAAkB,CAAC,UAAU,EAAEC,sCAAmB,EAAE,uBAAuB,CAAC;AAC9E,EAAE,kBAAkB,CAAC,UAAU,EAAEC,wCAAqB,EAAEC,8CAA8B,CAAC;;AAEvF,EAAE,+BAA+B,CAAC,UAAU,CAAC;;AAE7C;AACA,EAAE,KAAK,MAAM,GAAA,IAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC7C,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC/B,MAAM,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA,CAAA;AACA,IAAA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAA,kBAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA;AACA,EAAA,IAAA,UAAA,CAAA,MAAA,CAAA,IAAA,IAAA,EAAA;AACA,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA,MAAA,CAAA;AACA;AACA,IAAA,OAAA,UAAA,CAAA,MAAA,CAAA;AACA,EAAA;AACA;;AAEA,SAAA,mBAAA,CAAA,IAAA,EAAA,UAAA,EAAA;AACA,EAAA,eAAA,CAAA,IAAA,EAAA,oBAAA,CAAA;AACA,EAAA,IAAA,CAAA,YAAA,CAAAC,+CAAA,EAAA,qBAAA,CAAA;AACA,EAAA,IAAA,CAAA,YAAA,CAAAb,+CAAA,EAAA,cAAA,CAAA;AACA,EAAA,kBAAA,CAAA,UAAA,EAAAf,8CAAA,EAAA6B,0CAAA,CAAA;AACA,EAAA,kBAAA,CAAA,UAAA,EAAA5B,4CAAA,EAAA6B,6CAAA,CAAA;;AAEA;AACA;AACA,EAAA,MAAA,UAAA,GAAA,UAAA,CAAAA,6CAAA,CAAA;;AAEA,EAAA,IAAA,OAAA,UAAA,KAAA,QAAA,EAAA;AACA,IAAAC,yBAAA,CAAA,GAAA,CAAA,UAAA,EAAA,IAAA,CAAA;AACA,EAAA;;AAEA;AACA,EAAA,IAAA,CAAA,UAAA,CAAAC,0CAAA,CAAA,EAAA;AACA,IAAA,IAAA,CAAA,YAAA,CAAAA,0CAAA,EAAA,UAAA,CAAA;AACA,EAAA;AACA,EAAA,MAAA,QAAA,GAAA,UAAA,CAAAH,0CAAA,CAAA;AACA,EAAA,IAAA,QAAA,EAAA;AACA,IAAA,IAAA,CAAA,UAAA,CAAA,CAAA,aAAA,EAAA,QAAA,CAAA,CAAA,CAAA;AACA,EAAA;AACA;;AAEA,SAAA,mBAAA,CAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA;AACA,EAAA,eAAA,CAAA,IAAA,EAAA,oBAAA,CAAA;;AAEA,EAAA,MAAA,YAAA,GAAA,IAAA,CAAA,OAAA,CAAA,KAAA,EAAA,EAAA,CAAA;AACA,EAAA,IAAA,CAAA,YAAA,CAAA,kBAAA,EAAA,YAAA,CAAA;AACA,EAAA,IAAA,CAAA,UAAA,CAAA,YAAA,CAAA;;AAEA;AACA;AACA,EAAA,MAAA,UAAA,GAAA,UAAA,CAAAI,qDAAA,CAAA;AACA,EAAA,IAAA,UAAA,IAAA,OAAA,UAAA,KAAA,QAAA,EAAA;AACA,IAAA,IAAA,CAAA,UAAA,CAAA,CAAA,EAAA,YAAA,CAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA;AACA,IAAA,IAAA,CAAA,YAAA,CAAA,oBAAA,EAAA,UAAA,CAAA;AACA,EAAA;;AAEA,EAAAC,+BAAA,CAAA,IAAA,EAAA,UAAA,CAAA;;AAEA,EAAA,IAAA,UAAA,CAAAR,wCAAA,CAAA,IAAA,CAAA,UAAA,CAAAS,+CAAA,CAAA,EAAA;AACA,IAAA,IAAA,CAAA,YAAA,CAAAA,+CAAA,EAAA,UAAA,CAAAT,wCAAA,CAAA,CAAA;AACA,EAAA;AACA,EAAA,IAAA,CAAA,YAAA,CAAA,cAAA,EAAA,IAAA,CAAA,QAAA,CAAA,QAAA,CAAA,CAAA;;AAEA;AACA,EAAA,MAAA,EAAA,GAAAU,uBAAA,CAAA,IAAA,CAAA;AACA,EAAA,IAAA,EAAA,EAAA;AACA,IAAA,IAAA,CAAA,YAAA,CAAAR,+CAAA,EAAA,EAAA,CAAA;AACA,EAAA;;AAEA;AACA,EAAA,MAAA,OAAA,GAAA,UAAA,CAAAF,wCAAA,CAAA;AACA,EAAA,IAAA,OAAA,EAAA;AACA,IAAA,QAAA,IAAA;AACA,MAAA,KAAA,4BAAA;AACA,QAAA,IAAA,CAAA,UAAA,CAAA,CAAA,cAAA,EAAA,OAAA,CAAA,CAAA,CAAA;AACA,QAAA;AACA,MAAA,KAAA,wBAAA;AACA,QAAA,IAAA,CAAA,UAAA,CAAA,CAAA,YAAA,EAAA,OAAA,CAAA,CAAA,CAAA;AACA,QAAA;AACA,MAAA,KAAA,8BAAA;AACA,QAAA,IAAA,CAAA,UAAA,CAAA,CAAA,gBAAA,EAAA,OAAA,CAAA,CAAA,CAAA;AACA,QAAA;AACA,MAAA,KAAA,0BAAA;AACA,QAAA,IAAA,CAAA,UAAA,CAAA,CAAA,cAAA,EAAA,OAAA,CAAA,CAAA,CAAA;AACA,QAAA;AACA,MAAA,KAAA,kBAAA;AACA,QAAA,IAAA,CAAA,UAAA,CAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA;AACA,QAAA;AACA,MAAA,KAAA,sBAAA;AACA,QAAA,IAAA,CAAA,UAAA,CAAA,CAAA,WAAA,EAAA,OAAA,CAAA,CAAA,CAAA;AACA,QAAA;AACA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,qBAAA,CAAA,MAAA,EAAA;AACA,EAAA,MAAA,CAAA,EAAA,CAAA,WAAA,EAAA,mBAAA,CAAA;AACA;AACA,EAAA,MAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,MAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,EAAA,wBAAA,EAAA,CAAA,CAAA;AACA;;AAEA,SAAA,+BAAA,CAAA,UAAA,EAAA;AACA,EAAA,MAAA,gBAAA,GAAA,UAAA,CAAAW,0DAAA,CAAA;AACA,EAAA,IAAA,gBAAA,EAAA;AACA,IAAA,IAAA;AACA,MAAA,MAAA,sBAAA,GAAA,IAAA,CAAA,KAAA,CAAA,gBAAA,CAAA;;AAEA;AACA,MAAA,MAAA,cAAA;AACA,QAAA,sBAAA,CAAA,MAAA,IAAA,sBAAA,CAAA,KAAA;AACA,MAAA,IAAA,cAAA,EAAA;AACA,QAAA,qBAAA;AACA,UAAA,UAAA;AACA,UAAA3B,0DAAA;AACA,UAAA,cAAA,CAAA,kBAAA;AACA,SAAA;AACA,QAAA,qBAAA,CAAA,UAAA,EAAA,sCAAA,EAAA,cAAA,CAAA,eAAA,CAAA;AACA,QAAA,qBAAA;AACA,UAAA,UAAA;AACA,UAAA,gDAAA;AACA,UAAA,cAAA,CAAA,wBAAA;AACA,SAAA;AACA,QAAA,qBAAA;AACA,UAAA,UAAA;AACA,UAAA,gDAAA;AACA,UAAA,cAAA,CAAA,wBAAA;AACA,SAAA;AACA,QAAA,qBAAA,CAAA,UAAA,EAAA,wBAAA,EAAA,cAAA,CAAA,UAAA,CAAA;AACA,MAAA;;AAEA,MAAA,IAAA,sBAAA,CAAA,SAAA,EAAA;AACA,QAAA,MAAA,iBAAA;AACA,UAAA,sBAAA,CAAA,SAAA,CAAA,KAAA,EAAA,uBAAA;AACA,UAAA,sBAAA,CAAA,SAAA,CAAA,oBAAA;AACA,QAAA,qBAAA,CAAA,UAAA,EAAAA,0DAAA,EAAA,iBAAA,CAAA;;AAEA,QAAA,MAAA,qBAAA;AACA,UAAA,sBAAA,CAAA,SAAA,CAAA,KAAA,EAAA,2BAAA;AACA,UAAA,sBAAA,CAAA,SAAA,CAAA,wBAAA;AACA,QAAA,qBAAA,CAAA,UAAA,EAAA4B,+DAAA,EAAA,qBAAA,CAAA;AACA,MAAA;;AAEA,MAAA,IAAA,sBAAA,CAAA,OAAA,EAAA,KAAA,EAAA;AACA,QAAA,qBAAA;AACA,UAAA,UAAA;AACA,UAAA5B,0DAAA;AACA,UAAA,sBAAA,CAAA,OAAA,CAAA,KAAA,CAAA,oBAAA;AACA,SAAA;AACA,QAAA,qBAAA;AACA,UAAA,UAAA;AACA,UAAA4B,+DAAA;AACA,UAAA,sBAAA,CAAA,OAAA,CAAA,KAAA,CAAA,qBAAA;AACA,SAAA;AACA,MAAA;;AAEA,MAAA,IAAA,sBAAA,CAAA,QAAA,EAAA;AACA,QAAA,qBAAA;AACA,UAAA,UAAA;AACA,UAAA5B,0DAAA;AACA,UAAA,sBAAA,CAAA,QAAA,CAAA,oBAAA;AACA,SAAA;AACA,QAAA,qBAAA;AACA,UAAA,UAAA;AACA,UAAA,sCAAA;AACA,UAAA,sBAAA,CAAA,QAAA,CAAA,qBAAA;AACA,SAAA;AACA,MAAA;AACA,IAAA,CAAA,CAAA,MAAA;AACA;AACA,IAAA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,qBAAA,CAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA;AACA,EAAA,IAAA,KAAA,IAAA,IAAA,EAAA;AACA,IAAA,UAAA,CAAA,GAAA,CAAA,GAAA,KAAA;AACA,EAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/utils.js new file mode 100644 index 0000000..efdbed2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/utils.js @@ -0,0 +1,209 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const genAiAttributes = require('../ai/gen-ai-attributes.js'); +const utils = require('../ai/utils.js'); +const constants = require('./constants.js'); +const vercelAiAttributes = require('./vercel-ai-attributes.js'); + +/** + * Accumulates token data from a span to its parent in the token accumulator map. + * This function extracts token usage from the current span and adds it to the + * accumulated totals for its parent span. + */ +function accumulateTokensForParent(span, tokenAccumulator) { + const parentSpanId = span.parent_span_id; + if (!parentSpanId) { + return; + } + + const inputTokens = span.data[genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]; + const outputTokens = span.data[genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]; + + if (typeof inputTokens === 'number' || typeof outputTokens === 'number') { + const existing = tokenAccumulator.get(parentSpanId) || { inputTokens: 0, outputTokens: 0 }; + + if (typeof inputTokens === 'number') { + existing.inputTokens += inputTokens; + } + if (typeof outputTokens === 'number') { + existing.outputTokens += outputTokens; + } + + tokenAccumulator.set(parentSpanId, existing); + } +} + +/** + * Applies accumulated token data to the `gen_ai.invoke_agent` span. + * Only immediate children of the `gen_ai.invoke_agent` span are considered, + * since aggregation will automatically occur for each parent span. + */ +function applyAccumulatedTokens( + spanOrTrace, + tokenAccumulator, +) { + const accumulated = tokenAccumulator.get(spanOrTrace.span_id); + if (!accumulated || !spanOrTrace.data) { + return; + } + + if (accumulated.inputTokens > 0) { + spanOrTrace.data[genAiAttributes.GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = accumulated.inputTokens; + } + if (accumulated.outputTokens > 0) { + spanOrTrace.data[genAiAttributes.GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = accumulated.outputTokens; + } + if (accumulated.inputTokens > 0 || accumulated.outputTokens > 0) { + spanOrTrace.data['gen_ai.usage.total_tokens'] = accumulated.inputTokens + accumulated.outputTokens; + } +} + +/** + * Get the span associated with a tool call ID + */ +function _INTERNAL_getSpanForToolCallId(toolCallId) { + return constants.toolCallSpanMap.get(toolCallId); +} + +/** + * Clean up the span mapping for a tool call ID + */ +function _INTERNAL_cleanupToolCallSpan(toolCallId) { + constants.toolCallSpanMap.delete(toolCallId); +} + +/** + * Convert an array of tool strings to a JSON string + */ +function convertAvailableToolsToJsonString(tools) { + const toolObjects = tools.map(tool => { + if (typeof tool === 'string') { + try { + return JSON.parse(tool); + } catch { + return tool; + } + } + return tool; + }); + return JSON.stringify(toolObjects); +} + +/** + * Convert the prompt string to messages array + */ +function convertPromptToMessages(prompt) { + try { + const p = JSON.parse(prompt); + if (!!p && typeof p === 'object') { + const { prompt, system } = p; + if (typeof prompt === 'string' || typeof system === 'string') { + const messages = []; + if (typeof system === 'string') { + messages.push({ role: 'system', content: system }); + } + if (typeof prompt === 'string') { + messages.push({ role: 'user', content: prompt }); + } + return messages; + } + } + // eslint-disable-next-line no-empty + } catch {} + return []; +} + +/** + * Generate a request.messages JSON array from the prompt field in the + * invoke_agent op + */ +function requestMessagesFromPrompt(span, attributes) { + if (attributes[vercelAiAttributes.AI_PROMPT_ATTRIBUTE]) { + const truncatedPrompt = utils.getTruncatedJsonString(attributes[vercelAiAttributes.AI_PROMPT_ATTRIBUTE] ); + span.setAttribute('gen_ai.prompt', truncatedPrompt); + } + const prompt = attributes[vercelAiAttributes.AI_PROMPT_ATTRIBUTE]; + if ( + typeof prompt === 'string' && + !attributes[genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE] && + !attributes[vercelAiAttributes.AI_PROMPT_MESSAGES_ATTRIBUTE] + ) { + const messages = convertPromptToMessages(prompt); + if (messages.length) { + const { systemInstructions, filteredMessages } = utils.extractSystemInstructions(messages); + + if (systemInstructions) { + span.setAttribute(genAiAttributes.GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0; + span.setAttributes({ + [genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: utils.getTruncatedJsonString(filteredMessages), + [genAiAttributes.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength, + }); + } + } else if (typeof attributes[vercelAiAttributes.AI_PROMPT_MESSAGES_ATTRIBUTE] === 'string') { + try { + const messages = JSON.parse(attributes[vercelAiAttributes.AI_PROMPT_MESSAGES_ATTRIBUTE]); + if (Array.isArray(messages)) { + const { systemInstructions, filteredMessages } = utils.extractSystemInstructions(messages); + + if (systemInstructions) { + span.setAttribute(genAiAttributes.GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0; + span.setAttributes({ + [vercelAiAttributes.AI_PROMPT_MESSAGES_ATTRIBUTE]: undefined, + [genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: utils.getTruncatedJsonString(filteredMessages), + [genAiAttributes.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength, + }); + } + // eslint-disable-next-line no-empty + } catch {} + } +} + +/** + * Maps a Vercel AI span name to the corresponding Sentry op. + */ +function getSpanOpFromName(name) { + switch (name) { + case 'ai.generateText': + case 'ai.streamText': + case 'ai.generateObject': + case 'ai.streamObject': + case 'ai.embed': + case 'ai.embedMany': + return genAiAttributes.GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE; + case 'ai.generateText.doGenerate': + return genAiAttributes.GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE; + case 'ai.streamText.doStream': + return genAiAttributes.GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE; + case 'ai.generateObject.doGenerate': + return genAiAttributes.GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE; + case 'ai.streamObject.doStream': + return genAiAttributes.GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE; + case 'ai.embed.doEmbed': + return genAiAttributes.GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE; + case 'ai.embedMany.doEmbed': + return genAiAttributes.GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE; + case 'ai.toolCall': + return genAiAttributes.GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE; + default: + if (name.startsWith('ai.stream')) { + return 'ai.run'; + } + return undefined; + } +} + +exports._INTERNAL_cleanupToolCallSpan = _INTERNAL_cleanupToolCallSpan; +exports._INTERNAL_getSpanForToolCallId = _INTERNAL_getSpanForToolCallId; +exports.accumulateTokensForParent = accumulateTokensForParent; +exports.applyAccumulatedTokens = applyAccumulatedTokens; +exports.convertAvailableToolsToJsonString = convertAvailableToolsToJsonString; +exports.convertPromptToMessages = convertPromptToMessages; +exports.getSpanOpFromName = getSpanOpFromName; +exports.requestMessagesFromPrompt = requestMessagesFromPrompt; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/utils.js.map new file mode 100644 index 0000000..30e904c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/vercel-ai/utils.ts"],"sourcesContent":["import type { TraceContext } from '../../types-hoist/context';\nimport type { Span, SpanAttributes, SpanJSON } from '../../types-hoist/span';\nimport {\n GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE,\n GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE,\n GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE,\n GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE,\n GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE,\n GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport { toolCallSpanMap } from './constants';\nimport type { TokenSummary } from './types';\nimport { AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE } from './vercel-ai-attributes';\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 */\nexport function accumulateTokensForParent(span: SpanJSON, tokenAccumulator: Map): void {\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 */\nexport function applyAccumulatedTokens(\n spanOrTrace: SpanJSON | TraceContext,\n tokenAccumulator: Map,\n): void {\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 * Get the span associated with a tool call ID\n */\nexport function _INTERNAL_getSpanForToolCallId(toolCallId: string): Span | undefined {\n return toolCallSpanMap.get(toolCallId);\n}\n\n/**\n * Clean up the span mapping for a tool call ID\n */\nexport function _INTERNAL_cleanupToolCallSpan(toolCallId: string): void {\n toolCallSpanMap.delete(toolCallId);\n}\n\n/**\n * Convert an array of tool strings to a JSON string\n */\nexport function convertAvailableToolsToJsonString(tools: unknown[]): string {\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 * Convert the prompt string to messages array\n */\nexport function convertPromptToMessages(prompt: string): { role: string; content: string }[] {\n try {\n const p = JSON.parse(prompt);\n if (!!p && typeof p === 'object') {\n const { prompt, system } = p;\n if (typeof prompt === 'string' || typeof system === 'string') {\n const messages: { role: string; content: string }[] = [];\n if (typeof system === 'string') {\n messages.push({ role: 'system', content: system });\n }\n if (typeof prompt === 'string') {\n messages.push({ role: 'user', content: prompt });\n }\n return messages;\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 */\nexport function requestMessagesFromPrompt(span: Span, attributes: SpanAttributes): void {\n if (attributes[AI_PROMPT_ATTRIBUTE]) {\n const truncatedPrompt = getTruncatedJsonString(attributes[AI_PROMPT_ATTRIBUTE] as string | string[]);\n span.setAttribute('gen_ai.prompt', truncatedPrompt);\n }\n const prompt = attributes[AI_PROMPT_ATTRIBUTE];\n if (\n typeof prompt === 'string' &&\n !attributes[GEN_AI_INPUT_MESSAGES_ATTRIBUTE] &&\n !attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]\n ) {\n const messages = convertPromptToMessages(prompt);\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 span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n } else if (typeof attributes[AI_PROMPT_MESSAGES_ATTRIBUTE] === 'string') {\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 span.setAttributes({\n [AI_PROMPT_MESSAGES_ATTRIBUTE]: undefined,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages),\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 */\nexport function getSpanOpFromName(name: string): string | undefined {\n switch (name) {\n case 'ai.generateText':\n case 'ai.streamText':\n case 'ai.generateObject':\n case 'ai.streamObject':\n case 'ai.embed':\n case 'ai.embedMany':\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.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"],"names":["GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE","toolCallSpanMap","AI_PROMPT_ATTRIBUTE","getTruncatedJsonString","GEN_AI_INPUT_MESSAGES_ATTRIBUTE","AI_PROMPT_MESSAGES_ATTRIBUTE","extractSystemInstructions","GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE","GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE","GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE","GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE","GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE","GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE","GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE","GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE","GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/vercel-ai-attributes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/vercel-ai-attributes.js new file mode 100644 index 0000000..d0ed9e5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/vercel-ai-attributes.js @@ -0,0 +1,218 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/* eslint-disable max-lines */ +/** + * AI SDK Telemetry Attributes + * Based on https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data + */ + +// ============================================================================= +// COMMON ATTRIBUTES +// ============================================================================= + +/** + * Common attribute for operation name across all functions and spans + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data + */ +const OPERATION_NAME_ATTRIBUTE = 'operation.name'; + +/** + * Common attribute for AI operation ID across all functions and spans + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data + */ +const AI_OPERATION_ID_ATTRIBUTE = 'ai.operationId'; + +// ============================================================================= +// SHARED ATTRIBUTES +// ============================================================================= + +/** + * `generateText` function - `ai.generateText` span + * `streamText` function - `ai.streamText` span + * + * The prompt that was used when calling the function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function + */ +const AI_PROMPT_ATTRIBUTE = 'ai.prompt'; + +/** + * `generateObject` function - `ai.generateObject` span + * `streamObject` function - `ai.streamObject` span + * + * The JSON schema version of the schema that was passed into the function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +const AI_SCHEMA_ATTRIBUTE = 'ai.schema'; + +/** + * `generateObject` function - `ai.generateObject` span + * `streamObject` function - `ai.streamObject` span + * + * The object that was generated (stringified JSON) + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +const AI_RESPONSE_OBJECT_ATTRIBUTE = 'ai.response.object'; + +// ============================================================================= +// GENERATETEXT FUNCTION - UNIQUE ATTRIBUTES +// ============================================================================= + +/** + * `generateText` function - `ai.generateText` span + * + * The text that was generated + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +const AI_RESPONSE_TEXT_ATTRIBUTE = 'ai.response.text'; + +/** + * `generateText` function - `ai.generateText` span + * + * The tool calls that were made as part of the generation (stringified JSON) + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +const AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'ai.response.toolCalls'; + +/** + * `generateText` function - `ai.generateText.doGenerate` span + * + * The messages that were passed into the provider + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +const AI_PROMPT_MESSAGES_ATTRIBUTE = 'ai.prompt.messages'; + +/** + * `generateText` function - `ai.generateText.doGenerate` span + * + * Array of stringified tool definitions + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +const AI_PROMPT_TOOLS_ATTRIBUTE = 'ai.prompt.tools'; + +/** + * Basic LLM span information + * Multiple spans + * + * The id of the model + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_MODEL_ID_ATTRIBUTE = 'ai.model.id'; + +/** + * Basic LLM span information + * Multiple spans + * + * Provider specific metadata returned with the generation response + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = 'ai.response.providerMetadata'; + +/** + * Basic LLM span information + * Multiple spans + * + * The number of cached input tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE = 'ai.usage.cachedInputTokens'; +/** + * Basic LLM span information + * Multiple spans + * + * The functionId that was set through `telemetry.functionId` + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = 'ai.telemetry.functionId'; + +/** + * Basic LLM span information + * Multiple spans + * + * The number of completion tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'ai.usage.completionTokens'; + +/** + * Basic LLM span information + * Multiple spans + * + * The number of prompt tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'ai.usage.promptTokens'; + +// ============================================================================= +// TOOL CALL SPANS +// ============================================================================= + +/** + * Tool call spans + * `ai.toolCall` span + * + * The name of the tool + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +const AI_TOOL_CALL_NAME_ATTRIBUTE = 'ai.toolCall.name'; + +/** + * Tool call spans + * `ai.toolCall` span + * + * The id of the tool call + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +const AI_TOOL_CALL_ID_ATTRIBUTE = 'ai.toolCall.id'; + +/** + * Tool call spans + * `ai.toolCall` span + * + * The parameters of the tool call + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +const AI_TOOL_CALL_ARGS_ATTRIBUTE = 'ai.toolCall.args'; + +/** + * Tool call spans + * `ai.toolCall` span + * + * The result of the tool call + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +const AI_TOOL_CALL_RESULT_ATTRIBUTE = 'ai.toolCall.result'; + +// ============================================================================= +// PROVIDER METADATA +// ============================================================================= + +/** + * OpenAI Provider Metadata + * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai + * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/openai-chat-language-model.ts#L397-L416 + * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/responses/openai-responses-language-model.ts#L377C7-L384 + */ + +exports.AI_MODEL_ID_ATTRIBUTE = AI_MODEL_ID_ATTRIBUTE; +exports.AI_OPERATION_ID_ATTRIBUTE = AI_OPERATION_ID_ATTRIBUTE; +exports.AI_PROMPT_ATTRIBUTE = AI_PROMPT_ATTRIBUTE; +exports.AI_PROMPT_MESSAGES_ATTRIBUTE = AI_PROMPT_MESSAGES_ATTRIBUTE; +exports.AI_PROMPT_TOOLS_ATTRIBUTE = AI_PROMPT_TOOLS_ATTRIBUTE; +exports.AI_RESPONSE_OBJECT_ATTRIBUTE = AI_RESPONSE_OBJECT_ATTRIBUTE; +exports.AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE; +exports.AI_RESPONSE_TEXT_ATTRIBUTE = AI_RESPONSE_TEXT_ATTRIBUTE; +exports.AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = AI_RESPONSE_TOOL_CALLS_ATTRIBUTE; +exports.AI_SCHEMA_ATTRIBUTE = AI_SCHEMA_ATTRIBUTE; +exports.AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE; +exports.AI_TOOL_CALL_ARGS_ATTRIBUTE = AI_TOOL_CALL_ARGS_ATTRIBUTE; +exports.AI_TOOL_CALL_ID_ATTRIBUTE = AI_TOOL_CALL_ID_ATTRIBUTE; +exports.AI_TOOL_CALL_NAME_ATTRIBUTE = AI_TOOL_CALL_NAME_ATTRIBUTE; +exports.AI_TOOL_CALL_RESULT_ATTRIBUTE = AI_TOOL_CALL_RESULT_ATTRIBUTE; +exports.AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE = AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE; +exports.AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE; +exports.AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = AI_USAGE_PROMPT_TOKENS_ATTRIBUTE; +exports.OPERATION_NAME_ATTRIBUTE = OPERATION_NAME_ATTRIBUTE; +//# sourceMappingURL=vercel-ai-attributes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/vercel-ai-attributes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/vercel-ai-attributes.js.map new file mode 100644 index 0000000..ee7987a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/tracing/vercel-ai/vercel-ai-attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vercel-ai-attributes.js","sources":["../../../../src/tracing/vercel-ai/vercel-ai-attributes.ts"],"sourcesContent":["/* 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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const AI_SCHEMA_ATTRIBUTE = 'ai.schema';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The name 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 */\nexport const AI_SCHEMA_NAME_ATTRIBUTE = 'ai.schema.name';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The description 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 */\nexport const AI_SCHEMA_DESCRIPTION_ATTRIBUTE = 'ai.schema.description';\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 */\nexport const AI_RESPONSE_OBJECT_ATTRIBUTE = 'ai.response.object';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The object generation mode, e.g. `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 */\nexport const AI_SETTINGS_MODE_ATTRIBUTE = 'ai.settings.mode';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The output type that was used, e.g. `object` or `no-schema`\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 */\nexport const AI_SETTINGS_OUTPUT_ATTRIBUTE = 'ai.settings.output';\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 */\nexport const AI_VALUES_ATTRIBUTE = 'ai.values';\n\n/**\n * `embed` function - `ai.embed.doEmbed` span\n * `embedMany` function - `ai.embedMany` span\n *\n * An array of JSON-stringified embeddings\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 */\nexport const AI_EMBEDDINGS_ATTRIBUTE = 'ai.embeddings';\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 */\nexport const 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 */\nexport const 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 */\nexport const AI_RESPONSE_FINISH_REASON_ATTRIBUTE = 'ai.response.finishReason';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The maximum number of steps that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_SETTINGS_MAX_STEPS_ATTRIBUTE = 'ai.settings.maxSteps';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The format of the prompt\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_FORMAT_ATTRIBUTE = 'ai.prompt.format';\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 */\nexport const 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 */\nexport const AI_PROMPT_TOOLS_ATTRIBUTE = 'ai.prompt.tools';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The stringified tool choice setting (JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_TOOL_CHOICE_ATTRIBUTE = 'ai.prompt.toolChoice';\n\n// =============================================================================\n// STREAMTEXT FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The time it took to receive the first chunk in milliseconds\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE = 'ai.response.msToFirstChunk';\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The time it took to receive the finish part of the LLM stream in milliseconds\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE = 'ai.response.msToFinish';\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The average completion tokens per second\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE = 'ai.response.avgCompletionTokensPerSecond';\n\n// =============================================================================\n// EMBED FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `embed` function - `ai.embed` span\n *\n * The value that was passed into the `embed` function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_VALUE_ATTRIBUTE = 'ai.value';\n\n/**\n * `embed` function - `ai.embed` span\n *\n * A JSON-stringified embedding\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBEDDING_ATTRIBUTE = 'ai.embedding';\n\n// =============================================================================\n// BASIC LLM SPAN INFORMATION\n// =============================================================================\n\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 */\nexport const RESOURCE_NAME_ATTRIBUTE = 'resource.name';\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 */\nexport const AI_MODEL_ID_ATTRIBUTE = 'ai.model.id';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The provider of the model\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_MODEL_PROVIDER_ATTRIBUTE = 'ai.model.provider';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The request headers that were passed in through `headers`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_REQUEST_HEADERS_ATTRIBUTE = 'ai.request.headers';\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 */\nexport const AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = 'ai.response.providerMetadata';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The maximum number of retries that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_SETTINGS_MAX_RETRIES_ATTRIBUTE = 'ai.settings.maxRetries';\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 */\nexport const 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 */\nexport const AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = 'ai.telemetry.functionId';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The metadata that was passed in through `telemetry.metadata`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_TELEMETRY_METADATA_ATTRIBUTE = 'ai.telemetry.metadata';\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 */\nexport const 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 */\nexport const AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'ai.usage.promptTokens';\n\n// =============================================================================\n// CALL LLM SPAN INFORMATION\n// =============================================================================\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The model that was used to generate the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_MODEL_ATTRIBUTE = 'ai.response.model';\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The id of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_ID_ATTRIBUTE = 'ai.response.id';\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The timestamp of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'ai.response.timestamp';\n\n// =============================================================================\n// SEMANTIC CONVENTIONS FOR GENAI OPERATIONS\n// =============================================================================\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The provider that was used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The model that was requested\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The temperature that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The maximum number of tokens that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The frequency penalty that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The presence penalty that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The topK parameter value that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The topP parameter value that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The stop sequences\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The finish reasons that were returned by the provider\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The model that was used to generate the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The id of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The number of prompt tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The number of completion tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const AI_TOOL_CALL_RESULT_ATTRIBUTE = 'ai.toolCall.result';\n\n// =============================================================================\n// SPAN ATTRIBUTE OBJECTS\n// =============================================================================\n\n/**\n * Attributes collected for `ai.generateText` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_GENERATE_TEXT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT: AI_PROMPT_ATTRIBUTE,\n AI_RESPONSE_TEXT: AI_RESPONSE_TEXT_ATTRIBUTE,\n AI_RESPONSE_TOOL_CALLS: AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n AI_RESPONSE_FINISH_REASON: AI_RESPONSE_FINISH_REASON_ATTRIBUTE,\n AI_SETTINGS_MAX_STEPS: AI_SETTINGS_MAX_STEPS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.generateText.doGenerate` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_GENERATE_TEXT_DO_GENERATE_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT_FORMAT: AI_PROMPT_FORMAT_ATTRIBUTE,\n AI_PROMPT_MESSAGES: AI_PROMPT_MESSAGES_ATTRIBUTE,\n AI_PROMPT_TOOLS: AI_PROMPT_TOOLS_ATTRIBUTE,\n AI_PROMPT_TOOL_CHOICE: AI_PROMPT_TOOL_CHOICE_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n // Call LLM span information\n AI_RESPONSE_MODEL: AI_RESPONSE_MODEL_ATTRIBUTE,\n AI_RESPONSE_ID: AI_RESPONSE_ID_ATTRIBUTE,\n AI_RESPONSE_TIMESTAMP: AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n // Semantic Conventions for GenAI operations\n GEN_AI_SYSTEM: GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL: GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE: GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS: GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY: GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY: GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K: GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P: GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_REQUEST_STOP_SEQUENCES: GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS: GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL: GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_ID: GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS: GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS: GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamText` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_STREAM_TEXT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT: AI_PROMPT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamText.doStream` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_STREAM_TEXT_DO_STREAM_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_RESPONSE_MS_TO_FIRST_CHUNK: AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE,\n AI_RESPONSE_MS_TO_FINISH: AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE,\n AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND: AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n // Call LLM span information\n AI_RESPONSE_MODEL: AI_RESPONSE_MODEL_ATTRIBUTE,\n AI_RESPONSE_ID: AI_RESPONSE_ID_ATTRIBUTE,\n AI_RESPONSE_TIMESTAMP: AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n // Semantic Conventions for GenAI operations\n GEN_AI_SYSTEM: GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL: GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE: GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS: GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY: GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY: GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K: GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P: GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_REQUEST_STOP_SEQUENCES: GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS: GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL: GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_ID: GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS: GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS: GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.generateObject` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n */\nexport const AI_GENERATE_OBJECT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_SCHEMA: AI_SCHEMA_ATTRIBUTE,\n AI_SCHEMA_NAME: AI_SCHEMA_NAME_ATTRIBUTE,\n AI_SCHEMA_DESCRIPTION: AI_SCHEMA_DESCRIPTION_ATTRIBUTE,\n AI_RESPONSE_OBJECT: AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_SETTINGS_MODE: AI_SETTINGS_MODE_ATTRIBUTE,\n AI_SETTINGS_OUTPUT: AI_SETTINGS_OUTPUT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamObject` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_STREAM_OBJECT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_SCHEMA: AI_SCHEMA_ATTRIBUTE,\n AI_SCHEMA_NAME: AI_SCHEMA_NAME_ATTRIBUTE,\n AI_SCHEMA_DESCRIPTION: AI_SCHEMA_DESCRIPTION_ATTRIBUTE,\n AI_RESPONSE_OBJECT: AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_SETTINGS_MODE: AI_SETTINGS_MODE_ATTRIBUTE,\n AI_SETTINGS_OUTPUT: AI_SETTINGS_OUTPUT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embed` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBED_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUE: AI_VALUE_ATTRIBUTE,\n AI_EMBEDDING: AI_EMBEDDING_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embed.doEmbed` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBED_DO_EMBED_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUES: AI_VALUES_ATTRIBUTE,\n AI_EMBEDDINGS: AI_EMBEDDINGS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embedMany` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_EMBED_MANY_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUES: AI_VALUES_ATTRIBUTE,\n AI_EMBEDDINGS: AI_EMBEDDINGS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.toolCall` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_TOOL_CALL_NAME: AI_TOOL_CALL_NAME_ATTRIBUTE,\n AI_TOOL_CALL_ID: AI_TOOL_CALL_ID_ATTRIBUTE,\n AI_TOOL_CALL_ARGS: AI_TOOL_CALL_ARGS_ATTRIBUTE,\n AI_TOOL_CALL_RESULT: AI_TOOL_CALL_RESULT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n} as const;\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 */\nexport interface OpenAiProviderMetadata {\n /**\n * The number of predicted output tokens that were accepted.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs\n */\n acceptedPredictionTokens?: number;\n\n /**\n * The number of predicted output tokens that were rejected.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs\n */\n rejectedPredictionTokens?: number;\n\n /**\n * The number of reasoning tokens that the model generated.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n */\n reasoningTokens?: number;\n\n /**\n * The number of prompt tokens that were a cache hit.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n */\n cachedPromptTokens?: number;\n\n /**\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n *\n * The ID of the response. Can be used to continue a conversation.\n */\n responseId?: string;\n}\n\n/**\n * Anthropic Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/anthropic/src/anthropic-messages-language-model.ts#L346-L352\n */\ninterface AnthropicProviderMetadata {\n /**\n * The number of tokens that were used to create the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control\n */\n cacheCreationInputTokens?: number;\n\n /**\n * The number of tokens that were read from the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control\n */\n cacheReadInputTokens?: number;\n\n /**\n * Usage metrics for the Anthropic model.\n */\n usage?: {\n input_tokens: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n cache_creation?: {\n ephemeral_5m_input_tokens?: number;\n ephemeral_1h_input_tokens?: number;\n };\n output_tokens?: number;\n service_tier?: string;\n };\n}\n\n/**\n * Amazon Bedrock Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/amazon-bedrock/src/bedrock-chat-language-model.ts#L263-L280\n */\ninterface AmazonBedrockProviderMetadata {\n /**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseTrace.html\n */\n trace?: {\n /**\n * The guardrail trace object.\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailTraceAssessment.html\n *\n * This was purposely left as unknown as it's a complex object. This can be typed in the future\n * if the SDK decides to support bedrock in a more advanced way.\n */\n guardrail?: unknown;\n /**\n * The request's prompt router.\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_PromptRouterTrace.html\n */\n promptRouter?: {\n /**\n * The ID of the invoked model.\n */\n invokedModelId?: string;\n };\n };\n usage?: {\n /**\n * The number of tokens that were read from the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points\n */\n cacheReadInputTokens?: number;\n\n /**\n * The number of tokens that were written to the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points\n */\n cacheWriteInputTokens?: number;\n };\n}\n\n/**\n * Google Generative AI Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai\n */\nexport interface GoogleGenerativeAIProviderMetadata {\n /**\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-prompt.ts#L28-L30\n */\n groundingMetadata: null | {\n /**\n * Array of search queries used to retrieve information\n * @example [\"What's the weather in Chicago this weekend?\"]\n *\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n webSearchQueries: string[] | null;\n /**\n * Contains the main search result content used as an entry point\n * The `renderedContent` field contains the formatted content\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n searchEntryPoint?: {\n renderedContent: string;\n } | null;\n /**\n * Contains details about how specific response parts are supported by search results\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n groundingSupports: Array<{\n /**\n * Information about the grounded text segment.\n */\n segment: {\n /**\n * The start index of the text segment.\n */\n startIndex?: number | null;\n /**\n * The end index of the text segment.\n */\n endIndex?: number | null;\n /**\n * The actual text segment.\n */\n text?: string | null;\n };\n /**\n * References to supporting search result chunks.\n */\n groundingChunkIndices?: number[] | null;\n /**\n * Confidence scores (0-1) for each supporting chunk.\n */\n confidenceScores?: number[] | null;\n }> | null;\n };\n /**\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-language-model.ts#L620-L627\n * @see https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/configure-safety-filters\n */\n safetyRatings?: null | unknown;\n}\n\n/**\n * DeepSeek Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek\n */\ninterface DeepSeekProviderMetadata {\n /**\n * The number of tokens that were cache hits.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage\n */\n promptCacheHitTokens?: number;\n\n /**\n * The number of tokens that were cache misses.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage\n */\n promptCacheMissTokens?: number;\n}\n\n/**\n * Perplexity Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/perplexity\n */\ninterface PerplexityProviderMetadata {\n /**\n * Object containing citationTokens and numSearchQueries metrics\n */\n usage?: {\n citationTokens?: number;\n numSearchQueries?: number;\n };\n /**\n * Array of image URLs when return_images is enabled.\n *\n * You can enable image responses by setting return_images: true in the provider options.\n * This feature is only available to Perplexity Tier-2 users and above.\n */\n images?: Array<{\n imageUrl?: string;\n originUrl?: string;\n height?: number;\n width?: number;\n }>;\n}\n\nexport interface ProviderMetadata {\n openai?: OpenAiProviderMetadata;\n azure?: OpenAiProviderMetadata; // v6: Azure Responses API uses 'azure' key instead of 'openai'\n anthropic?: AnthropicProviderMetadata;\n bedrock?: AmazonBedrockProviderMetadata;\n google?: GoogleGenerativeAIProviderMetadata;\n vertex?: GoogleGenerativeAIProviderMetadata; // v6: Google Vertex uses 'vertex' key instead of 'google'\n deepseek?: DeepSeekProviderMetadata;\n perplexity?: PerplexityProviderMetadata;\n}\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,MAAM,wBAAA,GAA2B;;AAExC;AACA;AACA;AACA;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAA,GAAsB;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAA,GAAsB;;AAsBnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,4BAAA,GAA+B;;AA0C5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,0BAAA,GAA6B;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gCAAA,GAAmC;;AA0BhD;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,4BAAA,GAA+B;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAA,GAA4B;;AAuEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAA,GAAwB;;AAoBrC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,uCAAA,GAA0C;;AAWvD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sCAAA,GAAyC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,kCAAA,GAAqC;;AAWlD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oCAAA,GAAuC;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gCAAA,GAAmC;;AAgLhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,2BAAA,GAA8B;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,2BAAA,GAA8B;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,6BAAA,GAAgC;;AA2Q7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/base.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/base.js new file mode 100644 index 0000000..50a40cd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/base.js @@ -0,0 +1,99 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const debugLogger = require('../utils/debug-logger.js'); +const envelope = require('../utils/envelope.js'); +const promisebuffer = require('../utils/promisebuffer.js'); +const ratelimit = require('../utils/ratelimit.js'); + +const DEFAULT_TRANSPORT_BUFFER_SIZE = 64; + +/** + * Creates an instance of a Sentry `Transport` + * + * @param options + * @param makeRequest + */ +function createTransport( + options, + makeRequest, + buffer = promisebuffer.makePromiseBuffer( + options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE, + ), +) { + let rateLimits = {}; + const flush = (timeout) => buffer.drain(timeout); + + function send(envelope$1) { + const filteredEnvelopeItems = []; + + // Drop rate limited items from envelope + envelope.forEachEnvelopeItem(envelope$1, (item, type) => { + const dataCategory = envelope.envelopeItemTypeToDataCategory(type); + if (ratelimit.isRateLimited(rateLimits, dataCategory)) { + options.recordDroppedEvent('ratelimit_backoff', dataCategory); + } else { + filteredEnvelopeItems.push(item); + } + }); + + // Skip sending if envelope is empty after filtering out rate limited events + if (filteredEnvelopeItems.length === 0) { + return Promise.resolve({}); + } + + const filteredEnvelope = envelope.createEnvelope(envelope$1[0], filteredEnvelopeItems ); + + // Creates client report for each item in an envelope + const recordEnvelopeLoss = (reason) => { + // Don't record outcomes for client reports - we don't want to create a feedback loop if client reports themselves fail to send + if (envelope.envelopeContainsItemType(filteredEnvelope, ['client_report'])) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn(`Dropping client report. Will not send outcomes (reason: ${reason}).`); + return; + } + envelope.forEachEnvelopeItem(filteredEnvelope, (item, type) => { + options.recordDroppedEvent(reason, envelope.envelopeItemTypeToDataCategory(type)); + }); + }; + + const requestTask = () => + makeRequest({ body: envelope.serializeEnvelope(filteredEnvelope) }).then( + response => { + // We don't want to throw on NOK responses, but we want to at least log them + if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn(`Sentry responded with status code ${response.statusCode} to sent event.`); + } + + rateLimits = ratelimit.updateRateLimits(rateLimits, response); + return response; + }, + error => { + recordEnvelopeLoss('network_error'); + debugBuild.DEBUG_BUILD && debugLogger.debug.error('Encountered error running transport request:', error); + throw error; + }, + ); + + return buffer.add(requestTask).then( + result => result, + error => { + if (error === promisebuffer.SENTRY_BUFFER_FULL_ERROR) { + debugBuild.DEBUG_BUILD && debugLogger.debug.error('Skipped sending event because buffer is full.'); + recordEnvelopeLoss('queue_overflow'); + return Promise.resolve({}); + } else { + throw error; + } + }, + ); + } + + return { + send, + flush, + }; +} + +exports.DEFAULT_TRANSPORT_BUFFER_SIZE = DEFAULT_TRANSPORT_BUFFER_SIZE; +exports.createTransport = createTransport; +//# sourceMappingURL=base.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/base.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/base.js.map new file mode 100644 index 0000000..9dc1ad1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/base.js.map @@ -0,0 +1 @@ +{"version":3,"file":"base.js","sources":["../../../src/transports/base.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { EventDropReason } from '../types-hoist/clientreport';\nimport type { Envelope, EnvelopeItem } from '../types-hoist/envelope';\nimport type {\n InternalBaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequestExecutor,\n} from '../types-hoist/transport';\nimport { debug } from '../utils/debug-logger';\nimport {\n createEnvelope,\n envelopeContainsItemType,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n serializeEnvelope,\n} from '../utils/envelope';\nimport { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer';\nimport { isRateLimited, type RateLimits, updateRateLimits } from '../utils/ratelimit';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n): Transport {\n let rateLimits: RateLimits = {};\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\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: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as (typeof envelope)[1]);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\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 = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n DEBUG_BUILD && 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"],"names":["makePromiseBuffer","envelope","forEachEnvelopeItem","envelopeItemTypeToDataCategory","isRateLimited","createEnvelope","envelopeContainsItemType","DEBUG_BUILD","debug","serializeEnvelope","updateRateLimits","SENTRY_BUFFER_FULL_ERROR"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/multiplexed.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/multiplexed.js new file mode 100644 index 0000000..fb8bdc2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/multiplexed.js @@ -0,0 +1,165 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const api = require('../api.js'); +const dsn = require('../utils/dsn.js'); +const envelope = require('../utils/envelope.js'); + +/** + * Key used in event.extra to provide routing information for the multiplexed transport. + * Should contain an array of `{ dsn: string, release?: string }` objects. + */ +const MULTIPLEXED_TRANSPORT_EXTRA_KEY = 'MULTIPLEXED_TRANSPORT_EXTRA_KEY'; + +/** + * Gets an event from an envelope. + * + * This is only exported for use in the tests + */ +function eventFromEnvelope(env, types) { + let event; + + envelope.forEachEnvelopeItem(env, (item, type) => { + if (types.includes(type)) { + event = Array.isArray(item) ? (item )[1] : undefined; + } + // bail out if we found an event + return !!event; + }); + + return event; +} + +/** + * Creates a transport that overrides the release on all events. + */ +function makeOverrideReleaseTransport( + createTransport, + release, +) { + return options => { + const transport = createTransport(options); + + return { + ...transport, + send: async (envelope) => { + const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']); + + if (event) { + event.release = release; + } + return transport.send(envelope); + }, + }; + }; +} + +/** Overrides the DSN in the envelope header */ +function overrideDsn(envelope$1, dsn) { + return envelope.createEnvelope( + dsn + ? { + ...envelope$1[0], + dsn, + } + : envelope$1[0], + envelope$1[1], + ); +} + +/** + * Creates a transport that can send events to different DSNs depending on the envelope contents. + * + * If no matcher is provided, the transport will look for routing information in + * `event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]`, which should contain + * an array of `{ dsn: string, release?: string }` objects. + */ +function makeMultiplexedTransport( + createTransport, + matcher, +) { + return options => { + const fallbackTransport = createTransport(options); + const otherTransports = new Map(); + + // Use provided matcher or default to simple multiplexed transport behavior + const actualMatcher = + matcher || + (args => { + const event = args.getEvent(); + if ( + event?.extra?.[MULTIPLEXED_TRANSPORT_EXTRA_KEY] && + Array.isArray(event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]) + ) { + return event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]; + } + return []; + }); + + function getTransport(dsn$1, release) { + // We create a transport for every unique dsn/release combination as there may be code from multiple releases in + // use at the same time + const key = release ? `${dsn$1}:${release}` : dsn$1; + + let transport = otherTransports.get(key); + + if (!transport) { + const validatedDsn = dsn.dsnFromString(dsn$1); + if (!validatedDsn) { + return undefined; + } + const url = api.getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel); + + transport = release + ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url }) + : createTransport({ ...options, url }); + + otherTransports.set(key, transport); + } + + return [dsn$1, transport]; + } + + async function send(envelope) { + function getEvent(types) { + const eventTypes = types?.length ? types : ['event']; + return eventFromEnvelope(envelope, eventTypes); + } + + const transports = actualMatcher({ envelope, getEvent }) + .map(result => { + if (typeof result === 'string') { + return getTransport(result, undefined); + } else { + return getTransport(result.dsn, result.release); + } + }) + .filter((t) => !!t); + + // If we have no transports to send to, use the fallback transport + // Don't override the DSN in the header for the fallback transport. '' is falsy + const transportsWithFallback = transports.length ? transports : [['', fallbackTransport]]; + + const results = (await Promise.all( + transportsWithFallback.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))), + )) ; + + return results[0]; + } + + async function flush(timeout) { + const allTransports = [...otherTransports.values(), fallbackTransport]; + const results = await Promise.all(allTransports.map(transport => transport.flush(timeout))); + return results.every(r => r); + } + + return { + send, + flush, + }; + }; +} + +exports.MULTIPLEXED_TRANSPORT_EXTRA_KEY = MULTIPLEXED_TRANSPORT_EXTRA_KEY; +exports.eventFromEnvelope = eventFromEnvelope; +exports.makeMultiplexedTransport = makeMultiplexedTransport; +//# sourceMappingURL=multiplexed.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/multiplexed.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/multiplexed.js.map new file mode 100644 index 0000000..99645da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/multiplexed.js.map @@ -0,0 +1 @@ +{"version":3,"file":"multiplexed.js","sources":["../../../src/transports/multiplexed.ts"],"sourcesContent":["import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api';\nimport type { Envelope, EnvelopeItemType, EventItem } from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { BaseTransportOptions, Transport, TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { dsnFromString } from '../utils/dsn';\nimport { createEnvelope, forEachEnvelopeItem } from '../utils/envelope';\n\ninterface MatchParam {\n /** The envelope to be sent */\n envelope: Envelope;\n /**\n * A function that returns an event from the envelope if one exists. You can optionally pass an array of envelope item\n * types to filter by - only envelopes matching the given types will be multiplexed.\n * Allowed values are: 'event', 'transaction', 'profile', 'replay_event'\n *\n * @param types Defaults to ['event']\n */\n getEvent(types?: EnvelopeItemType[]): Event | undefined;\n}\n\ntype RouteTo = { dsn: string; release: string };\ntype Matcher = (param: MatchParam) => (string | RouteTo)[];\n\n/**\n * Key used in event.extra to provide routing information for the multiplexed transport.\n * Should contain an array of `{ dsn: string, release?: string }` objects.\n */\nexport const MULTIPLEXED_TRANSPORT_EXTRA_KEY = 'MULTIPLEXED_TRANSPORT_EXTRA_KEY';\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nexport function eventFromEnvelope(env: Envelope, types: EnvelopeItemType[]): Event | undefined {\n let event: Event | undefined;\n\n forEachEnvelopeItem(env, (item, type) => {\n if (types.includes(type)) {\n event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n }\n // bail out if we found an event\n return !!event;\n });\n\n return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport(\n createTransport: (options: TO) => Transport,\n release: string,\n): (options: TO) => Transport {\n return options => {\n const transport = createTransport(options);\n\n return {\n ...transport,\n send: async (envelope: Envelope): Promise => {\n const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n if (event) {\n event.release = release;\n }\n return transport.send(envelope);\n },\n };\n };\n}\n\n/** Overrides the DSN in the envelope header */\nfunction overrideDsn(envelope: Envelope, dsn: string): Envelope {\n return createEnvelope(\n dsn\n ? {\n ...envelope[0],\n dsn,\n }\n : envelope[0],\n envelope[1],\n );\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n *\n * If no matcher is provided, the transport will look for routing information in\n * `event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]`, which should contain\n * an array of `{ dsn: string, release?: string }` objects.\n */\nexport function makeMultiplexedTransport(\n createTransport: (options: TO) => Transport,\n matcher?: Matcher,\n): (options: TO) => Transport {\n return options => {\n const fallbackTransport = createTransport(options);\n const otherTransports: Map = new Map();\n\n // Use provided matcher or default to simple multiplexed transport behavior\n const actualMatcher: Matcher =\n matcher ||\n (args => {\n const event = args.getEvent();\n if (\n event?.extra?.[MULTIPLEXED_TRANSPORT_EXTRA_KEY] &&\n Array.isArray(event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY])\n ) {\n return event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY];\n }\n return [];\n });\n\n function getTransport(dsn: string, release: string | undefined): [string, Transport] | undefined {\n // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n // use at the same time\n const key = release ? `${dsn}:${release}` : dsn;\n\n let transport = otherTransports.get(key);\n\n if (!transport) {\n const validatedDsn = dsnFromString(dsn);\n if (!validatedDsn) {\n return undefined;\n }\n const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel);\n\n transport = release\n ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n : createTransport({ ...options, url });\n\n otherTransports.set(key, transport);\n }\n\n return [dsn, transport];\n }\n\n async function send(envelope: Envelope): Promise {\n function getEvent(types?: EnvelopeItemType[]): Event | undefined {\n const eventTypes: EnvelopeItemType[] = types?.length ? types : ['event'];\n return eventFromEnvelope(envelope, eventTypes);\n }\n\n const transports = actualMatcher({ envelope, getEvent })\n .map(result => {\n if (typeof result === 'string') {\n return getTransport(result, undefined);\n } else {\n return getTransport(result.dsn, result.release);\n }\n })\n .filter((t): t is [string, Transport] => !!t);\n\n // If we have no transports to send to, use the fallback transport\n // Don't override the DSN in the header for the fallback transport. '' is falsy\n const transportsWithFallback: [string, Transport][] = transports.length ? transports : [['', fallbackTransport]];\n\n const results = (await Promise.all(\n transportsWithFallback.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))),\n )) as [TransportMakeRequestResponse, ...TransportMakeRequestResponse[]];\n\n return results[0];\n }\n\n async function flush(timeout: number | undefined): Promise {\n const allTransports = [...otherTransports.values(), fallbackTransport];\n const results = await Promise.all(allTransports.map(transport => transport.flush(timeout)));\n return results.every(r => r);\n }\n\n return {\n send,\n flush,\n };\n };\n}\n"],"names":["forEachEnvelopeItem","envelope","createEnvelope","dsn","dsnFromString","getEnvelopeEndpointWithUrlEncodedAuth"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/offline.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/offline.js new file mode 100644 index 0000000..993ad67 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/offline.js @@ -0,0 +1,158 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const debugLogger = require('../utils/debug-logger.js'); +const envelope = require('../utils/envelope.js'); +const ratelimit = require('../utils/ratelimit.js'); + +const MIN_DELAY = 100; // 100 ms +const START_DELAY = 5000; // 5 seconds +const MAX_DELAY = 3.6e6; // 1 hour + +/** + * Wraps a transport and stores and retries events when they fail to send. + * + * @param createTransport The transport to wrap. + */ +function makeOfflineTransport( + createTransport, +) { + function log(...args) { + debugBuild.DEBUG_BUILD && debugLogger.debug.log('[Offline]:', ...args); + } + + return options => { + const transport = createTransport(options); + + if (!options.createStore) { + throw new Error('No `createStore` function was provided'); + } + + const store = options.createStore(options); + + let retryDelay = START_DELAY; + let flushTimer; + + function shouldQueue(env, error, retryDelay) { + // We want to drop client reports because they can be generated when we retry sending events while offline. + if (envelope.envelopeContainsItemType(env, ['client_report'])) { + return false; + } + + if (options.shouldStore) { + return options.shouldStore(env, error, retryDelay); + } + + return true; + } + + function flushIn(delay) { + if (flushTimer) { + clearTimeout(flushTimer ); + } + + flushTimer = setTimeout(async () => { + flushTimer = undefined; + + const found = await store.shift(); + if (found) { + log('Attempting to send previously queued event'); + + // We should to update the sent_at timestamp to the current time. + found[0].sent_at = new Date().toISOString(); + + void send(found, true).catch(e => { + log('Failed to retry sending', e); + }); + } + }, delay) ; + + // We need to unref the timer in node.js, otherwise the node process never exit. + if (typeof flushTimer !== 'number' && flushTimer.unref) { + flushTimer.unref(); + } + } + + function flushWithBackOff() { + if (flushTimer) { + return; + } + + flushIn(retryDelay); + + retryDelay = Math.min(retryDelay * 2, MAX_DELAY); + } + + async function send(envelope$1, isRetry = false) { + // We queue all replay envelopes to avoid multiple replay envelopes being sent at the same time. If one fails, we + // need to retry them in order. + if (!isRetry && envelope.envelopeContainsItemType(envelope$1, ['replay_event', 'replay_recording'])) { + await store.push(envelope$1); + flushIn(MIN_DELAY); + return {}; + } + + try { + if (options.shouldSend && (await options.shouldSend(envelope$1)) === false) { + throw new Error('Envelope not sent because `shouldSend` callback returned false'); + } + + const result = await transport.send(envelope$1); + + let delay = MIN_DELAY; + + if (result) { + // If there's a retry-after header, use that as the next delay. + if (result.headers?.['retry-after']) { + delay = ratelimit.parseRetryAfterHeader(result.headers['retry-after']); + } else if (result.headers?.['x-sentry-rate-limits']) { + delay = 60000; // 60 seconds + } // If we have a server error, return now so we don't flush the queue. + else if ((result.statusCode || 0) >= 400) { + return result; + } + } + + flushIn(delay); + retryDelay = START_DELAY; + return result; + } catch (e) { + if (await shouldQueue(envelope$1, e , retryDelay)) { + // If this envelope was a retry, we want to add it to the front of the queue so it's retried again first. + if (isRetry) { + await store.unshift(envelope$1); + } else { + await store.push(envelope$1); + } + flushWithBackOff(); + log('Error sending. Event queued.', e ); + return {}; + } else { + throw e; + } + } + } + + if (options.flushAtStartup) { + flushWithBackOff(); + } + + return { + send, + flush: timeout => { + // If there's no timeout, we should attempt to flush the offline queue. + if (timeout === undefined) { + retryDelay = START_DELAY; + flushIn(MIN_DELAY); + } + + return transport.flush(timeout); + }, + }; + }; +} + +exports.MIN_DELAY = MIN_DELAY; +exports.START_DELAY = START_DELAY; +exports.makeOfflineTransport = makeOfflineTransport; +//# sourceMappingURL=offline.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/offline.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/offline.js.map new file mode 100644 index 0000000..2518f74 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/offline.js.map @@ -0,0 +1 @@ +{"version":3,"file":"offline.js","sources":["../../../src/transports/offline.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { Envelope } from '../types-hoist/envelope';\nimport type { InternalBaseTransportOptions, Transport, TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { debug } from '../utils/debug-logger';\nimport { envelopeContainsItemType } from '../utils/envelope';\nimport { parseRetryAfterHeader } from '../utils/ratelimit';\n\nexport const MIN_DELAY = 100; // 100 ms\nexport const START_DELAY = 5_000; // 5 seconds\nconst MAX_DELAY = 3.6e6; // 1 hour\n\nexport interface OfflineStore {\n push(env: Envelope): Promise;\n unshift(env: Envelope): Promise;\n shift(): Promise;\n}\n\nexport type CreateOfflineStore = (options: OfflineTransportOptions) => OfflineStore;\n\nexport interface OfflineTransportOptions extends InternalBaseTransportOptions {\n /**\n * A function that creates the offline store instance.\n */\n createStore?: CreateOfflineStore;\n\n /**\n * Flush the offline store shortly after startup.\n *\n * Defaults: false\n */\n flushAtStartup?: boolean;\n\n /**\n * Called before an event is stored.\n *\n * Return false to drop the envelope rather than store it.\n *\n * @param envelope The envelope that failed to send.\n * @param error The error that occurred.\n * @param retryDelay The current retry delay in milliseconds.\n * @returns Whether the envelope should be stored.\n */\n shouldStore?: (envelope: Envelope, error: Error, retryDelay: number) => boolean | Promise;\n\n /**\n * Should an attempt be made to send the envelope to Sentry.\n *\n * If this function is supplied and returns false, `shouldStore` will be called to determine if the envelope should be stored.\n *\n * @param envelope The envelope that will be sent.\n * @returns Whether we should attempt to send the envelope\n */\n shouldSend?: (envelope: Envelope) => boolean | Promise;\n}\n\ntype Timer = number | { unref?: () => void };\n\n/**\n * Wraps a transport and stores and retries events when they fail to send.\n *\n * @param createTransport The transport to wrap.\n */\nexport function makeOfflineTransport(\n createTransport: (options: TO) => Transport,\n): (options: TO & OfflineTransportOptions) => Transport {\n function log(...args: unknown[]): void {\n DEBUG_BUILD && debug.log('[Offline]:', ...args);\n }\n\n return options => {\n const transport = createTransport(options);\n\n if (!options.createStore) {\n throw new Error('No `createStore` function was provided');\n }\n\n const store = options.createStore(options);\n\n let retryDelay = START_DELAY;\n let flushTimer: Timer | undefined;\n\n function shouldQueue(env: Envelope, error: Error, retryDelay: number): boolean | Promise {\n // We want to drop client reports because they can be generated when we retry sending events while offline.\n if (envelopeContainsItemType(env, ['client_report'])) {\n return false;\n }\n\n if (options.shouldStore) {\n return options.shouldStore(env, error, retryDelay);\n }\n\n return true;\n }\n\n function flushIn(delay: number): void {\n if (flushTimer) {\n clearTimeout(flushTimer as ReturnType);\n }\n\n flushTimer = setTimeout(async () => {\n flushTimer = undefined;\n\n const found = await store.shift();\n if (found) {\n log('Attempting to send previously queued event');\n\n // We should to update the sent_at timestamp to the current time.\n found[0].sent_at = new Date().toISOString();\n\n void send(found, true).catch(e => {\n log('Failed to retry sending', e);\n });\n }\n }, delay) as Timer;\n\n // We need to unref the timer in node.js, otherwise the node process never exit.\n if (typeof flushTimer !== 'number' && flushTimer.unref) {\n flushTimer.unref();\n }\n }\n\n function flushWithBackOff(): void {\n if (flushTimer) {\n return;\n }\n\n flushIn(retryDelay);\n\n retryDelay = Math.min(retryDelay * 2, MAX_DELAY);\n }\n\n async function send(envelope: Envelope, isRetry: boolean = false): Promise {\n // We queue all replay envelopes to avoid multiple replay envelopes being sent at the same time. If one fails, we\n // need to retry them in order.\n if (!isRetry && envelopeContainsItemType(envelope, ['replay_event', 'replay_recording'])) {\n await store.push(envelope);\n flushIn(MIN_DELAY);\n return {};\n }\n\n try {\n if (options.shouldSend && (await options.shouldSend(envelope)) === false) {\n throw new Error('Envelope not sent because `shouldSend` callback returned false');\n }\n\n const result = await transport.send(envelope);\n\n let delay = MIN_DELAY;\n\n if (result) {\n // If there's a retry-after header, use that as the next delay.\n if (result.headers?.['retry-after']) {\n delay = parseRetryAfterHeader(result.headers['retry-after']);\n } else if (result.headers?.['x-sentry-rate-limits']) {\n delay = 60_000; // 60 seconds\n } // If we have a server error, return now so we don't flush the queue.\n else if ((result.statusCode || 0) >= 400) {\n return result;\n }\n }\n\n flushIn(delay);\n retryDelay = START_DELAY;\n return result;\n } catch (e) {\n if (await shouldQueue(envelope, e as Error, retryDelay)) {\n // If this envelope was a retry, we want to add it to the front of the queue so it's retried again first.\n if (isRetry) {\n await store.unshift(envelope);\n } else {\n await store.push(envelope);\n }\n flushWithBackOff();\n log('Error sending. Event queued.', e as Error);\n return {};\n } else {\n throw e;\n }\n }\n }\n\n if (options.flushAtStartup) {\n flushWithBackOff();\n }\n\n return {\n send,\n flush: timeout => {\n // If there's no timeout, we should attempt to flush the offline queue.\n if (timeout === undefined) {\n retryDelay = START_DELAY;\n flushIn(MIN_DELAY);\n }\n\n return transport.flush(timeout);\n },\n };\n };\n}\n"],"names":["DEBUG_BUILD","debug","envelopeContainsItemType","envelope","parseRetryAfterHeader"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/userAgent.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/userAgent.js new file mode 100644 index 0000000..ae9a1fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/userAgent.js @@ -0,0 +1,25 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Takes the SDK metadata and adds the user-agent header to the transport options. + * This ensures that the SDK sends the user-agent header with SDK name and version to + * all requests made by the transport. + * + * @see https://develop.sentry.dev/sdk/overview/#user-agent + */ +function addUserAgentToTransportHeaders(options) { + const sdkMetadata = options._metadata?.sdk; + const sdkUserAgent = + sdkMetadata?.name && sdkMetadata?.version ? `${sdkMetadata?.name}/${sdkMetadata?.version}` : undefined; + + options.transportOptions = { + ...options.transportOptions, + headers: { + ...(sdkUserAgent && { 'user-agent': sdkUserAgent }), + ...options.transportOptions?.headers, + }, + }; +} + +exports.addUserAgentToTransportHeaders = addUserAgentToTransportHeaders; +//# sourceMappingURL=userAgent.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/userAgent.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/userAgent.js.map new file mode 100644 index 0000000..430bfb9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/transports/userAgent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"userAgent.js","sources":["../../../src/transports/userAgent.ts"],"sourcesContent":["import type { ClientOptions } from '../types-hoist/options';\n\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 */\nexport function addUserAgentToTransportHeaders(options: ClientOptions): void {\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"],"names":[],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,CAAC,OAAO,EAAuB;AAC7E,EAAE,MAAM,WAAA,GAAc,OAAO,CAAC,SAAS,EAAE,GAAG;AAC5C,EAAE,MAAM,YAAA;AACR,IAAI,WAAW,EAAE,IAAA,IAAQ,WAAW,EAAE,OAAA,GAAU,CAAC,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA,EAAA,WAAA,EAAA,OAAA,CAAA,CAAA,GAAA,SAAA;;AAEA,EAAA,OAAA,CAAA,gBAAA,GAAA;AACA,IAAA,GAAA,OAAA,CAAA,gBAAA;AACA,IAAA,OAAA,EAAA;AACA,MAAA,IAAA,YAAA,IAAA,EAAA,YAAA,EAAA,YAAA,EAAA,CAAA;AACA,MAAA,GAAA,OAAA,CAAA,gBAAA,EAAA,OAAA;AACA,KAAA;AACA,GAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/trpc.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/trpc.js new file mode 100644 index 0000000..cbf4fa5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/trpc.js @@ -0,0 +1,95 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('./currentScopes.js'); +const exports$1 = require('./exports.js'); +const semanticAttributes = require('./semanticAttributes.js'); +const object = require('./utils/object.js'); +const normalize = require('./utils/normalize.js'); +const trace = require('./tracing/trace.js'); + +const trpcCaptureContext = { mechanism: { handled: false, type: 'auto.rpc.trpc.middleware' } }; + +function captureIfError(nextResult) { + // TODO: Set span status based on what TRPCError was encountered + if ( + typeof nextResult === 'object' && + nextResult !== null && + 'ok' in nextResult && + !nextResult.ok && + 'error' in nextResult + ) { + exports$1.captureException(nextResult.error, trpcCaptureContext); + } +} + +/** + * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures. + */ +function trpcMiddleware(options = {}) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + return async function (opts) { + const { path, type, next, rawInput, getRawInput } = opts; + + const client = currentScopes.getClient(); + const clientOptions = client?.getOptions(); + + const trpcContext = { + procedure_path: path, + procedure_type: type, + }; + + object.addNonEnumerableProperty( + trpcContext, + '__sentry_override_normalization_depth__', + 1 + // 1 for context.input + the normal normalization depth + (clientOptions?.normalizeDepth ?? 5), // 5 is a sane depth + ); + + if (options.attachRpcInput !== undefined ? options.attachRpcInput : clientOptions?.sendDefaultPii) { + if (rawInput !== undefined) { + trpcContext.input = normalize.normalize(rawInput); + } + + if (getRawInput !== undefined && typeof getRawInput === 'function') { + try { + const rawRes = await getRawInput(); + + trpcContext.input = normalize.normalize(rawRes); + } catch { + // noop + } + } + } + + return currentScopes.withIsolationScope(scope => { + scope.setContext('trpc', trpcContext); + return trace.startSpanManual( + { + name: `trpc/${path}`, + op: 'rpc.server', + attributes: { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route', + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.rpc.trpc', + }, + forceTransaction: !!options.forceTransaction, + }, + async span => { + try { + const nextResult = await next(); + captureIfError(nextResult); + span.end(); + return nextResult; + } catch (e) { + exports$1.captureException(e, trpcCaptureContext); + span.end(); + throw e; + } + }, + ) ; + }); + }; +} + +exports.trpcMiddleware = trpcMiddleware; +//# sourceMappingURL=trpc.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/trpc.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/trpc.js.map new file mode 100644 index 0000000..d682382 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/trpc.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trpc.js","sources":["../../src/trpc.ts"],"sourcesContent":["import { getClient, withIsolationScope } from './currentScopes';\nimport { captureException } from './exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes';\nimport { startSpanManual } from './tracing';\nimport { normalize } from './utils/normalize';\nimport { addNonEnumerableProperty } from './utils/object';\n\ninterface SentryTrpcMiddlewareOptions {\n /** Whether to include procedure inputs in reported events. Defaults to `false`. */\n attachRpcInput?: boolean;\n forceTransaction?: boolean;\n}\n\nexport interface SentryTrpcMiddlewareArguments {\n path?: unknown;\n type?: unknown;\n next: () => T;\n rawInput?: unknown;\n getRawInput?: () => Promise;\n}\n\nconst trpcCaptureContext = { mechanism: { handled: false, type: 'auto.rpc.trpc.middleware' } };\n\nfunction captureIfError(nextResult: unknown): void {\n // TODO: Set span status based on what TRPCError was encountered\n if (\n typeof nextResult === 'object' &&\n nextResult !== null &&\n 'ok' in nextResult &&\n !nextResult.ok &&\n 'error' in nextResult\n ) {\n captureException(nextResult.error, trpcCaptureContext);\n }\n}\n\ntype SentryTrpcMiddleware = T extends Promise ? T : Promise;\n\n/**\n * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures.\n */\nexport function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return async function (opts: SentryTrpcMiddlewareArguments): SentryTrpcMiddleware {\n const { path, type, next, rawInput, getRawInput } = opts;\n\n const client = getClient();\n const clientOptions = client?.getOptions();\n\n const trpcContext: Record = {\n procedure_path: path,\n procedure_type: type,\n };\n\n addNonEnumerableProperty(\n trpcContext,\n '__sentry_override_normalization_depth__',\n 1 + // 1 for context.input + the normal normalization depth\n (clientOptions?.normalizeDepth ?? 5), // 5 is a sane depth\n );\n\n if (options.attachRpcInput !== undefined ? options.attachRpcInput : clientOptions?.sendDefaultPii) {\n if (rawInput !== undefined) {\n trpcContext.input = normalize(rawInput);\n }\n\n if (getRawInput !== undefined && typeof getRawInput === 'function') {\n try {\n const rawRes = await getRawInput();\n\n trpcContext.input = normalize(rawRes);\n } catch {\n // noop\n }\n }\n }\n\n return withIsolationScope(scope => {\n scope.setContext('trpc', trpcContext);\n return startSpanManual(\n {\n name: `trpc/${path}`,\n op: 'rpc.server',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.rpc.trpc',\n },\n forceTransaction: !!options.forceTransaction,\n },\n async span => {\n try {\n const nextResult = await next();\n captureIfError(nextResult);\n span.end();\n return nextResult;\n } catch (e) {\n captureException(e, trpcCaptureContext);\n span.end();\n throw e;\n }\n },\n ) as SentryTrpcMiddleware;\n });\n };\n}\n"],"names":["captureException","getClient","addNonEnumerableProperty","normalize","withIsolationScope","startSpanManual","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN"],"mappings":";;;;;;;;;AAqBA,MAAM,kBAAA,GAAqB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,0BAAA,IAA8B;;AAE9F,SAAS,cAAc,CAAC,UAAU,EAAiB;AACnD;AACA,EAAE;AACF,IAAI,OAAO,UAAA,KAAe,QAAA;AAC1B,IAAI,UAAA,KAAe,IAAA;AACnB,IAAI,IAAA,IAAQ,UAAA;AACZ,IAAI,CAAC,UAAU,CAAC,EAAA;AAChB,IAAI,WAAW;AACf,IAAI;AACJ,IAAIA,0BAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,kBAAkB,CAAC;AAC1D,EAAE;AACF;;AAIA;AACA;AACA;AACO,SAAS,cAAc,CAAC,OAAO,GAAgC,EAAE,EAAE;AAC1E;AACA;AACA,EAAE,OAAO,gBAAmB,IAAI,EAA6D;AAC7F,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAA,EAAY,GAAI,IAAI;;AAE5D,IAAI,MAAM,MAAA,GAASC,uBAAS,EAAE;AAC9B,IAAI,MAAM,aAAA,GAAgB,MAAM,EAAE,UAAU,EAAE;;AAE9C,IAAI,MAAM,WAAW,GAA4B;AACjD,MAAM,cAAc,EAAE,IAAI;AAC1B,MAAM,cAAc,EAAE,IAAI;AAC1B,KAAK;;AAEL,IAAIC,+BAAwB;AAC5B,MAAM,WAAW;AACjB,MAAM,yCAAyC;AAC/C,MAAM,CAAA;AACN,SAAS,aAAa,EAAE,cAAA,IAAkB,CAAC,CAAC;AAC5C,KAAK;;AAEL,IAAI,IAAI,OAAO,CAAC,mBAAmB,SAAA,GAAY,OAAO,CAAC,cAAA,GAAiB,aAAa,EAAE,cAAc,EAAE;AACvG,MAAM,IAAI,QAAA,KAAa,SAAS,EAAE;AAClC,QAAQ,WAAW,CAAC,KAAA,GAAQC,mBAAS,CAAC,QAAQ,CAAC;AAC/C,MAAM;;AAEN,MAAM,IAAI,WAAA,KAAgB,SAAA,IAAa,OAAO,WAAA,KAAgB,UAAU,EAAE;AAC1E,QAAQ,IAAI;AACZ,UAAU,MAAM,MAAA,GAAS,MAAM,WAAW,EAAE;;AAE5C,UAAU,WAAW,CAAC,KAAA,GAAQA,mBAAS,CAAC,MAAM,CAAC;AAC/C,QAAQ,EAAE,MAAM;AAChB;AACA,QAAQ;AACR,MAAM;AACN,IAAI;;AAEJ,IAAI,OAAOC,gCAAkB,CAAC,KAAA,IAAS;AACvC,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC;AAC3C,MAAM,OAAOC,qBAAe;AAC5B,QAAQ;AACR,UAAU,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AACA,UAAA,EAAA,EAAA,YAAA;AACA,UAAA,UAAA,EAAA;AACA,YAAA,CAAAC,mDAAA,GAAA,OAAA;AACA,YAAA,CAAAC,mDAAA,GAAA,eAAA;AACA,WAAA;AACA,UAAA,gBAAA,EAAA,CAAA,CAAA,OAAA,CAAA,gBAAA;AACA,SAAA;AACA,QAAA,MAAA,IAAA,IAAA;AACA,UAAA,IAAA;AACA,YAAA,MAAA,UAAA,GAAA,MAAA,IAAA,EAAA;AACA,YAAA,cAAA,CAAA,UAAA,CAAA;AACA,YAAA,IAAA,CAAA,GAAA,EAAA;AACA,YAAA,OAAA,UAAA;AACA,UAAA,CAAA,CAAA,OAAA,CAAA,EAAA;AACA,YAAAP,0BAAA,CAAA,CAAA,EAAA,kBAAA,CAAA;AACA,YAAA,IAAA,CAAA,GAAA,EAAA;AACA,YAAA,MAAA,CAAA;AACA,UAAA;AACA,QAAA,CAAA;AACA,OAAA;AACA,IAAA,CAAA,CAAA;AACA,EAAA,CAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/aggregate-errors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/aggregate-errors.js new file mode 100644 index 0000000..b2a8a96 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/aggregate-errors.js @@ -0,0 +1,126 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const is = require('./is.js'); + +/** + * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter. + */ +function applyAggregateErrorsToEvent( + exceptionFromErrorImplementation, + parser, + key, + limit, + event, + hint, +) { + if (!event.exception?.values || !hint || !is.isInstanceOf(hint.originalException, Error)) { + return; + } + + // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error + const originalException = + event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined; + + // We only create exception grouping if there is an exception in the event. + if (originalException) { + event.exception.values = aggregateExceptionsFromError( + exceptionFromErrorImplementation, + parser, + limit, + hint.originalException , + key, + event.exception.values, + originalException, + 0, + ); + } +} + +function aggregateExceptionsFromError( + exceptionFromErrorImplementation, + parser, + limit, + error, + key, + prevExceptions, + exception, + exceptionId, +) { + if (prevExceptions.length >= limit + 1) { + return prevExceptions; + } + + let newExceptions = [...prevExceptions]; + + // Recursively call this function in order to walk down a chain of errors + if (is.isInstanceOf(error[key], Error)) { + applyExceptionGroupFieldsForParentException(exception, exceptionId); + const newException = exceptionFromErrorImplementation(parser, error[key] ); + const newExceptionId = newExceptions.length; + applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId); + newExceptions = aggregateExceptionsFromError( + exceptionFromErrorImplementation, + parser, + limit, + error[key] , + key, + [newException, ...newExceptions], + newException, + newExceptionId, + ); + } + + // This will create exception grouping for AggregateErrors + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError + if (Array.isArray(error.errors)) { + error.errors.forEach((childError, i) => { + if (is.isInstanceOf(childError, Error)) { + applyExceptionGroupFieldsForParentException(exception, exceptionId); + const newException = exceptionFromErrorImplementation(parser, childError ); + const newExceptionId = newExceptions.length; + applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId); + newExceptions = aggregateExceptionsFromError( + exceptionFromErrorImplementation, + parser, + limit, + childError , + key, + [newException, ...newExceptions], + newException, + newExceptionId, + ); + } + }); + } + + return newExceptions; +} + +function applyExceptionGroupFieldsForParentException(exception, exceptionId) { + exception.mechanism = { + handled: true, + type: 'auto.core.linked_errors', + ...exception.mechanism, + ...(exception.type === 'AggregateError' && { is_exception_group: true }), + exception_id: exceptionId, + }; +} + +function applyExceptionGroupFieldsForChildException( + exception, + source, + exceptionId, + parentId, +) { + exception.mechanism = { + handled: true, + ...exception.mechanism, + type: 'chained', + source, + exception_id: exceptionId, + parent_id: parentId, + }; +} + +exports.applyAggregateErrorsToEvent = applyAggregateErrorsToEvent; +//# sourceMappingURL=aggregate-errors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/aggregate-errors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/aggregate-errors.js.map new file mode 100644 index 0000000..7d329bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/aggregate-errors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"aggregate-errors.js","sources":["../../../src/utils/aggregate-errors.ts"],"sourcesContent":["import type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isInstanceOf } from './is';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): void {\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: Exception | undefined =\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 as ExtendedError,\n key,\n event.exception.values,\n originalException,\n 0,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n prevExceptions: Exception[],\n exception: Exception,\n exceptionId: number,\n): Exception[] {\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);\n const newException = exceptionFromErrorImplementation(parser, error[key] as Error);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key] as ExtendedError,\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 (Array.isArray(error.errors)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, childError as Error);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError as ExtendedError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception: Exception, exceptionId: number): void {\n exception.mechanism = {\n handled: true,\n type: 'auto.core.linked_errors',\n ...exception.mechanism,\n ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception: Exception,\n source: string,\n exceptionId: number,\n parentId: number | undefined,\n): void {\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"],"names":["isInstanceOf"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ai/providerSkip.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ai/providerSkip.js new file mode 100644 index 0000000..25bdfa7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ai/providerSkip.js @@ -0,0 +1,71 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../../debug-build.js'); +const debugLogger = require('../debug-logger.js'); + +/** + * Registry tracking which AI provider modules should skip instrumentation wrapping. + * + * This prevents duplicate spans when a higher-level integration (like LangChain) + * already instruments AI providers at a higher abstraction level. + */ +const SKIPPED_AI_PROVIDERS = new Set(); + +/** + * Mark AI provider modules to skip instrumentation wrapping. + * + * This prevents duplicate spans when a higher-level integration (like LangChain) + * already instruments AI providers at a higher abstraction level. + * + * @internal + * @param modules - Array of npm module names to skip (e.g., '@anthropic-ai/sdk', 'openai') + * + * @example + * ```typescript + * // In LangChain integration + * _INTERNAL_skipAiProviderWrapping(['@anthropic-ai/sdk', 'openai', '@google/generative-ai']); + * ``` + */ +function _INTERNAL_skipAiProviderWrapping(modules) { + modules.forEach(module => { + SKIPPED_AI_PROVIDERS.add(module); + debugBuild.DEBUG_BUILD && debugLogger.debug.log(`AI provider "${module}" wrapping will be skipped`); + }); +} + +/** + * Check if an AI provider module should skip instrumentation wrapping. + * + * @internal + * @param module - The npm module name (e.g., '@anthropic-ai/sdk', 'openai') + * @returns true if wrapping should be skipped + * + * @example + * ```typescript + * // In AI provider instrumentation + * if (_INTERNAL_shouldSkipAiProviderWrapping('@anthropic-ai/sdk')) { + * return Reflect.construct(Original, args); // Don't instrument + * } + * ``` + */ +function _INTERNAL_shouldSkipAiProviderWrapping(module) { + return SKIPPED_AI_PROVIDERS.has(module); +} + +/** + * Clear all AI provider skip registrations. + * + * This is automatically called at the start of Sentry.init() to ensure a clean state + * between different client initializations. + * + * @internal + */ +function _INTERNAL_clearAiProviderSkips() { + SKIPPED_AI_PROVIDERS.clear(); + debugBuild.DEBUG_BUILD && debugLogger.debug.log('Cleared AI provider skip registrations'); +} + +exports._INTERNAL_clearAiProviderSkips = _INTERNAL_clearAiProviderSkips; +exports._INTERNAL_shouldSkipAiProviderWrapping = _INTERNAL_shouldSkipAiProviderWrapping; +exports._INTERNAL_skipAiProviderWrapping = _INTERNAL_skipAiProviderWrapping; +//# sourceMappingURL=providerSkip.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ai/providerSkip.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ai/providerSkip.js.map new file mode 100644 index 0000000..7c12fd3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ai/providerSkip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"providerSkip.js","sources":["../../../../src/utils/ai/providerSkip.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../debug-logger';\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 */\nexport function _INTERNAL_skipAiProviderWrapping(modules: string[]): void {\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 */\nexport function _INTERNAL_shouldSkipAiProviderWrapping(module: string): boolean {\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 */\nexport function _INTERNAL_clearAiProviderSkips(): void {\n SKIPPED_AI_PROVIDERS.clear();\n DEBUG_BUILD && debug.log('Cleared AI provider skip registrations');\n}\n"],"names":["DEBUG_BUILD","debug"],"mappings":";;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,oBAAA,GAAuB,IAAI,GAAG,EAAU;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gCAAgC,CAAC,OAAO,EAAkB;AAC1E,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;AAC5B,IAAI,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,IAAIA,sBAAA,IAAeC,iBAAK,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAChF,EAAE,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sCAAsC,CAAC,MAAM,EAAmB;AAChF,EAAE,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,GAAS;AACvD,EAAE,oBAAoB,CAAC,KAAK,EAAE;AAC9B,EAAED,0BAAeC,iBAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC;AACpE;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/anr.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/anr.js new file mode 100644 index 0000000..d0129fa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/anr.js @@ -0,0 +1,76 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const nodeStackTrace = require('./node-stack-trace.js'); +const stacktrace = require('./stacktrace.js'); + +/** + * A node.js watchdog timer + * @param pollInterval The interval that we expect to get polled at + * @param anrThreshold The threshold for when we consider ANR + * @param callback The callback to call for ANR + * @returns An object with `poll` and `enabled` functions {@link WatchdogReturn} + */ +function watchdogTimer( + createTimer, + pollInterval, + anrThreshold, + callback, +) { + const timer = createTimer(); + let triggered = false; + let enabled = true; + + setInterval(() => { + const diffMs = timer.getTimeMs(); + + if (triggered === false && diffMs > pollInterval + anrThreshold) { + triggered = true; + if (enabled) { + callback(); + } + } + + if (diffMs < pollInterval + anrThreshold) { + triggered = false; + } + }, 20); + + return { + poll: () => { + timer.reset(); + }, + enabled: (state) => { + enabled = state; + }, + }; +} + +// types copied from inspector.d.ts + +/** + * Converts Debugger.CallFrame to Sentry StackFrame + */ +function callFrameToStackFrame( + frame, + url, + getModuleFromFilename, +) { + const filename = url ? url.replace(/^file:\/\//, '') : undefined; + + // CallFrame row/col are 0 based, whereas StackFrame are 1 based + const colno = frame.location.columnNumber ? frame.location.columnNumber + 1 : undefined; + const lineno = frame.location.lineNumber ? frame.location.lineNumber + 1 : undefined; + + return { + filename, + module: getModuleFromFilename(filename), + function: frame.functionName || stacktrace.UNKNOWN_FUNCTION, + colno, + lineno, + in_app: filename ? nodeStackTrace.filenameIsInApp(filename) : undefined, + }; +} + +exports.callFrameToStackFrame = callFrameToStackFrame; +exports.watchdogTimer = watchdogTimer; +//# sourceMappingURL=anr.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/anr.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/anr.js.map new file mode 100644 index 0000000..34ff388 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/anr.js.map @@ -0,0 +1 @@ +{"version":3,"file":"anr.js","sources":["../../../src/utils/anr.ts"],"sourcesContent":["import type { StackFrame } from '../types-hoist/stackframe';\nimport { filenameIsInApp } from './node-stack-trace';\nimport { UNKNOWN_FUNCTION } from './stacktrace';\n\ntype WatchdogReturn = {\n /** Resets the watchdog timer */\n poll: () => void;\n /** Enables or disables the watchdog timer */\n enabled: (state: boolean) => void;\n};\n\ntype CreateTimerImpl = () => { getTimeMs: () => number; reset: () => void };\n\n/**\n * A node.js watchdog timer\n * @param pollInterval The interval that we expect to get polled at\n * @param anrThreshold The threshold for when we consider ANR\n * @param callback The callback to call for ANR\n * @returns An object with `poll` and `enabled` functions {@link WatchdogReturn}\n */\nexport function watchdogTimer(\n createTimer: CreateTimerImpl,\n pollInterval: number,\n anrThreshold: number,\n callback: () => void,\n): WatchdogReturn {\n const timer = createTimer();\n let triggered = false;\n let enabled = true;\n\n setInterval(() => {\n const diffMs = timer.getTimeMs();\n\n if (triggered === false && diffMs > pollInterval + anrThreshold) {\n triggered = true;\n if (enabled) {\n callback();\n }\n }\n\n if (diffMs < pollInterval + anrThreshold) {\n triggered = false;\n }\n }, 20);\n\n return {\n poll: () => {\n timer.reset();\n },\n enabled: (state: boolean) => {\n enabled = state;\n },\n };\n}\n\n// types copied from inspector.d.ts\ninterface Location {\n scriptId: string;\n lineNumber: number;\n columnNumber?: number;\n}\n\ninterface CallFrame {\n functionName: string;\n location: Location;\n url: string;\n}\n\n/**\n * Converts Debugger.CallFrame to Sentry StackFrame\n */\nexport function callFrameToStackFrame(\n frame: CallFrame,\n url: string | undefined,\n getModuleFromFilename: (filename: string | undefined) => string | undefined,\n): StackFrame {\n const filename = url ? url.replace(/^file:\\/\\//, '') : undefined;\n\n // CallFrame row/col are 0 based, whereas StackFrame are 1 based\n const colno = frame.location.columnNumber ? frame.location.columnNumber + 1 : undefined;\n const lineno = frame.location.lineNumber ? frame.location.lineNumber + 1 : undefined;\n\n return {\n filename,\n module: getModuleFromFilename(filename),\n function: frame.functionName || UNKNOWN_FUNCTION,\n colno,\n lineno,\n in_app: filename ? filenameIsInApp(filename) : undefined,\n };\n}\n"],"names":["UNKNOWN_FUNCTION","filenameIsInApp"],"mappings":";;;;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa;AAC7B,EAAE,WAAW;AACb,EAAE,YAAY;AACd,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,EAAkB;AAClB,EAAE,MAAM,KAAA,GAAQ,WAAW,EAAE;AAC7B,EAAE,IAAI,SAAA,GAAY,KAAK;AACvB,EAAE,IAAI,OAAA,GAAU,IAAI;;AAEpB,EAAE,WAAW,CAAC,MAAM;AACpB,IAAI,MAAM,MAAA,GAAS,KAAK,CAAC,SAAS,EAAE;;AAEpC,IAAI,IAAI,SAAA,KAAc,KAAA,IAAS,MAAA,GAAS,YAAA,GAAe,YAAY,EAAE;AACrE,MAAM,SAAA,GAAY,IAAI;AACtB,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,QAAQ,EAAE;AAClB,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,MAAA,GAAS,YAAA,GAAe,YAAY,EAAE;AAC9C,MAAM,SAAA,GAAY,KAAK;AACvB,IAAI;AACJ,EAAE,CAAC,EAAE,EAAE,CAAC;;AAER,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,MAAM;AAChB,MAAM,KAAK,CAAC,KAAK,EAAE;AACnB,IAAI,CAAC;AACL,IAAI,OAAO,EAAE,CAAC,KAAK,KAAc;AACjC,MAAM,OAAA,GAAU,KAAK;AACrB,IAAI,CAAC;AACL,GAAG;AACH;;AAEA;;AAaA;AACA;AACA;AACO,SAAS,qBAAqB;AACrC,EAAE,KAAK;AACP,EAAE,GAAG;AACL,EAAE,qBAAqB;AACvB,EAAc;AACd,EAAE,MAAM,QAAA,GAAW,GAAA,GAAM,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAA,GAAI,SAAS;;AAElE;AACA,EAAE,MAAM,KAAA,GAAQ,KAAK,CAAC,QAAQ,CAAC,YAAA,GAAe,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAA,GAAI,SAAS;AACzF,EAAE,MAAM,MAAA,GAAS,KAAK,CAAC,QAAQ,CAAC,UAAA,GAAa,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAA,GAAI,SAAS;;AAEtF,EAAE,OAAO;AACT,IAAI,QAAQ;AACZ,IAAI,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC;AAC3C,IAAI,QAAQ,EAAE,KAAK,CAAC,YAAA,IAAgBA,2BAAgB;AACpD,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM,EAAE,QAAA,GAAWC,8BAAe,CAAC,QAAQ,CAAA,GAAI,SAAS;AAC5D,GAAG;AACH;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/baggage.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/baggage.js new file mode 100644 index 0000000..79e147e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/baggage.js @@ -0,0 +1,178 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const debugLogger = require('./debug-logger.js'); +const is = require('./is.js'); + +const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-'; + +const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/; + +/** + * Max length of a serialized baggage string + * + * https://www.w3.org/TR/baggage/#limits + */ +const MAX_BAGGAGE_STRING_LENGTH = 8192; + +/** + * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the "sentry-" prefixed values + * from it. + * + * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks. + * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise. + */ +function baggageHeaderToDynamicSamplingContext( + // Very liberal definition of what any incoming header might look like + baggageHeader, +) { + const baggageObject = parseBaggageHeader(baggageHeader); + + if (!baggageObject) { + return undefined; + } + + // Read all "sentry-" prefixed values out of the baggage object and put it onto a dynamic sampling context object. + const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => { + if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) { + const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length); + acc[nonPrefixedKey] = value; + } + return acc; + }, {}); + + // Only return a dynamic sampling context object if there are keys in it. + // A keyless object means there were no sentry values on the header, which means that there is no DSC. + if (Object.keys(dynamicSamplingContext).length > 0) { + return dynamicSamplingContext ; + } else { + return undefined; + } +} + +/** + * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with "sentry-". + * + * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility + * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is + * `undefined` the function will return `undefined`. + * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext` + * was `undefined`, or if `dynamicSamplingContext` didn't contain any values. + */ +function dynamicSamplingContextToSentryBaggageHeader( + // this also takes undefined for convenience and bundle size in other places + dynamicSamplingContext, +) { + if (!dynamicSamplingContext) { + return undefined; + } + + // Prefix all DSC keys with "sentry-" and put them into a new object + const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce( + (acc, [dscKey, dscValue]) => { + if (dscValue) { + acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue; + } + return acc; + }, + {}, + ); + + return objectToBaggageHeader(sentryPrefixedDSC); +} + +/** + * Take a baggage header and parse it into an object. + */ +function parseBaggageHeader( + baggageHeader, +) { + if (!baggageHeader || (!is.isString(baggageHeader) && !Array.isArray(baggageHeader))) { + return undefined; + } + + if (Array.isArray(baggageHeader)) { + // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it + return baggageHeader.reduce((acc, curr) => { + const currBaggageObject = baggageHeaderToObject(curr); + Object.entries(currBaggageObject).forEach(([key, value]) => { + acc[key] = value; + }); + return acc; + }, {}); + } + + return baggageHeaderToObject(baggageHeader); +} + +/** + * Will parse a baggage header, which is a simple key-value map, into a flat object. + * + * @param baggageHeader The baggage header to parse. + * @returns a flat object containing all the key-value pairs from `baggageHeader`. + */ +function baggageHeaderToObject(baggageHeader) { + return baggageHeader + .split(',') + .map(baggageEntry => { + const eqIdx = baggageEntry.indexOf('='); + if (eqIdx === -1) { + // Likely an invalid entry + return []; + } + const key = baggageEntry.slice(0, eqIdx); + const value = baggageEntry.slice(eqIdx + 1); + return [key, value].map(keyOrValue => { + try { + return decodeURIComponent(keyOrValue.trim()); + } catch { + // We ignore errors here, e.g. if the value cannot be URL decoded. + // This will then be skipped in the next step + return; + } + }); + }) + .reduce((acc, [key, value]) => { + if (key && value) { + acc[key] = value; + } + return acc; + }, {}); +} + +/** + * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs. + * + * @param object The object to turn into a baggage header. + * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header + * is not spec compliant. + */ +function objectToBaggageHeader(object) { + if (Object.keys(object).length === 0) { + // An empty baggage header is not spec compliant: We return undefined. + return undefined; + } + + return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => { + const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`; + const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`; + if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) { + debugBuild.DEBUG_BUILD && + debugLogger.debug.warn( + `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`, + ); + return baggageHeader; + } else { + return newBaggageHeader; + } + }, ''); +} + +exports.MAX_BAGGAGE_STRING_LENGTH = MAX_BAGGAGE_STRING_LENGTH; +exports.SENTRY_BAGGAGE_KEY_PREFIX = SENTRY_BAGGAGE_KEY_PREFIX; +exports.SENTRY_BAGGAGE_KEY_PREFIX_REGEX = SENTRY_BAGGAGE_KEY_PREFIX_REGEX; +exports.baggageHeaderToDynamicSamplingContext = baggageHeaderToDynamicSamplingContext; +exports.dynamicSamplingContextToSentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader; +exports.objectToBaggageHeader = objectToBaggageHeader; +exports.parseBaggageHeader = parseBaggageHeader; +//# sourceMappingURL=baggage.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/baggage.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/baggage.js.map new file mode 100644 index 0000000..8eef2b9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/baggage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"baggage.js","sources":["../../../src/utils/baggage.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { debug } from './debug-logger';\nimport { isString } from './is';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const 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 */\nexport const 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 */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial | undefined {\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.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\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 as Partial;\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 */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext?: Partial,\n): string | undefined {\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 */\nexport function parseBaggageHeader(\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Record | undefined {\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: string): Record {\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 */\nexport function objectToBaggageHeader(object: Record): string | undefined {\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"],"names":["isString","DEBUG_BUILD","debug"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/breadcrumb-log-level.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/breadcrumb-log-level.js new file mode 100644 index 0000000..ecb9c59 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/breadcrumb-log-level.js @@ -0,0 +1,20 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code. + */ +function getBreadcrumbLogLevelFromHttpStatusCode(statusCode) { + // NOTE: undefined defaults to 'info' in Sentry + if (statusCode === undefined) { + return undefined; + } else if (statusCode >= 400 && statusCode < 500) { + return 'warning'; + } else if (statusCode >= 500) { + return 'error'; + } else { + return undefined; + } +} + +exports.getBreadcrumbLogLevelFromHttpStatusCode = getBreadcrumbLogLevelFromHttpStatusCode; +//# sourceMappingURL=breadcrumb-log-level.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/breadcrumb-log-level.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/breadcrumb-log-level.js.map new file mode 100644 index 0000000..573308a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/breadcrumb-log-level.js.map @@ -0,0 +1 @@ +{"version":3,"file":"breadcrumb-log-level.js","sources":["../../../src/utils/breadcrumb-log-level.ts"],"sourcesContent":["import type { SeverityLevel } from '../types-hoist/severity';\n\n/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nexport function getBreadcrumbLogLevelFromHttpStatusCode(statusCode: number | undefined): SeverityLevel | undefined {\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"],"names":[],"mappings":";;AAEA;AACA;AACA;AACO,SAAS,uCAAuC,CAAC,UAAU,EAAiD;AACnH;AACA,EAAE,IAAI,UAAA,KAAe,SAAS,EAAE;AAChC,IAAI,OAAO,SAAS;AACpB,EAAE,CAAA,MAAO,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAG,EAAE;AACpD,IAAI,OAAO,SAAS;AACpB,EAAE,OAAO,IAAI,UAAA,IAAc,GAAG,EAAE;AAChC,IAAI,OAAO,OAAO;AAClB,EAAE,OAAO;AACT,IAAI,OAAO,SAAS;AACpB,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/browser.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/browser.js new file mode 100644 index 0000000..3169c25 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/browser.js @@ -0,0 +1,175 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const is = require('./is.js'); +const worldwide = require('./worldwide.js'); + +const WINDOW = worldwide.GLOBAL_OBJ ; + +const DEFAULT_MAX_STRING_LENGTH = 80; + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @returns generated DOM path + */ +function htmlTreeAsString( + elem, + options = {}, +) { + if (!elem) { + return ''; + } + + // try/catch both: + // - accessing event.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // - can throw an exception in some circumstances. + try { + let currentElem = elem ; + const MAX_TRAVERSE_HEIGHT = 5; + const out = []; + let height = 0; + let len = 0; + const separator = ' > '; + const sepLength = separator.length; + let nextStr; + const keyAttrs = Array.isArray(options) ? options : options.keyAttrs; + const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH; + + while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = _htmlElementAsString(currentElem, keyAttrs); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds maxStringLength + // (ignore this limit if we are on the first iteration) + if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + currentElem = currentElem.parentNode; + } + + return out.reverse().join(separator); + } catch { + return ''; + } +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @returns generated DOM path + */ +function _htmlElementAsString(el, keyAttrs) { + const elem = el + +; + + const out = []; + + if (!elem?.tagName) { + return ''; + } + + // @ts-expect-error WINDOW has HTMLElement + if (WINDOW.HTMLElement) { + // If using the component name annotation plugin, this value may be available on the DOM node + if (elem instanceof HTMLElement && elem.dataset) { + if (elem.dataset['sentryComponent']) { + return elem.dataset['sentryComponent']; + } + if (elem.dataset['sentryElement']) { + return elem.dataset['sentryElement']; + } + } + } + + out.push(elem.tagName.toLowerCase()); + + // Pairs of attribute keys defined in `serializeAttribute` and their values on element. + const keyAttrPairs = keyAttrs?.length + ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)]) + : null; + + if (keyAttrPairs?.length) { + keyAttrPairs.forEach(keyAttrPair => { + out.push(`[${keyAttrPair[0]}="${keyAttrPair[1]}"]`); + }); + } else { + if (elem.id) { + out.push(`#${elem.id}`); + } + + const className = elem.className; + if (className && is.isString(className)) { + const classes = className.split(/\s+/); + for (const c of classes) { + out.push(`.${c}`); + } + } + } + const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt']; + for (const k of allowedAttrs) { + const attr = elem.getAttribute(k); + if (attr) { + out.push(`[${k}="${attr}"]`); + } + } + + return out.join(''); +} + +/** + * A safe form of location.href + */ +function getLocationHref() { + try { + return WINDOW.document.location.href; + } catch { + return ''; + } +} + +/** + * Given a DOM element, traverses up the tree until it finds the first ancestor node + * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking + * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed. + * + * @returns a string representation of the component for the provided DOM element, or `null` if not found + */ +function getComponentName(elem) { + // @ts-expect-error WINDOW has HTMLElement + if (!WINDOW.HTMLElement) { + return null; + } + + let currentElem = elem ; + const MAX_TRAVERSE_HEIGHT = 5; + for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) { + if (!currentElem) { + return null; + } + + if (currentElem instanceof HTMLElement) { + if (currentElem.dataset['sentryComponent']) { + return currentElem.dataset['sentryComponent']; + } + if (currentElem.dataset['sentryElement']) { + return currentElem.dataset['sentryElement']; + } + } + + currentElem = currentElem.parentNode; + } + + return null; +} + +exports.getComponentName = getComponentName; +exports.getLocationHref = getLocationHref; +exports.htmlTreeAsString = htmlTreeAsString; +//# sourceMappingURL=browser.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/browser.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/browser.js.map new file mode 100644 index 0000000..75d22a0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/browser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"browser.js","sources":["../../../src/utils/browser.ts"],"sourcesContent":["import { isString } from './is';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n parentNode: SimpleNode;\n} | null;\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 */\nexport function htmlTreeAsString(\n elem: unknown,\n options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\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 as SimpleNode;\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: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\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 const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (const k of allowedAttrs) {\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 */\nexport function getLocationHref(): string {\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 */\nexport function getComponentName(elem: unknown): string | null {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem as SimpleNode;\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"],"names":["GLOBAL_OBJ","isString"],"mappings":";;;;;AAGA,MAAM,MAAA,GAASA,oBAAA;;AAEf,MAAM,yBAAA,GAA4B,EAAE;;AAMpC;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB;AAChC,EAAE,IAAI;AACN,EAAE,OAAO,GAAiE,EAAE;AAC5E,EAAU;AACV,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO,WAAW;AACtB,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,IAAI;AACN,IAAI,IAAI,WAAA,GAAc,IAAA;AACtB,IAAI,MAAM,mBAAA,GAAsB,CAAC;AACjC,IAAI,MAAM,GAAA,GAAM,EAAE;AAClB,IAAI,IAAI,MAAA,GAAS,CAAC;AAClB,IAAI,IAAI,GAAA,GAAM,CAAC;AACf,IAAI,MAAM,SAAA,GAAY,KAAK;AAC3B,IAAI,MAAM,SAAA,GAAY,SAAS,CAAC,MAAM;AACtC,IAAI,IAAI,OAAO;AACf,IAAI,MAAM,QAAA,GAAW,KAAK,CAAC,OAAO,CAAC,OAAO,CAAA,GAAI,OAAA,GAAU,OAAO,CAAC,QAAQ;AACxE,IAAI,MAAM,eAAA,GAAkB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,eAAe,KAAK,yBAAyB;;AAE7G,IAAI,OAAO,WAAA,IAAe,MAAM,EAAA,GAAK,mBAAmB,EAAE;AAC1D,MAAM,UAAU,oBAAoB,CAAC,WAAW,EAAE,QAAQ,CAAC;AAC3D;AACA;AACA;AACA;AACA,MAAM,IAAI,OAAA,KAAY,MAAA,KAAW,MAAA,GAAS,CAAA,IAAK,GAAA,GAAM,GAAG,CAAC,MAAA,GAAS,SAAA,GAAY,OAAO,CAAC,MAAA,IAAU,eAAe,CAAC,EAAE;AAClH,QAAQ;AACR,MAAM;;AAEN,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;;AAEvB,MAAM,GAAA,IAAO,OAAO,CAAC,MAAM;AAC3B,MAAM,WAAA,GAAc,WAAW,CAAC,UAAU;AAC1C,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;AACxC,EAAE,EAAE,MAAM;AACV,IAAI,OAAO,WAAW;AACtB,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,EAAE,EAAW,QAAQ,EAAqB;AACxE,EAAE,MAAM,IAAA,GAAO;;AAKb;;AAEF,EAAE,MAAM,GAAA,GAAM,EAAE;;AAEhB,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AACtB,IAAI,OAAO,EAAE;AACb,EAAE;;AAEF;AACA,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE;AAC1B;AACA,IAAI,IAAI,IAAA,YAAgB,eAAe,IAAI,CAAC,OAAO,EAAE;AACrD,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;AAC3C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC9C,MAAM;AACN,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AAC5C,MAAM;AACN,IAAI;AACJ,EAAE;;AAEF,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;;AAEtC;AACA,EAAE,MAAM,YAAA,GAAe,QAAQ,EAAE;AACjC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAA,IAAW,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAA,IAAW,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACjH,MAAM,IAAI;;AAEV,EAAE,IAAI,YAAY,EAAE,MAAM,EAAE;AAC5B,IAAI,YAAY,CAAC,OAAO,CAAC,eAAe;AACxC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzD,IAAI,CAAC,CAAC;AACN,EAAE,OAAO;AACT,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;AACjB,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA,CAAA;AACA,IAAA;;AAEA,IAAA,MAAA,SAAA,GAAA,IAAA,CAAA,SAAA;AACA,IAAA,IAAA,SAAA,IAAAC,WAAA,CAAA,SAAA,CAAA,EAAA;AACA,MAAA,MAAA,OAAA,GAAA,SAAA,CAAA,KAAA,CAAA,KAAA,CAAA;AACA,MAAA,KAAA,MAAA,CAAA,IAAA,OAAA,EAAA;AACA,QAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA,MAAA,YAAA,GAAA,CAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,KAAA,CAAA;AACA,EAAA,KAAA,MAAA,CAAA,IAAA,YAAA,EAAA;AACA,IAAA,MAAA,IAAA,GAAA,IAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACA,IAAA,IAAA,IAAA,EAAA;AACA,MAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,IAAA,CAAA,EAAA,CAAA,CAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,OAAA,GAAA,CAAA,IAAA,CAAA,EAAA,CAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,eAAA,GAAA;AACA,EAAA,IAAA;AACA,IAAA,OAAA,MAAA,CAAA,QAAA,CAAA,QAAA,CAAA,IAAA;AACA,EAAA,CAAA,CAAA,MAAA;AACA,IAAA,OAAA,EAAA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAA,gBAAA,CAAA,IAAA,EAAA;AACA;AACA,EAAA,IAAA,CAAA,MAAA,CAAA,WAAA,EAAA;AACA,IAAA,OAAA,IAAA;AACA,EAAA;;AAEA,EAAA,IAAA,WAAA,GAAA,IAAA;AACA,EAAA,MAAA,mBAAA,GAAA,CAAA;AACA,EAAA,KAAA,IAAA,CAAA,GAAA,CAAA,EAAA,CAAA,GAAA,mBAAA,EAAA,CAAA,EAAA,EAAA;AACA,IAAA,IAAA,CAAA,WAAA,EAAA;AACA,MAAA,OAAA,IAAA;AACA,IAAA;;AAEA,IAAA,IAAA,WAAA,YAAA,WAAA,EAAA;AACA,MAAA,IAAA,WAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,EAAA;AACA,QAAA,OAAA,WAAA,CAAA,OAAA,CAAA,iBAAA,CAAA;AACA,MAAA;AACA,MAAA,IAAA,WAAA,CAAA,OAAA,CAAA,eAAA,CAAA,EAAA;AACA,QAAA,OAAA,WAAA,CAAA,OAAA,CAAA,eAAA,CAAA;AACA,MAAA;AACA,IAAA;;AAEA,IAAA,WAAA,GAAA,WAAA,CAAA,UAAA;AACA,EAAA;;AAEA,EAAA,OAAA,IAAA;AACA;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/clientreport.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/clientreport.js new file mode 100644 index 0000000..3a738dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/clientreport.js @@ -0,0 +1,27 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const envelope = require('./envelope.js'); +const time = require('./time.js'); + +/** + * Creates client report envelope + * @param discarded_events An array of discard events + * @param dsn A DSN that can be set on the header. Optional. + */ +function createClientReportEnvelope( + discarded_events, + dsn, + timestamp, +) { + const clientReportItem = [ + { type: 'client_report' }, + { + timestamp: timestamp || time.dateTimestampInSeconds(), + discarded_events, + }, + ]; + return envelope.createEnvelope(dsn ? { dsn } : {}, [clientReportItem]); +} + +exports.createClientReportEnvelope = createClientReportEnvelope; +//# sourceMappingURL=clientreport.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/clientreport.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/clientreport.js.map new file mode 100644 index 0000000..ed8eef1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/clientreport.js.map @@ -0,0 +1 @@ +{"version":3,"file":"clientreport.js","sources":["../../../src/utils/clientreport.ts"],"sourcesContent":["import type { ClientReport } from '../types-hoist/clientreport';\nimport type { ClientReportEnvelope, ClientReportItem } from '../types-hoist/envelope';\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\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 */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n"],"names":["dateTimestampInSeconds","createEnvelope"],"mappings":";;;;;AAKA;AACA;AACA;AACA;AACA;AACO,SAAS,0BAA0B;AAC1C,EAAE,gBAAgB;AAClB,EAAE,GAAG;AACL,EAAE,SAAS;AACX,EAAwB;AACxB,EAAE,MAAM,gBAAgB,GAAqB;AAC7C,IAAI,EAAE,IAAI,EAAE,eAAA,EAAiB;AAC7B,IAAI;AACJ,MAAM,SAAS,EAAE,SAAA,IAAaA,2BAAsB,EAAE;AACtD,MAAM,gBAAgB;AACtB,KAAK;AACL,GAAG;AACH,EAAE,OAAOC,uBAAc,CAAuB,GAAA,GAAM,EAAE,GAAA,EAAI,GAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC;AACrF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/cookie.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/cookie.js new file mode 100644 index 0000000..ea78769 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/cookie.js @@ -0,0 +1,83 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * This code was originally copied from the 'cookie` module at v0.5.0 and was simplified for our use case. + * https://github.com/jshttp/cookie/blob/a0c84147aab6266bdb3996cf4062e93907c0b0fc/index.js + * It had the following license: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Roman Shtylman + * Copyright (c) 2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * Parses a cookie string + */ +function parseCookie(str) { + const obj = {}; + let index = 0; + + while (index < str.length) { + const eqIdx = str.indexOf('=', index); + + // no more cookie pairs + if (eqIdx === -1) { + break; + } + + let endIdx = str.indexOf(';', index); + + if (endIdx === -1) { + endIdx = str.length; + } else if (endIdx < eqIdx) { + // backtrack on prior semicolon + index = str.lastIndexOf(';', eqIdx - 1) + 1; + continue; + } + + const key = str.slice(index, eqIdx).trim(); + + // only assign once + if (undefined === obj[key]) { + let val = str.slice(eqIdx + 1, endIdx).trim(); + + // quoted values + if (val.charCodeAt(0) === 0x22) { + val = val.slice(1, -1); + } + + try { + obj[key] = val.indexOf('%') !== -1 ? decodeURIComponent(val) : val; + } catch { + obj[key] = val; + } + } + + index = endIdx + 1; + } + + return obj; +} + +exports.parseCookie = parseCookie; +//# sourceMappingURL=cookie.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/cookie.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/cookie.js.map new file mode 100644 index 0000000..a139a0f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/cookie.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cookie.js","sources":["../../../src/utils/cookie.ts"],"sourcesContent":["/**\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 */\nexport function parseCookie(str: string): Record {\n const obj: Record = {};\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"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO,SAAS,WAAW,CAAC,GAAG,EAAkC;AACjE,EAAE,MAAM,GAAG,GAA2B,EAAE;AACxC,EAAE,IAAI,KAAA,GAAQ,CAAC;;AAEf,EAAE,OAAO,KAAA,GAAQ,GAAG,CAAC,MAAM,EAAE;AAC7B,IAAI,MAAM,KAAA,GAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;;AAEzC;AACA,IAAI,IAAI,KAAA,KAAU,EAAE,EAAE;AACtB,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,MAAA,GAAS,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;;AAExC,IAAI,IAAI,MAAA,KAAW,EAAE,EAAE;AACvB,MAAM,MAAA,GAAS,GAAG,CAAC,MAAM;AACzB,IAAI,OAAO,IAAI,MAAA,GAAS,KAAK,EAAE;AAC/B;AACA,MAAM,KAAA,GAAQ,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,KAAA,GAAQ,CAAC,CAAA,GAAI,CAAC;AACjD,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,GAAA,GAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE;;AAE9C;AACA,IAAI,IAAI,SAAA,KAAc,GAAG,CAAC,GAAG,CAAC,EAAE;AAChC,MAAM,IAAI,GAAA,GAAM,GAAG,CAAC,KAAK,CAAC,KAAA,GAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;;AAEnD;AACA,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA,KAAM,IAAI,EAAE;AACtC,QAAQ,GAAA,GAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,MAAM;;AAEN,MAAM,IAAI;AACV,QAAQ,GAAG,CAAC,GAAG,CAAA,GAAI,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAA,GAAI,GAAG;AAC1E,MAAM,EAAE,MAAM;AACd,QAAQ,GAAG,CAAC,GAAG,CAAA,GAAI,GAAG;AACtB,MAAM;AACN,IAAI;;AAEJ,IAAI,KAAA,GAAQ,MAAA,GAAS,CAAC;AACtB,EAAE;;AAEF,EAAE,OAAO,GAAG;AACZ;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debounce.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debounce.js new file mode 100644 index 0000000..cd00f9d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debounce.js @@ -0,0 +1,68 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Heavily simplified debounce function based on lodash.debounce. + * + * This function takes a callback function (@param fun) and delays its invocation + * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options, + * which ensures that the callback is invoked at least once after the specified max. wait time. + * + * @param func the function whose invocation is to be debounced + * @param wait the minimum time until the function is invoked after it was called once + * @param options the options object, which can contain the `maxWait` property + * + * @returns the debounced version of the function, which needs to be called at least once to start the + * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc + * was already invoked in the meantime, return @param func's return value. + * The debounced function has two additional properties: + * - `flush`: Invokes the debounced function immediately and returns its return value + * - `cancel`: Cancels the debouncing process and resets the debouncing timer + */ +function debounce(func, wait, options) { + let callbackReturnValue; + + let timerId; + let maxTimerId; + + const maxWait = options?.maxWait ? Math.max(options.maxWait, wait) : 0; + const setTimeoutImpl = options?.setTimeoutImpl || setTimeout; + + function invokeFunc() { + cancelTimers(); + callbackReturnValue = func(); + return callbackReturnValue; + } + + function cancelTimers() { + timerId !== undefined && clearTimeout(timerId); + maxTimerId !== undefined && clearTimeout(maxTimerId); + timerId = maxTimerId = undefined; + } + + function flush() { + if (timerId !== undefined || maxTimerId !== undefined) { + return invokeFunc(); + } + return callbackReturnValue; + } + + function debounced() { + if (timerId) { + clearTimeout(timerId); + } + timerId = setTimeoutImpl(invokeFunc, wait); + + if (maxWait && maxTimerId === undefined) { + maxTimerId = setTimeoutImpl(invokeFunc, maxWait); + } + + return callbackReturnValue; + } + + debounced.cancel = cancelTimers; + debounced.flush = flush; + return debounced; +} + +exports.debounce = debounce; +//# sourceMappingURL=debounce.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debounce.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debounce.js.map new file mode 100644 index 0000000..d04ee7b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debounce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debounce.js","sources":["../../../src/utils/debounce.ts"],"sourcesContent":["type DebouncedCallback = {\n (): void | unknown;\n flush: () => void | unknown;\n cancel: () => void;\n};\ntype CallbackFunction = () => unknown;\ntype DebounceOptions = {\n /** The max. time in ms to wait for the callback to be invoked. */\n maxWait?: number;\n /** This can be overwritten to use a different setTimeout implementation, e.g. to avoid triggering change detection in Angular */\n setTimeoutImpl?: typeof setTimeout;\n};\n\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 */\nexport function debounce(func: CallbackFunction, wait: number, options?: DebounceOptions): DebouncedCallback {\n let callbackReturnValue: unknown;\n\n let timerId: ReturnType | undefined;\n let maxTimerId: ReturnType | undefined;\n\n const maxWait = options?.maxWait ? Math.max(options.maxWait, wait) : 0;\n const setTimeoutImpl = options?.setTimeoutImpl || setTimeout;\n\n function invokeFunc(): unknown {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers(): void {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush(): unknown {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced(): unknown {\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"],"names":[],"mappings":";;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,IAAI,EAAoB,IAAI,EAAU,OAAO,EAAuC;AAC7G,EAAE,IAAI,mBAAmB;;AAEzB,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,UAAU;;AAEhB,EAAE,MAAM,OAAA,GAAU,OAAO,EAAE,OAAA,GAAU,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAA,GAAI,CAAC;AACxE,EAAE,MAAM,cAAA,GAAiB,OAAO,EAAE,cAAA,IAAkB,UAAU;;AAE9D,EAAE,SAAS,UAAU,GAAY;AACjC,IAAI,YAAY,EAAE;AAClB,IAAI,mBAAA,GAAsB,IAAI,EAAE;AAChC,IAAI,OAAO,mBAAmB;AAC9B,EAAE;;AAEF,EAAE,SAAS,YAAY,GAAS;AAChC,IAAI,YAAY,SAAA,IAAa,YAAY,CAAC,OAAO,CAAC;AAClD,IAAI,eAAe,SAAA,IAAa,YAAY,CAAC,UAAU,CAAC;AACxD,IAAI,OAAA,GAAU,UAAA,GAAa,SAAS;AACpC,EAAE;;AAEF,EAAE,SAAS,KAAK,GAAY;AAC5B,IAAI,IAAI,OAAA,KAAY,aAAa,UAAA,KAAe,SAAS,EAAE;AAC3D,MAAM,OAAO,UAAU,EAAE;AACzB,IAAI;AACJ,IAAI,OAAO,mBAAmB;AAC9B,EAAE;;AAEF,EAAE,SAAS,SAAS,GAAY;AAChC,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,YAAY,CAAC,OAAO,CAAC;AAC3B,IAAI;AACJ,IAAI,UAAU,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC;;AAE9C,IAAI,IAAI,OAAA,IAAW,UAAA,KAAe,SAAS,EAAE;AAC7C,MAAM,aAAa,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC;AACtD,IAAI;;AAEJ,IAAI,OAAO,mBAAmB;AAC9B,EAAE;;AAEF,EAAE,SAAS,CAAC,MAAA,GAAS,YAAY;AACjC,EAAE,SAAS,CAAC,KAAA,GAAQ,KAAK;AACzB,EAAE,OAAO,SAAS;AAClB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-ids.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-ids.js new file mode 100644 index 0000000..d000e73 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-ids.js @@ -0,0 +1,117 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const stacktrace = require('./stacktrace.js'); +const worldwide = require('./worldwide.js'); + +let parsedStackResults; +let lastSentryKeysCount; +let lastNativeKeysCount; +let cachedFilenameDebugIds; + +/** + * Returns a map of filenames to debug identifiers. + * Supports both proprietary _sentryDebugIds and native _debugIds (e.g., from Vercel) formats. + */ +function getFilenameToDebugIdMap(stackParser) { + const sentryDebugIdMap = worldwide.GLOBAL_OBJ._sentryDebugIds; + const nativeDebugIdMap = worldwide.GLOBAL_OBJ._debugIds; + + if (!sentryDebugIdMap && !nativeDebugIdMap) { + return {}; + } + + const sentryDebugIdKeys = sentryDebugIdMap ? Object.keys(sentryDebugIdMap) : []; + const nativeDebugIdKeys = nativeDebugIdMap ? Object.keys(nativeDebugIdMap) : []; + + // If the count of registered globals hasn't changed since the last call, we + // can just return the cached result. + if ( + cachedFilenameDebugIds && + sentryDebugIdKeys.length === lastSentryKeysCount && + nativeDebugIdKeys.length === lastNativeKeysCount + ) { + return cachedFilenameDebugIds; + } + + lastSentryKeysCount = sentryDebugIdKeys.length; + lastNativeKeysCount = nativeDebugIdKeys.length; + + // Build a map of filename -> debug_id from both sources + cachedFilenameDebugIds = {}; + + if (!parsedStackResults) { + parsedStackResults = {}; + } + + const processDebugIds = (debugIdKeys, debugIdMap) => { + for (const key of debugIdKeys) { + const debugId = debugIdMap[key]; + const result = parsedStackResults?.[key]; + + if (result && cachedFilenameDebugIds && debugId) { + // Use cached filename but update with current debug ID + cachedFilenameDebugIds[result[0]] = debugId; + // Update cached result with new debug ID + if (parsedStackResults) { + parsedStackResults[key] = [result[0], debugId]; + } + } else if (debugId) { + const parsedStack = stackParser(key); + + for (let i = parsedStack.length - 1; i >= 0; i--) { + const stackFrame = parsedStack[i]; + const filename = stackFrame?.filename; + + if (filename && cachedFilenameDebugIds && parsedStackResults) { + cachedFilenameDebugIds[filename] = debugId; + parsedStackResults[key] = [filename, debugId]; + break; + } + } + } + } + }; + + if (sentryDebugIdMap) { + processDebugIds(sentryDebugIdKeys, sentryDebugIdMap); + } + + // Native _debugIds will override _sentryDebugIds if same file + if (nativeDebugIdMap) { + processDebugIds(nativeDebugIdKeys, nativeDebugIdMap); + } + + return cachedFilenameDebugIds; +} + +/** + * Returns a list of debug images for the given resources. + */ +function getDebugImagesForResources( + stackParser, + resource_paths, +) { + const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser); + + if (!filenameDebugIdMap) { + return []; + } + + const images = []; + for (const path of resource_paths) { + const normalizedPath = stacktrace.normalizeStackTracePath(path); + if (normalizedPath && filenameDebugIdMap[normalizedPath]) { + images.push({ + type: 'sourcemap', + code_file: path, + debug_id: filenameDebugIdMap[normalizedPath], + }); + } + } + + return images; +} + +exports.getDebugImagesForResources = getDebugImagesForResources; +exports.getFilenameToDebugIdMap = getFilenameToDebugIdMap; +//# sourceMappingURL=debug-ids.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-ids.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-ids.js.map new file mode 100644 index 0000000..7d30aed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-ids.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debug-ids.js","sources":["../../../src/utils/debug-ids.ts"],"sourcesContent":["import type { DebugImage } from '../types-hoist/debugMeta';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { normalizeStackTracePath } from './stacktrace';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype StackString = string;\ntype CachedResult = [string, string];\n\nlet parsedStackResults: Record | undefined;\nlet lastSentryKeysCount: number | undefined;\nlet lastNativeKeysCount: number | undefined;\nlet cachedFilenameDebugIds: Record | undefined;\n\n/**\n * Clears the cached debug ID mappings.\n * Useful for testing or when the global debug ID state changes.\n */\nexport function clearDebugIdCache(): void {\n parsedStackResults = undefined;\n lastSentryKeysCount = undefined;\n lastNativeKeysCount = undefined;\n cachedFilenameDebugIds = undefined;\n}\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 */\nexport function getFilenameToDebugIdMap(stackParser: StackParser): Record {\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: string[], debugIdMap: Record): void => {\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 */\nexport function getDebugImagesForResources(\n stackParser: StackParser,\n resource_paths: ReadonlyArray,\n): DebugImage[] {\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n if (!filenameDebugIdMap) {\n return [];\n }\n\n const images: DebugImage[] = [];\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"],"names":["GLOBAL_OBJ","normalizeStackTracePath"],"mappings":";;;;;AAQA,IAAI,kBAAkB;AACtB,IAAI,mBAAmB;AACvB,IAAI,mBAAmB;AACvB,IAAI,sBAAsB;;AAa1B;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,WAAW,EAAuC;AAC1F,EAAE,MAAM,gBAAA,GAAmBA,oBAAU,CAAC,eAAe;AACrD,EAAE,MAAM,gBAAA,GAAmBA,oBAAU,CAAC,SAAS;;AAE/C,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE;AAC9C,IAAI,OAAO,EAAE;AACb,EAAE;;AAEF,EAAE,MAAM,iBAAA,GAAoB,gBAAA,GAAmB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAA,GAAI,EAAE;AACjF,EAAE,MAAM,iBAAA,GAAoB,gBAAA,GAAmB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAA,GAAI,EAAE;;AAEjF;AACA;AACA,EAAE;AACF,IAAI,sBAAA;AACJ,IAAI,iBAAiB,CAAC,MAAA,KAAW,mBAAA;AACjC,IAAI,iBAAiB,CAAC,MAAA,KAAW;AACjC,IAAI;AACJ,IAAI,OAAO,sBAAsB;AACjC,EAAE;;AAEF,EAAE,mBAAA,GAAsB,iBAAiB,CAAC,MAAM;AAChD,EAAE,mBAAA,GAAsB,iBAAiB,CAAC,MAAM;;AAEhD;AACA,EAAE,sBAAA,GAAyB,EAAE;;AAE7B,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC3B,IAAI,kBAAA,GAAqB,EAAE;AAC3B,EAAE;;AAEF,EAAE,MAAM,eAAA,GAAkB,CAAC,WAAW,EAAY,UAAU,KAAmC;AAC/F,IAAI,KAAK,MAAM,GAAA,IAAO,WAAW,EAAE;AACnC,MAAM,MAAM,OAAA,GAAU,UAAU,CAAC,GAAG,CAAC;AACrC,MAAM,MAAM,MAAA,GAAS,kBAAkB,GAAG,GAAG,CAAC;;AAE9C,MAAM,IAAI,MAAA,IAAU,sBAAA,IAA0B,OAAO,EAAE;AACvD;AACA,QAAQ,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA,GAAI,OAAO;AACnD;AACA,QAAQ,IAAI,kBAAkB,EAAE;AAChC,UAAU,kBAAkB,CAAC,GAAG,CAAA,GAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AACxD,QAAQ;AACR,MAAM,CAAA,MAAO,IAAI,OAAO,EAAE;AAC1B,QAAQ,MAAM,WAAA,GAAc,WAAW,CAAC,GAAG,CAAC;;AAE5C,QAAQ,KAAK,IAAI,CAAA,GAAI,WAAW,CAAC,MAAA,GAAS,CAAC,EAAE,CAAA,IAAK,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1D,UAAU,MAAM,UAAA,GAAa,WAAW,CAAC,CAAC,CAAC;AAC3C,UAAU,MAAM,QAAA,GAAW,UAAU,EAAE,QAAQ;;AAE/C,UAAU,IAAI,QAAA,IAAY,sBAAA,IAA0B,kBAAkB,EAAE;AACxE,YAAY,sBAAsB,CAAC,QAAQ,CAAA,GAAI,OAAO;AACtD,YAAY,kBAAkB,CAAC,GAAG,CAAA,GAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACzD,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,eAAe,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;AACxD,EAAE;;AAEF;AACA,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,eAAe,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;AACxD,EAAE;;AAEF,EAAE,OAAO,sBAAsB;AAC/B;;AAEA;AACA;AACA;AACO,SAAS,0BAA0B;AAC1C,EAAE,WAAW;AACb,EAAE,cAAc;AAChB,EAAgB;AAChB,EAAE,MAAM,kBAAA,GAAqB,uBAAuB,CAAC,WAAW,CAAC;;AAEjE,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC3B,IAAI,OAAO,EAAE;AACb,EAAE;;AAEF,EAAE,MAAM,MAAM,GAAiB,EAAE;AACjC,EAAE,KAAK,MAAM,IAAA,IAAQ,cAAc,EAAE;AACrC,IAAI,MAAM,cAAA,GAAiBC,kCAAuB,CAAC,IAAI,CAAC;AACxD,IAAI,IAAI,cAAA,IAAkB,kBAAkB,CAAC,cAAc,CAAC,EAAE;AAC9D,MAAM,MAAM,CAAC,IAAI,CAAC;AAClB,QAAQ,IAAI,EAAE,WAAW;AACzB,QAAQ,SAAS,EAAE,IAAI;AACvB,QAAQ,QAAQ,EAAE,kBAAkB,CAAC,cAAc,CAAC;AACpD,OAAO,CAAC;AACR,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,MAAM;AACf;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-logger.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-logger.js new file mode 100644 index 0000000..588d093 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-logger.js @@ -0,0 +1,124 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const carrier = require('../carrier.js'); +const debugBuild = require('../debug-build.js'); +const worldwide = require('./worldwide.js'); + +const CONSOLE_LEVELS = [ + 'debug', + 'info', + 'warn', + 'error', + 'log', + 'assert', + 'trace', +] ; + +/** Prefix for logging strings */ +const PREFIX = 'Sentry Logger '; + +/** This may be mutated by the console instrumentation. */ +const originalConsoleMethods + + = {}; + +/** + * Temporarily disable sentry console instrumentations. + * + * @param callback The function to run against the original `console` messages + * @returns The results of the callback + */ +function consoleSandbox(callback) { + if (!('console' in worldwide.GLOBAL_OBJ)) { + return callback(); + } + + const console = worldwide.GLOBAL_OBJ.console; + const wrappedFuncs = {}; + + const wrappedLevels = Object.keys(originalConsoleMethods) ; + + // Restore all wrapped console methods + wrappedLevels.forEach(level => { + const originalConsoleMethod = originalConsoleMethods[level]; + wrappedFuncs[level] = console[level] ; + console[level] = originalConsoleMethod ; + }); + + try { + return callback(); + } finally { + // Revert restoration to wrapped state + wrappedLevels.forEach(level => { + console[level] = wrappedFuncs[level] ; + }); + } +} + +function enable() { + _getLoggerSettings().enabled = true; +} + +function disable() { + _getLoggerSettings().enabled = false; +} + +function isEnabled() { + return _getLoggerSettings().enabled; +} + +function log(...args) { + _maybeLog('log', ...args); +} + +function warn(...args) { + _maybeLog('warn', ...args); +} + +function error(...args) { + _maybeLog('error', ...args); +} + +function _maybeLog(level, ...args) { + if (!debugBuild.DEBUG_BUILD) { + return; + } + + if (isEnabled()) { + consoleSandbox(() => { + worldwide.GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args); + }); + } +} + +function _getLoggerSettings() { + if (!debugBuild.DEBUG_BUILD) { + return { enabled: false }; + } + + return carrier.getGlobalSingleton('loggerSettings', () => ({ enabled: false })); +} + +/** + * This is a logger singleton which either logs things or no-ops if logging is not enabled. + */ +const debug = { + /** Enable logging. */ + enable, + /** Disable logging. */ + disable, + /** Check if logging is enabled. */ + isEnabled, + /** Log a message. */ + log, + /** Log a warning. */ + warn, + /** Log an error. */ + error, +} ; + +exports.CONSOLE_LEVELS = CONSOLE_LEVELS; +exports.consoleSandbox = consoleSandbox; +exports.debug = debug; +exports.originalConsoleMethods = originalConsoleMethods; +//# sourceMappingURL=debug-logger.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-logger.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-logger.js.map new file mode 100644 index 0000000..2289433 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/debug-logger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debug-logger.js","sources":["../../../src/utils/debug-logger.ts"],"sourcesContent":["import { getGlobalSingleton } from '../carrier';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from './worldwide';\n\nexport interface SentryDebugLogger {\n disable(): void;\n enable(): void;\n isEnabled(): boolean;\n log(...args: Parameters): void;\n warn(...args: Parameters): void;\n error(...args: Parameters): void;\n}\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] as const;\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: Partial<{\n log(...args: Parameters): void;\n info(...args: Parameters): void;\n warn(...args: Parameters): void;\n error(...args: Parameters): void;\n debug(...args: Parameters): void;\n assert(...args: Parameters): void;\n trace(...args: Parameters): void;\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 */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console;\n const wrappedFuncs: Partial void>> = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level];\n wrappedFuncs[level] = console[level] as (...args: unknown[]) => void;\n console[level] = originalConsoleMethod as (...args: unknown[]) => void;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] as (...args: unknown[]) => void;\n });\n }\n}\n\nfunction enable(): void {\n _getLoggerSettings().enabled = true;\n}\n\nfunction disable(): void {\n _getLoggerSettings().enabled = false;\n}\n\nfunction isEnabled(): boolean {\n return _getLoggerSettings().enabled;\n}\n\nfunction log(...args: Parameters): void {\n _maybeLog('log', ...args);\n}\n\nfunction info(...args: Parameters): void {\n _maybeLog('info', ...args);\n}\n\nfunction warn(...args: Parameters): void {\n _maybeLog('warn', ...args);\n}\n\nfunction error(...args: Parameters): void {\n _maybeLog('error', ...args);\n}\n\nfunction _maybeLog(level: ConsoleLevel, ...args: Parameters<(typeof console)[typeof level]>): void {\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(): { enabled: boolean } {\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 */\nexport const 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} satisfies SentryDebugLogger;\n"],"names":["GLOBAL_OBJ","DEBUG_BUILD","getGlobalSingleton"],"mappings":";;;;;;AAcO,MAAM,cAAc,GAA4B;AACvD,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,CAAA;;AAEA;AACA,MAAM,MAAA,GAAS,gBAAgB;;AAE/B;MACa;;AAQb,GAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAI,QAAQ,EAAc;AACxD,EAAE,IAAI,EAAE,aAAaA,oBAAU,CAAC,EAAE;AAClC,IAAI,OAAO,QAAQ,EAAE;AACrB,EAAE;;AAEF,EAAE,MAAM,OAAA,GAAUA,oBAAU,CAAC,OAAO;AACpC,EAAE,MAAM,YAAY,GAAgE,EAAE;;AAEtF,EAAE,MAAM,gBAAgB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAA;;AAE1D;AACA,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS;AACjC,IAAI,MAAM,qBAAA,GAAwB,sBAAsB,CAAC,KAAK,CAAC;AAC/D,IAAI,YAAY,CAAC,KAAK,CAAA,GAAI,OAAO,CAAC,KAAK,CAAA;AACvC,IAAI,OAAO,CAAC,KAAK,CAAA,GAAI,qBAAA;AACrB,EAAE,CAAC,CAAC;;AAEJ,EAAE,IAAI;AACN,IAAI,OAAO,QAAQ,EAAE;AACrB,EAAE,UAAU;AACZ;AACA,IAAI,aAAa,CAAC,OAAO,CAAC,SAAS;AACnC,MAAM,OAAO,CAAC,KAAK,CAAA,GAAI,YAAY,CAAC,KAAK,CAAA;AACzC,IAAI,CAAC,CAAC;AACN,EAAE;AACF;;AAEA,SAAS,MAAM,GAAS;AACxB,EAAE,kBAAkB,EAAE,CAAC,OAAA,GAAU,IAAI;AACrC;;AAEA,SAAS,OAAO,GAAS;AACzB,EAAE,kBAAkB,EAAE,CAAC,OAAA,GAAU,KAAK;AACtC;;AAEA,SAAS,SAAS,GAAY;AAC9B,EAAE,OAAO,kBAAkB,EAAE,CAAC,OAAO;AACrC;;AAEA,SAAS,GAAG,CAAC,GAAG,IAAI,EAAwC;AAC5D,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;;AAMA,SAAS,IAAI,CAAC,GAAG,IAAI,EAAyC;AAC9D,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;AAC5B;;AAEA,SAAS,KAAK,CAAC,GAAG,IAAI,EAA0C;AAChE,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC7B;;AAEA,SAAS,SAAS,CAAC,KAAK,EAAgB,GAAG,IAAI,EAAoD;AACnG,EAAE,IAAI,CAACC,sBAAW,EAAE;AACpB,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,SAAS,EAAE,EAAE;AACnB,IAAI,cAAc,CAAC,MAAM;AACzB,MAAMD,oBAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA,MAAA,CAAA,CAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,GAAA,IAAA,CAAA;AACA,IAAA,CAAA,CAAA;AACA,EAAA;AACA;;AAEA,SAAA,kBAAA,GAAA;AACA,EAAA,IAAA,CAAAC,sBAAA,EAAA;AACA,IAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA;AACA,EAAA;;AAEA,EAAA,OAAAC,0BAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,CAAA,CAAA;AACA;;AAEA;AACA;AACA;AACA,MAAA,KAAA,GAAA;AACA;AACA,EAAA,MAAA;AACA;AACA,EAAA,OAAA;AACA;AACA,EAAA,SAAA;AACA;AACA,EAAA,GAAA;AACA;AACA,EAAA,IAAA;AACA;AACA,EAAA,KAAA;AACA,CAAA;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/dsn.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/dsn.js new file mode 100644 index 0000000..1bf960f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/dsn.js @@ -0,0 +1,171 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const debugLogger = require('./debug-logger.js'); + +/** Regular expression used to extract org ID from a DSN host. */ +const ORG_ID_REGEX = /^o(\d+)\./; + +/** Regular expression used to parse a Dsn. */ +const DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/; + +function isValidProtocol(protocol) { + return protocol === 'http' || protocol === 'https'; +} + +/** + * Renders the string representation of this Dsn. + * + * By default, this will render the public representation without the password + * component. To get the deprecated private representation, set `withPassword` + * to true. + * + * @param withPassword When set to true, the password will be included. + */ +function dsnToString(dsn, withPassword = false) { + const { host, path, pass, port, projectId, protocol, publicKey } = dsn; + return ( + `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` + + `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}` + ); +} + +/** + * Parses a Dsn from a given string. + * + * @param str A Dsn as string + * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string + */ +function dsnFromString(str) { + const match = DSN_REGEX.exec(str); + + if (!match) { + // This should be logged to the console + debugLogger.consoleSandbox(() => { + // eslint-disable-next-line no-console + console.error(`Invalid Sentry Dsn: ${str}`); + }); + return undefined; + } + + const [protocol, publicKey, pass = '', host = '', port = '', lastPath = ''] = match.slice(1); + let path = ''; + let projectId = lastPath; + + const split = projectId.split('/'); + if (split.length > 1) { + path = split.slice(0, -1).join('/'); + projectId = split.pop() ; + } + + if (projectId) { + const projectMatch = projectId.match(/^\d+/); + if (projectMatch) { + projectId = projectMatch[0]; + } + } + + return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey }); +} + +function dsnFromComponents(components) { + return { + protocol: components.protocol, + publicKey: components.publicKey || '', + pass: components.pass || '', + host: components.host, + port: components.port || '', + path: components.path || '', + projectId: components.projectId, + }; +} + +function validateDsn(dsn) { + if (!debugBuild.DEBUG_BUILD) { + return true; + } + + const { port, projectId, protocol } = dsn; + + const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId']; + const hasMissingRequiredComponent = requiredComponents.find(component => { + if (!dsn[component]) { + debugLogger.debug.error(`Invalid Sentry Dsn: ${component} missing`); + return true; + } + return false; + }); + + if (hasMissingRequiredComponent) { + return false; + } + + if (!projectId.match(/^\d+$/)) { + debugLogger.debug.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`); + return false; + } + + if (!isValidProtocol(protocol)) { + debugLogger.debug.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`); + return false; + } + + if (port && isNaN(parseInt(port, 10))) { + debugLogger.debug.error(`Invalid Sentry Dsn: Invalid port ${port}`); + return false; + } + + return true; +} + +/** + * Extract the org ID from a DSN host. + * + * @param host The host from a DSN + * @returns The org ID if found, undefined otherwise + */ +function extractOrgIdFromDsnHost(host) { + const match = host.match(ORG_ID_REGEX); + + return match?.[1]; +} + +/** + * Returns the organization ID of the client. + * + * The organization ID is extracted from the DSN. If the client options include a `orgId`, this will always take precedence. + */ +function extractOrgIdFromClient(client) { + const options = client.getOptions(); + + const { host } = client.getDsn() || {}; + + let org_id; + + if (options.orgId) { + org_id = String(options.orgId); + } else if (host) { + org_id = extractOrgIdFromDsnHost(host); + } + + return org_id; +} + +/** + * Creates a valid Sentry Dsn object, identifying a Sentry instance and project. + * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source + */ +function makeDsn(from) { + const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from); + if (!components || !validateDsn(components)) { + return undefined; + } + return components; +} + +exports.dsnFromString = dsnFromString; +exports.dsnToString = dsnToString; +exports.extractOrgIdFromClient = extractOrgIdFromClient; +exports.extractOrgIdFromDsnHost = extractOrgIdFromDsnHost; +exports.makeDsn = makeDsn; +//# sourceMappingURL=dsn.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/dsn.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/dsn.js.map new file mode 100644 index 0000000..40a51e4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/dsn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dsn.js","sources":["../../../src/utils/dsn.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { DsnComponents, DsnLike, DsnProtocol } from '../types-hoist/dsn';\nimport { consoleSandbox, debug } from './debug-logger';\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?: string): protocol is DsnProtocol {\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 */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\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 */\nexport function dsnFromString(str: string): DsnComponents | undefined {\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() as string;\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 as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\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: DsnComponents): boolean {\n if (!DEBUG_BUILD) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['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 */\nexport function extractOrgIdFromDsnHost(host: string): string | undefined {\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 */\nexport function extractOrgIdFromClient(client: Client): string | undefined {\n const options = client.getOptions();\n\n const { host } = client.getDsn() || {};\n\n let org_id: string | undefined;\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 */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n"],"names":["consoleSandbox","DEBUG_BUILD","debug"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/env.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/env.js new file mode 100644 index 0000000..2257a57 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/env.js @@ -0,0 +1,37 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/* + * This module exists for optimizations in the build process through rollup and terser. We define some global + * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these + * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will + * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to + * `debug` and preventing node-related code from appearing in browser bundles. + * + * Attention: + * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by + * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack) + * having issues tree-shaking these constants across package boundaries. + * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want + * users to be able to shake away expressions that it guards. + */ + +/** + * Figures out if we're building a browser bundle. + * + * @returns true if this is a browser bundle build. + */ +function isBrowserBundle() { + return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__; +} + +/** + * Get source of SDK. + */ +function getSDKSource() { + // This comment is used to identify this line in the CDN bundle build step and replace this with "return 'cdn';" + /* __SENTRY_SDK_SOURCE__ */ return 'npm'; +} + +exports.getSDKSource = getSDKSource; +exports.isBrowserBundle = isBrowserBundle; +//# sourceMappingURL=env.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/env.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/env.js.map new file mode 100644 index 0000000..7515e8b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/env.js.map @@ -0,0 +1 @@ +{"version":3,"file":"env.js","sources":["../../../src/utils/env.ts"],"sourcesContent":["/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `debug` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader' | 'aws-lambda-layer';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n // This comment is used to identify this line in the CDN bundle build step and replace this with \"return 'cdn';\"\n /* __SENTRY_SDK_SOURCE__ */ return 'npm';\n}\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,GAAY;AAC3C,EAAE,OAAO,OAAO,yBAAA,KAA8B,eAAe,CAAC,CAAC,yBAAyB;AACxF;;AAEA;AACA;AACA;AACO,SAAS,YAAY,GAAc;AAC1C;AACA,8BAA8B,OAAO,KAAK;AAC1C;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/envelope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/envelope.js new file mode 100644 index 0000000..fad7851 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/envelope.js @@ -0,0 +1,263 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const carrier = require('../carrier.js'); +const dsn = require('./dsn.js'); +const normalize = require('./normalize.js'); +const worldwide = require('./worldwide.js'); + +/** + * Creates an envelope. + * Make sure to always explicitly provide the generic to this function + * so that the envelope types resolve correctly. + */ +function createEnvelope(headers, items = []) { + return [headers, items] ; +} + +/** + * Add an item to an envelope. + * Make sure to always explicitly provide the generic to this function + * so that the envelope types resolve correctly. + */ +function addItemToEnvelope(envelope, newItem) { + const [headers, items] = envelope; + return [headers, [...items, newItem]] ; +} + +/** + * Convenience function to loop through the items and item types of an envelope. + * (This function was mostly created because working with envelope types is painful at the moment) + * + * If the callback returns true, the rest of the items will be skipped. + */ +function forEachEnvelopeItem( + envelope, + callback, +) { + const envelopeItems = envelope[1]; + + for (const envelopeItem of envelopeItems) { + const envelopeItemType = envelopeItem[0].type; + const result = callback(envelopeItem, envelopeItemType); + + if (result) { + return true; + } + } + + return false; +} + +/** + * Returns true if the envelope contains any of the given envelope item types + */ +function envelopeContainsItemType(envelope, types) { + return forEachEnvelopeItem(envelope, (_, type) => types.includes(type)); +} + +/** + * Encode a string to UTF8 array. + */ +function encodeUTF8(input) { + const carrier$1 = carrier.getSentryCarrier(worldwide.GLOBAL_OBJ); + return carrier$1.encodePolyfill ? carrier$1.encodePolyfill(input) : new TextEncoder().encode(input); +} + +/** + * Decode a UTF8 array to string. + */ +function decodeUTF8(input) { + const carrier$1 = carrier.getSentryCarrier(worldwide.GLOBAL_OBJ); + return carrier$1.decodePolyfill ? carrier$1.decodePolyfill(input) : new TextDecoder().decode(input); +} + +/** + * Serializes an envelope. + */ +function serializeEnvelope(envelope) { + const [envHeaders, items] = envelope; + // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data + let parts = JSON.stringify(envHeaders); + + function append(next) { + if (typeof parts === 'string') { + parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts), next]; + } else { + parts.push(typeof next === 'string' ? encodeUTF8(next) : next); + } + } + + for (const item of items) { + const [itemHeaders, payload] = item; + + append(`\n${JSON.stringify(itemHeaders)}\n`); + + if (typeof payload === 'string' || payload instanceof Uint8Array) { + append(payload); + } else { + let stringifiedPayload; + try { + stringifiedPayload = JSON.stringify(payload); + } catch { + // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.stringify()` still + // fails, we try again after normalizing it again with infinite normalization depth. This of course has a + // performance impact but in this case a performance hit is better than throwing. + stringifiedPayload = JSON.stringify(normalize.normalize(payload)); + } + append(stringifiedPayload); + } + } + + return typeof parts === 'string' ? parts : concatBuffers(parts); +} + +function concatBuffers(buffers) { + const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0); + + const merged = new Uint8Array(totalLength); + let offset = 0; + for (const buffer of buffers) { + merged.set(buffer, offset); + offset += buffer.length; + } + + return merged; +} + +/** + * Parses an envelope + */ +function parseEnvelope(env) { + let buffer = typeof env === 'string' ? encodeUTF8(env) : env; + + function readBinary(length) { + const bin = buffer.subarray(0, length); + // Replace the buffer with the remaining data excluding trailing newline + buffer = buffer.subarray(length + 1); + return bin; + } + + function readJson() { + let i = buffer.indexOf(0xa); + // If we couldn't find a newline, we must have found the end of the buffer + if (i < 0) { + i = buffer.length; + } + + return JSON.parse(decodeUTF8(readBinary(i))) ; + } + + const envelopeHeader = readJson(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const items = []; + + while (buffer.length) { + const itemHeader = readJson(); + const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined; + + items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]); + } + + return [envelopeHeader, items]; +} + +/** + * Creates envelope item for a single span + */ +function createSpanEnvelopeItem(spanJson) { + const spanHeaders = { + type: 'span', + }; + + return [spanHeaders, spanJson]; +} + +/** + * Creates attachment envelope items + */ +function createAttachmentEnvelopeItem(attachment) { + const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data) : attachment.data; + + return [ + { + type: 'attachment', + length: buffer.length, + filename: attachment.filename, + content_type: attachment.contentType, + attachment_type: attachment.attachmentType, + }, + buffer, + ]; +} + +const ITEM_TYPE_TO_DATA_CATEGORY_MAP = { + session: 'session', + sessions: 'session', + attachment: 'attachment', + transaction: 'transaction', + event: 'error', + client_report: 'internal', + user_report: 'default', + profile: 'profile', + profile_chunk: 'profile', + replay_event: 'replay', + replay_recording: 'replay', + check_in: 'monitor', + feedback: 'feedback', + span: 'span', + raw_security: 'security', + log: 'log_item', + metric: 'metric', + trace_metric: 'metric', +}; + +/** + * Maps the type of an envelope item to a data category. + */ +function envelopeItemTypeToDataCategory(type) { + return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type]; +} + +/** Extracts the minimal SDK info from the metadata or an events */ +function getSdkMetadataForEnvelopeHeader(metadataOrEvent) { + if (!metadataOrEvent?.sdk) { + return; + } + const { name, version } = metadataOrEvent.sdk; + return { name, version }; +} + +/** + * Creates event envelope headers, based on event, sdk info and tunnel + * Note: This function was extracted from the core package to make it available in Replay + */ +function createEventEnvelopeHeaders( + event, + sdkInfo, + tunnel, + dsn$1, +) { + const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext; + return { + event_id: event.event_id , + sent_at: new Date().toISOString(), + ...(sdkInfo && { sdk: sdkInfo }), + ...(!!tunnel && dsn$1 && { dsn: dsn.dsnToString(dsn$1) }), + ...(dynamicSamplingContext && { + trace: dynamicSamplingContext, + }), + }; +} + +exports.addItemToEnvelope = addItemToEnvelope; +exports.createAttachmentEnvelopeItem = createAttachmentEnvelopeItem; +exports.createEnvelope = createEnvelope; +exports.createEventEnvelopeHeaders = createEventEnvelopeHeaders; +exports.createSpanEnvelopeItem = createSpanEnvelopeItem; +exports.envelopeContainsItemType = envelopeContainsItemType; +exports.envelopeItemTypeToDataCategory = envelopeItemTypeToDataCategory; +exports.forEachEnvelopeItem = forEachEnvelopeItem; +exports.getSdkMetadataForEnvelopeHeader = getSdkMetadataForEnvelopeHeader; +exports.parseEnvelope = parseEnvelope; +exports.serializeEnvelope = serializeEnvelope; +//# sourceMappingURL=envelope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/envelope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/envelope.js.map new file mode 100644 index 0000000..94f70b1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/envelope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"envelope.js","sources":["../../../src/utils/envelope.ts"],"sourcesContent":["import { getSentryCarrier } from '../carrier';\nimport type { Attachment } from '../types-hoist/attachment';\nimport type { DataCategory } from '../types-hoist/datacategory';\nimport type { DsnComponents } from '../types-hoist/dsn';\nimport type {\n AttachmentItem,\n BaseEnvelopeHeaders,\n BaseEnvelopeItemHeaders,\n Envelope,\n EnvelopeItemType,\n EventEnvelopeHeaders,\n SpanItem,\n} from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { SdkInfo } from '../types-hoist/sdkinfo';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport type { SpanJSON } from '../types-hoist/span';\nimport { dsnToString } from './dsn';\nimport { normalize } from './normalize';\nimport { GLOBAL_OBJ } from './worldwide';\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 */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\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 */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as unknown as E;\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 */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => boolean | void,\n): boolean {\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 */\nexport function envelopeContainsItemType(envelope: Envelope, types: EnvelopeItemType[]): boolean {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8 array.\n */\nfunction encodeUTF8(input: string): Uint8Array {\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: Uint8Array): string {\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 */\nexport function serializeEnvelope(envelope: Envelope): string | Uint8Array {\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: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\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: string;\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: Uint8Array[]): Uint8Array {\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 */\nexport function parseEnvelope(env: string | Uint8Array): Envelope {\n let buffer = typeof env === 'string' ? encodeUTF8(env) : env;\n\n function readBinary(length: number): Uint8Array {\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(): T {\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))) as T;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items: [any, any][] = [];\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 */\nexport function createSpanEnvelopeItem(spanJson: Partial): SpanItem {\n const spanHeaders: SpanItem[0] = {\n type: 'span',\n };\n\n return [spanHeaders, spanJson];\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(attachment: Attachment): AttachmentItem {\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\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n profile_chunk: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n feedback: 'feedback',\n span: 'span',\n raw_security: 'security',\n log: 'log_item',\n metric: 'metric',\n trace_metric: 'metric',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nexport function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {\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 */\nexport function createEventEnvelopeHeaders(\n event: Event,\n sdkInfo: SdkInfo | undefined,\n tunnel: string | undefined,\n dsn?: DsnComponents,\n): EventEnvelopeHeaders {\n const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext;\n return {\n event_id: event.event_id as string,\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"],"names":["carrier","getSentryCarrier","GLOBAL_OBJ","normalize","dsn","dsnToString"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/error.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/error.js new file mode 100644 index 0000000..caccf0b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/error.js @@ -0,0 +1,19 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * An error emitted by Sentry SDKs and related utilities. + * @deprecated This class is no longer used and will be removed in a future version. Use `Error` instead. + */ +class SentryError extends Error { + + constructor( + message, + logLevel = 'warn', + ) { + super(message);this.message = message; + this.logLevel = logLevel; + } +} + +exports.SentryError = SentryError; +//# sourceMappingURL=error.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/error.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/error.js.map new file mode 100644 index 0000000..6098a0a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/error.js.map @@ -0,0 +1 @@ +{"version":3,"file":"error.js","sources":["../../../src/utils/error.ts"],"sourcesContent":["import type { ConsoleLevel } from '../types-hoist/instrument';\n\n/**\n * An error emitted by Sentry SDKs and related utilities.\n * @deprecated This class is no longer used and will be removed in a future version. Use `Error` instead.\n */\nexport class SentryError extends Error {\n public logLevel: ConsoleLevel;\n\n public constructor(\n public message: string,\n logLevel: ConsoleLevel = 'warn',\n ) {\n super(message);\n\n this.logLevel = logLevel;\n }\n}\n"],"names":[],"mappings":";;AAEA;AACA;AACA;AACA;AACO,MAAM,WAAA,SAAoB,KAAA,CAAM;;AAGvC,GAAS,WAAW;AACpB,KAAW,OAAO;AAClB,IAAI,QAAQ,GAAiB,MAAM;AACnC,IAAI;AACJ,IAAI,KAAK,CAAC,OAAO,CAAA,CAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAEjB,IAAI,IAAI,CAAC,QAAA,GAAW,QAAQ;AAC5B,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventUtils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventUtils.js new file mode 100644 index 0000000..c6e09af --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventUtils.js @@ -0,0 +1,30 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Get a list of possible event messages from a Sentry event. + */ +function getPossibleEventMessages(event) { + const possibleMessages = []; + + if (event.message) { + possibleMessages.push(event.message); + } + + try { + // @ts-expect-error Try catching to save bundle size + const lastException = event.exception.values[event.exception.values.length - 1]; + if (lastException?.value) { + possibleMessages.push(lastException.value); + if (lastException.type) { + possibleMessages.push(`${lastException.type}: ${lastException.value}`); + } + } + } catch { + // ignore errors here + } + + return possibleMessages; +} + +exports.getPossibleEventMessages = getPossibleEventMessages; +//# sourceMappingURL=eventUtils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventUtils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventUtils.js.map new file mode 100644 index 0000000..234a095 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"eventUtils.js","sources":["../../../src/utils/eventUtils.ts"],"sourcesContent":["import type { Event } from '../types-hoist/event';\n\n/**\n * Get a list of possible event messages from a Sentry event.\n */\nexport function getPossibleEventMessages(event: Event): string[] {\n const possibleMessages: string[] = [];\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"],"names":[],"mappings":";;AAEA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,KAAK,EAAmB;AACjE,EAAE,MAAM,gBAAgB,GAAa,EAAE;;AAEvC,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AACrB,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACxC,EAAE;;AAEF,EAAE,IAAI;AACN;AACA,IAAI,MAAM,aAAA,GAAgB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAA,GAAS,CAAC,CAAC;AACnF,IAAI,IAAI,aAAa,EAAE,KAAK,EAAE;AAC9B,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAChD,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE;AAC9B,QAAQ,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAA,aAAA,CAAA,IAAA,CAAA,EAAA,EAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA,CAAA,CAAA,MAAA;AACA;AACA,EAAA;;AAEA,EAAA,OAAA,gBAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventbuilder.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventbuilder.js new file mode 100644 index 0000000..8d8bdaf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventbuilder.js @@ -0,0 +1,229 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const is = require('./is.js'); +const misc = require('./misc.js'); +const normalize = require('./normalize.js'); +const object = require('./object.js'); + +/** + * Extracts stack frames from the error.stack string + */ +function parseStackFrames(stackParser, error) { + return stackParser(error.stack || '', 1); +} + +function hasSentryFetchUrlHost(error) { + return is.isError(error) && '__sentry_fetch_url_host__' in error && typeof error.__sentry_fetch_url_host__ === 'string'; +} + +/** + * Enhances the error message with the hostname for better Sentry error reporting. + * This allows third-party packages to still match on the original error message, + * while Sentry gets the enhanced version with context. + * + * Only used internally + * @hidden + */ +function _enhanceErrorWithSentryInfo(error) { + // If the error has a __sentry_fetch_url_host__ property (added by fetch instrumentation), + // enhance the error message with the hostname. + if (hasSentryFetchUrlHost(error)) { + return `${error.message} (${error.__sentry_fetch_url_host__})`; + } + + return error.message; +} + +/** + * Extracts stack frames from the error and builds a Sentry Exception + */ +function exceptionFromError(stackParser, error) { + const exception = { + type: error.name || error.constructor.name, + value: _enhanceErrorWithSentryInfo(error), + }; + + const frames = parseStackFrames(stackParser, error); + if (frames.length) { + exception.stacktrace = { frames }; + } + + return exception; +} + +/** If a plain object has a property that is an `Error`, return this error. */ +function getErrorPropertyFromObject(obj) { + for (const prop in obj) { + if (Object.prototype.hasOwnProperty.call(obj, prop)) { + const value = obj[prop]; + if (value instanceof Error) { + return value; + } + } + } + + return undefined; +} + +function getMessageForObject(exception) { + if ('name' in exception && typeof exception.name === 'string') { + let message = `'${exception.name}' captured as exception`; + + if ('message' in exception && typeof exception.message === 'string') { + message += ` with message '${exception.message}'`; + } + + return message; + } else if ('message' in exception && typeof exception.message === 'string') { + return exception.message; + } + + const keys = object.extractExceptionKeysForMessage(exception); + + // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before + // We still want to try to get a decent message for these cases + if (is.isErrorEvent(exception)) { + return `Event \`ErrorEvent\` captured as exception with message \`${exception.message}\``; + } + + const className = getObjectClassName(exception); + + return `${ + className && className !== 'Object' ? `'${className}'` : 'Object' + } captured as exception with keys: ${keys}`; +} + +function getObjectClassName(obj) { + try { + const prototype = Object.getPrototypeOf(obj); + return prototype ? prototype.constructor.name : undefined; + } catch { + // ignore errors here + } +} + +function getException( + client, + mechanism, + exception, + hint, +) { + if (is.isError(exception)) { + return [exception, undefined]; + } + + // Mutate this! + mechanism.synthetic = true; + + if (is.isPlainObject(exception)) { + const normalizeDepth = client?.getOptions().normalizeDepth; + const extras = { ['__serialized__']: normalize.normalizeToSize(exception, normalizeDepth) }; + + const errorFromProp = getErrorPropertyFromObject(exception); + if (errorFromProp) { + return [errorFromProp, extras]; + } + + const message = getMessageForObject(exception); + const ex = hint?.syntheticException || new Error(message); + ex.message = message; + + return [ex, extras]; + } + + // This handles when someone does: `throw "something awesome";` + // We use synthesized Error here so we can extract a (rough) stack trace. + const ex = hint?.syntheticException || new Error(exception ); + ex.message = `${exception}`; + + return [ex, undefined]; +} + +/** + * Builds and Event from a Exception + * @hidden + */ +function eventFromUnknownInput( + client, + stackParser, + exception, + hint, +) { + const providedMechanism = hint?.data && (hint.data ).mechanism; + const mechanism = providedMechanism || { + handled: true, + type: 'generic', + }; + + const [ex, extras] = getException(client, mechanism, exception, hint); + + const event = { + exception: { + values: [exceptionFromError(stackParser, ex)], + }, + }; + + if (extras) { + event.extra = extras; + } + + misc.addExceptionTypeValue(event, undefined, undefined); + misc.addExceptionMechanism(event, mechanism); + + return { + ...event, + event_id: hint?.event_id, + }; +} + +/** + * Builds and Event from a Message + * @hidden + */ +function eventFromMessage( + stackParser, + message, + level = 'info', + hint, + attachStacktrace, +) { + const event = { + event_id: hint?.event_id, + level, + }; + + if (attachStacktrace && hint?.syntheticException) { + const frames = parseStackFrames(stackParser, hint.syntheticException); + if (frames.length) { + event.exception = { + values: [ + { + value: message, + stacktrace: { frames }, + }, + ], + }; + misc.addExceptionMechanism(event, { synthetic: true }); + } + } + + if (is.isParameterizedString(message)) { + const { __sentry_template_string__, __sentry_template_values__ } = message; + + event.logentry = { + message: __sentry_template_string__, + params: __sentry_template_values__, + }; + return event; + } + + event.message = message; + return event; +} + +exports._enhanceErrorWithSentryInfo = _enhanceErrorWithSentryInfo; +exports.eventFromMessage = eventFromMessage; +exports.eventFromUnknownInput = eventFromUnknownInput; +exports.exceptionFromError = exceptionFromError; +exports.parseStackFrames = parseStackFrames; +//# sourceMappingURL=eventbuilder.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventbuilder.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventbuilder.js.map new file mode 100644 index 0000000..8ea823a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/eventbuilder.js.map @@ -0,0 +1 @@ +{"version":3,"file":"eventbuilder.js","sources":["../../../src/utils/eventbuilder.ts"],"sourcesContent":["import type { Client } from '../client';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { Extras } from '../types-hoist/extra';\nimport type { Mechanism } from '../types-hoist/mechanism';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport type { SeverityLevel } from '../types-hoist/severity';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isError, isErrorEvent, isParameterizedString, isPlainObject } from './is';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc';\nimport { normalizeToSize } from './normalize';\nimport { extractExceptionKeysForMessage } from './object';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nexport function parseStackFrames(stackParser: StackParser, error: Error): StackFrame[] {\n return stackParser(error.stack || '', 1);\n}\n\nfunction hasSentryFetchUrlHost(error: unknown): error is Error & { __sentry_fetch_url_host__: string } {\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 */\nexport function _enhanceErrorWithSentryInfo(error: T): string {\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 */\nexport function exceptionFromError(stackParser: StackParser, error: Error): Exception {\n const exception: 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: Record): Error | undefined {\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: Record): string {\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: unknown): string | undefined | void {\n try {\n const prototype: unknown | null = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch {\n // ignore errors here\n }\n}\n\nfunction getException(\n client: Client,\n mechanism: Mechanism,\n exception: unknown,\n hint?: EventHint,\n): [Error, Extras | undefined] {\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 as string);\n ex.message = `${exception}`;\n\n return [ex, undefined];\n}\n\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nexport function eventFromUnknownInput(\n client: Client,\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n): Event {\n const providedMechanism: Mechanism | undefined = hint?.data && (hint.data as { mechanism: Mechanism }).mechanism;\n const mechanism: Mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n const [ex, extras] = getException(client, mechanism, exception, hint);\n\n const event: 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 */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): Event {\n const event: 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"],"names":["isError","extractExceptionKeysForMessage","isErrorEvent","isPlainObject","normalizeToSize","addExceptionTypeValue","addExceptionMechanism","isParameterizedString"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/exports.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/exports.js new file mode 100644 index 0000000..9c3f0c6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/exports.js @@ -0,0 +1,52 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Replaces constructor functions in module exports, handling read-only properties, + * and both default and named exports by wrapping them with the constructor. + * + * @param exports The module exports object to modify + * @param exportName The name of the export to replace (e.g., 'GoogleGenAI', 'Anthropic', 'OpenAI') + * @param wrappedConstructor The wrapped constructor function to replace the original with + * @returns void + */ +function replaceExports( + exports, + exportName, + wrappedConstructor, +) { + const original = exports[exportName]; + + if (typeof original !== 'function') { + return; + } + + // Replace the named export - handle read-only properties + try { + exports[exportName] = wrappedConstructor; + } catch (error) { + // If direct assignment fails, override the property descriptor + Object.defineProperty(exports, exportName, { + value: wrappedConstructor, + writable: true, + configurable: true, + enumerable: true, + }); + } + + // Replace the default export if it points to the original constructor + if (exports.default === original) { + try { + exports.default = wrappedConstructor; + } catch (error) { + Object.defineProperty(exports, 'default', { + value: wrappedConstructor, + writable: true, + configurable: true, + enumerable: true, + }); + } + } +} + +exports.replaceExports = replaceExports; +//# sourceMappingURL=exports.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/exports.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/exports.js.map new file mode 100644 index 0000000..3effe3c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/exports.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exports.js","sources":["../../../src/utils/exports.ts"],"sourcesContent":["/**\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 */\nexport function replaceExports(\n exports: { [key: string]: unknown },\n exportName: string,\n wrappedConstructor: unknown,\n): void {\n const original = exports[exportName];\n\n if (typeof original !== 'function') {\n return;\n }\n\n // Replace the named export - handle read-only properties\n try {\n exports[exportName] = wrappedConstructor;\n } catch (error) {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports, 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.default === original) {\n try {\n exports.default = wrappedConstructor;\n } catch (error) {\n Object.defineProperty(exports, 'default', {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n}\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc;AAC9B,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,kBAAkB;AACpB,EAAQ;AACR,EAAE,MAAM,QAAA,GAAW,OAAO,CAAC,UAAU,CAAC;;AAEtC,EAAE,IAAI,OAAO,QAAA,KAAa,UAAU,EAAE;AACtC,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,IAAI;AACN,IAAI,OAAO,CAAC,UAAU,CAAA,GAAI,kBAAkB;AAC5C,EAAE,CAAA,CAAE,OAAO,KAAK,EAAE;AAClB;AACA,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE;AAC/C,MAAM,KAAK,EAAE,kBAAkB;AAC/B,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,UAAU,EAAE,IAAI;AACtB,KAAK,CAAC;AACN,EAAE;;AAEF;AACA,EAAE,IAAI,OAAO,CAAC,OAAA,KAAY,QAAQ,EAAE;AACpC,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,OAAA,GAAU,kBAAkB;AAC1C,IAAI,CAAA,CAAE,OAAO,KAAK,EAAE;AACpB,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;AAChD,QAAQ,KAAK,EAAE,kBAAkB;AACjC,QAAQ,QAAQ,EAAE,IAAI;AACtB,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,UAAU,EAAE,IAAI;AACxB,OAAO,CAAC;AACR,IAAI;AACJ,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/featureFlags.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/featureFlags.js new file mode 100644 index 0000000..09b7596 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/featureFlags.js @@ -0,0 +1,160 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const debugBuild = require('../debug-build.js'); +const debugLogger = require('./debug-logger.js'); +const spanUtils = require('./spanUtils.js'); + +/** + * Ordered LRU cache for storing feature flags in the scope context. The name + * of each flag in the buffer is unique, and the output of getAll() is ordered + * from oldest to newest. + */ + +/** + * Max size of the LRU flag buffer stored in Sentry scope and event contexts. + */ +const _INTERNAL_FLAG_BUFFER_SIZE = 100; + +/** + * Max number of flag evaluations to record per span. + */ +const _INTERNAL_MAX_FLAGS_PER_SPAN = 10; + +const SPAN_FLAG_ATTRIBUTE_PREFIX = 'flag.evaluation.'; + +/** + * Copies feature flags that are in current scope context to the event context + */ +function _INTERNAL_copyFlagsFromScopeToEvent(event) { + const scope = currentScopes.getCurrentScope(); + const flagContext = scope.getScopeData().contexts.flags; + const flagBuffer = flagContext ? flagContext.values : []; + + if (!flagBuffer.length) { + return event; + } + + if (event.contexts === undefined) { + event.contexts = {}; + } + event.contexts.flags = { values: [...flagBuffer] }; + return event; +} + +/** + * Inserts a flag into the current scope's context while maintaining ordered LRU properties. + * Not thread-safe. After inserting: + * - The flag buffer is sorted in order of recency, with the newest evaluation at the end. + * - The names in the buffer are always unique. + * - The length of the buffer never exceeds `maxSize`. + * + * @param name Name of the feature flag to insert. + * @param value Value of the feature flag. + * @param maxSize Max number of flags the buffer should store. Default value should always be used in production. + */ +function _INTERNAL_insertFlagToScope( + name, + value, + maxSize = _INTERNAL_FLAG_BUFFER_SIZE, +) { + const scopeContexts = currentScopes.getCurrentScope().getScopeData().contexts; + if (!scopeContexts.flags) { + scopeContexts.flags = { values: [] }; + } + const flags = scopeContexts.flags.values; + _INTERNAL_insertToFlagBuffer(flags, name, value, maxSize); +} + +/** + * Exported for tests only. Currently only accepts boolean values (otherwise no-op). + * Inserts a flag into a FeatureFlag array while maintaining the following properties: + * - Flags are sorted in order of recency, with the newest evaluation at the end. + * - The flag names are always unique. + * - The length of the array never exceeds `maxSize`. + * + * @param flags The buffer to insert the flag into. + * @param name Name of the feature flag to insert. + * @param value Value of the feature flag. + * @param maxSize Max number of flags the buffer should store. Default value should always be used in production. + */ +function _INTERNAL_insertToFlagBuffer( + flags, + name, + value, + maxSize, +) { + if (typeof value !== 'boolean') { + return; + } + + if (flags.length > maxSize) { + debugBuild.DEBUG_BUILD && debugLogger.debug.error(`[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize=${maxSize}`); + return; + } + + // Check if the flag is already in the buffer - O(n) + const index = flags.findIndex(f => f.flag === name); + + if (index !== -1) { + // The flag was found, remove it from its current position - O(n) + flags.splice(index, 1); + } + + if (flags.length === maxSize) { + // If at capacity, pop the earliest flag - O(n) + flags.shift(); + } + + // Push the flag to the end - O(1) + flags.push({ + flag: name, + result: value, + }); +} + +/** + * Records a feature flag evaluation for the active span. This is a no-op for non-boolean values. + * The flag and its value is stored in span attributes with the `flag.evaluation` prefix. Once the + * unique flags for a span reaches maxFlagsPerSpan, subsequent flags are dropped. + * + * @param name Name of the feature flag. + * @param value Value of the feature flag. Non-boolean values are ignored. + * @param maxFlagsPerSpan Max number of flags a buffer should store. Default value should always be used in production. + */ +function _INTERNAL_addFeatureFlagToActiveSpan( + name, + value, + maxFlagsPerSpan = _INTERNAL_MAX_FLAGS_PER_SPAN, +) { + if (typeof value !== 'boolean') { + return; + } + + const span = spanUtils.getActiveSpan(); + if (!span) { + return; + } + + const attributes = spanUtils.spanToJSON(span).data; + + // If the flag already exists, always update it + if (`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}` in attributes) { + span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value); + return; + } + + // Else, add the flag to the span if we have not reached the max number of flags + const numOfAddedFlags = Object.keys(attributes).filter(key => key.startsWith(SPAN_FLAG_ATTRIBUTE_PREFIX)).length; + if (numOfAddedFlags < maxFlagsPerSpan) { + span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value); + } +} + +exports._INTERNAL_FLAG_BUFFER_SIZE = _INTERNAL_FLAG_BUFFER_SIZE; +exports._INTERNAL_MAX_FLAGS_PER_SPAN = _INTERNAL_MAX_FLAGS_PER_SPAN; +exports._INTERNAL_addFeatureFlagToActiveSpan = _INTERNAL_addFeatureFlagToActiveSpan; +exports._INTERNAL_copyFlagsFromScopeToEvent = _INTERNAL_copyFlagsFromScopeToEvent; +exports._INTERNAL_insertFlagToScope = _INTERNAL_insertFlagToScope; +exports._INTERNAL_insertToFlagBuffer = _INTERNAL_insertToFlagBuffer; +//# sourceMappingURL=featureFlags.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/featureFlags.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/featureFlags.js.map new file mode 100644 index 0000000..802d49e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/featureFlags.js.map @@ -0,0 +1 @@ +{"version":3,"file":"featureFlags.js","sources":["../../../src/utils/featureFlags.ts"],"sourcesContent":["import { getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { type Event } from '../types-hoist/event';\nimport { debug } from './debug-logger';\nimport { getActiveSpan, spanToJSON } from './spanUtils';\n\n/**\n * Ordered LRU cache for storing feature flags in the scope context. The name\n * of each flag in the buffer is unique, and the output of getAll() is ordered\n * from oldest to newest.\n */\n\nexport type FeatureFlag = { readonly flag: string; readonly result: boolean };\n\n/**\n * Max size of the LRU flag buffer stored in Sentry scope and event contexts.\n */\nexport const _INTERNAL_FLAG_BUFFER_SIZE = 100;\n\n/**\n * Max number of flag evaluations to record per span.\n */\nexport const _INTERNAL_MAX_FLAGS_PER_SPAN = 10;\n\nconst SPAN_FLAG_ATTRIBUTE_PREFIX = 'flag.evaluation.';\n\n/**\n * Copies feature flags that are in current scope context to the event context\n */\nexport function _INTERNAL_copyFlagsFromScopeToEvent(event: Event): Event {\n const scope = getCurrentScope();\n const flagContext = scope.getScopeData().contexts.flags;\n const flagBuffer = flagContext ? flagContext.values : [];\n\n if (!flagBuffer.length) {\n return event;\n }\n\n if (event.contexts === undefined) {\n event.contexts = {};\n }\n event.contexts.flags = { values: [...flagBuffer] };\n return event;\n}\n\n/**\n * Inserts a flag into the current scope's context while maintaining ordered LRU properties.\n * Not thread-safe. After inserting:\n * - The flag buffer is sorted in order of recency, with the newest evaluation at the end.\n * - The names in the buffer are always unique.\n * - The length of the buffer never exceeds `maxSize`.\n *\n * @param name Name of the feature flag to insert.\n * @param value Value of the feature flag.\n * @param maxSize Max number of flags the buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_insertFlagToScope(\n name: string,\n value: unknown,\n maxSize: number = _INTERNAL_FLAG_BUFFER_SIZE,\n): void {\n const scopeContexts = getCurrentScope().getScopeData().contexts;\n if (!scopeContexts.flags) {\n scopeContexts.flags = { values: [] };\n }\n const flags = scopeContexts.flags.values;\n _INTERNAL_insertToFlagBuffer(flags, name, value, maxSize);\n}\n\n/**\n * Exported for tests only. Currently only accepts boolean values (otherwise no-op).\n * Inserts a flag into a FeatureFlag array while maintaining the following properties:\n * - Flags are sorted in order of recency, with the newest evaluation at the end.\n * - The flag names are always unique.\n * - The length of the array never exceeds `maxSize`.\n *\n * @param flags The buffer to insert the flag into.\n * @param name Name of the feature flag to insert.\n * @param value Value of the feature flag.\n * @param maxSize Max number of flags the buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_insertToFlagBuffer(\n flags: FeatureFlag[],\n name: string,\n value: unknown,\n maxSize: number,\n): void {\n if (typeof value !== 'boolean') {\n return;\n }\n\n if (flags.length > maxSize) {\n DEBUG_BUILD && debug.error(`[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize=${maxSize}`);\n return;\n }\n\n // Check if the flag is already in the buffer - O(n)\n const index = flags.findIndex(f => f.flag === name);\n\n if (index !== -1) {\n // The flag was found, remove it from its current position - O(n)\n flags.splice(index, 1);\n }\n\n if (flags.length === maxSize) {\n // If at capacity, pop the earliest flag - O(n)\n flags.shift();\n }\n\n // Push the flag to the end - O(1)\n flags.push({\n flag: name,\n result: value,\n });\n}\n\n/**\n * Records a feature flag evaluation for the active span. This is a no-op for non-boolean values.\n * The flag and its value is stored in span attributes with the `flag.evaluation` prefix. Once the\n * unique flags for a span reaches maxFlagsPerSpan, subsequent flags are dropped.\n *\n * @param name Name of the feature flag.\n * @param value Value of the feature flag. Non-boolean values are ignored.\n * @param maxFlagsPerSpan Max number of flags a buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_addFeatureFlagToActiveSpan(\n name: string,\n value: unknown,\n maxFlagsPerSpan: number = _INTERNAL_MAX_FLAGS_PER_SPAN,\n): void {\n if (typeof value !== 'boolean') {\n return;\n }\n\n const span = getActiveSpan();\n if (!span) {\n return;\n }\n\n const attributes = spanToJSON(span).data;\n\n // If the flag already exists, always update it\n if (`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}` in attributes) {\n span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value);\n return;\n }\n\n // Else, add the flag to the span if we have not reached the max number of flags\n const numOfAddedFlags = Object.keys(attributes).filter(key => key.startsWith(SPAN_FLAG_ATTRIBUTE_PREFIX)).length;\n if (numOfAddedFlags < maxFlagsPerSpan) {\n span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value);\n }\n}\n"],"names":["getCurrentScope","DEBUG_BUILD","debug","getActiveSpan","spanToJSON"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/flushIfServerless.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/flushIfServerless.js new file mode 100644 index 0000000..e75ca94 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/flushIfServerless.js @@ -0,0 +1,79 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const exports$1 = require('../exports.js'); +const debugLogger = require('./debug-logger.js'); +const vercelWaitUntil = require('./vercelWaitUntil.js'); +const worldwide = require('./worldwide.js'); + +async function flushWithTimeout(timeout) { + try { + debugLogger.debug.log('Flushing events...'); + await exports$1.flush(timeout); + debugLogger.debug.log('Done flushing events'); + } catch (e) { + debugLogger.debug.log('Error while flushing events:\n', e); + } +} + +/** + * Flushes the event queue with a timeout in serverless environments to ensure that events are sent to Sentry before the + * serverless function execution ends. + * + * The function is async, but in environments that support a `waitUntil` mechanism, it will run synchronously. + * + * This function is aware of the following serverless platforms: + * - Cloudflare: If a Cloudflare context is provided, it will use `ctx.waitUntil()` to flush events (keeps the `this` context of `ctx`). + * If a `cloudflareWaitUntil` function is provided, it will use that to flush events (looses the `this` context of `ctx`). + * - Vercel: It detects the Vercel environment and uses Vercel's `waitUntil` function. + * - Other Serverless (AWS Lambda, Google Cloud, etc.): It detects the environment via environment variables + * and uses a regular `await flush()`. + * + * @internal This function is supposed for internal Sentry SDK usage only. + * @hidden + */ +async function flushIfServerless( + params + + = {}, +) { + const { timeout = 2000 } = params; + + if ('cloudflareWaitUntil' in params && typeof params?.cloudflareWaitUntil === 'function') { + params.cloudflareWaitUntil(flushWithTimeout(timeout)); + return; + } + + if ('cloudflareCtx' in params && typeof params.cloudflareCtx?.waitUntil === 'function') { + params.cloudflareCtx.waitUntil(flushWithTimeout(timeout)); + return; + } + + // Note: vercelWaitUntil only does something in Vercel Edge runtime + // In Node runtime, we use process.on('SIGTERM') instead + // @ts-expect-error This is not typed + if (worldwide.GLOBAL_OBJ[Symbol.for('@vercel/request-context')]) { + // Vercel has a waitUntil equivalent that works without execution context + vercelWaitUntil.vercelWaitUntil(flushWithTimeout(timeout)); + return; + } + + if (typeof process === 'undefined') { + return; + } + + const isServerless = + !!process.env.FUNCTIONS_WORKER_RUNTIME || // Azure Functions + !!process.env.LAMBDA_TASK_ROOT || // AWS Lambda + !!process.env.K_SERVICE || // Google Cloud Run + !!process.env.CF_PAGES || // Cloudflare Pages + !!process.env.VERCEL || + !!process.env.NETLIFY; + + if (isServerless) { + // Use regular flush for environments without a generic waitUntil mechanism + await flushWithTimeout(timeout); + } +} + +exports.flushIfServerless = flushIfServerless; +//# sourceMappingURL=flushIfServerless.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/flushIfServerless.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/flushIfServerless.js.map new file mode 100644 index 0000000..262bf50 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/flushIfServerless.js.map @@ -0,0 +1 @@ +{"version":3,"file":"flushIfServerless.js","sources":["../../../src/utils/flushIfServerless.ts"],"sourcesContent":["import { flush } from '../exports';\nimport { debug } from './debug-logger';\nimport { vercelWaitUntil } from './vercelWaitUntil';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype MinimalCloudflareContext = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n waitUntil(promise: Promise): void;\n};\n\nasync function flushWithTimeout(timeout: number): Promise {\n try {\n debug.log('Flushing events...');\n await flush(timeout);\n debug.log('Done flushing events');\n } catch (e) {\n debug.log('Error while flushing events:\\n', e);\n }\n}\n\n/**\n * Flushes the event queue with a timeout in serverless environments to ensure that events are sent to Sentry before the\n * serverless function execution ends.\n *\n * The function is async, but in environments that support a `waitUntil` mechanism, it will run synchronously.\n *\n * This function is aware of the following serverless platforms:\n * - Cloudflare: If a Cloudflare context is provided, it will use `ctx.waitUntil()` to flush events (keeps the `this` context of `ctx`).\n * If a `cloudflareWaitUntil` function is provided, it will use that to flush events (looses the `this` context of `ctx`).\n * - Vercel: It detects the Vercel environment and uses Vercel's `waitUntil` function.\n * - Other Serverless (AWS Lambda, Google Cloud, etc.): It detects the environment via environment variables\n * and uses a regular `await flush()`.\n *\n * @internal This function is supposed for internal Sentry SDK usage only.\n * @hidden\n */\nexport async function flushIfServerless(\n params: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | { timeout?: number; cloudflareWaitUntil?: (task: Promise) => void }\n | { timeout?: number; cloudflareCtx?: MinimalCloudflareContext } = {},\n): Promise {\n const { timeout = 2000 } = params;\n\n if ('cloudflareWaitUntil' in params && typeof params?.cloudflareWaitUntil === 'function') {\n params.cloudflareWaitUntil(flushWithTimeout(timeout));\n return;\n }\n\n if ('cloudflareCtx' in params && typeof params.cloudflareCtx?.waitUntil === 'function') {\n params.cloudflareCtx.waitUntil(flushWithTimeout(timeout));\n return;\n }\n\n // Note: vercelWaitUntil only does something in Vercel Edge runtime\n // In Node runtime, we use process.on('SIGTERM') instead\n // @ts-expect-error This is not typed\n if (GLOBAL_OBJ[Symbol.for('@vercel/request-context')]) {\n // Vercel has a waitUntil equivalent that works without execution context\n vercelWaitUntil(flushWithTimeout(timeout));\n return;\n }\n\n if (typeof process === 'undefined') {\n return;\n }\n\n const isServerless =\n !!process.env.FUNCTIONS_WORKER_RUNTIME || // Azure Functions\n !!process.env.LAMBDA_TASK_ROOT || // AWS Lambda\n !!process.env.K_SERVICE || // Google Cloud Run\n !!process.env.CF_PAGES || // Cloudflare Pages\n !!process.env.VERCEL ||\n !!process.env.NETLIFY;\n\n if (isServerless) {\n // Use regular flush for environments without a generic waitUntil mechanism\n await flushWithTimeout(timeout);\n }\n}\n"],"names":["debug","flush","GLOBAL_OBJ","vercelWaitUntil"],"mappings":";;;;;;;AAUA,eAAe,gBAAgB,CAAC,OAAO,EAAyB;AAChE,EAAE,IAAI;AACN,IAAIA,iBAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACnC,IAAI,MAAMC,eAAK,CAAC,OAAO,CAAC;AACxB,IAAID,iBAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC;AACrC,EAAE,CAAA,CAAE,OAAO,CAAC,EAAE;AACd,IAAIA,iBAAK,CAAC,GAAG,CAAC,gCAAgC,EAAE,CAAC,CAAC;AAClD,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,iBAAiB;AACvC,EAAE;;AAEE,GAAmE,EAAE;AACzE,EAAiB;AACjB,EAAE,MAAM,EAAE,OAAA,GAAU,IAAA,EAAK,GAAI,MAAM;;AAEnC,EAAE,IAAI,qBAAA,IAAyB,MAAA,IAAU,OAAO,MAAM,EAAE,mBAAA,KAAwB,UAAU,EAAE;AAC5F,IAAI,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACzD,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,eAAA,IAAmB,UAAU,OAAO,MAAM,CAAC,aAAa,EAAE,SAAA,KAAc,UAAU,EAAE;AAC1F,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC7D,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,EAAE,IAAIE,oBAAU,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,EAAE;AACzD;AACA,IAAIC,+BAAe,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC9C,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,OAAO,OAAA,KAAY,WAAW,EAAE;AACtC,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,YAAA;AACR,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAA;AAClB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAA;AAClB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAA;AAClB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAA;AAClB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAA;AAClB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;;AAEzB,EAAE,IAAI,YAAY,EAAE;AACpB;AACA,IAAI,MAAM,gBAAgB,CAAC,OAAO,CAAC;AACnC,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/handleCallbackErrors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/handleCallbackErrors.js new file mode 100644 index 0000000..fcc478c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/handleCallbackErrors.js @@ -0,0 +1,73 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const is = require('./is.js'); + +/* eslint-disable */ +// Vendor "Awaited" in to be TS 3.8 compatible + +/** + * Wrap a callback function with error handling. + * If an error is thrown, it will be passed to the `onError` callback and re-thrown. + * + * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`. + * + * If an `onFinally` callback is provided, this will be called when the callback has finished + * - so if it returns a promise, once the promise resolved/rejected, + * else once the callback has finished executing. + * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not. + */ +function handleCallbackErrors + +( + fn, + onError, + onFinally = () => {}, + onSuccess = () => {}, +) { + let maybePromiseResult; + try { + maybePromiseResult = fn(); + } catch (e) { + onError(e); + onFinally(); + throw e; + } + + return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally, onSuccess); +} + +/** + * Maybe handle a promise rejection. + * This expects to be given a value that _may_ be a promise, or any other value. + * If it is a promise, and it rejects, it will call the `onError` callback. + * Other than this, it will generally return the given value as-is. + */ +function maybeHandlePromiseRejection( + value, + onError, + onFinally, + onSuccess, +) { + if (is.isThenable(value)) { + // @ts-expect-error - the isThenable check returns the "wrong" type here + return value.then( + res => { + onFinally(); + onSuccess(res); + return res; + }, + e => { + onError(e); + onFinally(); + throw e; + }, + ); + } + + onFinally(); + onSuccess(value); + return value; +} + +exports.handleCallbackErrors = handleCallbackErrors; +//# sourceMappingURL=handleCallbackErrors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/handleCallbackErrors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/handleCallbackErrors.js.map new file mode 100644 index 0000000..8254ca2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/handleCallbackErrors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"handleCallbackErrors.js","sources":["../../../src/utils/handleCallbackErrors.ts"],"sourcesContent":["import { isThenable } from '../utils/is';\n\n/* eslint-disable */\n// Vendor \"Awaited\" in to be TS 3.8 compatible\ntype AwaitedPromise = T extends null | undefined\n ? T // special case for `null | undefined` when not in `--strictNullChecks` mode\n : T extends object & { then(onfulfilled: infer F, ...args: infer _): any } // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\n ? F extends (value: infer V, ...args: infer _) => any // if the argument to `then` is callable, extracts the first argument\n ? V // normally this would recursively unwrap, but this is not possible in TS3.8\n : never // the argument to `then` was not callable\n : T; // non-object or non-thenable\n/* eslint-enable */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function handleCallbackErrors Promise, PromiseValue = AwaitedPromise>>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally?: () => void,\n onSuccess?: (result: PromiseValue) => void,\n): ReturnType;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function handleCallbackErrors any>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally?: () => void,\n onSuccess?: (result: ReturnType) => void,\n): ReturnType;\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 */\nexport function handleCallbackErrors<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Fn extends () => any,\n ValueType = ReturnType,\n>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally: () => void = () => {},\n onSuccess: (result: ValueType | AwaitedPromise) => void = () => {},\n): ValueType {\n let maybePromiseResult: ReturnType;\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 * Other than this, it will generally return the given value as-is.\n */\nfunction maybeHandlePromiseRejection(\n value: MaybePromise,\n onError: (error: unknown) => void,\n onFinally: () => void,\n onSuccess: (result: MaybePromise | AwaitedPromise) => void,\n): MaybePromise {\n if (isThenable(value)) {\n // @ts-expect-error - the isThenable check returns the \"wrong\" type here\n return value.then(\n res => {\n onFinally();\n onSuccess(res);\n return res;\n },\n e => {\n onError(e);\n onFinally();\n throw e;\n },\n );\n }\n\n onFinally();\n onSuccess(value);\n return value;\n}\n"],"names":["isThenable"],"mappings":";;;;AAEA;AACA;;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS;;AAIhB;AACA,EAAE,EAAE;AACJ,EAAE,OAAO;AACT,EAAE,SAAS,GAAe,MAAM,CAAC,CAAC;AAClC,EAAE,SAAS,GAA4D,MAAM,CAAC,CAAC;AAC/E,EAAa;AACb,EAAE,IAAI,kBAAkB;AACxB,EAAE,IAAI;AACN,IAAI,kBAAA,GAAqB,EAAE,EAAE;AAC7B,EAAE,CAAA,CAAE,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,CAAC,CAAC,CAAC;AACd,IAAI,SAAS,EAAE;AACf,IAAI,MAAM,CAAC;AACX,EAAE;;AAEF,EAAE,OAAO,2BAA2B,CAAC,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;AACvF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAA2B;AACpC,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAgB;AAChB,EAAE,IAAIA,aAAU,CAAC,KAAK,CAAC,EAAE;AACzB;AACA,IAAI,OAAO,KAAK,CAAC,IAAI;AACrB,MAAM,OAAO;AACb,QAAQ,SAAS,EAAE;AACnB,QAAQ,SAAS,CAAC,GAAG,CAAC;AACtB,QAAQ,OAAO,GAAG;AAClB,MAAM,CAAC;AACP,MAAM,KAAK;AACX,QAAQ,OAAO,CAAC,CAAC,CAAC;AAClB,QAAQ,SAAS,EAAE;AACnB,QAAQ,MAAM,CAAC;AACf,MAAM,CAAC;AACP,KAAK;AACL,EAAE;;AAEF,EAAE,SAAS,EAAE;AACb,EAAE,SAAS,CAAC,KAAK,CAAC;AAClB,EAAE,OAAO,KAAK;AACd;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/hasSpansEnabled.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/hasSpansEnabled.js new file mode 100644 index 0000000..62e4ffc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/hasSpansEnabled.js @@ -0,0 +1,39 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); + +// Treeshakable guard to remove all code related to tracing + +/** + * Determines if span recording is currently enabled. + * + * Spans are recorded when at least one of `tracesSampleRate` and `tracesSampler` + * is defined in the SDK config. This function does not make any assumption about + * sampling decisions, it only checks if the SDK is configured to record spans. + * + * Important: This function only determines if span recording is enabled. Trace + * continuation and propagation is separately controlled and not covered by this function. + * If this function returns `false`, traces can still be propagated (which is what + * we refer to by "Tracing without Performance") + * @see https://develop.sentry.dev/sdk/telemetry/traces/tracing-without-performance/ + * + * @param maybeOptions An SDK options object to be passed to this function. + * If this option is not provided, the function will use the current client's options. + */ +function hasSpansEnabled( + maybeOptions, +) { + if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) { + return false; + } + + const options = maybeOptions || currentScopes.getClient()?.getOptions(); + return ( + !!options && + // 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) + (options.tracesSampleRate != null || !!options.tracesSampler) + ); +} + +exports.hasSpansEnabled = hasSpansEnabled; +//# sourceMappingURL=hasSpansEnabled.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/hasSpansEnabled.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/hasSpansEnabled.js.map new file mode 100644 index 0000000..0f0e80d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/hasSpansEnabled.js.map @@ -0,0 +1 @@ +{"version":3,"file":"hasSpansEnabled.js","sources":["../../../src/utils/hasSpansEnabled.ts"],"sourcesContent":["import { getClient } from '../currentScopes';\nimport type { CoreOptions } from '../types-hoist/options';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\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 */\nexport function hasSpansEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\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"],"names":["getClient"],"mappings":";;;;AAGA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe;AAC/B,EAAE,YAAY;AACd,EAAW;AACX,EAAE,IAAI,OAAO,kBAAA,KAAuB,SAAA,IAAa,CAAC,kBAAkB,EAAE;AACtE,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,MAAM,OAAA,GAAU,YAAA,IAAgBA,uBAAS,EAAE,EAAE,UAAU,EAAE;AAC3D,EAAE;AACF,IAAI,CAAC,CAAC,OAAA;AACN;AACA,KAAK,OAAO,CAAC,gBAAA,IAAoB,IAAA,IAAQ,CAAC,CAAC,OAAO,CAAC,aAAa;AAChE;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ipAddress.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ipAddress.js new file mode 100644 index 0000000..f4b890c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ipAddress.js @@ -0,0 +1,40 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +// By default, we want to infer the IP address, unless this is explicitly set to `null` +// We do this after all other processing is done +// If `ip_address` is explicitly set to `null` or a value, we leave it as is + +/** + * @internal + * @deprecated -- set ip inferral via via SDK metadata options on client instead. + */ +function addAutoIpAddressToUser(objWithMaybeUser) { + if (objWithMaybeUser.user?.ip_address === undefined) { + objWithMaybeUser.user = { + ...objWithMaybeUser.user, + ip_address: '{{auto}}', + }; + } +} + +/** + * @internal + */ +function addAutoIpAddressToSession(session) { + if ('aggregates' in session) { + if (session.attrs?.['ip_address'] === undefined) { + session.attrs = { + ...session.attrs, + ip_address: '{{auto}}', + }; + } + } else { + if (session.ipAddress === undefined) { + session.ipAddress = '{{auto}}'; + } + } +} + +exports.addAutoIpAddressToSession = addAutoIpAddressToSession; +exports.addAutoIpAddressToUser = addAutoIpAddressToUser; +//# sourceMappingURL=ipAddress.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ipAddress.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ipAddress.js.map new file mode 100644 index 0000000..5fade02 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ipAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ipAddress.js","sources":["../../../src/utils/ipAddress.ts"],"sourcesContent":["import type { Session, SessionAggregates } from '../types-hoist/session';\nimport type { User } from '../types-hoist/user';\n\n// By default, we want to infer the IP address, unless this is explicitly set to `null`\n// We do this after all other processing is done\n// If `ip_address` is explicitly set to `null` or a value, we leave it as is\n\n/**\n * @internal\n * @deprecated -- set ip inferral via via SDK metadata options on client instead.\n */\nexport function addAutoIpAddressToUser(objWithMaybeUser: { user?: User | null }): void {\n if (objWithMaybeUser.user?.ip_address === undefined) {\n objWithMaybeUser.user = {\n ...objWithMaybeUser.user,\n ip_address: '{{auto}}',\n };\n }\n}\n\n/**\n * @internal\n */\nexport function addAutoIpAddressToSession(session: Session | SessionAggregates): void {\n if ('aggregates' in session) {\n if (session.attrs?.['ip_address'] === undefined) {\n session.attrs = {\n ...session.attrs,\n ip_address: '{{auto}}',\n };\n }\n } else {\n if (session.ipAddress === undefined) {\n session.ipAddress = '{{auto}}';\n }\n }\n}\n"],"names":[],"mappings":";;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,SAAS,sBAAsB,CAAC,gBAAgB,EAAgC;AACvF,EAAE,IAAI,gBAAgB,CAAC,IAAI,EAAE,UAAA,KAAe,SAAS,EAAE;AACvD,IAAI,gBAAgB,CAAC,IAAA,GAAO;AAC5B,MAAM,GAAG,gBAAgB,CAAC,IAAI;AAC9B,MAAM,UAAU,EAAE,UAAU;AAC5B,KAAK;AACL,EAAE;AACF;;AAEA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,OAAO,EAAqC;AACtF,EAAE,IAAI,YAAA,IAAgB,OAAO,EAAE;AAC/B,IAAI,IAAI,OAAO,CAAC,KAAK,GAAG,YAAY,CAAA,KAAM,SAAS,EAAE;AACrD,MAAM,OAAO,CAAC,KAAA,GAAQ;AACtB,QAAQ,GAAG,OAAO,CAAC,KAAK;AACxB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO;AACP,IAAI;AACJ,EAAE,OAAO;AACT,IAAI,IAAI,OAAO,CAAC,SAAA,KAAc,SAAS,EAAE;AACzC,MAAM,OAAO,CAAC,SAAA,GAAY,UAAU;AACpC,IAAI;AACJ,EAAE;AACF;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/is.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/is.js new file mode 100644 index 0000000..83720c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/is.js @@ -0,0 +1,229 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +// eslint-disable-next-line @typescript-eslint/unbound-method +const objectToString = Object.prototype.toString; + +/** + * Checks whether given value's type is one of a few Error or Error-like + * {@link isError}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isError(wat) { + switch (objectToString.call(wat)) { + case '[object Error]': + case '[object Exception]': + case '[object DOMException]': + case '[object WebAssembly.Exception]': + return true; + default: + return isInstanceOf(wat, Error); + } +} +/** + * Checks whether given value is an instance of the given built-in class. + * + * @param wat The value to be checked + * @param className + * @returns A boolean representing the result. + */ +function isBuiltin(wat, className) { + return objectToString.call(wat) === `[object ${className}]`; +} + +/** + * Checks whether given value's type is ErrorEvent + * {@link isErrorEvent}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isErrorEvent(wat) { + return isBuiltin(wat, 'ErrorEvent'); +} + +/** + * Checks whether given value's type is DOMError + * {@link isDOMError}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isDOMError(wat) { + return isBuiltin(wat, 'DOMError'); +} + +/** + * Checks whether given value's type is DOMException + * {@link isDOMException}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isDOMException(wat) { + return isBuiltin(wat, 'DOMException'); +} + +/** + * Checks whether given value's type is a string + * {@link isString}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isString(wat) { + return isBuiltin(wat, 'String'); +} + +/** + * Checks whether given string is parameterized + * {@link isParameterizedString}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isParameterizedString(wat) { + return ( + typeof wat === 'object' && + wat !== null && + '__sentry_template_string__' in wat && + '__sentry_template_values__' in wat + ); +} + +/** + * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol) + * {@link isPrimitive}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isPrimitive(wat) { + return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function'); +} + +/** + * Checks whether given value's type is an object literal, or a class instance. + * {@link isPlainObject}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isPlainObject(wat) { + return isBuiltin(wat, 'Object'); +} + +/** + * Checks whether given value's type is an Event instance + * {@link isEvent}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isEvent(wat) { + return typeof Event !== 'undefined' && isInstanceOf(wat, Event); +} + +/** + * Checks whether given value's type is an Element instance + * {@link isElement}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isElement(wat) { + return typeof Element !== 'undefined' && isInstanceOf(wat, Element); +} + +/** + * Checks whether given value's type is an regexp + * {@link isRegExp}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isRegExp(wat) { + return isBuiltin(wat, 'RegExp'); +} + +/** + * Checks whether given value has a then function. + * @param wat A value to be checked. + */ +function isThenable(wat) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return Boolean(wat?.then && typeof wat.then === 'function'); +} + +/** + * Checks whether given value's type is a SyntheticEvent + * {@link isSyntheticEvent}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isSyntheticEvent(wat) { + return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat; +} + +/** + * Checks whether given value's type is an instance of provided constructor. + * {@link isInstanceOf}. + * + * @param wat A value to be checked. + * @param base A constructor to be used in a check. + * @returns A boolean representing the result. + */ +// TODO: fix in v11, convert any to unknown +// export function isInstanceOf(wat: unknown, base: { new (...args: any[]): T }): wat is T { +function isInstanceOf(wat, base) { + try { + return wat instanceof base; + } catch { + return false; + } +} + +/** + * Checks whether given value's type is a Vue ViewModel or a VNode. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isVueViewModel(wat) { + // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property. + // We also need to check for __v_isVNode because Vue 3 component render instances have an internal __v_isVNode property. + return !!( + typeof wat === 'object' && + wat !== null && + ((wat ).__isVue || (wat )._isVue || (wat ).__v_isVNode) + ); +} + +/** + * Checks whether the given parameter is a Standard Web API Request instance. + * + * Returns false if Request is not available in the current runtime. + */ +function isRequest(request) { + return typeof Request !== 'undefined' && isInstanceOf(request, Request); +} + +exports.isDOMError = isDOMError; +exports.isDOMException = isDOMException; +exports.isElement = isElement; +exports.isError = isError; +exports.isErrorEvent = isErrorEvent; +exports.isEvent = isEvent; +exports.isInstanceOf = isInstanceOf; +exports.isParameterizedString = isParameterizedString; +exports.isPlainObject = isPlainObject; +exports.isPrimitive = isPrimitive; +exports.isRegExp = isRegExp; +exports.isRequest = isRequest; +exports.isString = isString; +exports.isSyntheticEvent = isSyntheticEvent; +exports.isThenable = isThenable; +exports.isVueViewModel = isVueViewModel; +//# sourceMappingURL=is.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/is.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/is.js.map new file mode 100644 index 0000000..2074ffe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/is.js.map @@ -0,0 +1 @@ +{"version":3,"file":"is.js","sources":["../../../src/utils/is.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Primitive } from '../types-hoist/misc';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport type { PolymorphicEvent } from '../types-hoist/polymorphics';\nimport type { VNode, VueViewModel } from '../types-hoist/vue';\n\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 */\nexport function isError(wat: unknown): wat is Error {\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: unknown, className: string): boolean {\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 */\nexport function isErrorEvent(wat: unknown): boolean {\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 */\nexport function isDOMError(wat: unknown): boolean {\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 */\nexport function isDOMException(wat: unknown): boolean {\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 */\nexport function isString(wat: unknown): wat is string {\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 */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\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 */\nexport function isPrimitive(wat: unknown): wat is Primitive {\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 */\nexport function isPlainObject(wat: unknown): wat is Record {\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 */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\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 */\nexport function isElement(wat: unknown): boolean {\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 */\nexport function isRegExp(wat: unknown): wat is RegExp {\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 */\nexport function isThenable(wat: any): wat is PromiseLike {\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 */\nexport function isSyntheticEvent(wat: unknown): boolean {\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 {\nexport function isInstanceOf(wat: any, base: any): wat is T {\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 */\nexport function isVueViewModel(wat: unknown): wat is VueViewModel | VNode {\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 as VueViewModel).__isVue || (wat as VueViewModel)._isVue || (wat as { __v_isVNode?: boolean }).__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 */\nexport function isRequest(request: unknown): request is Request {\n return typeof Request !== 'undefined' && isInstanceOf(request, Request);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isBrowser.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isBrowser.js new file mode 100644 index 0000000..9f32e70 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isBrowser.js @@ -0,0 +1,21 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const node = require('./node.js'); +const worldwide = require('./worldwide.js'); + +/** + * Returns true if we are in the browser. + */ +function isBrowser() { + // eslint-disable-next-line no-restricted-globals + return typeof window !== 'undefined' && (!node.isNodeEnv() || isElectronNodeRenderer()); +} + +// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them +function isElectronNodeRenderer() { + const process = (worldwide.GLOBAL_OBJ ).process; + return process?.type === 'renderer'; +} + +exports.isBrowser = isBrowser; +//# sourceMappingURL=isBrowser.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isBrowser.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isBrowser.js.map new file mode 100644 index 0000000..c68d13a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isBrowser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isBrowser.js","sources":["../../../src/utils/isBrowser.ts"],"sourcesContent":["import { isNodeEnv } from './node';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/**\n * Returns true if we are in the browser.\n */\nexport function isBrowser(): boolean {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\ntype ElectronProcess = { type?: string };\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer(): boolean {\n const process = (GLOBAL_OBJ as typeof GLOBAL_OBJ & { process?: ElectronProcess }).process;\n return process?.type === 'renderer';\n}\n"],"names":["isNodeEnv","GLOBAL_OBJ"],"mappings":";;;;;AAGA;AACA;AACA;AACO,SAAS,SAAS,GAAY;AACrC;AACA,EAAE,OAAO,OAAO,MAAA,KAAW,gBAAgB,CAACA,cAAS,EAAC,IAAK,sBAAsB,EAAE,CAAC;AACpF;;AAIA;AACA,SAAS,sBAAsB,GAAY;AAC3C,EAAE,MAAM,OAAA,GAAU,CAACC,oBAAA,GAAiE,OAAO;AAC3F,EAAE,OAAO,OAAO,EAAE,IAAA,KAAS,UAAU;AACrC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isSentryRequestUrl.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isSentryRequestUrl.js new file mode 100644 index 0000000..ed62747 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isSentryRequestUrl.js @@ -0,0 +1,43 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const url = require('./url.js'); + +/** + * Checks whether given url points to Sentry server + * + * @param url url to verify + */ +function isSentryRequestUrl(url, client) { + const dsn = client?.getDsn(); + const tunnel = client?.getOptions().tunnel; + return checkDsn(url, dsn) || checkTunnel(url, tunnel); +} + +function checkTunnel(url, tunnel) { + if (!tunnel) { + return false; + } + + return removeTrailingSlash(url) === removeTrailingSlash(tunnel); +} + +function checkDsn(url$1, dsn) { + // Requests to Sentry's ingest endpoint must have a `sentry_key` in the query string + // This is equivalent to the public_key which is required in the DSN + // see https://develop.sentry.dev/sdk/overview/#parsing-the-dsn + // Therefore, a request to the same host and with a `sentry_key` in the query string + // can be considered a request to the ingest endpoint. + const urlParts = url.parseStringToURLObject(url$1); + if (!urlParts || url.isURLObjectRelative(urlParts)) { + return false; + } + + return dsn ? urlParts.host.includes(dsn.host) && /(^|&|\?)sentry_key=/.test(urlParts.search) : false; +} + +function removeTrailingSlash(str) { + return str[str.length - 1] === '/' ? str.slice(0, -1) : str; +} + +exports.isSentryRequestUrl = isSentryRequestUrl; +//# sourceMappingURL=isSentryRequestUrl.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isSentryRequestUrl.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isSentryRequestUrl.js.map new file mode 100644 index 0000000..baf4233 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/isSentryRequestUrl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isSentryRequestUrl.js","sources":["../../../src/utils/isSentryRequestUrl.ts"],"sourcesContent":["import type { Client } from '../client';\nimport type { DsnComponents } from '../types-hoist/dsn';\nimport { isURLObjectRelative, parseStringToURLObject } from './url';\n\n/**\n * Checks whether given url points to Sentry server\n *\n * @param url url to verify\n */\nexport function isSentryRequestUrl(url: string, client: Client | undefined): boolean {\n const dsn = client?.getDsn();\n const tunnel = client?.getOptions().tunnel;\n return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url: string, tunnel: string | undefined): boolean {\n if (!tunnel) {\n return false;\n }\n\n return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url: string, dsn: DsnComponents | undefined): boolean {\n // Requests to Sentry's ingest endpoint must have a `sentry_key` in the query string\n // This is equivalent to the public_key which is required in the DSN\n // see https://develop.sentry.dev/sdk/overview/#parsing-the-dsn\n // Therefore, a request to the same host and with a `sentry_key` in the query string\n // can be considered a request to the ingest endpoint.\n const urlParts = parseStringToURLObject(url);\n if (!urlParts || isURLObjectRelative(urlParts)) {\n return false;\n }\n\n return dsn ? urlParts.host.includes(dsn.host) && /(^|&|\\?)sentry_key=/.test(urlParts.search) : false;\n}\n\nfunction removeTrailingSlash(str: string): string {\n return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n"],"names":["url","parseStringToURLObject","isURLObjectRelative"],"mappings":";;;;AAIA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,GAAG,EAAU,MAAM,EAA+B;AACrF,EAAE,MAAM,GAAA,GAAM,MAAM,EAAE,MAAM,EAAE;AAC9B,EAAE,MAAM,SAAS,MAAM,EAAE,UAAU,EAAE,CAAC,MAAM;AAC5C,EAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA,IAAK,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;AACvD;;AAEA,SAAS,WAAW,CAAC,GAAG,EAAU,MAAM,EAA+B;AACvE,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,OAAO,mBAAmB,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC;AACjE;;AAEA,SAAS,QAAQ,CAACA,KAAG,EAAU,GAAG,EAAsC;AACxE;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,QAAA,GAAWC,0BAAsB,CAACD,KAAG,CAAC;AAC9C,EAAE,IAAI,CAAC,QAAA,IAAYE,uBAAmB,CAAC,QAAQ,CAAC,EAAE;AAClD,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAA,IAAK,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA,GAAI,KAAK;AACtG;;AAEA,SAAS,mBAAmB,CAAC,GAAG,EAAkB;AAClD,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,MAAA,GAAS,CAAC,CAAA,KAAM,GAAA,GAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAA,GAAI,GAAG;AAC7D;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/lru.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/lru.js new file mode 100644 index 0000000..2d51621 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/lru.js @@ -0,0 +1,66 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** A simple Least Recently Used map */ +class LRUMap { + + constructor( _maxSize) {this._maxSize = _maxSize; + this._cache = new Map(); + } + + /** Get the current size of the cache */ + get size() { + return this._cache.size; + } + + /** Get an entry or undefined if it was not in the cache. Re-inserts to update the recently used order */ + get(key) { + const value = this._cache.get(key); + if (value === undefined) { + return undefined; + } + // Remove and re-insert to update the order + this._cache.delete(key); + this._cache.set(key, value); + return value; + } + + /** Insert an entry and evict an older entry if we've reached maxSize */ + set(key, value) { + if (this._cache.size >= this._maxSize) { + // keys() returns an iterator in insertion order so keys().next() gives us the oldest key + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const nextKey = this._cache.keys().next().value; + this._cache.delete(nextKey); + } + this._cache.set(key, value); + } + + /** Remove an entry and return the entry if it was in the cache */ + remove(key) { + const value = this._cache.get(key); + if (value) { + this._cache.delete(key); + } + return value; + } + + /** Clear all entries */ + clear() { + this._cache.clear(); + } + + /** Get all the keys */ + keys() { + return Array.from(this._cache.keys()); + } + + /** Get all the values */ + values() { + const values = []; + this._cache.forEach(value => values.push(value)); + return values; + } +} + +exports.LRUMap = LRUMap; +//# sourceMappingURL=lru.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/lru.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/lru.js.map new file mode 100644 index 0000000..5958a24 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/lru.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lru.js","sources":["../../../src/utils/lru.ts"],"sourcesContent":["/** A simple Least Recently Used map */\nexport class LRUMap {\n private readonly _cache: Map;\n\n public constructor(private readonly _maxSize: number) {\n this._cache = new Map();\n }\n\n /** Get the current size of the cache */\n public get size(): number {\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 public get(key: K): V | undefined {\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 public set(key: K, value: V): void {\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 public remove(key: K): V | undefined {\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 public clear(): void {\n this._cache.clear();\n }\n\n /** Get all the keys */\n public keys(): Array {\n return Array.from(this._cache.keys());\n }\n\n /** Get all the values */\n public values(): Array {\n const values: V[] = [];\n this._cache.forEach(value => values.push(value));\n return values;\n }\n}\n"],"names":[],"mappings":";;AAAA;AACO,MAAM,MAAM,CAAO;;AAG1B,GAAS,WAAW,GAAkB,QAAQ,EAAU,CAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACxD,IAAI,IAAI,CAAC,MAAA,GAAS,IAAI,GAAG,EAAQ;AACjC,EAAE;;AAEF;AACA,GAAS,IAAI,IAAI,GAAW;AAC5B,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI;AAC3B,EAAE;;AAEF;AACA,GAAS,GAAG,CAAC,GAAG,EAAoB;AACpC,IAAI,MAAM,KAAA,GAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACtC,IAAI,IAAI,KAAA,KAAU,SAAS,EAAE;AAC7B,MAAM,OAAO,SAAS;AACtB,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF;AACA,GAAS,GAAG,CAAC,GAAG,EAAK,KAAK,EAAW;AACrC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAA,IAAQ,IAAI,CAAC,QAAQ,EAAE;AAC3C;AACA;AACA,MAAM,MAAM,OAAA,GAAU,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AACrD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,IAAI;AACJ,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B,EAAE;;AAEF;AACA,GAAS,MAAM,CAAC,GAAG,EAAoB;AACvC,IAAI,MAAM,KAAA,GAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACtC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7B,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF;AACA,GAAS,KAAK,GAAS;AACvB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACvB,EAAE;;AAEF;AACA,GAAS,IAAI,GAAa;AAC1B,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACzC,EAAE;;AAEF;AACA,GAAS,MAAM,GAAa;AAC5B,IAAI,MAAM,MAAM,GAAQ,EAAE;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAA,IAAS,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,OAAO,MAAM;AACjB,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/merge.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/merge.js new file mode 100644 index 0000000..7e18757 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/merge.js @@ -0,0 +1,36 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Shallow merge two objects. + * Does not mutate the passed in objects. + * Undefined/empty values in the merge object will overwrite existing values. + * + * By default, this merges 2 levels deep. + */ +function merge(initialObj, mergeObj, levels = 2) { + // If the merge value is not an object, or we have no merge levels left, + // we just set the value to the merge value + if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) { + return mergeObj; + } + + // If the merge object is an empty object, and the initial object is not undefined, we return the initial object + if (initialObj && Object.keys(mergeObj).length === 0) { + return initialObj; + } + + // Clone object + const output = { ...initialObj }; + + // Merge values into output, resursively + for (const key in mergeObj) { + if (Object.prototype.hasOwnProperty.call(mergeObj, key)) { + output[key] = merge(output[key], mergeObj[key], levels - 1); + } + } + + return output; +} + +exports.merge = merge; +//# sourceMappingURL=merge.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/merge.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/merge.js.map new file mode 100644 index 0000000..148d976 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sources":["../../../src/utils/merge.ts"],"sourcesContent":["/**\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 */\nexport function merge(initialObj: T, mergeObj: T, levels = 2): T {\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"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAI,UAAU,EAAK,QAAQ,EAAK,MAAA,GAAS,CAAC,EAAK;AACpE;AACA;AACA,EAAE,IAAI,CAAC,QAAA,IAAY,OAAO,QAAA,KAAa,QAAA,IAAY,MAAA,IAAU,CAAC,EAAE;AAChE,IAAI,OAAO,QAAQ;AACnB,EAAE;;AAEF;AACA,EAAE,IAAI,UAAA,IAAc,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAA,KAAW,CAAC,EAAE;AACxD,IAAI,OAAO,UAAU;AACrB,EAAE;;AAEF;AACA,EAAE,MAAM,MAAA,GAAS,EAAE,GAAG,YAAY;;AAElC;AACA,EAAE,KAAK,MAAM,GAAA,IAAO,QAAQ,EAAE;AAC9B,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;AAC7D,MAAM,MAAM,CAAC,GAAG,CAAA,GAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAA,GAAS,CAAC,CAAC;AACjE,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,MAAM;AACf;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/meta.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/meta.js new file mode 100644 index 0000000..d006bbc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/meta.js @@ -0,0 +1,33 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const traceData = require('./traceData.js'); + +/** + * Returns a string of meta tags that represent the current trace data. + * + * You can use this to propagate a trace from your server-side rendered Html to the browser. + * This function returns up to two meta tags, `sentry-trace` and `baggage`, depending on the + * current trace data state. + * + * @example + * Usage example: + * + * ```js + * function renderHtml() { + * return ` + * + * ${getTraceMetaTags()} + * + * `; + * } + * ``` + * + */ +function getTraceMetaTags(traceData$1) { + return Object.entries(traceData$1 || traceData.getTraceData()) + .map(([key, value]) => ``) + .join('\n'); +} + +exports.getTraceMetaTags = getTraceMetaTags; +//# sourceMappingURL=meta.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/meta.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/meta.js.map new file mode 100644 index 0000000..ba0bb61 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/meta.js.map @@ -0,0 +1 @@ +{"version":3,"file":"meta.js","sources":["../../../src/utils/meta.ts"],"sourcesContent":["import type { SerializedTraceData } from '../types-hoist/tracing';\nimport { getTraceData } from './traceData';\n\n/**\n * Returns a string of meta tags that represent the current trace data.\n *\n * You can use this to propagate a trace from your server-side rendered Html to the browser.\n * This function returns up to two meta tags, `sentry-trace` and `baggage`, depending on the\n * current trace data state.\n *\n * @example\n * Usage example:\n *\n * ```js\n * function renderHtml() {\n * return `\n * \n * ${getTraceMetaTags()}\n * \n * `;\n * }\n * ```\n *\n */\nexport function getTraceMetaTags(traceData?: SerializedTraceData): string {\n return Object.entries(traceData || getTraceData())\n .map(([key, value]) => ``)\n .join('\\n');\n}\n"],"names":["traceData","getTraceData"],"mappings":";;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAACA,WAAS,EAAgC;AAC1E,EAAE,OAAO,MAAM,CAAC,OAAO,CAACA,WAAA,IAAaC,sBAAY,EAAE;AACnD,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC;AACrE,KAAK,IAAI,CAAC,IAAI,CAAC;AACf;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/misc.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/misc.js new file mode 100644 index 0000000..b2a2619 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/misc.js @@ -0,0 +1,224 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const object = require('./object.js'); +const randomSafeContext = require('./randomSafeContext.js'); +const string = require('./string.js'); +const worldwide = require('./worldwide.js'); + +function getCrypto() { + const gbl = worldwide.GLOBAL_OBJ ; + return gbl.crypto || gbl.msCrypto; +} + +let emptyUuid; + +function getRandomByte() { + return randomSafeContext.safeMathRandom() * 16; +} + +/** + * UUID4 generator + * @param crypto Object that provides the crypto API. + * @returns string Generated UUID4. + */ +function uuid4(crypto = getCrypto()) { + try { + if (crypto?.randomUUID) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return randomSafeContext.withRandomSafeContext(() => crypto.randomUUID()).replace(/-/g, ''); + } + } catch { + // some runtimes can crash invoking crypto + // https://github.com/getsentry/sentry-javascript/issues/8935 + } + + if (!emptyUuid) { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + // Concatenating the following numbers as strings results in '10000000100040008000100000000000' + emptyUuid = ([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11; + } + + return emptyUuid.replace(/[018]/g, c => + // eslint-disable-next-line no-bitwise + ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16), + ); +} + +function getFirstException(event) { + return event.exception?.values?.[0]; +} + +/** + * Extracts either message or type+value from an event that can be used for user-facing logs + * @returns event's description + */ +function getEventDescription(event) { + const { message, event_id: eventId } = event; + if (message) { + return message; + } + + const firstException = getFirstException(event); + if (firstException) { + if (firstException.type && firstException.value) { + return `${firstException.type}: ${firstException.value}`; + } + return firstException.type || firstException.value || eventId || ''; + } + return eventId || ''; +} + +/** + * Adds exception values, type and value to an synthetic Exception. + * @param event The event to modify. + * @param value Value of the exception. + * @param type Type of the exception. + * @hidden + */ +function addExceptionTypeValue(event, value, type) { + const exception = (event.exception = event.exception || {}); + const values = (exception.values = exception.values || []); + const firstException = (values[0] = values[0] || {}); + if (!firstException.value) { + firstException.value = value || ''; + } + if (!firstException.type) { + firstException.type = type || 'Error'; + } +} + +/** + * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed. + * + * @param event The event to modify. + * @param newMechanism Mechanism data to add to the event. + * @hidden + */ +function addExceptionMechanism(event, newMechanism) { + const firstException = getFirstException(event); + if (!firstException) { + return; + } + + const defaultMechanism = { type: 'generic', handled: true }; + const currentMechanism = firstException.mechanism; + firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism }; + + if (newMechanism && 'data' in newMechanism) { + const mergedData = { ...currentMechanism?.data, ...newMechanism.data }; + firstException.mechanism.data = mergedData; + } +} + +// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string +const SEMVER_REGEXP = + /^(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-]+)*))?$/; + +/** + * Represents Semantic Versioning object + */ + +function _parseInt(input) { + return parseInt(input || '', 10); +} + +/** + * Parses input into a SemVer interface + * @param input string representation of a semver version + */ +function parseSemver(input) { + const match = input.match(SEMVER_REGEXP) || []; + const major = _parseInt(match[1]); + const minor = _parseInt(match[2]); + const patch = _parseInt(match[3]); + return { + buildmetadata: match[5], + major: isNaN(major) ? undefined : major, + minor: isNaN(minor) ? undefined : minor, + patch: isNaN(patch) ? undefined : patch, + prerelease: match[4], + }; +} + +/** + * This function adds context (pre/post/line) lines to the provided frame + * + * @param lines string[] containing all lines + * @param frame StackFrame that will be mutated + * @param linesOfContext number of context lines we want to add pre/post + */ +function addContextToFrame(lines, frame, linesOfContext = 5) { + // When there is no line number in the frame, attaching context is nonsensical and will even break grouping + if (frame.lineno === undefined) { + return; + } + + const maxLines = lines.length; + const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0); + + frame.pre_context = lines + .slice(Math.max(0, sourceLine - linesOfContext), sourceLine) + .map((line) => string.snipLine(line, 0)); + + // We guard here to ensure this is not larger than the existing number of lines + const lineIndex = Math.min(maxLines - 1, sourceLine); + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + frame.context_line = string.snipLine(lines[lineIndex], frame.colno || 0); + + frame.post_context = lines + .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext) + .map((line) => string.snipLine(line, 0)); +} + +/** + * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object + * in question), and marks it captured if not. + * + * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and + * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so + * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because + * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not + * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This + * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we + * see it. + * + * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on + * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent + * object wrapper forms so that this check will always work. However, because we need to flag the exact object which + * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification + * must be done before the exception captured. + * + * @param A thrown exception to check or flag as having been seen + * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen) + */ +function checkOrSetAlreadyCaught(exception) { + if (isAlreadyCaptured(exception)) { + return true; + } + + try { + // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the + // `ExtraErrorData` integration + object.addNonEnumerableProperty(exception , '__sentry_captured__', true); + } catch { + // `exception` is a primitive, so we can't mark it seen + } + + return false; +} + +function isAlreadyCaptured(exception) { + try { + return (exception ).__sentry_captured__; + } catch {} // eslint-disable-line no-empty +} + +exports.addContextToFrame = addContextToFrame; +exports.addExceptionMechanism = addExceptionMechanism; +exports.addExceptionTypeValue = addExceptionTypeValue; +exports.checkOrSetAlreadyCaught = checkOrSetAlreadyCaught; +exports.getEventDescription = getEventDescription; +exports.parseSemver = parseSemver; +exports.uuid4 = uuid4; +//# sourceMappingURL=misc.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/misc.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/misc.js.map new file mode 100644 index 0000000..e5ff032 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/misc.js.map @@ -0,0 +1 @@ +{"version":3,"file":"misc.js","sources":["../../../src/utils/misc.ts"],"sourcesContent":["import type { Event } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { Mechanism } from '../types-hoist/mechanism';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { addNonEnumerableProperty } from './object';\nimport { safeMathRandom, withRandomSafeContext } from './randomSafeContext';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\nfunction getCrypto(): CryptoInternal | undefined {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n return gbl.crypto || gbl.msCrypto;\n}\n\nlet emptyUuid: string | undefined;\n\nfunction getRandomByte(): number {\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 */\nexport function uuid4(crypto = getCrypto()): string {\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] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11;\n }\n\n return emptyUuid.replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\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 */\nexport function getEventDescription(event: Event): string {\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 */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\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 */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\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 */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\nfunction _parseInt(input: string | undefined): number {\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 */\nexport function parseSemver(input: string): SemVer {\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 */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\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: string) => 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: string) => 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 */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\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 as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\nfunction isAlreadyCaptured(exception: unknown): boolean | void {\n try {\n return (exception as { __sentry_captured__?: boolean }).__sentry_captured__;\n } catch {} // eslint-disable-line no-empty\n}\n"],"names":["GLOBAL_OBJ","safeMathRandom","withRandomSafeContext","snipLine","addNonEnumerableProperty"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node-stack-trace.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node-stack-trace.js new file mode 100644 index 0000000..fec4cf4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node-stack-trace.js @@ -0,0 +1,131 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const stacktrace = require('./stacktrace.js'); + +/** + * Does this filename look like it's part of the app code? + */ +function filenameIsInApp(filename, isNative = false) { + const isInternal = + isNative || + (filename && + // It's not internal if it's an absolute linux path + !filename.startsWith('/') && + // It's not internal if it's an absolute windows path + !filename.match(/^[A-Z]:/) && + // It's not internal if the path is starting with a dot + !filename.startsWith('.') && + // 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 + !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//)); // Schema from: https://stackoverflow.com/a/3641782 + + // in_app is all that's not an internal Node function or a module within node_modules + // note that isNative appears to return true even for node core libraries + // see https://github.com/getsentry/raven-node/issues/176 + + return !isInternal && filename !== undefined && !filename.includes('node_modules/'); +} + +/** Node Stack line parser */ +function node(getModule) { + const FILENAME_MATCH = /^\s*[-]{4,}$/; + const FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/; + const DATA_URI_MATCH = /at (?:async )?(.+?) \(data:(.*?),/; + + return (line) => { + const dataUriMatch = line.match(DATA_URI_MATCH); + if (dataUriMatch) { + return { + filename: ``, + function: dataUriMatch[1], + }; + } + + const lineMatch = line.match(FULL_MATCH); + + if (lineMatch) { + let object; + let method; + let functionName; + let typeName; + let methodName; + + if (lineMatch[1]) { + functionName = lineMatch[1]; + + let methodStart = functionName.lastIndexOf('.'); + if (functionName[methodStart - 1] === '.') { + methodStart--; + } + + if (methodStart > 0) { + object = functionName.slice(0, methodStart); + method = functionName.slice(methodStart + 1); + const objectEnd = object.indexOf('.Module'); + if (objectEnd > 0) { + functionName = functionName.slice(objectEnd + 1); + object = object.slice(0, objectEnd); + } + } + typeName = undefined; + } + + if (method) { + typeName = object; + methodName = method; + } + + if (method === '') { + methodName = undefined; + functionName = undefined; + } + + if (functionName === undefined) { + methodName = methodName || stacktrace.UNKNOWN_FUNCTION; + functionName = typeName ? `${typeName}.${methodName}` : methodName; + } + + let filename = stacktrace.normalizeStackTracePath(lineMatch[2]); + const isNative = lineMatch[5] === 'native'; + + if (!filename && lineMatch[5] && !isNative) { + filename = lineMatch[5]; + } + + return { + filename: filename ? decodeURI(filename) : undefined, + module: getModule ? getModule(filename) : undefined, + function: functionName, + lineno: _parseIntOrUndefined(lineMatch[3]), + colno: _parseIntOrUndefined(lineMatch[4]), + in_app: filenameIsInApp(filename || '', isNative), + }; + } + + if (line.match(FILENAME_MATCH)) { + return { + filename: line, + }; + } + + return undefined; + }; +} + +/** + * Node.js stack line parser + * + * This is in @sentry/core so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`. + * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain + */ +function nodeStackLineParser(getModule) { + return [90, node(getModule)]; +} + +function _parseIntOrUndefined(input) { + return parseInt(input || '', 10) || undefined; +} + +exports.filenameIsInApp = filenameIsInApp; +exports.node = node; +exports.nodeStackLineParser = nodeStackLineParser; +//# sourceMappingURL=node-stack-trace.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node-stack-trace.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node-stack-trace.js.map new file mode 100644 index 0000000..7e9f5a0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node-stack-trace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node-stack-trace.js","sources":["../../../src/utils/node-stack-trace.ts"],"sourcesContent":["// This code was originally forked from https://github.com/felixge/node-stack-trace\n// Since then it has been highly modified to fit our needs.\n\n// Copyright (c) 2011 Felix Geisendörfer (felix@debuggable.com)//\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\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 FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport type { StackLineParser, StackLineParserFn } from '../types-hoist/stacktrace';\nimport { normalizeStackTracePath, UNKNOWN_FUNCTION } from './stacktrace';\n\nexport type GetModuleFn = (filename: string | undefined) => string | undefined;\n\n/**\n * Does this filename look like it's part of the app code?\n */\nexport function filenameIsInApp(filename: string, isNative: boolean = false): boolean {\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 */\nexport function node(getModule?: GetModuleFn): StackLineParserFn {\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: string) => {\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: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\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 return {\n filename: filename ? decodeURI(filename) : undefined,\n module: getModule ? getModule(filename) : undefined,\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 */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n\nfunction _parseIntOrUndefined(input: string | undefined): number | undefined {\n return parseInt(input || '', 10) || undefined;\n}\n"],"names":["UNKNOWN_FUNCTION","normalizeStackTracePath"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node.js new file mode 100644 index 0000000..8775a32 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node.js @@ -0,0 +1,74 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const env = require('./env.js'); + +/** + * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something, + * you must either a) use `console.log` rather than the `debug` singleton, or b) put your function elsewhere. + */ + + +/** + * Checks whether we're in the Node.js or Browser environment + * + * @returns Answer to given question + */ +function isNodeEnv() { + // explicitly check for browser bundles as those can be optimized statically + // by terser/rollup. + return ( + !env.isBrowserBundle() && + Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]' + ); +} + +/** + * Requires a module which is protected against bundler minification. + * + * @param request The module path to resolve + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function dynamicRequire(mod, request) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return mod.require(request); +} + +/** + * Helper for dynamically loading module that should work with linked dependencies. + * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))` + * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during + * build time. `require.resolve` is also not available in any other way, so we cannot create, + * a fake helper like we do with `dynamicRequire`. + * + * We always prefer to use local package, thus the value is not returned early from each `try/catch` block. + * That is to mimic the behavior of `require.resolve` exactly. + * + * @param moduleName module name to require + * @param existingModule module to use for requiring + * @returns possibly required module + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function loadModule(moduleName, existingModule = module) { + let mod; + + try { + mod = dynamicRequire(existingModule, moduleName); + } catch { + // no-empty + } + + if (!mod) { + try { + const { cwd } = dynamicRequire(existingModule, 'process'); + mod = dynamicRequire(existingModule, `${cwd()}/node_modules/${moduleName}`) ; + } catch { + // no-empty + } + } + + return mod; +} + +exports.isNodeEnv = isNodeEnv; +exports.loadModule = loadModule; +//# sourceMappingURL=node.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node.js.map new file mode 100644 index 0000000..dde8f7b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/node.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node.js","sources":["../../../src/utils/node.ts"],"sourcesContent":["/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the `debug` singleton, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @param existingModule module to use for requiring\n * @returns possibly required module\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function loadModule(moduleName: string, existingModule: any = module): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(existingModule, moduleName);\n } catch {\n // no-empty\n }\n\n if (!mod) {\n try {\n const { cwd } = dynamicRequire(existingModule, 'process');\n mod = dynamicRequire(existingModule, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch {\n // no-empty\n }\n }\n\n return mod;\n}\n"],"names":["isBrowserBundle"],"mappings":";;;;AAAA;AACA;AACA;AACA;;;AAIA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,GAAY;AACrC;AACA;AACA,EAAE;AACF,IAAI,CAACA,mBAAe,EAAC;AACrB,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,OAAA,KAAY,WAAA,GAAc,UAAU,CAAC,MAAM;AACrF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,GAAG,EAAO,OAAO,EAAe;AACxD;AACA,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAI,UAAU,EAAU,cAAc,GAAQ,MAAM,EAAiB;AAC/F,EAAE,IAAI,GAAG;;AAET,EAAE,IAAI;AACN,IAAI,MAAM,cAAc,CAAC,cAAc,EAAE,UAAU,CAAC;AACpD,EAAE,EAAE,MAAM;AACV;AACA,EAAE;;AAEF,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,IAAI;AACR,MAAM,MAAM,EAAE,GAAA,EAAI,GAAI,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC;AAC/D,MAAM,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC,EAAA,GAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,CAAA,CAAA;AACA,IAAA,CAAA,CAAA,MAAA;AACA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,OAAA,GAAA;AACA;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/normalize.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/normalize.js new file mode 100644 index 0000000..e22c61c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/normalize.js @@ -0,0 +1,320 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const is = require('./is.js'); +const object = require('./object.js'); +const stacktrace = require('./stacktrace.js'); + +/** + * Recursively normalizes the given object. + * + * - Creates a copy to prevent original input mutation + * - Skips non-enumerable properties + * - When stringifying, calls `toJSON` if implemented + * - Removes circular references + * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format + * - Translates known global objects/classes to a string representations + * - Takes care of `Error` object serialization + * - Optionally limits depth of final output + * - Optionally limits number of properties/elements included in any single object/array + * + * @param input The object to be normalized. + * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.) + * @param maxProperties The max number of elements or properties to be included in any single array or + * object in the normalized output. + * @returns A normalized version of the object, or `"**non-serializable**"` if any errors are thrown during normalization. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function normalize(input, depth = 100, maxProperties = +Infinity) { + try { + // since we're at the outermost level, we don't provide a key + return visit('', input, depth, maxProperties); + } catch (err) { + return { ERROR: `**non-serializable** (${err})` }; + } +} + +/** JSDoc */ +function normalizeToSize( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + object, + // Default Node.js REPL depth + depth = 3, + // 100kB, as 200kB is max payload size, so half sounds reasonable + maxSize = 100 * 1024, +) { + const normalized = normalize(object, depth); + + if (jsonSize(normalized) > maxSize) { + return normalizeToSize(object, depth - 1, maxSize); + } + + return normalized ; +} + +/** + * Visits a node to perform normalization on it + * + * @param key The key corresponding to the given node + * @param value The node to be visited + * @param depth Optional number indicating the maximum recursion depth + * @param maxProperties Optional maximum number of properties/elements included in any single object/array + * @param memo Optional Memo class handling decycling + */ +function visit( + key, + value, + depth = +Infinity, + maxProperties = +Infinity, + memo = memoBuilder(), +) { + const [memoize, unmemoize] = memo; + + // Get the simple cases out of the way first + if ( + value == null || // this matches null and undefined -> eqeq not eqeqeq + ['boolean', 'string'].includes(typeof value) || + (typeof value === 'number' && Number.isFinite(value)) + ) { + return value ; + } + + const stringified = stringifyValue(key, value); + + // Anything we could potentially dig into more (objects or arrays) will have come back as `"[object XXXX]"`. + // Everything else will have already been serialized, so if we don't see that pattern, we're done. + if (!stringified.startsWith('[object ')) { + return stringified; + } + + // From here on, we can assert that `value` is either an object or an array. + + // Do not normalize objects that we know have already been normalized. As a general rule, the + // "__sentry_skip_normalization__" property should only be used sparingly and only should only be set on objects that + // have already been normalized. + if ((value )['__sentry_skip_normalization__']) { + return value ; + } + + // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there + // We keep a certain amount of depth. + // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state. + const remainingDepth = + typeof (value )['__sentry_override_normalization_depth__'] === 'number' + ? ((value )['__sentry_override_normalization_depth__'] ) + : depth; + + // We're also done if we've reached the max depth + if (remainingDepth === 0) { + // At this point we know `serialized` is a string of the form `"[object XXXX]"`. Clean it up so it's just `"[XXXX]"`. + return stringified.replace('object ', ''); + } + + // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now. + if (memoize(value)) { + return '[Circular ~]'; + } + + // If the value has a `toJSON` method, we call it to extract more information + const valueWithToJSON = value ; + if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') { + try { + const jsonValue = valueWithToJSON.toJSON(); + // We need to normalize the return value of `.toJSON()` in case it has circular references + return visit('', jsonValue, remainingDepth - 1, maxProperties, memo); + } catch { + // pass (The built-in `toJSON` failed, but we can still try to do it ourselves) + } + } + + // 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 + // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each + // property/entry, and keep track of the number of items we add to it. + const normalized = (Array.isArray(value) ? [] : {}) ; + let numAdded = 0; + + // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant + // properties are non-enumerable and otherwise would get missed. + const visitable = object.convertToPlainObject(value ); + + for (const visitKey in visitable) { + // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration. + if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) { + continue; + } + + if (numAdded >= maxProperties) { + normalized[visitKey] = '[MaxProperties ~]'; + break; + } + + // Recursively visit all the child nodes + const visitValue = visitable[visitKey]; + normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo); + + numAdded++; + } + + // Once we've visited all the branches, remove the parent from memo storage + unmemoize(value); + + // Return accumulated values + return normalized; +} + +/* eslint-disable complexity */ +/** + * Stringify the given value. Handles various known special values and types. + * + * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn + * the number 1231 into "[Object Number]", nor on `null`, as it will throw. + * + * @param value The value to stringify + * @returns A stringified representation of the given value + */ +function stringifyValue( + key, + // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for + // our internal use, it'll do + value, +) { + try { + if (key === 'domain' && value && typeof value === 'object' && (value )._events) { + return '[Domain]'; + } + + if (key === 'domainEmitter') { + return '[DomainEmitter]'; + } + + // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first + // which won't throw if they are not present. + + if (typeof global !== 'undefined' && value === global) { + return '[Global]'; + } + + // eslint-disable-next-line no-restricted-globals + if (typeof window !== 'undefined' && value === window) { + return '[Window]'; + } + + // eslint-disable-next-line no-restricted-globals + if (typeof document !== 'undefined' && value === document) { + return '[Document]'; + } + + if (is.isVueViewModel(value)) { + return stacktrace.getVueInternalName(value); + } + + // React's SyntheticEvent thingy + if (is.isSyntheticEvent(value)) { + return '[SyntheticEvent]'; + } + + if (typeof value === 'number' && !Number.isFinite(value)) { + return `[${value}]`; + } + + if (typeof value === 'function') { + return `[Function: ${stacktrace.getFunctionName(value)}]`; + } + + if (typeof value === 'symbol') { + return `[${String(value)}]`; + } + + // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion + if (typeof value === 'bigint') { + return `[BigInt: ${String(value)}]`; + } + + // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting + // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as + // `"[object Object]"`. If we instead look at the constructor's name (which is the same as the name of the class), + // we can make sure that only plain objects come out that way. + const objName = getConstructorName(value); + + // Handle HTML Elements + if (/^HTML(\w*)Element$/.test(objName)) { + return `[HTMLElement: ${objName}]`; + } + + return `[object ${objName}]`; + } catch (err) { + return `**non-serializable** (${err})`; + } +} +/* eslint-enable complexity */ + +function getConstructorName(value) { + const prototype = Object.getPrototypeOf(value); + + return prototype?.constructor ? prototype.constructor.name : 'null prototype'; +} + +/** Calculates bytes size of input string */ +function utf8Length(value) { + // eslint-disable-next-line no-bitwise + return ~-encodeURI(value).split(/%..|./).length; +} + +/** Calculates bytes size of input object */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +/** + * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint + * across platforms and working directory. + * + * @param url The URL to be normalized. + * @param basePath The application base path. + * @returns The normalized URL. + */ +function normalizeUrlToBase(url, basePath) { + const escapedBase = basePath + // Backslash to forward + .replace(/\\/g, '/') + // Escape RegExp special characters + .replace(/[|\\{}()[\]^$+*?.]/g, '\\$&'); + + let newUrl = url; + try { + newUrl = decodeURI(url); + } catch { + // Sometime this breaks + } + return ( + newUrl + .replace(/\\/g, '/') + .replace(/webpack:\/?/g, '') // Remove intermediate base path + // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor + .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///') + ); +} + +/** + * Helper to decycle json objects + */ +function memoBuilder() { + const inner = new WeakSet(); + function memoize(obj) { + if (inner.has(obj)) { + return true; + } + inner.add(obj); + return false; + } + + function unmemoize(obj) { + inner.delete(obj); + } + return [memoize, unmemoize]; +} + +exports.normalize = normalize; +exports.normalizeToSize = normalizeToSize; +exports.normalizeUrlToBase = normalizeUrlToBase; +//# sourceMappingURL=normalize.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/normalize.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/normalize.js.map new file mode 100644 index 0000000..414549a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"normalize.js","sources":["../../../src/utils/normalize.ts"],"sourcesContent":["import type { Primitive } from '../types-hoist/misc';\nimport { isSyntheticEvent, isVueViewModel } from './is';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName, getVueInternalName } from './stacktrace';\n\ntype Prototype = { constructor?: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\ntype MemoFunc = [\n // memoize\n (obj: object) => boolean,\n // unmemoize\n (obj: object) => void,\n];\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\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\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 */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\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: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo = memoBuilder(),\n): Primitive | ObjOrArray {\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 as Primitive;\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 as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\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 as ObjOrArray)['__sentry_override_normalization_depth__'] === 'number'\n ? ((value as ObjOrArray)['__sentry_override_normalization_depth__'] as number)\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 as unknown & { toJSON?: () => unknown };\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) ? [] : {}) as ObjOrArray;\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 as ObjOrArray);\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: unknown,\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: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._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: unknown): string {\n const prototype: Prototype | null = 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: string): number {\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: any): number {\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 */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\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 // eslint-disable-next-line @sentry-internal/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(): MemoFunc {\n const inner = new WeakSet();\n function memoize(obj: object): boolean {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n\n function unmemoize(obj: object): void {\n inner.delete(obj);\n }\n return [memoize, unmemoize];\n}\n"],"names":["convertToPlainObject","isVueViewModel","getVueInternalName","isSyntheticEvent","getFunctionName"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/object.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/object.js new file mode 100644 index 0000000..9dcf6b2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/object.js @@ -0,0 +1,287 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const browser = require('./browser.js'); +const debugLogger = require('./debug-logger.js'); +const is = require('./is.js'); + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +/** + * Replace a method in an object with a wrapped version of itself. + * + * If the method on the passed object is not a function, the wrapper will not be applied. + * + * @param source An object that contains a method to be wrapped. + * @param name The name of the method to be wrapped. + * @param replacementFactory A higher-order function that takes the original version of the given method and returns a + * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to + * 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`. + * @returns void + */ +function fill(source, name, replacementFactory) { + if (!(name in source)) { + return; + } + + // explicitly casting to unknown because we don't know the type of the method initially at all + const original = source[name] ; + + if (typeof original !== 'function') { + return; + } + + const wrapped = replacementFactory(original) ; + + // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work + // otherwise it'll throw "TypeError: Object.defineProperties called on non-object" + if (typeof wrapped === 'function') { + markFunctionWrapped(wrapped, original); + } + + try { + source[name] = wrapped; + } catch { + debugBuild.DEBUG_BUILD && debugLogger.debug.log(`Failed to replace method "${name}" in object`, source); + } +} + +/** + * Defines a non-enumerable property on the given object. + * + * @param obj The object on which to set the property + * @param name The name of the property to be set + * @param value The value to which to set the property + */ +function addNonEnumerableProperty(obj, name, value) { + try { + Object.defineProperty(obj, name, { + // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it + value: value, + writable: true, + configurable: true, + }); + } catch { + debugBuild.DEBUG_BUILD && debugLogger.debug.log(`Failed to add non-enumerable property "${name}" to object`, obj); + } +} + +/** + * Remembers the original function on the wrapped function and + * patches up the prototype. + * + * @param wrapped the wrapper function + * @param original the original function that gets wrapped + */ +function markFunctionWrapped(wrapped, original) { + try { + const proto = original.prototype || {}; + wrapped.prototype = original.prototype = proto; + addNonEnumerableProperty(wrapped, '__sentry_original__', original); + } catch {} // eslint-disable-line no-empty +} + +/** + * This extracts the original function if available. See + * `markFunctionWrapped` for more information. + * + * @param func the function to unwrap + * @returns the unwrapped version of the function if available. + */ +// eslint-disable-next-line @typescript-eslint/ban-types +function getOriginalFunction(func) { + return func.__sentry_original__; +} + +/** + * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their + * non-enumerable properties attached. + * + * @param value Initial source that we have to transform in order for it to be usable by the serializer + * @returns An Event or Error turned into an object - or the value argument itself, when value is neither an Event nor + * an Error. + */ +function convertToPlainObject(value) + + { + if (is.isError(value)) { + return { + message: value.message, + name: value.name, + stack: value.stack, + ...getOwnProperties(value), + }; + } else if (is.isEvent(value)) { + const newObj + + = { + type: value.type, + target: serializeEventTarget(value.target), + currentTarget: serializeEventTarget(value.currentTarget), + ...getOwnProperties(value), + }; + + if (typeof CustomEvent !== 'undefined' && is.isInstanceOf(value, CustomEvent)) { + newObj.detail = value.detail; + } + + return newObj; + } else { + return value; + } +} + +/** Creates a string representation of the target of an `Event` object */ +function serializeEventTarget(target) { + try { + return is.isElement(target) ? browser.htmlTreeAsString(target) : Object.prototype.toString.call(target); + } catch { + return ''; + } +} + +/** Filters out all but an object's own properties */ +function getOwnProperties(obj) { + if (typeof obj === 'object' && obj !== null) { + const extractedProps = {}; + for (const property in obj) { + if (Object.prototype.hasOwnProperty.call(obj, property)) { + extractedProps[property] = (obj )[property]; + } + } + return extractedProps; + } else { + return {}; + } +} + +/** + * Given any captured exception, extract its keys and create a sorted + * and truncated list that will be used inside the event message. + * eg. `Non-error exception captured with keys: foo, bar, baz` + */ +function extractExceptionKeysForMessage(exception) { + const keys = Object.keys(convertToPlainObject(exception)); + keys.sort(); + + return !keys[0] ? '[object has no keys]' : keys.join(', '); +} + +/** + * Given any object, return a new object having removed all fields whose value was `undefined`. + * Works recursively on objects and arrays. + * + * Attention: This function keeps circular references in the returned object. + * + * @deprecated This function is no longer used by the SDK and will be removed in a future major version. + */ +function dropUndefinedKeys(inputValue) { + // This map keeps track of what already visited nodes map to. + // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular + // references as the input object. + const memoizationMap = new Map(); + + // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API + return _dropUndefinedKeys(inputValue, memoizationMap); +} + +function _dropUndefinedKeys(inputValue, memoizationMap) { + // Early return for primitive values + if (inputValue === null || typeof inputValue !== 'object') { + return inputValue; + } + + // Check memo map first for all object types + const memoVal = memoizationMap.get(inputValue); + if (memoVal !== undefined) { + return memoVal ; + } + + // handle arrays + if (Array.isArray(inputValue)) { + const returnValue = []; + // Store mapping to handle circular references + memoizationMap.set(inputValue, returnValue); + + inputValue.forEach(value => { + returnValue.push(_dropUndefinedKeys(value, memoizationMap)); + }); + + return returnValue ; + } + + if (isPojo(inputValue)) { + const returnValue = {}; + // Store mapping to handle circular references + memoizationMap.set(inputValue, returnValue); + + const keys = Object.keys(inputValue); + + keys.forEach(key => { + const val = inputValue[key]; + if (val !== undefined) { + returnValue[key] = _dropUndefinedKeys(val, memoizationMap); + } + }); + + return returnValue ; + } + + // For other object types, return as is + return inputValue; +} + +function isPojo(input) { + // Plain objects have Object as constructor or no constructor + const constructor = (input ).constructor; + return constructor === Object || constructor === undefined; +} + +/** + * Ensure that something is an object. + * + * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper + * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives. + * + * @param wat The subject of the objectification + * @returns A version of `wat` which can safely be used with `Object` class methods + */ +function objectify(wat) { + let objectified; + switch (true) { + // this will catch both undefined and null + case wat == undefined: + objectified = new String(wat); + break; + + // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason + // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as + // an object in order to wrap it. + case typeof wat === 'symbol' || typeof wat === 'bigint': + objectified = Object(wat); + break; + + // this will catch the remaining primitives: `String`, `Number`, and `Boolean` + case is.isPrimitive(wat): + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + objectified = new (wat ).constructor(wat); + break; + + // by process of elimination, at this point we know that `wat` must already be an object + default: + objectified = wat; + break; + } + return objectified; +} + +exports.addNonEnumerableProperty = addNonEnumerableProperty; +exports.convertToPlainObject = convertToPlainObject; +exports.dropUndefinedKeys = dropUndefinedKeys; +exports.extractExceptionKeysForMessage = extractExceptionKeysForMessage; +exports.fill = fill; +exports.getOriginalFunction = getOriginalFunction; +exports.markFunctionWrapped = markFunctionWrapped; +exports.objectify = objectify; +//# sourceMappingURL=object.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/object.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/object.js.map new file mode 100644 index 0000000..341779a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/object.js.map @@ -0,0 +1 @@ +{"version":3,"file":"object.js","sources":["../../../src/utils/object.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { WrappedFunction } from '../types-hoist/wrappedfunction';\nimport { htmlTreeAsString } from './browser';\nimport { debug } from './debug-logger';\nimport { isElement, isError, isEvent, isInstanceOf, isPrimitive } from './is';\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 */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\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] as unknown;\n\n if (typeof original !== 'function') {\n return;\n }\n\n const wrapped = replacementFactory(original) as WrappedFunction;\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 */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\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: 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 */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\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\nexport function getOriginalFunction(func: WrappedFunction): T | undefined {\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 */\nexport function convertToPlainObject(value: V):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\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 [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\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: unknown): string {\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: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\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 */\nexport function extractExceptionKeysForMessage(exception: Record): string {\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 */\nexport function dropUndefinedKeys(inputValue: T): T {\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: T, memoizationMap: Map): T {\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 as T;\n }\n\n // handle arrays\n if (Array.isArray(inputValue)) {\n const returnValue: unknown[] = [];\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 as unknown as T;\n }\n\n if (isPojo(inputValue)) {\n const returnValue: { [key: string]: unknown } = {};\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 as T;\n }\n\n // For other object types, return as is\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record {\n // Plain objects have Object as constructor or no constructor\n const constructor = (input as object).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 */\nexport function objectify(wat: unknown): typeof Object {\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 as any).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"],"names":["DEBUG_BUILD","debug","isError","isEvent","isInstanceOf","isElement","htmlTreeAsString","isPrimitive"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parameterize.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parameterize.js new file mode 100644 index 0000000..370a47c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parameterize.js @@ -0,0 +1,32 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Tagged template function which returns parameterized representation of the message + * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return: + * "__sentry_template_string__": 'This is a log statement with %s and %s params', + * "__sentry_template_values__": ['first', 'second'] + * + * @param strings An array of string values splitted between expressions + * @param values Expressions extracted from template string + * + * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods. + */ +function parameterize(strings, ...values) { + const formatted = new String(String.raw(strings, ...values)) ; + formatted.__sentry_template_string__ = strings.join('\x00').replace(/%/g, '%%').replace(/\0/g, '%s'); + formatted.__sentry_template_values__ = values; + return formatted; +} + +/** + * Tagged template function which returns parameterized representation of the message. + * + * @param strings An array of string values splitted between expressions + * @param values Expressions extracted from template string + * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods. + */ +const fmt = parameterize; + +exports.fmt = fmt; +exports.parameterize = parameterize; +//# sourceMappingURL=parameterize.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parameterize.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parameterize.js.map new file mode 100644 index 0000000..8643d44 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parameterize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parameterize.js","sources":["../../../src/utils/parameterize.ts"],"sourcesContent":["import type { ParameterizedString } from '../types-hoist/parameterize';\n\n/**\n * Tagged template function which returns parameterized representation of the message\n * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return:\n * \"__sentry_template_string__\": 'This is a log statement with %s and %s params',\n * \"__sentry_template_values__\": ['first', 'second']\n *\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n *\n * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods.\n */\nexport function parameterize(strings: TemplateStringsArray, ...values: unknown[]): ParameterizedString {\n const formatted = new String(String.raw(strings, ...values)) as ParameterizedString;\n formatted.__sentry_template_string__ = strings.join('\\x00').replace(/%/g, '%%').replace(/\\0/g, '%s');\n formatted.__sentry_template_values__ = values;\n return formatted;\n}\n\n/**\n * Tagged template function which returns parameterized representation of the message.\n *\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods.\n */\nexport const fmt = parameterize;\n"],"names":[],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,OAAO,EAAwB,GAAG,MAAM,EAAkC;AACvG,EAAE,MAAM,SAAA,GAAY,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAA;AAC7D,EAAE,SAAS,CAAC,0BAAA,GAA6B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;AACtG,EAAE,SAAS,CAAC,0BAAA,GAA6B,MAAM;AAC/C,EAAE,OAAO,SAAS;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,GAAA,GAAM;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parseSampleRate.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parseSampleRate.js new file mode 100644 index 0000000..78d633f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parseSampleRate.js @@ -0,0 +1,24 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Parse a sample rate from a given value. + * This will either return a boolean or number sample rate, if the sample rate is valid (between 0 and 1). + * If a string is passed, we try to convert it to a number. + * + * Any invalid sample rate will return `undefined`. + */ +function parseSampleRate(sampleRate) { + if (typeof sampleRate === 'boolean') { + return Number(sampleRate); + } + + const rate = typeof sampleRate === 'string' ? parseFloat(sampleRate) : sampleRate; + if (typeof rate !== 'number' || isNaN(rate) || rate < 0 || rate > 1) { + return undefined; + } + + return rate; +} + +exports.parseSampleRate = parseSampleRate; +//# sourceMappingURL=parseSampleRate.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parseSampleRate.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parseSampleRate.js.map new file mode 100644 index 0000000..172c396 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/parseSampleRate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parseSampleRate.js","sources":["../../../src/utils/parseSampleRate.ts"],"sourcesContent":["/**\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 */\nexport function parseSampleRate(sampleRate: unknown): number | undefined {\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"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,UAAU,EAA+B;AACzE,EAAE,IAAI,OAAO,UAAA,KAAe,SAAS,EAAE;AACvC,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC;AAC7B,EAAE;;AAEF,EAAE,MAAM,IAAA,GAAO,OAAO,UAAA,KAAe,QAAA,GAAW,UAAU,CAAC,UAAU,CAAA,GAAI,UAAU;AACnF,EAAE,IAAI,OAAO,SAAS,QAAA,IAAY,KAAK,CAAC,IAAI,CAAA,IAAK,OAAO,CAAA,IAAK,IAAA,GAAO,CAAC,EAAE;AACvE,IAAI,OAAO,SAAS;AACpB,EAAE;;AAEF,EAAE,OAAO,IAAI;AACb;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/path.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/path.js new file mode 100644 index 0000000..51e8de0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/path.js @@ -0,0 +1,220 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript +// https://github.com/calvinmetcalf/rollup-plugin-node-builtins/blob/63ab8aacd013767445ca299e468d9a60a95328d7/src/es6/path.js +// +// Copyright Joyent, Inc.and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +/** JSDoc */ +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + let up = 0; + for (let i = parts.length - 1; i >= 0; i--) { + const last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +const splitPathRe = /^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/; +/** JSDoc */ +function splitPath(filename) { + // Truncate files names greater than 1024 characters to avoid regex dos + // https://github.com/getsentry/sentry-javascript/pull/8737#discussion_r1285719172 + const truncated = filename.length > 1024 ? `${filename.slice(-1024)}` : filename; + const parts = splitPathRe.exec(truncated); + return parts ? parts.slice(1) : []; +} + +// path.resolve([from ...], to) +// posix version +/** JSDoc */ +function resolve(...args) { + let resolvedPath = ''; + let resolvedAbsolute = false; + + for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? args[i] : '/'; + + // Skip empty entries + if (!path) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray( + resolvedPath.split('/').filter(p => !!p), + !resolvedAbsolute, + ).join('/'); + + return (resolvedAbsolute ? '/' : '') + resolvedPath || '.'; +} + +/** JSDoc */ +function trim(arr) { + let start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') { + break; + } + } + + let end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') { + break; + } + } + + if (start > end) { + return []; + } + return arr.slice(start, end - start + 1); +} + +// path.relative(from, to) +// posix version +/** JSDoc */ +function relative(from, to) { + /* eslint-disable no-param-reassign */ + from = resolve(from).slice(1); + to = resolve(to).slice(1); + /* eslint-enable no-param-reassign */ + + const fromParts = trim(from.split('/')); + const toParts = trim(to.split('/')); + + const length = Math.min(fromParts.length, toParts.length); + let samePartsLength = length; + for (let i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + let outputParts = []; + for (let i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +} + +// path.normalize(path) +// posix version +/** JSDoc */ +function normalizePath(path) { + const isPathAbsolute = isAbsolute(path); + const trailingSlash = path.slice(-1) === '/'; + + // Normalize the path + let normalizedPath = normalizeArray( + path.split('/').filter(p => !!p), + !isPathAbsolute, + ).join('/'); + + if (!normalizedPath && !isPathAbsolute) { + normalizedPath = '.'; + } + if (normalizedPath && trailingSlash) { + normalizedPath += '/'; + } + + return (isPathAbsolute ? '/' : '') + normalizedPath; +} + +// posix version +/** JSDoc */ +function isAbsolute(path) { + return path.charAt(0) === '/'; +} + +// posix version +/** JSDoc */ +function join(...args) { + return normalizePath(args.join('/')); +} + +/** JSDoc */ +function dirname(path) { + const result = splitPath(path); + const root = result[0] || ''; + let dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.slice(0, dir.length - 1); + } + + return root + dir; +} + +/** JSDoc */ +function basename(path, ext) { + let f = splitPath(path)[2] || ''; + if (ext && f.slice(ext.length * -1) === ext) { + f = f.slice(0, f.length - ext.length); + } + return f; +} + +exports.basename = basename; +exports.dirname = dirname; +exports.isAbsolute = isAbsolute; +exports.join = join; +exports.normalizePath = normalizePath; +exports.relative = relative; +exports.resolve = resolve; +//# sourceMappingURL=path.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/path.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/path.js.map new file mode 100644 index 0000000..6d79b0a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/path.js.map @@ -0,0 +1 @@ +{"version":3,"file":"path.js","sources":["../../../src/utils/path.ts"],"sourcesContent":["// 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: string[], allowAboveRoot?: boolean): string[] {\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: string): string[] {\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 */\nexport function resolve(...args: string[]): string {\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: string[]): string[] {\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 */\nexport function relative(from: string, to: string): string {\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 */\nexport function normalizePath(path: string): string {\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 */\nexport function isAbsolute(path: string): boolean {\n return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nexport function join(...args: string[]): string {\n return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nexport function dirname(path: string): string {\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 */\nexport function basename(path: string, ext?: string): string {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/prepareEvent.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/prepareEvent.js new file mode 100644 index 0000000..ca88da7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/prepareEvent.js @@ -0,0 +1,343 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const constants = require('../constants.js'); +const eventProcessors = require('../eventProcessors.js'); +const scope = require('../scope.js'); +const debugIds = require('./debug-ids.js'); +const misc = require('./misc.js'); +const normalize = require('./normalize.js'); +const scopeData = require('./scopeData.js'); +const string = require('./string.js'); +const time = require('./time.js'); + +/** + * This type makes sure that we get either a CaptureContext, OR an EventHint. + * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed: + * { user: { id: '123' }, mechanism: { handled: false } } + */ + +/** + * Adds common information to events. + * + * The information includes release and environment from `options`, + * breadcrumbs and context (extra, tags and user) from the scope. + * + * Information that is already present in the event is never overwritten. For + * nested objects, such as the context, keys are merged. + * + * @param event The original event. + * @param hint May contain additional information about the original exception. + * @param scope A scope containing event metadata. + * @returns A new event with more information. + * @hidden + */ +function prepareEvent( + options, + event, + hint, + scope, + client, + isolationScope, +) { + const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options; + const prepared = { + ...event, + event_id: event.event_id || hint.event_id || misc.uuid4(), + timestamp: event.timestamp || time.dateTimestampInSeconds(), + }; + const integrations = hint.integrations || options.integrations.map(i => i.name); + + applyClientOptions(prepared, options); + applyIntegrationsMetadata(prepared, integrations); + + if (client) { + client.emit('applyFrameMetadata', event); + } + + // Only put debug IDs onto frames for error events. + if (event.type === undefined) { + applyDebugIds(prepared, options.stackParser); + } + + // If we have scope given to us, use it as the base for further modifications. + // This allows us to prevent unnecessary copying of data if `captureContext` is not provided. + const finalScope = getFinalScope(scope, hint.captureContext); + + if (hint.mechanism) { + misc.addExceptionMechanism(prepared, hint.mechanism); + } + + const clientEventProcessors = client ? client.getEventProcessors() : []; + + // This should be the last thing called, since we want that + // {@link Scope.addEventProcessor} gets the finished prepared event. + // Merge scope data together + const data = scopeData.getCombinedScopeData(isolationScope, finalScope); + + const attachments = [...(hint.attachments || []), ...data.attachments]; + if (attachments.length) { + hint.attachments = attachments; + } + + scopeData.applyScopeDataToEvent(prepared, data); + + const eventProcessors$1 = [ + ...clientEventProcessors, + // Run scope event processors _after_ all other processors + ...data.eventProcessors, + ]; + + const result = eventProcessors.notifyEventProcessors(eventProcessors$1, prepared, hint); + + return result.then(evt => { + if (evt) { + // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified + // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed. + // This should not cause any PII issues, since we're only moving data that is already on the event and not adding + // any new data + applyDebugMeta(evt); + } + + if (typeof normalizeDepth === 'number' && normalizeDepth > 0) { + return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth); + } + return evt; + }); +} + +/** + * Enhances event using the client configuration. + * It takes care of all "static" values like environment, release and `dist`, + * as well as truncating overly long values. + * + * Only exported for tests. + * + * @param event event instance to be enhanced + */ +function applyClientOptions(event, options) { + const { environment, release, dist, maxValueLength } = options; + + // empty strings do not make sense for environment, release, and dist + // so we handle them the same as if they were not provided + event.environment = event.environment || environment || constants.DEFAULT_ENVIRONMENT; + + if (!event.release && release) { + event.release = release; + } + + if (!event.dist && dist) { + event.dist = dist; + } + + const request = event.request; + if (request?.url && maxValueLength) { + request.url = string.truncate(request.url, maxValueLength); + } + + if (maxValueLength) { + event.exception?.values?.forEach(exception => { + if (exception.value) { + // Truncates error messages + exception.value = string.truncate(exception.value, maxValueLength); + } + }); + } +} + +/** + * Puts debug IDs into the stack frames of an error event. + */ +function applyDebugIds(event, stackParser) { + // Build a map of filename -> debug_id + const filenameDebugIdMap = debugIds.getFilenameToDebugIdMap(stackParser); + + event.exception?.values?.forEach(exception => { + exception.stacktrace?.frames?.forEach(frame => { + if (frame.filename) { + frame.debug_id = filenameDebugIdMap[frame.filename]; + } + }); + }); +} + +/** + * Moves debug IDs from the stack frames of an error event into the debug_meta field. + */ +function applyDebugMeta(event) { + // Extract debug IDs and filenames from the stack frames on the event. + const filenameDebugIdMap = {}; + event.exception?.values?.forEach(exception => { + exception.stacktrace?.frames?.forEach(frame => { + if (frame.debug_id) { + if (frame.abs_path) { + filenameDebugIdMap[frame.abs_path] = frame.debug_id; + } else if (frame.filename) { + filenameDebugIdMap[frame.filename] = frame.debug_id; + } + delete frame.debug_id; + } + }); + }); + + if (Object.keys(filenameDebugIdMap).length === 0) { + return; + } + + // Fill debug_meta information + event.debug_meta = event.debug_meta || {}; + event.debug_meta.images = event.debug_meta.images || []; + const images = event.debug_meta.images; + Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => { + images.push({ + type: 'sourcemap', + code_file: filename, + debug_id, + }); + }); +} + +/** + * This function adds all used integrations to the SDK info in the event. + * @param event The event that will be filled with all integrations. + */ +function applyIntegrationsMetadata(event, integrationNames) { + if (integrationNames.length > 0) { + event.sdk = event.sdk || {}; + event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames]; + } +} + +/** + * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization. + * Normalized keys: + * - `breadcrumbs.data` + * - `user` + * - `contexts` + * - `extra` + * @param event Event + * @returns Normalized event + */ +function normalizeEvent(event, depth, maxBreadth) { + if (!event) { + return null; + } + + const normalized = { + ...event, + ...(event.breadcrumbs && { + breadcrumbs: event.breadcrumbs.map(b => ({ + ...b, + ...(b.data && { + data: normalize.normalize(b.data, depth, maxBreadth), + }), + })), + }), + ...(event.user && { + user: normalize.normalize(event.user, depth, maxBreadth), + }), + ...(event.contexts && { + contexts: normalize.normalize(event.contexts, depth, maxBreadth), + }), + ...(event.extra && { + extra: normalize.normalize(event.extra, depth, maxBreadth), + }), + }; + + // event.contexts.trace stores information about a Transaction. Similarly, + // event.spans[] stores information about child Spans. Given that a + // Transaction is conceptually a Span, normalization should apply to both + // Transactions and Spans consistently. + // For now the decision is to skip normalization of Transactions and Spans, + // so this block overwrites the normalized event to add back the original + // Transaction information prior to normalization. + if (event.contexts?.trace && normalized.contexts) { + normalized.contexts.trace = event.contexts.trace; + + // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it + if (event.contexts.trace.data) { + normalized.contexts.trace.data = normalize.normalize(event.contexts.trace.data, depth, maxBreadth); + } + } + + // event.spans[].data may contain circular/dangerous data so we need to normalize it + if (event.spans) { + normalized.spans = event.spans.map(span => { + return { + ...span, + ...(span.data && { + data: normalize.normalize(span.data, depth, maxBreadth), + }), + }; + }); + } + + // event.contexts.flags (FeatureFlagContext) stores context for our feature + // flag integrations. It has a greater nesting depth than our other typed + // Contexts, so we re-normalize with a fixed depth of 3 here. We do not want + // to skip this in case of conflicting, user-provided context. + if (event.contexts?.flags && normalized.contexts) { + normalized.contexts.flags = normalize.normalize(event.contexts.flags, 3, maxBreadth); + } + + return normalized; +} + +function getFinalScope(scope$1, captureContext) { + if (!captureContext) { + return scope$1; + } + + const finalScope = scope$1 ? scope$1.clone() : new scope.Scope(); + finalScope.update(captureContext); + return finalScope; +} + +/** + * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`. + * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`. + */ +function parseEventHintOrCaptureContext( + hint, +) { + if (!hint) { + return undefined; + } + + // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext + if (hintIsScopeOrFunction(hint)) { + return { captureContext: hint }; + } + + if (hintIsScopeContext(hint)) { + return { + captureContext: hint, + }; + } + + return hint; +} + +function hintIsScopeOrFunction(hint) { + return hint instanceof scope.Scope || typeof hint === 'function'; +} + +const captureContextKeys = [ + 'user', + 'level', + 'extra', + 'contexts', + 'tags', + 'fingerprint', + 'propagationContext', +] ; + +function hintIsScopeContext(hint) { + return Object.keys(hint).some(key => captureContextKeys.includes(key )); +} + +exports.applyClientOptions = applyClientOptions; +exports.applyDebugIds = applyDebugIds; +exports.applyDebugMeta = applyDebugMeta; +exports.parseEventHintOrCaptureContext = parseEventHintOrCaptureContext; +exports.prepareEvent = prepareEvent; +//# sourceMappingURL=prepareEvent.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/prepareEvent.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/prepareEvent.js.map new file mode 100644 index 0000000..6be543f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/prepareEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"prepareEvent.js","sources":["../../../src/utils/prepareEvent.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { notifyEventProcessors } from '../eventProcessors';\nimport type { CaptureContext, ScopeContext } from '../scope';\nimport { Scope } from '../scope';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { getFilenameToDebugIdMap } from './debug-ids';\nimport { addExceptionMechanism, uuid4 } from './misc';\nimport { normalize } from './normalize';\nimport { applyScopeDataToEvent, getCombinedScopeData } from './scopeData';\nimport { truncate } from './string';\nimport { dateTimestampInSeconds } from './time';\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 */\nexport type ExclusiveEventHintOrCaptureContext =\n | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\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 */\nexport function prepareEvent(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n scope?: Scope,\n client?: Client,\n isolationScope?: Scope,\n): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n const prepared: Event = {\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 const result = 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 */\nexport function applyClientOptions(event: Event, options: ClientOptions): void {\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 */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\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 */\nexport function applyDebugMeta(event: Event): void {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap: Record = {};\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: Event, integrationNames: string[]): void {\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: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\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: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\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 */\nexport function parseEventHintOrCaptureContext(\n hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\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: CaptureContext | EventHint): hint is Scope | ((scope: Scope) => Scope) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial | EventHint): hint is Partial {\n return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n"],"names":["uuid4","dateTimestampInSeconds","addExceptionMechanism","getCombinedScopeData","applyScopeDataToEvent","eventProcessors","notifyEventProcessors","DEFAULT_ENVIRONMENT","truncate","getFilenameToDebugIdMap","normalize","scope","Scope"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/promisebuffer.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/promisebuffer.js new file mode 100644 index 0000000..6413b77 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/promisebuffer.js @@ -0,0 +1,92 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const syncpromise = require('./syncpromise.js'); + +const SENTRY_BUFFER_FULL_ERROR = Symbol.for('SentryBufferFullError'); + +/** + * Creates an new PromiseBuffer object with the specified limit + * @param limit max number of promises that can be stored in the buffer + */ +function makePromiseBuffer(limit = 100) { + const buffer = new Set(); + + function isReady() { + return buffer.size < limit; + } + + /** + * Remove a promise from the queue. + * + * @param task Can be any PromiseLike + * @returns Removed promise. + */ + function remove(task) { + buffer.delete(task); + } + + /** + * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment. + * + * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task: + * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor + * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By + * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer + * limit check. + * @returns The original promise. + */ + function add(taskProducer) { + if (!isReady()) { + return syncpromise.rejectedSyncPromise(SENTRY_BUFFER_FULL_ERROR); + } + + // start the task and add its promise to the queue + const task = taskProducer(); + buffer.add(task); + void task.then( + () => remove(task), + () => remove(task), + ); + return task; + } + + /** + * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first. + * + * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or + * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to + * `true`. + * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and + * `false` otherwise + */ + function drain(timeout) { + if (!buffer.size) { + return syncpromise.resolvedSyncPromise(true); + } + + // We want to resolve even if one of the promises rejects + const drainPromise = Promise.allSettled(Array.from(buffer)).then(() => true); + + if (!timeout) { + return drainPromise; + } + + const promises = [drainPromise, new Promise(resolve => setTimeout(() => resolve(false), timeout))]; + + // Promise.race will resolve to the first promise that resolves or rejects + // So if the drainPromise resolves, the timeout promise will be ignored + return Promise.race(promises); + } + + return { + get $() { + return Array.from(buffer); + }, + add, + drain, + }; +} + +exports.SENTRY_BUFFER_FULL_ERROR = SENTRY_BUFFER_FULL_ERROR; +exports.makePromiseBuffer = makePromiseBuffer; +//# sourceMappingURL=promisebuffer.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/promisebuffer.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/promisebuffer.js.map new file mode 100644 index 0000000..eb7bfd7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/promisebuffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"promisebuffer.js","sources":["../../../src/utils/promisebuffer.ts"],"sourcesContent":["import { rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: PromiseLike[];\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\nexport const 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 */\nexport function makePromiseBuffer(limit: number = 100): PromiseBuffer {\n const buffer: Set> = new Set();\n\n function isReady(): boolean {\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: PromiseLike): void {\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: () => PromiseLike): PromiseLike {\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?: number): PromiseLike {\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 = [drainPromise, new Promise(resolve => setTimeout(() => resolve(false), timeout))];\n\n // Promise.race will resolve to the first promise that resolves or rejects\n // So if the drainPromise resolves, the timeout promise will be ignored\n return Promise.race(promises);\n }\n\n return {\n get $(): PromiseLike[] {\n return Array.from(buffer);\n },\n add,\n drain,\n };\n}\n"],"names":["rejectedSyncPromise","resolvedSyncPromise"],"mappings":";;;;AAUO,MAAM,2BAA2B,MAAM,CAAC,GAAG,CAAC,uBAAuB;;AAE1E;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAI,KAAK,GAAW,GAAG,EAAoB;AAC5E,EAAE,MAAM,MAAM,GAAwB,IAAI,GAAG,EAAE;;AAE/C,EAAE,SAAS,OAAO,GAAY;AAC9B,IAAI,OAAO,MAAM,CAAC,IAAA,GAAO,KAAK;AAC9B,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,MAAM,CAAC,IAAI,EAAwB;AAC9C,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,GAAG,CAAC,YAAY,EAAwC;AACnE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACpB,MAAM,OAAOA,+BAAmB,CAAC,wBAAwB,CAAC;AAC1D,IAAI;;AAEJ;AACA,IAAI,MAAM,IAAA,GAAO,YAAY,EAAE;AAC/B,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,IAAI;AAClB,MAAM,MAAM,MAAM,CAAC,IAAI,CAAC;AACxB,MAAM,MAAM,MAAM,CAAC,IAAI,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,KAAK,CAAC,OAAO,EAAiC;AACzD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACtB,MAAM,OAAOC,+BAAmB,CAAC,IAAI,CAAC;AACtC,IAAI;;AAEJ;AACA,IAAI,MAAM,eAAe,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;;AAEhF,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,OAAO,YAAY;AACzB,IAAI;;AAEJ,IAAI,MAAM,QAAA,GAAW,CAAC,YAAY,EAAE,IAAI,OAAO,CAAU,OAAA,IAAW,UAAU,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;;AAE/G;AACA;AACA,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjC,EAAE;;AAEF,EAAE,OAAO;AACT,IAAI,IAAI,CAAC,GAAqB;AAC9B,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/B,IAAI,CAAC;AACL,IAAI,GAAG;AACP,IAAI,KAAK;AACT,GAAG;AACH;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/propagationContext.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/propagationContext.js new file mode 100644 index 0000000..c1e5721 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/propagationContext.js @@ -0,0 +1,21 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const misc = require('./misc.js'); + +/** + * Generate a random, valid trace ID. + */ +function generateTraceId() { + return misc.uuid4(); +} + +/** + * Generate a random, valid span ID. + */ +function generateSpanId() { + return misc.uuid4().substring(16); +} + +exports.generateSpanId = generateSpanId; +exports.generateTraceId = generateTraceId; +//# sourceMappingURL=propagationContext.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/propagationContext.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/propagationContext.js.map new file mode 100644 index 0000000..8e93212 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/propagationContext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"propagationContext.js","sources":["../../../src/utils/propagationContext.ts"],"sourcesContent":["import { uuid4 } from './misc';\n\n/**\n * Generate a random, valid trace ID.\n */\nexport function generateTraceId(): string {\n return uuid4();\n}\n\n/**\n * Generate a random, valid span ID.\n */\nexport function generateSpanId(): string {\n return uuid4().substring(16);\n}\n"],"names":["uuid4"],"mappings":";;;;AAEA;AACA;AACA;AACO,SAAS,eAAe,GAAW;AAC1C,EAAE,OAAOA,UAAK,EAAE;AAChB;;AAEA;AACA;AACA;AACO,SAAS,cAAc,GAAW;AACzC,EAAE,OAAOA,UAAK,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;AAC9B;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/randomSafeContext.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/randomSafeContext.js new file mode 100644 index 0000000..d623ca6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/randomSafeContext.js @@ -0,0 +1,48 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const worldwide = require('./worldwide.js'); + +// undefined = not yet resolved, null = no runner found, function = runner found +let RESOLVED_RUNNER; + +/** + * Simple wrapper that allows SDKs to *secretly* set context wrapper to generate safe random IDs in cache components contexts + */ +function withRandomSafeContext(cb) { + // Skips future symbol lookups if we've already resolved (or attempted to resolve) the runner once + if (RESOLVED_RUNNER !== undefined) { + return RESOLVED_RUNNER ? RESOLVED_RUNNER(cb) : cb(); + } + + const sym = Symbol.for('__SENTRY_SAFE_RANDOM_ID_WRAPPER__'); + const globalWithSymbol = worldwide.GLOBAL_OBJ; + + if (sym in globalWithSymbol && typeof globalWithSymbol[sym] === 'function') { + RESOLVED_RUNNER = globalWithSymbol[sym]; + return RESOLVED_RUNNER(cb); + } + + RESOLVED_RUNNER = null; + return cb(); +} + +/** + * Identical to Math.random() but wrapped in withRandomSafeContext + * to ensure safe random number generation in certain contexts (e.g., Next.js Cache Components). + */ +function safeMathRandom() { + return withRandomSafeContext(() => Math.random()); +} + +/** + * Identical to Date.now() but wrapped in withRandomSafeContext + * to ensure safe time value generation in certain contexts (e.g., Next.js Cache Components). + */ +function safeDateNow() { + return withRandomSafeContext(() => Date.now()); +} + +exports.safeDateNow = safeDateNow; +exports.safeMathRandom = safeMathRandom; +exports.withRandomSafeContext = withRandomSafeContext; +//# sourceMappingURL=randomSafeContext.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/randomSafeContext.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/randomSafeContext.js.map new file mode 100644 index 0000000..25cb751 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/randomSafeContext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"randomSafeContext.js","sources":["../../../src/utils/randomSafeContext.ts"],"sourcesContent":["import { GLOBAL_OBJ } from './worldwide';\n\nexport type RandomSafeContextRunner = (callback: () => T) => T;\n\n// undefined = not yet resolved, null = no runner found, function = runner found\nlet RESOLVED_RUNNER: RandomSafeContextRunner | null | undefined;\n\n/**\n * Simple wrapper that allows SDKs to *secretly* set context wrapper to generate safe random IDs in cache components contexts\n */\nexport function withRandomSafeContext(cb: () => T): T {\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: typeof GLOBAL_OBJ & { [sym]?: RandomSafeContextRunner } = 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 */\nexport function safeMathRandom(): number {\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 */\nexport function safeDateNow(): number {\n return withRandomSafeContext(() => Date.now());\n}\n"],"names":["GLOBAL_OBJ"],"mappings":";;;;AAIA;AACA,IAAI,eAAe;;AAEnB;AACA;AACA;AACO,SAAS,qBAAqB,CAAI,EAAE,EAAc;AACzD;AACA,EAAE,IAAI,eAAA,KAAoB,SAAS,EAAE;AACrC,IAAI,OAAO,eAAA,GAAkB,eAAe,CAAC,EAAE,CAAA,GAAI,EAAE,EAAE;AACvD,EAAE;;AAEF,EAAE,MAAM,MAAM,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC;AAC7D,EAAE,MAAM,gBAAgB,GAA4DA,oBAAU;;AAE9F,EAAE,IAAI,GAAA,IAAO,gBAAA,IAAoB,OAAO,gBAAgB,CAAC,GAAG,CAAA,KAAM,UAAU,EAAE;AAC9E,IAAI,eAAA,GAAkB,gBAAgB,CAAC,GAAG,CAAC;AAC3C,IAAI,OAAO,eAAe,CAAC,EAAE,CAAC;AAC9B,EAAE;;AAEF,EAAE,eAAA,GAAkB,IAAI;AACxB,EAAE,OAAO,EAAE,EAAE;AACb;;AAEA;AACA;AACA;AACA;AACO,SAAS,cAAc,GAAW;AACzC,EAAE,OAAO,qBAAqB,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACnD;;AAEA;AACA;AACA;AACA;AACO,SAAS,WAAW,GAAW;AACtC,EAAE,OAAO,qBAAqB,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;AAChD;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ratelimit.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ratelimit.js new file mode 100644 index 0000000..7764609 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ratelimit.js @@ -0,0 +1,114 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const randomSafeContext = require('./randomSafeContext.js'); + +// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend + +const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds + +/** + * Extracts Retry-After value from the request header or returns default value + * @param header string representation of 'Retry-After' header + * @param now current unix timestamp + * + */ +function parseRetryAfterHeader(header, now = randomSafeContext.safeDateNow()) { + const headerDelay = parseInt(`${header}`, 10); + if (!isNaN(headerDelay)) { + return headerDelay * 1000; + } + + const headerDate = Date.parse(`${header}`); + if (!isNaN(headerDate)) { + return headerDate - now; + } + + return DEFAULT_RETRY_AFTER; +} + +/** + * Gets the time that the given category is disabled until for rate limiting. + * In case no category-specific limit is set but a general rate limit across all categories is active, + * that time is returned. + * + * @return the time in ms that the category is disabled until or 0 if there's no active rate limit. + */ +function disabledUntil(limits, dataCategory) { + return limits[dataCategory] || limits.all || 0; +} + +/** + * Checks if a category is rate limited + */ +function isRateLimited(limits, dataCategory, now = randomSafeContext.safeDateNow()) { + return disabledUntil(limits, dataCategory) > now; +} + +/** + * Update ratelimits from incoming headers. + * + * @return the updated RateLimits object. + */ +function updateRateLimits( + limits, + { statusCode, headers }, + now = randomSafeContext.safeDateNow(), +) { + const updatedRateLimits = { + ...limits, + }; + + // "The name is case-insensitive." + // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get + const rateLimitHeader = headers?.['x-sentry-rate-limits']; + const retryAfterHeader = headers?.['retry-after']; + + if (rateLimitHeader) { + /** + * rate limit headers are of the form + *
                          ,
                          ,.. + * where each
                          is of the form + * : : : : + * where + * is a delay in seconds + * is the event type(s) (error, transaction, etc) being rate limited and is of the form + * ;;... + * is what's being limited (org, project, or key) - ignored by SDK + * is an arbitrary string like "org_quota" - ignored by SDK + * Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected. + * Only present if rate limit applies to the metric_bucket data category. + */ + for (const limit of rateLimitHeader.trim().split(',')) { + const [retryAfter, categories, , , namespaces] = limit.split(':', 5) ; + const headerDelay = parseInt(retryAfter, 10); + const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default + if (!categories) { + updatedRateLimits.all = now + delay; + } else { + for (const category of categories.split(';')) { + if (category === 'metric_bucket') { + // namespaces will be present when category === 'metric_bucket' + if (!namespaces || namespaces.split(';').includes('custom')) { + updatedRateLimits[category] = now + delay; + } + } else { + updatedRateLimits[category] = now + delay; + } + } + } + } + } else if (retryAfterHeader) { + updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now); + } else if (statusCode === 429) { + updatedRateLimits.all = now + 60 * 1000; + } + + return updatedRateLimits; +} + +exports.DEFAULT_RETRY_AFTER = DEFAULT_RETRY_AFTER; +exports.disabledUntil = disabledUntil; +exports.isRateLimited = isRateLimited; +exports.parseRetryAfterHeader = parseRetryAfterHeader; +exports.updateRateLimits = updateRateLimits; +//# sourceMappingURL=ratelimit.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ratelimit.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ratelimit.js.map new file mode 100644 index 0000000..ada9302 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/ratelimit.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ratelimit.js","sources":["../../../src/utils/ratelimit.ts"],"sourcesContent":["import type { DataCategory } from '../types-hoist/datacategory';\nimport type { TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { safeDateNow } from './randomSafeContext';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const 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 */\nexport function parseRetryAfterHeader(header: string, now: number = safeDateNow()): number {\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 */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = safeDateNow()): boolean {\n return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = safeDateNow(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\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) as [string, ...string[]];\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"],"names":["safeDateNow"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/request.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/request.js new file mode 100644 index 0000000..115b950 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/request.js @@ -0,0 +1,256 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * 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. + * The header keys will be lower case: e.g. A "Content-Type" header will be stored as "content-type". + */ +function winterCGHeadersToDict(winterCGHeaders) { + const headers = {}; + try { + winterCGHeaders.forEach((value, key) => { + if (typeof value === 'string') { + // We check that value is a string even though it might be redundant to make sure prototype pollution is not possible. + headers[key] = value; + } + }); + } catch { + // just return the empty headers + } + + return headers; +} + +/** + * Convert common request headers to a simple dictionary. + */ +function headersToDict(reqHeaders) { + const headers = Object.create(null); + + try { + Object.entries(reqHeaders).forEach(([key, value]) => { + if (typeof value === 'string') { + headers[key] = value; + } + }); + } catch { + // just return the empty headers + } + + return headers; +} + +/** + * 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. + */ +function winterCGRequestToRequestData(req) { + const headers = winterCGHeadersToDict(req.headers); + + return { + method: req.method, + url: req.url, + query_string: extractQueryParamsFromUrl(req.url), + headers, + // TODO: Can we extract body data from the request? + }; +} + +/** + * Convert a HTTP request object to RequestEventData to be passed as normalizedRequest. + * Instead of allowing `PolymorphicRequest` to be passed, + * we want to be more specific and generally require a http.IncomingMessage-like object. + */ +function httpRequestToRequestData(request + +) { + const headers = request.headers || {}; + + // Check for x-forwarded-host first, then fall back to host header + const forwardedHost = typeof headers['x-forwarded-host'] === 'string' ? headers['x-forwarded-host'] : undefined; + const host = forwardedHost || (typeof headers.host === 'string' ? headers.host : undefined); + + // Check for x-forwarded-proto first, then fall back to existing protocol detection + const forwardedProto = typeof headers['x-forwarded-proto'] === 'string' ? headers['x-forwarded-proto'] : undefined; + const protocol = forwardedProto || request.protocol || (request.socket?.encrypted ? 'https' : 'http'); + + const url = request.url || ''; + + const absoluteUrl = getAbsoluteUrl({ + url, + host, + protocol, + }); + + // This is non-standard, but may be sometimes set + // It may be overwritten later by our own body handling + const data = (request ).body || undefined; + + // This is non-standard, but may be set on e.g. Next.js or Express requests + const cookies = (request ).cookies; + + return { + url: absoluteUrl, + method: request.method, + query_string: extractQueryParamsFromUrl(url), + headers: headersToDict(headers), + cookies, + data, + }; +} + +function getAbsoluteUrl({ + url, + protocol, + host, +} + +) { + if (url?.startsWith('http')) { + return url; + } + + if (url && host) { + return `${protocol}://${host}${url}`; + } + + return undefined; +} + +const SENSITIVE_HEADER_SNIPPETS = [ + 'auth', + 'token', + 'secret', + 'session', // for the user_session cookie + 'password', + 'passwd', + 'pwd', + 'key', + 'jwt', + 'bearer', + 'sso', + 'saml', + 'csrf', + 'xsrf', + 'credentials', + // Always treat cookie headers as sensitive in case individual key-value cookie pairs cannot properly be extracted + 'set-cookie', + 'cookie', +]; + +const PII_HEADER_SNIPPETS = ['x-forwarded-', '-user']; + +/** + * Converts incoming HTTP request headers to OpenTelemetry span attributes following semantic conventions. + * Header names are converted to the format: http.request.header. + * where is the header name in lowercase with dashes converted to underscores. + * + * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-request-header + */ +function httpHeadersToSpanAttributes( + headers, + sendDefaultPii = false, +) { + const spanAttributes = {}; + + try { + Object.entries(headers).forEach(([key, value]) => { + if (value == null) { + return; + } + + const lowerCasedHeaderKey = key.toLowerCase(); + const isCookieHeader = lowerCasedHeaderKey === 'cookie' || lowerCasedHeaderKey === 'set-cookie'; + + if (isCookieHeader && typeof value === 'string' && value !== '') { + // Set-Cookie: single cookie with attributes ("name=value; HttpOnly; Secure") + // Cookie: multiple cookies separated by "; " ("cookie1=value1; cookie2=value2") + const isSetCookie = lowerCasedHeaderKey === 'set-cookie'; + const semicolonIndex = value.indexOf(';'); + const cookieString = isSetCookie && semicolonIndex !== -1 ? value.substring(0, semicolonIndex) : value; + const cookies = isSetCookie ? [cookieString] : cookieString.split('; '); + + for (const cookie of cookies) { + // Split only at the first '=' to preserve '=' characters in cookie values + const equalSignIndex = cookie.indexOf('='); + const cookieKey = equalSignIndex !== -1 ? cookie.substring(0, equalSignIndex) : cookie; + const cookieValue = equalSignIndex !== -1 ? cookie.substring(equalSignIndex + 1) : ''; + + const lowerCasedCookieKey = cookieKey.toLowerCase(); + + addSpanAttribute(spanAttributes, lowerCasedHeaderKey, lowerCasedCookieKey, cookieValue, sendDefaultPii); + } + } else { + addSpanAttribute(spanAttributes, lowerCasedHeaderKey, '', value, sendDefaultPii); + } + }); + } catch { + // Return empty object if there's an error + } + + return spanAttributes; +} + +function normalizeAttributeKey(key) { + return key.replace(/-/g, '_'); +} + +function addSpanAttribute( + spanAttributes, + headerKey, + cookieKey, + value, + sendPii, +) { + const normalizedKey = cookieKey + ? `http.request.header.${normalizeAttributeKey(headerKey)}.${normalizeAttributeKey(cookieKey)}` + : `http.request.header.${normalizeAttributeKey(headerKey)}`; + + const headerValue = handleHttpHeader(cookieKey || headerKey, value, sendPii); + if (headerValue !== undefined) { + spanAttributes[normalizedKey] = headerValue; + } +} + +function handleHttpHeader( + lowerCasedKey, + value, + sendPii, +) { + const isSensitive = sendPii + ? SENSITIVE_HEADER_SNIPPETS.some(snippet => lowerCasedKey.includes(snippet)) + : [...PII_HEADER_SNIPPETS, ...SENSITIVE_HEADER_SNIPPETS].some(snippet => lowerCasedKey.includes(snippet)); + + if (isSensitive) { + return '[Filtered]'; + } else if (Array.isArray(value)) { + return value.map(v => (v != null ? String(v) : v)).join(';'); + } else if (typeof value === 'string') { + return value; + } + + return undefined; +} + +/** Extract the query params from an URL. */ +function extractQueryParamsFromUrl(url) { + // url is path and query string + if (!url) { + return; + } + + try { + // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and + // hostname as the base. Since the point here is just to grab the query string, it doesn't matter what we use. + const queryParams = new URL(url, 'http://s.io').search.slice(1); + return queryParams.length ? queryParams : undefined; + } catch { + return undefined; + } +} + +exports.extractQueryParamsFromUrl = extractQueryParamsFromUrl; +exports.headersToDict = headersToDict; +exports.httpHeadersToSpanAttributes = httpHeadersToSpanAttributes; +exports.httpRequestToRequestData = httpRequestToRequestData; +exports.winterCGHeadersToDict = winterCGHeadersToDict; +exports.winterCGRequestToRequestData = winterCGRequestToRequestData; +//# sourceMappingURL=request.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/request.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/request.js.map new file mode 100644 index 0000000..b518b68 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/request.js.map @@ -0,0 +1 @@ +{"version":3,"file":"request.js","sources":["../../../src/utils/request.ts"],"sourcesContent":["import type { PolymorphicRequest } from '../types-hoist/polymorphics';\nimport type { RequestEventData } from '../types-hoist/request';\nimport type { WebFetchHeaders, WebFetchRequest } from '../types-hoist/webfetchapi';\n\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 */\nexport function winterCGHeadersToDict(winterCGHeaders: WebFetchHeaders): Record {\n const headers: Record = {};\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 */\nexport function headersToDict(reqHeaders: Record): Record {\n const headers: Record = 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 */\nexport function winterCGRequestToRequestData(req: WebFetchRequest): RequestEventData {\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 */\nexport function httpRequestToRequestData(request: {\n method?: string;\n url?: string;\n headers?: {\n [key: string]: string | string[] | undefined;\n };\n protocol?: string;\n socket?: {\n encrypted?: boolean;\n remoteAddress?: string;\n };\n}): RequestEventData {\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 as PolymorphicRequest).body || undefined;\n\n // This is non-standard, but may be set on e.g. Next.js or Express requests\n const cookies = (request as PolymorphicRequest).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 url?: string;\n protocol: string;\n host?: string;\n}): string | undefined {\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 headers to OpenTelemetry span attributes following semantic conventions.\n * Header names are converted to the format: http.request.header.\n * where is the header name in lowercase with dashes converted to underscores.\n *\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-request-header\n */\nexport function httpHeadersToSpanAttributes(\n headers: Record,\n sendDefaultPii: boolean = false,\n): Record {\n const spanAttributes: Record = {};\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(spanAttributes, lowerCasedHeaderKey, lowerCasedCookieKey, cookieValue, sendDefaultPii);\n }\n } else {\n addSpanAttribute(spanAttributes, lowerCasedHeaderKey, '', value, sendDefaultPii);\n }\n });\n } catch {\n // Return empty object if there's an error\n }\n\n return spanAttributes;\n}\n\nfunction normalizeAttributeKey(key: string): string {\n return key.replace(/-/g, '_');\n}\n\nfunction addSpanAttribute(\n spanAttributes: Record,\n headerKey: string,\n cookieKey: string,\n value: string | string[] | undefined,\n sendPii: boolean,\n): void {\n const normalizedKey = cookieKey\n ? `http.request.header.${normalizeAttributeKey(headerKey)}.${normalizeAttributeKey(cookieKey)}`\n : `http.request.header.${normalizeAttributeKey(headerKey)}`;\n\n const headerValue = handleHttpHeader(cookieKey || headerKey, value, sendPii);\n if (headerValue !== undefined) {\n spanAttributes[normalizedKey] = headerValue;\n }\n}\n\nfunction handleHttpHeader(\n lowerCasedKey: string,\n value: string | string[] | undefined,\n sendPii: boolean,\n): string | undefined {\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. */\nexport function extractQueryParamsFromUrl(url: string): string | undefined {\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"],"names":[],"mappings":";;AAIA;AACA;AACA;AACA;AACO,SAAS,qBAAqB,CAAC,eAAe,EAA2C;AAChG,EAAE,MAAM,OAAO,GAA2B,EAAE;AAC5C,EAAE,IAAI;AACN,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AAC5C,MAAM,IAAI,OAAO,KAAA,KAAU,QAAQ,EAAE;AACrC;AACA,QAAQ,OAAO,CAAC,GAAG,CAAA,GAAI,KAAK;AAC5B,MAAM;AACN,IAAI,CAAC,CAAC;AACN,EAAE,EAAE,MAAM;AACV;AACA,EAAE;;AAEF,EAAE,OAAO,OAAO;AAChB;;AAEA;AACA;AACA;AACO,SAAS,aAAa,CAAC,UAAU,EAAyE;AACjH,EAAE,MAAM,OAAO,GAA2B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AAE7D,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACzD,MAAM,IAAI,OAAO,KAAA,KAAU,QAAQ,EAAE;AACrC,QAAQ,OAAO,CAAC,GAAG,CAAA,GAAI,KAAK;AAC5B,MAAM;AACN,IAAI,CAAC,CAAC;AACN,EAAE,EAAE,MAAM;AACV;AACA,EAAE;;AAEF,EAAE,OAAO,OAAO;AAChB;;AAEA;AACA;AACA;AACO,SAAS,4BAA4B,CAAC,GAAG,EAAqC;AACrF,EAAE,MAAM,UAAU,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC;;AAEpD,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,GAAG,CAAC,MAAM;AACtB,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG;AAChB,IAAI,YAAY,EAAE,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC;AACpD,IAAI,OAAO;AACX;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC;;AAWzC,EAAqB;AACrB,EAAE,MAAM,UAAU,OAAO,CAAC,OAAA,IAAW,EAAE;;AAEvC;AACA,EAAE,MAAM,aAAA,GAAgB,OAAO,OAAO,CAAC,kBAAkB,CAAA,KAAM,QAAA,GAAW,OAAO,CAAC,kBAAkB,CAAA,GAAI,SAAS;AACjH,EAAE,MAAM,IAAA,GAAO,kBAAkB,OAAO,OAAO,CAAC,IAAA,KAAS,WAAW,OAAO,CAAC,IAAA,GAAO,SAAS,CAAC;;AAE7F;AACA,EAAE,MAAM,cAAA,GAAiB,OAAO,OAAO,CAAC,mBAAmB,CAAA,KAAM,QAAA,GAAW,OAAO,CAAC,mBAAmB,CAAA,GAAI,SAAS;AACpH,EAAE,MAAM,QAAA,GAAW,kBAAkB,OAAO,CAAC,QAAA,KAAa,OAAO,CAAC,MAAM,EAAE,SAAA,GAAY,OAAA,GAAU,MAAM,CAAC;;AAEvG,EAAE,MAAM,GAAA,GAAM,OAAO,CAAC,GAAA,IAAO,EAAE;;AAE/B,EAAE,MAAM,WAAA,GAAc,cAAc,CAAC;AACrC,IAAI,GAAG;AACP,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,GAAG,CAAC;;AAEJ;AACA;AACA,EAAE,MAAM,OAAO,CAAC,UAA+B,IAAA,IAAQ,SAAS;;AAEhE;AACA,EAAE,MAAM,OAAA,GAAU,CAAC,OAAA,GAA+B,OAAO;;AAEzD,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,WAAW;AACpB,IAAI,MAAM,EAAE,OAAO,CAAC,MAAM;AAC1B,IAAI,YAAY,EAAE,yBAAyB,CAAC,GAAG,CAAC;AAChD,IAAI,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;AACnC,IAAI,OAAO;AACX,IAAI,IAAI;AACR,GAAG;AACH;;AAEA,SAAS,cAAc,CAAC;AACxB,EAAE,GAAG;AACL,EAAE,QAAQ;AACV,EAAE,IAAI;AACN;;AAIA,EAAuB;AACvB,EAAE,IAAI,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE;AAC/B,IAAI,OAAO,GAAG;AACd,EAAE;;AAEF,EAAE,IAAI,GAAA,IAAO,IAAI,EAAE;AACnB,IAAI,OAAO,CAAC,EAAA,QAAA,CAAA,GAAA,EAAA,IAAA,CAAA,EAAA,GAAA,CAAA,CAAA;AACA,EAAA;;AAEA,EAAA,OAAA,SAAA;AACA;;AAEA,MAAA,yBAAA,GAAA;AACA,EAAA,MAAA;AACA,EAAA,OAAA;AACA,EAAA,QAAA;AACA,EAAA,SAAA;AACA,EAAA,UAAA;AACA,EAAA,QAAA;AACA,EAAA,KAAA;AACA,EAAA,KAAA;AACA,EAAA,KAAA;AACA,EAAA,QAAA;AACA,EAAA,KAAA;AACA,EAAA,MAAA;AACA,EAAA,MAAA;AACA,EAAA,MAAA;AACA,EAAA,aAAA;AACA;AACA,EAAA,YAAA;AACA,EAAA,QAAA;AACA,CAAA;;AAEA,MAAA,mBAAA,GAAA,CAAA,cAAA,EAAA,OAAA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAA,2BAAA;AACA,EAAA,OAAA;AACA,EAAA,cAAA,GAAA,KAAA;AACA,EAAA;AACA,EAAA,MAAA,cAAA,GAAA,EAAA;;AAEA,EAAA,IAAA;AACA,IAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,GAAA,EAAA,KAAA,CAAA,KAAA;AACA,MAAA,IAAA,KAAA,IAAA,IAAA,EAAA;AACA,QAAA;AACA,MAAA;;AAEA,MAAA,MAAA,mBAAA,GAAA,GAAA,CAAA,WAAA,EAAA;AACA,MAAA,MAAA,cAAA,GAAA,mBAAA,KAAA,QAAA,IAAA,mBAAA,KAAA,YAAA;;AAEA,MAAA,IAAA,cAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,KAAA,KAAA,EAAA,EAAA;AACA;AACA;AACA,QAAA,MAAA,WAAA,GAAA,mBAAA,KAAA,YAAA;AACA,QAAA,MAAA,cAAA,GAAA,KAAA,CAAA,OAAA,CAAA,GAAA,CAAA;AACA,QAAA,MAAA,YAAA,GAAA,WAAA,IAAA,cAAA,KAAA,CAAA,CAAA,GAAA,KAAA,CAAA,SAAA,CAAA,CAAA,EAAA,cAAA,CAAA,GAAA,KAAA;AACA,QAAA,MAAA,OAAA,GAAA,WAAA,GAAA,CAAA,YAAA,CAAA,GAAA,YAAA,CAAA,KAAA,CAAA,IAAA,CAAA;;AAEA,QAAA,KAAA,MAAA,MAAA,IAAA,OAAA,EAAA;AACA;AACA,UAAA,MAAA,cAAA,GAAA,MAAA,CAAA,OAAA,CAAA,GAAA,CAAA;AACA,UAAA,MAAA,SAAA,GAAA,cAAA,KAAA,CAAA,CAAA,GAAA,MAAA,CAAA,SAAA,CAAA,CAAA,EAAA,cAAA,CAAA,GAAA,MAAA;AACA,UAAA,MAAA,WAAA,GAAA,cAAA,KAAA,CAAA,CAAA,GAAA,MAAA,CAAA,SAAA,CAAA,cAAA,GAAA,CAAA,CAAA,GAAA,EAAA;;AAEA,UAAA,MAAA,mBAAA,GAAA,SAAA,CAAA,WAAA,EAAA;;AAEA,UAAA,gBAAA,CAAA,cAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,CAAA;AACA,QAAA;AACA,MAAA,CAAA,MAAA;AACA,QAAA,gBAAA,CAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,cAAA,CAAA;AACA,MAAA;AACA,IAAA,CAAA,CAAA;AACA,EAAA,CAAA,CAAA,MAAA;AACA;AACA,EAAA;;AAEA,EAAA,OAAA,cAAA;AACA;;AAEA,SAAA,qBAAA,CAAA,GAAA,EAAA;AACA,EAAA,OAAA,GAAA,CAAA,OAAA,CAAA,IAAA,EAAA,GAAA,CAAA;AACA;;AAEA,SAAA,gBAAA;AACA,EAAA,cAAA;AACA,EAAA,SAAA;AACA,EAAA,SAAA;AACA,EAAA,KAAA;AACA,EAAA,OAAA;AACA,EAAA;AACA,EAAA,MAAA,aAAA,GAAA;AACA,MAAA,CAAA,oBAAA,EAAA,qBAAA,CAAA,SAAA,CAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,SAAA,CAAA,CAAA;AACA,MAAA,CAAA,oBAAA,EAAA,qBAAA,CAAA,SAAA,CAAA,CAAA,CAAA;;AAEA,EAAA,MAAA,WAAA,GAAA,gBAAA,CAAA,SAAA,IAAA,SAAA,EAAA,KAAA,EAAA,OAAA,CAAA;AACA,EAAA,IAAA,WAAA,KAAA,SAAA,EAAA;AACA,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,WAAA;AACA,EAAA;AACA;;AAEA,SAAA,gBAAA;AACA,EAAA,aAAA;AACA,EAAA,KAAA;AACA,EAAA,OAAA;AACA,EAAA;AACA,EAAA,MAAA,WAAA,GAAA;AACA,MAAA,yBAAA,CAAA,IAAA,CAAA,OAAA,IAAA,aAAA,CAAA,QAAA,CAAA,OAAA,CAAA;AACA,MAAA,CAAA,GAAA,mBAAA,EAAA,GAAA,yBAAA,CAAA,CAAA,IAAA,CAAA,OAAA,IAAA,aAAA,CAAA,QAAA,CAAA,OAAA,CAAA,CAAA;;AAEA,EAAA,IAAA,WAAA,EAAA;AACA,IAAA,OAAA,YAAA;AACA,EAAA,CAAA,MAAA,IAAA,KAAA,CAAA,OAAA,CAAA,KAAA,CAAA,EAAA;AACA,IAAA,OAAA,KAAA,CAAA,GAAA,CAAA,CAAA,KAAA,CAAA,IAAA,IAAA,GAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,GAAA,CAAA;AACA,EAAA,CAAA,MAAA,IAAA,OAAA,KAAA,KAAA,QAAA,EAAA;AACA,IAAA,OAAA,KAAA;AACA,EAAA;;AAEA,EAAA,OAAA,SAAA;AACA;;AAEA;AACA,SAAA,yBAAA,CAAA,GAAA,EAAA;AACA;AACA,EAAA,IAAA,CAAA,GAAA,EAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,IAAA;AACA;AACA;AACA,IAAA,MAAA,WAAA,GAAA,IAAA,GAAA,CAAA,GAAA,EAAA,aAAA,CAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AACA,IAAA,OAAA,WAAA,CAAA,MAAA,GAAA,WAAA,GAAA,SAAA;AACA,EAAA,CAAA,CAAA,MAAA;AACA,IAAA,OAAA,SAAA;AACA,EAAA;AACA;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/scopeData.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/scopeData.js new file mode 100644 index 0000000..fc8447a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/scopeData.js @@ -0,0 +1,197 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const dynamicSamplingContext = require('../tracing/dynamicSamplingContext.js'); +const merge = require('./merge.js'); +const spanUtils = require('./spanUtils.js'); + +/** + * Applies data from the scope to the event and runs all event processors on it. + */ +function applyScopeDataToEvent(event, data) { + const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data; + + // Apply general data + applyDataToEvent(event, data); + + // We want to set the trace context for normal events only if there isn't already + // a trace context on the event. There is a product feature in place where we link + // errors with transaction and it relies on that. + if (span) { + applySpanToEvent(event, span); + } + + applyFingerprintToEvent(event, fingerprint); + applyBreadcrumbsToEvent(event, breadcrumbs); + applySdkMetadataToEvent(event, sdkProcessingMetadata); +} + +/** Merge data of two scopes together. */ +function mergeScopeData(data, mergeData) { + const { + extra, + tags, + attributes, + user, + contexts, + level, + sdkProcessingMetadata, + breadcrumbs, + fingerprint, + eventProcessors, + attachments, + propagationContext, + transactionName, + span, + } = mergeData; + + mergeAndOverwriteScopeData(data, 'extra', extra); + mergeAndOverwriteScopeData(data, 'tags', tags); + mergeAndOverwriteScopeData(data, 'attributes', attributes); + mergeAndOverwriteScopeData(data, 'user', user); + mergeAndOverwriteScopeData(data, 'contexts', contexts); + + data.sdkProcessingMetadata = merge.merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2); + + if (level) { + data.level = level; + } + + if (transactionName) { + data.transactionName = transactionName; + } + + if (span) { + data.span = span; + } + + if (breadcrumbs.length) { + data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs]; + } + + if (fingerprint.length) { + data.fingerprint = [...data.fingerprint, ...fingerprint]; + } + + if (eventProcessors.length) { + data.eventProcessors = [...data.eventProcessors, ...eventProcessors]; + } + + if (attachments.length) { + data.attachments = [...data.attachments, ...attachments]; + } + + data.propagationContext = { ...data.propagationContext, ...propagationContext }; +} + +/** + * Merges certain scope data. Undefined values will overwrite any existing values. + * Exported only for tests. + */ +function mergeAndOverwriteScopeData + +(data, prop, mergeVal) { + data[prop] = merge.merge(data[prop], mergeVal, 1); +} + +/** + * Get the scope data for the current scope after merging with the + * global scope and isolation scope. + * + * @param currentScope - The current scope. + * @returns The scope data. + */ +function getCombinedScopeData(isolationScope, currentScope) { + const scopeData = currentScopes.getGlobalScope().getScopeData(); + isolationScope && mergeScopeData(scopeData, isolationScope.getScopeData()); + currentScope && mergeScopeData(scopeData, currentScope.getScopeData()); + return scopeData; +} + +function applyDataToEvent(event, data) { + const { extra, tags, user, contexts, level, transactionName } = data; + + if (Object.keys(extra).length) { + event.extra = { ...extra, ...event.extra }; + } + + if (Object.keys(tags).length) { + event.tags = { ...tags, ...event.tags }; + } + + if (Object.keys(user).length) { + event.user = { ...user, ...event.user }; + } + + if (Object.keys(contexts).length) { + event.contexts = { ...contexts, ...event.contexts }; + } + + if (level) { + event.level = level; + } + + // transaction events get their `transaction` from the root span name + if (transactionName && event.type !== 'transaction') { + event.transaction = transactionName; + } +} + +function applyBreadcrumbsToEvent(event, breadcrumbs) { + const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs]; + event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined; +} + +function applySdkMetadataToEvent(event, sdkProcessingMetadata) { + event.sdkProcessingMetadata = { + ...event.sdkProcessingMetadata, + ...sdkProcessingMetadata, + }; +} + +function applySpanToEvent(event, span) { + event.contexts = { + trace: spanUtils.spanToTraceContext(span), + ...event.contexts, + }; + + event.sdkProcessingMetadata = { + dynamicSamplingContext: dynamicSamplingContext.getDynamicSamplingContextFromSpan(span), + ...event.sdkProcessingMetadata, + }; + + const rootSpan = spanUtils.getRootSpan(span); + const transactionName = spanUtils.spanToJSON(rootSpan).description; + if (transactionName && !event.transaction && event.type === 'transaction') { + event.transaction = transactionName; + } +} + +/** + * Applies fingerprint from the scope to the event if there's one, + * uses message if there's one instead or get rid of empty fingerprint + */ +function applyFingerprintToEvent(event, fingerprint) { + // Make sure it's an array first and we actually have something in place + event.fingerprint = event.fingerprint + ? Array.isArray(event.fingerprint) + ? event.fingerprint + : [event.fingerprint] + : []; + + // If we have something on the scope, then merge it with event + if (fingerprint) { + event.fingerprint = event.fingerprint.concat(fingerprint); + } + + // If we have no data at all, remove empty array default + if (!event.fingerprint.length) { + delete event.fingerprint; + } +} + +exports.applyScopeDataToEvent = applyScopeDataToEvent; +exports.getCombinedScopeData = getCombinedScopeData; +exports.mergeAndOverwriteScopeData = mergeAndOverwriteScopeData; +exports.mergeScopeData = mergeScopeData; +//# sourceMappingURL=scopeData.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/scopeData.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/scopeData.js.map new file mode 100644 index 0000000..4c89824 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/scopeData.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scopeData.js","sources":["../../../src/utils/scopeData.ts"],"sourcesContent":["import { getGlobalScope } from '../currentScopes';\nimport type { Scope, ScopeData } from '../scope';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport type { Breadcrumb } from '../types-hoist/breadcrumb';\nimport type { Event } from '../types-hoist/event';\nimport type { Span } from '../types-hoist/span';\nimport { merge } from './merge';\nimport { getRootSpan, spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\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. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\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 */\nexport function mergeAndOverwriteScopeData<\n Prop extends 'extra' | 'tags' | 'attributes' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n data[prop] = merge(data[prop], mergeVal, 1);\n}\n\n/** Exported only for tests */\nexport function mergeArray(\n event: Event,\n prop: Prop,\n mergeVal: ScopeData[Prop],\n): void {\n const prevVal = event[prop];\n // If we are not merging any new values,\n // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n if (!mergeVal.length && (!prevVal || prevVal.length)) {\n return;\n }\n\n const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n event[prop] = merged.length ? merged : undefined;\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 */\nexport function getCombinedScopeData(isolationScope: Scope | undefined, currentScope: Scope | undefined): ScopeData {\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: Event, data: ScopeData): void {\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: Event, breadcrumbs: Breadcrumb[]): void {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\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: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\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"],"names":["merge","getGlobalScope","spanToTraceContext","getDynamicSamplingContextFromSpan","getRootSpan","spanToJSON"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/sdkMetadata.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/sdkMetadata.js new file mode 100644 index 0000000..ca55b86 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/sdkMetadata.js @@ -0,0 +1,36 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const version = require('./version.js'); + +/** + * A builder for the SDK metadata in the options for the SDK initialization. + * + * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit. + * We don't extract it for bundle size reasons. + * @see https://github.com/getsentry/sentry-javascript/pull/7404 + * @see https://github.com/getsentry/sentry-javascript/pull/4196 + * + * If you make changes to this function consider updating the others as well. + * + * @param options SDK options object that gets mutated + * @param names list of package names + */ +function applySdkMetadata(options, name, names = [name], source = 'npm') { + const metadata = options._metadata || {}; + + if (!metadata.sdk) { + metadata.sdk = { + name: `sentry.javascript.${name}`, + packages: names.map(name => ({ + name: `${source}:@sentry/${name}`, + version: version.SDK_VERSION, + })), + version: version.SDK_VERSION, + }; + } + + options._metadata = metadata; +} + +exports.applySdkMetadata = applySdkMetadata; +//# sourceMappingURL=sdkMetadata.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/sdkMetadata.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/sdkMetadata.js.map new file mode 100644 index 0000000..457dd15 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/sdkMetadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdkMetadata.js","sources":["../../../src/utils/sdkMetadata.ts"],"sourcesContent":["import type { CoreOptions } from '../types-hoist/options';\nimport { SDK_VERSION } from '../utils/version';\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 */\nexport function applySdkMetadata(options: CoreOptions, name: string, names = [name], source = 'npm'): void {\n const metadata = options._metadata || {};\n\n if (!metadata.sdk) {\n metadata.sdk = {\n name: `sentry.javascript.${name}`,\n packages: names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n };\n }\n\n options._metadata = metadata;\n}\n"],"names":["SDK_VERSION"],"mappings":";;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,OAAO,EAAe,IAAI,EAAU,KAAA,GAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,KAAK,EAAQ;AAC3G,EAAE,MAAM,WAAW,OAAO,CAAC,SAAA,IAAa,EAAE;;AAE1C,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;AACrB,IAAI,QAAQ,CAAC,GAAA,GAAM;AACnB,MAAM,IAAI,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAA;AACA,MAAA,QAAA,EAAA,KAAA,CAAA,GAAA,CAAA,IAAA,KAAA;AACA,QAAA,IAAA,EAAA,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AACA,QAAA,OAAA,EAAAA,mBAAA;AACA,OAAA,CAAA,CAAA;AACA,MAAA,OAAA,EAAAA,mBAAA;AACA,KAAA;AACA,EAAA;;AAEA,EAAA,OAAA,CAAA,SAAA,GAAA,QAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/severity.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/severity.js new file mode 100644 index 0000000..a04e2fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/severity.js @@ -0,0 +1,16 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** + * Converts a string-based level into a `SeverityLevel`, normalizing it along the way. + * + * @param level String representation of desired `SeverityLevel`. + * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level. + */ +function severityLevelFromString(level) { + return ( + level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log' + ) ; +} + +exports.severityLevelFromString = severityLevelFromString; +//# sourceMappingURL=severity.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/severity.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/severity.js.map new file mode 100644 index 0000000..eafbc32 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/severity.js.map @@ -0,0 +1 @@ +{"version":3,"file":"severity.js","sources":["../../../src/utils/severity.ts"],"sourcesContent":["import type { SeverityLevel } from '../types-hoist/severity';\n\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 */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (\n level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log'\n ) as SeverityLevel;\n}\n"],"names":[],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,KAAK,EAAyC;AACtF,EAAE;AACF,IAAI,KAAA,KAAU,MAAA,GAAS,SAAA,GAAY,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAA,GAAI,KAAA,GAAQ;AACnH;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/should-ignore-span.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/should-ignore-span.js new file mode 100644 index 0000000..63566ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/should-ignore-span.js @@ -0,0 +1,78 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const debugLogger = require('./debug-logger.js'); +const string = require('./string.js'); + +function logIgnoredSpan(droppedSpan) { + debugLogger.debug.log(`Ignoring span ${droppedSpan.op} - ${droppedSpan.description} because it matches \`ignoreSpans\`.`); +} + +/** + * Check if a span should be ignored based on the ignoreSpans configuration. + */ +function shouldIgnoreSpan( + span, + ignoreSpans, +) { + if (!ignoreSpans?.length || !span.description) { + return false; + } + + for (const pattern of ignoreSpans) { + if (isStringOrRegExp(pattern)) { + if (string.isMatchingPattern(span.description, pattern)) { + debugBuild.DEBUG_BUILD && logIgnoredSpan(span); + return true; + } + continue; + } + + if (!pattern.name && !pattern.op) { + continue; + } + + const nameMatches = pattern.name ? string.isMatchingPattern(span.description, pattern.name) : true; + const opMatches = pattern.op ? span.op && string.isMatchingPattern(span.op, pattern.op) : true; + + // This check here is only correct because we can guarantee that we ran `isMatchingPattern` + // for at least one of `nameMatches` and `opMatches`. So in contrary to how this looks, + // not both op and name actually have to match. This is the most efficient way to check + // for all combinations of name and op patterns. + if (nameMatches && opMatches) { + debugBuild.DEBUG_BUILD && logIgnoredSpan(span); + return true; + } + } + + return false; +} + +/** + * 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. + * This mutates the spans array in place! + */ +function reparentChildSpans(spans, dropSpan) { + const droppedSpanParentId = dropSpan.parent_span_id; + const droppedSpanId = dropSpan.span_id; + + // This should generally not happen, as we do not apply this on root spans + // but to be safe, we just bail in this case + if (!droppedSpanParentId) { + return; + } + + for (const span of spans) { + if (span.parent_span_id === droppedSpanId) { + span.parent_span_id = droppedSpanParentId; + } + } +} + +function isStringOrRegExp(value) { + return typeof value === 'string' || value instanceof RegExp; +} + +exports.reparentChildSpans = reparentChildSpans; +exports.shouldIgnoreSpan = shouldIgnoreSpan; +//# sourceMappingURL=should-ignore-span.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/should-ignore-span.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/should-ignore-span.js.map new file mode 100644 index 0000000..70e2bb8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/should-ignore-span.js.map @@ -0,0 +1 @@ +{"version":3,"file":"should-ignore-span.js","sources":["../../../src/utils/should-ignore-span.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { SpanJSON } from '../types-hoist/span';\nimport { debug } from './debug-logger';\nimport { isMatchingPattern } from './string';\n\nfunction logIgnoredSpan(droppedSpan: Pick): void {\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 */\nexport function shouldIgnoreSpan(\n span: Pick,\n ignoreSpans: Required['ignoreSpans'],\n): boolean {\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 */\nexport function reparentChildSpans(spans: SpanJSON[], dropSpan: SpanJSON): void {\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: unknown): value is string | RegExp {\n return typeof value === 'string' || value instanceof RegExp;\n}\n"],"names":["debug","isMatchingPattern","DEBUG_BUILD"],"mappings":";;;;;;AAMA,SAAS,cAAc,CAAC,WAAW,EAA8C;AACjF,EAAEA,iBAAK,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC;AAC/G;;AAEA;AACA;AACA;AACO,SAAS,gBAAgB;AAChC,EAAE,IAAI;AACN,EAAE,WAAW;AACb,EAAW;AACX,EAAE,IAAI,CAAC,WAAW,EAAE,MAAA,IAAU,CAAC,IAAI,CAAC,WAAW,EAAE;AACjD,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,KAAK,MAAM,OAAA,IAAW,WAAW,EAAE;AACrC,IAAI,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE;AACnC,MAAM,IAAIC,wBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AACxD,QAAQC,sBAAA,IAAe,cAAc,CAAC,IAAI,CAAC;AAC3C,QAAQ,OAAO,IAAI;AACnB,MAAM;AACN,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAA,IAAQ,CAAC,OAAO,CAAC,EAAE,EAAE;AACtC,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,WAAA,GAAc,OAAO,CAAC,IAAA,GAAOD,wBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAA,GAAI,IAAI;AAC/F,IAAI,MAAM,YAAY,OAAO,CAAC,EAAA,GAAK,IAAI,CAAC,EAAA,IAAMA,wBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAA,GAAI,IAAI;;AAE3F;AACA;AACA;AACA;AACA,IAAI,IAAI,WAAA,IAAe,SAAS,EAAE;AAClC,MAAMC,sBAAA,IAAe,cAAc,CAAC,IAAI,CAAC;AACzC,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,KAAK,EAAc,QAAQ,EAAkB;AAChF,EAAE,MAAM,mBAAA,GAAsB,QAAQ,CAAC,cAAc;AACrD,EAAE,MAAM,aAAA,GAAgB,QAAQ,CAAC,OAAO;;AAExC;AACA;AACA,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC5B,IAAI;AACJ,EAAE;;AAEF,EAAE,KAAK,MAAM,IAAA,IAAQ,KAAK,EAAE;AAC5B,IAAI,IAAI,IAAI,CAAC,cAAA,KAAmB,aAAa,EAAE;AAC/C,MAAM,IAAI,CAAC,cAAA,GAAiB,mBAAmB;AAC/C,IAAI;AACJ,EAAE;AACF;;AAEA,SAAS,gBAAgB,CAAC,KAAK,EAAqC;AACpE,EAAE,OAAO,OAAO,KAAA,KAAU,YAAY,KAAA,YAAiB,MAAM;AAC7D;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanOnScope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanOnScope.js new file mode 100644 index 0000000..8235284 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanOnScope.js @@ -0,0 +1,30 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const object = require('./object.js'); + +const SCOPE_SPAN_FIELD = '_sentrySpan'; + +/** + * Set the active span for a given scope. + * NOTE: This should NOT be used directly, but is only used internally by the trace methods. + */ +function _setSpanForScope(scope, span) { + if (span) { + object.addNonEnumerableProperty(scope , SCOPE_SPAN_FIELD, span); + } else { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete (scope )[SCOPE_SPAN_FIELD]; + } +} + +/** + * Get the active span for a given scope. + * NOTE: This should NOT be used directly, but is only used internally by the trace methods. + */ +function _getSpanForScope(scope) { + return scope[SCOPE_SPAN_FIELD]; +} + +exports._getSpanForScope = _getSpanForScope; +exports._setSpanForScope = _setSpanForScope; +//# sourceMappingURL=spanOnScope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanOnScope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanOnScope.js.map new file mode 100644 index 0000000..8e9ec3e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanOnScope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spanOnScope.js","sources":["../../../src/utils/spanOnScope.ts"],"sourcesContent":["import type { Scope } from '../scope';\nimport type { Span } from '../types-hoist/span';\nimport { addNonEnumerableProperty } from '../utils/object';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\ntype ScopeWithMaybeSpan = Scope & {\n [SCOPE_SPAN_FIELD]?: Span;\n};\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 */\nexport function _setSpanForScope(scope: Scope, span: Span | undefined): void {\n if (span) {\n addNonEnumerableProperty(scope as ScopeWithMaybeSpan, SCOPE_SPAN_FIELD, span);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (scope as ScopeWithMaybeSpan)[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 */\nexport function _getSpanForScope(scope: ScopeWithMaybeSpan): Span | undefined {\n return scope[SCOPE_SPAN_FIELD];\n}\n"],"names":["addNonEnumerableProperty"],"mappings":";;;;AAIA,MAAM,gBAAA,GAAmB,aAAa;;AAMtC;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,KAAK,EAAS,IAAI,EAA0B;AAC7E,EAAE,IAAI,IAAI,EAAE;AACZ,IAAIA,+BAAwB,CAAC,KAAA,GAA6B,gBAAgB,EAAE,IAAI,CAAC;AACjF,EAAE,OAAO;AACT;AACA,IAAI,OAAO,CAAC,KAAA,GAA6B,gBAAgB,CAAC;AAC1D,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,KAAK,EAAwC;AAC9E,EAAE,OAAO,KAAK,CAAC,gBAAgB,CAAC;AAChC;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanUtils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanUtils.js new file mode 100644 index 0000000..8599191 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanUtils.js @@ -0,0 +1,353 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const index = require('../asyncContext/index.js'); +const carrier = require('../carrier.js'); +const currentScopes = require('../currentScopes.js'); +const semanticAttributes = require('../semanticAttributes.js'); +const spanstatus = require('../tracing/spanstatus.js'); +const utils = require('../tracing/utils.js'); +const object = require('./object.js'); +const propagationContext = require('./propagationContext.js'); +const time = require('./time.js'); +const tracing = require('./tracing.js'); +const debugLogger = require('./debug-logger.js'); +const spanOnScope = require('./spanOnScope.js'); + +// These are aligned with OpenTelemetry trace flags +const TRACE_FLAG_NONE = 0x0; +const TRACE_FLAG_SAMPLED = 0x1; + +let hasShownSpanDropWarning = false; + +/** + * Convert a span to a trace context, which can be sent as the `trace` context in an event. + * By default, this will only include trace_id, span_id & parent_span_id. + * If `includeAllData` is true, it will also include data, op, status & origin. + */ +function spanToTransactionTraceContext(span) { + const { spanId: span_id, traceId: trace_id } = span.spanContext(); + const { data, op, parent_span_id, status, origin, links } = spanToJSON(span); + + return { + parent_span_id, + span_id, + trace_id, + data, + op, + status, + origin, + links, + }; +} + +/** + * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event. + */ +function spanToTraceContext(span) { + const { spanId, traceId: trace_id, isRemote } = span.spanContext(); + + // If the span is remote, we use a random/virtual span as span_id to the trace context, + // and the remote span as parent_span_id + const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id; + const scope = utils.getCapturedScopesOnSpan(span).scope; + + const span_id = isRemote ? scope?.getPropagationContext().propagationSpanId || propagationContext.generateSpanId() : spanId; + + return { + parent_span_id, + span_id, + trace_id, + }; +} + +/** + * Convert a Span to a Sentry trace header. + */ +function spanToTraceHeader(span) { + const { traceId, spanId } = span.spanContext(); + const sampled = spanIsSampled(span); + return tracing.generateSentryTraceHeader(traceId, spanId, sampled); +} + +/** + * Convert a Span to a W3C traceparent header. + */ +function spanToTraceparentHeader(span) { + const { traceId, spanId } = span.spanContext(); + const sampled = spanIsSampled(span); + return tracing.generateTraceparentHeader(traceId, spanId, sampled); +} + +/** + * Converts the span links array to a flattened version to be sent within an envelope. + * + * If the links array is empty, it returns `undefined` so the empty value can be dropped before it's sent. + */ +function convertSpanLinksForEnvelope(links) { + if (links && links.length > 0) { + return links.map(({ context: { spanId, traceId, traceFlags, ...restContext }, attributes }) => ({ + span_id: spanId, + trace_id: traceId, + sampled: traceFlags === TRACE_FLAG_SAMPLED, + attributes, + ...restContext, + })); + } else { + return undefined; + } +} + +/** + * Convert a span time input into a timestamp in seconds. + */ +function spanTimeInputToSeconds(input) { + if (typeof input === 'number') { + return ensureTimestampInSeconds(input); + } + + if (Array.isArray(input)) { + // See {@link HrTime} for the array-based time format + return input[0] + input[1] / 1e9; + } + + if (input instanceof Date) { + return ensureTimestampInSeconds(input.getTime()); + } + + return time.timestampInSeconds(); +} + +/** + * Converts a timestamp to second, if it was in milliseconds, or keeps it as second. + */ +function ensureTimestampInSeconds(timestamp) { + const isMs = timestamp > 9999999999; + return isMs ? timestamp / 1000 : timestamp; +} + +/** + * Convert a span to a JSON representation. + */ +// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json). +// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility. +// And `spanToJSON` needs the Span class from `span.ts` to check here. +function spanToJSON(span) { + if (spanIsSentrySpan(span)) { + return span.getSpanJSON(); + } + + const { spanId: span_id, traceId: trace_id } = span.spanContext(); + + // Handle a span from @opentelemetry/sdk-base-trace's `Span` class + if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) { + const { attributes, startTime, name, endTime, status, links } = span; + + // In preparation for the next major of OpenTelemetry, we want to support + // looking up the parent span id according to the new API + // In OTel v1, the parent span id is accessed as `parentSpanId` + // In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext` + const parentSpanId = + 'parentSpanId' in span + ? span.parentSpanId + : 'parentSpanContext' in span + ? (span.parentSpanContext )?.spanId + : undefined; + + return { + span_id, + trace_id, + data: attributes, + description: name, + parent_span_id: parentSpanId, + start_timestamp: spanTimeInputToSeconds(startTime), + // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time + timestamp: spanTimeInputToSeconds(endTime) || undefined, + status: getStatusMessage(status), + op: attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP], + origin: attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] , + links: convertSpanLinksForEnvelope(links), + }; + } + + // Finally, at least we have `spanContext()`.... + // This should not actually happen in reality, but we need to handle it for type safety. + return { + span_id, + trace_id, + start_timestamp: 0, + data: {}, + }; +} + +function spanIsOpenTelemetrySdkTraceBaseSpan(span) { + const castSpan = span ; + return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status; +} + +/** Exported only for tests. */ + +/** + * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof. + * :( So instead we approximate this by checking if it has the `getSpanJSON` method. + */ +function spanIsSentrySpan(span) { + return typeof (span ).getSpanJSON === 'function'; +} + +/** + * Returns true if a span is sampled. + * In most cases, you should just use `span.isRecording()` instead. + * However, this has a slightly different semantic, as it also returns false if the span is finished. + * So in the case where this distinction is important, use this method. + */ +function spanIsSampled(span) { + // We align our trace flags with the ones OpenTelemetry use + // So we also check for sampled the same way they do. + const { traceFlags } = span.spanContext(); + return traceFlags === TRACE_FLAG_SAMPLED; +} + +/** Get the status message to use for a JSON representation of a span. */ +function getStatusMessage(status) { + if (!status || status.code === spanstatus.SPAN_STATUS_UNSET) { + return undefined; + } + + if (status.code === spanstatus.SPAN_STATUS_OK) { + return 'ok'; + } + + return status.message || 'internal_error'; +} + +const CHILD_SPANS_FIELD = '_sentryChildSpans'; +const ROOT_SPAN_FIELD = '_sentryRootSpan'; + +/** + * Adds an opaque child span reference to a span. + */ +function addChildSpanToSpan(span, childSpan) { + // We store the root span reference on the child span + // We need this for `getRootSpan()` to work + const rootSpan = span[ROOT_SPAN_FIELD] || span; + object.addNonEnumerableProperty(childSpan , ROOT_SPAN_FIELD, rootSpan); + + // We store a list of child spans on the parent span + // We need this for `getSpanDescendants()` to work + if (span[CHILD_SPANS_FIELD]) { + span[CHILD_SPANS_FIELD].add(childSpan); + } else { + object.addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan])); + } +} + +/** This is only used internally by Idle Spans. */ +function removeChildSpanFromSpan(span, childSpan) { + if (span[CHILD_SPANS_FIELD]) { + span[CHILD_SPANS_FIELD].delete(childSpan); + } +} + +/** + * Returns an array of the given span and all of its descendants. + */ +function getSpanDescendants(span) { + const resultSet = new Set(); + + function addSpanChildren(span) { + // This exit condition is required to not infinitely loop in case of a circular dependency. + if (resultSet.has(span)) { + return; + // We want to ignore unsampled spans (e.g. non recording spans) + } else if (spanIsSampled(span)) { + resultSet.add(span); + const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : []; + for (const childSpan of childSpans) { + addSpanChildren(childSpan); + } + } + } + + addSpanChildren(span); + + return Array.from(resultSet); +} + +/** + * Returns the root span of a given span. + */ +function getRootSpan(span) { + return span[ROOT_SPAN_FIELD] || span; +} + +/** + * Returns the currently active span. + */ +function getActiveSpan() { + const carrier$1 = carrier.getMainCarrier(); + const acs = index.getAsyncContextStrategy(carrier$1); + if (acs.getActiveSpan) { + return acs.getActiveSpan(); + } + + return spanOnScope._getSpanForScope(currentScopes.getCurrentScope()); +} + +/** + * Logs a warning once if `beforeSendSpan` is used to drop spans. + */ +function showSpanDropWarning() { + if (!hasShownSpanDropWarning) { + debugLogger.consoleSandbox(() => { + // eslint-disable-next-line no-console + console.warn( + '[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.', + ); + }); + hasShownSpanDropWarning = true; + } +} + +/** + * Updates the name of the given span and ensures that the span name is not + * overwritten by the Sentry SDK. + * + * Use this function instead of `span.updateName()` if you want to make sure that + * your name is kept. For some spans, for example root `http.server` spans the + * Sentry SDK would otherwise overwrite the span name with a high-quality name + * it infers when the span ends. + * + * Use this function in server code or when your span is started on the server + * and on the client (browser). If you only update a span name on the client, + * you can also use `span.updateName()` the SDK does not overwrite the name. + * + * @param span - The span to update the name of. + * @param name - The name to set on the span. + */ +function updateSpanName(span, name) { + span.updateName(name); + span.setAttributes({ + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom', + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name, + }); +} + +exports.TRACE_FLAG_NONE = TRACE_FLAG_NONE; +exports.TRACE_FLAG_SAMPLED = TRACE_FLAG_SAMPLED; +exports.addChildSpanToSpan = addChildSpanToSpan; +exports.convertSpanLinksForEnvelope = convertSpanLinksForEnvelope; +exports.getActiveSpan = getActiveSpan; +exports.getRootSpan = getRootSpan; +exports.getSpanDescendants = getSpanDescendants; +exports.getStatusMessage = getStatusMessage; +exports.removeChildSpanFromSpan = removeChildSpanFromSpan; +exports.showSpanDropWarning = showSpanDropWarning; +exports.spanIsSampled = spanIsSampled; +exports.spanTimeInputToSeconds = spanTimeInputToSeconds; +exports.spanToJSON = spanToJSON; +exports.spanToTraceContext = spanToTraceContext; +exports.spanToTraceHeader = spanToTraceHeader; +exports.spanToTraceparentHeader = spanToTraceparentHeader; +exports.spanToTransactionTraceContext = spanToTransactionTraceContext; +exports.updateSpanName = updateSpanName; +//# sourceMappingURL=spanUtils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanUtils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanUtils.js.map new file mode 100644 index 0000000..13a71db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/spanUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spanUtils.js","sources":["../../../src/utils/spanUtils.ts"],"sourcesContent":["import { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport { getCurrentScope } from '../currentScopes';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { SentrySpan } from '../tracing/sentrySpan';\nimport { SPAN_STATUS_OK, SPAN_STATUS_UNSET } from '../tracing/spanstatus';\nimport { getCapturedScopesOnSpan } from '../tracing/utils';\nimport type { TraceContext } from '../types-hoist/context';\nimport type { SpanLink, SpanLinkJSON } from '../types-hoist/link';\nimport type { Span, SpanAttributes, SpanJSON, SpanOrigin, SpanTimeInput } from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { generateSpanId } from '../utils/propagationContext';\nimport { timestampInSeconds } from '../utils/time';\nimport { generateSentryTraceHeader, generateTraceparentHeader } from '../utils/tracing';\nimport { consoleSandbox } from './debug-logger';\nimport { _getSpanForScope } from './spanOnScope';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const 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 */\nexport function spanToTransactionTraceContext(span: Span): TraceContext {\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 */\nexport function spanToTraceContext(span: Span): TraceContext {\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 */\nexport function spanToTraceHeader(span: Span): string {\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 */\nexport function spanToTraceparentHeader(span: Span): string {\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 */\nexport function convertSpanLinksForEnvelope(links?: SpanLink[]): SpanLinkJSON[] | undefined {\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 */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\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: number): number {\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.\nexport function spanToJSON(span: Span): SpanJSON {\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 as { spanId?: string } | undefined)?.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] as SpanOrigin | undefined,\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: Span): span is OpenTelemetrySdkTraceBaseSpan {\n const castSpan = span as Partial;\n return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\nexport interface OpenTelemetrySdkTraceBaseSpan extends Span {\n attributes: SpanAttributes;\n startTime: SpanTimeInput;\n name: string;\n status: SpanStatus;\n endTime: SpanTimeInput;\n parentSpanId?: string;\n links?: SpanLink[];\n}\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: Span): span is SentrySpan {\n return typeof (span as SentrySpan).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 */\nexport function spanIsSampled(span: Span): boolean {\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. */\nexport function getStatusMessage(status: SpanStatus | undefined): string | undefined {\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\ntype SpanWithPotentialChildren = Span & {\n [CHILD_SPANS_FIELD]?: Set;\n [ROOT_SPAN_FIELD]?: Span;\n};\n\n/**\n * Adds an opaque child span reference to a span.\n */\nexport function addChildSpanToSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\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 as SpanWithPotentialChildren, 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. */\nexport function removeChildSpanFromSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\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 */\nexport function getSpanDescendants(span: SpanWithPotentialChildren): Span[] {\n const resultSet = new Set();\n\n function addSpanChildren(span: SpanWithPotentialChildren): void {\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 */\nexport function getRootSpan(span: SpanWithPotentialChildren): Span {\n return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\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 */\nexport function showSpanDropWarning(): void {\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 */\nexport function updateSpanName(span: Span, name: string): void {\n span.updateName(name);\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name,\n });\n}\n"],"names":["getCapturedScopesOnSpan","generateSpanId","generateSentryTraceHeader","generateTraceparentHeader","timestampInSeconds","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SPAN_STATUS_UNSET","SPAN_STATUS_OK","addNonEnumerableProperty","carrier","getMainCarrier","getAsyncContextStrategy","_getSpanForScope","getCurrentScope","consoleSandbox","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/stacktrace.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/stacktrace.js new file mode 100644 index 0000000..405c8de --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/stacktrace.js @@ -0,0 +1,198 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const STACKTRACE_FRAME_LIMIT = 50; +const UNKNOWN_FUNCTION = '?'; +// Used to sanitize webpack (error: *) wrapped stack errors +const WEBPACK_ERROR_REGEXP = /\(error: (.*)\)/; +const STRIP_FRAME_REGEXP = /captureMessage|captureException/; + +/** + * Creates a stack parser with the supplied line parsers + * + * StackFrames are returned in the correct order for Sentry Exception + * frames and with Sentry SDK internal frames removed from the top and bottom + * + */ +function createStackParser(...parsers) { + const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]); + + return (stack, skipFirstLines = 0, framesToPop = 0) => { + const frames = []; + const lines = stack.split('\n'); + + for (let i = skipFirstLines; i < lines.length; i++) { + let line = lines[i] ; + // Truncate lines over 1kb because many of the regular expressions use + // backtracking which results in run time that increases exponentially + // with input size. Huge strings can result in hangs/Denial of Service: + // https://github.com/getsentry/sentry-javascript/issues/2286 + if (line.length > 1024) { + line = line.slice(0, 1024); + } + + // https://github.com/getsentry/sentry-javascript/issues/5459 + // Remove webpack (error: *) wrappers + const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line; + + // https://github.com/getsentry/sentry-javascript/issues/7813 + // Skip Error: lines + if (cleanedLine.match(/\S*Error: /)) { + continue; + } + + for (const parser of sortedParsers) { + const frame = parser(cleanedLine); + + if (frame) { + frames.push(frame); + break; + } + } + + if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) { + break; + } + } + + return stripSentryFramesAndReverse(frames.slice(framesToPop)); + }; +} + +/** + * Gets a stack parser implementation from Options.stackParser + * @see Options + * + * If options contains an array of line parsers, it is converted into a parser + */ +function stackParserFromStackParserOptions(stackParser) { + if (Array.isArray(stackParser)) { + return createStackParser(...stackParser); + } + return stackParser; +} + +/** + * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames. + * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the + * function that caused the crash is the last frame in the array. + * @hidden + */ +function stripSentryFramesAndReverse(stack) { + if (!stack.length) { + return []; + } + + const localStack = Array.from(stack); + + // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call) + if (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) { + localStack.pop(); + } + + // Reversing in the middle of the procedure allows us to just pop the values off the stack + localStack.reverse(); + + // 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) + if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) { + localStack.pop(); + + // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')` + // is produced within the scope itself, making it: + // + // Sentry.captureException() + // scope.captureException() + // + // instead of just the top `Sentry` call itself. + // This forces us to possibly strip an additional frame in the exact same was as above. + if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) { + localStack.pop(); + } + } + + return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({ + ...frame, + filename: frame.filename || getLastStackFrame(localStack).filename, + function: frame.function || UNKNOWN_FUNCTION, + })); +} + +function getLastStackFrame(arr) { + return arr[arr.length - 1] || {}; +} + +const defaultFunctionName = ''; + +/** + * Safely extract function name from itself + */ +function getFunctionName(fn) { + try { + if (!fn || typeof fn !== 'function') { + return defaultFunctionName; + } + return fn.name || defaultFunctionName; + } catch { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + return defaultFunctionName; + } +} + +/** + * Get's stack frames from an event without needing to check for undefined properties. + */ +function getFramesFromEvent(event) { + const exception = event.exception; + + if (exception) { + const frames = []; + try { + // @ts-expect-error Object could be undefined + exception.values.forEach(value => { + // @ts-expect-error Value could be undefined + if (value.stacktrace.frames) { + // @ts-expect-error Value could be undefined + frames.push(...value.stacktrace.frames); + } + }); + return frames; + } catch { + return undefined; + } + } + return undefined; +} + +/** + * Get the internal name of an internal Vue value, to represent it in a stacktrace. + * + * @param value The value to get the internal name of. + */ +function getVueInternalName(value) { + // Check if it's a VNode (has __v_isVNode) or a component instance (has _isVue/__isVue) + const isVNode = '__v_isVNode' in value && value.__v_isVNode; + + return isVNode ? '[VueVNode]' : '[VueViewModel]'; +} + +/** + * Normalizes stack line paths by removing file:// prefix and leading slashes for Windows paths + */ +function normalizeStackTracePath(path) { + let filename = path?.startsWith('file://') ? path.slice(7) : path; + // If it's a Windows path, trim the leading slash so that `/C:/foo` becomes `C:/foo` + if (filename?.match(/\/[A-Z]:/)) { + filename = filename.slice(1); + } + return filename; +} + +exports.UNKNOWN_FUNCTION = UNKNOWN_FUNCTION; +exports.createStackParser = createStackParser; +exports.getFramesFromEvent = getFramesFromEvent; +exports.getFunctionName = getFunctionName; +exports.getVueInternalName = getVueInternalName; +exports.normalizeStackTracePath = normalizeStackTracePath; +exports.stackParserFromStackParserOptions = stackParserFromStackParserOptions; +exports.stripSentryFramesAndReverse = stripSentryFramesAndReverse; +//# sourceMappingURL=stacktrace.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/stacktrace.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/stacktrace.js.map new file mode 100644 index 0000000..6e5f809 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/stacktrace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stacktrace.js","sources":["../../../src/utils/stacktrace.ts"],"sourcesContent":["import type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { StackLineParser, StackParser } from '../types-hoist/stacktrace';\nimport type { VNode, VueViewModel } from '../types-hoist/vue';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\nexport const 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 */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirstLines: number = 0, framesToPop: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirstLines; i < lines.length; i++) {\n let line = lines[i] as string;\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 */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): 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 */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray): StackFrame[] {\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: StackFrame[]): StackFrame {\n return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\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 */\nexport function getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n const frames: StackFrame[] = [];\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 */\nexport function getVueInternalName(value: VueViewModel | VNode): string {\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 */\nexport function normalizeStackTracePath(path: string | undefined): string | undefined {\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"],"names":[],"mappings":";;AAKA,MAAM,sBAAA,GAAyB,EAAE;AAC1B,MAAM,gBAAA,GAAmB;AAChC;AACA,MAAM,oBAAA,GAAuB,iBAAiB;AAC9C,MAAM,kBAAA,GAAqB,iCAAiC;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,GAAG,OAAO,EAAkC;AAC9E,EAAE,MAAM,aAAA,GAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,GAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;AAE1E,EAAE,OAAO,CAAC,KAAK,EAAU,cAAc,GAAW,CAAC,EAAE,WAAW,GAAW,CAAC,KAAmB;AAC/F,IAAI,MAAM,MAAM,GAAiB,EAAE;AACnC,IAAI,MAAM,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;;AAEnC,IAAI,KAAK,IAAI,CAAA,GAAI,cAAc,EAAE,CAAA,GAAI,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,MAAM,IAAI,IAAA,GAAO,KAAK,CAAC,CAAC,CAAA;AACxB;AACA;AACA;AACA;AACA,MAAM,IAAI,IAAI,CAAC,MAAA,GAAS,IAAI,EAAE;AAC9B,QAAQ,IAAA,GAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM;;AAEN;AACA;AACA,MAAM,MAAM,WAAA,GAAc,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAA,GAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAA,GAAI,IAAI;;AAE3G;AACA;AACA,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC3C,QAAQ;AACR,MAAM;;AAEN,MAAM,KAAK,MAAM,MAAA,IAAU,aAAa,EAAE;AAC1C,QAAQ,MAAM,KAAA,GAAQ,MAAM,CAAC,WAAW,CAAC;;AAEzC,QAAQ,IAAI,KAAK,EAAE;AACnB,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,UAAU;AACV,QAAQ;AACR,MAAM;;AAEN,MAAM,IAAI,MAAM,CAAC,UAAU,sBAAA,GAAyB,WAAW,EAAE;AACjE,QAAQ;AACR,MAAM;AACN,IAAI;;AAEJ,IAAI,OAAO,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjE,EAAE,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iCAAiC,CAAC,WAAW,EAAgD;AAC7G,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAClC,IAAI,OAAO,iBAAiB,CAAC,GAAG,WAAW,CAAC;AAC5C,EAAE;AACF,EAAE,OAAO,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,2BAA2B,CAAC,KAAK,EAA2C;AAC5F,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,EAAE;AACb,EAAE;;AAEF,EAAE,MAAM,aAAa,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEtC;AACA,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,QAAA,IAAY,EAAE,CAAC,EAAE;AAC1E,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,EAAE;;AAEF;AACA,EAAE,UAAU,CAAC,OAAO,EAAE;;AAEtB;AACA,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,QAAA,IAAY,EAAE,CAAC,EAAE;AAC7E,IAAI,UAAU,CAAC,GAAG,EAAE;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,QAAA,IAAY,EAAE,CAAC,EAAE;AAC/E,MAAM,UAAU,CAAC,GAAG,EAAE;AACtB,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,GAAG,CAAC,KAAA,KAAU;AACnE,IAAI,GAAG,KAAK;AACZ,IAAI,QAAQ,EAAE,KAAK,CAAC,QAAA,IAAY,iBAAiB,CAAC,UAAU,CAAC,CAAC,QAAQ;AACtE,IAAI,QAAQ,EAAE,KAAK,CAAC,QAAA,IAAY,gBAAgB;AAChD,GAAG,CAAC,CAAC;AACL;;AAEA,SAAS,iBAAiB,CAAC,GAAG,EAA4B;AAC1D,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,MAAA,GAAS,CAAC,CAAA,IAAK,EAAE;AAClC;;AAEA,MAAM,mBAAA,GAAsB,aAAa;;AAEzC;AACA;AACA;AACO,SAAS,eAAe,CAAC,EAAE,EAAmB;AACrD,EAAE,IAAI;AACN,IAAI,IAAI,CAAC,EAAA,IAAM,OAAO,EAAA,KAAO,UAAU,EAAE;AACzC,MAAM,OAAO,mBAAmB;AAChC,IAAI;AACJ,IAAI,OAAO,EAAE,CAAC,IAAA,IAAQ,mBAAmB;AACzC,EAAE,EAAE,MAAM;AACV;AACA;AACA,IAAI,OAAO,mBAAmB;AAC9B,EAAE;AACF;;AAEA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,KAAK,EAAmC;AAC3E,EAAE,MAAM,SAAA,GAAY,KAAK,CAAC,SAAS;;AAEnC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,MAAM,MAAM,GAAiB,EAAE;AACnC,IAAI,IAAI;AACR;AACA,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS;AACxC;AACA,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;AACrC;AACA,UAAU,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AACjD,QAAQ;AACR,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,MAAM;AACnB,IAAI,EAAE,MAAM;AACZ,MAAM,OAAO,SAAS;AACtB,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,SAAS;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,KAAK,EAAgC;AACxE;AACA,EAAE,MAAM,UAAU,aAAA,IAAiB,KAAA,IAAS,KAAK,CAAC,WAAW;;AAE7D,EAAE,OAAO,OAAA,GAAU,YAAA,GAAe,gBAAgB;AAClD;;AAEA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,IAAI,EAA0C;AACtF,EAAE,IAAI,QAAA,GAAW,IAAI,EAAE,UAAU,CAAC,SAAS,CAAA,GAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA,GAAI,IAAI;AACnE;AACA,EAAE,IAAI,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;AACnC,IAAI,WAAW,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,EAAE;AACF,EAAE,OAAO,QAAQ;AACjB;;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/string.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/string.js new file mode 100644 index 0000000..70aa1ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/string.js @@ -0,0 +1,147 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const is = require('./is.js'); +const stacktrace = require('./stacktrace.js'); + +/** + * Truncates given string to the maximum characters count + * + * @param str An object that contains serializable values + * @param max Maximum number of characters in truncated string (0 = unlimited) + * @returns string Encoded + */ +function truncate(str, max = 0) { + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : `${str.slice(0, max)}...`; +} + +/** + * This is basically just `trim_line` from + * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67 + * + * @param str An object that contains serializable values + * @param max Maximum number of characters in truncated string + * @returns string Encoded + */ +function snipLine(line, colno) { + let newLine = line; + const lineLength = newLine.length; + if (lineLength <= 150) { + return newLine; + } + if (colno > lineLength) { + // eslint-disable-next-line no-param-reassign + colno = lineLength; + } + + let start = Math.max(colno - 60, 0); + if (start < 5) { + start = 0; + } + + let end = Math.min(start + 140, lineLength); + if (end > lineLength - 5) { + end = lineLength; + } + if (end === lineLength) { + start = Math.max(end - 140, 0); + } + + newLine = newLine.slice(start, end); + if (start > 0) { + newLine = `'{snip} ${newLine}`; + } + if (end < lineLength) { + newLine += ' {snip}'; + } + + return newLine; +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns Joined values + */ +function safeJoin(input, delimiter) { + if (!Array.isArray(input)) { + return ''; + } + + const output = []; + // eslint-disable-next-line @typescript-eslint/prefer-for-of + for (let i = 0; i < input.length; i++) { + const value = input[i]; + try { + // This is a hack to fix a Vue3-specific bug that causes an infinite loop of + // console warnings. This happens when a Vue template is rendered with + // an undeclared variable, which we try to stringify, ultimately causing + // Vue to issue another warning which repeats indefinitely. + // see: https://github.com/getsentry/sentry-javascript/pull/8981 + if (is.isVueViewModel(value)) { + output.push(stacktrace.getVueInternalName(value)); + } else { + output.push(String(value)); + } + } catch { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +/** + * Checks if the given value matches a regex or string + * + * @param value The string to test + * @param pattern Either a regex or a string against which `value` will be matched + * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match + * `pattern` if it contains `pattern`. Only applies to string-type patterns. + */ +function isMatchingPattern( + value, + pattern, + requireExactStringMatch = false, +) { + if (!is.isString(value)) { + return false; + } + + if (is.isRegExp(pattern)) { + return pattern.test(value); + } + if (is.isString(pattern)) { + return requireExactStringMatch ? value === pattern : value.includes(pattern); + } + + return false; +} + +/** + * Test the given string against an array of strings and regexes. By default, string matching is done on a + * substring-inclusion basis rather than a strict equality basis + * + * @param testString The string to test + * @param patterns The patterns against which to test the string + * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to + * count. If false, `testString` will match a string pattern if it contains that pattern. + * @returns + */ +function stringMatchesSomePattern( + testString, + patterns = [], + requireExactStringMatch = false, +) { + return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch)); +} + +exports.isMatchingPattern = isMatchingPattern; +exports.safeJoin = safeJoin; +exports.snipLine = snipLine; +exports.stringMatchesSomePattern = stringMatchesSomePattern; +exports.truncate = truncate; +//# sourceMappingURL=string.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/string.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/string.js.map new file mode 100644 index 0000000..595079d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/string.js.map @@ -0,0 +1 @@ +{"version":3,"file":"string.js","sources":["../../../src/utils/string.ts"],"sourcesContent":["import { isRegExp, isString, isVueViewModel } from './is';\nimport { getVueInternalName } from './stacktrace';\n\nexport { escapeStringForRegex } from '../vendor/escapeStringForRegex';\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 */\nexport function truncate(str: string, max: number = 0): string {\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 */\nexport function snipLine(line: string, colno: number): string {\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 */\nexport function safeJoin(input: unknown[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/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 */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\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 */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n"],"names":["isVueViewModel","getVueInternalName","isString","isRegExp"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/supports.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/supports.js new file mode 100644 index 0000000..eeb9b7d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/supports.js @@ -0,0 +1,190 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugBuild = require('../debug-build.js'); +const debugLogger = require('./debug-logger.js'); +const worldwide = require('./worldwide.js'); + +const WINDOW = worldwide.GLOBAL_OBJ ; + +/** + * Tells whether current environment supports ErrorEvent objects + * {@link supportsErrorEvent}. + * + * @returns Answer to the given question. + */ +function supportsErrorEvent() { + try { + new ErrorEvent(''); + return true; + } catch { + return false; + } +} + +/** + * Tells whether current environment supports DOMError objects + * {@link supportsDOMError}. + * + * @returns Answer to the given question. + */ +function supportsDOMError() { + try { + // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError': + // 1 argument required, but only 0 present. + // @ts-expect-error It really needs 1 argument, not 0. + new DOMError(''); + return true; + } catch { + return false; + } +} + +/** + * Tells whether current environment supports DOMException objects + * {@link supportsDOMException}. + * + * @returns Answer to the given question. + */ +function supportsDOMException() { + try { + new DOMException(''); + return true; + } catch { + return false; + } +} + +/** + * Tells whether current environment supports History API + * {@link supportsHistory}. + * + * @returns Answer to the given question. + */ +function supportsHistory() { + return 'history' in WINDOW && !!WINDOW.history; +} + +/** + * Tells whether current environment supports Fetch API + * {@link supportsFetch}. + * + * @returns Answer to the given question. + * @deprecated This is no longer used and will be removed in a future major version. + */ +const supportsFetch = _isFetchSupported; + +function _isFetchSupported() { + if (!('fetch' in WINDOW)) { + return false; + } + + try { + new Headers(); + // Deno requires a valid URL so '' cannot be used as an argument + new Request('data:,'); + new Response(); + return true; + } catch { + return false; + } +} + +/** + * isNative checks if the given function is a native implementation + */ +// eslint-disable-next-line @typescript-eslint/ban-types +function isNativeFunction(func) { + return func && /^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(func.toString()); +} + +/** + * Tells whether current environment supports Fetch API natively + * {@link supportsNativeFetch}. + * + * @returns true if `window.fetch` is natively implemented, false otherwise + */ +function supportsNativeFetch() { + if (typeof EdgeRuntime === 'string') { + return true; + } + + if (!_isFetchSupported()) { + return false; + } + + // Fast path to avoid DOM I/O + // eslint-disable-next-line @typescript-eslint/unbound-method + if (isNativeFunction(WINDOW.fetch)) { + return true; + } + + // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension) + // so create a "pure" iframe to see if that has native fetch + let result = false; + const doc = WINDOW.document; + // eslint-disable-next-line deprecation/deprecation + if (doc && typeof (doc.createElement ) === 'function') { + try { + const sandbox = doc.createElement('iframe'); + sandbox.hidden = true; + doc.head.appendChild(sandbox); + if (sandbox.contentWindow?.fetch) { + // eslint-disable-next-line @typescript-eslint/unbound-method + result = isNativeFunction(sandbox.contentWindow.fetch); + } + doc.head.removeChild(sandbox); + } catch (err) { + debugBuild.DEBUG_BUILD && debugLogger.debug.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err); + } + } + + return result; +} + +/** + * Tells whether current environment supports ReportingObserver API + * {@link supportsReportingObserver}. + * + * @returns Answer to the given question. + */ +function supportsReportingObserver() { + return 'ReportingObserver' in WINDOW; +} + +/** + * Tells whether current environment supports Referrer Policy API + * {@link supportsReferrerPolicy}. + * + * @returns Answer to the given question. + * @deprecated This is no longer used and will be removed in a future major version. + */ +function supportsReferrerPolicy() { + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default' + // (see https://caniuse.com/#feat=referrer-policy), + // it doesn't. And it throws an exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + + if (!_isFetchSupported()) { + return false; + } + + try { + new Request('_', { + referrerPolicy: 'origin' , + }); + return true; + } catch { + return false; + } +} + +exports.isNativeFunction = isNativeFunction; +exports.supportsDOMError = supportsDOMError; +exports.supportsDOMException = supportsDOMException; +exports.supportsErrorEvent = supportsErrorEvent; +exports.supportsFetch = supportsFetch; +exports.supportsHistory = supportsHistory; +exports.supportsNativeFetch = supportsNativeFetch; +exports.supportsReferrerPolicy = supportsReferrerPolicy; +exports.supportsReportingObserver = supportsReportingObserver; +//# sourceMappingURL=supports.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/supports.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/supports.js.map new file mode 100644 index 0000000..f98ae2b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/supports.js.map @@ -0,0 +1 @@ +{"version":3,"file":"supports.js","sources":["../../../src/utils/supports.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { debug } from './debug-logger';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\ndeclare const EdgeRuntime: string | undefined;\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-expect-error It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n return 'history' in WINDOW && !!WINDOW.history;\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nexport const supportsFetch = _isFetchSupported;\n\nfunction _isFetchSupported(): boolean {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n // Deno requires a valid URL so '' cannot be used as an argument\n new Request('data:,');\n new Response();\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * isNative checks if the given function is a native implementation\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFunction(func: Function): boolean {\n return func && /^function\\s+\\w+\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (typeof EdgeRuntime === 'string') {\n return true;\n }\n\n if (!_isFetchSupported()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFunction(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow?.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFunction(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n DEBUG_BUILD && debug.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!_isFetchSupported()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch {\n return false;\n }\n}\n"],"names":["GLOBAL_OBJ","DEBUG_BUILD","debug"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/syncpromise.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/syncpromise.js new file mode 100644 index 0000000..9e9fb4f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/syncpromise.js @@ -0,0 +1,188 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const is = require('./is.js'); + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +/** SyncPromise internal states */ +const STATE_PENDING = 0; +const STATE_RESOLVED = 1; +const STATE_REJECTED = 2; + +/** + * Creates a resolved sync promise. + * + * @param value the value to resolve the promise with + * @returns the resolved sync promise + */ +function resolvedSyncPromise(value) { + return new SyncPromise(resolve => { + resolve(value); + }); +} + +/** + * Creates a rejected sync promise. + * + * @param value the value to reject the promise with + * @returns the rejected sync promise + */ +function rejectedSyncPromise(reason) { + return new SyncPromise((_, reject) => { + reject(reason); + }); +} + +/** + * Thenable class that behaves like a Promise and follows it's interface + * but is not async internally + */ +class SyncPromise { + + constructor(executor) { + this._state = STATE_PENDING; + this._handlers = []; + + this._runExecutor(executor); + } + + /** @inheritdoc */ + then( + onfulfilled, + onrejected, + ) { + return new SyncPromise((resolve, reject) => { + this._handlers.push([ + false, + result => { + if (!onfulfilled) { + // TODO: ¯\_(ツ)_/¯ + // TODO: FIXME + resolve(result ); + } else { + try { + resolve(onfulfilled(result)); + } catch (e) { + reject(e); + } + } + }, + reason => { + if (!onrejected) { + reject(reason); + } else { + try { + resolve(onrejected(reason)); + } catch (e) { + reject(e); + } + } + }, + ]); + this._executeHandlers(); + }); + } + + /** @inheritdoc */ + catch( + onrejected, + ) { + return this.then(val => val, onrejected); + } + + /** @inheritdoc */ + finally(onfinally) { + return new SyncPromise((resolve, reject) => { + let val; + let isRejected; + + return this.then( + value => { + isRejected = false; + val = value; + if (onfinally) { + onfinally(); + } + }, + reason => { + isRejected = true; + val = reason; + if (onfinally) { + onfinally(); + } + }, + ).then(() => { + if (isRejected) { + reject(val); + return; + } + + resolve(val ); + }); + }); + } + + /** Excute the resolve/reject handlers. */ + _executeHandlers() { + if (this._state === STATE_PENDING) { + return; + } + + const cachedHandlers = this._handlers.slice(); + this._handlers = []; + + cachedHandlers.forEach(handler => { + if (handler[0]) { + return; + } + + if (this._state === STATE_RESOLVED) { + handler[1](this._value ); + } + + if (this._state === STATE_REJECTED) { + handler[2](this._value); + } + + handler[0] = true; + }); + } + + /** Run the executor for the SyncPromise. */ + _runExecutor(executor) { + const setResult = (state, value) => { + if (this._state !== STATE_PENDING) { + return; + } + + if (is.isThenable(value)) { + void (value ).then(resolve, reject); + return; + } + + this._state = state; + this._value = value; + + this._executeHandlers(); + }; + + const resolve = (value) => { + setResult(STATE_RESOLVED, value); + }; + + const reject = (reason) => { + setResult(STATE_REJECTED, reason); + }; + + try { + executor(resolve, reject); + } catch (e) { + reject(e); + } + } +} + +exports.SyncPromise = SyncPromise; +exports.rejectedSyncPromise = rejectedSyncPromise; +exports.resolvedSyncPromise = resolvedSyncPromise; +//# sourceMappingURL=syncpromise.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/syncpromise.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/syncpromise.js.map new file mode 100644 index 0000000..05ed78b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/syncpromise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"syncpromise.js","sources":["../../../src/utils/syncpromise.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst STATE_PENDING = 0;\nconst STATE_RESOLVED = 1;\nconst STATE_REJECTED = 2;\n\ntype State = typeof STATE_PENDING | typeof STATE_RESOLVED | typeof STATE_REJECTED;\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\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 */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\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 */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\ntype Executor = (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void;\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nexport class SyncPromise implements PromiseLike {\n private _state: State;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n private _value: any;\n\n public constructor(executor: Executor) {\n this._state = STATE_PENDING;\n this._handlers = [];\n\n this._runExecutor(executor);\n }\n\n /** @inheritdoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\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 as any);\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 public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** @inheritdoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\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 as unknown as any);\n });\n });\n }\n\n /** Excute the resolve/reject handlers. */\n private _executeHandlers(): void {\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 as unknown as any);\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 private _runExecutor(executor: Executor): void {\n const setResult = (state: State, value?: T | PromiseLike | any): void => {\n if (this._state !== STATE_PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).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: unknown): void => {\n setResult(STATE_RESOLVED, value);\n };\n\n const reject = (reason: unknown): void => {\n setResult(STATE_REJECTED, reason);\n };\n\n try {\n executor(resolve, reject);\n } catch (e) {\n reject(e);\n }\n }\n}\n"],"names":["isThenable"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/time.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/time.js new file mode 100644 index 0000000..d8e7fbd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/time.js @@ -0,0 +1,137 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const randomSafeContext = require('./randomSafeContext.js'); +const worldwide = require('./worldwide.js'); + +const ONE_SECOND_IN_MS = 1000; + +/** + * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance} + * for accessing a high-resolution monotonic clock. + */ + +/** + * Returns a timestamp in seconds since the UNIX epoch using the Date API. + */ +function dateTimestampInSeconds() { + return randomSafeContext.safeDateNow() / ONE_SECOND_IN_MS; +} + +/** + * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not + * support the API. + * + * Wrapping the native API works around differences in behavior from different browsers. + */ +function createUnixTimestampInSecondsFunc() { + const { performance } = worldwide.GLOBAL_OBJ ; + // Some browser and environments don't have a performance or timeOrigin, so we fallback to + // using Date.now() to compute the starting time. + if (!performance?.now || !performance.timeOrigin) { + return dateTimestampInSeconds; + } + + const timeOrigin = performance.timeOrigin; + + // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current + // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed. + // + // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the + // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and + // correct for this. + // See: https://github.com/getsentry/sentry-javascript/issues/2590 + // See: https://github.com/mdn/content/issues/4713 + // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6 + return () => { + return (timeOrigin + randomSafeContext.withRandomSafeContext(() => performance.now())) / ONE_SECOND_IN_MS; + }; +} + +let _cachedTimestampInSeconds; + +/** + * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the + * availability of the Performance API. + * + * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is + * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The + * skew can grow to arbitrary amounts like days, weeks or months. + * See https://github.com/getsentry/sentry-javascript/issues/2590. + */ +function timestampInSeconds() { + // We store this in a closure so that we don't have to create a new function every time this is called. + const func = _cachedTimestampInSeconds ?? (_cachedTimestampInSeconds = createUnixTimestampInSecondsFunc()); + return func(); +} + +/** + * Cached result of getBrowserTimeOrigin. + */ +let cachedTimeOrigin = null; + +/** + * Gets the time origin and the mode used to determine it. + * + * Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or + * performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin + * data as reliable if they are within a reasonable threshold of the current time. + * + * TODO: move to `@sentry/browser-utils` package. + */ +function getBrowserTimeOrigin() { + const { performance } = worldwide.GLOBAL_OBJ ; + if (!performance?.now) { + return undefined; + } + + const threshold = 300000; // 5 minutes in milliseconds + const performanceNow = randomSafeContext.withRandomSafeContext(() => performance.now()); + const dateNow = randomSafeContext.safeDateNow(); + + const timeOrigin = performance.timeOrigin; + if (typeof timeOrigin === 'number') { + const timeOriginDelta = Math.abs(timeOrigin + performanceNow - dateNow); + if (timeOriginDelta < threshold) { + return timeOrigin; + } + } + + // TODO: Remove all code related to `performance.timing.navigationStart` once we drop support for Safari 14. + // `performance.timeSince` is available in Safari 15. + // see: https://caniuse.com/mdn-api_performance_timeorigin + + // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin + // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing. + // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always + // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the + // Date API. + // eslint-disable-next-line deprecation/deprecation + const navigationStart = performance.timing?.navigationStart; + if (typeof navigationStart === 'number') { + const navigationStartDelta = Math.abs(navigationStart + performanceNow - dateNow); + if (navigationStartDelta < threshold) { + return navigationStart; + } + } + + // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to subtracting + // `performance.now()` from `Date.now()`. + return dateNow - performanceNow; +} + +/** + * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the + * performance API is available. + */ +function browserPerformanceTimeOrigin() { + if (cachedTimeOrigin === null) { + cachedTimeOrigin = getBrowserTimeOrigin(); + } + + return cachedTimeOrigin; +} + +exports.browserPerformanceTimeOrigin = browserPerformanceTimeOrigin; +exports.dateTimestampInSeconds = dateTimestampInSeconds; +exports.timestampInSeconds = timestampInSeconds; +//# sourceMappingURL=time.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/time.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/time.js.map new file mode 100644 index 0000000..526c376 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"time.js","sources":["../../../src/utils/time.ts"],"sourcesContent":["import { safeDateNow, withRandomSafeContext } from './randomSafeContext';\nimport { GLOBAL_OBJ } from './worldwide';\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 */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport function dateTimestampInSeconds(): number {\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(): () => number {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\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: (() => number) | undefined;\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 */\nexport function timestampInSeconds(): number {\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: number | null | undefined = 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(): number | undefined {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n if (!performance?.now) {\n return undefined;\n }\n\n const threshold = 300_000; // 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 */\nexport function browserPerformanceTimeOrigin(): number | undefined {\n if (cachedTimeOrigin === null) {\n cachedTimeOrigin = getBrowserTimeOrigin();\n }\n\n return cachedTimeOrigin;\n}\n"],"names":["safeDateNow","GLOBAL_OBJ","withRandomSafeContext"],"mappings":";;;;;AAGA,MAAM,gBAAA,GAAmB,IAAI;;AAE7B;AACA;AACA;AACA;;AAYA;AACA;AACA;AACO,SAAS,sBAAsB,GAAW;AACjD,EAAE,OAAOA,6BAAW,EAAC,GAAI,gBAAgB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gCAAgC,GAAiB;AAC1D,EAAE,MAAM,EAAE,WAAA,EAAY,GAAIC,oBAAA;AAC1B;AACA;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,GAAA,IAAO,CAAC,WAAW,CAAC,UAAU,EAAE;AACpD,IAAI,OAAO,sBAAsB;AACjC,EAAE;;AAEF,EAAE,MAAM,UAAA,GAAa,WAAW,CAAC,UAAU;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM;AACf,IAAI,OAAO,CAAC,UAAA,GAAaC,uCAAqB,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAgB;AAC3F,EAAE,CAAC;AACH;;AAEA,IAAI,yBAAyB;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,GAAW;AAC7C;AACA,EAAE,MAAM,IAAA,GAAO,yBAAA,KAA8B,yBAAA,GAA4B,gCAAgC,EAAE,CAAC;AAC5G,EAAE,OAAO,IAAI,EAAE;AACf;;AAEA;AACA;AACA;AACA,IAAI,gBAAgB,GAA8B,IAAI;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,GAAuB;AACpD,EAAE,MAAM,EAAE,WAAA,EAAY,GAAID,oBAAA;AAC1B,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AACzB,IAAI,OAAO,SAAS;AACpB,EAAE;;AAEF,EAAE,MAAM,SAAA,GAAY,MAAO,CAAA;AAC3B,EAAE,MAAM,cAAA,GAAiBC,uCAAqB,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC;AACvE,EAAE,MAAM,OAAA,GAAUF,6BAAW,EAAE;;AAE/B,EAAE,MAAM,UAAA,GAAa,WAAW,CAAC,UAAU;AAC3C,EAAE,IAAI,OAAO,UAAA,KAAe,QAAQ,EAAE;AACtC,IAAI,MAAM,eAAA,GAAkB,IAAI,CAAC,GAAG,CAAC,UAAA,GAAa,cAAA,GAAiB,OAAO,CAAC;AAC3E,IAAI,IAAI,eAAA,GAAkB,SAAS,EAAE;AACrC,MAAM,OAAO,UAAU;AACvB,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,eAAA,GAAkB,WAAW,CAAC,MAAM,EAAE,eAAe;AAC7D,EAAE,IAAI,OAAO,eAAA,KAAoB,QAAQ,EAAE;AAC3C,IAAI,MAAM,oBAAA,GAAuB,IAAI,CAAC,GAAG,CAAC,eAAA,GAAkB,cAAA,GAAiB,OAAO,CAAC;AACrF,IAAI,IAAI,oBAAA,GAAuB,SAAS,EAAE;AAC1C,MAAM,OAAO,eAAe;AAC5B,IAAI;AACJ,EAAE;;AAEF;AACA;AACA,EAAE,OAAO,OAAA,GAAU,cAAc;AACjC;;AAEA;AACA;AACA;AACA;AACO,SAAS,4BAA4B,GAAuB;AACnE,EAAE,IAAI,gBAAA,KAAqB,IAAI,EAAE;AACjC,IAAI,gBAAA,GAAmB,oBAAoB,EAAE;AAC7C,EAAE;;AAEF,EAAE,OAAO,gBAAgB;AACzB;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/trace-info.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/trace-info.js new file mode 100644 index 0000000..105f29b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/trace-info.js @@ -0,0 +1,27 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const currentScopes = require('../currentScopes.js'); +const dynamicSamplingContext = require('../tracing/dynamicSamplingContext.js'); +const spanUtils = require('./spanUtils.js'); + +/** Extract trace information from scope */ +function _getTraceInfoFromScope( + client, + scope, +) { + if (!scope) { + return [undefined, undefined]; + } + + return currentScopes.withScope(scope, () => { + const span = spanUtils.getActiveSpan(); + const traceContext = span ? spanUtils.spanToTraceContext(span) : currentScopes.getTraceContextFromScope(scope); + const dynamicSamplingContext$1 = span + ? dynamicSamplingContext.getDynamicSamplingContextFromSpan(span) + : dynamicSamplingContext.getDynamicSamplingContextFromScope(client, scope); + return [dynamicSamplingContext$1, traceContext]; + }); +} + +exports._getTraceInfoFromScope = _getTraceInfoFromScope; +//# sourceMappingURL=trace-info.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/trace-info.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/trace-info.js.map new file mode 100644 index 0000000..7494ad3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/trace-info.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace-info.js","sources":["../../../src/utils/trace-info.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { getTraceContextFromScope, withScope } from '../currentScopes';\nimport type { Scope } from '../scope';\nimport {\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n} from '../tracing/dynamicSamplingContext';\nimport type { TraceContext } from '../types-hoist/context';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { getActiveSpan, spanToTraceContext } from './spanUtils';\n\n/** Extract trace information from scope */\nexport function _getTraceInfoFromScope(\n client: Client,\n scope: Scope | undefined,\n): [dynamicSamplingContext: Partial | undefined, traceContext: TraceContext | undefined] {\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"],"names":["withScope","getActiveSpan","spanToTraceContext","getTraceContextFromScope","dynamicSamplingContext","getDynamicSamplingContextFromSpan","getDynamicSamplingContextFromScope"],"mappings":";;;;;;AAWA;AACO,SAAS,sBAAsB;AACtC,EAAE,MAAM;AACR,EAAE,KAAK;AACP,EAAiH;AACjH,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;AACjC,EAAE;;AAEF,EAAE,OAAOA,uBAAS,CAAC,KAAK,EAAE,MAAM;AAChC,IAAI,MAAM,IAAA,GAAOC,uBAAa,EAAE;AAChC,IAAI,MAAM,YAAA,GAAe,IAAA,GAAOC,4BAAkB,CAAC,IAAI,CAAA,GAAIC,sCAAwB,CAAC,KAAK,CAAC;AAC1F,IAAI,MAAMC,2BAAyB;AACnC,QAAQC,wDAAiC,CAAC,IAAI;AAC9C,QAAQC,yDAAkC,CAAC,MAAM,EAAE,KAAK,CAAC;AACzD,IAAI,OAAO,CAACF,wBAAsB,EAAE,YAAY,CAAC;AACjD,EAAE,CAAC,CAAC;AACJ;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/traceData.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/traceData.js new file mode 100644 index 0000000..64df67d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/traceData.js @@ -0,0 +1,79 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const index = require('../asyncContext/index.js'); +const carrier = require('../carrier.js'); +const currentScopes = require('../currentScopes.js'); +const exports$1 = require('../exports.js'); +const debugLogger = require('./debug-logger.js'); +const spanUtils = require('./spanUtils.js'); +const dynamicSamplingContext = require('../tracing/dynamicSamplingContext.js'); +const baggage = require('./baggage.js'); +const tracing = require('./tracing.js'); + +/** + * Extracts trace propagation data from the current span or from the client's scope (via transaction or propagation + * context) and serializes it to `sentry-trace` and `baggage` values. These values can be used to propagate + * a trace via our tracing Http headers or Html `` tags. + * + * This function also applies some validation to the generated sentry-trace and baggage values to ensure that + * only valid strings are returned. + * + * If (@param options.propagateTraceparent) is `true`, the function will also generate a `traceparent` value, + * following the W3C traceparent header format. + * + * @returns an object with the tracing data values. The object keys are the name of the tracing key to be used as header + * or meta tag name. + */ +function getTraceData( + options = {}, +) { + const client = options.client || currentScopes.getClient(); + if (!exports$1.isEnabled() || !client) { + return {}; + } + + const carrier$1 = carrier.getMainCarrier(); + const acs = index.getAsyncContextStrategy(carrier$1); + if (acs.getTraceData) { + return acs.getTraceData(options); + } + + const scope = options.scope || currentScopes.getCurrentScope(); + const span = options.span || spanUtils.getActiveSpan(); + const sentryTrace = span ? spanUtils.spanToTraceHeader(span) : scopeToTraceHeader(scope); + const dsc = span ? dynamicSamplingContext.getDynamicSamplingContextFromSpan(span) : dynamicSamplingContext.getDynamicSamplingContextFromScope(client, scope); + const baggage$1 = baggage.dynamicSamplingContextToSentryBaggageHeader(dsc); + + const isValidSentryTraceHeader = tracing.TRACEPARENT_REGEXP.test(sentryTrace); + if (!isValidSentryTraceHeader) { + debugLogger.debug.warn('Invalid sentry-trace data. Cannot generate trace data'); + return {}; + } + + const traceData = { + 'sentry-trace': sentryTrace, + baggage: baggage$1, + }; + + if (options.propagateTraceparent) { + traceData.traceparent = span ? spanUtils.spanToTraceparentHeader(span) : scopeToTraceparentHeader(scope); + } + + return traceData; +} + +/** + * Get a sentry-trace header value for the given scope. + */ +function scopeToTraceHeader(scope) { + const { traceId, sampled, propagationSpanId } = scope.getPropagationContext(); + return tracing.generateSentryTraceHeader(traceId, propagationSpanId, sampled); +} + +function scopeToTraceparentHeader(scope) { + const { traceId, sampled, propagationSpanId } = scope.getPropagationContext(); + return tracing.generateTraceparentHeader(traceId, propagationSpanId, sampled); +} + +exports.getTraceData = getTraceData; +//# sourceMappingURL=traceData.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/traceData.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/traceData.js.map new file mode 100644 index 0000000..d3504e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/traceData.js.map @@ -0,0 +1 @@ +{"version":3,"file":"traceData.js","sources":["../../../src/utils/traceData.ts"],"sourcesContent":["import { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope } from '../currentScopes';\nimport { isEnabled } from '../exports';\nimport type { Scope } from '../scope';\nimport { getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan } from '../tracing';\nimport type { Span } from '../types-hoist/span';\nimport type { SerializedTraceData } from '../types-hoist/tracing';\nimport { dynamicSamplingContextToSentryBaggageHeader } from './baggage';\nimport { debug } from './debug-logger';\nimport { getActiveSpan, spanToTraceHeader, spanToTraceparentHeader } from './spanUtils';\nimport { generateSentryTraceHeader, generateTraceparentHeader, TRACEPARENT_REGEXP } from './tracing';\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 */\nexport function getTraceData(\n options: { span?: Span; scope?: Scope; client?: Client; propagateTraceparent?: boolean } = {},\n): SerializedTraceData {\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: SerializedTraceData = {\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: Scope): string {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateSentryTraceHeader(traceId, propagationSpanId, sampled);\n}\n\nfunction scopeToTraceparentHeader(scope: Scope): string {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateTraceparentHeader(traceId, propagationSpanId, sampled);\n}\n"],"names":["getClient","isEnabled","carrier","getMainCarrier","getAsyncContextStrategy","getCurrentScope","getActiveSpan","spanToTraceHeader","getDynamicSamplingContextFromSpan","getDynamicSamplingContextFromScope","baggage","dynamicSamplingContextToSentryBaggageHeader","TRACEPARENT_REGEXP","debug","spanToTraceparentHeader","generateSentryTraceHeader","generateTraceparentHeader"],"mappings":";;;;;;;;;;;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY;AAC5B,EAAE,OAAO,GAAoF,EAAE;AAC/F,EAAuB;AACvB,EAAE,MAAM,SAAS,OAAO,CAAC,MAAA,IAAUA,uBAAS,EAAE;AAC9C,EAAE,IAAI,CAACC,mBAAS,EAAC,IAAK,CAAC,MAAM,EAAE;AAC/B,IAAI,OAAO,EAAE;AACb,EAAE;;AAEF,EAAE,MAAMC,SAAA,GAAUC,sBAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAMC,6BAAuB,CAACF,SAAO,CAAC;AAC9C,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE;AACxB,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC;AACpC,EAAE;;AAEF,EAAE,MAAM,QAAQ,OAAO,CAAC,KAAA,IAASG,6BAAe,EAAE;AAClD,EAAE,MAAM,OAAO,OAAO,CAAC,IAAA,IAAQC,uBAAa,EAAE;AAC9C,EAAE,MAAM,WAAA,GAAc,IAAA,GAAOC,2BAAiB,CAAC,IAAI,CAAA,GAAI,kBAAkB,CAAC,KAAK,CAAC;AAChF,EAAE,MAAM,GAAA,GAAM,IAAA,GAAOC,wDAAiC,CAAC,IAAI,CAAA,GAAIC,yDAAkC,CAAC,MAAM,EAAE,KAAK,CAAC;AAChH,EAAE,MAAMC,SAAA,GAAUC,mDAA2C,CAAC,GAAG,CAAC;;AAElE,EAAE,MAAM,2BAA2BC,0BAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvE,EAAE,IAAI,CAAC,wBAAwB,EAAE;AACjC,IAAIC,iBAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC;AACvE,IAAI,OAAO,EAAE;AACb,EAAE;;AAEF,EAAE,MAAM,SAAS,GAAwB;AACzC,IAAI,cAAc,EAAE,WAAW;AAC/B,aAAIH,SAAO;AACX,GAAG;;AAEH,EAAE,IAAI,OAAO,CAAC,oBAAoB,EAAE;AACpC,IAAI,SAAS,CAAC,WAAA,GAAc,OAAOI,iCAAuB,CAAC,IAAI,CAAA,GAAI,wBAAwB,CAAC,KAAK,CAAC;AAClG,EAAE;;AAEF,EAAE,OAAO,SAAS;AAClB;;AAEA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAiB;AAClD,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAA,EAAkB,GAAI,KAAK,CAAC,qBAAqB,EAAE;AAC/E,EAAE,OAAOC,iCAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC;AACvE;;AAEA,SAAS,wBAAwB,CAAC,KAAK,EAAiB;AACxD,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAA,EAAkB,GAAI,KAAK,CAAC,qBAAqB,EAAE;AAC/E,EAAE,OAAOC,iCAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC;AACvE;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/tracing.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/tracing.js new file mode 100644 index 0000000..058d3b6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/tracing.js @@ -0,0 +1,185 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const debugLogger = require('./debug-logger.js'); +const baggage = require('./baggage.js'); +const dsn = require('./dsn.js'); +const parseSampleRate = require('./parseSampleRate.js'); +const propagationContext = require('./propagationContext.js'); +const randomSafeContext = require('./randomSafeContext.js'); + +// eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- RegExp is used for readability here +const TRACEPARENT_REGEXP = new RegExp( + '^[ \\t]*' + // whitespace + '([0-9a-f]{32})?' + // trace_id + '-?([0-9a-f]{16})?' + // span_id + '-?([01])?' + // sampled + '[ \\t]*$', // whitespace +); + +/** + * Extract transaction context data from a `sentry-trace` header. + * + * This is terrible naming but the function has nothing to do with the W3C traceparent header. + * It can only parse the `sentry-trace` header and extract the "trace parent" data. + * + * @param traceparent Traceparent string + * + * @returns Object containing data from the header, or undefined if traceparent string is malformed + */ +function extractTraceparentData(traceparent) { + if (!traceparent) { + return undefined; + } + + const matches = traceparent.match(TRACEPARENT_REGEXP); + if (!matches) { + return undefined; + } + + let parentSampled; + if (matches[3] === '1') { + parentSampled = true; + } else if (matches[3] === '0') { + parentSampled = false; + } + + return { + traceId: matches[1], + parentSampled, + parentSpanId: matches[2], + }; +} + +/** + * Create a propagation context from incoming headers or + * creates a minimal new one if the headers are undefined. + */ +function propagationContextFromHeaders( + sentryTrace, + baggage$1, +) { + const traceparentData = extractTraceparentData(sentryTrace); + const dynamicSamplingContext = baggage.baggageHeaderToDynamicSamplingContext(baggage$1); + + if (!traceparentData?.traceId) { + return { + traceId: propagationContext.generateTraceId(), + sampleRand: randomSafeContext.safeMathRandom(), + }; + } + + const sampleRand = getSampleRandFromTraceparentAndDsc(traceparentData, dynamicSamplingContext); + + // The sample_rand on the DSC needs to be generated based on traceparent + baggage. + if (dynamicSamplingContext) { + dynamicSamplingContext.sample_rand = sampleRand.toString(); + } + + const { traceId, parentSpanId, parentSampled } = traceparentData; + + return { + traceId, + parentSpanId, + sampled: parentSampled, + dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it + sampleRand, + }; +} + +/** + * Create sentry-trace header from span context values. + */ +function generateSentryTraceHeader( + traceId = propagationContext.generateTraceId(), + spanId = propagationContext.generateSpanId(), + sampled, +) { + let sampledString = ''; + if (sampled !== undefined) { + sampledString = sampled ? '-1' : '-0'; + } + return `${traceId}-${spanId}${sampledString}`; +} + +/** + * Creates a W3C traceparent header from the given trace and span ids. + */ +function generateTraceparentHeader( + traceId = propagationContext.generateTraceId(), + spanId = propagationContext.generateSpanId(), + sampled, +) { + return `00-${traceId}-${spanId}-${sampled ? '01' : '00'}`; +} + +/** + * Given any combination of an incoming trace, generate a sample rand based on its defined semantics. + * + * Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value + */ +function getSampleRandFromTraceparentAndDsc( + traceparentData, + dsc, +) { + // When there is an incoming sample rand use it. + const parsedSampleRand = parseSampleRate.parseSampleRate(dsc?.sample_rand); + if (parsedSampleRand !== undefined) { + return parsedSampleRand; + } + + // Otherwise, if there is an incoming sampling decision + sample rate, generate a sample rand that would lead to the same sampling decision. + const parsedSampleRate = parseSampleRate.parseSampleRate(dsc?.sample_rate); + if (parsedSampleRate && traceparentData?.parentSampled !== undefined) { + return traceparentData.parentSampled + ? // Returns a sample rand with positive sampling decision [0, sampleRate) + randomSafeContext.safeMathRandom() * parsedSampleRate + : // Returns a sample rand with negative sampling decision [sampleRate, 1) + parsedSampleRate + randomSafeContext.safeMathRandom() * (1 - parsedSampleRate); + } else { + // If nothing applies, return a random sample rand. + return randomSafeContext.safeMathRandom(); + } +} + +/** + * Determines whether a new trace should be continued based on the provided baggage org ID and the client's `strictTraceContinuation` option. + * If the trace should not be continued, a new trace will be started. + * + * The result is dependent on the `strictTraceContinuation` option in the client. + * See https://develop.sentry.dev/sdk/telemetry/traces/#stricttracecontinuation + */ +function shouldContinueTrace(client, baggageOrgId) { + const clientOrgId = dsn.extractOrgIdFromClient(client); + + // Case: baggage orgID and Client orgID don't match - always start new trace + if (baggageOrgId && clientOrgId && baggageOrgId !== clientOrgId) { + debugLogger.debug.log( + `Won't continue trace because org IDs don't match (incoming baggage: ${baggageOrgId}, SDK options: ${clientOrgId})`, + ); + return false; + } + + const strictTraceContinuation = client.getOptions().strictTraceContinuation || false; // default for `strictTraceContinuation` is `false` + + if (strictTraceContinuation) { + // With strict continuation enabled, don't continue trace if: + // - Baggage has orgID, but Client doesn't have one + // - Client has orgID, but baggage doesn't have one + if ((baggageOrgId && !clientOrgId) || (!baggageOrgId && clientOrgId)) { + debugLogger.debug.log( + `Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${baggageOrgId}, Sentry client: ${clientOrgId})`, + ); + return false; + } + } + + return true; +} + +exports.TRACEPARENT_REGEXP = TRACEPARENT_REGEXP; +exports.extractTraceparentData = extractTraceparentData; +exports.generateSentryTraceHeader = generateSentryTraceHeader; +exports.generateTraceparentHeader = generateTraceparentHeader; +exports.propagationContextFromHeaders = propagationContextFromHeaders; +exports.shouldContinueTrace = shouldContinueTrace; +//# sourceMappingURL=tracing.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/tracing.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/tracing.js.map new file mode 100644 index 0000000..baf26c2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/tracing.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracing.js","sources":["../../../src/utils/tracing.ts"],"sourcesContent":["import type { Client } from '../client';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { PropagationContext } from '../types-hoist/tracing';\nimport type { TraceparentData } from '../types-hoist/transaction';\nimport { debug } from '../utils/debug-logger';\nimport { baggageHeaderToDynamicSamplingContext } from './baggage';\nimport { extractOrgIdFromClient } from './dsn';\nimport { parseSampleRate } from './parseSampleRate';\nimport { generateSpanId, generateTraceId } from './propagationContext';\nimport { safeMathRandom } from './randomSafeContext';\n\n// eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- RegExp is used for readability here\nexport const 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 */\nexport function extractTraceparentData(traceparent?: string): TraceparentData | undefined {\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: boolean | undefined;\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 */\nexport function propagationContextFromHeaders(\n sentryTrace: string | undefined,\n baggage: string | number | boolean | string[] | null | undefined,\n): PropagationContext {\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 */\nexport function generateSentryTraceHeader(\n traceId: string | undefined = generateTraceId(),\n spanId: string | undefined = generateSpanId(),\n sampled?: boolean,\n): string {\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 */\nexport function generateTraceparentHeader(\n traceId: string | undefined = generateTraceId(),\n spanId: string | undefined = generateSpanId(),\n sampled?: boolean,\n): string {\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: TraceparentData | undefined,\n dsc: Partial | undefined,\n): number {\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 */\nexport function shouldContinueTrace(client: Client, baggageOrgId?: string): boolean {\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"],"names":["baggage","baggageHeaderToDynamicSamplingContext","generateTraceId","safeMathRandom","generateSpanId","parseSampleRate","extractOrgIdFromClient","debug"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/transactionEvent.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/transactionEvent.js new file mode 100644 index 0000000..3e32954 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/transactionEvent.js @@ -0,0 +1,59 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const semanticAttributes = require('../semanticAttributes.js'); + +/** + * Converts a transaction event to a span JSON object. + */ +function convertTransactionEventToSpanJson(event) { + const { trace_id, parent_span_id, span_id, status, origin, data, op } = event.contexts?.trace ?? {}; + + return { + data: data ?? {}, + description: event.transaction, + op, + parent_span_id, + span_id: span_id ?? '', + start_timestamp: event.start_timestamp ?? 0, + status, + timestamp: event.timestamp, + trace_id: trace_id ?? '', + origin, + profile_id: data?.[semanticAttributes.SEMANTIC_ATTRIBUTE_PROFILE_ID] , + exclusive_time: data?.[semanticAttributes.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] , + measurements: event.measurements, + is_segment: true, + }; +} + +/** + * Converts a span JSON object to a transaction event. + */ +function convertSpanJsonToTransactionEvent(span) { + return { + type: 'transaction', + timestamp: span.timestamp, + start_timestamp: span.start_timestamp, + transaction: span.description, + contexts: { + trace: { + trace_id: span.trace_id, + span_id: span.span_id, + parent_span_id: span.parent_span_id, + op: span.op, + status: span.status, + origin: span.origin, + data: { + ...span.data, + ...(span.profile_id && { [semanticAttributes.SEMANTIC_ATTRIBUTE_PROFILE_ID]: span.profile_id }), + ...(span.exclusive_time && { [semanticAttributes.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]: span.exclusive_time }), + }, + }, + }, + measurements: span.measurements, + }; +} + +exports.convertSpanJsonToTransactionEvent = convertSpanJsonToTransactionEvent; +exports.convertTransactionEventToSpanJson = convertTransactionEventToSpanJson; +//# sourceMappingURL=transactionEvent.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/transactionEvent.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/transactionEvent.js.map new file mode 100644 index 0000000..bb2d26f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/transactionEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transactionEvent.js","sources":["../../../src/utils/transactionEvent.ts"],"sourcesContent":["import { SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes';\nimport type { TransactionEvent } from '../types-hoist/event';\nimport type { SpanJSON } from '../types-hoist/span';\n\n/**\n * Converts a transaction event to a span JSON object.\n */\nexport function convertTransactionEventToSpanJson(event: TransactionEvent): SpanJSON {\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] as string | undefined,\n exclusive_time: data?.[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\n measurements: event.measurements,\n is_segment: true,\n };\n}\n\n/**\n * Converts a span JSON object to a transaction event.\n */\nexport function convertSpanJsonToTransactionEvent(span: SpanJSON): TransactionEvent {\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"],"names":["SEMANTIC_ATTRIBUTE_PROFILE_ID","SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME"],"mappings":";;;;AAIA;AACA;AACA;AACO,SAAS,iCAAiC,CAAC,KAAK,EAA8B;AACrF,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAA,EAAG,GAAI,KAAK,CAAC,QAAQ,EAAE,KAAA,IAAS,EAAE;;AAErG,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,IAAA,IAAQ,EAAE;AACpB,IAAI,WAAW,EAAE,KAAK,CAAC,WAAW;AAClC,IAAI,EAAE;AACN,IAAI,cAAc;AAClB,IAAI,OAAO,EAAE,OAAA,IAAW,EAAE;AAC1B,IAAI,eAAe,EAAE,KAAK,CAAC,eAAA,IAAmB,CAAC;AAC/C,IAAI,MAAM;AACV,IAAI,SAAS,EAAE,KAAK,CAAC,SAAS;AAC9B,IAAI,QAAQ,EAAE,QAAA,IAAY,EAAE;AAC5B,IAAI,MAAM;AACV,IAAI,UAAU,EAAE,IAAI,GAAGA,gDAA6B,CAAA;AACpD,IAAI,cAAc,EAAE,IAAI,GAAGC,oDAAiC,CAAA;AAC5D,IAAI,YAAY,EAAE,KAAK,CAAC,YAAY;AACpC,IAAI,UAAU,EAAE,IAAI;AACpB,GAAG;AACH;;AAEA;AACA;AACA;AACO,SAAS,iCAAiC,CAAC,IAAI,EAA8B;AACpF,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,SAAS,EAAE,IAAI,CAAC,SAAS;AAC7B,IAAI,eAAe,EAAE,IAAI,CAAC,eAAe;AACzC,IAAI,WAAW,EAAE,IAAI,CAAC,WAAW;AACjC,IAAI,QAAQ,EAAE;AACd,MAAM,KAAK,EAAE;AACb,QAAQ,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC/B,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO;AAC7B,QAAQ,cAAc,EAAE,IAAI,CAAC,cAAc;AAC3C,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE;AACnB,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM;AAC3B,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM;AAC3B,QAAQ,IAAI,EAAE;AACd,UAAU,GAAG,IAAI,CAAC,IAAI;AACtB,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE,CAACD,gDAA6B,GAAG,IAAI,CAAC,UAAA,EAAY,CAAC;AACtF,UAAU,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAACC,oDAAiC,GAAG,IAAI,CAAC,cAAA,EAAgB,CAAC;AAClG,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,YAAY,EAAE,IAAI,CAAC,YAAY;AACnC,GAAG;AACH;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/url.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/url.js new file mode 100644 index 0000000..068e0ae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/url.js @@ -0,0 +1,279 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const semanticAttributes = require('../semanticAttributes.js'); + +// Curious about `thismessage:/`? See: https://www.rfc-editor.org/rfc/rfc2557.html +// > When the methods above do not yield an absolute URI, a base URL +// > of "thismessage:/" MUST be employed. This base URL has been +// > defined for the sole purpose of resolving relative references +// > within a multipart/related structure when no other base URI is +// > specified. +// +// We need to provide a base URL to `parseStringToURLObject` because the fetch API gives us a +// relative URL sometimes. +// +// This is the only case where we need to provide a base URL to `parseStringToURLObject` +// because the relative URL is not valid on its own. +const DEFAULT_BASE_URL = 'thismessage:/'; + +/** + * Checks if the URL object is relative + * + * @param url - The URL object to check + * @returns True if the URL object is relative, false otherwise + */ +function isURLObjectRelative(url) { + return 'isRelative' in url; +} + +/** + * Parses string to a URL object + * + * @param url - The URL to parse + * @returns The parsed URL object or undefined if the URL is invalid + */ +function parseStringToURLObject(url, urlBase) { + const isRelative = url.indexOf('://') <= 0 && url.indexOf('//') !== 0; + const base = urlBase ?? (isRelative ? DEFAULT_BASE_URL : undefined); + try { + // Use `canParse` to short-circuit the URL constructor if it's not a valid URL + // This is faster than trying to construct the URL and catching the error + // Node 20+, Chrome 120+, Firefox 115+, Safari 17+ + if ('canParse' in URL && !(URL ).canParse(url, base)) { + return undefined; + } + + const fullUrlObject = new URL(url, base); + if (isRelative) { + // Because we used a fake base URL, we need to return a relative URL object. + // We cannot return anything about the origin, host, etc. because it will refer to the fake base URL. + return { + isRelative, + pathname: fullUrlObject.pathname, + search: fullUrlObject.search, + hash: fullUrlObject.hash, + }; + } + return fullUrlObject; + } catch { + // empty body + } + + return undefined; +} + +/** + * Takes a URL object and returns a sanitized string which is safe to use as span name + * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data + */ +function getSanitizedUrlStringFromUrlObject(url) { + if (isURLObjectRelative(url)) { + return url.pathname; + } + + const newUrl = new URL(url); + newUrl.search = ''; + newUrl.hash = ''; + if (['80', '443'].includes(newUrl.port)) { + newUrl.port = ''; + } + if (newUrl.password) { + newUrl.password = '%filtered%'; + } + if (newUrl.username) { + newUrl.username = '%filtered%'; + } + + return newUrl.toString(); +} + +function getHttpSpanNameFromUrlObject( + urlObject, + kind, + request, + routeName, +) { + const method = request?.method?.toUpperCase() ?? 'GET'; + const route = routeName + ? routeName + : urlObject + ? kind === 'client' + ? getSanitizedUrlStringFromUrlObject(urlObject) + : urlObject.pathname + : '/'; + + return `${method} ${route}`; +} + +/** + * Takes a parsed URL object and returns a set of attributes for the span + * that represents the HTTP request for that url. This is used for both server + * and client http spans. + * + * Follows https://opentelemetry.io/docs/specs/semconv/http/. + * + * @param urlObject - see {@link parseStringToURLObject} + * @param kind - The type of HTTP operation (server or client) + * @param spanOrigin - The origin of the span + * @param request - The request object, see {@link PartialRequest} + * @param routeName - The name of the route, must be low cardinality + * @returns The span name and attributes for the HTTP operation + */ +function getHttpSpanDetailsFromUrlObject( + urlObject, + kind, + spanOrigin, + request, + routeName, +) { + const attributes = { + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin, + [semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', + }; + + if (routeName) { + // This is based on https://opentelemetry.io/docs/specs/semconv/http/http-spans/#name + attributes[kind === 'server' ? 'http.route' : 'url.template'] = routeName; + attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route'; + } + + if (request?.method) { + attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD] = request.method.toUpperCase(); + } + + if (urlObject) { + if (urlObject.search) { + attributes['url.query'] = urlObject.search; + } + if (urlObject.hash) { + attributes['url.fragment'] = urlObject.hash; + } + if (urlObject.pathname) { + attributes['url.path'] = urlObject.pathname; + if (urlObject.pathname === '/') { + attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route'; + } + } + + if (!isURLObjectRelative(urlObject)) { + attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_URL_FULL] = urlObject.href; + if (urlObject.port) { + attributes['url.port'] = urlObject.port; + } + if (urlObject.protocol) { + attributes['url.scheme'] = urlObject.protocol; + } + if (urlObject.hostname) { + attributes[kind === 'server' ? 'server.address' : 'url.domain'] = urlObject.hostname; + } + } + } + + return [getHttpSpanNameFromUrlObject(urlObject, kind, request, routeName), attributes]; +} + +/** + * Parses string form of URL into an object + * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B + * // intentionally using regex and not href parsing trick because React Native and other + * // environments where DOM might not be available + * @returns parsed URL object + */ +function parseUrl(url) { + if (!url) { + return {}; + } + + const match = url.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + if (!match) { + return {}; + } + + // coerce to undefined values to empty string so we don't get 'undefined' + const query = match[6] || ''; + const fragment = match[8] || ''; + return { + host: match[4], + path: match[5], + protocol: match[2], + search: query, + hash: fragment, + relative: match[5] + query + fragment, // everything minus origin + }; +} + +/** + * Strip the query string and fragment off of a given URL or path (if present) + * + * @param urlPath Full URL or path, including possible query string and/or fragment + * @returns URL or path without query string or fragment + */ +function stripUrlQueryAndFragment(urlPath) { + return (urlPath.split(/[?#]/, 1) )[0]; +} + +/** + * Takes a URL object and returns a sanitized string which is safe to use as span name + * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data + */ +function getSanitizedUrlString(url) { + const { protocol, host, path } = url; + + const filteredHost = + host + // Always filter out authority + ?.replace(/^.*@/, '[filtered]:[filtered]@') + // Don't show standard :80 (http) and :443 (https) ports to reduce the noise + // TODO: Use new URL global if it exists + .replace(/(:80)$/, '') + .replace(/(:443)$/, '') || ''; + + return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`; +} + +/** + * Strips the content from a data URL, returning a placeholder with the MIME type. + * + * Data URLs can be very long (e.g. base64 encoded scripts for Web Workers), + * with little valuable information, often leading to envelopes getting dropped due + * to size limit violations. Therefore, we strip data URLs and replace them with a + * placeholder. + * + * @param url - The URL to process + * @param includeDataPrefix - If true, includes the first 10 characters of the data stream + * for debugging (e.g., to identify magic bytes like WASM's AGFzbQ). + * Defaults to true. + * @returns For data URLs, returns a short format like `data:text/javascript;base64,SGVsbG8gV2... [truncated]`. + * For non-data URLs, returns the original URL unchanged. + */ +function stripDataUrlContent(url, includeDataPrefix = true) { + if (url.startsWith('data:')) { + // Match the MIME type (everything after 'data:' until the first ';' or ',') + const match = url.match(/^data:([^;,]+)/); + const mimeType = match ? match[1] : 'text/plain'; + const isBase64 = url.includes(';base64,'); + + // Find where the actual data starts (after the comma) + const dataStart = url.indexOf(','); + let dataPrefix = ''; + if (includeDataPrefix && dataStart !== -1) { + const data = url.slice(dataStart + 1); + // Include first 10 chars of data to help identify content (e.g., magic bytes) + dataPrefix = data.length > 10 ? `${data.slice(0, 10)}... [truncated]` : data; + } + + return `data:${mimeType}${isBase64 ? ',base64' : ''}${dataPrefix ? `,${dataPrefix}` : ''}`; + } + return url; +} + +exports.getHttpSpanDetailsFromUrlObject = getHttpSpanDetailsFromUrlObject; +exports.getSanitizedUrlString = getSanitizedUrlString; +exports.getSanitizedUrlStringFromUrlObject = getSanitizedUrlStringFromUrlObject; +exports.isURLObjectRelative = isURLObjectRelative; +exports.parseStringToURLObject = parseStringToURLObject; +exports.parseUrl = parseUrl; +exports.stripDataUrlContent = stripDataUrlContent; +exports.stripUrlQueryAndFragment = stripUrlQueryAndFragment; +//# sourceMappingURL=url.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/url.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/url.js.map new file mode 100644 index 0000000..0e6c3ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/url.js.map @@ -0,0 +1 @@ +{"version":3,"file":"url.js","sources":["../../../src/utils/url.ts"],"sourcesContent":["import {\n SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n} from '../semanticAttributes';\nimport type { SpanAttributes } from '../types-hoist/span';\n\ntype PartialURL = {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n search?: string;\n hash?: string;\n};\n\ninterface URLwithCanParse extends URL {\n canParse: (url: string, base?: string | URL | undefined) => boolean;\n}\n\n// A subset of the URL object that is valid for relative URLs\n// The URL object cannot handle relative URLs, so we need to handle them separately\ntype RelativeURL = {\n isRelative: true;\n pathname: URL['pathname'];\n search: URL['search'];\n hash: URL['hash'];\n};\n\ntype URLObject = RelativeURL | URL;\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 */\nexport function isURLObjectRelative(url: URLObject): url is RelativeURL {\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 */\nexport function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined {\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 as unknown as URLwithCanParse).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 */\nexport function getSanitizedUrlStringFromUrlObject(url: URLObject): string {\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\ntype PartialRequest = {\n method?: string;\n};\n\nfunction getHttpSpanNameFromUrlObject(\n urlObject: URLObject | undefined,\n kind: 'server' | 'client',\n request?: PartialRequest,\n routeName?: string,\n): string {\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 */\nexport function getHttpSpanDetailsFromUrlObject(\n urlObject: URLObject | undefined,\n kind: 'server' | 'client',\n spanOrigin: string,\n request?: PartialRequest,\n routeName?: string,\n): [name: string, attributes: SpanAttributes] {\n const attributes: SpanAttributes = {\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 */\nexport function parseUrl(url: string): PartialURL {\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 */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n return (urlPath.split(/[?#]/, 1) as [string, ...string[]])[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 */\nexport function getSanitizedUrlString(url: PartialURL): string {\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 */\nexport function stripDataUrlContent(url: string, includeDataPrefix: boolean = true): string {\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"],"names":["SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD","SEMANTIC_ATTRIBUTE_URL_FULL"],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/vercelWaitUntil.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/vercelWaitUntil.js new file mode 100644 index 0000000..d87be14 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/vercelWaitUntil.js @@ -0,0 +1,28 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +const worldwide = require('./worldwide.js'); + +/** + * Function that delays closing of a Vercel lambda until the provided promise is resolved. + * + * Vendored from https://www.npmjs.com/package/@vercel/functions + */ +function vercelWaitUntil(task) { + // We only flush manually in Vercel Edge runtime + // In Node runtime, we use process.on('SIGTERM') instead + if (typeof EdgeRuntime !== 'string') { + return; + } + const vercelRequestContextGlobal = + // @ts-expect-error This is not typed + worldwide.GLOBAL_OBJ[Symbol.for('@vercel/request-context')]; + + const ctx = vercelRequestContextGlobal?.get?.(); + + if (ctx?.waitUntil) { + ctx.waitUntil(task); + } +} + +exports.vercelWaitUntil = vercelWaitUntil; +//# sourceMappingURL=vercelWaitUntil.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/vercelWaitUntil.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/vercelWaitUntil.js.map new file mode 100644 index 0000000..9c4b0b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/vercelWaitUntil.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vercelWaitUntil.js","sources":["../../../src/utils/vercelWaitUntil.ts"],"sourcesContent":["import { GLOBAL_OBJ } from './worldwide';\n\ndeclare const EdgeRuntime: string | undefined;\n\ninterface VercelRequestContextGlobal {\n get?():\n | {\n waitUntil?: (task: Promise) => void;\n }\n | undefined;\n}\n\n/**\n * Function that delays closing of a Vercel lambda until the provided promise is resolved.\n *\n * Vendored from https://www.npmjs.com/package/@vercel/functions\n */\nexport function vercelWaitUntil(task: Promise): void {\n // We only flush manually in Vercel Edge runtime\n // In Node runtime, we use process.on('SIGTERM') instead\n if (typeof EdgeRuntime !== 'string') {\n return;\n }\n const vercelRequestContextGlobal: VercelRequestContextGlobal | undefined =\n // @ts-expect-error This is not typed\n GLOBAL_OBJ[Symbol.for('@vercel/request-context')];\n\n const ctx = vercelRequestContextGlobal?.get?.();\n\n if (ctx?.waitUntil) {\n ctx.waitUntil(task);\n }\n}\n"],"names":["GLOBAL_OBJ"],"mappings":";;;;AAYA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,IAAI,EAA0B;AAC9D;AACA;AACA,EAAE,IAAI,OAAO,WAAA,KAAgB,QAAQ,EAAE;AACvC,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,0BAA0B;AAClC;AACA,IAAIA,oBAAU,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;;AAErD,EAAE,MAAM,MAAM,0BAA0B,EAAE,GAAG,IAAI;;AAEjD,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE;AACtB,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACvB,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/version.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/version.js new file mode 100644 index 0000000..34276b1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/version.js @@ -0,0 +1,8 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +// This is a magic string replaced by rollup + +const SDK_VERSION = "10.37.0" ; + +exports.SDK_VERSION = SDK_VERSION; +//# sourceMappingURL=version.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/version.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/version.js.map new file mode 100644 index 0000000..0f1f5d0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sources":["../../../src/utils/version.ts"],"sourcesContent":["// This is a magic string replaced by rollup\ndeclare const __SENTRY_SDK_VERSION__: string;\n\nexport const SDK_VERSION = typeof __SENTRY_SDK_VERSION__ === 'string' ? __SENTRY_SDK_VERSION__ : '0.0.0-unknown.0';\n"],"names":[],"mappings":";;AAAA;;AAGO,MAAM,WAAA,GAA2D,SAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/worldwide.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/worldwide.js new file mode 100644 index 0000000..6a3382e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/worldwide.js @@ -0,0 +1,9 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +/** Internal global with common properties and Sentry extensions */ + +/** Get's the global object for the current JavaScript runtime */ +const GLOBAL_OBJ = globalThis ; + +exports.GLOBAL_OBJ = GLOBAL_OBJ; +//# sourceMappingURL=worldwide.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/worldwide.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/worldwide.js.map new file mode 100644 index 0000000..13dba5d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/utils/worldwide.js.map @@ -0,0 +1 @@ +{"version":3,"file":"worldwide.js","sources":["../../../src/utils/worldwide.ts"],"sourcesContent":["/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the `debug` singleton, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Carrier } from '../carrier';\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport type InternalGlobal = {\n navigator?: { userAgent?: string; maxTouchPoints?: number };\n console: Console;\n PerformanceObserver?: any;\n Sentry?: any;\n onerror?: {\n (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n __SENTRY_INSTRUMENTED__?: true;\n };\n onunhandledrejection?: {\n (event: unknown): boolean;\n __SENTRY_INSTRUMENTED__?: true;\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record;\n /**\n * Native debug IDs implementation (e.g., from Vercel).\n * This uses the same format as _sentryDebugIds but with a different global name.\n * Keys are `error.stack` strings, values are debug IDs.\n */\n _debugIds?: Record;\n /**\n * Raw module metadata that is injected by bundler plugins.\n *\n * Keys are `error.stack` strings, values are the metadata.\n */\n _sentryModuleMetadata?: Record;\n _sentryEsmLoaderHookRegistered?: boolean;\n _sentryInjectLoaderHookRegister?: () => void;\n _sentryInjectLoaderHookRegistered?: boolean;\n} & Carrier;\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ = globalThis as unknown as InternalGlobal;\n"],"names":[],"mappings":";;AAiBA;;AA2CA;AACO,MAAM,UAAA,GAAa,UAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/escapeStringForRegex.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/escapeStringForRegex.js new file mode 100644 index 0000000..1a943da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/escapeStringForRegex.js @@ -0,0 +1,39 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +// Based on https://github.com/sindresorhus/escape-string-regexp but with modifications to: +// a) reduce the size by skipping the runtime type - checking +// b) ensure it gets down - compiled for old versions of Node(the published package only supports Node 14+). +// +// MIT License +// +// Copyright (c) Sindre Sorhus (https://sindresorhus.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +// documentation files(the "Software"), to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and +// to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of +// the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. + +/** + * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to + * `new RegExp()`. + * + * @param regexString The string to escape + * @returns An version of the string with all special regex characters escaped + */ +function escapeStringForRegex(regexString) { + // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems + // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20. + return regexString.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d'); +} + +exports.escapeStringForRegex = escapeStringForRegex; +//# sourceMappingURL=escapeStringForRegex.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/escapeStringForRegex.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/escapeStringForRegex.js.map new file mode 100644 index 0000000..4092dc2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/escapeStringForRegex.js.map @@ -0,0 +1 @@ +{"version":3,"file":"escapeStringForRegex.js","sources":["../../../src/vendor/escapeStringForRegex.ts"],"sourcesContent":["// Based on https://github.com/sindresorhus/escape-string-regexp but with modifications to:\n// a) reduce the size by skipping the runtime type - checking\n// b) ensure it gets down - compiled for old versions of Node(the published package only supports Node 14+).\n//\n// MIT License\n//\n// Copyright (c) Sindre Sorhus (https://sindresorhus.com)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n// documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation\n// the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and\n// to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n// the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n// THE WARRANTIES OF MERCHANTABILITY, 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 LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,WAAW,EAAkB;AAClE;AACA;AACA,EAAE,OAAO,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AAClF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/getIpAddress.js b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/getIpAddress.js new file mode 100644 index 0000000..348cafb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/getIpAddress.js @@ -0,0 +1,137 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + +// Vendored / modified from @sergiodxa/remix-utils + +// https://github.com/sergiodxa/remix-utils/blob/02af80e12829a53696bfa8f3c2363975cf59f55e/src/server/get-client-ip-address.ts +// MIT License + +// Copyright (c) 2021 Sergio Xalambrí + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// The headers to check, in priority order +const ipHeaderNames = [ + 'X-Client-IP', + 'X-Forwarded-For', + 'Fly-Client-IP', + 'CF-Connecting-IP', + 'Fastly-Client-Ip', + 'True-Client-Ip', + 'X-Real-IP', + 'X-Cluster-Client-IP', + 'X-Forwarded', + 'Forwarded-For', + 'Forwarded', + 'X-Vercel-Forwarded-For', +]; + +/** + * Get the IP address of the client sending a request. + * + * It receives a Request headers object and use it to get the + * IP address from one of the following headers in order. + * + * If the IP address is valid, it will be returned. Otherwise, null will be + * returned. + * + * If the header values contains more than one IP address, the first valid one + * will be returned. + */ +function getClientIPAddress(headers) { + // Build a map of lowercase header names to their values for case-insensitive lookup + // This is needed because headers from different sources may have different casings + const lowerCaseHeaders = {}; + + for (const key of Object.keys(headers)) { + lowerCaseHeaders[key.toLowerCase()] = headers[key]; + } + + // This will end up being Array because of the various possible values a header + // can take + const headerValues = ipHeaderNames.map((headerName) => { + const rawValue = lowerCaseHeaders[headerName.toLowerCase()]; + const value = Array.isArray(rawValue) ? rawValue.join(';') : rawValue; + + if (headerName === 'Forwarded') { + return parseForwardedHeader(value); + } + + return value?.split(',').map((v) => v.trim()); + }); + + // Flatten the array and filter out any falsy entries + const flattenedHeaderValues = headerValues.reduce((acc, val) => { + if (!val) { + return acc; + } + + return acc.concat(val); + }, []); + + // Find the first value which is a valid IP address, if any + const ipAddress = flattenedHeaderValues.find(ip => ip !== null && isIP(ip)); + + return ipAddress || null; +} + +function parseForwardedHeader(value) { + if (!value) { + return null; + } + + for (const part of value.split(';')) { + if (part.startsWith('for=')) { + return part.slice(4); + } + } + + return null; +} + +// +/** + * Custom method instead of importing this from `net` package, as this only exists in node + * Accepts: + * 127.0.0.1 + * 192.168.1.1 + * 192.168.1.255 + * 255.255.255.255 + * 10.1.1.1 + * 0.0.0.0 + * 2b01:cb19:8350:ed00:d0dd:fa5b:de31:8be5 + * + * Rejects: + * 1.1.1.01 + * 30.168.1.255.1 + * 127.1 + * 192.168.1.256 + * -1.2.3.4 + * 1.1.1.1. + * 3...3 + * 192.168.1.099 + */ +function isIP(str) { + const regex = + /(?:^(?: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,})?$)/; + return regex.test(str); +} + +exports.getClientIPAddress = getClientIPAddress; +exports.ipHeaderNames = ipHeaderNames; +//# sourceMappingURL=getIpAddress.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/getIpAddress.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/getIpAddress.js.map new file mode 100644 index 0000000..df97818 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/cjs/vendor/getIpAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getIpAddress.js","sources":["../../../src/vendor/getIpAddress.ts"],"sourcesContent":["// 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\nexport const 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 */\nexport function getClientIPAddress(headers: { [key: string]: string | string[] | undefined }): string | null {\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: { [key: string]: string | string[] | undefined } = {};\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: string) => {\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: string) => v.trim());\n });\n\n // Flatten the array and filter out any falsy entries\n const flattenedHeaderValues = headerValues.reduce((acc: string[], 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: string | null | undefined): string | null {\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: string): boolean {\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"],"names":[],"mappings":";;AAAA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACO,MAAM,gBAAgB;AAC7B,EAAE,aAAa;AACf,EAAE,iBAAiB;AACnB,EAAE,eAAe;AACjB,EAAE,kBAAkB;AACpB,EAAE,kBAAkB;AACpB,EAAE,gBAAgB;AAClB,EAAE,WAAW;AACb,EAAE,qBAAqB;AACvB,EAAE,aAAa;AACf,EAAE,eAAe;AACjB,EAAE,WAAW;AACb,EAAE,wBAAwB;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,OAAO,EAAmE;AAC7G;AACA;AACA,EAAE,MAAM,gBAAgB,GAAqD,EAAE;;AAE/E,EAAE,KAAK,MAAM,GAAA,IAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC1C,IAAI,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA,GAAI,OAAO,CAAC,GAAG,CAAC;AACtD,EAAE;;AAEF;AACA;AACA,EAAE,MAAM,YAAA,GAAe,aAAa,CAAC,GAAG,CAAC,CAAC,UAAU,KAAa;AACjE,IAAI,MAAM,QAAA,GAAW,gBAAgB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAC/D,IAAI,MAAM,KAAA,GAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAA,GAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAA,GAAI,QAAQ;;AAEzE,IAAI,IAAI,UAAA,KAAe,WAAW,EAAE;AACpC,MAAM,OAAO,oBAAoB,CAAC,KAAK,CAAC;AACxC,IAAI;;AAEJ,IAAI,OAAO,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAa,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,EAAE,CAAC,CAAC;;AAEJ;AACA,EAAE,MAAM,qBAAA,GAAwB,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAY,GAAG,KAAK;AAC5E,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,OAAO,GAAG;AAChB,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1B,EAAE,CAAC,EAAE,EAAE,CAAC;;AAER;AACA,EAAE,MAAM,SAAA,GAAY,qBAAqB,CAAC,IAAI,CAAC,EAAA,IAAM,EAAA,KAAO,IAAA,IAAQ,IAAI,CAAC,EAAE,CAAC,CAAC;;AAE7E,EAAE,OAAO,SAAA,IAAa,IAAI;AAC1B;;AAEA,SAAS,oBAAoB,CAAC,KAAK,EAA4C;AAC/E,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF,EAAE,KAAK,MAAM,IAAA,IAAQ,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACvC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACjC,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1B,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,GAAG,EAAmB;AACpC,EAAE,MAAM,KAAA;AACR,IAAI,muCAAmuC;AACvuC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/api.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/api.js new file mode 100644 index 0000000..507c6c2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/api.js @@ -0,0 +1,84 @@ +import { makeDsn, dsnToString } from './utils/dsn.js'; + +const SENTRY_API_VERSION = '7'; + +/** Returns the prefix to construct Sentry ingestion API endpoints. */ +function getBaseApiEndpoint(dsn) { + const protocol = dsn.protocol ? `${dsn.protocol}:` : ''; + const port = dsn.port ? `:${dsn.port}` : ''; + return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`; +} + +/** Returns the ingest API endpoint for target. */ +function _getIngestEndpoint(dsn) { + return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`; +} + +/** Returns a URL-encoded string with auth config suitable for a query string. */ +function _encodedAuth(dsn, sdkInfo) { + const params = { + sentry_version: SENTRY_API_VERSION, + }; + + if (dsn.publicKey) { + // We send only the minimum set of required information. See + // https://github.com/getsentry/sentry-javascript/issues/2572. + params.sentry_key = dsn.publicKey; + } + + if (sdkInfo) { + params.sentry_client = `${sdkInfo.name}/${sdkInfo.version}`; + } + + return new URLSearchParams(params).toString(); +} + +/** + * Returns the envelope endpoint URL with auth in the query string. + * + * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests. + */ +function getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnel, sdkInfo) { + return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`; +} + +/** Returns the url to the report dialog endpoint. */ +function getReportDialogEndpoint(dsnLike, dialogOptions) { + const dsn = makeDsn(dsnLike); + if (!dsn) { + return ''; + } + + const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`; + + let encodedOptions = `dsn=${dsnToString(dsn)}`; + for (const key in dialogOptions) { + if (key === 'dsn') { + continue; + } + + if (key === 'onClose') { + continue; + } + + if (key === 'user') { + const user = dialogOptions.user; + if (!user) { + continue; + } + if (user.name) { + encodedOptions += `&name=${encodeURIComponent(user.name)}`; + } + if (user.email) { + encodedOptions += `&email=${encodeURIComponent(user.email)}`; + } + } else { + encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`; + } + } + + return `${endpoint}?${encodedOptions}`; +} + +export { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint }; +//# sourceMappingURL=api.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/api.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/api.js.map new file mode 100644 index 0000000..5a0da84 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"api.js","sources":["../../src/api.ts"],"sourcesContent":["import type { ReportDialogOptions } from './report-dialog';\nimport type { DsnComponents, DsnLike } from './types-hoist/dsn';\nimport type { SdkInfo } from './types-hoist/sdkinfo';\nimport { dsnToString, makeDsn } from './utils/dsn';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\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: DsnComponents): string {\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: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n const params: Record = {\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 */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string, sdkInfo?: SdkInfo): string {\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(dsnLike: DsnLike, dialogOptions: ReportDialogOptions): string {\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] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/index.js new file mode 100644 index 0000000..e25ab9e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/index.js @@ -0,0 +1,32 @@ +import { getMainCarrier, getSentryCarrier } from '../carrier.js'; +import { getStackAsyncContextStrategy } from './stackStrategy.js'; + +/** + * @private Private API with no semver guarantees! + * + * Sets the global async context strategy + */ +function setAsyncContextStrategy(strategy) { + // Get main carrier (global for every environment) + const registry = getMainCarrier(); + const sentry = getSentryCarrier(registry); + sentry.acs = strategy; +} + +/** + * Get the current async context strategy. + * If none has been setup, the default will be used. + */ +function getAsyncContextStrategy(carrier) { + const sentry = getSentryCarrier(carrier); + + if (sentry.acs) { + return sentry.acs; + } + + // Otherwise, use the default one (stack) + return getStackAsyncContextStrategy(); +} + +export { getAsyncContextStrategy, setAsyncContextStrategy }; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/index.js.map new file mode 100644 index 0000000..6ee5698 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../src/asyncContext/index.ts"],"sourcesContent":["import type { Carrier } from './../carrier';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport { getStackAsyncContextStrategy } from './stackStrategy';\nimport type { AsyncContextStrategy } from './types';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\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 */\nexport function getAsyncContextStrategy(carrier: Carrier): AsyncContextStrategy {\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"],"names":[],"mappings":";;;AAKA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,QAAQ,EAA0C;AAC1F;AACA,EAAE,MAAM,QAAA,GAAW,cAAc,EAAE;AACnC,EAAE,MAAM,MAAA,GAAS,gBAAgB,CAAC,QAAQ,CAAC;AAC3C,EAAE,MAAM,CAAC,GAAA,GAAM,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,OAAO,EAAiC;AAChF,EAAE,MAAM,MAAA,GAAS,gBAAgB,CAAC,OAAO,CAAC;;AAE1C,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE;AAClB,IAAI,OAAO,MAAM,CAAC,GAAG;AACrB,EAAE;;AAEF;AACA,EAAE,OAAO,4BAA4B,EAAE;AACvC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js new file mode 100644 index 0000000..061539d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js @@ -0,0 +1,159 @@ +import { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes.js'; +import { Scope } from '../scope.js'; +import { isThenable } from '../utils/is.js'; +import { getMainCarrier, getSentryCarrier } from '../carrier.js'; + +/** + * This is an object that holds a stack of scopes. + */ +class AsyncContextStack { + + constructor(scope, isolationScope) { + let assignedScope; + if (!scope) { + assignedScope = new Scope(); + } else { + assignedScope = scope; + } + + let assignedIsolationScope; + if (!isolationScope) { + assignedIsolationScope = new Scope(); + } else { + assignedIsolationScope = isolationScope; + } + + // scope stack for domains or the process + this._stack = [{ scope: assignedScope }]; + this._isolationScope = assignedIsolationScope; + } + + /** + * Fork a scope for the stack. + */ + withScope(callback) { + const scope = this._pushScope(); + + let maybePromiseResult; + try { + maybePromiseResult = callback(scope); + } catch (e) { + this._popScope(); + throw e; + } + + if (isThenable(maybePromiseResult)) { + // @ts-expect-error - isThenable returns the wrong type + return maybePromiseResult.then( + res => { + this._popScope(); + return res; + }, + e => { + this._popScope(); + throw e; + }, + ); + } + + this._popScope(); + return maybePromiseResult; + } + + /** + * Get the client of the stack. + */ + getClient() { + return this.getStackTop().client ; + } + + /** + * Returns the scope of the top stack. + */ + getScope() { + return this.getStackTop().scope; + } + + /** + * Get the isolation scope for the stack. + */ + getIsolationScope() { + return this._isolationScope; + } + + /** + * Returns the topmost scope layer in the order domain > local > process. + */ + getStackTop() { + return this._stack[this._stack.length - 1] ; + } + + /** + * Push a scope to the stack. + */ + _pushScope() { + // We want to clone the content of prev scope + const scope = this.getScope().clone(); + this._stack.push({ + client: this.getClient(), + scope, + }); + return scope; + } + + /** + * Pop a scope from the stack. + */ + _popScope() { + if (this._stack.length <= 1) return false; + return !!this._stack.pop(); + } +} + +/** + * Get the global async context stack. + * This will be removed during the v8 cycle and is only here to make migration easier. + */ +function getAsyncContextStack() { + const registry = getMainCarrier(); + const sentry = getSentryCarrier(registry); + + return (sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope())); +} + +function withScope(callback) { + return getAsyncContextStack().withScope(callback); +} + +function withSetScope(scope, callback) { + const stack = getAsyncContextStack(); + return stack.withScope(() => { + stack.getStackTop().scope = scope; + return callback(scope); + }); +} + +function withIsolationScope(callback) { + return getAsyncContextStack().withScope(() => { + return callback(getAsyncContextStack().getIsolationScope()); + }); +} + +/** + * Get the stack-based async context strategy. + */ +function getStackAsyncContextStrategy() { + return { + withIsolationScope, + withScope, + withSetScope, + withSetIsolationScope: (_isolationScope, callback) => { + return withIsolationScope(callback); + }, + getCurrentScope: () => getAsyncContextStack().getScope(), + getIsolationScope: () => getAsyncContextStack().getIsolationScope(), + }; +} + +export { AsyncContextStack, getStackAsyncContextStrategy }; +//# sourceMappingURL=stackStrategy.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js.map new file mode 100644 index 0000000..cbfdad5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stackStrategy.js","sources":["../../../src/asyncContext/stackStrategy.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes';\nimport { Scope } from '../scope';\nimport { isThenable } from '../utils/is';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport type { AsyncContextStrategy } from './types';\n\ninterface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * This is an object that holds a stack of scopes.\n */\nexport class AsyncContextStack {\n private readonly _stack: [Layer, ...Layer[]];\n private _isolationScope: Scope;\n\n public constructor(scope?: Scope, isolationScope?: Scope) {\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 public withScope(callback: (scope: Scope) => T): T {\n const scope = this._pushScope();\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n this._popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n // @ts-expect-error - isThenable returns the wrong type\n return maybePromiseResult.then(\n res => {\n this._popScope();\n return res;\n },\n e => {\n this._popScope();\n throw e;\n },\n );\n }\n\n this._popScope();\n return maybePromiseResult;\n }\n\n /**\n * Get the client of the stack.\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /**\n * Returns the scope of the top stack.\n */\n public getScope(): Scope {\n return this.getStackTop().scope;\n }\n\n /**\n * Get the isolation scope for the stack.\n */\n public getIsolationScope(): Scope {\n return this._isolationScope;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1] as Layer;\n }\n\n /**\n * Push a scope to the stack.\n */\n private _pushScope(): Scope {\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 private _popScope(): boolean {\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(): AsyncContextStack {\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: (scope: Scope) => T): T {\n return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope(scope: Scope, callback: (scope: Scope) => T): T {\n const stack = getAsyncContextStack();\n return stack.withScope(() => {\n stack.getStackTop().scope = scope;\n return callback(scope);\n });\n}\n\nfunction withIsolationScope(callback: (isolationScope: Scope) => T): T {\n return getAsyncContextStack().withScope(() => {\n return callback(getAsyncContextStack().getIsolationScope());\n });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nexport function getStackAsyncContextStrategy(): AsyncContextStrategy {\n return {\n withIsolationScope,\n withScope,\n withSetScope,\n withSetIsolationScope: (_isolationScope: Scope, callback: (isolationScope: Scope) => T) => {\n return withIsolationScope(callback);\n },\n getCurrentScope: () => getAsyncContextStack().getScope(),\n getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n };\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/attributes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/attributes.js new file mode 100644 index 0000000..bf0eed3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/attributes.js @@ -0,0 +1,114 @@ +/** + * Type-guard: The attribute object has the shape the official attribute object (value, type, unit). + * https://develop.sentry.dev/sdk/telemetry/scopes/#setting-attributes + */ +function isAttributeObject(maybeObj) { + return ( + typeof maybeObj === 'object' && + maybeObj != null && + !Array.isArray(maybeObj) && + Object.keys(maybeObj).includes('value') + ); +} + +/** + * Converts an attribute value to a typed attribute value. + * + * For now, we intentionally only support primitive values and attribute objects with primitive values. + * If @param useFallback is true, we stringify non-primitive values to a string attribute value. Otherwise + * we return `undefined` for unsupported values. + * + * @param value - The value of the passed attribute. + * @param useFallback - If true, unsupported values will be stringified to a string attribute value. + * Defaults to false. In this case, `undefined` is returned for unsupported values. + * @returns The typed attribute. + */ +function attributeValueToTypedAttributeValue( + rawValue, + useFallback, +) { + const { value, unit } = isAttributeObject(rawValue) ? rawValue : { value: rawValue, unit: undefined }; + const attributeValue = getTypedAttributeValue(value); + const checkedUnit = unit && typeof unit === 'string' ? { unit } : {}; + if (attributeValue) { + return { ...attributeValue, ...checkedUnit }; + } + + if (!useFallback || (useFallback === 'skip-undefined' && value === undefined)) { + return; + } + + // Fallback: stringify the value + // TODO(v11): be smarter here and use String constructor if stringify fails + // (this is a breaking change for already existing attribute values) + let stringValue = ''; + try { + stringValue = JSON.stringify(value) ?? ''; + } catch { + // Do nothing + } + return { + value: stringValue, + type: 'string', + ...checkedUnit, + }; +} + +/** + * Serializes raw attributes to typed attributes as expected in our envelopes. + * + * @param attributes The raw attributes to serialize. + * @param fallback If true, unsupported values will be stringified to a string attribute value. + * Defaults to false. In this case, `undefined` is returned for unsupported values. + * + * @returns The serialized attributes. + */ +function serializeAttributes( + attributes, + fallback = false, +) { + const serializedAttributes = {}; + for (const [key, value] of Object.entries(attributes ?? {})) { + const typedValue = attributeValueToTypedAttributeValue(value, fallback); + if (typedValue) { + serializedAttributes[key] = typedValue; + } + } + return serializedAttributes; +} + +/** + * NOTE: We intentionally do not return anything for non-primitive values: + * - array support will come in the future but if we stringify arrays now, + * sending arrays (unstringified) later will be a subtle breaking change. + * - Objects are not supported yet and product support is still TBD. + * - We still keep the type signature for TypedAttributeValue wider to avoid a + * breaking change once we add support for non-primitive values. + * - Once we go back to supporting arrays and stringifying all other values, + * we already implemented the serialization logic here: + * https://github.com/getsentry/sentry-javascript/pull/18165 + */ +function getTypedAttributeValue(value) { + const primitiveType = + typeof value === 'string' + ? 'string' + : typeof value === 'boolean' + ? 'boolean' + : typeof value === 'number' && !Number.isNaN(value) + ? Number.isInteger(value) + ? 'integer' + : 'double' + : null; + if (primitiveType) { + // @ts-expect-error - TS complains because {@link TypedAttributeValue} is strictly typed to + // avoid setting the wrong `type` on the attribute value. + // In this case, getPrimitiveType already does the check but TS doesn't know that. + // The "clean" alternative is to return an object per `typeof value` case + // but that would require more bundle size + // Therefore, we ignore it. + return { value, type: primitiveType }; + } +} + +export { attributeValueToTypedAttributeValue, isAttributeObject, serializeAttributes }; +//# sourceMappingURL=attributes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/attributes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/attributes.js.map new file mode 100644 index 0000000..9aff3f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributes.js","sources":["../../src/attributes.ts"],"sourcesContent":["import type { DurationUnit, FractionUnit, InformationUnit } from './types-hoist/measurement';\n\nexport type RawAttributes = T & ValidatedAttributes;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type RawAttribute = T extends { value: any } | { unit: any } ? AttributeObject : T;\n\nexport type Attributes = Record;\n\nexport type AttributeValueType = string | number | boolean | Array | Array | Array;\n\ntype AttributeTypeMap = {\n string: string;\n integer: number;\n double: number;\n boolean: boolean;\n 'string[]': Array;\n 'integer[]': Array;\n 'double[]': Array;\n 'boolean[]': Array;\n};\n\n/* Generates a type from the AttributeTypeMap like:\n | { value: string; type: 'string' }\n | { value: number; type: 'integer' }\n | { value: number; type: 'double' }\n */\ntype AttributeUnion = {\n [K in keyof AttributeTypeMap]: {\n value: AttributeTypeMap[K];\n type: K;\n };\n}[keyof AttributeTypeMap];\n\nexport type TypedAttributeValue = AttributeUnion & { unit?: AttributeUnit };\n\nexport type AttributeObject = {\n value: unknown;\n unit?: AttributeUnit;\n};\n\n// Unfortunately, we loose type safety if we did something like Exclude\n// so therefore we unionize between the three supported unit categories.\ntype AttributeUnit = DurationUnit | InformationUnit | FractionUnit;\n\n/* If an attribute has either a 'value' or 'unit' property, we use the ValidAttributeObject type. */\nexport type ValidatedAttributes = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [K in keyof T]: T[K] extends { value: any } | { unit: any } ? AttributeObject : unknown;\n};\n\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 */\nexport function isAttributeObject(maybeObj: unknown): maybeObj is AttributeObject {\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 */\nexport function attributeValueToTypedAttributeValue(\n rawValue: unknown,\n useFallback?: boolean | 'skip-undefined',\n): TypedAttributeValue | void {\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 */\nexport function serializeAttributes(\n attributes: RawAttributes | undefined,\n fallback: boolean | 'skip-undefined' = false,\n): Attributes {\n const serializedAttributes: Attributes = {};\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: unknown): TypedAttributeValue | void {\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"],"names":[],"mappings":"AAkDA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,QAAQ,EAAwC;AAClF,EAAE;AACF,IAAI,OAAO,QAAA,KAAa,QAAA;AACxB,IAAI,QAAA,IAAY,IAAA;AAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAA;AAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mCAAmC;AACnD,EAAE,QAAQ;AACV,EAAE,WAAW;AACb,EAA8B;AAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,MAAK,GAAI,iBAAiB,CAAC,QAAQ,CAAA,GAAI,QAAA,GAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAA,EAAW;AACvG,EAAE,MAAM,cAAA,GAAiB,sBAAsB,CAAC,KAAK,CAAC;AACtD,EAAE,MAAM,WAAA,GAAc,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,GAAW,EAAE,IAAA,EAAK,GAAI,EAAE;AACtE,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,aAAa;AAChD,EAAE;;AAEF,EAAE,IAAI,CAAC,WAAA,KAAgB,WAAA,KAAgB,gBAAA,IAAoB,KAAA,KAAU,SAAS,CAAC,EAAE;AACjF,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,EAAE,IAAI,WAAA,GAAc,EAAE;AACtB,EAAE,IAAI;AACN,IAAI,WAAA,GAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA,IAAK,EAAE;AAC7C,EAAE,EAAE,MAAM;AACV;AACA,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,GAAG,WAAW;AAClB,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB;AACnC,EAAE,UAAU;AACZ,EAAE,QAAQ,GAA+B,KAAK;AAC9C,EAAc;AACd,EAAE,MAAM,oBAAoB,GAAe,EAAE;AAC7C,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAA,IAAK,MAAM,CAAC,OAAO,CAAC,UAAA,IAAc,EAAE,CAAC,EAAE;AAC/D,IAAI,MAAM,aAAa,mCAAmC,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC3E,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,oBAAoB,CAAC,GAAG,CAAA,GAAI,UAAU;AAC5C,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,oBAAoB;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAuC;AAC5E,EAAE,MAAM,aAAA;AACR,IAAI,OAAO,UAAU;AACrB,QAAQ;AACR,QAAQ,OAAO,KAAA,KAAU;AACzB,UAAU;AACV,UAAU,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;AAC1D,YAAY,MAAM,CAAC,SAAS,CAAC,KAAK;AAClC,cAAc;AACd,cAAc;AACd,YAAY,IAAI;AAChB,EAAE,IAAI,aAAa,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe;AACzC,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/breadcrumbs.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/breadcrumbs.js new file mode 100644 index 0000000..458e085 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/breadcrumbs.js @@ -0,0 +1,43 @@ +import { getClient, getIsolationScope } from './currentScopes.js'; +import { consoleSandbox } from './utils/debug-logger.js'; +import { dateTimestampInSeconds } from './utils/time.js'; + +/** + * Default maximum number of breadcrumbs added to an event. Can be overwritten + * with {@link Options.maxBreadcrumbs}. + */ +const DEFAULT_BREADCRUMBS = 100; + +/** + * Records a new breadcrumb which will be attached to future events. + * + * Breadcrumbs will be added to subsequent events to provide more context on + * user's actions prior to an error or crash. + */ +function addBreadcrumb(breadcrumb, hint) { + const client = getClient(); + const isolationScope = getIsolationScope(); + + if (!client) return; + + const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions(); + + if (maxBreadcrumbs <= 0) return; + + const timestamp = dateTimestampInSeconds(); + const mergedBreadcrumb = { timestamp, ...breadcrumb }; + const finalBreadcrumb = beforeBreadcrumb + ? consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) + : mergedBreadcrumb; + + if (finalBreadcrumb === null) return; + + if (client.emit) { + client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint); + } + + isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs); +} + +export { addBreadcrumb }; +//# sourceMappingURL=breadcrumbs.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/breadcrumbs.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/breadcrumbs.js.map new file mode 100644 index 0000000..1d942a6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/breadcrumbs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"breadcrumbs.js","sources":["../../src/breadcrumbs.ts"],"sourcesContent":["import { getClient, getIsolationScope } from './currentScopes';\nimport type { Breadcrumb, BreadcrumbHint } from './types-hoist/breadcrumb';\nimport { consoleSandbox } from './utils/debug-logger';\nimport { dateTimestampInSeconds } from './utils/time';\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 */\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\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"],"names":[],"mappings":";;;;AAKA;AACA;AACA;AACA;AACA,MAAM,mBAAA,GAAsB,GAAG;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,UAAU,EAAc,IAAI,EAAyB;AACnF,EAAE,MAAM,MAAA,GAAS,SAAS,EAAE;AAC5B,EAAE,MAAM,cAAA,GAAiB,iBAAiB,EAAE;;AAE5C,EAAE,IAAI,CAAC,MAAM,EAAE;;AAEf,EAAE,MAAM,EAAE,gBAAA,GAAmB,IAAI,EAAE,cAAA,GAAiB,mBAAA,KAAwB,MAAM,CAAC,UAAU,EAAE;;AAE/F,EAAE,IAAI,cAAA,IAAkB,CAAC,EAAE;;AAE3B,EAAE,MAAM,SAAA,GAAY,sBAAsB,EAAE;AAC5C,EAAE,MAAM,mBAAmB,EAAE,SAAS,EAAE,GAAG,YAAY;AACvD,EAAE,MAAM,kBAAkB;AAC1B,MAAM,cAAc,CAAC,MAAM,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACnE,MAAM,gBAAgB;;AAEtB,EAAE,IAAI,eAAA,KAAoB,IAAI,EAAE;;AAEhC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,eAAe,EAAE,IAAI,CAAC;AAC7D,EAAE;;AAEF,EAAE,cAAc,CAAC,aAAa,CAAC,eAAe,EAAE,cAAc,CAAC;AAC/D;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/carrier.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/carrier.js new file mode 100644 index 0000000..51baf3e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/carrier.js @@ -0,0 +1,57 @@ +import { SDK_VERSION } from './utils/version.js'; +import { GLOBAL_OBJ } from './utils/worldwide.js'; + +/** + * An object that contains globally accessible properties and maintains a scope stack. + * @hidden + */ + +/** + * Returns the global shim registry. + * + * FIXME: This function is problematic, because despite always returning a valid Carrier, + * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check + * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there. + **/ +function getMainCarrier() { + // This ensures a Sentry carrier exists + getSentryCarrier(GLOBAL_OBJ); + return GLOBAL_OBJ; +} + +/** Will either get the existing sentry carrier, or create a new one. */ +function getSentryCarrier(carrier) { + const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {}); + + // For now: First SDK that sets the .version property wins + __SENTRY__.version = __SENTRY__.version || SDK_VERSION; + + // Intentionally populating and returning the version of "this" SDK instance + // rather than what's set in .version so that "this" SDK always gets its carrier + return (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {}); +} + +/** + * Returns a global singleton contained in the global `__SENTRY__[]` object. + * + * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory + * function and added to the `__SENTRY__` object. + * + * @param name name of the global singleton on __SENTRY__ + * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__` + * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value + * @returns the singleton + */ +function getGlobalSingleton( + name, + creator, + obj = GLOBAL_OBJ, +) { + const __SENTRY__ = (obj.__SENTRY__ = obj.__SENTRY__ || {}); + const carrier = (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {}); + // 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 + return carrier[name] || (carrier[name] = creator()); +} + +export { getGlobalSingleton, getMainCarrier, getSentryCarrier }; +//# sourceMappingURL=carrier.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/carrier.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/carrier.js.map new file mode 100644 index 0000000..11ca9f5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/carrier.js.map @@ -0,0 +1 @@ +{"version":3,"file":"carrier.js","sources":["../../src/carrier.ts"],"sourcesContent":["import type { AsyncContextStack } from './asyncContext/stackStrategy';\nimport type { AsyncContextStrategy } from './asyncContext/types';\nimport type { Client } from './client';\nimport type { Scope } from './scope';\nimport type { SerializedLog } from './types-hoist/log';\nimport type { SerializedMetric } from './types-hoist/metric';\nimport { SDK_VERSION } from './utils/version';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: VersionedCarrier;\n}\n\ntype VersionedCarrier = {\n version?: string;\n} & Record, SentryCarrier>;\n\nexport interface SentryCarrier {\n acs?: AsyncContextStrategy;\n stack?: AsyncContextStack;\n\n globalScope?: Scope;\n defaultIsolationScope?: Scope;\n defaultCurrentScope?: Scope;\n loggerSettings?: { enabled: boolean };\n /**\n * A map of Sentry clients to their log buffers.\n * This is used to store logs that are sent to Sentry.\n */\n clientToLogBufferMap?: WeakMap>;\n\n /**\n * A map of Sentry clients to their metric buffers.\n * This is used to store metrics that are sent to Sentry.\n */\n clientToMetricBufferMap?: WeakMap>;\n\n /** Overwrites TextEncoder used in `@sentry/core`, need for `react-native@0.73` and older */\n encodePolyfill?: (input: string) => Uint8Array;\n /** Overwrites TextDecoder used in `@sentry/core`, need for `react-native@0.73` and older */\n decodePolyfill?: (input: Uint8Array) => string;\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 **/\nexport function getMainCarrier(): Carrier {\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. */\nexport function getSentryCarrier(carrier: Carrier): SentryCarrier {\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 */\nexport function getGlobalSingleton(\n name: Prop,\n creator: () => NonNullable,\n obj = GLOBAL_OBJ,\n): NonNullable {\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"],"names":[],"mappings":";;;AASA;AACA;AACA;AACA;;AAmCA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,GAAY;AAC1C;AACA,EAAE,gBAAgB,CAAC,UAAU,CAAC;AAC9B,EAAE,OAAO,UAAU;AACnB;;AAEA;AACO,SAAS,gBAAgB,CAAC,OAAO,EAA0B;AAClE,EAAE,MAAM,UAAA,IAAc,OAAO,CAAC,UAAA,GAAa,OAAO,CAAC,UAAA,IAAc,EAAE,CAAC;;AAEpE;AACA,EAAE,UAAU,CAAC,OAAA,GAAU,UAAU,CAAC,OAAA,IAAW,WAAW;;AAExD;AACA;AACA,EAAE,QAAQ,UAAU,CAAC,WAAW,CAAA,GAAI,UAAU,CAAC,WAAW,CAAA,IAAK,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB;AAClC,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,GAAA,GAAM,UAAU;AAClB,EAAoC;AACpC,EAAE,MAAM,UAAA,IAAc,GAAG,CAAC,UAAA,GAAa,GAAG,CAAC,UAAA,IAAc,EAAE,CAAC;AAC5D,EAAE,MAAM,OAAA,IAAW,UAAU,CAAC,WAAW,CAAA,GAAI,UAAU,CAAC,WAAW,CAAA,IAAK,EAAE,CAAC;AAC3E;AACA,EAAE,OAAO,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,CAAA,GAAI,OAAO,EAAE,CAAC;AACrD;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/checkin.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/checkin.js new file mode 100644 index 0000000..cd972f2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/checkin.js @@ -0,0 +1,45 @@ +import { dsnToString } from './utils/dsn.js'; +import { createEnvelope } from './utils/envelope.js'; + +/** + * Create envelope from check in item. + */ +function createCheckInEnvelope( + checkIn, + dynamicSamplingContext, + metadata, + tunnel, + dsn, +) { + const headers = { + sent_at: new Date().toISOString(), + }; + + if (metadata?.sdk) { + headers.sdk = { + name: metadata.sdk.name, + version: metadata.sdk.version, + }; + } + + if (!!tunnel && !!dsn) { + headers.dsn = dsnToString(dsn); + } + + if (dynamicSamplingContext) { + headers.trace = dynamicSamplingContext ; + } + + const item = createCheckInEnvelopeItem(checkIn); + return createEnvelope(headers, [item]); +} + +function createCheckInEnvelopeItem(checkIn) { + const checkInHeaders = { + type: 'check_in', + }; + return [checkInHeaders, checkIn]; +} + +export { createCheckInEnvelope }; +//# sourceMappingURL=checkin.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/checkin.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/checkin.js.map new file mode 100644 index 0000000..c097e3d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/checkin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"checkin.js","sources":["../../src/checkin.ts"],"sourcesContent":["import type { SerializedCheckIn } from './types-hoist/checkin';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type { CheckInEnvelope, CheckInItem, DynamicSamplingContext } from './types-hoist/envelope';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport { dsnToString } from './utils/dsn';\nimport { createEnvelope } from './utils/envelope';\n\n/**\n * Create envelope from check in item.\n */\nexport function createCheckInEnvelope(\n checkIn: SerializedCheckIn,\n dynamicSamplingContext?: Partial,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): CheckInEnvelope {\n const headers: CheckInEnvelope[0] = {\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 as DynamicSamplingContext;\n }\n\n const item = createCheckInEnvelopeItem(checkIn);\n return createEnvelope(headers, [item]);\n}\n\nfunction createCheckInEnvelopeItem(checkIn: SerializedCheckIn): CheckInItem {\n const checkInHeaders: CheckInItem[0] = {\n type: 'check_in',\n };\n return [checkInHeaders, checkIn];\n}\n"],"names":[],"mappings":";;;AAOA;AACA;AACA;AACO,SAAS,qBAAqB;AACrC,EAAE,OAAO;AACT,EAAE,sBAAsB;AACxB,EAAE,QAAQ;AACV,EAAE,MAAM;AACR,EAAE,GAAG;AACL,EAAmB;AACnB,EAAE,MAAM,OAAO,GAAuB;AACtC,IAAI,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACrC,GAAG;;AAEH,EAAE,IAAI,QAAQ,EAAE,GAAG,EAAE;AACrB,IAAI,OAAO,CAAC,GAAA,GAAM;AAClB,MAAM,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI;AAC7B,MAAM,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO;AACnC,KAAK;AACL,EAAE;;AAEF,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE;AACzB,IAAI,OAAO,CAAC,GAAA,GAAM,WAAW,CAAC,GAAG,CAAC;AAClC,EAAE;;AAEF,EAAE,IAAI,sBAAsB,EAAE;AAC9B,IAAI,OAAO,CAAC,KAAA,GAAQ,sBAAA;AACpB,EAAE;;AAEF,EAAE,MAAM,IAAA,GAAO,yBAAyB,CAAC,OAAO,CAAC;AACjD,EAAE,OAAO,cAAc,CAAkB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACzD;;AAEA,SAAS,yBAAyB,CAAC,OAAO,EAAkC;AAC5E,EAAE,MAAM,cAAc,GAAmB;AACzC,IAAI,IAAI,EAAE,UAAU;AACpB,GAAG;AACH,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC;AAClC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/client.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/client.js new file mode 100644 index 0000000..bcc614a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/client.js @@ -0,0 +1,1156 @@ +import { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js'; +import { DEFAULT_ENVIRONMENT } from './constants.js'; +import { getTraceContextFromScope, getCurrentScope, getIsolationScope } from './currentScopes.js'; +import { DEBUG_BUILD } from './debug-build.js'; +import { createEventEnvelope, createSessionEnvelope } from './envelope.js'; +import { setupIntegration, afterSetupIntegrations, setupIntegrations } from './integration.js'; +import { _INTERNAL_flushLogsBuffer } from './logs/internal.js'; +import { _INTERNAL_flushMetricsBuffer } from './metrics/internal.js'; +import { updateSession } from './session.js'; +import { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext.js'; +import { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base.js'; +import { createClientReportEnvelope } from './utils/clientreport.js'; +import { debug } from './utils/debug-logger.js'; +import { makeDsn, dsnToString } from './utils/dsn.js'; +import { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils/envelope.js'; +import { getPossibleEventMessages } from './utils/eventUtils.js'; +import { isParameterizedString, isPrimitive, isThenable, isPlainObject } from './utils/is.js'; +import { merge } from './utils/merge.js'; +import { uuid4, checkOrSetAlreadyCaught } from './utils/misc.js'; +import { parseSampleRate } from './utils/parseSampleRate.js'; +import { prepareEvent } from './utils/prepareEvent.js'; +import { makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer.js'; +import { safeMathRandom } from './utils/randomSafeContext.js'; +import { shouldIgnoreSpan, reparentChildSpans } from './utils/should-ignore-span.js'; +import { showSpanDropWarning } from './utils/spanUtils.js'; +import { rejectedSyncPromise } from './utils/syncpromise.js'; +import { convertTransactionEventToSpanJson, convertSpanJsonToTransactionEvent } from './utils/transactionEvent.js'; + +/* eslint-disable max-lines */ + +const ALREADY_SEEN_ERROR = "Not capturing exception because it's already been captured."; +const MISSING_RELEASE_FOR_SESSION_ERROR = 'Discarded session because of missing or non-string release'; + +const INTERNAL_ERROR_SYMBOL = Symbol.for('SentryInternalError'); +const DO_NOT_SEND_EVENT_SYMBOL = Symbol.for('SentryDoNotSendEventError'); + +// Default interval for flushing logs and metrics (5 seconds) +const DEFAULT_FLUSH_INTERVAL = 5000; + +function _makeInternalError(message) { + return { + message, + [INTERNAL_ERROR_SYMBOL]: true, + }; +} + +function _makeDoNotSendEventError(message) { + return { + message, + [DO_NOT_SEND_EVENT_SYMBOL]: true, + }; +} + +function _isInternalError(error) { + return !!error && typeof error === 'object' && INTERNAL_ERROR_SYMBOL in error; +} + +function _isDoNotSendEventError(error) { + return !!error && typeof error === 'object' && DO_NOT_SEND_EVENT_SYMBOL in error; +} + +/** + * Sets up weight-based flushing for logs or metrics. + * This helper function encapsulates the common pattern of: + * 1. Tracking accumulated weight of items + * 2. Flushing when weight exceeds threshold (800KB) + * 3. Flushing after timeout period from the first item + * + * Uses closure variables to track weight and timeout state. + */ +function setupWeightBasedFlushing + +( + client, + afterCaptureHook, + flushHook, + estimateSizeFn, + flushFn, +) { + // Track weight and timeout in closure variables + let weight = 0; + let flushTimeout; + let isTimerActive = false; + + // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe + client.on(flushHook, () => { + weight = 0; + clearTimeout(flushTimeout); + isTimerActive = false; + }); + + // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe + client.on(afterCaptureHook, (item) => { + weight += estimateSizeFn(item); + + // We flush the buffer if it exceeds 0.8 MB + // The weight is a rough estimate, so we flush way before the payload gets too big. + if (weight >= 800000) { + flushFn(client); + } else if (!isTimerActive) { + // Only start timer if one isn't already running. + // This prevents flushing being delayed by items that arrive close to the timeout limit + // and thus resetting the flushing timeout and delaying items being flushed. + isTimerActive = true; + flushTimeout = setTimeout(() => { + flushFn(client); + // Note: isTimerActive is reset by the flushHook handler above, not here, + // to avoid race conditions when new items arrive during the flush. + }, DEFAULT_FLUSH_INTERVAL); + } + }); + + client.on('flush', () => { + flushFn(client); + }); +} + +/** + * Base implementation for all JavaScript SDK clients. + * + * Call the constructor with the corresponding options + * specific to the client subclass. To access these options later, use + * {@link Client.getOptions}. + * + * If a Dsn is specified in the options, it will be parsed and stored. Use + * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is + * invalid, the constructor will throw a {@link SentryException}. Note that + * without a valid Dsn, the SDK will not send any events to Sentry. + * + * Before sending an event, it is passed through + * {@link Client._prepareEvent} to add SDK information and scope data + * (breadcrumbs and context). To add more custom information, override this + * method and extend the resulting prepared event. + * + * To issue automatically created events (e.g. via instrumentation), use + * {@link Client.captureEvent}. It will prepare the event and pass it through + * the callback lifecycle. To issue auto-breadcrumbs, use + * {@link Client.addBreadcrumb}. + * + * @example + * class NodeClient extends Client { + * public constructor(options: NodeOptions) { + * super(options); + * } + * + * // ... + * } + */ +class Client { + /** Options passed to the SDK. */ + + /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */ + + /** Array of set up integrations. */ + + /** Number of calls being processed */ + + /** Holds flushable */ + + // eslint-disable-next-line @typescript-eslint/ban-types + + /** + * Initializes this client instance. + * + * @param options Options for the client. + */ + constructor(options) { + this._options = options; + this._integrations = {}; + this._numProcessing = 0; + this._outcomes = {}; + this._hooks = {}; + this._eventProcessors = []; + this._promiseBuffer = makePromiseBuffer(options.transportOptions?.bufferSize ?? DEFAULT_TRANSPORT_BUFFER_SIZE); + + if (options.dsn) { + this._dsn = makeDsn(options.dsn); + } else { + DEBUG_BUILD && debug.warn('No DSN provided, client will not send events.'); + } + + if (this._dsn) { + const url = getEnvelopeEndpointWithUrlEncodedAuth( + this._dsn, + options.tunnel, + options._metadata ? options._metadata.sdk : undefined, + ); + this._transport = options.transport({ + tunnel: this._options.tunnel, + recordDroppedEvent: this.recordDroppedEvent.bind(this), + ...options.transportOptions, + url, + }); + } + + // Backfill enableLogs option from _experiments.enableLogs + // TODO(v11): Remove or change default value + // eslint-disable-next-line deprecation/deprecation + this._options.enableLogs = this._options.enableLogs ?? this._options._experiments?.enableLogs; + + // Setup log flushing with weight and timeout tracking + if (this._options.enableLogs) { + setupWeightBasedFlushing(this, 'afterCaptureLog', 'flushLogs', estimateLogSizeInBytes, _INTERNAL_flushLogsBuffer); + } + + // todo(v11): Remove the experimental flag + // eslint-disable-next-line deprecation/deprecation + const enableMetrics = this._options.enableMetrics ?? this._options._experiments?.enableMetrics ?? true; + + // Setup metric flushing with weight and timeout tracking + if (enableMetrics) { + setupWeightBasedFlushing( + this, + 'afterCaptureMetric', + 'flushMetrics', + estimateMetricSizeInBytes, + _INTERNAL_flushMetricsBuffer, + ); + } + } + + /** + * Captures an exception event and sends it to Sentry. + * + * Unlike `captureException` exported from every SDK, this method requires that you pass it the current scope. + */ + captureException(exception, hint, scope) { + const eventId = uuid4(); + + // ensure we haven't captured this very object before + if (checkOrSetAlreadyCaught(exception)) { + DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR); + return eventId; + } + + const hintWithEventId = { + event_id: eventId, + ...hint, + }; + + this._process( + () => + this.eventFromException(exception, hintWithEventId) + .then(event => this._captureEvent(event, hintWithEventId, scope)) + .then(res => res), + 'error', + ); + + return hintWithEventId.event_id; + } + + /** + * Captures a message event and sends it to Sentry. + * + * Unlike `captureMessage` exported from every SDK, this method requires that you pass it the current scope. + */ + captureMessage( + message, + level, + hint, + currentScope, + ) { + const hintWithEventId = { + event_id: uuid4(), + ...hint, + }; + + const eventMessage = isParameterizedString(message) ? message : String(message); + const isMessage = isPrimitive(message); + const promisedEvent = isMessage + ? this.eventFromMessage(eventMessage, level, hintWithEventId) + : this.eventFromException(message, hintWithEventId); + + this._process( + () => promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)), + isMessage ? 'unknown' : 'error', + ); + + return hintWithEventId.event_id; + } + + /** + * Captures a manually created event and sends it to Sentry. + * + * Unlike `captureEvent` exported from every SDK, this method requires that you pass it the current scope. + */ + captureEvent(event, hint, currentScope) { + const eventId = uuid4(); + + // ensure we haven't captured this very object before + if (hint?.originalException && checkOrSetAlreadyCaught(hint.originalException)) { + DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR); + return eventId; + } + + const hintWithEventId = { + event_id: eventId, + ...hint, + }; + + const sdkProcessingMetadata = event.sdkProcessingMetadata || {}; + const capturedSpanScope = sdkProcessingMetadata.capturedSpanScope; + const capturedSpanIsolationScope = sdkProcessingMetadata.capturedSpanIsolationScope; + const dataCategory = getDataCategoryByType(event.type); + + this._process( + () => this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope, capturedSpanIsolationScope), + dataCategory, + ); + + return hintWithEventId.event_id; + } + + /** + * Captures a session. + */ + captureSession(session) { + this.sendSession(session); + // After sending, we set init false to indicate it's not the first occurrence + updateSession(session, { init: false }); + } + + /** + * Create a cron monitor check in and send it to Sentry. This method is not available on all clients. + * + * @param checkIn An object that describes a check in. + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + * @param scope An optional scope containing event metadata. + * @returns A string representing the id of the check in. + */ + + /** + * Get the current Dsn. + */ + getDsn() { + return this._dsn; + } + + /** + * Get the current options. + */ + getOptions() { + return this._options; + } + + /** + * Get the SDK metadata. + * @see SdkMetadata + */ + getSdkMetadata() { + return this._options._metadata; + } + + /** + * Returns the transport that is used by the client. + * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent. + */ + getTransport() { + return this._transport; + } + + /** + * Wait for all events to be sent or the timeout to expire, whichever comes first. + * + * @param timeout Maximum time in ms the client should wait for events to be flushed. Omitting this parameter will + * cause the client to wait until all events are sent before resolving the promise. + * @returns A promise that will resolve with `true` if all events are sent before the timeout, or `false` if there are + * still events in the queue when the timeout is reached. + */ + // @ts-expect-error - PromiseLike is a subset of Promise + async flush(timeout) { + const transport = this._transport; + if (!transport) { + return true; + } + + this.emit('flush'); + + const clientFinished = await this._isClientDoneProcessing(timeout); + const transportFlushed = await transport.flush(timeout); + + return clientFinished && transportFlushed; + } + + /** + * Flush the event queue and set the client to `enabled = false`. See {@link Client.flush}. + * + * @param {number} timeout Maximum time in ms the client should wait before shutting down. Omitting this parameter will cause + * the client to wait until all events are sent before disabling itself. + * @returns {Promise} A promise which resolves to `true` if the flush completes successfully before the timeout, or `false` if + * it doesn't. + */ + // @ts-expect-error - PromiseLike is a subset of Promise + async close(timeout) { + const result = await this.flush(timeout); + this.getOptions().enabled = false; + this.emit('close'); + return result; + } + + /** + * Get all installed event processors. + */ + getEventProcessors() { + return this._eventProcessors; + } + + /** + * Adds an event processor that applies to any event processed by this client. + */ + addEventProcessor(eventProcessor) { + this._eventProcessors.push(eventProcessor); + } + + /** + * Initialize this client. + * Call this after the client was set on a scope. + */ + init() { + if ( + this._isEnabled() || + // Force integrations to be setup even if no DSN was set when we have + // Spotlight enabled. This is particularly important for browser as we + // don't support the `spotlight` option there and rely on the users + // adding the `spotlightBrowserIntegration()` to their integrations which + // wouldn't get initialized with the check below when there's no DSN set. + this._options.integrations.some(({ name }) => name.startsWith('Spotlight')) + ) { + this._setupIntegrations(); + } + } + + /** + * Gets an installed integration by its name. + * + * @returns {Integration|undefined} The installed integration or `undefined` if no integration with that `name` was installed. + */ + getIntegrationByName(integrationName) { + return this._integrations[integrationName] ; + } + + /** + * Add an integration to the client. + * This can be used to e.g. lazy load integrations. + * In most cases, this should not be necessary, + * and you're better off just passing the integrations via `integrations: []` at initialization time. + * However, if you find the need to conditionally load & add an integration, you can use `addIntegration` to do so. + */ + addIntegration(integration) { + const isAlreadyInstalled = this._integrations[integration.name]; + + // This hook takes care of only installing if not already installed + setupIntegration(this, integration, this._integrations); + // Here we need to check manually to make sure to not run this multiple times + if (!isAlreadyInstalled) { + afterSetupIntegrations(this, [integration]); + } + } + + /** + * Send a fully prepared event to Sentry. + */ + sendEvent(event, hint = {}) { + this.emit('beforeSendEvent', event, hint); + + let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel); + + for (const attachment of hint.attachments || []) { + env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment)); + } + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.sendEnvelope(env).then(sendResponse => this.emit('afterSendEvent', event, sendResponse)); + } + + /** + * Send a session or session aggregrates to Sentry. + */ + sendSession(session) { + // Backfill release and environment on session + const { release: clientReleaseOption, environment: clientEnvironmentOption = DEFAULT_ENVIRONMENT } = this._options; + if ('aggregates' in session) { + const sessionAttrs = session.attrs || {}; + if (!sessionAttrs.release && !clientReleaseOption) { + DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR); + return; + } + sessionAttrs.release = sessionAttrs.release || clientReleaseOption; + sessionAttrs.environment = sessionAttrs.environment || clientEnvironmentOption; + session.attrs = sessionAttrs; + } else { + if (!session.release && !clientReleaseOption) { + DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR); + return; + } + session.release = session.release || clientReleaseOption; + session.environment = session.environment || clientEnvironmentOption; + } + + this.emit('beforeSendSession', session); + + const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel); + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.sendEnvelope(env); + } + + /** + * Record on the client that an event got dropped (ie, an event that will not be sent to Sentry). + */ + recordDroppedEvent(reason, category, count = 1) { + if (this._options.sendClientReports) { + // We want to track each category (error, transaction, session, replay_event) separately + // but still keep the distinction between different type of outcomes. + // We could use nested maps, but it's much easier to read and type this way. + // A correct type for map-based implementation if we want to go that route + // would be `Partial>>>` + // With typescript 4.1 we could even use template literal types + const key = `${reason}:${category}`; + DEBUG_BUILD && debug.log(`Recording outcome: "${key}"${count > 1 ? ` (${count} times)` : ''}`); + this._outcomes[key] = (this._outcomes[key] || 0) + count; + } + } + + /* eslint-disable @typescript-eslint/unified-signatures */ + /** + * Register a callback for whenever a span is started. + * Receives the span as argument. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + + /** + * Register a hook on this client. + */ + on(hook, callback) { + const hookCallbacks = (this._hooks[hook] = this._hooks[hook] || new Set()); + + // Wrap the callback in a function so that registering the same callback instance multiple + // times results in the callback being called multiple times. + // @ts-expect-error - The `callback` type is correct and must be a function due to the + // individual, specific overloads of this function. + // eslint-disable-next-line @typescript-eslint/ban-types + const uniqueCallback = (...args) => callback(...args); + + hookCallbacks.add(uniqueCallback); + + // This function returns a callback execution handler that, when invoked, + // deregisters a callback. This is crucial for managing instances where callbacks + // need to be unregistered to prevent self-referencing in callback closures, + // ensuring proper garbage collection. + return () => { + hookCallbacks.delete(uniqueCallback); + }; + } + + /** Fire a hook whenever a span starts. */ + + /** + * Emit a hook that was previously registered via `on()`. + */ + emit(hook, ...rest) { + const callbacks = this._hooks[hook]; + if (callbacks) { + callbacks.forEach(callback => callback(...rest)); + } + } + + /** + * Send an envelope to Sentry. + */ + // @ts-expect-error - PromiseLike is a subset of Promise + async sendEnvelope(envelope) { + this.emit('beforeEnvelope', envelope); + + if (this._isEnabled() && this._transport) { + try { + return await this._transport.send(envelope); + } catch (reason) { + DEBUG_BUILD && debug.error('Error while sending envelope:', reason); + return {}; + } + } + + DEBUG_BUILD && debug.error('Transport disabled'); + return {}; + } + + /* eslint-enable @typescript-eslint/unified-signatures */ + + /** Setup integrations for this client. */ + _setupIntegrations() { + const { integrations } = this._options; + this._integrations = setupIntegrations(this, integrations); + afterSetupIntegrations(this, integrations); + } + + /** Updates existing session based on the provided event */ + _updateSessionFromEvent(session, event) { + // initially, set `crashed` based on the event level and update from exceptions if there are any later on + let crashed = event.level === 'fatal'; + let errored = false; + const exceptions = event.exception?.values; + + if (exceptions) { + errored = true; + // reset crashed to false if there are exceptions, to ensure `mechanism.handled` is respected. + crashed = false; + + for (const ex of exceptions) { + if (ex.mechanism?.handled === false) { + crashed = true; + break; + } + } + } + + // A session is updated and that session update is sent in only one of the two following scenarios: + // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update + // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update + const sessionNonTerminal = session.status === 'ok'; + const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed); + + if (shouldUpdateAndSend) { + updateSession(session, { + ...(crashed && { status: 'crashed' }), + errors: session.errors || Number(errored || crashed), + }); + this.captureSession(session); + } + } + + /** + * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying + * "no" (resolving to `false`) in order to give the client a chance to potentially finish first. + * + * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not + * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to + * `true`. + * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and + * `false` otherwise + */ + async _isClientDoneProcessing(timeout) { + let ticked = 0; + + // if no timeout is provided, we wait "forever" until everything is processed + while (!timeout || ticked < timeout) { + await new Promise(resolve => setTimeout(resolve, 1)); + + if (!this._numProcessing) { + return true; + } + ticked++; + } + + return false; + } + + /** Determines whether this SDK is enabled and a transport is present. */ + _isEnabled() { + return this.getOptions().enabled !== false && this._transport !== undefined; + } + + /** + * Adds common information to events. + * + * The information includes release and environment from `options`, + * breadcrumbs and context (extra, tags and user) from the scope. + * + * Information that is already present in the event is never overwritten. For + * nested objects, such as the context, keys are merged. + * + * @param event The original event. + * @param hint May contain additional information about the original exception. + * @param currentScope A scope containing event metadata. + * @returns A new event with more information. + */ + _prepareEvent( + event, + hint, + currentScope, + isolationScope, + ) { + const options = this.getOptions(); + const integrations = Object.keys(this._integrations); + if (!hint.integrations && integrations?.length) { + hint.integrations = integrations; + } + + this.emit('preprocessEvent', event, hint); + + if (!event.type) { + isolationScope.setLastEventId(event.event_id || hint.event_id); + } + + return prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => { + if (evt === null) { + return evt; + } + + this.emit('postprocessEvent', evt, hint); + + evt.contexts = { + trace: getTraceContextFromScope(currentScope), + ...evt.contexts, + }; + + const dynamicSamplingContext = getDynamicSamplingContextFromScope(this, currentScope); + + evt.sdkProcessingMetadata = { + dynamicSamplingContext, + ...evt.sdkProcessingMetadata, + }; + + return evt; + }); + } + + /** + * Processes the event and logs an error in case of rejection + * @param event + * @param hint + * @param scope + */ + _captureEvent( + event, + hint = {}, + currentScope = getCurrentScope(), + isolationScope = getIsolationScope(), + ) { + if (DEBUG_BUILD && isErrorEvent(event)) { + debug.log(`Captured error event \`${getPossibleEventMessages(event)[0] || ''}\``); + } + + return this._processEvent(event, hint, currentScope, isolationScope).then( + finalEvent => { + return finalEvent.event_id; + }, + reason => { + if (DEBUG_BUILD) { + if (_isDoNotSendEventError(reason)) { + debug.log(reason.message); + } else if (_isInternalError(reason)) { + debug.warn(reason.message); + } else { + debug.warn(reason); + } + } + return undefined; + }, + ); + } + + /** + * Processes an event (either error or message) and sends it to Sentry. + * + * This also adds breadcrumbs and context information to the event. However, + * platform specific meta data (such as the User's IP address) must be added + * by the SDK implementor. + * + * + * @param event The event to send to Sentry. + * @param hint May contain additional information about the original exception. + * @param currentScope A scope containing event metadata. + * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send. + */ + _processEvent( + event, + hint, + currentScope, + isolationScope, + ) { + const options = this.getOptions(); + const { sampleRate } = options; + + const isTransaction = isTransactionEvent(event); + const isError = isErrorEvent(event); + const eventType = event.type || 'error'; + const beforeSendLabel = `before send for type \`${eventType}\``; + + // 1.0 === 100% events are sent + // 0.0 === 0% events are sent + // Sampling for transaction happens somewhere else + const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate(sampleRate); + if (isError && typeof parsedSampleRate === 'number' && safeMathRandom() > parsedSampleRate) { + this.recordDroppedEvent('sample_rate', 'error'); + return rejectedSyncPromise( + _makeDoNotSendEventError( + `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`, + ), + ); + } + + const dataCategory = getDataCategoryByType(event.type); + + return this._prepareEvent(event, hint, currentScope, isolationScope) + .then(prepared => { + if (prepared === null) { + this.recordDroppedEvent('event_processor', dataCategory); + throw _makeDoNotSendEventError('An event processor returned `null`, will not send event.'); + } + + const isInternalException = hint.data && (hint.data ).__sentry__ === true; + if (isInternalException) { + return prepared; + } + + const result = processBeforeSend(this, options, prepared, hint); + return _validateBeforeSendResult(result, beforeSendLabel); + }) + .then(processedEvent => { + if (processedEvent === null) { + this.recordDroppedEvent('before_send', dataCategory); + if (isTransaction) { + const spans = event.spans || []; + // the transaction itself counts as one span, plus all the child spans that are added + const spanCount = 1 + spans.length; + this.recordDroppedEvent('before_send', 'span', spanCount); + } + throw _makeDoNotSendEventError(`${beforeSendLabel} returned \`null\`, will not send event.`); + } + + const session = currentScope.getSession() || isolationScope.getSession(); + if (isError && session) { + this._updateSessionFromEvent(session, processedEvent); + } + + if (isTransaction) { + const spanCountBefore = processedEvent.sdkProcessingMetadata?.spanCountBeforeProcessing || 0; + const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0; + + const droppedSpanCount = spanCountBefore - spanCountAfter; + if (droppedSpanCount > 0) { + this.recordDroppedEvent('before_send', 'span', droppedSpanCount); + } + } + + // None of the Sentry built event processor will update transaction name, + // so if the transaction name has been changed by an event processor, we know + // it has to come from custom event processor added by a user + const transactionInfo = processedEvent.transaction_info; + if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) { + const source = 'custom'; + processedEvent.transaction_info = { + ...transactionInfo, + source, + }; + } + + this.sendEvent(processedEvent, hint); + return processedEvent; + }) + .then(null, reason => { + if (_isDoNotSendEventError(reason) || _isInternalError(reason)) { + throw reason; + } + + this.captureException(reason, { + mechanism: { + handled: false, + type: 'internal', + }, + data: { + __sentry__: true, + }, + originalException: reason, + }); + throw _makeInternalError( + `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: ${reason}`, + ); + }); + } + + /** + * Occupies the client with processing and event + */ + _process(taskProducer, dataCategory) { + this._numProcessing++; + + void this._promiseBuffer.add(taskProducer).then( + value => { + this._numProcessing--; + return value; + }, + reason => { + this._numProcessing--; + + if (reason === SENTRY_BUFFER_FULL_ERROR) { + this.recordDroppedEvent('queue_overflow', dataCategory); + } + + return reason; + }, + ); + } + + /** + * Clears outcomes on this client and returns them. + */ + _clearOutcomes() { + const outcomes = this._outcomes; + this._outcomes = {}; + return Object.entries(outcomes).map(([key, quantity]) => { + const [reason, category] = key.split(':') ; + return { + reason, + category, + quantity, + }; + }); + } + + /** + * Sends client reports as an envelope. + */ + _flushOutcomes() { + DEBUG_BUILD && debug.log('Flushing outcomes...'); + + const outcomes = this._clearOutcomes(); + + if (outcomes.length === 0) { + DEBUG_BUILD && debug.log('No outcomes to send'); + return; + } + + // This is really the only place where we want to check for a DSN and only send outcomes then + if (!this._dsn) { + DEBUG_BUILD && debug.log('No dsn provided, will not send outcomes'); + return; + } + + DEBUG_BUILD && debug.log('Sending outcomes:', outcomes); + + const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn)); + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.sendEnvelope(envelope); + } + + /** + * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`. + */ + +} + +function getDataCategoryByType(type) { + return type === 'replay_event' ? 'replay' : type || 'error'; +} + +/** + * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so. + */ +function _validateBeforeSendResult( + beforeSendResult, + beforeSendLabel, +) { + const invalidValueError = `${beforeSendLabel} must return \`null\` or a valid event.`; + if (isThenable(beforeSendResult)) { + return beforeSendResult.then( + event => { + if (!isPlainObject(event) && event !== null) { + throw _makeInternalError(invalidValueError); + } + return event; + }, + e => { + throw _makeInternalError(`${beforeSendLabel} rejected with ${e}`); + }, + ); + } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) { + throw _makeInternalError(invalidValueError); + } + return beforeSendResult; +} + +/** + * Process the matching `beforeSendXXX` callback. + */ +function processBeforeSend( + client, + options, + event, + hint, +) { + const { beforeSend, beforeSendTransaction, beforeSendSpan, ignoreSpans } = options; + let processedEvent = event; + + if (isErrorEvent(processedEvent) && beforeSend) { + return beforeSend(processedEvent, hint); + } + + if (isTransactionEvent(processedEvent)) { + // Avoid processing if we don't have to + if (beforeSendSpan || ignoreSpans) { + // 1. Process root span + const rootSpanJson = convertTransactionEventToSpanJson(processedEvent); + + // 1.1 If the root span should be ignored, drop the whole transaction + if (ignoreSpans?.length && shouldIgnoreSpan(rootSpanJson, ignoreSpans)) { + // dropping the whole transaction! + return null; + } + + // 1.2 If a `beforeSendSpan` callback is defined, process the root span + if (beforeSendSpan) { + const processedRootSpanJson = beforeSendSpan(rootSpanJson); + if (!processedRootSpanJson) { + showSpanDropWarning(); + } else { + // update event with processed root span values + processedEvent = merge(event, convertSpanJsonToTransactionEvent(processedRootSpanJson)); + } + } + + // 2. Process child spans + if (processedEvent.spans) { + const processedSpans = []; + + const initialSpans = processedEvent.spans; + + for (const span of initialSpans) { + // 2.a If the child span should be ignored, reparent it to the root span + if (ignoreSpans?.length && shouldIgnoreSpan(span, ignoreSpans)) { + reparentChildSpans(initialSpans, span); + continue; + } + + // 2.b If a `beforeSendSpan` callback is defined, process the child span + if (beforeSendSpan) { + const processedSpan = beforeSendSpan(span); + if (!processedSpan) { + showSpanDropWarning(); + processedSpans.push(span); + } else { + processedSpans.push(processedSpan); + } + } else { + processedSpans.push(span); + } + } + + const droppedSpans = processedEvent.spans.length - processedSpans.length; + if (droppedSpans) { + client.recordDroppedEvent('before_send', 'span', droppedSpans); + } + + processedEvent.spans = processedSpans; + } + } + + if (beforeSendTransaction) { + if (processedEvent.spans) { + // We store the # of spans before processing in SDK metadata, + // so we can compare it afterwards to determine how many spans were dropped + const spanCountBefore = processedEvent.spans.length; + processedEvent.sdkProcessingMetadata = { + ...event.sdkProcessingMetadata, + spanCountBeforeProcessing: spanCountBefore, + }; + } + return beforeSendTransaction(processedEvent , hint); + } + } + + return processedEvent; +} + +function isErrorEvent(event) { + return event.type === undefined; +} + +function isTransactionEvent(event) { + return event.type === 'transaction'; +} + +/** + * Estimate the size of a metric in bytes. + * + * @param metric - The metric to estimate the size of. + * @returns The estimated size of the metric in bytes. + */ +function estimateMetricSizeInBytes(metric) { + let weight = 0; + + // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16. + if (metric.name) { + weight += metric.name.length * 2; + } + + // Add weight for number + weight += 8; + + return weight + estimateAttributesSizeInBytes(metric.attributes); +} + +/** + * Estimate the size of a log in bytes. + * + * @param log - The log to estimate the size of. + * @returns The estimated size of the log in bytes. + */ +function estimateLogSizeInBytes(log) { + let weight = 0; + + // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16. + if (log.message) { + weight += log.message.length * 2; + } + + return weight + estimateAttributesSizeInBytes(log.attributes); +} + +/** + * Estimate the size of attributes in bytes. + * + * @param attributes - The attributes object to estimate the size of. + * @returns The estimated size of the attributes in bytes. + */ +function estimateAttributesSizeInBytes(attributes) { + if (!attributes) { + return 0; + } + + let weight = 0; + + Object.values(attributes).forEach(value => { + if (Array.isArray(value)) { + weight += value.length * estimatePrimitiveSizeInBytes(value[0]); + } else if (isPrimitive(value)) { + weight += estimatePrimitiveSizeInBytes(value); + } else { + // For objects values, we estimate the size of the object as 100 bytes + weight += 100; + } + }); + + return weight; +} + +function estimatePrimitiveSizeInBytes(value) { + if (typeof value === 'string') { + return value.length * 2; + } else if (typeof value === 'number') { + return 8; + } else if (typeof value === 'boolean') { + return 4; + } + + return 0; +} + +export { Client }; +//# sourceMappingURL=client.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/client.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/client.js.map new file mode 100644 index 0000000..ed0fd86 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"client.js","sources":["../../src/client.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { getCurrentScope, getIsolationScope, getTraceContextFromScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations, setupIntegration, setupIntegrations } from './integration';\nimport { _INTERNAL_flushLogsBuffer } from './logs/internal';\nimport { _INTERNAL_flushMetricsBuffer } from './metrics/internal';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base';\nimport type { Breadcrumb, BreadcrumbHint, FetchBreadcrumbHint, XhrBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { CheckIn, MonitorConfig } from './types-hoist/checkin';\nimport type { EventDropReason, Outcome } from './types-hoist/clientreport';\nimport type { DataCategory } from './types-hoist/datacategory';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type { DynamicSamplingContext, Envelope } from './types-hoist/envelope';\nimport type { ErrorEvent, Event, EventHint, EventType, TransactionEvent } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { FeedbackEvent } from './types-hoist/feedback';\nimport type { Integration } from './types-hoist/integration';\nimport type { Log } from './types-hoist/log';\nimport type { Metric } from './types-hoist/metric';\nimport type { Primitive } from './types-hoist/misc';\nimport type { ClientOptions } from './types-hoist/options';\nimport type { ParameterizedString } from './types-hoist/parameterize';\nimport type { RequestEventData } from './types-hoist/request';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport type { Session, SessionAggregates } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { Span, SpanAttributes, SpanContextData, SpanJSON } from './types-hoist/span';\nimport type { StartSpanOptions } from './types-hoist/startSpanOptions';\nimport type { Transport, TransportMakeRequestResponse } from './types-hoist/transport';\nimport { createClientReportEnvelope } from './utils/clientreport';\nimport { debug } from './utils/debug-logger';\nimport { dsnToString, makeDsn } from './utils/dsn';\nimport { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils/envelope';\nimport { getPossibleEventMessages } from './utils/eventUtils';\nimport { isParameterizedString, isPlainObject, isPrimitive, isThenable } from './utils/is';\nimport { merge } from './utils/merge';\nimport { checkOrSetAlreadyCaught, uuid4 } from './utils/misc';\nimport { parseSampleRate } from './utils/parseSampleRate';\nimport { prepareEvent } from './utils/prepareEvent';\nimport { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer';\nimport { safeMathRandom } from './utils/randomSafeContext';\nimport { reparentChildSpans, shouldIgnoreSpan } from './utils/should-ignore-span';\nimport { showSpanDropWarning } from './utils/spanUtils';\nimport { rejectedSyncPromise } from './utils/syncpromise';\nimport { convertSpanJsonToTransactionEvent, convertTransactionEventToSpanJson } from './utils/transactionEvent';\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\ninterface InternalError {\n message: string;\n [INTERNAL_ERROR_SYMBOL]: true;\n}\n\ninterface DoNotSendEventError {\n message: string;\n [DO_NOT_SEND_EVENT_SYMBOL]: true;\n}\n\nfunction _makeInternalError(message: string): InternalError {\n return {\n message,\n [INTERNAL_ERROR_SYMBOL]: true,\n };\n}\n\nfunction _makeDoNotSendEventError(message: string): DoNotSendEventError {\n return {\n message,\n [DO_NOT_SEND_EVENT_SYMBOL]: true,\n };\n}\n\nfunction _isInternalError(error: unknown): error is InternalError {\n return !!error && typeof error === 'object' && INTERNAL_ERROR_SYMBOL in error;\n}\n\nfunction _isDoNotSendEventError(error: unknown): error is DoNotSendEventError {\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 T,\n AfterCaptureHook extends 'afterCaptureLog' | 'afterCaptureMetric',\n FlushHook extends 'flushLogs' | 'flushMetrics',\n>(\n client: Client,\n afterCaptureHook: AfterCaptureHook,\n flushHook: FlushHook,\n estimateSizeFn: (item: T) => number,\n flushFn: (client: Client) => void,\n): void {\n // Track weight and timeout in closure variables\n let weight = 0;\n let flushTimeout: ReturnType | undefined;\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: T) => {\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 >= 800_000) {\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 flushTimeout = 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 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 */\nexport abstract class Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex;\n\n /** Number of calls being processed */\n protected _numProcessing: number;\n\n protected _eventProcessors: EventProcessor[];\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number };\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private _hooks: Record>;\n\n private _promiseBuffer: PromiseBuffer;\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\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 public captureException(exception: unknown, hint?: EventHint, scope?: Scope): string {\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 public captureMessage(\n message: ParameterizedString,\n level?: SeverityLevel,\n hint?: EventHint,\n currentScope?: Scope,\n ): string {\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 public captureEvent(event: Event, hint?: EventHint, currentScope?: Scope): string {\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: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n const capturedSpanIsolationScope: Scope | undefined = 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 public captureSession(session: Session): void {\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 public captureCheckIn?(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string;\n\n /**\n * Get the current Dsn.\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * Get the current options.\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * Get the SDK metadata.\n * @see SdkMetadata\n */\n public getSdkMetadata(): SdkMetadata | undefined {\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 public getTransport(): Transport | undefined {\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 public async flush(timeout?: number): PromiseLike {\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 public async close(timeout?: number): PromiseLike {\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 public getEventProcessors(): EventProcessor[] {\n return this._eventProcessors;\n }\n\n /**\n * Adds an event processor that applies to any event processed by this client.\n */\n public addEventProcessor(eventProcessor: EventProcessor): void {\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 public init(): void {\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 public getIntegrationByName(integrationName: string): T | undefined {\n return this._integrations[integrationName] as T | undefined;\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 public addIntegration(integration: Integration): void {\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 public sendEvent(event: Event, hint: EventHint = {}): void {\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 public sendSession(session: Session | SessionAggregates): void {\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 public recordDroppedEvent(reason: EventDropReason, category: DataCategory, count: number = 1): void {\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 public on(hook: 'spanStart', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback before span sampling runs. Receives a `samplingDecision` object argument with a `decision`\n * property that can be used to make a sampling decision that will be enforced, before any span sampling runs.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeSampling',\n callback: (\n samplingData: {\n spanAttributes: SpanAttributes;\n spanName: string;\n parentSampled?: boolean;\n parentSampleRate?: number;\n parentContext?: SpanContextData;\n },\n samplingDecision: { decision: boolean },\n ) => void,\n ): void;\n\n /**\n * Register a callback for after a span is ended.\n * NOTE: The span cannot be mutated anymore in this callback.\n * Receives the span as argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'spanEnd', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback for when an idle span is allowed to auto-finish.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'idleSpanEnableAutoFinish', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback for transaction start and finish.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): () => void;\n\n /**\n * Register a callback that runs when stack frame metadata should be applied to an event.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'applyFrameMetadata', callback: (event: Event) => void): () => void;\n\n /**\n * Register a callback for before sending an event.\n * This is called right before an event is sent and should not be used to mutate the event.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for before sending a session or session aggregrates..\n * Receives the session/aggregate as second argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeSendSession', callback: (session: Session | SessionAggregates) => void): () => void;\n\n /**\n * Register a callback for preprocessing an event,\n * before it is passed to (global) event processors.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for postprocessing an event,\n * after it was passed to (global) event processors, before it is being sent.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'postprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for when an event has been sent.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'afterSendEvent',\n callback: (event: Event, sendResponse: TransportMakeRequestResponse) => void,\n ): () => void;\n\n /**\n * Register a callback before a breadcrumb is added.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): () => void;\n\n /**\n * Register a callback when a DSC (Dynamic Sampling Context) is created.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext, rootSpan?: Span) => void): () => void;\n\n /**\n * Register a callback when a Feedback event has been prepared.\n * This should be used to mutate the event. The options argument can hint\n * about what kind of mutation it expects.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeSendFeedback',\n callback: (feedback: FeedbackEvent, options?: { includeReplay?: boolean }) => void,\n ): () => void;\n\n /**\n * Register a callback when the feedback widget is opened in a user's browser\n */\n public on(hook: 'openFeedbackWidget', callback: () => void): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger a span start for a page load.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'startPageLoadSpan',\n callback: (\n options: StartSpanOptions,\n traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n ) => void,\n ): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger the end of a page load span.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'endPageloadSpan', callback: () => void): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger after the pageload span was started.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterStartPageLoadSpan', callback: (span: Span) => void): () => void;\n\n /**\n * A hook for triggering right before a navigation span is started.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeStartNavigationSpan',\n callback: (options: StartSpanOptions, navigationOptions?: { isRedirect?: boolean }) => void,\n ): () => void;\n\n /**\n * A hook for browser tracing integrations to trigger a span for a navigation.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'startNavigationSpan',\n callback: (options: StartSpanOptions, navigationOptions?: { isRedirect?: boolean }) => void,\n ): () => void;\n\n /**\n * A hook for GraphQL client integration to enhance a span with request data.\n * @returns A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeOutgoingRequestSpan',\n callback: (span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void,\n ): () => void;\n\n /**\n * A hook for GraphQL client integration to enhance a breadcrumb with request data.\n * @returns A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeOutgoingRequestBreadcrumb',\n callback: (breadcrumb: Breadcrumb, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void,\n ): () => void;\n\n /**\n * A hook that is called when the client is flushing\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flush', callback: () => void): () => void;\n\n /**\n * A hook that is called when the client is closing\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'close', callback: () => void): () => void;\n\n /**\n * A hook that is called before a log is captured. This hooks runs before `beforeSendLog` is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeCaptureLog', callback: (log: Log) => void): () => void;\n\n /**\n * A hook that is called after a log is captured\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterCaptureLog', callback: (log: Log) => void): () => void;\n\n /**\n * A hook that is called when the client is flushing logs\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flushLogs', callback: () => void): () => void;\n\n /**\n * A hook that is called after capturing a metric. This hooks runs after `beforeSendMetric` is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterCaptureMetric', callback: (metric: Metric) => void): () => void;\n\n /**\n * A hook that is called when the client is flushing metrics\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flushMetrics', callback: () => void): () => void;\n\n /**\n * A hook that is called when a metric is processed before it is captured and before the `beforeSendMetric` callback is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'processMetric', callback: (metric: Metric) => void): () => void;\n\n /**\n * A hook that is called when a http server request is started.\n * This hook is called after request isolation, but before the request is processed.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'httpServerRequest',\n callback: (request: unknown, response: unknown, normalizedRequest: RequestEventData) => void,\n ): () => void;\n\n /**\n * A hook that is called when the UI Profiler should start profiling.\n *\n * This hook is called when running `Sentry.uiProfiler.startProfiler()`.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'startUIProfiler', callback: () => void): () => void;\n\n /**\n * A hook that is called when the UI Profiler should stop profiling.\n *\n * This hook is called when running `Sentry.uiProfiler.stopProfiler()`.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'stopUIProfiler', callback: () => void): () => void;\n\n /**\n * Register a hook on this client.\n */\n public on(hook: string, callback: unknown): () => void {\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: Function = (...args: unknown[]) => 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 public emit(hook: 'spanStart', span: Span): void;\n\n /** A hook that is called every time before a span is sampled. */\n public emit(\n hook: 'beforeSampling',\n samplingData: {\n spanAttributes: SpanAttributes;\n spanName: string;\n parentSampled?: boolean;\n parentSampleRate?: number;\n parentContext?: SpanContextData;\n },\n samplingDecision: { decision: boolean },\n ): void;\n\n /** Fire a hook whenever a span ends. */\n public emit(hook: 'spanEnd', span: Span): void;\n\n /**\n * Fire a hook indicating that an idle span is allowed to auto finish.\n */\n public emit(hook: 'idleSpanEnableAutoFinish', span: Span): void;\n\n /**\n * Fire a hook event for envelope creation and sending. Expects to be given an envelope as the\n * second argument.\n */\n public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n /**\n * Fire a hook indicating that stack frame metadata should be applied to the event passed to the hook.\n */\n public emit(hook: 'applyFrameMetadata', event: Event): void;\n\n /**\n * Fire a hook event before sending an event.\n * This is called right before an event is sent and should not be used to mutate the event.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event before sending a session/aggregates.\n * Expects to be given the prepared session/aggregates as second argument.\n */\n public emit(hook: 'beforeSendSession', session: Session | SessionAggregates): void;\n\n /**\n * Fire a hook event to process events before they are passed to (global) event processors.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event to process a user on an event before it is sent to Sentry, after all other processors have run.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'postprocessEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event after sending an event. Expects to be given an Event as the\n * second argument.\n */\n public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse): void;\n\n /**\n * Fire a hook for when a breadcrumb is added. Expects the breadcrumb as second argument.\n */\n public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n /**\n * Fire a hook for when a DSC (Dynamic Sampling Context) is created. Expects the DSC as second argument.\n */\n public emit(hook: 'createDsc', dsc: DynamicSamplingContext, rootSpan?: Span): void;\n\n /**\n * Fire a hook event for after preparing a feedback event. Events to be given\n * a feedback event as the second argument, and an optional options object as\n * third argument.\n */\n public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay?: boolean }): void;\n\n /**\n * Fire a hook event for when the feedback widget is opened in a user's browser\n */\n public emit(hook: 'openFeedbackWidget'): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger a span start for a page load.\n */\n public emit(\n hook: 'startPageLoadSpan',\n options: StartSpanOptions,\n traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n ): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger the end of a page load span.\n */\n public emit(hook: 'endPageloadSpan'): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger aafter the pageload span was started.\n */\n public emit(hook: 'afterStartPageLoadSpan', span: Span): void;\n\n /**\n * Emit a hook event for triggering right before a navigation span is started.\n */\n public emit(\n hook: 'beforeStartNavigationSpan',\n options: StartSpanOptions,\n navigationOptions?: { isRedirect?: boolean },\n ): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger a span for a navigation.\n */\n public emit(\n hook: 'startNavigationSpan',\n options: StartSpanOptions,\n navigationOptions?: { isRedirect?: boolean },\n ): void;\n\n /**\n * Emit a hook event for GraphQL client integration to enhance a span with request data.\n */\n public emit(hook: 'beforeOutgoingRequestSpan', span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint): void;\n\n /**\n * Emit a hook event for GraphQL client integration to enhance a breadcrumb with request data.\n */\n public emit(\n hook: 'beforeOutgoingRequestBreadcrumb',\n breadcrumb: Breadcrumb,\n hint: XhrBreadcrumbHint | FetchBreadcrumbHint,\n ): void;\n\n /**\n * Emit a hook event for client flush\n */\n public emit(hook: 'flush'): void;\n\n /**\n * Emit a hook event for client close\n */\n public emit(hook: 'close'): void;\n\n /**\n * Emit a hook event for client before capturing a log. This hooks runs before `beforeSendLog` is fired.\n */\n public emit(hook: 'beforeCaptureLog', log: Log): void;\n\n /**\n * Emit a hook event for client after capturing a log.\n */\n public emit(hook: 'afterCaptureLog', log: Log): void;\n\n /**\n * Emit a hook event for client flush logs\n */\n public emit(hook: 'flushLogs'): void;\n\n /**\n * Emit a hook event for client after capturing a metric.\n */\n public emit(hook: 'afterCaptureMetric', metric: Metric): void;\n\n /**\n * Emit a hook event for client flush metrics\n */\n public emit(hook: 'flushMetrics'): void;\n\n /**\n *\n * Emit a hook event for client to process a metric before it is captured.\n * This hook is called before the `beforeSendMetric` callback is fired.\n */\n public emit(hook: 'processMetric', metric: Metric): void;\n\n /**\n * Emit a hook event for client when a http server request is started.\n * This hook is called after request isolation, but before the request is processed.\n */\n public emit(\n hook: 'httpServerRequest',\n request: unknown,\n response: unknown,\n normalizedRequest: RequestEventData,\n ): void;\n\n /**\n * Emit a hook event for starting the UI Profiler.\n */\n public emit(hook: 'startUIProfiler'): void;\n\n /**\n * Emit a hook event for stopping the UI Profiler.\n */\n public emit(hook: 'stopUIProfiler'): void;\n\n /**\n * Emit a hook that was previously registered via `on()`.\n */\n public emit(hook: string, ...rest: unknown[]): void {\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 public async sendEnvelope(envelope: Envelope): PromiseLike {\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 /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n protected _setupIntegrations(): void {\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 protected _updateSessionFromEvent(session: Session, event: Event): void {\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 protected async _isClientDoneProcessing(timeout?: number): Promise {\n let ticked = 0;\n\n // if no timeout is provided, we wait \"forever\" until everything is processed\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 protected _isEnabled(): boolean {\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 protected _prepareEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\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: 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 protected _captureEvent(\n event: Event,\n hint: EventHint = {},\n currentScope = getCurrentScope(),\n isolationScope = getIsolationScope(),\n ): PromiseLike {\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 protected _processEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\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 && (hint.data as { __sentry__: boolean }).__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 protected _process(taskProducer: () => PromiseLike, dataCategory: DataCategory): void {\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 protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.entries(outcomes).map(([key, quantity]) => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity,\n };\n });\n }\n\n /**\n * Sends client reports as an envelope.\n */\n protected _flushOutcomes(): void {\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 public abstract eventFromException(_exception: unknown, _hint?: EventHint): PromiseLike;\n\n /**\n * Creates an {@link Event} from primitive inputs to `captureMessage`.\n */\n public abstract eventFromMessage(\n _message: ParameterizedString,\n _level?: SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\nfunction getDataCategoryByType(type: EventType | 'replay_event' | undefined): DataCategory {\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: PromiseLike | Event | null,\n beforeSendLabel: string,\n): PromiseLike | Event | null {\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: Client,\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n): PromiseLike | Event | null {\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: SpanJSON[] = [];\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 as TransactionEvent, hint);\n }\n }\n\n return processedEvent;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\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: Metric): number {\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: Log): number {\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: Record | undefined): number {\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: Primitive): number {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/constants.js new file mode 100644 index 0000000..ce4a69e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/constants.js @@ -0,0 +1,5 @@ +const DEFAULT_ENVIRONMENT = 'production'; +const DEV_ENVIRONMENT = 'development'; + +export { DEFAULT_ENVIRONMENT, DEV_ENVIRONMENT }; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/constants.js.map new file mode 100644 index 0000000..bfdab97 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../src/constants.ts"],"sourcesContent":["export const DEFAULT_ENVIRONMENT = 'production';\nexport const DEV_ENVIRONMENT = 'development';\n"],"names":[],"mappings":"AAAO,MAAM,mBAAA,GAAsB;AAC5B,MAAM,eAAA,GAAkB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/currentScopes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/currentScopes.js new file mode 100644 index 0000000..96700e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/currentScopes.js @@ -0,0 +1,125 @@ +import { getAsyncContextStrategy } from './asyncContext/index.js'; +import { getMainCarrier, getGlobalSingleton } from './carrier.js'; +import { Scope } from './scope.js'; +import { generateSpanId } from './utils/propagationContext.js'; + +/** + * Get the currently active scope. + */ +function getCurrentScope() { + const carrier = getMainCarrier(); + const acs = getAsyncContextStrategy(carrier); + return acs.getCurrentScope(); +} + +/** + * Get the currently active isolation scope. + * The isolation scope is active for the current execution context. + */ +function getIsolationScope() { + const carrier = getMainCarrier(); + const acs = getAsyncContextStrategy(carrier); + return acs.getIsolationScope(); +} + +/** + * Get the global scope. + * This scope is applied to _all_ events. + */ +function getGlobalScope() { + return getGlobalSingleton('globalScope', () => new Scope()); +} + +/** + * Creates a new scope with and executes the given operation within. + * The scope is automatically removed once the operation + * finishes or throws. + */ + +/** + * Either creates a new active scope, or sets the given scope as active scope in the given callback. + */ +function withScope( + ...rest +) { + const carrier = getMainCarrier(); + const acs = getAsyncContextStrategy(carrier); + + // If a scope is defined, we want to make this the active scope instead of the default one + if (rest.length === 2) { + const [scope, callback] = rest; + + if (!scope) { + return acs.withScope(callback); + } + + return acs.withSetScope(scope, callback); + } + + return acs.withScope(rest[0]); +} + +/** + * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no + * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the + * case, for example, in the browser). + * + * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour. + * + * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in "normal" + * applications directly because it comes with pitfalls. Use at your own risk! + */ + +/** + * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback. + */ +function withIsolationScope( + ...rest + +) { + const carrier = getMainCarrier(); + const acs = getAsyncContextStrategy(carrier); + + // If a scope is defined, we want to make this the active scope instead of the default one + if (rest.length === 2) { + const [isolationScope, callback] = rest; + + if (!isolationScope) { + return acs.withIsolationScope(callback); + } + + return acs.withSetIsolationScope(isolationScope, callback); + } + + return acs.withIsolationScope(rest[0]); +} + +/** + * Get the currently active client. + */ +function getClient() { + return getCurrentScope().getClient(); +} + +/** + * Get a trace context for the given scope. + */ +function getTraceContextFromScope(scope) { + const propagationContext = scope.getPropagationContext(); + + const { traceId, parentSpanId, propagationSpanId } = propagationContext; + + const traceContext = { + trace_id: traceId, + span_id: propagationSpanId || generateSpanId(), + }; + + if (parentSpanId) { + traceContext.parent_span_id = parentSpanId; + } + + return traceContext; +} + +export { getClient, getCurrentScope, getGlobalScope, getIsolationScope, getTraceContextFromScope, withIsolationScope, withScope }; +//# sourceMappingURL=currentScopes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/currentScopes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/currentScopes.js.map new file mode 100644 index 0000000..772a827 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/currentScopes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"currentScopes.js","sources":["../../src/currentScopes.ts"],"sourcesContent":["import { getAsyncContextStrategy } from './asyncContext';\nimport { getGlobalSingleton, getMainCarrier } from './carrier';\nimport type { Client } from './client';\nimport { Scope } from './scope';\nimport type { TraceContext } from './types-hoist/context';\nimport { generateSpanId } from './utils/propagationContext';\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\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 */\nexport function getIsolationScope(): Scope {\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 */\nexport function getGlobalScope(): Scope {\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 */\nexport function withScope(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope(scope: Scope | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope(\n ...rest: [callback: (scope: Scope) => T] | [scope: Scope | undefined, callback: (scope: Scope) => T]\n): T {\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 */\nexport function withIsolationScope(callback: (isolationScope: Scope) => T): T;\n/**\n * Set the provided isolation scope as active in the given callback. 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 * If you pass in `undefined` as a scope, it will fork a new isolation scope, the same as if no scope is passed.\n */\nexport function withIsolationScope(isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T): T;\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nexport function withIsolationScope(\n ...rest:\n | [callback: (isolationScope: Scope) => T]\n | [isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T]\n): T {\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 */\nexport function getClient(): C | undefined {\n return getCurrentScope().getClient();\n}\n\n/**\n * Get a trace context for the given scope.\n */\nexport function getTraceContextFromScope(scope: Scope): TraceContext {\n const propagationContext = scope.getPropagationContext();\n\n const { traceId, parentSpanId, propagationSpanId } = propagationContext;\n\n const traceContext: 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"],"names":[],"mappings":";;;;;AAOA;AACA;AACA;AACO,SAAS,eAAe,GAAU;AACzC,EAAE,MAAM,OAAA,GAAU,cAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAM,uBAAuB,CAAC,OAAO,CAAC;AAC9C,EAAE,OAAO,GAAG,CAAC,eAAe,EAAE;AAC9B;;AAEA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,GAAU;AAC3C,EAAE,MAAM,OAAA,GAAU,cAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAM,uBAAuB,CAAC,OAAO,CAAC;AAC9C,EAAE,OAAO,GAAG,CAAC,iBAAiB,EAAE;AAChC;;AAEA;AACA;AACA;AACA;AACO,SAAS,cAAc,GAAU;AACxC,EAAE,OAAO,kBAAkB,CAAC,aAAa,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;AAC7D;;AAEA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACO,SAAS,SAAS;AACzB,EAAE,GAAG;AACL,EAAK;AACL,EAAE,MAAM,OAAA,GAAU,cAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAM,uBAAuB,CAAC,OAAO,CAAC;;AAE9C;AACA,EAAE,IAAI,IAAI,CAAC,MAAA,KAAW,CAAC,EAAE;AACzB,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAA,GAAI,IAAI;;AAElC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;AACpC,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5C,EAAE;;AAEF,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACO,SAAS,kBAAkB;AAClC,EAAE,GAAG;;AAGL,EAAK;AACL,EAAE,MAAM,OAAA,GAAU,cAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAM,uBAAuB,CAAC,OAAO,CAAC;;AAE9C;AACA,EAAE,IAAI,IAAI,CAAC,MAAA,KAAW,CAAC,EAAE;AACzB,IAAI,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAA,GAAI,IAAI;;AAE3C,IAAI,IAAI,CAAC,cAAc,EAAE;AACzB,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC7C,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,qBAAqB,CAAC,cAAc,EAAE,QAAQ,CAAC;AAC9D,EAAE;;AAEF,EAAE,OAAO,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC;;AAEA;AACA;AACA;AACO,SAAS,SAAS,GAAoC;AAC7D,EAAE,OAAO,eAAe,EAAE,CAAC,SAAS,EAAK;AACzC;;AAEA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,KAAK,EAAuB;AACrE,EAAE,MAAM,kBAAA,GAAqB,KAAK,CAAC,qBAAqB,EAAE;;AAE1D,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAA,EAAkB,GAAI,kBAAkB;;AAEzE,EAAE,MAAM,YAAY,GAAiB;AACrC,IAAI,QAAQ,EAAE,OAAO;AACrB,IAAI,OAAO,EAAE,iBAAA,IAAqB,cAAc,EAAE;AAClD,GAAG;;AAEH,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,YAAY,CAAC,cAAA,GAAiB,YAAY;AAC9C,EAAE;;AAEF,EAAE,OAAO,YAAY;AACrB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/debug-build.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/debug-build.js new file mode 100644 index 0000000..e540387 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/debug-build.js @@ -0,0 +1,9 @@ +/** + * 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. + * + * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking. + */ +const DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__); + +export { DEBUG_BUILD }; +//# sourceMappingURL=debug-build.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/debug-build.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/debug-build.js.map new file mode 100644 index 0000000..1ba7a45 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/debug-build.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debug-build.js","sources":["../../src/debug-build.ts"],"sourcesContent":["declare const __DEBUG_BUILD__: boolean;\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 */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n"],"names":[],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAA,IAAc,OAAA,gBAAA,KAAA,WAAA,IAAA,gBAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/defaultScopes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/defaultScopes.js new file mode 100644 index 0000000..396bed5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/defaultScopes.js @@ -0,0 +1,15 @@ +import { getGlobalSingleton } from './carrier.js'; +import { Scope } from './scope.js'; + +/** Get the default current scope. */ +function getDefaultCurrentScope() { + return getGlobalSingleton('defaultCurrentScope', () => new Scope()); +} + +/** Get the default isolation scope. */ +function getDefaultIsolationScope() { + return getGlobalSingleton('defaultIsolationScope', () => new Scope()); +} + +export { getDefaultCurrentScope, getDefaultIsolationScope }; +//# sourceMappingURL=defaultScopes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/defaultScopes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/defaultScopes.js.map new file mode 100644 index 0000000..92e695b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/defaultScopes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"defaultScopes.js","sources":["../../src/defaultScopes.ts"],"sourcesContent":["import { getGlobalSingleton } from './carrier';\nimport { Scope } from './scope';\n\n/** Get the default current scope. */\nexport function getDefaultCurrentScope(): Scope {\n return getGlobalSingleton('defaultCurrentScope', () => new Scope());\n}\n\n/** Get the default isolation scope. */\nexport function getDefaultIsolationScope(): Scope {\n return getGlobalSingleton('defaultIsolationScope', () => new Scope());\n}\n"],"names":[],"mappings":";;;AAGA;AACO,SAAS,sBAAsB,GAAU;AAChD,EAAE,OAAO,kBAAkB,CAAC,qBAAqB,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;AACrE;;AAEA;AACO,SAAS,wBAAwB,GAAU;AAClD,EAAE,OAAO,kBAAkB,CAAC,uBAAuB,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;AACvE;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/envelope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/envelope.js new file mode 100644 index 0000000..9f6f83f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/envelope.js @@ -0,0 +1,153 @@ +import { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext.js'; +import { dsnToString } from './utils/dsn.js'; +import { getSdkMetadataForEnvelopeHeader, createEventEnvelopeHeaders, createEnvelope, createSpanEnvelopeItem } from './utils/envelope.js'; +import { shouldIgnoreSpan } from './utils/should-ignore-span.js'; +import { spanToJSON, showSpanDropWarning } from './utils/spanUtils.js'; + +/** + * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key. + * Merge with existing data if any. + * + * @internal, exported only for testing + **/ +function _enhanceEventWithSdkInfo(event, newSdkInfo) { + if (!newSdkInfo) { + return event; + } + + const eventSdkInfo = event.sdk || {}; + + event.sdk = { + ...eventSdkInfo, + name: eventSdkInfo.name || newSdkInfo.name, + version: eventSdkInfo.version || newSdkInfo.version, + integrations: [...(event.sdk?.integrations || []), ...(newSdkInfo.integrations || [])], + packages: [...(event.sdk?.packages || []), ...(newSdkInfo.packages || [])], + settings: + event.sdk?.settings || newSdkInfo.settings + ? { + ...event.sdk?.settings, + ...newSdkInfo.settings, + } + : undefined, + }; + + return event; +} + +/** Creates an envelope from a Session */ +function createSessionEnvelope( + session, + dsn, + metadata, + tunnel, +) { + const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata); + const envelopeHeaders = { + sent_at: new Date().toISOString(), + ...(sdkInfo && { sdk: sdkInfo }), + ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }), + }; + + const envelopeItem = + 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()]; + + return createEnvelope(envelopeHeaders, [envelopeItem]); +} + +/** + * Create an Envelope from an event. + */ +function createEventEnvelope( + event, + dsn, + metadata, + tunnel, +) { + const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata); + + /* + Note: Due to TS, event.type may be `replay_event`, theoretically. + In practice, we never call `createEventEnvelope` with `replay_event` type, + and we'd have to adjust a looot of types to make this work properly. + We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type) + So the safe choice is to really guard against the replay_event type here. + */ + const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event'; + + _enhanceEventWithSdkInfo(event, metadata?.sdk); + + const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn); + + // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to + // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may + // 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 + // of this `delete`, lest we miss putting it back in the next time the property is in use.) + delete event.sdkProcessingMetadata; + + const eventItem = [{ type: eventType }, event]; + return createEnvelope(envelopeHeaders, [eventItem]); +} + +/** + * Create envelope from Span item. + * + * Takes an optional client and runs spans through `beforeSendSpan` if available. + */ +function createSpanEnvelope(spans, client) { + function dscHasRequiredProps(dsc) { + return !!dsc.trace_id && !!dsc.public_key; + } + + // For the moment we'll obtain the DSC from the first span in the array + // This might need to be changed if we permit sending multiple spans from + // different segments in one envelope + const dsc = getDynamicSamplingContextFromSpan(spans[0]); + + const dsn = client?.getDsn(); + const tunnel = client?.getOptions().tunnel; + + const headers = { + sent_at: new Date().toISOString(), + ...(dscHasRequiredProps(dsc) && { trace: dsc }), + ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }), + }; + + const { beforeSendSpan, ignoreSpans } = client?.getOptions() || {}; + + const filteredSpans = ignoreSpans?.length + ? spans.filter(span => !shouldIgnoreSpan(spanToJSON(span), ignoreSpans)) + : spans; + const droppedSpans = spans.length - filteredSpans.length; + + if (droppedSpans) { + client?.recordDroppedEvent('before_send', 'span', droppedSpans); + } + + const convertToSpanJSON = beforeSendSpan + ? (span) => { + const spanJson = spanToJSON(span); + const processedSpan = beforeSendSpan(spanJson); + + if (!processedSpan) { + showSpanDropWarning(); + return spanJson; + } + + return processedSpan; + } + : spanToJSON; + + const items = []; + for (const span of filteredSpans) { + const spanJson = convertToSpanJSON(span); + if (spanJson) { + items.push(createSpanEnvelopeItem(spanJson)); + } + } + + return createEnvelope(headers, items); +} + +export { _enhanceEventWithSdkInfo, createEventEnvelope, createSessionEnvelope, createSpanEnvelope }; +//# sourceMappingURL=envelope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/envelope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/envelope.js.map new file mode 100644 index 0000000..caea642 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/envelope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"envelope.js","sources":["../../src/envelope.ts"],"sourcesContent":["import type { Client } from './client';\nimport { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext';\nimport type { SentrySpan } from './tracing/sentrySpan';\nimport type { LegacyCSPReport } from './types-hoist/csp';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type {\n DynamicSamplingContext,\n EventEnvelope,\n EventItem,\n RawSecurityEnvelope,\n RawSecurityItem,\n SessionEnvelope,\n SessionItem,\n SpanEnvelope,\n SpanItem,\n} from './types-hoist/envelope';\nimport type { Event } from './types-hoist/event';\nimport type { SdkInfo } from './types-hoist/sdkinfo';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport type { Session, SessionAggregates } from './types-hoist/session';\nimport { dsnToString } from './utils/dsn';\nimport {\n createEnvelope,\n createEventEnvelopeHeaders,\n createSpanEnvelopeItem,\n getSdkMetadataForEnvelopeHeader,\n} from './utils/envelope';\nimport { uuid4 } from './utils/misc';\nimport { shouldIgnoreSpan } from './utils/should-ignore-span';\nimport { showSpanDropWarning, spanToJSON } from './utils/spanUtils';\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 **/\nexport function _enhanceEventWithSdkInfo(event: Event, newSdkInfo?: SdkInfo): Event {\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 */\nexport function createSessionEnvelope(\n session: Session | SessionAggregates,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): SessionEnvelope {\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: SessionItem =\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 */\nexport function createEventEnvelope(\n event: Event,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): EventEnvelope {\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: 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 */\nexport function createSpanEnvelope(spans: [SentrySpan, ...SentrySpan[]], client?: Client): SpanEnvelope {\n function dscHasRequiredProps(dsc: Partial): dsc is DynamicSamplingContext {\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: SpanEnvelope[0] = {\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: SentrySpan) => {\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: SpanItem[] = [];\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\n/**\n * Create an Envelope from a CSP report.\n */\nexport function createRawSecurityEnvelope(\n report: LegacyCSPReport,\n dsn: DsnComponents,\n tunnel?: string,\n release?: string,\n environment?: string,\n): RawSecurityEnvelope {\n const envelopeHeaders = {\n event_id: uuid4(),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const eventItem: RawSecurityItem = [\n { type: 'raw_security', sentry_release: release, sentry_environment: environment },\n report,\n ];\n\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/eventProcessors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/eventProcessors.js new file mode 100644 index 0000000..c8e9f7c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/eventProcessors.js @@ -0,0 +1,47 @@ +import { DEBUG_BUILD } from './debug-build.js'; +import { debug } from './utils/debug-logger.js'; +import { isThenable } from './utils/is.js'; +import { resolvedSyncPromise, rejectedSyncPromise } from './utils/syncpromise.js'; + +/** + * Process an array of event processors, returning the processed event (or `null` if the event was dropped). + */ +function notifyEventProcessors( + processors, + event, + hint, + index = 0, +) { + try { + const result = _notifyEventProcessors(event, hint, processors, index); + return isThenable(result) ? result : resolvedSyncPromise(result); + } catch (error) { + return rejectedSyncPromise(error); + } +} + +function _notifyEventProcessors( + event, + hint, + processors, + index, +) { + const processor = processors[index]; + + if (!event || !processor) { + return event; + } + + const result = processor({ ...event }, hint); + + DEBUG_BUILD && result === null && debug.log(`Event processor "${processor.id || '?'}" dropped event`); + + if (isThenable(result)) { + return result.then(final => _notifyEventProcessors(final, hint, processors, index + 1)); + } + + return _notifyEventProcessors(result, hint, processors, index + 1); +} + +export { notifyEventProcessors }; +//# sourceMappingURL=eventProcessors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/eventProcessors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/eventProcessors.js.map new file mode 100644 index 0000000..5d57bdb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/eventProcessors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"eventProcessors.js","sources":["../../src/eventProcessors.ts"],"sourcesContent":["import { DEBUG_BUILD } from './debug-build';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport { debug } from './utils/debug-logger';\nimport { isThenable } from './utils/is';\nimport { rejectedSyncPromise, resolvedSyncPromise } from './utils/syncpromise';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n): PromiseLike {\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: Event | null,\n hint: EventHint,\n processors: EventProcessor[],\n index: number,\n): Event | null | PromiseLike {\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"],"names":[],"mappings":";;;;;AAOA;AACA;AACA;AACO,SAAS,qBAAqB;AACrC,EAAE,UAAU;AACZ,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,KAAK,GAAW,CAAC;AACnB,EAA6B;AAC7B,EAAE,IAAI;AACN,IAAI,MAAM,MAAA,GAAS,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;AACzE,IAAI,OAAO,UAAU,CAAC,MAAM,CAAA,GAAI,MAAA,GAAS,mBAAmB,CAAC,MAAM,CAAC;AACpE,EAAE,CAAA,CAAE,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,mBAAmB,CAAC,KAAK,CAAC;AACrC,EAAE;AACF;;AAEA,SAAS,sBAAsB;AAC/B,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,UAAU;AACZ,EAAE,KAAK;AACP,EAA4C;AAC5C,EAAE,MAAM,SAAA,GAAY,UAAU,CAAC,KAAK,CAAC;;AAErC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAC5B,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,MAAM,MAAA,GAAS,SAAS,CAAC,EAAE,GAAG,KAAA,EAAO,EAAE,IAAI,CAAC;;AAE9C,EAAE,WAAA,IAAe,MAAA,KAAW,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAA,IAAM,GAAG,CAAC,eAAe,CAAC,CAAC;;AAEvG,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAA,IAAS,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3F,EAAE;;AAEF,EAAE,OAAO,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAA,GAAQ,CAAC,CAAC;AACpE;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/exports.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/exports.js new file mode 100644 index 0000000..6eb9d85 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/exports.js @@ -0,0 +1,335 @@ +import { getCurrentScope, getClient, withIsolationScope, getIsolationScope } from './currentScopes.js'; +import { DEBUG_BUILD } from './debug-build.js'; +import { makeSession, updateSession, closeSession } from './session.js'; +import { startNewTrace } from './tracing/trace.js'; +import { debug } from './utils/debug-logger.js'; +import { isThenable } from './utils/is.js'; +import { uuid4 } from './utils/misc.js'; +import { parseEventHintOrCaptureContext } from './utils/prepareEvent.js'; +import { timestampInSeconds } from './utils/time.js'; +import { GLOBAL_OBJ } from './utils/worldwide.js'; + +/** + * Captures an exception event and sends it to Sentry. + * + * @param exception The exception to capture. + * @param hint Optional additional data to attach to the Sentry event. + * @returns the id of the captured Sentry event. + */ +function captureException(exception, hint) { + return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint)); +} + +/** + * Captures a message event and sends it to Sentry. + * + * @param message The message to send to Sentry. + * @param captureContext Define the level of the message or pass in additional data to attach to the message. + * @returns the id of the captured message. + */ +function captureMessage(message, captureContext) { + // This is necessary to provide explicit scopes upgrade, without changing the original + // arity of the `captureMessage(message, level)` method. + const level = typeof captureContext === 'string' ? captureContext : undefined; + const hint = typeof captureContext !== 'string' ? { captureContext } : undefined; + return getCurrentScope().captureMessage(message, level, hint); +} + +/** + * Captures a manually created event and sends it to Sentry. + * + * @param event The event to send to Sentry. + * @param hint Optional additional data to attach to the Sentry event. + * @returns the id of the captured event. + */ +function captureEvent(event, hint) { + return getCurrentScope().captureEvent(event, hint); +} + +/** + * Sets context data with the given name. + * @param name of the context + * @param context Any kind of data. This data will be normalized. + */ +function setContext(name, context) { + getIsolationScope().setContext(name, context); +} + +/** + * Set an object that will be merged sent as extra data with the event. + * @param extras Extras object to merge into current context. + */ +function setExtras(extras) { + getIsolationScope().setExtras(extras); +} + +/** + * Set key:value that will be sent as extra data with the event. + * @param key String of extra + * @param extra Any kind of data. This data will be normalized. + */ +function setExtra(key, extra) { + getIsolationScope().setExtra(key, extra); +} + +/** + * Set an object that will be merged sent as tags data with the event. + * @param tags Tags context object to merge into current context. + */ +function setTags(tags) { + getIsolationScope().setTags(tags); +} + +/** + * Set key:value that will be sent as tags data with the event. + * + * Can also be used to unset a tag, by passing `undefined`. + * + * @param key String key of tag + * @param value Value of tag + */ +function setTag(key, value) { + getIsolationScope().setTag(key, value); +} + +/** + * Updates user context information for future events. + * + * @param user User context object to be set in the current context. Pass `null` to unset the user. + */ +function setUser(user) { + getIsolationScope().setUser(user); +} + +/** + * Sets the conversation ID for the current isolation scope. + * + * @param conversationId The conversation ID to set. Pass `null` or `undefined` to unset the conversation ID. + */ +function setConversationId(conversationId) { + getIsolationScope().setConversationId(conversationId); +} + +/** + * The last error event id of the isolation scope. + * + * Warning: This function really returns the last recorded error event id on the current + * isolation scope. If you call this function after handling a certain error and another error + * is captured in between, the last one is returned instead of the one you might expect. + * Also, ids of events that were never sent to Sentry (for example because + * they were dropped in `beforeSend`) could be returned. + * + * @returns The last event id of the isolation scope. + */ +function lastEventId() { + return getIsolationScope().lastEventId(); +} + +/** + * Create a cron monitor check in and send it to Sentry. + * + * @param checkIn An object that describes a check in. + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + */ +function captureCheckIn(checkIn, upsertMonitorConfig) { + const scope = getCurrentScope(); + const client = getClient(); + if (!client) { + DEBUG_BUILD && debug.warn('Cannot capture check-in. No client defined.'); + } else if (!client.captureCheckIn) { + DEBUG_BUILD && debug.warn('Cannot capture check-in. Client does not support sending check-ins.'); + } else { + return client.captureCheckIn(checkIn, upsertMonitorConfig, scope); + } + + return uuid4(); +} + +/** + * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes. + * + * @param monitorSlug The distinct slug of the monitor. + * @param callback Callback to be monitored + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + */ +function withMonitor( + monitorSlug, + callback, + upsertMonitorConfig, +) { + function runCallback() { + const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig); + const now = timestampInSeconds(); + + function finishCheckIn(status) { + captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now }); + } + // Default behavior without isolateTrace + let maybePromiseResult; + try { + maybePromiseResult = callback(); + } catch (e) { + finishCheckIn('error'); + throw e; + } + + if (isThenable(maybePromiseResult)) { + return maybePromiseResult.then( + r => { + finishCheckIn('ok'); + return r; + }, + e => { + finishCheckIn('error'); + throw e; + }, + ) ; + } + finishCheckIn('ok'); + + return maybePromiseResult; + } + + return withIsolationScope(() => (upsertMonitorConfig?.isolateTrace ? startNewTrace(runCallback) : runCallback())); +} + +/** + * Call `flush()` on the current client, if there is one. See {@link Client.flush}. + * + * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause + * the client to wait until all events are sent before resolving the promise. + * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it + * doesn't (or if there's no client defined). + */ +async function flush(timeout) { + const client = getClient(); + if (client) { + return client.flush(timeout); + } + DEBUG_BUILD && debug.warn('Cannot flush events. No client defined.'); + return Promise.resolve(false); +} + +/** + * Call `close()` on the current client, if there is one. See {@link Client.close}. + * + * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this + * parameter will cause the client to wait until all events are sent before disabling itself. + * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it + * doesn't (or if there's no client defined). + */ +async function close(timeout) { + const client = getClient(); + if (client) { + return client.close(timeout); + } + DEBUG_BUILD && debug.warn('Cannot flush events and disable SDK. No client defined.'); + return Promise.resolve(false); +} + +/** + * Returns true if Sentry has been properly initialized. + */ +function isInitialized() { + return !!getClient(); +} + +/** If the SDK is initialized & enabled. */ +function isEnabled() { + const client = getClient(); + return client?.getOptions().enabled !== false && !!client?.getTransport(); +} + +/** + * Add an event processor. + * This will be added to the current isolation scope, ensuring any event that is processed in the current execution + * context will have the processor applied. + */ +function addEventProcessor(callback) { + getIsolationScope().addEventProcessor(callback); +} + +/** + * Start a session on the current isolation scope. + * + * @param context (optional) additional properties to be applied to the returned session object + * + * @returns the new active session + */ +function startSession(context) { + const isolationScope = getIsolationScope(); + const currentScope = getCurrentScope(); + + // Will fetch userAgent if called from browser sdk + const { userAgent } = GLOBAL_OBJ.navigator || {}; + + const session = makeSession({ + user: currentScope.getUser() || isolationScope.getUser(), + ...(userAgent && { userAgent }), + ...context, + }); + + // End existing session if there's one + const currentSession = isolationScope.getSession(); + if (currentSession?.status === 'ok') { + updateSession(currentSession, { status: 'exited' }); + } + + endSession(); + + // Afterwards we set the new session on the scope + isolationScope.setSession(session); + + return session; +} + +/** + * End the session on the current isolation scope. + */ +function endSession() { + const isolationScope = getIsolationScope(); + const currentScope = getCurrentScope(); + + const session = currentScope.getSession() || isolationScope.getSession(); + if (session) { + closeSession(session); + } + _sendSessionUpdate(); + + // the session is over; take it off of the scope + isolationScope.setSession(); +} + +/** + * Sends the current Session on the scope + */ +function _sendSessionUpdate() { + const isolationScope = getIsolationScope(); + const client = getClient(); + const session = isolationScope.getSession(); + if (session && client) { + client.captureSession(session); + } +} + +/** + * Sends the current session on the scope to Sentry + * + * @param end If set the session will be marked as exited and removed from the scope. + * Defaults to `false`. + */ +function captureSession(end = false) { + // both send the update and pull the session from the scope + if (end) { + endSession(); + return; + } + + // only send the update + _sendSessionUpdate(); +} + +export { addEventProcessor, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, endSession, flush, isEnabled, isInitialized, lastEventId, setContext, setConversationId, setExtra, setExtras, setTag, setTags, setUser, startSession, withMonitor }; +//# sourceMappingURL=exports.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/exports.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/exports.js.map new file mode 100644 index 0000000..d05090f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/exports.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exports.js","sources":["../../src/exports.ts"],"sourcesContent":["import { getClient, getCurrentScope, getIsolationScope, withIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { CaptureContext } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { startNewTrace } from './tracing/trace';\nimport type { CheckIn, FinishedCheckIn, MonitorConfig } from './types-hoist/checkin';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { Extra, Extras } from './types-hoist/extra';\nimport type { Primitive } from './types-hoist/misc';\nimport type { Session, SessionContext } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { User } from './types-hoist/user';\nimport { debug } from './utils/debug-logger';\nimport { isThenable } from './utils/is';\nimport { uuid4 } from './utils/misc';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { timestampInSeconds } from './utils/time';\nimport { GLOBAL_OBJ } from './utils/worldwide';\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 */\nexport function captureException(exception: unknown, hint?: ExclusiveEventHintOrCaptureContext): string {\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 */\nexport function captureMessage(message: string, captureContext?: CaptureContext | SeverityLevel): string {\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 */\nexport function captureEvent(event: Event, hint?: EventHint): string {\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 */\nexport function setContext(name: string, context: { [key: string]: unknown } | null): void {\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 */\nexport function setExtras(extras: Extras): void {\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 */\nexport function setExtra(key: string, extra: Extra): void {\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 */\nexport function setTags(tags: { [key: string]: Primitive }): void {\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 */\nexport function setTag(key: string, value: Primitive): void {\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 */\nexport function setUser(user: User | null): void {\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 */\nexport function setConversationId(conversationId: string | null | undefined): void {\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 */\nexport function lastEventId(): string | undefined {\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 */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\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 */\nexport function withMonitor(\n monitorSlug: CheckIn['monitorSlug'],\n callback: () => T,\n upsertMonitorConfig?: MonitorConfig,\n): T {\n function runCallback(): T {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status: FinishedCheckIn['status']): void {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n // Default behavior without isolateTrace\n let maybePromiseResult: T;\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 ) as T;\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 */\nexport async function flush(timeout?: number): Promise {\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 */\nexport async function close(timeout?: number): Promise {\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 */\nexport function isInitialized(): boolean {\n return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nexport function isEnabled(): boolean {\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 */\nexport function addEventProcessor(callback: EventProcessor): void {\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 */\nexport function startSession(context?: SessionContext): Session {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n user: currentScope.getUser() || isolationScope.getUser(),\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 */\nexport function endSession(): void {\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(): void {\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 */\nexport function captureSession(end: boolean = false): void {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/feedback.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/feedback.js new file mode 100644 index 0000000..a00e022 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/feedback.js @@ -0,0 +1,41 @@ +import { getCurrentScope, getClient } from './currentScopes.js'; + +/** + * Send user feedback to Sentry. + */ +function captureFeedback( + params, + hint = {}, + scope = getCurrentScope(), +) { + const { message, name, email, url, source, associatedEventId, tags } = params; + + const feedbackEvent = { + contexts: { + feedback: { + contact_email: email, + name, + message, + url, + source, + associated_event_id: associatedEventId, + }, + }, + type: 'feedback', + level: 'info', + tags, + }; + + const client = scope?.getClient() || getClient(); + + if (client) { + client.emit('beforeSendFeedback', feedbackEvent, hint); + } + + const eventId = scope.captureEvent(feedbackEvent, hint); + + return eventId; +} + +export { captureFeedback }; +//# sourceMappingURL=feedback.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/feedback.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/feedback.js.map new file mode 100644 index 0000000..c5e9b2c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/feedback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"feedback.js","sources":["../../src/feedback.ts"],"sourcesContent":["import { getClient, getCurrentScope } from './currentScopes';\nimport type { EventHint } from './types-hoist/event';\nimport type { FeedbackEvent, SendFeedbackParams } from './types-hoist/feedback';\n\n/**\n * Send user feedback to Sentry.\n */\nexport function captureFeedback(\n params: SendFeedbackParams,\n hint: EventHint & { includeReplay?: boolean } = {},\n scope = getCurrentScope(),\n): string {\n const { message, name, email, url, source, associatedEventId, tags } = params;\n\n const feedbackEvent: FeedbackEvent = {\n contexts: {\n feedback: {\n contact_email: email,\n name,\n message,\n url,\n source,\n associated_event_id: associatedEventId,\n },\n },\n type: 'feedback',\n level: 'info',\n tags,\n };\n\n const client = scope?.getClient() || getClient();\n\n if (client) {\n client.emit('beforeSendFeedback', feedbackEvent, hint);\n }\n\n const eventId = scope.captureEvent(feedbackEvent, hint);\n\n return eventId;\n}\n"],"names":[],"mappings":";;AAIA;AACA;AACA;AACO,SAAS,eAAe;AAC/B,EAAE,MAAM;AACR,EAAE,IAAI,GAA4C,EAAE;AACpD,EAAE,KAAA,GAAQ,eAAe,EAAE;AAC3B,EAAU;AACV,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAA,EAAK,GAAI,MAAM;;AAE/E,EAAE,MAAM,aAAa,GAAkB;AACvC,IAAI,QAAQ,EAAE;AACd,MAAM,QAAQ,EAAE;AAChB,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,IAAI;AACZ,QAAQ,OAAO;AACf,QAAQ,GAAG;AACX,QAAQ,MAAM;AACd,QAAQ,mBAAmB,EAAE,iBAAiB;AAC9C,OAAO;AACP,KAAK;AACL,IAAI,IAAI,EAAE,UAAU;AACpB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,IAAI;AACR,GAAG;;AAEH,EAAE,MAAM,MAAA,GAAS,KAAK,EAAE,SAAS,EAAC,IAAK,SAAS,EAAE;;AAElD,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,EAAE,IAAI,CAAC;AAC1D,EAAE;;AAEF,EAAE,MAAM,OAAA,GAAU,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC;;AAEzD,EAAE,OAAO,OAAO;AAChB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/fetch.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/fetch.js new file mode 100644 index 0000000..27c5e79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/fetch.js @@ -0,0 +1,317 @@ +import { getClient } from './currentScopes.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from './semanticAttributes.js'; +import { getActiveSpan } from './utils/spanUtils.js'; +import { setHttpStatus, SPAN_STATUS_ERROR } from './tracing/spanstatus.js'; +import { isRequest, isInstanceOf } from './utils/is.js'; +import { hasSpansEnabled } from './utils/hasSpansEnabled.js'; +import { SENTRY_BAGGAGE_KEY_PREFIX } from './utils/baggage.js'; +import { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan.js'; +import { startInactiveSpan } from './tracing/trace.js'; +import { getTraceData } from './utils/traceData.js'; +import { stripDataUrlContent, parseStringToURLObject, getSanitizedUrlStringFromUrlObject, isURLObjectRelative } from './utils/url.js'; + +/** + * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`. + * + * @returns Span if a span was created, otherwise void. + */ +function instrumentFetchRequest( + handlerData, + shouldCreateSpan, + shouldAttachHeaders, + spans, + spanOriginOrOptions, +) { + if (!handlerData.fetchData) { + return undefined; + } + + const { method, url } = handlerData.fetchData; + + const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url); + + if (handlerData.endTimestamp && shouldCreateSpanResult) { + const spanId = handlerData.fetchData.__span; + if (!spanId) return; + + const span = spans[spanId]; + if (span) { + endSpan(span, handlerData); + + _callOnRequestSpanEnd(span, handlerData, spanOriginOrOptions); + + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete spans[spanId]; + } + return undefined; + } + + // Backwards-compatible with the old signature. Needed to introduce the combined optional parameter + // to avoid API breakage for anyone calling this function with the optional spanOrigin parameter + // TODO (v11): remove this backwards-compatible code and only accept the options parameter + const { spanOrigin = 'auto.http.browser', propagateTraceparent = false } = + typeof spanOriginOrOptions === 'object' ? spanOriginOrOptions : { spanOrigin: spanOriginOrOptions }; + + const hasParent = !!getActiveSpan(); + + const span = + shouldCreateSpanResult && hasParent + ? startInactiveSpan(getSpanStartOptions(url, method, spanOrigin)) + : new SentryNonRecordingSpan(); + + handlerData.fetchData.__span = span.spanContext().spanId; + spans[span.spanContext().spanId] = span; + + if (shouldAttachHeaders(handlerData.fetchData.url)) { + const request = handlerData.args[0]; + + // Shallow clone the options object to avoid mutating the original user-provided object + // Examples: users re-using same options object for multiple fetch calls, frozen objects + const options = { ...(handlerData.args[1] || {}) }; + + const headers = _addTracingHeadersToFetchRequest( + request, + options, + // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction), + // we do not want to use the span as base for the trace headers, + // which means that the headers will be generated from the scope and the sampling decision is deferred + hasSpansEnabled() && hasParent ? span : undefined, + propagateTraceparent, + ); + if (headers) { + // Ensure this is actually set, if no options have been passed previously + handlerData.args[1] = options; + options.headers = headers; + } + } + + const client = getClient(); + + if (client) { + const fetchHint = { + input: handlerData.args, + response: handlerData.response, + startTimestamp: handlerData.startTimestamp, + endTimestamp: handlerData.endTimestamp, + } ; + + client.emit('beforeOutgoingRequestSpan', span, fetchHint); + } + + return span; +} + +/** + * Calls the onRequestSpanEnd callback if it is defined. + */ +function _callOnRequestSpanEnd( + span, + handlerData, + spanOriginOrOptions, +) { + const onRequestSpanEnd = + typeof spanOriginOrOptions === 'object' && spanOriginOrOptions !== null + ? spanOriginOrOptions.onRequestSpanEnd + : undefined; + + onRequestSpanEnd?.(span, { + headers: handlerData.response?.headers, + error: handlerData.error, + }); +} + +/** + * Adds sentry-trace and baggage headers to the various forms of fetch headers. + * exported only for testing purposes + * + * When we determine if we should add a baggage header, there are 3 cases: + * 1. No previous baggage header -> add baggage + * 2. Previous baggage header has no sentry baggage values -> add our baggage + * 3. Previous baggage header has sentry baggage values -> do nothing (might have been added manually by users) + */ +// eslint-disable-next-line complexity -- yup it's this complicated :( +function _addTracingHeadersToFetchRequest( + request, + fetchOptionsObj + +, + span, + propagateTraceparent, +) { + const traceHeaders = getTraceData({ span, propagateTraceparent }); + const sentryTrace = traceHeaders['sentry-trace']; + const baggage = traceHeaders.baggage; + const traceparent = traceHeaders.traceparent; + + // Nothing to do, when we return undefined here, the original headers will be used + if (!sentryTrace) { + return undefined; + } + + const originalHeaders = fetchOptionsObj.headers || (isRequest(request) ? request.headers : undefined); + + if (!originalHeaders) { + return { ...traceHeaders }; + } else if (isHeaders(originalHeaders)) { + const newHeaders = new Headers(originalHeaders); + + // We don't want to override manually added sentry headers + if (!newHeaders.get('sentry-trace')) { + newHeaders.set('sentry-trace', sentryTrace); + } + + if (propagateTraceparent && traceparent && !newHeaders.get('traceparent')) { + newHeaders.set('traceparent', traceparent); + } + + if (baggage) { + const prevBaggageHeader = newHeaders.get('baggage'); + + if (!prevBaggageHeader) { + newHeaders.set('baggage', baggage); + } else if (!baggageHeaderHasSentryBaggageValues(prevBaggageHeader)) { + newHeaders.set('baggage', `${prevBaggageHeader},${baggage}`); + } + } + + return newHeaders; + } else if (Array.isArray(originalHeaders)) { + const newHeaders = [...originalHeaders]; + + if (!originalHeaders.find(header => header[0] === 'sentry-trace')) { + newHeaders.push(['sentry-trace', sentryTrace]); + } + + if (propagateTraceparent && traceparent && !originalHeaders.find(header => header[0] === 'traceparent')) { + newHeaders.push(['traceparent', traceparent]); + } + + const prevBaggageHeaderWithSentryValues = originalHeaders.find( + header => header[0] === 'baggage' && baggageHeaderHasSentryBaggageValues(header[1]), + ); + + if (baggage && !prevBaggageHeaderWithSentryValues) { + // If there are multiple entries with the same key, the browser will merge the values into a single request header. + // Its therefore safe to simply push a "baggage" entry, even though there might already be another baggage header. + newHeaders.push(['baggage', baggage]); + } + + return newHeaders ; + } else { + const existingSentryTraceHeader = 'sentry-trace' in originalHeaders ? originalHeaders['sentry-trace'] : undefined; + const existingTraceparentHeader = 'traceparent' in originalHeaders ? originalHeaders.traceparent : undefined; + const existingBaggageHeader = 'baggage' in originalHeaders ? originalHeaders.baggage : undefined; + + const newBaggageHeaders = existingBaggageHeader + ? Array.isArray(existingBaggageHeader) + ? [...existingBaggageHeader] + : [existingBaggageHeader] + : []; + + const prevBaggageHeaderWithSentryValues = + existingBaggageHeader && + (Array.isArray(existingBaggageHeader) + ? existingBaggageHeader.find(headerItem => baggageHeaderHasSentryBaggageValues(headerItem)) + : baggageHeaderHasSentryBaggageValues(existingBaggageHeader)); + + if (baggage && !prevBaggageHeaderWithSentryValues) { + newBaggageHeaders.push(baggage); + } + + const newHeaders + + = { + ...originalHeaders, + 'sentry-trace': (existingSentryTraceHeader ) ?? sentryTrace, + baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined, + }; + + if (propagateTraceparent && traceparent && !existingTraceparentHeader) { + newHeaders.traceparent = traceparent; + } + + return newHeaders; + } +} + +function endSpan(span, handlerData) { + if (handlerData.response) { + setHttpStatus(span, handlerData.response.status); + + const contentLength = handlerData.response?.headers?.get('content-length'); + + if (contentLength) { + const contentLengthNum = parseInt(contentLength); + if (contentLengthNum > 0) { + span.setAttribute('http.response_content_length', contentLengthNum); + } + } + } else if (handlerData.error) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' }); + } + span.end(); +} + +function baggageHeaderHasSentryBaggageValues(baggageHeader) { + return baggageHeader.split(',').some(baggageEntry => baggageEntry.trim().startsWith(SENTRY_BAGGAGE_KEY_PREFIX)); +} + +function isHeaders(headers) { + return typeof Headers !== 'undefined' && isInstanceOf(headers, Headers); +} + +function getSpanStartOptions( + url, + method, + spanOrigin, +) { + // Data URLs need special handling because parseStringToURLObject treats them as "relative" + // (no "://"), causing getSanitizedUrlStringFromUrlObject to return just the pathname + // without the "data:" prefix, making later stripDataUrlContent calls ineffective. + // So for data URLs, we strip the content first and use that directly. + if (url.startsWith('data:')) { + const sanitizedUrl = stripDataUrlContent(url); + return { + name: `${method} ${sanitizedUrl}`, + attributes: getFetchSpanAttributes(url, undefined, method, spanOrigin), + }; + } + + const parsedUrl = parseStringToURLObject(url); + const sanitizedUrl = parsedUrl ? getSanitizedUrlStringFromUrlObject(parsedUrl) : url; + return { + name: `${method} ${sanitizedUrl}`, + attributes: getFetchSpanAttributes(url, parsedUrl, method, spanOrigin), + }; +} + +function getFetchSpanAttributes( + url, + parsedUrl, + method, + spanOrigin, +) { + const attributes = { + url: stripDataUrlContent(url), + type: 'fetch', + 'http.method': method, + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin, + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client', + }; + if (parsedUrl) { + if (!isURLObjectRelative(parsedUrl)) { + attributes['http.url'] = stripDataUrlContent(parsedUrl.href); + attributes['server.address'] = parsedUrl.host; + } + if (parsedUrl.search) { + attributes['http.query'] = parsedUrl.search; + } + if (parsedUrl.hash) { + attributes['http.fragment'] = parsedUrl.hash; + } + } + return attributes; +} + +export { _addTracingHeadersToFetchRequest, _callOnRequestSpanEnd, instrumentFetchRequest }; +//# sourceMappingURL=fetch.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/fetch.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/fetch.js.map new file mode 100644 index 0000000..e1a9b03 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/fetch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fetch.js","sources":["../../src/fetch.ts"],"sourcesContent":["import { getClient } from './currentScopes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from './semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, startInactiveSpan } from './tracing';\nimport { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan';\nimport type { FetchBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { HandlerDataFetch } from './types-hoist/instrument';\nimport type { ResponseHookInfo } from './types-hoist/request';\nimport type { Span, SpanAttributes, SpanOrigin } from './types-hoist/span';\nimport { SENTRY_BAGGAGE_KEY_PREFIX } from './utils/baggage';\nimport { hasSpansEnabled } from './utils/hasSpansEnabled';\nimport { isInstanceOf, isRequest } from './utils/is';\nimport { getActiveSpan } from './utils/spanUtils';\nimport { getTraceData } from './utils/traceData';\nimport {\n getSanitizedUrlStringFromUrlObject,\n isURLObjectRelative,\n parseStringToURLObject,\n stripDataUrlContent,\n} from './utils/url';\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not precisely the Header type used in Request, but it'll pass duck-typing\n | {\n append: (key: string, value: string) => void;\n get: (key: string) => string | null | undefined;\n };\n\ninterface InstrumentFetchRequestOptions {\n spanOrigin?: SpanOrigin;\n propagateTraceparent?: boolean;\n onRequestSpanEnd?: (span: Span, responseInformation: ResponseHookInfo) => void;\n}\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @deprecated pass an options object instead of the spanOrigin parameter\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOrigin: SpanOrigin,\n): Span | undefined;\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- needed because the other overload is deprecated\n instrumentFetchRequestOptions: InstrumentFetchRequestOptions,\n): Span | undefined;\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): Span | undefined {\n if (!handlerData.fetchData) {\n return undefined;\n }\n\n const { method, url } = handlerData.fetchData;\n\n const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url);\n\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n endSpan(span, handlerData);\n\n _callOnRequestSpanEnd(span, handlerData, spanOriginOrOptions);\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n // Backwards-compatible with the old signature. Needed to introduce the combined optional parameter\n // to avoid API breakage for anyone calling this function with the optional spanOrigin parameter\n // TODO (v11): remove this backwards-compatible code and only accept the options parameter\n const { spanOrigin = 'auto.http.browser', propagateTraceparent = false } =\n typeof spanOriginOrOptions === 'object' ? spanOriginOrOptions : { spanOrigin: spanOriginOrOptions };\n\n const hasParent = !!getActiveSpan();\n\n const span =\n shouldCreateSpanResult && hasParent\n ? startInactiveSpan(getSpanStartOptions(url, method, spanOrigin))\n : new SentryNonRecordingSpan();\n\n handlerData.fetchData.__span = span.spanContext().spanId;\n spans[span.spanContext().spanId] = span;\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n const request: string | Request = handlerData.args[0];\n\n // Shallow clone the options object to avoid mutating the original user-provided object\n // Examples: users re-using same options object for multiple fetch calls, frozen objects\n const options: { [key: string]: unknown } = { ...(handlerData.args[1] || {}) };\n\n const headers = _addTracingHeadersToFetchRequest(\n request,\n options,\n // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction),\n // we do not want to use the span as base for the trace headers,\n // which means that the headers will be generated from the scope and the sampling decision is deferred\n hasSpansEnabled() && hasParent ? span : undefined,\n propagateTraceparent,\n );\n if (headers) {\n // Ensure this is actually set, if no options have been passed previously\n handlerData.args[1] = options;\n options.headers = headers;\n }\n }\n\n const client = getClient();\n\n if (client) {\n const fetchHint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp: handlerData.startTimestamp,\n endTimestamp: handlerData.endTimestamp,\n } satisfies FetchBreadcrumbHint;\n\n client.emit('beforeOutgoingRequestSpan', span, fetchHint);\n }\n\n return span;\n}\n\n/**\n * Calls the onRequestSpanEnd callback if it is defined.\n */\nexport function _callOnRequestSpanEnd(\n span: Span,\n handlerData: HandlerDataFetch,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): void {\n const onRequestSpanEnd =\n typeof spanOriginOrOptions === 'object' && spanOriginOrOptions !== null\n ? spanOriginOrOptions.onRequestSpanEnd\n : undefined;\n\n onRequestSpanEnd?.(span, {\n headers: handlerData.response?.headers,\n error: handlerData.error,\n });\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers.\n * exported only for testing purposes\n *\n * When we determine if we should add a baggage header, there are 3 cases:\n * 1. No previous baggage header -> add baggage\n * 2. Previous baggage header has no sentry baggage values -> add our baggage\n * 3. Previous baggage header has sentry baggage values -> do nothing (might have been added manually by users)\n */\n// eslint-disable-next-line complexity -- yup it's this complicated :(\nexport function _addTracingHeadersToFetchRequest(\n request: string | Request,\n fetchOptionsObj: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | PolymorphicRequestHeaders;\n },\n span?: Span,\n propagateTraceparent?: boolean,\n): PolymorphicRequestHeaders | undefined {\n const traceHeaders = getTraceData({ span, propagateTraceparent });\n const sentryTrace = traceHeaders['sentry-trace'];\n const baggage = traceHeaders.baggage;\n const traceparent = traceHeaders.traceparent;\n\n // Nothing to do, when we return undefined here, the original headers will be used\n if (!sentryTrace) {\n return undefined;\n }\n\n const originalHeaders = fetchOptionsObj.headers || (isRequest(request) ? request.headers : undefined);\n\n if (!originalHeaders) {\n return { ...traceHeaders };\n } else if (isHeaders(originalHeaders)) {\n const newHeaders = new Headers(originalHeaders);\n\n // We don't want to override manually added sentry headers\n if (!newHeaders.get('sentry-trace')) {\n newHeaders.set('sentry-trace', sentryTrace);\n }\n\n if (propagateTraceparent && traceparent && !newHeaders.get('traceparent')) {\n newHeaders.set('traceparent', traceparent);\n }\n\n if (baggage) {\n const prevBaggageHeader = newHeaders.get('baggage');\n\n if (!prevBaggageHeader) {\n newHeaders.set('baggage', baggage);\n } else if (!baggageHeaderHasSentryBaggageValues(prevBaggageHeader)) {\n newHeaders.set('baggage', `${prevBaggageHeader},${baggage}`);\n }\n }\n\n return newHeaders;\n } else if (Array.isArray(originalHeaders)) {\n const newHeaders = [...originalHeaders];\n\n if (!originalHeaders.find(header => header[0] === 'sentry-trace')) {\n newHeaders.push(['sentry-trace', sentryTrace]);\n }\n\n if (propagateTraceparent && traceparent && !originalHeaders.find(header => header[0] === 'traceparent')) {\n newHeaders.push(['traceparent', traceparent]);\n }\n\n const prevBaggageHeaderWithSentryValues = originalHeaders.find(\n header => header[0] === 'baggage' && baggageHeaderHasSentryBaggageValues(header[1]),\n );\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push(['baggage', baggage]);\n }\n\n return newHeaders as PolymorphicRequestHeaders;\n } else {\n const existingSentryTraceHeader = 'sentry-trace' in originalHeaders ? originalHeaders['sentry-trace'] : undefined;\n const existingTraceparentHeader = 'traceparent' in originalHeaders ? originalHeaders.traceparent : undefined;\n const existingBaggageHeader = 'baggage' in originalHeaders ? originalHeaders.baggage : undefined;\n\n const newBaggageHeaders: string[] = existingBaggageHeader\n ? Array.isArray(existingBaggageHeader)\n ? [...existingBaggageHeader]\n : [existingBaggageHeader]\n : [];\n\n const prevBaggageHeaderWithSentryValues =\n existingBaggageHeader &&\n (Array.isArray(existingBaggageHeader)\n ? existingBaggageHeader.find(headerItem => baggageHeaderHasSentryBaggageValues(headerItem))\n : baggageHeaderHasSentryBaggageValues(existingBaggageHeader));\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n newBaggageHeaders.push(baggage);\n }\n\n const newHeaders: {\n 'sentry-trace': string;\n baggage: string | undefined;\n traceparent?: string;\n } = {\n ...originalHeaders,\n 'sentry-trace': (existingSentryTraceHeader as string | undefined) ?? sentryTrace,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n\n if (propagateTraceparent && traceparent && !existingTraceparentHeader) {\n newHeaders.traceparent = traceparent;\n }\n\n return newHeaders;\n }\n}\n\nfunction endSpan(span: Span, handlerData: HandlerDataFetch): void {\n if (handlerData.response) {\n setHttpStatus(span, handlerData.response.status);\n\n const contentLength = handlerData.response?.headers?.get('content-length');\n\n if (contentLength) {\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setAttribute('http.response_content_length', contentLengthNum);\n }\n }\n } else if (handlerData.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n span.end();\n}\n\nfunction baggageHeaderHasSentryBaggageValues(baggageHeader: string): boolean {\n return baggageHeader.split(',').some(baggageEntry => baggageEntry.trim().startsWith(SENTRY_BAGGAGE_KEY_PREFIX));\n}\n\nfunction isHeaders(headers: unknown): headers is Headers {\n return typeof Headers !== 'undefined' && isInstanceOf(headers, Headers);\n}\n\nfunction getSpanStartOptions(\n url: string,\n method: string,\n spanOrigin: SpanOrigin,\n): Parameters[0] {\n // Data URLs need special handling because parseStringToURLObject treats them as \"relative\"\n // (no \"://\"), causing getSanitizedUrlStringFromUrlObject to return just the pathname\n // without the \"data:\" prefix, making later stripDataUrlContent calls ineffective.\n // So for data URLs, we strip the content first and use that directly.\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, undefined, method, spanOrigin),\n };\n }\n\n const parsedUrl = parseStringToURLObject(url);\n const sanitizedUrl = parsedUrl ? getSanitizedUrlStringFromUrlObject(parsedUrl) : url;\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, parsedUrl, method, spanOrigin),\n };\n}\n\nfunction getFetchSpanAttributes(\n url: string,\n parsedUrl: ReturnType,\n method: string,\n spanOrigin: SpanOrigin,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n url: stripDataUrlContent(url),\n type: 'fetch',\n 'http.method': method,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n };\n if (parsedUrl) {\n if (!isURLObjectRelative(parsedUrl)) {\n attributes['http.url'] = stripDataUrlContent(parsedUrl.href);\n attributes['server.address'] = parsedUrl.host;\n }\n if (parsedUrl.search) {\n attributes['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n attributes['http.fragment'] = parsedUrl.hash;\n }\n }\n return attributes;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/index.js new file mode 100644 index 0000000..4572eef --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/index.js @@ -0,0 +1,137 @@ +export { registerSpanErrorInstrumentation } from './tracing/errors.js'; +export { getCapturedScopesOnSpan, setCapturedScopesOnSpan } from './tracing/utils.js'; +export { TRACING_DEFAULTS, startIdleSpan } from './tracing/idleSpan.js'; +export { SentrySpan } from './tracing/sentrySpan.js'; +export { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan.js'; +export { SPAN_STATUS_ERROR, SPAN_STATUS_OK, SPAN_STATUS_UNSET, getSpanStatusFromHttpCode, setHttpStatus } from './tracing/spanstatus.js'; +export { continueTrace, startInactiveSpan, startNewTrace, startSpan, startSpanManual, suppressTracing, withActiveSpan } from './tracing/trace.js'; +export { getDynamicSamplingContextFromClient, getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan, spanToBaggageHeader } from './tracing/dynamicSamplingContext.js'; +export { setMeasurement, timedEventsToMeasurements } from './tracing/measurement.js'; +export { sampleSpan } from './tracing/sampling.js'; +export { logSpanEnd, logSpanStart } from './tracing/logSpans.js'; +export { 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 } from './semanticAttributes.js'; +export { createEventEnvelope, createSessionEnvelope, createSpanEnvelope } from './envelope.js'; +export { addEventProcessor, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, endSession, flush, isEnabled, isInitialized, lastEventId, setContext, setConversationId, setExtra, setExtras, setTag, setTags, setUser, startSession, withMonitor } from './exports.js'; +export { getClient, getCurrentScope, getGlobalScope, getIsolationScope, getTraceContextFromScope, withIsolationScope, withScope } from './currentScopes.js'; +export { getDefaultCurrentScope, getDefaultIsolationScope } from './defaultScopes.js'; +export { setAsyncContextStrategy } from './asyncContext/index.js'; +export { getGlobalSingleton, getMainCarrier } from './carrier.js'; +export { closeSession, makeSession, updateSession } from './session.js'; +export { Scope } from './scope.js'; +export { notifyEventProcessors } from './eventProcessors.js'; +export { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint } from './api.js'; +export { Client } from './client.js'; +export { ServerRuntimeClient } from './server-runtime-client.js'; +export { initAndBind, setCurrentClient } from './sdk.js'; +export { createTransport } from './transports/base.js'; +export { makeOfflineTransport } from './transports/offline.js'; +export { MULTIPLEXED_TRANSPORT_EXTRA_KEY, makeMultiplexedTransport } from './transports/multiplexed.js'; +export { addIntegration, defineIntegration, getIntegrationsToSetup, installedIntegrations } from './integration.js'; +export { _INTERNAL_clearAiProviderSkips, _INTERNAL_shouldSkipAiProviderWrapping, _INTERNAL_skipAiProviderWrapping } from './utils/ai/providerSkip.js'; +export { applyScopeDataToEvent, getCombinedScopeData, mergeScopeData } from './utils/scopeData.js'; +export { prepareEvent } from './utils/prepareEvent.js'; +export { createCheckInEnvelope } from './checkin.js'; +export { hasSpansEnabled } from './utils/hasSpansEnabled.js'; +export { isSentryRequestUrl } from './utils/isSentryRequestUrl.js'; +export { handleCallbackErrors } from './utils/handleCallbackErrors.js'; +export { fmt, parameterize } from './utils/parameterize.js'; +export { addAutoIpAddressToSession, addAutoIpAddressToUser } from './utils/ipAddress.js'; +export { addChildSpanToSpan, convertSpanLinksForEnvelope, getActiveSpan, getRootSpan, getSpanDescendants, getStatusMessage, spanIsSampled, spanTimeInputToSeconds, spanToJSON, spanToTraceContext, spanToTraceHeader, updateSpanName } from './utils/spanUtils.js'; +export { _setSpanForScope as _INTERNAL_setSpanForScope } from './utils/spanOnScope.js'; +export { parseSampleRate } from './utils/parseSampleRate.js'; +export { applySdkMetadata } from './utils/sdkMetadata.js'; +export { getTraceData } from './utils/traceData.js'; +export { getTraceMetaTags } from './utils/meta.js'; +export { debounce } from './utils/debounce.js'; +export { extractQueryParamsFromUrl, headersToDict, httpHeadersToSpanAttributes, httpRequestToRequestData, winterCGHeadersToDict, winterCGRequestToRequestData } from './utils/request.js'; +export { DEFAULT_ENVIRONMENT, DEV_ENVIRONMENT } from './constants.js'; +export { addBreadcrumb } from './breadcrumbs.js'; +export { functionToStringIntegration } from './integrations/functiontostring.js'; +export { eventFiltersIntegration, inboundFiltersIntegration } from './integrations/eventFilters.js'; +export { linkedErrorsIntegration } from './integrations/linkederrors.js'; +export { moduleMetadataIntegration } from './integrations/moduleMetadata.js'; +export { requestDataIntegration } from './integrations/requestdata.js'; +export { captureConsoleIntegration } from './integrations/captureconsole.js'; +export { dedupeIntegration } from './integrations/dedupe.js'; +export { extraErrorDataIntegration } from './integrations/extraerrordata.js'; +export { rewriteFramesIntegration } from './integrations/rewriteframes.js'; +export { instrumentSupabaseClient, supabaseIntegration } from './integrations/supabase.js'; +export { zodErrorsIntegration } from './integrations/zoderrors.js'; +export { thirdPartyErrorFilterIntegration } from './integrations/third-party-errors-filter.js'; +export { consoleIntegration } from './integrations/console.js'; +export { featureFlagsIntegration } from './integrations/featureFlags/featureFlagsIntegration.js'; +export { growthbookIntegration } from './integrations/featureFlags/growthbook.js'; +export { conversationIdIntegration } from './integrations/conversationId.js'; +export { profiler } from './profiling.js'; +export { instrumentFetchRequest } from './fetch.js'; +export { trpcMiddleware } from './trpc.js'; +export { wrapMcpServerWithSentry } from './integrations/mcp-server/index.js'; +export { captureFeedback } from './feedback.js'; +export { _INTERNAL_captureLog, _INTERNAL_captureSerializedLog, _INTERNAL_flushLogsBuffer } from './logs/internal.js'; +import * as publicApi from './logs/public-api.js'; +export { publicApi as logger }; +export { consoleLoggingIntegration } from './logs/console-integration.js'; +export { _INTERNAL_captureMetric, _INTERNAL_captureSerializedMetric, _INTERNAL_flushMetricsBuffer } from './metrics/internal.js'; +import * as publicApi$1 from './metrics/public-api.js'; +export { publicApi$1 as metrics }; +export { createConsolaReporter } from './integrations/consola.js'; +export { addVercelAiProcessors } from './tracing/vercel-ai/index.js'; +export { _INTERNAL_cleanupToolCallSpan, _INTERNAL_getSpanForToolCallId } from './tracing/vercel-ai/utils.js'; +export { instrumentOpenAiClient } from './tracing/openai/index.js'; +export { OPENAI_INTEGRATION_NAME } from './tracing/openai/constants.js'; +export { instrumentAnthropicAiClient } from './tracing/anthropic-ai/index.js'; +export { ANTHROPIC_AI_INTEGRATION_NAME } from './tracing/anthropic-ai/constants.js'; +export { instrumentGoogleGenAIClient } from './tracing/google-genai/index.js'; +export { GOOGLE_GENAI_INTEGRATION_NAME } from './tracing/google-genai/constants.js'; +export { createLangChainCallbackHandler } from './tracing/langchain/index.js'; +export { LANGCHAIN_INTEGRATION_NAME } from './tracing/langchain/constants.js'; +export { instrumentLangGraph, instrumentStateGraphCompile } from './tracing/langgraph/index.js'; +export { LANGGRAPH_INTEGRATION_NAME } from './tracing/langgraph/constants.js'; +export { _INTERNAL_FLAG_BUFFER_SIZE, _INTERNAL_MAX_FLAGS_PER_SPAN, _INTERNAL_addFeatureFlagToActiveSpan, _INTERNAL_copyFlagsFromScopeToEvent, _INTERNAL_insertFlagToScope } from './utils/featureFlags.js'; +export { applyAggregateErrorsToEvent } from './utils/aggregate-errors.js'; +export { getBreadcrumbLogLevelFromHttpStatusCode } from './utils/breadcrumb-log-level.js'; +export { getComponentName, getLocationHref, htmlTreeAsString } from './utils/browser.js'; +export { dsnFromString, dsnToString, makeDsn } from './utils/dsn.js'; +export { SentryError } from './utils/error.js'; +export { GLOBAL_OBJ } from './utils/worldwide.js'; +export { addConsoleInstrumentationHandler } from './instrument/console.js'; +export { addFetchEndInstrumentationHandler, addFetchInstrumentationHandler } from './instrument/fetch.js'; +export { addGlobalErrorInstrumentationHandler } from './instrument/globalError.js'; +export { addGlobalUnhandledRejectionInstrumentationHandler } from './instrument/globalUnhandledRejection.js'; +export { addHandler, maybeInstrument, resetInstrumentationHandlers, triggerHandlers } from './instrument/handlers.js'; +export { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable, isVueViewModel } from './utils/is.js'; +export { isBrowser } from './utils/isBrowser.js'; +export { CONSOLE_LEVELS, consoleSandbox, debug, originalConsoleMethods } from './utils/debug-logger.js'; +export { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 } from './utils/misc.js'; +export { isNodeEnv, loadModule } from './utils/node.js'; +export { normalize, normalizeToSize, normalizeUrlToBase } from './utils/normalize.js'; +export { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify } from './utils/object.js'; +export { basename, dirname, isAbsolute, join, normalizePath, relative, resolve } from './utils/path.js'; +export { SENTRY_BUFFER_FULL_ERROR, makePromiseBuffer } from './utils/promisebuffer.js'; +export { severityLevelFromString } from './utils/severity.js'; +export { replaceExports } from './utils/exports.js'; +export { UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, stackParserFromStackParserOptions, stripSentryFramesAndReverse } from './utils/stacktrace.js'; +export { filenameIsInApp, node, nodeStackLineParser } from './utils/node-stack-trace.js'; +export { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate } from './utils/string.js'; +export { isNativeFunction, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsHistory, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver } from './utils/supports.js'; +export { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './utils/syncpromise.js'; +export { browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds } from './utils/time.js'; +export { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, generateTraceparentHeader, propagationContextFromHeaders, shouldContinueTrace } from './utils/tracing.js'; +export { getSDKSource, isBrowserBundle } from './utils/env.js'; +export { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, createSpanEnvelopeItem, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope } from './utils/envelope.js'; +export { createClientReportEnvelope } from './utils/clientreport.js'; +export { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits } from './utils/ratelimit.js'; +export { MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader, objectToBaggageHeader, parseBaggageHeader } from './utils/baggage.js'; +export { getHttpSpanDetailsFromUrlObject, getSanitizedUrlString, getSanitizedUrlStringFromUrlObject, isURLObjectRelative, parseStringToURLObject, parseUrl, stripDataUrlContent, stripUrlQueryAndFragment } from './utils/url.js'; +export { _enhanceErrorWithSentryInfo as _INTERNAL_enhanceErrorWithSentryInfo, eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames } from './utils/eventbuilder.js'; +export { callFrameToStackFrame, watchdogTimer } from './utils/anr.js'; +export { LRUMap } from './utils/lru.js'; +export { generateSpanId, generateTraceId } from './utils/propagationContext.js'; +export { vercelWaitUntil } from './utils/vercelWaitUntil.js'; +export { flushIfServerless } from './utils/flushIfServerless.js'; +export { SDK_VERSION } from './utils/version.js'; +export { getDebugImagesForResources, getFilenameToDebugIdMap } from './utils/debug-ids.js'; +export { getFilenameToMetadataMap } from './metadata.js'; +export { escapeStringForRegex } from './vendor/escapeStringForRegex.js'; +export { safeDateNow as _INTERNAL_safeDateNow, safeMathRandom as _INTERNAL_safeMathRandom, withRandomSafeContext as _INTERNAL_withRandomSafeContext } from './utils/randomSafeContext.js'; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/index.js.map new file mode 100644 index 0000000..96e4074 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/console.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/console.js new file mode 100644 index 0000000..bfd3041 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/console.js @@ -0,0 +1,43 @@ +import { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger.js'; +import { fill } from '../utils/object.js'; +import { GLOBAL_OBJ } from '../utils/worldwide.js'; +import { addHandler, maybeInstrument, triggerHandlers } from './handlers.js'; + +/** + * Add an instrumentation handler for when a console.xxx method is called. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +function addConsoleInstrumentationHandler(handler) { + const type = 'console'; + addHandler(type, handler); + maybeInstrument(type, instrumentConsole); +} + +function instrumentConsole() { + if (!('console' in GLOBAL_OBJ)) { + return; + } + + CONSOLE_LEVELS.forEach(function (level) { + if (!(level in GLOBAL_OBJ.console)) { + return; + } + + fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod) { + originalConsoleMethods[level] = originalConsoleMethod; + + return function (...args) { + const handlerData = { args, level }; + triggerHandlers('console', handlerData); + + const log = originalConsoleMethods[level]; + log?.apply(GLOBAL_OBJ.console, args); + }; + }); + }); +} + +export { addConsoleInstrumentationHandler }; +//# sourceMappingURL=console.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/console.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/console.js.map new file mode 100644 index 0000000..6eb9f3b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/console.js.map @@ -0,0 +1 @@ +{"version":3,"file":"console.js","sources":["../../../src/instrument/console.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger';\nimport { fill } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\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 */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args: any[]): void {\n const handlerData: HandlerDataConsole = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log?.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n"],"names":[],"mappings":";;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gCAAgC,CAAC,OAAO,EAA4C;AACpG,EAAE,MAAM,IAAA,GAAO,SAAS;AACxB,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3B,EAAE,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC;AAC1C;;AAEA,SAAS,iBAAiB,GAAS;AACnC,EAAE,IAAI,EAAE,aAAa,UAAU,CAAC,EAAE;AAClC,IAAI;AACJ,EAAE;;AAEF,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU,KAAK,EAAsB;AAC9D,IAAI,IAAI,EAAE,KAAA,IAAS,UAAU,CAAC,OAAO,CAAC,EAAE;AACxC,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,qBAAqB,EAAuB;AAC1F,MAAM,sBAAsB,CAAC,KAAK,CAAA,GAAI,qBAAqB;;AAE3D,MAAM,OAAO,UAAU,GAAG,IAAI,EAAe;AAC7C,QAAQ,MAAM,WAAW,GAAuB,EAAE,IAAI,EAAE,OAAO;AAC/D,QAAQ,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC;;AAE/C,QAAQ,MAAM,GAAA,GAAM,sBAAsB,CAAC,KAAK,CAAC;AACjD,QAAQ,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5C,MAAM,CAAC;AACP,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC;AACJ;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/fetch.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/fetch.js new file mode 100644 index 0000000..a42c87e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/fetch.js @@ -0,0 +1,299 @@ +import { getClient } from '../currentScopes.js'; +import { isError, isRequest } from '../utils/is.js'; +import { fill, addNonEnumerableProperty } from '../utils/object.js'; +import { supportsNativeFetch } from '../utils/supports.js'; +import { timestampInSeconds } from '../utils/time.js'; +import { GLOBAL_OBJ } from '../utils/worldwide.js'; +import { addHandler, maybeInstrument, triggerHandlers } from './handlers.js'; + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +/** + * Add an instrumentation handler for when a fetch request happens. + * The handler function is called once when the request starts and once when it ends, + * which can be identified by checking if it has an `endTimestamp`. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +function addFetchInstrumentationHandler( + handler, + skipNativeFetchCheck, +) { + const type = 'fetch'; + addHandler(type, handler); + maybeInstrument(type, () => instrumentFetch(undefined, skipNativeFetchCheck)); +} + +/** + * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch. + * The handler will resolve the request body and emit the actual `endTimestamp`, so that the + * span can be updated accordingly. + * + * Only used internally + * @hidden + */ +function addFetchEndInstrumentationHandler(handler) { + const type = 'fetch-body-resolved'; + addHandler(type, handler); + maybeInstrument(type, () => instrumentFetch(streamHandler)); +} + +function instrumentFetch(onFetchResolved, skipNativeFetchCheck = false) { + if (skipNativeFetchCheck && !supportsNativeFetch()) { + return; + } + + fill(GLOBAL_OBJ, 'fetch', function (originalFetch) { + return function (...args) { + // We capture the error right here and not in the Promise error callback because Safari (and probably other + // browsers too) will wipe the stack trace up to this point, only leaving us with this file which is useless. + + // NOTE: If you are a Sentry user, and you are seeing this stack frame, + // it means the error, that was caused by your fetch call did not + // have a stack trace, so the SDK backfilled the stack trace so + // you can see which fetch call failed. + const virtualError = new Error(); + + const { method, url } = parseFetchArgs(args); + const handlerData = { + args, + fetchData: { + method, + url, + }, + startTimestamp: timestampInSeconds() * 1000, + // // Adding the error to be able to fingerprint the failed fetch event in HttpClient instrumentation + virtualError, + headers: getHeadersFromFetchArgs(args), + }; + + // if there is no callback, fetch is instrumented directly + if (!onFetchResolved) { + triggerHandlers('fetch', { + ...handlerData, + }); + } + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return originalFetch.apply(GLOBAL_OBJ, args).then( + async (response) => { + if (onFetchResolved) { + onFetchResolved(response); + } else { + triggerHandlers('fetch', { + ...handlerData, + endTimestamp: timestampInSeconds() * 1000, + response, + }); + } + + return response; + }, + (error) => { + triggerHandlers('fetch', { + ...handlerData, + endTimestamp: timestampInSeconds() * 1000, + error, + }); + + if (isError(error) && error.stack === undefined) { + // NOTE: If you are a Sentry user, and you are seeing this stack frame, + // it means the error, that was caused by your fetch call did not + // have a stack trace, so the SDK backfilled the stack trace so + // you can see which fetch call failed. + error.stack = virtualError.stack; + addNonEnumerableProperty(error, 'framesToPop', 1); + } + + // We enhance fetch error messages with hostname information based on the configuration. + // Possible messages we handle here: + // * "Failed to fetch" (chromium) + // * "Load failed" (webkit) + // * "NetworkError when attempting to fetch resource." (firefox) + const client = getClient(); + const enhanceOption = client?.getOptions().enhanceFetchErrorMessages ?? 'always'; + const shouldEnhance = enhanceOption !== false; + + if ( + shouldEnhance && + error instanceof TypeError && + (error.message === 'Failed to fetch' || + error.message === 'Load failed' || + error.message === 'NetworkError when attempting to fetch resource.') + ) { + try { + const url = new URL(handlerData.fetchData.url); + const hostname = url.host; + + if (enhanceOption === 'always') { + // Modify the error message directly + error.message = `${error.message} (${hostname})`; + } else { + // Store hostname as non-enumerable property for Sentry-only enhancement + // This preserves the original error message for third-party packages + addNonEnumerableProperty(error, '__sentry_fetch_url_host__', hostname); + } + } catch { + // ignore it if errors happen here + } + } + + // NOTE: If you are a Sentry user, and you are seeing this stack frame, + // it means the sentry.javascript SDK caught an error invoking your application code. + // This is expected behavior and NOT indicative of a bug with sentry.javascript. + throw error; + }, + ); + }; + }); +} + +async function resolveResponse(res, onFinishedResolving) { + if (res?.body) { + const body = res.body; + const responseReader = body.getReader(); + + // Define a maximum duration after which we just cancel + const maxFetchDurationTimeout = setTimeout( + () => { + body.cancel().then(null, () => { + // noop + }); + }, + 90 * 1000, // 90s + ); + + let readingActive = true; + while (readingActive) { + let chunkTimeout; + try { + // abort reading if read op takes more than 5s + chunkTimeout = setTimeout(() => { + body.cancel().then(null, () => { + // noop on error + }); + }, 5000); + + // This .read() call will reject/throw when we abort due to timeouts through `body.cancel()` + const { done } = await responseReader.read(); + + clearTimeout(chunkTimeout); + + if (done) { + onFinishedResolving(); + readingActive = false; + } + } catch { + readingActive = false; + } finally { + clearTimeout(chunkTimeout); + } + } + + clearTimeout(maxFetchDurationTimeout); + + responseReader.releaseLock(); + body.cancel().then(null, () => { + // noop on error + }); + } +} + +function streamHandler(response) { + // clone response for awaiting stream + let clonedResponseForResolving; + try { + clonedResponseForResolving = response.clone(); + } catch { + return; + } + + // eslint-disable-next-line @typescript-eslint/no-floating-promises + resolveResponse(clonedResponseForResolving, () => { + triggerHandlers('fetch-body-resolved', { + endTimestamp: timestampInSeconds() * 1000, + response, + }); + }); +} + +function hasProp(obj, prop) { + return !!obj && typeof obj === 'object' && !!(obj )[prop]; +} + +function getUrlFromResource(resource) { + if (typeof resource === 'string') { + return resource; + } + + if (!resource) { + return ''; + } + + if (hasProp(resource, 'url')) { + return resource.url; + } + + if (resource.toString) { + return resource.toString(); + } + + return ''; +} + +/** + * Parses the fetch arguments to find the used Http method and the url of the request. + * Exported for tests only. + */ +function parseFetchArgs(fetchArgs) { + if (fetchArgs.length === 0) { + return { method: 'GET', url: '' }; + } + + if (fetchArgs.length === 2) { + const [resource, options] = fetchArgs ; + + return { + url: getUrlFromResource(resource), + method: hasProp(options, 'method') + ? String(options.method).toUpperCase() + : // Request object as first argument + isRequest(resource) && hasProp(resource, 'method') + ? String(resource.method).toUpperCase() + : 'GET', + }; + } + + const arg = fetchArgs[0]; + return { + url: getUrlFromResource(arg ), + method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET', + }; +} + +function getHeadersFromFetchArgs(fetchArgs) { + const [requestArgument, optionsArgument] = fetchArgs; + + try { + if ( + typeof optionsArgument === 'object' && + optionsArgument !== null && + 'headers' in optionsArgument && + optionsArgument.headers + ) { + return new Headers(optionsArgument.headers ); + } + + if (isRequest(requestArgument)) { + return new Headers(requestArgument.headers); + } + } catch { + // noop + } + + return; +} + +export { addFetchEndInstrumentationHandler, addFetchInstrumentationHandler, parseFetchArgs }; +//# sourceMappingURL=fetch.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/fetch.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/fetch.js.map new file mode 100644 index 0000000..2c1d352 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/fetch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fetch.js","sources":["../../../src/instrument/fetch.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getClient } from '../currentScopes';\nimport type { HandlerDataFetch } from '../types-hoist/instrument';\nimport type { WebFetchHeaders } from '../types-hoist/webfetchapi';\nimport { isError, isRequest } from '../utils/is';\nimport { addNonEnumerableProperty, fill } from '../utils/object';\nimport { supportsNativeFetch } from '../utils/supports';\nimport { timestampInSeconds } from '../utils/time';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(\n handler: (data: HandlerDataFetch) => void,\n skipNativeFetchCheck?: boolean,\n): void {\n const type = 'fetch';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(undefined, skipNativeFetchCheck));\n}\n\n/**\n * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch.\n * The handler will resolve the request body and emit the actual `endTimestamp`, so that the\n * span can be updated accordingly.\n *\n * Only used internally\n * @hidden\n */\nexport function addFetchEndInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n const type = 'fetch-body-resolved';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(streamHandler));\n}\n\nfunction instrumentFetch(onFetchResolved?: (response: Response) => void, skipNativeFetchCheck: boolean = false): void {\n if (skipNativeFetchCheck && !supportsNativeFetch()) {\n return;\n }\n\n fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n // We capture the error right here and not in the Promise error callback because Safari (and probably other\n // browsers too) will wipe the stack trace up to this point, only leaving us with this file which is useless.\n\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n const virtualError = new Error();\n\n const { method, url } = parseFetchArgs(args);\n const handlerData: HandlerDataFetch = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: timestampInSeconds() * 1000,\n // // Adding the error to be able to fingerprint the failed fetch event in HttpClient instrumentation\n virtualError,\n headers: getHeadersFromFetchArgs(args),\n };\n\n // if there is no callback, fetch is instrumented directly\n if (!onFetchResolved) {\n triggerHandlers('fetch', {\n ...handlerData,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(GLOBAL_OBJ, args).then(\n async (response: Response) => {\n if (onFetchResolved) {\n onFetchResolved(response);\n } else {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n }\n\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n error,\n });\n\n if (isError(error) && error.stack === undefined) {\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n error.stack = virtualError.stack;\n addNonEnumerableProperty(error, 'framesToPop', 1);\n }\n\n // We enhance fetch error messages with hostname information based on the configuration.\n // Possible messages we handle here:\n // * \"Failed to fetch\" (chromium)\n // * \"Load failed\" (webkit)\n // * \"NetworkError when attempting to fetch resource.\" (firefox)\n const client = getClient();\n const enhanceOption = client?.getOptions().enhanceFetchErrorMessages ?? 'always';\n const shouldEnhance = enhanceOption !== false;\n\n if (\n shouldEnhance &&\n error instanceof TypeError &&\n (error.message === 'Failed to fetch' ||\n error.message === 'Load failed' ||\n error.message === 'NetworkError when attempting to fetch resource.')\n ) {\n try {\n const url = new URL(handlerData.fetchData.url);\n const hostname = url.host;\n\n if (enhanceOption === 'always') {\n // Modify the error message directly\n error.message = `${error.message} (${hostname})`;\n } else {\n // Store hostname as non-enumerable property for Sentry-only enhancement\n // This preserves the original error message for third-party packages\n addNonEnumerableProperty(error, '__sentry_fetch_url_host__', hostname);\n }\n } catch {\n // ignore it if errors happen here\n }\n }\n\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\nasync function resolveResponse(res: Response | undefined, onFinishedResolving: () => void): Promise {\n if (res?.body) {\n const body = res.body;\n const responseReader = body.getReader();\n\n // Define a maximum duration after which we just cancel\n const maxFetchDurationTimeout = setTimeout(\n () => {\n body.cancel().then(null, () => {\n // noop\n });\n },\n 90 * 1000, // 90s\n );\n\n let readingActive = true;\n while (readingActive) {\n let chunkTimeout;\n try {\n // abort reading if read op takes more than 5s\n chunkTimeout = setTimeout(() => {\n body.cancel().then(null, () => {\n // noop on error\n });\n }, 5000);\n\n // This .read() call will reject/throw when we abort due to timeouts through `body.cancel()`\n const { done } = await responseReader.read();\n\n clearTimeout(chunkTimeout);\n\n if (done) {\n onFinishedResolving();\n readingActive = false;\n }\n } catch {\n readingActive = false;\n } finally {\n clearTimeout(chunkTimeout);\n }\n }\n\n clearTimeout(maxFetchDurationTimeout);\n\n responseReader.releaseLock();\n body.cancel().then(null, () => {\n // noop on error\n });\n }\n}\n\nfunction streamHandler(response: Response): void {\n // clone response for awaiting stream\n let clonedResponseForResolving: Response;\n try {\n clonedResponseForResolving = response.clone();\n } catch {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resolveResponse(clonedResponseForResolving, () => {\n triggerHandlers('fetch-body-resolved', {\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n });\n}\n\nfunction hasProp(obj: unknown, prop: T): obj is Record {\n return !!obj && typeof obj === 'object' && !!(obj as Record)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [resource, options] = fetchArgs as [FetchResource, object];\n\n return {\n url: getUrlFromResource(resource),\n method: hasProp(options, 'method')\n ? String(options.method).toUpperCase()\n : // Request object as first argument\n isRequest(resource) && hasProp(resource, 'method')\n ? String(resource.method).toUpperCase()\n : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg as FetchResource),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n\nfunction getHeadersFromFetchArgs(fetchArgs: unknown[]): WebFetchHeaders | undefined {\n const [requestArgument, optionsArgument] = fetchArgs;\n\n try {\n if (\n typeof optionsArgument === 'object' &&\n optionsArgument !== null &&\n 'headers' in optionsArgument &&\n optionsArgument.headers\n ) {\n return new Headers(optionsArgument.headers as any);\n }\n\n if (isRequest(requestArgument)) {\n return new Headers(requestArgument.headers);\n }\n } catch {\n // noop\n }\n\n return;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalError.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalError.js new file mode 100644 index 0000000..17684b6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalError.js @@ -0,0 +1,51 @@ +import { GLOBAL_OBJ } from '../utils/worldwide.js'; +import { addHandler, maybeInstrument, triggerHandlers } from './handlers.js'; + +let _oldOnErrorHandler = null; + +/** + * Add an instrumentation handler for when an error is captured by the global error handler. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +function addGlobalErrorInstrumentationHandler(handler) { + const type = 'error'; + addHandler(type, handler); + maybeInstrument(type, instrumentError); +} + +function instrumentError() { + _oldOnErrorHandler = GLOBAL_OBJ.onerror; + + // Note: The reason we are doing window.onerror instead of window.addEventListener('error') + // is that we are using this handler in the Loader Script, to handle buffered errors consistently + GLOBAL_OBJ.onerror = function ( + msg, + url, + line, + column, + error, + ) { + const handlerData = { + column, + error, + line, + msg, + url, + }; + triggerHandlers('error', handlerData); + + if (_oldOnErrorHandler) { + // eslint-disable-next-line prefer-rest-params + return _oldOnErrorHandler.apply(this, arguments); + } + + return false; + }; + + GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true; +} + +export { addGlobalErrorInstrumentationHandler }; +//# sourceMappingURL=globalError.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalError.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalError.js.map new file mode 100644 index 0000000..f151833 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalError.js","sources":["../../../src/instrument/globalError.ts"],"sourcesContent":["import type { HandlerDataError } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = 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 */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\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: string | object,\n url?: string,\n line?: number,\n column?: number,\n error?: Error,\n ): boolean {\n const handlerData: HandlerDataError = {\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"],"names":[],"mappings":";;;AAIA,IAAI,kBAAkB,GAA0C,IAAI;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oCAAoC,CAAC,OAAO,EAA0C;AACtG,EAAE,MAAM,IAAA,GAAO,OAAO;AACtB,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3B,EAAE,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC;AACxC;;AAEA,SAAS,eAAe,GAAS;AACjC,EAAE,kBAAA,GAAqB,UAAU,CAAC,OAAO;;AAEzC;AACA;AACA,EAAE,UAAU,CAAC,OAAA,GAAU;AACvB,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,IAAI;AACR,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAa;AACb,IAAI,MAAM,WAAW,GAAqB;AAC1C,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,MAAM,IAAI;AACV,MAAM,GAAG;AACT,MAAM,GAAG;AACT,KAAK;AACL,IAAI,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC;;AAEzC,IAAI,IAAI,kBAAkB,EAAE;AAC5B;AACA,MAAM,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AACtD,IAAI;;AAEJ,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC;;AAEH,EAAE,UAAU,CAAC,OAAO,CAAC,uBAAA,GAA0B,IAAI;AACnD;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalUnhandledRejection.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalUnhandledRejection.js new file mode 100644 index 0000000..dd6cb59 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalUnhandledRejection.js @@ -0,0 +1,41 @@ +import { GLOBAL_OBJ } from '../utils/worldwide.js'; +import { addHandler, maybeInstrument, triggerHandlers } from './handlers.js'; + +let _oldOnUnhandledRejectionHandler = null; + +/** + * Add an instrumentation handler for when an unhandled promise rejection is captured. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +function addGlobalUnhandledRejectionInstrumentationHandler( + handler, +) { + const type = 'unhandledrejection'; + addHandler(type, handler); + maybeInstrument(type, instrumentUnhandledRejection); +} + +function instrumentUnhandledRejection() { + _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection; + + // Note: The reason we are doing window.onunhandledrejection instead of window.addEventListener('unhandledrejection') + // is that we are using this handler in the Loader Script, to handle buffered rejections consistently + GLOBAL_OBJ.onunhandledrejection = function (e) { + const handlerData = e; + triggerHandlers('unhandledrejection', handlerData); + + if (_oldOnUnhandledRejectionHandler) { + // eslint-disable-next-line prefer-rest-params + return _oldOnUnhandledRejectionHandler.apply(this, arguments); + } + + return true; + }; + + GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true; +} + +export { addGlobalUnhandledRejectionInstrumentationHandler }; +//# sourceMappingURL=globalUnhandledRejection.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalUnhandledRejection.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalUnhandledRejection.js.map new file mode 100644 index 0000000..ba2b990 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/globalUnhandledRejection.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globalUnhandledRejection.js","sources":["../../../src/instrument/globalUnhandledRejection.ts"],"sourcesContent":["import type { HandlerDataUnhandledRejection } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = 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 */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\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: unknown): boolean {\n const handlerData: HandlerDataUnhandledRejection = 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"],"names":[],"mappings":";;;AAIA,IAAI,+BAA+B,GAAuD,IAAI;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iDAAiD;AACjE,EAAE,OAAO;AACT,EAAQ;AACR,EAAE,MAAM,IAAA,GAAO,oBAAoB;AACnC,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3B,EAAE,eAAe,CAAC,IAAI,EAAE,4BAA4B,CAAC;AACrD;;AAEA,SAAS,4BAA4B,GAAS;AAC9C,EAAE,+BAAA,GAAkC,UAAU,CAAC,oBAAoB;;AAEnE;AACA;AACA,EAAE,UAAU,CAAC,oBAAA,GAAuB,UAAU,CAAC,EAAoB;AACnE,IAAI,MAAM,WAAW,GAAkC,CAAC;AACxD,IAAI,eAAe,CAAC,oBAAoB,EAAE,WAAW,CAAC;;AAEtD,IAAI,IAAI,+BAA+B,EAAE;AACzC;AACA,MAAM,OAAO,+BAA+B,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AACnE,IAAI;;AAEJ,IAAI,OAAO,IAAI;AACf,EAAE,CAAC;;AAEH,EAAE,UAAU,CAAC,oBAAoB,CAAC,uBAAA,GAA0B,IAAI;AAChE;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/handlers.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/handlers.js new file mode 100644 index 0000000..c0bfd9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/handlers.js @@ -0,0 +1,58 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug } from '../utils/debug-logger.js'; +import { getFunctionName } from '../utils/stacktrace.js'; + +// We keep the handlers globally +const handlers = {}; +const instrumented = {}; + +/** Add a handler function. */ +function addHandler(type, handler) { + handlers[type] = handlers[type] || []; + handlers[type].push(handler); +} + +/** + * Reset all instrumentation handlers. + * This can be used by tests to ensure we have a clean slate of instrumentation handlers. + */ +function resetInstrumentationHandlers() { + Object.keys(handlers).forEach(key => { + handlers[key ] = undefined; + }); +} + +/** Maybe run an instrumentation function, unless it was already called. */ +function maybeInstrument(type, instrumentFn) { + if (!instrumented[type]) { + instrumented[type] = true; + try { + instrumentFn(); + } catch (e) { + DEBUG_BUILD && debug.error(`Error while instrumenting ${type}`, e); + } + } +} + +/** Trigger handlers for a given instrumentation type. */ +function triggerHandlers(type, data) { + const typeHandlers = type && handlers[type]; + if (!typeHandlers) { + return; + } + + for (const handler of typeHandlers) { + try { + handler(data); + } catch (e) { + DEBUG_BUILD && + debug.error( + `Error while triggering instrumentation handler.\nType: ${type}\nName: ${getFunctionName(handler)}\nError:`, + e, + ); + } + } +} + +export { addHandler, maybeInstrument, resetInstrumentationHandlers, triggerHandlers }; +//# sourceMappingURL=handlers.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/handlers.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/handlers.js.map new file mode 100644 index 0000000..4b897c1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/instrument/handlers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"handlers.js","sources":["../../../src/instrument/handlers.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { debug } from '../utils/debug-logger';\nimport { getFunctionName } from '../utils/stacktrace';\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'fetch-body-resolved'\n | 'history'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\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 */\nexport function resetInstrumentationHandlers(): void {\n Object.keys(handlers).forEach(key => {\n handlers[key as InstrumentHandlerType] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\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. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\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"],"names":[],"mappings":";;;;AAgBA;AACA,MAAM,QAAQ,GAAqE,EAAE;AACrF,MAAM,YAAY,GAAiD,EAAE;;AAErE;AACO,SAAS,UAAU,CAAC,IAAI,EAAyB,OAAO,EAAmC;AAClG,EAAE,QAAQ,CAAC,IAAI,CAAA,GAAI,QAAQ,CAAC,IAAI,CAAA,IAAK,EAAE;AACvC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACO,SAAS,4BAA4B,GAAS;AACrD,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAA,IAAO;AACvC,IAAI,QAAQ,CAAC,GAAA,EAAI,GAA4B,SAAS;AACtD,EAAE,CAAC,CAAC;AACJ;;AAEA;AACO,SAAS,eAAe,CAAC,IAAI,EAAyB,YAAY,EAAoB;AAC7F,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC3B,IAAI,YAAY,CAAC,IAAI,CAAA,GAAI,IAAI;AAC7B,IAAI,IAAI;AACR,MAAM,YAAY,EAAE;AACpB,IAAI,CAAA,CAAE,OAAO,CAAC,EAAE;AAChB,MAAM,WAAA,IAAe,KAAK,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAA,EAAA,CAAA,CAAA;AACA,IAAA;AACA,EAAA;AACA;;AAEA;AACA,SAAA,eAAA,CAAA,IAAA,EAAA,IAAA,EAAA;AACA,EAAA,MAAA,YAAA,GAAA,IAAA,IAAA,QAAA,CAAA,IAAA,CAAA;AACA,EAAA,IAAA,CAAA,YAAA,EAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,KAAA,MAAA,OAAA,IAAA,YAAA,EAAA;AACA,IAAA,IAAA;AACA,MAAA,OAAA,CAAA,IAAA,CAAA;AACA,IAAA,CAAA,CAAA,OAAA,CAAA,EAAA;AACA,MAAA,WAAA;AACA,QAAA,KAAA,CAAA,KAAA;AACA,UAAA,CAAA,uDAAA,EAAA,IAAA,CAAA,QAAA,EAAA,eAAA,CAAA,OAAA,CAAA,CAAA,QAAA,CAAA;AACA,UAAA,CAAA;AACA,SAAA;AACA,IAAA;AACA,EAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integration.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integration.js new file mode 100644 index 0000000..be7f805 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integration.js @@ -0,0 +1,150 @@ +import { getClient } from './currentScopes.js'; +import { DEBUG_BUILD } from './debug-build.js'; +import { debug } from './utils/debug-logger.js'; + +const installedIntegrations = []; + +/** Map of integrations assigned to a client */ + +/** + * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to + * preserve the order of integrations in the array. + * + * @private + */ +function filterDuplicates(integrations) { + const integrationsByName = {}; + + integrations.forEach((currentInstance) => { + const { name } = currentInstance; + + const existingInstance = integrationsByName[name]; + + // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a + // default instance to overwrite an existing user instance + if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) { + return; + } + + integrationsByName[name] = currentInstance; + }); + + return Object.values(integrationsByName); +} + +/** Gets integrations to install */ +function getIntegrationsToSetup( + options, +) { + const defaultIntegrations = options.defaultIntegrations || []; + const userIntegrations = options.integrations; + + // We flag default instances, so that later we can tell them apart from any user-created instances of the same class + defaultIntegrations.forEach((integration) => { + integration.isDefaultInstance = true; + }); + + let integrations; + + if (Array.isArray(userIntegrations)) { + integrations = [...defaultIntegrations, ...userIntegrations]; + } else if (typeof userIntegrations === 'function') { + const resolvedUserIntegrations = userIntegrations(defaultIntegrations); + integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations]; + } else { + integrations = defaultIntegrations; + } + + return filterDuplicates(integrations); +} + +/** + * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default + * integrations are added unless they were already provided before. + * @param integrations array of integration instances + * @param withDefault should enable default integrations + */ +function setupIntegrations(client, integrations) { + const integrationIndex = {}; + + integrations.forEach((integration) => { + // guard against empty provided integrations + if (integration) { + setupIntegration(client, integration, integrationIndex); + } + }); + + return integrationIndex; +} + +/** + * Execute the `afterAllSetup` hooks of the given integrations. + */ +function afterSetupIntegrations(client, integrations) { + for (const integration of integrations) { + // guard against empty provided integrations + if (integration?.afterAllSetup) { + integration.afterAllSetup(client); + } + } +} + +/** Setup a single integration. */ +function setupIntegration(client, integration, integrationIndex) { + if (integrationIndex[integration.name]) { + DEBUG_BUILD && debug.log(`Integration skipped because it was already installed: ${integration.name}`); + return; + } + integrationIndex[integration.name] = integration; + + // `setupOnce` is only called the first time + if (!installedIntegrations.includes(integration.name) && typeof integration.setupOnce === 'function') { + integration.setupOnce(); + installedIntegrations.push(integration.name); + } + + // `setup` is run for each client + if (integration.setup && typeof integration.setup === 'function') { + integration.setup(client); + } + + if (typeof integration.preprocessEvent === 'function') { + const callback = integration.preprocessEvent.bind(integration) ; + client.on('preprocessEvent', (event, hint) => callback(event, hint, client)); + } + + if (typeof integration.processEvent === 'function') { + const callback = integration.processEvent.bind(integration) ; + + const processor = Object.assign((event, hint) => callback(event, hint, client), { + id: integration.name, + }); + + client.addEventProcessor(processor); + } + + DEBUG_BUILD && debug.log(`Integration installed: ${integration.name}`); +} + +/** Add an integration to the current scope's client. */ +function addIntegration(integration) { + const client = getClient(); + + if (!client) { + DEBUG_BUILD && debug.warn(`Cannot add integration "${integration.name}" because no SDK Client is available.`); + return; + } + + client.addIntegration(integration); +} + +/** + * Define an integration function that can be used to create an integration instance. + * Note that this by design hides the implementation details of the integration, as they are considered internal. + */ +function defineIntegration(fn) { + return fn; +} + +export { addIntegration, afterSetupIntegrations, defineIntegration, getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations }; +//# sourceMappingURL=integration.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integration.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integration.js.map new file mode 100644 index 0000000..f7b1347 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"integration.js","sources":["../../src/integration.ts"],"sourcesContent":["import type { Client } from './client';\nimport { getClient } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { Integration, IntegrationFn } from './types-hoist/integration';\nimport type { CoreOptions } from './types-hoist/options';\nimport { debug } from './utils/debug-logger';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\ntype IntegrationWithDefaultInstance = Integration & { isDefaultInstance?: true };\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: Integration[]): Integration[] {\n const integrationsByName: { [key: string]: Integration } = {};\n\n integrations.forEach((currentInstance: IntegrationWithDefaultInstance) => {\n const { name } = currentInstance;\n\n const existingInstance: IntegrationWithDefaultInstance | undefined = 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 */\nexport function getIntegrationsToSetup(\n options: Pick,\n): Integration[] {\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: IntegrationWithDefaultInstance) => {\n integration.isDefaultInstance = true;\n });\n\n let integrations: Integration[];\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 */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach((integration: Integration | undefined) => {\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 */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\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. */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\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) as typeof integration.preprocessEvent;\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) as typeof integration.processEvent;\n\n const processor = Object.assign((event: Event, hint: EventHint) => 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. */\nexport function addIntegration(integration: Integration): void {\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 */\nexport function defineIntegration(fn: Fn): (...args: Parameters) => Integration {\n return fn;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/captureconsole.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/captureconsole.js new file mode 100644 index 0000000..4df69db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/captureconsole.js @@ -0,0 +1,92 @@ +import { getClient, withScope } from '../currentScopes.js'; +import { captureException } from '../exports.js'; +import { addConsoleInstrumentationHandler } from '../instrument/console.js'; +import { defineIntegration } from '../integration.js'; +import { CONSOLE_LEVELS } from '../utils/debug-logger.js'; +import { addExceptionMechanism } from '../utils/misc.js'; +import { severityLevelFromString } from '../utils/severity.js'; +import { safeJoin } from '../utils/string.js'; +import { GLOBAL_OBJ } from '../utils/worldwide.js'; + +const INTEGRATION_NAME = 'CaptureConsole'; + +const _captureConsoleIntegration = ((options = {}) => { + const levels = options.levels || CONSOLE_LEVELS; + const handled = options.handled ?? true; + + return { + name: INTEGRATION_NAME, + setup(client) { + if (!('console' in GLOBAL_OBJ)) { + return; + } + + addConsoleInstrumentationHandler(({ args, level }) => { + if (getClient() !== client || !levels.includes(level)) { + return; + } + + consoleHandler(args, level, handled); + }); + }, + }; +}) ; + +/** + * Send Console API calls as Sentry Events. + */ +const captureConsoleIntegration = defineIntegration(_captureConsoleIntegration); + +function consoleHandler(args, level, handled) { + const severityLevel = severityLevelFromString(level); + + /* + We create this error here already to attach a stack trace to captured messages, + if users set `attachStackTrace` to `true` in Sentry.init. + We do this here already because we want to minimize the number of Sentry SDK stack frames + within the error. Technically, Client.captureMessage will also do it but this happens several + stack frames deeper. + */ + const syntheticException = new Error(); + + const captureContext = { + level: severityLevelFromString(level), + extra: { + arguments: args, + }, + }; + + withScope(scope => { + scope.addEventProcessor(event => { + event.logger = 'console'; + + addExceptionMechanism(event, { + handled, + type: 'auto.core.capture_console', + }); + + return event; + }); + + if (level === 'assert') { + if (!args[0]) { + const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`; + scope.setExtra('arguments', args.slice(1)); + scope.captureMessage(message, severityLevel, { captureContext, syntheticException }); + } + return; + } + + const error = args.find(arg => arg instanceof Error); + if (error) { + captureException(error, captureContext); + return; + } + + const message = safeJoin(args, ' '); + scope.captureMessage(message, severityLevel, { captureContext, syntheticException }); + }); +} + +export { captureConsoleIntegration }; +//# sourceMappingURL=captureconsole.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/captureconsole.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/captureconsole.js.map new file mode 100644 index 0000000..65ecd0c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/captureconsole.js.map @@ -0,0 +1 @@ +{"version":3,"file":"captureconsole.js","sources":["../../../src/integrations/captureconsole.ts"],"sourcesContent":["import { getClient, withScope } from '../currentScopes';\nimport { captureException } from '../exports';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { CaptureContext } from '../scope';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { addExceptionMechanism } from '../utils/misc';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface CaptureConsoleOptions {\n levels?: string[];\n\n /**\n * By default, Sentry will mark captured console messages as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled?: boolean;\n}\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options: CaptureConsoleOptions = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n const handled = options.handled ?? true;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n consoleHandler(args, level, handled);\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Send Console API calls as Sentry Events.\n */\nexport const captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\nfunction consoleHandler(args: unknown[], level: string, handled: boolean): void {\n const severityLevel = severityLevelFromString(level);\n\n /*\n We create this error here already to attach a stack trace to captured messages,\n if users set `attachStackTrace` to `true` in Sentry.init.\n We do this here already because we want to minimize the number of Sentry SDK stack frames\n within the error. Technically, Client.captureMessage will also do it but this happens several\n stack frames deeper.\n */\n const syntheticException = new Error();\n\n const captureContext: CaptureContext = {\n level: severityLevelFromString(level),\n extra: {\n arguments: args,\n },\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'console';\n\n addExceptionMechanism(event, {\n handled,\n type: 'auto.core.capture_console',\n });\n\n return event;\n });\n\n if (level === 'assert') {\n if (!args[0]) {\n const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n }\n return;\n }\n\n const error = args.find(arg => arg instanceof Error);\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n const message = safeJoin(args, ' ');\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n });\n}\n"],"names":[],"mappings":";;;;;;;;;;AAwBA,MAAM,gBAAA,GAAmB,gBAAgB;;AAEzC,MAAM,0BAAA,IAA8B,CAAC,OAAO,GAA0B,EAAE,KAAK;AAC7E,EAAE,MAAM,MAAA,GAAS,OAAO,CAAC,MAAA,IAAU,cAAc;AACjD,EAAE,MAAM,OAAA,GAAU,OAAO,CAAC,OAAA,IAAW,IAAI;;AAEzC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,IAAI,EAAE,aAAa,UAAU,CAAC,EAAE;AACtC,QAAQ;AACR,MAAM;;AAEN,MAAM,gCAAgC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAA,EAAO,KAAK;AAC5D,QAAQ,IAAI,SAAS,OAAO,MAAA,IAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/D,UAAU;AACV,QAAQ;;AAER,QAAQ,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAC5C,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;AAED;AACA;AACA;MACa,yBAAA,GAA4B,iBAAiB,CAAC,0BAA0B;;AAErF,SAAS,cAAc,CAAC,IAAI,EAAa,KAAK,EAAU,OAAO,EAAiB;AAChF,EAAE,MAAM,aAAA,GAAgB,uBAAuB,CAAC,KAAK,CAAC;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,kBAAA,GAAqB,IAAI,KAAK,EAAE;;AAExC,EAAE,MAAM,cAAc,GAAmB;AACzC,IAAI,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC;AACzC,IAAI,KAAK,EAAE;AACX,MAAM,SAAS,EAAE,IAAI;AACrB,KAAK;AACL,GAAG;;AAEH,EAAE,SAAS,CAAC,KAAA,IAAS;AACrB,IAAI,KAAK,CAAC,iBAAiB,CAAC,SAAS;AACrC,MAAM,KAAK,CAAC,MAAA,GAAS,SAAS;;AAE9B,MAAM,qBAAqB,CAAC,KAAK,EAAE;AACnC,QAAQ,OAAO;AACf,QAAQ,IAAI,EAAE,2BAA2B;AACzC,OAAO,CAAC;;AAER,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC,CAAC;;AAEN,IAAI,IAAI,KAAA,KAAU,QAAQ,EAAE;AAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACpB,QAAQ,MAAM,UAAU,CAAC,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAA;AACA,QAAA,KAAA,CAAA,QAAA,CAAA,WAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AACA,QAAA,KAAA,CAAA,cAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,CAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;;AAEA,IAAA,MAAA,KAAA,GAAA,IAAA,CAAA,IAAA,CAAA,GAAA,IAAA,GAAA,YAAA,KAAA,CAAA;AACA,IAAA,IAAA,KAAA,EAAA;AACA,MAAA,gBAAA,CAAA,KAAA,EAAA,cAAA,CAAA;AACA,MAAA;AACA,IAAA;;AAEA,IAAA,MAAA,OAAA,GAAA,QAAA,CAAA,IAAA,EAAA,GAAA,CAAA;AACA,IAAA,KAAA,CAAA,cAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,CAAA;AACA,EAAA,CAAA,CAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/consola.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/consola.js new file mode 100644 index 0000000..2dc4bcf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/consola.js @@ -0,0 +1,172 @@ +import { getClient } from '../currentScopes.js'; +import { _INTERNAL_captureLog } from '../logs/internal.js'; +import { formatConsoleArgs } from '../logs/utils.js'; + +/** + * Options for the Sentry Consola reporter. + */ + +const DEFAULT_CAPTURED_LEVELS = ['trace', 'debug', 'info', 'warn', 'error', 'fatal']; + +/** + * Creates a new Sentry reporter for Consola that forwards logs to Sentry. Requires the `enableLogs` option to be enabled. + * + * **Note: This integration supports Consola v3.x only.** The reporter interface and log object structure + * may differ in other versions of Consola. + * + * @param options - Configuration options for the reporter. + * @returns A Consola reporter that can be added to consola instances. + * + * @example + * ```ts + * import * as Sentry from '@sentry/node'; + * import { consola } from 'consola'; + * + * Sentry.init({ + * enableLogs: true, + * }); + * + * const sentryReporter = Sentry.createConsolaReporter({ + * // Optional: filter levels to capture + * levels: ['error', 'warn', 'info'], + * }); + * + * consola.addReporter(sentryReporter); + * + * // Now consola logs will be captured by Sentry + * consola.info('This will be sent to Sentry'); + * consola.error('This error will also be sent to Sentry'); + * ``` + */ +function createConsolaReporter(options = {}) { + const levels = new Set(options.levels ?? DEFAULT_CAPTURED_LEVELS); + const providedClient = options.client; + + return { + log(logObj) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { type, level, message: consolaMessage, args, tag, date: _date, ...attributes } = logObj; + + // Get client - use provided client or current client + const client = providedClient || getClient(); + if (!client) { + return; + } + + // Determine the log severity level + const logSeverityLevel = getLogSeverityLevel(type, level); + + // Early exit if this level should not be captured + if (!levels.has(logSeverityLevel)) { + return; + } + + const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = client.getOptions(); + + // Format the log message using the same approach as consola's basic reporter + const messageParts = []; + if (consolaMessage) { + messageParts.push(consolaMessage); + } + if (args && args.length > 0) { + messageParts.push(formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth)); + } + const message = messageParts.join(' '); + + // Build attributes + attributes['sentry.origin'] = 'auto.log.consola'; + + if (tag) { + attributes['consola.tag'] = tag; + } + + if (type) { + attributes['consola.type'] = type; + } + + // Only add level if it's a valid number (not null/undefined) + if (level != null && typeof level === 'number') { + attributes['consola.level'] = level; + } + + _INTERNAL_captureLog({ + level: logSeverityLevel, + message, + attributes, + }); + }, + }; +} + +// Mapping from consola log types to Sentry log severity levels +const CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP = { + // Consola built-in types + silent: 'trace', + fatal: 'fatal', + error: 'error', + warn: 'warn', + log: 'info', + info: 'info', + success: 'info', + fail: 'error', + ready: 'info', + start: 'info', + box: 'info', + debug: 'debug', + trace: 'trace', + verbose: 'debug', + // Custom types that might exist + critical: 'fatal', + notice: 'info', +}; + +// Mapping from consola log levels (numbers) to Sentry log severity levels +const CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP = { + 0: 'fatal', // Fatal and Error + 1: 'warn', // Warnings + 2: 'info', // Normal logs + 3: 'info', // Informational logs, success, fail, ready, start, ... + 4: 'debug', // Debug logs + 5: 'trace', // Trace logs +}; + +/** + * Determines the log severity level from Consola type and level. + * + * @param type - The Consola log type (e.g., 'error', 'warn', 'info') + * @param level - The Consola numeric log level (0-5) or null for some types like 'verbose' + * @returns The corresponding Sentry log severity level + */ +function getLogSeverityLevel(type, level) { + // Handle special case for verbose logs (level can be null with infinite level in Consola) + if (type === 'verbose') { + return 'debug'; + } + + // Handle silent logs - these should be at trace level + if (type === 'silent') { + return 'trace'; + } + + // First try to map by type (more specific) + if (type) { + const mappedLevel = CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP[type]; + if (mappedLevel) { + return mappedLevel; + } + } + + // Fallback to level mapping (handle null level) + if (typeof level === 'number') { + const mappedLevel = CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[level]; + if (mappedLevel) { + return mappedLevel; + } + } + + // Default fallback + return 'info'; +} + +export { createConsolaReporter }; +//# sourceMappingURL=consola.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/consola.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/consola.js.map new file mode 100644 index 0000000..752a171 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/consola.js.map @@ -0,0 +1 @@ +{"version":3,"file":"consola.js","sources":["../../../src/integrations/consola.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { getClient } from '../currentScopes';\nimport { _INTERNAL_captureLog } from '../logs/internal';\nimport { formatConsoleArgs } from '../logs/utils';\nimport type { LogSeverityLevel } from '../types-hoist/log';\n\n/**\n * Options for the Sentry Consola reporter.\n */\ninterface ConsolaReporterOptions {\n /**\n * Use this option to filter which levels should be captured. By default, all levels are captured.\n *\n * @example\n * ```ts\n * const sentryReporter = Sentry.createConsolaReporter({\n * // Only capture error and warn logs\n * levels: ['error', 'warn'],\n * });\n * consola.addReporter(sentryReporter);\n * ```\n */\n levels?: Array;\n\n /**\n * Optionally provide a specific Sentry client instance to use for capturing logs.\n * If not provided, the current client will be retrieved using `getClient()`.\n *\n * This is useful when you want to use specific client options for log normalization\n * or when working with multiple client instances.\n *\n * @example\n * ```ts\n * const sentryReporter = Sentry.createConsolaReporter({\n * client: myCustomClient,\n * });\n * ```\n */\n client?: Client;\n}\n\nexport interface ConsolaReporter {\n log: (logObj: ConsolaLogObject) => void;\n}\n\n/**\n * Represents a log object that Consola reporters receive.\n *\n * This interface matches the structure of log objects passed to Consola reporters.\n * See: https://github.com/unjs/consola#custom-reporters\n *\n * @example\n * ```ts\n * const reporter = {\n * log(logObj: ConsolaLogObject) {\n * console.log(`[${logObj.type}] ${logObj.message || logObj.args?.join(' ')}`);\n * }\n * };\n * consola.addReporter(reporter);\n * ```\n */\nexport interface ConsolaLogObject {\n /**\n * Allows additional custom properties to be set on the log object.\n * These properties will be captured as log attributes with a 'consola.' prefix.\n *\n * @example\n * ```ts\n * const reporter = Sentry.createConsolaReporter();\n * reporter.log({\n * type: 'info',\n * message: 'User action',\n * userId: 123,\n * sessionId: 'abc-123'\n * });\n * // Will create attributes: consola.userId and consola.sessionId\n * ```\n */\n [key: string]: unknown;\n\n /**\n * The numeric log level (0-5) or null.\n *\n * Consola log levels:\n * - 0: Fatal and Error\n * - 1: Warnings\n * - 2: Normal logs\n * - 3: Informational logs, success, fail, ready, start, box, ...\n * - 4: Debug logs\n * - 5: Trace logs\n * - null: Some special types like 'verbose'\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#log-level\n */\n level?: number | null;\n\n /**\n * The log type/method name (e.g., 'error', 'warn', 'info', 'debug', 'trace', 'success', 'fail', etc.).\n *\n * Consola built-in types include:\n * - Standard: silent, fatal, error, warn, log, info, success, fail, ready, start, box, debug, trace, verbose\n * - Custom types can also be defined\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#log-types\n */\n type?: string;\n\n /**\n * An optional tag/scope for the log entry.\n *\n * Tags are created using `consola.withTag('scope')` and help categorize logs.\n *\n * @example\n * ```ts\n * const scopedLogger = consola.withTag('auth');\n * scopedLogger.info('User logged in'); // tag will be 'auth'\n * ```\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#withtagtag\n */\n tag?: string;\n\n /**\n * The raw arguments passed to the log method.\n *\n * When `message` is not provided, these args are typically formatted into the final message.\n *\n * @example\n * ```ts\n * consola.info('Hello', 'world', { user: 'john' });\n * // args = ['Hello', 'world', { user: 'john' }]\n * ```\n */\n args?: unknown[];\n\n /**\n * The timestamp when the log was created.\n *\n * This is automatically set by Consola when the log is created.\n */\n date?: Date;\n\n /**\n * The formatted log message.\n *\n * When provided, this is the final formatted message. When not provided,\n * the message should be constructed from the `args` array.\n */\n message?: string;\n}\n\nconst DEFAULT_CAPTURED_LEVELS: Array = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\n/**\n * Creates a new Sentry reporter for Consola that forwards logs to Sentry. Requires the `enableLogs` option to be enabled.\n *\n * **Note: This integration supports Consola v3.x only.** The reporter interface and log object structure\n * may differ in other versions of Consola.\n *\n * @param options - Configuration options for the reporter.\n * @returns A Consola reporter that can be added to consola instances.\n *\n * @example\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import { consola } from 'consola';\n *\n * Sentry.init({\n * enableLogs: true,\n * });\n *\n * const sentryReporter = Sentry.createConsolaReporter({\n * // Optional: filter levels to capture\n * levels: ['error', 'warn', 'info'],\n * });\n *\n * consola.addReporter(sentryReporter);\n *\n * // Now consola logs will be captured by Sentry\n * consola.info('This will be sent to Sentry');\n * consola.error('This error will also be sent to Sentry');\n * ```\n */\nexport function createConsolaReporter(options: ConsolaReporterOptions = {}): ConsolaReporter {\n const levels = new Set(options.levels ?? DEFAULT_CAPTURED_LEVELS);\n const providedClient = options.client;\n\n return {\n log(logObj: ConsolaLogObject) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { type, level, message: consolaMessage, args, tag, date: _date, ...attributes } = logObj;\n\n // Get client - use provided client or current client\n const client = providedClient || getClient();\n if (!client) {\n return;\n }\n\n // Determine the log severity level\n const logSeverityLevel = getLogSeverityLevel(type, level);\n\n // Early exit if this level should not be captured\n if (!levels.has(logSeverityLevel)) {\n return;\n }\n\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = client.getOptions();\n\n // Format the log message using the same approach as consola's basic reporter\n const messageParts = [];\n if (consolaMessage) {\n messageParts.push(consolaMessage);\n }\n if (args && args.length > 0) {\n messageParts.push(formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth));\n }\n const message = messageParts.join(' ');\n\n // Build attributes\n attributes['sentry.origin'] = 'auto.log.consola';\n\n if (tag) {\n attributes['consola.tag'] = tag;\n }\n\n if (type) {\n attributes['consola.type'] = type;\n }\n\n // Only add level if it's a valid number (not null/undefined)\n if (level != null && typeof level === 'number') {\n attributes['consola.level'] = level;\n }\n\n _INTERNAL_captureLog({\n level: logSeverityLevel,\n message,\n attributes,\n });\n },\n };\n}\n\n// Mapping from consola log types to Sentry log severity levels\nconst CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n // Consola built-in types\n silent: 'trace',\n fatal: 'fatal',\n error: 'error',\n warn: 'warn',\n log: 'info',\n info: 'info',\n success: 'info',\n fail: 'error',\n ready: 'info',\n start: 'info',\n box: 'info',\n debug: 'debug',\n trace: 'trace',\n verbose: 'debug',\n // Custom types that might exist\n critical: 'fatal',\n notice: 'info',\n};\n\n// Mapping from consola log levels (numbers) to Sentry log severity levels\nconst CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n 0: 'fatal', // Fatal and Error\n 1: 'warn', // Warnings\n 2: 'info', // Normal logs\n 3: 'info', // Informational logs, success, fail, ready, start, ...\n 4: 'debug', // Debug logs\n 5: 'trace', // Trace logs\n};\n\n/**\n * Determines the log severity level from Consola type and level.\n *\n * @param type - The Consola log type (e.g., 'error', 'warn', 'info')\n * @param level - The Consola numeric log level (0-5) or null for some types like 'verbose'\n * @returns The corresponding Sentry log severity level\n */\nfunction getLogSeverityLevel(type?: string, level?: number | null): LogSeverityLevel {\n // Handle special case for verbose logs (level can be null with infinite level in Consola)\n if (type === 'verbose') {\n return 'debug';\n }\n\n // Handle silent logs - these should be at trace level\n if (type === 'silent') {\n return 'trace';\n }\n\n // First try to map by type (more specific)\n if (type) {\n const mappedLevel = CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP[type];\n if (mappedLevel) {\n return mappedLevel;\n }\n }\n\n // Fallback to level mapping (handle null level)\n if (typeof level === 'number') {\n const mappedLevel = CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[level];\n if (mappedLevel) {\n return mappedLevel;\n }\n }\n\n // Default fallback\n return 'info';\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/console.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/console.js new file mode 100644 index 0000000..aaf6f80 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/console.js @@ -0,0 +1,85 @@ +import { addBreadcrumb } from '../breadcrumbs.js'; +import { getClient } from '../currentScopes.js'; +import { addConsoleInstrumentationHandler } from '../instrument/console.js'; +import { defineIntegration } from '../integration.js'; +import { CONSOLE_LEVELS } from '../utils/debug-logger.js'; +import { severityLevelFromString } from '../utils/severity.js'; +import { safeJoin } from '../utils/string.js'; +import { GLOBAL_OBJ } from '../utils/worldwide.js'; + +const INTEGRATION_NAME = 'Console'; + +/** + * Captures calls to the `console` API as breadcrumbs in Sentry. + * + * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`, + * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which + * levels are captured. + * + * @example + * + * ```js + * Sentry.init({ + * integrations: [Sentry.consoleIntegration({ levels: ['error', 'warn'] })], + * }); + * ``` + */ +const consoleIntegration = defineIntegration((options = {}) => { + const levels = new Set(options.levels || CONSOLE_LEVELS); + + return { + name: INTEGRATION_NAME, + setup(client) { + addConsoleInstrumentationHandler(({ args, level }) => { + if (getClient() !== client || !levels.has(level)) { + return; + } + + addConsoleBreadcrumb(level, args); + }); + }, + }; +}); + +/** + * Capture a console breadcrumb. + * + * Exported just for tests. + */ +function addConsoleBreadcrumb(level, args) { + const breadcrumb = { + category: 'console', + data: { + arguments: args, + logger: 'console', + }, + level: severityLevelFromString(level), + message: formatConsoleArgs(args), + }; + + if (level === 'assert') { + if (args[0] === false) { + const assertionArgs = args.slice(1); + breadcrumb.message = + assertionArgs.length > 0 ? `Assertion failed: ${formatConsoleArgs(assertionArgs)}` : 'Assertion failed'; + breadcrumb.data.arguments = assertionArgs; + } else { + // Don't capture a breadcrumb for passed assertions + return; + } + } + + addBreadcrumb(breadcrumb, { + input: args, + level, + }); +} + +function formatConsoleArgs(values) { + return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ ).util.format === 'function' + ? (GLOBAL_OBJ ).util.format(...values) + : safeJoin(values, ' '); +} + +export { addConsoleBreadcrumb, consoleIntegration }; +//# sourceMappingURL=console.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/console.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/console.js.map new file mode 100644 index 0000000..a6ab416 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/console.js.map @@ -0,0 +1 @@ +{"version":3,"file":"console.js","sources":["../../../src/integrations/console.ts"],"sourcesContent":["import { addBreadcrumb } from '../breadcrumbs';\nimport { getClient } from '../currentScopes';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface ConsoleIntegrationOptions {\n levels: ConsoleLevel[];\n}\n\ntype GlobalObjectWithUtil = typeof GLOBAL_OBJ & {\n util: {\n format: (...args: unknown[]) => string;\n };\n};\n\nconst INTEGRATION_NAME = 'Console';\n\n/**\n * Captures calls to the `console` API as breadcrumbs in Sentry.\n *\n * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`,\n * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which\n * levels are captured.\n *\n * @example\n *\n * ```js\n * Sentry.init({\n * integrations: [Sentry.consoleIntegration({ levels: ['error', 'warn'] })],\n * });\n * ```\n */\nexport const consoleIntegration = defineIntegration((options: Partial = {}) => {\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 */\nexport function addConsoleBreadcrumb(level: ConsoleLevel, args: unknown[]): void {\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: unknown[]): string {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ as GlobalObjectWithUtil).util.format === 'function'\n ? (GLOBAL_OBJ as GlobalObjectWithUtil).util.format(...values)\n : safeJoin(values, ' ');\n}\n"],"names":[],"mappings":";;;;;;;;;AAoBA,MAAM,gBAAA,GAAmB,SAAS;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,kBAAA,GAAqB,iBAAiB,CAAC,CAAC,OAAO,GAAuC,EAAE,KAAK;AAC1G,EAAE,MAAM,MAAA,GAAS,IAAI,GAAG,CAAC,OAAO,CAAC,MAAA,IAAU,cAAc,CAAC;;AAE1D,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,gCAAgC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAA,EAAO,KAAK;AAC5D,QAAQ,IAAI,SAAS,OAAO,MAAA,IAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC1D,UAAU;AACV,QAAQ;;AAER,QAAQ,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;AACzC,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,KAAK,EAAgB,IAAI,EAAmB;AACjF,EAAE,MAAM,aAAa;AACrB,IAAI,QAAQ,EAAE,SAAS;AACvB,IAAI,IAAI,EAAE;AACV,MAAM,SAAS,EAAE,IAAI;AACrB,MAAM,MAAM,EAAE,SAAS;AACvB,KAAK;AACL,IAAI,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC;AACzC,IAAI,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC;AACpC,GAAG;;AAEH,EAAE,IAAI,KAAA,KAAU,QAAQ,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,CAAC,CAAA,KAAM,KAAK,EAAE;AAC3B,MAAM,MAAM,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,MAAM,UAAU,CAAC,OAAA;AACjB,QAAQ,aAAa,CAAC,MAAA,GAAS,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAA,GAAA,kBAAA;AACA,MAAA,UAAA,CAAA,IAAA,CAAA,SAAA,GAAA,aAAA;AACA,IAAA,CAAA,MAAA;AACA;AACA,MAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,aAAA,CAAA,UAAA,EAAA;AACA,IAAA,KAAA,EAAA,IAAA;AACA,IAAA,KAAA;AACA,GAAA,CAAA;AACA;;AAEA,SAAA,iBAAA,CAAA,MAAA,EAAA;AACA,EAAA,OAAA,MAAA,IAAA,UAAA,IAAA,OAAA,CAAA,UAAA,GAAA,IAAA,CAAA,MAAA,KAAA;AACA,MAAA,CAAA,UAAA,GAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACA,MAAA,QAAA,CAAA,MAAA,EAAA,GAAA,CAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/conversationId.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/conversationId.js new file mode 100644 index 0000000..2281759 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/conversationId.js @@ -0,0 +1,35 @@ +import { getCurrentScope, getIsolationScope } from '../currentScopes.js'; +import { defineIntegration } from '../integration.js'; +import { GEN_AI_CONVERSATION_ID_ATTRIBUTE } from '../semanticAttributes.js'; + +const INTEGRATION_NAME = 'ConversationId'; + +const _conversationIdIntegration = (() => { + return { + name: INTEGRATION_NAME, + setup(client) { + client.on('spanStart', (span) => { + const scopeData = getCurrentScope().getScopeData(); + const isolationScopeData = getIsolationScope().getScopeData(); + + const conversationId = scopeData.conversationId || isolationScopeData.conversationId; + + if (conversationId) { + span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, conversationId); + } + }); + }, + }; +}) ; + +/** + * Automatically applies conversation ID from scope to spans. + * + * This integration reads the conversation ID from the current or isolation scope + * and applies it to spans when they start. This ensures the conversation ID is + * available for all AI-related operations. + */ +const conversationIdIntegration = defineIntegration(_conversationIdIntegration); + +export { conversationIdIntegration }; +//# sourceMappingURL=conversationId.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/conversationId.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/conversationId.js.map new file mode 100644 index 0000000..a12a4cb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/conversationId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"conversationId.js","sources":["../../../src/integrations/conversationId.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { defineIntegration } from '../integration';\nimport { GEN_AI_CONVERSATION_ID_ATTRIBUTE } from '../semanticAttributes';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { Span } from '../types-hoist/span';\n\nconst INTEGRATION_NAME = 'ConversationId';\n\nconst _conversationIdIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setup(client: Client) {\n client.on('spanStart', (span: 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}) satisfies IntegrationFn;\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 */\nexport const conversationIdIntegration = defineIntegration(_conversationIdIntegration);\n"],"names":[],"mappings":";;;;AAOA,MAAM,gBAAA,GAAmB,gBAAgB;;AAEzC,MAAM,0BAAA,IAA8B,MAAM;AAC1C,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAU;AAC1B,MAAM,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,KAAW;AAC7C,QAAQ,MAAM,YAAY,eAAe,EAAE,CAAC,YAAY,EAAE;AAC1D,QAAQ,MAAM,qBAAqB,iBAAiB,EAAE,CAAC,YAAY,EAAE;;AAErE,QAAQ,MAAM,iBAAiB,SAAS,CAAC,cAAA,IAAkB,kBAAkB,CAAC,cAAc;;AAE5F,QAAQ,IAAI,cAAc,EAAE;AAC5B,UAAU,IAAI,CAAC,YAAY,CAAC,gCAAgC,EAAE,cAAc,CAAC;AAC7E,QAAQ;AACR,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;MACa,yBAAA,GAA4B,iBAAiB,CAAC,0BAA0B;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/dedupe.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/dedupe.js new file mode 100644 index 0000000..177a960 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/dedupe.js @@ -0,0 +1,179 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { defineIntegration } from '../integration.js'; +import { debug } from '../utils/debug-logger.js'; +import { getFramesFromEvent } from '../utils/stacktrace.js'; + +const INTEGRATION_NAME = 'Dedupe'; + +const _dedupeIntegration = (() => { + let previousEvent; + + return { + name: INTEGRATION_NAME, + processEvent(currentEvent) { + // We want to ignore any non-error type events, e.g. transactions or replays + // These should never be deduped, and also not be compared against as _previousEvent. + if (currentEvent.type) { + return currentEvent; + } + + // Juuust in case something goes wrong + try { + if (_shouldDropEvent(currentEvent, previousEvent)) { + DEBUG_BUILD && debug.warn('Event dropped due to being a duplicate of previously captured event.'); + return null; + } + } catch {} // eslint-disable-line no-empty + + return (previousEvent = currentEvent); + }, + }; +}) ; + +/** + * Deduplication filter. + */ +const dedupeIntegration = defineIntegration(_dedupeIntegration); + +/** only exported for tests. */ +function _shouldDropEvent(currentEvent, previousEvent) { + if (!previousEvent) { + return false; + } + + if (_isSameMessageEvent(currentEvent, previousEvent)) { + return true; + } + + if (_isSameExceptionEvent(currentEvent, previousEvent)) { + return true; + } + + return false; +} + +function _isSameMessageEvent(currentEvent, previousEvent) { + const currentMessage = currentEvent.message; + const previousMessage = previousEvent.message; + + // If neither event has a message property, they were both exceptions, so bail out + if (!currentMessage && !previousMessage) { + return false; + } + + // If only one event has a stacktrace, but not the other one, they are not the same + if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) { + return false; + } + + if (currentMessage !== previousMessage) { + return false; + } + + if (!_isSameFingerprint(currentEvent, previousEvent)) { + return false; + } + + if (!_isSameStacktrace(currentEvent, previousEvent)) { + return false; + } + + return true; +} + +function _isSameExceptionEvent(currentEvent, previousEvent) { + const previousException = _getExceptionFromEvent(previousEvent); + const currentException = _getExceptionFromEvent(currentEvent); + + if (!previousException || !currentException) { + return false; + } + + if (previousException.type !== currentException.type || previousException.value !== currentException.value) { + return false; + } + + if (!_isSameFingerprint(currentEvent, previousEvent)) { + return false; + } + + if (!_isSameStacktrace(currentEvent, previousEvent)) { + return false; + } + + return true; +} + +function _isSameStacktrace(currentEvent, previousEvent) { + let currentFrames = getFramesFromEvent(currentEvent); + let previousFrames = getFramesFromEvent(previousEvent); + + // If neither event has a stacktrace, they are assumed to be the same + if (!currentFrames && !previousFrames) { + return true; + } + + // If only one event has a stacktrace, but not the other one, they are not the same + if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) { + return false; + } + + currentFrames = currentFrames ; + previousFrames = previousFrames ; + + // If number of frames differ, they are not the same + if (previousFrames.length !== currentFrames.length) { + return false; + } + + // Otherwise, compare the two + for (let i = 0; i < previousFrames.length; i++) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const frameA = previousFrames[i]; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const frameB = currentFrames[i]; + + if ( + frameA.filename !== frameB.filename || + frameA.lineno !== frameB.lineno || + frameA.colno !== frameB.colno || + frameA.function !== frameB.function + ) { + return false; + } + } + + return true; +} + +function _isSameFingerprint(currentEvent, previousEvent) { + let currentFingerprint = currentEvent.fingerprint; + let previousFingerprint = previousEvent.fingerprint; + + // If neither event has a fingerprint, they are assumed to be the same + if (!currentFingerprint && !previousFingerprint) { + return true; + } + + // If only one event has a fingerprint, but not the other one, they are not the same + if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) { + return false; + } + + currentFingerprint = currentFingerprint ; + previousFingerprint = previousFingerprint ; + + // Otherwise, compare the two + try { + return !!(currentFingerprint.join('') === previousFingerprint.join('')); + } catch { + return false; + } +} + +function _getExceptionFromEvent(event) { + return event.exception?.values?.[0]; +} + +export { _shouldDropEvent, dedupeIntegration }; +//# sourceMappingURL=dedupe.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/dedupe.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/dedupe.js.map new file mode 100644 index 0000000..e2c9be2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/dedupe.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dedupe.js","sources":["../../../src/integrations/dedupe.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { debug } from '../utils/debug-logger';\nimport { getFramesFromEvent } from '../utils/stacktrace';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent: Event | undefined;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(currentEvent) {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, previousEvent)) {\n DEBUG_BUILD && debug.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch {} // eslint-disable-line no-empty\n\n return (previousEvent = currentEvent);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Deduplication filter.\n */\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/** only exported for tests. */\nexport function _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = getFramesFromEvent(currentEvent);\n let previousFrames = getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const frameA = previousFrames[i]!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const frameB = currentFrames[i]!;\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch {\n return false;\n }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception?.values?.[0];\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/eventFilters.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/eventFilters.js new file mode 100644 index 0000000..8b5e8fc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/eventFilters.js @@ -0,0 +1,224 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { defineIntegration } from '../integration.js'; +import { debug } from '../utils/debug-logger.js'; +import { getPossibleEventMessages } from '../utils/eventUtils.js'; +import { getEventDescription } from '../utils/misc.js'; +import { stringMatchesSomePattern } from '../utils/string.js'; + +// "Script error." is hard coded into browsers for errors that it can't read. +// this is the result of a script being pulled in from an external domain and CORS. +const DEFAULT_IGNORE_ERRORS = [ + /^Script error\.?$/, + /^Javascript error: Script error\.? on line 0$/, + /^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. + /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker + /^Can't find variable: gmo$/, // Error from Google Search App https://issuetracker.google.com/issues/396043331 + /^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/, // Random error that happens but not actionable or noticeable to end-users. + 'can\'t redefine non-configurable property "solana"', // Probably a browser extension or custom browser (Brave) throwing this error + "vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)", // Error thrown by GTM, seemingly not affecting end-users + "Can't find variable: _AutofillCallbackHandler", // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/ + /^Non-Error promise rejection captured with value: Object Not Found Matching Id:\d+, MethodName:simulateEvent, ParamCount:\d+$/, // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps + /^Java exception was raised during method invocation$/, // error from Facebook Mobile browser (https://github.com/getsentry/sentry-javascript/issues/15065) +]; + +/** Options for the EventFilters integration */ + +const INTEGRATION_NAME = 'EventFilters'; + +/** + * An integration that filters out events (errors and transactions) based on: + * + * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS}) + * - (Errors) A list of error messages or urls/filenames passed in via + * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`) + * - The same options passed to the integration directly via @param options + * - (Transactions/Spans) A list of root span (transaction) names passed in via + * - Top level Sentry.init option (`ignoreTransactions`) + * - The same option passed to the integration directly via @param options + * + * Events filtered by this integration will not be sent to Sentry. + */ +const eventFiltersIntegration = defineIntegration((options = {}) => { + let mergedOptions; + return { + name: INTEGRATION_NAME, + setup(client) { + const clientOptions = client.getOptions(); + mergedOptions = _mergeOptions(options, clientOptions); + }, + processEvent(event, _hint, client) { + if (!mergedOptions) { + const clientOptions = client.getOptions(); + mergedOptions = _mergeOptions(options, clientOptions); + } + return _shouldDropEvent(event, mergedOptions) ? null : event; + }, + }; +}); + +/** + * An integration that filters out events (errors and transactions) based on: + * + * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS}) + * - (Errors) A list of error messages or urls/filenames passed in via + * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`) + * - The same options passed to the integration directly via @param options + * - (Transactions/Spans) A list of root span (transaction) names passed in via + * - Top level Sentry.init option (`ignoreTransactions`) + * - The same option passed to the integration directly via @param options + * + * Events filtered by this integration will not be sent to Sentry. + * + * @deprecated this integration was renamed and will be removed in a future major version. + * Use `eventFiltersIntegration` instead. + */ +const inboundFiltersIntegration = defineIntegration(((options = {}) => { + return { + ...eventFiltersIntegration(options), + name: 'InboundFilters', + }; +}) ); + +function _mergeOptions( + internalOptions = {}, + clientOptions = {}, +) { + return { + allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])], + denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])], + ignoreErrors: [ + ...(internalOptions.ignoreErrors || []), + ...(clientOptions.ignoreErrors || []), + ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS), + ], + ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])], + }; +} + +function _shouldDropEvent(event, options) { + if (!event.type) { + // Filter errors + if (_isIgnoredError(event, options.ignoreErrors)) { + DEBUG_BUILD && + debug.warn( + `Event dropped due to being matched by \`ignoreErrors\` option.\nEvent: ${getEventDescription(event)}`, + ); + return true; + } + if (_isUselessError(event)) { + DEBUG_BUILD && + debug.warn( + `Event dropped due to not having an error message, error type or stacktrace.\nEvent: ${getEventDescription( + event, + )}`, + ); + return true; + } + if (_isDeniedUrl(event, options.denyUrls)) { + DEBUG_BUILD && + debug.warn( + `Event dropped due to being matched by \`denyUrls\` option.\nEvent: ${getEventDescription( + event, + )}.\nUrl: ${_getEventFilterUrl(event)}`, + ); + return true; + } + if (!_isAllowedUrl(event, options.allowUrls)) { + DEBUG_BUILD && + debug.warn( + `Event dropped due to not being matched by \`allowUrls\` option.\nEvent: ${getEventDescription( + event, + )}.\nUrl: ${_getEventFilterUrl(event)}`, + ); + return true; + } + } else if (event.type === 'transaction') { + // Filter transactions + + if (_isIgnoredTransaction(event, options.ignoreTransactions)) { + DEBUG_BUILD && + debug.warn( + `Event dropped due to being matched by \`ignoreTransactions\` option.\nEvent: ${getEventDescription(event)}`, + ); + return true; + } + } + return false; +} + +function _isIgnoredError(event, ignoreErrors) { + if (!ignoreErrors?.length) { + return false; + } + + return getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors)); +} + +function _isIgnoredTransaction(event, ignoreTransactions) { + if (!ignoreTransactions?.length) { + return false; + } + + const name = event.transaction; + return name ? stringMatchesSomePattern(name, ignoreTransactions) : false; +} + +function _isDeniedUrl(event, denyUrls) { + if (!denyUrls?.length) { + return false; + } + const url = _getEventFilterUrl(event); + return !url ? false : stringMatchesSomePattern(url, denyUrls); +} + +function _isAllowedUrl(event, allowUrls) { + if (!allowUrls?.length) { + return true; + } + const url = _getEventFilterUrl(event); + return !url ? true : stringMatchesSomePattern(url, allowUrls); +} + +function _getLastValidUrl(frames = []) { + for (let i = frames.length - 1; i >= 0; i--) { + const frame = frames[i]; + + if (frame && frame.filename !== '' && frame.filename !== '[native code]') { + return frame.filename || null; + } + } + + return null; +} + +function _getEventFilterUrl(event) { + try { + // If there are linked exceptions or exception aggregates we only want to match against the top frame of the "root" (the main exception) + // The root always comes last in linked exceptions + const rootException = [...(event.exception?.values ?? [])] + .reverse() + .find(value => value.mechanism?.parent_id === undefined && value.stacktrace?.frames?.length); + const frames = rootException?.stacktrace?.frames; + return frames ? _getLastValidUrl(frames) : null; + } catch { + DEBUG_BUILD && debug.error(`Cannot extract url for event ${getEventDescription(event)}`); + return null; + } +} + +function _isUselessError(event) { + // We only want to consider events for dropping that actually have recorded exception values. + if (!event.exception?.values?.length) { + return false; + } + + return ( + // No top-level message + !event.message && + // There are no exception values that have a stacktrace, a non-generic-Error type or value + !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value) + ); +} + +export { eventFiltersIntegration, inboundFiltersIntegration }; +//# sourceMappingURL=eventFilters.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/eventFilters.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/eventFilters.js.map new file mode 100644 index 0000000..5f06d05 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/eventFilters.js.map @@ -0,0 +1 @@ +{"version":3,"file":"eventFilters.js","sources":["../../../src/integrations/eventFilters.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { debug } from '../utils/debug-logger';\nimport { getPossibleEventMessages } from '../utils/eventUtils';\nimport { getEventDescription } from '../utils/misc';\nimport { stringMatchesSomePattern } from '../utils/string';\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. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)\", // 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 /^Non-Error promise rejection captured with value: Object Not Found Matching Id:\\d+, MethodName:simulateEvent, ParamCount:\\d+$/, // 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 */\nexport interface EventFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreTransactions: Array;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n}\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 */\nexport const eventFiltersIntegration = defineIntegration((options: Partial = {}) => {\n let mergedOptions: Partial | undefined;\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 */\nexport const inboundFiltersIntegration = defineIntegration(((options: Partial = {}) => {\n return {\n ...eventFiltersIntegration(options),\n name: 'InboundFilters',\n };\n}) satisfies IntegrationFn);\n\nfunction _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\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: Event, options: Partial): boolean {\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: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors?.length) {\n return false;\n }\n\n return getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array): boolean {\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: Event, denyUrls?: Array): boolean {\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: Event, allowUrls?: Array): boolean {\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: StackFrame[] = []): string | null {\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: Event): string | null {\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: Event): boolean {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/extraerrordata.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/extraerrordata.js new file mode 100644 index 0000000..42f623e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/extraerrordata.js @@ -0,0 +1,132 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { defineIntegration } from '../integration.js'; +import { debug } from '../utils/debug-logger.js'; +import { isError, isPlainObject } from '../utils/is.js'; +import { normalize } from '../utils/normalize.js'; +import { addNonEnumerableProperty } from '../utils/object.js'; +import { truncate } from '../utils/string.js'; + +const INTEGRATION_NAME = 'ExtraErrorData'; + +/** + * Extract additional data for from original exceptions. + */ +const _extraErrorDataIntegration = ((options = {}) => { + const { depth = 3, captureErrorCause = true } = options; + return { + name: INTEGRATION_NAME, + processEvent(event, hint, client) { + const { maxValueLength } = client.getOptions(); + return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause, maxValueLength); + }, + }; +}) ; + +const extraErrorDataIntegration = defineIntegration(_extraErrorDataIntegration); + +function _enhanceEventWithErrorData( + event, + hint = {}, + depth, + captureErrorCause, + maxValueLength, +) { + if (!hint.originalException || !isError(hint.originalException)) { + return event; + } + const exceptionName = (hint.originalException ).name || hint.originalException.constructor.name; + + const errorData = _extractErrorData(hint.originalException , captureErrorCause, maxValueLength); + + if (errorData) { + const contexts = { + ...event.contexts, + }; + + const normalizedErrorData = normalize(errorData, depth); + + if (isPlainObject(normalizedErrorData)) { + // We mark the error data as "already normalized" here, because we don't want other normalization procedures to + // potentially truncate the data we just already normalized, with a certain depth setting. + addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true); + contexts[exceptionName] = normalizedErrorData; + } + + return { + ...event, + contexts, + }; + } + + return event; +} + +/** + * Extract extra information from the Error object + */ +function _extractErrorData( + error, + captureErrorCause, + maxValueLength, +) { + // We are trying to enhance already existing event, so no harm done if it won't succeed + try { + const nativeKeys = [ + 'name', + 'message', + 'stack', + 'line', + 'column', + 'fileName', + 'lineNumber', + 'columnNumber', + 'toJSON', + ]; + + const extraErrorInfo = {}; + + // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway. + for (const key of Object.keys(error)) { + if (nativeKeys.indexOf(key) !== -1) { + continue; + } + const value = error[key]; + extraErrorInfo[key] = + isError(value) || typeof value === 'string' + ? maxValueLength + ? truncate(`${value}`, maxValueLength) + : `${value}` + : value; + } + + // Error.cause is a standard property that is non enumerable, we therefore need to access it separately. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause + if (captureErrorCause && error.cause !== undefined) { + if (isError(error.cause)) { + const errorName = error.cause.name || error.cause.constructor.name; + extraErrorInfo.cause = { [errorName]: _extractErrorData(error.cause , false, maxValueLength) }; + } else { + extraErrorInfo.cause = error.cause; + } + } + + // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that) + if (typeof error.toJSON === 'function') { + const serializedError = error.toJSON() ; + + for (const key of Object.keys(serializedError)) { + const value = serializedError[key]; + extraErrorInfo[key] = isError(value) ? value.toString() : value; + } + } + + return extraErrorInfo; + } catch (oO) { + DEBUG_BUILD && debug.error('Unable to extract extra data from the Error object:', oO); + } + + return null; +} + +export { extraErrorDataIntegration }; +//# sourceMappingURL=extraerrordata.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/extraerrordata.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/extraerrordata.js.map new file mode 100644 index 0000000..b3ba585 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/extraerrordata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extraerrordata.js","sources":["../../../src/integrations/extraerrordata.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Contexts } from '../types-hoist/context';\nimport type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { debug } from '../utils/debug-logger';\nimport { isError, isPlainObject } from '../utils/is';\nimport { normalize } from '../utils/normalize';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { truncate } from '../utils/string';\n\nconst INTEGRATION_NAME = 'ExtraErrorData';\n\ninterface ExtraErrorDataOptions {\n /**\n * The object depth up to which to capture data on error objects.\n */\n depth: number;\n\n /**\n * Whether to capture error causes. Defaults to true.\n *\n * More information: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n */\n captureErrorCause: boolean;\n}\n\n/**\n * Extract additional data for from original exceptions.\n */\nconst _extraErrorDataIntegration = ((options: Partial = {}) => {\n const { depth = 3, captureErrorCause = true } = options;\n return {\n name: INTEGRATION_NAME,\n processEvent(event, hint, client) {\n const { maxValueLength } = client.getOptions();\n return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause, maxValueLength);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const extraErrorDataIntegration = defineIntegration(_extraErrorDataIntegration);\n\nfunction _enhanceEventWithErrorData(\n event: Event,\n hint: EventHint = {},\n depth: number,\n captureErrorCause: boolean,\n maxValueLength: number | undefined,\n): Event {\n if (!hint.originalException || !isError(hint.originalException)) {\n return event;\n }\n const exceptionName = (hint.originalException as ExtendedError).name || hint.originalException.constructor.name;\n\n const errorData = _extractErrorData(hint.originalException as ExtendedError, captureErrorCause, maxValueLength);\n\n if (errorData) {\n const contexts: Contexts = {\n ...event.contexts,\n };\n\n const normalizedErrorData = normalize(errorData, depth);\n\n if (isPlainObject(normalizedErrorData)) {\n // We mark the error data as \"already normalized\" here, because we don't want other normalization procedures to\n // potentially truncate the data we just already normalized, with a certain depth setting.\n addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true);\n contexts[exceptionName] = normalizedErrorData;\n }\n\n return {\n ...event,\n contexts,\n };\n }\n\n return event;\n}\n\n/**\n * Extract extra information from the Error object\n */\nfunction _extractErrorData(\n error: ExtendedError,\n captureErrorCause: boolean,\n maxValueLength: number | undefined,\n): Record | null {\n // We are trying to enhance already existing event, so no harm done if it won't succeed\n try {\n const nativeKeys = [\n 'name',\n 'message',\n 'stack',\n 'line',\n 'column',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'toJSON',\n ];\n\n const extraErrorInfo: Record = {};\n\n // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway.\n for (const key of Object.keys(error)) {\n if (nativeKeys.indexOf(key) !== -1) {\n continue;\n }\n const value = error[key];\n extraErrorInfo[key] =\n isError(value) || typeof value === 'string'\n ? maxValueLength\n ? truncate(`${value}`, maxValueLength)\n : `${value}`\n : value;\n }\n\n // Error.cause is a standard property that is non enumerable, we therefore need to access it separately.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n if (captureErrorCause && error.cause !== undefined) {\n if (isError(error.cause)) {\n const errorName = error.cause.name || error.cause.constructor.name;\n extraErrorInfo.cause = { [errorName]: _extractErrorData(error.cause as ExtendedError, false, maxValueLength) };\n } else {\n extraErrorInfo.cause = error.cause;\n }\n }\n\n // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that)\n if (typeof error.toJSON === 'function') {\n const serializedError = error.toJSON() as Record;\n\n for (const key of Object.keys(serializedError)) {\n const value = serializedError[key];\n extraErrorInfo[key] = isError(value) ? value.toString() : value;\n }\n }\n\n return extraErrorInfo;\n } catch (oO) {\n DEBUG_BUILD && debug.error('Unable to extract extra data from the Error object:', oO);\n }\n\n return null;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/featureFlagsIntegration.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/featureFlagsIntegration.js new file mode 100644 index 0000000..d42012d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/featureFlagsIntegration.js @@ -0,0 +1,44 @@ +import { defineIntegration } from '../../integration.js'; +import { _INTERNAL_insertFlagToScope, _INTERNAL_addFeatureFlagToActiveSpan, _INTERNAL_copyFlagsFromScopeToEvent } from '../../utils/featureFlags.js'; + +/** + * Sentry integration for buffering feature flag evaluations manually with an API, and + * capturing them on error events and spans. + * + * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information. + * + * @example + * ``` + * import * as Sentry from '@sentry/browser'; + * import { type FeatureFlagsIntegration } from '@sentry/browser'; + * + * // Setup + * Sentry.init(..., integrations: [Sentry.featureFlagsIntegration()]) + * + * // Verify + * const flagsIntegration = Sentry.getClient()?.getIntegrationByName('FeatureFlags'); + * if (flagsIntegration) { + * flagsIntegration.addFeatureFlag('my-flag', true); + * } else { + * // check your setup + * } + * Sentry.captureException(Exception('broke')); // 'my-flag' should be captured to this Sentry event. + * ``` + */ +const featureFlagsIntegration = defineIntegration(() => { + return { + name: 'FeatureFlags', + + processEvent(event, _hint, _client) { + return _INTERNAL_copyFlagsFromScopeToEvent(event); + }, + + addFeatureFlag(name, value) { + _INTERNAL_insertFlagToScope(name, value); + _INTERNAL_addFeatureFlagToActiveSpan(name, value); + }, + }; +}) ; + +export { featureFlagsIntegration }; +//# sourceMappingURL=featureFlagsIntegration.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/featureFlagsIntegration.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/featureFlagsIntegration.js.map new file mode 100644 index 0000000..db4c7d5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/featureFlagsIntegration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"featureFlagsIntegration.js","sources":["../../../../src/integrations/featureFlags/featureFlagsIntegration.ts"],"sourcesContent":["import { type Client } from '../../client';\nimport { defineIntegration } from '../../integration';\nimport { type Event, type EventHint } from '../../types-hoist/event';\nimport { type Integration, type IntegrationFn } from '../../types-hoist/integration';\nimport {\n _INTERNAL_addFeatureFlagToActiveSpan,\n _INTERNAL_copyFlagsFromScopeToEvent,\n _INTERNAL_insertFlagToScope,\n} from '../../utils/featureFlags';\n\nexport interface FeatureFlagsIntegration extends Integration {\n addFeatureFlag: (name: string, value: unknown) => void;\n}\n\n/**\n * Sentry integration for buffering feature flag evaluations manually with an API, and\n * capturing them on error events and spans.\n *\n * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information.\n *\n * @example\n * ```\n * import * as Sentry from '@sentry/browser';\n * import { type FeatureFlagsIntegration } from '@sentry/browser';\n *\n * // Setup\n * Sentry.init(..., integrations: [Sentry.featureFlagsIntegration()])\n *\n * // Verify\n * const flagsIntegration = Sentry.getClient()?.getIntegrationByName('FeatureFlags');\n * if (flagsIntegration) {\n * flagsIntegration.addFeatureFlag('my-flag', true);\n * } else {\n * // check your setup\n * }\n * Sentry.captureException(Exception('broke')); // 'my-flag' should be captured to this Sentry event.\n * ```\n */\nexport const featureFlagsIntegration = defineIntegration(() => {\n return {\n name: 'FeatureFlags',\n\n processEvent(event: Event, _hint: EventHint, _client: Client): Event {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n\n addFeatureFlag(name: string, value: unknown): void {\n _INTERNAL_insertFlagToScope(name, value);\n _INTERNAL_addFeatureFlagToActiveSpan(name, value);\n },\n };\n}) as IntegrationFn;\n"],"names":[],"mappings":";;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACa,uBAAA,GAA0B,iBAAiB,CAAC,MAAM;AAC/D,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,cAAc;;AAExB,IAAI,YAAY,CAAC,KAAK,EAAS,KAAK,EAAa,OAAO,EAAiB;AACzE,MAAM,OAAO,mCAAmC,CAAC,KAAK,CAAC;AACvD,IAAI,CAAC;;AAEL,IAAI,cAAc,CAAC,IAAI,EAAU,KAAK,EAAiB;AACvD,MAAM,2BAA2B,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9C,MAAM,oCAAoC,CAAC,IAAI,EAAE,KAAK,CAAC;AACvD,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/growthbook.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/growthbook.js new file mode 100644 index 0000000..0cfc3f2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/growthbook.js @@ -0,0 +1,66 @@ +import { defineIntegration } from '../../integration.js'; +import { _INTERNAL_copyFlagsFromScopeToEvent, _INTERNAL_insertFlagToScope, _INTERNAL_addFeatureFlagToActiveSpan } from '../../utils/featureFlags.js'; +import { fill } from '../../utils/object.js'; + +/** + * Sentry integration for capturing feature flag evaluations from GrowthBook. + * + * Only boolean results are captured at this time. + * + * @example + * ```typescript + * import { GrowthBook } from '@growthbook/growthbook'; + * import * as Sentry from '@sentry/browser'; // or '@sentry/node' + * + * Sentry.init({ + * dsn: 'your-dsn', + * integrations: [ + * Sentry.growthbookIntegration({ growthbookClass: GrowthBook }) + * ] + * }); + * ``` + */ +const growthbookIntegration = defineIntegration( + ({ growthbookClass }) => { + return { + name: 'GrowthBook', + + setupOnce() { + const proto = growthbookClass.prototype ; + + // Type guard and wrap isOn + if (typeof proto.isOn === 'function') { + fill(proto, 'isOn', _wrapAndCaptureBooleanResult); + } + + // Type guard and wrap getFeatureValue + if (typeof proto.getFeatureValue === 'function') { + fill(proto, 'getFeatureValue', _wrapAndCaptureBooleanResult); + } + }, + + processEvent(event, _hint, _client) { + return _INTERNAL_copyFlagsFromScopeToEvent(event); + }, + }; + }, +); + +function _wrapAndCaptureBooleanResult( + original, +) { + return function ( ...args) { + const flagName = args[0]; + const result = original.apply(this, args); + + if (typeof flagName === 'string' && typeof result === 'boolean') { + _INTERNAL_insertFlagToScope(flagName, result); + _INTERNAL_addFeatureFlagToActiveSpan(flagName, result); + } + + return result; + }; +} + +export { growthbookIntegration }; +//# sourceMappingURL=growthbook.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/growthbook.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/growthbook.js.map new file mode 100644 index 0000000..3c0ccc7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/featureFlags/growthbook.js.map @@ -0,0 +1 @@ +{"version":3,"file":"growthbook.js","sources":["../../../../src/integrations/featureFlags/growthbook.ts"],"sourcesContent":["import type { Client } from '../../client';\nimport { defineIntegration } from '../../integration';\nimport type { Event, EventHint } from '../../types-hoist/event';\nimport type { IntegrationFn } from '../../types-hoist/integration';\nimport {\n _INTERNAL_addFeatureFlagToActiveSpan,\n _INTERNAL_copyFlagsFromScopeToEvent,\n _INTERNAL_insertFlagToScope,\n} from '../../utils/featureFlags';\nimport { fill } from '../../utils/object';\n\ninterface GrowthBookLike {\n isOn(this: GrowthBookLike, featureKey: string, ...rest: unknown[]): boolean;\n getFeatureValue(this: GrowthBookLike, featureKey: string, defaultValue: unknown, ...rest: unknown[]): unknown;\n}\n\nexport type GrowthBookClassLike = new (...args: unknown[]) => GrowthBookLike;\n\n/**\n * Sentry integration for capturing feature flag evaluations from GrowthBook.\n *\n * Only boolean results are captured at this time.\n *\n * @example\n * ```typescript\n * import { GrowthBook } from '@growthbook/growthbook';\n * import * as Sentry from '@sentry/browser'; // or '@sentry/node'\n *\n * Sentry.init({\n * dsn: 'your-dsn',\n * integrations: [\n * Sentry.growthbookIntegration({ growthbookClass: GrowthBook })\n * ]\n * });\n * ```\n */\nexport const growthbookIntegration: IntegrationFn = defineIntegration(\n ({ growthbookClass }: { growthbookClass: GrowthBookClassLike }) => {\n return {\n name: 'GrowthBook',\n\n setupOnce() {\n const proto = growthbookClass.prototype as GrowthBookLike;\n\n // Type guard and wrap isOn\n if (typeof proto.isOn === 'function') {\n fill(proto, 'isOn', _wrapAndCaptureBooleanResult);\n }\n\n // Type guard and wrap getFeatureValue\n if (typeof proto.getFeatureValue === 'function') {\n fill(proto, 'getFeatureValue', _wrapAndCaptureBooleanResult);\n }\n },\n\n processEvent(event: Event, _hint: EventHint, _client: Client): Event {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n };\n },\n);\n\nfunction _wrapAndCaptureBooleanResult(\n original: (this: GrowthBookLike, ...args: unknown[]) => unknown,\n): (this: GrowthBookLike, ...args: unknown[]) => unknown {\n return function (this: GrowthBookLike, ...args: unknown[]): unknown {\n const flagName = args[0];\n const result = original.apply(this, args);\n\n if (typeof flagName === 'string' && typeof result === 'boolean') {\n _INTERNAL_insertFlagToScope(flagName, result);\n _INTERNAL_addFeatureFlagToActiveSpan(flagName, result);\n }\n\n return result;\n };\n}\n"],"names":[],"mappings":";;;;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAqB,GAAkB,iBAAiB;AACrE,EAAE,CAAC,EAAE,eAAA,EAAiB,KAA+C;AACrE,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,YAAY;;AAExB,MAAM,SAAS,GAAG;AAClB,QAAQ,MAAM,KAAA,GAAQ,eAAe,CAAC,SAAA;;AAEtC;AACA,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAA,KAAS,UAAU,EAAE;AAC9C,UAAU,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,4BAA4B,CAAC;AAC3D,QAAQ;;AAER;AACA,QAAQ,IAAI,OAAO,KAAK,CAAC,eAAA,KAAoB,UAAU,EAAE;AACzD,UAAU,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,4BAA4B,CAAC;AACtE,QAAQ;AACR,MAAM,CAAC;;AAEP,MAAM,YAAY,CAAC,KAAK,EAAS,KAAK,EAAa,OAAO,EAAiB;AAC3E,QAAQ,OAAO,mCAAmC,CAAC,KAAK,CAAC;AACzD,MAAM,CAAC;AACP,KAAK;AACL,EAAE,CAAC;AACH;;AAEA,SAAS,4BAA4B;AACrC,EAAE,QAAQ;AACV,EAAyD;AACzD,EAAE,OAAO,WAAgC,GAAG,IAAI,EAAsB;AACtE,IAAI,MAAM,QAAA,GAAW,IAAI,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,MAAA,GAAS,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;;AAE7C,IAAI,IAAI,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,MAAA,KAAW,SAAS,EAAE;AACrE,MAAM,2BAA2B,CAAC,QAAQ,EAAE,MAAM,CAAC;AACnD,MAAM,oCAAoC,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC5D,IAAI;;AAEJ,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC;AACH;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/functiontostring.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/functiontostring.js new file mode 100644 index 0000000..cf3d726 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/functiontostring.js @@ -0,0 +1,51 @@ +import { getClient } from '../currentScopes.js'; +import { defineIntegration } from '../integration.js'; +import { getOriginalFunction } from '../utils/object.js'; + +let originalFunctionToString; + +const INTEGRATION_NAME = 'FunctionToString'; + +const SETUP_CLIENTS = new WeakMap(); + +const _functionToStringIntegration = (() => { + return { + name: INTEGRATION_NAME, + setupOnce() { + // eslint-disable-next-line @typescript-eslint/unbound-method + originalFunctionToString = Function.prototype.toString; + + // intrinsics (like Function.prototype) might be immutable in some environments + // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal) + try { + Function.prototype.toString = function ( ...args) { + const originalFunction = getOriginalFunction(this); + const context = + SETUP_CLIENTS.has(getClient() ) && originalFunction !== undefined ? originalFunction : this; + return originalFunctionToString.apply(context, args); + }; + } catch { + // ignore errors here, just don't patch this + } + }, + setup(client) { + SETUP_CLIENTS.set(client, true); + }, + }; +}) ; + +/** + * Patch toString calls to return proper name for wrapped functions. + * + * ```js + * Sentry.init({ + * integrations: [ + * functionToStringIntegration(), + * ], + * }); + * ``` + */ +const functionToStringIntegration = defineIntegration(_functionToStringIntegration); + +export { functionToStringIntegration }; +//# sourceMappingURL=functiontostring.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/functiontostring.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/functiontostring.js.map new file mode 100644 index 0000000..043484e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/functiontostring.js.map @@ -0,0 +1 @@ +{"version":3,"file":"functiontostring.js","sources":["../../../src/integrations/functiontostring.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { getClient } from '../currentScopes';\nimport { defineIntegration } from '../integration';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { WrappedFunction } from '../types-hoist/wrappedfunction';\nimport { getOriginalFunction } from '../utils/object';\n\nlet originalFunctionToString: () => void;\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 (this: WrappedFunction, ...args: unknown[]): string {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() as Client) && 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}) satisfies IntegrationFn;\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 */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n"],"names":[],"mappings":";;;;AAOA,IAAI,wBAAwB;;AAE5B,MAAM,gBAAA,GAAmB,kBAAkB;;AAE3C,MAAM,aAAA,GAAgB,IAAI,OAAO,EAAmB;;AAEpD,MAAM,4BAAA,IAAgC,MAAM;AAC5C,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,SAAS,GAAG;AAChB;AACA,MAAM,2BAA2B,QAAQ,CAAC,SAAS,CAAC,QAAQ;;AAE5D;AACA;AACA,MAAM,IAAI;AACV,QAAQ,QAAQ,CAAC,SAAS,CAAC,QAAA,GAAW,WAAiC,GAAG,IAAI,EAAqB;AACnG,UAAU,MAAM,gBAAA,GAAmB,mBAAmB,CAAC,IAAI,CAAC;AAC5D,UAAU,MAAM,OAAA;AAChB,YAAY,aAAa,CAAC,GAAG,CAAC,SAAS,EAAC,EAAE,IAAc,qBAAqB,SAAA,GAAY,gBAAA,GAAmB,IAAI;AAChH,UAAU,OAAO,wBAAwB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9D,QAAQ,CAAC;AACT,MAAM,EAAE,MAAM;AACd;AACA,MAAM;AACN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AACrC,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACa,2BAAA,GAA8B,iBAAiB,CAAC,4BAA4B;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/linkederrors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/linkederrors.js new file mode 100644 index 0000000..00d9dd3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/linkederrors.js @@ -0,0 +1,27 @@ +import { defineIntegration } from '../integration.js'; +import { applyAggregateErrorsToEvent } from '../utils/aggregate-errors.js'; +import { exceptionFromError } from '../utils/eventbuilder.js'; + +const DEFAULT_KEY = 'cause'; +const DEFAULT_LIMIT = 5; + +const INTEGRATION_NAME = 'LinkedErrors'; + +const _linkedErrorsIntegration = ((options = {}) => { + const limit = options.limit || DEFAULT_LIMIT; + const key = options.key || DEFAULT_KEY; + + return { + name: INTEGRATION_NAME, + preprocessEvent(event, hint, client) { + const options = client.getOptions(); + + applyAggregateErrorsToEvent(exceptionFromError, options.stackParser, key, limit, event, hint); + }, + }; +}) ; + +const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration); + +export { linkedErrorsIntegration }; +//# sourceMappingURL=linkederrors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/linkederrors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/linkederrors.js.map new file mode 100644 index 0000000..4e257da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/linkederrors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"linkederrors.js","sources":["../../../src/integrations/linkederrors.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { applyAggregateErrorsToEvent } from '../utils/aggregate-errors';\nimport { exceptionFromError } from '../utils/eventbuilder';\n\ninterface LinkedErrorsOptions {\n key?: string;\n limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\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}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n"],"names":[],"mappings":";;;;AAUA,MAAM,WAAA,GAAc,OAAO;AAC3B,MAAM,aAAA,GAAgB,CAAC;;AAEvB,MAAM,gBAAA,GAAmB,cAAc;;AAEvC,MAAM,wBAAA,IAA4B,CAAC,OAAO,GAAwB,EAAE,KAAK;AACzE,EAAE,MAAM,KAAA,GAAQ,OAAO,CAAC,KAAA,IAAS,aAAa;AAC9C,EAAE,MAAM,GAAA,GAAM,OAAO,CAAC,GAAA,IAAO,WAAW;;AAExC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;AACzC,MAAM,MAAM,OAAA,GAAU,MAAM,CAAC,UAAU,EAAE;;AAEzC,MAAM,2BAA2B,CAAC,kBAAkB,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;AACnG,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;MAEY,uBAAA,GAA0B,iBAAiB,CAAC,wBAAwB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributeExtraction.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributeExtraction.js new file mode 100644 index 0000000..cfa3be5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributeExtraction.js @@ -0,0 +1,123 @@ +import { parseStringToURLObject, isURLObjectRelative } from '../../utils/url.js'; +import { MCP_REQUEST_ID_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE, MCP_LOGGING_LEVEL_ATTRIBUTE, MCP_LOGGING_LOGGER_ATTRIBUTE, MCP_LOGGING_DATA_TYPE_ATTRIBUTE, MCP_LOGGING_MESSAGE_ATTRIBUTE } from './attributes.js'; +import { extractTargetInfo, getRequestArguments } from './methodConfig.js'; + +/** + * Core attribute extraction and building functions for MCP server instrumentation + */ + + +/** + * Formats logging data for span attributes + * @internal + */ +function formatLoggingData(data) { + return typeof data === 'string' ? data : JSON.stringify(data); +} + +/** + * Extracts additional attributes for specific notification types + * @param method - Notification method name + * @param params - Notification parameters + * @param recordInputs - Whether to include actual content or just metadata + * @returns Method-specific attributes for span instrumentation + */ +function getNotificationAttributes( + method, + params, + recordInputs, +) { + const attributes = {}; + + switch (method) { + case 'notifications/cancelled': + if (params?.requestId) { + attributes['mcp.cancelled.request_id'] = String(params.requestId); + } + if (params?.reason) { + attributes['mcp.cancelled.reason'] = String(params.reason); + } + break; + + case 'notifications/message': + if (params?.level) { + attributes[MCP_LOGGING_LEVEL_ATTRIBUTE] = String(params.level); + } + if (params?.logger) { + attributes[MCP_LOGGING_LOGGER_ATTRIBUTE] = String(params.logger); + } + if (params?.data !== undefined) { + attributes[MCP_LOGGING_DATA_TYPE_ATTRIBUTE] = typeof params.data; + if (recordInputs) { + attributes[MCP_LOGGING_MESSAGE_ATTRIBUTE] = formatLoggingData(params.data); + } + } + break; + + case 'notifications/progress': + if (params?.progressToken) { + attributes['mcp.progress.token'] = String(params.progressToken); + } + if (typeof params?.progress === 'number') { + attributes['mcp.progress.current'] = params.progress; + } + if (typeof params?.total === 'number') { + attributes['mcp.progress.total'] = params.total; + if (typeof params?.progress === 'number') { + attributes['mcp.progress.percentage'] = (params.progress / params.total) * 100; + } + } + if (params?.message) { + attributes['mcp.progress.message'] = String(params.message); + } + break; + + case 'notifications/resources/updated': + if (params?.uri) { + attributes[MCP_RESOURCE_URI_ATTRIBUTE] = String(params.uri); + const urlObject = parseStringToURLObject(String(params.uri)); + if (urlObject && !isURLObjectRelative(urlObject)) { + attributes['mcp.resource.protocol'] = urlObject.protocol.replace(':', ''); + } + } + break; + + case 'notifications/initialized': + attributes['mcp.lifecycle.phase'] = 'initialization_complete'; + attributes['mcp.protocol.ready'] = 1; + break; + } + + return attributes; +} + +/** + * Build type-specific attributes based on message type + * @param type - Span type (request or notification) + * @param message - JSON-RPC message + * @param params - Optional parameters for attribute extraction + * @param recordInputs - Whether to capture input arguments in spans + * @returns Type-specific attributes for span instrumentation + */ +function buildTypeSpecificAttributes( + type, + message, + params, + recordInputs, +) { + if (type === 'request') { + const request = message ; + const targetInfo = extractTargetInfo(request.method, params || {}); + + return { + ...(request.id !== undefined && { [MCP_REQUEST_ID_ATTRIBUTE]: String(request.id) }), + ...targetInfo.attributes, + ...(recordInputs ? getRequestArguments(request.method, params || {}) : {}), + }; + } + + return getNotificationAttributes(message.method, params || {}, recordInputs); +} + +export { buildTypeSpecificAttributes, getNotificationAttributes }; +//# sourceMappingURL=attributeExtraction.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributeExtraction.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributeExtraction.js.map new file mode 100644 index 0000000..2a9b83d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributeExtraction.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributeExtraction.js","sources":["../../../../src/integrations/mcp-server/attributeExtraction.ts"],"sourcesContent":["/**\n * Core attribute extraction and building functions for MCP server instrumentation\n */\n\nimport { isURLObjectRelative, parseStringToURLObject } from '../../utils/url';\nimport {\n MCP_LOGGING_DATA_TYPE_ATTRIBUTE,\n MCP_LOGGING_LEVEL_ATTRIBUTE,\n MCP_LOGGING_LOGGER_ATTRIBUTE,\n MCP_LOGGING_MESSAGE_ATTRIBUTE,\n MCP_REQUEST_ID_ATTRIBUTE,\n MCP_RESOURCE_URI_ATTRIBUTE,\n} from './attributes';\nimport { extractTargetInfo, getRequestArguments } from './methodConfig';\nimport type { JsonRpcNotification, JsonRpcRequest, McpSpanType } from './types';\n\n/**\n * Formats logging data for span attributes\n * @internal\n */\nfunction formatLoggingData(data: unknown): string {\n return typeof data === 'string' ? data : JSON.stringify(data);\n}\n\n/**\n * Extracts additional attributes for specific notification types\n * @param method - Notification method name\n * @param params - Notification parameters\n * @param recordInputs - Whether to include actual content or just metadata\n * @returns Method-specific attributes for span instrumentation\n */\nexport function getNotificationAttributes(\n method: string,\n params: Record,\n recordInputs?: boolean,\n): Record {\n const attributes: Record = {};\n\n switch (method) {\n case 'notifications/cancelled':\n if (params?.requestId) {\n attributes['mcp.cancelled.request_id'] = String(params.requestId);\n }\n if (params?.reason) {\n attributes['mcp.cancelled.reason'] = String(params.reason);\n }\n break;\n\n case 'notifications/message':\n if (params?.level) {\n attributes[MCP_LOGGING_LEVEL_ATTRIBUTE] = String(params.level);\n }\n if (params?.logger) {\n attributes[MCP_LOGGING_LOGGER_ATTRIBUTE] = String(params.logger);\n }\n if (params?.data !== undefined) {\n attributes[MCP_LOGGING_DATA_TYPE_ATTRIBUTE] = typeof params.data;\n if (recordInputs) {\n attributes[MCP_LOGGING_MESSAGE_ATTRIBUTE] = formatLoggingData(params.data);\n }\n }\n break;\n\n case 'notifications/progress':\n if (params?.progressToken) {\n attributes['mcp.progress.token'] = String(params.progressToken);\n }\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.current'] = params.progress;\n }\n if (typeof params?.total === 'number') {\n attributes['mcp.progress.total'] = params.total;\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.percentage'] = (params.progress / params.total) * 100;\n }\n }\n if (params?.message) {\n attributes['mcp.progress.message'] = String(params.message);\n }\n break;\n\n case 'notifications/resources/updated':\n if (params?.uri) {\n attributes[MCP_RESOURCE_URI_ATTRIBUTE] = String(params.uri);\n const urlObject = parseStringToURLObject(String(params.uri));\n if (urlObject && !isURLObjectRelative(urlObject)) {\n attributes['mcp.resource.protocol'] = urlObject.protocol.replace(':', '');\n }\n }\n break;\n\n case 'notifications/initialized':\n attributes['mcp.lifecycle.phase'] = 'initialization_complete';\n attributes['mcp.protocol.ready'] = 1;\n break;\n }\n\n return attributes;\n}\n\n/**\n * Build type-specific attributes based on message type\n * @param type - Span type (request or notification)\n * @param message - JSON-RPC message\n * @param params - Optional parameters for attribute extraction\n * @param recordInputs - Whether to capture input arguments in spans\n * @returns Type-specific attributes for span instrumentation\n */\nexport function buildTypeSpecificAttributes(\n type: McpSpanType,\n message: JsonRpcRequest | JsonRpcNotification,\n params?: Record,\n recordInputs?: boolean,\n): Record {\n if (type === 'request') {\n const request = message as JsonRpcRequest;\n const targetInfo = extractTargetInfo(request.method, params || {});\n\n return {\n ...(request.id !== undefined && { [MCP_REQUEST_ID_ATTRIBUTE]: String(request.id) }),\n ...targetInfo.attributes,\n ...(recordInputs ? getRequestArguments(request.method, params || {}) : {}),\n };\n }\n\n return getNotificationAttributes(message.method, params || {}, recordInputs);\n}\n\n// Re-export buildTransportAttributes for spans.ts\nexport { buildTransportAttributes } from './sessionExtraction';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributes.js new file mode 100644 index 0000000..e29ef7e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributes.js @@ -0,0 +1,141 @@ +/** + * Essential MCP attribute constants for Sentry instrumentation + * + * Based on OpenTelemetry MCP semantic conventions + * @see https://github.com/open-telemetry/semantic-conventions/blob/3097fb0af5b9492b0e3f55dc5f6c21a3dc2be8df/docs/gen-ai/mcp.md + */ + +// ============================================================================= +// CORE MCP ATTRIBUTES +// ============================================================================= + +/** The name of the request or notification method */ +const MCP_METHOD_NAME_ATTRIBUTE = 'mcp.method.name'; + +/** JSON-RPC request identifier for the request. Unique within the MCP session. */ +const MCP_REQUEST_ID_ATTRIBUTE = 'mcp.request.id'; + +/** Identifies the MCP session */ +const MCP_SESSION_ID_ATTRIBUTE = 'mcp.session.id'; + +/** Transport method used for MCP communication */ +const MCP_TRANSPORT_ATTRIBUTE = 'mcp.transport'; + +// ============================================================================= +// SERVER ATTRIBUTES +// ============================================================================= + +/** Name of the MCP server application */ +const MCP_SERVER_NAME_ATTRIBUTE = 'mcp.server.name'; + +/** Display title of the MCP server application */ +const MCP_SERVER_TITLE_ATTRIBUTE = 'mcp.server.title'; + +/** Version of the MCP server application */ +const MCP_SERVER_VERSION_ATTRIBUTE = 'mcp.server.version'; + +/** MCP protocol version used in the session */ +const MCP_PROTOCOL_VERSION_ATTRIBUTE = 'mcp.protocol.version'; + +// ============================================================================= +// METHOD-SPECIFIC ATTRIBUTES +// ============================================================================= + +/** Name of the tool being called */ +const MCP_TOOL_NAME_ATTRIBUTE = 'mcp.tool.name'; + +/** The resource URI being accessed */ +const MCP_RESOURCE_URI_ATTRIBUTE = 'mcp.resource.uri'; + +/** Name of the prompt template */ +const MCP_PROMPT_NAME_ATTRIBUTE = 'mcp.prompt.name'; + +// ============================================================================= +// TOOL RESULT ATTRIBUTES +// ============================================================================= + +/** Whether a tool execution resulted in an error */ +const MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE = 'mcp.tool.result.is_error'; + +/** Number of content items in the tool result */ +const MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE = 'mcp.tool.result.content_count'; + +// ============================================================================= +// PROMPT RESULT ATTRIBUTES +// ============================================================================= + +/** Description of the prompt result */ +const MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE = 'mcp.prompt.result.description'; + +/** Number of messages in the prompt result */ +const MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE = 'mcp.prompt.result.message_count'; + +// ============================================================================= +// REQUEST ARGUMENT ATTRIBUTES +// ============================================================================= + +/** Prefix for MCP request argument prefix for each argument */ +const MCP_REQUEST_ARGUMENT = 'mcp.request.argument'; + +// ============================================================================= +// LOGGING ATTRIBUTES +// ============================================================================= + +/** Log level for MCP logging operations */ +const MCP_LOGGING_LEVEL_ATTRIBUTE = 'mcp.logging.level'; + +/** Logger name for MCP logging operations */ +const MCP_LOGGING_LOGGER_ATTRIBUTE = 'mcp.logging.logger'; + +/** Data type of the logged message */ +const MCP_LOGGING_DATA_TYPE_ATTRIBUTE = 'mcp.logging.data_type'; + +/** Log message content */ +const MCP_LOGGING_MESSAGE_ATTRIBUTE = 'mcp.logging.message'; + +// ============================================================================= +// NETWORK ATTRIBUTES (OpenTelemetry Standard) +// ============================================================================= + +/** OSI transport layer protocol */ +const NETWORK_TRANSPORT_ATTRIBUTE = 'network.transport'; + +/** The version of JSON RPC protocol used */ +const NETWORK_PROTOCOL_VERSION_ATTRIBUTE = 'network.protocol.version'; + +/** Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name */ +const CLIENT_ADDRESS_ATTRIBUTE = 'client.address'; + +/** Client port number */ +const CLIENT_PORT_ATTRIBUTE = 'client.port'; + +// ============================================================================= +// SENTRY-SPECIFIC MCP ATTRIBUTE VALUES +// ============================================================================= + +/** Sentry operation value for MCP server spans */ +const MCP_SERVER_OP_VALUE = 'mcp.server'; + +/** + * Sentry operation value for client-to-server notifications + * Following OpenTelemetry MCP semantic conventions + */ +const MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE = 'mcp.notification.client_to_server'; + +/** + * Sentry operation value for server-to-client notifications + * Following OpenTelemetry MCP semantic conventions + */ +const MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE = 'mcp.notification.server_to_client'; + +/** Sentry origin value for MCP function spans */ +const MCP_FUNCTION_ORIGIN_VALUE = 'auto.function.mcp_server'; + +/** Sentry origin value for MCP notification spans */ +const MCP_NOTIFICATION_ORIGIN_VALUE = 'auto.mcp.notification'; + +/** Sentry source value for MCP route spans */ +const MCP_ROUTE_SOURCE_VALUE = 'route'; + +export { CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_FUNCTION_ORIGIN_VALUE, MCP_LOGGING_DATA_TYPE_ATTRIBUTE, MCP_LOGGING_LEVEL_ATTRIBUTE, MCP_LOGGING_LOGGER_ATTRIBUTE, MCP_LOGGING_MESSAGE_ATTRIBUTE, MCP_METHOD_NAME_ATTRIBUTE, MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE, MCP_NOTIFICATION_ORIGIN_VALUE, MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE, MCP_PROMPT_NAME_ATTRIBUTE, MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE, MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE, MCP_PROTOCOL_VERSION_ATTRIBUTE, MCP_REQUEST_ARGUMENT, MCP_REQUEST_ID_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE, MCP_ROUTE_SOURCE_VALUE, MCP_SERVER_NAME_ATTRIBUTE, MCP_SERVER_OP_VALUE, MCP_SERVER_TITLE_ATTRIBUTE, MCP_SERVER_VERSION_ATTRIBUTE, MCP_SESSION_ID_ATTRIBUTE, MCP_TOOL_NAME_ATTRIBUTE, MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE, MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE, MCP_TRANSPORT_ATTRIBUTE, NETWORK_PROTOCOL_VERSION_ATTRIBUTE, NETWORK_TRANSPORT_ATTRIBUTE }; +//# sourceMappingURL=attributes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributes.js.map new file mode 100644 index 0000000..0a5023d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attributes.js","sources":["../../../../src/integrations/mcp-server/attributes.ts"],"sourcesContent":["/**\n * Essential MCP attribute constants for Sentry instrumentation\n *\n * Based on OpenTelemetry MCP semantic conventions\n * @see https://github.com/open-telemetry/semantic-conventions/blob/3097fb0af5b9492b0e3f55dc5f6c21a3dc2be8df/docs/gen-ai/mcp.md\n */\n\n// =============================================================================\n// CORE MCP ATTRIBUTES\n// =============================================================================\n\n/** The name of the request or notification method */\nexport const MCP_METHOD_NAME_ATTRIBUTE = 'mcp.method.name';\n\n/** JSON-RPC request identifier for the request. Unique within the MCP session. */\nexport const MCP_REQUEST_ID_ATTRIBUTE = 'mcp.request.id';\n\n/** Identifies the MCP session */\nexport const MCP_SESSION_ID_ATTRIBUTE = 'mcp.session.id';\n\n/** Transport method used for MCP communication */\nexport const MCP_TRANSPORT_ATTRIBUTE = 'mcp.transport';\n\n// =============================================================================\n// CLIENT ATTRIBUTES\n// =============================================================================\n\n/** Name of the MCP client application */\nexport const MCP_CLIENT_NAME_ATTRIBUTE = 'mcp.client.name';\n\n/** Display title of the MCP client application */\nexport const MCP_CLIENT_TITLE_ATTRIBUTE = 'mcp.client.title';\n\n/** Version of the MCP client application */\nexport const MCP_CLIENT_VERSION_ATTRIBUTE = 'mcp.client.version';\n\n// =============================================================================\n// SERVER ATTRIBUTES\n// =============================================================================\n\n/** Name of the MCP server application */\nexport const MCP_SERVER_NAME_ATTRIBUTE = 'mcp.server.name';\n\n/** Display title of the MCP server application */\nexport const MCP_SERVER_TITLE_ATTRIBUTE = 'mcp.server.title';\n\n/** Version of the MCP server application */\nexport const MCP_SERVER_VERSION_ATTRIBUTE = 'mcp.server.version';\n\n/** MCP protocol version used in the session */\nexport const MCP_PROTOCOL_VERSION_ATTRIBUTE = 'mcp.protocol.version';\n\n// =============================================================================\n// METHOD-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/** Name of the tool being called */\nexport const MCP_TOOL_NAME_ATTRIBUTE = 'mcp.tool.name';\n\n/** The resource URI being accessed */\nexport const MCP_RESOURCE_URI_ATTRIBUTE = 'mcp.resource.uri';\n\n/** Name of the prompt template */\nexport const MCP_PROMPT_NAME_ATTRIBUTE = 'mcp.prompt.name';\n\n// =============================================================================\n// TOOL RESULT ATTRIBUTES\n// =============================================================================\n\n/** Whether a tool execution resulted in an error */\nexport const MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE = 'mcp.tool.result.is_error';\n\n/** Number of content items in the tool result */\nexport const MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE = 'mcp.tool.result.content_count';\n\n/** Serialized content of the tool result */\nexport const MCP_TOOL_RESULT_CONTENT_ATTRIBUTE = 'mcp.tool.result.content';\n\n/** Prefix for tool result attributes that contain sensitive content */\nexport const MCP_TOOL_RESULT_PREFIX = 'mcp.tool.result';\n\n// =============================================================================\n// PROMPT RESULT ATTRIBUTES\n// =============================================================================\n\n/** Description of the prompt result */\nexport const MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE = 'mcp.prompt.result.description';\n\n/** Number of messages in the prompt result */\nexport const MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE = 'mcp.prompt.result.message_count';\n\n/** Role of the message in the prompt result (for single message results) */\nexport const MCP_PROMPT_RESULT_MESSAGE_ROLE_ATTRIBUTE = 'mcp.prompt.result.message_role';\n\n/** Content of the message in the prompt result (for single message results) */\nexport const MCP_PROMPT_RESULT_MESSAGE_CONTENT_ATTRIBUTE = 'mcp.prompt.result.message_content';\n\n/** Prefix for prompt result attributes that contain sensitive content */\nexport const MCP_PROMPT_RESULT_PREFIX = 'mcp.prompt.result';\n\n// =============================================================================\n// REQUEST ARGUMENT ATTRIBUTES\n// =============================================================================\n\n/** Prefix for MCP request argument prefix for each argument */\nexport const MCP_REQUEST_ARGUMENT = 'mcp.request.argument';\n\n// =============================================================================\n// LOGGING ATTRIBUTES\n// =============================================================================\n\n/** Log level for MCP logging operations */\nexport const MCP_LOGGING_LEVEL_ATTRIBUTE = 'mcp.logging.level';\n\n/** Logger name for MCP logging operations */\nexport const MCP_LOGGING_LOGGER_ATTRIBUTE = 'mcp.logging.logger';\n\n/** Data type of the logged message */\nexport const MCP_LOGGING_DATA_TYPE_ATTRIBUTE = 'mcp.logging.data_type';\n\n/** Log message content */\nexport const MCP_LOGGING_MESSAGE_ATTRIBUTE = 'mcp.logging.message';\n\n// =============================================================================\n// NETWORK ATTRIBUTES (OpenTelemetry Standard)\n// =============================================================================\n\n/** OSI transport layer protocol */\nexport const NETWORK_TRANSPORT_ATTRIBUTE = 'network.transport';\n\n/** The version of JSON RPC protocol used */\nexport const NETWORK_PROTOCOL_VERSION_ATTRIBUTE = 'network.protocol.version';\n\n/** Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name */\nexport const CLIENT_ADDRESS_ATTRIBUTE = 'client.address';\n\n/** Client port number */\nexport const CLIENT_PORT_ATTRIBUTE = 'client.port';\n\n// =============================================================================\n// SENTRY-SPECIFIC MCP ATTRIBUTE VALUES\n// =============================================================================\n\n/** Sentry operation value for MCP server spans */\nexport const MCP_SERVER_OP_VALUE = 'mcp.server';\n\n/**\n * Sentry operation value for client-to-server notifications\n * Following OpenTelemetry MCP semantic conventions\n */\nexport const MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE = 'mcp.notification.client_to_server';\n\n/**\n * Sentry operation value for server-to-client notifications\n * Following OpenTelemetry MCP semantic conventions\n */\nexport const MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE = 'mcp.notification.server_to_client';\n\n/** Sentry origin value for MCP function spans */\nexport const MCP_FUNCTION_ORIGIN_VALUE = 'auto.function.mcp_server';\n\n/** Sentry origin value for MCP notification spans */\nexport const MCP_NOTIFICATION_ORIGIN_VALUE = 'auto.mcp.notification';\n\n/** Sentry source value for MCP route spans */\nexport const MCP_ROUTE_SOURCE_VALUE = 'route';\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACO,MAAM,wBAAA,GAA2B;;AAExC;AACO,MAAM,wBAAA,GAA2B;;AAExC;AACO,MAAM,uBAAA,GAA0B;;AAevC;AACA;AACA;;AAEA;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACO,MAAM,0BAAA,GAA6B;;AAE1C;AACO,MAAM,4BAAA,GAA+B;;AAE5C;AACO,MAAM,8BAAA,GAAiC;;AAE9C;AACA;AACA;;AAEA;AACO,MAAM,uBAAA,GAA0B;;AAEvC;AACO,MAAM,0BAAA,GAA6B;;AAE1C;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACA;AACA;;AAEA;AACO,MAAM,kCAAA,GAAqC;;AAElD;AACO,MAAM,uCAAA,GAA0C;;AAQvD;AACA;AACA;;AAEA;AACO,MAAM,uCAAA,GAA0C;;AAEvD;AACO,MAAM,yCAAA,GAA4C;;AAWzD;AACA;AACA;;AAEA;AACO,MAAM,oBAAA,GAAuB;;AAEpC;AACA;AACA;;AAEA;AACO,MAAM,2BAAA,GAA8B;;AAE3C;AACO,MAAM,4BAAA,GAA+B;;AAE5C;AACO,MAAM,+BAAA,GAAkC;;AAE/C;AACO,MAAM,6BAAA,GAAgC;;AAE7C;AACA;AACA;;AAEA;AACO,MAAM,2BAAA,GAA8B;;AAE3C;AACO,MAAM,kCAAA,GAAqC;;AAElD;AACO,MAAM,wBAAA,GAA2B;;AAExC;AACO,MAAM,qBAAA,GAAwB;;AAErC;AACA;AACA;;AAEA;AACO,MAAM,mBAAA,GAAsB;;AAEnC;AACA;AACA;AACA;AACO,MAAM,0CAAA,GAA6C;;AAE1D;AACA;AACA;AACA;AACO,MAAM,0CAAA,GAA6C;;AAE1D;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACO,MAAM,6BAAA,GAAgC;;AAE7C;AACO,MAAM,sBAAA,GAAyB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/correlation.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/correlation.js new file mode 100644 index 0000000..e32df7b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/correlation.js @@ -0,0 +1,115 @@ +import { SPAN_STATUS_ERROR } from '../../tracing/spanstatus.js'; +import { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes.js'; +import { extractToolResultAttributes, extractPromptResultAttributes } from './resultExtraction.js'; +import { extractSessionDataFromInitializeResponse, buildServerAttributesFromInfo } from './sessionExtraction.js'; + +/** + * Request-span correlation system for MCP server instrumentation + * + * Handles mapping requestId to span data for correlation with handler execution. + * Uses WeakMap to scope correlation maps per transport instance, preventing + * request ID collisions between different MCP sessions. + */ + + +/** + * Transport-scoped correlation system that prevents collisions between different MCP sessions + * @internal Each transport instance gets its own correlation map, eliminating request ID conflicts + */ +const transportToSpanMap = new WeakMap(); + +/** + * Gets or creates the span map for a specific transport instance + * @internal + * @param transport - MCP transport instance + * @returns Span map for the transport + */ +function getOrCreateSpanMap(transport) { + let spanMap = transportToSpanMap.get(transport); + if (!spanMap) { + spanMap = new Map(); + transportToSpanMap.set(transport, spanMap); + } + return spanMap; +} + +/** + * Stores span context for later correlation with handler execution + * @param transport - MCP transport instance + * @param requestId - Request identifier + * @param span - Active span to correlate + * @param method - MCP method name + */ +function storeSpanForRequest(transport, requestId, span, method) { + const spanMap = getOrCreateSpanMap(transport); + spanMap.set(requestId, { + span, + method, + // eslint-disable-next-line @sentry-internal/sdk/no-unsafe-random-apis + startTime: Date.now(), + }); +} + +/** + * Completes span with results and cleans up correlation + * @param transport - MCP transport instance + * @param requestId - Request identifier + * @param result - Execution result for attribute extraction + * @param options - Resolved MCP options + */ +function completeSpanWithResults( + transport, + requestId, + result, + options, +) { + const spanMap = getOrCreateSpanMap(transport); + const spanData = spanMap.get(requestId); + if (spanData) { + const { span, method } = spanData; + + if (method === 'initialize') { + const sessionData = extractSessionDataFromInitializeResponse(result); + const serverAttributes = buildServerAttributesFromInfo(sessionData.serverInfo); + + const initAttributes = { + ...serverAttributes, + }; + if (sessionData.protocolVersion) { + initAttributes[MCP_PROTOCOL_VERSION_ATTRIBUTE] = sessionData.protocolVersion; + } + + span.setAttributes(initAttributes); + } else if (method === 'tools/call') { + const toolAttributes = extractToolResultAttributes(result, options.recordOutputs); + span.setAttributes(toolAttributes); + } else if (method === 'prompts/get') { + const promptAttributes = extractPromptResultAttributes(result, options.recordOutputs); + span.setAttributes(promptAttributes); + } + + span.end(); + spanMap.delete(requestId); + } +} + +/** + * Cleans up pending spans for a specific transport (when that transport closes) + * @param transport - MCP transport instance + */ +function cleanupPendingSpansForTransport(transport) { + const spanMap = transportToSpanMap.get(transport); + if (spanMap) { + for (const [, spanData] of spanMap) { + spanData.span.setStatus({ + code: SPAN_STATUS_ERROR, + message: 'cancelled', + }); + spanData.span.end(); + } + spanMap.clear(); + } +} + +export { cleanupPendingSpansForTransport, completeSpanWithResults, storeSpanForRequest }; +//# sourceMappingURL=correlation.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/correlation.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/correlation.js.map new file mode 100644 index 0000000..796f704 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/correlation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"correlation.js","sources":["../../../../src/integrations/mcp-server/correlation.ts"],"sourcesContent":["/**\n * Request-span correlation system for MCP server instrumentation\n *\n * Handles mapping requestId to span data for correlation with handler execution.\n * Uses WeakMap to scope correlation maps per transport instance, preventing\n * request ID collisions between different MCP sessions.\n */\n\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes';\nimport { extractPromptResultAttributes, extractToolResultAttributes } from './resultExtraction';\nimport { buildServerAttributesFromInfo, extractSessionDataFromInitializeResponse } from './sessionExtraction';\nimport type { MCPTransport, RequestId, RequestSpanMapValue, ResolvedMcpOptions } from './types';\n\n/**\n * Transport-scoped correlation system that prevents collisions between different MCP sessions\n * @internal Each transport instance gets its own correlation map, eliminating request ID conflicts\n */\nconst transportToSpanMap = new WeakMap>();\n\n/**\n * Gets or creates the span map for a specific transport instance\n * @internal\n * @param transport - MCP transport instance\n * @returns Span map for the transport\n */\nfunction getOrCreateSpanMap(transport: MCPTransport): Map {\n let spanMap = transportToSpanMap.get(transport);\n if (!spanMap) {\n spanMap = new Map();\n transportToSpanMap.set(transport, spanMap);\n }\n return spanMap;\n}\n\n/**\n * Stores span context for later correlation with handler execution\n * @param transport - MCP transport instance\n * @param requestId - Request identifier\n * @param span - Active span to correlate\n * @param method - MCP method name\n */\nexport function storeSpanForRequest(transport: MCPTransport, requestId: RequestId, span: Span, method: string): void {\n const spanMap = getOrCreateSpanMap(transport);\n spanMap.set(requestId, {\n span,\n method,\n // eslint-disable-next-line @sentry-internal/sdk/no-unsafe-random-apis\n startTime: Date.now(),\n });\n}\n\n/**\n * Completes span with results and cleans up correlation\n * @param transport - MCP transport instance\n * @param requestId - Request identifier\n * @param result - Execution result for attribute extraction\n * @param options - Resolved MCP options\n */\nexport function completeSpanWithResults(\n transport: MCPTransport,\n requestId: RequestId,\n result: unknown,\n options: ResolvedMcpOptions,\n): void {\n const spanMap = getOrCreateSpanMap(transport);\n const spanData = spanMap.get(requestId);\n if (spanData) {\n const { span, method } = spanData;\n\n if (method === 'initialize') {\n const sessionData = extractSessionDataFromInitializeResponse(result);\n const serverAttributes = buildServerAttributesFromInfo(sessionData.serverInfo);\n\n const initAttributes: Record = {\n ...serverAttributes,\n };\n if (sessionData.protocolVersion) {\n initAttributes[MCP_PROTOCOL_VERSION_ATTRIBUTE] = sessionData.protocolVersion;\n }\n\n span.setAttributes(initAttributes);\n } else if (method === 'tools/call') {\n const toolAttributes = extractToolResultAttributes(result, options.recordOutputs);\n span.setAttributes(toolAttributes);\n } else if (method === 'prompts/get') {\n const promptAttributes = extractPromptResultAttributes(result, options.recordOutputs);\n span.setAttributes(promptAttributes);\n }\n\n span.end();\n spanMap.delete(requestId);\n }\n}\n\n/**\n * Cleans up pending spans for a specific transport (when that transport closes)\n * @param transport - MCP transport instance\n */\nexport function cleanupPendingSpansForTransport(transport: MCPTransport): void {\n const spanMap = transportToSpanMap.get(transport);\n if (spanMap) {\n for (const [, spanData] of spanMap) {\n spanData.span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'cancelled',\n });\n spanData.span.end();\n }\n spanMap.clear();\n }\n}\n"],"names":[],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;AASA;AACA;AACA;AACA;AACA,MAAM,kBAAA,GAAqB,IAAI,OAAO,EAAqD;;AAE3F;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,SAAS,EAAqD;AAC1F,EAAE,IAAI,UAAU,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC;AACjD,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,OAAA,GAAU,IAAI,GAAG,EAAE;AACvB,IAAI,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;AAC9C,EAAE;AACF,EAAE,OAAO,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,SAAS,EAAgB,SAAS,EAAa,IAAI,EAAQ,MAAM,EAAgB;AACrH,EAAE,MAAM,OAAA,GAAU,kBAAkB,CAAC,SAAS,CAAC;AAC/C,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE;AACzB,IAAI,IAAI;AACR,IAAI,MAAM;AACV;AACA,IAAI,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACzB,GAAG,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAuB;AACvC,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAQ;AACR,EAAE,MAAM,OAAA,GAAU,kBAAkB,CAAC,SAAS,CAAC;AAC/C,EAAE,MAAM,WAAW,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AACzC,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,MAAM,EAAE,IAAI,EAAE,MAAA,EAAO,GAAI,QAAQ;;AAErC,IAAI,IAAI,MAAA,KAAW,YAAY,EAAE;AACjC,MAAM,MAAM,WAAA,GAAc,wCAAwC,CAAC,MAAM,CAAC;AAC1E,MAAM,MAAM,mBAAmB,6BAA6B,CAAC,WAAW,CAAC,UAAU,CAAC;;AAEpF,MAAM,MAAM,cAAc,GAAoC;AAC9D,QAAQ,GAAG,gBAAgB;AAC3B,OAAO;AACP,MAAM,IAAI,WAAW,CAAC,eAAe,EAAE;AACvC,QAAQ,cAAc,CAAC,8BAA8B,IAAI,WAAW,CAAC,eAAe;AACpF,MAAM;;AAEN,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;AACxC,IAAI,OAAO,IAAI,MAAA,KAAW,YAAY,EAAE;AACxC,MAAM,MAAM,cAAA,GAAiB,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC;AACvF,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;AACxC,IAAI,OAAO,IAAI,MAAA,KAAW,aAAa,EAAE;AACzC,MAAM,MAAM,gBAAA,GAAmB,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC;AAC3F,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;AAC1C,IAAI;;AAEJ,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7B,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,SAAS,+BAA+B,CAAC,SAAS,EAAsB;AAC/E,EAAE,MAAM,UAAU,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC;AACnD,EAAE,IAAI,OAAO,EAAE;AACf,IAAI,KAAK,MAAM,GAAG,QAAQ,CAAA,IAAK,OAAO,EAAE;AACxC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,QAAQ,IAAI,EAAE,iBAAiB;AAC/B,QAAQ,OAAO,EAAE,WAAW;AAC5B,OAAO,CAAC;AACR,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;AACzB,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/errorCapture.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/errorCapture.js new file mode 100644 index 0000000..5883495 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/errorCapture.js @@ -0,0 +1,53 @@ +import { getClient } from '../../currentScopes.js'; +import { captureException } from '../../exports.js'; +import { getActiveSpan } from '../../utils/spanUtils.js'; +import { SPAN_STATUS_ERROR } from '../../tracing/spanstatus.js'; + +/** + * Safe error capture utilities for MCP server instrumentation + * + * Ensures error reporting never interferes with MCP server operation. + * All capture operations are wrapped in try-catch to prevent side effects. + */ + + +/** + * Captures an error without affecting MCP server operation. + * + * The active span already contains all MCP context (method, tool, arguments, etc.) + * @param error - Error to capture + * @param errorType - Classification of error type for filtering + * @param extraData - Additional context data to include + */ +function captureError(error, errorType, extraData) { + try { + const client = getClient(); + if (!client) { + return; + } + + const activeSpan = getActiveSpan(); + if (activeSpan?.isRecording()) { + activeSpan.setStatus({ + code: SPAN_STATUS_ERROR, + message: 'internal_error', + }); + } + + captureException(error, { + mechanism: { + type: 'auto.ai.mcp_server', + handled: false, + data: { + error_type: errorType || 'handler_execution', + ...extraData, + }, + }, + }); + } catch { + // noop + } +} + +export { captureError }; +//# sourceMappingURL=errorCapture.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/errorCapture.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/errorCapture.js.map new file mode 100644 index 0000000..d98718d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/errorCapture.js.map @@ -0,0 +1 @@ +{"version":3,"file":"errorCapture.js","sources":["../../../../src/integrations/mcp-server/errorCapture.ts"],"sourcesContent":["/**\n * Safe error capture utilities for MCP server instrumentation\n *\n * Ensures error reporting never interferes with MCP server operation.\n * All capture operations are wrapped in try-catch to prevent side effects.\n */\n\nimport { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { getActiveSpan } from '../../utils/spanUtils';\nimport type { McpErrorType } from './types';\n\n/**\n * Captures an error without affecting MCP server operation.\n *\n * The active span already contains all MCP context (method, tool, arguments, etc.)\n * @param error - Error to capture\n * @param errorType - Classification of error type for filtering\n * @param extraData - Additional context data to include\n */\nexport function captureError(error: Error, errorType?: McpErrorType, extraData?: Record): void {\n try {\n const client = getClient();\n if (!client) {\n return;\n }\n\n const activeSpan = getActiveSpan();\n if (activeSpan?.isRecording()) {\n activeSpan.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'internal_error',\n });\n }\n\n captureException(error, {\n mechanism: {\n type: 'auto.ai.mcp_server',\n handled: false,\n data: {\n error_type: errorType || 'handler_execution',\n ...extraData,\n },\n },\n });\n } catch {\n // noop\n }\n}\n"],"names":[],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,KAAK,EAAS,SAAS,EAAiB,SAAS,EAAkC;AAChH,EAAE,IAAI;AACN,IAAI,MAAM,MAAA,GAAS,SAAS,EAAE;AAC9B,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,UAAA,GAAa,aAAa,EAAE;AACtC,IAAI,IAAI,UAAU,EAAE,WAAW,EAAE,EAAE;AACnC,MAAM,UAAU,CAAC,SAAS,CAAC;AAC3B,QAAQ,IAAI,EAAE,iBAAiB;AAC/B,QAAQ,OAAO,EAAE,gBAAgB;AACjC,OAAO,CAAC;AACR,IAAI;;AAEJ,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,MAAM,SAAS,EAAE;AACjB,QAAQ,IAAI,EAAE,oBAAoB;AAClC,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,IAAI,EAAE;AACd,UAAU,UAAU,EAAE,SAAA,IAAa,mBAAmB;AACtD,UAAU,GAAG,SAAS;AACtB,SAAS;AACT,OAAO;AACP,KAAK,CAAC;AACN,EAAE,EAAE,MAAM;AACV;AACA,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/handlers.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/handlers.js new file mode 100644 index 0000000..a3e8922 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/handlers.js @@ -0,0 +1,164 @@ +import { DEBUG_BUILD } from '../../debug-build.js'; +import { debug } from '../../utils/debug-logger.js'; +import { fill } from '../../utils/object.js'; +import { captureError } from './errorCapture.js'; + +/** + * Handler method wrapping for MCP server instrumentation + * + * Provides automatic error capture and span correlation for tool, resource, + * and prompt handlers. + */ + + +/** + * Generic function to wrap MCP server method handlers + * @internal + * @param serverInstance - MCP server instance + * @param methodName - Method name to wrap (tool, resource, prompt) + */ +function wrapMethodHandler(serverInstance, methodName) { + fill(serverInstance, methodName, originalMethod => { + return function ( name, ...args) { + const handler = args[args.length - 1]; + + if (typeof handler !== 'function') { + return (originalMethod ).call(this, name, ...args); + } + + const wrappedHandler = createWrappedHandler(handler , methodName, name); + return (originalMethod ).call(this, name, ...args.slice(0, -1), wrappedHandler); + }; + }); +} + +/** + * Creates a wrapped handler with span correlation and error capture + * @internal + * @param originalHandler - Original handler function + * @param methodName - MCP method name + * @param handlerName - Handler identifier + * @returns Wrapped handler function + */ +function createWrappedHandler(originalHandler, methodName, handlerName) { + return function ( ...handlerArgs) { + try { + return createErrorCapturingHandler.call(this, originalHandler, methodName, handlerName, handlerArgs); + } catch (error) { + DEBUG_BUILD && debug.warn('MCP handler wrapping failed:', error); + return originalHandler.apply(this, handlerArgs); + } + }; +} + +/** + * Creates an error-capturing wrapper for handler execution + * @internal + * @param originalHandler - Original handler function + * @param methodName - MCP method name + * @param handlerName - Handler identifier + * @param handlerArgs - Handler arguments + * @param extraHandlerData - Additional handler context + * @returns Handler execution result + */ +function createErrorCapturingHandler( + + originalHandler, + methodName, + handlerName, + handlerArgs, +) { + try { + const result = originalHandler.apply(this, handlerArgs); + + if (result && typeof result === 'object' && typeof (result ).then === 'function') { + return Promise.resolve(result).catch(error => { + captureHandlerError(error, methodName, handlerName); + throw error; + }); + } + + return result; + } catch (error) { + captureHandlerError(error , methodName, handlerName); + throw error; + } +} + +/** + * Captures handler execution errors based on handler type + * @internal + * @param error - Error to capture + * @param methodName - MCP method name + * @param handlerName - Handler identifier + */ +function captureHandlerError(error, methodName, handlerName) { + try { + const extraData = {}; + + if (methodName === 'tool') { + extraData.tool_name = handlerName; + + if ( + error.name === 'ProtocolValidationError' || + error.message.includes('validation') || + error.message.includes('protocol') + ) { + captureError(error, 'validation', extraData); + } else if ( + error.name === 'ServerTimeoutError' || + error.message.includes('timed out') || + error.message.includes('timeout') + ) { + captureError(error, 'timeout', extraData); + } else { + captureError(error, 'tool_execution', extraData); + } + } else if (methodName === 'resource') { + extraData.resource_uri = handlerName; + captureError(error, 'resource_execution', extraData); + } else if (methodName === 'prompt') { + extraData.prompt_name = handlerName; + captureError(error, 'prompt_execution', extraData); + } + } catch (captureErr) { + // noop + } +} + +/** + * Wraps tool handlers to associate them with request spans + * @param serverInstance - MCP server instance + */ +function wrapToolHandlers(serverInstance) { + wrapMethodHandler(serverInstance, 'tool'); +} + +/** + * Wraps resource handlers to associate them with request spans + * @param serverInstance - MCP server instance + */ +function wrapResourceHandlers(serverInstance) { + wrapMethodHandler(serverInstance, 'resource'); +} + +/** + * Wraps prompt handlers to associate them with request spans + * @param serverInstance - MCP server instance + */ +function wrapPromptHandlers(serverInstance) { + wrapMethodHandler(serverInstance, 'prompt'); +} + +/** + * Wraps all MCP handler types (tool, resource, prompt) for span correlation + * @param serverInstance - MCP server instance + */ +function wrapAllMCPHandlers(serverInstance) { + wrapToolHandlers(serverInstance); + wrapResourceHandlers(serverInstance); + wrapPromptHandlers(serverInstance); +} + +export { wrapAllMCPHandlers, wrapPromptHandlers, wrapResourceHandlers, wrapToolHandlers }; +//# sourceMappingURL=handlers.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/handlers.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/handlers.js.map new file mode 100644 index 0000000..dc9563c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/handlers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"handlers.js","sources":["../../../../src/integrations/mcp-server/handlers.ts"],"sourcesContent":["/**\n * Handler method wrapping for MCP server instrumentation\n *\n * Provides automatic error capture and span correlation for tool, resource,\n * and prompt handlers.\n */\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../../utils/debug-logger';\nimport { fill } from '../../utils/object';\nimport { captureError } from './errorCapture';\nimport type { MCPHandler, MCPServerInstance } from './types';\n\n/**\n * Generic function to wrap MCP server method handlers\n * @internal\n * @param serverInstance - MCP server instance\n * @param methodName - Method name to wrap (tool, resource, prompt)\n */\nfunction wrapMethodHandler(serverInstance: MCPServerInstance, methodName: keyof MCPServerInstance): void {\n fill(serverInstance, methodName, originalMethod => {\n return function (this: MCPServerInstance, name: string, ...args: unknown[]) {\n const handler = args[args.length - 1];\n\n if (typeof handler !== 'function') {\n return (originalMethod as (...args: unknown[]) => unknown).call(this, name, ...args);\n }\n\n const wrappedHandler = createWrappedHandler(handler as MCPHandler, methodName, name);\n return (originalMethod as (...args: unknown[]) => unknown).call(this, name, ...args.slice(0, -1), wrappedHandler);\n };\n });\n}\n\n/**\n * Creates a wrapped handler with span correlation and error capture\n * @internal\n * @param originalHandler - Original handler function\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n * @returns Wrapped handler function\n */\nfunction createWrappedHandler(originalHandler: MCPHandler, methodName: keyof MCPServerInstance, handlerName: string) {\n return function (this: unknown, ...handlerArgs: unknown[]): unknown {\n try {\n return createErrorCapturingHandler.call(this, originalHandler, methodName, handlerName, handlerArgs);\n } catch (error) {\n DEBUG_BUILD && debug.warn('MCP handler wrapping failed:', error);\n return originalHandler.apply(this, handlerArgs);\n }\n };\n}\n\n/**\n * Creates an error-capturing wrapper for handler execution\n * @internal\n * @param originalHandler - Original handler function\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n * @param handlerArgs - Handler arguments\n * @param extraHandlerData - Additional handler context\n * @returns Handler execution result\n */\nfunction createErrorCapturingHandler(\n this: MCPServerInstance,\n originalHandler: MCPHandler,\n methodName: keyof MCPServerInstance,\n handlerName: string,\n handlerArgs: unknown[],\n): unknown {\n try {\n const result = originalHandler.apply(this, handlerArgs);\n\n if (result && typeof result === 'object' && typeof (result as { then?: unknown }).then === 'function') {\n return Promise.resolve(result).catch(error => {\n captureHandlerError(error, methodName, handlerName);\n throw error;\n });\n }\n\n return result;\n } catch (error) {\n captureHandlerError(error as Error, methodName, handlerName);\n throw error;\n }\n}\n\n/**\n * Captures handler execution errors based on handler type\n * @internal\n * @param error - Error to capture\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n */\nfunction captureHandlerError(error: Error, methodName: keyof MCPServerInstance, handlerName: string): void {\n try {\n const extraData: Record = {};\n\n if (methodName === 'tool') {\n extraData.tool_name = handlerName;\n\n if (\n error.name === 'ProtocolValidationError' ||\n error.message.includes('validation') ||\n error.message.includes('protocol')\n ) {\n captureError(error, 'validation', extraData);\n } else if (\n error.name === 'ServerTimeoutError' ||\n error.message.includes('timed out') ||\n error.message.includes('timeout')\n ) {\n captureError(error, 'timeout', extraData);\n } else {\n captureError(error, 'tool_execution', extraData);\n }\n } else if (methodName === 'resource') {\n extraData.resource_uri = handlerName;\n captureError(error, 'resource_execution', extraData);\n } else if (methodName === 'prompt') {\n extraData.prompt_name = handlerName;\n captureError(error, 'prompt_execution', extraData);\n }\n } catch (captureErr) {\n // noop\n }\n}\n\n/**\n * Wraps tool handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapToolHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'tool');\n}\n\n/**\n * Wraps resource handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapResourceHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'resource');\n}\n\n/**\n * Wraps prompt handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapPromptHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'prompt');\n}\n\n/**\n * Wraps all MCP handler types (tool, resource, prompt) for span correlation\n * @param serverInstance - MCP server instance\n */\nexport function wrapAllMCPHandlers(serverInstance: MCPServerInstance): void {\n wrapToolHandlers(serverInstance);\n wrapResourceHandlers(serverInstance);\n wrapPromptHandlers(serverInstance);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/index.js new file mode 100644 index 0000000..451cea8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/index.js @@ -0,0 +1,86 @@ +import { getClient } from '../../currentScopes.js'; +import { fill } from '../../utils/object.js'; +import { wrapAllMCPHandlers } from './handlers.js'; +import { wrapTransportOnMessage, wrapTransportSend, wrapTransportOnClose, wrapTransportError } from './transport.js'; +import { validateMcpServerInstance } from './validation.js'; + +/** + * Tracks wrapped MCP server instances to prevent double-wrapping + * @internal + */ +const wrappedMcpServerInstances = new WeakSet(); + +/** + * Wraps a MCP Server instance from the `@modelcontextprotocol/sdk` package with Sentry instrumentation. + * + * Compatible with versions `^1.9.0` of the `@modelcontextprotocol/sdk` package. + * Automatically instruments transport methods and handler functions for comprehensive monitoring. + * + * @example + * ```typescript + * import * as Sentry from '@sentry/core'; + * import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; + * import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; + * + * // Default: inputs/outputs captured based on sendDefaultPii option + * const server = Sentry.wrapMcpServerWithSentry( + * new McpServer({ name: "my-server", version: "1.0.0" }) + * ); + * + * // Explicitly control input/output capture + * const server = Sentry.wrapMcpServerWithSentry( + * new McpServer({ name: "my-server", version: "1.0.0" }), + * { recordInputs: true, recordOutputs: false } + * ); + * + * const transport = new StreamableHTTPServerTransport(); + * await server.connect(transport); + * ``` + * + * @param mcpServerInstance - MCP server instance to instrument + * @param options - Optional configuration for recording inputs and outputs + * @returns Instrumented server instance (same reference) + */ +function wrapMcpServerWithSentry(mcpServerInstance, options) { + if (wrappedMcpServerInstances.has(mcpServerInstance)) { + return mcpServerInstance; + } + + if (!validateMcpServerInstance(mcpServerInstance)) { + return mcpServerInstance; + } + + const serverInstance = mcpServerInstance ; + const client = getClient(); + const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii); + + const resolvedOptions = { + recordInputs: options?.recordInputs ?? sendDefaultPii, + recordOutputs: options?.recordOutputs ?? sendDefaultPii, + }; + + fill(serverInstance, 'connect', originalConnect => { + return async function ( transport, ...restArgs) { + const result = await (originalConnect ).call( + this, + transport, + ...restArgs, + ); + + wrapTransportOnMessage(transport, resolvedOptions); + wrapTransportSend(transport, resolvedOptions); + wrapTransportOnClose(transport); + wrapTransportError(transport); + + return result; + }; + }); + + wrapAllMCPHandlers(serverInstance); + + wrappedMcpServerInstances.add(mcpServerInstance); + return mcpServerInstance; +} + +export { wrapMcpServerWithSentry }; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/index.js.map new file mode 100644 index 0000000..7547105 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/integrations/mcp-server/index.ts"],"sourcesContent":["import { getClient } from '../../currentScopes';\nimport { fill } from '../../utils/object';\nimport { wrapAllMCPHandlers } from './handlers';\nimport { wrapTransportError, wrapTransportOnClose, wrapTransportOnMessage, wrapTransportSend } from './transport';\nimport type { MCPServerInstance, McpServerWrapperOptions, MCPTransport, ResolvedMcpOptions } from './types';\nimport { validateMcpServerInstance } from './validation';\n\n/**\n * Tracks wrapped MCP server instances to prevent double-wrapping\n * @internal\n */\nconst wrappedMcpServerInstances = new WeakSet();\n\n/**\n * Wraps a MCP Server instance from the `@modelcontextprotocol/sdk` package with Sentry instrumentation.\n *\n * Compatible with versions `^1.9.0` of the `@modelcontextprotocol/sdk` package.\n * Automatically instruments transport methods and handler functions for comprehensive monitoring.\n *\n * @example\n * ```typescript\n * import * as Sentry from '@sentry/core';\n * import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n * import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\n *\n * // Default: inputs/outputs captured based on sendDefaultPii option\n * const server = Sentry.wrapMcpServerWithSentry(\n * new McpServer({ name: \"my-server\", version: \"1.0.0\" })\n * );\n *\n * // Explicitly control input/output capture\n * const server = Sentry.wrapMcpServerWithSentry(\n * new McpServer({ name: \"my-server\", version: \"1.0.0\" }),\n * { recordInputs: true, recordOutputs: false }\n * );\n *\n * const transport = new StreamableHTTPServerTransport();\n * await server.connect(transport);\n * ```\n *\n * @param mcpServerInstance - MCP server instance to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns Instrumented server instance (same reference)\n */\nexport function wrapMcpServerWithSentry(mcpServerInstance: S, options?: McpServerWrapperOptions): S {\n if (wrappedMcpServerInstances.has(mcpServerInstance)) {\n return mcpServerInstance;\n }\n\n if (!validateMcpServerInstance(mcpServerInstance)) {\n return mcpServerInstance;\n }\n\n const serverInstance = mcpServerInstance as MCPServerInstance;\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n\n const resolvedOptions: ResolvedMcpOptions = {\n recordInputs: options?.recordInputs ?? sendDefaultPii,\n recordOutputs: options?.recordOutputs ?? sendDefaultPii,\n };\n\n fill(serverInstance, 'connect', originalConnect => {\n return async function (this: MCPServerInstance, transport: MCPTransport, ...restArgs: unknown[]) {\n const result = await (originalConnect as (...args: unknown[]) => Promise).call(\n this,\n transport,\n ...restArgs,\n );\n\n wrapTransportOnMessage(transport, resolvedOptions);\n wrapTransportSend(transport, resolvedOptions);\n wrapTransportOnClose(transport);\n wrapTransportError(transport);\n\n return result;\n };\n });\n\n wrapAllMCPHandlers(serverInstance);\n\n wrappedMcpServerInstances.add(mcpServerInstance);\n return mcpServerInstance;\n}\n"],"names":[],"mappings":";;;;;;AAOA;AACA;AACA;AACA;AACA,MAAM,yBAAA,GAA4B,IAAI,OAAO,EAAE;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAmB,iBAAiB,EAAK,OAAO,EAA+B;AACtH,EAAE,IAAI,yBAAyB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;AACxD,IAAI,OAAO,iBAAiB;AAC5B,EAAE;;AAEF,EAAE,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,EAAE;AACrD,IAAI,OAAO,iBAAiB;AAC5B,EAAE;;AAEF,EAAE,MAAM,cAAA,GAAiB,iBAAA;AACzB,EAAE,MAAM,MAAA,GAAS,SAAS,EAAE;AAC5B,EAAE,MAAM,cAAA,GAAiB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,cAAc,CAAC;;AAErE,EAAE,MAAM,eAAe,GAAuB;AAC9C,IAAI,YAAY,EAAE,OAAO,EAAE,YAAA,IAAgB,cAAc;AACzD,IAAI,aAAa,EAAE,OAAO,EAAE,aAAA,IAAiB,cAAc;AAC3D,GAAG;;AAEH,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,mBAAmB;AACrD,IAAI,OAAO,iBAAyC,SAAS,EAAgB,GAAG,QAAQ,EAAa;AACrG,MAAM,MAAM,SAAS,MAAM,CAAC,eAAA,GAA6D,IAAI;AAC7F,QAAQ,IAAI;AACZ,QAAQ,SAAS;AACjB,QAAQ,GAAG,QAAQ;AACnB,OAAO;;AAEP,MAAM,sBAAsB,CAAC,SAAS,EAAE,eAAe,CAAC;AACxD,MAAM,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC;AACnD,MAAM,oBAAoB,CAAC,SAAS,CAAC;AACrC,MAAM,kBAAkB,CAAC,SAAS,CAAC;;AAEnC,MAAM,OAAO,MAAM;AACnB,IAAI,CAAC;AACL,EAAE,CAAC,CAAC;;AAEJ,EAAE,kBAAkB,CAAC,cAAc,CAAC;;AAEpC,EAAE,yBAAyB,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAClD,EAAE,OAAO,iBAAiB;AAC1B;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/methodConfig.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/methodConfig.js new file mode 100644 index 0000000..e2c6643 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/methodConfig.js @@ -0,0 +1,104 @@ +import { MCP_PROMPT_NAME_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE, MCP_TOOL_NAME_ATTRIBUTE, MCP_REQUEST_ARGUMENT } from './attributes.js'; + +/** + * Method configuration and request processing for MCP server instrumentation + */ + + +/** + * Configuration for MCP methods to extract targets and arguments + * @internal Maps method names to their extraction configuration + */ +const METHOD_CONFIGS = { + 'tools/call': { + targetField: 'name', + targetAttribute: MCP_TOOL_NAME_ATTRIBUTE, + captureArguments: true, + argumentsField: 'arguments', + }, + 'resources/read': { + targetField: 'uri', + targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE, + captureUri: true, + }, + 'resources/subscribe': { + targetField: 'uri', + targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE, + }, + 'resources/unsubscribe': { + targetField: 'uri', + targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE, + }, + 'prompts/get': { + targetField: 'name', + targetAttribute: MCP_PROMPT_NAME_ATTRIBUTE, + captureName: true, + captureArguments: true, + argumentsField: 'arguments', + }, +}; + +/** + * Extracts target info from method and params based on method type + * @param method - MCP method name + * @param params - Method parameters + * @returns Target name and attributes for span instrumentation + */ +function extractTargetInfo( + method, + params, +) + + { + const config = METHOD_CONFIGS[method]; + if (!config) { + return { attributes: {} }; + } + + const target = + config.targetField && typeof params?.[config.targetField] === 'string' + ? (params[config.targetField] ) + : undefined; + + return { + target, + attributes: target && config.targetAttribute ? { [config.targetAttribute]: target } : {}, + }; +} + +/** + * Extracts request arguments based on method type + * @param method - MCP method name + * @param params - Method parameters + * @returns Arguments as span attributes with mcp.request.argument prefix + */ +function getRequestArguments(method, params) { + const args = {}; + const config = METHOD_CONFIGS[method]; + + if (!config) { + return args; + } + + if (config.captureArguments && config.argumentsField && params?.[config.argumentsField]) { + const argumentsObj = params[config.argumentsField]; + if (typeof argumentsObj === 'object' && argumentsObj !== null) { + for (const [key, value] of Object.entries(argumentsObj )) { + args[`${MCP_REQUEST_ARGUMENT}.${key.toLowerCase()}`] = JSON.stringify(value); + } + } + } + + if (config.captureUri && params?.uri) { + args[`${MCP_REQUEST_ARGUMENT}.uri`] = JSON.stringify(params.uri); + } + + if (config.captureName && params?.name) { + args[`${MCP_REQUEST_ARGUMENT}.name`] = JSON.stringify(params.name); + } + + return args; +} + +export { extractTargetInfo, getRequestArguments }; +//# sourceMappingURL=methodConfig.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/methodConfig.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/methodConfig.js.map new file mode 100644 index 0000000..865c02e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/methodConfig.js.map @@ -0,0 +1 @@ +{"version":3,"file":"methodConfig.js","sources":["../../../../src/integrations/mcp-server/methodConfig.ts"],"sourcesContent":["/**\n * Method configuration and request processing for MCP server instrumentation\n */\n\nimport {\n MCP_PROMPT_NAME_ATTRIBUTE,\n MCP_REQUEST_ARGUMENT,\n MCP_RESOURCE_URI_ATTRIBUTE,\n MCP_TOOL_NAME_ATTRIBUTE,\n} from './attributes';\nimport type { MethodConfig } from './types';\n\n/**\n * Configuration for MCP methods to extract targets and arguments\n * @internal Maps method names to their extraction configuration\n */\nconst METHOD_CONFIGS: Record = {\n 'tools/call': {\n targetField: 'name',\n targetAttribute: MCP_TOOL_NAME_ATTRIBUTE,\n captureArguments: true,\n argumentsField: 'arguments',\n },\n 'resources/read': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n captureUri: true,\n },\n 'resources/subscribe': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n },\n 'resources/unsubscribe': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n },\n 'prompts/get': {\n targetField: 'name',\n targetAttribute: MCP_PROMPT_NAME_ATTRIBUTE,\n captureName: true,\n captureArguments: true,\n argumentsField: 'arguments',\n },\n};\n\n/**\n * Extracts target info from method and params based on method type\n * @param method - MCP method name\n * @param params - Method parameters\n * @returns Target name and attributes for span instrumentation\n */\nexport function extractTargetInfo(\n method: string,\n params: Record,\n): {\n target?: string;\n attributes: Record;\n} {\n const config = METHOD_CONFIGS[method];\n if (!config) {\n return { attributes: {} };\n }\n\n const target =\n config.targetField && typeof params?.[config.targetField] === 'string'\n ? (params[config.targetField] as string)\n : undefined;\n\n return {\n target,\n attributes: target && config.targetAttribute ? { [config.targetAttribute]: target } : {},\n };\n}\n\n/**\n * Extracts request arguments based on method type\n * @param method - MCP method name\n * @param params - Method parameters\n * @returns Arguments as span attributes with mcp.request.argument prefix\n */\nexport function getRequestArguments(method: string, params: Record): Record {\n const args: Record = {};\n const config = METHOD_CONFIGS[method];\n\n if (!config) {\n return args;\n }\n\n if (config.captureArguments && config.argumentsField && params?.[config.argumentsField]) {\n const argumentsObj = params[config.argumentsField];\n if (typeof argumentsObj === 'object' && argumentsObj !== null) {\n for (const [key, value] of Object.entries(argumentsObj as Record)) {\n args[`${MCP_REQUEST_ARGUMENT}.${key.toLowerCase()}`] = JSON.stringify(value);\n }\n }\n }\n\n if (config.captureUri && params?.uri) {\n args[`${MCP_REQUEST_ARGUMENT}.uri`] = JSON.stringify(params.uri);\n }\n\n if (config.captureName && params?.name) {\n args[`${MCP_REQUEST_ARGUMENT}.name`] = JSON.stringify(params.name);\n }\n\n return args;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/piiFiltering.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/piiFiltering.js new file mode 100644 index 0000000..afa1209 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/piiFiltering.js @@ -0,0 +1,51 @@ +import { CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE } from './attributes.js'; + +/** + * Network PII attributes that should be removed when sendDefaultPii is false + * @internal + */ +const NETWORK_PII_ATTRIBUTES = new Set([CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE]); + +/** + * Checks if an attribute key should be considered network PII. + * + * Returns true for: + * - client.address (IP address) + * - client.port (port number) + * - mcp.resource.uri (potentially sensitive URIs) + * + * @param key - Attribute key to evaluate + * @returns true if the attribute should be filtered out (is network PII), false if it should be preserved + * @internal + */ +function isNetworkPiiAttribute(key) { + return NETWORK_PII_ATTRIBUTES.has(key); +} + +/** + * Removes network PII attributes from span data when sendDefaultPii is false + * @param spanData - Raw span attributes + * @param sendDefaultPii - Whether to include PII data + * @returns Filtered span attributes + */ +function filterMcpPiiFromSpanData( + spanData, + sendDefaultPii, +) { + if (sendDefaultPii) { + return spanData ; + } + + return Object.entries(spanData).reduce( + (acc, [key, value]) => { + if (!isNetworkPiiAttribute(key)) { + acc[key] = value ; + } + return acc; + }, + {} , + ); +} + +export { filterMcpPiiFromSpanData }; +//# sourceMappingURL=piiFiltering.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/piiFiltering.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/piiFiltering.js.map new file mode 100644 index 0000000..80578d2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/piiFiltering.js.map @@ -0,0 +1 @@ +{"version":3,"file":"piiFiltering.js","sources":["../../../../src/integrations/mcp-server/piiFiltering.ts"],"sourcesContent":["/**\n * PII filtering for MCP server spans\n *\n * Removes network-level sensitive data when sendDefaultPii is false.\n * Input/output data (request arguments, tool/prompt results) is controlled\n * separately via recordInputs/recordOutputs options.\n */\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport { CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE } from './attributes';\n\n/**\n * Network PII attributes that should be removed when sendDefaultPii is false\n * @internal\n */\nconst NETWORK_PII_ATTRIBUTES = new Set([CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE]);\n\n/**\n * Checks if an attribute key should be considered network PII.\n *\n * Returns true for:\n * - client.address (IP address)\n * - client.port (port number)\n * - mcp.resource.uri (potentially sensitive URIs)\n *\n * @param key - Attribute key to evaluate\n * @returns true if the attribute should be filtered out (is network PII), false if it should be preserved\n * @internal\n */\nfunction isNetworkPiiAttribute(key: string): boolean {\n return NETWORK_PII_ATTRIBUTES.has(key);\n}\n\n/**\n * Removes network PII attributes from span data when sendDefaultPii is false\n * @param spanData - Raw span attributes\n * @param sendDefaultPii - Whether to include PII data\n * @returns Filtered span attributes\n */\nexport function filterMcpPiiFromSpanData(\n spanData: Record,\n sendDefaultPii: boolean,\n): Record {\n if (sendDefaultPii) {\n return spanData as Record;\n }\n\n return Object.entries(spanData).reduce(\n (acc, [key, value]) => {\n if (!isNetworkPiiAttribute(key)) {\n acc[key] = value as SpanAttributeValue;\n }\n return acc;\n },\n {} as Record,\n );\n}\n"],"names":[],"mappings":";;AAUA;AACA;AACA;AACA;AACA,MAAM,sBAAA,GAAyB,IAAI,GAAG,CAAC,CAAC,wBAAwB,EAAE,qBAAqB,EAAE,0BAA0B,CAAC,CAAC;;AAErH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,GAAG,EAAmB;AACrD,EAAE,OAAO,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB;AACxC,EAAE,QAAQ;AACV,EAAE,cAAc;AAChB,EAAsC;AACtC,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,OAAO,QAAA;AACX,EAAE;;AAEF,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;AACxC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC3B,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE;AACvC,QAAQ,GAAG,CAAC,GAAG,CAAA,GAAI,KAAA;AACnB,MAAM;AACN,MAAM,OAAO,GAAG;AAChB,IAAI,CAAC;AACL,IAAI,EAAC;AACL,GAAG;AACH;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/resultExtraction.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/resultExtraction.js new file mode 100644 index 0000000..db12ff5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/resultExtraction.js @@ -0,0 +1,144 @@ +import { MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE, MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE, MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE, MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE } from './attributes.js'; +import { isValidContentItem } from './validation.js'; + +/** + * Result extraction functions for MCP server instrumentation + * + * Handles extraction of attributes from tool and prompt execution results. + */ + + +/** + * Build attributes for tool result content items + * @param content - Array of content items from tool result + * @param includeContent - Whether to include actual content (text, URIs) or just metadata + * @returns Attributes extracted from each content item + */ +function buildAllContentItemAttributes( + content, + includeContent, +) { + const attributes = { + [MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE]: content.length, + }; + + for (const [i, item] of content.entries()) { + if (!isValidContentItem(item)) { + continue; + } + + const prefix = content.length === 1 ? 'mcp.tool.result' : `mcp.tool.result.${i}`; + + if (typeof item.type === 'string') { + attributes[`${prefix}.content_type`] = item.type; + } + + if (includeContent) { + const safeSet = (key, value) => { + if (typeof value === 'string') { + attributes[`${prefix}.${key}`] = value; + } + }; + + safeSet('mime_type', item.mimeType); + safeSet('uri', item.uri); + safeSet('name', item.name); + + if (typeof item.text === 'string') { + attributes[`${prefix}.content`] = item.text; + } + + if (typeof item.data === 'string') { + attributes[`${prefix}.data_size`] = item.data.length; + } + + const resource = item.resource; + if (isValidContentItem(resource)) { + safeSet('resource_uri', resource.uri); + safeSet('resource_mime_type', resource.mimeType); + } + } + } + + return attributes; +} + +/** + * Extract tool result attributes for span instrumentation + * @param result - Tool execution result + * @param recordOutputs - Whether to include actual content or just metadata (counts, error status) + * @returns Attributes extracted from tool result content + */ +function extractToolResultAttributes( + result, + recordOutputs, +) { + if (!isValidContentItem(result)) { + return {}; + } + + const attributes = Array.isArray(result.content) ? buildAllContentItemAttributes(result.content, recordOutputs) : {}; + + if (typeof result.isError === 'boolean') { + attributes[MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE] = result.isError; + } + + return attributes; +} + +/** + * Extract prompt result attributes for span instrumentation + * @param result - Prompt execution result + * @param recordOutputs - Whether to include actual content or just metadata (counts) + * @returns Attributes extracted from prompt result + */ +function extractPromptResultAttributes( + result, + recordOutputs, +) { + const attributes = {}; + if (!isValidContentItem(result)) { + return attributes; + } + + if (recordOutputs && typeof result.description === 'string') { + attributes[MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE] = result.description; + } + + if (Array.isArray(result.messages)) { + attributes[MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE] = result.messages.length; + + if (recordOutputs) { + const messages = result.messages; + for (const [i, message] of messages.entries()) { + if (!isValidContentItem(message)) { + continue; + } + + const prefix = messages.length === 1 ? 'mcp.prompt.result' : `mcp.prompt.result.${i}`; + + const safeSet = (key, value) => { + if (typeof value === 'string') { + const attrName = messages.length === 1 ? `${prefix}.message_${key}` : `${prefix}.${key}`; + attributes[attrName] = value; + } + }; + + safeSet('role', message.role); + + if (isValidContentItem(message.content)) { + const content = message.content; + if (typeof content.text === 'string') { + const attrName = messages.length === 1 ? `${prefix}.message_content` : `${prefix}.content`; + attributes[attrName] = content.text; + } + } + } + } + } + + return attributes; +} + +export { extractPromptResultAttributes, extractToolResultAttributes }; +//# sourceMappingURL=resultExtraction.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/resultExtraction.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/resultExtraction.js.map new file mode 100644 index 0000000..9b3608a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/resultExtraction.js.map @@ -0,0 +1 @@ +{"version":3,"file":"resultExtraction.js","sources":["../../../../src/integrations/mcp-server/resultExtraction.ts"],"sourcesContent":["/**\n * Result extraction functions for MCP server instrumentation\n *\n * Handles extraction of attributes from tool and prompt execution results.\n */\n\nimport {\n MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE,\n MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE,\n MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE,\n MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE,\n} from './attributes';\nimport { isValidContentItem } from './validation';\n\n/**\n * Build attributes for tool result content items\n * @param content - Array of content items from tool result\n * @param includeContent - Whether to include actual content (text, URIs) or just metadata\n * @returns Attributes extracted from each content item\n */\nfunction buildAllContentItemAttributes(\n content: unknown[],\n includeContent: boolean,\n): Record {\n const attributes: Record = {\n [MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE]: content.length,\n };\n\n for (const [i, item] of content.entries()) {\n if (!isValidContentItem(item)) {\n continue;\n }\n\n const prefix = content.length === 1 ? 'mcp.tool.result' : `mcp.tool.result.${i}`;\n\n if (typeof item.type === 'string') {\n attributes[`${prefix}.content_type`] = item.type;\n }\n\n if (includeContent) {\n const safeSet = (key: string, value: unknown): void => {\n if (typeof value === 'string') {\n attributes[`${prefix}.${key}`] = value;\n }\n };\n\n safeSet('mime_type', item.mimeType);\n safeSet('uri', item.uri);\n safeSet('name', item.name);\n\n if (typeof item.text === 'string') {\n attributes[`${prefix}.content`] = item.text;\n }\n\n if (typeof item.data === 'string') {\n attributes[`${prefix}.data_size`] = item.data.length;\n }\n\n const resource = item.resource;\n if (isValidContentItem(resource)) {\n safeSet('resource_uri', resource.uri);\n safeSet('resource_mime_type', resource.mimeType);\n }\n }\n }\n\n return attributes;\n}\n\n/**\n * Extract tool result attributes for span instrumentation\n * @param result - Tool execution result\n * @param recordOutputs - Whether to include actual content or just metadata (counts, error status)\n * @returns Attributes extracted from tool result content\n */\nexport function extractToolResultAttributes(\n result: unknown,\n recordOutputs: boolean,\n): Record {\n if (!isValidContentItem(result)) {\n return {};\n }\n\n const attributes = Array.isArray(result.content) ? buildAllContentItemAttributes(result.content, recordOutputs) : {};\n\n if (typeof result.isError === 'boolean') {\n attributes[MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE] = result.isError;\n }\n\n return attributes;\n}\n\n/**\n * Extract prompt result attributes for span instrumentation\n * @param result - Prompt execution result\n * @param recordOutputs - Whether to include actual content or just metadata (counts)\n * @returns Attributes extracted from prompt result\n */\nexport function extractPromptResultAttributes(\n result: unknown,\n recordOutputs: boolean,\n): Record {\n const attributes: Record = {};\n if (!isValidContentItem(result)) {\n return attributes;\n }\n\n if (recordOutputs && typeof result.description === 'string') {\n attributes[MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE] = result.description;\n }\n\n if (Array.isArray(result.messages)) {\n attributes[MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE] = result.messages.length;\n\n if (recordOutputs) {\n const messages = result.messages;\n for (const [i, message] of messages.entries()) {\n if (!isValidContentItem(message)) {\n continue;\n }\n\n const prefix = messages.length === 1 ? 'mcp.prompt.result' : `mcp.prompt.result.${i}`;\n\n const safeSet = (key: string, value: unknown): void => {\n if (typeof value === 'string') {\n const attrName = messages.length === 1 ? `${prefix}.message_${key}` : `${prefix}.${key}`;\n attributes[attrName] = value;\n }\n };\n\n safeSet('role', message.role);\n\n if (isValidContentItem(message.content)) {\n const content = message.content;\n if (typeof content.text === 'string') {\n const attrName = messages.length === 1 ? `${prefix}.message_content` : `${prefix}.content`;\n attributes[attrName] = content.text;\n }\n }\n }\n }\n }\n\n return attributes;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionExtraction.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionExtraction.js new file mode 100644 index 0000000..05a42a6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionExtraction.js @@ -0,0 +1,234 @@ +import { MCP_PROTOCOL_VERSION_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, CLIENT_ADDRESS_ATTRIBUTE, MCP_SESSION_ID_ATTRIBUTE, NETWORK_PROTOCOL_VERSION_ATTRIBUTE, NETWORK_TRANSPORT_ATTRIBUTE, MCP_TRANSPORT_ATTRIBUTE, MCP_SERVER_NAME_ATTRIBUTE, MCP_SERVER_TITLE_ATTRIBUTE, MCP_SERVER_VERSION_ATTRIBUTE } from './attributes.js'; +import { getProtocolVersionForTransport, getClientInfoForTransport, getSessionDataForTransport } from './sessionManagement.js'; +import { isValidContentItem } from './validation.js'; + +/** + * Session and party info extraction functions for MCP server instrumentation + * + * Handles extraction of client/server info and session data from MCP messages. + */ + + +/** + * Extracts and validates PartyInfo from an unknown object + * @param obj - Unknown object that might contain party info + * @returns Validated PartyInfo object with only string properties + */ +function extractPartyInfo(obj) { + const partyInfo = {}; + + if (isValidContentItem(obj)) { + if (typeof obj.name === 'string') { + partyInfo.name = obj.name; + } + if (typeof obj.title === 'string') { + partyInfo.title = obj.title; + } + if (typeof obj.version === 'string') { + partyInfo.version = obj.version; + } + } + + return partyInfo; +} + +/** + * Extracts session data from "initialize" requests + * @param request - JSON-RPC "initialize" request containing client info and protocol version + * @returns Session data extracted from request parameters including protocol version and client info + */ +function extractSessionDataFromInitializeRequest(request) { + const sessionData = {}; + if (isValidContentItem(request.params)) { + if (typeof request.params.protocolVersion === 'string') { + sessionData.protocolVersion = request.params.protocolVersion; + } + if (request.params.clientInfo) { + sessionData.clientInfo = extractPartyInfo(request.params.clientInfo); + } + } + return sessionData; +} + +/** + * Extracts session data from "initialize" response + * @param result - "initialize" response result containing server info and protocol version + * @returns Partial session data extracted from response including protocol version and server info + */ +function extractSessionDataFromInitializeResponse(result) { + const sessionData = {}; + if (isValidContentItem(result)) { + if (typeof result.protocolVersion === 'string') { + sessionData.protocolVersion = result.protocolVersion; + } + if (result.serverInfo) { + sessionData.serverInfo = extractPartyInfo(result.serverInfo); + } + } + return sessionData; +} + +/** + * Build client attributes from stored client info + * @param transport - MCP transport instance + * @returns Client attributes for span instrumentation + */ +function getClientAttributes(transport) { + const clientInfo = getClientInfoForTransport(transport); + const attributes = {}; + + if (clientInfo?.name) { + attributes['mcp.client.name'] = clientInfo.name; + } + if (clientInfo?.title) { + attributes['mcp.client.title'] = clientInfo.title; + } + if (clientInfo?.version) { + attributes['mcp.client.version'] = clientInfo.version; + } + + return attributes; +} + +/** + * Build client attributes from PartyInfo directly + * @param clientInfo - Client party info + * @returns Client attributes for span instrumentation + */ +function buildClientAttributesFromInfo(clientInfo) { + const attributes = {}; + + if (clientInfo?.name) { + attributes['mcp.client.name'] = clientInfo.name; + } + if (clientInfo?.title) { + attributes['mcp.client.title'] = clientInfo.title; + } + if (clientInfo?.version) { + attributes['mcp.client.version'] = clientInfo.version; + } + + return attributes; +} + +/** + * Build server attributes from stored server info + * @param transport - MCP transport instance + * @returns Server attributes for span instrumentation + */ +function getServerAttributes(transport) { + const serverInfo = getSessionDataForTransport(transport)?.serverInfo; + const attributes = {}; + + if (serverInfo?.name) { + attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name; + } + if (serverInfo?.title) { + attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title; + } + if (serverInfo?.version) { + attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version; + } + + return attributes; +} + +/** + * Build server attributes from PartyInfo directly + * @param serverInfo - Server party info + * @returns Server attributes for span instrumentation + */ +function buildServerAttributesFromInfo(serverInfo) { + const attributes = {}; + + if (serverInfo?.name) { + attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name; + } + if (serverInfo?.title) { + attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title; + } + if (serverInfo?.version) { + attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version; + } + + return attributes; +} + +/** + * Extracts client connection info from extra handler data + * @param extra - Extra handler data containing connection info + * @returns Client address and port information + */ +function extractClientInfo(extra) + + { + return { + address: + extra?.requestInfo?.remoteAddress || + extra?.clientAddress || + extra?.request?.ip || + extra?.request?.connection?.remoteAddress, + port: extra?.requestInfo?.remotePort || extra?.clientPort || extra?.request?.connection?.remotePort, + }; +} + +/** + * Extracts transport types based on transport constructor name + * @param transport - MCP transport instance + * @returns Transport type mapping for span attributes + */ +function getTransportTypes(transport) { + if (!transport?.constructor) { + return { mcpTransport: 'unknown', networkTransport: 'unknown' }; + } + const transportName = typeof transport.constructor?.name === 'string' ? transport.constructor.name : 'unknown'; + let networkTransport = 'unknown'; + + const lowerTransportName = transportName.toLowerCase(); + if (lowerTransportName.includes('stdio')) { + networkTransport = 'pipe'; + } else if (lowerTransportName.includes('http') || lowerTransportName.includes('sse')) { + networkTransport = 'tcp'; + } + + return { + mcpTransport: transportName, + networkTransport, + }; +} + +/** + * Build transport and network attributes + * @param transport - MCP transport instance + * @param extra - Optional extra handler data + * @returns Transport attributes for span instrumentation + * @note sessionId may be undefined during initial setup - session should be established by client during initialize flow + */ +function buildTransportAttributes( + transport, + extra, +) { + const sessionId = transport && 'sessionId' in transport ? transport.sessionId : undefined; + const clientInfo = extra ? extractClientInfo(extra) : {}; + const { mcpTransport, networkTransport } = getTransportTypes(transport); + const clientAttributes = getClientAttributes(transport); + const serverAttributes = getServerAttributes(transport); + const protocolVersion = getProtocolVersionForTransport(transport); + + const attributes = { + ...(sessionId && { [MCP_SESSION_ID_ATTRIBUTE]: sessionId }), + ...(clientInfo.address && { [CLIENT_ADDRESS_ATTRIBUTE]: clientInfo.address }), + ...(clientInfo.port && { [CLIENT_PORT_ATTRIBUTE]: clientInfo.port }), + [MCP_TRANSPORT_ATTRIBUTE]: mcpTransport, + [NETWORK_TRANSPORT_ATTRIBUTE]: networkTransport, + [NETWORK_PROTOCOL_VERSION_ATTRIBUTE]: '2.0', + ...(protocolVersion && { [MCP_PROTOCOL_VERSION_ATTRIBUTE]: protocolVersion }), + ...clientAttributes, + ...serverAttributes, + }; + + return attributes; +} + +export { buildClientAttributesFromInfo, buildServerAttributesFromInfo, buildTransportAttributes, extractClientInfo, extractSessionDataFromInitializeRequest, extractSessionDataFromInitializeResponse, getClientAttributes, getServerAttributes, getTransportTypes }; +//# sourceMappingURL=sessionExtraction.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionExtraction.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionExtraction.js.map new file mode 100644 index 0000000..a683c1f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionExtraction.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sessionExtraction.js","sources":["../../../../src/integrations/mcp-server/sessionExtraction.ts"],"sourcesContent":["/**\n * Session and party info extraction functions for MCP server instrumentation\n *\n * Handles extraction of client/server info and session data from MCP messages.\n */\n\nimport {\n CLIENT_ADDRESS_ATTRIBUTE,\n CLIENT_PORT_ATTRIBUTE,\n MCP_PROTOCOL_VERSION_ATTRIBUTE,\n MCP_SERVER_NAME_ATTRIBUTE,\n MCP_SERVER_TITLE_ATTRIBUTE,\n MCP_SERVER_VERSION_ATTRIBUTE,\n MCP_SESSION_ID_ATTRIBUTE,\n MCP_TRANSPORT_ATTRIBUTE,\n NETWORK_PROTOCOL_VERSION_ATTRIBUTE,\n NETWORK_TRANSPORT_ATTRIBUTE,\n} from './attributes';\nimport {\n getClientInfoForTransport,\n getProtocolVersionForTransport,\n getSessionDataForTransport,\n} from './sessionManagement';\nimport type { ExtraHandlerData, JsonRpcRequest, MCPTransport, PartyInfo, SessionData } from './types';\nimport { isValidContentItem } from './validation';\n\n/**\n * Extracts and validates PartyInfo from an unknown object\n * @param obj - Unknown object that might contain party info\n * @returns Validated PartyInfo object with only string properties\n */\nfunction extractPartyInfo(obj: unknown): PartyInfo {\n const partyInfo: PartyInfo = {};\n\n if (isValidContentItem(obj)) {\n if (typeof obj.name === 'string') {\n partyInfo.name = obj.name;\n }\n if (typeof obj.title === 'string') {\n partyInfo.title = obj.title;\n }\n if (typeof obj.version === 'string') {\n partyInfo.version = obj.version;\n }\n }\n\n return partyInfo;\n}\n\n/**\n * Extracts session data from \"initialize\" requests\n * @param request - JSON-RPC \"initialize\" request containing client info and protocol version\n * @returns Session data extracted from request parameters including protocol version and client info\n */\nexport function extractSessionDataFromInitializeRequest(request: JsonRpcRequest): SessionData {\n const sessionData: SessionData = {};\n if (isValidContentItem(request.params)) {\n if (typeof request.params.protocolVersion === 'string') {\n sessionData.protocolVersion = request.params.protocolVersion;\n }\n if (request.params.clientInfo) {\n sessionData.clientInfo = extractPartyInfo(request.params.clientInfo);\n }\n }\n return sessionData;\n}\n\n/**\n * Extracts session data from \"initialize\" response\n * @param result - \"initialize\" response result containing server info and protocol version\n * @returns Partial session data extracted from response including protocol version and server info\n */\nexport function extractSessionDataFromInitializeResponse(result: unknown): Partial {\n const sessionData: Partial = {};\n if (isValidContentItem(result)) {\n if (typeof result.protocolVersion === 'string') {\n sessionData.protocolVersion = result.protocolVersion;\n }\n if (result.serverInfo) {\n sessionData.serverInfo = extractPartyInfo(result.serverInfo);\n }\n }\n return sessionData;\n}\n\n/**\n * Build client attributes from stored client info\n * @param transport - MCP transport instance\n * @returns Client attributes for span instrumentation\n */\nexport function getClientAttributes(transport: MCPTransport): Record {\n const clientInfo = getClientInfoForTransport(transport);\n const attributes: Record = {};\n\n if (clientInfo?.name) {\n attributes['mcp.client.name'] = clientInfo.name;\n }\n if (clientInfo?.title) {\n attributes['mcp.client.title'] = clientInfo.title;\n }\n if (clientInfo?.version) {\n attributes['mcp.client.version'] = clientInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build client attributes from PartyInfo directly\n * @param clientInfo - Client party info\n * @returns Client attributes for span instrumentation\n */\nexport function buildClientAttributesFromInfo(clientInfo?: PartyInfo): Record {\n const attributes: Record = {};\n\n if (clientInfo?.name) {\n attributes['mcp.client.name'] = clientInfo.name;\n }\n if (clientInfo?.title) {\n attributes['mcp.client.title'] = clientInfo.title;\n }\n if (clientInfo?.version) {\n attributes['mcp.client.version'] = clientInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build server attributes from stored server info\n * @param transport - MCP transport instance\n * @returns Server attributes for span instrumentation\n */\nexport function getServerAttributes(transport: MCPTransport): Record {\n const serverInfo = getSessionDataForTransport(transport)?.serverInfo;\n const attributes: Record = {};\n\n if (serverInfo?.name) {\n attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name;\n }\n if (serverInfo?.title) {\n attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title;\n }\n if (serverInfo?.version) {\n attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build server attributes from PartyInfo directly\n * @param serverInfo - Server party info\n * @returns Server attributes for span instrumentation\n */\nexport function buildServerAttributesFromInfo(serverInfo?: PartyInfo): Record {\n const attributes: Record = {};\n\n if (serverInfo?.name) {\n attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name;\n }\n if (serverInfo?.title) {\n attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title;\n }\n if (serverInfo?.version) {\n attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Extracts client connection info from extra handler data\n * @param extra - Extra handler data containing connection info\n * @returns Client address and port information\n */\nexport function extractClientInfo(extra: ExtraHandlerData): {\n address?: string;\n port?: number;\n} {\n return {\n address:\n extra?.requestInfo?.remoteAddress ||\n extra?.clientAddress ||\n extra?.request?.ip ||\n extra?.request?.connection?.remoteAddress,\n port: extra?.requestInfo?.remotePort || extra?.clientPort || extra?.request?.connection?.remotePort,\n };\n}\n\n/**\n * Extracts transport types based on transport constructor name\n * @param transport - MCP transport instance\n * @returns Transport type mapping for span attributes\n */\nexport function getTransportTypes(transport: MCPTransport): { mcpTransport: string; networkTransport: string } {\n if (!transport?.constructor) {\n return { mcpTransport: 'unknown', networkTransport: 'unknown' };\n }\n const transportName = typeof transport.constructor?.name === 'string' ? transport.constructor.name : 'unknown';\n let networkTransport = 'unknown';\n\n const lowerTransportName = transportName.toLowerCase();\n if (lowerTransportName.includes('stdio')) {\n networkTransport = 'pipe';\n } else if (lowerTransportName.includes('http') || lowerTransportName.includes('sse')) {\n networkTransport = 'tcp';\n }\n\n return {\n mcpTransport: transportName,\n networkTransport,\n };\n}\n\n/**\n * Build transport and network attributes\n * @param transport - MCP transport instance\n * @param extra - Optional extra handler data\n * @returns Transport attributes for span instrumentation\n * @note sessionId may be undefined during initial setup - session should be established by client during initialize flow\n */\nexport function buildTransportAttributes(\n transport: MCPTransport,\n extra?: ExtraHandlerData,\n): Record {\n const sessionId = transport && 'sessionId' in transport ? transport.sessionId : undefined;\n const clientInfo = extra ? extractClientInfo(extra) : {};\n const { mcpTransport, networkTransport } = getTransportTypes(transport);\n const clientAttributes = getClientAttributes(transport);\n const serverAttributes = getServerAttributes(transport);\n const protocolVersion = getProtocolVersionForTransport(transport);\n\n const attributes = {\n ...(sessionId && { [MCP_SESSION_ID_ATTRIBUTE]: sessionId }),\n ...(clientInfo.address && { [CLIENT_ADDRESS_ATTRIBUTE]: clientInfo.address }),\n ...(clientInfo.port && { [CLIENT_PORT_ATTRIBUTE]: clientInfo.port }),\n [MCP_TRANSPORT_ATTRIBUTE]: mcpTransport,\n [NETWORK_TRANSPORT_ATTRIBUTE]: networkTransport,\n [NETWORK_PROTOCOL_VERSION_ATTRIBUTE]: '2.0',\n ...(protocolVersion && { [MCP_PROTOCOL_VERSION_ATTRIBUTE]: protocolVersion }),\n ...clientAttributes,\n ...serverAttributes,\n };\n\n return attributes;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionManagement.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionManagement.js new file mode 100644 index 0000000..746ea7b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionManagement.js @@ -0,0 +1,66 @@ +/** + * Transport-scoped session data storage (only for transports with sessionId) + * @internal Maps transport instances to session-level data + */ +const transportToSessionData = new WeakMap(); + +/** + * Stores session data for a transport with sessionId + * @param transport - MCP transport instance + * @param sessionData - Session data to store + */ +function storeSessionDataForTransport(transport, sessionData) { + if (transport.sessionId) { + transportToSessionData.set(transport, sessionData); + } +} + +/** + * Updates session data for a transport with sessionId (merges with existing data) + * @param transport - MCP transport instance + * @param partialSessionData - Partial session data to merge with existing data + */ +function updateSessionDataForTransport(transport, partialSessionData) { + if (transport.sessionId) { + const existingData = transportToSessionData.get(transport) || {}; + transportToSessionData.set(transport, { ...existingData, ...partialSessionData }); + } +} + +/** + * Retrieves client information for a transport + * @param transport - MCP transport instance + * @returns Client information if available + */ +function getClientInfoForTransport(transport) { + return transportToSessionData.get(transport)?.clientInfo; +} + +/** + * Retrieves protocol version for a transport + * @param transport - MCP transport instance + * @returns Protocol version if available + */ +function getProtocolVersionForTransport(transport) { + return transportToSessionData.get(transport)?.protocolVersion; +} + +/** + * Retrieves full session data for a transport + * @param transport - MCP transport instance + * @returns Complete session data if available + */ +function getSessionDataForTransport(transport) { + return transportToSessionData.get(transport); +} + +/** + * Cleans up session data for a specific transport (when that transport closes) + * @param transport - MCP transport instance + */ +function cleanupSessionDataForTransport(transport) { + transportToSessionData.delete(transport); +} + +export { cleanupSessionDataForTransport, getClientInfoForTransport, getProtocolVersionForTransport, getSessionDataForTransport, storeSessionDataForTransport, updateSessionDataForTransport }; +//# sourceMappingURL=sessionManagement.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionManagement.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionManagement.js.map new file mode 100644 index 0000000..4ba413a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/sessionManagement.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sessionManagement.js","sources":["../../../../src/integrations/mcp-server/sessionManagement.ts"],"sourcesContent":["/**\n * Session data management for MCP server instrumentation\n */\n\nimport type { MCPTransport, PartyInfo, SessionData } from './types';\n\n/**\n * Transport-scoped session data storage (only for transports with sessionId)\n * @internal Maps transport instances to session-level data\n */\nconst transportToSessionData = new WeakMap();\n\n/**\n * Stores session data for a transport with sessionId\n * @param transport - MCP transport instance\n * @param sessionData - Session data to store\n */\nexport function storeSessionDataForTransport(transport: MCPTransport, sessionData: SessionData): void {\n if (transport.sessionId) {\n transportToSessionData.set(transport, sessionData);\n }\n}\n\n/**\n * Updates session data for a transport with sessionId (merges with existing data)\n * @param transport - MCP transport instance\n * @param partialSessionData - Partial session data to merge with existing data\n */\nexport function updateSessionDataForTransport(transport: MCPTransport, partialSessionData: Partial): void {\n if (transport.sessionId) {\n const existingData = transportToSessionData.get(transport) || {};\n transportToSessionData.set(transport, { ...existingData, ...partialSessionData });\n }\n}\n\n/**\n * Retrieves client information for a transport\n * @param transport - MCP transport instance\n * @returns Client information if available\n */\nexport function getClientInfoForTransport(transport: MCPTransport): PartyInfo | undefined {\n return transportToSessionData.get(transport)?.clientInfo;\n}\n\n/**\n * Retrieves protocol version for a transport\n * @param transport - MCP transport instance\n * @returns Protocol version if available\n */\nexport function getProtocolVersionForTransport(transport: MCPTransport): string | undefined {\n return transportToSessionData.get(transport)?.protocolVersion;\n}\n\n/**\n * Retrieves full session data for a transport\n * @param transport - MCP transport instance\n * @returns Complete session data if available\n */\nexport function getSessionDataForTransport(transport: MCPTransport): SessionData | undefined {\n return transportToSessionData.get(transport);\n}\n\n/**\n * Cleans up session data for a specific transport (when that transport closes)\n * @param transport - MCP transport instance\n */\nexport function cleanupSessionDataForTransport(transport: MCPTransport): void {\n transportToSessionData.delete(transport);\n}\n"],"names":[],"mappings":"AAMA;AACA;AACA;AACA;AACA,MAAM,sBAAA,GAAyB,IAAI,OAAO,EAA6B;;AAEvE;AACA;AACA;AACA;AACA;AACO,SAAS,4BAA4B,CAAC,SAAS,EAAgB,WAAW,EAAqB;AACtG,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE;AAC3B,IAAI,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC;AACtD,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,6BAA6B,CAAC,SAAS,EAAgB,kBAAkB,EAA8B;AACvH,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE;AAC3B,IAAI,MAAM,YAAA,GAAe,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAA,IAAK,EAAE;AACpE,IAAI,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,kBAAA,EAAoB,CAAC;AACrF,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,SAAS,EAAuC;AAC1F,EAAE,OAAO,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,UAAU;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,CAAC,SAAS,EAAoC;AAC5F,EAAE,OAAO,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,eAAe;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,0BAA0B,CAAC,SAAS,EAAyC;AAC7F,EAAE,OAAO,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9C;;AAEA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,CAAC,SAAS,EAAsB;AAC9E,EAAE,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC;AAC1C;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/spans.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/spans.js new file mode 100644 index 0000000..2830273 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/spans.js @@ -0,0 +1,194 @@ +import { getClient } from '../../currentScopes.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '../../semanticAttributes.js'; +import { startSpan } from '../../tracing/trace.js'; +import { buildTypeSpecificAttributes } from './attributeExtraction.js'; +import { MCP_SERVER_OP_VALUE, MCP_METHOD_NAME_ATTRIBUTE, MCP_ROUTE_SOURCE_VALUE, MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE, MCP_NOTIFICATION_ORIGIN_VALUE, MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE, MCP_FUNCTION_ORIGIN_VALUE } from './attributes.js'; +import { extractTargetInfo } from './methodConfig.js'; +import { filterMcpPiiFromSpanData } from './piiFiltering.js'; +import { buildTransportAttributes } from './sessionExtraction.js'; + +/** + * Span creation and management functions for MCP server instrumentation + * + * Provides unified span creation following OpenTelemetry MCP semantic conventions and our opinitionated take on MCP. + * Handles both request and notification spans with attribute extraction. + */ + + +/** + * Creates a span name based on the method and target + * @internal + * @param method - MCP method name + * @param target - Optional target identifier + * @returns Formatted span name + */ +function createSpanName(method, target) { + return target ? `${method} ${target}` : method; +} + +/** + * Build Sentry-specific attributes based on span type + * @internal + * @param type - Span type configuration + * @returns Sentry-specific attributes + */ +function buildSentryAttributes(type) { + let op; + let origin; + + switch (type) { + case 'request': + op = MCP_SERVER_OP_VALUE; + origin = MCP_FUNCTION_ORIGIN_VALUE; + break; + case 'notification-incoming': + op = MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE; + origin = MCP_NOTIFICATION_ORIGIN_VALUE; + break; + case 'notification-outgoing': + op = MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE; + origin = MCP_NOTIFICATION_ORIGIN_VALUE; + break; + } + + return { + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op, + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin, + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: MCP_ROUTE_SOURCE_VALUE, + }; +} + +/** + * Unified builder for creating MCP spans + * @internal + * @param config - Span configuration + * @returns Created span + */ +function createMcpSpan(config) { + const { type, message, transport, extra, callback, options } = config; + const { method } = message; + const params = message.params; + + // Determine span name based on type and OTEL conventions + let spanName; + if (type === 'request') { + const targetInfo = extractTargetInfo(method, params || {}); + spanName = createSpanName(method, targetInfo.target); + } else { + // For notifications, use method name directly per OpenTelemetry conventions + spanName = method; + } + + const rawAttributes = { + ...buildTransportAttributes(transport, extra), + [MCP_METHOD_NAME_ATTRIBUTE]: method, + ...buildTypeSpecificAttributes(type, message, params, options?.recordInputs), + ...buildSentryAttributes(type), + }; + + const client = getClient(); + const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii); + const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) ; + + return startSpan( + { + name: spanName, + forceTransaction: true, + attributes, + }, + callback, + ); +} + +/** + * Creates a span for incoming MCP notifications + * @param jsonRpcMessage - Notification message + * @param transport - MCP transport instance + * @param extra - Extra handler data + * @param options - Resolved MCP options + * @param callback - Span execution callback + * @returns Span execution result + */ +function createMcpNotificationSpan( + jsonRpcMessage, + transport, + extra, + options, + callback, +) { + return createMcpSpan({ + type: 'notification-incoming', + message: jsonRpcMessage, + transport, + extra, + callback, + options, + }); +} + +/** + * Creates a span for outgoing MCP notifications + * @param jsonRpcMessage - Notification message + * @param transport - MCP transport instance + * @param options - Resolved MCP options + * @param callback - Span execution callback + * @returns Span execution result + */ +function createMcpOutgoingNotificationSpan( + jsonRpcMessage, + transport, + options, + callback, +) { + return createMcpSpan({ + type: 'notification-outgoing', + message: jsonRpcMessage, + transport, + options, + callback, + }); +} + +/** + * Builds span configuration for MCP server requests + * @param jsonRpcMessage - Request message + * @param transport - MCP transport instance + * @param extra - Optional extra handler data + * @param options - Resolved MCP options + * @returns Span configuration object + */ +function buildMcpServerSpanConfig( + jsonRpcMessage, + transport, + extra, + options, +) + + { + const { method } = jsonRpcMessage; + const params = jsonRpcMessage.params; + + const targetInfo = extractTargetInfo(method, params || {}); + const spanName = createSpanName(method, targetInfo.target); + + const rawAttributes = { + ...buildTransportAttributes(transport, extra), + [MCP_METHOD_NAME_ATTRIBUTE]: method, + ...buildTypeSpecificAttributes('request', jsonRpcMessage, params, options?.recordInputs), + ...buildSentryAttributes('request'), + }; + + const client = getClient(); + const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii); + const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) ; + + return { + name: spanName, + op: MCP_SERVER_OP_VALUE, + forceTransaction: true, + attributes, + }; +} + +export { buildMcpServerSpanConfig, createMcpNotificationSpan, createMcpOutgoingNotificationSpan }; +//# sourceMappingURL=spans.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/spans.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/spans.js.map new file mode 100644 index 0000000..327047b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/spans.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spans.js","sources":["../../../../src/integrations/mcp-server/spans.ts"],"sourcesContent":["/**\n * Span creation and management functions for MCP server instrumentation\n *\n * Provides unified span creation following OpenTelemetry MCP semantic conventions and our opinitionated take on MCP.\n * Handles both request and notification spans with attribute extraction.\n */\n\nimport { getClient } from '../../currentScopes';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../../semanticAttributes';\nimport { startSpan } from '../../tracing';\nimport { buildTransportAttributes, buildTypeSpecificAttributes } from './attributeExtraction';\nimport {\n MCP_FUNCTION_ORIGIN_VALUE,\n MCP_METHOD_NAME_ATTRIBUTE,\n MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE,\n MCP_NOTIFICATION_ORIGIN_VALUE,\n MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE,\n MCP_ROUTE_SOURCE_VALUE,\n MCP_SERVER_OP_VALUE,\n} from './attributes';\nimport { extractTargetInfo } from './methodConfig';\nimport { filterMcpPiiFromSpanData } from './piiFiltering';\nimport type {\n ExtraHandlerData,\n JsonRpcNotification,\n JsonRpcRequest,\n McpSpanConfig,\n MCPTransport,\n ResolvedMcpOptions,\n} from './types';\n\n/**\n * Creates a span name based on the method and target\n * @internal\n * @param method - MCP method name\n * @param target - Optional target identifier\n * @returns Formatted span name\n */\nfunction createSpanName(method: string, target?: string): string {\n return target ? `${method} ${target}` : method;\n}\n\n/**\n * Build Sentry-specific attributes based on span type\n * @internal\n * @param type - Span type configuration\n * @returns Sentry-specific attributes\n */\nfunction buildSentryAttributes(type: McpSpanConfig['type']): Record {\n let op: string;\n let origin: string;\n\n switch (type) {\n case 'request':\n op = MCP_SERVER_OP_VALUE;\n origin = MCP_FUNCTION_ORIGIN_VALUE;\n break;\n case 'notification-incoming':\n op = MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE;\n origin = MCP_NOTIFICATION_ORIGIN_VALUE;\n break;\n case 'notification-outgoing':\n op = MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE;\n origin = MCP_NOTIFICATION_ORIGIN_VALUE;\n break;\n }\n\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: MCP_ROUTE_SOURCE_VALUE,\n };\n}\n\n/**\n * Unified builder for creating MCP spans\n * @internal\n * @param config - Span configuration\n * @returns Created span\n */\nfunction createMcpSpan(config: McpSpanConfig): unknown {\n const { type, message, transport, extra, callback, options } = config;\n const { method } = message;\n const params = message.params;\n\n // Determine span name based on type and OTEL conventions\n let spanName: string;\n if (type === 'request') {\n const targetInfo = extractTargetInfo(method, params || {});\n spanName = createSpanName(method, targetInfo.target);\n } else {\n // For notifications, use method name directly per OpenTelemetry conventions\n spanName = method;\n }\n\n const rawAttributes: Record = {\n ...buildTransportAttributes(transport, extra),\n [MCP_METHOD_NAME_ATTRIBUTE]: method,\n ...buildTypeSpecificAttributes(type, message, params, options?.recordInputs),\n ...buildSentryAttributes(type),\n };\n\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) as Record;\n\n return startSpan(\n {\n name: spanName,\n forceTransaction: true,\n attributes,\n },\n callback,\n );\n}\n\n/**\n * Creates a span for incoming MCP notifications\n * @param jsonRpcMessage - Notification message\n * @param transport - MCP transport instance\n * @param extra - Extra handler data\n * @param options - Resolved MCP options\n * @param callback - Span execution callback\n * @returns Span execution result\n */\nexport function createMcpNotificationSpan(\n jsonRpcMessage: JsonRpcNotification,\n transport: MCPTransport,\n extra: ExtraHandlerData,\n options: ResolvedMcpOptions,\n callback: () => unknown,\n): unknown {\n return createMcpSpan({\n type: 'notification-incoming',\n message: jsonRpcMessage,\n transport,\n extra,\n callback,\n options,\n });\n}\n\n/**\n * Creates a span for outgoing MCP notifications\n * @param jsonRpcMessage - Notification message\n * @param transport - MCP transport instance\n * @param options - Resolved MCP options\n * @param callback - Span execution callback\n * @returns Span execution result\n */\nexport function createMcpOutgoingNotificationSpan(\n jsonRpcMessage: JsonRpcNotification,\n transport: MCPTransport,\n options: ResolvedMcpOptions,\n callback: () => unknown,\n): unknown {\n return createMcpSpan({\n type: 'notification-outgoing',\n message: jsonRpcMessage,\n transport,\n options,\n callback,\n });\n}\n\n/**\n * Builds span configuration for MCP server requests\n * @param jsonRpcMessage - Request message\n * @param transport - MCP transport instance\n * @param extra - Optional extra handler data\n * @param options - Resolved MCP options\n * @returns Span configuration object\n */\nexport function buildMcpServerSpanConfig(\n jsonRpcMessage: JsonRpcRequest,\n transport: MCPTransport,\n extra?: ExtraHandlerData,\n options?: ResolvedMcpOptions,\n): {\n name: string;\n op: string;\n forceTransaction: boolean;\n attributes: Record;\n} {\n const { method } = jsonRpcMessage;\n const params = jsonRpcMessage.params;\n\n const targetInfo = extractTargetInfo(method, params || {});\n const spanName = createSpanName(method, targetInfo.target);\n\n const rawAttributes: Record = {\n ...buildTransportAttributes(transport, extra),\n [MCP_METHOD_NAME_ATTRIBUTE]: method,\n ...buildTypeSpecificAttributes('request', jsonRpcMessage, params, options?.recordInputs),\n ...buildSentryAttributes('request'),\n };\n\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) as Record;\n\n return {\n name: spanName,\n op: MCP_SERVER_OP_VALUE,\n forceTransaction: true,\n attributes,\n };\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/transport.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/transport.js new file mode 100644 index 0000000..c19f05a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/transport.js @@ -0,0 +1,197 @@ +import { getIsolationScope, withIsolationScope } from '../../currentScopes.js'; +import { fill } from '../../utils/object.js'; +import { startInactiveSpan, withActiveSpan } from '../../tracing/trace.js'; +import { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes.js'; +import { storeSpanForRequest, completeSpanWithResults, cleanupPendingSpansForTransport } from './correlation.js'; +import { captureError } from './errorCapture.js'; +import { extractSessionDataFromInitializeRequest, buildClientAttributesFromInfo, extractSessionDataFromInitializeResponse } from './sessionExtraction.js'; +import { storeSessionDataForTransport, updateSessionDataForTransport, cleanupSessionDataForTransport } from './sessionManagement.js'; +import { buildMcpServerSpanConfig, createMcpNotificationSpan, createMcpOutgoingNotificationSpan } from './spans.js'; +import { isJsonRpcRequest, isJsonRpcNotification, isJsonRpcResponse, isValidContentItem } from './validation.js'; + +/** + * Transport layer instrumentation for MCP server + * + * Handles message interception and response correlation. + * @see https://modelcontextprotocol.io/specification/2025-06-18/basic/transports + */ + + +/** + * Wraps transport.onmessage to create spans for incoming messages. + * For "initialize" requests, extracts and stores client info and protocol version + * in the session data for the transport. + * @param transport - MCP transport instance to wrap + * @param options - Resolved MCP options + */ +function wrapTransportOnMessage(transport, options) { + if (transport.onmessage) { + fill(transport, 'onmessage', originalOnMessage => { + return function ( message, extra) { + if (isJsonRpcRequest(message)) { + const isInitialize = message.method === 'initialize'; + let initSessionData; + + if (isInitialize) { + try { + initSessionData = extractSessionDataFromInitializeRequest(message); + storeSessionDataForTransport(this, initSessionData); + } catch { + // noop + } + } + + const isolationScope = getIsolationScope().clone(); + + return withIsolationScope(isolationScope, () => { + const spanConfig = buildMcpServerSpanConfig(message, this, extra , options); + const span = startInactiveSpan(spanConfig); + + // For initialize requests, add client info directly to span (works even for stateless transports) + if (isInitialize && initSessionData) { + span.setAttributes({ + ...buildClientAttributesFromInfo(initSessionData.clientInfo), + ...(initSessionData.protocolVersion && { + [MCP_PROTOCOL_VERSION_ATTRIBUTE]: initSessionData.protocolVersion, + }), + }); + } + + storeSpanForRequest(this, message.id, span, message.method); + + return withActiveSpan(span, () => { + return (originalOnMessage ).call(this, message, extra); + }); + }); + } + + if (isJsonRpcNotification(message)) { + return createMcpNotificationSpan(message, this, extra , options, () => { + return (originalOnMessage ).call(this, message, extra); + }); + } + + return (originalOnMessage ).call(this, message, extra); + }; + }); + } +} + +/** + * Wraps transport.send to handle outgoing messages and response correlation. + * For "initialize" responses, extracts and stores protocol version and server info + * in the session data for the transport. + * @param transport - MCP transport instance to wrap + * @param options - Resolved MCP options + */ +function wrapTransportSend(transport, options) { + if (transport.send) { + fill(transport, 'send', originalSend => { + return async function ( ...args) { + const [message] = args; + + if (isJsonRpcNotification(message)) { + return createMcpOutgoingNotificationSpan(message, this, options, () => { + return (originalSend ).call(this, ...args); + }); + } + + if (isJsonRpcResponse(message)) { + if (message.id !== null && message.id !== undefined) { + if (message.error) { + captureJsonRpcErrorResponse(message.error); + } + + if (isValidContentItem(message.result)) { + if (message.result.protocolVersion || message.result.serverInfo) { + try { + const serverData = extractSessionDataFromInitializeResponse(message.result); + updateSessionDataForTransport(this, serverData); + } catch { + // noop + } + } + } + + completeSpanWithResults(this, message.id, message.result, options); + } + } + + return (originalSend ).call(this, ...args); + }; + }); + } +} + +/** + * Wraps transport.onclose to clean up pending spans for this transport only + * @param transport - MCP transport instance to wrap + */ +function wrapTransportOnClose(transport) { + if (transport.onclose) { + fill(transport, 'onclose', originalOnClose => { + return function ( ...args) { + cleanupPendingSpansForTransport(this); + cleanupSessionDataForTransport(this); + return (originalOnClose ).call(this, ...args); + }; + }); + } +} + +/** + * Wraps transport error handlers to capture connection errors + * @param transport - MCP transport instance to wrap + */ +function wrapTransportError(transport) { + if (transport.onerror) { + fill(transport, 'onerror', (originalOnError) => { + return function ( error) { + captureTransportError(error); + return originalOnError.call(this, error); + }; + }); + } +} + +/** + * Captures JSON-RPC error responses for server-side errors. + * @see https://www.jsonrpc.org/specification#error_object + * @internal + * @param errorResponse - JSON-RPC error response + */ +function captureJsonRpcErrorResponse(errorResponse) { + try { + if (errorResponse && typeof errorResponse === 'object' && 'code' in errorResponse && 'message' in errorResponse) { + const jsonRpcError = errorResponse ; + + const isServerError = + jsonRpcError.code === -32603 || (jsonRpcError.code >= -32099 && jsonRpcError.code <= -32000); + + if (isServerError) { + const error = new Error(jsonRpcError.message); + error.name = `JsonRpcError_${jsonRpcError.code}`; + + captureError(error, 'protocol'); + } + } + } catch { + // noop + } +} + +/** + * Captures transport connection errors + * @internal + * @param error - Transport error + */ +function captureTransportError(error) { + try { + captureError(error, 'transport'); + } catch { + // noop + } +} + +export { wrapTransportError, wrapTransportOnClose, wrapTransportOnMessage, wrapTransportSend }; +//# sourceMappingURL=transport.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/transport.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/transport.js.map new file mode 100644 index 0000000..ea2a6ea --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/transport.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transport.js","sources":["../../../../src/integrations/mcp-server/transport.ts"],"sourcesContent":["/**\n * Transport layer instrumentation for MCP server\n *\n * Handles message interception and response correlation.\n * @see https://modelcontextprotocol.io/specification/2025-06-18/basic/transports\n */\n\nimport { getIsolationScope, withIsolationScope } from '../../currentScopes';\nimport { startInactiveSpan, withActiveSpan } from '../../tracing';\nimport { fill } from '../../utils/object';\nimport { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes';\nimport { cleanupPendingSpansForTransport, completeSpanWithResults, storeSpanForRequest } from './correlation';\nimport { captureError } from './errorCapture';\nimport {\n buildClientAttributesFromInfo,\n extractSessionDataFromInitializeRequest,\n extractSessionDataFromInitializeResponse,\n} from './sessionExtraction';\nimport {\n cleanupSessionDataForTransport,\n storeSessionDataForTransport,\n updateSessionDataForTransport,\n} from './sessionManagement';\nimport { buildMcpServerSpanConfig, createMcpNotificationSpan, createMcpOutgoingNotificationSpan } from './spans';\nimport type { ExtraHandlerData, MCPTransport, ResolvedMcpOptions, SessionData } from './types';\nimport { isJsonRpcNotification, isJsonRpcRequest, isJsonRpcResponse, isValidContentItem } from './validation';\n\n/**\n * Wraps transport.onmessage to create spans for incoming messages.\n * For \"initialize\" requests, extracts and stores client info and protocol version\n * in the session data for the transport.\n * @param transport - MCP transport instance to wrap\n * @param options - Resolved MCP options\n */\nexport function wrapTransportOnMessage(transport: MCPTransport, options: ResolvedMcpOptions): void {\n if (transport.onmessage) {\n fill(transport, 'onmessage', originalOnMessage => {\n return function (this: MCPTransport, message: unknown, extra?: unknown) {\n if (isJsonRpcRequest(message)) {\n const isInitialize = message.method === 'initialize';\n let initSessionData: SessionData | undefined;\n\n if (isInitialize) {\n try {\n initSessionData = extractSessionDataFromInitializeRequest(message);\n storeSessionDataForTransport(this, initSessionData);\n } catch {\n // noop\n }\n }\n\n const isolationScope = getIsolationScope().clone();\n\n return withIsolationScope(isolationScope, () => {\n const spanConfig = buildMcpServerSpanConfig(message, this, extra as ExtraHandlerData, options);\n const span = startInactiveSpan(spanConfig);\n\n // For initialize requests, add client info directly to span (works even for stateless transports)\n if (isInitialize && initSessionData) {\n span.setAttributes({\n ...buildClientAttributesFromInfo(initSessionData.clientInfo),\n ...(initSessionData.protocolVersion && {\n [MCP_PROTOCOL_VERSION_ATTRIBUTE]: initSessionData.protocolVersion,\n }),\n });\n }\n\n storeSpanForRequest(this, message.id, span, message.method);\n\n return withActiveSpan(span, () => {\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n });\n });\n }\n\n if (isJsonRpcNotification(message)) {\n return createMcpNotificationSpan(message, this, extra as ExtraHandlerData, options, () => {\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n });\n }\n\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n };\n });\n }\n}\n\n/**\n * Wraps transport.send to handle outgoing messages and response correlation.\n * For \"initialize\" responses, extracts and stores protocol version and server info\n * in the session data for the transport.\n * @param transport - MCP transport instance to wrap\n * @param options - Resolved MCP options\n */\nexport function wrapTransportSend(transport: MCPTransport, options: ResolvedMcpOptions): void {\n if (transport.send) {\n fill(transport, 'send', originalSend => {\n return async function (this: MCPTransport, ...args: unknown[]) {\n const [message] = args;\n\n if (isJsonRpcNotification(message)) {\n return createMcpOutgoingNotificationSpan(message, this, options, () => {\n return (originalSend as (...args: unknown[]) => unknown).call(this, ...args);\n });\n }\n\n if (isJsonRpcResponse(message)) {\n if (message.id !== null && message.id !== undefined) {\n if (message.error) {\n captureJsonRpcErrorResponse(message.error);\n }\n\n if (isValidContentItem(message.result)) {\n if (message.result.protocolVersion || message.result.serverInfo) {\n try {\n const serverData = extractSessionDataFromInitializeResponse(message.result);\n updateSessionDataForTransport(this, serverData);\n } catch {\n // noop\n }\n }\n }\n\n completeSpanWithResults(this, message.id, message.result, options);\n }\n }\n\n return (originalSend as (...args: unknown[]) => unknown).call(this, ...args);\n };\n });\n }\n}\n\n/**\n * Wraps transport.onclose to clean up pending spans for this transport only\n * @param transport - MCP transport instance to wrap\n */\nexport function wrapTransportOnClose(transport: MCPTransport): void {\n if (transport.onclose) {\n fill(transport, 'onclose', originalOnClose => {\n return function (this: MCPTransport, ...args: unknown[]) {\n cleanupPendingSpansForTransport(this);\n cleanupSessionDataForTransport(this);\n return (originalOnClose as (...args: unknown[]) => unknown).call(this, ...args);\n };\n });\n }\n}\n\n/**\n * Wraps transport error handlers to capture connection errors\n * @param transport - MCP transport instance to wrap\n */\nexport function wrapTransportError(transport: MCPTransport): void {\n if (transport.onerror) {\n fill(transport, 'onerror', (originalOnError: (error: Error) => void) => {\n return function (this: MCPTransport, error: Error) {\n captureTransportError(error);\n return originalOnError.call(this, error);\n };\n });\n }\n}\n\n/**\n * Captures JSON-RPC error responses for server-side errors.\n * @see https://www.jsonrpc.org/specification#error_object\n * @internal\n * @param errorResponse - JSON-RPC error response\n */\nfunction captureJsonRpcErrorResponse(errorResponse: unknown): void {\n try {\n if (errorResponse && typeof errorResponse === 'object' && 'code' in errorResponse && 'message' in errorResponse) {\n const jsonRpcError = errorResponse as { code: number; message: string; data?: unknown };\n\n const isServerError =\n jsonRpcError.code === -32603 || (jsonRpcError.code >= -32099 && jsonRpcError.code <= -32000);\n\n if (isServerError) {\n const error = new Error(jsonRpcError.message);\n error.name = `JsonRpcError_${jsonRpcError.code}`;\n\n captureError(error, 'protocol');\n }\n }\n } catch {\n // noop\n }\n}\n\n/**\n * Captures transport connection errors\n * @internal\n * @param error - Transport error\n */\nfunction captureTransportError(error: Error): void {\n try {\n captureError(error, 'transport');\n } catch {\n // noop\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sBAAsB,CAAC,SAAS,EAAgB,OAAO,EAA4B;AACnG,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE;AAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,qBAAqB;AACtD,MAAM,OAAO,WAA8B,OAAO,EAAW,KAAK,EAAY;AAC9E,QAAQ,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE;AACvC,UAAU,MAAM,YAAA,GAAe,OAAO,CAAC,MAAA,KAAW,YAAY;AAC9D,UAAU,IAAI,eAAe;;AAE7B,UAAU,IAAI,YAAY,EAAE;AAC5B,YAAY,IAAI;AAChB,cAAc,eAAA,GAAkB,uCAAuC,CAAC,OAAO,CAAC;AAChF,cAAc,4BAA4B,CAAC,IAAI,EAAE,eAAe,CAAC;AACjE,YAAY,EAAE,MAAM;AACpB;AACA,YAAY;AACZ,UAAU;;AAEV,UAAU,MAAM,iBAAiB,iBAAiB,EAAE,CAAC,KAAK,EAAE;;AAE5D,UAAU,OAAO,kBAAkB,CAAC,cAAc,EAAE,MAAM;AAC1D,YAAY,MAAM,UAAA,GAAa,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAA,GAA2B,OAAO,CAAC;AAC1G,YAAY,MAAM,IAAA,GAAO,iBAAiB,CAAC,UAAU,CAAC;;AAEtD;AACA,YAAY,IAAI,YAAA,IAAgB,eAAe,EAAE;AACjD,cAAc,IAAI,CAAC,aAAa,CAAC;AACjC,gBAAgB,GAAG,6BAA6B,CAAC,eAAe,CAAC,UAAU,CAAC;AAC5E,gBAAgB,IAAI,eAAe,CAAC,mBAAmB;AACvD,kBAAkB,CAAC,8BAA8B,GAAG,eAAe,CAAC,eAAe;AACnF,iBAAiB,CAAC;AAClB,eAAe,CAAC;AAChB,YAAY;;AAEZ,YAAY,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;;AAEvE,YAAY,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM;AAC9C,cAAc,OAAO,CAAC,iBAAA,GAAsD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AACtG,YAAY,CAAC,CAAC;AACd,UAAU,CAAC,CAAC;AACZ,QAAQ;;AAER,QAAQ,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE;AAC5C,UAAU,OAAO,yBAAyB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAA,GAA2B,OAAO,EAAE,MAAM;AACpG,YAAY,OAAO,CAAC,iBAAA,GAAsD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AACpG,UAAU,CAAC,CAAC;AACZ,QAAQ;;AAER,QAAQ,OAAO,CAAC,iBAAA,GAAsD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AAChG,MAAM,CAAC;AACP,IAAI,CAAC,CAAC;AACN,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,SAAS,EAAgB,OAAO,EAA4B;AAC9F,EAAE,IAAI,SAAS,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB;AAC5C,MAAM,OAAO,iBAAoC,GAAG,IAAI,EAAa;AACrE,QAAQ,MAAM,CAAC,OAAO,CAAA,GAAI,IAAI;;AAE9B,QAAQ,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE;AAC5C,UAAU,OAAO,iCAAiC,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM;AACjF,YAAY,OAAO,CAAC,YAAA,GAAiD,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACxF,UAAU,CAAC,CAAC;AACZ,QAAQ;;AAER,QAAQ,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;AACxC,UAAU,IAAI,OAAO,CAAC,EAAA,KAAO,IAAA,IAAQ,OAAO,CAAC,EAAA,KAAO,SAAS,EAAE;AAC/D,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;AAC/B,cAAc,2BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC;AACxD,YAAY;;AAEZ,YAAY,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACpD,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,eAAA,IAAmB,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE;AAC/E,gBAAgB,IAAI;AACpB,kBAAkB,MAAM,aAAa,wCAAwC,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7F,kBAAkB,6BAA6B,CAAC,IAAI,EAAE,UAAU,CAAC;AACjE,gBAAgB,EAAE,MAAM;AACxB;AACA,gBAAgB;AAChB,cAAc;AACd,YAAY;;AAEZ,YAAY,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;AAC9E,UAAU;AACV,QAAQ;;AAER,QAAQ,OAAO,CAAC,YAAA,GAAiD,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACpF,MAAM,CAAC;AACP,IAAI,CAAC,CAAC;AACN,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,SAAS,EAAsB;AACpE,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE;AACzB,IAAI,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,mBAAmB;AAClD,MAAM,OAAO,WAA8B,GAAG,IAAI,EAAa;AAC/D,QAAQ,+BAA+B,CAAC,IAAI,CAAC;AAC7C,QAAQ,8BAA8B,CAAC,IAAI,CAAC;AAC5C,QAAQ,OAAO,CAAC,eAAA,GAAoD,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACvF,MAAM,CAAC;AACP,IAAI,CAAC,CAAC;AACN,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,SAAS,EAAsB;AAClE,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE;AACzB,IAAI,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,eAAe,KAA6B;AAC5E,MAAM,OAAO,WAA8B,KAAK,EAAS;AACzD,QAAQ,qBAAqB,CAAC,KAAK,CAAC;AACpC,QAAQ,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAChD,MAAM,CAAC;AACP,IAAI,CAAC,CAAC;AACN,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAA2B,CAAC,aAAa,EAAiB;AACnE,EAAE,IAAI;AACN,IAAI,IAAI,aAAA,IAAiB,OAAO,kBAAkB,QAAA,IAAY,MAAA,IAAU,aAAA,IAAiB,SAAA,IAAa,aAAa,EAAE;AACrH,MAAM,MAAM,YAAA,GAAe,aAAA;;AAE3B,MAAM,MAAM,aAAA;AACZ,QAAQ,YAAY,CAAC,IAAA,KAAS,CAAC,KAAA,KAAU,YAAY,CAAC,QAAQ,CAAC,SAAS,YAAY,CAAC,IAAA,IAAQ,CAAC,KAAK,CAAC;;AAEpG,MAAM,IAAI,aAAa,EAAE;AACzB,QAAQ,MAAM,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;AACrD,QAAQ,KAAK,CAAC,IAAA,GAAO,CAAC,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;;AAEA,QAAA,YAAA,CAAA,KAAA,EAAA,UAAA,CAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA,CAAA,CAAA,MAAA;AACA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAA,qBAAA,CAAA,KAAA,EAAA;AACA,EAAA,IAAA;AACA,IAAA,YAAA,CAAA,KAAA,EAAA,WAAA,CAAA;AACA,EAAA,CAAA,CAAA,MAAA;AACA;AACA,EAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/validation.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/validation.js new file mode 100644 index 0000000..03c02c7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/validation.js @@ -0,0 +1,89 @@ +import { DEBUG_BUILD } from '../../debug-build.js'; +import { debug } from '../../utils/debug-logger.js'; + +/** + * Message validation functions for MCP server instrumentation + * + * Provides JSON-RPC 2.0 message type validation and MCP server instance validation. + */ + + +/** + * Validates if a message is a JSON-RPC request + * @param message - Message to validate + * @returns True if message is a JSON-RPC request + */ +function isJsonRpcRequest(message) { + return ( + typeof message === 'object' && + message !== null && + 'jsonrpc' in message && + (message ).jsonrpc === '2.0' && + 'method' in message && + 'id' in message + ); +} + +/** + * Validates if a message is a JSON-RPC notification + * @param message - Message to validate + * @returns True if message is a JSON-RPC notification + */ +function isJsonRpcNotification(message) { + return ( + typeof message === 'object' && + message !== null && + 'jsonrpc' in message && + (message ).jsonrpc === '2.0' && + 'method' in message && + !('id' in message) + ); +} + +/** + * Validates if a message is a JSON-RPC response + * @param message - Message to validate + * @returns True if message is a JSON-RPC response + */ +function isJsonRpcResponse(message) { + return ( + typeof message === 'object' && + message !== null && + 'jsonrpc' in message && + (message ).jsonrpc === '2.0' && + 'id' in message && + ('result' in message || 'error' in message) + ); +} + +/** + * Validates MCP server instance with type checking + * @param instance - Object to validate as MCP server instance + * @returns True if instance has required MCP server methods + */ +function validateMcpServerInstance(instance) { + if ( + typeof instance === 'object' && + instance !== null && + 'resource' in instance && + 'tool' in instance && + 'prompt' in instance && + 'connect' in instance + ) { + return true; + } + DEBUG_BUILD && debug.warn('Did not patch MCP server. Interface is incompatible.'); + return false; +} + +/** + * Check if the item is a valid content item + * @param item - The item to check + * @returns True if the item is a valid content item, false otherwise + */ +function isValidContentItem(item) { + return item != null && typeof item === 'object'; +} + +export { isJsonRpcNotification, isJsonRpcRequest, isJsonRpcResponse, isValidContentItem, validateMcpServerInstance }; +//# sourceMappingURL=validation.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/validation.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/validation.js.map new file mode 100644 index 0000000..cc8dda7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/mcp-server/validation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validation.js","sources":["../../../../src/integrations/mcp-server/validation.ts"],"sourcesContent":["/**\n * Message validation functions for MCP server instrumentation\n *\n * Provides JSON-RPC 2.0 message type validation and MCP server instance validation.\n */\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../../utils/debug-logger';\nimport type { JsonRpcNotification, JsonRpcRequest, JsonRpcResponse } from './types';\n\n/**\n * Validates if a message is a JSON-RPC request\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC request\n */\nexport function isJsonRpcRequest(message: unknown): message is JsonRpcRequest {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as JsonRpcRequest).jsonrpc === '2.0' &&\n 'method' in message &&\n 'id' in message\n );\n}\n\n/**\n * Validates if a message is a JSON-RPC notification\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC notification\n */\nexport function isJsonRpcNotification(message: unknown): message is JsonRpcNotification {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as JsonRpcNotification).jsonrpc === '2.0' &&\n 'method' in message &&\n !('id' in message)\n );\n}\n\n/**\n * Validates if a message is a JSON-RPC response\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC response\n */\nexport function isJsonRpcResponse(message: unknown): message is JsonRpcResponse {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as { jsonrpc: string }).jsonrpc === '2.0' &&\n 'id' in message &&\n ('result' in message || 'error' in message)\n );\n}\n\n/**\n * Validates MCP server instance with type checking\n * @param instance - Object to validate as MCP server instance\n * @returns True if instance has required MCP server methods\n */\nexport function validateMcpServerInstance(instance: unknown): boolean {\n if (\n typeof instance === 'object' &&\n instance !== null &&\n 'resource' in instance &&\n 'tool' in instance &&\n 'prompt' in instance &&\n 'connect' in instance\n ) {\n return true;\n }\n DEBUG_BUILD && debug.warn('Did not patch MCP server. Interface is incompatible.');\n return false;\n}\n\n/**\n * Check if the item is a valid content item\n * @param item - The item to check\n * @returns True if the item is a valid content item, false otherwise\n */\nexport function isValidContentItem(item: unknown): item is Record {\n return item != null && typeof item === 'object';\n}\n"],"names":[],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,OAAO,EAAsC;AAC9E,EAAE;AACF,IAAI,OAAO,OAAA,KAAY,QAAA;AACvB,IAAI,OAAA,KAAY,IAAA;AAChB,IAAI,SAAA,IAAa,OAAA;AACjB,IAAI,CAAC,OAAA,GAA2B,OAAA,KAAY,KAAA;AAC5C,IAAI,QAAA,IAAY,OAAA;AAChB,IAAI,QAAQ;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,qBAAqB,CAAC,OAAO,EAA2C;AACxF,EAAE;AACF,IAAI,OAAO,OAAA,KAAY,QAAA;AACvB,IAAI,OAAA,KAAY,IAAA;AAChB,IAAI,SAAA,IAAa,OAAA;AACjB,IAAI,CAAC,OAAA,GAAgC,OAAA,KAAY,KAAA;AACjD,IAAI,QAAA,IAAY,OAAA;AAChB,IAAI,EAAE,IAAA,IAAQ,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,OAAO,EAAuC;AAChF,EAAE;AACF,IAAI,OAAO,OAAA,KAAY,QAAA;AACvB,IAAI,OAAA,KAAY,IAAA;AAChB,IAAI,SAAA,IAAa,OAAA;AACjB,IAAI,CAAC,OAAA,GAAgC,OAAA,KAAY,KAAA;AACjD,IAAI,IAAA,IAAQ,OAAA;AACZ,KAAK,QAAA,IAAY,WAAW,OAAA,IAAW,OAAO;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,QAAQ,EAAoB;AACtE,EAAE;AACF,IAAI,OAAO,QAAA,KAAa,QAAA;AACxB,IAAI,QAAA,KAAa,IAAA;AACjB,IAAI,UAAA,IAAc,QAAA;AAClB,IAAI,MAAA,IAAU,QAAA;AACd,IAAI,QAAA,IAAY,QAAA;AAChB,IAAI,aAAa;AACjB,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,eAAe,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC;AACnF,EAAE,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,IAAI,EAA4C;AACnF,EAAE,OAAO,QAAQ,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAQ;AACjD;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/moduleMetadata.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/moduleMetadata.js new file mode 100644 index 0000000..cadb69a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/moduleMetadata.js @@ -0,0 +1,46 @@ +import { defineIntegration } from '../integration.js'; +import { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata.js'; +import { forEachEnvelopeItem } from '../utils/envelope.js'; + +/** + * Adds module metadata to stack frames. + * + * Metadata can be injected by the Sentry bundler plugins using the `moduleMetadata` config option. + * + * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events + * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams + * our sources + */ +const moduleMetadataIntegration = defineIntegration(() => { + return { + name: 'ModuleMetadata', + setup(client) { + // We need to strip metadata from stack frames before sending them to Sentry since these are client side only. + client.on('beforeEnvelope', envelope => { + forEachEnvelopeItem(envelope, (item, type) => { + if (type === 'event') { + const event = Array.isArray(item) ? (item )[1] : undefined; + + if (event) { + stripMetadataFromStackFrames(event); + item[1] = event; + } + } + }); + }); + + client.on('applyFrameMetadata', event => { + // Only apply stack frame metadata to error events + if (event.type) { + return; + } + + const stackParser = client.getOptions().stackParser; + addMetadataToStackFrames(stackParser, event); + }); + }, + }; +}); + +export { moduleMetadataIntegration }; +//# sourceMappingURL=moduleMetadata.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/moduleMetadata.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/moduleMetadata.js.map new file mode 100644 index 0000000..1491d95 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/moduleMetadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"moduleMetadata.js","sources":["../../../src/integrations/moduleMetadata.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\nimport type { EventItem } from '../types-hoist/envelope';\nimport { forEachEnvelopeItem } from '../utils/envelope';\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n */\nexport const moduleMetadataIntegration = defineIntegration(() => {\n return {\n name: 'ModuleMetadata',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n };\n});\n"],"names":[],"mappings":";;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACa,yBAAA,GAA4B,iBAAiB,CAAC,MAAM;AACjE,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB;AACA,MAAM,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,YAAY;AAC9C,QAAQ,mBAAmB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;AACtD,UAAU,IAAI,IAAA,KAAS,OAAO,EAAE;AAChC,YAAY,MAAM,KAAA,GAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA,GAAI,CAAC,IAAA,GAAmB,CAAC,CAAA,GAAI,SAAS;;AAElF,YAAY,IAAI,KAAK,EAAE;AACvB,cAAc,4BAA4B,CAAC,KAAK,CAAC;AACjD,cAAc,IAAI,CAAC,CAAC,CAAA,GAAI,KAAK;AAC7B,YAAY;AACZ,UAAU;AACV,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC,CAAC;;AAER,MAAM,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,SAAS;AAC/C;AACA,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;AACxB,UAAU;AACV,QAAQ;;AAER,QAAQ,MAAM,cAAc,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW;AAC3D,QAAQ,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC;AACpD,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,GAAG;AACH,CAAC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/requestdata.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/requestdata.js new file mode 100644 index 0000000..73e098a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/requestdata.js @@ -0,0 +1,122 @@ +import { defineIntegration } from '../integration.js'; +import { parseCookie } from '../utils/cookie.js'; +import { getClientIPAddress, ipHeaderNames } from '../vendor/getIpAddress.js'; + +// TODO(v11): Change defaults based on `sendDefaultPii` +const DEFAULT_INCLUDE = { + cookies: true, + data: true, + headers: true, + query_string: true, + url: true, +}; + +const INTEGRATION_NAME = 'RequestData'; + +const _requestDataIntegration = ((options = {}) => { + const include = { + ...DEFAULT_INCLUDE, + ...options.include, + }; + + return { + name: INTEGRATION_NAME, + processEvent(event, _hint, client) { + const { sdkProcessingMetadata = {} } = event; + const { normalizedRequest, ipAddress } = sdkProcessingMetadata; + + const includeWithDefaultPiiApplied = { + ...include, + ip: include.ip ?? client.getOptions().sendDefaultPii, + }; + + if (normalizedRequest) { + addNormalizedRequestDataToEvent(event, normalizedRequest, { ipAddress }, includeWithDefaultPiiApplied); + } + + return event; + }, + }; +}) ; + +/** + * Add data about a request to an event. Primarily for use in Node-based SDKs, but included in `@sentry/core` + * so it can be used in cross-platform SDKs like `@sentry/nextjs`. + */ +const requestDataIntegration = defineIntegration(_requestDataIntegration); + +/** + * Add already normalized request data to an event. + * This mutates the passed in event. + */ +function addNormalizedRequestDataToEvent( + event, + req, + // Data that should not go into `event.request` but is somehow related to requests + additionalData, + include, +) { + event.request = { + ...event.request, + ...extractNormalizedRequestData(req, include), + }; + + if (include.ip) { + const ip = (req.headers && getClientIPAddress(req.headers)) || additionalData.ipAddress; + if (ip) { + event.user = { + ...event.user, + ip_address: ip, + }; + } + } +} + +function extractNormalizedRequestData( + normalizedRequest, + include, +) { + const requestData = {}; + const headers = { ...normalizedRequest.headers }; + + if (include.headers) { + requestData.headers = headers; + + // Remove the Cookie header in case cookie data should not be included in the event + if (!include.cookies) { + delete (headers ).cookie; + } + + // Remove IP headers in case IP data should not be included in the event + if (!include.ip) { + ipHeaderNames.forEach(ipHeaderName => { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete (headers )[ipHeaderName]; + }); + } + } + + requestData.method = normalizedRequest.method; + + if (include.url) { + requestData.url = normalizedRequest.url; + } + + if (include.cookies) { + const cookies = normalizedRequest.cookies || (headers?.cookie ? parseCookie(headers.cookie) : undefined); + requestData.cookies = cookies || {}; + } + + if (include.query_string) { + requestData.query_string = normalizedRequest.query_string; + } + + if (include.data) { + requestData.data = normalizedRequest.data; + } + + return requestData; +} + +export { requestDataIntegration }; +//# sourceMappingURL=requestdata.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/requestdata.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/requestdata.js.map new file mode 100644 index 0000000..1c15fdc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/requestdata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"requestdata.js","sources":["../../../src/integrations/requestdata.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { RequestEventData } from '../types-hoist/request';\nimport { parseCookie } from '../utils/cookie';\nimport { getClientIPAddress, ipHeaderNames } from '../vendor/getIpAddress';\n\ninterface RequestDataIncludeOptions {\n cookies?: boolean;\n data?: boolean;\n headers?: boolean;\n ip?: boolean;\n query_string?: boolean;\n url?: boolean;\n}\n\ntype RequestDataIntegrationOptions = {\n /**\n * Controls what data is pulled from the request and added to the event.\n */\n include?: RequestDataIncludeOptions;\n};\n\n// TODO(v11): Change defaults based on `sendDefaultPii`\nconst DEFAULT_INCLUDE: RequestDataIncludeOptions = {\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: RequestDataIntegrationOptions = {}) => {\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: RequestDataIncludeOptions = {\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}) satisfies IntegrationFn;\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 */\nexport const 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: Event,\n req: RequestEventData,\n // Data that should not go into `event.request` but is somehow related to requests\n additionalData: { ipAddress?: string },\n include: RequestDataIncludeOptions,\n): void {\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: RequestEventData,\n include: RequestDataIncludeOptions,\n): RequestEventData {\n const requestData: RequestEventData = {};\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 as { cookie?: string }).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 as Record)[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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/rewriteframes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/rewriteframes.js new file mode 100644 index 0000000..e8af085 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/rewriteframes.js @@ -0,0 +1,108 @@ +import { defineIntegration } from '../integration.js'; +import { relative, basename } from '../utils/path.js'; +import { GLOBAL_OBJ } from '../utils/worldwide.js'; + +const INTEGRATION_NAME = 'RewriteFrames'; + +/** + * Rewrite event frames paths. + */ +const rewriteFramesIntegration = defineIntegration((options = {}) => { + const root = options.root; + const prefix = options.prefix || 'app:///'; + + const isBrowser = 'window' in GLOBAL_OBJ && !!GLOBAL_OBJ.window; + + const iteratee = options.iteratee || generateIteratee({ isBrowser, root, prefix }); + + /** Process an exception event. */ + function _processExceptionsEvent(event) { + try { + return { + ...event, + exception: { + ...event.exception, + // The check for this is performed inside `process` call itself, safe to skip here + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + values: event.exception.values.map(value => ({ + ...value, + ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }), + })), + }, + }; + } catch { + return event; + } + } + + /** Process a stack trace. */ + function _processStacktrace(stacktrace) { + return { + ...stacktrace, + frames: stacktrace?.frames?.map(f => iteratee(f)), + }; + } + + return { + name: INTEGRATION_NAME, + processEvent(originalEvent) { + let processedEvent = originalEvent; + + if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) { + processedEvent = _processExceptionsEvent(processedEvent); + } + + return processedEvent; + }, + }; +}); + +/** + * Exported only for tests. + */ +function generateIteratee({ + isBrowser, + root, + prefix, +} + +) { + return (frame) => { + if (!frame.filename) { + return frame; + } + + // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\` + const isWindowsFrame = + /^[a-zA-Z]:\\/.test(frame.filename) || + // or the presence of a backslash without a forward slash (which are not allowed on Windows) + (frame.filename.includes('\\') && !frame.filename.includes('/')); + + // Check if the frame filename begins with `/` + const startsWithSlash = /^\//.test(frame.filename); + + if (isBrowser) { + if (root) { + const oldFilename = frame.filename; + if (oldFilename.indexOf(root) === 0) { + frame.filename = oldFilename.replace(root, prefix); + } + } + } else { + if (isWindowsFrame || startsWithSlash) { + const filename = isWindowsFrame + ? frame.filename + .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix + .replace(/\\/g, '/') // replace all `\\` instances with `/` + : frame.filename; + const base = root ? relative(root, filename) : basename(filename); + frame.filename = `${prefix}${base}`; + } + } + + return frame; + }; +} + +export { generateIteratee, rewriteFramesIntegration }; +//# sourceMappingURL=rewriteframes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/rewriteframes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/rewriteframes.js.map new file mode 100644 index 0000000..0307590 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/rewriteframes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rewriteframes.js","sources":["../../../src/integrations/rewriteframes.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { Stacktrace } from '../types-hoist/stacktrace';\nimport { basename, relative } from '../utils/path';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ntype StackFrameIteratee = (frame: StackFrame) => StackFrame;\n\nconst INTEGRATION_NAME = 'RewriteFrames';\n\ninterface RewriteFramesOptions {\n /**\n * Root path (the beginning of the path) that will be stripped from the frames' filename.\n *\n * This option has slightly different behaviour in the browser and on servers:\n * - In the browser, the value you provide in `root` will be stripped from the beginning stack frames' paths (if the path started with the value).\n * - On the server, the root value will only replace the beginning of stack frame filepaths, when the path is absolute. If no `root` value is provided and the path is absolute, the frame will be reduced to only the filename and the provided `prefix` option.\n *\n * Browser example:\n * - Original frame: `'http://example.com/my/path/static/asset.js'`\n * - `root: 'http://example.com/my/path'`\n * - `assetPrefix: 'app://'`\n * - Resulting frame: `'app:///static/asset.js'`\n *\n * Server example:\n * - Original frame: `'/User/local/my/path/static/asset.js'`\n * - `root: '/User/local/my/path'`\n * - `assetPrefix: 'app://'`\n * - Resulting frame: `'app:///static/asset.js'`\n */\n root?: string;\n\n /**\n * A custom prefix that stack frames will be prepended with.\n *\n * Default: `'app://'`\n *\n * This option has slightly different behaviour in the browser and on servers:\n * - In the browser, the value you provide in `prefix` will prefix the resulting filename when the value you provided in `root` was applied. Effectively replacing whatever `root` matched in the beginning of the frame with `prefix`.\n * - On the server, the prefix is applied to all stackframes with absolute paths. On Windows, the drive identifier (e.g. \"C://\") is replaced with the prefix.\n */\n prefix?: string;\n\n /**\n * Defines an iterator that is used to iterate through all of the stack frames for modification before being sent to Sentry.\n * Setting this option will effectively disable both the `root` and the `prefix` options.\n */\n iteratee?: StackFrameIteratee;\n}\n\n/**\n * Rewrite event frames paths.\n */\nexport const rewriteFramesIntegration = defineIntegration((options: RewriteFramesOptions = {}) => {\n const root = options.root;\n const prefix = options.prefix || 'app:///';\n\n const isBrowser = 'window' in GLOBAL_OBJ && !!GLOBAL_OBJ.window;\n\n const iteratee: StackFrameIteratee = options.iteratee || generateIteratee({ isBrowser, root, prefix });\n\n /** Process an exception event. */\n function _processExceptionsEvent(event: Event): Event {\n try {\n return {\n ...event,\n exception: {\n ...event.exception,\n // The check for this is performed inside `process` call itself, safe to skip here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n values: event.exception!.values!.map(value => ({\n ...value,\n ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }),\n })),\n },\n };\n } catch {\n return event;\n }\n }\n\n /** Process a stack trace. */\n function _processStacktrace(stacktrace?: Stacktrace): Stacktrace {\n return {\n ...stacktrace,\n frames: stacktrace?.frames?.map(f => iteratee(f)),\n };\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent) {\n let processedEvent = originalEvent;\n\n if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) {\n processedEvent = _processExceptionsEvent(processedEvent);\n }\n\n return processedEvent;\n },\n };\n});\n\n/**\n * Exported only for tests.\n */\nexport function generateIteratee({\n isBrowser,\n root,\n prefix,\n}: {\n isBrowser: boolean;\n root?: string;\n prefix: string;\n}): StackFrameIteratee {\n return (frame: StackFrame) => {\n if (!frame.filename) {\n return frame;\n }\n\n // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\\`\n const isWindowsFrame =\n /^[a-zA-Z]:\\\\/.test(frame.filename) ||\n // or the presence of a backslash without a forward slash (which are not allowed on Windows)\n (frame.filename.includes('\\\\') && !frame.filename.includes('/'));\n\n // Check if the frame filename begins with `/`\n const startsWithSlash = /^\\//.test(frame.filename);\n\n if (isBrowser) {\n if (root) {\n const oldFilename = frame.filename;\n if (oldFilename.indexOf(root) === 0) {\n frame.filename = oldFilename.replace(root, prefix);\n }\n }\n } else {\n if (isWindowsFrame || startsWithSlash) {\n const filename = isWindowsFrame\n ? frame.filename\n .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/') // replace all `\\\\` instances with `/`\n : frame.filename;\n const base = root ? relative(root, filename) : basename(filename);\n frame.filename = `${prefix}${base}`;\n }\n }\n\n return frame;\n };\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/supabase.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/supabase.js new file mode 100644 index 0000000..9753f3b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/supabase.js @@ -0,0 +1,473 @@ +import { addBreadcrumb } from '../breadcrumbs.js'; +import { DEBUG_BUILD } from '../debug-build.js'; +import { captureException } from '../exports.js'; +import { defineIntegration } from '../integration.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes.js'; +import { debug } from '../utils/debug-logger.js'; +import { addExceptionMechanism } from '../utils/misc.js'; +import { isPlainObject } from '../utils/is.js'; +import { SPAN_STATUS_ERROR, SPAN_STATUS_OK, setHttpStatus } from '../tracing/spanstatus.js'; +import { startSpan } from '../tracing/trace.js'; + +// Based on Kamil Ogórek's work on: +// https://github.com/supabase-community/sentry-integration-js + + +const AUTH_OPERATIONS_TO_INSTRUMENT = [ + 'reauthenticate', + 'signInAnonymously', + 'signInWithOAuth', + 'signInWithIdToken', + 'signInWithOtp', + 'signInWithPassword', + 'signInWithSSO', + 'signOut', + 'signUp', + 'verifyOtp', +]; + +const AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT = [ + 'createUser', + 'deleteUser', + 'listUsers', + 'getUserById', + 'updateUserById', + 'inviteUserByEmail', +]; + +const FILTER_MAPPINGS = { + eq: 'eq', + neq: 'neq', + gt: 'gt', + gte: 'gte', + lt: 'lt', + lte: 'lte', + like: 'like', + 'like(all)': 'likeAllOf', + 'like(any)': 'likeAnyOf', + ilike: 'ilike', + 'ilike(all)': 'ilikeAllOf', + 'ilike(any)': 'ilikeAnyOf', + is: 'is', + in: 'in', + cs: 'contains', + cd: 'containedBy', + sr: 'rangeGt', + nxl: 'rangeGte', + sl: 'rangeLt', + nxr: 'rangeLte', + adj: 'rangeAdjacent', + ov: 'overlaps', + fts: '', + plfts: 'plain', + phfts: 'phrase', + wfts: 'websearch', + not: 'not', +}; + +const DB_OPERATIONS_TO_INSTRUMENT = ['select', 'insert', 'upsert', 'update', 'delete']; + +function markAsInstrumented(fn) { + try { + (fn ).__SENTRY_INSTRUMENTED__ = true; + } catch { + // ignore errors here + } +} + +function isInstrumented(fn) { + try { + return (fn ).__SENTRY_INSTRUMENTED__; + } catch { + return false; + } +} + +/** + * Extracts the database operation type from the HTTP method and headers + * @param method - The HTTP method of the request + * @param headers - The request headers + * @returns The database operation type ('select', 'insert', 'upsert', 'update', or 'delete') + */ +function extractOperation(method, headers = {}) { + switch (method) { + case 'GET': { + return 'select'; + } + case 'POST': { + if (headers['Prefer']?.includes('resolution=')) { + return 'upsert'; + } else { + return 'insert'; + } + } + case 'PATCH': { + return 'update'; + } + case 'DELETE': { + return 'delete'; + } + default: { + return ''; + } + } +} + +/** + * Translates Supabase filter parameters into readable method names for tracing + * @param key - The filter key from the URL search parameters + * @param query - The filter value from the URL search parameters + * @returns A string representation of the filter as a method call + */ +function translateFiltersIntoMethods(key, query) { + if (query === '' || query === '*') { + return 'select(*)'; + } + + if (key === 'select') { + return `select(${query})`; + } + + if (key === 'or' || key.endsWith('.or')) { + return `${key}${query}`; + } + + const [filter, ...value] = query.split('.'); + + let method; + // Handle optional `configPart` of the filter + if (filter?.startsWith('fts')) { + method = 'textSearch'; + } else if (filter?.startsWith('plfts')) { + method = 'textSearch[plain]'; + } else if (filter?.startsWith('phfts')) { + method = 'textSearch[phrase]'; + } else if (filter?.startsWith('wfts')) { + method = 'textSearch[websearch]'; + } else { + method = (filter && FILTER_MAPPINGS[filter ]) || 'filter'; + } + + return `${method}(${key}, ${value.join('.')})`; +} + +function instrumentAuthOperation(operation, isAdmin = false) { + return new Proxy(operation, { + apply(target, thisArg, argumentsList) { + return startSpan( + { + name: `auth ${isAdmin ? '(admin) ' : ''}${operation.name}`, + attributes: { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase', + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db', + 'db.system': 'postgresql', + 'db.operation': `auth.${isAdmin ? 'admin.' : ''}${operation.name}`, + }, + }, + span => { + return Reflect.apply(target, thisArg, argumentsList) + .then((res) => { + if (res && typeof res === 'object' && 'error' in res && res.error) { + span.setStatus({ code: SPAN_STATUS_ERROR }); + + captureException(res.error, { + mechanism: { + handled: false, + type: 'auto.db.supabase.auth', + }, + }); + } else { + span.setStatus({ code: SPAN_STATUS_OK }); + } + + span.end(); + return res; + }) + .catch((err) => { + span.setStatus({ code: SPAN_STATUS_ERROR }); + span.end(); + + captureException(err, { + mechanism: { + handled: false, + type: 'auto.db.supabase.auth', + }, + }); + + throw err; + }) + .then(...argumentsList); + }, + ); + }, + }); +} + +function instrumentSupabaseAuthClient(supabaseClientInstance) { + const auth = supabaseClientInstance.auth; + + if (!auth || isInstrumented(supabaseClientInstance.auth)) { + return; + } + + for (const operation of AUTH_OPERATIONS_TO_INSTRUMENT) { + const authOperation = auth[operation]; + + if (!authOperation) { + continue; + } + + if (typeof supabaseClientInstance.auth[operation] === 'function') { + supabaseClientInstance.auth[operation] = instrumentAuthOperation(authOperation); + } + } + + for (const operation of AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT) { + const authOperation = auth.admin[operation]; + + if (!authOperation) { + continue; + } + + if (typeof supabaseClientInstance.auth.admin[operation] === 'function') { + supabaseClientInstance.auth.admin[operation] = instrumentAuthOperation(authOperation, true); + } + } + + markAsInstrumented(supabaseClientInstance.auth); +} + +function instrumentSupabaseClientConstructor(SupabaseClient) { + if (isInstrumented((SupabaseClient ).prototype.from)) { + return; + } + + (SupabaseClient ).prototype.from = new Proxy( + (SupabaseClient ).prototype.from, + { + apply(target, thisArg, argumentsList) { + const rv = Reflect.apply(target, thisArg, argumentsList); + const PostgRESTQueryBuilder = (rv ).constructor; + + instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder ); + + return rv; + }, + }, + ); + + markAsInstrumented((SupabaseClient ).prototype.from); +} + +function instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder) { + if (isInstrumented((PostgRESTFilterBuilder.prototype ).then)) { + return; + } + + (PostgRESTFilterBuilder.prototype ).then = new Proxy( + (PostgRESTFilterBuilder.prototype ).then, + { + apply(target, thisArg, argumentsList) { + const operations = DB_OPERATIONS_TO_INSTRUMENT; + const typedThis = thisArg ; + const operation = extractOperation(typedThis.method, typedThis.headers); + + if (!operations.includes(operation)) { + return Reflect.apply(target, thisArg, argumentsList); + } + + if (!typedThis?.url?.pathname || typeof typedThis.url.pathname !== 'string') { + return Reflect.apply(target, thisArg, argumentsList); + } + + const pathParts = typedThis.url.pathname.split('/'); + const table = pathParts.length > 0 ? pathParts[pathParts.length - 1] : ''; + + const queryItems = []; + for (const [key, value] of typedThis.url.searchParams.entries()) { + // It's possible to have multiple entries for the same key, eg. `id=eq.7&id=eq.3`, + // so we need to use array instead of object to collect them. + queryItems.push(translateFiltersIntoMethods(key, value)); + } + const body = Object.create(null); + if (isPlainObject(typedThis.body)) { + for (const [key, value] of Object.entries(typedThis.body)) { + body[key] = value; + } + } + + // Adding operation to the beginning of the description if it's not a `select` operation + // For example, it can be an `insert` or `update` operation but the query can be `select(...)` + // For `select` operations, we don't need repeat it in the description + const description = `${operation === 'select' ? '' : `${operation}${body ? '(...) ' : ''}`}${queryItems.join( + ' ', + )} from(${table})`; + + const attributes = { + 'db.table': table, + 'db.schema': typedThis.schema, + 'db.url': typedThis.url.origin, + 'db.sdk': typedThis.headers['X-Client-Info'], + 'db.system': 'postgresql', + 'db.operation': operation, + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase', + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db', + }; + + if (queryItems.length) { + attributes['db.query'] = queryItems; + } + + if (Object.keys(body).length) { + attributes['db.body'] = body; + } + + return startSpan( + { + name: description, + attributes, + }, + span => { + return (Reflect.apply(target, thisArg, []) ) + .then( + (res) => { + if (span) { + if (res && typeof res === 'object' && 'status' in res) { + setHttpStatus(span, res.status || 500); + } + span.end(); + } + + if (res.error) { + const err = new Error(res.error.message) ; + if (res.error.code) { + err.code = res.error.code; + } + if (res.error.details) { + err.details = res.error.details; + } + + const supabaseContext = {}; + if (queryItems.length) { + supabaseContext.query = queryItems; + } + if (Object.keys(body).length) { + supabaseContext.body = body; + } + + captureException(err, scope => { + scope.addEventProcessor(e => { + addExceptionMechanism(e, { + handled: false, + type: 'auto.db.supabase.postgres', + }); + + return e; + }); + + scope.setContext('supabase', supabaseContext); + + return scope; + }); + } + + const breadcrumb = { + type: 'supabase', + category: `db.${operation}`, + message: description, + }; + + const data = {}; + + if (queryItems.length) { + data.query = queryItems; + } + + if (Object.keys(body).length) { + data.body = body; + } + + if (Object.keys(data).length) { + breadcrumb.data = data; + } + + addBreadcrumb(breadcrumb); + + return res; + }, + (err) => { + // TODO: shouldn't we capture this error? + if (span) { + setHttpStatus(span, 500); + span.end(); + } + throw err; + }, + ) + .then(...argumentsList); + }, + ); + }, + }, + ); + + markAsInstrumented((PostgRESTFilterBuilder.prototype ).then); +} + +function instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder) { + // We need to wrap _all_ operations despite them sharing the same `PostgRESTFilterBuilder` + // constructor, as we don't know which method will be called first, and we don't want to miss any calls. + for (const operation of DB_OPERATIONS_TO_INSTRUMENT) { + if (isInstrumented((PostgRESTQueryBuilder.prototype )[operation])) { + continue; + } + + (PostgRESTQueryBuilder.prototype )[operation ] = new Proxy( + (PostgRESTQueryBuilder.prototype )[operation ], + { + apply(target, thisArg, argumentsList) { + const rv = Reflect.apply(target, thisArg, argumentsList); + const PostgRESTFilterBuilder = (rv ).constructor; + + DEBUG_BUILD && debug.log(`Instrumenting ${operation} operation's PostgRESTFilterBuilder`); + + instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder); + + return rv; + }, + }, + ); + + markAsInstrumented((PostgRESTQueryBuilder.prototype )[operation]); + } +} + +const instrumentSupabaseClient = (supabaseClient) => { + if (!supabaseClient) { + DEBUG_BUILD && debug.warn('Supabase integration was not installed because no Supabase client was provided.'); + return; + } + const SupabaseClientConstructor = + supabaseClient.constructor === Function ? supabaseClient : supabaseClient.constructor; + + instrumentSupabaseClientConstructor(SupabaseClientConstructor); + instrumentSupabaseAuthClient(supabaseClient ); +}; + +const INTEGRATION_NAME = 'Supabase'; + +const _supabaseIntegration = ((supabaseClient) => { + return { + setupOnce() { + instrumentSupabaseClient(supabaseClient); + }, + name: INTEGRATION_NAME, + }; +}) ; + +const supabaseIntegration = defineIntegration((options) => { + return _supabaseIntegration(options.supabaseClient); +}) ; + +export { DB_OPERATIONS_TO_INSTRUMENT, FILTER_MAPPINGS, extractOperation, instrumentSupabaseClient, supabaseIntegration, translateFiltersIntoMethods }; +//# sourceMappingURL=supabase.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/supabase.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/supabase.js.map new file mode 100644 index 0000000..2f81e63 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/supabase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"supabase.js","sources":["../../../src/integrations/supabase.ts"],"sourcesContent":["// Based on Kamil Ogórek's work on:\n// https://github.com/supabase-community/sentry-integration-js\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-lines */\nimport { addBreadcrumb } from '../breadcrumbs';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { captureException } from '../exports';\nimport { defineIntegration } from '../integration';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, SPAN_STATUS_OK, startSpan } from '../tracing';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { debug } from '../utils/debug-logger';\nimport { isPlainObject } from '../utils/is';\nimport { addExceptionMechanism } from '../utils/misc';\n\nconst AUTH_OPERATIONS_TO_INSTRUMENT = [\n 'reauthenticate',\n 'signInAnonymously',\n 'signInWithOAuth',\n 'signInWithIdToken',\n 'signInWithOtp',\n 'signInWithPassword',\n 'signInWithSSO',\n 'signOut',\n 'signUp',\n 'verifyOtp',\n];\n\nconst AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT = [\n 'createUser',\n 'deleteUser',\n 'listUsers',\n 'getUserById',\n 'updateUserById',\n 'inviteUserByEmail',\n];\n\nexport const FILTER_MAPPINGS = {\n eq: 'eq',\n neq: 'neq',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n like: 'like',\n 'like(all)': 'likeAllOf',\n 'like(any)': 'likeAnyOf',\n ilike: 'ilike',\n 'ilike(all)': 'ilikeAllOf',\n 'ilike(any)': 'ilikeAnyOf',\n is: 'is',\n in: 'in',\n cs: 'contains',\n cd: 'containedBy',\n sr: 'rangeGt',\n nxl: 'rangeGte',\n sl: 'rangeLt',\n nxr: 'rangeLte',\n adj: 'rangeAdjacent',\n ov: 'overlaps',\n fts: '',\n plfts: 'plain',\n phfts: 'phrase',\n wfts: 'websearch',\n not: 'not',\n};\n\nexport const DB_OPERATIONS_TO_INSTRUMENT = ['select', 'insert', 'upsert', 'update', 'delete'];\n\ntype AuthOperationFn = (...args: unknown[]) => Promise;\ntype AuthOperationName = (typeof AUTH_OPERATIONS_TO_INSTRUMENT)[number];\ntype AuthAdminOperationName = (typeof AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT)[number];\ntype PostgRESTQueryOperationFn = (...args: unknown[]) => PostgRESTFilterBuilder;\n\nexport interface SupabaseClientInstance {\n auth: {\n admin: Record;\n } & Record;\n}\n\nexport interface PostgRESTQueryBuilder {\n [key: string]: PostgRESTQueryOperationFn;\n}\n\nexport interface PostgRESTFilterBuilder {\n method: string;\n headers: Record;\n url: URL;\n schema: string;\n body: any;\n}\n\nexport interface SupabaseResponse {\n status?: number;\n error?: {\n message: string;\n code?: string;\n details?: unknown;\n };\n}\n\nexport interface SupabaseError extends Error {\n code?: string;\n details?: unknown;\n}\n\nexport interface SupabaseBreadcrumb {\n type: string;\n category: string;\n message: string;\n data?: {\n query?: string[];\n body?: Record;\n };\n}\n\nexport interface SupabaseClientConstructor {\n prototype: {\n from: (table: string) => PostgRESTQueryBuilder;\n };\n}\n\nexport interface PostgRESTProtoThenable {\n then: (\n onfulfilled?: ((value: T) => T | PromiseLike) | null,\n onrejected?: ((reason: any) => T | PromiseLike) | null,\n ) => Promise;\n}\n\ntype SentryInstrumented = T & {\n __SENTRY_INSTRUMENTED__?: boolean;\n};\n\nfunction markAsInstrumented(fn: T): void {\n try {\n (fn as SentryInstrumented).__SENTRY_INSTRUMENTED__ = true;\n } catch {\n // ignore errors here\n }\n}\n\nfunction isInstrumented(fn: T): boolean | undefined {\n try {\n return (fn as SentryInstrumented).__SENTRY_INSTRUMENTED__;\n } catch {\n return false;\n }\n}\n\n/**\n * Extracts the database operation type from the HTTP method and headers\n * @param method - The HTTP method of the request\n * @param headers - The request headers\n * @returns The database operation type ('select', 'insert', 'upsert', 'update', or 'delete')\n */\nexport function extractOperation(method: string, headers: Record = {}): string {\n switch (method) {\n case 'GET': {\n return 'select';\n }\n case 'POST': {\n if (headers['Prefer']?.includes('resolution=')) {\n return 'upsert';\n } else {\n return 'insert';\n }\n }\n case 'PATCH': {\n return 'update';\n }\n case 'DELETE': {\n return 'delete';\n }\n default: {\n return '';\n }\n }\n}\n\n/**\n * Translates Supabase filter parameters into readable method names for tracing\n * @param key - The filter key from the URL search parameters\n * @param query - The filter value from the URL search parameters\n * @returns A string representation of the filter as a method call\n */\nexport function translateFiltersIntoMethods(key: string, query: string): string {\n if (query === '' || query === '*') {\n return 'select(*)';\n }\n\n if (key === 'select') {\n return `select(${query})`;\n }\n\n if (key === 'or' || key.endsWith('.or')) {\n return `${key}${query}`;\n }\n\n const [filter, ...value] = query.split('.');\n\n let method;\n // Handle optional `configPart` of the filter\n if (filter?.startsWith('fts')) {\n method = 'textSearch';\n } else if (filter?.startsWith('plfts')) {\n method = 'textSearch[plain]';\n } else if (filter?.startsWith('phfts')) {\n method = 'textSearch[phrase]';\n } else if (filter?.startsWith('wfts')) {\n method = 'textSearch[websearch]';\n } else {\n method = (filter && FILTER_MAPPINGS[filter as keyof typeof FILTER_MAPPINGS]) || 'filter';\n }\n\n return `${method}(${key}, ${value.join('.')})`;\n}\n\nfunction instrumentAuthOperation(operation: AuthOperationFn, isAdmin = false): AuthOperationFn {\n return new Proxy(operation, {\n apply(target, thisArg, argumentsList) {\n return startSpan(\n {\n name: `auth ${isAdmin ? '(admin) ' : ''}${operation.name}`,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db',\n 'db.system': 'postgresql',\n 'db.operation': `auth.${isAdmin ? 'admin.' : ''}${operation.name}`,\n },\n },\n span => {\n return Reflect.apply(target, thisArg, argumentsList)\n .then((res: unknown) => {\n if (res && typeof res === 'object' && 'error' in res && res.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n\n captureException(res.error, {\n mechanism: {\n handled: false,\n type: 'auto.db.supabase.auth',\n },\n });\n } else {\n span.setStatus({ code: SPAN_STATUS_OK });\n }\n\n span.end();\n return res;\n })\n .catch((err: unknown) => {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n span.end();\n\n captureException(err, {\n mechanism: {\n handled: false,\n type: 'auto.db.supabase.auth',\n },\n });\n\n throw err;\n })\n .then(...argumentsList);\n },\n );\n },\n });\n}\n\nfunction instrumentSupabaseAuthClient(supabaseClientInstance: SupabaseClientInstance): void {\n const auth = supabaseClientInstance.auth;\n\n if (!auth || isInstrumented(supabaseClientInstance.auth)) {\n return;\n }\n\n for (const operation of AUTH_OPERATIONS_TO_INSTRUMENT) {\n const authOperation = auth[operation];\n\n if (!authOperation) {\n continue;\n }\n\n if (typeof supabaseClientInstance.auth[operation] === 'function') {\n supabaseClientInstance.auth[operation] = instrumentAuthOperation(authOperation);\n }\n }\n\n for (const operation of AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT) {\n const authOperation = auth.admin[operation];\n\n if (!authOperation) {\n continue;\n }\n\n if (typeof supabaseClientInstance.auth.admin[operation] === 'function') {\n supabaseClientInstance.auth.admin[operation] = instrumentAuthOperation(authOperation, true);\n }\n }\n\n markAsInstrumented(supabaseClientInstance.auth);\n}\n\nfunction instrumentSupabaseClientConstructor(SupabaseClient: unknown): void {\n if (isInstrumented((SupabaseClient as SupabaseClientConstructor).prototype.from)) {\n return;\n }\n\n (SupabaseClient as SupabaseClientConstructor).prototype.from = new Proxy(\n (SupabaseClient as SupabaseClientConstructor).prototype.from,\n {\n apply(target, thisArg, argumentsList) {\n const rv = Reflect.apply(target, thisArg, argumentsList);\n const PostgRESTQueryBuilder = (rv as PostgRESTQueryBuilder).constructor;\n\n instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder as unknown as new () => PostgRESTQueryBuilder);\n\n return rv;\n },\n },\n );\n\n markAsInstrumented((SupabaseClient as SupabaseClientConstructor).prototype.from);\n}\n\nfunction instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder: PostgRESTFilterBuilder['constructor']): void {\n if (isInstrumented((PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then)) {\n return;\n }\n\n (PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then = new Proxy(\n (PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then,\n {\n apply(target, thisArg, argumentsList) {\n const operations = DB_OPERATIONS_TO_INSTRUMENT;\n const typedThis = thisArg as PostgRESTFilterBuilder;\n const operation = extractOperation(typedThis.method, typedThis.headers);\n\n if (!operations.includes(operation)) {\n return Reflect.apply(target, thisArg, argumentsList);\n }\n\n if (!typedThis?.url?.pathname || typeof typedThis.url.pathname !== 'string') {\n return Reflect.apply(target, thisArg, argumentsList);\n }\n\n const pathParts = typedThis.url.pathname.split('/');\n const table = pathParts.length > 0 ? pathParts[pathParts.length - 1] : '';\n\n const queryItems: string[] = [];\n for (const [key, value] of typedThis.url.searchParams.entries()) {\n // It's possible to have multiple entries for the same key, eg. `id=eq.7&id=eq.3`,\n // so we need to use array instead of object to collect them.\n queryItems.push(translateFiltersIntoMethods(key, value));\n }\n const body: Record = Object.create(null);\n if (isPlainObject(typedThis.body)) {\n for (const [key, value] of Object.entries(typedThis.body)) {\n body[key] = value;\n }\n }\n\n // Adding operation to the beginning of the description if it's not a `select` operation\n // For example, it can be an `insert` or `update` operation but the query can be `select(...)`\n // For `select` operations, we don't need repeat it in the description\n const description = `${operation === 'select' ? '' : `${operation}${body ? '(...) ' : ''}`}${queryItems.join(\n ' ',\n )} from(${table})`;\n\n const attributes: Record = {\n 'db.table': table,\n 'db.schema': typedThis.schema,\n 'db.url': typedThis.url.origin,\n 'db.sdk': typedThis.headers['X-Client-Info'],\n 'db.system': 'postgresql',\n 'db.operation': operation,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db',\n };\n\n if (queryItems.length) {\n attributes['db.query'] = queryItems;\n }\n\n if (Object.keys(body).length) {\n attributes['db.body'] = body;\n }\n\n return startSpan(\n {\n name: description,\n attributes,\n },\n span => {\n return (Reflect.apply(target, thisArg, []) as Promise)\n .then(\n (res: SupabaseResponse) => {\n if (span) {\n if (res && typeof res === 'object' && 'status' in res) {\n setHttpStatus(span, res.status || 500);\n }\n span.end();\n }\n\n if (res.error) {\n const err = new Error(res.error.message) as SupabaseError;\n if (res.error.code) {\n err.code = res.error.code;\n }\n if (res.error.details) {\n err.details = res.error.details;\n }\n\n const supabaseContext: Record = {};\n if (queryItems.length) {\n supabaseContext.query = queryItems;\n }\n if (Object.keys(body).length) {\n supabaseContext.body = body;\n }\n\n captureException(err, scope => {\n scope.addEventProcessor(e => {\n addExceptionMechanism(e, {\n handled: false,\n type: 'auto.db.supabase.postgres',\n });\n\n return e;\n });\n\n scope.setContext('supabase', supabaseContext);\n\n return scope;\n });\n }\n\n const breadcrumb: SupabaseBreadcrumb = {\n type: 'supabase',\n category: `db.${operation}`,\n message: description,\n };\n\n const data: Record = {};\n\n if (queryItems.length) {\n data.query = queryItems;\n }\n\n if (Object.keys(body).length) {\n data.body = body;\n }\n\n if (Object.keys(data).length) {\n breadcrumb.data = data;\n }\n\n addBreadcrumb(breadcrumb);\n\n return res;\n },\n (err: Error) => {\n // TODO: shouldn't we capture this error?\n if (span) {\n setHttpStatus(span, 500);\n span.end();\n }\n throw err;\n },\n )\n .then(...argumentsList);\n },\n );\n },\n },\n );\n\n markAsInstrumented((PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then);\n}\n\nfunction instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder: new () => PostgRESTQueryBuilder): void {\n // We need to wrap _all_ operations despite them sharing the same `PostgRESTFilterBuilder`\n // constructor, as we don't know which method will be called first, and we don't want to miss any calls.\n for (const operation of DB_OPERATIONS_TO_INSTRUMENT) {\n if (isInstrumented((PostgRESTQueryBuilder.prototype as Record)[operation])) {\n continue;\n }\n\n type PostgRESTOperation = keyof Pick;\n (PostgRESTQueryBuilder.prototype as Record)[operation as PostgRESTOperation] = new Proxy(\n (PostgRESTQueryBuilder.prototype as Record)[operation as PostgRESTOperation],\n {\n apply(target, thisArg, argumentsList) {\n const rv = Reflect.apply(target, thisArg, argumentsList);\n const PostgRESTFilterBuilder = (rv as PostgRESTFilterBuilder).constructor;\n\n DEBUG_BUILD && debug.log(`Instrumenting ${operation} operation's PostgRESTFilterBuilder`);\n\n instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder);\n\n return rv;\n },\n },\n );\n\n markAsInstrumented((PostgRESTQueryBuilder.prototype as Record)[operation]);\n }\n}\n\nexport const instrumentSupabaseClient = (supabaseClient: unknown): void => {\n if (!supabaseClient) {\n DEBUG_BUILD && debug.warn('Supabase integration was not installed because no Supabase client was provided.');\n return;\n }\n const SupabaseClientConstructor =\n supabaseClient.constructor === Function ? supabaseClient : supabaseClient.constructor;\n\n instrumentSupabaseClientConstructor(SupabaseClientConstructor);\n instrumentSupabaseAuthClient(supabaseClient as SupabaseClientInstance);\n};\n\nconst INTEGRATION_NAME = 'Supabase';\n\nconst _supabaseIntegration = ((supabaseClient: unknown) => {\n return {\n setupOnce() {\n instrumentSupabaseClient(supabaseClient);\n },\n name: INTEGRATION_NAME,\n };\n}) satisfies IntegrationFn;\n\nexport const supabaseIntegration = defineIntegration((options: { supabaseClient: any }) => {\n return _supabaseIntegration(options.supabaseClient);\n}) satisfies IntegrationFn;\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/third-party-errors-filter.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/third-party-errors-filter.js new file mode 100644 index 0000000..a85963c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/third-party-errors-filter.js @@ -0,0 +1,144 @@ +import { defineIntegration } from '../integration.js'; +import { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata.js'; +import { forEachEnvelopeItem } from '../utils/envelope.js'; +import { getFramesFromEvent } from '../utils/stacktrace.js'; + +/** + * This integration allows you to filter out, or tag error events that do not come from user code marked with a bundle key via the Sentry bundler plugins. + */ +const thirdPartyErrorFilterIntegration = defineIntegration((options) => { + return { + name: 'ThirdPartyErrorsFilter', + setup(client) { + // We need to strip metadata from stack frames before sending them to Sentry since these are client side only. + client.on('beforeEnvelope', envelope => { + forEachEnvelopeItem(envelope, (item, type) => { + if (type === 'event') { + const event = Array.isArray(item) ? (item )[1] : undefined; + + if (event) { + stripMetadataFromStackFrames(event); + item[1] = event; + } + } + }); + }); + + client.on('applyFrameMetadata', event => { + // Only apply stack frame metadata to error events + if (event.type) { + return; + } + + const stackParser = client.getOptions().stackParser; + addMetadataToStackFrames(stackParser, event); + }); + }, + + processEvent(event) { + const frameKeys = getBundleKeysForAllFramesWithFilenames(event, options.ignoreSentryInternalFrames); + + if (frameKeys) { + const arrayMethod = + options.behaviour === 'drop-error-if-contains-third-party-frames' || + options.behaviour === 'apply-tag-if-contains-third-party-frames' + ? 'some' + : 'every'; + + const behaviourApplies = frameKeys[arrayMethod](keys => !keys.some(key => options.filterKeys.includes(key))); + + if (behaviourApplies) { + const shouldDrop = + options.behaviour === 'drop-error-if-contains-third-party-frames' || + options.behaviour === 'drop-error-if-exclusively-contains-third-party-frames'; + if (shouldDrop) { + return null; + } else { + event.tags = { + ...event.tags, + third_party_code: true, + }; + } + } + } + + return event; + }, + }; +}); + +/** + * Checks if a stack frame is a Sentry internal frame by strictly matching: + * 1. The frame must be the last frame in the stack + * 2. The filename must indicate the internal helpers file + * 3. The context_line must contain the exact pattern "fn.apply(this, wrappedArguments)" + * 4. The comment pattern "Attempt to invoke user-land function" must be present in pre_context + * + */ +function isSentryInternalFrame(frame, frameIndex) { + // Only match the last frame (index 0 in reversed stack) + if (frameIndex !== 0 || !frame.context_line || !frame.filename) { + return false; + } + + if ( + !frame.filename.includes('sentry') || + !frame.filename.includes('helpers') || // Filename would look something like this: 'node_modules/@sentry/browser/build/npm/esm/helpers.js' + !frame.context_line.includes(SENTRY_INTERNAL_FN_APPLY) // Must have context_line with the exact fn.apply pattern + ) { + return false; + } + + // Check pre_context array for comment pattern + if (frame.pre_context) { + const len = frame.pre_context.length; + for (let i = 0; i < len; i++) { + if (frame.pre_context[i]?.includes(SENTRY_INTERNAL_COMMENT)) { + return true; + } + } + } + + return false; +} + +function getBundleKeysForAllFramesWithFilenames( + event, + ignoreSentryInternalFrames, +) { + const frames = getFramesFromEvent(event); + + if (!frames) { + return undefined; + } + + return frames + .filter((frame, index) => { + // Exclude frames without a filename + if (!frame.filename) { + return false; + } + // Exclude frames without location info, since these are likely native code or built-ins. + // JS frames have lineno/colno, WASM frames have instruction_addr instead. + if (frame.lineno == null && frame.colno == null && frame.instruction_addr == null) { + return false; + } + // Optionally ignore Sentry internal frames + return !ignoreSentryInternalFrames || !isSentryInternalFrame(frame, index); + }) + .map(frame => { + if (!frame.module_metadata) { + return []; + } + return Object.keys(frame.module_metadata) + .filter(key => key.startsWith(BUNDLER_PLUGIN_APP_KEY_PREFIX)) + .map(key => key.slice(BUNDLER_PLUGIN_APP_KEY_PREFIX.length)); + }); +} + +const BUNDLER_PLUGIN_APP_KEY_PREFIX = '_sentryBundlerPluginAppKey:'; +const SENTRY_INTERNAL_COMMENT = 'Attempt to invoke user-land function'; +const SENTRY_INTERNAL_FN_APPLY = 'fn.apply(this, wrappedArguments)'; + +export { thirdPartyErrorFilterIntegration }; +//# sourceMappingURL=third-party-errors-filter.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/third-party-errors-filter.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/third-party-errors-filter.js.map new file mode 100644 index 0000000..61e04ee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/third-party-errors-filter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"third-party-errors-filter.js","sources":["../../../src/integrations/third-party-errors-filter.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\nimport type { EventItem } from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { forEachEnvelopeItem } from '../utils/envelope';\nimport { getFramesFromEvent } from '../utils/stacktrace';\n\ninterface Options {\n /**\n * Keys that have been provided in the Sentry bundler plugin via the the `applicationKey` option, identifying your bundles.\n *\n * - Webpack plugin: https://www.npmjs.com/package/@sentry/webpack-plugin#applicationkey\n * - Vite plugin: https://www.npmjs.com/package/@sentry/vite-plugin#applicationkey\n * - Esbuild plugin: https://www.npmjs.com/package/@sentry/esbuild-plugin#applicationkey\n * - Rollup plugin: https://www.npmjs.com/package/@sentry/rollup-plugin#applicationkey\n */\n filterKeys: string[];\n\n /**\n * Defines how the integration should behave. \"Third-Party Stack Frames\" are stack frames that did not come from files marked with a matching bundle key.\n *\n * You can define the behaviour with one of 4 modes:\n * - `drop-error-if-contains-third-party-frames`: Drop error events that contain at least one third-party stack frame.\n * - `drop-error-if-exclusively-contains-third-party-frames`: Drop error events that exclusively contain third-party stack frames.\n * - `apply-tag-if-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains at least one third-party stack frame.\n * - `apply-tag-if-exclusively-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains exclusively third-party stack frames.\n *\n * If you chose the mode to only apply tags, the tags can then be used in Sentry to filter your issue stream by entering `!third_party_code:True` in the search bar.\n */\n behaviour:\n | 'drop-error-if-contains-third-party-frames'\n | 'drop-error-if-exclusively-contains-third-party-frames'\n | 'apply-tag-if-contains-third-party-frames'\n | 'apply-tag-if-exclusively-contains-third-party-frames';\n\n /**\n * @experimental\n * If set to true, the integration will ignore frames that are internal to the Sentry SDK from the third-party frame detection.\n * Note that enabling this option might lead to errors being misclassified as third-party errors.\n */\n ignoreSentryInternalFrames?: boolean;\n}\n\n/**\n * This integration allows you to filter out, or tag error events that do not come from user code marked with a bundle key via the Sentry bundler plugins.\n */\nexport const thirdPartyErrorFilterIntegration = defineIntegration((options: Options) => {\n return {\n name: 'ThirdPartyErrorsFilter',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n\n processEvent(event) {\n const frameKeys = getBundleKeysForAllFramesWithFilenames(event, options.ignoreSentryInternalFrames);\n\n if (frameKeys) {\n const arrayMethod =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'apply-tag-if-contains-third-party-frames'\n ? 'some'\n : 'every';\n\n const behaviourApplies = frameKeys[arrayMethod](keys => !keys.some(key => options.filterKeys.includes(key)));\n\n if (behaviourApplies) {\n const shouldDrop =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'drop-error-if-exclusively-contains-third-party-frames';\n if (shouldDrop) {\n return null;\n } else {\n event.tags = {\n ...event.tags,\n third_party_code: true,\n };\n }\n }\n }\n\n return event;\n },\n };\n});\n\n/**\n * Checks if a stack frame is a Sentry internal frame by strictly matching:\n * 1. The frame must be the last frame in the stack\n * 2. The filename must indicate the internal helpers file\n * 3. The context_line must contain the exact pattern \"fn.apply(this, wrappedArguments)\"\n * 4. The comment pattern \"Attempt to invoke user-land function\" must be present in pre_context\n *\n */\nfunction isSentryInternalFrame(frame: StackFrame, frameIndex: number): boolean {\n // Only match the last frame (index 0 in reversed stack)\n if (frameIndex !== 0 || !frame.context_line || !frame.filename) {\n return false;\n }\n\n if (\n !frame.filename.includes('sentry') ||\n !frame.filename.includes('helpers') || // Filename would look something like this: 'node_modules/@sentry/browser/build/npm/esm/helpers.js'\n !frame.context_line.includes(SENTRY_INTERNAL_FN_APPLY) // Must have context_line with the exact fn.apply pattern\n ) {\n return false;\n }\n\n // Check pre_context array for comment pattern\n if (frame.pre_context) {\n const len = frame.pre_context.length;\n for (let i = 0; i < len; i++) {\n if (frame.pre_context[i]?.includes(SENTRY_INTERNAL_COMMENT)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction getBundleKeysForAllFramesWithFilenames(\n event: Event,\n ignoreSentryInternalFrames?: boolean,\n): string[][] | undefined {\n const frames = getFramesFromEvent(event);\n\n if (!frames) {\n return undefined;\n }\n\n return frames\n .filter((frame, index) => {\n // Exclude frames without a filename\n if (!frame.filename) {\n return false;\n }\n // Exclude frames without location info, since these are likely native code or built-ins.\n // JS frames have lineno/colno, WASM frames have instruction_addr instead.\n if (frame.lineno == null && frame.colno == null && frame.instruction_addr == null) {\n return false;\n }\n // Optionally ignore Sentry internal frames\n return !ignoreSentryInternalFrames || !isSentryInternalFrame(frame, index);\n })\n .map(frame => {\n if (!frame.module_metadata) {\n return [];\n }\n return Object.keys(frame.module_metadata)\n .filter(key => key.startsWith(BUNDLER_PLUGIN_APP_KEY_PREFIX))\n .map(key => key.slice(BUNDLER_PLUGIN_APP_KEY_PREFIX.length));\n });\n}\n\nconst BUNDLER_PLUGIN_APP_KEY_PREFIX = '_sentryBundlerPluginAppKey:';\nconst SENTRY_INTERNAL_COMMENT = 'Attempt to invoke user-land function';\nconst SENTRY_INTERNAL_FN_APPLY = 'fn.apply(this, wrappedArguments)';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/zoderrors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/zoderrors.js new file mode 100644 index 0000000..85c57fc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/zoderrors.js @@ -0,0 +1,186 @@ +import { defineIntegration } from '../integration.js'; +import { isError } from '../utils/is.js'; +import { truncate } from '../utils/string.js'; + +const DEFAULT_LIMIT = 10; +const INTEGRATION_NAME = 'ZodErrors'; + +/** + * Simplified ZodIssue type definition + */ + +function originalExceptionIsZodError(originalException) { + return ( + isError(originalException) && + originalException.name === 'ZodError' && + Array.isArray((originalException ).issues) + ); +} + +/** + * Formats child objects or arrays to a string + * that is preserved when sent to Sentry. + * + * Without this, we end up with something like this in Sentry: + * + * [ + * [Object], + * [Object], + * [Object], + * [Object] + * ] + */ +function flattenIssue(issue) { + return { + ...issue, + path: 'path' in issue && Array.isArray(issue.path) ? issue.path.join('.') : undefined, + keys: 'keys' in issue ? JSON.stringify(issue.keys) : undefined, + unionErrors: 'unionErrors' in issue ? JSON.stringify(issue.unionErrors) : undefined, + }; +} + +/** + * Takes ZodError issue path array and returns a flattened version as a string. + * This makes it easier to display paths within a Sentry error message. + * + * Array indexes are normalized to reduce duplicate entries + * + * @param path ZodError issue path + * @returns flattened path + * + * @example + * flattenIssuePath([0, 'foo', 1, 'bar']) // -> '.foo..bar' + */ +function flattenIssuePath(path) { + return path + .map(p => { + if (typeof p === 'number') { + return ''; + } else { + return p; + } + }) + .join('.'); +} + +/** + * Zod error message is a stringified version of ZodError.issues + * This doesn't display well in the Sentry UI. Replace it with something shorter. + */ +function formatIssueMessage(zodError) { + const errorKeyMap = new Set(); + for (const iss of zodError.issues) { + const issuePath = flattenIssuePath(iss.path); + if (issuePath.length > 0) { + errorKeyMap.add(issuePath); + } + } + + const errorKeys = Array.from(errorKeyMap); + if (errorKeys.length === 0) { + // If there are no keys, then we're likely validating the root + // variable rather than a key within an object. This attempts + // to extract what type it was that failed to validate. + // For example, z.string().parse(123) would return "string" here. + let rootExpectedType = 'variable'; + if (zodError.issues.length > 0) { + const iss = zodError.issues[0]; + if (iss !== undefined && 'expected' in iss && typeof iss.expected === 'string') { + rootExpectedType = iss.expected; + } + } + return `Failed to validate ${rootExpectedType}`; + } + return `Failed to validate keys: ${truncate(errorKeys.join(', '), 100)}`; +} + +/** + * Applies ZodError issues to an event extra and replaces the error message + */ +function applyZodErrorsToEvent( + limit, + saveZodIssuesAsAttachment = false, + event, + hint, +) { + if ( + !event.exception?.values || + !hint.originalException || + !originalExceptionIsZodError(hint.originalException) || + hint.originalException.issues.length === 0 + ) { + return event; + } + + try { + const issuesToFlatten = saveZodIssuesAsAttachment + ? hint.originalException.issues + : hint.originalException.issues.slice(0, limit); + const flattenedIssues = issuesToFlatten.map(flattenIssue); + + if (saveZodIssuesAsAttachment) { + // Sometimes having the full error details can be helpful. + // Attachments have much higher limits, so we can include the full list of issues. + if (!Array.isArray(hint.attachments)) { + hint.attachments = []; + } + hint.attachments.push({ + filename: 'zod_issues.json', + data: JSON.stringify({ + issues: flattenedIssues, + }), + }); + } + + return { + ...event, + exception: { + ...event.exception, + values: [ + { + ...event.exception.values[0], + value: formatIssueMessage(hint.originalException), + }, + ...event.exception.values.slice(1), + ], + }, + extra: { + ...event.extra, + 'zoderror.issues': flattenedIssues.slice(0, limit), + }, + }; + } catch (e) { + // Hopefully we never throw errors here, but record it + // with the event just in case. + return { + ...event, + extra: { + ...event.extra, + 'zoderrors sentry integration parse error': { + message: 'an exception was thrown while processing ZodError within applyZodErrorsToEvent()', + error: e instanceof Error ? `${e.name}: ${e.message}\n${e.stack}` : 'unknown', + }, + }, + }; + } +} + +const _zodErrorsIntegration = ((options = {}) => { + const limit = options.limit ?? DEFAULT_LIMIT; + + return { + name: INTEGRATION_NAME, + processEvent(originalEvent, hint) { + const processedEvent = applyZodErrorsToEvent(limit, options.saveZodIssuesAsAttachment, originalEvent, hint); + return processedEvent; + }, + }; +}) ; + +/** + * Sentry integration to process Zod errors, making them easier to work with in Sentry. + */ +const zodErrorsIntegration = defineIntegration(_zodErrorsIntegration); + +export { applyZodErrorsToEvent, flattenIssue, flattenIssuePath, formatIssueMessage, zodErrorsIntegration }; +//# sourceMappingURL=zoderrors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/zoderrors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/zoderrors.js.map new file mode 100644 index 0000000..5f993ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/integrations/zoderrors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zoderrors.js","sources":["../../../src/integrations/zoderrors.ts"],"sourcesContent":["import { defineIntegration } from '../integration';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { isError } from '../utils/is';\nimport { truncate } from '../utils/string';\n\ninterface ZodErrorsOptions {\n key?: string;\n /**\n * Limits the number of Zod errors inlined in each Sentry event.\n *\n * @default 10\n */\n limit?: number;\n /**\n * Save full list of Zod issues as an attachment in Sentry\n *\n * @default false\n */\n saveZodIssuesAsAttachment?: boolean;\n}\n\nconst DEFAULT_LIMIT = 10;\nconst INTEGRATION_NAME = 'ZodErrors';\n\n/**\n * Simplified ZodIssue type definition\n */\ninterface ZodIssue {\n path: (string | number)[];\n message?: string;\n expected?: unknown;\n received?: unknown;\n unionErrors?: unknown[];\n keys?: unknown[];\n invalid_literal?: unknown;\n}\n\ninterface ZodError extends Error {\n issues: ZodIssue[];\n}\n\nfunction originalExceptionIsZodError(originalException: unknown): originalException is ZodError {\n return (\n isError(originalException) &&\n originalException.name === 'ZodError' &&\n Array.isArray((originalException as ZodError).issues)\n );\n}\n\ntype SingleLevelZodIssue = {\n [P in keyof T]: T[P] extends string | number | undefined\n ? T[P]\n : T[P] extends unknown[]\n ? string | undefined\n : unknown;\n};\n\n/**\n * Formats child objects or arrays to a string\n * that is preserved when sent to Sentry.\n *\n * Without this, we end up with something like this in Sentry:\n *\n * [\n * [Object],\n * [Object],\n * [Object],\n * [Object]\n * ]\n */\nexport function flattenIssue(issue: ZodIssue): SingleLevelZodIssue {\n return {\n ...issue,\n path: 'path' in issue && Array.isArray(issue.path) ? issue.path.join('.') : undefined,\n keys: 'keys' in issue ? JSON.stringify(issue.keys) : undefined,\n unionErrors: 'unionErrors' in issue ? JSON.stringify(issue.unionErrors) : undefined,\n };\n}\n\n/**\n * Takes ZodError issue path array and returns a flattened version as a string.\n * This makes it easier to display paths within a Sentry error message.\n *\n * Array indexes are normalized to reduce duplicate entries\n *\n * @param path ZodError issue path\n * @returns flattened path\n *\n * @example\n * flattenIssuePath([0, 'foo', 1, 'bar']) // -> '.foo..bar'\n */\nexport function flattenIssuePath(path: Array): string {\n return path\n .map(p => {\n if (typeof p === 'number') {\n return '';\n } else {\n return p;\n }\n })\n .join('.');\n}\n\n/**\n * Zod error message is a stringified version of ZodError.issues\n * This doesn't display well in the Sentry UI. Replace it with something shorter.\n */\nexport function formatIssueMessage(zodError: ZodError): string {\n const errorKeyMap = new Set();\n for (const iss of zodError.issues) {\n const issuePath = flattenIssuePath(iss.path);\n if (issuePath.length > 0) {\n errorKeyMap.add(issuePath);\n }\n }\n\n const errorKeys = Array.from(errorKeyMap);\n if (errorKeys.length === 0) {\n // If there are no keys, then we're likely validating the root\n // variable rather than a key within an object. This attempts\n // to extract what type it was that failed to validate.\n // For example, z.string().parse(123) would return \"string\" here.\n let rootExpectedType = 'variable';\n if (zodError.issues.length > 0) {\n const iss = zodError.issues[0];\n if (iss !== undefined && 'expected' in iss && typeof iss.expected === 'string') {\n rootExpectedType = iss.expected;\n }\n }\n return `Failed to validate ${rootExpectedType}`;\n }\n return `Failed to validate keys: ${truncate(errorKeys.join(', '), 100)}`;\n}\n\n/**\n * Applies ZodError issues to an event extra and replaces the error message\n */\nexport function applyZodErrorsToEvent(\n limit: number,\n saveZodIssuesAsAttachment: boolean = false,\n event: Event,\n hint: EventHint,\n): Event {\n if (\n !event.exception?.values ||\n !hint.originalException ||\n !originalExceptionIsZodError(hint.originalException) ||\n hint.originalException.issues.length === 0\n ) {\n return event;\n }\n\n try {\n const issuesToFlatten = saveZodIssuesAsAttachment\n ? hint.originalException.issues\n : hint.originalException.issues.slice(0, limit);\n const flattenedIssues = issuesToFlatten.map(flattenIssue);\n\n if (saveZodIssuesAsAttachment) {\n // Sometimes having the full error details can be helpful.\n // Attachments have much higher limits, so we can include the full list of issues.\n if (!Array.isArray(hint.attachments)) {\n hint.attachments = [];\n }\n hint.attachments.push({\n filename: 'zod_issues.json',\n data: JSON.stringify({\n issues: flattenedIssues,\n }),\n });\n }\n\n return {\n ...event,\n exception: {\n ...event.exception,\n values: [\n {\n ...event.exception.values[0],\n value: formatIssueMessage(hint.originalException),\n },\n ...event.exception.values.slice(1),\n ],\n },\n extra: {\n ...event.extra,\n 'zoderror.issues': flattenedIssues.slice(0, limit),\n },\n };\n } catch (e) {\n // Hopefully we never throw errors here, but record it\n // with the event just in case.\n return {\n ...event,\n extra: {\n ...event.extra,\n 'zoderrors sentry integration parse error': {\n message: 'an exception was thrown while processing ZodError within applyZodErrorsToEvent()',\n error: e instanceof Error ? `${e.name}: ${e.message}\\n${e.stack}` : 'unknown',\n },\n },\n };\n }\n}\n\nconst _zodErrorsIntegration = ((options: ZodErrorsOptions = {}) => {\n const limit = options.limit ?? DEFAULT_LIMIT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent, hint): Event {\n const processedEvent = applyZodErrorsToEvent(limit, options.saveZodIssuesAsAttachment, originalEvent, hint);\n return processedEvent;\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Sentry integration to process Zod errors, making them easier to work with in Sentry.\n */\nexport const zodErrorsIntegration = defineIntegration(_zodErrorsIntegration);\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/console-integration.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/console-integration.js new file mode 100644 index 0000000..52cbeb4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/console-integration.js @@ -0,0 +1,90 @@ +import { getClient } from '../currentScopes.js'; +import { DEBUG_BUILD } from '../debug-build.js'; +import { addConsoleInstrumentationHandler } from '../instrument/console.js'; +import { defineIntegration } from '../integration.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes.js'; +import { CONSOLE_LEVELS, debug } from '../utils/debug-logger.js'; +import { _INTERNAL_captureLog } from './internal.js'; +import { formatConsoleArgs, hasConsoleSubstitutions, createConsoleTemplateAttributes } from './utils.js'; + +const INTEGRATION_NAME = 'ConsoleLogs'; + +const DEFAULT_ATTRIBUTES = { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.log.console', +}; + +const _consoleLoggingIntegration = ((options = {}) => { + const levels = options.levels || CONSOLE_LEVELS; + + return { + name: INTEGRATION_NAME, + setup(client) { + const { enableLogs, normalizeDepth = 3, normalizeMaxBreadth = 1000 } = client.getOptions(); + if (!enableLogs) { + DEBUG_BUILD && debug.warn('`enableLogs` is not enabled, ConsoleLogs integration disabled'); + return; + } + + addConsoleInstrumentationHandler(({ args, level }) => { + if (getClient() !== client || !levels.includes(level)) { + return; + } + + const firstArg = args[0]; + const followingArgs = args.slice(1); + + if (level === 'assert') { + if (!firstArg) { + const assertionMessage = + followingArgs.length > 0 + ? `Assertion failed: ${formatConsoleArgs(followingArgs, normalizeDepth, normalizeMaxBreadth)}` + : 'Assertion failed'; + _INTERNAL_captureLog({ level: 'error', message: assertionMessage, attributes: DEFAULT_ATTRIBUTES }); + } + return; + } + + const isLevelLog = level === 'log'; + + const shouldGenerateTemplate = + args.length > 1 && typeof args[0] === 'string' && !hasConsoleSubstitutions(args[0]); + const attributes = { + ...DEFAULT_ATTRIBUTES, + ...(shouldGenerateTemplate ? createConsoleTemplateAttributes(firstArg, followingArgs) : {}), + }; + + _INTERNAL_captureLog({ + level: isLevelLog ? 'info' : level, + message: formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth), + severityNumber: isLevelLog ? 10 : undefined, + attributes, + }); + }); + }, + }; +}) ; + +/** + * Captures calls to the `console` API as logs in Sentry. Requires the `enableLogs` option to be enabled. + * + * @experimental This feature is experimental and may be changed or removed in future versions. + * + * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`, + * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which + * levels are captured. + * + * @example + * + * ```ts + * import * as Sentry from '@sentry/browser'; + * + * Sentry.init({ + * enableLogs: true, + * integrations: [Sentry.consoleLoggingIntegration({ levels: ['error', 'warn'] })], + * }); + * ``` + */ +const consoleLoggingIntegration = defineIntegration(_consoleLoggingIntegration); + +export { consoleLoggingIntegration }; +//# sourceMappingURL=console-integration.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/console-integration.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/console-integration.js.map new file mode 100644 index 0000000..eb7b974 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/console-integration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"console-integration.js","sources":["../../../src/logs/console-integration.ts"],"sourcesContent":["import { getClient } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS, debug } from '../utils/debug-logger';\nimport { _INTERNAL_captureLog } from './internal';\nimport { createConsoleTemplateAttributes, formatConsoleArgs, hasConsoleSubstitutions } from './utils';\n\ninterface CaptureConsoleOptions {\n levels: ConsoleLevel[];\n}\n\nconst INTEGRATION_NAME = 'ConsoleLogs';\n\nconst DEFAULT_ATTRIBUTES = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.log.console',\n};\n\nconst _consoleLoggingIntegration = ((options: Partial = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const { enableLogs, normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = client.getOptions();\n if (!enableLogs) {\n DEBUG_BUILD && debug.warn('`enableLogs` is not enabled, ConsoleLogs integration disabled');\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n const firstArg = args[0];\n const followingArgs = args.slice(1);\n\n if (level === 'assert') {\n if (!firstArg) {\n const assertionMessage =\n followingArgs.length > 0\n ? `Assertion failed: ${formatConsoleArgs(followingArgs, normalizeDepth, normalizeMaxBreadth)}`\n : 'Assertion failed';\n _INTERNAL_captureLog({ level: 'error', message: assertionMessage, attributes: DEFAULT_ATTRIBUTES });\n }\n return;\n }\n\n const isLevelLog = level === 'log';\n\n const shouldGenerateTemplate =\n args.length > 1 && typeof args[0] === 'string' && !hasConsoleSubstitutions(args[0]);\n const attributes = {\n ...DEFAULT_ATTRIBUTES,\n ...(shouldGenerateTemplate ? createConsoleTemplateAttributes(firstArg, followingArgs) : {}),\n };\n\n _INTERNAL_captureLog({\n level: isLevelLog ? 'info' : level,\n message: formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth),\n severityNumber: isLevelLog ? 10 : undefined,\n attributes,\n });\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Captures calls to the `console` API as logs in Sentry. Requires the `enableLogs` option to be enabled.\n *\n * @experimental This feature is experimental and may be changed or removed in future versions.\n *\n * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`,\n * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which\n * levels are captured.\n *\n * @example\n *\n * ```ts\n * import * as Sentry from '@sentry/browser';\n *\n * Sentry.init({\n * enableLogs: true,\n * integrations: [Sentry.consoleLoggingIntegration({ levels: ['error', 'warn'] })],\n * });\n * ```\n */\nexport const consoleLoggingIntegration = defineIntegration(_consoleLoggingIntegration);\n"],"names":[],"mappings":";;;;;;;;;AAeA,MAAM,gBAAA,GAAmB,aAAa;;AAEtC,MAAM,qBAAqB;AAC3B,EAAE,CAAC,gCAAgC,GAAG,kBAAkB;AACxD,CAAC;;AAED,MAAM,0BAAA,IAA8B,CAAC,OAAO,GAAmC,EAAE,KAAK;AACtF,EAAE,MAAM,MAAA,GAAS,OAAO,CAAC,MAAA,IAAU,cAAc;;AAEjD,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,MAAM,EAAE,UAAU,EAAE,cAAA,GAAiB,CAAC,EAAE,mBAAA,GAAsB,MAAM,GAAI,MAAM,CAAC,UAAU,EAAE;AACjG,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,eAAe,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC;AAClG,QAAQ;AACR,MAAM;;AAEN,MAAM,gCAAgC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAA,EAAO,KAAK;AAC5D,QAAQ,IAAI,SAAS,OAAO,MAAA,IAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/D,UAAU;AACV,QAAQ;;AAER,QAAQ,MAAM,QAAA,GAAW,IAAI,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;AAE3C,QAAQ,IAAI,KAAA,KAAU,QAAQ,EAAE;AAChC,UAAU,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAY,MAAM,gBAAA;AAClB,cAAc,aAAa,CAAC,MAAA,GAAS;AACrC,kBAAkB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,aAAa,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AAC7G,kBAAA,kBAAA;AACA,YAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,CAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;;AAEA,QAAA,MAAA,UAAA,GAAA,KAAA,KAAA,KAAA;;AAEA,QAAA,MAAA,sBAAA;AACA,UAAA,IAAA,CAAA,MAAA,GAAA,CAAA,IAAA,OAAA,IAAA,CAAA,CAAA,CAAA,KAAA,QAAA,IAAA,CAAA,uBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AACA,QAAA,MAAA,UAAA,GAAA;AACA,UAAA,GAAA,kBAAA;AACA,UAAA,IAAA,sBAAA,GAAA,+BAAA,CAAA,QAAA,EAAA,aAAA,CAAA,GAAA,EAAA,CAAA;AACA,SAAA;;AAEA,QAAA,oBAAA,CAAA;AACA,UAAA,KAAA,EAAA,UAAA,GAAA,MAAA,GAAA,KAAA;AACA,UAAA,OAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,cAAA,EAAA,mBAAA,CAAA;AACA,UAAA,cAAA,EAAA,UAAA,GAAA,EAAA,GAAA,SAAA;AACA,UAAA,UAAA;AACA,SAAA,CAAA;AACA,MAAA,CAAA,CAAA;AACA,IAAA,CAAA;AACA,GAAA;AACA,CAAA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAA,yBAAA,GAAA,iBAAA,CAAA,0BAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/constants.js new file mode 100644 index 0000000..490b2fc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/constants.js @@ -0,0 +1,16 @@ +/** + * Maps a log severity level to a log severity number. + * + * @see LogSeverityLevel + */ +const SEVERITY_TEXT_TO_SEVERITY_NUMBER = { + trace: 1, + debug: 5, + info: 9, + warn: 13, + error: 17, + fatal: 21, +}; + +export { SEVERITY_TEXT_TO_SEVERITY_NUMBER }; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/constants.js.map new file mode 100644 index 0000000..720483a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../src/logs/constants.ts"],"sourcesContent":["import type { LogSeverityLevel } from '../types-hoist/log';\n\n/**\n * Maps a log severity level to a log severity number.\n *\n * @see LogSeverityLevel\n */\nexport const SEVERITY_TEXT_TO_SEVERITY_NUMBER: Partial> = {\n trace: 1,\n debug: 5,\n info: 9,\n warn: 13,\n error: 17,\n fatal: 21,\n};\n"],"names":[],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,gCAAgC,GAA8C;AAC3F,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,KAAK,EAAE,EAAE;AACX;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/envelope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/envelope.js new file mode 100644 index 0000000..a568116 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/envelope.js @@ -0,0 +1,57 @@ +import { dsnToString } from '../utils/dsn.js'; +import { createEnvelope } from '../utils/envelope.js'; + +/** + * Creates a log container envelope item for a list of logs. + * + * @param items - The logs to include in the envelope. + * @returns The created log container envelope item. + */ +function createLogContainerEnvelopeItem(items) { + return [ + { + type: 'log', + item_count: items.length, + content_type: 'application/vnd.sentry.items.log+json', + }, + { + items, + }, + ]; +} + +/** + * Creates an envelope for a list of logs. + * + * Logs from multiple traces can be included in the same envelope. + * + * @param logs - The logs to include in the envelope. + * @param metadata - The metadata to include in the envelope. + * @param tunnel - The tunnel to include in the envelope. + * @param dsn - The DSN to include in the envelope. + * @returns The created envelope. + */ +function createLogEnvelope( + logs, + metadata, + tunnel, + dsn, +) { + const headers = {}; + + if (metadata?.sdk) { + headers.sdk = { + name: metadata.sdk.name, + version: metadata.sdk.version, + }; + } + + if (!!tunnel && !!dsn) { + headers.dsn = dsnToString(dsn); + } + + return createEnvelope(headers, [createLogContainerEnvelopeItem(logs)]); +} + +export { createLogContainerEnvelopeItem, createLogEnvelope }; +//# sourceMappingURL=envelope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/envelope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/envelope.js.map new file mode 100644 index 0000000..caa4dbd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/envelope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"envelope.js","sources":["../../../src/logs/envelope.ts"],"sourcesContent":["import type { DsnComponents } from '../types-hoist/dsn';\nimport type { LogContainerItem, LogEnvelope } from '../types-hoist/envelope';\nimport type { SerializedLog } from '../types-hoist/log';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport { dsnToString } from '../utils/dsn';\nimport { createEnvelope } from '../utils/envelope';\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 */\nexport function createLogContainerEnvelopeItem(items: Array): LogContainerItem {\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 */\nexport function createLogEnvelope(\n logs: Array,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): LogEnvelope {\n const headers: LogEnvelope[0] = {};\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"],"names":[],"mappings":";;;AAOA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,CAAC,KAAK,EAA0C;AAC9F,EAAE,OAAO;AACT,IAAI;AACJ,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,UAAU,EAAE,KAAK,CAAC,MAAM;AAC9B,MAAM,YAAY,EAAE,uCAAuC;AAC3D,KAAK;AACL,IAAI;AACJ,MAAM,KAAK;AACX,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB;AACjC,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,MAAM;AACR,EAAE,GAAG;AACL,EAAe;AACf,EAAE,MAAM,OAAO,GAAmB,EAAE;;AAEpC,EAAE,IAAI,QAAQ,EAAE,GAAG,EAAE;AACrB,IAAI,OAAO,CAAC,GAAA,GAAM;AAClB,MAAM,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI;AAC7B,MAAM,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO;AACnC,KAAK;AACL,EAAE;;AAEF,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE;AACzB,IAAI,OAAO,CAAC,GAAA,GAAM,WAAW,CAAC,GAAG,CAAC;AAClC,EAAE;;AAEF,EAAE,OAAO,cAAc,CAAc,OAAO,EAAE,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/internal.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/internal.js new file mode 100644 index 0000000..c313d20 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/internal.js @@ -0,0 +1,214 @@ +import { serializeAttributes } from '../attributes.js'; +import { getGlobalSingleton } from '../carrier.js'; +import { getCurrentScope, getClient, getIsolationScope } from '../currentScopes.js'; +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug, consoleSandbox } from '../utils/debug-logger.js'; +import { isParameterizedString } from '../utils/is.js'; +import { getCombinedScopeData } from '../utils/scopeData.js'; +import { _getSpanForScope } from '../utils/spanOnScope.js'; +import { timestampInSeconds } from '../utils/time.js'; +import { _getTraceInfoFromScope } from '../utils/trace-info.js'; +import { SEVERITY_TEXT_TO_SEVERITY_NUMBER } from './constants.js'; +import { createLogEnvelope } from './envelope.js'; + +const MAX_LOG_BUFFER_SIZE = 100; + +/** + * Sets a log attribute if the value exists and the attribute key is not already present. + * + * @param logAttributes - The log attributes object to modify. + * @param key - The attribute key to set. + * @param value - The value to set (only sets if truthy and key not present). + * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true. + */ +function setLogAttribute( + logAttributes, + key, + value, + setEvenIfPresent = true, +) { + if (value && (!logAttributes[key] || setEvenIfPresent)) { + logAttributes[key] = value; + } +} + +/** + * Captures a serialized log event and adds it to the log buffer for the given client. + * + * @param client - A client. Uses the current client if not provided. + * @param serializedLog - The serialized log event to capture. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_captureSerializedLog(client, serializedLog) { + const bufferMap = _getBufferMap(); + const logBuffer = _INTERNAL_getLogBuffer(client); + + if (logBuffer === undefined) { + bufferMap.set(client, [serializedLog]); + } else { + if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) { + _INTERNAL_flushLogsBuffer(client, logBuffer); + bufferMap.set(client, [serializedLog]); + } else { + bufferMap.set(client, [...logBuffer, serializedLog]); + } + } +} + +/** + * Captures a log event and sends it to Sentry. + * + * @param log - The log event to capture. + * @param scope - A scope. Uses the current scope if not provided. + * @param client - A client. Uses the current client if not provided. + * @param captureSerializedLog - A function to capture the serialized log. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_captureLog( + beforeLog, + currentScope = getCurrentScope(), + captureSerializedLog = _INTERNAL_captureSerializedLog, +) { + const client = currentScope?.getClient() ?? getClient(); + if (!client) { + DEBUG_BUILD && debug.warn('No client available to capture log.'); + return; + } + + const { release, environment, enableLogs = false, beforeSendLog } = client.getOptions(); + if (!enableLogs) { + DEBUG_BUILD && debug.warn('logging option not enabled, log will not be captured.'); + return; + } + + const [, traceContext] = _getTraceInfoFromScope(client, currentScope); + + const processedLogAttributes = { + ...beforeLog.attributes, + }; + + const { + user: { id, email, username }, + attributes: scopeAttributes = {}, + } = getCombinedScopeData(getIsolationScope(), currentScope); + + setLogAttribute(processedLogAttributes, 'user.id', id, false); + setLogAttribute(processedLogAttributes, 'user.email', email, false); + setLogAttribute(processedLogAttributes, 'user.name', username, false); + + setLogAttribute(processedLogAttributes, 'sentry.release', release); + setLogAttribute(processedLogAttributes, 'sentry.environment', environment); + + const { name, version } = client.getSdkMetadata()?.sdk ?? {}; + setLogAttribute(processedLogAttributes, 'sentry.sdk.name', name); + setLogAttribute(processedLogAttributes, 'sentry.sdk.version', version); + + const replay = client.getIntegrationByName + +('Replay'); + + const replayId = replay?.getReplayId(true); + setLogAttribute(processedLogAttributes, 'sentry.replay_id', replayId); + + if (replayId && replay?.getRecordingMode() === 'buffer') { + // We send this so we can identify cases where the replayId is attached but the replay itself might not have been sent to Sentry + setLogAttribute(processedLogAttributes, 'sentry._internal.replay_is_buffering', true); + } + + const beforeLogMessage = beforeLog.message; + if (isParameterizedString(beforeLogMessage)) { + const { __sentry_template_string__, __sentry_template_values__ = [] } = beforeLogMessage; + if (__sentry_template_values__?.length) { + processedLogAttributes['sentry.message.template'] = __sentry_template_string__; + } + __sentry_template_values__.forEach((param, index) => { + processedLogAttributes[`sentry.message.parameter.${index}`] = param; + }); + } + + const span = _getSpanForScope(currentScope); + // Add the parent span ID to the log attributes for trace context + setLogAttribute(processedLogAttributes, 'sentry.trace.parent_span_id', span?.spanContext().spanId); + + const processedLog = { ...beforeLog, attributes: processedLogAttributes }; + + client.emit('beforeCaptureLog', processedLog); + + // We need to wrap this in `consoleSandbox` to avoid recursive calls to `beforeSendLog` + const log = beforeSendLog ? consoleSandbox(() => beforeSendLog(processedLog)) : processedLog; + if (!log) { + client.recordDroppedEvent('before_send', 'log_item', 1); + DEBUG_BUILD && debug.warn('beforeSendLog returned null, log will not be captured.'); + return; + } + + const { level, message, attributes: logAttributes = {}, severityNumber } = log; + + const serializedLog = { + timestamp: timestampInSeconds(), + level, + body: message, + trace_id: traceContext?.trace_id, + severity_number: severityNumber ?? SEVERITY_TEXT_TO_SEVERITY_NUMBER[level], + attributes: { + ...serializeAttributes(scopeAttributes), + ...serializeAttributes(logAttributes, true), + }, + }; + + captureSerializedLog(client, serializedLog); + + client.emit('afterCaptureLog', log); +} + +/** + * Flushes the logs buffer to Sentry. + * + * @param client - A client. + * @param maybeLogBuffer - A log buffer. Uses the log buffer for the given client if not provided. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_flushLogsBuffer(client, maybeLogBuffer) { + const logBuffer = maybeLogBuffer ?? _INTERNAL_getLogBuffer(client) ?? []; + if (logBuffer.length === 0) { + return; + } + + const clientOptions = client.getOptions(); + const envelope = createLogEnvelope(logBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn()); + + // Clear the log buffer after envelopes have been constructed. + _getBufferMap().set(client, []); + + client.emit('flushLogs'); + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + client.sendEnvelope(envelope); +} + +/** + * Returns the log buffer for a given client. + * + * Exported for testing purposes. + * + * @param client - The client to get the log buffer for. + * @returns The log buffer for the given client. + */ +function _INTERNAL_getLogBuffer(client) { + return _getBufferMap().get(client); +} + +function _getBufferMap() { + // The reference to the Client <> LogBuffer map is stored on the carrier to ensure it's always the same + return getGlobalSingleton('clientToLogBufferMap', () => new WeakMap()); +} + +export { _INTERNAL_captureLog, _INTERNAL_captureSerializedLog, _INTERNAL_flushLogsBuffer, _INTERNAL_getLogBuffer }; +//# sourceMappingURL=internal.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/internal.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/internal.js.map new file mode 100644 index 0000000..9046ee6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/internal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal.js","sources":["../../../src/logs/internal.ts"],"sourcesContent":["import { serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Log, SerializedLog } from '../types-hoist/log';\nimport { consoleSandbox, debug } from '../utils/debug-logger';\nimport { isParameterizedString } from '../utils/is';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { SEVERITY_TEXT_TO_SEVERITY_NUMBER } from './constants';\nimport { createLogEnvelope } from './envelope';\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: Record,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\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 */\nexport function _INTERNAL_captureSerializedLog(client: Client, serializedLog: SerializedLog): void {\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 */\nexport function _INTERNAL_captureLog(\n beforeLog: Log,\n currentScope = getCurrentScope(),\n captureSerializedLog: (client: Client, log: SerializedLog) => void = _INTERNAL_captureSerializedLog,\n): void {\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 Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\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 serializedLog: SerializedLog = {\n timestamp: timestampInSeconds(),\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 },\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 */\nexport function _INTERNAL_flushLogsBuffer(client: Client, maybeLogBuffer?: Array): void {\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 */\nexport function _INTERNAL_getLogBuffer(client: Client): Array | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap> {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/public-api.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/public-api.js new file mode 100644 index 0000000..0c67e9f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/public-api.js @@ -0,0 +1,242 @@ +import { _INTERNAL_captureLog } from './internal.js'; +export { fmt } from '../utils/parameterize.js'; + +/** + * Capture a log with the given level. + * + * @param level - The level of the log. + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100. + * @param scope - The scope to capture the log with. + * @param severityNumber - The severity number of the log. + */ +function captureLog( + level, + message, + attributes, + scope, + severityNumber, +) { + _INTERNAL_captureLog({ level, message, attributes, severityNumber }, scope); +} + +/** + * Additional metadata to capture the log with. + */ + +/** + * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { userId: 100, route: '/dashboard' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.trace('User clicked submit button', { + * buttonId: 'submit-form', + * formId: 'user-profile', + * timestamp: Date.now() + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.trace(Sentry.logger.fmt`User ${user} navigated to ${page}`, { + * userId: '123', + * sessionId: 'abc-xyz' + * }); + * ``` + */ +function trace( + message, + attributes, + { scope } = {}, +) { + captureLog('trace', message, attributes, scope); +} + +/** + * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { component: 'Header', state: 'loading' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.debug('Component mounted', { + * component: 'UserProfile', + * props: { userId: 123 }, + * renderTime: 150 + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.debug(Sentry.logger.fmt`API request to ${endpoint} failed`, { + * statusCode: 404, + * requestId: 'req-123', + * duration: 250 + * }); + * ``` + */ +function debug( + message, + attributes, + { scope } = {}, +) { + captureLog('debug', message, attributes, scope); +} + +/** + * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { feature: 'checkout', status: 'completed' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.info('User completed checkout', { + * orderId: 'order-123', + * amount: 99.99, + * paymentMethod: 'credit_card' + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.info(Sentry.logger.fmt`User ${user} updated profile picture`, { + * userId: 'user-123', + * imageSize: '2.5MB', + * timestamp: Date.now() + * }); + * ``` + */ +function info( + message, + attributes, + { scope } = {}, +) { + captureLog('info', message, attributes, scope); +} + +/** + * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { browser: 'Chrome', version: '91.0' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.warn('Browser compatibility issue detected', { + * browser: 'Safari', + * version: '14.0', + * feature: 'WebRTC', + * fallback: 'enabled' + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.warn(Sentry.logger.fmt`API endpoint ${endpoint} is deprecated`, { + * recommendedEndpoint: '/api/v2/users', + * sunsetDate: '2024-12-31', + * clientVersion: '1.2.3' + * }); + * ``` + */ +function warn( + message, + attributes, + { scope } = {}, +) { + captureLog('warn', message, attributes, scope); +} + +/** + * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { error: 'NetworkError', url: '/api/data' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.error('Failed to load user data', { + * error: 'NetworkError', + * url: '/api/users/123', + * statusCode: 500, + * retryCount: 3 + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.error(Sentry.logger.fmt`Payment processing failed for order ${orderId}`, { + * error: 'InsufficientFunds', + * amount: 100.00, + * currency: 'USD', + * userId: 'user-456' + * }); + * ``` + */ +function error( + message, + attributes, + { scope } = {}, +) { + captureLog('error', message, attributes, scope); +} + +/** + * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { appState: 'corrupted', sessionId: 'abc-123' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.fatal('Application state corrupted', { + * lastKnownState: 'authenticated', + * sessionId: 'session-123', + * timestamp: Date.now(), + * recoveryAttempted: true + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.fatal(Sentry.logger.fmt`Critical system failure in ${service}`, { + * service: 'payment-processor', + * errorCode: 'CRITICAL_FAILURE', + * affectedUsers: 150, + * timestamp: Date.now() + * }); + * ``` + */ +function fatal( + message, + attributes, + { scope } = {}, +) { + captureLog('fatal', message, attributes, scope); +} + +export { debug, error, fatal, info, trace, warn }; +//# sourceMappingURL=public-api.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/public-api.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/public-api.js.map new file mode 100644 index 0000000..1440aec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/public-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"public-api.js","sources":["../../../src/logs/public-api.ts"],"sourcesContent":["import type { Scope } from '../scope';\nimport type { Log, LogSeverityLevel } from '../types-hoist/log';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport { _INTERNAL_captureLog } from './internal';\n\n/**\n * Capture a log with the given level.\n *\n * @param level - The level of the log.\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100.\n * @param scope - The scope to capture the log with.\n * @param severityNumber - The severity number of the log.\n */\nfunction captureLog(\n level: LogSeverityLevel,\n message: ParameterizedString,\n attributes?: Log['attributes'],\n scope?: Scope,\n severityNumber?: Log['severityNumber'],\n): void {\n _INTERNAL_captureLog({ level, message, attributes, severityNumber }, scope);\n}\n\n/**\n * Additional metadata to capture the log with.\n */\ninterface CaptureLogMetadata {\n scope?: Scope;\n}\n\n/**\n * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { userId: 100, route: '/dashboard' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.trace('User clicked submit button', {\n * buttonId: 'submit-form',\n * formId: 'user-profile',\n * timestamp: Date.now()\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.trace(Sentry.logger.fmt`User ${user} navigated to ${page}`, {\n * userId: '123',\n * sessionId: 'abc-xyz'\n * });\n * ```\n */\nexport function trace(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('trace', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { component: 'Header', state: 'loading' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.debug('Component mounted', {\n * component: 'UserProfile',\n * props: { userId: 123 },\n * renderTime: 150\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.debug(Sentry.logger.fmt`API request to ${endpoint} failed`, {\n * statusCode: 404,\n * requestId: 'req-123',\n * duration: 250\n * });\n * ```\n */\nexport function debug(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('debug', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { feature: 'checkout', status: 'completed' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.info('User completed checkout', {\n * orderId: 'order-123',\n * amount: 99.99,\n * paymentMethod: 'credit_card'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.info(Sentry.logger.fmt`User ${user} updated profile picture`, {\n * userId: 'user-123',\n * imageSize: '2.5MB',\n * timestamp: Date.now()\n * });\n * ```\n */\nexport function info(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('info', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { browser: 'Chrome', version: '91.0' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.warn('Browser compatibility issue detected', {\n * browser: 'Safari',\n * version: '14.0',\n * feature: 'WebRTC',\n * fallback: 'enabled'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.warn(Sentry.logger.fmt`API endpoint ${endpoint} is deprecated`, {\n * recommendedEndpoint: '/api/v2/users',\n * sunsetDate: '2024-12-31',\n * clientVersion: '1.2.3'\n * });\n * ```\n */\nexport function warn(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('warn', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { error: 'NetworkError', url: '/api/data' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.error('Failed to load user data', {\n * error: 'NetworkError',\n * url: '/api/users/123',\n * statusCode: 500,\n * retryCount: 3\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.error(Sentry.logger.fmt`Payment processing failed for order ${orderId}`, {\n * error: 'InsufficientFunds',\n * amount: 100.00,\n * currency: 'USD',\n * userId: 'user-456'\n * });\n * ```\n */\nexport function error(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('error', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { appState: 'corrupted', sessionId: 'abc-123' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.fatal('Application state corrupted', {\n * lastKnownState: 'authenticated',\n * sessionId: 'session-123',\n * timestamp: Date.now(),\n * recoveryAttempted: true\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.fatal(Sentry.logger.fmt`Critical system failure in ${service}`, {\n * service: 'payment-processor',\n * errorCode: 'CRITICAL_FAILURE',\n * affectedUsers: 150,\n * timestamp: Date.now()\n * });\n * ```\n */\nexport function fatal(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('fatal', message, attributes, scope);\n}\n\nexport { fmt } from '../utils/parameterize';\n"],"names":[],"mappings":";;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU;AACnB,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,KAAK;AACP,EAAE,cAAc;AAChB,EAAQ;AACR,EAAE,oBAAoB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,cAAA,EAAgB,EAAE,KAAK,CAAC;AAC7E;;AAEA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK;AACrB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK;AACrB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI;AACpB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI;AACpB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK;AACrB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK;AACrB,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,EAAE,KAAA,EAAO,GAAuB,EAAE;AACpC,EAAQ;AACR,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AACjD;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/utils.js new file mode 100644 index 0000000..e52c6b5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/utils.js @@ -0,0 +1,68 @@ +import { isPrimitive } from '../utils/is.js'; +import { normalize } from '../utils/normalize.js'; +import { GLOBAL_OBJ } from '../utils/worldwide.js'; + +/** + * Formats the given values into a string. + * + * @param values - The values to format. + * @param normalizeDepth - The depth to normalize the values. + * @param normalizeMaxBreadth - The max breadth to normalize the values. + * @returns The formatted string. + */ +function formatConsoleArgs(values, normalizeDepth, normalizeMaxBreadth) { + return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ ).util.format === 'function' + ? (GLOBAL_OBJ ).util.format(...values) + : safeJoinConsoleArgs(values, normalizeDepth, normalizeMaxBreadth); +} + +/** + * Joins the given values into a string. + * + * @param values - The values to join. + * @param normalizeDepth - The depth to normalize the values. + * @param normalizeMaxBreadth - The max breadth to normalize the values. + * @returns The joined string. + */ +function safeJoinConsoleArgs(values, normalizeDepth, normalizeMaxBreadth) { + return values + .map(value => + isPrimitive(value) ? String(value) : JSON.stringify(normalize(value, normalizeDepth, normalizeMaxBreadth)), + ) + .join(' '); +} + +/** + * Checks if a string contains console substitution patterns like %s, %d, %i, %f, %o, %O, %c. + * + * @param str - The string to check + * @returns true if the string contains console substitution patterns + */ +function hasConsoleSubstitutions(str) { + // Match console substitution patterns: %s, %d, %i, %f, %o, %O, %c + return /%[sdifocO]/.test(str); +} + +/** + * Creates template attributes for multiple console arguments. + * + * @param args - The console arguments + * @returns An object with template and parameter attributes + */ +function createConsoleTemplateAttributes(firstArg, followingArgs) { + const attributes = {}; + + // Create template with placeholders for each argument + const template = new Array(followingArgs.length).fill('{}').join(' '); + attributes['sentry.message.template'] = `${firstArg} ${template}`; + + // Add each argument as a parameter + followingArgs.forEach((arg, index) => { + attributes[`sentry.message.parameter.${index}`] = arg; + }); + + return attributes; +} + +export { createConsoleTemplateAttributes, formatConsoleArgs, hasConsoleSubstitutions, safeJoinConsoleArgs }; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/utils.js.map new file mode 100644 index 0000000..a4f0ff2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/logs/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../src/logs/utils.ts"],"sourcesContent":["import { isPrimitive } from '../utils/is';\nimport { normalize } from '../utils/normalize';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ntype GlobalObjectWithUtil = typeof GLOBAL_OBJ & {\n util: {\n format: (...args: unknown[]) => string;\n };\n};\n\n/**\n * Formats the given values into a string.\n *\n * @param values - The values to format.\n * @param normalizeDepth - The depth to normalize the values.\n * @param normalizeMaxBreadth - The max breadth to normalize the values.\n * @returns The formatted string.\n */\nexport function formatConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ as GlobalObjectWithUtil).util.format === 'function'\n ? (GLOBAL_OBJ as GlobalObjectWithUtil).util.format(...values)\n : safeJoinConsoleArgs(values, normalizeDepth, normalizeMaxBreadth);\n}\n\n/**\n * Joins the given values into a string.\n *\n * @param values - The values to join.\n * @param normalizeDepth - The depth to normalize the values.\n * @param normalizeMaxBreadth - The max breadth to normalize the values.\n * @returns The joined string.\n */\nexport function safeJoinConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string {\n return values\n .map(value =>\n isPrimitive(value) ? String(value) : JSON.stringify(normalize(value, normalizeDepth, normalizeMaxBreadth)),\n )\n .join(' ');\n}\n\n/**\n * Checks if a string contains console substitution patterns like %s, %d, %i, %f, %o, %O, %c.\n *\n * @param str - The string to check\n * @returns true if the string contains console substitution patterns\n */\nexport function hasConsoleSubstitutions(str: string): boolean {\n // Match console substitution patterns: %s, %d, %i, %f, %o, %O, %c\n return /%[sdifocO]/.test(str);\n}\n\n/**\n * Creates template attributes for multiple console arguments.\n *\n * @param args - The console arguments\n * @returns An object with template and parameter attributes\n */\nexport function createConsoleTemplateAttributes(firstArg: unknown, followingArgs: unknown[]): Record {\n const attributes: Record = {};\n\n // Create template with placeholders for each argument\n const template = new Array(followingArgs.length).fill('{}').join(' ');\n attributes['sentry.message.template'] = `${firstArg} ${template}`;\n\n // Add each argument as a parameter\n followingArgs.forEach((arg, index) => {\n attributes[`sentry.message.parameter.${index}`] = arg;\n });\n\n return attributes;\n}\n"],"names":[],"mappings":";;;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,MAAM,EAAa,cAAc,EAAU,mBAAmB,EAAkB;AAClH,EAAE,OAAO,MAAA,IAAU,UAAA,IAAc,OAAO,CAAC,UAAA,GAAoC,IAAI,CAAC,WAAW;AAC7F,MAAM,CAAC,UAAA,GAAoC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM;AAChE,MAAM,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,mBAAmB,CAAC;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,MAAM,EAAa,cAAc,EAAU,mBAAmB,EAAkB;AACpH,EAAE,OAAO;AACT,KAAK,GAAG,CAAC,KAAA;AACT,MAAM,WAAW,CAAC,KAAK,CAAA,GAAI,MAAM,CAAC,KAAK,CAAA,GAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AAChH;AACA,KAAK,IAAI,CAAC,GAAG,CAAC;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,GAAG,EAAmB;AAC9D;AACA,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,+BAA+B,CAAC,QAAQ,EAAW,aAAa,EAAsC;AACtH,EAAE,MAAM,UAAU,GAA4B,EAAE;;AAEhD;AACA,EAAE,MAAM,QAAA,GAAW,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACvE,EAAE,UAAU,CAAC,yBAAyB,CAAA,GAAI,CAAC,EAAA,QAAA,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;;AAEA;AACA,EAAA,aAAA,CAAA,OAAA,CAAA,CAAA,GAAA,EAAA,KAAA,KAAA;AACA,IAAA,UAAA,CAAA,CAAA,yBAAA,EAAA,KAAA,CAAA,CAAA,CAAA,GAAA,GAAA;AACA,EAAA,CAAA,CAAA;;AAEA,EAAA,OAAA,UAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metadata.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metadata.js new file mode 100644 index 0000000..81cb047 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metadata.js @@ -0,0 +1,112 @@ +import { GLOBAL_OBJ } from './utils/worldwide.js'; + +/** Keys are source filename/url, values are metadata objects. */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const filenameMetadataMap = new Map(); +/** Set of stack strings that have already been parsed. */ +const parsedStacks = new Set(); + +/** + * Builds a map of filenames to module metadata from the global _sentryModuleMetadata object. + * This is useful for forwarding metadata from web workers to the main thread. + * + * @param parser - Stack parser to use for extracting filenames from stack traces + * @returns A map of filename to metadata object + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function getFilenameToMetadataMap(parser) { + if (!GLOBAL_OBJ._sentryModuleMetadata) { + return {}; + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const filenameMap = {}; + + for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) { + const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack]; + const frames = parser(stack); + + for (const frame of frames.reverse()) { + if (frame.filename) { + filenameMap[frame.filename] = metadata; + break; + } + } + } + + return filenameMap; +} + +function ensureMetadataStacksAreParsed(parser) { + if (!GLOBAL_OBJ._sentryModuleMetadata) { + return; + } + + for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) { + const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack]; + + if (parsedStacks.has(stack)) { + continue; + } + + // Ensure this stack doesn't get parsed again + parsedStacks.add(stack); + + const frames = parser(stack); + + // Go through the frames starting from the top of the stack and find the first one with a filename + for (const frame of frames.reverse()) { + if (frame.filename) { + // Save the metadata for this filename + filenameMetadataMap.set(frame.filename, metadata); + break; + } + } + } +} + +/** + * Retrieve metadata for a specific JavaScript file URL. + * + * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function getMetadataForUrl(parser, filename) { + ensureMetadataStacksAreParsed(parser); + return filenameMetadataMap.get(filename); +} + +/** + * Adds metadata to stack frames. + * + * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option. + */ +function addMetadataToStackFrames(parser, event) { + event.exception?.values?.forEach(exception => { + exception.stacktrace?.frames?.forEach(frame => { + if (!frame.filename || frame.module_metadata) { + return; + } + + const metadata = getMetadataForUrl(parser, frame.filename); + + if (metadata) { + frame.module_metadata = metadata; + } + }); + }); +} + +/** + * Strips metadata from stack frames. + */ +function stripMetadataFromStackFrames(event) { + event.exception?.values?.forEach(exception => { + exception.stacktrace?.frames?.forEach(frame => { + delete frame.module_metadata; + }); + }); +} + +export { addMetadataToStackFrames, getFilenameToMetadataMap, getMetadataForUrl, stripMetadataFromStackFrames }; +//# sourceMappingURL=metadata.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metadata.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metadata.js.map new file mode 100644 index 0000000..140fb63 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metadata.js","sources":["../../src/metadata.ts"],"sourcesContent":["import type { Event } from './types-hoist/event';\nimport type { StackParser } from './types-hoist/stacktrace';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\n/**\n * Builds a map of filenames to module metadata from the global _sentryModuleMetadata object.\n * This is useful for forwarding metadata from web workers to the main thread.\n *\n * @param parser - Stack parser to use for extracting filenames from stack traces\n * @returns A map of filename to metadata object\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getFilenameToMetadataMap(parser: StackParser): Record {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filenameMap: Record = {};\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n const frames = parser(stack);\n\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n filenameMap[frame.filename] = metadata;\n break;\n }\n }\n }\n\n return filenameMap;\n}\n\nfunction ensureMetadataStacksAreParsed(parser: StackParser): void {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getMetadataForUrl(parser: StackParser, filename: string): any | undefined {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nexport function addMetadataToStackFrames(parser: StackParser, event: Event): void {\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (!frame.filename || frame.module_metadata) {\n return;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n });\n });\n}\n\n/**\n * Strips metadata from stack frames.\n */\nexport function stripMetadataFromStackFrames(event: Event): void {\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n delete frame.module_metadata;\n });\n });\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/envelope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/envelope.js new file mode 100644 index 0000000..021bb85 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/envelope.js @@ -0,0 +1,57 @@ +import { dsnToString } from '../utils/dsn.js'; +import { createEnvelope } from '../utils/envelope.js'; + +/** + * Creates a metric container envelope item for a list of metrics. + * + * @param items - The metrics to include in the envelope. + * @returns The created metric container envelope item. + */ +function createMetricContainerEnvelopeItem(items) { + return [ + { + type: 'trace_metric', + item_count: items.length, + content_type: 'application/vnd.sentry.items.trace-metric+json', + } , + { + items, + }, + ]; +} + +/** + * Creates an envelope for a list of metrics. + * + * Metrics from multiple traces can be included in the same envelope. + * + * @param metrics - The metrics to include in the envelope. + * @param metadata - The metadata to include in the envelope. + * @param tunnel - The tunnel to include in the envelope. + * @param dsn - The DSN to include in the envelope. + * @returns The created envelope. + */ +function createMetricEnvelope( + metrics, + metadata, + tunnel, + dsn, +) { + const headers = {}; + + if (metadata?.sdk) { + headers.sdk = { + name: metadata.sdk.name, + version: metadata.sdk.version, + }; + } + + if (!!tunnel && !!dsn) { + headers.dsn = dsnToString(dsn); + } + + return createEnvelope(headers, [createMetricContainerEnvelopeItem(metrics)]); +} + +export { createMetricContainerEnvelopeItem, createMetricEnvelope }; +//# sourceMappingURL=envelope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/envelope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/envelope.js.map new file mode 100644 index 0000000..22b67e3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/envelope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"envelope.js","sources":["../../../src/metrics/envelope.ts"],"sourcesContent":["import type { DsnComponents } from '../types-hoist/dsn';\nimport type { MetricContainerItem, MetricEnvelope } from '../types-hoist/envelope';\nimport type { SerializedMetric } from '../types-hoist/metric';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport { dsnToString } from '../utils/dsn';\nimport { createEnvelope } from '../utils/envelope';\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 */\nexport function createMetricContainerEnvelopeItem(items: Array): MetricContainerItem {\n return [\n {\n type: 'trace_metric',\n item_count: items.length,\n content_type: 'application/vnd.sentry.items.trace-metric+json',\n } as MetricContainerItem[0],\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 */\nexport function createMetricEnvelope(\n metrics: Array,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): MetricEnvelope {\n const headers: MetricEnvelope[0] = {};\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"],"names":[],"mappings":";;;AAOA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iCAAiC,CAAC,KAAK,EAAgD;AACvG,EAAE,OAAO;AACT,IAAI;AACJ,MAAM,IAAI,EAAE,cAAc;AAC1B,MAAM,UAAU,EAAE,KAAK,CAAC,MAAM;AAC9B,MAAM,YAAY,EAAE,gDAAgD;AACpE,KAAI;AACJ,IAAI;AACJ,MAAM,KAAK;AACX,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB;AACpC,EAAE,OAAO;AACT,EAAE,QAAQ;AACV,EAAE,MAAM;AACR,EAAE,GAAG;AACL,EAAkB;AAClB,EAAE,MAAM,OAAO,GAAsB,EAAE;;AAEvC,EAAE,IAAI,QAAQ,EAAE,GAAG,EAAE;AACrB,IAAI,OAAO,CAAC,GAAA,GAAM;AAClB,MAAM,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI;AAC7B,MAAM,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO;AACnC,KAAK;AACL,EAAE;;AAEF,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE;AACzB,IAAI,OAAO,CAAC,GAAA,GAAM,WAAW,CAAC,GAAG,CAAC;AAClC,EAAE;;AAEF,EAAE,OAAO,cAAc,CAAiB,OAAO,EAAE,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9F;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/internal.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/internal.js new file mode 100644 index 0000000..f2862c6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/internal.js @@ -0,0 +1,234 @@ +import { serializeAttributes } from '../attributes.js'; +import { getGlobalSingleton } from '../carrier.js'; +import { getCurrentScope, getClient, getIsolationScope } from '../currentScopes.js'; +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug } from '../utils/debug-logger.js'; +import { getCombinedScopeData } from '../utils/scopeData.js'; +import { _getSpanForScope } from '../utils/spanOnScope.js'; +import { timestampInSeconds } from '../utils/time.js'; +import { _getTraceInfoFromScope } from '../utils/trace-info.js'; +import { createMetricEnvelope } from './envelope.js'; + +const MAX_METRIC_BUFFER_SIZE = 1000; + +/** + * Sets a metric attribute if the value exists and the attribute key is not already present. + * + * @param metricAttributes - The metric attributes object to modify. + * @param key - The attribute key to set. + * @param value - The value to set (only sets if truthy and key not present). + * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true. + */ +function setMetricAttribute( + metricAttributes, + key, + value, + setEvenIfPresent = true, +) { + if (value && (setEvenIfPresent || !(key in metricAttributes))) { + metricAttributes[key] = value; + } +} + +/** + * Captures a serialized metric event and adds it to the metric buffer for the given client. + * + * @param client - A client. Uses the current client if not provided. + * @param serializedMetric - The serialized metric event to capture. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_captureSerializedMetric(client, serializedMetric) { + const bufferMap = _getBufferMap(); + const metricBuffer = _INTERNAL_getMetricBuffer(client); + + if (metricBuffer === undefined) { + bufferMap.set(client, [serializedMetric]); + } else { + if (metricBuffer.length >= MAX_METRIC_BUFFER_SIZE) { + _INTERNAL_flushMetricsBuffer(client, metricBuffer); + bufferMap.set(client, [serializedMetric]); + } else { + bufferMap.set(client, [...metricBuffer, serializedMetric]); + } + } +} + +/** + * Options for capturing a metric internally. + */ + +/** + * Enriches metric with all contextual attributes (user, SDK metadata, replay, etc.) + */ +function _enrichMetricAttributes(beforeMetric, client, user) { + const { release, environment } = client.getOptions(); + + const processedMetricAttributes = { + ...beforeMetric.attributes, + }; + + // Add user attributes + setMetricAttribute(processedMetricAttributes, 'user.id', user.id, false); + setMetricAttribute(processedMetricAttributes, 'user.email', user.email, false); + setMetricAttribute(processedMetricAttributes, 'user.name', user.username, false); + + // Add Sentry metadata + setMetricAttribute(processedMetricAttributes, 'sentry.release', release); + setMetricAttribute(processedMetricAttributes, 'sentry.environment', environment); + + // Add SDK metadata + const { name, version } = client.getSdkMetadata()?.sdk ?? {}; + setMetricAttribute(processedMetricAttributes, 'sentry.sdk.name', name); + setMetricAttribute(processedMetricAttributes, 'sentry.sdk.version', version); + + // Add replay metadata + const replay = client.getIntegrationByName + +('Replay'); + + const replayId = replay?.getReplayId(true); + setMetricAttribute(processedMetricAttributes, 'sentry.replay_id', replayId); + + if (replayId && replay?.getRecordingMode() === 'buffer') { + setMetricAttribute(processedMetricAttributes, 'sentry._internal.replay_is_buffering', true); + } + + return { + ...beforeMetric, + attributes: processedMetricAttributes, + }; +} + +/** + * Creates a serialized metric ready to be sent to Sentry. + */ +function _buildSerializedMetric( + metric, + client, + currentScope, + scopeAttributes, +) { + // Get trace context + const [, traceContext] = _getTraceInfoFromScope(client, currentScope); + const span = _getSpanForScope(currentScope); + const traceId = span ? span.spanContext().traceId : traceContext?.trace_id; + const spanId = span ? span.spanContext().spanId : undefined; + + return { + timestamp: timestampInSeconds(), + trace_id: traceId ?? '', + span_id: spanId, + name: metric.name, + type: metric.type, + unit: metric.unit, + value: metric.value, + attributes: { + ...serializeAttributes(scopeAttributes), + ...serializeAttributes(metric.attributes, 'skip-undefined'), + }, + }; +} + +/** + * Captures a metric event and sends it to Sentry. + * + * @param metric - The metric event to capture. + * @param options - Options for capturing the metric. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_captureMetric(beforeMetric, options) { + const currentScope = options?.scope ?? getCurrentScope(); + const captureSerializedMetric = options?.captureSerializedMetric ?? _INTERNAL_captureSerializedMetric; + const client = currentScope?.getClient() ?? getClient(); + if (!client) { + DEBUG_BUILD && debug.warn('No client available to capture metric.'); + return; + } + + const { _experiments, enableMetrics, beforeSendMetric } = client.getOptions(); + + // todo(v11): Remove the experimental flag + // eslint-disable-next-line deprecation/deprecation + const metricsEnabled = enableMetrics ?? _experiments?.enableMetrics ?? true; + + if (!metricsEnabled) { + DEBUG_BUILD && debug.warn('metrics option not enabled, metric will not be captured.'); + return; + } + + // Enrich metric with contextual attributes + const { user, attributes: scopeAttributes } = getCombinedScopeData(getIsolationScope(), currentScope); + const enrichedMetric = _enrichMetricAttributes(beforeMetric, client, user); + + client.emit('processMetric', enrichedMetric); + + // todo(v11): Remove the experimental `beforeSendMetric` + // eslint-disable-next-line deprecation/deprecation + const beforeSendCallback = beforeSendMetric || _experiments?.beforeSendMetric; + const processedMetric = beforeSendCallback ? beforeSendCallback(enrichedMetric) : enrichedMetric; + + if (!processedMetric) { + DEBUG_BUILD && debug.log('`beforeSendMetric` returned `null`, will not send metric.'); + return; + } + + const serializedMetric = _buildSerializedMetric(processedMetric, client, currentScope, scopeAttributes); + + DEBUG_BUILD && debug.log('[Metric]', serializedMetric); + + captureSerializedMetric(client, serializedMetric); + + client.emit('afterCaptureMetric', processedMetric); +} + +/** + * Flushes the metrics buffer to Sentry. + * + * @param client - A client. + * @param maybeMetricBuffer - A metric buffer. Uses the metric buffer for the given client if not provided. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +function _INTERNAL_flushMetricsBuffer(client, maybeMetricBuffer) { + const metricBuffer = maybeMetricBuffer ?? _INTERNAL_getMetricBuffer(client) ?? []; + if (metricBuffer.length === 0) { + return; + } + + const clientOptions = client.getOptions(); + const envelope = createMetricEnvelope(metricBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn()); + + // Clear the metric buffer after envelopes have been constructed. + _getBufferMap().set(client, []); + + client.emit('flushMetrics'); + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + client.sendEnvelope(envelope); +} + +/** + * Returns the metric buffer for a given client. + * + * Exported for testing purposes. + * + * @param client - The client to get the metric buffer for. + * @returns The metric buffer for the given client. + */ +function _INTERNAL_getMetricBuffer(client) { + return _getBufferMap().get(client); +} + +function _getBufferMap() { + // The reference to the Client <> MetricBuffer map is stored on the carrier to ensure it's always the same + return getGlobalSingleton('clientToMetricBufferMap', () => new WeakMap()); +} + +export { _INTERNAL_captureMetric, _INTERNAL_captureSerializedMetric, _INTERNAL_flushMetricsBuffer, _INTERNAL_getMetricBuffer }; +//# sourceMappingURL=internal.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/internal.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/internal.js.map new file mode 100644 index 0000000..0e38f12 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/internal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal.js","sources":["../../../src/metrics/internal.ts"],"sourcesContent":["import { type RawAttributes, serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Metric, SerializedMetric } from '../types-hoist/metric';\nimport type { User } from '../types-hoist/user';\nimport { debug } from '../utils/debug-logger';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { createMetricEnvelope } from './envelope';\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: Record,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\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 */\nexport function _INTERNAL_captureSerializedMetric(client: Client, serializedMetric: SerializedMetric): void {\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 */\nexport interface InternalCaptureMetricOptions {\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\n\n /**\n * A function to capture the serialized metric.\n */\n captureSerializedMetric?: (client: Client, metric: SerializedMetric) => void;\n}\n\n/**\n * Enriches metric with all contextual attributes (user, SDK metadata, replay, etc.)\n */\nfunction _enrichMetricAttributes(beforeMetric: Metric, client: Client, user: User): Metric {\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 Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\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: Metric,\n client: Client,\n currentScope: Scope,\n scopeAttributes: RawAttributes> | undefined,\n): SerializedMetric {\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 return {\n timestamp: timestampInSeconds(),\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 },\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 */\nexport function _INTERNAL_captureMetric(beforeMetric: Metric, options?: InternalCaptureMetricOptions): void {\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 */\nexport function _INTERNAL_flushMetricsBuffer(client: Client, maybeMetricBuffer?: Array): void {\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 */\nexport function _INTERNAL_getMetricBuffer(client: Client): Array | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap> {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/public-api.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/public-api.js new file mode 100644 index 0000000..fde486c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/public-api.js @@ -0,0 +1,125 @@ +import { _INTERNAL_captureMetric } from './internal.js'; + +/** + * Options for capturing a metric. + */ + +/** + * Capture a metric with the given type, name, and value. + * + * @param type - The type of the metric. + * @param name - The name of the metric. + * @param value - The value of the metric. + * @param options - Options for capturing the metric. + */ +function captureMetric(type, name, value, options) { + _INTERNAL_captureMetric( + { type, name, value, unit: options?.unit, attributes: options?.attributes }, + { scope: options?.scope }, + ); +} + +/** + * @summary Increment a counter metric. Requires the `_experiments.enableMetrics` option to be enabled. + * + * @param name - The name of the counter metric. + * @param value - The value to increment by (defaults to 1). + * @param options - Options for capturing the metric. + * + * @example + * + * ``` + * Sentry.metrics.count('api.requests', 1, { + * attributes: { + * endpoint: '/api/users', + * method: 'GET', + * status: 200 + * } + * }); + * ``` + * + * @example With custom value + * + * ``` + * Sentry.metrics.count('items.processed', 5, { + * attributes: { + * processor: 'batch-processor', + * queue: 'high-priority' + * } + * }); + * ``` + */ +function count(name, value = 1, options) { + captureMetric('counter', name, value, options); +} + +/** + * @summary Set a gauge metric to a specific value. Requires the `_experiments.enableMetrics` option to be enabled. + * + * @param name - The name of the gauge metric. + * @param value - The current value of the gauge. + * @param options - Options for capturing the metric. + * + * @example + * + * ``` + * Sentry.metrics.gauge('memory.usage', 1024, { + * unit: 'megabyte', + * attributes: { + * process: 'web-server', + * region: 'us-east-1' + * } + * }); + * ``` + * + * @example Without unit + * + * ``` + * Sentry.metrics.gauge('active.connections', 42, { + * attributes: { + * server: 'api-1', + * protocol: 'websocket' + * } + * }); + * ``` + */ +function gauge(name, value, options) { + captureMetric('gauge', name, value, options); +} + +/** + * @summary Record a value in a distribution metric. Requires the `_experiments.enableMetrics` option to be enabled. + * + * @param name - The name of the distribution metric. + * @param value - The value to record in the distribution. + * @param options - Options for capturing the metric. + * + * @example + * + * ``` + * Sentry.metrics.distribution('task.duration', 500, { + * unit: 'millisecond', + * attributes: { + * task: 'data-processing', + * priority: 'high' + * } + * }); + * ``` + * + * @example Without unit + * + * ``` + * Sentry.metrics.distribution('batch.size', 100, { + * attributes: { + * processor: 'batch-1', + * type: 'async' + * } + * }); + * ``` + */ +function distribution(name, value, options) { + captureMetric('distribution', name, value, options); +} + +export { count, distribution, gauge }; +//# sourceMappingURL=public-api.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/public-api.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/public-api.js.map new file mode 100644 index 0000000..1141526 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/metrics/public-api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"public-api.js","sources":["../../../src/metrics/public-api.ts"],"sourcesContent":["import type { Scope } from '../scope';\nimport type { Metric, MetricType } from '../types-hoist/metric';\nimport { _INTERNAL_captureMetric } from './internal';\n\n/**\n * Options for capturing a metric.\n */\nexport interface MetricOptions {\n /**\n * The unit of the metric value.\n */\n unit?: string;\n\n /**\n * Arbitrary structured data that stores information about the metric.\n */\n attributes?: Metric['attributes'];\n\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\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: MetricType, name: string, value: number, options?: MetricOptions): void {\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. Requires the `_experiments.enableMetrics` option to be enabled.\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 */\nexport function count(name: string, value: number = 1, options?: MetricOptions): void {\n captureMetric('counter', name, value, options);\n}\n\n/**\n * @summary Set a gauge metric to a specific value. Requires the `_experiments.enableMetrics` option to be enabled.\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 */\nexport function gauge(name: string, value: number, options?: MetricOptions): void {\n captureMetric('gauge', name, value, options);\n}\n\n/**\n * @summary Record a value in a distribution metric. Requires the `_experiments.enableMetrics` option to be enabled.\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 */\nexport function distribution(name: string, value: number, options?: MetricOptions): void {\n captureMetric('distribution', name, value, options);\n}\n"],"names":[],"mappings":";;AAIA;AACA;AACA;;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAc,IAAI,EAAU,KAAK,EAAU,OAAO,EAAwB;AACrG,EAAE,uBAAuB;AACzB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY;AAC/E,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO;AAC7B,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,IAAI,EAAU,KAAK,GAAW,CAAC,EAAE,OAAO,EAAwB;AACtF,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,IAAI,EAAU,KAAK,EAAU,OAAO,EAAwB;AAClF,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,IAAI,EAAU,KAAK,EAAU,OAAO,EAAwB;AACzF,EAAE,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AACrD;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/package.json b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/package.json new file mode 100644 index 0000000..d0d4a1e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/package.json @@ -0,0 +1 @@ +{"type":"module","version":"10.37.0","sideEffects":false} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/profiling.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/profiling.js new file mode 100644 index 0000000..7e533cc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/profiling.js @@ -0,0 +1,78 @@ +import { getClient } from './currentScopes.js'; +import { DEBUG_BUILD } from './debug-build.js'; +import { debug } from './utils/debug-logger.js'; + +function isProfilingIntegrationWithProfiler( + integration, +) { + return ( + !!integration && + typeof integration['_profiler'] !== 'undefined' && + typeof integration['_profiler']['start'] === 'function' && + typeof integration['_profiler']['stop'] === 'function' + ); +} +/** + * Starts the Sentry continuous profiler. + * This mode is exclusive with the transaction profiler and will only work if the profilesSampleRate is set to a falsy value. + * In continuous profiling mode, the profiler will keep reporting profile chunks to Sentry until it is stopped, which allows for continuous profiling of the application. + */ +function startProfiler() { + const client = getClient(); + if (!client) { + DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started'); + return; + } + + const integration = client.getIntegrationByName('ProfilingIntegration'); + + if (!integration) { + DEBUG_BUILD && debug.warn('ProfilingIntegration is not available'); + return; + } + + if (!isProfilingIntegrationWithProfiler(integration)) { + DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.'); + return; + } + + integration._profiler.start(); +} + +/** + * Stops the Sentry continuous profiler. + * Calls to stop will stop the profiler and flush the currently collected profile data to Sentry. + */ +function stopProfiler() { + const client = getClient(); + if (!client) { + DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started'); + return; + } + + const integration = client.getIntegrationByName('ProfilingIntegration'); + if (!integration) { + DEBUG_BUILD && debug.warn('ProfilingIntegration is not available'); + return; + } + + if (!isProfilingIntegrationWithProfiler(integration)) { + DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.'); + return; + } + + integration._profiler.stop(); +} + +/** + * Profiler namespace for controlling the profiler in 'manual' mode. + * + * Requires the `nodeProfilingIntegration` from the `@sentry/profiling-node` package. + */ +const profiler = { + startProfiler, + stopProfiler, +}; + +export { profiler }; +//# sourceMappingURL=profiling.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/profiling.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/profiling.js.map new file mode 100644 index 0000000..dd8b875 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/profiling.js.map @@ -0,0 +1 @@ +{"version":3,"file":"profiling.js","sources":["../../src/profiling.ts"],"sourcesContent":["import { getClient } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Profiler, ProfilingIntegration } from './types-hoist/profiling';\nimport { debug } from './utils/debug-logger';\n\nfunction isProfilingIntegrationWithProfiler(\n integration: ProfilingIntegration | undefined,\n): integration is ProfilingIntegration {\n return (\n !!integration &&\n typeof integration['_profiler'] !== 'undefined' &&\n typeof integration['_profiler']['start'] === 'function' &&\n typeof integration['_profiler']['stop'] === 'function'\n );\n}\n/**\n * Starts the Sentry continuous profiler.\n * This mode is exclusive with the transaction profiler and will only work if the profilesSampleRate is set to a falsy value.\n * In continuous profiling mode, the profiler will keep reporting profile chunks to Sentry until it is stopped, which allows for continuous profiling of the application.\n */\nfunction startProfiler(): void {\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started');\n return;\n }\n\n const integration = client.getIntegrationByName('ProfilingIntegration');\n\n if (!integration) {\n DEBUG_BUILD && debug.warn('ProfilingIntegration is not available');\n return;\n }\n\n if (!isProfilingIntegrationWithProfiler(integration)) {\n DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.');\n return;\n }\n\n integration._profiler.start();\n}\n\n/**\n * Stops the Sentry continuous profiler.\n * Calls to stop will stop the profiler and flush the currently collected profile data to Sentry.\n */\nfunction stopProfiler(): void {\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started');\n return;\n }\n\n const integration = client.getIntegrationByName('ProfilingIntegration');\n if (!integration) {\n DEBUG_BUILD && debug.warn('ProfilingIntegration is not available');\n return;\n }\n\n if (!isProfilingIntegrationWithProfiler(integration)) {\n DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.');\n return;\n }\n\n integration._profiler.stop();\n}\n\n/**\n * Profiler namespace for controlling the profiler in 'manual' mode.\n *\n * Requires the `nodeProfilingIntegration` from the `@sentry/profiling-node` package.\n */\nexport const profiler: Profiler = {\n startProfiler,\n stopProfiler,\n};\n"],"names":[],"mappings":";;;;AAKA,SAAS,kCAAkC;AAC3C,EAAE,WAAW;AACb,EAAuC;AACvC,EAAE;AACF,IAAI,CAAC,CAAC,WAAA;AACN,IAAI,OAAO,WAAW,CAAC,WAAW,CAAA,KAAM,WAAA;AACxC,IAAI,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC,OAAO,CAAA,KAAM,UAAA;AACjD,IAAI,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,GAAS;AAC/B,EAAE,MAAM,MAAA,GAAS,SAAS,EAAE;AAC5B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,eAAe,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC;AACrF,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,cAAc,MAAM,CAAC,oBAAoB,CAAuB,sBAAsB,CAAC;;AAE/F,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,IAAI,eAAe,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC;AACtE,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,CAAC,kCAAkC,CAAC,WAAW,CAAC,EAAE;AACxD,IAAI,eAAe,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC;AACpF,IAAI;AACJ,EAAE;;AAEF,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE;AAC/B;;AAEA;AACA;AACA;AACA;AACA,SAAS,YAAY,GAAS;AAC9B,EAAE,MAAM,MAAA,GAAS,SAAS,EAAE;AAC5B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,eAAe,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC;AACrF,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,cAAc,MAAM,CAAC,oBAAoB,CAAuB,sBAAsB,CAAC;AAC/F,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,IAAI,eAAe,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC;AACtE,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,CAAC,kCAAkC,CAAC,WAAW,CAAC,EAAE;AACxD,IAAI,eAAe,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC;AACpF,IAAI;AACJ,EAAE;;AAEF,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAQ,GAAa;AAClC,EAAE,aAAa;AACf,EAAE,YAAY;AACd;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/scope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/scope.js new file mode 100644 index 0000000..7ede5c8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/scope.js @@ -0,0 +1,701 @@ +import { DEBUG_BUILD } from './debug-build.js'; +import { updateSession } from './session.js'; +import { debug } from './utils/debug-logger.js'; +import { isPlainObject } from './utils/is.js'; +import { merge } from './utils/merge.js'; +import { uuid4 } from './utils/misc.js'; +import { generateTraceId } from './utils/propagationContext.js'; +import { safeMathRandom } from './utils/randomSafeContext.js'; +import { _setSpanForScope, _getSpanForScope } from './utils/spanOnScope.js'; +import { truncate } from './utils/string.js'; +import { dateTimestampInSeconds } from './utils/time.js'; + +/** + * Default value for maximum number of breadcrumbs added to an event. + */ +const DEFAULT_MAX_BREADCRUMBS = 100; + +/** + * A context to be used for capturing an event. + * This can either be a Scope, or a partial ScopeContext, + * or a callback that receives the current scope and returns a new scope to use. + */ + +/** + * Holds additional event information. + */ +class Scope { + /** Flag if notifying is happening. */ + + /** Callback for client to receive scope changes. */ + + /** Callback list that will be called during event processing. */ + + /** Array of breadcrumbs. */ + + /** User */ + + /** Tags */ + + /** Attributes */ + + /** Extra */ + + /** Contexts */ + + /** Attachments */ + + /** Propagation Context for distributed tracing */ + + /** + * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get + * sent to Sentry + */ + + /** Fingerprint */ + + /** Severity */ + + /** + * Transaction Name + * + * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects. + * It's purpose is to assign a transaction to the scope that's added to non-transaction events. + */ + + /** Session */ + + /** The client on this scope */ + + /** Contains the last event id of a captured event. */ + + /** Conversation ID */ + + // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method. + + constructor() { + this._notifyingListeners = false; + this._scopeListeners = []; + this._eventProcessors = []; + this._breadcrumbs = []; + this._attachments = []; + this._user = {}; + this._tags = {}; + this._attributes = {}; + this._extra = {}; + this._contexts = {}; + this._sdkProcessingMetadata = {}; + this._propagationContext = { + traceId: generateTraceId(), + sampleRand: safeMathRandom(), + }; + } + + /** + * Clone all data from this scope into a new scope. + */ + clone() { + const newScope = new Scope(); + newScope._breadcrumbs = [...this._breadcrumbs]; + newScope._tags = { ...this._tags }; + newScope._attributes = { ...this._attributes }; + newScope._extra = { ...this._extra }; + newScope._contexts = { ...this._contexts }; + if (this._contexts.flags) { + // We need to copy the `values` array so insertions on a cloned scope + // won't affect the original array. + newScope._contexts.flags = { + values: [...this._contexts.flags.values], + }; + } + + newScope._user = this._user; + newScope._level = this._level; + newScope._session = this._session; + newScope._transactionName = this._transactionName; + newScope._fingerprint = this._fingerprint; + newScope._eventProcessors = [...this._eventProcessors]; + newScope._attachments = [...this._attachments]; + newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata }; + newScope._propagationContext = { ...this._propagationContext }; + newScope._client = this._client; + newScope._lastEventId = this._lastEventId; + newScope._conversationId = this._conversationId; + + _setSpanForScope(newScope, _getSpanForScope(this)); + + return newScope; + } + + /** + * Update the client assigned to this scope. + * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client, + * as well as manually created scopes. + */ + setClient(client) { + this._client = client; + } + + /** + * Set the ID of the last captured error event. + * This is generally only captured on the isolation scope. + */ + setLastEventId(lastEventId) { + this._lastEventId = lastEventId; + } + + /** + * Get the client assigned to this scope. + */ + getClient() { + return this._client ; + } + + /** + * Get the ID of the last captured error event. + * This is generally only available on the isolation scope. + */ + lastEventId() { + return this._lastEventId; + } + + /** + * @inheritDoc + */ + addScopeListener(callback) { + this._scopeListeners.push(callback); + } + + /** + * Add an event processor that will be called before an event is sent. + */ + addEventProcessor(callback) { + this._eventProcessors.push(callback); + return this; + } + + /** + * Set the user for this scope. + * Set to `null` to unset the user. + */ + setUser(user) { + // If null is passed we want to unset everything, but still define keys, + // so that later down in the pipeline any existing values are cleared. + this._user = user || { + email: undefined, + id: undefined, + ip_address: undefined, + username: undefined, + }; + + if (this._session) { + updateSession(this._session, { user }); + } + + this._notifyScopeListeners(); + return this; + } + + /** + * Get the user from this scope. + */ + getUser() { + return this._user; + } + + /** + * Set the conversation ID for this scope. + * Set to `null` to unset the conversation ID. + */ + setConversationId(conversationId) { + this._conversationId = conversationId || undefined; + this._notifyScopeListeners(); + return this; + } + + /** + * Set an object that will be merged into existing tags on the scope, + * and will be sent as tags data with the event. + */ + setTags(tags) { + this._tags = { + ...this._tags, + ...tags, + }; + this._notifyScopeListeners(); + return this; + } + + /** + * Set a single tag that will be sent as tags data with the event. + */ + setTag(key, value) { + return this.setTags({ [key]: value }); + } + + /** + * Sets attributes onto the scope. + * + * These attributes are currently applied to logs and metrics. + * In the future, they will also be applied to spans. + * + * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for + * more complex attribute types. We'll add this support in the future but already specify the wider type to + * avoid a breaking change in the future. + * + * @param newAttributes - The attributes to set on the scope. You can either pass in key-value pairs, or + * an object with a `value` and an optional `unit` (if applicable to your attribute). + * + * @example + * ```typescript + * scope.setAttributes({ + * is_admin: true, + * payment_selection: 'credit_card', + * render_duration: { value: 'render_duration', unit: 'ms' }, + * }); + * ``` + */ + setAttributes(newAttributes) { + this._attributes = { + ...this._attributes, + ...newAttributes, + }; + + this._notifyScopeListeners(); + return this; + } + + /** + * Sets an attribute onto the scope. + * + * These attributes are currently applied to logs and metrics. + * In the future, they will also be applied to spans. + * + * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for + * more complex attribute types. We'll add this support in the future but already specify the wider type to + * avoid a breaking change in the future. + * + * @param key - The attribute key. + * @param value - the attribute value. You can either pass in a raw value, or an attribute + * object with a `value` and an optional `unit` (if applicable to your attribute). + * + * @example + * ```typescript + * scope.setAttribute('is_admin', true); + * scope.setAttribute('render_duration', { value: 'render_duration', unit: 'ms' }); + * ``` + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + setAttribute( + key, + value, + ) { + return this.setAttributes({ [key]: value }); + } + + /** + * Removes the attribute with the given key from the scope. + * + * @param key - The attribute key. + * + * @example + * ```typescript + * scope.removeAttribute('is_admin'); + * ``` + */ + removeAttribute(key) { + if (key in this._attributes) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete this._attributes[key]; + this._notifyScopeListeners(); + } + return this; + } + + /** + * Set an object that will be merged into existing extra on the scope, + * and will be sent as extra data with the event. + */ + setExtras(extras) { + this._extra = { + ...this._extra, + ...extras, + }; + this._notifyScopeListeners(); + return this; + } + + /** + * Set a single key:value extra entry that will be sent as extra data with the event. + */ + setExtra(key, extra) { + this._extra = { ...this._extra, [key]: extra }; + this._notifyScopeListeners(); + return this; + } + + /** + * Sets the fingerprint on the scope to send with the events. + * @param {string[]} fingerprint Fingerprint to group events in Sentry. + */ + setFingerprint(fingerprint) { + this._fingerprint = fingerprint; + this._notifyScopeListeners(); + return this; + } + + /** + * Sets the level on the scope for future events. + */ + setLevel(level) { + this._level = level; + this._notifyScopeListeners(); + return this; + } + + /** + * Sets the transaction name on the scope so that the name of e.g. taken server route or + * the page location is attached to future events. + * + * IMPORTANT: Calling this function does NOT change the name of the currently active + * root span. If you want to change the name of the active root span, use + * `Sentry.updateSpanName(rootSpan, 'new name')` instead. + * + * By default, the SDK updates the scope's transaction name automatically on sensible + * occasions, such as a page navigation or when handling a new request on the server. + */ + setTransactionName(name) { + this._transactionName = name; + this._notifyScopeListeners(); + return this; + } + + /** + * Sets context data with the given name. + * Data passed as context will be normalized. You can also pass `null` to unset the context. + * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key. + */ + setContext(key, context) { + if (context === null) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete this._contexts[key]; + } else { + this._contexts[key] = context; + } + + this._notifyScopeListeners(); + return this; + } + + /** + * Set the session for the scope. + */ + setSession(session) { + if (!session) { + delete this._session; + } else { + this._session = session; + } + this._notifyScopeListeners(); + return this; + } + + /** + * Get the session from the scope. + */ + getSession() { + return this._session; + } + + /** + * Updates the scope with provided data. Can work in three variations: + * - plain object containing updatable attributes + * - Scope instance that'll extract the attributes from + * - callback function that'll receive the current scope as an argument and allow for modifications + */ + update(captureContext) { + if (!captureContext) { + return this; + } + + const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext; + + const scopeInstance = + scopeToMerge instanceof Scope + ? scopeToMerge.getScopeData() + : isPlainObject(scopeToMerge) + ? (captureContext ) + : undefined; + + const { + tags, + attributes, + extra, + user, + contexts, + level, + fingerprint = [], + propagationContext, + conversationId, + } = scopeInstance || {}; + + this._tags = { ...this._tags, ...tags }; + this._attributes = { ...this._attributes, ...attributes }; + this._extra = { ...this._extra, ...extra }; + this._contexts = { ...this._contexts, ...contexts }; + + if (user && Object.keys(user).length) { + this._user = user; + } + + if (level) { + this._level = level; + } + + if (fingerprint.length) { + this._fingerprint = fingerprint; + } + + if (propagationContext) { + this._propagationContext = propagationContext; + } + + if (conversationId) { + this._conversationId = conversationId; + } + + return this; + } + + /** + * Clears the current scope and resets its properties. + * Note: The client will not be cleared. + */ + clear() { + // client is not cleared here on purpose! + this._breadcrumbs = []; + this._tags = {}; + this._attributes = {}; + this._extra = {}; + this._user = {}; + this._contexts = {}; + this._level = undefined; + this._transactionName = undefined; + this._fingerprint = undefined; + this._session = undefined; + this._conversationId = undefined; + _setSpanForScope(this, undefined); + this._attachments = []; + this.setPropagationContext({ + traceId: generateTraceId(), + sampleRand: safeMathRandom(), + }); + + this._notifyScopeListeners(); + return this; + } + + /** + * Adds a breadcrumb to the scope. + * By default, the last 100 breadcrumbs are kept. + */ + addBreadcrumb(breadcrumb, maxBreadcrumbs) { + const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS; + + // No data has been changed, so don't notify scope listeners + if (maxCrumbs <= 0) { + return this; + } + + const mergedBreadcrumb = { + timestamp: dateTimestampInSeconds(), + ...breadcrumb, + // Breadcrumb messages can theoretically be infinitely large and they're held in memory so we truncate them not to leak (too much) memory + message: breadcrumb.message ? truncate(breadcrumb.message, 2048) : breadcrumb.message, + }; + + this._breadcrumbs.push(mergedBreadcrumb); + if (this._breadcrumbs.length > maxCrumbs) { + this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs); + this._client?.recordDroppedEvent('buffer_overflow', 'log_item'); + } + + this._notifyScopeListeners(); + + return this; + } + + /** + * Get the last breadcrumb of the scope. + */ + getLastBreadcrumb() { + return this._breadcrumbs[this._breadcrumbs.length - 1]; + } + + /** + * Clear all breadcrumbs from the scope. + */ + clearBreadcrumbs() { + this._breadcrumbs = []; + this._notifyScopeListeners(); + return this; + } + + /** + * Add an attachment to the scope. + */ + addAttachment(attachment) { + this._attachments.push(attachment); + return this; + } + + /** + * Clear all attachments from the scope. + */ + clearAttachments() { + this._attachments = []; + return this; + } + + /** + * Get the data of this scope, which should be applied to an event during processing. + */ + 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: _getSpanForScope(this), + conversationId: this._conversationId, + }; + } + + /** + * Add data which will be accessible during event processing but won't get sent to Sentry. + */ + setSDKProcessingMetadata(newData) { + this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2); + return this; + } + + /** + * Add propagation context to the scope, used for distributed tracing + */ + setPropagationContext(context) { + this._propagationContext = context; + return this; + } + + /** + * Get propagation context from the scope, used for distributed tracing + */ + getPropagationContext() { + return this._propagationContext; + } + + /** + * Capture an exception for this scope. + * + * @returns {string} The id of the captured Sentry event. + */ + captureException(exception, hint) { + const eventId = hint?.event_id || uuid4(); + + if (!this._client) { + DEBUG_BUILD && debug.warn('No client configured on scope - will not capture exception!'); + return eventId; + } + + const syntheticException = new Error('Sentry syntheticException'); + + this._client.captureException( + exception, + { + originalException: exception, + syntheticException, + ...hint, + event_id: eventId, + }, + this, + ); + + return eventId; + } + + /** + * Capture a message for this scope. + * + * @returns {string} The id of the captured message. + */ + captureMessage(message, level, hint) { + const eventId = hint?.event_id || uuid4(); + + if (!this._client) { + DEBUG_BUILD && debug.warn('No client configured on scope - will not capture message!'); + return eventId; + } + + const syntheticException = hint?.syntheticException ?? new Error(message); + + this._client.captureMessage( + message, + level, + { + originalException: message, + syntheticException, + ...hint, + event_id: eventId, + }, + this, + ); + + return eventId; + } + + /** + * Capture a Sentry event for this scope. + * + * @returns {string} The id of the captured event. + */ + captureEvent(event, hint) { + const eventId = hint?.event_id || uuid4(); + + if (!this._client) { + DEBUG_BUILD && debug.warn('No client configured on scope - will not capture event!'); + return eventId; + } + + this._client.captureEvent(event, { ...hint, event_id: eventId }, this); + + return eventId; + } + + /** + * This will be called on every set call. + */ + _notifyScopeListeners() { + // We need this check for this._notifyingListeners to be able to work on scope during updates + // If this check is not here we'll produce endless recursion when something is done with the scope + // during the callback. + if (!this._notifyingListeners) { + this._notifyingListeners = true; + this._scopeListeners.forEach(callback => { + callback(this); + }); + this._notifyingListeners = false; + } + } +} + +export { Scope }; +//# sourceMappingURL=scope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/scope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/scope.js.map new file mode 100644 index 0000000..e9f518d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/scope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scope.js","sources":["../../src/scope.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport type { AttributeObject, RawAttribute, RawAttributes } from './attributes';\nimport type { Client } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport { updateSession } from './session';\nimport type { Attachment } from './types-hoist/attachment';\nimport type { Breadcrumb } from './types-hoist/breadcrumb';\nimport type { Context, Contexts } from './types-hoist/context';\nimport type { DynamicSamplingContext } from './types-hoist/envelope';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { Extra, Extras } from './types-hoist/extra';\nimport type { Primitive } from './types-hoist/misc';\nimport type { RequestEventData } from './types-hoist/request';\nimport type { Session } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { Span } from './types-hoist/span';\nimport type { PropagationContext } from './types-hoist/tracing';\nimport type { User } from './types-hoist/user';\nimport { debug } from './utils/debug-logger';\nimport { isPlainObject } from './utils/is';\nimport { merge } from './utils/merge';\nimport { uuid4 } from './utils/misc';\nimport { generateTraceId } from './utils/propagationContext';\nimport { safeMathRandom } from './utils/randomSafeContext';\nimport { _getSpanForScope, _setSpanForScope } from './utils/spanOnScope';\nimport { truncate } from './utils/string';\nimport { dateTimestampInSeconds } from './utils/time';\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 */\nexport type CaptureContext = Scope | Partial | ((scope: Scope) => Scope);\n\n/**\n * Data that can be converted to a Scope.\n */\nexport interface ScopeContext {\n user: User;\n level: SeverityLevel;\n extra: Extras;\n contexts: Contexts;\n tags: { [key: string]: Primitive };\n attributes?: RawAttributes>;\n fingerprint: string[];\n propagationContext: PropagationContext;\n conversationId?: string;\n}\n\nexport interface SdkProcessingMetadata {\n [key: string]: unknown;\n requestSession?: {\n status: 'ok' | 'errored' | 'crashed';\n };\n normalizedRequest?: RequestEventData;\n dynamicSamplingContext?: Partial;\n capturedSpanScope?: Scope;\n capturedSpanIsolationScope?: Scope;\n spanCountBeforeProcessing?: number;\n ipAddress?: string;\n}\n\n/**\n * Normalized data of the Scope, ready to be used.\n */\nexport interface ScopeData {\n eventProcessors: EventProcessor[];\n breadcrumbs: Breadcrumb[];\n user: User;\n tags: { [key: string]: Primitive };\n // TODO(v11): Make this a required field (could be subtly breaking if we did it today)\n attributes?: RawAttributes>;\n extra: Extras;\n contexts: Contexts;\n attachments: Attachment[];\n propagationContext: PropagationContext;\n sdkProcessingMetadata: SdkProcessingMetadata;\n fingerprint: string[];\n level?: SeverityLevel;\n transactionName?: string;\n span?: Span;\n conversationId?: string;\n}\n\n/**\n * Holds additional event information.\n */\nexport class Scope {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called during event processing. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Attributes */\n protected _attributes: RawAttributes>;\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /** Propagation Context for distributed tracing */\n protected _propagationContext: PropagationContext;\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 protected _sdkProcessingMetadata: SdkProcessingMetadata;\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: SeverityLevel;\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 protected _transactionName?: string;\n\n /** Session */\n protected _session?: Session;\n\n /** The client on this scope */\n protected _client?: Client;\n\n /** Contains the last event id of a captured event. */\n protected _lastEventId?: string;\n\n /** Conversation ID */\n protected _conversationId?: string;\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 public 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 public clone(): Scope {\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 public setClient(client: Client | undefined): void {\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 public setLastEventId(lastEventId: string | undefined): void {\n this._lastEventId = lastEventId;\n }\n\n /**\n * Get the client assigned to this scope.\n */\n public getClient(): C | undefined {\n return this._client as C | undefined;\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 public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * Add an event processor that will be called before an event is sent.\n */\n public addEventProcessor(callback: EventProcessor): this {\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 public setUser(user: User | null): this {\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 public getUser(): User | undefined {\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 public setConversationId(conversationId: string | null | undefined): this {\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 public setTags(tags: { [key: string]: Primitive }): this {\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 public setTag(key: string, value: Primitive): this {\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 public setAttributes>(newAttributes: RawAttributes): this {\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 public setAttribute extends { value: any } | { unit: any } ? AttributeObject : unknown>(\n key: string,\n value: RawAttribute,\n ): this {\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 public removeAttribute(key: string): this {\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 public setExtras(extras: Extras): this {\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 public setExtra(key: string, extra: Extra): this {\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 public setFingerprint(fingerprint: string[]): this {\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 public setLevel(level: SeverityLevel): this {\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 public setTransactionName(name?: string): this {\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 public setContext(key: string, context: Context | null): this {\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 public setSession(session?: Session): this {\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 public getSession(): Session | undefined {\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 public update(captureContext?: CaptureContext): this {\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 as ScopeContext)\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 public clear(): this {\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 public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\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: Breadcrumb = {\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 public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * Clear all breadcrumbs from the scope.\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Add an attachment to the scope.\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * Clear all attachments from the scope.\n */\n public clearAttachments(): this {\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 public getScopeData(): ScopeData {\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 public setSDKProcessingMetadata(newData: SdkProcessingMetadata): this {\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 public setPropagationContext(context: PropagationContext): this {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * Get propagation context from the scope, used for distributed tracing\n */\n public getPropagationContext(): PropagationContext {\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 public captureException(exception: unknown, hint?: EventHint): string {\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 public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\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 public captureEvent(event: Event, hint?: EventHint): string {\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 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 protected _notifyScopeListeners(): void {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/sdk.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/sdk.js new file mode 100644 index 0000000..d12e27a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/sdk.js @@ -0,0 +1,46 @@ +import { getCurrentScope } from './currentScopes.js'; +import { DEBUG_BUILD } from './debug-build.js'; +import { debug, consoleSandbox } from './utils/debug-logger.js'; + +/** A class object that can instantiate Client objects. */ + +/** + * Internal function to create a new SDK client instance. The client is + * installed and then bound to the current scope. + * + * @param clientClass The client class to instantiate. + * @param options Options to pass to the client. + */ +function initAndBind( + clientClass, + options, +) { + if (options.debug === true) { + if (DEBUG_BUILD) { + debug.enable(); + } else { + // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped + consoleSandbox(() => { + // eslint-disable-next-line no-console + console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.'); + }); + } + } + const scope = getCurrentScope(); + scope.update(options.initialScope); + + const client = new clientClass(options); + setCurrentClient(client); + client.init(); + return client; +} + +/** + * Make the given client the current client. + */ +function setCurrentClient(client) { + getCurrentScope().setClient(client); +} + +export { initAndBind, setCurrentClient }; +//# sourceMappingURL=sdk.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/sdk.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/sdk.js.map new file mode 100644 index 0000000..7582073 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/sdk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdk.js","sources":["../../src/sdk.ts"],"sourcesContent":["import type { Client } from './client';\nimport { getCurrentScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ClientOptions } from './types-hoist/options';\nimport { consoleSandbox, debug } from './utils/debug-logger';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): Client {\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 const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n setCurrentClient(client);\n client.init();\n return client;\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n getCurrentScope().setClient(client);\n}\n"],"names":[],"mappings":";;;;AAMA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW;AAC3B,EAAE,WAAW;AACb,EAAE,OAAO;AACT,EAAU;AACV,EAAE,IAAI,OAAO,CAAC,KAAA,KAAU,IAAI,EAAE;AAC9B,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,KAAK,CAAC,MAAM,EAAE;AACpB,IAAI,OAAO;AACX;AACA,MAAM,cAAc,CAAC,MAAM;AAC3B;AACA,QAAQ,OAAO,CAAC,IAAI,CAAC,8EAA8E,CAAC;AACpG,MAAM,CAAC,CAAC;AACR,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,KAAA,GAAQ,eAAe,EAAE;AACjC,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;;AAEpC,EAAE,MAAM,MAAA,GAAS,IAAI,WAAW,CAAC,OAAO,CAAC;AACzC,EAAE,gBAAgB,CAAC,MAAM,CAAC;AAC1B,EAAE,MAAM,CAAC,IAAI,EAAE;AACf,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,MAAM,EAAgB;AACvD,EAAE,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/semanticAttributes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/semanticAttributes.js new file mode 100644 index 0000000..6bbf688 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/semanticAttributes.js @@ -0,0 +1,97 @@ +/** + * Use this attribute to represent the source of a span. + * Should be one of: custom, url, route, view, component, task, unknown + * + */ +const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source'; + +/** + * Attributes that holds the sample rate that was locally applied to a span. + * If this attribute is not defined, it means that the span inherited a sampling decision. + * + * NOTE: Is only defined on root spans. + */ +const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate'; + +/** + * Attribute holding the sample rate of the previous trace. + * This is used to sample consistently across subsequent traces in the browser SDK. + * + * Note: Only defined on root spans, if opted into consistent sampling + */ +const SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = 'sentry.previous_trace_sample_rate'; + +/** + * Use this attribute to represent the operation of a span. + */ +const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op'; + +/** + * Use this attribute to represent the origin of a span. + */ +const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin'; + +/** The reason why an idle span finished. */ +const SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason'; + +/** The unit of a measurement, which may be stored as a TimedEvent. */ +const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit'; + +/** The value of a measurement, which may be stored as a TimedEvent. */ +const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value'; + +/** + * A custom span name set by users guaranteed to be taken over any automatically + * inferred name. This attribute is removed before the span is sent. + * + * @internal only meant for internal SDK usage + * @hidden + */ +const SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name'; + +/** + * The id of the profile that this span occurred in. + */ +const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id'; + +const SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time'; + +const SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit'; + +const SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key'; + +const SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size'; + +/** TODO: Remove these once we update to latest semantic conventions */ +const SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method'; +const SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full'; + +/** + * A span link attribute to mark the link as a special span link. + * + * Known values: + * - `previous_trace`: The span links to the frontend root span of the previous trace. + * - `next_trace`: The span links to the frontend root span of the next trace. (Not set by the SDK) + * + * Other values may be set as appropriate. + * @see https://develop.sentry.dev/sdk/telemetry/traces/span-links/#link-types + */ +const SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = 'sentry.link.type'; + +/** + * ============================================================================= + * GEN AI ATTRIBUTES + * Based on OpenTelemetry Semantic Conventions for Generative AI + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/ + * ============================================================================= + */ + +/** + * The conversation ID for linking messages across API calls. + * For OpenAI Assistants API: thread_id + * For LangGraph: configurable.thread_id + */ +const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id'; + +export { 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 }; +//# sourceMappingURL=semanticAttributes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/semanticAttributes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/semanticAttributes.js.map new file mode 100644 index 0000000..b52826e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/semanticAttributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semanticAttributes.js","sources":["../../src/semanticAttributes.ts"],"sourcesContent":["/**\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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nexport const 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. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nexport const 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 */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name';\n\n/**\n * The id of the profile that this span occurred in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nexport const SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nexport const SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nexport const 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 */\nexport const 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 */\nexport const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACO,MAAM,gCAAA,GAAmC;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qCAAA,GAAwC;;AAErD;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oDAAA,GAAuD;;AAEpE;AACA;AACA;AACO,MAAM,4BAAA,GAA+B;;AAE5C;AACA;AACA;AACO,MAAM,gCAAA,GAAmC;;AAEhD;AACO,MAAM,iDAAA,GAAoD;;AAEjE;AACO,MAAM,0CAAA,GAA6C;;AAE1D;AACO,MAAM,2CAAA,GAA8C;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,0CAAA,GAA6C;;AAE1D;AACA;AACA;AACO,MAAM,6BAAA,GAAgC;;AAEtC,MAAM,iCAAA,GAAoC;;AAE1C,MAAM,4BAAA,GAA+B;;AAErC,MAAM,4BAAA,GAA+B;;AAErC,MAAM,kCAAA,GAAqC;;AAElD;AACO,MAAM,sCAAA,GAAyC;AAC/C,MAAM,2BAAA,GAA8B;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iCAAA,GAAoC;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,gCAAA,GAAmC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/server-runtime-client.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/server-runtime-client.js new file mode 100644 index 0000000..2b92813 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/server-runtime-client.js @@ -0,0 +1,202 @@ +import { createCheckInEnvelope } from './checkin.js'; +import { Client } from './client.js'; +import { getIsolationScope } from './currentScopes.js'; +import { DEBUG_BUILD } from './debug-build.js'; +import { registerSpanErrorInstrumentation } from './tracing/errors.js'; +import { debug } from './utils/debug-logger.js'; +import { uuid4 } from './utils/misc.js'; +import { addUserAgentToTransportHeaders } from './transports/userAgent.js'; +import { eventFromUnknownInput, eventFromMessage } from './utils/eventbuilder.js'; +import { resolvedSyncPromise } from './utils/syncpromise.js'; +import { _getTraceInfoFromScope } from './utils/trace-info.js'; + +/** + * The Sentry Server Runtime Client SDK. + */ +class ServerRuntimeClient + + extends Client { + /** + * Creates a new Edge SDK instance. + * @param options Configuration options for this SDK. + */ + constructor(options) { + // Server clients always support tracing + registerSpanErrorInstrumentation(); + + addUserAgentToTransportHeaders(options); + + super(options); + + this._setUpMetricsProcessing(); + } + + /** + * @inheritDoc + */ + eventFromException(exception, hint) { + const event = eventFromUnknownInput(this, this._options.stackParser, exception, hint); + event.level = 'error'; + + return resolvedSyncPromise(event); + } + + /** + * @inheritDoc + */ + eventFromMessage( + message, + level = 'info', + hint, + ) { + return resolvedSyncPromise( + eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace), + ); + } + + /** + * @inheritDoc + */ + captureException(exception, hint, scope) { + setCurrentRequestSessionErroredOrCrashed(hint); + return super.captureException(exception, hint, scope); + } + + /** + * @inheritDoc + */ + captureEvent(event, hint, scope) { + // If the event is of type Exception, then a request session should be captured + const isException = !event.type && event.exception?.values && event.exception.values.length > 0; + if (isException) { + setCurrentRequestSessionErroredOrCrashed(hint); + } + + return super.captureEvent(event, hint, scope); + } + + /** + * Create a cron monitor check in and send it to Sentry. + * + * @param checkIn An object that describes a check in. + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + */ + captureCheckIn(checkIn, monitorConfig, scope) { + const id = 'checkInId' in checkIn && checkIn.checkInId ? checkIn.checkInId : uuid4(); + if (!this._isEnabled()) { + DEBUG_BUILD && debug.warn('SDK not enabled, will not capture check-in.'); + return id; + } + + const options = this.getOptions(); + const { release, environment, tunnel } = options; + + const serializedCheckIn = { + check_in_id: id, + monitor_slug: checkIn.monitorSlug, + status: checkIn.status, + release, + environment, + }; + + if ('duration' in checkIn) { + serializedCheckIn.duration = checkIn.duration; + } + + if (monitorConfig) { + serializedCheckIn.monitor_config = { + schedule: monitorConfig.schedule, + checkin_margin: monitorConfig.checkinMargin, + max_runtime: monitorConfig.maxRuntime, + timezone: monitorConfig.timezone, + failure_issue_threshold: monitorConfig.failureIssueThreshold, + recovery_threshold: monitorConfig.recoveryThreshold, + }; + } + + const [dynamicSamplingContext, traceContext] = _getTraceInfoFromScope(this, scope); + if (traceContext) { + serializedCheckIn.contexts = { + trace: traceContext, + }; + } + + const envelope = createCheckInEnvelope( + serializedCheckIn, + dynamicSamplingContext, + this.getSdkMetadata(), + tunnel, + this.getDsn(), + ); + + DEBUG_BUILD && debug.log('Sending checkin:', checkIn.monitorSlug, checkIn.status); + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.sendEnvelope(envelope); + + return id; + } + + /** + * @inheritDoc + */ + _prepareEvent( + event, + hint, + currentScope, + isolationScope, + ) { + if (this._options.platform) { + event.platform = event.platform || this._options.platform; + } + + if (this._options.runtime) { + event.contexts = { + ...event.contexts, + runtime: event.contexts?.runtime || this._options.runtime, + }; + } + + if (this._options.serverName) { + event.server_name = event.server_name || this._options.serverName; + } + + return super._prepareEvent(event, hint, currentScope, isolationScope); + } + + /** + * Process a server-side metric before it is captured. + */ + _setUpMetricsProcessing() { + this.on('processMetric', metric => { + if (this._options.serverName) { + metric.attributes = { + 'server.address': this._options.serverName, + ...metric.attributes, + }; + } + }); + } +} + +function setCurrentRequestSessionErroredOrCrashed(eventHint) { + const requestSession = getIsolationScope().getScopeData().sdkProcessingMetadata.requestSession; + if (requestSession) { + // We mutate instead of doing `setSdkProcessingMetadata` because the http integration stores away a particular + // isolationScope. If that isolation scope is forked, setting the processing metadata here will not mutate the + // original isolation scope that the http integration stored away. + const isHandledException = eventHint?.mechanism?.handled ?? true; + // A request session can go from "errored" -> "crashed" but not "crashed" -> "errored". + // Crashed (unhandled exception) is worse than errored (handled exception). + if (isHandledException && requestSession.status !== 'crashed') { + requestSession.status = 'errored'; + } else if (!isHandledException) { + requestSession.status = 'crashed'; + } + } +} + +export { ServerRuntimeClient }; +//# sourceMappingURL=server-runtime-client.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/server-runtime-client.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/server-runtime-client.js.map new file mode 100644 index 0000000..7d22708 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/server-runtime-client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"server-runtime-client.js","sources":["../../src/server-runtime-client.ts"],"sourcesContent":["import { createCheckInEnvelope } from './checkin';\nimport { Client } from './client';\nimport { getIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Scope } from './scope';\nimport { registerSpanErrorInstrumentation } from './tracing';\nimport { addUserAgentToTransportHeaders } from './transports/userAgent';\nimport type { CheckIn, MonitorConfig, SerializedCheckIn } from './types-hoist/checkin';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { ClientOptions } from './types-hoist/options';\nimport type { ParameterizedString } from './types-hoist/parameterize';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { BaseTransportOptions } from './types-hoist/transport';\nimport { debug } from './utils/debug-logger';\nimport { eventFromMessage, eventFromUnknownInput } from './utils/eventbuilder';\nimport { uuid4 } from './utils/misc';\nimport { resolvedSyncPromise } from './utils/syncpromise';\nimport { _getTraceInfoFromScope } from './utils/trace-info';\n\nexport interface ServerRuntimeClientOptions extends ClientOptions {\n platform?: string;\n runtime?: { name: string; version?: string };\n serverName?: string;\n}\n\n/**\n * The Sentry Server Runtime Client SDK.\n */\nexport class ServerRuntimeClient<\n O extends ClientOptions & ServerRuntimeClientOptions = ServerRuntimeClientOptions,\n> extends Client {\n /**\n * Creates a new Edge SDK instance.\n * @param options Configuration options for this SDK.\n */\n public constructor(options: O) {\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 public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\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 public eventFromMessage(\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return resolvedSyncPromise(\n eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace),\n );\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: unknown, hint?: EventHint, scope?: Scope): string {\n setCurrentRequestSessionErroredOrCrashed(hint);\n return super.captureException(exception, hint, scope);\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string {\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 public captureCheckIn(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string {\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: 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 * @inheritDoc\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\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 private _setUpMetricsProcessing(): void {\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?: EventHint): void {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/session.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/session.js new file mode 100644 index 0000000..623fac1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/session.js @@ -0,0 +1,161 @@ +import { uuid4 } from './utils/misc.js'; +import { timestampInSeconds } from './utils/time.js'; + +/** + * Creates a new `Session` object by setting certain default parameters. If optional @param context + * is passed, the passed properties are applied to the session object. + * + * @param context (optional) additional properties to be applied to the returned session object + * + * @returns a new `Session` object + */ +function makeSession(context) { + // Both timestamp and started are in seconds since the UNIX epoch. + const startingTime = timestampInSeconds(); + + const session = { + sid: uuid4(), + init: true, + timestamp: startingTime, + started: startingTime, + duration: 0, + status: 'ok', + errors: 0, + ignoreDuration: false, + toJSON: () => sessionToJSON(session), + }; + + if (context) { + updateSession(session, context); + } + + return session; +} + +/** + * Updates a session object with the properties passed in the context. + * + * Note that this function mutates the passed object and returns void. + * (Had to do this instead of returning a new and updated session because closing and sending a session + * makes an update to the session after it was passed to the sending logic. + * @see Client.captureSession ) + * + * @param session the `Session` to update + * @param context the `SessionContext` holding the properties that should be updated in @param session + */ +// eslint-disable-next-line complexity +function updateSession(session, context = {}) { + if (context.user) { + if (!session.ipAddress && context.user.ip_address) { + session.ipAddress = context.user.ip_address; + } + + if (!session.did && !context.did) { + session.did = context.user.id || context.user.email || context.user.username; + } + } + + session.timestamp = context.timestamp || timestampInSeconds(); + + if (context.abnormal_mechanism) { + session.abnormal_mechanism = context.abnormal_mechanism; + } + + if (context.ignoreDuration) { + session.ignoreDuration = context.ignoreDuration; + } + if (context.sid) { + // Good enough uuid validation. — Kamil + session.sid = context.sid.length === 32 ? context.sid : uuid4(); + } + if (context.init !== undefined) { + session.init = context.init; + } + if (!session.did && context.did) { + session.did = `${context.did}`; + } + if (typeof context.started === 'number') { + session.started = context.started; + } + if (session.ignoreDuration) { + session.duration = undefined; + } else if (typeof context.duration === 'number') { + session.duration = context.duration; + } else { + const duration = session.timestamp - session.started; + session.duration = duration >= 0 ? duration : 0; + } + if (context.release) { + session.release = context.release; + } + if (context.environment) { + session.environment = context.environment; + } + if (!session.ipAddress && context.ipAddress) { + session.ipAddress = context.ipAddress; + } + if (!session.userAgent && context.userAgent) { + session.userAgent = context.userAgent; + } + if (typeof context.errors === 'number') { + session.errors = context.errors; + } + if (context.status) { + session.status = context.status; + } +} + +/** + * Closes a session by setting its status and updating the session object with it. + * Internally calls `updateSession` to update the passed session object. + * + * Note that this function mutates the passed session (@see updateSession for explanation). + * + * @param session the `Session` object to be closed + * @param status the `SessionStatus` with which the session was closed. If you don't pass a status, + * this function will keep the previously set status, unless it was `'ok'` in which case + * it is changed to `'exited'`. + */ +function closeSession(session, status) { + let context = {}; + if (status) { + context = { status }; + } else if (session.status === 'ok') { + context = { status: 'exited' }; + } + + updateSession(session, context); +} + +/** + * Serializes a passed session object to a JSON object with a slightly different structure. + * This is necessary because the Sentry backend requires a slightly different schema of a session + * than the one the JS SDKs use internally. + * + * @param session the session to be converted + * + * @returns a JSON object of the passed session + */ +function sessionToJSON(session) { + return { + sid: `${session.sid}`, + init: session.init, + // Make sure that sec is converted to ms for date constructor + started: new Date(session.started * 1000).toISOString(), + timestamp: new Date(session.timestamp * 1000).toISOString(), + status: session.status, + errors: session.errors, + did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined, + duration: session.duration, + abnormal_mechanism: session.abnormal_mechanism, + attrs: { + release: session.release, + environment: session.environment, + ip_address: session.ipAddress, + user_agent: session.userAgent, + }, + }; +} + +export { closeSession, makeSession, updateSession }; +//# sourceMappingURL=session.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/session.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/session.js.map new file mode 100644 index 0000000..f55e616 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/session.js.map @@ -0,0 +1 @@ +{"version":3,"file":"session.js","sources":["../../src/session.ts"],"sourcesContent":["import type { SerializedSession, Session, SessionContext, SessionStatus } from './types-hoist/session';\nimport { uuid4 } from './utils/misc';\nimport { timestampInSeconds } from './utils/time';\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 */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: 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\nexport function updateSession(session: Session, context: SessionContext = {}): void {\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 */\nexport function closeSession(session: Session, status?: Exclude): void {\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: Session): SerializedSession {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/gen-ai-attributes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/gen-ai-attributes.js new file mode 100644 index 0000000..3eac5f7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/gen-ai-attributes.js @@ -0,0 +1,314 @@ +/** + * OpenAI Integration Telemetry Attributes + * Based on OpenTelemetry Semantic Conventions for Generative AI + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/ + */ + +// ============================================================================= +// OPENTELEMETRY SEMANTIC CONVENTIONS FOR GENAI +// ============================================================================= + +/** + * The input messages sent to the model + */ +const GEN_AI_PROMPT_ATTRIBUTE = 'gen_ai.prompt'; + +/** + * The Generative AI system being used + * For OpenAI, this should always be "openai" + */ +const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system'; + +/** + * The name of the model as requested + * Examples: "gpt-4", "gpt-3.5-turbo" + */ +const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model'; + +/** + * Whether streaming was enabled for the request + */ +const GEN_AI_REQUEST_STREAM_ATTRIBUTE = 'gen_ai.request.stream'; + +/** + * The temperature setting for the model request + */ +const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature'; + +/** + * The maximum number of tokens requested + */ +const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens'; + +/** + * The frequency penalty setting for the model request + */ +const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty'; + +/** + * The presence penalty setting for the model request + */ +const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty'; + +/** + * The top_p (nucleus sampling) setting for the model request + */ +const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p'; + +/** + * The top_k setting for the model request + */ +const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k'; + +/** + * The encoding format for the model request + */ +const GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = 'gen_ai.request.encoding_format'; + +/** + * The dimensions for the model request + */ +const GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = 'gen_ai.request.dimensions'; + +/** + * Array of reasons why the model stopped generating tokens + */ +const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons'; + +/** + * The name of the model that generated the response + */ +const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model'; + +/** + * The unique identifier for the response + */ +const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id'; + +/** + * The reason why the model stopped generating tokens + */ +const GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = 'gen_ai.response.stop_reason'; + +/** + * The number of tokens used in the prompt + */ +const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens'; + +/** + * The number of tokens used in the response + */ +const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens'; + +/** + * The total number of tokens used (input + output) + */ +const GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = 'gen_ai.usage.total_tokens'; + +/** + * The operation name + */ +const GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name'; + +/** + * Original length of messages array, used to indicate truncations had occured + */ +const GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = 'sentry.sdk_meta.gen_ai.input.messages.original_length'; + +/** + * The prompt messages + * Only recorded when recordInputs is enabled + */ +const GEN_AI_INPUT_MESSAGES_ATTRIBUTE = 'gen_ai.input.messages'; + +/** + * The system instructions extracted from system messages + * Only recorded when recordInputs is enabled + * According to OpenTelemetry spec: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-system-instructions + */ +const GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = 'gen_ai.system_instructions'; + +/** + * The response text + * Only recorded when recordOutputs is enabled + */ +const GEN_AI_RESPONSE_TEXT_ATTRIBUTE = 'gen_ai.response.text'; + +/** + * The available tools from incoming request + * Only recorded when recordInputs is enabled + */ +const GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = 'gen_ai.request.available_tools'; + +/** + * Whether the response is a streaming response + */ +const GEN_AI_RESPONSE_STREAMING_ATTRIBUTE = 'gen_ai.response.streaming'; + +/** + * The tool calls from the response + * Only recorded when recordOutputs is enabled + */ +const GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'gen_ai.response.tool_calls'; + +/** + * The agent name + */ +const GEN_AI_AGENT_NAME_ATTRIBUTE = 'gen_ai.agent.name'; + +/** + * The pipeline name + */ +const GEN_AI_PIPELINE_NAME_ATTRIBUTE = 'gen_ai.pipeline.name'; + +/** + * The conversation ID for linking messages across API calls + * For OpenAI Assistants API: thread_id + * For LangGraph: configurable.thread_id + */ +const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id'; + +/** + * The number of cache creation input tokens used + */ +const GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_creation_input_tokens'; + +/** + * The number of cache read input tokens used + */ +const GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_read_input_tokens'; + +/** + * The number of cache write input tokens used + */ +const GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE = 'gen_ai.usage.input_tokens.cache_write'; + +/** + * The number of cached input tokens that were used + */ +const GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE = 'gen_ai.usage.input_tokens.cached'; + +/** + * The span operation name for invoking an agent + */ +const GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = 'gen_ai.invoke_agent'; + +/** + * The span operation name for generating text + */ +const GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_text'; + +/** + * The span operation name for streaming text + */ +const GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_text'; + +/** + * The span operation name for generating object + */ +const GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_object'; + +/** + * The span operation name for streaming object + */ +const GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_object'; + +/** + * The embeddings input + * Only recorded when recordInputs is enabled + */ +const GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = 'gen_ai.embeddings.input'; + +/** + * The span operation name for embedding + */ +const GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embed'; + +/** + * The span operation name for embedding many + */ +const GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embed_many'; + +/** + * The span operation name for executing a tool + */ +const GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = 'gen_ai.execute_tool'; + +/** + * The tool name for tool call spans + */ +const GEN_AI_TOOL_NAME_ATTRIBUTE = 'gen_ai.tool.name'; + +/** + * The tool call ID + */ +const GEN_AI_TOOL_CALL_ID_ATTRIBUTE = 'gen_ai.tool.call.id'; + +/** + * The tool type (e.g., 'function') + */ +const GEN_AI_TOOL_TYPE_ATTRIBUTE = 'gen_ai.tool.type'; + +/** + * The tool input/arguments + */ +const GEN_AI_TOOL_INPUT_ATTRIBUTE = 'gen_ai.tool.input'; + +/** + * The tool output/result + */ +const GEN_AI_TOOL_OUTPUT_ATTRIBUTE = 'gen_ai.tool.output'; + +// ============================================================================= +// OPENAI-SPECIFIC ATTRIBUTES +// ============================================================================= + +/** + * The response ID from OpenAI + */ +const OPENAI_RESPONSE_ID_ATTRIBUTE = 'openai.response.id'; + +/** + * The response model from OpenAI + */ +const OPENAI_RESPONSE_MODEL_ATTRIBUTE = 'openai.response.model'; + +/** + * The response timestamp from OpenAI (ISO string) + */ +const OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'openai.response.timestamp'; + +/** + * The number of completion tokens used + */ +const OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'openai.usage.completion_tokens'; + +/** + * The number of prompt tokens used + */ +const OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'openai.usage.prompt_tokens'; + +// ============================================================================= +// OPENAI OPERATIONS +// ============================================================================= + +/** + * OpenAI API operations following OpenTelemetry semantic conventions + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +const OPENAI_OPERATIONS = { + CHAT: 'chat', + EMBEDDINGS: 'embeddings', +} ; + +// ============================================================================= +// ANTHROPIC AI OPERATIONS +// ============================================================================= + +/** + * The response timestamp from Anthropic AI (ISO string) + */ +const ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'anthropic.response.timestamp'; + +export { 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_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_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_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 }; +//# sourceMappingURL=gen-ai-attributes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/gen-ai-attributes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/gen-ai-attributes.js.map new file mode 100644 index 0000000..27ea514 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/gen-ai-attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"gen-ai-attributes.js","sources":["../../../../src/tracing/ai/gen-ai-attributes.ts"],"sourcesContent":["/**\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 */\nexport const 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 */\nexport const 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 */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Whether streaming was enabled for the request\n */\nexport const GEN_AI_REQUEST_STREAM_ATTRIBUTE = 'gen_ai.request.stream';\n\n/**\n * The temperature setting for the model request\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * The maximum number of tokens requested\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * The frequency penalty setting for the model request\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * The presence penalty setting for the model request\n */\nexport const 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 */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * The top_k setting for the model request\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Stop sequences for the model request\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * The encoding format for the model request\n */\nexport const GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = 'gen_ai.request.encoding_format';\n\n/**\n * The dimensions for the model request\n */\nexport const GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = 'gen_ai.request.dimensions';\n\n/**\n * Array of reasons why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * The name of the model that generated the response\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * The unique identifier for the response\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * The reason why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = 'gen_ai.response.stop_reason';\n\n/**\n * The number of tokens used in the prompt\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * The number of tokens used in the response\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n/**\n * The total number of tokens used (input + output)\n */\nexport const GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = 'gen_ai.usage.total_tokens';\n\n/**\n * The operation name\n */\nexport const GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name';\n\n/**\n * Original length of messages array, used to indicate truncations had occured\n */\nexport const 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 */\nexport const GEN_AI_INPUT_MESSAGES_ATTRIBUTE = 'gen_ai.input.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 */\nexport const GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = 'gen_ai.system_instructions';\n\n/**\n * The response text\n * Only recorded when recordOutputs is enabled\n */\nexport const 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 */\nexport const GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = 'gen_ai.request.available_tools';\n\n/**\n * Whether the response is a streaming response\n */\nexport const 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 */\nexport const GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'gen_ai.response.tool_calls';\n\n/**\n * The agent name\n */\nexport const GEN_AI_AGENT_NAME_ATTRIBUTE = 'gen_ai.agent.name';\n\n/**\n * The pipeline name\n */\nexport const 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 */\nexport const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n\n/**\n * The number of cache creation input tokens used\n */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = 'gen_ai.invoke_agent';\n\n/**\n * The span operation name for generating text\n */\nexport const GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_text';\n\n/**\n * The span operation name for streaming text\n */\nexport const GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_text';\n\n/**\n * The span operation name for generating object\n */\nexport const GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_object';\n\n/**\n * The span operation name for streaming object\n */\nexport const 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 */\nexport const GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = 'gen_ai.embeddings.input';\n\n/**\n * The span operation name for embedding\n */\nexport const GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embed';\n\n/**\n * The span operation name for embedding many\n */\nexport const GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embed_many';\n\n/**\n * The span operation name for executing a tool\n */\nexport const GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = 'gen_ai.execute_tool';\n\n/**\n * The tool name for tool call spans\n */\nexport const GEN_AI_TOOL_NAME_ATTRIBUTE = 'gen_ai.tool.name';\n\n/**\n * The tool call ID\n */\nexport const GEN_AI_TOOL_CALL_ID_ATTRIBUTE = 'gen_ai.tool.call.id';\n\n/**\n * The tool type (e.g., 'function')\n */\nexport const GEN_AI_TOOL_TYPE_ATTRIBUTE = 'gen_ai.tool.type';\n\n/**\n * The tool input/arguments\n */\nexport const GEN_AI_TOOL_INPUT_ATTRIBUTE = 'gen_ai.tool.input';\n\n/**\n * The tool output/result\n */\nexport const GEN_AI_TOOL_OUTPUT_ATTRIBUTE = 'gen_ai.tool.output';\n\n// =============================================================================\n// OPENAI-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/**\n * The response ID from OpenAI\n */\nexport const OPENAI_RESPONSE_ID_ATTRIBUTE = 'openai.response.id';\n\n/**\n * The response model from OpenAI\n */\nexport const OPENAI_RESPONSE_MODEL_ATTRIBUTE = 'openai.response.model';\n\n/**\n * The response timestamp from OpenAI (ISO string)\n */\nexport const OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'openai.response.timestamp';\n\n/**\n * The number of completion tokens used\n */\nexport const OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'openai.usage.completion_tokens';\n\n/**\n * The number of prompt tokens used\n */\nexport const 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 */\nexport const OPENAI_OPERATIONS = {\n CHAT: 'chat',\n EMBEDDINGS: 'embeddings',\n} as const;\n\n// =============================================================================\n// ANTHROPIC AI OPERATIONS\n// =============================================================================\n\n/**\n * The response timestamp from Anthropic AI (ISO string)\n */\nexport const ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'anthropic.response.timestamp';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/messageTruncation.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/messageTruncation.js new file mode 100644 index 0000000..241c726 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/messageTruncation.js @@ -0,0 +1,382 @@ +/** + * Default maximum size in bytes for GenAI messages. + * Messages exceeding this limit will be truncated. + */ +const DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000; + +/** + * Message format used by OpenAI and Anthropic APIs. + */ + +/** + * Calculate the UTF-8 byte length of a string. + */ +const utf8Bytes = (text) => { + return new TextEncoder().encode(text).length; +}; + +/** + * Calculate the UTF-8 byte length of a value's JSON representation. + */ +const jsonBytes = (value) => { + return utf8Bytes(JSON.stringify(value)); +}; + +/** + * Truncate a string to fit within maxBytes when encoded as UTF-8. + * Uses binary search for efficiency with multi-byte characters. + * + * @param text - The string to truncate + * @param maxBytes - Maximum byte length (UTF-8 encoded) + * @returns Truncated string that fits within maxBytes + */ +function truncateTextByBytes(text, maxBytes) { + if (utf8Bytes(text) <= maxBytes) { + return text; + } + + let low = 0; + let high = text.length; + let bestFit = ''; + + while (low <= high) { + const mid = Math.floor((low + high) / 2); + const candidate = text.slice(0, mid); + const byteSize = utf8Bytes(candidate); + + if (byteSize <= maxBytes) { + bestFit = candidate; + low = mid + 1; + } else { + high = mid - 1; + } + } + + return bestFit; +} + +/** + * Extract text content from a Google GenAI message part. + * Parts are either plain strings or objects with a text property. + * + * @returns The text content + */ +function getPartText(part) { + if (typeof part === 'string') { + return part; + } + if ('text' in part) return part.text; + return ''; +} + +/** + * Create a new part with updated text content while preserving the original structure. + * + * @param part - Original part (string or object) + * @param text - New text content + * @returns New part with updated text + */ +function withPartText(part, text) { + if (typeof part === 'string') { + return text; + } + return { ...part, text }; +} + +/** + * Check if a message has the OpenAI/Anthropic content format. + */ +function isContentMessage(message) { + return ( + message !== null && + typeof message === 'object' && + 'content' in message && + typeof (message ).content === 'string' + ); +} + +/** + * Check if a message has the OpenAI/Anthropic content array format. + */ +function isContentArrayMessage(message) { + return message !== null && typeof message === 'object' && 'content' in message && Array.isArray(message.content); +} + +/** + * Check if a content part is an OpenAI/Anthropic media source + */ +function isContentMedia(part) { + if (!part || typeof part !== 'object') return false; + + return ( + isContentMediaSource(part) || + hasInlineData(part) || + ('media_type' in part && typeof part.media_type === 'string' && 'data' in part) || + ('image_url' in part && typeof part.image_url === 'string' && part.image_url.startsWith('data:')) || + ('type' in part && (part.type === 'blob' || part.type === 'base64')) || + 'b64_json' in part || + ('type' in part && 'result' in part && part.type === 'image_generation') || + ('uri' in part && typeof part.uri === 'string' && part.uri.startsWith('data:')) + ); +} +function isContentMediaSource(part) { + return 'type' in part && typeof part.type === 'string' && 'source' in part && isContentMedia(part.source); +} +function hasInlineData(part) { + return ( + 'inlineData' in part && + !!part.inlineData && + typeof part.inlineData === 'object' && + 'data' in part.inlineData && + typeof part.inlineData.data === 'string' + ); +} + +/** + * Check if a message has the Google GenAI parts format. + */ +function isPartsMessage(message) { + return ( + message !== null && + typeof message === 'object' && + 'parts' in message && + Array.isArray((message ).parts) && + (message ).parts.length > 0 + ); +} + +/** + * Truncate a message with `content: string` format (OpenAI/Anthropic). + * + * @param message - Message with content property + * @param maxBytes - Maximum byte limit + * @returns Array with truncated message, or empty array if it doesn't fit + */ +function truncateContentMessage(message, maxBytes) { + // Calculate overhead (message structure without content) + const emptyMessage = { ...message, content: '' }; + const overhead = jsonBytes(emptyMessage); + const availableForContent = maxBytes - overhead; + + if (availableForContent <= 0) { + return []; + } + + const truncatedContent = truncateTextByBytes(message.content, availableForContent); + return [{ ...message, content: truncatedContent }]; +} + +/** + * Truncate a message with `parts: [...]` format (Google GenAI). + * Keeps as many complete parts as possible, only truncating the first part if needed. + * + * @param message - Message with parts array + * @param maxBytes - Maximum byte limit + * @returns Array with truncated message, or empty array if it doesn't fit + */ +function truncatePartsMessage(message, maxBytes) { + const { parts } = message; + + // Calculate overhead by creating empty text parts + const emptyParts = parts.map(part => withPartText(part, '')); + const overhead = jsonBytes({ ...message, parts: emptyParts }); + let remainingBytes = maxBytes - overhead; + + if (remainingBytes <= 0) { + return []; + } + + // Include parts until we run out of space + const includedParts = []; + + for (const part of parts) { + const text = getPartText(part); + const textSize = utf8Bytes(text); + + if (textSize <= remainingBytes) { + // Part fits: include it as-is + includedParts.push(part); + remainingBytes -= textSize; + } else if (includedParts.length === 0) { + // First part doesn't fit: truncate it + const truncated = truncateTextByBytes(text, remainingBytes); + if (truncated) { + includedParts.push(withPartText(part, truncated)); + } + break; + } else { + // Subsequent part doesn't fit: stop here + break; + } + } + + /* c8 ignore start + * for type safety only, algorithm guarantees SOME text included */ + if (includedParts.length <= 0) { + return []; + } else { + /* c8 ignore stop */ + return [{ ...message, parts: includedParts }]; + } +} + +/** + * Truncate a single message to fit within maxBytes. + * + * Supports two message formats: + * - OpenAI/Anthropic: `{ ..., content: string }` + * - Google GenAI: `{ ..., parts: Array }` + * + * @param message - The message to truncate + * @param maxBytes - Maximum byte limit for the message + * @returns Array containing the truncated message, or empty array if truncation fails + */ +function truncateSingleMessage(message, maxBytes) { + if (!message) return []; + + // Handle plain strings (e.g., embeddings input) + if (typeof message === 'string') { + const truncated = truncateTextByBytes(message, maxBytes); + return truncated ? [truncated] : []; + } + + if (typeof message !== 'object') { + return []; + } + + if (isContentMessage(message)) { + return truncateContentMessage(message, maxBytes); + } + + if (isPartsMessage(message)) { + return truncatePartsMessage(message, maxBytes); + } + + // Unknown message format: cannot truncate safely + return []; +} + +const REMOVED_STRING = '[Filtered]'; + +const MEDIA_FIELDS = ['image_url', 'data', 'content', 'b64_json', 'result', 'uri'] ; + +function stripInlineMediaFromSingleMessage(part) { + const strip = { ...part }; + if (isContentMedia(strip.source)) { + strip.source = stripInlineMediaFromSingleMessage(strip.source); + } + // google genai inline data blob objects + if (hasInlineData(part)) { + strip.inlineData = { ...part.inlineData, data: REMOVED_STRING }; + } + for (const field of MEDIA_FIELDS) { + if (typeof strip[field] === 'string') strip[field] = REMOVED_STRING; + } + return strip; +} + +/** + * Strip the inline media from message arrays. + * + * This returns a stripped message. We do NOT want to mutate the data in place, + * because of course we still want the actual API/client to handle the media. + */ +function stripInlineMediaFromMessages(messages) { + const stripped = messages.map(message => { + let newMessage = undefined; + if (!!message && typeof message === 'object') { + if (isContentArrayMessage(message)) { + newMessage = { + ...message, + content: stripInlineMediaFromMessages(message.content), + }; + } else if ('content' in message && isContentMedia(message.content)) { + newMessage = { + ...message, + content: stripInlineMediaFromSingleMessage(message.content), + }; + } + if (isPartsMessage(message)) { + newMessage = { + // might have to strip content AND parts + ...(newMessage ?? message), + parts: stripInlineMediaFromMessages(message.parts), + }; + } + if (isContentMedia(newMessage)) { + newMessage = stripInlineMediaFromSingleMessage(newMessage); + } else if (isContentMedia(message)) { + newMessage = stripInlineMediaFromSingleMessage(message); + } + } + return newMessage ?? message; + }); + return stripped; +} + +/** + * Truncate an array of messages to fit within a byte limit. + * + * Strategy: + * - Always keeps only the last (newest) message + * - Strips inline media from the message + * - Truncates the message content if it exceeds the byte limit + * + * @param messages - Array of messages to truncate + * @param maxBytes - Maximum total byte limit for the message + * @returns Array containing only the last message (possibly truncated) + * + * @example + * ```ts + * const messages = [msg1, msg2, msg3, msg4]; // newest is msg4 + * const truncated = truncateMessagesByBytes(messages, 10000); + * // Returns [msg4] (truncated if needed) + * ``` + */ +function truncateMessagesByBytes(messages, maxBytes) { + // Early return for empty or invalid input + if (!Array.isArray(messages) || messages.length === 0) { + return messages; + } + + // Always keep only the last message + const lastMessage = messages[messages.length - 1]; + + // Strip inline media from the single message + const stripped = stripInlineMediaFromMessages([lastMessage]); + const strippedMessage = stripped[0]; + + // Check if it fits + const messageBytes = jsonBytes(strippedMessage); + if (messageBytes <= maxBytes) { + return stripped; + } + + // Truncate the single message if needed + return truncateSingleMessage(strippedMessage, maxBytes); +} + +/** + * Truncate GenAI messages using the default byte limit. + * + * Convenience wrapper around `truncateMessagesByBytes` with the default limit. + * + * @param messages - Array of messages to truncate + * @returns Truncated array of messages + */ +function truncateGenAiMessages(messages) { + return truncateMessagesByBytes(messages, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT); +} + +/** + * Truncate GenAI string input using the default byte limit. + * + * @param input - The string to truncate + * @returns Truncated string + */ +function truncateGenAiStringInput(input) { + return truncateTextByBytes(input, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT); +} + +export { DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT, truncateGenAiMessages, truncateGenAiStringInput }; +//# sourceMappingURL=messageTruncation.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/messageTruncation.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/messageTruncation.js.map new file mode 100644 index 0000000..4ba0979 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/messageTruncation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"messageTruncation.js","sources":["../../../../src/tracing/ai/messageTruncation.ts"],"sourcesContent":["/**\n * Default maximum size in bytes for GenAI messages.\n * Messages exceeding this limit will be truncated.\n */\nexport const DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000;\n\n/**\n * Message format used by OpenAI and Anthropic APIs.\n */\ntype ContentMessage = {\n [key: string]: unknown;\n content: string;\n};\n\n/**\n * Message format used by OpenAI and Anthropic APIs for media.\n */\ntype ContentArrayMessage = {\n [key: string]: unknown;\n content: {\n [key: string]: unknown;\n type: string;\n }[];\n};\n\n/**\n * Inline media content source, with a potentially very large base64\n * blob or data: uri.\n */\ntype ContentMedia = Record &\n (\n | {\n media_type: string;\n data: string;\n }\n | {\n image_url: `data:${string}`;\n }\n | {\n type: 'blob' | 'base64';\n content: string;\n }\n | {\n b64_json: string;\n }\n | {\n uri: `data:${string}`;\n }\n );\n\n/**\n * Message format used by Google GenAI API.\n * Parts can be strings or objects with a text property.\n */\ntype PartsMessage = {\n [key: string]: unknown;\n parts: Array;\n};\n\n/**\n * A part in a Google GenAI message that contains text.\n */\ntype TextPart = string | { text: string };\n\n/**\n * A part in a Google GenAI that contains media.\n */\ntype MediaPart = {\n type: string;\n content: string;\n};\n\n/**\n * Calculate the UTF-8 byte length of a string.\n */\nconst utf8Bytes = (text: string): number => {\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: unknown): number => {\n return utf8Bytes(JSON.stringify(value));\n};\n\n/**\n * Truncate a string to fit within maxBytes 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 (UTF-8 encoded)\n * @returns Truncated string that fits within maxBytes\n */\nfunction truncateTextByBytes(text: string, maxBytes: number): string {\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 Google GenAI message part.\n * Parts are either plain strings or objects with a text property.\n *\n * @returns The text content\n */\nfunction getPartText(part: TextPart | MediaPart): string {\n if (typeof part === 'string') {\n return part;\n }\n if ('text' in part) return part.text;\n return '';\n}\n\n/**\n * Create a new part with updated text content while preserving the original structure.\n *\n * @param part - Original part (string or object)\n * @param text - New text content\n * @returns New part with updated text\n */\nfunction withPartText(part: TextPart | MediaPart, text: string): TextPart {\n if (typeof part === 'string') {\n return text;\n }\n return { ...part, text };\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content format.\n */\nfunction isContentMessage(message: unknown): message is ContentMessage {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'content' in message &&\n typeof (message as ContentMessage).content === 'string'\n );\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content array format.\n */\nfunction isContentArrayMessage(message: unknown): message is ContentArrayMessage {\n return message !== null && typeof message === 'object' && 'content' in message && Array.isArray(message.content);\n}\n\n/**\n * Check if a content part is an OpenAI/Anthropic media source\n */\nfunction isContentMedia(part: unknown): part is ContentMedia {\n if (!part || typeof part !== 'object') return false;\n\n return (\n isContentMediaSource(part) ||\n hasInlineData(part) ||\n ('media_type' in part && typeof part.media_type === 'string' && 'data' in part) ||\n ('image_url' in part && typeof part.image_url === 'string' && part.image_url.startsWith('data:')) ||\n ('type' in part && (part.type === 'blob' || part.type === 'base64')) ||\n 'b64_json' in part ||\n ('type' in part && 'result' in part && part.type === 'image_generation') ||\n ('uri' in part && typeof part.uri === 'string' && part.uri.startsWith('data:'))\n );\n}\nfunction isContentMediaSource(part: NonNullable): boolean {\n return 'type' in part && typeof part.type === 'string' && 'source' in part && isContentMedia(part.source);\n}\nfunction hasInlineData(part: NonNullable): part is { inlineData: { data?: string } } {\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\n/**\n * Check if a message has the Google GenAI parts format.\n */\nfunction isPartsMessage(message: unknown): message is PartsMessage {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'parts' in message &&\n Array.isArray((message as PartsMessage).parts) &&\n (message as PartsMessage).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: ContentMessage, maxBytes: number): unknown[] {\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 * Truncate a message with `parts: [...]` format (Google GenAI).\n * Keeps as many complete parts as possible, only truncating the first part if needed.\n *\n * @param message - Message with parts array\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncatePartsMessage(message: PartsMessage, maxBytes: number): unknown[] {\n const { parts } = message;\n\n // Calculate overhead by creating empty text parts\n const emptyParts = parts.map(part => withPartText(part, ''));\n const overhead = jsonBytes({ ...message, parts: emptyParts });\n let remainingBytes = maxBytes - overhead;\n\n if (remainingBytes <= 0) {\n return [];\n }\n\n // Include parts until we run out of space\n const includedParts: (TextPart | MediaPart)[] = [];\n\n for (const part of parts) {\n const text = getPartText(part);\n const textSize = utf8Bytes(text);\n\n if (textSize <= remainingBytes) {\n // Part fits: include it as-is\n includedParts.push(part);\n remainingBytes -= textSize;\n } else if (includedParts.length === 0) {\n // First part doesn't fit: truncate it\n const truncated = truncateTextByBytes(text, remainingBytes);\n if (truncated) {\n includedParts.push(withPartText(part, truncated));\n }\n break;\n } else {\n // Subsequent part 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 (includedParts.length <= 0) {\n return [];\n } else {\n /* c8 ignore stop */\n return [{ ...message, parts: includedParts }];\n }\n}\n\n/**\n * Truncate a single message to fit within maxBytes.\n *\n * Supports two message formats:\n * - OpenAI/Anthropic: `{ ..., content: string }`\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: unknown, maxBytes: number): unknown[] {\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 (isPartsMessage(message)) {\n return truncatePartsMessage(message, maxBytes);\n }\n\n // Unknown message format: cannot truncate safely\n return [];\n}\n\nconst REMOVED_STRING = '[Filtered]';\n\nconst MEDIA_FIELDS = ['image_url', 'data', 'content', 'b64_json', 'result', 'uri'] as const;\n\nfunction stripInlineMediaFromSingleMessage(part: ContentMedia): ContentMedia {\n const strip = { ...part };\n if (isContentMedia(strip.source)) {\n strip.source = stripInlineMediaFromSingleMessage(strip.source);\n }\n // google genai inline data blob objects\n if (hasInlineData(part)) {\n strip.inlineData = { ...part.inlineData, 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\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: unknown[]): unknown[] {\n const stripped = messages.map(message => {\n let newMessage: Record | undefined = 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: unknown[], maxBytes: number): unknown[] {\n // Early return for empty or invalid input\n if (!Array.isArray(messages) || messages.length === 0) {\n return messages;\n }\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 <= maxBytes) {\n return stripped;\n }\n\n // Truncate the single message if needed\n return truncateSingleMessage(strippedMessage, maxBytes);\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 */\nexport function truncateGenAiMessages(messages: unknown[]): unknown[] {\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 */\nexport function truncateGenAiStringInput(input: string): string {\n return truncateTextByBytes(input, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/utils.js new file mode 100644 index 0000000..fc8bc29 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/utils.js @@ -0,0 +1,149 @@ +import { GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE } from './gen-ai-attributes.js'; +import { truncateGenAiStringInput, truncateGenAiMessages } from './messageTruncation.js'; + +/** + * Maps AI method paths to OpenTelemetry semantic convention operation names + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +function getFinalOperationName(methodPath) { + if (methodPath.includes('messages')) { + return 'chat'; + } + if (methodPath.includes('completions')) { + return 'text_completion'; + } + // Google GenAI: models.generateContent* -> generate_content (actually generates AI responses) + if (methodPath.includes('generateContent')) { + return 'generate_content'; + } + // Anthropic: models.get/retrieve -> models (metadata retrieval only) + if (methodPath.includes('models')) { + return 'models'; + } + if (methodPath.includes('chat')) { + return 'chat'; + } + return methodPath.split('.').pop() || 'unknown'; +} + +/** + * Get the span operation for AI methods + * Following Sentry's convention: "gen_ai.{operation_name}" + */ +function getSpanOperation(methodPath) { + return `gen_ai.${getFinalOperationName(methodPath)}`; +} + +/** + * Build method path from current traversal + */ +function buildMethodPath(currentPath, prop) { + return currentPath ? `${currentPath}.${prop}` : prop; +} + +/** + * Set token usage attributes + * @param span - The span to add attributes to + * @param promptTokens - The number of prompt tokens + * @param completionTokens - The number of completion tokens + * @param cachedInputTokens - The number of cached input tokens + * @param cachedOutputTokens - The number of cached output tokens + */ +function setTokenUsageAttributes( + span, + promptTokens, + completionTokens, + cachedInputTokens, + cachedOutputTokens, +) { + if (promptTokens !== undefined) { + span.setAttributes({ + [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens, + }); + } + if (completionTokens !== undefined) { + span.setAttributes({ + [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens, + }); + } + if ( + promptTokens !== undefined || + completionTokens !== undefined || + cachedInputTokens !== undefined || + cachedOutputTokens !== undefined + ) { + /** + * Total input tokens in a request is the summation of `input_tokens`, + * `cache_creation_input_tokens`, and `cache_read_input_tokens`. + */ + const totalTokens = + (promptTokens ?? 0) + (completionTokens ?? 0) + (cachedInputTokens ?? 0) + (cachedOutputTokens ?? 0); + + span.setAttributes({ + [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens, + }); + } +} + +/** + * Get the truncated JSON string for a string or array of strings. + * + * @param value - The string or array of strings to truncate + * @returns The truncated JSON string + */ +function getTruncatedJsonString(value) { + if (typeof value === 'string') { + // Some values are already JSON strings, so we don't need to duplicate the JSON parsing + return truncateGenAiStringInput(value); + } + if (Array.isArray(value)) { + // truncateGenAiMessages returns an array of strings, so we need to stringify it + const truncatedMessages = truncateGenAiMessages(value); + return JSON.stringify(truncatedMessages); + } + // value is an object, so we need to stringify it + return JSON.stringify(value); +} + +/** + * Extract system instructions from messages array. + * Finds the first system message and formats it according to OpenTelemetry semantic conventions. + * + * @param messages - Array of messages to extract system instructions from + * @returns systemInstructions (JSON string) and filteredMessages (without system message) + */ +function extractSystemInstructions(messages) + + { + if (!Array.isArray(messages)) { + return { systemInstructions: undefined, filteredMessages: messages }; + } + + const systemMessageIndex = messages.findIndex( + msg => msg && typeof msg === 'object' && 'role' in msg && (msg ).role === 'system', + ); + + if (systemMessageIndex === -1) { + return { systemInstructions: undefined, filteredMessages: messages }; + } + + const systemMessage = messages[systemMessageIndex] ; + const systemContent = + typeof systemMessage.content === 'string' + ? systemMessage.content + : systemMessage.content !== undefined + ? JSON.stringify(systemMessage.content) + : undefined; + + if (!systemContent) { + return { systemInstructions: undefined, filteredMessages: messages }; + } + + const systemInstructions = JSON.stringify([{ type: 'text', content: systemContent }]); + const filteredMessages = [...messages.slice(0, systemMessageIndex), ...messages.slice(systemMessageIndex + 1)]; + + return { systemInstructions, filteredMessages }; +} + +export { buildMethodPath, extractSystemInstructions, getFinalOperationName, getSpanOperation, getTruncatedJsonString, setTokenUsageAttributes }; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/utils.js.map new file mode 100644 index 0000000..524e9e9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/ai/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/ai/utils.ts"],"sourcesContent":["/**\n * Shared utils for AI integrations (OpenAI, Anthropic, Verce.AI, etc.)\n */\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from './gen-ai-attributes';\nimport { truncateGenAiMessages, truncateGenAiStringInput } from './messageTruncation';\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 */\nexport function getFinalOperationName(methodPath: string): string {\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 */\nexport function getSpanOperation(methodPath: string): string {\n return `gen_ai.${getFinalOperationName(methodPath)}`;\n}\n\n/**\n * Build method path from current traversal\n */\nexport function buildMethodPath(currentPath: string, prop: string): string {\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 */\nexport function setTokenUsageAttributes(\n span: Span,\n promptTokens?: number,\n completionTokens?: number,\n cachedInputTokens?: number,\n cachedOutputTokens?: number,\n): void {\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 */\nexport function getTruncatedJsonString(value: T | T[]): string {\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 */\nexport function extractSystemInstructions(messages: unknown[] | unknown): {\n systemInstructions: string | undefined;\n filteredMessages: unknown[] | unknown;\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 as { role: string }).role === 'system',\n );\n\n if (systemMessageIndex === -1) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessage = messages[systemMessageIndex] as { role: string; content?: string | unknown };\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/constants.js new file mode 100644 index 0000000..3d798ae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/constants.js @@ -0,0 +1,16 @@ +const ANTHROPIC_AI_INTEGRATION_NAME = 'Anthropic_AI'; + +// https://docs.anthropic.com/en/api/messages +// https://docs.anthropic.com/en/api/models-list +const ANTHROPIC_AI_INSTRUMENTED_METHODS = [ + 'messages.create', + 'messages.stream', + 'messages.countTokens', + 'models.get', + 'completions.create', + 'models.retrieve', + 'beta.messages.create', +] ; + +export { ANTHROPIC_AI_INSTRUMENTED_METHODS, ANTHROPIC_AI_INTEGRATION_NAME }; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/constants.js.map new file mode 100644 index 0000000..0f83cfa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/anthropic-ai/constants.ts"],"sourcesContent":["export 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\nexport const 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] as const;\n"],"names":[],"mappings":"AAAO,MAAM,6BAAA,GAAgC;;AAE7C;AACA;AACO,MAAM,oCAAoC;AACjD,EAAE,iBAAiB;AACnB,EAAE,iBAAiB;AACnB,EAAE,sBAAsB;AACxB,EAAE,YAAY;AACd,EAAE,oBAAoB;AACtB,EAAE,iBAAiB;AACnB,EAAE,sBAAsB;AACxB,CAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/index.js new file mode 100644 index 0000000..913a9cd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/index.js @@ -0,0 +1,339 @@ +import { getClient } from '../../currentScopes.js'; +import { captureException } from '../../exports.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js'; +import { SPAN_STATUS_ERROR } from '../spanstatus.js'; +import { startSpan, startSpanManual } from '../trace.js'; +import { handleCallbackErrors } from '../../utils/handleCallbackErrors.js'; +import { 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'; +import { getFinalOperationName, getSpanOperation, setTokenUsageAttributes, buildMethodPath } from '../ai/utils.js'; +import { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming.js'; +import { shouldInstrument, messagesFromParams, setMessagesAttribute, handleResponseError } from './utils.js'; + +/** + * Extract request attributes from method arguments + */ +function extractRequestAttributes(args, methodPath) { + const attributes = { + [GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic', + [GEN_AI_OPERATION_NAME_ATTRIBUTE]: getFinalOperationName(methodPath), + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic', + }; + + if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) { + const params = args[0] ; + if (params.tools && Array.isArray(params.tools)) { + attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(params.tools); + } + + attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = params.model ?? 'unknown'; + if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature; + if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p; + if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream; + if ('top_k' in params) attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = params.top_k; + if ('frequency_penalty' in params) + attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty; + if ('max_tokens' in params) attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = params.max_tokens; + } else { + if (methodPath === 'models.retrieve' || methodPath === 'models.get') { + // models.retrieve(model-id) and models.get(model-id) + attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = args[0]; + } else { + attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown'; + } + } + + return attributes; +} + +/** + * Add private request attributes to spans. + * This is only recorded if recordInputs is true. + */ +function addPrivateRequestAttributes(span, params) { + const messages = messagesFromParams(params); + setMessagesAttribute(span, messages); + + if ('prompt' in params) { + span.setAttributes({ [GEN_AI_PROMPT_ATTRIBUTE]: JSON.stringify(params.prompt) }); + } +} + +/** + * Add content attributes when recordOutputs is enabled + */ +function addContentAttributes(span, response) { + // Messages.create + if ('content' in response) { + if (Array.isArray(response.content)) { + span.setAttributes({ + [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.content + .map((item) => item.text) + .filter(text => !!text) + .join(''), + }); + + const toolCalls = []; + + for (const item of response.content) { + if (item.type === 'tool_use' || item.type === 'server_tool_use') { + toolCalls.push(item); + } + } + if (toolCalls.length > 0) { + span.setAttributes({ [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls) }); + } + } + } + // Completions.create + if ('completion' in response) { + span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.completion }); + } + // Models.countTokens + if ('input_tokens' in response) { + span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(response.input_tokens) }); + } +} + +/** + * Add basic metadata attributes from the response + */ +function addMetadataAttributes(span, response) { + if ('id' in response && 'model' in response) { + span.setAttributes({ + [GEN_AI_RESPONSE_ID_ATTRIBUTE]: response.id, + [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model, + }); + + if ('created' in response && typeof response.created === 'number') { + span.setAttributes({ + [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created * 1000).toISOString(), + }); + } + if ('created_at' in response && typeof response.created_at === 'number') { + span.setAttributes({ + [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created_at * 1000).toISOString(), + }); + } + + if ('usage' in response && response.usage) { + setTokenUsageAttributes( + span, + response.usage.input_tokens, + response.usage.output_tokens, + response.usage.cache_creation_input_tokens, + response.usage.cache_read_input_tokens, + ); + } + } +} + +/** + * Add response attributes to spans + */ +function addResponseAttributes(span, response, recordOutputs) { + if (!response || typeof response !== 'object') return; + + // capture error, do not add attributes if error (they shouldn't exist) + if ('type' in response && response.type === 'error') { + handleResponseError(span, response); + return; + } + + // Private response attributes that are only recorded if recordOutputs is true. + if (recordOutputs) { + addContentAttributes(span, response); + } + + // Add basic metadata attributes + addMetadataAttributes(span, response); +} + +/** + * Handle common error catching and reporting for streaming requests + */ +function handleStreamingError(error, span, methodPath) { + captureException(error, { + mechanism: { handled: false, type: 'auto.ai.anthropic', data: { function: methodPath } }, + }); + + if (span.isRecording()) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' }); + span.end(); + } + throw error; +} + +/** + * Handle streaming cases with common logic + */ +function handleStreamingRequest( + originalMethod, + target, + context, + args, + requestAttributes, + operationName, + methodPath, + params, + options, + isStreamRequested, + isStreamingMethod, +) { + const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown'; + const spanConfig = { + name: `${operationName} ${model} stream-response`, + op: getSpanOperation(methodPath), + attributes: requestAttributes , + }; + + // messages.stream() always returns a sync MessageStream, even with stream: true param + if (isStreamRequested && !isStreamingMethod) { + return startSpanManual(spanConfig, async span => { + try { + if (options.recordInputs && params) { + addPrivateRequestAttributes(span, params); + } + const result = await originalMethod.apply(context, args); + return instrumentAsyncIterableStream( + result , + span, + options.recordOutputs ?? false, + ) ; + } catch (error) { + return handleStreamingError(error, span, methodPath); + } + }); + } else { + return startSpanManual(spanConfig, span => { + try { + if (options.recordInputs && params) { + addPrivateRequestAttributes(span, params); + } + const messageStream = target.apply(context, args); + return instrumentMessageStream(messageStream, span, options.recordOutputs ?? false); + } catch (error) { + return handleStreamingError(error, span, methodPath); + } + }); + } +} + +/** + * Instrument a method with Sentry spans + * Following Sentry AI Agents Manual Instrumentation conventions + * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation + */ +function instrumentMethod( + originalMethod, + methodPath, + context, + options, +) { + return new Proxy(originalMethod, { + apply(target, thisArg, args) { + const requestAttributes = extractRequestAttributes(args, methodPath); + const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown'; + const operationName = getFinalOperationName(methodPath); + + const params = typeof args[0] === 'object' ? (args[0] ) : undefined; + const isStreamRequested = Boolean(params?.stream); + const isStreamingMethod = methodPath === 'messages.stream'; + + if (isStreamRequested || isStreamingMethod) { + return handleStreamingRequest( + originalMethod, + target, + context, + args, + requestAttributes, + operationName, + methodPath, + params, + options, + isStreamRequested, + isStreamingMethod, + ); + } + + return startSpan( + { + name: `${operationName} ${model}`, + op: getSpanOperation(methodPath), + attributes: requestAttributes , + }, + span => { + if (options.recordInputs && params) { + addPrivateRequestAttributes(span, params); + } + + return handleCallbackErrors( + () => target.apply(context, args), + error => { + captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.anthropic', + data: { + function: methodPath, + }, + }, + }); + }, + () => {}, + result => addResponseAttributes(span, result , options.recordOutputs), + ); + }, + ); + }, + }) ; +} + +/** + * Create a deep proxy for Anthropic AI client instrumentation + */ +function createDeepProxy(target, currentPath = '', options) { + return new Proxy(target, { + get(obj, prop) { + const value = (obj )[prop]; + const methodPath = buildMethodPath(currentPath, String(prop)); + + if (typeof value === 'function' && shouldInstrument(methodPath)) { + return instrumentMethod(value , methodPath, obj, options); + } + + if (typeof value === 'function') { + // Bind non-instrumented functions to preserve the original `this` context, + return value.bind(obj); + } + + if (value && typeof value === 'object') { + return createDeepProxy(value, methodPath, options); + } + + return value; + }, + }) ; +} + +/** + * Instrument an Anthropic AI client with Sentry tracing + * Can be used across Node.js, Cloudflare Workers, and Vercel Edge + * + * @template T - The type of the client that extends object + * @param client - The Anthropic AI client to instrument + * @param options - Optional configuration for recording inputs and outputs + * @returns The instrumented client with the same type as the input + */ +function instrumentAnthropicAiClient(anthropicAiClient, options) { + const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii); + + const _options = { + recordInputs: sendDefaultPii, + recordOutputs: sendDefaultPii, + ...options, + }; + return createDeepProxy(anthropicAiClient, '', _options); +} + +export { instrumentAnthropicAiClient }; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/index.js.map new file mode 100644 index 0000000..37f32c0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/anthropic-ai/index.ts"],"sourcesContent":["import { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport { handleCallbackErrors } from '../../utils/handleCallbackErrors';\nimport {\n ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_PROMPT_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { buildMethodPath, getFinalOperationName, getSpanOperation, setTokenUsageAttributes } from '../ai/utils';\nimport { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming';\nimport type {\n AnthropicAiInstrumentedMethod,\n AnthropicAiOptions,\n AnthropicAiResponse,\n AnthropicAiStreamingEvent,\n ContentBlock,\n} from './types';\nimport { handleResponseError, messagesFromParams, setMessagesAttribute, shouldInstrument } from './utils';\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], methodPath: string): Record {\n const attributes: Record = {\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] as Record;\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: Span, params: Record): void {\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: Span, response: AnthropicAiResponse): void {\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: ContentBlock) => item.text)\n .filter(text => !!text)\n .join(''),\n });\n\n const toolCalls: Array = [];\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: Span, response: AnthropicAiResponse): void {\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: Span, response: AnthropicAiResponse, recordOutputs?: boolean): void {\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: unknown, span: Span, methodPath: string): never {\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: (...args: T) => R | Promise,\n target: (...args: T) => R | Promise,\n context: unknown,\n args: T,\n requestAttributes: Record,\n operationName: string,\n methodPath: string,\n params: Record | undefined,\n options: AnthropicAiOptions,\n isStreamRequested: boolean,\n isStreamingMethod: boolean,\n): R | Promise {\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const spanConfig = {\n name: `${operationName} ${model} stream-response`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes as Record,\n };\n\n // messages.stream() always returns a sync MessageStream, even with stream: true param\n if (isStreamRequested && !isStreamingMethod) {\n return startSpanManual(spanConfig, async span => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n const result = await originalMethod.apply(context, args);\n return instrumentAsyncIterableStream(\n result as AsyncIterable,\n span,\n options.recordOutputs ?? false,\n ) as unknown as R;\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n });\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: (...args: T) => R | Promise,\n methodPath: AnthropicAiInstrumentedMethod,\n context: unknown,\n options: AnthropicAiOptions,\n): (...args: T) => R | Promise {\n return new Proxy(originalMethod, {\n apply(target, thisArg, args: T): R | Promise {\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] as Record) : 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 return startSpan(\n {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes as Record,\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: {\n handled: false,\n type: 'auto.ai.anthropic',\n data: {\n function: methodPath,\n },\n },\n });\n },\n () => {},\n result => addResponseAttributes(span, result as AnthropicAiResponse, options.recordOutputs),\n );\n },\n );\n },\n }) as (...args: T) => R | Promise;\n}\n\n/**\n * Create a deep proxy for Anthropic AI client instrumentation\n */\nfunction createDeepProxy(target: T, currentPath = '', options: AnthropicAiOptions): T {\n return new Proxy(target, {\n get(obj: object, prop: string): unknown {\n const value = (obj as Record)[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n if (typeof value === 'function' && shouldInstrument(methodPath)) {\n return instrumentMethod(value as (...args: unknown[]) => unknown | Promise, 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 }) as T;\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 */\nexport function instrumentAnthropicAiClient(anthropicAiClient: T, options?: AnthropicAiOptions): T {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n\n const _options = {\n recordInputs: sendDefaultPii,\n recordOutputs: sendDefaultPii,\n ...options,\n };\n return createDeepProxy(anthropicAiClient, '', _options);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/streaming.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/streaming.js new file mode 100644 index 0000000..92e47d7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/streaming.js @@ -0,0 +1,351 @@ +import { captureException } from '../../exports.js'; +import { SPAN_STATUS_ERROR } from '../spanstatus.js'; +import { 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'; +import { setTokenUsageAttributes } from '../ai/utils.js'; + +/** + * State object used to accumulate information from a stream of Anthropic AI events. + */ + +/** + * Checks if an event is an error event + * @param event - The event to process + * @param state - The state of the streaming process + * @param recordOutputs - Whether to record outputs + * @param span - The span to update + * @returns Whether an error occurred + */ + +function isErrorEvent(event, span) { + if ('type' in event && typeof event.type === 'string') { + // If the event is an error, set the span status and capture the error + // These error events are not rejected by the API by default, but are sent as metadata of the response + if (event.type === 'error') { + span.setStatus({ code: SPAN_STATUS_ERROR, message: event.error?.type ?? 'internal_error' }); + captureException(event.error, { + mechanism: { + handled: false, + type: 'auto.ai.anthropic.anthropic_error', + }, + }); + return true; + } + } + return false; +} + +/** + * Processes the message metadata of an event + * @param event - The event to process + * @param state - The state of the streaming process + */ + +function handleMessageMetadata(event, state) { + // The token counts shown in the usage field of the message_delta event are cumulative. + // @see https://docs.anthropic.com/en/docs/build-with-claude/streaming#event-types + if (event.type === 'message_delta' && event.usage) { + if ('output_tokens' in event.usage && typeof event.usage.output_tokens === 'number') { + state.completionTokens = event.usage.output_tokens; + } + } + + if (event.message) { + const message = event.message; + + if (message.id) state.responseId = message.id; + if (message.model) state.responseModel = message.model; + if (message.stop_reason) state.finishReasons.push(message.stop_reason); + + if (message.usage) { + if (typeof message.usage.input_tokens === 'number') state.promptTokens = message.usage.input_tokens; + if (typeof message.usage.cache_creation_input_tokens === 'number') + state.cacheCreationInputTokens = message.usage.cache_creation_input_tokens; + if (typeof message.usage.cache_read_input_tokens === 'number') + state.cacheReadInputTokens = message.usage.cache_read_input_tokens; + } + } +} + +/** + * Handle start of a content block (e.g., tool_use) + */ +function handleContentBlockStart(event, state) { + if (event.type !== 'content_block_start' || typeof event.index !== 'number' || !event.content_block) return; + if (event.content_block.type === 'tool_use' || event.content_block.type === 'server_tool_use') { + state.activeToolBlocks[event.index] = { + id: event.content_block.id, + name: event.content_block.name, + inputJsonParts: [], + }; + } +} + +/** + * Handle deltas of a content block, including input_json_delta for tool_use + */ +function handleContentBlockDelta( + event, + state, + recordOutputs, +) { + if (event.type !== 'content_block_delta' || !event.delta) return; + + // Accumulate tool_use input JSON deltas only when we have an index and an active tool block + if ( + typeof event.index === 'number' && + 'partial_json' in event.delta && + typeof event.delta.partial_json === 'string' + ) { + const active = state.activeToolBlocks[event.index]; + if (active) { + active.inputJsonParts.push(event.delta.partial_json); + } + } + + // Accumulate streamed response text regardless of index + if (recordOutputs && typeof event.delta.text === 'string') { + state.responseTexts.push(event.delta.text); + } +} + +/** + * Handle stop of a content block; finalize tool_use entries + */ +function handleContentBlockStop(event, state) { + if (event.type !== 'content_block_stop' || typeof event.index !== 'number') return; + + const active = state.activeToolBlocks[event.index]; + if (!active) return; + + const raw = active.inputJsonParts.join(''); + let parsedInput; + + try { + parsedInput = raw ? JSON.parse(raw) : {}; + } catch { + parsedInput = { __unparsed: raw }; + } + + state.toolCalls.push({ + type: 'tool_use', + id: active.id, + name: active.name, + input: parsedInput, + }); + + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete state.activeToolBlocks[event.index]; +} + +/** + * Processes an event + * @param event - The event to process + * @param state - The state of the streaming process + * @param recordOutputs - Whether to record outputs + * @param span - The span to update + */ +function processEvent( + event, + state, + recordOutputs, + span, +) { + if (!(event && typeof event === 'object')) { + return; + } + + const isError = isErrorEvent(event, span); + if (isError) return; + + handleMessageMetadata(event, state); + + // Tool call events are sent via 3 separate events: + // - content_block_start (start of the tool call) + // - content_block_delta (delta aka input of the tool call) + // - content_block_stop (end of the tool call) + // We need to handle them all to capture the full tool call. + handleContentBlockStart(event, state); + handleContentBlockDelta(event, state, recordOutputs); + handleContentBlockStop(event, state); +} + +/** + * Finalizes span attributes when stream processing completes + */ +function finalizeStreamSpan(state, span, recordOutputs) { + if (!span.isRecording()) { + return; + } + + // Set common response attributes if available + if (state.responseId) { + span.setAttributes({ + [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId, + }); + } + if (state.responseModel) { + span.setAttributes({ + [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel, + }); + } + + setTokenUsageAttributes( + span, + state.promptTokens, + state.completionTokens, + state.cacheCreationInputTokens, + state.cacheReadInputTokens, + ); + + span.setAttributes({ + [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true, + }); + + if (state.finishReasons.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons), + }); + } + + if (recordOutputs && state.responseTexts.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''), + }); + } + + // Set tool calls if any were captured + if (recordOutputs && state.toolCalls.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls), + }); + } + + span.end(); +} + +/** + * Instruments an async iterable stream of Anthropic events, updates the span with + * streaming attributes and (optionally) the aggregated output text, and yields + * each event from the input stream unchanged. + */ +async function* instrumentAsyncIterableStream( + stream, + span, + recordOutputs, +) { + const state = { + responseTexts: [], + finishReasons: [], + responseId: '', + responseModel: '', + promptTokens: undefined, + completionTokens: undefined, + cacheCreationInputTokens: undefined, + cacheReadInputTokens: undefined, + toolCalls: [], + activeToolBlocks: {}, + }; + + try { + for await (const event of stream) { + processEvent(event, state, recordOutputs, span); + yield event; + } + } finally { + // Set common response attributes if available + if (state.responseId) { + span.setAttributes({ + [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId, + }); + } + if (state.responseModel) { + span.setAttributes({ + [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel, + }); + } + + setTokenUsageAttributes( + span, + state.promptTokens, + state.completionTokens, + state.cacheCreationInputTokens, + state.cacheReadInputTokens, + ); + + span.setAttributes({ + [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true, + }); + + if (state.finishReasons.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons), + }); + } + + if (recordOutputs && state.responseTexts.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''), + }); + } + + // Set tool calls if any were captured + if (recordOutputs && state.toolCalls.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls), + }); + } + + span.end(); + } +} + +/** + * Instruments a MessageStream by registering event handlers and preserving the original stream API. + */ +function instrumentMessageStream( + stream, + span, + recordOutputs, +) { + const state = { + responseTexts: [], + finishReasons: [], + responseId: '', + responseModel: '', + promptTokens: undefined, + completionTokens: undefined, + cacheCreationInputTokens: undefined, + cacheReadInputTokens: undefined, + toolCalls: [], + activeToolBlocks: {}, + }; + + stream.on('streamEvent', (event) => { + processEvent(event , state, recordOutputs, span); + }); + + // The event fired when a message is done being streamed by the API. Corresponds to the message_stop SSE event. + // @see https://github.com/anthropics/anthropic-sdk-typescript/blob/d3be31f5a4e6ebb4c0a2f65dbb8f381ae73a9166/helpers.md?plain=1#L42-L44 + stream.on('message', () => { + finalizeStreamSpan(state, span, recordOutputs); + }); + + stream.on('error', (error) => { + captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.anthropic.stream_error', + }, + }); + + if (span.isRecording()) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'stream_error' }); + span.end(); + } + }); + + return stream; +} + +export { instrumentAsyncIterableStream, instrumentMessageStream }; +//# sourceMappingURL=streaming.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/streaming.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/streaming.js.map new file mode 100644 index 0000000..4953c9d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/streaming.js.map @@ -0,0 +1 @@ +{"version":3,"file":"streaming.js","sources":["../../../../src/tracing/anthropic-ai/streaming.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { setTokenUsageAttributes } from '../ai/utils';\nimport type { AnthropicAiStreamingEvent } from './types';\n\n/**\n * State object used to accumulate information from a stream of Anthropic AI events.\n */\ninterface StreamingState {\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId: string;\n /** The model name. */\n responseModel: string;\n /** Number of prompt/input tokens used. */\n promptTokens: number | undefined;\n /** Number of completion/output tokens used. */\n completionTokens: number | undefined;\n /** Number of cache creation input tokens used. */\n cacheCreationInputTokens: number | undefined;\n /** Number of cache read input tokens used. */\n cacheReadInputTokens: number | undefined;\n /** Accumulated tool calls (finalized) */\n toolCalls: Array>;\n /** In-progress tool call blocks keyed by index */\n activeToolBlocks: Record<\n number,\n {\n id?: string;\n name?: string;\n inputJsonParts: string[];\n }\n >;\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: AnthropicAiStreamingEvent, span: Span): boolean {\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: event.error?.type ?? 'internal_error' });\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: AnthropicAiStreamingEvent, state: StreamingState): void {\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: AnthropicAiStreamingEvent, state: StreamingState): void {\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: AnthropicAiStreamingEvent,\n state: StreamingState,\n recordOutputs: boolean,\n): void {\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: AnthropicAiStreamingEvent, state: StreamingState): void {\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: unknown;\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: AnthropicAiStreamingEvent,\n state: StreamingState,\n recordOutputs: boolean,\n span: Span,\n): void {\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: StreamingState, span: Span, recordOutputs: boolean): void {\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 */\nexport async function* instrumentAsyncIterableStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\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 */\nexport function instrumentMessageStream void }>(\n stream: R,\n span: Span,\n recordOutputs: boolean,\n): R {\n const state: StreamingState = {\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: unknown) => {\n processEvent(event as AnthropicAiStreamingEvent, 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: unknown) => {\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: 'stream_error' });\n span.end();\n }\n });\n\n return stream;\n}\n"],"names":[],"mappings":";;;;;AAcA;AACA;AACA;;AA+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,YAAY,CAAC,KAAK,EAA6B,IAAI,EAAiB;AAC7E,EAAE,IAAI,MAAA,IAAU,KAAA,IAAS,OAAO,KAAK,CAAC,IAAA,KAAS,QAAQ,EAAE;AACzD;AACA;AACA,IAAI,IAAI,KAAK,CAAC,IAAA,KAAS,OAAO,EAAE;AAChC,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,gBAAA,EAAkB,CAAC;AACjG,MAAM,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE;AACpC,QAAQ,SAAS,EAAE;AACnB,UAAU,OAAO,EAAE,KAAK;AACxB,UAAU,IAAI,EAAE,mCAAmC;AACnD,SAAS;AACT,OAAO,CAAC;AACR,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,qBAAqB,CAAC,KAAK,EAA6B,KAAK,EAAwB;AAC9F;AACA;AACA,EAAE,IAAI,KAAK,CAAC,IAAA,KAAS,eAAA,IAAmB,KAAK,CAAC,KAAK,EAAE;AACrD,IAAI,IAAI,eAAA,IAAmB,KAAK,CAAC,KAAA,IAAS,OAAO,KAAK,CAAC,KAAK,CAAC,aAAA,KAAkB,QAAQ,EAAE;AACzF,MAAM,KAAK,CAAC,gBAAA,GAAmB,KAAK,CAAC,KAAK,CAAC,aAAa;AACxD,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AACrB,IAAI,MAAM,OAAA,GAAU,KAAK,CAAC,OAAO;;AAEjC,IAAI,IAAI,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,UAAA,GAAa,OAAO,CAAC,EAAE;AACjD,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,aAAA,GAAgB,OAAO,CAAC,KAAK;AAC1D,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;;AAE1E,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;AACvB,MAAM,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,YAAA,KAAiB,QAAQ,EAAE,KAAK,CAAC,YAAA,GAAe,OAAO,CAAC,KAAK,CAAC,YAAY;AACzG,MAAM,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,2BAAA,KAAgC,QAAQ;AACvE,QAAQ,KAAK,CAAC,wBAAA,GAA2B,OAAO,CAAC,KAAK,CAAC,2BAA2B;AAClF,MAAM,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,uBAAA,KAA4B,QAAQ;AACnE,QAAQ,KAAK,CAAC,oBAAA,GAAuB,OAAO,CAAC,KAAK,CAAC,uBAAuB;AAC1E,IAAI;AACJ,EAAE;AACF;;AAEA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,KAAK,EAA6B,KAAK,EAAwB;AAChG,EAAE,IAAI,KAAK,CAAC,SAAS,qBAAA,IAAyB,OAAO,KAAK,CAAC,KAAA,KAAU,YAAY,CAAC,KAAK,CAAC,aAAa,EAAE;AACvG,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC,IAAA,KAAS,UAAA,IAAc,KAAK,CAAC,aAAa,CAAC,IAAA,KAAS,iBAAiB,EAAE;AACjG,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,IAAI;AAC1C,MAAM,EAAE,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE;AAChC,MAAM,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI;AACpC,MAAM,cAAc,EAAE,EAAE;AACxB,KAAK;AACL,EAAE;AACF;;AAEA;AACA;AACA;AACA,SAAS,uBAAuB;AAChC,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,aAAa;AACf,EAAQ;AACR,EAAE,IAAI,KAAK,CAAC,IAAA,KAAS,qBAAA,IAAyB,CAAC,KAAK,CAAC,KAAK,EAAE;;AAE5D;AACA,EAAE;AACF,IAAI,OAAO,KAAK,CAAC,KAAA,KAAU,QAAA;AAC3B,IAAI,cAAA,IAAkB,KAAK,CAAC,KAAA;AAC5B,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,iBAAiB;AACxC,IAAI;AACJ,IAAI,MAAM,MAAA,GAAS,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;AACtD,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;AAC1D,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,IAAI,aAAA,IAAiB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAA,KAAS,QAAQ,EAAE;AAC7D,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9C,EAAE;AACF;;AAEA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,KAAK,EAA6B,KAAK,EAAwB;AAC/F,EAAE,IAAI,KAAK,CAAC,SAAS,oBAAA,IAAwB,OAAO,KAAK,CAAC,KAAA,KAAU,QAAQ,EAAE;;AAE9E,EAAE,MAAM,MAAA,GAAS,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;AACpD,EAAE,IAAI,CAAC,MAAM,EAAE;;AAEf,EAAE,MAAM,GAAA,GAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,EAAE,IAAI,WAAW;;AAEjB,EAAE,IAAI;AACN,IAAI,WAAA,GAAc,GAAA,GAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA,GAAI,EAAE;AAC5C,EAAE,EAAE,MAAM;AACV,IAAI,cAAc,EAAE,UAAU,EAAE,KAAK;AACrC,EAAE;;AAEF,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AACvB,IAAI,IAAI,EAAE,UAAU;AACpB,IAAI,EAAE,EAAE,MAAM,CAAC,EAAE;AACjB,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI;AACrB,IAAI,KAAK,EAAE,WAAW;AACtB,GAAG,CAAC;;AAEJ;AACA,EAAE,OAAO,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY;AACrB,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,aAAa;AACf,EAAE,IAAI;AACN,EAAQ;AACR,EAAE,IAAI,EAAE,KAAA,IAAS,OAAO,KAAA,KAAU,QAAQ,CAAC,EAAE;AAC7C,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,UAAU,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;AAC3C,EAAE,IAAI,OAAO,EAAE;;AAEf,EAAE,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC;;AAErC;AACA;AACA;AACA;AACA;AACA,EAAE,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC;AACvC,EAAE,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC;AACtD,EAAE,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC;AACtC;;AAEA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAkB,IAAI,EAAQ,aAAa,EAAiB;AAC7F,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AAC3B,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,IAAI,CAAC,aAAa,CAAC;AACvB,MAAM,CAAC,4BAA4B,GAAG,KAAK,CAAC,UAAU;AACtD,KAAK,CAAC;AACN,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,aAAa,EAAE;AAC3B,IAAI,IAAI,CAAC,aAAa,CAAC;AACvB,MAAM,CAAC,+BAA+B,GAAG,KAAK,CAAC,aAAa;AAC5D,KAAK,CAAC;AACN,EAAE;;AAEF,EAAE,uBAAuB;AACzB,IAAI,IAAI;AACR,IAAI,KAAK,CAAC,YAAY;AACtB,IAAI,KAAK,CAAC,gBAAgB;AAC1B,IAAI,KAAK,CAAC,wBAAwB;AAClC,IAAI,KAAK,CAAC,oBAAoB;AAC9B,GAAG;;AAEH,EAAE,IAAI,CAAC,aAAa,CAAC;AACrB,IAAI,CAAC,mCAAmC,GAAG,IAAI;AAC/C,GAAG,CAAC;;AAEJ,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC,MAAA,GAAS,CAAC,EAAE;AACtC,IAAI,IAAI,CAAC,aAAa,CAAC;AACvB,MAAM,CAAC,wCAAwC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;AACrF,KAAK,CAAC;AACN,EAAE;;AAEF,EAAE,IAAI,aAAA,IAAiB,KAAK,CAAC,aAAa,CAAC,MAAA,GAAS,CAAC,EAAE;AACvD,IAAI,IAAI,CAAC,aAAa,CAAC;AACvB,MAAM,CAAC,8BAA8B,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AACpE,KAAK,CAAC;AACN,EAAE;;AAEF;AACA,EAAE,IAAI,aAAA,IAAiB,KAAK,CAAC,SAAS,CAAC,MAAA,GAAS,CAAC,EAAE;AACnD,IAAI,IAAI,CAAC,aAAa,CAAC;AACvB,MAAM,CAAC,oCAAoC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;AAC7E,KAAK,CAAC;AACN,EAAE;;AAEF,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACO,gBAAgB,6BAA6B;AACpD,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,aAAa;AACf,EAA4D;AAC5D,EAAE,MAAM,KAAK,GAAmB;AAChC,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,YAAY,EAAE,SAAS;AAC3B,IAAI,gBAAgB,EAAE,SAAS;AAC/B,IAAI,wBAAwB,EAAE,SAAS;AACvC,IAAI,oBAAoB,EAAE,SAAS;AACnC,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,gBAAgB,EAAE,EAAE;AACxB,GAAG;;AAEH,EAAE,IAAI;AACN,IAAI,WAAW,MAAM,KAAA,IAAS,MAAM,EAAE;AACtC,MAAM,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC;AACrD,MAAM,MAAM,KAAK;AACjB,IAAI;AACJ,EAAE,UAAU;AACZ;AACA,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE;AAC1B,MAAM,IAAI,CAAC,aAAa,CAAC;AACzB,QAAQ,CAAC,4BAA4B,GAAG,KAAK,CAAC,UAAU;AACxD,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE;AAC7B,MAAM,IAAI,CAAC,aAAa,CAAC;AACzB,QAAQ,CAAC,+BAA+B,GAAG,KAAK,CAAC,aAAa;AAC9D,OAAO,CAAC;AACR,IAAI;;AAEJ,IAAI,uBAAuB;AAC3B,MAAM,IAAI;AACV,MAAM,KAAK,CAAC,YAAY;AACxB,MAAM,KAAK,CAAC,gBAAgB;AAC5B,MAAM,KAAK,CAAC,wBAAwB;AACpC,MAAM,KAAK,CAAC,oBAAoB;AAChC,KAAK;;AAEL,IAAI,IAAI,CAAC,aAAa,CAAC;AACvB,MAAM,CAAC,mCAAmC,GAAG,IAAI;AACjD,KAAK,CAAC;;AAEN,IAAI,IAAI,KAAK,CAAC,aAAa,CAAC,MAAA,GAAS,CAAC,EAAE;AACxC,MAAM,IAAI,CAAC,aAAa,CAAC;AACzB,QAAQ,CAAC,wCAAwC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;AACvF,OAAO,CAAC;AACR,IAAI;;AAEJ,IAAI,IAAI,aAAA,IAAiB,KAAK,CAAC,aAAa,CAAC,MAAA,GAAS,CAAC,EAAE;AACzD,MAAM,IAAI,CAAC,aAAa,CAAC;AACzB,QAAQ,CAAC,8BAA8B,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AACtE,OAAO,CAAC;AACR,IAAI;;AAEJ;AACA,IAAI,IAAI,aAAA,IAAiB,KAAK,CAAC,SAAS,CAAC,MAAA,GAAS,CAAC,EAAE;AACrD,MAAM,IAAI,CAAC,aAAa,CAAC;AACzB,QAAQ,CAAC,oCAAoC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;AAC/E,OAAO,CAAC;AACR,IAAI;;AAEJ,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,EAAE;AACF;;AAEA;AACA;AACA;AACO,SAAS,uBAAuB;AACvC,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,aAAa;AACf,EAAK;AACL,EAAE,MAAM,KAAK,GAAmB;AAChC,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,YAAY,EAAE,SAAS;AAC3B,IAAI,gBAAgB,EAAE,SAAS;AAC/B,IAAI,wBAAwB,EAAE,SAAS;AACvC,IAAI,oBAAoB,EAAE,SAAS;AACnC,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,gBAAgB,EAAE,EAAE;AACxB,GAAG;;AAEH,EAAE,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,KAAc;AAC/C,IAAI,YAAY,CAAC,KAAA,GAAoC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC;AAChF,EAAE,CAAC,CAAC;;AAEJ;AACA;AACA,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM;AAC7B,IAAI,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC;AAClD,EAAE,CAAC,CAAC;;AAEJ,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAc;AACzC,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,MAAM,SAAS,EAAE;AACjB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,IAAI,EAAE,gCAAgC;AAC9C,OAAO;AACP,KAAK,CAAC;;AAEN,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC5B,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAA,EAAgB,CAAC;AAC1E,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI;AACJ,EAAE,CAAC,CAAC;;AAEJ,EAAE,OAAO,MAAM;AACf;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/utils.js new file mode 100644 index 0000000..4ed19d2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/utils.js @@ -0,0 +1,73 @@ +import { captureException } from '../../exports.js'; +import { SPAN_STATUS_ERROR } from '../spanstatus.js'; +import { GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE } from '../ai/gen-ai-attributes.js'; +import { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils.js'; +import { ANTHROPIC_AI_INSTRUMENTED_METHODS } from './constants.js'; + +/** + * Check if a method path should be instrumented + */ +function shouldInstrument(methodPath) { + return ANTHROPIC_AI_INSTRUMENTED_METHODS.includes(methodPath ); +} + +/** + * Set the messages and messages original length attributes. + * Extracts system instructions before truncation. + */ +function setMessagesAttribute(span, messages) { + if (Array.isArray(messages) && messages.length === 0) { + return; + } + + const { systemInstructions, filteredMessages } = extractSystemInstructions(messages); + + if (systemInstructions) { + span.setAttributes({ + [GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE]: systemInstructions, + }); + } + + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 1; + span.setAttributes({ + [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages), + [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength, + }); +} + +/** + * Capture error information from the response + * @see https://docs.anthropic.com/en/api/errors#error-shapes + */ +function handleResponseError(span, response) { + if (response.error) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: response.error.type || 'internal_error' }); + + captureException(response.error, { + mechanism: { + handled: false, + type: 'auto.ai.anthropic.anthropic_error', + }, + }); + } +} + +/** + * Include the system prompt in the messages list, if available + */ +function messagesFromParams(params) { + const { system, messages, input } = params; + + const systemMessages = typeof system === 'string' ? [{ role: 'system', content: params.system }] : []; + + const inputParamMessages = Array.isArray(input) ? input : input != null ? [input] : undefined; + + const messagesParamMessages = Array.isArray(messages) ? messages : messages != null ? [messages] : []; + + const userMessages = inputParamMessages ?? messagesParamMessages; + + return [...systemMessages, ...userMessages]; +} + +export { handleResponseError, messagesFromParams, setMessagesAttribute, shouldInstrument }; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/utils.js.map new file mode 100644 index 0000000..98a9345 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/anthropic-ai/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/anthropic-ai/utils.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport { ANTHROPIC_AI_INSTRUMENTED_METHODS } from './constants';\nimport type { AnthropicAiInstrumentedMethod, AnthropicAiResponse } from './types';\n\n/**\n * Check if a method path should be instrumented\n */\nexport function shouldInstrument(methodPath: string): methodPath is AnthropicAiInstrumentedMethod {\n return ANTHROPIC_AI_INSTRUMENTED_METHODS.includes(methodPath as AnthropicAiInstrumentedMethod);\n}\n\n/**\n * Set the messages and messages original length attributes.\n * Extracts system instructions before truncation.\n */\nexport function setMessagesAttribute(span: Span, messages: unknown): void {\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\n/**\n * Capture error information from the response\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nexport function handleResponseError(span: Span, response: AnthropicAiResponse): void {\n if (response.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: response.error.type || 'internal_error' });\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 */\nexport function messagesFromParams(params: Record): unknown[] {\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"],"names":[],"mappings":";;;;;;AAYA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,UAAU,EAAuD;AAClG,EAAE,OAAO,iCAAiC,CAAC,QAAQ,CAAC,YAA4C;AAChG;;AAEA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,IAAI,EAAQ,QAAQ,EAAiB;AAC1E,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAA,IAAK,QAAQ,CAAC,MAAA,KAAW,CAAC,EAAE;AACxD,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,EAAE,kBAAkB,EAAE,gBAAA,KAAqB,yBAAyB,CAAC,QAAQ,CAAC;;AAEtF,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI,IAAI,CAAC,aAAa,CAAC;AACvB,MAAM,CAAC,oCAAoC,GAAG,kBAAkB;AAChE,KAAK,CAAC;AACN,EAAE;;AAEF,EAAE,MAAM,cAAA,GAAiB,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAA,GAAI,gBAAgB,CAAC,MAAA,GAAS,CAAC;AACtF,EAAE,IAAI,CAAC,aAAa,CAAC;AACrB,IAAI,CAAC,+BAA+B,GAAG,sBAAsB,CAAC,gBAAgB,CAAC;AAC/E,IAAI,CAAC,+CAA+C,GAAG,cAAc;AACrE,GAAG,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,IAAI,EAAQ,QAAQ,EAA6B;AACrF,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;AACtB,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,gBAAA,EAAkB,CAAC;;AAEjG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrC,MAAM,SAAS,EAAE;AACjB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,IAAI,EAAE,mCAAmC;AACjD,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;;AAEA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,MAAM,EAAsC;AAC/E,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAA,EAAM,GAAI,MAAM;;AAE5C,EAAE,MAAM,iBAAiB,OAAO,WAAW,QAAA,GAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAA,GAAI,EAAE;;AAEvG,EAAE,MAAM,qBAAqB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA,GAAI,QAAQ,KAAA,IAAS,IAAA,GAAO,CAAC,KAAK,CAAA,GAAI,SAAS;;AAE/F,EAAE,MAAM,wBAAwB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAA,GAAI,WAAW,QAAA,IAAY,IAAA,GAAO,CAAC,QAAQ,CAAA,GAAI,EAAE;;AAEvG,EAAE,MAAM,YAAA,GAAe,kBAAA,IAAsB,qBAAqB;;AAElE,EAAE,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,YAAY,CAAC;AAC7C;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js new file mode 100644 index 0000000..d19dc99 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js @@ -0,0 +1,147 @@ +import { DEFAULT_ENVIRONMENT } from '../constants.js'; +import { getClient } from '../currentScopes.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js'; +import { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage.js'; +import { extractOrgIdFromClient } from '../utils/dsn.js'; +import { hasSpansEnabled } from '../utils/hasSpansEnabled.js'; +import { addNonEnumerableProperty } from '../utils/object.js'; +import { getRootSpan, spanToJSON, spanIsSampled } from '../utils/spanUtils.js'; +import { getCapturedScopesOnSpan } from './utils.js'; + +/** + * If you change this value, also update the terser plugin config to + * avoid minification of the object property! + */ +const FROZEN_DSC_FIELD = '_frozenDsc'; + +/** + * Freeze the given DSC on the given span. + */ +function freezeDscOnSpan(span, dsc) { + const spanWithMaybeDsc = span ; + addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc); +} + +/** + * Creates a dynamic sampling context from a client. + * + * Dispatches the `createDsc` lifecycle hook as a side effect. + */ +function getDynamicSamplingContextFromClient(trace_id, client) { + const options = client.getOptions(); + + const { publicKey: public_key } = client.getDsn() || {}; + + // Instead of conditionally adding non-undefined values, we add them and then remove them if needed + // otherwise, the order of baggage entries changes, which "breaks" a bunch of tests etc. + const dsc = { + environment: options.environment || DEFAULT_ENVIRONMENT, + release: options.release, + public_key, + trace_id, + org_id: extractOrgIdFromClient(client), + }; + + client.emit('createDsc', dsc); + + return dsc; +} + +/** + * Get the dynamic sampling context for the currently active scopes. + */ +function getDynamicSamplingContextFromScope(client, scope) { + const propagationContext = scope.getPropagationContext(); + return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client); +} + +/** + * Creates a dynamic sampling context from a span (and client and scope) + * + * @param span the span from which a few values like the root span name and sample rate are extracted. + * + * @returns a dynamic sampling context + */ +function getDynamicSamplingContextFromSpan(span) { + const client = getClient(); + if (!client) { + return {}; + } + + const rootSpan = getRootSpan(span); + const rootSpanJson = spanToJSON(rootSpan); + const rootSpanAttributes = rootSpanJson.data; + const traceState = rootSpan.spanContext().traceState; + + // 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. + // This is so that the downstream traces/services can use parentSampleRate in their `tracesSampler` to make consistent sampling decisions across the entire trace. + const rootSpanSampleRate = + traceState?.get('sentry.sample_rate') ?? + rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ?? + rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE]; + + function applyLocalSampleRateToDsc(dsc) { + if (typeof rootSpanSampleRate === 'number' || typeof rootSpanSampleRate === 'string') { + dsc.sample_rate = `${rootSpanSampleRate}`; + } + return dsc; + } + + // For core implementation, we freeze the DSC onto the span as a non-enumerable property + const frozenDsc = (rootSpan )[FROZEN_DSC_FIELD]; + if (frozenDsc) { + return applyLocalSampleRateToDsc(frozenDsc); + } + + // For OpenTelemetry, we freeze the DSC on the trace state + const traceStateDsc = traceState?.get('sentry.dsc'); + + // If the span has a DSC, we want it to take precedence + const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc); + + if (dscOnTraceState) { + return applyLocalSampleRateToDsc(dscOnTraceState); + } + + // Else, we generate it from the span + const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client); + + // We don't want to have a transaction name in the DSC if the source is "url" because URLs might contain PII + const source = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]; + + // after JSON conversion, txn.name becomes jsonSpan.description + const name = rootSpanJson.description; + if (source !== 'url' && name) { + dsc.transaction = name; + } + + // How can we even land here with hasSpansEnabled() returning false? + // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests + // So we end up with an active span that is not sampled (neither positively nor negatively) + if (hasSpansEnabled()) { + dsc.sampled = String(spanIsSampled(rootSpan)); + dsc.sample_rand = + // In OTEL we store the sample rand on the trace state because we cannot access scopes for NonRecordingSpans + // The Sentry OTEL SpanSampler takes care of writing the sample rand on the root span + traceState?.get('sentry.sample_rand') ?? + // On all other platforms we can actually get the scopes from a root span (we use this as a fallback) + getCapturedScopesOnSpan(rootSpan).scope?.getPropagationContext().sampleRand.toString(); + } + + applyLocalSampleRateToDsc(dsc); + + client.emit('createDsc', dsc, rootSpan); + + return dsc; +} + +/** + * Convert a Span to a baggage header. + */ +function spanToBaggageHeader(span) { + const dsc = getDynamicSamplingContextFromSpan(span); + return dynamicSamplingContextToSentryBaggageHeader(dsc); +} + +export { freezeDscOnSpan, getDynamicSamplingContextFromClient, getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan, spanToBaggageHeader }; +//# sourceMappingURL=dynamicSamplingContext.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js.map new file mode 100644 index 0000000..b7de086 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dynamicSamplingContext.js","sources":["../../../src/tracing/dynamicSamplingContext.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient } from '../currentScopes';\nimport type { Scope } from '../scope';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { Span } from '../types-hoist/span';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage';\nimport { extractOrgIdFromClient } from '../utils/dsn';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\nimport { getCapturedScopesOnSpan } from './utils';\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\ntype SpanWithMaybeDsc = Span & {\n [FROZEN_DSC_FIELD]?: Partial | undefined;\n};\n\n/**\n * Freeze the given DSC on the given span.\n */\nexport function freezeDscOnSpan(span: Span, dsc: Partial): void {\n const spanWithMaybeDsc = span as SpanWithMaybeDsc;\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 */\nexport function getDynamicSamplingContextFromClient(trace_id: string, client: Client): DynamicSamplingContext {\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: DynamicSamplingContext = {\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 */\nexport function getDynamicSamplingContextFromScope(client: Client, scope: Scope): Partial {\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 */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly> {\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: Partial): Partial {\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 as SpanWithMaybeDsc)[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 */\nexport function spanToBaggageHeader(span: Span): string | undefined {\n const dsc = getDynamicSamplingContextFromSpan(span);\n return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/errors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/errors.js new file mode 100644 index 0000000..f58ab3c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/errors.js @@ -0,0 +1,41 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { addGlobalErrorInstrumentationHandler } from '../instrument/globalError.js'; +import { addGlobalUnhandledRejectionInstrumentationHandler } from '../instrument/globalUnhandledRejection.js'; +import { debug } from '../utils/debug-logger.js'; +import { getActiveSpan, getRootSpan } from '../utils/spanUtils.js'; +import { SPAN_STATUS_ERROR } from './spanstatus.js'; + +let errorsInstrumented = false; + +/** + * Ensure that global errors automatically set the active span status. + */ +function registerSpanErrorInstrumentation() { + if (errorsInstrumented) { + return; + } + + /** + * If an error or unhandled promise occurs, we mark the active root span as failed + */ + function errorCallback() { + const activeSpan = getActiveSpan(); + const rootSpan = activeSpan && getRootSpan(activeSpan); + if (rootSpan) { + const message = 'internal_error'; + DEBUG_BUILD && debug.log(`[Tracing] Root span: ${message} -> Global error occurred`); + rootSpan.setStatus({ code: SPAN_STATUS_ERROR, message }); + } + } + + // The function name will be lost when bundling but we need to be able to identify this listener later to maintain the + // node.js default exit behaviour + errorCallback.tag = 'sentry_tracingErrorCallback'; + + errorsInstrumented = true; + addGlobalErrorInstrumentationHandler(errorCallback); + addGlobalUnhandledRejectionInstrumentationHandler(errorCallback); +} + +export { registerSpanErrorInstrumentation }; +//# sourceMappingURL=errors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/errors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/errors.js.map new file mode 100644 index 0000000..be6b86f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/errors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"errors.js","sources":["../../../src/tracing/errors.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { addGlobalErrorInstrumentationHandler } from '../instrument/globalError';\nimport { addGlobalUnhandledRejectionInstrumentationHandler } from '../instrument/globalUnhandledRejection';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\n\nlet errorsInstrumented = false;\n\n/** Only exposed for testing */\nexport function _resetErrorsInstrumented(): void {\n errorsInstrumented = false;\n}\n\n/**\n * Ensure that global errors automatically set the active span status.\n */\nexport function registerSpanErrorInstrumentation(): void {\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(): void {\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"],"names":[],"mappings":";;;;;;;AAOA,IAAI,kBAAA,GAAqB,KAAK;;AAO9B;AACA;AACA;AACO,SAAS,gCAAgC,GAAS;AACzD,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,EAAE,SAAS,aAAa,GAAS;AACjC,IAAI,MAAM,UAAA,GAAa,aAAa,EAAE;AACtC,IAAI,MAAM,WAAW,UAAA,IAAc,WAAW,CAAC,UAAU,CAAC;AAC1D,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,OAAA,GAAU,gBAAgB;AACtC,MAAM,WAAA,IAAe,KAAK,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAC1F,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAA,EAAS,CAAC;AAC9D,IAAI;AACJ,EAAE;;AAEF;AACA;AACA,EAAE,aAAa,CAAC,GAAA,GAAM,6BAA6B;;AAEnD,EAAE,kBAAA,GAAqB,IAAI;AAC3B,EAAE,oCAAoC,CAAC,aAAa,CAAC;AACrD,EAAE,iDAAiD,CAAC,aAAa,CAAC;AAClE;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/constants.js new file mode 100644 index 0000000..86bcc59 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/constants.js @@ -0,0 +1,21 @@ +const GOOGLE_GENAI_INTEGRATION_NAME = 'Google_GenAI'; + +// https://ai.google.dev/api/rest/v1/models/generateContent +// https://ai.google.dev/api/rest/v1/chats/sendMessage +// https://googleapis.github.io/js-genai/release_docs/classes/models.Models.html#generatecontentstream +// https://googleapis.github.io/js-genai/release_docs/classes/chats.Chat.html#sendmessagestream +const GOOGLE_GENAI_INSTRUMENTED_METHODS = [ + 'models.generateContent', + 'models.generateContentStream', + 'chats.create', + 'sendMessage', + 'sendMessageStream', +] ; + +// Constants for internal use +const GOOGLE_GENAI_SYSTEM_NAME = 'google_genai'; +const CHATS_CREATE_METHOD = 'chats.create'; +const CHAT_PATH = 'chat'; + +export { CHATS_CREATE_METHOD, CHAT_PATH, GOOGLE_GENAI_INSTRUMENTED_METHODS, GOOGLE_GENAI_INTEGRATION_NAME, GOOGLE_GENAI_SYSTEM_NAME }; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/constants.js.map new file mode 100644 index 0000000..b2506db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/google-genai/constants.ts"],"sourcesContent":["export 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\nexport const GOOGLE_GENAI_INSTRUMENTED_METHODS = [\n 'models.generateContent',\n 'models.generateContentStream',\n 'chats.create',\n 'sendMessage',\n 'sendMessageStream',\n] as const;\n\n// Constants for internal use\nexport const GOOGLE_GENAI_SYSTEM_NAME = 'google_genai';\nexport const CHATS_CREATE_METHOD = 'chats.create';\nexport const CHAT_PATH = 'chat';\n"],"names":[],"mappings":"AAAO,MAAM,6BAAA,GAAgC;;AAE7C;AACA;AACA;AACA;AACO,MAAM,oCAAoC;AACjD,EAAE,wBAAwB;AAC1B,EAAE,8BAA8B;AAChC,EAAE,cAAc;AAChB,EAAE,aAAa;AACf,EAAE,mBAAmB;AACrB,CAAA;;AAEA;AACO,MAAM,wBAAA,GAA2B;AACjC,MAAM,mBAAA,GAAsB;AAC5B,MAAM,SAAA,GAAY;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/index.js new file mode 100644 index 0000000..4e0a847 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/index.js @@ -0,0 +1,378 @@ +import { getClient } from '../../currentScopes.js'; +import { captureException } from '../../exports.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js'; +import { SPAN_STATUS_ERROR } from '../spanstatus.js'; +import { startSpanManual, startSpan } from '../trace.js'; +import { handleCallbackErrors } from '../../utils/handleCallbackErrors.js'; +import { 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'; +import { truncateGenAiMessages } from '../ai/messageTruncation.js'; +import { buildMethodPath, getFinalOperationName, getSpanOperation, extractSystemInstructions } from '../ai/utils.js'; +import { CHATS_CREATE_METHOD, CHAT_PATH, GOOGLE_GENAI_SYSTEM_NAME } from './constants.js'; +import { instrumentStream } from './streaming.js'; +import { shouldInstrument, isStreamingMethod, contentUnionToMessages } from './utils.js'; + +/** + * Extract model from parameters or chat context object + * For chat instances, the model is available on the chat object as 'model' (older versions) or 'modelVersion' (newer versions) + */ +function extractModel(params, context) { + if ('model' in params && typeof params.model === 'string') { + return params.model; + } + + // Try to get model from chat context object (chat instance has model property) + if (context && typeof context === 'object') { + const contextObj = context ; + + // Check for 'model' property (older versions, and streaming) + if ('model' in contextObj && typeof contextObj.model === 'string') { + return contextObj.model; + } + + // Check for 'modelVersion' property (newer versions) + if ('modelVersion' in contextObj && typeof contextObj.modelVersion === 'string') { + return contextObj.modelVersion; + } + } + + return 'unknown'; +} + +/** + * Extract generation config parameters + */ +function extractConfigAttributes(config) { + const attributes = {}; + + if ('temperature' in config && typeof config.temperature === 'number') { + attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = config.temperature; + } + if ('topP' in config && typeof config.topP === 'number') { + attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = config.topP; + } + if ('topK' in config && typeof config.topK === 'number') { + attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = config.topK; + } + if ('maxOutputTokens' in config && typeof config.maxOutputTokens === 'number') { + attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = config.maxOutputTokens; + } + if ('frequencyPenalty' in config && typeof config.frequencyPenalty === 'number') { + attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = config.frequencyPenalty; + } + if ('presencePenalty' in config && typeof config.presencePenalty === 'number') { + attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = config.presencePenalty; + } + + return attributes; +} + +/** + * Extract request attributes from method arguments + * Builds the base attributes for span creation including system info, model, and config + */ +function extractRequestAttributes( + methodPath, + params, + context, +) { + const attributes = { + [GEN_AI_SYSTEM_ATTRIBUTE]: GOOGLE_GENAI_SYSTEM_NAME, + [GEN_AI_OPERATION_NAME_ATTRIBUTE]: getFinalOperationName(methodPath), + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.google_genai', + }; + + if (params) { + attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel(params, context); + + // Extract generation config parameters + if ('config' in params && typeof params.config === 'object' && params.config) { + const config = params.config ; + Object.assign(attributes, extractConfigAttributes(config)); + + // Extract available tools from config + if ('tools' in config && Array.isArray(config.tools)) { + const functionDeclarations = config.tools.flatMap( + (tool) => tool.functionDeclarations, + ); + attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(functionDeclarations); + } + } + } else { + attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel({}, context); + } + + return attributes; +} + +/** + * Add private request attributes to spans. + * This is only recorded if recordInputs is true. + * Handles different parameter formats for different Google GenAI methods. + */ +function addPrivateRequestAttributes(span, params) { + const messages = []; + + // config.systemInstruction: ContentUnion + if ( + 'config' in params && + params.config && + typeof params.config === 'object' && + 'systemInstruction' in params.config && + params.config.systemInstruction + ) { + messages.push(...contentUnionToMessages(params.config.systemInstruction , 'system')); + } + + // For chats.create: history contains the conversation history + if ('history' in params) { + messages.push(...contentUnionToMessages(params.history , 'user')); + } + + // For models.generateContent: ContentListUnion + if ('contents' in params) { + messages.push(...contentUnionToMessages(params.contents , 'user')); + } + + // For chat.sendMessage: message can be PartListUnion + if ('message' in params) { + messages.push(...contentUnionToMessages(params.message , 'user')); + } + + if (Array.isArray(messages) && messages.length) { + const { systemInstructions, filteredMessages } = extractSystemInstructions(messages); + + if (systemInstructions) { + span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0; + span.setAttributes({ + [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength, + [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncateGenAiMessages(filteredMessages )), + }); + } +} + +/** + * Add response attributes from the Google GenAI response + * @see https://github.com/googleapis/js-genai/blob/v1.19.0/src/types.ts#L2313 + */ +function addResponseAttributes(span, response, recordOutputs) { + if (!response || typeof response !== 'object') return; + + if (response.modelVersion) { + span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, response.modelVersion); + } + + // Add usage metadata if present + if (response.usageMetadata && typeof response.usageMetadata === 'object') { + const usage = response.usageMetadata; + if (typeof usage.promptTokenCount === 'number') { + span.setAttributes({ + [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: usage.promptTokenCount, + }); + } + if (typeof usage.candidatesTokenCount === 'number') { + span.setAttributes({ + [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: usage.candidatesTokenCount, + }); + } + if (typeof usage.totalTokenCount === 'number') { + span.setAttributes({ + [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: usage.totalTokenCount, + }); + } + } + + // Add response text if recordOutputs is enabled + if (recordOutputs && Array.isArray(response.candidates) && response.candidates.length > 0) { + const responseTexts = response.candidates + .map((candidate) => { + if (candidate.content?.parts && Array.isArray(candidate.content.parts)) { + return candidate.content.parts + .map((part) => (typeof part.text === 'string' ? part.text : '')) + .filter((text) => text.length > 0) + .join(''); + } + return ''; + }) + .filter((text) => text.length > 0); + + if (responseTexts.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: responseTexts.join(''), + }); + } + } + + // Add tool calls if recordOutputs is enabled + if (recordOutputs && response.functionCalls) { + const functionCalls = response.functionCalls; + if (Array.isArray(functionCalls) && functionCalls.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls), + }); + } + } +} + +/** + * Instrument any async or synchronous genai method with Sentry spans + * Handles operations like models.generateContent and chat.sendMessage and chats.create + * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation + */ +function instrumentMethod( + originalMethod, + methodPath, + context, + options, +) { + const isSyncCreate = methodPath === CHATS_CREATE_METHOD; + + return new Proxy(originalMethod, { + apply(target, _, args) { + const params = args[0] ; + const requestAttributes = extractRequestAttributes(methodPath, params, context); + const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown'; + const operationName = getFinalOperationName(methodPath); + + // Check if this is a streaming method + if (isStreamingMethod(methodPath)) { + // Use startSpanManual for streaming methods to control span lifecycle + return startSpanManual( + { + name: `${operationName} ${model} stream-response`, + op: getSpanOperation(methodPath), + attributes: requestAttributes, + }, + async (span) => { + try { + if (options.recordInputs && params) { + addPrivateRequestAttributes(span, params); + } + const stream = await target.apply(context, args); + return instrumentStream(stream, span, Boolean(options.recordOutputs)) ; + } catch (error) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' }); + captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.google_genai', + data: { function: methodPath }, + }, + }); + span.end(); + throw error; + } + }, + ); + } + // Single span for both sync and async operations + return startSpan( + { + name: isSyncCreate ? `${operationName} ${model} create` : `${operationName} ${model}`, + op: getSpanOperation(methodPath), + attributes: requestAttributes, + }, + (span) => { + if (options.recordInputs && params) { + addPrivateRequestAttributes(span, params); + } + + return handleCallbackErrors( + () => target.apply(context, args), + error => { + captureException(error, { + mechanism: { handled: false, type: 'auto.ai.google_genai', data: { function: methodPath } }, + }); + }, + () => {}, + result => { + // Only add response attributes for content-producing methods, not for chats.create + if (!isSyncCreate) { + addResponseAttributes(span, result, options.recordOutputs); + } + }, + ); + }, + ); + }, + }) ; +} + +/** + * Create a deep proxy for Google GenAI client instrumentation + * Recursively instruments methods and handles special cases like chats.create + */ +function createDeepProxy(target, currentPath = '', options) { + return new Proxy(target, { + get: (t, prop, receiver) => { + const value = Reflect.get(t, prop, receiver); + const methodPath = buildMethodPath(currentPath, String(prop)); + + if (typeof value === 'function' && shouldInstrument(methodPath)) { + // Special case: chats.create is synchronous but needs both instrumentation AND result proxying + if (methodPath === CHATS_CREATE_METHOD) { + const instrumentedMethod = instrumentMethod(value , methodPath, t, options); + return function instrumentedAndProxiedCreate(...args) { + const result = instrumentedMethod(...args); + // If the result is an object (like a chat instance), proxy it too + if (result && typeof result === 'object') { + return createDeepProxy(result, CHAT_PATH, options); + } + return result; + }; + } + + return instrumentMethod(value , methodPath, t, options); + } + + if (typeof value === 'function') { + // Bind non-instrumented functions to preserve the original `this` context + return value.bind(t); + } + + if (value && typeof value === 'object') { + return createDeepProxy(value, methodPath, options); + } + + return value; + }, + }); +} + +/** + * Instrument a Google GenAI client with Sentry tracing + * Can be used across Node.js, Cloudflare Workers, and Vercel Edge + * + * @template T - The type of the client that extends client object + * @param client - The Google GenAI client to instrument + * @param options - Optional configuration for recording inputs and outputs + * @returns The instrumented client with the same type as the input + * + * @example + * ```typescript + * import { GoogleGenAI } from '@google/genai'; + * import { instrumentGoogleGenAIClient } from '@sentry/core'; + * + * const genAI = new GoogleGenAI({ apiKey: process.env.GOOGLE_GENAI_API_KEY }); + * const instrumentedClient = instrumentGoogleGenAIClient(genAI); + * + * // Now both chats.create and sendMessage will be instrumented + * const chat = instrumentedClient.chats.create({ model: 'gemini-1.5-pro' }); + * const response = await chat.sendMessage({ message: 'Hello' }); + * ``` + */ +function instrumentGoogleGenAIClient(client, options) { + const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii); + + const _options = { + recordInputs: sendDefaultPii, + recordOutputs: sendDefaultPii, + ...options, + }; + return createDeepProxy(client, '', _options); +} + +export { extractModel, instrumentGoogleGenAIClient }; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/index.js.map new file mode 100644 index 0000000..26489bd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/google-genai/index.ts"],"sourcesContent":["import { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport { handleCallbackErrors } from '../../utils/handleCallbackErrors';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { buildMethodPath, extractSystemInstructions, getFinalOperationName, getSpanOperation } from '../ai/utils';\nimport { CHAT_PATH, CHATS_CREATE_METHOD, GOOGLE_GENAI_SYSTEM_NAME } from './constants';\nimport { instrumentStream } from './streaming';\nimport type {\n Candidate,\n ContentPart,\n GoogleGenAIIstrumentedMethod,\n GoogleGenAIOptions,\n GoogleGenAIResponse,\n} from './types';\nimport type { ContentListUnion, ContentUnion, Message, PartListUnion } from './utils';\nimport { contentUnionToMessages, isStreamingMethod, shouldInstrument } from './utils';\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 */\nexport function extractModel(params: Record, context?: unknown): string {\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 as Record;\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: Record): Record {\n const attributes: Record = {};\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: string,\n params?: Record,\n context?: unknown,\n): Record {\n const attributes: Record = {\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 as Record;\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: { functionDeclarations: unknown[] }) => 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: Span, params: Record): void {\n const messages: Message[] = [];\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 as ContentUnion, 'system'));\n }\n\n // For chats.create: history contains the conversation history\n if ('history' in params) {\n messages.push(...contentUnionToMessages(params.history as PartListUnion, 'user'));\n }\n\n // For models.generateContent: ContentListUnion\n if ('contents' in params) {\n messages.push(...contentUnionToMessages(params.contents as ContentListUnion, 'user'));\n }\n\n // For chat.sendMessage: message can be PartListUnion\n if ('message' in params) {\n messages.push(...contentUnionToMessages(params.message as PartListUnion, '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 as unknown[])),\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: Span, response: GoogleGenAIResponse, recordOutputs?: boolean): void {\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: Candidate) => {\n if (candidate.content?.parts && Array.isArray(candidate.content.parts)) {\n return candidate.content.parts\n .map((part: ContentPart) => (typeof part.text === 'string' ? part.text : ''))\n .filter((text: string) => text.length > 0)\n .join('');\n }\n return '';\n })\n .filter((text: string) => 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: (...args: T) => R | Promise,\n methodPath: GoogleGenAIIstrumentedMethod,\n context: unknown,\n options: GoogleGenAIOptions,\n): (...args: T) => R | Promise {\n const isSyncCreate = methodPath === CHATS_CREATE_METHOD;\n\n return new Proxy(originalMethod, {\n apply(target, _, args: T): R | Promise {\n const params = args[0] as Record | undefined;\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} stream-response`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes,\n },\n async (span: 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)) as R;\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: 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 }) as (...args: T) => R | Promise;\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: T, currentPath = '', options: GoogleGenAIOptions): T {\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 as (...args: unknown[]) => unknown, methodPath, t, options);\n return function instrumentedAndProxiedCreate(...args: unknown[]): unknown {\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 as (...args: unknown[]) => Promise, 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 */\nexport function instrumentGoogleGenAIClient(client: T, options?: GoogleGenAIOptions): T {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n\n const _options = {\n recordInputs: sendDefaultPii,\n recordOutputs: sendDefaultPii,\n ...options,\n };\n return createDeepProxy(client, '', _options);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/streaming.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/streaming.js new file mode 100644 index 0000000..bae3266 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/streaming.js @@ -0,0 +1,136 @@ +import { captureException } from '../../exports.js'; +import { SPAN_STATUS_ERROR } from '../spanstatus.js'; +import { 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'; + +/** + * State object used to accumulate information from a stream of Google GenAI events. + */ + +/** + * Checks if a response chunk contains an error + * @param chunk - The response chunk to check + * @param span - The span to update if error is found + * @returns Whether an error occurred + */ +function isErrorChunk(chunk, span) { + const feedback = chunk?.promptFeedback; + if (feedback?.blockReason) { + const message = feedback.blockReasonMessage ?? feedback.blockReason; + span.setStatus({ code: SPAN_STATUS_ERROR, message: `Content blocked: ${message}` }); + captureException(`Content blocked: ${message}`, { + mechanism: { handled: false, type: 'auto.ai.google_genai' }, + }); + return true; + } + return false; +} + +/** + * Processes response metadata from a chunk + * @param chunk - The response chunk to process + * @param state - The state of the streaming process + */ +function handleResponseMetadata(chunk, state) { + if (typeof chunk.responseId === 'string') state.responseId = chunk.responseId; + if (typeof chunk.modelVersion === 'string') state.responseModel = chunk.modelVersion; + + const usage = chunk.usageMetadata; + if (usage) { + if (typeof usage.promptTokenCount === 'number') state.promptTokens = usage.promptTokenCount; + if (typeof usage.candidatesTokenCount === 'number') state.completionTokens = usage.candidatesTokenCount; + if (typeof usage.totalTokenCount === 'number') state.totalTokens = usage.totalTokenCount; + } +} + +/** + * Processes candidate content from a response chunk + * @param chunk - The response chunk to process + * @param state - The state of the streaming process + * @param recordOutputs - Whether to record outputs + */ +function handleCandidateContent(chunk, state, recordOutputs) { + if (Array.isArray(chunk.functionCalls)) { + state.toolCalls.push(...chunk.functionCalls); + } + + for (const candidate of chunk.candidates ?? []) { + if (candidate?.finishReason && !state.finishReasons.includes(candidate.finishReason)) { + state.finishReasons.push(candidate.finishReason); + } + + for (const part of candidate?.content?.parts ?? []) { + if (recordOutputs && part.text) state.responseTexts.push(part.text); + if (part.functionCall) { + state.toolCalls.push({ + type: 'function', + id: part.functionCall.id, + name: part.functionCall.name, + arguments: part.functionCall.args, + }); + } + } + } +} + +/** + * Processes a single chunk from the Google GenAI stream + * @param chunk - The chunk to process + * @param state - The state of the streaming process + * @param recordOutputs - Whether to record outputs + * @param span - The span to update + */ +function processChunk(chunk, state, recordOutputs, span) { + if (!chunk || isErrorChunk(chunk, span)) return; + handleResponseMetadata(chunk, state); + handleCandidateContent(chunk, state, recordOutputs); +} + +/** + * Instruments an async iterable stream of Google GenAI response chunks, updates the span with + * streaming attributes and (optionally) the aggregated output text, and yields + * each chunk from the input stream unchanged. + */ +async function* instrumentStream( + stream, + span, + recordOutputs, +) { + const state = { + responseTexts: [], + finishReasons: [], + toolCalls: [], + }; + + try { + for await (const chunk of stream) { + processChunk(chunk, state, recordOutputs, span); + yield chunk; + } + } finally { + const attrs = { + [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true, + }; + + if (state.responseId) attrs[GEN_AI_RESPONSE_ID_ATTRIBUTE] = state.responseId; + if (state.responseModel) attrs[GEN_AI_RESPONSE_MODEL_ATTRIBUTE] = state.responseModel; + if (state.promptTokens !== undefined) attrs[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = state.promptTokens; + if (state.completionTokens !== undefined) attrs[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = state.completionTokens; + if (state.totalTokens !== undefined) attrs[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = state.totalTokens; + + if (state.finishReasons.length) { + attrs[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE] = JSON.stringify(state.finishReasons); + } + if (recordOutputs && state.responseTexts.length) { + attrs[GEN_AI_RESPONSE_TEXT_ATTRIBUTE] = state.responseTexts.join(''); + } + if (recordOutputs && state.toolCalls.length) { + attrs[GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE] = JSON.stringify(state.toolCalls); + } + + span.setAttributes(attrs); + span.end(); + } +} + +export { instrumentStream }; +//# sourceMappingURL=streaming.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/streaming.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/streaming.js.map new file mode 100644 index 0000000..55cac81 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/streaming.js.map @@ -0,0 +1 @@ +{"version":3,"file":"streaming.js","sources":["../../../../src/tracing/google-genai/streaming.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { GoogleGenAIResponse } from './types';\n\n/**\n * State object used to accumulate information from a stream of Google GenAI events.\n */\ninterface StreamingState {\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId?: string;\n /** The model name. */\n responseModel?: string;\n /** Number of prompt/input tokens used. */\n promptTokens?: number;\n /** Number of completion/output tokens used. */\n completionTokens?: number;\n /** Number of total tokens used. */\n totalTokens?: number;\n /** Accumulated tool calls (finalized) */\n toolCalls: Array>;\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: GoogleGenAIResponse, span: Span): boolean {\n const feedback = chunk?.promptFeedback;\n if (feedback?.blockReason) {\n const message = feedback.blockReasonMessage ?? feedback.blockReason;\n span.setStatus({ code: SPAN_STATUS_ERROR, message: `Content blocked: ${message}` });\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: GoogleGenAIResponse, state: StreamingState): void {\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: GoogleGenAIResponse, state: StreamingState, recordOutputs: boolean): void {\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: GoogleGenAIResponse, state: StreamingState, recordOutputs: boolean, span: Span): void {\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 */\nexport async function* instrumentStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\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: Record = {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/utils.js new file mode 100644 index 0000000..beec486 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/utils.js @@ -0,0 +1,47 @@ +import { GOOGLE_GENAI_INSTRUMENTED_METHODS } from './constants.js'; + +/** + * Check if a method path should be instrumented + */ +function shouldInstrument(methodPath) { + // Check for exact matches first (like 'models.generateContent') + if (GOOGLE_GENAI_INSTRUMENTED_METHODS.includes(methodPath )) { + return true; + } + + // Check for method name matches (like 'sendMessage' from chat instances) + const methodName = methodPath.split('.').pop(); + return GOOGLE_GENAI_INSTRUMENTED_METHODS.includes(methodName ); +} + +/** + * Check if a method is a streaming method + */ +function isStreamingMethod(methodPath) { + return methodPath.includes('Stream'); +} + +// Copied from https://googleapis.github.io/js-genai/release_docs/index.html + +/** + * + */ +function contentUnionToMessages(content, role = 'user') { + if (typeof content === 'string') { + return [{ role, content }]; + } + if (Array.isArray(content)) { + return content.flatMap(content => contentUnionToMessages(content, role)); + } + if (typeof content !== 'object' || !content) return []; + if ('role' in content && typeof content.role === 'string') { + return [content ]; + } + if ('parts' in content) { + return [{ ...content, role } ]; + } + return [{ role, content }]; +} + +export { contentUnionToMessages, isStreamingMethod, shouldInstrument }; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/utils.js.map new file mode 100644 index 0000000..ecebd09 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/google-genai/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/google-genai/utils.ts"],"sourcesContent":["import { GOOGLE_GENAI_INSTRUMENTED_METHODS } from './constants';\nimport type { GoogleGenAIIstrumentedMethod } from './types';\n\n/**\n * Check if a method path should be instrumented\n */\nexport function shouldInstrument(methodPath: string): methodPath is GoogleGenAIIstrumentedMethod {\n // Check for exact matches first (like 'models.generateContent')\n if (GOOGLE_GENAI_INSTRUMENTED_METHODS.includes(methodPath as GoogleGenAIIstrumentedMethod)) {\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 as GoogleGenAIIstrumentedMethod);\n}\n\n/**\n * Check if a method is a streaming method\n */\nexport function isStreamingMethod(methodPath: string): boolean {\n return methodPath.includes('Stream');\n}\n\n// Copied from https://googleapis.github.io/js-genai/release_docs/index.html\nexport type ContentListUnion = Content | Content[] | PartListUnion;\nexport type ContentUnion = Content | PartUnion[] | PartUnion;\nexport type Content = {\n parts?: Part[];\n role?: string;\n};\nexport type PartUnion = Part | string;\nexport type Part = Record & {\n inlineData?: {\n data?: string;\n displayName?: string;\n mimeType?: string;\n };\n text?: string;\n};\nexport type PartListUnion = PartUnion[] | PartUnion;\n\n// our consistent span message shape\nexport type Message = Record & {\n role: string;\n content?: PartListUnion;\n parts?: PartListUnion;\n};\n\n/**\n *\n */\nexport function contentUnionToMessages(content: ContentListUnion, role = 'user'): Message[] {\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 as Message];\n }\n if ('parts' in content) {\n return [{ ...content, role } as Message];\n }\n return [{ role, content }];\n}\n"],"names":[],"mappings":";;AAGA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,UAAU,EAAsD;AACjG;AACA,EAAE,IAAI,iCAAiC,CAAC,QAAQ,CAAC,UAAA,EAA2C,EAAE;AAC9F,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,EAAE,MAAM,UAAA,GAAa,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAChD,EAAE,OAAO,iCAAiC,CAAC,QAAQ,CAAC,YAA2C;AAC/F;;AAEA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,UAAU,EAAmB;AAC/D,EAAE,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtC;;AAEA;;AAyBA;AACA;AACA;AACO,SAAS,sBAAsB,CAAC,OAAO,EAAoB,IAAA,GAAO,MAAM,EAAa;AAC5F,EAAE,IAAI,OAAO,OAAA,KAAY,QAAQ,EAAE;AACnC,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,OAAA,EAAS,CAAC;AAC9B,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC9B,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,OAAA,IAAW,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5E,EAAE;AACF,EAAE,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,CAAC,OAAO,EAAE,OAAO,EAAE;AACxD,EAAE,IAAI,MAAA,IAAU,OAAA,IAAW,OAAO,OAAO,CAAC,IAAA,KAAS,QAAQ,EAAE;AAC7D,IAAI,OAAO,CAAC,OAAA,EAAmB;AAC/B,EAAE;AACF,EAAE,IAAI,OAAA,IAAW,OAAO,EAAE;AAC1B,IAAI,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,IAAA,IAAkB;AAC5C,EAAE;AACF,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAA,EAAS,CAAC;AAC5B;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/idleSpan.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/idleSpan.js new file mode 100644 index 0000000..3540075 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/idleSpan.js @@ -0,0 +1,350 @@ +import { getClient, getCurrentScope } from '../currentScopes.js'; +import { DEBUG_BUILD } from '../debug-build.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON } from '../semanticAttributes.js'; +import { debug } from '../utils/debug-logger.js'; +import { hasSpansEnabled } from '../utils/hasSpansEnabled.js'; +import { shouldIgnoreSpan } from '../utils/should-ignore-span.js'; +import { _setSpanForScope } from '../utils/spanOnScope.js'; +import { getActiveSpan, spanTimeInputToSeconds, getSpanDescendants, spanToJSON, removeChildSpanFromSpan } from '../utils/spanUtils.js'; +import { timestampInSeconds } from '../utils/time.js'; +import { getDynamicSamplingContextFromSpan, freezeDscOnSpan } from './dynamicSamplingContext.js'; +import { SentryNonRecordingSpan } from './sentryNonRecordingSpan.js'; +import { SentrySpan } from './sentrySpan.js'; +import { SPAN_STATUS_OK, SPAN_STATUS_ERROR } from './spanstatus.js'; +import { startInactiveSpan } from './trace.js'; + +const TRACING_DEFAULTS = { + idleTimeout: 1000, + finalTimeout: 30000, + childSpanTimeout: 15000, +}; + +const FINISH_REASON_HEARTBEAT_FAILED = 'heartbeatFailed'; +const FINISH_REASON_IDLE_TIMEOUT = 'idleTimeout'; +const FINISH_REASON_FINAL_TIMEOUT = 'finalTimeout'; +const FINISH_REASON_EXTERNAL_FINISH = 'externalFinish'; + +/** + * An idle span is a span that automatically finishes. It does this by tracking child spans as activities. + * An idle span is always the active span. + */ +function startIdleSpan(startSpanOptions, options = {}) { + // Activities store a list of active spans + const activities = new Map(); + + // We should not use heartbeat if we finished a span + let _finished = false; + + // Timer that tracks idleTimeout + let _idleTimeoutID; + + // The reason why the span was finished + let _finishReason = FINISH_REASON_EXTERNAL_FINISH; + + let _autoFinishAllowed = !options.disableAutoFinish; + + const _cleanupHooks = []; + + const { + idleTimeout = TRACING_DEFAULTS.idleTimeout, + finalTimeout = TRACING_DEFAULTS.finalTimeout, + childSpanTimeout = TRACING_DEFAULTS.childSpanTimeout, + beforeSpanEnd, + trimIdleSpanEndTimestamp = true, + } = options; + + const client = getClient(); + + if (!client || !hasSpansEnabled()) { + const span = new SentryNonRecordingSpan(); + + const dsc = { + sample_rate: '0', + sampled: 'false', + ...getDynamicSamplingContextFromSpan(span), + } ; + freezeDscOnSpan(span, dsc); + + return span; + } + + const scope = getCurrentScope(); + const previousActiveSpan = getActiveSpan(); + const span = _startIdleSpan(startSpanOptions); + + // We patch span.end to ensure we can run some things before the span is ended + // eslint-disable-next-line @typescript-eslint/unbound-method + span.end = new Proxy(span.end, { + apply(target, thisArg, args) { + if (beforeSpanEnd) { + beforeSpanEnd(span); + } + + // If the span is non-recording, nothing more to do here... + // This is the case if tracing is enabled but this specific span was not sampled + if (thisArg instanceof SentryNonRecordingSpan) { + return; + } + + // Just ensuring that this keeps working, even if we ever have more arguments here + const [definedEndTimestamp, ...rest] = args; + const timestamp = definedEndTimestamp || timestampInSeconds(); + const spanEndTimestamp = spanTimeInputToSeconds(timestamp); + + // Ensure we end with the last span timestamp, if possible + const spans = getSpanDescendants(span).filter(child => child !== span); + + const spanJson = spanToJSON(span); + + // If we have no spans, we just end, nothing else to do here + // Likewise, if users explicitly ended the span, we simply end the span without timestamp adjustment + if (!spans.length || !trimIdleSpanEndTimestamp) { + onIdleSpanEnded(spanEndTimestamp); + return Reflect.apply(target, thisArg, [spanEndTimestamp, ...rest]); + } + + const ignoreSpans = client.getOptions().ignoreSpans; + + const latestSpanEndTimestamp = spans?.reduce((acc, current) => { + const currentSpanJson = spanToJSON(current); + if (!currentSpanJson.timestamp) { + return acc; + } + // Ignored spans will get dropped later (in the client) but since we already adjust + // the idle span end timestamp here, we can already take to-be-ignored spans out of + // the calculation here. + if (ignoreSpans && shouldIgnoreSpan(currentSpanJson, ignoreSpans)) { + return acc; + } + return acc ? Math.max(acc, currentSpanJson.timestamp) : currentSpanJson.timestamp; + }, undefined); + + // In reality this should always exist here, but type-wise it may be undefined... + const spanStartTimestamp = spanJson.start_timestamp; + + // The final endTimestamp should: + // * Never be before the span start timestamp + // * Be the latestSpanEndTimestamp, if there is one, and it is smaller than the passed span end timestamp + // * Otherwise be the passed end timestamp + // Final timestamp can never be after finalTimeout + const endTimestamp = Math.min( + spanStartTimestamp ? spanStartTimestamp + finalTimeout / 1000 : Infinity, + Math.max(spanStartTimestamp || -Infinity, Math.min(spanEndTimestamp, latestSpanEndTimestamp || Infinity)), + ); + + onIdleSpanEnded(endTimestamp); + return Reflect.apply(target, thisArg, [endTimestamp, ...rest]); + }, + }); + + /** + * Cancels the existing idle timeout, if there is one. + */ + function _cancelIdleTimeout() { + if (_idleTimeoutID) { + clearTimeout(_idleTimeoutID); + _idleTimeoutID = undefined; + } + } + + /** + * Restarts idle timeout, if there is no running idle timeout it will start one. + */ + function _restartIdleTimeout(endTimestamp) { + _cancelIdleTimeout(); + _idleTimeoutID = setTimeout(() => { + if (!_finished && activities.size === 0 && _autoFinishAllowed) { + _finishReason = FINISH_REASON_IDLE_TIMEOUT; + span.end(endTimestamp); + } + }, idleTimeout); + } + + /** + * Restarts child span timeout, if there is none running it will start one. + */ + function _restartChildSpanTimeout(endTimestamp) { + _idleTimeoutID = setTimeout(() => { + if (!_finished && _autoFinishAllowed) { + _finishReason = FINISH_REASON_HEARTBEAT_FAILED; + span.end(endTimestamp); + } + }, childSpanTimeout); + } + + /** + * Start tracking a specific activity. + * @param spanId The span id that represents the activity + */ + function _pushActivity(spanId) { + _cancelIdleTimeout(); + activities.set(spanId, true); + + const endTimestamp = timestampInSeconds(); + // We need to add the timeout here to have the real endtimestamp of the idle span + // Remember timestampInSeconds is in seconds, timeout is in ms + _restartChildSpanTimeout(endTimestamp + childSpanTimeout / 1000); + } + + /** + * Remove an activity from usage + * @param spanId The span id that represents the activity + */ + function _popActivity(spanId) { + if (activities.has(spanId)) { + activities.delete(spanId); + } + + if (activities.size === 0) { + const endTimestamp = timestampInSeconds(); + // We need to add the timeout here to have the real endtimestamp of the idle span + // Remember timestampInSeconds is in seconds, timeout is in ms + _restartIdleTimeout(endTimestamp + idleTimeout / 1000); + } + } + + function onIdleSpanEnded(endTimestamp) { + _finished = true; + activities.clear(); + + _cleanupHooks.forEach(cleanup => cleanup()); + + _setSpanForScope(scope, previousActiveSpan); + + const spanJSON = spanToJSON(span); + + const { start_timestamp: startTimestamp } = spanJSON; + // This should never happen, but to make TS happy... + if (!startTimestamp) { + return; + } + + const attributes = spanJSON.data; + if (!attributes[SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON]) { + span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, _finishReason); + } + + // Set span status to 'ok' if it hasn't been explicitly set to an error status + const currentStatus = spanJSON.status; + if (!currentStatus || currentStatus === 'unknown') { + span.setStatus({ code: SPAN_STATUS_OK }); + } + + debug.log(`[Tracing] Idle span "${spanJSON.op}" finished`); + + const childSpans = getSpanDescendants(span).filter(child => child !== span); + + let discardedSpans = 0; + childSpans.forEach(childSpan => { + // We cancel all pending spans with status "cancelled" to indicate the idle span was finished early + if (childSpan.isRecording()) { + childSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'cancelled' }); + childSpan.end(endTimestamp); + DEBUG_BUILD && + debug.log('[Tracing] Cancelling span since span ended early', JSON.stringify(childSpan, undefined, 2)); + } + + const childSpanJSON = spanToJSON(childSpan); + const { timestamp: childEndTimestamp = 0, start_timestamp: childStartTimestamp = 0 } = childSpanJSON; + + const spanStartedBeforeIdleSpanEnd = childStartTimestamp <= endTimestamp; + + // Add a delta with idle timeout so that we prevent false positives + const timeoutWithMarginOfError = (finalTimeout + idleTimeout) / 1000; + const spanEndedBeforeFinalTimeout = childEndTimestamp - childStartTimestamp <= timeoutWithMarginOfError; + + if (DEBUG_BUILD) { + const stringifiedSpan = JSON.stringify(childSpan, undefined, 2); + if (!spanStartedBeforeIdleSpanEnd) { + debug.log('[Tracing] Discarding span since it happened after idle span was finished', stringifiedSpan); + } else if (!spanEndedBeforeFinalTimeout) { + debug.log('[Tracing] Discarding span since it finished after idle span final timeout', stringifiedSpan); + } + } + + if (!spanEndedBeforeFinalTimeout || !spanStartedBeforeIdleSpanEnd) { + removeChildSpanFromSpan(span, childSpan); + discardedSpans++; + } + }); + + if (discardedSpans > 0) { + span.setAttribute('sentry.idle_span_discarded_spans', discardedSpans); + } + } + + _cleanupHooks.push( + client.on('spanStart', startedSpan => { + // If we already finished the idle span, + // or if this is the idle span itself being started, + // or if the started span has already been closed, + // we don't care about it for activity + if ( + _finished || + startedSpan === span || + !!spanToJSON(startedSpan).timestamp || + (startedSpan instanceof SentrySpan && startedSpan.isStandaloneSpan()) + ) { + return; + } + + const allSpans = getSpanDescendants(span); + + // If the span that was just started is a child of the idle span, we should track it + if (allSpans.includes(startedSpan)) { + _pushActivity(startedSpan.spanContext().spanId); + } + }), + ); + + _cleanupHooks.push( + client.on('spanEnd', endedSpan => { + if (_finished) { + return; + } + + _popActivity(endedSpan.spanContext().spanId); + }), + ); + + _cleanupHooks.push( + client.on('idleSpanEnableAutoFinish', spanToAllowAutoFinish => { + if (spanToAllowAutoFinish === span) { + _autoFinishAllowed = true; + _restartIdleTimeout(); + + if (activities.size) { + _restartChildSpanTimeout(); + } + } + }), + ); + + // We only start the initial idle timeout if we are not delaying the auto finish + if (!options.disableAutoFinish) { + _restartIdleTimeout(); + } + + setTimeout(() => { + if (!_finished) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' }); + _finishReason = FINISH_REASON_FINAL_TIMEOUT; + span.end(); + } + }, finalTimeout); + + return span; +} + +function _startIdleSpan(options) { + const span = startInactiveSpan(options); + + _setSpanForScope(getCurrentScope(), span); + + DEBUG_BUILD && debug.log('[Tracing] Started span is an idle span'); + + return span; +} + +export { TRACING_DEFAULTS, startIdleSpan }; +//# sourceMappingURL=idleSpan.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/idleSpan.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/idleSpan.js.map new file mode 100644 index 0000000..4961ac2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/idleSpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"idleSpan.js","sources":["../../../src/tracing/idleSpan.ts"],"sourcesContent":["import { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON } from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { Span } from '../types-hoist/span';\nimport type { StartSpanOptions } from '../types-hoist/startSpanOptions';\nimport { debug } from '../utils/debug-logger';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { shouldIgnoreSpan } from '../utils/should-ignore-span';\nimport { _setSpanForScope } from '../utils/spanOnScope';\nimport {\n getActiveSpan,\n getSpanDescendants,\n removeChildSpanFromSpan,\n spanTimeInputToSeconds,\n spanToJSON,\n} from '../utils/spanUtils';\nimport { timestampInSeconds } from '../utils/time';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR, SPAN_STATUS_OK } from './spanstatus';\nimport { startInactiveSpan } from './trace';\n\nexport const TRACING_DEFAULTS = {\n idleTimeout: 1_000,\n finalTimeout: 30_000,\n childSpanTimeout: 15_000,\n};\n\nconst FINISH_REASON_HEARTBEAT_FAILED = 'heartbeatFailed';\nconst FINISH_REASON_IDLE_TIMEOUT = 'idleTimeout';\nconst FINISH_REASON_FINAL_TIMEOUT = 'finalTimeout';\nconst FINISH_REASON_EXTERNAL_FINISH = 'externalFinish';\nconst FINISH_REASON_CANCELLED = 'cancelled';\n\n// unused\nconst FINISH_REASON_DOCUMENT_HIDDEN = 'documentHidden';\n\n// unused in this file, but used in BrowserTracing\nconst FINISH_REASON_INTERRUPTED = 'interactionInterrupted';\n\ntype IdleSpanFinishReason =\n | typeof FINISH_REASON_CANCELLED\n | typeof FINISH_REASON_DOCUMENT_HIDDEN\n | typeof FINISH_REASON_EXTERNAL_FINISH\n | typeof FINISH_REASON_FINAL_TIMEOUT\n | typeof FINISH_REASON_HEARTBEAT_FAILED\n | typeof FINISH_REASON_IDLE_TIMEOUT\n | typeof FINISH_REASON_INTERRUPTED;\n\ninterface IdleSpanOptions {\n /**\n * The time that has to pass without any span being created.\n * If this time is exceeded, the idle span will finish.\n */\n idleTimeout: number;\n /**\n * The max. time an idle span may run.\n * If this time is exceeded, the idle span will finish no matter what.\n */\n finalTimeout: number;\n /**\n * The max. time a child span may run.\n * If the time since the last span was started exceeds this time, the idle span will finish.\n */\n childSpanTimeout?: number;\n /**\n * When set to `true`, will disable the idle timeout and child timeout\n * until the `idleSpanEnableAutoFinish` hook is emitted for the idle span.\n * The final timeout mechanism will not be affected by this option,\n * meaning the idle span will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n disableAutoFinish?: boolean;\n\n /** Allows to configure a hook that is called when the idle span is ended, before it is processed. */\n beforeSpanEnd?: (span: Span) => void;\n\n /**\n * If set to `true`, the idle span will be trimmed to the latest span end timestamp of its children.\n *\n * @default `true`.\n */\n trimIdleSpanEndTimestamp?: boolean;\n}\n\n/**\n * An idle span is a span that automatically finishes. It does this by tracking child spans as activities.\n * An idle span is always the active span.\n */\nexport function startIdleSpan(startSpanOptions: StartSpanOptions, options: Partial = {}): Span {\n // Activities store a list of active spans\n const activities = new Map();\n\n // We should not use heartbeat if we finished a span\n let _finished = false;\n\n // Timer that tracks idleTimeout\n let _idleTimeoutID: ReturnType | undefined;\n\n // Timer that tracks maxSpanTime for child spans\n let _childSpanTimeoutID: ReturnType | undefined;\n\n // The reason why the span was finished\n let _finishReason: IdleSpanFinishReason = FINISH_REASON_EXTERNAL_FINISH;\n\n let _autoFinishAllowed: boolean = !options.disableAutoFinish;\n\n const _cleanupHooks: (() => void)[] = [];\n\n const {\n idleTimeout = TRACING_DEFAULTS.idleTimeout,\n finalTimeout = TRACING_DEFAULTS.finalTimeout,\n childSpanTimeout = TRACING_DEFAULTS.childSpanTimeout,\n beforeSpanEnd,\n trimIdleSpanEndTimestamp = true,\n } = options;\n\n const client = getClient();\n\n if (!client || !hasSpansEnabled()) {\n const span = new SentryNonRecordingSpan();\n\n const dsc = {\n sample_rate: '0',\n sampled: 'false',\n ...getDynamicSamplingContextFromSpan(span),\n } satisfies Partial;\n freezeDscOnSpan(span, dsc);\n\n return span;\n }\n\n const scope = getCurrentScope();\n const previousActiveSpan = getActiveSpan();\n const span = _startIdleSpan(startSpanOptions);\n\n // We patch span.end to ensure we can run some things before the span is ended\n // eslint-disable-next-line @typescript-eslint/unbound-method\n span.end = new Proxy(span.end, {\n apply(target, thisArg, args: Parameters) {\n if (beforeSpanEnd) {\n beforeSpanEnd(span);\n }\n\n // If the span is non-recording, nothing more to do here...\n // This is the case if tracing is enabled but this specific span was not sampled\n if (thisArg instanceof SentryNonRecordingSpan) {\n return;\n }\n\n // Just ensuring that this keeps working, even if we ever have more arguments here\n const [definedEndTimestamp, ...rest] = args;\n const timestamp = definedEndTimestamp || timestampInSeconds();\n const spanEndTimestamp = spanTimeInputToSeconds(timestamp);\n\n // Ensure we end with the last span timestamp, if possible\n const spans = getSpanDescendants(span).filter(child => child !== span);\n\n const spanJson = spanToJSON(span);\n\n // If we have no spans, we just end, nothing else to do here\n // Likewise, if users explicitly ended the span, we simply end the span without timestamp adjustment\n if (!spans.length || !trimIdleSpanEndTimestamp) {\n onIdleSpanEnded(spanEndTimestamp);\n return Reflect.apply(target, thisArg, [spanEndTimestamp, ...rest]);\n }\n\n const ignoreSpans = client.getOptions().ignoreSpans;\n\n const latestSpanEndTimestamp = spans?.reduce((acc: number | undefined, current) => {\n const currentSpanJson = spanToJSON(current);\n if (!currentSpanJson.timestamp) {\n return acc;\n }\n // Ignored spans will get dropped later (in the client) but since we already adjust\n // the idle span end timestamp here, we can already take to-be-ignored spans out of\n // the calculation here.\n if (ignoreSpans && shouldIgnoreSpan(currentSpanJson, ignoreSpans)) {\n return acc;\n }\n return acc ? Math.max(acc, currentSpanJson.timestamp) : currentSpanJson.timestamp;\n }, undefined);\n\n // In reality this should always exist here, but type-wise it may be undefined...\n const spanStartTimestamp = spanJson.start_timestamp;\n\n // The final endTimestamp should:\n // * Never be before the span start timestamp\n // * Be the latestSpanEndTimestamp, if there is one, and it is smaller than the passed span end timestamp\n // * Otherwise be the passed end timestamp\n // Final timestamp can never be after finalTimeout\n const endTimestamp = Math.min(\n spanStartTimestamp ? spanStartTimestamp + finalTimeout / 1000 : Infinity,\n Math.max(spanStartTimestamp || -Infinity, Math.min(spanEndTimestamp, latestSpanEndTimestamp || Infinity)),\n );\n\n onIdleSpanEnded(endTimestamp);\n return Reflect.apply(target, thisArg, [endTimestamp, ...rest]);\n },\n });\n\n /**\n * Cancels the existing idle timeout, if there is one.\n */\n function _cancelIdleTimeout(): void {\n if (_idleTimeoutID) {\n clearTimeout(_idleTimeoutID);\n _idleTimeoutID = undefined;\n }\n }\n\n /**\n * Cancels the existing child span timeout, if there is one.\n */\n function _cancelChildSpanTimeout(): void {\n if (_childSpanTimeoutID) {\n clearTimeout(_childSpanTimeoutID);\n _childSpanTimeoutID = undefined;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n function _restartIdleTimeout(endTimestamp?: number): void {\n _cancelIdleTimeout();\n _idleTimeoutID = setTimeout(() => {\n if (!_finished && activities.size === 0 && _autoFinishAllowed) {\n _finishReason = FINISH_REASON_IDLE_TIMEOUT;\n span.end(endTimestamp);\n }\n }, idleTimeout);\n }\n\n /**\n * Restarts child span timeout, if there is none running it will start one.\n */\n function _restartChildSpanTimeout(endTimestamp?: number): void {\n _cancelChildSpanTimeout();\n _idleTimeoutID = setTimeout(() => {\n if (!_finished && _autoFinishAllowed) {\n _finishReason = FINISH_REASON_HEARTBEAT_FAILED;\n span.end(endTimestamp);\n }\n }, childSpanTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n function _pushActivity(spanId: string): void {\n _cancelIdleTimeout();\n activities.set(spanId, true);\n\n const endTimestamp = timestampInSeconds();\n // We need to add the timeout here to have the real endtimestamp of the idle span\n // Remember timestampInSeconds is in seconds, timeout is in ms\n _restartChildSpanTimeout(endTimestamp + childSpanTimeout / 1000);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n function _popActivity(spanId: string): void {\n if (activities.has(spanId)) {\n activities.delete(spanId);\n }\n\n if (activities.size === 0) {\n const endTimestamp = timestampInSeconds();\n // We need to add the timeout here to have the real endtimestamp of the idle span\n // Remember timestampInSeconds is in seconds, timeout is in ms\n _restartIdleTimeout(endTimestamp + idleTimeout / 1000);\n _cancelChildSpanTimeout();\n }\n }\n\n function onIdleSpanEnded(endTimestamp: number): void {\n _finished = true;\n activities.clear();\n\n _cleanupHooks.forEach(cleanup => cleanup());\n\n _setSpanForScope(scope, previousActiveSpan);\n\n const spanJSON = spanToJSON(span);\n\n const { start_timestamp: startTimestamp } = spanJSON;\n // This should never happen, but to make TS happy...\n if (!startTimestamp) {\n return;\n }\n\n const attributes = spanJSON.data;\n if (!attributes[SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON]) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, _finishReason);\n }\n\n // Set span status to 'ok' if it hasn't been explicitly set to an error status\n const currentStatus = spanJSON.status;\n if (!currentStatus || currentStatus === 'unknown') {\n span.setStatus({ code: SPAN_STATUS_OK });\n }\n\n debug.log(`[Tracing] Idle span \"${spanJSON.op}\" finished`);\n\n const childSpans = getSpanDescendants(span).filter(child => child !== span);\n\n let discardedSpans = 0;\n childSpans.forEach(childSpan => {\n // We cancel all pending spans with status \"cancelled\" to indicate the idle span was finished early\n if (childSpan.isRecording()) {\n childSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'cancelled' });\n childSpan.end(endTimestamp);\n DEBUG_BUILD &&\n debug.log('[Tracing] Cancelling span since span ended early', JSON.stringify(childSpan, undefined, 2));\n }\n\n const childSpanJSON = spanToJSON(childSpan);\n const { timestamp: childEndTimestamp = 0, start_timestamp: childStartTimestamp = 0 } = childSpanJSON;\n\n const spanStartedBeforeIdleSpanEnd = childStartTimestamp <= endTimestamp;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (finalTimeout + idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = childEndTimestamp - childStartTimestamp <= timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(childSpan, undefined, 2);\n if (!spanStartedBeforeIdleSpanEnd) {\n debug.log('[Tracing] Discarding span since it happened after idle span was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n debug.log('[Tracing] Discarding span since it finished after idle span final timeout', stringifiedSpan);\n }\n }\n\n if (!spanEndedBeforeFinalTimeout || !spanStartedBeforeIdleSpanEnd) {\n removeChildSpanFromSpan(span, childSpan);\n discardedSpans++;\n }\n });\n\n if (discardedSpans > 0) {\n span.setAttribute('sentry.idle_span_discarded_spans', discardedSpans);\n }\n }\n\n _cleanupHooks.push(\n client.on('spanStart', startedSpan => {\n // If we already finished the idle span,\n // or if this is the idle span itself being started,\n // or if the started span has already been closed,\n // we don't care about it for activity\n if (\n _finished ||\n startedSpan === span ||\n !!spanToJSON(startedSpan).timestamp ||\n (startedSpan instanceof SentrySpan && startedSpan.isStandaloneSpan())\n ) {\n return;\n }\n\n const allSpans = getSpanDescendants(span);\n\n // If the span that was just started is a child of the idle span, we should track it\n if (allSpans.includes(startedSpan)) {\n _pushActivity(startedSpan.spanContext().spanId);\n }\n }),\n );\n\n _cleanupHooks.push(\n client.on('spanEnd', endedSpan => {\n if (_finished) {\n return;\n }\n\n _popActivity(endedSpan.spanContext().spanId);\n }),\n );\n\n _cleanupHooks.push(\n client.on('idleSpanEnableAutoFinish', spanToAllowAutoFinish => {\n if (spanToAllowAutoFinish === span) {\n _autoFinishAllowed = true;\n _restartIdleTimeout();\n\n if (activities.size) {\n _restartChildSpanTimeout();\n }\n }\n }),\n );\n\n // We only start the initial idle timeout if we are not delaying the auto finish\n if (!options.disableAutoFinish) {\n _restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!_finished) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' });\n _finishReason = FINISH_REASON_FINAL_TIMEOUT;\n span.end();\n }\n }, finalTimeout);\n\n return span;\n}\n\nfunction _startIdleSpan(options: StartSpanOptions): Span {\n const span = startInactiveSpan(options);\n\n _setSpanForScope(getCurrentScope(), span);\n\n DEBUG_BUILD && debug.log('[Tracing] Started span is an idle span');\n\n return span;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/constants.js new file mode 100644 index 0000000..2f85bcd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/constants.js @@ -0,0 +1,14 @@ +const LANGCHAIN_INTEGRATION_NAME = 'LangChain'; +const LANGCHAIN_ORIGIN = 'auto.ai.langchain'; + +const ROLE_MAP = { + human: 'user', + ai: 'assistant', + assistant: 'assistant', + system: 'system', + function: 'function', + tool: 'tool', +}; + +export { LANGCHAIN_INTEGRATION_NAME, LANGCHAIN_ORIGIN, ROLE_MAP }; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/constants.js.map new file mode 100644 index 0000000..166d524 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/langchain/constants.ts"],"sourcesContent":["export const LANGCHAIN_INTEGRATION_NAME = 'LangChain';\nexport const LANGCHAIN_ORIGIN = 'auto.ai.langchain';\n\nexport const ROLE_MAP: Record = {\n human: 'user',\n ai: 'assistant',\n assistant: 'assistant',\n system: 'system',\n function: 'function',\n tool: 'tool',\n};\n"],"names":[],"mappings":"AAAO,MAAM,0BAAA,GAA6B;AACnC,MAAM,gBAAA,GAAmB;;AAEzB,MAAM,QAAQ,GAA2B;AAChD,EAAE,KAAK,EAAE,MAAM;AACf,EAAE,EAAE,EAAE,WAAW;AACjB,EAAE,SAAS,EAAE,WAAW;AACxB,EAAE,MAAM,EAAE,QAAQ;AAClB,EAAE,QAAQ,EAAE,UAAU;AACtB,EAAE,IAAI,EAAE,MAAM;AACd;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/index.js new file mode 100644 index 0000000..e426ccd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/index.js @@ -0,0 +1,311 @@ +import { captureException } from '../../exports.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js'; +import { SPAN_STATUS_ERROR } from '../spanstatus.js'; +import { startSpanManual } from '../trace.js'; +import { 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'; +import { LANGCHAIN_ORIGIN } from './constants.js'; +import { extractLlmResponseAttributes, getInvocationParams, extractChatModelRequestAttributes, extractLLMRequestAttributes } from './utils.js'; + +/** + * Creates a Sentry callback handler for LangChain + * Returns a plain object that LangChain will call via duck-typing + * + * This is a stateful handler that tracks spans across multiple LangChain executions. + */ +function createLangChainCallbackHandler(options = {}) { + const recordInputs = options.recordInputs ?? false; + const recordOutputs = options.recordOutputs ?? false; + + // Internal state - single instance tracks all spans + const spanMap = new Map(); + + /** + * Exit a span and clean up + */ + const exitSpan = (runId) => { + const span = spanMap.get(runId); + if (span?.isRecording()) { + span.end(); + spanMap.delete(runId); + } + }; + + /** + * Handler for LLM Start + * This handler will be called by LangChain's callback handler when an LLM event is detected. + */ + const handler = { + // Required LangChain BaseCallbackHandler properties + lc_serializable: false, + lc_namespace: ['langchain_core', 'callbacks', 'sentry'], + lc_secrets: undefined, + lc_attributes: undefined, + lc_aliases: undefined, + lc_serializable_keys: undefined, + lc_id: ['langchain_core', 'callbacks', 'sentry'], + lc_kwargs: {}, + name: 'SentryCallbackHandler', + + // BaseCallbackHandlerInput boolean flags + ignoreLLM: false, + ignoreChain: false, + ignoreAgent: false, + ignoreRetriever: false, + ignoreCustomEvent: false, + raiseError: false, + awaitHandlers: true, + + handleLLMStart( + llm, + prompts, + runId, + _parentRunId, + _extraParams, + tags, + metadata, + _runName, + ) { + const invocationParams = getInvocationParams(tags); + const attributes = extractLLMRequestAttributes( + llm , + prompts, + recordInputs, + invocationParams, + metadata, + ); + const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE]; + const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE]; + + startSpanManual( + { + name: `${operationName} ${modelName}`, + op: 'gen_ai.chat', + attributes: { + ...attributes, + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat', + }, + }, + span => { + spanMap.set(runId, span); + return span; + }, + ); + }, + + // Chat Model Start Handler + handleChatModelStart( + llm, + messages, + runId, + _parentRunId, + _extraParams, + tags, + metadata, + _runName, + ) { + const invocationParams = getInvocationParams(tags); + const attributes = extractChatModelRequestAttributes( + llm , + messages , + recordInputs, + invocationParams, + metadata, + ); + const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE]; + const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE]; + + startSpanManual( + { + name: `${operationName} ${modelName}`, + op: 'gen_ai.chat', + attributes: { + ...attributes, + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat', + }, + }, + span => { + spanMap.set(runId, span); + return span; + }, + ); + }, + + // LLM End Handler - note: handleLLMEnd with capital LLM (used by both LLMs and chat models!) + handleLLMEnd( + output, + runId, + _parentRunId, + _tags, + _extraParams, + ) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + const attributes = extractLlmResponseAttributes(output , recordOutputs); + if (attributes) { + span.setAttributes(attributes); + } + exitSpan(runId); + } + }, + + // LLM Error Handler - note: handleLLMError with capital LLM + handleLLMError(error, runId) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'llm_error' }); + exitSpan(runId); + } + + captureException(error, { + mechanism: { + handled: false, + type: `${LANGCHAIN_ORIGIN}.llm_error_handler`, + }, + }); + }, + + // Chain Start Handler + handleChainStart(chain, inputs, runId, _parentRunId) { + const chainName = chain.name || 'unknown_chain'; + const attributes = { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain', + 'langchain.chain.name': chainName, + }; + + // Add inputs if recordInputs is enabled + if (recordInputs) { + attributes['langchain.chain.inputs'] = JSON.stringify(inputs); + } + + startSpanManual( + { + name: `chain ${chainName}`, + op: 'gen_ai.invoke_agent', + attributes: { + ...attributes, + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.invoke_agent', + }, + }, + span => { + spanMap.set(runId, span); + return span; + }, + ); + }, + + // Chain End Handler + handleChainEnd(outputs, runId) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + // Add outputs if recordOutputs is enabled + if (recordOutputs) { + span.setAttributes({ + 'langchain.chain.outputs': JSON.stringify(outputs), + }); + } + exitSpan(runId); + } + }, + + // Chain Error Handler + handleChainError(error, runId) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'chain_error' }); + exitSpan(runId); + } + + captureException(error, { + mechanism: { + handled: false, + type: `${LANGCHAIN_ORIGIN}.chain_error_handler`, + }, + }); + }, + + // Tool Start Handler + handleToolStart(tool, input, runId, _parentRunId) { + const toolName = tool.name || 'unknown_tool'; + const attributes = { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN, + [GEN_AI_TOOL_NAME_ATTRIBUTE]: toolName, + }; + + // Add input if recordInputs is enabled + if (recordInputs) { + attributes[GEN_AI_TOOL_INPUT_ATTRIBUTE] = input; + } + + startSpanManual( + { + name: `execute_tool ${toolName}`, + op: 'gen_ai.execute_tool', + attributes: { + ...attributes, + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.execute_tool', + }, + }, + span => { + spanMap.set(runId, span); + return span; + }, + ); + }, + + // Tool End Handler + handleToolEnd(output, runId) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + // Add output if recordOutputs is enabled + if (recordOutputs) { + span.setAttributes({ + [GEN_AI_TOOL_OUTPUT_ATTRIBUTE]: JSON.stringify(output), + }); + } + exitSpan(runId); + } + }, + + // Tool Error Handler + handleToolError(error, runId) { + const span = spanMap.get(runId); + if (span?.isRecording()) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'tool_error' }); + exitSpan(runId); + } + + captureException(error, { + mechanism: { + handled: false, + type: `${LANGCHAIN_ORIGIN}.tool_error_handler`, + }, + }); + }, + + // LangChain BaseCallbackHandler required methods + copy() { + return handler; + }, + + toJSON() { + return { + lc: 1, + type: 'not_implemented', + id: handler.lc_id, + }; + }, + + toJSONNotImplemented() { + return { + lc: 1, + type: 'not_implemented', + id: handler.lc_id, + }; + }, + }; + + return handler; +} + +export { createLangChainCallbackHandler }; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/index.js.map new file mode 100644 index 0000000..0ede350 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/langchain/index.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_TOOL_INPUT_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_TOOL_OUTPUT_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { LANGCHAIN_ORIGIN } from './constants';\nimport type {\n LangChainCallbackHandler,\n LangChainLLMResult,\n LangChainMessage,\n LangChainOptions,\n LangChainSerialized,\n} from './types';\nimport {\n extractChatModelRequestAttributes,\n extractLLMRequestAttributes,\n extractLlmResponseAttributes,\n getInvocationParams,\n} from './utils';\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 */\nexport function createLangChainCallbackHandler(options: LangChainOptions = {}): LangChainCallbackHandler {\n const recordInputs = options.recordInputs ?? false;\n const recordOutputs = options.recordOutputs ?? false;\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: string): void => {\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: LangChainCallbackHandler = {\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: unknown,\n prompts: string[],\n runId: string,\n _parentRunId?: string,\n _extraParams?: Record,\n tags?: string[],\n metadata?: Record,\n _runName?: string,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractLLMRequestAttributes(\n llm as LangChainSerialized,\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: unknown,\n messages: unknown,\n runId: string,\n _parentRunId?: string,\n _extraParams?: Record,\n tags?: string[],\n metadata?: Record,\n _runName?: string,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractChatModelRequestAttributes(\n llm as LangChainSerialized,\n messages as LangChainMessage[][],\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: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _extraParams?: Record,\n ) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n const attributes = extractLlmResponseAttributes(output as LangChainLLMResult, 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: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'llm_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(chain: { name?: string }, inputs: Record, runId: string, _parentRunId?: string) {\n const chainName = chain.name || 'unknown_chain';\n const attributes: Record = {\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: unknown, runId: string) {\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: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'chain_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: { name?: string }, input: string, runId: string, _parentRunId?: string) {\n const toolName = tool.name || 'unknown_tool';\n const attributes: Record = {\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: unknown, runId: string) {\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: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'tool_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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/utils.js new file mode 100644 index 0000000..549ff7b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/utils.js @@ -0,0 +1,437 @@ +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js'; +import { 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'; +import { truncateGenAiMessages } from '../ai/messageTruncation.js'; +import { extractSystemInstructions } from '../ai/utils.js'; +import { LANGCHAIN_ORIGIN, ROLE_MAP } from './constants.js'; + +/** + * Assigns an attribute only when the value is neither `undefined` nor `null`. + * + * We keep this tiny helper because call sites are repetitive and easy to miswrite. + * It also preserves falsy-but-valid values like `0` and `""`. + */ +const setIfDefined = (target, key, value) => { + if (value != null) target[key] = value ; +}; + +/** + * Like `setIfDefined`, but converts the value with `Number()` and skips only when the + * result is `NaN`. This ensures numeric 0 makes it through (unlike truthy checks). + */ +const setNumberIfDefined = (target, key, value) => { + const n = Number(value); + if (!Number.isNaN(n)) target[key] = n; +}; + +/** + * Converts a value to a string. Avoids double-quoted JSON strings where a plain + * string is desired, but still handles objects/arrays safely. + */ +function asString(v) { + if (typeof v === 'string') return v; + try { + return JSON.stringify(v); + } catch { + return String(v); + } +} + +/** + * Normalizes a single role token to our canonical set. + * + * @param role Incoming role value (free-form, any casing) + * @returns Canonical role: 'user' | 'assistant' | 'system' | 'function' | 'tool' | + */ +function normalizeMessageRole(role) { + const normalized = role.toLowerCase(); + return ROLE_MAP[normalized] ?? normalized; +} + +/** + * Infers a role from a LangChain message constructor name. + * + * Checks for substrings like "System", "Human", "AI", etc. + */ +function normalizeRoleNameFromCtor(name) { + if (name.includes('System')) return 'system'; + if (name.includes('Human')) return 'user'; + if (name.includes('AI') || name.includes('Assistant')) return 'assistant'; + if (name.includes('Function')) return 'function'; + if (name.includes('Tool')) return 'tool'; + return 'user'; +} + +/** + * Returns invocation params from a LangChain `tags` object. + * + * LangChain often passes runtime parameters (model, temperature, etc.) via the + * `tags.invocation_params` bag. If `tags` is an array (LangChain sometimes uses + * string tags), we return `undefined`. + * + * @param tags LangChain tags (string[] or record) + * @returns The `invocation_params` object, if present + */ +function getInvocationParams(tags) { + if (!tags || Array.isArray(tags)) return undefined; + return tags.invocation_params ; +} + +/** + * Normalizes a heterogeneous set of LangChain messages to `{ role, content }`. + * + * Why so many branches? LangChain messages can arrive in several shapes: + * - Message classes with `_getType()` (most reliable) + * - Classes with meaningful constructor names (e.g. `SystemMessage`) + * - Plain objects with `type`, or `{ role, content }` + * - Serialized format with `{ lc: 1, id: [...], kwargs: { content } }` + * We preserve the prioritization to minimize behavioral drift. + * + * @param messages Mixed LangChain messages + * @returns Array of normalized `{ role, content }` + */ +function normalizeLangChainMessages(messages) { + return messages.map(message => { + // 1) Prefer _getType() when present + const maybeGetType = (message )._getType; + if (typeof maybeGetType === 'function') { + const messageType = maybeGetType.call(message); + return { + role: normalizeMessageRole(messageType), + content: asString(message.content), + }; + } + + // 2) Serialized LangChain format (lc: 1) - check before constructor name + // This is more reliable than constructor.name which can be lost during serialization + if (message.lc === 1 && message.kwargs) { + const id = message.id; + const messageType = Array.isArray(id) && id.length > 0 ? id[id.length - 1] : ''; + const role = typeof messageType === 'string' ? normalizeRoleNameFromCtor(messageType) : 'user'; + + return { + role: normalizeMessageRole(role), + content: asString(message.kwargs?.content), + }; + } + + // 3) Then objects with `type` + if (message.type) { + const role = String(message.type).toLowerCase(); + return { + role: normalizeMessageRole(role), + content: asString(message.content), + }; + } + + // 4) Then objects with `{ role, content }` - check before constructor name + // Plain objects have constructor.name="Object" which would incorrectly default to "user" + if (message.role) { + return { + role: normalizeMessageRole(String(message.role)), + content: asString(message.content), + }; + } + + // 5) Then try constructor name (SystemMessage / HumanMessage / ...) + // Only use this if we haven't matched a more specific case + const ctor = (message ).constructor?.name; + if (ctor && ctor !== 'Object') { + return { + role: normalizeMessageRole(normalizeRoleNameFromCtor(ctor)), + content: asString(message.content), + }; + } + + // 6) Fallback: treat as user text + return { + role: 'user', + content: asString(message.content), + }; + }); +} + +/** + * Extracts request attributes common to both LLM and ChatModel invocations. + * + * Source precedence: + * 1) `invocationParams` (highest) + * 2) `langSmithMetadata` + * + * Numeric values are set even when 0 (e.g. `temperature: 0`), but skipped if `NaN`. + */ +function extractCommonRequestAttributes( + serialized, + invocationParams, + langSmithMetadata, +) { + const attrs = {}; + + // Get kwargs if available (from constructor type) + const kwargs = 'kwargs' in serialized ? serialized.kwargs : undefined; + + const temperature = invocationParams?.temperature ?? langSmithMetadata?.ls_temperature ?? kwargs?.temperature; + setNumberIfDefined(attrs, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, temperature); + + const maxTokens = invocationParams?.max_tokens ?? langSmithMetadata?.ls_max_tokens ?? kwargs?.max_tokens; + setNumberIfDefined(attrs, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, maxTokens); + + const topP = invocationParams?.top_p ?? kwargs?.top_p; + setNumberIfDefined(attrs, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, topP); + + const frequencyPenalty = invocationParams?.frequency_penalty; + setNumberIfDefined(attrs, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, frequencyPenalty); + + const presencePenalty = invocationParams?.presence_penalty; + setNumberIfDefined(attrs, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, presencePenalty); + + // LangChain uses `stream`. We only set the attribute if the key actually exists + // (some callbacks report `false` even on streamed requests, this stems from LangChain's callback handler). + if (invocationParams && 'stream' in invocationParams) { + setIfDefined(attrs, GEN_AI_REQUEST_STREAM_ATTRIBUTE, Boolean(invocationParams.stream)); + } + + return attrs; +} + +/** + * Small helper to assemble boilerplate attributes shared by both request extractors. + * Always uses 'chat' as the operation type for all LLM and chat model operations. + */ +function baseRequestAttributes( + system, + modelName, + serialized, + invocationParams, + langSmithMetadata, +) { + return { + [GEN_AI_SYSTEM_ATTRIBUTE]: asString(system ?? 'langchain'), + [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'chat', + [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: asString(modelName), + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN, + ...extractCommonRequestAttributes(serialized, invocationParams, langSmithMetadata), + }; +} + +/** + * Extracts attributes for plain LLM invocations (string prompts). + * + * - Operation is tagged as `chat` following OpenTelemetry semantic conventions. + * LangChain LLM operations are treated as chat operations. + * - When `recordInputs` is true, string prompts are wrapped into `{role:"user"}` + * messages to align with the chat schema used elsewhere. + */ +function extractLLMRequestAttributes( + llm, + prompts, + recordInputs, + invocationParams, + langSmithMetadata, +) { + const system = langSmithMetadata?.ls_provider; + const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown'; + + const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata); + + if (recordInputs && Array.isArray(prompts) && prompts.length > 0) { + setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, prompts.length); + const messages = prompts.map(p => ({ role: 'user', content: p })); + setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(messages)); + } + + return attrs; +} + +/** + * Extracts attributes for ChatModel invocations (array-of-arrays of messages). + * + * - Operation is tagged as `chat` following OpenTelemetry semantic conventions. + * LangChain chat model operations are chat operations. + * - We flatten LangChain's `LangChainMessage[][]` and normalize shapes into a + * consistent `{ role, content }` array when `recordInputs` is true. + * - Provider system value falls back to `serialized.id?.[2]`. + */ +function extractChatModelRequestAttributes( + llm, + langChainMessages, + recordInputs, + invocationParams, + langSmithMetadata, +) { + const system = langSmithMetadata?.ls_provider ?? llm.id?.[2]; + const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown'; + + const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata); + + if (recordInputs && Array.isArray(langChainMessages) && langChainMessages.length > 0) { + const normalized = normalizeLangChainMessages(langChainMessages.flat()); + + const { systemInstructions, filteredMessages } = extractSystemInstructions(normalized); + + if (systemInstructions) { + setIfDefined(attrs, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0; + setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredLength); + + const truncated = truncateGenAiMessages(filteredMessages ); + setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(truncated)); + } + + return attrs; +} + +/** + * Scans generations for Anthropic-style `tool_use` items and records them. + * + * LangChain represents some provider messages (e.g., Anthropic) with a `message.content` + * array that may include objects `{ type: 'tool_use', ... }`. We collect and attach + * them as a JSON array on `gen_ai.response.tool_calls` for downstream consumers. + */ +function addToolCallsAttributes(generations, attrs) { + const toolCalls = []; + const flatGenerations = generations.flat(); + + for (const gen of flatGenerations) { + const content = gen.message?.content; + if (Array.isArray(content)) { + for (const item of content) { + const t = item ; + if (t.type === 'tool_use') toolCalls.push(t); + } + } + } + + if (toolCalls.length > 0) { + setIfDefined(attrs, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, asString(toolCalls)); + } +} + +/** + * Adds token usage attributes, supporting both OpenAI (`tokenUsage`) and Anthropic (`usage`) formats. + * - Preserve zero values (0 tokens) by avoiding truthy checks. + * - Compute a total for Anthropic when not explicitly provided. + * - Include cache token metrics when present. + */ +function addTokenUsageAttributes( + llmOutput, + attrs, +) { + if (!llmOutput) return; + + const tokenUsage = llmOutput.tokenUsage + +; + const anthropicUsage = llmOutput.usage + +; + + if (tokenUsage) { + setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, tokenUsage.promptTokens); + setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, tokenUsage.completionTokens); + setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, tokenUsage.totalTokens); + } else if (anthropicUsage) { + setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.input_tokens); + setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, anthropicUsage.output_tokens); + + // Compute total when not provided by the provider. + const input = Number(anthropicUsage.input_tokens); + const output = Number(anthropicUsage.output_tokens); + const total = (Number.isNaN(input) ? 0 : input) + (Number.isNaN(output) ? 0 : output); + if (total > 0) setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, total); + + // Extra Anthropic cache metrics (present only when caching is enabled) + if (anthropicUsage.cache_creation_input_tokens !== undefined) + setNumberIfDefined( + attrs, + GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE, + anthropicUsage.cache_creation_input_tokens, + ); + if (anthropicUsage.cache_read_input_tokens !== undefined) + setNumberIfDefined(attrs, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.cache_read_input_tokens); + } +} + +/** + * Extracts response-related attributes based on a `LangChainLLMResult`. + * + * - Records finish reasons when present on generations (e.g., OpenAI) + * - When `recordOutputs` is true, captures textual response content and any + * tool calls. + * - Also propagates model name (`model_name` or `model`), response `id`, and + * `stop_reason` (for providers that use it). + */ +function extractLlmResponseAttributes( + llmResult, + recordOutputs, +) { + if (!llmResult) return; + + const attrs = {}; + + if (Array.isArray(llmResult.generations)) { + const finishReasons = llmResult.generations + .flat() + .map(g => { + // v1 uses generationInfo.finish_reason + if (g.generationInfo?.finish_reason) { + return g.generationInfo.finish_reason; + } + // v0.3+ uses generation_info.finish_reason + if (g.generation_info?.finish_reason) { + return g.generation_info.finish_reason; + } + return null; + }) + .filter((r) => typeof r === 'string'); + + if (finishReasons.length > 0) { + setIfDefined(attrs, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, asString(finishReasons)); + } + + // Tool calls metadata (names, IDs) are not PII, so capture them regardless of recordOutputs + addToolCallsAttributes(llmResult.generations , attrs); + + if (recordOutputs) { + const texts = llmResult.generations + .flat() + .map(gen => gen.text ?? gen.message?.content) + .filter(t => typeof t === 'string'); + + if (texts.length > 0) { + setIfDefined(attrs, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, asString(texts)); + } + } + } + + addTokenUsageAttributes(llmResult.llmOutput, attrs); + + const llmOutput = llmResult.llmOutput; + + // Extract from v1 generations structure if available + const firstGeneration = llmResult.generations?.[0]?.[0]; + const v1Message = firstGeneration?.message; + + // Provider model identifier: `model_name` (OpenAI-style) or `model` (others) + // v1 stores this in message.response_metadata.model_name + const modelName = llmOutput?.model_name ?? llmOutput?.model ?? v1Message?.response_metadata?.model_name; + if (modelName) setIfDefined(attrs, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, modelName); + + // Response ID: v1 stores this in message.id + const responseId = llmOutput?.id ?? v1Message?.id; + if (responseId) { + setIfDefined(attrs, GEN_AI_RESPONSE_ID_ATTRIBUTE, responseId); + } + + // Stop reason: v1 stores this in message.response_metadata.finish_reason + const stopReason = llmOutput?.stop_reason ?? v1Message?.response_metadata?.finish_reason; + if (stopReason) { + setIfDefined(attrs, GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, asString(stopReason)); + } + + return attrs; +} + +export { extractChatModelRequestAttributes, extractLLMRequestAttributes, extractLlmResponseAttributes, getInvocationParams, normalizeLangChainMessages }; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/utils.js.map new file mode 100644 index 0000000..754e80f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langchain/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/langchain/utils.ts"],"sourcesContent":["import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { extractSystemInstructions } from '../ai/utils';\nimport { LANGCHAIN_ORIGIN, ROLE_MAP } from './constants';\nimport type { LangChainLLMResult, LangChainMessage, LangChainSerialized } from './types';\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: Record, key: string, value: unknown): void => {\n if (value != null) target[key] = value as SpanAttributeValue;\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: Record, key: string, value: unknown): void => {\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: unknown): string {\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 * 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: string): string {\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: string): string {\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 */\nexport function getInvocationParams(tags?: string[] | Record): Record | undefined {\n if (!tags || Array.isArray(tags)) return undefined;\n return tags.invocation_params as Record | undefined;\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 */\nexport function normalizeLangChainMessages(messages: LangChainMessage[]): Array<{ role: string; content: string }> {\n return messages.map(message => {\n // 1) Prefer _getType() when present\n const maybeGetType = (message as { _getType?: () => string })._getType;\n if (typeof maybeGetType === 'function') {\n const messageType = maybeGetType.call(message);\n return {\n role: normalizeMessageRole(messageType),\n content: asString(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: asString(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: asString(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: asString(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 as { constructor?: { name?: string } }).constructor?.name;\n if (ctor && ctor !== 'Object') {\n return {\n role: normalizeMessageRole(normalizeRoleNameFromCtor(ctor)),\n content: asString(message.content),\n };\n }\n\n // 6) Fallback: treat as user text\n return {\n role: 'user',\n content: asString(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: LangChainSerialized,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const attrs: Record = {};\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: unknown,\n modelName: unknown,\n serialized: LangChainSerialized,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\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 */\nexport function extractLLMRequestAttributes(\n llm: LangChainSerialized,\n prompts: string[],\n recordInputs: boolean,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\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 */\nexport function extractChatModelRequestAttributes(\n llm: LangChainSerialized,\n langChainMessages: LangChainMessage[][],\n recordInputs: boolean,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\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 as unknown[]);\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: LangChainMessage[][], attrs: Record): void {\n const toolCalls: unknown[] = [];\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 as { type: string };\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: LangChainLLMResult['llmOutput'],\n attrs: Record,\n): void {\n if (!llmOutput) return;\n\n const tokenUsage = llmOutput.tokenUsage as\n | { promptTokens?: number; completionTokens?: number; totalTokens?: number }\n | undefined;\n const anthropicUsage = llmOutput.usage as\n | {\n input_tokens?: number;\n output_tokens?: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n }\n | undefined;\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 */\nexport function extractLlmResponseAttributes(\n llmResult: LangChainLLMResult,\n recordOutputs: boolean,\n): Record | undefined {\n if (!llmResult) return;\n\n const attrs: Record = {};\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): r is string => 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 as LangChainMessage[][], 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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/constants.js new file mode 100644 index 0000000..3ca9572 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/constants.js @@ -0,0 +1,5 @@ +const LANGGRAPH_INTEGRATION_NAME = 'LangGraph'; +const LANGGRAPH_ORIGIN = 'auto.ai.langgraph'; + +export { LANGGRAPH_INTEGRATION_NAME, LANGGRAPH_ORIGIN }; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/constants.js.map new file mode 100644 index 0000000..332b40a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/langgraph/constants.ts"],"sourcesContent":["export const LANGGRAPH_INTEGRATION_NAME = 'LangGraph';\nexport const LANGGRAPH_ORIGIN = 'auto.ai.langgraph';\n"],"names":[],"mappings":"AAAO,MAAM,0BAAA,GAA6B;AACnC,MAAM,gBAAA,GAAmB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/index.js new file mode 100644 index 0000000..34f64e8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/index.js @@ -0,0 +1,206 @@ +import { captureException } from '../../exports.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js'; +import { SPAN_STATUS_ERROR } from '../spanstatus.js'; +import { startSpan } from '../trace.js'; +import { 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'; +import { truncateGenAiMessages } from '../ai/messageTruncation.js'; +import { extractSystemInstructions } from '../ai/utils.js'; +import { normalizeLangChainMessages } from '../langchain/utils.js'; +import { LANGGRAPH_ORIGIN } from './constants.js'; +import { extractToolsFromCompiledGraph, setResponseAttributes } from './utils.js'; + +/** + * Instruments StateGraph's compile method to create spans for agent creation and invocation + * + * Wraps the compile() method to: + * - Create a `gen_ai.create_agent` span when compile() is called + * - Automatically wrap the invoke() method on the returned compiled graph with a `gen_ai.invoke_agent` span + * + */ +function instrumentStateGraphCompile( + originalCompile, + options, +) { + return new Proxy(originalCompile, { + apply(target, thisArg, args) { + return startSpan( + { + op: 'gen_ai.create_agent', + name: 'create_agent', + attributes: { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN, + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.create_agent', + [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'create_agent', + }, + }, + span => { + try { + const compiledGraph = Reflect.apply(target, thisArg, args); + const compileOptions = args.length > 0 ? (args[0] ) : {}; + + // Extract graph name + if (compileOptions?.name && typeof compileOptions.name === 'string') { + span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, compileOptions.name); + span.updateName(`create_agent ${compileOptions.name}`); + } + + // Instrument agent invoke method on the compiled graph + const originalInvoke = compiledGraph.invoke; + if (originalInvoke && typeof originalInvoke === 'function') { + compiledGraph.invoke = instrumentCompiledGraphInvoke( + originalInvoke.bind(compiledGraph) , + compiledGraph, + compileOptions, + options, + ) ; + } + + return compiledGraph; + } catch (error) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' }); + captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.langgraph.error', + }, + }); + throw error; + } + }, + ); + }, + }) ; +} + +/** + * Instruments CompiledGraph's invoke method to create spans for agent invocation + * + * Creates a `gen_ai.invoke_agent` span when invoke() is called + */ +function instrumentCompiledGraphInvoke( + originalInvoke, + graphInstance, + compileOptions, + options, +) { + return new Proxy(originalInvoke, { + apply(target, thisArg, args) { + return startSpan( + { + op: 'gen_ai.invoke_agent', + name: 'invoke_agent', + attributes: { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN, + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE, + [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'invoke_agent', + }, + }, + async span => { + try { + const graphName = compileOptions?.name; + + if (graphName && typeof graphName === 'string') { + span.setAttribute(GEN_AI_PIPELINE_NAME_ATTRIBUTE, graphName); + span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, graphName); + span.updateName(`invoke_agent ${graphName}`); + } + + // Extract thread_id from the config (second argument) + // LangGraph uses config.configurable.thread_id for conversation/session linking + const config = args.length > 1 ? (args[1] ) : undefined; + const configurable = config?.configurable ; + const threadId = configurable?.thread_id; + if (threadId && typeof threadId === 'string') { + span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, threadId); + } + + // Extract available tools from the graph instance + const tools = extractToolsFromCompiledGraph(graphInstance); + if (tools) { + span.setAttribute(GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, JSON.stringify(tools)); + } + + // Parse input messages + const recordInputs = options.recordInputs; + const recordOutputs = options.recordOutputs; + const inputMessages = + args.length > 0 ? ((args[0] ).messages ?? []) : []; + + if (inputMessages && recordInputs) { + const normalizedMessages = normalizeLangChainMessages(inputMessages); + const { systemInstructions, filteredMessages } = extractSystemInstructions(normalizedMessages); + + if (systemInstructions) { + span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const truncatedMessages = truncateGenAiMessages(filteredMessages ); + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0; + span.setAttributes({ + [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncatedMessages), + [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength, + }); + } + + // Call original invoke + const result = await Reflect.apply(target, thisArg, args); + + // Set response attributes + if (recordOutputs) { + setResponseAttributes(span, inputMessages ?? null, result); + } + + return result; + } catch (error) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' }); + captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.langgraph.error', + }, + }); + throw error; + } + }, + ); + }, + }) ; +} + +/** + * Directly instruments a StateGraph instance to add tracing spans + * + * This function can be used to manually instrument LangGraph StateGraph instances + * in environments where automatic instrumentation is not available or desired. + * + * @param stateGraph - The StateGraph instance to instrument + * @param options - Optional configuration for recording inputs/outputs + * + * @example + * ```typescript + * import { instrumentLangGraph } from '@sentry/cloudflare'; + * import { StateGraph } from '@langchain/langgraph'; + * + * const graph = new StateGraph(MessagesAnnotation) + * .addNode('agent', mockLlm) + * .addEdge(START, 'agent') + * .addEdge('agent', END); + * + * instrumentLangGraph(graph, { recordInputs: true, recordOutputs: true }); + * const compiled = graph.compile({ name: 'my_agent' }); + * ``` + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function instrumentLangGraph( + stateGraph, + options, +) { + const _options = options || {}; + + stateGraph.compile = instrumentStateGraphCompile(stateGraph.compile.bind(stateGraph), _options); + + return stateGraph; +} + +export { instrumentLangGraph, instrumentStateGraphCompile }; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/index.js.map new file mode 100644 index 0000000..7c29cbd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/langgraph/index.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport {\n GEN_AI_AGENT_NAME_ATTRIBUTE,\n GEN_AI_CONVERSATION_ID_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_PIPELINE_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { extractSystemInstructions } from '../ai/utils';\nimport type { LangChainMessage } from '../langchain/types';\nimport { normalizeLangChainMessages } from '../langchain/utils';\nimport { startSpan } from '../trace';\nimport { LANGGRAPH_ORIGIN } from './constants';\nimport type { CompiledGraph, LangGraphOptions } from './types';\nimport { extractToolsFromCompiledGraph, setResponseAttributes } from './utils';\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 */\nexport function instrumentStateGraphCompile(\n originalCompile: (...args: unknown[]) => CompiledGraph,\n options: LangGraphOptions,\n): (...args: unknown[]) => CompiledGraph {\n return new Proxy(originalCompile, {\n apply(target, thisArg, args: unknown[]): CompiledGraph {\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] as Record) : {};\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) as (...args: unknown[]) => Promise,\n compiledGraph,\n compileOptions,\n options,\n ) as typeof originalInvoke;\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 }) as (...args: unknown[]) => CompiledGraph;\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: (...args: unknown[]) => Promise,\n graphInstance: CompiledGraph,\n compileOptions: Record,\n options: LangGraphOptions,\n): (...args: unknown[]) => Promise {\n return new Proxy(originalInvoke, {\n apply(target, thisArg, args: unknown[]): Promise {\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] as Record | undefined) : undefined;\n const configurable = config?.configurable as Record | undefined;\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] as { messages?: LangChainMessage[] }).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 as unknown[]);\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 }) as (...args: unknown[]) => Promise;\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\nexport function instrumentLangGraph any }>(\n stateGraph: T,\n options?: LangGraphOptions,\n): T {\n const _options: LangGraphOptions = options || {};\n\n stateGraph.compile = instrumentStateGraphCompile(stateGraph.compile.bind(stateGraph), _options);\n\n return stateGraph;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/utils.js new file mode 100644 index 0000000..8f834f6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/utils.js @@ -0,0 +1,177 @@ +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'; +import { normalizeLangChainMessages } from '../langchain/utils.js'; + +/** + * Extract tool calls from messages + */ +function extractToolCalls(messages) { + if (!messages || messages.length === 0) { + return null; + } + + const toolCalls = []; + + for (const message of messages) { + if (message && typeof message === 'object') { + const msgToolCalls = message.tool_calls; + if (msgToolCalls && Array.isArray(msgToolCalls)) { + toolCalls.push(...msgToolCalls); + } + } + } + + return toolCalls.length > 0 ? toolCalls : null; +} + +/** + * Extract token usage from a message's usage_metadata or response_metadata + * Returns token counts without setting span attributes + */ +function extractTokenUsageFromMessage(message) + + { + const msg = message ; + let inputTokens = 0; + let outputTokens = 0; + let totalTokens = 0; + + // Extract from usage_metadata (newer format) + if (msg.usage_metadata && typeof msg.usage_metadata === 'object') { + const usage = msg.usage_metadata ; + if (typeof usage.input_tokens === 'number') { + inputTokens = usage.input_tokens; + } + if (typeof usage.output_tokens === 'number') { + outputTokens = usage.output_tokens; + } + if (typeof usage.total_tokens === 'number') { + totalTokens = usage.total_tokens; + } + return { inputTokens, outputTokens, totalTokens }; + } + + // Fallback: Extract from response_metadata.tokenUsage + if (msg.response_metadata && typeof msg.response_metadata === 'object') { + const metadata = msg.response_metadata ; + if (metadata.tokenUsage && typeof metadata.tokenUsage === 'object') { + const tokenUsage = metadata.tokenUsage ; + if (typeof tokenUsage.promptTokens === 'number') { + inputTokens = tokenUsage.promptTokens; + } + if (typeof tokenUsage.completionTokens === 'number') { + outputTokens = tokenUsage.completionTokens; + } + if (typeof tokenUsage.totalTokens === 'number') { + totalTokens = tokenUsage.totalTokens; + } + } + } + + return { inputTokens, outputTokens, totalTokens }; +} + +/** + * Extract model and finish reason from a message's response_metadata + */ +function extractModelMetadata(span, message) { + const msg = message ; + + if (msg.response_metadata && typeof msg.response_metadata === 'object') { + const metadata = msg.response_metadata ; + + if (metadata.model_name && typeof metadata.model_name === 'string') { + span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, metadata.model_name); + } + + if (metadata.finish_reason && typeof metadata.finish_reason === 'string') { + span.setAttribute(GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, [metadata.finish_reason]); + } + } +} + +/** + * Extract tools from compiled graph structure + * + * Tools are stored in: compiledGraph.builder.nodes.tools.runnable.tools + */ +function extractToolsFromCompiledGraph(compiledGraph) { + if (!compiledGraph.builder?.nodes?.tools?.runnable?.tools) { + return null; + } + + const tools = compiledGraph.builder?.nodes?.tools?.runnable?.tools; + + if (!tools || !Array.isArray(tools) || tools.length === 0) { + return null; + } + + // Extract name, description, and schema from each tool's lc_kwargs + return tools.map((tool) => ({ + name: tool.lc_kwargs?.name, + description: tool.lc_kwargs?.description, + schema: tool.lc_kwargs?.schema, + })); +} + +/** + * Set response attributes on the span + */ +function setResponseAttributes(span, inputMessages, result) { + // Extract messages from result + const resultObj = result ; + const outputMessages = resultObj?.messages; + + if (!outputMessages || !Array.isArray(outputMessages)) { + return; + } + + // Get new messages (delta between input and output) + const inputCount = inputMessages?.length ?? 0; + const newMessages = outputMessages.length > inputCount ? outputMessages.slice(inputCount) : []; + + if (newMessages.length === 0) { + return; + } + + // Extract and set tool calls from new messages BEFORE normalization + // (normalization strips tool_calls, so we need to extract them first) + const toolCalls = extractToolCalls(newMessages ); + if (toolCalls) { + span.setAttribute(GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, JSON.stringify(toolCalls)); + } + + // Normalize the new messages + const normalizedNewMessages = normalizeLangChainMessages(newMessages); + span.setAttribute(GEN_AI_RESPONSE_TEXT_ATTRIBUTE, JSON.stringify(normalizedNewMessages)); + + // Accumulate token usage across all messages + let totalInputTokens = 0; + let totalOutputTokens = 0; + let totalTokens = 0; + + // Extract metadata from messages + for (const message of newMessages) { + // Accumulate token usage + const tokens = extractTokenUsageFromMessage(message); + totalInputTokens += tokens.inputTokens; + totalOutputTokens += tokens.outputTokens; + totalTokens += tokens.totalTokens; + + // Extract model metadata (last message's metadata wins for model/finish_reason) + extractModelMetadata(span, message); + } + + // Set accumulated token usage on span + if (totalInputTokens > 0) { + span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, totalInputTokens); + } + if (totalOutputTokens > 0) { + span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, totalOutputTokens); + } + if (totalTokens > 0) { + span.setAttribute(GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, totalTokens); + } +} + +export { extractModelMetadata, extractTokenUsageFromMessage, extractToolCalls, extractToolsFromCompiledGraph, setResponseAttributes }; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/utils.js.map new file mode 100644 index 0000000..ab1f2b1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/langgraph/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/langgraph/utils.ts"],"sourcesContent":["import type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { LangChainMessage } from '../langchain/types';\nimport { normalizeLangChainMessages } from '../langchain/utils';\nimport type { CompiledGraph, LangGraphTool } from './types';\n\n/**\n * Extract tool calls from messages\n */\nexport function extractToolCalls(messages: Array> | null): unknown[] | null {\n if (!messages || messages.length === 0) {\n return null;\n }\n\n const toolCalls: unknown[] = [];\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 */\nexport function extractTokenUsageFromMessage(message: LangChainMessage): {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n} {\n const msg = message as Record;\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 as Record;\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 as Record;\n if (metadata.tokenUsage && typeof metadata.tokenUsage === 'object') {\n const tokenUsage = metadata.tokenUsage as Record;\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 */\nexport function extractModelMetadata(span: Span, message: LangChainMessage): void {\n const msg = message as Record;\n\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata as Record;\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 */\nexport function extractToolsFromCompiledGraph(compiledGraph: CompiledGraph): unknown[] | null {\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: LangGraphTool) => ({\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 */\nexport function setResponseAttributes(span: Span, inputMessages: LangChainMessage[] | null, result: unknown): void {\n // Extract messages from result\n const resultObj = result as { messages?: LangChainMessage[] } | undefined;\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 as Array>);\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/logSpans.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/logSpans.js new file mode 100644 index 0000000..fd4b92b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/logSpans.js @@ -0,0 +1,57 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug } from '../utils/debug-logger.js'; +import { spanToJSON, getRootSpan, spanIsSampled } from '../utils/spanUtils.js'; + +/** + * Print a log message for a started span. + */ +function logSpanStart(span) { + if (!DEBUG_BUILD) return; + + const { description = '< unknown name >', op = '< unknown op >', parent_span_id: parentSpanId } = spanToJSON(span); + const { spanId } = span.spanContext(); + + const sampled = spanIsSampled(span); + const rootSpan = getRootSpan(span); + const isRootSpan = rootSpan === span; + + const header = `[Tracing] Starting ${sampled ? 'sampled' : 'unsampled'} ${isRootSpan ? 'root ' : ''}span`; + + const infoParts = [`op: ${op}`, `name: ${description}`, `ID: ${spanId}`]; + + if (parentSpanId) { + infoParts.push(`parent ID: ${parentSpanId}`); + } + + if (!isRootSpan) { + const { op, description } = spanToJSON(rootSpan); + infoParts.push(`root ID: ${rootSpan.spanContext().spanId}`); + if (op) { + infoParts.push(`root op: ${op}`); + } + if (description) { + infoParts.push(`root description: ${description}`); + } + } + + debug.log(`${header} + ${infoParts.join('\n ')}`); +} + +/** + * Print a log message for an ended span. + */ +function logSpanEnd(span) { + if (!DEBUG_BUILD) return; + + const { description = '< unknown name >', op = '< unknown op >' } = spanToJSON(span); + const { spanId } = span.spanContext(); + const rootSpan = getRootSpan(span); + const isRootSpan = rootSpan === span; + + const msg = `[Tracing] Finishing "${op}" ${isRootSpan ? 'root ' : ''}span "${description}" with ID ${spanId}`; + debug.log(msg); +} + +export { logSpanEnd, logSpanStart }; +//# sourceMappingURL=logSpans.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/logSpans.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/logSpans.js.map new file mode 100644 index 0000000..22d70b1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/logSpans.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logSpans.js","sources":["../../../src/tracing/logSpans.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { Span } from '../types-hoist/span';\nimport { debug } from '../utils/debug-logger';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Print a log message for a started span.\n */\nexport function logSpanStart(span: Span): void {\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: string[] = [`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 */\nexport function logSpanEnd(span: Span): void {\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"],"names":[],"mappings":";;;;AAKA;AACA;AACA;AACO,SAAS,YAAY,CAAC,IAAI,EAAc;AAC/C,EAAE,IAAI,CAAC,WAAW,EAAE;;AAEpB,EAAE,MAAM,EAAE,WAAA,GAAc,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,cAAc,EAAE,YAAA,EAAa,GAAI,UAAU,CAAC,IAAI,CAAC;AACpH,EAAE,MAAM,EAAE,MAAA,EAAO,GAAI,IAAI,CAAC,WAAW,EAAE;;AAEvC,EAAE,MAAM,OAAA,GAAU,aAAa,CAAC,IAAI,CAAC;AACrC,EAAE,MAAM,QAAA,GAAW,WAAW,CAAC,IAAI,CAAC;AACpC,EAAE,MAAM,UAAA,GAAa,QAAA,KAAa,IAAI;;AAEtC,EAAE,MAAM,SAAS,CAAC,mBAAmB,EAAE,OAAA,GAAU,SAAA,GAAY,WAAW,CAAC,CAAC,EAAE,UAAA,GAAa,UAAU,EAAE,CAAC,IAAI,CAAC;;AAE3G,EAAE,MAAM,SAAS,GAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,CAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA,CAAA;;AAEA,EAAA,IAAA,YAAA,EAAA;AACA,IAAA,SAAA,CAAA,IAAA,CAAA,CAAA,WAAA,EAAA,YAAA,CAAA,CAAA,CAAA;AACA,EAAA;;AAEA,EAAA,IAAA,CAAA,UAAA,EAAA;AACA,IAAA,MAAA,EAAA,EAAA,EAAA,WAAA,EAAA,GAAA,UAAA,CAAA,QAAA,CAAA;AACA,IAAA,SAAA,CAAA,IAAA,CAAA,CAAA,SAAA,EAAA,QAAA,CAAA,WAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AACA,IAAA,IAAA,EAAA,EAAA;AACA,MAAA,SAAA,CAAA,IAAA,CAAA,CAAA,SAAA,EAAA,EAAA,CAAA,CAAA,CAAA;AACA,IAAA;AACA,IAAA,IAAA,WAAA,EAAA;AACA,MAAA,SAAA,CAAA,IAAA,CAAA,CAAA,kBAAA,EAAA,WAAA,CAAA,CAAA,CAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,KAAA,CAAA,GAAA,CAAA,CAAA,EAAA,MAAA;AACA,EAAA,EAAA,SAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,UAAA,CAAA,IAAA,EAAA;AACA,EAAA,IAAA,CAAA,WAAA,EAAA;;AAEA,EAAA,MAAA,EAAA,WAAA,GAAA,kBAAA,EAAA,EAAA,GAAA,gBAAA,EAAA,GAAA,UAAA,CAAA,IAAA,CAAA;AACA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,CAAA,WAAA,EAAA;AACA,EAAA,MAAA,QAAA,GAAA,WAAA,CAAA,IAAA,CAAA;AACA,EAAA,MAAA,UAAA,GAAA,QAAA,KAAA,IAAA;;AAEA,EAAA,MAAA,GAAA,GAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,EAAA,EAAA,UAAA,GAAA,OAAA,GAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AACA,EAAA,KAAA,CAAA,GAAA,CAAA,GAAA,CAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/measurement.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/measurement.js new file mode 100644 index 0000000..4511fb8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/measurement.js @@ -0,0 +1,45 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE } from '../semanticAttributes.js'; +import { debug } from '../utils/debug-logger.js'; +import { getActiveSpan, getRootSpan } from '../utils/spanUtils.js'; + +/** + * Adds a measurement to the active transaction on the current global scope. You can optionally pass in a different span + * as the 4th parameter. + */ +function setMeasurement(name, value, unit, activeSpan = getActiveSpan()) { + const rootSpan = activeSpan && getRootSpan(activeSpan); + + if (rootSpan) { + DEBUG_BUILD && debug.log(`[Measurement] Setting measurement on root span: ${name} = ${value} ${unit}`); + rootSpan.addEvent(name, { + [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]: value, + [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]: unit , + }); + } +} + +/** + * Convert timed events to measurements. + */ +function timedEventsToMeasurements(events) { + if (!events || events.length === 0) { + return undefined; + } + + const measurements = {}; + events.forEach(event => { + const attributes = event.attributes || {}; + const unit = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT] ; + const value = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE] ; + + if (typeof unit === 'string' && typeof value === 'number') { + measurements[event.name] = { value, unit }; + } + }); + + return measurements; +} + +export { setMeasurement, timedEventsToMeasurements }; +//# sourceMappingURL=measurement.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/measurement.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/measurement.js.map new file mode 100644 index 0000000..5092858 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/measurement.js.map @@ -0,0 +1 @@ +{"version":3,"file":"measurement.js","sources":["../../../src/tracing/measurement.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT,\n SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE,\n} from '../semanticAttributes';\nimport type { Measurements, MeasurementUnit } from '../types-hoist/measurement';\nimport type { TimedEvent } from '../types-hoist/timedEvent';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\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 */\nexport function setMeasurement(name: string, value: number, unit: MeasurementUnit, activeSpan = getActiveSpan()): void {\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 as string,\n });\n }\n}\n\n/**\n * Convert timed events to measurements.\n */\nexport function timedEventsToMeasurements(events: TimedEvent[]): Measurements | undefined {\n if (!events || events.length === 0) {\n return undefined;\n }\n\n const measurements: Measurements = {};\n events.forEach(event => {\n const attributes = event.attributes || {};\n const unit = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT] as MeasurementUnit | undefined;\n const value = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE] as number | undefined;\n\n if (typeof unit === 'string' && typeof value === 'number') {\n measurements[event.name] = { value, unit };\n }\n });\n\n return measurements;\n}\n"],"names":[],"mappings":";;;;;AAUA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,IAAI,EAAU,KAAK,EAAU,IAAI,EAAmB,aAAa,aAAa,EAAE,EAAQ;AACvH,EAAE,MAAM,WAAW,UAAA,IAAc,WAAW,CAAC,UAAU,CAAC;;AAExD,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,eAAe,KAAK,CAAC,GAAG,CAAC,CAAC,gDAAgD,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA,CAAA;AACA,IAAA,QAAA,CAAA,QAAA,CAAA,IAAA,EAAA;AACA,MAAA,CAAA,2CAAA,GAAA,KAAA;AACA,MAAA,CAAA,0CAAA,GAAA,IAAA;AACA,KAAA,CAAA;AACA,EAAA;AACA;;AAEA;AACA;AACA;AACA,SAAA,yBAAA,CAAA,MAAA,EAAA;AACA,EAAA,IAAA,CAAA,MAAA,IAAA,MAAA,CAAA,MAAA,KAAA,CAAA,EAAA;AACA,IAAA,OAAA,SAAA;AACA,EAAA;;AAEA,EAAA,MAAA,YAAA,GAAA,EAAA;AACA,EAAA,MAAA,CAAA,OAAA,CAAA,KAAA,IAAA;AACA,IAAA,MAAA,UAAA,GAAA,KAAA,CAAA,UAAA,IAAA,EAAA;AACA,IAAA,MAAA,IAAA,GAAA,UAAA,CAAA,0CAAA,CAAA;AACA,IAAA,MAAA,KAAA,GAAA,UAAA,CAAA,2CAAA,CAAA;;AAEA,IAAA,IAAA,OAAA,IAAA,KAAA,QAAA,IAAA,OAAA,KAAA,KAAA,QAAA,EAAA;AACA,MAAA,YAAA,CAAA,KAAA,CAAA,IAAA,CAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA;AACA,IAAA;AACA,EAAA,CAAA,CAAA;;AAEA,EAAA,OAAA,YAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/constants.js new file mode 100644 index 0000000..1f9f519 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/constants.js @@ -0,0 +1,32 @@ +const OPENAI_INTEGRATION_NAME = 'OpenAI'; + +// https://platform.openai.com/docs/quickstart?api-mode=responses +// https://platform.openai.com/docs/quickstart?api-mode=chat +// https://platform.openai.com/docs/api-reference/conversations +const INSTRUMENTED_METHODS = [ + 'responses.create', + 'chat.completions.create', + 'embeddings.create', + // Conversations API - for conversation state management + // https://platform.openai.com/docs/guides/conversation-state + 'conversations.create', +] ; +const RESPONSES_TOOL_CALL_EVENT_TYPES = [ + 'response.output_item.added', + 'response.function_call_arguments.delta', + 'response.function_call_arguments.done', + 'response.output_item.done', +] ; +const RESPONSE_EVENT_TYPES = [ + 'response.created', + 'response.in_progress', + 'response.failed', + 'response.completed', + 'response.incomplete', + 'response.queued', + 'response.output_text.delta', + ...RESPONSES_TOOL_CALL_EVENT_TYPES, +] ; + +export { INSTRUMENTED_METHODS, OPENAI_INTEGRATION_NAME, RESPONSES_TOOL_CALL_EVENT_TYPES, RESPONSE_EVENT_TYPES }; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/constants.js.map new file mode 100644 index 0000000..60dde55 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/openai/constants.ts"],"sourcesContent":["export 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\nexport const 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] as const;\nexport const 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] as const;\nexport const 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] as const;\n"],"names":[],"mappings":"AAAO,MAAM,uBAAA,GAA0B;;AAEvC;AACA;AACA;AACO,MAAM,uBAAuB;AACpC,EAAE,kBAAkB;AACpB,EAAE,yBAAyB;AAC3B,EAAE,mBAAmB;AACrB;AACA;AACA,EAAE,sBAAsB;AACxB,CAAA;AACO,MAAM,kCAAkC;AAC/C,EAAE,4BAA4B;AAC9B,EAAE,wCAAwC;AAC1C,EAAE,uCAAuC;AACzC,EAAE,2BAA2B;AAC7B,CAAA;AACO,MAAM,uBAAuB;AACpC,EAAE,kBAAkB;AACpB,EAAE,sBAAsB;AACxB,EAAE,iBAAiB;AACnB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,iBAAiB;AACnB,EAAE,4BAA4B;AAC9B,EAAE,GAAG,+BAA+B;AACpC,CAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/index.js new file mode 100644 index 0000000..9ce1dcd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/index.js @@ -0,0 +1,268 @@ +import { getClient } from '../../currentScopes.js'; +import { captureException } from '../../exports.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js'; +import { SPAN_STATUS_ERROR } from '../spanstatus.js'; +import { startSpanManual, startSpan } from '../trace.js'; +import { 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'; +import { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils.js'; +import { instrumentStream } from './streaming.js'; +import { shouldInstrument, getOperationName, getSpanOperation, extractRequestParameters, isChatCompletionResponse, addChatCompletionAttributes, isResponsesApiResponse, addResponsesApiAttributes, isEmbeddingsResponse, addEmbeddingsAttributes, isConversationResponse, addConversationAttributes, buildMethodPath } from './utils.js'; + +/** + * Extract available tools from request parameters + */ +function extractAvailableTools(params) { + const tools = Array.isArray(params.tools) ? params.tools : []; + const hasWebSearchOptions = params.web_search_options && typeof params.web_search_options === 'object'; + const webSearchOptions = hasWebSearchOptions + ? [{ type: 'web_search_options', ...(params.web_search_options ) }] + : []; + + const availableTools = [...tools, ...webSearchOptions]; + return availableTools.length > 0 ? JSON.stringify(availableTools) : undefined; +} + +/** + * Extract request attributes from method arguments + */ +function extractRequestAttributes(args, methodPath) { + const attributes = { + [GEN_AI_SYSTEM_ATTRIBUTE]: 'openai', + [GEN_AI_OPERATION_NAME_ATTRIBUTE]: getOperationName(methodPath), + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.openai', + }; + + if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) { + const params = args[0] ; + + const availableTools = extractAvailableTools(params); + if (availableTools) { + attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = availableTools; + } + + Object.assign(attributes, extractRequestParameters(params)); + } else { + attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown'; + } + + return attributes; +} + +/** + * Add response attributes to spans + * This supports Chat Completion, Responses API, Embeddings, and Conversations API responses + */ +function addResponseAttributes(span, result, recordOutputs) { + if (!result || typeof result !== 'object') return; + + const response = result ; + + if (isChatCompletionResponse(response)) { + addChatCompletionAttributes(span, response, recordOutputs); + if (recordOutputs && response.choices?.length) { + const responseTexts = response.choices.map(choice => choice.message?.content || ''); + span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(responseTexts) }); + } + } else if (isResponsesApiResponse(response)) { + addResponsesApiAttributes(span, response, recordOutputs); + if (recordOutputs && response.output_text) { + span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.output_text }); + } + } else if (isEmbeddingsResponse(response)) { + addEmbeddingsAttributes(span, response); + } else if (isConversationResponse(response)) { + addConversationAttributes(span, response); + } +} + +// Extract and record AI request inputs, if present. This is intentionally separate from response attributes. +function addRequestAttributes(span, params, operationName) { + // Store embeddings input on a separate attribute and do not truncate it + if (operationName === OPENAI_OPERATIONS.EMBEDDINGS && 'input' in params) { + const input = params.input; + + // No input provided + if (input == null) { + return; + } + + // Empty input string + if (typeof input === 'string' && input.length === 0) { + return; + } + + // Empty array input + if (Array.isArray(input) && input.length === 0) { + return; + } + + // Store strings as-is, arrays/objects as JSON + span.setAttribute(GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, typeof input === 'string' ? input : JSON.stringify(input)); + return; + } + + const src = 'input' in params ? params.input : 'messages' in params ? params.messages : undefined; + + if (!src) { + return; + } + + if (Array.isArray(src) && src.length === 0) { + return; + } + + const { systemInstructions, filteredMessages } = extractSystemInstructions(src); + + if (systemInstructions) { + span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const truncatedInput = getTruncatedJsonString(filteredMessages); + span.setAttribute(GEN_AI_INPUT_MESSAGES_ATTRIBUTE, truncatedInput); + + if (Array.isArray(filteredMessages)) { + span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredMessages.length); + } else { + span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, 1); + } +} + +/** + * Instrument a method with Sentry spans + * Following Sentry AI Agents Manual Instrumentation conventions + * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation + */ +function instrumentMethod( + originalMethod, + methodPath, + context, + options, +) { + return async function instrumentedMethod(...args) { + const requestAttributes = extractRequestAttributes(args, methodPath); + const model = (requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ) || 'unknown'; + const operationName = getOperationName(methodPath); + + const params = args[0] ; + const isStreamRequested = params && typeof params === 'object' && params.stream === true; + + if (isStreamRequested) { + // For streaming responses, use manual span management to properly handle the async generator lifecycle + return startSpanManual( + { + name: `${operationName} ${model} stream-response`, + op: getSpanOperation(methodPath), + attributes: requestAttributes , + }, + async (span) => { + try { + if (options.recordInputs && params) { + addRequestAttributes(span, params, operationName); + } + + const result = await originalMethod.apply(context, args); + + return instrumentStream( + result , + span, + options.recordOutputs ?? false, + ) ; + } catch (error) { + // For streaming requests that fail before stream creation, we still want to record + // them as streaming requests but end the span gracefully + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' }); + captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.openai.stream', + data: { + function: methodPath, + }, + }, + }); + span.end(); + throw error; + } + }, + ); + } else { + // Non-streaming responses + return startSpan( + { + name: `${operationName} ${model}`, + op: getSpanOperation(methodPath), + attributes: requestAttributes , + }, + async (span) => { + try { + if (options.recordInputs && params) { + addRequestAttributes(span, params, operationName); + } + + const result = await originalMethod.apply(context, args); + addResponseAttributes(span, result, options.recordOutputs); + return result; + } catch (error) { + captureException(error, { + mechanism: { + handled: false, + type: 'auto.ai.openai', + data: { + function: methodPath, + }, + }, + }); + throw error; + } + }, + ); + } + }; +} + +/** + * Create a deep proxy for OpenAI client instrumentation + */ +function createDeepProxy(target, currentPath = '', options) { + return new Proxy(target, { + get(obj, prop) { + const value = (obj )[prop]; + const methodPath = buildMethodPath(currentPath, String(prop)); + + if (typeof value === 'function' && shouldInstrument(methodPath)) { + return instrumentMethod(value , methodPath, obj, options); + } + + if (typeof value === 'function') { + // Bind non-instrumented functions to preserve the original `this` context, + // which is required for accessing private class fields (e.g. #baseURL) in OpenAI SDK v5. + return value.bind(obj); + } + + if (value && typeof value === 'object') { + return createDeepProxy(value, methodPath, options); + } + + return value; + }, + }) ; +} + +/** + * Instrument an OpenAI client with Sentry tracing + * Can be used across Node.js, Cloudflare Workers, and Vercel Edge + */ +function instrumentOpenAiClient(client, options) { + const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii); + + const _options = { + recordInputs: sendDefaultPii, + recordOutputs: sendDefaultPii, + ...options, + }; + + return createDeepProxy(client, '', _options); +} + +export { instrumentOpenAiClient }; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/index.js.map new file mode 100644 index 0000000..0f89f1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/openai/index.ts"],"sourcesContent":["import { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n OPENAI_OPERATIONS,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport { instrumentStream } from './streaming';\nimport type {\n ChatCompletionChunk,\n InstrumentedMethod,\n OpenAiOptions,\n OpenAiResponse,\n OpenAIStream,\n ResponseStreamingEvent,\n} from './types';\nimport {\n addChatCompletionAttributes,\n addConversationAttributes,\n addEmbeddingsAttributes,\n addResponsesApiAttributes,\n buildMethodPath,\n extractRequestParameters,\n getOperationName,\n getSpanOperation,\n isChatCompletionResponse,\n isConversationResponse,\n isEmbeddingsResponse,\n isResponsesApiResponse,\n shouldInstrument,\n} from './utils';\n\n/**\n * Extract available tools from request parameters\n */\nfunction extractAvailableTools(params: Record): string | undefined {\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 as Record) }]\n : [];\n\n const availableTools = [...tools, ...webSearchOptions];\n return availableTools.length > 0 ? JSON.stringify(availableTools) : undefined;\n}\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], methodPath: string): Record {\n const attributes: Record = {\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] as Record;\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: Span, result: unknown, recordOutputs?: boolean): void {\n if (!result || typeof result !== 'object') return;\n\n const response = result as OpenAiResponse;\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: Span, params: Record, operationName: string): void {\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: (...args: T) => Promise,\n methodPath: InstrumentedMethod,\n context: unknown,\n options: OpenAiOptions,\n): (...args: T) => Promise {\n return async function instrumentedMethod(...args: T): Promise {\n const requestAttributes = extractRequestAttributes(args, methodPath);\n const model = (requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] as string) || 'unknown';\n const operationName = getOperationName(methodPath);\n\n const params = args[0] as Record | undefined;\n const isStreamRequested = params && typeof params === 'object' && params.stream === true;\n\n if (isStreamRequested) {\n // For streaming responses, use manual span management to properly handle the async generator lifecycle\n return startSpanManual(\n {\n name: `${operationName} ${model} stream-response`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes as Record,\n },\n async (span: Span) => {\n try {\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n const result = await originalMethod.apply(context, args);\n\n return instrumentStream(\n result as OpenAIStream,\n span,\n options.recordOutputs ?? false,\n ) as unknown as R;\n } catch (error) {\n // For streaming requests that fail before stream creation, we still want to record\n // them as streaming requests but end the span gracefully\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: {\n function: methodPath,\n },\n },\n });\n span.end();\n throw error;\n }\n },\n );\n } else {\n // Non-streaming responses\n return startSpan(\n {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes as Record,\n },\n async (span: Span) => {\n try {\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n const result = await originalMethod.apply(context, args);\n addResponseAttributes(span, result, options.recordOutputs);\n return result;\n } catch (error) {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai',\n data: {\n function: methodPath,\n },\n },\n });\n throw error;\n }\n },\n );\n }\n };\n}\n\n/**\n * Create a deep proxy for OpenAI client instrumentation\n */\nfunction createDeepProxy(target: T, currentPath = '', options: OpenAiOptions): T {\n return new Proxy(target, {\n get(obj: object, prop: string): unknown {\n const value = (obj as Record)[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n if (typeof value === 'function' && shouldInstrument(methodPath)) {\n return instrumentMethod(value as (...args: unknown[]) => Promise, 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 }) as T;\n}\n\n/**\n * Instrument an OpenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n */\nexport function instrumentOpenAiClient(client: T, options?: OpenAiOptions): T {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n\n const _options = {\n recordInputs: sendDefaultPii,\n recordOutputs: sendDefaultPii,\n ...options,\n };\n\n return createDeepProxy(client, '', _options);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/streaming.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/streaming.js new file mode 100644 index 0000000..c485bec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/streaming.js @@ -0,0 +1,234 @@ +import { captureException } from '../../exports.js'; +import { SPAN_STATUS_ERROR } from '../spanstatus.js'; +import { 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'; +import { RESPONSE_EVENT_TYPES } from './constants.js'; +import { isChatCompletionChunk, isResponsesApiStreamEvent, setCommonResponseAttributes, setTokenUsageAttributes } from './utils.js'; + +/** + * State object used to accumulate information from a stream of OpenAI events/chunks. + */ + +/** + * Processes tool calls from a chat completion chunk delta. + * Follows the pattern: accumulate by index, then convert to array at the end. + * + * @param toolCalls - Array of tool calls from the delta. + * @param state - The current streaming state to update. + * + * @see https://platform.openai.com/docs/guides/function-calling#streaming + */ +function processChatCompletionToolCalls(toolCalls, state) { + for (const toolCall of toolCalls) { + const index = toolCall.index; + if (index === undefined || !toolCall.function) continue; + + // Initialize tool call if this is the first chunk for this index + if (!(index in state.chatCompletionToolCalls)) { + state.chatCompletionToolCalls[index] = { + ...toolCall, + function: { + name: toolCall.function.name, + arguments: toolCall.function.arguments || '', + }, + }; + } else { + // Accumulate function arguments from subsequent chunks + const existingToolCall = state.chatCompletionToolCalls[index]; + if (toolCall.function.arguments && existingToolCall?.function) { + existingToolCall.function.arguments += toolCall.function.arguments; + } + } + } +} + +/** + * Processes a single OpenAI ChatCompletionChunk event, updating the streaming state. + * + * @param chunk - The ChatCompletionChunk event to process. + * @param state - The current streaming state to update. + * @param recordOutputs - Whether to record output text fragments. + */ +function processChatCompletionChunk(chunk, state, recordOutputs) { + state.responseId = chunk.id ?? state.responseId; + state.responseModel = chunk.model ?? state.responseModel; + state.responseTimestamp = chunk.created ?? state.responseTimestamp; + + if (chunk.usage) { + // For stream responses, the input tokens remain constant across all events in the stream. + // Output tokens, however, are only finalized in the last event. + // Since we can't guarantee that the last event will include usage data or even be a typed event, + // we update the output token values on every event that includes them. + // This ensures that output token usage is always set, even if the final event lacks it. + state.promptTokens = chunk.usage.prompt_tokens; + state.completionTokens = chunk.usage.completion_tokens; + state.totalTokens = chunk.usage.total_tokens; + } + + for (const choice of chunk.choices ?? []) { + if (recordOutputs) { + if (choice.delta?.content) { + state.responseTexts.push(choice.delta.content); + } + + // Handle tool calls from delta + if (choice.delta?.tool_calls) { + processChatCompletionToolCalls(choice.delta.tool_calls, state); + } + } + if (choice.finish_reason) { + state.finishReasons.push(choice.finish_reason); + } + } +} + +/** + * Processes a single OpenAI Responses API streaming event, updating the streaming state and span. + * + * @param streamEvent - The event to process (may be an error or unknown object). + * @param state - The current streaming state to update. + * @param recordOutputs - Whether to record output text fragments. + * @param span - The span to update with error status if needed. + */ +function processResponsesApiEvent( + streamEvent, + state, + recordOutputs, + span, +) { + if (!(streamEvent && typeof streamEvent === 'object')) { + state.eventTypes.push('unknown:non-object'); + return; + } + if (streamEvent instanceof Error) { + span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' }); + captureException(streamEvent, { + mechanism: { + handled: false, + type: 'auto.ai.openai.stream-response', + }, + }); + return; + } + + if (!('type' in streamEvent)) return; + const event = streamEvent ; + + if (!RESPONSE_EVENT_TYPES.includes(event.type)) { + state.eventTypes.push(event.type); + return; + } + + // Handle output text delta + if (recordOutputs) { + // Handle tool call events for Responses API + if (event.type === 'response.output_item.done' && 'item' in event) { + state.responsesApiToolCalls.push(event.item); + } + + if (event.type === 'response.output_text.delta' && 'delta' in event && event.delta) { + state.responseTexts.push(event.delta); + return; + } + } + + if ('response' in event) { + const { response } = event ; + state.responseId = response.id ?? state.responseId; + state.responseModel = response.model ?? state.responseModel; + state.responseTimestamp = response.created_at ?? state.responseTimestamp; + + if (response.usage) { + // For stream responses, the input tokens remain constant across all events in the stream. + // Output tokens, however, are only finalized in the last event. + // Since we can't guarantee that the last event will include usage data or even be a typed event, + // we update the output token values on every event that includes them. + // This ensures that output token usage is always set, even if the final event lacks it. + state.promptTokens = response.usage.input_tokens; + state.completionTokens = response.usage.output_tokens; + state.totalTokens = response.usage.total_tokens; + } + + if (response.status) { + state.finishReasons.push(response.status); + } + + if (recordOutputs && response.output_text) { + state.responseTexts.push(response.output_text); + } + } +} + +/** + * Instruments a stream of OpenAI events, updating the provided span with relevant attributes and + * optionally recording output text. This function yields each event from the input stream as it is processed. + * + * @template T - The type of events in the stream. + * @param stream - The async iterable stream of events to instrument. + * @param span - The span to add attributes to and to finish at the end of the stream. + * @param recordOutputs - Whether to record output text fragments in the span. + * @returns An async generator yielding each event from the input stream. + */ +async function* instrumentStream( + stream, + span, + recordOutputs, +) { + const state = { + eventTypes: [], + responseTexts: [], + finishReasons: [], + responseId: '', + responseModel: '', + responseTimestamp: 0, + promptTokens: undefined, + completionTokens: undefined, + totalTokens: undefined, + chatCompletionToolCalls: {}, + responsesApiToolCalls: [], + }; + + try { + for await (const event of stream) { + if (isChatCompletionChunk(event)) { + processChatCompletionChunk(event , state, recordOutputs); + } else if (isResponsesApiStreamEvent(event)) { + processResponsesApiEvent(event , state, recordOutputs, span); + } + yield event; + } + } finally { + setCommonResponseAttributes(span, state.responseId, state.responseModel, state.responseTimestamp); + setTokenUsageAttributes(span, state.promptTokens, state.completionTokens, state.totalTokens); + + span.setAttributes({ + [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true, + }); + + if (state.finishReasons.length) { + span.setAttributes({ + [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons), + }); + } + + if (recordOutputs && state.responseTexts.length) { + span.setAttributes({ + [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''), + }); + } + + // Set tool calls attribute if any were accumulated + const chatCompletionToolCallsArray = Object.values(state.chatCompletionToolCalls); + const allToolCalls = [...chatCompletionToolCallsArray, ...state.responsesApiToolCalls]; + + if (allToolCalls.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(allToolCalls), + }); + } + + span.end(); + } +} + +export { instrumentStream }; +//# sourceMappingURL=streaming.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/streaming.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/streaming.js.map new file mode 100644 index 0000000..3f4001b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/streaming.js.map @@ -0,0 +1 @@ +{"version":3,"file":"streaming.js","sources":["../../../../src/tracing/openai/streaming.ts"],"sourcesContent":["import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { RESPONSE_EVENT_TYPES } from './constants';\nimport type {\n ChatCompletionChunk,\n ChatCompletionToolCall,\n OpenAIResponseObject,\n ResponseFunctionCall,\n ResponseStreamingEvent,\n} from './types';\nimport {\n isChatCompletionChunk,\n isResponsesApiStreamEvent,\n setCommonResponseAttributes,\n setTokenUsageAttributes,\n} from './utils';\n\n/**\n * State object used to accumulate information from a stream of OpenAI events/chunks.\n */\ninterface StreamingState {\n /** Types of events encountered in the stream. */\n eventTypes: string[];\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId: string;\n /** The model name. */\n responseModel: string;\n /** The timestamp of the response. */\n responseTimestamp: number;\n /** Number of prompt/input tokens used. */\n promptTokens: number | undefined;\n /** Number of completion/output tokens used. */\n completionTokens: number | undefined;\n /** Total number of tokens used (prompt + completion). */\n totalTokens: number | undefined;\n /**\n * Accumulated tool calls from Chat Completion streaming, indexed by tool call index.\n * @see https://platform.openai.com/docs/guides/function-calling?api-mode=chat#streaming\n */\n chatCompletionToolCalls: Record;\n /**\n * Accumulated function calls from Responses API streaming.\n * @see https://platform.openai.com/docs/guides/function-calling?api-mode=responses#streaming\n */\n responsesApiToolCalls: Array;\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: ChatCompletionToolCall[], state: StreamingState): void {\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: ChatCompletionChunk, state: StreamingState, recordOutputs: boolean): void {\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: ResponseStreamingEvent | unknown | Error,\n state: StreamingState,\n recordOutputs: boolean,\n span: Span,\n): void {\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 as ResponseStreamingEvent;\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 as { response: OpenAIResponseObject };\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 */\nexport async function* instrumentStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\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 as ChatCompletionChunk, state, recordOutputs);\n } else if (isResponsesApiStreamEvent(event)) {\n processResponsesApiEvent(event as ResponseStreamingEvent, 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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/utils.js new file mode 100644 index 0000000..3447933 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/utils.js @@ -0,0 +1,335 @@ +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'; +import { INSTRUMENTED_METHODS } from './constants.js'; + +/** + * Maps OpenAI method paths to OpenTelemetry semantic convention operation names + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +function getOperationName(methodPath) { + if (methodPath.includes('chat.completions')) { + return OPENAI_OPERATIONS.CHAT; + } + if (methodPath.includes('responses')) { + return OPENAI_OPERATIONS.CHAT; + } + if (methodPath.includes('embeddings')) { + return OPENAI_OPERATIONS.EMBEDDINGS; + } + if (methodPath.includes('conversations')) { + return OPENAI_OPERATIONS.CHAT; + } + return methodPath.split('.').pop() || 'unknown'; +} + +/** + * Get the span operation for OpenAI methods + * Following Sentry's convention: "gen_ai.{operation_name}" + */ +function getSpanOperation(methodPath) { + return `gen_ai.${getOperationName(methodPath)}`; +} + +/** + * Check if a method path should be instrumented + */ +function shouldInstrument(methodPath) { + return INSTRUMENTED_METHODS.includes(methodPath ); +} + +/** + * Build method path from current traversal + */ +function buildMethodPath(currentPath, prop) { + return currentPath ? `${currentPath}.${prop}` : prop; +} + +/** + * Check if response is a Chat Completion object + */ +function isChatCompletionResponse(response) { + return ( + response !== null && + typeof response === 'object' && + 'object' in response && + (response ).object === 'chat.completion' + ); +} + +/** + * Check if response is a Responses API object + */ +function isResponsesApiResponse(response) { + return ( + response !== null && + typeof response === 'object' && + 'object' in response && + (response ).object === 'response' + ); +} + +/** + * Check if response is an Embeddings API object + */ +function isEmbeddingsResponse(response) { + if (response === null || typeof response !== 'object' || !('object' in response)) { + return false; + } + const responseObject = response ; + return ( + responseObject.object === 'list' && + typeof responseObject.model === 'string' && + responseObject.model.toLowerCase().includes('embedding') + ); +} + +/** + * Check if response is a Conversations API object + * @see https://platform.openai.com/docs/api-reference/conversations + */ +function isConversationResponse(response) { + return ( + response !== null && + typeof response === 'object' && + 'object' in response && + (response ).object === 'conversation' + ); +} + +/** + * Check if streaming event is from the Responses API + */ +function isResponsesApiStreamEvent(event) { + return ( + event !== null && + typeof event === 'object' && + 'type' in event && + typeof (event ).type === 'string' && + ((event ).type ).startsWith('response.') + ); +} + +/** + * Check if streaming event is a chat completion chunk + */ +function isChatCompletionChunk(event) { + return ( + event !== null && + typeof event === 'object' && + 'object' in event && + (event ).object === 'chat.completion.chunk' + ); +} + +/** + * Add attributes for Chat Completion responses + */ +function addChatCompletionAttributes( + span, + response, + recordOutputs, +) { + setCommonResponseAttributes(span, response.id, response.model, response.created); + if (response.usage) { + setTokenUsageAttributes( + span, + response.usage.prompt_tokens, + response.usage.completion_tokens, + response.usage.total_tokens, + ); + } + if (Array.isArray(response.choices)) { + const finishReasons = response.choices + .map(choice => choice.finish_reason) + .filter((reason) => reason !== null); + if (finishReasons.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(finishReasons), + }); + } + + // Extract tool calls from all choices (only if recordOutputs is true) + if (recordOutputs) { + const toolCalls = response.choices + .map(choice => choice.message?.tool_calls) + .filter(calls => Array.isArray(calls) && calls.length > 0) + .flat(); + + if (toolCalls.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls), + }); + } + } + } +} + +/** + * Add attributes for Responses API responses + */ +function addResponsesApiAttributes(span, response, recordOutputs) { + setCommonResponseAttributes(span, response.id, response.model, response.created_at); + if (response.status) { + span.setAttributes({ + [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify([response.status]), + }); + } + if (response.usage) { + setTokenUsageAttributes( + span, + response.usage.input_tokens, + response.usage.output_tokens, + response.usage.total_tokens, + ); + } + + // Extract function calls from output (only if recordOutputs is true) + if (recordOutputs) { + const responseWithOutput = response ; + if (Array.isArray(responseWithOutput.output) && responseWithOutput.output.length > 0) { + // Filter for function_call type objects in the output array + const functionCalls = responseWithOutput.output.filter( + (item) => + typeof item === 'object' && item !== null && (item ).type === 'function_call', + ); + + if (functionCalls.length > 0) { + span.setAttributes({ + [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls), + }); + } + } + } +} + +/** + * Add attributes for Embeddings API responses + */ +function addEmbeddingsAttributes(span, response) { + span.setAttributes({ + [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: response.model, + [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model, + }); + + if (response.usage) { + setTokenUsageAttributes(span, response.usage.prompt_tokens, undefined, response.usage.total_tokens); + } +} + +/** + * Add attributes for Conversations API responses + * @see https://platform.openai.com/docs/api-reference/conversations + */ +function addConversationAttributes(span, response) { + const { id, created_at } = response; + + span.setAttributes({ + [OPENAI_RESPONSE_ID_ATTRIBUTE]: id, + [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id, + // The conversation id is used to link messages across API calls + [GEN_AI_CONVERSATION_ID_ATTRIBUTE]: id, + }); + + if (created_at) { + span.setAttributes({ + [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(created_at * 1000).toISOString(), + }); + } +} + +/** + * Set token usage attributes + * @param span - The span to add attributes to + * @param promptTokens - The number of prompt tokens + * @param completionTokens - The number of completion tokens + * @param totalTokens - The number of total tokens + */ +function setTokenUsageAttributes( + span, + promptTokens, + completionTokens, + totalTokens, +) { + if (promptTokens !== undefined) { + span.setAttributes({ + [OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE]: promptTokens, + [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens, + }); + } + if (completionTokens !== undefined) { + span.setAttributes({ + [OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE]: completionTokens, + [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens, + }); + } + if (totalTokens !== undefined) { + span.setAttributes({ + [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens, + }); + } +} + +/** + * Set common response attributes + * @param span - The span to add attributes to + * @param id - The response id + * @param model - The response model + * @param timestamp - The response timestamp + */ +function setCommonResponseAttributes(span, id, model, timestamp) { + span.setAttributes({ + [OPENAI_RESPONSE_ID_ATTRIBUTE]: id, + [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id, + }); + span.setAttributes({ + [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: model, + [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: model, + }); + span.setAttributes({ + [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(timestamp * 1000).toISOString(), + }); +} + +/** + * Extract conversation ID from request parameters + * Supports both Conversations API and previous_response_id chaining + * @see https://platform.openai.com/docs/guides/conversation-state + */ +function extractConversationId(params) { + // Conversations API: conversation parameter (e.g., "conv_...") + if ('conversation' in params && typeof params.conversation === 'string') { + return params.conversation; + } + // Responses chaining: previous_response_id links to parent response + if ('previous_response_id' in params && typeof params.previous_response_id === 'string') { + return params.previous_response_id; + } + return undefined; +} + +/** + * Extract request parameters including model settings and conversation context + */ +function extractRequestParameters(params) { + const attributes = { + [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: params.model ?? 'unknown', + }; + + if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature; + if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p; + if ('frequency_penalty' in params) attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty; + if ('presence_penalty' in params) attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = params.presence_penalty; + if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream; + if ('encoding_format' in params) attributes[GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE] = params.encoding_format; + if ('dimensions' in params) attributes[GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE] = params.dimensions; + + // Capture conversation ID for linking messages across API calls + const conversationId = extractConversationId(params); + if (conversationId) { + attributes[GEN_AI_CONVERSATION_ID_ATTRIBUTE] = conversationId; + } + + return attributes; +} + +export { addChatCompletionAttributes, addConversationAttributes, addEmbeddingsAttributes, addResponsesApiAttributes, buildMethodPath, extractRequestParameters, getOperationName, getSpanOperation, isChatCompletionChunk, isChatCompletionResponse, isConversationResponse, isEmbeddingsResponse, isResponsesApiResponse, isResponsesApiStreamEvent, setCommonResponseAttributes, setTokenUsageAttributes, shouldInstrument }; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/utils.js.map new file mode 100644 index 0000000..bd1d9d4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/openai/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/openai/utils.ts"],"sourcesContent":["import type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_CONVERSATION_ID_ATTRIBUTE,\n GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE,\n GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n OPENAI_OPERATIONS,\n OPENAI_RESPONSE_ID_ATTRIBUTE,\n OPENAI_RESPONSE_MODEL_ATTRIBUTE,\n OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { INSTRUMENTED_METHODS } from './constants';\nimport type {\n ChatCompletionChunk,\n InstrumentedMethod,\n OpenAiChatCompletionObject,\n OpenAIConversationObject,\n OpenAICreateEmbeddingsObject,\n OpenAIResponseObject,\n ResponseStreamingEvent,\n} from './types';\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 */\nexport function getOperationName(methodPath: string): string {\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 */\nexport function getSpanOperation(methodPath: string): string {\n return `gen_ai.${getOperationName(methodPath)}`;\n}\n\n/**\n * Check if a method path should be instrumented\n */\nexport function shouldInstrument(methodPath: string): methodPath is InstrumentedMethod {\n return INSTRUMENTED_METHODS.includes(methodPath as InstrumentedMethod);\n}\n\n/**\n * Build method path from current traversal\n */\nexport function buildMethodPath(currentPath: string, prop: string): string {\n return currentPath ? `${currentPath}.${prop}` : prop;\n}\n\n/**\n * Check if response is a Chat Completion object\n */\nexport function isChatCompletionResponse(response: unknown): response is OpenAiChatCompletionObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'chat.completion'\n );\n}\n\n/**\n * Check if response is a Responses API object\n */\nexport function isResponsesApiResponse(response: unknown): response is OpenAIResponseObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'response'\n );\n}\n\n/**\n * Check if response is an Embeddings API object\n */\nexport function isEmbeddingsResponse(response: unknown): response is OpenAICreateEmbeddingsObject {\n if (response === null || typeof response !== 'object' || !('object' in response)) {\n return false;\n }\n const responseObject = response as Record;\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 */\nexport function isConversationResponse(response: unknown): response is OpenAIConversationObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'conversation'\n );\n}\n\n/**\n * Check if streaming event is from the Responses API\n */\nexport function isResponsesApiStreamEvent(event: unknown): event is ResponseStreamingEvent {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'type' in event &&\n typeof (event as Record).type === 'string' &&\n ((event as Record).type as string).startsWith('response.')\n );\n}\n\n/**\n * Check if streaming event is a chat completion chunk\n */\nexport function isChatCompletionChunk(event: unknown): event is ChatCompletionChunk {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'object' in event &&\n (event as Record).object === 'chat.completion.chunk'\n );\n}\n\n/**\n * Add attributes for Chat Completion responses\n */\nexport function addChatCompletionAttributes(\n span: Span,\n response: OpenAiChatCompletionObject,\n recordOutputs?: boolean,\n): void {\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 is string => 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 */\nexport function addResponsesApiAttributes(span: Span, response: OpenAIResponseObject, recordOutputs?: boolean): void {\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 as OpenAIResponseObject & { output?: unknown[] };\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): unknown =>\n typeof item === 'object' && item !== null && (item as Record).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 */\nexport function addEmbeddingsAttributes(span: Span, response: OpenAICreateEmbeddingsObject): void {\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 */\nexport function addConversationAttributes(span: Span, response: OpenAIConversationObject): void {\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 */\nexport function setTokenUsageAttributes(\n span: Span,\n promptTokens?: number,\n completionTokens?: number,\n totalTokens?: number,\n): void {\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 */\nexport function setCommonResponseAttributes(span: Span, id: string, model: string, timestamp: number): void {\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: Record): string | undefined {\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 */\nexport function extractRequestParameters(params: Record): Record {\n const attributes: Record = {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sampling.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sampling.js new file mode 100644 index 0000000..c7485a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sampling.js @@ -0,0 +1,99 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug } from '../utils/debug-logger.js'; +import { hasSpansEnabled } from '../utils/hasSpansEnabled.js'; +import { parseSampleRate } from '../utils/parseSampleRate.js'; + +/** + * Makes a sampling decision for the given options. + * + * Called every time a root span is created. Only root spans which emerge with a `sampled` value of `true` will be + * sent to Sentry. + */ +function sampleSpan( + options, + samplingContext, + sampleRand, +) { + // nothing to do if span recording is not enabled + if (!hasSpansEnabled(options)) { + return [false]; + } + + let localSampleRateWasApplied = undefined; + + // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should + // work; prefer the hook if so + let sampleRate; + if (typeof options.tracesSampler === 'function') { + sampleRate = options.tracesSampler({ + ...samplingContext, + inheritOrSampleWith: fallbackSampleRate => { + // If we have an incoming parent sample rate, we'll just use that one. + // The sampling decision will be inherited because of the sample_rand that was generated when the trace reached the incoming boundaries of the SDK. + if (typeof samplingContext.parentSampleRate === 'number') { + return samplingContext.parentSampleRate; + } + + // Fallback if parent sample rate is not on the incoming trace (e.g. if there is no baggage) + // 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. + if (typeof samplingContext.parentSampled === 'boolean') { + return Number(samplingContext.parentSampled); + } + + return fallbackSampleRate; + }, + }); + localSampleRateWasApplied = true; + } else if (samplingContext.parentSampled !== undefined) { + sampleRate = samplingContext.parentSampled; + } else if (typeof options.tracesSampleRate !== 'undefined') { + sampleRate = options.tracesSampleRate; + localSampleRateWasApplied = true; + } + + // Since this is coming from the user (or from a function provided by the user), who knows what we might get. + // (The only valid values are booleans or numbers between 0 and 1.) + const parsedSampleRate = parseSampleRate(sampleRate); + + if (parsedSampleRate === undefined) { + DEBUG_BUILD && + debug.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( + sampleRate, + )} of type ${JSON.stringify(typeof sampleRate)}.`, + ); + return [false]; + } + + // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped + if (!parsedSampleRate) { + DEBUG_BUILD && + debug.log( + `[Tracing] Discarding transaction because ${ + typeof options.tracesSampler === 'function' + ? 'tracesSampler returned 0 or false' + : 'a negative sampling decision was inherited or tracesSampleRate is set to 0' + }`, + ); + return [false, parsedSampleRate, localSampleRateWasApplied]; + } + + // We always compare the sample rand for the current execution context against the chosen sample rate. + // Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value + const shouldSample = sampleRand < parsedSampleRate; + + // if we're not going to keep it, we're done + if (!shouldSample) { + DEBUG_BUILD && + debug.log( + `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number( + sampleRate, + )})`, + ); + } + + return [shouldSample, parsedSampleRate, localSampleRateWasApplied]; +} + +export { sampleSpan }; +//# sourceMappingURL=sampling.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sampling.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sampling.js.map new file mode 100644 index 0000000..54198ae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sampling.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sampling.js","sources":["../../../src/tracing/sampling.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { CoreOptions } from '../types-hoist/options';\nimport type { SamplingContext } from '../types-hoist/samplingcontext';\nimport { debug } from '../utils/debug-logger';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\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 */\nexport function sampleSpan(\n options: Pick,\n samplingContext: SamplingContext,\n sampleRand: number,\n): [sampled: boolean, sampleRate?: number, localSampleRateWasApplied?: boolean] {\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"],"names":[],"mappings":";;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU;AAC1B,EAAE,OAAO;AACT,EAAE,eAAe;AACjB,EAAE,UAAU;AACZ,EAAgF;AAChF;AACA,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;AACjC,IAAI,OAAO,CAAC,KAAK,CAAC;AAClB,EAAE;;AAEF,EAAE,IAAI,yBAAA,GAA4B,SAAS;;AAE3C;AACA;AACA,EAAE,IAAI,UAAU;AAChB,EAAE,IAAI,OAAO,OAAO,CAAC,aAAA,KAAkB,UAAU,EAAE;AACnD,IAAI,UAAA,GAAa,OAAO,CAAC,aAAa,CAAC;AACvC,MAAM,GAAG,eAAe;AACxB,MAAM,mBAAmB,EAAE,kBAAA,IAAsB;AACjD;AACA;AACA,QAAQ,IAAI,OAAO,eAAe,CAAC,gBAAA,KAAqB,QAAQ,EAAE;AAClE,UAAU,OAAO,eAAe,CAAC,gBAAgB;AACjD,QAAQ;;AAER;AACA;AACA,QAAQ,IAAI,OAAO,eAAe,CAAC,aAAA,KAAkB,SAAS,EAAE;AAChE,UAAU,OAAO,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC;AACtD,QAAQ;;AAER,QAAQ,OAAO,kBAAkB;AACjC,MAAM,CAAC;AACP,KAAK,CAAC;AACN,IAAI,yBAAA,GAA4B,IAAI;AACpC,EAAE,CAAA,MAAO,IAAI,eAAe,CAAC,aAAA,KAAkB,SAAS,EAAE;AAC1D,IAAI,UAAA,GAAa,eAAe,CAAC,aAAa;AAC9C,EAAE,CAAA,MAAO,IAAI,OAAO,OAAO,CAAC,gBAAA,KAAqB,WAAW,EAAE;AAC9D,IAAI,UAAA,GAAa,OAAO,CAAC,gBAAgB;AACzC,IAAI,yBAAA,GAA4B,IAAI;AACpC,EAAE;;AAEF;AACA;AACA,EAAE,MAAM,gBAAA,GAAmB,eAAe,CAAC,UAAU,CAAC;;AAEtD,EAAE,IAAI,gBAAA,KAAqB,SAAS,EAAE;AACtC,IAAI,WAAA;AACJ,MAAM,KAAK,CAAC,IAAI;AAChB,QAAQ,CAAC,8HAA8H,EAAE,IAAI,CAAC,SAAS;AACvJ,UAAU,UAAU;AACpB,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACzD,OAAO;AACP,IAAI,OAAO,CAAC,KAAK,CAAC;AAClB,EAAE;;AAEF;AACA,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzB,IAAI,WAAA;AACJ,MAAM,KAAK,CAAC,GAAG;AACf,QAAQ,CAAC,yCAAyC;AAClD,UAAU,OAAO,OAAO,CAAC,aAAA,KAAkB;AAC3C,cAAc;AACd,cAAc;AACd,SAAS,CAAA;AACA,OAAA;AACA,IAAA,OAAA,CAAA,KAAA,EAAA,gBAAA,EAAA,yBAAA,CAAA;AACA,EAAA;;AAEA;AACA;AACA,EAAA,MAAA,YAAA,GAAA,UAAA,GAAA,gBAAA;;AAEA;AACA,EAAA,IAAA,CAAA,YAAA,EAAA;AACA,IAAA,WAAA;AACA,MAAA,KAAA,CAAA,GAAA;AACA,QAAA,CAAA,iGAAA,EAAA,MAAA;AACA,UAAA,UAAA;AACA,SAAA,CAAA,CAAA,CAAA;AACA,OAAA;AACA,EAAA;;AAEA,EAAA,OAAA,CAAA,YAAA,EAAA,gBAAA,EAAA,yBAAA,CAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js new file mode 100644 index 0000000..ea69efa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js @@ -0,0 +1,83 @@ +import { generateTraceId, generateSpanId } from '../utils/propagationContext.js'; +import { TRACE_FLAG_NONE } from '../utils/spanUtils.js'; + +/** + * A Sentry Span that is non-recording, meaning it will not be sent to Sentry. + */ +class SentryNonRecordingSpan { + + constructor(spanContext = {}) { + this._traceId = spanContext.traceId || generateTraceId(); + this._spanId = spanContext.spanId || generateSpanId(); + } + + /** @inheritdoc */ + spanContext() { + return { + spanId: this._spanId, + traceId: this._traceId, + traceFlags: TRACE_FLAG_NONE, + }; + } + + /** @inheritdoc */ + end(_timestamp) {} + + /** @inheritdoc */ + setAttribute(_key, _value) { + return this; + } + + /** @inheritdoc */ + setAttributes(_values) { + return this; + } + + /** @inheritdoc */ + setStatus(_status) { + return this; + } + + /** @inheritdoc */ + updateName(_name) { + return this; + } + + /** @inheritdoc */ + isRecording() { + return false; + } + + /** @inheritdoc */ + addEvent( + _name, + _attributesOrStartTime, + _startTime, + ) { + return this; + } + + /** @inheritDoc */ + addLink(_link) { + return this; + } + + /** @inheritDoc */ + addLinks(_links) { + return this; + } + + /** + * This should generally not be used, + * but we need it for being compliant with the OTEL Span interface. + * + * @hidden + * @internal + */ + recordException(_exception, _time) { + // noop + } +} + +export { SentryNonRecordingSpan }; +//# sourceMappingURL=sentryNonRecordingSpan.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js.map new file mode 100644 index 0000000..60251bc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sentryNonRecordingSpan.js","sources":["../../../src/tracing/sentryNonRecordingSpan.ts"],"sourcesContent":["import type {\n SentrySpanArguments,\n Span,\n SpanAttributes,\n SpanAttributeValue,\n SpanContextData,\n SpanTimeInput,\n} from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport { generateSpanId, generateTraceId } from '../utils/propagationContext';\nimport { TRACE_FLAG_NONE } from '../utils/spanUtils';\n\n/**\n * A Sentry Span that is non-recording, meaning it will not be sent to Sentry.\n */\nexport class SentryNonRecordingSpan implements Span {\n private _traceId: string;\n private _spanId: string;\n\n public constructor(spanContext: SentrySpanArguments = {}) {\n this._traceId = spanContext.traceId || generateTraceId();\n this._spanId = spanContext.spanId || generateSpanId();\n }\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n return {\n spanId: this._spanId,\n traceId: this._traceId,\n traceFlags: TRACE_FLAG_NONE,\n };\n }\n\n /** @inheritdoc */\n public end(_timestamp?: SpanTimeInput): void {}\n\n /** @inheritdoc */\n public setAttribute(_key: string, _value: SpanAttributeValue | undefined): this {\n return this;\n }\n\n /** @inheritdoc */\n public setAttributes(_values: SpanAttributes): this {\n return this;\n }\n\n /** @inheritdoc */\n public setStatus(_status: SpanStatus): this {\n return this;\n }\n\n /** @inheritdoc */\n public updateName(_name: string): this {\n return this;\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return false;\n }\n\n /** @inheritdoc */\n public addEvent(\n _name: string,\n _attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n _startTime?: SpanTimeInput,\n ): this {\n return this;\n }\n\n /** @inheritDoc */\n public addLink(_link: unknown): this {\n return this;\n }\n\n /** @inheritDoc */\n public addLinks(_links: unknown[]): this {\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 public recordException(_exception: unknown, _time?: number | undefined): void {\n // noop\n }\n}\n"],"names":[],"mappings":";;;AAYA;AACA;AACA;AACO,MAAM,wBAAuC;;AAIpD,GAAS,WAAW,CAAC,WAAW,GAAwB,EAAE,EAAE;AAC5D,IAAI,IAAI,CAAC,QAAA,GAAW,WAAW,CAAC,OAAA,IAAW,eAAe,EAAE;AAC5D,IAAI,IAAI,CAAC,OAAA,GAAU,WAAW,CAAC,MAAA,IAAU,cAAc,EAAE;AACzD,EAAE;;AAEF;AACA,GAAS,WAAW,GAAoB;AACxC,IAAI,OAAO;AACX,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ;AAC5B,MAAM,UAAU,EAAE,eAAe;AACjC,KAAK;AACL,EAAE;;AAEF;AACA,GAAS,GAAG,CAAC,UAAU,EAAwB,CAAC;;AAEhD;AACA,GAAS,YAAY,CAAC,IAAI,EAAU,MAAM,EAAwC;AAClF,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,aAAa,CAAC,OAAO,EAAwB;AACtD,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,SAAS,CAAC,OAAO,EAAoB;AAC9C,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,UAAU,CAAC,KAAK,EAAgB;AACzC,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,WAAW,GAAY;AAChC,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF;AACA,GAAS,QAAQ;AACjB,IAAI,KAAK;AACT,IAAI,sBAAsB;AAC1B,IAAI,UAAU;AACd,IAAU;AACV,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,OAAO,CAAC,KAAK,EAAiB;AACvC,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,QAAQ,CAAC,MAAM,EAAmB;AAC3C,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAS,eAAe,CAAC,UAAU,EAAW,KAAK,EAA6B;AAChF;AACA,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentrySpan.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentrySpan.js new file mode 100644 index 0000000..f467d34 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentrySpan.js @@ -0,0 +1,400 @@ +import { getClient, getCurrentScope } from '../currentScopes.js'; +import { DEBUG_BUILD } from '../debug-build.js'; +import { createSpanEnvelope } from '../envelope.js'; +import { 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'; +import { debug } from '../utils/debug-logger.js'; +import { generateTraceId, generateSpanId } from '../utils/propagationContext.js'; +import { TRACE_FLAG_SAMPLED, TRACE_FLAG_NONE, spanTimeInputToSeconds, convertSpanLinksForEnvelope, getRootSpan, getStatusMessage, spanToJSON, getSpanDescendants, spanToTransactionTraceContext } from '../utils/spanUtils.js'; +import { timestampInSeconds } from '../utils/time.js'; +import { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext.js'; +import { logSpanEnd } from './logSpans.js'; +import { timedEventsToMeasurements } from './measurement.js'; +import { getCapturedScopesOnSpan } from './utils.js'; + +const MAX_SPAN_COUNT = 1000; + +/** + * Span contains all data about a span + */ +class SentrySpan { + + /** Epoch timestamp in seconds when the span started. */ + + /** Epoch timestamp in seconds when the span ended. */ + + /** Internal keeper of the status */ + + /** The timed events added to this span. */ + + /** if true, treat span as a standalone span (not part of a transaction) */ + + /** + * You should never call the constructor manually, always use `Sentry.startSpan()` + * or other span methods. + * @internal + * @hideconstructor + * @hidden + */ + constructor(spanContext = {}) { + this._traceId = spanContext.traceId || generateTraceId(); + this._spanId = spanContext.spanId || generateSpanId(); + this._startTime = spanContext.startTimestamp || timestampInSeconds(); + this._links = spanContext.links; + + this._attributes = {}; + this.setAttributes({ + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'manual', + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op, + ...spanContext.attributes, + }); + + this._name = spanContext.name; + + if (spanContext.parentSpanId) { + this._parentSpanId = spanContext.parentSpanId; + } + // We want to include booleans as well here + if ('sampled' in spanContext) { + this._sampled = spanContext.sampled; + } + if (spanContext.endTimestamp) { + this._endTime = spanContext.endTimestamp; + } + + this._events = []; + + this._isStandaloneSpan = spanContext.isStandalone; + + // If the span is already ended, ensure we finalize the span immediately + if (this._endTime) { + this._onSpanEnded(); + } + } + + /** @inheritDoc */ + addLink(link) { + if (this._links) { + this._links.push(link); + } else { + this._links = [link]; + } + return this; + } + + /** @inheritDoc */ + addLinks(links) { + if (this._links) { + this._links.push(...links); + } else { + this._links = links; + } + return this; + } + + /** + * This should generally not be used, + * but it is needed for being compliant with the OTEL Span interface. + * + * @hidden + * @internal + */ + recordException(_exception, _time) { + // noop + } + + /** @inheritdoc */ + spanContext() { + const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this; + return { + spanId, + traceId, + traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE, + }; + } + + /** @inheritdoc */ + setAttribute(key, value) { + if (value === undefined) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete this._attributes[key]; + } else { + this._attributes[key] = value; + } + + return this; + } + + /** @inheritdoc */ + setAttributes(attributes) { + Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key])); + return this; + } + + /** + * This should generally not be used, + * but we need it for browser tracing where we want to adjust the start time afterwards. + * USE THIS WITH CAUTION! + * + * @hidden + * @internal + */ + updateStartTime(timeInput) { + this._startTime = spanTimeInputToSeconds(timeInput); + } + + /** + * @inheritDoc + */ + setStatus(value) { + this._status = value; + return this; + } + + /** + * @inheritDoc + */ + updateName(name) { + this._name = name; + this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'custom'); + return this; + } + + /** @inheritdoc */ + end(endTimestamp) { + // If already ended, skip + if (this._endTime) { + return; + } + + this._endTime = spanTimeInputToSeconds(endTimestamp); + logSpanEnd(this); + + this._onSpanEnded(); + } + + /** + * Get JSON representation of this span. + * + * @hidden + * @internal This method is purely for internal purposes and should not be used outside + * of SDK code. If you need to get a JSON representation of a span, + * use `spanToJSON(span)` instead. + */ + getSpanJSON() { + return { + data: this._attributes, + description: this._name, + op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP], + parent_span_id: this._parentSpanId, + span_id: this._spanId, + start_timestamp: this._startTime, + status: getStatusMessage(this._status), + timestamp: this._endTime, + trace_id: this._traceId, + origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] , + profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] , + exclusive_time: this._attributes[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] , + measurements: timedEventsToMeasurements(this._events), + is_segment: (this._isStandaloneSpan && getRootSpan(this) === this) || undefined, + segment_id: this._isStandaloneSpan ? getRootSpan(this).spanContext().spanId : undefined, + links: convertSpanLinksForEnvelope(this._links), + }; + } + + /** @inheritdoc */ + isRecording() { + return !this._endTime && !!this._sampled; + } + + /** + * @inheritdoc + */ + addEvent( + name, + attributesOrStartTime, + startTime, + ) { + DEBUG_BUILD && debug.log('[Tracing] Adding an event to span:', name); + + const time = isSpanTimeInput(attributesOrStartTime) ? attributesOrStartTime : startTime || timestampInSeconds(); + const attributes = isSpanTimeInput(attributesOrStartTime) ? {} : attributesOrStartTime || {}; + + const event = { + name, + time: spanTimeInputToSeconds(time), + attributes, + }; + + this._events.push(event); + + return this; + } + + /** + * This method should generally not be used, + * but for now we need a way to publicly check if the `_isStandaloneSpan` flag is set. + * USE THIS WITH CAUTION! + * @internal + * @hidden + * @experimental + */ + isStandaloneSpan() { + return !!this._isStandaloneSpan; + } + + /** Emit `spanEnd` when the span is ended. */ + _onSpanEnded() { + const client = getClient(); + if (client) { + client.emit('spanEnd', this); + } + + // A segment span is basically the root span of a local span tree. + // So for now, this is either what we previously refer to as the root span, + // or a standalone span. + const isSegmentSpan = this._isStandaloneSpan || this === getRootSpan(this); + + if (!isSegmentSpan) { + return; + } + + // if this is a standalone span, we send it immediately + if (this._isStandaloneSpan) { + if (this._sampled) { + sendSpanEnvelope(createSpanEnvelope([this], client)); + } else { + DEBUG_BUILD && + debug.log('[Tracing] Discarding standalone span because its trace was not chosen to be sampled.'); + if (client) { + client.recordDroppedEvent('sample_rate', 'span'); + } + } + return; + } + + const transactionEvent = this._convertSpanToTransaction(); + if (transactionEvent) { + const scope = getCapturedScopesOnSpan(this).scope || getCurrentScope(); + scope.captureEvent(transactionEvent); + } + } + + /** + * Finish the transaction & prepare the event to send to Sentry. + */ + _convertSpanToTransaction() { + // We can only convert finished spans + if (!isFullFinishedSpan(spanToJSON(this))) { + return undefined; + } + + if (!this._name) { + DEBUG_BUILD && debug.warn('Transaction has no name, falling back to ``.'); + this._name = ''; + } + + const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this); + + const normalizedRequest = capturedSpanScope?.getScopeData().sdkProcessingMetadata?.normalizedRequest; + + if (this._sampled !== true) { + return undefined; + } + + // The transaction span itself as well as any potential standalone spans should be filtered out + const finishedSpans = getSpanDescendants(this).filter(span => span !== this && !isStandaloneSpan(span)); + + const spans = finishedSpans.map(span => spanToJSON(span)).filter(isFullFinishedSpan); + + const source = this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]; + + // remove internal root span attributes we don't need to send. + /* eslint-disable @typescript-eslint/no-dynamic-delete */ + delete this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]; + spans.forEach(span => { + delete span.data[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]; + }); + // eslint-enabled-next-line @typescript-eslint/no-dynamic-delete + + const transaction = { + contexts: { + trace: spanToTransactionTraceContext(this), + }, + spans: + // spans.sort() mutates the array, but `spans` is already a copy so we can safely do this here + // we do not use spans anymore after this point + spans.length > MAX_SPAN_COUNT + ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT) + : spans, + start_timestamp: this._startTime, + timestamp: this._endTime, + transaction: this._name, + type: 'transaction', + sdkProcessingMetadata: { + capturedSpanScope, + capturedSpanIsolationScope, + dynamicSamplingContext: getDynamicSamplingContextFromSpan(this), + }, + request: normalizedRequest, + ...(source && { + transaction_info: { + source, + }, + }), + }; + + const measurements = timedEventsToMeasurements(this._events); + const hasMeasurements = measurements && Object.keys(measurements).length; + + if (hasMeasurements) { + DEBUG_BUILD && + debug.log( + '[Measurements] Adding measurements to transaction event', + JSON.stringify(measurements, undefined, 2), + ); + transaction.measurements = measurements; + } + + return transaction; + } +} + +function isSpanTimeInput(value) { + return (value && typeof value === 'number') || value instanceof Date || Array.isArray(value); +} + +// We want to filter out any incomplete SpanJSON objects +function isFullFinishedSpan(input) { + return !!input.start_timestamp && !!input.timestamp && !!input.span_id && !!input.trace_id; +} + +/** `SentrySpan`s can be sent as a standalone span rather than belonging to a transaction */ +function isStandaloneSpan(span) { + return span instanceof SentrySpan && span.isStandaloneSpan(); +} + +/** + * Sends a `SpanEnvelope`. + * + * Note: If the envelope's spans are dropped, e.g. via `beforeSendSpan`, + * the envelope will not be sent either. + */ +function sendSpanEnvelope(envelope) { + const client = getClient(); + if (!client) { + return; + } + + const spanItems = envelope[1]; + if (!spanItems || spanItems.length === 0) { + client.recordDroppedEvent('before_send', 'span'); + return; + } + + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + client.sendEnvelope(envelope); +} + +export { SentrySpan }; +//# sourceMappingURL=sentrySpan.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentrySpan.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentrySpan.js.map new file mode 100644 index 0000000..fb275ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/sentrySpan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sentrySpan.js","sources":["../../../src/tracing/sentrySpan.ts"],"sourcesContent":["import { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { createSpanEnvelope } from '../envelope';\nimport {\n SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME,\n SEMANTIC_ATTRIBUTE_PROFILE_ID,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { SpanEnvelope } from '../types-hoist/envelope';\nimport type { TransactionEvent } from '../types-hoist/event';\nimport type { SpanLink } from '../types-hoist/link';\nimport type {\n SentrySpanArguments,\n Span,\n SpanAttributes,\n SpanAttributeValue,\n SpanContextData,\n SpanJSON,\n SpanOrigin,\n SpanTimeInput,\n} from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport type { TimedEvent } from '../types-hoist/timedEvent';\nimport { debug } from '../utils/debug-logger';\nimport { generateSpanId, generateTraceId } from '../utils/propagationContext';\nimport {\n convertSpanLinksForEnvelope,\n getRootSpan,\n getSpanDescendants,\n getStatusMessage,\n spanTimeInputToSeconds,\n spanToJSON,\n spanToTransactionTraceContext,\n TRACE_FLAG_NONE,\n TRACE_FLAG_SAMPLED,\n} from '../utils/spanUtils';\nimport { timestampInSeconds } from '../utils/time';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanEnd } from './logSpans';\nimport { timedEventsToMeasurements } from './measurement';\nimport { getCapturedScopesOnSpan } from './utils';\n\nconst MAX_SPAN_COUNT = 1000;\n\n/**\n * Span contains all data about a span\n */\nexport class SentrySpan implements Span {\n protected _traceId: string;\n protected _spanId: string;\n protected _parentSpanId?: string | undefined;\n protected _sampled: boolean | undefined;\n protected _name?: string | undefined;\n protected _attributes: SpanAttributes;\n protected _links?: SpanLink[];\n /** Epoch timestamp in seconds when the span started. */\n protected _startTime: number;\n /** Epoch timestamp in seconds when the span ended. */\n protected _endTime?: number | undefined;\n /** Internal keeper of the status */\n protected _status?: SpanStatus;\n /** The timed events added to this span. */\n protected _events: TimedEvent[];\n\n /** if true, treat span as a standalone span (not part of a transaction) */\n private _isStandaloneSpan?: boolean;\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 public constructor(spanContext: SentrySpanArguments = {}) {\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 public addLink(link: SpanLink): this {\n if (this._links) {\n this._links.push(link);\n } else {\n this._links = [link];\n }\n return this;\n }\n\n /** @inheritDoc */\n public addLinks(links: SpanLink[]): this {\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 public recordException(_exception: unknown, _time?: number | undefined): void {\n // noop\n }\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\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 public setAttribute(key: string, value: SpanAttributeValue | undefined): this {\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 public setAttributes(attributes: SpanAttributes): this {\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 public updateStartTime(timeInput: SpanTimeInput): void {\n this._startTime = spanTimeInputToSeconds(timeInput);\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatus): this {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public updateName(name: string): this {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'custom');\n return this;\n }\n\n /** @inheritdoc */\n public end(endTimestamp?: SpanTimeInput): void {\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 public getSpanJSON(): SpanJSON {\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] as SpanOrigin | undefined,\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: this._attributes[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\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 public isRecording(): boolean {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * @inheritdoc\n */\n public addEvent(\n name: string,\n attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n startTime?: SpanTimeInput,\n ): this {\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: TimedEvent = {\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 public isStandaloneSpan(): boolean {\n return !!this._isStandaloneSpan;\n }\n\n /** Emit `spanEnd` when the span is ended. */\n private _onSpanEnded(): void {\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 private _convertSpanToTransaction(): TransactionEvent | undefined {\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: TransactionEvent = {\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: undefined | SpanAttributes | SpanTimeInput): value is SpanTimeInput {\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: Partial): input is SpanJSON {\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: Span): boolean {\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: SpanEnvelope): void {\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"],"names":[],"mappings":";;;;;;;;;;;;;AA6CA,MAAM,cAAA,GAAiB,IAAI;;AAE3B;AACA;AACA;AACO,MAAM,YAA2B;;AAQxC;;AAEA;;AAEA;;AAEA;;AAGA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAS,WAAW,CAAC,WAAW,GAAwB,EAAE,EAAE;AAC5D,IAAI,IAAI,CAAC,QAAA,GAAW,WAAW,CAAC,OAAA,IAAW,eAAe,EAAE;AAC5D,IAAI,IAAI,CAAC,OAAA,GAAU,WAAW,CAAC,MAAA,IAAU,cAAc,EAAE;AACzD,IAAI,IAAI,CAAC,UAAA,GAAa,WAAW,CAAC,cAAA,IAAkB,kBAAkB,EAAE;AACxE,IAAI,IAAI,CAAC,MAAA,GAAS,WAAW,CAAC,KAAK;;AAEnC,IAAI,IAAI,CAAC,WAAA,GAAc,EAAE;AACzB,IAAI,IAAI,CAAC,aAAa,CAAC;AACvB,MAAM,CAAC,gCAAgC,GAAG,QAAQ;AAClD,MAAM,CAAC,4BAA4B,GAAG,WAAW,CAAC,EAAE;AACpD,MAAM,GAAG,WAAW,CAAC,UAAU;AAC/B,KAAK,CAAC;;AAEN,IAAI,IAAI,CAAC,KAAA,GAAQ,WAAW,CAAC,IAAI;;AAEjC,IAAI,IAAI,WAAW,CAAC,YAAY,EAAE;AAClC,MAAM,IAAI,CAAC,aAAA,GAAgB,WAAW,CAAC,YAAY;AACnD,IAAI;AACJ;AACA,IAAI,IAAI,SAAA,IAAa,WAAW,EAAE;AAClC,MAAM,IAAI,CAAC,QAAA,GAAW,WAAW,CAAC,OAAO;AACzC,IAAI;AACJ,IAAI,IAAI,WAAW,CAAC,YAAY,EAAE;AAClC,MAAM,IAAI,CAAC,QAAA,GAAW,WAAW,CAAC,YAAY;AAC9C,IAAI;;AAEJ,IAAI,IAAI,CAAC,OAAA,GAAU,EAAE;;AAErB,IAAI,IAAI,CAAC,iBAAA,GAAoB,WAAW,CAAC,YAAY;;AAErD;AACA,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB,IAAI;AACJ,EAAE;;AAEF;AACA,GAAS,OAAO,CAAC,IAAI,EAAkB;AACvC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,IAAI,OAAO;AACX,MAAM,IAAI,CAAC,MAAA,GAAS,CAAC,IAAI,CAAC;AAC1B,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,QAAQ,CAAC,KAAK,EAAoB;AAC3C,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAChC,IAAI,OAAO;AACX,MAAM,IAAI,CAAC,MAAA,GAAS,KAAK;AACzB,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAS,eAAe,CAAC,UAAU,EAAW,KAAK,EAA6B;AAChF;AACA,EAAE;;AAEF;AACA,GAAS,WAAW,GAAoB;AACxC,IAAI,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAA,EAAQ,GAAI,IAAI;AAC1E,IAAI,OAAO;AACX,MAAM,MAAM;AACZ,MAAM,OAAO;AACb,MAAM,UAAU,EAAE,OAAA,GAAU,kBAAA,GAAqB,eAAe;AAChE,KAAK;AACL,EAAE;;AAEF;AACA,GAAS,YAAY,CAAC,GAAG,EAAU,KAAK,EAAwC;AAChF,IAAI,IAAI,KAAA,KAAU,SAAS,EAAE;AAC7B;AACA,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAClC,IAAI,OAAO;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA,GAAI,KAAK;AACnC,IAAI;;AAEJ,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,aAAa,CAAC,UAAU,EAAwB;AACzD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAA,IAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACnF,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAS,eAAe,CAAC,SAAS,EAAuB;AACzD,IAAI,IAAI,CAAC,UAAA,GAAa,sBAAsB,CAAC,SAAS,CAAC;AACvD,EAAE;;AAEF;AACA;AACA;AACA,GAAS,SAAS,CAAC,KAAK,EAAoB;AAC5C,IAAI,IAAI,CAAC,OAAA,GAAU,KAAK;AACxB,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA;AACA;AACA,GAAS,UAAU,CAAC,IAAI,EAAgB;AACxC,IAAI,IAAI,CAAC,KAAA,GAAQ,IAAI;AACrB,IAAI,IAAI,CAAC,YAAY,CAAC,gCAAgC,EAAE,QAAQ,CAAC;AACjE,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA,GAAS,GAAG,CAAC,YAAY,EAAwB;AACjD;AACA,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,CAAC,QAAA,GAAW,sBAAsB,CAAC,YAAY,CAAC;AACxD,IAAI,UAAU,CAAC,IAAI,CAAC;;AAEpB,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAS,WAAW,GAAa;AACjC,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,IAAI,CAAC,WAAW;AAC5B,MAAM,WAAW,EAAE,IAAI,CAAC,KAAK;AAC7B,MAAM,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC;AACxD,MAAM,cAAc,EAAE,IAAI,CAAC,aAAa;AACxC,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,eAAe,EAAE,IAAI,CAAC,UAAU;AACtC,MAAM,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5C,MAAM,SAAS,EAAE,IAAI,CAAC,QAAQ;AAC9B,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAA;AAC/D,MAAM,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAA;AAChE,MAAM,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAA;AACxE,MAAM,YAAY,EAAE,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,MAAM,UAAU,EAAE,CAAC,IAAI,CAAC,iBAAA,IAAqB,WAAW,CAAC,IAAI,CAAA,KAAM,IAAI,KAAK,SAAS;AACrF,MAAM,UAAU,EAAE,IAAI,CAAC,iBAAA,GAAoB,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,MAAA,GAAS,SAAS;AAC7F,MAAM,KAAK,EAAE,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,KAAK;AACL,EAAE;;AAEF;AACA,GAAS,WAAW,GAAY;AAChC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAA,IAAY,CAAC,CAAC,IAAI,CAAC,QAAQ;AAC5C,EAAE;;AAEF;AACA;AACA;AACA,GAAS,QAAQ;AACjB,IAAI,IAAI;AACR,IAAI,qBAAqB;AACzB,IAAI,SAAS;AACb,IAAU;AACV,IAAI,WAAA,IAAe,KAAK,CAAC,GAAG,CAAC,oCAAoC,EAAE,IAAI,CAAC;;AAExE,IAAI,MAAM,IAAA,GAAO,eAAe,CAAC,qBAAqB,CAAA,GAAI,qBAAA,GAAwB,SAAA,IAAa,kBAAkB,EAAE;AACnH,IAAI,MAAM,UAAA,GAAa,eAAe,CAAC,qBAAqB,CAAA,GAAI,EAAC,GAAI,qBAAA,IAAyB,EAAE;;AAEhG,IAAI,MAAM,KAAK,GAAe;AAC9B,MAAM,IAAI;AACV,MAAM,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC;AACxC,MAAM,UAAU;AAChB,KAAK;;AAEL,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE5B,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAS,gBAAgB,GAAY;AACrC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB;AACnC,EAAE;;AAEF;AACA,GAAU,YAAY,GAAS;AAC/B,IAAI,MAAM,MAAA,GAAS,SAAS,EAAE;AAC9B,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AAClC,IAAI;;AAEJ;AACA;AACA;AACA,IAAI,MAAM,aAAA,GAAgB,IAAI,CAAC,iBAAA,IAAqB,IAAA,KAAS,WAAW,CAAC,IAAI,CAAC;;AAE9E,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,MAAM;AACN,IAAI;;AAEJ;AACA,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAQ,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5D,MAAM,OAAO;AACb,QAAQ,WAAA;AACR,UAAU,KAAK,CAAC,GAAG,CAAC,sFAAsF,CAAC;AAC3G,QAAQ,IAAI,MAAM,EAAE;AACpB,UAAU,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC;AAC1D,QAAQ;AACR,MAAM;AACN,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,gBAAA,GAAmB,IAAI,CAAC,yBAAyB,EAAE;AAC7D,IAAI,IAAI,gBAAgB,EAAE;AAC1B,MAAM,MAAM,KAAA,GAAQ,uBAAuB,CAAC,IAAI,CAAC,CAAC,KAAA,IAAS,eAAe,EAAE;AAC5E,MAAM,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC;AAC1C,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,GAAU,yBAAyB,GAAiC;AACpE;AACA,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,MAAM,OAAO,SAAS;AACtB,IAAI;;AAEJ,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACrB,MAAM,eAAe,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC;AACtG,MAAM,IAAI,CAAC,KAAA,GAAQ,yBAAyB;AAC5C,IAAI;;AAEJ,IAAI,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,0BAAA,EAA2B,GAAI,uBAAuB,CAAC,IAAI,CAAC;;AAElH,IAAI,MAAM,iBAAA,GAAoB,iBAAiB,EAAE,YAAY,EAAE,CAAC,qBAAqB,EAAE,iBAAiB;;AAExG,IAAI,IAAI,IAAI,CAAC,QAAA,KAAa,IAAI,EAAE;AAChC,MAAM,OAAO,SAAS;AACtB,IAAI;;AAEJ;AACA,IAAI,MAAM,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAA,KAAS,IAAA,IAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;;AAE3G,IAAI,MAAM,KAAA,GAAQ,aAAa,CAAC,GAAG,CAAC,IAAA,IAAQ,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC;;AAExF,IAAI,MAAM,SAAS,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC;;AAErE;AACA;AACA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,0CAA0C,CAAC;AACvE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ;AAC1B,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC;AAClE,IAAI,CAAC,CAAC;AACN;;AAEA,IAAI,MAAM,WAAW,GAAqB;AAC1C,MAAM,QAAQ,EAAE;AAChB,QAAQ,KAAK,EAAE,6BAA6B,CAAC,IAAI,CAAC;AAClD,OAAO;AACP,MAAM,KAAK;AACX;AACA;AACA,QAAQ,KAAK,CAAC,MAAA,GAAS;AACvB,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,eAAA,GAAkB,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc;AAC/F,YAAY,KAAK;AACjB,MAAM,eAAe,EAAE,IAAI,CAAC,UAAU;AACtC,MAAM,SAAS,EAAE,IAAI,CAAC,QAAQ;AAC9B,MAAM,WAAW,EAAE,IAAI,CAAC,KAAK;AAC7B,MAAM,IAAI,EAAE,aAAa;AACzB,MAAM,qBAAqB,EAAE;AAC7B,QAAQ,iBAAiB;AACzB,QAAQ,0BAA0B;AAClC,QAAQ,sBAAsB,EAAE,iCAAiC,CAAC,IAAI,CAAC;AACvE,OAAO;AACP,MAAM,OAAO,EAAE,iBAAiB;AAChC,MAAM,IAAI,MAAA,IAAU;AACpB,QAAQ,gBAAgB,EAAE;AAC1B,UAAU,MAAM;AAChB,SAAS;AACT,OAAO,CAAC;AACR,KAAK;;AAEL,IAAI,MAAM,eAAe,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC;AAChE,IAAI,MAAM,eAAA,GAAkB,YAAA,IAAgB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM;;AAE5E,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,WAAA;AACN,QAAQ,KAAK,CAAC,GAAG;AACjB,UAAU,yDAAyD;AACnE,UAAU,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;AACpD,SAAS;AACT,MAAM,WAAW,CAAC,YAAA,GAAe,YAAY;AAC7C,IAAI;;AAEJ,IAAI,OAAO,WAAW;AACtB,EAAE;AACF;;AAEA,SAAS,eAAe,CAAC,KAAK,EAAsE;AACpG,EAAE,OAAO,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,QAAQ,KAAK,KAAA,YAAiB,QAAQ,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9F;;AAEA;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAwC;AACzE,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,eAAA,IAAmB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,OAAA,IAAW,CAAC,CAAC,KAAK,CAAC,QAAQ;AAC5F;;AAEA;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAiB;AAC/C,EAAE,OAAO,gBAAgB,UAAA,IAAc,IAAI,CAAC,gBAAgB,EAAE;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,QAAQ,EAAsB;AACxD,EAAE,MAAM,MAAA,GAAS,SAAS,EAAE;AAC5B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,SAAA,GAAY,QAAQ,CAAC,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,SAAA,IAAa,SAAS,CAAC,MAAA,KAAW,CAAC,EAAE;AAC5C,IAAI,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC;AACpD,IAAI;AACJ,EAAE;;AAEF;AACA;AACA,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC/B;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/spanstatus.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/spanstatus.js new file mode 100644 index 0000000..ce80aa9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/spanstatus.js @@ -0,0 +1,68 @@ +const SPAN_STATUS_UNSET = 0; +const SPAN_STATUS_OK = 1; +const SPAN_STATUS_ERROR = 2; + +/** + * Converts a HTTP status code into a sentry status with a message. + * + * @param httpStatus The HTTP response status code. + * @returns The span status or internal_error. + */ +// https://develop.sentry.dev/sdk/event-payloads/span/ +function getSpanStatusFromHttpCode(httpStatus) { + if (httpStatus < 400 && httpStatus >= 100) { + return { code: SPAN_STATUS_OK }; + } + + if (httpStatus >= 400 && httpStatus < 500) { + switch (httpStatus) { + case 401: + return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' }; + case 403: + return { code: SPAN_STATUS_ERROR, message: 'permission_denied' }; + case 404: + return { code: SPAN_STATUS_ERROR, message: 'not_found' }; + case 409: + return { code: SPAN_STATUS_ERROR, message: 'already_exists' }; + case 413: + return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' }; + case 429: + return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' }; + case 499: + return { code: SPAN_STATUS_ERROR, message: 'cancelled' }; + default: + return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' }; + } + } + + if (httpStatus >= 500 && httpStatus < 600) { + switch (httpStatus) { + case 501: + return { code: SPAN_STATUS_ERROR, message: 'unimplemented' }; + case 503: + return { code: SPAN_STATUS_ERROR, message: 'unavailable' }; + case 504: + return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' }; + default: + return { code: SPAN_STATUS_ERROR, message: 'internal_error' }; + } + } + + return { code: SPAN_STATUS_ERROR, message: 'internal_error' }; +} + +/** + * Sets the Http status attributes on the current span based on the http code. + * Additionally, the span's status is updated, depending on the http code. + */ +function setHttpStatus(span, httpStatus) { + span.setAttribute('http.response.status_code', httpStatus); + + const spanStatus = getSpanStatusFromHttpCode(httpStatus); + if (spanStatus.message !== 'unknown_error') { + span.setStatus(spanStatus); + } +} + +export { SPAN_STATUS_ERROR, SPAN_STATUS_OK, SPAN_STATUS_UNSET, getSpanStatusFromHttpCode, setHttpStatus }; +//# sourceMappingURL=spanstatus.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/spanstatus.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/spanstatus.js.map new file mode 100644 index 0000000..531cf30 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/spanstatus.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spanstatus.js","sources":["../../../src/tracing/spanstatus.ts"],"sourcesContent":["import type { Span } from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\n\nexport const SPAN_STATUS_UNSET = 0;\nexport const SPAN_STATUS_OK = 1;\nexport const 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/\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatus {\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 */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\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"],"names":[],"mappings":"AAGO,MAAM,iBAAA,GAAoB;AAC1B,MAAM,cAAA,GAAiB;AACvB,MAAM,iBAAA,GAAoB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,UAAU,EAAsB;AAC1E,EAAE,IAAI,UAAA,GAAa,OAAO,UAAA,IAAc,GAAG,EAAE;AAC7C,IAAI,OAAO,EAAE,IAAI,EAAE,gBAAgB;AACnC,EAAE;;AAEF,EAAE,IAAI,UAAA,IAAc,OAAO,UAAA,GAAa,GAAG,EAAE;AAC7C,IAAI,QAAQ,UAAU;AACtB,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAA,EAAmB;AACtE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAA,EAAqB;AACxE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAA,EAAa;AAChE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAA,EAAkB;AACrE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,qBAAA,EAAuB;AAC1E,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,oBAAA,EAAsB;AACzE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAA,EAAa;AAChE,MAAM;AACN,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAA,EAAoB;AACvE;AACA,EAAE;;AAEF,EAAE,IAAI,UAAA,IAAc,OAAO,UAAA,GAAa,GAAG,EAAE;AAC7C,IAAI,QAAQ,UAAU;AACtB,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAA,EAAiB;AACpE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAA,EAAe;AAClE,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAA,EAAqB;AACxE,MAAM;AACN,QAAQ,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAA,EAAkB;AACrE;AACA,EAAE;;AAEF,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAA,EAAkB;AAC/D;;AAEA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,IAAI,EAAQ,UAAU,EAAgB;AACpE,EAAE,IAAI,CAAC,YAAY,CAAC,2BAA2B,EAAE,UAAU,CAAC;;AAE5D,EAAE,MAAM,UAAA,GAAa,yBAAyB,CAAC,UAAU,CAAC;AAC1D,EAAE,IAAI,UAAU,CAAC,OAAA,KAAY,eAAe,EAAE;AAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAC9B,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/trace.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/trace.js new file mode 100644 index 0000000..b0551f3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/trace.js @@ -0,0 +1,527 @@ +import { getAsyncContextStrategy } from '../asyncContext/index.js'; +import { getMainCarrier } from '../carrier.js'; +import { withScope, getCurrentScope, getClient, getIsolationScope } from '../currentScopes.js'; +import { DEBUG_BUILD } from '../debug-build.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js'; +import { baggageHeaderToDynamicSamplingContext } from '../utils/baggage.js'; +import { debug } from '../utils/debug-logger.js'; +import { handleCallbackErrors } from '../utils/handleCallbackErrors.js'; +import { hasSpansEnabled } from '../utils/hasSpansEnabled.js'; +import { parseSampleRate } from '../utils/parseSampleRate.js'; +import { generateTraceId } from '../utils/propagationContext.js'; +import { safeMathRandom } from '../utils/randomSafeContext.js'; +import { _setSpanForScope, _getSpanForScope } from '../utils/spanOnScope.js'; +import { spanToJSON, spanTimeInputToSeconds, getRootSpan, addChildSpanToSpan, spanIsSampled } from '../utils/spanUtils.js'; +import { shouldContinueTrace, propagationContextFromHeaders } from '../utils/tracing.js'; +import { getDynamicSamplingContextFromSpan, freezeDscOnSpan } from './dynamicSamplingContext.js'; +import { logSpanStart } from './logSpans.js'; +import { sampleSpan } from './sampling.js'; +import { SentryNonRecordingSpan } from './sentryNonRecordingSpan.js'; +import { SentrySpan } from './sentrySpan.js'; +import { SPAN_STATUS_ERROR } from './spanstatus.js'; +import { setCapturedScopesOnSpan } from './utils.js'; + +/* eslint-disable max-lines */ + + +const SUPPRESS_TRACING_KEY = '__SENTRY_SUPPRESS_TRACING__'; + +/** + * Wraps a function with a transaction/span and finishes the span after the function is done. + * The created span is the active span and will be used as parent by other spans created inside the function + * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active. + * + * If you want to create a span that is not set as active, use {@link startInactiveSpan}. + * + * You'll always get a span passed to the callback, + * it may just be a non-recording span if the span is not sampled or if tracing is disabled. + */ +function startSpan(options, callback) { + const acs = getAcs(); + if (acs.startSpan) { + return acs.startSpan(options, callback); + } + + const spanArguments = parseSentrySpanArguments(options); + const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options; + + // We still need to fork a potentially passed scope, as we set the active span on it + // and we need to ensure that it is cleaned up properly once the span ends. + const customForkedScope = customScope?.clone(); + + return withScope(customForkedScope, () => { + // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan` + const wrapper = getActiveSpanWrapper(customParentSpan); + + return wrapper(() => { + const scope = getCurrentScope(); + const parentSpan = getParentSpan(scope, customParentSpan); + + const shouldSkipSpan = options.onlyIfParent && !parentSpan; + const activeSpan = shouldSkipSpan + ? new SentryNonRecordingSpan() + : createChildOrRootSpan({ + parentSpan, + spanArguments, + forceTransaction, + scope, + }); + + _setSpanForScope(scope, activeSpan); + + return handleCallbackErrors( + () => callback(activeSpan), + () => { + // Only update the span status if it hasn't been changed yet, and the span is not yet finished + const { status } = spanToJSON(activeSpan); + if (activeSpan.isRecording() && (!status || status === 'ok')) { + activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' }); + } + }, + () => { + activeSpan.end(); + }, + ); + }); + }); +} + +/** + * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span + * after the function is done automatically. Use `span.end()` to end the span. + * + * The created span is the active span and will be used as parent by other spans created inside the function + * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active. + * + * You'll always get a span passed to the callback, + * it may just be a non-recording span if the span is not sampled or if tracing is disabled. + */ +function startSpanManual(options, callback) { + const acs = getAcs(); + if (acs.startSpanManual) { + return acs.startSpanManual(options, callback); + } + + const spanArguments = parseSentrySpanArguments(options); + const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options; + + const customForkedScope = customScope?.clone(); + + return withScope(customForkedScope, () => { + // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan` + const wrapper = getActiveSpanWrapper(customParentSpan); + + return wrapper(() => { + const scope = getCurrentScope(); + const parentSpan = getParentSpan(scope, customParentSpan); + + const shouldSkipSpan = options.onlyIfParent && !parentSpan; + const activeSpan = shouldSkipSpan + ? new SentryNonRecordingSpan() + : createChildOrRootSpan({ + parentSpan, + spanArguments, + forceTransaction, + scope, + }); + + _setSpanForScope(scope, activeSpan); + + return handleCallbackErrors( + // We pass the `finish` function to the callback, so the user can finish the span manually + // this is mainly here for historic purposes because previously, we instructed users to call + // `finish` instead of `span.end()` to also clean up the scope. Nowadays, calling `span.end()` + // or `finish` has the same effect and we simply leave it here to avoid breaking user code. + () => callback(activeSpan, () => activeSpan.end()), + () => { + // Only update the span status if it hasn't been changed yet, and the span is not yet finished + const { status } = spanToJSON(activeSpan); + if (activeSpan.isRecording() && (!status || status === 'ok')) { + activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' }); + } + }, + ); + }); + }); +} + +/** + * Creates a span. This span is not set as active, so will not get automatic instrumentation spans + * as children or be able to be accessed via `Sentry.getActiveSpan()`. + * + * If you want to create a span that is set as active, use {@link startSpan}. + * + * This function will always return a span, + * it may just be a non-recording span if the span is not sampled or if tracing is disabled. + */ +function startInactiveSpan(options) { + const acs = getAcs(); + if (acs.startInactiveSpan) { + return acs.startInactiveSpan(options); + } + + const spanArguments = parseSentrySpanArguments(options); + const { forceTransaction, parentSpan: customParentSpan } = options; + + // If `options.scope` is defined, we use this as as a wrapper, + // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan` + const wrapper = options.scope + ? (callback) => withScope(options.scope, callback) + : customParentSpan !== undefined + ? (callback) => withActiveSpan(customParentSpan, callback) + : (callback) => callback(); + + return wrapper(() => { + const scope = getCurrentScope(); + const parentSpan = getParentSpan(scope, customParentSpan); + + const shouldSkipSpan = options.onlyIfParent && !parentSpan; + + if (shouldSkipSpan) { + return new SentryNonRecordingSpan(); + } + + return createChildOrRootSpan({ + parentSpan, + spanArguments, + forceTransaction, + scope, + }); + }); +} + +/** + * Continue a trace from `sentry-trace` and `baggage` values. + * These values can be obtained from incoming request headers, or in the browser from `` + * and `` HTML tags. + * + * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically + * be attached to the incoming trace. + */ +const continueTrace = ( + options + +, + callback, +) => { + const carrier = getMainCarrier(); + const acs = getAsyncContextStrategy(carrier); + if (acs.continueTrace) { + return acs.continueTrace(options, callback); + } + + const { sentryTrace, baggage } = options; + + const client = getClient(); + const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage); + if (client && !shouldContinueTrace(client, incomingDsc?.org_id)) { + return startNewTrace(callback); + } + + return withScope(scope => { + const propagationContext = propagationContextFromHeaders(sentryTrace, baggage); + scope.setPropagationContext(propagationContext); + _setSpanForScope(scope, undefined); + return callback(); + }); +}; + +/** + * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be + * passed `null` to start an entirely new span tree. + * + * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed, + * spans started within the callback will not be attached to a parent span. + * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope. + * @returns the value returned from the provided callback function. + */ +function withActiveSpan(span, callback) { + const acs = getAcs(); + if (acs.withActiveSpan) { + return acs.withActiveSpan(span, callback); + } + + return withScope(scope => { + _setSpanForScope(scope, span || undefined); + return callback(scope); + }); +} + +/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */ +function suppressTracing(callback) { + const acs = getAcs(); + + if (acs.suppressTracing) { + return acs.suppressTracing(callback); + } + + return withScope(scope => { + // Note: We do not wait for the callback to finish before we reset the metadata + // the reason for this is that otherwise, in the browser this can lead to very weird behavior + // as there is only a single top scope, if the callback takes longer to finish, + // other, unrelated spans may also be suppressed, which we do not want + // so instead, we only suppress tracing synchronoysly in the browser + scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: true }); + const res = callback(); + scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: undefined }); + return res; + }); +} + +/** + * Starts a new trace for the duration of the provided callback. Spans started within the + * callback will be part of the new trace instead of a potentially previously started trace. + * + * Important: Only use this function if you want to override the default trace lifetime and + * propagation mechanism of the SDK for the duration and scope of the provided callback. + * The newly created trace will also be the root of a new distributed trace, for example if + * you make http requests within the callback. + * This function might be useful if the operation you want to instrument should not be part + * of a potentially ongoing trace. + * + * Default behavior: + * - Server-side: A new trace is started for each incoming request. + * - Browser: A new trace is started for each page our route. Navigating to a new route + * or page will automatically create a new trace. + */ +function startNewTrace(callback) { + return withScope(scope => { + scope.setPropagationContext({ + traceId: generateTraceId(), + sampleRand: safeMathRandom(), + }); + DEBUG_BUILD && debug.log(`Starting a new trace with id ${scope.getPropagationContext().traceId}`); + return withActiveSpan(null, callback); + }); +} + +function createChildOrRootSpan({ + parentSpan, + spanArguments, + forceTransaction, + scope, +} + +) { + if (!hasSpansEnabled()) { + const span = new SentryNonRecordingSpan(); + + // If this is a root span, we ensure to freeze a DSC + // So we can have at least partial data here + if (forceTransaction || !parentSpan) { + const dsc = { + sampled: 'false', + sample_rate: '0', + transaction: spanArguments.name, + ...getDynamicSamplingContextFromSpan(span), + } ; + freezeDscOnSpan(span, dsc); + } + + return span; + } + + const isolationScope = getIsolationScope(); + + let span; + if (parentSpan && !forceTransaction) { + span = _startChildSpan(parentSpan, scope, spanArguments); + addChildSpanToSpan(parentSpan, span); + } else if (parentSpan) { + // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope + const dsc = getDynamicSamplingContextFromSpan(parentSpan); + const { traceId, spanId: parentSpanId } = parentSpan.spanContext(); + const parentSampled = spanIsSampled(parentSpan); + + span = _startRootSpan( + { + traceId, + parentSpanId, + ...spanArguments, + }, + scope, + parentSampled, + ); + + freezeDscOnSpan(span, dsc); + } else { + const { + traceId, + dsc, + parentSpanId, + sampled: parentSampled, + } = { + ...isolationScope.getPropagationContext(), + ...scope.getPropagationContext(), + }; + + span = _startRootSpan( + { + traceId, + parentSpanId, + ...spanArguments, + }, + scope, + parentSampled, + ); + + if (dsc) { + freezeDscOnSpan(span, dsc); + } + } + + logSpanStart(span); + + setCapturedScopesOnSpan(span, scope, isolationScope); + + return span; +} + +/** + * This converts StartSpanOptions to SentrySpanArguments. + * For the most part (for now) we accept the same options, + * but some of them need to be transformed. + */ +function parseSentrySpanArguments(options) { + const exp = options.experimental || {}; + const initialCtx = { + isStandalone: exp.standalone, + ...options, + }; + + if (options.startTime) { + const ctx = { ...initialCtx }; + ctx.startTimestamp = spanTimeInputToSeconds(options.startTime); + delete ctx.startTime; + return ctx; + } + + return initialCtx; +} + +function getAcs() { + const carrier = getMainCarrier(); + return getAsyncContextStrategy(carrier); +} + +function _startRootSpan(spanArguments, scope, parentSampled) { + const client = getClient(); + const options = client?.getOptions() || {}; + + const { name = '' } = spanArguments; + + const mutableSpanSamplingData = { spanAttributes: { ...spanArguments.attributes }, spanName: name, parentSampled }; + + // we don't care about the decision for the moment; this is just a placeholder + client?.emit('beforeSampling', mutableSpanSamplingData, { decision: false }); + + // If hook consumers override the parentSampled flag, we will use that value instead of the actual one + const finalParentSampled = mutableSpanSamplingData.parentSampled ?? parentSampled; + const finalAttributes = mutableSpanSamplingData.spanAttributes; + + const currentPropagationContext = scope.getPropagationContext(); + const [sampled, sampleRate, localSampleRateWasApplied] = scope.getScopeData().sdkProcessingMetadata[ + SUPPRESS_TRACING_KEY + ] + ? [false] + : sampleSpan( + options, + { + name, + parentSampled: finalParentSampled, + attributes: finalAttributes, + parentSampleRate: parseSampleRate(currentPropagationContext.dsc?.sample_rate), + }, + currentPropagationContext.sampleRand, + ); + + const rootSpan = new SentrySpan({ + ...spanArguments, + attributes: { + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom', + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: + sampleRate !== undefined && localSampleRateWasApplied ? sampleRate : undefined, + ...finalAttributes, + }, + sampled, + }); + + if (!sampled && client) { + DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.'); + client.recordDroppedEvent('sample_rate', 'transaction'); + } + + if (client) { + client.emit('spanStart', rootSpan); + } + + return rootSpan; +} + +/** + * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`. + * This inherits the sampling decision from the parent span. + */ +function _startChildSpan(parentSpan, scope, spanArguments) { + const { spanId, traceId } = parentSpan.spanContext(); + const sampled = scope.getScopeData().sdkProcessingMetadata[SUPPRESS_TRACING_KEY] ? false : spanIsSampled(parentSpan); + + const childSpan = sampled + ? new SentrySpan({ + ...spanArguments, + parentSpanId: spanId, + traceId, + sampled, + }) + : new SentryNonRecordingSpan({ traceId }); + + addChildSpanToSpan(parentSpan, childSpan); + + const client = getClient(); + if (client) { + client.emit('spanStart', childSpan); + // If it has an endTimestamp, it's already ended + if (spanArguments.endTimestamp) { + client.emit('spanEnd', childSpan); + } + } + + return childSpan; +} + +function getParentSpan(scope, customParentSpan) { + // always use the passed in span directly + if (customParentSpan) { + return customParentSpan ; + } + + // This is different from `undefined` as it means the user explicitly wants no parent span + if (customParentSpan === null) { + return undefined; + } + + const span = _getSpanForScope(scope) ; + + if (!span) { + return undefined; + } + + const client = getClient(); + const options = client ? client.getOptions() : {}; + if (options.parentSpanIsAlwaysRootSpan) { + return getRootSpan(span) ; + } + + return span; +} + +function getActiveSpanWrapper(parentSpan) { + return parentSpan !== undefined + ? (callback) => { + return withActiveSpan(parentSpan, callback); + } + : (callback) => callback(); +} + +export { continueTrace, startInactiveSpan, startNewTrace, startSpan, startSpanManual, suppressTracing, withActiveSpan }; +//# sourceMappingURL=trace.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/trace.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/trace.js.map new file mode 100644 index 0000000..687bc46 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/trace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace.js","sources":["../../../src/tracing/trace.ts"],"sourcesContent":["/* eslint-disable max-lines */\n\nimport { getAsyncContextStrategy } from '../asyncContext';\nimport type { AsyncContextStrategy } from '../asyncContext/types';\nimport { getMainCarrier } from '../carrier';\nimport { getClient, getCurrentScope, getIsolationScope, withScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { SentrySpanArguments, Span, SpanTimeInput } from '../types-hoist/span';\nimport type { StartSpanOptions } from '../types-hoist/startSpanOptions';\nimport { baggageHeaderToDynamicSamplingContext } from '../utils/baggage';\nimport { debug } from '../utils/debug-logger';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\nimport { generateTraceId } from '../utils/propagationContext';\nimport { safeMathRandom } from '../utils/randomSafeContext';\nimport { _getSpanForScope, _setSpanForScope } from '../utils/spanOnScope';\nimport { addChildSpanToSpan, getRootSpan, spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport { propagationContextFromHeaders, shouldContinueTrace } from '../utils/tracing';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanStart } from './logSpans';\nimport { sampleSpan } from './sampling';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\nimport { setCapturedScopesOnSpan } from './utils';\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 */\nexport function startSpan(options: StartSpanOptions, callback: (span: Span) => T): T {\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 */\nexport function startSpanManual(options: StartSpanOptions, callback: (span: Span, finish: () => void) => T): T {\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 */\nexport function startInactiveSpan(options: StartSpanOptions): Span {\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: () => Span) => withScope(options.scope, callback)\n : customParentSpan !== undefined\n ? (callback: () => Span) => withActiveSpan(customParentSpan, callback)\n : (callback: () => Span) => 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 */\nexport const continueTrace = (\n options: {\n sentryTrace: Parameters[0];\n baggage: Parameters[1];\n },\n callback: () => V,\n): V => {\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 */\nexport function withActiveSpan(span: Span | null, callback: (scope: Scope) => T): T {\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. */\nexport function suppressTracing(callback: () => T): T {\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 */\nexport function startNewTrace(callback: () => T): T {\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 parentSpan: SentrySpan | undefined;\n spanArguments: SentrySpanArguments;\n forceTransaction?: boolean;\n scope: Scope;\n}): Span {\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 } satisfies Partial;\n freezeDscOnSpan(span, dsc);\n }\n\n return span;\n }\n\n const isolationScope = getIsolationScope();\n\n let span: 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: StartSpanOptions): SentrySpanArguments {\n const exp = options.experimental || {};\n const initialCtx: SentrySpanArguments = {\n isStandalone: exp.standalone,\n ...options,\n };\n\n if (options.startTime) {\n const ctx: SentrySpanArguments & { startTime?: SpanTimeInput } = { ...initialCtx };\n ctx.startTimestamp = spanTimeInputToSeconds(options.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return initialCtx;\n}\n\nfunction getAcs(): AsyncContextStrategy {\n const carrier = getMainCarrier();\n return getAsyncContextStrategy(carrier);\n}\n\nfunction _startRootSpan(spanArguments: SentrySpanArguments, scope: Scope, parentSampled?: boolean): SentrySpan {\n const client = getClient();\n const options: Partial = 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: Span, scope: Scope, spanArguments: SentrySpanArguments): Span {\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: Scope, customParentSpan: Span | null | undefined): SentrySpan | undefined {\n // always use the passed in span directly\n if (customParentSpan) {\n return customParentSpan as SentrySpan;\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) as SentrySpan | undefined;\n\n if (!span) {\n return undefined;\n }\n\n const client = getClient();\n const options: Partial = client ? client.getOptions() : {};\n if (options.parentSpanIsAlwaysRootSpan) {\n return getRootSpan(span) as SentrySpan;\n }\n\n return span;\n}\n\nfunction getActiveSpanWrapper(parentSpan: Span | undefined | null): (callback: () => T) => T {\n return parentSpan !== undefined\n ? (callback: () => T) => {\n return withActiveSpan(parentSpan, callback);\n }\n : (callback: () => T) => callback();\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/utils.js new file mode 100644 index 0000000..9050232 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/utils.js @@ -0,0 +1,65 @@ +import { addNonEnumerableProperty } from '../utils/object.js'; +import { GLOBAL_OBJ } from '../utils/worldwide.js'; + +const SCOPE_ON_START_SPAN_FIELD = '_sentryScope'; +const ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope'; + +/** Wrap a scope with a WeakRef if available, falling back to a direct scope. */ +function wrapScopeWithWeakRef(scope) { + try { + // @ts-expect-error - WeakRef is not available in all environments + const WeakRefClass = GLOBAL_OBJ.WeakRef; + if (typeof WeakRefClass === 'function') { + return new WeakRefClass(scope); + } + } catch { + // WeakRef not available or failed to create + // We'll fall back to a direct scope + } + + return scope; +} + +/** Try to unwrap a scope from a potential WeakRef wrapper. */ +function unwrapScopeFromWeakRef(scopeRef) { + if (!scopeRef) { + return undefined; + } + + if (typeof scopeRef === 'object' && 'deref' in scopeRef && typeof scopeRef.deref === 'function') { + try { + return scopeRef.deref(); + } catch { + return undefined; + } + } + + // Fallback to a direct scope + return scopeRef ; +} + +/** Store the scope & isolation scope for a span, which can the be used when it is finished. */ +function setCapturedScopesOnSpan(span, scope, isolationScope) { + if (span) { + addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, wrapScopeWithWeakRef(isolationScope)); + // We don't wrap the scope with a WeakRef here because webkit aggressively garbage collects + // and scopes are not held in memory for long periods of time. + addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope); + } +} + +/** + * Grabs the scope and isolation scope off a span that were active when the span was started. + * If WeakRef was used and scopes have been garbage collected, returns undefined for those scopes. + */ +function getCapturedScopesOnSpan(span) { + const spanWithScopes = span ; + + return { + scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD], + isolationScope: unwrapScopeFromWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD]), + }; +} + +export { getCapturedScopesOnSpan, setCapturedScopesOnSpan }; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/utils.js.map new file mode 100644 index 0000000..df6841b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../src/tracing/utils.ts"],"sourcesContent":["import type { Scope } from '../scope';\nimport type { Span } from '../types-hoist/span';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype ScopeWeakRef = { deref(): Scope | undefined } | Scope;\n\ntype SpanWithScopes = Span & {\n [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: ScopeWeakRef;\n};\n\n/** Wrap a scope with a WeakRef if available, falling back to a direct scope. */\nfunction wrapScopeWithWeakRef(scope: Scope): ScopeWeakRef {\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: ScopeWeakRef | undefined): Scope | undefined {\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 as Scope;\n}\n\n/** Store the scope & isolation scope for a span, which can the be used when it is finished. */\nexport function setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\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 */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n const spanWithScopes = span as SpanWithScopes;\n\n return {\n scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: unwrapScopeFromWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD]),\n };\n}\n"],"names":[],"mappings":";;;AAKA,MAAM,yBAAA,GAA4B,cAAc;AAChD,MAAM,mCAAA,GAAsC,uBAAuB;;AASnE;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAuB;AAC1D,EAAE,IAAI;AACN;AACA,IAAI,MAAM,YAAA,GAAe,UAAU,CAAC,OAAO;AAC3C,IAAI,IAAI,OAAO,YAAA,KAAiB,UAAU,EAAE;AAC5C,MAAM,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC;AACpC,IAAI;AACJ,EAAE,EAAE,MAAM;AACV;AACA;AACA,EAAE;;AAEF,EAAE,OAAO,KAAK;AACd;;AAEA;AACA,SAAS,sBAAsB,CAAC,QAAQ,EAA+C;AACvF,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;;AAEF,EAAE,IAAI,OAAO,QAAA,KAAa,YAAY,OAAA,IAAW,QAAA,IAAY,OAAO,QAAQ,CAAC,KAAA,KAAU,UAAU,EAAE;AACnG,IAAI,IAAI;AACR,MAAM,OAAO,QAAQ,CAAC,KAAK,EAAE;AAC7B,IAAI,EAAE,MAAM;AACZ,MAAM,OAAO,SAAS;AACtB,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,OAAO,QAAA;AACT;;AAEA;AACO,SAAS,uBAAuB,CAAC,IAAI,EAAoB,KAAK,EAAS,cAAc,EAAe;AAC3G,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,wBAAwB,CAAC,IAAI,EAAE,mCAAmC,EAAE,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC7G;AACA;AACA,IAAI,wBAAwB,CAAC,IAAI,EAAE,yBAAyB,EAAE,KAAK,CAAC;AACpE,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,IAAI,EAAmD;AAC/F,EAAE,MAAM,cAAA,GAAiB,IAAA;;AAEzB,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,cAAc,CAAC,yBAAyB,CAAC;AACpD,IAAI,cAAc,EAAE,sBAAsB,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC;AAC/F,GAAG;AACH;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/constants.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/constants.js new file mode 100644 index 0000000..107459d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/constants.js @@ -0,0 +1,25 @@ +// Global Map to track tool call IDs to their corresponding spans +// This allows us to capture tool errors and link them to the correct span +const toolCallSpanMap = new Map(); + +// Operation sets for efficient mapping to OpenTelemetry semantic convention values +const INVOKE_AGENT_OPS = new Set([ + 'ai.generateText', + 'ai.streamText', + 'ai.generateObject', + 'ai.streamObject', + 'ai.embed', + 'ai.embedMany', +]); + +const GENERATE_CONTENT_OPS = new Set([ + 'ai.generateText.doGenerate', + 'ai.streamText.doStream', + 'ai.generateObject.doGenerate', + 'ai.streamObject.doStream', +]); + +const EMBEDDINGS_OPS = new Set(['ai.embed.doEmbed', 'ai.embedMany.doEmbed']); + +export { EMBEDDINGS_OPS, GENERATE_CONTENT_OPS, INVOKE_AGENT_OPS, toolCallSpanMap }; +//# sourceMappingURL=constants.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/constants.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/constants.js.map new file mode 100644 index 0000000..a693b59 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../../../../src/tracing/vercel-ai/constants.ts"],"sourcesContent":["import type { Span } from '../../types-hoist/span';\n\n// Global Map to track tool call IDs to their corresponding spans\n// This allows us to capture tool errors and link them to the correct span\nexport const toolCallSpanMap = new Map();\n\n// Operation sets for efficient mapping to OpenTelemetry semantic convention values\nexport const INVOKE_AGENT_OPS = new Set([\n 'ai.generateText',\n 'ai.streamText',\n 'ai.generateObject',\n 'ai.streamObject',\n 'ai.embed',\n 'ai.embedMany',\n]);\n\nexport const GENERATE_CONTENT_OPS = new Set([\n 'ai.generateText.doGenerate',\n 'ai.streamText.doStream',\n 'ai.generateObject.doGenerate',\n 'ai.streamObject.doStream',\n]);\n\nexport const EMBEDDINGS_OPS = new Set(['ai.embed.doEmbed', 'ai.embedMany.doEmbed']);\n"],"names":[],"mappings":"AAEA;AACA;MACa,eAAA,GAAkB,IAAI,GAAG;;AAEtC;AACO,MAAM,gBAAA,GAAmB,IAAI,GAAG,CAAC;AACxC,EAAE,iBAAiB;AACnB,EAAE,eAAe;AACjB,EAAE,mBAAmB;AACrB,EAAE,iBAAiB;AACnB,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,CAAC;;AAEM,MAAM,oBAAA,GAAuB,IAAI,GAAG,CAAC;AAC5C,EAAE,4BAA4B;AAC9B,EAAE,wBAAwB;AAC1B,EAAE,8BAA8B;AAChC,EAAE,0BAA0B;AAC5B,CAAC;;AAEM,MAAM,cAAA,GAAiB,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/index.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/index.js new file mode 100644 index 0000000..bc1bbce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/index.js @@ -0,0 +1,343 @@ +import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js'; +import { spanToJSON } from '../../utils/spanUtils.js'; +import { 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_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'; +import { toolCallSpanMap, INVOKE_AGENT_OPS, GENERATE_CONTENT_OPS, EMBEDDINGS_OPS } from './constants.js'; +import { accumulateTokensForParent, applyAccumulatedTokens, requestMessagesFromPrompt, getSpanOpFromName, convertAvailableToolsToJsonString } from './utils.js'; +import { 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_RESPONSE_PROVIDER_METADATA_ATTRIBUTE, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE, AI_RESPONSE_TEXT_ATTRIBUTE, AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, AI_RESPONSE_OBJECT_ATTRIBUTE, AI_TOOL_CALL_ARGS_ATTRIBUTE, AI_TOOL_CALL_RESULT_ATTRIBUTE, AI_SCHEMA_ATTRIBUTE } from './vercel-ai-attributes.js'; + +function addOriginToSpan(span, origin) { + span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin); +} + +/** + * Maps Vercel AI SDK operation names to OpenTelemetry semantic convention values + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +function mapVercelAiOperationName(operationName) { + // Top-level pipeline operations map to invoke_agent + if (INVOKE_AGENT_OPS.has(operationName)) { + return 'invoke_agent'; + } + // .do* operations are the actual LLM calls + if (GENERATE_CONTENT_OPS.has(operationName)) { + return 'generate_content'; + } + if (EMBEDDINGS_OPS.has(operationName)) { + return 'embeddings'; + } + if (operationName === 'ai.toolCall') { + return 'execute_tool'; + } + // Return the original value for unknown operations + return operationName; +} + +/** + * Post-process spans emitted by the Vercel AI SDK. + * This is supposed to be used in `client.on('spanStart', ...) + */ +function onVercelAiSpanStart(span) { + const { data: attributes, description: name } = spanToJSON(span); + + if (!name) { + return; + } + + // Tool call spans + // https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + if (attributes[AI_TOOL_CALL_NAME_ATTRIBUTE] && attributes[AI_TOOL_CALL_ID_ATTRIBUTE] && name === 'ai.toolCall') { + processToolCallSpan(span, attributes); + return; + } + + // V6+ Check if this is a Vercel AI span by checking if the operation ID attribute is present. + // V5+ Check if this is a Vercel AI span by name pattern. + if (!attributes[AI_OPERATION_ID_ATTRIBUTE] && !name.startsWith('ai.')) { + return; + } + + processGenerateSpan(span, name, attributes); +} + +function vercelAiEventProcessor(event) { + if (event.type === 'transaction' && event.spans) { + // Map to accumulate token data by parent span ID + const tokenAccumulator = new Map(); + + // First pass: process all spans and accumulate token data + for (const span of event.spans) { + processEndedVercelAiSpan(span); + + // Accumulate token data for parent spans + accumulateTokensForParent(span, tokenAccumulator); + } + + // Second pass: apply accumulated token data to parent spans + for (const span of event.spans) { + if (span.op !== 'gen_ai.invoke_agent') { + continue; + } + + applyAccumulatedTokens(span, tokenAccumulator); + } + + // Also apply to root when it is the invoke_agent pipeline + const trace = event.contexts?.trace; + if (trace && trace.op === 'gen_ai.invoke_agent') { + applyAccumulatedTokens(trace, tokenAccumulator); + } + } + + return event; +} +/** + * Post-process spans emitted by the Vercel AI SDK. + */ +function processEndedVercelAiSpan(span) { + const { data: attributes, origin } = span; + + if (origin !== 'auto.vercelai.otel') { + return; + } + + renameAttributeKey(attributes, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE); + renameAttributeKey(attributes, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE); + renameAttributeKey(attributes, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE); + + // Input tokens is the sum of prompt tokens and cached input tokens + if ( + typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number' && + typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE] === 'number' + ) { + attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = + attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] + attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE]; + } + + if ( + typeof attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] === 'number' && + typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number' + ) { + attributes[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = + attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] + attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]; + } + + // Convert the available tools array to a JSON string + if (attributes[AI_PROMPT_TOOLS_ATTRIBUTE] && Array.isArray(attributes[AI_PROMPT_TOOLS_ATTRIBUTE])) { + attributes[AI_PROMPT_TOOLS_ATTRIBUTE] = convertAvailableToolsToJsonString( + attributes[AI_PROMPT_TOOLS_ATTRIBUTE] , + ); + } + + // Rename AI SDK attributes to standardized gen_ai attributes + // Map operation.name to OpenTelemetry semantic convention values + if (attributes[OPERATION_NAME_ATTRIBUTE]) { + const operationName = mapVercelAiOperationName(attributes[OPERATION_NAME_ATTRIBUTE] ); + attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE] = operationName; + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete attributes[OPERATION_NAME_ATTRIBUTE]; + } + renameAttributeKey(attributes, AI_PROMPT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE); + renameAttributeKey(attributes, AI_RESPONSE_TEXT_ATTRIBUTE, 'gen_ai.response.text'); + renameAttributeKey(attributes, AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, 'gen_ai.response.tool_calls'); + renameAttributeKey(attributes, AI_RESPONSE_OBJECT_ATTRIBUTE, 'gen_ai.response.object'); + renameAttributeKey(attributes, AI_PROMPT_TOOLS_ATTRIBUTE, 'gen_ai.request.available_tools'); + + renameAttributeKey(attributes, AI_TOOL_CALL_ARGS_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE); + renameAttributeKey(attributes, AI_TOOL_CALL_RESULT_ATTRIBUTE, GEN_AI_TOOL_OUTPUT_ATTRIBUTE); + + renameAttributeKey(attributes, AI_SCHEMA_ATTRIBUTE, 'gen_ai.request.schema'); + renameAttributeKey(attributes, AI_MODEL_ID_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE); + + addProviderMetadataToAttributes(attributes); + + // Change attributes namespaced with `ai.X` to `vercel.ai.X` + for (const key of Object.keys(attributes)) { + if (key.startsWith('ai.')) { + renameAttributeKey(attributes, key, `vercel.${key}`); + } + } +} + +/** + * Renames an attribute key in the provided attributes object if the old key exists. + * This function safely handles null and undefined values. + */ +function renameAttributeKey(attributes, oldKey, newKey) { + if (attributes[oldKey] != null) { + attributes[newKey] = attributes[oldKey]; + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete attributes[oldKey]; + } +} + +function processToolCallSpan(span, attributes) { + addOriginToSpan(span, 'auto.vercelai.otel'); + span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'gen_ai.execute_tool'); + span.setAttribute(GEN_AI_OPERATION_NAME_ATTRIBUTE, 'execute_tool'); + renameAttributeKey(attributes, AI_TOOL_CALL_NAME_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE); + renameAttributeKey(attributes, AI_TOOL_CALL_ID_ATTRIBUTE, GEN_AI_TOOL_CALL_ID_ATTRIBUTE); + + // Store the span in our global map using the tool call ID + // This allows us to capture tool errors and link them to the correct span + const toolCallId = attributes[GEN_AI_TOOL_CALL_ID_ATTRIBUTE]; + + if (typeof toolCallId === 'string') { + toolCallSpanMap.set(toolCallId, span); + } + + // https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-type + if (!attributes[GEN_AI_TOOL_TYPE_ATTRIBUTE]) { + span.setAttribute(GEN_AI_TOOL_TYPE_ATTRIBUTE, 'function'); + } + const toolName = attributes[GEN_AI_TOOL_NAME_ATTRIBUTE]; + if (toolName) { + span.updateName(`execute_tool ${toolName}`); + } +} + +function processGenerateSpan(span, name, attributes) { + addOriginToSpan(span, 'auto.vercelai.otel'); + + const nameWthoutAi = name.replace('ai.', ''); + span.setAttribute('ai.pipeline.name', nameWthoutAi); + span.updateName(nameWthoutAi); + + // If a telemetry name is set and the span represents a pipeline, use it as the operation name. + // This name can be set at the request level by adding `experimental_telemetry.functionId`. + const functionId = attributes[AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE]; + if (functionId && typeof functionId === 'string') { + span.updateName(`${nameWthoutAi} ${functionId}`); + span.setAttribute('gen_ai.function_id', functionId); + } + + requestMessagesFromPrompt(span, attributes); + + if (attributes[AI_MODEL_ID_ATTRIBUTE] && !attributes[GEN_AI_RESPONSE_MODEL_ATTRIBUTE]) { + span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, attributes[AI_MODEL_ID_ATTRIBUTE]); + } + span.setAttribute('ai.streaming', name.includes('stream')); + + // Set the op based on the span name + const op = getSpanOpFromName(name); + if (op) { + span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op); + } + + // Update span names for .do* spans to include the model ID (only if model ID exists) + const modelId = attributes[AI_MODEL_ID_ATTRIBUTE]; + if (modelId) { + switch (name) { + case 'ai.generateText.doGenerate': + span.updateName(`generate_text ${modelId}`); + break; + case 'ai.streamText.doStream': + span.updateName(`stream_text ${modelId}`); + break; + case 'ai.generateObject.doGenerate': + span.updateName(`generate_object ${modelId}`); + break; + case 'ai.streamObject.doStream': + span.updateName(`stream_object ${modelId}`); + break; + case 'ai.embed.doEmbed': + span.updateName(`embed ${modelId}`); + break; + case 'ai.embedMany.doEmbed': + span.updateName(`embed_many ${modelId}`); + break; + } + } +} + +/** + * Add event processors to the given client to process Vercel AI spans. + */ +function addVercelAiProcessors(client) { + client.on('spanStart', onVercelAiSpanStart); + // Note: We cannot do this on `spanEnd`, because the span cannot be mutated anymore at this point + client.addEventProcessor(Object.assign(vercelAiEventProcessor, { id: 'VercelAiEventProcessor' })); +} + +function addProviderMetadataToAttributes(attributes) { + const providerMetadata = attributes[AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE] ; + if (providerMetadata) { + try { + const providerMetadataObject = JSON.parse(providerMetadata) ; + + // Handle OpenAI metadata (v5 uses 'openai', v6 Azure Responses API uses 'azure') + const openaiMetadata = + providerMetadataObject.openai ?? providerMetadataObject.azure; + if (openaiMetadata) { + setAttributeIfDefined( + attributes, + GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, + openaiMetadata.cachedPromptTokens, + ); + setAttributeIfDefined(attributes, 'gen_ai.usage.output_tokens.reasoning', openaiMetadata.reasoningTokens); + setAttributeIfDefined( + attributes, + 'gen_ai.usage.output_tokens.prediction_accepted', + openaiMetadata.acceptedPredictionTokens, + ); + setAttributeIfDefined( + attributes, + 'gen_ai.usage.output_tokens.prediction_rejected', + openaiMetadata.rejectedPredictionTokens, + ); + setAttributeIfDefined(attributes, 'gen_ai.conversation.id', openaiMetadata.responseId); + } + + if (providerMetadataObject.anthropic) { + const cachedInputTokens = + providerMetadataObject.anthropic.usage?.cache_read_input_tokens ?? + providerMetadataObject.anthropic.cacheReadInputTokens; + setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, cachedInputTokens); + + const cacheWriteInputTokens = + providerMetadataObject.anthropic.usage?.cache_creation_input_tokens ?? + providerMetadataObject.anthropic.cacheCreationInputTokens; + setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, cacheWriteInputTokens); + } + + if (providerMetadataObject.bedrock?.usage) { + setAttributeIfDefined( + attributes, + GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, + providerMetadataObject.bedrock.usage.cacheReadInputTokens, + ); + setAttributeIfDefined( + attributes, + GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, + providerMetadataObject.bedrock.usage.cacheWriteInputTokens, + ); + } + + if (providerMetadataObject.deepseek) { + setAttributeIfDefined( + attributes, + GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, + providerMetadataObject.deepseek.promptCacheHitTokens, + ); + setAttributeIfDefined( + attributes, + 'gen_ai.usage.input_tokens.cache_miss', + providerMetadataObject.deepseek.promptCacheMissTokens, + ); + } + } catch { + // Ignore + } + } +} + +/** + * Sets an attribute only if the value is not null or undefined. + */ +function setAttributeIfDefined(attributes, key, value) { + if (value != null) { + attributes[key] = value; + } +} + +export { addVercelAiProcessors }; +//# sourceMappingURL=index.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/index.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/index.js.map new file mode 100644 index 0000000..def9e21 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/tracing/vercel-ai/index.ts"],"sourcesContent":["import type { Client } from '../../client';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport type { Event } from '../../types-hoist/event';\nimport type { Span, SpanAttributes, SpanAttributeValue, SpanJSON, SpanOrigin } from '../../types-hoist/span';\nimport { spanToJSON } from '../../utils/spanUtils';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_TOOL_CALL_ID_ATTRIBUTE,\n GEN_AI_TOOL_INPUT_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_TOOL_OUTPUT_ATTRIBUTE,\n GEN_AI_TOOL_TYPE_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { EMBEDDINGS_OPS, GENERATE_CONTENT_OPS, INVOKE_AGENT_OPS, toolCallSpanMap } from './constants';\nimport type { TokenSummary } from './types';\nimport {\n accumulateTokensForParent,\n applyAccumulatedTokens,\n convertAvailableToolsToJsonString,\n getSpanOpFromName,\n requestMessagesFromPrompt,\n} from './utils';\nimport type { OpenAiProviderMetadata, ProviderMetadata } from './vercel-ai-attributes';\nimport {\n AI_MODEL_ID_ATTRIBUTE,\n AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT_MESSAGES_ATTRIBUTE,\n AI_PROMPT_TOOLS_ATTRIBUTE,\n AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE,\n AI_RESPONSE_TEXT_ATTRIBUTE,\n AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n AI_SCHEMA_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TOOL_CALL_ARGS_ATTRIBUTE,\n AI_TOOL_CALL_ID_ATTRIBUTE,\n AI_TOOL_CALL_NAME_ATTRIBUTE,\n AI_TOOL_CALL_RESULT_ATTRIBUTE,\n AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n OPERATION_NAME_ATTRIBUTE,\n} from './vercel-ai-attributes';\n\nfunction addOriginToSpan(span: Span, origin: SpanOrigin): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n}\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: string): string {\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 (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: Span): void {\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: Event): Event {\n if (event.type === 'transaction' && event.spans) {\n // Map to accumulate token data by parent span ID\n const tokenAccumulator: Map = 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 accumulated token data to parent spans\n for (const span of event.spans) {\n if (span.op !== 'gen_ai.invoke_agent') {\n continue;\n }\n\n applyAccumulatedTokens(span, tokenAccumulator);\n }\n\n // Also apply to root when it is the invoke_agent pipeline\n const trace = event.contexts?.trace;\n if (trace && trace.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(trace, tokenAccumulator);\n }\n }\n\n return event;\n}\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n */\nfunction processEndedVercelAiSpan(span: SpanJSON): void {\n const { data: attributes, origin } = span;\n\n if (origin !== 'auto.vercelai.otel') {\n return;\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 // 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 if (\n typeof attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] === 'number' &&\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number'\n ) {\n attributes[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] =\n attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] + 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] as unknown[],\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] as string);\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 renameAttributeKey(attributes, AI_RESPONSE_TEXT_ATTRIBUTE, 'gen_ai.response.text');\n renameAttributeKey(attributes, AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, 'gen_ai.response.tool_calls');\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 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: Record, oldKey: string, newKey: string): void {\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: Span, attributes: SpanAttributes): void {\n addOriginToSpan(span, '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 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 const toolCallId = attributes[GEN_AI_TOOL_CALL_ID_ATTRIBUTE];\n\n if (typeof toolCallId === 'string') {\n toolCallSpanMap.set(toolCallId, span);\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: Span, name: string, attributes: SpanAttributes): void {\n addOriginToSpan(span, 'auto.vercelai.otel');\n\n const nameWthoutAi = name.replace('ai.', '');\n span.setAttribute('ai.pipeline.name', nameWthoutAi);\n span.updateName(nameWthoutAi);\n\n // If a telemetry name is set and the span represents a pipeline, use it as the operation name.\n // This name can be set at the request level by adding `experimental_telemetry.functionId`.\n const functionId = attributes[AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE];\n if (functionId && typeof functionId === 'string') {\n span.updateName(`${nameWthoutAi} ${functionId}`);\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 // Update span names for .do* spans to include the model ID (only if model ID exists)\n const modelId = attributes[AI_MODEL_ID_ATTRIBUTE];\n if (modelId) {\n switch (name) {\n case 'ai.generateText.doGenerate':\n span.updateName(`generate_text ${modelId}`);\n break;\n case 'ai.streamText.doStream':\n span.updateName(`stream_text ${modelId}`);\n break;\n case 'ai.generateObject.doGenerate':\n span.updateName(`generate_object ${modelId}`);\n break;\n case 'ai.streamObject.doStream':\n span.updateName(`stream_object ${modelId}`);\n break;\n case 'ai.embed.doEmbed':\n span.updateName(`embed ${modelId}`);\n break;\n case 'ai.embedMany.doEmbed':\n span.updateName(`embed_many ${modelId}`);\n break;\n }\n }\n}\n\n/**\n * Add event processors to the given client to process Vercel AI spans.\n */\nexport function addVercelAiProcessors(client: Client): void {\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: SpanAttributes): void {\n const providerMetadata = attributes[AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE] as string | undefined;\n if (providerMetadata) {\n try {\n const providerMetadataObject = JSON.parse(providerMetadata) as ProviderMetadata;\n\n // Handle OpenAI metadata (v5 uses 'openai', v6 Azure Responses API uses 'azure')\n const openaiMetadata: OpenAiProviderMetadata | undefined =\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 setAttributeIfDefined(attributes, 'gen_ai.conversation.id', openaiMetadata.responseId);\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: SpanAttributes, key: string, value: SpanAttributeValue | undefined): void {\n if (value != null) {\n attributes[key] = value;\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/utils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/utils.js new file mode 100644 index 0000000..6c05fa1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/utils.js @@ -0,0 +1,200 @@ +import { GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_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_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 } from '../ai/gen-ai-attributes.js'; +import { getTruncatedJsonString, extractSystemInstructions } from '../ai/utils.js'; +import { toolCallSpanMap } from './constants.js'; +import { AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE } from './vercel-ai-attributes.js'; + +/** + * Accumulates token data from a span to its parent in the token accumulator map. + * This function extracts token usage from the current span and adds it to the + * accumulated totals for its parent span. + */ +function accumulateTokensForParent(span, tokenAccumulator) { + const parentSpanId = span.parent_span_id; + if (!parentSpanId) { + return; + } + + const inputTokens = span.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]; + const outputTokens = span.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]; + + if (typeof inputTokens === 'number' || typeof outputTokens === 'number') { + const existing = tokenAccumulator.get(parentSpanId) || { inputTokens: 0, outputTokens: 0 }; + + if (typeof inputTokens === 'number') { + existing.inputTokens += inputTokens; + } + if (typeof outputTokens === 'number') { + existing.outputTokens += outputTokens; + } + + tokenAccumulator.set(parentSpanId, existing); + } +} + +/** + * Applies accumulated token data to the `gen_ai.invoke_agent` span. + * Only immediate children of the `gen_ai.invoke_agent` span are considered, + * since aggregation will automatically occur for each parent span. + */ +function applyAccumulatedTokens( + spanOrTrace, + tokenAccumulator, +) { + const accumulated = tokenAccumulator.get(spanOrTrace.span_id); + if (!accumulated || !spanOrTrace.data) { + return; + } + + if (accumulated.inputTokens > 0) { + spanOrTrace.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = accumulated.inputTokens; + } + if (accumulated.outputTokens > 0) { + spanOrTrace.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = accumulated.outputTokens; + } + if (accumulated.inputTokens > 0 || accumulated.outputTokens > 0) { + spanOrTrace.data['gen_ai.usage.total_tokens'] = accumulated.inputTokens + accumulated.outputTokens; + } +} + +/** + * Get the span associated with a tool call ID + */ +function _INTERNAL_getSpanForToolCallId(toolCallId) { + return toolCallSpanMap.get(toolCallId); +} + +/** + * Clean up the span mapping for a tool call ID + */ +function _INTERNAL_cleanupToolCallSpan(toolCallId) { + toolCallSpanMap.delete(toolCallId); +} + +/** + * Convert an array of tool strings to a JSON string + */ +function convertAvailableToolsToJsonString(tools) { + const toolObjects = tools.map(tool => { + if (typeof tool === 'string') { + try { + return JSON.parse(tool); + } catch { + return tool; + } + } + return tool; + }); + return JSON.stringify(toolObjects); +} + +/** + * Convert the prompt string to messages array + */ +function convertPromptToMessages(prompt) { + try { + const p = JSON.parse(prompt); + if (!!p && typeof p === 'object') { + const { prompt, system } = p; + if (typeof prompt === 'string' || typeof system === 'string') { + const messages = []; + if (typeof system === 'string') { + messages.push({ role: 'system', content: system }); + } + if (typeof prompt === 'string') { + messages.push({ role: 'user', content: prompt }); + } + return messages; + } + } + // eslint-disable-next-line no-empty + } catch {} + return []; +} + +/** + * Generate a request.messages JSON array from the prompt field in the + * invoke_agent op + */ +function requestMessagesFromPrompt(span, attributes) { + if (attributes[AI_PROMPT_ATTRIBUTE]) { + const truncatedPrompt = getTruncatedJsonString(attributes[AI_PROMPT_ATTRIBUTE] ); + span.setAttribute('gen_ai.prompt', truncatedPrompt); + } + const prompt = attributes[AI_PROMPT_ATTRIBUTE]; + if ( + typeof prompt === 'string' && + !attributes[GEN_AI_INPUT_MESSAGES_ATTRIBUTE] && + !attributes[AI_PROMPT_MESSAGES_ATTRIBUTE] + ) { + const messages = convertPromptToMessages(prompt); + if (messages.length) { + const { systemInstructions, filteredMessages } = extractSystemInstructions(messages); + + if (systemInstructions) { + span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0; + span.setAttributes({ + [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages), + [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength, + }); + } + } else if (typeof attributes[AI_PROMPT_MESSAGES_ATTRIBUTE] === 'string') { + try { + const messages = JSON.parse(attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]); + if (Array.isArray(messages)) { + const { systemInstructions, filteredMessages } = extractSystemInstructions(messages); + + if (systemInstructions) { + span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions); + } + + const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0; + span.setAttributes({ + [AI_PROMPT_MESSAGES_ATTRIBUTE]: undefined, + [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages), + [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength, + }); + } + // eslint-disable-next-line no-empty + } catch {} + } +} + +/** + * Maps a Vercel AI span name to the corresponding Sentry op. + */ +function getSpanOpFromName(name) { + switch (name) { + case 'ai.generateText': + case 'ai.streamText': + case 'ai.generateObject': + case 'ai.streamObject': + case 'ai.embed': + case 'ai.embedMany': + return GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE; + case 'ai.generateText.doGenerate': + return GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE; + case 'ai.streamText.doStream': + return GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE; + case 'ai.generateObject.doGenerate': + return GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE; + case 'ai.streamObject.doStream': + return GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE; + case 'ai.embed.doEmbed': + return GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE; + case 'ai.embedMany.doEmbed': + return GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE; + case 'ai.toolCall': + return GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE; + default: + if (name.startsWith('ai.stream')) { + return 'ai.run'; + } + return undefined; + } +} + +export { _INTERNAL_cleanupToolCallSpan, _INTERNAL_getSpanForToolCallId, accumulateTokensForParent, applyAccumulatedTokens, convertAvailableToolsToJsonString, convertPromptToMessages, getSpanOpFromName, requestMessagesFromPrompt }; +//# sourceMappingURL=utils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/utils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/utils.js.map new file mode 100644 index 0000000..08fc5df --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../../../src/tracing/vercel-ai/utils.ts"],"sourcesContent":["import type { TraceContext } from '../../types-hoist/context';\nimport type { Span, SpanAttributes, SpanJSON } from '../../types-hoist/span';\nimport {\n GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE,\n GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE,\n GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE,\n GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE,\n GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE,\n GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport { toolCallSpanMap } from './constants';\nimport type { TokenSummary } from './types';\nimport { AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE } from './vercel-ai-attributes';\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 */\nexport function accumulateTokensForParent(span: SpanJSON, tokenAccumulator: Map): void {\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 */\nexport function applyAccumulatedTokens(\n spanOrTrace: SpanJSON | TraceContext,\n tokenAccumulator: Map,\n): void {\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 * Get the span associated with a tool call ID\n */\nexport function _INTERNAL_getSpanForToolCallId(toolCallId: string): Span | undefined {\n return toolCallSpanMap.get(toolCallId);\n}\n\n/**\n * Clean up the span mapping for a tool call ID\n */\nexport function _INTERNAL_cleanupToolCallSpan(toolCallId: string): void {\n toolCallSpanMap.delete(toolCallId);\n}\n\n/**\n * Convert an array of tool strings to a JSON string\n */\nexport function convertAvailableToolsToJsonString(tools: unknown[]): string {\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 * Convert the prompt string to messages array\n */\nexport function convertPromptToMessages(prompt: string): { role: string; content: string }[] {\n try {\n const p = JSON.parse(prompt);\n if (!!p && typeof p === 'object') {\n const { prompt, system } = p;\n if (typeof prompt === 'string' || typeof system === 'string') {\n const messages: { role: string; content: string }[] = [];\n if (typeof system === 'string') {\n messages.push({ role: 'system', content: system });\n }\n if (typeof prompt === 'string') {\n messages.push({ role: 'user', content: prompt });\n }\n return messages;\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 */\nexport function requestMessagesFromPrompt(span: Span, attributes: SpanAttributes): void {\n if (attributes[AI_PROMPT_ATTRIBUTE]) {\n const truncatedPrompt = getTruncatedJsonString(attributes[AI_PROMPT_ATTRIBUTE] as string | string[]);\n span.setAttribute('gen_ai.prompt', truncatedPrompt);\n }\n const prompt = attributes[AI_PROMPT_ATTRIBUTE];\n if (\n typeof prompt === 'string' &&\n !attributes[GEN_AI_INPUT_MESSAGES_ATTRIBUTE] &&\n !attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]\n ) {\n const messages = convertPromptToMessages(prompt);\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 span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n } else if (typeof attributes[AI_PROMPT_MESSAGES_ATTRIBUTE] === 'string') {\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 span.setAttributes({\n [AI_PROMPT_MESSAGES_ATTRIBUTE]: undefined,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages),\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 */\nexport function getSpanOpFromName(name: string): string | undefined {\n switch (name) {\n case 'ai.generateText':\n case 'ai.streamText':\n case 'ai.generateObject':\n case 'ai.streamObject':\n case 'ai.embed':\n case 'ai.embedMany':\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.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"],"names":[],"mappings":";;;;;AAsBA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,IAAI,EAAY,gBAAgB,EAAmC;AAC7G,EAAE,MAAM,YAAA,GAAe,IAAI,CAAC,cAAc;AAC1C,EAAE,IAAI,CAAC,YAAY,EAAE;AACrB,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,cAAc,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC;AACpE,EAAE,MAAM,eAAe,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC;;AAEtE,EAAE,IAAI,OAAO,WAAA,KAAgB,QAAA,IAAY,OAAO,YAAA,KAAiB,QAAQ,EAAE;AAC3E,IAAI,MAAM,QAAA,GAAW,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAA,IAAK,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG;;AAE9F,IAAI,IAAI,OAAO,WAAA,KAAgB,QAAQ,EAAE;AACzC,MAAM,QAAQ,CAAC,WAAA,IAAe,WAAW;AACzC,IAAI;AACJ,IAAI,IAAI,OAAO,YAAA,KAAiB,QAAQ,EAAE;AAC1C,MAAM,QAAQ,CAAC,YAAA,IAAgB,YAAY;AAC3C,IAAI;;AAEJ,IAAI,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC;AAChD,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,sBAAsB;AACtC,EAAE,WAAW;AACb,EAAE,gBAAgB;AAClB,EAAQ;AACR,EAAE,MAAM,WAAA,GAAc,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC;AAC/D,EAAE,IAAI,CAAC,WAAA,IAAe,CAAC,WAAW,CAAC,IAAI,EAAE;AACzC,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,WAAW,CAAC,WAAA,GAAc,CAAC,EAAE;AACnC,IAAI,WAAW,CAAC,IAAI,CAAC,mCAAmC,CAAA,GAAI,WAAW,CAAC,WAAW;AACnF,EAAE;AACF,EAAE,IAAI,WAAW,CAAC,YAAA,GAAe,CAAC,EAAE;AACpC,IAAI,WAAW,CAAC,IAAI,CAAC,oCAAoC,CAAA,GAAI,WAAW,CAAC,YAAY;AACrF,EAAE;AACF,EAAE,IAAI,WAAW,CAAC,WAAA,GAAc,CAAA,IAAK,WAAW,CAAC,YAAA,GAAe,CAAC,EAAE;AACnE,IAAI,WAAW,CAAC,IAAI,CAAC,2BAA2B,CAAA,GAAI,WAAW,CAAC,WAAA,GAAc,WAAW,CAAC,YAAY;AACtG,EAAE;AACF;;AAEA;AACA;AACA;AACO,SAAS,8BAA8B,CAAC,UAAU,EAA4B;AACrF,EAAE,OAAO,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;AACxC;;AAEA;AACA;AACA;AACO,SAAS,6BAA6B,CAAC,UAAU,EAAgB;AACxE,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;AACpC;;AAEA;AACA;AACA;AACO,SAAS,iCAAiC,CAAC,KAAK,EAAqB;AAC5E,EAAE,MAAM,cAAc,KAAK,CAAC,GAAG,CAAC,QAAQ;AACxC,IAAI,IAAI,OAAO,IAAA,KAAS,QAAQ,EAAE;AAClC,MAAM,IAAI;AACV,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/B,MAAM,EAAE,MAAM;AACd,QAAQ,OAAO,IAAI;AACnB,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AACpC;;AAEA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,MAAM,EAA+C;AAC7F,EAAE,IAAI;AACN,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAChC,IAAI,IAAI,CAAC,CAAC,CAAA,IAAK,OAAO,CAAA,KAAM,QAAQ,EAAE;AACtC,MAAM,MAAM,EAAE,MAAM,EAAE,MAAA,EAAO,GAAI,CAAC;AAClC,MAAM,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,OAAO,MAAA,KAAW,QAAQ,EAAE;AACpE,QAAQ,MAAM,QAAQ,GAAwC,EAAE;AAChE,QAAQ,IAAI,OAAO,MAAA,KAAW,QAAQ,EAAE;AACxC,UAAU,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAA,EAAQ,CAAC;AAC5D,QAAQ;AACR,QAAQ,IAAI,OAAO,MAAA,KAAW,QAAQ,EAAE;AACxC,UAAU,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAA,EAAQ,CAAC;AAC1D,QAAQ;AACR,QAAQ,OAAO,QAAQ;AACvB,MAAM;AACN,IAAI;AACJ;AACA,EAAE,CAAA,CAAE,MAAM,CAAC;AACX,EAAE,OAAO,EAAE;AACX;;AAEA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,IAAI,EAAQ,UAAU,EAAwB;AACxF,EAAE,IAAI,UAAU,CAAC,mBAAmB,CAAC,EAAE;AACvC,IAAI,MAAM,kBAAkB,sBAAsB,CAAC,UAAU,CAAC,mBAAmB,CAAA,EAAuB;AACxG,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,eAAe,CAAC;AACvD,EAAE;AACF,EAAE,MAAM,MAAA,GAAS,UAAU,CAAC,mBAAmB,CAAC;AAChD,EAAE;AACF,IAAI,OAAO,MAAA,KAAW,QAAA;AACtB,IAAI,CAAC,UAAU,CAAC,+BAA+B,CAAA;AAC/C,IAAI,CAAC,UAAU,CAAC,4BAA4B;AAC5C,IAAI;AACJ,IAAI,MAAM,QAAA,GAAW,uBAAuB,CAAC,MAAM,CAAC;AACpD,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE;AACzB,MAAM,MAAM,EAAE,kBAAkB,EAAE,gBAAA,KAAqB,yBAAyB,CAAC,QAAQ,CAAC;;AAE1F,MAAM,IAAI,kBAAkB,EAAE;AAC9B,QAAQ,IAAI,CAAC,YAAY,CAAC,oCAAoC,EAAE,kBAAkB,CAAC;AACnF,MAAM;;AAEN,MAAM,MAAM,cAAA,GAAiB,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAA,GAAI,gBAAgB,CAAC,MAAA,GAAS,CAAC;AAC1F,MAAM,IAAI,CAAC,aAAa,CAAC;AACzB,QAAQ,CAAC,+BAA+B,GAAG,sBAAsB,CAAC,gBAAgB,CAAC;AACnF,QAAQ,CAAC,+CAA+C,GAAG,cAAc;AACzE,OAAO,CAAC;AACR,IAAI;AACJ,EAAE,CAAA,MAAO,IAAI,OAAO,UAAU,CAAC,4BAA4B,CAAA,KAAM,QAAQ,EAAE;AAC3E,IAAI,IAAI;AACR,MAAM,MAAM,QAAA,GAAW,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC;AAC3E,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACnC,QAAQ,MAAM,EAAE,kBAAkB,EAAE,gBAAA,KAAqB,yBAAyB,CAAC,QAAQ,CAAC;;AAE5F,QAAQ,IAAI,kBAAkB,EAAE;AAChC,UAAU,IAAI,CAAC,YAAY,CAAC,oCAAoC,EAAE,kBAAkB,CAAC;AACrF,QAAQ;;AAER,QAAQ,MAAM,cAAA,GAAiB,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAA,GAAI,gBAAgB,CAAC,MAAA,GAAS,CAAC;AAC5F,QAAQ,IAAI,CAAC,aAAa,CAAC;AAC3B,UAAU,CAAC,4BAA4B,GAAG,SAAS;AACnD,UAAU,CAAC,+BAA+B,GAAG,sBAAsB,CAAC,gBAAgB,CAAC;AACrF,UAAU,CAAC,+CAA+C,GAAG,cAAc;AAC3E,SAAS,CAAC;AACV,MAAM;AACN;AACA,IAAI,CAAA,CAAE,MAAM,CAAC;AACb,EAAE;AACF;;AAEA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,IAAI,EAA8B;AACpE,EAAE,QAAQ,IAAI;AACd,IAAI,KAAK,iBAAiB;AAC1B,IAAI,KAAK,eAAe;AACxB,IAAI,KAAK,mBAAmB;AAC5B,IAAI,KAAK,iBAAiB;AAC1B,IAAI,KAAK,UAAU;AACnB,IAAI,KAAK,cAAc;AACvB,MAAM,OAAO,uCAAuC;AACpD,IAAI,KAAK,4BAA4B;AACrC,MAAM,OAAO,oDAAoD;AACjE,IAAI,KAAK,wBAAwB;AACjC,MAAM,OAAO,gDAAgD;AAC7D,IAAI,KAAK,8BAA8B;AACvC,MAAM,OAAO,sDAAsD;AACnE,IAAI,KAAK,0BAA0B;AACnC,MAAM,OAAO,kDAAkD;AAC/D,IAAI,KAAK,kBAAkB;AAC3B,MAAM,OAAO,yCAAyC;AACtD,IAAI,KAAK,sBAAsB;AAC/B,MAAM,OAAO,8CAA8C;AAC3D,IAAI,KAAK,aAAa;AACtB,MAAM,OAAO,uCAAuC;AACpD,IAAI;AACJ,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AACxC,QAAQ,OAAO,QAAQ;AACvB,MAAM;AACN,MAAM,OAAO,SAAS;AACtB;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/vercel-ai-attributes.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/vercel-ai-attributes.js new file mode 100644 index 0000000..823beb8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/vercel-ai-attributes.js @@ -0,0 +1,198 @@ +/* eslint-disable max-lines */ +/** + * AI SDK Telemetry Attributes + * Based on https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data + */ + +// ============================================================================= +// COMMON ATTRIBUTES +// ============================================================================= + +/** + * Common attribute for operation name across all functions and spans + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data + */ +const OPERATION_NAME_ATTRIBUTE = 'operation.name'; + +/** + * Common attribute for AI operation ID across all functions and spans + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data + */ +const AI_OPERATION_ID_ATTRIBUTE = 'ai.operationId'; + +// ============================================================================= +// SHARED ATTRIBUTES +// ============================================================================= + +/** + * `generateText` function - `ai.generateText` span + * `streamText` function - `ai.streamText` span + * + * The prompt that was used when calling the function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function + */ +const AI_PROMPT_ATTRIBUTE = 'ai.prompt'; + +/** + * `generateObject` function - `ai.generateObject` span + * `streamObject` function - `ai.streamObject` span + * + * The JSON schema version of the schema that was passed into the function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +const AI_SCHEMA_ATTRIBUTE = 'ai.schema'; + +/** + * `generateObject` function - `ai.generateObject` span + * `streamObject` function - `ai.streamObject` span + * + * The object that was generated (stringified JSON) + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +const AI_RESPONSE_OBJECT_ATTRIBUTE = 'ai.response.object'; + +// ============================================================================= +// GENERATETEXT FUNCTION - UNIQUE ATTRIBUTES +// ============================================================================= + +/** + * `generateText` function - `ai.generateText` span + * + * The text that was generated + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +const AI_RESPONSE_TEXT_ATTRIBUTE = 'ai.response.text'; + +/** + * `generateText` function - `ai.generateText` span + * + * The tool calls that were made as part of the generation (stringified JSON) + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +const AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'ai.response.toolCalls'; + +/** + * `generateText` function - `ai.generateText.doGenerate` span + * + * The messages that were passed into the provider + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +const AI_PROMPT_MESSAGES_ATTRIBUTE = 'ai.prompt.messages'; + +/** + * `generateText` function - `ai.generateText.doGenerate` span + * + * Array of stringified tool definitions + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +const AI_PROMPT_TOOLS_ATTRIBUTE = 'ai.prompt.tools'; + +/** + * Basic LLM span information + * Multiple spans + * + * The id of the model + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_MODEL_ID_ATTRIBUTE = 'ai.model.id'; + +/** + * Basic LLM span information + * Multiple spans + * + * Provider specific metadata returned with the generation response + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = 'ai.response.providerMetadata'; + +/** + * Basic LLM span information + * Multiple spans + * + * The number of cached input tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE = 'ai.usage.cachedInputTokens'; +/** + * Basic LLM span information + * Multiple spans + * + * The functionId that was set through `telemetry.functionId` + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = 'ai.telemetry.functionId'; + +/** + * Basic LLM span information + * Multiple spans + * + * The number of completion tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'ai.usage.completionTokens'; + +/** + * Basic LLM span information + * Multiple spans + * + * The number of prompt tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +const AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'ai.usage.promptTokens'; + +// ============================================================================= +// TOOL CALL SPANS +// ============================================================================= + +/** + * Tool call spans + * `ai.toolCall` span + * + * The name of the tool + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +const AI_TOOL_CALL_NAME_ATTRIBUTE = 'ai.toolCall.name'; + +/** + * Tool call spans + * `ai.toolCall` span + * + * The id of the tool call + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +const AI_TOOL_CALL_ID_ATTRIBUTE = 'ai.toolCall.id'; + +/** + * Tool call spans + * `ai.toolCall` span + * + * The parameters of the tool call + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +const AI_TOOL_CALL_ARGS_ATTRIBUTE = 'ai.toolCall.args'; + +/** + * Tool call spans + * `ai.toolCall` span + * + * The result of the tool call + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +const AI_TOOL_CALL_RESULT_ATTRIBUTE = 'ai.toolCall.result'; + +// ============================================================================= +// PROVIDER METADATA +// ============================================================================= + +/** + * OpenAI Provider Metadata + * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai + * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/openai-chat-language-model.ts#L397-L416 + * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/responses/openai-responses-language-model.ts#L377C7-L384 + */ + +export { AI_MODEL_ID_ATTRIBUTE, AI_OPERATION_ID_ATTRIBUTE, AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE, AI_PROMPT_TOOLS_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, OPERATION_NAME_ATTRIBUTE }; +//# sourceMappingURL=vercel-ai-attributes.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/vercel-ai-attributes.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/vercel-ai-attributes.js.map new file mode 100644 index 0000000..6876992 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/tracing/vercel-ai/vercel-ai-attributes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vercel-ai-attributes.js","sources":["../../../../src/tracing/vercel-ai/vercel-ai-attributes.ts"],"sourcesContent":["/* 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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const AI_SCHEMA_ATTRIBUTE = 'ai.schema';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The name 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 */\nexport const AI_SCHEMA_NAME_ATTRIBUTE = 'ai.schema.name';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The description 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 */\nexport const AI_SCHEMA_DESCRIPTION_ATTRIBUTE = 'ai.schema.description';\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 */\nexport const AI_RESPONSE_OBJECT_ATTRIBUTE = 'ai.response.object';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The object generation mode, e.g. `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 */\nexport const AI_SETTINGS_MODE_ATTRIBUTE = 'ai.settings.mode';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The output type that was used, e.g. `object` or `no-schema`\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 */\nexport const AI_SETTINGS_OUTPUT_ATTRIBUTE = 'ai.settings.output';\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 */\nexport const AI_VALUES_ATTRIBUTE = 'ai.values';\n\n/**\n * `embed` function - `ai.embed.doEmbed` span\n * `embedMany` function - `ai.embedMany` span\n *\n * An array of JSON-stringified embeddings\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 */\nexport const AI_EMBEDDINGS_ATTRIBUTE = 'ai.embeddings';\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 */\nexport const 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 */\nexport const 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 */\nexport const AI_RESPONSE_FINISH_REASON_ATTRIBUTE = 'ai.response.finishReason';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The maximum number of steps that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_SETTINGS_MAX_STEPS_ATTRIBUTE = 'ai.settings.maxSteps';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The format of the prompt\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_FORMAT_ATTRIBUTE = 'ai.prompt.format';\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 */\nexport const 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 */\nexport const AI_PROMPT_TOOLS_ATTRIBUTE = 'ai.prompt.tools';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The stringified tool choice setting (JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_TOOL_CHOICE_ATTRIBUTE = 'ai.prompt.toolChoice';\n\n// =============================================================================\n// STREAMTEXT FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The time it took to receive the first chunk in milliseconds\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE = 'ai.response.msToFirstChunk';\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The time it took to receive the finish part of the LLM stream in milliseconds\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE = 'ai.response.msToFinish';\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The average completion tokens per second\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE = 'ai.response.avgCompletionTokensPerSecond';\n\n// =============================================================================\n// EMBED FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `embed` function - `ai.embed` span\n *\n * The value that was passed into the `embed` function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_VALUE_ATTRIBUTE = 'ai.value';\n\n/**\n * `embed` function - `ai.embed` span\n *\n * A JSON-stringified embedding\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBEDDING_ATTRIBUTE = 'ai.embedding';\n\n// =============================================================================\n// BASIC LLM SPAN INFORMATION\n// =============================================================================\n\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 */\nexport const RESOURCE_NAME_ATTRIBUTE = 'resource.name';\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 */\nexport const AI_MODEL_ID_ATTRIBUTE = 'ai.model.id';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The provider of the model\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_MODEL_PROVIDER_ATTRIBUTE = 'ai.model.provider';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The request headers that were passed in through `headers`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_REQUEST_HEADERS_ATTRIBUTE = 'ai.request.headers';\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 */\nexport const AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = 'ai.response.providerMetadata';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The maximum number of retries that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_SETTINGS_MAX_RETRIES_ATTRIBUTE = 'ai.settings.maxRetries';\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 */\nexport const 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 */\nexport const AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = 'ai.telemetry.functionId';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The metadata that was passed in through `telemetry.metadata`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_TELEMETRY_METADATA_ATTRIBUTE = 'ai.telemetry.metadata';\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 */\nexport const 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 */\nexport const AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'ai.usage.promptTokens';\n\n// =============================================================================\n// CALL LLM SPAN INFORMATION\n// =============================================================================\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The model that was used to generate the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_MODEL_ATTRIBUTE = 'ai.response.model';\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The id of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_ID_ATTRIBUTE = 'ai.response.id';\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The timestamp of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'ai.response.timestamp';\n\n// =============================================================================\n// SEMANTIC CONVENTIONS FOR GENAI OPERATIONS\n// =============================================================================\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The provider that was used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The model that was requested\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The temperature that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The maximum number of tokens that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The frequency penalty that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The presence penalty that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The topK parameter value that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The topP parameter value that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The stop sequences\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The finish reasons that were returned by the provider\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The model that was used to generate the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The id of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The number of prompt tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The number of completion tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const AI_TOOL_CALL_RESULT_ATTRIBUTE = 'ai.toolCall.result';\n\n// =============================================================================\n// SPAN ATTRIBUTE OBJECTS\n// =============================================================================\n\n/**\n * Attributes collected for `ai.generateText` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_GENERATE_TEXT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT: AI_PROMPT_ATTRIBUTE,\n AI_RESPONSE_TEXT: AI_RESPONSE_TEXT_ATTRIBUTE,\n AI_RESPONSE_TOOL_CALLS: AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n AI_RESPONSE_FINISH_REASON: AI_RESPONSE_FINISH_REASON_ATTRIBUTE,\n AI_SETTINGS_MAX_STEPS: AI_SETTINGS_MAX_STEPS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.generateText.doGenerate` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_GENERATE_TEXT_DO_GENERATE_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT_FORMAT: AI_PROMPT_FORMAT_ATTRIBUTE,\n AI_PROMPT_MESSAGES: AI_PROMPT_MESSAGES_ATTRIBUTE,\n AI_PROMPT_TOOLS: AI_PROMPT_TOOLS_ATTRIBUTE,\n AI_PROMPT_TOOL_CHOICE: AI_PROMPT_TOOL_CHOICE_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n // Call LLM span information\n AI_RESPONSE_MODEL: AI_RESPONSE_MODEL_ATTRIBUTE,\n AI_RESPONSE_ID: AI_RESPONSE_ID_ATTRIBUTE,\n AI_RESPONSE_TIMESTAMP: AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n // Semantic Conventions for GenAI operations\n GEN_AI_SYSTEM: GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL: GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE: GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS: GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY: GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY: GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K: GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P: GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_REQUEST_STOP_SEQUENCES: GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS: GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL: GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_ID: GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS: GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS: GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamText` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_STREAM_TEXT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT: AI_PROMPT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamText.doStream` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_STREAM_TEXT_DO_STREAM_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_RESPONSE_MS_TO_FIRST_CHUNK: AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE,\n AI_RESPONSE_MS_TO_FINISH: AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE,\n AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND: AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n // Call LLM span information\n AI_RESPONSE_MODEL: AI_RESPONSE_MODEL_ATTRIBUTE,\n AI_RESPONSE_ID: AI_RESPONSE_ID_ATTRIBUTE,\n AI_RESPONSE_TIMESTAMP: AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n // Semantic Conventions for GenAI operations\n GEN_AI_SYSTEM: GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL: GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE: GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS: GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY: GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY: GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K: GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P: GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_REQUEST_STOP_SEQUENCES: GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS: GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL: GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_ID: GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS: GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS: GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.generateObject` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n */\nexport const AI_GENERATE_OBJECT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_SCHEMA: AI_SCHEMA_ATTRIBUTE,\n AI_SCHEMA_NAME: AI_SCHEMA_NAME_ATTRIBUTE,\n AI_SCHEMA_DESCRIPTION: AI_SCHEMA_DESCRIPTION_ATTRIBUTE,\n AI_RESPONSE_OBJECT: AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_SETTINGS_MODE: AI_SETTINGS_MODE_ATTRIBUTE,\n AI_SETTINGS_OUTPUT: AI_SETTINGS_OUTPUT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamObject` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_STREAM_OBJECT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_SCHEMA: AI_SCHEMA_ATTRIBUTE,\n AI_SCHEMA_NAME: AI_SCHEMA_NAME_ATTRIBUTE,\n AI_SCHEMA_DESCRIPTION: AI_SCHEMA_DESCRIPTION_ATTRIBUTE,\n AI_RESPONSE_OBJECT: AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_SETTINGS_MODE: AI_SETTINGS_MODE_ATTRIBUTE,\n AI_SETTINGS_OUTPUT: AI_SETTINGS_OUTPUT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embed` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBED_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUE: AI_VALUE_ATTRIBUTE,\n AI_EMBEDDING: AI_EMBEDDING_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embed.doEmbed` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBED_DO_EMBED_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUES: AI_VALUES_ATTRIBUTE,\n AI_EMBEDDINGS: AI_EMBEDDINGS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embedMany` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_EMBED_MANY_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUES: AI_VALUES_ATTRIBUTE,\n AI_EMBEDDINGS: AI_EMBEDDINGS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.toolCall` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_TOOL_CALL_NAME: AI_TOOL_CALL_NAME_ATTRIBUTE,\n AI_TOOL_CALL_ID: AI_TOOL_CALL_ID_ATTRIBUTE,\n AI_TOOL_CALL_ARGS: AI_TOOL_CALL_ARGS_ATTRIBUTE,\n AI_TOOL_CALL_RESULT: AI_TOOL_CALL_RESULT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n} as const;\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 */\nexport interface OpenAiProviderMetadata {\n /**\n * The number of predicted output tokens that were accepted.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs\n */\n acceptedPredictionTokens?: number;\n\n /**\n * The number of predicted output tokens that were rejected.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs\n */\n rejectedPredictionTokens?: number;\n\n /**\n * The number of reasoning tokens that the model generated.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n */\n reasoningTokens?: number;\n\n /**\n * The number of prompt tokens that were a cache hit.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n */\n cachedPromptTokens?: number;\n\n /**\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n *\n * The ID of the response. Can be used to continue a conversation.\n */\n responseId?: string;\n}\n\n/**\n * Anthropic Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/anthropic/src/anthropic-messages-language-model.ts#L346-L352\n */\ninterface AnthropicProviderMetadata {\n /**\n * The number of tokens that were used to create the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control\n */\n cacheCreationInputTokens?: number;\n\n /**\n * The number of tokens that were read from the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control\n */\n cacheReadInputTokens?: number;\n\n /**\n * Usage metrics for the Anthropic model.\n */\n usage?: {\n input_tokens: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n cache_creation?: {\n ephemeral_5m_input_tokens?: number;\n ephemeral_1h_input_tokens?: number;\n };\n output_tokens?: number;\n service_tier?: string;\n };\n}\n\n/**\n * Amazon Bedrock Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/amazon-bedrock/src/bedrock-chat-language-model.ts#L263-L280\n */\ninterface AmazonBedrockProviderMetadata {\n /**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseTrace.html\n */\n trace?: {\n /**\n * The guardrail trace object.\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailTraceAssessment.html\n *\n * This was purposely left as unknown as it's a complex object. This can be typed in the future\n * if the SDK decides to support bedrock in a more advanced way.\n */\n guardrail?: unknown;\n /**\n * The request's prompt router.\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_PromptRouterTrace.html\n */\n promptRouter?: {\n /**\n * The ID of the invoked model.\n */\n invokedModelId?: string;\n };\n };\n usage?: {\n /**\n * The number of tokens that were read from the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points\n */\n cacheReadInputTokens?: number;\n\n /**\n * The number of tokens that were written to the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points\n */\n cacheWriteInputTokens?: number;\n };\n}\n\n/**\n * Google Generative AI Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai\n */\nexport interface GoogleGenerativeAIProviderMetadata {\n /**\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-prompt.ts#L28-L30\n */\n groundingMetadata: null | {\n /**\n * Array of search queries used to retrieve information\n * @example [\"What's the weather in Chicago this weekend?\"]\n *\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n webSearchQueries: string[] | null;\n /**\n * Contains the main search result content used as an entry point\n * The `renderedContent` field contains the formatted content\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n searchEntryPoint?: {\n renderedContent: string;\n } | null;\n /**\n * Contains details about how specific response parts are supported by search results\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n groundingSupports: Array<{\n /**\n * Information about the grounded text segment.\n */\n segment: {\n /**\n * The start index of the text segment.\n */\n startIndex?: number | null;\n /**\n * The end index of the text segment.\n */\n endIndex?: number | null;\n /**\n * The actual text segment.\n */\n text?: string | null;\n };\n /**\n * References to supporting search result chunks.\n */\n groundingChunkIndices?: number[] | null;\n /**\n * Confidence scores (0-1) for each supporting chunk.\n */\n confidenceScores?: number[] | null;\n }> | null;\n };\n /**\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-language-model.ts#L620-L627\n * @see https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/configure-safety-filters\n */\n safetyRatings?: null | unknown;\n}\n\n/**\n * DeepSeek Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek\n */\ninterface DeepSeekProviderMetadata {\n /**\n * The number of tokens that were cache hits.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage\n */\n promptCacheHitTokens?: number;\n\n /**\n * The number of tokens that were cache misses.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage\n */\n promptCacheMissTokens?: number;\n}\n\n/**\n * Perplexity Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/perplexity\n */\ninterface PerplexityProviderMetadata {\n /**\n * Object containing citationTokens and numSearchQueries metrics\n */\n usage?: {\n citationTokens?: number;\n numSearchQueries?: number;\n };\n /**\n * Array of image URLs when return_images is enabled.\n *\n * You can enable image responses by setting return_images: true in the provider options.\n * This feature is only available to Perplexity Tier-2 users and above.\n */\n images?: Array<{\n imageUrl?: string;\n originUrl?: string;\n height?: number;\n width?: number;\n }>;\n}\n\nexport interface ProviderMetadata {\n openai?: OpenAiProviderMetadata;\n azure?: OpenAiProviderMetadata; // v6: Azure Responses API uses 'azure' key instead of 'openai'\n anthropic?: AnthropicProviderMetadata;\n bedrock?: AmazonBedrockProviderMetadata;\n google?: GoogleGenerativeAIProviderMetadata;\n vertex?: GoogleGenerativeAIProviderMetadata; // v6: Google Vertex uses 'vertex' key instead of 'google'\n deepseek?: DeepSeekProviderMetadata;\n perplexity?: PerplexityProviderMetadata;\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,MAAM,wBAAA,GAA2B;;AAExC;AACA;AACA;AACA;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAA,GAAsB;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAA,GAAsB;;AAsBnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,4BAAA,GAA+B;;AA0C5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,0BAAA,GAA6B;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gCAAA,GAAmC;;AA0BhD;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,4BAAA,GAA+B;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAA,GAA4B;;AAuEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAA,GAAwB;;AAoBrC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,uCAAA,GAA0C;;AAWvD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sCAAA,GAAyC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,kCAAA,GAAqC;;AAWlD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oCAAA,GAAuC;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gCAAA,GAAmC;;AAgLhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,2BAAA,GAA8B;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAA,GAA4B;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,2BAAA,GAA8B;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,6BAAA,GAAgC;;AA2Q7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/base.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/base.js new file mode 100644 index 0000000..5083655 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/base.js @@ -0,0 +1,96 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug } from '../utils/debug-logger.js'; +import { forEachEnvelopeItem, envelopeItemTypeToDataCategory, createEnvelope, serializeEnvelope, envelopeContainsItemType } from '../utils/envelope.js'; +import { makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer.js'; +import { isRateLimited, updateRateLimits } from '../utils/ratelimit.js'; + +const DEFAULT_TRANSPORT_BUFFER_SIZE = 64; + +/** + * Creates an instance of a Sentry `Transport` + * + * @param options + * @param makeRequest + */ +function createTransport( + options, + makeRequest, + buffer = makePromiseBuffer( + options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE, + ), +) { + let rateLimits = {}; + const flush = (timeout) => buffer.drain(timeout); + + function send(envelope) { + const filteredEnvelopeItems = []; + + // Drop rate limited items from envelope + forEachEnvelopeItem(envelope, (item, type) => { + const dataCategory = envelopeItemTypeToDataCategory(type); + if (isRateLimited(rateLimits, dataCategory)) { + options.recordDroppedEvent('ratelimit_backoff', dataCategory); + } else { + filteredEnvelopeItems.push(item); + } + }); + + // Skip sending if envelope is empty after filtering out rate limited events + if (filteredEnvelopeItems.length === 0) { + return Promise.resolve({}); + } + + const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems ); + + // Creates client report for each item in an envelope + const recordEnvelopeLoss = (reason) => { + // Don't record outcomes for client reports - we don't want to create a feedback loop if client reports themselves fail to send + if (envelopeContainsItemType(filteredEnvelope, ['client_report'])) { + DEBUG_BUILD && debug.warn(`Dropping client report. Will not send outcomes (reason: ${reason}).`); + return; + } + forEachEnvelopeItem(filteredEnvelope, (item, type) => { + options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type)); + }); + }; + + const requestTask = () => + makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then( + response => { + // We don't want to throw on NOK responses, but we want to at least log them + if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) { + DEBUG_BUILD && debug.warn(`Sentry responded with status code ${response.statusCode} to sent event.`); + } + + rateLimits = updateRateLimits(rateLimits, response); + return response; + }, + error => { + recordEnvelopeLoss('network_error'); + DEBUG_BUILD && debug.error('Encountered error running transport request:', error); + throw error; + }, + ); + + return buffer.add(requestTask).then( + result => result, + error => { + if (error === SENTRY_BUFFER_FULL_ERROR) { + DEBUG_BUILD && debug.error('Skipped sending event because buffer is full.'); + recordEnvelopeLoss('queue_overflow'); + return Promise.resolve({}); + } else { + throw error; + } + }, + ); + } + + return { + send, + flush, + }; +} + +export { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport }; +//# sourceMappingURL=base.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/base.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/base.js.map new file mode 100644 index 0000000..532238c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/base.js.map @@ -0,0 +1 @@ +{"version":3,"file":"base.js","sources":["../../../src/transports/base.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { EventDropReason } from '../types-hoist/clientreport';\nimport type { Envelope, EnvelopeItem } from '../types-hoist/envelope';\nimport type {\n InternalBaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequestExecutor,\n} from '../types-hoist/transport';\nimport { debug } from '../utils/debug-logger';\nimport {\n createEnvelope,\n envelopeContainsItemType,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n serializeEnvelope,\n} from '../utils/envelope';\nimport { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer';\nimport { isRateLimited, type RateLimits, updateRateLimits } from '../utils/ratelimit';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n): Transport {\n let rateLimits: RateLimits = {};\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\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: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as (typeof envelope)[1]);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\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 = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n DEBUG_BUILD && 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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/multiplexed.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/multiplexed.js new file mode 100644 index 0000000..1372f69 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/multiplexed.js @@ -0,0 +1,161 @@ +import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api.js'; +import { dsnFromString } from '../utils/dsn.js'; +import { createEnvelope, forEachEnvelopeItem } from '../utils/envelope.js'; + +/** + * Key used in event.extra to provide routing information for the multiplexed transport. + * Should contain an array of `{ dsn: string, release?: string }` objects. + */ +const MULTIPLEXED_TRANSPORT_EXTRA_KEY = 'MULTIPLEXED_TRANSPORT_EXTRA_KEY'; + +/** + * Gets an event from an envelope. + * + * This is only exported for use in the tests + */ +function eventFromEnvelope(env, types) { + let event; + + forEachEnvelopeItem(env, (item, type) => { + if (types.includes(type)) { + event = Array.isArray(item) ? (item )[1] : undefined; + } + // bail out if we found an event + return !!event; + }); + + return event; +} + +/** + * Creates a transport that overrides the release on all events. + */ +function makeOverrideReleaseTransport( + createTransport, + release, +) { + return options => { + const transport = createTransport(options); + + return { + ...transport, + send: async (envelope) => { + const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']); + + if (event) { + event.release = release; + } + return transport.send(envelope); + }, + }; + }; +} + +/** Overrides the DSN in the envelope header */ +function overrideDsn(envelope, dsn) { + return createEnvelope( + dsn + ? { + ...envelope[0], + dsn, + } + : envelope[0], + envelope[1], + ); +} + +/** + * Creates a transport that can send events to different DSNs depending on the envelope contents. + * + * If no matcher is provided, the transport will look for routing information in + * `event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]`, which should contain + * an array of `{ dsn: string, release?: string }` objects. + */ +function makeMultiplexedTransport( + createTransport, + matcher, +) { + return options => { + const fallbackTransport = createTransport(options); + const otherTransports = new Map(); + + // Use provided matcher or default to simple multiplexed transport behavior + const actualMatcher = + matcher || + (args => { + const event = args.getEvent(); + if ( + event?.extra?.[MULTIPLEXED_TRANSPORT_EXTRA_KEY] && + Array.isArray(event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]) + ) { + return event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]; + } + return []; + }); + + function getTransport(dsn, release) { + // We create a transport for every unique dsn/release combination as there may be code from multiple releases in + // use at the same time + const key = release ? `${dsn}:${release}` : dsn; + + let transport = otherTransports.get(key); + + if (!transport) { + const validatedDsn = dsnFromString(dsn); + if (!validatedDsn) { + return undefined; + } + const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel); + + transport = release + ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url }) + : createTransport({ ...options, url }); + + otherTransports.set(key, transport); + } + + return [dsn, transport]; + } + + async function send(envelope) { + function getEvent(types) { + const eventTypes = types?.length ? types : ['event']; + return eventFromEnvelope(envelope, eventTypes); + } + + const transports = actualMatcher({ envelope, getEvent }) + .map(result => { + if (typeof result === 'string') { + return getTransport(result, undefined); + } else { + return getTransport(result.dsn, result.release); + } + }) + .filter((t) => !!t); + + // If we have no transports to send to, use the fallback transport + // Don't override the DSN in the header for the fallback transport. '' is falsy + const transportsWithFallback = transports.length ? transports : [['', fallbackTransport]]; + + const results = (await Promise.all( + transportsWithFallback.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))), + )) ; + + return results[0]; + } + + async function flush(timeout) { + const allTransports = [...otherTransports.values(), fallbackTransport]; + const results = await Promise.all(allTransports.map(transport => transport.flush(timeout))); + return results.every(r => r); + } + + return { + send, + flush, + }; + }; +} + +export { MULTIPLEXED_TRANSPORT_EXTRA_KEY, eventFromEnvelope, makeMultiplexedTransport }; +//# sourceMappingURL=multiplexed.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/multiplexed.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/multiplexed.js.map new file mode 100644 index 0000000..28bd228 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/multiplexed.js.map @@ -0,0 +1 @@ +{"version":3,"file":"multiplexed.js","sources":["../../../src/transports/multiplexed.ts"],"sourcesContent":["import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api';\nimport type { Envelope, EnvelopeItemType, EventItem } from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { BaseTransportOptions, Transport, TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { dsnFromString } from '../utils/dsn';\nimport { createEnvelope, forEachEnvelopeItem } from '../utils/envelope';\n\ninterface MatchParam {\n /** The envelope to be sent */\n envelope: Envelope;\n /**\n * A function that returns an event from the envelope if one exists. You can optionally pass an array of envelope item\n * types to filter by - only envelopes matching the given types will be multiplexed.\n * Allowed values are: 'event', 'transaction', 'profile', 'replay_event'\n *\n * @param types Defaults to ['event']\n */\n getEvent(types?: EnvelopeItemType[]): Event | undefined;\n}\n\ntype RouteTo = { dsn: string; release: string };\ntype Matcher = (param: MatchParam) => (string | RouteTo)[];\n\n/**\n * Key used in event.extra to provide routing information for the multiplexed transport.\n * Should contain an array of `{ dsn: string, release?: string }` objects.\n */\nexport const MULTIPLEXED_TRANSPORT_EXTRA_KEY = 'MULTIPLEXED_TRANSPORT_EXTRA_KEY';\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nexport function eventFromEnvelope(env: Envelope, types: EnvelopeItemType[]): Event | undefined {\n let event: Event | undefined;\n\n forEachEnvelopeItem(env, (item, type) => {\n if (types.includes(type)) {\n event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n }\n // bail out if we found an event\n return !!event;\n });\n\n return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport(\n createTransport: (options: TO) => Transport,\n release: string,\n): (options: TO) => Transport {\n return options => {\n const transport = createTransport(options);\n\n return {\n ...transport,\n send: async (envelope: Envelope): Promise => {\n const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n if (event) {\n event.release = release;\n }\n return transport.send(envelope);\n },\n };\n };\n}\n\n/** Overrides the DSN in the envelope header */\nfunction overrideDsn(envelope: Envelope, dsn: string): Envelope {\n return createEnvelope(\n dsn\n ? {\n ...envelope[0],\n dsn,\n }\n : envelope[0],\n envelope[1],\n );\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n *\n * If no matcher is provided, the transport will look for routing information in\n * `event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]`, which should contain\n * an array of `{ dsn: string, release?: string }` objects.\n */\nexport function makeMultiplexedTransport(\n createTransport: (options: TO) => Transport,\n matcher?: Matcher,\n): (options: TO) => Transport {\n return options => {\n const fallbackTransport = createTransport(options);\n const otherTransports: Map = new Map();\n\n // Use provided matcher or default to simple multiplexed transport behavior\n const actualMatcher: Matcher =\n matcher ||\n (args => {\n const event = args.getEvent();\n if (\n event?.extra?.[MULTIPLEXED_TRANSPORT_EXTRA_KEY] &&\n Array.isArray(event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY])\n ) {\n return event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY];\n }\n return [];\n });\n\n function getTransport(dsn: string, release: string | undefined): [string, Transport] | undefined {\n // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n // use at the same time\n const key = release ? `${dsn}:${release}` : dsn;\n\n let transport = otherTransports.get(key);\n\n if (!transport) {\n const validatedDsn = dsnFromString(dsn);\n if (!validatedDsn) {\n return undefined;\n }\n const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel);\n\n transport = release\n ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n : createTransport({ ...options, url });\n\n otherTransports.set(key, transport);\n }\n\n return [dsn, transport];\n }\n\n async function send(envelope: Envelope): Promise {\n function getEvent(types?: EnvelopeItemType[]): Event | undefined {\n const eventTypes: EnvelopeItemType[] = types?.length ? types : ['event'];\n return eventFromEnvelope(envelope, eventTypes);\n }\n\n const transports = actualMatcher({ envelope, getEvent })\n .map(result => {\n if (typeof result === 'string') {\n return getTransport(result, undefined);\n } else {\n return getTransport(result.dsn, result.release);\n }\n })\n .filter((t): t is [string, Transport] => !!t);\n\n // If we have no transports to send to, use the fallback transport\n // Don't override the DSN in the header for the fallback transport. '' is falsy\n const transportsWithFallback: [string, Transport][] = transports.length ? transports : [['', fallbackTransport]];\n\n const results = (await Promise.all(\n transportsWithFallback.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))),\n )) as [TransportMakeRequestResponse, ...TransportMakeRequestResponse[]];\n\n return results[0];\n }\n\n async function flush(timeout: number | undefined): Promise {\n const allTransports = [...otherTransports.values(), fallbackTransport];\n const results = await Promise.all(allTransports.map(transport => transport.flush(timeout)));\n return results.every(r => r);\n }\n\n return {\n send,\n flush,\n };\n };\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/offline.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/offline.js new file mode 100644 index 0000000..0aabfeb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/offline.js @@ -0,0 +1,154 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug } from '../utils/debug-logger.js'; +import { envelopeContainsItemType } from '../utils/envelope.js'; +import { parseRetryAfterHeader } from '../utils/ratelimit.js'; + +const MIN_DELAY = 100; // 100 ms +const START_DELAY = 5000; // 5 seconds +const MAX_DELAY = 3.6e6; // 1 hour + +/** + * Wraps a transport and stores and retries events when they fail to send. + * + * @param createTransport The transport to wrap. + */ +function makeOfflineTransport( + createTransport, +) { + function log(...args) { + DEBUG_BUILD && debug.log('[Offline]:', ...args); + } + + return options => { + const transport = createTransport(options); + + if (!options.createStore) { + throw new Error('No `createStore` function was provided'); + } + + const store = options.createStore(options); + + let retryDelay = START_DELAY; + let flushTimer; + + function shouldQueue(env, error, retryDelay) { + // We want to drop client reports because they can be generated when we retry sending events while offline. + if (envelopeContainsItemType(env, ['client_report'])) { + return false; + } + + if (options.shouldStore) { + return options.shouldStore(env, error, retryDelay); + } + + return true; + } + + function flushIn(delay) { + if (flushTimer) { + clearTimeout(flushTimer ); + } + + flushTimer = setTimeout(async () => { + flushTimer = undefined; + + const found = await store.shift(); + if (found) { + log('Attempting to send previously queued event'); + + // We should to update the sent_at timestamp to the current time. + found[0].sent_at = new Date().toISOString(); + + void send(found, true).catch(e => { + log('Failed to retry sending', e); + }); + } + }, delay) ; + + // We need to unref the timer in node.js, otherwise the node process never exit. + if (typeof flushTimer !== 'number' && flushTimer.unref) { + flushTimer.unref(); + } + } + + function flushWithBackOff() { + if (flushTimer) { + return; + } + + flushIn(retryDelay); + + retryDelay = Math.min(retryDelay * 2, MAX_DELAY); + } + + async function send(envelope, isRetry = false) { + // We queue all replay envelopes to avoid multiple replay envelopes being sent at the same time. If one fails, we + // need to retry them in order. + if (!isRetry && envelopeContainsItemType(envelope, ['replay_event', 'replay_recording'])) { + await store.push(envelope); + flushIn(MIN_DELAY); + return {}; + } + + try { + if (options.shouldSend && (await options.shouldSend(envelope)) === false) { + throw new Error('Envelope not sent because `shouldSend` callback returned false'); + } + + const result = await transport.send(envelope); + + let delay = MIN_DELAY; + + if (result) { + // If there's a retry-after header, use that as the next delay. + if (result.headers?.['retry-after']) { + delay = parseRetryAfterHeader(result.headers['retry-after']); + } else if (result.headers?.['x-sentry-rate-limits']) { + delay = 60000; // 60 seconds + } // If we have a server error, return now so we don't flush the queue. + else if ((result.statusCode || 0) >= 400) { + return result; + } + } + + flushIn(delay); + retryDelay = START_DELAY; + return result; + } catch (e) { + if (await shouldQueue(envelope, e , retryDelay)) { + // If this envelope was a retry, we want to add it to the front of the queue so it's retried again first. + if (isRetry) { + await store.unshift(envelope); + } else { + await store.push(envelope); + } + flushWithBackOff(); + log('Error sending. Event queued.', e ); + return {}; + } else { + throw e; + } + } + } + + if (options.flushAtStartup) { + flushWithBackOff(); + } + + return { + send, + flush: timeout => { + // If there's no timeout, we should attempt to flush the offline queue. + if (timeout === undefined) { + retryDelay = START_DELAY; + flushIn(MIN_DELAY); + } + + return transport.flush(timeout); + }, + }; + }; +} + +export { MIN_DELAY, START_DELAY, makeOfflineTransport }; +//# sourceMappingURL=offline.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/offline.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/offline.js.map new file mode 100644 index 0000000..21e3418 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/offline.js.map @@ -0,0 +1 @@ +{"version":3,"file":"offline.js","sources":["../../../src/transports/offline.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { Envelope } from '../types-hoist/envelope';\nimport type { InternalBaseTransportOptions, Transport, TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { debug } from '../utils/debug-logger';\nimport { envelopeContainsItemType } from '../utils/envelope';\nimport { parseRetryAfterHeader } from '../utils/ratelimit';\n\nexport const MIN_DELAY = 100; // 100 ms\nexport const START_DELAY = 5_000; // 5 seconds\nconst MAX_DELAY = 3.6e6; // 1 hour\n\nexport interface OfflineStore {\n push(env: Envelope): Promise;\n unshift(env: Envelope): Promise;\n shift(): Promise;\n}\n\nexport type CreateOfflineStore = (options: OfflineTransportOptions) => OfflineStore;\n\nexport interface OfflineTransportOptions extends InternalBaseTransportOptions {\n /**\n * A function that creates the offline store instance.\n */\n createStore?: CreateOfflineStore;\n\n /**\n * Flush the offline store shortly after startup.\n *\n * Defaults: false\n */\n flushAtStartup?: boolean;\n\n /**\n * Called before an event is stored.\n *\n * Return false to drop the envelope rather than store it.\n *\n * @param envelope The envelope that failed to send.\n * @param error The error that occurred.\n * @param retryDelay The current retry delay in milliseconds.\n * @returns Whether the envelope should be stored.\n */\n shouldStore?: (envelope: Envelope, error: Error, retryDelay: number) => boolean | Promise;\n\n /**\n * Should an attempt be made to send the envelope to Sentry.\n *\n * If this function is supplied and returns false, `shouldStore` will be called to determine if the envelope should be stored.\n *\n * @param envelope The envelope that will be sent.\n * @returns Whether we should attempt to send the envelope\n */\n shouldSend?: (envelope: Envelope) => boolean | Promise;\n}\n\ntype Timer = number | { unref?: () => void };\n\n/**\n * Wraps a transport and stores and retries events when they fail to send.\n *\n * @param createTransport The transport to wrap.\n */\nexport function makeOfflineTransport(\n createTransport: (options: TO) => Transport,\n): (options: TO & OfflineTransportOptions) => Transport {\n function log(...args: unknown[]): void {\n DEBUG_BUILD && debug.log('[Offline]:', ...args);\n }\n\n return options => {\n const transport = createTransport(options);\n\n if (!options.createStore) {\n throw new Error('No `createStore` function was provided');\n }\n\n const store = options.createStore(options);\n\n let retryDelay = START_DELAY;\n let flushTimer: Timer | undefined;\n\n function shouldQueue(env: Envelope, error: Error, retryDelay: number): boolean | Promise {\n // We want to drop client reports because they can be generated when we retry sending events while offline.\n if (envelopeContainsItemType(env, ['client_report'])) {\n return false;\n }\n\n if (options.shouldStore) {\n return options.shouldStore(env, error, retryDelay);\n }\n\n return true;\n }\n\n function flushIn(delay: number): void {\n if (flushTimer) {\n clearTimeout(flushTimer as ReturnType);\n }\n\n flushTimer = setTimeout(async () => {\n flushTimer = undefined;\n\n const found = await store.shift();\n if (found) {\n log('Attempting to send previously queued event');\n\n // We should to update the sent_at timestamp to the current time.\n found[0].sent_at = new Date().toISOString();\n\n void send(found, true).catch(e => {\n log('Failed to retry sending', e);\n });\n }\n }, delay) as Timer;\n\n // We need to unref the timer in node.js, otherwise the node process never exit.\n if (typeof flushTimer !== 'number' && flushTimer.unref) {\n flushTimer.unref();\n }\n }\n\n function flushWithBackOff(): void {\n if (flushTimer) {\n return;\n }\n\n flushIn(retryDelay);\n\n retryDelay = Math.min(retryDelay * 2, MAX_DELAY);\n }\n\n async function send(envelope: Envelope, isRetry: boolean = false): Promise {\n // We queue all replay envelopes to avoid multiple replay envelopes being sent at the same time. If one fails, we\n // need to retry them in order.\n if (!isRetry && envelopeContainsItemType(envelope, ['replay_event', 'replay_recording'])) {\n await store.push(envelope);\n flushIn(MIN_DELAY);\n return {};\n }\n\n try {\n if (options.shouldSend && (await options.shouldSend(envelope)) === false) {\n throw new Error('Envelope not sent because `shouldSend` callback returned false');\n }\n\n const result = await transport.send(envelope);\n\n let delay = MIN_DELAY;\n\n if (result) {\n // If there's a retry-after header, use that as the next delay.\n if (result.headers?.['retry-after']) {\n delay = parseRetryAfterHeader(result.headers['retry-after']);\n } else if (result.headers?.['x-sentry-rate-limits']) {\n delay = 60_000; // 60 seconds\n } // If we have a server error, return now so we don't flush the queue.\n else if ((result.statusCode || 0) >= 400) {\n return result;\n }\n }\n\n flushIn(delay);\n retryDelay = START_DELAY;\n return result;\n } catch (e) {\n if (await shouldQueue(envelope, e as Error, retryDelay)) {\n // If this envelope was a retry, we want to add it to the front of the queue so it's retried again first.\n if (isRetry) {\n await store.unshift(envelope);\n } else {\n await store.push(envelope);\n }\n flushWithBackOff();\n log('Error sending. Event queued.', e as Error);\n return {};\n } else {\n throw e;\n }\n }\n }\n\n if (options.flushAtStartup) {\n flushWithBackOff();\n }\n\n return {\n send,\n flush: timeout => {\n // If there's no timeout, we should attempt to flush the offline queue.\n if (timeout === undefined) {\n retryDelay = START_DELAY;\n flushIn(MIN_DELAY);\n }\n\n return transport.flush(timeout);\n },\n };\n };\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/userAgent.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/userAgent.js new file mode 100644 index 0000000..6deac1b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/userAgent.js @@ -0,0 +1,23 @@ +/** + * Takes the SDK metadata and adds the user-agent header to the transport options. + * This ensures that the SDK sends the user-agent header with SDK name and version to + * all requests made by the transport. + * + * @see https://develop.sentry.dev/sdk/overview/#user-agent + */ +function addUserAgentToTransportHeaders(options) { + const sdkMetadata = options._metadata?.sdk; + const sdkUserAgent = + sdkMetadata?.name && sdkMetadata?.version ? `${sdkMetadata?.name}/${sdkMetadata?.version}` : undefined; + + options.transportOptions = { + ...options.transportOptions, + headers: { + ...(sdkUserAgent && { 'user-agent': sdkUserAgent }), + ...options.transportOptions?.headers, + }, + }; +} + +export { addUserAgentToTransportHeaders }; +//# sourceMappingURL=userAgent.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/userAgent.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/userAgent.js.map new file mode 100644 index 0000000..720b357 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/transports/userAgent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"userAgent.js","sources":["../../../src/transports/userAgent.ts"],"sourcesContent":["import type { ClientOptions } from '../types-hoist/options';\n\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 */\nexport function addUserAgentToTransportHeaders(options: ClientOptions): void {\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"],"names":[],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,CAAC,OAAO,EAAuB;AAC7E,EAAE,MAAM,WAAA,GAAc,OAAO,CAAC,SAAS,EAAE,GAAG;AAC5C,EAAE,MAAM,YAAA;AACR,IAAI,WAAW,EAAE,IAAA,IAAQ,WAAW,EAAE,OAAA,GAAU,CAAC,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA,EAAA,WAAA,EAAA,OAAA,CAAA,CAAA,GAAA,SAAA;;AAEA,EAAA,OAAA,CAAA,gBAAA,GAAA;AACA,IAAA,GAAA,OAAA,CAAA,gBAAA;AACA,IAAA,OAAA,EAAA;AACA,MAAA,IAAA,YAAA,IAAA,EAAA,YAAA,EAAA,YAAA,EAAA,CAAA;AACA,MAAA,GAAA,OAAA,CAAA,gBAAA,EAAA,OAAA;AACA,KAAA;AACA,GAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/trpc.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/trpc.js new file mode 100644 index 0000000..9c44f8a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/trpc.js @@ -0,0 +1,93 @@ +import { getClient, withIsolationScope } from './currentScopes.js'; +import { captureException } from './exports.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes.js'; +import { addNonEnumerableProperty } from './utils/object.js'; +import { normalize } from './utils/normalize.js'; +import { startSpanManual } from './tracing/trace.js'; + +const trpcCaptureContext = { mechanism: { handled: false, type: 'auto.rpc.trpc.middleware' } }; + +function captureIfError(nextResult) { + // TODO: Set span status based on what TRPCError was encountered + if ( + typeof nextResult === 'object' && + nextResult !== null && + 'ok' in nextResult && + !nextResult.ok && + 'error' in nextResult + ) { + captureException(nextResult.error, trpcCaptureContext); + } +} + +/** + * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures. + */ +function trpcMiddleware(options = {}) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + return async function (opts) { + const { path, type, next, rawInput, getRawInput } = opts; + + const client = getClient(); + const clientOptions = client?.getOptions(); + + const trpcContext = { + procedure_path: path, + procedure_type: type, + }; + + addNonEnumerableProperty( + trpcContext, + '__sentry_override_normalization_depth__', + 1 + // 1 for context.input + the normal normalization depth + (clientOptions?.normalizeDepth ?? 5), // 5 is a sane depth + ); + + if (options.attachRpcInput !== undefined ? options.attachRpcInput : clientOptions?.sendDefaultPii) { + if (rawInput !== undefined) { + trpcContext.input = normalize(rawInput); + } + + if (getRawInput !== undefined && typeof getRawInput === 'function') { + try { + const rawRes = await getRawInput(); + + trpcContext.input = normalize(rawRes); + } catch { + // noop + } + } + } + + return withIsolationScope(scope => { + scope.setContext('trpc', trpcContext); + return startSpanManual( + { + name: `trpc/${path}`, + op: 'rpc.server', + attributes: { + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route', + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.rpc.trpc', + }, + forceTransaction: !!options.forceTransaction, + }, + async span => { + try { + const nextResult = await next(); + captureIfError(nextResult); + span.end(); + return nextResult; + } catch (e) { + captureException(e, trpcCaptureContext); + span.end(); + throw e; + } + }, + ) ; + }); + }; +} + +export { trpcMiddleware }; +//# sourceMappingURL=trpc.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/trpc.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/trpc.js.map new file mode 100644 index 0000000..f347c57 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/trpc.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trpc.js","sources":["../../src/trpc.ts"],"sourcesContent":["import { getClient, withIsolationScope } from './currentScopes';\nimport { captureException } from './exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes';\nimport { startSpanManual } from './tracing';\nimport { normalize } from './utils/normalize';\nimport { addNonEnumerableProperty } from './utils/object';\n\ninterface SentryTrpcMiddlewareOptions {\n /** Whether to include procedure inputs in reported events. Defaults to `false`. */\n attachRpcInput?: boolean;\n forceTransaction?: boolean;\n}\n\nexport interface SentryTrpcMiddlewareArguments {\n path?: unknown;\n type?: unknown;\n next: () => T;\n rawInput?: unknown;\n getRawInput?: () => Promise;\n}\n\nconst trpcCaptureContext = { mechanism: { handled: false, type: 'auto.rpc.trpc.middleware' } };\n\nfunction captureIfError(nextResult: unknown): void {\n // TODO: Set span status based on what TRPCError was encountered\n if (\n typeof nextResult === 'object' &&\n nextResult !== null &&\n 'ok' in nextResult &&\n !nextResult.ok &&\n 'error' in nextResult\n ) {\n captureException(nextResult.error, trpcCaptureContext);\n }\n}\n\ntype SentryTrpcMiddleware = T extends Promise ? T : Promise;\n\n/**\n * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures.\n */\nexport function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return async function (opts: SentryTrpcMiddlewareArguments): SentryTrpcMiddleware {\n const { path, type, next, rawInput, getRawInput } = opts;\n\n const client = getClient();\n const clientOptions = client?.getOptions();\n\n const trpcContext: Record = {\n procedure_path: path,\n procedure_type: type,\n };\n\n addNonEnumerableProperty(\n trpcContext,\n '__sentry_override_normalization_depth__',\n 1 + // 1 for context.input + the normal normalization depth\n (clientOptions?.normalizeDepth ?? 5), // 5 is a sane depth\n );\n\n if (options.attachRpcInput !== undefined ? options.attachRpcInput : clientOptions?.sendDefaultPii) {\n if (rawInput !== undefined) {\n trpcContext.input = normalize(rawInput);\n }\n\n if (getRawInput !== undefined && typeof getRawInput === 'function') {\n try {\n const rawRes = await getRawInput();\n\n trpcContext.input = normalize(rawRes);\n } catch {\n // noop\n }\n }\n }\n\n return withIsolationScope(scope => {\n scope.setContext('trpc', trpcContext);\n return startSpanManual(\n {\n name: `trpc/${path}`,\n op: 'rpc.server',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.rpc.trpc',\n },\n forceTransaction: !!options.forceTransaction,\n },\n async span => {\n try {\n const nextResult = await next();\n captureIfError(nextResult);\n span.end();\n return nextResult;\n } catch (e) {\n captureException(e, trpcCaptureContext);\n span.end();\n throw e;\n }\n },\n ) as SentryTrpcMiddleware;\n });\n };\n}\n"],"names":[],"mappings":";;;;;;;AAqBA,MAAM,kBAAA,GAAqB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,0BAAA,IAA8B;;AAE9F,SAAS,cAAc,CAAC,UAAU,EAAiB;AACnD;AACA,EAAE;AACF,IAAI,OAAO,UAAA,KAAe,QAAA;AAC1B,IAAI,UAAA,KAAe,IAAA;AACnB,IAAI,IAAA,IAAQ,UAAA;AACZ,IAAI,CAAC,UAAU,CAAC,EAAA;AAChB,IAAI,WAAW;AACf,IAAI;AACJ,IAAI,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,kBAAkB,CAAC;AAC1D,EAAE;AACF;;AAIA;AACA;AACA;AACO,SAAS,cAAc,CAAC,OAAO,GAAgC,EAAE,EAAE;AAC1E;AACA;AACA,EAAE,OAAO,gBAAmB,IAAI,EAA6D;AAC7F,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAA,EAAY,GAAI,IAAI;;AAE5D,IAAI,MAAM,MAAA,GAAS,SAAS,EAAE;AAC9B,IAAI,MAAM,aAAA,GAAgB,MAAM,EAAE,UAAU,EAAE;;AAE9C,IAAI,MAAM,WAAW,GAA4B;AACjD,MAAM,cAAc,EAAE,IAAI;AAC1B,MAAM,cAAc,EAAE,IAAI;AAC1B,KAAK;;AAEL,IAAI,wBAAwB;AAC5B,MAAM,WAAW;AACjB,MAAM,yCAAyC;AAC/C,MAAM,CAAA;AACN,SAAS,aAAa,EAAE,cAAA,IAAkB,CAAC,CAAC;AAC5C,KAAK;;AAEL,IAAI,IAAI,OAAO,CAAC,mBAAmB,SAAA,GAAY,OAAO,CAAC,cAAA,GAAiB,aAAa,EAAE,cAAc,EAAE;AACvG,MAAM,IAAI,QAAA,KAAa,SAAS,EAAE;AAClC,QAAQ,WAAW,CAAC,KAAA,GAAQ,SAAS,CAAC,QAAQ,CAAC;AAC/C,MAAM;;AAEN,MAAM,IAAI,WAAA,KAAgB,SAAA,IAAa,OAAO,WAAA,KAAgB,UAAU,EAAE;AAC1E,QAAQ,IAAI;AACZ,UAAU,MAAM,MAAA,GAAS,MAAM,WAAW,EAAE;;AAE5C,UAAU,WAAW,CAAC,KAAA,GAAQ,SAAS,CAAC,MAAM,CAAC;AAC/C,QAAQ,EAAE,MAAM;AAChB;AACA,QAAQ;AACR,MAAM;AACN,IAAI;;AAEJ,IAAI,OAAO,kBAAkB,CAAC,KAAA,IAAS;AACvC,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC;AAC3C,MAAM,OAAO,eAAe;AAC5B,QAAQ;AACR,UAAU,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AACA,UAAA,EAAA,EAAA,YAAA;AACA,UAAA,UAAA,EAAA;AACA,YAAA,CAAA,gCAAA,GAAA,OAAA;AACA,YAAA,CAAA,gCAAA,GAAA,eAAA;AACA,WAAA;AACA,UAAA,gBAAA,EAAA,CAAA,CAAA,OAAA,CAAA,gBAAA;AACA,SAAA;AACA,QAAA,MAAA,IAAA,IAAA;AACA,UAAA,IAAA;AACA,YAAA,MAAA,UAAA,GAAA,MAAA,IAAA,EAAA;AACA,YAAA,cAAA,CAAA,UAAA,CAAA;AACA,YAAA,IAAA,CAAA,GAAA,EAAA;AACA,YAAA,OAAA,UAAA;AACA,UAAA,CAAA,CAAA,OAAA,CAAA,EAAA;AACA,YAAA,gBAAA,CAAA,CAAA,EAAA,kBAAA,CAAA;AACA,YAAA,IAAA,CAAA,GAAA,EAAA;AACA,YAAA,MAAA,CAAA;AACA,UAAA;AACA,QAAA,CAAA;AACA,OAAA;AACA,IAAA,CAAA,CAAA;AACA,EAAA,CAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/aggregate-errors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/aggregate-errors.js new file mode 100644 index 0000000..4a9342b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/aggregate-errors.js @@ -0,0 +1,124 @@ +import { isInstanceOf } from './is.js'; + +/** + * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter. + */ +function applyAggregateErrorsToEvent( + exceptionFromErrorImplementation, + parser, + key, + limit, + event, + hint, +) { + if (!event.exception?.values || !hint || !isInstanceOf(hint.originalException, Error)) { + return; + } + + // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error + const originalException = + event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined; + + // We only create exception grouping if there is an exception in the event. + if (originalException) { + event.exception.values = aggregateExceptionsFromError( + exceptionFromErrorImplementation, + parser, + limit, + hint.originalException , + key, + event.exception.values, + originalException, + 0, + ); + } +} + +function aggregateExceptionsFromError( + exceptionFromErrorImplementation, + parser, + limit, + error, + key, + prevExceptions, + exception, + exceptionId, +) { + if (prevExceptions.length >= limit + 1) { + return prevExceptions; + } + + let newExceptions = [...prevExceptions]; + + // Recursively call this function in order to walk down a chain of errors + if (isInstanceOf(error[key], Error)) { + applyExceptionGroupFieldsForParentException(exception, exceptionId); + const newException = exceptionFromErrorImplementation(parser, error[key] ); + const newExceptionId = newExceptions.length; + applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId); + newExceptions = aggregateExceptionsFromError( + exceptionFromErrorImplementation, + parser, + limit, + error[key] , + key, + [newException, ...newExceptions], + newException, + newExceptionId, + ); + } + + // This will create exception grouping for AggregateErrors + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError + if (Array.isArray(error.errors)) { + error.errors.forEach((childError, i) => { + if (isInstanceOf(childError, Error)) { + applyExceptionGroupFieldsForParentException(exception, exceptionId); + const newException = exceptionFromErrorImplementation(parser, childError ); + const newExceptionId = newExceptions.length; + applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId); + newExceptions = aggregateExceptionsFromError( + exceptionFromErrorImplementation, + parser, + limit, + childError , + key, + [newException, ...newExceptions], + newException, + newExceptionId, + ); + } + }); + } + + return newExceptions; +} + +function applyExceptionGroupFieldsForParentException(exception, exceptionId) { + exception.mechanism = { + handled: true, + type: 'auto.core.linked_errors', + ...exception.mechanism, + ...(exception.type === 'AggregateError' && { is_exception_group: true }), + exception_id: exceptionId, + }; +} + +function applyExceptionGroupFieldsForChildException( + exception, + source, + exceptionId, + parentId, +) { + exception.mechanism = { + handled: true, + ...exception.mechanism, + type: 'chained', + source, + exception_id: exceptionId, + parent_id: parentId, + }; +} + +export { applyAggregateErrorsToEvent }; +//# sourceMappingURL=aggregate-errors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/aggregate-errors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/aggregate-errors.js.map new file mode 100644 index 0000000..490d0aa --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/aggregate-errors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"aggregate-errors.js","sources":["../../../src/utils/aggregate-errors.ts"],"sourcesContent":["import type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isInstanceOf } from './is';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): void {\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: Exception | undefined =\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 as ExtendedError,\n key,\n event.exception.values,\n originalException,\n 0,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n prevExceptions: Exception[],\n exception: Exception,\n exceptionId: number,\n): Exception[] {\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);\n const newException = exceptionFromErrorImplementation(parser, error[key] as Error);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key] as ExtendedError,\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 (Array.isArray(error.errors)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, childError as Error);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError as ExtendedError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception: Exception, exceptionId: number): void {\n exception.mechanism = {\n handled: true,\n type: 'auto.core.linked_errors',\n ...exception.mechanism,\n ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception: Exception,\n source: string,\n exceptionId: number,\n parentId: number | undefined,\n): void {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ai/providerSkip.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ai/providerSkip.js new file mode 100644 index 0000000..ac214c9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ai/providerSkip.js @@ -0,0 +1,67 @@ +import { DEBUG_BUILD } from '../../debug-build.js'; +import { debug } from '../debug-logger.js'; + +/** + * Registry tracking which AI provider modules should skip instrumentation wrapping. + * + * This prevents duplicate spans when a higher-level integration (like LangChain) + * already instruments AI providers at a higher abstraction level. + */ +const SKIPPED_AI_PROVIDERS = new Set(); + +/** + * Mark AI provider modules to skip instrumentation wrapping. + * + * This prevents duplicate spans when a higher-level integration (like LangChain) + * already instruments AI providers at a higher abstraction level. + * + * @internal + * @param modules - Array of npm module names to skip (e.g., '@anthropic-ai/sdk', 'openai') + * + * @example + * ```typescript + * // In LangChain integration + * _INTERNAL_skipAiProviderWrapping(['@anthropic-ai/sdk', 'openai', '@google/generative-ai']); + * ``` + */ +function _INTERNAL_skipAiProviderWrapping(modules) { + modules.forEach(module => { + SKIPPED_AI_PROVIDERS.add(module); + DEBUG_BUILD && debug.log(`AI provider "${module}" wrapping will be skipped`); + }); +} + +/** + * Check if an AI provider module should skip instrumentation wrapping. + * + * @internal + * @param module - The npm module name (e.g., '@anthropic-ai/sdk', 'openai') + * @returns true if wrapping should be skipped + * + * @example + * ```typescript + * // In AI provider instrumentation + * if (_INTERNAL_shouldSkipAiProviderWrapping('@anthropic-ai/sdk')) { + * return Reflect.construct(Original, args); // Don't instrument + * } + * ``` + */ +function _INTERNAL_shouldSkipAiProviderWrapping(module) { + return SKIPPED_AI_PROVIDERS.has(module); +} + +/** + * Clear all AI provider skip registrations. + * + * This is automatically called at the start of Sentry.init() to ensure a clean state + * between different client initializations. + * + * @internal + */ +function _INTERNAL_clearAiProviderSkips() { + SKIPPED_AI_PROVIDERS.clear(); + DEBUG_BUILD && debug.log('Cleared AI provider skip registrations'); +} + +export { _INTERNAL_clearAiProviderSkips, _INTERNAL_shouldSkipAiProviderWrapping, _INTERNAL_skipAiProviderWrapping }; +//# sourceMappingURL=providerSkip.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ai/providerSkip.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ai/providerSkip.js.map new file mode 100644 index 0000000..8a8ee65 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ai/providerSkip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"providerSkip.js","sources":["../../../../src/utils/ai/providerSkip.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../debug-logger';\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 */\nexport function _INTERNAL_skipAiProviderWrapping(modules: string[]): void {\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 */\nexport function _INTERNAL_shouldSkipAiProviderWrapping(module: string): boolean {\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 */\nexport function _INTERNAL_clearAiProviderSkips(): void {\n SKIPPED_AI_PROVIDERS.clear();\n DEBUG_BUILD && debug.log('Cleared AI provider skip registrations');\n}\n"],"names":[],"mappings":";;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,oBAAA,GAAuB,IAAI,GAAG,EAAU;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gCAAgC,CAAC,OAAO,EAAkB;AAC1E,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;AAC5B,IAAI,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,IAAI,WAAA,IAAe,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAChF,EAAE,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sCAAsC,CAAC,MAAM,EAAmB;AAChF,EAAE,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,GAAS;AACvD,EAAE,oBAAoB,CAAC,KAAK,EAAE;AAC9B,EAAE,eAAe,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC;AACpE;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/anr.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/anr.js new file mode 100644 index 0000000..a8ce71b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/anr.js @@ -0,0 +1,73 @@ +import { filenameIsInApp } from './node-stack-trace.js'; +import { UNKNOWN_FUNCTION } from './stacktrace.js'; + +/** + * A node.js watchdog timer + * @param pollInterval The interval that we expect to get polled at + * @param anrThreshold The threshold for when we consider ANR + * @param callback The callback to call for ANR + * @returns An object with `poll` and `enabled` functions {@link WatchdogReturn} + */ +function watchdogTimer( + createTimer, + pollInterval, + anrThreshold, + callback, +) { + const timer = createTimer(); + let triggered = false; + let enabled = true; + + setInterval(() => { + const diffMs = timer.getTimeMs(); + + if (triggered === false && diffMs > pollInterval + anrThreshold) { + triggered = true; + if (enabled) { + callback(); + } + } + + if (diffMs < pollInterval + anrThreshold) { + triggered = false; + } + }, 20); + + return { + poll: () => { + timer.reset(); + }, + enabled: (state) => { + enabled = state; + }, + }; +} + +// types copied from inspector.d.ts + +/** + * Converts Debugger.CallFrame to Sentry StackFrame + */ +function callFrameToStackFrame( + frame, + url, + getModuleFromFilename, +) { + const filename = url ? url.replace(/^file:\/\//, '') : undefined; + + // CallFrame row/col are 0 based, whereas StackFrame are 1 based + const colno = frame.location.columnNumber ? frame.location.columnNumber + 1 : undefined; + const lineno = frame.location.lineNumber ? frame.location.lineNumber + 1 : undefined; + + return { + filename, + module: getModuleFromFilename(filename), + function: frame.functionName || UNKNOWN_FUNCTION, + colno, + lineno, + in_app: filename ? filenameIsInApp(filename) : undefined, + }; +} + +export { callFrameToStackFrame, watchdogTimer }; +//# sourceMappingURL=anr.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/anr.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/anr.js.map new file mode 100644 index 0000000..4be15b9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/anr.js.map @@ -0,0 +1 @@ +{"version":3,"file":"anr.js","sources":["../../../src/utils/anr.ts"],"sourcesContent":["import type { StackFrame } from '../types-hoist/stackframe';\nimport { filenameIsInApp } from './node-stack-trace';\nimport { UNKNOWN_FUNCTION } from './stacktrace';\n\ntype WatchdogReturn = {\n /** Resets the watchdog timer */\n poll: () => void;\n /** Enables or disables the watchdog timer */\n enabled: (state: boolean) => void;\n};\n\ntype CreateTimerImpl = () => { getTimeMs: () => number; reset: () => void };\n\n/**\n * A node.js watchdog timer\n * @param pollInterval The interval that we expect to get polled at\n * @param anrThreshold The threshold for when we consider ANR\n * @param callback The callback to call for ANR\n * @returns An object with `poll` and `enabled` functions {@link WatchdogReturn}\n */\nexport function watchdogTimer(\n createTimer: CreateTimerImpl,\n pollInterval: number,\n anrThreshold: number,\n callback: () => void,\n): WatchdogReturn {\n const timer = createTimer();\n let triggered = false;\n let enabled = true;\n\n setInterval(() => {\n const diffMs = timer.getTimeMs();\n\n if (triggered === false && diffMs > pollInterval + anrThreshold) {\n triggered = true;\n if (enabled) {\n callback();\n }\n }\n\n if (diffMs < pollInterval + anrThreshold) {\n triggered = false;\n }\n }, 20);\n\n return {\n poll: () => {\n timer.reset();\n },\n enabled: (state: boolean) => {\n enabled = state;\n },\n };\n}\n\n// types copied from inspector.d.ts\ninterface Location {\n scriptId: string;\n lineNumber: number;\n columnNumber?: number;\n}\n\ninterface CallFrame {\n functionName: string;\n location: Location;\n url: string;\n}\n\n/**\n * Converts Debugger.CallFrame to Sentry StackFrame\n */\nexport function callFrameToStackFrame(\n frame: CallFrame,\n url: string | undefined,\n getModuleFromFilename: (filename: string | undefined) => string | undefined,\n): StackFrame {\n const filename = url ? url.replace(/^file:\\/\\//, '') : undefined;\n\n // CallFrame row/col are 0 based, whereas StackFrame are 1 based\n const colno = frame.location.columnNumber ? frame.location.columnNumber + 1 : undefined;\n const lineno = frame.location.lineNumber ? frame.location.lineNumber + 1 : undefined;\n\n return {\n filename,\n module: getModuleFromFilename(filename),\n function: frame.functionName || UNKNOWN_FUNCTION,\n colno,\n lineno,\n in_app: filename ? filenameIsInApp(filename) : undefined,\n };\n}\n"],"names":[],"mappings":";;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa;AAC7B,EAAE,WAAW;AACb,EAAE,YAAY;AACd,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,EAAkB;AAClB,EAAE,MAAM,KAAA,GAAQ,WAAW,EAAE;AAC7B,EAAE,IAAI,SAAA,GAAY,KAAK;AACvB,EAAE,IAAI,OAAA,GAAU,IAAI;;AAEpB,EAAE,WAAW,CAAC,MAAM;AACpB,IAAI,MAAM,MAAA,GAAS,KAAK,CAAC,SAAS,EAAE;;AAEpC,IAAI,IAAI,SAAA,KAAc,KAAA,IAAS,MAAA,GAAS,YAAA,GAAe,YAAY,EAAE;AACrE,MAAM,SAAA,GAAY,IAAI;AACtB,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,QAAQ,EAAE;AAClB,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,MAAA,GAAS,YAAA,GAAe,YAAY,EAAE;AAC9C,MAAM,SAAA,GAAY,KAAK;AACvB,IAAI;AACJ,EAAE,CAAC,EAAE,EAAE,CAAC;;AAER,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,MAAM;AAChB,MAAM,KAAK,CAAC,KAAK,EAAE;AACnB,IAAI,CAAC;AACL,IAAI,OAAO,EAAE,CAAC,KAAK,KAAc;AACjC,MAAM,OAAA,GAAU,KAAK;AACrB,IAAI,CAAC;AACL,GAAG;AACH;;AAEA;;AAaA;AACA;AACA;AACO,SAAS,qBAAqB;AACrC,EAAE,KAAK;AACP,EAAE,GAAG;AACL,EAAE,qBAAqB;AACvB,EAAc;AACd,EAAE,MAAM,QAAA,GAAW,GAAA,GAAM,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAA,GAAI,SAAS;;AAElE;AACA,EAAE,MAAM,KAAA,GAAQ,KAAK,CAAC,QAAQ,CAAC,YAAA,GAAe,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAA,GAAI,SAAS;AACzF,EAAE,MAAM,MAAA,GAAS,KAAK,CAAC,QAAQ,CAAC,UAAA,GAAa,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAA,GAAI,SAAS;;AAEtF,EAAE,OAAO;AACT,IAAI,QAAQ;AACZ,IAAI,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC;AAC3C,IAAI,QAAQ,EAAE,KAAK,CAAC,YAAA,IAAgB,gBAAgB;AACpD,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM,EAAE,QAAA,GAAW,eAAe,CAAC,QAAQ,CAAA,GAAI,SAAS;AAC5D,GAAG;AACH;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/baggage.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/baggage.js new file mode 100644 index 0000000..03c6548 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/baggage.js @@ -0,0 +1,170 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug } from './debug-logger.js'; +import { isString } from './is.js'; + +const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-'; + +const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/; + +/** + * Max length of a serialized baggage string + * + * https://www.w3.org/TR/baggage/#limits + */ +const MAX_BAGGAGE_STRING_LENGTH = 8192; + +/** + * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the "sentry-" prefixed values + * from it. + * + * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks. + * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise. + */ +function baggageHeaderToDynamicSamplingContext( + // Very liberal definition of what any incoming header might look like + baggageHeader, +) { + const baggageObject = parseBaggageHeader(baggageHeader); + + if (!baggageObject) { + return undefined; + } + + // Read all "sentry-" prefixed values out of the baggage object and put it onto a dynamic sampling context object. + const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => { + if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) { + const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length); + acc[nonPrefixedKey] = value; + } + return acc; + }, {}); + + // Only return a dynamic sampling context object if there are keys in it. + // A keyless object means there were no sentry values on the header, which means that there is no DSC. + if (Object.keys(dynamicSamplingContext).length > 0) { + return dynamicSamplingContext ; + } else { + return undefined; + } +} + +/** + * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with "sentry-". + * + * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility + * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is + * `undefined` the function will return `undefined`. + * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext` + * was `undefined`, or if `dynamicSamplingContext` didn't contain any values. + */ +function dynamicSamplingContextToSentryBaggageHeader( + // this also takes undefined for convenience and bundle size in other places + dynamicSamplingContext, +) { + if (!dynamicSamplingContext) { + return undefined; + } + + // Prefix all DSC keys with "sentry-" and put them into a new object + const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce( + (acc, [dscKey, dscValue]) => { + if (dscValue) { + acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue; + } + return acc; + }, + {}, + ); + + return objectToBaggageHeader(sentryPrefixedDSC); +} + +/** + * Take a baggage header and parse it into an object. + */ +function parseBaggageHeader( + baggageHeader, +) { + if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) { + return undefined; + } + + if (Array.isArray(baggageHeader)) { + // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it + return baggageHeader.reduce((acc, curr) => { + const currBaggageObject = baggageHeaderToObject(curr); + Object.entries(currBaggageObject).forEach(([key, value]) => { + acc[key] = value; + }); + return acc; + }, {}); + } + + return baggageHeaderToObject(baggageHeader); +} + +/** + * Will parse a baggage header, which is a simple key-value map, into a flat object. + * + * @param baggageHeader The baggage header to parse. + * @returns a flat object containing all the key-value pairs from `baggageHeader`. + */ +function baggageHeaderToObject(baggageHeader) { + return baggageHeader + .split(',') + .map(baggageEntry => { + const eqIdx = baggageEntry.indexOf('='); + if (eqIdx === -1) { + // Likely an invalid entry + return []; + } + const key = baggageEntry.slice(0, eqIdx); + const value = baggageEntry.slice(eqIdx + 1); + return [key, value].map(keyOrValue => { + try { + return decodeURIComponent(keyOrValue.trim()); + } catch { + // We ignore errors here, e.g. if the value cannot be URL decoded. + // This will then be skipped in the next step + return; + } + }); + }) + .reduce((acc, [key, value]) => { + if (key && value) { + acc[key] = value; + } + return acc; + }, {}); +} + +/** + * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs. + * + * @param object The object to turn into a baggage header. + * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header + * is not spec compliant. + */ +function objectToBaggageHeader(object) { + if (Object.keys(object).length === 0) { + // An empty baggage header is not spec compliant: We return undefined. + return undefined; + } + + return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => { + const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`; + const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`; + if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) { + DEBUG_BUILD && + debug.warn( + `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`, + ); + return baggageHeader; + } else { + return newBaggageHeader; + } + }, ''); +} + +export { MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader, objectToBaggageHeader, parseBaggageHeader }; +//# sourceMappingURL=baggage.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/baggage.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/baggage.js.map new file mode 100644 index 0000000..3a6aa36 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/baggage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"baggage.js","sources":["../../../src/utils/baggage.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { debug } from './debug-logger';\nimport { isString } from './is';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const 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 */\nexport const 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 */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial | undefined {\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.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\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 as Partial;\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 */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext?: Partial,\n): string | undefined {\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 */\nexport function parseBaggageHeader(\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Record | undefined {\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: string): Record {\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 */\nexport function objectToBaggageHeader(object: Record): string | undefined {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/breadcrumb-log-level.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/breadcrumb-log-level.js new file mode 100644 index 0000000..42d3338 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/breadcrumb-log-level.js @@ -0,0 +1,18 @@ +/** + * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code. + */ +function getBreadcrumbLogLevelFromHttpStatusCode(statusCode) { + // NOTE: undefined defaults to 'info' in Sentry + if (statusCode === undefined) { + return undefined; + } else if (statusCode >= 400 && statusCode < 500) { + return 'warning'; + } else if (statusCode >= 500) { + return 'error'; + } else { + return undefined; + } +} + +export { getBreadcrumbLogLevelFromHttpStatusCode }; +//# sourceMappingURL=breadcrumb-log-level.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/breadcrumb-log-level.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/breadcrumb-log-level.js.map new file mode 100644 index 0000000..642a6c6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/breadcrumb-log-level.js.map @@ -0,0 +1 @@ +{"version":3,"file":"breadcrumb-log-level.js","sources":["../../../src/utils/breadcrumb-log-level.ts"],"sourcesContent":["import type { SeverityLevel } from '../types-hoist/severity';\n\n/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nexport function getBreadcrumbLogLevelFromHttpStatusCode(statusCode: number | undefined): SeverityLevel | undefined {\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"],"names":[],"mappings":"AAEA;AACA;AACA;AACO,SAAS,uCAAuC,CAAC,UAAU,EAAiD;AACnH;AACA,EAAE,IAAI,UAAA,KAAe,SAAS,EAAE;AAChC,IAAI,OAAO,SAAS;AACpB,EAAE,CAAA,MAAO,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAG,EAAE;AACpD,IAAI,OAAO,SAAS;AACpB,EAAE,OAAO,IAAI,UAAA,IAAc,GAAG,EAAE;AAChC,IAAI,OAAO,OAAO;AAClB,EAAE,OAAO;AACT,IAAI,OAAO,SAAS;AACpB,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/browser.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/browser.js new file mode 100644 index 0000000..2ad52b0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/browser.js @@ -0,0 +1,171 @@ +import { isString } from './is.js'; +import { GLOBAL_OBJ } from './worldwide.js'; + +const WINDOW = GLOBAL_OBJ ; + +const DEFAULT_MAX_STRING_LENGTH = 80; + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @returns generated DOM path + */ +function htmlTreeAsString( + elem, + options = {}, +) { + if (!elem) { + return ''; + } + + // try/catch both: + // - accessing event.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // - can throw an exception in some circumstances. + try { + let currentElem = elem ; + const MAX_TRAVERSE_HEIGHT = 5; + const out = []; + let height = 0; + let len = 0; + const separator = ' > '; + const sepLength = separator.length; + let nextStr; + const keyAttrs = Array.isArray(options) ? options : options.keyAttrs; + const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH; + + while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = _htmlElementAsString(currentElem, keyAttrs); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds maxStringLength + // (ignore this limit if we are on the first iteration) + if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + currentElem = currentElem.parentNode; + } + + return out.reverse().join(separator); + } catch { + return ''; + } +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @returns generated DOM path + */ +function _htmlElementAsString(el, keyAttrs) { + const elem = el + +; + + const out = []; + + if (!elem?.tagName) { + return ''; + } + + // @ts-expect-error WINDOW has HTMLElement + if (WINDOW.HTMLElement) { + // If using the component name annotation plugin, this value may be available on the DOM node + if (elem instanceof HTMLElement && elem.dataset) { + if (elem.dataset['sentryComponent']) { + return elem.dataset['sentryComponent']; + } + if (elem.dataset['sentryElement']) { + return elem.dataset['sentryElement']; + } + } + } + + out.push(elem.tagName.toLowerCase()); + + // Pairs of attribute keys defined in `serializeAttribute` and their values on element. + const keyAttrPairs = keyAttrs?.length + ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)]) + : null; + + if (keyAttrPairs?.length) { + keyAttrPairs.forEach(keyAttrPair => { + out.push(`[${keyAttrPair[0]}="${keyAttrPair[1]}"]`); + }); + } else { + if (elem.id) { + out.push(`#${elem.id}`); + } + + const className = elem.className; + if (className && isString(className)) { + const classes = className.split(/\s+/); + for (const c of classes) { + out.push(`.${c}`); + } + } + } + const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt']; + for (const k of allowedAttrs) { + const attr = elem.getAttribute(k); + if (attr) { + out.push(`[${k}="${attr}"]`); + } + } + + return out.join(''); +} + +/** + * A safe form of location.href + */ +function getLocationHref() { + try { + return WINDOW.document.location.href; + } catch { + return ''; + } +} + +/** + * Given a DOM element, traverses up the tree until it finds the first ancestor node + * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking + * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed. + * + * @returns a string representation of the component for the provided DOM element, or `null` if not found + */ +function getComponentName(elem) { + // @ts-expect-error WINDOW has HTMLElement + if (!WINDOW.HTMLElement) { + return null; + } + + let currentElem = elem ; + const MAX_TRAVERSE_HEIGHT = 5; + for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) { + if (!currentElem) { + return null; + } + + if (currentElem instanceof HTMLElement) { + if (currentElem.dataset['sentryComponent']) { + return currentElem.dataset['sentryComponent']; + } + if (currentElem.dataset['sentryElement']) { + return currentElem.dataset['sentryElement']; + } + } + + currentElem = currentElem.parentNode; + } + + return null; +} + +export { getComponentName, getLocationHref, htmlTreeAsString }; +//# sourceMappingURL=browser.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/browser.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/browser.js.map new file mode 100644 index 0000000..7681d23 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/browser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"browser.js","sources":["../../../src/utils/browser.ts"],"sourcesContent":["import { isString } from './is';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n parentNode: SimpleNode;\n} | null;\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 */\nexport function htmlTreeAsString(\n elem: unknown,\n options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\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 as SimpleNode;\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: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\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 const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (const k of allowedAttrs) {\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 */\nexport function getLocationHref(): string {\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 */\nexport function getComponentName(elem: unknown): string | null {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem as SimpleNode;\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/clientreport.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/clientreport.js new file mode 100644 index 0000000..22c1c30 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/clientreport.js @@ -0,0 +1,25 @@ +import { createEnvelope } from './envelope.js'; +import { dateTimestampInSeconds } from './time.js'; + +/** + * Creates client report envelope + * @param discarded_events An array of discard events + * @param dsn A DSN that can be set on the header. Optional. + */ +function createClientReportEnvelope( + discarded_events, + dsn, + timestamp, +) { + const clientReportItem = [ + { type: 'client_report' }, + { + timestamp: timestamp || dateTimestampInSeconds(), + discarded_events, + }, + ]; + return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]); +} + +export { createClientReportEnvelope }; +//# sourceMappingURL=clientreport.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/clientreport.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/clientreport.js.map new file mode 100644 index 0000000..9d15ff4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/clientreport.js.map @@ -0,0 +1 @@ +{"version":3,"file":"clientreport.js","sources":["../../../src/utils/clientreport.ts"],"sourcesContent":["import type { ClientReport } from '../types-hoist/clientreport';\nimport type { ClientReportEnvelope, ClientReportItem } from '../types-hoist/envelope';\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\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 */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n"],"names":[],"mappings":";;;AAKA;AACA;AACA;AACA;AACA;AACO,SAAS,0BAA0B;AAC1C,EAAE,gBAAgB;AAClB,EAAE,GAAG;AACL,EAAE,SAAS;AACX,EAAwB;AACxB,EAAE,MAAM,gBAAgB,GAAqB;AAC7C,IAAI,EAAE,IAAI,EAAE,eAAA,EAAiB;AAC7B,IAAI;AACJ,MAAM,SAAS,EAAE,SAAA,IAAa,sBAAsB,EAAE;AACtD,MAAM,gBAAgB;AACtB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,cAAc,CAAuB,GAAA,GAAM,EAAE,GAAA,EAAI,GAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC;AACrF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/cookie.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/cookie.js new file mode 100644 index 0000000..0bf55c6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/cookie.js @@ -0,0 +1,81 @@ +/** + * This code was originally copied from the 'cookie` module at v0.5.0 and was simplified for our use case. + * https://github.com/jshttp/cookie/blob/a0c84147aab6266bdb3996cf4062e93907c0b0fc/index.js + * It had the following license: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Roman Shtylman + * Copyright (c) 2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * Parses a cookie string + */ +function parseCookie(str) { + const obj = {}; + let index = 0; + + while (index < str.length) { + const eqIdx = str.indexOf('=', index); + + // no more cookie pairs + if (eqIdx === -1) { + break; + } + + let endIdx = str.indexOf(';', index); + + if (endIdx === -1) { + endIdx = str.length; + } else if (endIdx < eqIdx) { + // backtrack on prior semicolon + index = str.lastIndexOf(';', eqIdx - 1) + 1; + continue; + } + + const key = str.slice(index, eqIdx).trim(); + + // only assign once + if (undefined === obj[key]) { + let val = str.slice(eqIdx + 1, endIdx).trim(); + + // quoted values + if (val.charCodeAt(0) === 0x22) { + val = val.slice(1, -1); + } + + try { + obj[key] = val.indexOf('%') !== -1 ? decodeURIComponent(val) : val; + } catch { + obj[key] = val; + } + } + + index = endIdx + 1; + } + + return obj; +} + +export { parseCookie }; +//# sourceMappingURL=cookie.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/cookie.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/cookie.js.map new file mode 100644 index 0000000..db0d87f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/cookie.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cookie.js","sources":["../../../src/utils/cookie.ts"],"sourcesContent":["/**\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 */\nexport function parseCookie(str: string): Record {\n const obj: Record = {};\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"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO,SAAS,WAAW,CAAC,GAAG,EAAkC;AACjE,EAAE,MAAM,GAAG,GAA2B,EAAE;AACxC,EAAE,IAAI,KAAA,GAAQ,CAAC;;AAEf,EAAE,OAAO,KAAA,GAAQ,GAAG,CAAC,MAAM,EAAE;AAC7B,IAAI,MAAM,KAAA,GAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;;AAEzC;AACA,IAAI,IAAI,KAAA,KAAU,EAAE,EAAE;AACtB,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,MAAA,GAAS,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;;AAExC,IAAI,IAAI,MAAA,KAAW,EAAE,EAAE;AACvB,MAAM,MAAA,GAAS,GAAG,CAAC,MAAM;AACzB,IAAI,OAAO,IAAI,MAAA,GAAS,KAAK,EAAE;AAC/B;AACA,MAAM,KAAA,GAAQ,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,KAAA,GAAQ,CAAC,CAAA,GAAI,CAAC;AACjD,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,GAAA,GAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE;;AAE9C;AACA,IAAI,IAAI,SAAA,KAAc,GAAG,CAAC,GAAG,CAAC,EAAE;AAChC,MAAM,IAAI,GAAA,GAAM,GAAG,CAAC,KAAK,CAAC,KAAA,GAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;;AAEnD;AACA,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA,KAAM,IAAI,EAAE;AACtC,QAAQ,GAAA,GAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,MAAM;;AAEN,MAAM,IAAI;AACV,QAAQ,GAAG,CAAC,GAAG,CAAA,GAAI,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAA,GAAI,GAAG;AAC1E,MAAM,EAAE,MAAM;AACd,QAAQ,GAAG,CAAC,GAAG,CAAA,GAAI,GAAG;AACtB,MAAM;AACN,IAAI;;AAEJ,IAAI,KAAA,GAAQ,MAAA,GAAS,CAAC;AACtB,EAAE;;AAEF,EAAE,OAAO,GAAG;AACZ;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debounce.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debounce.js new file mode 100644 index 0000000..5ab1b04 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debounce.js @@ -0,0 +1,66 @@ +/** + * Heavily simplified debounce function based on lodash.debounce. + * + * This function takes a callback function (@param fun) and delays its invocation + * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options, + * which ensures that the callback is invoked at least once after the specified max. wait time. + * + * @param func the function whose invocation is to be debounced + * @param wait the minimum time until the function is invoked after it was called once + * @param options the options object, which can contain the `maxWait` property + * + * @returns the debounced version of the function, which needs to be called at least once to start the + * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc + * was already invoked in the meantime, return @param func's return value. + * The debounced function has two additional properties: + * - `flush`: Invokes the debounced function immediately and returns its return value + * - `cancel`: Cancels the debouncing process and resets the debouncing timer + */ +function debounce(func, wait, options) { + let callbackReturnValue; + + let timerId; + let maxTimerId; + + const maxWait = options?.maxWait ? Math.max(options.maxWait, wait) : 0; + const setTimeoutImpl = options?.setTimeoutImpl || setTimeout; + + function invokeFunc() { + cancelTimers(); + callbackReturnValue = func(); + return callbackReturnValue; + } + + function cancelTimers() { + timerId !== undefined && clearTimeout(timerId); + maxTimerId !== undefined && clearTimeout(maxTimerId); + timerId = maxTimerId = undefined; + } + + function flush() { + if (timerId !== undefined || maxTimerId !== undefined) { + return invokeFunc(); + } + return callbackReturnValue; + } + + function debounced() { + if (timerId) { + clearTimeout(timerId); + } + timerId = setTimeoutImpl(invokeFunc, wait); + + if (maxWait && maxTimerId === undefined) { + maxTimerId = setTimeoutImpl(invokeFunc, maxWait); + } + + return callbackReturnValue; + } + + debounced.cancel = cancelTimers; + debounced.flush = flush; + return debounced; +} + +export { debounce }; +//# sourceMappingURL=debounce.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debounce.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debounce.js.map new file mode 100644 index 0000000..4dc432e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debounce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debounce.js","sources":["../../../src/utils/debounce.ts"],"sourcesContent":["type DebouncedCallback = {\n (): void | unknown;\n flush: () => void | unknown;\n cancel: () => void;\n};\ntype CallbackFunction = () => unknown;\ntype DebounceOptions = {\n /** The max. time in ms to wait for the callback to be invoked. */\n maxWait?: number;\n /** This can be overwritten to use a different setTimeout implementation, e.g. to avoid triggering change detection in Angular */\n setTimeoutImpl?: typeof setTimeout;\n};\n\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 */\nexport function debounce(func: CallbackFunction, wait: number, options?: DebounceOptions): DebouncedCallback {\n let callbackReturnValue: unknown;\n\n let timerId: ReturnType | undefined;\n let maxTimerId: ReturnType | undefined;\n\n const maxWait = options?.maxWait ? Math.max(options.maxWait, wait) : 0;\n const setTimeoutImpl = options?.setTimeoutImpl || setTimeout;\n\n function invokeFunc(): unknown {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers(): void {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush(): unknown {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced(): unknown {\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"],"names":[],"mappings":"AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,IAAI,EAAoB,IAAI,EAAU,OAAO,EAAuC;AAC7G,EAAE,IAAI,mBAAmB;;AAEzB,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,UAAU;;AAEhB,EAAE,MAAM,OAAA,GAAU,OAAO,EAAE,OAAA,GAAU,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAA,GAAI,CAAC;AACxE,EAAE,MAAM,cAAA,GAAiB,OAAO,EAAE,cAAA,IAAkB,UAAU;;AAE9D,EAAE,SAAS,UAAU,GAAY;AACjC,IAAI,YAAY,EAAE;AAClB,IAAI,mBAAA,GAAsB,IAAI,EAAE;AAChC,IAAI,OAAO,mBAAmB;AAC9B,EAAE;;AAEF,EAAE,SAAS,YAAY,GAAS;AAChC,IAAI,YAAY,SAAA,IAAa,YAAY,CAAC,OAAO,CAAC;AAClD,IAAI,eAAe,SAAA,IAAa,YAAY,CAAC,UAAU,CAAC;AACxD,IAAI,OAAA,GAAU,UAAA,GAAa,SAAS;AACpC,EAAE;;AAEF,EAAE,SAAS,KAAK,GAAY;AAC5B,IAAI,IAAI,OAAA,KAAY,aAAa,UAAA,KAAe,SAAS,EAAE;AAC3D,MAAM,OAAO,UAAU,EAAE;AACzB,IAAI;AACJ,IAAI,OAAO,mBAAmB;AAC9B,EAAE;;AAEF,EAAE,SAAS,SAAS,GAAY;AAChC,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,YAAY,CAAC,OAAO,CAAC;AAC3B,IAAI;AACJ,IAAI,UAAU,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC;;AAE9C,IAAI,IAAI,OAAA,IAAW,UAAA,KAAe,SAAS,EAAE;AAC7C,MAAM,aAAa,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC;AACtD,IAAI;;AAEJ,IAAI,OAAO,mBAAmB;AAC9B,EAAE;;AAEF,EAAE,SAAS,CAAC,MAAA,GAAS,YAAY;AACjC,EAAE,SAAS,CAAC,KAAA,GAAQ,KAAK;AACzB,EAAE,OAAO,SAAS;AAClB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-ids.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-ids.js new file mode 100644 index 0000000..37bba74 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-ids.js @@ -0,0 +1,114 @@ +import { normalizeStackTracePath } from './stacktrace.js'; +import { GLOBAL_OBJ } from './worldwide.js'; + +let parsedStackResults; +let lastSentryKeysCount; +let lastNativeKeysCount; +let cachedFilenameDebugIds; + +/** + * Returns a map of filenames to debug identifiers. + * Supports both proprietary _sentryDebugIds and native _debugIds (e.g., from Vercel) formats. + */ +function getFilenameToDebugIdMap(stackParser) { + const sentryDebugIdMap = GLOBAL_OBJ._sentryDebugIds; + const nativeDebugIdMap = GLOBAL_OBJ._debugIds; + + if (!sentryDebugIdMap && !nativeDebugIdMap) { + return {}; + } + + const sentryDebugIdKeys = sentryDebugIdMap ? Object.keys(sentryDebugIdMap) : []; + const nativeDebugIdKeys = nativeDebugIdMap ? Object.keys(nativeDebugIdMap) : []; + + // If the count of registered globals hasn't changed since the last call, we + // can just return the cached result. + if ( + cachedFilenameDebugIds && + sentryDebugIdKeys.length === lastSentryKeysCount && + nativeDebugIdKeys.length === lastNativeKeysCount + ) { + return cachedFilenameDebugIds; + } + + lastSentryKeysCount = sentryDebugIdKeys.length; + lastNativeKeysCount = nativeDebugIdKeys.length; + + // Build a map of filename -> debug_id from both sources + cachedFilenameDebugIds = {}; + + if (!parsedStackResults) { + parsedStackResults = {}; + } + + const processDebugIds = (debugIdKeys, debugIdMap) => { + for (const key of debugIdKeys) { + const debugId = debugIdMap[key]; + const result = parsedStackResults?.[key]; + + if (result && cachedFilenameDebugIds && debugId) { + // Use cached filename but update with current debug ID + cachedFilenameDebugIds[result[0]] = debugId; + // Update cached result with new debug ID + if (parsedStackResults) { + parsedStackResults[key] = [result[0], debugId]; + } + } else if (debugId) { + const parsedStack = stackParser(key); + + for (let i = parsedStack.length - 1; i >= 0; i--) { + const stackFrame = parsedStack[i]; + const filename = stackFrame?.filename; + + if (filename && cachedFilenameDebugIds && parsedStackResults) { + cachedFilenameDebugIds[filename] = debugId; + parsedStackResults[key] = [filename, debugId]; + break; + } + } + } + } + }; + + if (sentryDebugIdMap) { + processDebugIds(sentryDebugIdKeys, sentryDebugIdMap); + } + + // Native _debugIds will override _sentryDebugIds if same file + if (nativeDebugIdMap) { + processDebugIds(nativeDebugIdKeys, nativeDebugIdMap); + } + + return cachedFilenameDebugIds; +} + +/** + * Returns a list of debug images for the given resources. + */ +function getDebugImagesForResources( + stackParser, + resource_paths, +) { + const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser); + + if (!filenameDebugIdMap) { + return []; + } + + const images = []; + for (const path of resource_paths) { + const normalizedPath = normalizeStackTracePath(path); + if (normalizedPath && filenameDebugIdMap[normalizedPath]) { + images.push({ + type: 'sourcemap', + code_file: path, + debug_id: filenameDebugIdMap[normalizedPath], + }); + } + } + + return images; +} + +export { getDebugImagesForResources, getFilenameToDebugIdMap }; +//# sourceMappingURL=debug-ids.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-ids.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-ids.js.map new file mode 100644 index 0000000..4b8fa57 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-ids.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debug-ids.js","sources":["../../../src/utils/debug-ids.ts"],"sourcesContent":["import type { DebugImage } from '../types-hoist/debugMeta';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { normalizeStackTracePath } from './stacktrace';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype StackString = string;\ntype CachedResult = [string, string];\n\nlet parsedStackResults: Record | undefined;\nlet lastSentryKeysCount: number | undefined;\nlet lastNativeKeysCount: number | undefined;\nlet cachedFilenameDebugIds: Record | undefined;\n\n/**\n * Clears the cached debug ID mappings.\n * Useful for testing or when the global debug ID state changes.\n */\nexport function clearDebugIdCache(): void {\n parsedStackResults = undefined;\n lastSentryKeysCount = undefined;\n lastNativeKeysCount = undefined;\n cachedFilenameDebugIds = undefined;\n}\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 */\nexport function getFilenameToDebugIdMap(stackParser: StackParser): Record {\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: string[], debugIdMap: Record): void => {\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 */\nexport function getDebugImagesForResources(\n stackParser: StackParser,\n resource_paths: ReadonlyArray,\n): DebugImage[] {\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n if (!filenameDebugIdMap) {\n return [];\n }\n\n const images: DebugImage[] = [];\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-logger.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-logger.js new file mode 100644 index 0000000..d8dbe58 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-logger.js @@ -0,0 +1,119 @@ +import { getGlobalSingleton } from '../carrier.js'; +import { DEBUG_BUILD } from '../debug-build.js'; +import { GLOBAL_OBJ } from './worldwide.js'; + +const CONSOLE_LEVELS = [ + 'debug', + 'info', + 'warn', + 'error', + 'log', + 'assert', + 'trace', +] ; + +/** Prefix for logging strings */ +const PREFIX = 'Sentry Logger '; + +/** This may be mutated by the console instrumentation. */ +const originalConsoleMethods + + = {}; + +/** + * Temporarily disable sentry console instrumentations. + * + * @param callback The function to run against the original `console` messages + * @returns The results of the callback + */ +function consoleSandbox(callback) { + if (!('console' in GLOBAL_OBJ)) { + return callback(); + } + + const console = GLOBAL_OBJ.console; + const wrappedFuncs = {}; + + const wrappedLevels = Object.keys(originalConsoleMethods) ; + + // Restore all wrapped console methods + wrappedLevels.forEach(level => { + const originalConsoleMethod = originalConsoleMethods[level]; + wrappedFuncs[level] = console[level] ; + console[level] = originalConsoleMethod ; + }); + + try { + return callback(); + } finally { + // Revert restoration to wrapped state + wrappedLevels.forEach(level => { + console[level] = wrappedFuncs[level] ; + }); + } +} + +function enable() { + _getLoggerSettings().enabled = true; +} + +function disable() { + _getLoggerSettings().enabled = false; +} + +function isEnabled() { + return _getLoggerSettings().enabled; +} + +function log(...args) { + _maybeLog('log', ...args); +} + +function warn(...args) { + _maybeLog('warn', ...args); +} + +function error(...args) { + _maybeLog('error', ...args); +} + +function _maybeLog(level, ...args) { + if (!DEBUG_BUILD) { + return; + } + + if (isEnabled()) { + consoleSandbox(() => { + GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args); + }); + } +} + +function _getLoggerSettings() { + if (!DEBUG_BUILD) { + return { enabled: false }; + } + + return getGlobalSingleton('loggerSettings', () => ({ enabled: false })); +} + +/** + * This is a logger singleton which either logs things or no-ops if logging is not enabled. + */ +const debug = { + /** Enable logging. */ + enable, + /** Disable logging. */ + disable, + /** Check if logging is enabled. */ + isEnabled, + /** Log a message. */ + log, + /** Log a warning. */ + warn, + /** Log an error. */ + error, +} ; + +export { CONSOLE_LEVELS, consoleSandbox, debug, originalConsoleMethods }; +//# sourceMappingURL=debug-logger.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-logger.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-logger.js.map new file mode 100644 index 0000000..0dea52e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/debug-logger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debug-logger.js","sources":["../../../src/utils/debug-logger.ts"],"sourcesContent":["import { getGlobalSingleton } from '../carrier';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from './worldwide';\n\nexport interface SentryDebugLogger {\n disable(): void;\n enable(): void;\n isEnabled(): boolean;\n log(...args: Parameters): void;\n warn(...args: Parameters): void;\n error(...args: Parameters): void;\n}\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] as const;\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: Partial<{\n log(...args: Parameters): void;\n info(...args: Parameters): void;\n warn(...args: Parameters): void;\n error(...args: Parameters): void;\n debug(...args: Parameters): void;\n assert(...args: Parameters): void;\n trace(...args: Parameters): void;\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 */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console;\n const wrappedFuncs: Partial void>> = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level];\n wrappedFuncs[level] = console[level] as (...args: unknown[]) => void;\n console[level] = originalConsoleMethod as (...args: unknown[]) => void;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] as (...args: unknown[]) => void;\n });\n }\n}\n\nfunction enable(): void {\n _getLoggerSettings().enabled = true;\n}\n\nfunction disable(): void {\n _getLoggerSettings().enabled = false;\n}\n\nfunction isEnabled(): boolean {\n return _getLoggerSettings().enabled;\n}\n\nfunction log(...args: Parameters): void {\n _maybeLog('log', ...args);\n}\n\nfunction info(...args: Parameters): void {\n _maybeLog('info', ...args);\n}\n\nfunction warn(...args: Parameters): void {\n _maybeLog('warn', ...args);\n}\n\nfunction error(...args: Parameters): void {\n _maybeLog('error', ...args);\n}\n\nfunction _maybeLog(level: ConsoleLevel, ...args: Parameters<(typeof console)[typeof level]>): void {\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(): { enabled: boolean } {\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 */\nexport const 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} satisfies SentryDebugLogger;\n"],"names":[],"mappings":";;;;AAcO,MAAM,cAAc,GAA4B;AACvD,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,CAAA;;AAEA;AACA,MAAM,MAAA,GAAS,gBAAgB;;AAE/B;MACa;;AAQb,GAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAI,QAAQ,EAAc;AACxD,EAAE,IAAI,EAAE,aAAa,UAAU,CAAC,EAAE;AAClC,IAAI,OAAO,QAAQ,EAAE;AACrB,EAAE;;AAEF,EAAE,MAAM,OAAA,GAAU,UAAU,CAAC,OAAO;AACpC,EAAE,MAAM,YAAY,GAAgE,EAAE;;AAEtF,EAAE,MAAM,gBAAgB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAA;;AAE1D;AACA,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS;AACjC,IAAI,MAAM,qBAAA,GAAwB,sBAAsB,CAAC,KAAK,CAAC;AAC/D,IAAI,YAAY,CAAC,KAAK,CAAA,GAAI,OAAO,CAAC,KAAK,CAAA;AACvC,IAAI,OAAO,CAAC,KAAK,CAAA,GAAI,qBAAA;AACrB,EAAE,CAAC,CAAC;;AAEJ,EAAE,IAAI;AACN,IAAI,OAAO,QAAQ,EAAE;AACrB,EAAE,UAAU;AACZ;AACA,IAAI,aAAa,CAAC,OAAO,CAAC,SAAS;AACnC,MAAM,OAAO,CAAC,KAAK,CAAA,GAAI,YAAY,CAAC,KAAK,CAAA;AACzC,IAAI,CAAC,CAAC;AACN,EAAE;AACF;;AAEA,SAAS,MAAM,GAAS;AACxB,EAAE,kBAAkB,EAAE,CAAC,OAAA,GAAU,IAAI;AACrC;;AAEA,SAAS,OAAO,GAAS;AACzB,EAAE,kBAAkB,EAAE,CAAC,OAAA,GAAU,KAAK;AACtC;;AAEA,SAAS,SAAS,GAAY;AAC9B,EAAE,OAAO,kBAAkB,EAAE,CAAC,OAAO;AACrC;;AAEA,SAAS,GAAG,CAAC,GAAG,IAAI,EAAwC;AAC5D,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;;AAMA,SAAS,IAAI,CAAC,GAAG,IAAI,EAAyC;AAC9D,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;AAC5B;;AAEA,SAAS,KAAK,CAAC,GAAG,IAAI,EAA0C;AAChE,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC7B;;AAEA,SAAS,SAAS,CAAC,KAAK,EAAgB,GAAG,IAAI,EAAoD;AACnG,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,SAAS,EAAE,EAAE;AACnB,IAAI,cAAc,CAAC,MAAM;AACzB,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA,MAAA,CAAA,CAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,GAAA,IAAA,CAAA;AACA,IAAA,CAAA,CAAA;AACA,EAAA;AACA;;AAEA,SAAA,kBAAA,GAAA;AACA,EAAA,IAAA,CAAA,WAAA,EAAA;AACA,IAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA;AACA,EAAA;;AAEA,EAAA,OAAA,kBAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,CAAA,CAAA;AACA;;AAEA;AACA;AACA;AACA,MAAA,KAAA,GAAA;AACA;AACA,EAAA,MAAA;AACA;AACA,EAAA,OAAA;AACA;AACA,EAAA,SAAA;AACA;AACA,EAAA,GAAA;AACA;AACA,EAAA,IAAA;AACA;AACA,EAAA,KAAA;AACA,CAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/dsn.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/dsn.js new file mode 100644 index 0000000..540492a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/dsn.js @@ -0,0 +1,165 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { consoleSandbox, debug } from './debug-logger.js'; + +/** Regular expression used to extract org ID from a DSN host. */ +const ORG_ID_REGEX = /^o(\d+)\./; + +/** Regular expression used to parse a Dsn. */ +const DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/; + +function isValidProtocol(protocol) { + return protocol === 'http' || protocol === 'https'; +} + +/** + * Renders the string representation of this Dsn. + * + * By default, this will render the public representation without the password + * component. To get the deprecated private representation, set `withPassword` + * to true. + * + * @param withPassword When set to true, the password will be included. + */ +function dsnToString(dsn, withPassword = false) { + const { host, path, pass, port, projectId, protocol, publicKey } = dsn; + return ( + `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` + + `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}` + ); +} + +/** + * Parses a Dsn from a given string. + * + * @param str A Dsn as string + * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string + */ +function dsnFromString(str) { + const match = DSN_REGEX.exec(str); + + if (!match) { + // This should be logged to the console + consoleSandbox(() => { + // eslint-disable-next-line no-console + console.error(`Invalid Sentry Dsn: ${str}`); + }); + return undefined; + } + + const [protocol, publicKey, pass = '', host = '', port = '', lastPath = ''] = match.slice(1); + let path = ''; + let projectId = lastPath; + + const split = projectId.split('/'); + if (split.length > 1) { + path = split.slice(0, -1).join('/'); + projectId = split.pop() ; + } + + if (projectId) { + const projectMatch = projectId.match(/^\d+/); + if (projectMatch) { + projectId = projectMatch[0]; + } + } + + return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey }); +} + +function dsnFromComponents(components) { + return { + protocol: components.protocol, + publicKey: components.publicKey || '', + pass: components.pass || '', + host: components.host, + port: components.port || '', + path: components.path || '', + projectId: components.projectId, + }; +} + +function validateDsn(dsn) { + if (!DEBUG_BUILD) { + return true; + } + + const { port, projectId, protocol } = dsn; + + const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId']; + const hasMissingRequiredComponent = requiredComponents.find(component => { + if (!dsn[component]) { + debug.error(`Invalid Sentry Dsn: ${component} missing`); + return true; + } + return false; + }); + + if (hasMissingRequiredComponent) { + return false; + } + + if (!projectId.match(/^\d+$/)) { + debug.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`); + return false; + } + + if (!isValidProtocol(protocol)) { + debug.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`); + return false; + } + + if (port && isNaN(parseInt(port, 10))) { + debug.error(`Invalid Sentry Dsn: Invalid port ${port}`); + return false; + } + + return true; +} + +/** + * Extract the org ID from a DSN host. + * + * @param host The host from a DSN + * @returns The org ID if found, undefined otherwise + */ +function extractOrgIdFromDsnHost(host) { + const match = host.match(ORG_ID_REGEX); + + return match?.[1]; +} + +/** + * Returns the organization ID of the client. + * + * The organization ID is extracted from the DSN. If the client options include a `orgId`, this will always take precedence. + */ +function extractOrgIdFromClient(client) { + const options = client.getOptions(); + + const { host } = client.getDsn() || {}; + + let org_id; + + if (options.orgId) { + org_id = String(options.orgId); + } else if (host) { + org_id = extractOrgIdFromDsnHost(host); + } + + return org_id; +} + +/** + * Creates a valid Sentry Dsn object, identifying a Sentry instance and project. + * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source + */ +function makeDsn(from) { + const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from); + if (!components || !validateDsn(components)) { + return undefined; + } + return components; +} + +export { dsnFromString, dsnToString, extractOrgIdFromClient, extractOrgIdFromDsnHost, makeDsn }; +//# sourceMappingURL=dsn.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/dsn.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/dsn.js.map new file mode 100644 index 0000000..f03b179 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/dsn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dsn.js","sources":["../../../src/utils/dsn.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { DsnComponents, DsnLike, DsnProtocol } from '../types-hoist/dsn';\nimport { consoleSandbox, debug } from './debug-logger';\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?: string): protocol is DsnProtocol {\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 */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\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 */\nexport function dsnFromString(str: string): DsnComponents | undefined {\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() as string;\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 as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\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: DsnComponents): boolean {\n if (!DEBUG_BUILD) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['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 */\nexport function extractOrgIdFromDsnHost(host: string): string | undefined {\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 */\nexport function extractOrgIdFromClient(client: Client): string | undefined {\n const options = client.getOptions();\n\n const { host } = client.getDsn() || {};\n\n let org_id: string | undefined;\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 */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/env.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/env.js new file mode 100644 index 0000000..b4920c4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/env.js @@ -0,0 +1,34 @@ +/* + * This module exists for optimizations in the build process through rollup and terser. We define some global + * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these + * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will + * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to + * `debug` and preventing node-related code from appearing in browser bundles. + * + * Attention: + * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by + * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack) + * having issues tree-shaking these constants across package boundaries. + * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want + * users to be able to shake away expressions that it guards. + */ + +/** + * Figures out if we're building a browser bundle. + * + * @returns true if this is a browser bundle build. + */ +function isBrowserBundle() { + return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__; +} + +/** + * Get source of SDK. + */ +function getSDKSource() { + // This comment is used to identify this line in the CDN bundle build step and replace this with "return 'cdn';" + /* __SENTRY_SDK_SOURCE__ */ return 'npm'; +} + +export { getSDKSource, isBrowserBundle }; +//# sourceMappingURL=env.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/env.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/env.js.map new file mode 100644 index 0000000..5006ed4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/env.js.map @@ -0,0 +1 @@ +{"version":3,"file":"env.js","sources":["../../../src/utils/env.ts"],"sourcesContent":["/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `debug` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader' | 'aws-lambda-layer';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n // This comment is used to identify this line in the CDN bundle build step and replace this with \"return 'cdn';\"\n /* __SENTRY_SDK_SOURCE__ */ return 'npm';\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,GAAY;AAC3C,EAAE,OAAO,OAAO,yBAAA,KAA8B,eAAe,CAAC,CAAC,yBAAyB;AACxF;;AAEA;AACA;AACA;AACO,SAAS,YAAY,GAAc;AAC1C;AACA,8BAA8B,OAAO,KAAK;AAC1C;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/envelope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/envelope.js new file mode 100644 index 0000000..2f6e2f7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/envelope.js @@ -0,0 +1,251 @@ +import { getSentryCarrier } from '../carrier.js'; +import { dsnToString } from './dsn.js'; +import { normalize } from './normalize.js'; +import { GLOBAL_OBJ } from './worldwide.js'; + +/** + * Creates an envelope. + * Make sure to always explicitly provide the generic to this function + * so that the envelope types resolve correctly. + */ +function createEnvelope(headers, items = []) { + return [headers, items] ; +} + +/** + * Add an item to an envelope. + * Make sure to always explicitly provide the generic to this function + * so that the envelope types resolve correctly. + */ +function addItemToEnvelope(envelope, newItem) { + const [headers, items] = envelope; + return [headers, [...items, newItem]] ; +} + +/** + * Convenience function to loop through the items and item types of an envelope. + * (This function was mostly created because working with envelope types is painful at the moment) + * + * If the callback returns true, the rest of the items will be skipped. + */ +function forEachEnvelopeItem( + envelope, + callback, +) { + const envelopeItems = envelope[1]; + + for (const envelopeItem of envelopeItems) { + const envelopeItemType = envelopeItem[0].type; + const result = callback(envelopeItem, envelopeItemType); + + if (result) { + return true; + } + } + + return false; +} + +/** + * Returns true if the envelope contains any of the given envelope item types + */ +function envelopeContainsItemType(envelope, types) { + return forEachEnvelopeItem(envelope, (_, type) => types.includes(type)); +} + +/** + * Encode a string to UTF8 array. + */ +function encodeUTF8(input) { + const carrier = getSentryCarrier(GLOBAL_OBJ); + return carrier.encodePolyfill ? carrier.encodePolyfill(input) : new TextEncoder().encode(input); +} + +/** + * Decode a UTF8 array to string. + */ +function decodeUTF8(input) { + const carrier = getSentryCarrier(GLOBAL_OBJ); + return carrier.decodePolyfill ? carrier.decodePolyfill(input) : new TextDecoder().decode(input); +} + +/** + * Serializes an envelope. + */ +function serializeEnvelope(envelope) { + const [envHeaders, items] = envelope; + // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data + let parts = JSON.stringify(envHeaders); + + function append(next) { + if (typeof parts === 'string') { + parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts), next]; + } else { + parts.push(typeof next === 'string' ? encodeUTF8(next) : next); + } + } + + for (const item of items) { + const [itemHeaders, payload] = item; + + append(`\n${JSON.stringify(itemHeaders)}\n`); + + if (typeof payload === 'string' || payload instanceof Uint8Array) { + append(payload); + } else { + let stringifiedPayload; + try { + stringifiedPayload = JSON.stringify(payload); + } catch { + // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.stringify()` still + // fails, we try again after normalizing it again with infinite normalization depth. This of course has a + // performance impact but in this case a performance hit is better than throwing. + stringifiedPayload = JSON.stringify(normalize(payload)); + } + append(stringifiedPayload); + } + } + + return typeof parts === 'string' ? parts : concatBuffers(parts); +} + +function concatBuffers(buffers) { + const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0); + + const merged = new Uint8Array(totalLength); + let offset = 0; + for (const buffer of buffers) { + merged.set(buffer, offset); + offset += buffer.length; + } + + return merged; +} + +/** + * Parses an envelope + */ +function parseEnvelope(env) { + let buffer = typeof env === 'string' ? encodeUTF8(env) : env; + + function readBinary(length) { + const bin = buffer.subarray(0, length); + // Replace the buffer with the remaining data excluding trailing newline + buffer = buffer.subarray(length + 1); + return bin; + } + + function readJson() { + let i = buffer.indexOf(0xa); + // If we couldn't find a newline, we must have found the end of the buffer + if (i < 0) { + i = buffer.length; + } + + return JSON.parse(decodeUTF8(readBinary(i))) ; + } + + const envelopeHeader = readJson(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const items = []; + + while (buffer.length) { + const itemHeader = readJson(); + const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined; + + items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]); + } + + return [envelopeHeader, items]; +} + +/** + * Creates envelope item for a single span + */ +function createSpanEnvelopeItem(spanJson) { + const spanHeaders = { + type: 'span', + }; + + return [spanHeaders, spanJson]; +} + +/** + * Creates attachment envelope items + */ +function createAttachmentEnvelopeItem(attachment) { + const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data) : attachment.data; + + return [ + { + type: 'attachment', + length: buffer.length, + filename: attachment.filename, + content_type: attachment.contentType, + attachment_type: attachment.attachmentType, + }, + buffer, + ]; +} + +const ITEM_TYPE_TO_DATA_CATEGORY_MAP = { + session: 'session', + sessions: 'session', + attachment: 'attachment', + transaction: 'transaction', + event: 'error', + client_report: 'internal', + user_report: 'default', + profile: 'profile', + profile_chunk: 'profile', + replay_event: 'replay', + replay_recording: 'replay', + check_in: 'monitor', + feedback: 'feedback', + span: 'span', + raw_security: 'security', + log: 'log_item', + metric: 'metric', + trace_metric: 'metric', +}; + +/** + * Maps the type of an envelope item to a data category. + */ +function envelopeItemTypeToDataCategory(type) { + return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type]; +} + +/** Extracts the minimal SDK info from the metadata or an events */ +function getSdkMetadataForEnvelopeHeader(metadataOrEvent) { + if (!metadataOrEvent?.sdk) { + return; + } + const { name, version } = metadataOrEvent.sdk; + return { name, version }; +} + +/** + * Creates event envelope headers, based on event, sdk info and tunnel + * Note: This function was extracted from the core package to make it available in Replay + */ +function createEventEnvelopeHeaders( + event, + sdkInfo, + tunnel, + dsn, +) { + const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext; + return { + event_id: event.event_id , + sent_at: new Date().toISOString(), + ...(sdkInfo && { sdk: sdkInfo }), + ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }), + ...(dynamicSamplingContext && { + trace: dynamicSamplingContext, + }), + }; +} + +export { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, createSpanEnvelopeItem, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope }; +//# sourceMappingURL=envelope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/envelope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/envelope.js.map new file mode 100644 index 0000000..9b731ab --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/envelope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"envelope.js","sources":["../../../src/utils/envelope.ts"],"sourcesContent":["import { getSentryCarrier } from '../carrier';\nimport type { Attachment } from '../types-hoist/attachment';\nimport type { DataCategory } from '../types-hoist/datacategory';\nimport type { DsnComponents } from '../types-hoist/dsn';\nimport type {\n AttachmentItem,\n BaseEnvelopeHeaders,\n BaseEnvelopeItemHeaders,\n Envelope,\n EnvelopeItemType,\n EventEnvelopeHeaders,\n SpanItem,\n} from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { SdkInfo } from '../types-hoist/sdkinfo';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport type { SpanJSON } from '../types-hoist/span';\nimport { dsnToString } from './dsn';\nimport { normalize } from './normalize';\nimport { GLOBAL_OBJ } from './worldwide';\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 */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\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 */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as unknown as E;\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 */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => boolean | void,\n): boolean {\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 */\nexport function envelopeContainsItemType(envelope: Envelope, types: EnvelopeItemType[]): boolean {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8 array.\n */\nfunction encodeUTF8(input: string): Uint8Array {\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: Uint8Array): string {\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 */\nexport function serializeEnvelope(envelope: Envelope): string | Uint8Array {\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: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\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: string;\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: Uint8Array[]): Uint8Array {\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 */\nexport function parseEnvelope(env: string | Uint8Array): Envelope {\n let buffer = typeof env === 'string' ? encodeUTF8(env) : env;\n\n function readBinary(length: number): Uint8Array {\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(): T {\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))) as T;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items: [any, any][] = [];\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 */\nexport function createSpanEnvelopeItem(spanJson: Partial): SpanItem {\n const spanHeaders: SpanItem[0] = {\n type: 'span',\n };\n\n return [spanHeaders, spanJson];\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(attachment: Attachment): AttachmentItem {\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\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n profile_chunk: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n feedback: 'feedback',\n span: 'span',\n raw_security: 'security',\n log: 'log_item',\n metric: 'metric',\n trace_metric: 'metric',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nexport function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {\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 */\nexport function createEventEnvelopeHeaders(\n event: Event,\n sdkInfo: SdkInfo | undefined,\n tunnel: string | undefined,\n dsn?: DsnComponents,\n): EventEnvelopeHeaders {\n const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext;\n return {\n event_id: event.event_id as string,\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/error.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/error.js new file mode 100644 index 0000000..e979803 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/error.js @@ -0,0 +1,17 @@ +/** + * An error emitted by Sentry SDKs and related utilities. + * @deprecated This class is no longer used and will be removed in a future version. Use `Error` instead. + */ +class SentryError extends Error { + + constructor( + message, + logLevel = 'warn', + ) { + super(message);this.message = message; + this.logLevel = logLevel; + } +} + +export { SentryError }; +//# sourceMappingURL=error.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/error.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/error.js.map new file mode 100644 index 0000000..180bc9b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/error.js.map @@ -0,0 +1 @@ +{"version":3,"file":"error.js","sources":["../../../src/utils/error.ts"],"sourcesContent":["import type { ConsoleLevel } from '../types-hoist/instrument';\n\n/**\n * An error emitted by Sentry SDKs and related utilities.\n * @deprecated This class is no longer used and will be removed in a future version. Use `Error` instead.\n */\nexport class SentryError extends Error {\n public logLevel: ConsoleLevel;\n\n public constructor(\n public message: string,\n logLevel: ConsoleLevel = 'warn',\n ) {\n super(message);\n\n this.logLevel = logLevel;\n }\n}\n"],"names":[],"mappings":"AAEA;AACA;AACA;AACA;AACO,MAAM,WAAA,SAAoB,KAAA,CAAM;;AAGvC,GAAS,WAAW;AACpB,KAAW,OAAO;AAClB,IAAI,QAAQ,GAAiB,MAAM;AACnC,IAAI;AACJ,IAAI,KAAK,CAAC,OAAO,CAAA,CAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAEjB,IAAI,IAAI,CAAC,QAAA,GAAW,QAAQ;AAC5B,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventUtils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventUtils.js new file mode 100644 index 0000000..2ef4152 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventUtils.js @@ -0,0 +1,28 @@ +/** + * Get a list of possible event messages from a Sentry event. + */ +function getPossibleEventMessages(event) { + const possibleMessages = []; + + if (event.message) { + possibleMessages.push(event.message); + } + + try { + // @ts-expect-error Try catching to save bundle size + const lastException = event.exception.values[event.exception.values.length - 1]; + if (lastException?.value) { + possibleMessages.push(lastException.value); + if (lastException.type) { + possibleMessages.push(`${lastException.type}: ${lastException.value}`); + } + } + } catch { + // ignore errors here + } + + return possibleMessages; +} + +export { getPossibleEventMessages }; +//# sourceMappingURL=eventUtils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventUtils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventUtils.js.map new file mode 100644 index 0000000..01be1be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"eventUtils.js","sources":["../../../src/utils/eventUtils.ts"],"sourcesContent":["import type { Event } from '../types-hoist/event';\n\n/**\n * Get a list of possible event messages from a Sentry event.\n */\nexport function getPossibleEventMessages(event: Event): string[] {\n const possibleMessages: string[] = [];\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"],"names":[],"mappings":"AAEA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,KAAK,EAAmB;AACjE,EAAE,MAAM,gBAAgB,GAAa,EAAE;;AAEvC,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AACrB,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACxC,EAAE;;AAEF,EAAE,IAAI;AACN;AACA,IAAI,MAAM,aAAA,GAAgB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAA,GAAS,CAAC,CAAC;AACnF,IAAI,IAAI,aAAa,EAAE,KAAK,EAAE;AAC9B,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAChD,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE;AAC9B,QAAQ,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAA,aAAA,CAAA,IAAA,CAAA,EAAA,EAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA,CAAA,CAAA,MAAA;AACA;AACA,EAAA;;AAEA,EAAA,OAAA,gBAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventbuilder.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventbuilder.js new file mode 100644 index 0000000..711f343 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventbuilder.js @@ -0,0 +1,223 @@ +import { isParameterizedString, isError, isPlainObject, isErrorEvent } from './is.js'; +import { addExceptionMechanism, addExceptionTypeValue } from './misc.js'; +import { normalizeToSize } from './normalize.js'; +import { extractExceptionKeysForMessage } from './object.js'; + +/** + * Extracts stack frames from the error.stack string + */ +function parseStackFrames(stackParser, error) { + return stackParser(error.stack || '', 1); +} + +function hasSentryFetchUrlHost(error) { + return isError(error) && '__sentry_fetch_url_host__' in error && typeof error.__sentry_fetch_url_host__ === 'string'; +} + +/** + * Enhances the error message with the hostname for better Sentry error reporting. + * This allows third-party packages to still match on the original error message, + * while Sentry gets the enhanced version with context. + * + * Only used internally + * @hidden + */ +function _enhanceErrorWithSentryInfo(error) { + // If the error has a __sentry_fetch_url_host__ property (added by fetch instrumentation), + // enhance the error message with the hostname. + if (hasSentryFetchUrlHost(error)) { + return `${error.message} (${error.__sentry_fetch_url_host__})`; + } + + return error.message; +} + +/** + * Extracts stack frames from the error and builds a Sentry Exception + */ +function exceptionFromError(stackParser, error) { + const exception = { + type: error.name || error.constructor.name, + value: _enhanceErrorWithSentryInfo(error), + }; + + const frames = parseStackFrames(stackParser, error); + if (frames.length) { + exception.stacktrace = { frames }; + } + + return exception; +} + +/** If a plain object has a property that is an `Error`, return this error. */ +function getErrorPropertyFromObject(obj) { + for (const prop in obj) { + if (Object.prototype.hasOwnProperty.call(obj, prop)) { + const value = obj[prop]; + if (value instanceof Error) { + return value; + } + } + } + + return undefined; +} + +function getMessageForObject(exception) { + if ('name' in exception && typeof exception.name === 'string') { + let message = `'${exception.name}' captured as exception`; + + if ('message' in exception && typeof exception.message === 'string') { + message += ` with message '${exception.message}'`; + } + + return message; + } else if ('message' in exception && typeof exception.message === 'string') { + return exception.message; + } + + const keys = extractExceptionKeysForMessage(exception); + + // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before + // We still want to try to get a decent message for these cases + if (isErrorEvent(exception)) { + return `Event \`ErrorEvent\` captured as exception with message \`${exception.message}\``; + } + + const className = getObjectClassName(exception); + + return `${ + className && className !== 'Object' ? `'${className}'` : 'Object' + } captured as exception with keys: ${keys}`; +} + +function getObjectClassName(obj) { + try { + const prototype = Object.getPrototypeOf(obj); + return prototype ? prototype.constructor.name : undefined; + } catch { + // ignore errors here + } +} + +function getException( + client, + mechanism, + exception, + hint, +) { + if (isError(exception)) { + return [exception, undefined]; + } + + // Mutate this! + mechanism.synthetic = true; + + if (isPlainObject(exception)) { + const normalizeDepth = client?.getOptions().normalizeDepth; + const extras = { ['__serialized__']: normalizeToSize(exception, normalizeDepth) }; + + const errorFromProp = getErrorPropertyFromObject(exception); + if (errorFromProp) { + return [errorFromProp, extras]; + } + + const message = getMessageForObject(exception); + const ex = hint?.syntheticException || new Error(message); + ex.message = message; + + return [ex, extras]; + } + + // This handles when someone does: `throw "something awesome";` + // We use synthesized Error here so we can extract a (rough) stack trace. + const ex = hint?.syntheticException || new Error(exception ); + ex.message = `${exception}`; + + return [ex, undefined]; +} + +/** + * Builds and Event from a Exception + * @hidden + */ +function eventFromUnknownInput( + client, + stackParser, + exception, + hint, +) { + const providedMechanism = hint?.data && (hint.data ).mechanism; + const mechanism = providedMechanism || { + handled: true, + type: 'generic', + }; + + const [ex, extras] = getException(client, mechanism, exception, hint); + + const event = { + exception: { + values: [exceptionFromError(stackParser, ex)], + }, + }; + + if (extras) { + event.extra = extras; + } + + addExceptionTypeValue(event, undefined, undefined); + addExceptionMechanism(event, mechanism); + + return { + ...event, + event_id: hint?.event_id, + }; +} + +/** + * Builds and Event from a Message + * @hidden + */ +function eventFromMessage( + stackParser, + message, + level = 'info', + hint, + attachStacktrace, +) { + const event = { + event_id: hint?.event_id, + level, + }; + + if (attachStacktrace && hint?.syntheticException) { + const frames = parseStackFrames(stackParser, hint.syntheticException); + if (frames.length) { + event.exception = { + values: [ + { + value: message, + stacktrace: { frames }, + }, + ], + }; + addExceptionMechanism(event, { synthetic: true }); + } + } + + if (isParameterizedString(message)) { + const { __sentry_template_string__, __sentry_template_values__ } = message; + + event.logentry = { + message: __sentry_template_string__, + params: __sentry_template_values__, + }; + return event; + } + + event.message = message; + return event; +} + +export { _enhanceErrorWithSentryInfo, eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames }; +//# sourceMappingURL=eventbuilder.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventbuilder.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventbuilder.js.map new file mode 100644 index 0000000..2401be1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/eventbuilder.js.map @@ -0,0 +1 @@ +{"version":3,"file":"eventbuilder.js","sources":["../../../src/utils/eventbuilder.ts"],"sourcesContent":["import type { Client } from '../client';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { Extras } from '../types-hoist/extra';\nimport type { Mechanism } from '../types-hoist/mechanism';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport type { SeverityLevel } from '../types-hoist/severity';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isError, isErrorEvent, isParameterizedString, isPlainObject } from './is';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc';\nimport { normalizeToSize } from './normalize';\nimport { extractExceptionKeysForMessage } from './object';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nexport function parseStackFrames(stackParser: StackParser, error: Error): StackFrame[] {\n return stackParser(error.stack || '', 1);\n}\n\nfunction hasSentryFetchUrlHost(error: unknown): error is Error & { __sentry_fetch_url_host__: string } {\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 */\nexport function _enhanceErrorWithSentryInfo(error: T): string {\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 */\nexport function exceptionFromError(stackParser: StackParser, error: Error): Exception {\n const exception: 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: Record): Error | undefined {\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: Record): string {\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: unknown): string | undefined | void {\n try {\n const prototype: unknown | null = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch {\n // ignore errors here\n }\n}\n\nfunction getException(\n client: Client,\n mechanism: Mechanism,\n exception: unknown,\n hint?: EventHint,\n): [Error, Extras | undefined] {\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 as string);\n ex.message = `${exception}`;\n\n return [ex, undefined];\n}\n\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nexport function eventFromUnknownInput(\n client: Client,\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n): Event {\n const providedMechanism: Mechanism | undefined = hint?.data && (hint.data as { mechanism: Mechanism }).mechanism;\n const mechanism: Mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n const [ex, extras] = getException(client, mechanism, exception, hint);\n\n const event: 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 */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): Event {\n const event: 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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/exports.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/exports.js new file mode 100644 index 0000000..5427359 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/exports.js @@ -0,0 +1,50 @@ +/** + * Replaces constructor functions in module exports, handling read-only properties, + * and both default and named exports by wrapping them with the constructor. + * + * @param exports The module exports object to modify + * @param exportName The name of the export to replace (e.g., 'GoogleGenAI', 'Anthropic', 'OpenAI') + * @param wrappedConstructor The wrapped constructor function to replace the original with + * @returns void + */ +function replaceExports( + exports, + exportName, + wrappedConstructor, +) { + const original = exports[exportName]; + + if (typeof original !== 'function') { + return; + } + + // Replace the named export - handle read-only properties + try { + exports[exportName] = wrappedConstructor; + } catch (error) { + // If direct assignment fails, override the property descriptor + Object.defineProperty(exports, exportName, { + value: wrappedConstructor, + writable: true, + configurable: true, + enumerable: true, + }); + } + + // Replace the default export if it points to the original constructor + if (exports.default === original) { + try { + exports.default = wrappedConstructor; + } catch (error) { + Object.defineProperty(exports, 'default', { + value: wrappedConstructor, + writable: true, + configurable: true, + enumerable: true, + }); + } + } +} + +export { replaceExports }; +//# sourceMappingURL=exports.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/exports.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/exports.js.map new file mode 100644 index 0000000..93af3b8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/exports.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exports.js","sources":["../../../src/utils/exports.ts"],"sourcesContent":["/**\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 */\nexport function replaceExports(\n exports: { [key: string]: unknown },\n exportName: string,\n wrappedConstructor: unknown,\n): void {\n const original = exports[exportName];\n\n if (typeof original !== 'function') {\n return;\n }\n\n // Replace the named export - handle read-only properties\n try {\n exports[exportName] = wrappedConstructor;\n } catch (error) {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports, 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.default === original) {\n try {\n exports.default = wrappedConstructor;\n } catch (error) {\n Object.defineProperty(exports, 'default', {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc;AAC9B,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,kBAAkB;AACpB,EAAQ;AACR,EAAE,MAAM,QAAA,GAAW,OAAO,CAAC,UAAU,CAAC;;AAEtC,EAAE,IAAI,OAAO,QAAA,KAAa,UAAU,EAAE;AACtC,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,IAAI;AACN,IAAI,OAAO,CAAC,UAAU,CAAA,GAAI,kBAAkB;AAC5C,EAAE,CAAA,CAAE,OAAO,KAAK,EAAE;AAClB;AACA,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE;AAC/C,MAAM,KAAK,EAAE,kBAAkB;AAC/B,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,UAAU,EAAE,IAAI;AACtB,KAAK,CAAC;AACN,EAAE;;AAEF;AACA,EAAE,IAAI,OAAO,CAAC,OAAA,KAAY,QAAQ,EAAE;AACpC,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,OAAA,GAAU,kBAAkB;AAC1C,IAAI,CAAA,CAAE,OAAO,KAAK,EAAE;AACpB,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;AAChD,QAAQ,KAAK,EAAE,kBAAkB;AACjC,QAAQ,QAAQ,EAAE,IAAI;AACtB,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,UAAU,EAAE,IAAI;AACxB,OAAO,CAAC;AACR,IAAI;AACJ,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/featureFlags.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/featureFlags.js new file mode 100644 index 0000000..43a928c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/featureFlags.js @@ -0,0 +1,153 @@ +import { getCurrentScope } from '../currentScopes.js'; +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug } from './debug-logger.js'; +import { getActiveSpan, spanToJSON } from './spanUtils.js'; + +/** + * Ordered LRU cache for storing feature flags in the scope context. The name + * of each flag in the buffer is unique, and the output of getAll() is ordered + * from oldest to newest. + */ + +/** + * Max size of the LRU flag buffer stored in Sentry scope and event contexts. + */ +const _INTERNAL_FLAG_BUFFER_SIZE = 100; + +/** + * Max number of flag evaluations to record per span. + */ +const _INTERNAL_MAX_FLAGS_PER_SPAN = 10; + +const SPAN_FLAG_ATTRIBUTE_PREFIX = 'flag.evaluation.'; + +/** + * Copies feature flags that are in current scope context to the event context + */ +function _INTERNAL_copyFlagsFromScopeToEvent(event) { + const scope = getCurrentScope(); + const flagContext = scope.getScopeData().contexts.flags; + const flagBuffer = flagContext ? flagContext.values : []; + + if (!flagBuffer.length) { + return event; + } + + if (event.contexts === undefined) { + event.contexts = {}; + } + event.contexts.flags = { values: [...flagBuffer] }; + return event; +} + +/** + * Inserts a flag into the current scope's context while maintaining ordered LRU properties. + * Not thread-safe. After inserting: + * - The flag buffer is sorted in order of recency, with the newest evaluation at the end. + * - The names in the buffer are always unique. + * - The length of the buffer never exceeds `maxSize`. + * + * @param name Name of the feature flag to insert. + * @param value Value of the feature flag. + * @param maxSize Max number of flags the buffer should store. Default value should always be used in production. + */ +function _INTERNAL_insertFlagToScope( + name, + value, + maxSize = _INTERNAL_FLAG_BUFFER_SIZE, +) { + const scopeContexts = getCurrentScope().getScopeData().contexts; + if (!scopeContexts.flags) { + scopeContexts.flags = { values: [] }; + } + const flags = scopeContexts.flags.values; + _INTERNAL_insertToFlagBuffer(flags, name, value, maxSize); +} + +/** + * Exported for tests only. Currently only accepts boolean values (otherwise no-op). + * Inserts a flag into a FeatureFlag array while maintaining the following properties: + * - Flags are sorted in order of recency, with the newest evaluation at the end. + * - The flag names are always unique. + * - The length of the array never exceeds `maxSize`. + * + * @param flags The buffer to insert the flag into. + * @param name Name of the feature flag to insert. + * @param value Value of the feature flag. + * @param maxSize Max number of flags the buffer should store. Default value should always be used in production. + */ +function _INTERNAL_insertToFlagBuffer( + flags, + name, + value, + maxSize, +) { + if (typeof value !== 'boolean') { + return; + } + + if (flags.length > maxSize) { + DEBUG_BUILD && debug.error(`[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize=${maxSize}`); + return; + } + + // Check if the flag is already in the buffer - O(n) + const index = flags.findIndex(f => f.flag === name); + + if (index !== -1) { + // The flag was found, remove it from its current position - O(n) + flags.splice(index, 1); + } + + if (flags.length === maxSize) { + // If at capacity, pop the earliest flag - O(n) + flags.shift(); + } + + // Push the flag to the end - O(1) + flags.push({ + flag: name, + result: value, + }); +} + +/** + * Records a feature flag evaluation for the active span. This is a no-op for non-boolean values. + * The flag and its value is stored in span attributes with the `flag.evaluation` prefix. Once the + * unique flags for a span reaches maxFlagsPerSpan, subsequent flags are dropped. + * + * @param name Name of the feature flag. + * @param value Value of the feature flag. Non-boolean values are ignored. + * @param maxFlagsPerSpan Max number of flags a buffer should store. Default value should always be used in production. + */ +function _INTERNAL_addFeatureFlagToActiveSpan( + name, + value, + maxFlagsPerSpan = _INTERNAL_MAX_FLAGS_PER_SPAN, +) { + if (typeof value !== 'boolean') { + return; + } + + const span = getActiveSpan(); + if (!span) { + return; + } + + const attributes = spanToJSON(span).data; + + // If the flag already exists, always update it + if (`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}` in attributes) { + span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value); + return; + } + + // Else, add the flag to the span if we have not reached the max number of flags + const numOfAddedFlags = Object.keys(attributes).filter(key => key.startsWith(SPAN_FLAG_ATTRIBUTE_PREFIX)).length; + if (numOfAddedFlags < maxFlagsPerSpan) { + span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value); + } +} + +export { _INTERNAL_FLAG_BUFFER_SIZE, _INTERNAL_MAX_FLAGS_PER_SPAN, _INTERNAL_addFeatureFlagToActiveSpan, _INTERNAL_copyFlagsFromScopeToEvent, _INTERNAL_insertFlagToScope, _INTERNAL_insertToFlagBuffer }; +//# sourceMappingURL=featureFlags.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/featureFlags.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/featureFlags.js.map new file mode 100644 index 0000000..75dc847 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/featureFlags.js.map @@ -0,0 +1 @@ +{"version":3,"file":"featureFlags.js","sources":["../../../src/utils/featureFlags.ts"],"sourcesContent":["import { getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { type Event } from '../types-hoist/event';\nimport { debug } from './debug-logger';\nimport { getActiveSpan, spanToJSON } from './spanUtils';\n\n/**\n * Ordered LRU cache for storing feature flags in the scope context. The name\n * of each flag in the buffer is unique, and the output of getAll() is ordered\n * from oldest to newest.\n */\n\nexport type FeatureFlag = { readonly flag: string; readonly result: boolean };\n\n/**\n * Max size of the LRU flag buffer stored in Sentry scope and event contexts.\n */\nexport const _INTERNAL_FLAG_BUFFER_SIZE = 100;\n\n/**\n * Max number of flag evaluations to record per span.\n */\nexport const _INTERNAL_MAX_FLAGS_PER_SPAN = 10;\n\nconst SPAN_FLAG_ATTRIBUTE_PREFIX = 'flag.evaluation.';\n\n/**\n * Copies feature flags that are in current scope context to the event context\n */\nexport function _INTERNAL_copyFlagsFromScopeToEvent(event: Event): Event {\n const scope = getCurrentScope();\n const flagContext = scope.getScopeData().contexts.flags;\n const flagBuffer = flagContext ? flagContext.values : [];\n\n if (!flagBuffer.length) {\n return event;\n }\n\n if (event.contexts === undefined) {\n event.contexts = {};\n }\n event.contexts.flags = { values: [...flagBuffer] };\n return event;\n}\n\n/**\n * Inserts a flag into the current scope's context while maintaining ordered LRU properties.\n * Not thread-safe. After inserting:\n * - The flag buffer is sorted in order of recency, with the newest evaluation at the end.\n * - The names in the buffer are always unique.\n * - The length of the buffer never exceeds `maxSize`.\n *\n * @param name Name of the feature flag to insert.\n * @param value Value of the feature flag.\n * @param maxSize Max number of flags the buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_insertFlagToScope(\n name: string,\n value: unknown,\n maxSize: number = _INTERNAL_FLAG_BUFFER_SIZE,\n): void {\n const scopeContexts = getCurrentScope().getScopeData().contexts;\n if (!scopeContexts.flags) {\n scopeContexts.flags = { values: [] };\n }\n const flags = scopeContexts.flags.values;\n _INTERNAL_insertToFlagBuffer(flags, name, value, maxSize);\n}\n\n/**\n * Exported for tests only. Currently only accepts boolean values (otherwise no-op).\n * Inserts a flag into a FeatureFlag array while maintaining the following properties:\n * - Flags are sorted in order of recency, with the newest evaluation at the end.\n * - The flag names are always unique.\n * - The length of the array never exceeds `maxSize`.\n *\n * @param flags The buffer to insert the flag into.\n * @param name Name of the feature flag to insert.\n * @param value Value of the feature flag.\n * @param maxSize Max number of flags the buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_insertToFlagBuffer(\n flags: FeatureFlag[],\n name: string,\n value: unknown,\n maxSize: number,\n): void {\n if (typeof value !== 'boolean') {\n return;\n }\n\n if (flags.length > maxSize) {\n DEBUG_BUILD && debug.error(`[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize=${maxSize}`);\n return;\n }\n\n // Check if the flag is already in the buffer - O(n)\n const index = flags.findIndex(f => f.flag === name);\n\n if (index !== -1) {\n // The flag was found, remove it from its current position - O(n)\n flags.splice(index, 1);\n }\n\n if (flags.length === maxSize) {\n // If at capacity, pop the earliest flag - O(n)\n flags.shift();\n }\n\n // Push the flag to the end - O(1)\n flags.push({\n flag: name,\n result: value,\n });\n}\n\n/**\n * Records a feature flag evaluation for the active span. This is a no-op for non-boolean values.\n * The flag and its value is stored in span attributes with the `flag.evaluation` prefix. Once the\n * unique flags for a span reaches maxFlagsPerSpan, subsequent flags are dropped.\n *\n * @param name Name of the feature flag.\n * @param value Value of the feature flag. Non-boolean values are ignored.\n * @param maxFlagsPerSpan Max number of flags a buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_addFeatureFlagToActiveSpan(\n name: string,\n value: unknown,\n maxFlagsPerSpan: number = _INTERNAL_MAX_FLAGS_PER_SPAN,\n): void {\n if (typeof value !== 'boolean') {\n return;\n }\n\n const span = getActiveSpan();\n if (!span) {\n return;\n }\n\n const attributes = spanToJSON(span).data;\n\n // If the flag already exists, always update it\n if (`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}` in attributes) {\n span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value);\n return;\n }\n\n // Else, add the flag to the span if we have not reached the max number of flags\n const numOfAddedFlags = Object.keys(attributes).filter(key => key.startsWith(SPAN_FLAG_ATTRIBUTE_PREFIX)).length;\n if (numOfAddedFlags < maxFlagsPerSpan) {\n span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value);\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/flushIfServerless.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/flushIfServerless.js new file mode 100644 index 0000000..fca0714 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/flushIfServerless.js @@ -0,0 +1,77 @@ +import { flush } from '../exports.js'; +import { debug } from './debug-logger.js'; +import { vercelWaitUntil } from './vercelWaitUntil.js'; +import { GLOBAL_OBJ } from './worldwide.js'; + +async function flushWithTimeout(timeout) { + try { + debug.log('Flushing events...'); + await flush(timeout); + debug.log('Done flushing events'); + } catch (e) { + debug.log('Error while flushing events:\n', e); + } +} + +/** + * Flushes the event queue with a timeout in serverless environments to ensure that events are sent to Sentry before the + * serverless function execution ends. + * + * The function is async, but in environments that support a `waitUntil` mechanism, it will run synchronously. + * + * This function is aware of the following serverless platforms: + * - Cloudflare: If a Cloudflare context is provided, it will use `ctx.waitUntil()` to flush events (keeps the `this` context of `ctx`). + * If a `cloudflareWaitUntil` function is provided, it will use that to flush events (looses the `this` context of `ctx`). + * - Vercel: It detects the Vercel environment and uses Vercel's `waitUntil` function. + * - Other Serverless (AWS Lambda, Google Cloud, etc.): It detects the environment via environment variables + * and uses a regular `await flush()`. + * + * @internal This function is supposed for internal Sentry SDK usage only. + * @hidden + */ +async function flushIfServerless( + params + + = {}, +) { + const { timeout = 2000 } = params; + + if ('cloudflareWaitUntil' in params && typeof params?.cloudflareWaitUntil === 'function') { + params.cloudflareWaitUntil(flushWithTimeout(timeout)); + return; + } + + if ('cloudflareCtx' in params && typeof params.cloudflareCtx?.waitUntil === 'function') { + params.cloudflareCtx.waitUntil(flushWithTimeout(timeout)); + return; + } + + // Note: vercelWaitUntil only does something in Vercel Edge runtime + // In Node runtime, we use process.on('SIGTERM') instead + // @ts-expect-error This is not typed + if (GLOBAL_OBJ[Symbol.for('@vercel/request-context')]) { + // Vercel has a waitUntil equivalent that works without execution context + vercelWaitUntil(flushWithTimeout(timeout)); + return; + } + + if (typeof process === 'undefined') { + return; + } + + const isServerless = + !!process.env.FUNCTIONS_WORKER_RUNTIME || // Azure Functions + !!process.env.LAMBDA_TASK_ROOT || // AWS Lambda + !!process.env.K_SERVICE || // Google Cloud Run + !!process.env.CF_PAGES || // Cloudflare Pages + !!process.env.VERCEL || + !!process.env.NETLIFY; + + if (isServerless) { + // Use regular flush for environments without a generic waitUntil mechanism + await flushWithTimeout(timeout); + } +} + +export { flushIfServerless }; +//# sourceMappingURL=flushIfServerless.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/flushIfServerless.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/flushIfServerless.js.map new file mode 100644 index 0000000..4783dc6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/flushIfServerless.js.map @@ -0,0 +1 @@ +{"version":3,"file":"flushIfServerless.js","sources":["../../../src/utils/flushIfServerless.ts"],"sourcesContent":["import { flush } from '../exports';\nimport { debug } from './debug-logger';\nimport { vercelWaitUntil } from './vercelWaitUntil';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype MinimalCloudflareContext = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n waitUntil(promise: Promise): void;\n};\n\nasync function flushWithTimeout(timeout: number): Promise {\n try {\n debug.log('Flushing events...');\n await flush(timeout);\n debug.log('Done flushing events');\n } catch (e) {\n debug.log('Error while flushing events:\\n', e);\n }\n}\n\n/**\n * Flushes the event queue with a timeout in serverless environments to ensure that events are sent to Sentry before the\n * serverless function execution ends.\n *\n * The function is async, but in environments that support a `waitUntil` mechanism, it will run synchronously.\n *\n * This function is aware of the following serverless platforms:\n * - Cloudflare: If a Cloudflare context is provided, it will use `ctx.waitUntil()` to flush events (keeps the `this` context of `ctx`).\n * If a `cloudflareWaitUntil` function is provided, it will use that to flush events (looses the `this` context of `ctx`).\n * - Vercel: It detects the Vercel environment and uses Vercel's `waitUntil` function.\n * - Other Serverless (AWS Lambda, Google Cloud, etc.): It detects the environment via environment variables\n * and uses a regular `await flush()`.\n *\n * @internal This function is supposed for internal Sentry SDK usage only.\n * @hidden\n */\nexport async function flushIfServerless(\n params: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | { timeout?: number; cloudflareWaitUntil?: (task: Promise) => void }\n | { timeout?: number; cloudflareCtx?: MinimalCloudflareContext } = {},\n): Promise {\n const { timeout = 2000 } = params;\n\n if ('cloudflareWaitUntil' in params && typeof params?.cloudflareWaitUntil === 'function') {\n params.cloudflareWaitUntil(flushWithTimeout(timeout));\n return;\n }\n\n if ('cloudflareCtx' in params && typeof params.cloudflareCtx?.waitUntil === 'function') {\n params.cloudflareCtx.waitUntil(flushWithTimeout(timeout));\n return;\n }\n\n // Note: vercelWaitUntil only does something in Vercel Edge runtime\n // In Node runtime, we use process.on('SIGTERM') instead\n // @ts-expect-error This is not typed\n if (GLOBAL_OBJ[Symbol.for('@vercel/request-context')]) {\n // Vercel has a waitUntil equivalent that works without execution context\n vercelWaitUntil(flushWithTimeout(timeout));\n return;\n }\n\n if (typeof process === 'undefined') {\n return;\n }\n\n const isServerless =\n !!process.env.FUNCTIONS_WORKER_RUNTIME || // Azure Functions\n !!process.env.LAMBDA_TASK_ROOT || // AWS Lambda\n !!process.env.K_SERVICE || // Google Cloud Run\n !!process.env.CF_PAGES || // Cloudflare Pages\n !!process.env.VERCEL ||\n !!process.env.NETLIFY;\n\n if (isServerless) {\n // Use regular flush for environments without a generic waitUntil mechanism\n await flushWithTimeout(timeout);\n }\n}\n"],"names":[],"mappings":";;;;;AAUA,eAAe,gBAAgB,CAAC,OAAO,EAAyB;AAChE,EAAE,IAAI;AACN,IAAI,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACnC,IAAI,MAAM,KAAK,CAAC,OAAO,CAAC;AACxB,IAAI,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC;AACrC,EAAE,CAAA,CAAE,OAAO,CAAC,EAAE;AACd,IAAI,KAAK,CAAC,GAAG,CAAC,gCAAgC,EAAE,CAAC,CAAC;AAClD,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,iBAAiB;AACvC,EAAE;;AAEE,GAAmE,EAAE;AACzE,EAAiB;AACjB,EAAE,MAAM,EAAE,OAAA,GAAU,IAAA,EAAK,GAAI,MAAM;;AAEnC,EAAE,IAAI,qBAAA,IAAyB,MAAA,IAAU,OAAO,MAAM,EAAE,mBAAA,KAAwB,UAAU,EAAE;AAC5F,IAAI,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACzD,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,eAAA,IAAmB,UAAU,OAAO,MAAM,CAAC,aAAa,EAAE,SAAA,KAAc,UAAU,EAAE;AAC1F,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC7D,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,EAAE;AACzD;AACA,IAAI,eAAe,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC9C,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,OAAO,OAAA,KAAY,WAAW,EAAE;AACtC,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,YAAA;AACR,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAA;AAClB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAA;AAClB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAA;AAClB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAA;AAClB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAA;AAClB,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;;AAEzB,EAAE,IAAI,YAAY,EAAE;AACpB;AACA,IAAI,MAAM,gBAAgB,CAAC,OAAO,CAAC;AACnC,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/handleCallbackErrors.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/handleCallbackErrors.js new file mode 100644 index 0000000..1682770 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/handleCallbackErrors.js @@ -0,0 +1,71 @@ +import { isThenable } from './is.js'; + +/* eslint-disable */ +// Vendor "Awaited" in to be TS 3.8 compatible + +/** + * Wrap a callback function with error handling. + * If an error is thrown, it will be passed to the `onError` callback and re-thrown. + * + * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`. + * + * If an `onFinally` callback is provided, this will be called when the callback has finished + * - so if it returns a promise, once the promise resolved/rejected, + * else once the callback has finished executing. + * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not. + */ +function handleCallbackErrors + +( + fn, + onError, + onFinally = () => {}, + onSuccess = () => {}, +) { + let maybePromiseResult; + try { + maybePromiseResult = fn(); + } catch (e) { + onError(e); + onFinally(); + throw e; + } + + return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally, onSuccess); +} + +/** + * Maybe handle a promise rejection. + * This expects to be given a value that _may_ be a promise, or any other value. + * If it is a promise, and it rejects, it will call the `onError` callback. + * Other than this, it will generally return the given value as-is. + */ +function maybeHandlePromiseRejection( + value, + onError, + onFinally, + onSuccess, +) { + if (isThenable(value)) { + // @ts-expect-error - the isThenable check returns the "wrong" type here + return value.then( + res => { + onFinally(); + onSuccess(res); + return res; + }, + e => { + onError(e); + onFinally(); + throw e; + }, + ); + } + + onFinally(); + onSuccess(value); + return value; +} + +export { handleCallbackErrors }; +//# sourceMappingURL=handleCallbackErrors.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/handleCallbackErrors.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/handleCallbackErrors.js.map new file mode 100644 index 0000000..5acf09b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/handleCallbackErrors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"handleCallbackErrors.js","sources":["../../../src/utils/handleCallbackErrors.ts"],"sourcesContent":["import { isThenable } from '../utils/is';\n\n/* eslint-disable */\n// Vendor \"Awaited\" in to be TS 3.8 compatible\ntype AwaitedPromise = T extends null | undefined\n ? T // special case for `null | undefined` when not in `--strictNullChecks` mode\n : T extends object & { then(onfulfilled: infer F, ...args: infer _): any } // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\n ? F extends (value: infer V, ...args: infer _) => any // if the argument to `then` is callable, extracts the first argument\n ? V // normally this would recursively unwrap, but this is not possible in TS3.8\n : never // the argument to `then` was not callable\n : T; // non-object or non-thenable\n/* eslint-enable */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function handleCallbackErrors Promise, PromiseValue = AwaitedPromise>>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally?: () => void,\n onSuccess?: (result: PromiseValue) => void,\n): ReturnType;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function handleCallbackErrors any>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally?: () => void,\n onSuccess?: (result: ReturnType) => void,\n): ReturnType;\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 */\nexport function handleCallbackErrors<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Fn extends () => any,\n ValueType = ReturnType,\n>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally: () => void = () => {},\n onSuccess: (result: ValueType | AwaitedPromise) => void = () => {},\n): ValueType {\n let maybePromiseResult: ReturnType;\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 * Other than this, it will generally return the given value as-is.\n */\nfunction maybeHandlePromiseRejection(\n value: MaybePromise,\n onError: (error: unknown) => void,\n onFinally: () => void,\n onSuccess: (result: MaybePromise | AwaitedPromise) => void,\n): MaybePromise {\n if (isThenable(value)) {\n // @ts-expect-error - the isThenable check returns the \"wrong\" type here\n return value.then(\n res => {\n onFinally();\n onSuccess(res);\n return res;\n },\n e => {\n onError(e);\n onFinally();\n throw e;\n },\n );\n }\n\n onFinally();\n onSuccess(value);\n return value;\n}\n"],"names":[],"mappings":";;AAEA;AACA;;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS;;AAIhB;AACA,EAAE,EAAE;AACJ,EAAE,OAAO;AACT,EAAE,SAAS,GAAe,MAAM,CAAC,CAAC;AAClC,EAAE,SAAS,GAA4D,MAAM,CAAC,CAAC;AAC/E,EAAa;AACb,EAAE,IAAI,kBAAkB;AACxB,EAAE,IAAI;AACN,IAAI,kBAAA,GAAqB,EAAE,EAAE;AAC7B,EAAE,CAAA,CAAE,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,CAAC,CAAC,CAAC;AACd,IAAI,SAAS,EAAE;AACf,IAAI,MAAM,CAAC;AACX,EAAE;;AAEF,EAAE,OAAO,2BAA2B,CAAC,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;AACvF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAA2B;AACpC,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAgB;AAChB,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACzB;AACA,IAAI,OAAO,KAAK,CAAC,IAAI;AACrB,MAAM,OAAO;AACb,QAAQ,SAAS,EAAE;AACnB,QAAQ,SAAS,CAAC,GAAG,CAAC;AACtB,QAAQ,OAAO,GAAG;AAClB,MAAM,CAAC;AACP,MAAM,KAAK;AACX,QAAQ,OAAO,CAAC,CAAC,CAAC;AAClB,QAAQ,SAAS,EAAE;AACnB,QAAQ,MAAM,CAAC;AACf,MAAM,CAAC;AACP,KAAK;AACL,EAAE;;AAEF,EAAE,SAAS,EAAE;AACb,EAAE,SAAS,CAAC,KAAK,CAAC;AAClB,EAAE,OAAO,KAAK;AACd;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js new file mode 100644 index 0000000..926e272 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js @@ -0,0 +1,37 @@ +import { getClient } from '../currentScopes.js'; + +// Treeshakable guard to remove all code related to tracing + +/** + * Determines if span recording is currently enabled. + * + * Spans are recorded when at least one of `tracesSampleRate` and `tracesSampler` + * is defined in the SDK config. This function does not make any assumption about + * sampling decisions, it only checks if the SDK is configured to record spans. + * + * Important: This function only determines if span recording is enabled. Trace + * continuation and propagation is separately controlled and not covered by this function. + * If this function returns `false`, traces can still be propagated (which is what + * we refer to by "Tracing without Performance") + * @see https://develop.sentry.dev/sdk/telemetry/traces/tracing-without-performance/ + * + * @param maybeOptions An SDK options object to be passed to this function. + * If this option is not provided, the function will use the current client's options. + */ +function hasSpansEnabled( + maybeOptions, +) { + if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) { + return false; + } + + const options = maybeOptions || getClient()?.getOptions(); + return ( + !!options && + // 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) + (options.tracesSampleRate != null || !!options.tracesSampler) + ); +} + +export { hasSpansEnabled }; +//# sourceMappingURL=hasSpansEnabled.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js.map new file mode 100644 index 0000000..b47374d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js.map @@ -0,0 +1 @@ +{"version":3,"file":"hasSpansEnabled.js","sources":["../../../src/utils/hasSpansEnabled.ts"],"sourcesContent":["import { getClient } from '../currentScopes';\nimport type { CoreOptions } from '../types-hoist/options';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\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 */\nexport function hasSpansEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\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"],"names":[],"mappings":";;AAGA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe;AAC/B,EAAE,YAAY;AACd,EAAW;AACX,EAAE,IAAI,OAAO,kBAAA,KAAuB,SAAA,IAAa,CAAC,kBAAkB,EAAE;AACtE,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,MAAM,OAAA,GAAU,YAAA,IAAgB,SAAS,EAAE,EAAE,UAAU,EAAE;AAC3D,EAAE;AACF,IAAI,CAAC,CAAC,OAAA;AACN;AACA,KAAK,OAAO,CAAC,gBAAA,IAAoB,IAAA,IAAQ,CAAC,CAAC,OAAO,CAAC,aAAa;AAChE;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ipAddress.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ipAddress.js new file mode 100644 index 0000000..b065cbb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ipAddress.js @@ -0,0 +1,37 @@ +// By default, we want to infer the IP address, unless this is explicitly set to `null` +// We do this after all other processing is done +// If `ip_address` is explicitly set to `null` or a value, we leave it as is + +/** + * @internal + * @deprecated -- set ip inferral via via SDK metadata options on client instead. + */ +function addAutoIpAddressToUser(objWithMaybeUser) { + if (objWithMaybeUser.user?.ip_address === undefined) { + objWithMaybeUser.user = { + ...objWithMaybeUser.user, + ip_address: '{{auto}}', + }; + } +} + +/** + * @internal + */ +function addAutoIpAddressToSession(session) { + if ('aggregates' in session) { + if (session.attrs?.['ip_address'] === undefined) { + session.attrs = { + ...session.attrs, + ip_address: '{{auto}}', + }; + } + } else { + if (session.ipAddress === undefined) { + session.ipAddress = '{{auto}}'; + } + } +} + +export { addAutoIpAddressToSession, addAutoIpAddressToUser }; +//# sourceMappingURL=ipAddress.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ipAddress.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ipAddress.js.map new file mode 100644 index 0000000..1f61642 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ipAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ipAddress.js","sources":["../../../src/utils/ipAddress.ts"],"sourcesContent":["import type { Session, SessionAggregates } from '../types-hoist/session';\nimport type { User } from '../types-hoist/user';\n\n// By default, we want to infer the IP address, unless this is explicitly set to `null`\n// We do this after all other processing is done\n// If `ip_address` is explicitly set to `null` or a value, we leave it as is\n\n/**\n * @internal\n * @deprecated -- set ip inferral via via SDK metadata options on client instead.\n */\nexport function addAutoIpAddressToUser(objWithMaybeUser: { user?: User | null }): void {\n if (objWithMaybeUser.user?.ip_address === undefined) {\n objWithMaybeUser.user = {\n ...objWithMaybeUser.user,\n ip_address: '{{auto}}',\n };\n }\n}\n\n/**\n * @internal\n */\nexport function addAutoIpAddressToSession(session: Session | SessionAggregates): void {\n if ('aggregates' in session) {\n if (session.attrs?.['ip_address'] === undefined) {\n session.attrs = {\n ...session.attrs,\n ip_address: '{{auto}}',\n };\n }\n } else {\n if (session.ipAddress === undefined) {\n session.ipAddress = '{{auto}}';\n }\n }\n}\n"],"names":[],"mappings":"AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,SAAS,sBAAsB,CAAC,gBAAgB,EAAgC;AACvF,EAAE,IAAI,gBAAgB,CAAC,IAAI,EAAE,UAAA,KAAe,SAAS,EAAE;AACvD,IAAI,gBAAgB,CAAC,IAAA,GAAO;AAC5B,MAAM,GAAG,gBAAgB,CAAC,IAAI;AAC9B,MAAM,UAAU,EAAE,UAAU;AAC5B,KAAK;AACL,EAAE;AACF;;AAEA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,OAAO,EAAqC;AACtF,EAAE,IAAI,YAAA,IAAgB,OAAO,EAAE;AAC/B,IAAI,IAAI,OAAO,CAAC,KAAK,GAAG,YAAY,CAAA,KAAM,SAAS,EAAE;AACrD,MAAM,OAAO,CAAC,KAAA,GAAQ;AACtB,QAAQ,GAAG,OAAO,CAAC,KAAK;AACxB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO;AACP,IAAI;AACJ,EAAE,OAAO;AACT,IAAI,IAAI,OAAO,CAAC,SAAA,KAAc,SAAS,EAAE;AACzC,MAAM,OAAO,CAAC,SAAA,GAAY,UAAU;AACpC,IAAI;AACJ,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/is.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/is.js new file mode 100644 index 0000000..fca6026 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/is.js @@ -0,0 +1,212 @@ +// eslint-disable-next-line @typescript-eslint/unbound-method +const objectToString = Object.prototype.toString; + +/** + * Checks whether given value's type is one of a few Error or Error-like + * {@link isError}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isError(wat) { + switch (objectToString.call(wat)) { + case '[object Error]': + case '[object Exception]': + case '[object DOMException]': + case '[object WebAssembly.Exception]': + return true; + default: + return isInstanceOf(wat, Error); + } +} +/** + * Checks whether given value is an instance of the given built-in class. + * + * @param wat The value to be checked + * @param className + * @returns A boolean representing the result. + */ +function isBuiltin(wat, className) { + return objectToString.call(wat) === `[object ${className}]`; +} + +/** + * Checks whether given value's type is ErrorEvent + * {@link isErrorEvent}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isErrorEvent(wat) { + return isBuiltin(wat, 'ErrorEvent'); +} + +/** + * Checks whether given value's type is DOMError + * {@link isDOMError}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isDOMError(wat) { + return isBuiltin(wat, 'DOMError'); +} + +/** + * Checks whether given value's type is DOMException + * {@link isDOMException}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isDOMException(wat) { + return isBuiltin(wat, 'DOMException'); +} + +/** + * Checks whether given value's type is a string + * {@link isString}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isString(wat) { + return isBuiltin(wat, 'String'); +} + +/** + * Checks whether given string is parameterized + * {@link isParameterizedString}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isParameterizedString(wat) { + return ( + typeof wat === 'object' && + wat !== null && + '__sentry_template_string__' in wat && + '__sentry_template_values__' in wat + ); +} + +/** + * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol) + * {@link isPrimitive}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isPrimitive(wat) { + return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function'); +} + +/** + * Checks whether given value's type is an object literal, or a class instance. + * {@link isPlainObject}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isPlainObject(wat) { + return isBuiltin(wat, 'Object'); +} + +/** + * Checks whether given value's type is an Event instance + * {@link isEvent}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isEvent(wat) { + return typeof Event !== 'undefined' && isInstanceOf(wat, Event); +} + +/** + * Checks whether given value's type is an Element instance + * {@link isElement}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isElement(wat) { + return typeof Element !== 'undefined' && isInstanceOf(wat, Element); +} + +/** + * Checks whether given value's type is an regexp + * {@link isRegExp}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isRegExp(wat) { + return isBuiltin(wat, 'RegExp'); +} + +/** + * Checks whether given value has a then function. + * @param wat A value to be checked. + */ +function isThenable(wat) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return Boolean(wat?.then && typeof wat.then === 'function'); +} + +/** + * Checks whether given value's type is a SyntheticEvent + * {@link isSyntheticEvent}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isSyntheticEvent(wat) { + return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat; +} + +/** + * Checks whether given value's type is an instance of provided constructor. + * {@link isInstanceOf}. + * + * @param wat A value to be checked. + * @param base A constructor to be used in a check. + * @returns A boolean representing the result. + */ +// TODO: fix in v11, convert any to unknown +// export function isInstanceOf(wat: unknown, base: { new (...args: any[]): T }): wat is T { +function isInstanceOf(wat, base) { + try { + return wat instanceof base; + } catch { + return false; + } +} + +/** + * Checks whether given value's type is a Vue ViewModel or a VNode. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ +function isVueViewModel(wat) { + // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property. + // We also need to check for __v_isVNode because Vue 3 component render instances have an internal __v_isVNode property. + return !!( + typeof wat === 'object' && + wat !== null && + ((wat ).__isVue || (wat )._isVue || (wat ).__v_isVNode) + ); +} + +/** + * Checks whether the given parameter is a Standard Web API Request instance. + * + * Returns false if Request is not available in the current runtime. + */ +function isRequest(request) { + return typeof Request !== 'undefined' && isInstanceOf(request, Request); +} + +export { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isRequest, isString, isSyntheticEvent, isThenable, isVueViewModel }; +//# sourceMappingURL=is.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/is.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/is.js.map new file mode 100644 index 0000000..9bcafd5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/is.js.map @@ -0,0 +1 @@ +{"version":3,"file":"is.js","sources":["../../../src/utils/is.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Primitive } from '../types-hoist/misc';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport type { PolymorphicEvent } from '../types-hoist/polymorphics';\nimport type { VNode, VueViewModel } from '../types-hoist/vue';\n\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 */\nexport function isError(wat: unknown): wat is Error {\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: unknown, className: string): boolean {\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 */\nexport function isErrorEvent(wat: unknown): boolean {\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 */\nexport function isDOMError(wat: unknown): boolean {\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 */\nexport function isDOMException(wat: unknown): boolean {\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 */\nexport function isString(wat: unknown): wat is string {\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 */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\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 */\nexport function isPrimitive(wat: unknown): wat is Primitive {\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 */\nexport function isPlainObject(wat: unknown): wat is Record {\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 */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\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 */\nexport function isElement(wat: unknown): boolean {\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 */\nexport function isRegExp(wat: unknown): wat is RegExp {\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 */\nexport function isThenable(wat: any): wat is PromiseLike {\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 */\nexport function isSyntheticEvent(wat: unknown): boolean {\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 {\nexport function isInstanceOf(wat: any, base: any): wat is T {\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 */\nexport function isVueViewModel(wat: unknown): wat is VueViewModel | VNode {\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 as VueViewModel).__isVue || (wat as VueViewModel)._isVue || (wat as { __v_isVNode?: boolean }).__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 */\nexport function isRequest(request: unknown): request is Request {\n return typeof Request !== 'undefined' && isInstanceOf(request, Request);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isBrowser.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isBrowser.js new file mode 100644 index 0000000..855d540 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isBrowser.js @@ -0,0 +1,19 @@ +import { isNodeEnv } from './node.js'; +import { GLOBAL_OBJ } from './worldwide.js'; + +/** + * Returns true if we are in the browser. + */ +function isBrowser() { + // eslint-disable-next-line no-restricted-globals + return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer()); +} + +// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them +function isElectronNodeRenderer() { + const process = (GLOBAL_OBJ ).process; + return process?.type === 'renderer'; +} + +export { isBrowser }; +//# sourceMappingURL=isBrowser.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isBrowser.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isBrowser.js.map new file mode 100644 index 0000000..dea4f35 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isBrowser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isBrowser.js","sources":["../../../src/utils/isBrowser.ts"],"sourcesContent":["import { isNodeEnv } from './node';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/**\n * Returns true if we are in the browser.\n */\nexport function isBrowser(): boolean {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\ntype ElectronProcess = { type?: string };\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer(): boolean {\n const process = (GLOBAL_OBJ as typeof GLOBAL_OBJ & { process?: ElectronProcess }).process;\n return process?.type === 'renderer';\n}\n"],"names":[],"mappings":";;;AAGA;AACA;AACA;AACO,SAAS,SAAS,GAAY;AACrC;AACA,EAAE,OAAO,OAAO,MAAA,KAAW,gBAAgB,CAAC,SAAS,EAAC,IAAK,sBAAsB,EAAE,CAAC;AACpF;;AAIA;AACA,SAAS,sBAAsB,GAAY;AAC3C,EAAE,MAAM,OAAA,GAAU,CAAC,UAAA,GAAiE,OAAO;AAC3F,EAAE,OAAO,OAAO,EAAE,IAAA,KAAS,UAAU;AACrC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isSentryRequestUrl.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isSentryRequestUrl.js new file mode 100644 index 0000000..5077cdc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isSentryRequestUrl.js @@ -0,0 +1,41 @@ +import { parseStringToURLObject, isURLObjectRelative } from './url.js'; + +/** + * Checks whether given url points to Sentry server + * + * @param url url to verify + */ +function isSentryRequestUrl(url, client) { + const dsn = client?.getDsn(); + const tunnel = client?.getOptions().tunnel; + return checkDsn(url, dsn) || checkTunnel(url, tunnel); +} + +function checkTunnel(url, tunnel) { + if (!tunnel) { + return false; + } + + return removeTrailingSlash(url) === removeTrailingSlash(tunnel); +} + +function checkDsn(url, dsn) { + // Requests to Sentry's ingest endpoint must have a `sentry_key` in the query string + // This is equivalent to the public_key which is required in the DSN + // see https://develop.sentry.dev/sdk/overview/#parsing-the-dsn + // Therefore, a request to the same host and with a `sentry_key` in the query string + // can be considered a request to the ingest endpoint. + const urlParts = parseStringToURLObject(url); + if (!urlParts || isURLObjectRelative(urlParts)) { + return false; + } + + return dsn ? urlParts.host.includes(dsn.host) && /(^|&|\?)sentry_key=/.test(urlParts.search) : false; +} + +function removeTrailingSlash(str) { + return str[str.length - 1] === '/' ? str.slice(0, -1) : str; +} + +export { isSentryRequestUrl }; +//# sourceMappingURL=isSentryRequestUrl.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isSentryRequestUrl.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isSentryRequestUrl.js.map new file mode 100644 index 0000000..34dde18 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/isSentryRequestUrl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isSentryRequestUrl.js","sources":["../../../src/utils/isSentryRequestUrl.ts"],"sourcesContent":["import type { Client } from '../client';\nimport type { DsnComponents } from '../types-hoist/dsn';\nimport { isURLObjectRelative, parseStringToURLObject } from './url';\n\n/**\n * Checks whether given url points to Sentry server\n *\n * @param url url to verify\n */\nexport function isSentryRequestUrl(url: string, client: Client | undefined): boolean {\n const dsn = client?.getDsn();\n const tunnel = client?.getOptions().tunnel;\n return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url: string, tunnel: string | undefined): boolean {\n if (!tunnel) {\n return false;\n }\n\n return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url: string, dsn: DsnComponents | undefined): boolean {\n // Requests to Sentry's ingest endpoint must have a `sentry_key` in the query string\n // This is equivalent to the public_key which is required in the DSN\n // see https://develop.sentry.dev/sdk/overview/#parsing-the-dsn\n // Therefore, a request to the same host and with a `sentry_key` in the query string\n // can be considered a request to the ingest endpoint.\n const urlParts = parseStringToURLObject(url);\n if (!urlParts || isURLObjectRelative(urlParts)) {\n return false;\n }\n\n return dsn ? urlParts.host.includes(dsn.host) && /(^|&|\\?)sentry_key=/.test(urlParts.search) : false;\n}\n\nfunction removeTrailingSlash(str: string): string {\n return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n"],"names":[],"mappings":";;AAIA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,GAAG,EAAU,MAAM,EAA+B;AACrF,EAAE,MAAM,GAAA,GAAM,MAAM,EAAE,MAAM,EAAE;AAC9B,EAAE,MAAM,SAAS,MAAM,EAAE,UAAU,EAAE,CAAC,MAAM;AAC5C,EAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA,IAAK,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;AACvD;;AAEA,SAAS,WAAW,CAAC,GAAG,EAAU,MAAM,EAA+B;AACvE,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,OAAO,mBAAmB,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC;AACjE;;AAEA,SAAS,QAAQ,CAAC,GAAG,EAAU,GAAG,EAAsC;AACxE;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,QAAA,GAAW,sBAAsB,CAAC,GAAG,CAAC;AAC9C,EAAE,IAAI,CAAC,QAAA,IAAY,mBAAmB,CAAC,QAAQ,CAAC,EAAE;AAClD,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAA,IAAK,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA,GAAI,KAAK;AACtG;;AAEA,SAAS,mBAAmB,CAAC,GAAG,EAAkB;AAClD,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,MAAA,GAAS,CAAC,CAAA,KAAM,GAAA,GAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAA,GAAI,GAAG;AAC7D;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/lru.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/lru.js new file mode 100644 index 0000000..c4b9ed3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/lru.js @@ -0,0 +1,64 @@ +/** A simple Least Recently Used map */ +class LRUMap { + + constructor( _maxSize) {this._maxSize = _maxSize; + this._cache = new Map(); + } + + /** Get the current size of the cache */ + get size() { + return this._cache.size; + } + + /** Get an entry or undefined if it was not in the cache. Re-inserts to update the recently used order */ + get(key) { + const value = this._cache.get(key); + if (value === undefined) { + return undefined; + } + // Remove and re-insert to update the order + this._cache.delete(key); + this._cache.set(key, value); + return value; + } + + /** Insert an entry and evict an older entry if we've reached maxSize */ + set(key, value) { + if (this._cache.size >= this._maxSize) { + // keys() returns an iterator in insertion order so keys().next() gives us the oldest key + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const nextKey = this._cache.keys().next().value; + this._cache.delete(nextKey); + } + this._cache.set(key, value); + } + + /** Remove an entry and return the entry if it was in the cache */ + remove(key) { + const value = this._cache.get(key); + if (value) { + this._cache.delete(key); + } + return value; + } + + /** Clear all entries */ + clear() { + this._cache.clear(); + } + + /** Get all the keys */ + keys() { + return Array.from(this._cache.keys()); + } + + /** Get all the values */ + values() { + const values = []; + this._cache.forEach(value => values.push(value)); + return values; + } +} + +export { LRUMap }; +//# sourceMappingURL=lru.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/lru.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/lru.js.map new file mode 100644 index 0000000..48044a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/lru.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lru.js","sources":["../../../src/utils/lru.ts"],"sourcesContent":["/** A simple Least Recently Used map */\nexport class LRUMap {\n private readonly _cache: Map;\n\n public constructor(private readonly _maxSize: number) {\n this._cache = new Map();\n }\n\n /** Get the current size of the cache */\n public get size(): number {\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 public get(key: K): V | undefined {\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 public set(key: K, value: V): void {\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 public remove(key: K): V | undefined {\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 public clear(): void {\n this._cache.clear();\n }\n\n /** Get all the keys */\n public keys(): Array {\n return Array.from(this._cache.keys());\n }\n\n /** Get all the values */\n public values(): Array {\n const values: V[] = [];\n this._cache.forEach(value => values.push(value));\n return values;\n }\n}\n"],"names":[],"mappings":"AAAA;AACO,MAAM,MAAM,CAAO;;AAG1B,GAAS,WAAW,GAAkB,QAAQ,EAAU,CAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACxD,IAAI,IAAI,CAAC,MAAA,GAAS,IAAI,GAAG,EAAQ;AACjC,EAAE;;AAEF;AACA,GAAS,IAAI,IAAI,GAAW;AAC5B,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI;AAC3B,EAAE;;AAEF;AACA,GAAS,GAAG,CAAC,GAAG,EAAoB;AACpC,IAAI,MAAM,KAAA,GAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACtC,IAAI,IAAI,KAAA,KAAU,SAAS,EAAE;AAC7B,MAAM,OAAO,SAAS;AACtB,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF;AACA,GAAS,GAAG,CAAC,GAAG,EAAK,KAAK,EAAW;AACrC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAA,IAAQ,IAAI,CAAC,QAAQ,EAAE;AAC3C;AACA;AACA,MAAM,MAAM,OAAA,GAAU,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AACrD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,IAAI;AACJ,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B,EAAE;;AAEF;AACA,GAAS,MAAM,CAAC,GAAG,EAAoB;AACvC,IAAI,MAAM,KAAA,GAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACtC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7B,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF;AACA,GAAS,KAAK,GAAS;AACvB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACvB,EAAE;;AAEF;AACA,GAAS,IAAI,GAAa;AAC1B,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACzC,EAAE;;AAEF;AACA,GAAS,MAAM,GAAa;AAC5B,IAAI,MAAM,MAAM,GAAQ,EAAE;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAA,IAAS,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,OAAO,MAAM;AACjB,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/merge.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/merge.js new file mode 100644 index 0000000..1ed35fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/merge.js @@ -0,0 +1,34 @@ +/** + * Shallow merge two objects. + * Does not mutate the passed in objects. + * Undefined/empty values in the merge object will overwrite existing values. + * + * By default, this merges 2 levels deep. + */ +function merge(initialObj, mergeObj, levels = 2) { + // If the merge value is not an object, or we have no merge levels left, + // we just set the value to the merge value + if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) { + return mergeObj; + } + + // If the merge object is an empty object, and the initial object is not undefined, we return the initial object + if (initialObj && Object.keys(mergeObj).length === 0) { + return initialObj; + } + + // Clone object + const output = { ...initialObj }; + + // Merge values into output, resursively + for (const key in mergeObj) { + if (Object.prototype.hasOwnProperty.call(mergeObj, key)) { + output[key] = merge(output[key], mergeObj[key], levels - 1); + } + } + + return output; +} + +export { merge }; +//# sourceMappingURL=merge.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/merge.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/merge.js.map new file mode 100644 index 0000000..99194d4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sources":["../../../src/utils/merge.ts"],"sourcesContent":["/**\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 */\nexport function merge(initialObj: T, mergeObj: T, levels = 2): T {\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"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAI,UAAU,EAAK,QAAQ,EAAK,MAAA,GAAS,CAAC,EAAK;AACpE;AACA;AACA,EAAE,IAAI,CAAC,QAAA,IAAY,OAAO,QAAA,KAAa,QAAA,IAAY,MAAA,IAAU,CAAC,EAAE;AAChE,IAAI,OAAO,QAAQ;AACnB,EAAE;;AAEF;AACA,EAAE,IAAI,UAAA,IAAc,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAA,KAAW,CAAC,EAAE;AACxD,IAAI,OAAO,UAAU;AACrB,EAAE;;AAEF;AACA,EAAE,MAAM,MAAA,GAAS,EAAE,GAAG,YAAY;;AAElC;AACA,EAAE,KAAK,MAAM,GAAA,IAAO,QAAQ,EAAE;AAC9B,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;AAC7D,MAAM,MAAM,CAAC,GAAG,CAAA,GAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAA,GAAS,CAAC,CAAC;AACjE,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,MAAM;AACf;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/meta.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/meta.js new file mode 100644 index 0000000..059f916 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/meta.js @@ -0,0 +1,31 @@ +import { getTraceData } from './traceData.js'; + +/** + * Returns a string of meta tags that represent the current trace data. + * + * You can use this to propagate a trace from your server-side rendered Html to the browser. + * This function returns up to two meta tags, `sentry-trace` and `baggage`, depending on the + * current trace data state. + * + * @example + * Usage example: + * + * ```js + * function renderHtml() { + * return ` + * + * ${getTraceMetaTags()} + * + * `; + * } + * ``` + * + */ +function getTraceMetaTags(traceData) { + return Object.entries(traceData || getTraceData()) + .map(([key, value]) => ``) + .join('\n'); +} + +export { getTraceMetaTags }; +//# sourceMappingURL=meta.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/meta.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/meta.js.map new file mode 100644 index 0000000..b993e30 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/meta.js.map @@ -0,0 +1 @@ +{"version":3,"file":"meta.js","sources":["../../../src/utils/meta.ts"],"sourcesContent":["import type { SerializedTraceData } from '../types-hoist/tracing';\nimport { getTraceData } from './traceData';\n\n/**\n * Returns a string of meta tags that represent the current trace data.\n *\n * You can use this to propagate a trace from your server-side rendered Html to the browser.\n * This function returns up to two meta tags, `sentry-trace` and `baggage`, depending on the\n * current trace data state.\n *\n * @example\n * Usage example:\n *\n * ```js\n * function renderHtml() {\n * return `\n * \n * ${getTraceMetaTags()}\n * \n * `;\n * }\n * ```\n *\n */\nexport function getTraceMetaTags(traceData?: SerializedTraceData): string {\n return Object.entries(traceData || getTraceData())\n .map(([key, value]) => ``)\n .join('\\n');\n}\n"],"names":[],"mappings":";;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,SAAS,EAAgC;AAC1E,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,SAAA,IAAa,YAAY,EAAE;AACnD,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC;AACrE,KAAK,IAAI,CAAC,IAAI,CAAC;AACf;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/misc.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/misc.js new file mode 100644 index 0000000..ea1e150 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/misc.js @@ -0,0 +1,216 @@ +import { addNonEnumerableProperty } from './object.js'; +import { withRandomSafeContext, safeMathRandom } from './randomSafeContext.js'; +import { snipLine } from './string.js'; +import { GLOBAL_OBJ } from './worldwide.js'; + +function getCrypto() { + const gbl = GLOBAL_OBJ ; + return gbl.crypto || gbl.msCrypto; +} + +let emptyUuid; + +function getRandomByte() { + return safeMathRandom() * 16; +} + +/** + * UUID4 generator + * @param crypto Object that provides the crypto API. + * @returns string Generated UUID4. + */ +function uuid4(crypto = getCrypto()) { + try { + if (crypto?.randomUUID) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return withRandomSafeContext(() => crypto.randomUUID()).replace(/-/g, ''); + } + } catch { + // some runtimes can crash invoking crypto + // https://github.com/getsentry/sentry-javascript/issues/8935 + } + + if (!emptyUuid) { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + // Concatenating the following numbers as strings results in '10000000100040008000100000000000' + emptyUuid = ([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11; + } + + return emptyUuid.replace(/[018]/g, c => + // eslint-disable-next-line no-bitwise + ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16), + ); +} + +function getFirstException(event) { + return event.exception?.values?.[0]; +} + +/** + * Extracts either message or type+value from an event that can be used for user-facing logs + * @returns event's description + */ +function getEventDescription(event) { + const { message, event_id: eventId } = event; + if (message) { + return message; + } + + const firstException = getFirstException(event); + if (firstException) { + if (firstException.type && firstException.value) { + return `${firstException.type}: ${firstException.value}`; + } + return firstException.type || firstException.value || eventId || ''; + } + return eventId || ''; +} + +/** + * Adds exception values, type and value to an synthetic Exception. + * @param event The event to modify. + * @param value Value of the exception. + * @param type Type of the exception. + * @hidden + */ +function addExceptionTypeValue(event, value, type) { + const exception = (event.exception = event.exception || {}); + const values = (exception.values = exception.values || []); + const firstException = (values[0] = values[0] || {}); + if (!firstException.value) { + firstException.value = value || ''; + } + if (!firstException.type) { + firstException.type = type || 'Error'; + } +} + +/** + * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed. + * + * @param event The event to modify. + * @param newMechanism Mechanism data to add to the event. + * @hidden + */ +function addExceptionMechanism(event, newMechanism) { + const firstException = getFirstException(event); + if (!firstException) { + return; + } + + const defaultMechanism = { type: 'generic', handled: true }; + const currentMechanism = firstException.mechanism; + firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism }; + + if (newMechanism && 'data' in newMechanism) { + const mergedData = { ...currentMechanism?.data, ...newMechanism.data }; + firstException.mechanism.data = mergedData; + } +} + +// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string +const SEMVER_REGEXP = + /^(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-]+)*))?$/; + +/** + * Represents Semantic Versioning object + */ + +function _parseInt(input) { + return parseInt(input || '', 10); +} + +/** + * Parses input into a SemVer interface + * @param input string representation of a semver version + */ +function parseSemver(input) { + const match = input.match(SEMVER_REGEXP) || []; + const major = _parseInt(match[1]); + const minor = _parseInt(match[2]); + const patch = _parseInt(match[3]); + return { + buildmetadata: match[5], + major: isNaN(major) ? undefined : major, + minor: isNaN(minor) ? undefined : minor, + patch: isNaN(patch) ? undefined : patch, + prerelease: match[4], + }; +} + +/** + * This function adds context (pre/post/line) lines to the provided frame + * + * @param lines string[] containing all lines + * @param frame StackFrame that will be mutated + * @param linesOfContext number of context lines we want to add pre/post + */ +function addContextToFrame(lines, frame, linesOfContext = 5) { + // When there is no line number in the frame, attaching context is nonsensical and will even break grouping + if (frame.lineno === undefined) { + return; + } + + const maxLines = lines.length; + const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0); + + frame.pre_context = lines + .slice(Math.max(0, sourceLine - linesOfContext), sourceLine) + .map((line) => snipLine(line, 0)); + + // We guard here to ensure this is not larger than the existing number of lines + const lineIndex = Math.min(maxLines - 1, sourceLine); + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + frame.context_line = snipLine(lines[lineIndex], frame.colno || 0); + + frame.post_context = lines + .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext) + .map((line) => snipLine(line, 0)); +} + +/** + * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object + * in question), and marks it captured if not. + * + * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and + * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so + * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because + * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not + * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This + * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we + * see it. + * + * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on + * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent + * object wrapper forms so that this check will always work. However, because we need to flag the exact object which + * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification + * must be done before the exception captured. + * + * @param A thrown exception to check or flag as having been seen + * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen) + */ +function checkOrSetAlreadyCaught(exception) { + if (isAlreadyCaptured(exception)) { + return true; + } + + try { + // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the + // `ExtraErrorData` integration + addNonEnumerableProperty(exception , '__sentry_captured__', true); + } catch { + // `exception` is a primitive, so we can't mark it seen + } + + return false; +} + +function isAlreadyCaptured(exception) { + try { + return (exception ).__sentry_captured__; + } catch {} // eslint-disable-line no-empty +} + +export { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 }; +//# sourceMappingURL=misc.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/misc.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/misc.js.map new file mode 100644 index 0000000..786af70 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/misc.js.map @@ -0,0 +1 @@ +{"version":3,"file":"misc.js","sources":["../../../src/utils/misc.ts"],"sourcesContent":["import type { Event } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { Mechanism } from '../types-hoist/mechanism';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { addNonEnumerableProperty } from './object';\nimport { safeMathRandom, withRandomSafeContext } from './randomSafeContext';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\nfunction getCrypto(): CryptoInternal | undefined {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n return gbl.crypto || gbl.msCrypto;\n}\n\nlet emptyUuid: string | undefined;\n\nfunction getRandomByte(): number {\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 */\nexport function uuid4(crypto = getCrypto()): string {\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] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11;\n }\n\n return emptyUuid.replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\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 */\nexport function getEventDescription(event: Event): string {\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 */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\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 */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\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 */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\nfunction _parseInt(input: string | undefined): number {\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 */\nexport function parseSemver(input: string): SemVer {\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 */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\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: string) => 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: string) => 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 */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\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 as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\nfunction isAlreadyCaptured(exception: unknown): boolean | void {\n try {\n return (exception as { __sentry_captured__?: boolean }).__sentry_captured__;\n } catch {} // eslint-disable-line no-empty\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node-stack-trace.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node-stack-trace.js new file mode 100644 index 0000000..161db13 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node-stack-trace.js @@ -0,0 +1,127 @@ +import { normalizeStackTracePath, UNKNOWN_FUNCTION } from './stacktrace.js'; + +/** + * Does this filename look like it's part of the app code? + */ +function filenameIsInApp(filename, isNative = false) { + const isInternal = + isNative || + (filename && + // It's not internal if it's an absolute linux path + !filename.startsWith('/') && + // It's not internal if it's an absolute windows path + !filename.match(/^[A-Z]:/) && + // It's not internal if the path is starting with a dot + !filename.startsWith('.') && + // 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 + !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//)); // Schema from: https://stackoverflow.com/a/3641782 + + // in_app is all that's not an internal Node function or a module within node_modules + // note that isNative appears to return true even for node core libraries + // see https://github.com/getsentry/raven-node/issues/176 + + return !isInternal && filename !== undefined && !filename.includes('node_modules/'); +} + +/** Node Stack line parser */ +function node(getModule) { + const FILENAME_MATCH = /^\s*[-]{4,}$/; + const FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/; + const DATA_URI_MATCH = /at (?:async )?(.+?) \(data:(.*?),/; + + return (line) => { + const dataUriMatch = line.match(DATA_URI_MATCH); + if (dataUriMatch) { + return { + filename: ``, + function: dataUriMatch[1], + }; + } + + const lineMatch = line.match(FULL_MATCH); + + if (lineMatch) { + let object; + let method; + let functionName; + let typeName; + let methodName; + + if (lineMatch[1]) { + functionName = lineMatch[1]; + + let methodStart = functionName.lastIndexOf('.'); + if (functionName[methodStart - 1] === '.') { + methodStart--; + } + + if (methodStart > 0) { + object = functionName.slice(0, methodStart); + method = functionName.slice(methodStart + 1); + const objectEnd = object.indexOf('.Module'); + if (objectEnd > 0) { + functionName = functionName.slice(objectEnd + 1); + object = object.slice(0, objectEnd); + } + } + typeName = undefined; + } + + if (method) { + typeName = object; + methodName = method; + } + + if (method === '') { + methodName = undefined; + functionName = undefined; + } + + if (functionName === undefined) { + methodName = methodName || UNKNOWN_FUNCTION; + functionName = typeName ? `${typeName}.${methodName}` : methodName; + } + + let filename = normalizeStackTracePath(lineMatch[2]); + const isNative = lineMatch[5] === 'native'; + + if (!filename && lineMatch[5] && !isNative) { + filename = lineMatch[5]; + } + + return { + filename: filename ? decodeURI(filename) : undefined, + module: getModule ? getModule(filename) : undefined, + function: functionName, + lineno: _parseIntOrUndefined(lineMatch[3]), + colno: _parseIntOrUndefined(lineMatch[4]), + in_app: filenameIsInApp(filename || '', isNative), + }; + } + + if (line.match(FILENAME_MATCH)) { + return { + filename: line, + }; + } + + return undefined; + }; +} + +/** + * Node.js stack line parser + * + * This is in @sentry/core so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`. + * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain + */ +function nodeStackLineParser(getModule) { + return [90, node(getModule)]; +} + +function _parseIntOrUndefined(input) { + return parseInt(input || '', 10) || undefined; +} + +export { filenameIsInApp, node, nodeStackLineParser }; +//# sourceMappingURL=node-stack-trace.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node-stack-trace.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node-stack-trace.js.map new file mode 100644 index 0000000..648e487 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node-stack-trace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node-stack-trace.js","sources":["../../../src/utils/node-stack-trace.ts"],"sourcesContent":["// This code was originally forked from https://github.com/felixge/node-stack-trace\n// Since then it has been highly modified to fit our needs.\n\n// Copyright (c) 2011 Felix Geisendörfer (felix@debuggable.com)//\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\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 FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport type { StackLineParser, StackLineParserFn } from '../types-hoist/stacktrace';\nimport { normalizeStackTracePath, UNKNOWN_FUNCTION } from './stacktrace';\n\nexport type GetModuleFn = (filename: string | undefined) => string | undefined;\n\n/**\n * Does this filename look like it's part of the app code?\n */\nexport function filenameIsInApp(filename: string, isNative: boolean = false): boolean {\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 */\nexport function node(getModule?: GetModuleFn): StackLineParserFn {\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: string) => {\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: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\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 return {\n filename: filename ? decodeURI(filename) : undefined,\n module: getModule ? getModule(filename) : undefined,\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 */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n\nfunction _parseIntOrUndefined(input: string | undefined): number | undefined {\n return parseInt(input || '', 10) || undefined;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node.js new file mode 100644 index 0000000..c2aff47 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node.js @@ -0,0 +1,71 @@ +import { isBrowserBundle } from './env.js'; + +/** + * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something, + * you must either a) use `console.log` rather than the `debug` singleton, or b) put your function elsewhere. + */ + + +/** + * Checks whether we're in the Node.js or Browser environment + * + * @returns Answer to given question + */ +function isNodeEnv() { + // explicitly check for browser bundles as those can be optimized statically + // by terser/rollup. + return ( + !isBrowserBundle() && + Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]' + ); +} + +/** + * Requires a module which is protected against bundler minification. + * + * @param request The module path to resolve + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function dynamicRequire(mod, request) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return mod.require(request); +} + +/** + * Helper for dynamically loading module that should work with linked dependencies. + * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))` + * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during + * build time. `require.resolve` is also not available in any other way, so we cannot create, + * a fake helper like we do with `dynamicRequire`. + * + * We always prefer to use local package, thus the value is not returned early from each `try/catch` block. + * That is to mimic the behavior of `require.resolve` exactly. + * + * @param moduleName module name to require + * @param existingModule module to use for requiring + * @returns possibly required module + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function loadModule(moduleName, existingModule = module) { + let mod; + + try { + mod = dynamicRequire(existingModule, moduleName); + } catch { + // no-empty + } + + if (!mod) { + try { + const { cwd } = dynamicRequire(existingModule, 'process'); + mod = dynamicRequire(existingModule, `${cwd()}/node_modules/${moduleName}`) ; + } catch { + // no-empty + } + } + + return mod; +} + +export { isNodeEnv, loadModule }; +//# sourceMappingURL=node.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node.js.map new file mode 100644 index 0000000..03cca43 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/node.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node.js","sources":["../../../src/utils/node.ts"],"sourcesContent":["/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the `debug` singleton, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @param existingModule module to use for requiring\n * @returns possibly required module\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function loadModule(moduleName: string, existingModule: any = module): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(existingModule, moduleName);\n } catch {\n // no-empty\n }\n\n if (!mod) {\n try {\n const { cwd } = dynamicRequire(existingModule, 'process');\n mod = dynamicRequire(existingModule, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch {\n // no-empty\n }\n }\n\n return mod;\n}\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;;;AAIA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,GAAY;AACrC;AACA;AACA,EAAE;AACF,IAAI,CAAC,eAAe,EAAC;AACrB,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,OAAA,KAAY,WAAA,GAAc,UAAU,CAAC,MAAM;AACrF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,GAAG,EAAO,OAAO,EAAe;AACxD;AACA,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAI,UAAU,EAAU,cAAc,GAAQ,MAAM,EAAiB;AAC/F,EAAE,IAAI,GAAG;;AAET,EAAE,IAAI;AACN,IAAI,MAAM,cAAc,CAAC,cAAc,EAAE,UAAU,CAAC;AACpD,EAAE,EAAE,MAAM;AACV;AACA,EAAE;;AAEF,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,IAAI;AACR,MAAM,MAAM,EAAE,GAAA,EAAI,GAAI,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC;AAC/D,MAAM,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC,EAAA,GAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,CAAA,CAAA;AACA,IAAA,CAAA,CAAA,MAAA;AACA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,OAAA,GAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/normalize.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/normalize.js new file mode 100644 index 0000000..91818dd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/normalize.js @@ -0,0 +1,316 @@ +import { isVueViewModel, isSyntheticEvent } from './is.js'; +import { convertToPlainObject } from './object.js'; +import { getVueInternalName, getFunctionName } from './stacktrace.js'; + +/** + * Recursively normalizes the given object. + * + * - Creates a copy to prevent original input mutation + * - Skips non-enumerable properties + * - When stringifying, calls `toJSON` if implemented + * - Removes circular references + * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format + * - Translates known global objects/classes to a string representations + * - Takes care of `Error` object serialization + * - Optionally limits depth of final output + * - Optionally limits number of properties/elements included in any single object/array + * + * @param input The object to be normalized. + * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.) + * @param maxProperties The max number of elements or properties to be included in any single array or + * object in the normalized output. + * @returns A normalized version of the object, or `"**non-serializable**"` if any errors are thrown during normalization. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function normalize(input, depth = 100, maxProperties = +Infinity) { + try { + // since we're at the outermost level, we don't provide a key + return visit('', input, depth, maxProperties); + } catch (err) { + return { ERROR: `**non-serializable** (${err})` }; + } +} + +/** JSDoc */ +function normalizeToSize( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + object, + // Default Node.js REPL depth + depth = 3, + // 100kB, as 200kB is max payload size, so half sounds reasonable + maxSize = 100 * 1024, +) { + const normalized = normalize(object, depth); + + if (jsonSize(normalized) > maxSize) { + return normalizeToSize(object, depth - 1, maxSize); + } + + return normalized ; +} + +/** + * Visits a node to perform normalization on it + * + * @param key The key corresponding to the given node + * @param value The node to be visited + * @param depth Optional number indicating the maximum recursion depth + * @param maxProperties Optional maximum number of properties/elements included in any single object/array + * @param memo Optional Memo class handling decycling + */ +function visit( + key, + value, + depth = +Infinity, + maxProperties = +Infinity, + memo = memoBuilder(), +) { + const [memoize, unmemoize] = memo; + + // Get the simple cases out of the way first + if ( + value == null || // this matches null and undefined -> eqeq not eqeqeq + ['boolean', 'string'].includes(typeof value) || + (typeof value === 'number' && Number.isFinite(value)) + ) { + return value ; + } + + const stringified = stringifyValue(key, value); + + // Anything we could potentially dig into more (objects or arrays) will have come back as `"[object XXXX]"`. + // Everything else will have already been serialized, so if we don't see that pattern, we're done. + if (!stringified.startsWith('[object ')) { + return stringified; + } + + // From here on, we can assert that `value` is either an object or an array. + + // Do not normalize objects that we know have already been normalized. As a general rule, the + // "__sentry_skip_normalization__" property should only be used sparingly and only should only be set on objects that + // have already been normalized. + if ((value )['__sentry_skip_normalization__']) { + return value ; + } + + // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there + // We keep a certain amount of depth. + // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state. + const remainingDepth = + typeof (value )['__sentry_override_normalization_depth__'] === 'number' + ? ((value )['__sentry_override_normalization_depth__'] ) + : depth; + + // We're also done if we've reached the max depth + if (remainingDepth === 0) { + // At this point we know `serialized` is a string of the form `"[object XXXX]"`. Clean it up so it's just `"[XXXX]"`. + return stringified.replace('object ', ''); + } + + // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now. + if (memoize(value)) { + return '[Circular ~]'; + } + + // If the value has a `toJSON` method, we call it to extract more information + const valueWithToJSON = value ; + if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') { + try { + const jsonValue = valueWithToJSON.toJSON(); + // We need to normalize the return value of `.toJSON()` in case it has circular references + return visit('', jsonValue, remainingDepth - 1, maxProperties, memo); + } catch { + // pass (The built-in `toJSON` failed, but we can still try to do it ourselves) + } + } + + // 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 + // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each + // property/entry, and keep track of the number of items we add to it. + const normalized = (Array.isArray(value) ? [] : {}) ; + let numAdded = 0; + + // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant + // properties are non-enumerable and otherwise would get missed. + const visitable = convertToPlainObject(value ); + + for (const visitKey in visitable) { + // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration. + if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) { + continue; + } + + if (numAdded >= maxProperties) { + normalized[visitKey] = '[MaxProperties ~]'; + break; + } + + // Recursively visit all the child nodes + const visitValue = visitable[visitKey]; + normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo); + + numAdded++; + } + + // Once we've visited all the branches, remove the parent from memo storage + unmemoize(value); + + // Return accumulated values + return normalized; +} + +/* eslint-disable complexity */ +/** + * Stringify the given value. Handles various known special values and types. + * + * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn + * the number 1231 into "[Object Number]", nor on `null`, as it will throw. + * + * @param value The value to stringify + * @returns A stringified representation of the given value + */ +function stringifyValue( + key, + // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for + // our internal use, it'll do + value, +) { + try { + if (key === 'domain' && value && typeof value === 'object' && (value )._events) { + return '[Domain]'; + } + + if (key === 'domainEmitter') { + return '[DomainEmitter]'; + } + + // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first + // which won't throw if they are not present. + + if (typeof global !== 'undefined' && value === global) { + return '[Global]'; + } + + // eslint-disable-next-line no-restricted-globals + if (typeof window !== 'undefined' && value === window) { + return '[Window]'; + } + + // eslint-disable-next-line no-restricted-globals + if (typeof document !== 'undefined' && value === document) { + return '[Document]'; + } + + if (isVueViewModel(value)) { + return getVueInternalName(value); + } + + // React's SyntheticEvent thingy + if (isSyntheticEvent(value)) { + return '[SyntheticEvent]'; + } + + if (typeof value === 'number' && !Number.isFinite(value)) { + return `[${value}]`; + } + + if (typeof value === 'function') { + return `[Function: ${getFunctionName(value)}]`; + } + + if (typeof value === 'symbol') { + return `[${String(value)}]`; + } + + // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion + if (typeof value === 'bigint') { + return `[BigInt: ${String(value)}]`; + } + + // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting + // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as + // `"[object Object]"`. If we instead look at the constructor's name (which is the same as the name of the class), + // we can make sure that only plain objects come out that way. + const objName = getConstructorName(value); + + // Handle HTML Elements + if (/^HTML(\w*)Element$/.test(objName)) { + return `[HTMLElement: ${objName}]`; + } + + return `[object ${objName}]`; + } catch (err) { + return `**non-serializable** (${err})`; + } +} +/* eslint-enable complexity */ + +function getConstructorName(value) { + const prototype = Object.getPrototypeOf(value); + + return prototype?.constructor ? prototype.constructor.name : 'null prototype'; +} + +/** Calculates bytes size of input string */ +function utf8Length(value) { + // eslint-disable-next-line no-bitwise + return ~-encodeURI(value).split(/%..|./).length; +} + +/** Calculates bytes size of input object */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +/** + * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint + * across platforms and working directory. + * + * @param url The URL to be normalized. + * @param basePath The application base path. + * @returns The normalized URL. + */ +function normalizeUrlToBase(url, basePath) { + const escapedBase = basePath + // Backslash to forward + .replace(/\\/g, '/') + // Escape RegExp special characters + .replace(/[|\\{}()[\]^$+*?.]/g, '\\$&'); + + let newUrl = url; + try { + newUrl = decodeURI(url); + } catch { + // Sometime this breaks + } + return ( + newUrl + .replace(/\\/g, '/') + .replace(/webpack:\/?/g, '') // Remove intermediate base path + // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor + .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///') + ); +} + +/** + * Helper to decycle json objects + */ +function memoBuilder() { + const inner = new WeakSet(); + function memoize(obj) { + if (inner.has(obj)) { + return true; + } + inner.add(obj); + return false; + } + + function unmemoize(obj) { + inner.delete(obj); + } + return [memoize, unmemoize]; +} + +export { normalize, normalizeToSize, normalizeUrlToBase }; +//# sourceMappingURL=normalize.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/normalize.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/normalize.js.map new file mode 100644 index 0000000..069304b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/normalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"normalize.js","sources":["../../../src/utils/normalize.ts"],"sourcesContent":["import type { Primitive } from '../types-hoist/misc';\nimport { isSyntheticEvent, isVueViewModel } from './is';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName, getVueInternalName } from './stacktrace';\n\ntype Prototype = { constructor?: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\ntype MemoFunc = [\n // memoize\n (obj: object) => boolean,\n // unmemoize\n (obj: object) => void,\n];\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\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\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 */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\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: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo = memoBuilder(),\n): Primitive | ObjOrArray {\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 as Primitive;\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 as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\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 as ObjOrArray)['__sentry_override_normalization_depth__'] === 'number'\n ? ((value as ObjOrArray)['__sentry_override_normalization_depth__'] as number)\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 as unknown & { toJSON?: () => unknown };\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) ? [] : {}) as ObjOrArray;\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 as ObjOrArray);\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: unknown,\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: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._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: unknown): string {\n const prototype: Prototype | null = 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: string): number {\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: any): number {\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 */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\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 // eslint-disable-next-line @sentry-internal/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(): MemoFunc {\n const inner = new WeakSet();\n function memoize(obj: object): boolean {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n\n function unmemoize(obj: object): void {\n inner.delete(obj);\n }\n return [memoize, unmemoize];\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/object.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/object.js new file mode 100644 index 0000000..d8c791e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/object.js @@ -0,0 +1,278 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { htmlTreeAsString } from './browser.js'; +import { debug } from './debug-logger.js'; +import { isError, isEvent, isInstanceOf, isPrimitive, isElement } from './is.js'; + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +/** + * Replace a method in an object with a wrapped version of itself. + * + * If the method on the passed object is not a function, the wrapper will not be applied. + * + * @param source An object that contains a method to be wrapped. + * @param name The name of the method to be wrapped. + * @param replacementFactory A higher-order function that takes the original version of the given method and returns a + * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to + * 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`. + * @returns void + */ +function fill(source, name, replacementFactory) { + if (!(name in source)) { + return; + } + + // explicitly casting to unknown because we don't know the type of the method initially at all + const original = source[name] ; + + if (typeof original !== 'function') { + return; + } + + const wrapped = replacementFactory(original) ; + + // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work + // otherwise it'll throw "TypeError: Object.defineProperties called on non-object" + if (typeof wrapped === 'function') { + markFunctionWrapped(wrapped, original); + } + + try { + source[name] = wrapped; + } catch { + DEBUG_BUILD && debug.log(`Failed to replace method "${name}" in object`, source); + } +} + +/** + * Defines a non-enumerable property on the given object. + * + * @param obj The object on which to set the property + * @param name The name of the property to be set + * @param value The value to which to set the property + */ +function addNonEnumerableProperty(obj, name, value) { + try { + Object.defineProperty(obj, name, { + // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it + value: value, + writable: true, + configurable: true, + }); + } catch { + DEBUG_BUILD && debug.log(`Failed to add non-enumerable property "${name}" to object`, obj); + } +} + +/** + * Remembers the original function on the wrapped function and + * patches up the prototype. + * + * @param wrapped the wrapper function + * @param original the original function that gets wrapped + */ +function markFunctionWrapped(wrapped, original) { + try { + const proto = original.prototype || {}; + wrapped.prototype = original.prototype = proto; + addNonEnumerableProperty(wrapped, '__sentry_original__', original); + } catch {} // eslint-disable-line no-empty +} + +/** + * This extracts the original function if available. See + * `markFunctionWrapped` for more information. + * + * @param func the function to unwrap + * @returns the unwrapped version of the function if available. + */ +// eslint-disable-next-line @typescript-eslint/ban-types +function getOriginalFunction(func) { + return func.__sentry_original__; +} + +/** + * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their + * non-enumerable properties attached. + * + * @param value Initial source that we have to transform in order for it to be usable by the serializer + * @returns An Event or Error turned into an object - or the value argument itself, when value is neither an Event nor + * an Error. + */ +function convertToPlainObject(value) + + { + if (isError(value)) { + return { + message: value.message, + name: value.name, + stack: value.stack, + ...getOwnProperties(value), + }; + } else if (isEvent(value)) { + const newObj + + = { + type: value.type, + target: serializeEventTarget(value.target), + currentTarget: serializeEventTarget(value.currentTarget), + ...getOwnProperties(value), + }; + + if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) { + newObj.detail = value.detail; + } + + return newObj; + } else { + return value; + } +} + +/** Creates a string representation of the target of an `Event` object */ +function serializeEventTarget(target) { + try { + return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target); + } catch { + return ''; + } +} + +/** Filters out all but an object's own properties */ +function getOwnProperties(obj) { + if (typeof obj === 'object' && obj !== null) { + const extractedProps = {}; + for (const property in obj) { + if (Object.prototype.hasOwnProperty.call(obj, property)) { + extractedProps[property] = (obj )[property]; + } + } + return extractedProps; + } else { + return {}; + } +} + +/** + * Given any captured exception, extract its keys and create a sorted + * and truncated list that will be used inside the event message. + * eg. `Non-error exception captured with keys: foo, bar, baz` + */ +function extractExceptionKeysForMessage(exception) { + const keys = Object.keys(convertToPlainObject(exception)); + keys.sort(); + + return !keys[0] ? '[object has no keys]' : keys.join(', '); +} + +/** + * Given any object, return a new object having removed all fields whose value was `undefined`. + * Works recursively on objects and arrays. + * + * Attention: This function keeps circular references in the returned object. + * + * @deprecated This function is no longer used by the SDK and will be removed in a future major version. + */ +function dropUndefinedKeys(inputValue) { + // This map keeps track of what already visited nodes map to. + // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular + // references as the input object. + const memoizationMap = new Map(); + + // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API + return _dropUndefinedKeys(inputValue, memoizationMap); +} + +function _dropUndefinedKeys(inputValue, memoizationMap) { + // Early return for primitive values + if (inputValue === null || typeof inputValue !== 'object') { + return inputValue; + } + + // Check memo map first for all object types + const memoVal = memoizationMap.get(inputValue); + if (memoVal !== undefined) { + return memoVal ; + } + + // handle arrays + if (Array.isArray(inputValue)) { + const returnValue = []; + // Store mapping to handle circular references + memoizationMap.set(inputValue, returnValue); + + inputValue.forEach(value => { + returnValue.push(_dropUndefinedKeys(value, memoizationMap)); + }); + + return returnValue ; + } + + if (isPojo(inputValue)) { + const returnValue = {}; + // Store mapping to handle circular references + memoizationMap.set(inputValue, returnValue); + + const keys = Object.keys(inputValue); + + keys.forEach(key => { + const val = inputValue[key]; + if (val !== undefined) { + returnValue[key] = _dropUndefinedKeys(val, memoizationMap); + } + }); + + return returnValue ; + } + + // For other object types, return as is + return inputValue; +} + +function isPojo(input) { + // Plain objects have Object as constructor or no constructor + const constructor = (input ).constructor; + return constructor === Object || constructor === undefined; +} + +/** + * Ensure that something is an object. + * + * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper + * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives. + * + * @param wat The subject of the objectification + * @returns A version of `wat` which can safely be used with `Object` class methods + */ +function objectify(wat) { + let objectified; + switch (true) { + // this will catch both undefined and null + case wat == undefined: + objectified = new String(wat); + break; + + // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason + // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as + // an object in order to wrap it. + case typeof wat === 'symbol' || typeof wat === 'bigint': + objectified = Object(wat); + break; + + // this will catch the remaining primitives: `String`, `Number`, and `Boolean` + case isPrimitive(wat): + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + objectified = new (wat ).constructor(wat); + break; + + // by process of elimination, at this point we know that `wat` must already be an object + default: + objectified = wat; + break; + } + return objectified; +} + +export { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify }; +//# sourceMappingURL=object.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/object.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/object.js.map new file mode 100644 index 0000000..25b650f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/object.js.map @@ -0,0 +1 @@ +{"version":3,"file":"object.js","sources":["../../../src/utils/object.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { WrappedFunction } from '../types-hoist/wrappedfunction';\nimport { htmlTreeAsString } from './browser';\nimport { debug } from './debug-logger';\nimport { isElement, isError, isEvent, isInstanceOf, isPrimitive } from './is';\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 */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\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] as unknown;\n\n if (typeof original !== 'function') {\n return;\n }\n\n const wrapped = replacementFactory(original) as WrappedFunction;\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 */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\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: 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 */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\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\nexport function getOriginalFunction(func: WrappedFunction): T | undefined {\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 */\nexport function convertToPlainObject(value: V):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\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 [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\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: unknown): string {\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: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\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 */\nexport function extractExceptionKeysForMessage(exception: Record): string {\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 */\nexport function dropUndefinedKeys(inputValue: T): T {\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: T, memoizationMap: Map): T {\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 as T;\n }\n\n // handle arrays\n if (Array.isArray(inputValue)) {\n const returnValue: unknown[] = [];\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 as unknown as T;\n }\n\n if (isPojo(inputValue)) {\n const returnValue: { [key: string]: unknown } = {};\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 as T;\n }\n\n // For other object types, return as is\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record {\n // Plain objects have Object as constructor or no constructor\n const constructor = (input as object).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 */\nexport function objectify(wat: unknown): typeof Object {\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 as any).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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parameterize.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parameterize.js new file mode 100644 index 0000000..8e4abfd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parameterize.js @@ -0,0 +1,29 @@ +/** + * Tagged template function which returns parameterized representation of the message + * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return: + * "__sentry_template_string__": 'This is a log statement with %s and %s params', + * "__sentry_template_values__": ['first', 'second'] + * + * @param strings An array of string values splitted between expressions + * @param values Expressions extracted from template string + * + * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods. + */ +function parameterize(strings, ...values) { + const formatted = new String(String.raw(strings, ...values)) ; + formatted.__sentry_template_string__ = strings.join('\x00').replace(/%/g, '%%').replace(/\0/g, '%s'); + formatted.__sentry_template_values__ = values; + return formatted; +} + +/** + * Tagged template function which returns parameterized representation of the message. + * + * @param strings An array of string values splitted between expressions + * @param values Expressions extracted from template string + * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods. + */ +const fmt = parameterize; + +export { fmt, parameterize }; +//# sourceMappingURL=parameterize.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parameterize.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parameterize.js.map new file mode 100644 index 0000000..c82fd33 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parameterize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parameterize.js","sources":["../../../src/utils/parameterize.ts"],"sourcesContent":["import type { ParameterizedString } from '../types-hoist/parameterize';\n\n/**\n * Tagged template function which returns parameterized representation of the message\n * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return:\n * \"__sentry_template_string__\": 'This is a log statement with %s and %s params',\n * \"__sentry_template_values__\": ['first', 'second']\n *\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n *\n * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods.\n */\nexport function parameterize(strings: TemplateStringsArray, ...values: unknown[]): ParameterizedString {\n const formatted = new String(String.raw(strings, ...values)) as ParameterizedString;\n formatted.__sentry_template_string__ = strings.join('\\x00').replace(/%/g, '%%').replace(/\\0/g, '%s');\n formatted.__sentry_template_values__ = values;\n return formatted;\n}\n\n/**\n * Tagged template function which returns parameterized representation of the message.\n *\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods.\n */\nexport const fmt = parameterize;\n"],"names":[],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,OAAO,EAAwB,GAAG,MAAM,EAAkC;AACvG,EAAE,MAAM,SAAA,GAAY,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAA;AAC7D,EAAE,SAAS,CAAC,0BAAA,GAA6B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;AACtG,EAAE,SAAS,CAAC,0BAAA,GAA6B,MAAM;AAC/C,EAAE,OAAO,SAAS;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,GAAA,GAAM;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parseSampleRate.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parseSampleRate.js new file mode 100644 index 0000000..9ced4e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parseSampleRate.js @@ -0,0 +1,22 @@ +/** + * Parse a sample rate from a given value. + * This will either return a boolean or number sample rate, if the sample rate is valid (between 0 and 1). + * If a string is passed, we try to convert it to a number. + * + * Any invalid sample rate will return `undefined`. + */ +function parseSampleRate(sampleRate) { + if (typeof sampleRate === 'boolean') { + return Number(sampleRate); + } + + const rate = typeof sampleRate === 'string' ? parseFloat(sampleRate) : sampleRate; + if (typeof rate !== 'number' || isNaN(rate) || rate < 0 || rate > 1) { + return undefined; + } + + return rate; +} + +export { parseSampleRate }; +//# sourceMappingURL=parseSampleRate.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parseSampleRate.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parseSampleRate.js.map new file mode 100644 index 0000000..4039a67 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/parseSampleRate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parseSampleRate.js","sources":["../../../src/utils/parseSampleRate.ts"],"sourcesContent":["/**\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 */\nexport function parseSampleRate(sampleRate: unknown): number | undefined {\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"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,UAAU,EAA+B;AACzE,EAAE,IAAI,OAAO,UAAA,KAAe,SAAS,EAAE;AACvC,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC;AAC7B,EAAE;;AAEF,EAAE,MAAM,IAAA,GAAO,OAAO,UAAA,KAAe,QAAA,GAAW,UAAU,CAAC,UAAU,CAAA,GAAI,UAAU;AACnF,EAAE,IAAI,OAAO,SAAS,QAAA,IAAY,KAAK,CAAC,IAAI,CAAA,IAAK,OAAO,CAAA,IAAK,IAAA,GAAO,CAAC,EAAE;AACvE,IAAI,OAAO,SAAS;AACpB,EAAE;;AAEF,EAAE,OAAO,IAAI;AACb;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/path.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/path.js new file mode 100644 index 0000000..4ba0c46 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/path.js @@ -0,0 +1,212 @@ +// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript +// https://github.com/calvinmetcalf/rollup-plugin-node-builtins/blob/63ab8aacd013767445ca299e468d9a60a95328d7/src/es6/path.js +// +// Copyright Joyent, Inc.and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +/** JSDoc */ +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + let up = 0; + for (let i = parts.length - 1; i >= 0; i--) { + const last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +const splitPathRe = /^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/; +/** JSDoc */ +function splitPath(filename) { + // Truncate files names greater than 1024 characters to avoid regex dos + // https://github.com/getsentry/sentry-javascript/pull/8737#discussion_r1285719172 + const truncated = filename.length > 1024 ? `${filename.slice(-1024)}` : filename; + const parts = splitPathRe.exec(truncated); + return parts ? parts.slice(1) : []; +} + +// path.resolve([from ...], to) +// posix version +/** JSDoc */ +function resolve(...args) { + let resolvedPath = ''; + let resolvedAbsolute = false; + + for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? args[i] : '/'; + + // Skip empty entries + if (!path) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray( + resolvedPath.split('/').filter(p => !!p), + !resolvedAbsolute, + ).join('/'); + + return (resolvedAbsolute ? '/' : '') + resolvedPath || '.'; +} + +/** JSDoc */ +function trim(arr) { + let start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') { + break; + } + } + + let end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') { + break; + } + } + + if (start > end) { + return []; + } + return arr.slice(start, end - start + 1); +} + +// path.relative(from, to) +// posix version +/** JSDoc */ +function relative(from, to) { + /* eslint-disable no-param-reassign */ + from = resolve(from).slice(1); + to = resolve(to).slice(1); + /* eslint-enable no-param-reassign */ + + const fromParts = trim(from.split('/')); + const toParts = trim(to.split('/')); + + const length = Math.min(fromParts.length, toParts.length); + let samePartsLength = length; + for (let i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + let outputParts = []; + for (let i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +} + +// path.normalize(path) +// posix version +/** JSDoc */ +function normalizePath(path) { + const isPathAbsolute = isAbsolute(path); + const trailingSlash = path.slice(-1) === '/'; + + // Normalize the path + let normalizedPath = normalizeArray( + path.split('/').filter(p => !!p), + !isPathAbsolute, + ).join('/'); + + if (!normalizedPath && !isPathAbsolute) { + normalizedPath = '.'; + } + if (normalizedPath && trailingSlash) { + normalizedPath += '/'; + } + + return (isPathAbsolute ? '/' : '') + normalizedPath; +} + +// posix version +/** JSDoc */ +function isAbsolute(path) { + return path.charAt(0) === '/'; +} + +// posix version +/** JSDoc */ +function join(...args) { + return normalizePath(args.join('/')); +} + +/** JSDoc */ +function dirname(path) { + const result = splitPath(path); + const root = result[0] || ''; + let dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.slice(0, dir.length - 1); + } + + return root + dir; +} + +/** JSDoc */ +function basename(path, ext) { + let f = splitPath(path)[2] || ''; + if (ext && f.slice(ext.length * -1) === ext) { + f = f.slice(0, f.length - ext.length); + } + return f; +} + +export { basename, dirname, isAbsolute, join, normalizePath, relative, resolve }; +//# sourceMappingURL=path.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/path.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/path.js.map new file mode 100644 index 0000000..06bf950 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/path.js.map @@ -0,0 +1 @@ +{"version":3,"file":"path.js","sources":["../../../src/utils/path.ts"],"sourcesContent":["// 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: string[], allowAboveRoot?: boolean): string[] {\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: string): string[] {\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 */\nexport function resolve(...args: string[]): string {\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: string[]): string[] {\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 */\nexport function relative(from: string, to: string): string {\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 */\nexport function normalizePath(path: string): string {\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 */\nexport function isAbsolute(path: string): boolean {\n return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nexport function join(...args: string[]): string {\n return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nexport function dirname(path: string): string {\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 */\nexport function basename(path: string, ext?: string): string {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/prepareEvent.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/prepareEvent.js new file mode 100644 index 0000000..3085935 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/prepareEvent.js @@ -0,0 +1,337 @@ +import { DEFAULT_ENVIRONMENT } from '../constants.js'; +import { notifyEventProcessors } from '../eventProcessors.js'; +import { Scope } from '../scope.js'; +import { getFilenameToDebugIdMap } from './debug-ids.js'; +import { uuid4, addExceptionMechanism } from './misc.js'; +import { normalize } from './normalize.js'; +import { getCombinedScopeData, applyScopeDataToEvent } from './scopeData.js'; +import { truncate } from './string.js'; +import { dateTimestampInSeconds } from './time.js'; + +/** + * This type makes sure that we get either a CaptureContext, OR an EventHint. + * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed: + * { user: { id: '123' }, mechanism: { handled: false } } + */ + +/** + * Adds common information to events. + * + * The information includes release and environment from `options`, + * breadcrumbs and context (extra, tags and user) from the scope. + * + * Information that is already present in the event is never overwritten. For + * nested objects, such as the context, keys are merged. + * + * @param event The original event. + * @param hint May contain additional information about the original exception. + * @param scope A scope containing event metadata. + * @returns A new event with more information. + * @hidden + */ +function prepareEvent( + options, + event, + hint, + scope, + client, + isolationScope, +) { + const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options; + const prepared = { + ...event, + event_id: event.event_id || hint.event_id || uuid4(), + timestamp: event.timestamp || dateTimestampInSeconds(), + }; + const integrations = hint.integrations || options.integrations.map(i => i.name); + + applyClientOptions(prepared, options); + applyIntegrationsMetadata(prepared, integrations); + + if (client) { + client.emit('applyFrameMetadata', event); + } + + // Only put debug IDs onto frames for error events. + if (event.type === undefined) { + applyDebugIds(prepared, options.stackParser); + } + + // If we have scope given to us, use it as the base for further modifications. + // This allows us to prevent unnecessary copying of data if `captureContext` is not provided. + const finalScope = getFinalScope(scope, hint.captureContext); + + if (hint.mechanism) { + addExceptionMechanism(prepared, hint.mechanism); + } + + const clientEventProcessors = client ? client.getEventProcessors() : []; + + // This should be the last thing called, since we want that + // {@link Scope.addEventProcessor} gets the finished prepared event. + // Merge scope data together + const data = getCombinedScopeData(isolationScope, finalScope); + + const attachments = [...(hint.attachments || []), ...data.attachments]; + if (attachments.length) { + hint.attachments = attachments; + } + + applyScopeDataToEvent(prepared, data); + + const eventProcessors = [ + ...clientEventProcessors, + // Run scope event processors _after_ all other processors + ...data.eventProcessors, + ]; + + const result = notifyEventProcessors(eventProcessors, prepared, hint); + + return result.then(evt => { + if (evt) { + // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified + // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed. + // This should not cause any PII issues, since we're only moving data that is already on the event and not adding + // any new data + applyDebugMeta(evt); + } + + if (typeof normalizeDepth === 'number' && normalizeDepth > 0) { + return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth); + } + return evt; + }); +} + +/** + * Enhances event using the client configuration. + * It takes care of all "static" values like environment, release and `dist`, + * as well as truncating overly long values. + * + * Only exported for tests. + * + * @param event event instance to be enhanced + */ +function applyClientOptions(event, options) { + const { environment, release, dist, maxValueLength } = options; + + // empty strings do not make sense for environment, release, and dist + // so we handle them the same as if they were not provided + event.environment = event.environment || environment || DEFAULT_ENVIRONMENT; + + if (!event.release && release) { + event.release = release; + } + + if (!event.dist && dist) { + event.dist = dist; + } + + const request = event.request; + if (request?.url && maxValueLength) { + request.url = truncate(request.url, maxValueLength); + } + + if (maxValueLength) { + event.exception?.values?.forEach(exception => { + if (exception.value) { + // Truncates error messages + exception.value = truncate(exception.value, maxValueLength); + } + }); + } +} + +/** + * Puts debug IDs into the stack frames of an error event. + */ +function applyDebugIds(event, stackParser) { + // Build a map of filename -> debug_id + const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser); + + event.exception?.values?.forEach(exception => { + exception.stacktrace?.frames?.forEach(frame => { + if (frame.filename) { + frame.debug_id = filenameDebugIdMap[frame.filename]; + } + }); + }); +} + +/** + * Moves debug IDs from the stack frames of an error event into the debug_meta field. + */ +function applyDebugMeta(event) { + // Extract debug IDs and filenames from the stack frames on the event. + const filenameDebugIdMap = {}; + event.exception?.values?.forEach(exception => { + exception.stacktrace?.frames?.forEach(frame => { + if (frame.debug_id) { + if (frame.abs_path) { + filenameDebugIdMap[frame.abs_path] = frame.debug_id; + } else if (frame.filename) { + filenameDebugIdMap[frame.filename] = frame.debug_id; + } + delete frame.debug_id; + } + }); + }); + + if (Object.keys(filenameDebugIdMap).length === 0) { + return; + } + + // Fill debug_meta information + event.debug_meta = event.debug_meta || {}; + event.debug_meta.images = event.debug_meta.images || []; + const images = event.debug_meta.images; + Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => { + images.push({ + type: 'sourcemap', + code_file: filename, + debug_id, + }); + }); +} + +/** + * This function adds all used integrations to the SDK info in the event. + * @param event The event that will be filled with all integrations. + */ +function applyIntegrationsMetadata(event, integrationNames) { + if (integrationNames.length > 0) { + event.sdk = event.sdk || {}; + event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames]; + } +} + +/** + * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization. + * Normalized keys: + * - `breadcrumbs.data` + * - `user` + * - `contexts` + * - `extra` + * @param event Event + * @returns Normalized event + */ +function normalizeEvent(event, depth, maxBreadth) { + if (!event) { + return null; + } + + const normalized = { + ...event, + ...(event.breadcrumbs && { + breadcrumbs: event.breadcrumbs.map(b => ({ + ...b, + ...(b.data && { + data: normalize(b.data, depth, maxBreadth), + }), + })), + }), + ...(event.user && { + user: normalize(event.user, depth, maxBreadth), + }), + ...(event.contexts && { + contexts: normalize(event.contexts, depth, maxBreadth), + }), + ...(event.extra && { + extra: normalize(event.extra, depth, maxBreadth), + }), + }; + + // event.contexts.trace stores information about a Transaction. Similarly, + // event.spans[] stores information about child Spans. Given that a + // Transaction is conceptually a Span, normalization should apply to both + // Transactions and Spans consistently. + // For now the decision is to skip normalization of Transactions and Spans, + // so this block overwrites the normalized event to add back the original + // Transaction information prior to normalization. + if (event.contexts?.trace && normalized.contexts) { + normalized.contexts.trace = event.contexts.trace; + + // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it + if (event.contexts.trace.data) { + normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth); + } + } + + // event.spans[].data may contain circular/dangerous data so we need to normalize it + if (event.spans) { + normalized.spans = event.spans.map(span => { + return { + ...span, + ...(span.data && { + data: normalize(span.data, depth, maxBreadth), + }), + }; + }); + } + + // event.contexts.flags (FeatureFlagContext) stores context for our feature + // flag integrations. It has a greater nesting depth than our other typed + // Contexts, so we re-normalize with a fixed depth of 3 here. We do not want + // to skip this in case of conflicting, user-provided context. + if (event.contexts?.flags && normalized.contexts) { + normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth); + } + + return normalized; +} + +function getFinalScope(scope, captureContext) { + if (!captureContext) { + return scope; + } + + const finalScope = scope ? scope.clone() : new Scope(); + finalScope.update(captureContext); + return finalScope; +} + +/** + * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`. + * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`. + */ +function parseEventHintOrCaptureContext( + hint, +) { + if (!hint) { + return undefined; + } + + // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext + if (hintIsScopeOrFunction(hint)) { + return { captureContext: hint }; + } + + if (hintIsScopeContext(hint)) { + return { + captureContext: hint, + }; + } + + return hint; +} + +function hintIsScopeOrFunction(hint) { + return hint instanceof Scope || typeof hint === 'function'; +} + +const captureContextKeys = [ + 'user', + 'level', + 'extra', + 'contexts', + 'tags', + 'fingerprint', + 'propagationContext', +] ; + +function hintIsScopeContext(hint) { + return Object.keys(hint).some(key => captureContextKeys.includes(key )); +} + +export { applyClientOptions, applyDebugIds, applyDebugMeta, parseEventHintOrCaptureContext, prepareEvent }; +//# sourceMappingURL=prepareEvent.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/prepareEvent.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/prepareEvent.js.map new file mode 100644 index 0000000..9695421 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/prepareEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"prepareEvent.js","sources":["../../../src/utils/prepareEvent.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { notifyEventProcessors } from '../eventProcessors';\nimport type { CaptureContext, ScopeContext } from '../scope';\nimport { Scope } from '../scope';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { getFilenameToDebugIdMap } from './debug-ids';\nimport { addExceptionMechanism, uuid4 } from './misc';\nimport { normalize } from './normalize';\nimport { applyScopeDataToEvent, getCombinedScopeData } from './scopeData';\nimport { truncate } from './string';\nimport { dateTimestampInSeconds } from './time';\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 */\nexport type ExclusiveEventHintOrCaptureContext =\n | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\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 */\nexport function prepareEvent(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n scope?: Scope,\n client?: Client,\n isolationScope?: Scope,\n): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n const prepared: Event = {\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 const result = 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 */\nexport function applyClientOptions(event: Event, options: ClientOptions): void {\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 */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\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 */\nexport function applyDebugMeta(event: Event): void {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap: Record = {};\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: Event, integrationNames: string[]): void {\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: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\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: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\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 */\nexport function parseEventHintOrCaptureContext(\n hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\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: CaptureContext | EventHint): hint is Scope | ((scope: Scope) => Scope) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial | EventHint): hint is Partial {\n return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/promisebuffer.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/promisebuffer.js new file mode 100644 index 0000000..b8111cf --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/promisebuffer.js @@ -0,0 +1,89 @@ +import { resolvedSyncPromise, rejectedSyncPromise } from './syncpromise.js'; + +const SENTRY_BUFFER_FULL_ERROR = Symbol.for('SentryBufferFullError'); + +/** + * Creates an new PromiseBuffer object with the specified limit + * @param limit max number of promises that can be stored in the buffer + */ +function makePromiseBuffer(limit = 100) { + const buffer = new Set(); + + function isReady() { + return buffer.size < limit; + } + + /** + * Remove a promise from the queue. + * + * @param task Can be any PromiseLike + * @returns Removed promise. + */ + function remove(task) { + buffer.delete(task); + } + + /** + * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment. + * + * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task: + * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor + * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By + * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer + * limit check. + * @returns The original promise. + */ + function add(taskProducer) { + if (!isReady()) { + return rejectedSyncPromise(SENTRY_BUFFER_FULL_ERROR); + } + + // start the task and add its promise to the queue + const task = taskProducer(); + buffer.add(task); + void task.then( + () => remove(task), + () => remove(task), + ); + return task; + } + + /** + * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first. + * + * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or + * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to + * `true`. + * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and + * `false` otherwise + */ + function drain(timeout) { + if (!buffer.size) { + return resolvedSyncPromise(true); + } + + // We want to resolve even if one of the promises rejects + const drainPromise = Promise.allSettled(Array.from(buffer)).then(() => true); + + if (!timeout) { + return drainPromise; + } + + const promises = [drainPromise, new Promise(resolve => setTimeout(() => resolve(false), timeout))]; + + // Promise.race will resolve to the first promise that resolves or rejects + // So if the drainPromise resolves, the timeout promise will be ignored + return Promise.race(promises); + } + + return { + get $() { + return Array.from(buffer); + }, + add, + drain, + }; +} + +export { SENTRY_BUFFER_FULL_ERROR, makePromiseBuffer }; +//# sourceMappingURL=promisebuffer.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/promisebuffer.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/promisebuffer.js.map new file mode 100644 index 0000000..a4ffed9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/promisebuffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"promisebuffer.js","sources":["../../../src/utils/promisebuffer.ts"],"sourcesContent":["import { rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: PromiseLike[];\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\nexport const 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 */\nexport function makePromiseBuffer(limit: number = 100): PromiseBuffer {\n const buffer: Set> = new Set();\n\n function isReady(): boolean {\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: PromiseLike): void {\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: () => PromiseLike): PromiseLike {\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?: number): PromiseLike {\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 = [drainPromise, new Promise(resolve => setTimeout(() => resolve(false), timeout))];\n\n // Promise.race will resolve to the first promise that resolves or rejects\n // So if the drainPromise resolves, the timeout promise will be ignored\n return Promise.race(promises);\n }\n\n return {\n get $(): PromiseLike[] {\n return Array.from(buffer);\n },\n add,\n drain,\n };\n}\n"],"names":[],"mappings":";;AAUO,MAAM,2BAA2B,MAAM,CAAC,GAAG,CAAC,uBAAuB;;AAE1E;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAI,KAAK,GAAW,GAAG,EAAoB;AAC5E,EAAE,MAAM,MAAM,GAAwB,IAAI,GAAG,EAAE;;AAE/C,EAAE,SAAS,OAAO,GAAY;AAC9B,IAAI,OAAO,MAAM,CAAC,IAAA,GAAO,KAAK;AAC9B,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,MAAM,CAAC,IAAI,EAAwB;AAC9C,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,GAAG,CAAC,YAAY,EAAwC;AACnE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACpB,MAAM,OAAO,mBAAmB,CAAC,wBAAwB,CAAC;AAC1D,IAAI;;AAEJ;AACA,IAAI,MAAM,IAAA,GAAO,YAAY,EAAE;AAC/B,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,IAAI;AAClB,MAAM,MAAM,MAAM,CAAC,IAAI,CAAC;AACxB,MAAM,MAAM,MAAM,CAAC,IAAI,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,KAAK,CAAC,OAAO,EAAiC;AACzD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACtB,MAAM,OAAO,mBAAmB,CAAC,IAAI,CAAC;AACtC,IAAI;;AAEJ;AACA,IAAI,MAAM,eAAe,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;;AAEhF,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,OAAO,YAAY;AACzB,IAAI;;AAEJ,IAAI,MAAM,QAAA,GAAW,CAAC,YAAY,EAAE,IAAI,OAAO,CAAU,OAAA,IAAW,UAAU,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;;AAE/G;AACA;AACA,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjC,EAAE;;AAEF,EAAE,OAAO;AACT,IAAI,IAAI,CAAC,GAAqB;AAC9B,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/B,IAAI,CAAC;AACL,IAAI,GAAG;AACP,IAAI,KAAK;AACT,GAAG;AACH;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/propagationContext.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/propagationContext.js new file mode 100644 index 0000000..79dd401 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/propagationContext.js @@ -0,0 +1,18 @@ +import { uuid4 } from './misc.js'; + +/** + * Generate a random, valid trace ID. + */ +function generateTraceId() { + return uuid4(); +} + +/** + * Generate a random, valid span ID. + */ +function generateSpanId() { + return uuid4().substring(16); +} + +export { generateSpanId, generateTraceId }; +//# sourceMappingURL=propagationContext.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/propagationContext.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/propagationContext.js.map new file mode 100644 index 0000000..398f55f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/propagationContext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"propagationContext.js","sources":["../../../src/utils/propagationContext.ts"],"sourcesContent":["import { uuid4 } from './misc';\n\n/**\n * Generate a random, valid trace ID.\n */\nexport function generateTraceId(): string {\n return uuid4();\n}\n\n/**\n * Generate a random, valid span ID.\n */\nexport function generateSpanId(): string {\n return uuid4().substring(16);\n}\n"],"names":[],"mappings":";;AAEA;AACA;AACA;AACO,SAAS,eAAe,GAAW;AAC1C,EAAE,OAAO,KAAK,EAAE;AAChB;;AAEA;AACA;AACA;AACO,SAAS,cAAc,GAAW;AACzC,EAAE,OAAO,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;AAC9B;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/randomSafeContext.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/randomSafeContext.js new file mode 100644 index 0000000..9a14745 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/randomSafeContext.js @@ -0,0 +1,44 @@ +import { GLOBAL_OBJ } from './worldwide.js'; + +// undefined = not yet resolved, null = no runner found, function = runner found +let RESOLVED_RUNNER; + +/** + * Simple wrapper that allows SDKs to *secretly* set context wrapper to generate safe random IDs in cache components contexts + */ +function withRandomSafeContext(cb) { + // Skips future symbol lookups if we've already resolved (or attempted to resolve) the runner once + if (RESOLVED_RUNNER !== undefined) { + return RESOLVED_RUNNER ? RESOLVED_RUNNER(cb) : cb(); + } + + const sym = Symbol.for('__SENTRY_SAFE_RANDOM_ID_WRAPPER__'); + const globalWithSymbol = GLOBAL_OBJ; + + if (sym in globalWithSymbol && typeof globalWithSymbol[sym] === 'function') { + RESOLVED_RUNNER = globalWithSymbol[sym]; + return RESOLVED_RUNNER(cb); + } + + RESOLVED_RUNNER = null; + return cb(); +} + +/** + * Identical to Math.random() but wrapped in withRandomSafeContext + * to ensure safe random number generation in certain contexts (e.g., Next.js Cache Components). + */ +function safeMathRandom() { + return withRandomSafeContext(() => Math.random()); +} + +/** + * Identical to Date.now() but wrapped in withRandomSafeContext + * to ensure safe time value generation in certain contexts (e.g., Next.js Cache Components). + */ +function safeDateNow() { + return withRandomSafeContext(() => Date.now()); +} + +export { safeDateNow, safeMathRandom, withRandomSafeContext }; +//# sourceMappingURL=randomSafeContext.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/randomSafeContext.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/randomSafeContext.js.map new file mode 100644 index 0000000..266385b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/randomSafeContext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"randomSafeContext.js","sources":["../../../src/utils/randomSafeContext.ts"],"sourcesContent":["import { GLOBAL_OBJ } from './worldwide';\n\nexport type RandomSafeContextRunner = (callback: () => T) => T;\n\n// undefined = not yet resolved, null = no runner found, function = runner found\nlet RESOLVED_RUNNER: RandomSafeContextRunner | null | undefined;\n\n/**\n * Simple wrapper that allows SDKs to *secretly* set context wrapper to generate safe random IDs in cache components contexts\n */\nexport function withRandomSafeContext(cb: () => T): T {\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: typeof GLOBAL_OBJ & { [sym]?: RandomSafeContextRunner } = 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 */\nexport function safeMathRandom(): number {\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 */\nexport function safeDateNow(): number {\n return withRandomSafeContext(() => Date.now());\n}\n"],"names":[],"mappings":";;AAIA;AACA,IAAI,eAAe;;AAEnB;AACA;AACA;AACO,SAAS,qBAAqB,CAAI,EAAE,EAAc;AACzD;AACA,EAAE,IAAI,eAAA,KAAoB,SAAS,EAAE;AACrC,IAAI,OAAO,eAAA,GAAkB,eAAe,CAAC,EAAE,CAAA,GAAI,EAAE,EAAE;AACvD,EAAE;;AAEF,EAAE,MAAM,MAAM,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC;AAC7D,EAAE,MAAM,gBAAgB,GAA4D,UAAU;;AAE9F,EAAE,IAAI,GAAA,IAAO,gBAAA,IAAoB,OAAO,gBAAgB,CAAC,GAAG,CAAA,KAAM,UAAU,EAAE;AAC9E,IAAI,eAAA,GAAkB,gBAAgB,CAAC,GAAG,CAAC;AAC3C,IAAI,OAAO,eAAe,CAAC,EAAE,CAAC;AAC9B,EAAE;;AAEF,EAAE,eAAA,GAAkB,IAAI;AACxB,EAAE,OAAO,EAAE,EAAE;AACb;;AAEA;AACA;AACA;AACA;AACO,SAAS,cAAc,GAAW;AACzC,EAAE,OAAO,qBAAqB,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACnD;;AAEA;AACA;AACA;AACA;AACO,SAAS,WAAW,GAAW;AACtC,EAAE,OAAO,qBAAqB,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;AAChD;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ratelimit.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ratelimit.js new file mode 100644 index 0000000..781ff76 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ratelimit.js @@ -0,0 +1,108 @@ +import { safeDateNow } from './randomSafeContext.js'; + +// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend + +const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds + +/** + * Extracts Retry-After value from the request header or returns default value + * @param header string representation of 'Retry-After' header + * @param now current unix timestamp + * + */ +function parseRetryAfterHeader(header, now = safeDateNow()) { + const headerDelay = parseInt(`${header}`, 10); + if (!isNaN(headerDelay)) { + return headerDelay * 1000; + } + + const headerDate = Date.parse(`${header}`); + if (!isNaN(headerDate)) { + return headerDate - now; + } + + return DEFAULT_RETRY_AFTER; +} + +/** + * Gets the time that the given category is disabled until for rate limiting. + * In case no category-specific limit is set but a general rate limit across all categories is active, + * that time is returned. + * + * @return the time in ms that the category is disabled until or 0 if there's no active rate limit. + */ +function disabledUntil(limits, dataCategory) { + return limits[dataCategory] || limits.all || 0; +} + +/** + * Checks if a category is rate limited + */ +function isRateLimited(limits, dataCategory, now = safeDateNow()) { + return disabledUntil(limits, dataCategory) > now; +} + +/** + * Update ratelimits from incoming headers. + * + * @return the updated RateLimits object. + */ +function updateRateLimits( + limits, + { statusCode, headers }, + now = safeDateNow(), +) { + const updatedRateLimits = { + ...limits, + }; + + // "The name is case-insensitive." + // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get + const rateLimitHeader = headers?.['x-sentry-rate-limits']; + const retryAfterHeader = headers?.['retry-after']; + + if (rateLimitHeader) { + /** + * rate limit headers are of the form + *
                          ,
                          ,.. + * where each
                          is of the form + * : : : : + * where + * is a delay in seconds + * is the event type(s) (error, transaction, etc) being rate limited and is of the form + * ;;... + * is what's being limited (org, project, or key) - ignored by SDK + * is an arbitrary string like "org_quota" - ignored by SDK + * Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected. + * Only present if rate limit applies to the metric_bucket data category. + */ + for (const limit of rateLimitHeader.trim().split(',')) { + const [retryAfter, categories, , , namespaces] = limit.split(':', 5) ; + const headerDelay = parseInt(retryAfter, 10); + const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default + if (!categories) { + updatedRateLimits.all = now + delay; + } else { + for (const category of categories.split(';')) { + if (category === 'metric_bucket') { + // namespaces will be present when category === 'metric_bucket' + if (!namespaces || namespaces.split(';').includes('custom')) { + updatedRateLimits[category] = now + delay; + } + } else { + updatedRateLimits[category] = now + delay; + } + } + } + } + } else if (retryAfterHeader) { + updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now); + } else if (statusCode === 429) { + updatedRateLimits.all = now + 60 * 1000; + } + + return updatedRateLimits; +} + +export { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits }; +//# sourceMappingURL=ratelimit.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ratelimit.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ratelimit.js.map new file mode 100644 index 0000000..2e4d347 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/ratelimit.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ratelimit.js","sources":["../../../src/utils/ratelimit.ts"],"sourcesContent":["import type { DataCategory } from '../types-hoist/datacategory';\nimport type { TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { safeDateNow } from './randomSafeContext';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const 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 */\nexport function parseRetryAfterHeader(header: string, now: number = safeDateNow()): number {\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 */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = safeDateNow()): boolean {\n return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = safeDateNow(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\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) as [string, ...string[]];\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/request.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/request.js new file mode 100644 index 0000000..f140e45 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/request.js @@ -0,0 +1,249 @@ +/** + * 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. + * The header keys will be lower case: e.g. A "Content-Type" header will be stored as "content-type". + */ +function winterCGHeadersToDict(winterCGHeaders) { + const headers = {}; + try { + winterCGHeaders.forEach((value, key) => { + if (typeof value === 'string') { + // We check that value is a string even though it might be redundant to make sure prototype pollution is not possible. + headers[key] = value; + } + }); + } catch { + // just return the empty headers + } + + return headers; +} + +/** + * Convert common request headers to a simple dictionary. + */ +function headersToDict(reqHeaders) { + const headers = Object.create(null); + + try { + Object.entries(reqHeaders).forEach(([key, value]) => { + if (typeof value === 'string') { + headers[key] = value; + } + }); + } catch { + // just return the empty headers + } + + return headers; +} + +/** + * 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. + */ +function winterCGRequestToRequestData(req) { + const headers = winterCGHeadersToDict(req.headers); + + return { + method: req.method, + url: req.url, + query_string: extractQueryParamsFromUrl(req.url), + headers, + // TODO: Can we extract body data from the request? + }; +} + +/** + * Convert a HTTP request object to RequestEventData to be passed as normalizedRequest. + * Instead of allowing `PolymorphicRequest` to be passed, + * we want to be more specific and generally require a http.IncomingMessage-like object. + */ +function httpRequestToRequestData(request + +) { + const headers = request.headers || {}; + + // Check for x-forwarded-host first, then fall back to host header + const forwardedHost = typeof headers['x-forwarded-host'] === 'string' ? headers['x-forwarded-host'] : undefined; + const host = forwardedHost || (typeof headers.host === 'string' ? headers.host : undefined); + + // Check for x-forwarded-proto first, then fall back to existing protocol detection + const forwardedProto = typeof headers['x-forwarded-proto'] === 'string' ? headers['x-forwarded-proto'] : undefined; + const protocol = forwardedProto || request.protocol || (request.socket?.encrypted ? 'https' : 'http'); + + const url = request.url || ''; + + const absoluteUrl = getAbsoluteUrl({ + url, + host, + protocol, + }); + + // This is non-standard, but may be sometimes set + // It may be overwritten later by our own body handling + const data = (request ).body || undefined; + + // This is non-standard, but may be set on e.g. Next.js or Express requests + const cookies = (request ).cookies; + + return { + url: absoluteUrl, + method: request.method, + query_string: extractQueryParamsFromUrl(url), + headers: headersToDict(headers), + cookies, + data, + }; +} + +function getAbsoluteUrl({ + url, + protocol, + host, +} + +) { + if (url?.startsWith('http')) { + return url; + } + + if (url && host) { + return `${protocol}://${host}${url}`; + } + + return undefined; +} + +const SENSITIVE_HEADER_SNIPPETS = [ + 'auth', + 'token', + 'secret', + 'session', // for the user_session cookie + 'password', + 'passwd', + 'pwd', + 'key', + 'jwt', + 'bearer', + 'sso', + 'saml', + 'csrf', + 'xsrf', + 'credentials', + // Always treat cookie headers as sensitive in case individual key-value cookie pairs cannot properly be extracted + 'set-cookie', + 'cookie', +]; + +const PII_HEADER_SNIPPETS = ['x-forwarded-', '-user']; + +/** + * Converts incoming HTTP request headers to OpenTelemetry span attributes following semantic conventions. + * Header names are converted to the format: http.request.header. + * where is the header name in lowercase with dashes converted to underscores. + * + * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-request-header + */ +function httpHeadersToSpanAttributes( + headers, + sendDefaultPii = false, +) { + const spanAttributes = {}; + + try { + Object.entries(headers).forEach(([key, value]) => { + if (value == null) { + return; + } + + const lowerCasedHeaderKey = key.toLowerCase(); + const isCookieHeader = lowerCasedHeaderKey === 'cookie' || lowerCasedHeaderKey === 'set-cookie'; + + if (isCookieHeader && typeof value === 'string' && value !== '') { + // Set-Cookie: single cookie with attributes ("name=value; HttpOnly; Secure") + // Cookie: multiple cookies separated by "; " ("cookie1=value1; cookie2=value2") + const isSetCookie = lowerCasedHeaderKey === 'set-cookie'; + const semicolonIndex = value.indexOf(';'); + const cookieString = isSetCookie && semicolonIndex !== -1 ? value.substring(0, semicolonIndex) : value; + const cookies = isSetCookie ? [cookieString] : cookieString.split('; '); + + for (const cookie of cookies) { + // Split only at the first '=' to preserve '=' characters in cookie values + const equalSignIndex = cookie.indexOf('='); + const cookieKey = equalSignIndex !== -1 ? cookie.substring(0, equalSignIndex) : cookie; + const cookieValue = equalSignIndex !== -1 ? cookie.substring(equalSignIndex + 1) : ''; + + const lowerCasedCookieKey = cookieKey.toLowerCase(); + + addSpanAttribute(spanAttributes, lowerCasedHeaderKey, lowerCasedCookieKey, cookieValue, sendDefaultPii); + } + } else { + addSpanAttribute(spanAttributes, lowerCasedHeaderKey, '', value, sendDefaultPii); + } + }); + } catch { + // Return empty object if there's an error + } + + return spanAttributes; +} + +function normalizeAttributeKey(key) { + return key.replace(/-/g, '_'); +} + +function addSpanAttribute( + spanAttributes, + headerKey, + cookieKey, + value, + sendPii, +) { + const normalizedKey = cookieKey + ? `http.request.header.${normalizeAttributeKey(headerKey)}.${normalizeAttributeKey(cookieKey)}` + : `http.request.header.${normalizeAttributeKey(headerKey)}`; + + const headerValue = handleHttpHeader(cookieKey || headerKey, value, sendPii); + if (headerValue !== undefined) { + spanAttributes[normalizedKey] = headerValue; + } +} + +function handleHttpHeader( + lowerCasedKey, + value, + sendPii, +) { + const isSensitive = sendPii + ? SENSITIVE_HEADER_SNIPPETS.some(snippet => lowerCasedKey.includes(snippet)) + : [...PII_HEADER_SNIPPETS, ...SENSITIVE_HEADER_SNIPPETS].some(snippet => lowerCasedKey.includes(snippet)); + + if (isSensitive) { + return '[Filtered]'; + } else if (Array.isArray(value)) { + return value.map(v => (v != null ? String(v) : v)).join(';'); + } else if (typeof value === 'string') { + return value; + } + + return undefined; +} + +/** Extract the query params from an URL. */ +function extractQueryParamsFromUrl(url) { + // url is path and query string + if (!url) { + return; + } + + try { + // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and + // hostname as the base. Since the point here is just to grab the query string, it doesn't matter what we use. + const queryParams = new URL(url, 'http://s.io').search.slice(1); + return queryParams.length ? queryParams : undefined; + } catch { + return undefined; + } +} + +export { extractQueryParamsFromUrl, headersToDict, httpHeadersToSpanAttributes, httpRequestToRequestData, winterCGHeadersToDict, winterCGRequestToRequestData }; +//# sourceMappingURL=request.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/request.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/request.js.map new file mode 100644 index 0000000..6c8330e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/request.js.map @@ -0,0 +1 @@ +{"version":3,"file":"request.js","sources":["../../../src/utils/request.ts"],"sourcesContent":["import type { PolymorphicRequest } from '../types-hoist/polymorphics';\nimport type { RequestEventData } from '../types-hoist/request';\nimport type { WebFetchHeaders, WebFetchRequest } from '../types-hoist/webfetchapi';\n\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 */\nexport function winterCGHeadersToDict(winterCGHeaders: WebFetchHeaders): Record {\n const headers: Record = {};\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 */\nexport function headersToDict(reqHeaders: Record): Record {\n const headers: Record = 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 */\nexport function winterCGRequestToRequestData(req: WebFetchRequest): RequestEventData {\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 */\nexport function httpRequestToRequestData(request: {\n method?: string;\n url?: string;\n headers?: {\n [key: string]: string | string[] | undefined;\n };\n protocol?: string;\n socket?: {\n encrypted?: boolean;\n remoteAddress?: string;\n };\n}): RequestEventData {\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 as PolymorphicRequest).body || undefined;\n\n // This is non-standard, but may be set on e.g. Next.js or Express requests\n const cookies = (request as PolymorphicRequest).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 url?: string;\n protocol: string;\n host?: string;\n}): string | undefined {\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 headers to OpenTelemetry span attributes following semantic conventions.\n * Header names are converted to the format: http.request.header.\n * where is the header name in lowercase with dashes converted to underscores.\n *\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-request-header\n */\nexport function httpHeadersToSpanAttributes(\n headers: Record,\n sendDefaultPii: boolean = false,\n): Record {\n const spanAttributes: Record = {};\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(spanAttributes, lowerCasedHeaderKey, lowerCasedCookieKey, cookieValue, sendDefaultPii);\n }\n } else {\n addSpanAttribute(spanAttributes, lowerCasedHeaderKey, '', value, sendDefaultPii);\n }\n });\n } catch {\n // Return empty object if there's an error\n }\n\n return spanAttributes;\n}\n\nfunction normalizeAttributeKey(key: string): string {\n return key.replace(/-/g, '_');\n}\n\nfunction addSpanAttribute(\n spanAttributes: Record,\n headerKey: string,\n cookieKey: string,\n value: string | string[] | undefined,\n sendPii: boolean,\n): void {\n const normalizedKey = cookieKey\n ? `http.request.header.${normalizeAttributeKey(headerKey)}.${normalizeAttributeKey(cookieKey)}`\n : `http.request.header.${normalizeAttributeKey(headerKey)}`;\n\n const headerValue = handleHttpHeader(cookieKey || headerKey, value, sendPii);\n if (headerValue !== undefined) {\n spanAttributes[normalizedKey] = headerValue;\n }\n}\n\nfunction handleHttpHeader(\n lowerCasedKey: string,\n value: string | string[] | undefined,\n sendPii: boolean,\n): string | undefined {\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. */\nexport function extractQueryParamsFromUrl(url: string): string | undefined {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/scopeData.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/scopeData.js new file mode 100644 index 0000000..77f1977 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/scopeData.js @@ -0,0 +1,192 @@ +import { getGlobalScope } from '../currentScopes.js'; +import { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext.js'; +import { merge } from './merge.js'; +import { spanToTraceContext, getRootSpan, spanToJSON } from './spanUtils.js'; + +/** + * Applies data from the scope to the event and runs all event processors on it. + */ +function applyScopeDataToEvent(event, data) { + const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data; + + // Apply general data + applyDataToEvent(event, data); + + // We want to set the trace context for normal events only if there isn't already + // a trace context on the event. There is a product feature in place where we link + // errors with transaction and it relies on that. + if (span) { + applySpanToEvent(event, span); + } + + applyFingerprintToEvent(event, fingerprint); + applyBreadcrumbsToEvent(event, breadcrumbs); + applySdkMetadataToEvent(event, sdkProcessingMetadata); +} + +/** Merge data of two scopes together. */ +function mergeScopeData(data, mergeData) { + const { + extra, + tags, + attributes, + user, + contexts, + level, + sdkProcessingMetadata, + breadcrumbs, + fingerprint, + eventProcessors, + attachments, + propagationContext, + transactionName, + span, + } = mergeData; + + mergeAndOverwriteScopeData(data, 'extra', extra); + mergeAndOverwriteScopeData(data, 'tags', tags); + mergeAndOverwriteScopeData(data, 'attributes', attributes); + mergeAndOverwriteScopeData(data, 'user', user); + mergeAndOverwriteScopeData(data, 'contexts', contexts); + + data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2); + + if (level) { + data.level = level; + } + + if (transactionName) { + data.transactionName = transactionName; + } + + if (span) { + data.span = span; + } + + if (breadcrumbs.length) { + data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs]; + } + + if (fingerprint.length) { + data.fingerprint = [...data.fingerprint, ...fingerprint]; + } + + if (eventProcessors.length) { + data.eventProcessors = [...data.eventProcessors, ...eventProcessors]; + } + + if (attachments.length) { + data.attachments = [...data.attachments, ...attachments]; + } + + data.propagationContext = { ...data.propagationContext, ...propagationContext }; +} + +/** + * Merges certain scope data. Undefined values will overwrite any existing values. + * Exported only for tests. + */ +function mergeAndOverwriteScopeData + +(data, prop, mergeVal) { + data[prop] = merge(data[prop], mergeVal, 1); +} + +/** + * Get the scope data for the current scope after merging with the + * global scope and isolation scope. + * + * @param currentScope - The current scope. + * @returns The scope data. + */ +function getCombinedScopeData(isolationScope, currentScope) { + const scopeData = getGlobalScope().getScopeData(); + isolationScope && mergeScopeData(scopeData, isolationScope.getScopeData()); + currentScope && mergeScopeData(scopeData, currentScope.getScopeData()); + return scopeData; +} + +function applyDataToEvent(event, data) { + const { extra, tags, user, contexts, level, transactionName } = data; + + if (Object.keys(extra).length) { + event.extra = { ...extra, ...event.extra }; + } + + if (Object.keys(tags).length) { + event.tags = { ...tags, ...event.tags }; + } + + if (Object.keys(user).length) { + event.user = { ...user, ...event.user }; + } + + if (Object.keys(contexts).length) { + event.contexts = { ...contexts, ...event.contexts }; + } + + if (level) { + event.level = level; + } + + // transaction events get their `transaction` from the root span name + if (transactionName && event.type !== 'transaction') { + event.transaction = transactionName; + } +} + +function applyBreadcrumbsToEvent(event, breadcrumbs) { + const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs]; + event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined; +} + +function applySdkMetadataToEvent(event, sdkProcessingMetadata) { + event.sdkProcessingMetadata = { + ...event.sdkProcessingMetadata, + ...sdkProcessingMetadata, + }; +} + +function applySpanToEvent(event, span) { + event.contexts = { + trace: spanToTraceContext(span), + ...event.contexts, + }; + + event.sdkProcessingMetadata = { + dynamicSamplingContext: getDynamicSamplingContextFromSpan(span), + ...event.sdkProcessingMetadata, + }; + + const rootSpan = getRootSpan(span); + const transactionName = spanToJSON(rootSpan).description; + if (transactionName && !event.transaction && event.type === 'transaction') { + event.transaction = transactionName; + } +} + +/** + * Applies fingerprint from the scope to the event if there's one, + * uses message if there's one instead or get rid of empty fingerprint + */ +function applyFingerprintToEvent(event, fingerprint) { + // Make sure it's an array first and we actually have something in place + event.fingerprint = event.fingerprint + ? Array.isArray(event.fingerprint) + ? event.fingerprint + : [event.fingerprint] + : []; + + // If we have something on the scope, then merge it with event + if (fingerprint) { + event.fingerprint = event.fingerprint.concat(fingerprint); + } + + // If we have no data at all, remove empty array default + if (!event.fingerprint.length) { + delete event.fingerprint; + } +} + +export { applyScopeDataToEvent, getCombinedScopeData, mergeAndOverwriteScopeData, mergeScopeData }; +//# sourceMappingURL=scopeData.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/scopeData.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/scopeData.js.map new file mode 100644 index 0000000..73b1a64 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/scopeData.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scopeData.js","sources":["../../../src/utils/scopeData.ts"],"sourcesContent":["import { getGlobalScope } from '../currentScopes';\nimport type { Scope, ScopeData } from '../scope';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport type { Breadcrumb } from '../types-hoist/breadcrumb';\nimport type { Event } from '../types-hoist/event';\nimport type { Span } from '../types-hoist/span';\nimport { merge } from './merge';\nimport { getRootSpan, spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\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. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\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 */\nexport function mergeAndOverwriteScopeData<\n Prop extends 'extra' | 'tags' | 'attributes' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n data[prop] = merge(data[prop], mergeVal, 1);\n}\n\n/** Exported only for tests */\nexport function mergeArray(\n event: Event,\n prop: Prop,\n mergeVal: ScopeData[Prop],\n): void {\n const prevVal = event[prop];\n // If we are not merging any new values,\n // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n if (!mergeVal.length && (!prevVal || prevVal.length)) {\n return;\n }\n\n const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n event[prop] = merged.length ? merged : undefined;\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 */\nexport function getCombinedScopeData(isolationScope: Scope | undefined, currentScope: Scope | undefined): ScopeData {\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: Event, data: ScopeData): void {\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: Event, breadcrumbs: Breadcrumb[]): void {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\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: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/sdkMetadata.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/sdkMetadata.js new file mode 100644 index 0000000..54e280b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/sdkMetadata.js @@ -0,0 +1,34 @@ +import { SDK_VERSION } from './version.js'; + +/** + * A builder for the SDK metadata in the options for the SDK initialization. + * + * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit. + * We don't extract it for bundle size reasons. + * @see https://github.com/getsentry/sentry-javascript/pull/7404 + * @see https://github.com/getsentry/sentry-javascript/pull/4196 + * + * If you make changes to this function consider updating the others as well. + * + * @param options SDK options object that gets mutated + * @param names list of package names + */ +function applySdkMetadata(options, name, names = [name], source = 'npm') { + const metadata = options._metadata || {}; + + if (!metadata.sdk) { + metadata.sdk = { + name: `sentry.javascript.${name}`, + packages: names.map(name => ({ + name: `${source}:@sentry/${name}`, + version: SDK_VERSION, + })), + version: SDK_VERSION, + }; + } + + options._metadata = metadata; +} + +export { applySdkMetadata }; +//# sourceMappingURL=sdkMetadata.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/sdkMetadata.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/sdkMetadata.js.map new file mode 100644 index 0000000..9d9f015 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/sdkMetadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sdkMetadata.js","sources":["../../../src/utils/sdkMetadata.ts"],"sourcesContent":["import type { CoreOptions } from '../types-hoist/options';\nimport { SDK_VERSION } from '../utils/version';\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 */\nexport function applySdkMetadata(options: CoreOptions, name: string, names = [name], source = 'npm'): void {\n const metadata = options._metadata || {};\n\n if (!metadata.sdk) {\n metadata.sdk = {\n name: `sentry.javascript.${name}`,\n packages: names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n };\n }\n\n options._metadata = metadata;\n}\n"],"names":[],"mappings":";;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,OAAO,EAAe,IAAI,EAAU,KAAA,GAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,KAAK,EAAQ;AAC3G,EAAE,MAAM,WAAW,OAAO,CAAC,SAAA,IAAa,EAAE;;AAE1C,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;AACrB,IAAI,QAAQ,CAAC,GAAA,GAAM;AACnB,MAAM,IAAI,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAA;AACA,MAAA,QAAA,EAAA,KAAA,CAAA,GAAA,CAAA,IAAA,KAAA;AACA,QAAA,IAAA,EAAA,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AACA,QAAA,OAAA,EAAA,WAAA;AACA,OAAA,CAAA,CAAA;AACA,MAAA,OAAA,EAAA,WAAA;AACA,KAAA;AACA,EAAA;;AAEA,EAAA,OAAA,CAAA,SAAA,GAAA,QAAA;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/severity.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/severity.js new file mode 100644 index 0000000..aecb158 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/severity.js @@ -0,0 +1,14 @@ +/** + * Converts a string-based level into a `SeverityLevel`, normalizing it along the way. + * + * @param level String representation of desired `SeverityLevel`. + * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level. + */ +function severityLevelFromString(level) { + return ( + level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log' + ) ; +} + +export { severityLevelFromString }; +//# sourceMappingURL=severity.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/severity.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/severity.js.map new file mode 100644 index 0000000..9fa58db --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/severity.js.map @@ -0,0 +1 @@ +{"version":3,"file":"severity.js","sources":["../../../src/utils/severity.ts"],"sourcesContent":["import type { SeverityLevel } from '../types-hoist/severity';\n\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 */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (\n level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log'\n ) as SeverityLevel;\n}\n"],"names":[],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,uBAAuB,CAAC,KAAK,EAAyC;AACtF,EAAE;AACF,IAAI,KAAA,KAAU,MAAA,GAAS,SAAA,GAAY,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAA,GAAI,KAAA,GAAQ;AACnH;AACA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/should-ignore-span.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/should-ignore-span.js new file mode 100644 index 0000000..78a566f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/should-ignore-span.js @@ -0,0 +1,75 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug } from './debug-logger.js'; +import { isMatchingPattern } from './string.js'; + +function logIgnoredSpan(droppedSpan) { + debug.log(`Ignoring span ${droppedSpan.op} - ${droppedSpan.description} because it matches \`ignoreSpans\`.`); +} + +/** + * Check if a span should be ignored based on the ignoreSpans configuration. + */ +function shouldIgnoreSpan( + span, + ignoreSpans, +) { + if (!ignoreSpans?.length || !span.description) { + return false; + } + + for (const pattern of ignoreSpans) { + if (isStringOrRegExp(pattern)) { + if (isMatchingPattern(span.description, pattern)) { + DEBUG_BUILD && logIgnoredSpan(span); + return true; + } + continue; + } + + if (!pattern.name && !pattern.op) { + continue; + } + + const nameMatches = pattern.name ? isMatchingPattern(span.description, pattern.name) : true; + const opMatches = pattern.op ? span.op && isMatchingPattern(span.op, pattern.op) : true; + + // This check here is only correct because we can guarantee that we ran `isMatchingPattern` + // for at least one of `nameMatches` and `opMatches`. So in contrary to how this looks, + // not both op and name actually have to match. This is the most efficient way to check + // for all combinations of name and op patterns. + if (nameMatches && opMatches) { + DEBUG_BUILD && logIgnoredSpan(span); + return true; + } + } + + return false; +} + +/** + * 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. + * This mutates the spans array in place! + */ +function reparentChildSpans(spans, dropSpan) { + const droppedSpanParentId = dropSpan.parent_span_id; + const droppedSpanId = dropSpan.span_id; + + // This should generally not happen, as we do not apply this on root spans + // but to be safe, we just bail in this case + if (!droppedSpanParentId) { + return; + } + + for (const span of spans) { + if (span.parent_span_id === droppedSpanId) { + span.parent_span_id = droppedSpanParentId; + } + } +} + +function isStringOrRegExp(value) { + return typeof value === 'string' || value instanceof RegExp; +} + +export { reparentChildSpans, shouldIgnoreSpan }; +//# sourceMappingURL=should-ignore-span.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/should-ignore-span.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/should-ignore-span.js.map new file mode 100644 index 0000000..85bf693 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/should-ignore-span.js.map @@ -0,0 +1 @@ +{"version":3,"file":"should-ignore-span.js","sources":["../../../src/utils/should-ignore-span.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { SpanJSON } from '../types-hoist/span';\nimport { debug } from './debug-logger';\nimport { isMatchingPattern } from './string';\n\nfunction logIgnoredSpan(droppedSpan: Pick): void {\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 */\nexport function shouldIgnoreSpan(\n span: Pick,\n ignoreSpans: Required['ignoreSpans'],\n): boolean {\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 */\nexport function reparentChildSpans(spans: SpanJSON[], dropSpan: SpanJSON): void {\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: unknown): value is string | RegExp {\n return typeof value === 'string' || value instanceof RegExp;\n}\n"],"names":[],"mappings":";;;;AAMA,SAAS,cAAc,CAAC,WAAW,EAA8C;AACjF,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC;AAC/G;;AAEA;AACA;AACA;AACO,SAAS,gBAAgB;AAChC,EAAE,IAAI;AACN,EAAE,WAAW;AACb,EAAW;AACX,EAAE,IAAI,CAAC,WAAW,EAAE,MAAA,IAAU,CAAC,IAAI,CAAC,WAAW,EAAE;AACjD,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,KAAK,MAAM,OAAA,IAAW,WAAW,EAAE;AACrC,IAAI,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE;AACnC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AACxD,QAAQ,WAAA,IAAe,cAAc,CAAC,IAAI,CAAC;AAC3C,QAAQ,OAAO,IAAI;AACnB,MAAM;AACN,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAA,IAAQ,CAAC,OAAO,CAAC,EAAE,EAAE;AACtC,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,WAAA,GAAc,OAAO,CAAC,IAAA,GAAO,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAA,GAAI,IAAI;AAC/F,IAAI,MAAM,YAAY,OAAO,CAAC,EAAA,GAAK,IAAI,CAAC,EAAA,IAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAA,GAAI,IAAI;;AAE3F;AACA;AACA;AACA;AACA,IAAI,IAAI,WAAA,IAAe,SAAS,EAAE;AAClC,MAAM,WAAA,IAAe,cAAc,CAAC,IAAI,CAAC;AACzC,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,KAAK,EAAc,QAAQ,EAAkB;AAChF,EAAE,MAAM,mBAAA,GAAsB,QAAQ,CAAC,cAAc;AACrD,EAAE,MAAM,aAAA,GAAgB,QAAQ,CAAC,OAAO;;AAExC;AACA;AACA,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC5B,IAAI;AACJ,EAAE;;AAEF,EAAE,KAAK,MAAM,IAAA,IAAQ,KAAK,EAAE;AAC5B,IAAI,IAAI,IAAI,CAAC,cAAA,KAAmB,aAAa,EAAE;AAC/C,MAAM,IAAI,CAAC,cAAA,GAAiB,mBAAmB;AAC/C,IAAI;AACJ,EAAE;AACF;;AAEA,SAAS,gBAAgB,CAAC,KAAK,EAAqC;AACpE,EAAE,OAAO,OAAO,KAAA,KAAU,YAAY,KAAA,YAAiB,MAAM;AAC7D;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanOnScope.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanOnScope.js new file mode 100644 index 0000000..6e8622c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanOnScope.js @@ -0,0 +1,27 @@ +import { addNonEnumerableProperty } from './object.js'; + +const SCOPE_SPAN_FIELD = '_sentrySpan'; + +/** + * Set the active span for a given scope. + * NOTE: This should NOT be used directly, but is only used internally by the trace methods. + */ +function _setSpanForScope(scope, span) { + if (span) { + addNonEnumerableProperty(scope , SCOPE_SPAN_FIELD, span); + } else { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete (scope )[SCOPE_SPAN_FIELD]; + } +} + +/** + * Get the active span for a given scope. + * NOTE: This should NOT be used directly, but is only used internally by the trace methods. + */ +function _getSpanForScope(scope) { + return scope[SCOPE_SPAN_FIELD]; +} + +export { _getSpanForScope, _setSpanForScope }; +//# sourceMappingURL=spanOnScope.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanOnScope.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanOnScope.js.map new file mode 100644 index 0000000..c66dc3f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanOnScope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spanOnScope.js","sources":["../../../src/utils/spanOnScope.ts"],"sourcesContent":["import type { Scope } from '../scope';\nimport type { Span } from '../types-hoist/span';\nimport { addNonEnumerableProperty } from '../utils/object';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\ntype ScopeWithMaybeSpan = Scope & {\n [SCOPE_SPAN_FIELD]?: Span;\n};\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 */\nexport function _setSpanForScope(scope: Scope, span: Span | undefined): void {\n if (span) {\n addNonEnumerableProperty(scope as ScopeWithMaybeSpan, SCOPE_SPAN_FIELD, span);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (scope as ScopeWithMaybeSpan)[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 */\nexport function _getSpanForScope(scope: ScopeWithMaybeSpan): Span | undefined {\n return scope[SCOPE_SPAN_FIELD];\n}\n"],"names":[],"mappings":";;AAIA,MAAM,gBAAA,GAAmB,aAAa;;AAMtC;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,KAAK,EAAS,IAAI,EAA0B;AAC7E,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,wBAAwB,CAAC,KAAA,GAA6B,gBAAgB,EAAE,IAAI,CAAC;AACjF,EAAE,OAAO;AACT;AACA,IAAI,OAAO,CAAC,KAAA,GAA6B,gBAAgB,CAAC;AAC1D,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,KAAK,EAAwC;AAC9E,EAAE,OAAO,KAAK,CAAC,gBAAgB,CAAC;AAChC;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanUtils.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanUtils.js new file mode 100644 index 0000000..f7ba96b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanUtils.js @@ -0,0 +1,334 @@ +import { getAsyncContextStrategy } from '../asyncContext/index.js'; +import { getMainCarrier } from '../carrier.js'; +import { getCurrentScope } from '../currentScopes.js'; +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js'; +import { SPAN_STATUS_UNSET, SPAN_STATUS_OK } from '../tracing/spanstatus.js'; +import { getCapturedScopesOnSpan } from '../tracing/utils.js'; +import { addNonEnumerableProperty } from './object.js'; +import { generateSpanId } from './propagationContext.js'; +import { timestampInSeconds } from './time.js'; +import { generateSentryTraceHeader, generateTraceparentHeader } from './tracing.js'; +import { consoleSandbox } from './debug-logger.js'; +import { _getSpanForScope } from './spanOnScope.js'; + +// These are aligned with OpenTelemetry trace flags +const TRACE_FLAG_NONE = 0x0; +const TRACE_FLAG_SAMPLED = 0x1; + +let hasShownSpanDropWarning = false; + +/** + * Convert a span to a trace context, which can be sent as the `trace` context in an event. + * By default, this will only include trace_id, span_id & parent_span_id. + * If `includeAllData` is true, it will also include data, op, status & origin. + */ +function spanToTransactionTraceContext(span) { + const { spanId: span_id, traceId: trace_id } = span.spanContext(); + const { data, op, parent_span_id, status, origin, links } = spanToJSON(span); + + return { + parent_span_id, + span_id, + trace_id, + data, + op, + status, + origin, + links, + }; +} + +/** + * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event. + */ +function spanToTraceContext(span) { + const { spanId, traceId: trace_id, isRemote } = span.spanContext(); + + // If the span is remote, we use a random/virtual span as span_id to the trace context, + // and the remote span as parent_span_id + const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id; + const scope = getCapturedScopesOnSpan(span).scope; + + const span_id = isRemote ? scope?.getPropagationContext().propagationSpanId || generateSpanId() : spanId; + + return { + parent_span_id, + span_id, + trace_id, + }; +} + +/** + * Convert a Span to a Sentry trace header. + */ +function spanToTraceHeader(span) { + const { traceId, spanId } = span.spanContext(); + const sampled = spanIsSampled(span); + return generateSentryTraceHeader(traceId, spanId, sampled); +} + +/** + * Convert a Span to a W3C traceparent header. + */ +function spanToTraceparentHeader(span) { + const { traceId, spanId } = span.spanContext(); + const sampled = spanIsSampled(span); + return generateTraceparentHeader(traceId, spanId, sampled); +} + +/** + * Converts the span links array to a flattened version to be sent within an envelope. + * + * If the links array is empty, it returns `undefined` so the empty value can be dropped before it's sent. + */ +function convertSpanLinksForEnvelope(links) { + if (links && links.length > 0) { + return links.map(({ context: { spanId, traceId, traceFlags, ...restContext }, attributes }) => ({ + span_id: spanId, + trace_id: traceId, + sampled: traceFlags === TRACE_FLAG_SAMPLED, + attributes, + ...restContext, + })); + } else { + return undefined; + } +} + +/** + * Convert a span time input into a timestamp in seconds. + */ +function spanTimeInputToSeconds(input) { + if (typeof input === 'number') { + return ensureTimestampInSeconds(input); + } + + if (Array.isArray(input)) { + // See {@link HrTime} for the array-based time format + return input[0] + input[1] / 1e9; + } + + if (input instanceof Date) { + return ensureTimestampInSeconds(input.getTime()); + } + + return timestampInSeconds(); +} + +/** + * Converts a timestamp to second, if it was in milliseconds, or keeps it as second. + */ +function ensureTimestampInSeconds(timestamp) { + const isMs = timestamp > 9999999999; + return isMs ? timestamp / 1000 : timestamp; +} + +/** + * Convert a span to a JSON representation. + */ +// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json). +// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility. +// And `spanToJSON` needs the Span class from `span.ts` to check here. +function spanToJSON(span) { + if (spanIsSentrySpan(span)) { + return span.getSpanJSON(); + } + + const { spanId: span_id, traceId: trace_id } = span.spanContext(); + + // Handle a span from @opentelemetry/sdk-base-trace's `Span` class + if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) { + const { attributes, startTime, name, endTime, status, links } = span; + + // In preparation for the next major of OpenTelemetry, we want to support + // looking up the parent span id according to the new API + // In OTel v1, the parent span id is accessed as `parentSpanId` + // In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext` + const parentSpanId = + 'parentSpanId' in span + ? span.parentSpanId + : 'parentSpanContext' in span + ? (span.parentSpanContext )?.spanId + : undefined; + + return { + span_id, + trace_id, + data: attributes, + description: name, + parent_span_id: parentSpanId, + start_timestamp: spanTimeInputToSeconds(startTime), + // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time + timestamp: spanTimeInputToSeconds(endTime) || undefined, + status: getStatusMessage(status), + op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP], + origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] , + links: convertSpanLinksForEnvelope(links), + }; + } + + // Finally, at least we have `spanContext()`.... + // This should not actually happen in reality, but we need to handle it for type safety. + return { + span_id, + trace_id, + start_timestamp: 0, + data: {}, + }; +} + +function spanIsOpenTelemetrySdkTraceBaseSpan(span) { + const castSpan = span ; + return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status; +} + +/** Exported only for tests. */ + +/** + * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof. + * :( So instead we approximate this by checking if it has the `getSpanJSON` method. + */ +function spanIsSentrySpan(span) { + return typeof (span ).getSpanJSON === 'function'; +} + +/** + * Returns true if a span is sampled. + * In most cases, you should just use `span.isRecording()` instead. + * However, this has a slightly different semantic, as it also returns false if the span is finished. + * So in the case where this distinction is important, use this method. + */ +function spanIsSampled(span) { + // We align our trace flags with the ones OpenTelemetry use + // So we also check for sampled the same way they do. + const { traceFlags } = span.spanContext(); + return traceFlags === TRACE_FLAG_SAMPLED; +} + +/** Get the status message to use for a JSON representation of a span. */ +function getStatusMessage(status) { + if (!status || status.code === SPAN_STATUS_UNSET) { + return undefined; + } + + if (status.code === SPAN_STATUS_OK) { + return 'ok'; + } + + return status.message || 'internal_error'; +} + +const CHILD_SPANS_FIELD = '_sentryChildSpans'; +const ROOT_SPAN_FIELD = '_sentryRootSpan'; + +/** + * Adds an opaque child span reference to a span. + */ +function addChildSpanToSpan(span, childSpan) { + // We store the root span reference on the child span + // We need this for `getRootSpan()` to work + const rootSpan = span[ROOT_SPAN_FIELD] || span; + addNonEnumerableProperty(childSpan , ROOT_SPAN_FIELD, rootSpan); + + // We store a list of child spans on the parent span + // We need this for `getSpanDescendants()` to work + if (span[CHILD_SPANS_FIELD]) { + span[CHILD_SPANS_FIELD].add(childSpan); + } else { + addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan])); + } +} + +/** This is only used internally by Idle Spans. */ +function removeChildSpanFromSpan(span, childSpan) { + if (span[CHILD_SPANS_FIELD]) { + span[CHILD_SPANS_FIELD].delete(childSpan); + } +} + +/** + * Returns an array of the given span and all of its descendants. + */ +function getSpanDescendants(span) { + const resultSet = new Set(); + + function addSpanChildren(span) { + // This exit condition is required to not infinitely loop in case of a circular dependency. + if (resultSet.has(span)) { + return; + // We want to ignore unsampled spans (e.g. non recording spans) + } else if (spanIsSampled(span)) { + resultSet.add(span); + const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : []; + for (const childSpan of childSpans) { + addSpanChildren(childSpan); + } + } + } + + addSpanChildren(span); + + return Array.from(resultSet); +} + +/** + * Returns the root span of a given span. + */ +function getRootSpan(span) { + return span[ROOT_SPAN_FIELD] || span; +} + +/** + * Returns the currently active span. + */ +function getActiveSpan() { + const carrier = getMainCarrier(); + const acs = getAsyncContextStrategy(carrier); + if (acs.getActiveSpan) { + return acs.getActiveSpan(); + } + + return _getSpanForScope(getCurrentScope()); +} + +/** + * Logs a warning once if `beforeSendSpan` is used to drop spans. + */ +function showSpanDropWarning() { + if (!hasShownSpanDropWarning) { + consoleSandbox(() => { + // eslint-disable-next-line no-console + console.warn( + '[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.', + ); + }); + hasShownSpanDropWarning = true; + } +} + +/** + * Updates the name of the given span and ensures that the span name is not + * overwritten by the Sentry SDK. + * + * Use this function instead of `span.updateName()` if you want to make sure that + * your name is kept. For some spans, for example root `http.server` spans the + * Sentry SDK would otherwise overwrite the span name with a high-quality name + * it infers when the span ends. + * + * Use this function in server code or when your span is started on the server + * and on the client (browser). If you only update a span name on the client, + * you can also use `span.updateName()` the SDK does not overwrite the name. + * + * @param span - The span to update the name of. + * @param name - The name to set on the span. + */ +function updateSpanName(span, name) { + span.updateName(name); + span.setAttributes({ + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom', + [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name, + }); +} + +export { TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, addChildSpanToSpan, convertSpanLinksForEnvelope, getActiveSpan, getRootSpan, getSpanDescendants, getStatusMessage, removeChildSpanFromSpan, showSpanDropWarning, spanIsSampled, spanTimeInputToSeconds, spanToJSON, spanToTraceContext, spanToTraceHeader, spanToTraceparentHeader, spanToTransactionTraceContext, updateSpanName }; +//# sourceMappingURL=spanUtils.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanUtils.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanUtils.js.map new file mode 100644 index 0000000..2e8e5fd --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/spanUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spanUtils.js","sources":["../../../src/utils/spanUtils.ts"],"sourcesContent":["import { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport { getCurrentScope } from '../currentScopes';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { SentrySpan } from '../tracing/sentrySpan';\nimport { SPAN_STATUS_OK, SPAN_STATUS_UNSET } from '../tracing/spanstatus';\nimport { getCapturedScopesOnSpan } from '../tracing/utils';\nimport type { TraceContext } from '../types-hoist/context';\nimport type { SpanLink, SpanLinkJSON } from '../types-hoist/link';\nimport type { Span, SpanAttributes, SpanJSON, SpanOrigin, SpanTimeInput } from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { generateSpanId } from '../utils/propagationContext';\nimport { timestampInSeconds } from '../utils/time';\nimport { generateSentryTraceHeader, generateTraceparentHeader } from '../utils/tracing';\nimport { consoleSandbox } from './debug-logger';\nimport { _getSpanForScope } from './spanOnScope';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const 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 */\nexport function spanToTransactionTraceContext(span: Span): TraceContext {\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 */\nexport function spanToTraceContext(span: Span): TraceContext {\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 */\nexport function spanToTraceHeader(span: Span): string {\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 */\nexport function spanToTraceparentHeader(span: Span): string {\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 */\nexport function convertSpanLinksForEnvelope(links?: SpanLink[]): SpanLinkJSON[] | undefined {\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 */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\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: number): number {\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.\nexport function spanToJSON(span: Span): SpanJSON {\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 as { spanId?: string } | undefined)?.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] as SpanOrigin | undefined,\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: Span): span is OpenTelemetrySdkTraceBaseSpan {\n const castSpan = span as Partial;\n return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\nexport interface OpenTelemetrySdkTraceBaseSpan extends Span {\n attributes: SpanAttributes;\n startTime: SpanTimeInput;\n name: string;\n status: SpanStatus;\n endTime: SpanTimeInput;\n parentSpanId?: string;\n links?: SpanLink[];\n}\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: Span): span is SentrySpan {\n return typeof (span as SentrySpan).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 */\nexport function spanIsSampled(span: Span): boolean {\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. */\nexport function getStatusMessage(status: SpanStatus | undefined): string | undefined {\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\ntype SpanWithPotentialChildren = Span & {\n [CHILD_SPANS_FIELD]?: Set;\n [ROOT_SPAN_FIELD]?: Span;\n};\n\n/**\n * Adds an opaque child span reference to a span.\n */\nexport function addChildSpanToSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\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 as SpanWithPotentialChildren, 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. */\nexport function removeChildSpanFromSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\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 */\nexport function getSpanDescendants(span: SpanWithPotentialChildren): Span[] {\n const resultSet = new Set();\n\n function addSpanChildren(span: SpanWithPotentialChildren): void {\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 */\nexport function getRootSpan(span: SpanWithPotentialChildren): Span {\n return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\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 */\nexport function showSpanDropWarning(): void {\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 */\nexport function updateSpanName(span: Span, name: string): void {\n span.updateName(name);\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name,\n });\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/stacktrace.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/stacktrace.js new file mode 100644 index 0000000..efcae25 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/stacktrace.js @@ -0,0 +1,189 @@ +const STACKTRACE_FRAME_LIMIT = 50; +const UNKNOWN_FUNCTION = '?'; +// Used to sanitize webpack (error: *) wrapped stack errors +const WEBPACK_ERROR_REGEXP = /\(error: (.*)\)/; +const STRIP_FRAME_REGEXP = /captureMessage|captureException/; + +/** + * Creates a stack parser with the supplied line parsers + * + * StackFrames are returned in the correct order for Sentry Exception + * frames and with Sentry SDK internal frames removed from the top and bottom + * + */ +function createStackParser(...parsers) { + const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]); + + return (stack, skipFirstLines = 0, framesToPop = 0) => { + const frames = []; + const lines = stack.split('\n'); + + for (let i = skipFirstLines; i < lines.length; i++) { + let line = lines[i] ; + // Truncate lines over 1kb because many of the regular expressions use + // backtracking which results in run time that increases exponentially + // with input size. Huge strings can result in hangs/Denial of Service: + // https://github.com/getsentry/sentry-javascript/issues/2286 + if (line.length > 1024) { + line = line.slice(0, 1024); + } + + // https://github.com/getsentry/sentry-javascript/issues/5459 + // Remove webpack (error: *) wrappers + const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line; + + // https://github.com/getsentry/sentry-javascript/issues/7813 + // Skip Error: lines + if (cleanedLine.match(/\S*Error: /)) { + continue; + } + + for (const parser of sortedParsers) { + const frame = parser(cleanedLine); + + if (frame) { + frames.push(frame); + break; + } + } + + if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) { + break; + } + } + + return stripSentryFramesAndReverse(frames.slice(framesToPop)); + }; +} + +/** + * Gets a stack parser implementation from Options.stackParser + * @see Options + * + * If options contains an array of line parsers, it is converted into a parser + */ +function stackParserFromStackParserOptions(stackParser) { + if (Array.isArray(stackParser)) { + return createStackParser(...stackParser); + } + return stackParser; +} + +/** + * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames. + * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the + * function that caused the crash is the last frame in the array. + * @hidden + */ +function stripSentryFramesAndReverse(stack) { + if (!stack.length) { + return []; + } + + const localStack = Array.from(stack); + + // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call) + if (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) { + localStack.pop(); + } + + // Reversing in the middle of the procedure allows us to just pop the values off the stack + localStack.reverse(); + + // 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) + if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) { + localStack.pop(); + + // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')` + // is produced within the scope itself, making it: + // + // Sentry.captureException() + // scope.captureException() + // + // instead of just the top `Sentry` call itself. + // This forces us to possibly strip an additional frame in the exact same was as above. + if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) { + localStack.pop(); + } + } + + return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({ + ...frame, + filename: frame.filename || getLastStackFrame(localStack).filename, + function: frame.function || UNKNOWN_FUNCTION, + })); +} + +function getLastStackFrame(arr) { + return arr[arr.length - 1] || {}; +} + +const defaultFunctionName = ''; + +/** + * Safely extract function name from itself + */ +function getFunctionName(fn) { + try { + if (!fn || typeof fn !== 'function') { + return defaultFunctionName; + } + return fn.name || defaultFunctionName; + } catch { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + return defaultFunctionName; + } +} + +/** + * Get's stack frames from an event without needing to check for undefined properties. + */ +function getFramesFromEvent(event) { + const exception = event.exception; + + if (exception) { + const frames = []; + try { + // @ts-expect-error Object could be undefined + exception.values.forEach(value => { + // @ts-expect-error Value could be undefined + if (value.stacktrace.frames) { + // @ts-expect-error Value could be undefined + frames.push(...value.stacktrace.frames); + } + }); + return frames; + } catch { + return undefined; + } + } + return undefined; +} + +/** + * Get the internal name of an internal Vue value, to represent it in a stacktrace. + * + * @param value The value to get the internal name of. + */ +function getVueInternalName(value) { + // Check if it's a VNode (has __v_isVNode) or a component instance (has _isVue/__isVue) + const isVNode = '__v_isVNode' in value && value.__v_isVNode; + + return isVNode ? '[VueVNode]' : '[VueViewModel]'; +} + +/** + * Normalizes stack line paths by removing file:// prefix and leading slashes for Windows paths + */ +function normalizeStackTracePath(path) { + let filename = path?.startsWith('file://') ? path.slice(7) : path; + // If it's a Windows path, trim the leading slash so that `/C:/foo` becomes `C:/foo` + if (filename?.match(/\/[A-Z]:/)) { + filename = filename.slice(1); + } + return filename; +} + +export { UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, getVueInternalName, normalizeStackTracePath, stackParserFromStackParserOptions, stripSentryFramesAndReverse }; +//# sourceMappingURL=stacktrace.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/stacktrace.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/stacktrace.js.map new file mode 100644 index 0000000..a43b8fe --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/stacktrace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stacktrace.js","sources":["../../../src/utils/stacktrace.ts"],"sourcesContent":["import type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { StackLineParser, StackParser } from '../types-hoist/stacktrace';\nimport type { VNode, VueViewModel } from '../types-hoist/vue';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\nexport const 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 */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirstLines: number = 0, framesToPop: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirstLines; i < lines.length; i++) {\n let line = lines[i] as string;\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 */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): 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 */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray): StackFrame[] {\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: StackFrame[]): StackFrame {\n return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\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 */\nexport function getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n const frames: StackFrame[] = [];\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 */\nexport function getVueInternalName(value: VueViewModel | VNode): string {\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 */\nexport function normalizeStackTracePath(path: string | undefined): string | undefined {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/string.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/string.js new file mode 100644 index 0000000..2f80e24 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/string.js @@ -0,0 +1,141 @@ +import { isString, isRegExp, isVueViewModel } from './is.js'; +import { getVueInternalName } from './stacktrace.js'; + +/** + * Truncates given string to the maximum characters count + * + * @param str An object that contains serializable values + * @param max Maximum number of characters in truncated string (0 = unlimited) + * @returns string Encoded + */ +function truncate(str, max = 0) { + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : `${str.slice(0, max)}...`; +} + +/** + * This is basically just `trim_line` from + * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67 + * + * @param str An object that contains serializable values + * @param max Maximum number of characters in truncated string + * @returns string Encoded + */ +function snipLine(line, colno) { + let newLine = line; + const lineLength = newLine.length; + if (lineLength <= 150) { + return newLine; + } + if (colno > lineLength) { + // eslint-disable-next-line no-param-reassign + colno = lineLength; + } + + let start = Math.max(colno - 60, 0); + if (start < 5) { + start = 0; + } + + let end = Math.min(start + 140, lineLength); + if (end > lineLength - 5) { + end = lineLength; + } + if (end === lineLength) { + start = Math.max(end - 140, 0); + } + + newLine = newLine.slice(start, end); + if (start > 0) { + newLine = `'{snip} ${newLine}`; + } + if (end < lineLength) { + newLine += ' {snip}'; + } + + return newLine; +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns Joined values + */ +function safeJoin(input, delimiter) { + if (!Array.isArray(input)) { + return ''; + } + + const output = []; + // eslint-disable-next-line @typescript-eslint/prefer-for-of + for (let i = 0; i < input.length; i++) { + const value = input[i]; + try { + // This is a hack to fix a Vue3-specific bug that causes an infinite loop of + // console warnings. This happens when a Vue template is rendered with + // an undeclared variable, which we try to stringify, ultimately causing + // Vue to issue another warning which repeats indefinitely. + // see: https://github.com/getsentry/sentry-javascript/pull/8981 + if (isVueViewModel(value)) { + output.push(getVueInternalName(value)); + } else { + output.push(String(value)); + } + } catch { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +/** + * Checks if the given value matches a regex or string + * + * @param value The string to test + * @param pattern Either a regex or a string against which `value` will be matched + * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match + * `pattern` if it contains `pattern`. Only applies to string-type patterns. + */ +function isMatchingPattern( + value, + pattern, + requireExactStringMatch = false, +) { + if (!isString(value)) { + return false; + } + + if (isRegExp(pattern)) { + return pattern.test(value); + } + if (isString(pattern)) { + return requireExactStringMatch ? value === pattern : value.includes(pattern); + } + + return false; +} + +/** + * Test the given string against an array of strings and regexes. By default, string matching is done on a + * substring-inclusion basis rather than a strict equality basis + * + * @param testString The string to test + * @param patterns The patterns against which to test the string + * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to + * count. If false, `testString` will match a string pattern if it contains that pattern. + * @returns + */ +function stringMatchesSomePattern( + testString, + patterns = [], + requireExactStringMatch = false, +) { + return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch)); +} + +export { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate }; +//# sourceMappingURL=string.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/string.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/string.js.map new file mode 100644 index 0000000..d75504c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/string.js.map @@ -0,0 +1 @@ +{"version":3,"file":"string.js","sources":["../../../src/utils/string.ts"],"sourcesContent":["import { isRegExp, isString, isVueViewModel } from './is';\nimport { getVueInternalName } from './stacktrace';\n\nexport { escapeStringForRegex } from '../vendor/escapeStringForRegex';\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 */\nexport function truncate(str: string, max: number = 0): string {\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 */\nexport function snipLine(line: string, colno: number): string {\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 */\nexport function safeJoin(input: unknown[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/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 */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\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 */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/supports.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/supports.js new file mode 100644 index 0000000..fe94bad --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/supports.js @@ -0,0 +1,180 @@ +import { DEBUG_BUILD } from '../debug-build.js'; +import { debug } from './debug-logger.js'; +import { GLOBAL_OBJ } from './worldwide.js'; + +const WINDOW = GLOBAL_OBJ ; + +/** + * Tells whether current environment supports ErrorEvent objects + * {@link supportsErrorEvent}. + * + * @returns Answer to the given question. + */ +function supportsErrorEvent() { + try { + new ErrorEvent(''); + return true; + } catch { + return false; + } +} + +/** + * Tells whether current environment supports DOMError objects + * {@link supportsDOMError}. + * + * @returns Answer to the given question. + */ +function supportsDOMError() { + try { + // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError': + // 1 argument required, but only 0 present. + // @ts-expect-error It really needs 1 argument, not 0. + new DOMError(''); + return true; + } catch { + return false; + } +} + +/** + * Tells whether current environment supports DOMException objects + * {@link supportsDOMException}. + * + * @returns Answer to the given question. + */ +function supportsDOMException() { + try { + new DOMException(''); + return true; + } catch { + return false; + } +} + +/** + * Tells whether current environment supports History API + * {@link supportsHistory}. + * + * @returns Answer to the given question. + */ +function supportsHistory() { + return 'history' in WINDOW && !!WINDOW.history; +} + +/** + * Tells whether current environment supports Fetch API + * {@link supportsFetch}. + * + * @returns Answer to the given question. + * @deprecated This is no longer used and will be removed in a future major version. + */ +const supportsFetch = _isFetchSupported; + +function _isFetchSupported() { + if (!('fetch' in WINDOW)) { + return false; + } + + try { + new Headers(); + // Deno requires a valid URL so '' cannot be used as an argument + new Request('data:,'); + new Response(); + return true; + } catch { + return false; + } +} + +/** + * isNative checks if the given function is a native implementation + */ +// eslint-disable-next-line @typescript-eslint/ban-types +function isNativeFunction(func) { + return func && /^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(func.toString()); +} + +/** + * Tells whether current environment supports Fetch API natively + * {@link supportsNativeFetch}. + * + * @returns true if `window.fetch` is natively implemented, false otherwise + */ +function supportsNativeFetch() { + if (typeof EdgeRuntime === 'string') { + return true; + } + + if (!_isFetchSupported()) { + return false; + } + + // Fast path to avoid DOM I/O + // eslint-disable-next-line @typescript-eslint/unbound-method + if (isNativeFunction(WINDOW.fetch)) { + return true; + } + + // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension) + // so create a "pure" iframe to see if that has native fetch + let result = false; + const doc = WINDOW.document; + // eslint-disable-next-line deprecation/deprecation + if (doc && typeof (doc.createElement ) === 'function') { + try { + const sandbox = doc.createElement('iframe'); + sandbox.hidden = true; + doc.head.appendChild(sandbox); + if (sandbox.contentWindow?.fetch) { + // eslint-disable-next-line @typescript-eslint/unbound-method + result = isNativeFunction(sandbox.contentWindow.fetch); + } + doc.head.removeChild(sandbox); + } catch (err) { + DEBUG_BUILD && debug.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err); + } + } + + return result; +} + +/** + * Tells whether current environment supports ReportingObserver API + * {@link supportsReportingObserver}. + * + * @returns Answer to the given question. + */ +function supportsReportingObserver() { + return 'ReportingObserver' in WINDOW; +} + +/** + * Tells whether current environment supports Referrer Policy API + * {@link supportsReferrerPolicy}. + * + * @returns Answer to the given question. + * @deprecated This is no longer used and will be removed in a future major version. + */ +function supportsReferrerPolicy() { + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default' + // (see https://caniuse.com/#feat=referrer-policy), + // it doesn't. And it throws an exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + + if (!_isFetchSupported()) { + return false; + } + + try { + new Request('_', { + referrerPolicy: 'origin' , + }); + return true; + } catch { + return false; + } +} + +export { isNativeFunction, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsHistory, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver }; +//# sourceMappingURL=supports.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/supports.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/supports.js.map new file mode 100644 index 0000000..944810e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/supports.js.map @@ -0,0 +1 @@ +{"version":3,"file":"supports.js","sources":["../../../src/utils/supports.ts"],"sourcesContent":["import { DEBUG_BUILD } from '../debug-build';\nimport { debug } from './debug-logger';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\ndeclare const EdgeRuntime: string | undefined;\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-expect-error It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n return 'history' in WINDOW && !!WINDOW.history;\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nexport const supportsFetch = _isFetchSupported;\n\nfunction _isFetchSupported(): boolean {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n // Deno requires a valid URL so '' cannot be used as an argument\n new Request('data:,');\n new Response();\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * isNative checks if the given function is a native implementation\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFunction(func: Function): boolean {\n return func && /^function\\s+\\w+\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (typeof EdgeRuntime === 'string') {\n return true;\n }\n\n if (!_isFetchSupported()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFunction(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow?.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFunction(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n DEBUG_BUILD && debug.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!_isFetchSupported()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch {\n return false;\n }\n}\n"],"names":[],"mappings":";;;;AAIA,MAAM,MAAA,GAAS,UAAA;;AAIf;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,GAAY;AAC9C,EAAE,IAAI;AACN,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC;AACtB,IAAI,OAAO,IAAI;AACf,EAAE,EAAE,MAAM;AACV,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,GAAY;AAC5C,EAAE,IAAI;AACN;AACA;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;AACpB,IAAI,OAAO,IAAI;AACf,EAAE,EAAE,MAAM;AACV,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,GAAY;AAChD,EAAE,IAAI;AACN,IAAI,IAAI,YAAY,CAAC,EAAE,CAAC;AACxB,IAAI,OAAO,IAAI;AACf,EAAE,EAAE,MAAM;AACV,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,GAAY;AAC3C,EAAE,OAAO,aAAa,MAAA,IAAU,CAAC,CAAC,MAAM,CAAC,OAAO;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,aAAA,GAAgB;;AAE7B,SAAS,iBAAiB,GAAY;AACtC,EAAE,IAAI,EAAE,WAAW,MAAM,CAAC,EAAE;AAC5B,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,IAAI;AACN,IAAI,IAAI,OAAO,EAAE;AACjB;AACA,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;AACzB,IAAI,IAAI,QAAQ,EAAE;AAClB,IAAI,OAAO,IAAI;AACf,EAAE,EAAE,MAAM;AACV,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,IAAI,EAAqB;AAC1D,EAAE,OAAO,IAAA,IAAQ,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,GAAY;AAC/C,EAAE,IAAI,OAAO,WAAA,KAAgB,QAAQ,EAAE;AACvC,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF,EAAE,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF;AACA;AACA,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACtC,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF;AACA;AACA,EAAE,IAAI,MAAA,GAAS,KAAK;AACpB,EAAE,MAAM,GAAA,GAAM,MAAM,CAAC,QAAQ;AAC7B;AACA,EAAE,IAAI,GAAA,IAAO,QAAQ,GAAG,CAAC,aAAA,EAAc,KAAgB,UAAU,EAAE;AACnE,IAAI,IAAI;AACR,MAAM,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC;AACjD,MAAM,OAAO,CAAC,MAAA,GAAS,IAAI;AAC3B,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACnC,MAAM,IAAI,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE;AACxC;AACA,QAAQ,MAAA,GAAS,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9D,MAAM;AACN,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACnC,IAAI,CAAA,CAAE,OAAO,GAAG,EAAE;AAClB,MAAM,WAAA,IAAe,KAAK,CAAC,IAAI,CAAC,iFAAiF,EAAE,GAAG,CAAC;AACvH,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,GAAY;AACrD,EAAE,OAAO,mBAAA,IAAuB,MAAM;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sBAAsB,GAAY;AAClD;AACA;AACA;AACA;;AAEA,EAAE,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,IAAI,OAAO,KAAK;AAChB,EAAE;;AAEF,EAAE,IAAI;AACN,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE;AACrB,MAAM,cAAc,EAAE,QAAA;AACtB,KAAK,CAAC;AACN,IAAI,OAAO,IAAI;AACf,EAAE,EAAE,MAAM;AACV,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/syncpromise.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/syncpromise.js new file mode 100644 index 0000000..1d5b419 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/syncpromise.js @@ -0,0 +1,184 @@ +import { isThenable } from './is.js'; + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +/** SyncPromise internal states */ +const STATE_PENDING = 0; +const STATE_RESOLVED = 1; +const STATE_REJECTED = 2; + +/** + * Creates a resolved sync promise. + * + * @param value the value to resolve the promise with + * @returns the resolved sync promise + */ +function resolvedSyncPromise(value) { + return new SyncPromise(resolve => { + resolve(value); + }); +} + +/** + * Creates a rejected sync promise. + * + * @param value the value to reject the promise with + * @returns the rejected sync promise + */ +function rejectedSyncPromise(reason) { + return new SyncPromise((_, reject) => { + reject(reason); + }); +} + +/** + * Thenable class that behaves like a Promise and follows it's interface + * but is not async internally + */ +class SyncPromise { + + constructor(executor) { + this._state = STATE_PENDING; + this._handlers = []; + + this._runExecutor(executor); + } + + /** @inheritdoc */ + then( + onfulfilled, + onrejected, + ) { + return new SyncPromise((resolve, reject) => { + this._handlers.push([ + false, + result => { + if (!onfulfilled) { + // TODO: ¯\_(ツ)_/¯ + // TODO: FIXME + resolve(result ); + } else { + try { + resolve(onfulfilled(result)); + } catch (e) { + reject(e); + } + } + }, + reason => { + if (!onrejected) { + reject(reason); + } else { + try { + resolve(onrejected(reason)); + } catch (e) { + reject(e); + } + } + }, + ]); + this._executeHandlers(); + }); + } + + /** @inheritdoc */ + catch( + onrejected, + ) { + return this.then(val => val, onrejected); + } + + /** @inheritdoc */ + finally(onfinally) { + return new SyncPromise((resolve, reject) => { + let val; + let isRejected; + + return this.then( + value => { + isRejected = false; + val = value; + if (onfinally) { + onfinally(); + } + }, + reason => { + isRejected = true; + val = reason; + if (onfinally) { + onfinally(); + } + }, + ).then(() => { + if (isRejected) { + reject(val); + return; + } + + resolve(val ); + }); + }); + } + + /** Excute the resolve/reject handlers. */ + _executeHandlers() { + if (this._state === STATE_PENDING) { + return; + } + + const cachedHandlers = this._handlers.slice(); + this._handlers = []; + + cachedHandlers.forEach(handler => { + if (handler[0]) { + return; + } + + if (this._state === STATE_RESOLVED) { + handler[1](this._value ); + } + + if (this._state === STATE_REJECTED) { + handler[2](this._value); + } + + handler[0] = true; + }); + } + + /** Run the executor for the SyncPromise. */ + _runExecutor(executor) { + const setResult = (state, value) => { + if (this._state !== STATE_PENDING) { + return; + } + + if (isThenable(value)) { + void (value ).then(resolve, reject); + return; + } + + this._state = state; + this._value = value; + + this._executeHandlers(); + }; + + const resolve = (value) => { + setResult(STATE_RESOLVED, value); + }; + + const reject = (reason) => { + setResult(STATE_REJECTED, reason); + }; + + try { + executor(resolve, reject); + } catch (e) { + reject(e); + } + } +} + +export { SyncPromise, rejectedSyncPromise, resolvedSyncPromise }; +//# sourceMappingURL=syncpromise.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/syncpromise.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/syncpromise.js.map new file mode 100644 index 0000000..a8d5c35 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/syncpromise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"syncpromise.js","sources":["../../../src/utils/syncpromise.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst STATE_PENDING = 0;\nconst STATE_RESOLVED = 1;\nconst STATE_REJECTED = 2;\n\ntype State = typeof STATE_PENDING | typeof STATE_RESOLVED | typeof STATE_REJECTED;\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\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 */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\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 */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\ntype Executor = (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void;\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nexport class SyncPromise implements PromiseLike {\n private _state: State;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n private _value: any;\n\n public constructor(executor: Executor) {\n this._state = STATE_PENDING;\n this._handlers = [];\n\n this._runExecutor(executor);\n }\n\n /** @inheritdoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\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 as any);\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 public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** @inheritdoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\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 as unknown as any);\n });\n });\n }\n\n /** Excute the resolve/reject handlers. */\n private _executeHandlers(): void {\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 as unknown as any);\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 private _runExecutor(executor: Executor): void {\n const setResult = (state: State, value?: T | PromiseLike | any): void => {\n if (this._state !== STATE_PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).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: unknown): void => {\n setResult(STATE_RESOLVED, value);\n };\n\n const reject = (reason: unknown): void => {\n setResult(STATE_REJECTED, reason);\n };\n\n try {\n executor(resolve, reject);\n } catch (e) {\n reject(e);\n }\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/time.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/time.js new file mode 100644 index 0000000..7709a2b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/time.js @@ -0,0 +1,133 @@ +import { safeDateNow, withRandomSafeContext } from './randomSafeContext.js'; +import { GLOBAL_OBJ } from './worldwide.js'; + +const ONE_SECOND_IN_MS = 1000; + +/** + * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance} + * for accessing a high-resolution monotonic clock. + */ + +/** + * Returns a timestamp in seconds since the UNIX epoch using the Date API. + */ +function dateTimestampInSeconds() { + return safeDateNow() / ONE_SECOND_IN_MS; +} + +/** + * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not + * support the API. + * + * Wrapping the native API works around differences in behavior from different browsers. + */ +function createUnixTimestampInSecondsFunc() { + const { performance } = GLOBAL_OBJ ; + // Some browser and environments don't have a performance or timeOrigin, so we fallback to + // using Date.now() to compute the starting time. + if (!performance?.now || !performance.timeOrigin) { + return dateTimestampInSeconds; + } + + const timeOrigin = performance.timeOrigin; + + // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current + // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed. + // + // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the + // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and + // correct for this. + // See: https://github.com/getsentry/sentry-javascript/issues/2590 + // See: https://github.com/mdn/content/issues/4713 + // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6 + return () => { + return (timeOrigin + withRandomSafeContext(() => performance.now())) / ONE_SECOND_IN_MS; + }; +} + +let _cachedTimestampInSeconds; + +/** + * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the + * availability of the Performance API. + * + * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is + * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The + * skew can grow to arbitrary amounts like days, weeks or months. + * See https://github.com/getsentry/sentry-javascript/issues/2590. + */ +function timestampInSeconds() { + // We store this in a closure so that we don't have to create a new function every time this is called. + const func = _cachedTimestampInSeconds ?? (_cachedTimestampInSeconds = createUnixTimestampInSecondsFunc()); + return func(); +} + +/** + * Cached result of getBrowserTimeOrigin. + */ +let cachedTimeOrigin = null; + +/** + * Gets the time origin and the mode used to determine it. + * + * Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or + * performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin + * data as reliable if they are within a reasonable threshold of the current time. + * + * TODO: move to `@sentry/browser-utils` package. + */ +function getBrowserTimeOrigin() { + const { performance } = GLOBAL_OBJ ; + if (!performance?.now) { + return undefined; + } + + const threshold = 300000; // 5 minutes in milliseconds + const performanceNow = withRandomSafeContext(() => performance.now()); + const dateNow = safeDateNow(); + + const timeOrigin = performance.timeOrigin; + if (typeof timeOrigin === 'number') { + const timeOriginDelta = Math.abs(timeOrigin + performanceNow - dateNow); + if (timeOriginDelta < threshold) { + return timeOrigin; + } + } + + // TODO: Remove all code related to `performance.timing.navigationStart` once we drop support for Safari 14. + // `performance.timeSince` is available in Safari 15. + // see: https://caniuse.com/mdn-api_performance_timeorigin + + // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin + // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing. + // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always + // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the + // Date API. + // eslint-disable-next-line deprecation/deprecation + const navigationStart = performance.timing?.navigationStart; + if (typeof navigationStart === 'number') { + const navigationStartDelta = Math.abs(navigationStart + performanceNow - dateNow); + if (navigationStartDelta < threshold) { + return navigationStart; + } + } + + // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to subtracting + // `performance.now()` from `Date.now()`. + return dateNow - performanceNow; +} + +/** + * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the + * performance API is available. + */ +function browserPerformanceTimeOrigin() { + if (cachedTimeOrigin === null) { + cachedTimeOrigin = getBrowserTimeOrigin(); + } + + return cachedTimeOrigin; +} + +export { browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds }; +//# sourceMappingURL=time.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/time.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/time.js.map new file mode 100644 index 0000000..5e4c702 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"time.js","sources":["../../../src/utils/time.ts"],"sourcesContent":["import { safeDateNow, withRandomSafeContext } from './randomSafeContext';\nimport { GLOBAL_OBJ } from './worldwide';\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 */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport function dateTimestampInSeconds(): number {\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(): () => number {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\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: (() => number) | undefined;\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 */\nexport function timestampInSeconds(): number {\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: number | null | undefined = 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(): number | undefined {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n if (!performance?.now) {\n return undefined;\n }\n\n const threshold = 300_000; // 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 */\nexport function browserPerformanceTimeOrigin(): number | undefined {\n if (cachedTimeOrigin === null) {\n cachedTimeOrigin = getBrowserTimeOrigin();\n }\n\n return cachedTimeOrigin;\n}\n"],"names":[],"mappings":";;;AAGA,MAAM,gBAAA,GAAmB,IAAI;;AAE7B;AACA;AACA;AACA;;AAYA;AACA;AACA;AACO,SAAS,sBAAsB,GAAW;AACjD,EAAE,OAAO,WAAW,EAAC,GAAI,gBAAgB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gCAAgC,GAAiB;AAC1D,EAAE,MAAM,EAAE,WAAA,EAAY,GAAI,UAAA;AAC1B;AACA;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,GAAA,IAAO,CAAC,WAAW,CAAC,UAAU,EAAE;AACpD,IAAI,OAAO,sBAAsB;AACjC,EAAE;;AAEF,EAAE,MAAM,UAAA,GAAa,WAAW,CAAC,UAAU;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM;AACf,IAAI,OAAO,CAAC,UAAA,GAAa,qBAAqB,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAgB;AAC3F,EAAE,CAAC;AACH;;AAEA,IAAI,yBAAyB;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,GAAW;AAC7C;AACA,EAAE,MAAM,IAAA,GAAO,yBAAA,KAA8B,yBAAA,GAA4B,gCAAgC,EAAE,CAAC;AAC5G,EAAE,OAAO,IAAI,EAAE;AACf;;AAEA;AACA;AACA;AACA,IAAI,gBAAgB,GAA8B,IAAI;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,GAAuB;AACpD,EAAE,MAAM,EAAE,WAAA,EAAY,GAAI,UAAA;AAC1B,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AACzB,IAAI,OAAO,SAAS;AACpB,EAAE;;AAEF,EAAE,MAAM,SAAA,GAAY,MAAO,CAAA;AAC3B,EAAE,MAAM,cAAA,GAAiB,qBAAqB,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC;AACvE,EAAE,MAAM,OAAA,GAAU,WAAW,EAAE;;AAE/B,EAAE,MAAM,UAAA,GAAa,WAAW,CAAC,UAAU;AAC3C,EAAE,IAAI,OAAO,UAAA,KAAe,QAAQ,EAAE;AACtC,IAAI,MAAM,eAAA,GAAkB,IAAI,CAAC,GAAG,CAAC,UAAA,GAAa,cAAA,GAAiB,OAAO,CAAC;AAC3E,IAAI,IAAI,eAAA,GAAkB,SAAS,EAAE;AACrC,MAAM,OAAO,UAAU;AACvB,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,eAAA,GAAkB,WAAW,CAAC,MAAM,EAAE,eAAe;AAC7D,EAAE,IAAI,OAAO,eAAA,KAAoB,QAAQ,EAAE;AAC3C,IAAI,MAAM,oBAAA,GAAuB,IAAI,CAAC,GAAG,CAAC,eAAA,GAAkB,cAAA,GAAiB,OAAO,CAAC;AACrF,IAAI,IAAI,oBAAA,GAAuB,SAAS,EAAE;AAC1C,MAAM,OAAO,eAAe;AAC5B,IAAI;AACJ,EAAE;;AAEF;AACA;AACA,EAAE,OAAO,OAAA,GAAU,cAAc;AACjC;;AAEA;AACA;AACA;AACA;AACO,SAAS,4BAA4B,GAAuB;AACnE,EAAE,IAAI,gBAAA,KAAqB,IAAI,EAAE;AACjC,IAAI,gBAAA,GAAmB,oBAAoB,EAAE;AAC7C,EAAE;;AAEF,EAAE,OAAO,gBAAgB;AACzB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/trace-info.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/trace-info.js new file mode 100644 index 0000000..ba82961 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/trace-info.js @@ -0,0 +1,25 @@ +import { withScope, getTraceContextFromScope } from '../currentScopes.js'; +import { getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromScope } from '../tracing/dynamicSamplingContext.js'; +import { getActiveSpan, spanToTraceContext } from './spanUtils.js'; + +/** Extract trace information from scope */ +function _getTraceInfoFromScope( + client, + scope, +) { + if (!scope) { + return [undefined, undefined]; + } + + return withScope(scope, () => { + const span = getActiveSpan(); + const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope); + const dynamicSamplingContext = span + ? getDynamicSamplingContextFromSpan(span) + : getDynamicSamplingContextFromScope(client, scope); + return [dynamicSamplingContext, traceContext]; + }); +} + +export { _getTraceInfoFromScope }; +//# sourceMappingURL=trace-info.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/trace-info.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/trace-info.js.map new file mode 100644 index 0000000..be932c1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/trace-info.js.map @@ -0,0 +1 @@ +{"version":3,"file":"trace-info.js","sources":["../../../src/utils/trace-info.ts"],"sourcesContent":["import type { Client } from '../client';\nimport { getTraceContextFromScope, withScope } from '../currentScopes';\nimport type { Scope } from '../scope';\nimport {\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n} from '../tracing/dynamicSamplingContext';\nimport type { TraceContext } from '../types-hoist/context';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { getActiveSpan, spanToTraceContext } from './spanUtils';\n\n/** Extract trace information from scope */\nexport function _getTraceInfoFromScope(\n client: Client,\n scope: Scope | undefined,\n): [dynamicSamplingContext: Partial | undefined, traceContext: TraceContext | undefined] {\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"],"names":[],"mappings":";;;;AAWA;AACO,SAAS,sBAAsB;AACtC,EAAE,MAAM;AACR,EAAE,KAAK;AACP,EAAiH;AACjH,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;AACjC,EAAE;;AAEF,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM;AAChC,IAAI,MAAM,IAAA,GAAO,aAAa,EAAE;AAChC,IAAI,MAAM,YAAA,GAAe,IAAA,GAAO,kBAAkB,CAAC,IAAI,CAAA,GAAI,wBAAwB,CAAC,KAAK,CAAC;AAC1F,IAAI,MAAM,yBAAyB;AACnC,QAAQ,iCAAiC,CAAC,IAAI;AAC9C,QAAQ,kCAAkC,CAAC,MAAM,EAAE,KAAK,CAAC;AACzD,IAAI,OAAO,CAAC,sBAAsB,EAAE,YAAY,CAAC;AACjD,EAAE,CAAC,CAAC;AACJ;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/traceData.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/traceData.js new file mode 100644 index 0000000..04ead00 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/traceData.js @@ -0,0 +1,77 @@ +import { getAsyncContextStrategy } from '../asyncContext/index.js'; +import { getMainCarrier } from '../carrier.js'; +import { getClient, getCurrentScope } from '../currentScopes.js'; +import { isEnabled } from '../exports.js'; +import { debug } from './debug-logger.js'; +import { getActiveSpan, spanToTraceHeader, spanToTraceparentHeader } from './spanUtils.js'; +import { getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromScope } from '../tracing/dynamicSamplingContext.js'; +import { dynamicSamplingContextToSentryBaggageHeader } from './baggage.js'; +import { TRACEPARENT_REGEXP, generateSentryTraceHeader, generateTraceparentHeader } from './tracing.js'; + +/** + * Extracts trace propagation data from the current span or from the client's scope (via transaction or propagation + * context) and serializes it to `sentry-trace` and `baggage` values. These values can be used to propagate + * a trace via our tracing Http headers or Html `` tags. + * + * This function also applies some validation to the generated sentry-trace and baggage values to ensure that + * only valid strings are returned. + * + * If (@param options.propagateTraceparent) is `true`, the function will also generate a `traceparent` value, + * following the W3C traceparent header format. + * + * @returns an object with the tracing data values. The object keys are the name of the tracing key to be used as header + * or meta tag name. + */ +function getTraceData( + options = {}, +) { + const client = options.client || getClient(); + if (!isEnabled() || !client) { + return {}; + } + + const carrier = getMainCarrier(); + const acs = getAsyncContextStrategy(carrier); + if (acs.getTraceData) { + return acs.getTraceData(options); + } + + const scope = options.scope || getCurrentScope(); + const span = options.span || getActiveSpan(); + const sentryTrace = span ? spanToTraceHeader(span) : scopeToTraceHeader(scope); + const dsc = span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromScope(client, scope); + const baggage = dynamicSamplingContextToSentryBaggageHeader(dsc); + + const isValidSentryTraceHeader = TRACEPARENT_REGEXP.test(sentryTrace); + if (!isValidSentryTraceHeader) { + debug.warn('Invalid sentry-trace data. Cannot generate trace data'); + return {}; + } + + const traceData = { + 'sentry-trace': sentryTrace, + baggage, + }; + + if (options.propagateTraceparent) { + traceData.traceparent = span ? spanToTraceparentHeader(span) : scopeToTraceparentHeader(scope); + } + + return traceData; +} + +/** + * Get a sentry-trace header value for the given scope. + */ +function scopeToTraceHeader(scope) { + const { traceId, sampled, propagationSpanId } = scope.getPropagationContext(); + return generateSentryTraceHeader(traceId, propagationSpanId, sampled); +} + +function scopeToTraceparentHeader(scope) { + const { traceId, sampled, propagationSpanId } = scope.getPropagationContext(); + return generateTraceparentHeader(traceId, propagationSpanId, sampled); +} + +export { getTraceData }; +//# sourceMappingURL=traceData.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/traceData.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/traceData.js.map new file mode 100644 index 0000000..651c2e1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/traceData.js.map @@ -0,0 +1 @@ +{"version":3,"file":"traceData.js","sources":["../../../src/utils/traceData.ts"],"sourcesContent":["import { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope } from '../currentScopes';\nimport { isEnabled } from '../exports';\nimport type { Scope } from '../scope';\nimport { getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan } from '../tracing';\nimport type { Span } from '../types-hoist/span';\nimport type { SerializedTraceData } from '../types-hoist/tracing';\nimport { dynamicSamplingContextToSentryBaggageHeader } from './baggage';\nimport { debug } from './debug-logger';\nimport { getActiveSpan, spanToTraceHeader, spanToTraceparentHeader } from './spanUtils';\nimport { generateSentryTraceHeader, generateTraceparentHeader, TRACEPARENT_REGEXP } from './tracing';\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 */\nexport function getTraceData(\n options: { span?: Span; scope?: Scope; client?: Client; propagateTraceparent?: boolean } = {},\n): SerializedTraceData {\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: SerializedTraceData = {\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: Scope): string {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateSentryTraceHeader(traceId, propagationSpanId, sampled);\n}\n\nfunction scopeToTraceparentHeader(scope: Scope): string {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateTraceparentHeader(traceId, propagationSpanId, sampled);\n}\n"],"names":[],"mappings":";;;;;;;;;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY;AAC5B,EAAE,OAAO,GAAoF,EAAE;AAC/F,EAAuB;AACvB,EAAE,MAAM,SAAS,OAAO,CAAC,MAAA,IAAU,SAAS,EAAE;AAC9C,EAAE,IAAI,CAAC,SAAS,EAAC,IAAK,CAAC,MAAM,EAAE;AAC/B,IAAI,OAAO,EAAE;AACb,EAAE;;AAEF,EAAE,MAAM,OAAA,GAAU,cAAc,EAAE;AAClC,EAAE,MAAM,GAAA,GAAM,uBAAuB,CAAC,OAAO,CAAC;AAC9C,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE;AACxB,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC;AACpC,EAAE;;AAEF,EAAE,MAAM,QAAQ,OAAO,CAAC,KAAA,IAAS,eAAe,EAAE;AAClD,EAAE,MAAM,OAAO,OAAO,CAAC,IAAA,IAAQ,aAAa,EAAE;AAC9C,EAAE,MAAM,WAAA,GAAc,IAAA,GAAO,iBAAiB,CAAC,IAAI,CAAA,GAAI,kBAAkB,CAAC,KAAK,CAAC;AAChF,EAAE,MAAM,GAAA,GAAM,IAAA,GAAO,iCAAiC,CAAC,IAAI,CAAA,GAAI,kCAAkC,CAAC,MAAM,EAAE,KAAK,CAAC;AAChH,EAAE,MAAM,OAAA,GAAU,2CAA2C,CAAC,GAAG,CAAC;;AAElE,EAAE,MAAM,2BAA2B,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvE,EAAE,IAAI,CAAC,wBAAwB,EAAE;AACjC,IAAI,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC;AACvE,IAAI,OAAO,EAAE;AACb,EAAE;;AAEF,EAAE,MAAM,SAAS,GAAwB;AACzC,IAAI,cAAc,EAAE,WAAW;AAC/B,IAAI,OAAO;AACX,GAAG;;AAEH,EAAE,IAAI,OAAO,CAAC,oBAAoB,EAAE;AACpC,IAAI,SAAS,CAAC,WAAA,GAAc,OAAO,uBAAuB,CAAC,IAAI,CAAA,GAAI,wBAAwB,CAAC,KAAK,CAAC;AAClG,EAAE;;AAEF,EAAE,OAAO,SAAS;AAClB;;AAEA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAiB;AAClD,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAA,EAAkB,GAAI,KAAK,CAAC,qBAAqB,EAAE;AAC/E,EAAE,OAAO,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC;AACvE;;AAEA,SAAS,wBAAwB,CAAC,KAAK,EAAiB;AACxD,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAA,EAAkB,GAAI,KAAK,CAAC,qBAAqB,EAAE;AAC/E,EAAE,OAAO,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC;AACvE;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/tracing.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/tracing.js new file mode 100644 index 0000000..6f5e023 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/tracing.js @@ -0,0 +1,178 @@ +import { debug } from './debug-logger.js'; +import { baggageHeaderToDynamicSamplingContext } from './baggage.js'; +import { extractOrgIdFromClient } from './dsn.js'; +import { parseSampleRate } from './parseSampleRate.js'; +import { generateTraceId, generateSpanId } from './propagationContext.js'; +import { safeMathRandom } from './randomSafeContext.js'; + +// eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- RegExp is used for readability here +const TRACEPARENT_REGEXP = new RegExp( + '^[ \\t]*' + // whitespace + '([0-9a-f]{32})?' + // trace_id + '-?([0-9a-f]{16})?' + // span_id + '-?([01])?' + // sampled + '[ \\t]*$', // whitespace +); + +/** + * Extract transaction context data from a `sentry-trace` header. + * + * This is terrible naming but the function has nothing to do with the W3C traceparent header. + * It can only parse the `sentry-trace` header and extract the "trace parent" data. + * + * @param traceparent Traceparent string + * + * @returns Object containing data from the header, or undefined if traceparent string is malformed + */ +function extractTraceparentData(traceparent) { + if (!traceparent) { + return undefined; + } + + const matches = traceparent.match(TRACEPARENT_REGEXP); + if (!matches) { + return undefined; + } + + let parentSampled; + if (matches[3] === '1') { + parentSampled = true; + } else if (matches[3] === '0') { + parentSampled = false; + } + + return { + traceId: matches[1], + parentSampled, + parentSpanId: matches[2], + }; +} + +/** + * Create a propagation context from incoming headers or + * creates a minimal new one if the headers are undefined. + */ +function propagationContextFromHeaders( + sentryTrace, + baggage, +) { + const traceparentData = extractTraceparentData(sentryTrace); + const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage); + + if (!traceparentData?.traceId) { + return { + traceId: generateTraceId(), + sampleRand: safeMathRandom(), + }; + } + + const sampleRand = getSampleRandFromTraceparentAndDsc(traceparentData, dynamicSamplingContext); + + // The sample_rand on the DSC needs to be generated based on traceparent + baggage. + if (dynamicSamplingContext) { + dynamicSamplingContext.sample_rand = sampleRand.toString(); + } + + const { traceId, parentSpanId, parentSampled } = traceparentData; + + return { + traceId, + parentSpanId, + sampled: parentSampled, + dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it + sampleRand, + }; +} + +/** + * Create sentry-trace header from span context values. + */ +function generateSentryTraceHeader( + traceId = generateTraceId(), + spanId = generateSpanId(), + sampled, +) { + let sampledString = ''; + if (sampled !== undefined) { + sampledString = sampled ? '-1' : '-0'; + } + return `${traceId}-${spanId}${sampledString}`; +} + +/** + * Creates a W3C traceparent header from the given trace and span ids. + */ +function generateTraceparentHeader( + traceId = generateTraceId(), + spanId = generateSpanId(), + sampled, +) { + return `00-${traceId}-${spanId}-${sampled ? '01' : '00'}`; +} + +/** + * Given any combination of an incoming trace, generate a sample rand based on its defined semantics. + * + * Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value + */ +function getSampleRandFromTraceparentAndDsc( + traceparentData, + dsc, +) { + // When there is an incoming sample rand use it. + const parsedSampleRand = parseSampleRate(dsc?.sample_rand); + if (parsedSampleRand !== undefined) { + return parsedSampleRand; + } + + // Otherwise, if there is an incoming sampling decision + sample rate, generate a sample rand that would lead to the same sampling decision. + const parsedSampleRate = parseSampleRate(dsc?.sample_rate); + if (parsedSampleRate && traceparentData?.parentSampled !== undefined) { + return traceparentData.parentSampled + ? // Returns a sample rand with positive sampling decision [0, sampleRate) + safeMathRandom() * parsedSampleRate + : // Returns a sample rand with negative sampling decision [sampleRate, 1) + parsedSampleRate + safeMathRandom() * (1 - parsedSampleRate); + } else { + // If nothing applies, return a random sample rand. + return safeMathRandom(); + } +} + +/** + * Determines whether a new trace should be continued based on the provided baggage org ID and the client's `strictTraceContinuation` option. + * If the trace should not be continued, a new trace will be started. + * + * The result is dependent on the `strictTraceContinuation` option in the client. + * See https://develop.sentry.dev/sdk/telemetry/traces/#stricttracecontinuation + */ +function shouldContinueTrace(client, baggageOrgId) { + const clientOrgId = extractOrgIdFromClient(client); + + // Case: baggage orgID and Client orgID don't match - always start new trace + if (baggageOrgId && clientOrgId && baggageOrgId !== clientOrgId) { + debug.log( + `Won't continue trace because org IDs don't match (incoming baggage: ${baggageOrgId}, SDK options: ${clientOrgId})`, + ); + return false; + } + + const strictTraceContinuation = client.getOptions().strictTraceContinuation || false; // default for `strictTraceContinuation` is `false` + + if (strictTraceContinuation) { + // With strict continuation enabled, don't continue trace if: + // - Baggage has orgID, but Client doesn't have one + // - Client has orgID, but baggage doesn't have one + if ((baggageOrgId && !clientOrgId) || (!baggageOrgId && clientOrgId)) { + debug.log( + `Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${baggageOrgId}, Sentry client: ${clientOrgId})`, + ); + return false; + } + } + + return true; +} + +export { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, generateTraceparentHeader, propagationContextFromHeaders, shouldContinueTrace }; +//# sourceMappingURL=tracing.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/tracing.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/tracing.js.map new file mode 100644 index 0000000..4b509ce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/tracing.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tracing.js","sources":["../../../src/utils/tracing.ts"],"sourcesContent":["import type { Client } from '../client';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { PropagationContext } from '../types-hoist/tracing';\nimport type { TraceparentData } from '../types-hoist/transaction';\nimport { debug } from '../utils/debug-logger';\nimport { baggageHeaderToDynamicSamplingContext } from './baggage';\nimport { extractOrgIdFromClient } from './dsn';\nimport { parseSampleRate } from './parseSampleRate';\nimport { generateSpanId, generateTraceId } from './propagationContext';\nimport { safeMathRandom } from './randomSafeContext';\n\n// eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- RegExp is used for readability here\nexport const 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 */\nexport function extractTraceparentData(traceparent?: string): TraceparentData | undefined {\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: boolean | undefined;\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 */\nexport function propagationContextFromHeaders(\n sentryTrace: string | undefined,\n baggage: string | number | boolean | string[] | null | undefined,\n): PropagationContext {\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 */\nexport function generateSentryTraceHeader(\n traceId: string | undefined = generateTraceId(),\n spanId: string | undefined = generateSpanId(),\n sampled?: boolean,\n): string {\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 */\nexport function generateTraceparentHeader(\n traceId: string | undefined = generateTraceId(),\n spanId: string | undefined = generateSpanId(),\n sampled?: boolean,\n): string {\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: TraceparentData | undefined,\n dsc: Partial | undefined,\n): number {\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 */\nexport function shouldContinueTrace(client: Client, baggageOrgId?: string): boolean {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/transactionEvent.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/transactionEvent.js new file mode 100644 index 0000000..ba7166c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/transactionEvent.js @@ -0,0 +1,56 @@ +import { SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes.js'; + +/** + * Converts a transaction event to a span JSON object. + */ +function convertTransactionEventToSpanJson(event) { + const { trace_id, parent_span_id, span_id, status, origin, data, op } = event.contexts?.trace ?? {}; + + return { + data: data ?? {}, + description: event.transaction, + op, + parent_span_id, + span_id: span_id ?? '', + start_timestamp: event.start_timestamp ?? 0, + status, + timestamp: event.timestamp, + trace_id: trace_id ?? '', + origin, + profile_id: data?.[SEMANTIC_ATTRIBUTE_PROFILE_ID] , + exclusive_time: data?.[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] , + measurements: event.measurements, + is_segment: true, + }; +} + +/** + * Converts a span JSON object to a transaction event. + */ +function convertSpanJsonToTransactionEvent(span) { + return { + type: 'transaction', + timestamp: span.timestamp, + start_timestamp: span.start_timestamp, + transaction: span.description, + contexts: { + trace: { + trace_id: span.trace_id, + span_id: span.span_id, + parent_span_id: span.parent_span_id, + op: span.op, + status: span.status, + origin: span.origin, + data: { + ...span.data, + ...(span.profile_id && { [SEMANTIC_ATTRIBUTE_PROFILE_ID]: span.profile_id }), + ...(span.exclusive_time && { [SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]: span.exclusive_time }), + }, + }, + }, + measurements: span.measurements, + }; +} + +export { convertSpanJsonToTransactionEvent, convertTransactionEventToSpanJson }; +//# sourceMappingURL=transactionEvent.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/transactionEvent.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/transactionEvent.js.map new file mode 100644 index 0000000..89ad5d9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/transactionEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transactionEvent.js","sources":["../../../src/utils/transactionEvent.ts"],"sourcesContent":["import { SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes';\nimport type { TransactionEvent } from '../types-hoist/event';\nimport type { SpanJSON } from '../types-hoist/span';\n\n/**\n * Converts a transaction event to a span JSON object.\n */\nexport function convertTransactionEventToSpanJson(event: TransactionEvent): SpanJSON {\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] as string | undefined,\n exclusive_time: data?.[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\n measurements: event.measurements,\n is_segment: true,\n };\n}\n\n/**\n * Converts a span JSON object to a transaction event.\n */\nexport function convertSpanJsonToTransactionEvent(span: SpanJSON): TransactionEvent {\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"],"names":[],"mappings":";;AAIA;AACA;AACA;AACO,SAAS,iCAAiC,CAAC,KAAK,EAA8B;AACrF,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAA,EAAG,GAAI,KAAK,CAAC,QAAQ,EAAE,KAAA,IAAS,EAAE;;AAErG,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,IAAA,IAAQ,EAAE;AACpB,IAAI,WAAW,EAAE,KAAK,CAAC,WAAW;AAClC,IAAI,EAAE;AACN,IAAI,cAAc;AAClB,IAAI,OAAO,EAAE,OAAA,IAAW,EAAE;AAC1B,IAAI,eAAe,EAAE,KAAK,CAAC,eAAA,IAAmB,CAAC;AAC/C,IAAI,MAAM;AACV,IAAI,SAAS,EAAE,KAAK,CAAC,SAAS;AAC9B,IAAI,QAAQ,EAAE,QAAA,IAAY,EAAE;AAC5B,IAAI,MAAM;AACV,IAAI,UAAU,EAAE,IAAI,GAAG,6BAA6B,CAAA;AACpD,IAAI,cAAc,EAAE,IAAI,GAAG,iCAAiC,CAAA;AAC5D,IAAI,YAAY,EAAE,KAAK,CAAC,YAAY;AACpC,IAAI,UAAU,EAAE,IAAI;AACpB,GAAG;AACH;;AAEA;AACA;AACA;AACO,SAAS,iCAAiC,CAAC,IAAI,EAA8B;AACpF,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,SAAS,EAAE,IAAI,CAAC,SAAS;AAC7B,IAAI,eAAe,EAAE,IAAI,CAAC,eAAe;AACzC,IAAI,WAAW,EAAE,IAAI,CAAC,WAAW;AACjC,IAAI,QAAQ,EAAE;AACd,MAAM,KAAK,EAAE;AACb,QAAQ,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC/B,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO;AAC7B,QAAQ,cAAc,EAAE,IAAI,CAAC,cAAc;AAC3C,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE;AACnB,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM;AAC3B,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM;AAC3B,QAAQ,IAAI,EAAE;AACd,UAAU,GAAG,IAAI,CAAC,IAAI;AACtB,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,6BAA6B,GAAG,IAAI,CAAC,UAAA,EAAY,CAAC;AACtF,UAAU,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,iCAAiC,GAAG,IAAI,CAAC,cAAA,EAAgB,CAAC;AAClG,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,YAAY,EAAE,IAAI,CAAC,YAAY;AACnC,GAAG;AACH;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/url.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/url.js new file mode 100644 index 0000000..09f3542 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/url.js @@ -0,0 +1,270 @@ +import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes.js'; + +// Curious about `thismessage:/`? See: https://www.rfc-editor.org/rfc/rfc2557.html +// > When the methods above do not yield an absolute URI, a base URL +// > of "thismessage:/" MUST be employed. This base URL has been +// > defined for the sole purpose of resolving relative references +// > within a multipart/related structure when no other base URI is +// > specified. +// +// We need to provide a base URL to `parseStringToURLObject` because the fetch API gives us a +// relative URL sometimes. +// +// This is the only case where we need to provide a base URL to `parseStringToURLObject` +// because the relative URL is not valid on its own. +const DEFAULT_BASE_URL = 'thismessage:/'; + +/** + * Checks if the URL object is relative + * + * @param url - The URL object to check + * @returns True if the URL object is relative, false otherwise + */ +function isURLObjectRelative(url) { + return 'isRelative' in url; +} + +/** + * Parses string to a URL object + * + * @param url - The URL to parse + * @returns The parsed URL object or undefined if the URL is invalid + */ +function parseStringToURLObject(url, urlBase) { + const isRelative = url.indexOf('://') <= 0 && url.indexOf('//') !== 0; + const base = urlBase ?? (isRelative ? DEFAULT_BASE_URL : undefined); + try { + // Use `canParse` to short-circuit the URL constructor if it's not a valid URL + // This is faster than trying to construct the URL and catching the error + // Node 20+, Chrome 120+, Firefox 115+, Safari 17+ + if ('canParse' in URL && !(URL ).canParse(url, base)) { + return undefined; + } + + const fullUrlObject = new URL(url, base); + if (isRelative) { + // Because we used a fake base URL, we need to return a relative URL object. + // We cannot return anything about the origin, host, etc. because it will refer to the fake base URL. + return { + isRelative, + pathname: fullUrlObject.pathname, + search: fullUrlObject.search, + hash: fullUrlObject.hash, + }; + } + return fullUrlObject; + } catch { + // empty body + } + + return undefined; +} + +/** + * Takes a URL object and returns a sanitized string which is safe to use as span name + * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data + */ +function getSanitizedUrlStringFromUrlObject(url) { + if (isURLObjectRelative(url)) { + return url.pathname; + } + + const newUrl = new URL(url); + newUrl.search = ''; + newUrl.hash = ''; + if (['80', '443'].includes(newUrl.port)) { + newUrl.port = ''; + } + if (newUrl.password) { + newUrl.password = '%filtered%'; + } + if (newUrl.username) { + newUrl.username = '%filtered%'; + } + + return newUrl.toString(); +} + +function getHttpSpanNameFromUrlObject( + urlObject, + kind, + request, + routeName, +) { + const method = request?.method?.toUpperCase() ?? 'GET'; + const route = routeName + ? routeName + : urlObject + ? kind === 'client' + ? getSanitizedUrlStringFromUrlObject(urlObject) + : urlObject.pathname + : '/'; + + return `${method} ${route}`; +} + +/** + * Takes a parsed URL object and returns a set of attributes for the span + * that represents the HTTP request for that url. This is used for both server + * and client http spans. + * + * Follows https://opentelemetry.io/docs/specs/semconv/http/. + * + * @param urlObject - see {@link parseStringToURLObject} + * @param kind - The type of HTTP operation (server or client) + * @param spanOrigin - The origin of the span + * @param request - The request object, see {@link PartialRequest} + * @param routeName - The name of the route, must be low cardinality + * @returns The span name and attributes for the HTTP operation + */ +function getHttpSpanDetailsFromUrlObject( + urlObject, + kind, + spanOrigin, + request, + routeName, +) { + const attributes = { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin, + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', + }; + + if (routeName) { + // This is based on https://opentelemetry.io/docs/specs/semconv/http/http-spans/#name + attributes[kind === 'server' ? 'http.route' : 'url.template'] = routeName; + attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route'; + } + + if (request?.method) { + attributes[SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD] = request.method.toUpperCase(); + } + + if (urlObject) { + if (urlObject.search) { + attributes['url.query'] = urlObject.search; + } + if (urlObject.hash) { + attributes['url.fragment'] = urlObject.hash; + } + if (urlObject.pathname) { + attributes['url.path'] = urlObject.pathname; + if (urlObject.pathname === '/') { + attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route'; + } + } + + if (!isURLObjectRelative(urlObject)) { + attributes[SEMANTIC_ATTRIBUTE_URL_FULL] = urlObject.href; + if (urlObject.port) { + attributes['url.port'] = urlObject.port; + } + if (urlObject.protocol) { + attributes['url.scheme'] = urlObject.protocol; + } + if (urlObject.hostname) { + attributes[kind === 'server' ? 'server.address' : 'url.domain'] = urlObject.hostname; + } + } + } + + return [getHttpSpanNameFromUrlObject(urlObject, kind, request, routeName), attributes]; +} + +/** + * Parses string form of URL into an object + * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B + * // intentionally using regex and not href parsing trick because React Native and other + * // environments where DOM might not be available + * @returns parsed URL object + */ +function parseUrl(url) { + if (!url) { + return {}; + } + + const match = url.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + if (!match) { + return {}; + } + + // coerce to undefined values to empty string so we don't get 'undefined' + const query = match[6] || ''; + const fragment = match[8] || ''; + return { + host: match[4], + path: match[5], + protocol: match[2], + search: query, + hash: fragment, + relative: match[5] + query + fragment, // everything minus origin + }; +} + +/** + * Strip the query string and fragment off of a given URL or path (if present) + * + * @param urlPath Full URL or path, including possible query string and/or fragment + * @returns URL or path without query string or fragment + */ +function stripUrlQueryAndFragment(urlPath) { + return (urlPath.split(/[?#]/, 1) )[0]; +} + +/** + * Takes a URL object and returns a sanitized string which is safe to use as span name + * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data + */ +function getSanitizedUrlString(url) { + const { protocol, host, path } = url; + + const filteredHost = + host + // Always filter out authority + ?.replace(/^.*@/, '[filtered]:[filtered]@') + // Don't show standard :80 (http) and :443 (https) ports to reduce the noise + // TODO: Use new URL global if it exists + .replace(/(:80)$/, '') + .replace(/(:443)$/, '') || ''; + + return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`; +} + +/** + * Strips the content from a data URL, returning a placeholder with the MIME type. + * + * Data URLs can be very long (e.g. base64 encoded scripts for Web Workers), + * with little valuable information, often leading to envelopes getting dropped due + * to size limit violations. Therefore, we strip data URLs and replace them with a + * placeholder. + * + * @param url - The URL to process + * @param includeDataPrefix - If true, includes the first 10 characters of the data stream + * for debugging (e.g., to identify magic bytes like WASM's AGFzbQ). + * Defaults to true. + * @returns For data URLs, returns a short format like `data:text/javascript;base64,SGVsbG8gV2... [truncated]`. + * For non-data URLs, returns the original URL unchanged. + */ +function stripDataUrlContent(url, includeDataPrefix = true) { + if (url.startsWith('data:')) { + // Match the MIME type (everything after 'data:' until the first ';' or ',') + const match = url.match(/^data:([^;,]+)/); + const mimeType = match ? match[1] : 'text/plain'; + const isBase64 = url.includes(';base64,'); + + // Find where the actual data starts (after the comma) + const dataStart = url.indexOf(','); + let dataPrefix = ''; + if (includeDataPrefix && dataStart !== -1) { + const data = url.slice(dataStart + 1); + // Include first 10 chars of data to help identify content (e.g., magic bytes) + dataPrefix = data.length > 10 ? `${data.slice(0, 10)}... [truncated]` : data; + } + + return `data:${mimeType}${isBase64 ? ',base64' : ''}${dataPrefix ? `,${dataPrefix}` : ''}`; + } + return url; +} + +export { getHttpSpanDetailsFromUrlObject, getSanitizedUrlString, getSanitizedUrlStringFromUrlObject, isURLObjectRelative, parseStringToURLObject, parseUrl, stripDataUrlContent, stripUrlQueryAndFragment }; +//# sourceMappingURL=url.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/url.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/url.js.map new file mode 100644 index 0000000..ae21a0e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/url.js.map @@ -0,0 +1 @@ +{"version":3,"file":"url.js","sources":["../../../src/utils/url.ts"],"sourcesContent":["import {\n SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n} from '../semanticAttributes';\nimport type { SpanAttributes } from '../types-hoist/span';\n\ntype PartialURL = {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n search?: string;\n hash?: string;\n};\n\ninterface URLwithCanParse extends URL {\n canParse: (url: string, base?: string | URL | undefined) => boolean;\n}\n\n// A subset of the URL object that is valid for relative URLs\n// The URL object cannot handle relative URLs, so we need to handle them separately\ntype RelativeURL = {\n isRelative: true;\n pathname: URL['pathname'];\n search: URL['search'];\n hash: URL['hash'];\n};\n\ntype URLObject = RelativeURL | URL;\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 */\nexport function isURLObjectRelative(url: URLObject): url is RelativeURL {\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 */\nexport function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined {\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 as unknown as URLwithCanParse).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 */\nexport function getSanitizedUrlStringFromUrlObject(url: URLObject): string {\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\ntype PartialRequest = {\n method?: string;\n};\n\nfunction getHttpSpanNameFromUrlObject(\n urlObject: URLObject | undefined,\n kind: 'server' | 'client',\n request?: PartialRequest,\n routeName?: string,\n): string {\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 */\nexport function getHttpSpanDetailsFromUrlObject(\n urlObject: URLObject | undefined,\n kind: 'server' | 'client',\n spanOrigin: string,\n request?: PartialRequest,\n routeName?: string,\n): [name: string, attributes: SpanAttributes] {\n const attributes: SpanAttributes = {\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 */\nexport function parseUrl(url: string): PartialURL {\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 */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n return (urlPath.split(/[?#]/, 1) as [string, ...string[]])[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 */\nexport function getSanitizedUrlString(url: PartialURL): string {\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 */\nexport function stripDataUrlContent(url: string, includeDataPrefix: boolean = true): string {\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"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/vercelWaitUntil.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/vercelWaitUntil.js new file mode 100644 index 0000000..4691241 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/vercelWaitUntil.js @@ -0,0 +1,26 @@ +import { GLOBAL_OBJ } from './worldwide.js'; + +/** + * Function that delays closing of a Vercel lambda until the provided promise is resolved. + * + * Vendored from https://www.npmjs.com/package/@vercel/functions + */ +function vercelWaitUntil(task) { + // We only flush manually in Vercel Edge runtime + // In Node runtime, we use process.on('SIGTERM') instead + if (typeof EdgeRuntime !== 'string') { + return; + } + const vercelRequestContextGlobal = + // @ts-expect-error This is not typed + GLOBAL_OBJ[Symbol.for('@vercel/request-context')]; + + const ctx = vercelRequestContextGlobal?.get?.(); + + if (ctx?.waitUntil) { + ctx.waitUntil(task); + } +} + +export { vercelWaitUntil }; +//# sourceMappingURL=vercelWaitUntil.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/vercelWaitUntil.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/vercelWaitUntil.js.map new file mode 100644 index 0000000..19f6476 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/vercelWaitUntil.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vercelWaitUntil.js","sources":["../../../src/utils/vercelWaitUntil.ts"],"sourcesContent":["import { GLOBAL_OBJ } from './worldwide';\n\ndeclare const EdgeRuntime: string | undefined;\n\ninterface VercelRequestContextGlobal {\n get?():\n | {\n waitUntil?: (task: Promise) => void;\n }\n | undefined;\n}\n\n/**\n * Function that delays closing of a Vercel lambda until the provided promise is resolved.\n *\n * Vendored from https://www.npmjs.com/package/@vercel/functions\n */\nexport function vercelWaitUntil(task: Promise): void {\n // We only flush manually in Vercel Edge runtime\n // In Node runtime, we use process.on('SIGTERM') instead\n if (typeof EdgeRuntime !== 'string') {\n return;\n }\n const vercelRequestContextGlobal: VercelRequestContextGlobal | undefined =\n // @ts-expect-error This is not typed\n GLOBAL_OBJ[Symbol.for('@vercel/request-context')];\n\n const ctx = vercelRequestContextGlobal?.get?.();\n\n if (ctx?.waitUntil) {\n ctx.waitUntil(task);\n }\n}\n"],"names":[],"mappings":";;AAYA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,IAAI,EAA0B;AAC9D;AACA;AACA,EAAE,IAAI,OAAO,WAAA,KAAgB,QAAQ,EAAE;AACvC,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,0BAA0B;AAClC;AACA,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;;AAErD,EAAE,MAAM,MAAM,0BAA0B,EAAE,GAAG,IAAI;;AAEjD,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE;AACtB,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACvB,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/version.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/version.js new file mode 100644 index 0000000..869c3d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/version.js @@ -0,0 +1,6 @@ +// This is a magic string replaced by rollup + +const SDK_VERSION = "10.37.0" ; + +export { SDK_VERSION }; +//# sourceMappingURL=version.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/version.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/version.js.map new file mode 100644 index 0000000..c544382 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"version.js","sources":["../../../src/utils/version.ts"],"sourcesContent":["// This is a magic string replaced by rollup\ndeclare const __SENTRY_SDK_VERSION__: string;\n\nexport const SDK_VERSION = typeof __SENTRY_SDK_VERSION__ === 'string' ? __SENTRY_SDK_VERSION__ : '0.0.0-unknown.0';\n"],"names":[],"mappings":"AAAA;;AAGO,MAAM,WAAA,GAA2D,SAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/worldwide.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/worldwide.js new file mode 100644 index 0000000..03c8431 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/worldwide.js @@ -0,0 +1,7 @@ +/** Internal global with common properties and Sentry extensions */ + +/** Get's the global object for the current JavaScript runtime */ +const GLOBAL_OBJ = globalThis ; + +export { GLOBAL_OBJ }; +//# sourceMappingURL=worldwide.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/worldwide.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/worldwide.js.map new file mode 100644 index 0000000..a33a107 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/utils/worldwide.js.map @@ -0,0 +1 @@ +{"version":3,"file":"worldwide.js","sources":["../../../src/utils/worldwide.ts"],"sourcesContent":["/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the `debug` singleton, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Carrier } from '../carrier';\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport type InternalGlobal = {\n navigator?: { userAgent?: string; maxTouchPoints?: number };\n console: Console;\n PerformanceObserver?: any;\n Sentry?: any;\n onerror?: {\n (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n __SENTRY_INSTRUMENTED__?: true;\n };\n onunhandledrejection?: {\n (event: unknown): boolean;\n __SENTRY_INSTRUMENTED__?: true;\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record;\n /**\n * Native debug IDs implementation (e.g., from Vercel).\n * This uses the same format as _sentryDebugIds but with a different global name.\n * Keys are `error.stack` strings, values are debug IDs.\n */\n _debugIds?: Record;\n /**\n * Raw module metadata that is injected by bundler plugins.\n *\n * Keys are `error.stack` strings, values are the metadata.\n */\n _sentryModuleMetadata?: Record;\n _sentryEsmLoaderHookRegistered?: boolean;\n _sentryInjectLoaderHookRegister?: () => void;\n _sentryInjectLoaderHookRegistered?: boolean;\n} & Carrier;\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ = globalThis as unknown as InternalGlobal;\n"],"names":[],"mappings":"AAiBA;;AA2CA;AACO,MAAM,UAAA,GAAa,UAAA;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/escapeStringForRegex.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/escapeStringForRegex.js new file mode 100644 index 0000000..64ff23a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/escapeStringForRegex.js @@ -0,0 +1,37 @@ +// Based on https://github.com/sindresorhus/escape-string-regexp but with modifications to: +// a) reduce the size by skipping the runtime type - checking +// b) ensure it gets down - compiled for old versions of Node(the published package only supports Node 14+). +// +// MIT License +// +// Copyright (c) Sindre Sorhus (https://sindresorhus.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +// documentation files(the "Software"), to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and +// to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of +// the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. + +/** + * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to + * `new RegExp()`. + * + * @param regexString The string to escape + * @returns An version of the string with all special regex characters escaped + */ +function escapeStringForRegex(regexString) { + // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems + // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20. + return regexString.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d'); +} + +export { escapeStringForRegex }; +//# sourceMappingURL=escapeStringForRegex.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/escapeStringForRegex.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/escapeStringForRegex.js.map new file mode 100644 index 0000000..342787b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/escapeStringForRegex.js.map @@ -0,0 +1 @@ +{"version":3,"file":"escapeStringForRegex.js","sources":["../../../src/vendor/escapeStringForRegex.ts"],"sourcesContent":["// Based on https://github.com/sindresorhus/escape-string-regexp but with modifications to:\n// a) reduce the size by skipping the runtime type - checking\n// b) ensure it gets down - compiled for old versions of Node(the published package only supports Node 14+).\n//\n// MIT License\n//\n// Copyright (c) Sindre Sorhus (https://sindresorhus.com)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n// documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation\n// the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and\n// to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n// the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n// THE WARRANTIES OF MERCHANTABILITY, 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 LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,WAAW,EAAkB;AAClE;AACA;AACA,EAAE,OAAO,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AAClF;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/getIpAddress.js b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/getIpAddress.js new file mode 100644 index 0000000..16ec268 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/getIpAddress.js @@ -0,0 +1,134 @@ +// Vendored / modified from @sergiodxa/remix-utils + +// https://github.com/sergiodxa/remix-utils/blob/02af80e12829a53696bfa8f3c2363975cf59f55e/src/server/get-client-ip-address.ts +// MIT License + +// Copyright (c) 2021 Sergio Xalambrí + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// The headers to check, in priority order +const ipHeaderNames = [ + 'X-Client-IP', + 'X-Forwarded-For', + 'Fly-Client-IP', + 'CF-Connecting-IP', + 'Fastly-Client-Ip', + 'True-Client-Ip', + 'X-Real-IP', + 'X-Cluster-Client-IP', + 'X-Forwarded', + 'Forwarded-For', + 'Forwarded', + 'X-Vercel-Forwarded-For', +]; + +/** + * Get the IP address of the client sending a request. + * + * It receives a Request headers object and use it to get the + * IP address from one of the following headers in order. + * + * If the IP address is valid, it will be returned. Otherwise, null will be + * returned. + * + * If the header values contains more than one IP address, the first valid one + * will be returned. + */ +function getClientIPAddress(headers) { + // Build a map of lowercase header names to their values for case-insensitive lookup + // This is needed because headers from different sources may have different casings + const lowerCaseHeaders = {}; + + for (const key of Object.keys(headers)) { + lowerCaseHeaders[key.toLowerCase()] = headers[key]; + } + + // This will end up being Array because of the various possible values a header + // can take + const headerValues = ipHeaderNames.map((headerName) => { + const rawValue = lowerCaseHeaders[headerName.toLowerCase()]; + const value = Array.isArray(rawValue) ? rawValue.join(';') : rawValue; + + if (headerName === 'Forwarded') { + return parseForwardedHeader(value); + } + + return value?.split(',').map((v) => v.trim()); + }); + + // Flatten the array and filter out any falsy entries + const flattenedHeaderValues = headerValues.reduce((acc, val) => { + if (!val) { + return acc; + } + + return acc.concat(val); + }, []); + + // Find the first value which is a valid IP address, if any + const ipAddress = flattenedHeaderValues.find(ip => ip !== null && isIP(ip)); + + return ipAddress || null; +} + +function parseForwardedHeader(value) { + if (!value) { + return null; + } + + for (const part of value.split(';')) { + if (part.startsWith('for=')) { + return part.slice(4); + } + } + + return null; +} + +// +/** + * Custom method instead of importing this from `net` package, as this only exists in node + * Accepts: + * 127.0.0.1 + * 192.168.1.1 + * 192.168.1.255 + * 255.255.255.255 + * 10.1.1.1 + * 0.0.0.0 + * 2b01:cb19:8350:ed00:d0dd:fa5b:de31:8be5 + * + * Rejects: + * 1.1.1.01 + * 30.168.1.255.1 + * 127.1 + * 192.168.1.256 + * -1.2.3.4 + * 1.1.1.1. + * 3...3 + * 192.168.1.099 + */ +function isIP(str) { + const regex = + /(?:^(?: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,})?$)/; + return regex.test(str); +} + +export { getClientIPAddress, ipHeaderNames }; +//# sourceMappingURL=getIpAddress.js.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/getIpAddress.js.map b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/getIpAddress.js.map new file mode 100644 index 0000000..dd683d6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/esm/vendor/getIpAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getIpAddress.js","sources":["../../../src/vendor/getIpAddress.ts"],"sourcesContent":["// 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\nexport const 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 */\nexport function getClientIPAddress(headers: { [key: string]: string | string[] | undefined }): string | null {\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: { [key: string]: string | string[] | undefined } = {};\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: string) => {\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: string) => v.trim());\n });\n\n // Flatten the array and filter out any falsy entries\n const flattenedHeaderValues = headerValues.reduce((acc: string[], 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: string | null | undefined): string | null {\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: string): boolean {\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"],"names":[],"mappings":"AAAA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACO,MAAM,gBAAgB;AAC7B,EAAE,aAAa;AACf,EAAE,iBAAiB;AACnB,EAAE,eAAe;AACjB,EAAE,kBAAkB;AACpB,EAAE,kBAAkB;AACpB,EAAE,gBAAgB;AAClB,EAAE,WAAW;AACb,EAAE,qBAAqB;AACvB,EAAE,aAAa;AACf,EAAE,eAAe;AACjB,EAAE,WAAW;AACb,EAAE,wBAAwB;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,OAAO,EAAmE;AAC7G;AACA;AACA,EAAE,MAAM,gBAAgB,GAAqD,EAAE;;AAE/E,EAAE,KAAK,MAAM,GAAA,IAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC1C,IAAI,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA,GAAI,OAAO,CAAC,GAAG,CAAC;AACtD,EAAE;;AAEF;AACA;AACA,EAAE,MAAM,YAAA,GAAe,aAAa,CAAC,GAAG,CAAC,CAAC,UAAU,KAAa;AACjE,IAAI,MAAM,QAAA,GAAW,gBAAgB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAC/D,IAAI,MAAM,KAAA,GAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAA,GAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAA,GAAI,QAAQ;;AAEzE,IAAI,IAAI,UAAA,KAAe,WAAW,EAAE;AACpC,MAAM,OAAO,oBAAoB,CAAC,KAAK,CAAC;AACxC,IAAI;;AAEJ,IAAI,OAAO,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAa,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,EAAE,CAAC,CAAC;;AAEJ;AACA,EAAE,MAAM,qBAAA,GAAwB,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAY,GAAG,KAAK;AAC5E,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,OAAO,GAAG;AAChB,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1B,EAAE,CAAC,EAAE,EAAE,CAAC;;AAER;AACA,EAAE,MAAM,SAAA,GAAY,qBAAqB,CAAC,IAAI,CAAC,EAAA,IAAM,EAAA,KAAO,IAAA,IAAQ,IAAI,CAAC,EAAE,CAAC,CAAC;;AAE7E,EAAE,OAAO,SAAA,IAAa,IAAI;AAC1B;;AAEA,SAAS,oBAAoB,CAAC,KAAK,EAA4C;AAC/E,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF,EAAE,KAAK,MAAM,IAAA,IAAQ,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACvC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACjC,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1B,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,GAAG,EAAmB;AACpC,EAAE,MAAM,KAAA;AACR,IAAI,muCAAmuC;AACvuC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB;;;;"} \ No newline at end of file diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/api.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/api.d.ts new file mode 100644 index 0000000..34bf5dc --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/api.d.ts @@ -0,0 +1,12 @@ +import { ReportDialogOptions } from './report-dialog'; +import { DsnComponents, DsnLike } from './types-hoist/dsn'; +import { SdkInfo } from './types-hoist/sdkinfo'; +/** + * Returns the envelope endpoint URL with auth in the query string. + * + * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests. + */ +export declare function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string, sdkInfo?: SdkInfo): string; +/** Returns the url to the report dialog endpoint. */ +export declare function getReportDialogEndpoint(dsnLike: DsnLike, dialogOptions: ReportDialogOptions): string; +//# sourceMappingURL=api.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/asyncContext/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/asyncContext/index.d.ts new file mode 100644 index 0000000..a4c53f0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/asyncContext/index.d.ts @@ -0,0 +1,14 @@ +import { Carrier } from './../carrier'; +import { AsyncContextStrategy } from './types'; +/** + * @private Private API with no semver guarantees! + * + * Sets the global async context strategy + */ +export declare function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void; +/** + * Get the current async context strategy. + * If none has been setup, the default will be used. + */ +export declare function getAsyncContextStrategy(carrier: Carrier): AsyncContextStrategy; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/asyncContext/stackStrategy.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/asyncContext/stackStrategy.d.ts new file mode 100644 index 0000000..4e6ddc5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/asyncContext/stackStrategy.d.ts @@ -0,0 +1,49 @@ +import { Client } from '../client'; +import { Scope } from '../scope'; +import { AsyncContextStrategy } from './types'; +interface Layer { + client?: Client; + scope: Scope; +} +/** + * This is an object that holds a stack of scopes. + */ +export declare class AsyncContextStack { + private readonly _stack; + private _isolationScope; + constructor(scope?: Scope, isolationScope?: Scope); + /** + * Fork a scope for the stack. + */ + withScope(callback: (scope: Scope) => T): T; + /** + * Get the client of the stack. + */ + getClient(): C | undefined; + /** + * Returns the scope of the top stack. + */ + getScope(): Scope; + /** + * Get the isolation scope for the stack. + */ + getIsolationScope(): Scope; + /** + * Returns the topmost scope layer in the order domain > local > process. + */ + getStackTop(): Layer; + /** + * Push a scope to the stack. + */ + private _pushScope; + /** + * Pop a scope from the stack. + */ + private _popScope; +} +/** + * Get the stack-based async context strategy. + */ +export declare function getStackAsyncContextStrategy(): AsyncContextStrategy; +export {}; +//# sourceMappingURL=stackStrategy.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/asyncContext/types.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/asyncContext/types.d.ts new file mode 100644 index 0000000..1cc1b93 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/asyncContext/types.d.ts @@ -0,0 +1,56 @@ +import { Scope } from '../scope'; +import { getTraceData } from '../utils/traceData'; +import { continueTrace, startInactiveSpan, startSpan, startSpanManual, suppressTracing, withActiveSpan } from './../tracing/trace'; +import { getActiveSpan } from './../utils/spanUtils'; +/** + * @private Private API with no semver guarantees! + * + * Strategy used to track async context. + */ +export interface AsyncContextStrategy { + /** + * Fork the isolation scope inside of the provided callback. + */ + withIsolationScope: (callback: (isolationScope: Scope) => T) => T; + /** + * Fork the current scope inside of the provided callback. + */ + withScope: (callback: (isolationScope: Scope) => T) => T; + /** + * Set the provided scope as the current scope inside of the provided callback. + */ + withSetScope: (scope: Scope, callback: (scope: Scope) => T) => T; + /** + * Set the provided isolation as the current isolation scope inside of the provided callback. + */ + withSetIsolationScope: (isolationScope: Scope, callback: (isolationScope: Scope) => T) => T; + /** + * Get the currently active scope. + */ + getCurrentScope: () => Scope; + /** + * Get the currently active isolation scope. + */ + getIsolationScope: () => Scope; + /** Start an active span. */ + startSpan?: typeof startSpan; + /** Start an inactive span. */ + startInactiveSpan?: typeof startInactiveSpan; + /** Start an active manual span. */ + startSpanManual?: typeof startSpanManual; + /** Get the currently active span. */ + getActiveSpan?: typeof getActiveSpan; + /** Make a span the active span in the context of the callback. */ + withActiveSpan?: typeof withActiveSpan; + /** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */ + suppressTracing?: typeof suppressTracing; + /** Get trace data as serialized string values for propagation via `sentry-trace` and `baggage`. */ + getTraceData?: typeof getTraceData; + /** + * Continue a trace from `sentry-trace` and `baggage` values. + * These values can be obtained from incoming request headers, or in the browser from `` + * and `` HTML tags. + */ + continueTrace?: typeof continueTrace; +} +//# sourceMappingURL=types.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/attributes.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/attributes.d.ts new file mode 100644 index 0000000..6c76ee1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/attributes.d.ts @@ -0,0 +1,70 @@ +import { DurationUnit, FractionUnit, InformationUnit } from './types-hoist/measurement'; +export type RawAttributes = T & ValidatedAttributes; +export type RawAttribute = T extends { + value: any; +} | { + unit: any; +} ? AttributeObject : T; +export type Attributes = Record; +export type AttributeValueType = string | number | boolean | Array | Array | Array; +type AttributeTypeMap = { + string: string; + integer: number; + double: number; + boolean: boolean; + 'string[]': Array; + 'integer[]': Array; + 'double[]': Array; + 'boolean[]': Array; +}; +type AttributeUnion = { + [K in keyof AttributeTypeMap]: { + value: AttributeTypeMap[K]; + type: K; + }; +}[keyof AttributeTypeMap]; +export type TypedAttributeValue = AttributeUnion & { + unit?: AttributeUnit; +}; +export type AttributeObject = { + value: unknown; + unit?: AttributeUnit; +}; +type AttributeUnit = DurationUnit | InformationUnit | FractionUnit; +export type ValidatedAttributes = { + [K in keyof T]: T[K] extends { + value: any; + } | { + unit: any; + } ? AttributeObject : unknown; +}; +/** + * Type-guard: The attribute object has the shape the official attribute object (value, type, unit). + * https://develop.sentry.dev/sdk/telemetry/scopes/#setting-attributes + */ +export declare function isAttributeObject(maybeObj: unknown): maybeObj is AttributeObject; +/** + * Converts an attribute value to a typed attribute value. + * + * For now, we intentionally only support primitive values and attribute objects with primitive values. + * If @param useFallback is true, we stringify non-primitive values to a string attribute value. Otherwise + * we return `undefined` for unsupported values. + * + * @param value - The value of the passed attribute. + * @param useFallback - If true, unsupported values will be stringified to a string attribute value. + * Defaults to false. In this case, `undefined` is returned for unsupported values. + * @returns The typed attribute. + */ +export declare function attributeValueToTypedAttributeValue(rawValue: unknown, useFallback?: boolean | 'skip-undefined'): TypedAttributeValue | void; +/** + * Serializes raw attributes to typed attributes as expected in our envelopes. + * + * @param attributes The raw attributes to serialize. + * @param fallback If true, unsupported values will be stringified to a string attribute value. + * Defaults to false. In this case, `undefined` is returned for unsupported values. + * + * @returns The serialized attributes. + */ +export declare function serializeAttributes(attributes: RawAttributes | undefined, fallback?: boolean | 'skip-undefined'): Attributes; +export {}; +//# sourceMappingURL=attributes.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/breadcrumbs.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/breadcrumbs.d.ts new file mode 100644 index 0000000..7d68b72 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/breadcrumbs.d.ts @@ -0,0 +1,9 @@ +import { Breadcrumb, BreadcrumbHint } from './types-hoist/breadcrumb'; +/** + * Records a new breadcrumb which will be attached to future events. + * + * Breadcrumbs will be added to subsequent events to provide more context on + * user's actions prior to an error or crash. + */ +export declare function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void; +//# sourceMappingURL=breadcrumbs.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/build-time-plugins/buildTimeOptionsBase.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/build-time-plugins/buildTimeOptionsBase.d.ts new file mode 100644 index 0000000..c2d4101 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/build-time-plugins/buildTimeOptionsBase.d.ts @@ -0,0 +1,425 @@ +/** + * Sentry-internal base interface for build-time options used in Sentry's meta-framework SDKs (e.g., Next.js, Nuxt, SvelteKit). + * + * SDKs should extend this interface to add framework-specific configurations. To include bundler-specific + * options, combine this type with one of the `Unstable[Bundler]PluginOptions` types, such as + * `UnstableVitePluginOptions` or `UnstableWebpackPluginOptions`. + * + * If an option from this base interface doesn't apply to an SDK, use the `Omit` utility type to exclude it. + * + * @example + * ```typescript + * import type { BuildTimeOptionsBase, UnstableVitePluginOptions } from '@sentry/core'; + * import type { SentryVitePluginOptions } from '@sentry/vite-plugin'; + * + * // Example of how a framework SDK would define its build-time options + * type MyFrameworkBuildOptions = + * BuildTimeOptionsBase & + * UnstableVitePluginOptions & { + * // Framework-specific options can be added here + * myFrameworkSpecificOption?: boolean; + * }; + * ``` + * + * @internal Only meant for Sentry-internal SDK usage. + * @hidden + */ +export interface BuildTimeOptionsBase { + /** + * The slug of the Sentry organization associated with the app. + * + * This value can also be specified via the `SENTRY_ORG` environment variable. + */ + org?: string; + /** + * The slug of the Sentry project associated with the app. + * + * This value can also be specified via the `SENTRY_PROJECT` environment variable. + */ + project?: string; + /** + * The authentication token to use for all communication with Sentry. + * Can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/. + * + * This value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable. + * + * @see https://docs.sentry.io/product/accounts/auth-tokens/#organization-auth-tokens + */ + authToken?: string; + /** + * The base URL of your Sentry instance. Use this if you are using a self-hosted + * or Sentry instance other than sentry.io. + * + * This value can also be set via the `SENTRY_URL` environment variable. + * + * @default "https://sentry.io" + */ + sentryUrl?: string; + /** + * Additional headers to send with every outgoing request to Sentry. + */ + headers?: Record; + /** + * If this flag is `true`, internal plugin errors and performance data will be sent to Sentry. + * It will not collect any sensitive or user-specific data. + * + * At Sentry, we like to use Sentry ourselves to deliver faster and more stable products. + * We're very careful of what we're sending. We won't collect anything other than error + * and high-level performance data. We will never collect your code or any details of the + * projects in which you're using this plugin. + * + * @default true + */ + telemetry?: boolean; + /** + * Suppresses all Sentry SDK build logs. + * + * @default false + */ + silent?: boolean; + /** + * When an error occurs during release creation or sourcemaps upload, the plugin will call this function. + * + * By default, the plugin will simply throw an error, thereby stopping the bundling process. + * If an `errorHandler` callback is provided, compilation will continue unless an error is + * thrown in the provided callback. + * + * To allow compilation to continue but still emit a warning, set this option to the following: + * + * ```js + * (err) => { + * console.warn(err); + * } + * ``` + */ + errorHandler?: (err: Error) => void; + /** + * Enable debug information logs about the SDK during build-time. + * Enabling this will give you, for example, logs about source maps. + * + * @default false + */ + debug?: boolean; + /** + * Options related to source maps upload and processing. + */ + sourcemaps?: SourceMapsOptions; + /** + * Options related to managing the Sentry releases for a build. + * + * More info: https://docs.sentry.io/product/releases/ + */ + release?: ReleaseOptions; + /** + * Options for bundle size optimizations by excluding certain features of the Sentry SDK. + */ + bundleSizeOptimizations?: BundleSizeOptimizationsOptions; +} +/** + * Utility type for adding Vite plugin options to build-time configuration. + * Use this type to extend your build-time options with Vite-specific plugin configurations. + * + * @template PluginOptionsType - The type of Vite plugin options to include + * + * @example + * ```typescript + * type SomeSDKsBuildOptions = BuildTimeOptionsBase & UnstableVitePluginOptions; + * ``` + * + * @internal Only meant for Sentry-internal SDK usage. + * @hidden + */ +export type UnstableVitePluginOptions = { + /** + * Options to be passed directly to the Sentry Vite Plugin (`@sentry/vite-plugin`) that ships with the Sentry SDK. + * You can use this option to override any options the SDK passes to the Vite plugin. + * + * Please note that this option is unstable and may change in a breaking way in any release. + */ + unstable_sentryVitePluginOptions?: PluginOptionsType; +}; +/** + * Utility type for adding Webpack plugin options to build-time configuration. + * Use this type to extend your build-time options with Webpack-specific plugin configurations. + * + * @template PluginOptionsType - The type of Webpack plugin options to include + * + * @example + * ```typescript + * type SomeSDKsBuildOptions = BuildTimeOptionsBase & UnstableWebpackPluginOptions; + * ``` + * + * @internal Only meant for Sentry-internal SDK usage. + * @hidden + */ +export type UnstableWebpackPluginOptions = { + /** + * Options to be passed directly to the Sentry Webpack Plugin (`@sentry/webpack-plugin`) that ships with the Sentry SDK. + * You can use this option to override any options the SDK passes to the Webpack plugin. + * + * Please note that this option is unstable and may change in a breaking way in any release. + */ + unstable_sentryWebpackPluginOptions?: PluginOptionsType; +}; +/** + * Utility type for adding Rollup plugin options to build-time configuration. + * Use this type to extend your build-time options with Rollup-specific plugin configurations. + * + * @template PluginOptionsType - The type of Rollup plugin options to include + * + * @example + * ```typescript + * type SomeSDKsBuildOptions = BuildTimeOptionsBase & UnstableRollupPluginOptions; + * ``` + * + * @internal Only meant for Sentry-internal SDK usage. + * @hidden + */ +export type UnstableRollupPluginOptions = { + /** + * Options to be passed directly to the Sentry Rollup Plugin (`@sentry/rollup-plugin`) that ships with the Sentry SDK. + * You can use this option to override any options the SDK passes to the Rollup plugin. + * + * Please note that this option is unstable and may change in a breaking way in any release. + */ + unstable_sentryRollupPluginOptions?: PluginOptionsType; +}; +interface SourceMapsOptions { + /** + * If this flag is `true`, any functionality related to source maps will be disabled. This includes the automatic upload of source maps. + * + * By default (`false`), the plugin automatically uploads source maps during a production build if a Sentry auth token is detected. + * + * If set to `"disable-upload"`, the plugin will not upload source maps to Sentry, but will inject debug IDs into the build artifacts. + * This is useful if you want to manually upload source maps to Sentry at a later point in time. + * + * @default false + */ + disable?: boolean | 'disable-upload'; + /** + * A glob or an array of globs that specify the build artifacts and source maps that will be uploaded to Sentry. + * + * The globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer + * + * If this option is not specified, the plugin will try to upload all JavaScript files and source map files that are created during build. + * Use the `debug` option to print information about which files end up being uploaded. + * + */ + assets?: string | string[]; + /** + * A glob or an array of globs that specifies which build artifacts should not be uploaded to Sentry. + * + * The globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer + * + * Use the `debug` option to print information about which files end up being uploaded. + * + * @default [] + */ + ignore?: string | string[]; + /** + * A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact + * upload to Sentry has been completed. + * + * The globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer + */ + filesToDeleteAfterUpload?: string | Array; +} +type AutoSetCommitsOptions = { + /** + * Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` + * and `previousCommit` as described in the option's documentation. + * + * If you set this to `true`, manually specified `commit` and `previousCommit` + * options will be overridden. It is best to not specify them at all if you + * set this option to `true`. + */ + auto: true; + repo?: undefined; + commit?: undefined; +}; +type ManualSetCommitsOptions = { + auto?: false | undefined; + /** + * The full repo name as defined in Sentry. + * + * Required if the `auto` option is not set to `true`. + */ + repo: string; + /** + * The current (last) commit in the release. + * + * Required if the `auto` option is not set to `true`. + */ + commit: string; +}; +interface ReleaseOptions { + /** + * Unique identifier for the release you want to create. + * + * This value can also be specified via the `SENTRY_RELEASE` environment variable. + * + * Defaults to automatically detecting a value for your environment. + * This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA + * (the latter requires access to git CLI and for the root directory to be a valid repository). + * + * If no `name` is provided and the plugin can't automatically detect one, no release will be created. + */ + name?: string; + /** + * Whether the plugin should inject release information into the build for the SDK to pick it up when sending events (recommended). + * + * @default true + */ + inject?: boolean; + /** + * Whether to create a new release. + * + * Note that a release may still appear in Sentry even if this value is `false`. Any Sentry event that has a release value attached + * will automatically create a release (for example, via the `inject` option). + * + * @default true + */ + create?: boolean; + /** + * Whether to automatically finalize the release. The release is finalized by adding an end timestamp after the build ends. + * + * @default true + */ + finalize?: boolean; + /** + * Unique distribution identifier for the release. Used to further segment the release. + * + * Usually your build number. + */ + dist?: string; + /** + * Version control system (VCS) remote name. + * + * This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. + * + * @default "origin" + */ + vcsRemote?: string; + /** + * Configuration for associating the release with its commits in Sentry. + * + * Set to `false` to disable commit association. + * + * @default { auto: true } + */ + setCommits?: false | ((AutoSetCommitsOptions | ManualSetCommitsOptions) & { + /** + * The commit before the beginning of this release (in other words, + * the last commit of the previous release). + * + * Defaults to the last commit of the previous release in Sentry. + * + * If there was no previous release, the last 10 commits will be used. + */ + previousCommit?: string; + /** + * If the flag is to `true` and the previous release commit was not found + * in the repository, the plugin creates a release with the default commits + * count instead of failing the command. + * + * @default false + */ + ignoreMissing?: boolean; + /** + * If this flag is set, the setCommits step will not fail and just exit + * silently if no new commits for a given release have been found. + * + * @default false + */ + ignoreEmpty?: boolean; + }); + /** + * Configuration for adding deployment information to the release in Sentry. + * + * Set to `false` to disable automatic deployment detection and creation. + */ + deploy?: false | { + /** + * Environment for this release. Values that make sense here would + * be `production` or `staging`. + */ + env: string; + /** + * Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. + */ + started?: number | string; + /** + * Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. + */ + finished?: number | string; + /** + * Deployment duration (in seconds). Can be used instead of started and finished. + */ + time?: number; + /** + * Human-readable name for the deployment. + */ + name?: string; + /** + * URL that points to the deployment. + */ + url?: string; + }; +} +interface BundleSizeOptimizationsOptions { + /** + * Exclude debug statements from the bundle, thus disabling features like the SDK's `debug` option. + * + * If set to `true`, the Sentry SDK will attempt to tree-shake (remove) any debugging code within itself during the build. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * @default false + */ + excludeDebugStatements?: boolean; + /** + * Exclude tracing functionality from the bundle, thus disabling features like performance monitoring. + * + * If set to `true`, the Sentry SDK will attempt to tree-shake (remove) code within itself that is related to tracing and performance monitoring. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * **Notice:** Do not enable this when you're using any performance monitoring-related SDK features (e.g. `Sentry.startTransaction()`). + + * @default false + */ + excludeTracing?: boolean; + /** + * Exclude Replay Shadow DOM functionality from the bundle. + * + * If set to `true`, the Sentry SDK will attempt to tree-shake (remove) code related to the SDK's Session Replay Shadow DOM recording functionality. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * This option is safe to be used when you do not want to capture any Shadow DOM activity via Sentry Session Replay. + * + * @default false + */ + excludeReplayShadowDom?: boolean; + /** + * Exclude Replay iFrame functionality from the bundle. + * + * If set to `true`, the Sentry SDK will attempt to tree-shake (remove) code related to the SDK's Session Replay `iframe` recording functionality. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * You can safely do this when you do not want to capture any `iframe` activity via Sentry Session Replay. + * + * @default false + */ + excludeReplayIframe?: boolean; + /** + * Exclude Replay worker functionality from the bundle. + * + * If set to `true`, the Sentry SDK will attempt to tree-shake (remove) code related to the SDK's Session Replay's Compression Web Worker. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * **Notice:** You should only use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the `workerUrl` option. + * + * @default false + */ + excludeReplayWorker?: boolean; +} +export {}; +//# sourceMappingURL=buildTimeOptionsBase.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/carrier.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/carrier.d.ts new file mode 100644 index 0000000..67fc328 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/carrier.d.ts @@ -0,0 +1,64 @@ +import { AsyncContextStack } from './asyncContext/stackStrategy'; +import { AsyncContextStrategy } from './asyncContext/types'; +import { Client } from './client'; +import { Scope } from './scope'; +import { SerializedLog } from './types-hoist/log'; +import { SerializedMetric } from './types-hoist/metric'; +/** + * An object that contains globally accessible properties and maintains a scope stack. + * @hidden + */ +export interface Carrier { + __SENTRY__?: VersionedCarrier; +} +type VersionedCarrier = { + version?: string; +} & Record, SentryCarrier>; +export interface SentryCarrier { + acs?: AsyncContextStrategy; + stack?: AsyncContextStack; + globalScope?: Scope; + defaultIsolationScope?: Scope; + defaultCurrentScope?: Scope; + loggerSettings?: { + enabled: boolean; + }; + /** + * A map of Sentry clients to their log buffers. + * This is used to store logs that are sent to Sentry. + */ + clientToLogBufferMap?: WeakMap>; + /** + * A map of Sentry clients to their metric buffers. + * This is used to store metrics that are sent to Sentry. + */ + clientToMetricBufferMap?: WeakMap>; + /** Overwrites TextEncoder used in `@sentry/core`, need for `react-native@0.73` and older */ + encodePolyfill?: (input: string) => Uint8Array; + /** Overwrites TextDecoder used in `@sentry/core`, need for `react-native@0.73` and older */ + decodePolyfill?: (input: Uint8Array) => string; +} +/** + * Returns the global shim registry. + * + * FIXME: This function is problematic, because despite always returning a valid Carrier, + * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check + * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there. + **/ +export declare function getMainCarrier(): Carrier; +/** Will either get the existing sentry carrier, or create a new one. */ +export declare function getSentryCarrier(carrier: Carrier): SentryCarrier; +/** + * Returns a global singleton contained in the global `__SENTRY__[]` object. + * + * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory + * function and added to the `__SENTRY__` object. + * + * @param name name of the global singleton on __SENTRY__ + * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__` + * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value + * @returns the singleton + */ +export declare function getGlobalSingleton(name: Prop, creator: () => NonNullable, obj?: import("./utils/worldwide").InternalGlobal): NonNullable; +export {}; +//# sourceMappingURL=carrier.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/checkin.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/checkin.d.ts new file mode 100644 index 0000000..506c879 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/checkin.d.ts @@ -0,0 +1,9 @@ +import { SerializedCheckIn } from './types-hoist/checkin'; +import { DsnComponents } from './types-hoist/dsn'; +import { CheckInEnvelope, DynamicSamplingContext } from './types-hoist/envelope'; +import { SdkMetadata } from './types-hoist/sdkmetadata'; +/** + * Create envelope from check in item. + */ +export declare function createCheckInEnvelope(checkIn: SerializedCheckIn, dynamicSamplingContext?: Partial, metadata?: SdkMetadata, tunnel?: string, dsn?: DsnComponents): CheckInEnvelope; +//# sourceMappingURL=checkin.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/client.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/client.d.ts new file mode 100644 index 0000000..c1204a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/client.d.ts @@ -0,0 +1,624 @@ +import { IntegrationIndex } from './integration'; +import { Scope } from './scope'; +import { Breadcrumb, BreadcrumbHint, FetchBreadcrumbHint, XhrBreadcrumbHint } from './types-hoist/breadcrumb'; +import { CheckIn, MonitorConfig } from './types-hoist/checkin'; +import { EventDropReason, Outcome } from './types-hoist/clientreport'; +import { DataCategory } from './types-hoist/datacategory'; +import { DsnComponents } from './types-hoist/dsn'; +import { DynamicSamplingContext, Envelope } from './types-hoist/envelope'; +import { Event, EventHint } from './types-hoist/event'; +import { EventProcessor } from './types-hoist/eventprocessor'; +import { FeedbackEvent } from './types-hoist/feedback'; +import { Integration } from './types-hoist/integration'; +import { Log } from './types-hoist/log'; +import { Metric } from './types-hoist/metric'; +import { ClientOptions } from './types-hoist/options'; +import { ParameterizedString } from './types-hoist/parameterize'; +import { RequestEventData } from './types-hoist/request'; +import { SdkMetadata } from './types-hoist/sdkmetadata'; +import { Session, SessionAggregates } from './types-hoist/session'; +import { SeverityLevel } from './types-hoist/severity'; +import { Span, SpanAttributes, SpanContextData } from './types-hoist/span'; +import { StartSpanOptions } from './types-hoist/startSpanOptions'; +import { Transport, TransportMakeRequestResponse } from './types-hoist/transport'; +/** + * Base implementation for all JavaScript SDK clients. + * + * Call the constructor with the corresponding options + * specific to the client subclass. To access these options later, use + * {@link Client.getOptions}. + * + * If a Dsn is specified in the options, it will be parsed and stored. Use + * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is + * invalid, the constructor will throw a {@link SentryException}. Note that + * without a valid Dsn, the SDK will not send any events to Sentry. + * + * Before sending an event, it is passed through + * {@link Client._prepareEvent} to add SDK information and scope data + * (breadcrumbs and context). To add more custom information, override this + * method and extend the resulting prepared event. + * + * To issue automatically created events (e.g. via instrumentation), use + * {@link Client.captureEvent}. It will prepare the event and pass it through + * the callback lifecycle. To issue auto-breadcrumbs, use + * {@link Client.addBreadcrumb}. + * + * @example + * class NodeClient extends Client { + * public constructor(options: NodeOptions) { + * super(options); + * } + * + * // ... + * } + */ +export declare abstract class Client { + /** Options passed to the SDK. */ + protected readonly _options: O; + /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */ + protected readonly _dsn?: DsnComponents; + protected readonly _transport?: Transport; + /** Array of set up integrations. */ + protected _integrations: IntegrationIndex; + /** Number of calls being processed */ + protected _numProcessing: number; + protected _eventProcessors: EventProcessor[]; + /** Holds flushable */ + private _outcomes; + private _hooks; + private _promiseBuffer; + /** + * Initializes this client instance. + * + * @param options Options for the client. + */ + protected constructor(options: O); + /** + * Captures an exception event and sends it to Sentry. + * + * Unlike `captureException` exported from every SDK, this method requires that you pass it the current scope. + */ + captureException(exception: unknown, hint?: EventHint, scope?: Scope): string; + /** + * Captures a message event and sends it to Sentry. + * + * Unlike `captureMessage` exported from every SDK, this method requires that you pass it the current scope. + */ + captureMessage(message: ParameterizedString, level?: SeverityLevel, hint?: EventHint, currentScope?: Scope): string; + /** + * Captures a manually created event and sends it to Sentry. + * + * Unlike `captureEvent` exported from every SDK, this method requires that you pass it the current scope. + */ + captureEvent(event: Event, hint?: EventHint, currentScope?: Scope): string; + /** + * Captures a session. + */ + captureSession(session: Session): void; + /** + * Create a cron monitor check in and send it to Sentry. This method is not available on all clients. + * + * @param checkIn An object that describes a check in. + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + * @param scope An optional scope containing event metadata. + * @returns A string representing the id of the check in. + */ + captureCheckIn?(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string; + /** + * Get the current Dsn. + */ + getDsn(): DsnComponents | undefined; + /** + * Get the current options. + */ + getOptions(): O; + /** + * Get the SDK metadata. + * @see SdkMetadata + */ + getSdkMetadata(): SdkMetadata | undefined; + /** + * Returns the transport that is used by the client. + * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent. + */ + getTransport(): Transport | undefined; + /** + * Wait for all events to be sent or the timeout to expire, whichever comes first. + * + * @param timeout Maximum time in ms the client should wait for events to be flushed. Omitting this parameter will + * cause the client to wait until all events are sent before resolving the promise. + * @returns A promise that will resolve with `true` if all events are sent before the timeout, or `false` if there are + * still events in the queue when the timeout is reached. + */ + flush(timeout?: number): PromiseLike; + /** + * Flush the event queue and set the client to `enabled = false`. See {@link Client.flush}. + * + * @param {number} timeout Maximum time in ms the client should wait before shutting down. Omitting this parameter will cause + * the client to wait until all events are sent before disabling itself. + * @returns {Promise} A promise which resolves to `true` if the flush completes successfully before the timeout, or `false` if + * it doesn't. + */ + close(timeout?: number): PromiseLike; + /** + * Get all installed event processors. + */ + getEventProcessors(): EventProcessor[]; + /** + * Adds an event processor that applies to any event processed by this client. + */ + addEventProcessor(eventProcessor: EventProcessor): void; + /** + * Initialize this client. + * Call this after the client was set on a scope. + */ + init(): void; + /** + * Gets an installed integration by its name. + * + * @returns {Integration|undefined} The installed integration or `undefined` if no integration with that `name` was installed. + */ + getIntegrationByName(integrationName: string): T | undefined; + /** + * Add an integration to the client. + * This can be used to e.g. lazy load integrations. + * In most cases, this should not be necessary, + * and you're better off just passing the integrations via `integrations: []` at initialization time. + * However, if you find the need to conditionally load & add an integration, you can use `addIntegration` to do so. + */ + addIntegration(integration: Integration): void; + /** + * Send a fully prepared event to Sentry. + */ + sendEvent(event: Event, hint?: EventHint): void; + /** + * Send a session or session aggregrates to Sentry. + */ + sendSession(session: Session | SessionAggregates): void; + /** + * Record on the client that an event got dropped (ie, an event that will not be sent to Sentry). + */ + recordDroppedEvent(reason: EventDropReason, category: DataCategory, count?: number): void; + /** + * Register a callback for whenever a span is started. + * Receives the span as argument. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'spanStart', callback: (span: Span) => void): () => void; + /** + * Register a callback before span sampling runs. Receives a `samplingDecision` object argument with a `decision` + * property that can be used to make a sampling decision that will be enforced, before any span sampling runs. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'beforeSampling', callback: (samplingData: { + spanAttributes: SpanAttributes; + spanName: string; + parentSampled?: boolean; + parentSampleRate?: number; + parentContext?: SpanContextData; + }, samplingDecision: { + decision: boolean; + }) => void): void; + /** + * Register a callback for after a span is ended. + * NOTE: The span cannot be mutated anymore in this callback. + * Receives the span as argument. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'spanEnd', callback: (span: Span) => void): () => void; + /** + * Register a callback for when an idle span is allowed to auto-finish. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'idleSpanEnableAutoFinish', callback: (span: Span) => void): () => void; + /** + * Register a callback for transaction start and finish. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): () => void; + /** + * Register a callback that runs when stack frame metadata should be applied to an event. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'applyFrameMetadata', callback: (event: Event) => void): () => void; + /** + * Register a callback for before sending an event. + * This is called right before an event is sent and should not be used to mutate the event. + * Receives an Event & EventHint as arguments. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void; + /** + * Register a callback for before sending a session or session aggregrates.. + * Receives the session/aggregate as second argument. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'beforeSendSession', callback: (session: Session | SessionAggregates) => void): () => void; + /** + * Register a callback for preprocessing an event, + * before it is passed to (global) event processors. + * Receives an Event & EventHint as arguments. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void; + /** + * Register a callback for postprocessing an event, + * after it was passed to (global) event processors, before it is being sent. + * Receives an Event & EventHint as arguments. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'postprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void; + /** + * Register a callback for when an event has been sent. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'afterSendEvent', callback: (event: Event, sendResponse: TransportMakeRequestResponse) => void): () => void; + /** + * Register a callback before a breadcrumb is added. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): () => void; + /** + * Register a callback when a DSC (Dynamic Sampling Context) is created. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext, rootSpan?: Span) => void): () => void; + /** + * Register a callback when a Feedback event has been prepared. + * This should be used to mutate the event. The options argument can hint + * about what kind of mutation it expects. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'beforeSendFeedback', callback: (feedback: FeedbackEvent, options?: { + includeReplay?: boolean; + }) => void): () => void; + /** + * Register a callback when the feedback widget is opened in a user's browser + */ + on(hook: 'openFeedbackWidget', callback: () => void): () => void; + /** + * A hook for the browser tracing integrations to trigger a span start for a page load. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'startPageLoadSpan', callback: (options: StartSpanOptions, traceOptions?: { + sentryTrace?: string | undefined; + baggage?: string | undefined; + }) => void): () => void; + /** + * A hook for the browser tracing integrations to trigger the end of a page load span. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'endPageloadSpan', callback: () => void): () => void; + /** + * A hook for the browser tracing integrations to trigger after the pageload span was started. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'afterStartPageLoadSpan', callback: (span: Span) => void): () => void; + /** + * A hook for triggering right before a navigation span is started. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'beforeStartNavigationSpan', callback: (options: StartSpanOptions, navigationOptions?: { + isRedirect?: boolean; + }) => void): () => void; + /** + * A hook for browser tracing integrations to trigger a span for a navigation. + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'startNavigationSpan', callback: (options: StartSpanOptions, navigationOptions?: { + isRedirect?: boolean; + }) => void): () => void; + /** + * A hook for GraphQL client integration to enhance a span with request data. + * @returns A function that, when executed, removes the registered callback. + */ + on(hook: 'beforeOutgoingRequestSpan', callback: (span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void): () => void; + /** + * A hook for GraphQL client integration to enhance a breadcrumb with request data. + * @returns A function that, when executed, removes the registered callback. + */ + on(hook: 'beforeOutgoingRequestBreadcrumb', callback: (breadcrumb: Breadcrumb, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void): () => void; + /** + * A hook that is called when the client is flushing + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'flush', callback: () => void): () => void; + /** + * A hook that is called when the client is closing + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'close', callback: () => void): () => void; + /** + * A hook that is called before a log is captured. This hooks runs before `beforeSendLog` is fired. + * + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'beforeCaptureLog', callback: (log: Log) => void): () => void; + /** + * A hook that is called after a log is captured + * + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'afterCaptureLog', callback: (log: Log) => void): () => void; + /** + * A hook that is called when the client is flushing logs + * + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'flushLogs', callback: () => void): () => void; + /** + * A hook that is called after capturing a metric. This hooks runs after `beforeSendMetric` is fired. + * + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'afterCaptureMetric', callback: (metric: Metric) => void): () => void; + /** + * A hook that is called when the client is flushing metrics + * + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'flushMetrics', callback: () => void): () => void; + /** + * A hook that is called when a metric is processed before it is captured and before the `beforeSendMetric` callback is fired. + * + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'processMetric', callback: (metric: Metric) => void): () => void; + /** + * A hook that is called when a http server request is started. + * This hook is called after request isolation, but before the request is processed. + * + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'httpServerRequest', callback: (request: unknown, response: unknown, normalizedRequest: RequestEventData) => void): () => void; + /** + * A hook that is called when the UI Profiler should start profiling. + * + * This hook is called when running `Sentry.uiProfiler.startProfiler()`. + * + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'startUIProfiler', callback: () => void): () => void; + /** + * A hook that is called when the UI Profiler should stop profiling. + * + * This hook is called when running `Sentry.uiProfiler.stopProfiler()`. + * + * @returns {() => void} A function that, when executed, removes the registered callback. + */ + on(hook: 'stopUIProfiler', callback: () => void): () => void; + /** Fire a hook whenever a span starts. */ + emit(hook: 'spanStart', span: Span): void; + /** A hook that is called every time before a span is sampled. */ + emit(hook: 'beforeSampling', samplingData: { + spanAttributes: SpanAttributes; + spanName: string; + parentSampled?: boolean; + parentSampleRate?: number; + parentContext?: SpanContextData; + }, samplingDecision: { + decision: boolean; + }): void; + /** Fire a hook whenever a span ends. */ + emit(hook: 'spanEnd', span: Span): void; + /** + * Fire a hook indicating that an idle span is allowed to auto finish. + */ + emit(hook: 'idleSpanEnableAutoFinish', span: Span): void; + /** + * Fire a hook event for envelope creation and sending. Expects to be given an envelope as the + * second argument. + */ + emit(hook: 'beforeEnvelope', envelope: Envelope): void; + /** + * Fire a hook indicating that stack frame metadata should be applied to the event passed to the hook. + */ + emit(hook: 'applyFrameMetadata', event: Event): void; + /** + * Fire a hook event before sending an event. + * This is called right before an event is sent and should not be used to mutate the event. + * Expects to be given an Event & EventHint as the second/third argument. + */ + emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void; + /** + * Fire a hook event before sending a session/aggregates. + * Expects to be given the prepared session/aggregates as second argument. + */ + emit(hook: 'beforeSendSession', session: Session | SessionAggregates): void; + /** + * Fire a hook event to process events before they are passed to (global) event processors. + * Expects to be given an Event & EventHint as the second/third argument. + */ + emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void; + /** + * Fire a hook event to process a user on an event before it is sent to Sentry, after all other processors have run. + * Expects to be given an Event & EventHint as the second/third argument. + */ + emit(hook: 'postprocessEvent', event: Event, hint?: EventHint): void; + /** + * Fire a hook event after sending an event. Expects to be given an Event as the + * second argument. + */ + emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse): void; + /** + * Fire a hook for when a breadcrumb is added. Expects the breadcrumb as second argument. + */ + emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void; + /** + * Fire a hook for when a DSC (Dynamic Sampling Context) is created. Expects the DSC as second argument. + */ + emit(hook: 'createDsc', dsc: DynamicSamplingContext, rootSpan?: Span): void; + /** + * Fire a hook event for after preparing a feedback event. Events to be given + * a feedback event as the second argument, and an optional options object as + * third argument. + */ + emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { + includeReplay?: boolean; + }): void; + /** + * Fire a hook event for when the feedback widget is opened in a user's browser + */ + emit(hook: 'openFeedbackWidget'): void; + /** + * Emit a hook event for browser tracing integrations to trigger a span start for a page load. + */ + emit(hook: 'startPageLoadSpan', options: StartSpanOptions, traceOptions?: { + sentryTrace?: string | undefined; + baggage?: string | undefined; + }): void; + /** + * Emit a hook event for browser tracing integrations to trigger the end of a page load span. + */ + emit(hook: 'endPageloadSpan'): void; + /** + * Emit a hook event for browser tracing integrations to trigger aafter the pageload span was started. + */ + emit(hook: 'afterStartPageLoadSpan', span: Span): void; + /** + * Emit a hook event for triggering right before a navigation span is started. + */ + emit(hook: 'beforeStartNavigationSpan', options: StartSpanOptions, navigationOptions?: { + isRedirect?: boolean; + }): void; + /** + * Emit a hook event for browser tracing integrations to trigger a span for a navigation. + */ + emit(hook: 'startNavigationSpan', options: StartSpanOptions, navigationOptions?: { + isRedirect?: boolean; + }): void; + /** + * Emit a hook event for GraphQL client integration to enhance a span with request data. + */ + emit(hook: 'beforeOutgoingRequestSpan', span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint): void; + /** + * Emit a hook event for GraphQL client integration to enhance a breadcrumb with request data. + */ + emit(hook: 'beforeOutgoingRequestBreadcrumb', breadcrumb: Breadcrumb, hint: XhrBreadcrumbHint | FetchBreadcrumbHint): void; + /** + * Emit a hook event for client flush + */ + emit(hook: 'flush'): void; + /** + * Emit a hook event for client close + */ + emit(hook: 'close'): void; + /** + * Emit a hook event for client before capturing a log. This hooks runs before `beforeSendLog` is fired. + */ + emit(hook: 'beforeCaptureLog', log: Log): void; + /** + * Emit a hook event for client after capturing a log. + */ + emit(hook: 'afterCaptureLog', log: Log): void; + /** + * Emit a hook event for client flush logs + */ + emit(hook: 'flushLogs'): void; + /** + * Emit a hook event for client after capturing a metric. + */ + emit(hook: 'afterCaptureMetric', metric: Metric): void; + /** + * Emit a hook event for client flush metrics + */ + emit(hook: 'flushMetrics'): void; + /** + * + * Emit a hook event for client to process a metric before it is captured. + * This hook is called before the `beforeSendMetric` callback is fired. + */ + emit(hook: 'processMetric', metric: Metric): void; + /** + * Emit a hook event for client when a http server request is started. + * This hook is called after request isolation, but before the request is processed. + */ + emit(hook: 'httpServerRequest', request: unknown, response: unknown, normalizedRequest: RequestEventData): void; + /** + * Emit a hook event for starting the UI Profiler. + */ + emit(hook: 'startUIProfiler'): void; + /** + * Emit a hook event for stopping the UI Profiler. + */ + emit(hook: 'stopUIProfiler'): void; + /** + * Send an envelope to Sentry. + */ + sendEnvelope(envelope: Envelope): PromiseLike; + /** Setup integrations for this client. */ + protected _setupIntegrations(): void; + /** Updates existing session based on the provided event */ + protected _updateSessionFromEvent(session: Session, event: Event): void; + /** + * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying + * "no" (resolving to `false`) in order to give the client a chance to potentially finish first. + * + * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not + * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to + * `true`. + * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and + * `false` otherwise + */ + protected _isClientDoneProcessing(timeout?: number): Promise; + /** Determines whether this SDK is enabled and a transport is present. */ + protected _isEnabled(): boolean; + /** + * Adds common information to events. + * + * The information includes release and environment from `options`, + * breadcrumbs and context (extra, tags and user) from the scope. + * + * Information that is already present in the event is never overwritten. For + * nested objects, such as the context, keys are merged. + * + * @param event The original event. + * @param hint May contain additional information about the original exception. + * @param currentScope A scope containing event metadata. + * @returns A new event with more information. + */ + protected _prepareEvent(event: Event, hint: EventHint, currentScope: Scope, isolationScope: Scope): PromiseLike; + /** + * Processes the event and logs an error in case of rejection + * @param event + * @param hint + * @param scope + */ + protected _captureEvent(event: Event, hint?: EventHint, currentScope?: Scope, isolationScope?: Scope): PromiseLike; + /** + * Processes an event (either error or message) and sends it to Sentry. + * + * This also adds breadcrumbs and context information to the event. However, + * platform specific meta data (such as the User's IP address) must be added + * by the SDK implementor. + * + * + * @param event The event to send to Sentry. + * @param hint May contain additional information about the original exception. + * @param currentScope A scope containing event metadata. + * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send. + */ + protected _processEvent(event: Event, hint: EventHint, currentScope: Scope, isolationScope: Scope): PromiseLike; + /** + * Occupies the client with processing and event + */ + protected _process(taskProducer: () => PromiseLike, dataCategory: DataCategory): void; + /** + * Clears outcomes on this client and returns them. + */ + protected _clearOutcomes(): Outcome[]; + /** + * Sends client reports as an envelope. + */ + protected _flushOutcomes(): void; + /** + * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`. + */ + abstract eventFromException(_exception: unknown, _hint?: EventHint): PromiseLike; + /** + * Creates an {@link Event} from primitive inputs to `captureMessage`. + */ + abstract eventFromMessage(_message: ParameterizedString, _level?: SeverityLevel, _hint?: EventHint): PromiseLike; +} +//# sourceMappingURL=client.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/constants.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/constants.d.ts new file mode 100644 index 0000000..93eda70 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/constants.d.ts @@ -0,0 +1,3 @@ +export declare const DEFAULT_ENVIRONMENT = "production"; +export declare const DEV_ENVIRONMENT = "development"; +//# sourceMappingURL=constants.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/currentScopes.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/currentScopes.d.ts new file mode 100644 index 0000000..ece38ed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/currentScopes.d.ts @@ -0,0 +1,60 @@ +import { Client } from './client'; +import { Scope } from './scope'; +import { TraceContext } from './types-hoist/context'; +/** + * Get the currently active scope. + */ +export declare function getCurrentScope(): Scope; +/** + * Get the currently active isolation scope. + * The isolation scope is active for the current execution context. + */ +export declare function getIsolationScope(): Scope; +/** + * Get the global scope. + * This scope is applied to _all_ events. + */ +export declare function getGlobalScope(): Scope; +/** + * Creates a new scope with and executes the given operation within. + * The scope is automatically removed once the operation + * finishes or throws. + */ +export declare function withScope(callback: (scope: Scope) => T): T; +/** + * Set the given scope as the active scope in the callback. + */ +export declare function withScope(scope: Scope | undefined, callback: (scope: Scope) => T): T; +/** + * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no + * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the + * case, for example, in the browser). + * + * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour. + * + * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in "normal" + * applications directly because it comes with pitfalls. Use at your own risk! + */ +export declare function withIsolationScope(callback: (isolationScope: Scope) => T): T; +/** + * Set the provided isolation scope as active in the given callback. If no + * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the + * case, for example, in the browser). + * + * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour. + * + * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in "normal" + * applications directly because it comes with pitfalls. Use at your own risk! + * + * If you pass in `undefined` as a scope, it will fork a new isolation scope, the same as if no scope is passed. + */ +export declare function withIsolationScope(isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T): T; +/** + * Get the currently active client. + */ +export declare function getClient(): C | undefined; +/** + * Get a trace context for the given scope. + */ +export declare function getTraceContextFromScope(scope: Scope): TraceContext; +//# sourceMappingURL=currentScopes.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/debug-build.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/debug-build.d.ts new file mode 100644 index 0000000..2b67711 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/debug-build.d.ts @@ -0,0 +1,7 @@ +/** + * 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. + * + * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking. + */ +export declare const DEBUG_BUILD: boolean; +//# sourceMappingURL=debug-build.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/defaultScopes.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/defaultScopes.d.ts new file mode 100644 index 0000000..af93d5c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/defaultScopes.d.ts @@ -0,0 +1,6 @@ +import { Scope } from './scope'; +/** Get the default current scope. */ +export declare function getDefaultCurrentScope(): Scope; +/** Get the default isolation scope. */ +export declare function getDefaultIsolationScope(): Scope; +//# sourceMappingURL=defaultScopes.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/envelope.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/envelope.d.ts new file mode 100644 index 0000000..f0083c5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/envelope.d.ts @@ -0,0 +1,36 @@ +import { Client } from './client'; +import { SentrySpan } from './tracing/sentrySpan'; +import { LegacyCSPReport } from './types-hoist/csp'; +import { DsnComponents } from './types-hoist/dsn'; +import { EventEnvelope, RawSecurityEnvelope, SessionEnvelope, SpanEnvelope } from './types-hoist/envelope'; +import { Event } from './types-hoist/event'; +import { SdkInfo } from './types-hoist/sdkinfo'; +import { SdkMetadata } from './types-hoist/sdkmetadata'; +import { Session, SessionAggregates } from './types-hoist/session'; +/** + * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key. + * Merge with existing data if any. + * + * @internal, exported only for testing + **/ +export declare function _enhanceEventWithSdkInfo(event: Event, newSdkInfo?: SdkInfo): Event; +/** Creates an envelope from a Session */ +export declare function createSessionEnvelope(session: Session | SessionAggregates, dsn?: DsnComponents, metadata?: SdkMetadata, tunnel?: string): SessionEnvelope; +/** + * Create an Envelope from an event. + */ +export declare function createEventEnvelope(event: Event, dsn?: DsnComponents, metadata?: SdkMetadata, tunnel?: string): EventEnvelope; +/** + * Create envelope from Span item. + * + * Takes an optional client and runs spans through `beforeSendSpan` if available. + */ +export declare function createSpanEnvelope(spans: [ + SentrySpan, + ...SentrySpan[] +], client?: Client): SpanEnvelope; +/** + * Create an Envelope from a CSP report. + */ +export declare function createRawSecurityEnvelope(report: LegacyCSPReport, dsn: DsnComponents, tunnel?: string, release?: string, environment?: string): RawSecurityEnvelope; +//# sourceMappingURL=envelope.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/eventProcessors.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/eventProcessors.d.ts new file mode 100644 index 0000000..e13aad9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/eventProcessors.d.ts @@ -0,0 +1,7 @@ +import { Event, EventHint } from './types-hoist/event'; +import { EventProcessor } from './types-hoist/eventprocessor'; +/** + * Process an array of event processors, returning the processed event (or `null` if the event was dropped). + */ +export declare function notifyEventProcessors(processors: EventProcessor[], event: Event | null, hint: EventHint, index?: number): PromiseLike; +//# sourceMappingURL=eventProcessors.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/exports.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/exports.d.ts new file mode 100644 index 0000000..748d246 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/exports.d.ts @@ -0,0 +1,160 @@ +import { CaptureContext } from './scope'; +import { CheckIn, MonitorConfig } from './types-hoist/checkin'; +import { Event, EventHint } from './types-hoist/event'; +import { EventProcessor } from './types-hoist/eventprocessor'; +import { Extra, Extras } from './types-hoist/extra'; +import { Primitive } from './types-hoist/misc'; +import { Session, SessionContext } from './types-hoist/session'; +import { SeverityLevel } from './types-hoist/severity'; +import { User } from './types-hoist/user'; +import { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent'; +/** + * Captures an exception event and sends it to Sentry. + * + * @param exception The exception to capture. + * @param hint Optional additional data to attach to the Sentry event. + * @returns the id of the captured Sentry event. + */ +export declare function captureException(exception: unknown, hint?: ExclusiveEventHintOrCaptureContext): string; +/** + * Captures a message event and sends it to Sentry. + * + * @param message The message to send to Sentry. + * @param captureContext Define the level of the message or pass in additional data to attach to the message. + * @returns the id of the captured message. + */ +export declare function captureMessage(message: string, captureContext?: CaptureContext | SeverityLevel): string; +/** + * Captures a manually created event and sends it to Sentry. + * + * @param event The event to send to Sentry. + * @param hint Optional additional data to attach to the Sentry event. + * @returns the id of the captured event. + */ +export declare function captureEvent(event: Event, hint?: EventHint): string; +/** + * Sets context data with the given name. + * @param name of the context + * @param context Any kind of data. This data will be normalized. + */ +export declare function setContext(name: string, context: { + [key: string]: unknown; +} | null): void; +/** + * Set an object that will be merged sent as extra data with the event. + * @param extras Extras object to merge into current context. + */ +export declare function setExtras(extras: Extras): void; +/** + * Set key:value that will be sent as extra data with the event. + * @param key String of extra + * @param extra Any kind of data. This data will be normalized. + */ +export declare function setExtra(key: string, extra: Extra): void; +/** + * Set an object that will be merged sent as tags data with the event. + * @param tags Tags context object to merge into current context. + */ +export declare function setTags(tags: { + [key: string]: Primitive; +}): void; +/** + * Set key:value that will be sent as tags data with the event. + * + * Can also be used to unset a tag, by passing `undefined`. + * + * @param key String key of tag + * @param value Value of tag + */ +export declare function setTag(key: string, value: Primitive): void; +/** + * Updates user context information for future events. + * + * @param user User context object to be set in the current context. Pass `null` to unset the user. + */ +export declare function setUser(user: User | null): void; +/** + * Sets the conversation ID for the current isolation scope. + * + * @param conversationId The conversation ID to set. Pass `null` or `undefined` to unset the conversation ID. + */ +export declare function setConversationId(conversationId: string | null | undefined): void; +/** + * The last error event id of the isolation scope. + * + * Warning: This function really returns the last recorded error event id on the current + * isolation scope. If you call this function after handling a certain error and another error + * is captured in between, the last one is returned instead of the one you might expect. + * Also, ids of events that were never sent to Sentry (for example because + * they were dropped in `beforeSend`) could be returned. + * + * @returns The last event id of the isolation scope. + */ +export declare function lastEventId(): string | undefined; +/** + * Create a cron monitor check in and send it to Sentry. + * + * @param checkIn An object that describes a check in. + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + */ +export declare function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string; +/** + * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes. + * + * @param monitorSlug The distinct slug of the monitor. + * @param callback Callback to be monitored + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + */ +export declare function withMonitor(monitorSlug: CheckIn['monitorSlug'], callback: () => T, upsertMonitorConfig?: MonitorConfig): T; +/** + * Call `flush()` on the current client, if there is one. See {@link Client.flush}. + * + * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause + * the client to wait until all events are sent before resolving the promise. + * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it + * doesn't (or if there's no client defined). + */ +export declare function flush(timeout?: number): Promise; +/** + * Call `close()` on the current client, if there is one. See {@link Client.close}. + * + * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this + * parameter will cause the client to wait until all events are sent before disabling itself. + * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it + * doesn't (or if there's no client defined). + */ +export declare function close(timeout?: number): Promise; +/** + * Returns true if Sentry has been properly initialized. + */ +export declare function isInitialized(): boolean; +/** If the SDK is initialized & enabled. */ +export declare function isEnabled(): boolean; +/** + * Add an event processor. + * This will be added to the current isolation scope, ensuring any event that is processed in the current execution + * context will have the processor applied. + */ +export declare function addEventProcessor(callback: EventProcessor): void; +/** + * Start a session on the current isolation scope. + * + * @param context (optional) additional properties to be applied to the returned session object + * + * @returns the new active session + */ +export declare function startSession(context?: SessionContext): Session; +/** + * End the session on the current isolation scope. + */ +export declare function endSession(): void; +/** + * Sends the current session on the scope to Sentry + * + * @param end If set the session will be marked as exited and removed from the scope. + * Defaults to `false`. + */ +export declare function captureSession(end?: boolean): void; +//# sourceMappingURL=exports.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/feedback.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/feedback.d.ts new file mode 100644 index 0000000..261482b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/feedback.d.ts @@ -0,0 +1,9 @@ +import { EventHint } from './types-hoist/event'; +import { SendFeedbackParams } from './types-hoist/feedback'; +/** + * Send user feedback to Sentry. + */ +export declare function captureFeedback(params: SendFeedbackParams, hint?: EventHint & { + includeReplay?: boolean; +}, scope?: import("./scope").Scope): string; +//# sourceMappingURL=feedback.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/fetch.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/fetch.d.ts new file mode 100644 index 0000000..e82aad5 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/fetch.d.ts @@ -0,0 +1,49 @@ +import { HandlerDataFetch } from './types-hoist/instrument'; +import { ResponseHookInfo } from './types-hoist/request'; +import { Span, SpanOrigin } from './types-hoist/span'; +type PolymorphicRequestHeaders = Record | Array<[ + string, + string +]> | { + append: (key: string, value: string) => void; + get: (key: string) => string | null | undefined; +}; +interface InstrumentFetchRequestOptions { + spanOrigin?: SpanOrigin; + propagateTraceparent?: boolean; + onRequestSpanEnd?: (span: Span, responseInformation: ResponseHookInfo) => void; +} +/** + * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`. + * + * @deprecated pass an options object instead of the spanOrigin parameter + * + * @returns Span if a span was created, otherwise void. + */ +export declare function instrumentFetchRequest(handlerData: HandlerDataFetch, shouldCreateSpan: (url: string) => boolean, shouldAttachHeaders: (url: string) => boolean, spans: Record, spanOrigin: SpanOrigin): Span | undefined; +/** + * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`. + * + * @returns Span if a span was created, otherwise void. + */ +export declare function instrumentFetchRequest(handlerData: HandlerDataFetch, shouldCreateSpan: (url: string) => boolean, shouldAttachHeaders: (url: string) => boolean, spans: Record, instrumentFetchRequestOptions: InstrumentFetchRequestOptions): Span | undefined; +/** + * Calls the onRequestSpanEnd callback if it is defined. + */ +export declare function _callOnRequestSpanEnd(span: Span, handlerData: HandlerDataFetch, spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions): void; +/** + * Adds sentry-trace and baggage headers to the various forms of fetch headers. + * exported only for testing purposes + * + * When we determine if we should add a baggage header, there are 3 cases: + * 1. No previous baggage header -> add baggage + * 2. Previous baggage header has no sentry baggage values -> add our baggage + * 3. Previous baggage header has sentry baggage values -> do nothing (might have been added manually by users) + */ +export declare function _addTracingHeadersToFetchRequest(request: string | Request, fetchOptionsObj: { + headers?: { + [key: string]: string[] | string | undefined; + } | PolymorphicRequestHeaders; +}, span?: Span, propagateTraceparent?: boolean): PolymorphicRequestHeaders | undefined; +export {}; +//# sourceMappingURL=fetch.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/index.d.ts new file mode 100644 index 0000000..4206f27 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/index.d.ts @@ -0,0 +1,205 @@ +export { ClientClass as SentryCoreCurrentScopes } from './sdk'; +export { AsyncContextStrategy } from './asyncContext/types'; +export { Carrier } from './carrier'; +export { OfflineStore, OfflineTransportOptions } from './transports/offline'; +export { ServerRuntimeClientOptions } from './server-runtime-client'; +export { IntegrationIndex } from './integration'; +export * from './tracing'; +export * from './semanticAttributes'; +export { createEventEnvelope, createSessionEnvelope, createSpanEnvelope } from './envelope'; +export { captureCheckIn, withMonitor, captureException, captureEvent, captureMessage, lastEventId, close, flush, setContext, setExtra, setExtras, setTag, setTags, setUser, setConversationId, isInitialized, isEnabled, startSession, endSession, captureSession, addEventProcessor, } from './exports'; +export { getCurrentScope, getIsolationScope, getGlobalScope, withScope, withIsolationScope, getClient, getTraceContextFromScope, } from './currentScopes'; +export { getDefaultCurrentScope, getDefaultIsolationScope } from './defaultScopes'; +export { setAsyncContextStrategy } from './asyncContext'; +export { getGlobalSingleton, getMainCarrier } from './carrier'; +export { makeSession, closeSession, updateSession } from './session'; +export { Scope } from './scope'; +export { CaptureContext, ScopeContext, ScopeData } from './scope'; +export { notifyEventProcessors } from './eventProcessors'; +export { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint } from './api'; +export { Client } from './client'; +export { ServerRuntimeClient } from './server-runtime-client'; +export { initAndBind, setCurrentClient } from './sdk'; +export { createTransport } from './transports/base'; +export { makeOfflineTransport } from './transports/offline'; +export { makeMultiplexedTransport, MULTIPLEXED_TRANSPORT_EXTRA_KEY } from './transports/multiplexed'; +export { getIntegrationsToSetup, addIntegration, defineIntegration, installedIntegrations } from './integration'; +export { _INTERNAL_skipAiProviderWrapping, _INTERNAL_shouldSkipAiProviderWrapping, _INTERNAL_clearAiProviderSkips, } from './utils/ai/providerSkip'; +export { applyScopeDataToEvent, mergeScopeData, getCombinedScopeData } from './utils/scopeData'; +export { prepareEvent } from './utils/prepareEvent'; +export { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent'; +export { createCheckInEnvelope } from './checkin'; +export { hasSpansEnabled } from './utils/hasSpansEnabled'; +export { isSentryRequestUrl } from './utils/isSentryRequestUrl'; +export { handleCallbackErrors } from './utils/handleCallbackErrors'; +export { parameterize, fmt } from './utils/parameterize'; +export { addAutoIpAddressToSession } from './utils/ipAddress'; +export { addAutoIpAddressToUser } from './utils/ipAddress'; +export { convertSpanLinksForEnvelope, spanToTraceHeader, spanToJSON, spanIsSampled, spanToTraceContext, getSpanDescendants, getStatusMessage, getRootSpan, getActiveSpan, addChildSpanToSpan, spanTimeInputToSeconds, updateSpanName, } from './utils/spanUtils'; +export { _setSpanForScope as _INTERNAL_setSpanForScope } from './utils/spanOnScope'; +export { parseSampleRate } from './utils/parseSampleRate'; +export { applySdkMetadata } from './utils/sdkMetadata'; +export { getTraceData } from './utils/traceData'; +export { getTraceMetaTags } from './utils/meta'; +export { debounce } from './utils/debounce'; +export { winterCGHeadersToDict, winterCGRequestToRequestData, httpRequestToRequestData, extractQueryParamsFromUrl, headersToDict, httpHeadersToSpanAttributes, } from './utils/request'; +export { DEFAULT_ENVIRONMENT, DEV_ENVIRONMENT } from './constants'; +export { addBreadcrumb } from './breadcrumbs'; +export { functionToStringIntegration } from './integrations/functiontostring'; +export { inboundFiltersIntegration } from './integrations/eventFilters'; +export { eventFiltersIntegration } from './integrations/eventFilters'; +export { linkedErrorsIntegration } from './integrations/linkederrors'; +export { moduleMetadataIntegration } from './integrations/moduleMetadata'; +export { requestDataIntegration } from './integrations/requestdata'; +export { captureConsoleIntegration } from './integrations/captureconsole'; +export { dedupeIntegration } from './integrations/dedupe'; +export { extraErrorDataIntegration } from './integrations/extraerrordata'; +export { rewriteFramesIntegration } from './integrations/rewriteframes'; +export { supabaseIntegration, instrumentSupabaseClient } from './integrations/supabase'; +export { zodErrorsIntegration } from './integrations/zoderrors'; +export { thirdPartyErrorFilterIntegration } from './integrations/third-party-errors-filter'; +export { consoleIntegration } from './integrations/console'; +export { featureFlagsIntegration, FeatureFlagsIntegration } from './integrations/featureFlags'; +export { growthbookIntegration } from './integrations/featureFlags'; +export { conversationIdIntegration } from './integrations/conversationId'; +export { profiler } from './profiling'; +export { instrumentFetchRequest } from './fetch'; +export { trpcMiddleware } from './trpc'; +export { wrapMcpServerWithSentry } from './integrations/mcp-server'; +export { captureFeedback } from './feedback'; +export { ReportDialogOptions } from './report-dialog'; +export { _INTERNAL_captureLog, _INTERNAL_flushLogsBuffer, _INTERNAL_captureSerializedLog } from './logs/internal'; +import * as logger_1 from './logs/public-api'; +export { logger_1 as logger }; +export { consoleLoggingIntegration } from './logs/console-integration'; +export { _INTERNAL_captureMetric, _INTERNAL_flushMetricsBuffer, _INTERNAL_captureSerializedMetric, } from './metrics/internal'; +import * as metrics_1 from './metrics/public-api'; +export { metrics_1 as metrics }; +export { MetricOptions } from './metrics/public-api'; +export { createConsolaReporter } from './integrations/consola'; +export { addVercelAiProcessors } from './tracing/vercel-ai'; +export { _INTERNAL_getSpanForToolCallId, _INTERNAL_cleanupToolCallSpan } from './tracing/vercel-ai/utils'; +export { instrumentOpenAiClient } from './tracing/openai'; +export { OPENAI_INTEGRATION_NAME } from './tracing/openai/constants'; +export { instrumentAnthropicAiClient } from './tracing/anthropic-ai'; +export { ANTHROPIC_AI_INTEGRATION_NAME } from './tracing/anthropic-ai/constants'; +export { instrumentGoogleGenAIClient } from './tracing/google-genai'; +export { GOOGLE_GENAI_INTEGRATION_NAME } from './tracing/google-genai/constants'; +export { GoogleGenAIResponse } from './tracing/google-genai/types'; +export { createLangChainCallbackHandler } from './tracing/langchain'; +export { LANGCHAIN_INTEGRATION_NAME } from './tracing/langchain/constants'; +export { LangChainOptions, LangChainIntegration } from './tracing/langchain/types'; +export { instrumentStateGraphCompile, instrumentLangGraph } from './tracing/langgraph'; +export { LANGGRAPH_INTEGRATION_NAME } from './tracing/langgraph/constants'; +export { LangGraphOptions, LangGraphIntegration, CompiledGraph } from './tracing/langgraph/types'; +export { OpenAiClient, OpenAiOptions, InstrumentedMethod } from './tracing/openai/types'; +export { AnthropicAiClient, AnthropicAiOptions, AnthropicAiInstrumentedMethod, AnthropicAiResponse, } from './tracing/anthropic-ai/types'; +export { GoogleGenAIClient, GoogleGenAIChat, GoogleGenAIOptions, GoogleGenAIIstrumentedMethod, } from './tracing/google-genai/types'; +export { FeatureFlag } from './utils/featureFlags'; +export { _INTERNAL_copyFlagsFromScopeToEvent, _INTERNAL_insertFlagToScope, _INTERNAL_addFeatureFlagToActiveSpan, _INTERNAL_FLAG_BUFFER_SIZE, _INTERNAL_MAX_FLAGS_PER_SPAN, } from './utils/featureFlags'; +export { applyAggregateErrorsToEvent } from './utils/aggregate-errors'; +export { getBreadcrumbLogLevelFromHttpStatusCode } from './utils/breadcrumb-log-level'; +export { getComponentName, getLocationHref, htmlTreeAsString } from './utils/browser'; +export { dsnFromString, dsnToString, makeDsn } from './utils/dsn'; +export { SentryError } from './utils/error'; +export { GLOBAL_OBJ } from './utils/worldwide'; +export { InternalGlobal } from './utils/worldwide'; +export { addConsoleInstrumentationHandler } from './instrument/console'; +export { addFetchEndInstrumentationHandler, addFetchInstrumentationHandler } from './instrument/fetch'; +export { addGlobalErrorInstrumentationHandler } from './instrument/globalError'; +export { addGlobalUnhandledRejectionInstrumentationHandler } from './instrument/globalUnhandledRejection'; +export { addHandler, maybeInstrument, resetInstrumentationHandlers, triggerHandlers } from './instrument/handlers'; +export { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable, isVueViewModel, } from './utils/is'; +export { isBrowser } from './utils/isBrowser'; +export { CONSOLE_LEVELS, consoleSandbox, debug, originalConsoleMethods } from './utils/debug-logger'; +export { SentryDebugLogger } from './utils/debug-logger'; +export { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4, } from './utils/misc'; +export { isNodeEnv, loadModule } from './utils/node'; +export { normalize, normalizeToSize, normalizeUrlToBase } from './utils/normalize'; +export { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, } from './utils/object'; +export { basename, dirname, isAbsolute, join, normalizePath, relative, resolve } from './utils/path'; +export { makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer'; +export { PromiseBuffer } from './utils/promisebuffer'; +export { severityLevelFromString } from './utils/severity'; +export { replaceExports } from './utils/exports'; +export { UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, stackParserFromStackParserOptions, stripSentryFramesAndReverse, } from './utils/stacktrace'; +export { filenameIsInApp, node, nodeStackLineParser } from './utils/node-stack-trace'; +export { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate } from './utils/string'; +export { isNativeFunction, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsHistory, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver, } from './utils/supports'; +export { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './utils/syncpromise'; +export { browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds } from './utils/time'; +export { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, propagationContextFromHeaders, shouldContinueTrace, generateTraceparentHeader, } from './utils/tracing'; +export { getSDKSource, isBrowserBundle } from './utils/env'; +export { SdkSource } from './utils/env'; +export { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, createSpanEnvelopeItem, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope, } from './utils/envelope'; +export { createClientReportEnvelope } from './utils/clientreport'; +export { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits, } from './utils/ratelimit'; +export { RateLimits } from './utils/ratelimit'; +export { MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader, parseBaggageHeader, objectToBaggageHeader, } from './utils/baggage'; +export { getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment, parseStringToURLObject, getHttpSpanDetailsFromUrlObject, isURLObjectRelative, getSanitizedUrlStringFromUrlObject, stripDataUrlContent, } from './utils/url'; +export { eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames, _enhanceErrorWithSentryInfo as _INTERNAL_enhanceErrorWithSentryInfo, } from './utils/eventbuilder'; +export { callFrameToStackFrame, watchdogTimer } from './utils/anr'; +export { LRUMap } from './utils/lru'; +export { generateTraceId, generateSpanId } from './utils/propagationContext'; +export { vercelWaitUntil } from './utils/vercelWaitUntil'; +export { flushIfServerless } from './utils/flushIfServerless'; +export { SDK_VERSION } from './utils/version'; +export { getDebugImagesForResources, getFilenameToDebugIdMap } from './utils/debug-ids'; +export { getFilenameToMetadataMap } from './metadata'; +export { escapeStringForRegex } from './vendor/escapeStringForRegex'; +export { Attachment } from './types-hoist/attachment'; +export { Breadcrumb, BreadcrumbHint, FetchBreadcrumbData, XhrBreadcrumbData, FetchBreadcrumbHint, XhrBreadcrumbHint, } from './types-hoist/breadcrumb'; +export { ClientReport, Outcome, EventDropReason } from './types-hoist/clientreport'; +export { Context, Contexts, DeviceContext, OsContext, AppContext, CultureContext, TraceContext, CloudResourceContext, MissingInstrumentationContext, } from './types-hoist/context'; +export { DataCategory } from './types-hoist/datacategory'; +export { DsnComponents, DsnLike, DsnProtocol } from './types-hoist/dsn'; +export { DebugImage, DebugMeta } from './types-hoist/debugMeta'; +export { AttachmentItem, BaseEnvelopeHeaders, BaseEnvelopeItemHeaders, ClientReportEnvelope, ClientReportItem, DynamicSamplingContext, Envelope, EnvelopeItemType, EnvelopeItem, EventEnvelope, EventEnvelopeHeaders, EventItem, ReplayEnvelope, FeedbackItem, SessionEnvelope, SessionItem, UserFeedbackItem, CheckInItem, CheckInEnvelope, RawSecurityEnvelope, RawSecurityItem, ProfileItem, ProfileChunkEnvelope, ProfileChunkItem, SpanEnvelope, SpanItem, LogEnvelope, MetricEnvelope, } from './types-hoist/envelope'; +export { ExtendedError } from './types-hoist/error'; +export { Event, EventHint, EventType, ErrorEvent, TransactionEvent } from './types-hoist/event'; +export { EventProcessor } from './types-hoist/eventprocessor'; +export { Exception } from './types-hoist/exception'; +export { Extra, Extras } from './types-hoist/extra'; +export { Integration, IntegrationFn } from './types-hoist/integration'; +export { Mechanism } from './types-hoist/mechanism'; +export { ExtractedNodeRequestData, HttpHeaderValue, Primitive, WorkerLocation } from './types-hoist/misc'; +export { ClientOptions, CoreOptions as Options, ServerRuntimeOptions } from './types-hoist/options'; +export { Package } from './types-hoist/package'; +export { PolymorphicEvent, PolymorphicRequest } from './types-hoist/polymorphics'; +export { ThreadId, FrameId, StackId, ThreadCpuSample, ThreadCpuStack, ThreadCpuFrame, ThreadCpuProfile, ContinuousThreadCpuProfile, Profile, ProfileChunk, } from './types-hoist/profiling'; +export { ReplayEvent, ReplayRecordingData, ReplayRecordingMode } from './types-hoist/replay'; +export { FeedbackEvent, FeedbackFormData, FeedbackInternalOptions, FeedbackModalIntegration, FeedbackScreenshotIntegration, SendFeedback, SendFeedbackParams, UserFeedback, } from './types-hoist/feedback'; +export { QueryParams, RequestEventData, RequestHookInfo, ResponseHookInfo, SanitizedRequestData, } from './types-hoist/request'; +export { Runtime } from './types-hoist/runtime'; +export { SdkInfo } from './types-hoist/sdkinfo'; +export { SdkMetadata } from './types-hoist/sdkmetadata'; +export { SessionAggregates, AggregationCounts, Session, SessionContext, SessionStatus, SerializedSession, } from './types-hoist/session'; +export { SeverityLevel } from './types-hoist/severity'; +export { Span, SentrySpanArguments, SpanOrigin, SpanAttributeValue, SpanAttributes, SpanTimeInput, SpanJSON, SpanContextData, TraceFlag, } from './types-hoist/span'; +export { SpanStatus } from './types-hoist/spanStatus'; +export { Log, LogSeverityLevel } from './types-hoist/log'; +export { Metric, MetricType, SerializedMetric, SerializedMetricContainer, SerializedMetricAttributeValue, } from './types-hoist/metric'; +export { TimedEvent } from './types-hoist/timedEvent'; +export { StackFrame } from './types-hoist/stackframe'; +export { Stacktrace, StackParser, StackLineParser, StackLineParserFn } from './types-hoist/stacktrace'; +export { PropagationContext, TracePropagationTargets, SerializedTraceData } from './types-hoist/tracing'; +export { StartSpanOptions } from './types-hoist/startSpanOptions'; +export { TraceparentData, TransactionSource } from './types-hoist/transaction'; +export { TracesSamplerSamplingContext, CustomSamplingContext, SamplingContext, } from './types-hoist/samplingcontext'; +export { DurationUnit, InformationUnit, FractionUnit, MeasurementUnit, NoneUnit, Measurements, } from './types-hoist/measurement'; +export { Thread } from './types-hoist/thread'; +export { Transport, TransportRequest, TransportMakeRequestResponse, InternalBaseTransportOptions, BaseTransportOptions, TransportRequestExecutor, } from './types-hoist/transport'; +export { User } from './types-hoist/user'; +export { WebFetchHeaders, WebFetchRequest } from './types-hoist/webfetchapi'; +export { WrappedFunction } from './types-hoist/wrappedfunction'; +export { HandlerDataFetch, HandlerDataXhr, HandlerDataDom, HandlerDataConsole, HandlerDataHistory, HandlerDataError, HandlerDataUnhandledRejection, ConsoleLevel, SentryXhrData, SentryWrappedXMLHttpRequest, } from './types-hoist/instrument'; +export { BrowserClientReplayOptions, BrowserClientProfilingOptions } from './types-hoist/browseroptions'; +export { CheckIn, MonitorConfig, FinishedCheckIn, InProgressCheckIn, SerializedCheckIn, } from './types-hoist/checkin'; +export { ParameterizedString } from './types-hoist/parameterize'; +export { ContinuousProfiler, ProfilingIntegration, Profiler } from './types-hoist/profiling'; +export { ViewHierarchyData, ViewHierarchyWindow } from './types-hoist/view-hierarchy'; +export { LegacyCSPReport } from './types-hoist/csp'; +export { SerializedLog, SerializedLogContainer } from './types-hoist/log'; +export { BuildTimeOptionsBase, UnstableVitePluginOptions, UnstableRollupPluginOptions, UnstableWebpackPluginOptions, } from './build-time-plugins/buildTimeOptionsBase'; +export { withRandomSafeContext as _INTERNAL_withRandomSafeContext, RandomSafeContextRunner as _INTERNAL_RandomSafeContextRunner, safeMathRandom as _INTERNAL_safeMathRandom, safeDateNow as _INTERNAL_safeDateNow } from './utils/randomSafeContext'; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/console.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/console.d.ts new file mode 100644 index 0000000..77a8555 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/console.d.ts @@ -0,0 +1,9 @@ +import { HandlerDataConsole } from '../types-hoist/instrument'; +/** + * Add an instrumentation handler for when a console.xxx method is called. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +export declare function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void; +//# sourceMappingURL=console.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/fetch.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/fetch.d.ts new file mode 100644 index 0000000..97fd277 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/fetch.d.ts @@ -0,0 +1,28 @@ +import { HandlerDataFetch } from '../types-hoist/instrument'; +/** + * Add an instrumentation handler for when a fetch request happens. + * The handler function is called once when the request starts and once when it ends, + * which can be identified by checking if it has an `endTimestamp`. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +export declare function addFetchInstrumentationHandler(handler: (data: HandlerDataFetch) => void, skipNativeFetchCheck?: boolean): void; +/** + * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch. + * The handler will resolve the request body and emit the actual `endTimestamp`, so that the + * span can be updated accordingly. + * + * Only used internally + * @hidden + */ +export declare function addFetchEndInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void; +/** + * Parses the fetch arguments to find the used Http method and the url of the request. + * Exported for tests only. + */ +export declare function parseFetchArgs(fetchArgs: unknown[]): { + method: string; + url: string; +}; +//# sourceMappingURL=fetch.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/globalError.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/globalError.d.ts new file mode 100644 index 0000000..067db8c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/globalError.d.ts @@ -0,0 +1,9 @@ +import { HandlerDataError } from '../types-hoist/instrument'; +/** + * Add an instrumentation handler for when an error is captured by the global error handler. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +export declare function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void; +//# sourceMappingURL=globalError.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/globalUnhandledRejection.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/globalUnhandledRejection.d.ts new file mode 100644 index 0000000..00beb31 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/globalUnhandledRejection.d.ts @@ -0,0 +1,9 @@ +import { HandlerDataUnhandledRejection } from '../types-hoist/instrument'; +/** + * Add an instrumentation handler for when an unhandled promise rejection is captured. + * + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden + */ +export declare function addGlobalUnhandledRejectionInstrumentationHandler(handler: (data: HandlerDataUnhandledRejection) => void): void; +//# sourceMappingURL=globalUnhandledRejection.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/handlers.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/handlers.d.ts new file mode 100644 index 0000000..ff24885 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/instrument/handlers.d.ts @@ -0,0 +1,14 @@ +export type InstrumentHandlerType = 'console' | 'dom' | 'fetch' | 'fetch-body-resolved' | 'history' | 'xhr' | 'error' | 'unhandledrejection'; +export type InstrumentHandlerCallback = (data: any) => void; +/** Add a handler function. */ +export declare function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void; +/** + * Reset all instrumentation handlers. + * This can be used by tests to ensure we have a clean slate of instrumentation handlers. + */ +export declare function resetInstrumentationHandlers(): void; +/** Maybe run an instrumentation function, unless it was already called. */ +export declare function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void; +/** Trigger handlers for a given instrumentation type. */ +export declare function triggerHandlers(type: InstrumentHandlerType, data: unknown): void; +//# sourceMappingURL=handlers.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integration.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integration.d.ts new file mode 100644 index 0000000..12f7c52 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integration.d.ts @@ -0,0 +1,31 @@ +import { Client } from './client'; +import { Integration, IntegrationFn } from './types-hoist/integration'; +import { CoreOptions } from './types-hoist/options'; +export declare const installedIntegrations: string[]; +/** Map of integrations assigned to a client */ +export type IntegrationIndex = { + [key: string]: Integration; +}; +/** Gets integrations to install */ +export declare function getIntegrationsToSetup(options: Pick): Integration[]; +/** + * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default + * integrations are added unless they were already provided before. + * @param integrations array of integration instances + * @param withDefault should enable default integrations + */ +export declare function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex; +/** + * Execute the `afterAllSetup` hooks of the given integrations. + */ +export declare function afterSetupIntegrations(client: Client, integrations: Integration[]): void; +/** Setup a single integration. */ +export declare function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void; +/** Add an integration to the current scope's client. */ +export declare function addIntegration(integration: Integration): void; +/** + * Define an integration function that can be used to create an integration instance. + * Note that this by design hides the implementation details of the integration, as they are considered internal. + */ +export declare function defineIntegration(fn: Fn): (...args: Parameters) => Integration; +//# sourceMappingURL=integration.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/captureconsole.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/captureconsole.d.ts new file mode 100644 index 0000000..2ed0a36 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/captureconsole.d.ts @@ -0,0 +1,16 @@ +interface CaptureConsoleOptions { + levels?: string[]; + /** + * By default, Sentry will mark captured console messages as handled. + * Set this to `false` if you want to mark them as unhandled instead. + * + * @default true + */ + handled?: boolean; +} +/** + * Send Console API calls as Sentry Events. + */ +export declare const captureConsoleIntegration: (options?: CaptureConsoleOptions | undefined) => import("../types-hoist/integration").Integration; +export {}; +//# sourceMappingURL=captureconsole.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/consola.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/consola.d.ts new file mode 100644 index 0000000..c4b14d0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/consola.d.ts @@ -0,0 +1,170 @@ +import { Client } from '../client'; +import { LogSeverityLevel } from '../types-hoist/log'; +/** + * Options for the Sentry Consola reporter. + */ +interface ConsolaReporterOptions { + /** + * Use this option to filter which levels should be captured. By default, all levels are captured. + * + * @example + * ```ts + * const sentryReporter = Sentry.createConsolaReporter({ + * // Only capture error and warn logs + * levels: ['error', 'warn'], + * }); + * consola.addReporter(sentryReporter); + * ``` + */ + levels?: Array; + /** + * Optionally provide a specific Sentry client instance to use for capturing logs. + * If not provided, the current client will be retrieved using `getClient()`. + * + * This is useful when you want to use specific client options for log normalization + * or when working with multiple client instances. + * + * @example + * ```ts + * const sentryReporter = Sentry.createConsolaReporter({ + * client: myCustomClient, + * }); + * ``` + */ + client?: Client; +} +export interface ConsolaReporter { + log: (logObj: ConsolaLogObject) => void; +} +/** + * Represents a log object that Consola reporters receive. + * + * This interface matches the structure of log objects passed to Consola reporters. + * See: https://github.com/unjs/consola#custom-reporters + * + * @example + * ```ts + * const reporter = { + * log(logObj: ConsolaLogObject) { + * console.log(`[${logObj.type}] ${logObj.message || logObj.args?.join(' ')}`); + * } + * }; + * consola.addReporter(reporter); + * ``` + */ +export interface ConsolaLogObject { + /** + * Allows additional custom properties to be set on the log object. + * These properties will be captured as log attributes with a 'consola.' prefix. + * + * @example + * ```ts + * const reporter = Sentry.createConsolaReporter(); + * reporter.log({ + * type: 'info', + * message: 'User action', + * userId: 123, + * sessionId: 'abc-123' + * }); + * // Will create attributes: consola.userId and consola.sessionId + * ``` + */ + [key: string]: unknown; + /** + * The numeric log level (0-5) or null. + * + * Consola log levels: + * - 0: Fatal and Error + * - 1: Warnings + * - 2: Normal logs + * - 3: Informational logs, success, fail, ready, start, box, ... + * - 4: Debug logs + * - 5: Trace logs + * - null: Some special types like 'verbose' + * + * See: https://github.com/unjs/consola/blob/main/README.md#log-level + */ + level?: number | null; + /** + * The log type/method name (e.g., 'error', 'warn', 'info', 'debug', 'trace', 'success', 'fail', etc.). + * + * Consola built-in types include: + * - Standard: silent, fatal, error, warn, log, info, success, fail, ready, start, box, debug, trace, verbose + * - Custom types can also be defined + * + * See: https://github.com/unjs/consola/blob/main/README.md#log-types + */ + type?: string; + /** + * An optional tag/scope for the log entry. + * + * Tags are created using `consola.withTag('scope')` and help categorize logs. + * + * @example + * ```ts + * const scopedLogger = consola.withTag('auth'); + * scopedLogger.info('User logged in'); // tag will be 'auth' + * ``` + * + * See: https://github.com/unjs/consola/blob/main/README.md#withtagtag + */ + tag?: string; + /** + * The raw arguments passed to the log method. + * + * When `message` is not provided, these args are typically formatted into the final message. + * + * @example + * ```ts + * consola.info('Hello', 'world', { user: 'john' }); + * // args = ['Hello', 'world', { user: 'john' }] + * ``` + */ + args?: unknown[]; + /** + * The timestamp when the log was created. + * + * This is automatically set by Consola when the log is created. + */ + date?: Date; + /** + * The formatted log message. + * + * When provided, this is the final formatted message. When not provided, + * the message should be constructed from the `args` array. + */ + message?: string; +} +/** + * Creates a new Sentry reporter for Consola that forwards logs to Sentry. Requires the `enableLogs` option to be enabled. + * + * **Note: This integration supports Consola v3.x only.** The reporter interface and log object structure + * may differ in other versions of Consola. + * + * @param options - Configuration options for the reporter. + * @returns A Consola reporter that can be added to consola instances. + * + * @example + * ```ts + * import * as Sentry from '@sentry/node'; + * import { consola } from 'consola'; + * + * Sentry.init({ + * enableLogs: true, + * }); + * + * const sentryReporter = Sentry.createConsolaReporter({ + * // Optional: filter levels to capture + * levels: ['error', 'warn', 'info'], + * }); + * + * consola.addReporter(sentryReporter); + * + * // Now consola logs will be captured by Sentry + * consola.info('This will be sent to Sentry'); + * consola.error('This error will also be sent to Sentry'); + * ``` + */ +export declare function createConsolaReporter(options?: ConsolaReporterOptions): ConsolaReporter; +export {}; +//# sourceMappingURL=consola.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/console.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/console.d.ts new file mode 100644 index 0000000..3a0c8c3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/console.d.ts @@ -0,0 +1,28 @@ +import { ConsoleLevel } from '../types-hoist/instrument'; +interface ConsoleIntegrationOptions { + levels: ConsoleLevel[]; +} +/** + * Captures calls to the `console` API as breadcrumbs in Sentry. + * + * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`, + * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which + * levels are captured. + * + * @example + * + * ```js + * Sentry.init({ + * integrations: [Sentry.consoleIntegration({ levels: ['error', 'warn'] })], + * }); + * ``` + */ +export declare const consoleIntegration: (options?: Partial | undefined) => import("..").Integration; +/** + * Capture a console breadcrumb. + * + * Exported just for tests. + */ +export declare function addConsoleBreadcrumb(level: ConsoleLevel, args: unknown[]): void; +export {}; +//# sourceMappingURL=console.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/conversationId.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/conversationId.d.ts new file mode 100644 index 0000000..ecbc0ba --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/conversationId.d.ts @@ -0,0 +1,9 @@ +/** + * Automatically applies conversation ID from scope to spans. + * + * This integration reads the conversation ID from the current or isolation scope + * and applies it to spans when they start. This ensures the conversation ID is + * available for all AI-related operations. + */ +export declare const conversationIdIntegration: () => import("../types-hoist/integration").Integration; +//# sourceMappingURL=conversationId.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/dedupe.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/dedupe.d.ts new file mode 100644 index 0000000..f382e1a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/dedupe.d.ts @@ -0,0 +1,8 @@ +import { Event } from '../types-hoist/event'; +/** + * Deduplication filter. + */ +export declare const dedupeIntegration: () => import("../types-hoist/integration").Integration; +/** only exported for tests. */ +export declare function _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean; +//# sourceMappingURL=dedupe.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/eventFilters.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/eventFilters.d.ts new file mode 100644 index 0000000..ea8e78f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/eventFilters.d.ts @@ -0,0 +1,41 @@ +/** Options for the EventFilters integration */ +export interface EventFiltersOptions { + allowUrls: Array; + denyUrls: Array; + ignoreErrors: Array; + ignoreTransactions: Array; + ignoreInternal: boolean; + disableErrorDefaults: boolean; +} +/** + * An integration that filters out events (errors and transactions) based on: + * + * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS}) + * - (Errors) A list of error messages or urls/filenames passed in via + * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`) + * - The same options passed to the integration directly via @param options + * - (Transactions/Spans) A list of root span (transaction) names passed in via + * - Top level Sentry.init option (`ignoreTransactions`) + * - The same option passed to the integration directly via @param options + * + * Events filtered by this integration will not be sent to Sentry. + */ +export declare const eventFiltersIntegration: (options?: Partial | undefined) => import("../types-hoist/integration").Integration; +/** + * An integration that filters out events (errors and transactions) based on: + * + * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS}) + * - (Errors) A list of error messages or urls/filenames passed in via + * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`) + * - The same options passed to the integration directly via @param options + * - (Transactions/Spans) A list of root span (transaction) names passed in via + * - Top level Sentry.init option (`ignoreTransactions`) + * - The same option passed to the integration directly via @param options + * + * Events filtered by this integration will not be sent to Sentry. + * + * @deprecated this integration was renamed and will be removed in a future major version. + * Use `eventFiltersIntegration` instead. + */ +export declare const inboundFiltersIntegration: (options?: Partial | undefined) => import("../types-hoist/integration").Integration; +//# sourceMappingURL=eventFilters.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/extraerrordata.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/extraerrordata.d.ts new file mode 100644 index 0000000..3802f6e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/extraerrordata.d.ts @@ -0,0 +1,15 @@ +interface ExtraErrorDataOptions { + /** + * The object depth up to which to capture data on error objects. + */ + depth: number; + /** + * Whether to capture error causes. Defaults to true. + * + * More information: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause + */ + captureErrorCause: boolean; +} +export declare const extraErrorDataIntegration: (options?: Partial | undefined) => import("../types-hoist/integration").Integration; +export {}; +//# sourceMappingURL=extraerrordata.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/featureFlags/featureFlagsIntegration.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/featureFlags/featureFlagsIntegration.d.ts new file mode 100644 index 0000000..9162e61 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/featureFlags/featureFlagsIntegration.d.ts @@ -0,0 +1,30 @@ +import { Integration, IntegrationFn } from '../../types-hoist/integration'; +export interface FeatureFlagsIntegration extends Integration { + addFeatureFlag: (name: string, value: unknown) => void; +} +/** + * Sentry integration for buffering feature flag evaluations manually with an API, and + * capturing them on error events and spans. + * + * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information. + * + * @example + * ``` + * import * as Sentry from '@sentry/browser'; + * import { type FeatureFlagsIntegration } from '@sentry/browser'; + * + * // Setup + * Sentry.init(..., integrations: [Sentry.featureFlagsIntegration()]) + * + * // Verify + * const flagsIntegration = Sentry.getClient()?.getIntegrationByName('FeatureFlags'); + * if (flagsIntegration) { + * flagsIntegration.addFeatureFlag('my-flag', true); + * } else { + * // check your setup + * } + * Sentry.captureException(Exception('broke')); // 'my-flag' should be captured to this Sentry event. + * ``` + */ +export declare const featureFlagsIntegration: IntegrationFn; +//# sourceMappingURL=featureFlagsIntegration.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/featureFlags/growthbook.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/featureFlags/growthbook.d.ts new file mode 100644 index 0000000..2149011 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/featureFlags/growthbook.d.ts @@ -0,0 +1,27 @@ +import { IntegrationFn } from '../../types-hoist/integration'; +interface GrowthBookLike { + isOn(this: GrowthBookLike, featureKey: string, ...rest: unknown[]): boolean; + getFeatureValue(this: GrowthBookLike, featureKey: string, defaultValue: unknown, ...rest: unknown[]): unknown; +} +export type GrowthBookClassLike = new (...args: unknown[]) => GrowthBookLike; +/** + * Sentry integration for capturing feature flag evaluations from GrowthBook. + * + * Only boolean results are captured at this time. + * + * @example + * ```typescript + * import { GrowthBook } from '@growthbook/growthbook'; + * import * as Sentry from '@sentry/browser'; // or '@sentry/node' + * + * Sentry.init({ + * dsn: 'your-dsn', + * integrations: [ + * Sentry.growthbookIntegration({ growthbookClass: GrowthBook }) + * ] + * }); + * ``` + */ +export declare const growthbookIntegration: IntegrationFn; +export {}; +//# sourceMappingURL=growthbook.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/featureFlags/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/featureFlags/index.d.ts new file mode 100644 index 0000000..f1797e9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/featureFlags/index.d.ts @@ -0,0 +1,3 @@ +export { featureFlagsIntegration, FeatureFlagsIntegration } from './featureFlagsIntegration'; +export { growthbookIntegration } from './growthbook'; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/functiontostring.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/functiontostring.d.ts new file mode 100644 index 0000000..3c9b899 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/functiontostring.d.ts @@ -0,0 +1,13 @@ +/** + * Patch toString calls to return proper name for wrapped functions. + * + * ```js + * Sentry.init({ + * integrations: [ + * functionToStringIntegration(), + * ], + * }); + * ``` + */ +export declare const functionToStringIntegration: () => import("../types-hoist/integration").Integration; +//# sourceMappingURL=functiontostring.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/linkederrors.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/linkederrors.d.ts new file mode 100644 index 0000000..850a3c3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/linkederrors.d.ts @@ -0,0 +1,7 @@ +interface LinkedErrorsOptions { + key?: string; + limit?: number; +} +export declare const linkedErrorsIntegration: (options?: LinkedErrorsOptions | undefined) => import("../types-hoist/integration").Integration; +export {}; +//# sourceMappingURL=linkederrors.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/attributeExtraction.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/attributeExtraction.d.ts new file mode 100644 index 0000000..a69885c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/attributeExtraction.d.ts @@ -0,0 +1,23 @@ +/** + * Core attribute extraction and building functions for MCP server instrumentation + */ +import { JsonRpcNotification, JsonRpcRequest, McpSpanType } from './types'; +/** + * Extracts additional attributes for specific notification types + * @param method - Notification method name + * @param params - Notification parameters + * @param recordInputs - Whether to include actual content or just metadata + * @returns Method-specific attributes for span instrumentation + */ +export declare function getNotificationAttributes(method: string, params: Record, recordInputs?: boolean): Record; +/** + * Build type-specific attributes based on message type + * @param type - Span type (request or notification) + * @param message - JSON-RPC message + * @param params - Optional parameters for attribute extraction + * @param recordInputs - Whether to capture input arguments in spans + * @returns Type-specific attributes for span instrumentation + */ +export declare function buildTypeSpecificAttributes(type: McpSpanType, message: JsonRpcRequest | JsonRpcNotification, params?: Record, recordInputs?: boolean): Record; +export { buildTransportAttributes } from './sessionExtraction'; +//# sourceMappingURL=attributeExtraction.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/attributes.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/attributes.d.ts new file mode 100644 index 0000000..5fed6a2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/attributes.d.ts @@ -0,0 +1,89 @@ +/** + * Essential MCP attribute constants for Sentry instrumentation + * + * Based on OpenTelemetry MCP semantic conventions + * @see https://github.com/open-telemetry/semantic-conventions/blob/3097fb0af5b9492b0e3f55dc5f6c21a3dc2be8df/docs/gen-ai/mcp.md + */ +/** The name of the request or notification method */ +export declare const MCP_METHOD_NAME_ATTRIBUTE = "mcp.method.name"; +/** JSON-RPC request identifier for the request. Unique within the MCP session. */ +export declare const MCP_REQUEST_ID_ATTRIBUTE = "mcp.request.id"; +/** Identifies the MCP session */ +export declare const MCP_SESSION_ID_ATTRIBUTE = "mcp.session.id"; +/** Transport method used for MCP communication */ +export declare const MCP_TRANSPORT_ATTRIBUTE = "mcp.transport"; +/** Name of the MCP client application */ +export declare const MCP_CLIENT_NAME_ATTRIBUTE = "mcp.client.name"; +/** Display title of the MCP client application */ +export declare const MCP_CLIENT_TITLE_ATTRIBUTE = "mcp.client.title"; +/** Version of the MCP client application */ +export declare const MCP_CLIENT_VERSION_ATTRIBUTE = "mcp.client.version"; +/** Name of the MCP server application */ +export declare const MCP_SERVER_NAME_ATTRIBUTE = "mcp.server.name"; +/** Display title of the MCP server application */ +export declare const MCP_SERVER_TITLE_ATTRIBUTE = "mcp.server.title"; +/** Version of the MCP server application */ +export declare const MCP_SERVER_VERSION_ATTRIBUTE = "mcp.server.version"; +/** MCP protocol version used in the session */ +export declare const MCP_PROTOCOL_VERSION_ATTRIBUTE = "mcp.protocol.version"; +/** Name of the tool being called */ +export declare const MCP_TOOL_NAME_ATTRIBUTE = "mcp.tool.name"; +/** The resource URI being accessed */ +export declare const MCP_RESOURCE_URI_ATTRIBUTE = "mcp.resource.uri"; +/** Name of the prompt template */ +export declare const MCP_PROMPT_NAME_ATTRIBUTE = "mcp.prompt.name"; +/** Whether a tool execution resulted in an error */ +export declare const MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE = "mcp.tool.result.is_error"; +/** Number of content items in the tool result */ +export declare const MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE = "mcp.tool.result.content_count"; +/** Serialized content of the tool result */ +export declare const MCP_TOOL_RESULT_CONTENT_ATTRIBUTE = "mcp.tool.result.content"; +/** Prefix for tool result attributes that contain sensitive content */ +export declare const MCP_TOOL_RESULT_PREFIX = "mcp.tool.result"; +/** Description of the prompt result */ +export declare const MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE = "mcp.prompt.result.description"; +/** Number of messages in the prompt result */ +export declare const MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE = "mcp.prompt.result.message_count"; +/** Role of the message in the prompt result (for single message results) */ +export declare const MCP_PROMPT_RESULT_MESSAGE_ROLE_ATTRIBUTE = "mcp.prompt.result.message_role"; +/** Content of the message in the prompt result (for single message results) */ +export declare const MCP_PROMPT_RESULT_MESSAGE_CONTENT_ATTRIBUTE = "mcp.prompt.result.message_content"; +/** Prefix for prompt result attributes that contain sensitive content */ +export declare const MCP_PROMPT_RESULT_PREFIX = "mcp.prompt.result"; +/** Prefix for MCP request argument prefix for each argument */ +export declare const MCP_REQUEST_ARGUMENT = "mcp.request.argument"; +/** Log level for MCP logging operations */ +export declare const MCP_LOGGING_LEVEL_ATTRIBUTE = "mcp.logging.level"; +/** Logger name for MCP logging operations */ +export declare const MCP_LOGGING_LOGGER_ATTRIBUTE = "mcp.logging.logger"; +/** Data type of the logged message */ +export declare const MCP_LOGGING_DATA_TYPE_ATTRIBUTE = "mcp.logging.data_type"; +/** Log message content */ +export declare const MCP_LOGGING_MESSAGE_ATTRIBUTE = "mcp.logging.message"; +/** OSI transport layer protocol */ +export declare const NETWORK_TRANSPORT_ATTRIBUTE = "network.transport"; +/** The version of JSON RPC protocol used */ +export declare const NETWORK_PROTOCOL_VERSION_ATTRIBUTE = "network.protocol.version"; +/** Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name */ +export declare const CLIENT_ADDRESS_ATTRIBUTE = "client.address"; +/** Client port number */ +export declare const CLIENT_PORT_ATTRIBUTE = "client.port"; +/** Sentry operation value for MCP server spans */ +export declare const MCP_SERVER_OP_VALUE = "mcp.server"; +/** + * Sentry operation value for client-to-server notifications + * Following OpenTelemetry MCP semantic conventions + */ +export declare const MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE = "mcp.notification.client_to_server"; +/** + * Sentry operation value for server-to-client notifications + * Following OpenTelemetry MCP semantic conventions + */ +export declare const MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE = "mcp.notification.server_to_client"; +/** Sentry origin value for MCP function spans */ +export declare const MCP_FUNCTION_ORIGIN_VALUE = "auto.function.mcp_server"; +/** Sentry origin value for MCP notification spans */ +export declare const MCP_NOTIFICATION_ORIGIN_VALUE = "auto.mcp.notification"; +/** Sentry source value for MCP route spans */ +export declare const MCP_ROUTE_SOURCE_VALUE = "route"; +//# sourceMappingURL=attributes.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/correlation.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/correlation.d.ts new file mode 100644 index 0000000..ccc3276 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/correlation.d.ts @@ -0,0 +1,31 @@ +/** + * Request-span correlation system for MCP server instrumentation + * + * Handles mapping requestId to span data for correlation with handler execution. + * Uses WeakMap to scope correlation maps per transport instance, preventing + * request ID collisions between different MCP sessions. + */ +import { Span } from '../../types-hoist/span'; +import { MCPTransport, RequestId, ResolvedMcpOptions } from './types'; +/** + * Stores span context for later correlation with handler execution + * @param transport - MCP transport instance + * @param requestId - Request identifier + * @param span - Active span to correlate + * @param method - MCP method name + */ +export declare function storeSpanForRequest(transport: MCPTransport, requestId: RequestId, span: Span, method: string): void; +/** + * Completes span with results and cleans up correlation + * @param transport - MCP transport instance + * @param requestId - Request identifier + * @param result - Execution result for attribute extraction + * @param options - Resolved MCP options + */ +export declare function completeSpanWithResults(transport: MCPTransport, requestId: RequestId, result: unknown, options: ResolvedMcpOptions): void; +/** + * Cleans up pending spans for a specific transport (when that transport closes) + * @param transport - MCP transport instance + */ +export declare function cleanupPendingSpansForTransport(transport: MCPTransport): void; +//# sourceMappingURL=correlation.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/errorCapture.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/errorCapture.d.ts new file mode 100644 index 0000000..36582c0 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/errorCapture.d.ts @@ -0,0 +1,17 @@ +/** + * Safe error capture utilities for MCP server instrumentation + * + * Ensures error reporting never interferes with MCP server operation. + * All capture operations are wrapped in try-catch to prevent side effects. + */ +import { McpErrorType } from './types'; +/** + * Captures an error without affecting MCP server operation. + * + * The active span already contains all MCP context (method, tool, arguments, etc.) + * @param error - Error to capture + * @param errorType - Classification of error type for filtering + * @param extraData - Additional context data to include + */ +export declare function captureError(error: Error, errorType?: McpErrorType, extraData?: Record): void; +//# sourceMappingURL=errorCapture.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/handlers.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/handlers.d.ts new file mode 100644 index 0000000..a7ca638 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/handlers.d.ts @@ -0,0 +1,28 @@ +/** + * Handler method wrapping for MCP server instrumentation + * + * Provides automatic error capture and span correlation for tool, resource, + * and prompt handlers. + */ +import { MCPServerInstance } from './types'; +/** + * Wraps tool handlers to associate them with request spans + * @param serverInstance - MCP server instance + */ +export declare function wrapToolHandlers(serverInstance: MCPServerInstance): void; +/** + * Wraps resource handlers to associate them with request spans + * @param serverInstance - MCP server instance + */ +export declare function wrapResourceHandlers(serverInstance: MCPServerInstance): void; +/** + * Wraps prompt handlers to associate them with request spans + * @param serverInstance - MCP server instance + */ +export declare function wrapPromptHandlers(serverInstance: MCPServerInstance): void; +/** + * Wraps all MCP handler types (tool, resource, prompt) for span correlation + * @param serverInstance - MCP server instance + */ +export declare function wrapAllMCPHandlers(serverInstance: MCPServerInstance): void; +//# sourceMappingURL=handlers.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/index.d.ts new file mode 100644 index 0000000..3494f38 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/index.d.ts @@ -0,0 +1,34 @@ +import { McpServerWrapperOptions } from './types'; +/** + * Wraps a MCP Server instance from the `@modelcontextprotocol/sdk` package with Sentry instrumentation. + * + * Compatible with versions `^1.9.0` of the `@modelcontextprotocol/sdk` package. + * Automatically instruments transport methods and handler functions for comprehensive monitoring. + * + * @example + * ```typescript + * import * as Sentry from '@sentry/core'; + * import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; + * import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; + * + * // Default: inputs/outputs captured based on sendDefaultPii option + * const server = Sentry.wrapMcpServerWithSentry( + * new McpServer({ name: "my-server", version: "1.0.0" }) + * ); + * + * // Explicitly control input/output capture + * const server = Sentry.wrapMcpServerWithSentry( + * new McpServer({ name: "my-server", version: "1.0.0" }), + * { recordInputs: true, recordOutputs: false } + * ); + * + * const transport = new StreamableHTTPServerTransport(); + * await server.connect(transport); + * ``` + * + * @param mcpServerInstance - MCP server instance to instrument + * @param options - Optional configuration for recording inputs and outputs + * @returns Instrumented server instance (same reference) + */ +export declare function wrapMcpServerWithSentry(mcpServerInstance: S, options?: McpServerWrapperOptions): S; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/methodConfig.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/methodConfig.d.ts new file mode 100644 index 0000000..3f6733f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/methodConfig.d.ts @@ -0,0 +1,21 @@ +/** + * Method configuration and request processing for MCP server instrumentation + */ +/** + * Extracts target info from method and params based on method type + * @param method - MCP method name + * @param params - Method parameters + * @returns Target name and attributes for span instrumentation + */ +export declare function extractTargetInfo(method: string, params: Record): { + target?: string; + attributes: Record; +}; +/** + * Extracts request arguments based on method type + * @param method - MCP method name + * @param params - Method parameters + * @returns Arguments as span attributes with mcp.request.argument prefix + */ +export declare function getRequestArguments(method: string, params: Record): Record; +//# sourceMappingURL=methodConfig.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/piiFiltering.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/piiFiltering.d.ts new file mode 100644 index 0000000..f753c45 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/piiFiltering.d.ts @@ -0,0 +1,16 @@ +/** + * PII filtering for MCP server spans + * + * Removes network-level sensitive data when sendDefaultPii is false. + * Input/output data (request arguments, tool/prompt results) is controlled + * separately via recordInputs/recordOutputs options. + */ +import { SpanAttributeValue } from '../../types-hoist/span'; +/** + * Removes network PII attributes from span data when sendDefaultPii is false + * @param spanData - Raw span attributes + * @param sendDefaultPii - Whether to include PII data + * @returns Filtered span attributes + */ +export declare function filterMcpPiiFromSpanData(spanData: Record, sendDefaultPii: boolean): Record; +//# sourceMappingURL=piiFiltering.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/resultExtraction.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/resultExtraction.d.ts new file mode 100644 index 0000000..d04805b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/resultExtraction.d.ts @@ -0,0 +1,20 @@ +/** + * Result extraction functions for MCP server instrumentation + * + * Handles extraction of attributes from tool and prompt execution results. + */ +/** + * Extract tool result attributes for span instrumentation + * @param result - Tool execution result + * @param recordOutputs - Whether to include actual content or just metadata (counts, error status) + * @returns Attributes extracted from tool result content + */ +export declare function extractToolResultAttributes(result: unknown, recordOutputs: boolean): Record; +/** + * Extract prompt result attributes for span instrumentation + * @param result - Prompt execution result + * @param recordOutputs - Whether to include actual content or just metadata (counts) + * @returns Attributes extracted from prompt result + */ +export declare function extractPromptResultAttributes(result: unknown, recordOutputs: boolean): Record; +//# sourceMappingURL=resultExtraction.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/sessionExtraction.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/sessionExtraction.d.ts new file mode 100644 index 0000000..d92999d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/sessionExtraction.d.ts @@ -0,0 +1,69 @@ +/** + * Session and party info extraction functions for MCP server instrumentation + * + * Handles extraction of client/server info and session data from MCP messages. + */ +import { ExtraHandlerData, JsonRpcRequest, MCPTransport, PartyInfo, SessionData } from './types'; +/** + * Extracts session data from "initialize" requests + * @param request - JSON-RPC "initialize" request containing client info and protocol version + * @returns Session data extracted from request parameters including protocol version and client info + */ +export declare function extractSessionDataFromInitializeRequest(request: JsonRpcRequest): SessionData; +/** + * Extracts session data from "initialize" response + * @param result - "initialize" response result containing server info and protocol version + * @returns Partial session data extracted from response including protocol version and server info + */ +export declare function extractSessionDataFromInitializeResponse(result: unknown): Partial; +/** + * Build client attributes from stored client info + * @param transport - MCP transport instance + * @returns Client attributes for span instrumentation + */ +export declare function getClientAttributes(transport: MCPTransport): Record; +/** + * Build client attributes from PartyInfo directly + * @param clientInfo - Client party info + * @returns Client attributes for span instrumentation + */ +export declare function buildClientAttributesFromInfo(clientInfo?: PartyInfo): Record; +/** + * Build server attributes from stored server info + * @param transport - MCP transport instance + * @returns Server attributes for span instrumentation + */ +export declare function getServerAttributes(transport: MCPTransport): Record; +/** + * Build server attributes from PartyInfo directly + * @param serverInfo - Server party info + * @returns Server attributes for span instrumentation + */ +export declare function buildServerAttributesFromInfo(serverInfo?: PartyInfo): Record; +/** + * Extracts client connection info from extra handler data + * @param extra - Extra handler data containing connection info + * @returns Client address and port information + */ +export declare function extractClientInfo(extra: ExtraHandlerData): { + address?: string; + port?: number; +}; +/** + * Extracts transport types based on transport constructor name + * @param transport - MCP transport instance + * @returns Transport type mapping for span attributes + */ +export declare function getTransportTypes(transport: MCPTransport): { + mcpTransport: string; + networkTransport: string; +}; +/** + * Build transport and network attributes + * @param transport - MCP transport instance + * @param extra - Optional extra handler data + * @returns Transport attributes for span instrumentation + * @note sessionId may be undefined during initial setup - session should be established by client during initialize flow + */ +export declare function buildTransportAttributes(transport: MCPTransport, extra?: ExtraHandlerData): Record; +//# sourceMappingURL=sessionExtraction.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/sessionManagement.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/sessionManagement.d.ts new file mode 100644 index 0000000..67e4b79 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/sessionManagement.d.ts @@ -0,0 +1,40 @@ +/** + * Session data management for MCP server instrumentation + */ +import { MCPTransport, PartyInfo, SessionData } from './types'; +/** + * Stores session data for a transport with sessionId + * @param transport - MCP transport instance + * @param sessionData - Session data to store + */ +export declare function storeSessionDataForTransport(transport: MCPTransport, sessionData: SessionData): void; +/** + * Updates session data for a transport with sessionId (merges with existing data) + * @param transport - MCP transport instance + * @param partialSessionData - Partial session data to merge with existing data + */ +export declare function updateSessionDataForTransport(transport: MCPTransport, partialSessionData: Partial): void; +/** + * Retrieves client information for a transport + * @param transport - MCP transport instance + * @returns Client information if available + */ +export declare function getClientInfoForTransport(transport: MCPTransport): PartyInfo | undefined; +/** + * Retrieves protocol version for a transport + * @param transport - MCP transport instance + * @returns Protocol version if available + */ +export declare function getProtocolVersionForTransport(transport: MCPTransport): string | undefined; +/** + * Retrieves full session data for a transport + * @param transport - MCP transport instance + * @returns Complete session data if available + */ +export declare function getSessionDataForTransport(transport: MCPTransport): SessionData | undefined; +/** + * Cleans up session data for a specific transport (when that transport closes) + * @param transport - MCP transport instance + */ +export declare function cleanupSessionDataForTransport(transport: MCPTransport): void; +//# sourceMappingURL=sessionManagement.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/spans.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/spans.d.ts new file mode 100644 index 0000000..c524870 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/spans.d.ts @@ -0,0 +1,41 @@ +/** + * Span creation and management functions for MCP server instrumentation + * + * Provides unified span creation following OpenTelemetry MCP semantic conventions and our opinitionated take on MCP. + * Handles both request and notification spans with attribute extraction. + */ +import { ExtraHandlerData, JsonRpcNotification, JsonRpcRequest, MCPTransport, ResolvedMcpOptions } from './types'; +/** + * Creates a span for incoming MCP notifications + * @param jsonRpcMessage - Notification message + * @param transport - MCP transport instance + * @param extra - Extra handler data + * @param options - Resolved MCP options + * @param callback - Span execution callback + * @returns Span execution result + */ +export declare function createMcpNotificationSpan(jsonRpcMessage: JsonRpcNotification, transport: MCPTransport, extra: ExtraHandlerData, options: ResolvedMcpOptions, callback: () => unknown): unknown; +/** + * Creates a span for outgoing MCP notifications + * @param jsonRpcMessage - Notification message + * @param transport - MCP transport instance + * @param options - Resolved MCP options + * @param callback - Span execution callback + * @returns Span execution result + */ +export declare function createMcpOutgoingNotificationSpan(jsonRpcMessage: JsonRpcNotification, transport: MCPTransport, options: ResolvedMcpOptions, callback: () => unknown): unknown; +/** + * Builds span configuration for MCP server requests + * @param jsonRpcMessage - Request message + * @param transport - MCP transport instance + * @param extra - Optional extra handler data + * @param options - Resolved MCP options + * @returns Span configuration object + */ +export declare function buildMcpServerSpanConfig(jsonRpcMessage: JsonRpcRequest, transport: MCPTransport, extra?: ExtraHandlerData, options?: ResolvedMcpOptions): { + name: string; + op: string; + forceTransaction: boolean; + attributes: Record; +}; +//# sourceMappingURL=spans.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/transport.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/transport.d.ts new file mode 100644 index 0000000..3b65785 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/transport.d.ts @@ -0,0 +1,34 @@ +/** + * Transport layer instrumentation for MCP server + * + * Handles message interception and response correlation. + * @see https://modelcontextprotocol.io/specification/2025-06-18/basic/transports + */ +import { MCPTransport, ResolvedMcpOptions } from './types'; +/** + * Wraps transport.onmessage to create spans for incoming messages. + * For "initialize" requests, extracts and stores client info and protocol version + * in the session data for the transport. + * @param transport - MCP transport instance to wrap + * @param options - Resolved MCP options + */ +export declare function wrapTransportOnMessage(transport: MCPTransport, options: ResolvedMcpOptions): void; +/** + * Wraps transport.send to handle outgoing messages and response correlation. + * For "initialize" responses, extracts and stores protocol version and server info + * in the session data for the transport. + * @param transport - MCP transport instance to wrap + * @param options - Resolved MCP options + */ +export declare function wrapTransportSend(transport: MCPTransport, options: ResolvedMcpOptions): void; +/** + * Wraps transport.onclose to clean up pending spans for this transport only + * @param transport - MCP transport instance to wrap + */ +export declare function wrapTransportOnClose(transport: MCPTransport): void; +/** + * Wraps transport error handlers to capture connection errors + * @param transport - MCP transport instance to wrap + */ +export declare function wrapTransportError(transport: MCPTransport): void; +//# sourceMappingURL=transport.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/types.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/types.d.ts new file mode 100644 index 0000000..4d5148a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/types.d.ts @@ -0,0 +1,174 @@ +import { Span } from '../../types-hoist/span'; +/** Types for MCP server instrumentation */ +/** + * Configuration for extracting attributes from MCP methods + * @internal + */ +export type MethodConfig = { + targetField: string; + targetAttribute: string; + captureArguments?: boolean; + argumentsField?: string; + captureUri?: boolean; + captureName?: boolean; +}; +/** + * JSON-RPC 2.0 request object + * @see https://www.jsonrpc.org/specification#request_object + */ +export interface JsonRpcRequest { + jsonrpc: '2.0'; + method: string; + id: string | number; + params?: Record; +} +/** + * JSON-RPC 2.0 response object + * @see https://www.jsonrpc.org/specification#response_object + */ +export interface JsonRpcResponse { + jsonrpc: '2.0'; + id: string | number | null; + result?: unknown; + error?: JsonRpcError; +} +/** + * JSON-RPC 2.0 error object + * @see https://www.jsonrpc.org/specification#error_object + */ +export interface JsonRpcError { + code: number; + message: string; + data?: unknown; +} +/** + * JSON-RPC 2.0 notification object + * @note Notifications do NOT have an 'id' field - this is what distinguishes them from requests + * @see https://www.jsonrpc.org/specification#notification + */ +export interface JsonRpcNotification { + jsonrpc: '2.0'; + method: string; + params?: Record; +} +/** + * MCP transport interface + * @description Abstraction for MCP communication transport layer + */ +export interface MCPTransport { + /** + * Message handler for incoming JSON-RPC messages + * The first argument is a JSON RPC message + */ + onmessage?: (...args: unknown[]) => void; + /** Close handler for transport lifecycle */ + onclose?: (...args: unknown[]) => void; + /** Error handler for transport errors */ + onerror?: (error: Error) => void; + /** Send method for outgoing messages */ + send?: (message: JsonRpcMessage, options?: Record) => Promise; + /** Optional session identifier */ + sessionId?: SessionId; +} +/** Union type for all JSON-RPC message types */ +export type JsonRpcMessage = JsonRpcRequest | JsonRpcNotification | JsonRpcResponse; +/** + * MCP server instance interface + * @description MCP server methods for registering handlers + */ +export interface MCPServerInstance { + /** Register a resource handler */ + resource: (name: string, ...args: unknown[]) => void; + /** Register a tool handler */ + tool: (name: string, ...args: unknown[]) => void; + /** Register a prompt handler */ + prompt: (name: string, ...args: unknown[]) => void; + /** Connect the server to a transport */ + connect(transport: MCPTransport): Promise; +} +/** Client connection information for handlers */ +export interface ExtraHandlerData { + requestInfo?: { + remoteAddress?: string; + remotePort?: number; + }; + clientAddress?: string; + clientPort?: number; + request?: { + ip?: string; + connection?: { + remoteAddress?: string; + remotePort?: number; + }; + }; +} +/** Types of MCP spans */ +export type McpSpanType = 'request' | 'notification-incoming' | 'notification-outgoing'; +/** + * Configuration for creating MCP spans + * @internal + */ +export interface McpSpanConfig { + type: McpSpanType; + message: JsonRpcRequest | JsonRpcNotification; + transport: MCPTransport; + extra?: ExtraHandlerData; + callback: () => unknown; + options?: ResolvedMcpOptions; +} +export type SessionId = string; +export type RequestId = string | number; +/** + * Request-to-span correlation data + * @internal + */ +export type RequestSpanMapValue = { + span: Span; + method: string; + startTime: number; +}; +/** Generic MCP handler function */ +export type MCPHandler = (...args: unknown[]) => unknown; +/** + * Extra data passed to MCP handlers + * @internal + */ +export interface HandlerExtraData { + sessionId?: SessionId; + requestId: RequestId; +} +/** Error types for MCP operations */ +export type McpErrorType = 'tool_execution' | 'resource_execution' | 'prompt_execution' | 'transport' | 'protocol' | 'validation' | 'timeout'; +/** + * Party (client/server) information extracted from MCP initialize requests + * @internal + */ +export type PartyInfo = { + name?: string; + title?: string; + version?: string; +}; +/** + * Session-level data collected from various MCP messages + * @internal + */ +export type SessionData = { + clientInfo?: PartyInfo; + protocolVersion?: string; + serverInfo?: PartyInfo; +}; +/** + * Options for configuring the MCP server wrapper. + */ +export type McpServerWrapperOptions = { + /** Whether to capture tool/prompt input arguments in spans. Defaults to sendDefaultPii. */ + recordInputs?: boolean; + /** Whether to capture tool/prompt output results in spans. Defaults to sendDefaultPii. */ + recordOutputs?: boolean; +}; +/** + * Resolved options with defaults applied. Used internally. + * @internal + */ +export type ResolvedMcpOptions = Required; +//# sourceMappingURL=types.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/validation.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/validation.d.ts new file mode 100644 index 0000000..5e04ee9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/mcp-server/validation.d.ts @@ -0,0 +1,37 @@ +/** + * Message validation functions for MCP server instrumentation + * + * Provides JSON-RPC 2.0 message type validation and MCP server instance validation. + */ +import { JsonRpcNotification, JsonRpcRequest, JsonRpcResponse } from './types'; +/** + * Validates if a message is a JSON-RPC request + * @param message - Message to validate + * @returns True if message is a JSON-RPC request + */ +export declare function isJsonRpcRequest(message: unknown): message is JsonRpcRequest; +/** + * Validates if a message is a JSON-RPC notification + * @param message - Message to validate + * @returns True if message is a JSON-RPC notification + */ +export declare function isJsonRpcNotification(message: unknown): message is JsonRpcNotification; +/** + * Validates if a message is a JSON-RPC response + * @param message - Message to validate + * @returns True if message is a JSON-RPC response + */ +export declare function isJsonRpcResponse(message: unknown): message is JsonRpcResponse; +/** + * Validates MCP server instance with type checking + * @param instance - Object to validate as MCP server instance + * @returns True if instance has required MCP server methods + */ +export declare function validateMcpServerInstance(instance: unknown): boolean; +/** + * Check if the item is a valid content item + * @param item - The item to check + * @returns True if the item is a valid content item, false otherwise + */ +export declare function isValidContentItem(item: unknown): item is Record; +//# sourceMappingURL=validation.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/moduleMetadata.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/moduleMetadata.d.ts new file mode 100644 index 0000000..fb97958 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/moduleMetadata.d.ts @@ -0,0 +1,11 @@ +/** + * Adds module metadata to stack frames. + * + * Metadata can be injected by the Sentry bundler plugins using the `moduleMetadata` config option. + * + * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events + * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams + * our sources + */ +export declare const moduleMetadataIntegration: () => import("..").Integration; +//# sourceMappingURL=moduleMetadata.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/requestdata.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/requestdata.d.ts new file mode 100644 index 0000000..329dc3f --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/requestdata.d.ts @@ -0,0 +1,21 @@ +interface RequestDataIncludeOptions { + cookies?: boolean; + data?: boolean; + headers?: boolean; + ip?: boolean; + query_string?: boolean; + url?: boolean; +} +type RequestDataIntegrationOptions = { + /** + * Controls what data is pulled from the request and added to the event. + */ + include?: RequestDataIncludeOptions; +}; +/** + * Add data about a request to an event. Primarily for use in Node-based SDKs, but included in `@sentry/core` + * so it can be used in cross-platform SDKs like `@sentry/nextjs`. + */ +export declare const requestDataIntegration: (options?: RequestDataIntegrationOptions | undefined) => import("../types-hoist/integration").Integration; +export {}; +//# sourceMappingURL=requestdata.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/rewriteframes.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/rewriteframes.d.ts new file mode 100644 index 0000000..c928526 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/rewriteframes.d.ts @@ -0,0 +1,53 @@ +import { StackFrame } from '../types-hoist/stackframe'; +type StackFrameIteratee = (frame: StackFrame) => StackFrame; +interface RewriteFramesOptions { + /** + * Root path (the beginning of the path) that will be stripped from the frames' filename. + * + * This option has slightly different behaviour in the browser and on servers: + * - In the browser, the value you provide in `root` will be stripped from the beginning stack frames' paths (if the path started with the value). + * - On the server, the root value will only replace the beginning of stack frame filepaths, when the path is absolute. If no `root` value is provided and the path is absolute, the frame will be reduced to only the filename and the provided `prefix` option. + * + * Browser example: + * - Original frame: `'http://example.com/my/path/static/asset.js'` + * - `root: 'http://example.com/my/path'` + * - `assetPrefix: 'app://'` + * - Resulting frame: `'app:///static/asset.js'` + * + * Server example: + * - Original frame: `'/User/local/my/path/static/asset.js'` + * - `root: '/User/local/my/path'` + * - `assetPrefix: 'app://'` + * - Resulting frame: `'app:///static/asset.js'` + */ + root?: string; + /** + * A custom prefix that stack frames will be prepended with. + * + * Default: `'app://'` + * + * This option has slightly different behaviour in the browser and on servers: + * - In the browser, the value you provide in `prefix` will prefix the resulting filename when the value you provided in `root` was applied. Effectively replacing whatever `root` matched in the beginning of the frame with `prefix`. + * - On the server, the prefix is applied to all stackframes with absolute paths. On Windows, the drive identifier (e.g. "C://") is replaced with the prefix. + */ + prefix?: string; + /** + * Defines an iterator that is used to iterate through all of the stack frames for modification before being sent to Sentry. + * Setting this option will effectively disable both the `root` and the `prefix` options. + */ + iteratee?: StackFrameIteratee; +} +/** + * Rewrite event frames paths. + */ +export declare const rewriteFramesIntegration: (options?: RewriteFramesOptions | undefined) => import("..").Integration; +/** + * Exported only for tests. + */ +export declare function generateIteratee({ isBrowser, root, prefix, }: { + isBrowser: boolean; + root?: string; + prefix: string; +}): StackFrameIteratee; +export {}; +//# sourceMappingURL=rewriteframes.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/supabase.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/supabase.d.ts new file mode 100644 index 0000000..2c7cbd9 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/supabase.d.ts @@ -0,0 +1,100 @@ +declare const AUTH_OPERATIONS_TO_INSTRUMENT: string[]; +declare const AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT: string[]; +export declare const FILTER_MAPPINGS: { + eq: string; + neq: string; + gt: string; + gte: string; + lt: string; + lte: string; + like: string; + 'like(all)': string; + 'like(any)': string; + ilike: string; + 'ilike(all)': string; + 'ilike(any)': string; + is: string; + in: string; + cs: string; + cd: string; + sr: string; + nxl: string; + sl: string; + nxr: string; + adj: string; + ov: string; + fts: string; + plfts: string; + phfts: string; + wfts: string; + not: string; +}; +export declare const DB_OPERATIONS_TO_INSTRUMENT: string[]; +type AuthOperationFn = (...args: unknown[]) => Promise; +type AuthOperationName = (typeof AUTH_OPERATIONS_TO_INSTRUMENT)[number]; +type AuthAdminOperationName = (typeof AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT)[number]; +type PostgRESTQueryOperationFn = (...args: unknown[]) => PostgRESTFilterBuilder; +export interface SupabaseClientInstance { + auth: { + admin: Record; + } & Record; +} +export interface PostgRESTQueryBuilder { + [key: string]: PostgRESTQueryOperationFn; +} +export interface PostgRESTFilterBuilder { + method: string; + headers: Record; + url: URL; + schema: string; + body: any; +} +export interface SupabaseResponse { + status?: number; + error?: { + message: string; + code?: string; + details?: unknown; + }; +} +export interface SupabaseError extends Error { + code?: string; + details?: unknown; +} +export interface SupabaseBreadcrumb { + type: string; + category: string; + message: string; + data?: { + query?: string[]; + body?: Record; + }; +} +export interface SupabaseClientConstructor { + prototype: { + from: (table: string) => PostgRESTQueryBuilder; + }; +} +export interface PostgRESTProtoThenable { + then: (onfulfilled?: ((value: T) => T | PromiseLike) | null, onrejected?: ((reason: any) => T | PromiseLike) | null) => Promise; +} +/** + * Extracts the database operation type from the HTTP method and headers + * @param method - The HTTP method of the request + * @param headers - The request headers + * @returns The database operation type ('select', 'insert', 'upsert', 'update', or 'delete') + */ +export declare function extractOperation(method: string, headers?: Record): string; +/** + * Translates Supabase filter parameters into readable method names for tracing + * @param key - The filter key from the URL search parameters + * @param query - The filter value from the URL search parameters + * @returns A string representation of the filter as a method call + */ +export declare function translateFiltersIntoMethods(key: string, query: string): string; +export declare const instrumentSupabaseClient: (supabaseClient: unknown) => void; +export declare const supabaseIntegration: (options: { + supabaseClient: any; +}) => import("../types-hoist/integration").Integration; +export {}; +//# sourceMappingURL=supabase.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/third-party-errors-filter.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/third-party-errors-filter.d.ts new file mode 100644 index 0000000..40f07be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/third-party-errors-filter.d.ts @@ -0,0 +1,35 @@ +interface Options { + /** + * Keys that have been provided in the Sentry bundler plugin via the the `applicationKey` option, identifying your bundles. + * + * - Webpack plugin: https://www.npmjs.com/package/@sentry/webpack-plugin#applicationkey + * - Vite plugin: https://www.npmjs.com/package/@sentry/vite-plugin#applicationkey + * - Esbuild plugin: https://www.npmjs.com/package/@sentry/esbuild-plugin#applicationkey + * - Rollup plugin: https://www.npmjs.com/package/@sentry/rollup-plugin#applicationkey + */ + filterKeys: string[]; + /** + * Defines how the integration should behave. "Third-Party Stack Frames" are stack frames that did not come from files marked with a matching bundle key. + * + * You can define the behaviour with one of 4 modes: + * - `drop-error-if-contains-third-party-frames`: Drop error events that contain at least one third-party stack frame. + * - `drop-error-if-exclusively-contains-third-party-frames`: Drop error events that exclusively contain third-party stack frames. + * - `apply-tag-if-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains at least one third-party stack frame. + * - `apply-tag-if-exclusively-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains exclusively third-party stack frames. + * + * If you chose the mode to only apply tags, the tags can then be used in Sentry to filter your issue stream by entering `!third_party_code:True` in the search bar. + */ + behaviour: 'drop-error-if-contains-third-party-frames' | 'drop-error-if-exclusively-contains-third-party-frames' | 'apply-tag-if-contains-third-party-frames' | 'apply-tag-if-exclusively-contains-third-party-frames'; + /** + * @experimental + * If set to true, the integration will ignore frames that are internal to the Sentry SDK from the third-party frame detection. + * Note that enabling this option might lead to errors being misclassified as third-party errors. + */ + ignoreSentryInternalFrames?: boolean; +} +/** + * This integration allows you to filter out, or tag error events that do not come from user code marked with a bundle key via the Sentry bundler plugins. + */ +export declare const thirdPartyErrorFilterIntegration: (options: Options) => import("..").Integration; +export {}; +//# sourceMappingURL=third-party-errors-filter.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/zoderrors.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/zoderrors.d.ts new file mode 100644 index 0000000..24bf758 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/integrations/zoderrors.d.ts @@ -0,0 +1,76 @@ +import { Event, EventHint } from '../types-hoist/event'; +interface ZodErrorsOptions { + key?: string; + /** + * Limits the number of Zod errors inlined in each Sentry event. + * + * @default 10 + */ + limit?: number; + /** + * Save full list of Zod issues as an attachment in Sentry + * + * @default false + */ + saveZodIssuesAsAttachment?: boolean; +} +/** + * Simplified ZodIssue type definition + */ +interface ZodIssue { + path: (string | number)[]; + message?: string; + expected?: unknown; + received?: unknown; + unionErrors?: unknown[]; + keys?: unknown[]; + invalid_literal?: unknown; +} +interface ZodError extends Error { + issues: ZodIssue[]; +} +type SingleLevelZodIssue = { + [P in keyof T]: T[P] extends string | number | undefined ? T[P] : T[P] extends unknown[] ? string | undefined : unknown; +}; +/** + * Formats child objects or arrays to a string + * that is preserved when sent to Sentry. + * + * Without this, we end up with something like this in Sentry: + * + * [ + * [Object], + * [Object], + * [Object], + * [Object] + * ] + */ +export declare function flattenIssue(issue: ZodIssue): SingleLevelZodIssue; +/** + * Takes ZodError issue path array and returns a flattened version as a string. + * This makes it easier to display paths within a Sentry error message. + * + * Array indexes are normalized to reduce duplicate entries + * + * @param path ZodError issue path + * @returns flattened path + * + * @example + * flattenIssuePath([0, 'foo', 1, 'bar']) // -> '.foo..bar' + */ +export declare function flattenIssuePath(path: Array): string; +/** + * Zod error message is a stringified version of ZodError.issues + * This doesn't display well in the Sentry UI. Replace it with something shorter. + */ +export declare function formatIssueMessage(zodError: ZodError): string; +/** + * Applies ZodError issues to an event extra and replaces the error message + */ +export declare function applyZodErrorsToEvent(limit: number, saveZodIssuesAsAttachment: boolean | undefined, event: Event, hint: EventHint): Event; +/** + * Sentry integration to process Zod errors, making them easier to work with in Sentry. + */ +export declare const zodErrorsIntegration: (options?: ZodErrorsOptions | undefined) => import("../types-hoist/integration").Integration; +export {}; +//# sourceMappingURL=zoderrors.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/console-integration.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/console-integration.d.ts new file mode 100644 index 0000000..04f4ed4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/console-integration.d.ts @@ -0,0 +1,27 @@ +import { ConsoleLevel } from '../types-hoist/instrument'; +interface CaptureConsoleOptions { + levels: ConsoleLevel[]; +} +/** + * Captures calls to the `console` API as logs in Sentry. Requires the `enableLogs` option to be enabled. + * + * @experimental This feature is experimental and may be changed or removed in future versions. + * + * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`, + * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which + * levels are captured. + * + * @example + * + * ```ts + * import * as Sentry from '@sentry/browser'; + * + * Sentry.init({ + * enableLogs: true, + * integrations: [Sentry.consoleLoggingIntegration({ levels: ['error', 'warn'] })], + * }); + * ``` + */ +export declare const consoleLoggingIntegration: (options?: Partial | undefined) => import("../types-hoist/integration").Integration; +export {}; +//# sourceMappingURL=console-integration.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/constants.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/constants.d.ts new file mode 100644 index 0000000..1a0f45e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/constants.d.ts @@ -0,0 +1,8 @@ +import { LogSeverityLevel } from '../types-hoist/log'; +/** + * Maps a log severity level to a log severity number. + * + * @see LogSeverityLevel + */ +export declare const SEVERITY_TEXT_TO_SEVERITY_NUMBER: Partial>; +//# sourceMappingURL=constants.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/envelope.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/envelope.d.ts new file mode 100644 index 0000000..dec07a4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/envelope.d.ts @@ -0,0 +1,24 @@ +import { DsnComponents } from '../types-hoist/dsn'; +import { LogContainerItem, LogEnvelope } from '../types-hoist/envelope'; +import { SerializedLog } from '../types-hoist/log'; +import { SdkMetadata } from '../types-hoist/sdkmetadata'; +/** + * Creates a log container envelope item for a list of logs. + * + * @param items - The logs to include in the envelope. + * @returns The created log container envelope item. + */ +export declare function createLogContainerEnvelopeItem(items: Array): LogContainerItem; +/** + * Creates an envelope for a list of logs. + * + * Logs from multiple traces can be included in the same envelope. + * + * @param logs - The logs to include in the envelope. + * @param metadata - The metadata to include in the envelope. + * @param tunnel - The tunnel to include in the envelope. + * @param dsn - The DSN to include in the envelope. + * @returns The created envelope. + */ +export declare function createLogEnvelope(logs: Array, metadata?: SdkMetadata, tunnel?: string, dsn?: DsnComponents): LogEnvelope; +//# sourceMappingURL=envelope.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/internal.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/internal.d.ts new file mode 100644 index 0000000..e1780af --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/internal.d.ts @@ -0,0 +1,44 @@ +import { Client } from '../client'; +import { Log, SerializedLog } from '../types-hoist/log'; +/** + * Captures a serialized log event and adds it to the log buffer for the given client. + * + * @param client - A client. Uses the current client if not provided. + * @param serializedLog - The serialized log event to capture. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +export declare function _INTERNAL_captureSerializedLog(client: Client, serializedLog: SerializedLog): void; +/** + * Captures a log event and sends it to Sentry. + * + * @param log - The log event to capture. + * @param scope - A scope. Uses the current scope if not provided. + * @param client - A client. Uses the current client if not provided. + * @param captureSerializedLog - A function to capture the serialized log. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +export declare function _INTERNAL_captureLog(beforeLog: Log, currentScope?: import("..").Scope, captureSerializedLog?: (client: Client, log: SerializedLog) => void): void; +/** + * Flushes the logs buffer to Sentry. + * + * @param client - A client. + * @param maybeLogBuffer - A log buffer. Uses the log buffer for the given client if not provided. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +export declare function _INTERNAL_flushLogsBuffer(client: Client, maybeLogBuffer?: Array): void; +/** + * Returns the log buffer for a given client. + * + * Exported for testing purposes. + * + * @param client - The client to get the log buffer for. + * @returns The log buffer for the given client. + */ +export declare function _INTERNAL_getLogBuffer(client: Client): Array | undefined; +//# sourceMappingURL=internal.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/public-api.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/public-api.d.ts new file mode 100644 index 0000000..4947e53 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/public-api.d.ts @@ -0,0 +1,183 @@ +import { Scope } from '../scope'; +import { Log } from '../types-hoist/log'; +import { ParameterizedString } from '../types-hoist/parameterize'; +/** + * Additional metadata to capture the log with. + */ +interface CaptureLogMetadata { + scope?: Scope; +} +/** + * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { userId: 100, route: '/dashboard' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.trace('User clicked submit button', { + * buttonId: 'submit-form', + * formId: 'user-profile', + * timestamp: Date.now() + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.trace(Sentry.logger.fmt`User ${user} navigated to ${page}`, { + * userId: '123', + * sessionId: 'abc-xyz' + * }); + * ``` + */ +export declare function trace(message: ParameterizedString, attributes?: Log['attributes'], { scope }?: CaptureLogMetadata): void; +/** + * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { component: 'Header', state: 'loading' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.debug('Component mounted', { + * component: 'UserProfile', + * props: { userId: 123 }, + * renderTime: 150 + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.debug(Sentry.logger.fmt`API request to ${endpoint} failed`, { + * statusCode: 404, + * requestId: 'req-123', + * duration: 250 + * }); + * ``` + */ +export declare function debug(message: ParameterizedString, attributes?: Log['attributes'], { scope }?: CaptureLogMetadata): void; +/** + * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { feature: 'checkout', status: 'completed' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.info('User completed checkout', { + * orderId: 'order-123', + * amount: 99.99, + * paymentMethod: 'credit_card' + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.info(Sentry.logger.fmt`User ${user} updated profile picture`, { + * userId: 'user-123', + * imageSize: '2.5MB', + * timestamp: Date.now() + * }); + * ``` + */ +export declare function info(message: ParameterizedString, attributes?: Log['attributes'], { scope }?: CaptureLogMetadata): void; +/** + * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { browser: 'Chrome', version: '91.0' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.warn('Browser compatibility issue detected', { + * browser: 'Safari', + * version: '14.0', + * feature: 'WebRTC', + * fallback: 'enabled' + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.warn(Sentry.logger.fmt`API endpoint ${endpoint} is deprecated`, { + * recommendedEndpoint: '/api/v2/users', + * sunsetDate: '2024-12-31', + * clientVersion: '1.2.3' + * }); + * ``` + */ +export declare function warn(message: ParameterizedString, attributes?: Log['attributes'], { scope }?: CaptureLogMetadata): void; +/** + * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { error: 'NetworkError', url: '/api/data' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.error('Failed to load user data', { + * error: 'NetworkError', + * url: '/api/users/123', + * statusCode: 500, + * retryCount: 3 + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.error(Sentry.logger.fmt`Payment processing failed for order ${orderId}`, { + * error: 'InsufficientFunds', + * amount: 100.00, + * currency: 'USD', + * userId: 'user-456' + * }); + * ``` + */ +export declare function error(message: ParameterizedString, attributes?: Log['attributes'], { scope }?: CaptureLogMetadata): void; +/** + * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled. + * + * @param message - The message to log. + * @param attributes - Arbitrary structured data that stores information about the log - e.g., { appState: 'corrupted', sessionId: 'abc-123' }. + * @param metadata - additional metadata to capture the log with. + * + * @example + * + * ``` + * Sentry.logger.fatal('Application state corrupted', { + * lastKnownState: 'authenticated', + * sessionId: 'session-123', + * timestamp: Date.now(), + * recoveryAttempted: true + * }); + * ``` + * + * @example With template strings + * + * ``` + * Sentry.logger.fatal(Sentry.logger.fmt`Critical system failure in ${service}`, { + * service: 'payment-processor', + * errorCode: 'CRITICAL_FAILURE', + * affectedUsers: 150, + * timestamp: Date.now() + * }); + * ``` + */ +export declare function fatal(message: ParameterizedString, attributes?: Log['attributes'], { scope }?: CaptureLogMetadata): void; +export { fmt } from '../utils/parameterize'; +//# sourceMappingURL=public-api.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/utils.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/utils.d.ts new file mode 100644 index 0000000..81a47e3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/logs/utils.d.ts @@ -0,0 +1,33 @@ +/** + * Formats the given values into a string. + * + * @param values - The values to format. + * @param normalizeDepth - The depth to normalize the values. + * @param normalizeMaxBreadth - The max breadth to normalize the values. + * @returns The formatted string. + */ +export declare function formatConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string; +/** + * Joins the given values into a string. + * + * @param values - The values to join. + * @param normalizeDepth - The depth to normalize the values. + * @param normalizeMaxBreadth - The max breadth to normalize the values. + * @returns The joined string. + */ +export declare function safeJoinConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string; +/** + * Checks if a string contains console substitution patterns like %s, %d, %i, %f, %o, %O, %c. + * + * @param str - The string to check + * @returns true if the string contains console substitution patterns + */ +export declare function hasConsoleSubstitutions(str: string): boolean; +/** + * Creates template attributes for multiple console arguments. + * + * @param args - The console arguments + * @returns An object with template and parameter attributes + */ +export declare function createConsoleTemplateAttributes(firstArg: unknown, followingArgs: unknown[]): Record; +//# sourceMappingURL=utils.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metadata.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metadata.d.ts new file mode 100644 index 0000000..7423897 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metadata.d.ts @@ -0,0 +1,27 @@ +import { Event } from './types-hoist/event'; +import { StackParser } from './types-hoist/stacktrace'; +/** + * Builds a map of filenames to module metadata from the global _sentryModuleMetadata object. + * This is useful for forwarding metadata from web workers to the main thread. + * + * @param parser - Stack parser to use for extracting filenames from stack traces + * @returns A map of filename to metadata object + */ +export declare function getFilenameToMetadataMap(parser: StackParser): Record; +/** + * Retrieve metadata for a specific JavaScript file URL. + * + * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option. + */ +export declare function getMetadataForUrl(parser: StackParser, filename: string): any | undefined; +/** + * Adds metadata to stack frames. + * + * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option. + */ +export declare function addMetadataToStackFrames(parser: StackParser, event: Event): void; +/** + * Strips metadata from stack frames. + */ +export declare function stripMetadataFromStackFrames(event: Event): void; +//# sourceMappingURL=metadata.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metrics/envelope.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metrics/envelope.d.ts new file mode 100644 index 0000000..5d6ea77 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metrics/envelope.d.ts @@ -0,0 +1,24 @@ +import { DsnComponents } from '../types-hoist/dsn'; +import { MetricContainerItem, MetricEnvelope } from '../types-hoist/envelope'; +import { SerializedMetric } from '../types-hoist/metric'; +import { SdkMetadata } from '../types-hoist/sdkmetadata'; +/** + * Creates a metric container envelope item for a list of metrics. + * + * @param items - The metrics to include in the envelope. + * @returns The created metric container envelope item. + */ +export declare function createMetricContainerEnvelopeItem(items: Array): MetricContainerItem; +/** + * Creates an envelope for a list of metrics. + * + * Metrics from multiple traces can be included in the same envelope. + * + * @param metrics - The metrics to include in the envelope. + * @param metadata - The metadata to include in the envelope. + * @param tunnel - The tunnel to include in the envelope. + * @param dsn - The DSN to include in the envelope. + * @returns The created envelope. + */ +export declare function createMetricEnvelope(metrics: Array, metadata?: SdkMetadata, tunnel?: string, dsn?: DsnComponents): MetricEnvelope; +//# sourceMappingURL=envelope.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metrics/internal.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metrics/internal.d.ts new file mode 100644 index 0000000..003d026 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metrics/internal.d.ts @@ -0,0 +1,56 @@ +import { Client } from '../client'; +import { Scope } from '../scope'; +import { Metric, SerializedMetric } from '../types-hoist/metric'; +/** + * Captures a serialized metric event and adds it to the metric buffer for the given client. + * + * @param client - A client. Uses the current client if not provided. + * @param serializedMetric - The serialized metric event to capture. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +export declare function _INTERNAL_captureSerializedMetric(client: Client, serializedMetric: SerializedMetric): void; +/** + * Options for capturing a metric internally. + */ +export interface InternalCaptureMetricOptions { + /** + * The scope to capture the metric with. + */ + scope?: Scope; + /** + * A function to capture the serialized metric. + */ + captureSerializedMetric?: (client: Client, metric: SerializedMetric) => void; +} +/** + * Captures a metric event and sends it to Sentry. + * + * @param metric - The metric event to capture. + * @param options - Options for capturing the metric. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +export declare function _INTERNAL_captureMetric(beforeMetric: Metric, options?: InternalCaptureMetricOptions): void; +/** + * Flushes the metrics buffer to Sentry. + * + * @param client - A client. + * @param maybeMetricBuffer - A metric buffer. Uses the metric buffer for the given client if not provided. + * + * @experimental This method will experience breaking changes. This is not yet part of + * the stable Sentry SDK API and can be changed or removed without warning. + */ +export declare function _INTERNAL_flushMetricsBuffer(client: Client, maybeMetricBuffer?: Array): void; +/** + * Returns the metric buffer for a given client. + * + * Exported for testing purposes. + * + * @param client - The client to get the metric buffer for. + * @returns The metric buffer for the given client. + */ +export declare function _INTERNAL_getMetricBuffer(client: Client): Array | undefined; +//# sourceMappingURL=internal.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metrics/public-api.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metrics/public-api.d.ts new file mode 100644 index 0000000..9e4b200 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/metrics/public-api.d.ts @@ -0,0 +1,113 @@ +import { Scope } from '../scope'; +import { Metric } from '../types-hoist/metric'; +/** + * Options for capturing a metric. + */ +export interface MetricOptions { + /** + * The unit of the metric value. + */ + unit?: string; + /** + * Arbitrary structured data that stores information about the metric. + */ + attributes?: Metric['attributes']; + /** + * The scope to capture the metric with. + */ + scope?: Scope; +} +/** + * @summary Increment a counter metric. Requires the `_experiments.enableMetrics` option to be enabled. + * + * @param name - The name of the counter metric. + * @param value - The value to increment by (defaults to 1). + * @param options - Options for capturing the metric. + * + * @example + * + * ``` + * Sentry.metrics.count('api.requests', 1, { + * attributes: { + * endpoint: '/api/users', + * method: 'GET', + * status: 200 + * } + * }); + * ``` + * + * @example With custom value + * + * ``` + * Sentry.metrics.count('items.processed', 5, { + * attributes: { + * processor: 'batch-processor', + * queue: 'high-priority' + * } + * }); + * ``` + */ +export declare function count(name: string, value?: number, options?: MetricOptions): void; +/** + * @summary Set a gauge metric to a specific value. Requires the `_experiments.enableMetrics` option to be enabled. + * + * @param name - The name of the gauge metric. + * @param value - The current value of the gauge. + * @param options - Options for capturing the metric. + * + * @example + * + * ``` + * Sentry.metrics.gauge('memory.usage', 1024, { + * unit: 'megabyte', + * attributes: { + * process: 'web-server', + * region: 'us-east-1' + * } + * }); + * ``` + * + * @example Without unit + * + * ``` + * Sentry.metrics.gauge('active.connections', 42, { + * attributes: { + * server: 'api-1', + * protocol: 'websocket' + * } + * }); + * ``` + */ +export declare function gauge(name: string, value: number, options?: MetricOptions): void; +/** + * @summary Record a value in a distribution metric. Requires the `_experiments.enableMetrics` option to be enabled. + * + * @param name - The name of the distribution metric. + * @param value - The value to record in the distribution. + * @param options - Options for capturing the metric. + * + * @example + * + * ``` + * Sentry.metrics.distribution('task.duration', 500, { + * unit: 'millisecond', + * attributes: { + * task: 'data-processing', + * priority: 'high' + * } + * }); + * ``` + * + * @example Without unit + * + * ``` + * Sentry.metrics.distribution('batch.size', 100, { + * attributes: { + * processor: 'batch-1', + * type: 'async' + * } + * }); + * ``` + */ +export declare function distribution(name: string, value: number, options?: MetricOptions): void; +//# sourceMappingURL=public-api.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/profiling.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/profiling.d.ts new file mode 100644 index 0000000..bfbcc7e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/profiling.d.ts @@ -0,0 +1,8 @@ +import { Profiler } from './types-hoist/profiling'; +/** + * Profiler namespace for controlling the profiler in 'manual' mode. + * + * Requires the `nodeProfilingIntegration` from the `@sentry/profiling-node` package. + */ +export declare const profiler: Profiler; +//# sourceMappingURL=profiling.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/report-dialog.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/report-dialog.d.ts new file mode 100644 index 0000000..35465ec --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/report-dialog.d.ts @@ -0,0 +1,29 @@ +import { DsnLike } from './types-hoist/dsn'; +/** + * All properties the report dialog supports + */ +export interface ReportDialogOptions extends Record { + eventId?: string; + dsn?: DsnLike; + user?: { + email?: string; + name?: string; + }; + lang?: string; + title?: string; + subtitle?: string; + subtitle2?: string; + labelName?: string; + labelEmail?: string; + labelComments?: string; + labelClose?: string; + labelSubmit?: string; + errorGeneric?: string; + errorFormEntry?: string; + successMessage?: string; + /** Callback after reportDialog showed up */ + onLoad?(this: void): void; + /** Callback after reportDialog closed */ + onClose?(this: void): void; +} +//# sourceMappingURL=report-dialog.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/scope.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/scope.d.ts new file mode 100644 index 0000000..398a824 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/scope.d.ts @@ -0,0 +1,358 @@ +import { AttributeObject, RawAttribute, RawAttributes } from './attributes'; +import { Client } from './client'; +import { Attachment } from './types-hoist/attachment'; +import { Breadcrumb } from './types-hoist/breadcrumb'; +import { Context, Contexts } from './types-hoist/context'; +import { DynamicSamplingContext } from './types-hoist/envelope'; +import { Event, EventHint } from './types-hoist/event'; +import { EventProcessor } from './types-hoist/eventprocessor'; +import { Extra, Extras } from './types-hoist/extra'; +import { Primitive } from './types-hoist/misc'; +import { RequestEventData } from './types-hoist/request'; +import { Session } from './types-hoist/session'; +import { SeverityLevel } from './types-hoist/severity'; +import { Span } from './types-hoist/span'; +import { PropagationContext } from './types-hoist/tracing'; +import { User } from './types-hoist/user'; +/** + * A context to be used for capturing an event. + * This can either be a Scope, or a partial ScopeContext, + * or a callback that receives the current scope and returns a new scope to use. + */ +export type CaptureContext = Scope | Partial | ((scope: Scope) => Scope); +/** + * Data that can be converted to a Scope. + */ +export interface ScopeContext { + user: User; + level: SeverityLevel; + extra: Extras; + contexts: Contexts; + tags: { + [key: string]: Primitive; + }; + attributes?: RawAttributes>; + fingerprint: string[]; + propagationContext: PropagationContext; + conversationId?: string; +} +export interface SdkProcessingMetadata { + [key: string]: unknown; + requestSession?: { + status: 'ok' | 'errored' | 'crashed'; + }; + normalizedRequest?: RequestEventData; + dynamicSamplingContext?: Partial; + capturedSpanScope?: Scope; + capturedSpanIsolationScope?: Scope; + spanCountBeforeProcessing?: number; + ipAddress?: string; +} +/** + * Normalized data of the Scope, ready to be used. + */ +export interface ScopeData { + eventProcessors: EventProcessor[]; + breadcrumbs: Breadcrumb[]; + user: User; + tags: { + [key: string]: Primitive; + }; + attributes?: RawAttributes>; + extra: Extras; + contexts: Contexts; + attachments: Attachment[]; + propagationContext: PropagationContext; + sdkProcessingMetadata: SdkProcessingMetadata; + fingerprint: string[]; + level?: SeverityLevel; + transactionName?: string; + span?: Span; + conversationId?: string; +} +/** + * Holds additional event information. + */ +export declare class Scope { + /** Flag if notifying is happening. */ + protected _notifyingListeners: boolean; + /** Callback for client to receive scope changes. */ + protected _scopeListeners: Array<(scope: Scope) => void>; + /** Callback list that will be called during event processing. */ + protected _eventProcessors: EventProcessor[]; + /** Array of breadcrumbs. */ + protected _breadcrumbs: Breadcrumb[]; + /** User */ + protected _user: User; + /** Tags */ + protected _tags: { + [key: string]: Primitive; + }; + /** Attributes */ + protected _attributes: RawAttributes>; + /** Extra */ + protected _extra: Extras; + /** Contexts */ + protected _contexts: Contexts; + /** Attachments */ + protected _attachments: Attachment[]; + /** Propagation Context for distributed tracing */ + protected _propagationContext: PropagationContext; + /** + * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get + * sent to Sentry + */ + protected _sdkProcessingMetadata: SdkProcessingMetadata; + /** Fingerprint */ + protected _fingerprint?: string[]; + /** Severity */ + protected _level?: SeverityLevel; + /** + * Transaction Name + * + * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects. + * It's purpose is to assign a transaction to the scope that's added to non-transaction events. + */ + protected _transactionName?: string; + /** Session */ + protected _session?: Session; + /** The client on this scope */ + protected _client?: Client; + /** Contains the last event id of a captured event. */ + protected _lastEventId?: string; + /** Conversation ID */ + protected _conversationId?: string; + constructor(); + /** + * Clone all data from this scope into a new scope. + */ + clone(): Scope; + /** + * Update the client assigned to this scope. + * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client, + * as well as manually created scopes. + */ + setClient(client: Client | undefined): void; + /** + * Set the ID of the last captured error event. + * This is generally only captured on the isolation scope. + */ + setLastEventId(lastEventId: string | undefined): void; + /** + * Get the client assigned to this scope. + */ + getClient(): C | undefined; + /** + * Get the ID of the last captured error event. + * This is generally only available on the isolation scope. + */ + lastEventId(): string | undefined; + /** + * @inheritDoc + */ + addScopeListener(callback: (scope: Scope) => void): void; + /** + * Add an event processor that will be called before an event is sent. + */ + addEventProcessor(callback: EventProcessor): this; + /** + * Set the user for this scope. + * Set to `null` to unset the user. + */ + setUser(user: User | null): this; + /** + * Get the user from this scope. + */ + getUser(): User | undefined; + /** + * Set the conversation ID for this scope. + * Set to `null` to unset the conversation ID. + */ + setConversationId(conversationId: string | null | undefined): this; + /** + * Set an object that will be merged into existing tags on the scope, + * and will be sent as tags data with the event. + */ + setTags(tags: { + [key: string]: Primitive; + }): this; + /** + * Set a single tag that will be sent as tags data with the event. + */ + setTag(key: string, value: Primitive): this; + /** + * Sets attributes onto the scope. + * + * These attributes are currently applied to logs and metrics. + * In the future, they will also be applied to spans. + * + * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for + * more complex attribute types. We'll add this support in the future but already specify the wider type to + * avoid a breaking change in the future. + * + * @param newAttributes - The attributes to set on the scope. You can either pass in key-value pairs, or + * an object with a `value` and an optional `unit` (if applicable to your attribute). + * + * @example + * ```typescript + * scope.setAttributes({ + * is_admin: true, + * payment_selection: 'credit_card', + * render_duration: { value: 'render_duration', unit: 'ms' }, + * }); + * ``` + */ + setAttributes>(newAttributes: RawAttributes): this; + /** + * Sets an attribute onto the scope. + * + * These attributes are currently applied to logs and metrics. + * In the future, they will also be applied to spans. + * + * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for + * more complex attribute types. We'll add this support in the future but already specify the wider type to + * avoid a breaking change in the future. + * + * @param key - The attribute key. + * @param value - the attribute value. You can either pass in a raw value, or an attribute + * object with a `value` and an optional `unit` (if applicable to your attribute). + * + * @example + * ```typescript + * scope.setAttribute('is_admin', true); + * scope.setAttribute('render_duration', { value: 'render_duration', unit: 'ms' }); + * ``` + */ + setAttribute extends { + value: any; + } | { + unit: any; + } ? AttributeObject : unknown>(key: string, value: RawAttribute): this; + /** + * Removes the attribute with the given key from the scope. + * + * @param key - The attribute key. + * + * @example + * ```typescript + * scope.removeAttribute('is_admin'); + * ``` + */ + removeAttribute(key: string): this; + /** + * Set an object that will be merged into existing extra on the scope, + * and will be sent as extra data with the event. + */ + setExtras(extras: Extras): this; + /** + * Set a single key:value extra entry that will be sent as extra data with the event. + */ + setExtra(key: string, extra: Extra): this; + /** + * Sets the fingerprint on the scope to send with the events. + * @param {string[]} fingerprint Fingerprint to group events in Sentry. + */ + setFingerprint(fingerprint: string[]): this; + /** + * Sets the level on the scope for future events. + */ + setLevel(level: SeverityLevel): this; + /** + * Sets the transaction name on the scope so that the name of e.g. taken server route or + * the page location is attached to future events. + * + * IMPORTANT: Calling this function does NOT change the name of the currently active + * root span. If you want to change the name of the active root span, use + * `Sentry.updateSpanName(rootSpan, 'new name')` instead. + * + * By default, the SDK updates the scope's transaction name automatically on sensible + * occasions, such as a page navigation or when handling a new request on the server. + */ + setTransactionName(name?: string): this; + /** + * Sets context data with the given name. + * Data passed as context will be normalized. You can also pass `null` to unset the context. + * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key. + */ + setContext(key: string, context: Context | null): this; + /** + * Set the session for the scope. + */ + setSession(session?: Session): this; + /** + * Get the session from the scope. + */ + getSession(): Session | undefined; + /** + * Updates the scope with provided data. Can work in three variations: + * - plain object containing updatable attributes + * - Scope instance that'll extract the attributes from + * - callback function that'll receive the current scope as an argument and allow for modifications + */ + update(captureContext?: CaptureContext): this; + /** + * Clears the current scope and resets its properties. + * Note: The client will not be cleared. + */ + clear(): this; + /** + * Adds a breadcrumb to the scope. + * By default, the last 100 breadcrumbs are kept. + */ + addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this; + /** + * Get the last breadcrumb of the scope. + */ + getLastBreadcrumb(): Breadcrumb | undefined; + /** + * Clear all breadcrumbs from the scope. + */ + clearBreadcrumbs(): this; + /** + * Add an attachment to the scope. + */ + addAttachment(attachment: Attachment): this; + /** + * Clear all attachments from the scope. + */ + clearAttachments(): this; + /** + * Get the data of this scope, which should be applied to an event during processing. + */ + getScopeData(): ScopeData; + /** + * Add data which will be accessible during event processing but won't get sent to Sentry. + */ + setSDKProcessingMetadata(newData: SdkProcessingMetadata): this; + /** + * Add propagation context to the scope, used for distributed tracing + */ + setPropagationContext(context: PropagationContext): this; + /** + * Get propagation context from the scope, used for distributed tracing + */ + getPropagationContext(): PropagationContext; + /** + * Capture an exception for this scope. + * + * @returns {string} The id of the captured Sentry event. + */ + captureException(exception: unknown, hint?: EventHint): string; + /** + * Capture a message for this scope. + * + * @returns {string} The id of the captured message. + */ + captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string; + /** + * Capture a Sentry event for this scope. + * + * @returns {string} The id of the captured event. + */ + captureEvent(event: Event, hint?: EventHint): string; + /** + * This will be called on every set call. + */ + protected _notifyScopeListeners(): void; +} +//# sourceMappingURL=scope.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/sdk.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/sdk.d.ts new file mode 100644 index 0000000..6269aee --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/sdk.d.ts @@ -0,0 +1,17 @@ +import { Client } from './client'; +import { ClientOptions } from './types-hoist/options'; +/** A class object that can instantiate Client objects. */ +export type ClientClass = new (options: O) => F; +/** + * Internal function to create a new SDK client instance. The client is + * installed and then bound to the current scope. + * + * @param clientClass The client class to instantiate. + * @param options Options to pass to the client. + */ +export declare function initAndBind(clientClass: ClientClass, options: O): Client; +/** + * Make the given client the current client. + */ +export declare function setCurrentClient(client: Client): void; +//# sourceMappingURL=sdk.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/semanticAttributes.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/semanticAttributes.d.ts new file mode 100644 index 0000000..091d7b4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/semanticAttributes.d.ts @@ -0,0 +1,78 @@ +/** + * Use this attribute to represent the source of a span. + * Should be one of: custom, url, route, view, component, task, unknown + * + */ +export declare const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = "sentry.source"; +/** + * Attributes that holds the sample rate that was locally applied to a span. + * If this attribute is not defined, it means that the span inherited a sampling decision. + * + * NOTE: Is only defined on root spans. + */ +export declare const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = "sentry.sample_rate"; +/** + * Attribute holding the sample rate of the previous trace. + * This is used to sample consistently across subsequent traces in the browser SDK. + * + * Note: Only defined on root spans, if opted into consistent sampling + */ +export declare const SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = "sentry.previous_trace_sample_rate"; +/** + * Use this attribute to represent the operation of a span. + */ +export declare const SEMANTIC_ATTRIBUTE_SENTRY_OP = "sentry.op"; +/** + * Use this attribute to represent the origin of a span. + */ +export declare const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = "sentry.origin"; +/** The reason why an idle span finished. */ +export declare const SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = "sentry.idle_span_finish_reason"; +/** The unit of a measurement, which may be stored as a TimedEvent. */ +export declare const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = "sentry.measurement_unit"; +/** The value of a measurement, which may be stored as a TimedEvent. */ +export declare const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = "sentry.measurement_value"; +/** + * A custom span name set by users guaranteed to be taken over any automatically + * inferred name. This attribute is removed before the span is sent. + * + * @internal only meant for internal SDK usage + * @hidden + */ +export declare const SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = "sentry.custom_span_name"; +/** + * The id of the profile that this span occurred in. + */ +export declare const SEMANTIC_ATTRIBUTE_PROFILE_ID = "sentry.profile_id"; +export declare const SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = "sentry.exclusive_time"; +export declare const SEMANTIC_ATTRIBUTE_CACHE_HIT = "cache.hit"; +export declare const SEMANTIC_ATTRIBUTE_CACHE_KEY = "cache.key"; +export declare const SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = "cache.item_size"; +/** TODO: Remove these once we update to latest semantic conventions */ +export declare const SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = "http.request.method"; +export declare const SEMANTIC_ATTRIBUTE_URL_FULL = "url.full"; +/** + * A span link attribute to mark the link as a special span link. + * + * Known values: + * - `previous_trace`: The span links to the frontend root span of the previous trace. + * - `next_trace`: The span links to the frontend root span of the next trace. (Not set by the SDK) + * + * Other values may be set as appropriate. + * @see https://develop.sentry.dev/sdk/telemetry/traces/span-links/#link-types + */ +export declare const SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = "sentry.link.type"; +/** + * ============================================================================= + * GEN AI ATTRIBUTES + * Based on OpenTelemetry Semantic Conventions for Generative AI + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/ + * ============================================================================= + */ +/** + * The conversation ID for linking messages across API calls. + * For OpenAI Assistants API: thread_id + * For LangGraph: configurable.thread_id + */ +export declare const GEN_AI_CONVERSATION_ID_ATTRIBUTE = "gen_ai.conversation.id"; +//# sourceMappingURL=semanticAttributes.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/server-runtime-client.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/server-runtime-client.d.ts new file mode 100644 index 0000000..80da6ae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/server-runtime-client.d.ts @@ -0,0 +1,59 @@ +import { Client } from './client'; +import { Scope } from './scope'; +import { CheckIn, MonitorConfig } from './types-hoist/checkin'; +import { Event, EventHint } from './types-hoist/event'; +import { ClientOptions } from './types-hoist/options'; +import { ParameterizedString } from './types-hoist/parameterize'; +import { SeverityLevel } from './types-hoist/severity'; +import { BaseTransportOptions } from './types-hoist/transport'; +export interface ServerRuntimeClientOptions extends ClientOptions { + platform?: string; + runtime?: { + name: string; + version?: string; + }; + serverName?: string; +} +/** + * The Sentry Server Runtime Client SDK. + */ +export declare class ServerRuntimeClient extends Client { + /** + * Creates a new Edge SDK instance. + * @param options Configuration options for this SDK. + */ + constructor(options: O); + /** + * @inheritDoc + */ + eventFromException(exception: unknown, hint?: EventHint): PromiseLike; + /** + * @inheritDoc + */ + eventFromMessage(message: ParameterizedString, level?: SeverityLevel, hint?: EventHint): PromiseLike; + /** + * @inheritDoc + */ + captureException(exception: unknown, hint?: EventHint, scope?: Scope): string; + /** + * @inheritDoc + */ + captureEvent(event: Event, hint?: EventHint, scope?: Scope): string; + /** + * Create a cron monitor check in and send it to Sentry. + * + * @param checkIn An object that describes a check in. + * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want + * to create a monitor automatically when sending a check in. + */ + captureCheckIn(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string; + /** + * @inheritDoc + */ + protected _prepareEvent(event: Event, hint: EventHint, currentScope: Scope, isolationScope: Scope): PromiseLike; + /** + * Process a server-side metric before it is captured. + */ + private _setUpMetricsProcessing; +} +//# sourceMappingURL=server-runtime-client.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/session.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/session.d.ts new file mode 100644 index 0000000..ba54b95 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/session.d.ts @@ -0,0 +1,35 @@ +import { Session, SessionContext, SessionStatus } from './types-hoist/session'; +/** + * Creates a new `Session` object by setting certain default parameters. If optional @param context + * is passed, the passed properties are applied to the session object. + * + * @param context (optional) additional properties to be applied to the returned session object + * + * @returns a new `Session` object + */ +export declare function makeSession(context?: Pick>): Session; +/** + * Updates a session object with the properties passed in the context. + * + * Note that this function mutates the passed object and returns void. + * (Had to do this instead of returning a new and updated session because closing and sending a session + * makes an update to the session after it was passed to the sending logic. + * @see Client.captureSession ) + * + * @param session the `Session` to update + * @param context the `SessionContext` holding the properties that should be updated in @param session + */ +export declare function updateSession(session: Session, context?: SessionContext): void; +/** + * Closes a session by setting its status and updating the session object with it. + * Internally calls `updateSession` to update the passed session object. + * + * Note that this function mutates the passed session (@see updateSession for explanation). + * + * @param session the `Session` object to be closed + * @param status the `SessionStatus` with which the session was closed. If you don't pass a status, + * this function will keep the previously set status, unless it was `'ok'` in which case + * it is changed to `'exited'`. + */ +export declare function closeSession(session: Session, status?: Exclude): void; +//# sourceMappingURL=session.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/ai/gen-ai-attributes.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/ai/gen-ai-attributes.d.ts new file mode 100644 index 0000000..2756084 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/ai/gen-ai-attributes.d.ts @@ -0,0 +1,245 @@ +/** + * OpenAI Integration Telemetry Attributes + * Based on OpenTelemetry Semantic Conventions for Generative AI + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/ + */ +/** + * The input messages sent to the model + */ +export declare const GEN_AI_PROMPT_ATTRIBUTE = "gen_ai.prompt"; +/** + * The Generative AI system being used + * For OpenAI, this should always be "openai" + */ +export declare const GEN_AI_SYSTEM_ATTRIBUTE = "gen_ai.system"; +/** + * The name of the model as requested + * Examples: "gpt-4", "gpt-3.5-turbo" + */ +export declare const GEN_AI_REQUEST_MODEL_ATTRIBUTE = "gen_ai.request.model"; +/** + * Whether streaming was enabled for the request + */ +export declare const GEN_AI_REQUEST_STREAM_ATTRIBUTE = "gen_ai.request.stream"; +/** + * The temperature setting for the model request + */ +export declare const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = "gen_ai.request.temperature"; +/** + * The maximum number of tokens requested + */ +export declare const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = "gen_ai.request.max_tokens"; +/** + * The frequency penalty setting for the model request + */ +export declare const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = "gen_ai.request.frequency_penalty"; +/** + * The presence penalty setting for the model request + */ +export declare const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = "gen_ai.request.presence_penalty"; +/** + * The top_p (nucleus sampling) setting for the model request + */ +export declare const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = "gen_ai.request.top_p"; +/** + * The top_k setting for the model request + */ +export declare const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = "gen_ai.request.top_k"; +/** + * Stop sequences for the model request + */ +export declare const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = "gen_ai.request.stop_sequences"; +/** + * The encoding format for the model request + */ +export declare const GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = "gen_ai.request.encoding_format"; +/** + * The dimensions for the model request + */ +export declare const GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = "gen_ai.request.dimensions"; +/** + * Array of reasons why the model stopped generating tokens + */ +export declare const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = "gen_ai.response.finish_reasons"; +/** + * The name of the model that generated the response + */ +export declare const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = "gen_ai.response.model"; +/** + * The unique identifier for the response + */ +export declare const GEN_AI_RESPONSE_ID_ATTRIBUTE = "gen_ai.response.id"; +/** + * The reason why the model stopped generating tokens + */ +export declare const GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = "gen_ai.response.stop_reason"; +/** + * The number of tokens used in the prompt + */ +export declare const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = "gen_ai.usage.input_tokens"; +/** + * The number of tokens used in the response + */ +export declare const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = "gen_ai.usage.output_tokens"; +/** + * The total number of tokens used (input + output) + */ +export declare const GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = "gen_ai.usage.total_tokens"; +/** + * The operation name + */ +export declare const GEN_AI_OPERATION_NAME_ATTRIBUTE = "gen_ai.operation.name"; +/** + * Original length of messages array, used to indicate truncations had occured + */ +export declare const GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = "sentry.sdk_meta.gen_ai.input.messages.original_length"; +/** + * The prompt messages + * Only recorded when recordInputs is enabled + */ +export declare const GEN_AI_INPUT_MESSAGES_ATTRIBUTE = "gen_ai.input.messages"; +/** + * The system instructions extracted from system messages + * Only recorded when recordInputs is enabled + * According to OpenTelemetry spec: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-system-instructions + */ +export declare const GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = "gen_ai.system_instructions"; +/** + * The response text + * Only recorded when recordOutputs is enabled + */ +export declare const GEN_AI_RESPONSE_TEXT_ATTRIBUTE = "gen_ai.response.text"; +/** + * The available tools from incoming request + * Only recorded when recordInputs is enabled + */ +export declare const GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = "gen_ai.request.available_tools"; +/** + * Whether the response is a streaming response + */ +export declare const GEN_AI_RESPONSE_STREAMING_ATTRIBUTE = "gen_ai.response.streaming"; +/** + * The tool calls from the response + * Only recorded when recordOutputs is enabled + */ +export declare const GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = "gen_ai.response.tool_calls"; +/** + * The agent name + */ +export declare const GEN_AI_AGENT_NAME_ATTRIBUTE = "gen_ai.agent.name"; +/** + * The pipeline name + */ +export declare const GEN_AI_PIPELINE_NAME_ATTRIBUTE = "gen_ai.pipeline.name"; +/** + * The conversation ID for linking messages across API calls + * For OpenAI Assistants API: thread_id + * For LangGraph: configurable.thread_id + */ +export declare const GEN_AI_CONVERSATION_ID_ATTRIBUTE = "gen_ai.conversation.id"; +/** + * The number of cache creation input tokens used + */ +export declare const GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE = "gen_ai.usage.cache_creation_input_tokens"; +/** + * The number of cache read input tokens used + */ +export declare const GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE = "gen_ai.usage.cache_read_input_tokens"; +/** + * The number of cache write input tokens used + */ +export declare const GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE = "gen_ai.usage.input_tokens.cache_write"; +/** + * The number of cached input tokens that were used + */ +export declare const GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE = "gen_ai.usage.input_tokens.cached"; +/** + * The span operation name for invoking an agent + */ +export declare const GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = "gen_ai.invoke_agent"; +/** + * The span operation name for generating text + */ +export declare const GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = "gen_ai.generate_text"; +/** + * The span operation name for streaming text + */ +export declare const GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = "gen_ai.stream_text"; +/** + * The span operation name for generating object + */ +export declare const GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = "gen_ai.generate_object"; +/** + * The span operation name for streaming object + */ +export declare const GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE = "gen_ai.stream_object"; +/** + * The embeddings input + * Only recorded when recordInputs is enabled + */ +export declare const GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = "gen_ai.embeddings.input"; +/** + * The span operation name for embedding + */ +export declare const GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = "gen_ai.embed"; +/** + * The span operation name for embedding many + */ +export declare const GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = "gen_ai.embed_many"; +/** + * The span operation name for executing a tool + */ +export declare const GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = "gen_ai.execute_tool"; +/** + * The tool name for tool call spans + */ +export declare const GEN_AI_TOOL_NAME_ATTRIBUTE = "gen_ai.tool.name"; +/** + * The tool call ID + */ +export declare const GEN_AI_TOOL_CALL_ID_ATTRIBUTE = "gen_ai.tool.call.id"; +/** + * The tool type (e.g., 'function') + */ +export declare const GEN_AI_TOOL_TYPE_ATTRIBUTE = "gen_ai.tool.type"; +/** + * The tool input/arguments + */ +export declare const GEN_AI_TOOL_INPUT_ATTRIBUTE = "gen_ai.tool.input"; +/** + * The tool output/result + */ +export declare const GEN_AI_TOOL_OUTPUT_ATTRIBUTE = "gen_ai.tool.output"; +/** + * The response ID from OpenAI + */ +export declare const OPENAI_RESPONSE_ID_ATTRIBUTE = "openai.response.id"; +/** + * The response model from OpenAI + */ +export declare const OPENAI_RESPONSE_MODEL_ATTRIBUTE = "openai.response.model"; +/** + * The response timestamp from OpenAI (ISO string) + */ +export declare const OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = "openai.response.timestamp"; +/** + * The number of completion tokens used + */ +export declare const OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = "openai.usage.completion_tokens"; +/** + * The number of prompt tokens used + */ +export declare const OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE = "openai.usage.prompt_tokens"; +/** + * OpenAI API operations following OpenTelemetry semantic conventions + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +export declare const OPENAI_OPERATIONS: { + readonly CHAT: "chat"; + readonly EMBEDDINGS: "embeddings"; +}; +/** + * The response timestamp from Anthropic AI (ISO string) + */ +export declare const ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = "anthropic.response.timestamp"; +//# sourceMappingURL=gen-ai-attributes.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/ai/messageTruncation.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/ai/messageTruncation.d.ts new file mode 100644 index 0000000..c521079 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/ai/messageTruncation.d.ts @@ -0,0 +1,22 @@ +/** + * Default maximum size in bytes for GenAI messages. + * Messages exceeding this limit will be truncated. + */ +export declare const DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000; +/** + * Truncate GenAI messages using the default byte limit. + * + * Convenience wrapper around `truncateMessagesByBytes` with the default limit. + * + * @param messages - Array of messages to truncate + * @returns Truncated array of messages + */ +export declare function truncateGenAiMessages(messages: unknown[]): unknown[]; +/** + * Truncate GenAI string input using the default byte limit. + * + * @param input - The string to truncate + * @returns Truncated string + */ +export declare function truncateGenAiStringInput(input: string): string; +//# sourceMappingURL=messageTruncation.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/ai/utils.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/ai/utils.d.ts new file mode 100644 index 0000000..f9797ce --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/ai/utils.d.ts @@ -0,0 +1,46 @@ +/** + * Shared utils for AI integrations (OpenAI, Anthropic, Verce.AI, etc.) + */ +import { Span } from '../../types-hoist/span'; +/** + * Maps AI method paths to OpenTelemetry semantic convention operation names + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +export declare function getFinalOperationName(methodPath: string): string; +/** + * Get the span operation for AI methods + * Following Sentry's convention: "gen_ai.{operation_name}" + */ +export declare function getSpanOperation(methodPath: string): string; +/** + * Build method path from current traversal + */ +export declare function buildMethodPath(currentPath: string, prop: string): string; +/** + * Set token usage attributes + * @param span - The span to add attributes to + * @param promptTokens - The number of prompt tokens + * @param completionTokens - The number of completion tokens + * @param cachedInputTokens - The number of cached input tokens + * @param cachedOutputTokens - The number of cached output tokens + */ +export declare function setTokenUsageAttributes(span: Span, promptTokens?: number, completionTokens?: number, cachedInputTokens?: number, cachedOutputTokens?: number): void; +/** + * Get the truncated JSON string for a string or array of strings. + * + * @param value - The string or array of strings to truncate + * @returns The truncated JSON string + */ +export declare function getTruncatedJsonString(value: T | T[]): string; +/** + * Extract system instructions from messages array. + * Finds the first system message and formats it according to OpenTelemetry semantic conventions. + * + * @param messages - Array of messages to extract system instructions from + * @returns systemInstructions (JSON string) and filteredMessages (without system message) + */ +export declare function extractSystemInstructions(messages: unknown[] | unknown): { + systemInstructions: string | undefined; + filteredMessages: unknown[] | unknown; +}; +//# sourceMappingURL=utils.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/constants.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/constants.d.ts new file mode 100644 index 0000000..ff857a8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/constants.d.ts @@ -0,0 +1,11 @@ +export declare const ANTHROPIC_AI_INTEGRATION_NAME = "Anthropic_AI"; +export declare const ANTHROPIC_AI_INSTRUMENTED_METHODS: readonly [ + "messages.create", + "messages.stream", + "messages.countTokens", + "models.get", + "completions.create", + "models.retrieve", + "beta.messages.create" +]; +//# sourceMappingURL=constants.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/index.d.ts new file mode 100644 index 0000000..688c072 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/index.d.ts @@ -0,0 +1,12 @@ +import { AnthropicAiOptions } from './types'; +/** + * Instrument an Anthropic AI client with Sentry tracing + * Can be used across Node.js, Cloudflare Workers, and Vercel Edge + * + * @template T - The type of the client that extends object + * @param client - The Anthropic AI client to instrument + * @param options - Optional configuration for recording inputs and outputs + * @returns The instrumented client with the same type as the input + */ +export declare function instrumentAnthropicAiClient(anthropicAiClient: T, options?: AnthropicAiOptions): T; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/streaming.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/streaming.d.ts new file mode 100644 index 0000000..56f04ae --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/streaming.d.ts @@ -0,0 +1,15 @@ +import { Span } from '../../types-hoist/span'; +import { AnthropicAiStreamingEvent } from './types'; +/** + * Instruments an async iterable stream of Anthropic events, updates the span with + * streaming attributes and (optionally) the aggregated output text, and yields + * each event from the input stream unchanged. + */ +export declare function instrumentAsyncIterableStream(stream: AsyncIterable, span: Span, recordOutputs: boolean): AsyncGenerator; +/** + * Instruments a MessageStream by registering event handlers and preserving the original stream API. + */ +export declare function instrumentMessageStream void; +}>(stream: R, span: Span, recordOutputs: boolean): R; +//# sourceMappingURL=streaming.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/types.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/types.d.ts new file mode 100644 index 0000000..f982424 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/types.d.ts @@ -0,0 +1,124 @@ +import { ANTHROPIC_AI_INSTRUMENTED_METHODS } from './constants'; +export interface AnthropicAiOptions { + /** + * Enable or disable input recording. + */ + recordInputs?: boolean; + /** + * Enable or disable output recording. + */ + recordOutputs?: boolean; +} +export type Message = { + role: 'user' | 'assistant'; + content: string | unknown[]; +}; +export type ContentBlock = { + type: 'tool_use' | 'server_tool_use' | string; + text?: string; + /** Tool name when type is tool_use */ + name?: string; + /** Tool invocation id when type is tool_use */ + id?: string; + input?: Record; + tool_use_id?: string; +}; +export type MessageError = { + type: 'error'; + error: { + type: string; + message: string; + }; + request_id: string; +}; +type SuccessfulResponse = { + [key: string]: unknown; + id: string; + model: string; + created?: number; + created_at?: number; + messages?: Array; + content?: string | Array; + completion?: string; + input_tokens?: number; + usage?: { + input_tokens: number; + output_tokens: number; + cache_creation_input_tokens: number; + cache_read_input_tokens: number; + }; + error?: never; +}; +export type AnthropicAiResponse = SuccessfulResponse | MessageError; +/** + * Basic interface for Anthropic AI client with only the instrumented methods + * This provides type safety while being generic enough to work with different client implementations + */ +export interface AnthropicAiClient { + messages?: { + create: (...args: unknown[]) => Promise; + countTokens: (...args: unknown[]) => Promise; + }; + models?: { + list: (...args: unknown[]) => Promise; + get: (...args: unknown[]) => Promise; + }; + completions?: { + create: (...args: unknown[]) => Promise; + }; +} +/** + * Anthropic AI Integration interface for type safety + */ +export interface AnthropicAiIntegration { + name: string; + options: AnthropicAiOptions; +} +export type AnthropicAiInstrumentedMethod = (typeof ANTHROPIC_AI_INSTRUMENTED_METHODS)[number]; +/** + * Message type for Anthropic AI + */ +export type AnthropicAiMessage = { + id: string; + type: 'message'; + role: string; + model: string; + content: unknown[]; + stop_reason: string | null; + stop_sequence: number | null; + usage?: { + input_tokens: number; + cache_creation_input_tokens?: number; + cache_read_input_tokens?: number; + cache_creation?: unknown; + output_tokens?: number; + service_tier?: string; + }; +}; +/** + * Streaming event type for Anthropic AI + */ +export type AnthropicAiStreamingEvent = { + type: 'message_start' | 'message_delta' | 'message_stop' | 'content_block_start' | 'content_block_delta' | 'content_block_stop' | 'error'; + error?: { + type: string; + message: string; + }; + index?: number; + delta?: { + type: unknown; + text?: string; + /** Present for fine-grained tool streaming */ + partial_json?: string; + stop_reason?: string; + stop_sequence?: number; + }; + usage?: { + output_tokens: number; + }; + message?: AnthropicAiMessage; + /** Present for fine-grained tool streaming */ + content_block?: ContentBlock; +}; +export {}; +//# sourceMappingURL=types.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/utils.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/utils.d.ts new file mode 100644 index 0000000..5633a40 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/anthropic-ai/utils.d.ts @@ -0,0 +1,21 @@ +import { Span } from '../../types-hoist/span'; +import { AnthropicAiInstrumentedMethod, AnthropicAiResponse } from './types'; +/** + * Check if a method path should be instrumented + */ +export declare function shouldInstrument(methodPath: string): methodPath is AnthropicAiInstrumentedMethod; +/** + * Set the messages and messages original length attributes. + * Extracts system instructions before truncation. + */ +export declare function setMessagesAttribute(span: Span, messages: unknown): void; +/** + * Capture error information from the response + * @see https://docs.anthropic.com/en/api/errors#error-shapes + */ +export declare function handleResponseError(span: Span, response: AnthropicAiResponse): void; +/** + * Include the system prompt in the messages list, if available + */ +export declare function messagesFromParams(params: Record): unknown[]; +//# sourceMappingURL=utils.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/dynamicSamplingContext.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/dynamicSamplingContext.d.ts new file mode 100644 index 0000000..159e9e7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/dynamicSamplingContext.d.ts @@ -0,0 +1,31 @@ +import { Client } from '../client'; +import { Scope } from '../scope'; +import { DynamicSamplingContext } from '../types-hoist/envelope'; +import { Span } from '../types-hoist/span'; +/** + * Freeze the given DSC on the given span. + */ +export declare function freezeDscOnSpan(span: Span, dsc: Partial): void; +/** + * Creates a dynamic sampling context from a client. + * + * Dispatches the `createDsc` lifecycle hook as a side effect. + */ +export declare function getDynamicSamplingContextFromClient(trace_id: string, client: Client): DynamicSamplingContext; +/** + * Get the dynamic sampling context for the currently active scopes. + */ +export declare function getDynamicSamplingContextFromScope(client: Client, scope: Scope): Partial; +/** + * Creates a dynamic sampling context from a span (and client and scope) + * + * @param span the span from which a few values like the root span name and sample rate are extracted. + * + * @returns a dynamic sampling context + */ +export declare function getDynamicSamplingContextFromSpan(span: Span): Readonly>; +/** + * Convert a Span to a baggage header. + */ +export declare function spanToBaggageHeader(span: Span): string | undefined; +//# sourceMappingURL=dynamicSamplingContext.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/errors.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/errors.d.ts new file mode 100644 index 0000000..2864f6c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/errors.d.ts @@ -0,0 +1,7 @@ +/** Only exposed for testing */ +export declare function _resetErrorsInstrumented(): void; +/** + * Ensure that global errors automatically set the active span status. + */ +export declare function registerSpanErrorInstrumentation(): void; +//# sourceMappingURL=errors.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/constants.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/constants.d.ts new file mode 100644 index 0000000..cd9c948 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/constants.d.ts @@ -0,0 +1,12 @@ +export declare const GOOGLE_GENAI_INTEGRATION_NAME = "Google_GenAI"; +export declare const GOOGLE_GENAI_INSTRUMENTED_METHODS: readonly [ + "models.generateContent", + "models.generateContentStream", + "chats.create", + "sendMessage", + "sendMessageStream" +]; +export declare const GOOGLE_GENAI_SYSTEM_NAME = "google_genai"; +export declare const CHATS_CREATE_METHOD = "chats.create"; +export declare const CHAT_PATH = "chat"; +//# sourceMappingURL=constants.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/index.d.ts new file mode 100644 index 0000000..fadb998 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/index.d.ts @@ -0,0 +1,30 @@ +import { GoogleGenAIOptions } from './types'; +/** + * Extract model from parameters or chat context object + * For chat instances, the model is available on the chat object as 'model' (older versions) or 'modelVersion' (newer versions) + */ +export declare function extractModel(params: Record, context?: unknown): string; +/** + * Instrument a Google GenAI client with Sentry tracing + * Can be used across Node.js, Cloudflare Workers, and Vercel Edge + * + * @template T - The type of the client that extends client object + * @param client - The Google GenAI client to instrument + * @param options - Optional configuration for recording inputs and outputs + * @returns The instrumented client with the same type as the input + * + * @example + * ```typescript + * import { GoogleGenAI } from '@google/genai'; + * import { instrumentGoogleGenAIClient } from '@sentry/core'; + * + * const genAI = new GoogleGenAI({ apiKey: process.env.GOOGLE_GENAI_API_KEY }); + * const instrumentedClient = instrumentGoogleGenAIClient(genAI); + * + * // Now both chats.create and sendMessage will be instrumented + * const chat = instrumentedClient.chats.create({ model: 'gemini-1.5-pro' }); + * const response = await chat.sendMessage({ message: 'Hello' }); + * ``` + */ +export declare function instrumentGoogleGenAIClient(client: T, options?: GoogleGenAIOptions): T; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/streaming.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/streaming.d.ts new file mode 100644 index 0000000..949510b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/streaming.d.ts @@ -0,0 +1,9 @@ +import { Span } from '../../types-hoist/span'; +import { GoogleGenAIResponse } from './types'; +/** + * Instruments an async iterable stream of Google GenAI response chunks, updates the span with + * streaming attributes and (optionally) the aggregated output text, and yields + * each chunk from the input stream unchanged. + */ +export declare function instrumentStream(stream: AsyncIterable, span: Span, recordOutputs: boolean): AsyncGenerator; +//# sourceMappingURL=streaming.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/types.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/types.d.ts new file mode 100644 index 0000000..d53a308 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/types.d.ts @@ -0,0 +1,170 @@ +import { GOOGLE_GENAI_INSTRUMENTED_METHODS } from './constants'; +export interface GoogleGenAIOptions { + /** + * Enable or disable input recording. + */ + recordInputs?: boolean; + /** + * Enable or disable output recording. + */ + recordOutputs?: boolean; +} +/** + * Google GenAI Content Part + * @see https://ai.google.dev/api/rest/v1/Content#Part + * @see https://github.com/googleapis/js-genai/blob/v1.19.0/src/types.ts#L1061 + * + */ +export type ContentPart = { + /** Metadata for a given video. */ + videoMetadata?: unknown; + /** Indicates if the part is thought from the model. */ + thought?: boolean; + /** Optional. Inlined bytes data. */ + inlineData?: Blob; + /** Optional. URI based data. */ + fileData?: unknown; + /** An opaque signature for the thought so it can be reused in subsequent requests. + * @remarks Encoded as base64 string. */ + thoughtSignature?: string; + /** A predicted [FunctionCall] returned from the model that contains a string + representing the [FunctionDeclaration.name] and a structured JSON object + containing the parameters and their values. */ + functionCall?: { + /** The unique id of the function call. If populated, the client to execute the + `function_call` and return the response with the matching `id`. */ + id?: string; + /** Optional. The function parameters and values in JSON object format. See [FunctionDeclaration.parameters] for parameter details. */ + args?: Record; + /** Required. The name of the function to call. Matches [FunctionDeclaration.name]. */ + name?: string; + }; + /** Optional. Result of executing the [ExecutableCode]. */ + codeExecutionResult?: unknown; + /** Optional. Code generated by the model that is meant to be executed. */ + executableCode?: unknown; + /** Optional. The result output of a [FunctionCall] that contains a string representing the [FunctionDeclaration.name] and a structured JSON object containing any output from the function call. It is used as context to the model. */ + functionResponse?: unknown; + /** Optional. Text part (can be code). */ + text?: string; +}; +/** + * Google GenAI Content + * @see https://ai.google.dev/api/rest/v1/Content + */ +type Content = { + /** List of parts that constitute a single message. + * Each part may have a different IANA MIME type. */ + parts?: ContentPart[]; + /** Optional. The producer of the content. Must be either 'user' or + * 'model'. Useful to set for multi-turn conversations, otherwise can be + * empty. If role is not specified, SDK will determine the role. + */ + role?: string; +}; +type MediaModality = 'MODALITY_UNSPECIFIED' | 'TEXT' | 'IMAGE' | 'VIDEO' | 'AUDIO' | 'DOCUMENT'; +/** + * Google GenAI Modality Token Count + * @see https://ai.google.dev/api/rest/v1/ModalityTokenCount + */ +type ModalityTokenCount = { + /** The modality associated with this token count. */ + modality?: MediaModality; + /** Number of tokens. */ + tokenCount?: number; +}; +/** + * Google GenAI Usage Metadata + * @see https://ai.google.dev/api/rest/v1/GenerateContentResponse#UsageMetadata + */ +type GenerateContentResponseUsageMetadata = { + [key: string]: unknown; + /** Output only. List of modalities of the cached content in the request input. */ + cacheTokensDetails?: ModalityTokenCount[]; + /** Output only. Number of tokens in the cached part in the input (the cached content). */ + cachedContentTokenCount?: number; + /** Number of tokens in the response(s). */ + candidatesTokenCount?: number; + /** Output only. List of modalities that were returned in the response. */ + candidatesTokensDetails?: ModalityTokenCount[]; + /** Number of tokens in the request. When `cached_content` is set, this is still the total effective prompt size meaning this includes the number of tokens in the cached content. */ + promptTokenCount?: number; + /** Output only. List of modalities that were processed in the request input. */ + promptTokensDetails?: ModalityTokenCount[]; + /** Output only. Number of tokens present in thoughts output. */ + thoughtsTokenCount?: number; + /** Output only. Number of tokens present in tool-use prompt(s). */ + toolUsePromptTokenCount?: number; + /** Output only. List of modalities that were processed for tool-use request inputs. */ + toolUsePromptTokensDetails?: ModalityTokenCount[]; + /** Total token count for prompt, response candidates, and tool-use prompts (if present). */ + totalTokenCount?: number; +}; +/** + * Google GenAI Candidate + * @see https://ai.google.dev/api/rest/v1/Candidate + * https://github.com/googleapis/js-genai/blob/v1.19.0/src/types.ts#L2237 + */ +export type Candidate = { + [key: string]: unknown; + /** + * Contains the multi-part content of the response. + */ + content?: Content; + /** + * The reason why the model stopped generating tokens. + * If empty, the model has not stopped generating the tokens. + */ + finishReason?: string; + /** + * Number of tokens for this candidate. + */ + tokenCount?: number; + /** + * The index of the candidate. + */ + index?: number; +}; +/** + * Google GenAI Generate Content Response + * @see https://ai.google.dev/api/rest/v1/GenerateContentResponse + */ +type GenerateContentResponse = { + [key: string]: unknown; + /** Response variations returned by the model. */ + candidates?: Candidate[]; + /** Timestamp when the request is made to the server. */ + automaticFunctionCallingHistory?: Content[]; + /** Output only. The model version used to generate the response. */ + modelVersion?: string; + /** Output only. Content filter results for a prompt sent in the request. Note: Sent only in the first stream chunk. Only happens when no candidates were generated due to content violations. */ + promptFeedback?: Record; + /** Output only. response_id is used to identify each response. It is the encoding of the event_id. */ + responseId?: string; + /** Usage metadata about the response(s). */ + usageMetadata?: GenerateContentResponseUsageMetadata; +}; +/** + * Basic interface for Google GenAI client with only the instrumented methods + * This provides type safety while being generic enough to work with different client implementations + */ +export interface GoogleGenAIClient { + models: { + generateContent: (...args: unknown[]) => Promise; + generateContentStream: (...args: unknown[]) => Promise>; + }; + chats: { + create: (...args: unknown[]) => GoogleGenAIChat; + }; +} +/** + * Google GenAI Chat interface for chat instances created via chats.create() + */ +export interface GoogleGenAIChat { + sendMessage: (...args: unknown[]) => Promise; + sendMessageStream: (...args: unknown[]) => Promise>; +} +export type GoogleGenAIIstrumentedMethod = (typeof GOOGLE_GENAI_INSTRUMENTED_METHODS)[number]; +export type GoogleGenAIResponse = GenerateContentResponse; +export {}; +//# sourceMappingURL=types.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/utils.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/utils.d.ts new file mode 100644 index 0000000..4342388 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/google-genai/utils.d.ts @@ -0,0 +1,35 @@ +import { GoogleGenAIIstrumentedMethod } from './types'; +/** + * Check if a method path should be instrumented + */ +export declare function shouldInstrument(methodPath: string): methodPath is GoogleGenAIIstrumentedMethod; +/** + * Check if a method is a streaming method + */ +export declare function isStreamingMethod(methodPath: string): boolean; +export type ContentListUnion = Content | Content[] | PartListUnion; +export type ContentUnion = Content | PartUnion[] | PartUnion; +export type Content = { + parts?: Part[]; + role?: string; +}; +export type PartUnion = Part | string; +export type Part = Record & { + inlineData?: { + data?: string; + displayName?: string; + mimeType?: string; + }; + text?: string; +}; +export type PartListUnion = PartUnion[] | PartUnion; +export type Message = Record & { + role: string; + content?: PartListUnion; + parts?: PartListUnion; +}; +/** + * + */ +export declare function contentUnionToMessages(content: ContentListUnion, role?: string): Message[]; +//# sourceMappingURL=utils.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/idleSpan.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/idleSpan.d.ts new file mode 100644 index 0000000..47f439d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/idleSpan.d.ts @@ -0,0 +1,49 @@ +import { Span } from '../types-hoist/span'; +import { StartSpanOptions } from '../types-hoist/startSpanOptions'; +export declare const TRACING_DEFAULTS: { + idleTimeout: number; + finalTimeout: number; + childSpanTimeout: number; +}; +interface IdleSpanOptions { + /** + * The time that has to pass without any span being created. + * If this time is exceeded, the idle span will finish. + */ + idleTimeout: number; + /** + * The max. time an idle span may run. + * If this time is exceeded, the idle span will finish no matter what. + */ + finalTimeout: number; + /** + * The max. time a child span may run. + * If the time since the last span was started exceeds this time, the idle span will finish. + */ + childSpanTimeout?: number; + /** + * When set to `true`, will disable the idle timeout and child timeout + * until the `idleSpanEnableAutoFinish` hook is emitted for the idle span. + * The final timeout mechanism will not be affected by this option, + * meaning the idle span will definitely be finished when the final timeout is + * reached, no matter what this option is configured to. + * + * Defaults to `false`. + */ + disableAutoFinish?: boolean; + /** Allows to configure a hook that is called when the idle span is ended, before it is processed. */ + beforeSpanEnd?: (span: Span) => void; + /** + * If set to `true`, the idle span will be trimmed to the latest span end timestamp of its children. + * + * @default `true`. + */ + trimIdleSpanEndTimestamp?: boolean; +} +/** + * An idle span is a span that automatically finishes. It does this by tracking child spans as activities. + * An idle span is always the active span. + */ +export declare function startIdleSpan(startSpanOptions: StartSpanOptions, options?: Partial): Span; +export {}; +//# sourceMappingURL=idleSpan.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/index.d.ts new file mode 100644 index 0000000..f597fc7 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/index.d.ts @@ -0,0 +1,13 @@ +export { registerSpanErrorInstrumentation } from './errors'; +export { setCapturedScopesOnSpan, getCapturedScopesOnSpan } from './utils'; +export { startIdleSpan, TRACING_DEFAULTS } from './idleSpan'; +export { SentrySpan } from './sentrySpan'; +export { SentryNonRecordingSpan } from './sentryNonRecordingSpan'; +export { setHttpStatus, getSpanStatusFromHttpCode } from './spanstatus'; +export { SPAN_STATUS_ERROR, SPAN_STATUS_OK, SPAN_STATUS_UNSET } from './spanstatus'; +export { startSpan, startInactiveSpan, startSpanManual, continueTrace, withActiveSpan, suppressTracing, startNewTrace, } from './trace'; +export { getDynamicSamplingContextFromClient, getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromScope, spanToBaggageHeader, } from './dynamicSamplingContext'; +export { setMeasurement, timedEventsToMeasurements } from './measurement'; +export { sampleSpan } from './sampling'; +export { logSpanEnd, logSpanStart } from './logSpans'; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/constants.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/constants.d.ts new file mode 100644 index 0000000..fe97c45 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/constants.d.ts @@ -0,0 +1,4 @@ +export declare const LANGCHAIN_INTEGRATION_NAME = "LangChain"; +export declare const LANGCHAIN_ORIGIN = "auto.ai.langchain"; +export declare const ROLE_MAP: Record; +//# sourceMappingURL=constants.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/index.d.ts new file mode 100644 index 0000000..a3d7ec2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/index.d.ts @@ -0,0 +1,9 @@ +import { LangChainCallbackHandler, LangChainOptions } from './types'; +/** + * Creates a Sentry callback handler for LangChain + * Returns a plain object that LangChain will call via duck-typing + * + * This is a stateful handler that tracks spans across multiple LangChain executions. + */ +export declare function createLangChainCallbackHandler(options?: LangChainOptions): LangChainCallbackHandler; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/types.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/types.d.ts new file mode 100644 index 0000000..5e03e24 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/types.d.ts @@ -0,0 +1,151 @@ +/** + * Options for LangChain integration + */ +export interface LangChainOptions { + /** + * Whether to record input messages/prompts + * @default false (respects sendDefaultPii option) + */ + recordInputs?: boolean; + /** + * Whether to record output text and responses + * @default false (respects sendDefaultPii option) + */ + recordOutputs?: boolean; +} +/** + * LangChain Serialized type (compatible with @langchain/core) + * Uses general types to be compatible with LangChain's Serialized interface. + * This is a flexible interface that accepts any serialized LangChain object. + */ +export interface LangChainSerialized { + [key: string]: unknown; + lc?: number; + type?: string; + id?: string[]; + name?: string; + graph?: Record; + kwargs?: Record; +} +/** + * LangChain message structure + * Supports both regular messages and LangChain serialized format + */ +export interface LangChainMessage { + [key: string]: unknown; + type?: string; + content?: string; + message?: { + content?: unknown[]; + type?: string; + }; + role?: string; + additional_kwargs?: Record; + lc?: number; + id?: string[] | string; + response_metadata?: { + model_name?: string; + finish_reason?: string; + }; + kwargs?: { + [key: string]: unknown; + content?: string; + additional_kwargs?: Record; + response_metadata?: Record; + }; +} +/** + * LangChain LLM result structure + */ +export interface LangChainLLMResult { + [key: string]: unknown; + generations: Array>; + llmOutput?: { + [key: string]: unknown; + tokenUsage?: { + completionTokens?: number; + promptTokens?: number; + totalTokens?: number; + }; + model_name?: string; + }; +} +/** + * Integration interface for type safety + */ +export interface LangChainIntegration { + name: string; + options: LangChainOptions; +} +/** + * LangChain callback handler interface + * Compatible with both BaseCallbackHandlerMethodsClass and BaseCallbackHandler from @langchain/core + * Uses general types and index signature for maximum compatibility across LangChain versions + */ +export interface LangChainCallbackHandler { + [key: string]: unknown; + lc_serializable: boolean; + lc_namespace: [ + 'langchain_core', + 'callbacks', + string + ]; + lc_secrets: { + [key: string]: string; + } | undefined; + lc_attributes: { + [key: string]: string; + } | undefined; + lc_aliases: { + [key: string]: string; + } | undefined; + lc_serializable_keys: string[] | undefined; + lc_id: string[]; + lc_kwargs: { + [key: string]: any; + }; + name: string; + ignoreLLM: boolean; + ignoreChain: boolean; + ignoreAgent: boolean; + ignoreRetriever: boolean; + ignoreCustomEvent: boolean; + raiseError: boolean; + awaitHandlers: boolean; + handleLLMStart?: (llm: unknown, prompts: string[], runId: string, parentRunId?: string, extraParams?: Record, tags?: string[], metadata?: Record, runName?: string) => Promise | unknown; + handleChatModelStart?: (llm: unknown, messages: unknown, runId: string, parentRunId?: string, extraParams?: Record, tags?: string[], metadata?: Record, runName?: string) => Promise | unknown; + handleLLMNewToken?: (token: string, idx: unknown, runId: string, parentRunId?: string, tags?: string[], fields?: unknown) => Promise | unknown; + handleLLMEnd?: (output: unknown, runId: string, parentRunId?: string, tags?: string[], extraParams?: Record) => Promise | unknown; + handleLLMError?: (error: Error, runId: string, parentRunId?: string, tags?: string[], extraParams?: Record) => Promise | unknown; + handleChainStart?: (chain: { + name?: string; + }, inputs: Record, runId: string, parentRunId?: string, tags?: string[], metadata?: Record, runType?: string, runName?: string) => Promise | unknown; + handleChainEnd?: (outputs: unknown, runId: string, parentRunId?: string, tags?: string[], kwargs?: { + inputs?: Record; + }) => Promise | unknown; + handleChainError?: (error: Error, runId: string, parentRunId?: string, tags?: string[], kwargs?: { + inputs?: Record; + }) => Promise | unknown; + handleToolStart?: (tool: { + name?: string; + }, input: string, runId: string, parentRunId?: string, tags?: string[], metadata?: Record, runName?: string) => Promise | unknown; + handleToolEnd?: (output: unknown, runId: string, parentRunId?: string, tags?: string[]) => Promise | unknown; + handleToolError?: (error: Error, runId: string, parentRunId?: string, tags?: string[]) => Promise | unknown; + copy(): unknown; + toJSON(): Record; + toJSONNotImplemented(): unknown; +} +//# sourceMappingURL=types.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/utils.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/utils.d.ts new file mode 100644 index 0000000..d3b20ac --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langchain/utils.d.ts @@ -0,0 +1,60 @@ +import { SpanAttributeValue } from '../../types-hoist/span'; +import { LangChainLLMResult, LangChainMessage, LangChainSerialized } from './types'; +/** + * Returns invocation params from a LangChain `tags` object. + * + * LangChain often passes runtime parameters (model, temperature, etc.) via the + * `tags.invocation_params` bag. If `tags` is an array (LangChain sometimes uses + * string tags), we return `undefined`. + * + * @param tags LangChain tags (string[] or record) + * @returns The `invocation_params` object, if present + */ +export declare function getInvocationParams(tags?: string[] | Record): Record | undefined; +/** + * Normalizes a heterogeneous set of LangChain messages to `{ role, content }`. + * + * Why so many branches? LangChain messages can arrive in several shapes: + * - Message classes with `_getType()` (most reliable) + * - Classes with meaningful constructor names (e.g. `SystemMessage`) + * - Plain objects with `type`, or `{ role, content }` + * - Serialized format with `{ lc: 1, id: [...], kwargs: { content } }` + * We preserve the prioritization to minimize behavioral drift. + * + * @param messages Mixed LangChain messages + * @returns Array of normalized `{ role, content }` + */ +export declare function normalizeLangChainMessages(messages: LangChainMessage[]): Array<{ + role: string; + content: string; +}>; +/** + * Extracts attributes for plain LLM invocations (string prompts). + * + * - Operation is tagged as `chat` following OpenTelemetry semantic conventions. + * LangChain LLM operations are treated as chat operations. + * - When `recordInputs` is true, string prompts are wrapped into `{role:"user"}` + * messages to align with the chat schema used elsewhere. + */ +export declare function extractLLMRequestAttributes(llm: LangChainSerialized, prompts: string[], recordInputs: boolean, invocationParams?: Record, langSmithMetadata?: Record): Record; +/** + * Extracts attributes for ChatModel invocations (array-of-arrays of messages). + * + * - Operation is tagged as `chat` following OpenTelemetry semantic conventions. + * LangChain chat model operations are chat operations. + * - We flatten LangChain's `LangChainMessage[][]` and normalize shapes into a + * consistent `{ role, content }` array when `recordInputs` is true. + * - Provider system value falls back to `serialized.id?.[2]`. + */ +export declare function extractChatModelRequestAttributes(llm: LangChainSerialized, langChainMessages: LangChainMessage[][], recordInputs: boolean, invocationParams?: Record, langSmithMetadata?: Record): Record; +/** + * Extracts response-related attributes based on a `LangChainLLMResult`. + * + * - Records finish reasons when present on generations (e.g., OpenAI) + * - When `recordOutputs` is true, captures textual response content and any + * tool calls. + * - Also propagates model name (`model_name` or `model`), response `id`, and + * `stop_reason` (for providers that use it). + */ +export declare function extractLlmResponseAttributes(llmResult: LangChainLLMResult, recordOutputs: boolean): Record | undefined; +//# sourceMappingURL=utils.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/constants.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/constants.d.ts new file mode 100644 index 0000000..0a3d75e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/constants.d.ts @@ -0,0 +1,3 @@ +export declare const LANGGRAPH_INTEGRATION_NAME = "LangGraph"; +export declare const LANGGRAPH_ORIGIN = "auto.ai.langgraph"; +//# sourceMappingURL=constants.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/index.d.ts new file mode 100644 index 0000000..c1e5a84 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/index.d.ts @@ -0,0 +1,37 @@ +import { CompiledGraph, LangGraphOptions } from './types'; +/** + * Instruments StateGraph's compile method to create spans for agent creation and invocation + * + * Wraps the compile() method to: + * - Create a `gen_ai.create_agent` span when compile() is called + * - Automatically wrap the invoke() method on the returned compiled graph with a `gen_ai.invoke_agent` span + * + */ +export declare function instrumentStateGraphCompile(originalCompile: (...args: unknown[]) => CompiledGraph, options: LangGraphOptions): (...args: unknown[]) => CompiledGraph; +/** + * Directly instruments a StateGraph instance to add tracing spans + * + * This function can be used to manually instrument LangGraph StateGraph instances + * in environments where automatic instrumentation is not available or desired. + * + * @param stateGraph - The StateGraph instance to instrument + * @param options - Optional configuration for recording inputs/outputs + * + * @example + * ```typescript + * import { instrumentLangGraph } from '@sentry/cloudflare'; + * import { StateGraph } from '@langchain/langgraph'; + * + * const graph = new StateGraph(MessagesAnnotation) + * .addNode('agent', mockLlm) + * .addEdge(START, 'agent') + * .addEdge('agent', END); + * + * instrumentLangGraph(graph, { recordInputs: true, recordOutputs: true }); + * const compiled = graph.compile({ name: 'my_agent' }); + * ``` + */ +export declare function instrumentLangGraph any; +}>(stateGraph: T, options?: LangGraphOptions): T; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/types.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/types.d.ts new file mode 100644 index 0000000..bd4aec8 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/types.d.ts @@ -0,0 +1,78 @@ +export interface LangGraphOptions { + /** + * Enable or disable input recording. + */ + recordInputs?: boolean; + /** + * Enable or disable output recording. + */ + recordOutputs?: boolean; +} +/** + * LangGraph Tool definition from lc_kwargs + */ +export interface LangGraphToolDefinition { + name?: string; + description?: string; + schema?: unknown; + func?: (...args: unknown[]) => unknown; +} +/** + * LangGraph Tool object (DynamicTool, DynamicStructuredTool, etc.) + */ +export interface LangGraphTool { + [key: string]: unknown; + lc_kwargs?: LangGraphToolDefinition; + name?: string; + description?: string; +} +/** + * LangGraph ToolNode with tools array + */ +export interface ToolNode { + [key: string]: unknown; + tools?: LangGraphTool[]; +} +/** + * LangGraph PregelNode containing a ToolNode + */ +export interface PregelNode { + [key: string]: unknown; + runnable?: ToolNode; +} +/** + * LangGraph StateGraph builder nodes + */ +export interface StateGraphNodes { + [key: string]: unknown; + tools?: PregelNode; +} +/** + * LangGraph StateGraph builder + */ +export interface StateGraphBuilder { + [key: string]: unknown; + nodes?: StateGraphNodes; +} +/** + * Basic interface for compiled graph + */ +export interface CompiledGraph { + [key: string]: unknown; + invoke?: (...args: unknown[]) => Promise; + name?: string; + graph_name?: string; + lc_kwargs?: { + [key: string]: unknown; + name?: string; + }; + builder?: StateGraphBuilder; +} +/** + * LangGraph Integration interface for type safety + */ +export interface LangGraphIntegration { + name: string; + options: LangGraphOptions; +} +//# sourceMappingURL=types.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/utils.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/utils.d.ts new file mode 100644 index 0000000..7103a5d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/langgraph/utils.d.ts @@ -0,0 +1,31 @@ +import { Span } from '../../types-hoist/span'; +import { LangChainMessage } from '../langchain/types'; +import { CompiledGraph } from './types'; +/** + * Extract tool calls from messages + */ +export declare function extractToolCalls(messages: Array> | null): unknown[] | null; +/** + * Extract token usage from a message's usage_metadata or response_metadata + * Returns token counts without setting span attributes + */ +export declare function extractTokenUsageFromMessage(message: LangChainMessage): { + inputTokens: number; + outputTokens: number; + totalTokens: number; +}; +/** + * Extract model and finish reason from a message's response_metadata + */ +export declare function extractModelMetadata(span: Span, message: LangChainMessage): void; +/** + * Extract tools from compiled graph structure + * + * Tools are stored in: compiledGraph.builder.nodes.tools.runnable.tools + */ +export declare function extractToolsFromCompiledGraph(compiledGraph: CompiledGraph): unknown[] | null; +/** + * Set response attributes on the span + */ +export declare function setResponseAttributes(span: Span, inputMessages: LangChainMessage[] | null, result: unknown): void; +//# sourceMappingURL=utils.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/logSpans.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/logSpans.d.ts new file mode 100644 index 0000000..e1abdeb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/logSpans.d.ts @@ -0,0 +1,10 @@ +import { Span } from '../types-hoist/span'; +/** + * Print a log message for a started span. + */ +export declare function logSpanStart(span: Span): void; +/** + * Print a log message for an ended span. + */ +export declare function logSpanEnd(span: Span): void; +//# sourceMappingURL=logSpans.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/measurement.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/measurement.d.ts new file mode 100644 index 0000000..2ce0650 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/measurement.d.ts @@ -0,0 +1,12 @@ +import { Measurements, MeasurementUnit } from '../types-hoist/measurement'; +import { TimedEvent } from '../types-hoist/timedEvent'; +/** + * Adds a measurement to the active transaction on the current global scope. You can optionally pass in a different span + * as the 4th parameter. + */ +export declare function setMeasurement(name: string, value: number, unit: MeasurementUnit, activeSpan?: import("..").Span | undefined): void; +/** + * Convert timed events to measurements. + */ +export declare function timedEventsToMeasurements(events: TimedEvent[]): Measurements | undefined; +//# sourceMappingURL=measurement.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/constants.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/constants.d.ts new file mode 100644 index 0000000..977c100 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/constants.d.ts @@ -0,0 +1,27 @@ +export declare const OPENAI_INTEGRATION_NAME = "OpenAI"; +export declare const INSTRUMENTED_METHODS: readonly [ + "responses.create", + "chat.completions.create", + "embeddings.create", + "conversations.create" +]; +export declare const RESPONSES_TOOL_CALL_EVENT_TYPES: readonly [ + "response.output_item.added", + "response.function_call_arguments.delta", + "response.function_call_arguments.done", + "response.output_item.done" +]; +export declare const RESPONSE_EVENT_TYPES: readonly [ + "response.created", + "response.in_progress", + "response.failed", + "response.completed", + "response.incomplete", + "response.queued", + "response.output_text.delta", + "response.output_item.added", + "response.function_call_arguments.delta", + "response.function_call_arguments.done", + "response.output_item.done" +]; +//# sourceMappingURL=constants.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/index.d.ts new file mode 100644 index 0000000..851a028 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/index.d.ts @@ -0,0 +1,7 @@ +import { OpenAiOptions } from './types'; +/** + * Instrument an OpenAI client with Sentry tracing + * Can be used across Node.js, Cloudflare Workers, and Vercel Edge + */ +export declare function instrumentOpenAiClient(client: T, options?: OpenAiOptions): T; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/streaming.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/streaming.d.ts new file mode 100644 index 0000000..3aeb4c2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/streaming.d.ts @@ -0,0 +1,13 @@ +import { Span } from '../../types-hoist/span'; +/** + * Instruments a stream of OpenAI events, updating the provided span with relevant attributes and + * optionally recording output text. This function yields each event from the input stream as it is processed. + * + * @template T - The type of events in the stream. + * @param stream - The async iterable stream of events to instrument. + * @param span - The span to add attributes to and to finish at the end of the stream. + * @param recordOutputs - Whether to record output text fragments in the span. + * @returns An async generator yielding each event from the input stream. + */ +export declare function instrumentStream(stream: AsyncIterable, span: Span, recordOutputs: boolean): AsyncGenerator; +//# sourceMappingURL=streaming.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/types.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/types.d.ts new file mode 100644 index 0000000..fe1d7c4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/types.d.ts @@ -0,0 +1,318 @@ +import { INSTRUMENTED_METHODS } from './constants'; +/** + * Attribute values may be any non-nullish primitive value except an object. + * + * null or undefined attribute values are invalid and will result in undefined behavior. + */ +export type AttributeValue = string | number | boolean | Array | Array | Array; +export interface OpenAiOptions { + /** + * Enable or disable input recording. + */ + recordInputs?: boolean; + /** + * Enable or disable output recording. + */ + recordOutputs?: boolean; +} +export interface OpenAiClient { + responses?: { + create: (...args: unknown[]) => Promise; + }; + chat?: { + completions?: { + create: (...args: unknown[]) => Promise; + }; + }; +} +/** + * @see https://platform.openai.com/docs/api-reference/chat/object + */ +export interface OpenAiChatCompletionObject { + id: string; + object: 'chat.completion'; + created: number; + model: string; + choices: Array<{ + index: number; + message: { + role: 'assistant' | 'user' | 'system' | string; + content: string | null; + refusal?: string | null; + annotations?: Array; + tool_calls?: Array; + }; + logprobs?: unknown | null; + finish_reason: string | null; + }>; + usage: { + prompt_tokens: number; + completion_tokens: number; + total_tokens: number; + prompt_tokens_details?: { + cached_tokens?: number; + audio_tokens?: number; + }; + completion_tokens_details?: { + reasoning_tokens?: number; + audio_tokens?: number; + accepted_prediction_tokens?: number; + rejected_prediction_tokens?: number; + }; + }; + service_tier?: string; + system_fingerprint?: string; +} +/** + * @see https://platform.openai.com/docs/api-reference/responses/object + */ +export interface OpenAIResponseObject { + id: string; + object: 'response'; + created_at: number; + status: 'in_progress' | 'completed' | 'failed' | 'cancelled'; + error: string | null; + incomplete_details: unknown | null; + instructions: unknown | null; + max_output_tokens: number | null; + model: string; + output: Array<{ + type: 'message'; + id: string; + status: 'completed' | string; + role: 'assistant' | string; + content: Array<{ + type: 'output_text'; + text: string; + annotations: Array; + }>; + }>; + output_text: string; + parallel_tool_calls: boolean; + previous_response_id: string | null; + reasoning: { + effort: string | null; + summary: string | null; + }; + store: boolean; + temperature: number; + text: { + format: { + type: 'text' | string; + }; + }; + tool_choice: 'auto' | string; + tools: Array; + top_p: number; + truncation: 'disabled' | string; + usage: { + input_tokens: number; + input_tokens_details?: { + cached_tokens?: number; + }; + output_tokens: number; + output_tokens_details?: { + reasoning_tokens?: number; + }; + total_tokens: number; + }; + user: string | null; + metadata: Record; +} +/** + * @see https://platform.openai.com/docs/api-reference/embeddings/object + */ +export interface OpenAIEmbeddingsObject { + object: 'embedding'; + embedding: number[]; + index: number; +} +/** + * @see https://platform.openai.com/docs/api-reference/embeddings/create + */ +export interface OpenAICreateEmbeddingsObject { + object: 'list'; + data: OpenAIEmbeddingsObject[]; + model: string; + usage: { + prompt_tokens: number; + total_tokens: number; + }; +} +/** + * OpenAI Conversations API Conversation object + * @see https://platform.openai.com/docs/api-reference/conversations + */ +export interface OpenAIConversationObject { + id: string; + object: 'conversation'; + created_at: number; + metadata?: Record; +} +export type OpenAiResponse = OpenAiChatCompletionObject | OpenAIResponseObject | OpenAICreateEmbeddingsObject | OpenAIConversationObject; +/** + * Streaming event types for the Responses API + * @see https://platform.openai.com/docs/api-reference/responses-streaming + * @see https://platform.openai.com/docs/guides/streaming-responses#read-the-responses for common events + */ +export type ResponseStreamingEvent = ResponseCreatedEvent | ResponseInProgressEvent | ResponseFailedEvent | ResponseCompletedEvent | ResponseIncompleteEvent | ResponseQueuedEvent | ResponseOutputTextDeltaEvent | ResponseOutputItemAddedEvent | ResponseFunctionCallArgumentsDeltaEvent | ResponseFunctionCallArgumentsDoneEvent | ResponseOutputItemDoneEvent; +interface ResponseCreatedEvent { + type: 'response.created'; + response: OpenAIResponseObject; + sequence_number: number; +} +interface ResponseInProgressEvent { + type: 'response.in_progress'; + response: OpenAIResponseObject; + sequence_number: number; +} +interface ResponseOutputTextDeltaEvent { + content_index: number; + delta: string; + item_id: string; + logprobs: object; + output_index: number; + sequence_number: number; + type: 'response.output_text.delta'; +} +interface ResponseFailedEvent { + type: 'response.failed'; + response: OpenAIResponseObject; + sequence_number: number; +} +interface ResponseIncompleteEvent { + type: 'response.incomplete'; + response: OpenAIResponseObject; + sequence_number: number; +} +interface ResponseCompletedEvent { + type: 'response.completed'; + response: OpenAIResponseObject; + sequence_number: number; +} +interface ResponseQueuedEvent { + type: 'response.queued'; + response: OpenAIResponseObject; + sequence_number: number; +} +/** + * @see https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_item/added + */ +interface ResponseOutputItemAddedEvent { + type: 'response.output_item.added'; + output_index: number; + item: unknown; + event_id: string; + response_id: string; +} +/** + * @see https://platform.openai.com/docs/api-reference/realtime-server-events/response/function_call_arguments/delta + */ +interface ResponseFunctionCallArgumentsDeltaEvent { + type: 'response.function_call_arguments.delta'; + item_id: string; + output_index: number; + delta: string; + call_id: string; + event_id: string; + response_id: string; +} +/** + * @see https://platform.openai.com/docs/api-reference/realtime-server-events/response/function_call_arguments/done + */ +interface ResponseFunctionCallArgumentsDoneEvent { + type: 'response.function_call_arguments.done'; + response_id: string; + item_id: string; + output_index: number; + arguments: string; + call_id: string; + event_id: string; +} +/** + * @see https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_item/done + */ +interface ResponseOutputItemDoneEvent { + type: 'response.output_item.done'; + response_id: string; + output_index: number; + item: unknown; + event_id: string; +} +/** + * Tool call object for Chat Completion streaming + */ +export interface ChatCompletionToolCall { + index?: number; + id: string; + type?: string; + function?: { + name: string; + arguments?: string; + }; +} +/** + * Function call object for Responses API + */ +export interface ResponseFunctionCall { + type: string; + id: string; + call_id: string; + name: string; + arguments: string; +} +/** + * Chat Completion streaming chunk type + * @see https://platform.openai.com/docs/api-reference/chat-streaming/streaming + */ +export interface ChatCompletionChunk { + id: string; + object: 'chat.completion.chunk'; + created: number; + model: string; + system_fingerprint: string; + service_tier?: string; + choices: Array<{ + index: number; + delta: { + content: string | null; + role: string; + function_call?: object; + refusal?: string | null; + tool_calls?: Array; + }; + logprobs?: unknown | null; + finish_reason?: string | null; + }>; + usage?: { + prompt_tokens: number; + completion_tokens: number; + total_tokens: number; + completion_tokens_details: { + accepted_prediction_tokens: number; + audio_tokens: number; + reasoning_tokens: number; + rejected_prediction_tokens: number; + }; + prompt_tokens_details: { + audio_tokens: number; + cached_tokens: number; + }; + }; +} +/** + * Represents a stream of events from OpenAI APIs + */ +export interface OpenAIStream extends AsyncIterable { + [Symbol.asyncIterator](): AsyncIterator; +} +/** + * OpenAI Integration interface for type safety + */ +export interface OpenAiIntegration { + name: string; + options: OpenAiOptions; +} +export type InstrumentedMethod = (typeof INSTRUMENTED_METHODS)[number]; +export {}; +//# sourceMappingURL=types.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/utils.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/utils.d.ts new file mode 100644 index 0000000..92f3c5e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/openai/utils.d.ts @@ -0,0 +1,83 @@ +import { Span } from '../../types-hoist/span'; +import { ChatCompletionChunk, InstrumentedMethod, OpenAiChatCompletionObject, OpenAIConversationObject, OpenAICreateEmbeddingsObject, OpenAIResponseObject, ResponseStreamingEvent } from './types'; +/** + * Maps OpenAI method paths to OpenTelemetry semantic convention operation names + * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans + */ +export declare function getOperationName(methodPath: string): string; +/** + * Get the span operation for OpenAI methods + * Following Sentry's convention: "gen_ai.{operation_name}" + */ +export declare function getSpanOperation(methodPath: string): string; +/** + * Check if a method path should be instrumented + */ +export declare function shouldInstrument(methodPath: string): methodPath is InstrumentedMethod; +/** + * Build method path from current traversal + */ +export declare function buildMethodPath(currentPath: string, prop: string): string; +/** + * Check if response is a Chat Completion object + */ +export declare function isChatCompletionResponse(response: unknown): response is OpenAiChatCompletionObject; +/** + * Check if response is a Responses API object + */ +export declare function isResponsesApiResponse(response: unknown): response is OpenAIResponseObject; +/** + * Check if response is an Embeddings API object + */ +export declare function isEmbeddingsResponse(response: unknown): response is OpenAICreateEmbeddingsObject; +/** + * Check if response is a Conversations API object + * @see https://platform.openai.com/docs/api-reference/conversations + */ +export declare function isConversationResponse(response: unknown): response is OpenAIConversationObject; +/** + * Check if streaming event is from the Responses API + */ +export declare function isResponsesApiStreamEvent(event: unknown): event is ResponseStreamingEvent; +/** + * Check if streaming event is a chat completion chunk + */ +export declare function isChatCompletionChunk(event: unknown): event is ChatCompletionChunk; +/** + * Add attributes for Chat Completion responses + */ +export declare function addChatCompletionAttributes(span: Span, response: OpenAiChatCompletionObject, recordOutputs?: boolean): void; +/** + * Add attributes for Responses API responses + */ +export declare function addResponsesApiAttributes(span: Span, response: OpenAIResponseObject, recordOutputs?: boolean): void; +/** + * Add attributes for Embeddings API responses + */ +export declare function addEmbeddingsAttributes(span: Span, response: OpenAICreateEmbeddingsObject): void; +/** + * Add attributes for Conversations API responses + * @see https://platform.openai.com/docs/api-reference/conversations + */ +export declare function addConversationAttributes(span: Span, response: OpenAIConversationObject): void; +/** + * Set token usage attributes + * @param span - The span to add attributes to + * @param promptTokens - The number of prompt tokens + * @param completionTokens - The number of completion tokens + * @param totalTokens - The number of total tokens + */ +export declare function setTokenUsageAttributes(span: Span, promptTokens?: number, completionTokens?: number, totalTokens?: number): void; +/** + * Set common response attributes + * @param span - The span to add attributes to + * @param id - The response id + * @param model - The response model + * @param timestamp - The response timestamp + */ +export declare function setCommonResponseAttributes(span: Span, id: string, model: string, timestamp: number): void; +/** + * Extract request parameters including model settings and conversation context + */ +export declare function extractRequestParameters(params: Record): Record; +//# sourceMappingURL=utils.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/sampling.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/sampling.d.ts new file mode 100644 index 0000000..a2ae25c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/sampling.d.ts @@ -0,0 +1,14 @@ +import { CoreOptions } from '../types-hoist/options'; +import { SamplingContext } from '../types-hoist/samplingcontext'; +/** + * Makes a sampling decision for the given options. + * + * Called every time a root span is created. Only root spans which emerge with a `sampled` value of `true` will be + * sent to Sentry. + */ +export declare function sampleSpan(options: Pick, samplingContext: SamplingContext, sampleRand: number): [ + /*sampled*/ boolean, + /*sampleRate*/ number, + /*localSampleRateWasApplied*/ boolean +]; +//# sourceMappingURL=sampling.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/sentryNonRecordingSpan.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/sentryNonRecordingSpan.d.ts new file mode 100644 index 0000000..07b3f4c --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/sentryNonRecordingSpan.d.ts @@ -0,0 +1,39 @@ +import { SentrySpanArguments, Span, SpanAttributes, SpanAttributeValue, SpanContextData, SpanTimeInput } from '../types-hoist/span'; +import { SpanStatus } from '../types-hoist/spanStatus'; +/** + * A Sentry Span that is non-recording, meaning it will not be sent to Sentry. + */ +export declare class SentryNonRecordingSpan implements Span { + private _traceId; + private _spanId; + constructor(spanContext?: SentrySpanArguments); + /** @inheritdoc */ + spanContext(): SpanContextData; + /** @inheritdoc */ + end(_timestamp?: SpanTimeInput): void; + /** @inheritdoc */ + setAttribute(_key: string, _value: SpanAttributeValue | undefined): this; + /** @inheritdoc */ + setAttributes(_values: SpanAttributes): this; + /** @inheritdoc */ + setStatus(_status: SpanStatus): this; + /** @inheritdoc */ + updateName(_name: string): this; + /** @inheritdoc */ + isRecording(): boolean; + /** @inheritdoc */ + addEvent(_name: string, _attributesOrStartTime?: SpanAttributes | SpanTimeInput, _startTime?: SpanTimeInput): this; + /** @inheritDoc */ + addLink(_link: unknown): this; + /** @inheritDoc */ + addLinks(_links: unknown[]): this; + /** + * This should generally not be used, + * but we need it for being compliant with the OTEL Span interface. + * + * @hidden + * @internal + */ + recordException(_exception: unknown, _time?: number | undefined): void; +} +//# sourceMappingURL=sentryNonRecordingSpan.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/sentrySpan.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/sentrySpan.d.ts new file mode 100644 index 0000000..9fdb372 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/sentrySpan.d.ts @@ -0,0 +1,102 @@ +import { SpanLink } from '../types-hoist/link'; +import { SentrySpanArguments, Span, SpanAttributes, SpanAttributeValue, SpanContextData, SpanJSON, SpanTimeInput } from '../types-hoist/span'; +import { SpanStatus } from '../types-hoist/spanStatus'; +import { TimedEvent } from '../types-hoist/timedEvent'; +/** + * Span contains all data about a span + */ +export declare class SentrySpan implements Span { + protected _traceId: string; + protected _spanId: string; + protected _parentSpanId?: string | undefined; + protected _sampled: boolean | undefined; + protected _name?: string | undefined; + protected _attributes: SpanAttributes; + protected _links?: SpanLink[]; + /** Epoch timestamp in seconds when the span started. */ + protected _startTime: number; + /** Epoch timestamp in seconds when the span ended. */ + protected _endTime?: number | undefined; + /** Internal keeper of the status */ + protected _status?: SpanStatus; + /** The timed events added to this span. */ + protected _events: TimedEvent[]; + /** if true, treat span as a standalone span (not part of a transaction) */ + private _isStandaloneSpan?; + /** + * You should never call the constructor manually, always use `Sentry.startSpan()` + * or other span methods. + * @internal + * @hideconstructor + * @hidden + */ + constructor(spanContext?: SentrySpanArguments); + /** @inheritDoc */ + addLink(link: SpanLink): this; + /** @inheritDoc */ + addLinks(links: SpanLink[]): this; + /** + * This should generally not be used, + * but it is needed for being compliant with the OTEL Span interface. + * + * @hidden + * @internal + */ + recordException(_exception: unknown, _time?: number | undefined): void; + /** @inheritdoc */ + spanContext(): SpanContextData; + /** @inheritdoc */ + setAttribute(key: string, value: SpanAttributeValue | undefined): this; + /** @inheritdoc */ + setAttributes(attributes: SpanAttributes): this; + /** + * This should generally not be used, + * but we need it for browser tracing where we want to adjust the start time afterwards. + * USE THIS WITH CAUTION! + * + * @hidden + * @internal + */ + updateStartTime(timeInput: SpanTimeInput): void; + /** + * @inheritDoc + */ + setStatus(value: SpanStatus): this; + /** + * @inheritDoc + */ + updateName(name: string): this; + /** @inheritdoc */ + end(endTimestamp?: SpanTimeInput): void; + /** + * Get JSON representation of this span. + * + * @hidden + * @internal This method is purely for internal purposes and should not be used outside + * of SDK code. If you need to get a JSON representation of a span, + * use `spanToJSON(span)` instead. + */ + getSpanJSON(): SpanJSON; + /** @inheritdoc */ + isRecording(): boolean; + /** + * @inheritdoc + */ + addEvent(name: string, attributesOrStartTime?: SpanAttributes | SpanTimeInput, startTime?: SpanTimeInput): this; + /** + * This method should generally not be used, + * but for now we need a way to publicly check if the `_isStandaloneSpan` flag is set. + * USE THIS WITH CAUTION! + * @internal + * @hidden + * @experimental + */ + isStandaloneSpan(): boolean; + /** Emit `spanEnd` when the span is ended. */ + private _onSpanEnded; + /** + * Finish the transaction & prepare the event to send to Sentry. + */ + private _convertSpanToTransaction; +} +//# sourceMappingURL=sentrySpan.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/spanstatus.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/spanstatus.d.ts new file mode 100644 index 0000000..006b579 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/spanstatus.d.ts @@ -0,0 +1,18 @@ +import { Span } from '../types-hoist/span'; +import { SpanStatus } from '../types-hoist/spanStatus'; +export declare const SPAN_STATUS_UNSET = 0; +export declare const SPAN_STATUS_OK = 1; +export declare const SPAN_STATUS_ERROR = 2; +/** + * Converts a HTTP status code into a sentry status with a message. + * + * @param httpStatus The HTTP response status code. + * @returns The span status or internal_error. + */ +export declare function getSpanStatusFromHttpCode(httpStatus: number): SpanStatus; +/** + * Sets the Http status attributes on the current span based on the http code. + * Additionally, the span's status is updated, depending on the http code. + */ +export declare function setHttpStatus(span: Span, httpStatus: number): void; +//# sourceMappingURL=spanstatus.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/trace.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/trace.d.ts new file mode 100644 index 0000000..806f920 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/trace.d.ts @@ -0,0 +1,78 @@ +import { Scope } from '../scope'; +import { Span } from '../types-hoist/span'; +import { StartSpanOptions } from '../types-hoist/startSpanOptions'; +import { propagationContextFromHeaders } from '../utils/tracing'; +/** + * Wraps a function with a transaction/span and finishes the span after the function is done. + * The created span is the active span and will be used as parent by other spans created inside the function + * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active. + * + * If you want to create a span that is not set as active, use {@link startInactiveSpan}. + * + * You'll always get a span passed to the callback, + * it may just be a non-recording span if the span is not sampled or if tracing is disabled. + */ +export declare function startSpan(options: StartSpanOptions, callback: (span: Span) => T): T; +/** + * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span + * after the function is done automatically. Use `span.end()` to end the span. + * + * The created span is the active span and will be used as parent by other spans created inside the function + * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active. + * + * You'll always get a span passed to the callback, + * it may just be a non-recording span if the span is not sampled or if tracing is disabled. + */ +export declare function startSpanManual(options: StartSpanOptions, callback: (span: Span, finish: () => void) => T): T; +/** + * Creates a span. This span is not set as active, so will not get automatic instrumentation spans + * as children or be able to be accessed via `Sentry.getActiveSpan()`. + * + * If you want to create a span that is set as active, use {@link startSpan}. + * + * This function will always return a span, + * it may just be a non-recording span if the span is not sampled or if tracing is disabled. + */ +export declare function startInactiveSpan(options: StartSpanOptions): Span; +/** + * Continue a trace from `sentry-trace` and `baggage` values. + * These values can be obtained from incoming request headers, or in the browser from `` + * and `` HTML tags. + * + * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically + * be attached to the incoming trace. + */ +export declare const continueTrace: (options: { + sentryTrace: Parameters[0]; + baggage: Parameters[1]; +}, callback: () => V) => V; +/** + * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be + * passed `null` to start an entirely new span tree. + * + * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed, + * spans started within the callback will not be attached to a parent span. + * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope. + * @returns the value returned from the provided callback function. + */ +export declare function withActiveSpan(span: Span | null, callback: (scope: Scope) => T): T; +/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */ +export declare function suppressTracing(callback: () => T): T; +/** + * Starts a new trace for the duration of the provided callback. Spans started within the + * callback will be part of the new trace instead of a potentially previously started trace. + * + * Important: Only use this function if you want to override the default trace lifetime and + * propagation mechanism of the SDK for the duration and scope of the provided callback. + * The newly created trace will also be the root of a new distributed trace, for example if + * you make http requests within the callback. + * This function might be useful if the operation you want to instrument should not be part + * of a potentially ongoing trace. + * + * Default behavior: + * - Server-side: A new trace is started for each incoming request. + * - Browser: A new trace is started for each page our route. Navigating to a new route + * or page will automatically create a new trace. + */ +export declare function startNewTrace(callback: () => T): T; +//# sourceMappingURL=trace.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/utils.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/utils.d.ts new file mode 100644 index 0000000..aed55be --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/utils.d.ts @@ -0,0 +1,13 @@ +import { Scope } from '../scope'; +import { Span } from '../types-hoist/span'; +/** Store the scope & isolation scope for a span, which can the be used when it is finished. */ +export declare function setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void; +/** + * Grabs the scope and isolation scope off a span that were active when the span was started. + * If WeakRef was used and scopes have been garbage collected, returns undefined for those scopes. + */ +export declare function getCapturedScopesOnSpan(span: Span): { + scope?: Scope; + isolationScope?: Scope; +}; +//# sourceMappingURL=utils.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/constants.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/constants.d.ts new file mode 100644 index 0000000..79535ff --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/constants.d.ts @@ -0,0 +1,6 @@ +import { Span } from '../../types-hoist/span'; +export declare const toolCallSpanMap: Map; +export declare const INVOKE_AGENT_OPS: Set; +export declare const GENERATE_CONTENT_OPS: Set; +export declare const EMBEDDINGS_OPS: Set; +//# sourceMappingURL=constants.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/index.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/index.d.ts new file mode 100644 index 0000000..0d11268 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/index.d.ts @@ -0,0 +1,6 @@ +import { Client } from '../../client'; +/** + * Add event processors to the given client to process Vercel AI spans. + */ +export declare function addVercelAiProcessors(client: Client): void; +//# sourceMappingURL=index.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/types.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/types.d.ts new file mode 100644 index 0000000..a34007a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/types.d.ts @@ -0,0 +1,5 @@ +export interface TokenSummary { + inputTokens: number; + outputTokens: number; +} +//# sourceMappingURL=types.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/utils.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/utils.d.ts new file mode 100644 index 0000000..c4e498b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/utils.d.ts @@ -0,0 +1,44 @@ +import { TraceContext } from '../../types-hoist/context'; +import { Span, SpanAttributes, SpanJSON } from '../../types-hoist/span'; +import { TokenSummary } from './types'; +/** + * Accumulates token data from a span to its parent in the token accumulator map. + * This function extracts token usage from the current span and adds it to the + * accumulated totals for its parent span. + */ +export declare function accumulateTokensForParent(span: SpanJSON, tokenAccumulator: Map): void; +/** + * Applies accumulated token data to the `gen_ai.invoke_agent` span. + * Only immediate children of the `gen_ai.invoke_agent` span are considered, + * since aggregation will automatically occur for each parent span. + */ +export declare function applyAccumulatedTokens(spanOrTrace: SpanJSON | TraceContext, tokenAccumulator: Map): void; +/** + * Get the span associated with a tool call ID + */ +export declare function _INTERNAL_getSpanForToolCallId(toolCallId: string): Span | undefined; +/** + * Clean up the span mapping for a tool call ID + */ +export declare function _INTERNAL_cleanupToolCallSpan(toolCallId: string): void; +/** + * Convert an array of tool strings to a JSON string + */ +export declare function convertAvailableToolsToJsonString(tools: unknown[]): string; +/** + * Convert the prompt string to messages array + */ +export declare function convertPromptToMessages(prompt: string): { + role: string; + content: string; +}[]; +/** + * Generate a request.messages JSON array from the prompt field in the + * invoke_agent op + */ +export declare function requestMessagesFromPrompt(span: Span, attributes: SpanAttributes): void; +/** + * Maps a Vercel AI span name to the corresponding Sentry op. + */ +export declare function getSpanOpFromName(name: string): string | undefined; +//# sourceMappingURL=utils.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/vercel-ai-attributes.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/vercel-ai-attributes.d.ts new file mode 100644 index 0000000..15caa8e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/tracing/vercel-ai/vercel-ai-attributes.d.ts @@ -0,0 +1,906 @@ +/** + * AI SDK Telemetry Attributes + * Based on https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data + */ +/** + * Common attribute for operation name across all functions and spans + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data + */ +export declare const OPERATION_NAME_ATTRIBUTE = "operation.name"; +/** + * Common attribute for AI operation ID across all functions and spans + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data + */ +export declare const AI_OPERATION_ID_ATTRIBUTE = "ai.operationId"; +/** + * `generateText` function - `ai.generateText` span + * `streamText` function - `ai.streamText` span + * + * The prompt that was used when calling the function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function + */ +export declare const AI_PROMPT_ATTRIBUTE = "ai.prompt"; +/** + * `generateObject` function - `ai.generateObject` span + * `streamObject` function - `ai.streamObject` span + * + * The JSON schema version of the schema that was passed into the function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +export declare const AI_SCHEMA_ATTRIBUTE = "ai.schema"; +/** + * `generateObject` function - `ai.generateObject` span + * `streamObject` function - `ai.streamObject` span + * + * The name of the schema that was passed into the function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +export declare const AI_SCHEMA_NAME_ATTRIBUTE = "ai.schema.name"; +/** + * `generateObject` function - `ai.generateObject` span + * `streamObject` function - `ai.streamObject` span + * + * The description of the schema that was passed into the function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +export declare const AI_SCHEMA_DESCRIPTION_ATTRIBUTE = "ai.schema.description"; +/** + * `generateObject` function - `ai.generateObject` span + * `streamObject` function - `ai.streamObject` span + * + * The object that was generated (stringified JSON) + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +export declare const AI_RESPONSE_OBJECT_ATTRIBUTE = "ai.response.object"; +/** + * `generateObject` function - `ai.generateObject` span + * `streamObject` function - `ai.streamObject` span + * + * The object generation mode, e.g. `json` + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +export declare const AI_SETTINGS_MODE_ATTRIBUTE = "ai.settings.mode"; +/** + * `generateObject` function - `ai.generateObject` span + * `streamObject` function - `ai.streamObject` span + * + * The output type that was used, e.g. `object` or `no-schema` + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +export declare const AI_SETTINGS_OUTPUT_ATTRIBUTE = "ai.settings.output"; +/** + * `embed` function - `ai.embed.doEmbed` span + * `embedMany` function - `ai.embedMany` span + * + * The values that were passed into the function (array) + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function + */ +export declare const AI_VALUES_ATTRIBUTE = "ai.values"; +/** + * `embed` function - `ai.embed.doEmbed` span + * `embedMany` function - `ai.embedMany` span + * + * An array of JSON-stringified embeddings + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function + */ +export declare const AI_EMBEDDINGS_ATTRIBUTE = "ai.embeddings"; +/** + * `generateText` function - `ai.generateText` span + * + * The text that was generated + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +export declare const AI_RESPONSE_TEXT_ATTRIBUTE = "ai.response.text"; +/** + * `generateText` function - `ai.generateText` span + * + * The tool calls that were made as part of the generation (stringified JSON) + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +export declare const AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = "ai.response.toolCalls"; +/** + * `generateText` function - `ai.generateText` span + * + * The reason why the generation finished + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +export declare const AI_RESPONSE_FINISH_REASON_ATTRIBUTE = "ai.response.finishReason"; +/** + * `generateText` function - `ai.generateText` span + * + * The maximum number of steps that were set + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +export declare const AI_SETTINGS_MAX_STEPS_ATTRIBUTE = "ai.settings.maxSteps"; +/** + * `generateText` function - `ai.generateText.doGenerate` span + * + * The format of the prompt + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +export declare const AI_PROMPT_FORMAT_ATTRIBUTE = "ai.prompt.format"; +/** + * `generateText` function - `ai.generateText.doGenerate` span + * + * The messages that were passed into the provider + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +export declare const AI_PROMPT_MESSAGES_ATTRIBUTE = "ai.prompt.messages"; +/** + * `generateText` function - `ai.generateText.doGenerate` span + * + * Array of stringified tool definitions + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +export declare const AI_PROMPT_TOOLS_ATTRIBUTE = "ai.prompt.tools"; +/** + * `generateText` function - `ai.generateText.doGenerate` span + * + * The stringified tool choice setting (JSON) + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +export declare const AI_PROMPT_TOOL_CHOICE_ATTRIBUTE = "ai.prompt.toolChoice"; +/** + * `streamText` function - `ai.streamText.doStream` span + * + * The time it took to receive the first chunk in milliseconds + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function + */ +export declare const AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE = "ai.response.msToFirstChunk"; +/** + * `streamText` function - `ai.streamText.doStream` span + * + * The time it took to receive the finish part of the LLM stream in milliseconds + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function + */ +export declare const AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE = "ai.response.msToFinish"; +/** + * `streamText` function - `ai.streamText.doStream` span + * + * The average completion tokens per second + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function + */ +export declare const AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE = "ai.response.avgCompletionTokensPerSecond"; +/** + * `embed` function - `ai.embed` span + * + * The value that was passed into the `embed` function + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function + */ +export declare const AI_VALUE_ATTRIBUTE = "ai.value"; +/** + * `embed` function - `ai.embed` span + * + * A JSON-stringified embedding + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function + */ +export declare const AI_EMBEDDING_ATTRIBUTE = "ai.embedding"; +/** + * Basic LLM span information + * Multiple spans + * + * The functionId that was set through `telemetry.functionId` + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const RESOURCE_NAME_ATTRIBUTE = "resource.name"; +/** + * Basic LLM span information + * Multiple spans + * + * The id of the model + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const AI_MODEL_ID_ATTRIBUTE = "ai.model.id"; +/** + * Basic LLM span information + * Multiple spans + * + * The provider of the model + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const AI_MODEL_PROVIDER_ATTRIBUTE = "ai.model.provider"; +/** + * Basic LLM span information + * Multiple spans + * + * The request headers that were passed in through `headers` + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const AI_REQUEST_HEADERS_ATTRIBUTE = "ai.request.headers"; +/** + * Basic LLM span information + * Multiple spans + * + * Provider specific metadata returned with the generation response + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = "ai.response.providerMetadata"; +/** + * Basic LLM span information + * Multiple spans + * + * The maximum number of retries that were set + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const AI_SETTINGS_MAX_RETRIES_ATTRIBUTE = "ai.settings.maxRetries"; +/** + * Basic LLM span information + * Multiple spans + * + * The number of cached input tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE = "ai.usage.cachedInputTokens"; +/** + * Basic LLM span information + * Multiple spans + * + * The functionId that was set through `telemetry.functionId` + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = "ai.telemetry.functionId"; +/** + * Basic LLM span information + * Multiple spans + * + * The metadata that was passed in through `telemetry.metadata` + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const AI_TELEMETRY_METADATA_ATTRIBUTE = "ai.telemetry.metadata"; +/** + * Basic LLM span information + * Multiple spans + * + * The number of completion tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = "ai.usage.completionTokens"; +/** + * Basic LLM span information + * Multiple spans + * + * The number of prompt tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information + */ +export declare const AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = "ai.usage.promptTokens"; +/** + * Call LLM span information + * Individual LLM call spans + * + * The model that was used to generate the response + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const AI_RESPONSE_MODEL_ATTRIBUTE = "ai.response.model"; +/** + * Call LLM span information + * Individual LLM call spans + * + * The id of the response + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const AI_RESPONSE_ID_ATTRIBUTE = "ai.response.id"; +/** + * Call LLM span information + * Individual LLM call spans + * + * The timestamp of the response + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const AI_RESPONSE_TIMESTAMP_ATTRIBUTE = "ai.response.timestamp"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The provider that was used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_SYSTEM_ATTRIBUTE = "gen_ai.system"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The model that was requested + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_REQUEST_MODEL_ATTRIBUTE = "gen_ai.request.model"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The temperature that was set + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = "gen_ai.request.temperature"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The maximum number of tokens that were set + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = "gen_ai.request.max_tokens"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The frequency penalty that was set + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = "gen_ai.request.frequency_penalty"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The presence penalty that was set + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = "gen_ai.request.presence_penalty"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The topK parameter value that was set + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = "gen_ai.request.top_k"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The topP parameter value that was set + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = "gen_ai.request.top_p"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The stop sequences + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = "gen_ai.request.stop_sequences"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The finish reasons that were returned by the provider + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = "gen_ai.response.finish_reasons"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The model that was used to generate the response + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = "gen_ai.response.model"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The id of the response + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_RESPONSE_ID_ATTRIBUTE = "gen_ai.response.id"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The number of prompt tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = "gen_ai.usage.input_tokens"; +/** + * Semantic Conventions for GenAI operations + * Individual LLM call spans + * + * The number of completion tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information + */ +export declare const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = "gen_ai.usage.output_tokens"; +/** + * Basic embedding span information + * Embedding spans + * + * The number of tokens that were used + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-embedding-span-information + */ +export declare const AI_USAGE_TOKENS_ATTRIBUTE = "ai.usage.tokens"; +/** + * Tool call spans + * `ai.toolCall` span + * + * The name of the tool + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +export declare const AI_TOOL_CALL_NAME_ATTRIBUTE = "ai.toolCall.name"; +/** + * Tool call spans + * `ai.toolCall` span + * + * The id of the tool call + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +export declare const AI_TOOL_CALL_ID_ATTRIBUTE = "ai.toolCall.id"; +/** + * Tool call spans + * `ai.toolCall` span + * + * The parameters of the tool call + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +export declare const AI_TOOL_CALL_ARGS_ATTRIBUTE = "ai.toolCall.args"; +/** + * Tool call spans + * `ai.toolCall` span + * + * The result of the tool call + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +export declare const AI_TOOL_CALL_RESULT_ATTRIBUTE = "ai.toolCall.result"; +/** + * Attributes collected for `ai.generateText` span + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +export declare const AI_GENERATE_TEXT_SPAN_ATTRIBUTES: { + readonly OPERATION_NAME: "operation.name"; + readonly AI_OPERATION_ID: "ai.operationId"; + readonly AI_PROMPT: "ai.prompt"; + readonly AI_RESPONSE_TEXT: "ai.response.text"; + readonly AI_RESPONSE_TOOL_CALLS: "ai.response.toolCalls"; + readonly AI_RESPONSE_FINISH_REASON: "ai.response.finishReason"; + readonly AI_SETTINGS_MAX_STEPS: "ai.settings.maxSteps"; + readonly RESOURCE_NAME: "resource.name"; + readonly AI_MODEL_ID: "ai.model.id"; + readonly AI_MODEL_PROVIDER: "ai.model.provider"; + readonly AI_REQUEST_HEADERS: "ai.request.headers"; + readonly AI_SETTINGS_MAX_RETRIES: "ai.settings.maxRetries"; + readonly AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId"; + readonly AI_TELEMETRY_METADATA: "ai.telemetry.metadata"; + readonly AI_USAGE_COMPLETION_TOKENS: "ai.usage.completionTokens"; + readonly AI_USAGE_PROMPT_TOKENS: "ai.usage.promptTokens"; +}; +/** + * Attributes collected for `ai.generateText.doGenerate` span + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function + */ +export declare const AI_GENERATE_TEXT_DO_GENERATE_SPAN_ATTRIBUTES: { + readonly OPERATION_NAME: "operation.name"; + readonly AI_OPERATION_ID: "ai.operationId"; + readonly AI_PROMPT_FORMAT: "ai.prompt.format"; + readonly AI_PROMPT_MESSAGES: "ai.prompt.messages"; + readonly AI_PROMPT_TOOLS: "ai.prompt.tools"; + readonly AI_PROMPT_TOOL_CHOICE: "ai.prompt.toolChoice"; + readonly RESOURCE_NAME: "resource.name"; + readonly AI_MODEL_ID: "ai.model.id"; + readonly AI_MODEL_PROVIDER: "ai.model.provider"; + readonly AI_REQUEST_HEADERS: "ai.request.headers"; + readonly AI_SETTINGS_MAX_RETRIES: "ai.settings.maxRetries"; + readonly AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId"; + readonly AI_TELEMETRY_METADATA: "ai.telemetry.metadata"; + readonly AI_USAGE_COMPLETION_TOKENS: "ai.usage.completionTokens"; + readonly AI_USAGE_PROMPT_TOKENS: "ai.usage.promptTokens"; + readonly AI_RESPONSE_MODEL: "ai.response.model"; + readonly AI_RESPONSE_ID: "ai.response.id"; + readonly AI_RESPONSE_TIMESTAMP: "ai.response.timestamp"; + readonly GEN_AI_SYSTEM: "gen_ai.system"; + readonly GEN_AI_REQUEST_MODEL: "gen_ai.request.model"; + readonly GEN_AI_REQUEST_TEMPERATURE: "gen_ai.request.temperature"; + readonly GEN_AI_REQUEST_MAX_TOKENS: "gen_ai.request.max_tokens"; + readonly GEN_AI_REQUEST_FREQUENCY_PENALTY: "gen_ai.request.frequency_penalty"; + readonly GEN_AI_REQUEST_PRESENCE_PENALTY: "gen_ai.request.presence_penalty"; + readonly GEN_AI_REQUEST_TOP_K: "gen_ai.request.top_k"; + readonly GEN_AI_REQUEST_TOP_P: "gen_ai.request.top_p"; + readonly GEN_AI_REQUEST_STOP_SEQUENCES: "gen_ai.request.stop_sequences"; + readonly GEN_AI_RESPONSE_FINISH_REASONS: "gen_ai.response.finish_reasons"; + readonly GEN_AI_RESPONSE_MODEL: "gen_ai.response.model"; + readonly GEN_AI_RESPONSE_ID: "gen_ai.response.id"; + readonly GEN_AI_USAGE_INPUT_TOKENS: "gen_ai.usage.input_tokens"; + readonly GEN_AI_USAGE_OUTPUT_TOKENS: "gen_ai.usage.output_tokens"; +}; +/** + * Attributes collected for `ai.streamText` span + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function + */ +export declare const AI_STREAM_TEXT_SPAN_ATTRIBUTES: { + readonly OPERATION_NAME: "operation.name"; + readonly AI_OPERATION_ID: "ai.operationId"; + readonly AI_PROMPT: "ai.prompt"; + readonly RESOURCE_NAME: "resource.name"; + readonly AI_MODEL_ID: "ai.model.id"; + readonly AI_MODEL_PROVIDER: "ai.model.provider"; + readonly AI_REQUEST_HEADERS: "ai.request.headers"; + readonly AI_SETTINGS_MAX_RETRIES: "ai.settings.maxRetries"; + readonly AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId"; + readonly AI_TELEMETRY_METADATA: "ai.telemetry.metadata"; + readonly AI_USAGE_COMPLETION_TOKENS: "ai.usage.completionTokens"; + readonly AI_USAGE_PROMPT_TOKENS: "ai.usage.promptTokens"; +}; +/** + * Attributes collected for `ai.streamText.doStream` span + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function + */ +export declare const AI_STREAM_TEXT_DO_STREAM_SPAN_ATTRIBUTES: { + readonly OPERATION_NAME: "operation.name"; + readonly AI_OPERATION_ID: "ai.operationId"; + readonly AI_RESPONSE_MS_TO_FIRST_CHUNK: "ai.response.msToFirstChunk"; + readonly AI_RESPONSE_MS_TO_FINISH: "ai.response.msToFinish"; + readonly AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND: "ai.response.avgCompletionTokensPerSecond"; + readonly RESOURCE_NAME: "resource.name"; + readonly AI_MODEL_ID: "ai.model.id"; + readonly AI_MODEL_PROVIDER: "ai.model.provider"; + readonly AI_REQUEST_HEADERS: "ai.request.headers"; + readonly AI_SETTINGS_MAX_RETRIES: "ai.settings.maxRetries"; + readonly AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId"; + readonly AI_TELEMETRY_METADATA: "ai.telemetry.metadata"; + readonly AI_USAGE_COMPLETION_TOKENS: "ai.usage.completionTokens"; + readonly AI_USAGE_PROMPT_TOKENS: "ai.usage.promptTokens"; + readonly AI_RESPONSE_MODEL: "ai.response.model"; + readonly AI_RESPONSE_ID: "ai.response.id"; + readonly AI_RESPONSE_TIMESTAMP: "ai.response.timestamp"; + readonly GEN_AI_SYSTEM: "gen_ai.system"; + readonly GEN_AI_REQUEST_MODEL: "gen_ai.request.model"; + readonly GEN_AI_REQUEST_TEMPERATURE: "gen_ai.request.temperature"; + readonly GEN_AI_REQUEST_MAX_TOKENS: "gen_ai.request.max_tokens"; + readonly GEN_AI_REQUEST_FREQUENCY_PENALTY: "gen_ai.request.frequency_penalty"; + readonly GEN_AI_REQUEST_PRESENCE_PENALTY: "gen_ai.request.presence_penalty"; + readonly GEN_AI_REQUEST_TOP_K: "gen_ai.request.top_k"; + readonly GEN_AI_REQUEST_TOP_P: "gen_ai.request.top_p"; + readonly GEN_AI_REQUEST_STOP_SEQUENCES: "gen_ai.request.stop_sequences"; + readonly GEN_AI_RESPONSE_FINISH_REASONS: "gen_ai.response.finish_reasons"; + readonly GEN_AI_RESPONSE_MODEL: "gen_ai.response.model"; + readonly GEN_AI_RESPONSE_ID: "gen_ai.response.id"; + readonly GEN_AI_USAGE_INPUT_TOKENS: "gen_ai.usage.input_tokens"; + readonly GEN_AI_USAGE_OUTPUT_TOKENS: "gen_ai.usage.output_tokens"; +}; +/** + * Attributes collected for `ai.generateObject` span + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function + */ +export declare const AI_GENERATE_OBJECT_SPAN_ATTRIBUTES: { + readonly OPERATION_NAME: "operation.name"; + readonly AI_OPERATION_ID: "ai.operationId"; + readonly AI_SCHEMA: "ai.schema"; + readonly AI_SCHEMA_NAME: "ai.schema.name"; + readonly AI_SCHEMA_DESCRIPTION: "ai.schema.description"; + readonly AI_RESPONSE_OBJECT: "ai.response.object"; + readonly AI_SETTINGS_MODE: "ai.settings.mode"; + readonly AI_SETTINGS_OUTPUT: "ai.settings.output"; + readonly RESOURCE_NAME: "resource.name"; + readonly AI_MODEL_ID: "ai.model.id"; + readonly AI_MODEL_PROVIDER: "ai.model.provider"; + readonly AI_REQUEST_HEADERS: "ai.request.headers"; + readonly AI_SETTINGS_MAX_RETRIES: "ai.settings.maxRetries"; + readonly AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId"; + readonly AI_TELEMETRY_METADATA: "ai.telemetry.metadata"; + readonly AI_USAGE_COMPLETION_TOKENS: "ai.usage.completionTokens"; + readonly AI_USAGE_PROMPT_TOKENS: "ai.usage.promptTokens"; +}; +/** + * Attributes collected for `ai.streamObject` span + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function + */ +export declare const AI_STREAM_OBJECT_SPAN_ATTRIBUTES: { + readonly OPERATION_NAME: "operation.name"; + readonly AI_OPERATION_ID: "ai.operationId"; + readonly AI_SCHEMA: "ai.schema"; + readonly AI_SCHEMA_NAME: "ai.schema.name"; + readonly AI_SCHEMA_DESCRIPTION: "ai.schema.description"; + readonly AI_RESPONSE_OBJECT: "ai.response.object"; + readonly AI_SETTINGS_MODE: "ai.settings.mode"; + readonly AI_SETTINGS_OUTPUT: "ai.settings.output"; + readonly RESOURCE_NAME: "resource.name"; + readonly AI_MODEL_ID: "ai.model.id"; + readonly AI_MODEL_PROVIDER: "ai.model.provider"; + readonly AI_REQUEST_HEADERS: "ai.request.headers"; + readonly AI_SETTINGS_MAX_RETRIES: "ai.settings.maxRetries"; + readonly AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId"; + readonly AI_TELEMETRY_METADATA: "ai.telemetry.metadata"; + readonly AI_USAGE_COMPLETION_TOKENS: "ai.usage.completionTokens"; + readonly AI_USAGE_PROMPT_TOKENS: "ai.usage.promptTokens"; +}; +/** + * Attributes collected for `ai.embed` span + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function + */ +export declare const AI_EMBED_SPAN_ATTRIBUTES: { + readonly OPERATION_NAME: "operation.name"; + readonly AI_OPERATION_ID: "ai.operationId"; + readonly AI_VALUE: "ai.value"; + readonly AI_EMBEDDING: "ai.embedding"; + readonly RESOURCE_NAME: "resource.name"; + readonly AI_MODEL_ID: "ai.model.id"; + readonly AI_MODEL_PROVIDER: "ai.model.provider"; + readonly AI_REQUEST_HEADERS: "ai.request.headers"; + readonly AI_SETTINGS_MAX_RETRIES: "ai.settings.maxRetries"; + readonly AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId"; + readonly AI_TELEMETRY_METADATA: "ai.telemetry.metadata"; + readonly AI_USAGE_TOKENS: "ai.usage.tokens"; +}; +/** + * Attributes collected for `ai.embed.doEmbed` span + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function + */ +export declare const AI_EMBED_DO_EMBED_SPAN_ATTRIBUTES: { + readonly OPERATION_NAME: "operation.name"; + readonly AI_OPERATION_ID: "ai.operationId"; + readonly AI_VALUES: "ai.values"; + readonly AI_EMBEDDINGS: "ai.embeddings"; + readonly RESOURCE_NAME: "resource.name"; + readonly AI_MODEL_ID: "ai.model.id"; + readonly AI_MODEL_PROVIDER: "ai.model.provider"; + readonly AI_REQUEST_HEADERS: "ai.request.headers"; + readonly AI_SETTINGS_MAX_RETRIES: "ai.settings.maxRetries"; + readonly AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId"; + readonly AI_TELEMETRY_METADATA: "ai.telemetry.metadata"; + readonly AI_USAGE_TOKENS: "ai.usage.tokens"; +}; +/** + * Attributes collected for `ai.embedMany` span + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function + */ +export declare const AI_EMBED_MANY_SPAN_ATTRIBUTES: { + readonly OPERATION_NAME: "operation.name"; + readonly AI_OPERATION_ID: "ai.operationId"; + readonly AI_VALUES: "ai.values"; + readonly AI_EMBEDDINGS: "ai.embeddings"; + readonly RESOURCE_NAME: "resource.name"; + readonly AI_MODEL_ID: "ai.model.id"; + readonly AI_MODEL_PROVIDER: "ai.model.provider"; + readonly AI_REQUEST_HEADERS: "ai.request.headers"; + readonly AI_SETTINGS_MAX_RETRIES: "ai.settings.maxRetries"; + readonly AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId"; + readonly AI_TELEMETRY_METADATA: "ai.telemetry.metadata"; + readonly AI_USAGE_TOKENS: "ai.usage.tokens"; +}; +/** + * Attributes collected for `ai.toolCall` span + * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans + */ +export declare const AI_TOOL_CALL_SPAN_ATTRIBUTES: { + readonly OPERATION_NAME: "operation.name"; + readonly AI_OPERATION_ID: "ai.operationId"; + readonly AI_TOOL_CALL_NAME: "ai.toolCall.name"; + readonly AI_TOOL_CALL_ID: "ai.toolCall.id"; + readonly AI_TOOL_CALL_ARGS: "ai.toolCall.args"; + readonly AI_TOOL_CALL_RESULT: "ai.toolCall.result"; + readonly RESOURCE_NAME: "resource.name"; + readonly AI_MODEL_ID: "ai.model.id"; + readonly AI_MODEL_PROVIDER: "ai.model.provider"; + readonly AI_REQUEST_HEADERS: "ai.request.headers"; + readonly AI_SETTINGS_MAX_RETRIES: "ai.settings.maxRetries"; + readonly AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId"; + readonly AI_TELEMETRY_METADATA: "ai.telemetry.metadata"; +}; +/** + * OpenAI Provider Metadata + * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai + * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/openai-chat-language-model.ts#L397-L416 + * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/responses/openai-responses-language-model.ts#L377C7-L384 + */ +export interface OpenAiProviderMetadata { + /** + * The number of predicted output tokens that were accepted. + * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs + */ + acceptedPredictionTokens?: number; + /** + * The number of predicted output tokens that were rejected. + * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs + */ + rejectedPredictionTokens?: number; + /** + * The number of reasoning tokens that the model generated. + * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models + */ + reasoningTokens?: number; + /** + * The number of prompt tokens that were a cache hit. + * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models + */ + cachedPromptTokens?: number; + /** + * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models + * + * The ID of the response. Can be used to continue a conversation. + */ + responseId?: string; +} +/** + * Anthropic Provider Metadata + * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic + * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/anthropic/src/anthropic-messages-language-model.ts#L346-L352 + */ +interface AnthropicProviderMetadata { + /** + * The number of tokens that were used to create the cache. + * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control + */ + cacheCreationInputTokens?: number; + /** + * The number of tokens that were read from the cache. + * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control + */ + cacheReadInputTokens?: number; + /** + * Usage metrics for the Anthropic model. + */ + usage?: { + input_tokens: number; + cache_creation_input_tokens?: number; + cache_read_input_tokens?: number; + cache_creation?: { + ephemeral_5m_input_tokens?: number; + ephemeral_1h_input_tokens?: number; + }; + output_tokens?: number; + service_tier?: string; + }; +} +/** + * Amazon Bedrock Provider Metadata + * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock + * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/amazon-bedrock/src/bedrock-chat-language-model.ts#L263-L280 + */ +interface AmazonBedrockProviderMetadata { + /** + * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseTrace.html + */ + trace?: { + /** + * The guardrail trace object. + * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailTraceAssessment.html + * + * This was purposely left as unknown as it's a complex object. This can be typed in the future + * if the SDK decides to support bedrock in a more advanced way. + */ + guardrail?: unknown; + /** + * The request's prompt router. + * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_PromptRouterTrace.html + */ + promptRouter?: { + /** + * The ID of the invoked model. + */ + invokedModelId?: string; + }; + }; + usage?: { + /** + * The number of tokens that were read from the cache. + * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points + */ + cacheReadInputTokens?: number; + /** + * The number of tokens that were written to the cache. + * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points + */ + cacheWriteInputTokens?: number; + }; +} +/** + * Google Generative AI Provider Metadata + * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai + */ +export interface GoogleGenerativeAIProviderMetadata { + /** + * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-prompt.ts#L28-L30 + */ + groundingMetadata: null | { + /** + * Array of search queries used to retrieve information + * @example ["What's the weather in Chicago this weekend?"] + * + * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding + */ + webSearchQueries: string[] | null; + /** + * Contains the main search result content used as an entry point + * The `renderedContent` field contains the formatted content + * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding + */ + searchEntryPoint?: { + renderedContent: string; + } | null; + /** + * Contains details about how specific response parts are supported by search results + * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding + */ + groundingSupports: Array<{ + /** + * Information about the grounded text segment. + */ + segment: { + /** + * The start index of the text segment. + */ + startIndex?: number | null; + /** + * The end index of the text segment. + */ + endIndex?: number | null; + /** + * The actual text segment. + */ + text?: string | null; + }; + /** + * References to supporting search result chunks. + */ + groundingChunkIndices?: number[] | null; + /** + * Confidence scores (0-1) for each supporting chunk. + */ + confidenceScores?: number[] | null; + }> | null; + }; + /** + * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-language-model.ts#L620-L627 + * @see https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/configure-safety-filters + */ + safetyRatings?: null | unknown; +} +/** + * DeepSeek Provider Metadata + * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek + */ +interface DeepSeekProviderMetadata { + /** + * The number of tokens that were cache hits. + * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage + */ + promptCacheHitTokens?: number; + /** + * The number of tokens that were cache misses. + * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage + */ + promptCacheMissTokens?: number; +} +/** + * Perplexity Provider Metadata + * @see https://ai-sdk.dev/providers/ai-sdk-providers/perplexity + */ +interface PerplexityProviderMetadata { + /** + * Object containing citationTokens and numSearchQueries metrics + */ + usage?: { + citationTokens?: number; + numSearchQueries?: number; + }; + /** + * Array of image URLs when return_images is enabled. + * + * You can enable image responses by setting return_images: true in the provider options. + * This feature is only available to Perplexity Tier-2 users and above. + */ + images?: Array<{ + imageUrl?: string; + originUrl?: string; + height?: number; + width?: number; + }>; +} +export interface ProviderMetadata { + openai?: OpenAiProviderMetadata; + azure?: OpenAiProviderMetadata; + anthropic?: AnthropicProviderMetadata; + bedrock?: AmazonBedrockProviderMetadata; + google?: GoogleGenerativeAIProviderMetadata; + vertex?: GoogleGenerativeAIProviderMetadata; + deepseek?: DeepSeekProviderMetadata; + perplexity?: PerplexityProviderMetadata; +} +export {}; +//# sourceMappingURL=vercel-ai-attributes.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/base.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/base.d.ts new file mode 100644 index 0000000..8a82ef2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/base.d.ts @@ -0,0 +1,11 @@ +import { InternalBaseTransportOptions, Transport, TransportMakeRequestResponse, TransportRequestExecutor } from '../types-hoist/transport'; +import { PromiseBuffer } from '../utils/promisebuffer'; +export declare const DEFAULT_TRANSPORT_BUFFER_SIZE = 64; +/** + * Creates an instance of a Sentry `Transport` + * + * @param options + * @param makeRequest + */ +export declare function createTransport(options: InternalBaseTransportOptions, makeRequest: TransportRequestExecutor, buffer?: PromiseBuffer): Transport; +//# sourceMappingURL=base.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/multiplexed.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/multiplexed.d.ts new file mode 100644 index 0000000..4e592a3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/multiplexed.d.ts @@ -0,0 +1,41 @@ +import { Envelope, EnvelopeItemType } from '../types-hoist/envelope'; +import { Event } from '../types-hoist/event'; +import { BaseTransportOptions, Transport } from '../types-hoist/transport'; +interface MatchParam { + /** The envelope to be sent */ + envelope: Envelope; + /** + * A function that returns an event from the envelope if one exists. You can optionally pass an array of envelope item + * types to filter by - only envelopes matching the given types will be multiplexed. + * Allowed values are: 'event', 'transaction', 'profile', 'replay_event' + * + * @param types Defaults to ['event'] + */ + getEvent(types?: EnvelopeItemType[]): Event | undefined; +} +type RouteTo = { + dsn: string; + release: string; +}; +type Matcher = (param: MatchParam) => (string | RouteTo)[]; +/** + * Key used in event.extra to provide routing information for the multiplexed transport. + * Should contain an array of `{ dsn: string, release?: string }` objects. + */ +export declare const MULTIPLEXED_TRANSPORT_EXTRA_KEY = "MULTIPLEXED_TRANSPORT_EXTRA_KEY"; +/** + * Gets an event from an envelope. + * + * This is only exported for use in the tests + */ +export declare function eventFromEnvelope(env: Envelope, types: EnvelopeItemType[]): Event | undefined; +/** + * Creates a transport that can send events to different DSNs depending on the envelope contents. + * + * If no matcher is provided, the transport will look for routing information in + * `event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]`, which should contain + * an array of `{ dsn: string, release?: string }` objects. + */ +export declare function makeMultiplexedTransport(createTransport: (options: TO) => Transport, matcher?: Matcher): (options: TO) => Transport; +export {}; +//# sourceMappingURL=multiplexed.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/offline.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/offline.d.ts new file mode 100644 index 0000000..5331fed --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/offline.d.ts @@ -0,0 +1,49 @@ +import { Envelope } from '../types-hoist/envelope'; +import { InternalBaseTransportOptions, Transport } from '../types-hoist/transport'; +export declare const MIN_DELAY = 100; +export declare const START_DELAY = 5000; +export interface OfflineStore { + push(env: Envelope): Promise; + unshift(env: Envelope): Promise; + shift(): Promise; +} +export type CreateOfflineStore = (options: OfflineTransportOptions) => OfflineStore; +export interface OfflineTransportOptions extends InternalBaseTransportOptions { + /** + * A function that creates the offline store instance. + */ + createStore?: CreateOfflineStore; + /** + * Flush the offline store shortly after startup. + * + * Defaults: false + */ + flushAtStartup?: boolean; + /** + * Called before an event is stored. + * + * Return false to drop the envelope rather than store it. + * + * @param envelope The envelope that failed to send. + * @param error The error that occurred. + * @param retryDelay The current retry delay in milliseconds. + * @returns Whether the envelope should be stored. + */ + shouldStore?: (envelope: Envelope, error: Error, retryDelay: number) => boolean | Promise; + /** + * Should an attempt be made to send the envelope to Sentry. + * + * If this function is supplied and returns false, `shouldStore` will be called to determine if the envelope should be stored. + * + * @param envelope The envelope that will be sent. + * @returns Whether we should attempt to send the envelope + */ + shouldSend?: (envelope: Envelope) => boolean | Promise; +} +/** + * Wraps a transport and stores and retries events when they fail to send. + * + * @param createTransport The transport to wrap. + */ +export declare function makeOfflineTransport(createTransport: (options: TO) => Transport): (options: TO & OfflineTransportOptions) => Transport; +//# sourceMappingURL=offline.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/userAgent.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/userAgent.d.ts new file mode 100644 index 0000000..c8ecdc6 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/transports/userAgent.d.ts @@ -0,0 +1,10 @@ +import { ClientOptions } from '../types-hoist/options'; +/** + * Takes the SDK metadata and adds the user-agent header to the transport options. + * This ensures that the SDK sends the user-agent header with SDK name and version to + * all requests made by the transport. + * + * @see https://develop.sentry.dev/sdk/overview/#user-agent + */ +export declare function addUserAgentToTransportHeaders(options: ClientOptions): void; +//# sourceMappingURL=userAgent.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/trpc.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/trpc.d.ts new file mode 100644 index 0000000..b8ea3ca --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/trpc.d.ts @@ -0,0 +1,19 @@ +interface SentryTrpcMiddlewareOptions { + /** Whether to include procedure inputs in reported events. Defaults to `false`. */ + attachRpcInput?: boolean; + forceTransaction?: boolean; +} +export interface SentryTrpcMiddlewareArguments { + path?: unknown; + type?: unknown; + next: () => T; + rawInput?: unknown; + getRawInput?: () => Promise; +} +type SentryTrpcMiddleware = T extends Promise ? T : Promise; +/** + * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures. + */ +export declare function trpcMiddleware(options?: SentryTrpcMiddlewareOptions): (opts: SentryTrpcMiddlewareArguments) => SentryTrpcMiddleware; +export {}; +//# sourceMappingURL=trpc.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/attachment.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/attachment.d.ts new file mode 100644 index 0000000..6f70780 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/attachment.d.ts @@ -0,0 +1,29 @@ +export type AttachmentType = 'event.attachment' | 'event.minidump' | 'event.applecrashreport' | 'unreal.context' | 'unreal.logs' | 'event.view_hierarchy'; +/** + * An attachment to an event. This is used to upload arbitrary data to Sentry. + * + * Please take care to not add sensitive information in attachments. + * + * https://develop.sentry.dev/sdk/envelopes/#attachment + */ +export interface Attachment { + /** + * The attachment data. Can be a string or a binary data (byte array) + */ + data: string | Uint8Array; + /** + * The name of the uploaded file without a path component + */ + filename: string; + /** + * The content type of the attachment payload. Defaults to `application/octet-stream` if not specified. + * + * Any valid [media type](https://www.iana.org/assignments/media-types/media-types.xhtml) is allowed. + */ + contentType?: string; + /** + * The type of the attachment. Defaults to `event.attachment` if not specified. + */ + attachmentType?: AttachmentType; +} +//# sourceMappingURL=attachment.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/breadcrumb.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/breadcrumb.d.ts new file mode 100644 index 0000000..62bd6da --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/breadcrumb.d.ts @@ -0,0 +1,96 @@ +import { SeverityLevel } from './severity'; +/** + * Sentry uses breadcrumbs to create a trail of events that happened prior to an issue. + * These events are very similar to traditional logs but can record more rich structured data. + * + * @link https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/ + */ +export interface Breadcrumb { + /** + * By default, all breadcrumbs are recorded as default, which makes them appear as a Debug entry, but Sentry provides + * other types that influence how the breadcrumbs are rendered. For more information, see the description of + * recognized breadcrumb types. + * + * @summary The type of breadcrumb. + * @link https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/#breadcrumb-types + */ + type?: string; + /** + * Allowed values are, from highest to lowest: + * `fatal`, `error`, `warning`, `info`, and `debug`. + * Levels are used in the UI to emphasize and deemphasize the crumb. The default is `info`. + * + * @summary This defines the severity level of the breadcrumb. + */ + level?: SeverityLevel; + event_id?: string; + /** + * Typically it is a module name or a descriptive string. For instance, `ui.click` could be used to + * indicate that a click happened in the UI or flask could be used to indicate that the event originated in + * the Flask framework. + * @private Internally we render some crumbs' color and icon based on the provided category. + * For more information, see the description of recognized breadcrumb types. + * @summary A dotted string indicating what the crumb is or from where it comes. + * @link https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/#breadcrumb-types + */ + category?: string; + /** + * If a message is provided, it is rendered as text with all whitespace preserved. + * + * @summary Human-readable message for the breadcrumb. + */ + message?: string; + /** + * Contains a dictionary whose contents depend on the breadcrumb type. + * Additional parameters that are unsupported by the type are rendered as a key/value table. + * + * @summary Arbitrary data associated with this breadcrumb. + */ + data?: { + [key: string]: any; + }; + /** + * The format is a numeric (integer or float) value representing + * the number of seconds that have elapsed since the Unixepoch. + * Breadcrumbs are most useful when they include a timestamp, as it creates a timeline + * leading up to an event expection/error. + * + * @note The API supports a string as defined in RFC 3339, but the SDKs only support a numeric value for now. + * + * @summary A timestamp representing when the breadcrumb occurred. + * @link https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/#:~:text=is%20info.-,timestamp,-(recommended) + */ + timestamp?: number; +} +/** JSDoc */ +export interface BreadcrumbHint { + [key: string]: any; +} +export interface FetchBreadcrumbData { + method: string; + url: string; + status_code?: number; + request_body_size?: number; + response_body_size?: number; +} +export interface XhrBreadcrumbData { + method?: string; + url?: string; + status_code?: number; + request_body_size?: number; + response_body_size?: number; +} +export interface FetchBreadcrumbHint { + input: any[]; + data?: unknown; + response?: unknown; + startTimestamp: number; + endTimestamp?: number; +} +export interface XhrBreadcrumbHint { + xhr: unknown; + input: unknown; + startTimestamp: number; + endTimestamp: number; +} +//# sourceMappingURL=breadcrumb.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/browseroptions.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/browseroptions.d.ts new file mode 100644 index 0000000..3d161fb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/browseroptions.d.ts @@ -0,0 +1,46 @@ +/** + * Options added to the Browser SDK's init options that are specific for Replay. + * Note: This type was moved to @sentry/core to avoid a circular dependency between Browser and Replay. + */ +export type BrowserClientReplayOptions = { + /** + * The sample rate for session-long replays. + * 1.0 will record all sessions and 0 will record none. + */ + replaysSessionSampleRate?: number; + /** + * The sample rate for sessions that has had an error occur. + * This is independent of `sessionSampleRate`. + * 1.0 will record all sessions and 0 will record none. + */ + replaysOnErrorSampleRate?: number; +}; +export type BrowserClientProfilingOptions = { + /** + * The sample rate for profiling + * 1.0 will profile all transactions and 0 will profile none. + * + * @deprecated Use `profileSessionSampleRate` and `profileLifecycle` instead. + */ + profilesSampleRate?: number; + /** + * Sets profiling session sample rate for the entire profiling session. + * + * A profiling session corresponds to a user session, meaning it is set once at integration initialization and + * persisted until the next page reload. This rate determines what percentage of user sessions will have profiling enabled. + * @default 0 + */ + profileSessionSampleRate?: number; + /** + * Set the lifecycle mode of the profiler. + * - **manual**: The profiler will be manually started and stopped via `startProfiler`/`stopProfiler`. + * If a session is sampled, is dependent on the `profileSessionSampleRate`. + * - **trace**: The profiler will be automatically started when a root span exists and stopped when there are no + * more sampled root spans. Whether a session is sampled, is dependent on the `profileSessionSampleRate` and the + * existing sampling configuration for tracing (`tracesSampleRate`/`tracesSampler`). + * + * @default 'manual' + */ + profileLifecycle?: 'manual' | 'trace'; +}; +//# sourceMappingURL=browseroptions.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/checkin.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/checkin.d.ts new file mode 100644 index 0000000..41627f1 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/checkin.d.ts @@ -0,0 +1,105 @@ +import { TraceContext } from './context'; +interface CrontabSchedule { + type: 'crontab'; + /** The crontab schedule string, e.g. 0 * * * *. */ + value: string; +} +interface IntervalSchedule { + type: 'interval'; + value: number; + unit: 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute'; +} +type MonitorSchedule = CrontabSchedule | IntervalSchedule; +export interface SerializedCheckIn { + /** Check-In ID (unique and client generated). */ + check_in_id: string; + /** The distinct slug of the monitor. */ + monitor_slug: string; + /** The status of the check-in. */ + status: 'in_progress' | 'ok' | 'error'; + /** The duration of the check-in in seconds. Will only take effect if the status is ok or error. */ + duration?: number; + release?: string; + environment?: string; + monitor_config?: { + schedule: MonitorSchedule; + /** + * The allowed allowed margin of minutes after the expected check-in time that + * the monitor will not be considered missed for. + */ + checkin_margin?: number; + /** + * The allowed allowed duration in minutes that the monitor may be `in_progress` + * for before being considered failed due to timeout. + */ + max_runtime?: number; + /** + * A tz database string representing the timezone which the monitor's execution schedule is in. + * See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + */ + timezone?: string; + /** How many consecutive failed check-ins it takes to create an issue. */ + failure_issue_threshold?: number; + /** How many consecutive OK check-ins it takes to resolve an issue. */ + recovery_threshold?: number; + }; + contexts?: { + trace?: TraceContext; + }; +} +export interface HeartbeatCheckIn { + /** The distinct slug of the monitor. */ + monitorSlug: SerializedCheckIn['monitor_slug']; + /** The status of the check-in. */ + status: 'ok' | 'error'; +} +export interface InProgressCheckIn { + /** The distinct slug of the monitor. */ + monitorSlug: SerializedCheckIn['monitor_slug']; + /** The status of the check-in. */ + status: 'in_progress'; +} +export interface FinishedCheckIn { + /** The distinct slug of the monitor. */ + monitorSlug: SerializedCheckIn['monitor_slug']; + /** The status of the check-in. */ + status: 'ok' | 'error'; + /** Check-In ID (unique and client generated). */ + checkInId: SerializedCheckIn['check_in_id']; + /** The duration of the check-in in seconds. Will only take effect if the status is ok or error. */ + duration?: SerializedCheckIn['duration']; +} +export type CheckIn = HeartbeatCheckIn | InProgressCheckIn | FinishedCheckIn; +type SerializedMonitorConfig = NonNullable; +export interface MonitorConfig { + /** + * The schedule on which the monitor should run. Either a crontab schedule string or an interval. + */ + schedule: MonitorSchedule; + /** + * The allowed allowed margin of minutes after the expected check-in time that + * the monitor will not be considered missed for. + */ + checkinMargin?: SerializedMonitorConfig['checkin_margin']; + /** + * The allowed allowed duration in minutes that the monitor may be `in_progress` + * for before being considered failed due to timeout. + */ + maxRuntime?: SerializedMonitorConfig['max_runtime']; + /** + * A tz database string representing the timezone which the monitor's execution schedule is in. + * See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + */ + timezone?: SerializedMonitorConfig['timezone']; + /** How many consecutive failed check-ins it takes to create an issue. */ + failureIssueThreshold?: SerializedMonitorConfig['failure_issue_threshold']; + /** How many consecutive OK check-ins it takes to resolve an issue. */ + recoveryThreshold?: SerializedMonitorConfig['recovery_threshold']; + /** + * If set to true, creates a new trace for the monitor callback instead of continuing the current trace. + * This allows distinguishing between different cron job executions. + */ + isolateTrace?: boolean; +} +export {}; +//# sourceMappingURL=checkin.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/clientreport.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/clientreport.d.ts new file mode 100644 index 0000000..d72b9bb --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/clientreport.d.ts @@ -0,0 +1,12 @@ +import { DataCategory } from './datacategory'; +export type EventDropReason = 'before_send' | 'event_processor' | 'network_error' | 'queue_overflow' | 'ratelimit_backoff' | 'sample_rate' | 'send_error' | 'internal_sdk_error' | 'buffer_overflow' | 'ignored' | 'invalid'; +export type Outcome = { + reason: EventDropReason; + category: DataCategory; + quantity: number; +}; +export type ClientReport = { + timestamp: number; + discarded_events: Outcome[]; +}; +//# sourceMappingURL=clientreport.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/context.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/context.d.ts new file mode 100644 index 0000000..b2ad5d3 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/context.d.ts @@ -0,0 +1,132 @@ +import { FeatureFlag } from '../utils/featureFlags'; +import { SpanLinkJSON } from './link'; +import { Primitive } from './misc'; +import { SpanOrigin } from './span'; +export type Context = Record; +export interface Contexts extends Record { + app?: AppContext; + device?: DeviceContext; + os?: OsContext; + culture?: CultureContext; + response?: ResponseContext; + trace?: TraceContext; + cloud_resource?: CloudResourceContext; + state?: StateContext; + profile?: ProfileContext; + flags?: FeatureFlagContext; +} +export interface StateContext extends Record { + state: { + type: string; + value: Record; + }; +} +export interface AppContext extends Record { + app_name?: string; + app_start_time?: string; + app_version?: string; + app_identifier?: string; + build_type?: string; + app_memory?: number; + free_memory?: number; +} +export interface DeviceContext extends Record { + name?: string; + family?: string; + model?: string; + model_id?: string; + arch?: string; + battery_level?: number; + orientation?: 'portrait' | 'landscape'; + manufacturer?: string; + brand?: string; + screen_resolution?: string; + screen_height_pixels?: number; + screen_width_pixels?: number; + screen_density?: number; + screen_dpi?: number; + online?: boolean; + charging?: boolean; + low_memory?: boolean; + simulator?: boolean; + memory_size?: number; + free_memory?: number; + usable_memory?: number; + storage_size?: number; + free_storage?: number; + external_storage_size?: number; + external_free_storage?: number; + boot_time?: string; + processor_count?: number; + cpu_description?: string; + processor_frequency?: number; + device_type?: string; + battery_status?: string; + device_unique_identifier?: string; + supports_vibration?: boolean; + supports_accelerometer?: boolean; + supports_gyroscope?: boolean; + supports_audio?: boolean; + supports_location_service?: boolean; +} +export interface OsContext extends Record { + name?: string; + version?: string; + build?: string; + kernel_version?: string; +} +export interface CultureContext extends Record { + calendar?: string; + display_name?: string; + locale?: string; + is_24_hour_format?: boolean; + timezone?: string; +} +export interface ResponseContext extends Record { + type?: string; + cookies?: string[][] | Record; + headers?: Record; + status_code?: number; + body_size?: number; +} +export interface TraceContext extends Record { + data?: { + [key: string]: any; + }; + op?: string; + parent_span_id?: string; + span_id: string; + status?: string; + tags?: { + [key: string]: Primitive; + }; + trace_id: string; + origin?: SpanOrigin; + links?: SpanLinkJSON[]; +} +export interface CloudResourceContext extends Record { + ['cloud.provider']?: string; + ['cloud.account.id']?: string; + ['cloud.region']?: string; + ['cloud.availability_zone']?: string; + ['cloud.platform']?: string; + ['host.id']?: string; + ['host.type']?: string; +} +export interface ProfileContext extends Record { + profile_id: string; +} +export interface MissingInstrumentationContext extends Record { + package: string; + ['javascript.is_cjs']?: boolean; +} +/** + * Used to buffer flag evaluation data on the current scope and attach it to + * error events. `values` should be initialized as empty ([]), and modifying + * directly is not recommended. Use the functions in @sentry/browser + * src/utils/featureFlags instead. + */ +export interface FeatureFlagContext extends Record { + values: FeatureFlag[]; +} +//# sourceMappingURL=context.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/csp.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/csp.d.ts new file mode 100644 index 0000000..3ee732b --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/csp.d.ts @@ -0,0 +1,16 @@ +export interface LegacyCSPReport { + readonly 'csp-report': { + readonly 'document-uri'?: string; + readonly referrer?: string; + readonly 'blocked-uri'?: string; + readonly 'effective-directive'?: string; + readonly 'violated-directive'?: string; + readonly 'original-policy'?: string; + readonly disposition: 'enforce' | 'report' | 'reporting'; + readonly 'status-code'?: number; + readonly status?: string; + readonly 'script-sample'?: string; + readonly sample?: string; + }; +} +//# sourceMappingURL=csp.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/datacategory.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/datacategory.d.ts new file mode 100644 index 0000000..eaf2790 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/datacategory.d.ts @@ -0,0 +1,2 @@ +export type DataCategory = 'default' | 'error' | 'transaction' | 'replay' | 'security' | 'attachment' | 'session' | 'internal' | 'profile' | 'monitor' | 'feedback' | 'span' | 'log_item' | 'log_byte' | 'metric' | 'unknown'; +//# sourceMappingURL=datacategory.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/debugMeta.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/debugMeta.d.ts new file mode 100644 index 0000000..0e83b0d --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/debugMeta.d.ts @@ -0,0 +1,28 @@ +/** + * Holds meta information to customize the behavior of Sentry's server-side event processing. + **/ +export interface DebugMeta { + images?: Array; +} +export type DebugImage = WasmDebugImage | SourceMapDebugImage | MachoDebugImage; +interface WasmDebugImage { + type: 'wasm'; + debug_id: string; + code_id?: string | null; + code_file: string; + debug_file?: string | null; +} +interface SourceMapDebugImage { + type: 'sourcemap'; + code_file: string; + debug_id: string; +} +interface MachoDebugImage { + type: 'macho'; + debug_id: string; + image_addr: string; + image_size?: number; + code_file?: string; +} +export {}; +//# sourceMappingURL=debugMeta.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/dsn.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/dsn.d.ts new file mode 100644 index 0000000..5b664af --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/dsn.d.ts @@ -0,0 +1,22 @@ +/** Supported Sentry transport protocols in a Dsn. */ +export type DsnProtocol = 'http' | 'https'; +/** Primitive components of a Dsn. */ +export interface DsnComponents { + /** Protocol used to connect to Sentry. */ + protocol: DsnProtocol; + /** Public authorization key. */ + publicKey?: string; + /** Private authorization key (deprecated, optional). */ + pass?: string; + /** Hostname of the Sentry instance. */ + host: string; + /** Port of the Sentry instance. */ + port?: string; + /** Sub path/ */ + path?: string; + /** Project ID */ + projectId: string; +} +/** Anything that can be parsed into a Dsn. */ +export type DsnLike = string | DsnComponents; +//# sourceMappingURL=dsn.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/envelope.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/envelope.d.ts new file mode 100644 index 0000000..747d954 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/envelope.d.ts @@ -0,0 +1,163 @@ +import { AttachmentType } from './attachment'; +import { SerializedCheckIn } from './checkin'; +import { ClientReport } from './clientreport'; +import { LegacyCSPReport } from './csp'; +import { DsnComponents } from './dsn'; +import { Event } from './event'; +import { FeedbackEvent, UserFeedback } from './feedback'; +import { SerializedLogContainer } from './log'; +import { SerializedMetricContainer } from './metric'; +import { Profile, ProfileChunk } from './profiling'; +import { ReplayEvent, ReplayRecordingData } from './replay'; +import { SdkInfo } from './sdkinfo'; +import { SerializedSession, SessionAggregates } from './session'; +import { SpanJSON } from './span'; +export type DynamicSamplingContext = { + trace_id: string; + public_key: DsnComponents['publicKey']; + sample_rate?: string; + release?: string; + environment?: string; + transaction?: string; + replay_id?: string; + sampled?: string; + sample_rand?: string; + org_id?: string; +}; +export type EnvelopeItemType = 'client_report' | 'user_report' | 'feedback' | 'session' | 'sessions' | 'transaction' | 'attachment' | 'event' | 'profile' | 'profile_chunk' | 'replay_event' | 'replay_recording' | 'check_in' | 'span' | 'log' | 'metric' | 'trace_metric' | 'raw_security'; +export type BaseEnvelopeHeaders = { + [key: string]: unknown; + dsn?: string; + sdk?: SdkInfo; +}; +export type BaseEnvelopeItemHeaders = { + [key: string]: unknown; + type: EnvelopeItemType; + length?: number; +}; +type BaseEnvelopeItem = [ + ItemHeader & BaseEnvelopeItemHeaders, + P +]; +type BaseEnvelope = [ + EnvelopeHeader & BaseEnvelopeHeaders, + Array> +]; +type EventItemHeaders = { + type: 'event' | 'transaction' | 'profile' | 'feedback'; +}; +type AttachmentItemHeaders = { + type: 'attachment'; + length: number; + filename: string; + content_type?: string; + attachment_type?: AttachmentType; +}; +type UserFeedbackItemHeaders = { + type: 'user_report'; +}; +type FeedbackItemHeaders = { + type: 'feedback'; +}; +type SessionItemHeaders = { + type: 'session'; +}; +type SessionAggregatesItemHeaders = { + type: 'sessions'; +}; +type ClientReportItemHeaders = { + type: 'client_report'; +}; +type ReplayEventItemHeaders = { + type: 'replay_event'; +}; +type ReplayRecordingItemHeaders = { + type: 'replay_recording'; + length: number; +}; +type CheckInItemHeaders = { + type: 'check_in'; +}; +type ProfileItemHeaders = { + type: 'profile'; +}; +type ProfileChunkItemHeaders = { + type: 'profile_chunk'; +}; +type SpanItemHeaders = { + type: 'span'; +}; +type LogContainerItemHeaders = { + type: 'log'; + /** + * The number of log items in the container. This must be the same as the number of log items in the payload. + */ + item_count: number; + /** + * The content type of the log items. This must be `application/vnd.sentry.items.log+json`. + */ + content_type: 'application/vnd.sentry.items.log+json'; +}; +type MetricContainerItemHeaders = { + type: 'trace_metric'; + item_count: number; + content_type: 'application/vnd.sentry.items.trace-metric+json'; +}; +type RawSecurityHeaders = { + type: 'raw_security'; + sentry_release?: string; + sentry_environment?: string; +}; +export type EventItem = BaseEnvelopeItem; +export type AttachmentItem = BaseEnvelopeItem; +export type UserFeedbackItem = BaseEnvelopeItem; +export type SessionItem = BaseEnvelopeItem | BaseEnvelopeItem; +export type ClientReportItem = BaseEnvelopeItem; +export type CheckInItem = BaseEnvelopeItem; +type ReplayEventItem = BaseEnvelopeItem; +type ReplayRecordingItem = BaseEnvelopeItem; +export type FeedbackItem = BaseEnvelopeItem; +export type ProfileItem = BaseEnvelopeItem; +export type ProfileChunkItem = BaseEnvelopeItem; +export type SpanItem = BaseEnvelopeItem>; +export type LogContainerItem = BaseEnvelopeItem; +export type MetricContainerItem = BaseEnvelopeItem; +export type RawSecurityItem = BaseEnvelopeItem; +export type EventEnvelopeHeaders = { + event_id: string; + sent_at: string; + trace?: Partial; +}; +type SessionEnvelopeHeaders = { + sent_at: string; +}; +type CheckInEnvelopeHeaders = { + trace?: DynamicSamplingContext; +}; +type ClientReportEnvelopeHeaders = BaseEnvelopeHeaders; +type ReplayEnvelopeHeaders = BaseEnvelopeHeaders; +type SpanEnvelopeHeaders = BaseEnvelopeHeaders & { + trace?: DynamicSamplingContext; +}; +type LogEnvelopeHeaders = BaseEnvelopeHeaders; +type MetricEnvelopeHeaders = BaseEnvelopeHeaders; +export type EventEnvelope = BaseEnvelope; +export type SessionEnvelope = BaseEnvelope; +export type ClientReportEnvelope = BaseEnvelope; +export type ReplayEnvelope = [ + ReplayEnvelopeHeaders, + [ + ReplayEventItem, + ReplayRecordingItem + ] +]; +export type CheckInEnvelope = BaseEnvelope; +export type SpanEnvelope = BaseEnvelope; +export type ProfileChunkEnvelope = BaseEnvelope; +export type RawSecurityEnvelope = BaseEnvelope; +export type LogEnvelope = BaseEnvelope; +export type MetricEnvelope = BaseEnvelope; +export type Envelope = EventEnvelope | SessionEnvelope | ClientReportEnvelope | ProfileChunkEnvelope | ReplayEnvelope | CheckInEnvelope | SpanEnvelope | RawSecurityEnvelope | LogEnvelope | MetricEnvelope; +export type EnvelopeItem = Envelope[1][number]; +export {}; +//# sourceMappingURL=envelope.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/error.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/error.d.ts new file mode 100644 index 0000000..9ddbb0e --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/error.d.ts @@ -0,0 +1,7 @@ +/** + * Just an Error object with arbitrary attributes attached to it. + */ +export interface ExtendedError extends Error { + [key: string]: any; +} +//# sourceMappingURL=error.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/event.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/event.d.ts new file mode 100644 index 0000000..497871a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/event.d.ts @@ -0,0 +1,87 @@ +import { CaptureContext, SdkProcessingMetadata } from '../scope'; +import { Attachment } from './attachment'; +import { Breadcrumb } from './breadcrumb'; +import { Contexts } from './context'; +import { DebugMeta } from './debugMeta'; +import { Exception } from './exception'; +import { Extras } from './extra'; +import { Measurements } from './measurement'; +import { Mechanism } from './mechanism'; +import { Primitive } from './misc'; +import { RequestEventData } from './request'; +import { SdkInfo } from './sdkinfo'; +import { SeverityLevel } from './severity'; +import { SpanJSON } from './span'; +import { Thread } from './thread'; +import { TransactionSource } from './transaction'; +import { User } from './user'; +/** An event to be sent to Sentry. */ +export interface Event { + event_id?: string; + message?: string; + logentry?: { + message?: string; + params?: unknown[]; + }; + timestamp?: number; + start_timestamp?: number; + level?: SeverityLevel; + platform?: string; + logger?: string; + server_name?: string; + release?: string; + dist?: string; + environment?: string; + sdk?: SdkInfo; + request?: RequestEventData; + transaction?: string; + modules?: { + [key: string]: string; + }; + fingerprint?: string[]; + exception?: { + values?: Exception[]; + }; + breadcrumbs?: Breadcrumb[]; + contexts?: Contexts; + tags?: { + [key: string]: Primitive; + }; + extra?: Extras; + user?: User; + type?: EventType; + spans?: SpanJSON[]; + measurements?: Measurements; + debug_meta?: DebugMeta; + sdkProcessingMetadata?: SdkProcessingMetadata; + transaction_info?: { + source: TransactionSource; + }; + threads?: { + values: Thread[]; + }; +} +/** + * The type of an `Event`. + * Note that `ErrorEvent`s do not have a type (hence its undefined), + * while all other events are required to have one. + */ +export type EventType = 'transaction' | 'profile' | 'replay_event' | 'feedback' | undefined; +export interface ErrorEvent extends Event { + type: undefined; +} +export interface TransactionEvent extends Event { + type: 'transaction'; +} +/** JSDoc */ +export interface EventHint { + event_id?: string; + captureContext?: CaptureContext; + mechanism?: Partial; + syntheticException?: Error | null; + originalException?: unknown; + attachments?: Attachment[]; + data?: any; + integrations?: string[]; +} +//# sourceMappingURL=event.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/eventprocessor.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/eventprocessor.d.ts new file mode 100644 index 0000000..71877e2 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/eventprocessor.d.ts @@ -0,0 +1,12 @@ +import { Event, EventHint } from './event'; +/** + * Event processors are used to change the event before it will be sent. + * We strongly advise to make this function sync. + * Returning a PromiseLike will work just fine, but better be sure that you know what you are doing. + * Event processing will be deferred until your Promise is resolved. + */ +export interface EventProcessor { + (event: Event, hint: EventHint): PromiseLike | Event | null; + id?: string; +} +//# sourceMappingURL=eventprocessor.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/exception.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/exception.d.ts new file mode 100644 index 0000000..912e2c4 --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/exception.d.ts @@ -0,0 +1,12 @@ +import { Mechanism } from './mechanism'; +import { Stacktrace } from './stacktrace'; +/** JSDoc */ +export interface Exception { + type?: string; + value?: string; + mechanism?: Mechanism; + module?: string; + thread_id?: number | string; + stacktrace?: Stacktrace; +} +//# sourceMappingURL=exception.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/extra.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/extra.d.ts new file mode 100644 index 0000000..cc6793a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/extra.d.ts @@ -0,0 +1,3 @@ +export type Extra = unknown; +export type Extras = Record; +//# sourceMappingURL=extra.d.ts.map diff --git a/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/feedback/config.d.ts b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/feedback/config.d.ts new file mode 100644 index 0000000..ff7ba9a --- /dev/null +++ b/sentry-javascript/19013/node_modules/@sentry/core/build/types-ts3.8/types-hoist/feedback/config.d.ts @@ -0,0 +1,190 @@ +import { Primitive } from '../misc'; +import { FeedbackFormData } from './form'; +import { FeedbackTheme } from './theme'; +/** + * General feedback configuration + */ +export interface FeedbackGeneralConfiguration { + /** + * id to use for the main widget container (this will host the shadow DOM) + */ + id: string; + /** + * Show the Sentry branding + */ + showBranding: boolean; + /** + * Auto-inject default Feedback actor button to the DOM when integration is + * added. + */ + autoInject: boolean; + /** + * Should the email field be required? + */ + isEmailRequired: boolean; + /** + * Should the name field be required? + */ + isNameRequired: boolean; + /** + * Should the email input field be visible? Note: email will still be collected if set via `Sentry.setUser()` + */ + showEmail: boolean; + /** + * Should the name input field be visible? Note: name will still be collected if set via `Sentry.setUser()` + */ + showName: boolean; + /** + * Should the screen shots field be included? + * Screen shots cannot be marked as required + */ + enableScreenshot: boolean; + /** + * Fill in email/name input fields with Sentry user context if it exists. + * The value of the email/name keys represent the properties of your user context. + */ + useSentryUser: { + email: string; + name: string; + }; + /** + * Set an object that will be merged sent as tags data with the event. + */ + tags?: { + [key: string]: Primitive; + }; + /** + * Set a nonce to be passed to the injected